diff --git a/.buildkite/ftr_oblt_stateful_configs.yml b/.buildkite/ftr_oblt_stateful_configs.yml index eed4654725038..3211c35f29e7a 100644 --- a/.buildkite/ftr_oblt_stateful_configs.yml +++ b/.buildkite/ftr_oblt_stateful_configs.yml @@ -12,15 +12,15 @@ disabled: - x-pack/plugins/observability_solution/profiling/e2e/ftr_config.ts #FTR configs - - x-pack/plugins/observability_solution/uptime/e2e/config.ts + - x-pack/solutions/observability/plugins/uptime/e2e/config.ts # Elastic Synthetics configs - - x-pack/plugins/observability_solution/uptime/e2e/uptime/synthetics_run.ts - - x-pack/plugins/observability_solution/synthetics/e2e/config.ts - - x-pack/plugins/observability_solution/synthetics/e2e/synthetics/synthetics_run.ts - - x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_run.ts - - x-pack/plugins/observability_solution/ux/e2e/synthetics_run.ts - - x-pack/plugins/observability_solution/slo/e2e/synthetics_run.ts + - x-pack/solutions/observability/plugins/uptime/e2e/uptime/synthetics_run.ts + - x-pack/solutions/observability/plugins/synthetics/e2e/config.ts + - x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/synthetics_run.ts + - x-pack/solutions/observability/plugins/exploratory_view/e2e/synthetics_run.ts + - x-pack/solutions/observability/plugins/ux/e2e/synthetics_run.ts + - x-pack/solutions/observability/plugins/slo/e2e/synthetics_run.ts defaultQueue: 'n2-4-spot' enabled: diff --git a/.buildkite/ftr_platform_stateful_configs.yml b/.buildkite/ftr_platform_stateful_configs.yml index af04aef1e0911..bcf82ed057c45 100644 --- a/.buildkite/ftr_platform_stateful_configs.yml +++ b/.buildkite/ftr_platform_stateful_configs.yml @@ -131,6 +131,7 @@ enabled: - x-pack/test/alerting_api_integration/security_and_spaces/group2/config.ts - x-pack/test/alerting_api_integration/security_and_spaces/group3/config.ts - x-pack/test/alerting_api_integration/security_and_spaces/group4/config.ts + - x-pack/test/alerting_api_integration/security_and_spaces/group5/config.ts - x-pack/test/alerting_api_integration/security_and_spaces/group3/config_with_schedule_circuit_breaker.ts - x-pack/test/alerting_api_integration/security_and_spaces/group2/config_non_dedicated_task_runner.ts - x-pack/test/alerting_api_integration/security_and_spaces/group4/config_non_dedicated_task_runner.ts @@ -264,7 +265,6 @@ enabled: - x-pack/test/functional/apps/security/config.ts - x-pack/test/functional/apps/snapshot_restore/config.ts - x-pack/test/functional/apps/spaces/config.ts - - x-pack/test/functional/apps/spaces/solution_view_flag_enabled/config.ts - x-pack/test/functional/apps/status_page/config.ts - x-pack/test/functional/apps/transform/creation/index_pattern/config.ts - x-pack/test/functional/apps/transform/creation/runtime_mappings_saved_search/config.ts diff --git a/.buildkite/ftr_security_serverless_configs.yml b/.buildkite/ftr_security_serverless_configs.yml index 5ea5647d1d908..34280160fb7aa 100644 --- a/.buildkite/ftr_security_serverless_configs.yml +++ b/.buildkite/ftr_security_serverless_configs.yml @@ -89,6 +89,7 @@ enabled: - x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_read/trial_license_complete_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_read/basic_license_essentials_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/configs/serverless.config.ts + - x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/user_roles/trial_license_complete_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/genai/nlp_cleanup_task/trial_license_complete_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/genai/nlp_cleanup_task/basic_license_essentials_tier/configs/serverless.config.ts diff --git a/.buildkite/ftr_security_stateful_configs.yml b/.buildkite/ftr_security_stateful_configs.yml index bd8bc9e922f0d..a67bd2b299be8 100644 --- a/.buildkite/ftr_security_stateful_configs.yml +++ b/.buildkite/ftr_security_stateful_configs.yml @@ -70,6 +70,7 @@ enabled: - x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_read/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_read/basic_license_essentials_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/configs/ess.config.ts + - x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/user_roles/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/ess.config.ts @@ -101,4 +102,5 @@ enabled: - x-pack/test/cloud_security_posture_functional/config.ts - x-pack/test/cloud_security_posture_functional/config.agentless.ts - x-pack/test/cloud_security_posture_functional/data_views/config.ts - - x-pack/test/automatic_import_api_integration/security/config_basic.ts + - x-pack/test/automatic_import_api_integration/apis/config_basic.ts + - x-pack/test/automatic_import_api_integration/apis/config_graphs.ts diff --git a/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing-9-dot-0.yml b/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing-9-dot-0.yml new file mode 100644 index 0000000000000..f4d01a939b40d --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing-9-dot-0.yml @@ -0,0 +1,43 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-es-forward-compatibility-testing-9-dot-0 + description: Forward compatibility testing between Kibana 8.18 and ES 9+ + links: + - url: 'https://buildkite.com/elastic/kibana-es-forward-compatibility-testing-9-dot-0' + title: Pipeline link +spec: + type: buildkite-pipeline + system: buildkite + owner: 'group:kibana-operations' + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: kibana / ES Forward Compatibility Testing 9.0 + description: Forward compatibility testing between Kibana 8.18 and ES 9+ + spec: + env: + SLACK_NOTIFICATIONS_CHANNEL: '#kibana-operations-alerts' + ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' + REPORT_FAILED_TESTS_TO_GITHUB: 'true' + allow_rebuilds: false + branch_configuration: main + default_branch: main + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/es_forward_9_dot_0.yml # Note: this file exists in 8.x only and should be moved into 8.18 once the branch is cut + provider_settings: + prefix_pull_request_fork_branch_names: false + trigger_mode: none + teams: + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ + tags: + - kibana diff --git a/.buildkite/pipeline-resource-definitions/locations.yml b/.buildkite/pipeline-resource-definitions/locations.yml index 11c0195902eec..dc4e044ce63cb 100644 --- a/.buildkite/pipeline-resource-definitions/locations.yml +++ b/.buildkite/pipeline-resource-definitions/locations.yml @@ -18,6 +18,7 @@ spec: - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-console-definitions-sync.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-coverage-daily.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-deploy-project.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing-9-dot-0.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-es-serverless-snapshots.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-es-snapshots.yml @@ -25,6 +26,7 @@ spec: - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-fips-daily.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-flaky.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-fleet-packages-daily.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-gen-ai-daily.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-migration-staging.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-on-merge-unsupported-ftrs.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-on-merge.yml @@ -50,4 +52,3 @@ spec: - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-investigations.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-rule-management.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml - - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-gen-ai-daily.yml diff --git a/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml b/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml index 8dd486c3176ce..22567675a5139 100644 --- a/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml +++ b/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml @@ -51,6 +51,11 @@ spec: message: Trigger ES forward compatibility tests env: TRIGGER_PIPELINE_SET: es-forward + Trigger ES forward compatibility tests 9.0: + cronline: 0 5 * * * + message: Trigger ES forward compatibility tests 9.0 + env: + TRIGGER_PIPELINE_SET: es-forward-9-dot-0 Trigger artifact staging builds: cronline: 0 7 * * * America/New_York message: Trigger artifact staging builds diff --git a/.buildkite/pipelines/on_merge_unsupported_ftrs.yml b/.buildkite/pipelines/on_merge_unsupported_ftrs.yml index a7800fcc92dce..8903254ff4e8f 100644 --- a/.buildkite/pipelines/on_merge_unsupported_ftrs.yml +++ b/.buildkite/pipelines/on_merge_unsupported_ftrs.yml @@ -73,7 +73,7 @@ steps: depends_on: build timeout_in_minutes: 120 artifact_paths: - - 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/synthetics/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml b/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml index 05fc218080cd4..cf0cbd7e2012f 100644 --- a/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml +++ b/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml @@ -14,7 +14,7 @@ steps: - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - - 'x-pack/plugins/observability_solution/exploratory_view/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/exploratory_view/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/scout_ui_tests.yml b/.buildkite/pipelines/pull_request/scout_ui_tests.yml new file mode 100644 index 0000000000000..37ea1567c4f42 --- /dev/null +++ b/.buildkite/pipelines/pull_request/scout_ui_tests.yml @@ -0,0 +1,18 @@ +steps: + - command: .buildkite/scripts/steps/functional/scout_ui_tests.sh + label: 'Scout UI Tests' + agents: + machineType: n2-standard-4 + preemptible: true + depends_on: + - build + - quick_checks + - checks + - linting + - linting_with_types + - check_types + timeout_in_minutes: 30 + retry: + automatic: + - exit_status: '-1' + limit: 2 diff --git a/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml b/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml index 2cf1126cf1f5d..8e6ad5734d703 100644 --- a/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml +++ b/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml @@ -14,7 +14,7 @@ steps: - check_oas_snapshot timeout_in_minutes: 30 artifact_paths: - - 'x-pack/plugins/observability_solution/slo/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/slo/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/synthetics_plugin.yml b/.buildkite/pipelines/pull_request/synthetics_plugin.yml index b4079b9fac307..5018dad0e58f7 100644 --- a/.buildkite/pipelines/pull_request/synthetics_plugin.yml +++ b/.buildkite/pipelines/pull_request/synthetics_plugin.yml @@ -14,7 +14,7 @@ steps: - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - - 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/synthetics/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/uptime_plugin.yml b/.buildkite/pipelines/pull_request/uptime_plugin.yml index 4c1e05d7476fd..f38a59969b45a 100644 --- a/.buildkite/pipelines/pull_request/uptime_plugin.yml +++ b/.buildkite/pipelines/pull_request/uptime_plugin.yml @@ -14,7 +14,7 @@ steps: - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - - 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/synthetics/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml b/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml index 4bade14464f35..b6f51351c62b8 100644 --- a/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml +++ b/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml @@ -14,7 +14,7 @@ steps: - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - - 'x-pack/plugins/observability_solution/ux/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/ux/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/scripts/packer_cache.sh b/.buildkite/scripts/packer_cache.sh index 57118b242d3e7..758dcfa502e71 100755 --- a/.buildkite/scripts/packer_cache.sh +++ b/.buildkite/scripts/packer_cache.sh @@ -15,5 +15,5 @@ for version in $(cat versions.json | jq -r '.versions[].version'); do done for version in $(cat versions.json | jq -r '.versions[].version'); do - node x-pack/plugins/security_solution/scripts/endpoint/agent_downloader --version "$version" + node x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader --version "$version" done diff --git a/.buildkite/scripts/pipelines/pull_request/pipeline.ts b/.buildkite/scripts/pipelines/pull_request/pipeline.ts index 3c404083174b1..aba3da0cb8902 100644 --- a/.buildkite/scripts/pipelines/pull_request/pipeline.ts +++ b/.buildkite/scripts/pipelines/pull_request/pipeline.ts @@ -89,7 +89,7 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( (await doAnyChangesMatch([ - /^x-pack\/plugins\/observability_solution\/observability_onboarding/, + /^x-pack\/solutions\/observability\/plugins\/observability_onboarding/, /^x-pack\/plugins\/fleet/, ])) || GITHUB_PR_LABELS.includes('ci:all-cypress-suites') @@ -114,7 +114,7 @@ const getPipeline = (filename: string, removeSteps = true) => { } if ( - (await doAnyChangesMatch([/^x-pack\/plugins\/observability_solution\/exploratory_view/])) || + (await doAnyChangesMatch([/^x-pack\/solutions\/observability\/plugins\/exploratory_view/])) || GITHUB_PR_LABELS.includes('ci:synthetics-runner-suites') ) { pipeline.push(getPipeline('.buildkite/pipelines/pull_request/exploratory_view_plugin.yml')); @@ -122,8 +122,8 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( (await doAnyChangesMatch([ - /^x-pack\/plugins\/observability_solution\/synthetics/, - /^x-pack\/plugins\/observability_solution\/exploratory_view/, + /^x-pack\/solutions\/observability\/plugins\/synthetics/, + /^x-pack\/solutions\/observability\/plugins\/exploratory_view/, ])) || GITHUB_PR_LABELS.includes('ci:synthetics-runner-suites') ) { @@ -133,8 +133,8 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( (await doAnyChangesMatch([ - /^x-pack\/plugins\/observability_solution\/ux/, - /^x-pack\/plugins\/observability_solution\/exploratory_view/, + /^x-pack\/solutions\/observability\/plugins\/ux/, + /^x-pack\/solutions\/observability\/plugins\/exploratory_view/, ])) || GITHUB_PR_LABELS.includes('ci:synthetics-runner-suites') ) { @@ -224,7 +224,7 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( (await doAnyChangesMatch([ /^packages\/kbn-securitysolution-.*/, - /^x-pack\/plugins\/security_solution/, + /^x-pack\/solutions\/security\/plugins\/security_solution/, /^x-pack\/test\/defend_workflows_cypress/, /^x-pack\/test\/security_solution_cypress/, /^fleet_packages\.json/, @@ -244,20 +244,20 @@ const getPipeline = (filename: string, removeSteps = true) => { /^x-pack\/plugins\/data_views\/common/, /^x-pack\/plugins\/lists/, /^x-pack\/plugins\/rule_registry\/common/, - /^x-pack\/plugins\/security_solution/, - /^x-pack\/plugins\/security_solution_ess/, - /^x-pack\/plugins\/security_solution_serverless/, + /^x-pack\/solutions\/security\/plugins\/security_solution/, + /^x-pack\/solutions\/security\/plugins\/security_solution_ess/, + /^x-pack\/solutions\/security\/plugins\/security_solution_serverless/, /^x-pack\/plugins\/task_manager/, - /^x-pack\/plugins\/timelines/, + /^x-pack\/solutions\/security\/plugins\/timelines/, /^x-pack\/plugins\/triggers_actions_ui\/public\/application\/sections\/action_connector_form/, /^x-pack\/plugins\/triggers_actions_ui\/public\/application\/context\/actions_connectors_context\.tsx/, /^x-pack\/plugins\/triggers_actions_ui\/server\/connector_types\/openai/, /^x-pack\/plugins\/triggers_actions_ui\/server\/connector_types\/bedrock/, /^x-pack\/plugins\/usage_collection\/public/, - /^x-pack\/plugins\/elastic_assistant/, - /^x-pack\/packages\/security-solution/, - /^x-pack\/packages\/kbn-elastic-assistant/, - /^x-pack\/packages\/kbn-elastic-assistant-common/, + /^x-pack\/solutions\/security\/plugins\/elastic_assistant/, + /^x-pack\/solutions\/security\/packages/, + /^x-pack\/platform\/packages\/shared\/kbn-elastic-assistant/, + /^x-pack\/platform\/packages\/shared\/kbn-elastic-assistant-common/, /^x-pack\/test\/functional\/es_archives\/security_solution/, /^x-pack\/test\/security_solution_cypress/, ])) || @@ -290,7 +290,6 @@ const getPipeline = (filename: string, removeSteps = true) => { /^packages\/kbn-es-query/, /^packages\/kbn-i18n/, /^packages\/kbn-i18n-react/, - /^packages\/kbn-expandable-flyout/, /^packages\/kbn-grouping/, /^packages\/kbn-resizable-layout/, /^packages\/kbn-rison/, @@ -298,7 +297,7 @@ const getPipeline = (filename: string, removeSteps = true) => { /^packages\/kbn-safer-lodash-set/, /^packages\/kbn-search-types/, /^packages\/kbn-securitysolution-.*/, - /^packages\/kbn-securitysolution-ecs/, + /^src\/platform\/packages\/shared\/kbn-securitysolution-ecs/, /^packages\/kbn-securitysolution-io-ts-alerting-types/, /^packages\/kbn-securitysolution-io-ts-list-types/, /^packages\/kbn-securitysolution-list-hooks/, @@ -321,21 +320,21 @@ const getPipeline = (filename: string, removeSteps = true) => { /^src\/plugins\/ui_actions/, /^src\/plugins\/unified_histogram/, /^src\/plugins\/unified_search/, - /^x-pack\/packages\/kbn-elastic-assistant/, - /^x-pack\/packages\/kbn-elastic-assistant-common/, - /^x-pack\/packages\/security-solution/, + /^x-pack\/platform\/packages\/shared\/kbn-elastic-assistant/, + /^x-pack\/platform\/packages\/shared\/kbn-elastic-assistant-common/, + /^x-pack\/solutions\/security\/packages/, /^x-pack\/plugins\/alerting/, /^x-pack\/plugins\/cases/, /^x-pack\/plugins\/data_views\/common/, - /^x-pack\/plugins\/elastic_assistant/, + /^x-pack\/solutions\/security\/plugins\/elastic_assistant/, /^x-pack\/plugins\/lists/, /^x-pack\/plugins\/rule_registry\/common/, - /^x-pack\/plugins\/security_solution/, - /^x-pack\/plugins\/security_solution_ess/, - /^x-pack\/plugins\/security_solution_serverless/, + /^x-pack\/solutions\/security\/plugins\/security_solution/, + /^x-pack\/solutions\/security\/plugins\/security_solution_ess/, + /^x-pack\/solutions\/security\/plugins\/security_solution_serverless/, /^x-pack\/plugins\/task_manager/, - /^x-pack\/plugins\/threat_intelligence/, - /^x-pack\/plugins\/timelines/, + /^x-pack\/solutions\/security\/plugins\/threat_intelligence/, + /^x-pack\/solutions\/security\/plugins\/timelines/, /^x-pack\/plugins\/triggers_actions_ui/, /^x-pack\/plugins\/usage_collection\/public/, /^x-pack\/test\/functional\/es_archives\/security_solution/, @@ -350,9 +349,9 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( ((await doAnyChangesMatch([ - /^x-pack\/plugins\/osquery/, + /^x-pack\/platform\/plugins\/shared\/osquery/, /^x-pack\/test\/osquery_cypress/, - /^x-pack\/plugins\/security_solution/, + /^x-pack\/solutions\/security\/plugins\/security_solution/, ])) || GITHUB_PR_LABELS.includes('ci:all-cypress-suites')) && !GITHUB_PR_LABELS.includes('ci:skip-cypress-osquery') @@ -365,8 +364,8 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( (await doAnyChangesMatch([ /^x-pack\/packages\/kbn-cloud-security-posture/, - /^x-pack\/plugins\/cloud_security_posture/, - /^x-pack\/plugins\/security_solution/, + /^x-pack\/solutions\/security\/plugins\/cloud_security_posture/, + /^x-pack\/solutions\/security\/plugins\/security_solution/, /^x-pack\/test\/security_solution_cypress/, ])) || GITHUB_PR_LABELS.includes('ci:all-cypress-suites') @@ -378,6 +377,16 @@ const getPipeline = (filename: string, removeSteps = true) => { ); } + if ( + (await doAnyChangesMatch([ + /^x-pack\/plugins\/discover_enhanced\/ui_tests/, + /^packages\/kbn-scout/, + ])) || + GITHUB_PR_LABELS.includes('ci:scout-ui-tests') + ) { + pipeline.push(getPipeline('.buildkite/pipelines/pull_request/scout_ui_tests.yml')); + } + pipeline.push(getPipeline('.buildkite/pipelines/pull_request/post_build.yml')); // remove duplicated steps diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows.sh index e076e8661d9eb..3ea061b4a9555 100755 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows.sh +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows.sh @@ -18,7 +18,7 @@ buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" "true source .buildkite/scripts/pipelines/security_solution_quality_gate/prepare_vault_entries.sh -cd x-pack/plugins/security_solution +cd x-pack/solutions/security/plugins/security_solution set +e export BK_ANALYTICS_API_KEY=$(vault_get security-solution-quality-gate serverless-cypress-defend-workflows) diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh index 5dd9ef114b48d..c68f04ce20ab3 100755 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh @@ -18,7 +18,7 @@ buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" "true source .buildkite/scripts/pipelines/security_solution_quality_gate/prepare_vault_entries.sh -cd x-pack/plugins/osquery +cd x-pack/platform/plugins/shared/osquery set +e export BK_ANALYTICS_API_KEY=$(vault_get security-solution-quality-gate serverless-cypress-defend-workflows) diff --git a/.buildkite/scripts/pipelines/trigger_version_dependent_jobs/pipeline.ts b/.buildkite/scripts/pipelines/trigger_version_dependent_jobs/pipeline.ts index eace1bcdd55c8..34ad833e41954 100755 --- a/.buildkite/scripts/pipelines/trigger_version_dependent_jobs/pipeline.ts +++ b/.buildkite/scripts/pipelines/trigger_version_dependent_jobs/pipeline.ts @@ -12,6 +12,7 @@ import { getVersionsFile, BuildkiteTriggerStep } from '#pipeline-utils'; const pipelineSets = { 'es-forward': 'kibana-es-forward-compatibility-testing', + 'es-forward-9-dot-0': 'kibana-es-forward-compatibility-testing-9-dot-0', 'artifacts-snapshot': 'kibana-artifacts-snapshot', 'artifacts-staging': 'kibana-artifacts-staging', 'artifacts-trigger': 'kibana-artifacts-trigger', @@ -40,6 +41,10 @@ async function main() { pipelineSteps.push(...getESForwardPipelineTriggers()); break; } + case 'es-forward-9-dot-0': { + pipelineSteps.push(...getESForward9Dot0PipelineTriggers()); + break; + } case 'artifacts-snapshot': { pipelineSteps.push(...getArtifactSnapshotPipelineTriggers()); break; @@ -90,6 +95,40 @@ export function getESForwardPipelineTriggers(): BuildkiteTriggerStep[] { }); } +/** + * This pipeline is testing the forward compatibility of Kibana with different versions of Elasticsearch for 9.0. + * Should be triggered for combinations of (Kibana@8.18 + ES@9.x {current open branches on the same major}) + */ +export function getESForward9Dot0PipelineTriggers(): BuildkiteTriggerStep[] { + const versions = getVersionsFile(); + const KIBANA_8_X = versions.versions.find((v) => v.branch === '8.x'); + if (!KIBANA_8_X) { + throw new Error( + 'Update ES forward compatibility 9.0 pipeline to remove 8.x and add version 8.18' + ); + } + const targetESVersions = versions.versions.filter( + (v) => v.branch.startsWith('9.') || (v.branch.includes('main') && v.version.startsWith('9.0.0')) + ); + + return targetESVersions.map(({ version }) => { + return { + trigger: pipelineSets['es-forward-9-dot-0'], + async: true, + label: `Triggering Kibana ${KIBANA_8_X.version} + ES ${version} forward compatibility`, + build: { + message: process.env.MESSAGE || `ES forward-compatibility test for ES ${version}`, + branch: KIBANA_8_X.branch, + commit: 'HEAD', + env: { + ES_SNAPSHOT_MANIFEST: `https://storage.googleapis.com/kibana-ci-es-snapshots-daily/${version}/manifest-latest-verified.json`, + DRY_RUN: process.env.DRY_RUN, + }, + }, + } as BuildkiteTriggerStep; + }); +} + /** * This pipeline creates Kibana artifact snapshots for all open branches. * Should be triggered for all open branches in the versions.json diff --git a/.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh b/.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh index 475c545a283c0..a1c595159d5cc 100755 --- a/.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh +++ b/.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh @@ -6,5 +6,5 @@ source .buildkite/scripts/common/util.sh echo --- Elastic Assistant OpenAPI Code Generation -(cd x-pack/packages/kbn-elastic-assistant-common && yarn openapi:generate) +(cd x-pack/platform/packages/shared/kbn-elastic-assistant-common && yarn openapi:generate) check_for_changed_files "yarn openapi:generate" true diff --git a/.buildkite/scripts/steps/code_generation/osquery_codegen.sh b/.buildkite/scripts/steps/code_generation/osquery_codegen.sh index 7c04f4aecd442..8efbb96d0d623 100755 --- a/.buildkite/scripts/steps/code_generation/osquery_codegen.sh +++ b/.buildkite/scripts/steps/code_generation/osquery_codegen.sh @@ -6,5 +6,5 @@ source .buildkite/scripts/common/util.sh echo --- Osquery OpenAPI Code Generation -(cd x-pack/plugins/osquery && yarn openapi:generate) +(cd x-pack/platform/plugins/shared/osquery && yarn openapi:generate) check_for_changed_files "yarn openapi:generate" true diff --git a/.buildkite/scripts/steps/code_generation/security_solution_codegen.sh b/.buildkite/scripts/steps/code_generation/security_solution_codegen.sh index 59651402c9d83..db7131d127856 100755 --- a/.buildkite/scripts/steps/code_generation/security_solution_codegen.sh +++ b/.buildkite/scripts/steps/code_generation/security_solution_codegen.sh @@ -19,6 +19,6 @@ echo -e "\n[Security Solution OpenAPI Code Generation] Endpoint Exceptions Commo (cd packages/kbn-securitysolution-endpoint-exceptions-common && yarn openapi:generate) echo -e "\n[Security Solution OpenAPI Code Generation] Security Solution Plugin\n" -(cd x-pack/plugins/security_solution && yarn openapi:generate) +(cd x-pack/solutions/security/plugins/security_solution && yarn openapi:generate) check_for_changed_files "yarn openapi:generate" true \ No newline at end of file diff --git a/.buildkite/scripts/steps/console_definitions_sync.sh b/.buildkite/scripts/steps/console_definitions_sync.sh index 7dc565e0b9642..71d70138f8a1b 100755 --- a/.buildkite/scripts/steps/console_definitions_sync.sh +++ b/.buildkite/scripts/steps/console_definitions_sync.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -GIT_SCOPE="src/plugins/console/server/lib/spec_definitions" +GIT_SCOPE="src/platform/plugins/shared/console/server/lib/spec_definitions" report_main_step () { echo "--- $1" diff --git a/.buildkite/scripts/steps/functional/defend_workflows.sh b/.buildkite/scripts/steps/functional/defend_workflows.sh index 80a58683af6fb..11ea4f5b82c05 100755 --- a/.buildkite/scripts/steps/functional/defend_workflows.sh +++ b/.buildkite/scripts/steps/functional/defend_workflows.sh @@ -9,7 +9,7 @@ export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} echo "--- Defend Workflows Cypress tests" -cd x-pack/plugins/security_solution +cd x-pack/solutions/security/plugins/security_solution set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci defend-workflows-bk-api-key) diff --git a/.buildkite/scripts/steps/functional/defend_workflows_burn.sh b/.buildkite/scripts/steps/functional/defend_workflows_burn.sh index 44d87ba4a6635..bbe55b02ca4cb 100644 --- a/.buildkite/scripts/steps/functional/defend_workflows_burn.sh +++ b/.buildkite/scripts/steps/functional/defend_workflows_burn.sh @@ -11,4 +11,4 @@ buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" 'fals echo "--- Defend Workflows Cypress tests, burning changed specs (Chrome)" -yarn --cwd x-pack/plugins/security_solution cypress:changed-specs-only +yarn --cwd x-pack/solutions/security/plugins/security_solution cypress:changed-specs-only diff --git a/.buildkite/scripts/steps/functional/defend_workflows_serverless.sh b/.buildkite/scripts/steps/functional/defend_workflows_serverless.sh index fb1ef50bdfa1d..2f3523575e580 100755 --- a/.buildkite/scripts/steps/functional/defend_workflows_serverless.sh +++ b/.buildkite/scripts/steps/functional/defend_workflows_serverless.sh @@ -9,7 +9,7 @@ export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} echo "--- Defend Workflows Cypress tests on Serverless" -cd x-pack/plugins/security_solution +cd x-pack/solutions/security/plugins/security_solution set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci defend-workflows-bk-api-key) diff --git a/.buildkite/scripts/steps/functional/defend_workflows_serverless_burn.sh b/.buildkite/scripts/steps/functional/defend_workflows_serverless_burn.sh index a092ffbd4186b..bb6770c109300 100644 --- a/.buildkite/scripts/steps/functional/defend_workflows_serverless_burn.sh +++ b/.buildkite/scripts/steps/functional/defend_workflows_serverless_burn.sh @@ -11,4 +11,4 @@ buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" 'fals echo "--- Defend Workflows Cypress tests, burning changed specs (Chrome)" -yarn --cwd x-pack/plugins/security_solution cypress:dw:serverless:changed-specs-only +yarn --cwd x-pack/solutions/security/plugins/security_solution cypress:dw:serverless:changed-specs-only diff --git a/.buildkite/scripts/steps/functional/exploratory_view_plugin.sh b/.buildkite/scripts/steps/functional/exploratory_view_plugin.sh index adee8986bc746..e685f84ed2304 100755 --- a/.buildkite/scripts/steps/functional/exploratory_view_plugin.sh +++ b/.buildkite/scripts/steps/functional/exploratory_view_plugin.sh @@ -14,4 +14,4 @@ echo "--- Exploratory View plugin @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/exploratory_view/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} +node solutions/observability/plugins/exploratory_view/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} diff --git a/.buildkite/scripts/steps/functional/osquery_cypress.sh b/.buildkite/scripts/steps/functional/osquery_cypress.sh index 0ae47edd8c8e7..dd49619148189 100755 --- a/.buildkite/scripts/steps/functional/osquery_cypress.sh +++ b/.buildkite/scripts/steps/functional/osquery_cypress.sh @@ -10,7 +10,7 @@ export JOB=kibana-osquery-cypress echo "--- Osquery Cypress tests" -cd x-pack/plugins/osquery +cd x-pack/platform/plugins/shared/osquery set +e yarn cypress:run; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh b/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh index bebd391d95254..ea6cf46b3d01d 100755 --- a/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh +++ b/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh @@ -12,4 +12,4 @@ buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" 'fals echo "--- Osquery Cypress tests, burning changed specs (Chrome)" -yarn --cwd x-pack/plugins/osquery cypress:changed-specs-only +yarn --cwd x-pack/platform/plugins/shared/osquery cypress:changed-specs-only diff --git a/.buildkite/scripts/steps/functional/scout_ui_tests.sh b/.buildkite/scripts/steps/functional/scout_ui_tests.sh new file mode 100755 index 0000000000000..bee4ec4020882 --- /dev/null +++ b/.buildkite/scripts/steps/functional/scout_ui_tests.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/scripts/steps/functional/common.sh + +export JOB=kibana-scout-ui-tests + +TEST_CONFIG="x-pack/plugins/discover_enhanced/ui_tests/playwright.config.ts" +KIBANA_DIR="$KIBANA_BUILD_LOCATION" + +declare -A TESTS=( + ["Stateful"]="--stateful" + ["Serverless Elasticsearch"]="--serverless=es" + ["Serverless Observability"]="--serverless=oblt" + ["Serverless Security"]="--serverless=security" +) + +ORDER=("Stateful" "Serverless Elasticsearch" "Serverless Observability" "Serverless Security") + +EXIT_CODE=0 + +for TEST_NAME in "${ORDER[@]}"; do + RUN_MODE="${TESTS[$TEST_NAME]}" + echo "--- $TEST_NAME: 'discover_enhanced' plugin UI Tests" + if ! node scripts/scout run-tests "$RUN_MODE" --config "$TEST_CONFIG" --kibana-install-dir "$KIBANA_DIR"; then + echo "$TEST_NAME: failed" + EXIT_CODE=1 + else + echo "$TEST_NAME: passed" + fi +done + +exit $EXIT_CODE diff --git a/.buildkite/scripts/steps/functional/security_serverless_osquery.sh b/.buildkite/scripts/steps/functional/security_serverless_osquery.sh index 9844222e7f869..3621f26850e7f 100755 --- a/.buildkite/scripts/steps/functional/security_serverless_osquery.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_osquery.sh @@ -10,7 +10,7 @@ export JOB=kibana-osquery-cypress-serverless echo "--- Security Osquery Serverless Cypress" -cd x-pack/plugins/osquery +cd x-pack/platform/plugins/shared/osquery set +e yarn cypress:serverless:run; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/slo_plugin_e2e.sh b/.buildkite/scripts/steps/functional/slo_plugin_e2e.sh index 0492e41ae7041..b9cdebe6e89ab 100755 --- a/.buildkite/scripts/steps/functional/slo_plugin_e2e.sh +++ b/.buildkite/scripts/steps/functional/slo_plugin_e2e.sh @@ -14,4 +14,4 @@ echo "--- SLO @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/slo/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} +node solutions/observability/plugins/slo/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} diff --git a/.buildkite/scripts/steps/functional/synthetics.sh b/.buildkite/scripts/steps/functional/synthetics.sh index aa388096fc404..261b1d5bf28bb 100644 --- a/.buildkite/scripts/steps/functional/synthetics.sh +++ b/.buildkite/scripts/steps/functional/synthetics.sh @@ -14,4 +14,4 @@ echo "--- synthetics @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/synthetics/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" --grep "MonitorManagement-monitor*" +node solutions/observability/plugins/synthetics/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" --grep "MonitorManagement-monitor*" diff --git a/.buildkite/scripts/steps/functional/synthetics_plugin.sh b/.buildkite/scripts/steps/functional/synthetics_plugin.sh index 3e31b92011ad2..34be251cbfc26 100755 --- a/.buildkite/scripts/steps/functional/synthetics_plugin.sh +++ b/.buildkite/scripts/steps/functional/synthetics_plugin.sh @@ -14,4 +14,4 @@ echo "--- Synthetics plugin @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/synthetics/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} +node solutions/observability/plugins/synthetics/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} diff --git a/.buildkite/scripts/steps/functional/uptime_plugin.sh b/.buildkite/scripts/steps/functional/uptime_plugin.sh index b4cdd0fb5738a..50cf33149b854 100755 --- a/.buildkite/scripts/steps/functional/uptime_plugin.sh +++ b/.buildkite/scripts/steps/functional/uptime_plugin.sh @@ -14,4 +14,4 @@ echo "--- Uptime plugin @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/uptime/scripts/uptime_e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} +node solutions/observability/plugins/uptime/scripts/uptime_e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} diff --git a/.buildkite/scripts/steps/functional/ux_synthetics_e2e.sh b/.buildkite/scripts/steps/functional/ux_synthetics_e2e.sh index bcc5b71149607..2c165d7274e3a 100755 --- a/.buildkite/scripts/steps/functional/ux_synthetics_e2e.sh +++ b/.buildkite/scripts/steps/functional/ux_synthetics_e2e.sh @@ -14,4 +14,4 @@ echo "--- User Experience @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/ux/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} +node solutions/observability/plugins/ux/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} diff --git a/.buildkite/scripts/steps/openapi_bundling/security_solution_openapi_bundling.sh b/.buildkite/scripts/steps/openapi_bundling/security_solution_openapi_bundling.sh index 2c23d9850afa4..18d2c963b3c24 100755 --- a/.buildkite/scripts/steps/openapi_bundling/security_solution_openapi_bundling.sh +++ b/.buildkite/scripts/steps/openapi_bundling/security_solution_openapi_bundling.sh @@ -7,13 +7,13 @@ source .buildkite/scripts/common/util.sh echo --- Security Solution OpenAPI Bundling echo -e "\n[Security Solution OpenAPI Bundling] Detections API\n" -(cd x-pack/plugins/security_solution && yarn openapi:bundle:detections) +(cd x-pack/solutions/security/plugins/security_solution && yarn openapi:bundle:detections) echo -e "\n[Security Solution OpenAPI Bundling] Timeline API\n" -(cd x-pack/plugins/security_solution && yarn openapi:bundle:timeline) +(cd x-pack/solutions/security/plugins/security_solution && yarn openapi:bundle:timeline) echo -e "\n[Security Solution OpenAPI Bundling] Entity Analytics API\n" -(cd x-pack/plugins/security_solution && yarn openapi:bundle:entity-analytics) +(cd x-pack/solutions/security/plugins/security_solution && yarn openapi:bundle:entity-analytics) echo -e "\n[Security Solution OpenAPI Bundling] Lists API\n" (cd packages/kbn-securitysolution-lists-common && yarn openapi:bundle) @@ -25,12 +25,12 @@ echo -e "\n[Security Solution OpenAPI Bundling] Endpoint Exceptions API\n" (cd packages/kbn-securitysolution-endpoint-exceptions-common && yarn openapi:bundle) echo -e "\n[Security Solution OpenAPI Bundling] Endpoint Management API\n" -(cd x-pack/plugins/security_solution && yarn openapi:bundle:endpoint-management) +(cd x-pack/solutions/security/plugins/security_solution && yarn openapi:bundle:endpoint-management) echo -e "\n[Security Solution OpenAPI Bundling] Elastic Assistant API\n" -(cd x-pack/packages/kbn-elastic-assistant-common && yarn openapi:bundle) +(cd x-pack/platform/packages/shared/kbn-elastic-assistant-common && yarn openapi:bundle) echo -e "\n[Security Solution OpenAPI Bundling] Osquery API\n" -(cd x-pack/plugins/osquery && yarn openapi:bundle) +(cd x-pack/platform/plugins/shared/osquery && yarn openapi:bundle) check_for_changed_files "yarn openapi:bundle" true diff --git a/.buildkite/scripts/steps/storybooks/build_and_upload.ts b/.buildkite/scripts/steps/storybooks/build_and_upload.ts index 52aaa7e087a09..f8c52b2ded8cc 100644 --- a/.buildkite/scripts/steps/storybooks/build_and_upload.ts +++ b/.buildkite/scripts/steps/storybooks/build_and_upload.ts @@ -14,6 +14,7 @@ import { getKibanaDir } from '#pipeline-utils'; // TODO - how to generate this dynamically? const STORYBOOKS = [ + 'ai_assistant', 'apm', 'canvas', 'cases', diff --git a/.eslintrc.js b/.eslintrc.js index 0fe79513a9948..6bf88444aaf70 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -302,7 +302,7 @@ module.exports = { }, }, { - files: ['x-pack/plugins/cross_cluster_replication/**/*.{js,mjs,ts,tsx}'], + files: ['x-pack/platform/plugins/private/cross_cluster_replication/**/*.{js,mjs,ts,tsx}'], rules: { 'jsx-a11y/click-events-have-key-events': 'off', }, @@ -764,7 +764,6 @@ module.exports = { ], }, }, - /** * Jest specific rules */ @@ -915,10 +914,11 @@ module.exports = { { files: [ 'x-pack/plugins/observability_solution/apm/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/observability_solution/observability/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/observability_solution/exploratory_view/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/observability_solution/ux/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/observability_solution/slo/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/observability/plugins/observability/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/observability/plugins/exploratory_view/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/observability/plugins/ux/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/observability/plugins/slo/**/*.{js,mjs,ts,tsx}', + 'x-pack/packages/observability/**/*.{js,mjs,ts,tsx}', ], rules: { 'no-console': ['warn', { allow: ['error'] }], @@ -935,9 +935,10 @@ module.exports = { { files: [ 'x-pack/plugins/observability_solution/apm/**/*.stories.*', - 'x-pack/plugins/observability_solution/observability/**/*.stories.*', - 'x-pack/plugins/observability_solution/exploratory_view/**/*.stories.*', - 'x-pack/plugins/observability_solution/slo/**/*.stories.*', + 'x-pack/solutions/observability/plugins/observability/**/*.stories.*', + 'x-pack/solutions/observability/plugins/exploratory_view/**/*.stories.*', + 'x-pack/solutions/observability/plugins/slo/**/*.stories.*', + 'x-pack/packages/observability/**/*.{js,mjs,ts,tsx}', ], rules: { 'react/function-component-definition': [ @@ -1011,7 +1012,7 @@ module.exports = { { // disable imports from legacy uptime plugin files: [ - 'x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/**/*.{js,mjs,ts,tsx}', ], rules: { 'no-restricted-imports': [ @@ -1049,8 +1050,8 @@ module.exports = { { // front end and common typescript and javascript files only files: [ - 'x-pack/plugins/integration_assistant/public/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/integration_assistant/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/public/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/common/**/*.{js,mjs,ts,tsx}', ], rules: { 'import/no-nodejs-modules': 'error', @@ -1096,22 +1097,22 @@ module.exports = { { // front end and common typescript and javascript files only files: [ - 'x-pack/plugins/ecs_data_quality_dashboard/common/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/elastic_assistant/common/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/security-solution/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution/public/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution_ess/public/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution_serverless/public/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution/common/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution_ess/common/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution_serverless/common/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/timelines/public/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/timelines/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution/public/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_ess/public/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_serverless/public/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_ess/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_serverless/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/public/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/common/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/cases/public/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/cases/common/**/*.{js,mjs,ts,tsx}', - 'packages/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', ], rules: { 'import/no-nodejs-modules': 'error', @@ -1132,34 +1133,34 @@ module.exports = { // We use this section to add rules in which we do not want to apply to test files. // This should be a very small set as most linter rules are useful for tests as well. files: [ - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{ts,tsx}', - 'x-pack/plugins/elastic_assistant/**/*.{ts,tsx}', - 'x-pack/plugins/integration_assistant/**/*.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{ts,tsx}', - 'x-pack/packages/kbn-langchain/**/*.{ts,tsx}', - 'x-pack/packages/security-solution/**/*.{ts,tsx}', - 'x-pack/plugins/security_solution/**/*.{ts,tsx}', - 'x-pack/plugins/security_solution_ess/**/*.{ts,tsx}', - 'x-pack/plugins/security_solution_serverless/**/*.{ts,tsx}', - 'x-pack/plugins/timelines/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/**/*.{ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-langchain/**/*.{ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_ess/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_serverless/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/**/*.{ts,tsx}', 'x-pack/plugins/cases/**/*.{ts,tsx}', - 'packages/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', ], excludedFiles: [ - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/plugins/elastic_assistant/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/plugins/integration_assistant/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/packages/kbn-langchain/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/packages/security-solution/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/plugins/security_solution/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/plugins/security_solution_ess/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/plugins/security_solution_serverless/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/plugins/timelines/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-langchain/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_ess/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_serverless/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/**/*.{test,mock,test_helper}.{ts,tsx}', 'x-pack/plugins/cases/**/*.{test,mock,test_helper}.{ts,tsx}', - 'packages/kbn-cell-actions/**/*.{test,mock,test_helper}.{ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{test,mock,test_helper}.{ts,tsx}', ], rules: { '@typescript-eslint/no-non-null-assertion': 'error', @@ -1168,19 +1169,19 @@ module.exports = { { // typescript only for front and back end files: [ - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{ts,tsx}', - 'x-pack/plugins/elastic_assistant/**/*.{ts,tsx}', - 'x-pack/plugins/integration_assistant/**/*.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{ts,tsx}', - 'x-pack/packages/kbn-langchain/**/*.{ts,tsx}', - 'x-pack/packages/security-solution/**/*.{ts,tsx}', - 'x-pack/plugins/security_solution/**/*.{ts,tsx}', - 'x-pack/plugins/security_solution_ess/**/*.{ts,tsx}', - 'x-pack/plugins/security_solution_serverless/**/*.{ts,tsx}', - 'x-pack/plugins/timelines/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/**/*.{ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-langchain/**/*.{ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_ess/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_serverless/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/**/*.{ts,tsx}', 'x-pack/plugins/cases/**/*.{ts,tsx}', - 'packages/kbn-cell-actions/**/*.{ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{ts,tsx}', ], rules: { '@typescript-eslint/no-this-alias': 'error', @@ -1202,20 +1203,20 @@ module.exports = { { // typescript and javascript for front and back end files: [ - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/elastic_assistant/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/integration_assistant/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-langchain/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/security-solution/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution_ess/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution_serverless/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/timelines/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-langchain/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_ess/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_serverless/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/cases/**/*.{js,mjs,ts,tsx}', - 'packages/kbn-data-stream-adapter/**/*.{js,mjs,ts,tsx}', - 'packages/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/data-stream-adapter/**/*.{js,mjs,ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', ], plugins: ['eslint-plugin-node', 'react'], env: { @@ -1307,15 +1308,15 @@ module.exports = { overrides: [ { files: [ - 'x-pack/packages/security-solution/features/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/security-solution/navigation/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution_ess/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/security_solution_serverless/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/cases/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-data-stream-adapter/**/*.{js,mjs,ts,tsx}', - 'packages/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_ess/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/security_solution_serverless/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/data-stream-adapter/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/features/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/navigation/**/*.{js,mjs,ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', ], rules: { '@typescript-eslint/consistent-type-imports': 'error', @@ -1784,7 +1785,7 @@ module.exports = { 'plugin:@typescript-eslint/recommended', ], plugins: ['react', '@typescript-eslint'], - files: ['x-pack/plugins/osquery/**/*.{js,mjs,ts,tsx}'], + files: ['x-pack/platform/plugins/shared/osquery/**/*.{js,mjs,ts,tsx}'], rules: { 'padding-line-between-statements': [ 'error', @@ -1810,7 +1811,7 @@ module.exports = { }, { // typescript and javascript for front end react performance - files: ['x-pack/plugins/osquery/public/**/!(*.test).{js,mjs,ts,tsx}'], + files: ['x-pack/platform/plugins/shared/osquery/public/**/!(*.test).{js,mjs,ts,tsx}'], plugins: ['react', 'react-perf'], rules: { 'react-perf/jsx-no-new-object-as-prop': 'error', @@ -1964,7 +1965,7 @@ module.exports = { * Cloud Security Team overrides */ { - files: ['x-pack/plugins/cloud_security_posture/**/*.{js,mjs,ts,tsx}'], + files: ['x-pack/solutions/security/plugins/cloud_security_posture/**/*.{js,mjs,ts,tsx}'], plugins: ['testing-library'], rules: { 'testing-library/await-async-utils': 'error', @@ -1996,16 +1997,13 @@ module.exports = { }, { files: [ - // logsShared depends on o11y/private plugins, but platform plugins depend on it - 'x-pack/plugins/observability_solution/logs_shared/**', - // TODO @kibana/operations 'scripts/create_observability_rules.js', // is importing "@kbn/observability-alerting-test-data" (observability/private) 'src/cli_setup/**', // is importing "@kbn/interactive-setup-plugin" (platform/private) 'src/dev/build/tasks/install_chromium.ts', // is importing "@kbn/screenshotting-plugin" (platform/private) // @kbn/osquery-plugin could be categorised as Security, but @kbn/infra-plugin (observability) depends on it! - 'x-pack/plugins/osquery/**', + 'x-pack/platform/plugins/shared/osquery/**', // For now, we keep the exception to let tests depend on anythying. // Ideally, we need to classify the solution specific ones to reduce CI times diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 901fbc18cbbc0..d9def6481fc90 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -5,7 +5,6 @@ ## `node scripts/generate codeowners`. #### -examples/bfetch_explorer @elastic/appex-sharedux examples/content_management_examples @elastic/appex-sharedux examples/controls_example @elastic/kibana-presentation examples/data_view_field_editor_example @elastic/kibana-data-discovery @@ -262,16 +261,10 @@ packages/core/user-settings/core-user-settings-server @elastic/kibana-security packages/core/user-settings/core-user-settings-server-internal @elastic/kibana-security packages/core/user-settings/core-user-settings-server-mocks @elastic/kibana-security packages/deeplinks/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations -packages/deeplinks/devtools @elastic/kibana-management packages/deeplinks/fleet @elastic/fleet -packages/deeplinks/management @elastic/kibana-management -packages/deeplinks/observability @elastic/obs-ux-management-team packages/deeplinks/search @elastic/search-kibana -packages/deeplinks/security @elastic/security-solution packages/deeplinks/shared @elastic/appex-sharedux packages/default-nav/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations -packages/default-nav/devtools @elastic/kibana-management -packages/default-nav/management @elastic/kibana-management packages/home/sample_data_card @elastic/appex-sharedux packages/home/sample_data_tab @elastic/appex-sharedux packages/home/sample_data_types @elastic/appex-sharedux @@ -291,7 +284,6 @@ packages/kbn-apm-synthtrace @elastic/obs-ux-infra_services-team @elastic/obs-ux- packages/kbn-apm-synthtrace-client @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team packages/kbn-apm-types @elastic/obs-ux-infra_services-team packages/kbn-apm-utils @elastic/obs-ux-infra_services-team -packages/kbn-avc-banner @elastic/security-defend-workflows packages/kbn-axe-config @elastic/kibana-qa packages/kbn-babel-preset @elastic/kibana-operations packages/kbn-babel-register @elastic/kibana-operations @@ -303,7 +295,6 @@ packages/kbn-calculate-width-from-char-count @elastic/kibana-visualizations packages/kbn-capture-oas-snapshot-cli @elastic/kibana-core packages/kbn-cases-components @elastic/response-ops packages/kbn-cbor @elastic/kibana-operations -packages/kbn-cell-actions @elastic/security-threat-hunting-explore packages/kbn-chart-icons @elastic/kibana-visualizations packages/kbn-check-mappings-update-cli @elastic/kibana-core packages/kbn-check-prod-native-modules-cli @elastic/kibana-operations @@ -324,7 +315,6 @@ packages/kbn-custom-icons @elastic/obs-ux-logs-team packages/kbn-custom-integrations @elastic/obs-ux-logs-team packages/kbn-cypress-config @elastic/kibana-operations packages/kbn-data-service @elastic/kibana-visualizations @elastic/kibana-data-discovery -packages/kbn-data-stream-adapter @elastic/security-threat-hunting packages/kbn-data-view-utils @elastic/kibana-data-discovery packages/kbn-datemath @elastic/kibana-data-discovery packages/kbn-dependency-ownership @elastic/kibana-security @@ -345,6 +335,7 @@ packages/kbn-es-errors @elastic/kibana-core packages/kbn-es-query @elastic/kibana-data-discovery packages/kbn-es-types @elastic/kibana-core @elastic/obs-knowledge-team packages/kbn-eslint-config @elastic/kibana-operations +packages/kbn-eslint-plugin-css @elastic/appex-sharedux packages/kbn-eslint-plugin-disable @elastic/kibana-operations packages/kbn-eslint-plugin-eslint @elastic/kibana-operations packages/kbn-eslint-plugin-i18n @elastic/obs-knowledge-team @elastic/kibana-operations @@ -352,7 +343,6 @@ packages/kbn-eslint-plugin-imports @elastic/kibana-operations packages/kbn-eslint-plugin-telemetry @elastic/obs-knowledge-team packages/kbn-event-annotation-common @elastic/kibana-visualizations packages/kbn-event-annotation-components @elastic/kibana-visualizations -packages/kbn-expandable-flyout @elastic/security-threat-hunting-investigations packages/kbn-expect @elastic/kibana-operations @elastic/appex-qa packages/kbn-failed-test-reporter-cli @elastic/kibana-operations @elastic/appex-qa packages/kbn-field-types @elastic/kibana-data-discovery @@ -378,10 +368,7 @@ packages/kbn-i18n @elastic/kibana-core packages/kbn-i18n-react @elastic/kibana-core packages/kbn-import-locator @elastic/kibana-operations packages/kbn-import-resolver @elastic/kibana-operations -packages/kbn-index-adapter @elastic/security-threat-hunting packages/kbn-interpreter @elastic/kibana-visualizations -packages/kbn-investigation-shared @elastic/obs-ux-management-team -packages/kbn-io-ts-utils @elastic/obs-knowledge-team packages/kbn-ipynb @elastic/search-kibana packages/kbn-item-buffer @elastic/appex-sharedux packages/kbn-jest-serializers @elastic/kibana-operations @@ -397,17 +384,8 @@ packages/kbn-logging-mocks @elastic/kibana-core packages/kbn-managed-content-badge @elastic/kibana-visualizations packages/kbn-managed-vscode-config @elastic/kibana-operations packages/kbn-managed-vscode-config-cli @elastic/kibana-operations -packages/kbn-management/cards_navigation @elastic/kibana-management -packages/kbn-management/settings/application @elastic/kibana-management -packages/kbn-management/settings/components/field_category @elastic/kibana-management -packages/kbn-management/settings/components/field_input @elastic/kibana-management -packages/kbn-management/settings/components/field_row @elastic/kibana-management -packages/kbn-management/settings/components/form @elastic/kibana-management -packages/kbn-management/settings/field_definition @elastic/kibana-management packages/kbn-management/settings/section_registry @elastic/appex-sharedux @elastic/kibana-management packages/kbn-management/settings/setting_ids @elastic/appex-sharedux @elastic/kibana-management -packages/kbn-management/settings/types @elastic/kibana-management -packages/kbn-management/settings/utilities @elastic/kibana-management packages/kbn-management/storybook/config @elastic/kibana-management packages/kbn-manifest @elastic/kibana-core packages/kbn-mapbox-gl @elastic/kibana-presentation @@ -421,6 +399,7 @@ packages/kbn-openapi-common @elastic/security-detection-rule-management packages/kbn-openapi-generator @elastic/security-detection-rule-management packages/kbn-optimizer @elastic/kibana-operations packages/kbn-optimizer-webpack-helpers @elastic/kibana-operations +packages/kbn-palettes @elastic/kibana-visualizations packages/kbn-panel-loader @elastic/kibana-presentation packages/kbn-peggy @elastic/kibana-operations packages/kbn-peggy-loader @elastic/kibana-operations @@ -434,6 +413,7 @@ packages/kbn-react-field @elastic/kibana-data-discovery packages/kbn-react-hooks @elastic/obs-ux-logs-team packages/kbn-react-mute-legacy-root-warning @elastic/appex-sharedux packages/kbn-recently-accessed @elastic/appex-sharedux +packages/kbn-relocate @elastic/kibana-core packages/kbn-repo-file-maps @elastic/kibana-operations packages/kbn-repo-info @elastic/kibana-operations packages/kbn-repo-linter @elastic/kibana-operations @@ -475,7 +455,6 @@ packages/kbn-search-response-warnings @elastic/kibana-data-discovery packages/kbn-search-types @elastic/kibana-data-discovery packages/kbn-security-hardening @elastic/kibana-security packages/kbn-securitysolution-autocomplete @elastic/security-detection-engine -packages/kbn-securitysolution-ecs @elastic/security-threat-hunting-explore packages/kbn-securitysolution-endpoint-exceptions-common @elastic/security-detection-engine packages/kbn-securitysolution-es-utils @elastic/security-detection-engine packages/kbn-securitysolution-exception-list-components @elastic/security-detection-engine @@ -494,18 +473,12 @@ packages/kbn-securitysolution-rules @elastic/security-detection-engine packages/kbn-securitysolution-t-grid @elastic/security-detection-engine packages/kbn-securitysolution-utils @elastic/security-detection-engine packages/kbn-server-http-tools @elastic/kibana-core -packages/kbn-server-route-repository @elastic/obs-knowledge-team -packages/kbn-server-route-repository-client @elastic/obs-knowledge-team -packages/kbn-server-route-repository-utils @elastic/obs-knowledge-team packages/kbn-set-map @elastic/kibana-operations packages/kbn-shared-svg @elastic/obs-ux-infra_services-team packages/kbn-shared-ux-utility @elastic/appex-sharedux packages/kbn-some-dev-log @elastic/kibana-operations packages/kbn-sort-package-json @elastic/kibana-operations packages/kbn-sort-predicates @elastic/kibana-visualizations -packages/kbn-sse-utils @elastic/obs-knowledge-team -packages/kbn-sse-utils-client @elastic/obs-knowledge-team -packages/kbn-sse-utils-server @elastic/obs-knowledge-team packages/kbn-std @elastic/kibana-core packages/kbn-stdio-dev-helpers @elastic/kibana-operations packages/kbn-storybook @elastic/kibana-operations @@ -523,7 +496,6 @@ packages/kbn-triggers-actions-ui-types @elastic/response-ops packages/kbn-try-in-console @elastic/search-kibana packages/kbn-ts-projects @elastic/kibana-operations packages/kbn-ts-type-check-cli @elastic/kibana-operations -packages/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team packages/kbn-ui-actions-browser @elastic/appex-sharedux packages/kbn-ui-shared-deps-npm @elastic/kibana-operations packages/kbn-ui-shared-deps-src @elastic/kibana-operations @@ -532,7 +504,6 @@ packages/kbn-unified-data-table @elastic/kibana-data-discovery @elastic/security packages/kbn-unified-doc-viewer @elastic/kibana-data-discovery packages/kbn-unified-field-list @elastic/kibana-data-discovery packages/kbn-unsaved-changes-badge @elastic/kibana-data-discovery -packages/kbn-unsaved-changes-prompt @elastic/kibana-management packages/kbn-use-tracked-promise @elastic/obs-ux-logs-team packages/kbn-user-profile-components @elastic/kibana-security packages/kbn-utility-types @elastic/kibana-core @@ -562,7 +533,6 @@ packages/serverless/project_switcher @elastic/appex-sharedux packages/serverless/settings/common @elastic/appex-sharedux @elastic/kibana-management packages/serverless/settings/observability_project @elastic/appex-sharedux @elastic/kibana-management @elastic/obs-ux-management-team packages/serverless/settings/search_project @elastic/search-kibana @elastic/kibana-management -packages/serverless/settings/security_project @elastic/security-solution @elastic/kibana-management packages/serverless/storybook/config @elastic/appex-sharedux packages/serverless/types @elastic/appex-sharedux packages/shared-ux/avatar/solution @elastic/appex-sharedux @@ -617,19 +587,51 @@ packages/shared-ux/storybook/config @elastic/appex-sharedux packages/shared-ux/storybook/mock @elastic/appex-sharedux packages/shared-ux/table_persist @elastic/appex-sharedux src/core @elastic/kibana-core +src/platform/packages/private/default-nav/devtools @elastic/kibana-management +src/platform/packages/private/default-nav/management @elastic/kibana-management src/platform/packages/private/default-nav/ml @elastic/ml-ui src/platform/packages/private/kbn-esql-editor @elastic/kibana-esql src/platform/packages/private/kbn-language-documentation @elastic/kibana-esql +src/platform/packages/private/kbn-management/settings/application @elastic/kibana-management +src/platform/packages/private/kbn-management/settings/components/field_category @elastic/kibana-management +src/platform/packages/private/kbn-management/settings/components/form @elastic/kibana-management +src/platform/packages/shared/deeplinks/devtools @elastic/kibana-management +src/platform/packages/shared/deeplinks/management @elastic/kibana-management src/platform/packages/shared/deeplinks/ml @elastic/ml-ui +src/platform/packages/shared/deeplinks/observability @elastic/obs-ux-management-team +src/platform/packages/shared/deeplinks/security @elastic/security-solution +src/platform/packages/shared/kbn-avc-banner @elastic/security-defend-workflows +src/platform/packages/shared/kbn-cell-actions @elastic/security-threat-hunting-explore src/platform/packages/shared/kbn-doc-links @elastic/docs src/platform/packages/shared/kbn-esql-ast @elastic/kibana-esql src/platform/packages/shared/kbn-esql-utils @elastic/kibana-esql src/platform/packages/shared/kbn-esql-validation-autocomplete @elastic/kibana-esql +src/platform/packages/shared/kbn-io-ts-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-management/cards_navigation @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/components/field_input @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/components/field_row @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/field_definition @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/types @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/utilities @elastic/kibana-management src/platform/packages/shared/kbn-osquery-io-ts-types @elastic/security-asset-management +src/platform/packages/shared/kbn-securitysolution-ecs @elastic/security-threat-hunting-explore +src/platform/packages/shared/kbn-server-route-repository @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-server-route-repository-client @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-server-route-repository-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-sse-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-sse-utils-client @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-sse-utils-server @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-unsaved-changes-prompt @elastic/kibana-management +src/platform/packages/shared/serverless/settings/security_project @elastic/security-solution @elastic/kibana-management +src/platform/plugins/shared/ai_assistant_management/selection @elastic/obs-ai-assistant +src/platform/plugins/shared/console @elastic/kibana-management +src/platform/plugins/shared/dev_tools @elastic/kibana-management +src/platform/plugins/shared/es_ui_shared @elastic/kibana-management src/platform/plugins/shared/esql @elastic/kibana-esql src/platform/plugins/shared/esql_datagrid @elastic/kibana-esql +src/platform/plugins/shared/management @elastic/kibana-management src/plugins/advanced_settings @elastic/appex-sharedux @elastic/kibana-management -src/plugins/ai_assistant_management/selection @elastic/obs-ai-assistant src/plugins/bfetch @elastic/appex-sharedux src/plugins/chart_expressions/common @elastic/kibana-visualizations src/plugins/chart_expressions/expression_gauge @elastic/kibana-visualizations @@ -640,7 +642,6 @@ src/plugins/chart_expressions/expression_partition_vis @elastic/kibana-visualiza src/plugins/chart_expressions/expression_tagcloud @elastic/kibana-visualizations src/plugins/chart_expressions/expression_xy @elastic/kibana-visualizations src/plugins/charts @elastic/kibana-visualizations -src/plugins/console @elastic/kibana-management src/plugins/content_management @elastic/appex-sharedux src/plugins/controls @elastic/kibana-presentation src/plugins/custom_integrations @elastic/fleet @@ -650,11 +651,9 @@ src/plugins/data_view_editor @elastic/kibana-data-discovery src/plugins/data_view_field_editor @elastic/kibana-data-discovery src/plugins/data_view_management @elastic/kibana-data-discovery src/plugins/data_views @elastic/kibana-data-discovery -src/plugins/dev_tools @elastic/kibana-management src/plugins/discover @elastic/kibana-data-discovery src/plugins/discover_shared @elastic/kibana-data-discovery @elastic/obs-ux-logs-team src/plugins/embeddable @elastic/kibana-presentation -src/plugins/es_ui_shared @elastic/kibana-management src/plugins/event_annotation @elastic/kibana-visualizations src/plugins/event_annotation_listing @elastic/kibana-visualizations src/plugins/expression_error @elastic/kibana-presentation @@ -679,7 +678,6 @@ src/plugins/kibana_react @elastic/appex-sharedux src/plugins/kibana_usage_collection @elastic/kibana-core src/plugins/kibana_utils @elastic/appex-sharedux src/plugins/links @elastic/kibana-presentation -src/plugins/management @elastic/kibana-management src/plugins/maps_ems @elastic/kibana-presentation src/plugins/navigation @elastic/appex-sharedux src/plugins/newsfeed @elastic/kibana-core @@ -777,43 +775,17 @@ x-pack/examples/third_party_vis_lens_example @elastic/kibana-visualizations x-pack/examples/triggers_actions_ui_example @elastic/response-ops x-pack/examples/ui_actions_enhanced_examples @elastic/appex-sharedux x-pack/packages/ai-infra/product-doc-artifact-builder @elastic/appex-ai-infra -x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared @elastic/kibana-management -x-pack/packages/index-management/index_management_shared_types @elastic/kibana-management x-pack/packages/kbn-ai-assistant @elastic/search-kibana -x-pack/packages/kbn-ai-assistant-common @elastic/search-kibana x-pack/packages/kbn-alerting-comparators @elastic/response-ops x-pack/packages/kbn-alerting-state-types @elastic/response-ops -x-pack/packages/kbn-cloud-security-posture/common @elastic/kibana-cloud-security-posture -x-pack/packages/kbn-cloud-security-posture/graph @elastic/kibana-cloud-security-posture -x-pack/packages/kbn-cloud-security-posture/public @elastic/kibana-cloud-security-posture -x-pack/packages/kbn-data-forge @elastic/obs-ux-management-team -x-pack/packages/kbn-elastic-assistant @elastic/security-generative-ai -x-pack/packages/kbn-elastic-assistant-common @elastic/security-generative-ai -x-pack/packages/kbn-infra-forge @elastic/obs-ux-management-team -x-pack/packages/kbn-langchain @elastic/security-generative-ai x-pack/packages/kbn-random-sampling @elastic/kibana-visualizations -x-pack/packages/kbn-slo-schema @elastic/obs-ux-management-team x-pack/packages/kbn-synthetics-private-location @elastic/obs-ux-management-team x-pack/packages/maps/vector_tile_utils @elastic/kibana-presentation -x-pack/packages/observability/alert_details @elastic/obs-ux-management-team -x-pack/packages/observability/alerting_rule_utils @elastic/obs-ux-management-team -x-pack/packages/observability/alerting_test_data @elastic/obs-ux-management-team -x-pack/packages/observability/get_padded_alert_time_range_util @elastic/obs-ux-management-team x-pack/packages/observability/logs_overview @elastic/obs-ux-logs-team x-pack/packages/observability/observability_utils/observability_utils_browser @elastic/observability-ui x-pack/packages/observability/observability_utils/observability_utils_common @elastic/observability-ui x-pack/packages/observability/observability_utils/observability_utils_server @elastic/observability-ui -x-pack/packages/observability/synthetics_test_data @elastic/obs-ux-management-team -x-pack/packages/rollup @elastic/kibana-management x-pack/packages/search/shared_ui @elastic/search-kibana -x-pack/packages/security-solution/data_table @elastic/security-threat-hunting-investigations -x-pack/packages/security-solution/distribution_bar @elastic/kibana-cloud-security-posture -x-pack/packages/security-solution/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/features @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/navigation @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/side_nav @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/storybook/config @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/upselling @elastic/security-threat-hunting-explore x-pack/packages/security/api_key_management @elastic/kibana-security x-pack/packages/security/authorization_core @elastic/kibana-security x-pack/packages/security/authorization_core_common @elastic/kibana-security @@ -824,6 +796,7 @@ x-pack/packages/security/plugin_types_server @elastic/kibana-security x-pack/packages/security/role_management_model @elastic/kibana-security x-pack/packages/security/ui_components @elastic/kibana-security x-pack/performance @elastic/appex-qa +x-pack/platform/packages/private/kbn-infra-forge @elastic/obs-ux-management-team x-pack/platform/packages/private/ml/agg_utils @elastic/ml-ui x-pack/platform/packages/private/ml/aiops_change_point_detection @elastic/ml-ui x-pack/platform/packages/private/ml/aiops_components @elastic/ml-ui @@ -854,9 +827,20 @@ x-pack/platform/packages/private/ml/time_buckets @elastic/ml-ui x-pack/platform/packages/private/ml/ui_actions @elastic/ml-ui x-pack/platform/packages/private/ml/url_state @elastic/ml-ui x-pack/platform/packages/private/ml/validators @elastic/ml-ui +x-pack/platform/packages/private/rollup @elastic/kibana-management +x-pack/platform/packages/shared/ai-assistant/common @elastic/search-kibana +x-pack/platform/packages/shared/ai-assistant/icon @elastic/appex-sharedux x-pack/platform/packages/shared/ai-infra/inference-common @elastic/appex-ai-infra x-pack/platform/packages/shared/ai-infra/product-doc-common @elastic/appex-ai-infra +x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared @elastic/kibana-management +x-pack/platform/packages/shared/index-management/index_management_shared_types @elastic/kibana-management +x-pack/platform/packages/shared/kbn-cloud-security-posture/common @elastic/kibana-cloud-security-posture +x-pack/platform/packages/shared/kbn-data-forge @elastic/obs-ux-management-team +x-pack/platform/packages/shared/kbn-elastic-assistant @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-elastic-assistant-common @elastic/security-generative-ai x-pack/platform/packages/shared/kbn-entities-schema @elastic/obs-entities +x-pack/platform/packages/shared/kbn-langchain @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-slo-schema @elastic/obs-ux-management-team x-pack/platform/packages/shared/ml/aiops_common @elastic/ml-ui x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis @elastic/ml-ui x-pack/platform/packages/shared/ml/aiops_log_rate_analysis @elastic/ml-ui @@ -867,38 +851,49 @@ x-pack/platform/packages/shared/ml/random_sampler_utils @elastic/ml-ui x-pack/platform/packages/shared/ml/response_stream @elastic/ml-ui x-pack/platform/packages/shared/ml/runtime_field_utils @elastic/ml-ui x-pack/platform/packages/shared/ml/trained_models_utils @elastic/ml-ui +x-pack/platform/packages/shared/observability/alerting_rule_utils @elastic/obs-ux-management-team +x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration @elastic/kibana-management +x-pack/platform/plugins/private/cross_cluster_replication @elastic/kibana-management +x-pack/platform/plugins/private/data_usage @elastic/obs-ai-assistant @elastic/security-solution x-pack/platform/plugins/private/data_visualizer @elastic/ml-ui +x-pack/platform/plugins/private/grokdebugger @elastic/kibana-management +x-pack/platform/plugins/private/index_lifecycle_management @elastic/kibana-management +x-pack/platform/plugins/private/license_api_guard @elastic/kibana-management +x-pack/platform/plugins/private/painless_lab @elastic/kibana-management +x-pack/platform/plugins/private/remote_clusters @elastic/kibana-management +x-pack/platform/plugins/private/rollup @elastic/kibana-management +x-pack/platform/plugins/private/runtime_fields @elastic/kibana-management +x-pack/platform/plugins/private/snapshot_restore @elastic/kibana-management x-pack/platform/plugins/private/transform @elastic/ml-ui x-pack/platform/plugins/private/translations @elastic/kibana-localization +x-pack/platform/plugins/private/watcher @elastic/kibana-management x-pack/platform/plugins/shared/ai_infra/llm_tasks @elastic/appex-ai-infra x-pack/platform/plugins/shared/ai_infra/product_doc_base @elastic/appex-ai-infra x-pack/platform/plugins/shared/aiops @elastic/ml-ui x-pack/platform/plugins/shared/entity_manager @elastic/obs-entities x-pack/platform/plugins/shared/inference @elastic/appex-ai-infra +x-pack/platform/plugins/shared/ingest_pipelines @elastic/kibana-management +x-pack/platform/plugins/shared/integration_assistant @elastic/security-scalability +x-pack/platform/plugins/shared/license_management @elastic/kibana-management x-pack/platform/plugins/shared/ml @elastic/ml-ui +x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant @elastic/obs-ai-assistant +x-pack/platform/plugins/shared/osquery @elastic/security-defend-workflows +x-pack/platform/plugins/shared/searchprofiler @elastic/kibana-management x-pack/plugins/actions @elastic/response-ops x-pack/plugins/alerting @elastic/response-ops -x-pack/plugins/asset_inventory @elastic/kibana-cloud-security-posture x-pack/plugins/banners @elastic/appex-sharedux x-pack/plugins/canvas @elastic/kibana-presentation x-pack/plugins/cases @elastic/response-ops x-pack/plugins/cloud @elastic/kibana-core -x-pack/plugins/cloud_defend @elastic/kibana-cloud-security-posture x-pack/plugins/cloud_integrations/cloud_chat @elastic/kibana-core -x-pack/plugins/cloud_integrations/cloud_data_migration @elastic/kibana-management x-pack/plugins/cloud_integrations/cloud_experiments @elastic/kibana-core x-pack/plugins/cloud_integrations/cloud_full_story @elastic/kibana-core x-pack/plugins/cloud_integrations/cloud_links @elastic/kibana-core -x-pack/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture -x-pack/plugins/cross_cluster_replication @elastic/kibana-management x-pack/plugins/custom_branding @elastic/appex-sharedux x-pack/plugins/dashboard_enhanced @elastic/kibana-presentation x-pack/plugins/data_quality @elastic/obs-ux-logs-team -x-pack/plugins/data_usage @elastic/obs-ai-assistant @elastic/security-solution x-pack/plugins/discover_enhanced @elastic/kibana-data-discovery x-pack/plugins/drilldowns/url_drilldown @elastic/appex-sharedux -x-pack/plugins/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore -x-pack/plugins/elastic_assistant @elastic/security-generative-ai x-pack/plugins/embeddable_enhanced @elastic/kibana-presentation x-pack/plugins/encrypted_saved_objects @elastic/kibana-security x-pack/plugins/enterprise_search @elastic/search-kibana @@ -911,15 +906,8 @@ x-pack/plugins/global_search @elastic/appex-sharedux x-pack/plugins/global_search_bar @elastic/appex-sharedux x-pack/plugins/global_search_providers @elastic/appex-sharedux x-pack/plugins/graph @elastic/kibana-visualizations -x-pack/plugins/grokdebugger @elastic/kibana-management -x-pack/plugins/index_lifecycle_management @elastic/kibana-management x-pack/plugins/index_management @elastic/kibana-management -x-pack/plugins/ingest_pipelines @elastic/kibana-management -x-pack/plugins/integration_assistant @elastic/security-scalability -x-pack/plugins/kubernetes_security @elastic/kibana-cloud-security-posture x-pack/plugins/lens @elastic/kibana-visualizations -x-pack/plugins/license_api_guard @elastic/kibana-management -x-pack/plugins/license_management @elastic/kibana-management x-pack/plugins/licensing @elastic/kibana-core x-pack/plugins/lists @elastic/security-detection-engine x-pack/plugins/logstash @elastic/logstash @@ -931,38 +919,21 @@ x-pack/plugins/observability_solution/apm @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/apm_data_access @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/apm/ftr_e2e @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/dataset_quality @elastic/obs-ux-logs-team -x-pack/plugins/observability_solution/exploratory_view @elastic/obs-ux-management-team x-pack/plugins/observability_solution/infra @elastic/obs-ux-logs-team @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/inventory @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/inventory/e2e @elastic/obs-ux-infra_services-team -x-pack/plugins/observability_solution/investigate @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/investigate_app @elastic/obs-ux-management-team x-pack/plugins/observability_solution/logs_data_access @elastic/obs-ux-logs-team x-pack/plugins/observability_solution/logs_explorer @elastic/obs-ux-logs-team x-pack/plugins/observability_solution/logs_shared @elastic/obs-ux-logs-team x-pack/plugins/observability_solution/metrics_data_access @elastic/obs-ux-infra_services-team -x-pack/plugins/observability_solution/observability @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/observability_ai_assistant @elastic/obs-ai-assistant -x-pack/plugins/observability_solution/observability_ai_assistant_app @elastic/obs-ai-assistant -x-pack/plugins/observability_solution/observability_ai_assistant_management @elastic/obs-ai-assistant x-pack/plugins/observability_solution/observability_logs_explorer @elastic/obs-ux-logs-team -x-pack/plugins/observability_solution/observability_onboarding @elastic/obs-ux-logs-team @elastic/obs-ux-onboarding-team -x-pack/plugins/observability_solution/observability_onboarding/e2e @elastic/obs-ux-logs-team @elastic/obs-ux-onboarding-team +x-pack/plugins/observability_solution/observability_onboarding @elastic/obs-ux-logs-team +x-pack/plugins/observability_solution/observability_onboarding/e2e @elastic/obs-ux-logs-team x-pack/plugins/observability_solution/observability_shared @elastic/observability-ui x-pack/plugins/observability_solution/profiling @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/profiling_data_access @elastic/obs-ux-infra_services-team -x-pack/plugins/observability_solution/slo @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/synthetics @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/synthetics/e2e @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/uptime @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/ux @elastic/obs-ux-infra_services-team -x-pack/plugins/osquery @elastic/security-defend-workflows -x-pack/plugins/painless_lab @elastic/kibana-management -x-pack/plugins/remote_clusters @elastic/kibana-management x-pack/plugins/reporting @elastic/appex-sharedux -x-pack/plugins/rollup @elastic/kibana-management x-pack/plugins/rule_registry @elastic/response-ops @elastic/obs-ux-management-team -x-pack/plugins/runtime_fields @elastic/kibana-management x-pack/plugins/saved_objects_tagging @elastic/appex-sharedux x-pack/plugins/screenshotting @elastic/kibana-reporting-services x-pack/plugins/search_assistant @elastic/search-kibana @@ -973,30 +944,64 @@ x-pack/plugins/search_inference_endpoints @elastic/search-kibana x-pack/plugins/search_notebooks @elastic/search-kibana x-pack/plugins/search_playground @elastic/search-kibana x-pack/plugins/search_solution/search_navigation @elastic/search-kibana -x-pack/plugins/searchprofiler @elastic/kibana-management x-pack/plugins/security @elastic/kibana-security -x-pack/plugins/security_solution @elastic/security-solution -x-pack/plugins/security_solution_ess @elastic/security-solution -x-pack/plugins/security_solution_serverless @elastic/security-solution x-pack/plugins/serverless @elastic/appex-sharedux -x-pack/plugins/serverless_observability @elastic/obs-ux-management-team x-pack/plugins/serverless_search @elastic/search-kibana -x-pack/plugins/session_view @elastic/kibana-cloud-security-posture -x-pack/plugins/snapshot_restore @elastic/kibana-management x-pack/plugins/spaces @elastic/kibana-security x-pack/plugins/stack_alerts @elastic/response-ops x-pack/plugins/stack_connectors @elastic/response-ops x-pack/plugins/task_manager @elastic/response-ops x-pack/plugins/telemetry_collection_xpack @elastic/kibana-core -x-pack/plugins/threat_intelligence @elastic/security-threat-hunting-investigations -x-pack/plugins/timelines @elastic/security-threat-hunting-investigations x-pack/plugins/triggers_actions_ui @elastic/response-ops x-pack/plugins/upgrade_assistant @elastic/kibana-management -x-pack/plugins/watcher @elastic/kibana-management +x-pack/solutions/observability/packages/alert_details @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/alerting_test_data @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/get_padded_alert_time_range_util @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/kbn-investigation-shared @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/observability_ai/observability_ai_common @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/observability_ai/observability_ai_server @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/synthetics_test_data @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/exploratory_view @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/investigate @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/investigate_app @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/observability @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/observability_ai_assistant_app @elastic/obs-ai-assistant +x-pack/solutions/observability/plugins/observability_ai_assistant_management @elastic/obs-ai-assistant x-pack/solutions/observability/plugins/observability_solution/entities_data_access @elastic/obs-entities x-pack/solutions/observability/plugins/observability_solution/entity_manager_app @elastic/obs-entities +x-pack/solutions/observability/plugins/serverless_observability @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/slo @elastic/obs-ux-management-team x-pack/solutions/observability/plugins/streams @elastic/streams-program-team x-pack/solutions/observability/plugins/streams_app @elastic/streams-program-team +x-pack/solutions/observability/plugins/synthetics @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/synthetics/e2e @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/uptime @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/ux @elastic/obs-ux-management-team +x-pack/solutions/security/packages/data_table @elastic/security-threat-hunting-investigations +x-pack/solutions/security/packages/data-stream-adapter @elastic/security-threat-hunting +x-pack/solutions/security/packages/distribution_bar @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/expandable-flyout @elastic/security-threat-hunting-investigations +x-pack/solutions/security/packages/features @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/index-adapter @elastic/security-threat-hunting +x-pack/solutions/security/packages/kbn-cloud-security-posture/graph @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/kbn-cloud-security-posture/public @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/navigation @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/side_nav @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/storybook/config @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/upselling @elastic/security-threat-hunting-explore +x-pack/solutions/security/plugins/asset_inventory @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/cloud_defend @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore +x-pack/solutions/security/plugins/elastic_assistant @elastic/security-generative-ai +x-pack/solutions/security/plugins/kubernetes_security @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/security_solution @elastic/security-solution +x-pack/solutions/security/plugins/security_solution_ess @elastic/security-solution +x-pack/solutions/security/plugins/security_solution_serverless @elastic/security-solution +x-pack/solutions/security/plugins/session_view @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/threat_intelligence @elastic/security-threat-hunting-investigations +x-pack/solutions/security/plugins/timelines @elastic/security-threat-hunting-investigations x-pack/test x-pack/test_serverless x-pack/test/alerting_api_integration/common/plugins/aad @elastic/response-ops @@ -1142,6 +1147,8 @@ x-pack/test_serverless/api_integration/test_suites/common/platform_security @ela /x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples @elastic/kibana-data-discovery /x-pack/test_serverless/functional/test_suites/common/management/data_views @elastic/kibana-data-discovery src/plugins/discover/public/context_awareness/profile_providers/security @elastic/kibana-data-discovery @elastic/security-threat-hunting-investigations +# TODO: this deprecation_logs folder should be owned by kibana management team after 9.0 +src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs @elastic/kibana-data-discovery @elastic/kibana-core src/plugins/discover/public/context_awareness/profile_providers/observability @elastic/kibana-data-discovery @elastic/obs-ux-logs-team # Platform Docs @@ -1239,7 +1246,7 @@ packages/kbn-monaco/src/esql @elastic/kibana-esql #CC# /src/plugins/home/server/services/ @elastic/appex-sharedux #CC# /src/plugins/home/ @elastic/appex-sharedux #CC# /x-pack/plugins/reporting/ @elastic/appex-sharedux -#CC# /x-pack/plugins/security_solution_serverless/ @elastic/appex-sharedux +#CC# /x-pack/solutions/security/plugins/security_solution_serverless/ @elastic/appex-sharedux # Observability UI @@ -1352,6 +1359,9 @@ packages/kbn-monaco/src/esql @elastic/kibana-esql /x-pack/test/api_integration/deployment_agnostic/apis/observability/slo/ @elastic/obs-ux-management-team /x-pack/test/api_integration/deployment_agnostic/services/alerting_api @elastic/obs-ux-management-team /x-pack/test/api_integration/deployment_agnostic/services/slo_api @elastic/obs-ux-management-team +/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/ @elastic/obs-ux-management-team +/x-pack/test/api_integration/deployment_agnostic/services/synthetics_monitors @elastic/obs-ux-management-team +/x-pack/test/api_integration/deployment_agnostic/services/synthetics_private_location @elastic/obs-ux-management-team # Elastic Stack Monitoring /x-pack/test/monitoring_api_integration @elastic/stack-monitoring @@ -2013,7 +2023,7 @@ x-pack/test/api_integration/apis/management/index_management/inference_endpoints /x-pack/test/stack_functional_integration/apps/ccs @elastic/kibana-management /x-pack/test/functional/services/data_stream.ts @elastic/kibana-management /x-pack/test/functional/page_objects/watcher_page.ts @elastic/kibana-management -/x-pack/test/functional/page_objects/upgrade_assistant_page.ts @elastic/kibana-management +/x-pack/test/functional/page_objects/upgrade_assistant_page.ts @elastic/kibana-core /x-pack/test/functional/page_objects/snapshot_restore_page.ts @elastic/kibana-management /x-pack/test/functional/page_objects/rollup_page.ts @elastic/kibana-management /x-pack/test/functional/page_objects/ingest_pipelines_page.ts @elastic/kibana-management @@ -2036,7 +2046,7 @@ x-pack/test/api_integration/apis/management/index_management/inference_endpoints /x-pack/test/functional/apps/upgrade_assistant @elastic/kibana-core /x-pack/test/functional/apps/dev_tools @elastic/kibana-management /test/plugin_functional/test_suites/management @elastic/kibana-management -/x-pack/test/upgrade_assistant_integration @elastic/kibana-management +/x-pack/test/upgrade_assistant_integration @elastic/kibana-core /test/plugin_functional/plugins/management_test_plugin @elastic/kibana-management /test/functional/page_objects/management/*.ts @elastic/kibana-management /test/functional/page_objects/embedded_console.ts @elastic/kibana-management @@ -2122,36 +2132,37 @@ x-pack/test_serverless/functional/test_suites/security/index.mki_only.ts @elasti /x-pack/test/functional/es_archives/auditbeat/default @elastic/security-solution /x-pack/test/functional/es_archives/auditbeat/hosts @elastic/security-solution /x-pack/test_serverless/functional/page_objects/svl_management_page.ts @elastic/security-solution +/x-pack/test_serverless/functional/page_objects/svl_data_usage.ts @elastic/security-solution @elastic/obs-ai-assistant /x-pack/test_serverless/api_integration/test_suites/security @elastic/security-solution /x-pack/test_serverless/functional/test_suites/security/index.feature_flags.ts @elastic/security-solution /x-pack/test_serverless/functional/test_suites/security/index.ts @elastic/security-solution -#CC# /x-pack/plugins/security_solution/ @elastic/security-solution +#CC# /x-pack/solutions/security/plugins/security_solution/ @elastic/security-solution /x-pack/test/functional/es_archives/cases/signals/duplicate_ids @elastic/response-ops # Security Solution OpenAPI bundles -/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_* @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_endpoint_management_api_* @elastic/security-defend-workflows -/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_* @elastic/security-entity-analytics -/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_timeline_api_* @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_* @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_endpoint_management_api_* @elastic/security-defend-workflows -/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_* @elastic/security-entity-analytics -/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_timeline_api_* @elastic/security-threat-hunting-investigations +/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_* @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_endpoint_management_api_* @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_* @elastic/security-entity-analytics +/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_timeline_api_* @elastic/security-threat-hunting-investigations +/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_* @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_endpoint_management_api_* @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_* @elastic/security-entity-analytics +/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_timeline_api_* @elastic/security-threat-hunting-investigations # Security Solution Offering plugins # TODO: assign sub directories to sub teams -/x-pack/plugins/security_solution_ess/ @elastic/security-solution -/x-pack/plugins/security_solution_serverless/ @elastic/security-solution -/x-pack/plugins/security_solution/public/app/404.tsx @elastic/security-solution -/x-pack/plugins/security_solution/public/app/app.tsx @elastic/security-solution -/x-pack/plugins/security_solution/public/app/home @elastic/security-solution +/x-pack/solutions/security/plugins/security_solution_ess/ @elastic/security-solution +/x-pack/solutions/security/plugins/security_solution_serverless/ @elastic/security-solution +/x-pack/solutions/security/plugins/security_solution/public/app/404.tsx @elastic/security-solution +/x-pack/solutions/security/plugins/security_solution/public/app/app.tsx @elastic/security-solution +/x-pack/solutions/security/plugins/security_solution/public/app/home @elastic/security-solution # GenAI in Security Solution -/x-pack/plugins/security_solution/public/assistant @elastic/security-generative-ai -/x-pack/plugins/security_solution/public/attack_discovery @elastic/security-generative-ai +/x-pack/solutions/security/plugins/security_solution/public/assistant @elastic/security-generative-ai +/x-pack/solutions/security/plugins/security_solution/public/attack_discovery @elastic/security-generative-ai /x-pack/test/security_solution_cypress/cypress/e2e/ai_assistant @elastic/security-generative-ai -/x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery @elastic/security-generative-ai +/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery @elastic/security-generative-ai /x-pack/test/security_solution_cypress/cypress/e2e/automatic_import @elastic/security-scalability # Security Solution cross teams ownership @@ -2163,16 +2174,16 @@ x-pack/test_serverless/functional/test_suites/security/index.mki_only.ts @elasti /x-pack/test/security_solution_cypress/cypress/support @elastic/security-detections-response @elastic/security-threat-hunting /x-pack/test/security_solution_cypress/cypress/urls @elastic/security-threat-hunting-investigations @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/ecs @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/common/test @elastic/security-detections-response @elastic/security-threat-hunting +/x-pack/solutions/security/plugins/security_solution/common/ecs @elastic/security-threat-hunting-investigations +/x-pack/solutions/security/plugins/security_solution/common/test @elastic/security-detections-response @elastic/security-threat-hunting -/x-pack/plugins/security_solution/public/common/components/callouts @elastic/security-detections-response -/x-pack/plugins/security_solution/public/common/components/hover_actions @elastic/security-threat-hunting-explore @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/formatted_date/index.tsx @elastic/security-threat-hunting-explore @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/formatted_number/index.tsx @elastic/security-threat-hunting-explore @elastic/security-threat-hunting-investigations +/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts @elastic/security-detections-response +/x-pack/solutions/security/plugins/security_solution/public/common/components/hover_actions @elastic/security-threat-hunting-explore @elastic/security-threat-hunting-investigations +/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/index.tsx @elastic/security-threat-hunting-explore @elastic/security-threat-hunting-investigations +/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_number/index.tsx @elastic/security-threat-hunting-explore @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/server/routes @elastic/security-detections-response @elastic/security-threat-hunting -/x-pack/plugins/security_solution/server/utils @elastic/security-detections-response @elastic/security-threat-hunting +/x-pack/solutions/security/plugins/security_solution/server/routes @elastic/security-detections-response @elastic/security-threat-hunting +/x-pack/solutions/security/plugins/security_solution/server/utils @elastic/security-detections-response @elastic/security-threat-hunting x-pack/test/security_solution_api_integration/test_suites/detections_response/utils @elastic/security-detections-response x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry @elastic/security-detections-response x-pack/test/security_solution_api_integration/test_suites/detections_response/user_roles @elastic/security-detections-response @@ -2193,20 +2204,20 @@ x-pack/test/security_solution_api_integration/test_suites/sources @elastic/secur /x-pack/test/security_solution_cypress/cypress/tasks/login.ts @elastic/security-engineering-productivity /x-pack/test/security_solution_cypress/es_archives @elastic/security-engineering-productivity /x-pack/test/security_solution_playwright @elastic/security-engineering-productivity -/x-pack/plugins/security_solution/scripts/run_cypress @MadameSheema @patrykkopycinski @maximpn @banderror +/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress @MadameSheema @patrykkopycinski @maximpn @banderror ## Security Solution sub teams - Threat Hunting -/x-pack/plugins/security_solution/server/lib/siem_migrations @elastic/security-threat-hunting -/x-pack/plugins/security_solution/common/siem_migrations @elastic/security-threat-hunting -/x-pack/plugins/security_solution/public/siem_migrations @elastic/security-threat-hunting -/x-pack/plugins/security_solution/public/common/components/control_columns @elastic/security-threat-hunting +/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations @elastic/security-threat-hunting +/x-pack/solutions/security/plugins/security_solution/common/siem_migrations @elastic/security-threat-hunting +/x-pack/solutions/security/plugins/security_solution/public/siem_migrations @elastic/security-threat-hunting +/x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns @elastic/security-threat-hunting ## Security Solution Threat Hunting areas - Threat Hunting Investigations -/x-pack/plugins/security_solution/common/api/timeline @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/common/search_strategy/timeline @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/common/types/timeline @elastic/security-threat-hunting-investigations +/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/types/timeline @elastic/security-threat-hunting-investigations /x-pack/test/security_solution_cypress/cypress/e2e/investigations @elastic/security-threat-hunting-investigations /x-pack/test/security_solution_cypress/cypress/e2e/sourcerer/sourcerer_timeline.cy.ts @elastic/security-threat-hunting-investigations @@ -2214,46 +2225,46 @@ x-pack/test/security_solution_api_integration/test_suites/sources @elastic/secur 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/plugins/security_solution/common/timelines @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/alerts_viewer @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_action @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/event_details @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/events_viewer @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/markdown_editor @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/detections/components/alerts_kpis @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/detections/components/alerts_table @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/detections/components/alerts_info @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/flyout/document_details @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/flyout/shared @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/notes @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/resolver @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/threat_intelligence @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/timelines @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/header_actions @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/common/types/header_actions @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/flyout/network_details @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/flyout/rule_details @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/investigations @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/hooks/use_resolve_conflict.tsx @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/drag_and_drop @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/draggables @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/events_tab @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution_serverless/public/upselling/pages/threat_intelligence_paywall.tsx @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/mock/mock_timeline_control_columns.tsx @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/common/components/exit_full_screen @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/app/home/template_wrapper/timeline @elastic/security-threat-hunting-investigations - -/x-pack/plugins/security_solution/server/lib/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/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/event_details @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/markdown_editor @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/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/flyout/document_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/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 ## Security Solution Threat Hunting areas - Threat Hunting Explore -/x-pack/plugins/security_solution/common/api/tags @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/common/search_strategy/security_solution/matrix_histogram @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/common/search_strategy/security_solution/network @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/common/search_strategy/security_solution/user @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/common/api/tags @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/matrix_histogram @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/user @elastic/security-threat-hunting-explore /x-pack/test/security_solution_cypress/cypress/e2e/explore @elastic/security-threat-hunting-explore /x-pack/test/security_solution_cypress/cypress/screens/hosts @elastic/security-threat-hunting-explore @@ -2261,46 +2272,46 @@ x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout @elastic/ /x-pack/test/security_solution_cypress/cypress/tasks/hosts @elastic/security-threat-hunting-explore /x-pack/test/security_solution_cypress/cypress/tasks/network @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/app/actions @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/assets @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/app/solution_navigation/links @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/lib/clipboard @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/visualization_actions @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/accessibility @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.tsx @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/alert_count_by_status @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/charts @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/header_page @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/header_section @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/inspect @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/last_event_time @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/links @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/matrix_histogram @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/navigation @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/news_feed @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/overview_description_list @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/page @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/sidebar_header @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/tables @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/top_n @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/with_hover_actions @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/containers/matrix_histogram @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/lib/cell_actions @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/hooks/use_form_with_warn @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/cases @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/explore @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/overview @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/dashboards @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/onboarding @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/empty_page @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/empty_prompt @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution_serverless/public/components/dashboards_landing_callout @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/matrix_histogram @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/app/actions @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/assets @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/lib/clipboard @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.tsx @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/charts @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/header_section @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/inspect @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/last_event_time @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/links @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/overview_description_list @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/page @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/sidebar_header @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/tables @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/top_n @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/with_hover_actions @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/containers/matrix_histogram @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/lib/cell_actions @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warn @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/cases @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/explore @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/overview @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/dashboards @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/onboarding @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_page @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution_serverless/public/components/dashboards_landing_callout @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/matrix_histogram @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users @elastic/security-threat-hunting-explore /x-pack/test/functional/es_archives/auditbeat/overview @elastic/security-threat-hunting-explore /x-pack/test/functional/es_archives/auditbeat/users @elastic/security-threat-hunting-explore @@ -2335,81 +2346,81 @@ x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout @elastic/ /x-pack/plugins/stack_connectors/common/crowdstrike @elastic/security-defend-workflows ## Security Solution shared OAS schemas -/x-pack/plugins/security_solution/common/api/model @elastic/security-detection-rule-management @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/api/model @elastic/security-detection-rule-management @elastic/security-detection-engine ## Security Solution sub teams - Detection Rule Management -/x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema @elastic/security-detection-rule-management @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/common/api/detection_engine/rule_management @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/common/detection_engine/rule_management @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema @elastic/security-detection-rule-management @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management @elastic/security-detection-rule-management /x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/docs/rfcs/detection_response @elastic/security-detection-rule-management @elastic/security-detection-engine -/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/docs/rfcs/detection_response @elastic/security-detection-rule-management @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management @elastic/security-detection-rule-management /x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/common/components/health_truncate_text @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/common/components/links_to_docs @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/common/components/ml_popover @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/common/components/popover_items @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detection_engine/fleet_integrations @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detection_engine/endpoint_exceptions @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detection_engine/rule_management @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detections/components/callouts @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detections/components/rules @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview @elastic/security-detection-engine -/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detections/mitre @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/rules @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions @elastic/security-detection-rule-management - -/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring @elastic/security-detection-rule-management -/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema @elastic/security-detection-rule-management @elastic/security-detection-engine - -/x-pack/plugins/security_solution/scripts/openapi @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/common/components/health_truncate_text @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/common/components/popover_items @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/detection_engine/endpoint_exceptions @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules @elastic/security-detection-rule-management +/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/rules @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions @elastic/security-detection-rule-management + +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring @elastic/security-detection-rule-management +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema @elastic/security-detection-rule-management @elastic/security-detection-engine + +/x-pack/solutions/security/plugins/security_solution/scripts/openapi @elastic/security-detection-rule-management ## Security Solution sub teams - Detection Engine -/x-pack/plugins/security_solution/common/api/detection_engine/alert_tags @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/api/detection_engine/index_management @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/api/detection_engine/rule_preview @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/api/detection_engine/signals @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/cti @elastic/security-detection-engine -/x-pack/plugins/security_solution/common/field_maps @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_preview @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/cti @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/common/field_maps @elastic/security-detection-engine /x-pack/test/functional/es_archives/entity/risks @elastic/security-detection-engine /x-pack/test/functional/es_archives/entity/host_risk @elastic/security-detection-engine /x-pack/test/api_integration/apis/lists @elastic/security-detection-engine -/x-pack/plugins/security_solution/public/value_list @elastic/security-detection-engine -/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout @elastic/security-detection-engine - -/x-pack/plugins/security_solution/public/sourcerer @elastic/security-threat-hunting-investigations -/x-pack/plugins/security_solution/public/detection_engine/rule_creation @elastic/security-detection-engine -/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui @elastic/security-detection-engine -/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions @elastic/security-detection-engine -/x-pack/plugins/security_solution/public/detection_engine/rule_gaps @elastic/security-detection-engine -/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists @elastic/security-detection-engine -/x-pack/plugins/security_solution/public/detections/pages/alerts @elastic/security-detection-engine -/x-pack/plugins/security_solution/public/exceptions @elastic/security-detection-engine - -/x-pack/plugins/security_solution/server/lib/detection_engine/migrations @elastic/security-detection-engine -/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy @elastic/security-detection-engine -/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions @elastic/security-detection-engine -/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview @elastic/security-detection-engine -/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types @elastic/security-detection-engine -/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index @elastic/security-detection-engine -/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/public/value_list @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout @elastic/security-detection-engine + +/x-pack/solutions/security/plugins/security_solution/public/sourcerer @elastic/security-threat-hunting-investigations +/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui @elastic/security-detection-engine +/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 +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals @elastic/security-detection-engine /x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine @elastic/security-detection-engine @@ -2419,52 +2430,52 @@ x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout @elastic/ /x-pack/test/functional/es_archives/asset_criticality @elastic/security-detection-engine ## Security Threat Intelligence - Under Security Platform -/x-pack/plugins/security_solution/public/common/components/threat_match @elastic/security-detection-engine +/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match @elastic/security-detection-engine ## Security Solution sub teams - security-defend-workflows /x-pack/test/defend_workflows_cypress @elastic/security-defend-workflows /x-pack/test/api_integration/apis/osquery @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/management/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/common/lib/endpoint/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/common/components/endpoint/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/common/hooks/endpoint/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/common/mock/endpoint @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/common/endpoint/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/common/api/endpoint/ @elastic/security-defend-workflows -x-pack/plugins/security_solution/server/assistant/tools/defend_insights @elastic/security-defend-workflows -/x-pack/plugins/security_solution/server/endpoint/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/server/lists_integration/endpoint/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/server/lib/license/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/server/fleet_integration/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution/scripts/endpoint/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/management/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/common/endpoint/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/ @elastic/security-defend-workflows +x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/server/endpoint/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/server/lib/license/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/ @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/ @elastic/security-defend-workflows /x-pack/test/security_solution_endpoint/ @elastic/security-defend-workflows /x-pack/test/security_solution_api_integration/test_suites/edr_workflows/ @elastic/security-defend-workflows /x-pack/test_serverless/shared/lib/security/kibana_roles/ @elastic/security-defend-workflows -/x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management @elastic/security-defend-workflows -/x-pack/plugins/security_solution_serverless/public/upselling/pages/endpoint_management @elastic/security-defend-workflows -/x-pack/plugins/security_solution_serverless/server/endpoint @elastic/security-defend-workflows -x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/endpoint_management @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint @elastic/security-defend-workflows +x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights @elastic/security-defend-workflows x-pack/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts @elastic/security-defend-workflows x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights @elastic/security-defend-workflows x-pack/plugins/elastic_assistant/server/routes/defend_insights @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/common/components/response_actions @elastic/security-defend-workflows -/x-pack/plugins/security_solution_serverless/public/upselling/pages/osquery_automated_response_actions.tsx @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/osquery_automated_response_actions.tsx @elastic/security-defend-workflows ## Security Solution sub teams - security-telemetry (Data Engineering) -x-pack/plugins/security_solution/server/usage/ @elastic/security-data-analytics -x-pack/plugins/security_solution/server/lib/telemetry/ @elastic/security-data-analytics +x-pack/solutions/security/plugins/security_solution/server/usage/ @elastic/security-data-analytics +x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/ @elastic/security-data-analytics ## Security Solution sub teams - Entity Analytics -x-pack/plugins/security_solution/common/entity_analytics @elastic/security-entity-analytics -x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score @elastic/security-entity-analytics -x-pack/plugins/security_solution/public/entity_analytics @elastic/security-entity-analytics -x-pack/plugins/security_solution/server/lib/entity_analytics @elastic/security-entity-analytics -x-pack/plugins/security_solution/server/lib/risk_score @elastic/security-entity-analytics +x-pack/solutions/security/plugins/security_solution/common/entity_analytics @elastic/security-entity-analytics +x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score @elastic/security-entity-analytics +x-pack/solutions/security/plugins/security_solution/public/entity_analytics @elastic/security-entity-analytics +x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics @elastic/security-entity-analytics +x-pack/solutions/security/plugins/security_solution/server/lib/risk_score @elastic/security-entity-analytics x-pack/test/security_solution_api_integration/test_suites/entity_analytics @elastic/security-entity-analytics x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics @elastic/security-entity-analytics -x-pack/plugins/security_solution/public/flyout/entity_details @elastic/security-entity-analytics -x-pack/plugins/security_solution/common/api/entity_analytics @elastic/security-entity-analytics +x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details @elastic/security-entity-analytics +x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics @elastic/security-entity-analytics ## Security Solution sub teams - GenAI x-pack/test/security_solution_api_integration/test_suites/genai @elastic/security-generative-ai @@ -2475,26 +2486,26 @@ x-pack/test/automatic_import_api_integration @elastic/security-scalability # Security Defend Workflows - OSQuery Ownership /x-pack/test/osquery_cypress @elastic/security-defend-workflows /x-pack/plugins/osquery @elastic/security-defend-workflows -/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions @elastic/security-defend-workflows -/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions @elastic/security-defend-workflows -/x-pack/plugins/security_solution/public/detections/components/osquery @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_response_actions @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions @elastic/security-defend-workflows +/x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery @elastic/security-defend-workflows # Cloud Security Posture team ## Packages x-pack/packages/kbn-cloud-security-posture @elastic/kibana-cloud-security-posture -x-pack/packages/security-solution/distribution_bar @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/distribution_bar @elastic/kibana-cloud-security-posture ## Plugins x-pack/plugins/cloud_defend @elastic/kibana-cloud-security-posture x-pack/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture x-pack/plugins/kubernetes_security @elastic/kibana-cloud-security-posture x-pack/plugins/session_view @elastic/kibana-cloud-security-posture ## Security Solution sub teams -x-pack/plugins/security_solution/public/common/components/sessions_viewer @elastic/kibana-cloud-security-posture -x-pack/plugins/security_solution/public/cloud_defend @elastic/kibana-cloud-security-posture -x-pack/plugins/security_solution/public/cloud_security_posture @elastic/kibana-cloud-security-posture -x-pack/plugins/security_solution/public/kubernetes @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/security_solution/public/cloud_defend @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/security_solution/public/kubernetes @elastic/kibana-cloud-security-posture ## Fleet plugin (co-owned with Fleet team) x-pack/plugins/fleet/public/components/cloud_security_posture @elastic/fleet @elastic/kibana-cloud-security-posture x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/cloud_security_posture @elastic/fleet @elastic/kibana-cloud-security-posture @@ -2519,13 +2530,13 @@ x-pack/test/security_solution_cypress/cypress/e2e/cloud_security_posture/misconf x-pack/test/security_solution_cypress/cypress/e2e/cloud_security_posture/vulnerabilities_contextual_flyout.cy.ts @elastic/kibana-cloud-security-posture # Security Solution onboarding tour -/x-pack/plugins/security_solution/public/common/components/guided_onboarding @elastic/security-threat-hunting-explore +/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding @elastic/security-threat-hunting-explore # Security Service Integrations -x-pack/plugins/security_solution/common/security_integrations @elastic/security-service-integrations -x-pack/plugins/security_solution/public/security_integrations @elastic/security-service-integrations -x-pack/plugins/security_solution/server/security_integrations @elastic/security-service-integrations -x-pack/plugins/security_solution/server/lib/security_integrations @elastic/security-service-integrations +x-pack/solutions/security/plugins/security_solution/common/security_integrations @elastic/security-service-integrations +x-pack/solutions/security/plugins/security_solution/public/security_integrations @elastic/security-service-integrations +x-pack/solutions/security/plugins/security_solution/server/security_integrations @elastic/security-service-integrations +x-pack/solutions/security/plugins/security_solution/server/lib/security_integrations @elastic/security-service-integrations # Kibana design # scss overrides should be below this line for specificity @@ -2541,9 +2552,9 @@ x-pack/plugins/security_solution/server/lib/security_integrations @elastic/secur # Security design /x-pack/plugins/endpoint/**/*.scss @elastic/security-design -/x-pack/plugins/security_solution/**/*.scss @elastic/security-design -/x-pack/plugins/security_solution_ess/**/*.scss @elastic/security-design -/x-pack/plugins/security_solution_serverless/**/*.scss @elastic/security-design +/x-pack/solutions/security/plugins/security_solution/**/*.scss @elastic/security-design +/x-pack/solutions/security/plugins/security_solution_ess/**/*.scss @elastic/security-design +/x-pack/solutions/security/plugins/security_solution_serverless/**/*.scss @elastic/security-design # Logstash /x-pack/test/functional/es_archives/logstash/example_pipelines @elastic/logstash @@ -2605,7 +2616,6 @@ x-pack/plugins/observability_solution/observability_shared/public/components/pro /test/examples/state_sync/*.ts @elastic/appex-sharedux /test/examples/error_boundary/index.ts @elastic/appex-sharedux /test/examples/content_management/*.ts @elastic/appex-sharedux -/test/examples/bfetch_explorer/*.ts @elastic/appex-sharedux /test/api_integration/apis/guided_onboarding @elastic/appex-sharedux /x-pack/test/banners_functional @elastic/appex-sharedux /x-pack/test/custom_branding @elastic/appex-sharedux @@ -2647,6 +2657,734 @@ x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics /.github/workflows/oblt-github-commands @elastic/observablt-robots @elastic/kibana-operations /.github/workflows/undeploy-my-kibana.yml @elastic/observablt-robots @elastic/kibana-operations +# Sustainable kibana - Temporary placeholder for new folders +# To be removed as folders are moved into their new home. +# see https://github.com/elastic/kibana/pull/203682 + +src/core/packages/analytics/browser @elastic/kibana-core +src/core/packages/analytics/browser-internal @elastic/kibana-core +src/core/packages/analytics/server @elastic/kibana-core +src/core/packages/analytics/server-internal @elastic/kibana-core +src/core/packages/application/browser @elastic/kibana-core +src/core/packages/application/browser-internal @elastic/kibana-core +src/core/packages/application/common @elastic/kibana-core +src/core/packages/apps/browser-internal @elastic/kibana-core +src/core/packages/apps/server-internal @elastic/kibana-core +src/core/packages/base/browser-internal @elastic/kibana-core +src/core/packages/base/common @elastic/kibana-core +src/core/packages/base/common-internal @elastic/kibana-core +src/core/packages/base/server-internal @elastic/kibana-core +src/core/packages/capabilities/browser-internal @elastic/kibana-core +src/core/packages/capabilities/common @elastic/kibana-core +src/core/packages/capabilities/server @elastic/kibana-core +src/core/packages/capabilities/server-internal @elastic/kibana-core +src/core/packages/chrome/browser @elastic/appex-sharedux +src/core/packages/chrome/browser-internal @elastic/appex-sharedux +src/core/packages/config/server-internal @elastic/kibana-core +src/core/packages/custom-branding/browser @elastic/appex-sharedux +src/core/packages/custom-branding/browser-internal @elastic/appex-sharedux +src/core/packages/custom-branding/browser-mocks @elastic/appex-sharedux +src/core/packages/custom-branding/common @elastic/appex-sharedux +src/core/packages/custom-branding/server @elastic/appex-sharedux +src/core/packages/custom-branding/server-internal @elastic/appex-sharedux +src/core/packages/custom-branding/server-mocks @elastic/appex-sharedux +src/core/packages/deprecations/browser @elastic/kibana-core +src/core/packages/deprecations/browser-internal @elastic/kibana-core +src/core/packages/deprecations/common @elastic/kibana-core +src/core/packages/deprecations/server @elastic/kibana-core +src/core/packages/deprecations/server-internal @elastic/kibana-core +src/core/packages/doc-links/browser @elastic/kibana-core +src/core/packages/doc-links/browser-internal @elastic/kibana-core +src/core/packages/doc-links/server @elastic/kibana-core +src/core/packages/doc-links/server-internal @elastic/kibana-core +src/core/packages/elasticsearch/client-server-internal @elastic/kibana-core +src/core/packages/elasticsearch/server @elastic/kibana-core +src/core/packages/elasticsearch/server-internal @elastic/kibana-core +src/core/packages/environment/server-internal @elastic/kibana-core +src/core/packages/execution-context/browser @elastic/kibana-core +src/core/packages/execution-context/browser-internal @elastic/kibana-core +src/core/packages/execution-context/common @elastic/kibana-core +src/core/packages/execution-context/server @elastic/kibana-core +src/core/packages/execution-context/server-internal @elastic/kibana-core +src/core/packages/fatal-errors/browser @elastic/kibana-core +src/core/packages/fatal-errors/browser-internal @elastic/kibana-core +src/core/packages/feature-flags/browser @elastic/kibana-core +src/core/packages/feature-flags/browser-internal @elastic/kibana-core +src/core/packages/feature-flags/browser-mocks @elastic/kibana-core +src/core/packages/feature-flags/server @elastic/kibana-core +src/core/packages/feature-flags/server-internal @elastic/kibana-core +src/core/packages/feature-flags/server-mocks @elastic/kibana-core +src/core/packages/http/browser @elastic/kibana-core +src/core/packages/http/browser-internal @elastic/kibana-core +src/core/packages/http/common @elastic/kibana-core +src/core/packages/http/context-server-internal @elastic/kibana-core +src/core/packages/http/request-handler-context-server @elastic/kibana-core +src/core/packages/http/request-handler-context-server-internal @elastic/kibana-core +src/core/packages/http/resources-server @elastic/kibana-core +src/core/packages/http/resources-server-internal @elastic/kibana-core +src/core/packages/http/router-server-internal @elastic/kibana-core +src/core/packages/http/server @elastic/kibana-core +src/core/packages/http/server-internal @elastic/kibana-core +src/core/packages/http/server-utils @elastic/kibana-core +src/core/packages/i18n/browser @elastic/kibana-core +src/core/packages/i18n/browser-internal @elastic/kibana-core +src/core/packages/i18n/server @elastic/kibana-core +src/core/packages/i18n/server-internal @elastic/kibana-core +src/core/packages/injected-metadata/browser-internal @elastic/kibana-core +src/core/packages/injected-metadata/common-internal @elastic/kibana-core +src/core/packages/integrations/browser-internal @elastic/kibana-core +src/core/packages/lifecycle/browser @elastic/kibana-core +src/core/packages/lifecycle/browser-internal @elastic/kibana-core +src/core/packages/lifecycle/server @elastic/kibana-core +src/core/packages/lifecycle/server-internal @elastic/kibana-core +src/core/packages/logging/browser-internal @elastic/kibana-core +src/core/packages/logging/common-internal @elastic/kibana-core +src/core/packages/logging/server @elastic/kibana-core +src/core/packages/logging/server-internal @elastic/kibana-core +src/core/packages/metrics/collectors-server-internal @elastic/kibana-core +src/core/packages/metrics/server @elastic/kibana-core +src/core/packages/metrics/server-internal @elastic/kibana-core +src/core/packages/mount-utils/browser @elastic/kibana-core +src/core/packages/mount-utils/browser-internal @elastic/kibana-core +src/core/packages/node/server @elastic/kibana-core +src/core/packages/node/server-internal @elastic/kibana-core +src/core/packages/notifications/browser @elastic/kibana-core +src/core/packages/notifications/browser-internal @elastic/kibana-core +src/core/packages/overlays/browser @elastic/kibana-core +src/core/packages/overlays/browser-internal @elastic/kibana-core +src/core/packages/plugins/base-server-internal @elastic/kibana-core +src/core/packages/plugins/browser @elastic/kibana-core +src/core/packages/plugins/browser-internal @elastic/kibana-core +src/core/packages/plugins/contracts-browser @elastic/kibana-core +src/core/packages/plugins/contracts-server @elastic/kibana-core +src/core/packages/plugins/server @elastic/kibana-core +src/core/packages/plugins/server-internal @elastic/kibana-core +src/core/packages/preboot/server @elastic/kibana-core +src/core/packages/preboot/server-internal @elastic/kibana-core +src/core/packages/rendering/browser @elastic/kibana-core +src/core/packages/rendering/browser-internal @elastic/kibana-core +src/core/packages/rendering/server-internal @elastic/kibana-core +src/core/packages/root/browser-internal @elastic/kibana-core +src/core/packages/root/server-internal @elastic/kibana-core +src/core/packages/saved-objects/api-browser @elastic/kibana-core +src/core/packages/saved-objects/api-server @elastic/kibana-core +src/core/packages/saved-objects/api-server-internal @elastic/kibana-core +src/core/packages/saved-objects/base-server-internal @elastic/kibana-core +src/core/packages/saved-objects/browser @elastic/kibana-core +src/core/packages/saved-objects/browser-internal @elastic/kibana-core +src/core/packages/saved-objects/common @elastic/kibana-core +src/core/packages/saved-objects/import-export-server-internal @elastic/kibana-core +src/core/packages/saved-objects/migration-server-internal @elastic/kibana-core +src/core/packages/saved-objects/server @elastic/kibana-core +src/core/packages/saved-objects/server-internal @elastic/kibana-core +src/core/packages/saved-objects/utils-server @elastic/kibana-core +src/core/packages/security/browser @elastic/kibana-core +src/core/packages/security/browser-internal @elastic/kibana-core +src/core/packages/security/browser-mocks @elastic/kibana-core +src/core/packages/security/common @elastic/kibana-core @elastic/kibana-security +src/core/packages/security/server @elastic/kibana-core +src/core/packages/security/server-internal @elastic/kibana-core +src/core/packages/security/server-mocks @elastic/kibana-core +src/core/packages/status/common @elastic/kibana-core +src/core/packages/status/server @elastic/kibana-core +src/core/packages/status/server-internal @elastic/kibana-core +src/core/packages/test-helpers/deprecations-getters @elastic/kibana-core +src/core/packages/test-helpers/http-setup-browser @elastic/kibana-core +src/core/packages/test-helpers/so-type-serializer @elastic/kibana-core +src/core/packages/test-helpers/test-utils @elastic/kibana-core +src/core/packages/theme/browser @elastic/kibana-core +src/core/packages/theme/browser-internal @elastic/kibana-core +src/core/packages/ui-settings/browser @elastic/appex-sharedux +src/core/packages/ui-settings/browser-internal @elastic/appex-sharedux +src/core/packages/ui-settings/common @elastic/appex-sharedux +src/core/packages/ui-settings/server @elastic/appex-sharedux +src/core/packages/ui-settings/server-internal @elastic/appex-sharedux +src/core/packages/usage-data/base-server-internal @elastic/kibana-core +src/core/packages/usage-data/server @elastic/kibana-core +src/core/packages/usage-data/server-internal @elastic/kibana-core +src/core/packages/user-profile/browser @elastic/kibana-core +src/core/packages/user-profile/browser-internal @elastic/kibana-core +src/core/packages/user-profile/browser-mocks @elastic/kibana-core +src/core/packages/user-profile/common @elastic/kibana-core +src/core/packages/user-profile/server @elastic/kibana-core +src/core/packages/user-profile/server-internal @elastic/kibana-core +src/core/packages/user-profile/server-mocks @elastic/kibana-core +src/core/packages/user-settings/server @elastic/kibana-security +src/core/packages/user-settings/server-internal @elastic/kibana-security +src/core/packages/user-settings/server-mocks @elastic/kibana-security +src/platform/packages/private/analytics/utils/analytics_collection_utils @elastic/kibana-core +src/platform/packages/private/content-management/favorites/favorites_common @elastic/appex-sharedux +src/platform/packages/private/content-management/tabbed_table_list_view @elastic/appex-sharedux +src/platform/packages/private/default-nav/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations +src/platform/packages/private/default-nav/devtools @elastic/kibana-management +src/platform/packages/private/default-nav/management @elastic/kibana-management +src/platform/packages/private/default-nav/ml @elastic/ml-ui +src/platform/packages/private/kbn-apm-config-loader @elastic/kibana-core @vigneshshanmugam +src/platform/packages/private/kbn-config-mocks @elastic/kibana-core +src/platform/packages/private/kbn-esql-editor @elastic/kibana-esql +src/platform/packages/private/kbn-generate-csv @elastic/appex-sharedux +src/platform/packages/private/kbn-handlebars @elastic/kibana-security +src/platform/packages/private/kbn-hapi-mocks @elastic/kibana-core +src/platform/packages/private/kbn-health-gateway-server @elastic/kibana-core +src/platform/packages/private/kbn-item-buffer @elastic/appex-sharedux +src/platform/packages/private/kbn-language-documentation @elastic/kibana-esql +src/platform/packages/private/kbn-lens-formula-docs @elastic/kibana-visualizations +src/platform/packages/private/kbn-managed-content-badge @elastic/kibana-visualizations +src/platform/packages/private/kbn-management/settings/application @elastic/kibana-management +src/platform/packages/private/kbn-management/settings/components/field_category @elastic/kibana-management +src/platform/packages/private/kbn-management/settings/components/form @elastic/kibana-management +src/platform/packages/private/kbn-mapbox-gl @elastic/kibana-presentation +src/platform/packages/private/kbn-panel-loader @elastic/kibana-presentation +src/platform/packages/private/kbn-repo-packages @elastic/kibana-operations +src/platform/packages/private/kbn-reporting/common @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/csv @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/csv_common @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/pdf @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/pdf_common @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/png @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/png_common @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/get_csv_panel_actions @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/mocks_server @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/public @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/server @elastic/appex-sharedux +src/platform/packages/private/kbn-saved-objects-settings @elastic/appex-sharedux +src/platform/packages/private/kbn-screenshotting-server @elastic/appex-sharedux +src/platform/packages/private/kbn-sse-utils-server @elastic/obs-knowledge-team +src/platform/packages/private/kbn-timelion-grammar @elastic/kibana-visualizations +src/platform/packages/private/kbn-tinymath @elastic/kibana-visualizations +src/platform/packages/private/kbn-transpose-utils @elastic/kibana-visualizations +src/platform/packages/private/kbn-ui-shared-deps-npm @elastic/kibana-operations +src/platform/packages/private/kbn-ui-shared-deps-src @elastic/kibana-operations +src/platform/packages/private/kbn-unsaved-changes-badge @elastic/kibana-data-discovery +src/platform/packages/private/react/kibana_context/root @elastic/appex-sharedux +src/platform/packages/private/response-ops/rule_params @elastic/response-ops +src/platform/packages/private/serverless/project_switcher @elastic/appex-sharedux +src/platform/packages/private/serverless/settings/common @elastic/appex-sharedux @elastic/kibana-management +src/platform/packages/private/serverless/types @elastic/appex-sharedux +src/platform/packages/private/shared-ux/button/exit_full_screen @elastic/appex-sharedux +src/platform/packages/private/shared-ux/modal/tabbed @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/analytics_no_data/impl @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/analytics_no_data/mocks @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/analytics_no_data/types @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/kibana_no_data/impl @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/kibana_no_data/mocks @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/kibana_no_data/types @elastic/appex-sharedux +src/platform/packages/private/shared-ux/prompt/no_data_views/impl @elastic/appex-sharedux +src/platform/packages/private/shared-ux/prompt/no_data_views/mocks @elastic/appex-sharedux +src/platform/packages/private/shared-ux/table_persist @elastic/appex-sharedux +src/platform/packages/shared/chart_expressions/common @elastic/kibana-visualizations +src/platform/packages/shared/cloud @elastic/kibana-core +src/platform/packages/shared/content-management/content_editor @elastic/appex-sharedux +src/platform/packages/shared/content-management/content_insights/content_insights_public @elastic/appex-sharedux +src/platform/packages/shared/content-management/content_insights/content_insights_server @elastic/appex-sharedux +src/platform/packages/shared/content-management/favorites/favorites_public @elastic/appex-sharedux +src/platform/packages/shared/content-management/favorites/favorites_server @elastic/appex-sharedux +src/platform/packages/shared/content-management/table_list_view @elastic/appex-sharedux +src/platform/packages/shared/content-management/table_list_view_common @elastic/appex-sharedux +src/platform/packages/shared/content-management/table_list_view_table @elastic/appex-sharedux +src/platform/packages/shared/content-management/user_profiles @elastic/appex-sharedux +src/platform/packages/shared/deeplinks/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations +src/platform/packages/shared/deeplinks/devtools @elastic/kibana-management +src/platform/packages/shared/deeplinks/fleet @elastic/fleet +src/platform/packages/shared/deeplinks/management @elastic/kibana-management +src/platform/packages/shared/deeplinks/ml @elastic/ml-ui +src/platform/packages/shared/deeplinks/observability @elastic/obs-ux-management-team +src/platform/packages/shared/deeplinks/search @elastic/search-kibana +src/platform/packages/shared/deeplinks/security @elastic/security-solution +src/platform/packages/shared/deeplinks/shared @elastic/appex-sharedux +src/platform/packages/shared/home/sample_data_card @elastic/appex-sharedux +src/platform/packages/shared/home/sample_data_tab @elastic/appex-sharedux +src/platform/packages/shared/home/sample_data_types @elastic/appex-sharedux +src/platform/packages/shared/kbn-actions-types @elastic/response-ops +src/platform/packages/shared/kbn-alerting-types @elastic/response-ops +src/platform/packages/shared/kbn-alerts-as-data-utils @elastic/response-ops +src/platform/packages/shared/kbn-alerts-ui-shared @elastic/response-ops +src/platform/packages/shared/kbn-analytics @elastic/kibana-core +src/platform/packages/shared/kbn-apm-data-view @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-apm-utils @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-avc-banner @elastic/security-defend-workflows +src/platform/packages/shared/kbn-bfetch-error @elastic/appex-sharedux +src/platform/packages/shared/kbn-calculate-width-from-char-count @elastic/kibana-visualizations +src/platform/packages/shared/kbn-cases-components @elastic/response-ops +src/platform/packages/shared/kbn-cbor @elastic/kibana-operations +src/platform/packages/shared/kbn-cell-actions @elastic/security-threat-hunting-explore +src/platform/packages/shared/kbn-chart-icons @elastic/kibana-visualizations +src/platform/packages/shared/kbn-coloring @elastic/kibana-visualizations +src/platform/packages/shared/kbn-config @elastic/kibana-core +src/platform/packages/shared/kbn-config-schema @elastic/kibana-core +src/platform/packages/shared/kbn-content-management-utils @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-crypto @elastic/kibana-security +src/platform/packages/shared/kbn-crypto-browser @elastic/kibana-core +src/platform/packages/shared/kbn-custom-icons @elastic/obs-ux-logs-team +src/platform/packages/shared/kbn-data-service @elastic/kibana-visualizations @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-data-view-utils @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-datemath @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-discover-contextual-components @elastic/obs-ux-logs-team @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-discover-utils @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-doc-links @elastic/docs +src/platform/packages/shared/kbn-dom-drag-drop @elastic/kibana-visualizations @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-ebt-tools @elastic/kibana-core +src/platform/packages/shared/kbn-elastic-agent-utils @elastic/obs-ux-logs-team +src/platform/packages/shared/kbn-es-errors @elastic/kibana-core +src/platform/packages/shared/kbn-es-query @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-es-types @elastic/kibana-core @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-esql-ast @elastic/kibana-esql +src/platform/packages/shared/kbn-esql-utils @elastic/kibana-esql +src/platform/packages/shared/kbn-esql-validation-autocomplete @elastic/kibana-esql +src/platform/packages/shared/kbn-event-annotation-common @elastic/kibana-visualizations +src/platform/packages/shared/kbn-event-annotation-components @elastic/kibana-visualizations +src/platform/packages/shared/kbn-field-types @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-field-utils @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-flot-charts @elastic/kibana-presentation @elastic/stack-monitoring +src/platform/packages/shared/kbn-grouping @elastic/response-ops +src/platform/packages/shared/kbn-guided-onboarding @elastic/appex-sharedux +src/platform/packages/shared/kbn-i18n @elastic/kibana-core +src/platform/packages/shared/kbn-i18n-react @elastic/kibana-core +src/platform/packages/shared/kbn-interpreter @elastic/kibana-visualizations +src/platform/packages/shared/kbn-io-ts-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-lens-embeddable-utils @elastic/obs-ux-infra_services-team @elastic/kibana-visualizations +src/platform/packages/shared/kbn-logging @elastic/kibana-core +src/platform/packages/shared/kbn-logging-mocks @elastic/kibana-core +src/platform/packages/shared/kbn-management/cards_navigation @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/components/field_input @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/components/field_row @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/field_definition @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/section_registry @elastic/appex-sharedux @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/setting_ids @elastic/appex-sharedux @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/types @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/utilities @elastic/kibana-management +src/platform/packages/shared/kbn-monaco @elastic/appex-sharedux +src/platform/packages/shared/kbn-object-versioning @elastic/appex-sharedux +src/platform/packages/shared/kbn-object-versioning-utils @elastic/appex-sharedux +src/platform/packages/shared/kbn-openapi-common @elastic/security-detection-rule-management +src/platform/packages/shared/kbn-osquery-io-ts-types @elastic/security-asset-management +src/platform/packages/shared/kbn-profiling-utils @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-react-field @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-react-hooks @elastic/obs-ux-logs-team +src/platform/packages/shared/kbn-recently-accessed @elastic/appex-sharedux +src/platform/packages/shared/kbn-repo-info @elastic/kibana-operations +src/platform/packages/shared/kbn-resizable-layout @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-rison @elastic/kibana-operations +src/platform/packages/shared/kbn-router-to-openapispec @elastic/kibana-core +src/platform/packages/shared/kbn-router-utils @elastic/obs-ux-logs-team +src/platform/packages/shared/kbn-rrule @elastic/response-ops +src/platform/packages/shared/kbn-rule-data-utils @elastic/security-detections-response @elastic/response-ops @elastic/obs-ux-management-team +src/platform/packages/shared/kbn-safer-lodash-set @elastic/kibana-security +src/platform/packages/shared/kbn-search-api-panels @elastic/search-kibana +src/platform/packages/shared/kbn-search-connectors @elastic/search-kibana +src/platform/packages/shared/kbn-search-errors @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-search-response-warnings @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-search-types @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-security-hardening @elastic/kibana-security +src/platform/packages/shared/kbn-securitysolution-ecs @elastic/security-threat-hunting-explore +src/platform/packages/shared/kbn-securitysolution-es-utils @elastic/security-detection-engine +src/platform/packages/shared/kbn-securitysolution-io-ts-types @elastic/security-detection-engine +src/platform/packages/shared/kbn-securitysolution-io-ts-utils @elastic/security-detection-engine +src/platform/packages/shared/kbn-securitysolution-rules @elastic/security-detection-engine +src/platform/packages/shared/kbn-server-http-tools @elastic/kibana-core +src/platform/packages/shared/kbn-server-route-repository @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-server-route-repository-client @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-server-route-repository-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-shared-svg @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-shared-ux-utility @elastic/appex-sharedux +src/platform/packages/shared/kbn-sort-predicates @elastic/kibana-visualizations +src/platform/packages/shared/kbn-sse-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-sse-utils-client @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-std @elastic/kibana-core +src/platform/packages/shared/kbn-triggers-actions-ui-types @elastic/response-ops +src/platform/packages/shared/kbn-try-in-console @elastic/search-kibana +src/platform/packages/shared/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-ui-actions-browser @elastic/appex-sharedux +src/platform/packages/shared/kbn-ui-theme @elastic/kibana-operations +src/platform/packages/shared/kbn-unified-data-table @elastic/kibana-data-discovery @elastic/security-threat-hunting-investigations +src/platform/packages/shared/kbn-unified-doc-viewer @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-unified-field-list @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-unsaved-changes-prompt @elastic/kibana-management +src/platform/packages/shared/kbn-user-profile-components @elastic/kibana-security +src/platform/packages/shared/kbn-utility-types @elastic/kibana-core +src/platform/packages/shared/kbn-utility-types-jest @elastic/kibana-operations +src/platform/packages/shared/kbn-utils @elastic/kibana-operations +src/platform/packages/shared/kbn-visualization-ui-components @elastic/kibana-visualizations +src/platform/packages/shared/kbn-visualization-utils @elastic/kibana-visualizations +src/platform/packages/shared/kbn-zod @elastic/kibana-core +src/platform/packages/shared/kbn-zod-helpers @elastic/security-detection-rule-management +src/platform/packages/shared/presentation/presentation_containers @elastic/kibana-presentation +src/platform/packages/shared/presentation/presentation_publishing @elastic/kibana-presentation +src/platform/packages/shared/react/kibana_context/common @elastic/appex-sharedux +src/platform/packages/shared/react/kibana_context/render @elastic/appex-sharedux +src/platform/packages/shared/react/kibana_context/styled @elastic/appex-sharedux +src/platform/packages/shared/react/kibana_context/theme @elastic/appex-sharedux +src/platform/packages/shared/react/kibana_mount @elastic/appex-sharedux +src/platform/packages/shared/serverless/settings/observability_project @elastic/appex-sharedux @elastic/kibana-management @elastic/obs-ux-management-team +src/platform/packages/shared/serverless/settings/search_project @elastic/search-kibana @elastic/kibana-management +src/platform/packages/shared/serverless/settings/security_project @elastic/security-solution @elastic/kibana-management +src/platform/packages/shared/shared-ux/avatar/solution @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/button_toolbar @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/card/no_data/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/card/no_data/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/card/no_data/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/chrome/navigation @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/code_editor/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/code_editor/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/error_boundary @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/context @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/file_picker/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/file_upload/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/image/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/image/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/util @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/link/redirect_app/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/link/redirect_app/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/link/redirect_app/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/markdown/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/markdown/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/markdown/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/kibana_template/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/kibana_template/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/kibana_template/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data_config/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data_config/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data_config/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/solution_nav @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/prompt/no_data_views/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/prompt/not_found @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/router/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/storybook/mock @elastic/appex-sharedux +src/platform/plugins/private/advanced_settings @elastic/appex-sharedux @elastic/kibana-management +src/platform/plugins/private/event_annotation @elastic/kibana-visualizations +src/platform/plugins/private/event_annotation_listing @elastic/kibana-visualizations +src/platform/plugins/private/files_management @elastic/appex-sharedux +src/platform/plugins/private/ftr_apis @elastic/kibana-core +src/platform/plugins/private/image_embeddable @elastic/appex-sharedux +src/platform/plugins/private/input_control_vis @elastic/kibana-presentation +src/platform/plugins/private/interactive_setup @elastic/kibana-security +src/platform/plugins/private/kibana_overview @elastic/appex-sharedux +src/platform/plugins/private/kibana_usage_collection @elastic/kibana-core +src/platform/plugins/private/links @elastic/kibana-presentation +src/platform/plugins/private/maps_ems @elastic/kibana-presentation +src/platform/plugins/private/no_data_page @elastic/appex-sharedux +src/platform/plugins/private/presentation_panel @elastic/kibana-presentation +src/platform/plugins/private/url_forwarding @elastic/kibana-visualizations +src/platform/plugins/private/vis_default_editor @elastic/kibana-visualizations +src/platform/plugins/private/vis_type_markdown @elastic/kibana-presentation +src/platform/plugins/private/vis_types/gauge @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/heatmap @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/metric @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/pie @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/table @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/tagcloud @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/timelion @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/vega @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/vislib @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/xy @elastic/kibana-visualizations +src/platform/plugins/shared/ai_assistant_management/selection @elastic/obs-ai-assistant +src/platform/plugins/shared/bfetch @elastic/appex-sharedux +src/platform/plugins/shared/chart_expressions/expression_gauge @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_heatmap @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_legacy_metric @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_metric @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_partition_vis @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_tagcloud @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_xy @elastic/kibana-visualizations +src/platform/plugins/shared/charts @elastic/kibana-visualizations +src/platform/plugins/shared/console @elastic/kibana-management +src/platform/plugins/shared/content_management @elastic/appex-sharedux +src/platform/plugins/shared/controls @elastic/kibana-presentation +src/platform/plugins/shared/custom_integrations @elastic/fleet +src/platform/plugins/shared/dashboard @elastic/kibana-presentation +src/platform/plugins/shared/data @elastic/kibana-visualizations @elastic/kibana-data-discovery +src/platform/plugins/shared/data_view_editor @elastic/kibana-data-discovery +src/platform/plugins/shared/data_view_field_editor @elastic/kibana-data-discovery +src/platform/plugins/shared/data_view_management @elastic/kibana-data-discovery +src/platform/plugins/shared/data_views @elastic/kibana-data-discovery +src/platform/plugins/shared/dev_tools @elastic/kibana-management +src/platform/plugins/shared/discover @elastic/kibana-data-discovery +src/platform/plugins/shared/discover_shared @elastic/kibana-data-discovery @elastic/obs-ux-logs-team +src/platform/plugins/shared/embeddable @elastic/kibana-presentation +src/platform/plugins/shared/es_ui_shared @elastic/kibana-management +src/platform/plugins/shared/esql @elastic/kibana-esql +src/platform/plugins/shared/esql_datagrid @elastic/kibana-esql +src/platform/plugins/shared/expression_error @elastic/kibana-presentation +src/platform/plugins/shared/expression_image @elastic/kibana-presentation +src/platform/plugins/shared/expression_metric @elastic/kibana-presentation +src/platform/plugins/shared/expression_repeat_image @elastic/kibana-presentation +src/platform/plugins/shared/expression_reveal_image @elastic/kibana-presentation +src/platform/plugins/shared/expression_shape @elastic/kibana-presentation +src/platform/plugins/shared/expressions @elastic/kibana-visualizations +src/platform/plugins/shared/field_formats @elastic/kibana-data-discovery +src/platform/plugins/shared/files @elastic/appex-sharedux +src/platform/plugins/shared/guided_onboarding @elastic/appex-sharedux +src/platform/plugins/shared/home @elastic/appex-sharedux +src/platform/plugins/shared/inspector @elastic/kibana-presentation +src/platform/plugins/shared/kibana_react @elastic/appex-sharedux +src/platform/plugins/shared/kibana_utils @elastic/appex-sharedux +src/platform/plugins/shared/management @elastic/kibana-management +src/platform/plugins/shared/navigation @elastic/appex-sharedux +src/platform/plugins/shared/newsfeed @elastic/kibana-core +src/platform/plugins/shared/presentation_util @elastic/kibana-presentation +src/platform/plugins/shared/saved_objects @elastic/appex-sharedux +src/platform/plugins/shared/saved_objects_finder @elastic/kibana-data-discovery +src/platform/plugins/shared/saved_objects_management @elastic/kibana-core +src/platform/plugins/shared/saved_objects_tagging_oss @elastic/appex-sharedux +src/platform/plugins/shared/saved_search @elastic/kibana-data-discovery +src/platform/plugins/shared/screenshot_mode @elastic/appex-sharedux +src/platform/plugins/shared/share @elastic/appex-sharedux +src/platform/plugins/shared/telemetry @elastic/kibana-core +src/platform/plugins/shared/telemetry_collection_manager @elastic/kibana-core +src/platform/plugins/shared/telemetry_management_section @elastic/kibana-core +src/platform/plugins/shared/ui_actions @elastic/appex-sharedux +src/platform/plugins/shared/ui_actions_enhanced @elastic/appex-sharedux +src/platform/plugins/shared/unified_doc_viewer @elastic/kibana-data-discovery +src/platform/plugins/shared/unified_histogram @elastic/kibana-data-discovery +src/platform/plugins/shared/unified_search @elastic/kibana-visualizations +src/platform/plugins/shared/usage_collection @elastic/kibana-core +src/platform/plugins/shared/vis_types/timeseries @elastic/kibana-visualizations +src/platform/plugins/shared/visualizations @elastic/kibana-visualizations +x-pack/platform/packages/private/kbn-alerting-state-types @elastic/response-ops +x-pack/platform/packages/private/kbn-infra-forge @elastic/obs-ux-management-team +x-pack/platform/packages/private/kbn-random-sampling @elastic/kibana-visualizations +x-pack/platform/packages/private/maps/vector_tile_utils @elastic/kibana-presentation +x-pack/platform/packages/private/ml/agg_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/aiops_change_point_detection @elastic/ml-ui +x-pack/platform/packages/private/ml/aiops_components @elastic/ml-ui +x-pack/platform/packages/private/ml/aiops_test_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/cancellable_search @elastic/ml-ui +x-pack/platform/packages/private/ml/category_validator @elastic/ml-ui +x-pack/platform/packages/private/ml/creation_wizard_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/data_frame_analytics_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/data_grid @elastic/ml-ui +x-pack/platform/packages/private/ml/data_view_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/date_picker @elastic/ml-ui +x-pack/platform/packages/private/ml/date_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/field_stats_flyout @elastic/ml-ui +x-pack/platform/packages/private/ml/in_memory_table @elastic/ml-ui +x-pack/platform/packages/private/ml/inference_integration_flyout @elastic/ml-ui +x-pack/platform/packages/private/ml/is_defined @elastic/ml-ui +x-pack/platform/packages/private/ml/is_populated_object @elastic/ml-ui +x-pack/platform/packages/private/ml/json_schemas @elastic/ml-ui +x-pack/platform/packages/private/ml/kibana_theme @elastic/ml-ui +x-pack/platform/packages/private/ml/local_storage @elastic/ml-ui +x-pack/platform/packages/private/ml/nested_property @elastic/ml-ui +x-pack/platform/packages/private/ml/number_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/parse_interval @elastic/ml-ui +x-pack/platform/packages/private/ml/query_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/route_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/string_hash @elastic/ml-ui +x-pack/platform/packages/private/ml/time_buckets @elastic/ml-ui +x-pack/platform/packages/private/ml/ui_actions @elastic/ml-ui +x-pack/platform/packages/private/ml/url_state @elastic/ml-ui +x-pack/platform/packages/private/ml/validators @elastic/ml-ui +x-pack/platform/packages/private/rollup @elastic/kibana-management +x-pack/platform/packages/private/security/authorization_core @elastic/kibana-security +x-pack/platform/packages/private/security/authorization_core_common @elastic/kibana-security +x-pack/platform/packages/private/security/role_management_model @elastic/kibana-security +x-pack/platform/packages/private/security/ui_components @elastic/kibana-security +x-pack/platform/packages/shared/ai-infra/inference-common @elastic/appex-ai-infra +x-pack/platform/packages/shared/ai-infra/product-doc-common @elastic/appex-ai-infra +x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared @elastic/kibana-management +x-pack/platform/packages/shared/index-management/index_management_shared_types @elastic/kibana-management +x-pack/platform/packages/shared/kbn-ai-assistant @elastic/search-kibana +x-pack/platform/packages/shared/kbn-ai-assistant-common @elastic/search-kibana +x-pack/platform/packages/shared/kbn-alerting-comparators @elastic/response-ops +x-pack/platform/packages/shared/kbn-cloud-security-posture/common @elastic/kibana-cloud-security-posture +x-pack/platform/packages/shared/kbn-data-forge @elastic/obs-ux-management-team +x-pack/platform/packages/shared/kbn-elastic-assistant @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-elastic-assistant-common @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-entities-schema @elastic/obs-entities +x-pack/platform/packages/shared/kbn-langchain @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-slo-schema @elastic/obs-ux-management-team +x-pack/platform/packages/shared/ml/aiops_common @elastic/ml-ui +x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis @elastic/ml-ui +x-pack/platform/packages/shared/ml/aiops_log_rate_analysis @elastic/ml-ui +x-pack/platform/packages/shared/ml/anomaly_utils @elastic/ml-ui +x-pack/platform/packages/shared/ml/chi2test @elastic/ml-ui +x-pack/platform/packages/shared/ml/error_utils @elastic/ml-ui +x-pack/platform/packages/shared/ml/random_sampler_utils @elastic/ml-ui +x-pack/platform/packages/shared/ml/response_stream @elastic/ml-ui +x-pack/platform/packages/shared/ml/runtime_field_utils @elastic/ml-ui +x-pack/platform/packages/shared/ml/trained_models_utils @elastic/ml-ui +x-pack/platform/packages/shared/observability/alerting_rule_utils @elastic/obs-ux-management-team +x-pack/platform/packages/shared/security/api_key_management @elastic/kibana-security +x-pack/platform/packages/shared/security/form_components @elastic/kibana-security +x-pack/platform/packages/shared/security/plugin_types_common @elastic/kibana-security +x-pack/platform/packages/shared/security/plugin_types_public @elastic/kibana-security +x-pack/platform/packages/shared/security/plugin_types_server @elastic/kibana-security +x-pack/platform/plugins/private/banners @elastic/appex-sharedux +x-pack/platform/plugins/private/canvas @elastic/kibana-presentation +x-pack/platform/plugins/private/cloud_integrations/cloud_chat @elastic/kibana-core +x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration @elastic/kibana-management +x-pack/platform/plugins/private/cloud_integrations/cloud_full_story @elastic/kibana-core +x-pack/platform/plugins/private/cloud_integrations/cloud_links @elastic/kibana-core +x-pack/platform/plugins/private/cross_cluster_replication @elastic/kibana-management +x-pack/platform/plugins/private/custom_branding @elastic/appex-sharedux +x-pack/platform/plugins/private/data_usage @elastic/obs-ai-assistant @elastic/security-solution +x-pack/platform/plugins/private/data_visualizer @elastic/ml-ui +x-pack/platform/plugins/private/discover_enhanced @elastic/kibana-data-discovery +x-pack/platform/plugins/private/drilldowns/url_drilldown @elastic/appex-sharedux +x-pack/platform/plugins/private/file_upload @elastic/kibana-presentation @elastic/ml-ui +x-pack/platform/plugins/private/global_search_bar @elastic/appex-sharedux +x-pack/platform/plugins/private/global_search_providers @elastic/appex-sharedux +x-pack/platform/plugins/private/graph @elastic/kibana-visualizations +x-pack/platform/plugins/private/grokdebugger @elastic/kibana-management +x-pack/platform/plugins/private/index_lifecycle_management @elastic/kibana-management +x-pack/platform/plugins/private/license_api_guard @elastic/kibana-management +x-pack/platform/plugins/private/logstash @elastic/logstash +x-pack/platform/plugins/private/monitoring @elastic/stack-monitoring +x-pack/platform/plugins/private/monitoring_collection @elastic/stack-monitoring +x-pack/platform/plugins/private/painless_lab @elastic/kibana-management +x-pack/platform/plugins/private/remote_clusters @elastic/kibana-management +x-pack/platform/plugins/private/reporting @elastic/appex-sharedux +x-pack/platform/plugins/private/rollup @elastic/kibana-management +x-pack/platform/plugins/private/runtime_fields @elastic/kibana-management +x-pack/platform/plugins/private/saved_objects_tagging @elastic/appex-sharedux +x-pack/platform/plugins/private/snapshot_restore @elastic/kibana-management +x-pack/platform/plugins/private/telemetry_collection_xpack @elastic/kibana-core +x-pack/platform/plugins/private/transform @elastic/ml-ui +x-pack/platform/plugins/private/upgrade_assistant @elastic/kibana-core +x-pack/platform/plugins/private/watcher @elastic/kibana-management +x-pack/platform/plugins/shared/actions @elastic/response-ops +x-pack/platform/plugins/shared/ai_infra/llm_tasks @elastic/appex-ai-infra +x-pack/platform/plugins/shared/ai_infra/product_doc_base @elastic/appex-ai-infra +x-pack/platform/plugins/shared/aiops @elastic/ml-ui +x-pack/platform/plugins/shared/alerting @elastic/response-ops +x-pack/platform/plugins/shared/cases @elastic/response-ops +x-pack/platform/plugins/shared/cloud @elastic/kibana-core +x-pack/platform/plugins/shared/cloud_integrations/cloud_experiments @elastic/kibana-core +x-pack/platform/plugins/shared/dashboard_enhanced @elastic/kibana-presentation +x-pack/platform/plugins/shared/embeddable_enhanced @elastic/kibana-presentation +x-pack/platform/plugins/shared/encrypted_saved_objects @elastic/kibana-security +x-pack/platform/plugins/shared/entity_manager @elastic/obs-entities +x-pack/platform/plugins/shared/event_log @elastic/response-ops +x-pack/platform/plugins/shared/features @elastic/kibana-core +x-pack/platform/plugins/shared/fields_metadata @elastic/obs-ux-logs-team +x-pack/platform/plugins/shared/fleet @elastic/fleet +x-pack/platform/plugins/shared/global_search @elastic/appex-sharedux +x-pack/platform/plugins/shared/index_management @elastic/kibana-management +x-pack/platform/plugins/shared/inference @elastic/appex-ai-infra +x-pack/platform/plugins/shared/ingest_pipelines @elastic/kibana-management +x-pack/platform/plugins/shared/integration_assistant @elastic/security-scalability +x-pack/platform/plugins/shared/lens @elastic/kibana-visualizations +x-pack/platform/plugins/shared/license_management @elastic/kibana-management +x-pack/platform/plugins/shared/licensing @elastic/kibana-core +x-pack/platform/plugins/shared/maps @elastic/kibana-presentation +x-pack/platform/plugins/shared/ml @elastic/ml-ui +x-pack/platform/plugins/shared/notifications @elastic/appex-sharedux +x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant @elastic/obs-ai-assistant +x-pack/platform/plugins/shared/osquery @elastic/security-defend-workflows +x-pack/platform/plugins/shared/rule_registry @elastic/response-ops @elastic/obs-ux-management-team +x-pack/platform/plugins/shared/screenshotting @elastic/kibana-reporting-services +x-pack/platform/plugins/shared/searchprofiler @elastic/kibana-management +x-pack/platform/plugins/shared/security @elastic/kibana-security +x-pack/platform/plugins/shared/serverless @elastic/appex-sharedux +x-pack/platform/plugins/shared/spaces @elastic/kibana-security +x-pack/platform/plugins/shared/stack_alerts @elastic/response-ops +x-pack/platform/plugins/shared/stack_connectors @elastic/response-ops +x-pack/platform/plugins/shared/task_manager @elastic/response-ops +x-pack/platform/plugins/shared/triggers_actions_ui @elastic/response-ops +x-pack/solutions/observability/packages/alert_details @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/alerting_test_data @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/get_padded_alert_time_range_util @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/kbn-alerts-grouping @elastic/response-ops +x-pack/solutions/observability/packages/kbn-apm-types @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/packages/kbn-custom-integrations @elastic/obs-ux-logs-team +x-pack/solutions/observability/packages/kbn-investigation-shared @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/kbn-timerange @elastic/obs-ux-logs-team +x-pack/solutions/observability/packages/kbn-xstate-utils @elastic/obs-ux-logs-team +x-pack/solutions/observability/packages/logs_overview @elastic/obs-ux-logs-team +x-pack/solutions/observability/packages/observability_ai/observability_ai_common @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/observability_ai/observability_ai_server @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/observability_utils/observability_utils_browser @elastic/observability-ui +x-pack/solutions/observability/packages/observability_utils/observability_utils_common @elastic/observability-ui +x-pack/solutions/observability/packages/observability_utils/observability_utils_server @elastic/observability-ui +x-pack/solutions/observability/packages/synthetics_test_data @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/apm @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/apm_data_access @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/data_quality @elastic/obs-ux-logs-team +x-pack/solutions/observability/plugins/dataset_quality @elastic/obs-ux-logs-team +x-pack/solutions/observability/plugins/entities_data_access @elastic/obs-entities +x-pack/solutions/observability/plugins/entity_manager_app @elastic/obs-entities +x-pack/solutions/observability/plugins/exploratory_view @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/infra @elastic/obs-ux-logs-team @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/inventory @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/investigate @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/investigate_app @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/logs_explorer @elastic/obs-ux-logs-team +x-pack/solutions/observability/plugins/metrics_data_access @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/observability @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/observability_ai_assistant_app @elastic/obs-ai-assistant +x-pack/solutions/observability/plugins/observability_ai_assistant_management @elastic/obs-ai-assistant +x-pack/solutions/observability/plugins/observability_logs_explorer @elastic/obs-ux-logs-team +x-pack/solutions/observability/plugins/observability_onboarding @elastic/obs-ux-logs-team @elastic/obs-ux-onboarding-team +x-pack/solutions/observability/plugins/observability_shared @elastic/observability-ui +x-pack/solutions/observability/plugins/profiling @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/profiling_data_access @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/serverless_observability @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/slo @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/streams @elastic/streams-program-team +x-pack/solutions/observability/plugins/streams_app @elastic/streams-program-team +x-pack/solutions/observability/plugins/synthetics @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/uptime @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/ux @elastic/obs-ux-infra_services-team +x-pack/solutions/search/packages/kbn-ipynb @elastic/search-kibana +x-pack/solutions/search/packages/kbn-search-api-keys-components @elastic/search-kibana +x-pack/solutions/search/packages/kbn-search-api-keys-server @elastic/search-kibana +x-pack/solutions/search/packages/kbn-search-index-documents @elastic/search-kibana +x-pack/solutions/search/packages/search/shared_ui @elastic/search-kibana +x-pack/solutions/search/plugins/enterprise_search @elastic/search-kibana +x-pack/solutions/search/plugins/search_assistant @elastic/search-kibana +x-pack/solutions/search/plugins/search_connectors @elastic/search-kibana +x-pack/solutions/search/plugins/search_homepage @elastic/search-kibana +x-pack/solutions/search/plugins/search_indices @elastic/search-kibana +x-pack/solutions/search/plugins/search_inference_endpoints @elastic/search-kibana +x-pack/solutions/search/plugins/search_notebooks @elastic/search-kibana +x-pack/solutions/search/plugins/search_playground @elastic/search-kibana +x-pack/solutions/search/plugins/search_solution/search_navigation @elastic/search-kibana +x-pack/solutions/search/plugins/serverless_search @elastic/search-kibana +x-pack/solutions/security/packages/data_table @elastic/security-threat-hunting-investigations +x-pack/solutions/security/packages/distribution_bar @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/features @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/kbn-cloud-security-posture/graph @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/kbn-cloud-security-posture/public @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/data-stream-adapter @elastic/security-threat-hunting +x-pack/solutions/security/packages/expandable-flyout @elastic/security-threat-hunting-investigations +x-pack/solutions/security/packages/index-adapter @elastic/security-threat-hunting +x-pack/solutions/security/packages/kbn-securitysolution-autocomplete @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-endpoint-exceptions-common @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-exception-list-components @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-exceptions-common @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-hook-utils @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-io-ts-alerting-types @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-io-ts-list-types @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-list-api @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-list-constants @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-list-hooks @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-list-utils @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-lists-common @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-t-grid @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-utils @elastic/security-detection-engine +x-pack/solutions/security/packages/navigation @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/side_nav @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/upselling @elastic/security-threat-hunting-explore +x-pack/solutions/security/plugins/asset_inventory @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/cloud_defend @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore +x-pack/solutions/security/plugins/elastic_assistant @elastic/security-generative-ai +x-pack/solutions/security/plugins/kubernetes_security @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/lists @elastic/security-detection-engine +x-pack/solutions/security/solutions/security/plugins/security_solution @elastic/security-solution +x-pack/solutions/security/solutions/security/plugins/security_solution_ess @elastic/security-solution +x-pack/solutions/security/solutions/security/plugins/security_solution_serverless @elastic/security-solution +x-pack/solutions/security/plugins/session_view @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/threat_intelligence @elastic/security-threat-hunting-investigations +x-pack/solutions/security/plugins/timelines @elastic/security-threat-hunting-investigations + #### ## These rules are always last so they take ultimate priority over everything else #### diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index e7120dc82fd7d..8ad946732714b 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -74,16 +74,16 @@ paths-ignore: - scripts - test - x-pack/plugins/canvas/scripts - - x-pack/plugins/cloud_security_posture/common/scripts - - x-pack/plugins/elastic_assistant/scripts + - x-pack/solutions/security/plugins/cloud_security_posture/common/scripts + - x-pack/solutions/security/plugins/elastic_assistant/scripts - x-pack/plugins/event_log/scripts - x-pack/plugins/fleet/scripts - x-pack/plugins/lists/scripts - x-pack/plugins/lists/server/scripts - x-pack/plugins/observability_solution/*/scripts - - x-pack/plugins/osquery/scripts + - x-pack/platform/plugins/shared/osquery/scripts - x-pack/plugins/rule_registry/scripts - - x-pack/plugins/security_solution/scripts - - x-pack/plugins/threat_intelligence/scripts + - x-pack/solutions/security/plugins/security_solution/scripts + - x-pack/solutions/security/plugins/threat_intelligence/scripts - x-pack/scripts - x-pack/test diff --git a/.github/paths-labeller.yml b/.github/paths-labeller.yml index dbbefda24c9ac..bc67d3a6f6d93 100644 --- a/.github/paths-labeller.yml +++ b/.github/paths-labeller.yml @@ -14,23 +14,23 @@ - 'packages/kbn-apm-synthtrace/**/*.*' - 'packages/kbn-apm-synthtrace-client/**/*.*' - 'packages/kbn-apm-utils/**/*.*' - - 'x-pack/plugins/observability_solution/ux/**/*.*' + - 'x-pack/solutions/observability/plugins/ux/**/*.*' - 'Team:Fleet': - 'x-pack/plugins/fleet/**/*.*' - 'x-pack/test/fleet_api_integration/**/*.*' - 'Team:obs-ux-management': - - 'x-pack/plugins/observability_solution/observability/**/*.*' - - 'x-pack/plugins/observability_solution/slo/**/*.*' - - 'x-pack/plugins/observability_solution/synthetics/**/*.*' - - 'x-pack/plugins/observability_solution/exploratory_view/**/*.*' + - 'x-pack/solutions/observability/plugins/observability/**/*.*' + - 'x-pack/solutions/observability/plugins/slo/**/*.*' + - 'x-pack/solutions/observability/plugins/synthetics/**/*.*' + - 'x-pack/solutions/observability/plugins/exploratory_view/**/*.*' - 'Team:Obs AI Assistant': - - 'x-pack/plugins/observability_solution/observability_ai_assistant/**/*.*' + - 'x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/**/*.*' - 'x-pack/plugins/observability_solution/observability_ai_assistant_*/**/*.*' - 'x-pack/test/observability_ai_assistant_api_integration/**/*.*' - 'x-pack/test/observability_ai_assistant_functional/**/*.*' - 'ci:project-deploy-observability': - 'packages/kbn-apm-*/**/*.*' - 'x-pack/plugins/observability_solution/**/*.*' - - 'x-pack/plugins/serverless_observability/**/*.*' + - 'x-pack/solutions/observability/plugins/serverless_observability/**/*.*' - 'x-pack/test/apm_api_integration/**/*.*' - 'x-pack/test/observability_*/**/*.*' diff --git a/.gitignore b/.gitignore index be8d495f95f1d..18382409725a1 100644 --- a/.gitignore +++ b/.gitignore @@ -98,14 +98,14 @@ npm-debug.log* # transpiled cypress config x-pack/plugins/fleet/cypress.config.d.ts x-pack/plugins/fleet/cypress.config.js -x-pack/plugins/osquery/cypress.config.d.ts -x-pack/plugins/osquery/cypress.config.js +x-pack/platform/plugins/shared/osquery/cypress.config.d.ts +x-pack/platform/plugins/shared/osquery/cypress.config.js x-pack/plugins/enterprise_search/cypress.config.d.ts x-pack/plugins/enterprise_search/cypress.config.js -x-pack/plugins/security_solution/public/management/cypress.config.d.ts -x-pack/plugins/security_solution/public/management/cypress.config.js -x-pack/plugins/security_solution/public/management/cypress_endpoint.config.d.ts -x-pack/plugins/security_solution/public/management/cypress_endpoint.config.js +x-pack/solutions/security/plugins/security_solution/public/management/cypress.config.d.ts +x-pack/solutions/security/plugins/security_solution/public/management/cypress.config.js +x-pack/solutions/security/plugins/security_solution/public/management/cypress_endpoint.config.d.ts +x-pack/solutions/security/plugins/security_solution/public/management/cypress_endpoint.config.js # release notes script output report.csv diff --git a/.i18nrc.json b/.i18nrc.json index c11b622291838..63cbc62d13650 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -1,19 +1,19 @@ { "paths": { "advancedSettings": "src/plugins/advanced_settings", - "aiAssistantManagementSelection": "src/plugins/ai_assistant_management/selection", + "aiAssistantManagementSelection": "src/platform/plugins/shared/ai_assistant_management/selection", "alerts": "packages/kbn-alerts/src", "alertsUIShared": "packages/kbn-alerts-ui-shared/src", "alertingTypes": "packages/kbn-alerting-types", "apmOss": "src/plugins/apm_oss", "autocomplete": "packages/kbn-securitysolution-autocomplete/src", - "avcBanner": "packages/kbn-avc-banner/src", + "avcBanner": "src/platform/packages/shared/kbn-avc-banner/src", "bfetch": "src/plugins/bfetch", "bfetchError": "packages/kbn-bfetch-error", "cases": ["packages/kbn-cases-components"], - "cellActions": "packages/kbn-cell-actions", + "cellActions": "src/platform/packages/shared/kbn-cell-actions", "charts": "src/plugins/charts", - "console": "src/plugins/console", + "console": "src/platform/plugins/shared/console", "contentManagement": "packages/content-management", "core": ["src/core", "packages/core"], "customIntegrations": "src/plugins/custom_integrations", @@ -23,13 +23,13 @@ "domDragDrop": "packages/kbn-dom-drag-drop", "controls": "src/plugins/controls", "data": "src/plugins/data", - "observabilityAlertDetails": "x-pack/packages/observability/alert_details", + "observabilityAlertDetails": "x-pack/solutions/observability/packages/alert_details", "dataViews": "src/plugins/data_views", "defaultNavigation": [ "packages/default-nav", "src/platform/packages/private/default-nav" ], - "devTools": "src/plugins/dev_tools", + "devTools": "src/platform/plugins/shared/dev_tools", "discover": ["src/plugins/discover", "packages/kbn-discover-utils", "packages/kbn-discover-contextual-components"], "savedSearch": "src/plugins/saved_search", "embeddableApi": "src/plugins/embeddable", @@ -37,7 +37,7 @@ "embeddableExamples": "examples/embeddable_examples", "esQuery": "packages/kbn-es-query/src", "kbnGridLayout": "packages/kbn-grid-layout", - "esUi": "src/plugins/es_ui_shared", + "esUi": "src/platform/plugins/shared/es_ui_shared", "expandableFlyout": "packages/kbn-expandable-flyout", "expressionError": "src/plugins/expression_error", "expressionGauge": "src/plugins/chart_expressions/expression_gauge", @@ -90,8 +90,9 @@ "lists": "packages/kbn-securitysolution-list-utils/src", "exceptionList-components": "packages/kbn-securitysolution-exception-list-components/src", "management": [ - "src/legacy/core_plugins/management", - "src/plugins/management", + "src/platform/plugins/shared/management", + "src/platform/packages/private/kbn-management", + "src/platform/packages/shared/kbn-management", "packages/kbn-management" ], "monaco": "packages/kbn-monaco/src", @@ -118,9 +119,14 @@ "searchIndexDocuments": "packages/kbn-search-index-documents", "searchResponseWarnings": "packages/kbn-search-response-warnings", "searchTypes": "packages/kbn-search-types", - "securitySolutionPackages": "x-pack/packages/security-solution", + "securitySolutionPackages": [ + "x-pack/solutions/security/packages" + ], + "sharedPlatformPackages": [ + "x-pack/platform/packages/shared/kbn-cloud-security-posture" + ], "serverlessPackages": "packages/serverless", - "sse": ["packages/kbn-sse-utils"], + "sse": ["src/platform/packages/shared/kbn-sse-utils"], "coloring": "packages/kbn-coloring/src", "languageDocumentation": "src/platform/packages/private/kbn-language-documentation/src", "esql": "src/platform/plugins/shared/esql", @@ -156,7 +162,7 @@ "unifiedHistogram": "src/plugins/unified_histogram", "unifiedDataTable": "packages/kbn-unified-data-table", "unsavedChangesBadge": "packages/kbn-unsaved-changes-badge", - "unsavedChangesPrompt": "packages/kbn-unsaved-changes-prompt", + "unsavedChangesPrompt": "src/platform/packages/shared/kbn-unsaved-changes-prompt", "managedContentBadge": "packages/kbn-managed-content-badge", "responseOpsRuleForm": "packages/response-ops/rule_form" }, diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index e6073f0076059..bcb86b74994c0 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 997ee6a63ef41..513be6bf82820 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.devdocs.json b/api_docs/ai_assistant_management_selection.devdocs.json index c7233a2b94ecd..5740a2b25fb0e 100644 --- a/api_docs/ai_assistant_management_selection.devdocs.json +++ b/api_docs/ai_assistant_management_selection.devdocs.json @@ -12,7 +12,7 @@ "tags": [], "label": "AIAssistantType", "description": [], - "path": "src/plugins/ai_assistant_management/selection/common/ai_assistant_type.ts", + "path": "src/platform/plugins/shared/ai_assistant_management/selection/common/ai_assistant_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -27,7 +27,7 @@ "tags": [], "label": "AIAssistantManagementSelectionPluginPublicSetup", "description": [], - "path": "src/plugins/ai_assistant_management/selection/public/plugin.ts", + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -41,7 +41,7 @@ "tags": [], "label": "AIAssistantManagementSelectionPluginPublicStart", "description": [], - "path": "src/plugins/ai_assistant_management/selection/public/plugin.ts", + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -58,7 +58,7 @@ "AIAssistantType", ">" ], - "path": "src/plugins/ai_assistant_management/selection/public/plugin.ts", + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index c4ad90deeffb8..1ed43790e70c7 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index e6b8e7795ce88..145279523795f 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index 3ace46ceaf2aa..8ca11a439e4cd 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -3506,17 +3506,17 @@ "plugin": "ruleRegistry", "path": "x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_wrapper.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts" - }, { "plugin": "ruleRegistry", "path": "x-pack/plugins/rule_registry/server/utils/rule_executor.test_helpers.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts" + }, { "plugin": "slo", - "path": "x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.test.ts" + "path": "x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/executor.test.ts" } ] }, diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index ef112becf2f55..e3df30b070b52 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index e503010b398a5..4c4758d3f7b47 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 14883b4493db7..72f338684a29b 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_inventory.devdocs.json b/api_docs/asset_inventory.devdocs.json index 6fdfe95fc2c1e..9816fc76f5fa7 100644 --- a/api_docs/asset_inventory.devdocs.json +++ b/api_docs/asset_inventory.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "AssetInventoryPluginSetup", "description": [], - "path": "x-pack/plugins/asset_inventory/public/types.ts", + "path": "x-pack/solutions/security/plugins/asset_inventory/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "AssetInventoryPluginStart", "description": [], - "path": "x-pack/plugins/asset_inventory/public/types.ts", + "path": "x-pack/solutions/security/plugins/asset_inventory/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "AssetInventoryPluginSetup", "description": [], - "path": "x-pack/plugins/asset_inventory/server/types.ts", + "path": "x-pack/solutions/security/plugins/asset_inventory/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -64,7 +64,7 @@ "tags": [], "label": "AssetInventoryPluginStart", "description": [], - "path": "x-pack/plugins/asset_inventory/server/types.ts", + "path": "x-pack/solutions/security/plugins/asset_inventory/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -88,7 +88,7 @@ "signature": [ "\"assetInventory\"" ], - "path": "x-pack/plugins/asset_inventory/common/index.ts", + "path": "x-pack/solutions/security/plugins/asset_inventory/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -103,7 +103,7 @@ "signature": [ "\"assetInventory\"" ], - "path": "x-pack/plugins/asset_inventory/common/index.ts", + "path": "x-pack/solutions/security/plugins/asset_inventory/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/asset_inventory.mdx b/api_docs/asset_inventory.mdx index 819e37b1619c6..c6d477e46e290 100644 --- a/api_docs/asset_inventory.mdx +++ b/api_docs/asset_inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetInventory title: "assetInventory" image: https://source.unsplash.com/400x175/?github description: API docs for the assetInventory plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetInventory'] --- import assetInventoryObj from './asset_inventory.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 5c291cd78b05b..8daa47d075c4a 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index ac5e1f981534b..4d7e8aa701dd2 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 91afdb4e2bb2d..22a941347e2e3 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 8499d2f7a715f..5c8eb5d97bb8f 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.devdocs.json b/api_docs/charts.devdocs.json index 4fdf943a868f4..0e9adb3e303c7 100644 --- a/api_docs/charts.devdocs.json +++ b/api_docs/charts.devdocs.json @@ -153,6 +153,71 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "charts", + "id": "def-public.decreaseOpacity", + "type": "Function", + "tags": [], + "label": "decreaseOpacity", + "description": [ + "\nReduces color opacity, by mixing color with background color.\n\nThis is used when the resulting color needs to be opaque (i.e. alpha of 1)." + ], + "signature": [ + "(baseColor: string, step: number, totalSteps: number) => string" + ], + "path": "src/plugins/charts/public/services/palettes/decrease_opacity.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "charts", + "id": "def-public.decreaseOpacity.$1", + "type": "string", + "tags": [], + "label": "baseColor", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/charts/public/services/palettes/decrease_opacity.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "charts", + "id": "def-public.decreaseOpacity.$2", + "type": "number", + "tags": [], + "label": "step", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/charts/public/services/palettes/decrease_opacity.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "charts", + "id": "def-public.decreaseOpacity.$3", + "type": "number", + "tags": [], + "label": "totalSteps", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/charts/public/services/palettes/decrease_opacity.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "charts", "id": "def-public.EmptyPlaceholder", diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index edee4b592c729..0eb04773307ee 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 267 | 2 | 252 | 9 | +| 271 | 2 | 255 | 9 | ## Client diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 7ed607fc34070..cfe3aa0ad7718 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.devdocs.json b/api_docs/cloud_data_migration.devdocs.json index 752512ce7b863..c487bbdb05b6a 100644 --- a/api_docs/cloud_data_migration.devdocs.json +++ b/api_docs/cloud_data_migration.devdocs.json @@ -11,7 +11,7 @@ "tags": [], "label": "CloudDataMigrationPluginSetup", "description": [], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -31,7 +31,7 @@ "text": "CloudSetup" } ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -51,7 +51,7 @@ "text": "ManagementSetup" } ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -65,7 +65,7 @@ "signature": [ "BreadcrumbService" ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -79,7 +79,7 @@ "tags": [], "label": "CloudDataMigrationPluginStart", "description": [], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -100,7 +100,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -136,7 +136,7 @@ "signature": [ "\"migrate_data\"" ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/common/index.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -148,7 +148,7 @@ "tags": [], "label": "PLUGIN_NAME", "description": [], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/common/index.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index ee698cda129af..f1cb89f489de9 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.devdocs.json b/api_docs/cloud_defend.devdocs.json index 4e6084a486171..57434d1618989 100644 --- a/api_docs/cloud_defend.devdocs.json +++ b/api_docs/cloud_defend.devdocs.json @@ -25,7 +25,7 @@ "CloudDefendPage", ") => CloudDefendLinkItem" ], - "path": "x-pack/plugins/cloud_defend/public/common/navigation/security_solution_links.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/security_solution_links.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "CloudDefendPage" ], - "path": "x-pack/plugins/cloud_defend/public/common/navigation/security_solution_links.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/security_solution_links.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -59,7 +59,7 @@ "tags": [], "label": "CloudDefendSecuritySolutionContext", "description": [], - "path": "x-pack/plugins/cloud_defend/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -75,7 +75,7 @@ "signature": [ "() => React.ComponentType<{ children: React.ReactNode; }>" ], - "path": "x-pack/plugins/cloud_defend/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -101,7 +101,7 @@ }, "; state?: Record | undefined; }>" ], - "path": "x-pack/plugins/cloud_defend/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -125,7 +125,7 @@ "signature": [ "\"/cloud_defend\"" ], - "path": "x-pack/plugins/cloud_defend/public/common/navigation/constants.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -137,12 +137,12 @@ "tags": [], "label": "CloudDefendPageId", "description": [ - "\nAll the IDs for the cloud defend pages.\nThis needs to match the cloud defend page entries in `SecurityPageName` in `x-pack/plugins/security_solution/common/constants.ts`." + "\nAll the IDs for the cloud defend pages.\nThis needs to match the cloud defend page entries in `SecurityPageName` in `x-pack/solutions/security/plugins/security_solution/common/constants.ts`." ], "signature": [ "\"cloud_defend-policies\" | \"kubernetes_security-dashboard\"" ], - "path": "x-pack/plugins/cloud_defend/public/common/navigation/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -158,7 +158,7 @@ "description": [ "\ncloud_defend plugin types" ], - "path": "x-pack/plugins/cloud_defend/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -172,7 +172,7 @@ "tags": [], "label": "CloudDefendPluginStart", "description": [], - "path": "x-pack/plugins/cloud_defend/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -190,7 +190,7 @@ "CloudDefendRouterProps", ">" ], - "path": "x-pack/plugins/cloud_defend/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -215,7 +215,7 @@ "tags": [], "label": "CloudDefendPluginSetup", "description": [], - "path": "x-pack/plugins/cloud_defend/server/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -229,7 +229,7 @@ "tags": [], "label": "CloudDefendPluginStart", "description": [], - "path": "x-pack/plugins/cloud_defend/server/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -248,7 +248,7 @@ "tags": [], "label": "CloudDefendPolicy", "description": [], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -268,7 +268,7 @@ "text": "PackagePolicy" } ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -290,7 +290,7 @@ }, ", \"id\" | \"name\"> & { agents: number; }" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false } @@ -304,7 +304,7 @@ "tags": [], "label": "IndexDetails", "description": [], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -315,7 +315,7 @@ "tags": [], "label": "index", "description": [], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -329,7 +329,7 @@ "signature": [ "\"empty\" | \"not-empty\" | \"unprivileged\"" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false } @@ -343,7 +343,7 @@ "tags": [], "label": "Response", "description": [], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -357,7 +357,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -371,7 +371,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -392,7 +392,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -406,7 +406,7 @@ "signature": [ "\"process\" | \"file\"" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -420,7 +420,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false } @@ -434,7 +434,7 @@ "tags": [], "label": "Selector", "description": [], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -445,7 +445,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -459,7 +459,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -473,7 +473,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -487,7 +487,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -501,7 +501,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -515,7 +515,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -529,7 +529,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -543,7 +543,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -557,7 +557,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -571,7 +571,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -585,7 +585,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -599,7 +599,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -613,7 +613,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -627,7 +627,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -641,7 +641,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -655,7 +655,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -669,7 +669,7 @@ "signature": [ "\"process\" | \"file\"" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -683,7 +683,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false } @@ -711,7 +711,7 @@ }, ", \"id\" | \"name\"> & { agents: number; }" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -726,7 +726,7 @@ "signature": [ "CloudDefendSetupInstalledStatus | CloudDefendSetupNotInstalledStatus" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -741,7 +741,7 @@ "signature": [ "\"indexed\" | \"unprivileged\" | \"indexing\" | \"index-timeout\" | \"not-deployed\" | \"not-installed\"" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -756,7 +756,7 @@ "signature": [ "\"empty\" | \"not-empty\" | \"unprivileged\"" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -771,7 +771,7 @@ "signature": [ "{ readonly policy_name?: string | undefined; readonly per_page: number; readonly page: number; readonly sort_field: \"package_policy.id\" | \"package_policy.name\" | \"package_policy.policy_id\" | \"package_policy.namespace\" | \"package_policy.updated_at\" | \"package_policy.updated_by\" | \"package_policy.created_at\" | \"package_policy.created_by\" | \"package_policy.package.name\" | \"package_policy.package.title\"; readonly sort_order: \"asc\" | \"desc\"; }" ], - "path": "x-pack/plugins/cloud_defend/common/schemas/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/schemas/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -786,7 +786,7 @@ "signature": [ "\"log\" | \"alert\" | \"block\"" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -801,7 +801,7 @@ "signature": [ "\"operation\" | \"containerImageFullName\" | \"containerImageName\" | \"containerImageTag\" | \"kubernetesClusterId\" | \"kubernetesClusterName\" | \"kubernetesNamespace\" | \"kubernetesPodLabel\" | \"kubernetesPodName\" | \"targetFilePath\" | \"ignoreVolumeFiles\" | \"ignoreVolumeMounts\" | \"processExecutable\" | \"processName\" | \"sessionLeaderInteractive\"" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -818,7 +818,7 @@ "signature": [ "\"process\" | \"file\"" ], - "path": "x-pack/plugins/cloud_defend/common/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -882,7 +882,7 @@ }, "; }>" ], - "path": "x-pack/plugins/cloud_defend/common/schemas/v1.ts", + "path": "x-pack/solutions/security/plugins/cloud_defend/common/schemas/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index f34a611a7c225..7098002a74672 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_security_posture.devdocs.json b/api_docs/cloud_security_posture.devdocs.json index dacad0d7725a2..6933160a5ff65 100644 --- a/api_docs/cloud_security_posture.devdocs.json +++ b/api_docs/cloud_security_posture.devdocs.json @@ -25,7 +25,7 @@ "CspPage", ") => CloudSecurityPostureLinkItem" ], - "path": "x-pack/plugins/cloud_security_posture/public/common/navigation/security_solution_links.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/security_solution_links.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "CspPage" ], - "path": "x-pack/plugins/cloud_security_posture/public/common/navigation/security_solution_links.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/security_solution_links.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -61,7 +61,7 @@ "description": [ "\nMethods exposed from the security solution to the cloud security posture application." ], - "path": "x-pack/plugins/cloud_security_posture/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -77,7 +77,7 @@ "signature": [ "() => React.ComponentType<{ children: React.ReactNode; }>" ], - "path": "x-pack/plugins/cloud_security_posture/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -103,7 +103,7 @@ }, "; state?: Record | undefined; }>" ], - "path": "x-pack/plugins/cloud_security_posture/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -122,12 +122,12 @@ "tags": [], "label": "CloudSecurityPosturePageId", "description": [ - "\nAll the IDs for the cloud security posture pages.\nThis needs to match the cloud security posture page entries in `SecurityPageName` in `x-pack/plugins/security_solution/common/constants.ts`." + "\nAll the IDs for the cloud security posture pages.\nThis needs to match the cloud security posture page entries in `SecurityPageName` in `x-pack/solutions/security/plugins/security_solution/common/constants.ts`." ], "signature": [ "\"cloud_security_posture-dashboard\" | \"cloud_security_posture-cspm-dashboard\" | \"cloud_security_posture-kspm-dashboard\" | \"cloud_security_posture-vulnerability_dashboard\" | \"cloud_security_posture-findings\" | \"cloud_security_posture-benchmarks\" | \"cloud_security_posture-benchmarks-rules\"" ], - "path": "x-pack/plugins/cloud_security_posture/public/common/navigation/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -143,7 +143,7 @@ "description": [ "\nThe cloud security posture's public plugin setup interface." ], - "path": "x-pack/plugins/cloud_security_posture/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -159,7 +159,7 @@ "description": [ "\nThe cloud security posture's public plugin start interface." ], - "path": "x-pack/plugins/cloud_security_posture/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -177,7 +177,7 @@ "CspRouterProps", ">" ], - "path": "x-pack/plugins/cloud_security_posture/public/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -202,7 +202,7 @@ "tags": [], "label": "CspServerPluginSetup", "description": [], - "path": "x-pack/plugins/cloud_security_posture/server/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -216,7 +216,7 @@ "tags": [], "label": "CspServerPluginStart", "description": [], - "path": "x-pack/plugins/cloud_security_posture/server/types.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -242,7 +242,7 @@ "signature": [ "\"csp\"" ], - "path": "x-pack/plugins/cloud_security_posture/common/index.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -259,7 +259,7 @@ "signature": [ "\"Cloud Security\"" ], - "path": "x-pack/plugins/cloud_security_posture/common/index.ts", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 63a2c567ea784..0567a7555e732 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.devdocs.json b/api_docs/console.devdocs.json index f4330cd610315..f5b206f036206 100644 --- a/api_docs/console.devdocs.json +++ b/api_docs/console.devdocs.json @@ -51,7 +51,7 @@ }, ", object>" ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -65,7 +65,7 @@ "signature": [ "any" ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -86,7 +86,7 @@ }, "" ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -127,7 +127,7 @@ "text": "ConsolePluginSetup" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -148,7 +148,7 @@ }, "" ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -169,7 +169,7 @@ "text": "AppSetupUIPluginDependencies" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -210,7 +210,7 @@ "text": "ConsolePluginStart" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -230,7 +230,7 @@ "text": "CoreStart" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -251,7 +251,7 @@ "text": "AppStartUIPluginDependencies" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -272,7 +272,7 @@ "tags": [], "label": "AppSetupUIPluginDependencies", "description": [], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -293,7 +293,7 @@ }, " | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -313,7 +313,7 @@ "text": "DevToolsSetup" } ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -361,7 +361,7 @@ }, ") => void; }" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -382,7 +382,7 @@ }, " | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false } @@ -396,7 +396,7 @@ "tags": [], "label": "AppStartUIPluginDependencies", "description": [], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -417,7 +417,7 @@ }, " | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -457,7 +457,7 @@ }, ">): void; }" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -478,7 +478,7 @@ }, " | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false } @@ -509,7 +509,7 @@ "text": "SerializableRecord" } ], - "path": "src/plugins/console/public/types/locator.ts", + "path": "src/platform/plugins/shared/console/public/types/locator.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -523,7 +523,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/console/public/types/locator.ts", + "path": "src/platform/plugins/shared/console/public/types/locator.ts", "deprecated": false, "trackAdoption": false } @@ -537,7 +537,7 @@ "tags": [], "label": "EmbeddedConsoleView", "description": [], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -567,7 +567,7 @@ }, ">" ], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false }, @@ -581,7 +581,7 @@ "signature": [ "React.ComponentClass<{}, any> | React.FunctionComponent<{}>" ], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false } @@ -595,7 +595,7 @@ "tags": [], "label": "EmbeddedConsoleViewButtonProps", "description": [], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -606,7 +606,7 @@ "tags": [], "label": "activeView", "description": [], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false }, @@ -620,7 +620,7 @@ "signature": [ "(event: React.MouseEvent) => void" ], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -657,7 +657,7 @@ "description": [ "\nConsole plugin's setup service object" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -688,7 +688,7 @@ }, "> | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false } @@ -705,7 +705,7 @@ "description": [ "\nConsole plugin's start service object" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -721,7 +721,7 @@ "signature": [ "(() => boolean) | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -739,7 +739,7 @@ "signature": [ "((content?: string | undefined) => void) | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -753,7 +753,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -773,7 +773,7 @@ "signature": [ "(() => void) | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -791,7 +791,7 @@ "signature": [ "React.FC<{}> | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -815,7 +815,7 @@ }, " | null) => void) | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -836,7 +836,7 @@ }, " | null" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -866,7 +866,7 @@ "signature": [ "void" ], - "path": "src/plugins/console/server/types.ts", + "path": "src/platform/plugins/shared/console/server/types.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 72d4a88a1e654..a69070204816e 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 8029dbb584f45..d58cdc2fa35ae 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.devdocs.json b/api_docs/controls.devdocs.json index 5a0a3ae38133d..87e8b0489a1b2 100644 --- a/api_docs/controls.devdocs.json +++ b/api_docs/controls.devdocs.json @@ -1272,7 +1272,13 @@ "text": "HasSaveNotification" }, " & ", - "PublishesReload", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + }, "> & { allowExpensiveQueries$: ", { "pluginId": "@kbn/presentation-publishing", @@ -1524,7 +1530,13 @@ "text": "HasSaveNotification" }, " & ", - "PublishesReload", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + }, "> & { allowExpensiveQueries$: ", { "pluginId": "@kbn/presentation-publishing", @@ -1867,6 +1879,22 @@ "text": "HasUniqueId" }, " & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "public", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-public.HasSerializableState", + "text": "HasSerializableState" + }, + "<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.DefaultControlState", + "text": "DefaultControlState" + }, + "> & ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1906,23 +1934,7 @@ "section": "def-common.ControlWidth", "text": "ControlWidth" }, - " | undefined>; serializeState: () => ", - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.SerializedPanelState", - "text": "SerializedPanelState" - }, - "<", - { - "pluginId": "controls", - "scope": "common", - "docId": "kibControlsPluginApi", - "section": "def-common.DefaultControlState", - "text": "DefaultControlState" - }, - ">; } & Omit<", + " | undefined>; } & Omit<", { "pluginId": "@kbn/presentation-publishing", "scope": "public", diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 37e528ee2882a..e15035f2d1389 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index abf8aae7443f3..8bb230c94f2ea 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.devdocs.json b/api_docs/dashboard.devdocs.json index 79542dae85297..f490c18dc04c1 100644 --- a/api_docs/dashboard.devdocs.json +++ b/api_docs/dashboard.devdocs.json @@ -393,7 +393,7 @@ "description": [], "signature": [ "(() => Partial<", - "SavedDashboardInput", + "DashboardState", ">) | undefined" ], "path": "src/plugins/dashboard/public/dashboard_api/types.ts", @@ -857,6 +857,14 @@ "text": "HasAppContext" }, " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.HasExecutionContext", + "text": "HasExecutionContext" + }, + " & ", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -865,6 +873,14 @@ "text": "HasRuntimeChildState" }, " & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "public", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-public.HasSaveNotification", + "text": "HasSaveNotification" + }, + " & ", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -881,6 +897,14 @@ "text": "HasType" }, "<\"dashboard\"> & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.HasUniqueId", + "text": "HasUniqueId" + }, + " & ", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -889,6 +913,14 @@ "text": "PresentationContainer" }, " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesDataLoading", + "text": "PublishesDataLoading" + }, + " & ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -913,6 +945,14 @@ "text": "PublishesPanelTitle" }, ", \"panelTitle\"> & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + }, + " & ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -921,6 +961,16 @@ "text": "PublishesSavedObjectId" }, " & ", + "PublishesSearchSession", + " & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "public", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-public.PublishesSettings", + "text": "PublishesSettings" + }, + " & ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -968,23 +1018,31 @@ "section": "def-public.PublishesViewMode", "text": "PublishesViewMode" }, - " & ", + " & { setViewMode: (viewMode: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.ViewMode", + "text": "ViewMode" + }, + ") => void; } & ", { "pluginId": "@kbn/presentation-containers", "scope": "public", "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.TracksOverlays", - "text": "TracksOverlays" + "section": "def-public.TrackContentfulRender", + "text": "TrackContentfulRender" }, - " & { addFromLibrary: () => void; animatePanelTransforms$: ", + " & ", { - "pluginId": "@kbn/presentation-publishing", + "pluginId": "@kbn/presentation-containers", "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-public.TracksOverlays", + "text": "TracksOverlays" }, - "; asyncResetToLastSavedState: () => Promise; controlGroupApi$: ", + " & { asyncResetToLastSavedState: () => Promise; controlGroupApi$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1016,27 +1074,9 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; forceRefresh: () => void; getRuntimeStateForControlGroup: () => ", - "UnsavedPanelState", - " | undefined; getSerializedStateForControlGroup: () => ", - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.SerializedPanelState", - "text": "SerializedPanelState" - }, - "<", - { - "pluginId": "controls", - "scope": "common", - "docId": "kibControlsPluginApi", - "section": "def-common.ControlGroupSerializedState", - "text": "ControlGroupSerializedState" - }, - ">; getSettings: () => ", - "DashboardStateFromSettingsFlyout", - "; getDashboardPanelFromId: (id: string) => Promise<", + "; forceRefresh: () => void; getSettings: () => ", + "DashboardSettings", + "; getDashboardPanelFromId: (id: string) => ", { "pluginId": "dashboard", "scope": "common", @@ -1052,15 +1092,7 @@ "section": "def-common.SavedObjectEmbeddableInput", "text": "SavedObjectEmbeddableInput" }, - ">>; hasOverlays$: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" - }, - "; hasRunMigrations$: ", + ">; hasOverlays$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1084,15 +1116,23 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; isEmbeddedExternally: boolean; managed$: ", + "; isEmbeddedExternally: boolean; isManaged: boolean; locator?: Pick<", { - "pluginId": "@kbn/presentation-publishing", + "pluginId": "share", + "scope": "common", + "docId": "kibSharePluginApi", + "section": "def-common.LocatorPublic", + "text": "LocatorPublic" + }, + "<", + { + "pluginId": "dashboard", "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" + "docId": "kibDashboardPluginApi", + "section": "def-public.DashboardLocatorParams", + "text": "DashboardLocatorParams" }, - "; panels$: ", + ">, \"navigate\" | \"getRedirectUrl\"> | undefined; panels$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1108,23 +1148,7 @@ "section": "def-common.DashboardPanelMap", "text": "DashboardPanelMap" }, - ">; registerChildApi: (api: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.DefaultEmbeddableApi", - "text": "DefaultEmbeddableApi" - }, - ") => void; runInteractiveSave: (interactionMode: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.ViewMode", - "text": "ViewMode" - }, - ") => Promise<", + ">; runInteractiveSave: () => Promise<", "SaveDashboardReturn", " | undefined>; runQuickSave: () => Promise; scrollToPanel: (panelRef: HTMLDivElement) => void; scrollToPanelId$: ", { @@ -1134,17 +1158,7 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; scrollToTop: () => void; setControlGroupApi: (controlGroupApi: ", - { - "pluginId": "controls", - "scope": "public", - "docId": "kibControlsPluginApi", - "section": "def-public.ControlGroupApi", - "text": "ControlGroupApi" - }, - ") => void; setSettings: (settings: ", - "DashboardStateFromSettingsFlyout", - ") => void; setFilters: (filters?: ", + "; scrollToTop: () => void; setFilters: (filters?: ", { "pluginId": "@kbn/es-query", "scope": "common", @@ -1152,7 +1166,7 @@ "section": "def-common.Filter", "text": "Filter" }, - "[] | undefined) => void; setFullScreenMode: (fullScreenMode: boolean) => void; setPanels: (panels: ", + "[] | undefined) => void; setFullScreenMode: (fullScreenMode: boolean) => void; setHighlightPanelId: (id: string | undefined) => void; setPanels: (panels: ", { "pluginId": "dashboard", "scope": "common", @@ -1168,7 +1182,9 @@ "section": "def-common.Query", "text": "Query" }, - " | undefined) => void; setTags: (tags: string[]) => void; setTimeRange: (timeRange?: ", + " | undefined) => void; setScrollToPanelId: (id: string | undefined) => void; setSettings: (settings: ", + "DashboardSettings", + ") => void; setTags: (tags: string[]) => void; setTimeRange: (timeRange?: ", { "pluginId": "@kbn/es-query", "scope": "common", @@ -1176,15 +1192,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => void; setViewMode: (viewMode: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.ViewMode", - "text": "ViewMode" - }, - ") => void; useMargins$: ", + " | undefined) => void; unifiedSearchFilters$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1192,15 +1200,15 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; uuid$: ", + "<", { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Filter", + "text": "Filter" }, - "; untilEmbeddableLoaded: (id: string) => Promise<", + "[] | undefined>; untilEmbeddableLoaded: (id: string) => Promise<", { "pluginId": "embeddable", "scope": "public", diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index bca62b080c884..6b65760f7bbe7 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 114 | 0 | 111 | 14 | +| 114 | 0 | 111 | 13 | ## Client diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index dcae3865b0eff..b78d72c4c3a65 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index cfb349a3c4ce3..a059bb6a0127e 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -3575,7 +3575,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts" } ], "children": [], @@ -3901,19 +3901,19 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" }, { "plugin": "inputControlVis", @@ -8073,6 +8073,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -8085,10 +8089,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -8118,136 +8118,136 @@ "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" } ] }, @@ -11730,7 +11730,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts" } ] }, @@ -12660,14 +12660,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -19195,14 +19195,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -24610,6 +24610,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -24622,10 +24626,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -24655,136 +24655,136 @@ "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" } ] }, diff --git a/api_docs/data.mdx b/api_docs/data.mdx index cdf2c82320ff0..e498487538049 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index ba1938c7b69d7..06467d1fcbfa3 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.devdocs.json b/api_docs/data_query.devdocs.json index eec375eb64279..fede5071491b0 100644 --- a/api_docs/data_query.devdocs.json +++ b/api_docs/data_query.devdocs.json @@ -4534,7 +4534,7 @@ "\nConverts QueryState to expression AST" ], "signature": [ - "({\n filters,\n query,\n inputQuery,\n time,\n dataView,\n titleForInspector,\n descriptionForInspector,\n}: Args) => Promise<", + "({\n filters,\n query,\n inputQuery,\n time,\n timeFieldName,\n titleForInspector,\n descriptionForInspector,\n}: Args) => Promise<", { "pluginId": "expressions", "scope": "common", @@ -4553,7 +4553,7 @@ "id": "def-common.textBasedQueryStateToAstWithValidation.$1", "type": "Object", "tags": [], - "label": "{\n filters,\n query,\n inputQuery,\n time,\n dataView,\n titleForInspector,\n descriptionForInspector,\n}", + "label": "{\n filters,\n query,\n inputQuery,\n time,\n timeFieldName,\n titleForInspector,\n descriptionForInspector,\n}", "description": [], "signature": [ "Args" diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 0f4e5dde32689..9d8e620a1b701 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.devdocs.json b/api_docs/data_search.devdocs.json index 53f23d2699064..3c8f70ebd85b5 100644 --- a/api_docs/data_search.devdocs.json +++ b/api_docs/data_search.devdocs.json @@ -10095,7 +10095,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts" } ], "children": [], @@ -10421,19 +10421,19 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts" }, { "plugin": "inputControlVis", @@ -26835,7 +26835,7 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/hooks/eql/api.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/hooks/eql/api.ts" } ] } diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 5eb53062eff14..13f0a1d8623f5 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_usage.devdocs.json b/api_docs/data_usage.devdocs.json index fa0dd73eb8c27..1be50a2555354 100644 --- a/api_docs/data_usage.devdocs.json +++ b/api_docs/data_usage.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "DataUsagePublicSetup", "description": [], - "path": "x-pack/plugins/data_usage/public/types.ts", + "path": "x-pack/platform/plugins/private/data_usage/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "DataUsagePublicStart", "description": [], - "path": "x-pack/plugins/data_usage/public/types.ts", + "path": "x-pack/platform/plugins/private/data_usage/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "DataUsageServerSetup", "description": [], - "path": "x-pack/plugins/data_usage/server/types/types.ts", + "path": "x-pack/platform/plugins/private/data_usage/server/types/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -64,7 +64,7 @@ "tags": [], "label": "DataUsageServerStart", "description": [], - "path": "x-pack/plugins/data_usage/server/types/types.ts", + "path": "x-pack/platform/plugins/private/data_usage/server/types/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -88,7 +88,7 @@ "signature": [ "\"/api/data_usage/\"" ], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -100,7 +100,7 @@ "tags": [], "label": "DATA_USAGE_DATA_STREAMS_API_ROUTE", "description": [], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -112,7 +112,7 @@ "tags": [], "label": "DATA_USAGE_METRICS_API_ROUTE", "description": [], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -127,7 +127,7 @@ "signature": [ "50" ], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -142,7 +142,7 @@ "signature": [ "\"data_usage\"" ], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/data_usage.mdx b/api_docs/data_usage.mdx index 6701cddffed8d..8644670594112 100644 --- a/api_docs/data_usage.mdx +++ b/api_docs/data_usage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataUsage title: "dataUsage" image: https://source.unsplash.com/400x175/?github description: API docs for the dataUsage plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataUsage'] --- import dataUsageObj from './data_usage.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index cadeae6860044..4d8369fee10f7 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index d11847beba423..e469e0b95b9c4 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 7857c22209fa2..f1257c9e73713 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index 44f3daa2ba276..6c503c66a2cf6 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -427,14 +427,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -8301,14 +8301,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -14130,14 +14130,6 @@ "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_management/components/source_selection/source_selection.tsx" }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/models/job_service/new_job_caps/rollup.ts" - }, - { - "plugin": "@kbn/ml-data-view-utils", - "path": "x-pack/platform/packages/private/ml/data_view_utils/actions/data_view_handler.ts" - }, { "plugin": "enterpriseSearch", "path": "x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.ts" @@ -14146,6 +14138,14 @@ "plugin": "enterpriseSearch", "path": "x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_explore_table_formulas.ts" }, + { + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/models/job_service/new_job_caps/rollup.ts" + }, + { + "plugin": "@kbn/ml-data-view-utils", + "path": "x-pack/platform/packages/private/ml/data_view_utils/actions/data_view_handler.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.sagas.ts" @@ -14159,136 +14159,136 @@ "path": "x-pack/plugins/graph/public/state_management/persistence.ts" }, { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/common/index_patterns_utils.ts" + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/rule_form/boundary_form.tsx" }, { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/common/index_patterns_utils.ts" + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/rule_form/entity_form.tsx" }, { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/get_fields.ts" + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx" }, { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/rule_form/boundary_form.tsx" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/common/index_patterns_utils.ts" }, { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/rule_form/entity_form.tsx" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/common/index_patterns_utils.ts" }, { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/get_fields.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.test.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/public/app/hooks/use_data_view_exists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" }, { "plugin": "timelines", - "path": "x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts" + "path": "x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/public/application/services/new_job_capabilities/remove_nested_field_children.test.ts" }, { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_define/common/common.test.ts" }, { "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" + "path": "x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" }, { "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" + "path": "x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" }, { "plugin": "ux", - "path": "x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.test.ts" + "path": "x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts" - }, - { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx" - }, - { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/public/app/hooks/use_data_view_exists.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/public/application/services/new_job_capabilities/remove_nested_field_children.test.ts" - }, - { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_define/common/common.test.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts" }, { "plugin": "dataViewManagement", @@ -16824,14 +16824,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -26028,6 +26028,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -26040,10 +26044,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -26073,136 +26073,136 @@ "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" } ] }, diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 6515a5af9a5fe..1df3e7b114dc7 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index d25f0a7edcdda..d177382f1b72c 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 2ad67db089ee3..36d824d28139f 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 9a20272c7302b..5b9105996625a 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -17,12 +17,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Referencing plugin(s) | Remove By | | ---------------|-----------|-----------| | | ml, stackAlerts | - | -| | data, @kbn/search-errors, savedObjectsManagement, unifiedSearch, @kbn/unified-field-list, controls, lens, @kbn/lens-embeddable-utils, triggersActionsUi, dataVisualizer, canvas, fleet, ml, @kbn/ml-data-view-utils, enterpriseSearch, graph, visTypeTimeseries, exploratoryView, stackAlerts, securitySolution, timelines, upgradeAssistant, uptime, ux, maps, transform, dataViewManagement, eventAnnotationListing, inputControlVis, visDefaultEditor, visTypeTimelion, visTypeVega | - | +| | data, @kbn/search-errors, savedObjectsManagement, unifiedSearch, @kbn/unified-field-list, controls, lens, @kbn/lens-embeddable-utils, triggersActionsUi, dataVisualizer, canvas, fleet, ml, enterpriseSearch, @kbn/ml-data-view-utils, graph, stackAlerts, upgradeAssistant, exploratoryView, visTypeTimeseries, maps, transform, securitySolution, timelines, uptime, ux, dataViewManagement, eventAnnotationListing, inputControlVis, visDefaultEditor, visTypeTimelion, visTypeVega | - | | | ml, securitySolution | - | | | actions, savedObjectsTagging, ml, enterpriseSearch | - | -| | @kbn/core-saved-objects-browser-internal, @kbn/core, visualizations, aiops, dataVisualizer, ml, dashboardEnhanced, graph, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-http-router-server-internal, @kbn/core-http-server-internal, @kbn/core-metrics-server-internal, @kbn/core-status-server-internal, @kbn/core-i18n-server-internal, @kbn/core-rendering-server-internal, @kbn/core-capabilities-server-internal, @kbn/core-apps-server-internal, usageCollection, taskManager, security, monitoringCollection, files, banners, telemetry, cloudFullStory, customBranding, enterpriseSearch, securitySolution, @kbn/test-suites-xpack, interactiveSetup, mockIdpPlugin, spaces, ml | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core, visualizations, aiops, dataVisualizer, dashboardEnhanced, ml, graph, lens, securitySolution, eventAnnotation | - | | | @kbn/core, embeddable, savedObjects, visualizations, canvas, graph, ml | - | -| | @kbn/core-saved-objects-base-server-internal, @kbn/core-saved-objects-migration-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-ui-settings-server-internal, @kbn/core-usage-data-server-internal, taskManager, dataViews, spaces, share, actions, data, alerting, dashboard, @kbn/core-saved-objects-migration-server-mocks, savedSearch, canvas, lens, cases, fleet, cloudSecurityPosture, ml, graph, lists, maps, visualizations, apmDataAccess, infra, securitySolution, apm, slo, synthetics, uptime, eventAnnotation, links, savedObjectsManagement, @kbn/core-test-helpers-so-type-serializer, @kbn/core-saved-objects-api-server-internal | - | +| | @kbn/core-saved-objects-base-server-internal, @kbn/core-saved-objects-migration-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-ui-settings-server-internal, @kbn/core-usage-data-server-internal, taskManager, dataViews, spaces, share, actions, data, alerting, dashboard, @kbn/core-saved-objects-migration-server-mocks, savedSearch, canvas, lens, cases, fleet, ml, graph, lists, maps, apmDataAccess, apm, visualizations, infra, slo, securitySolution, synthetics, uptime, cloudSecurityPosture, eventAnnotation, links, savedObjectsManagement, @kbn/core-test-helpers-so-type-serializer, @kbn/core-saved-objects-api-server-internal | - | | | stackAlerts, alerting, securitySolution, inputControlVis | - | | | graph, stackAlerts, inputControlVis, securitySolution | - | | | dataVisualizer, stackAlerts, expressionPartitionVis | - | @@ -33,12 +34,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | ruleRegistry, securitySolution, slo | - | | | security, actions, alerting, ruleRegistry, files, cases, fleet, securitySolution | - | | | alerting, securitySolution | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-browser-mocks, fleet, graph, lists, osquery, securitySolution, alerting | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-browser-mocks, fleet, graph, lists, osquery, securitySolution, alerting | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, fleet, graph, lists, alerting, osquery, securitySolution | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, fleet, graph, lists, alerting, osquery, securitySolution | - | | | alerting, securitySolution | - | | | securitySolution | - | -| | cloudDefend, securitySolution, synthetics | - | -| | cloudDefend, securitySolution, synthetics | - | +| | securitySolution, synthetics, cloudDefend | - | +| | securitySolution, synthetics, cloudDefend | - | | | cases, securitySolution, security | - | | | @kbn/securitysolution-data-table, securitySolution | - | | | @kbn/securitysolution-data-table, securitySolution | - | @@ -46,11 +47,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/securitysolution-data-table, securitySolution | - | | | securitySolution | - | | | securitySolution | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-browser-mocks, fleet, graph, lists, osquery, securitySolution, alerting | - | -| | @kbn/core-saved-objects-common, @kbn/core-saved-objects-server, @kbn/core, @kbn/alerting-types, alerting, actions, savedSearch, canvas, enterpriseSearch, securitySolution, taskManager, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-api-server | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server, @kbn/core, savedObjectsTagging, home, canvas, savedObjectsTaggingOss, lists, securitySolution, upgradeAssistant, savedObjectsManagement, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-ui-settings-server-internal | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, fleet, graph, lists, alerting, osquery, securitySolution | - | +| | @kbn/core-saved-objects-common, @kbn/core-saved-objects-server, @kbn/core, @kbn/alerting-types, alerting, actions, savedSearch, canvas, enterpriseSearch, taskManager, securitySolution, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-api-server | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server, @kbn/core-saved-objects-browser-mocks, @kbn/core, savedObjectsTagging, home, canvas, savedObjectsTaggingOss, lists, upgradeAssistant, securitySolution, savedObjectsManagement, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-ui-settings-server-internal | - | | | @kbn/core-saved-objects-migration-server-internal, dataViews, actions, data, alerting, dashboard, savedSearch, canvas, lens, cases, savedObjectsTagging, graph, lists, maps, visualizations, securitySolution, @kbn/core-test-helpers-so-type-serializer | - | -| | security, securitySolution, cloudLinks, cases | - | +| | integrationAssistant, @kbn/ecs-data-quality-dashboard, securitySolution, @kbn/ai-assistant, searchAssistant, observabilityAIAssistantApp | - | +| | security, cloudLinks, securitySolution, cases | - | | | security, cases, searchPlayground, securitySolution | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | @@ -58,7 +60,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | securitySolution | - | | | securitySolution | - | | | securitySolution | - | -| | securitySolution, lists | - | +| | lists, securitySolution | - | | | securitySolution | - | | | securitySolution | - | | | securitySolution | - | @@ -66,13 +68,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | securitySolution | - | | | @kbn/monaco, securitySolution | - | | | cloudSecurityPosture, securitySolution | - | -| | alerting, observabilityAIAssistant, fleet, cloudSecurityPosture, entityManager, apm, serverlessSearch, upgradeAssistant, synthetics, transform, security | - | +| | alerting, observabilityAIAssistant, fleet, serverlessSearch, upgradeAssistant, apm, entityManager, transform, synthetics, cloudSecurityPosture, security | - | | | actions, alerting | - | | | monitoring | - | +| | observabilityShared, monitoring | - | | | @kbn/core-saved-objects-api-browser, @kbn/core, savedObjectsManagement, savedObjects, visualizations, savedObjectsTagging, eventAnnotation, lens, maps, graph, dashboard, kibanaUtils, expressions, data, savedObjectsTaggingOss, embeddable, uiActionsEnhanced, controls, canvas, dashboardEnhanced, globalSearchProviders | - | -| | @kbn/core-saved-objects-browser, @kbn/core-saved-objects-browser-internal, @kbn/core, home, visualizations, lens, visTypeTimeseries, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-saved-objects-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core, home, visualizations, lens, visTypeTimeseries | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks | - | -| | home, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-browser-internal | - | +| | @kbn/core-saved-objects-browser-mocks, home, @kbn/core-saved-objects-browser-internal | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, visualizations | - | | | @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-browser-internal | - | | | @kbn/core-saved-objects-browser-mocks, dashboardEnhanced, @kbn/core-saved-objects-browser-internal | - | @@ -97,15 +100,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/core-saved-objects-browser-internal, @kbn/core | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core | - | | | @kbn/core-saved-objects-browser-internal | - | -| | @kbn/core-lifecycle-browser, @kbn/core-saved-objects-browser-internal, @kbn/core, visualizations, exploratoryView, transform, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-lifecycle-browser, @kbn/core, visualizations, exploratoryView, transform | - | +| | @kbn/core-saved-objects-browser-mocks, @kbn/core-root-browser-internal | - | | | @kbn/core-saved-objects-api-server-internal | - | | | @kbn/core-saved-objects-api-server-internal | - | | | @kbn/core-saved-objects-api-server-internal, canvas | - | -| | @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-migration-server-internal, spaces, data, dashboard, savedSearch, cloudSecurityPosture, visualizations, @kbn/core-test-helpers-so-type-serializer | - | -| | @kbn/core-root-browser-internal, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-migration-server-internal, spaces, data, dashboard, savedSearch, visualizations, cloudSecurityPosture, @kbn/core-test-helpers-so-type-serializer | - | | | fleet, exploratoryView, osquery, synthetics | - | | | @kbn/security-plugin-types-server, telemetry, fleet, profiling, @kbn/security-authorization-core, security | - | -| | @kbn/core-application-browser-internal, management, @kbn/core-application-browser-mocks, assetInventory, fleet, security, kibanaOverview, @kbn/core | - | +| | @kbn/core-application-browser-internal, @kbn/core-application-browser-mocks, management, fleet, security, assetInventory, kibanaOverview, @kbn/core | - | | | graph, visTypeTimeseries, dataViewManagement, dataViews | - | | | graph, visTypeTimeseries, dataViewManagement, dataViews | - | | | graph, visTypeTimeseries, dataViewManagement | - | @@ -123,12 +126,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | lens, dashboard, maps | - | | | dataViewManagement | - | | | dataViewManagement | - | -| | data, discover, imageEmbeddable, embeddable | - | +| | data, discover, imageEmbeddable | - | | | spaces, savedObjectsManagement | - | | | unifiedSearch | - | | | unifiedSearch | - | | | @kbn/core, lens | - | -| | dashboard, canvas | - | | | canvas | - | | | canvas | - | | | canvas | - | @@ -142,21 +144,17 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | canvas | - | | | enterpriseSearch | - | | | @kbn/core-elasticsearch-server-internal, @kbn/core-plugins-server-internal, enterpriseSearch, observabilityOnboarding, console | - | -| | dashboard, investigateApp | - | -| | dashboard | - | -| | embeddable, dashboard | - | -| | embeddableEnhanced | - | -| | embeddableEnhanced | - | | | uiActionsEnhanced | - | | | visTypeGauge | - | | | visTypePie | - | | | visTypePie | - | | | @kbn/core-logging-server-internal, security | - | | | security | - | -| | observabilityShared | - | | | aiAssistantManagementSelection, observabilityAiAssistantManagement | - | | | @kbn/react-kibana-context-styled, kibanaReact | - | | | indexLifecycleManagement | - | +| | dashboard | - | +| | embeddable, dashboard | - | | | @kbn/reporting-public, discover | - | | | discover, @kbn/management-settings-field-definition | - | | | @kbn/content-management-table-list-view, filesManagement | - | @@ -172,12 +170,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | reporting | - | | | reporting | - | | | @kbn/reporting-export-types-pdf | - | -| | security, aiops, licenseManagement, ml, crossClusterReplication, logstash, painlessLab, searchprofiler, watcher, slo | 8.8.0 | -| | spaces, security, actions, alerting, remoteClusters, ml, graph, indexLifecycleManagement, osquery, securitySolution, painlessLab, rollup, searchprofiler, snapshotRestore, upgradeAssistant, transform, aiops | 8.8.0 | +| | security, aiops, licenseManagement, ml, logstash, slo, crossClusterReplication, painlessLab, watcher, searchprofiler | 8.8.0 | +| | spaces, security, actions, alerting, ml, graph, upgradeAssistant, remoteClusters, indexLifecycleManagement, painlessLab, rollup, snapshotRestore, transform, aiops, osquery, securitySolution, searchprofiler | 8.8.0 | | | fleet, apm, security, securitySolution | 8.8.0 | | | fleet, apm, security, securitySolution | 8.8.0 | | | spaces, @kbn/security-authorization-core, security, alerting, cases, @kbn/security-role-management-model | 8.8.0 | -| | embeddable, presentationUtil, lens, dashboard, discover, graph, links | 8.8.0 | +| | presentationUtil, visualizations, lens, dashboard, discover, graph, links | 8.8.0 | | | security, @kbn/security-role-management-model | 8.8.0 | | | security | 8.8.0 @@ -205,8 +203,9 @@ Safe to remove. | | data | | | data | | | data | -| | embeddableEnhanced | +| | embeddable | | | embeddable | +| | embeddable | | | expressionGauge | | | expressionGauge | | | expressions | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 3f8958aabf462..a355cc4a6df23 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,11 +7,19 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- +## @kbn/ai-assistant + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [chat_header.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.tsx#:~:text=AssistantAvatar), [chat_header.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.tsx#:~:text=AssistantAvatar), [chat_item_avatar.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant/src/chat/chat_item_avatar.tsx#:~:text=AssistantAvatar), [chat_item_avatar.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant/src/chat/chat_item_avatar.tsx#:~:text=AssistantAvatar) | - | + + + ## @kbn/alerting-types | Deprecated API | Reference location(s) | Remove By | @@ -75,6 +83,22 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-apps-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [bundles_route.ts](https://github.com/elastic/kibana/tree/main/packages/core/apps/core-apps-server-internal/src/bundle_routes/bundles_route.ts#:~:text=authRequired), [core_app.ts](https://github.com/elastic/kibana/tree/main/packages/core/apps/core-apps-server-internal/src/core_app.ts#:~:text=authRequired), [core_app.ts](https://github.com/elastic/kibana/tree/main/packages/core/apps/core-apps-server-internal/src/core_app.ts#:~:text=authRequired) | - | + + + +## @kbn/core-capabilities-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [resolve_capabilities.ts](https://github.com/elastic/kibana/tree/main/packages/core/capabilities/core-capabilities-server-internal/src/routes/resolve_capabilities.ts#:~:text=authRequired) | - | + + + ## @kbn/core-elasticsearch-server-internal | Deprecated API | Reference location(s) | Remove By | @@ -83,6 +107,30 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-http-router-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [security_route_config_validator.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts#:~:text=authRequired), [security_route_config_validator.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts#:~:text=authRequired), [core_versioned_route.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired)+ 3 more | - | + + + +## @kbn/core-http-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [http_server.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-server-internal/src/http_server.ts#:~:text=authRequired), [http_server.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-server-internal/src/http_server.ts#:~:text=authRequired), [auth.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-server-internal/src/lifecycle/auth.ts#:~:text=authRequired), [auth.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-server-internal/src/lifecycle/auth.ts#:~:text=authRequired) | - | + + + +## @kbn/core-i18n-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [translations.ts](https://github.com/elastic/kibana/tree/main/packages/core/i18n/core-i18n-server-internal/src/routes/translations.ts#:~:text=authRequired) | - | + + + ## @kbn/core-lifecycle-browser | Deprecated API | Reference location(s) | Remove By | @@ -107,6 +155,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-metrics-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [elu_history.ts](https://github.com/elastic/kibana/tree/main/packages/core/metrics/core-metrics-server-internal/src/routes/elu_history.ts#:~:text=authRequired) | - | + + + ## @kbn/core-plugins-browser-internal | Deprecated API | Reference location(s) | Remove By | @@ -125,6 +181,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-rendering-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [register_bootstrap_route.ts](https://github.com/elastic/kibana/tree/main/packages/core/rendering/core-rendering-server-internal/src/bootstrap/register_bootstrap_route.ts#:~:text=authRequired) | - | + + + ## @kbn/core-root-browser-internal | Deprecated API | Reference location(s) | Remove By | @@ -310,6 +374,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-status-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [status.ts](https://github.com/elastic/kibana/tree/main/packages/core/status/core-status-server-internal/src/routes/status.ts#:~:text=authRequired), [status_preboot.ts](https://github.com/elastic/kibana/tree/main/packages/core/status/core-status-server-internal/src/routes/status_preboot.ts#:~:text=authRequired) | - | + + + ## @kbn/core-test-helpers-so-type-serializer | Deprecated API | Reference location(s) | Remove By | @@ -337,6 +409,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/ecs-data-quality-dashboard + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx#:~:text=AssistantAvatar) | - | + + + ## @kbn/esql-utils | Deprecated API | Reference location(s) | Remove By | @@ -365,7 +445,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [get_definition.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-management/settings/field_definition/get_definition.ts#:~:text=metric) | - | +| | [get_definition.ts](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts#:~:text=metric) | - | @@ -456,9 +536,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=DeprecatedCellValueElementProps), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=DeprecatedCellValueElementProps) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=DeprecatedRowRenderer), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=DeprecatedRowRenderer) | - | -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [mock_source.ts](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/mock/mock_source.ts#:~:text=BrowserFields)+ 1 more | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=DeprecatedCellValueElementProps), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=DeprecatedCellValueElementProps) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=DeprecatedRowRenderer), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=DeprecatedRowRenderer) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [mock_source.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/mock/mock_source.ts#:~:text=BrowserFields)+ 1 more | - | @@ -472,6 +552,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/test-suites-xpack + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [pagerduty_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/pagerduty_simulation.ts#:~:text=authRequired), [servicenow_oauth_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/servicenow_oauth_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [resilient_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts#:~:text=authRequired), [resilient_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts#:~:text=authRequired), [resilient_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts#:~:text=authRequired)+ 8 more | - | + + + ## @kbn/unified-field-list | Deprecated API | Reference location(s) | Remove By | @@ -498,7 +586,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [mount_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx#:~:text=wrapWithTheme), [mount_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx#:~:text=wrapWithTheme) | - | +| | [mount_section.tsx](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx#:~:text=wrapWithTheme), [mount_section.tsx](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx#:~:text=wrapWithTheme) | - | @@ -557,7 +645,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/asset_inventory/public/application.tsx#:~:text=appBasePath) | - | +| | [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/asset_inventory/public/application.tsx#:~:text=appBasePath) | - | + + + +## banners + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [info.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/banners/server/routes/info.ts#:~:text=authRequired) | - | @@ -566,8 +662,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [datasource_component.js](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/datasource/datasource_component.js#:~:text=title) | - | -| | [embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx#:~:text=EmbeddablePanel), [embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx#:~:text=EmbeddablePanel) | - | -| | [embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx#:~:text=getEmbeddableFactories), [editor_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/workpad_header/editor_menu/editor_menu.tsx#:~:text=getEmbeddableFactories) | - | +| | [editor_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/workpad_header/editor_menu/editor_menu.tsx#:~:text=getEmbeddableFactories) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context), [embeddable.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts#:~:text=context), [escount.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts#:~:text=context), [esdocs.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/common/functions/filters.ts#:~:text=context), [neq.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context) | - | | | [setup_expressions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/setup_expressions.ts#:~:text=getFunction) | - | | | [functions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/functions/functions.test.ts#:~:text=getFunctions) | - | @@ -608,8 +703,16 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [installation_stats_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts#:~:text=policy_id), [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_defend/public/test/mocks.ts#:~:text=policy_id), [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_defend/public/test/mocks.ts#:~:text=policy_id) | - | -| | [installation_stats_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts#:~:text=policy_id), [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_defend/public/test/mocks.ts#:~:text=policy_id), [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_defend/public/test/mocks.ts#:~:text=policy_id) | - | +| | [installation_stats_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts#:~:text=policy_id), [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts#:~:text=policy_id), [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts#:~:text=policy_id) | - | +| | [installation_stats_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts#:~:text=policy_id), [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts#:~:text=policy_id), [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts#:~:text=policy_id) | - | + + + +## cloudFullStory + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [fullstory.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_integrations/cloud_full_story/server/routes/fullstory.ts#:~:text=authRequired) | - | @@ -625,10 +728,10 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [setup_routes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts#:~:text=authc), [setup_routes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts#:~:text=authc) | - | -| | [csp_benchmark_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts#:~:text=migrations) | - | -| | [csp_benchmark_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts#:~:text=schemas), [csp_settings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts#:~:text=schemas) | - | -| | [cloud_security_data_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx#:~:text=externalControlColumns) | - | +| | [setup_routes.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/setup_routes.ts#:~:text=authc), [setup_routes.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/setup_routes.ts#:~:text=authc) | - | +| | [csp_benchmark_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts#:~:text=migrations) | - | +| | [csp_benchmark_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts#:~:text=schemas), [csp_settings.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts#:~:text=schemas) | - | +| | [cloud_security_data_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx#:~:text=externalControlColumns) | - | @@ -636,7 +739,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/console/server/plugin.ts#:~:text=legacy) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/console/server/plugin.ts#:~:text=legacy) | - | @@ -653,7 +756,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts#:~:text=license%24) | 8.8.0 | + + + +## customBranding + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [info.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/custom_branding/server/routes/info.ts#:~:text=authRequired) | - | @@ -661,8 +772,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [dashboard_grid_item.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx#:~:text=EmbeddablePanel), [dashboard_grid_item.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx#:~:text=EmbeddablePanel) | - | -| | [migrate_dashboard_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.ts#:~:text=getEmbeddableFactory), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=getEmbeddableFactory), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=getEmbeddableFactory), [create_dashboard.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts#:~:text=getEmbeddableFactory), [create_dashboard.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts#:~:text=getEmbeddableFactory), [create_dashboard.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts#:~:text=getEmbeddableFactory), [migrate_dashboard_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts#:~:text=getEmbeddableFactory), [migrate_dashboard_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts#:~:text=getEmbeddableFactory), [migrate_dashboard_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts#:~:text=getEmbeddableFactory), [migrate_dashboard_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts#:~:text=getEmbeddableFactory)+ 1 more | - | | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/common/bwc/types.ts#:~:text=SavedObjectReference), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/common/bwc/types.ts#:~:text=SavedObjectReference) | - | | | [dashboard_saved_object.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts#:~:text=migrations) | - | @@ -761,23 +870,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | -| | [helpers.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/helpers.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [explicit_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/explicit_input.test.ts#:~:text=executeTriggerActions) | - | | | [default_embeddable_factory_provider.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts#:~:text=SavedObjectAttributes), [default_embeddable_factory_provider.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/types.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/types.ts#:~:text=SavedObjectAttributes) | - | | | [migrate_base_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/migrate_base_input.ts#:~:text=SavedObjectReference), [migrate_base_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/migrate_base_input.ts#:~:text=SavedObjectReference), [migrate_base_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/migrate_base_input.ts#:~:text=SavedObjectReference), [inject.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/inject.ts#:~:text=SavedObjectReference), [inject.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/inject.ts#:~:text=SavedObjectReference) | - | | | [i_embeddable.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts#:~:text=HasLegacyLibraryTransforms), [i_embeddable.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts#:~:text=HasLegacyLibraryTransforms) | - | -## embeddableEnhanced - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/embeddable_enhanced/public/plugin.ts#:~:text=EmbeddableContext), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/embeddable_enhanced/public/plugin.ts#:~:text=EmbeddableContext), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/embeddable_enhanced/public/plugin.ts#:~:text=EmbeddableContext) | - | -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/embeddable_enhanced/public/plugin.ts#:~:text=setCustomEmbeddableFactoryProvider) | - | - - - ## encryptedSavedObjects | Deprecated API | Reference location(s) | Remove By | @@ -794,6 +892,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi), [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi), [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi), [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi) | - | | | [check_access.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz), [check_access.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz), [check_access.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/plugin.ts#:~:text=legacy) | - | +| | [route_config_helpers.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/route_config_helpers.test.ts#:~:text=authRequired) | - | | | [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes) | - | @@ -828,9 +927,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [observability_data_views.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.ts#:~:text=title), [report_definition_field.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx#:~:text=title), [use_filter_values.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts#:~:text=title), [filter_value_btn.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx#:~:text=title), [sample_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts#:~:text=title), [sample_attribute_kpi.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts#:~:text=title), [sample_attribute_with_reference_lines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts#:~:text=title), [test_formula_metric_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title)+ 2 more | - | -| | [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | -| | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart) | - | +| | [observability_data_views.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts#:~:text=title), [report_definition_field.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx#:~:text=title), [use_filter_values.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts#:~:text=title), [filter_value_btn.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx#:~:text=title), [sample_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts#:~:text=title), [sample_attribute_kpi.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts#:~:text=title), [sample_attribute_with_reference_lines.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts#:~:text=title), [test_formula_metric_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title)+ 2 more | - | +| | [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | +| | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart) | - | @@ -862,6 +961,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [download.ts](https://github.com/elastic/kibana/tree/main/src/plugins/files/server/routes/public_facing/download.ts#:~:text=authRequired) | - | | | [file_service_factory.ts](https://github.com/elastic/kibana/tree/main/src/plugins/files/server/file_service/file_service_factory.ts#:~:text=audit), [file_service_factory.ts](https://github.com/elastic/kibana/tree/main/src/plugins/files/server/file_service/file_service_factory.ts#:~:text=audit) | - | @@ -949,8 +1049,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24) | 8.8.0 | -| | [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/__jest__/mocks.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [rollover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx#:~:text=max_size), [rollover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx#:~:text=max_size)+ 7 more | - | +| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| | [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/mocks.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [rollover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx#:~:text=max_size), [rollover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx#:~:text=max_size)+ 7 more | - | @@ -973,11 +1073,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] -## investigateApp +## integrationAssistant | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [register_embeddable_item.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx#:~:text=getEmbeddableFactory) | - | +| | [integration_assistant_card.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx#:~:text=AssistantAvatar), [integration_assistant_card.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx#:~:text=AssistantAvatar), [header.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx#:~:text=AssistantAvatar), [header.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx#:~:text=AssistantAvatar) | - | + + + +## interactiveSetup + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [configure.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/configure.ts#:~:text=authRequired), [enroll.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/enroll.ts#:~:text=authRequired), [ping.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/ping.ts#:~:text=authRequired), [status.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/status.ts#:~:text=authRequired), [verify.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/verify.ts#:~:text=authRequired) | - | @@ -1009,7 +1117,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [use_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/kubernetes_security/public/hooks/use_filter.ts#:~:text=getHoverActions) | - | +| | [use_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_filter.ts#:~:text=getHoverActions) | - | @@ -1034,7 +1142,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/license_management/public/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -1076,7 +1184,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/application.tsx#:~:text=appBasePath) | - | +| | [application.tsx](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/management/public/application.tsx#:~:text=appBasePath) | - | @@ -1107,17 +1215,35 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/plugin.ts#:~:text=license%24) | 8.8.0 | | | [annotations.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/routes/annotations.ts#:~:text=authc) | - | | | [initialization.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/initialization/initialization.ts#:~:text=authz), [sync_task.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/sync_task.ts#:~:text=authz), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/plugin.ts#:~:text=authz), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/plugin.ts#:~:text=authz) | - | +| | [capabilities_switcher.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/lib/capabilities/capabilities_switcher.ts#:~:text=authRequired) | - | | | [kibana.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/common/types/kibana.ts#:~:text=SimpleSavedObject), [kibana.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/common/types/kibana.ts#:~:text=SimpleSavedObject) | - | | | [modules.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/common/types/modules.ts#:~:text=SavedObjectAttributes), [modules.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/common/types/modules.ts#:~:text=SavedObjectAttributes) | - | | | [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/saved_objects.ts#:~:text=migrations), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/saved_objects.ts#:~:text=migrations), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/saved_objects.ts#:~:text=migrations) | - | +## mockIdpPlugin + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-mock-idp-plugin/server/plugin.ts#:~:text=authRequired), [plugin.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-mock-idp-plugin/server/plugin.ts#:~:text=authRequired), [plugin.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-mock-idp-plugin/server/plugin.ts#:~:text=authRequired), [plugin.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-mock-idp-plugin/server/plugin.ts#:~:text=authRequired) | - | + + + ## monitoring | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [url_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/url_state.ts#:~:text=syncQueryStateWithUrl), [url_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/url_state.ts#:~:text=syncQueryStateWithUrl) | - | +| | [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/components/header_menu/header_menu_portal.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/components/header_menu/header_menu_portal.tsx#:~:text=toMountPoint) | - | + + + +## monitoringCollection + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [get_metrics_by_type.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring_collection/server/routes/api/v1/dynamic_route/get_metrics_by_type.ts#:~:text=authRequired), [get_metrics.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring_collection/server/routes/api/v1/prometheus/get_metrics.ts#:~:text=authRequired) | - | @@ -1125,7 +1251,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts#:~:text=authc), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts#:~:text=authc) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts#:~:text=authc), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts#:~:text=authc) | - | + + + +## observabilityAIAssistantApp + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx#:~:text=AssistantAvatar) | - | @@ -1133,7 +1267,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx#:~:text=wrapWithTheme), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx#:~:text=wrapWithTheme) | - | +| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx#:~:text=wrapWithTheme), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx#:~:text=wrapWithTheme) | - | @@ -1157,12 +1291,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | -| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | -| | [pack_queries_status_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/packs/pack_queries_status_table.tsx#:~:text=indexPatternId), [view_results_in_discover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/discover/view_results_in_discover.tsx#:~:text=indexPatternId), [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | -| | [create_action_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/handlers/action/create_action_service.ts#:~:text=license%24) | 8.8.0 | -| | [add_to_timeline_button.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/timelines/add_to_timeline_button.tsx#:~:text=getHoverActions) | - | -| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | +| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | +| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | +| | [pack_queries_status_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx#:~:text=indexPatternId), [view_results_in_discover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx#:~:text=indexPatternId), [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | +| | [create_action_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts#:~:text=license%24) | 8.8.0 | +| | [add_to_timeline_button.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/public/timelines/add_to_timeline_button.tsx#:~:text=getHoverActions) | - | +| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | @@ -1170,8 +1304,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24) | 8.8.0 | -| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx#:~:text=license%24) | 8.8.0 | +| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/server/services/license.ts#:~:text=license%24) | 8.8.0 | @@ -1195,7 +1329,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/remote_clusters/server/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -1212,7 +1346,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/rollup/server/services/license.ts#:~:text=license%24) | 8.8.0 | @@ -1278,6 +1412,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## searchAssistant + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/search_assistant/public/components/nav_control/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/search_assistant/public/components/nav_control/index.tsx#:~:text=AssistantAvatar) | - | + + + ## searchPlayground | Deprecated API | Reference location(s) | Remove By | @@ -1290,8 +1432,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24) | 8.8.0 | -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -1314,6 +1456,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/plugin.ts#:~:text=license%24) | 8.8.0 | | | [logout_app.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logout/logout_app.test.ts#:~:text=appBasePath) | - | +| | [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/common.ts#:~:text=authRequired), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/common.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [saml.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/saml.ts#:~:text=authRequired), [reset_session_page.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authorization/reset_session_page.ts#:~:text=authRequired), [capture_url.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/views/capture_url.ts#:~:text=authRequired)+ 12 more | - | | | [config.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/config.ts#:~:text=max) | - | | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/plugin.tsx#:~:text=authc) | - | | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/plugin.tsx#:~:text=authc) | - | @@ -1329,52 +1472,54 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts#:~:text=alertFactory) | - | -| | [wrap_search_source_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts#:~:text=create) | - | -| | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch) | - | -| | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion)+ 12 more | - | -| | [dependencies_start_mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts#:~:text=indexPatterns) | - | -| | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion)+ 34 more | - | -| | [wrap_search_source_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts#:~:text=create) | - | -| | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch) | - | -| | [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/hooks/eql/api.ts#:~:text=options) | - | -| | [create_sourcerer_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts#:~:text=title), [create_sourcerer_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts#:~:text=title), [create_sourcerer_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts#:~:text=title) | - | -| | [fleet_services.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts#:~:text=policy_id), [fleet_services.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts#:~:text=policy_id), [endpoint_metadata_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts#:~:text=policy_id), [endpoint_package_policies.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts#:~:text=policy_id), [index.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts#:~:text=policy_id) | - | -| | [fleet_services.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts#:~:text=policy_id), [fleet_services.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts#:~:text=policy_id), [endpoint_metadata_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts#:~:text=policy_id), [endpoint_package_policies.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts#:~:text=policy_id), [index.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts#:~:text=policy_id) | - | -| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | -| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | -| | [get_is_alert_suppression_active.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts#:~:text=license%24), [create_threat_signals.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts#:~:text=license%24), [query.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts#:~:text=license%24), [threshold.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24) | 8.8.0 | -| | [route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts#:~:text=authc) | - | -| | [suggest_user_profiles_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts#:~:text=userProfiles), [get_notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts#:~:text=userProfiles), [suggest_user_profiles_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts#:~:text=userProfiles), [get_notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts#:~:text=userProfiles) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedCellValueElementProps), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedCellValueElementProps) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedRowRenderer), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedRowRenderer) | - | -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=BeatFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=BeatFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=BeatFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=BeatFields) | - | -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/timeline/cells/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/timeline/cells/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields)+ 70 more | - | -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyRequest), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyRequest) | - | -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyResponse), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyResponse) | - | -| | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/hooks/types.ts#:~:text=SimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/hooks/types.ts#:~:text=SimpleSavedObject) | - | -| | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion)+ 34 more | - | -| | [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes) | - | -| | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject) | - | -| | [timelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts#:~:text=migrations), [notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts#:~:text=migrations), [pinned_events.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts#:~:text=migrations), [legacy_saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts#:~:text=migrations), [saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts#:~:text=migrations) | - | -| | [timelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts#:~:text=convertToMultiNamespaceTypeVersion), [notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts#:~:text=convertToMultiNamespaceTypeVersion), [pinned_events.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts#:~:text=convertToMultiNamespaceTypeVersion), [legacy_saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | -| | [links.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/links.ts#:~:text=authc), [hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kibana/hooks.ts#:~:text=authc) | - | -| | [use_bulk_get_user_profiles.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.tsx#:~:text=userProfiles), [use_get_current_user_profile.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.tsx#:~:text=userProfiles) | - | -| | [request_context_factory.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/request_context_factory.ts#:~:text=audit), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/plugin.ts#:~:text=audit), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/plugin.ts#:~:text=audit) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [mappers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID)+ 18 more | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID)+ 19 more | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exception_generator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exception_generator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID)+ 3 more | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID)+ 1 more | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION) | - | -| | [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.tsx#:~:text=externalControlColumns) | - | +| | [route.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts#:~:text=alertFactory) | - | +| | [wrap_search_source_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts#:~:text=create) | - | +| | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch) | - | +| | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion)+ 12 more | - | +| | [dependencies_start_mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts#:~:text=indexPatterns) | - | +| | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion)+ 34 more | - | +| | [wrap_search_source_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts#:~:text=create) | - | +| | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch) | - | +| | [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/hooks/eql/api.ts#:~:text=options) | - | +| | [create_sourcerer_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts#:~:text=title), [create_sourcerer_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts#:~:text=title), [create_sourcerer_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts#:~:text=title) | - | +| | [fleet_services.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts#:~:text=policy_id), [fleet_services.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts#:~:text=policy_id), [endpoint_metadata_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts#:~:text=policy_id), [endpoint_package_policies.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts#:~:text=policy_id), [index.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts#:~:text=policy_id) | - | +| | [fleet_services.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts#:~:text=policy_id), [fleet_services.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts#:~:text=policy_id), [endpoint_metadata_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts#:~:text=policy_id), [endpoint_package_policies.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts#:~:text=policy_id), [index.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts#:~:text=policy_id) | - | +| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | +| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | +| | [get_is_alert_suppression_active.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts#:~:text=license%24), [create_threat_signals.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts#:~:text=license%24), [query.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts#:~:text=license%24), [threshold.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24) | 8.8.0 | +| | [route.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts#:~:text=authc) | - | +| | [suggest_user_profiles_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts#:~:text=userProfiles), [get_notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts#:~:text=userProfiles), [suggest_user_profiles_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts#:~:text=userProfiles), [get_notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts#:~:text=userProfiles) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedCellValueElementProps), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedCellValueElementProps) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedRowRenderer), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedRowRenderer) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=BeatFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=BeatFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=BeatFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=BeatFields) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/types/timeline/cells/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/types/timeline/cells/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields)+ 70 more | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyRequest), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyRequest) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyResponse), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyResponse) | - | +| | [agent_status_handler.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts#:~:text=authRequired), [resolver.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts#:~:text=authRequired), [resolver.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts#:~:text=authRequired), [resolver.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts#:~:text=authRequired), [update_insight.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts#:~:text=authRequired), [get_insights.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts#:~:text=authRequired), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts#:~:text=authRequired), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts#:~:text=authRequired), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts#:~:text=authRequired), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/index.ts#:~:text=authRequired)+ 19 more | - | +| | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/hooks/types.ts#:~:text=SimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/hooks/types.ts#:~:text=SimpleSavedObject) | - | +| | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion)+ 34 more | - | +| | [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes) | - | +| | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject) | - | +| | [timelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts#:~:text=migrations), [notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts#:~:text=migrations), [pinned_events.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts#:~:text=migrations), [legacy_saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts#:~:text=migrations), [saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts#:~:text=migrations) | - | +| | [timelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts#:~:text=convertToMultiNamespaceTypeVersion), [notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts#:~:text=convertToMultiNamespaceTypeVersion), [pinned_events.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts#:~:text=convertToMultiNamespaceTypeVersion), [legacy_saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.tsx#:~:text=AssistantAvatar), [header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/assistant/header_link.tsx#:~:text=AssistantAvatar), [header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/assistant/header_link.tsx#:~:text=AssistantAvatar), [workflow_insights_scan.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx#:~:text=AssistantAvatar), [workflow_insights_scan.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx#:~:text=AssistantAvatar)+ 17 more | - | +| | [links.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/links.ts#:~:text=authc), [hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/hooks.ts#:~:text=authc) | - | +| | [use_bulk_get_user_profiles.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.tsx#:~:text=userProfiles), [use_get_current_user_profile.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.tsx#:~:text=userProfiles) | - | +| | [request_context_factory.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/request_context_factory.ts#:~:text=audit), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/plugin.ts#:~:text=audit), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/plugin.ts#:~:text=audit) | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [mappers.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID)+ 18 more | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME) | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION) | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID)+ 19 more | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME) | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION) | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exception_generator.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exception_generator.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID)+ 3 more | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME) | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION) | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID)+ 1 more | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME) | - | +| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION) | - | +| | [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.tsx#:~:text=externalControlColumns) | - | @@ -1398,9 +1543,9 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [executor.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.test.ts#:~:text=alertFactory) | - | -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/slo/public/plugin.ts#:~:text=license%24) | 8.8.0 | -| | [slo.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/slo/server/saved_objects/slo.ts#:~:text=migrations) | - | +| | [executor.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/executor.test.ts#:~:text=alertFactory) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/slo/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [slo.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/slo/server/saved_objects/slo.ts#:~:text=migrations) | - | @@ -1408,7 +1553,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | @@ -1418,6 +1563,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | ---------------|-----------|-----------| | | [on_post_auth_interceptor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts#:~:text=getKibanaFeatures), [spaces_usage_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts#:~:text=getKibanaFeatures), [on_post_auth_interceptor.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts#:~:text=getKibanaFeatures) | 8.8.0 | | | [spaces_usage_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [spaces_usage_collector.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.test.ts#:~:text=license%24) | 8.8.0 | +| | [capabilities_switcher.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts#:~:text=authRequired) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/legacy_urls/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/legacy_urls/types.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [copy_to_space_flyout_internal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx#:~:text=createNewCopy) | - | | | [saved_objects_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts#:~:text=migrations), [saved_objects_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts#:~:text=migrations) | - | @@ -1442,11 +1588,11 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [stderr_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx#:~:text=indexPatternId) | - | -| | [synthetics_private_location.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts#:~:text=policy_id) | - | -| | [synthetics_private_location.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts#:~:text=policy_id) | - | -| | [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [enablement.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts#:~:text=authc), [enablement.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc)+ 6 more | - | -| | [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor.ts#:~:text=migrations) | - | +| | [stderr_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx#:~:text=indexPatternId) | - | +| | [synthetics_private_location.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts#:~:text=policy_id) | - | +| | [synthetics_private_location.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts#:~:text=policy_id) | - | +| | [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [enablement.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts#:~:text=authc), [enablement.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc)+ 6 more | - | +| | [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor.ts#:~:text=migrations) | - | @@ -1454,6 +1600,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [background_task_utilization.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.ts#:~:text=authRequired), [background_task_utilization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts#:~:text=authRequired), [background_task_utilization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts#:~:text=authRequired), [background_task_utilization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts#:~:text=authRequired), [background_task_utilization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts#:~:text=authRequired) | - | | | [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/saved_objects/index.ts#:~:text=migrations) | - | @@ -1464,6 +1611,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [telemetry_usage_stats.ts](https://github.com/elastic/kibana/tree/main/src/plugins/telemetry/server/routes/telemetry_usage_stats.ts#:~:text=get), [telemetry_usage_stats.ts](https://github.com/elastic/kibana/tree/main/src/plugins/telemetry/server/routes/telemetry_usage_stats.ts#:~:text=get) | - | +| | [telemetry_config.ts](https://github.com/elastic/kibana/tree/main/src/plugins/telemetry/server/routes/telemetry_config.ts#:~:text=authRequired) | - | @@ -1471,7 +1619,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions) | - | +| | [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions) | - | @@ -1479,7 +1627,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts#:~:text=title) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts#:~:text=title) | - | @@ -1541,8 +1689,16 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | -| | [uptime_settings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts#:~:text=migrations) | - | +| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | +| | [uptime_settings.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts#:~:text=migrations) | - | + + + +## usageCollection + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [stats.ts](https://github.com/elastic/kibana/tree/main/src/plugins/usage_collection/server/routes/stats/stats.ts#:~:text=authRequired) | - | @@ -1550,7 +1706,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [use_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts#:~:text=title) | - | +| | [use_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts#:~:text=title) | - | @@ -1611,7 +1767,8 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [search_selection.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/search_selection/search_selection.tsx#:~:text=includeFields), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx#:~:text=includeFields) | - | +| | [search_selection.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/search_selection/search_selection.tsx#:~:text=includeFields) | - | +| | [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=savedObjects), [visualize_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=savedObjects) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=SavedObjectsClientContract), [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=SavedObjectsClientContract) | - | | | [visualize_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=delete) | - | @@ -1620,8 +1777,8 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/types.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [services.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/services.ts#:~:text=SavedObjectsStart), [services.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/services.ts#:~:text=SavedObjectsStart) | - | | | [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectAttribute), [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectAttribute) | - | -| | [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectAttributes), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectAttributes), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx#:~:text=SavedObjectAttributes), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx#:~:text=SavedObjectAttributes), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx#:~:text=SavedObjectAttributes), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx#:~:text=SavedObjectAttributes) | - | -| | [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectReference), [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectReference), [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx#:~:text=SavedObjectReference)+ 10 more | - | +| | [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectAttributes), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectAttributes), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx#:~:text=SavedObjectAttributes), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx#:~:text=SavedObjectAttributes) | - | +| | [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectReference), [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectReference), [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [visualize_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=SavedObjectReference)+ 8 more | - | | | [visualization.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/server/saved_objects/visualization.ts#:~:text=migrations) | - | | | [visualization.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/server/saved_objects/visualization.ts#:~:text=schemas) | - | | | [visualization.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/server/saved_objects/visualization.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -1632,4 +1789,4 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 | \ No newline at end of file +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 | \ No newline at end of file diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 9d0be81c71e9a..a9c697d635ec5 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -33,8 +33,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| upgradeAssistant | | [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | -| licenseManagement | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| upgradeAssistant | | [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/rollup/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| licenseManagement | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/license_management/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -42,7 +42,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| dashboard | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal), [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | +| presentationUtil | | [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal), [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | @@ -72,7 +72,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| | graph | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/server/plugin.ts#:~:text=license%24) | 8.8.0 | -| graph | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | +| graph | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | @@ -106,7 +106,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| slo | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/slo/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| slo | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/slo/public/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -123,7 +123,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| osquery | | [create_action_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/handlers/action/create_action_service.ts#:~:text=license%24) | 8.8.0 | +| osquery | | [create_action_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts#:~:text=license%24) | 8.8.0 | @@ -131,6 +131,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | -| securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | -| securitySolution | | [get_is_alert_suppression_active.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts#:~:text=license%24), [create_threat_signals.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts#:~:text=license%24), [query.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts#:~:text=license%24), [threshold.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24) | 8.8.0 | \ No newline at end of file +| securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | +| securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | +| securitySolution | | [get_is_alert_suppression_active.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts#:~:text=license%24), [create_threat_signals.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts#:~:text=license%24), [query.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts#:~:text=license%24), [threshold.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24) | 8.8.0 | \ No newline at end of file diff --git a/api_docs/dev_tools.devdocs.json b/api_docs/dev_tools.devdocs.json index 31f7b09093884..7bb0f9caff8eb 100644 --- a/api_docs/dev_tools.devdocs.json +++ b/api_docs/dev_tools.devdocs.json @@ -35,7 +35,7 @@ }, ", void, object, object>" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -49,7 +49,7 @@ "signature": [ "any" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -77,7 +77,7 @@ "DevToolApp", "; }" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -98,7 +98,7 @@ }, "" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -110,7 +110,7 @@ "tags": [], "label": "{ urlForwarding }", "description": [], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -124,7 +124,7 @@ "signature": [ "{ forwardApp: (legacyAppId: string, newAppId: string, rewritePath?: ((legacyPath: string) => string) | undefined) => void; }" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -143,7 +143,7 @@ "signature": [ "() => void" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -159,7 +159,7 @@ "signature": [ "() => void" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -185,7 +185,7 @@ "signature": [ "\"devTools\"" ], - "path": "src/plugins/dev_tools/common/constants.ts", + "path": "src/platform/plugins/shared/dev_tools/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -202,7 +202,7 @@ "signature": [ "\"devTools:enablePersistentConsole\"" ], - "path": "src/plugins/dev_tools/common/constants.ts", + "path": "src/platform/plugins/shared/dev_tools/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -216,7 +216,7 @@ "tags": [], "label": "DevToolsSetup", "description": [], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -235,7 +235,7 @@ ") => ", "DevToolApp" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -251,7 +251,7 @@ "signature": [ "CreateDevToolArgs" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -290,7 +290,7 @@ "signature": [ "\"devTools\"" ], - "path": "src/plugins/dev_tools/common/constants.ts", + "path": "src/platform/plugins/shared/dev_tools/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -307,7 +307,7 @@ "signature": [ "\"devTools:enablePersistentConsole\"" ], - "path": "src/plugins/dev_tools/common/constants.ts", + "path": "src/platform/plugins/shared/dev_tools/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 120607e83301d..26217b55f670d 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.devdocs.json b/api_docs/discover.devdocs.json index 8536402e375e1..fe9734b3de457 100644 --- a/api_docs/discover.devdocs.json +++ b/api_docs/discover.devdocs.json @@ -1171,6 +1171,26 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "discover", + "id": "def-public.DiscoverServices.userProfile", + "type": "Object", + "tags": [], + "label": "userProfile", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-user-profile-browser", + "scope": "public", + "docId": "kibKbnCoreUserProfileBrowserPluginApi", + "section": "def-public.UserProfileService", + "text": "UserProfileService" + } + ], + "path": "src/plugins/discover/public/build_services.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "discover", "id": "def-public.DiscoverServices.filterManager", @@ -3699,7 +3719,11 @@ "section": "def-public.SerializedTimeRange", "text": "SerializedTimeRange" }, - " & { savedObjectTitle?: string | undefined; savedObjectId?: string | undefined; savedObjectDescription?: string | undefined; nonPersistedDisplayOptions?: ", + " & { rawSavedObjectAttributes?: Partial> | undefined; savedObjectTitle?: string | undefined; savedObjectId?: string | undefined; savedObjectDescription?: string | undefined; nonPersistedDisplayOptions?: ", { "pluginId": "discover", "scope": "public", @@ -4712,23 +4736,23 @@ }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/public/packs/pack_queries_status_table.tsx" + "path": "x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/public/discover/view_results_in_discover.tsx" + "path": "x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx" + "path": "x-pack/platform/plugins/shared/osquery/public/common/hooks/use_discover_link.tsx" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx" + "path": "x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx" } ] }, diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 65ee06b1e48b5..64c326cc42c45 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 214 | 0 | 166 | 30 | +| 215 | 0 | 167 | 30 | ## Client diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index db1b8f1e5cc3d..a9bcef7185276 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index 174c8d5113416..a4febedc24e44 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.devdocs.json b/api_docs/ecs_data_quality_dashboard.devdocs.json index bff702356c0e2..ddb5d4f105f49 100644 --- a/api_docs/ecs_data_quality_dashboard.devdocs.json +++ b/api_docs/ecs_data_quality_dashboard.devdocs.json @@ -24,7 +24,7 @@ "description": [ "The plugin setup interface" ], - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/types.ts", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -40,7 +40,7 @@ "description": [ "The plugin start interface" ], - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/types.ts", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index b6eeb24fdb051..b9d89669002c0 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.devdocs.json b/api_docs/elastic_assistant.devdocs.json index 6292df433806a..32dc636af1e75 100644 --- a/api_docs/elastic_assistant.devdocs.json +++ b/api_docs/elastic_assistant.devdocs.json @@ -21,7 +21,7 @@ "description": [ "\nInterfaces for registering tools to be used by the elastic assistant" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -32,7 +32,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -43,7 +43,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -54,7 +54,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -65,7 +65,7 @@ "tags": [], "label": "sourceRegister", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -87,7 +87,7 @@ }, ") => boolean" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -107,7 +107,7 @@ "text": "AssistantToolParams" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -139,7 +139,7 @@ "ZodObjectAny", "> | null" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -159,7 +159,7 @@ "text": "AssistantToolParams" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -177,7 +177,7 @@ "tags": [], "label": "AssistantToolParams", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -191,7 +191,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -205,7 +205,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[] | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -226,7 +226,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -237,7 +237,7 @@ "tags": [], "label": "isEnabledKnowledgeBase", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -251,7 +251,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1519,7 +1519,7 @@ "default", "; }" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1534,7 +1534,7 @@ "AIAssistantKnowledgeBaseDataClient", " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1548,7 +1548,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1565,7 +1565,7 @@ "AssistantToolLlm", " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1586,7 +1586,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1600,7 +1600,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1620,7 +1620,7 @@ "text": "Logger" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1634,7 +1634,7 @@ "signature": [ "((newReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\">) => void) | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1648,7 +1648,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\">" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1666,7 +1666,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1687,7 +1687,7 @@ }, " | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; } | { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, any>" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1701,7 +1701,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1722,7 +1722,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -1736,7 +1736,7 @@ "tags": [], "label": "ElasticAssistantPluginSetupDependencies", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1756,7 +1756,7 @@ "text": "PluginSetupContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1804,7 +1804,7 @@ "; } | undefined>; }; } & ", "TrainedModelsProvider" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1824,7 +1824,7 @@ "text": "TaskManagerSetupContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1845,7 +1845,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -1859,7 +1859,7 @@ "tags": [], "label": "ElasticAssistantPluginStartDependencies", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1879,7 +1879,7 @@ "text": "PluginStartContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1899,7 +1899,7 @@ "text": "LlmTasksPluginStart" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1919,7 +1919,7 @@ "text": "InferenceServerStart" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1940,27 +1940,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "elasticAssistant", - "id": "def-server.ElasticAssistantPluginStartDependencies.security", - "type": "Object", - "tags": [], - "label": "security", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-security-server", - "scope": "server", - "docId": "kibKbnCoreSecurityServerPluginApi", - "section": "def-server.SecurityServiceStart", - "text": "SecurityServiceStart" - } - ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1980,7 +1960,7 @@ "text": "LicensingPluginStart" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2000,7 +1980,7 @@ "text": "ProductDocBaseStartContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -2020,7 +2000,7 @@ "description": [ "The plugin setup interface" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2040,7 +2020,7 @@ "text": "PluginSetupContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -2057,7 +2037,7 @@ "description": [ "The plugin start interface" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2079,7 +2059,7 @@ "text": "PluginStartContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2101,7 +2081,7 @@ "text": "InferenceServerStart" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2125,7 +2105,7 @@ }, ">) => void" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2141,7 +2121,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2166,7 +2146,7 @@ }, ">" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2193,7 +2173,7 @@ "text": "AssistantFeatures" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2207,7 +2187,7 @@ "description": [ "Name of the plugin to get the features for" ], - "path": "x-pack/plugins/elastic_assistant/server/services/app_context.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.ts", "deprecated": false, "trackAdoption": false } @@ -2233,7 +2213,7 @@ }, "[]) => void" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2249,7 +2229,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2273,7 +2253,7 @@ }, "[]" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2301,7 +2281,7 @@ }, "[]" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2315,7 +2295,7 @@ "description": [ "Name of the plugin to get the tools for" ], - "path": "x-pack/plugins/elastic_assistant/server/services/app_context.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 6b43f2332caf1..c22e2f3724007 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 56 | 0 | 41 | 2 | +| 55 | 0 | 40 | 2 | ## Server diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index 23bb84e398ae2..a3f56540a9592 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -4,2259 +4,281 @@ "classes": [ { "parentPluginId": "embeddable", - "id": "def-public.AttributeService", + "id": "def-public.Embeddable", "type": "Class", "tags": [], - "label": "AttributeService", + "label": "Embeddable", "description": [], "signature": [ { "pluginId": "embeddable", "scope": "public", "docId": "kibEmbeddablePluginApi", - "section": "def-public.AttributeService", - "text": "AttributeService" + "section": "def-public.Embeddable", + "text": "Embeddable" + }, + " implements ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.IEmbeddable", + "text": "IEmbeddable" }, - "" + "" ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed", - "type": "Function", + "id": "def-public.Embeddable.runtimeId", + "type": "number", "tags": [], - "label": "Constructor", + "label": "runtimeId", + "description": [], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.runtimeId", + "type": "number", + "tags": [], + "label": "runtimeId", + "description": [], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.deferEmbeddableLoad", + "type": "boolean", + "tags": [], + "label": "deferEmbeddableLoad", + "description": [], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.fatalError", + "type": "Object", + "tags": [], + "label": "fatalError", "description": [], "signature": [ - "any" + "Error | undefined" ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed.$2", - "type": "Object", - "tags": [], - "label": "toasts", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-notifications-browser", - "scope": "public", - "docId": "kibKbnCoreNotificationsBrowserPluginApi", - "section": "def-public.IToasts", - "text": "IToasts" - } - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed.$3", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "AttributeServiceOptions", - "" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed.$4", - "type": "Function", - "tags": [], - "label": "getEmbeddableFactory", - "description": [], - "signature": [ - "((embeddableFactoryId: string) => ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableFactory", - "text": "EmbeddableFactory" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", any>, ", - { - "pluginId": "savedObjectsFinder", - "scope": "common", - "docId": "kibSavedObjectsFinderPluginApi", - "section": "def-common.FinderAttributes", - "text": "FinderAttributes" - }, - ">) | undefined" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.output", + "type": "Uncategorized", + "tags": [], + "label": "output", + "description": [], + "signature": [ + "TEmbeddableOutput" ], - "returnComment": [] + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false, + "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.AttributeService.unwrapAttributes", - "type": "Function", + "id": "def-public.Embeddable.input", + "type": "Uncategorized", "tags": [], - "label": "unwrapAttributes", + "label": "input", "description": [], "signature": [ - "(input: ValType | RefType) => Promise<", - "AttributeServiceUnwrapResult", - ">" + "TEmbeddableInput" ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, - "trackAdoption": false, - "children": [ + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.renderComplete", + "type": "Object", + "tags": [], + "label": "renderComplete", + "description": [], + "signature": [ { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.unwrapAttributes.$1", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "pluginId": "kibanaUtils", + "scope": "public", + "docId": "kibKibanaUtilsPluginApi", + "section": "def-public.RenderCompleteDispatcher", + "text": "RenderCompleteDispatcher" } ], - "returnComment": [] + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Embeddable.destroyed", + "type": "boolean", + "tags": [], + "label": "destroyed", + "description": [], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", + "deprecated": false, + "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.AttributeService.wrapAttributes", + "id": "def-public.Embeddable.Unnamed", "type": "Function", "tags": [], - "label": "wrapAttributes", + "label": "Constructor", "description": [], "signature": [ - "(newAttributes: SavedObjectAttributes, useRefType: boolean, input?: ValType | RefType | undefined) => Promise>" + "any" ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "embeddable", - "id": "def-public.AttributeService.wrapAttributes.$1", + "id": "def-public.Embeddable.Unnamed.$1", "type": "Uncategorized", "tags": [], - "label": "newAttributes", + "label": "input", "description": [], "signature": [ - "SavedObjectAttributes" + "TEmbeddableInput" ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true }, { "parentPluginId": "embeddable", - "id": "def-public.AttributeService.wrapAttributes.$2", - "type": "boolean", + "id": "def-public.Embeddable.Unnamed.$2", + "type": "Uncategorized", "tags": [], - "label": "useRefType", + "label": "output", "description": [], "signature": [ - "boolean" + "TEmbeddableOutput" ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.wrapAttributes.$3", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType | undefined" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "embeddable", - "id": "def-public.AttributeService.inputIsRefType", - "type": "Function", + "id": "def-public.Embeddable.uuid", + "type": "string", "tags": [], - "label": "inputIsRefType", + "label": "uuid", "description": [], - "signature": [ - "(input: ValType | RefType) => input is RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.inputIsRefType.$1", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] + "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsValueType", - "type": "Function", + "id": "def-public.Embeddable.disableTriggers", + "type": "boolean", "tags": [], - "label": "getInputAsValueType", + "label": "disableTriggers", "description": [], - "signature": [ - "(input: ValType | RefType) => Promise" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsValueType.$1", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] + "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsRefType", + "id": "def-public.Embeddable.onEdit", "type": "Function", "tags": [], - "label": "getInputAsRefType", + "label": "onEdit", "description": [], "signature": [ - "(input: ValType | RefType, saveOptions?: { showSaveModal: boolean; saveModalTitle?: string | undefined; } | { title: string; } | undefined) => Promise" + "() => Promise" ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsRefType.$1", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsRefType.$2", - "type": "CompoundType", - "tags": [], - "label": "saveOptions", - "description": [], - "signature": [ - "{ showSaveModal: boolean; saveModalTitle?: string | undefined; } | { title: string; } | undefined" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container", - "type": "Class", - "tags": [], - "label": "Container", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Container", - "text": "Container" - }, - " extends ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" - }, - " implements ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - ",", - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.PresentationContainer", - "text": "PresentationContainer" - } - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.isContainer", - "type": "boolean", - "tags": [], - "label": "isContainer", - "description": [], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false + "returnComment": [], + "children": [] }, { "parentPluginId": "embeddable", - "id": "def-public.Container.children$", + "id": "def-public.Embeddable.viewMode", "type": "Object", "tags": [], - "label": "children$", - "description": [], - "signature": [ - "BehaviorSubject", - "<{ [key: string]: unknown; }>" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", + "label": "viewMode", "description": [], "signature": [ - "any" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + "{ source: ", + "Observable", + " | undefined; readonly value: ", { - "parentPluginId": "embeddable", - "id": "def-public.Container.Unnamed.$1", - "type": "Uncategorized", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "TContainerInput" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.ViewMode", + "text": "ViewMode" }, + "; error: (err: any) => void; forEach: { (next: (value: ", { - "parentPluginId": "embeddable", - "id": "def-public.Container.Unnamed.$2", - "type": "Uncategorized", - "tags": [], - "label": "output", - "description": [], - "signature": [ - "TContainerOutput" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.ViewMode", + "text": "ViewMode" }, + ") => void): Promise; (next: (value: ", { - "parentPluginId": "embeddable", - "id": "def-public.Container.Unnamed.$3", - "type": "Function", - "tags": [], - "label": "getFactory", - "description": [], - "signature": [ - " = ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - ">(embeddableFactoryId: string) => ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableFactory", - "text": "EmbeddableFactory" - }, - " | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.ViewMode", + "text": "ViewMode" }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.Unnamed.$4", - "type": "Object", - "tags": [], - "label": "parent", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.Unnamed.$5", - "type": "Object", - "tags": [], - "label": "settings", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableContainerSettings", - "text": "EmbeddableContainerSettings" - }, - " | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getPanelCount", - "type": "Function", - "tags": [], - "label": "getPanelCount", - "description": [], - "signature": [ - "() => number" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.removePanel", - "type": "Function", - "tags": [], - "label": "removePanel", - "description": [], - "signature": [ - "(id: string) => void" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.removePanel.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.addNewPanel", - "type": "Function", - "tags": [], - "label": "addNewPanel", - "description": [], - "signature": [ - "(panelPackage: ", - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.PanelPackage", - "text": "PanelPackage" - }, - ") => Promise" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.addNewPanel.$1", - "type": "Object", - "tags": [], - "label": "panelPackage", - "description": [], - "signature": [ - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.PanelPackage", - "text": "PanelPackage" - }, - "" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.replacePanel", - "type": "Function", - "tags": [], - "label": "replacePanel", - "description": [], - "signature": [ - "(idToRemove: string, { panelType, initialState }: ", - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.PanelPackage", - "text": "PanelPackage" - }, - ") => Promise" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.replacePanel.$1", - "type": "string", - "tags": [], - "label": "idToRemove", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.replacePanel.$2", - "type": "Object", - "tags": [], - "label": "{ panelType, initialState }", - "description": [], - "signature": [ - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.PanelPackage", - "text": "PanelPackage" - }, - "" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.setChildLoaded", - "type": "Function", - "tags": [], - "label": "setChildLoaded", - "description": [], - "signature": [ - "(embeddable: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", any>) => void" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.setChildLoaded.$1", - "type": "Object", - "tags": [], - "label": "embeddable", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", any>" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.updateInputForChild", - "type": "Function", - "tags": [], - "label": "updateInputForChild", - "description": [], - "signature": [ - "(id: string, changes: Partial) => void" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.updateInputForChild.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.updateInputForChild.$2", - "type": "Object", - "tags": [], - "label": "changes", - "description": [], - "signature": [ - "Partial" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.reload", - "type": "Function", - "tags": [], - "label": "reload", - "description": [], - "signature": [ - "() => void" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.addNewEmbeddable", - "type": "Function", - "tags": [], - "label": "addNewEmbeddable", - "description": [], - "signature": [ - " = ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - ">(type: string, explicitInput: Partial, attributes?: unknown) => Promise<", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" - }, - " | E>" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.addNewEmbeddable.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.addNewEmbeddable.$2", - "type": "Object", - "tags": [], - "label": "explicitInput", - "description": [], - "signature": [ - "Partial" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.addNewEmbeddable.$3", - "type": "Unknown", - "tags": [], - "label": "attributes", - "description": [], - "signature": [ - "unknown" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.replaceEmbeddable", - "type": "Function", - "tags": [], - "label": "replaceEmbeddable", - "description": [], - "signature": [ - " = ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - ">(id: string, newExplicitInput: Partial, newType?: string | undefined, generateNewId?: boolean | undefined) => Promise" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.replaceEmbeddable.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.replaceEmbeddable.$2", - "type": "Object", - "tags": [], - "label": "newExplicitInput", - "description": [], - "signature": [ - "Partial" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.replaceEmbeddable.$3", - "type": "string", - "tags": [], - "label": "newType", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.replaceEmbeddable.$4", - "type": "CompoundType", - "tags": [], - "label": "generateNewId", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.removeEmbeddable", - "type": "Function", - "tags": [], - "label": "removeEmbeddable", - "description": [], - "signature": [ - "(embeddableId: string) => void" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.removeEmbeddable.$1", - "type": "string", - "tags": [], - "label": "embeddableId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.onRemoveEmbeddable", - "type": "Function", - "tags": [], - "label": "onRemoveEmbeddable", - "description": [ - "\nControl the panels that are pushed to the input stream when an embeddable is\nremoved. This can be used if removing one embeddable has knock-on effects, like\nre-ordering embeddables that come after it." - ], - "signature": [ - "(embeddableId: string) => { [key: string]: ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.PanelState", - "text": "PanelState" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - " & { id: string; }>; }" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.onRemoveEmbeddable.$1", - "type": "string", - "tags": [], - "label": "embeddableId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getChildIds", - "type": "Function", - "tags": [], - "label": "getChildIds", - "description": [], - "signature": [ - "() => string[]" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getChild", - "type": "Function", - "tags": [], - "label": "getChild", - "description": [], - "signature": [ - ">(id: string) => E" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getChild.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getInputForChild", - "type": "Function", - "tags": [], - "label": "getInputForChild", - "description": [], - "signature": [ - "(embeddableId: string) => TEmbeddableInput" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getInputForChild.$1", - "type": "string", - "tags": [], - "label": "embeddableId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getAnyChildOutputChange$", - "type": "Function", - "tags": [], - "label": "getAnyChildOutputChange$", - "description": [], - "signature": [ - "() => ", - "Observable", - "" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.destroy", - "type": "Function", - "tags": [], - "label": "destroy", - "description": [], - "signature": [ - "() => void" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.untilEmbeddableLoaded", - "type": "Function", - "tags": [], - "label": "untilEmbeddableLoaded", - "description": [], - "signature": [ - ">(id: string) => Promise<", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" - }, - " | TEmbeddable>" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.untilEmbeddableLoaded.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.untilReactEmbeddableLoaded", - "type": "Function", - "tags": [], - "label": "untilReactEmbeddableLoaded", - "description": [], - "signature": [ - "(id: string) => Promise" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.untilReactEmbeddableLoaded.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getExplicitInputIsEqual", - "type": "Function", - "tags": [], - "label": "getExplicitInputIsEqual", - "description": [], - "signature": [ - "(lastInput: TContainerInput) => Promise" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getExplicitInputIsEqual.$1", - "type": "Uncategorized", - "tags": [], - "label": "lastInput", - "description": [], - "signature": [ - "TContainerInput" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.createNewPanelState", - "type": "Function", - "tags": [], - "label": "createNewPanelState", - "description": [], - "signature": [ - ">(factory: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableFactory", - "text": "EmbeddableFactory" - }, - ", partial?: Partial, attributes?: unknown) => { newPanel: ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.PanelState", - "text": "PanelState" - }, - "; otherPanels: TContainerInput[\"panels\"]; }" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.createNewPanelState.$1", - "type": "Object", - "tags": [], - "label": "factory", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableFactory", - "text": "EmbeddableFactory" - }, - "" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.createNewPanelState.$2", - "type": "Object", - "tags": [], - "label": "partial", - "description": [], - "signature": [ - "Partial" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.createNewPanelState.$3", - "type": "Unknown", - "tags": [], - "label": "attributes", - "description": [], - "signature": [ - "unknown" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getPanelState", - "type": "Function", - "tags": [], - "label": "getPanelState", - "description": [], - "signature": [ - "(embeddableId: string) => ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.PanelState", - "text": "PanelState" - }, - "" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getPanelState.$1", - "type": "string", - "tags": [], - "label": "embeddableId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getInheritedInput", - "type": "Function", - "tags": [], - "label": "getInheritedInput", - "description": [ - "\nReturn state that comes from the container and is passed down to the child. For instance, time range and\nfilters are common inherited input state. Note that state stored in `this.input.panels[embeddableId].explicitInput`\nwill override inherited input." - ], - "signature": [ - "(id: string) => TChildInput" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.getInheritedInput.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.createAndSaveEmbeddable", - "type": "Function", - "tags": [], - "label": "createAndSaveEmbeddable", - "description": [], - "signature": [ - " = ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - ">(type: string, panelState: ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.PanelState", - "text": "PanelState" - }, - "<{ id: string; version?: string | undefined; }>, otherPanels: TContainerInput[\"panels\"]) => Promise<", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" - }, - " | TEmbeddable>" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Container.createAndSaveEmbeddable.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.createAndSaveEmbeddable.$2", - "type": "Object", - "tags": [], - "label": "panelState", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.PanelState", - "text": "PanelState" - }, - "<{ id: string; version?: string | undefined; }>" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Container.createAndSaveEmbeddable.$3", - "type": "Uncategorized", - "tags": [], - "label": "otherPanels", - "description": [], - "signature": [ - "TContainerInput[\"panels\"]" - ], - "path": "src/plugins/embeddable/public/lib/containers/container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable", - "type": "Class", - "tags": [], - "label": "Embeddable", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" - }, - " implements ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.runtimeId", - "type": "number", - "tags": [], - "label": "runtimeId", - "description": [], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.runtimeId", - "type": "number", - "tags": [], - "label": "runtimeId", - "description": [], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.parent", - "type": "Object", - "tags": [], - "label": "parent", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.isContainer", - "type": "boolean", - "tags": [], - "label": "isContainer", - "description": [], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.deferEmbeddableLoad", - "type": "boolean", - "tags": [], - "label": "deferEmbeddableLoad", - "description": [], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.fatalError", - "type": "Object", - "tags": [], - "label": "fatalError", - "description": [], - "signature": [ - "Error | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.output", - "type": "Uncategorized", - "tags": [], - "label": "output", - "description": [], - "signature": [ - "TEmbeddableOutput" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.input", - "type": "Uncategorized", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "TEmbeddableInput" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.renderComplete", - "type": "Object", - "tags": [], - "label": "renderComplete", - "description": [], - "signature": [ - { - "pluginId": "kibanaUtils", - "scope": "public", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-public.RenderCompleteDispatcher", - "text": "RenderCompleteDispatcher" - } - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.destroyed", - "type": "boolean", - "tags": [], - "label": "destroyed", - "description": [], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.Unnamed.$1", - "type": "Uncategorized", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "TEmbeddableInput" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.Unnamed.$2", - "type": "Uncategorized", - "tags": [], - "label": "output", - "description": [], - "signature": [ - "TEmbeddableOutput" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.Unnamed.$3", - "type": "Object", - "tags": [], - "label": "parent", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.uuid", - "type": "string", - "tags": [], - "label": "uuid", - "description": [], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.disableTriggers", - "type": "boolean", - "tags": [], - "label": "disableTriggers", - "description": [], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.onEdit", - "type": "Function", - "tags": [], - "label": "onEdit", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.viewMode", - "type": "Object", - "tags": [], - "label": "viewMode", - "description": [], - "signature": [ - "{ source: ", - "Observable", - " | undefined; readonly value: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.ViewMode", - "text": "ViewMode" - }, - "; error: (err: any) => void; forEach: { (next: (value: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.ViewMode", - "text": "ViewMode" - }, - ") => void): Promise; (next: (value: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.ViewMode", - "text": "ViewMode" - }, - ") => void, promiseCtor: PromiseConstructorLike): Promise; }; complete: () => void; getValue: () => ", + ") => void, promiseCtor: PromiseConstructorLike): Promise; }; complete: () => void; getValue: () => ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -2586,44 +608,6 @@ "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.parentApi", - "type": "CompoundType", - "tags": [], - "label": "parentApi", - "description": [], - "signature": [ - "(", - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.PresentationContainer", - "text": "PresentationContainer" - }, - " & Partial & ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishesViewMode", - "text": "PublishesViewMode" - }, - ">) | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "embeddable", "id": "def-public.Embeddable.dataViews", @@ -6294,75 +4278,19 @@ "description": [], "path": "packages/presentation/presentation_publishing/interfaces/can_lock_hover_actions.ts", "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.getEditHref", - "type": "Function", - "tags": [], - "label": "getEditHref", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.getAppContext", - "type": "Function", - "tags": [], - "label": "getAppContext", - "description": [], - "signature": [ - "() => ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.EmbeddableAppContext", - "text": "EmbeddableAppContext" - }, - " | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.reportsEmbeddableLoad", - "type": "Function", - "tags": [], - "label": "reportsEmbeddableLoad", - "description": [], - "signature": [ - "() => boolean" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] + "trackAdoption": false + } + ] }, { "parentPluginId": "embeddable", - "id": "def-public.Embeddable.refreshInputFromParent", + "id": "def-public.Embeddable.getEditHref", "type": "Function", "tags": [], - "label": "refreshInputFromParent", + "label": "getEditHref", "description": [], "signature": [ - "() => void" + "() => Promise" ], "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, @@ -6372,37 +4300,13 @@ }, { "parentPluginId": "embeddable", - "id": "def-public.Embeddable.getIsContainer", + "id": "def-public.Embeddable.reportsEmbeddableLoad", "type": "Function", "tags": [], - "label": "getIsContainer", + "label": "reportsEmbeddableLoad", "description": [], "signature": [ - "() => this is ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - ">" + "() => boolean" ], "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, @@ -6540,7 +4444,7 @@ "label": "getExplicitInput", "description": [], "signature": [ - "() => TEmbeddableInput" + "() => Readonly" ], "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, @@ -6556,7 +4460,7 @@ "label": "getPersistableInput", "description": [], "signature": [ - "() => TEmbeddableInput" + "() => Readonly" ], "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", "deprecated": false, @@ -6612,72 +4516,6 @@ "children": [], "returnComment": [] }, - { - "parentPluginId": "embeddable", - "id": "def-public.Embeddable.getRoot", - "type": "Function", - "tags": [], - "label": "getRoot", - "description": [ - "\nReturns the top most parent embeddable, or itself if this embeddable\nis not within a parent." - ], - "signature": [ - "() => ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", any> | ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - ">" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, { "parentPluginId": "embeddable", "id": "def-public.Embeddable.updateInput", @@ -7628,44 +5466,6 @@ "deprecated": false, "trackAdoption": false, "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.ErrorEmbeddable.Unnamed.$3", - "type": "Object", - "tags": [], - "label": "parent", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/error_embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false } ], "returnComment": [] @@ -8172,154 +5972,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddablePanel", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "EmbeddablePanel", - "description": [], - "signature": [ - "(props: ", - "EmbeddablePanelProps", - ") => React.JSX.Element" - ], - "path": "src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx", - "deprecated": true, - "trackAdoption": false, - "references": [ - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx" - } - ], - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddablePanel.$1", - "type": "CompoundType", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "EmbeddablePanelProps" - ], - "path": "src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRenderer", - "type": "Function", - "tags": [], - "label": "EmbeddableRenderer", - "description": [ - "\nHelper react component to render an embeddable\nCan be used if you have an embeddable object or an embeddable factory\nSupports updating input by passing `input` prop\n" - ], - "signature": [ - "(props: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableRendererProps", - "text": "EmbeddableRendererProps" - }, - ") => React.JSX.Element" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRenderer.$1", - "type": "CompoundType", - "tags": [], - "label": "props", - "description": [ - "- {@link EmbeddableRendererProps }" - ], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableRendererProps", - "text": "EmbeddableRendererProps" - }, - "" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRoot", - "type": "Function", - "tags": [], - "label": "EmbeddableRoot", - "description": [], - "signature": [ - "({ embeddable, loading, error, input }: Props) => React.JSX.Element" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_root.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRoot.$1", - "type": "Object", - "tags": [], - "label": "{ embeddable, loading, error, input }", - "description": [], - "signature": [ - "Props" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_root.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.genericEmbeddableInputIsEqual", @@ -9163,7 +6815,7 @@ "section": "def-public.PresentationPanelProps", "text": "PresentationPanelProps" }, - ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideLoader\" | \"hideHeader\" | \"hideInspector\" | \"getActions\"> | undefined; hidePanelChrome?: boolean | undefined; onAnyStateChange?: ((state: ", + ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideLoader\" | \"hideHeader\" | \"hideInspector\" | \"getActions\" | \"setDragHandles\"> | undefined; hidePanelChrome?: boolean | undefined; onAnyStateChange?: ((state: ", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -9277,7 +6929,7 @@ "section": "def-public.PresentationPanelProps", "text": "PresentationPanelProps" }, - ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideLoader\" | \"hideHeader\" | \"hideInspector\" | \"getActions\"> | undefined" + ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideLoader\" | \"hideHeader\" | \"hideInspector\" | \"getActions\" | \"setDragHandles\"> | undefined" ], "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", "deprecated": false, @@ -9545,80 +7197,23 @@ "pluginId": "savedObjectsFinder", "scope": "public", "docId": "kibSavedObjectsFinderPluginApi", - "section": "def-public.SavedObjectMetaData", - "text": "SavedObjectMetaData" - }, - "<", - { - "pluginId": "savedObjectsFinder", - "scope": "common", - "docId": "kibSavedObjectsFinderPluginApi", - "section": "def-common.FinderAttributes", - "text": "FinderAttributes" - }, - ">[]" - ], - "path": "src/plugins/embeddable/public/add_from_library/registry.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.useEmbeddableFactory", - "type": "Function", - "tags": [], - "label": "useEmbeddableFactory", - "description": [], - "signature": [ - "({\n input,\n factory,\n onInputUpdated,\n}: EmbeddableRendererWithFactory) => readonly [", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" - }, - " | ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" + "section": "def-public.SavedObjectMetaData", + "text": "SavedObjectMetaData" }, - " | undefined, boolean, string | undefined]" + ">[]" ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", + "path": "src/plugins/embeddable/public/add_from_library/registry.ts", "deprecated": false, "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.useEmbeddableFactory.$1", - "type": "Object", - "tags": [], - "label": "{\n input,\n factory,\n onInputUpdated,\n}", - "description": [], - "signature": [ - "EmbeddableRendererWithFactory" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], + "children": [], "returnComment": [], "initialIsOpen": false }, @@ -9740,126 +7335,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.ContainerInput", - "type": "Interface", - "tags": [], - "label": "ContainerInput", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - " extends ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - } - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.ContainerInput.hidePanelTitles", - "type": "CompoundType", - "tags": [], - "label": "hidePanelTitles", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.ContainerInput.panels", - "type": "Object", - "tags": [], - "label": "panels", - "description": [], - "signature": [ - "{ [key: string]: ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.PanelState", - "text": "PanelState" - }, - "; }" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.ContainerOutput", - "type": "Interface", - "tags": [], - "label": "ContainerOutput", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - " extends ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - } - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.ContainerOutput.embeddableLoaded", - "type": "Object", - "tags": [], - "label": "embeddableLoaded", - "description": [], - "signature": [ - "{ [key: string]: boolean; }" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.DefaultEmbeddableApi", @@ -9927,68 +7402,6 @@ "children": [], "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableContainerSettings", - "type": "Interface", - "tags": [], - "label": "EmbeddableContainerSettings", - "description": [], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableContainerSettings.initializeSequentially", - "type": "CompoundType", - "tags": [], - "label": "initializeSequentially", - "description": [ - "\nIf true, the container will wait for each embeddable to load after creation before loading the next embeddable." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableContainerSettings.childIdInitializeOrder", - "type": "Array", - "tags": [], - "label": "childIdInitializeOrder", - "description": [ - "\nInitialise children in the order specified. If an ID does not match it will be skipped and if a child is not included it will be initialized in the default order after the list of provided IDs." - ], - "signature": [ - "string[] | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableContainerSettings.untilContainerInitialized", - "type": "Function", - "tags": [], - "label": "untilContainerInitialized", - "description": [], - "signature": [ - "(() => Promise) | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.EmbeddableContext", @@ -10011,20 +7424,7 @@ "path": "src/plugins/embeddable/public/lib/triggers/triggers.ts", "deprecated": true, "trackAdoption": false, - "references": [ - { - "plugin": "embeddableEnhanced", - "path": "x-pack/plugins/embeddable_enhanced/public/plugin.ts" - }, - { - "plugin": "embeddableEnhanced", - "path": "x-pack/plugins/embeddable_enhanced/public/plugin.ts" - }, - { - "plugin": "embeddableEnhanced", - "path": "x-pack/plugins/embeddable_enhanced/public/plugin.ts" - } - ], + "references": [], "children": [ { "parentPluginId": "embeddable", @@ -10385,31 +7785,7 @@ "\nCan be used to request explicit input from the user, to be passed in to `EmbeddableFactory:create`.\nExplicit input is stored on the parent container for this embeddable. It overrides all inherited\ninput passed down from the parent container.\n\nCan be used to edit an embeddable by re-requesting explicit input. Initial input can be provided to allow the editor to show the current state.\n\nIf saved object information is needed for creation use-cases, getExplicitInput can also return an unknown typed attributes object which will be passed\ninto the container's addNewEmbeddable function." ], "signature": [ - "(initialInput?: Partial | undefined, parent?: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined) => Promise<", + "(initialInput?: Partial | undefined, parent?: unknown) => Promise<", "ExplicitInputWithAttributes", " | Partial>" ], @@ -10435,40 +7811,17 @@ { "parentPluginId": "embeddable", "id": "def-public.EmbeddableFactory.getExplicitInput.$2", - "type": "Object", + "type": "Unknown", "tags": [], "label": "parent", "description": [], "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined" + "unknown" ], "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_factory.ts", "deprecated": false, "trackAdoption": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] @@ -10483,31 +7836,7 @@ "\nCreates a new embeddable instance based off the saved object id." ], "signature": [ - "(savedObjectId: string, input: Partial, parent?: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined) => Promise<", + "(savedObjectId: string, input: Partial, parent?: unknown) => Promise<", { "pluginId": "embeddable", "scope": "public", @@ -10549,47 +7878,24 @@ "Partial" ], "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_factory.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableFactory.createFromSavedObject.$3", - "type": "Object", - "tags": [], - "label": "parent", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined" + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "embeddable", + "id": "def-public.EmbeddableFactory.createFromSavedObject.$3", + "type": "Unknown", + "tags": [], + "label": "parent", + "description": [], + "signature": [ + "unknown" ], "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_factory.ts", "deprecated": false, "trackAdoption": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] @@ -10604,31 +7910,7 @@ "\nCreates an Embeddable instance, running the inital input through all registered migrations. Resolves to undefined if a new Embeddable\ncannot be directly created and the user will instead be redirected elsewhere." ], "signature": [ - "(initialInput: TEmbeddableInput, parent?: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined) => Promise<", + "(initialInput: TEmbeddableInput, parent?: unknown) => Promise<", { "pluginId": "embeddable", "scope": "public", @@ -10660,40 +7942,17 @@ { "parentPluginId": "embeddable", "id": "def-public.EmbeddableFactory.create.$2", - "type": "Object", + "type": "Unknown", "tags": [], "label": "parent", "description": [], "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined" + "unknown" ], "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_factory.ts", "deprecated": false, "trackAdoption": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] @@ -10786,578 +8045,185 @@ "tags": [], "label": "rendered", "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.error", - "type": "CompoundType", - "tags": [], - "label": "error", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ErrorLike", - "text": "ErrorLike" - }, - " | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.editUrl", - "type": "string", - "tags": [], - "label": "editUrl", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.editApp", - "type": "string", - "tags": [], - "label": "editApp", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.editPath", - "type": "string", - "tags": [], - "label": "editPath", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.defaultTitle", - "type": "string", - "tags": [], - "label": "defaultTitle", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.defaultDescription", - "type": "string", - "tags": [], - "label": "defaultDescription", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.title", - "type": "string", - "tags": [], - "label": "title", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.description", - "type": "string", - "tags": [], - "label": "description", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.editable", - "type": "CompoundType", - "tags": [], - "label": "editable", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.inlineEditable", - "type": "CompoundType", - "tags": [], - "label": "inlineEditable", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.editableWithExplicitInput", - "type": "CompoundType", - "tags": [], - "label": "editableWithExplicitInput", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableOutput.savedObjectId", - "type": "string", - "tags": [], - "label": "savedObjectId", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddablePackageState", - "type": "Interface", - "tags": [], - "label": "EmbeddablePackageState", - "description": [ - "\nA state package that contains all fields necessary to create or update an embeddable by reference or by value in a container." - ], - "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddablePackageState.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddablePackageState.input", - "type": "Uncategorized", + "id": "def-public.EmbeddableOutput.error", + "type": "CompoundType", "tags": [], - "label": "input", - "description": [ - "\nFor react embeddables, this input must be runtime state." - ], + "label": "error", + "description": [], "signature": [ - "object" + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ErrorLike", + "text": "ErrorLike" + }, + " | undefined" ], - "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddablePackageState.embeddableId", + "id": "def-public.EmbeddableOutput.editUrl", "type": "string", "tags": [], - "label": "embeddableId", + "label": "editUrl", "description": [], "signature": [ "string | undefined" ], - "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddablePackageState.size", - "type": "Object", + "id": "def-public.EmbeddableOutput.editApp", + "type": "string", "tags": [], - "label": "size", + "label": "editApp", "description": [], "signature": [ - "{ width?: number | undefined; height?: number | undefined; } | undefined" + "string | undefined" ], - "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddablePackageState.searchSessionId", + "id": "def-public.EmbeddableOutput.editPath", "type": "string", "tags": [], - "label": "searchSessionId", - "description": [ - "\nPass current search session id when navigating to an editor,\nEditors could use it continue previous search session" - ], + "label": "editPath", + "description": [], "signature": [ "string | undefined" ], - "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableSetupDependencies", - "type": "Interface", - "tags": [], - "label": "EmbeddableSetupDependencies", - "description": [], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddableSetupDependencies.uiActions", - "type": "Object", + "id": "def-public.EmbeddableOutput.defaultTitle", + "type": "string", "tags": [], - "label": "uiActions", + "label": "defaultTitle", "description": [], "signature": [ - "{ readonly registerTrigger: (trigger: ", - { - "pluginId": "@kbn/ui-actions-browser", - "scope": "common", - "docId": "kibKbnUiActionsBrowserPluginApi", - "section": "def-common.Trigger", - "text": "Trigger" - }, - ") => void; readonly registerAction: (definition: ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.ActionDefinition", - "text": "ActionDefinition" - }, - ") => ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.Action", - "text": "Action" - }, - "; readonly unregisterAction: (actionId: string) => void; readonly attachAction: (triggerId: string, actionId: string) => void; readonly detachAction: (triggerId: string, actionId: string) => void; readonly addTriggerAction: (triggerId: string, action: ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.ActionDefinition", - "text": "ActionDefinition" - }, - ") => void; }" + "string | undefined" ], - "path": "src/plugins/embeddable/public/plugin.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStartDependencies", - "type": "Interface", - "tags": [], - "label": "EmbeddableStartDependencies", - "description": [], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStartDependencies.uiActions", - "type": "Object", + "id": "def-public.EmbeddableOutput.defaultDescription", + "type": "string", "tags": [], - "label": "uiActions", + "label": "defaultDescription", "description": [], "signature": [ - "{ readonly registerTrigger: (trigger: ", - { - "pluginId": "@kbn/ui-actions-browser", - "scope": "common", - "docId": "kibKbnUiActionsBrowserPluginApi", - "section": "def-common.Trigger", - "text": "Trigger" - }, - ") => void; readonly hasTrigger: (triggerId: string) => boolean; readonly getTrigger: (triggerId: string) => ", - "TriggerContract", - "; readonly registerAction: (definition: ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.ActionDefinition", - "text": "ActionDefinition" - }, - ") => ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.Action", - "text": "Action" - }, - "; readonly unregisterAction: (actionId: string) => void; readonly hasAction: (actionId: string) => boolean; readonly attachAction: (triggerId: string, actionId: string) => void; readonly detachAction: (triggerId: string, actionId: string) => void; readonly addTriggerAction: (triggerId: string, action: ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.ActionDefinition", - "text": "ActionDefinition" - }, - ") => void; readonly getAction: (id: string) => ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.Action", - "text": "Action" - }, - "; readonly getTriggerActions: (triggerId: string) => ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.Action", - "text": "Action" - }, - "[]; readonly getTriggerCompatibleActions: (triggerId: string, context: object) => Promise<", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.Action", - "text": "Action" - }, - "[]>; readonly getFrequentlyChangingActionsForTrigger: (triggerId: string, context: object) => ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.FrequentCompatibilityChangeAction", - "text": "FrequentCompatibilityChangeAction" - }, - "[]; readonly executeTriggerActions: (triggerId: string, context: object) => Promise; readonly clear: () => void; readonly fork: () => ", - { - "pluginId": "uiActions", - "scope": "public", - "docId": "kibUiActionsPluginApi", - "section": "def-public.UiActionsService", - "text": "UiActionsService" - }, - "; }" + "string | undefined" ], - "path": "src/plugins/embeddable/public/plugin.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStartDependencies.inspector", - "type": "Object", + "id": "def-public.EmbeddableOutput.title", + "type": "string", "tags": [], - "label": "inspector", + "label": "title", "description": [], "signature": [ - { - "pluginId": "inspector", - "scope": "public", - "docId": "kibInspectorPluginApi", - "section": "def-public.Start", - "text": "Start" - } + "string | undefined" ], - "path": "src/plugins/embeddable/public/plugin.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStartDependencies.usageCollection", - "type": "Object", + "id": "def-public.EmbeddableOutput.description", + "type": "string", "tags": [], - "label": "usageCollection", + "label": "description", "description": [], "signature": [ - { - "pluginId": "usageCollection", - "scope": "public", - "docId": "kibUsageCollectionPluginApi", - "section": "def-public.UsageCollectionStart", - "text": "UsageCollectionStart" - } + "string | undefined" ], - "path": "src/plugins/embeddable/public/plugin.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStartDependencies.contentManagement", - "type": "Object", + "id": "def-public.EmbeddableOutput.editable", + "type": "CompoundType", "tags": [], - "label": "contentManagement", + "label": "editable", "description": [], "signature": [ - { - "pluginId": "contentManagement", - "scope": "public", - "docId": "kibContentManagementPluginApi", - "section": "def-public.ContentManagementPublicStart", - "text": "ContentManagementPublicStart" - } + "boolean | undefined" ], - "path": "src/plugins/embeddable/public/plugin.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStartDependencies.savedObjectsManagement", - "type": "Object", + "id": "def-public.EmbeddableOutput.inlineEditable", + "type": "CompoundType", "tags": [], - "label": "savedObjectsManagement", + "label": "inlineEditable", "description": [], "signature": [ - { - "pluginId": "savedObjectsManagement", - "scope": "public", - "docId": "kibSavedObjectsManagementPluginApi", - "section": "def-public.SavedObjectsManagementPluginStart", - "text": "SavedObjectsManagementPluginStart" - } + "boolean | undefined" ], - "path": "src/plugins/embeddable/public/plugin.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStartDependencies.savedObjectsTaggingOss", - "type": "Object", + "id": "def-public.EmbeddableOutput.editableWithExplicitInput", + "type": "CompoundType", "tags": [], - "label": "savedObjectsTaggingOss", + "label": "editableWithExplicitInput", "description": [], "signature": [ - { - "pluginId": "savedObjectsTaggingOss", - "scope": "public", - "docId": "kibSavedObjectsTaggingOssPluginApi", - "section": "def-public.SavedObjectTaggingOssPluginStart", - "text": "SavedObjectTaggingOssPluginStart" - }, - " | undefined" + "boolean | undefined" ], - "path": "src/plugins/embeddable/public/plugin.tsx", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EnhancementRegistryDefinition", - "type": "Interface", - "tags": [], - "label": "EnhancementRegistryDefinition", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EnhancementRegistryDefinition", - "text": "EnhancementRegistryDefinition" - }, - "

extends Partial<", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.PersistableState", - "text": "PersistableState" }, - "

>" - ], - "path": "src/plugins/embeddable/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ { "parentPluginId": "embeddable", - "id": "def-public.EnhancementRegistryDefinition.id", + "id": "def-public.EmbeddableOutput.savedObjectId", "type": "string", "tags": [], - "label": "id", + "label": "savedObjectId", "description": [], - "path": "src/plugins/embeddable/public/types.ts", + "signature": [ + "string | undefined" + ], + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, "trackAdoption": false } @@ -11366,717 +8232,468 @@ }, { "parentPluginId": "embeddable", - "id": "def-public.FilterableEmbeddable", + "id": "def-public.EmbeddablePackageState", "type": "Interface", "tags": [], - "label": "FilterableEmbeddable", + "label": "EmbeddablePackageState", "description": [ - "\nAll embeddables that implement this interface should support being filtered\nand/or queried via the top navigation bar." + "\nA state package that contains all fields necessary to create or update an embeddable by reference or by value in a container." ], - "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", + "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "embeddable", - "id": "def-public.FilterableEmbeddable.getFilters", - "type": "Function", - "tags": [], - "label": "getFilters", - "description": [ - "\nGets the embeddable's local filters" - ], - "signature": [ - "() => ", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" - }, - "[]" - ], - "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.FilterableEmbeddable.getQuery", - "type": "Function", + "id": "def-public.EmbeddablePackageState.type", + "type": "string", "tags": [], - "label": "getQuery", - "description": [ - "\nGets the embeddable's local query" - ], - "signature": [ - "() => ", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Query", - "text": "Query" - }, - " | ", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.AggregateQuery", - "text": "AggregateQuery" - }, - " | undefined" - ], - "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", + "label": "type", + "description": [], + "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer", - "type": "Interface", - "tags": [], - "label": "IContainer", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - " extends ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" + "trackAdoption": false }, - "" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ { "parentPluginId": "embeddable", - "id": "def-public.IContainer.untilEmbeddableLoaded", - "type": "Function", + "id": "def-public.EmbeddablePackageState.input", + "type": "Uncategorized", "tags": [], - "label": "untilEmbeddableLoaded", + "label": "input", "description": [ - "\nCall if you want to wait until an embeddable with that id has finished loading." + "\nFor react embeddables, this input must be runtime state." ], "signature": [ - ">(id: string) => Promise<", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" - }, - " | TEmbeddable>" + "object" ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", + "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.untilEmbeddableLoaded.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] + "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.IContainer.getInputForChild", - "type": "Function", + "id": "def-public.EmbeddablePackageState.embeddableId", + "type": "string", "tags": [], - "label": "getInputForChild", - "description": [ - "\nReturns the input for the given child. Uses a combination of explicit input\nfor the child stored on the parent and derived/inherited input taken from the\ncontainer itself." - ], + "label": "embeddableId", + "description": [], "signature": [ - "(id: string) => EEI" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.getInputForChild.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } + "string | undefined" ], - "returnComment": [] + "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", + "deprecated": false, + "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.IContainer.updateInputForChild", - "type": "Function", + "id": "def-public.EmbeddablePackageState.size", + "type": "Object", "tags": [], - "label": "updateInputForChild", - "description": [ - "\nChanges the input for a given child. Note, this will override all inherited state taken from\nthe container itself." - ], + "label": "size", + "description": [], "signature": [ - "(id: string, changes: Partial) => void" + "{ width?: number | undefined; height?: number | undefined; } | undefined" ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", + "path": "src/plugins/embeddable/public/lib/state_transfer/types.ts", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.updateInputForChild.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.updateInputForChild.$2", - "type": "Object", - "tags": [], - "label": "changes", - "description": [], - "signature": [ - "Partial" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] + "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.IContainer.getChild", - "type": "Function", + "id": "def-public.EmbeddablePackageState.searchSessionId", + "type": "string", "tags": [], - "label": "getChild", + "label": "searchSessionId", "description": [ - "\nReturns the child embeddable with the given id." + "\nPass current search session id when navigating to an editor,\nEditors could use it continue previous search session" ], "signature": [ - " void; readonly registerAction: (definition: ", { - "pluginId": "embeddable", + "pluginId": "uiActions", "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" + "docId": "kibUiActionsPluginApi", + "section": "def-public.ActionDefinition", + "text": "ActionDefinition" }, - ", any> = ", + ") => ", { - "pluginId": "embeddable", + "pluginId": "uiActions", "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" + "docId": "kibUiActionsPluginApi", + "section": "def-public.Action", + "text": "Action" }, - ", ", + "; readonly unregisterAction: (actionId: string) => void; readonly attachAction: (triggerId: string, actionId: string) => void; readonly detachAction: (triggerId: string, actionId: string) => void; readonly addTriggerAction: (triggerId: string, action: ", { - "pluginId": "embeddable", + "pluginId": "uiActions", "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" + "docId": "kibUiActionsPluginApi", + "section": "def-public.ActionDefinition", + "text": "ActionDefinition" }, - ", any>>(id: string) => E" + ") => void; }" ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", + "path": "src/plugins/embeddable/public/plugin.tsx", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.getChild.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.EmbeddableStartDependencies", + "type": "Interface", + "tags": [], + "label": "EmbeddableStartDependencies", + "description": [], + "path": "src/plugins/embeddable/public/plugin.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "embeddable", - "id": "def-public.IContainer.setChildLoaded", - "type": "Function", + "id": "def-public.EmbeddableStartDependencies.uiActions", + "type": "Object", "tags": [], - "label": "setChildLoaded", - "description": [ - "\nEmbeddables which have deferEmbeddableLoad set to true need to manually call setChildLoaded\non their parent container to communicate when they have finished loading." - ], + "label": "uiActions", + "description": [], "signature": [ - " void; readonly hasTrigger: (triggerId: string) => boolean; readonly getTrigger: (triggerId: string) => ", + "TriggerContract", + "; readonly registerAction: (definition: ", + { + "pluginId": "uiActions", "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" + "docId": "kibUiActionsPluginApi", + "section": "def-public.ActionDefinition", + "text": "ActionDefinition" }, - "<", + ") => ", { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" + "pluginId": "uiActions", + "scope": "public", + "docId": "kibUiActionsPluginApi", + "section": "def-public.Action", + "text": "Action" }, - ", ", + "; readonly unregisterAction: (actionId: string) => void; readonly hasAction: (actionId: string) => boolean; readonly attachAction: (triggerId: string, actionId: string) => void; readonly detachAction: (triggerId: string, actionId: string) => void; readonly addTriggerAction: (triggerId: string, action: ", { - "pluginId": "embeddable", + "pluginId": "uiActions", "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" + "docId": "kibUiActionsPluginApi", + "section": "def-public.ActionDefinition", + "text": "ActionDefinition" }, - ", any> = ", + ") => void; readonly getAction: (id: string) => ", { - "pluginId": "embeddable", + "pluginId": "uiActions", "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" + "docId": "kibUiActionsPluginApi", + "section": "def-public.Action", + "text": "Action" }, - "<", + "; readonly getTriggerActions: (triggerId: string) => ", { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" + "pluginId": "uiActions", + "scope": "public", + "docId": "kibUiActionsPluginApi", + "section": "def-public.Action", + "text": "Action" }, - ", ", + "[]; readonly getTriggerCompatibleActions: (triggerId: string, context: object) => Promise<", { - "pluginId": "embeddable", + "pluginId": "uiActions", "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" + "docId": "kibUiActionsPluginApi", + "section": "def-public.Action", + "text": "Action" + }, + "[]>; readonly getFrequentlyChangingActionsForTrigger: (triggerId: string, context: object) => ", + { + "pluginId": "uiActions", + "scope": "public", + "docId": "kibUiActionsPluginApi", + "section": "def-public.FrequentCompatibilityChangeAction", + "text": "FrequentCompatibilityChangeAction" + }, + "[]; readonly executeTriggerActions: (triggerId: string, context: object) => Promise; readonly clear: () => void; readonly fork: () => ", + { + "pluginId": "uiActions", + "scope": "public", + "docId": "kibUiActionsPluginApi", + "section": "def-public.UiActionsService", + "text": "UiActionsService" }, - ", any>>(embeddable: E) => void" + "; }" ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", + "path": "src/plugins/embeddable/public/plugin.tsx", "deprecated": false, - "trackAdoption": false, - "children": [ + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.EmbeddableStartDependencies.inspector", + "type": "Object", + "tags": [], + "label": "inspector", + "description": [], + "signature": [ { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.setChildLoaded.$1", - "type": "Uncategorized", - "tags": [], - "label": "embeddable", - "description": [ - "- the embeddable to set" - ], - "signature": [ - "E" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "pluginId": "inspector", + "scope": "public", + "docId": "kibInspectorPluginApi", + "section": "def-public.Start", + "text": "Start" } ], - "returnComment": [] + "path": "src/plugins/embeddable/public/plugin.tsx", + "deprecated": false, + "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.IContainer.removeEmbeddable", - "type": "Function", + "id": "def-public.EmbeddableStartDependencies.usageCollection", + "type": "Object", "tags": [], - "label": "removeEmbeddable", - "description": [ - "\nRemoves the embeddable with the given id." - ], + "label": "usageCollection", + "description": [], "signature": [ - "(embeddableId: string) => void" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.removeEmbeddable.$1", - "type": "string", - "tags": [], - "label": "embeddableId", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "pluginId": "usageCollection", + "scope": "public", + "docId": "kibUsageCollectionPluginApi", + "section": "def-public.UsageCollectionStart", + "text": "UsageCollectionStart" } ], - "returnComment": [] + "path": "src/plugins/embeddable/public/plugin.tsx", + "deprecated": false, + "trackAdoption": false }, { "parentPluginId": "embeddable", - "id": "def-public.IContainer.addNewEmbeddable", - "type": "Function", + "id": "def-public.EmbeddableStartDependencies.contentManagement", + "type": "Object", "tags": [], - "label": "addNewEmbeddable", - "description": [ - "\nAdds a new embeddable to the container. `explicitInput` may partially specify the required embeddable input,\nbut the remainder must come from inherited container state." - ], + "label": "contentManagement", + "description": [], "signature": [ - " = ", + "docId": "kibContentManagementPluginApi", + "section": "def-public.ContentManagementPublicStart", + "text": "ContentManagementPublicStart" + } + ], + "path": "src/plugins/embeddable/public/plugin.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.EmbeddableStartDependencies.savedObjectsManagement", + "type": "Object", + "tags": [], + "label": "savedObjectsManagement", + "description": [], + "signature": [ { - "pluginId": "embeddable", + "pluginId": "savedObjectsManagement", "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" - }, - ">(type: string, explicitInput: Partial, attributes?: unknown) => Promise<", + "docId": "kibSavedObjectsManagementPluginApi", + "section": "def-public.SavedObjectsManagementPluginStart", + "text": "SavedObjectsManagementPluginStart" + } + ], + "path": "src/plugins/embeddable/public/plugin.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.EmbeddableStartDependencies.savedObjectsTaggingOss", + "type": "Object", + "tags": [], + "label": "savedObjectsTaggingOss", + "description": [], + "signature": [ { - "pluginId": "embeddable", + "pluginId": "savedObjectsTaggingOss", "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" + "docId": "kibSavedObjectsTaggingOssPluginApi", + "section": "def-public.SavedObjectTaggingOssPluginStart", + "text": "SavedObjectTaggingOssPluginStart" }, - " | E>" + " | undefined" ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", + "path": "src/plugins/embeddable/public/plugin.tsx", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.addNewEmbeddable.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.EnhancementRegistryDefinition", + "type": "Interface", + "tags": [], + "label": "EnhancementRegistryDefinition", + "description": [], + "signature": [ + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.EnhancementRegistryDefinition", + "text": "EnhancementRegistryDefinition" + }, + "

extends Partial<", + { + "pluginId": "kibanaUtils", + "scope": "common", + "docId": "kibKibanaUtilsPluginApi", + "section": "def-common.PersistableState", + "text": "PersistableState" + }, + "

>" + ], + "path": "src/plugins/embeddable/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.EnhancementRegistryDefinition.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "src/plugins/embeddable/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.FilterableEmbeddable", + "type": "Interface", + "tags": [], + "label": "FilterableEmbeddable", + "description": [ + "\nAll embeddables that implement this interface should support being filtered\nand/or queried via the top navigation bar." + ], + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.FilterableEmbeddable.getFilters", + "type": "Function", + "tags": [], + "label": "getFilters", + "description": [ + "\nGets the embeddable's local filters" + ], + "signature": [ + "() => ", { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.addNewEmbeddable.$2", - "type": "Object", - "tags": [], - "label": "explicitInput", - "description": [], - "signature": [ - "Partial" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Filter", + "text": "Filter" }, - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.addNewEmbeddable.$3", - "type": "Unknown", - "tags": [], - "label": "attributes", - "description": [], - "signature": [ - "unknown" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } + "[]" ], + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], "returnComment": [] }, { "parentPluginId": "embeddable", - "id": "def-public.IContainer.replaceEmbeddable", + "id": "def-public.FilterableEmbeddable.getQuery", "type": "Function", "tags": [], - "label": "replaceEmbeddable", - "description": [], + "label": "getQuery", + "description": [ + "\nGets the embeddable's local query" + ], "signature": [ - " ", { - "pluginId": "embeddable", + "pluginId": "@kbn/es-query", "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Query", + "text": "Query" }, - " = ", + " | ", { - "pluginId": "embeddable", + "pluginId": "@kbn/es-query", "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", EEO extends ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - " = ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", E extends ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" - }, - " = ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.AggregateQuery", + "text": "AggregateQuery" }, - ">(id: string, newExplicitInput: Partial, newType?: string | undefined, generateNewId?: boolean | undefined) => Promise" + " | undefined" ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", "deprecated": false, "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.replaceEmbeddable.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.replaceEmbeddable.$2", - "type": "Object", - "tags": [], - "label": "newExplicitInput", - "description": [], - "signature": [ - "Partial" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.replaceEmbeddable.$3", - "type": "string", - "tags": [], - "label": "newType", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.IContainer.replaceEmbeddable.$4", - "type": "CompoundType", - "tags": [], - "label": "generateNewId", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/embeddable/public/lib/containers/i_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], + "children": [], "returnComment": [] } ], @@ -12104,58 +8721,6 @@ "deprecated": false, "trackAdoption": false, "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.IEmbeddable.isContainer", - "type": "boolean", - "tags": [], - "label": "isContainer", - "description": [ - "\nIs this embeddable an instance of a Container class, can it contain\nnested embeddables?" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.IEmbeddable.parent", - "type": "Object", - "tags": [], - "label": "parent", - "description": [ - "\nIf this embeddable is nested inside a container, this will contain\na reference to its parent." - ], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "embeddable", "id": "def-public.IEmbeddable.type", @@ -12261,48 +8826,6 @@ "children": [], "returnComment": [] }, - { - "parentPluginId": "embeddable", - "id": "def-public.IEmbeddable.getIsContainer", - "type": "Function", - "tags": [], - "label": "getIsContainer", - "description": [ - "\nA functional representation of the isContainer variable, but helpful for typescript to\nknow the shape if this returns true" - ], - "signature": [ - "() => this is ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - ">" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, { "parentPluginId": "embeddable", "id": "def-public.IEmbeddable.getInput", @@ -12503,107 +9026,15 @@ }, { "parentPluginId": "embeddable", - "id": "def-public.IEmbeddable.getDescription", - "type": "Function", - "tags": [], - "label": "getDescription", - "description": [ - "\nReturns the description of this embeddable." - ], - "signature": [ - "() => string | undefined" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.IEmbeddable.getRoot", - "type": "Function", - "tags": [], - "label": "getRoot", - "description": [ - "\nReturns the top most parent embeddable, or itself if this embeddable\nis not within a parent." - ], - "signature": [ - "() => ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", any> | ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - ">" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.IEmbeddable.getAppContext", + "id": "def-public.IEmbeddable.getDescription", "type": "Function", "tags": [], - "label": "getAppContext", + "label": "getDescription", "description": [ - "\nReturns the context of this embeddable's container, or undefined." + "\nReturns the description of this embeddable." ], "signature": [ - "() => ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.EmbeddableAppContext", - "text": "EmbeddableAppContext" - }, - " | undefined" + "() => string | undefined" ], "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", "deprecated": false, @@ -12830,22 +9261,6 @@ ], "returnComment": [] }, - { - "parentPluginId": "embeddable", - "id": "def-public.IEmbeddable.refreshInputFromParent", - "type": "Function", - "tags": [], - "label": "refreshInputFromParent", - "description": [], - "signature": [ - "() => void" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, { "parentPluginId": "embeddable", "id": "def-public.IEmbeddable.untilInitializationFinished", @@ -12900,55 +9315,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.PanelState", - "type": "Interface", - "tags": [], - "label": "PanelState", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.PanelState", - "text": "PanelState" - }, - "" - ], - "path": "src/plugins/embeddable/common/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.PanelState.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "path": "src/plugins/embeddable/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.PanelState.explicitInput", - "type": "CompoundType", - "tags": [], - "label": "explicitInput", - "description": [], - "signature": [ - "Partial & { id: string; }" - ], - "path": "src/plugins/embeddable/common/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.PropertySpec", @@ -13455,23 +9821,6 @@ } ], "misc": [ - { - "parentPluginId": "embeddable", - "id": "def-public.ATTRIBUTE_SERVICE_KEY", - "type": "string", - "tags": [], - "label": "ATTRIBUTE_SERVICE_KEY", - "description": [ - "\nThe attribute service is a shared, generic service that embeddables can use to provide the functionality\nrequired to fulfill the requirements of the ReferenceOrValueEmbeddable interface. The attribute_service\ncan also be used as a higher level wrapper to transform an embeddable input shape that references a saved object\ninto an embeddable input shape that contains that saved object's attributes by value." - ], - "signature": [ - "\"attributes\"" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.CELL_VALUE_TRIGGER", @@ -13648,23 +9997,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRendererProps", - "type": "Type", - "tags": [], - "label": "EmbeddableRendererProps", - "description": [ - "\nThis type is a publicly exposed props of {@link EmbeddableRenderer}\nUnion is used to validate that or factory or embeddable is passed in, but it can't be both simultaneously\nIn case when embeddable is passed in, input is optional, because there is already an input inside of embeddable object\nIn case when factory is used, then input is required, because it will be used as initial input to create an embeddable object" - ], - "signature": [ - "EmbeddableRendererPropsWithEmbeddable | EmbeddableRendererWithFactory" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.MULTI_VALUE_CLICK_TRIGGER", @@ -14747,48 +11079,6 @@ } ], "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableSetup.setCustomEmbeddableFactoryProvider", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "setCustomEmbeddableFactoryProvider", - "description": [], - "signature": [ - "(customProvider: ", - "EmbeddableFactoryProvider", - ") => void" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": true, - "trackAdoption": false, - "references": [ - { - "plugin": "embeddableEnhanced", - "path": "x-pack/plugins/embeddable_enhanced/public/plugin.ts" - } - ], - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableSetup.setCustomEmbeddableFactoryProvider.$1", - "type": "Function", - "tags": [], - "label": "customProvider", - "description": [], - "signature": [ - "EmbeddableFactoryProvider" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] } ], "lifecycle": "setup", @@ -14831,40 +11121,6 @@ "deprecated": false, "trackAdoption": false, "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.reactEmbeddableRegistryHasKey", - "type": "Function", - "tags": [], - "label": "reactEmbeddableRegistryHasKey", - "description": [ - "\nChecks if a {@link ReactEmbeddableFactory} has been registered using {@link registerReactEmbeddableFactory}" - ], - "signature": [ - "(type: string) => boolean" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.reactEmbeddableRegistryHasKey.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, { "parentPluginId": "embeddable", "id": "def-public.EmbeddableStart.getEmbeddableFactory", @@ -14944,56 +11200,7 @@ "path": "src/plugins/embeddable/public/plugin.tsx", "deprecated": true, "trackAdoption": false, - "references": [ - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" - }, - { - "plugin": "investigateApp", - "path": "x-pack/plugins/observability_solution/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - } - ], + "references": [], "children": [ { "parentPluginId": "embeddable", @@ -15085,10 +11292,6 @@ "deprecated": true, "trackAdoption": false, "references": [ - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/public/components/workpad_header/editor_menu/editor_menu.tsx" @@ -15150,96 +11353,6 @@ } ], "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.getAttributeService", - "type": "Function", - "tags": [], - "label": "getAttributeService", - "description": [], - "signature": [ - "(type: string, options: ", - "AttributeServiceOptions", - ") => ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.AttributeService", - "text": "AttributeService" - }, - "" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.getAttributeService.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.getAttributeService.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "AttributeServiceOptions", - "" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] } ], "lifecycle": "start", diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 322a77db05fd8..3cc6e936a3da4 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 571 | 1 | 462 | 9 | +| 424 | 1 | 338 | 5 | ## Client diff --git a/api_docs/embeddable_enhanced.devdocs.json b/api_docs/embeddable_enhanced.devdocs.json index a9e2fd9be15e6..c8578b855fb38 100644 --- a/api_docs/embeddable_enhanced.devdocs.json +++ b/api_docs/embeddable_enhanced.devdocs.json @@ -70,92 +70,6 @@ } ], "interfaces": [ - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.EnhancedEmbeddableContext", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "EnhancedEmbeddableContext", - "description": [], - "path": "x-pack/plugins/embeddable_enhanced/public/types.ts", - "deprecated": true, - "trackAdoption": false, - "references": [], - "children": [ - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.EnhancedEmbeddableContext.embeddable", - "type": "CompoundType", - "tags": [], - "label": "embeddable", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", any> & Partial<{ enhancements: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "public", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-public.DynamicActionManager", - "text": "DynamicActionManager" - }, - "; }; setDynamicActions: (newState: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined) => void; dynamicActionsState$: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" - }, - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>; }>" - ], - "path": "x-pack/plugins/embeddable_enhanced/public/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "embeddableEnhanced", "id": "def-public.SetupDependencies", @@ -267,75 +181,6 @@ ], "enums": [], "misc": [ - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.drilldownGrouping", - "type": "Array", - "tags": [], - "label": "drilldownGrouping", - "description": [], - "signature": [ - { - "pluginId": "@kbn/ui-actions-browser", - "scope": "common", - "docId": "kibKbnUiActionsBrowserPluginApi", - "section": "def-common.PresentableGroup", - "text": "PresentableGroup" - }, - "[]" - ], - "path": "x-pack/plugins/embeddable_enhanced/public/actions/drilldown_grouping.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.EnhancedEmbeddable", - "type": "Type", - "tags": [], - "label": "EnhancedEmbeddable", - "description": [], - "signature": [ - "E & Partial<{ enhancements: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "public", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-public.DynamicActionManager", - "text": "DynamicActionManager" - }, - "; }; setDynamicActions: (newState: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined) => void; dynamicActionsState$: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" - }, - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>; }>" - ], - "path": "x-pack/plugins/embeddable_enhanced/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "embeddableEnhanced", "id": "def-public.HasDynamicActions", diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 27b652f7f4eae..f4595abd70200 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 19 | 0 | 19 | 2 | +| 15 | 0 | 15 | 2 | ## Client diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 82b512914871e..7c0105c577cb7 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index f5e294b712406..9c6e1f4fddb56 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/entities_data_access.mdx b/api_docs/entities_data_access.mdx index 4fc0397643c0a..099680703bb4c 100644 --- a/api_docs/entities_data_access.mdx +++ b/api_docs/entities_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entitiesDataAccess title: "entitiesDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the entitiesDataAccess plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entitiesDataAccess'] --- import entitiesDataAccessObj from './entities_data_access.devdocs.json'; diff --git a/api_docs/entity_manager.devdocs.json b/api_docs/entity_manager.devdocs.json index 9359e3ca7c1d7..aef2003a03b64 100644 --- a/api_docs/entity_manager.devdocs.json +++ b/api_docs/entity_manager.devdocs.json @@ -21,7 +21,7 @@ "label": "repositoryClient", "description": [], "signature": [ - "(endpoint: TEndpoint, ...args: MaybeOptionalArgs<", + "(endpoint: TEndpoint, ...args: MaybeOptionalArgs<", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -29,7 +29,25 @@ "section": "def-common.ClientRequestParamsOf", "text": "ClientRequestParamsOf" }, - "<{ \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", + "<{ \"POST /internal/entities/v2/_count\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/entities/v2/_count\", Zod.ZodObject<{ body: Zod.ZodObject<{ types: Zod.ZodOptional>; filters: Zod.ZodOptional>; start: Zod.ZodEffects>, string, string | undefined>; end: Zod.ZodEffects>, string, string | undefined>; }, \"strip\", Zod.ZodTypeAny, { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }, { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { body: { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }; }, { body: { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }; }>, ", + "EntityManagerRouteHandlerResources", + ", ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.IKibanaResponse", + "text": "IKibanaResponse" + }, + "<{ total: number; types: Record; errors: string[]; }>, undefined>; \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -65,7 +83,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ source: { id: string; filters: string[]; metadata_fields: string[]; type_id: string; index_patterns: string[]; identity_fields: string[]; timestamp_field?: string | undefined; display_name?: string | undefined; }; }>, undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", + ", undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -75,7 +93,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ types: { id: string; }[]; }>>; security?: ", + "<{ types: { id: string; display_name: string; }[]; }>>; security?: ", { "pluginId": "@kbn/core-http-server", "scope": "server", @@ -91,7 +109,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; }; }, { type: { id: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; }; }; }, { body: { type: { id: string; }; }; }>, ", + "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; display_name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; display_name: string; }, { id: string; display_name: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; display_name: string; }; }, { type: { id: string; display_name: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; display_name: string; }; }; }, { body: { type: { id: string; display_name: string; }; }; }>, ", "EntityManagerRouteHandlerResources", ", ", { @@ -127,7 +145,7 @@ "section": "def-common.EntityV2", "text": "EntityV2" }, - "[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", + "[]; errors: string[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -449,7 +467,25 @@ "section": "def-common.ReturnOf", "text": "ReturnOf" }, - "<{ \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", + "<{ \"POST /internal/entities/v2/_count\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/entities/v2/_count\", Zod.ZodObject<{ body: Zod.ZodObject<{ types: Zod.ZodOptional>; filters: Zod.ZodOptional>; start: Zod.ZodEffects>, string, string | undefined>; end: Zod.ZodEffects>, string, string | undefined>; }, \"strip\", Zod.ZodTypeAny, { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }, { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { body: { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }; }, { body: { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }; }>, ", + "EntityManagerRouteHandlerResources", + ", ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.IKibanaResponse", + "text": "IKibanaResponse" + }, + "<{ total: number; types: Record; errors: string[]; }>, undefined>; \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -485,7 +521,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ source: { id: string; filters: string[]; metadata_fields: string[]; type_id: string; index_patterns: string[]; identity_fields: string[]; timestamp_field?: string | undefined; display_name?: string | undefined; }; }>, undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", + ", undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -495,7 +531,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ types: { id: string; }[]; }>>; security?: ", + "<{ types: { id: string; display_name: string; }[]; }>>; security?: ", { "pluginId": "@kbn/core-http-server", "scope": "server", @@ -511,7 +547,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; }; }, { type: { id: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; }; }; }, { body: { type: { id: string; }; }; }>, ", + "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; display_name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; display_name: string; }, { id: string; display_name: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; display_name: string; }; }, { type: { id: string; display_name: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; display_name: string; }; }; }, { body: { type: { id: string; display_name: string; }; }; }>, ", "EntityManagerRouteHandlerResources", ", ", { @@ -547,7 +583,7 @@ "section": "def-common.EntityV2", "text": "EntityV2" }, - "[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", + "[]; errors: string[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -870,7 +906,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false }, @@ -933,7 +969,7 @@ }, "]" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -1458,7 +1494,25 @@ "label": "EntityManagerRouteRepository", "description": [], "signature": [ - "{ \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", + "{ \"POST /internal/entities/v2/_count\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/entities/v2/_count\", Zod.ZodObject<{ body: Zod.ZodObject<{ types: Zod.ZodOptional>; filters: Zod.ZodOptional>; start: Zod.ZodEffects>, string, string | undefined>; end: Zod.ZodEffects>, string, string | undefined>; }, \"strip\", Zod.ZodTypeAny, { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }, { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { body: { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }; }, { body: { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }; }>, ", + "EntityManagerRouteHandlerResources", + ", ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.IKibanaResponse", + "text": "IKibanaResponse" + }, + "<{ total: number; types: Record; errors: string[]; }>, undefined>; \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -1494,7 +1548,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ source: { id: string; filters: string[]; metadata_fields: string[]; type_id: string; index_patterns: string[]; identity_fields: string[]; timestamp_field?: string | undefined; display_name?: string | undefined; }; }>, undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", + ", undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -1504,7 +1558,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ types: { id: string; }[]; }>>; security?: ", + "<{ types: { id: string; display_name: string; }[]; }>>; security?: ", { "pluginId": "@kbn/core-http-server", "scope": "server", @@ -1520,7 +1574,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; }; }, { type: { id: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; }; }; }, { body: { type: { id: string; }; }; }>, ", + "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; display_name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; display_name: string; }, { id: string; display_name: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; display_name: string; }; }, { type: { id: string; display_name: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; display_name: string; }; }; }, { body: { type: { id: string; display_name: string; }; }; }>, ", "EntityManagerRouteHandlerResources", ", ", { @@ -1556,7 +1610,7 @@ "section": "def-common.EntityV2", "text": "EntityV2" }, - "[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", + "[]; errors: string[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", diff --git a/api_docs/entity_manager.mdx b/api_docs/entity_manager.mdx index ae6ffb373ccbb..2a280ffd278cb 100644 --- a/api_docs/entity_manager.mdx +++ b/api_docs/entity_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entityManager title: "entityManager" image: https://source.unsplash.com/400x175/?github description: API docs for the entityManager plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entityManager'] --- import entityManagerObj from './entity_manager.devdocs.json'; diff --git a/api_docs/es_ui_shared.devdocs.json b/api_docs/es_ui_shared.devdocs.json index 9c63dfd307e9d..256f6645f5cac 100644 --- a/api_docs/es_ui_shared.devdocs.json +++ b/api_docs/es_ui_shared.devdocs.json @@ -21,7 +21,7 @@ "FieldToValueMap", ", any>" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -36,7 +36,7 @@ "(props: Props) => ", "FieldToValueMap" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -50,7 +50,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -68,7 +68,7 @@ "signature": [ "any" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -82,7 +82,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -108,7 +108,7 @@ }, ") => void" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -128,7 +128,7 @@ "text": "Frequency" } ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -148,7 +148,7 @@ "FieldToValueMap", ") => void" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +162,7 @@ "signature": [ "FieldToValueMap" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -180,7 +180,7 @@ "signature": [ "() => React.JSX.Element | undefined" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -196,7 +196,7 @@ "signature": [ "() => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -217,7 +217,7 @@ "signature": [ "(value?: string | undefined) => string | undefined" ], - "path": "src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -231,7 +231,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -250,7 +250,7 @@ "signature": [ "({ privilegesEndpoint, httpClient, children }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -264,7 +264,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -285,7 +285,7 @@ "ParsedQuery", "" ], - "path": "src/plugins/es_ui_shared/public/url/extract_query_params.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/url/extract_query_params.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -299,7 +299,7 @@ "signature": [ "string" ], - "path": "src/plugins/es_ui_shared/public/url/extract_query_params.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/url/extract_query_params.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -318,7 +318,7 @@ "signature": [ "({ label, helpText, onUpdate, value, defaultValue, codeEditorProps, error: propsError, ...rest }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/json_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/json_editor.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -333,7 +333,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/json_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/json_editor.tsx", "deprecated": false, "trackAdoption": false } @@ -350,7 +350,7 @@ "signature": [ "({ title, message, dataTestSubj }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -364,7 +364,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -383,7 +383,7 @@ "signature": [ "({ title, error, actions, isCentered, ...rest }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -397,7 +397,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -416,7 +416,7 @@ "signature": [ "({ children }: { children?: React.ReactNode; }) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/page_loading/page_loading.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/page_loading/page_loading.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -430,7 +430,7 @@ "signature": [ "{ children?: React.ReactNode; }" ], - "path": "src/plugins/es_ui_shared/public/components/page_loading/page_loading.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/page_loading/page_loading.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -449,7 +449,7 @@ "signature": [ "({ title, error, actions, ...rest }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -463,7 +463,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -482,7 +482,7 @@ "signature": [ "({ inline, \"data-test-subj\": dataTestSubj, children, ...rest }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/section_loading/section_loading.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -496,7 +496,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/section_loading/section_loading.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -539,7 +539,7 @@ }, ">" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -559,7 +559,7 @@ "text": "HttpSetup" } ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -580,7 +580,7 @@ "text": "SendRequestConfig" } ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -600,7 +600,7 @@ "() => ", "Authorization" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -641,7 +641,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -661,7 +661,7 @@ "text": "HttpSetup" } ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -682,7 +682,7 @@ "text": "UseRequestConfig" } ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -701,7 +701,7 @@ "signature": [ "(props: ViewApiRequestFlyoutProps) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -715,7 +715,7 @@ "signature": [ "ViewApiRequestFlyoutProps" ], - "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -734,7 +734,7 @@ "signature": [ "({ privileges: requiredPrivileges, children }: Props) => JSX.Element | null" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -748,7 +748,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -766,7 +766,7 @@ "tags": [], "label": "Authorization", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -777,7 +777,7 @@ "tags": [], "label": "isLoading", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false }, @@ -792,7 +792,7 @@ "Error", " | null" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false }, @@ -812,7 +812,7 @@ "text": "Privileges" } ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false } @@ -826,7 +826,7 @@ "tags": [], "label": "Error", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -837,7 +837,7 @@ "tags": [], "label": "error", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false }, @@ -851,7 +851,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false }, @@ -865,7 +865,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } @@ -889,7 +889,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -903,7 +903,7 @@ "signature": [ "{ raw: string; format(): T; }" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false }, @@ -917,7 +917,7 @@ "signature": [ "() => boolean" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -933,7 +933,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false } @@ -947,7 +947,7 @@ "tags": [], "label": "MissingPrivileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -961,7 +961,7 @@ "signature": [ "[key: string]: string[] | undefined" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } @@ -975,7 +975,7 @@ "tags": [], "label": "Privileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -986,7 +986,7 @@ "tags": [], "label": "hasAllPrivileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1006,7 +1006,7 @@ "text": "MissingPrivileges" } ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } @@ -1020,7 +1020,7 @@ "tags": [], "label": "SendRequestConfig", "description": [], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1031,7 +1031,7 @@ "tags": [], "label": "path", "description": [], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1045,7 +1045,7 @@ "signature": [ "\"get\" | \"delete\" | \"head\" | \"post\" | \"put\" | \"patch\"" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1066,7 +1066,7 @@ }, " | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1080,7 +1080,7 @@ "signature": [ "any" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1096,7 +1096,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1110,7 +1110,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false } @@ -1134,7 +1134,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1148,7 +1148,7 @@ "signature": [ "D | null" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1162,7 +1162,7 @@ "signature": [ "E | null" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false } @@ -1193,7 +1193,7 @@ "text": "SendRequestConfig" } ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1207,7 +1207,7 @@ "signature": [ "number | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1221,7 +1221,7 @@ "signature": [ "any" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1235,7 +1235,7 @@ "signature": [ "((data: any) => any) | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1249,7 +1249,7 @@ "signature": [ "any" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1277,7 +1277,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1288,7 +1288,7 @@ "tags": [], "label": "isInitialRequest", "description": [], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1299,7 +1299,7 @@ "tags": [], "label": "isLoading", "description": [], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1313,7 +1313,7 @@ "signature": [ "E | null" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1327,7 +1327,7 @@ "signature": [ "D | null | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1341,7 +1341,7 @@ "signature": [ "() => void" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1363,7 +1363,7 @@ "signature": [ "\"MINUTE\" | \"HOUR\" | \"DAY\" | \"WEEK\" | \"MONTH\" | \"YEAR\"" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1386,7 +1386,7 @@ }, ") => void" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1408,7 +1408,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false } @@ -1429,7 +1429,7 @@ "Authorization", ">" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1441,7 +1441,7 @@ "tags": [], "label": "indices", "description": [], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1455,7 +1455,7 @@ "signature": [ "string[]" ], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1469,7 +1469,7 @@ "signature": [ "(indexName?: string | undefined) => boolean" ], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1484,7 +1484,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/es_ui_shared/public/indices/validate/validate_index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts", "deprecated": false, "trackAdoption": false } @@ -1500,7 +1500,7 @@ "signature": [ "(indexName: string) => string[]" ], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1512,7 +1512,7 @@ "tags": [], "label": "indexName", "description": [], - "path": "src/plugins/es_ui_shared/public/indices/validate/validate_index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts", "deprecated": false, "trackAdoption": false } @@ -1528,7 +1528,7 @@ "signature": [ "(indexName: string) => boolean" ], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1540,7 +1540,7 @@ "tags": [], "label": "indexName", "description": [], - "path": "src/plugins/es_ui_shared/public/indices/validate/validate_index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts", "deprecated": false, "trackAdoption": false } @@ -1576,7 +1576,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1590,7 +1590,7 @@ "signature": [ "EsErrorHandlerParams" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1609,7 +1609,7 @@ "signature": [ "(err: string) => ParsedError" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1623,7 +1623,7 @@ "signature": [ "string" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1649,7 +1649,7 @@ "tags": [], "label": "MissingPrivileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1663,7 +1663,7 @@ "signature": [ "[key: string]: string[] | undefined" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } @@ -1677,7 +1677,7 @@ "tags": [], "label": "Privileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1688,7 +1688,7 @@ "tags": [], "label": "hasAllPrivileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1708,7 +1708,7 @@ "text": "MissingPrivileges" } ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index c829036ad0276..5a18bc3b3e862 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql.mdx b/api_docs/esql.mdx index b4ff3ce93c735..ca72280960b27 100644 --- a/api_docs/esql.mdx +++ b/api_docs/esql.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esql title: "esql" image: https://source.unsplash.com/400x175/?github description: API docs for the esql plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esql'] --- import esqlObj from './esql.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index b5060fdb05182..55078d4efbb03 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 11a33d66f096f..b2a70729e8e5e 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 02d5d22af7bc7..04f489a4ad73d 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 9aa079d38af36..e46b55e6125f3 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.devdocs.json b/api_docs/exploratory_view.devdocs.json index 1e5af66252fb0..3aed42a57a9a9 100644 --- a/api_docs/exploratory_view.devdocs.json +++ b/api_docs/exploratory_view.devdocs.json @@ -23,7 +23,7 @@ }, "; }, baseHref: string) => string" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -34,7 +34,7 @@ "tags": [], "label": "{ reportType, allSeries }", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -48,7 +48,7 @@ "signature": [ "\"heatmap\" | \"data-distribution\" | \"kpi-over-time\" | \"core-web-vitals\" | \"device-data-distribution\" | \"single-metric\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false }, @@ -69,7 +69,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false } @@ -85,7 +85,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -106,7 +106,7 @@ "ExploratoryViewPageProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -120,7 +120,7 @@ "signature": [ "ExploratoryViewPageProps" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -141,7 +141,7 @@ "FilterValueLabelProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -155,7 +155,7 @@ "signature": [ "FilterValueLabelProps" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -174,7 +174,7 @@ "signature": [ "(query: Record) => string" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -188,7 +188,7 @@ "signature": [ "Record" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -209,7 +209,7 @@ "SelectableUrlListProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -223,7 +223,7 @@ "signature": [ "SelectableUrlListProps" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -244,7 +244,7 @@ "ParsedQuery", "" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -258,7 +258,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -276,7 +276,7 @@ "tags": [], "label": "ConfigProps", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -297,7 +297,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -318,7 +318,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -332,7 +332,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false } @@ -346,7 +346,7 @@ "tags": [], "label": "ExploratoryEmbeddableProps", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -360,7 +360,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -374,7 +374,7 @@ "signature": [ "JSX.Element | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -395,7 +395,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -416,7 +416,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -437,7 +437,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -451,7 +451,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -465,7 +465,7 @@ "signature": [ "{ from: string; to: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -481,7 +481,7 @@ "AppDataType", ", string>> | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -495,7 +495,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -509,7 +509,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -524,7 +524,7 @@ "Position", " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -538,7 +538,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -552,7 +552,7 @@ "signature": [ "((param: { range: number[]; }) => void) | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -563,7 +563,7 @@ "tags": [], "label": "param", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -577,7 +577,7 @@ "signature": [ "number[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false } @@ -596,7 +596,7 @@ "signature": [ "((loading: boolean) => void) | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -610,7 +610,7 @@ "signature": [ "boolean" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -628,7 +628,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -643,7 +643,7 @@ "ReportConfigMap", " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -657,7 +657,7 @@ "signature": [ "\"heatmap\" | \"data-distribution\" | \"kpi-over-time\" | \"core-web-vitals\" | \"device-data-distribution\" | \"single-metric\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -671,7 +671,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -685,7 +685,7 @@ "signature": [ "string | JSX.Element | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -701,7 +701,7 @@ "ActionTypes", "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -715,7 +715,7 @@ "signature": [ "\"right\" | \"center\" | \"left\" | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -729,7 +729,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -743,7 +743,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -757,7 +757,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -771,7 +771,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -785,7 +785,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -799,7 +799,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -814,7 +814,7 @@ "QueryDslQueryContainer", "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false } @@ -828,7 +828,7 @@ "tags": [], "label": "ExploratoryViewPublicPluginsSetup", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -848,7 +848,7 @@ "text": "DataPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -896,7 +896,7 @@ }, ") => void; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -916,7 +916,7 @@ "text": "TriggersAndActionsUIPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -936,7 +936,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -957,7 +957,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -971,7 +971,7 @@ "tags": [], "label": "ExploratoryViewPublicPluginsStart", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -991,7 +991,7 @@ "text": "CasesPublicStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1014,7 +1014,7 @@ "ActiveCursor", "; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1034,7 +1034,7 @@ "text": "DataPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1054,7 +1054,7 @@ "text": "DataViewsServicePublic" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1074,7 +1074,7 @@ "text": "DiscoverStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1094,7 +1094,7 @@ "text": "EmbeddableStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1114,7 +1114,7 @@ "text": "LensPublicStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1134,7 +1134,7 @@ "text": "LicensingPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1178,7 +1178,7 @@ }, ">; }) => void; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1198,7 +1198,7 @@ "text": "SecurityPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1238,7 +1238,7 @@ }, ">): void; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1259,7 +1259,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1279,7 +1279,7 @@ "text": "TriggersAndActionsUIPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1299,7 +1299,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1319,7 +1319,7 @@ "text": "UnifiedSearchPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1340,7 +1340,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1361,7 +1361,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -1375,7 +1375,7 @@ "tags": [], "label": "SeriesConfig", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1386,7 +1386,7 @@ "tags": [], "label": "reportType", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1416,7 +1416,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1438,7 +1438,7 @@ }, ">[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1452,7 +1452,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1466,7 +1466,7 @@ "signature": [ "\"area\" | \"line\" | \"bar\" | \"bar_stacked\" | \"area_stacked\" | \"bar_horizontal\" | \"bar_percentage_stacked\" | \"bar_horizontal_stacked\" | \"area_percentage_stacked\" | \"bar_horizontal_percentage_stacked\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1480,7 +1480,7 @@ "signature": [ "(string | { field: string; nested?: string | undefined; isNegated?: boolean | undefined; })[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1501,7 +1501,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1539,7 +1539,7 @@ }, ")[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1577,7 +1577,7 @@ }, ")[] | undefined; })[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1591,7 +1591,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1609,7 +1609,7 @@ "MetricOption", "[]; columnType?: string | undefined; })[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1623,7 +1623,7 @@ "signature": [ "{ [x: string]: string; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1634,7 +1634,7 @@ "tags": [], "label": "hasOperationType", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1655,7 +1655,7 @@ }, "<{ [key: string]: unknown; }> | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1669,7 +1669,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1690,7 +1690,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1704,7 +1704,7 @@ "signature": [ "{ query: string; language: \"kuery\"; } | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false } @@ -1718,7 +1718,7 @@ "tags": [], "label": "SeriesUrl", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1729,7 +1729,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1743,7 +1743,7 @@ "signature": [ "{ to: string; from: string; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1757,7 +1757,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1778,7 +1778,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1799,7 +1799,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1813,7 +1813,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1827,7 +1827,7 @@ "signature": [ "\"uptime\" | \"alerts\" | \"apm\" | \"synthetics\" | \"ux\" | \"infra_logs\" | \"infra_metrics\" | \"mobile\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1842,7 +1842,7 @@ "URLReportDefinition", " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1857,7 +1857,7 @@ "URLTextReportDefinition", " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1871,7 +1871,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1885,7 +1885,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1899,7 +1899,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1913,7 +1913,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false } @@ -1927,7 +1927,7 @@ "tags": [], "label": "UrlFilter", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1938,7 +1938,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1952,7 +1952,7 @@ "signature": [ "(string | number)[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1966,7 +1966,7 @@ "signature": [ "(string | number)[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1980,7 +1980,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1994,7 +1994,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false } @@ -2010,7 +2010,7 @@ "tags": [], "label": "ReportTypes", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2027,7 +2027,7 @@ "signature": [ "\"ALL_VALUES\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2049,7 +2049,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2064,7 +2064,7 @@ "signature": [ "\"/app/exploratory-view\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2079,7 +2079,7 @@ "signature": [ "\"ENVIRONMENT_ALL\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2094,7 +2094,7 @@ "signature": [ "\"FILTER_RECORDS\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2109,7 +2109,7 @@ "signature": [ "\"operation\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2124,7 +2124,7 @@ "signature": [ "\"___records___\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2139,7 +2139,7 @@ "signature": [ "\"RecordsPercentage\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2154,7 +2154,7 @@ "signature": [ "\"REPORT_METRIC_FIELD\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2169,7 +2169,7 @@ "signature": [ "\"TERMS_COLUMN\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2184,7 +2184,7 @@ "signature": [ "\"USE_BREAK_DOWN_COLUMN\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2205,7 +2205,7 @@ "DataHandler", ") => void; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "setup", @@ -2249,7 +2249,7 @@ }, ") => React.JSX.Element | null; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 0747f3abccb98..c8434605c639f 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.devdocs.json b/api_docs/expression_error.devdocs.json index 62ffbcbfcbc9b..dba511e558d27 100644 --- a/api_docs/expression_error.devdocs.json +++ b/api_docs/expression_error.devdocs.json @@ -16,10 +16,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -45,10 +45,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx", "deprecated": false, @@ -72,10 +71,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -103,10 +102,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_error/public/expression_renderers/error_renderer.tsx", "deprecated": false, @@ -125,17 +123,15 @@ "label": "getDebugRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -154,19 +150,16 @@ "id": "def-public.getDebugRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx", "deprecated": false, @@ -185,17 +178,15 @@ "label": "getErrorRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -216,19 +207,16 @@ "id": "def-public.getErrorRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_error/public/expression_renderers/error_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index c73e5e84b358b..d4da404bb9d33 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.devdocs.json b/api_docs/expression_gauge.devdocs.json index 6ba87ba4bcf94..f6c764238b10a 100644 --- a/api_docs/expression_gauge.devdocs.json +++ b/api_docs/expression_gauge.devdocs.json @@ -708,7 +708,7 @@ "label": "labelMajorMode", "description": [], "signature": [ - "\"none\" | \"custom\" | \"auto\"" + "\"none\" | \"auto\" | \"custom\"" ], "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", "deprecated": false, @@ -1143,7 +1143,7 @@ "label": "GaugeLabelMajorMode", "description": [], "signature": [ - "\"none\" | \"custom\" | \"auto\"" + "\"none\" | \"auto\" | \"custom\"" ], "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", "deprecated": false, diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index c635b5fe388e0..3b786fe7ef88e 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index b093aa04f77e4..4dbac1bef33c9 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.devdocs.json b/api_docs/expression_image.devdocs.json index 538b4756896a0..3fc201e165956 100644 --- a/api_docs/expression_image.devdocs.json +++ b/api_docs/expression_image.devdocs.json @@ -11,17 +11,15 @@ "label": "getImageRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -48,19 +46,16 @@ "id": "def-public.getImageRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_image/public/expression_renderers/image_renderer.tsx", "deprecated": false, @@ -84,10 +79,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -121,10 +116,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_image/public/expression_renderers/image_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 89335338a43bc..7817849362790 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 2e322f6395838..77e998d0b775e 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.devdocs.json b/api_docs/expression_metric.devdocs.json index 22138d1d9d741..a5d21f7749884 100644 --- a/api_docs/expression_metric.devdocs.json +++ b/api_docs/expression_metric.devdocs.json @@ -11,17 +11,15 @@ "label": "getMetricRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -48,19 +46,16 @@ "id": "def-public.getMetricRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx", "deprecated": false, @@ -84,10 +79,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -121,10 +116,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index d7280c0b2816e..fa52bfc687d74 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.devdocs.json b/api_docs/expression_metric_vis.devdocs.json index 8383126e6833c..943695ad45e68 100644 --- a/api_docs/expression_metric_vis.devdocs.json +++ b/api_docs/expression_metric_vis.devdocs.json @@ -773,6 +773,14 @@ "label": "palette", "description": [], "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteOutput", + "text": "PaletteOutput" + }, + "<", { "pluginId": "charts", "scope": "common", @@ -780,7 +788,7 @@ "section": "def-common.CustomPaletteState", "text": "CustomPaletteState" }, - " | undefined" + "> | undefined" ], "path": "src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts", "deprecated": false, diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 9977283084d0b..d076a70787c17 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 312c988229f07..303172c4daac8 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.devdocs.json b/api_docs/expression_repeat_image.devdocs.json index 10a6801189d81..65a50ddeb3880 100644 --- a/api_docs/expression_repeat_image.devdocs.json +++ b/api_docs/expression_repeat_image.devdocs.json @@ -11,17 +11,15 @@ "label": "getRepeatImageRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -48,19 +46,16 @@ "id": "def-public.getRepeatImageRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx", "deprecated": false, @@ -84,10 +79,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -121,10 +116,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 4535d413fc816..9bddffc83a47b 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.devdocs.json b/api_docs/expression_reveal_image.devdocs.json index bc0a3212309f8..cdda11e92d9f2 100644 --- a/api_docs/expression_reveal_image.devdocs.json +++ b/api_docs/expression_reveal_image.devdocs.json @@ -11,17 +11,15 @@ "label": "getRevealImageRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -42,19 +40,16 @@ "id": "def-public.getRevealImageRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx", "deprecated": false, @@ -78,10 +73,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -109,10 +104,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 7d1ab6f4a9a33..7a4532da0500b 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.devdocs.json b/api_docs/expression_shape.devdocs.json index 2c47953861b51..f1790eef4a61b 100644 --- a/api_docs/expression_shape.devdocs.json +++ b/api_docs/expression_shape.devdocs.json @@ -35,17 +35,15 @@ "label": "getProgressRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -72,19 +70,16 @@ "id": "def-public.getProgressRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx", "deprecated": false, @@ -103,17 +98,15 @@ "label": "getShapeRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -140,19 +133,16 @@ "id": "def-public.getShapeRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx", "deprecated": false, @@ -224,10 +214,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -261,10 +251,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx", "deprecated": false, @@ -336,10 +325,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -373,10 +362,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index eff56c07d1a14..f88a764e35eb9 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 734153b77ee31..b8c73b5caacd5 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.devdocs.json b/api_docs/expression_x_y.devdocs.json index 5e2c8408e14de..b938183e821f1 100644 --- a/api_docs/expression_x_y.devdocs.json +++ b/api_docs/expression_x_y.devdocs.json @@ -432,7 +432,7 @@ "label": "mode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, @@ -2378,7 +2378,7 @@ "label": "AxisExtentMode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index fdf09df0f53f1..6d01b972dc9b2 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 8228e88521717..26649c8f7069b 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index c561174f5ce55..102fed53fb710 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.devdocs.json b/api_docs/field_formats.devdocs.json index b4cab8626387a..f12fc9280b47e 100644 --- a/api_docs/field_formats.devdocs.json +++ b/api_docs/field_formats.devdocs.json @@ -1210,7 +1210,7 @@ "label": "getParamDefaults", "description": [], "signature": [ - "() => { fieldType: null; colors: { range: string; regex: string; text: string; background: string; }[]; }" + "() => { fieldType: null; colors: { range: string; regex: string; text: string; background: string; boolean: string; }[]; }" ], "path": "src/plugins/field_formats/common/converters/color.tsx", "deprecated": false, @@ -1226,7 +1226,7 @@ "label": "findColorRuleForVal", "description": [], "signature": [ - "(val: string | number) => any" + "(val: string | number | boolean) => any" ], "path": "src/plugins/field_formats/common/converters/color.tsx", "deprecated": false, @@ -1240,7 +1240,7 @@ "label": "val", "description": [], "signature": [ - "string | number" + "string | number | boolean" ], "path": "src/plugins/field_formats/common/converters/color.tsx", "deprecated": false, @@ -6577,6 +6577,17 @@ "path": "src/plugins/field_formats/common/constants/color_default.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DEFAULT_CONVERTER_COLOR.boolean", + "type": "string", + "tags": [], + "label": "boolean", + "description": [], + "path": "src/plugins/field_formats/common/constants/color_default.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 768d75caea360..4a6d195f75e75 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 292 | 5 | 253 | 3 | +| 293 | 5 | 254 | 3 | ## Client diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index 55d0837d9cf5a..3c8071fb3705e 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 612626066ad89..a414ec2753b72 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 7f4e32c22ca35..cdc8ad140dc80 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 0018dee49f984..b0c433b062fb0 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index fdd4aea83eeb4..2f0eca2ba5609 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -1685,40 +1685,40 @@ "trackAdoption": false, "references": [ { - "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts" }, { "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/public/test/mocks.ts" + "path": "x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts" }, { "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/public/test/mocks.ts" + "path": "x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts" + "plugin": "cloudDefend", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" } ] }, @@ -24573,40 +24573,40 @@ "trackAdoption": false, "references": [ { - "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts" }, { "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/public/test/mocks.ts" + "path": "x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts" }, { "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/public/test/mocks.ts" + "path": "x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts" + "plugin": "cloudDefend", + "path": "x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" } ] }, @@ -28710,7 +28710,7 @@ "label": "PackageSpecCategory", "description": [], "signature": [ - "\"connector\" | \"monitoring\" | \"security\" | \"observability\" | \"custom\" | \"infrastructure\" | \"kubernetes\" | \"cloud\" | \"advanced_analytics_ueba\" | \"analytics_engine\" | \"application_observability\" | \"auditd\" | \"authentication\" | \"aws\" | \"azure\" | \"big_data\" | \"cdn_security\" | \"config_management\" | \"connector_client\" | \"containers\" | \"crawler\" | \"credential_management\" | \"crm\" | \"custom_logs\" | \"database_security\" | \"datastore\" | \"dns_security\" | \"edr_xdr\" | \"cloudsecurity_cdr\" | \"elasticsearch_sdk\" | \"elastic_stack\" | \"email_security\" | \"firewall_security\" | \"google_cloud\" | \"iam\" | \"ids_ips\" | \"java_observability\" | \"language_client\" | \"languages\" | \"load_balancer\" | \"message_queue\" | \"native_search\" | \"network\" | \"network_security\" | \"notification\" | \"os_system\" | \"process_manager\" | \"productivity\" | \"productivity_security\" | \"proxy_security\" | \"sdk_search\" | \"stream_processing\" | \"support\" | \"threat_intel\" | \"ticketing\" | \"version_control\" | \"virtualization\" | \"vpn_security\" | \"vulnerability_management\" | \"web\" | \"web_application_firewall\" | \"websphere\" | \"workplace_search_content_source\" | \"app_search\" | \"enterprise_search\" | \"workplace_search\"" + "\"connector\" | \"monitoring\" | \"security\" | \"observability\" | \"infrastructure\" | \"kubernetes\" | \"cloud\" | \"custom\" | \"advanced_analytics_ueba\" | \"analytics_engine\" | \"application_observability\" | \"auditd\" | \"authentication\" | \"aws\" | \"azure\" | \"big_data\" | \"cdn_security\" | \"config_management\" | \"connector_client\" | \"containers\" | \"crawler\" | \"credential_management\" | \"crm\" | \"custom_logs\" | \"database_security\" | \"datastore\" | \"dns_security\" | \"edr_xdr\" | \"cloudsecurity_cdr\" | \"elasticsearch_sdk\" | \"elastic_stack\" | \"email_security\" | \"firewall_security\" | \"google_cloud\" | \"iam\" | \"ids_ips\" | \"java_observability\" | \"language_client\" | \"languages\" | \"load_balancer\" | \"message_queue\" | \"native_search\" | \"network\" | \"network_security\" | \"notification\" | \"os_system\" | \"process_manager\" | \"productivity\" | \"productivity_security\" | \"proxy_security\" | \"sdk_search\" | \"stream_processing\" | \"support\" | \"threat_intel\" | \"ticketing\" | \"version_control\" | \"virtualization\" | \"vpn_security\" | \"vulnerability_management\" | \"web\" | \"web_application_firewall\" | \"websphere\" | \"workplace_search_content_source\" | \"app_search\" | \"enterprise_search\" | \"workplace_search\"" ], "path": "x-pack/plugins/fleet/common/types/models/package_spec.ts", "deprecated": false, diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 1c16c88a74b2d..d70229007aff6 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 63bfa4db9f189..18ccbce9be88b 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index d0591ff26bd29..37a649bb491e1 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index a873a6e0b36a4..a3942b1fc2f50 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index b013fcc8c6007..9411d59d344ba 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.devdocs.json b/api_docs/index_lifecycle_management.devdocs.json index d7ec7a91677c2..63d1165a96833 100644 --- a/api_docs/index_lifecycle_management.devdocs.json +++ b/api_docs/index_lifecycle_management.devdocs.json @@ -28,7 +28,7 @@ "text": "SerializableRecord" } ], - "path": "x-pack/plugins/index_lifecycle_management/public/locator.ts", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -42,7 +42,7 @@ "signature": [ "\"policies_list\" | \"policy_edit\" | \"policy_create\"" ], - "path": "x-pack/plugins/index_lifecycle_management/public/locator.ts", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts", "deprecated": false, "trackAdoption": false }, @@ -56,7 +56,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/index_lifecycle_management/public/locator.ts", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts", "deprecated": false, "trackAdoption": false } @@ -76,7 +76,7 @@ "signature": [ "\"ILM_LOCATOR_ID\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 23b176f4d0756..66bad61311fae 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.devdocs.json b/api_docs/index_management.devdocs.json index ca65364f8319b..8229c1e6dd94c 100644 --- a/api_docs/index_management.devdocs.json +++ b/api_docs/index_management.devdocs.json @@ -108,7 +108,7 @@ "tags": [], "label": "Index", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -119,7 +119,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -133,7 +133,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -147,7 +147,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -158,7 +158,7 @@ "tags": [], "label": "isFrozen", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -169,7 +169,7 @@ "tags": [], "label": "hidden", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -183,7 +183,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -197,7 +197,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -211,7 +211,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -226,7 +226,7 @@ "IlmExplainLifecycleLifecycleExplain", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -240,7 +240,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -255,7 +255,7 @@ "HealthStatus", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -270,7 +270,7 @@ "IndicesStatsIndexMetadataState", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -284,7 +284,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -298,7 +298,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -312,7 +312,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -326,7 +326,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -340,7 +340,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -354,7 +354,7 @@ "tags": [], "label": "IndexMappingProps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -375,7 +375,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -389,7 +389,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -403,7 +403,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -445,7 +445,7 @@ }, " & ({ page: \"data_streams_details\"; dataStreamName?: string | undefined; } | { page: \"index_template\"; indexTemplate: string; } | { page: \"component_template\"; componentTemplate: string; })" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -459,7 +459,7 @@ "tags": [], "label": "IndexManagementPluginSetup", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -479,7 +479,7 @@ "text": "PublicApiServiceSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -499,7 +499,7 @@ "text": "ExtensionsSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -520,7 +520,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -535,7 +535,7 @@ "tags": [], "label": "IndexManagementPluginStart", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -555,7 +555,7 @@ "text": "ExtensionsSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -585,7 +585,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -596,7 +596,7 @@ "tags": [], "label": "deps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -617,7 +617,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -652,7 +652,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -663,7 +663,7 @@ "tags": [], "label": "deps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -684,7 +684,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -783,7 +783,7 @@ "tags": [], "label": "Index", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -794,7 +794,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -808,7 +808,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -822,7 +822,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -833,7 +833,7 @@ "tags": [], "label": "isFrozen", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -844,7 +844,7 @@ "tags": [], "label": "hidden", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -858,7 +858,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -872,7 +872,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -886,7 +886,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -901,7 +901,7 @@ "IlmExplainLifecycleLifecycleExplain", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -915,7 +915,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -930,7 +930,7 @@ "HealthStatus", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -945,7 +945,7 @@ "IndicesStatsIndexMetadataState", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -959,7 +959,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -973,7 +973,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -987,7 +987,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1001,7 +1001,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1015,7 +1015,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -2148,6 +2148,9 @@ "tags": [], "label": "managedBy", "description": [], + "signature": [ + "string | undefined" + ], "path": "x-pack/plugins/index_management/common/types/data_streams.ts", "deprecated": false, "trackAdoption": false @@ -2418,7 +2421,7 @@ "tags": [], "label": "Index", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2429,7 +2432,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2443,7 +2446,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2457,7 +2460,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2468,7 +2471,7 @@ "tags": [], "label": "isFrozen", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2479,7 +2482,7 @@ "tags": [], "label": "hidden", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2493,7 +2496,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2507,7 +2510,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2521,7 +2524,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2536,7 +2539,7 @@ "IlmExplainLifecycleLifecycleExplain", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2550,7 +2553,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2565,7 +2568,7 @@ "HealthStatus", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2580,7 +2583,7 @@ "IndicesStatsIndexMetadataState", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2594,7 +2597,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2608,7 +2611,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2622,7 +2625,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2636,7 +2639,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2650,7 +2653,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -3163,7 +3166,14 @@ "label": "indexMode", "description": [], "signature": [ - "\"standard\" | \"time_series\" | \"logsdb\"" + { + "pluginId": "indexManagement", + "scope": "common", + "docId": "kibIndexManagementPluginApi", + "section": "def-common.IndexMode", + "text": "IndexMode" + }, + " | undefined" ], "path": "x-pack/plugins/index_management/common/types/templates.ts", "deprecated": false, diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 8b38c273afb1a..d911559597f2d 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/inference.devdocs.json b/api_docs/inference.devdocs.json index 4cf16dcfec9bf..1ece7676f9681 100644 --- a/api_docs/inference.devdocs.json +++ b/api_docs/inference.devdocs.json @@ -17,7 +17,7 @@ "StreamedHttpResponse", ", T>" ], - "path": "x-pack/plugins/inference/public/util/http_response_into_observable.ts", + "path": "x-pack/platform/plugins/shared/inference/public/util/http_response_into_observable.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -36,7 +36,7 @@ "tags": [], "label": "InferencePublicSetup", "description": [], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "InferencePublicStart", "description": [], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -96,7 +96,7 @@ }, "" ], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -127,7 +127,7 @@ }, " | undefined; } & TToolOptions" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false } @@ -163,7 +163,7 @@ }, "" ], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -185,7 +185,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -203,7 +203,7 @@ "InferenceConnector", "[]>" ], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -225,7 +225,7 @@ "label": "naturalLanguageToEsql", "description": [], "signature": [ - "({\n client,\n connectorId,\n tools,\n toolChoice,\n logger,\n functionCalling,\n ...rest\n}: ", + "({\n client,\n connectorId,\n tools,\n toolChoice,\n logger,\n functionCalling,\n system,\n ...rest\n}: ", "NlToEsqlTaskParams", ") => ", "Observable", @@ -233,7 +233,7 @@ "NlToEsqlTaskEvent", ">" ], - "path": "x-pack/plugins/inference/server/tasks/nl_to_esql/task.ts", + "path": "x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -242,13 +242,13 @@ "id": "def-server.naturalLanguageToEsql.$1", "type": "CompoundType", "tags": [], - "label": "{\n client,\n connectorId,\n tools,\n toolChoice,\n logger,\n functionCalling,\n ...rest\n}", + "label": "{\n client,\n connectorId,\n tools,\n toolChoice,\n logger,\n functionCalling,\n system,\n ...rest\n}", "description": [], "signature": [ "NlToEsqlTaskParams", "" ], - "path": "x-pack/plugins/inference/server/tasks/nl_to_esql/task.ts", + "path": "x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -268,7 +268,7 @@ "description": [ "\nA version of the {@link InferenceClient} that is pre-bound to a set of parameters." ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -316,7 +316,7 @@ }, "" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -339,7 +339,7 @@ }, "[P]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false } @@ -377,7 +377,7 @@ }, "" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -390,7 +390,7 @@ "label": "options", "description": [], "signature": [ - "{ id: TId; input: string; schema?: TOutputSchema | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", + "{ id: TId; input: string; schema?: TOutputSchema | undefined; retry?: { onValidationError?: number | boolean | undefined; } | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", { "pluginId": "@kbn/inference-common", "scope": "common", @@ -400,7 +400,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false } @@ -420,7 +420,7 @@ "InferenceConnector", ">" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -434,7 +434,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -454,7 +454,7 @@ "description": [ "\nAn inference client, scoped to a request, that can be used to interact with LLMs." ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -502,7 +502,7 @@ }, "" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -533,7 +533,7 @@ }, " | undefined; } & TToolOptions" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false } @@ -571,7 +571,7 @@ }, "" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -593,7 +593,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -613,7 +613,7 @@ "InferenceConnector", ">" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -627,7 +627,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -651,7 +651,7 @@ "description": [ "\nSetup contract of the inference plugin." ], - "path": "x-pack/plugins/inference/server/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -667,7 +667,7 @@ "description": [ "\nStart contract of the inference plugin, exposing APIs to interact with LLMs." ], - "path": "x-pack/plugins/inference/server/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -702,7 +702,7 @@ "text": "InferenceClient" } ], - "path": "x-pack/plugins/inference/server/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -716,7 +716,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/inference/server/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -744,7 +744,7 @@ "signature": [ "(query: string) => { input: string; output: string; isCorrection: boolean; }" ], - "path": "x-pack/plugins/inference/common/tasks/nl_to_esql/correct_esql_query.ts", + "path": "x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/correct_esql_query.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -758,7 +758,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/inference/common/tasks/nl_to_esql/correct_esql_query.ts", + "path": "x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/correct_esql_query.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -792,7 +792,7 @@ "text": "OutputAPI" } ], - "path": "x-pack/plugins/inference/common/output/create_output_api.ts", + "path": "x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -812,7 +812,7 @@ "text": "ChatCompleteAPI" } ], - "path": "x-pack/plugins/inference/common/output/create_output_api.ts", + "path": "x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -837,45 +837,31 @@ "section": "def-common.ChatCompleteAPI", "text": "ChatCompleteAPI" }, - ") => ({ id, connectorId, input, schema, system, previousMessages, functionCalling, stream, }: ", + ") => ({ id, connectorId, input, schema, system, previousMessages, functionCalling, stream, retry, }: DefaultOutputOptions) => Promise<", { "pluginId": "@kbn/inference-common", "scope": "common", "docId": "kibKbnInferenceCommonPluginApi", - "section": "def-common.OutputOptions", - "text": "OutputOptions" + "section": "def-common.OutputResponse", + "text": "OutputResponse" }, ") => ", - "Observable", - "<{ type: ", - { - "pluginId": "@kbn/inference-common", - "scope": "common", - "docId": "kibKbnInferenceCommonPluginApi", - "section": "def-common.OutputEventType", - "text": "OutputEventType" - }, - "; id: string; content: string; output?: undefined; } | { id: string; output: ", "AugmentedRequired", "<{ [x: string]: string | number | boolean | ", "AugmentedRequired", - " | FromToolSchemaArray | undefined; }, never> | undefined; content: string; type: ", + " | FromToolSchemaArray | undefined; }, never> | undefined>> | ", { "pluginId": "@kbn/inference-common", "scope": "common", "docId": "kibKbnInferenceCommonPluginApi", - "section": "def-common.OutputEventType", - "text": "OutputEventType" + "section": "def-common.OutputStreamResponse", + "text": "OutputStreamResponse" }, - "; }> | Promise<{ id: string; content: string; output: ", - "AugmentedRequired", - "<{ [x: string]: string | number | boolean | ", - "AugmentedRequired", - " | FromToolSchemaArray | undefined; }, never> | undefined; }>" + "" ], - "path": "x-pack/plugins/inference/common/output/create_output_api.ts", + "path": "x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -895,7 +881,7 @@ "text": "ChatCompleteAPI" } ], - "path": "x-pack/plugins/inference/common/output/create_output_api.ts", + "path": "x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -914,7 +900,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/inference/common/utils/generate_fake_tool_call_id.ts", + "path": "x-pack/platform/plugins/shared/inference/common/utils/generate_fake_tool_call_id.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -931,7 +917,7 @@ "signature": [ "(query: string) => { name: string | undefined; command: string; }[]" ], - "path": "x-pack/plugins/inference/common/tasks/nl_to_esql/non_ast/correct_common_esql_mistakes.ts", + "path": "x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/non_ast/correct_common_esql_mistakes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -945,7 +931,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/inference/common/tasks/nl_to_esql/non_ast/correct_common_esql_mistakes.ts", + "path": "x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/non_ast/correct_common_esql_mistakes.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -963,7 +949,7 @@ "tags": [], "label": "GetConnectorsResponseBody", "description": [], - "path": "x-pack/plugins/inference/common/http_apis.ts", + "path": "x-pack/platform/plugins/shared/inference/common/http_apis.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -978,7 +964,7 @@ "InferenceConnector", "[]" ], - "path": "x-pack/plugins/inference/common/http_apis.ts", + "path": "x-pack/platform/plugins/shared/inference/common/http_apis.ts", "deprecated": false, "trackAdoption": false } @@ -1022,7 +1008,7 @@ }, "" ], - "path": "x-pack/plugins/inference/common/http_apis.ts", + "path": "x-pack/platform/plugins/shared/inference/common/http_apis.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/inference.mdx b/api_docs/inference.mdx index 1bdc62e7c2b57..249f0333a5894 100644 --- a/api_docs/inference.mdx +++ b/api_docs/inference.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inference title: "inference" image: https://source.unsplash.com/400x175/?github description: API docs for the inference plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inference'] --- import inferenceObj from './inference.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 6651f313b1ad9..3fa4d0dedf914 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.devdocs.json b/api_docs/ingest_pipelines.devdocs.json index 98a227c237655..b5fc71af8d167 100644 --- a/api_docs/ingest_pipelines.devdocs.json +++ b/api_docs/ingest_pipelines.devdocs.json @@ -21,7 +21,7 @@ }, " extends Partial" ], - "path": "x-pack/plugins/ingest_pipelines/public/locator.ts", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/public/locator.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -42,7 +42,7 @@ }, ".LIST" ], - "path": "x-pack/plugins/ingest_pipelines/public/locator.ts", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/public/locator.ts", "deprecated": false, "trackAdoption": false } @@ -58,7 +58,7 @@ "tags": [], "label": "INGEST_PIPELINES_PAGES", "description": [], - "path": "x-pack/plugins/ingest_pipelines/public/locator.ts", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/public/locator.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -75,7 +75,7 @@ "signature": [ "\"INGEST_PIPELINES_APP_LOCATOR\"" ], - "path": "x-pack/plugins/ingest_pipelines/public/locator.ts", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/public/locator.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index fc223c19a423c..44e85e4a85c85 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index a1cd3a60b30b5..33f2916a0c07a 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/integration_assistant.devdocs.json b/api_docs/integration_assistant.devdocs.json index 31bb0f5b3f00b..7fba9a63693b1 100644 --- a/api_docs/integration_assistant.devdocs.json +++ b/api_docs/integration_assistant.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "IntegrationAssistantPluginSetup", "description": [], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "IntegrationAssistantPluginStart", "description": [], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -46,7 +46,7 @@ "CreateIntegrationCardButtonComponent", "; }" ], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -62,7 +62,7 @@ "signature": [ "(upselling: React.ReactNode) => void" ], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -76,7 +76,7 @@ "signature": [ "React.ReactNode" ], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -103,7 +103,7 @@ "tags": [], "label": "IntegrationAssistantPluginSetup", "description": [], - "path": "x-pack/plugins/integration_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -117,7 +117,7 @@ "signature": [ "(isAvailable: boolean) => void" ], - "path": "x-pack/plugins/integration_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -131,7 +131,7 @@ "signature": [ "boolean" ], - "path": "x-pack/plugins/integration_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -150,7 +150,7 @@ "tags": [], "label": "IntegrationAssistantPluginStart", "description": [], - "path": "x-pack/plugins/integration_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -173,7 +173,7 @@ "signature": [ "(arr: T[], start: number, end: number, seed: string) => void" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -189,7 +189,7 @@ "signature": [ "T[]" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -206,7 +206,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -223,7 +223,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -238,7 +238,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -258,7 +258,7 @@ "description": [ "\nProcessor item for the Elasticsearch processor." ], - "path": "x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -273,7 +273,7 @@ "[key: string]: ", "ESProcessorOptions" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts", "deprecated": false, "trackAdoption": false } @@ -290,7 +290,7 @@ "tags": [], "label": "ANALYZE_LOGS_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -305,7 +305,7 @@ "signature": [ "{ connectorId: string; packageName: string; dataStreamName: string; packageTitle: string; dataStreamTitle: string; logSamples: string[]; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -328,7 +328,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -359,7 +359,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }[]; logo?: string | undefined; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -371,7 +371,7 @@ "tags": [], "label": "CATEGORIZATION_GRAPH_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -402,7 +402,7 @@ }, "[] | undefined; }; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -433,7 +433,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -445,7 +445,7 @@ "tags": [], "label": "CEL_INPUT_GRAPH_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -462,7 +462,7 @@ "signature": [ "{ program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -477,7 +477,7 @@ "signature": [ "{ connectorId: string; dataStreamName: string; apiDefinition: string; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -492,7 +492,7 @@ "signature": [ "{ results: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -504,7 +504,7 @@ "tags": [], "label": "CHECK_PIPELINE_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -535,7 +535,7 @@ }, "[] | undefined; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -550,7 +550,7 @@ "signature": [ "{ results: { docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -583,7 +583,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -600,7 +600,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -612,7 +612,7 @@ "tags": [], "label": "ECS_GRAPH_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -635,7 +635,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -666,7 +666,7 @@ }, "[] | undefined; }; mapping: {} & { [k: string]: unknown; }; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -683,7 +683,7 @@ "signature": [ "\"kafka\" | \"aws-cloudwatch\" | \"aws-s3\" | \"azure-blob-storage\" | \"azure-eventhub\" | \"cel\" | \"cloudfoundry\" | \"filestream\" | \"gcp-pubsub\" | \"gcs\" | \"http_endpoint\" | \"journald\" | \"tcp\" | \"udp\"" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -716,7 +716,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }[]; logo?: string | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -731,7 +731,7 @@ "signature": [ "\"/app/integration_assistant\"" ], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -744,9 +744,9 @@ "label": "INTEGRATION_ASSISTANT_BASE_PATH", "description": [], "signature": [ - "\"/api/integration_assistant\"" + "\"/internal/automatic_import\"" ], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -758,7 +758,7 @@ "tags": [], "label": "INTEGRATION_BUILDER_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -775,7 +775,7 @@ "signature": [ "{ apiKey: string; projectName: string; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -808,7 +808,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -823,7 +823,7 @@ "signature": [ "\"integrationAssistant\"" ], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -835,7 +835,7 @@ "tags": [], "label": "RELATED_GRAPH_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -866,7 +866,7 @@ }, "[] | undefined; }; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -897,7 +897,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -914,7 +914,7 @@ "signature": [ "{ name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -931,7 +931,7 @@ "signature": [ "\"ndjson\" | \"json\" | \"csv\" | \"structured\" | \"unstructured\" | \"unsupported\" | \"cef\" | \"leef\" | \"fix\"" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -948,7 +948,7 @@ "signature": [ "Zod.ZodObject<{ packageName: Zod.ZodString; dataStreamName: Zod.ZodString; packageTitle: Zod.ZodString; dataStreamTitle: Zod.ZodString; logSamples: Zod.ZodArray; connectorId: Zod.ZodString; langSmithOptions: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; packageName: string; dataStreamName: string; packageTitle: string; dataStreamTitle: string; logSamples: string[]; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }, { connectorId: string; packageName: string; dataStreamName: string; packageTitle: string; dataStreamTitle: string; logSamples: string[]; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -983,7 +983,7 @@ "ESProcessorItemInput", "[] | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1098,7 +1098,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }[]; logo?: string | undefined; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1173,7 +1173,7 @@ "ESProcessorItemInput", "[] | undefined; }; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1268,7 +1268,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1283,7 +1283,7 @@ "signature": [ "Zod.ZodObject<{ program: Zod.ZodString; stateSettings: Zod.ZodObject<{}, \"strip\", Zod.ZodUnknown, Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>; redactVars: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }, { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1298,7 +1298,7 @@ "signature": [ "Zod.ZodObject<{ dataStreamName: Zod.ZodString; apiDefinition: Zod.ZodString; connectorId: Zod.ZodString; langSmithOptions: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; dataStreamName: string; apiDefinition: string; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }, { connectorId: string; dataStreamName: string; apiDefinition: string; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1313,7 +1313,7 @@ "signature": [ "Zod.ZodObject<{ results: Zod.ZodObject<{ program: Zod.ZodString; stateSettings: Zod.ZodObject<{}, \"strip\", Zod.ZodUnknown, Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>; redactVars: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }, { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }>; }, \"strip\", Zod.ZodTypeAny, { results: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }; }, { results: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1388,7 +1388,7 @@ "ESProcessorItemInput", "[] | undefined; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1403,7 +1403,7 @@ "signature": [ "Zod.ZodObject<{ results: Zod.ZodObject<{ docs: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }, { docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; }>; }, \"strip\", Zod.ZodTypeAny, { results: { docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }, { results: { docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1478,7 +1478,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1493,7 +1493,7 @@ "signature": [ "Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>, \"many\">" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1528,7 +1528,7 @@ "ESProcessorItemInput", "[] | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1623,7 +1623,7 @@ "ESProcessorItemInput", "[] | undefined; }; mapping: {} & { [k: string]: unknown; }; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1648,7 +1648,7 @@ "ESProcessorItemInput", ">" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1663,7 +1663,7 @@ "signature": [ "Zod.ZodEnum<[\"aws-cloudwatch\", \"aws-s3\", \"azure-blob-storage\", \"azure-eventhub\", \"cel\", \"cloudfoundry\", \"filestream\", \"gcp-pubsub\", \"gcs\", \"http_endpoint\", \"journald\", \"kafka\", \"tcp\", \"udp\"]>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1758,7 +1758,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }[]; logo?: string | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1773,7 +1773,7 @@ "signature": [ "Zod.ZodObject<{ projectName: Zod.ZodString; apiKey: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { apiKey: string; projectName: string; }, { apiKey: string; projectName: string; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1828,7 +1828,7 @@ "ESProcessorItemInput", "[] | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1903,7 +1903,7 @@ "ESProcessorItemInput", "[] | undefined; }; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1998,7 +1998,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2013,7 +2013,7 @@ "signature": [ "Zod.ZodObject<{ name: Zod.ZodEnum<[\"ndjson\", \"json\", \"csv\", \"structured\", \"unstructured\", \"unsupported\", \"cef\", \"leef\", \"fix\"]>; multiline: Zod.ZodOptional; header: Zod.ZodOptional; columns: Zod.ZodOptional>; json_path: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }, { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2028,7 +2028,7 @@ "signature": [ "Zod.ZodEnum<[\"ndjson\", \"json\", \"csv\", \"structured\", \"unstructured\", \"unsupported\", \"cef\", \"leef\", \"fix\"]>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/integration_assistant.mdx b/api_docs/integration_assistant.mdx index 3f2edb2b3be01..9597d43c6a87e 100644 --- a/api_docs/integration_assistant.mdx +++ b/api_docs/integration_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/integrationAssistant title: "integrationAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the integrationAssistant plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'integrationAssistant'] --- import integrationAssistantObj from './integration_assistant.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 973d5a52acacf..0dbd9fc8558f1 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/inventory.mdx b/api_docs/inventory.mdx index e13143d804bad..3fbe008768848 100644 --- a/api_docs/inventory.mdx +++ b/api_docs/inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inventory title: "inventory" image: https://source.unsplash.com/400x175/?github description: API docs for the inventory plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inventory'] --- import inventoryObj from './inventory.devdocs.json'; diff --git a/api_docs/investigate.devdocs.json b/api_docs/investigate.devdocs.json index 6027d5241e210..dd3feacebf9dd 100644 --- a/api_docs/investigate.devdocs.json +++ b/api_docs/investigate.devdocs.json @@ -23,7 +23,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/util/get_es_filters_from_global_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -39,7 +39,7 @@ "GlobalWidgetParameters", ">" ], - "path": "x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/util/get_es_filters_from_global_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -58,7 +58,7 @@ "signature": [ "(t1: T1) => T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -72,7 +72,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -91,7 +91,7 @@ "signature": [ "(t1: T1, t2: T2) => [T2] extends Mergable[] ? DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -105,7 +105,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -120,7 +120,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -139,7 +139,7 @@ "signature": [ "(t1: T1, t2: T2, t3: T3) => [T2, T3] extends Mergable[] ? DeepOverwrite | DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -153,7 +153,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -168,7 +168,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -183,7 +183,7 @@ "signature": [ "T3" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -202,7 +202,7 @@ "signature": [ "(t1: T1, t2: T2, t3: T4) => [T2, T3, T4] extends Mergable[] ? DeepOverwrite | DeepOverwrite | DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -216,7 +216,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -231,7 +231,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -246,7 +246,7 @@ "signature": [ "T4" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -265,7 +265,7 @@ "signature": [ "(sources: Record[]) => any" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -279,7 +279,7 @@ "signature": [ "Record[]" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -297,7 +297,7 @@ "tags": [], "label": "GlobalWidgetParameters", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -311,7 +311,7 @@ "signature": [ "{ from: string; to: string; }" ], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -329,7 +329,7 @@ "tags": [], "label": "InvestigatePublicSetup", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -349,7 +349,7 @@ "ItemDefinition", ") => void" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -364,7 +364,7 @@ "ItemDefinition", "" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -383,7 +383,7 @@ "tags": [], "label": "InvestigatePublicStart", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -399,7 +399,7 @@ "ItemDefinition", "<{}, {}>[]" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -417,7 +417,7 @@ "ItemDefinition", "<{}, {}> | undefined" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -431,7 +431,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -458,7 +458,7 @@ "tags": [], "label": "InvestigateServerSetup", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/server/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -472,7 +472,7 @@ "tags": [], "label": "InvestigateServerStart", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/server/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -493,7 +493,7 @@ "signature": [ "(t1: T1) => T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -507,7 +507,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -526,7 +526,7 @@ "signature": [ "(t1: T1, t2: T2) => [T2] extends Mergable[] ? DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -540,7 +540,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -555,7 +555,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -574,7 +574,7 @@ "signature": [ "(t1: T1, t2: T2, t3: T3) => [T2, T3] extends Mergable[] ? DeepOverwrite | DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -588,7 +588,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -603,7 +603,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -618,7 +618,7 @@ "signature": [ "T3" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -637,7 +637,7 @@ "signature": [ "(t1: T1, t2: T2, t3: T4) => [T2, T3, T4] extends Mergable[] ? DeepOverwrite | DeepOverwrite | DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -651,7 +651,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -666,7 +666,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -681,7 +681,7 @@ "signature": [ "T4" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -700,7 +700,7 @@ "signature": [ "(sources: Record[]) => any" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -714,7 +714,7 @@ "signature": [ "Record[]" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx index 1722696878b63..6381a96751ddd 100644 --- a/api_docs/investigate.mdx +++ b/api_docs/investigate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigate title: "investigate" image: https://source.unsplash.com/400x175/?github description: API docs for the investigate plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] --- import investigateObj from './investigate.devdocs.json'; diff --git a/api_docs/investigate_app.devdocs.json b/api_docs/investigate_app.devdocs.json index c33e115dd7cc8..20716508f598a 100644 --- a/api_docs/investigate_app.devdocs.json +++ b/api_docs/investigate_app.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "InvestigateAppPublicSetup", "description": [], - "path": "x-pack/plugins/observability_solution/investigate_app/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "InvestigateAppPublicStart", "description": [], - "path": "x-pack/plugins/observability_solution/investigate_app/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,23 @@ "label": "InvestigateAppServerRouteRepository", "description": [], "signature": [ - "{ \"GET /api/observability/investigations/_tags 2023-10-31\": ", + "{ \"POST /internal/observability/investigation/root_cause_analysis\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability/investigation/root_cause_analysis\", Zod.ZodObject<{ body: Zod.ZodObject<{ investigationId: Zod.ZodString; rangeFrom: Zod.ZodString; rangeTo: Zod.ZodString; serviceName: Zod.ZodString; context: Zod.ZodString; connectorId: Zod.ZodString; completeInBackground: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { context: string; connectorId: string; serviceName: string; rangeFrom: string; rangeTo: string; investigationId: string; completeInBackground?: boolean | undefined; }, { context: string; connectorId: string; serviceName: string; rangeFrom: string; rangeTo: string; investigationId: string; completeInBackground?: boolean | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { body: { context: string; connectorId: string; serviceName: string; rangeFrom: string; rangeTo: string; investigationId: string; completeInBackground?: boolean | undefined; }; }, { body: { context: string; connectorId: string; serviceName: string; rangeFrom: string; rangeTo: string; investigationId: string; completeInBackground?: boolean | undefined; }; }>, ", + "InvestigateAppRouteHandlerResources", + ", ", + "Observable", + "<{ event: ", + "RootCauseAnalysisEvent", + "; } & { type: \"event\"; }>, ", + "InvestigateAppRouteCreateOptions", + ">; \"GET /api/observability/investigations/_tags 2023-10-31\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -94,9 +110,9 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"GET /api/observability/events 2023-10-31\", Zod.ZodObject<{ query: Zod.ZodOptional; rangeTo: Zod.ZodOptional; filter: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; }, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined; }, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined; }>, ", + "<\"GET /api/observability/events 2023-10-31\", Zod.ZodObject<{ query: Zod.ZodOptional; rangeTo: Zod.ZodOptional; filter: Zod.ZodOptional; eventTypes: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; }, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; } | undefined; }, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: string | undefined; } | undefined; }>, ", "InvestigateAppRouteHandlerResources", - ", ({ id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; } & ({ eventType: \"annotation\"; annotationType?: string | undefined; } | { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }))[], ", + ", ({ id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; } | { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; })[], ", "InvestigateAppRouteCreateOptions", ">; \"GET /api/observability/investigations/{investigationId}/items 2023-10-31\": ", { @@ -214,9 +230,9 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"PUT /api/observability/investigations/{investigationId} 2023-10-31\", Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodOptional; status: Zod.ZodOptional, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>>; params: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>>; tags: Zod.ZodOptional>; externalIncidentUrl: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }; }, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }; }>, ", + "<\"PUT /api/observability/investigations/{investigationId} 2023-10-31\", Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodOptional; status: Zod.ZodOptional, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>>; params: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>>; tags: Zod.ZodOptional>; externalIncidentUrl: Zod.ZodOptional>; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }; }, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }; }>, ", "InvestigateAppRouteHandlerResources", - ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, ", + ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, ", "InvestigateAppRouteCreateOptions", ">; \"GET /api/observability/investigations/{investigationId} 2023-10-31\": ", { @@ -228,7 +244,7 @@ }, "<\"GET /api/observability/investigations/{investigationId} 2023-10-31\", Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>, ", "InvestigateAppRouteHandlerResources", - ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, ", + ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, ", "InvestigateAppRouteCreateOptions", ">; \"GET /api/observability/investigations 2023-10-31\": ", { @@ -240,7 +256,7 @@ }, "<\"GET /api/observability/investigations 2023-10-31\", Zod.ZodObject<{ query: Zod.ZodOptional; search: Zod.ZodOptional; filter: Zod.ZodOptional; page: Zod.ZodOptional; perPage: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; }, { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined; }, { query?: { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined; }>, ", "InvestigateAppRouteHandlerResources", - ", { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }[]; perPage: number; total: number; }, ", + ", { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }[]; perPage: number; total: number; }, ", "InvestigateAppRouteCreateOptions", ">; \"POST /api/observability/investigations 2023-10-31\": ", { @@ -252,11 +268,11 @@ }, "<\"POST /api/observability/investigations 2023-10-31\", Zod.ZodObject<{ body: Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; tags: Zod.ZodArray; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }>; }, \"strip\", Zod.ZodTypeAny, { body: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }; }, { body: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }; }>, ", "InvestigateAppRouteHandlerResources", - ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, ", + ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, ", "InvestigateAppRouteCreateOptions", ">; }" ], - "path": "x-pack/plugins/observability_solution/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -270,7 +286,7 @@ "tags": [], "label": "InvestigateAppServerSetup", "description": [], - "path": "x-pack/plugins/observability_solution/investigate_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -284,7 +300,7 @@ "tags": [], "label": "InvestigateAppServerStart", "description": [], - "path": "x-pack/plugins/observability_solution/investigate_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/investigate_app.mdx b/api_docs/investigate_app.mdx index 1a4ba180f6235..77b791ad995e0 100644 --- a/api_docs/investigate_app.mdx +++ b/api_docs/investigate_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigateApp title: "investigateApp" image: https://source.unsplash.com/400x175/?github description: API docs for the investigateApp plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigateApp'] --- import investigateAppObj from './investigate_app.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 09a37e7f227dc..f2e76324f1748 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant.devdocs.json b/api_docs/kbn_ai_assistant.devdocs.json index 962d4a3f0e304..7829e5cee9097 100644 --- a/api_docs/kbn_ai_assistant.devdocs.json +++ b/api_docs/kbn_ai_assistant.devdocs.json @@ -1102,7 +1102,7 @@ "State<{ errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }> & { refresh: () => void; }" diff --git a/api_docs/kbn_ai_assistant.mdx b/api_docs/kbn_ai_assistant.mdx index f4e7011843e6d..947c8d26141f8 100644 --- a/api_docs/kbn_ai_assistant.mdx +++ b/api_docs/kbn_ai_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant title: "@kbn/ai-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant'] --- import kbnAiAssistantObj from './kbn_ai_assistant.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_common.devdocs.json b/api_docs/kbn_ai_assistant_common.devdocs.json index f0e6b1400242e..bcfb26faf0568 100644 --- a/api_docs/kbn_ai_assistant_common.devdocs.json +++ b/api_docs/kbn_ai_assistant_common.devdocs.json @@ -37,7 +37,7 @@ }, "[] | undefined) => (value: T) => boolean" ], - "path": "x-pack/packages/kbn-ai-assistant-common/src/utils/filter_scopes.ts", + "path": "x-pack/platform/packages/shared/ai-assistant/common/src/utils/filter_scopes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -58,7 +58,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/kbn-ai-assistant-common/src/utils/filter_scopes.ts", + "path": "x-pack/platform/packages/shared/ai-assistant/common/src/utils/filter_scopes.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -81,7 +81,7 @@ "signature": [ "\"search\" | \"observability\" | \"all\"" ], - "path": "x-pack/packages/kbn-ai-assistant-common/src/types/index.ts", + "path": "x-pack/platform/packages/shared/ai-assistant/common/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_ai_assistant_common.mdx b/api_docs/kbn_ai_assistant_common.mdx index ba42d7599a535..92174506c11c1 100644 --- a/api_docs/kbn_ai_assistant_common.mdx +++ b/api_docs/kbn_ai_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-common title: "@kbn/ai-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-common'] --- import kbnAiAssistantCommonObj from './kbn_ai_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_icon.devdocs.json b/api_docs/kbn_ai_assistant_icon.devdocs.json new file mode 100644 index 0000000000000..dfc8bb5465120 --- /dev/null +++ b/api_docs/kbn_ai_assistant_icon.devdocs.json @@ -0,0 +1,286 @@ +{ + "id": "@kbn/ai-assistant-icon", + "client": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantAvatar", + "type": "Function", + "tags": [], + "label": "AssistantAvatar", + "description": [ + "\nA `EuiAvatar` component customized for the AI Assistant." + ], + "signature": [ + "({ css, color, size, ...props }: ", + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantAvatarProps", + "text": "AssistantAvatarProps" + }, + ") => React.JSX.Element" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantAvatar.$1", + "type": "Object", + "tags": [], + "label": "{\n css,\n color = 'plain',\n size = 'm',\n ...props\n}", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantAvatarProps", + "text": "AssistantAvatarProps" + } + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeacon", + "type": "Function", + "tags": [], + "label": "AssistantBeacon", + "description": [ + "\nAn AI Assistant icon with a pulsing ring around it, used in \"hero\" areas promoting functionality or prompting interaction." + ], + "signature": [ + "({ backgroundColor, size }: ", + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantBeaconProps", + "text": "AssistantBeaconProps" + }, + ") => React.JSX.Element" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeacon.$1", + "type": "Object", + "tags": [], + "label": "{ backgroundColor, size = 'xxl' }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantBeaconProps", + "text": "AssistantBeaconProps" + } + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantIcon", + "type": "Function", + "tags": [], + "label": "AssistantIcon", + "description": [ + "\nDefault Elastic AI Assistant icon." + ], + "signature": [ + "({ size, ...rest }: ", + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantIconProps", + "text": "AssistantIconProps" + }, + ") => React.JSX.Element" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantIcon.$1", + "type": "Object", + "tags": [], + "label": "{ size = 'm', ...rest }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantIconProps", + "text": "AssistantIconProps" + } + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeaconProps", + "type": "Interface", + "tags": [], + "label": "AssistantBeaconProps", + "description": [ + "\nParameters for the styles for the AI Assistant beacon." + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeaconProps.backgroundColor", + "type": "CompoundType", + "tags": [], + "label": "backgroundColor", + "description": [ + "\nBackground color for the beacon." + ], + "signature": [ + "EuiThemeColorModeStandard", + " | keyof ", + "_EuiThemeBrandColors", + " | keyof ", + "_EuiThemeBrandTextColors", + " | keyof ", + "_EuiThemeShadeColors", + " | keyof ", + "_EuiThemeSpecialColors", + " | keyof ", + "_EuiThemeTextColors", + " | keyof ", + "_EuiThemeBackgroundColors", + " | keyof ", + "_EuiThemeTransparentBackgroundColors", + " | keyof ", + "_EuiThemeBorderColors", + " | keyof ", + "_EuiThemeConstantColors", + " | undefined" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeaconProps.size", + "type": "CompoundType", + "tags": [], + "label": "size", + "description": [ + "\nSize of the beacon." + ], + "signature": [ + "\"m\" | \"s\" | \"l\" | \"xl\" | \"xxl\" | undefined" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantAvatarProps", + "type": "Type", + "tags": [], + "label": "AssistantAvatarProps", + "description": [ + "\nAvatar component for the AI Assistant." + ], + "signature": [ + "{ id?: string | undefined; prefix?: string | undefined; type?: \"space\" | \"user\" | undefined; onError?: React.ReactEventHandler | undefined; defaultValue?: string | number | readonly string[] | undefined; name: string; security?: string | undefined; className?: string | undefined; \"aria-label\"?: string | undefined; 'data-test-subj'?: string | undefined; css?: ", + "Interpolation", + "<", + "Theme", + ">; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; autoFocus?: boolean | undefined; contentEditable?: Booleanish | \"inherit\" | \"plaintext-only\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; nonce?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; content?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; rel?: string | undefined; resource?: string | undefined; rev?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; color?: string | null | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"tel\" | \"url\" | \"email\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; \"aria-activedescendant\"?: string | undefined; \"aria-atomic\"?: Booleanish | undefined; \"aria-autocomplete\"?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; \"aria-braillelabel\"?: string | undefined; \"aria-brailleroledescription\"?: string | undefined; \"aria-busy\"?: Booleanish | undefined; \"aria-checked\"?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; \"aria-colcount\"?: number | undefined; \"aria-colindex\"?: number | undefined; \"aria-colindextext\"?: string | undefined; \"aria-colspan\"?: number | undefined; \"aria-controls\"?: string | undefined; \"aria-current\"?: boolean | \"page\" | \"date\" | \"location\" | \"true\" | \"false\" | \"time\" | \"step\" | undefined; \"aria-describedby\"?: string | undefined; \"aria-description\"?: string | undefined; \"aria-details\"?: string | undefined; \"aria-disabled\"?: Booleanish | undefined; \"aria-dropeffect\"?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; \"aria-errormessage\"?: string | undefined; \"aria-expanded\"?: Booleanish | undefined; \"aria-flowto\"?: string | undefined; \"aria-grabbed\"?: Booleanish | undefined; \"aria-haspopup\"?: boolean | \"grid\" | \"true\" | \"false\" | \"dialog\" | \"menu\" | \"listbox\" | \"tree\" | undefined; \"aria-hidden\"?: Booleanish | undefined; \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; \"aria-keyshortcuts\"?: string | undefined; \"aria-labelledby\"?: string | undefined; \"aria-level\"?: number | undefined; \"aria-live\"?: \"off\" | \"assertive\" | \"polite\" | undefined; \"aria-modal\"?: Booleanish | undefined; \"aria-multiline\"?: Booleanish | undefined; \"aria-multiselectable\"?: Booleanish | undefined; \"aria-orientation\"?: \"horizontal\" | \"vertical\" | undefined; \"aria-owns\"?: string | undefined; \"aria-placeholder\"?: string | undefined; \"aria-posinset\"?: number | undefined; \"aria-pressed\"?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; \"aria-readonly\"?: Booleanish | undefined; \"aria-relevant\"?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; \"aria-required\"?: Booleanish | undefined; \"aria-roledescription\"?: string | undefined; \"aria-rowcount\"?: number | undefined; \"aria-rowindex\"?: number | undefined; \"aria-rowindextext\"?: string | undefined; \"aria-rowspan\"?: number | undefined; \"aria-selected\"?: Booleanish | undefined; \"aria-setsize\"?: number | undefined; \"aria-sort\"?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; \"aria-valuemax\"?: number | undefined; \"aria-valuemin\"?: number | undefined; \"aria-valuenow\"?: number | undefined; \"aria-valuetext\"?: string | undefined; children?: React.ReactNode; dangerouslySetInnerHTML?: { __html: string | TrustedHTML; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChange?: React.FormEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onResize?: React.ReactEventHandler | undefined; onResizeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; size?: \"m\" | \"s\" | \"l\" | \"xl\" | undefined; iconColor?: string | null | undefined; isDisabled?: boolean | undefined; iconSize?: \"m\" | \"s\" | \"l\" | \"original\" | \"xl\" | \"xxl\" | undefined; casing?: \"none\" | \"lowercase\" | \"capitalize\" | \"uppercase\" | undefined; }" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantIconProps", + "type": "Type", + "tags": [], + "label": "AssistantIconProps", + "description": [ + "\nProps for the AI Assistant icon." + ], + "signature": [ + "{ string?: string | number | undefined; id?: string | undefined; onError?: React.ReactEventHandler | undefined; min?: string | number | undefined; end?: string | number | undefined; filter?: string | undefined; max?: string | number | undefined; in?: string | undefined; mode?: string | number | undefined; order?: string | number | undefined; version?: string | undefined; format?: string | number | undefined; fill?: string | undefined; values?: string | undefined; name?: string | undefined; transform?: string | undefined; className?: string | undefined; \"aria-label\"?: string | undefined; 'data-test-subj'?: string | undefined; css?: ", + "Interpolation", + "<", + "Theme", + ">; suppressHydrationWarning?: boolean | undefined; lang?: string | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; role?: React.AriaRole | undefined; color?: string | undefined; \"aria-activedescendant\"?: string | undefined; \"aria-atomic\"?: Booleanish | undefined; \"aria-autocomplete\"?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; \"aria-braillelabel\"?: string | undefined; \"aria-brailleroledescription\"?: string | undefined; \"aria-busy\"?: Booleanish | undefined; \"aria-checked\"?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; \"aria-colcount\"?: number | undefined; \"aria-colindex\"?: number | undefined; \"aria-colindextext\"?: string | undefined; \"aria-colspan\"?: number | undefined; \"aria-controls\"?: string | undefined; \"aria-current\"?: boolean | \"page\" | \"date\" | \"location\" | \"true\" | \"false\" | \"time\" | \"step\" | undefined; \"aria-describedby\"?: string | undefined; \"aria-description\"?: string | undefined; \"aria-details\"?: string | undefined; \"aria-disabled\"?: Booleanish | undefined; \"aria-dropeffect\"?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; \"aria-errormessage\"?: string | undefined; \"aria-expanded\"?: Booleanish | undefined; \"aria-flowto\"?: string | undefined; \"aria-grabbed\"?: Booleanish | undefined; \"aria-haspopup\"?: boolean | \"grid\" | \"true\" | \"false\" | \"dialog\" | \"menu\" | \"listbox\" | \"tree\" | undefined; \"aria-hidden\"?: Booleanish | undefined; \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; \"aria-keyshortcuts\"?: string | undefined; \"aria-labelledby\"?: string | undefined; \"aria-level\"?: number | undefined; \"aria-live\"?: \"off\" | \"assertive\" | \"polite\" | undefined; \"aria-modal\"?: Booleanish | undefined; \"aria-multiline\"?: Booleanish | undefined; \"aria-multiselectable\"?: Booleanish | undefined; \"aria-orientation\"?: \"horizontal\" | \"vertical\" | undefined; \"aria-owns\"?: string | undefined; \"aria-placeholder\"?: string | undefined; \"aria-posinset\"?: number | undefined; \"aria-pressed\"?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; \"aria-readonly\"?: Booleanish | undefined; \"aria-relevant\"?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; \"aria-required\"?: Booleanish | undefined; \"aria-roledescription\"?: string | undefined; \"aria-rowcount\"?: number | undefined; \"aria-rowindex\"?: number | undefined; \"aria-rowindextext\"?: string | undefined; \"aria-rowspan\"?: number | undefined; \"aria-selected\"?: Booleanish | undefined; \"aria-setsize\"?: number | undefined; \"aria-sort\"?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; \"aria-valuemax\"?: number | undefined; \"aria-valuemin\"?: number | undefined; \"aria-valuenow\"?: number | undefined; \"aria-valuetext\"?: string | undefined; children?: React.ReactNode; dangerouslySetInnerHTML?: { __html: string | TrustedHTML; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChange?: React.FormEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onResize?: React.ReactEventHandler | undefined; onResizeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; size?: \"m\" | \"s\" | \"l\" | \"original\" | \"xl\" | \"xxl\" | undefined; path?: string | undefined; from?: string | number | undefined; to?: string | number | undefined; clipPath?: string | undefined; mask?: string | undefined; offset?: string | number | undefined; href?: string | undefined; media?: string | undefined; target?: string | undefined; direction?: string | number | undefined; width?: string | number | undefined; textDecoration?: string | number | undefined; operator?: string | number | undefined; result?: string | undefined; origin?: string | number | undefined; method?: string | undefined; by?: string | number | undefined; scale?: string | number | undefined; y?: string | number | undefined; d?: string | undefined; fontSize?: string | number | undefined; fontFamily?: string | undefined; fontStyle?: string | number | undefined; stroke?: string | undefined; strokeWidth?: string | number | undefined; x?: string | number | undefined; stdDeviation?: string | number | undefined; display?: string | number | undefined; cursor?: string | number | undefined; height?: string | number | undefined; overflow?: string | number | undefined; preserveAspectRatio?: string | undefined; vectorEffect?: string | number | undefined; strokeMiterlimit?: string | number | undefined; textAnchor?: string | undefined; dominantBaseline?: string | number | undefined; dx?: string | number | undefined; dy?: string | number | undefined; r?: string | number | undefined; cx?: string | number | undefined; cy?: string | number | undefined; strokeLinecap?: \"square\" | \"inherit\" | \"butt\" | \"round\" | undefined; points?: string | undefined; strokeLinejoin?: \"inherit\" | \"round\" | \"miter\" | \"bevel\" | undefined; opacity?: string | number | undefined; crossOrigin?: CrossOrigin; accentHeight?: string | number | undefined; accumulate?: \"sum\" | \"none\" | undefined; additive?: \"sum\" | \"replace\" | undefined; alignmentBaseline?: \"inherit\" | \"auto\" | \"middle\" | \"alphabetic\" | \"hanging\" | \"ideographic\" | \"mathematical\" | \"baseline\" | \"before-edge\" | \"text-before-edge\" | \"central\" | \"after-edge\" | \"text-after-edge\" | undefined; allowReorder?: \"yes\" | \"no\" | undefined; alphabetic?: string | number | undefined; amplitude?: string | number | undefined; arabicForm?: \"initial\" | \"medial\" | \"terminal\" | \"isolated\" | undefined; ascent?: string | number | undefined; attributeName?: string | undefined; attributeType?: string | undefined; autoReverse?: Booleanish | undefined; azimuth?: string | number | undefined; baseFrequency?: string | number | undefined; baselineShift?: string | number | undefined; baseProfile?: string | number | undefined; bbox?: string | number | undefined; begin?: string | number | undefined; bias?: string | number | undefined; calcMode?: string | number | undefined; capHeight?: string | number | undefined; clip?: string | number | undefined; clipPathUnits?: string | number | undefined; clipRule?: string | number | undefined; colorInterpolation?: string | number | undefined; colorInterpolationFilters?: \"inherit\" | \"auto\" | \"sRGB\" | \"linearRGB\" | undefined; colorProfile?: string | number | undefined; colorRendering?: string | number | undefined; contentScriptType?: string | number | undefined; contentStyleType?: string | number | undefined; decelerate?: string | number | undefined; descent?: string | number | undefined; diffuseConstant?: string | number | undefined; divisor?: string | number | undefined; dur?: string | number | undefined; edgeMode?: string | number | undefined; elevation?: string | number | undefined; enableBackground?: string | number | undefined; exponent?: string | number | undefined; externalResourcesRequired?: Booleanish | undefined; fillOpacity?: string | number | undefined; fillRule?: \"inherit\" | \"nonzero\" | \"evenodd\" | undefined; filterRes?: string | number | undefined; filterUnits?: string | number | undefined; floodColor?: string | number | undefined; floodOpacity?: string | number | undefined; focusable?: Booleanish | \"auto\" | undefined; fontSizeAdjust?: string | number | undefined; fontStretch?: string | number | undefined; fontVariant?: string | number | undefined; fontWeight?: string | number | undefined; fr?: string | number | undefined; fx?: string | number | undefined; fy?: string | number | undefined; g1?: string | number | undefined; g2?: string | number | undefined; glyphName?: string | number | undefined; glyphOrientationHorizontal?: string | number | undefined; glyphOrientationVertical?: string | number | undefined; glyphRef?: string | number | undefined; gradientTransform?: string | undefined; gradientUnits?: string | undefined; hanging?: string | number | undefined; horizAdvX?: string | number | undefined; horizOriginX?: string | number | undefined; ideographic?: string | number | undefined; imageRendering?: string | number | undefined; in2?: string | number | undefined; intercept?: string | number | undefined; k1?: string | number | undefined; k2?: string | number | undefined; k3?: string | number | undefined; k4?: string | number | undefined; k?: string | number | undefined; kernelMatrix?: string | number | undefined; kernelUnitLength?: string | number | undefined; kerning?: string | number | undefined; keyPoints?: string | number | undefined; keySplines?: string | number | undefined; keyTimes?: string | number | undefined; lengthAdjust?: string | number | undefined; letterSpacing?: string | number | undefined; lightingColor?: string | number | undefined; limitingConeAngle?: string | number | undefined; local?: string | number | undefined; markerEnd?: string | undefined; markerHeight?: string | number | undefined; markerMid?: string | undefined; markerStart?: string | undefined; markerUnits?: string | number | undefined; markerWidth?: string | number | undefined; maskContentUnits?: string | number | undefined; maskUnits?: string | number | undefined; mathematical?: string | number | undefined; numOctaves?: string | number | undefined; orient?: string | number | undefined; orientation?: string | number | undefined; overlinePosition?: string | number | undefined; overlineThickness?: string | number | undefined; paintOrder?: string | number | undefined; panose1?: string | number | undefined; pathLength?: string | number | undefined; patternContentUnits?: string | undefined; patternTransform?: string | number | undefined; patternUnits?: string | undefined; pointerEvents?: string | number | undefined; pointsAtX?: string | number | undefined; pointsAtY?: string | number | undefined; pointsAtZ?: string | number | undefined; preserveAlpha?: Booleanish | undefined; primitiveUnits?: string | number | undefined; radius?: string | number | undefined; refX?: string | number | undefined; refY?: string | number | undefined; renderingIntent?: string | number | undefined; repeatCount?: string | number | undefined; repeatDur?: string | number | undefined; requiredExtensions?: string | number | undefined; requiredFeatures?: string | number | undefined; restart?: string | number | undefined; rotate?: string | number | undefined; rx?: string | number | undefined; ry?: string | number | undefined; seed?: string | number | undefined; shapeRendering?: string | number | undefined; slope?: string | number | undefined; spacing?: string | number | undefined; specularConstant?: string | number | undefined; specularExponent?: string | number | undefined; speed?: string | number | undefined; spreadMethod?: string | undefined; startOffset?: string | number | undefined; stemh?: string | number | undefined; stemv?: string | number | undefined; stitchTiles?: string | number | undefined; stopColor?: string | undefined; stopOpacity?: string | number | undefined; strikethroughPosition?: string | number | undefined; strikethroughThickness?: string | number | undefined; strokeDasharray?: string | number | undefined; strokeDashoffset?: string | number | undefined; strokeOpacity?: string | number | undefined; surfaceScale?: string | number | undefined; systemLanguage?: string | number | undefined; tableValues?: string | number | undefined; targetX?: string | number | undefined; targetY?: string | number | undefined; textLength?: string | number | undefined; textRendering?: string | number | undefined; u1?: string | number | undefined; u2?: string | number | undefined; underlinePosition?: string | number | undefined; underlineThickness?: string | number | undefined; unicode?: string | number | undefined; unicodeBidi?: string | number | undefined; unicodeRange?: string | number | undefined; unitsPerEm?: string | number | undefined; vAlphabetic?: string | number | undefined; vertAdvY?: string | number | undefined; vertOriginX?: string | number | undefined; vertOriginY?: string | number | undefined; vHanging?: string | number | undefined; vIdeographic?: string | number | undefined; viewBox?: string | undefined; viewTarget?: string | number | undefined; visibility?: string | number | undefined; vMathematical?: string | number | undefined; widths?: string | number | undefined; wordSpacing?: string | number | undefined; writingMode?: string | number | undefined; x1?: string | number | undefined; x2?: string | number | undefined; xChannelSelector?: string | undefined; xHeight?: string | number | undefined; xlinkActuate?: string | undefined; xlinkArcrole?: string | undefined; xlinkHref?: string | undefined; xlinkRole?: string | undefined; xlinkShow?: string | undefined; xlinkTitle?: string | undefined; xlinkType?: string | undefined; xmlBase?: string | undefined; xmlLang?: string | undefined; xmlns?: string | undefined; xmlnsXlink?: string | undefined; xmlSpace?: string | undefined; y1?: string | number | undefined; y2?: string | number | undefined; yChannelSelector?: string | undefined; z?: string | number | undefined; zoomAndPan?: string | undefined; titleId?: string | undefined; onIconLoad?: (() => void) | undefined; }" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_ai_assistant_icon.mdx b/api_docs/kbn_ai_assistant_icon.mdx new file mode 100644 index 0000000000000..e49d5b0914ce1 --- /dev/null +++ b/api_docs/kbn_ai_assistant_icon.mdx @@ -0,0 +1,36 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnAiAssistantIconPluginApi +slug: /kibana-dev-docs/api/kbn-ai-assistant-icon +title: "@kbn/ai-assistant-icon" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/ai-assistant-icon plugin +date: 2024-12-17 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-icon'] +--- +import kbnAiAssistantIconObj from './kbn_ai_assistant_icon.devdocs.json'; + + + +Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 11 | 0 | 3 | 0 | + +## Client + +### Functions + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index e4559025356e7..61975f9205ba6 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index f3a4465f2a03c..5913050965be2 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 7a17dac1060bc..dd7907fced0ba 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 0f3fbae34a79b..e529ecebd2980 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index a186f4a576fae..f6a43ae34b45f 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index cb3b8816f8a49..d7eb6c4907913 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 92ecf2e3507c0..6dc693f6a2398 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 84733e8b9c25f..d7ea7e08cb959 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_grouping.mdx b/api_docs/kbn_alerts_grouping.mdx index c97880560776c..bf72bd4003879 100644 --- a/api_docs/kbn_alerts_grouping.mdx +++ b/api_docs/kbn_alerts_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-grouping title: "@kbn/alerts-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-grouping plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-grouping'] --- import kbnAlertsGroupingObj from './kbn_alerts_grouping.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.devdocs.json b/api_docs/kbn_alerts_ui_shared.devdocs.json index 50b0cf5a6edd9..7a503c08980f5 100644 --- a/api_docs/kbn_alerts_ui_shared.devdocs.json +++ b/api_docs/kbn_alerts_ui_shared.devdocs.json @@ -5537,7 +5537,13 @@ "text": "HasSaveNotification" }, " & ", - "PublishesReload", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + }, "> & { allowExpensiveQueries$: ", { "pluginId": "@kbn/presentation-publishing", diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 736438c8c985b..2f2d24eae1f7f 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index f303e5da39e0a..0aa681fee29b7 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index c60e928a8b72a..f7813f9508cdf 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 5263e6c4b593c..a42fd8b31a3da 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index 30dcd84e6b1be..84ffd6ab7078a 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.devdocs.json b/api_docs/kbn_apm_synthtrace.devdocs.json index de2e9080a6e6c..02cea754e3cb7 100644 --- a/api_docs/kbn_apm_synthtrace.devdocs.json +++ b/api_docs/kbn_apm_synthtrace.devdocs.json @@ -650,6 +650,53 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.InfraSynthtraceEsClient.getDefaultPipeline", + "type": "Function", + "tags": [], + "label": "getDefaultPipeline", + "description": [], + "signature": [ + "({ includeSerialization, }?: { includeSerialization?: boolean | undefined; }) => (base: ", + "Readable", + ") => ", + "Transform" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.InfraSynthtraceEsClient.getDefaultPipeline.$1", + "type": "Object", + "tags": [], + "label": "{\n includeSerialization,\n }", + "description": [], + "path": "packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.InfraSynthtraceEsClient.getDefaultPipeline.$1.includeSerialization", + "type": "CompoundType", + "tags": [], + "label": "includeSerialization", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 8459cbb3a487d..62ebc243212c8 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 87 | 0 | 87 | 11 | +| 90 | 0 | 90 | 11 | ## Server diff --git a/api_docs/kbn_apm_synthtrace_client.devdocs.json b/api_docs/kbn_apm_synthtrace_client.devdocs.json index 0c4dcd3b9beb7..9b1507d45eaf4 100644 --- a/api_docs/kbn_apm_synthtrace_client.devdocs.json +++ b/api_docs/kbn_apm_synthtrace_client.devdocs.json @@ -3133,7 +3133,7 @@ "label": "LogDocument", "description": [], "signature": [ - "{ '@timestamp'?: number | undefined; } & Partial<{ _index?: string | undefined; 'input.type': string; 'log.file.path'?: string | undefined; 'service.name'?: string | undefined; 'service.environment'?: string | undefined; 'data_stream.namespace': string; 'data_stream.type': string; 'data_stream.dataset': string; message?: string | undefined; 'error.message'?: string | undefined; 'event.original'?: string | undefined; 'event.dataset': string; 'log.level'?: string | undefined; 'host.name'?: string | undefined; 'container.id'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'kubernetes.pod.uid'?: string | undefined; 'aws.s3.bucket.name'?: string | undefined; 'aws.kinesis.name'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'container.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.exception.stacktrace'?: string | undefined; 'error.log.stacktrace'?: string | undefined; 'log.custom': Record; 'host.geo.location': number[]; 'host.ip': string; 'network.bytes': number; 'tls.established': boolean; 'event.duration': number; 'event.start': Date; 'event.end': Date; labels?: Record | undefined; test_field: string | string[]; date: Date; severity: string; msg: string; svc: string; hostname: string; 'http.status_code'?: number | undefined; 'http.request.method'?: string | undefined; 'url.path'?: string | undefined; 'process.name'?: string | undefined; 'kubernetes.namespace'?: string | undefined; 'kubernetes.pod.name'?: string | undefined; 'kubernetes.container.name'?: string | undefined; 'orchestrator.resource.name'?: string | undefined; thisisaverylongfieldnamethatevendoesnotcontainanyspaceswhyitcouldpotentiallybreakouruiinseveralplaces: string; }>" + "{ '@timestamp'?: number | undefined; } & Partial<{ _index?: string | undefined; 'input.type': string; 'log.file.path'?: string | undefined; 'service.name'?: string | undefined; 'service.environment'?: string | undefined; 'data_stream.namespace': string; 'data_stream.type': string; 'data_stream.dataset': string; message?: string | undefined; 'error.message'?: string | undefined; 'event.original'?: string | undefined; 'event.dataset': string; 'log.level'?: string | undefined; 'host.name'?: string | undefined; 'container.id'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'kubernetes.pod.uid'?: string | undefined; 'aws.s3.bucket.name'?: string | undefined; 'aws.kinesis.name'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'container.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.exception.stacktrace'?: string | undefined; 'error.log.stacktrace'?: string | undefined; 'log.custom': Record; 'host.geo.location': number[]; 'host.ip': string; 'network.bytes': number; 'tls.established': boolean; 'event.duration': number; 'event.start': Date; 'event.end': Date; labels?: Record | undefined; test_field: string | string[]; date: Date; severity: string; msg: string; svc: string; hostname: string; 'http.status_code'?: number | undefined; 'http.request.method'?: string | undefined; 'url.path'?: string | undefined; 'process.name'?: string | undefined; 'kubernetes.namespace'?: string | undefined; 'kubernetes.pod.name'?: string | undefined; 'kubernetes.container.name'?: string | undefined; 'orchestrator.resource.name'?: string | undefined; tags?: string | string[] | undefined; thisisaverylongfieldnamethatevendoesnotcontainanyspaceswhyitcouldpotentiallybreakouruiinseveralplaces: string; }>" ], "path": "packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts", "deprecated": false, diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index f8ea0e05eec1b..a3012b8a6752c 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_types.mdx b/api_docs/kbn_apm_types.mdx index 361888d87985c..d3f089cf38b41 100644 --- a/api_docs/kbn_apm_types.mdx +++ b/api_docs/kbn_apm_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-types title: "@kbn/apm-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-types'] --- import kbnApmTypesObj from './kbn_apm_types.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index c24f24b655be2..d8be060d57d5d 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_avc_banner.devdocs.json b/api_docs/kbn_avc_banner.devdocs.json index 4e98d1ddaa1b1..757b32f34d292 100644 --- a/api_docs/kbn_avc_banner.devdocs.json +++ b/api_docs/kbn_avc_banner.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "({ onDismiss }: { onDismiss: () => void; }) => React.JSX.Element" ], - "path": "packages/kbn-avc-banner/src/index.tsx", + "path": "src/platform/packages/shared/kbn-avc-banner/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "signature": [ "{ onDismiss: () => void; }" ], - "path": "packages/kbn-avc-banner/src/index.tsx", + "path": "src/platform/packages/shared/kbn-avc-banner/src/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -46,7 +46,7 @@ "signature": [ "() => boolean" ], - "path": "packages/kbn-avc-banner/src/index.tsx", + "path": "src/platform/packages/shared/kbn-avc-banner/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/kbn_avc_banner.mdx b/api_docs/kbn_avc_banner.mdx index 3a4e80771680f..cc1a609a2d76d 100644 --- a/api_docs/kbn_avc_banner.mdx +++ b/api_docs/kbn_avc_banner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-avc-banner title: "@kbn/avc-banner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/avc-banner plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/avc-banner'] --- import kbnAvcBannerObj from './kbn_avc_banner.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index de53c7e0ab5ac..d2593e5b50277 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index bfb2cb98b9771..437e601f520d0 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 5d60df594b8f6..b2491fb330839 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index aaea3f4b78ac1..2bb4332e80074 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 9d3b9443409d6..34a92188ecbad 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cbor.mdx b/api_docs/kbn_cbor.mdx index 4cb2f4c237720..1df9937b6a831 100644 --- a/api_docs/kbn_cbor.mdx +++ b/api_docs/kbn_cbor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cbor title: "@kbn/cbor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cbor plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cbor'] --- import kbnCborObj from './kbn_cbor.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.devdocs.json b/api_docs/kbn_cell_actions.devdocs.json index e7ad74ad1b42d..1fa4a7142dbd4 100644 --- a/api_docs/kbn_cell_actions.devdocs.json +++ b/api_docs/kbn_cell_actions.devdocs.json @@ -37,7 +37,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-cell-actions/src/components/cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -57,7 +57,7 @@ "text": "CellActionsProps" } ], - "path": "packages/kbn-cell-actions/src/components/cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -84,7 +84,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-cell-actions/src/context/cell_actions_context.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -104,7 +104,7 @@ "text": "CellActionsProviderProps" } ], - "path": "packages/kbn-cell-actions/src/context/cell_actions_context.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -133,7 +133,7 @@ "EuiDataGridColumnCellAction", "[][]" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -153,7 +153,7 @@ "text": "UseDataGridColumnsCellActionsProps" } ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -189,7 +189,7 @@ }, ", \"isCompatible\">" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -213,7 +213,7 @@ }, ") => Promise" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -234,7 +234,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -272,7 +272,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -288,7 +288,7 @@ "signature": [ "Omit[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -304,7 +304,7 @@ "signature": [ "C[\"metadata\"] | undefined" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -336,7 +336,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -357,7 +357,7 @@ }, "[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -373,7 +373,7 @@ "signature": [ "React.MutableRefObject" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -389,7 +389,7 @@ "signature": [ "Metadata | undefined" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -413,7 +413,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -427,7 +427,7 @@ "signature": [ "any" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -457,7 +457,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -479,7 +479,7 @@ }, ">" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -497,7 +497,7 @@ "tags": [], "label": "CellActionsData", "description": [], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -546,7 +546,7 @@ "MappingTimeSeriesMetricType", " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; defaultFormatter?: string | undefined; }" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -570,7 +570,7 @@ }, " | null[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -584,7 +584,7 @@ "tags": [], "label": "PartitionedActions", "description": [], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -613,7 +613,7 @@ }, ">[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -642,7 +642,7 @@ }, ">[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -674,7 +674,7 @@ }, ", \"metadata\" | \"disabledActionTypes\">" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -690,7 +690,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false }, @@ -713,7 +713,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false }, @@ -736,7 +736,7 @@ "text": "CellActionFieldValue" } ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -750,7 +750,7 @@ "signature": [ "string" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -765,7 +765,7 @@ "signature": [ "number" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -787,7 +787,7 @@ "EuiDataGridRefProps", " | null>" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false } @@ -809,7 +809,7 @@ "signature": [ "Partial & { id: string; }" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -832,7 +832,7 @@ }, " | null[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -865,7 +865,7 @@ "CellActionsMode", "; showActionTooltips?: boolean | undefined; visibleCellActions?: number | undefined; disabledActionTypes?: string[] | undefined; metadata?: Metadata | undefined; className?: string | undefined; } & { children?: React.ReactNode; }" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -888,7 +888,7 @@ }, "[]>; } & { children?: React.ReactNode; }" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -905,7 +905,7 @@ "signature": [ "{ [P in Exclude]: C[P]; }" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -920,7 +920,7 @@ "signature": [ "string[] | boolean[] | number[]" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -967,7 +967,7 @@ }, ">[]>" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -997,7 +997,7 @@ }, ">" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1023,7 +1023,7 @@ " | ", "SerializableArray" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1040,7 +1040,7 @@ "EuiDataGridColumnCellAction", "[][]" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1055,7 +1055,7 @@ "signature": [ "P" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 7d00616784a6d..69c9257a9b71a 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index d9163287fa9c3..ea7a911e6a2f1 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 1731b12caba48..a3f4770a15f49 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 207061dbb6b12..4944d674a7b9d 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 05bf5103fe6d7..85c87cf30cafc 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 3cd2545713d53..fbd3668a91bd6 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index ca530b7a61383..41130c1827079 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture.devdocs.json b/api_docs/kbn_cloud_security_posture.devdocs.json index 62f5fce1db937..c0a6a4ef885f1 100644 --- a/api_docs/kbn_cloud_security_posture.devdocs.json +++ b/api_docs/kbn_cloud_security_posture.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "({ type }: Props) => React.JSX.Element" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -46,7 +46,7 @@ "signature": [ "({ score, version }: CVSScoreBadgeProps) => React.JSX.Element | null" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -60,7 +60,7 @@ "signature": [ "CVSScoreBadgeProps" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -79,7 +79,7 @@ "signature": [ "(search?: string | undefined) => Partial | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -93,7 +93,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -112,7 +112,7 @@ "signature": [ "(query: any) => string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -126,7 +126,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -145,7 +145,7 @@ "signature": [ "(score: number) => string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -159,7 +159,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -186,7 +186,7 @@ }, ") => string" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -206,7 +206,7 @@ "text": "VulnSeverity" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -233,7 +233,7 @@ }, ") => string" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -253,7 +253,7 @@ "text": "VulnSeverity" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -272,7 +272,7 @@ "signature": [ "(counts: VulnerabilityCounts, filterFunction?: ((filter: string) => void) | undefined, currentFilter?: string | undefined) => VulnerabilitiesDistributionBarProps[]" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -286,7 +286,7 @@ "signature": [ "VulnerabilityCounts" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -301,7 +301,7 @@ "signature": [ "((filter: string) => void) | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -316,7 +316,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -335,7 +335,7 @@ "signature": [ "(counts: VulnerabilityCounts) => boolean" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -349,7 +349,7 @@ "signature": [ "VulnerabilityCounts" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -368,7 +368,7 @@ "signature": [ "({ severity }: SeverityStatusBadgeProps) => React.JSX.Element | null" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -382,7 +382,7 @@ "signature": [ "SeverityStatusBadgeProps" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -409,7 +409,7 @@ }, ", error: unknown) => void" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -429,7 +429,7 @@ "text": "IToasts" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -444,7 +444,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -462,7 +462,7 @@ "tags": [], "label": "CspBaseEsQuery", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -478,7 +478,7 @@ "QueryDslQueryContainer", " | undefined)[] | undefined; }; } | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -492,7 +492,7 @@ "tags": [], "label": "CspClientPluginStartDeps", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -512,7 +512,7 @@ "text": "DataPublicPluginStart" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -532,7 +532,7 @@ "text": "DataViewsServicePublic" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -552,7 +552,7 @@ "text": "PluginStart" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -572,7 +572,7 @@ "text": "UnifiedSearchPublicPluginStart" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -660,7 +660,7 @@ }, "; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -690,7 +690,7 @@ }, "; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -710,7 +710,7 @@ "text": "IToasts" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -733,7 +733,7 @@ "ActiveCursor", "; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -753,7 +753,7 @@ "text": "DiscoverStart" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -773,7 +773,7 @@ "text": "FleetStart" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -793,7 +793,7 @@ "text": "LicensingPluginStart" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -833,7 +833,7 @@ }, ">): void; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -853,7 +853,7 @@ "text": "Storage" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -873,7 +873,7 @@ "text": "SpacesApi" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -893,7 +893,7 @@ "text": "CloudSetup" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -914,7 +914,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -928,7 +928,7 @@ "tags": [], "label": "FindingsAggs", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -945,7 +945,7 @@ "AggregationsStringRareTermsBucketKeys", ">" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -959,7 +959,7 @@ "tags": [], "label": "FindingsBaseEsQuery", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -981,7 +981,7 @@ }, "; } | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1012,7 +1012,7 @@ "text": "CspBaseEsQuery" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1026,7 +1026,7 @@ "signature": [ "string[][]" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1037,7 +1037,7 @@ "tags": [], "label": "enabled", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1048,7 +1048,7 @@ "tags": [], "label": "pageSize", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1062,7 +1062,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1082,7 +1082,7 @@ "signature": [ "\"host.name\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1106,7 +1106,7 @@ "SearchRequest", ">" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1146,7 +1146,7 @@ }, ">>" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1161,7 +1161,7 @@ "signature": [ "{ [x: string]: FilterValue; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1176,7 +1176,7 @@ "signature": [ "\"user.name\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1190,7 +1190,7 @@ "tags": [], "label": "findingsNavigation", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1201,7 +1201,7 @@ "tags": [], "label": "findings_default", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1212,7 +1212,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1223,7 +1223,7 @@ "tags": [], "label": "path", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1234,7 +1234,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1247,7 +1247,7 @@ "tags": [], "label": "findings_by_resource", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1258,7 +1258,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1269,7 +1269,7 @@ "tags": [], "label": "path", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1280,7 +1280,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1293,7 +1293,7 @@ "tags": [], "label": "resource_findings", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1304,7 +1304,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1315,7 +1315,7 @@ "tags": [], "label": "path", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1326,7 +1326,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1339,7 +1339,7 @@ "tags": [], "label": "vulnerabilities", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1350,7 +1350,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1361,7 +1361,7 @@ "tags": [], "label": "path", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1372,7 +1372,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1385,7 +1385,7 @@ "tags": [], "label": "vulnerabilities_by_resource", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1396,7 +1396,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1407,7 +1407,7 @@ "tags": [], "label": "path", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1418,7 +1418,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1431,7 +1431,7 @@ "tags": [], "label": "resource_vulnerabilities", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1442,7 +1442,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1453,7 +1453,7 @@ "tags": [], "label": "path", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1464,7 +1464,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1480,7 +1480,7 @@ "tags": [], "label": "NAV_ITEMS_NAMES", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1491,7 +1491,7 @@ "tags": [], "label": "DASHBOARD", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1502,7 +1502,7 @@ "tags": [], "label": "VULNERABILITY_DASHBOARD", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1513,7 +1513,7 @@ "tags": [], "label": "FINDINGS", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1524,7 +1524,7 @@ "tags": [], "label": "BENCHMARKS", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -1535,7 +1535,7 @@ "tags": [], "label": "RULES", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1549,7 +1549,7 @@ "tags": [], "label": "statusColors", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1560,7 +1560,7 @@ "tags": [], "label": "passed", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", "deprecated": false, "trackAdoption": false }, @@ -1571,7 +1571,7 @@ "tags": [], "label": "failed", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", "deprecated": false, "trackAdoption": false }, @@ -1582,7 +1582,7 @@ "tags": [], "label": "unknown", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_cloud_security_posture.mdx b/api_docs/kbn_cloud_security_posture.mdx index cf5bcab952a02..1393e03664337 100644 --- a/api_docs/kbn_cloud_security_posture.mdx +++ b/api_docs/kbn_cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture title: "@kbn/cloud-security-posture" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture'] --- import kbnCloudSecurityPostureObj from './kbn_cloud_security_posture.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_common.devdocs.json b/api_docs/kbn_cloud_security_posture_common.devdocs.json index 5e993b4e3c1f3..3fb9874365e62 100644 --- a/api_docs/kbn_cloud_security_posture_common.devdocs.json +++ b/api_docs/kbn_cloud_security_posture_common.devdocs.json @@ -25,7 +25,7 @@ "tags": [], "label": "UiMetricService", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/ui_metrics.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/ui_metrics.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -47,7 +47,7 @@ }, ") => void" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/ui_metrics.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/ui_metrics.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -67,7 +67,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/ui_metrics.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/ui_metrics.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -85,7 +85,7 @@ "signature": [ "(metricType: string, eventName: string) => void" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/ui_metrics.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/ui_metrics.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -99,7 +99,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/ui_metrics.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/ui_metrics.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -114,7 +114,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/ui_metrics.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/ui_metrics.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -137,7 +137,7 @@ "signature": [ "(field: string, queryValue?: string | undefined, status?: string | undefined, queryField?: string | undefined) => { bool: { filter: ({ bool: { should: { term: { [x: string]: string; }; }[]; minimum_should_match: number; }; } | undefined)[]; }; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -151,7 +151,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -166,7 +166,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -181,7 +181,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -196,7 +196,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -215,7 +215,7 @@ "signature": [ "(field: string, queryValue?: string | undefined, status?: string | undefined) => { bool: { filter: ({ bool: { should: { term: { [x: string]: string; }; }[]; minimum_should_match: number; }; } | undefined)[]; }; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -229,7 +229,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -244,7 +244,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -259,7 +259,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -280,7 +280,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -294,7 +294,7 @@ "signature": [ "Record>" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -313,7 +313,7 @@ "signature": [ "(field: string, queryValue?: string | undefined, status?: string | undefined) => { bool: { filter: ({ bool: { should: { term: { [x: string]: string; }; }[]; minimum_should_match: number; }; } | undefined)[]; }; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -327,7 +327,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -342,7 +342,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -357,7 +357,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -376,7 +376,7 @@ "signature": [ "(e: unknown, fallbackMessage?: string | undefined) => string" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -390,7 +390,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -405,7 +405,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -426,7 +426,7 @@ "signature": [ "(value: number) => string | number" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/get_abbreviated_number.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/get_abbreviated_number.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -440,7 +440,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/utils/get_abbreviated_number.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/get_abbreviated_number.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -458,7 +458,7 @@ "tags": [], "label": "BaseCspSetupBothPolicy", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -472,7 +472,7 @@ "signature": [ "\"indexed\" | \"unprivileged\" | \"indexing\" | \"index-timeout\" | \"not-deployed\" | \"not-installed\" | \"waiting_for_results\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -483,7 +483,7 @@ "tags": [], "label": "installedPackagePolicies", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -494,7 +494,7 @@ "tags": [], "label": "healthyAgents", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false } @@ -508,7 +508,7 @@ "tags": [], "label": "BaseCspSetupStatus", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -529,7 +529,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -540,7 +540,7 @@ "tags": [], "label": "latestPackageVersion", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -560,7 +560,7 @@ "text": "BaseCspSetupBothPolicy" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -580,7 +580,7 @@ "text": "BaseCspSetupBothPolicy" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -600,7 +600,7 @@ "text": "BaseCspSetupBothPolicy" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -611,7 +611,7 @@ "tags": [], "label": "isPluginInitialized", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -625,7 +625,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -639,7 +639,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -653,7 +653,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false } @@ -667,7 +667,7 @@ "tags": [], "label": "CspFinding", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -678,7 +678,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -692,7 +692,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -706,7 +706,7 @@ "signature": [ "CspFindingOrchestrator | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -720,7 +720,7 @@ "signature": [ "CspFindingCloud | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -740,7 +740,7 @@ "text": "CspFindingResult" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -754,7 +754,7 @@ "signature": [ "CspFindingResource" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -768,7 +768,7 @@ "signature": [ "{ readonly references?: string | undefined; readonly impact?: string | undefined; readonly reference?: string | undefined; readonly default_value?: string | undefined; readonly id: string; readonly version: string; readonly name: string; readonly tags: string[]; readonly description: string; readonly section: string; readonly audit: string; readonly benchmark: Readonly<{ posture_type?: \"kspm\" | \"cspm\" | undefined; rule_number?: string | undefined; } & { id: string; version: string; name: string; }>; readonly profile_applicability: string; readonly rationale: string; readonly rego_rule_id: string; readonly remediation: string; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -782,7 +782,7 @@ "signature": [ "CspFindingHost" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -796,7 +796,7 @@ "signature": [ "EcsEvent" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -810,7 +810,7 @@ "signature": [ "EcsDataStream" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -824,7 +824,7 @@ "signature": [ "EcsObserver" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -838,7 +838,7 @@ "signature": [ "CspFindingAgent" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -852,7 +852,7 @@ "signature": [ "{ version: string; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false } @@ -866,7 +866,7 @@ "tags": [], "label": "CspFindingResult", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -880,7 +880,7 @@ "signature": [ "\"failed\" | \"passed\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -894,7 +894,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false }, @@ -908,7 +908,7 @@ "signature": [ "{ [x: string]: unknown; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts", "deprecated": false, "trackAdoption": false } @@ -922,7 +922,7 @@ "tags": [], "label": "CspVulnerabilityFinding", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -933,7 +933,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -947,7 +947,7 @@ "signature": [ "{ id: string; name: string; } | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -961,7 +961,7 @@ "signature": [ "EcsEvent" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -981,7 +981,7 @@ "text": "Vulnerability" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -995,7 +995,7 @@ "signature": [ "{ version: string; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1009,7 +1009,7 @@ "signature": [ "{ os: { name: string; kernel: string; codename: string; type: string; platform: string; version: string; family: string; }; id: string; name: string; containerized: boolean; ip: string[]; mac: string[]; hostname: string; architecture: string; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1023,7 +1023,7 @@ "signature": [ "{ ephemeral_id: string; id: string; name: string; type: string; version: string; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1037,7 +1037,7 @@ "signature": [ "{ image?: { id: string; } | undefined; provider?: string | undefined; instance?: { id: string; } | undefined; machine?: { type: string; } | undefined; region: string; availability_zone?: string | undefined; service?: { name: string; } | undefined; account?: { id: string; } | undefined; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1051,7 +1051,7 @@ "signature": [ "{ version: string; commit_sha: string; commit_time: string; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1065,7 +1065,7 @@ "signature": [ "{ version?: string | undefined; name?: string | undefined; fixed_version?: string | undefined; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1079,7 +1079,7 @@ "signature": [ "EcsDataStream" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1093,7 +1093,7 @@ "signature": [ "EcsObserver" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false } @@ -1107,7 +1107,7 @@ "tags": [], "label": "IndexDetails", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1118,7 +1118,7 @@ "tags": [], "label": "index", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false }, @@ -1132,7 +1132,7 @@ "signature": [ "\"empty\" | \"not-empty\" | \"unprivileged\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false } @@ -1146,7 +1146,7 @@ "tags": [], "label": "Vulnerability", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1160,7 +1160,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1174,7 +1174,7 @@ "signature": [ "{ version?: string | undefined; base?: number | undefined; } | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1188,7 +1188,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1199,7 +1199,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1210,7 +1210,7 @@ "tags": [], "label": "title", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1221,7 +1221,7 @@ "tags": [], "label": "reference", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1242,7 +1242,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1262,7 +1262,7 @@ "VectorScoreBase", " | undefined; } | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1276,7 +1276,7 @@ "signature": [ "{ ID: string; Name: string; URL: string; } | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1287,7 +1287,7 @@ "tags": [], "label": "enumeration", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1298,7 +1298,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1309,7 +1309,7 @@ "tags": [], "label": "classification", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false }, @@ -1323,7 +1323,7 @@ "signature": [ "{ vendor: string; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts", "deprecated": false, "trackAdoption": false } @@ -1343,7 +1343,7 @@ "signature": [ "\"cis_k8s\" | \"cis_azure\" | \"cis_aws\" | \"cis_eks\" | \"cis_gcp\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/benchmark.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/benchmark.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1358,7 +1358,7 @@ "signature": [ "\"90d\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1373,7 +1373,7 @@ "signature": [ "\"logs-cloud_security_posture.findings_latest-default\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1388,7 +1388,7 @@ "signature": [ "\"logs-cloud_security_posture.vulnerabilities_latest-default\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1403,7 +1403,7 @@ "signature": [ "\"security_solution-*.misconfiguration_latest\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1418,7 +1418,7 @@ "signature": [ "\"security_solution-*.vulnerability_latest\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1433,7 +1433,7 @@ "signature": [ "\"security_solution_cdr_latest_misconfigurations\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1448,7 +1448,7 @@ "signature": [ "\"Latest Cloud Security Misconfigurations\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1460,7 +1460,7 @@ "tags": [], "label": "CDR_MISCONFIGURATIONS_INDEX_PATTERN", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1472,7 +1472,7 @@ "tags": [], "label": "CDR_VULNERABILITIES_INDEX_PATTERN", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1489,7 +1489,7 @@ "signature": [ "\"/cloud_security_posture\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1504,7 +1504,7 @@ "signature": [ "\"1\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1519,7 +1519,7 @@ "signature": [ "\"/internal/cloud_security_posture/rules/_get_states\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1534,7 +1534,7 @@ "signature": [ "\"cspm\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1555,7 +1555,7 @@ "text": "BaseCspSetupStatus" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1570,7 +1570,7 @@ "signature": [ "\"indexed\" | \"unprivileged\" | \"indexing\" | \"index-timeout\" | \"not-deployed\" | \"not-installed\" | \"waiting_for_results\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1585,7 +1585,7 @@ "signature": [ "\"empty\" | \"not-empty\" | \"unprivileged\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/status.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1600,7 +1600,7 @@ "signature": [ "\"kspm\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1615,7 +1615,7 @@ "signature": [ "\"26h\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1630,7 +1630,7 @@ "signature": [ "\"3d\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1645,7 +1645,7 @@ "signature": [ "500" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1660,7 +1660,7 @@ "signature": [ "\"security-solution-default\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1675,7 +1675,7 @@ "signature": [ "\"1\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1690,7 +1690,7 @@ "signature": [ "\"/internal/cloud_security_posture/status\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1705,7 +1705,7 @@ "signature": [ "\"MEDIUM\" | \"UNKNOWN\" | \"LOW\" | \"HIGH\" | \"CRITICAL\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/types/vulnerabilities.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/vulnerabilities.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1719,7 +1719,7 @@ "tags": [], "label": "MISCONFIGURATION_STATUS", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1730,7 +1730,7 @@ "tags": [], "label": "PASSED", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -1741,7 +1741,7 @@ "tags": [], "label": "FAILED", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false } @@ -1755,7 +1755,7 @@ "tags": [], "label": "VULNERABILITIES_SEVERITY", "description": [], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1769,7 +1769,7 @@ "signature": [ "\"LOW\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -1783,7 +1783,7 @@ "signature": [ "\"MEDIUM\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -1797,7 +1797,7 @@ "signature": [ "\"HIGH\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -1811,7 +1811,7 @@ "signature": [ "\"CRITICAL\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -1825,7 +1825,7 @@ "signature": [ "\"UNKNOWN\"" ], - "path": "x-pack/packages/kbn-cloud-security-posture/common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_cloud_security_posture_common.mdx b/api_docs/kbn_cloud_security_posture_common.mdx index 229bbd63114a0..a0af136379cc8 100644 --- a/api_docs/kbn_cloud_security_posture_common.mdx +++ b/api_docs/kbn_cloud_security_posture_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-common title: "@kbn/cloud-security-posture-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-common'] --- import kbnCloudSecurityPostureCommonObj from './kbn_cloud_security_posture_common.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_graph.devdocs.json b/api_docs/kbn_cloud_security_posture_graph.devdocs.json index eb1a40b17d3c6..8182f0647e762 100644 --- a/api_docs/kbn_cloud_security_posture_graph.devdocs.json +++ b/api_docs/kbn_cloud_security_posture_graph.devdocs.json @@ -25,7 +25,7 @@ }, ") => React.JSX.Element" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "text": "GraphProps" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -56,6 +56,54 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.GraphInvestigation", + "type": "Function", + "tags": [], + "label": "GraphInvestigation", + "description": [ + "\nGraph investigation view allows the user to expand nodes and view related entities." + ], + "signature": [ + "React.FunctionComponent" + ], + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.GraphInvestigation.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/ts5.0/index.d.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.GraphInvestigation.$2", + "type": "Any", + "tags": [], + "label": "context", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/@types/react/ts5.0/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/cloud-security-posture-graph", "id": "def-public.GraphPopover", @@ -68,7 +116,7 @@ "GraphPopoverProps", ") => React.JSX.Element | null" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -82,7 +130,7 @@ "signature": [ "GraphPopoverProps" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -91,6 +139,46 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.useFetchGraphData", + "type": "Function", + "tags": [], + "label": "useFetchGraphData", + "description": [ + "\nHook to fetch event's graph visualization data.\n" + ], + "signature": [ + "({ req, options, }: ", + "UseFetchGraphDataParams", + ") => ", + "UseFetchGraphDataResult" + ], + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.useFetchGraphData.$1", + "type": "Object", + "tags": [], + "label": "{\n req,\n options,\n}", + "description": [], + "signature": [ + "UseFetchGraphDataParams" + ], + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "The result of the hook." + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/cloud-security-posture-graph", "id": "def-public.useGraphPopover", @@ -102,7 +190,7 @@ "(id: string) => ", "GraphPopoverState" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -116,7 +204,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -144,7 +232,7 @@ }, " extends Record,Readonly<{} & { source: string; id: string; color: \"warning\" | \"primary\" | \"danger\"; target: string; }>" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -167,7 +255,7 @@ }, " extends Record,Readonly<{ label?: string | undefined; icon?: string | undefined; } & { id: string; shape: \"ellipse\" | \"rectangle\" | \"hexagon\" | \"pentagon\" | \"diamond\"; color: \"warning\" | \"primary\" | \"danger\"; }>,BaseNodeDataViewModel" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -182,7 +270,7 @@ "ExpandButtonClickCallback", " | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts", "deprecated": false, "trackAdoption": false }, @@ -197,7 +285,7 @@ "NodeClickCallback", " | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts", "deprecated": false, "trackAdoption": false } @@ -222,7 +310,7 @@ " extends ", "CommonProps" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -245,7 +333,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", "deprecated": false, "trackAdoption": false }, @@ -268,7 +356,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", "deprecated": false, "trackAdoption": false }, @@ -281,7 +369,7 @@ "description": [ "\nDetermines whether the graph is interactive (allows panning, zooming, etc.).\nWhen set to false, the graph is locked and user interactions are disabled, effectively putting it in view-only mode." ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", "deprecated": false, "trackAdoption": false }, @@ -297,7 +385,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx", "deprecated": false, "trackAdoption": false } @@ -321,7 +409,7 @@ }, " extends Record,Readonly<{ label?: string | undefined; icon?: string | undefined; } & { id: string; shape: \"group\"; }>,BaseNodeDataViewModel" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -344,7 +432,7 @@ }, " extends Record,Readonly<{ label?: string | undefined; icon?: string | undefined; parentId?: string | undefined; } & { id: string; shape: \"label\"; color: \"warning\" | \"primary\" | \"danger\"; }>,BaseNodeDataViewModel" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -359,7 +447,7 @@ "ExpandButtonClickCallback", " | undefined" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts", "deprecated": false, "trackAdoption": false } @@ -399,7 +487,7 @@ }, ", string>, \"type\" | \"zIndex\" | \"dragging\">> & { isConnectable: boolean; positionAbsoluteX: number; positionAbsoluteY: number; }" ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -436,7 +524,7 @@ "text": "LabelNodeViewModel" } ], - "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts", + "path": "x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_cloud_security_posture_graph.mdx b/api_docs/kbn_cloud_security_posture_graph.mdx index 84e189f3d758a..57f89be499849 100644 --- a/api_docs/kbn_cloud_security_posture_graph.mdx +++ b/api_docs/kbn_cloud_security_posture_graph.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-graph title: "@kbn/cloud-security-posture-graph" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-graph plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-graph'] --- import kbnCloudSecurityPostureGraphObj from './kbn_cloud_security_posture_graph.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 20 | 0 | 15 | 4 | +| 25 | 0 | 16 | 6 | ## Client diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 468b5f6efd416..51da7eab9a69b 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index 8d330b5352d7f..42c6830f091af 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.devdocs.json b/api_docs/kbn_code_owners.devdocs.json index 8a9168cad1d76..c017220858247 100644 --- a/api_docs/kbn_code_owners.devdocs.json +++ b/api_docs/kbn_code_owners.devdocs.json @@ -21,81 +21,93 @@ "functions": [ { "parentPluginId": "@kbn/code-owners", - "id": "def-common.getCodeOwnersForFile", + "id": "def-common.findCodeOwnersEntryForPath", "type": "Function", - "tags": [], - "label": "getCodeOwnersForFile", + "tags": [ + "throws" + ], + "label": "findCodeOwnersEntryForPath", "description": [ - "\nGet the GitHub CODEOWNERS for a file in the repository" + "\nGet a list of matching code owners for a given path\n\nTip:\n If you're making a lot of calls to this function, fetch the code owner paths once using\n `getCodeOwnersEntries` and pass it in the `getCodeOwnersEntries` parameter to speed up your queries..\n" ], "signature": [ - "(filePath: string, reversedCodeowners: ", + "(searchPath: string, codeOwnersEntries: ", { "pluginId": "@kbn/code-owners", "scope": "common", "docId": "kibKbnCodeOwnersPluginApi", - "section": "def-common.PathWithOwners", - "text": "PathWithOwners" + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" }, - "[] | undefined) => string | undefined" + "[] | undefined) => ", + { + "pluginId": "@kbn/code-owners", + "scope": "common", + "docId": "kibKbnCodeOwnersPluginApi", + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" + }, + " | undefined" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/code-owners", - "id": "def-common.getCodeOwnersForFile.$1", + "id": "def-common.findCodeOwnersEntryForPath.$1", "type": "string", "tags": [], - "label": "filePath", + "label": "searchPath", "description": [ - "the file to get code owners for" + "The path to find code owners for" ], "signature": [ "string" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "isRequired": true }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.getCodeOwnersForFile.$2", + "id": "def-common.findCodeOwnersEntryForPath.$2", "type": "Array", "tags": [], - "label": "reversedCodeowners", + "label": "codeOwnersEntries", "description": [ - "a cached reversed code owners list, use to speed up multiple requests" + "Pre-defined list of code owner paths to search in" ], "signature": [ { "pluginId": "@kbn/code-owners", "scope": "common", "docId": "kibKbnCodeOwnersPluginApi", - "section": "def-common.PathWithOwners", - "text": "PathWithOwners" + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" }, "[] | undefined" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "isRequired": false } ], - "returnComment": [], + "returnComment": [ + "Code owners entry if a match is found." + ], "initialIsOpen": false }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.getPathsWithOwnersReversed", + "id": "def-common.getCodeOwnersEntries", "type": "Function", "tags": [], - "label": "getPathsWithOwnersReversed", + "label": "getCodeOwnersEntries", "description": [ - "\nGet the .github/CODEOWNERS entries, prepared for path matching.\nThe last matching CODEOWNERS entry has highest precedence:\nhttps://help.github.com/articles/about-codeowners/\nso entries are returned in reversed order to later search for the first match." + "\nGet all code owner entries from the CODEOWNERS file\n\nEntries are ordered in reverse relative to how they're defined in the CODEOWNERS file\nas patterns defined lower in the CODEOWNERS file can override earlier entries." ], "signature": [ "() => ", @@ -103,12 +115,12 @@ "pluginId": "@kbn/code-owners", "scope": "common", "docId": "kibKbnCodeOwnersPluginApi", - "section": "def-common.PathWithOwners", - "text": "PathWithOwners" + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" }, "[]" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -117,69 +129,140 @@ }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.runGetOwnersForFileCli", + "id": "def-common.getOwningTeamsForPath", "type": "Function", - "tags": [], - "label": "runGetOwnersForFileCli", + "tags": [ + "throws" + ], + "label": "getOwningTeamsForPath", "description": [ - "\nRun the getCodeOwnersForFile() method above.\nReport back to the cli with either success and the owner(s), or a failure.\n\nThis function depends on a --file param being passed on the cli, like this:\n$ node scripts/get_owners_for_file.js --file SOME-FILE" + "\nGet a list of matching code owners for a given path\n\nTip:\n If you're making a lot of calls to this function, fetch the code owner paths once using\n `getCodeOwnersEntries` and pass it in the `getCodeOwnersEntries` parameter to speed up your queries.\n" ], "signature": [ - "() => Promise" + "(searchPath: string, codeOwnersEntries: ", + { + "pluginId": "@kbn/code-owners", + "scope": "common", + "docId": "kibKbnCodeOwnersPluginApi", + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" + }, + "[] | undefined) => string[]" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, - "children": [], - "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/code-owners", + "id": "def-common.getOwningTeamsForPath.$1", + "type": "string", + "tags": [], + "label": "searchPath", + "description": [ + "The path to find code owners for" + ], + "signature": [ + "string" + ], + "path": "packages/kbn-code-owners/src/code_owners.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/code-owners", + "id": "def-common.getOwningTeamsForPath.$2", + "type": "Array", + "tags": [], + "label": "codeOwnersEntries", + "description": [ + "Pre-defined list of code owner entries" + ], + "signature": [ + { + "pluginId": "@kbn/code-owners", + "scope": "common", + "docId": "kibKbnCodeOwnersPluginApi", + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" + }, + "[] | undefined" + ], + "path": "packages/kbn-code-owners/src/code_owners.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [ + "List of code owners for the given path. Empty list if no matching entry is found." + ], "initialIsOpen": false } ], "interfaces": [ { "parentPluginId": "@kbn/code-owners", - "id": "def-common.PathWithOwners", + "id": "def-common.CodeOwnersEntry", "type": "Interface", "tags": [], - "label": "PathWithOwners", + "label": "CodeOwnersEntry", "description": [], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/code-owners", - "id": "def-common.PathWithOwners.path", + "id": "def-common.CodeOwnersEntry.pattern", "type": "string", "tags": [], - "label": "path", + "label": "pattern", "description": [], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.PathWithOwners.teams", - "type": "string", + "id": "def-common.CodeOwnersEntry.matcher", + "type": "Object", + "tags": [], + "label": "matcher", + "description": [], + "signature": [ + "Ignore" + ], + "path": "packages/kbn-code-owners/src/code_owners.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/code-owners", + "id": "def-common.CodeOwnersEntry.teams", + "type": "Array", "tags": [], "label": "teams", "description": [], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "signature": [ + "string[]" + ], + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.PathWithOwners.ignorePattern", - "type": "Object", + "id": "def-common.CodeOwnersEntry.comment", + "type": "string", "tags": [], - "label": "ignorePattern", + "label": "comment", "description": [], "signature": [ - "Ignore" + "string | undefined" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 86b94b9825f56..92c3541ef322e 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) for | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 9 | 0 | 4 | 0 | +| 12 | 0 | 5 | 0 | ## Common diff --git a/api_docs/kbn_coloring.devdocs.json b/api_docs/kbn_coloring.devdocs.json index c219a0dfa7778..8084df1bd1b25 100644 --- a/api_docs/kbn_coloring.devdocs.json +++ b/api_docs/kbn_coloring.devdocs.json @@ -209,6 +209,97 @@ } ], "functions": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.applyPaletteParams", + "type": "Function", + "tags": [], + "label": "applyPaletteParams", + "description": [], + "signature": [ + "(palettes: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + }, + ", activePalette: T, dataBounds: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.DataBounds", + "text": "DataBounds" + }, + ") => { stop: number; color: string; }[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.applyPaletteParams.$1", + "type": "Object", + "tags": [], + "label": "palettes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + } + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.applyPaletteParams.$2", + "type": "Uncategorized", + "tags": [], + "label": "activePalette", + "description": [], + "signature": [ + "T" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.applyPaletteParams.$3", + "type": "Object", + "tags": [], + "label": "dataBounds", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.DataBounds", + "text": "DataBounds" + } + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/coloring", "id": "def-common.checkIsMaxContinuity", @@ -486,8 +577,14 @@ "GradientColor", " | (", "LoopColor", - " & { paletteId: string; colorIndex: number; }), getPaletteFn: (paletteId: string) => ", - "CategoricalPalette", + " & { paletteId: string; colorIndex: number; }), palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, ", isDarkMode: boolean, index: number, total: number) => string" ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", @@ -536,13 +633,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getAssignmentColor.$3", - "type": "Function", + "type": "Object", "tags": [], - "label": "getPaletteFn", + "label": "palettes", "description": [], "signature": [ - "(paletteId: string) => ", - "CategoricalPalette" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -612,9 +714,15 @@ "ColorCode", " | (", "LoopColor", - " & { paletteId: string; colorIndex: number; }), getPaletteFn: (paletteId: string) => ", - "CategoricalPalette", - ", isDarkMode: boolean) => string" + " & { paletteId: string; colorIndex: number; }), palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, + ") => string" ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -643,28 +751,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getColor.$2", - "type": "Function", - "tags": [], - "label": "getPaletteFn", - "description": [], - "signature": [ - "(paletteId: string) => ", - "CategoricalPalette" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.getColor.$3", - "type": "boolean", + "type": "Object", "tags": [], - "label": "isDarkMode", + "label": "palettes", "description": [], "signature": [ - "boolean" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -718,8 +816,14 @@ "signature": [ "({ assignments, specialAssignments, colorMode, paletteId }: ", "Config", - ", getPaletteFn: (paletteId: string) => ", - "CategoricalPalette", + ", palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, ", isDarkMode: boolean, data: ", { "pluginId": "@kbn/coloring", @@ -752,13 +856,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getColorFactory.$2", - "type": "Function", + "type": "Object", "tags": [], - "label": "getPaletteFn", + "label": "palettes", "description": [], "signature": [ - "(paletteId: string) => ", - "CategoricalPalette" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -813,7 +922,15 @@ "label": "getColorsFromMapping", "description": [], "signature": [ - "(isDarkMode: boolean, colorMappings: ", + "(palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, + ", isDarkMode: boolean, colorMappings: ", "Config", " | undefined) => string[]" ], @@ -824,6 +941,27 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getColorsFromMapping.$1", + "type": "Object", + "tags": [], + "label": "palettes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } + ], + "path": "packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getColorsFromMapping.$2", "type": "boolean", "tags": [], "label": "isDarkMode", @@ -838,7 +976,7 @@ }, { "parentPluginId": "@kbn/coloring", - "id": "def-common.getColorsFromMapping.$2", + "id": "def-common.getColorsFromMapping.$3", "type": "Object", "tags": [], "label": "colorMappings", @@ -968,8 +1106,14 @@ "signature": [ "(colorMode: ", "GradientColorMode", - ", getPaletteFn: (paletteId: string) => ", - "CategoricalPalette", + ", palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, ", isDarkMode: boolean) => (value: number) => string" ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", @@ -994,13 +1138,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getGradientColorScale.$2", - "type": "Function", + "type": "Object", "tags": [], - "label": "getPaletteFn", + "label": "palettes", "description": [], "signature": [ - "(paletteId: string) => ", - "CategoricalPalette" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -1028,56 +1177,71 @@ }, { "parentPluginId": "@kbn/coloring", - "id": "def-common.getPalette", + "id": "def-common.getOverridePaletteStops", "type": "Function", "tags": [], - "label": "getPalette", + "label": "getOverridePaletteStops", "description": [ - "\nThis function should be instanciated once at the root of the component with the available palettes and\na choosed default one and shared across components to keep a single point of truth of the available palettes and the default\none." + "\nReturns color stops for given palette type:\n\n- custom - User has modified the stops in some way - return stops as is\n- non-custom - Default palette stops - Return new stops based on palette\n\n> This is needed for BWC when switching between kibana themes." ], "signature": [ - "(palettes: Map, defaultPalette: ", - "CategoricalPalette", - ") => (paletteId: string) => ", - "CategoricalPalette" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts", + "(paletteService: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + }, + ", activePalette: T | undefined) => ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[] | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/coloring", - "id": "def-common.getPalette.$1", + "id": "def-common.getOverridePaletteStops.$1", "type": "Object", "tags": [], - "label": "palettes", + "label": "paletteService", "description": [], "signature": [ - "Map" + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + } ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts", + "path": "packages/kbn-coloring/src/palettes/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true }, { "parentPluginId": "@kbn/coloring", - "id": "def-common.getPalette.$2", - "type": "Object", + "id": "def-common.getOverridePaletteStops.$2", + "type": "Uncategorized", "tags": [], - "label": "defaultPalette", + "label": "activePalette", "description": [], "signature": [ - "CategoricalPalette" + "T | undefined" ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts", + "path": "packages/kbn-coloring/src/palettes/utils.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true + "isRequired": false } ], "returnComment": [], @@ -1091,7 +1255,15 @@ "label": "getPaletteColors", "description": [], "signature": [ - "(isDarkMode: boolean, colorMappings: ", + "(palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, + ", colorMappings: ", "Config", " | undefined) => string[]" ], @@ -1102,12 +1274,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getPaletteColors.$1", - "type": "boolean", + "type": "Object", "tags": [], - "label": "isDarkMode", + "label": "palettes", "description": [], "signature": [ - "boolean" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts", "deprecated": false, @@ -1991,12 +2169,16 @@ "tags": [], "label": "palettes", "description": [ - "A map of paletteId and palette configuration" + "A collection of palette configurations" ], "signature": [ - "Map" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx", "deprecated": false, @@ -2258,7 +2440,9 @@ "type": "Array", "tags": [], "label": "stops", - "description": [], + "description": [ + "lower color stops" + ], "signature": [ { "pluginId": "@kbn/coloring", @@ -2279,7 +2463,9 @@ "type": "Array", "tags": [], "label": "colorStops", - "description": [], + "description": [ + "upper color stops" + ], "signature": [ { "pluginId": "@kbn/coloring", @@ -3113,36 +3299,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ELASTIC_BRAND_PALETTE_COLORS", - "type": "Array", - "tags": [], - "label": "ELASTIC_BRAND_PALETTE_COLORS", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUI_AMSTERDAM_PALETTE_COLORS", - "type": "Array", - "tags": [], - "label": "EUI_AMSTERDAM_PALETTE_COLORS", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.FIXED_PROGRESSION", @@ -3158,21 +3314,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KIBANA_V7_LEGACY_PALETTE_COLORS", - "type": "Array", - "tags": [], - "label": "KIBANA_V7_LEGACY_PALETTE_COLORS", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.LEGACY_COMPLIMENTARY_PALETTE", @@ -3188,36 +3329,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NEUTRAL_COLOR_DARK", - "type": "Array", - "tags": [], - "label": "NEUTRAL_COLOR_DARK", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NEUTRAL_COLOR_LIGHT", - "type": "Array", - "tags": [], - "label": "NEUTRAL_COLOR_LIGHT", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.PaletteContinuity", @@ -3241,23 +3352,23 @@ "label": "RequiredPaletteParamTypes", "description": [], "signature": [ - "{ reverse: boolean; name: string; rangeType: \"number\" | \"percent\"; continuity: ", + "{ reverse: boolean; name: string; rangeType: \"number\" | \"percent\"; stops: ", { "pluginId": "@kbn/coloring", "scope": "common", "docId": "kibKbnColoringPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" + "section": "def-common.ColorStop", + "text": "ColorStop" }, - "; progression: \"fixed\"; rangeMin: number; rangeMax: number; stops: ", + "[]; continuity: ", { "pluginId": "@kbn/coloring", "scope": "common", "docId": "kibKbnColoringPluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" + "section": "def-common.PaletteContinuity", + "text": "PaletteContinuity" }, - "[]; colorStops: ", + "; progression: \"fixed\"; rangeMin: number; rangeMax: number; colorStops: ", { "pluginId": "@kbn/coloring", "scope": "common", @@ -3274,23 +3385,6 @@ } ], "objects": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.AVAILABLE_PALETTES", - "type": "Object", - "tags": [], - "label": "AVAILABLE_PALETTES", - "description": [], - "signature": [ - "Map" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.DEFAULT_COLOR_MAPPING_CONFIG", @@ -3373,483 +3467,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette", - "type": "Object", - "tags": [], - "label": "ElasticBrandPalette", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.colorCount", - "type": "number", - "tags": [], - "label": "colorCount", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"categorical\"" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.getColor", - "type": "Function", - "tags": [], - "label": "getColor", - "description": [], - "signature": [ - "(indexInRange: number, isDarkMode: boolean, loop: boolean) => string" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.getColor.$1", - "type": "number", - "tags": [], - "label": "indexInRange", - "description": [], - "signature": [ - "number" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.getColor.$2", - "type": "boolean", - "tags": [], - "label": "isDarkMode", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.getColor.$3", - "type": "boolean", - "tags": [], - "label": "loop", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette", - "type": "Object", - "tags": [], - "label": "EUIAmsterdamColorBlindPalette", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.colorCount", - "type": "number", - "tags": [], - "label": "colorCount", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"categorical\"" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.getColor", - "type": "Function", - "tags": [], - "label": "getColor", - "description": [], - "signature": [ - "(indexInRange: number, isDarkMode: boolean, loop: boolean) => string" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.getColor.$1", - "type": "number", - "tags": [], - "label": "indexInRange", - "description": [], - "signature": [ - "number" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.getColor.$2", - "type": "boolean", - "tags": [], - "label": "isDarkMode", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.getColor.$3", - "type": "boolean", - "tags": [], - "label": "loop", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette", - "type": "Object", - "tags": [], - "label": "KibanaV7LegacyPalette", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.colorCount", - "type": "number", - "tags": [], - "label": "colorCount", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"categorical\"" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.getColor", - "type": "Function", - "tags": [], - "label": "getColor", - "description": [], - "signature": [ - "(indexInRange: number, isDarkMode: boolean, loop: boolean) => string" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.getColor.$1", - "type": "number", - "tags": [], - "label": "indexInRange", - "description": [], - "signature": [ - "number" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.getColor.$2", - "type": "boolean", - "tags": [], - "label": "isDarkMode", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.getColor.$3", - "type": "boolean", - "tags": [], - "label": "loop", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette", - "type": "Object", - "tags": [], - "label": "NeutralPalette", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.colorCount", - "type": "number", - "tags": [], - "label": "colorCount", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"categorical\"" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.getColor", - "type": "Function", - "tags": [], - "label": "getColor", - "description": [], - "signature": [ - "(valueInRange: number, isDarkMode: boolean) => string" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.getColor.$1", - "type": "number", - "tags": [], - "label": "valueInRange", - "description": [], - "signature": [ - "number" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.getColor.$2", - "type": "boolean", - "tags": [], - "label": "isDarkMode", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.SPECIAL_TOKENS_STRING_CONVERSION", diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 1495e93f55355..3aa968c113880 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 227 | 0 | 188 | 9 | +| 190 | 0 | 149 | 8 | ## Common diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 4495a9d666e32..ecffdce22ba2a 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 52dc8a5302807..4962293eb459b 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 8d6f34dec6a17..5752f7b682f1c 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 1e141bcb1989d..13696b7289e72 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_public.mdx b/api_docs/kbn_content_management_content_insights_public.mdx index f27aed576d940..d9589fbecf217 100644 --- a/api_docs/kbn_content_management_content_insights_public.mdx +++ b/api_docs/kbn_content_management_content_insights_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-public title: "@kbn/content-management-content-insights-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-public plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-public'] --- import kbnContentManagementContentInsightsPublicObj from './kbn_content_management_content_insights_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_server.mdx b/api_docs/kbn_content_management_content_insights_server.mdx index 4c87ff91d8cdb..eee4990198efa 100644 --- a/api_docs/kbn_content_management_content_insights_server.mdx +++ b/api_docs/kbn_content_management_content_insights_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-server title: "@kbn/content-management-content-insights-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-server'] --- import kbnContentManagementContentInsightsServerObj from './kbn_content_management_content_insights_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_common.mdx b/api_docs/kbn_content_management_favorites_common.mdx index b520a79a5bd4f..1334c287819f1 100644 --- a/api_docs/kbn_content_management_favorites_common.mdx +++ b/api_docs/kbn_content_management_favorites_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-common title: "@kbn/content-management-favorites-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-common'] --- import kbnContentManagementFavoritesCommonObj from './kbn_content_management_favorites_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_public.mdx b/api_docs/kbn_content_management_favorites_public.mdx index 6c4acde0a5d14..7bf30f3c2975c 100644 --- a/api_docs/kbn_content_management_favorites_public.mdx +++ b/api_docs/kbn_content_management_favorites_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-public title: "@kbn/content-management-favorites-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-public plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-public'] --- import kbnContentManagementFavoritesPublicObj from './kbn_content_management_favorites_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_server.mdx b/api_docs/kbn_content_management_favorites_server.mdx index 3aedb8d008ab7..39b7c58d355a3 100644 --- a/api_docs/kbn_content_management_favorites_server.mdx +++ b/api_docs/kbn_content_management_favorites_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-server title: "@kbn/content-management-favorites-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-server'] --- import kbnContentManagementFavoritesServerObj from './kbn_content_management_favorites_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 8414c4c621aa8..68d3af1c66e82 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index 381897e6a3e5c..76702d1a75e67 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index dd1dc03266130..0f8b7bc764589 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index ed02b594ff00a..717ed752fb5e1 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_user_profiles.mdx b/api_docs/kbn_content_management_user_profiles.mdx index 2b422b7c4fe14..6b3279205282d 100644 --- a/api_docs/kbn_content_management_user_profiles.mdx +++ b/api_docs/kbn_content_management_user_profiles.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-user-profiles title: "@kbn/content-management-user-profiles" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-user-profiles plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-user-profiles'] --- import kbnContentManagementUserProfilesObj from './kbn_content_management_user_profiles.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index bc0eace880eea..de9084e5f2a04 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.devdocs.json b/api_docs/kbn_core_analytics_browser.devdocs.json index d9e9918f342d9..bf03226292177 100644 --- a/api_docs/kbn_core_analytics_browser.devdocs.json +++ b/api_docs/kbn_core_analytics_browser.devdocs.json @@ -478,14 +478,6 @@ "deprecated": false, "trackAdoption": true, "references": [ - { - "plugin": "@kbn/core-notifications-browser-internal", - "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" - }, - { - "plugin": "@kbn/core-notifications-browser-internal", - "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" - }, { "plugin": "@kbn/ebt-tools", "path": "packages/kbn-ebt-tools/src/performance_metric_events/helpers.ts" @@ -514,6 +506,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts" }, + { + "plugin": "@kbn/core-notifications-browser-internal", + "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" + }, + { + "plugin": "@kbn/core-notifications-browser-internal", + "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" + }, { "plugin": "@kbn/core-root-browser-internal", "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" @@ -640,15 +640,15 @@ }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts" }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts" }, { "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + "path": "src/plugins/dashboard/public/dashboard_api/track_contentful_render.ts" }, { "plugin": "discover", @@ -658,10 +658,6 @@ "plugin": "discover", "path": "src/plugins/discover/public/services/discover_ebt_manager.ts" }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/public/services/telemetry/service.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/telemetry/fleet_usage_sender.ts" @@ -703,60 +699,40 @@ "path": "x-pack/plugins/observability_solution/dataset_quality/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" + "plugin": "globalSearchBar", + "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" + "plugin": "globalSearchBar", + "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" + "plugin": "reporting", + "path": "x-pack/plugins/reporting/server/usage/event_tracker.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" + "plugin": "searchPlayground", + "path": "x-pack/plugins/search_playground/server/routes.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" + "plugin": "apm", + "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" + "plugin": "apm", + "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "globalSearchBar", - "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" + "plugin": "apm", + "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "globalSearchBar", - "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" + "plugin": "apm", + "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, { "plugin": "infra", @@ -823,236 +799,264 @@ "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" + "plugin": "observabilityLogsExplorer", + "path": "x-pack/plugins/observability_solution/observability_logs_explorer/public/state_machines/observability_logs_explorer/src/telemetry_events.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/empty_prompt.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/get_started_panel.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/feedback_buttons.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/auto_detect/use_auto_detect_telemetry.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/auto_detect/use_auto_detect_telemetry.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/hooks/use_flow_progress_telemetry.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/kubernetes/use_kubernetes_flow.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/use_window_blur_data_monitoring_trigger.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/firehose/use_firehose_flow.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/app.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/management/management_service.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" }, { - "plugin": "reporting", - "path": "x-pack/plugins/reporting/server/usage/event_tracker.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "searchPlayground", - "path": "x-pack/plugins/search_playground/server/routes.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "securitySolutionServerless", - "path": "x-pack/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "securitySolutionServerless", - "path": "x-pack/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "apm", - "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" }, { - "plugin": "apm", - "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" }, { - "plugin": "apm", - "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" + "plugin": "@kbn/langchain", + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts" }, { - "plugin": "apm", - "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "observabilityLogsExplorer", - "path": "x-pack/plugins/observability_solution/observability_logs_explorer/public/state_machines/observability_logs_explorer/src/telemetry_events.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/empty_prompt.tsx" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/get_started_panel.tsx" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/feedback_buttons.tsx" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/auto_detect/use_auto_detect_telemetry.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/auto_detect/use_auto_detect_telemetry.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/hooks/use_flow_progress_telemetry.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/kubernetes/use_kubernetes_flow.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/use_window_blur_data_monitoring_trigger.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/firehose/use_firehose_flow.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/app.tsx" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/public/management/management_service.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.ts" + }, + { + "plugin": "@kbn/langchain", + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + }, + { + "plugin": "@kbn/langchain", + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + }, + { + "plugin": "observabilityAIAssistant", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts" + }, + { + "plugin": "securitySolutionServerless", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts" + }, + { + "plugin": "securitySolutionServerless", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" }, { - "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" }, { - "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" }, { "plugin": "@kbn/shared-ux-chrome-navigation", @@ -1064,43 +1068,83 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" }, { "plugin": "discover", @@ -1412,11 +1456,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts" }, { "plugin": "@kbn/core-status-server-internal", @@ -1494,6 +1538,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" }, + { + "plugin": "@kbn/core-analytics-browser-internal", + "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" + }, + { + "plugin": "@kbn/core-analytics-browser-internal", + "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" + }, { "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_viewport_size.test.ts" @@ -1720,14 +1772,6 @@ "deprecated": false, "trackAdoption": true, "references": [ - { - "plugin": "@kbn/core-execution-context-browser-internal", - "path": "packages/core/execution-context/core-execution-context-browser-internal/src/execution_context_service.ts" - }, - { - "plugin": "@kbn/core-application-browser-internal", - "path": "packages/core/application/core-application-browser-internal/src/register_analytics_context_provider.ts" - }, { "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_viewport_size.ts" @@ -1756,6 +1800,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts" }, + { + "plugin": "@kbn/core-execution-context-browser-internal", + "path": "packages/core/execution-context/core-execution-context-browser-internal/src/execution_context_service.ts" + }, + { + "plugin": "@kbn/core-application-browser-internal", + "path": "packages/core/application/core-application-browser-internal/src/register_analytics_context_provider.ts" + }, { "plugin": "@kbn/core-chrome-browser-internal", "path": "packages/core/chrome/core-chrome-browser-internal/src/register_analytics_context_provider.ts" @@ -1838,7 +1890,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" }, { "plugin": "@kbn/core-analytics-browser-mocks", diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 5268cf635993e..ec42a08d02704 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index a5006de5b1484..d458b417b67ce 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 6ccf946f3472d..418325f166366 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.devdocs.json b/api_docs/kbn_core_analytics_server.devdocs.json index f551b259301d1..793e015584e48 100644 --- a/api_docs/kbn_core_analytics_server.devdocs.json +++ b/api_docs/kbn_core_analytics_server.devdocs.json @@ -486,14 +486,6 @@ "deprecated": false, "trackAdoption": true, "references": [ - { - "plugin": "@kbn/core-notifications-browser-internal", - "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" - }, - { - "plugin": "@kbn/core-notifications-browser-internal", - "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" - }, { "plugin": "@kbn/ebt-tools", "path": "packages/kbn-ebt-tools/src/performance_metric_events/helpers.ts" @@ -522,6 +514,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts" }, + { + "plugin": "@kbn/core-notifications-browser-internal", + "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" + }, + { + "plugin": "@kbn/core-notifications-browser-internal", + "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" + }, { "plugin": "@kbn/core-root-browser-internal", "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" @@ -648,15 +648,15 @@ }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts" }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts" }, { "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + "path": "src/plugins/dashboard/public/dashboard_api/track_contentful_render.ts" }, { "plugin": "discover", @@ -666,10 +666,6 @@ "plugin": "discover", "path": "src/plugins/discover/public/services/discover_ebt_manager.ts" }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/public/services/telemetry/service.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/telemetry/fleet_usage_sender.ts" @@ -711,60 +707,40 @@ "path": "x-pack/plugins/observability_solution/dataset_quality/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" + "plugin": "globalSearchBar", + "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" + "plugin": "globalSearchBar", + "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" + "plugin": "reporting", + "path": "x-pack/plugins/reporting/server/usage/event_tracker.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" + "plugin": "searchPlayground", + "path": "x-pack/plugins/search_playground/server/routes.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" + "plugin": "apm", + "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" + "plugin": "apm", + "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "globalSearchBar", - "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" + "plugin": "apm", + "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "globalSearchBar", - "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" + "plugin": "apm", + "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, { "plugin": "infra", @@ -831,236 +807,264 @@ "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "inventory", + "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" + "plugin": "observabilityLogsExplorer", + "path": "x-pack/plugins/observability_solution/observability_logs_explorer/public/state_machines/observability_logs_explorer/src/telemetry_events.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/empty_prompt.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/get_started_panel.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/feedback_buttons.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/auto_detect/use_auto_detect_telemetry.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/auto_detect/use_auto_detect_telemetry.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/hooks/use_flow_progress_telemetry.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/kubernetes/use_kubernetes_flow.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/use_window_blur_data_monitoring_trigger.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/firehose/use_firehose_flow.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts" + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/app.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/management/management_service.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" }, { - "plugin": "reporting", - "path": "x-pack/plugins/reporting/server/usage/event_tracker.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "searchPlayground", - "path": "x-pack/plugins/search_playground/server/routes.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "securitySolutionServerless", - "path": "x-pack/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "securitySolutionServerless", - "path": "x-pack/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "apm", - "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" }, { - "plugin": "apm", - "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" }, { - "plugin": "apm", - "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" + "plugin": "@kbn/langchain", + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts" }, { - "plugin": "apm", - "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" }, { - "plugin": "inventory", - "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "observabilityLogsExplorer", - "path": "x-pack/plugins/observability_solution/observability_logs_explorer/public/state_machines/observability_logs_explorer/src/telemetry_events.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/empty_prompt.tsx" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/get_started_panel.tsx" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/feedback_buttons.tsx" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/auto_detect/use_auto_detect_telemetry.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/auto_detect/use_auto_detect_telemetry.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/hooks/use_flow_progress_telemetry.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/kubernetes/use_kubernetes_flow.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/use_window_blur_data_monitoring_trigger.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/firehose/use_firehose_flow.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_solution/observability_onboarding/public/application/app.tsx" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/public/management/management_service.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.ts" + }, + { + "plugin": "@kbn/langchain", + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + }, + { + "plugin": "@kbn/langchain", + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + }, + { + "plugin": "observabilityAIAssistant", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts" + }, + { + "plugin": "securitySolutionServerless", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts" + }, + { + "plugin": "securitySolutionServerless", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" }, { - "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" }, { - "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts" }, { "plugin": "@kbn/shared-ux-chrome-navigation", @@ -1072,43 +1076,83 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" }, { "plugin": "discover", @@ -1420,11 +1464,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts" }, { "plugin": "@kbn/core-status-server-internal", @@ -1502,6 +1546,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" }, + { + "plugin": "@kbn/core-analytics-browser-internal", + "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" + }, + { + "plugin": "@kbn/core-analytics-browser-internal", + "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" + }, { "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_viewport_size.test.ts" @@ -1728,14 +1780,6 @@ "deprecated": false, "trackAdoption": true, "references": [ - { - "plugin": "@kbn/core-execution-context-browser-internal", - "path": "packages/core/execution-context/core-execution-context-browser-internal/src/execution_context_service.ts" - }, - { - "plugin": "@kbn/core-application-browser-internal", - "path": "packages/core/application/core-application-browser-internal/src/register_analytics_context_provider.ts" - }, { "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_viewport_size.ts" @@ -1764,6 +1808,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts" }, + { + "plugin": "@kbn/core-execution-context-browser-internal", + "path": "packages/core/execution-context/core-execution-context-browser-internal/src/execution_context_service.ts" + }, + { + "plugin": "@kbn/core-application-browser-internal", + "path": "packages/core/application/core-application-browser-internal/src/register_analytics_context_provider.ts" + }, { "plugin": "@kbn/core-chrome-browser-internal", "path": "packages/core/chrome/core-chrome-browser-internal/src/register_analytics_context_provider.ts" @@ -1846,7 +1898,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" }, { "plugin": "@kbn/core-analytics-browser-mocks", diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 8fd7a6c7db4f6..cf9514a0989ec 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index f32edcf1c90f0..f88847571ef63 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index e13bfd11f70d8..da6bd5b6d2708 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.devdocs.json b/api_docs/kbn_core_application_browser.devdocs.json index ebe47e7422312..819f37d9483e0 100644 --- a/api_docs/kbn_core_application_browser.devdocs.json +++ b/api_docs/kbn_core_application_browser.devdocs.json @@ -1193,17 +1193,13 @@ "plugin": "@kbn/core-application-browser-internal", "path": "packages/core/application/core-application-browser-internal/src/ui/app_container.tsx" }, - { - "plugin": "management", - "path": "src/plugins/management/public/application.tsx" - }, { "plugin": "@kbn/core-application-browser-mocks", "path": "packages/core/application/core-application-browser-mocks/src/application_service.mock.ts" }, { - "plugin": "assetInventory", - "path": "x-pack/plugins/asset_inventory/public/application.tsx" + "plugin": "management", + "path": "src/platform/plugins/shared/management/public/application.tsx" }, { "plugin": "fleet", @@ -1213,6 +1209,10 @@ "plugin": "security", "path": "x-pack/plugins/security/public/authentication/logout/logout_app.test.ts" }, + { + "plugin": "assetInventory", + "path": "x-pack/solutions/security/plugins/asset_inventory/public/application.tsx" + }, { "plugin": "kibanaOverview", "path": "src/plugins/kibana_overview/public/application.tsx" diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 7a220a921f5c0..e42e79b29864a 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index ef5aed04efdee..b1bd772e93abb 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 5992dbbfd4286..be852751b7082 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 0f05b5dba4f7d..ee6878afe39f3 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 0a92b458e618a..22d4fef14bc3c 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 1829d5574b6ff..20bff3a309af7 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 1c52009f749fb..6eca6c33a8ccb 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 0c94ffc318014..4c6165965bc84 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 1bf883e34cf34..2cb1cb1bfbb6d 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 54dca2606eecd..d5539d9d03f32 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index b62bf102300c2..d4ce02842586e 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index a4778701fe075..a50635b75572e 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 0bb412893d351..925cb415d1cfa 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 6bafdc9098db7..e1b81ff15c914 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index f94a07a92fa02..3606dd0ce9f08 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.devdocs.json b/api_docs/kbn_core_chrome_browser.devdocs.json index a3ce26754740d..d49b19f7ce26b 100644 --- a/api_docs/kbn_core_chrome_browser.devdocs.json +++ b/api_docs/kbn_core_chrome_browser.devdocs.json @@ -3765,7 +3765,7 @@ "label": "AppDeepLinkId", "description": [], "signature": [ - "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"inventory\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" + "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"inventory\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" ], "path": "packages/core/chrome/core-chrome-browser/src/project_navigation.ts", "deprecated": false, diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 3ff5c647421b5..311a46f390b97 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index facf6c49d14a9..b1958014e7185 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 456531968563b..daf0830364eac 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index ca9eb8edba744..7750750c2a942 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 8f9889ca56aef..632e1bb3c9045 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 3e647c5acecdc..eeb1da499cc04 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 425fa315c24b8..79d15f300845d 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 3160fcad89990..de541b85656e8 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index b131ab29af775..4622e643d6191 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index 08d626b5426e5..eea6d3646333d 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 38a020f2e6b36..f4ec02ab408d4 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index c7e94ae340b18..9e57ad8e5c4ca 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 6c719b4ab17db..9c984acbfd63c 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 25eb627f3a029..3b86527e129d9 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.devdocs.json b/api_docs/kbn_core_deprecations_server.devdocs.json index 7bc0576b69422..493dc3a2cca43 100644 --- a/api_docs/kbn_core_deprecations_server.devdocs.json +++ b/api_docs/kbn_core_deprecations_server.devdocs.json @@ -18,7 +18,9 @@ "type": "Interface", "tags": [], "label": "DeprecationRegistryProvider", - "description": [], + "description": [ + "\nProvides a method to scope the {@link DeprecationsServiceSetup | Deprecations Service} to a specific domain." + ], "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", "deprecated": false, "trackAdoption": false, @@ -29,7 +31,9 @@ "type": "Function", "tags": [], "label": "getRegistry", - "description": [], + "description": [ + "\nReturns the {@link DeprecationsServiceSetup | Deprecations Service} scoped to a specific domain." + ], "signature": [ "(domainId: string) => ", { @@ -50,7 +54,9 @@ "type": "string", "tags": [], "label": "domainId", - "description": [], + "description": [ + "Domain ID to categorize the deprecations reported under it." + ], "signature": [ "string" ], @@ -84,7 +90,9 @@ "type": "Function", "tags": [], "label": "getAllDeprecations", - "description": [], + "description": [ + "\nFetch all Kibana deprecations." + ], "signature": [ "() => Promise<", { @@ -132,7 +140,9 @@ "type": "Object", "tags": [], "label": "client", - "description": [], + "description": [ + "\n{@link DeprecationsClient | Deprecations client} exposed in the request handler context." + ], "signature": [ { "pluginId": "@kbn/core-deprecations-server", @@ -168,7 +178,9 @@ "type": "Function", "tags": [], "label": "registerDeprecations", - "description": [], + "description": [ + "\nRegisters deprecation messages or notices for a specific feature or functionality\nwithin the application. This allows developers to flag certain behaviors or APIs\nas deprecated, providing guidance and warnings for future deprecation plans.\n" + ], "signature": [ "(deprecationContext: ", { @@ -190,7 +202,9 @@ "type": "Object", "tags": [], "label": "deprecationContext", - "description": [], + "description": [ + "- The configuration object containing\ninformation about the deprecated features, including messages, corrective actions,\nand any relevant metadata to inform users or developers about the deprecation." + ], "signature": [ { "pluginId": "@kbn/core-deprecations-server", @@ -217,7 +231,9 @@ "type": "Interface", "tags": [], "label": "GetDeprecationsContext", - "description": [], + "description": [ + "\nScoped clients and helpers to ease fetching the deprecations." + ], "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", "deprecated": false, "trackAdoption": false, @@ -228,7 +244,9 @@ "type": "Object", "tags": [], "label": "esClient", - "description": [], + "description": [ + "Elasticsearch client scoped to the current user" + ], "signature": [ { "pluginId": "@kbn/core-elasticsearch-server", @@ -248,7 +266,9 @@ "type": "Object", "tags": [], "label": "savedObjectsClient", - "description": [], + "description": [ + "Saved Objects client scoped to the current user and space" + ], "signature": [ { "pluginId": "@kbn/core-saved-objects-api-server", @@ -261,6 +281,27 @@ "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.GetDeprecationsContext.request", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + "" + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -271,7 +312,9 @@ "type": "Interface", "tags": [], "label": "RegisterDeprecationsConfig", - "description": [], + "description": [ + "\nOptions to provide when registering deprecations via {@link DeprecationsServiceSetup.registerDeprecations}." + ], "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", "deprecated": false, "trackAdoption": false, @@ -282,7 +325,9 @@ "type": "Function", "tags": [], "label": "getDeprecations", - "description": [], + "description": [ + "\nMethod called when the user wants to list any existing deprecations.\nReturns the list of deprecation messages to warn about." + ], "signature": [ "(context: ", { @@ -320,7 +365,9 @@ "type": "Object", "tags": [], "label": "context", - "description": [], + "description": [ + "Scoped clients and helpers to ease fetching the deprecations." + ], "signature": [ { "pluginId": "@kbn/core-deprecations-server", diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 5fb5a51b22258..fc11d0fac8103 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 16 | 0 | 13 | 0 | +| 17 | 0 | 1 | 0 | ## Server diff --git a/api_docs/kbn_core_deprecations_server_internal.devdocs.json b/api_docs/kbn_core_deprecations_server_internal.devdocs.json index 438b29f186d86..536d20bf570c2 100644 --- a/api_docs/kbn_core_deprecations_server_internal.devdocs.json +++ b/api_docs/kbn_core_deprecations_server_internal.devdocs.json @@ -18,7 +18,9 @@ "type": "Interface", "tags": [], "label": "InternalDeprecationsServiceStart", - "description": [], + "description": [ + "\nDeprecation Service: Internal Start contract" + ], "path": "packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.ts", "deprecated": false, "trackAdoption": false, @@ -30,7 +32,7 @@ "tags": [], "label": "asScopedToClient", "description": [ - "\nCreates a {@link DeprecationsClient} with provided SO client and ES client.\n" + "\nCreates a {@link DeprecationsClient} with provided SO client and ES client." ], "signature": [ "(esClient: ", @@ -49,7 +51,15 @@ "section": "def-server.SavedObjectsClientContract", "text": "SavedObjectsClientContract" }, - ") => ", + ", request: ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + ") => ", { "pluginId": "@kbn/core-deprecations-server", "scope": "server", @@ -68,7 +78,9 @@ "type": "Object", "tags": [], "label": "esClient", - "description": [], + "description": [ + "Scoped Elasticsearch client" + ], "signature": [ { "pluginId": "@kbn/core-elasticsearch-server", @@ -89,7 +101,9 @@ "type": "Object", "tags": [], "label": "savedObjectsClient", - "description": [], + "description": [ + "Scoped SO Client" + ], "signature": [ { "pluginId": "@kbn/core-saved-objects-api-server", @@ -103,6 +117,28 @@ "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/core-deprecations-server-internal", + "id": "def-server.InternalDeprecationsServiceStart.asScopedToClient.$3", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + "" + ], + "path": "packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true } ], "returnComment": [] diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 5e5ab6f149601..d006f59d4c016 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 3 | 0 | +| 5 | 0 | 1 | 0 | ## Server diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 88dc4dfb3126d..119dcfdbfacdc 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index e519eaee2c944..b7b5e4ce7fa8f 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 56ed022113504..7768ed965eb6f 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index bed1728d3ef7d..66f9277c07d7a 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 7a57afe9bb727..da83698912c88 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index b772e4bf03bea..346270a5c2c2a 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 0e2889f354f7f..20a7ae1716d94 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.devdocs.json b/api_docs/kbn_core_elasticsearch_server.devdocs.json index 2a902c07e0969..c8fbb1b6c5633 100644 --- a/api_docs/kbn_core_elasticsearch_server.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server.devdocs.json @@ -797,7 +797,7 @@ }, { "plugin": "console", - "path": "src/plugins/console/server/plugin.ts" + "path": "src/platform/plugins/shared/console/server/plugin.ts" }, { "plugin": "@kbn/core-elasticsearch-server-internal", diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index f800236689dab..e0ebc30a32f9b 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index dac12bb55fb74..bb7c496c33de3 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 44695a10fcafc..a8f19317319fd 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 92926382d0de3..55643232ee7b5 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 4a9c088e1695b..797922bd3015c 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index ba036780ab010..3fe054ca7acf4 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 71955a5f6319e..27c44b48067ff 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 819a5924cc4ed..299c0f9defaad 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 163e3cd854d19..cf27c4d13084d 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 7c02cf9672d79..036fd0efc6591 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index b117a9535574c..2eb9a5b6771a9 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 5c3d77b99ed28..e744a6078c717 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index d1515de746e4d..3f7736852ea59 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index db642ff24ab84..89a56a5c5b933 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser.mdx b/api_docs/kbn_core_feature_flags_browser.mdx index ddc168e318469..0acd09bcd0d8b 100644 --- a/api_docs/kbn_core_feature_flags_browser.mdx +++ b/api_docs/kbn_core_feature_flags_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser title: "@kbn/core-feature-flags-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser'] --- import kbnCoreFeatureFlagsBrowserObj from './kbn_core_feature_flags_browser.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_internal.mdx b/api_docs/kbn_core_feature_flags_browser_internal.mdx index 67cd7542de7e7..45664660a4108 100644 --- a/api_docs/kbn_core_feature_flags_browser_internal.mdx +++ b/api_docs/kbn_core_feature_flags_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-internal title: "@kbn/core-feature-flags-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-internal'] --- import kbnCoreFeatureFlagsBrowserInternalObj from './kbn_core_feature_flags_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_mocks.mdx b/api_docs/kbn_core_feature_flags_browser_mocks.mdx index 3174685b34dcc..6bb075f9820af 100644 --- a/api_docs/kbn_core_feature_flags_browser_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-mocks title: "@kbn/core-feature-flags-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-mocks'] --- import kbnCoreFeatureFlagsBrowserMocksObj from './kbn_core_feature_flags_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server.mdx b/api_docs/kbn_core_feature_flags_server.mdx index beda8b77721d1..1384e2f0dc3c5 100644 --- a/api_docs/kbn_core_feature_flags_server.mdx +++ b/api_docs/kbn_core_feature_flags_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server title: "@kbn/core-feature-flags-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server'] --- import kbnCoreFeatureFlagsServerObj from './kbn_core_feature_flags_server.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_internal.mdx b/api_docs/kbn_core_feature_flags_server_internal.mdx index 2b4bfb233f54e..d93d175bc59cf 100644 --- a/api_docs/kbn_core_feature_flags_server_internal.mdx +++ b/api_docs/kbn_core_feature_flags_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-internal title: "@kbn/core-feature-flags-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-internal'] --- import kbnCoreFeatureFlagsServerInternalObj from './kbn_core_feature_flags_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_mocks.mdx b/api_docs/kbn_core_feature_flags_server_mocks.mdx index d8b3e2cf5cb90..153ec4f6c9761 100644 --- a/api_docs/kbn_core_feature_flags_server_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-mocks title: "@kbn/core-feature-flags-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-mocks'] --- import kbnCoreFeatureFlagsServerMocksObj from './kbn_core_feature_flags_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 376b09de8c7e0..f799a2e8cfff6 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index dc43923bfe5a1..8d9c337de5020 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 4a67f90d582ea..348e2a6ca6ea9 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 46720ed3b6b03..b2bdc3879d0ca 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 3c81379f64f70..23fce65cd9168 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index a8b1b23e8fe00..8f4fc296eb15a 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index d9fc15578ca96..a1bc8c4cf9ead 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 1f6439187e6b7..78cd94493964c 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 6e6c372256735..3fa59b4bd9ca5 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 3d50d993f4a9d..758c59b234ef2 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index e2dbfc0121b19..16c1ddaf57fd5 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json index 8c6fcf6c11a15..cec8401172dd6 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -3905,30 +3905,6 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/get/get.ts" }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_state.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/list_alert_types.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.ts" - }, { "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/rule/apis/get/get_rule_route.ts" @@ -4027,11 +4003,7 @@ }, { "plugin": "inference", - "path": "x-pack/plugins/inference/server/routes/connectors.ts" - }, - { - "plugin": "assetInventory", - "path": "x-pack/plugins/asset_inventory/server/routes/index.ts" + "path": "x-pack/platform/plugins/shared/inference/server/routes/connectors.ts" }, { "plugin": "banners", @@ -4057,110 +4029,6 @@ "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/server/routes/internal/find_tags.ts" }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_privileges_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_datastream_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_datastream_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_list_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_privileges_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_list_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/inference_models/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_mapping_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/nodes/register_nodes_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/settings/register_load_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/stats/register_stats_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/get_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts" - }, { "plugin": "guidedOnboarding", "path": "src/plugins/guided_onboarding/server/routes/guide_state_routes.ts" @@ -4175,15 +4043,15 @@ }, { "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { "plugin": "triggersActionsUi", @@ -4193,10 +4061,6 @@ "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/server/routes/config.ts" }, - { - "plugin": "productDocBase", - "path": "x-pack/plugins/ai_infra/product_doc_base/server/routes/installation.ts" - }, { "plugin": "globalSearch", "path": "x-pack/plugins/global_search/server/routes/get_searchable_types.ts" @@ -4618,108 +4482,92 @@ "path": "x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/get.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_privileges_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/get.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_datastream_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/privileges.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_datastream_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/documents.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/database/list.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts" }, { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_start_trial_routes.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_list_route.ts" }, { - "plugin": "logstash", - "path": "x-pack/plugins/logstash/server/routes/cluster/load.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_privileges_route.ts" }, { - "plugin": "logstash", - "path": "x-pack/plugins/logstash/server/routes/pipeline/load.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_list_route.ts" }, { - "plugin": "logstash", - "path": "x-pack/plugins/logstash/server/routes/pipelines/list.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_get_route.ts" }, { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/routes/fields.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/inference_models/register_get_route.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_mapping_route.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/routes/metric_indices/index.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/nodes/register_nodes_route.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/settings/register_load_route.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/plugin.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/stats/register_stats_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "logstash", + "path": "x-pack/plugins/logstash/server/routes/cluster/load.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + "plugin": "logstash", + "path": "x-pack/plugins/logstash/server/routes/pipeline/load.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + "plugin": "logstash", + "path": "x-pack/plugins/logstash/server/routes/pipelines/list.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/plugin.ts" }, { "plugin": "reporting", @@ -4757,18 +4605,6 @@ "plugin": "reporting", "path": "x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts" }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/indices/register_get_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_get_route.ts" - }, { "plugin": "searchIndices", "path": "x-pack/plugins/search_indices/server/routes/status.ts" @@ -4793,10 +4629,6 @@ "plugin": "searchPlayground", "path": "x-pack/plugins/search_playground/server/routes.ts" }, - { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/server/routes/profile.ts" - }, { "plugin": "serverlessSearch", "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" @@ -4834,236 +4666,368 @@ "path": "x-pack/plugins/serverless_search/server/routes/ingest_pipeline_routes.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/app.ts" + "plugin": "stackConnectors", + "path": "x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "plugin": "stackConnectors", + "path": "x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/batch_reindex_indices.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/app.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/cloud_backup_status.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/cluster_upgrade_status.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/restore.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/system_indices_migration.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/status.ts" }, { - "plugin": "stackConnectors", - "path": "x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/remote_clusters.ts" }, { - "plugin": "stackConnectors", - "path": "x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/node_disk_space.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.ts" + "plugin": "customBranding", + "path": "x-pack/plugins/custom_branding/server/routes/info.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/batch_reindex_indices.ts" + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/app.ts" + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/routes/metric_indices/index.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/cloud_backup_status.ts" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/routes/fields.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/cluster_upgrade_status.ts" + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/system_indices_migration.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/apm.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/es_deprecations.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/flamechart.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/functions.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/setup/route.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/setup/route.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/storage_explorer/route.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/status.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/storage_explorer/route.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/remote_clusters.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/storage_explorer/route.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/node_disk_space.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/topn.ts" }, { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/settings/register_load_route.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts" }, { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/indices/register_get_index_patterns_route.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts" + }, + { + "plugin": "apmDataAccess", + "path": "x-pack/plugins/observability_solution/apm_data_access/server/lib/helpers/create_es_client/create_apm_event_client/index.test.ts" + }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_get_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_get_route.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/app.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/license/register_refresh_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_load_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watches/register_list_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_index_patterns_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_load_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/license/register_refresh_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_history_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_list_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/register_load_history_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_load_route.ts" }, { - "plugin": "customBranding", - "path": "x-pack/plugins/custom_branding/server/routes/info.ts" + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_history_route.ts" }, { - "plugin": "grokdebugger", - "path": "x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts" + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/register_load_history_route.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/apm.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/get.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/flamechart.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/get.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/functions.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/privileges.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/setup/route.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/documents.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/setup/route.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/list.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/storage_explorer/route.ts" + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_trial_routes.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/storage_explorer/route.ts" + "plugin": "productDocBase", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/routes/installation.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/storage_explorer/route.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/topn.ts" + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" }, { - "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" }, { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts" + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" }, { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts" + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" }, { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts" + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/server/routes/profile.ts" }, { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts" + "plugin": "grokdebugger", + "path": "x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts" }, { - "plugin": "apmDataAccess", - "path": "x-pack/plugins/observability_solution/apm_data_access/server/lib/helpers/create_es_client/create_apm_event_client/index.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/es_config/index.ts" + "plugin": "uptime", + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/spec_definitions/index.ts" + "plugin": "assetInventory", + "path": "x-pack/solutions/security/plugins/asset_inventory/server/routes/index.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts" }, { "plugin": "dataViewManagement", @@ -5097,6 +5061,18 @@ "plugin": "visTypeTimelion", "path": "src/plugins/vis_types/timelion/server/routes/functions.ts" }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/es_config/index.ts" + }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/spec_definitions/index.ts" + }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/index.ts" + }, { "plugin": "mockIdpPlugin", "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" @@ -5430,184 +5406,8 @@ "path": "x-pack/plugins/triggers_actions_ui/server/routes/config.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/find.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_state.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_state.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_state.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_state.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_state.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/get_alert_state.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/health.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/get/get.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/get/get.test.ts" }, { "plugin": "actions", @@ -5673,22 +5473,6 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.test.ts" }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts" - }, { "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_privileges_route.test.ts" @@ -5921,6 +5705,26 @@ "plugin": "monitoringCollection", "path": "x-pack/plugins/monitoring_collection/server/routes/api/v1/prometheus/get_metrics.test.ts" }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts" + }, { "plugin": "savedObjectsManagement", "path": "src/plugins/saved_objects_management/server/routes/index.test.ts" @@ -6151,7 +5955,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" }, { "plugin": "interactiveSetup", @@ -6583,38 +6387,6 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/get_global_execution_kpi.ts" }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/enable.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/disable.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update_api_key.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_instance.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_instance.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_all.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_all.ts" - }, { "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/rule/apis/create/create_rule_route.ts" @@ -6753,11 +6525,11 @@ }, { "plugin": "inference", - "path": "x-pack/plugins/inference/server/routes/chat_complete.ts" + "path": "x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts" }, { "plugin": "inference", - "path": "x-pack/plugins/inference/server/routes/chat_complete.ts" + "path": "x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts" }, { "plugin": "savedObjectsTagging", @@ -6776,184 +6548,76 @@ "path": "x-pack/plugins/saved_objects_tagging/server/routes/internal/bulk_delete.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_create_route.ts" + "plugin": "observability", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_delete_route.ts" + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/time_series_query.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_post_route.ts" + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/fields.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_post_route.ts" + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" + "plugin": "globalSearch", + "path": "x-pack/plugins/global_search/server/routes/find.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler_extraction_rules.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/app_search_gated_form.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_clear_cache_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_close_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_flush_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_forcemerge_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_open_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_refresh_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_crawl_rules.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_reload_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_entry_points.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_delete_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_sitemaps.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_unfreeze_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/credentials.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_delete_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_simulate_route.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/add_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" - }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/time_series_query.ts" - }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/fields.ts" - }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts" - }, - { - "plugin": "productDocBase", - "path": "x-pack/plugins/ai_infra/product_doc_base/server/routes/installation.ts" - }, - { - "plugin": "productDocBase", - "path": "x-pack/plugins/ai_infra/product_doc_base/server/routes/installation.ts" - }, - { - "plugin": "globalSearch", - "path": "x-pack/plugins/global_search/server/routes/find.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler_extraction_rules.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/app_search_gated_form.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_crawl_rules.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_entry_points.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_sitemaps.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/credentials.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/curations.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/curations.ts" }, { "plugin": "enterpriseSearch", @@ -7252,152 +6916,104 @@ "path": "x-pack/plugins/graph/server/routes/explore.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_retry_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_remove_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/create.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/simulate.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/parse_csv.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/database/create.ts" - }, - { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_start_basic_route.ts" - }, - { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_start_trial_routes.ts" - }, - { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_permissions_route.ts" - }, - { - "plugin": "logstash", - "path": "x-pack/plugins/logstash/server/routes/pipelines/delete.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_create_route.ts" }, { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/routes/vis.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_delete_route.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_post_route.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_post_route.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/routes/api/v1/alerts/status.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch_settings/check/internal_monitoring.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/plugin.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_clear_cache_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_close_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/pagerduty_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_flush_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/servicenow_oauth_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_forcemerge_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_open_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_refresh_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_reload_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_delete_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_unfreeze_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_delete_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/xmatters_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/torq_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_simulate_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + "plugin": "logstash", + "path": "x-pack/plugins/logstash/server/routes/pipelines/delete.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/routes/api/v1/alerts/status.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch_settings/check/internal_monitoring.ts" }, { - "plugin": "painlessLab", - "path": "x-pack/plugins/painless_lab/server/routes/api/execute.ts" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/plugin.ts" }, { "plugin": "reporting", @@ -7411,22 +7027,6 @@ "plugin": "reporting", "path": "x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts" }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_delete_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_start_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_stop_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/search/register_search_route.ts" - }, { "plugin": "@kbn/search-api-keys-server", "path": "packages/kbn-search-api-keys-server/src/routes/routes.ts" @@ -7455,10 +7055,6 @@ "plugin": "searchPlayground", "path": "x-pack/plugins/search_playground/server/routes.ts" }, - { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/server/routes/profile.ts" - }, { "plugin": "serverlessSearch", "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" @@ -7504,100 +7100,268 @@ "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "plugin": "stackConnectors", + "path": "x-pack/plugins/stack_connectors/server/routes/valid_slack_api_channels.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/restore.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/batch_reindex_indices.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/system_indices_migration.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/update_index_settings.ts" }, { - "plugin": "stackConnectors", - "path": "x-pack/plugins/stack_connectors/server/routes/valid_slack_api_channels.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" }, { "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.ts" + "path": "x-pack/plugins/upgrade_assistant/server/routes/cluster_settings.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.ts" + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/batch_reindex_indices.ts" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/routes/vis.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/system_indices_migration.ts" + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/update_index_settings.ts" + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/setup/route.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/cluster_settings.ts" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_retry_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_remove_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_create_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts" + }, + { + "plugin": "painlessLab", + "path": "x-pack/platform/plugins/private/painless_lab/server/routes/api/execute.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_delete_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_start_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_stop_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/search/register_search_route.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watches/register_delete_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_delete_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_visualize_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_visualize_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/register_list_fields_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/register_list_fields_route.ts" }, { - "plugin": "grokdebugger", - "path": "x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/create.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/setup/route.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/simulate.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/parse_csv.ts" }, { - "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/create.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/proxy/index.ts" + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_basic_route.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/convert_request_to_language/index.ts" + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_trial_routes.ts" + }, + { + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_permissions_route.ts" + }, + { + "plugin": "productDocBase", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/routes/installation.ts" + }, + { + "plugin": "productDocBase", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/routes/installation.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/pagerduty_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/servicenow_oauth_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/xmatters_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/torq_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/server/routes/profile.ts" + }, + { + "plugin": "grokdebugger", + "path": "x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts" + }, + { + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" + }, + { + "plugin": "uptime", + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { "plugin": "contentManagement", @@ -7675,6 +7439,14 @@ "plugin": "visTypeTimelion", "path": "src/plugins/vis_types/timelion/server/routes/run.ts" }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/proxy/index.ts" + }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/index.ts" + }, { "plugin": "mockIdpPlugin", "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" @@ -7881,359 +7653,151 @@ }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "path": "x-pack/plugins/alerting/server/routes/suggestions/fileds_rule.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "path": "x-pack/plugins/alerting/server/routes/suggestions/fileds_rule.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "path": "x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "path": "x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/create/create.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/create/create.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/create/create.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/create.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/disable.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/disable.test.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/routes/api/external/copy_to_space.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/disable.test.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/routes/api/external/disable_legacy_url_aliases.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/disable.test.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/disable.test.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/enable.test.ts" + "path": "x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/enable.test.ts" + "path": "x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/enable.test.ts" + "path": "x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/enable.test.ts" + "path": "x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/enable.test.ts" + "path": "x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/archive/archive_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/archive/archive_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/archive/archive_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/archive/archive_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_instance.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/bulk_get/bulk_get_maintenance_windows_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_instance.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/bulk_get/bulk_get_maintenance_windows_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_instance.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/bulk_get/bulk_get_maintenance_windows_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_instance.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/bulk_get/bulk_get_maintenance_windows_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/mute_instance.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/create/create_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/create/create_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/create/create_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/create/create_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/finish/finish_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_all.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/finish/finish_maintenance_window_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_instance.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_instance.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_instance.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_instance.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/unmute_instance.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update_api_key.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update_api_key.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update_api_key.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update_api_key.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update_api_key.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/suggestions/fileds_rule.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/suggestions/fileds_rule.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.test.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/create/create.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/create/create.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/create/create.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" - }, - { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/routes/api/external/copy_to_space.test.ts" - }, - { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/routes/api/external/disable_legacy_url_aliases.test.ts" - }, - { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.test.ts" - }, - { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/archive/archive_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/archive/archive_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/archive/archive_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/archive/archive_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/bulk_get/bulk_get_maintenance_windows_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/bulk_get/bulk_get_maintenance_windows_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/bulk_get/bulk_get_maintenance_windows_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/bulk_get/bulk_get_maintenance_windows_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/create/create_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/create/create_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/create/create_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/create/create_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/finish/finish_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/finish/finish_maintenance_window_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/finish/finish_maintenance_window_route.test.ts" + "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/finish/finish_maintenance_window_route.test.ts" }, { "plugin": "alerting", @@ -8459,6 +8023,30 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/rules_settings/apis/update/update_query_delay_settings.test.ts" }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" + }, { "plugin": "home", "path": "src/plugins/home/server/plugin.test.ts" @@ -8609,7 +8197,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" } ], "returnComment": [], @@ -8801,113 +8389,57 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/update/update.ts" }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update.ts" - }, { "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_update_route.ts" + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/server/routes/plugin_state_routes.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_put_route.ts" + "plugin": "observability", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_execute_route.ts" + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/routes/deprecations/migrate_log_view_settings.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_create_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler_extraction_rules.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_update_mapping_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/settings/register_update_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/update_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_crawl_rules.ts" }, { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_entry_points.ts" }, { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_sitemaps.ts" }, { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts" - }, - { - "plugin": "guidedOnboarding", - "path": "src/plugins/guided_onboarding/server/routes/plugin_state_routes.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" - }, - { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/routes/deprecations/migrate_log_view_settings.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler_extraction_rules.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_crawl_rules.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_entry_points.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_sitemaps.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/credentials.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/credentials.ts" }, { "plugin": "enterpriseSearch", @@ -9050,17 +8582,53 @@ "path": "x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/update.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_update_route.ts" }, { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_license_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_put_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_execute_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_create_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_update_mapping_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/settings/register_update_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts" }, { "plugin": "logstash", "path": "x-pack/plugins/logstash/server/routes/pipeline/save.ts" }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/plugin.ts" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/server/routes/internal/deprecations/deprecations.ts" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" + }, { "plugin": "metricsDataAccess", "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" @@ -9070,76 +8638,92 @@ "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/plugin.ts" + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts" }, { - "plugin": "reporting", - "path": "x-pack/plugins/reporting/server/routes/internal/deprecations/deprecations.ts" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts" }, { - "plugin": "reporting", - "path": "x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts" }, { "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_create_route.ts" + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_create_route.ts" }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_execute_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_execute_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_save_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_save_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_activate_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_deactivate_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_acknowledge_route.ts" }, { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/update.ts" + }, + { + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_license_route.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" }, { "plugin": "grokdebugger", - "path": "x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts" + "path": "x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { "plugin": "ftrApis", @@ -9182,96 +8766,64 @@ "path": "x-pack/plugins/rule_registry/server/routes/__mocks__/server.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/update/update.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/update/update.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/update/update.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update.test.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/routes/api/internal/set_solution_space.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update.test.ts" + "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update.test.ts" + "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update.test.ts" + "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/update.test.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/update/update.test.ts" + "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" }, { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/update/update.test.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" }, { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/update/update.test.ts" + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.test.ts" }, { "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts" + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts" }, { "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts" + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts" }, { "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts" + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts" }, { "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts" + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts" }, { "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts" - }, - { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/routes/api/internal/set_solution_space.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts" }, { "plugin": "indexManagement", @@ -9291,7 +8843,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" } ], "returnComment": [], @@ -9585,7 +9137,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" } ], "returnComment": [], @@ -9797,10 +9349,6 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/delete/delete.ts" }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/delete.ts" - }, { "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts" @@ -9817,25 +9365,9 @@ "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/server/routes/tags/delete_tag.ts" }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_delete_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_delete_route.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/delete_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts" - }, { "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { "plugin": "enterpriseSearch", @@ -9966,29 +9498,17 @@ "path": "x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/delete.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_delete_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/database/delete.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_delete_route.ts" }, { "plugin": "logstash", "path": "x-pack/plugins/logstash/server/routes/pipeline/delete.ts" }, - { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, { "plugin": "reporting", "path": "x-pack/plugins/reporting/server/routes/internal/management/jobs.ts" @@ -10013,37 +9533,65 @@ "plugin": "serverlessSearch", "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" + }, + { + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts" + }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_delete_route.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/delete.ts" }, { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_delete_route.ts" + "plugin": "ingestPipelines", + "path": "x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/delete.ts" }, { "plugin": "grokdebugger", - "path": "x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts" + "path": "x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { "plugin": "ftrApis", @@ -10078,60 +9626,28 @@ "path": "x-pack/plugins/rule_registry/server/routes/__mocks__/server.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/delete.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/delete/delete.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/delete.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/delete/delete.test.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/delete.test.ts" + "plugin": "actions", + "path": "x-pack/plugins/actions/server/routes/connector/delete/delete.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/delete.test.ts" + "path": "x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/delete.test.ts" + "path": "x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.test.ts" }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/legacy/delete.test.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/delete/delete.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/delete/delete.test.ts" - }, - { - "plugin": "actions", - "path": "x-pack/plugins/actions/server/routes/connector/delete/delete.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.test.ts" + "path": "x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.test.ts" }, { "plugin": "alerting", @@ -10161,6 +9677,14 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.test.ts" }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts" + }, { "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/test/helpers/router_mock.ts" @@ -10179,7 +9703,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" } ], "returnComment": [], @@ -13227,113 +12751,597 @@ "signature": [ "false | ", { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteValidator", - "text": "RouteValidator" + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteValidator", + "text": "RouteValidator" + }, + " | (() => ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteValidator", + "text": "RouteValidator" + }, + ")" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfig.security", + "type": "Object", + "tags": [], + "label": "security", + "description": [ + "\nDefines the security requirements for a route, including authorization and authentication." + ], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteSecurity", + "text": "RouteSecurity" + }, + " | undefined" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfig.options", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "\nAdditional route options {@link RouteConfigOptions}." + ], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteConfigOptions", + "text": "RouteConfigOptions" + }, + " | undefined" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfigOptions", + "type": "Interface", + "tags": [], + "label": "RouteConfigOptions", + "description": [ + "\nAdditional route options." + ], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteConfigOptions", + "text": "RouteConfigOptions" + }, + "" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfigOptions.authRequired", + "type": "CompoundType", + "tags": [ + "deprecated" + ], + "label": "authRequired", + "description": [ + "\nDefines authentication mode for a route:\n- true. A user has to have valid credentials to access a resource\n- false. A user can access a resource without any credentials.\n- 'optional'. A user can access a resource, and will be authenticated if provided credentials are valid.\n Can be useful when we grant access to a resource but want to identify a user if possible.\n\nDefaults to `true` if an auth mechanism is registered.\n" + ], + "signature": [ + "boolean | \"optional\" | undefined" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts" + }, + { + "plugin": "@kbn/core-http-server-internal", + "path": "packages/core/http/core-http-server-internal/src/http_server.ts" + }, + { + "plugin": "@kbn/core-http-server-internal", + "path": "packages/core/http/core-http-server-internal/src/http_server.ts" + }, + { + "plugin": "@kbn/core-metrics-server-internal", + "path": "packages/core/metrics/core-metrics-server-internal/src/routes/elu_history.ts" + }, + { + "plugin": "@kbn/core-status-server-internal", + "path": "packages/core/status/core-status-server-internal/src/routes/status.ts" + }, + { + "plugin": "@kbn/core-status-server-internal", + "path": "packages/core/status/core-status-server-internal/src/routes/status_preboot.ts" + }, + { + "plugin": "@kbn/core-i18n-server-internal", + "path": "packages/core/i18n/core-i18n-server-internal/src/routes/translations.ts" + }, + { + "plugin": "@kbn/core-rendering-server-internal", + "path": "packages/core/rendering/core-rendering-server-internal/src/bootstrap/register_bootstrap_route.ts" + }, + { + "plugin": "@kbn/core-capabilities-server-internal", + "path": "packages/core/capabilities/core-capabilities-server-internal/src/routes/resolve_capabilities.ts" + }, + { + "plugin": "@kbn/core-apps-server-internal", + "path": "packages/core/apps/core-apps-server-internal/src/bundle_routes/bundles_route.ts" + }, + { + "plugin": "@kbn/core-apps-server-internal", + "path": "packages/core/apps/core-apps-server-internal/src/core_app.ts" + }, + { + "plugin": "@kbn/core-apps-server-internal", + "path": "packages/core/apps/core-apps-server-internal/src/core_app.ts" + }, + { + "plugin": "usageCollection", + "path": "src/plugins/usage_collection/server/routes/stats/stats.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/common.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/common.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/saml.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authorization/reset_session_page.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/capture_url.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/logged_out.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/login.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/login.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/logout.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/analytics/record_violations.ts" + }, + { + "plugin": "monitoringCollection", + "path": "x-pack/plugins/monitoring_collection/server/routes/api/v1/dynamic_route/get_metrics_by_type.ts" + }, + { + "plugin": "monitoringCollection", + "path": "x-pack/plugins/monitoring_collection/server/routes/api/v1/prometheus/get_metrics.ts" + }, + { + "plugin": "files", + "path": "src/plugins/files/server/routes/public_facing/download.ts" + }, + { + "plugin": "banners", + "path": "x-pack/plugins/banners/server/routes/info.ts" + }, + { + "plugin": "telemetry", + "path": "src/plugins/telemetry/server/routes/telemetry_config.ts" + }, + { + "plugin": "cloudFullStory", + "path": "x-pack/plugins/cloud_integrations/cloud_full_story/server/routes/fullstory.ts" + }, + { + "plugin": "customBranding", + "path": "x-pack/plugins/custom_branding/server/routes/info.ts" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/lib/route_config_helpers.test.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/details.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/status.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/state.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/suggestions/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/pagerduty_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/servicenow_oauth_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/xmatters_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/torq_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/configure.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/enroll.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/ping.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/status.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/verify.ts" + }, + { + "plugin": "mockIdpPlugin", + "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" + }, + { + "plugin": "mockIdpPlugin", + "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" + }, + { + "plugin": "mockIdpPlugin", + "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" + }, + { + "plugin": "mockIdpPlugin", + "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts" + }, + { + "plugin": "@kbn/core-http-server-internal", + "path": "packages/core/http/core-http-server-internal/src/lifecycle/auth.ts" + }, + { + "plugin": "@kbn/core-http-server-internal", + "path": "packages/core/http/core-http-server-internal/src/lifecycle/auth.ts" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/anonymous.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/basic.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/kerberos.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/saml.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/token.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/pki.ts" + }, + { + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/lib/capabilities/capabilities_switcher.ts" }, - " | (() => ", { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteValidator", - "text": "RouteValidator" + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" }, - ")" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfig.security", - "type": "Object", - "tags": [], - "label": "security", - "description": [ - "\nDefines the security requirements for a route, including authorization and authentication." - ], - "signature": [ { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteSecurity", - "text": "RouteSecurity" + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" }, - " | undefined" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfig.options", - "type": "Object", - "tags": [], - "label": "options", - "description": [ - "\nAdditional route options {@link RouteConfigOptions}." - ], - "signature": [ { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteConfigOptions", - "text": "RouteConfigOptions" + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" }, - " | undefined" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfigOptions", - "type": "Interface", - "tags": [], - "label": "RouteConfigOptions", - "description": [ - "\nAdditional route options." - ], - "signature": [ - { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteConfigOptions", - "text": "RouteConfigOptions" - }, - "" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfigOptions.authRequired", - "type": "CompoundType", - "tags": [], - "label": "authRequired", - "description": [ - "\nDefines authentication mode for a route:\n- true. A user has to have valid credentials to access a resource\n- false. A user can access a resource without any credentials.\n- 'optional'. A user can access a resource, and will be authenticated if provided credentials are valid.\n Can be useful when we grant access to a resource but want to identify a user if possible.\n\nDefaults to `true` if an auth mechanism is registered." - ], - "signature": [ - "boolean | \"optional\" | undefined" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + } + ] }, { "parentPluginId": "@kbn/core-http-server", @@ -15426,60 +15434,8 @@ "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" }, { - "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/server/routes/policies/policies.ts" - }, - { - "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/server/routes/status/status.ts" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.ts" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/status/status.ts" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.ts" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/detection_engine/get_detection_engine_alerts_count_by_rule_tags.ts" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts" - }, - { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/data_streams.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts" + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { "plugin": "ml", @@ -15721,74 +15677,10 @@ "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/routes/inference_models.ts" }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts" - }, - { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, { "plugin": "fileUpload", "path": "x-pack/plugins/file_upload/server/routes.ts" }, - { - "plugin": "kubernetesSecurity", - "path": "x-pack/plugins/kubernetes_security/server/routes/aggregate.ts" - }, - { - "plugin": "kubernetesSecurity", - "path": "x-pack/plugins/kubernetes_security/server/routes/count.ts" - }, - { - "plugin": "kubernetesSecurity", - "path": "x-pack/plugins/kubernetes_security/server/routes/multi_terms_aggregate.ts" - }, { "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/find_endpoint_list_item_route.ts" @@ -15850,404 +15742,524 @@ "path": "x-pack/plugins/maps/server/mvt/mvt_routes.ts" }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/server/mvt/mvt_routes.ts" + "plugin": "maps", + "path": "x-pack/plugins/maps/server/mvt/mvt_routes.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/server/data_indexing/indexing_routes.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/server/data_indexing/indexing_routes.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/server/routes.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/server/routes.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/api/register_routes.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/api/register_routes.ts" + }, + { + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.ts" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/platform/plugins/private/data_visualizer/server/routes.ts" }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/server/data_indexing/indexing_routes.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/audit_messages/register_route.ts" }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/server/data_indexing/indexing_routes.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_nodes/register_route.ts" }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/server/routes.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_all/register_route.ts" }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/server/routes.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_single/register_route.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_stats_all/register_route.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_stats_single/register_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/live_query/get_live_query_details_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_details_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/live_query/get_live_query_results_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_results_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/live_query/find_live_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/live_query/find_live_query_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/find_saved_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/find_saved_query_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/read_saved_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/read_saved_query_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/status/create_status_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/status/create_status_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policies.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policy.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_package_policies.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agents.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_details.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/find_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/find_pack_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/privileges_check/privileges_check_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/privileges_check_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/asset/get_assets_status_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/asset/get_assets_status_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_alerts_index_exists_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/read_alerts_index_exists_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/index_status/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.ts" }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/api/register_routes.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/index_status/index.ts" }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/api/register_routes.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/resolve_timeline/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/resolve_timeline/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/security_integrations/cribl/routes/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/security_integrations/cribl/routes/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/privileges.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/privileges.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/status.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/status.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/privileges.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/privileges.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/entities/list.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/entities/list.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/get.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/get.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/list.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/list.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/privileges.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/privileges.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/status.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/status.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/stats.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/stats.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/translation_stats.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/translation_stats.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/stats_all.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/stats_all.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/missing.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get_prebuilt_rules.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/get_prebuilt_rules.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/policy/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/details.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/details.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/status.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/status.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/state.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/state.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" }, { - "plugin": "sessionView", - "path": "x-pack/plugins/session_view/server/routes/alerts_route.ts" + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts" }, { - "plugin": "sessionView", - "path": "x-pack/plugins/session_view/server/routes/io_events_route.ts" + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts" }, { - "plugin": "sessionView", - "path": "x-pack/plugins/session_view/server/routes/process_events_route.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { - "plugin": "sessionView", - "path": "x-pack/plugins/session_view/server/routes/alert_status_route.ts" + "plugin": "uptime", + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { - "plugin": "sessionView", - "path": "x-pack/plugins/session_view/server/routes/get_total_io_bytes_route.ts" + "plugin": "cloudDefend", + "path": "x-pack/solutions/security/plugins/cloud_defend/server/routes/policies/policies.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "plugin": "cloudDefend", + "path": "x-pack/solutions/security/plugins/cloud_defend/server/routes/status/status.ts" }, { - "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.ts" }, { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts" }, { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.ts" }, { - "plugin": "dataVisualizer", - "path": "x-pack/platform/plugins/private/data_visualizer/server/routes.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/audit_messages/register_route.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/detection_engine/get_detection_engine_alerts_count_by_rule_tags.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_nodes/register_route.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_all/register_route.ts" + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_single/register_route.ts" + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_stats_all/register_route.ts" + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_stats_single/register_route.ts" + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts" + }, + { + "plugin": "kubernetesSecurity", + "path": "x-pack/solutions/security/plugins/kubernetes_security/server/routes/aggregate.ts" + }, + { + "plugin": "kubernetesSecurity", + "path": "x-pack/solutions/security/plugins/kubernetes_security/server/routes/count.ts" + }, + { + "plugin": "kubernetesSecurity", + "path": "x-pack/solutions/security/plugins/kubernetes_security/server/routes/multi_terms_aggregate.ts" + }, + { + "plugin": "sessionView", + "path": "x-pack/solutions/security/plugins/session_view/server/routes/alerts_route.ts" + }, + { + "plugin": "sessionView", + "path": "x-pack/solutions/security/plugins/session_view/server/routes/io_events_route.ts" + }, + { + "plugin": "sessionView", + "path": "x-pack/solutions/security/plugins/session_view/server/routes/process_events_route.ts" + }, + { + "plugin": "sessionView", + "path": "x-pack/solutions/security/plugins/session_view/server/routes/alert_status_route.ts" + }, + { + "plugin": "sessionView", + "path": "x-pack/solutions/security/plugins/session_view/server/routes/get_total_io_bytes_route.ts" }, { "plugin": "@kbn/core-http-router-server-internal", @@ -16333,14 +16345,6 @@ "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.test.ts" }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/custom_elements/find.test.ts" @@ -16373,17 +16377,25 @@ "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/workpad/resolve.test.ts" }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" + }, { "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/server/routes/policies/policies.test.ts" + "path": "x-pack/solutions/security/plugins/cloud_defend/server/routes/policies/policies.test.ts" }, { "plugin": "cloudDefend", - "path": "x-pack/plugins/cloud_defend/server/routes/status/status.test.ts" + "path": "x-pack/solutions/security/plugins/cloud_defend/server/routes/status/status.test.ts" }, { "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts" + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts" }, { "plugin": "@kbn/core-http-router-server-mocks", @@ -16544,6 +16556,10 @@ "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" }, + { + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/routes/trained_models.ts" @@ -16588,14 +16604,6 @@ "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/routes/inference_models.ts" }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts" - }, - { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, { "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts" @@ -16616,6 +16624,10 @@ "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/list/update_list_route.ts" }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/api/register_routes.ts" + }, { "plugin": "metricsDataAccess", "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" @@ -16624,73 +16636,77 @@ "plugin": "infra", "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_create/register_route.ts" + }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/update_saved_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/update_saved_query_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/update_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/update_pack_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/indices/create_index_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/create_index_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.ts" }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/api/register_routes.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/create_tag.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/update.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/update.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/start.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/start.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/stop.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/stop.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/retry.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/retry.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts" - }, - { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_create/register_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts" }, { "plugin": "@kbn/core-http-router-server-internal", @@ -16700,14 +16716,6 @@ "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts" }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/custom_elements/update.test.ts" @@ -16720,6 +16728,14 @@ "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/workpad/update.test.ts" }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" + }, { "plugin": "@kbn/core-apps-server-internal", "path": "packages/core/apps/core-apps-server-internal/src/core_app.test.ts" @@ -16952,24 +16968,8 @@ "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" }, { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts" - }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/graph/route.ts" - }, - { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/usage_metrics.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts" + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { "plugin": "ml", @@ -17241,91 +17241,31 @@ }, { "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/alerting.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts" + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/alerting.ts" }, { "plugin": "fileUpload", @@ -17351,34 +17291,6 @@ "plugin": "fileUpload", "path": "x-pack/plugins/file_upload/server/routes.ts" }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/related_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/pipeline_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/cel_routes.ts" - }, { "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts" @@ -17443,6 +17355,10 @@ "plugin": "maps", "path": "x-pack/plugins/maps/server/data_indexing/indexing_routes.ts" }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/api/register_routes.ts" + }, { "plugin": "metricsDataAccess", "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" @@ -17451,365 +17367,469 @@ "plugin": "infra", "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, + { + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.ts" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/platform/plugins/private/data_visualizer/server/routes.ts" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/platform/plugins/private/data_visualizer/server/routes.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/field_histograms/register_route.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_update/register_route.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/register_route.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/reset_transforms/register_route.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_preview/register_route.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/start_transforms/register_route.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/stop_transforms/register_route.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/delete_transforms/register_route.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/schedule_now_transforms/register_route.ts" + }, + { + "plugin": "aiops", + "path": "x-pack/platform/plugins/shared/aiops/server/routes/log_rate_analysis_field_candidates/define_route.ts" + }, + { + "plugin": "aiops", + "path": "x-pack/platform/plugins/shared/aiops/server/routes/log_rate_analysis/define_route.ts" + }, + { + "plugin": "aiops", + "path": "x-pack/platform/plugins/shared/aiops/server/routes/categorization_field_validation/define_route.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/analyze_logs_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_routes.ts" + }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/setup/setup_health_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/setup/setup_health_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/live_query/create_live_query_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/create_saved_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/create_saved_query_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/create_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/create_pack_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/asset/update_assets_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/asset/update_assets_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_installation/review_rule_installation_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_upgrade/review_rule_upgrade_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_installation/perform_rule_installation_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/export_rules/route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_installation/review_rule_installation_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_upgrade/review_rule_upgrade_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_installation/perform_rule_installation_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/export_rules/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/exceptions/api/manage_exceptions/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts" }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/api/register_routes.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/copy_timeline/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/exceptions/api/manage_exceptions/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/copy_timeline/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/schedule_now.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/apply_dataview_indices.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/init.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/start.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/stop.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/enablement.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/install.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/install_translated.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/schedule_now.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/apply_dataview_indices.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/init.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/start.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/stop.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/enablement.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/install.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/install_translated.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/suggestions/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/usage_metrics.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/usage_metrics.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { - "plugin": "dataVisualizer", - "path": "x-pack/platform/plugins/private/data_visualizer/server/routes.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { - "plugin": "dataVisualizer", - "path": "x-pack/platform/plugins/private/data_visualizer/server/routes.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/field_histograms/register_route.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_update/register_route.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/suggestions/index.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/register_route.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/reset_transforms/register_route.ts" + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.test.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_preview/register_route.ts" + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.test.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/start_transforms/register_route.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/stop_transforms/register_route.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/delete_transforms/register_route.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/graph/route.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/schedule_now_transforms/register_route.ts" + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts" }, { - "plugin": "aiops", - "path": "x-pack/platform/plugins/shared/aiops/server/routes/log_rate_analysis_field_candidates/define_route.ts" + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts" }, { - "plugin": "aiops", - "path": "x-pack/platform/plugins/shared/aiops/server/routes/log_rate_analysis/define_route.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts" }, { - "plugin": "aiops", - "path": "x-pack/platform/plugins/shared/aiops/server/routes/categorization_field_validation/define_route.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts" }, { "plugin": "dataViewFieldEditor", @@ -17879,14 +17899,6 @@ "plugin": "cloud", "path": "x-pack/plugins/cloud/server/routes/set_cloud_data_route.test.ts" }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/custom_elements/create.test.ts" @@ -17898,6 +17910,14 @@ { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/workpad/create.test.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" } ], "returnComment": [], @@ -18012,39 +18032,39 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts" }, { "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts" }, { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" }, { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" } ], "returnComment": [], @@ -18181,6 +18201,10 @@ "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" }, + { + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/routes/trained_models.ts" @@ -18217,14 +18241,6 @@ "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/routes/anomaly_detectors.ts" }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts" - }, - { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, { "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts" @@ -18253,6 +18269,10 @@ "plugin": "maps", "path": "x-pack/plugins/maps/server/data_indexing/indexing_routes.ts" }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/api/register_routes.ts" + }, { "plugin": "metricsDataAccess", "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" @@ -18263,59 +18283,59 @@ }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/delete_saved_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/delete_saved_query_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/delete_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/delete_pack_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts" }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/server/api/register_routes.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/notes/delete_note.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/delete_note.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/delete.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/delete.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts" }, { "plugin": "@kbn/core-http-router-server-internal", @@ -18329,14 +18349,6 @@ "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.test.ts" }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/custom_elements/delete.test.ts" @@ -18344,6 +18356,14 @@ { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/workpad/delete.test.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" } ], "returnComment": [], diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index b1acc091b418b..780088e905792 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 2334b6a7f8198..34c76f0cbcca5 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index b9b3aba6760dd..be460ee613fd0 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_utils.mdx b/api_docs/kbn_core_http_server_utils.mdx index 351ec41bd0da1..1e8cc6a944c74 100644 --- a/api_docs/kbn_core_http_server_utils.mdx +++ b/api_docs/kbn_core_http_server_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-utils title: "@kbn/core-http-server-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-utils'] --- import kbnCoreHttpServerUtilsObj from './kbn_core_http_server_utils.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 000c47c06f11e..947e2990371ad 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index f51782ce75aa5..0d2df9c851421 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 94ac5fc27c3c8..da3e262f1e377 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index f479d00514093..f552eeb4c652b 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 2f4b11a249567..0c0b3a7206029 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 8bddc5cb232c4..67d7f8ad2e27f 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index b2b12dd060495..405c62a9f203b 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 8f05f4294eaf9..795d9101c2d03 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 98465eeca9168..23a15e800995f 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 68530f37b0796..6c5f918cbb1c2 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 0de8193218662..01af455528351 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 766bbc64b06f9..7042f6f1a0bda 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index 7291faa25100f..f106be65cffa8 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 81572a65f7952..cd0676e5dd670 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 0f323c502f4b0..beaa3bf73be6c 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index b76221057d868..7c63e96effc57 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 2b08e85635d85..c72afbba9490d 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index b96515f47e56e..52c5a2e9abf20 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index e2eac2c41f700..2b8d2b8e85818 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 1a5a185d7207d..89e92aa689be3 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index fc8307aa40291..173b2c04e33c5 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 3e4acefdb49a8..b02008727f3fb 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 2b37f619035cd..9937e09f02c72 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 21b1476a1cd5c..0ef85f44854cf 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 16471f6082d2a..88efb60134746 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index b8348d5b4e0d0..065a88bd003b0 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 99a19348d6f6e..ff60451c6e3c7 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index a1f82fd6f4204..ec8e9abf1b9c2 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 498781a110368..9cc755920e753 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index e61fa73f779fd..ba6945dd72be4 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index fb97edb750679..bba2164035761 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 998ea01939498..fd95ea1792514 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 9006f61580752..415ff8d539c8e 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 26c6cca6859d1..a3f1c6f8f2d26 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 6773f689157a5..c1265098619ef 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 59b5cd14f66ff..2c64d111182fc 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 00d2daf5e7e29..4df4570abea06 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 087e03ad8fec0..9f97bda044714 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 05dc9cc0932c6..b7187d3cc673a 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 6278e07552b72..f9f5ed7a1b5a0 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser.mdx b/api_docs/kbn_core_rendering_browser.mdx index 72720bbe02cfc..d8ad82cfb271b 100644 --- a/api_docs/kbn_core_rendering_browser.mdx +++ b/api_docs/kbn_core_rendering_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser title: "@kbn/core-rendering-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser'] --- import kbnCoreRenderingBrowserObj from './kbn_core_rendering_browser.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 014a20a1d146f..82d5925b7f0bd 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index 65ad02a75a9df..98d7556b8dd41 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index bfae09edfb668..97a38256a1165 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 6d45673e4888e..175d6422863a5 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.devdocs.json b/api_docs/kbn_core_saved_objects_api_browser.devdocs.json index 6c099d5f78424..c9bd6ed6eec29 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_browser.devdocs.json @@ -886,6 +886,14 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core", "path": "src/core/public/index.ts" @@ -926,14 +934,6 @@ "plugin": "visTypeTimeseries", "path": "src/plugins/vis_types/timeseries/public/application/contexts/query_input_bar_context.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.test.ts" @@ -1121,14 +1121,14 @@ "deprecated": true, "trackAdoption": false, "references": [ - { - "plugin": "home", - "path": "src/plugins/home/public/application/components/home_app.js" - }, { "plugin": "@kbn/core-saved-objects-browser-mocks", "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/home_app.js" + }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" @@ -2767,6 +2767,18 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core", "path": "src/core/public/index.ts" @@ -2795,14 +2807,6 @@ "plugin": "dataVisualizer", "path": "x-pack/platform/plugins/private/data_visualizer/common/types/index.ts" }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/common/types/kibana.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/common/types/kibana.ts" - }, { "plugin": "dashboardEnhanced", "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/collect_config_container.tsx" @@ -2811,6 +2815,14 @@ "plugin": "dashboardEnhanced", "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/collect_config_container.tsx" }, + { + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/common/types/kibana.ts" + }, + { + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/common/types/kibana.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/types/app_state.ts" @@ -2837,11 +2849,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/hooks/types.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/hooks/types.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/hooks/types.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/hooks/types.ts" }, { "plugin": "eventAnnotation", @@ -2878,18 +2890,6 @@ { "plugin": "visualizations", "path": "src/plugins/visualizations/public/wizard/search_selection/show_saved_object.test.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" } ], "children": [ diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 6c9bcdd0c2ae3..9f4cd213ab5aa 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.devdocs.json b/api_docs/kbn_core_saved_objects_api_server.devdocs.json index faaa627699590..802006aa602aa 100644 --- a/api_docs/kbn_core_saved_objects_api_server.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_server.devdocs.json @@ -2098,6 +2098,49 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-api-server", + "id": "def-server.ISavedObjectsRepository.asScopedToNamespace", + "type": "Function", + "tags": [], + "label": "asScopedToNamespace", + "description": [ + "\nReturns a new Saved Objects repository scoped to the specified namespace." + ], + "signature": [ + "(namespace: string) => ", + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-server.ISavedObjectsRepository", + "text": "ISavedObjectsRepository" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_repository.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-api-server", + "id": "def-server.ISavedObjectsRepository.asScopedToNamespace.$1", + "type": "string", + "tags": [], + "label": "namespace", + "description": [ + "Space to which the repository should be scoped to." + ], + "signature": [ + "string" + ], + "path": "packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_repository.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -2330,6 +2373,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -2342,10 +2389,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -2375,136 +2418,136 @@ "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" } ] }, @@ -2815,32 +2858,32 @@ "path": "x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts" + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/task_store.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts" + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/task_store.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts" + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/task_store.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts" }, { - "plugin": "taskManager", - "path": "x-pack/plugins/task_manager/server/task_store.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts" }, { - "plugin": "taskManager", - "path": "x-pack/plugins/task_manager/server/task_store.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts" }, { - "plugin": "taskManager", - "path": "x-pack/plugins/task_manager/server/task_store.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts" }, { "plugin": "alerting", @@ -5785,6 +5828,49 @@ "trackAdoption": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-api-server", + "id": "def-server.SavedObjectsClientContract.asScopedToNamespace", + "type": "Function", + "tags": [], + "label": "asScopedToNamespace", + "description": [ + "\nReturns a clone of the current Saved Objects client but scoped to the specified namespace." + ], + "signature": [ + "(namespace: string) => ", + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-server.SavedObjectsClientContract", + "text": "SavedObjectsClientContract" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-api-server", + "id": "def-server.SavedObjectsClientContract.asScopedToNamespace.$1", + "type": "string", + "tags": [], + "label": "namespace", + "description": [ + "Space to which the client should be scoped to." + ], + "signature": [ + "string" + ], + "path": "packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_client.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 0203fbac2f876..f4cf8084833c6 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 357 | 1 | 5 | 2 | +| 361 | 1 | 5 | 2 | ## Server diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 98d41a1e3380d..450e8f925b9c1 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 8557124bdcda4..a3f45a1d2c64d 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 1a71c86b70763..dcd4fddf0bcc5 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.devdocs.json b/api_docs/kbn_core_saved_objects_browser.devdocs.json index f625e14052421..d0005651d2a2e 100644 --- a/api_docs/kbn_core_saved_objects_browser.devdocs.json +++ b/api_docs/kbn_core_saved_objects_browser.devdocs.json @@ -17,18 +17,6 @@ "deprecated": true, "trackAdoption": false, "references": [ - { - "plugin": "@kbn/core-lifecycle-browser", - "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" - }, - { - "plugin": "@kbn/core-lifecycle-browser", - "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" - }, - { - "plugin": "@kbn/core-lifecycle-browser", - "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" - }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_service.ts" @@ -41,6 +29,26 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_service.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" + }, + { + "plugin": "@kbn/core-lifecycle-browser", + "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" + }, + { + "plugin": "@kbn/core-lifecycle-browser", + "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" + }, + { + "plugin": "@kbn/core-lifecycle-browser", + "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" + }, { "plugin": "@kbn/core", "path": "src/core/public/index.ts" @@ -55,11 +63,11 @@ }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts" }, { "plugin": "transform", @@ -72,14 +80,6 @@ { "plugin": "@kbn/core", "path": "src/core/server/index.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" } ], "children": [ diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 00436cf886dbf..636b5229343d1 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.devdocs.json b/api_docs/kbn_core_saved_objects_browser_internal.devdocs.json index 83b0893914e67..016c97e0e12c7 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.devdocs.json +++ b/api_docs/kbn_core_saved_objects_browser_internal.devdocs.json @@ -36,24 +36,24 @@ "trackAdoption": false, "references": [ { - "plugin": "@kbn/core-root-browser-internal", - "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" }, { - "plugin": "@kbn/core-root-browser-internal", - "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" }, { "plugin": "@kbn/core-root-browser-internal", "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" }, { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" + "plugin": "@kbn/core-root-browser-internal", + "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" }, { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" + "plugin": "@kbn/core-root-browser-internal", + "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" } ], "children": [ diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 67e0027d173cf..45c75c42efd1d 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 185c5151a73dc..bc1f7d6fdf1fc 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.devdocs.json b/api_docs/kbn_core_saved_objects_common.devdocs.json index 27c7f50f6423b..5e18c6c5a18f3 100644 --- a/api_docs/kbn_core_saved_objects_common.devdocs.json +++ b/api_docs/kbn_core_saved_objects_common.devdocs.json @@ -1213,6 +1213,18 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core", "path": "src/core/public/index.ts" @@ -1317,22 +1329,6 @@ "plugin": "lists", "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" - }, { "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/public/utils.test.ts" @@ -1365,6 +1361,22 @@ "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/common/test_utils/index.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + }, { "plugin": "savedObjectsManagement", "path": "src/plugins/saved_objects_management/server/lib/find_relationships.test.ts" @@ -1437,18 +1449,6 @@ "plugin": "@kbn/core-saved-objects-import-export-server-internal", "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.test.ts" @@ -1663,14 +1663,6 @@ "plugin": "visualizations", "path": "src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx" }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/shareable_runtime/types.ts" @@ -1854,14 +1846,6 @@ "plugin": "visualizations", "path": "src/plugins/visualizations/public/utils/saved_visualize_utils.ts" }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx" - }, { "plugin": "visualizations", "path": "src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx" diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 8a856f1f061b0..d447a4a1970bb 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index a6e4abed4ba57..cc6e5dc775641 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 5e5163d7f8191..9911f26838bcc 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 68cd1c18dca8e..2ea2289faa7ad 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 4372cddba9070..189a42b5b87da 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.devdocs.json b/api_docs/kbn_core_saved_objects_server.devdocs.json index 144ba6e5eaad2..f9596351fc6d9 100644 --- a/api_docs/kbn_core_saved_objects_server.devdocs.json +++ b/api_docs/kbn_core_saved_objects_server.devdocs.json @@ -5120,6 +5120,49 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server", + "id": "def-server.ISavedObjectsSpacesExtension.asScopedToNamespace", + "type": "Function", + "tags": [], + "label": "asScopedToNamespace", + "description": [ + "\nReturns a new Saved Objects Spaces Extension scoped to the specified namespace." + ], + "signature": [ + "(namespace: string) => ", + { + "pluginId": "@kbn/core-saved-objects-server", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsServerPluginApi", + "section": "def-server.ISavedObjectsSpacesExtension", + "text": "ISavedObjectsSpacesExtension" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-server/src/extensions/spaces.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-server", + "id": "def-server.ISavedObjectsSpacesExtension.asScopedToNamespace.$1", + "type": "string", + "tags": [], + "label": "namespace", + "description": [ + "Space to which the extension should be scoped to." + ], + "signature": [ + "string" + ], + "path": "packages/core/saved-objects/core-saved-objects-server/src/extensions/spaces.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -5859,6 +5902,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -5871,10 +5918,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -5904,136 +5947,136 @@ "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.mock.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/packages/get.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts" } ] }, @@ -6344,32 +6387,32 @@ "path": "x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts" + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/task_store.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts" + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/task_store.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts" + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/task_store.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts" }, { - "plugin": "taskManager", - "path": "x-pack/plugins/task_manager/server/task_store.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts" }, { - "plugin": "taskManager", - "path": "x-pack/plugins/task_manager/server/task_store.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts" }, { - "plugin": "taskManager", - "path": "x-pack/plugins/task_manager/server/task_store.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts" }, { "plugin": "alerting", @@ -10731,10 +10774,6 @@ "plugin": "fleet", "path": "x-pack/plugins/fleet/server/saved_objects/index.ts" }, - { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts" - }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/saved_objects/saved_objects.ts" @@ -10763,53 +10802,57 @@ "plugin": "maps", "path": "x-pack/plugins/maps/server/saved_objects/setup_saved_objects.ts" }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" - }, { "plugin": "apmDataAccess", "path": "x-pack/plugins/observability_solution/apm_data_access/server/saved_objects/apm_indices.ts" }, + { + "plugin": "apm", + "path": "x-pack/plugins/observability_solution/apm/server/saved_objects/apm_service_groups.ts" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" + }, { "plugin": "infra", "path": "x-pack/plugins/observability_solution/infra/server/lib/sources/saved_object_type.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts" + "plugin": "slo", + "path": "x-pack/solutions/observability/plugins/slo/server/saved_objects/slo.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts" - }, - { - "plugin": "apm", - "path": "x-pack/plugins/observability_solution/apm/server/saved_objects/apm_service_groups.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts" }, { - "plugin": "slo", - "path": "x-pack/plugins/observability_solution/slo/server/saved_objects/slo.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor.ts" }, { "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts" + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts" }, { "plugin": "eventAnnotation", @@ -11335,16 +11378,16 @@ "path": "src/plugins/saved_search/server/saved_objects/search.ts" }, { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts" + "plugin": "visualizations", + "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" }, { "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts" + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts" }, { - "plugin": "visualizations", - "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts" }, { "plugin": "@kbn/core-test-helpers-so-type-serializer", @@ -11560,19 +11603,19 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts" }, { "plugin": "@kbn/core-test-helpers-so-type-serializer", diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 6bf2d1e33f8d7..84e54ba54a401 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 564 | 1 | 134 | 4 | +| 566 | 1 | 134 | 4 | ## Server diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 739ca5468b704..1d368c39b7395 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index e6c9a86b32220..bc2858bb1367b 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index c97c2df724aac..9da82a3aeba53 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index b682c8c3f93e8..d5055f9195040 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index 5560e404afe26..8bea246550e81 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.devdocs.json b/api_docs/kbn_core_security_browser_mocks.devdocs.json index f6b6c98008760..3d76985b7d337 100644 --- a/api_docs/kbn_core_security_browser_mocks.devdocs.json +++ b/api_docs/kbn_core_security_browser_mocks.devdocs.json @@ -146,7 +146,7 @@ "section": "def-common.AuthenticatedUser", "text": "AuthenticatedUser" }, - ", \"roles\"> & { roles: string[]; }>) => { username: string; enabled: boolean; metadata: { _reserved: boolean; _deprecated?: boolean | undefined; _deprecated_reason?: string | undefined; }; email: string; full_name: string; profile_uid: string; authentication_provider: ", + ", \"roles\"> & { roles: string[]; }>) => { username: string; enabled: boolean; metadata: { _reserved: boolean; _deprecated?: boolean | undefined; _deprecated_reason?: string | undefined; }; email: string; operator?: boolean | undefined; full_name: string; profile_uid: string; authentication_provider: ", { "pluginId": "@kbn/core-security-common", "scope": "common", diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index f6e0d4d13add9..2aec8f02f3816 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.devdocs.json b/api_docs/kbn_core_security_common.devdocs.json index af196d5e34931..fdae7a470ddf4 100644 --- a/api_docs/kbn_core_security_common.devdocs.json +++ b/api_docs/kbn_core_security_common.devdocs.json @@ -157,6 +157,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-security-common", + "id": "def-common.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index 4cd19de06ef2a..332752df684bc 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 20 | 0 | 6 | 0 | +| 21 | 0 | 6 | 0 | ## Common diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index 8483bdd8ec7c9..9541f95fe4fc0 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index ca0e0bc1dfbc0..e2e5a5b30b10e 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.devdocs.json b/api_docs/kbn_core_security_server_mocks.devdocs.json index 215a6b44c44fd..4708eeb9f6c18 100644 --- a/api_docs/kbn_core_security_server_mocks.devdocs.json +++ b/api_docs/kbn_core_security_server_mocks.devdocs.json @@ -312,7 +312,7 @@ "section": "def-common.AuthenticatedUser", "text": "AuthenticatedUser" }, - ", \"roles\"> & { roles: string[]; }>) => { username: string; enabled: boolean; metadata: { _reserved: boolean; _deprecated?: boolean | undefined; _deprecated_reason?: string | undefined; }; email: string; full_name: string; profile_uid: string; authentication_provider: ", + ", \"roles\"> & { roles: string[]; }>) => { username: string; enabled: boolean; metadata: { _reserved: boolean; _deprecated?: boolean | undefined; _deprecated_reason?: string | undefined; }; email: string; operator?: boolean | undefined; full_name: string; profile_uid: string; authentication_provider: ", { "pluginId": "@kbn/core-security-common", "scope": "common", diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index af698f43cb8c0..9d2bb2fb07c4e 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 968ba728ad4f4..eb05a0968d673 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index e343f288eb9a2..c771b073f34cc 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index bfb89bf975f5a..e921db503078d 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index a737b79d3f5ba..76aef15c810d3 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index ae97e67fb0870..612e270b0d536 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 8a02a9580c5f2..f7bef342e59fb 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index a2b4375d91f5a..3903a7a6602ee 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 911958b64f6c9..96d16804e5ffc 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 9ec25179db891..73a0273ce3d46 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index cec40d2fe58a9..2accf5d5ed282 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 65fc9b6ef2294..94aa509d681c2 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 8015c2037ecd5..fe8610c726f5e 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index aac24cc2b8797..0c476e0c23312 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 5a6ef4545f06d..82a06c29a5a39 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 8af2f1ec3fce1..0330093dfe715 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.devdocs.json b/api_docs/kbn_core_ui_settings_common.devdocs.json index 44c116985b70b..6ddd9dac5f601 100644 --- a/api_docs/kbn_core_ui_settings_common.devdocs.json +++ b/api_docs/kbn_core_ui_settings_common.devdocs.json @@ -610,7 +610,7 @@ }, { "plugin": "@kbn/management-settings-field-definition", - "path": "packages/kbn-management/settings/field_definition/get_definition.ts" + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts" } ] }, diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 03f68c1f67911..87a8821501178 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 955b7c0888321..8a9f8bcfebf1c 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index ef649a85cf818..0105811e82025 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index d302813051089..2ee0d10794369 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index af698de3ef9b3..b01e2e2aecee2 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index dd6adadc08ff9..240c28903be4e 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index ea631910b93bb..af9fa5fd1ff15 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index 828142fa1f6e5..fc328ae54f153 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index 83eded117948e..02fec7a8bb5ff 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index 3f10d256503f5..230c5e7764f8f 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index dd8af1cabec67..1f5574f503b8d 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index 99c739e8a177b..d372df1f95f7f 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index 791f5e818e5d1..d0c5f22ca403b 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index da9ff6c990cbe..499adc8add511 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 0b86dd76cf67b..70c298d18af8a 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 5f612d4d57144..ebee3f10cf9be 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index e23337554b692..447d19e38838a 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 230823f25eff1..437e249565d08 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 1b1780d005298..e04c064124719 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index b31685f6774ca..8cfa9f4c077c8 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index c0be02f585d99..cd32b2ac00480 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.devdocs.json b/api_docs/kbn_data_forge.devdocs.json index 64194f08c3822..6a9ac3dd24c27 100644 --- a/api_docs/kbn_data_forge.devdocs.json +++ b/api_docs/kbn_data_forge.devdocs.json @@ -39,7 +39,7 @@ }, "; }) => Promise" ], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -50,7 +50,7 @@ "tags": [], "label": "{\n client,\n config: partialConfig,\n logger,\n}", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -64,7 +64,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false }, @@ -78,7 +78,7 @@ "signature": [ "{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false }, @@ -98,7 +98,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false } @@ -120,7 +120,7 @@ "CliOptions", " | undefined) => Promise" ], - "path": "x-pack/packages/kbn-data-forge/src/cli.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cli.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -135,7 +135,7 @@ "CliOptions", " | undefined" ], - "path": "x-pack/packages/kbn-data-forge/src/cli.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cli.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -154,7 +154,7 @@ "signature": [ "(partialConfig: { elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }) => { elasticsearch: { host: string; username: string; password: string; apiKey: string; installKibanaUser: boolean; }; kibana: { host: string; username: string; password: string; installAssets: boolean; }; indexing: { dataset: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\"; scenario: string; interval: number; eventsPerCycle: number; payloadSize: number; concurrency: number; reduceWeekendTrafficBy: number; ephemeralProjectIds: number; alignEventsToInterval: boolean; artificialIndexDelay: number; }; schedule: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-data-forge/src/lib/create_config.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -168,7 +168,7 @@ "signature": [ "{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/lib/create_config.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -197,7 +197,7 @@ }, "; }) => Promise" ], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -208,7 +208,7 @@ "tags": [], "label": "{\n client,\n config: partialConfig,\n logger,\n}", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -222,7 +222,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false }, @@ -236,7 +236,7 @@ "signature": [ "{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false }, @@ -256,7 +256,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false } @@ -276,7 +276,7 @@ "signature": [ "(filePath: string) => Promise<{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }>" ], - "path": "x-pack/packages/kbn-data-forge/src/lib/create_config.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -290,7 +290,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-data-forge/src/lib/create_config.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -319,7 +319,7 @@ }, ") => Promise" ], - "path": "x-pack/packages/kbn-data-forge/src/run.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -333,7 +333,7 @@ "signature": [ "{ elasticsearch: { host: string; username: string; password: string; apiKey: string; installKibanaUser: boolean; }; kibana: { host: string; username: string; password: string; installAssets: boolean; }; indexing: { dataset: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\"; scenario: string; interval: number; eventsPerCycle: number; payloadSize: number; concurrency: number; reduceWeekendTrafficBy: number; ephemeralProjectIds: number; alignEventsToInterval: boolean; artificialIndexDelay: number; }; schedule: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-data-forge/src/run.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -348,7 +348,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-data-forge/src/run.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -369,7 +369,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-data-forge/src/run.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -392,7 +392,7 @@ "signature": [ "{ elasticsearch: { host: string; username: string; password: string; apiKey: string; installKibanaUser: boolean; }; kibana: { host: string; username: string; password: string; installAssets: boolean; }; indexing: { dataset: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\"; scenario: string; interval: number; eventsPerCycle: number; payloadSize: number; concurrency: number; reduceWeekendTrafficBy: number; ephemeralProjectIds: number; alignEventsToInterval: boolean; artificialIndexDelay: number; }; schedule: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -407,7 +407,7 @@ "signature": [ "\"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\"" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -422,7 +422,7 @@ "signature": [ "number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; })" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -437,7 +437,7 @@ "signature": [ "{ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -452,7 +452,7 @@ "signature": [ "{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -467,7 +467,7 @@ "signature": [ "{ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -482,7 +482,7 @@ "signature": [ "\"linear\" | \"exp\" | \"sine\"" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -496,7 +496,7 @@ "tags": [], "label": "DEFAULTS", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -507,7 +507,7 @@ "tags": [], "label": "EVENTS_PER_CYCLE", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -518,7 +518,7 @@ "tags": [], "label": "PAYLOAD_SIZE", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -529,7 +529,7 @@ "tags": [], "label": "CONCURRENCY", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -540,7 +540,7 @@ "tags": [], "label": "SERVERLESS", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -551,7 +551,7 @@ "tags": [], "label": "INDEX_INTERVAL", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -562,7 +562,7 @@ "tags": [], "label": "DATASET", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -573,7 +573,7 @@ "tags": [], "label": "SCENARIO", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -584,7 +584,7 @@ "tags": [], "label": "ELASTICSEARCH_HOST", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -595,7 +595,7 @@ "tags": [], "label": "ELASTICSEARCH_USERNAME", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -606,7 +606,7 @@ "tags": [], "label": "ELASTICSEARCH_PASSWORD", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -617,7 +617,7 @@ "tags": [], "label": "ELASTICSEARCH_API_KEY", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -628,7 +628,7 @@ "tags": [], "label": "SKIP_KIBANA_USER", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -639,7 +639,7 @@ "tags": [], "label": "INSTALL_KIBANA_ASSETS", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -650,7 +650,7 @@ "tags": [], "label": "DELAY_IN_MINUTES", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -661,7 +661,7 @@ "tags": [], "label": "DELAY_EVERY_MINUTES", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -672,7 +672,7 @@ "tags": [], "label": "LOOKBACK", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -683,7 +683,7 @@ "tags": [], "label": "KIBANA_URL", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -694,7 +694,7 @@ "tags": [], "label": "KIBANA_USERNAME", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -705,7 +705,7 @@ "tags": [], "label": "KIBANA_PASSWORD", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -716,7 +716,7 @@ "tags": [], "label": "EVENT_TEMPLATE", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -727,7 +727,7 @@ "tags": [], "label": "REDUCE_WEEKEND_TRAFFIC_BY", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -738,7 +738,7 @@ "tags": [], "label": "EPHEMERAL_PROJECT_IDS", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -749,7 +749,7 @@ "tags": [], "label": "ALIGN_EVENTS_TO_INTERVAL", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -760,7 +760,7 @@ "tags": [], "label": "CARDINALITY", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index 2feb4a4bed699..7b90da90b6ada 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 6f21ad94849af..4acb3c9981925 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.devdocs.json b/api_docs/kbn_data_stream_adapter.devdocs.json index 66d9f0dbb0c2a..4e574c32850ff 100644 --- a/api_docs/kbn_data_stream_adapter.devdocs.json +++ b/api_docs/kbn_data_stream_adapter.devdocs.json @@ -34,7 +34,7 @@ "text": "IndexAdapter" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -56,7 +56,7 @@ }, ") => void" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -76,7 +76,7 @@ "text": "SetIndexTemplateParams" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -102,7 +102,7 @@ }, ") => Promise" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -122,7 +122,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -157,7 +157,7 @@ "text": "IndexPatternAdapter" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -179,7 +179,7 @@ }, ") => void" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -199,7 +199,7 @@ "text": "SetIndexTemplateParams" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -233,7 +233,7 @@ }, ">" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -253,7 +253,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -273,7 +273,7 @@ "signature": [ "(spaceId: string) => Promise" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -287,7 +287,7 @@ "signature": [ "string" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -305,7 +305,7 @@ "signature": [ "(spaceId: string) => Promise" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -319,7 +319,7 @@ "signature": [ "string" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -350,7 +350,7 @@ }, "; attempt?: number | undefined; }) => Promise" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -364,7 +364,7 @@ "signature": [ "() => Promise" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -376,7 +376,7 @@ "tags": [], "label": "{ logger, attempt = 0 }", "description": [], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -396,7 +396,7 @@ "text": "Logger" } ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false }, @@ -410,7 +410,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false } @@ -429,7 +429,7 @@ "tags": [], "label": "AllowedValue", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -443,7 +443,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -457,7 +457,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -471,7 +471,7 @@ "tags": [], "label": "EcsMetadata", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -492,7 +492,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -503,7 +503,7 @@ "tags": [], "label": "dashed_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -514,7 +514,7 @@ "tags": [], "label": "description", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -528,7 +528,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -542,7 +542,7 @@ "signature": [ "string | number | boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -553,7 +553,7 @@ "tags": [], "label": "flat_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -567,7 +567,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -581,7 +581,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -592,7 +592,7 @@ "tags": [], "label": "level", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -613,7 +613,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -624,7 +624,7 @@ "tags": [], "label": "name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -638,7 +638,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -652,7 +652,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -666,7 +666,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -677,7 +677,7 @@ "tags": [], "label": "short", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -688,7 +688,7 @@ "tags": [], "label": "type", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -702,7 +702,7 @@ "signature": [ "Record | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -716,7 +716,7 @@ "tags": [], "label": "InstallParams", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -736,7 +736,7 @@ "text": "Logger" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -765,7 +765,7 @@ }, ">" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -780,7 +780,7 @@ "Subject", "" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -794,7 +794,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false } @@ -808,7 +808,7 @@ "tags": [], "label": "MultiField", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -819,7 +819,7 @@ "tags": [], "label": "flat_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -830,7 +830,7 @@ "tags": [], "label": "name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -841,7 +841,7 @@ "tags": [], "label": "type", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -869,7 +869,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -892,7 +892,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -915,7 +915,7 @@ }, ", keyof NonNullable>}` : `${Key}` : never" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -930,7 +930,7 @@ "signature": [ "GetComponentTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -947,7 +947,7 @@ "IndicesPutIndexTemplateIndexTemplateMapping", " | undefined; componentTemplateRefs?: string[] | undefined; isDataStream?: boolean | undefined; }" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -972,7 +972,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 05cfd5ec31920..e84234b7c8f7f 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index cb9cccfb17deb..a53813ddb80d5 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 35014b0edd438..341a50b3adee7 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 2e2fce64e82fc..57af9da1881f6 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.devdocs.json b/api_docs/kbn_deeplinks_devtools.devdocs.json index afefcb2c8d084..4b25e29049b8a 100644 --- a/api_docs/kbn_deeplinks_devtools.devdocs.json +++ b/api_docs/kbn_deeplinks_devtools.devdocs.json @@ -32,7 +32,7 @@ "signature": [ "\"dev_tools\"" ], - "path": "packages/deeplinks/devtools/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +47,7 @@ "signature": [ "\"dev_tools\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\"" ], - "path": "packages/deeplinks/devtools/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -69,7 +69,7 @@ }, "[]" ], - "path": "packages/deeplinks/devtools/constants.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -84,7 +84,7 @@ "signature": [ "\"dev_tools\"" ], - "path": "packages/deeplinks/devtools/constants.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -99,7 +99,7 @@ "signature": [ "\"console\" | \"searchprofiler\" | \"painless_lab\" | \"grokdebugger\"" ], - "path": "packages/deeplinks/devtools/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 6218b621946d6..2134b892fe600 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index b24ee1dfcb045..3a93de8a39776 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.devdocs.json b/api_docs/kbn_deeplinks_management.devdocs.json index 379adac0327dc..ad7ee4596f7c2 100644 --- a/api_docs/kbn_deeplinks_management.devdocs.json +++ b/api_docs/kbn_deeplinks_management.devdocs.json @@ -32,7 +32,7 @@ "signature": [ "\"monitoring\" | \"management\" | \"integrations\"" ], - "path": "packages/deeplinks/management/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/management/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +47,7 @@ "signature": [ "\"fleet\" | \"monitoring\" | \"management\" | \"integrations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\"" ], - "path": "packages/deeplinks/management/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/management/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -62,7 +62,7 @@ "signature": [ "\"transform\" | \"watcher\" | \"cases\" | \"tags\" | \"maintenanceWindows\" | \"cross_cluster_replication\" | \"dataViews\" | \"spaces\" | \"settings\" | \"users\" | \"migrate_data\" | \"search_sessions\" | \"data_quality\" | \"filesManagement\" | \"pipelines\" | \"roles\" | \"reporting\" | \"aiAssistantManagementSelection\" | \"securityAiAssistantManagement\" | \"observabilityAiAssistantManagement\" | \"api_keys\" | \"license_management\" | \"index_lifecycle_management\" | \"index_management\" | \"ingest_pipelines\" | \"jobsListLink\" | \"objects\" | \"remote_clusters\" | \"role_mappings\" | \"rollup_jobs\" | \"snapshot_restore\" | \"triggersActions\" | \"triggersActionsConnectors\" | \"upgrade_assistant\"" ], - "path": "packages/deeplinks/management/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/management/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -77,7 +77,7 @@ "signature": [ "\"monitoring\"" ], - "path": "packages/deeplinks/management/constants.ts", + "path": "src/platform/packages/shared/deeplinks/management/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 5bcfb2b802902..5ac7541d3ec44 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index af32b698c4d59..17fd5cd76fda5 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.devdocs.json b/api_docs/kbn_deeplinks_observability.devdocs.json index 820e8efc49cb6..a216bffd5c68d 100644 --- a/api_docs/kbn_deeplinks_observability.devdocs.json +++ b/api_docs/kbn_deeplinks_observability.devdocs.json @@ -44,7 +44,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -55,7 +55,7 @@ "tags": [], "label": "dataStream", "description": [], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -69,7 +69,7 @@ "signature": [ "TimeRangeConfig | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -83,7 +83,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -97,7 +97,7 @@ "signature": [ "{ table?: DegradedFieldsTable | undefined; } | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -111,7 +111,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -125,7 +125,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false } @@ -156,7 +156,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/dataset_quality.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -170,7 +170,7 @@ "signature": [ "Filters | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts", "deprecated": false, "trackAdoption": false } @@ -201,7 +201,7 @@ "text": "LogsExplorerNavigationParams" } ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -248,7 +248,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -271,7 +271,7 @@ }, " | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -294,7 +294,7 @@ }, " | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -325,7 +325,7 @@ }, " | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -348,7 +348,7 @@ }, "[] | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -371,7 +371,7 @@ }, "[] | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -394,7 +394,7 @@ }, " | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -410,7 +410,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -441,7 +441,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -455,7 +455,7 @@ "signature": [ "{ id: \"application-log-onboarding\"; } | undefined" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -486,7 +486,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/observability_onboarding.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -502,7 +502,7 @@ "signature": [ "\"kubernetes\" | \"auto-detect\" | \"customLogs\" | \"otel-logs\" | \"firehose\" | undefined" ], - "path": "packages/deeplinks/observability/locators/observability_onboarding.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts", "deprecated": false, "trackAdoption": false }, @@ -516,7 +516,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/observability_onboarding.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts", "deprecated": false, "trackAdoption": false } @@ -547,7 +547,7 @@ "text": "DatasetLocatorParams" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -560,7 +560,7 @@ "description": [ "\nData view id to select" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -591,7 +591,7 @@ "text": "DatasetLocatorParams" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -607,7 +607,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -620,7 +620,7 @@ "description": [ "\nDataset name to be selected.\nex: system.syslog" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -651,7 +651,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -665,7 +665,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -679,7 +679,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -693,7 +693,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -707,7 +707,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false } @@ -738,7 +738,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -752,7 +752,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -766,7 +766,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -780,7 +780,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false } @@ -800,7 +800,7 @@ "signature": [ "\"observabilityAIAssistant\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -815,7 +815,7 @@ "signature": [ "\"ALL_DATASETS_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -844,7 +844,7 @@ "text": "ObservabilityLogsExplorerLocationState" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -857,9 +857,9 @@ "label": "AppId", "description": [], "signature": [ - "\"profiling\" | \"metrics\" | \"apm\" | \"synthetics\" | \"ux\" | \"logs\" | \"slo\" | \"observabilityAIAssistant\" | \"observability-overview\" | \"streams\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"inventory\"" + "\"profiling\" | \"metrics\" | \"apm\" | \"synthetics\" | \"ux\" | \"logs\" | \"slo\" | \"observabilityAIAssistant\" | \"observability-overview\" | \"streams\" | \"inventory\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\"" ], - "path": "packages/deeplinks/observability/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/observability/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -874,7 +874,7 @@ "signature": [ "\"DATA_QUALITY_DETAILS_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -889,7 +889,7 @@ "signature": [ "\"DATA_QUALITY_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/dataset_quality.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -918,7 +918,7 @@ "text": "ObservabilityLogsExplorerLocationState" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -940,7 +940,7 @@ }, " | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\"" ], - "path": "packages/deeplinks/observability/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/observability/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -955,7 +955,7 @@ "signature": [ "{ type: \"document-field\"; field: string; width?: number | undefined; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -978,7 +978,7 @@ }, " | undefined; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1007,7 +1007,7 @@ "text": "SmartFieldGridColumnOptions" } ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1022,7 +1022,7 @@ "signature": [ "\"last-used-logs-viewer\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1037,7 +1037,7 @@ "signature": [ "{ mode: \"include\"; values: string[]; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1052,7 +1052,7 @@ "signature": [ "\"logs\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1067,7 +1067,7 @@ "signature": [ "\"LOGS_EXPLORER_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1082,7 +1082,7 @@ "signature": [ "\"profiling\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1097,7 +1097,7 @@ "signature": [ "\"ux\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1112,7 +1112,7 @@ "signature": [ "\"OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1127,7 +1127,7 @@ "signature": [ "\"obs-logs-explorer:lastUsedViewer\"" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1142,7 +1142,7 @@ "signature": [ "\"observability-logs-explorer\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1157,7 +1157,7 @@ "signature": [ "\"observabilityOnboarding\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1172,7 +1172,7 @@ "signature": [ "\"OBSERVABILITY_ONBOARDING_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/observability_onboarding.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1187,7 +1187,7 @@ "signature": [ "\"observability-overview\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1202,7 +1202,7 @@ "signature": [ "{ pause: boolean; value: number; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1217,7 +1217,7 @@ "signature": [ "\"SINGLE_DATASET_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1232,7 +1232,7 @@ "signature": [ "{ type: \"smart-field\"; smartField: \"content\" | \"resource\"; width?: number | undefined; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1247,7 +1247,7 @@ "signature": [ "\"UPTIME_OVERVIEW_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 0047fe3a09f97..58970e23b27bc 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index b3b2a6acac31f..88bfcc997ad2d 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.devdocs.json b/api_docs/kbn_deeplinks_security.devdocs.json index 30343ed59fe16..03ce129ec8764 100644 --- a/api_docs/kbn_deeplinks_security.devdocs.json +++ b/api_docs/kbn_deeplinks_security.devdocs.json @@ -28,7 +28,7 @@ "tags": [], "label": "SecurityPageName", "description": [], - "path": "packages/deeplinks/security/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/security/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -45,7 +45,7 @@ "signature": [ "\"securitySolutionUI\"" ], - "path": "packages/deeplinks/security/index.ts", + "path": "src/platform/packages/shared/deeplinks/security/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -60,7 +60,7 @@ "signature": [ "\"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\"" ], - "path": "packages/deeplinks/security/index.ts", + "path": "src/platform/packages/shared/deeplinks/security/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -75,7 +75,7 @@ "signature": [ "\"\" | \"cases\" | \"alerts\" | \"rules\" | \"policy\" | \"overview\" | \"dashboards\" | \"kubernetes\" | \"cases_create\" | \"cases_configure\" | \"hosts\" | \"users\" | \"cloud_defend-policies\" | \"cloud_security_posture-dashboard\" | \"cloud_security_posture-findings\" | \"cloud_security_posture-benchmarks\" | \"network\" | \"data_quality\" | \"explore\" | \"assets\" | \"cloud_defend\" | \"notes\" | \"administration\" | \"attack_discovery\" | \"blocklist\" | \"cloud_security_posture-rules\" | \"detections\" | \"detection_response\" | \"endpoints\" | \"event_filters\" | \"exceptions\" | \"host_isolation_exceptions\" | \"hosts-all\" | \"hosts-anomalies\" | \"hosts-risk\" | \"hosts-events\" | \"hosts-sessions\" | \"hosts-uncommon_processes\" | \"investigations\" | \"get_started\" | \"machine_learning-landing\" | \"network-anomalies\" | \"network-dns\" | \"network-events\" | \"network-flows\" | \"network-http\" | \"network-tls\" | \"response_actions_history\" | \"rules-add\" | \"rules-create\" | \"rules-landing\" | \"siem_migrations-rules\" | \"threat_intelligence\" | \"timelines\" | \"timelines-templates\" | \"trusted_apps\" | \"users-all\" | \"users-anomalies\" | \"users-authentications\" | \"users-events\" | \"users-risk\" | \"entity_analytics\" | \"entity_analytics-management\" | \"entity_analytics-asset-classification\" | \"entity_analytics-entity_store_management\" | \"coverage-overview\"" ], - "path": "packages/deeplinks/security/index.ts", + "path": "src/platform/packages/shared/deeplinks/security/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -90,7 +90,7 @@ "signature": [ "\"securitySolutionUI\"" ], - "path": "packages/deeplinks/security/index.ts", + "path": "src/platform/packages/shared/deeplinks/security/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index c43fa4a74365a..753f6d9457ae0 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 83acd15dc1054..f54f7d7d17d51 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index db7b2f78fd2f0..4446aa8552dd0 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.devdocs.json b/api_docs/kbn_default_nav_devtools.devdocs.json index bcd3e3cd3f355..c43ca62e92353 100644 --- a/api_docs/kbn_default_nav_devtools.devdocs.json +++ b/api_docs/kbn_default_nav_devtools.devdocs.json @@ -95,7 +95,7 @@ }, ">[]; }" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -110,7 +110,7 @@ "signature": [ "\"root\" | \"rootNav:devtools\"" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -124,7 +124,7 @@ "tags": [], "label": "defaultNavigation", "description": [], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -135,7 +135,7 @@ "tags": [], "label": "title", "description": [], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -149,7 +149,7 @@ "signature": [ "\"rootNav:devtools\"" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -160,7 +160,7 @@ "tags": [], "label": "icon", "description": [], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -174,7 +174,7 @@ "signature": [ "\"accordion\"" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -188,7 +188,7 @@ "signature": [ "({ link: \"dev_tools:console\"; } | { link: \"dev_tools:searchprofiler\"; } | { link: \"dev_tools:grokdebugger\"; } | { link: \"dev_tools:painless_lab\"; })[]" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index 55d16c3017982..f713b25ce8fd9 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.devdocs.json b/api_docs/kbn_default_nav_management.devdocs.json index 601fbb8252081..66c1fcb6a18e5 100644 --- a/api_docs/kbn_default_nav_management.devdocs.json +++ b/api_docs/kbn_default_nav_management.devdocs.json @@ -95,7 +95,7 @@ }, ">[]; }" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -110,7 +110,7 @@ "signature": [ "\"ingest\" | \"kibana\" | \"data\" | \"root\" | \"rootNav:management\" | \"integration_management\" | \"stack_management\" | \"alerts_and_insights\"" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -124,7 +124,7 @@ "tags": [], "label": "defaultNavigation", "description": [], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -138,7 +138,7 @@ "signature": [ "\"rootNav:management\"" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -149,7 +149,7 @@ "tags": [], "label": "title", "description": [], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -160,7 +160,7 @@ "tags": [], "label": "icon", "description": [], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -174,7 +174,7 @@ "signature": [ "\"accordion\"" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -188,7 +188,7 @@ "signature": [ "({ link: \"monitoring\"; } | { id: \"integration_management\"; title: string; renderAs: \"accordion\"; children: ({ link: \"integrations\"; } | { link: \"fleet\"; } | { link: \"osquery\"; })[]; } | { id: \"stack_management\"; title: string; renderAs: \"accordion\"; children: ({ id: \"ingest\"; title: string; renderAs: \"accordion\"; children: ({ link: \"management:ingest_pipelines\"; } | { link: \"management:pipelines\"; })[]; } | { id: \"data\"; title: string; renderAs: \"accordion\"; children: ({ link: \"management:index_management\"; } | { link: \"management:transform\"; })[]; } | { id: \"alerts_and_insights\"; title: string; renderAs: \"accordion\"; children: ({ link: \"management:triggersActions\"; } | { link: \"management:cases\"; } | { link: \"management:triggersActionsConnectors\"; } | { link: \"management:jobsListLink\"; })[]; } | { id: \"kibana\"; title: string; renderAs: \"accordion\"; children: ({ link: \"management:dataViews\"; } | { link: \"management:aiAssistantManagementSelection\"; } | { link: \"management:objects\"; } | { link: \"management:tags\"; } | { link: \"management:spaces\"; } | { link: \"management:settings\"; })[]; })[]; })[]" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index 6c8b9026a4f9d..76803b9baf099 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index bdcd160265547..db24cdb0bb1b3 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 866e5088336f3..0f4f204982a07 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 55746584265c7..e18c4fe9232e3 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 184adee02717f..626863b889347 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 3ad4e255b7699..e92a3f6fec3e1 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_contextual_components.mdx b/api_docs/kbn_discover_contextual_components.mdx index 17f27301f23ad..a64352133cee4 100644 --- a/api_docs/kbn_discover_contextual_components.mdx +++ b/api_docs/kbn_discover_contextual_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-contextual-components title: "@kbn/discover-contextual-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-contextual-components plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-contextual-components'] --- import kbnDiscoverContextualComponentsObj from './kbn_discover_contextual_components.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.devdocs.json b/api_docs/kbn_discover_utils.devdocs.json index 9bba66acba184..c674ad6ee7279 100644 --- a/api_docs/kbn_discover_utils.devdocs.json +++ b/api_docs/kbn_discover_utils.devdocs.json @@ -2439,7 +2439,7 @@ "section": "def-common.AppMenuControlOnClickParams", "text": "AppMenuControlOnClickParams" }, - ") => void | React.ReactNode) | undefined; } & { iconType: \"string\" | \"number\" | \"function\" | \"key\" | \"namespace\" | \"error\" | \"filter\" | \"search\" | \"link\" | \"at\" | \"nested\" | \"ip\" | \"push\" | \"list\" | \"cluster\" | \"eql\" | \"index\" | \"unlink\" | \"alert\" | \"color\" | \"grid\" | \"aggregate\" | \"warning\" | \"annotation\" | \"memory\" | \"stop\" | \"stats\" | \"mobile\" | \"article\" | \"menu\" | \"image\" | \"download\" | \"document\" | \"email\" | \"copy\" | \"move\" | \"merge\" | \"partial\" | \"container\" | \"user\" | \"pause\" | \"share\" | \"home\" | \"spaces\" | \"package\" | \"tag\" | \"beta\" | \"users\" | \"brush\" | \"percent\" | \"temperature\" | \"accessibility\" | \"addDataApp\" | \"advancedSettingsApp\" | \"agentApp\" | \"analyzeEvent\" | \"anomalyChart\" | \"anomalySwimLane\" | \"apmApp\" | \"apmTrace\" | \"appSearchApp\" | \"apps\" | \"arrowDown\" | \"arrowLeft\" | \"arrowRight\" | \"arrowUp\" | \"arrowStart\" | \"arrowEnd\" | \"asterisk\" | \"auditbeatApp\" | \"beaker\" | \"bell\" | \"bellSlash\" | \"bolt\" | \"boxesHorizontal\" | \"boxesVertical\" | \"branch\" | \"branchUser\" | \"broom\" | \"bug\" | \"bullseye\" | \"calendar\" | \"canvasApp\" | \"casesApp\" | \"changePointDetection\" | \"check\" | \"checkInCircleFilled\" | \"cheer\" | \"classificationJob\" | \"clickLeft\" | \"clickRight\" | \"clock\" | \"clockCounter\" | \"cloudDrizzle\" | \"cloudStormy\" | \"cloudSunny\" | \"codeApp\" | \"compute\" | \"console\" | \"consoleApp\" | \"continuityAbove\" | \"continuityAboveBelow\" | \"continuityBelow\" | \"continuityWithin\" | \"controlsHorizontal\" | \"controlsVertical\" | \"copyClipboard\" | \"createAdvancedJob\" | \"createMultiMetricJob\" | \"createPopulationJob\" | \"createSingleMetricJob\" | \"cross\" | \"crossClusterReplicationApp\" | \"crossInCircle\" | \"crosshairs\" | \"currency\" | \"cut\" | \"dashboardApp\" | \"dataVisualizer\" | \"database\" | \"desktop\" | \"devToolsApp\" | \"diff\" | \"discoverApp\" | \"discuss\" | \"documentEdit\" | \"documentation\" | \"documents\" | \"dot\" | \"dotInCircle\" | \"doubleArrowLeft\" | \"doubleArrowRight\" | \"editorAlignCenter\" | \"editorAlignLeft\" | \"editorAlignRight\" | \"editorBold\" | \"editorChecklist\" | \"editorCodeBlock\" | \"editorComment\" | \"editorDistributeHorizontal\" | \"editorDistributeVertical\" | \"editorHeading\" | \"editorItalic\" | \"editorItemAlignBottom\" | \"editorItemAlignCenter\" | \"editorItemAlignLeft\" | \"editorItemAlignMiddle\" | \"editorItemAlignRight\" | \"editorItemAlignTop\" | \"editorLink\" | \"editorOrderedList\" | \"editorPositionBottomLeft\" | \"editorPositionBottomRight\" | \"editorPositionTopLeft\" | \"editorPositionTopRight\" | \"editorRedo\" | \"editorStrike\" | \"editorTable\" | \"editorUnderline\" | \"editorUndo\" | \"editorUnorderedList\" | \"empty\" | \"emsApp\" | \"endpoint\" | \"eraser\" | \"errorFilled\" | \"esqlVis\" | \"exit\" | \"expand\" | \"expandMini\" | \"exportAction\" | \"eye\" | \"eyeClosed\" | \"faceHappy\" | \"faceNeutral\" | \"faceSad\" | \"fieldStatistics\" | \"filebeatApp\" | \"filterExclude\" | \"filterIgnore\" | \"filterInclude\" | \"filterInCircle\" | \"flag\" | \"fleetApp\" | \"fold\" | \"folderCheck\" | \"folderClosed\" | \"folderExclamation\" | \"folderOpen\" | \"frameNext\" | \"framePrevious\" | \"fullScreen\" | \"fullScreenExit\" | \"gear\" | \"gisApp\" | \"glasses\" | \"globe\" | \"grab\" | \"grabHorizontal\" | \"grabOmnidirectional\" | \"gradient\" | \"graphApp\" | \"grokApp\" | \"heart\" | \"heartbeatApp\" | \"heatmap\" | \"help\" | \"iInCircle\" | \"importAction\" | \"indexClose\" | \"indexEdit\" | \"indexFlush\" | \"indexManagementApp\" | \"indexMapping\" | \"indexOpen\" | \"indexPatternApp\" | \"indexRollupApp\" | \"indexRuntime\" | \"indexSettings\" | \"indexTemporary\" | \"infinity\" | \"inputOutput\" | \"inspect\" | \"invert\" | \"keyboard\" | \"kqlField\" | \"kqlFunction\" | \"kqlOperand\" | \"kqlSelector\" | \"kqlValue\" | \"kubernetesNode\" | \"kubernetesPod\" | \"launch\" | \"layers\" | \"lensApp\" | \"lettering\" | \"lineDashed\" | \"lineDotted\" | \"lineSolid\" | \"listAdd\" | \"lock\" | \"lockOpen\" | \"logPatternAnalysis\" | \"logRateAnalysis\" | \"logoAWS\" | \"logoAWSMono\" | \"logoAerospike\" | \"logoApache\" | \"logoAppSearch\" | \"logoAzure\" | \"logoAzureMono\" | \"logoBeats\" | \"logoBusinessAnalytics\" | \"logoCeph\" | \"logoCloud\" | \"logoCloudEnterprise\" | \"logoCode\" | \"logoCodesandbox\" | \"logoCouchbase\" | \"logoDocker\" | \"logoDropwizard\" | \"logoElastic\" | \"logoElasticStack\" | \"logoElasticsearch\" | \"logoEnterpriseSearch\" | \"logoEtcd\" | \"logoGCP\" | \"logoGCPMono\" | \"logoGithub\" | \"logoGmail\" | \"logoGolang\" | \"logoGoogleG\" | \"logoHAproxy\" | \"logoIBM\" | \"logoIBMMono\" | \"logoKafka\" | \"logoKibana\" | \"logoKubernetes\" | \"logoLogging\" | \"logoLogstash\" | \"logoMaps\" | \"logoMemcached\" | \"logoMetrics\" | \"logoMongodb\" | \"logoMySQL\" | \"logoNginx\" | \"logoObservability\" | \"logoOsquery\" | \"logoPhp\" | \"logoPostgres\" | \"logoPrometheus\" | \"logoRabbitmq\" | \"logoRedis\" | \"logoSecurity\" | \"logoSiteSearch\" | \"logoSketch\" | \"logoSlack\" | \"logoUptime\" | \"logoVulnerabilityManagement\" | \"logoWebhook\" | \"logoWindows\" | \"logoWorkplaceSearch\" | \"logsApp\" | \"logstashFilter\" | \"logstashIf\" | \"logstashInput\" | \"logstashOutput\" | \"logstashQueue\" | \"machineLearningApp\" | \"magnet\" | \"magnifyWithExclamation\" | \"magnifyWithMinus\" | \"magnifyWithPlus\" | \"managementApp\" | \"mapMarker\" | \"menuDown\" | \"menuLeft\" | \"menuRight\" | \"menuUp\" | \"metricbeatApp\" | \"metricsApp\" | \"minimize\" | \"minus\" | \"minusInCircle\" | \"minusInCircleFilled\" | \"minusInSquare\" | \"monitoringApp\" | \"moon\" | \"newChat\" | \"node\" | \"notebookApp\" | \"offline\" | \"online\" | \"outlierDetectionJob\" | \"packetbeatApp\" | \"pageSelect\" | \"pagesSelect\" | \"palette\" | \"paperClip\" | \"payment\" | \"pencil\" | \"pin\" | \"pinFilled\" | \"pipeBreaks\" | \"pipelineApp\" | \"pipeNoBreaks\" | \"pivot\" | \"play\" | \"playFilled\" | \"plus\" | \"plusInCircle\" | \"plusInCircleFilled\" | \"plusInSquare\" | \"popout\" | \"questionInCircle\" | \"quote\" | \"recentlyViewedApp\" | \"refresh\" | \"regressionJob\" | \"reporter\" | \"reportingApp\" | \"returnKey\" | \"save\" | \"savedObjectsApp\" | \"scale\" | \"searchProfilerApp\" | \"securityAnalyticsApp\" | \"securityApp\" | \"securitySignal\" | \"securitySignalDetected\" | \"securitySignalResolved\" | \"sessionViewer\" | \"shard\" | \"singleMetricViewer\" | \"snowflake\" | \"sortAscending\" | \"sortDescending\" | \"sortDown\" | \"sortLeft\" | \"sortRight\" | \"sortUp\" | \"sortable\" | \"spacesApp\" | \"sparkles\" | \"sqlApp\" | \"starEmpty\" | \"starEmptySpace\" | \"starFilled\" | \"starFilledSpace\" | \"starMinusEmpty\" | \"starMinusFilled\" | \"starPlusEmpty\" | \"starPlusFilled\" | \"stopFilled\" | \"stopSlash\" | \"storage\" | \"submodule\" | \"sun\" | \"swatchInput\" | \"symlink\" | \"tableDensityCompact\" | \"tableDensityExpanded\" | \"tableDensityNormal\" | \"tableOfContents\" | \"tear\" | \"timeline\" | \"timelineWithArrow\" | \"timelionApp\" | \"timeRefresh\" | \"timeslider\" | \"training\" | \"transitionLeftIn\" | \"transitionLeftOut\" | \"transitionTopIn\" | \"transitionTopOut\" | \"trash\" | \"unfold\" | \"upgradeAssistantApp\" | \"uptimeApp\" | \"userAvatar\" | \"usersRolesApp\" | \"vector\" | \"videoPlayer\" | \"visArea\" | \"visAreaStacked\" | \"visBarHorizontal\" | \"visBarHorizontalStacked\" | \"visBarVertical\" | \"visBarVerticalStacked\" | \"visGauge\" | \"visGoal\" | \"visLine\" | \"visMapCoordinate\" | \"visMapRegion\" | \"visMetric\" | \"visPie\" | \"visTable\" | \"visTagCloud\" | \"visText\" | \"visTimelion\" | \"visVega\" | \"visVisualBuilder\" | \"visualizeApp\" | \"vulnerabilityManagementApp\" | \"warningFilled\" | \"watchesApp\" | \"wordWrap\" | \"wordWrapDisabled\" | \"workplaceSearchApp\" | \"wrench\" | \"tokenAlias\" | \"tokenAnnotation\" | \"tokenArray\" | \"tokenBinary\" | \"tokenBoolean\" | \"tokenClass\" | \"tokenCompletionSuggester\" | \"tokenConstant\" | \"tokenDate\" | \"tokenDimension\" | \"tokenElement\" | \"tokenEnum\" | \"tokenEnumMember\" | \"tokenEvent\" | \"tokenException\" | \"tokenField\" | \"tokenFile\" | \"tokenFlattened\" | \"tokenFunction\" | \"tokenGeo\" | \"tokenHistogram\" | \"tokenInterface\" | \"tokenIP\" | \"tokenJoin\" | \"tokenKey\" | \"tokenKeyword\" | \"tokenMethod\" | \"tokenMetricCounter\" | \"tokenMetricGauge\" | \"tokenModule\" | \"tokenNamespace\" | \"tokenNested\" | \"tokenNull\" | \"tokenNumber\" | \"tokenObject\" | \"tokenOperator\" | \"tokenPackage\" | \"tokenParameter\" | \"tokenPercolator\" | \"tokenProperty\" | \"tokenRange\" | \"tokenRankFeature\" | \"tokenRankFeatures\" | \"tokenRepo\" | \"tokenSearchType\" | \"tokenSemanticText\" | \"tokenShape\" | \"tokenString\" | \"tokenStruct\" | \"tokenSymbol\" | \"tokenTag\" | \"tokenText\" | \"tokenTokenCount\" | \"tokenVariable\" | \"tokenVectorDense\" | \"tokenDenseVector\" | \"tokenVectorSparse\"; }" + ") => void | React.ReactNode) | undefined; } & { iconType: \"string\" | \"number\" | \"function\" | \"key\" | \"namespace\" | \"error\" | \"filter\" | \"search\" | \"link\" | \"at\" | \"nested\" | \"ip\" | \"push\" | \"list\" | \"cluster\" | \"eql\" | \"index\" | \"unlink\" | \"alert\" | \"color\" | \"grid\" | \"aggregate\" | \"warning\" | \"annotation\" | \"memory\" | \"stats\" | \"mobile\" | \"article\" | \"menu\" | \"image\" | \"stop\" | \"download\" | \"document\" | \"email\" | \"copy\" | \"move\" | \"merge\" | \"partial\" | \"container\" | \"user\" | \"pause\" | \"share\" | \"home\" | \"spaces\" | \"package\" | \"tag\" | \"beta\" | \"users\" | \"brush\" | \"percent\" | \"temperature\" | \"accessibility\" | \"addDataApp\" | \"advancedSettingsApp\" | \"agentApp\" | \"analyzeEvent\" | \"anomalyChart\" | \"anomalySwimLane\" | \"apmApp\" | \"apmTrace\" | \"appSearchApp\" | \"apps\" | \"arrowDown\" | \"arrowLeft\" | \"arrowRight\" | \"arrowUp\" | \"arrowStart\" | \"arrowEnd\" | \"asterisk\" | \"auditbeatApp\" | \"beaker\" | \"bell\" | \"bellSlash\" | \"bolt\" | \"boxesHorizontal\" | \"boxesVertical\" | \"branch\" | \"branchUser\" | \"broom\" | \"bug\" | \"bullseye\" | \"calendar\" | \"canvasApp\" | \"casesApp\" | \"changePointDetection\" | \"check\" | \"checkInCircleFilled\" | \"cheer\" | \"classificationJob\" | \"clickLeft\" | \"clickRight\" | \"clock\" | \"clockCounter\" | \"cloudDrizzle\" | \"cloudStormy\" | \"cloudSunny\" | \"codeApp\" | \"compute\" | \"console\" | \"consoleApp\" | \"continuityAbove\" | \"continuityAboveBelow\" | \"continuityBelow\" | \"continuityWithin\" | \"controlsHorizontal\" | \"controlsVertical\" | \"copyClipboard\" | \"createAdvancedJob\" | \"createMultiMetricJob\" | \"createPopulationJob\" | \"createSingleMetricJob\" | \"cross\" | \"crossClusterReplicationApp\" | \"crossInCircle\" | \"crosshairs\" | \"currency\" | \"cut\" | \"dashboardApp\" | \"dataVisualizer\" | \"database\" | \"desktop\" | \"devToolsApp\" | \"diff\" | \"discoverApp\" | \"discuss\" | \"documentEdit\" | \"documentation\" | \"documents\" | \"dot\" | \"dotInCircle\" | \"doubleArrowLeft\" | \"doubleArrowRight\" | \"editorAlignCenter\" | \"editorAlignLeft\" | \"editorAlignRight\" | \"editorBold\" | \"editorChecklist\" | \"editorCodeBlock\" | \"editorComment\" | \"editorDistributeHorizontal\" | \"editorDistributeVertical\" | \"editorHeading\" | \"editorItalic\" | \"editorItemAlignBottom\" | \"editorItemAlignCenter\" | \"editorItemAlignLeft\" | \"editorItemAlignMiddle\" | \"editorItemAlignRight\" | \"editorItemAlignTop\" | \"editorLink\" | \"editorOrderedList\" | \"editorPositionBottomLeft\" | \"editorPositionBottomRight\" | \"editorPositionTopLeft\" | \"editorPositionTopRight\" | \"editorRedo\" | \"editorStrike\" | \"editorTable\" | \"editorUnderline\" | \"editorUndo\" | \"editorUnorderedList\" | \"empty\" | \"emsApp\" | \"endpoint\" | \"eraser\" | \"errorFilled\" | \"esqlVis\" | \"exit\" | \"expand\" | \"expandMini\" | \"exportAction\" | \"eye\" | \"eyeClosed\" | \"faceHappy\" | \"faceNeutral\" | \"faceSad\" | \"fieldStatistics\" | \"filebeatApp\" | \"filterExclude\" | \"filterIgnore\" | \"filterInclude\" | \"filterInCircle\" | \"flag\" | \"fleetApp\" | \"fold\" | \"folderCheck\" | \"folderClosed\" | \"folderExclamation\" | \"folderOpen\" | \"frameNext\" | \"framePrevious\" | \"fullScreen\" | \"fullScreenExit\" | \"gear\" | \"gisApp\" | \"glasses\" | \"globe\" | \"grab\" | \"grabHorizontal\" | \"grabOmnidirectional\" | \"gradient\" | \"graphApp\" | \"grokApp\" | \"heart\" | \"heartbeatApp\" | \"heatmap\" | \"help\" | \"iInCircle\" | \"importAction\" | \"indexClose\" | \"indexEdit\" | \"indexFlush\" | \"indexManagementApp\" | \"indexMapping\" | \"indexOpen\" | \"indexPatternApp\" | \"indexRollupApp\" | \"indexRuntime\" | \"indexSettings\" | \"indexTemporary\" | \"infinity\" | \"inputOutput\" | \"inspect\" | \"invert\" | \"keyboard\" | \"kqlField\" | \"kqlFunction\" | \"kqlOperand\" | \"kqlSelector\" | \"kqlValue\" | \"kubernetesNode\" | \"kubernetesPod\" | \"launch\" | \"layers\" | \"lensApp\" | \"lettering\" | \"lineDashed\" | \"lineDotted\" | \"lineSolid\" | \"listAdd\" | \"lock\" | \"lockOpen\" | \"logPatternAnalysis\" | \"logRateAnalysis\" | \"logoAWS\" | \"logoAWSMono\" | \"logoAerospike\" | \"logoApache\" | \"logoAppSearch\" | \"logoAzure\" | \"logoAzureMono\" | \"logoBeats\" | \"logoBusinessAnalytics\" | \"logoCeph\" | \"logoCloud\" | \"logoCloudEnterprise\" | \"logoCode\" | \"logoCodesandbox\" | \"logoCouchbase\" | \"logoDocker\" | \"logoDropwizard\" | \"logoElastic\" | \"logoElasticStack\" | \"logoElasticsearch\" | \"logoEnterpriseSearch\" | \"logoEtcd\" | \"logoGCP\" | \"logoGCPMono\" | \"logoGithub\" | \"logoGmail\" | \"logoGolang\" | \"logoGoogleG\" | \"logoHAproxy\" | \"logoIBM\" | \"logoIBMMono\" | \"logoKafka\" | \"logoKibana\" | \"logoKubernetes\" | \"logoLogging\" | \"logoLogstash\" | \"logoMaps\" | \"logoMemcached\" | \"logoMetrics\" | \"logoMongodb\" | \"logoMySQL\" | \"logoNginx\" | \"logoObservability\" | \"logoOsquery\" | \"logoPhp\" | \"logoPostgres\" | \"logoPrometheus\" | \"logoRabbitmq\" | \"logoRedis\" | \"logoSecurity\" | \"logoSiteSearch\" | \"logoSketch\" | \"logoSlack\" | \"logoUptime\" | \"logoVulnerabilityManagement\" | \"logoWebhook\" | \"logoWindows\" | \"logoWorkplaceSearch\" | \"logsApp\" | \"logstashFilter\" | \"logstashIf\" | \"logstashInput\" | \"logstashOutput\" | \"logstashQueue\" | \"machineLearningApp\" | \"magnet\" | \"magnifyWithExclamation\" | \"magnifyWithMinus\" | \"magnifyWithPlus\" | \"managementApp\" | \"mapMarker\" | \"menuDown\" | \"menuLeft\" | \"menuRight\" | \"menuUp\" | \"metricbeatApp\" | \"metricsApp\" | \"minimize\" | \"minus\" | \"minusInCircle\" | \"minusInCircleFilled\" | \"minusInSquare\" | \"monitoringApp\" | \"moon\" | \"newChat\" | \"node\" | \"notebookApp\" | \"offline\" | \"online\" | \"outlierDetectionJob\" | \"packetbeatApp\" | \"pageSelect\" | \"pagesSelect\" | \"palette\" | \"paperClip\" | \"payment\" | \"pencil\" | \"pin\" | \"pinFilled\" | \"pipeBreaks\" | \"pipelineApp\" | \"pipeNoBreaks\" | \"pivot\" | \"play\" | \"playFilled\" | \"plus\" | \"plusInCircle\" | \"plusInCircleFilled\" | \"plusInSquare\" | \"popout\" | \"questionInCircle\" | \"quote\" | \"recentlyViewedApp\" | \"refresh\" | \"regressionJob\" | \"reporter\" | \"reportingApp\" | \"returnKey\" | \"save\" | \"savedObjectsApp\" | \"scale\" | \"searchProfilerApp\" | \"securityAnalyticsApp\" | \"securityApp\" | \"securitySignal\" | \"securitySignalDetected\" | \"securitySignalResolved\" | \"sessionViewer\" | \"shard\" | \"singleMetricViewer\" | \"snowflake\" | \"sortAscending\" | \"sortDescending\" | \"sortDown\" | \"sortLeft\" | \"sortRight\" | \"sortUp\" | \"sortable\" | \"spacesApp\" | \"sparkles\" | \"sqlApp\" | \"starEmpty\" | \"starEmptySpace\" | \"starFilled\" | \"starFilledSpace\" | \"starMinusEmpty\" | \"starMinusFilled\" | \"starPlusEmpty\" | \"starPlusFilled\" | \"stopFilled\" | \"stopSlash\" | \"storage\" | \"submodule\" | \"sun\" | \"swatchInput\" | \"symlink\" | \"tableDensityCompact\" | \"tableDensityExpanded\" | \"tableDensityNormal\" | \"tableOfContents\" | \"tear\" | \"timeline\" | \"timelineWithArrow\" | \"timelionApp\" | \"timeRefresh\" | \"timeslider\" | \"training\" | \"transitionLeftIn\" | \"transitionLeftOut\" | \"transitionTopIn\" | \"transitionTopOut\" | \"trash\" | \"unfold\" | \"upgradeAssistantApp\" | \"uptimeApp\" | \"userAvatar\" | \"usersRolesApp\" | \"vector\" | \"videoPlayer\" | \"visArea\" | \"visAreaStacked\" | \"visBarHorizontal\" | \"visBarHorizontalStacked\" | \"visBarVertical\" | \"visBarVerticalStacked\" | \"visGauge\" | \"visGoal\" | \"visLine\" | \"visMapCoordinate\" | \"visMapRegion\" | \"visMetric\" | \"visPie\" | \"visTable\" | \"visTagCloud\" | \"visText\" | \"visTimelion\" | \"visVega\" | \"visVisualBuilder\" | \"visualizeApp\" | \"vulnerabilityManagementApp\" | \"warningFilled\" | \"watchesApp\" | \"wordWrap\" | \"wordWrapDisabled\" | \"workplaceSearchApp\" | \"wrench\" | \"tokenAlias\" | \"tokenAnnotation\" | \"tokenArray\" | \"tokenBinary\" | \"tokenBoolean\" | \"tokenClass\" | \"tokenCompletionSuggester\" | \"tokenConstant\" | \"tokenDate\" | \"tokenDimension\" | \"tokenElement\" | \"tokenEnum\" | \"tokenEnumMember\" | \"tokenEvent\" | \"tokenException\" | \"tokenField\" | \"tokenFile\" | \"tokenFlattened\" | \"tokenFunction\" | \"tokenGeo\" | \"tokenHistogram\" | \"tokenInterface\" | \"tokenIP\" | \"tokenJoin\" | \"tokenKey\" | \"tokenKeyword\" | \"tokenMethod\" | \"tokenMetricCounter\" | \"tokenMetricGauge\" | \"tokenModule\" | \"tokenNamespace\" | \"tokenNested\" | \"tokenNull\" | \"tokenNumber\" | \"tokenObject\" | \"tokenOperator\" | \"tokenPackage\" | \"tokenParameter\" | \"tokenPercolator\" | \"tokenProperty\" | \"tokenRange\" | \"tokenRankFeature\" | \"tokenRankFeatures\" | \"tokenRepo\" | \"tokenSearchType\" | \"tokenSemanticText\" | \"tokenShape\" | \"tokenString\" | \"tokenStruct\" | \"tokenSymbol\" | \"tokenTag\" | \"tokenText\" | \"tokenTokenCount\" | \"tokenVariable\" | \"tokenVectorDense\" | \"tokenDenseVector\" | \"tokenVectorSparse\"; }" ], "path": "packages/kbn-discover-utils/src/components/app_menu/types.ts", "deprecated": false, @@ -4146,7 +4146,7 @@ "section": "def-common.AppMenuControlOnClickParams", "text": "AppMenuControlOnClickParams" }, - ") => void | React.ReactNode) | undefined; } & { iconType: \"string\" | \"number\" | \"function\" | \"key\" | \"namespace\" | \"error\" | \"filter\" | \"search\" | \"link\" | \"at\" | \"nested\" | \"ip\" | \"push\" | \"list\" | \"cluster\" | \"eql\" | \"index\" | \"unlink\" | \"alert\" | \"color\" | \"grid\" | \"aggregate\" | \"warning\" | \"annotation\" | \"memory\" | \"stop\" | \"stats\" | \"mobile\" | \"article\" | \"menu\" | \"image\" | \"download\" | \"document\" | \"email\" | \"copy\" | \"move\" | \"merge\" | \"partial\" | \"container\" | \"user\" | \"pause\" | \"share\" | \"home\" | \"spaces\" | \"package\" | \"tag\" | \"beta\" | \"users\" | \"brush\" | \"percent\" | \"temperature\" | \"accessibility\" | \"addDataApp\" | \"advancedSettingsApp\" | \"agentApp\" | \"analyzeEvent\" | \"anomalyChart\" | \"anomalySwimLane\" | \"apmApp\" | \"apmTrace\" | \"appSearchApp\" | \"apps\" | \"arrowDown\" | \"arrowLeft\" | \"arrowRight\" | \"arrowUp\" | \"arrowStart\" | \"arrowEnd\" | \"asterisk\" | \"auditbeatApp\" | \"beaker\" | \"bell\" | \"bellSlash\" | \"bolt\" | \"boxesHorizontal\" | \"boxesVertical\" | \"branch\" | \"branchUser\" | \"broom\" | \"bug\" | \"bullseye\" | \"calendar\" | \"canvasApp\" | \"casesApp\" | \"changePointDetection\" | \"check\" | \"checkInCircleFilled\" | \"cheer\" | \"classificationJob\" | \"clickLeft\" | \"clickRight\" | \"clock\" | \"clockCounter\" | \"cloudDrizzle\" | \"cloudStormy\" | \"cloudSunny\" | \"codeApp\" | \"compute\" | \"console\" | \"consoleApp\" | \"continuityAbove\" | \"continuityAboveBelow\" | \"continuityBelow\" | \"continuityWithin\" | \"controlsHorizontal\" | \"controlsVertical\" | \"copyClipboard\" | \"createAdvancedJob\" | \"createMultiMetricJob\" | \"createPopulationJob\" | \"createSingleMetricJob\" | \"cross\" | \"crossClusterReplicationApp\" | \"crossInCircle\" | \"crosshairs\" | \"currency\" | \"cut\" | \"dashboardApp\" | \"dataVisualizer\" | \"database\" | \"desktop\" | \"devToolsApp\" | \"diff\" | \"discoverApp\" | \"discuss\" | \"documentEdit\" | \"documentation\" | \"documents\" | \"dot\" | \"dotInCircle\" | \"doubleArrowLeft\" | \"doubleArrowRight\" | \"editorAlignCenter\" | \"editorAlignLeft\" | \"editorAlignRight\" | \"editorBold\" | \"editorChecklist\" | \"editorCodeBlock\" | \"editorComment\" | \"editorDistributeHorizontal\" | \"editorDistributeVertical\" | \"editorHeading\" | \"editorItalic\" | \"editorItemAlignBottom\" | \"editorItemAlignCenter\" | \"editorItemAlignLeft\" | \"editorItemAlignMiddle\" | \"editorItemAlignRight\" | \"editorItemAlignTop\" | \"editorLink\" | \"editorOrderedList\" | \"editorPositionBottomLeft\" | \"editorPositionBottomRight\" | \"editorPositionTopLeft\" | \"editorPositionTopRight\" | \"editorRedo\" | \"editorStrike\" | \"editorTable\" | \"editorUnderline\" | \"editorUndo\" | \"editorUnorderedList\" | \"empty\" | \"emsApp\" | \"endpoint\" | \"eraser\" | \"errorFilled\" | \"esqlVis\" | \"exit\" | \"expand\" | \"expandMini\" | \"exportAction\" | \"eye\" | \"eyeClosed\" | \"faceHappy\" | \"faceNeutral\" | \"faceSad\" | \"fieldStatistics\" | \"filebeatApp\" | \"filterExclude\" | \"filterIgnore\" | \"filterInclude\" | \"filterInCircle\" | \"flag\" | \"fleetApp\" | \"fold\" | \"folderCheck\" | \"folderClosed\" | \"folderExclamation\" | \"folderOpen\" | \"frameNext\" | \"framePrevious\" | \"fullScreen\" | \"fullScreenExit\" | \"gear\" | \"gisApp\" | \"glasses\" | \"globe\" | \"grab\" | \"grabHorizontal\" | \"grabOmnidirectional\" | \"gradient\" | \"graphApp\" | \"grokApp\" | \"heart\" | \"heartbeatApp\" | \"heatmap\" | \"help\" | \"iInCircle\" | \"importAction\" | \"indexClose\" | \"indexEdit\" | \"indexFlush\" | \"indexManagementApp\" | \"indexMapping\" | \"indexOpen\" | \"indexPatternApp\" | \"indexRollupApp\" | \"indexRuntime\" | \"indexSettings\" | \"indexTemporary\" | \"infinity\" | \"inputOutput\" | \"inspect\" | \"invert\" | \"keyboard\" | \"kqlField\" | \"kqlFunction\" | \"kqlOperand\" | \"kqlSelector\" | \"kqlValue\" | \"kubernetesNode\" | \"kubernetesPod\" | \"launch\" | \"layers\" | \"lensApp\" | \"lettering\" | \"lineDashed\" | \"lineDotted\" | \"lineSolid\" | \"listAdd\" | \"lock\" | \"lockOpen\" | \"logPatternAnalysis\" | \"logRateAnalysis\" | \"logoAWS\" | \"logoAWSMono\" | \"logoAerospike\" | \"logoApache\" | \"logoAppSearch\" | \"logoAzure\" | \"logoAzureMono\" | \"logoBeats\" | \"logoBusinessAnalytics\" | \"logoCeph\" | \"logoCloud\" | \"logoCloudEnterprise\" | \"logoCode\" | \"logoCodesandbox\" | \"logoCouchbase\" | \"logoDocker\" | \"logoDropwizard\" | \"logoElastic\" | \"logoElasticStack\" | \"logoElasticsearch\" | \"logoEnterpriseSearch\" | \"logoEtcd\" | \"logoGCP\" | \"logoGCPMono\" | \"logoGithub\" | \"logoGmail\" | \"logoGolang\" | \"logoGoogleG\" | \"logoHAproxy\" | \"logoIBM\" | \"logoIBMMono\" | \"logoKafka\" | \"logoKibana\" | \"logoKubernetes\" | \"logoLogging\" | \"logoLogstash\" | \"logoMaps\" | \"logoMemcached\" | \"logoMetrics\" | \"logoMongodb\" | \"logoMySQL\" | \"logoNginx\" | \"logoObservability\" | \"logoOsquery\" | \"logoPhp\" | \"logoPostgres\" | \"logoPrometheus\" | \"logoRabbitmq\" | \"logoRedis\" | \"logoSecurity\" | \"logoSiteSearch\" | \"logoSketch\" | \"logoSlack\" | \"logoUptime\" | \"logoVulnerabilityManagement\" | \"logoWebhook\" | \"logoWindows\" | \"logoWorkplaceSearch\" | \"logsApp\" | \"logstashFilter\" | \"logstashIf\" | \"logstashInput\" | \"logstashOutput\" | \"logstashQueue\" | \"machineLearningApp\" | \"magnet\" | \"magnifyWithExclamation\" | \"magnifyWithMinus\" | \"magnifyWithPlus\" | \"managementApp\" | \"mapMarker\" | \"menuDown\" | \"menuLeft\" | \"menuRight\" | \"menuUp\" | \"metricbeatApp\" | \"metricsApp\" | \"minimize\" | \"minus\" | \"minusInCircle\" | \"minusInCircleFilled\" | \"minusInSquare\" | \"monitoringApp\" | \"moon\" | \"newChat\" | \"node\" | \"notebookApp\" | \"offline\" | \"online\" | \"outlierDetectionJob\" | \"packetbeatApp\" | \"pageSelect\" | \"pagesSelect\" | \"palette\" | \"paperClip\" | \"payment\" | \"pencil\" | \"pin\" | \"pinFilled\" | \"pipeBreaks\" | \"pipelineApp\" | \"pipeNoBreaks\" | \"pivot\" | \"play\" | \"playFilled\" | \"plus\" | \"plusInCircle\" | \"plusInCircleFilled\" | \"plusInSquare\" | \"popout\" | \"questionInCircle\" | \"quote\" | \"recentlyViewedApp\" | \"refresh\" | \"regressionJob\" | \"reporter\" | \"reportingApp\" | \"returnKey\" | \"save\" | \"savedObjectsApp\" | \"scale\" | \"searchProfilerApp\" | \"securityAnalyticsApp\" | \"securityApp\" | \"securitySignal\" | \"securitySignalDetected\" | \"securitySignalResolved\" | \"sessionViewer\" | \"shard\" | \"singleMetricViewer\" | \"snowflake\" | \"sortAscending\" | \"sortDescending\" | \"sortDown\" | \"sortLeft\" | \"sortRight\" | \"sortUp\" | \"sortable\" | \"spacesApp\" | \"sparkles\" | \"sqlApp\" | \"starEmpty\" | \"starEmptySpace\" | \"starFilled\" | \"starFilledSpace\" | \"starMinusEmpty\" | \"starMinusFilled\" | \"starPlusEmpty\" | \"starPlusFilled\" | \"stopFilled\" | \"stopSlash\" | \"storage\" | \"submodule\" | \"sun\" | \"swatchInput\" | \"symlink\" | \"tableDensityCompact\" | \"tableDensityExpanded\" | \"tableDensityNormal\" | \"tableOfContents\" | \"tear\" | \"timeline\" | \"timelineWithArrow\" | \"timelionApp\" | \"timeRefresh\" | \"timeslider\" | \"training\" | \"transitionLeftIn\" | \"transitionLeftOut\" | \"transitionTopIn\" | \"transitionTopOut\" | \"trash\" | \"unfold\" | \"upgradeAssistantApp\" | \"uptimeApp\" | \"userAvatar\" | \"usersRolesApp\" | \"vector\" | \"videoPlayer\" | \"visArea\" | \"visAreaStacked\" | \"visBarHorizontal\" | \"visBarHorizontalStacked\" | \"visBarVertical\" | \"visBarVerticalStacked\" | \"visGauge\" | \"visGoal\" | \"visLine\" | \"visMapCoordinate\" | \"visMapRegion\" | \"visMetric\" | \"visPie\" | \"visTable\" | \"visTagCloud\" | \"visText\" | \"visTimelion\" | \"visVega\" | \"visVisualBuilder\" | \"visualizeApp\" | \"vulnerabilityManagementApp\" | \"warningFilled\" | \"watchesApp\" | \"wordWrap\" | \"wordWrapDisabled\" | \"workplaceSearchApp\" | \"wrench\" | \"tokenAlias\" | \"tokenAnnotation\" | \"tokenArray\" | \"tokenBinary\" | \"tokenBoolean\" | \"tokenClass\" | \"tokenCompletionSuggester\" | \"tokenConstant\" | \"tokenDate\" | \"tokenDimension\" | \"tokenElement\" | \"tokenEnum\" | \"tokenEnumMember\" | \"tokenEvent\" | \"tokenException\" | \"tokenField\" | \"tokenFile\" | \"tokenFlattened\" | \"tokenFunction\" | \"tokenGeo\" | \"tokenHistogram\" | \"tokenInterface\" | \"tokenIP\" | \"tokenJoin\" | \"tokenKey\" | \"tokenKeyword\" | \"tokenMethod\" | \"tokenMetricCounter\" | \"tokenMetricGauge\" | \"tokenModule\" | \"tokenNamespace\" | \"tokenNested\" | \"tokenNull\" | \"tokenNumber\" | \"tokenObject\" | \"tokenOperator\" | \"tokenPackage\" | \"tokenParameter\" | \"tokenPercolator\" | \"tokenProperty\" | \"tokenRange\" | \"tokenRankFeature\" | \"tokenRankFeatures\" | \"tokenRepo\" | \"tokenSearchType\" | \"tokenSemanticText\" | \"tokenShape\" | \"tokenString\" | \"tokenStruct\" | \"tokenSymbol\" | \"tokenTag\" | \"tokenText\" | \"tokenTokenCount\" | \"tokenVariable\" | \"tokenVectorDense\" | \"tokenDenseVector\" | \"tokenVectorSparse\"; }" + ") => void | React.ReactNode) | undefined; } & { iconType: \"string\" | \"number\" | \"function\" | \"key\" | \"namespace\" | \"error\" | \"filter\" | \"search\" | \"link\" | \"at\" | \"nested\" | \"ip\" | \"push\" | \"list\" | \"cluster\" | \"eql\" | \"index\" | \"unlink\" | \"alert\" | \"color\" | \"grid\" | \"aggregate\" | \"warning\" | \"annotation\" | \"memory\" | \"stats\" | \"mobile\" | \"article\" | \"menu\" | \"image\" | \"stop\" | \"download\" | \"document\" | \"email\" | \"copy\" | \"move\" | \"merge\" | \"partial\" | \"container\" | \"user\" | \"pause\" | \"share\" | \"home\" | \"spaces\" | \"package\" | \"tag\" | \"beta\" | \"users\" | \"brush\" | \"percent\" | \"temperature\" | \"accessibility\" | \"addDataApp\" | \"advancedSettingsApp\" | \"agentApp\" | \"analyzeEvent\" | \"anomalyChart\" | \"anomalySwimLane\" | \"apmApp\" | \"apmTrace\" | \"appSearchApp\" | \"apps\" | \"arrowDown\" | \"arrowLeft\" | \"arrowRight\" | \"arrowUp\" | \"arrowStart\" | \"arrowEnd\" | \"asterisk\" | \"auditbeatApp\" | \"beaker\" | \"bell\" | \"bellSlash\" | \"bolt\" | \"boxesHorizontal\" | \"boxesVertical\" | \"branch\" | \"branchUser\" | \"broom\" | \"bug\" | \"bullseye\" | \"calendar\" | \"canvasApp\" | \"casesApp\" | \"changePointDetection\" | \"check\" | \"checkInCircleFilled\" | \"cheer\" | \"classificationJob\" | \"clickLeft\" | \"clickRight\" | \"clock\" | \"clockCounter\" | \"cloudDrizzle\" | \"cloudStormy\" | \"cloudSunny\" | \"codeApp\" | \"compute\" | \"console\" | \"consoleApp\" | \"continuityAbove\" | \"continuityAboveBelow\" | \"continuityBelow\" | \"continuityWithin\" | \"controlsHorizontal\" | \"controlsVertical\" | \"copyClipboard\" | \"createAdvancedJob\" | \"createMultiMetricJob\" | \"createPopulationJob\" | \"createSingleMetricJob\" | \"cross\" | \"crossClusterReplicationApp\" | \"crossInCircle\" | \"crosshairs\" | \"currency\" | \"cut\" | \"dashboardApp\" | \"dataVisualizer\" | \"database\" | \"desktop\" | \"devToolsApp\" | \"diff\" | \"discoverApp\" | \"discuss\" | \"documentEdit\" | \"documentation\" | \"documents\" | \"dot\" | \"dotInCircle\" | \"doubleArrowLeft\" | \"doubleArrowRight\" | \"editorAlignCenter\" | \"editorAlignLeft\" | \"editorAlignRight\" | \"editorBold\" | \"editorChecklist\" | \"editorCodeBlock\" | \"editorComment\" | \"editorDistributeHorizontal\" | \"editorDistributeVertical\" | \"editorHeading\" | \"editorItalic\" | \"editorItemAlignBottom\" | \"editorItemAlignCenter\" | \"editorItemAlignLeft\" | \"editorItemAlignMiddle\" | \"editorItemAlignRight\" | \"editorItemAlignTop\" | \"editorLink\" | \"editorOrderedList\" | \"editorPositionBottomLeft\" | \"editorPositionBottomRight\" | \"editorPositionTopLeft\" | \"editorPositionTopRight\" | \"editorRedo\" | \"editorStrike\" | \"editorTable\" | \"editorUnderline\" | \"editorUndo\" | \"editorUnorderedList\" | \"empty\" | \"emsApp\" | \"endpoint\" | \"eraser\" | \"errorFilled\" | \"esqlVis\" | \"exit\" | \"expand\" | \"expandMini\" | \"exportAction\" | \"eye\" | \"eyeClosed\" | \"faceHappy\" | \"faceNeutral\" | \"faceSad\" | \"fieldStatistics\" | \"filebeatApp\" | \"filterExclude\" | \"filterIgnore\" | \"filterInclude\" | \"filterInCircle\" | \"flag\" | \"fleetApp\" | \"fold\" | \"folderCheck\" | \"folderClosed\" | \"folderExclamation\" | \"folderOpen\" | \"frameNext\" | \"framePrevious\" | \"fullScreen\" | \"fullScreenExit\" | \"gear\" | \"gisApp\" | \"glasses\" | \"globe\" | \"grab\" | \"grabHorizontal\" | \"grabOmnidirectional\" | \"gradient\" | \"graphApp\" | \"grokApp\" | \"heart\" | \"heartbeatApp\" | \"heatmap\" | \"help\" | \"iInCircle\" | \"importAction\" | \"indexClose\" | \"indexEdit\" | \"indexFlush\" | \"indexManagementApp\" | \"indexMapping\" | \"indexOpen\" | \"indexPatternApp\" | \"indexRollupApp\" | \"indexRuntime\" | \"indexSettings\" | \"indexTemporary\" | \"infinity\" | \"inputOutput\" | \"inspect\" | \"invert\" | \"keyboard\" | \"kqlField\" | \"kqlFunction\" | \"kqlOperand\" | \"kqlSelector\" | \"kqlValue\" | \"kubernetesNode\" | \"kubernetesPod\" | \"launch\" | \"layers\" | \"lensApp\" | \"lettering\" | \"lineDashed\" | \"lineDotted\" | \"lineSolid\" | \"listAdd\" | \"lock\" | \"lockOpen\" | \"logPatternAnalysis\" | \"logRateAnalysis\" | \"logoAWS\" | \"logoAWSMono\" | \"logoAerospike\" | \"logoApache\" | \"logoAppSearch\" | \"logoAzure\" | \"logoAzureMono\" | \"logoBeats\" | \"logoBusinessAnalytics\" | \"logoCeph\" | \"logoCloud\" | \"logoCloudEnterprise\" | \"logoCode\" | \"logoCodesandbox\" | \"logoCouchbase\" | \"logoDocker\" | \"logoDropwizard\" | \"logoElastic\" | \"logoElasticStack\" | \"logoElasticsearch\" | \"logoEnterpriseSearch\" | \"logoEtcd\" | \"logoGCP\" | \"logoGCPMono\" | \"logoGithub\" | \"logoGmail\" | \"logoGolang\" | \"logoGoogleG\" | \"logoHAproxy\" | \"logoIBM\" | \"logoIBMMono\" | \"logoKafka\" | \"logoKibana\" | \"logoKubernetes\" | \"logoLogging\" | \"logoLogstash\" | \"logoMaps\" | \"logoMemcached\" | \"logoMetrics\" | \"logoMongodb\" | \"logoMySQL\" | \"logoNginx\" | \"logoObservability\" | \"logoOsquery\" | \"logoPhp\" | \"logoPostgres\" | \"logoPrometheus\" | \"logoRabbitmq\" | \"logoRedis\" | \"logoSecurity\" | \"logoSiteSearch\" | \"logoSketch\" | \"logoSlack\" | \"logoUptime\" | \"logoVulnerabilityManagement\" | \"logoWebhook\" | \"logoWindows\" | \"logoWorkplaceSearch\" | \"logsApp\" | \"logstashFilter\" | \"logstashIf\" | \"logstashInput\" | \"logstashOutput\" | \"logstashQueue\" | \"machineLearningApp\" | \"magnet\" | \"magnifyWithExclamation\" | \"magnifyWithMinus\" | \"magnifyWithPlus\" | \"managementApp\" | \"mapMarker\" | \"menuDown\" | \"menuLeft\" | \"menuRight\" | \"menuUp\" | \"metricbeatApp\" | \"metricsApp\" | \"minimize\" | \"minus\" | \"minusInCircle\" | \"minusInCircleFilled\" | \"minusInSquare\" | \"monitoringApp\" | \"moon\" | \"newChat\" | \"node\" | \"notebookApp\" | \"offline\" | \"online\" | \"outlierDetectionJob\" | \"packetbeatApp\" | \"pageSelect\" | \"pagesSelect\" | \"palette\" | \"paperClip\" | \"payment\" | \"pencil\" | \"pin\" | \"pinFilled\" | \"pipeBreaks\" | \"pipelineApp\" | \"pipeNoBreaks\" | \"pivot\" | \"play\" | \"playFilled\" | \"plus\" | \"plusInCircle\" | \"plusInCircleFilled\" | \"plusInSquare\" | \"popout\" | \"questionInCircle\" | \"quote\" | \"recentlyViewedApp\" | \"refresh\" | \"regressionJob\" | \"reporter\" | \"reportingApp\" | \"returnKey\" | \"save\" | \"savedObjectsApp\" | \"scale\" | \"searchProfilerApp\" | \"securityAnalyticsApp\" | \"securityApp\" | \"securitySignal\" | \"securitySignalDetected\" | \"securitySignalResolved\" | \"sessionViewer\" | \"shard\" | \"singleMetricViewer\" | \"snowflake\" | \"sortAscending\" | \"sortDescending\" | \"sortDown\" | \"sortLeft\" | \"sortRight\" | \"sortUp\" | \"sortable\" | \"spacesApp\" | \"sparkles\" | \"sqlApp\" | \"starEmpty\" | \"starEmptySpace\" | \"starFilled\" | \"starFilledSpace\" | \"starMinusEmpty\" | \"starMinusFilled\" | \"starPlusEmpty\" | \"starPlusFilled\" | \"stopFilled\" | \"stopSlash\" | \"storage\" | \"submodule\" | \"sun\" | \"swatchInput\" | \"symlink\" | \"tableDensityCompact\" | \"tableDensityExpanded\" | \"tableDensityNormal\" | \"tableOfContents\" | \"tear\" | \"timeline\" | \"timelineWithArrow\" | \"timelionApp\" | \"timeRefresh\" | \"timeslider\" | \"training\" | \"transitionLeftIn\" | \"transitionLeftOut\" | \"transitionTopIn\" | \"transitionTopOut\" | \"trash\" | \"unfold\" | \"upgradeAssistantApp\" | \"uptimeApp\" | \"userAvatar\" | \"usersRolesApp\" | \"vector\" | \"videoPlayer\" | \"visArea\" | \"visAreaStacked\" | \"visBarHorizontal\" | \"visBarHorizontalStacked\" | \"visBarVertical\" | \"visBarVerticalStacked\" | \"visGauge\" | \"visGoal\" | \"visLine\" | \"visMapCoordinate\" | \"visMapRegion\" | \"visMetric\" | \"visPie\" | \"visTable\" | \"visTagCloud\" | \"visText\" | \"visTimelion\" | \"visVega\" | \"visVisualBuilder\" | \"visualizeApp\" | \"vulnerabilityManagementApp\" | \"warningFilled\" | \"watchesApp\" | \"wordWrap\" | \"wordWrapDisabled\" | \"workplaceSearchApp\" | \"wrench\" | \"tokenAlias\" | \"tokenAnnotation\" | \"tokenArray\" | \"tokenBinary\" | \"tokenBoolean\" | \"tokenClass\" | \"tokenCompletionSuggester\" | \"tokenConstant\" | \"tokenDate\" | \"tokenDimension\" | \"tokenElement\" | \"tokenEnum\" | \"tokenEnumMember\" | \"tokenEvent\" | \"tokenException\" | \"tokenField\" | \"tokenFile\" | \"tokenFlattened\" | \"tokenFunction\" | \"tokenGeo\" | \"tokenHistogram\" | \"tokenInterface\" | \"tokenIP\" | \"tokenJoin\" | \"tokenKey\" | \"tokenKeyword\" | \"tokenMethod\" | \"tokenMetricCounter\" | \"tokenMetricGauge\" | \"tokenModule\" | \"tokenNamespace\" | \"tokenNested\" | \"tokenNull\" | \"tokenNumber\" | \"tokenObject\" | \"tokenOperator\" | \"tokenPackage\" | \"tokenParameter\" | \"tokenPercolator\" | \"tokenProperty\" | \"tokenRange\" | \"tokenRankFeature\" | \"tokenRankFeatures\" | \"tokenRepo\" | \"tokenSearchType\" | \"tokenSemanticText\" | \"tokenShape\" | \"tokenString\" | \"tokenStruct\" | \"tokenSymbol\" | \"tokenTag\" | \"tokenText\" | \"tokenTokenCount\" | \"tokenVariable\" | \"tokenVectorDense\" | \"tokenDenseVector\" | \"tokenVectorSparse\"; }" ], "path": "packages/kbn-discover-utils/src/components/app_menu/types.ts", "deprecated": false, diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 127098ca2d2e5..a98c1eaffb6f0 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.devdocs.json b/api_docs/kbn_doc_links.devdocs.json index 9e7a1ab119ce3..ab451f2b88259 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -543,7 +543,7 @@ "label": "securitySolution", "description": [], "signature": [ - "{ readonly aiAssistant: string; readonly artifactControl: string; readonly avcResults: string; readonly bidirectionalIntegrations: string; readonly trustedApps: string; readonly eventFilters: string; readonly eventMerging: string; readonly blocklist: string; readonly endpointArtifacts: string; readonly policyResponseTroubleshooting: { full_disk_access: string; macos_system_ext: string; linux_deadlock: string; }; readonly packageActionTroubleshooting: { es_connection: string; }; readonly threatIntelInt: string; readonly responseActions: string; readonly configureEndpointIntegrationPolicy: string; readonly exceptions: { value_lists: string; }; readonly privileges: string; readonly manageDetectionRules: string; readonly createDetectionRules: string; readonly createEsqlRuleType: string; readonly ruleUiAdvancedParams: string; readonly entityAnalytics: { readonly riskScorePrerequisites: string; readonly entityRiskScoring: string; readonly assetCriticality: string; }; readonly detectionEngineOverview: string; }" + "{ readonly aiAssistant: string; readonly artifactControl: string; readonly avcResults: string; readonly bidirectionalIntegrations: string; readonly trustedApps: string; readonly eventFilters: string; readonly eventMerging: string; readonly blocklist: string; readonly endpointArtifacts: string; readonly policyResponseTroubleshooting: { full_disk_access: string; macos_system_ext: string; linux_deadlock: string; }; readonly packageActionTroubleshooting: { es_connection: string; }; readonly threatIntelInt: string; readonly responseActions: string; readonly configureEndpointIntegrationPolicy: string; readonly exceptions: { value_lists: string; }; readonly privileges: string; readonly manageDetectionRules: string; readonly createDetectionRules: string; readonly createEsqlRuleType: string; readonly ruleUiAdvancedParams: string; readonly entityAnalytics: { readonly riskScorePrerequisites: string; readonly entityRiskScoring: string; readonly assetCriticality: string; }; readonly detectionEngineOverview: string; readonly signalsMigrationApi: string; }" ], "path": "src/platform/packages/shared/kbn-doc-links/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 796964c86f5af..b4d3b835b375a 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 198f7ae9e46c5..b73a27e5020d0 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index f9b7f0f22d2c9..5b3f86bc5f9be 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.devdocs.json b/api_docs/kbn_ebt_tools.devdocs.json index 005175472345e..bfa6471d278f2 100644 --- a/api_docs/kbn_ebt_tools.devdocs.json +++ b/api_docs/kbn_ebt_tools.devdocs.json @@ -176,7 +176,9 @@ "signature": [ "(state: { customMetrics?: ", "CustomMetrics", - " | undefined; isReady: boolean; }) => void" + " | undefined; isReady: boolean; meta?: ", + "Meta", + " | undefined; }) => void" ], "path": "packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts", "deprecated": false, @@ -218,6 +220,21 @@ "path": "packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ebt-tools", + "id": "def-common.usePageReady.$1.meta", + "type": "Object", + "tags": [], + "label": "meta", + "description": [], + "signature": [ + "Meta", + " | undefined" + ], + "path": "packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts", + "deprecated": false, + "trackAdoption": false } ] } diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 4cdac1f86fcbf..99ff91b2b7906 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 37 | 0 | 28 | 2 | +| 38 | 0 | 29 | 3 | ## Common diff --git a/api_docs/kbn_ecs_data_quality_dashboard.devdocs.json b/api_docs/kbn_ecs_data_quality_dashboard.devdocs.json index b70583710b651..39db857f43f1e 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.devdocs.json +++ b/api_docs/kbn_ecs_data_quality_dashboard.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "(indexName: string) => string" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -48,7 +48,7 @@ "signature": [ "React.NamedExoticComponent" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -82,7 +82,7 @@ "signature": [ "(phase: string) => string" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -96,7 +96,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -116,7 +116,7 @@ "tags": [], "label": "DATA_QUALITY_DASHBOARD_CONVERSATION_ID", "description": [], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -128,7 +128,7 @@ "tags": [], "label": "DATA_QUALITY_PROMPT_CONTEXT_PILL_TOOLTIP", "description": [], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -142,7 +142,7 @@ "description": [ "The subtitle displayed on the Data Quality dashboard" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -154,7 +154,7 @@ "tags": [], "label": "DATA_QUALITY_SUGGESTED_USER_PROMPT", "description": [], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -169,7 +169,7 @@ "signature": [ "\"https://www.elastic.co/guide/en/ecs/current/ecs-field-reference.html\"" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -186,7 +186,7 @@ "signature": [ "\"https://www.elastic.co/guide/en/ecs/current/ecs-reference.html\"" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -200,7 +200,7 @@ "description": [ "The label displayed for the `ILM phase` combo box on the Data Quality dashboard" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -214,7 +214,7 @@ "description": [ "The tooltip for the `ILM phase` combo box on the Data Quality Dashboard" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -229,7 +229,7 @@ "signature": [ "\"https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html\"" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -243,7 +243,7 @@ "description": [ "The placeholder for the `ILM phase` combo box on the Data Quality Dashboard" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 5438fc2be9b33..daa733dbfbe4c 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 8b2fb8cef2815..9801fe266c30d 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.devdocs.json b/api_docs/kbn_elastic_assistant.devdocs.json index f4e458bb3a3b2..c3c77455d16af 100644 --- a/api_docs/kbn_elastic_assistant.devdocs.json +++ b/api_docs/kbn_elastic_assistant.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "React.FunctionComponent" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -69,7 +69,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -83,7 +83,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -104,7 +104,7 @@ "Props", ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -130,19 +130,155 @@ "parentPluginId": "@kbn/elastic-assistant", "id": "def-public.AssistantAvatar", "type": "Function", - "tags": [], + "tags": [ + "deprecated" + ], "label": "AssistantAvatar", "description": [ - "\nDefault Elastic AI Assistant logo\n\nTODO: Can be removed once added to EUI" + "\nDefault Elastic AI Assistant logo\n" ], "signature": [ "({ className, size }: ", "AssistantAvatarProps", ") => React.JSX.Element" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx", - "deprecated": false, + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx", + "deprecated": true, "trackAdoption": false, + "references": [ + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx" + }, + { + "plugin": "@kbn/ecs-data-quality-dashboard", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx" + }, + { + "plugin": "@kbn/ecs-data-quality-dashboard", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/assistant/header_link.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/assistant/header_link.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_result_panel.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_result_panel.tsx" + } + ], "children": [ { "parentPluginId": "@kbn/elastic-assistant", @@ -154,7 +290,7 @@ "signature": [ "AssistantAvatarProps" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -173,7 +309,7 @@ "signature": [ "React.NamedExoticComponent & { readonly type: () => React.JSX.Element | null; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -207,7 +343,7 @@ "AssistantProviderProps", ") => React.JSX.Element" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -221,7 +357,7 @@ "signature": [ "AssistantProviderProps" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -272,7 +408,7 @@ }, " | undefined>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -292,7 +428,7 @@ "text": "HttpSetup" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -313,7 +449,7 @@ "text": "ConversationsBulkActions" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -335,7 +471,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -370,7 +506,7 @@ }, " | undefined) => Promise<{ attributes: { results: { created: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; updated: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"PROMPT_FIELD_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; prompts: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; prompts_count?: number | undefined; } | undefined>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -390,7 +526,7 @@ "text": "HttpSetup" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -405,7 +541,7 @@ "signature": [ "{ create?: { name: string; content: string; promptType: \"system\" | \"quick\"; consumer?: string | undefined; color?: string | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[] | undefined; update?: { id: string; consumer?: string | undefined; content?: string | undefined; color?: string | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -427,7 +563,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -448,7 +584,7 @@ "signature": [ "React.FunctionComponent" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -506,7 +642,7 @@ }, " | undefined>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -520,7 +656,7 @@ "signature": [ "GetConversationByIdParams" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -555,7 +691,7 @@ }, "; signal?: AbortSignal | undefined; }) => Promise<{ page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -566,7 +702,7 @@ "tags": [], "label": "{\n http,\n signal,\n toasts,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -586,7 +722,7 @@ "text": "HttpSetup" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false }, @@ -606,7 +742,7 @@ "text": "IToasts" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false }, @@ -620,7 +756,7 @@ "signature": [ "AbortSignal | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false } @@ -660,7 +796,7 @@ "FetchConversationsResponse", ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -671,7 +807,7 @@ "tags": [], "label": "{\n http,\n signal,\n toasts,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -691,7 +827,7 @@ "text": "HttpSetup" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -712,7 +848,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -726,7 +862,7 @@ "signature": [ "AbortSignal | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false } @@ -764,7 +900,7 @@ }, ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -786,7 +922,7 @@ }, ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -801,7 +937,7 @@ "signature": [ "FetchConversationsResponse" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -824,7 +960,7 @@ "Props", ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -860,7 +996,7 @@ "Props", ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -892,7 +1028,7 @@ "signature": [ "React.NamedExoticComponent<{ basePath: string; }> & { readonly type: ({ basePath }: { basePath: string; }) => React.JSX.Element; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -925,7 +1061,7 @@ "() => ", "UseAssistantContext" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -944,7 +1080,7 @@ "signature": [ "(category: string, conversationTitle: string | null, description: string, getPromptContext: () => Promise | Promise>, id: string | null, suggestedUserPrompt: string | null | undefined, tooltip: React.ReactNode, isAssistantEnabled: boolean, replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | null | undefined) => UseAssistantOverlay" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -958,7 +1094,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -973,7 +1109,7 @@ "signature": [ "string | null" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -988,7 +1124,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1003,7 +1139,7 @@ "signature": [ "() => Promise | Promise>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1018,7 +1154,7 @@ "signature": [ "string | null" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1033,7 +1169,7 @@ "signature": [ "string | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1048,7 +1184,7 @@ "signature": [ "React.ReactNode" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1063,7 +1199,7 @@ "signature": [ "boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1078,7 +1214,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1109,7 +1245,7 @@ }, ">, unknown>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1123,7 +1259,7 @@ "signature": [ "UseFetchCurrentUserConversationsParams" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1156,7 +1292,7 @@ }, ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1170,7 +1306,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1188,7 +1324,7 @@ "tags": [], "label": "AssistantAvailability", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1199,7 +1335,7 @@ "tags": [], "label": "isAssistantEnabled", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1210,7 +1346,7 @@ "tags": [], "label": "hasAssistantPrivilege", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1221,7 +1357,7 @@ "tags": [], "label": "hasConnectorsAllPrivilege", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1232,7 +1368,7 @@ "tags": [], "label": "hasConnectorsReadPrivilege", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1243,7 +1379,7 @@ "tags": [], "label": "hasUpdateAIAssistantAnonymization", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1254,7 +1390,7 @@ "tags": [], "label": "hasManageGlobalKnowledgeBase", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1268,7 +1404,7 @@ "tags": [], "label": "AssistantTelemetry", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1282,7 +1418,7 @@ "signature": [ "(params: { invokedBy: string; conversationId: string; }) => void" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1293,7 +1429,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1304,7 +1440,7 @@ "tags": [], "label": "invokedBy", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1315,7 +1451,7 @@ "tags": [], "label": "conversationId", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1334,7 +1470,7 @@ "signature": [ "(params: { conversationId: string; role: string; actionTypeId: string; model?: string | undefined; provider?: string | undefined; isEnabledKnowledgeBase: boolean; }) => void" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1345,7 +1481,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1356,7 +1492,7 @@ "tags": [], "label": "conversationId", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1367,7 +1503,7 @@ "tags": [], "label": "role", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1378,7 +1514,7 @@ "tags": [], "label": "actionTypeId", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1392,7 +1528,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1406,7 +1542,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1417,7 +1553,7 @@ "tags": [], "label": "isEnabledKnowledgeBase", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1436,7 +1572,7 @@ "signature": [ "(params: { conversationId: string; promptTitle: string; }) => void" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1447,7 +1583,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1458,7 +1594,7 @@ "tags": [], "label": "conversationId", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1469,7 +1605,7 @@ "tags": [], "label": "promptTitle", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1488,7 +1624,7 @@ "signature": [ "(params: { assistantStreamingEnabled?: boolean | undefined; }) => void" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1499,7 +1635,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1513,7 +1649,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1532,7 +1668,7 @@ "tags": [], "label": "BulkActionAggregatedError", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1543,7 +1679,7 @@ "tags": [], "label": "message", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1554,7 +1690,7 @@ "tags": [], "label": "status_code", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1568,7 +1704,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1582,7 +1718,7 @@ "signature": [ "{ id: string; name?: string | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1596,7 +1732,7 @@ "tags": [], "label": "BulkActionAttributes", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1616,7 +1752,7 @@ "text": "BulkActionSummary" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1636,7 +1772,7 @@ "text": "BulkActionResult" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1657,7 +1793,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1671,7 +1807,7 @@ "tags": [], "label": "BulkActionResponse", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1685,7 +1821,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1699,7 +1835,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1713,7 +1849,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1727,7 +1863,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1747,7 +1883,7 @@ "text": "BulkActionAttributes" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1761,7 +1897,7 @@ "tags": [], "label": "BulkActionResult", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1782,7 +1918,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1803,7 +1939,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1824,7 +1960,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1845,7 +1981,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1859,7 +1995,7 @@ "tags": [], "label": "BulkActionSummary", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1870,7 +2006,7 @@ "tags": [], "label": "failed", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1881,7 +2017,7 @@ "tags": [], "label": "skipped", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1892,7 +2028,7 @@ "tags": [], "label": "succeeded", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1903,7 +2039,7 @@ "tags": [], "label": "total", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1927,7 +2063,7 @@ }, " extends Omit<{ timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, \"content\" | \"reader\">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1941,7 +2077,7 @@ "signature": [ "ReadableStreamDefaultReader | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1955,7 +2091,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1970,7 +2106,7 @@ "MessagePresentation", " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1984,7 +2120,7 @@ "tags": [], "label": "CodeBlockDetails", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1998,7 +2134,7 @@ "signature": [ "\"eql\" | \"esql\" | \"sql\" | \"kql\" | \"dsl\" | \"json\" | \"no-type\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -2009,7 +2145,7 @@ "tags": [], "label": "content", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -2020,7 +2156,7 @@ "tags": [], "label": "start", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -2031,7 +2167,7 @@ "tags": [], "label": "end", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -2045,7 +2181,7 @@ "signature": [ "(() => Element | undefined) | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2061,7 +2197,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -2077,7 +2213,7 @@ "description": [ "\nComplete state to reconstruct a conversation instance.\nIncludes all messages, connector configured, and relevant UI state.\n" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -2091,7 +2227,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2105,7 +2241,7 @@ "signature": [ "{ connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2119,7 +2255,7 @@ "signature": [ "{ id?: string | undefined; name?: string | undefined; } | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2130,7 +2266,7 @@ "tags": [], "label": "category", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2141,7 +2277,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2152,7 +2288,7 @@ "tags": [], "label": "title", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2173,7 +2309,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2187,7 +2323,7 @@ "signature": [ "Date | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2201,7 +2337,7 @@ "signature": [ "Date | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2215,7 +2351,7 @@ "signature": [ "{} & { [k: string]: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2229,7 +2365,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2243,7 +2379,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -2257,7 +2393,7 @@ "tags": [], "label": "ConversationsBulkActions", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2279,7 +2415,7 @@ }, "> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2301,7 +2437,7 @@ }, "> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2315,7 +2451,7 @@ "signature": [ "{ ids: string[]; } | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -2329,7 +2465,7 @@ "tags": [], "label": "ConversationUpdateParams", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2343,7 +2479,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2357,7 +2493,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2378,7 +2514,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2392,7 +2528,7 @@ "signature": [ "{ connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -2408,7 +2544,7 @@ "description": [ "\nThis interface is used to pass context to the Elastic AI Assistant,\nfor the purpose of building prompts. Examples of context include:\n- a single alert\n- multiple alerts\n- a single event\n- multiple events\n- markdown\n- csv\n- anything else that the LLM can interpret" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2421,7 +2557,7 @@ "description": [ "\nThe category of data, e.g. `alert | alerts | event | events | string`\n\n`category` helps the Elastic AI Assistant display the most relevant user prompts" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2434,7 +2570,7 @@ "description": [ "\nThe Elastic AI Assistant will display this **short**, static description\nin the context pill" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2450,7 +2586,7 @@ "signature": [ "() => Promise | Promise>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2465,7 +2601,7 @@ "description": [ "\nA unique identifier for this prompt context" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2481,7 +2617,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2497,7 +2633,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2513,7 +2649,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false } @@ -2533,7 +2669,7 @@ "signature": [ "\"attackDiscovery\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2548,7 +2684,7 @@ "signature": [ "\"elasticAssistantDefault\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2565,7 +2701,7 @@ "signature": [ "100" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2582,7 +2718,7 @@ "signature": [ "100" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2597,7 +2733,7 @@ "signature": [ "\"defendInsights\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2609,7 +2745,7 @@ "tags": [], "label": "ELASTIC_AI_ASSISTANT_TITLE", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2636,7 +2772,7 @@ "EuiCommentProps", "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2661,7 +2797,7 @@ "UserAvatar", " | undefined; setIsStreaming: (isStreaming: boolean) => void; systemPromptContent?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -2678,7 +2814,7 @@ "signature": [ "\"knowledgeBase\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2693,7 +2829,7 @@ "signature": [ "\"maxAlerts\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2705,12 +2841,12 @@ "tags": [], "label": "PromptContextTemplate", "description": [ - "\nThis interface is used to pass a default or base set of contexts to the Elastic AI Assistant when\ninitializing it. This is used to provide 'category' options when users create Quick Prompts.\nAlso, useful for collating all of a solutions' prompts in one place.\n\ne.g. see Security Solution's x-pack/plugins/security_solution/public/assistant/prompt_contexts/index.tsx" + "\nThis interface is used to pass a default or base set of contexts to the Elastic AI Assistant when\ninitializing it. This is used to provide 'category' options when users create Quick Prompts.\nAlso, useful for collating all of a solutions' prompts in one place.\n\ne.g. see Security Solution's x-pack/solutions/security/plugins/security_solution/public/assistant/prompt_contexts/index.tsx" ], "signature": [ "{ description: string; category: string; tooltip: React.ReactNode; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; suggestedUserPrompt?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2725,7 +2861,7 @@ "signature": [ "\"eql\" | \"esql\" | \"sql\" | \"kql\" | \"dsl\" | \"json\" | \"no-type\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2737,7 +2873,7 @@ "tags": [], "label": "SELECT_FEWER_ALERTS", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/translations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2752,7 +2888,7 @@ "signature": [ "\"showSettingsTour\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2767,7 +2903,7 @@ "signature": [ "React.ChangeEvent | React.KeyboardEvent | React.MouseEvent" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2779,7 +2915,7 @@ "tags": [], "label": "WELCOME_CONVERSATION_TITLE", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2791,7 +2927,7 @@ "tags": [], "label": "YOUR_ANONYMIZATION_SETTINGS", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/translations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 7df32d5195bce..be9f02ae14a81 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.devdocs.json b/api_docs/kbn_elastic_assistant_common.devdocs.json index a864611adb34f..2f0d1faeb04b8 100644 --- a/api_docs/kbn_elastic_assistant_common.devdocs.json +++ b/api_docs/kbn_elastic_assistant_common.devdocs.json @@ -29,7 +29,7 @@ "signature": [ "({ currentReplacements, rawValue, }: { currentReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; rawValue: string; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -40,7 +40,7 @@ "tags": [], "label": "{\n currentReplacements,\n rawValue,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -54,7 +54,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", "deprecated": false, "trackAdoption": false }, @@ -65,7 +65,7 @@ "tags": [], "label": "rawValue", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", "deprecated": false, "trackAdoption": false } @@ -85,7 +85,7 @@ "signature": [ "(rawData: string | Record) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -99,7 +99,7 @@ "signature": [ "string | Record" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -120,7 +120,7 @@ "signature": [ "({ alertsIndexPattern, anonymizationFields, size, }: { alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; size: number; }) => { allow_no_indices: boolean; body: { fields: { field: string; include_unmapped: boolean; }[]; query: { bool: { filter: { bool: { must: never[]; filter: ({ bool: { should: { match_phrase: { 'kibana.alert.workflow_status': string; }; }[]; minimum_should_match: number; }; range?: undefined; } | { range: { '@timestamp': { gte: string; lte: string; format: string; }; }; bool?: undefined; })[]; should: never[]; must_not: { exists: { field: string; }; }[]; }; }[]; }; }; runtime_mappings: {}; size: number; sort: ({ 'kibana.alert.risk_score': { order: string; }; '@timestamp'?: undefined; } | { '@timestamp': { order: string; }; 'kibana.alert.risk_score'?: undefined; })[]; _source: boolean; }; ignore_unavailable: boolean; index: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -131,7 +131,7 @@ "tags": [], "label": "{\n alertsIndexPattern,\n anonymizationFields,\n size,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -142,7 +142,7 @@ "tags": [], "label": "alertsIndexPattern", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false }, @@ -156,7 +156,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false }, @@ -167,7 +167,7 @@ "tags": [], "label": "size", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false } @@ -197,7 +197,7 @@ }, ") => Record" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ "text": "MaybeRawData" } ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -246,7 +246,7 @@ }, " | undefined; }) => { decodedChunk: string; bedrockBuffer: Uint8Array; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -257,7 +257,7 @@ "tags": [], "label": "{\n chunk,\n bedrockBuffer,\n chunkHandler,\n logger,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -271,7 +271,7 @@ "signature": [ "Uint8Array" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false }, @@ -285,7 +285,7 @@ "signature": [ "Uint8Array" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false }, @@ -299,7 +299,7 @@ "signature": [ "((chunk: string) => void) | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -313,7 +313,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -338,7 +338,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false } @@ -360,7 +360,7 @@ "signature": [ "({ anonymizationFields, field, }: { anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; field: string; }) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -371,7 +371,7 @@ "tags": [], "label": "{\n anonymizationFields,\n field,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -385,7 +385,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -396,7 +396,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -416,7 +416,7 @@ "signature": [ "({ anonymizationFields, field, }: { anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; field: string; }) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -427,7 +427,7 @@ "tags": [], "label": "{\n anonymizationFields,\n field,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -441,7 +441,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -452,7 +452,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -472,7 +472,7 @@ "signature": [ "({ anonymizationFields, field, }: { anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; field: string; }) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -483,7 +483,7 @@ "tags": [], "label": "{\n anonymizationFields,\n field,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -497,7 +497,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -508,7 +508,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -530,7 +530,7 @@ "signature": [ "(chunks: Uint8Array[]) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -546,7 +546,7 @@ "signature": [ "Uint8Array[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -567,7 +567,7 @@ "signature": [ "({ messageContent, replacements, }: { messageContent: string; replacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | null | undefined; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -578,7 +578,7 @@ "tags": [], "label": "{\n messageContent,\n replacements,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -589,7 +589,7 @@ "tags": [], "label": "messageContent", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -603,7 +603,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -623,7 +623,7 @@ "signature": [ "({ messageContent, replacements, }: { messageContent: string; replacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\">; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -634,7 +634,7 @@ "tags": [], "label": "{\n messageContent,\n replacements,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -645,7 +645,7 @@ "tags": [], "label": "messageContent", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -659,7 +659,7 @@ "signature": [ "{} & { [k: string]: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -681,7 +681,7 @@ "signature": [ "(size?: number | undefined) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -695,7 +695,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -714,7 +714,7 @@ "signature": [ "({ anonymizationFields, currentReplacements, getAnonymizedValue, onNewReplacements, rawData, }: { anonymizationFields?: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[] | undefined; currentReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; getAnonymizedValue: ({ currentReplacements, rawValue, }: { currentReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; rawValue: string; }) => string; onNewReplacements?: ((replacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\">) => void) | undefined; rawData: string | Record; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -725,7 +725,7 @@ "tags": [], "label": "{\n anonymizationFields,\n currentReplacements,\n getAnonymizedValue,\n onNewReplacements,\n rawData,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -739,7 +739,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[] | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -753,7 +753,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -767,7 +767,7 @@ "signature": [ "({ currentReplacements, rawValue, }: { currentReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; rawValue: string; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -778,7 +778,7 @@ "tags": [], "label": "{\n currentReplacements,\n rawValue,\n }", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -792,7 +792,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -803,7 +803,7 @@ "tags": [], "label": "rawValue", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false } @@ -822,7 +822,7 @@ "signature": [ "((replacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\">) => void) | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -836,7 +836,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -854,7 +854,7 @@ "signature": [ "string | Record" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false } @@ -878,7 +878,7 @@ "signature": [ "{ connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -893,7 +893,7 @@ "signature": [ "{ messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -908,7 +908,7 @@ "signature": [ "{ messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -923,7 +923,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -938,7 +938,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -953,7 +953,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -970,7 +970,7 @@ "signature": [ "{ readonly assistantModelEvaluation: boolean; readonly defendInsights: boolean; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -987,7 +987,7 @@ "signature": [ "{ title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1004,7 +1004,7 @@ "signature": [ "{ title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1019,7 +1019,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1034,7 +1034,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1049,7 +1049,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1064,7 +1064,7 @@ "signature": [ "{ status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1079,7 +1079,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1094,7 +1094,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1109,7 +1109,7 @@ "signature": [ "{ stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1124,7 +1124,7 @@ "signature": [ "{ size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1139,7 +1139,7 @@ "signature": [ "{ size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1154,7 +1154,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1169,7 +1169,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1186,7 +1186,7 @@ "signature": [ "{ connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1203,7 +1203,7 @@ "signature": [ "{ newDiscoveriesCount: number; newConnectorResultsCount: number; statsPerConnector: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1220,7 +1220,7 @@ "signature": [ "\"running\" | \"succeeded\" | \"failed\" | \"canceled\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1235,7 +1235,7 @@ "signature": [ "{ running: \"running\"; succeeded: \"succeeded\"; failed: \"failed\"; canceled: \"canceled\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1250,7 +1250,7 @@ "signature": [ "{ id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1265,7 +1265,7 @@ "signature": [ "{ name: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1280,7 +1280,7 @@ "signature": [ "{ namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1295,7 +1295,7 @@ "signature": [ "{ name: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1310,7 +1310,7 @@ "signature": [ "{ namespace: string; name: string; users: { id?: string | undefined; name?: string | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1325,7 +1325,7 @@ "signature": [ "{ id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1340,7 +1340,7 @@ "signature": [ "{ ids?: string[] | undefined; query?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1355,7 +1355,7 @@ "signature": [ "{ total: number; succeeded: number; failed: number; skipped: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1370,7 +1370,7 @@ "signature": [ "{ connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1385,7 +1385,7 @@ "signature": [ "{ connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1400,7 +1400,7 @@ "signature": [ "{ connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1417,7 +1417,7 @@ "signature": [ "{ role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1434,7 +1434,7 @@ "signature": [ "\"user\" | \"system\" | \"assistant\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1449,7 +1449,7 @@ "signature": [ "{ user: \"user\"; system: \"system\"; assistant: \"assistant\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1466,7 +1466,7 @@ "signature": [ "\"assistant\" | \"insights\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1481,7 +1481,7 @@ "signature": [ "{ assistant: \"assistant\"; insights: \"insights\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1498,7 +1498,7 @@ "signature": [ "\"medium\" | \"high\" | \"low\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1513,7 +1513,7 @@ "signature": [ "{ medium: \"medium\"; high: \"high\"; low: \"low\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1528,7 +1528,7 @@ "signature": [ "{ title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1543,7 +1543,7 @@ "signature": [ "{ id: string; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1558,7 +1558,7 @@ "signature": [ "{ messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1573,7 +1573,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1588,7 +1588,7 @@ "signature": [ "\"CONVERSATION_NOT_MODIFIED\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1603,7 +1603,7 @@ "signature": [ "{ id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1618,7 +1618,7 @@ "signature": [ "{ attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1633,7 +1633,7 @@ "signature": [ "{ created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1648,7 +1648,7 @@ "signature": [ "{ timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1663,7 +1663,7 @@ "signature": [ "{ id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1678,7 +1678,7 @@ "signature": [ "{ title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1693,7 +1693,7 @@ "signature": [ "{ title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1708,7 +1708,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1723,7 +1723,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1738,7 +1738,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1753,7 +1753,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1768,7 +1768,7 @@ "signature": [ "{ resource?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1783,7 +1783,7 @@ "signature": [ "{ resource?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1798,7 +1798,7 @@ "signature": [ "{ ignoreSecurityLabs: boolean; modelId?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1813,7 +1813,7 @@ "signature": [ "{ modelId?: string | undefined; ignoreSecurityLabs?: boolean | \"true\" | \"false\" | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1828,7 +1828,7 @@ "signature": [ "{ success?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1840,7 +1840,7 @@ "tags": [], "label": "DEFEND_INSIGHTS", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1852,7 +1852,7 @@ "tags": [], "label": "DEFEND_INSIGHTS_BY_ID", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1867,7 +1867,7 @@ "signature": [ "\"defend-insights\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1884,7 +1884,7 @@ "signature": [ "{ group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1899,7 +1899,7 @@ "signature": [ "{ status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1916,7 +1916,7 @@ "signature": [ "{ id: string; value: string; endpointId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1933,7 +1933,7 @@ "signature": [ "{ date: string; durationMs: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1948,7 +1948,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1963,7 +1963,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1978,7 +1978,7 @@ "signature": [ "{ data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1995,7 +1995,7 @@ "signature": [ "{ group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2010,7 +2010,7 @@ "signature": [ "{ type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: string[] | undefined; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2025,7 +2025,7 @@ "signature": [ "{ type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: unknown; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2040,7 +2040,7 @@ "signature": [ "{ data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2055,7 +2055,7 @@ "signature": [ "{ subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2070,7 +2070,7 @@ "signature": [ "{ subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2085,7 +2085,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2100,7 +2100,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2117,7 +2117,7 @@ "signature": [ "\"running\" | \"succeeded\" | \"failed\" | \"canceled\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2132,7 +2132,7 @@ "signature": [ "{ running: \"running\"; succeeded: \"succeeded\"; failed: \"failed\"; canceled: \"canceled\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2147,7 +2147,7 @@ "signature": [ "{ id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2164,7 +2164,7 @@ "signature": [ "\"incompatible_antivirus\" | \"noisy_process_tree\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2179,7 +2179,7 @@ "signature": [ "{ incompatible_antivirus: \"incompatible_antivirus\"; noisy_process_tree: \"noisy_process_tree\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2194,7 +2194,7 @@ "signature": [ "{ id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2209,7 +2209,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2224,7 +2224,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2239,7 +2239,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2254,7 +2254,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2269,7 +2269,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2284,7 +2284,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2299,7 +2299,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2314,7 +2314,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2329,7 +2329,7 @@ "signature": [ "{ required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2344,7 +2344,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; kbResource: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2359,7 +2359,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2374,7 +2374,7 @@ "signature": [ "\"document\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2389,7 +2389,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2404,7 +2404,7 @@ "signature": [ "\"/api/security_ai_assistant/anonymization_fields\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2419,7 +2419,7 @@ "signature": [ "\"/api/security_ai_assistant/anonymization_fields/_bulk_action\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2434,7 +2434,7 @@ "signature": [ "\"/api/security_ai_assistant/anonymization_fields/_find\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2449,7 +2449,7 @@ "signature": [ "\"/api/security_ai_assistant/chat/complete\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2464,7 +2464,7 @@ "signature": [ "\"/api/security_ai_assistant/current_user/conversations\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2479,7 +2479,7 @@ "signature": [ "\"/internal/elastic_assistant/current_user/conversations/_bulk_action\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2494,7 +2494,7 @@ "signature": [ "\"/api/security_ai_assistant/current_user/conversations/{id}\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2509,7 +2509,7 @@ "signature": [ "\"/internal/elastic_assistant/current_user/conversations/{id}/messages\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2524,7 +2524,7 @@ "signature": [ "\"/api/security_ai_assistant/current_user/conversations/_find\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2539,7 +2539,7 @@ "signature": [ "\"/internal/elastic_assistant/evaluate\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2554,7 +2554,7 @@ "signature": [ "\"1\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2569,7 +2569,7 @@ "signature": [ "\"/internal/elastic_assistant/current_user/conversations\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2584,7 +2584,7 @@ "signature": [ "\"/internal/elastic_assistant\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2599,7 +2599,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/entries\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2614,7 +2614,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/entries/_bulk_action\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2629,7 +2629,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/entries/_find\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2644,7 +2644,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/_indices\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2659,7 +2659,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/{resource?}\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2674,7 +2674,7 @@ "signature": [ "\"/api/security_ai_assistant/prompts\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2689,7 +2689,7 @@ "signature": [ "\"/api/security_ai_assistant/prompts/_bulk_action\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2704,7 +2704,7 @@ "signature": [ "\"/api/security_ai_assistant/prompts/_find\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2719,7 +2719,7 @@ "signature": [ "\"/api/security_ai_assistant\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2734,7 +2734,7 @@ "signature": [ "{ error: { message: string; status_code: number; }; id?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2749,7 +2749,7 @@ "signature": [ "{ actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2764,7 +2764,7 @@ "signature": [ "{ actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2779,7 +2779,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2794,7 +2794,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2809,7 +2809,7 @@ "signature": [ "{ data: string; status: string; connector_id: string; trace_data?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2824,7 +2824,7 @@ "signature": [ "{ per_page: number; page: number; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2839,7 +2839,7 @@ "signature": [ "{ per_page?: number | undefined; page?: number | undefined; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2854,7 +2854,7 @@ "signature": [ "{ page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2869,7 +2869,7 @@ "signature": [ "\"title\" | \"updated_at\" | \"created_at\" | \"is_default\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2884,7 +2884,7 @@ "signature": [ "{ title: \"title\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2899,7 +2899,7 @@ "signature": [ "{ per_page: number; page: number; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2914,7 +2914,7 @@ "signature": [ "{ per_page?: number | undefined; page?: number | undefined; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2929,7 +2929,7 @@ "signature": [ "{ page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2944,7 +2944,7 @@ "signature": [ "\"title\" | \"updated_at\" | \"created_at\" | \"is_default\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2959,7 +2959,7 @@ "signature": [ "{ title: \"title\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2974,7 +2974,7 @@ "signature": [ "{ per_page: number; page: number; sort_field?: \"name\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2989,7 +2989,7 @@ "signature": [ "{ per_page?: number | undefined; page?: number | undefined; sort_field?: \"name\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3004,7 +3004,7 @@ "signature": [ "{ page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3019,7 +3019,7 @@ "signature": [ "\"name\" | \"updated_at\" | \"created_at\" | \"is_default\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3034,7 +3034,7 @@ "signature": [ "{ name: \"name\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3051,7 +3051,7 @@ "signature": [ "{ date: string; durationMs: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3066,7 +3066,7 @@ "signature": [ "{ assistantModelEvaluation: boolean; defendInsights: boolean; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3081,7 +3081,7 @@ "signature": [ "{ datasets: string[]; graphs: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3096,7 +3096,7 @@ "signature": [ "{ indices: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3111,7 +3111,7 @@ "signature": [ "{ id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3126,7 +3126,7 @@ "signature": [ "{ type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3141,7 +3141,7 @@ "signature": [ "{ inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3156,7 +3156,7 @@ "signature": [ "{ type: \"index\"; index: string; field: string; description: string; queryDescription: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3171,7 +3171,7 @@ "signature": [ "{ type: \"index\"; index: string; field: string; description: string; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3186,7 +3186,7 @@ "signature": [ "\"index\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3201,7 +3201,7 @@ "signature": [ "{ id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3218,7 +3218,7 @@ "signature": [ "{ description: string; fieldName: string; fieldType: string; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3233,7 +3233,7 @@ "signature": [ "\"internal\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3248,7 +3248,7 @@ "signature": [ "{ ids?: string[] | undefined; query?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3263,7 +3263,7 @@ "signature": [ "\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3278,7 +3278,7 @@ "signature": [ "{ id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3293,7 +3293,7 @@ "signature": [ "{ attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3308,7 +3308,7 @@ "signature": [ "{ created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3323,7 +3323,7 @@ "signature": [ "{ total: number; succeeded: number; failed: number; skipped: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3338,7 +3338,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3353,7 +3353,7 @@ "signature": [ "{ id: string; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3368,7 +3368,7 @@ "signature": [ "{ error: string; message: string; statusCode: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3383,7 +3383,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3398,7 +3398,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3415,7 +3415,7 @@ "signature": [ "{ success?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3432,7 +3432,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3449,7 +3449,7 @@ "signature": [ "{ timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3464,7 +3464,7 @@ "signature": [ "{} & { [k: string]: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3481,7 +3481,7 @@ "signature": [ "\"user\" | \"system\" | \"assistant\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3496,7 +3496,7 @@ "signature": [ "{ user: \"user\"; system: \"system\"; assistant: \"assistant\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3513,7 +3513,7 @@ "signature": [ "{ source: string; required: boolean; kbResource: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3525,12 +3525,12 @@ "tags": [], "label": "NonEmptyString", "description": [ - "\nA string that is not empty and does not contain only whitespace" + "\nA string that does not contain only whitespace characters" ], "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3545,7 +3545,7 @@ "signature": [ "{ message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3560,7 +3560,7 @@ "signature": [ "{ message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3575,7 +3575,7 @@ "signature": [ "{ create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3590,7 +3590,7 @@ "signature": [ "{ create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3605,7 +3605,7 @@ "signature": [ "{ attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3620,7 +3620,7 @@ "signature": [ "{ create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3635,7 +3635,7 @@ "signature": [ "{ create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3650,7 +3650,7 @@ "signature": [ "{ attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3665,7 +3665,7 @@ "signature": [ "{ size: number; alertsIndexPattern: string; replacements: {} & { [k: string]: string; }; graphs: string[]; datasetName: string; connectorIds: string[]; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3680,7 +3680,7 @@ "signature": [ "{ size: number; alertsIndexPattern: string; replacements: {} & { [k: string]: string; }; graphs: string[]; datasetName: string; connectorIds: string[]; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3695,7 +3695,7 @@ "signature": [ "{ graphs: string[]; datasetName: string; connectorIds: string[]; size?: number | undefined; alertsIndexPattern?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3710,7 +3710,7 @@ "signature": [ "{ success: boolean; evaluationId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3725,7 +3725,7 @@ "signature": [ "{ id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3740,7 +3740,7 @@ "signature": [ "{ system: \"system\"; quick: \"quick\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3757,7 +3757,7 @@ "signature": [ "\"Other\" | \"OpenAI\" | \"Azure OpenAI\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3772,7 +3772,7 @@ "signature": [ "{ Other: \"Other\"; OpenAI: \"OpenAI\"; \"Azure OpenAI\": \"Azure OpenAI\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3787,7 +3787,7 @@ "signature": [ "\"public\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3802,7 +3802,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3817,7 +3817,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3832,7 +3832,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3847,7 +3847,7 @@ "signature": [ "{} & { [k: string]: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3862,7 +3862,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3877,7 +3877,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3892,7 +3892,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3907,7 +3907,7 @@ "signature": [ "{ resource?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3922,7 +3922,7 @@ "signature": [ "{ resource?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3937,7 +3937,7 @@ "signature": [ "{ elser_exists?: boolean | undefined; index_exists?: boolean | undefined; is_setup_available?: boolean | undefined; is_setup_in_progress?: boolean | undefined; pipeline_exists?: boolean | undefined; security_labs_exists?: boolean | undefined; user_data_exists?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3954,7 +3954,7 @@ "signature": [ "{} & { [k: string]: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3969,7 +3969,7 @@ "signature": [ "{ id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3984,7 +3984,7 @@ "signature": [ "\"security\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3999,7 +3999,7 @@ "signature": [ "{ id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4014,7 +4014,7 @@ "signature": [ "\"asc\" | \"desc\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4029,7 +4029,7 @@ "signature": [ "{ asc: \"asc\"; desc: \"desc\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4046,7 +4046,7 @@ "signature": [ "{ transactionId?: string | undefined; traceId?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4061,7 +4061,7 @@ "signature": [ "{ id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4076,7 +4076,7 @@ "signature": [ "{ id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4091,7 +4091,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4106,7 +4106,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4121,7 +4121,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4136,7 +4136,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4151,7 +4151,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4166,7 +4166,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4181,7 +4181,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4196,7 +4196,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4213,7 +4213,7 @@ "signature": [ "{ id?: string | undefined; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4230,7 +4230,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4247,7 +4247,7 @@ "signature": [ "{ modelId: string; tokens: {} & { [k: string]: number; }; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4264,7 +4264,7 @@ "signature": [ "{ readonly public: { readonly v1: \"2023-10-31\"; }; readonly internal: { readonly v1: \"1\"; }; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4279,7 +4279,7 @@ "signature": [ "Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4292,9 +4292,9 @@ "label": "AppendConversationMessageRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ messages: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }>" + "Zod.ZodObject<{ messages: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4307,9 +4307,9 @@ "label": "AppendConversationMessageRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4322,9 +4322,9 @@ "label": "AppendConversationMessageResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4337,9 +4337,9 @@ "label": "AttackDiscoveries", "description": [], "signature": [ - "Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">" + "Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4352,9 +4352,9 @@ "label": "AttackDiscovery", "description": [], "signature": [ - "Zod.ZodObject<{ alertIds: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>" + "Zod.ZodObject<{ alertIds: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4367,9 +4367,9 @@ "label": "AttackDiscoveryCancelRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ connectorId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" + "Zod.ZodObject<{ connectorId: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4382,9 +4382,9 @@ "label": "AttackDiscoveryCancelResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4397,9 +4397,9 @@ "label": "AttackDiscoveryCreateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; alertsContextCount: Zod.ZodOptional; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; alertsContextCount: Zod.ZodOptional; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4412,9 +4412,9 @@ "label": "AttackDiscoveryGetRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ connectorId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" + "Zod.ZodObject<{ connectorId: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4427,9 +4427,9 @@ "label": "AttackDiscoveryGetResponse", "description": [], "signature": [ - "Zod.ZodObject<{ data: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>>; stats: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }, { stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }>" + "Zod.ZodObject<{ data: Zod.ZodOptional; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>>; stats: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }, { stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4442,9 +4442,9 @@ "label": "AttackDiscoveryPostRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ alertsIndexPattern: Zod.ZodString; anonymizationFields: Zod.ZodArray; field: Zod.ZodString; allowed: Zod.ZodOptional; anonymized: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; model: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; size: Zod.ZodNumber; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; }, \"strip\", Zod.ZodTypeAny, { size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" + "Zod.ZodObject<{ alertsIndexPattern: Zod.ZodString; anonymizationFields: Zod.ZodArray; timestamp: Zod.ZodOptional>; field: Zod.ZodString; allowed: Zod.ZodOptional; anonymized: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; model: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; size: Zod.ZodNumber; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; }, \"strip\", Zod.ZodTypeAny, { size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4457,9 +4457,9 @@ "label": "AttackDiscoveryPostResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4472,9 +4472,9 @@ "label": "AttackDiscoveryResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4489,7 +4489,7 @@ "signature": [ "Zod.ZodObject<{ hasViewed: Zod.ZodBoolean; count: Zod.ZodNumber; connectorId: Zod.ZodString; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4504,7 +4504,7 @@ "signature": [ "Zod.ZodObject<{ newDiscoveriesCount: Zod.ZodNumber; newConnectorResultsCount: Zod.ZodNumber; statsPerConnector: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { newDiscoveriesCount: number; newConnectorResultsCount: number; statsPerConnector: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; }, { newDiscoveriesCount: number; newConnectorResultsCount: number; statsPerConnector: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4519,7 +4519,7 @@ "signature": [ "Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4534,7 +4534,7 @@ "signature": [ "{ running: \"running\"; succeeded: \"succeeded\"; failed: \"failed\"; canceled: \"canceled\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4547,9 +4547,9 @@ "label": "AttackDiscoveryUpdateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; alertsContextCount: Zod.ZodOptional; attackDiscoveries: Zod.ZodOptional; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; alertsContextCount: Zod.ZodOptional; attackDiscoveries: Zod.ZodOptional; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4564,7 +4564,7 @@ "signature": [ "Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, \"strip\", Zod.ZodTypeAny, { name: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }, { name: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4579,7 +4579,7 @@ "signature": [ "Zod.ZodObject<{ namespace: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }, { namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4594,7 +4594,7 @@ "signature": [ "Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4609,7 +4609,7 @@ "signature": [ "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, \"strip\", Zod.ZodTypeAny, { namespace: string; name: string; users: { id?: string | undefined; name?: string | undefined; }[]; }, { namespace: string; name: string; users: { id?: string | undefined; name?: string | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4622,9 +4622,9 @@ "label": "BaseUpdateProps", "description": [], "signature": [ - "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, \"strip\", Zod.ZodTypeAny, { id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }, { id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }>" + "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, \"strip\", Zod.ZodTypeAny, { id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }, { id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4639,7 +4639,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4654,7 +4654,7 @@ "signature": [ "Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4669,7 +4669,7 @@ "signature": [ "Zod.ZodObject<{ conversationId: Zod.ZodOptional; promptId: Zod.ZodOptional; isStream: Zod.ZodOptional; responseLanguage: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; connectorId: Zod.ZodString; model: Zod.ZodOptional; persist: Zod.ZodBoolean; messages: Zod.ZodArray; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; data: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; fields_to_anonymize: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }, { connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4684,7 +4684,7 @@ "signature": [ "Zod.ZodObject<{ conversationId: Zod.ZodOptional; promptId: Zod.ZodOptional; isStream: Zod.ZodOptional; responseLanguage: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; connectorId: Zod.ZodString; model: Zod.ZodOptional; persist: Zod.ZodBoolean; messages: Zod.ZodArray; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; data: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; fields_to_anonymize: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }, { connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4699,7 +4699,7 @@ "signature": [ "Zod.ZodObject<{ content: Zod.ZodOptional; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; data: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; fields_to_anonymize: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4714,7 +4714,7 @@ "signature": [ "Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4729,7 +4729,7 @@ "signature": [ "{ user: \"user\"; system: \"system\"; assistant: \"assistant\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4744,7 +4744,7 @@ "signature": [ "Zod.ZodEnum<[\"assistant\", \"insights\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4759,7 +4759,7 @@ "signature": [ "{ assistant: \"assistant\"; insights: \"insights\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4774,7 +4774,7 @@ "signature": [ "Zod.ZodEnum<[\"low\", \"medium\", \"high\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4789,7 +4789,7 @@ "signature": [ "{ medium: \"medium\"; high: \"high\"; low: \"low\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4802,9 +4802,9 @@ "label": "ConversationCreateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4819,7 +4819,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4832,9 +4832,9 @@ "label": "ConversationMessageCreateProps", "description": [], "signature": [ - "Zod.ZodObject<{ messages: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }>" + "Zod.ZodObject<{ messages: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4847,9 +4847,9 @@ "label": "ConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4864,7 +4864,7 @@ "signature": [ "Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4879,7 +4879,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; name: Zod.ZodOptional; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4892,9 +4892,9 @@ "label": "ConversationsBulkCrudActionResponse", "description": [], "signature": [ - "Zod.ZodObject<{ success: Zod.ZodOptional; status_code: Zod.ZodOptional; message: Zod.ZodOptional; conversations_count: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }>" + "Zod.ZodObject<{ success: Zod.ZodOptional; status_code: Zod.ZodOptional; message: Zod.ZodOptional; conversations_count: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4907,9 +4907,9 @@ "label": "ConversationsBulkCrudActionResults", "description": [], "signature": [ - "Zod.ZodObject<{ updated: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>" + "Zod.ZodObject<{ updated: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4922,9 +4922,9 @@ "label": "ConversationSummary", "description": [], "signature": [ - "Zod.ZodObject<{ content: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>" + "Zod.ZodObject<{ content: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4937,9 +4937,9 @@ "label": "ConversationUpdateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4952,9 +4952,9 @@ "label": "CreateConversationRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4967,9 +4967,9 @@ "label": "CreateConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4984,7 +4984,7 @@ "signature": [ "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4997,9 +4997,9 @@ "label": "CreateKnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5014,7 +5014,7 @@ "signature": [ "Zod.ZodObject<{ resource: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { resource?: string | undefined; }, { resource?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5029,7 +5029,7 @@ "signature": [ "Zod.ZodObject<{ modelId: Zod.ZodOptional; ignoreSecurityLabs: Zod.ZodDefault, Zod.ZodBoolean]>, boolean, boolean | \"true\" | \"false\">>>; }, \"strip\", Zod.ZodTypeAny, { ignoreSecurityLabs: boolean; modelId?: string | undefined; }, { modelId?: string | undefined; ignoreSecurityLabs?: boolean | \"true\" | \"false\" | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5044,7 +5044,7 @@ "signature": [ "Zod.ZodObject<{ success: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { success?: boolean | undefined; }, { success?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5061,7 +5061,7 @@ "signature": [ "{ readonly assistantModelEvaluation: false; readonly defendInsights: false; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5076,7 +5076,7 @@ "signature": [ "Zod.ZodObject<{ group: Zod.ZodString; events: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5089,9 +5089,9 @@ "label": "DefendInsightCreateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; eventsContextCount: Zod.ZodOptional; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; eventsContextCount: Zod.ZodOptional; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5106,7 +5106,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; endpointId: Zod.ZodString; value: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; value: string; endpointId: string; }, { id: string; value: string; endpointId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5121,7 +5121,7 @@ "signature": [ "Zod.ZodObject<{ date: Zod.ZodString; durationMs: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { date: string; durationMs: number; }, { date: string; durationMs: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5134,9 +5134,9 @@ "label": "DefendInsightGetRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5149,9 +5149,9 @@ "label": "DefendInsightGetResponse", "description": [], "signature": [ - "Zod.ZodObject<{ data: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>>>; }, \"strip\", Zod.ZodTypeAny, { data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }, { data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }>" + "Zod.ZodObject<{ data: Zod.ZodOptional; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>>>; }, \"strip\", Zod.ZodTypeAny, { data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }, { data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5166,7 +5166,7 @@ "signature": [ "Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5179,9 +5179,9 @@ "label": "DefendInsightsGetRequestQuery", "description": [], "signature": [ - "Zod.ZodObject<{ ids: Zod.ZodOptional, string[], unknown>>; connector_id: Zod.ZodOptional; type: Zod.ZodOptional>; status: Zod.ZodOptional>; endpoint_ids: Zod.ZodOptional, string[], unknown>>; size: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: string[] | undefined; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: string[] | undefined; }, { type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: unknown; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: unknown; }>" + "Zod.ZodObject<{ ids: Zod.ZodOptional, \"many\">, string[], unknown>>; connector_id: Zod.ZodOptional>; type: Zod.ZodOptional>; status: Zod.ZodOptional>; endpoint_ids: Zod.ZodOptional, \"many\">, string[], unknown>>; size: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: string[] | undefined; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: string[] | undefined; }, { type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: unknown; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: unknown; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5194,9 +5194,9 @@ "label": "DefendInsightsGetResponse", "description": [], "signature": [ - "Zod.ZodObject<{ data: Zod.ZodArray; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }, { data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }>" + "Zod.ZodObject<{ data: Zod.ZodArray; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }, { data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5209,9 +5209,9 @@ "label": "DefendInsightsPostRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; anonymizationFields: Zod.ZodArray; field: Zod.ZodString; allowed: Zod.ZodOptional; anonymized: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; model: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; }, \"strip\", Zod.ZodTypeAny, { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" + "Zod.ZodObject<{ endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; anonymizationFields: Zod.ZodArray; timestamp: Zod.ZodOptional>; field: Zod.ZodString; allowed: Zod.ZodOptional; anonymized: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; model: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; }, \"strip\", Zod.ZodTypeAny, { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5224,9 +5224,9 @@ "label": "DefendInsightsPostResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5239,9 +5239,9 @@ "label": "DefendInsightsResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5256,7 +5256,7 @@ "signature": [ "Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5271,7 +5271,7 @@ "signature": [ "{ running: \"running\"; succeeded: \"succeeded\"; failed: \"failed\"; canceled: \"canceled\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5284,9 +5284,9 @@ "label": "DefendInsightsUpdateProps", "description": [], "signature": [ - "Zod.ZodArray; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; eventsContextCount: Zod.ZodOptional; insights: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }>, \"many\">" + "Zod.ZodArray; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; eventsContextCount: Zod.ZodOptional; insights: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }>, \"many\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5301,7 +5301,7 @@ "signature": [ "Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5316,7 +5316,7 @@ "signature": [ "{ incompatible_antivirus: \"incompatible_antivirus\"; noisy_process_tree: \"noisy_process_tree\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5329,9 +5329,9 @@ "label": "DefendInsightUpdateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; eventsContextCount: Zod.ZodOptional; insights: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; eventsContextCount: Zod.ZodOptional; insights: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5344,9 +5344,9 @@ "label": "DeleteConversationRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5359,9 +5359,9 @@ "label": "DeleteConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5374,9 +5374,9 @@ "label": "DeleteKnowledgeBaseEntryRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5389,9 +5389,9 @@ "label": "DeleteKnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5404,9 +5404,9 @@ "label": "DocumentEntry", "description": [], "signature": [ - "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" + "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5421,7 +5421,7 @@ "signature": [ "Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5436,7 +5436,7 @@ "signature": [ "Zod.ZodObject<{ required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }, \"strip\", Zod.ZodTypeAny, { required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5451,7 +5451,7 @@ "signature": [ "Zod.ZodObject<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; kbResource: string; }, { source: string; type: \"document\"; text: string; kbResource: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5466,7 +5466,7 @@ "signature": [ "Zod.ZodObject; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5481,7 +5481,7 @@ "signature": [ "Zod.ZodLiteral<\"document\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5494,9 +5494,9 @@ "label": "DocumentEntryUpdateFields", "description": [], "signature": [ - "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" + "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5509,9 +5509,9 @@ "label": "ErrorSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; error: Zod.ZodObject<{ status_code: Zod.ZodNumber; message: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; }, { message: string; status_code: number; }>; }, \"strict\", Zod.ZodTypeAny, { error: { message: string; status_code: number; }; id?: string | undefined; }, { error: { message: string; status_code: number; }; id?: string | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional>; error: Zod.ZodObject<{ status_code: Zod.ZodNumber; message: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; }, { message: string; status_code: number; }>; }, \"strict\", Zod.ZodTypeAny, { error: { message: string; status_code: number; }; id?: string | undefined; }, { error: { message: string; status_code: number; }; id?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5524,9 +5524,9 @@ "label": "ExecuteConnectorRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ conversationId: Zod.ZodOptional; message: Zod.ZodOptional; model: Zod.ZodOptional; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; actionTypeId: Zod.ZodString; alertsIndexPattern: Zod.ZodOptional; allow: Zod.ZodOptional>; allowReplacement: Zod.ZodOptional>; replacements: Zod.ZodObject<{}, \"strip\", Zod.ZodString, Zod.objectOutputType<{}, Zod.ZodString, \"strip\">, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>; size: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" + "Zod.ZodObject<{ conversationId: Zod.ZodOptional>; message: Zod.ZodOptional; model: Zod.ZodOptional; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; actionTypeId: Zod.ZodString; alertsIndexPattern: Zod.ZodOptional; allow: Zod.ZodOptional>; allowReplacement: Zod.ZodOptional>; replacements: Zod.ZodObject<{}, \"strip\", Zod.ZodString, Zod.objectOutputType<{}, Zod.ZodString, \"strip\">, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>; size: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5541,7 +5541,7 @@ "signature": [ "Zod.ZodObject<{ connectorId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5556,7 +5556,7 @@ "signature": [ "Zod.ZodObject<{ data: Zod.ZodString; connector_id: Zod.ZodString; status: Zod.ZodString; trace_data: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { data: string; status: string; connector_id: string; trace_data?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { data: string; status: string; connector_id: string; trace_data?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5571,7 +5571,7 @@ "signature": [ "Zod.ZodObject<{ fields: Zod.ZodOptional, string[], unknown>>; filter: Zod.ZodOptional; sort_field: Zod.ZodOptional>; sort_order: Zod.ZodOptional>; page: Zod.ZodDefault>; per_page: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { per_page: number; page: number; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }, { per_page?: number | undefined; page?: number | undefined; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5584,9 +5584,9 @@ "label": "FindConversationsResponse", "description": [], "signature": [ - "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }, { page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }>" + "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }, { page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5601,7 +5601,7 @@ "signature": [ "Zod.ZodEnum<[\"created_at\", \"is_default\", \"title\", \"updated_at\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5616,7 +5616,7 @@ "signature": [ "{ title: \"title\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5631,7 +5631,7 @@ "signature": [ "Zod.ZodObject<{ fields: Zod.ZodOptional, string[], unknown>>; filter: Zod.ZodOptional; sort_field: Zod.ZodOptional>; sort_order: Zod.ZodOptional>; page: Zod.ZodDefault>; per_page: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { per_page: number; page: number; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }, { per_page?: number | undefined; page?: number | undefined; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5644,9 +5644,9 @@ "label": "FindKnowledgeBaseEntriesResponse", "description": [], "signature": [ - "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }, { page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }>" + "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }, { page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5661,7 +5661,7 @@ "signature": [ "Zod.ZodEnum<[\"created_at\", \"is_default\", \"title\", \"updated_at\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5676,7 +5676,7 @@ "signature": [ "{ title: \"title\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5691,7 +5691,7 @@ "signature": [ "Zod.ZodObject<{ fields: Zod.ZodOptional, string[], unknown>>; filter: Zod.ZodOptional; sort_field: Zod.ZodOptional>; sort_order: Zod.ZodOptional>; page: Zod.ZodDefault>; per_page: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { per_page: number; page: number; sort_field?: \"name\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }, { per_page?: number | undefined; page?: number | undefined; sort_field?: \"name\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5704,9 +5704,9 @@ "label": "FindPromptsResponse", "description": [], "signature": [ - "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; name: Zod.ZodString; promptType: Zod.ZodEnum<[\"system\", \"quick\"]>; content: Zod.ZodString; categories: Zod.ZodOptional>; color: Zod.ZodOptional; isNewConversationDefault: Zod.ZodOptional; isDefault: Zod.ZodOptional; consumer: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }, { page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }>" + "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; timestamp: Zod.ZodOptional>; name: Zod.ZodString; promptType: Zod.ZodEnum<[\"system\", \"quick\"]>; content: Zod.ZodString; categories: Zod.ZodOptional>; color: Zod.ZodOptional; isNewConversationDefault: Zod.ZodOptional; isDefault: Zod.ZodOptional; consumer: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }, { page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5721,7 +5721,7 @@ "signature": [ "Zod.ZodEnum<[\"created_at\", \"is_default\", \"name\", \"updated_at\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5736,7 +5736,7 @@ "signature": [ "{ name: \"name\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5751,7 +5751,7 @@ "signature": [ "Zod.ZodObject<{ date: Zod.ZodString; durationMs: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { date: string; durationMs: number; }, { date: string; durationMs: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5766,7 +5766,7 @@ "signature": [ "Zod.ZodObject<{ assistantModelEvaluation: Zod.ZodBoolean; defendInsights: Zod.ZodBoolean; }, \"strip\", Zod.ZodTypeAny, { assistantModelEvaluation: boolean; defendInsights: boolean; }, { assistantModelEvaluation: boolean; defendInsights: boolean; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5781,7 +5781,7 @@ "signature": [ "Zod.ZodObject<{ datasets: Zod.ZodArray; graphs: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { datasets: string[]; graphs: string[]; }, { datasets: string[]; graphs: string[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5796,7 +5796,7 @@ "signature": [ "Zod.ZodObject<{ indices: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { indices: string[]; }, { indices: string[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5809,9 +5809,9 @@ "label": "IndexEntry", "description": [], "signature": [ - "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" + "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5826,7 +5826,7 @@ "signature": [ "Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5841,7 +5841,7 @@ "signature": [ "Zod.ZodObject<{ inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5856,7 +5856,7 @@ "signature": [ "Zod.ZodObject<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { type: \"index\"; index: string; field: string; description: string; queryDescription: string; }, { type: \"index\"; index: string; field: string; description: string; queryDescription: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5871,7 +5871,7 @@ "signature": [ "Zod.ZodObject; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; index: string; field: string; description: string; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; index: string; field: string; description: string; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5886,7 +5886,7 @@ "signature": [ "Zod.ZodLiteral<\"index\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5899,9 +5899,9 @@ "label": "IndexEntryUpdateFields", "description": [], "signature": [ - "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" + "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5916,7 +5916,7 @@ "signature": [ "Zod.ZodArray, \"many\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5931,7 +5931,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5946,7 +5946,7 @@ "signature": [ "Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5961,7 +5961,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; name: Zod.ZodOptional; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5974,9 +5974,9 @@ "label": "KnowledgeBaseEntryBulkCrudActionResponse", "description": [], "signature": [ - "Zod.ZodObject<{ success: Zod.ZodOptional; statusCode: Zod.ZodOptional; message: Zod.ZodOptional; knowledgeBaseEntriesCount: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }>" + "Zod.ZodObject<{ success: Zod.ZodOptional; statusCode: Zod.ZodOptional; message: Zod.ZodOptional; knowledgeBaseEntriesCount: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5989,9 +5989,9 @@ "label": "KnowledgeBaseEntryBulkCrudActionResults", "description": [], "signature": [ - "Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>" + "Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6006,7 +6006,7 @@ "signature": [ "Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6021,7 +6021,7 @@ "signature": [ "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6036,7 +6036,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6051,7 +6051,7 @@ "signature": [ "Zod.ZodObject<{ statusCode: Zod.ZodNumber; error: Zod.ZodString; message: Zod.ZodString; }, \"strict\", Zod.ZodTypeAny, { error: string; message: string; statusCode: number; }, { error: string; message: string; statusCode: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6064,9 +6064,9 @@ "label": "KnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6079,9 +6079,9 @@ "label": "KnowledgeBaseEntryUpdateProps", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6096,7 +6096,7 @@ "signature": [ "Zod.ZodObject<{ success: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { success?: boolean | undefined; }, { success?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6109,9 +6109,9 @@ "label": "Message", "description": [], "signature": [ - "Zod.ZodObject<{ content: Zod.ZodString; reader: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>" + "Zod.ZodObject<{ content: Zod.ZodString; reader: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6126,7 +6126,7 @@ "signature": [ "Zod.ZodObject<{}, \"strip\", Zod.ZodUnknown, Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6141,7 +6141,7 @@ "signature": [ "Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6156,7 +6156,7 @@ "signature": [ "{ user: \"user\"; system: \"system\"; assistant: \"assistant\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6171,7 +6171,7 @@ "signature": [ "Zod.ZodObject<{ kbResource: Zod.ZodString; source: Zod.ZodString; required: Zod.ZodBoolean; }, \"strip\", Zod.ZodTypeAny, { source: string; required: boolean; kbResource: string; }, { source: string; required: boolean; kbResource: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6184,9 +6184,9 @@ "label": "NonEmptyString", "description": [], "signature": [ - "Zod.ZodString" + "Zod.ZodEffects" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6201,7 +6201,7 @@ "signature": [ "Zod.ZodObject<{ message: Zod.ZodString; status_code: Zod.ZodNumber; err_code: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6216,7 +6216,7 @@ "signature": [ "Zod.ZodObject<{ message: Zod.ZodString; statusCode: Zod.ZodNumber; err_code: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6229,9 +6229,9 @@ "label": "PerformBulkActionRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; update: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" + "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; update: Zod.ZodOptional; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6244,9 +6244,9 @@ "label": "PerformBulkActionResponse", "description": [], "signature": [ - "Zod.ZodObject<{ success: Zod.ZodOptional; status_code: Zod.ZodOptional; message: Zod.ZodOptional; conversations_count: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }>" + "Zod.ZodObject<{ success: Zod.ZodOptional; status_code: Zod.ZodOptional; message: Zod.ZodOptional; conversations_count: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6259,9 +6259,9 @@ "label": "PerformKnowledgeBaseEntryBulkActionRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">>; update: Zod.ZodOptional; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" + "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">>; update: Zod.ZodOptional; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6274,9 +6274,9 @@ "label": "PerformKnowledgeBaseEntryBulkActionResponse", "description": [], "signature": [ - "Zod.ZodObject<{ success: Zod.ZodOptional; statusCode: Zod.ZodOptional; message: Zod.ZodOptional; knowledgeBaseEntriesCount: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }>" + "Zod.ZodObject<{ success: Zod.ZodOptional; statusCode: Zod.ZodOptional; message: Zod.ZodOptional; knowledgeBaseEntriesCount: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6291,7 +6291,7 @@ "signature": [ "Zod.ZodObject<{ graphs: Zod.ZodArray; datasetName: Zod.ZodString; evaluatorConnectorId: Zod.ZodOptional; connectorIds: Zod.ZodArray; runName: Zod.ZodOptional; alertsIndexPattern: Zod.ZodDefault>; langSmithApiKey: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; replacements: Zod.ZodDefault, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>>; size: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { size: number; alertsIndexPattern: string; replacements: {} & { [k: string]: string; }; graphs: string[]; datasetName: string; connectorIds: string[]; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }, { graphs: string[]; datasetName: string; connectorIds: string[]; size?: number | undefined; alertsIndexPattern?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6306,7 +6306,7 @@ "signature": [ "Zod.ZodObject<{ graphs: Zod.ZodArray; datasetName: Zod.ZodString; evaluatorConnectorId: Zod.ZodOptional; connectorIds: Zod.ZodArray; runName: Zod.ZodOptional; alertsIndexPattern: Zod.ZodDefault>; langSmithApiKey: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; replacements: Zod.ZodDefault, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>>; size: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { size: number; alertsIndexPattern: string; replacements: {} & { [k: string]: string; }; graphs: string[]; datasetName: string; connectorIds: string[]; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }, { graphs: string[]; datasetName: string; connectorIds: string[]; size?: number | undefined; alertsIndexPattern?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6321,7 +6321,7 @@ "signature": [ "Zod.ZodObject<{ evaluationId: Zod.ZodString; success: Zod.ZodBoolean; }, \"strip\", Zod.ZodTypeAny, { success: boolean; evaluationId: string; }, { success: boolean; evaluationId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6334,9 +6334,9 @@ "label": "PromptResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; name: Zod.ZodString; promptType: Zod.ZodEnum<[\"system\", \"quick\"]>; content: Zod.ZodString; categories: Zod.ZodOptional>; color: Zod.ZodOptional; isNewConversationDefault: Zod.ZodOptional; isDefault: Zod.ZodOptional; consumer: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; name: Zod.ZodString; promptType: Zod.ZodEnum<[\"system\", \"quick\"]>; content: Zod.ZodString; categories: Zod.ZodOptional>; color: Zod.ZodOptional; isNewConversationDefault: Zod.ZodOptional; isDefault: Zod.ZodOptional; consumer: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6351,7 +6351,7 @@ "signature": [ "{ system: \"system\"; quick: \"quick\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6366,7 +6366,7 @@ "signature": [ "Zod.ZodEnum<[\"OpenAI\", \"Azure OpenAI\", \"Other\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6381,7 +6381,7 @@ "signature": [ "{ Other: \"Other\"; OpenAI: \"OpenAI\"; \"Azure OpenAI\": \"Azure OpenAI\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6394,9 +6394,9 @@ "label": "ReadConversationRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6409,9 +6409,9 @@ "label": "ReadConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6426,7 +6426,7 @@ "signature": [ "Zod.ZodObject<{}, \"strip\", Zod.ZodUnknown, Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6439,9 +6439,9 @@ "label": "ReadKnowledgeBaseEntryRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6454,9 +6454,9 @@ "label": "ReadKnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6471,7 +6471,7 @@ "signature": [ "Zod.ZodObject<{ resource: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { resource?: string | undefined; }, { resource?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6486,7 +6486,7 @@ "signature": [ "Zod.ZodObject<{ elser_exists: Zod.ZodOptional; index_exists: Zod.ZodOptional; is_setup_available: Zod.ZodOptional; is_setup_in_progress: Zod.ZodOptional; pipeline_exists: Zod.ZodOptional; security_labs_exists: Zod.ZodOptional; user_data_exists: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { elser_exists?: boolean | undefined; index_exists?: boolean | undefined; is_setup_available?: boolean | undefined; is_setup_in_progress?: boolean | undefined; pipeline_exists?: boolean | undefined; security_labs_exists?: boolean | undefined; user_data_exists?: boolean | undefined; }, { elser_exists?: boolean | undefined; index_exists?: boolean | undefined; is_setup_available?: boolean | undefined; is_setup_in_progress?: boolean | undefined; pipeline_exists?: boolean | undefined; security_labs_exists?: boolean | undefined; user_data_exists?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6501,7 +6501,7 @@ "signature": [ "Zod.ZodObject<{}, \"strip\", Zod.ZodString, Zod.objectOutputType<{}, Zod.ZodString, \"strip\">, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6514,9 +6514,9 @@ "label": "ResponseFields", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }, { id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }, { id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6531,7 +6531,7 @@ "signature": [ "Zod.ZodLiteral<\"security\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6544,9 +6544,9 @@ "label": "SharedResponseProps", "description": [], "signature": [ - "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }, { id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }>" + "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }, { id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6561,7 +6561,7 @@ "signature": [ "Zod.ZodEnum<[\"asc\", \"desc\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6576,7 +6576,7 @@ "signature": [ "{ asc: \"asc\"; desc: \"desc\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6591,7 +6591,7 @@ "signature": [ "Zod.ZodObject<{ transactionId: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6604,9 +6604,9 @@ "label": "UpdateConversationRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6619,9 +6619,9 @@ "label": "UpdateConversationRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6634,9 +6634,9 @@ "label": "UpdateConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6649,9 +6649,9 @@ "label": "UpdateKnowledgeBaseEntryRequestBody", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6664,9 +6664,9 @@ "label": "UpdateKnowledgeBaseEntryRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6679,9 +6679,9 @@ "label": "UpdateKnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6696,7 +6696,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6711,7 +6711,7 @@ "signature": [ "Zod.ZodString" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6726,7 +6726,7 @@ "signature": [ "Zod.ZodObject<{ modelId: Zod.ZodString; tokens: Zod.ZodObject<{}, \"strip\", Zod.ZodNumber, Zod.objectOutputType<{}, Zod.ZodNumber, \"strip\">, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index 638efcb519e5e..c79ef10364356 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index 44dd0e169a22c..69590291c8ba0 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 5543f3a6b731e..fc682489b4b00 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 97f4a71795a7d..8ee3ddf1717cb 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 9d3f70b0ee967..2d7f691f3cc62 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 0262b0586b2ff..c946c7b7bd9de 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.devdocs.json b/api_docs/kbn_es_types.devdocs.json index ec62dd1cd61ff..31946760a86fb 100644 --- a/api_docs/kbn_es_types.devdocs.json +++ b/api_docs/kbn_es_types.devdocs.json @@ -584,6 +584,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESSearchRequestWithoutBody", + "type": "Type", + "tags": [], + "label": "ESSearchRequestWithoutBody", + "description": [], + "signature": [ + "SearchRequest" + ], + "path": "packages/kbn-es-types/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/es-types", "id": "def-common.ESSearchResponse", diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index d9681706b3663..d8fb21f2d5745 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 30 | 0 | 30 | 1 | +| 31 | 0 | 31 | 1 | ## Common diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index fd86888ec92f7..1c3cc31e38c60 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.devdocs.json b/api_docs/kbn_esql_ast.devdocs.json index ff840245529ca..a0e8158ca2668 100644 --- a/api_docs/kbn_esql_ast.devdocs.json +++ b/api_docs/kbn_esql_ast.devdocs.json @@ -4160,7 +4160,9 @@ "parentPluginId": "@kbn/esql-ast", "id": "def-common.ESQLTimeInterval.type", "type": "string", - "tags": [], + "tags": [ + "todo" + ], "label": "type", "description": [], "signature": [ @@ -5774,6 +5776,40 @@ ], "returnComment": [] }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.LeafPrinter.string", + "type": "Function", + "tags": [], + "label": "string", + "description": [], + "signature": [ + "(node: ", + "ESQLStringLiteral", + ") => string" + ], + "path": "src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.LeafPrinter.string.$1", + "type": "Object", + "tags": [], + "label": "node", + "description": [], + "signature": [ + "ESQLStringLiteral" + ], + "path": "src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "@kbn/esql-ast", "id": "def-common.LeafPrinter.literal", diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index 8ed0263341e48..19d48b8a6e153 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 285 | 1 | 223 | 25 | +| 287 | 1 | 225 | 25 | ## Common diff --git a/api_docs/kbn_esql_editor.devdocs.json b/api_docs/kbn_esql_editor.devdocs.json index ca2d78c9c89eb..b464c8bd5f1eb 100644 --- a/api_docs/kbn_esql_editor.devdocs.json +++ b/api_docs/kbn_esql_editor.devdocs.json @@ -83,15 +83,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined, abortController: AbortController | undefined, dataView: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | undefined) => Promise<", + " | undefined, abortController: AbortController | undefined, timeFieldName: string | undefined) => Promise<", { "pluginId": "expressions", "scope": "common", @@ -195,19 +187,12 @@ { "parentPluginId": "@kbn/esql-editor", "id": "def-public.fetchFieldsFromESQL.$5", - "type": "Object", + "type": "string", "tags": [], - "label": "dataView", + "label": "timeFieldName", "description": [], "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | undefined" + "string | undefined" ], "path": "src/platform/packages/private/kbn-esql-editor/src/fetch_fields_from_esql.ts", "deprecated": false, diff --git a/api_docs/kbn_esql_editor.mdx b/api_docs/kbn_esql_editor.mdx index fe9ce1cc47c81..c102fb7faefab 100644 --- a/api_docs/kbn_esql_editor.mdx +++ b/api_docs/kbn_esql_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-editor title: "@kbn/esql-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-editor plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-editor'] --- import kbnEsqlEditorObj from './kbn_esql_editor.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index 147541982ac31..b8a6b8c8ebc58 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index 0a9ac9b139b28..18635a4e21237 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 135919de21d39..ad7426cdc2922 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index d16d03113ce27..f5c4aaa40e632 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.devdocs.json b/api_docs/kbn_expandable_flyout.devdocs.json index 10de89b7d3657..8a6858f594bb8 100644 --- a/api_docs/kbn_expandable_flyout.devdocs.json +++ b/api_docs/kbn_expandable_flyout.devdocs.json @@ -23,7 +23,7 @@ }, "): React.JSX.Element | null; displayName: string | undefined; }" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -43,7 +43,7 @@ "text": "ExpandableFlyoutProps" } ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -64,7 +64,7 @@ "signature": [ "({ children, urlKey, }: React.PropsWithChildren) => React.JSX.Element" ], - "path": "packages/kbn-expandable-flyout/src/provider.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -78,7 +78,7 @@ "signature": [ "React.PropsWithChildren" ], - "path": "packages/kbn-expandable-flyout/src/provider.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -106,7 +106,34 @@ "text": "ExpandableFlyoutApi" } ], - "path": "packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/expandable-flyout", + "id": "def-public.useExpandableFlyoutHistory", + "type": "Function", + "tags": [], + "label": "useExpandableFlyoutHistory", + "description": [ + "\nThis hook allows you to access the flyout state, read open right, left and preview panels." + ], + "signature": [ + "() => ", + { + "pluginId": "@kbn/expandable-flyout", + "scope": "public", + "docId": "kibKbnExpandableFlyoutPluginApi", + "section": "def-public.FlyoutPanelProps", + "text": "FlyoutPanelProps" + }, + "[]" + ], + "path": "x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -132,7 +159,7 @@ "text": "FlyoutPanels" } ], - "path": "packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -148,7 +175,7 @@ "tags": [], "label": "ExpandableFlyoutApi", "description": [], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -188,7 +215,7 @@ }, " | undefined; }) => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -199,7 +226,7 @@ "tags": [], "label": "panels", "description": [], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -220,7 +247,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -241,7 +268,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -262,7 +289,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -291,7 +318,7 @@ }, ") => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -311,7 +338,7 @@ "text": "FlyoutPanelProps" } ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -339,7 +366,7 @@ }, ") => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -359,7 +386,7 @@ "text": "FlyoutPanelProps" } ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -387,7 +414,7 @@ }, ") => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -407,7 +434,7 @@ "text": "FlyoutPanelProps" } ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -427,7 +454,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -445,7 +472,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -463,7 +490,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -481,7 +508,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -499,7 +526,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -527,7 +554,7 @@ "EuiFlyoutResizableProps", ", \"onClose\">" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -544,7 +571,7 @@ "Panel", "[]" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -569,7 +596,7 @@ "Theme", ">" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -585,7 +612,7 @@ "signature": [ "((event: KeyboardEvent | MouseEvent | TouchEvent) => void) | undefined" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -602,7 +629,7 @@ "FlyoutCustomProps", " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -618,7 +645,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false } @@ -632,7 +659,7 @@ "tags": [], "label": "FlyoutPanelProps", "description": [], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -645,7 +672,7 @@ "description": [ "\nUnique key to identify the panel" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -661,7 +688,7 @@ "signature": [ "Record | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -684,7 +711,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -700,7 +727,7 @@ "signature": [ "Record | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -714,7 +741,7 @@ "tags": [], "label": "FlyoutPanels", "description": [], - "path": "packages/kbn-expandable-flyout/src/store/state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -737,7 +764,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/store/state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", "deprecated": false, "trackAdoption": false }, @@ -760,7 +787,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/store/state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", "deprecated": false, "trackAdoption": false }, @@ -783,7 +810,28 @@ }, "[] | undefined" ], - "path": "packages/kbn-expandable-flyout/src/store/state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/expandable-flyout", + "id": "def-public.FlyoutPanels.history", + "type": "Array", + "tags": [], + "label": "history", + "description": [], + "signature": [ + { + "pluginId": "@kbn/expandable-flyout", + "scope": "public", + "docId": "kibKbnExpandableFlyoutPluginApi", + "section": "def-public.FlyoutPanelProps", + "text": "FlyoutPanelProps" + }, + "[]" + ], + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", "deprecated": false, "trackAdoption": false } @@ -797,7 +845,7 @@ "tags": [], "label": "PanelPath", "description": [], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -810,7 +858,7 @@ "description": [ "\nTop level tab that to be displayed" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -826,7 +874,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index 67c2c53ceb4d0..82bb5ff6cb885 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-threat-hunting-investigations](https://github.com/org | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 41 | 0 | 14 | 2 | +| 43 | 0 | 15 | 2 | ## Client diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 9796938facfbb..66b0bb5e6cf0a 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 8e5483df68d9f..6cc4453d6dae8 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 589fa07000ee9..821ff48855612 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_formatters.mdx b/api_docs/kbn_formatters.mdx index 05ff409798bae..1c1e7021782b4 100644 --- a/api_docs/kbn_formatters.mdx +++ b/api_docs/kbn_formatters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-formatters title: "@kbn/formatters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/formatters plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/formatters'] --- import kbnFormattersObj from './kbn_formatters.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index a601c6945befa..943465c42c784 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json b/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json index 048e3d908e3f5..07675d918c70b 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json +++ b/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json @@ -11914,6 +11914,76 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.InterceptResponseFactory", + "type": "Interface", + "tags": [], + "label": "InterceptResponseFactory", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/browser.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.InterceptResponseFactory.fail", + "type": "Function", + "tags": [], + "label": "fail", + "description": [], + "signature": [ + "() => [\"Fetch.failRequest\", ", + "Protocol", + ".Fetch.FailRequestRequest]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/browser.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.InterceptResponseFactory.fulfill", + "type": "Function", + "tags": [], + "label": "fulfill", + "description": [], + "signature": [ + "(responseOptions: Omit<", + "Protocol", + ".Fetch.FulfillRequestRequest, \"requestId\">) => [\"Fetch.fulfillRequest\", ", + "Protocol", + ".Fetch.FulfillRequestRequest]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/browser.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.InterceptResponseFactory.fulfill.$1", + "type": "Object", + "tags": [], + "label": "responseOptions", + "description": [], + "signature": [ + "Omit<", + "Protocol", + ".Fetch.FulfillRequestRequest, \"requestId\">" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/browser.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/ftr-common-functional-ui-services", "id": "def-common.NetworkOptions", diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 41a1ed2e9cf6e..293d3c3dbdc04 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) for | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 560 | 6 | 520 | 7 | +| 564 | 6 | 524 | 7 | ## Common diff --git a/api_docs/kbn_gen_ai_functional_testing.mdx b/api_docs/kbn_gen_ai_functional_testing.mdx index ebc94ef881e85..0068cc00d0042 100644 --- a/api_docs/kbn_gen_ai_functional_testing.mdx +++ b/api_docs/kbn_gen_ai_functional_testing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-gen-ai-functional-testing title: "@kbn/gen-ai-functional-testing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/gen-ai-functional-testing plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/gen-ai-functional-testing'] --- import kbnGenAiFunctionalTestingObj from './kbn_gen_ai_functional_testing.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 2e84064392c76..74a35a15ce539 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index 7c7da8e893bb9..00e9ffa3ee153 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 1ba4e75358a94..0ead547b7f603 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grid_layout.mdx b/api_docs/kbn_grid_layout.mdx index 3abfaaebaaa51..45b18e5f8b745 100644 --- a/api_docs/kbn_grid_layout.mdx +++ b/api_docs/kbn_grid_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grid-layout title: "@kbn/grid-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grid-layout plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grid-layout'] --- import kbnGridLayoutObj from './kbn_grid_layout.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index e4933bb1ff4a2..8c3c79939e2a1 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index bbc027ad2c3c7..d612270029841 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 638ba0efb44a1..6a616b10ba7fa 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index d19a016a5d9f6..9537a13206668 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 36325139bd057..7b17f4a9536ad 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 227d38b14298a..49f9af7afbde4 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 21cb65455ca07..2fee8eff547e6 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index b7a54c71affa3..58259d6f4b443 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index de7ebf0e5ea50..48ecb52e03632 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index ae94fc2a4d033..c9968a2d3e75b 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_adapter.devdocs.json b/api_docs/kbn_index_adapter.devdocs.json index ac852981ef207..935776730bb27 100644 --- a/api_docs/kbn_index_adapter.devdocs.json +++ b/api_docs/kbn_index_adapter.devdocs.json @@ -17,7 +17,7 @@ "tags": [], "label": "IndexAdapter", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -28,7 +28,7 @@ "tags": [], "label": "kibanaVersion", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -39,7 +39,7 @@ "tags": [], "label": "totalFieldsLimit", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -54,7 +54,7 @@ "ClusterPutComponentTemplateRequest", "[]" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -69,7 +69,7 @@ "IndicesPutIndexTemplateRequest", "[]" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -80,7 +80,7 @@ "tags": [], "label": "installed", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -94,7 +94,7 @@ "signature": [ "any" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -108,7 +108,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -129,7 +129,7 @@ "text": "IndexAdapterParams" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -149,7 +149,7 @@ "GetComponentTemplateOpts", ") => void" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -163,7 +163,7 @@ "signature": [ "GetComponentTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -189,7 +189,7 @@ }, ") => void" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -209,7 +209,7 @@ "text": "SetIndexTemplateParams" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -229,7 +229,7 @@ "GetInstallFnParams", ") => (promise: Promise, description?: string | undefined) => Promise" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -243,7 +243,7 @@ "signature": [ "GetInstallFnParams" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -269,7 +269,7 @@ }, ") => Promise" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -289,7 +289,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -315,7 +315,7 @@ }, ") => Promise" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -335,7 +335,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -370,7 +370,7 @@ "text": "IndexAdapter" } ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -384,7 +384,7 @@ "signature": [ "Map>" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -406,7 +406,7 @@ }, "> | undefined" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -420,7 +420,7 @@ "signature": [ "any" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -434,7 +434,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -455,7 +455,7 @@ "text": "IndexAdapterParams" } ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -483,7 +483,7 @@ }, ") => Promise" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -503,7 +503,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -537,7 +537,7 @@ }, ">" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -557,7 +557,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -577,7 +577,7 @@ "signature": [ "(indexSuffix: string) => Promise" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -591,7 +591,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -611,7 +611,7 @@ "signature": [ "(indexSuffix: string) => string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -625,7 +625,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -645,7 +645,7 @@ "signature": [ "(indexSuffix: string) => Promise" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -659,7 +659,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -682,7 +682,7 @@ "signature": [ "({ logger, esClient, template, totalFieldsLimit, }: CreateOrUpdateComponentTemplateOpts) => Promise" ], - "path": "packages/kbn-index-adapter/src/create_or_update_component_template.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -696,7 +696,7 @@ "signature": [ "CreateOrUpdateComponentTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/create_or_update_component_template.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -717,7 +717,7 @@ "signature": [ "({ logger, esClient, template, }: CreateOrUpdateIndexTemplateOpts) => Promise" ], - "path": "packages/kbn-index-adapter/src/create_or_update_index_template.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -731,7 +731,7 @@ "signature": [ "CreateOrUpdateIndexTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/create_or_update_index_template.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -758,7 +758,7 @@ }, "; attempt?: number | undefined; }) => Promise" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -772,7 +772,7 @@ "signature": [ "() => Promise" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -784,7 +784,7 @@ "tags": [], "label": "{ logger, attempt = 0 }", "description": [], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -804,7 +804,7 @@ "text": "Logger" } ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false }, @@ -818,7 +818,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false } @@ -837,7 +837,7 @@ "tags": [], "label": "AllowedValue", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -851,7 +851,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -865,7 +865,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -879,7 +879,7 @@ "tags": [], "label": "EcsMetadata", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -900,7 +900,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -911,7 +911,7 @@ "tags": [], "label": "dashed_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -922,7 +922,7 @@ "tags": [], "label": "description", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -936,7 +936,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -950,7 +950,7 @@ "signature": [ "string | number | boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -961,7 +961,7 @@ "tags": [], "label": "flat_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -975,7 +975,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -989,7 +989,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1000,7 +1000,7 @@ "tags": [], "label": "level", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1021,7 +1021,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1032,7 +1032,7 @@ "tags": [], "label": "name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1046,7 +1046,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1060,7 +1060,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1074,7 +1074,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1085,7 +1085,7 @@ "tags": [], "label": "short", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1096,7 +1096,7 @@ "tags": [], "label": "type", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1110,7 +1110,7 @@ "signature": [ "Record | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -1124,7 +1124,7 @@ "tags": [], "label": "IndexAdapterParams", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1135,7 +1135,7 @@ "tags": [], "label": "kibanaVersion", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -1149,7 +1149,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false } @@ -1163,7 +1163,7 @@ "tags": [], "label": "InstallParams", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1183,7 +1183,7 @@ "text": "Logger" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -1212,7 +1212,7 @@ }, ">" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -1227,7 +1227,7 @@ "Subject", "" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -1241,7 +1241,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false } @@ -1255,7 +1255,7 @@ "tags": [], "label": "MultiField", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1266,7 +1266,7 @@ "tags": [], "label": "flat_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1277,7 +1277,7 @@ "tags": [], "label": "name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1288,7 +1288,7 @@ "tags": [], "label": "type", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -1316,7 +1316,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1339,7 +1339,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1354,7 +1354,7 @@ "signature": [ "(indexSuffix: string) => Promise" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1366,7 +1366,7 @@ "tags": [], "label": "indexSuffix", "description": [], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false } @@ -1391,7 +1391,7 @@ }, ", keyof NonNullable>}` : `${Key}` : never" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1406,7 +1406,7 @@ "signature": [ "GetComponentTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1423,7 +1423,7 @@ "IndicesPutIndexTemplateIndexTemplateMapping", " | undefined; componentTemplateRefs?: string[] | undefined; isDataStream?: boolean | undefined; }" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1448,7 +1448,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_index_adapter.mdx b/api_docs/kbn_index_adapter.mdx index 18930da423ca8..fe45dcbf1d9c9 100644 --- a/api_docs/kbn_index_adapter.mdx +++ b/api_docs/kbn_index_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-adapter title: "@kbn/index-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-adapter plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-adapter'] --- import kbnIndexAdapterObj from './kbn_index_adapter.devdocs.json'; diff --git a/api_docs/kbn_index_lifecycle_management_common_shared.devdocs.json b/api_docs/kbn_index_lifecycle_management_common_shared.devdocs.json index 62664293d6a46..350f5f4933f77 100644 --- a/api_docs/kbn_index_lifecycle_management_common_shared.devdocs.json +++ b/api_docs/kbn_index_lifecycle_management_common_shared.devdocs.json @@ -27,7 +27,7 @@ "tags": [], "label": "AllocateAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -55,7 +55,7 @@ "signature": [ "{} | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -69,7 +69,7 @@ "signature": [ "{} | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -83,7 +83,7 @@ "signature": [ "{ [attribute: string]: string; } | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -97,7 +97,7 @@ "tags": [], "label": "CommonPhaseSettings", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -108,7 +108,7 @@ "tags": [], "label": "phaseEnabled", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -147,7 +147,7 @@ "text": "PhaseWithMinAge" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -158,7 +158,7 @@ "tags": [], "label": "waitForSnapshotPolicy", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -172,7 +172,7 @@ "tags": [], "label": "DownsampleAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -183,7 +183,7 @@ "tags": [], "label": "fixed_interval", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -197,7 +197,7 @@ "tags": [], "label": "ForcemergeAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -208,7 +208,7 @@ "tags": [], "label": "max_num_segments", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -222,7 +222,7 @@ "signature": [ "\"best_compression\" | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -236,7 +236,7 @@ "tags": [], "label": "MigrateAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -249,7 +249,7 @@ "description": [ "\nIf enabled is ever set it will probably only be set to `false` because the default value\nfor this is `true`. Rather leave unspecified for true when serialising." ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -263,7 +263,7 @@ "tags": [], "label": "Phases", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -284,7 +284,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -305,7 +305,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -326,7 +326,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -347,7 +347,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -368,7 +368,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -382,7 +382,7 @@ "tags": [], "label": "PhaseWithMinAge", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -393,7 +393,7 @@ "tags": [], "label": "selectedMinimumAge", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -404,7 +404,7 @@ "tags": [], "label": "selectedMinimumAgeUnits", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -418,7 +418,7 @@ "tags": [], "label": "PolicyFromES", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -429,7 +429,7 @@ "tags": [], "label": "modifiedDate", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -440,7 +440,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -460,7 +460,7 @@ "text": "SerializedPolicy" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -471,7 +471,7 @@ "tags": [], "label": "version", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -485,7 +485,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -499,7 +499,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -513,7 +513,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -527,7 +527,7 @@ "tags": [], "label": "RolloverAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -541,7 +541,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -555,7 +555,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -569,7 +569,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -583,7 +583,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -599,77 +599,77 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/__jest__/mocks.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/__jest__/mocks.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" } ] } @@ -683,7 +683,7 @@ "tags": [], "label": "SearchableSnapshotAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -694,7 +694,7 @@ "tags": [], "label": "snapshot_repository", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -710,7 +710,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -724,7 +724,7 @@ "tags": [], "label": "SerializedActionWithAllocation", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -745,7 +745,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -766,7 +766,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -797,7 +797,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -851,7 +851,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -882,7 +882,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -896,7 +896,7 @@ "signature": [ "{ wait_for_snapshot?: { policy: string; } | undefined; delete?: { delete_searchable_snapshot?: boolean | undefined; } | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -927,7 +927,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -949,7 +949,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -980,7 +980,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1042,7 +1042,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1056,7 +1056,7 @@ "tags": [], "label": "SerializedPhase", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1070,7 +1070,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1084,7 +1084,7 @@ "signature": [ "{ [action: string]: any; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1098,7 +1098,7 @@ "tags": [], "label": "SerializedPolicy", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1109,7 +1109,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1129,7 +1129,7 @@ "text": "Phases" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1143,7 +1143,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1157,7 +1157,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1188,7 +1188,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1250,7 +1250,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1264,7 +1264,7 @@ "tags": [], "label": "SetPriorityAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1278,7 +1278,7 @@ "signature": [ "number | null" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1292,7 +1292,7 @@ "tags": [], "label": "ShrinkAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1306,7 +1306,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1320,7 +1320,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1334,7 +1334,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1354,7 +1354,7 @@ "signature": [ "\"ILM_LOCATOR_ID\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1376,7 +1376,7 @@ "text": "Phases" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1391,7 +1391,7 @@ "signature": [ "\"warm\" | \"hot\" | \"frozen\" | \"cold\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1406,7 +1406,7 @@ "signature": [ "\"warm\" | \"cold\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1421,7 +1421,7 @@ "signature": [ "\"warm\" | \"hot\" | \"cold\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1436,7 +1436,7 @@ "signature": [ "\"delete\" | \"warm\" | \"frozen\" | \"cold\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_index_lifecycle_management_common_shared.mdx b/api_docs/kbn_index_lifecycle_management_common_shared.mdx index 261488413d7a3..c97099ed2fb43 100644 --- a/api_docs/kbn_index_lifecycle_management_common_shared.mdx +++ b/api_docs/kbn_index_lifecycle_management_common_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-lifecycle-management-common-shared title: "@kbn/index-lifecycle-management-common-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-lifecycle-management-common-shared plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-lifecycle-management-common-shared'] --- import kbnIndexLifecycleManagementCommonSharedObj from './kbn_index_lifecycle_management_common_shared.devdocs.json'; diff --git a/api_docs/kbn_index_management_shared_types.devdocs.json b/api_docs/kbn_index_management_shared_types.devdocs.json index e1db60365e06f..f57ce5ad4ef72 100644 --- a/api_docs/kbn_index_management_shared_types.devdocs.json +++ b/api_docs/kbn_index_management_shared_types.devdocs.json @@ -27,7 +27,7 @@ "tags": [], "label": "EmptyListContent", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "(args: { createIndexButton: React.ReactElement | null; }) => React.ReactElement | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -52,7 +52,7 @@ "tags": [], "label": "args", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -66,7 +66,7 @@ "signature": [ "React.ReactElement | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false } @@ -85,7 +85,7 @@ "tags": [], "label": "ExtensionsSetup", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -99,7 +99,7 @@ "signature": [ "(action: any) => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -113,7 +113,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -131,7 +131,7 @@ "signature": [ "(banner: any) => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -145,7 +145,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -163,7 +163,7 @@ "signature": [ "(filter: any) => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -177,7 +177,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -203,7 +203,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -223,7 +223,7 @@ "text": "IndexBadge" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -249,7 +249,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -269,7 +269,7 @@ "text": "IndexToggle" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -295,7 +295,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -315,7 +315,7 @@ "text": "IndicesListColumn" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -341,7 +341,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -361,7 +361,7 @@ "text": "EmptyListContent" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -387,7 +387,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -407,7 +407,7 @@ "text": "IndexDetailsTab" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -433,7 +433,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -453,7 +453,7 @@ "text": "IndexContent" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -479,7 +479,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -499,7 +499,7 @@ "text": "IndexContent" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -525,7 +525,7 @@ }, ", detailsTabId?: string | undefined) => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -545,7 +545,7 @@ "text": "IndexDetailsPageRoute" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -560,7 +560,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -578,7 +578,7 @@ "tags": [], "label": "Index", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -589,7 +589,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -603,7 +603,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -617,7 +617,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -628,7 +628,7 @@ "tags": [], "label": "isFrozen", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -639,7 +639,7 @@ "tags": [], "label": "hidden", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -653,7 +653,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -667,7 +667,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -681,7 +681,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -696,7 +696,7 @@ "IlmExplainLifecycleLifecycleExplain", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -710,7 +710,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -725,7 +725,7 @@ "HealthStatus", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -740,7 +740,7 @@ "IndicesStatsIndexMetadataState", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -754,7 +754,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -768,7 +768,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -782,7 +782,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -796,7 +796,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -810,7 +810,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -824,7 +824,7 @@ "tags": [], "label": "IndexBadge", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -846,7 +846,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -866,7 +866,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -881,7 +881,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -895,7 +895,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -909,7 +909,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false } @@ -923,7 +923,7 @@ "tags": [], "label": "IndexContent", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -945,7 +945,7 @@ }, "; getUrlForApp: (appId: string, options?: { path?: string | undefined; absolute?: boolean | undefined; deepLinkId?: string | undefined; } | undefined) => string; }) => React.ReactElement | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -956,7 +956,7 @@ "tags": [], "label": "args", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -976,7 +976,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -990,7 +990,7 @@ "signature": [ "(appId: string, options?: { path?: string | undefined; absolute?: boolean | undefined; deepLinkId?: string | undefined; } | undefined) => string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1037,7 +1037,7 @@ "tags": [], "label": "IndexDetailsPageRoute", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1051,7 +1051,7 @@ "signature": [ "(indexName: string, detailsTabId?: string | undefined) => string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1065,7 +1065,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1080,7 +1080,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1098,7 +1098,7 @@ "tags": [], "label": "IndexDetailsTab", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1109,7 +1109,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false }, @@ -1123,7 +1123,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false }, @@ -1145,7 +1145,7 @@ }, "; getUrlForApp: (appId: string, options?: { path?: string | undefined; absolute?: boolean | undefined; deepLinkId?: string | undefined; } | undefined) => string; }) => React.ReactElement | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1156,7 +1156,7 @@ "tags": [], "label": "args", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1176,7 +1176,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false }, @@ -1190,7 +1190,7 @@ "signature": [ "(appId: string, options?: { path?: string | undefined; absolute?: boolean | undefined; deepLinkId?: string | undefined; } | undefined) => string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1234,7 +1234,7 @@ "tags": [], "label": "order", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false }, @@ -1256,7 +1256,7 @@ }, "; }) => boolean) | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1267,7 +1267,7 @@ "tags": [], "label": "args", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1287,7 +1287,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false } @@ -1307,7 +1307,7 @@ "EuiBreadcrumbProps", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false } @@ -1321,7 +1321,7 @@ "tags": [], "label": "IndexManagementPluginSetup", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1341,7 +1341,7 @@ "text": "PublicApiServiceSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1361,7 +1361,7 @@ "text": "ExtensionsSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1382,7 +1382,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1396,7 +1396,7 @@ "tags": [], "label": "IndexManagementPluginStart", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1416,7 +1416,7 @@ "text": "ExtensionsSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1446,7 +1446,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1457,7 +1457,7 @@ "tags": [], "label": "deps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1478,7 +1478,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1513,7 +1513,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1524,7 +1524,7 @@ "tags": [], "label": "deps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1545,7 +1545,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1564,7 +1564,7 @@ "tags": [], "label": "IndexMappingProps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1585,7 +1585,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1599,7 +1599,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1613,7 +1613,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1627,7 +1627,7 @@ "tags": [], "label": "IndexSettingProps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1638,7 +1638,7 @@ "tags": [], "label": "indexName", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1652,7 +1652,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1666,7 +1666,7 @@ "tags": [], "label": "IndexToggle", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1688,7 +1688,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1708,7 +1708,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1723,7 +1723,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -1734,7 +1734,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false } @@ -1748,7 +1748,7 @@ "tags": [], "label": "IndicesListColumn", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1759,7 +1759,7 @@ "tags": [], "label": "fieldName", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -1770,7 +1770,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -1781,7 +1781,7 @@ "tags": [], "label": "order", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -1803,7 +1803,7 @@ }, ") => React.ReactNode) | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1823,7 +1823,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1849,7 +1849,7 @@ }, ") => any) | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1869,7 +1869,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1887,7 +1887,7 @@ "tags": [], "label": "PublicApiServiceSetup", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1917,7 +1917,7 @@ }, "[], any>>" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1943,7 +1943,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1957,7 +1957,7 @@ "signature": [ "D | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1971,7 +1971,7 @@ "signature": [ "E | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1985,7 +1985,7 @@ "tags": [], "label": "SerializedEnrichPolicy", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1999,7 +1999,7 @@ "signature": [ "\"match\" | \"range\" | \"geo_match\"" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2010,7 +2010,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2024,7 +2024,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2035,7 +2035,7 @@ "tags": [], "label": "matchField", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2049,7 +2049,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2063,7 +2063,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false } @@ -2079,7 +2079,7 @@ "tags": [], "label": "IndexDetailsSection", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2091,7 +2091,7 @@ "tags": [], "label": "Section", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2108,7 +2108,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2138,7 +2138,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2160,7 +2160,7 @@ }, " & ({ page: \"data_streams_details\"; dataStreamName?: string | undefined; } | { page: \"index_template\"; indexTemplate: string; } | { page: \"component_template\"; componentTemplate: string; })" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_index_management_shared_types.mdx b/api_docs/kbn_index_management_shared_types.mdx index 8bb71f78d7ec5..e43a8c95eb09d 100644 --- a/api_docs/kbn_index_management_shared_types.mdx +++ b/api_docs/kbn_index_management_shared_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management-shared-types title: "@kbn/index-management-shared-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management-shared-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management-shared-types'] --- import kbnIndexManagementSharedTypesObj from './kbn_index_management_shared_types.devdocs.json'; diff --git a/api_docs/kbn_inference_common.devdocs.json b/api_docs/kbn_inference_common.devdocs.json index 9cb8c900b21db..6811cb39c58d0 100644 --- a/api_docs/kbn_inference_common.devdocs.json +++ b/api_docs/kbn_inference_common.devdocs.json @@ -37,7 +37,7 @@ }, " extends Error" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -51,7 +51,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -65,7 +65,7 @@ "signature": [ "TCode" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -80,7 +80,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -95,7 +95,7 @@ "signature": [ "TMeta" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -120,7 +120,7 @@ "text": "InferenceTaskErrorEvent" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -148,7 +148,7 @@ "text": "InferenceTaskInternalError" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +162,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -177,7 +177,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -203,7 +203,7 @@ "text": "InferenceTaskRequestError" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -232,7 +232,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -269,7 +269,7 @@ }, ">) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -298,7 +298,7 @@ }, ">" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -327,7 +327,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -347,7 +347,7 @@ "text": "InferenceTaskEvent" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -376,7 +376,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -397,7 +397,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -434,7 +434,7 @@ }, ">) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -463,7 +463,7 @@ }, ">" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -482,7 +482,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -496,7 +496,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -515,7 +515,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -529,7 +529,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -548,7 +548,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -562,7 +562,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -583,7 +583,7 @@ "signature": [ "(event: TOutputEvent) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -597,7 +597,7 @@ "signature": [ "TOutputEvent" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -626,7 +626,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -646,7 +646,7 @@ "text": "InferenceTaskEvent" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -675,7 +675,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -696,7 +696,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -717,7 +717,7 @@ "signature": [ "(error: Error) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -731,7 +731,7 @@ "signature": [ "Error" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -752,7 +752,7 @@ "signature": [ "(error: Error) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -766,7 +766,7 @@ "signature": [ "Error" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -787,7 +787,7 @@ "signature": [ "(error: Error | undefined) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -801,7 +801,7 @@ "signature": [ "Error | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -820,7 +820,7 @@ "signature": [ "(values: T[], limit: number) => (string | T)[]" ], - "path": "x-pack/packages/ai-infra/inference-common/src/truncate_list.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/truncate_list.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -834,7 +834,7 @@ "signature": [ "T[]" ], - "path": "x-pack/packages/ai-infra/inference-common/src/truncate_list.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/truncate_list.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -849,7 +849,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/ai-infra/inference-common/src/truncate_list.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/truncate_list.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -880,7 +880,7 @@ }, ">>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -909,7 +909,7 @@ }, ">>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -938,7 +938,7 @@ }, ">>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -966,7 +966,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -979,7 +979,7 @@ "description": [ "\nThe text content of the LLM response." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1002,7 +1002,7 @@ }, "[\"toolCalls\"]" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1025,7 +1025,7 @@ }, " | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false } @@ -1041,7 +1041,7 @@ "description": [ "\nRepresent a partial tool call present in a chunk event.\n\nNote that all properties of the structure, except from the index,\nare partial and must be aggregated." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1054,7 +1054,7 @@ "description": [ "\nThe tool call index (position in the tool call array)." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false }, @@ -1067,7 +1067,7 @@ "description": [ "\nchunk of tool call id." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false }, @@ -1081,7 +1081,7 @@ "signature": [ "{ name: string; arguments: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false } @@ -1097,7 +1097,7 @@ "description": [ "\nToken count structure for the chatComplete API." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1110,7 +1110,7 @@ "description": [ "\nInput token count" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false }, @@ -1123,7 +1123,7 @@ "description": [ "\nOutput token count" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false }, @@ -1136,7 +1136,7 @@ "description": [ "\nTotal token count" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false } @@ -1162,7 +1162,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/inference_task.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/inference_task.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1178,7 +1178,7 @@ "signature": [ "TEventType" ], - "path": "x-pack/packages/ai-infra/inference-common/src/inference_task.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/inference_task.ts", "deprecated": false, "trackAdoption": false } @@ -1204,7 +1204,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1220,7 +1220,7 @@ "signature": [ "TId" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1233,7 +1233,7 @@ "description": [ "\nThe ID of the connector to use.\nMust be an inference connector, or an error will be thrown." ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1249,7 +1249,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1262,7 +1262,7 @@ "description": [ "\nThe prompt for the LLM." ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1278,7 +1278,7 @@ "signature": [ "TOutputSchema | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1301,7 +1301,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1324,7 +1324,7 @@ }, " | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1340,7 +1340,23 @@ "signature": [ "TStream | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/inference-common", + "id": "def-common.OutputOptions.retry", + "type": "Object", + "tags": [], + "label": "retry", + "description": [ + "\nOptional configuration for retrying the call if an error occurs." + ], + "signature": [ + "{ onValidationError?: number | boolean | undefined; } | undefined" + ], + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -1366,7 +1382,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1382,7 +1398,7 @@ "signature": [ "TId" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1398,7 +1414,7 @@ "signature": [ "TOutput" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1411,7 +1427,7 @@ "description": [ "\nPotential text content provided by the LLM, if it was provided in addition to the tool call." ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -1437,7 +1453,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1450,7 +1466,7 @@ "description": [ "\nThe id of the tool call, that must be re-used when providing the tool call response" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false }, @@ -1464,7 +1480,7 @@ "signature": [ "{ name: TName; } & (TArguments extends Record ? { arguments: TArguments; } : {})" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false } @@ -1480,7 +1496,7 @@ "description": [ "\nThe definition of a tool that will be provided to the LLM for it to eventually call." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1493,7 +1509,7 @@ "description": [ "\nA description of what the tool does. Note that this will be exposed to the LLM,\nso the description should be explicit about what the tool does and when to call it." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false }, @@ -1510,7 +1526,7 @@ "ToolSchemaTypeObject", " | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false } @@ -1536,7 +1552,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1559,7 +1575,7 @@ }, " | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false }, @@ -1583,7 +1599,7 @@ }, "> | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false } @@ -1599,7 +1615,7 @@ "description": [ "\nRepresents a tool call from the LLM before correctly converted to the schema type.\n\nOnly publicly exposed because referenced by {@link ChatCompletionToolValidationError}" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1610,7 +1626,7 @@ "tags": [], "label": "toolCallId", "description": [], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false }, @@ -1624,7 +1640,7 @@ "signature": [ "{ name: string; arguments: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false } @@ -1642,7 +1658,7 @@ "description": [ "\nList of code of error that are specific to the {@link ChatCompleteAPI}" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1656,7 +1672,7 @@ "description": [ "\nList possible values of {@link ChatCompletionEvent} types." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1670,7 +1686,7 @@ "description": [ "\nEnum for generic inference error codes." ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1684,7 +1700,7 @@ "description": [ "\nEnum for all possible {@link Message} roles." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1698,7 +1714,7 @@ "description": [ "\nList possible values of {@link OutputEvent} types." ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1712,7 +1728,7 @@ "description": [ "\nTool invocation choice type.\n\nRefer to {@link ToolChoice} for more details." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1747,7 +1763,40 @@ }, " | undefined>[] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/inference-common", + "id": "def-common.AssistantMessageOf", + "type": "Type", + "tags": [], + "label": "AssistantMessageOf", + "description": [ + "\nUtility type to get the Assistant message type of a {@link ToolOptions} type." + ], + "signature": [ + "Omit<", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.AssistantMessage", + "text": "AssistantMessage" + }, + ", \"toolCalls\"> & ", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.ToolCallsOf", + "text": "ToolCallsOf" + }, + "" + ], + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1796,7 +1845,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1819,7 +1868,7 @@ }, "[P]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false } @@ -1854,7 +1903,7 @@ }, "[\"functionCalling\"] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1891,7 +1940,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1904,7 +1953,7 @@ "label": "options", "description": [], "signature": [ - "{ id: TId; input: string; schema?: TOutputSchema | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", + "{ id: TId; input: string; schema?: TOutputSchema | undefined; retry?: { onValidationError?: number | boolean | undefined; } | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", { "pluginId": "@kbn/inference-common", "scope": "common", @@ -1914,7 +1963,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false } @@ -1941,7 +1990,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1990,7 +2039,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2021,7 +2070,7 @@ }, " | undefined; } & TToolOptions" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false } @@ -2056,7 +2105,7 @@ }, ">" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2089,7 +2138,7 @@ }, " | undefined; } & TToolOptions" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2115,7 +2164,7 @@ }, ">" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2155,7 +2204,7 @@ }, "[]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2195,7 +2244,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2235,7 +2284,7 @@ }, "[\"toolCalls\"]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2275,7 +2324,7 @@ }, "; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2307,7 +2356,7 @@ }, ".TokenLimitReachedError, { tokenLimit?: number | undefined; tokenCount?: number | undefined; }>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2339,7 +2388,7 @@ }, ".ToolNotFoundError, { name: string; }>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2379,7 +2428,7 @@ }, "[] | undefined; }>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2398,7 +2447,7 @@ "ToolSchemaTypeObject", " ? FromToolSchemaObject : TToolSchema extends ToolSchemaTypeArray ? FromToolSchemaArray : TToolSchema extends ToolSchemaTypeBoolean ? boolean : TToolSchema extends ToolSchemaTypeNumber ? number : TToolSchema extends ToolSchemaTypeString ? FromToolSchemaString : never" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tool_schema.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2415,7 +2464,7 @@ "signature": [ "\"native\" | \"simulated\"" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2445,7 +2494,7 @@ }, "> & { error: { code: string; message: string; meta?: Record | undefined; }; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2467,7 +2516,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/inference_task.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/inference_task.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2479,7 +2528,7 @@ "tags": [], "label": "InferenceTaskEventType", "description": [], - "path": "x-pack/packages/ai-infra/inference-common/src/inference_task.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/inference_task.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2509,7 +2558,7 @@ }, ".internalError, Record>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2539,7 +2588,7 @@ }, ".requestError, { status: number; }>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2577,9 +2626,49 @@ "section": "def-common.ToolMessage", "text": "ToolMessage" }, - "" + " | undefined>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/inference-common", + "id": "def-common.MessageOf", + "type": "Type", + "tags": [], + "label": "MessageOf", + "description": [ + "\nUtility type to get the mixin Message type of a {@link ToolOptions} type." + ], + "signature": [ + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.UserMessage", + "text": "UserMessage" + }, + " | ", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.AssistantMessageOf", + "text": "AssistantMessageOf" + }, + " | ", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.ToolMessageOf", + "text": "ToolMessageOf" + }, + "" + ], + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2596,7 +2685,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2633,7 +2722,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2655,7 +2744,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -2689,7 +2778,7 @@ }, ".OutputComplete> & { id: TId; output: TOutput; content: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2732,7 +2821,7 @@ }, " : undefined>>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2764,7 +2853,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2800,7 +2889,7 @@ }, " : undefined>>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2832,7 +2921,7 @@ }, ".OutputUpdate> & { id: TId; content: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2863,9 +2952,11 @@ "section": "def-common.ToolChoiceType", "text": "ToolChoiceType" }, - ".none; } ? { toolCalls: []; } : { toolCalls: ToolResponsesOf>; } : { toolCalls: never; }" + ".none; } ? { toolCalls: []; } : { toolCalls: ", + "ToolResponsesOf", + ">; } : { toolCalls: never; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2889,7 +2980,7 @@ }, " | CustomToolChoice" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2912,9 +3003,38 @@ "section": "def-common.MessageRole", "text": "MessageRole" }, - ".Tool> & { toolCallId: string; response: TToolResponse; }" + ".Tool> & { name: TName; toolCallId: string; response: TToolResponse; } & (TToolData extends undefined ? {} : { data: TToolData; })" + ], + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/inference-common", + "id": "def-common.ToolMessageOf", + "type": "Type", + "tags": [], + "label": "ToolMessageOf", + "description": [ + "\nUtility type to get the Tool message type of a {@link ToolOptions} type." + ], + "signature": [ + "MessageBase<", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + ".Tool> & { name: ", + "ToolNamesOf", + "; toolCallId: string; response: ", + "ToolResponsesOf", + "; } & ({} | { data: Record; })" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2931,7 +3051,7 @@ "signature": [ "ToolSchemaTypeObject" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tool_schema.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2949,7 +3069,7 @@ "ToolSchemaTypeObject", " | ToolSchemaTypeString | ToolSchemaTypeBoolean | ToolSchemaTypeNumber | ToolSchemaTypeArray" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tool_schema.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2974,7 +3094,7 @@ }, "[P]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2989,7 +3109,7 @@ "\nOptions used to call the {@link BoundOutputAPI}" ], "signature": [ - "{ id: TId; input: string; schema?: TOutputSchema | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", + "{ id: TId; input: string; schema?: TOutputSchema | undefined; retry?: { onValidationError?: number | boolean | undefined; } | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", { "pluginId": "@kbn/inference-common", "scope": "common", @@ -2999,7 +3119,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3024,7 +3144,7 @@ }, ".User> & { content: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_inference_common.mdx b/api_docs/kbn_inference_common.mdx index ae7b81e2ecca6..7839ec75e94dc 100644 --- a/api_docs/kbn_inference_common.mdx +++ b/api_docs/kbn_inference_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-common title: "@kbn/inference-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-common'] --- import kbnInferenceCommonObj from './kbn_inference_common.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 132 | 0 | 43 | 1 | +| 136 | 0 | 43 | 3 | ## Common diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index 835d28fa31cbd..ee1ddcd26867d 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.devdocs.json b/api_docs/kbn_infra_forge.devdocs.json index 51660ce739fbc..0db9d8bc7d5a1 100644 --- a/api_docs/kbn_infra_forge.devdocs.json +++ b/api_docs/kbn_infra_forge.devdocs.json @@ -39,7 +39,7 @@ }, "; }) => Promise" ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -50,7 +50,7 @@ "tags": [], "label": "{ esClient, logger }", "description": [], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -64,7 +64,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false }, @@ -84,7 +84,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false } @@ -114,7 +114,7 @@ }, "; }) => Promise" ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -125,7 +125,7 @@ "tags": [], "label": "{\n esClient,\n lookback,\n logger,\n}", "description": [], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -139,7 +139,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false }, @@ -150,7 +150,7 @@ "tags": [], "label": "lookback", "description": [], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false }, @@ -170,7 +170,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 1da04c3ca95de..5c3b5a3117a16 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 6f7eb31206d9a..5754f3ff47e96 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_investigation_shared.devdocs.json b/api_docs/kbn_investigation_shared.devdocs.json index 9d9586f583ec8..e0190597796ff 100644 --- a/api_docs/kbn_investigation_shared.devdocs.json +++ b/api_docs/kbn_investigation_shared.devdocs.json @@ -22,6 +22,36 @@ "interfaces": [], "enums": [], "misc": [ + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.AlertEventResponse", + "type": "Type", + "tags": [], + "label": "AlertEventResponse", + "description": [], + "signature": [ + "{ id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }" + ], + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.AnnotationEventResponse", + "type": "Type", + "tags": [], + "label": "AnnotationEventResponse", + "description": [], + "signature": [ + "{ id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }" + ], + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/investigation-shared", "id": "def-common.CreateInvestigationItemParams", @@ -32,7 +62,7 @@ "signature": [ "{ params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +77,7 @@ "signature": [ "{ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -62,7 +92,7 @@ "signature": [ "{ content: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -77,7 +107,7 @@ "signature": [ "{ id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -92,7 +122,7 @@ "signature": [ "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -105,9 +135,9 @@ "label": "CreateInvestigationResponse", "description": [], "signature": [ - "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }" + "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -122,7 +152,7 @@ "signature": [ "{ itemId: string; investigationId: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -137,7 +167,7 @@ "signature": [ "{ investigationId: string; noteId: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -152,7 +182,7 @@ "signature": [ "{ investigationId: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -167,7 +197,7 @@ "signature": [ "{ dataStream?: string | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/entity.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -182,7 +212,7 @@ "signature": [ "{ id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; } & { sources: { dataStream?: string | undefined; }[]; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/entity.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -195,24 +225,9 @@ "label": "EventResponse", "description": [], "signature": [ - "{ id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; } & ({ eventType: \"annotation\"; annotationType?: string | undefined; } | { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; })" + "{ id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; } | { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/event.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/investigation-shared", - "id": "def-common.EventSchema", - "type": "Type", - "tags": [], - "label": "EventSchema", - "description": [], - "signature": [ - "{ id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; } & ({ eventType: \"annotation\"; annotationType?: string | undefined; } | { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; })" - ], - "path": "packages/kbn-investigation-shared/src/rest_specs/event.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -227,7 +242,7 @@ "signature": [ "{ page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/find.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -240,9 +255,9 @@ "label": "FindInvestigationsResponse", "description": [], "signature": [ - "{ page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }[]; perPage: number; total: number; }" + "{ page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }[]; perPage: number; total: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/find.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -257,7 +272,7 @@ "signature": [ "{ count: Partial>; total: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -272,7 +287,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -287,7 +302,7 @@ "signature": [ "{ 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; } | undefined" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -302,7 +317,7 @@ "signature": [ "{ entities: ({ id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; } & { sources: { dataStream?: string | undefined; }[]; })[]; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -315,9 +330,9 @@ "label": "GetEventsParams", "description": [], "signature": [ - "{ filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined" + "{ filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; } | undefined" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_events.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -330,9 +345,9 @@ "label": "GetEventsResponse", "description": [], "signature": [ - "({ id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; } & ({ eventType: \"annotation\"; annotationType?: string | undefined; } | { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }))[]" + "({ id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; } | { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; })[]" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_events.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -347,7 +362,7 @@ "signature": [ "({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_items.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -362,7 +377,7 @@ "signature": [ "{ id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -377,7 +392,7 @@ "signature": [ "{ investigationId: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -390,9 +405,9 @@ "label": "GetInvestigationResponse", "description": [], "signature": [ - "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }" + "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -407,7 +422,7 @@ "signature": [ "{ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -422,7 +437,7 @@ "signature": [ "{ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -437,7 +452,7 @@ "signature": [ "{ id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -450,9 +465,9 @@ "label": "InvestigationResponse", "description": [], "signature": [ - "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }" + "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -467,7 +482,7 @@ "signature": [ "{ params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -482,7 +497,7 @@ "signature": [ "\"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -497,7 +512,7 @@ "signature": [ "{ params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -512,7 +527,7 @@ "signature": [ "{ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -527,7 +542,7 @@ "signature": [ "{ content: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -542,7 +557,7 @@ "signature": [ "{ id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -555,9 +570,9 @@ "label": "UpdateInvestigationParams", "description": [], "signature": [ - "{ params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }" + "{ params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -570,15 +585,30 @@ "label": "UpdateInvestigationResponse", "description": [], "signature": [ - "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }" + "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false } ], "objects": [ + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.alertEventSchema", + "type": "Object", + "tags": [], + "label": "alertEventSchema", + "description": [], + "signature": [ + "Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }>" + ], + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/investigation-shared", "id": "def-common.alertOriginSchema", @@ -589,7 +619,22 @@ "signature": [ "Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/origin.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.annotationEventSchema", + "type": "Object", + "tags": [], + "label": "annotationEventSchema", + "description": [], + "signature": [ + "Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }>" + ], + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -604,7 +649,7 @@ "signature": [ "Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/origin.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -619,7 +664,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params: Record; type: string; title: string; }; }, { path: { investigationId: string; }; body: { params: Record; type: string; title: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -634,7 +679,7 @@ "signature": [ "Zod.ZodIntersection, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -649,7 +694,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ content: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { content: string; }, { content: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { content: string; }; }, { path: { investigationId: string; }; body: { content: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -664,7 +709,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; content: Zod.ZodString; createdAt: Zod.ZodNumber; updatedAt: Zod.ZodNumber; createdBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -679,7 +724,7 @@ "signature": [ "Zod.ZodObject<{ body: Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; tags: Zod.ZodArray; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }>; }, \"strip\", Zod.ZodTypeAny, { body: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }; }, { body: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -692,9 +737,9 @@ "label": "createInvestigationResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -709,7 +754,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; itemId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { itemId: string; investigationId: string; }, { itemId: string; investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { itemId: string; investigationId: string; }; }, { path: { itemId: string; investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -724,7 +769,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; noteId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; noteId: string; }, { investigationId: string; noteId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; noteId: string; }; }, { path: { investigationId: string; noteId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -739,7 +784,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -754,7 +799,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; definition_id: Zod.ZodString; definition_version: Zod.ZodString; display_name: Zod.ZodString; last_seen_timestamp: Zod.ZodString; identity_fields: Zod.ZodArray; schema_version: Zod.ZodString; type: Zod.ZodString; metrics: Zod.ZodObject<{ failedTransactionRate: Zod.ZodOptional; latency: Zod.ZodOptional; throughput: Zod.ZodOptional; logErrorRate: Zod.ZodOptional; logRate: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/entity.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -769,37 +814,37 @@ "signature": [ "Zod.ZodIntersection; schema_version: Zod.ZodString; type: Zod.ZodString; metrics: Zod.ZodObject<{ failedTransactionRate: Zod.ZodOptional; latency: Zod.ZodOptional; throughput: Zod.ZodOptional; logErrorRate: Zod.ZodOptional; logRate: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }>, Zod.ZodObject<{ sources: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { dataStream?: string | undefined; }, { dataStream?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { sources: { dataStream?: string | undefined; }[]; }, { sources: { dataStream?: string | undefined; }[]; }>>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/entity.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false }, { "parentPluginId": "@kbn/investigation-shared", - "id": "def-common.eventResponseSchema", + "id": "def-common.eventSchema", "type": "Object", "tags": [], - "label": "eventResponseSchema", + "label": "eventSchema", "description": [], "signature": [ - "Zod.ZodIntersection, Zod.ZodLiteral<\"alert\">, Zod.ZodLiteral<\"error_rate\">, Zod.ZodLiteral<\"latency\">, Zod.ZodLiteral<\"anomaly\">]>; source: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }>, Zod.ZodDiscriminatedUnion<\"eventType\", [Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { eventType: \"annotation\"; annotationType?: string | undefined; }, { eventType: \"annotation\"; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }>]>>" + "Zod.ZodDiscriminatedUnion<\"eventType\", [Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }>]>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/event.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false }, { "parentPluginId": "@kbn/investigation-shared", - "id": "def-common.eventSchema", + "id": "def-common.eventTypeSchema", "type": "Object", "tags": [], - "label": "eventSchema", + "label": "eventTypeSchema", "description": [], "signature": [ - "Zod.ZodIntersection, Zod.ZodLiteral<\"alert\">, Zod.ZodLiteral<\"error_rate\">, Zod.ZodLiteral<\"latency\">, Zod.ZodLiteral<\"anomaly\">]>; source: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }>, Zod.ZodDiscriminatedUnion<\"eventType\", [Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { eventType: \"annotation\"; annotationType?: string | undefined; }, { eventType: \"annotation\"; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }>]>>" + "Zod.ZodUnion<[Zod.ZodLiteral<\"annotation\">, Zod.ZodLiteral<\"alert\">, Zod.ZodLiteral<\"error_rate\">, Zod.ZodLiteral<\"latency\">, Zod.ZodLiteral<\"anomaly\">]>" ], - "path": "packages/kbn-investigation-shared/src/schema/event.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -814,7 +859,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodOptional; search: Zod.ZodOptional; filter: Zod.ZodOptional; page: Zod.ZodOptional; perPage: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; }, { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined; }, { query?: { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/find.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -827,9 +872,9 @@ "label": "findInvestigationsResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; results: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }[]; perPage: number; total: number; }, { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }[]; perPage: number; total: number; }>" + "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; results: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }[]; perPage: number; total: number; }, { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }[]; perPage: number; total: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/find.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -844,7 +889,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodObject<{}, \"strip\", Zod.ZodTypeAny, {}, {}>; }, \"strip\", Zod.ZodTypeAny, { query: {}; }, { query: {}; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -859,7 +904,7 @@ "signature": [ "Zod.ZodObject<{ count: Zod.ZodRecord, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>, Zod.ZodNumber>; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { count: Partial>; total: number; }, { count: Partial>; total: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -874,7 +919,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodObject<{}, \"strip\", Zod.ZodTypeAny, {}, {}>; }, \"strip\", Zod.ZodTypeAny, { query: {}; }, { query: {}; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -889,7 +934,7 @@ "signature": [ "Zod.ZodArray" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -904,7 +949,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodOptional; 'service.environment': Zod.ZodOptional; 'host.name': Zod.ZodOptional; 'container.id': Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; }, { 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; } | undefined; }, { query?: { 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -919,7 +964,7 @@ "signature": [ "Zod.ZodObject<{ entities: Zod.ZodArray; schema_version: Zod.ZodString; type: Zod.ZodString; metrics: Zod.ZodObject<{ failedTransactionRate: Zod.ZodOptional; latency: Zod.ZodOptional; throughput: Zod.ZodOptional; logErrorRate: Zod.ZodOptional; logRate: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }>, Zod.ZodObject<{ sources: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { dataStream?: string | undefined; }, { dataStream?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { sources: { dataStream?: string | undefined; }[]; }, { sources: { dataStream?: string | undefined; }[]; }>>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { entities: ({ id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; } & { sources: { dataStream?: string | undefined; }[]; })[]; }, { entities: ({ id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; } & { sources: { dataStream?: string | undefined; }[]; })[]; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -932,9 +977,9 @@ "label": "getEventsParamsSchema", "description": [], "signature": [ - "Zod.ZodObject<{ query: Zod.ZodOptional; rangeTo: Zod.ZodOptional; filter: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; }, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined; }, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined; }>" + "Zod.ZodObject<{ query: Zod.ZodOptional; rangeTo: Zod.ZodOptional; filter: Zod.ZodOptional; eventTypes: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; }, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; } | undefined; }, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: string | undefined; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_events.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -947,9 +992,9 @@ "label": "getEventsResponseSchema", "description": [], "signature": [ - "Zod.ZodArray, Zod.ZodLiteral<\"alert\">, Zod.ZodLiteral<\"error_rate\">, Zod.ZodLiteral<\"latency\">, Zod.ZodLiteral<\"anomaly\">]>; source: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }>, Zod.ZodDiscriminatedUnion<\"eventType\", [Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { eventType: \"annotation\"; annotationType?: string | undefined; }, { eventType: \"annotation\"; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }>]>>, \"many\">" + "Zod.ZodArray; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }>]>, \"many\">" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_events.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -964,7 +1009,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_items.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -979,7 +1024,7 @@ "signature": [ "Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_items.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -994,7 +1039,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1009,7 +1054,7 @@ "signature": [ "Zod.ZodArray, \"many\">" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1024,7 +1069,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1037,9 +1082,9 @@ "label": "getInvestigationResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1054,7 +1099,7 @@ "signature": [ "Zod.ZodIntersection, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1069,7 +1114,7 @@ "signature": [ "Zod.ZodIntersection, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1084,7 +1129,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; content: Zod.ZodString; createdAt: Zod.ZodNumber; updatedAt: Zod.ZodNumber; createdBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1099,7 +1144,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; content: Zod.ZodString; createdAt: Zod.ZodNumber; updatedAt: Zod.ZodNumber; createdBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1112,9 +1157,9 @@ "label": "investigationResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1127,9 +1172,9 @@ "label": "investigationSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1144,7 +1189,7 @@ "signature": [ "Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1159,7 +1204,7 @@ "signature": [ "Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1174,7 +1219,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; itemId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { itemId: string; investigationId: string; }, { itemId: string; investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { itemId: string; investigationId: string; }; body: { params: Record; type: string; title: string; }; }, { path: { itemId: string; investigationId: string; }; body: { params: Record; type: string; title: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1189,7 +1234,7 @@ "signature": [ "Zod.ZodIntersection, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1204,7 +1249,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; noteId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; noteId: string; }, { investigationId: string; noteId: string; }>; body: Zod.ZodObject<{ content: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { content: string; }, { content: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; noteId: string; }; body: { content: string; }; }, { path: { investigationId: string; noteId: string; }; body: { content: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1219,7 +1264,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; content: Zod.ZodString; createdAt: Zod.ZodNumber; updatedAt: Zod.ZodNumber; createdBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1232,9 +1277,9 @@ "label": "updateInvestigationParamsSchema", "description": [], "signature": [ - "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodOptional; status: Zod.ZodOptional, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>>; params: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>>; tags: Zod.ZodOptional>; externalIncidentUrl: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }; }, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }; }>" + "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodOptional; status: Zod.ZodOptional, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>>; params: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>>; tags: Zod.ZodOptional>; externalIncidentUrl: Zod.ZodOptional>; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }; }, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1247,9 +1292,9 @@ "label": "updateInvestigationResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_investigation_shared.mdx b/api_docs/kbn_investigation_shared.mdx index a3d2e84dae6ef..72f08a21bf175 100644 --- a/api_docs/kbn_investigation_shared.mdx +++ b/api_docs/kbn_investigation_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-investigation-shared title: "@kbn/investigation-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/investigation-shared plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/investigation-shared'] --- import kbnInvestigationSharedObj from './kbn_investigation_shared.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 82 | 0 | 82 | 0 | +| 85 | 0 | 85 | 0 | ## Common diff --git a/api_docs/kbn_io_ts_utils.devdocs.json b/api_docs/kbn_io_ts_utils.devdocs.json index dfbb21237595a..35c6eb8bac439 100644 --- a/api_docs/kbn_io_ts_utils.devdocs.json +++ b/api_docs/kbn_io_ts_utils.devdocs.json @@ -31,7 +31,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "signature": [ "LiteralValue" ], - "path": "packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -64,7 +64,7 @@ "signature": [ "(message: string) => Error" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -78,7 +78,7 @@ "signature": [ "string" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -107,7 +107,7 @@ }, "" ], - "path": "packages/kbn-io-ts-utils/src/route_validation/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/route_validation/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -122,7 +122,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/route_validation/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/route_validation/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -143,7 +143,7 @@ "Type", ", createError?: ErrorFactory) => (inputValue: InputValue) => DecodedValue" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -158,7 +158,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -173,7 +173,7 @@ "signature": [ "ErrorFactory" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -192,7 +192,7 @@ "signature": [ "(type: T) => T" ], - "path": "packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -206,7 +206,7 @@ "signature": [ "T" ], - "path": "packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -259,7 +259,7 @@ "Mixed", "; }>>" ], - "path": "packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -275,7 +275,7 @@ " | ", "ParseableType" ], - "path": "packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -296,7 +296,7 @@ "ValidationError", "[]) => string" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -311,7 +311,7 @@ "ValidationError", "[]" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -332,7 +332,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -346,7 +346,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -361,7 +361,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -382,7 +382,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -396,7 +396,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -411,7 +411,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -442,7 +442,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -456,7 +456,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -477,7 +477,7 @@ "MergeType", "" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -491,7 +491,7 @@ "signature": [ "T1" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -506,7 +506,7 @@ "signature": [ "T2" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -535,7 +535,7 @@ "Encode", "; _A: any; _O: any; _I: unknown; }" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -550,7 +550,7 @@ "Any", "[]" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -571,7 +571,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/strict_keys_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -585,7 +585,7 @@ "signature": [ "T" ], - "path": "packages/kbn-io-ts-utils/src/strict_keys_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -606,7 +606,7 @@ "Errors", ") => never" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -620,7 +620,7 @@ "signature": [ "ErrorFactory" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -643,7 +643,7 @@ "ParseableType", ") => JSONSchema" ], - "path": "packages/kbn-io-ts-utils/src/to_json_schema/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -659,7 +659,7 @@ " | ", "ParseableType" ], - "path": "packages/kbn-io-ts-utils/src/to_json_schema/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -677,7 +677,7 @@ "tags": [], "label": "InRangeBrand", "description": [], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -699,7 +699,7 @@ }, "[\"InRange\"]" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false } @@ -713,7 +713,7 @@ "tags": [], "label": "IsGreaterOrEqualBrand", "description": [], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -735,7 +735,7 @@ }, "[\"IsGreaterOrEqual\"]" ], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false } @@ -749,7 +749,7 @@ "tags": [], "label": "NonEmptyStringBrand", "description": [], - "path": "packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -771,7 +771,7 @@ }, "[\"NonEmptyString\"]" ], - "path": "packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", "deprecated": false, "trackAdoption": false } @@ -795,7 +795,7 @@ }, " extends { time: string; tiebreaker: number; } & { gid?: string | undefined; fromAutoReload?: boolean | undefined; }" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -806,7 +806,7 @@ "tags": [], "label": "gid", "description": [], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false } @@ -830,7 +830,7 @@ "IndexPatternBrand", ">" ], - "path": "packages/kbn-io-ts-utils/src/index_pattern_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -855,7 +855,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -880,7 +880,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -895,7 +895,7 @@ "signature": [ "{ time: string; tiebreaker: number; }" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -920,7 +920,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -935,7 +935,7 @@ "signature": [ "{ time: string; tiebreaker: number; } & { gid?: string | undefined; fromAutoReload?: boolean | undefined; }" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -953,7 +953,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/array_to_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -969,7 +969,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -985,7 +985,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/datemath_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1005,7 +1005,7 @@ "DateBrand", ">" ], - "path": "packages/kbn-io-ts-utils/src/date_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1025,7 +1025,7 @@ "IndexPatternBrand", ">" ], - "path": "packages/kbn-io-ts-utils/src/index_pattern_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1041,7 +1041,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1057,7 +1057,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1073,7 +1073,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/json_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1093,7 +1093,7 @@ "NumberC", "; }>" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1119,7 +1119,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1135,7 +1135,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/to_boolean_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/to_boolean_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1151,7 +1151,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/to_number_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/to_number_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index db2a188e33c6a..e23a6a9395724 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index 901e82a929989..e148365af1760 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_item_buffer.mdx b/api_docs/kbn_item_buffer.mdx index 6a6ffb8478cb0..77793bca2d956 100644 --- a/api_docs/kbn_item_buffer.mdx +++ b/api_docs/kbn_item_buffer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-item-buffer title: "@kbn/item-buffer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/item-buffer plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/item-buffer'] --- import kbnItemBufferObj from './kbn_item_buffer.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 7c0a7ae507c34..b8cc6c608d381 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 8a0a6c7fddd10..3326093cbe5f1 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 7ed7865c98c88..9d7a885f188b4 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_json_schemas.mdx b/api_docs/kbn_json_schemas.mdx index 4435f176abf77..f060a19c09282 100644 --- a/api_docs/kbn_json_schemas.mdx +++ b/api_docs/kbn_json_schemas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-schemas title: "@kbn/json-schemas" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-schemas plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-schemas'] --- import kbnJsonSchemasObj from './kbn_json_schemas.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 8f7927fb7441a..00ea6aec4e66d 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation.mdx b/api_docs/kbn_language_documentation.mdx index b5ee3a53170b7..428696920e976 100644 --- a/api_docs/kbn_language_documentation.mdx +++ b/api_docs/kbn_language_documentation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation title: "@kbn/language-documentation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation'] --- import kbnLanguageDocumentationObj from './kbn_language_documentation.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 3de194aa8dd62..6a5aa3db9ccf3 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 2e10d60a23927..4ed4e6199bfc9 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index b12d106b4540b..4b0fec550fd0d 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index fabf0158d77f7..d086f90645207 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index 975c1366844ac..bdc90ddd92125 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 20f5993d3784e..c28ac7882693a 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.devdocs.json b/api_docs/kbn_management_cards_navigation.devdocs.json index 761cfc57d721c..13e58377e07ce 100644 --- a/api_docs/kbn_management_cards_navigation.devdocs.json +++ b/api_docs/kbn_management_cards_navigation.devdocs.json @@ -37,7 +37,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/cards_navigation/src/cards_navigation.tsx", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -57,7 +57,7 @@ "text": "CardsNavigationComponentProps" } ], - "path": "packages/kbn-management/cards_navigation/src/cards_navigation.tsx", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -75,7 +75,7 @@ "tags": [], "label": "CardsNavigationComponentProps", "description": [], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -90,7 +90,7 @@ "AppRegistrySections", "[]" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -101,7 +101,7 @@ "tags": [], "label": "appBasePath", "description": [], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -115,7 +115,7 @@ "signature": [ "((e: React.MouseEvent) => void) | undefined" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -129,7 +129,7 @@ "signature": [ "React.MouseEvent" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -147,7 +147,7 @@ "signature": [ "(\"transform\" | \"tags\" | \"maintenanceWindows\" | \"dataViews\" | \"spaces\" | \"settings\" | \"data_quality\" | \"data_usage\" | \"filesManagement\" | \"pipelines\" | \"roles\" | \"reporting\" | \"api_keys\" | \"index_management\" | \"ingest_pipelines\" | \"jobsListLink\" | \"objects\" | \"triggersActions\" | \"triggersActionsConnectors\")[] | undefined" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -169,7 +169,7 @@ }, "> | undefined" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -187,7 +187,7 @@ "description": [ "\napp ids shared by all solutions" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -204,7 +204,7 @@ "signature": [ "\"transform\" | \"tags\" | \"maintenanceWindows\" | \"dataViews\" | \"spaces\" | \"settings\" | \"data_quality\" | \"data_usage\" | \"filesManagement\" | \"pipelines\" | \"roles\" | \"reporting\" | \"api_keys\" | \"index_management\" | \"ingest_pipelines\" | \"jobsListLink\" | \"objects\" | \"triggersActions\" | \"triggersActionsConnectors\"" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -220,7 +220,7 @@ "AppDefinition", " & ({ skipValidation?: false | undefined; } | { skipValidation: true; href: string; title: string; })" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -237,7 +237,7 @@ "signature": [ "{ readonly DATA: \"data\"; readonly ACCESS: \"access\"; readonly ALERTS: \"alerts\"; readonly CONTENT: \"content\"; readonly OTHER: \"other\"; }" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 0fef8c4259ef7..375eb56a2b51f 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.devdocs.json b/api_docs/kbn_management_settings_application.devdocs.json index c88cf83be225b..d7489d772de64 100644 --- a/api_docs/kbn_management_settings_application.devdocs.json +++ b/api_docs/kbn_management_settings_application.devdocs.json @@ -21,7 +21,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/application/index.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "text": "SettingsApplicationKibanaDependencies" } ], - "path": "packages/kbn-management/settings/application/index.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -62,7 +62,7 @@ "signature": [ "() => React.JSX.Element" ], - "path": "packages/kbn-management/settings/application/application.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/application.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -89,7 +89,7 @@ }, ">) => React.JSX.Element" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -111,7 +111,7 @@ }, ">" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -140,7 +140,7 @@ }, ">) => React.JSX.Element" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +162,7 @@ }, ">" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -201,7 +201,7 @@ "text": "FieldInputKibanaDependencies" } ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -234,7 +234,7 @@ " & ", "Services" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 4c180b669e6ef..508a8570c555f 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.devdocs.json b/api_docs/kbn_management_settings_components_field_category.devdocs.json index 8c7e3f4645d9d..decdb9d9a72ae 100644 --- a/api_docs/kbn_management_settings_components_field_category.devdocs.json +++ b/api_docs/kbn_management_settings_components_field_category.devdocs.json @@ -23,7 +23,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -43,7 +43,7 @@ "text": "FieldCategoriesProps" } ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -72,7 +72,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -94,7 +94,7 @@ "text": "FieldCategoryProps" } ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -123,7 +123,7 @@ }, ">>" ], - "path": "packages/kbn-management/settings/components/field_category/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -179,7 +179,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_category/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -200,7 +200,7 @@ "text": "FieldRowProviderProps" } ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false } @@ -218,7 +218,7 @@ "description": [ "\nProps for the {@link ClearQueryLink} component." ], - "path": "packages/kbn-management/settings/components/field_category/clear_query_link.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -231,7 +231,7 @@ "description": [ "The total number of fields in the category." ], - "path": "packages/kbn-management/settings/components/field_category/clear_query_link.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx", "deprecated": false, "trackAdoption": false }, @@ -244,7 +244,7 @@ "description": [ "The number of fields currently being displayed." ], - "path": "packages/kbn-management/settings/components/field_category/clear_query_link.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx", "deprecated": false, "trackAdoption": false }, @@ -260,7 +260,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-management/settings/components/field_category/clear_query_link.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -304,7 +304,7 @@ }, ", \"onFieldChange\" | \"isSavingEnabled\">" ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -326,7 +326,7 @@ "text": "CategorizedFields" } ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false }, @@ -346,7 +346,7 @@ "text": "CategoryCounts" } ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false }, @@ -369,7 +369,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false } @@ -403,7 +403,7 @@ }, ", \"fieldCount\" | \"onClearQuery\">" ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -416,7 +416,7 @@ "description": [ "The name of the category." ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false }, @@ -448,7 +448,7 @@ }, ", \"FieldRow\">[]" ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false } @@ -481,7 +481,7 @@ "text": "FieldRowServices" } ], - "path": "packages/kbn-management/settings/components/field_category/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -495,7 +495,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-management/settings/components/field_category/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx", "deprecated": false, "trackAdoption": false } @@ -531,7 +531,7 @@ "text": "FieldInputKibanaDependencies" } ], - "path": "packages/kbn-management/settings/components/field_category/types.ts", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -562,7 +562,7 @@ "text": "Services" } ], - "path": "packages/kbn-management/settings/components/field_category/types.ts", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index cb28f1307bdc5..8d2d700be41fa 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.devdocs.json b/api_docs/kbn_management_settings_components_field_input.devdocs.json index 8580042c07f55..7a2d189a70b1e 100644 --- a/api_docs/kbn_management_settings_components_field_input.devdocs.json +++ b/api_docs/kbn_management_settings_components_field_input.devdocs.json @@ -39,7 +39,7 @@ }, ">>" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -74,7 +74,7 @@ "description": [ "\nAn interface containing a collection of Kibana plugins and services required to\nrender this component." ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -98,7 +98,7 @@ }, ", \"addDanger\">; }" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false }, @@ -120,7 +120,7 @@ }, "; }" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false } @@ -146,7 +146,7 @@ }, "" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +162,7 @@ "signature": [ "{ id: string; type: T; name: string; ariaAttributes: { ariaLabel: string; ariaDescribedBy?: string | undefined; }; }" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false }, @@ -185,7 +185,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false }, @@ -209,7 +209,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -231,7 +231,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -246,7 +246,7 @@ "description": [ "True if the input can be saved, false otherwise." ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false }, @@ -262,7 +262,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false } @@ -278,7 +278,7 @@ "description": [ "\nContextual services used by a {@link FieldInput} component." ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -294,7 +294,7 @@ "signature": [ "(value: string) => void" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -310,7 +310,7 @@ "signature": [ "string" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -330,7 +330,7 @@ "ValueValidation", ">" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -344,7 +344,7 @@ "signature": [ "string" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -359,7 +359,7 @@ "signature": [ "any" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -389,7 +389,7 @@ }, "" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -419,7 +419,7 @@ }, " | null | undefined; }" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false }, @@ -440,7 +440,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false }, @@ -451,7 +451,7 @@ "tags": [], "label": "isSavingEnabled", "description": [], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false }, @@ -475,7 +475,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -497,7 +497,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 74afbf9357178..830506b050dc7 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.devdocs.json b/api_docs/kbn_management_settings_components_field_row.devdocs.json index 662eb40589eef..6ff70616fe621 100644 --- a/api_docs/kbn_management_settings_components_field_row.devdocs.json +++ b/api_docs/kbn_management_settings_components_field_row.devdocs.json @@ -23,7 +23,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "text": "FieldRowProps" } ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -74,7 +74,7 @@ }, ">) => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -96,7 +96,7 @@ }, ">" ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -125,7 +125,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -145,7 +145,7 @@ "text": "FieldRowProviderProps" } ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -165,7 +165,7 @@ "description": [ "\nProps for a {@link FieldRow} component." ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -189,7 +189,7 @@ }, "; defaultValue?: string | number | boolean | (string | number)[] | null | undefined; name: string; groupId: string; displayName: string; isCustom: boolean; isOverridden: boolean; ariaAttributes: { ariaLabel: string; ariaDescribedBy?: string | undefined; }; savedValue?: string | number | boolean | (string | number)[] | null | undefined; defaultValueDisplay: string; isDefaultValue: boolean; unsavedFieldId: string; }" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false }, @@ -202,7 +202,7 @@ "description": [ "True if saving settings is enabled, false otherwise." ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false }, @@ -234,7 +234,7 @@ }, "> | undefined) => void" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -246,7 +246,7 @@ "tags": [], "label": "id", "description": [], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -267,7 +267,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -285,7 +285,7 @@ "signature": [ "((id: string) => void) | undefined" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -301,7 +301,7 @@ "signature": [ "string" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -336,7 +336,7 @@ }, "> | undefined" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false } @@ -369,7 +369,7 @@ "text": "FieldRowServices" } ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -383,7 +383,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false } @@ -399,7 +399,7 @@ "description": [ "\nAn interface containing a collection of Kibana plugins and services required to\nrender a {@link FieldRow} component." ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -413,7 +413,7 @@ "signature": [ "{ links: { management: Record; }; }" ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false } @@ -429,7 +429,7 @@ "description": [ "\nContextual services used by a {@link FieldRow} component." ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -443,7 +443,7 @@ "signature": [ "{ [key: string]: string; }" ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false } @@ -479,7 +479,7 @@ "text": "FieldInputKibanaDependencies" } ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -510,7 +510,7 @@ "text": "Services" } ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 4986de7fed647..96b2d901c5df8 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.devdocs.json b/api_docs/kbn_management_settings_components_form.devdocs.json index 278d0f42383d9..3413a9cc320a1 100644 --- a/api_docs/kbn_management_settings_components_form.devdocs.json +++ b/api_docs/kbn_management_settings_components_form.devdocs.json @@ -17,7 +17,7 @@ "FormProps", ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/form/form.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/form.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -33,7 +33,7 @@ "signature": [ "FormProps" ], - "path": "packages/kbn-management/settings/components/form/form.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/form.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -62,7 +62,7 @@ }, ">) => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/form/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -84,7 +84,7 @@ }, ">" ], - "path": "packages/kbn-management/settings/components/form/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -107,7 +107,7 @@ "FormProviderProps", ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/form/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -121,7 +121,7 @@ "signature": [ "FormProviderProps" ], - "path": "packages/kbn-management/settings/components/form/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -161,7 +161,7 @@ "text": "FieldInputKibanaDependencies" } ], - "path": "packages/kbn-management/settings/components/form/types.ts", + "path": "src/platform/packages/private/kbn-management/settings/components/form/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -194,7 +194,7 @@ " & ", "Services" ], - "path": "packages/kbn-management/settings/components/form/types.ts", + "path": "src/platform/packages/private/kbn-management/settings/components/form/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index d67e63f9fd578..3340917d6d275 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.devdocs.json b/api_docs/kbn_management_settings_field_definition.devdocs.json index d41e305c3b0c7..3d35ba9357328 100644 --- a/api_docs/kbn_management_settings_field_definition.devdocs.json +++ b/api_docs/kbn_management_settings_field_definition.devdocs.json @@ -39,7 +39,7 @@ }, " | null>" ], - "path": "packages/kbn-management/settings/field_definition/get_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -55,7 +55,7 @@ "signature": [ "GetDefinitionParams" ], - "path": "packages/kbn-management/settings/field_definition/get_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -108,7 +108,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>[]" ], - "path": "packages/kbn-management/settings/field_definition/get_definitions.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -140,7 +140,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>>" ], - "path": "packages/kbn-management/settings/field_definition/get_definitions.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -157,7 +157,7 @@ "signature": [ "SettingsClient" ], - "path": "packages/kbn-management/settings/field_definition/get_definitions.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -187,7 +187,7 @@ "text": "ArrayFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -203,7 +203,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -231,7 +231,7 @@ "text": "ArrayUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -247,7 +247,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -275,7 +275,7 @@ "text": "BooleanFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -291,7 +291,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -319,7 +319,7 @@ "text": "BooleanUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -335,7 +335,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -363,7 +363,7 @@ "text": "ColorFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -379,7 +379,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -407,7 +407,7 @@ "text": "ColorUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -423,7 +423,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -451,7 +451,7 @@ "text": "ImageFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -467,7 +467,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -495,7 +495,7 @@ "text": "ImageUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -511,7 +511,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -539,7 +539,7 @@ "text": "JsonFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -555,7 +555,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -583,7 +583,7 @@ "text": "JsonUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -599,7 +599,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -627,7 +627,7 @@ "text": "MarkdownFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -643,7 +643,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -671,7 +671,7 @@ "text": "MarkdownUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -687,7 +687,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -715,7 +715,7 @@ "text": "NumberFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -731,7 +731,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -759,7 +759,7 @@ "text": "NumberUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -775,7 +775,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -803,7 +803,7 @@ "text": "SelectFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -819,7 +819,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -847,7 +847,7 @@ "text": "SelectUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -863,7 +863,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -891,7 +891,7 @@ "text": "StringFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -907,7 +907,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -935,7 +935,7 @@ "text": "StringUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -951,7 +951,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -979,7 +979,7 @@ "text": "UndefinedFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -995,7 +995,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1023,7 +1023,7 @@ "text": "UndefinedUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1039,7 +1039,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index af5f139fae409..18678c302b2cb 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index d3881d109ada5..332865fcd8260 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index a1d50b9c81982..ea4a646f12108 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.devdocs.json b/api_docs/kbn_management_settings_types.devdocs.json index 0ac6f8bbccb8e..f14f1bd1b4935 100644 --- a/api_docs/kbn_management_settings_types.devdocs.json +++ b/api_docs/kbn_management_settings_types.devdocs.json @@ -11,7 +11,7 @@ "tags": [], "label": "CategorizedFields", "description": [], - "path": "packages/kbn-management/settings/types/category.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/category.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>[]; }" ], - "path": "packages/kbn-management/settings/types/category.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/category.ts", "deprecated": false, "trackAdoption": false } @@ -55,7 +55,7 @@ "tags": [], "label": "CategoryCounts", "description": [], - "path": "packages/kbn-management/settings/types/category.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/category.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -69,7 +69,7 @@ "signature": [ "[category: string]: number" ], - "path": "packages/kbn-management/settings/types/category.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/category.ts", "deprecated": false, "trackAdoption": false } @@ -95,7 +95,7 @@ }, "" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -111,7 +111,7 @@ "signature": [ "{ ariaLabel: string; ariaDescribedBy?: string | undefined; }" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -127,7 +127,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -143,7 +143,7 @@ "signature": [ "V | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -156,7 +156,7 @@ "description": [ "The text-based display of the default value, for use in the UI." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -181,7 +181,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -197,7 +197,7 @@ "signature": [ "string | React.ReactElement> | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -210,7 +210,7 @@ "description": [ "The name of the field suitable for display in the UX." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -223,7 +223,7 @@ "description": [ "The grouping identifier for the field." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -236,7 +236,7 @@ "description": [ "The unique identifier of the field, typically separated by `:`" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -249,7 +249,7 @@ "description": [ "True if the field is a custom setting, false otherwise." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -262,7 +262,7 @@ "description": [ "True if the current saved setting matches the default setting." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -275,7 +275,7 @@ "description": [ "True if the setting is overridden in Kibana, false otherwise." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -288,7 +288,7 @@ "description": [ "True if the setting is read-only, false otherwise." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -304,7 +304,7 @@ "signature": [ "{ name?: string | undefined; type?: string | undefined; } | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -317,7 +317,7 @@ "description": [ "The name of the field suitable for use in the UX." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -333,7 +333,7 @@ "signature": [ "{ values: string[] | number[]; labels: Record; } | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -349,7 +349,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -362,7 +362,7 @@ "description": [ "True if the browser must be reloaded for the setting to take effect, false otherwise." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -378,7 +378,7 @@ "signature": [ "V | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -396,7 +396,7 @@ "signature": [ "T" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -409,7 +409,7 @@ "description": [ "An identifier of the field when it has an unsaved change." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false } @@ -443,7 +443,7 @@ }, "<\"select\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -459,7 +459,7 @@ "signature": [ "{ values: string[] | number[]; labels: Record; }" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false } @@ -473,7 +473,7 @@ "tags": [], "label": "SettingsCapabilities", "description": [], - "path": "packages/kbn-management/settings/types/capabilities.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/capabilities.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -487,7 +487,7 @@ "signature": [ "SettingCapability" ], - "path": "packages/kbn-management/settings/types/capabilities.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/capabilities.ts", "deprecated": false, "trackAdoption": false }, @@ -501,7 +501,7 @@ "signature": [ "SettingCapability" ], - "path": "packages/kbn-management/settings/types/capabilities.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/capabilities.ts", "deprecated": false, "trackAdoption": false } @@ -515,7 +515,7 @@ "tags": [], "label": "SettingsTabs", "description": [], - "path": "packages/kbn-management/settings/types/tab.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/tab.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -561,7 +561,7 @@ }, "[]; isSavingEnabled: boolean; }" ], - "path": "packages/kbn-management/settings/types/tab.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/tab.ts", "deprecated": false, "trackAdoption": false } @@ -595,7 +595,7 @@ }, "" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -613,7 +613,7 @@ "signature": [ "T" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false }, @@ -629,7 +629,7 @@ "signature": [ "V | undefined" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false }, @@ -645,7 +645,7 @@ "signature": [ "V | undefined" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false } @@ -671,7 +671,7 @@ }, "" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -689,7 +689,7 @@ "signature": [ "T" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false }, @@ -705,7 +705,7 @@ "signature": [ "string | null | undefined" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false }, @@ -721,7 +721,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false }, @@ -744,7 +744,7 @@ }, " | null | undefined" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false } @@ -773,7 +773,7 @@ }, "<\"array\", (string | number)[] | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -790,7 +790,7 @@ "signature": [ "\"array\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -814,7 +814,7 @@ }, "<\"array\", (string | number)[] | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -838,7 +838,7 @@ }, "<\"array\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -862,7 +862,7 @@ }, "<\"boolean\", boolean | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -879,7 +879,7 @@ "signature": [ "\"boolean\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -903,7 +903,7 @@ }, "<\"boolean\", boolean | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -927,7 +927,7 @@ }, "<\"boolean\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -951,7 +951,7 @@ }, "<\"color\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -975,7 +975,7 @@ }, "<\"color\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -999,7 +999,7 @@ }, "<\"color\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1023,7 +1023,7 @@ }, "<\"image\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1047,7 +1047,7 @@ }, "<\"image\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1071,7 +1071,7 @@ }, "<\"image\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1095,7 +1095,7 @@ }, "<\"json\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1119,7 +1119,7 @@ }, "<\"json\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1143,7 +1143,7 @@ }, "<\"json\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1240,7 +1240,7 @@ }, " : never" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1257,7 +1257,7 @@ "signature": [ "T extends \"string\" | \"color\" | \"select\" | \"image\" | \"json\" | \"markdown\" ? string : T extends \"boolean\" ? boolean : T extends \"number\" | \"bigint\" ? number : T extends \"array\" ? (string | number)[] : T extends \"undefined\" ? undefined : never" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1281,7 +1281,7 @@ }, "<\"markdown\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1305,7 +1305,7 @@ }, "<\"markdown\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1329,7 +1329,7 @@ }, "<\"markdown\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1353,7 +1353,7 @@ }, "<\"number\", number | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1370,7 +1370,7 @@ "signature": [ "\"number\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1394,7 +1394,7 @@ }, "<\"number\", number | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1418,7 +1418,7 @@ }, "<\"number\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1443,7 +1443,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1457,7 +1457,7 @@ "description": [ "A unique id corresponding to the particular setting being changed." ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1480,7 +1480,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -1507,7 +1507,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1531,7 +1531,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -1550,7 +1550,7 @@ "signature": [ "{ reset: () => void; } | null" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1574,7 +1574,7 @@ }, "<\"select\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1598,7 +1598,7 @@ }, "<\"select\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1615,7 +1615,7 @@ "signature": [ "\"string\" | \"number\" | \"boolean\" | \"undefined\" | \"color\" | \"select\" | \"image\" | \"array\" | \"json\" | \"markdown\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1639,7 +1639,7 @@ }, "<\"string\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1656,7 +1656,7 @@ "signature": [ "\"string\" | \"color\" | \"select\" | \"image\" | \"json\" | \"markdown\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1680,7 +1680,7 @@ }, "<\"string\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1704,7 +1704,7 @@ }, "<\"string\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1736,7 +1736,7 @@ }, "" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1760,7 +1760,7 @@ }, "<\"undefined\", null | undefined>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1777,7 +1777,7 @@ "signature": [ "\"undefined\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1801,7 +1801,7 @@ }, "<\"undefined\", null | undefined>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1825,7 +1825,7 @@ }, "<\"undefined\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1856,7 +1856,7 @@ }, ">; }" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1873,7 +1873,7 @@ "signature": [ "string | number | boolean | (string | number)[] | null | undefined" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 9adad01d8feb8..a7a49a96996a0 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.devdocs.json b/api_docs/kbn_management_settings_utilities.devdocs.json index 8c6fc7bcd6e3f..853ca2c66ab74 100644 --- a/api_docs/kbn_management_settings_utilities.devdocs.json +++ b/api_docs/kbn_management_settings_utilities.devdocs.json @@ -36,7 +36,7 @@ "text": "CategorizedFields" } ], - "path": "packages/kbn-management/settings/utilities/category/categorize_fields.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/categorize_fields.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -65,7 +65,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>[]" ], - "path": "packages/kbn-management/settings/utilities/category/categorize_fields.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/categorize_fields.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -109,7 +109,7 @@ "text": "CategoryCounts" } ], - "path": "packages/kbn-management/settings/utilities/category/get_category_counts.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_counts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -140,7 +140,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>[]" ], - "path": "packages/kbn-management/settings/utilities/category/get_category_counts.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_counts.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -161,7 +161,7 @@ "signature": [ "(category: string | undefined) => string" ], - "path": "packages/kbn-management/settings/utilities/category/get_category_name.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_name.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -175,7 +175,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-management/settings/utilities/category/get_category_name.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_name.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -196,7 +196,7 @@ "signature": [ "(field: F<\"array\">, change: C<\"array\"> | undefined) => [string[], boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -212,7 +212,7 @@ "signature": [ "F<\"array\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -229,7 +229,7 @@ "signature": [ "C<\"array\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -250,7 +250,7 @@ "signature": [ "(field: F<\"color\">, change: C<\"color\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -266,7 +266,7 @@ "signature": [ "F<\"color\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -283,7 +283,7 @@ "signature": [ "C<\"color\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -304,7 +304,7 @@ "signature": [ "(field: F<\"boolean\">, change: C<\"boolean\"> | undefined) => [boolean, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -320,7 +320,7 @@ "signature": [ "F<\"boolean\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -337,7 +337,7 @@ "signature": [ "C<\"boolean\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -358,7 +358,7 @@ "signature": [ "(field: F<\"image\">, change: C<\"image\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -374,7 +374,7 @@ "signature": [ "F<\"image\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -391,7 +391,7 @@ "signature": [ "C<\"image\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -412,7 +412,7 @@ "signature": [ "(field: F<\"json\">, change: C<\"json\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -428,7 +428,7 @@ "signature": [ "F<\"json\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -445,7 +445,7 @@ "signature": [ "C<\"json\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -466,7 +466,7 @@ "signature": [ "(field: F<\"markdown\">, change: C<\"markdown\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -482,7 +482,7 @@ "signature": [ "F<\"markdown\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -499,7 +499,7 @@ "signature": [ "C<\"markdown\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -520,7 +520,7 @@ "signature": [ "(field: F<\"number\">, change: C<\"number\"> | undefined) => [number, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -536,7 +536,7 @@ "signature": [ "F<\"number\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -553,7 +553,7 @@ "signature": [ "C<\"number\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -574,7 +574,7 @@ "signature": [ "(field: F<\"select\">, change: C<\"select\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -590,7 +590,7 @@ "signature": [ "F<\"select\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -607,7 +607,7 @@ "signature": [ "C<\"select\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -628,7 +628,7 @@ "signature": [ "(field: F<\"string\">, change: C<\"string\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -644,7 +644,7 @@ "signature": [ "F<\"string\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -661,7 +661,7 @@ "signature": [ "C<\"string\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -682,7 +682,7 @@ "signature": [ "(field: F<\"undefined\">, change: C<\"undefined\"> | undefined) => [string | null | undefined, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -698,7 +698,7 @@ "signature": [ "F<\"undefined\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -715,7 +715,7 @@ "signature": [ "C<\"undefined\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -744,7 +744,7 @@ }, " | null | undefined)[]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -760,7 +760,7 @@ "signature": [ "F" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -777,7 +777,7 @@ "signature": [ "C | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -830,7 +830,7 @@ }, ", \"unsavedValue\"> | undefined) => boolean" ], - "path": "packages/kbn-management/settings/utilities/field/has_unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -862,7 +862,7 @@ }, " | null>, \"defaultValue\" | \"savedValue\">" ], - "path": "packages/kbn-management/settings/utilities/field/has_unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -887,7 +887,7 @@ }, ", \"unsavedValue\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/has_unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -908,7 +908,7 @@ "signature": [ "(field: F, change: C | undefined) => boolean" ], - "path": "packages/kbn-management/settings/utilities/field/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -924,7 +924,7 @@ "signature": [ "F" ], - "path": "packages/kbn-management/settings/utilities/field/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -941,7 +941,7 @@ "signature": [ "C | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -986,7 +986,7 @@ }, ") => boolean" ], - "path": "packages/kbn-management/settings/utilities/setting/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1017,7 +1017,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>" ], - "path": "packages/kbn-management/settings/utilities/setting/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1040,7 +1040,7 @@ "text": "Value" } ], - "path": "packages/kbn-management/settings/utilities/setting/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1079,7 +1079,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>>" ], - "path": "packages/kbn-management/settings/utilities/setting/normalize_settings.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1095,7 +1095,7 @@ "signature": [ "RawSettings" ], - "path": "packages/kbn-management/settings/utilities/setting/normalize_settings.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1142,7 +1142,7 @@ }, "" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1165,7 +1165,7 @@ }, "" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1195,7 +1195,7 @@ }, "" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1219,7 +1219,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1241,7 +1241,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -1275,7 +1275,7 @@ }, " | null | undefined; }" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 331cb1ceddeac..7334ea82e2b2d 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index ce8a3fd26d1b2..cd69ad6b947cc 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_manifest.mdx b/api_docs/kbn_manifest.mdx index 64218575a83a2..7cdf9ab3a59b9 100644 --- a/api_docs/kbn_manifest.mdx +++ b/api_docs/kbn_manifest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-manifest title: "@kbn/manifest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/manifest plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/manifest'] --- import kbnManifestObj from './kbn_manifest.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 0e365ab6aebdf..a9854dac71f61 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index e0b147e3efe0f..676ec31487c77 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index ff0fc16114bba..8dc251504392a 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 4db52f230beba..18ec92cbca310 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 8f2d2ccdf2544..ac3b6c8bd7958 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 57f44e3457aa2..14f48f8a3482f 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index f5ccbecdde615..a54e94969ba2f 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index b0c26c2b62916..4608d29912af0 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index dcd567834c179..f45ca2d8c664e 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index aa266265b7c5f..3e7a2fb11e94c 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index 060ab12936358..f26b3b2363e37 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index f88871437f8b5..f186d79bbd9cc 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_field_stats_flyout.devdocs.json b/api_docs/kbn_ml_field_stats_flyout.devdocs.json index 6a36d381c9d49..06386cb2c1d56 100644 --- a/api_docs/kbn_ml_field_stats_flyout.devdocs.json +++ b/api_docs/kbn_ml_field_stats_flyout.devdocs.json @@ -583,7 +583,7 @@ "EuiSelectableLIOption", ">> & ", "CommonProps", - " & { label: string; searchableLabel?: string | undefined; key?: string | undefined; checked?: \"mixed\" | \"on\" | \"off\" | undefined; disabled?: boolean | undefined; isGroupLabel?: false | undefined; prepend?: React.ReactNode; append?: React.ReactNode; ref?: ((optionIndex: number) => void) | undefined; id?: undefined; data?: { [key: string]: any; } | undefined; textWrap?: \"wrap\" | \"truncate\" | undefined; truncationProps?: Partial void) | undefined; id?: undefined; data?: { [key: string]: any; } | undefined; textWrap?: \"wrap\" | \"truncate\" | undefined; truncationProps?: Partial> | undefined; toolTipContent?: React.ReactNode; toolTipProps?: Partial" ], @@ -43,10 +43,10 @@ "children": [ { "parentPluginId": "@kbn/ml-url-state", - "id": "def-common.PageUrlStateService.getPageUrlState$", + "id": "def-common.UrlStateService.getUrlState$", "type": "Function", "tags": [], - "label": "getPageUrlState$", + "label": "getUrlState$", "description": [ "\nProvides updates for the page URL state." ], @@ -63,10 +63,10 @@ }, { "parentPluginId": "@kbn/ml-url-state", - "id": "def-common.PageUrlStateService.getPageUrlState", + "id": "def-common.UrlStateService.getUrlState", "type": "Function", "tags": [], - "label": "getPageUrlState", + "label": "getUrlState", "description": [], "signature": [ "() => T | null" @@ -79,7 +79,7 @@ }, { "parentPluginId": "@kbn/ml-url-state", - "id": "def-common.PageUrlStateService.updateUrlState", + "id": "def-common.UrlStateService.updateUrlState", "type": "Function", "tags": [], "label": "updateUrlState", @@ -93,7 +93,7 @@ "children": [ { "parentPluginId": "@kbn/ml-url-state", - "id": "def-common.PageUrlStateService.updateUrlState.$1", + "id": "def-common.UrlStateService.updateUrlState.$1", "type": "Object", "tags": [], "label": "update", @@ -108,7 +108,7 @@ }, { "parentPluginId": "@kbn/ml-url-state", - "id": "def-common.PageUrlStateService.updateUrlState.$2", + "id": "def-common.UrlStateService.updateUrlState.$2", "type": "CompoundType", "tags": [], "label": "replaceState", @@ -126,7 +126,7 @@ }, { "parentPluginId": "@kbn/ml-url-state", - "id": "def-common.PageUrlStateService.setCurrentState", + "id": "def-common.UrlStateService.setCurrentState", "type": "Function", "tags": [], "label": "setCurrentState", @@ -142,7 +142,7 @@ "children": [ { "parentPluginId": "@kbn/ml-url-state", - "id": "def-common.PageUrlStateService.setCurrentState.$1", + "id": "def-common.UrlStateService.setCurrentState.$1", "type": "Uncategorized", "tags": [], "label": "currentState", @@ -160,7 +160,7 @@ }, { "parentPluginId": "@kbn/ml-url-state", - "id": "def-common.PageUrlStateService.setUpdateCallback", + "id": "def-common.UrlStateService.setUpdateCallback", "type": "Function", "tags": [], "label": "setUpdateCallback", @@ -176,7 +176,7 @@ "children": [ { "parentPluginId": "@kbn/ml-url-state", - "id": "def-common.PageUrlStateService.setUpdateCallback.$1", + "id": "def-common.UrlStateService.setUpdateCallback.$1", "type": "Function", "tags": [], "label": "callback", @@ -363,8 +363,8 @@ "pluginId": "@kbn/ml-url-state", "scope": "common", "docId": "kibKbnMlUrlStatePluginApi", - "section": "def-common.PageUrlStateService", - "text": "PageUrlStateService" + "section": "def-common.UrlStateService", + "text": "UrlStateService" }, "]" ], diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index ee7e90997496a..620f0c2a148d7 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_ml_validators.mdx b/api_docs/kbn_ml_validators.mdx index b6ae503df089d..fb5a7842de5e6 100644 --- a/api_docs/kbn_ml_validators.mdx +++ b/api_docs/kbn_ml_validators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-validators title: "@kbn/ml-validators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-validators plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-validators'] --- import kbnMlValidatorsObj from './kbn_ml_validators.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index aa1e3a3a44da7..fc6c7dc3c4dc2 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 89a2aa83a701f..e76ed4b489482 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 62193d39e1e39..2c2f4bacd50cd 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_object_versioning_utils.mdx b/api_docs/kbn_object_versioning_utils.mdx index 5f48f93631b5a..2b6c76bf10527 100644 --- a/api_docs/kbn_object_versioning_utils.mdx +++ b/api_docs/kbn_object_versioning_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning-utils title: "@kbn/object-versioning-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning-utils'] --- import kbnObjectVersioningUtilsObj from './kbn_object_versioning_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.devdocs.json b/api_docs/kbn_observability_alert_details.devdocs.json index b1c6297dead23..7cdb8e6842f9c 100644 --- a/api_docs/kbn_observability_alert_details.devdocs.json +++ b/api_docs/kbn_observability_alert_details.devdocs.json @@ -29,7 +29,7 @@ "signature": [ "({ alertStart, alertEnd, color, id }: Props) => React.JSX.Element" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_active_time_range_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -43,7 +43,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_active_time_range_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -62,7 +62,7 @@ "signature": [ "({ alertStart, color, dateFormat, id }: Props) => React.JSX.Element" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -76,7 +76,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -95,7 +95,7 @@ "signature": [ "({ threshold, color, id }: Props) => React.JSX.Element" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_threshold_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -109,7 +109,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_threshold_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -128,7 +128,7 @@ "signature": [ "({ color, id, threshold }: Props) => React.JSX.Element" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_threshold_time_range_rect.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -142,7 +142,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_threshold_time_range_rect.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -164,7 +164,7 @@ ") => ", "UseAlertsHistory" ], - "path": "x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.ts", + "path": "x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -178,7 +178,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.ts", + "path": "x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index fc1c9ad0e3723..3511b63bdff45 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_rule_utils.devdocs.json b/api_docs/kbn_observability_alerting_rule_utils.devdocs.json index ba4a7cbf85536..71001a1223024 100644 --- a/api_docs/kbn_observability_alerting_rule_utils.devdocs.json +++ b/api_docs/kbn_observability_alerting_rule_utils.devdocs.json @@ -37,7 +37,7 @@ }, "[]) => Record" ], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -58,7 +58,7 @@ }, "[]" ], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -76,7 +76,7 @@ "tags": [], "label": "Group", "description": [], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -87,7 +87,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false }, @@ -98,7 +98,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_observability_alerting_rule_utils.mdx b/api_docs/kbn_observability_alerting_rule_utils.mdx index 92530c3edb177..40caf4571cda5 100644 --- a/api_docs/kbn_observability_alerting_rule_utils.mdx +++ b/api_docs/kbn_observability_alerting_rule_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-rule-utils title: "@kbn/observability-alerting-rule-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-rule-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-rule-utils'] --- import kbnObservabilityAlertingRuleUtilsObj from './kbn_observability_alerting_rule_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.devdocs.json b/api_docs/kbn_observability_alerting_test_data.devdocs.json index f2836f5247cc7..94fab28a7f008 100644 --- a/api_docs/kbn_observability_alerting_test_data.devdocs.json +++ b/api_docs/kbn_observability_alerting_test_data.devdocs.json @@ -31,7 +31,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -66,7 +66,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -80,7 +80,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -101,7 +101,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -115,7 +115,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -130,7 +130,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -142,7 +142,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -156,7 +156,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false }, @@ -170,7 +170,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false }, @@ -184,7 +184,7 @@ "signature": [ "{ criteria: any[]; groupBy?: string[] | undefined; searchConfiguration: { query: { query?: string | undefined; }; }; } | undefined" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false } @@ -206,7 +206,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ "tags": [], "label": "{\n indexPattern,\n id,\n}", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -228,7 +228,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false }, @@ -239,7 +239,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false } @@ -261,7 +261,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_index_connector.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_index_connector.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -280,7 +280,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -294,7 +294,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -313,7 +313,7 @@ "signature": [ "() => Promise" ], - "path": "x-pack/packages/observability/alerting_test_data/src/run.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -332,7 +332,7 @@ "tags": [], "label": "scenario1", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -343,7 +343,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -354,7 +354,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -365,7 +365,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -376,7 +376,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false } @@ -389,7 +389,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -400,7 +400,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -411,7 +411,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -422,7 +422,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -446,7 +446,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -457,7 +457,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -468,7 +468,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -479,7 +479,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false } @@ -501,7 +501,7 @@ "tags": [], "label": "scenario2", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -512,7 +512,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -523,7 +523,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -534,7 +534,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -545,7 +545,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -558,7 +558,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -569,7 +569,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -580,7 +580,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -591,7 +591,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -615,7 +615,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -629,7 +629,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -640,7 +640,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -651,7 +651,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -662,7 +662,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -684,7 +684,7 @@ "tags": [], "label": "scenario3", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -695,7 +695,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -706,7 +706,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -717,7 +717,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -728,7 +728,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false } @@ -741,7 +741,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -752,7 +752,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -763,7 +763,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -774,7 +774,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -798,7 +798,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -809,7 +809,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -820,7 +820,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -831,7 +831,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false } @@ -853,7 +853,7 @@ "tags": [], "label": "scenario4", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -864,7 +864,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -875,7 +875,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -886,7 +886,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -897,7 +897,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false } @@ -910,7 +910,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -921,7 +921,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -932,7 +932,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -943,7 +943,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -967,7 +967,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -978,7 +978,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -989,7 +989,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1000,7 +1000,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false } @@ -1022,7 +1022,7 @@ "tags": [], "label": "scenario5", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1033,7 +1033,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1044,7 +1044,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1055,7 +1055,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1066,7 +1066,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -1079,7 +1079,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1090,7 +1090,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1101,7 +1101,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1112,7 +1112,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1136,7 +1136,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1150,7 +1150,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1161,7 +1161,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1172,7 +1172,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1183,7 +1183,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -1205,7 +1205,7 @@ "tags": [], "label": "scenario6", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1216,7 +1216,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1227,7 +1227,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1238,7 +1238,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1249,7 +1249,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false } @@ -1262,7 +1262,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1273,7 +1273,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1284,7 +1284,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1295,7 +1295,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1319,7 +1319,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1330,7 +1330,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1341,7 +1341,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1352,7 +1352,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index f8f849871e1cd..0e100a4e46a92 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json b/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json index ae2d7079bfc75..84d4a7404387e 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json @@ -30,7 +30,7 @@ "(alertStart: string, alertEnd?: string | undefined, lookBackWindow?: { size: number; unit: \"m\" | \"s\" | \"d\" | \"h\"; } | undefined) => ", "TimeRange" ], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -44,7 +44,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -59,7 +59,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -71,7 +71,7 @@ "tags": [], "label": "lookBackWindow", "description": [], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -82,7 +82,7 @@ "tags": [], "label": "size", "description": [], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false }, @@ -96,7 +96,7 @@ "signature": [ "\"m\" | \"s\" | \"d\" | \"h\"" ], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 5c5c59993a441..cbd006c0259d7 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_observability_logs_overview.mdx b/api_docs/kbn_observability_logs_overview.mdx index 276476ac7430b..4132d15cc9952 100644 --- a/api_docs/kbn_observability_logs_overview.mdx +++ b/api_docs/kbn_observability_logs_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-logs-overview title: "@kbn/observability-logs-overview" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-logs-overview plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-logs-overview'] --- import kbnObservabilityLogsOverviewObj from './kbn_observability_logs_overview.devdocs.json'; diff --git a/api_docs/kbn_observability_synthetics_test_data.devdocs.json b/api_docs/kbn_observability_synthetics_test_data.devdocs.json index 21c91a98e0540..bd016da5427c8 100644 --- a/api_docs/kbn_observability_synthetics_test_data.devdocs.json +++ b/api_docs/kbn_observability_synthetics_test_data.devdocs.json @@ -17,7 +17,345 @@ "objects": [] }, "common": { - "classes": [], + "classes": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner", + "type": "Class", + "tags": [], + "label": "SyntheticsRunner", + "description": [], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.getService", + "type": "Any", + "tags": [], + "label": "getService", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.kibanaUrl", + "type": "string", + "tags": [], + "label": "kibanaUrl", + "description": [], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.testFilesLoaded", + "type": "boolean", + "tags": [], + "label": "testFilesLoaded", + "description": [], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "ArgParams" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.Unnamed.$1", + "type": "Any", + "tags": [], + "label": "getService", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "ArgParams" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.createTestUsers", + "type": "Function", + "tags": [], + "label": "createTestUsers", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestFiles", + "type": "Function", + "tags": [], + "label": "loadTestFiles", + "description": [], + "signature": [ + "(callback: (reload?: boolean | undefined) => Promise, reload?: boolean) => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestFiles.$1", + "type": "Function", + "tags": [], + "label": "callback", + "description": [], + "signature": [ + "(reload?: boolean | undefined) => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestFiles.$2", + "type": "boolean", + "tags": [], + "label": "reload", + "description": [], + "signature": [ + "boolean" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestData", + "type": "Function", + "tags": [], + "label": "loadTestData", + "description": [], + "signature": [ + "(e2eDir: string, dataArchives: string[]) => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestData.$1", + "type": "string", + "tags": [], + "label": "e2eDir", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestData.$2", + "type": "Array", + "tags": [], + "label": "dataArchives", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.getKibanaUrl", + "type": "Function", + "tags": [], + "label": "getKibanaUrl", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.getElasticsearchUrl", + "type": "Function", + "tags": [], + "label": "getElasticsearchUrl", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.run", + "type": "Function", + "tags": [], + "label": "run", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.assertResults", + "type": "Function", + "tags": [], + "label": "assertResults", + "description": [], + "signature": [ + "(results: { [x: string]: ", + "JourneyResult", + "; }) => void" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.assertResults.$1", + "type": "Object", + "tags": [], + "label": "results", + "description": [], + "signature": [ + "{ [x: string]: ", + "JourneyResult", + "; }" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.cleanUp", + "type": "Function", + "tags": [], + "label": "cleanUp", + "description": [], + "signature": [ + "() => void" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "functions": [ { "parentPluginId": "@kbn/observability-synthetics-test-data", @@ -29,9 +367,9 @@ "signature": [ "({ name, timestamp, monitorId, location, configId, }?: ", "DocOverrides", - ") => { summary: { up: number; down: number; final_attempt: boolean; }; monitor: { duration: { us: number; }; origin: string; ip: string; name: string; fleet_managed: boolean; check_group: string; timespan: { lt: string; gte: string | moment.Moment; }; id: string; type: string; status: \"up\" | \"down\"; }; error: { message: string; type: string; }; '@timestamp': string; config_id: string; state: { duration_ms: number; checks: number; ends: null; started_at: string; id: string; up: number; down: number; flap_history: never[]; status: string; }; url: { scheme: string; port: number; domain: string; full: string; }; ecs: { version: string; }; tcp: { rtt: { connect: { us: number; }; }; }; event: { agent_id_status: string; ingested: string; dataset: string; }; agent: { name: string; id: string; type: string; ephemeral_id: string; version: string; }; elastic_agent: { id: string; version: string; snapshot: boolean; }; data_stream: { namespace: string; type: string; dataset: string; }; resolve: { rtt: { us: number; }; ip: string; }; tls: { established: boolean; cipher: string; certificate_not_valid_before: string; server: { x509: { not_after: string; subject: { distinguished_name: string; common_name: string; }; not_before: string; public_key_algorithm: string; public_key_curve: string; signature_algorithm: string; serial_number: string; issuer: { distinguished_name: string; common_name: string; }; }; hash: { sha1: string; sha256: string; }; }; rtt: { handshake: { us: number; }; }; version: string; certificate_not_valid_after: string; version_protocol: string; }; http: { rtt: { response_header: { us: number; }; total: { us: number; }; write_request: { us: number; }; content: { us: number; }; validate: { us: number; }; }; response: { headers: { Server: string; P3p: string; Date: string; 'X-Frame-Options': string; 'Accept-Ranges': string; 'Cache-Control': string; 'X-Xss-Protection': string; 'Cross-Origin-Opener-Policy-Report-Only': string; Vary: string; Expires: string; 'Content-Type': string; }; status_code: number; mime_type: string; body: { bytes: number; hash: string; }; }; }; observer: { geo: { name: string; location: string; }; name: string; }; }" + ") => { summary: { up: number; down: number; final_attempt: boolean; }; monitor: { duration: { us: number; }; origin: string; ip: string; name: string; fleet_managed: boolean; check_group: string; timespan: { lt: string; gte: string | moment.Moment; }; id: string; type: string; status: \"up\" | \"down\"; }; error: { message: string; type: string; }; '@timestamp': string; config_id: string; state: { duration_ms: number; checks: number; ends: null; started_at: string; id: string; up: number; down: number; flap_history: never[]; status: string; }; url: { scheme: string; port: number; domain: string; full: string; }; ecs: { version: string; }; tcp: { rtt: { connect: { us: number; }; }; }; event: { agent_id_status: string; ingested: string; dataset: string; }; agent: { name: string; id: string; type: string; ephemeral_id: string; version: string; }; elastic_agent: { id: string; version: string; snapshot: boolean; }; data_stream: { namespace: string; type: string; dataset: string; }; resolve: { rtt: { us: number; }; ip: string; }; tls: { established: boolean; cipher: string; certificate_not_valid_before: string; server: { x509: { not_after: string; subject: { distinguished_name: string; common_name: string; }; not_before: string; public_key_algorithm: string; public_key_curve: string; signature_algorithm: string; serial_number: string; issuer: { distinguished_name: string; common_name: string; }; }; hash: { sha1: string; sha256: string; }; }; rtt: { handshake: { us: number; }; }; version: string; certificate_not_valid_after: string; version_protocol: string; }; http: { rtt: { response_header: { us: number; }; total: { us: number; }; write_request: { us: number; }; content: { us: number; }; validate: { us: number; }; }; response: { headers: { Server: string; P3p: string; Date: string; 'X-Frame-Options': string; 'Accept-Ranges': string; 'Cache-Control': string; 'X-Xss-Protection': string; 'Cross-Origin-Opener-Policy-Report-Only': string; Vary: string; Expires: string; 'Content-Type': string; }; status_code: number; mime_type: string; body: { bytes: number; hash: string; }; }; }; meta: { space_id: string; }; observer: { geo: { name: string; location: string; }; name: string; }; }" ], - "path": "x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts", + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +383,7 @@ "signature": [ "DocOverrides" ], - "path": "x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts", + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -64,9 +402,9 @@ "signature": [ "({ name, timestamp, monitorId, configId, testRunId, location, }?: ", "DocOverrides", - ") => { test_run_id?: string | undefined; summary: { up: number; down: number; final_attempt: boolean; }; monitor: { duration: { us: number; }; origin: string; ip: string; name: string; fleet_managed: boolean; check_group: string; timespan: { lt: string; gte: string | moment.Moment; }; id: string; type: string; status: \"up\" | \"down\"; }; '@timestamp': string; config_id: string; state: { duration_ms: number; checks: number; ends: null; started_at: string; up: number; id: string; down: number; flap_history: never[]; status: string; }; url: { scheme: string; port: number; domain: string; full: string; }; ecs: { version: string; }; tcp: { rtt: { connect: { us: number; }; }; }; event: { agent_id_status: string; ingested: string; dataset: string; }; agent: { name: string; id: string; type: string; ephemeral_id: string; version: string; }; elastic_agent: { id: string; version: string; snapshot: boolean; }; data_stream: { namespace: string; type: string; dataset: string; }; resolve: { rtt: { us: number; }; ip: string; }; tls: { established: boolean; cipher: string; certificate_not_valid_before: string; server: { x509: { not_after: string; subject: { distinguished_name: string; common_name: string; }; not_before: string; public_key_algorithm: string; public_key_curve: string; signature_algorithm: string; serial_number: string; issuer: { distinguished_name: string; common_name: string; }; }; hash: { sha1: string; sha256: string; }; }; rtt: { handshake: { us: number; }; }; version: string; certificate_not_valid_after: string; version_protocol: string; }; http: { rtt: { response_header: { us: number; }; total: { us: number; }; write_request: { us: number; }; content: { us: number; }; validate: { us: number; }; }; response: { headers: { Server: string; P3p: string; Date: string; 'X-Frame-Options': string; 'Accept-Ranges': string; 'Cache-Control': string; 'X-Xss-Protection': string; 'Cross-Origin-Opener-Policy-Report-Only': string; Vary: string; Expires: string; 'Content-Type': string; }; status_code: number; mime_type: string; body: { bytes: number; hash: string; }; }; }; observer: { geo: { name: string; location: string; }; name: string; }; }" + ") => { test_run_id?: string | undefined; summary: { up: number; down: number; final_attempt: boolean; }; monitor: { duration: { us: number; }; origin: string; ip: string; name: string; fleet_managed: boolean; check_group: string; timespan: { lt: string; gte: string | moment.Moment; }; id: string; type: string; status: \"up\" | \"down\"; }; '@timestamp': string; config_id: string; state: { duration_ms: number; checks: number; ends: null; started_at: string; up: number; id: string; down: number; flap_history: never[]; status: string; }; url: { scheme: string; port: number; domain: string; full: string; }; ecs: { version: string; }; tcp: { rtt: { connect: { us: number; }; }; }; event: { agent_id_status: string; ingested: string; dataset: string; }; agent: { name: string; id: string; type: string; ephemeral_id: string; version: string; }; elastic_agent: { id: string; version: string; snapshot: boolean; }; data_stream: { namespace: string; type: string; dataset: string; }; resolve: { rtt: { us: number; }; ip: string; }; tls: { established: boolean; cipher: string; certificate_not_valid_before: string; server: { x509: { not_after: string; subject: { distinguished_name: string; common_name: string; }; not_before: string; public_key_algorithm: string; public_key_curve: string; signature_algorithm: string; serial_number: string; issuer: { distinguished_name: string; common_name: string; }; }; hash: { sha1: string; sha256: string; }; }; rtt: { handshake: { us: number; }; }; version: string; certificate_not_valid_after: string; version_protocol: string; }; http: { rtt: { response_header: { us: number; }; total: { us: number; }; write_request: { us: number; }; content: { us: number; }; validate: { us: number; }; }; response: { headers: { Server: string; P3p: string; Date: string; 'X-Frame-Options': string; 'Accept-Ranges': string; 'Cache-Control': string; 'X-Xss-Protection': string; 'Cross-Origin-Opener-Policy-Report-Only': string; Vary: string; Expires: string; 'Content-Type': string; }; status_code: number; mime_type: string; body: { bytes: number; hash: string; }; }; }; meta: { space_id: string; }; observer: { geo: { name: string; location: string; }; name: string; }; }" ], - "path": "x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts", + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -80,7 +418,74 @@ "signature": [ "DocOverrides" ], - "path": "x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts", + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.readKibanaConfig", + "type": "Function", + "tags": [], + "label": "readKibanaConfig", + "description": [], + "signature": [ + "() => Record" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/read_kibana_config.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.recordVideo", + "type": "Function", + "tags": [], + "label": "recordVideo", + "description": [], + "signature": [ + "(page: ", + "Page", + ", postfix?: string) => void" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.recordVideo.$1", + "type": "Object", + "tags": [], + "label": "page", + "description": [], + "signature": [ + "Page" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.recordVideo.$2", + "type": "string", + "tags": [], + "label": "postfix", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -93,6 +498,22 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.argv", + "type": "Object", + "tags": [], + "label": "argv", + "description": [], + "signature": [ + "{ [x: string]: unknown; headless: boolean; bail: boolean; grep: undefined; _: string[]; $0: string; }" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/parse_args_params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/kbn_observability_synthetics_test_data.mdx b/api_docs/kbn_observability_synthetics_test_data.mdx index fe1ff61f417f9..0d373a2a7fa38 100644 --- a/api_docs/kbn_observability_synthetics_test_data.mdx +++ b/api_docs/kbn_observability_synthetics_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-synthetics-test-data title: "@kbn/observability-synthetics-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-synthetics-test-data plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-synthetics-test-data'] --- import kbnObservabilitySyntheticsTestDataObj from './kbn_observability_synthetics_test_data.devdocs.json'; @@ -21,10 +21,16 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 1 | +| 31 | 2 | 31 | 2 | ## Common +### Objects + + ### Functions +### Classes + + diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 03890b35301f6..cbe66f0b49ec0 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 8a7c6d88ea4d4..a3d94cb757aa5 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 175d8c0e1b5f3..33da82c9329d4 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 9807ae3e162c7..596269472abaf 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.devdocs.json b/api_docs/kbn_osquery_io_ts_types.devdocs.json index 4fd8870da6eaf..c63d3feefe73c 100644 --- a/api_docs/kbn_osquery_io_ts_types.devdocs.json +++ b/api_docs/kbn_osquery_io_ts_types.devdocs.json @@ -32,7 +32,7 @@ "signature": [ "{ agents: string[]; allAgentsSelected: boolean; platformsSelected: string[]; policiesSelected: string[]; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +47,7 @@ "signature": [ "{ agents: string[]; allAgentsSelected: boolean; platformsSelected: string[]; policiesSelected: string[]; } | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -62,7 +62,7 @@ "signature": [ "{ id: string; query: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }[]" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -77,7 +77,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -92,7 +92,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -107,7 +107,7 @@ "signature": [ "{ [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -122,7 +122,7 @@ "signature": [ "{ [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -137,7 +137,7 @@ "signature": [ "{ name: string | undefined; url: string | undefined; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -152,7 +152,7 @@ "signature": [ "{ name: string | undefined; url: string | undefined; } | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -167,7 +167,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -182,7 +182,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -197,7 +197,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -212,7 +212,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -227,7 +227,7 @@ "signature": [ "{ [x: string]: { query: string; id: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; saved_query_id: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -242,7 +242,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -257,7 +257,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -272,7 +272,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -287,7 +287,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -302,7 +302,7 @@ "signature": [ "{ id: string; query: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }[] | { [x: string]: { query: string; id: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; saved_query_id: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -317,7 +317,7 @@ "signature": [ "{ id: string; query: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }[] | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -332,7 +332,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -347,7 +347,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -362,7 +362,7 @@ "signature": [ "boolean" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -377,7 +377,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -392,7 +392,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -407,7 +407,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -422,7 +422,7 @@ "signature": [ "boolean" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -437,7 +437,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -452,7 +452,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -467,7 +467,7 @@ "signature": [ "number" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -482,7 +482,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -497,7 +497,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -512,7 +512,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -544,7 +544,7 @@ "StringC", ">; }>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -578,7 +578,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -644,7 +644,7 @@ "UndefinedC", "]>; }>>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -659,7 +659,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -679,7 +679,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -709,7 +709,7 @@ "StringC", ">]>; }>>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -743,7 +743,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -771,7 +771,7 @@ "UndefinedC", "]>; }>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -803,7 +803,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -818,7 +818,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -838,7 +838,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -853,7 +853,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -873,7 +873,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -947,7 +947,7 @@ "UndefinedC", "]>; }>>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -962,7 +962,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -982,7 +982,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -997,7 +997,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1017,7 +1017,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1145,7 +1145,7 @@ "UndefinedC", "]>; }>>]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1215,7 +1215,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1230,7 +1230,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1250,7 +1250,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1265,7 +1265,7 @@ "signature": [ "BooleanC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1285,7 +1285,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1300,7 +1300,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1320,7 +1320,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1335,7 +1335,7 @@ "signature": [ "BooleanC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1355,7 +1355,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1377,7 +1377,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1393,7 +1393,7 @@ "Type", "" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1413,7 +1413,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1428,7 +1428,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1448,7 +1448,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 736ca4874ace0..99e8197157ab7 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_palettes.devdocs.json b/api_docs/kbn_palettes.devdocs.json new file mode 100644 index 0000000000000..0f5ba9d2d0b21 --- /dev/null +++ b/api_docs/kbn_palettes.devdocs.json @@ -0,0 +1,796 @@ +{ + "id": "@kbn/palettes", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes", + "type": "Class", + "tags": [], + "label": "KbnPalettes", + "description": [], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.palettes", + "type": "Object", + "tags": [], + "label": "#palettes", + "description": [], + "signature": [ + "Map" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.aliasMappings", + "type": "Object", + "tags": [], + "label": "#aliasMappings", + "description": [], + "signature": [ + "Map" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.defaultPalette", + "type": "Object", + "tags": [], + "label": "#defaultPalette", + "description": [], + "signature": [ + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + } + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.Unnamed.$1", + "type": "Array", + "tags": [], + "label": "palettes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + }, + "[]" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "defaultPalette", + "description": [], + "signature": [ + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + } + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.query", + "type": "Function", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "(id: string) => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + }, + " | undefined" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.query.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "(id: string) => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + } + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.get.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.getAll", + "type": "Function", + "tags": [], + "label": "getAll", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + }, + "[]" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.getKbnPalettes", + "type": "Function", + "tags": [], + "label": "getKbnPalettes", + "description": [], + "signature": [ + "({ name, darkMode }: ", + { + "pluginId": "@kbn/core-theme-browser", + "scope": "public", + "docId": "kibKbnCoreThemeBrowserPluginApi", + "section": "def-public.CoreTheme", + "text": "CoreTheme" + }, + ") => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } + ], + "path": "packages/kbn-palettes/palettes/get_kbn_palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.getKbnPalettes.$1", + "type": "Object", + "tags": [], + "label": "{ name, darkMode }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-theme-browser", + "scope": "public", + "docId": "kibKbnCoreThemeBrowserPluginApi", + "section": "def-public.CoreTheme", + "text": "CoreTheme" + } + ], + "path": "packages/kbn-palettes/palettes/get_kbn_palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.getPalettes", + "type": "Function", + "tags": [], + "label": "getPalettes", + "description": [], + "signature": [ + "(darkMode: boolean) => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } + ], + "path": "packages/kbn-palettes/palettes/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.getPalettes.$1", + "type": "boolean", + "tags": [], + "label": "darkMode", + "description": [], + "signature": [ + "boolean" + ], + "path": "packages/kbn-palettes/palettes/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.useKbnPalettes", + "type": "Function", + "tags": [], + "label": "useKbnPalettes", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } + ], + "path": "packages/kbn-palettes/hooks/use_kbn_palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette", + "type": "Interface", + "tags": [], + "label": "IKbnPalette", + "description": [ + "\nCommon palette definition used throughout kibana" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nUnique identifier for the palette" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nDisplay name of this palette." + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [ + "\nType of pallette" + ], + "signature": [ + "\"gradient\" | \"categorical\"" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.colorCount", + "type": "number", + "tags": [], + "label": "colorCount", + "description": [ + "\nNumber of colors to display" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.legacy", + "type": "boolean", + "tags": [], + "label": "legacy", + "description": [ + "\nPalette belongs to an outdated theme set" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.aliases", + "type": "Array", + "tags": [], + "label": "aliases", + "description": [ + "\nAlternate aliases/ids this palette matches" + ], + "signature": [ + "string[]" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.standalone", + "type": "CompoundType", + "tags": [], + "label": "standalone", + "description": [ + "\nExcluded from `getAll` but can still query for palette with `get`/`query`\n\nAn example would be `KbnPalette.Neutral` palette. I want to exclude it from the list of all available palettes, but I still want to `get`/`query` the palette." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.colors", + "type": "Function", + "tags": [], + "label": "colors", + "description": [ + "\nReturns array of colors, optionally provide desired number of colors (`n`)" + ], + "signature": [ + "(n?: number | undefined) => string[]" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.colors.$1", + "type": "number", + "tags": [], + "label": "n", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.getColor", + "type": "Function", + "tags": [], + "label": "getColor", + "description": [ + "\nReturns color provided index and optional total number of colors" + ], + "signature": [ + "(colorIndex: number, numberOfColors?: number | undefined) => string" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.getColor.$1", + "type": "number", + "tags": [], + "label": "colorIndex", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.getColor.$2", + "type": "number", + "tags": [], + "label": "numberOfColors", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.DEFAULT_FALLBACK_PALETTE", + "type": "string", + "tags": [], + "label": "DEFAULT_FALLBACK_PALETTE", + "description": [], + "signature": [ + "\"default\"" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPaletteType", + "type": "Type", + "tags": [], + "label": "KbnPaletteType", + "description": [], + "signature": [ + "\"gradient\" | \"categorical\"" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.elasticPalette", + "type": "Object", + "tags": [], + "label": "elasticPalette", + "description": [ + "\nThis is not correctly returning the updated vis colors from eui.\nAll gradient function work correctly." + ], + "signature": [ + "KbnColorFnPalette" + ], + "path": "packages/kbn-palettes/palettes/categorical/elastic.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette", + "type": "Object", + "tags": [], + "label": "KbnPalette", + "description": [ + "\nEnum of all kbn palette ids, including by type" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette.Unnamed", + "type": "Any", + "tags": [], + "label": "Unnamed", + "description": [ + "// Categorical palettes" + ], + "signature": [ + "any" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette.Unnamed", + "type": "Any", + "tags": [], + "label": "Unnamed", + "description": [ + "// Gradient palettes" + ], + "signature": [ + "any" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette.Unnamed", + "type": "Any", + "tags": [], + "label": "Unnamed", + "description": [ + "// Semantic palettes" + ], + "signature": [ + "any" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette.Amsterdam", + "type": "string", + "tags": [], + "label": "Amsterdam", + "description": [ + "// ---- Deprecated palettes ----\n/**\n * Amsterdam theme\n * @deprecated use `KbnPalette.kibana7`\n */" + ], + "signature": [ + "\"eui_amsterdam_color_blind\"" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette", + "type": "Object", + "tags": [], + "label": "logLevelPalette", + "description": [ + "\nDefines a palette to be used directly and does not fully implement IKbnPalette" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "\"log_level\"" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.getColor", + "type": "Function", + "tags": [], + "label": "getColor", + "description": [], + "signature": [ + "(key: \"Error\" | \"Other\" | \"Debug\" | \"Info\" | \"Notice\" | \"Alert\" | \"Emerg\" | \"Crit\" | \"Warn\") => string" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.getColor.$1", + "type": "CompoundType", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "\"Error\" | \"Other\" | \"Debug\" | \"Info\" | \"Notice\" | \"Alert\" | \"Emerg\" | \"Crit\" | \"Warn\"" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.colors", + "type": "Object", + "tags": [], + "label": "colors", + "description": [], + "signature": [ + "{ Emerg: string; Alert: string; Crit: string; Error: string; Warn: string; Notice: string; Info: string; Debug: string; Other: string; }" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ] + } +} \ No newline at end of file diff --git a/api_docs/kbn_palettes.mdx b/api_docs/kbn_palettes.mdx new file mode 100644 index 0000000000000..00300e1cd7cb2 --- /dev/null +++ b/api_docs/kbn_palettes.mdx @@ -0,0 +1,42 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnPalettesPluginApi +slug: /kibana-dev-docs/api/kbn-palettes +title: "@kbn/palettes" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/palettes plugin +date: 2024-12-17 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/palettes'] +--- +import kbnPalettesObj from './kbn_palettes.devdocs.json'; + + + +Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 44 | 3 | 27 | 1 | + +## Common + +### Objects + + +### Functions + + +### Classes + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 6cbe5e72b18cd..b1c79436841e3 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 5d30afaad94f7..99024eb16710e 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index 61775fada02fc..4d5a4c84e5a2c 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 8b9db012aca7e..76b11cdec3801 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index ae741374afa7c..048effc85fbc0 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.devdocs.json b/api_docs/kbn_presentation_containers.devdocs.json index 3fa2ed6691aa9..305426d8d15c6 100644 --- a/api_docs/kbn_presentation_containers.devdocs.json +++ b/api_docs/kbn_presentation_containers.devdocs.json @@ -1246,14 +1246,6 @@ ], "signature": [ "() => ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.MaybePromise", - "text": "MaybePromise" - }, - "<", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -1261,7 +1253,7 @@ "section": "def-public.SerializedPanelState", "text": "SerializedPanelState" }, - ">" + "" ], "path": "packages/presentation/presentation_containers/interfaces/serialized_state.ts", "deprecated": false, @@ -1914,7 +1906,9 @@ "section": "def-public.OverlayRef", "text": "OverlayRef" }, - ", options?: TracksOverlaysOptions | undefined) => void" + ", options?: ", + "TracksOverlaysOptions", + " | undefined) => void" ], "path": "packages/presentation/presentation_containers/interfaces/tracks_overlays.ts", "deprecated": false, @@ -1949,7 +1943,8 @@ "label": "options", "description": [], "signature": [ - "TracksOverlaysOptions | undefined" + "TracksOverlaysOptions", + " | undefined" ], "path": "packages/presentation/presentation_containers/interfaces/tracks_overlays.ts", "deprecated": false, @@ -1977,73 +1972,6 @@ } ], "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance", - "type": "Interface", - "tags": [], - "label": "TracksQueryPerformance", - "description": [], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance.firstLoad", - "type": "boolean", - "tags": [], - "label": "firstLoad", - "description": [], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance.creationStartTime", - "type": "number", - "tags": [], - "label": "creationStartTime", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance.creationEndTime", - "type": "number", - "tags": [], - "label": "creationEndTime", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance.lastLoadStartTime", - "type": "number", - "tags": [], - "label": "lastLoadStartTime", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false } ], "enums": [], diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index 2219051de19e4..6d2294e0d2da7 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 92 | 0 | 80 | 0 | +| 87 | 0 | 75 | 1 | ## Client diff --git a/api_docs/kbn_presentation_publishing.devdocs.json b/api_docs/kbn_presentation_publishing.devdocs.json index ab054f8e4ee19..c706f1179f602 100644 --- a/api_docs/kbn_presentation_publishing.devdocs.json +++ b/api_docs/kbn_presentation_publishing.devdocs.json @@ -930,6 +930,46 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-public.apiPublishesReload", + "type": "Function", + "tags": [], + "label": "apiPublishesReload", + "description": [], + "signature": [ + "(unknownApi: unknown) => unknownApi is ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + } + ], + "path": "packages/presentation/presentation_publishing/interfaces/fetch/publishes_reload.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-public.apiPublishesReload.$1", + "type": "Unknown", + "tags": [], + "label": "unknownApi", + "description": [], + "signature": [ + "unknown" + ], + "path": "packages/presentation/presentation_publishing/interfaces/fetch/publishes_reload.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-public.apiPublishesRendered", @@ -6124,6 +6164,180 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-public.PublishesReload", + "type": "Interface", + "tags": [], + "label": "PublishesReload", + "description": [], + "path": "packages/presentation/presentation_publishing/interfaces/fetch/publishes_reload.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-public.PublishesReload.reload$", + "type": "Object", + "tags": [], + "label": "reload$", + "description": [], + "signature": [ + "{ source: ", + "Observable", + " | undefined; forEach: { (next: (value: void) => void): Promise; (next: (value: void) => void, promiseCtor: PromiseConstructorLike): Promise; }; pipe: { (): ", + "Observable", + "; (op1: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + ", op8: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + ", op8: ", + "OperatorFunction", + ", op9: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + ", op8: ", + "OperatorFunction", + ", op9: ", + "OperatorFunction", + ", ...operations: ", + "OperatorFunction", + "[]): ", + "Observable", + "; }; operator: ", + "Operator", + " | undefined; lift: (operator?: ", + "Operator", + " | undefined) => ", + "Observable", + "; subscribe: { (observerOrNext?: Partial<", + "Observer", + "> | ((value: void) => void) | undefined): ", + "Subscription", + "; (next?: ((value: void) => void) | null | undefined, error?: ((error: any) => void) | null | undefined, complete?: (() => void) | null | undefined): ", + "Subscription", + "; }; toPromise: { (): Promise; (PromiseCtor: PromiseConstructor): Promise; (PromiseCtor: PromiseConstructorLike): Promise; }; }" + ], + "path": "packages/presentation/presentation_publishing/interfaces/fetch/publishes_reload.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-public.PublishesRendered", diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 57156f455fc4a..f98ad209ad517 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 229 | 0 | 193 | 6 | +| 233 | 0 | 197 | 6 | ## Client diff --git a/api_docs/kbn_product_doc_artifact_builder.mdx b/api_docs/kbn_product_doc_artifact_builder.mdx index 2a27a3eb5c837..0198a5c636bb3 100644 --- a/api_docs/kbn_product_doc_artifact_builder.mdx +++ b/api_docs/kbn_product_doc_artifact_builder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-artifact-builder title: "@kbn/product-doc-artifact-builder" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-artifact-builder plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-artifact-builder'] --- import kbnProductDocArtifactBuilderObj from './kbn_product_doc_artifact_builder.devdocs.json'; diff --git a/api_docs/kbn_product_doc_common.devdocs.json b/api_docs/kbn_product_doc_common.devdocs.json index f5c8ea4e0e653..33547649b923a 100644 --- a/api_docs/kbn_product_doc_common.devdocs.json +++ b/api_docs/kbn_product_doc_common.devdocs.json @@ -29,7 +29,7 @@ "signature": [ "({ productName, productVersion, excludeExtension, }: { productName: \"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"; productVersion: string; excludeExtension?: boolean | undefined; }) => string" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -40,7 +40,7 @@ "tags": [], "label": "{\n productName,\n productVersion,\n excludeExtension = false,\n}", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -54,7 +54,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false }, @@ -65,7 +65,7 @@ "tags": [], "label": "productVersion", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false }, @@ -79,7 +79,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false } @@ -99,7 +99,7 @@ "signature": [ "(productName: \"security\" | \"kibana\" | \"observability\" | \"elasticsearch\") => string" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/indices.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/indices.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -113,7 +113,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/indices.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/indices.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -132,7 +132,7 @@ "signature": [ "(path: string) => boolean" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact_content.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact_content.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -146,7 +146,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact_content.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact_content.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -165,7 +165,7 @@ "signature": [ "(artifactName: string) => { productName: \"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"; productVersion: string; } | undefined" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -179,7 +179,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -197,7 +197,7 @@ "tags": [], "label": "ArtifactManifest", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/manifest.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/manifest.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -208,7 +208,7 @@ "tags": [], "label": "formatVersion", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/manifest.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/manifest.ts", "deprecated": false, "trackAdoption": false }, @@ -222,7 +222,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/manifest.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/manifest.ts", "deprecated": false, "trackAdoption": false }, @@ -233,7 +233,7 @@ "tags": [], "label": "productVersion", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/manifest.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/manifest.ts", "deprecated": false, "trackAdoption": false } @@ -247,7 +247,7 @@ "tags": [], "label": "ProductDocumentationAttributes", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -258,7 +258,7 @@ "tags": [], "label": "content_title", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -272,7 +272,7 @@ "signature": [ "SemanticTextField" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -286,7 +286,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -297,7 +297,7 @@ "tags": [], "label": "root_type", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -308,7 +308,7 @@ "tags": [], "label": "slug", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -319,7 +319,7 @@ "tags": [], "label": "url", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -330,7 +330,7 @@ "tags": [], "label": "version", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -341,7 +341,7 @@ "tags": [], "label": "ai_subtitle", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -355,7 +355,7 @@ "signature": [ "SemanticTextField" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -369,7 +369,7 @@ "signature": [ "SemanticTextArrayField" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -383,7 +383,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false } @@ -399,7 +399,7 @@ "tags": [], "label": "DocumentationProduct", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/product.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/product.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -413,7 +413,7 @@ "tags": [], "label": "productDocIndexPattern", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/indices.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/indices.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -428,7 +428,7 @@ "signature": [ "\".kibana_ai_product_doc\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/indices.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/indices.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -443,7 +443,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/product.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/product.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_product_doc_common.mdx b/api_docs/kbn_product_doc_common.mdx index fa1ddf25aeb27..abb59452a217c 100644 --- a/api_docs/kbn_product_doc_common.mdx +++ b/api_docs/kbn_product_doc_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-common title: "@kbn/product-doc-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-common'] --- import kbnProductDocCommonObj from './kbn_product_doc_common.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 16f9e36a856f7..b75709cde15c0 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 6fd0b3d1727b4..4c5b200a193ac 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index acde3d9b4c4db..167c49ad26a04 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index 7a13604cc9a0a..e9fb23d2f4695 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.devdocs.json b/api_docs/kbn_react_kibana_context_common.devdocs.json index 0f29deb8b761e..3795856330269 100644 --- a/api_docs/kbn_react_kibana_context_common.devdocs.json +++ b/api_docs/kbn_react_kibana_context_common.devdocs.json @@ -225,6 +225,30 @@ "path": "packages/react/kibana_context/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.ThemeServiceStart.getTheme", + "type": "Function", + "tags": [], + "label": "getTheme", + "description": [], + "signature": [ + "(() => ", + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.KibanaTheme", + "text": "KibanaTheme" + }, + ") | undefined" + ], + "path": "packages/react/kibana_context/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index e4478b802c0c4..46ef0b76e1c5b 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 15 | 0 | 8 | 0 | +| 16 | 0 | 9 | 0 | ## Common diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index de6526007e27a..27ceb95026ebf 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.devdocs.json b/api_docs/kbn_react_kibana_context_root.devdocs.json index 074a223560fa5..3aef4a4374cae 100644 --- a/api_docs/kbn_react_kibana_context_root.devdocs.json +++ b/api_docs/kbn_react_kibana_context_root.devdocs.json @@ -29,7 +29,7 @@ "\nPrepares and returns a configured `EuiProvider` for use in Kibana roots. In most cases, this utility context\nshould not be used. Instead, refer to `KibanaRootContextProvider` to set up the root of Kibana." ], "signature": [ - "({ theme: { theme$ }, globalStyles: globalStylesProp, colorMode: colorModeProp, modify, children, }: React.PropsWithChildren<", + "({ theme, globalStyles: globalStylesProp, colorMode: colorModeProp, modify, children, }: React.PropsWithChildren<", { "pluginId": "@kbn/react-kibana-context-root", "scope": "common", @@ -48,7 +48,7 @@ "id": "def-common.KibanaEuiProvider.$1", "type": "CompoundType", "tags": [], - "label": "{\n theme: { theme$ },\n globalStyles: globalStylesProp,\n colorMode: colorModeProp,\n modify,\n children,\n}", + "label": "{\n theme,\n globalStyles: globalStylesProp,\n colorMode: colorModeProp,\n modify,\n children,\n}", "description": [], "signature": [ "React.PropsWithChildren<", diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 5ae581983f572..ea023701f9299 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 040b05718f8c6..c3233728d489a 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index a10eb5ae7ca0d..836bf595d0e93 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 1b2af6522c1cd..b0ae003ced25f 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_react_mute_legacy_root_warning.mdx b/api_docs/kbn_react_mute_legacy_root_warning.mdx index a0b6111a5b56a..d7f1effe46449 100644 --- a/api_docs/kbn_react_mute_legacy_root_warning.mdx +++ b/api_docs/kbn_react_mute_legacy_root_warning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-mute-legacy-root-warning title: "@kbn/react-mute-legacy-root-warning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-mute-legacy-root-warning plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-mute-legacy-root-warning'] --- import kbnReactMuteLegacyRootWarningObj from './kbn_react_mute_legacy_root_warning.devdocs.json'; diff --git a/api_docs/kbn_recently_accessed.mdx b/api_docs/kbn_recently_accessed.mdx index 1c7322e524649..8750d06c7c8a0 100644 --- a/api_docs/kbn_recently_accessed.mdx +++ b/api_docs/kbn_recently_accessed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-recently-accessed title: "@kbn/recently-accessed" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/recently-accessed plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/recently-accessed'] --- import kbnRecentlyAccessedObj from './kbn_recently_accessed.devdocs.json'; diff --git a/api_docs/kbn_relocate.devdocs.json b/api_docs/kbn_relocate.devdocs.json new file mode 100644 index 0000000000000..ba9cd4ccc1f19 --- /dev/null +++ b/api_docs/kbn_relocate.devdocs.json @@ -0,0 +1,47 @@ +{ + "id": "@kbn/relocate", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/relocate", + "id": "def-server.runKbnRelocateCli", + "type": "Function", + "tags": [], + "label": "runKbnRelocateCli", + "description": [ + "\nA CLI to move Kibana modules into the right folder structure,\naccording to the Sustainable Kibana Architecture" + ], + "signature": [ + "() => void" + ], + "path": "packages/kbn-relocate/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_relocate.mdx b/api_docs/kbn_relocate.mdx new file mode 100644 index 0000000000000..939a0100b17b2 --- /dev/null +++ b/api_docs/kbn_relocate.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnRelocatePluginApi +slug: /kibana-dev-docs/api/kbn-relocate +title: "@kbn/relocate" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/relocate plugin +date: 2024-12-17 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/relocate'] +--- +import kbnRelocateObj from './kbn_relocate.devdocs.json'; + + + +Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 1 | 0 | 0 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index cf7709abb7f35..74739f25509f7 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index 354c33d80654e..00dbc3d80e0fd 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 54526e5317998..982f23332afa0 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 77193b39aaf89..624179cc98e21 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index fc271f63ea3d2..2d7b74d9a7320 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index ef317de7ff4bb..aa50373cb80ea 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index b1f0cba5d2309..8c0e69208f92d 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 6797e44a17699..86142d557dbf4 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index ba65a70ac6bb1..e5759525d5772 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index a73dd9fedb5e4..9b3d1d4e06b6a 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index e575f36bcf820..7b3723c6a0917 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 2387ddfb2b759..c2197661396be 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 6ad57318e6a09..abadc5ca563a2 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index f2d6aca304578..35f3fea52e836 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 54280e3d10199..23df115037689 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 697be56d70d0b..e62fd7ca8f9fb 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_response_ops_feature_flag_service.mdx b/api_docs/kbn_response_ops_feature_flag_service.mdx index 57f0048adcf1c..ac9d7df6e87be 100644 --- a/api_docs/kbn_response_ops_feature_flag_service.mdx +++ b/api_docs/kbn_response_ops_feature_flag_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-feature-flag-service title: "@kbn/response-ops-feature-flag-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-feature-flag-service plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-feature-flag-service'] --- import kbnResponseOpsFeatureFlagServiceObj from './kbn_response_ops_feature_flag_service.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_form.devdocs.json b/api_docs/kbn_response_ops_rule_form.devdocs.json index b163e043f7950..1df902627c59b 100644 --- a/api_docs/kbn_response_ops_rule_form.devdocs.json +++ b/api_docs/kbn_response_ops_rule_form.devdocs.json @@ -1348,6 +1348,26 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/response-ops-rule-form", + "id": "def-public.RuleFormPlugins.userProfile", + "type": "Object", + "tags": [], + "label": "userProfile", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-user-profile-browser", + "scope": "public", + "docId": "kibKbnCoreUserProfileBrowserPluginApi", + "section": "def-public.UserProfileService", + "text": "UserProfileService" + } + ], + "path": "packages/response-ops/rule_form/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/response-ops-rule-form", "id": "def-public.RuleFormPlugins.application", diff --git a/api_docs/kbn_response_ops_rule_form.mdx b/api_docs/kbn_response_ops_rule_form.mdx index d11ded24d77dc..9eddee23ff21d 100644 --- a/api_docs/kbn_response_ops_rule_form.mdx +++ b/api_docs/kbn_response_ops_rule_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-form title: "@kbn/response-ops-rule-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-form plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-form'] --- import kbnResponseOpsRuleFormObj from './kbn_response_ops_rule_form.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 157 | 0 | 156 | 7 | +| 158 | 0 | 157 | 7 | ## Client diff --git a/api_docs/kbn_response_ops_rule_params.mdx b/api_docs/kbn_response_ops_rule_params.mdx index d7cddafb1e606..41dbc43dbf21c 100644 --- a/api_docs/kbn_response_ops_rule_params.mdx +++ b/api_docs/kbn_response_ops_rule_params.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-params title: "@kbn/response-ops-rule-params" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-params plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-params'] --- import kbnResponseOpsRuleParamsObj from './kbn_response_ops_rule_params.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index f2f4a8baf58be..944cde68cc1ad 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rollup.devdocs.json b/api_docs/kbn_rollup.devdocs.json index 508f97802119c..e873d2f168bae 100644 --- a/api_docs/kbn_rollup.devdocs.json +++ b/api_docs/kbn_rollup.devdocs.json @@ -29,7 +29,7 @@ "signature": [ "({ children }: RollupDeprecationTooltipProps) => React.JSX.Element" ], - "path": "x-pack/packages/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx", + "path": "x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -43,7 +43,7 @@ "signature": [ "RollupDeprecationTooltipProps" ], - "path": "x-pack/packages/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx", + "path": "x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -63,7 +63,7 @@ "tags": [], "label": "ROLLUP_DEPRECATION_BADGE_LABEL", "description": [], - "path": "x-pack/packages/rollup/src/constants/index.ts", + "path": "x-pack/platform/packages/private/rollup/src/constants/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_rollup.mdx b/api_docs/kbn_rollup.mdx index db40f919b9dca..7e0a3e59ce855 100644 --- a/api_docs/kbn_rollup.mdx +++ b/api_docs/kbn_rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rollup title: "@kbn/rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rollup plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rollup'] --- import kbnRollupObj from './kbn_rollup.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index 354dedf7e6620..5780887e97c15 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 499bad3166c47..216f71535ac8f 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index ef55ace7e4222..78ab3a9747ec6 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 30bd03d23c3cb..5b5ac5a0a9b28 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index dc4cfeb2093f8..e3da595d8e63e 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_saved_search_component.mdx b/api_docs/kbn_saved_search_component.mdx index 83958a1b8f7a3..ee2a901613c93 100644 --- a/api_docs/kbn_saved_search_component.mdx +++ b/api_docs/kbn_saved_search_component.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-search-component title: "@kbn/saved-search-component" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-search-component plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-search-component'] --- import kbnSavedSearchComponentObj from './kbn_saved_search_component.devdocs.json'; diff --git a/api_docs/kbn_scout.devdocs.json b/api_docs/kbn_scout.devdocs.json index 3eaffaf3d88cd..2b4edec870188 100644 --- a/api_docs/kbn_scout.devdocs.json +++ b/api_docs/kbn_scout.devdocs.json @@ -1612,7 +1612,7 @@ "section": "def-common.ScoutTestFixtures", "text": "ScoutTestFixtures" }, - ", ", + " & { validateTags: void; }, ", "PlaywrightWorkerArgs", " & ", "PlaywrightWorkerOptions", @@ -1650,7 +1650,9 @@ "type": "Function", "tags": [], "label": "loadIfNeeded", - "description": [], + "description": [ + "\nLoads an Elasticsearch archive if the specified data index is not present." + ], "signature": [ "(name: string, performance?: ", { @@ -1674,7 +1676,9 @@ "type": "string", "tags": [], "label": "name", - "description": [], + "description": [ + "The name of the archive to load." + ], "signature": [ "string" ], @@ -1689,7 +1693,9 @@ "type": "Object", "tags": [], "label": "performance", - "description": [], + "description": [ + "An object of type LoadActionPerfOptions to measure and\nreport performance metrics during the load operation." + ], "signature": [ { "pluginId": "@kbn/es-archiver", @@ -1706,7 +1712,9 @@ "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "A Promise that resolves to an object containing index statistics." + ] } ], "initialIsOpen": false @@ -1798,7 +1806,7 @@ }, " extends Pick<", "PlaywrightTestConfig", - "<{}, {}>, \"testDir\" | \"workers\">" + "<{}, {}>, \"workers\" | \"testDir\">" ], "path": "packages/kbn-scout/src/playwright/types/index.ts", "deprecated": false, @@ -1960,7 +1968,9 @@ "type": "Interface", "tags": [], "label": "ScoutWorkerFixtures", - "description": [], + "description": [ + "\nThe `ScoutWorkerFixtures` type defines the set of fixtures that are available" + ], "path": "packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts", "deprecated": false, "trackAdoption": false, @@ -2144,6 +2154,63 @@ "initialIsOpen": false } ], - "objects": [] + "objects": [ + { + "parentPluginId": "@kbn/scout", + "id": "def-common.tags", + "type": "Object", + "tags": [], + "label": "tags", + "description": [], + "path": "packages/kbn-scout/src/playwright/tags.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/scout", + "id": "def-common.tags.ESS_ONLY", + "type": "Array", + "tags": [], + "label": "ESS_ONLY", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-scout/src/playwright/tags.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/scout", + "id": "def-common.tags.SERVERLESS_ONLY", + "type": "Array", + "tags": [], + "label": "SERVERLESS_ONLY", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-scout/src/playwright/tags.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/scout", + "id": "def-common.tags.DEPLOYMENT_AGNOSTIC", + "type": "Array", + "tags": [], + "label": "DEPLOYMENT_AGNOSTIC", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-scout/src/playwright/tags.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/kbn_scout.mdx b/api_docs/kbn_scout.mdx index e5b3bff9f472a..ea12368f269a8 100644 --- a/api_docs/kbn_scout.mdx +++ b/api_docs/kbn_scout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout title: "@kbn/scout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout'] --- import kbnScoutObj from './kbn_scout.devdocs.json'; @@ -21,10 +21,13 @@ Contact [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) for | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 117 | 0 | 86 | 8 | +| 121 | 0 | 86 | 8 | ## Common +### Objects + + ### Functions diff --git a/api_docs/kbn_scout_info.mdx b/api_docs/kbn_scout_info.mdx index e06c3d3af8170..09aeb2e4c335e 100644 --- a/api_docs/kbn_scout_info.mdx +++ b/api_docs/kbn_scout_info.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-info title: "@kbn/scout-info" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-info plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-info'] --- import kbnScoutInfoObj from './kbn_scout_info.devdocs.json'; diff --git a/api_docs/kbn_scout_reporting.mdx b/api_docs/kbn_scout_reporting.mdx index 83f93554a4c59..7c4041ae631af 100644 --- a/api_docs/kbn_scout_reporting.mdx +++ b/api_docs/kbn_scout_reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-reporting title: "@kbn/scout-reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-reporting plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-reporting'] --- import kbnScoutReportingObj from './kbn_scout_reporting.devdocs.json'; diff --git a/api_docs/kbn_screenshotting_server.mdx b/api_docs/kbn_screenshotting_server.mdx index 7ada739fa09a9..8758ca2385a39 100644 --- a/api_docs/kbn_screenshotting_server.mdx +++ b/api_docs/kbn_screenshotting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-screenshotting-server title: "@kbn/screenshotting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/screenshotting-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/screenshotting-server'] --- import kbnScreenshottingServerObj from './kbn_screenshotting_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_components.mdx b/api_docs/kbn_search_api_keys_components.mdx index ce83b7341015f..d3c54dd13f8b7 100644 --- a/api_docs/kbn_search_api_keys_components.mdx +++ b/api_docs/kbn_search_api_keys_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-components title: "@kbn/search-api-keys-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-components plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-components'] --- import kbnSearchApiKeysComponentsObj from './kbn_search_api_keys_components.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_server.mdx b/api_docs/kbn_search_api_keys_server.mdx index 6af6e2a754994..ee66c9648e479 100644 --- a/api_docs/kbn_search_api_keys_server.mdx +++ b/api_docs/kbn_search_api_keys_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-server title: "@kbn/search-api-keys-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-server'] --- import kbnSearchApiKeysServerObj from './kbn_search_api_keys_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 0eaeae8c49c00..77391a5c23f00 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 31c2ae5d16f11..d1de482bfc2e6 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index d807d557e6404..d9ed776ad311e 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index c87dba5e4faad..7091de6016996 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 0b28331cd33a5..adb58672e5907 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_shared_ui.mdx b/api_docs/kbn_search_shared_ui.mdx index 9012e3a9da187..cff3490de5d61 100644 --- a/api_docs/kbn_search_shared_ui.mdx +++ b/api_docs/kbn_search_shared_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-shared-ui title: "@kbn/search-shared-ui" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-shared-ui plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-shared-ui'] --- import kbnSearchSharedUiObj from './kbn_search_shared_ui.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index 4c448ff834846..5b8955ae248fe 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_api_key_management.mdx b/api_docs/kbn_security_api_key_management.mdx index dd6c4e355b536..669ef9ee13224 100644 --- a/api_docs/kbn_security_api_key_management.mdx +++ b/api_docs/kbn_security_api_key_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-api-key-management title: "@kbn/security-api-key-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-api-key-management plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-api-key-management'] --- import kbnSecurityApiKeyManagementObj from './kbn_security_api_key_management.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core.mdx b/api_docs/kbn_security_authorization_core.mdx index 08692cd14f622..636d73fc41130 100644 --- a/api_docs/kbn_security_authorization_core.mdx +++ b/api_docs/kbn_security_authorization_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core title: "@kbn/security-authorization-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core'] --- import kbnSecurityAuthorizationCoreObj from './kbn_security_authorization_core.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core_common.mdx b/api_docs/kbn_security_authorization_core_common.mdx index 8fd2cf460021e..c78ea79fd102b 100644 --- a/api_docs/kbn_security_authorization_core_common.mdx +++ b/api_docs/kbn_security_authorization_core_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core-common title: "@kbn/security-authorization-core-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core-common'] --- import kbnSecurityAuthorizationCoreCommonObj from './kbn_security_authorization_core_common.devdocs.json'; diff --git a/api_docs/kbn_security_form_components.mdx b/api_docs/kbn_security_form_components.mdx index 4defccc0e674a..93ed09c8a5866 100644 --- a/api_docs/kbn_security_form_components.mdx +++ b/api_docs/kbn_security_form_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-form-components title: "@kbn/security-form-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-form-components plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-form-components'] --- import kbnSecurityFormComponentsObj from './kbn_security_form_components.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 0c4468431ffe9..5830bad9e7d09 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.devdocs.json b/api_docs/kbn_security_plugin_types_common.devdocs.json index 66423093f7f10..886b1bffd0d93 100644 --- a/api_docs/kbn_security_plugin_types_common.devdocs.json +++ b/api_docs/kbn_security_plugin_types_common.devdocs.json @@ -270,6 +270,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/security-plugin-types-common", + "id": "def-common.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index df118cc8509c0..bb2bb4a300980 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 125 | 0 | 66 | 0 | +| 126 | 0 | 66 | 0 | ## Common diff --git a/api_docs/kbn_security_plugin_types_public.devdocs.json b/api_docs/kbn_security_plugin_types_public.devdocs.json index 49fcb4a21570d..0f1b8532eb7aa 100644 --- a/api_docs/kbn_security_plugin_types_public.devdocs.json +++ b/api_docs/kbn_security_plugin_types_public.devdocs.json @@ -903,21 +903,21 @@ "plugin": "security", "path": "x-pack/plugins/security/public/plugin.tsx" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/links.ts" - }, { "plugin": "cloudLinks", "path": "x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/management/links.ts" + }, { "plugin": "cases", "path": "x-pack/plugins/cases/public/common/lib/kibana/hooks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kibana/hooks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/hooks.ts" } ] }, @@ -1009,14 +1009,6 @@ "plugin": "searchPlayground", "path": "x-pack/plugins/search_playground/public/hooks/use_user_profile.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.tsx" - }, { "plugin": "cases", "path": "x-pack/plugins/cases/public/containers/user_profiles/api.test.ts" @@ -1032,6 +1024,14 @@ { "plugin": "cases", "path": "x-pack/plugins/cases/public/containers/user_profiles/api.test.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.tsx" } ] } diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index f476cf48ccdd7..537cc169fc9c0 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.devdocs.json b/api_docs/kbn_security_plugin_types_server.devdocs.json index b8a5df3a3b0c9..56538685b4d7c 100644 --- a/api_docs/kbn_security_plugin_types_server.devdocs.json +++ b/api_docs/kbn_security_plugin_types_server.devdocs.json @@ -4755,15 +4755,15 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/request_context_factory.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/request_context_factory.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/plugin.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/plugin.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts" } ] }, @@ -4851,7 +4851,7 @@ }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts" }, { "plugin": "fleet", @@ -4870,28 +4870,20 @@ "path": "x-pack/plugins/fleet/server/routes/setup/handlers.ts" }, { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts" - }, - { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" - }, - { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/enable.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/disable.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { "plugin": "apm", @@ -4906,68 +4898,76 @@ "path": "x-pack/plugins/observability_solution/apm/server/routes/fleet/is_superuser.ts" }, { - "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/enable.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/disable.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/route_handler_factory.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/route_handler_factory.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/setup_routes.ts" } ] }, @@ -5039,11 +5039,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts" } ] } @@ -6072,6 +6072,23 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/security-plugin-types-server", + "id": "def-server.EsSecurityConfig", + "type": "Type", + "tags": [], + "label": "EsSecurityConfig", + "description": [], + "signature": [ + "{ operator_privileges: ", + "XpackUsageBase", + "; }" + ], + "path": "x-pack/packages/security/plugin_types_server/src/authorization/es_security_config.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/security-plugin-types-server", "id": "def-server.GLOBAL_RESOURCE", diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 7976f4a945fb8..8007f75fb0007 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 281 | 1 | 160 | 0 | +| 282 | 1 | 161 | 0 | ## Server diff --git a/api_docs/kbn_security_role_management_model.mdx b/api_docs/kbn_security_role_management_model.mdx index 9a4ab0b9242e9..9760a2a57e343 100644 --- a/api_docs/kbn_security_role_management_model.mdx +++ b/api_docs/kbn_security_role_management_model.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-role-management-model title: "@kbn/security-role-management-model" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-role-management-model plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-role-management-model'] --- import kbnSecurityRoleManagementModelObj from './kbn_security_role_management_model.devdocs.json'; diff --git a/api_docs/kbn_security_solution_distribution_bar.devdocs.json b/api_docs/kbn_security_solution_distribution_bar.devdocs.json index 51fdf64ef88c7..ac66b60a1f718 100644 --- a/api_docs/kbn_security_solution_distribution_bar.devdocs.json +++ b/api_docs/kbn_security_solution_distribution_bar.devdocs.json @@ -23,7 +23,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -70,7 +70,7 @@ "description": [ "DistributionBar component props" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -86,7 +86,7 @@ "signature": [ "{ key: string; count: number; color: string; label?: React.ReactNode; isCurrentFilter?: boolean | undefined; filter?: (() => void) | undefined; reset?: ((event: React.MouseEvent) => void) | undefined; }[]" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false }, @@ -102,7 +102,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false }, @@ -118,7 +118,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_security_solution_distribution_bar.mdx b/api_docs/kbn_security_solution_distribution_bar.mdx index 697f727b79d61..13121dd6211e0 100644 --- a/api_docs/kbn_security_solution_distribution_bar.mdx +++ b/api_docs/kbn_security_solution_distribution_bar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-distribution-bar title: "@kbn/security-solution-distribution-bar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-distribution-bar plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-distribution-bar'] --- import kbnSecuritySolutionDistributionBarObj from './kbn_security_solution_distribution_bar.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.devdocs.json b/api_docs/kbn_security_solution_features.devdocs.json index f77d52c6d9ffa..4e2fd77a59f29 100644 --- a/api_docs/kbn_security_solution_features.devdocs.json +++ b/api_docs/kbn_security_solution_features.devdocs.json @@ -37,7 +37,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -87,7 +87,7 @@ "ReservedKibanaPrivilege", "[]; } | undefined; }" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -101,7 +101,7 @@ "signature": [ "T[]" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -123,7 +123,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -151,7 +151,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -202,7 +202,7 @@ "ReservedKibanaPrivilege", "[]; } | undefined; }" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -224,7 +224,7 @@ }, "[]" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -245,7 +245,7 @@ " | ", "ProductFeatureAttackDiscoveryKey" ], - "path": "x-pack/packages/security-solution/features/src/product_features_keys.ts", + "path": "x-pack/solutions/security/packages/features/src/product_features_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -291,7 +291,7 @@ }, ">[] | undefined; }" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -318,7 +318,7 @@ "AssistantSubFeatureId", ">>" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -343,7 +343,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -370,7 +370,7 @@ "CasesSubFeatureId", ">>" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -401,7 +401,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -428,7 +428,7 @@ "SecuritySubFeatureId", ">>" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -547,7 +547,7 @@ }, "<{ all: readonly string[]; read: readonly string[]; }> | undefined; }" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index ba2edfd501e56..bb106670760b3 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.devdocs.json b/api_docs/kbn_security_solution_navigation.devdocs.json index cfb6285eaefe7..45942b22304fd 100644 --- a/api_docs/kbn_security_solution_navigation.devdocs.json +++ b/api_docs/kbn_security_solution_navigation.devdocs.json @@ -31,7 +31,7 @@ "signature": [ "(id: string) => { appId: string; deepLinkId?: string | undefined; path?: string | undefined; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -80,7 +80,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -101,7 +101,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -136,7 +136,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -157,7 +157,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -192,7 +192,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -213,7 +213,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -240,7 +240,7 @@ }, "; }>) => React.JSX.Element" ], - "path": "x-pack/packages/security-solution/navigation/src/context.tsx", + "path": "x-pack/solutions/security/packages/navigation/src/context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -262,7 +262,7 @@ }, "; }>" ], - "path": "x-pack/packages/security-solution/navigation/src/context.tsx", + "path": "x-pack/solutions/security/packages/navigation/src/context.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -291,7 +291,7 @@ }, "; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -318,7 +318,7 @@ }, "; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -353,7 +353,7 @@ }, "; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -387,7 +387,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -408,7 +408,7 @@ }, ".accordion" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -419,7 +419,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -440,7 +440,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -464,7 +464,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -478,7 +478,7 @@ "signature": [ "readonly T[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -492,7 +492,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -513,7 +513,7 @@ }, " | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -528,7 +528,7 @@ "IconType", " | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -549,7 +549,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -573,7 +573,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -595,7 +595,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -609,7 +609,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -623,7 +623,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -637,7 +637,7 @@ "signature": [ "T" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -652,7 +652,7 @@ "IconType", " | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -666,7 +666,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -687,7 +687,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -698,7 +698,7 @@ "tags": [], "label": "title", "description": [], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -713,7 +713,7 @@ "IconType", " | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -727,7 +727,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -741,7 +741,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -755,7 +755,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -769,7 +769,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -783,7 +783,7 @@ "signature": [ "{ text: string; } | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -815,7 +815,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -836,7 +836,7 @@ }, ".separator" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -850,7 +850,7 @@ "signature": [ "readonly T[]" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -882,7 +882,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -903,7 +903,7 @@ }, ".title | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -917,7 +917,7 @@ "signature": [ "readonly T[]" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -928,7 +928,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -946,7 +946,7 @@ "description": [ "\nExternal (non-Security) page names that need to be linked in the Security navigation.\nFormat: `:/`.\n\n`pluginId`: is the id of the plugin that owns the deep link\n\n`deepLinkId`: is the id of the deep link inside the plugin.\nKeep empty for the root page of the plugin, e.g. `osquery:`\n\n`path`: is the path to append to the plugin and deep link.\nThis is optional and only needed if the path is not registered in the plugin's `deepLinks`. e.g. `integrations:/browse/security`\nThe path should not be used for links displayed in the main left navigation, since highlighting won't work." ], - "path": "x-pack/packages/security-solution/navigation/src/constants.ts", + "path": "x-pack/solutions/security/packages/navigation/src/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -958,7 +958,7 @@ "tags": [], "label": "LinkCategoryType", "description": [], - "path": "x-pack/packages/security-solution/navigation/src/constants.ts", + "path": "x-pack/solutions/security/packages/navigation/src/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -970,7 +970,7 @@ "tags": [], "label": "SecurityPageName", "description": [], - "path": "packages/deeplinks/security/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/security/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -987,7 +987,7 @@ "signature": [ "(param: { appId?: string | undefined; deepLinkId?: string | undefined; path?: string | undefined; absolute?: boolean | undefined; }) => string" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1002,7 +1002,7 @@ "signature": [ "{ appId?: string | undefined; deepLinkId?: string | undefined; path?: string | undefined; absolute?: boolean | undefined; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1027,7 +1027,7 @@ }, "[]" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1050,7 +1050,7 @@ }, ") => void" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1072,7 +1072,7 @@ "text": "NavigateToAppOptions" } ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1089,7 +1089,7 @@ "signature": [ "\"securitySolutionUI\"" ], - "path": "x-pack/packages/security-solution/navigation/src/constants.ts", + "path": "x-pack/solutions/security/packages/navigation/src/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 09fe67fe7946a..d3e7a409b082c 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.devdocs.json b/api_docs/kbn_security_solution_side_nav.devdocs.json index f50c9850b3ac2..a82741016145e 100644 --- a/api_docs/kbn_security_solution_side_nav.devdocs.json +++ b/api_docs/kbn_security_solution_side_nav.devdocs.json @@ -37,7 +37,7 @@ }, ") => React.JSX.Element" ], - "path": "x-pack/packages/security-solution/side_nav/src/index.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -57,7 +57,7 @@ "text": "SolutionSideNavProps" } ], - "path": "x-pack/packages/security-solution/side_nav/src/index.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -85,7 +85,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -99,7 +99,7 @@ "signature": [ "T" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -110,7 +110,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -121,7 +121,7 @@ "tags": [], "label": "href", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -135,7 +135,7 @@ "signature": [ "React.MouseEventHandler | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -149,7 +149,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -163,7 +163,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -184,7 +184,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -206,7 +206,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -221,7 +221,7 @@ "IconType", " | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -235,7 +235,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -256,7 +256,7 @@ }, " | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -270,7 +270,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -284,7 +284,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -298,7 +298,7 @@ "signature": [ "{ text: string; } | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -312,7 +312,7 @@ "tags": [], "label": "SolutionSideNavProps", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -335,7 +335,7 @@ }, "[]" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -348,7 +348,7 @@ "description": [ "The id of the selected item to highlight. It only affects the top level items rendered in the main panel" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -371,7 +371,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -387,7 +387,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -403,7 +403,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -426,7 +426,7 @@ }, " | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false } @@ -442,7 +442,7 @@ "tags": [], "label": "SolutionSideNavItemPosition", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -459,7 +459,7 @@ "signature": [ "(type: string, event: string | string[], count?: number | undefined) => void" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -471,7 +471,7 @@ "tags": [], "label": "type", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -485,7 +485,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -499,7 +499,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index e06a281b52d67..b50a64911a370 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.devdocs.json b/api_docs/kbn_security_solution_storybook_config.devdocs.json index 8d585c20a8a0f..ac9afa5705207 100644 --- a/api_docs/kbn_security_solution_storybook_config.devdocs.json +++ b/api_docs/kbn_security_solution_storybook_config.devdocs.json @@ -34,7 +34,7 @@ "signature": [ "\"Security Solution Storybook\"" ], - "path": "x-pack/packages/security-solution/storybook/config/constants.ts", + "path": "x-pack/solutions/security/packages/storybook/config/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -51,7 +51,7 @@ "signature": [ "\"https://github.com/elastic/kibana/tree/main/packages/security_solution\"" ], - "path": "x-pack/packages/security-solution/storybook/config/constants.ts", + "path": "x-pack/solutions/security/packages/storybook/config/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 440095f2cc18c..a468b3924dbd6 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_security_ui_components.mdx b/api_docs/kbn_security_ui_components.mdx index 369deb84d5fdd..8ebf8fef112fc 100644 --- a/api_docs/kbn_security_ui_components.mdx +++ b/api_docs/kbn_security_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ui-components title: "@kbn/security-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ui-components plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ui-components'] --- import kbnSecurityUiComponentsObj from './kbn_security_ui_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index e06d9857ba312..475247e77e62d 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.devdocs.json b/api_docs/kbn_securitysolution_data_table.devdocs.json index 094b367093aa8..2116e15e76b4f 100644 --- a/api_docs/kbn_securitysolution_data_table.devdocs.json +++ b/api_docs/kbn_securitysolution_data_table.devdocs.json @@ -47,7 +47,7 @@ "EuiDataGridSetCellProps", ") => void) => void" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -67,7 +67,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -88,7 +88,7 @@ "text": "EuiTheme" } ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -105,7 +105,7 @@ "EuiDataGridSetCellProps", ") => void" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -126,7 +126,7 @@ "DataTableProps", ">" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -175,7 +175,7 @@ "text": "TableState" } ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/reducer.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/reducer.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -235,7 +235,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -250,7 +250,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -271,7 +271,7 @@ "text": "BrowserFields" } ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -286,7 +286,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -323,7 +323,7 @@ }, "[]>" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -344,7 +344,7 @@ }, "[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -359,7 +359,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -374,7 +374,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -389,7 +389,7 @@ "signature": [ "boolean" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -410,7 +410,7 @@ "signature": [ "(rowIndex: number, itemsPerPage: number) => number" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/pagination.ts", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -424,7 +424,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/pagination.ts", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -439,7 +439,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/pagination.ts", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -492,7 +492,7 @@ }, ", { clearCache: () => void; }> & { clearCache: () => void; }" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/selectors.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/selectors.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -517,7 +517,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -537,7 +537,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -566,7 +566,7 @@ " extends ", "DataTableModelSettings" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -612,7 +612,7 @@ }, " | undefined; type?: string | undefined; })[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -628,7 +628,7 @@ "signature": [ "string | null" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -644,7 +644,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -665,7 +665,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -681,7 +681,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -694,7 +694,7 @@ "description": [ "Uniquely identifies the data table" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -708,7 +708,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -719,7 +719,7 @@ "tags": [], "label": "isLoading", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -732,7 +732,7 @@ "description": [ "If selectAll checkbox in header is checked" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -745,7 +745,7 @@ "description": [ "The number of items to show in a single page of results" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -761,7 +761,7 @@ "signature": [ "number[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -777,7 +777,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -801,7 +801,7 @@ }, "[]; }" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -815,7 +815,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -830,7 +830,7 @@ "SessionViewConfig", " | null" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -846,7 +846,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -859,7 +859,7 @@ "description": [ "Total number of fetched events/alerts" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -873,7 +873,7 @@ "signature": [ "\"gridView\" | \"eventRenderedView\"" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -887,7 +887,7 @@ "signature": [ "{ showOnlyThreatIndicatorAlerts: boolean; showBuildingBlockAlerts: boolean; }" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false } @@ -903,7 +903,7 @@ "description": [ "The state of all timelines is stored here" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -923,7 +923,7 @@ "text": "TableState" } ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false } @@ -937,7 +937,7 @@ "tags": [], "label": "SortColumnTable", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -948,7 +948,7 @@ "tags": [], "label": "columnId", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false }, @@ -959,7 +959,7 @@ "tags": [], "label": "columnType", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false }, @@ -973,7 +973,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false }, @@ -994,7 +994,7 @@ "text": "Direction" } ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false } @@ -1010,7 +1010,7 @@ "description": [ "A map of id to data table" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1031,7 +1031,7 @@ "text": "DataTableModel" } ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false } @@ -1047,7 +1047,7 @@ "description": [ "The state of all data tables is stored here" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1067,7 +1067,7 @@ "text": "TableById" } ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false } @@ -1083,7 +1083,7 @@ "tags": [], "label": "Direction", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1095,7 +1095,7 @@ "tags": [], "label": "TableEntityType", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1107,7 +1107,7 @@ "tags": [], "label": "TableId", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1119,7 +1119,7 @@ "tags": [], "label": "TimelineTabs", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/detail_panel.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/detail_panel.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1136,7 +1136,7 @@ "signature": [ "\"not-filtered\" | \"text-filter\"" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1152,7 +1152,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1167,7 +1167,7 @@ "signature": [ "\"open\"" ], - "path": "x-pack/packages/security-solution/data_table/common/types/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1189,7 +1189,7 @@ "text": "Direction" } ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1300,7 +1300,7 @@ "SessionViewConfig", " | null; readonly totalCount: number; }" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1402,7 +1402,7 @@ }, ".alertsRiskInputs" ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1417,7 +1417,7 @@ "signature": [ "\"gridView\" | \"eventRenderedView\"" ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1431,7 +1431,7 @@ "tags": [], "label": "tableDefaults", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1446,7 +1446,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1460,7 +1460,7 @@ "signature": [ "null" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1474,7 +1474,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1488,7 +1488,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1502,7 +1502,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1516,7 +1516,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1530,7 +1530,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1541,7 +1541,7 @@ "tags": [], "label": "itemsPerPage", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1555,7 +1555,7 @@ "signature": [ "number[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1569,7 +1569,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1580,7 +1580,7 @@ "tags": [], "label": "selectedEventIds", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "children": [] @@ -1595,7 +1595,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1609,7 +1609,7 @@ "signature": [ "{ columnId: string; columnType: string; esTypes: string[]; sortDirection: \"desc\"; }[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1623,7 +1623,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1634,7 +1634,7 @@ "tags": [], "label": "graphEventId", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1648,7 +1648,7 @@ "signature": [ "null" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1663,7 +1663,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1677,7 +1677,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1688,7 +1688,7 @@ "tags": [], "label": "title", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1699,7 +1699,7 @@ "tags": [], "label": "totalCount", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1713,7 +1713,7 @@ "signature": [ "\"gridView\"" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1724,7 +1724,7 @@ "tags": [], "label": "additionalFilters", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1738,7 +1738,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1752,7 +1752,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false } @@ -1875,7 +1875,7 @@ }, "; }" ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index bd1680ab7c165..7fd97e37c760d 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.devdocs.json b/api_docs/kbn_securitysolution_ecs.devdocs.json index 3ac6349390b9a..a03c6128f86c4 100644 --- a/api_docs/kbn_securitysolution_ecs.devdocs.json +++ b/api_docs/kbn_securitysolution_ecs.devdocs.json @@ -27,7 +27,7 @@ "tags": [], "label": "AgentEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/agent/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/agent/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts", "deprecated": false, "trackAdoption": false }, @@ -55,7 +55,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/agent/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts", "deprecated": false, "trackAdoption": false } @@ -69,7 +69,7 @@ "tags": [], "label": "AuditdEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -83,7 +83,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false }, @@ -97,7 +97,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false }, @@ -112,7 +112,7 @@ "AuditdDataEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false }, @@ -127,7 +127,7 @@ "SummaryEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false }, @@ -141,7 +141,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false } @@ -155,7 +155,7 @@ "tags": [], "label": "CloudEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -170,7 +170,7 @@ "CloudInstanceEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false }, @@ -185,7 +185,7 @@ "CloudMachineEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false }, @@ -199,7 +199,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false }, @@ -213,7 +213,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false } @@ -227,7 +227,7 @@ "tags": [], "label": "CodeSignature", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -241,7 +241,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -255,7 +255,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false } @@ -269,7 +269,7 @@ "tags": [], "label": "DestinationEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -283,7 +283,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -297,7 +297,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -311,7 +311,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -325,7 +325,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -346,7 +346,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -360,7 +360,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false } @@ -374,7 +374,7 @@ "tags": [], "label": "DllEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/dll/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -388,7 +388,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dll/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts", "deprecated": false, "trackAdoption": false }, @@ -409,7 +409,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dll/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts", "deprecated": false, "trackAdoption": false }, @@ -424,7 +424,7 @@ "ProcessPe", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dll/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts", "deprecated": false, "trackAdoption": false } @@ -438,7 +438,7 @@ "tags": [], "label": "DnsEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/dns/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -453,7 +453,7 @@ "DnsQuestionEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dns/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts", "deprecated": false, "trackAdoption": false }, @@ -467,7 +467,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dns/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts", "deprecated": false, "trackAdoption": false }, @@ -481,7 +481,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dns/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts", "deprecated": false, "trackAdoption": false } @@ -495,7 +495,7 @@ "tags": [], "label": "EcsSecurityExtension", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -516,7 +516,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -537,7 +537,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -558,7 +558,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -579,7 +579,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -600,7 +600,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -621,7 +621,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -642,7 +642,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -656,7 +656,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -677,7 +677,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -698,7 +698,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -719,7 +719,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -740,7 +740,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -761,7 +761,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -782,7 +782,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -803,7 +803,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -824,7 +824,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -845,7 +845,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -856,7 +856,7 @@ "tags": [], "label": "_id", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -870,7 +870,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -891,7 +891,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -912,7 +912,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -933,7 +933,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -949,7 +949,7 @@ "SignalEcsAAD", "; } | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -963,7 +963,7 @@ "signature": [ "{ index: string[]; data_view_id?: string | undefined; type?: string | undefined; } | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -977,7 +977,7 @@ "signature": [ "\"open\" | \"closed\" | \"in-progress\" | \"acknowledged\" | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -998,7 +998,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1019,7 +1019,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1040,7 +1040,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1061,7 +1061,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1075,7 +1075,7 @@ "signature": [ "{ parentId: string; sequenceNumber: string; } | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1096,7 +1096,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1117,7 +1117,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1138,7 +1138,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1152,7 +1152,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1173,7 +1173,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1194,7 +1194,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false } @@ -1208,7 +1208,7 @@ "tags": [], "label": "EndgameEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1222,7 +1222,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1236,7 +1236,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1250,7 +1250,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1264,7 +1264,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1278,7 +1278,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1292,7 +1292,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1306,7 +1306,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1320,7 +1320,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1334,7 +1334,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1348,7 +1348,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1362,7 +1362,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1376,7 +1376,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1390,7 +1390,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false } @@ -1404,7 +1404,7 @@ "tags": [], "label": "EventEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1418,7 +1418,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1432,7 +1432,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1446,7 +1446,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1460,7 +1460,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1474,7 +1474,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1488,7 +1488,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1502,7 +1502,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1516,7 +1516,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1530,7 +1530,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1544,7 +1544,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1558,7 +1558,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1572,7 +1572,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1586,7 +1586,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1600,7 +1600,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1614,7 +1614,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1628,7 +1628,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1642,7 +1642,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1656,7 +1656,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1670,7 +1670,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false } @@ -1684,7 +1684,7 @@ "tags": [], "label": "FileEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1698,7 +1698,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1712,7 +1712,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1726,7 +1726,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1740,7 +1740,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1755,7 +1755,7 @@ "Ext", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1769,7 +1769,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1783,7 +1783,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1797,7 +1797,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1811,7 +1811,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1825,7 +1825,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1839,7 +1839,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1853,7 +1853,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1867,7 +1867,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1881,7 +1881,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1895,7 +1895,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1909,7 +1909,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1924,7 +1924,7 @@ "Hash", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false } @@ -1938,7 +1938,7 @@ "tags": [], "label": "GeoEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1952,7 +1952,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1966,7 +1966,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1980,7 +1980,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1994,7 +1994,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2009,7 +2009,7 @@ "Location", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2023,7 +2023,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2037,7 +2037,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false } @@ -2051,7 +2051,7 @@ "tags": [], "label": "HostEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2065,7 +2065,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2079,7 +2079,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2093,7 +2093,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2107,7 +2107,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2121,7 +2121,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2142,7 +2142,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2156,7 +2156,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false } @@ -2170,7 +2170,7 @@ "tags": [], "label": "HttpEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/http/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2184,7 +2184,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/http/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2199,7 +2199,7 @@ "HttpRequestData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/http/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2214,7 +2214,7 @@ "HttpResponseData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/http/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts", "deprecated": false, "trackAdoption": false } @@ -2228,7 +2228,7 @@ "tags": [], "label": "MemoryProtection", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2242,7 +2242,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2256,7 +2256,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2270,7 +2270,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2284,7 +2284,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2298,7 +2298,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false } @@ -2312,7 +2312,7 @@ "tags": [], "label": "NetworkEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2326,7 +2326,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2340,7 +2340,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2354,7 +2354,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2368,7 +2368,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2382,7 +2382,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2396,7 +2396,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false } @@ -2410,7 +2410,7 @@ "tags": [], "label": "OsEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2424,7 +2424,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2438,7 +2438,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2452,7 +2452,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2466,7 +2466,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2480,7 +2480,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2494,7 +2494,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false } @@ -2508,7 +2508,7 @@ "tags": [], "label": "ProcessEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2523,7 +2523,7 @@ "Ext", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2537,7 +2537,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2551,7 +2551,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2566,7 +2566,7 @@ "ProcessSessionData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2581,7 +2581,7 @@ "ProcessSessionData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2596,7 +2596,7 @@ "ProcessSessionData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2610,7 +2610,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2625,7 +2625,7 @@ "ProcessHashData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2640,7 +2640,7 @@ "ProcessParentData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2661,7 +2661,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2675,7 +2675,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2689,7 +2689,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2703,7 +2703,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2717,7 +2717,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2731,7 +2731,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2745,7 +2745,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2760,7 +2760,7 @@ "Thread", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2774,7 +2774,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false } @@ -2788,7 +2788,7 @@ "tags": [], "label": "Ransomware", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2802,7 +2802,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2816,7 +2816,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2830,7 +2830,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2844,7 +2844,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2859,7 +2859,7 @@ "RansomwareFiles", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false } @@ -2873,7 +2873,7 @@ "tags": [], "label": "RegistryEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2887,7 +2887,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2901,7 +2901,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2915,7 +2915,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2929,7 +2929,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2944,7 +2944,7 @@ "RegistryEcsData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false } @@ -2958,7 +2958,7 @@ "tags": [], "label": "RuleEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2972,7 +2972,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2986,7 +2986,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3000,7 +3000,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3014,7 +3014,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3028,7 +3028,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3042,7 +3042,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3056,7 +3056,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3070,7 +3070,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3084,7 +3084,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3098,7 +3098,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3112,7 +3112,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3126,7 +3126,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3140,7 +3140,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3154,7 +3154,7 @@ "signature": [ "boolean[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3168,7 +3168,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3182,7 +3182,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3196,7 +3196,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3210,7 +3210,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3224,7 +3224,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3238,7 +3238,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3252,7 +3252,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3266,7 +3266,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3280,7 +3280,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3294,7 +3294,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3308,7 +3308,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3322,7 +3322,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3336,7 +3336,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3350,7 +3350,7 @@ "signature": [ "boolean[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3364,7 +3364,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3378,7 +3378,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3392,7 +3392,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3406,7 +3406,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3420,7 +3420,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3434,7 +3434,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3448,7 +3448,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3462,7 +3462,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false } @@ -3476,7 +3476,7 @@ "tags": [], "label": "SignalEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3497,7 +3497,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3511,7 +3511,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3525,7 +3525,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3539,7 +3539,7 @@ "signature": [ "{ id?: string[] | undefined; } | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3553,7 +3553,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false } @@ -3567,7 +3567,7 @@ "tags": [], "label": "SourceEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3581,7 +3581,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3595,7 +3595,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3609,7 +3609,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3623,7 +3623,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3644,7 +3644,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3658,7 +3658,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false } @@ -3672,7 +3672,7 @@ "tags": [], "label": "SuricataEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/suricata/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/suricata/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3687,7 +3687,7 @@ "SuricataEveData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/suricata/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/suricata/index.ts", "deprecated": false, "trackAdoption": false } @@ -3701,7 +3701,7 @@ "tags": [], "label": "SystemEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/system/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3716,7 +3716,7 @@ "AuditEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/system/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3731,7 +3731,7 @@ "AuthEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/system/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts", "deprecated": false, "trackAdoption": false } @@ -3745,7 +3745,7 @@ "tags": [], "label": "Target", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/target_type/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/target_type/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3765,7 +3765,7 @@ "text": "ProcessEcs" } ], - "path": "packages/kbn-securitysolution-ecs/src/target_type/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/target_type/index.ts", "deprecated": false, "trackAdoption": false } @@ -3779,7 +3779,7 @@ "tags": [], "label": "ThreatEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3794,7 +3794,7 @@ "LegacyThreatIndicatorEcs", "[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3809,7 +3809,7 @@ "ThreatEnrichmentEcs", "[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false } @@ -3823,7 +3823,7 @@ "tags": [], "label": "ThreatIndicatorEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3844,7 +3844,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3858,7 +3858,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3872,7 +3872,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3886,7 +3886,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false } @@ -3900,7 +3900,7 @@ "tags": [], "label": "TlsEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/tls/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3915,7 +3915,7 @@ "TlsClientCertificateData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/tls/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3930,7 +3930,7 @@ "TlsFingerprintsData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/tls/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3945,7 +3945,7 @@ "TlsServerCertificateData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/tls/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts", "deprecated": false, "trackAdoption": false } @@ -3959,7 +3959,7 @@ "tags": [], "label": "UrlEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3973,7 +3973,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3987,7 +3987,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4001,7 +4001,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4015,7 +4015,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false } @@ -4029,7 +4029,7 @@ "tags": [], "label": "UserEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4043,7 +4043,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4057,7 +4057,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4071,7 +4071,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4085,7 +4085,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4099,7 +4099,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4113,7 +4113,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4127,7 +4127,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false } @@ -4141,7 +4141,7 @@ "tags": [], "label": "WinlogEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/winlog/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/winlog/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4155,7 +4155,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/winlog/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/winlog/index.ts", "deprecated": false, "trackAdoption": false } @@ -4169,7 +4169,7 @@ "tags": [], "label": "ZeekEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4183,7 +4183,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4198,7 +4198,7 @@ "ZeekConnectionData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4213,7 +4213,7 @@ "ZeekNoticeData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4228,7 +4228,7 @@ "ZeekDnsData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4243,7 +4243,7 @@ "ZeekHttpData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4258,7 +4258,7 @@ "ZeekFileData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4273,7 +4273,7 @@ "ZeekSslData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false } @@ -4289,7 +4289,7 @@ "tags": [], "label": "EventCategory", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4301,7 +4301,7 @@ "tags": [], "label": "EventCode", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4316,7 +4316,7 @@ "tags": [], "label": "cloudFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4327,7 +4327,7 @@ "tags": [], "label": "'cloud.account.id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4338,7 +4338,7 @@ "tags": [], "label": "'cloud.availability_zone'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4349,7 +4349,7 @@ "tags": [], "label": "'cloud.instance.id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4360,7 +4360,7 @@ "tags": [], "label": "'cloud.instance.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4371,7 +4371,7 @@ "tags": [], "label": "'cloud.machine.type'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4382,7 +4382,7 @@ "tags": [], "label": "'cloud.provider'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4393,7 +4393,7 @@ "tags": [], "label": "'cloud.region'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4407,7 +4407,7 @@ "tags": [], "label": "hostFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4418,7 +4418,7 @@ "tags": [], "label": "'host.architecture'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4429,7 +4429,7 @@ "tags": [], "label": "'host.id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4440,7 +4440,7 @@ "tags": [], "label": "'host.ip'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4451,7 +4451,7 @@ "tags": [], "label": "'host.mac'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4462,7 +4462,7 @@ "tags": [], "label": "'host.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4476,7 +4476,7 @@ "signature": [ "any" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4490,7 +4490,7 @@ "tags": [], "label": "osFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4501,7 +4501,7 @@ "tags": [], "label": "'os.platform'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4512,7 +4512,7 @@ "tags": [], "label": "'os.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4523,7 +4523,7 @@ "tags": [], "label": "'os.full'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4534,7 +4534,7 @@ "tags": [], "label": "'os.family'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4545,7 +4545,7 @@ "tags": [], "label": "'os.version'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4556,7 +4556,7 @@ "tags": [], "label": "'os.kernel'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4570,7 +4570,7 @@ "tags": [], "label": "processFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4581,7 +4581,7 @@ "tags": [], "label": "'process.hash.md5'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4592,7 +4592,7 @@ "tags": [], "label": "'process.hash.sha1'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4603,7 +4603,7 @@ "tags": [], "label": "'process.hash.sha256'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4614,7 +4614,7 @@ "tags": [], "label": "'process.pid'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4625,7 +4625,7 @@ "tags": [], "label": "'process.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4636,7 +4636,7 @@ "tags": [], "label": "'process.ppid'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4647,7 +4647,7 @@ "tags": [], "label": "'process.args'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4658,7 +4658,7 @@ "tags": [], "label": "'process.entity_id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4669,7 +4669,7 @@ "tags": [], "label": "'process.executable'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4680,7 +4680,7 @@ "tags": [], "label": "'process.title'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4691,7 +4691,7 @@ "tags": [], "label": "'process.thread'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4702,7 +4702,7 @@ "tags": [], "label": "'process.working_directory'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4716,7 +4716,7 @@ "tags": [], "label": "sourceFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4727,7 +4727,7 @@ "tags": [], "label": "'source.bytes'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4738,7 +4738,7 @@ "tags": [], "label": "'source.ip'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4749,7 +4749,7 @@ "tags": [], "label": "'source.packets'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4760,7 +4760,7 @@ "tags": [], "label": "'source.port'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4771,7 +4771,7 @@ "tags": [], "label": "'source.domain'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4782,7 +4782,7 @@ "tags": [], "label": "'source.geo.continent_name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4793,7 +4793,7 @@ "tags": [], "label": "'source.geo.country_name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4804,7 +4804,7 @@ "tags": [], "label": "'source.geo.country_iso_code'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4815,7 +4815,7 @@ "tags": [], "label": "'source.geo.city_name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4826,7 +4826,7 @@ "tags": [], "label": "'source.geo.region_iso_code'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4837,7 +4837,7 @@ "tags": [], "label": "'source.geo.region_name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4851,7 +4851,7 @@ "tags": [], "label": "userFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4862,7 +4862,7 @@ "tags": [], "label": "'user.domain'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4873,7 +4873,7 @@ "tags": [], "label": "'user.id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4884,7 +4884,7 @@ "tags": [], "label": "'user.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4897,7 +4897,7 @@ "description": [ "// NOTE: This field is not tested and available from ECS. Please remove this tag once it is" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4910,7 +4910,7 @@ "description": [ "// NOTE: This field is not tested and available from ECS. Please remove this tag once it is" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4923,7 +4923,7 @@ "description": [ "// NOTE: This field is not tested and available from ECS. Please remove this tag once it is" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4936,7 +4936,7 @@ "description": [ "// NOTE: This field is not tested and available from ECS. Please remove this tag once it is" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 3088d20513408..b1697069faec4 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.devdocs.json b/api_docs/kbn_securitysolution_es_utils.devdocs.json index e7dcb1d4de62f..6708767007105 100644 --- a/api_docs/kbn_securitysolution_es_utils.devdocs.json +++ b/api_docs/kbn_securitysolution_es_utils.devdocs.json @@ -613,9 +613,9 @@ "\nRetrieves all index aliases for a given alias name\n" ], "signature": [ - "({ esClient, alias, }: { esClient: ", + "({ esClient, alias, index, }: { esClient: ", "ElasticsearchClient", - "; alias: string; }) => Promise" + "; alias: string; index?: string | undefined; }) => Promise" ], "path": "packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts", "deprecated": false, @@ -626,7 +626,7 @@ "id": "def-common.getIndexAliases.$1", "type": "Object", "tags": [], - "label": "{\n esClient,\n alias,\n}", + "label": "{\n esClient,\n alias,\n index,\n}", "description": [], "path": "packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts", "deprecated": false, @@ -1906,6 +1906,20 @@ "path": "packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-es-utils", + "id": "def-common.getIndexAliases.$1.index", + "type": "string", + "tags": [], + "label": "index", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts", + "deprecated": false, + "trackAdoption": false } ] } diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 6d98ee04fb159..a24a4fd1eba09 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-detection-engine](https://github.com/orgs/elastic/tea | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 87 | 0 | 76 | 1 | +| 88 | 0 | 77 | 1 | ## Common diff --git a/api_docs/kbn_securitysolution_exception_list_components.devdocs.json b/api_docs/kbn_securitysolution_exception_list_components.devdocs.json index 6fad7dd1a9543..43c4c1d822e7b 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.devdocs.json +++ b/api_docs/kbn_securitysolution_exception_list_components.devdocs.json @@ -868,7 +868,7 @@ "label": "formattedDateComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/meta/index.tsx", "deprecated": false, @@ -882,7 +882,7 @@ "label": "securityLinkAnchorComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/meta/index.tsx", "deprecated": false, @@ -1021,7 +1021,7 @@ "label": "securityLinkAnchorComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, @@ -1035,7 +1035,7 @@ "label": "formattedDateComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, @@ -1161,7 +1161,7 @@ "label": "showValueListModal", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index b267a800bb667..4c79ab4acd08e 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index f26d3d93dfc4e..90b0ff3f1761b 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 2c8bcf2913986..4d02f1b8287e4 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 1cfd4acdd73eb..3fa758ffa22dd 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.devdocs.json b/api_docs/kbn_securitysolution_io_ts_types.devdocs.json index f3ad240b0edc4..b634ff0ec3895 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.devdocs.json +++ b/api_docs/kbn_securitysolution_io_ts_types.devdocs.json @@ -1173,7 +1173,7 @@ "tags": [], "label": "version", "description": [ - "\nNote this is just a positive number, but we use it as a type here which is still ok.\nThis type was originally from \"x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts\"\nbut is moved here to make things more portable. No unit tests, but see PositiveIntegerGreaterThanZero integer for unit tests." + "\nNote this is just a positive number, but we use it as a type here which is still ok.\nThis type was originally from \"x-pack/solutions/security/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts\"\nbut is moved here to make things more portable. No unit tests, but see PositiveIntegerGreaterThanZero integer for unit tests." ], "signature": [ "Type", diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 63131851f322e..e7e7814330004 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index aadaa9bb5e058..f50677bac844d 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index acda4d82918e1..6b2832d1aa06a 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.devdocs.json b/api_docs/kbn_securitysolution_list_constants.devdocs.json index 2b2e1776831a1..24ee046140a71 100644 --- a/api_docs/kbn_securitysolution_list_constants.devdocs.json +++ b/api_docs/kbn_securitysolution_list_constants.devdocs.json @@ -37,19 +37,19 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts" } ], "initialIsOpen": false @@ -69,47 +69,47 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" } ], "initialIsOpen": false @@ -129,19 +129,19 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts" } ], "initialIsOpen": false @@ -161,27 +161,27 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts" } ], "initialIsOpen": false @@ -201,119 +201,119 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/utils.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/utils.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/security_lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/security_lists.test.ts" } ], "initialIsOpen": false @@ -333,27 +333,27 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts" } ], "initialIsOpen": false @@ -373,19 +373,19 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" } ], "initialIsOpen": false @@ -404,64 +404,64 @@ "trackAdoption": false, "references": [ { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" + "plugin": "lists", + "path": "x-pack/plugins/lists/server/services/exception_lists/get_exception_list_summary.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" + "plugin": "lists", + "path": "x-pack/plugins/lists/server/services/exception_lists/get_exception_list_summary.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/exception_lists/get_exception_list_summary.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts" }, { - "plugin": "lists", - "path": "x-pack/plugins/lists/server/services/exception_lists/get_exception_list_summary.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" } ], "initialIsOpen": false @@ -481,19 +481,19 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts" } ], "initialIsOpen": false @@ -614,19 +614,19 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" }, { "plugin": "@kbn/securitysolution-io-ts-list-types", @@ -684,30 +684,6 @@ "plugin": "lists", "path": "x-pack/plugins/lists/common/schemas/response/exception_list_schema.mock.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" - }, { "plugin": "lists", "path": "x-pack/plugins/lists/server/saved_objects/migrations.test.ts" @@ -746,91 +722,115 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts" }, { "plugin": "@kbn/securitysolution-io-ts-list-types", @@ -874,19 +874,19 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts" }, { "plugin": "@kbn/securitysolution-io-ts-list-types", diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 6cc5f6231ab41..2437ebbdcb0d3 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 4b4ae0c9f0a3a..45e4929023a82 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 0bb78551477da..e06d5b8a27645 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 0a9a4ac9323e0..71315fc8a32b4 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 62a0d9909e409..89d800ca1b520 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 0673ea18beffb..dcc11b26f47ca 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index c467d3e2445ac..450a0ffaeeb96 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.devdocs.json b/api_docs/kbn_server_route_repository.devdocs.json index b402826a9d604..88f2e8c60398f 100644 --- a/api_docs/kbn_server_route_repository.devdocs.json +++ b/api_docs/kbn_server_route_repository.devdocs.json @@ -23,7 +23,7 @@ "CreateServerRouteFactory", "" ], - "path": "packages/kbn-server-route-repository/src/create_server_route_factory.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/create_server_route_factory.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -42,7 +42,7 @@ "OutputOf", "" ], - "path": "packages/kbn-server-route-repository/src/decode_request_params.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -56,7 +56,7 @@ "signature": [ "Partial<{ path: any; query: any; body: any; }>" ], - "path": "packages/kbn-server-route-repository/src/decode_request_params.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -71,7 +71,7 @@ "signature": [ "T" ], - "path": "packages/kbn-server-route-repository/src/decode_request_params.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -98,7 +98,7 @@ }, "; pathname: string; version: string; }" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -112,7 +112,7 @@ "signature": [ "string" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -127,7 +127,7 @@ "signature": [ "Record" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -154,7 +154,7 @@ }, "; pathname: string; version: string; }" ], - "path": "packages/kbn-server-route-repository-utils/src/parse_endpoint.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -168,7 +168,7 @@ "signature": [ "string" ], - "path": "packages/kbn-server-route-repository-utils/src/parse_endpoint.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -219,7 +219,7 @@ }, "; dependencies: TDependencies; }) => void" ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -230,7 +230,7 @@ "tags": [], "label": "{\n core,\n repository,\n logger,\n dependencies,\n}", "description": [], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -251,7 +251,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false }, @@ -281,7 +281,7 @@ }, " | undefined, any, any, any>; }" ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false }, @@ -301,7 +301,7 @@ "text": "Logger" } ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false }, @@ -315,7 +315,7 @@ "signature": [ "TDependencies" ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false } @@ -335,7 +335,7 @@ "signature": [ "(params: KibanaRequestParams) => Partial<{ path: any; body: any; query: any; }>" ], - "path": "packages/kbn-server-route-repository/src/strip_nullish_request_parameters.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -349,7 +349,7 @@ "signature": [ "KibanaRequestParams" ], - "path": "packages/kbn-server-route-repository/src/strip_nullish_request_parameters.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -377,7 +377,7 @@ }, " extends CoreRouteHandlerResources" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -397,7 +397,7 @@ "text": "Logger" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -421,7 +421,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -459,7 +459,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -473,7 +473,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -504,7 +504,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -550,7 +550,7 @@ "Observable", " : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -564,7 +564,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -595,7 +595,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -651,7 +651,7 @@ }, " ? ClientRequestParamsOfType : TRouteParamsRT extends undefined ? {} : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -690,7 +690,7 @@ }, " ? DecodedRequestParamsOfType : {} : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -720,7 +720,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -735,7 +735,7 @@ "signature": [ "keyof TServerRouteRepository" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -760,7 +760,7 @@ "Encoder", "; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -801,7 +801,7 @@ }, " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -830,7 +830,7 @@ "text": "ZodParamsObject" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -869,7 +869,7 @@ }, " ? { options: TRouteCreateOptions; } : {})" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -908,7 +908,7 @@ }, " | undefined>; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -922,7 +922,7 @@ "tags": [], "label": "passThroughValidationObject", "description": [], - "path": "packages/kbn-server-route-repository/src/validation_objects.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -936,7 +936,7 @@ "signature": [ "Zod.ZodAny" ], - "path": "packages/kbn-server-route-repository/src/validation_objects.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts", "deprecated": false, "trackAdoption": false }, @@ -950,7 +950,7 @@ "signature": [ "Zod.ZodAny" ], - "path": "packages/kbn-server-route-repository/src/validation_objects.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts", "deprecated": false, "trackAdoption": false }, @@ -964,7 +964,7 @@ "signature": [ "Zod.ZodAny" ], - "path": "packages/kbn-server-route-repository/src/validation_objects.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index c569f7af69c10..5687543bf95eb 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_client.devdocs.json b/api_docs/kbn_server_route_repository_client.devdocs.json index 03e5c79e96682..759f12ff6b32b 100644 --- a/api_docs/kbn_server_route_repository_client.devdocs.json +++ b/api_docs/kbn_server_route_repository_client.devdocs.json @@ -37,7 +37,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-client/src/create_repository_client.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -66,7 +66,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-client/src/create_repository_client.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -85,7 +85,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-server-route-repository-client/src/is_http_fetch_error.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/is_http_fetch_error.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -99,7 +99,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-server-route-repository-client/src/is_http_fetch_error.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/is_http_fetch_error.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -118,7 +118,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-server-route-repository-client/src/is_request_aborted_error.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/is_request_aborted_error.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -132,7 +132,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-server-route-repository-client/src/is_request_aborted_error.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/is_request_aborted_error.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -160,7 +160,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -198,7 +198,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -212,7 +212,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -243,7 +243,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -289,7 +289,7 @@ "Observable", " : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -303,7 +303,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -334,7 +334,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -390,7 +390,7 @@ }, " ? ClientRequestParamsOfType : TRouteParamsRT extends undefined ? {} : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -411,7 +411,7 @@ "text": "HttpFetchOptions" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_server_route_repository_client.mdx b/api_docs/kbn_server_route_repository_client.mdx index bf4bea214db22..250f43dcf64db 100644 --- a/api_docs/kbn_server_route_repository_client.mdx +++ b/api_docs/kbn_server_route_repository_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-client title: "@kbn/server-route-repository-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-client plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-client'] --- import kbnServerRouteRepositoryClientObj from './kbn_server_route_repository_client.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_utils.devdocs.json b/api_docs/kbn_server_route_repository_utils.devdocs.json index b33006a95896a..09f60f690d12e 100644 --- a/api_docs/kbn_server_route_repository_utils.devdocs.json +++ b/api_docs/kbn_server_route_repository_utils.devdocs.json @@ -37,7 +37,7 @@ }, "; pathname: string; version: string; }" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -51,7 +51,7 @@ "signature": [ "string" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -66,7 +66,7 @@ "signature": [ "Record" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -93,7 +93,7 @@ }, "; pathname: string; version: string; }" ], - "path": "packages/kbn-server-route-repository-utils/src/parse_endpoint.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -107,7 +107,7 @@ "signature": [ "string" ], - "path": "packages/kbn-server-route-repository-utils/src/parse_endpoint.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -135,7 +135,7 @@ }, " extends CoreRouteHandlerResources" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -155,7 +155,7 @@ "text": "Logger" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -179,7 +179,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -231,7 +231,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -262,7 +262,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -308,7 +308,7 @@ "Observable", " : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -322,7 +322,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -353,7 +353,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -371,7 +371,7 @@ "tags": [], "label": "ServerRouteCreateOptions", "description": [], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -385,7 +385,7 @@ "signature": [ "[x: string]: any" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -437,7 +437,7 @@ }, " ? ClientRequestParamsOfType : TRouteParamsRT extends undefined ? {} : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -476,7 +476,7 @@ }, " ? DecodedRequestParamsOfType : {} : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -497,7 +497,7 @@ "text": "HttpFetchOptions" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -527,7 +527,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -542,7 +542,7 @@ "signature": [ "keyof TServerRouteRepository" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -567,7 +567,7 @@ "Encoder", "; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -608,7 +608,7 @@ }, " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -637,7 +637,7 @@ "text": "ZodParamsObject" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -676,7 +676,7 @@ }, " ? { options: TRouteCreateOptions; } : {})" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -691,7 +691,7 @@ "signature": [ "{ [x: string]: any; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -730,7 +730,7 @@ }, " | undefined>; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -745,7 +745,7 @@ "signature": [ "Zod.ZodObject<{ path?: Zod.ZodType | undefined; query?: Zod.ZodType | undefined; body?: Zod.ZodType | undefined; }, Zod.UnknownKeysParam, Zod.ZodTypeAny, { query?: unknown; path?: unknown; body?: unknown; }, { query?: unknown; path?: unknown; body?: unknown; }>" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_server_route_repository_utils.mdx b/api_docs/kbn_server_route_repository_utils.mdx index 1cc5a5d72b0d7..4720ef593f891 100644 --- a/api_docs/kbn_server_route_repository_utils.mdx +++ b/api_docs/kbn_server_route_repository_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-utils title: "@kbn/server-route-repository-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-utils'] --- import kbnServerRouteRepositoryUtilsObj from './kbn_server_route_repository_utils.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index cd0c189f2a912..a77c4a5e5a9bd 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 756a31d3679cd..bb58f17972f2c 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 7444f55f614df..95a340d890191 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 09f93f60ffc6a..594403698c951 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.devdocs.json b/api_docs/kbn_serverless_security_settings.devdocs.json index fd54e257a28c8..1a14ff45bb0f5 100644 --- a/api_docs/kbn_serverless_security_settings.devdocs.json +++ b/api_docs/kbn_serverless_security_settings.devdocs.json @@ -32,7 +32,7 @@ "signature": [ "string[]" ], - "path": "packages/serverless/settings/security_project/index.ts", + "path": "src/platform/packages/shared/serverless/settings/security_project/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index a8758f5ecad7e..a3eab8683551f 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index c5a5f69686dfc..dc7c780f24afe 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index e2e57260035d2..9b5f271a4c769 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index 5cc189ae94891..f84ac0124dbb4 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 6eb5a4029897d..659784921dc22 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.devdocs.json b/api_docs/kbn_shared_ux_button_toolbar.devdocs.json index ea07e99c1ce78..249f1003dbbf3 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.devdocs.json +++ b/api_docs/kbn_shared_ux_button_toolbar.devdocs.json @@ -1,27 +1,11 @@ { "id": "@kbn/shared-ux-button-toolbar", "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { "classes": [], "functions": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.AddFromLibraryButton", + "id": "def-public.AddFromLibraryButton", "type": "Function", "tags": [], "label": "AddFromLibraryButton", @@ -32,9 +16,9 @@ "({ onClick, size, ...rest }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -45,7 +29,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.AddFromLibraryButton.$1", + "id": "def-public.AddFromLibraryButton.$1", "type": "Object", "tags": [], "label": "{ onClick, size = 'm', ...rest }", @@ -53,9 +37,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" } ], @@ -70,7 +54,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButtonGroup", + "id": "def-public.IconButtonGroup", "type": "Function", "tags": [], "label": "IconButtonGroup", @@ -81,9 +65,9 @@ "({ buttons, legend, buttonSize, \"data-test-subj\": dataTestSubj, }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -94,7 +78,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButtonGroup.$1", + "id": "def-public.IconButtonGroup.$1", "type": "Object", "tags": [], "label": "{\n buttons,\n legend,\n buttonSize = 'm',\n 'data-test-subj': dataTestSubj,\n}", @@ -102,9 +86,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" } ], @@ -119,7 +103,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Toolbar", + "id": "def-public.Toolbar", "type": "Function", "tags": [], "label": "Toolbar", @@ -130,9 +114,9 @@ "({ children }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -143,7 +127,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Toolbar.$1", + "id": "def-public.Toolbar.$1", "type": "Object", "tags": [], "label": "{ children }", @@ -151,9 +135,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" } ], @@ -170,7 +154,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarButton", + "id": "def-public.ToolbarButton", "type": "Function", "tags": [], "label": "ToolbarButton", @@ -179,9 +163,9 @@ "(props: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -192,7 +176,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarButton.$1", + "id": "def-public.ToolbarButton.$1", "type": "Uncategorized", "tags": [], "label": "props", @@ -200,9 +184,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, "" @@ -218,7 +202,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarPopover", + "id": "def-public.ToolbarPopover", "type": "Function", "tags": [], "label": "ToolbarPopover", @@ -229,9 +213,9 @@ "({ type, label, iconType, size, children, isDisabled, ...popover }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -242,7 +226,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarPopover.$1", + "id": "def-public.ToolbarPopover.$1", "type": "CompoundType", "tags": [], "label": "{\n type,\n label,\n iconType,\n size = 'm',\n children,\n isDisabled,\n ...popover\n}", @@ -250,9 +234,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" } ], @@ -269,7 +253,7 @@ "interfaces": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton", + "id": "def-public.IconButton", "type": "Interface", "tags": [], "label": "IconButton", @@ -282,7 +266,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.label", + "id": "def-public.IconButton.label", "type": "string", "tags": [], "label": "label", @@ -295,7 +279,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.iconType", + "id": "def-public.IconButton.iconType", "type": "CompoundType", "tags": [], "label": "iconType", @@ -311,7 +295,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.onClick", + "id": "def-public.IconButton.onClick", "type": "Function", "tags": [], "label": "onClick", @@ -329,7 +313,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.title", + "id": "def-public.IconButton.title", "type": "string", "tags": [], "label": "title", @@ -345,7 +329,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.datatestsubj", + "id": "def-public.IconButton.datatestsubj", "type": "string", "tags": [], "label": "'data-test-subj'", @@ -361,7 +345,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.isDisabled", + "id": "def-public.IconButton.isDisabled", "type": "CompoundType", "tags": [], "label": "isDisabled", @@ -377,7 +361,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.ariaexpanded", + "id": "def-public.IconButton.ariaexpanded", "type": "CompoundType", "tags": [], "label": "'aria-expanded'", @@ -393,7 +377,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.ariacontrols", + "id": "def-public.IconButton.ariacontrols", "type": "string", "tags": [], "label": "'aria-controls'", @@ -412,7 +396,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Interface", "tags": [], "label": "Props", @@ -425,7 +409,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.legend", + "id": "def-public.Props.legend", "type": "string", "tags": [], "label": "legend", @@ -438,7 +422,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.buttons", + "id": "def-public.Props.buttons", "type": "Array", "tags": [], "label": "buttons", @@ -448,9 +432,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.IconButton", + "section": "def-public.IconButton", "text": "IconButton" }, "[]" @@ -461,7 +445,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.buttonSize", + "id": "def-public.Props.buttonSize", "type": "CompoundType", "tags": [], "label": "buttonSize", @@ -477,7 +461,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.datatestsubj", + "id": "def-public.Props.datatestsubj", "type": "string", "tags": [], "label": "'data-test-subj'", @@ -496,7 +480,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Interface", "tags": [], "label": "Props", @@ -509,7 +493,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.children", + "id": "def-public.Props.children", "type": "Object", "tags": [], "label": "children", @@ -529,7 +513,7 @@ "misc": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Type", "tags": [], "label": "Props", @@ -546,7 +530,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Type", "tags": [], "label": "Props", @@ -563,7 +547,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Type", "tags": [], "label": "Props", @@ -580,7 +564,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarButtonType", + "id": "def-public.ToolbarButtonType", "type": "Type", "tags": [], "label": "ToolbarButtonType", @@ -591,17 +575,17 @@ "((props: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element) | (({ type, label, iconType, size, children, isDisabled, ...popover }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element)" @@ -615,5 +599,21 @@ } ], "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 3757ca9c569ee..be197259915b5 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; @@ -23,14 +23,14 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh |-------------------|-----------|------------------------|-----------------| | 30 | 0 | 8 | 0 | -## Common +## Client ### Functions - + ### Interfaces - + ### Consts, variables and types - + diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index f0252f01c744c..9041718718a78 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index fb0e3a99631db..b86b12da678b3 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index 5e3fe38d97284..6f5929594cd24 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index ae38a19b7f620..d8588df9842ff 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 6beb3f26d8480..d61c5d8e29182 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 706879497645a..ee0a93dc950ae 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 9dad1bda446b4..08a607cec68e2 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index cf98a19607492..f22b4d5c43f6c 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.devdocs.json b/api_docs/kbn_shared_ux_file_picker.devdocs.json index 8afebe976c729..f60003a33ad09 100644 --- a/api_docs/kbn_shared_ux_file_picker.devdocs.json +++ b/api_docs/kbn_shared_ux_file_picker.devdocs.json @@ -1,27 +1,11 @@ { "id": "@kbn/shared-ux-file-picker", "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { "classes": [], "functions": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.FilePicker", + "id": "def-public.FilePicker", "type": "Function", "tags": [], "label": "FilePicker", @@ -30,9 +14,9 @@ "(props: ", { "pluginId": "@kbn/shared-ux-file-picker", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFilePickerPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -43,7 +27,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.FilePicker.$1", + "id": "def-public.FilePicker.$1", "type": "Object", "tags": [], "label": "props", @@ -51,9 +35,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-picker", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFilePickerPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, "" @@ -71,7 +55,7 @@ "interfaces": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Interface", "tags": [], "label": "Props", @@ -79,9 +63,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-picker", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFilePickerPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, "" @@ -92,7 +76,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.kind", + "id": "def-public.Props.kind", "type": "Uncategorized", "tags": [], "label": "kind", @@ -108,7 +92,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.shouldAllowDelete", + "id": "def-public.Props.shouldAllowDelete", "type": "Function", "tags": [], "label": "shouldAllowDelete", @@ -132,7 +116,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.shouldAllowDelete.$1", + "id": "def-public.Props.shouldAllowDelete.$1", "type": "Object", "tags": [], "label": "file", @@ -157,7 +141,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onClose", + "id": "def-public.Props.onClose", "type": "Function", "tags": [], "label": "onClose", @@ -175,7 +159,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onDone", + "id": "def-public.Props.onDone", "type": "Function", "tags": [], "label": "onDone", @@ -199,7 +183,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onDone.$1", + "id": "def-public.Props.onDone.$1", "type": "Array", "tags": [], "label": "files", @@ -224,7 +208,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onUpload", + "id": "def-public.Props.onUpload", "type": "Function", "tags": [], "label": "onUpload", @@ -235,9 +219,9 @@ "((done: ", { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.DoneNotification", + "section": "def-public.DoneNotification", "text": "DoneNotification" }, "[]) => void) | undefined" @@ -248,7 +232,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onUpload.$1", + "id": "def-public.Props.onUpload.$1", "type": "Array", "tags": [], "label": "done", @@ -256,9 +240,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.DoneNotification", + "section": "def-public.DoneNotification", "text": "DoneNotification" }, "[]" @@ -273,7 +257,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.uploadMeta", + "id": "def-public.Props.uploadMeta", "type": "Unknown", "tags": [], "label": "uploadMeta", @@ -289,7 +273,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.pageSize", + "id": "def-public.Props.pageSize", "type": "number", "tags": [], "label": "pageSize", @@ -305,7 +289,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.multiple", + "id": "def-public.Props.multiple", "type": "CompoundType", "tags": [ "default" @@ -328,5 +312,21 @@ "enums": [], "misc": [], "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index 1b3576896484e..1aca6e72435d3 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; @@ -23,11 +23,11 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh |-------------------|-----------|------------------------|-----------------| | 14 | 0 | 6 | 0 | -## Common +## Client ### Functions - + ### Interfaces - + diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 60b250e385b9d..0c84859e5fb37 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.devdocs.json b/api_docs/kbn_shared_ux_file_upload.devdocs.json index a3ad0f3d41893..131c7f36c33a9 100644 --- a/api_docs/kbn_shared_ux_file_upload.devdocs.json +++ b/api_docs/kbn_shared_ux_file_upload.devdocs.json @@ -1,27 +1,11 @@ { "id": "@kbn/shared-ux-file-upload", "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { "classes": [], "functions": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.FileUpload", + "id": "def-public.FileUpload", "type": "Function", "tags": [], "label": "FileUpload", @@ -30,9 +14,9 @@ "(props: ", { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.FileUploadProps", + "section": "def-public.FileUploadProps", "text": "FileUploadProps" }, ") => React.JSX.Element" @@ -43,7 +27,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.FileUpload.$1", + "id": "def-public.FileUpload.$1", "type": "CompoundType", "tags": [], "label": "props", @@ -51,9 +35,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.FileUploadProps", + "section": "def-public.FileUploadProps", "text": "FileUploadProps" } ], @@ -70,7 +54,7 @@ "interfaces": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.DoneNotification", + "id": "def-public.DoneNotification", "type": "Interface", "tags": [], "label": "DoneNotification", @@ -78,9 +62,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.DoneNotification", + "section": "def-public.DoneNotification", "text": "DoneNotification" }, "" @@ -91,7 +75,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.DoneNotification.id", + "id": "def-public.DoneNotification.id", "type": "string", "tags": [], "label": "id", @@ -102,7 +86,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.DoneNotification.kind", + "id": "def-public.DoneNotification.kind", "type": "string", "tags": [], "label": "kind", @@ -113,7 +97,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.DoneNotification.fileJSON", + "id": "def-public.DoneNotification.fileJSON", "type": "Object", "tags": [], "label": "fileJSON", @@ -140,7 +124,7 @@ "misc": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.FileUploadProps", + "id": "def-public.FileUploadProps", "type": "Type", "tags": [], "label": "FileUploadProps", @@ -156,5 +140,21 @@ } ], "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index cc92bd7686b6a..dd3bdacc27046 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; @@ -23,14 +23,14 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh |-------------------|-----------|------------------------|-----------------| | 7 | 0 | 7 | 1 | -## Common +## Client ### Functions - + ### Interfaces - + ### Consts, variables and types - + diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index ba6df33a865c1..adb9d919784cb 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index d1908e5a20433..41b5243156f68 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 68514ec9753e4..e58c96f2d5c4d 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 2604477f27e1b..78b8a5053b272 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 26126b89dc85d..fcea5cc84e378 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 471a0023258bb..e37641d0c7d13 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 265d15cbaf4d2..3142a9cc969b8 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 83e3c89c5514a..d9ef50beace83 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 9913f12207e24..4b1e6f89f851c 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 067d0719f9b2a..4d12b538f14cc 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 28f6bbf10e0c7..75770ef30745c 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index f3f85740ba4d2..425b93ebdfd2b 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 9d2b9dff40a0c..ebc831f8e08bb 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 19760b957cb9a..03febd38af5c3 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index e970f0fc22c63..aaafccdaf9e04 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 5aa822627f552..b12a79cc80e34 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index 240e58147a121..4b1ea2e51abd8 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 8642aa9ac4f84..5d45f0d8b4146 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index 1a02155b99cbf..570aef1e686b2 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 95ebb75b17f29..fe88f898e5388 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 18ffcec0fd798..4faafc232677a 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index 32cbf9523ead0..af909d0900d84 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 55867fa84a977..2867ea43422af 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index a69c91c82d529..b08a2a87367fd 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_table_persist.mdx b/api_docs/kbn_shared_ux_table_persist.mdx index 23c94ff6dd4fa..1a7d837a66a93 100644 --- a/api_docs/kbn_shared_ux_table_persist.mdx +++ b/api_docs/kbn_shared_ux_table_persist.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-table-persist title: "@kbn/shared-ux-table-persist" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-table-persist plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-table-persist'] --- import kbnSharedUxTablePersistObj from './kbn_shared_ux_table_persist.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 2cc2dc17261d9..9287ffe3e9611 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index 434db5f52535c..2e67a7d3d3106 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -25,7 +25,7 @@ "tags": [], "label": "Duration", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -39,7 +39,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -53,7 +53,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -74,7 +74,7 @@ "text": "DurationUnit" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -107,7 +107,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -127,7 +127,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -153,7 +153,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -173,7 +173,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -199,7 +199,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -219,7 +219,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -245,7 +245,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -265,7 +265,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -283,7 +283,7 @@ "signature": [ "() => string" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -299,7 +299,7 @@ "signature": [ "() => number" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -315,7 +315,7 @@ "signature": [ "() => number" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -343,7 +343,7 @@ "text": "DurationUnit" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -357,7 +357,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -384,7 +384,7 @@ }, ") => moment.unitOfTime.Diff" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -404,7 +404,7 @@ "text": "DurationUnit" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -432,7 +432,7 @@ }, "" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -443,7 +443,7 @@ "tags": [], "label": "total", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false }, @@ -454,7 +454,7 @@ "tags": [], "label": "page", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false }, @@ -465,7 +465,7 @@ "tags": [], "label": "perPage", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false }, @@ -479,7 +479,7 @@ "signature": [ "T[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false } @@ -493,7 +493,7 @@ "tags": [], "label": "Pagination", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -504,7 +504,7 @@ "tags": [], "label": "page", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false }, @@ -515,7 +515,7 @@ "tags": [], "label": "perPage", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false } @@ -531,7 +531,7 @@ "tags": [], "label": "DurationUnit", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -548,7 +548,7 @@ "signature": [ "\"*\"" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -563,7 +563,7 @@ "signature": [ "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -578,7 +578,7 @@ "signature": [ "{ type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -593,7 +593,7 @@ "signature": [ "\"occurrences\" | \"timeslices\"" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -608,7 +608,7 @@ "signature": [ "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; preventInitialBackfill?: boolean | undefined; syncField?: string | null | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; revision?: number | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -663,7 +663,7 @@ }, " | undefined; preventInitialBackfill?: boolean | undefined; syncField?: string | null | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; revision?: number | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -678,7 +678,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -693,7 +693,7 @@ "signature": [ "{ list: ({ sloId: string; instanceId: string; } & { excludeRollup?: boolean | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -708,7 +708,7 @@ "signature": [ "{ list: ({ sloId: string; instanceId: string; } & { excludeRollup?: boolean | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -747,7 +747,7 @@ }, " | undefined; }; groupBy: string | string[]; revision: number; } & { remoteName?: string | undefined; range?: { from: Date; to: Date; } | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -762,7 +762,7 @@ "signature": [ "{ sloId: string; instanceId: string; data: { date: string; status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }[]; }[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -777,7 +777,7 @@ "signature": [ "{ list: { sloId: string; sloInstanceId: string; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -792,7 +792,7 @@ "signature": [ "{ sloId: string; sloInstanceId: string; sloRevision: number; state: \"running\" | \"indexing\" | \"no_data\" | \"stale\"; health: { overall: \"healthy\" | \"unhealthy\"; rollup: \"healthy\" | \"unhealthy\"; summary: \"healthy\" | \"unhealthy\"; }; }[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -807,7 +807,7 @@ "signature": [ "({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -822,7 +822,7 @@ "signature": [ "{ search?: string | undefined; includeOutdatedOnly?: boolean | undefined; page?: string | undefined; perPage?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -837,7 +837,7 @@ "signature": [ "{ page: number; perPage: number; total: number; results: { id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -852,7 +852,7 @@ "signature": [ "{ page?: string | undefined; perPage?: string | undefined; groupBy?: \"status\" | \"slo.instanceId\" | \"_index\" | \"ungrouped\" | \"slo.tags\" | \"slo.indicator.type\" | undefined; groupsFilter?: string | string[] | undefined; kqlQuery?: string | undefined; filters?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -867,7 +867,7 @@ "signature": [ "{ page: number; perPage: number; total: number; results: { group: string; groupBy: \"status\" | \"slo.instanceId\" | \"_index\" | \"ungrouped\" | \"slo.tags\" | \"slo.indicator.type\"; summary: { total: number; worst: { sliValue: number; status: string; slo: { id: string; instanceId: string; name: string; groupings: { [x: string]: unknown; }; }; }; violated: number; healthy: number; degrading: number; noData: number; }; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -882,7 +882,7 @@ "signature": [ "{ filters?: string | undefined; kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | \"burn_rate_5m\" | \"burn_rate_1h\" | \"burn_rate_1d\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; hideStale?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -897,7 +897,7 @@ "signature": [ "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -920,7 +920,7 @@ }, " | undefined; }) | undefined; instanceId?: string | undefined; groupBy?: string | string[] | undefined; remoteName?: string | undefined; groupings?: { [x: string]: unknown; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -935,7 +935,7 @@ "signature": [ "({ date: string; sliValue: number | null; } & { events?: { good: number; bad: number; total: number; } | undefined; })[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -950,7 +950,7 @@ "signature": [ "{ burnRates: { name: string; burnRate: number; sli: number; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -965,7 +965,7 @@ "signature": [ "{ instanceId: string; groupingKey: string; } & { search?: string | undefined; afterKey?: string | undefined; size?: string | undefined; excludeStale?: boolean | undefined; remoteName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -980,7 +980,7 @@ "signature": [ "{ groupingKey: string; values: string[]; afterKey: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -995,7 +995,7 @@ "signature": [ "{ instanceId?: string | undefined; remoteName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1010,7 +1010,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1025,7 +1025,7 @@ "signature": [ "{ useAllRemoteClusters: boolean; selectedRemoteClusters: string[]; staleThresholdInHours: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1040,7 +1040,7 @@ "signature": [ "{ tags: { label: string; value: string; count: number; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1055,7 +1055,7 @@ "signature": [ "{ [x: string]: string | number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1070,7 +1070,7 @@ "signature": [ "{ total: number; worst: { sliValue: number; status: string; slo: { id: string; instanceId: string; name: string; groupings: { [x: string]: unknown; }; }; }; violated: number; healthy: number; degrading: number; noData: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1085,7 +1085,7 @@ "signature": [ "{ type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1100,7 +1100,7 @@ "signature": [ "{ date: string; status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1115,7 +1115,7 @@ "signature": [ "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1130,7 +1130,7 @@ "signature": [ "\"sli.apm.transactionDuration\" | \"sli.apm.transactionErrorRate\" | \"sli.synthetics.availability\" | \"sli.kql.custom\" | \"sli.metric.custom\" | \"sli.metric.timeslice\" | \"sli.histogram.custom\"" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1145,7 +1145,7 @@ "signature": [ "{ type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1160,7 +1160,7 @@ "signature": [ "{ kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1175,7 +1175,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/manage.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/manage.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1190,7 +1190,7 @@ "signature": [ "{ type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1205,7 +1205,7 @@ "signature": [ "{ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1220,7 +1220,7 @@ "signature": [ "{ useAllRemoteClusters: boolean; selectedRemoteClusters: string[]; staleThresholdInHours: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1235,7 +1235,7 @@ "signature": [ "{ useAllRemoteClusters: boolean; selectedRemoteClusters: string[]; staleThresholdInHours: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1250,7 +1250,7 @@ "signature": [ "string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1265,7 +1265,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1280,7 +1280,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1295,7 +1295,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1310,7 +1310,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1325,7 +1325,7 @@ "signature": [ "{ type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1340,7 +1340,7 @@ "signature": [ "{ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1355,7 +1355,7 @@ "signature": [ "{ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1370,7 +1370,7 @@ "signature": [ "{ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1385,7 +1385,7 @@ "signature": [ "{ type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1400,7 +1400,7 @@ "signature": [ "\"rolling\" | \"calendarAligned\"" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1415,7 +1415,7 @@ "signature": [ "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | undefined; timeWindow?: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }) | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; preventInitialBackfill?: boolean | undefined; syncField?: string | null | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1470,7 +1470,7 @@ }, " | undefined; preventInitialBackfill?: boolean | undefined; syncField?: string | null | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1485,7 +1485,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1507,7 +1507,7 @@ "StringC", "]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1535,7 +1535,7 @@ "StringC", "]>>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1643,7 +1643,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1659,7 +1659,7 @@ "LiteralC", "<\"sli.apm.transactionDuration\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1765,7 +1765,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1781,7 +1781,7 @@ "LiteralC", "<\"sli.apm.transactionErrorRate\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1801,7 +1801,7 @@ "LiteralC", "<\"timeslices\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1829,7 +1829,7 @@ "LiteralC", "<\"calendarAligned\">; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1845,7 +1845,7 @@ "LiteralC", "<\"calendarAligned\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3425,7 +3425,7 @@ "NumberC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3443,7 +3443,7 @@ "Type", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3463,7 +3463,7 @@ "Type", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3479,7 +3479,7 @@ "Type", "" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3511,7 +3511,7 @@ "BooleanC", "; }>]>>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3531,7 +3531,7 @@ "Type", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3555,7 +3555,7 @@ }, ", string, unknown>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/duration.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3579,7 +3579,7 @@ "BooleanC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3689,7 +3689,7 @@ "Type", "; }>; }>]>>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3743,7 +3743,7 @@ "BooleanC", "; }>; }>>; }>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3773,7 +3773,7 @@ "StringC", "]>; }>>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3831,7 +3831,7 @@ "LiteralC", "<\"unhealthy\">]>; }>; }>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3891,7 +3891,7 @@ "AnyC", "; }>]>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3917,7 +3917,7 @@ "StringC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5513,7 +5513,7 @@ "NumberC", "; }>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5561,7 +5561,7 @@ "StringC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5635,7 +5635,7 @@ "NumberC", "; }>; }>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5685,7 +5685,7 @@ "Type", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7359,7 +7359,7 @@ "StringC", "; }>; }>]>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8877,7 +8877,7 @@ "UnknownC", ">; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8915,7 +8915,7 @@ "NumberC", "; }>; }>]>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8965,7 +8965,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8991,7 +8991,7 @@ "NumberC", "; }>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9031,7 +9031,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9059,7 +9059,7 @@ "UndefinedC", "]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9093,7 +9093,7 @@ "StringC", "; }>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10757,7 +10757,7 @@ "StringC", "; }>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10783,7 +10783,7 @@ "NumberC", "; }>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10811,7 +10811,7 @@ "StringC", "]>>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10835,7 +10835,7 @@ "NumberC", "]>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10881,7 +10881,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10901,7 +10901,7 @@ "LiteralC", "<\"unhealthy\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -11253,7 +11253,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -11269,7 +11269,7 @@ "LiteralC", "<\"sli.histogram.custom\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -11309,7 +11309,7 @@ "BooleanC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -12769,7 +12769,7 @@ "StringC", "; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -12785,7 +12785,7 @@ "Type", "" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -12815,7 +12815,7 @@ "LiteralC", "<\"sli.histogram.custom\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13007,7 +13007,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13023,7 +13023,7 @@ "LiteralC", "<\"sli.kql.custom\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13038,7 +13038,7 @@ "signature": [ "StringC" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13102,7 +13102,7 @@ "AnyC", "; }>]>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13122,7 +13122,7 @@ "Type", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/manage.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/manage.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13146,7 +13146,7 @@ "StringC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13226,7 +13226,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13304,7 +13304,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13664,7 +13664,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13680,7 +13680,7 @@ "LiteralC", "<\"sli.metric.custom\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13714,7 +13714,7 @@ }, ", string, unknown>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13730,7 +13730,7 @@ "LiteralC", "<\"occurrences\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13774,7 +13774,7 @@ "NullC", "]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13794,7 +13794,7 @@ "NumberC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13820,7 +13820,7 @@ "NumberC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13844,7 +13844,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13912,7 +13912,7 @@ "AnyC", "; }>]>>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13932,7 +13932,7 @@ "StringC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13952,7 +13952,7 @@ "Type", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -15538,7 +15538,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -15566,7 +15566,7 @@ "LiteralC", "<\"rolling\">; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -15582,7 +15582,7 @@ "LiteralC", "<\"rolling\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -15630,7 +15630,7 @@ "NullC", "]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17216,7 +17216,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17280,7 +17280,7 @@ "NumberC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17296,7 +17296,7 @@ "Type", "" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17314,7 +17314,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17338,7 +17338,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19002,7 +19002,7 @@ "StringC", "; }>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19026,7 +19026,7 @@ "LiteralC", "<\"stale\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19050,7 +19050,7 @@ "LiteralC", "<\"VIOLATED\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19104,7 +19104,7 @@ "NullC", "]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19234,7 +19234,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19250,7 +19250,7 @@ "LiteralC", "<\"sli.synthetics.availability\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19268,7 +19268,7 @@ "StringC", ">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19286,7 +19286,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19366,7 +19366,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19378,7 +19378,7 @@ "tags": [], "label": "timesliceMetricComparatorMapping", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -19389,7 +19389,7 @@ "tags": [], "label": "GT", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false }, @@ -19400,7 +19400,7 @@ "tags": [], "label": "GTE", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false }, @@ -19411,7 +19411,7 @@ "tags": [], "label": "LT", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false }, @@ -19422,7 +19422,7 @@ "tags": [], "label": "LTE", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false } @@ -19502,7 +19502,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19796,7 +19796,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19812,7 +19812,7 @@ "LiteralC", "<\"sli.metric.timeslice\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20026,7 +20026,7 @@ "AnyC", "; }>]>>; }>]>; }>]>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20108,7 +20108,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20124,7 +20124,7 @@ "LiteralC", "<\"timeslices\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20168,7 +20168,7 @@ "LiteralC", "<\"calendarAligned\">; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20188,7 +20188,7 @@ "LiteralC", "<\"calendarAligned\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -21764,7 +21764,7 @@ "StringC", "]>>]>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -23350,7 +23350,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 0e07f12737d33..14d75f78bef21 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 266e25316751e..a435209eff110 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index 6df76da5ee1c7..339b29e902134 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_sse_utils.devdocs.json b/api_docs/kbn_sse_utils.devdocs.json index 967f282e27735..7487ff3e0983e 100644 --- a/api_docs/kbn_sse_utils.devdocs.json +++ b/api_docs/kbn_sse_utils.devdocs.json @@ -35,7 +35,7 @@ }, " extends Error" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -49,7 +49,7 @@ "signature": [ "any" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -63,7 +63,7 @@ "signature": [ "TCode" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -78,7 +78,7 @@ "signature": [ "string" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -93,7 +93,7 @@ "signature": [ "TMeta" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -113,7 +113,7 @@ "ServerSentEventType", ".error; }" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -135,7 +135,7 @@ "(message: string) => ", "ServerSentEventInternalError" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -149,7 +149,7 @@ "signature": [ "string" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -169,7 +169,7 @@ "(message: string, status: number) => ", "ServerSentEventRequestError" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -183,7 +183,7 @@ "signature": [ "string" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -198,7 +198,7 @@ "signature": [ "number" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -217,7 +217,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -231,7 +231,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -250,7 +250,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -264,7 +264,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -283,7 +283,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -297,7 +297,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -320,7 +320,7 @@ "signature": [ "Record & { type: string; }" ], - "path": "packages/kbn-sse-utils/src/events.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -335,7 +335,7 @@ "signature": [ "keyof TData extends \"type\" ? never : TData & { type: TEventType; }" ], - "path": "packages/kbn-sse-utils/src/events.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_sse_utils.mdx b/api_docs/kbn_sse_utils.mdx index c7e2ed7c6e7ff..7884c24da843a 100644 --- a/api_docs/kbn_sse_utils.mdx +++ b/api_docs/kbn_sse_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils title: "@kbn/sse-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils'] --- import kbnSseUtilsObj from './kbn_sse_utils.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_client.devdocs.json b/api_docs/kbn_sse_utils_client.devdocs.json index 40d155d0755b0..9531b9e1d515d 100644 --- a/api_docs/kbn_sse_utils_client.devdocs.json +++ b/api_docs/kbn_sse_utils_client.devdocs.json @@ -33,7 +33,7 @@ "StreamedHttpResponse", ", T>" ], - "path": "packages/kbn-sse-utils-client/src/http_response_into_observable.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/kbn_sse_utils_client.mdx b/api_docs/kbn_sse_utils_client.mdx index 71c40e3e32ecf..e821fe28b007e 100644 --- a/api_docs/kbn_sse_utils_client.mdx +++ b/api_docs/kbn_sse_utils_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-client title: "@kbn/sse-utils-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-client plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-client'] --- import kbnSseUtilsClientObj from './kbn_sse_utils_client.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_server.devdocs.json b/api_docs/kbn_sse_utils_server.devdocs.json index dbf75dfc2083a..84ba6735488bb 100644 --- a/api_docs/kbn_sse_utils_server.devdocs.json +++ b/api_docs/kbn_sse_utils_server.devdocs.json @@ -29,10 +29,18 @@ "signature": [ "(source$: ", "Observable", - " & { type: string; }>) => ", + " & { type: string; }>, {\n logger,\n signal,\n }: { logger: Pick<", + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.Logger", + "text": "Logger" + }, + ", \"error\" | \"debug\">; signal: AbortSignal; }) => ", "PassThrough" ], - "path": "packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -47,10 +55,99 @@ "Observable", " & { type: string; }>" ], - "path": "packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/sse-utils-server", + "id": "def-common.observableIntoEventSourceStream.$2", + "type": "Object", + "tags": [], + "label": "{\n logger,\n signal,\n }", + "description": [], + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/sse-utils-server", + "id": "def-common.observableIntoEventSourceStream.$2.logger", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + "{ error: (errorOrMessage: Error | ", + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.LogMessageSource", + "text": "LogMessageSource" + }, + ", meta?: Meta | undefined) => void; debug: (message: ", + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.LogMessageSource", + "text": "LogMessageSource" + }, + ", meta?: Meta | undefined) => void; }" + ], + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/sse-utils-server", + "id": "def-common.observableIntoEventSourceStream.$2.signal", + "type": "Object", + "tags": [], + "label": "signal", + "description": [], + "signature": [ + "AbortSignal" + ], + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ], "returnComment": [], @@ -72,7 +169,7 @@ "Observable", "" ], - "path": "packages/kbn-sse-utils-server/src/supertest_to_observable.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/supertest_to_observable.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -86,7 +183,7 @@ "signature": [ "Test" ], - "path": "packages/kbn-sse-utils-server/src/supertest_to_observable.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/supertest_to_observable.ts", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/kbn_sse_utils_server.mdx b/api_docs/kbn_sse_utils_server.mdx index ba641ade176f3..bda5f1bb9c315 100644 --- a/api_docs/kbn_sse_utils_server.mdx +++ b/api_docs/kbn_sse_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-server title: "@kbn/sse-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-server plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-server'] --- import kbnSseUtilsServerObj from './kbn_sse_utils_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 3 | 0 | +| 7 | 0 | 6 | 0 | ## Common diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 713b5a6e82643..7934941750586 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 434de060b7cb1..157f7946ca17f 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 5e4273929e997..184e68ab8e0da 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_synthetics_e2e.devdocs.json b/api_docs/kbn_synthetics_e2e.devdocs.json index 279942a1d8bca..c1cf32a65f2e8 100644 --- a/api_docs/kbn_synthetics_e2e.devdocs.json +++ b/api_docs/kbn_synthetics_e2e.devdocs.json @@ -17,345 +17,7 @@ "objects": [] }, "common": { - "classes": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner", - "type": "Class", - "tags": [], - "label": "SyntheticsRunner", - "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.getService", - "type": "Any", - "tags": [], - "label": "getService", - "description": [], - "signature": [ - "any" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.kibanaUrl", - "type": "string", - "tags": [], - "label": "kibanaUrl", - "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.testFilesLoaded", - "type": "boolean", - "tags": [], - "label": "testFilesLoaded", - "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.params", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "ArgParams" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.Unnamed.$1", - "type": "Any", - "tags": [], - "label": "getService", - "description": [], - "signature": [ - "any" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.Unnamed.$2", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "ArgParams" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.setup", - "type": "Function", - "tags": [], - "label": "setup", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.createTestUsers", - "type": "Function", - "tags": [], - "label": "createTestUsers", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestFiles", - "type": "Function", - "tags": [], - "label": "loadTestFiles", - "description": [], - "signature": [ - "(callback: (reload?: boolean | undefined) => Promise, reload?: boolean) => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestFiles.$1", - "type": "Function", - "tags": [], - "label": "callback", - "description": [], - "signature": [ - "(reload?: boolean | undefined) => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestFiles.$2", - "type": "boolean", - "tags": [], - "label": "reload", - "description": [], - "signature": [ - "boolean" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestData", - "type": "Function", - "tags": [], - "label": "loadTestData", - "description": [], - "signature": [ - "(e2eDir: string, dataArchives: string[]) => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestData.$1", - "type": "string", - "tags": [], - "label": "e2eDir", - "description": [], - "signature": [ - "string" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestData.$2", - "type": "Array", - "tags": [], - "label": "dataArchives", - "description": [], - "signature": [ - "string[]" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.getKibanaUrl", - "type": "Function", - "tags": [], - "label": "getKibanaUrl", - "description": [], - "signature": [ - "() => string" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.getElasticsearchUrl", - "type": "Function", - "tags": [], - "label": "getElasticsearchUrl", - "description": [], - "signature": [ - "() => string" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.run", - "type": "Function", - "tags": [], - "label": "run", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.assertResults", - "type": "Function", - "tags": [], - "label": "assertResults", - "description": [], - "signature": [ - "(results: { [x: string]: ", - "JourneyResult", - "; }) => void" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.assertResults.$1", - "type": "Object", - "tags": [], - "label": "results", - "description": [], - "signature": [ - "{ [x: string]: ", - "JourneyResult", - "; }" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.cleanUp", - "type": "Function", - "tags": [], - "label": "cleanUp", - "description": [], - "signature": [ - "() => void" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], + "classes": [], "functions": [ { "parentPluginId": "@kbn/synthetics-e2e", @@ -369,7 +31,7 @@ "Page", "; isRemote?: boolean | undefined; username?: string | undefined; password?: string | undefined; }) => { waitForLoadingToFinish(): Promise; loginToKibana(usernameT?: \"editor\" | \"viewer\" | undefined, passwordT?: string | undefined): Promise; }" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -380,7 +42,7 @@ "tags": [], "label": "{\n page,\n isRemote = false,\n username = 'elastic',\n password = 'changeme',\n}", "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -394,7 +56,7 @@ "signature": [ "Page" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false }, @@ -408,7 +70,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false }, @@ -422,7 +84,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false }, @@ -436,7 +98,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false } @@ -462,7 +124,7 @@ "ElementHandle", ">; }" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -473,7 +135,7 @@ "tags": [], "label": "{ page }", "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -487,7 +149,7 @@ "signature": [ "Page" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx", "deprecated": false, "trackAdoption": false } @@ -501,22 +163,6 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.argv", - "type": "Object", - "tags": [], - "label": "argv", - "description": [], - "signature": [ - "{ [x: string]: unknown; headless: boolean; bail: boolean; grep: undefined; _: string[]; $0: string; }" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/parse_args_params.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - } - ] + "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_synthetics_e2e.mdx b/api_docs/kbn_synthetics_e2e.mdx index 21c5a7dfe8815..a868381aa1756 100644 --- a/api_docs/kbn_synthetics_e2e.mdx +++ b/api_docs/kbn_synthetics_e2e.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-e2e title: "@kbn/synthetics-e2e" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-e2e plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-e2e'] --- import kbnSyntheticsE2eObj from './kbn_synthetics_e2e.devdocs.json'; @@ -21,16 +21,10 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 32 | 2 | 32 | 0 | +| 9 | 0 | 9 | 0 | ## Common -### Objects - - ### Functions -### Classes - - diff --git a/api_docs/kbn_synthetics_private_location.mdx b/api_docs/kbn_synthetics_private_location.mdx index fcc0b28808d36..ef34447ce016b 100644 --- a/api_docs/kbn_synthetics_private_location.mdx +++ b/api_docs/kbn_synthetics_private_location.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-private-location title: "@kbn/synthetics-private-location" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-private-location plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-private-location'] --- import kbnSyntheticsPrivateLocationObj from './kbn_synthetics_private_location.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index bf80b02cdbb5f..12fac3e9b5ed9 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 90b99d676f20b..f2eba58b7745d 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index c2087a4d8dcc4..2fa92bc8e6b33 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index a4c009f13823c..d2d76c9e2e243 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index 3eee4b5fcf634..352b39ae33702 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_timerange.devdocs.json b/api_docs/kbn_timerange.devdocs.json index ed4a19c41a6e9..6c66de05c49d4 100644 --- a/api_docs/kbn_timerange.devdocs.json +++ b/api_docs/kbn_timerange.devdocs.json @@ -124,6 +124,92 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getOffsetFromNowInSeconds", + "type": "Function", + "tags": [], + "label": "getOffsetFromNowInSeconds", + "description": [], + "signature": [ + "(epochDate: number) => number" + ], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getOffsetFromNowInSeconds.$1", + "type": "number", + "tags": [], + "label": "epochDate", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getTimeDifferenceInSeconds", + "type": "Function", + "tags": [], + "label": "getTimeDifferenceInSeconds", + "description": [], + "signature": [ + "({\n startDate,\n endDate,\n}: { startDate: number; endDate: number; }) => number" + ], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getTimeDifferenceInSeconds.$1", + "type": "Object", + "tags": [], + "label": "{\n startDate,\n endDate,\n}", + "description": [], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getTimeDifferenceInSeconds.$1.startDate", + "type": "number", + "tags": [], + "label": "startDate", + "description": [], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getTimeDifferenceInSeconds.$1.endDate", + "type": "number", + "tags": [], + "label": "endDate", + "description": [], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [], diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index c623e767d0235..f224f46fbe206 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 8 | 0 | 8 | 0 | +| 14 | 0 | 14 | 0 | ## Common diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 7e39333f85ded..6dbfed98d3042 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_transpose_utils.mdx b/api_docs/kbn_transpose_utils.mdx index ee25d7b22877f..9d4285b7df573 100644 --- a/api_docs/kbn_transpose_utils.mdx +++ b/api_docs/kbn_transpose_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-transpose-utils title: "@kbn/transpose-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/transpose-utils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/transpose-utils'] --- import kbnTransposeUtilsObj from './kbn_transpose_utils.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 1ed43aacfbebd..6cde720510f60 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index ab433f5c8f1c8..d8764e213b9c4 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 089172c24b07f..8058784fcddf7 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.devdocs.json b/api_docs/kbn_typed_react_router_config.devdocs.json index f20c6013c647f..669b8705b459c 100644 --- a/api_docs/kbn_typed_react_router_config.devdocs.json +++ b/api_docs/kbn_typed_react_router_config.devdocs.json @@ -19,7 +19,7 @@ }, " extends Error" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -33,7 +33,7 @@ "signature": [ "any" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -47,7 +47,7 @@ "signature": [ "string" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -70,7 +70,7 @@ "signature": [ "({\n children,\n}: { children: React.ReactNode; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -81,7 +81,7 @@ "tags": [], "label": "{\n children,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -95,7 +95,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", "deprecated": false, "trackAdoption": false } @@ -123,7 +123,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -137,7 +137,7 @@ "signature": [ "TRoutes" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -158,7 +158,7 @@ "RouterBreadcrumb", "" ], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -175,7 +175,7 @@ "signature": [ "() => UseBreadcrumbs" ], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -208,7 +208,7 @@ }, ">; element: React.ReactElement>; children: React.ReactElement>; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -219,7 +219,7 @@ "tags": [], "label": "{\n match,\n element,\n children,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -248,7 +248,7 @@ }, ">" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false }, @@ -262,7 +262,7 @@ "signature": [ "React.ReactElement>" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false }, @@ -276,7 +276,7 @@ "signature": [ "React.ReactElement>" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false } @@ -296,7 +296,7 @@ "signature": [ "() => React.ReactElement> | null" ], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -313,7 +313,7 @@ "signature": [ "({\n element,\n children,\n}: { element: React.ReactElement>; children: React.ReactNode; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -324,7 +324,7 @@ "tags": [], "label": "{\n element,\n children,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -338,7 +338,7 @@ "signature": [ "React.ReactElement>" ], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false }, @@ -352,7 +352,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false } @@ -388,7 +388,7 @@ }, ">; children: React.ReactNode; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -399,7 +399,7 @@ "tags": [], "label": "{\n router,\n children,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -428,7 +428,7 @@ }, ">" ], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false }, @@ -442,7 +442,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false } @@ -462,7 +462,7 @@ "signature": [ "() => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/route_renderer.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/route_renderer.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -497,7 +497,7 @@ "History", "; children?: React.ReactNode; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -508,7 +508,7 @@ "tags": [], "label": "{\n children,\n router,\n history,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -537,7 +537,7 @@ }, ">" ], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false }, @@ -552,7 +552,7 @@ "History", "" ], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false }, @@ -566,7 +566,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false } @@ -602,7 +602,7 @@ }, ">; element: React.ReactElement>; }" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -635,7 +635,7 @@ }, ">[]" ], - "path": "packages/kbn-typed-react-router-config/src/use_match_routes.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_match_routes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -649,7 +649,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/use_match_routes.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_match_routes.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -676,7 +676,7 @@ }, " | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/use_params.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_params.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -690,7 +690,7 @@ "signature": [ "any[]" ], - "path": "packages/kbn-typed-react-router-config/src/use_params.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_params.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -709,7 +709,7 @@ "signature": [ "() => string" ], - "path": "packages/kbn-typed-react-router-config/src/use_route_path.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_route_path.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -734,7 +734,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -750,7 +750,7 @@ "tags": [], "label": "DefaultOutput", "description": [], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -764,7 +764,7 @@ "signature": [ "{}" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -778,7 +778,7 @@ "signature": [ "{}" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -792,7 +792,7 @@ "tags": [], "label": "Route", "description": [], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -806,7 +806,7 @@ "signature": [ "React.ReactElement>" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -827,7 +827,7 @@ }, " | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -842,7 +842,7 @@ "Type", " | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -856,7 +856,7 @@ "signature": [ "Record> | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -870,7 +870,7 @@ "signature": [ "React.ReactElement> | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -894,7 +894,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -908,7 +908,7 @@ "signature": [ "TRoute & { path: string; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -926,7 +926,7 @@ "TypeOf", " : {}; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -950,7 +950,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1000,7 +1000,7 @@ }, ">>; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1014,7 +1014,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1030,7 +1030,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1084,7 +1084,7 @@ }, ">>; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1099,7 +1099,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1271,7 +1271,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1285,7 +1285,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1301,7 +1301,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1473,7 +1473,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1487,7 +1487,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1503,7 +1503,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1518,7 +1518,7 @@ "signature": [ "TOptional" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1690,7 +1690,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1704,7 +1704,7 @@ "signature": [ "T1" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1719,7 +1719,7 @@ "signature": [ "T2" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1735,7 +1735,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1907,7 +1907,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1921,7 +1921,7 @@ "signature": [ "T1" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1936,7 +1936,7 @@ "signature": [ "T2" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1951,7 +1951,7 @@ "signature": [ "T3" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1967,7 +1967,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2139,7 +2139,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2153,7 +2153,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2169,7 +2169,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2184,7 +2184,7 @@ "signature": [ "TOptional" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2226,7 +2226,7 @@ }, ">) => string" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2240,7 +2240,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2270,7 +2270,7 @@ }, ">" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2296,7 +2296,7 @@ }, ") => string" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2316,7 +2316,7 @@ "text": "RouteWithPath" } ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2342,7 +2342,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2356,7 +2356,7 @@ "signature": [ "string" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2391,7 +2391,7 @@ "text": "Route" } ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2402,7 +2402,7 @@ "tags": [], "label": "path", "description": [], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -2425,7 +2425,7 @@ "ValuesType", "[key]>; }>[]" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2440,7 +2440,7 @@ "signature": [ "MapRoutes[TPath]" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2470,7 +2470,7 @@ "text": "DefaultOutput" } ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2505,7 +2505,7 @@ }, " : never); }>" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2528,7 +2528,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2545,7 +2545,7 @@ "RequiredKeys", " extends never ? [] | [TObject] : [TObject]" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2562,7 +2562,7 @@ "RequiredKeys", " extends never ? never : { params: TObject; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2593,7 +2593,7 @@ }, " : {})" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index e71c62047b2e0..ff8192983980b 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 91519393d174e..64f811f7358ad 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index 8ef4bbb1b2dd9..9152b328c0f33 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.devdocs.json b/api_docs/kbn_ui_theme.devdocs.json index 79750b38df53b..e4622567f99fb 100644 --- a/api_docs/kbn_ui_theme.devdocs.json +++ b/api_docs/kbn_ui_theme.devdocs.json @@ -99,23 +99,23 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/resolver/view/use_colors.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/resolver/view/use_colors.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/resolver/view/use_colors.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/resolver/view/use_colors.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/resolver/view/use_colors.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts" } ], "initialIsOpen": false diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 50f9bb53556b5..89281382725f6 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.devdocs.json b/api_docs/kbn_unified_data_table.devdocs.json index e3125eeb4e0b6..24f786f64dcb2 100644 --- a/api_docs/kbn_unified_data_table.devdocs.json +++ b/api_docs/kbn_unified_data_table.devdocs.json @@ -2310,11 +2310,11 @@ "references": [ { "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx" + "path": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.tsx" } ] }, diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index ecf1da9eed3f9..6b9cec4178d5b 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 9adf0481ac2ce..0c18e457ed8d7 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.devdocs.json b/api_docs/kbn_unified_field_list.devdocs.json index 09eff21c8fa75..8d9c7a262b95d 100644 --- a/api_docs/kbn_unified_field_list.devdocs.json +++ b/api_docs/kbn_unified_field_list.devdocs.json @@ -4656,7 +4656,7 @@ "label": "type", "description": [], "signature": [ - "\"normal\" | \"other\" | undefined" + "\"other\" | \"normal\" | undefined" ], "path": "packages/kbn-unified-field-list/src/components/field_stats/field_top_values_bucket.tsx", "deprecated": false, diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index a25c3dc4592e4..b2e79f38c5acf 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index a39c3736b9066..f1a8ae9f08904 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.devdocs.json b/api_docs/kbn_unsaved_changes_prompt.devdocs.json index 8db4d70da4ce5..dcbe7fbf4a5ab 100644 --- a/api_docs/kbn_unsaved_changes_prompt.devdocs.json +++ b/api_docs/kbn_unsaved_changes_prompt.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "({ hasUnsavedChanges, openConfirm, history, http, navigateToUrl, messageText, titleText, confirmButtonText, cancelButtonText, }: Props) => void" ], - "path": "packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", + "path": "src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "signature": [ "Props" ], - "path": "packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", + "path": "src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/kbn_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx index 58ddf3fd5c7a5..040be34a63c98 100644 --- a/api_docs/kbn_unsaved_changes_prompt.mdx +++ b/api_docs/kbn_unsaved_changes_prompt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt title: "@kbn/unsaved-changes-prompt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-prompt plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] --- import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index a00d54551c2d0..5c9a52b098a92 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.devdocs.json b/api_docs/kbn_user_profile_components.devdocs.json index 2824a1c269765..05679e867fa4d 100644 --- a/api_docs/kbn_user_profile_components.devdocs.json +++ b/api_docs/kbn_user_profile_components.devdocs.json @@ -1409,7 +1409,7 @@ "EuiSelectableLIOption", "<{}>> & ", "CommonProps", - " & { label: string; searchableLabel?: string | undefined; key?: string | undefined; checked?: \"mixed\" | \"on\" | \"off\" | undefined; disabled?: boolean | undefined; isGroupLabel?: false | undefined; prepend?: React.ReactNode; append?: React.ReactNode; ref?: ((optionIndex: number) => void) | undefined; id?: undefined; data?: { [key: string]: any; } | undefined; textWrap?: \"wrap\" | \"truncate\" | undefined; truncationProps?: Partial void) | undefined; id?: undefined; data?: { [key: string]: any; } | undefined; textWrap?: \"wrap\" | \"truncate\" | undefined; truncationProps?: Partial> | undefined; toolTipContent?: React.ReactNode; toolTipProps?: Partial void" + ], + "path": "packages/kbn-zod-helpers/src/non_empty_string.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/zod-helpers", + "id": "def-common.isNonEmptyString.$1", + "type": "string", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-zod-helpers/src/non_empty_string.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/zod-helpers", + "id": "def-common.isNonEmptyString.$2", + "type": "Object", + "tags": [], + "label": "ctx", + "description": [], + "signature": [ + "Zod.RefinementCtx" + ], + "path": "packages/kbn-zod-helpers/src/non_empty_string.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/zod-helpers", "id": "def-common.isValidDateMath", diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index 0885ecaca7222..4f10d56aaafbe 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-detection-rule-management](https://github.com/orgs/el | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 20 | 0 | 10 | 0 | +| 23 | 0 | 13 | 0 | ## Common diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 6aff7fa949e00..c86431c37f4d6 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index c893f92835185..f9f20e71faba9 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -966,6 +966,14 @@ { "plugin": "observabilityShared", "path": "x-pack/plugins/observability_solution/observability_shared/public/components/header_menu/header_menu_portal.tsx" + }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/components/header_menu/header_menu_portal.tsx" + }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/components/header_menu/header_menu_portal.tsx" } ], "children": [ @@ -1478,19 +1486,19 @@ "references": [ { "plugin": "aiAssistantManagementSelection", - "path": "src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx" + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx" }, { "plugin": "aiAssistantManagementSelection", - "path": "src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx" + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx" }, { "plugin": "observabilityAiAssistantManagement", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx" + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx" }, { "plugin": "observabilityAiAssistantManagement", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx" + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx" } ], "children": [ diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index be05b56eda8bb..16a0d78085d34 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 5396d6f8ed22b..153aa9684161d 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.devdocs.json b/api_docs/kubernetes_security.devdocs.json index 6be2f6084e66f..c075e2c35e797 100644 --- a/api_docs/kubernetes_security.devdocs.json +++ b/api_docs/kubernetes_security.devdocs.json @@ -11,7 +11,7 @@ "tags": [], "label": "KubernetesSecurityStart", "description": [], - "path": "x-pack/plugins/kubernetes_security/public/types.ts", + "path": "x-pack/solutions/security/plugins/kubernetes_security/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "KubernetesSecurityDeps", ") => JSX.Element" ], - "path": "x-pack/plugins/kubernetes_security/public/types.ts", + "path": "x-pack/solutions/security/plugins/kubernetes_security/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "KubernetesSecurityDeps" ], - "path": "x-pack/plugins/kubernetes_security/public/types.ts", + "path": "x-pack/solutions/security/plugins/kubernetes_security/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -65,7 +65,7 @@ "signature": [ "\"/kubernetes\"" ], - "path": "x-pack/plugins/kubernetes_security/common/constants.ts", + "path": "x-pack/solutions/security/plugins/kubernetes_security/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -80,7 +80,7 @@ "signature": [ "\"Kubernetes\"" ], - "path": "x-pack/plugins/kubernetes_security/common/constants.ts", + "path": "x-pack/solutions/security/plugins/kubernetes_security/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 2e7cf52c6ee91..b6a90c23048d6 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.devdocs.json b/api_docs/lens.devdocs.json index 17f5de4a4d6e4..f896f44527892 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -132,14 +132,6 @@ "text": "PublishingSubject" }, " | undefined; resetUnsavedChanges?: (() => boolean) | undefined; serializeState: () => ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.MaybePromise", - "text": "MaybePromise" - }, - "<", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -385,7 +377,7 @@ "section": "def-common.DynamicActionsState", "text": "DynamicActionsState" }, - "; } | undefined; isNewPanel?: boolean | undefined; }>>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", + "; } | undefined; isNewPanel?: boolean | undefined; }>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -689,7 +681,15 @@ "section": "def-common.AggregateQuery", "text": "AggregateQuery" }, - " | undefined>; rendered$: ", + " | undefined>; searchSessionId$: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishingSubject", + "text": "PublishingSubject" + }, + "; rendered$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1721,7 +1721,7 @@ "label": "mode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, @@ -6678,7 +6678,7 @@ "\nReact component which can be used to embed a Lens visualization into another application.\nSee `x-pack/examples/embedded_lens_example` for exemplary usage.\n\nThis API might undergo breaking changes even in minor versions.\n" ], "signature": [ - "({ title, withDefaultActions, extraActions, showInspector, syncColors, syncCursor, syncTooltips, viewMode, id, query, filters, timeRange, disabledActions, ...props }: { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", + "({ title, withDefaultActions, extraActions, showInspector, syncColors, syncCursor, syncTooltips, viewMode, id, query, filters, timeRange, disabledActions, searchSessionId, hidePanelTitles, ...props }: { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -10352,7 +10352,7 @@ "label": "changeType", "description": [], "signature": [ - "\"extended\" | \"layers\" | \"initial\" | \"unchanged\" | \"reduced\" | \"reorder\"" + "\"layers\" | \"initial\" | \"unchanged\" | \"reduced\" | \"extended\" | \"reorder\"" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -10643,7 +10643,7 @@ "\nThe change type indicates what was changed in this table compared to the currently active table of this layer." ], "signature": [ - "\"extended\" | \"layers\" | \"initial\" | \"unchanged\" | \"reduced\" | \"reorder\"" + "\"layers\" | \"initial\" | \"unchanged\" | \"reduced\" | \"extended\" | \"reorder\"" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -15729,7 +15729,7 @@ "label": "AxisExtentMode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, @@ -17756,14 +17756,6 @@ "text": "PublishingSubject" }, " | undefined; resetUnsavedChanges?: (() => boolean) | undefined; serializeState: () => ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.MaybePromise", - "text": "MaybePromise" - }, - "<", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -18009,7 +18001,7 @@ "section": "def-common.DynamicActionsState", "text": "DynamicActionsState" }, - "; } | undefined; isNewPanel?: boolean | undefined; }>>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", + "; } | undefined; isNewPanel?: boolean | undefined; }>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -18313,7 +18305,15 @@ "section": "def-common.AggregateQuery", "text": "AggregateQuery" }, - " | undefined>; rendered$: ", + " | undefined>; searchSessionId$: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishingSubject", + "text": "PublishingSubject" + }, + "; rendered$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -20310,14 +20310,6 @@ "text": "PublishingSubject" }, " | undefined; resetUnsavedChanges?: (() => boolean) | undefined; serializeState: () => ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.MaybePromise", - "text": "MaybePromise" - }, - "<", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -20563,7 +20555,7 @@ "section": "def-common.DynamicActionsState", "text": "DynamicActionsState" }, - "; } | undefined; isNewPanel?: boolean | undefined; }>>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", + "; } | undefined; isNewPanel?: boolean | undefined; }>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -20867,7 +20859,15 @@ "section": "def-common.AggregateQuery", "text": "AggregateQuery" }, - " | undefined>; rendered$: ", + " | undefined>; searchSessionId$: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishingSubject", + "text": "PublishingSubject" + }, + "; rendered$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index e90abb70f6549..e8b1d8f77f5d5 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.devdocs.json b/api_docs/license_api_guard.devdocs.json index 0c48a2c09fc39..216fc1eea6fb1 100644 --- a/api_docs/license_api_guard.devdocs.json +++ b/api_docs/license_api_guard.devdocs.json @@ -17,7 +17,7 @@ "tags": [], "label": "License", "description": [], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -31,7 +31,7 @@ "signature": [ "({ pluginName, logger }: SetupSettings) => void" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "signature": [ "SetupSettings" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -63,7 +63,7 @@ "signature": [ "({ pluginId, minimumLicenseType, licensing }: StartSettings) => void" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -77,7 +77,7 @@ "signature": [ "StartSettings" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -145,7 +145,7 @@ }, ">" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -168,7 +168,7 @@ }, ">" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -183,7 +183,7 @@ "tags": [], "label": "isEsSecurityEnabled", "description": [], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 7229770a2ce29..75d9fa274d294 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.devdocs.json b/api_docs/license_management.devdocs.json index 308585a34a03d..4ade943d371d7 100644 --- a/api_docs/license_management.devdocs.json +++ b/api_docs/license_management.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "LicenseManagementUIPluginSetup", "description": [], - "path": "x-pack/plugins/license_management/public/plugin.ts", + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -25,7 +25,7 @@ "tags": [], "label": "enabled", "description": [], - "path": "x-pack/plugins/license_management/public/plugin.ts", + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -40,7 +40,7 @@ "LicenseManagementLocator", " | undefined" ], - "path": "x-pack/plugins/license_management/public/plugin.ts", + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -58,7 +58,7 @@ "signature": [ "void" ], - "path": "x-pack/plugins/license_management/public/plugin.ts", + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 704efebb74b73..871b80458cedc 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.devdocs.json b/api_docs/licensing.devdocs.json index f9770fc80ae0a..f738e3bba61ea 100644 --- a/api_docs/licensing.devdocs.json +++ b/api_docs/licensing.devdocs.json @@ -572,71 +572,71 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" } ] } @@ -812,47 +812,47 @@ }, { "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/public/plugin.ts" + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts" }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/public/plugin.ts" }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/public/plugin.ts" - }, { "plugin": "logstash", "path": "x-pack/plugins/logstash/public/plugin.ts" }, { - "plugin": "painlessLab", - "path": "x-pack/plugins/painless_lab/public/plugin.tsx" + "plugin": "slo", + "path": "x-pack/solutions/observability/plugins/slo/public/plugin.ts" }, { - "plugin": "painlessLab", - "path": "x-pack/plugins/painless_lab/public/plugin.tsx" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts" }, { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/public/plugin.ts" + "plugin": "painlessLab", + "path": "x-pack/platform/plugins/private/painless_lab/public/plugin.tsx" }, { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/public/plugin.ts" + "plugin": "painlessLab", + "path": "x-pack/platform/plugins/private/painless_lab/public/plugin.tsx" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/public/plugin.ts" + "path": "x-pack/platform/plugins/private/watcher/public/plugin.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/public/plugin.ts" + "path": "x-pack/platform/plugins/private/watcher/public/plugin.ts" }, { - "plugin": "slo", - "path": "x-pack/plugins/observability_solution/slo/public/plugin.ts" + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts" } ] }, @@ -1893,71 +1893,71 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" } ] } @@ -2194,10 +2194,6 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/plugin.ts" }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/plugin.ts" - }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/plugin.ts" @@ -2207,80 +2203,84 @@ "path": "x-pack/plugins/graph/server/plugin.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/services/license.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/handlers/action/create_action_service.ts" + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts" + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/plugin.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts" + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts" }, { "plugin": "painlessLab", - "path": "x-pack/plugins/painless_lab/server/services/license.ts" + "path": "x-pack/platform/plugins/private/painless_lab/server/services/license.ts" }, { "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/services/license.ts" + "path": "x-pack/platform/plugins/private/rollup/server/services/license.ts" }, { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/server/plugin.ts" + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/services/license.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/services/license.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts" + "plugin": "aiops", + "path": "x-pack/platform/plugins/shared/aiops/server/plugin.ts" }, { - "plugin": "spaces", - "path": "x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.test.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/services/license.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts" }, { - "plugin": "aiops", - "path": "x-pack/platform/plugins/shared/aiops/server/plugin.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts" }, { "plugin": "actions", diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index cb2fa10f2037f..66ae13dd20f2f 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 3624254804ce6..beb2a81d55ab9 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index c01f7076c28f9..55c4c976f2b9a 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/llm_tasks.devdocs.json b/api_docs/llm_tasks.devdocs.json index be33e1e8cbf53..39638b49a1e87 100644 --- a/api_docs/llm_tasks.devdocs.json +++ b/api_docs/llm_tasks.devdocs.json @@ -24,7 +24,7 @@ "description": [ "\nDescribes public llmTasks plugin contract returned at the `setup` stage." ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -40,7 +40,7 @@ "description": [ "\nDescribes public llmTasks plugin contract returned at the `start` stage." ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -56,7 +56,7 @@ "signature": [ "() => Promise" ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -80,7 +80,7 @@ "RetrieveDocumentationResult", ">" ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -95,7 +95,7 @@ "signature": [ "RetrieveDocumentationParams" ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/tasks/retrieve_documentation/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/tasks/retrieve_documentation/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/llm_tasks.mdx b/api_docs/llm_tasks.mdx index 2adb45f4aaf45..591a3dc4f0029 100644 --- a/api_docs/llm_tasks.mdx +++ b/api_docs/llm_tasks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/llmTasks title: "llmTasks" image: https://source.unsplash.com/400x175/?github description: API docs for the llmTasks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'llmTasks'] --- import llmTasksObj from './llm_tasks.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index c1e10f806bb00..c3975238dba69 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index 6149d530e0934..5ff8148405543 100644 --- a/api_docs/logs_explorer.mdx +++ b/api_docs/logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer title: "logsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logsExplorer plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer'] --- import logsExplorerObj from './logs_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.devdocs.json b/api_docs/logs_shared.devdocs.json index 9f8ec3fc78fad..f0c1e97569f1b 100644 --- a/api_docs/logs_shared.devdocs.json +++ b/api_docs/logs_shared.devdocs.json @@ -344,23 +344,7 @@ "label": "LogColumnHeadersWrapper", "description": [], "signature": [ - "React.ForwardRefExoticComponent<(Omit & Partial>, \"theme\"> & { theme?: ", - { - "pluginId": "@kbn/react-kibana-context-styled", - "scope": "common", - "docId": "kibKbnReactKibanaContextStyledPluginApi", - "section": "def-common.EuiTheme", - "text": "EuiTheme" - }, - " | undefined; } & { as?: React.ComponentType | keyof JSX.IntrinsicElements | undefined; forwardedAs?: React.ComponentType | keyof JSX.IntrinsicElements | undefined; }, \"ref\"> | Omit & Partial>, \"theme\"> & { theme?: ", - { - "pluginId": "@kbn/react-kibana-context-styled", - "scope": "common", - "docId": "kibKbnReactKibanaContextStyledPluginApi", - "section": "def-common.EuiTheme", - "text": "EuiTheme" - }, - " | undefined; } & { children?: React.ReactNode; } & { as?: React.ComponentType | keyof JSX.IntrinsicElements | undefined; forwardedAs?: React.ComponentType | keyof JSX.IntrinsicElements | undefined; }, \"ref\">) & React.RefAttributes<{}>>" + "React.ForwardRefExoticComponent & React.RefAttributes<{}>>" ], "path": "x-pack/plugins/observability_solution/logs_shared/public/index.ts", "deprecated": false, diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index aadc044bb6f73..483b69219b5cc 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.devdocs.json b/api_docs/management.devdocs.json index 5e0f24e61dca5..1eb477d2ca7d3 100644 --- a/api_docs/management.devdocs.json +++ b/api_docs/management.devdocs.json @@ -20,7 +20,7 @@ " extends ", "ManagementItem" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -46,7 +46,7 @@ "Unmount", ">" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -67,7 +67,7 @@ "text": "ManagementAppMountParams" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -80,7 +80,7 @@ "tags": [], "label": "basePath", "description": [], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false }, @@ -94,7 +94,7 @@ "signature": [ "string[]" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false }, @@ -108,7 +108,7 @@ "signature": [ "any" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -128,7 +128,7 @@ "text": "RegisterManagementAppArgs" } ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -157,7 +157,7 @@ " extends ", "ManagementItem" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -178,7 +178,7 @@ }, "[]" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false }, @@ -192,7 +192,7 @@ "signature": [ "any" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -206,7 +206,7 @@ "signature": [ "RegisterManagementSectionArgs" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -239,7 +239,7 @@ "text": "ManagementApp" } ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -261,7 +261,7 @@ }, ", \"basePath\">" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -287,7 +287,7 @@ }, " | undefined" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -301,7 +301,7 @@ "signature": [ "string" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -327,7 +327,7 @@ }, "[]" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -346,7 +346,7 @@ "tags": [], "label": "DefinedSections", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -366,7 +366,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -386,7 +386,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -406,7 +406,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -426,7 +426,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -446,7 +446,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -466,7 +466,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -480,7 +480,7 @@ "tags": [], "label": "ManagementAppMountParams", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -491,7 +491,7 @@ "tags": [], "label": "basePath", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -505,7 +505,7 @@ "signature": [ "HTMLElement" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -527,7 +527,7 @@ }, "[]) => void" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -548,7 +548,7 @@ }, "[]" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -573,7 +573,7 @@ }, "" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -593,7 +593,7 @@ "text": "ThemeServiceSetup" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -618,7 +618,7 @@ }, ">" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": true, "trackAdoption": false, "references": [ @@ -649,7 +649,7 @@ " extends ", "CreateManagementItemArgs" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -675,7 +675,7 @@ "Unmount", ">" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -696,7 +696,7 @@ "text": "ManagementAppMountParams" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -709,7 +709,7 @@ "tags": [], "label": "basePath", "description": [], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false }, @@ -723,7 +723,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false } @@ -743,7 +743,7 @@ "signature": [ "\"management\"" ], - "path": "src/plugins/management/common/contants.ts", + "path": "src/platform/plugins/shared/management/common/contants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -757,7 +757,7 @@ "tags": [], "label": "ManagementSetup", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -771,7 +771,7 @@ "signature": [ "SectionsServiceSetup" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -794,7 +794,7 @@ "ManagementAppLocatorParams", ">" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -809,7 +809,7 @@ "tags": [], "label": "ManagementStart", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -825,7 +825,7 @@ "NavigationCardsSubject", ") => void" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -839,7 +839,7 @@ "signature": [ "NavigationCardsSubject" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -885,7 +885,7 @@ "ManagementAppLocatorParams", ">" ], - "path": "src/plugins/management/common/locator.ts", + "path": "src/platform/plugins/shared/management/common/locator.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 02f48da672886..84da16af56c12 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 13be2f6257719..710d7517512fb 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index acb7b46255e2f..9ce2ceb9ea9c4 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 59a57b0fade86..49004fa283782 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 792589e932c7e..88b6d0e13eac8 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 17d3e33d2eba0..a636c60f3417e 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 5b7f69096f7c8..d08dc0ee8e112 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 782c0b380c1f9..c76b7c0535b17 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index cfa72847f2677..7ca45c650ddb2 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 5cae7cf8fb46f..1ddd0ecf2e37c 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 186c617fbef8d..c38287264d41f 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 3e281d9a87f84..8e1a3be5a0e9e 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index 3dc14fc3d10b8..51eb9e06f65e9 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -15,7 +15,7 @@ "AutocompleteFieldProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -29,7 +29,7 @@ "signature": [ "AutocompleteFieldProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -56,7 +56,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -70,7 +70,7 @@ "signature": [ "BuildEsQueryArgs" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -106,7 +106,7 @@ ") => ", "BucketSize" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -126,7 +126,7 @@ "text": "TimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -147,7 +147,7 @@ "text": "TimeBuckets" } ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -170,7 +170,7 @@ "Maybe", "; defaultValue?: string | undefined; extended?: boolean | undefined; }) => ConvertedDuration" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -181,7 +181,7 @@ "tags": [], "label": "{\n unit,\n microseconds,\n defaultValue = NOT_AVAILABLE_LABEL,\n extended,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -196,7 +196,7 @@ "\"microseconds\" | ", "TimeUnit" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -210,7 +210,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -224,7 +224,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -238,7 +238,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false } @@ -274,7 +274,7 @@ }, " | undefined; list: () => string[]; } & { getFormatter: () => () => string; registerFormatter: () => void; list: () => string[]; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/observability_rule_type_registry_mock.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/observability_rule_type_registry_mock.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -300,7 +300,7 @@ ") => ", "LinkProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/create_use_rules_link.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/create_use_rules_link.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -319,7 +319,7 @@ "DatePickerProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -333,7 +333,7 @@ "signature": [ "DatePickerProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -352,7 +352,7 @@ "signature": [ "({ children }: { children: React.ReactElement>; }) => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -363,7 +363,7 @@ "tags": [], "label": "{ children }", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -377,7 +377,7 @@ "signature": [ "React.ReactElement>" ], - "path": "x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx", "deprecated": false, "trackAdoption": false } @@ -397,7 +397,7 @@ "signature": [ "(ruleTypeId?: string | undefined, evaluationValue?: number | undefined) => string | number" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -411,7 +411,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -426,7 +426,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -445,7 +445,7 @@ "signature": [ "(query: Record) => string" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -459,7 +459,7 @@ "signature": [ "Record" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -493,7 +493,7 @@ "text": "AlertSummaryTimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -513,7 +513,7 @@ "text": "TimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -528,7 +528,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -543,7 +543,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -562,7 +562,7 @@ "signature": [ "({\n traceId,\n rangeFrom,\n rangeTo,\n}: { traceId: string; rangeFrom: string; rangeTo: string; }) => string" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -573,7 +573,7 @@ "tags": [], "label": "{\n traceId,\n rangeFrom,\n rangeTo,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -584,7 +584,7 @@ "tags": [], "label": "traceId", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false }, @@ -595,7 +595,7 @@ "tags": [], "label": "rangeFrom", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false }, @@ -606,7 +606,7 @@ "tags": [], "label": "rangeTo", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false } @@ -628,7 +628,7 @@ "CoreVitalProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -642,7 +642,7 @@ "signature": [ "CoreVitalProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -671,7 +671,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -686,7 +686,7 @@ "Group", "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -701,7 +701,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -720,7 +720,7 @@ "signature": [ "React.LazyExoticComponent<({ alert, rawAlert, alerts, isInApp, observabilityRuleTypeRegistry, onClose, selectedAlertId, }: AlertsFlyoutProps) => React.JSX.Element | null>" ], - "path": "x-pack/plugins/observability_solution/observability/public/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -754,7 +754,7 @@ "ObservabilityAlertSearchBarProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -768,7 +768,7 @@ "signature": [ "ObservabilityAlertSearchBarProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -807,7 +807,7 @@ "node_modules/@testing-library/dom/types/queries", ", HTMLElement, HTMLElement>" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -821,7 +821,7 @@ "signature": [ "React.ReactNode" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -851,7 +851,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -872,7 +872,7 @@ "RuleConditionChartProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -886,7 +886,7 @@ "signature": [ "RuleConditionChartProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -907,7 +907,7 @@ "RuleFlyoutKueryBarProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -921,7 +921,7 @@ "signature": [ "RuleFlyoutKueryBarProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -942,7 +942,7 @@ "Props", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -956,7 +956,7 @@ "signature": [ "Props" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -977,7 +977,7 @@ "ParsedQuery", "" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -991,7 +991,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1022,7 +1022,7 @@ "SeriesIdentifier", ">> | undefined; annotations?: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; })[] | undefined; }) => React.JSX.Element; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1033,7 +1033,7 @@ "tags": [], "label": "{\n domain,\n editAnnotation,\n slo,\n setEditAnnotation,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1047,7 +1047,7 @@ "signature": [ "({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }) | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false }, @@ -1061,7 +1061,7 @@ "signature": [ "({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false }, @@ -1075,7 +1075,7 @@ "signature": [ "((annotation: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null) => void) | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1089,7 +1089,7 @@ "signature": [ "({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1107,7 +1107,7 @@ "signature": [ "{ min: string | number; max: string | number; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false } @@ -1149,7 +1149,7 @@ }, "[], unknown>>; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_data_views.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_data_views.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1181,7 +1181,7 @@ "text": "AlertSummaryTimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/use_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/use_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1201,7 +1201,7 @@ "text": "TimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/use_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/use_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1227,7 +1227,7 @@ "text": "TimeBuckets" } ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/use_time_buckets.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/use_time_buckets.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1246,7 +1246,7 @@ "WithKueryAutocompletionLifecycleProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1260,7 +1260,7 @@ "signature": [ "WithKueryAutocompletionLifecycleProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1278,7 +1278,7 @@ "tags": [], "label": "AlertDetailsAppSectionProps", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/pages/alert_details/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/alert_details/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1294,7 +1294,7 @@ "AlertDetailsSource", "[] | undefined>) => void" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/alert_details/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/alert_details/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1342,7 +1342,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1372,7 +1372,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1394,7 +1394,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1408,7 +1408,7 @@ "tags": [], "label": "APMHasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1419,7 +1419,7 @@ "tags": [], "label": "hasData", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1433,7 +1433,7 @@ "signature": [ "ApmIndicesConfig" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1447,7 +1447,7 @@ "tags": [], "label": "ConfigSchema", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1461,7 +1461,7 @@ "signature": [ "{ alertDetails: { logs?: { enabled: boolean; } | undefined; uptime: { enabled: boolean; }; observability?: { enabled: boolean; } | undefined; }; thresholdRule?: { enabled: boolean; } | undefined; ruleFormV2?: { enabled: boolean; } | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -1475,7 +1475,7 @@ "tags": [], "label": "Coordinates", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1486,7 +1486,7 @@ "tags": [], "label": "x", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1500,7 +1500,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1524,7 +1524,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1554,7 +1554,7 @@ }, "[T]>" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1575,7 +1575,7 @@ "text": "FetchDataParams" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1607,7 +1607,7 @@ }, "[T]>" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1629,7 +1629,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1645,7 +1645,7 @@ "tags": [], "label": "FetchDataParams", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1659,7 +1659,7 @@ "signature": [ "{ start: number; end: number; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1673,7 +1673,7 @@ "signature": [ "{ start: string; end: string; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1687,7 +1687,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1698,7 +1698,7 @@ "tags": [], "label": "bucketSize", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1709,7 +1709,7 @@ "tags": [], "label": "intervalString", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1723,7 +1723,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1737,7 +1737,7 @@ "tags": [], "label": "FetchDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1748,7 +1748,7 @@ "tags": [], "label": "appLink", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1762,7 +1762,7 @@ "tags": [], "label": "HasDataParams", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1776,7 +1776,7 @@ "signature": [ "{ start: number; end: number; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1790,7 +1790,7 @@ "tags": [], "label": "HasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1801,7 +1801,7 @@ "tags": [], "label": "hasData", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1815,7 +1815,7 @@ "tags": [], "label": "InfraLogsHasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1826,7 +1826,7 @@ "tags": [], "label": "hasData", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1837,7 +1837,7 @@ "tags": [], "label": "indices", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1851,7 +1851,7 @@ "tags": [], "label": "InfraMetricsHasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1862,7 +1862,7 @@ "tags": [], "label": "hasData", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1873,7 +1873,7 @@ "tags": [], "label": "indices", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1904,7 +1904,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1926,7 +1926,7 @@ }, " & { label: string; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1948,7 +1948,7 @@ }, " & { label: string; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1979,7 +1979,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2001,7 +2001,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2015,7 +2015,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2030,7 +2030,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2055,7 +2055,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -2069,7 +2069,7 @@ "tags": [], "label": "MetricsFetchDataSeries", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2080,7 +2080,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2094,7 +2094,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2108,7 +2108,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2122,7 +2122,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2136,7 +2136,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2150,7 +2150,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2164,7 +2164,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2178,7 +2178,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2192,7 +2192,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2206,7 +2206,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2260,7 +2260,7 @@ }, "; }[]" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -2274,7 +2274,7 @@ "tags": [], "label": "ObservabilityFetchDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2294,7 +2294,7 @@ "text": "ApmFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2314,7 +2314,7 @@ "text": "MetricsFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2334,7 +2334,7 @@ "text": "LogsFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2354,7 +2354,7 @@ "text": "UptimeFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2374,7 +2374,7 @@ "text": "UxFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2394,7 +2394,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -2408,7 +2408,7 @@ "tags": [], "label": "ObservabilityHasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2428,7 +2428,7 @@ "text": "APMHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2448,7 +2448,7 @@ "text": "InfraMetricsHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2468,7 +2468,7 @@ "text": "InfraLogsHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2488,7 +2488,7 @@ "text": "SyntheticsHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2508,7 +2508,7 @@ "text": "UXHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2522,7 +2522,7 @@ "signature": [ "UniversalProfilingHasDataResponse" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -2536,7 +2536,7 @@ "tags": [], "label": "ObservabilityPublicPluginsSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2556,7 +2556,7 @@ "text": "DataPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2578,7 +2578,7 @@ }, "[]) => void; has: (id: string) => boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2602,7 +2602,7 @@ }, "[]>) => void; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2623,7 +2623,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2671,7 +2671,7 @@ }, ") => void; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2691,7 +2691,7 @@ "text": "TriggersAndActionsUIPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2712,7 +2712,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2732,7 +2732,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2752,7 +2752,7 @@ "text": "EmbeddableSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2798,7 +2798,7 @@ }, ") => void; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2818,7 +2818,7 @@ "text": "LicensingPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2839,7 +2839,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2860,7 +2860,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2881,7 +2881,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -2895,7 +2895,7 @@ "tags": [], "label": "ObservabilityPublicPluginsStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2933,7 +2933,7 @@ }, ") => void; has: (id: string) => boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2953,7 +2953,7 @@ "text": "CasesPublicStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2976,7 +2976,7 @@ "ActiveCursor", "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2996,7 +2996,7 @@ "text": "ContentManagementPublicStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3016,7 +3016,7 @@ "text": "DataPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3036,7 +3036,7 @@ "text": "DataViewsServicePublic" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3056,7 +3056,7 @@ "text": "PluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3076,7 +3076,7 @@ "text": "DiscoverStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3096,7 +3096,7 @@ "text": "EmbeddableStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3138,7 +3138,7 @@ }, ") => React.JSX.Element | null; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3168,7 +3168,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3189,7 +3189,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3209,7 +3209,7 @@ "text": "LensPublicStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3229,7 +3229,7 @@ "text": "LicensingPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3250,7 +3250,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3270,7 +3270,7 @@ "text": "NavigationPublicStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3314,7 +3314,7 @@ }, ">; }) => void; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3335,7 +3335,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3397,7 +3397,7 @@ }, ">) => void; has: (id: string) => boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3417,7 +3417,7 @@ "text": "SecurityPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3457,7 +3457,7 @@ }, ">): void; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3478,7 +3478,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3498,7 +3498,7 @@ "text": "TriggersAndActionsUIPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3518,7 +3518,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3538,7 +3538,7 @@ "text": "UnifiedSearchPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3559,7 +3559,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3580,7 +3580,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3600,7 +3600,7 @@ "text": "AiopsPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3621,7 +3621,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3641,7 +3641,7 @@ "text": "IUiSettingsClient" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3729,7 +3729,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3750,7 +3750,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3770,7 +3770,7 @@ "text": "ThemeServiceSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3790,7 +3790,7 @@ "text": "PluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3810,7 +3810,7 @@ "text": "IToasts" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3831,7 +3831,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3852,7 +3852,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -3884,7 +3884,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3910,7 +3910,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string; }; }) => { reason: string; link?: string | undefined; hasBasePath?: boolean | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -3937,7 +3937,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false } @@ -3953,7 +3953,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false } @@ -3984,7 +3984,7 @@ "text": "SerializableRecord" } ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3998,7 +3998,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false }, @@ -4012,7 +4012,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false }, @@ -4026,7 +4026,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false }, @@ -4047,7 +4047,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false }, @@ -4061,7 +4061,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false } @@ -4075,7 +4075,7 @@ "tags": [], "label": "Series", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4096,7 +4096,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4110,7 +4110,7 @@ "tags": [], "label": "Stat", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4124,7 +4124,7 @@ "signature": [ "\"number\" | \"percent\" | \"bytesPerSecond\"" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4135,7 +4135,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4166,7 +4166,7 @@ "text": "HasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4177,7 +4177,7 @@ "tags": [], "label": "indices", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4201,7 +4201,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4223,7 +4223,7 @@ }, "[]; }; readonly \"kibana.alert.rule.execution.timestamp\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.execution.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.severity_improving\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.workflow_assignee_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }>> & OutputOf> & TAdditionalMetaFields" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4234,7 +4234,7 @@ "tags": [], "label": "start", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4245,7 +4245,7 @@ "tags": [], "label": "lastUpdated", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4256,7 +4256,7 @@ "tags": [], "label": "reason", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4270,7 +4270,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4281,7 +4281,7 @@ "tags": [], "label": "active", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4295,7 +4295,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false } @@ -4326,7 +4326,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4364,7 +4364,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4394,7 +4394,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4425,7 +4425,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4445,7 +4445,7 @@ "text": "UXMetrics" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4476,7 +4476,7 @@ "text": "HasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4490,7 +4490,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4504,7 +4504,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4524,7 +4524,7 @@ "signature": [ "\"ALERTS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4539,7 +4539,7 @@ "signature": [ "\"observability:apmEnableTableSearchBar\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4554,7 +4554,7 @@ "signature": [ "\"observability:apmServiceGroupMaxNumberOfServices\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4569,7 +4569,7 @@ "signature": [ "\"observability:apmAgentExplorerView\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4584,7 +4584,7 @@ "signature": [ "\"observability:enableComparisonByDefault\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4599,7 +4599,7 @@ "signature": [ "\"observability:enableInspectEsQueries\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4614,7 +4614,7 @@ "signature": [ "\"observability:enableLegacyUptimeApp\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4637,7 +4637,7 @@ }, ") => Promise" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -4658,7 +4658,7 @@ "text": "FetchDataParams" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4676,7 +4676,7 @@ "\"custom\" | ", "Aggregators" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4707,7 +4707,7 @@ }, "[T]>" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -4729,7 +4729,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4746,7 +4746,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4761,7 +4761,7 @@ "signature": [ "\"observability-overview\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4776,7 +4776,7 @@ "signature": [ "\"observability\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4791,7 +4791,7 @@ "signature": [ "\"uptime\" | \"apm\" | \"ux\" | \"infra_logs\" | \"infra_metrics\" | \"universal_profiling\"" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4818,7 +4818,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string; }; }) => { reason: string; link?: string | undefined; hasBasePath?: boolean | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -4845,7 +4845,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false } @@ -4878,7 +4878,7 @@ }, " | undefined; list: () => string[]; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4893,7 +4893,7 @@ "signature": [ "\"RULE_DETAILS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4908,7 +4908,7 @@ "signature": [ "\"RULES_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4923,7 +4923,7 @@ "signature": [ "\"SLO_DETAILS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4938,7 +4938,7 @@ "signature": [ "\"SLO_EDIT_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4953,7 +4953,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4978,7 +4978,7 @@ }, " : K[attr]) | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/utils.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/utils.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4993,7 +4993,7 @@ "signature": [ "\"observability:syntheticsThrottlingEnabled\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5014,7 +5014,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5029,7 +5029,7 @@ "signature": [ "\"UPTIME_OVERVIEW_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5122,7 +5122,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "setup", @@ -5172,7 +5172,7 @@ "LinkProps", "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", @@ -5192,7 +5192,7 @@ "WrappedElasticsearchClientError", " extends Error" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -5206,7 +5206,7 @@ "signature": [ "ElasticsearchClientError" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false }, @@ -5220,7 +5220,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -5234,7 +5234,7 @@ "signature": [ "ElasticsearchClientError" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -5293,7 +5293,7 @@ }, "; }) => Promise" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -5304,7 +5304,7 @@ "tags": [], "label": "{\n index,\n mappings,\n client,\n logger,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -5315,7 +5315,7 @@ "tags": [], "label": "index", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false }, @@ -5349,7 +5349,7 @@ "MappingRuntimeFields", " | undefined; }) | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false }, @@ -6617,7 +6617,7 @@ "default", "; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false }, @@ -6637,7 +6637,7 @@ "text": "Logger" } ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false } @@ -6677,7 +6677,7 @@ "AcknowledgedResponseBase", " | undefined>" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -6688,7 +6688,7 @@ "tags": [], "label": "{\n indexTemplate,\n client,\n logger,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -6702,7 +6702,7 @@ "signature": [ "IndicesPutIndexTemplateRequest" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false }, @@ -7970,7 +7970,7 @@ "default", "; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false }, @@ -7990,7 +7990,7 @@ "text": "Logger" } ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false } @@ -8012,7 +8012,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8026,7 +8026,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8072,7 +8072,7 @@ "text": "Request" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8083,7 +8083,7 @@ "tags": [], "label": "{\n esError,\n esRequestParams,\n esRequestStatus,\n esResponse,\n kibanaRequest,\n operationName,\n startTime,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8098,7 +8098,7 @@ "WrappedElasticsearchClientError", " | null" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8112,7 +8112,7 @@ "signature": [ "{ [x: string]: any; }" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8132,7 +8132,7 @@ "text": "RequestStatus" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8146,7 +8146,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8167,7 +8167,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8178,7 +8178,7 @@ "tags": [], "label": "operationName", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8189,7 +8189,7 @@ "tags": [], "label": "startTime", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false } @@ -8211,7 +8211,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/get_parsed_filtered_query.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/get_parsed_filtered_query.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8225,7 +8225,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/get_parsed_filtered_query.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/get_parsed_filtered_query.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8246,7 +8246,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8260,7 +8260,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8281,7 +8281,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8295,7 +8295,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8310,7 +8310,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8325,7 +8325,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8346,7 +8346,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8360,7 +8360,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8375,7 +8375,7 @@ "signature": [ "string | number | boolean | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8390,7 +8390,7 @@ "signature": [ "TermQueryOpts" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8411,7 +8411,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8425,7 +8425,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8440,7 +8440,7 @@ "signature": [ "(string | number | boolean | null | undefined)[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8459,7 +8459,7 @@ "signature": [ "(responsePromise: T) => Promise[\"body\"]>" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8473,7 +8473,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8494,7 +8494,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8508,7 +8508,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8523,7 +8523,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8538,7 +8538,7 @@ "signature": [ "{ leadingWildcard: boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8556,7 +8556,7 @@ "tags": [], "label": "CustomThresholdLocators", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8585,7 +8585,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", "deprecated": false, "trackAdoption": false }, @@ -8614,7 +8614,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", "deprecated": false, "trackAdoption": false } @@ -8628,7 +8628,7 @@ "tags": [], "label": "ObservabilityRouteCreateOptions", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8642,7 +8642,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false }, @@ -8656,7 +8656,7 @@ "signature": [ "\"internal\" | \"public\" | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false } @@ -8670,7 +8670,7 @@ "tags": [], "label": "ObservabilityRouteHandlerResources", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8715,7 +8715,7 @@ }, ">; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false }, @@ -8729,7 +8729,7 @@ "signature": [ "RegisterRoutesDependencies" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false }, @@ -8749,7 +8749,7 @@ "text": "Logger" } ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false }, @@ -8770,7 +8770,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false } @@ -8814,7 +8814,7 @@ }, " | undefined>; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8829,7 +8829,7 @@ "signature": [ "\"GET /internal/observability/assistant/alert_details_contextual_insights\" | \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/get_global_observability_server_route_repository.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/get_global_observability_server_route_repository.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8863,7 +8863,7 @@ "MappingRuntimeFields", " | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8992,7 +8992,7 @@ }, " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9007,7 +9007,7 @@ "signature": [ "{ readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; ruleFormV2: Readonly<{} & { enabled: boolean; }>; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly createO11yGenericFeatureId: boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9110,7 +9110,7 @@ }, ">; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/get_global_observability_server_route_repository.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/get_global_observability_server_route_repository.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9135,7 +9135,7 @@ "DeleteByQueryResponse", ">; permissions: () => Promise<{ index: string; hasGoldLicense: boolean; }>; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/bootstrap_annotations.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/bootstrap_annotations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9171,7 +9171,7 @@ "UnknownRecordC", "]>" ], - "path": "x-pack/plugins/observability_solution/observability/server/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9217,7 +9217,7 @@ "Type", "; }>]>" ], - "path": "x-pack/plugins/observability_solution/observability/server/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9231,7 +9231,7 @@ "description": [ "\nuiSettings definitions for Observability." ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9242,7 +9242,7 @@ "tags": [], "label": "[enableInspectEsQueries]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9256,7 +9256,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9267,7 +9267,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9281,7 +9281,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9292,7 +9292,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9313,7 +9313,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9327,7 +9327,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9340,7 +9340,7 @@ "tags": [], "label": "[maxSuggestions]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9354,7 +9354,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9365,7 +9365,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9376,7 +9376,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9387,7 +9387,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9408,7 +9408,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9421,7 +9421,7 @@ "tags": [], "label": "[enableComparisonByDefault]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9435,7 +9435,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9446,7 +9446,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9460,7 +9460,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9471,7 +9471,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9492,7 +9492,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9505,7 +9505,7 @@ "tags": [], "label": "[defaultApmServiceEnvironment]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9519,7 +9519,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9533,7 +9533,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9544,7 +9544,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9555,7 +9555,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9566,7 +9566,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9587,7 +9587,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9600,7 +9600,7 @@ "tags": [], "label": "[apmProgressiveLoading]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9614,7 +9614,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9625,7 +9625,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9636,7 +9636,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9656,7 +9656,7 @@ "text": "ProgressiveLoadingQuality" } ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9685,7 +9685,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9699,7 +9699,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9713,7 +9713,7 @@ "signature": [ "\"select\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9734,7 +9734,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9745,7 +9745,7 @@ "tags": [], "label": "optionLabels", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9756,7 +9756,7 @@ "tags": [], "label": "[ProgressiveLoadingQuality.off]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9767,7 +9767,7 @@ "tags": [], "label": "[ProgressiveLoadingQuality.low]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9778,7 +9778,7 @@ "tags": [], "label": "[ProgressiveLoadingQuality.medium]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9789,7 +9789,7 @@ "tags": [], "label": "[ProgressiveLoadingQuality.high]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9805,7 +9805,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9818,7 +9818,7 @@ "tags": [], "label": "[apmServiceInventoryOptimizedSorting]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9832,7 +9832,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9843,7 +9843,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9854,7 +9854,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9875,7 +9875,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9889,7 +9889,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9903,7 +9903,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9917,7 +9917,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9931,7 +9931,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9944,7 +9944,7 @@ "tags": [], "label": "[apmServiceGroupMaxNumberOfServices]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9958,7 +9958,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9969,7 +9969,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9980,7 +9980,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9991,7 +9991,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10012,7 +10012,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10025,7 +10025,7 @@ "tags": [], "label": "[apmTraceExplorerTab]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10039,7 +10039,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10050,7 +10050,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10061,7 +10061,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10082,7 +10082,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10096,7 +10096,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10110,7 +10110,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10124,7 +10124,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10138,7 +10138,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10151,7 +10151,7 @@ "tags": [], "label": "[apmLabsButton]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10165,7 +10165,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10176,7 +10176,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10187,7 +10187,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10208,7 +10208,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10222,7 +10222,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10236,7 +10236,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10250,7 +10250,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10263,7 +10263,7 @@ "tags": [], "label": "[enableInfrastructureProfilingIntegration]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10277,7 +10277,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10288,7 +10288,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10302,7 +10302,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10313,7 +10313,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10334,7 +10334,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10347,7 +10347,7 @@ "tags": [], "label": "[enableInfrastructureAssetCustomDashboards]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10361,7 +10361,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10372,7 +10372,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10386,7 +10386,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10397,7 +10397,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10418,7 +10418,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10431,7 +10431,7 @@ "tags": [], "label": "[enableAwsLambdaMetrics]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10445,7 +10445,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10456,7 +10456,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10467,7 +10467,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10488,7 +10488,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10502,7 +10502,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10516,7 +10516,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10530,7 +10530,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10544,7 +10544,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10557,7 +10557,7 @@ "tags": [], "label": "[enableAgentExplorerView]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10571,7 +10571,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10582,7 +10582,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10593,7 +10593,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10614,7 +10614,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10628,7 +10628,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10642,7 +10642,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10656,7 +10656,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10669,7 +10669,7 @@ "tags": [], "label": "[apmEnableTableSearchBar]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10683,7 +10683,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10694,7 +10694,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10705,7 +10705,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10726,7 +10726,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10740,7 +10740,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10754,7 +10754,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10768,7 +10768,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10781,7 +10781,7 @@ "tags": [], "label": "[entityCentricExperience]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10795,7 +10795,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10806,7 +10806,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10817,7 +10817,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10838,7 +10838,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10852,7 +10852,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10866,7 +10866,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10880,7 +10880,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10893,7 +10893,7 @@ "tags": [], "label": "[apmEnableServiceInventoryTableSearchBar]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10907,7 +10907,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10918,7 +10918,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10929,7 +10929,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10950,7 +10950,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10964,7 +10964,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10978,7 +10978,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10992,7 +10992,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11005,7 +11005,7 @@ "tags": [], "label": "[apmAWSLambdaPriceFactor]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11019,7 +11019,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11030,7 +11030,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11044,7 +11044,7 @@ "signature": [ "\"json\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11055,7 +11055,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11066,7 +11066,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11103,7 +11103,7 @@ }, "; }>" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11116,7 +11116,7 @@ "tags": [], "label": "[apmAWSLambdaRequestCostPerMillion]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11130,7 +11130,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11141,7 +11141,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11152,7 +11152,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11173,7 +11173,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11186,7 +11186,7 @@ "tags": [], "label": "[apmEnableServiceMetrics]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11200,7 +11200,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11211,7 +11211,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11225,7 +11225,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11236,7 +11236,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11257,7 +11257,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11271,7 +11271,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11284,7 +11284,7 @@ "tags": [], "label": "[apmEnableContinuousRollups]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11298,7 +11298,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11309,7 +11309,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11323,7 +11323,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11334,7 +11334,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11355,7 +11355,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11369,7 +11369,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11382,7 +11382,7 @@ "tags": [], "label": "[enableCriticalPath]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11396,7 +11396,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11407,7 +11407,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11418,7 +11418,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11439,7 +11439,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11453,7 +11453,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11467,7 +11467,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11481,7 +11481,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11495,7 +11495,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11508,7 +11508,7 @@ "tags": [], "label": "[syntheticsThrottlingEnabled]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11522,7 +11522,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11533,7 +11533,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11547,7 +11547,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11558,7 +11558,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11579,7 +11579,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11593,7 +11593,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11606,7 +11606,7 @@ "tags": [], "label": "[enableLegacyUptimeApp]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11620,7 +11620,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11631,7 +11631,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11645,7 +11645,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11656,7 +11656,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11677,7 +11677,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11691,7 +11691,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11704,7 +11704,7 @@ "tags": [], "label": "[apmEnableProfilingIntegration]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11718,7 +11718,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11729,7 +11729,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11743,7 +11743,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11764,7 +11764,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11778,7 +11778,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11791,7 +11791,7 @@ "tags": [], "label": "[profilingShowErrorFrames]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11805,7 +11805,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11816,7 +11816,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11830,7 +11830,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11851,7 +11851,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11865,7 +11865,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11878,7 +11878,7 @@ "tags": [], "label": "[profilingPervCPUWattX86]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11892,7 +11892,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11903,7 +11903,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11914,7 +11914,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11925,7 +11925,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11946,7 +11946,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11960,7 +11960,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11973,7 +11973,7 @@ "tags": [], "label": "[profilingPervCPUWattArm64]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11987,7 +11987,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11998,7 +11998,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12009,7 +12009,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12020,7 +12020,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12041,7 +12041,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12055,7 +12055,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12068,7 +12068,7 @@ "tags": [], "label": "[profilingDatacenterPUE]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12082,7 +12082,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12093,7 +12093,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12104,7 +12104,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12115,7 +12115,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12136,7 +12136,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12150,7 +12150,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12163,7 +12163,7 @@ "tags": [], "label": "[profilingCo2PerKWH]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12177,7 +12177,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12188,7 +12188,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12199,7 +12199,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12210,7 +12210,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12231,7 +12231,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12245,7 +12245,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12258,7 +12258,7 @@ "tags": [], "label": "[profilingAWSCostDiscountRate]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12272,7 +12272,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12283,7 +12283,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12294,7 +12294,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12315,7 +12315,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12329,7 +12329,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12340,7 +12340,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12353,7 +12353,7 @@ "tags": [], "label": "[profilingAzureCostDiscountRate]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12367,7 +12367,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12378,7 +12378,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12389,7 +12389,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12410,7 +12410,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12424,7 +12424,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12435,7 +12435,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12448,7 +12448,7 @@ "tags": [], "label": "[profilingCostPervCPUPerHour]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12462,7 +12462,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12473,7 +12473,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12484,7 +12484,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12495,7 +12495,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12516,7 +12516,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12530,7 +12530,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12543,7 +12543,7 @@ "tags": [], "label": "[apmEnableTransactionProfiling]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12557,7 +12557,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12568,7 +12568,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12582,7 +12582,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12603,7 +12603,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12617,7 +12617,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12630,7 +12630,7 @@ "tags": [], "label": "[profilingFetchTopNFunctionsFromStacktraces]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12644,7 +12644,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12655,7 +12655,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12666,7 +12666,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12680,7 +12680,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12701,7 +12701,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12715,7 +12715,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12728,7 +12728,7 @@ "tags": [], "label": "[searchExcludedDataTiers]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12742,7 +12742,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12753,7 +12753,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12764,7 +12764,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12778,7 +12778,7 @@ "signature": [ "never[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12799,7 +12799,7 @@ }, "<(\"data_cold\" | \"data_frozen\")[]>" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12813,7 +12813,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12885,7 +12885,7 @@ }, ">; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "setup", @@ -12927,7 +12927,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12941,7 +12941,7 @@ "signature": [ "\"ALERTS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -12963,7 +12963,7 @@ }, ") => Promise<{ app: string; path: string; state: {}; }>" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12983,7 +12983,7 @@ "text": "AlertsLocatorParams" } ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13008,7 +13008,7 @@ "TimeUnit", ") => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13022,7 +13022,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13037,7 +13037,7 @@ "signature": [ "TimeUnit" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13060,7 +13060,7 @@ "Maybe", ", { defaultValue = NOT_AVAILABLE_LABEL, extended }: FormatterOptions) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13075,7 +13075,7 @@ "Maybe", "" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13090,7 +13090,7 @@ "signature": [ "FormatterOptions" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13111,7 +13111,7 @@ "Maybe", ") => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/size.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -13126,7 +13126,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/size.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.ts", "deprecated": false, "trackAdoption": false } @@ -13143,7 +13143,7 @@ "signature": [ "(value: number | null | undefined) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13157,7 +13157,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13178,7 +13178,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult: string) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13193,7 +13193,7 @@ "Maybe", "" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13208,7 +13208,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13223,7 +13223,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13251,7 +13251,7 @@ "text": "COMPARATORS" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13265,7 +13265,7 @@ "signature": [ "LegacyComparator" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13292,7 +13292,7 @@ }, ") => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13306,7 +13306,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13327,7 +13327,7 @@ "text": "TimeUnitChar" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13354,7 +13354,7 @@ }, ", spaceId: string, alertUuid: string | null) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13374,7 +13374,7 @@ "text": "IBasePath" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13389,7 +13389,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13404,7 +13404,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13439,7 +13439,7 @@ }, "> | undefined, publicBaseUrl?: string | undefined) => Promise" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13453,7 +13453,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13468,7 +13468,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13483,7 +13483,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13513,7 +13513,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13528,7 +13528,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13554,7 +13554,7 @@ "text": "TimeFormatter" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -13566,7 +13566,7 @@ "tags": [], "label": "max", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false } @@ -13610,7 +13610,7 @@ "text": "Request" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13621,7 +13621,7 @@ "tags": [], "label": "{\n esError,\n esRequestParams,\n esRequestStatus,\n esResponse,\n kibanaRequest,\n operationName,\n startTime,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13636,7 +13636,7 @@ "WrappedElasticsearchClientError", " | null" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13650,7 +13650,7 @@ "signature": [ "{ [x: string]: any; }" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13670,7 +13670,7 @@ "text": "RequestStatus" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13684,7 +13684,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13705,7 +13705,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13716,7 +13716,7 @@ "tags": [], "label": "operationName", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13727,7 +13727,7 @@ "tags": [], "label": "startTime", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false } @@ -13755,7 +13755,7 @@ }, ") => number" ], - "path": "x-pack/plugins/observability_solution/observability/common/progressive_loading.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13775,7 +13775,7 @@ "text": "ProgressiveLoadingQuality" } ], - "path": "x-pack/plugins/observability_solution/observability/common/progressive_loading.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13810,7 +13810,7 @@ "text": "SerializableRecord" } ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13821,7 +13821,7 @@ "tags": [], "label": "baseUrl", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13832,7 +13832,7 @@ "tags": [], "label": "spaceId", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13846,7 +13846,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13860,7 +13860,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13874,7 +13874,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13889,7 +13889,7 @@ "AlertStatus", " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false } @@ -13905,7 +13905,7 @@ "tags": [], "label": "ProcessorEvent", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/processor_event.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/processor_event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13917,7 +13917,7 @@ "tags": [], "label": "ProgressiveLoadingQuality", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/progressive_loading.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13949,7 +13949,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13964,7 +13964,7 @@ "signature": [ "\"ALERTS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13979,7 +13979,7 @@ "signature": [ "\"observability:apmAWSLambdaPriceFactor\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13994,7 +13994,7 @@ "signature": [ "\"observability:apmAWSLambdaRequestCostPerMillion\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14009,7 +14009,7 @@ "signature": [ "\"observability:apmEnableContinuousRollups\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14024,7 +14024,7 @@ "signature": [ "\"observability:apmEnableProfilingIntegration\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14039,7 +14039,7 @@ "signature": [ "\"observability:apmEnableServiceInventoryTableSearchBar\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14054,7 +14054,7 @@ "signature": [ "\"observability:apmEnableServiceMetrics\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14069,7 +14069,7 @@ "signature": [ "\"observability:apmEnableTableSearchBar\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14084,7 +14084,7 @@ "signature": [ "\"observability:apmEnableTransactionProfiling\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14099,7 +14099,7 @@ "signature": [ "\"observability:apmLabsButton\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14114,7 +14114,7 @@ "signature": [ "\"observability:apmProgressiveLoading\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14129,7 +14129,7 @@ "signature": [ "\"observability:apmServiceGroupMaxNumberOfServices\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14144,7 +14144,7 @@ "signature": [ "\"observability:apmServiceInventoryOptimizedSorting\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14159,7 +14159,7 @@ "signature": [ "\"observability:apmTraceExplorerTab\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14176,7 +14176,7 @@ "Maybe", ", { defaultValue, extended }?: FormatterOptions) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -14191,7 +14191,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -14205,7 +14205,7 @@ "signature": [ "FormatterOptions" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false } @@ -14224,7 +14224,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -14239,7 +14239,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false }, @@ -14253,7 +14253,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false }, @@ -14264,7 +14264,7 @@ "tags": [], "label": "fallbackResult", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false } @@ -14283,7 +14283,7 @@ "signature": [ "\"observabilityCases\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": true, "trackAdoption": false, "references": [], @@ -14299,7 +14299,7 @@ "signature": [ "\"observabilityCasesV2\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14314,7 +14314,7 @@ "signature": [ "\"observability:apmDefaultServiceEnvironment\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14329,7 +14329,7 @@ "signature": [ "\"observability:apmAgentExplorerView\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14344,7 +14344,7 @@ "signature": [ "\"observability:enableAwsLambdaMetrics\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14359,7 +14359,7 @@ "signature": [ "\"observability:enableComparisonByDefault\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14374,7 +14374,7 @@ "signature": [ "\"observability:apmEnableCriticalPath\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14389,7 +14389,7 @@ "signature": [ "\"observability:enableInfrastructureAssetCustomDashboards\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14404,7 +14404,7 @@ "signature": [ "\"observability:enableInfrastructureProfilingIntegration\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14419,7 +14419,7 @@ "signature": [ "\"observability:enableInspectEsQueries\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14434,7 +14434,7 @@ "signature": [ "\"observability:entityCentricExperience\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14449,7 +14449,7 @@ "signature": [ "\"observability:maxSuggestions\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14471,7 +14471,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/common/constants.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14486,7 +14486,7 @@ "signature": [ "\"observability-overview\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14501,7 +14501,7 @@ "signature": [ "\"observability\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14516,7 +14516,7 @@ "signature": [ "\"observability:profilingAWSCostDiscountRate\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14531,7 +14531,7 @@ "signature": [ "\"observability:profilingAzureCostDiscountRate\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14546,7 +14546,7 @@ "signature": [ "\"observability:profilingCo2PerKWH\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14561,7 +14561,7 @@ "signature": [ "\"observability:profilingCostPervCPUPerHour\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14576,7 +14576,7 @@ "signature": [ "\"observability:profilingDatacenterPUE\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14591,7 +14591,7 @@ "signature": [ "\"observability:profilingFetchTopNFunctionsFromStacktraces\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14606,7 +14606,7 @@ "signature": [ "\"observability:profilingPervCPUWattArm64\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14621,7 +14621,7 @@ "signature": [ "\"observability:profilingPerVCPUWattX86\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14636,7 +14636,7 @@ "signature": [ "\"observability:profilingShowErrorFrames\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14651,7 +14651,7 @@ "signature": [ "\"RULE_DETAILS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14666,7 +14666,7 @@ "signature": [ "\"RULES_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14681,7 +14681,7 @@ "signature": [ "\"SLO_DETAILS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14696,7 +14696,7 @@ "signature": [ "\"SLO_EDIT_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14711,7 +14711,7 @@ "signature": [ "\"slo\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14726,7 +14726,7 @@ "signature": [ "\"SLO_LIST_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14741,7 +14741,7 @@ "signature": [ "\"SYNTHETICS_EDIT_MONITOR_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14756,7 +14756,7 @@ "signature": [ "\"SYNTHETICS_MONITOR_DETAIL_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14771,7 +14771,7 @@ "signature": [ "\"SYNTHETICS_SETTINGS\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14786,7 +14786,7 @@ "signature": [ "\"observability:syntheticsThrottlingEnabled\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14803,7 +14803,7 @@ "Maybe", ", options?: FormatterOptions | undefined) => ConvertedDuration" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -14818,7 +14818,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -14832,7 +14832,7 @@ "signature": [ "FormatterOptions | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false } @@ -14849,7 +14849,7 @@ "signature": [ "\"m\" | \"s\" | \"d\" | \"h\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14864,7 +14864,7 @@ "signature": [ "\"UPTIME_OVERVIEW_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14881,7 +14881,7 @@ "signature": [ "{ alerts: string; annotations: string; alertDetails: (alertId: string) => string; rules: string; ruleDetails: (ruleId: string) => string; }" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 397f23be76136..4da8aa24a8b86 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.devdocs.json b/api_docs/observability_a_i_assistant.devdocs.json index 548b3f1e3fd6c..5a2aff04231f0 100644 --- a/api_docs/observability_a_i_assistant.devdocs.json +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -9,7 +9,7 @@ "tags": [], "label": "ShortIdTable", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -23,7 +23,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -39,7 +39,7 @@ "signature": [ "(originalId: string) => string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -53,7 +53,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -71,7 +71,7 @@ "signature": [ "(shortId: string) => string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -85,7 +85,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -102,7 +102,9 @@ "parentPluginId": "observabilityAIAssistant", "id": "def-public.AssistantAvatar", "type": "Function", - "tags": [], + "tags": [ + "deprecated" + ], "label": "AssistantAvatar", "description": [], "signature": [ @@ -110,9 +112,43 @@ "AssistantAvatarProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx", - "deprecated": false, + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx", + "deprecated": true, "trackAdoption": false, + "references": [ + { + "plugin": "@kbn/ai-assistant", + "path": "x-pack/packages/kbn-ai-assistant/src/chat/chat_header.tsx" + }, + { + "plugin": "@kbn/ai-assistant", + "path": "x-pack/packages/kbn-ai-assistant/src/chat/chat_header.tsx" + }, + { + "plugin": "@kbn/ai-assistant", + "path": "x-pack/packages/kbn-ai-assistant/src/chat/chat_item_avatar.tsx" + }, + { + "plugin": "@kbn/ai-assistant", + "path": "x-pack/packages/kbn-ai-assistant/src/chat/chat_item_avatar.tsx" + }, + { + "plugin": "searchAssistant", + "path": "x-pack/plugins/search_assistant/public/components/nav_control/index.tsx" + }, + { + "plugin": "searchAssistant", + "path": "x-pack/plugins/search_assistant/public/components/nav_control/index.tsx" + }, + { + "plugin": "observabilityAIAssistantApp", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx" + }, + { + "plugin": "observabilityAIAssistantApp", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx" + } + ], "children": [ { "parentPluginId": "observabilityAIAssistant", @@ -124,7 +160,7 @@ "signature": [ "AssistantAvatarProps" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -151,7 +187,7 @@ }, ") => void; onRegenerateClick: () => void; onStopGeneratingClick: () => void; }) => React.JSX.Element | null" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +198,7 @@ "tags": [], "label": "{\n error,\n loading,\n canRegenerate,\n canGiveFeedback,\n onFeedbackClick,\n onRegenerateClick,\n onStopGeneratingClick,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -176,7 +212,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false }, @@ -187,7 +223,7 @@ "tags": [], "label": "loading", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false }, @@ -198,7 +234,7 @@ "tags": [], "label": "canRegenerate", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false }, @@ -209,7 +245,7 @@ "tags": [], "label": "canGiveFeedback", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false }, @@ -231,7 +267,7 @@ }, ") => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -251,7 +287,7 @@ "text": "Feedback" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -269,7 +305,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -285,7 +321,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -315,7 +351,7 @@ "ConcatenatedMessage", ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -334,7 +370,7 @@ "UseGenAIConnectorsResult", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -348,7 +384,7 @@ "signature": [ "UseGenAIConnectorsResult" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -374,7 +410,7 @@ "text": "MessageAddEvent" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -385,7 +421,7 @@ "tags": [], "label": "{\n name,\n args,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -396,7 +432,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", "deprecated": false, "trackAdoption": false }, @@ -410,7 +446,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", "deprecated": false, "trackAdoption": false } @@ -437,7 +473,7 @@ "text": "MessageAddEvent" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -448,7 +484,7 @@ "tags": [], "label": "{\n name,\n content,\n data,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -459,7 +495,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false }, @@ -473,7 +509,7 @@ "signature": [ "unknown" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false }, @@ -487,7 +523,7 @@ "signature": [ "unknown" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false } @@ -509,7 +545,7 @@ "ScreenContextActionDefinition", ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -523,7 +559,7 @@ "signature": [ "TActionDefinition" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -538,7 +574,7 @@ "signature": [ "TRespondFunction" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -564,7 +600,7 @@ "text": "ObservabilityAIAssistantChatService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/storybook_mock.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/storybook_mock.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -588,7 +624,7 @@ "text": "ObservabilityAIAssistantService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/storybook_mock.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/storybook_mock.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -605,7 +641,7 @@ "signature": [ "() => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -622,7 +658,7 @@ "signature": [ "({ onClickFeedback }: FeedbackButtonsProps) => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -636,7 +672,7 @@ "signature": [ "FeedbackButtonsProps" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -655,7 +691,7 @@ "signature": [ "(type: string) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -669,7 +705,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -688,7 +724,7 @@ "signature": [ "({ loading, content, onActionClick }: Props) => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -702,7 +738,7 @@ "signature": [ "Props" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -729,7 +765,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -743,7 +779,7 @@ "signature": [ "({}: { signal: AbortSignal; }) => T | Promise" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -758,7 +794,7 @@ "signature": [ "any[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -770,7 +806,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -784,7 +820,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false }, @@ -798,7 +834,7 @@ "signature": [ "(() => T) | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -829,7 +865,7 @@ ") => ", "UseGenAIConnectorsResult" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -849,7 +885,7 @@ "text": "ObservabilityAIAssistantService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -867,7 +903,7 @@ "tags": [], "label": "Conversation", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -878,7 +914,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -892,7 +928,7 @@ "signature": [ "{ id?: string | undefined; name: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -908,7 +944,7 @@ "TokenCount", " | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -929,7 +965,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -943,7 +979,7 @@ "signature": [ "{ [x: string]: string; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -957,7 +993,7 @@ "signature": [ "{ [x: string]: number; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -968,7 +1004,7 @@ "tags": [], "label": "namespace", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -979,7 +1015,7 @@ "tags": [], "label": "public", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -993,7 +1029,7 @@ "tags": [], "label": "DiscoveredDataset", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1004,7 +1040,7 @@ "tags": [], "label": "title", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1015,7 +1051,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1029,7 +1065,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1043,7 +1079,7 @@ "signature": [ "unknown[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1067,7 +1103,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1078,7 +1114,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1089,7 +1125,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1110,7 +1146,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1124,7 +1160,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1138,7 +1174,7 @@ "signature": [ "TParameters | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false } @@ -1152,7 +1188,7 @@ "tags": [], "label": "KnowledgeBaseEntry", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1163,7 +1199,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1174,7 +1210,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1188,7 +1224,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1199,7 +1235,7 @@ "tags": [], "label": "text", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1213,7 +1249,7 @@ "signature": [ "\"medium\" | \"high\" | \"low\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1224,7 +1260,7 @@ "tags": [], "label": "is_correction", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1238,7 +1274,7 @@ "signature": [ "\"user_instruction\" | \"contextual\" | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1249,7 +1285,7 @@ "tags": [], "label": "public", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1263,7 +1299,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1283,7 +1319,7 @@ "text": "KnowledgeBaseEntryRole" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1297,7 +1333,7 @@ "signature": [ "{ name: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -1311,7 +1347,7 @@ "tags": [], "label": "Message", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1322,7 +1358,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1368,7 +1404,7 @@ }, ".Elastic; } | undefined; data?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -1382,7 +1418,7 @@ "tags": [], "label": "ObservabilityAIAssistantChatService", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1404,7 +1440,7 @@ }, ") => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1424,7 +1460,7 @@ "text": "TelemetryEventTypeWithPayload" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1484,7 +1520,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1498,7 +1534,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1510,7 +1546,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1531,7 +1567,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1542,7 +1578,7 @@ "tags": [], "label": "connectorId", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1572,7 +1608,7 @@ }, ">, \"name\" | \"description\" | \"parameters\">[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1586,7 +1622,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1600,7 +1636,7 @@ "signature": [ "AbortSignal" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1621,7 +1657,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1670,7 +1706,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1681,7 +1717,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1697,7 +1733,7 @@ "ObservabilityAIAssistantScreenContext", "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1713,7 +1749,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1724,7 +1760,7 @@ "tags": [], "label": "connectorId", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1745,7 +1781,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1756,7 +1792,7 @@ "tags": [], "label": "persist", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1770,7 +1806,7 @@ "signature": [ "boolean | { except: string[]; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1784,7 +1820,7 @@ "signature": [ "AbortSignal" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1799,7 +1835,7 @@ "AdHocInstruction", "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1820,7 +1856,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1863,7 +1899,7 @@ }, ">[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1874,7 +1910,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1888,7 +1924,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1902,7 +1938,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1923,7 +1959,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1959,7 +1995,7 @@ }, ">[]>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1973,7 +2009,7 @@ "signature": [ "(name: string) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1987,7 +2023,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2012,7 +2048,7 @@ "text": "Message" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2028,7 +2064,7 @@ "signature": [ "(name: string) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2042,7 +2078,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2068,7 +2104,7 @@ }, ") => React.ReactNode" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2082,7 +2118,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2097,7 +2133,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -2109,7 +2145,7 @@ "tags": [], "label": "response", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2123,7 +2159,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2137,7 +2173,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -2159,7 +2195,7 @@ "text": "ChatActionClickHandler" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2185,7 +2221,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2201,7 +2237,7 @@ "tags": [], "label": "ObservabilityAIAssistantService", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2498,7 +2534,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -3476,7 +3512,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -4163,7 +4199,7 @@ "ObservabilityAIAssistantRouteCreateOptions", ">; }, TEndpoint>>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -4178,7 +4214,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false }, @@ -4241,7 +4277,7 @@ }, "]" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -4257,7 +4293,7 @@ "signature": [ "() => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4281,7 +4317,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4292,7 +4328,7 @@ "tags": [], "label": "{}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4306,7 +4342,7 @@ "signature": [ "AbortSignal" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -4327,7 +4363,7 @@ "ChatRegistrationRenderFunction", ") => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4341,7 +4377,7 @@ "signature": [ "ChatRegistrationRenderFunction" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4361,7 +4397,7 @@ "ObservabilityAIAssistantScreenContext", ") => () => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4375,7 +4411,7 @@ "signature": [ "ObservabilityAIAssistantScreenContext" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4395,7 +4431,7 @@ "ObservabilityAIAssistantScreenContext", "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4411,7 +4447,7 @@ "signature": [ "ObservabilityAIAssistantConversationService" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -4435,7 +4471,7 @@ }, ">>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4449,7 +4485,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4476,7 +4512,7 @@ }, "[]>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -4498,7 +4534,7 @@ }, "[]) => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4519,7 +4555,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4545,7 +4581,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4561,7 +4597,7 @@ "tags": [], "label": "UseChatResult", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4582,7 +4618,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false }, @@ -4604,7 +4640,7 @@ }, "[]) => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4625,7 +4661,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4649,7 +4685,7 @@ "text": "ChatState" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false }, @@ -4671,7 +4707,7 @@ }, "[]) => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4692,7 +4728,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4710,7 +4746,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4728,7 +4764,7 @@ "tags": [], "label": "ChatActionClickType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4740,7 +4776,7 @@ "tags": [], "label": "ChatState", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4752,7 +4788,7 @@ "tags": [], "label": "FunctionVisibility", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4764,7 +4800,7 @@ "tags": [], "label": "KnowledgeBaseEntryRole", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4776,7 +4812,7 @@ "tags": [], "label": "KnowledgeBaseType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4788,7 +4824,7 @@ "tags": [], "label": "MessageRole", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4800,7 +4836,7 @@ "tags": [], "label": "ObservabilityAIAssistantTelemetryEventType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4812,7 +4848,7 @@ "tags": [], "label": "StreamingChatResponseEventType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4824,7 +4860,7 @@ "tags": [], "label": "VisualizeESQLUserIntention", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4841,7 +4877,7 @@ "signature": [ "(T extends Promise ? State : State) & { refresh: () => void; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4856,7 +4892,7 @@ "signature": [ "\"observability:logSources\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4871,7 +4907,7 @@ "signature": [ "\"aiAssistant:preferredAIAssistantType\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4886,7 +4922,7 @@ "signature": [ "\"observability:aiAssistantSearchConnectorIndexPattern\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4901,7 +4937,7 @@ "signature": [ "\"observability:aiAssistantSimulatedFunctionCalling\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5191,7 +5227,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -5904,7 +5940,7 @@ }, " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5919,7 +5955,7 @@ "signature": [ "(payload: ChatActionClickPayloadExecuteEsql) => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -5942,7 +5978,7 @@ }, "; } & { query: string; userOverrides?: unknown; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts", "deprecated": false, "trackAdoption": false } @@ -5967,7 +6003,7 @@ }, "; } & { query: string; userOverrides?: unknown; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5990,7 +6026,7 @@ }, ".ChatCompletionChunk; } & { id: string; message: { content?: string | undefined; function_call?: { name?: string | undefined; arguments?: string | undefined; } | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6079,7 +6115,7 @@ }, "[] | undefined; description?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6091,7 +6127,7 @@ "tags": [], "label": "elasticAiAssistantImage", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6106,7 +6142,7 @@ "signature": [ "\"negative\" | \"positive\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6396,7 +6432,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -7115,7 +7151,7 @@ }, " ? ClientRequestParamsOfType : TRouteParamsRT extends undefined ? {} : never : never" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7130,7 +7166,7 @@ "signature": [ "\"POST /internal/observability_ai_assistant/chat\" | \"POST /internal/observability_ai_assistant/chat/recall\" | \"POST /internal/observability_ai_assistant/chat/complete\" | \"POST /api/observability_ai_assistant/chat/complete 2023-10-31\" | \"GET /internal/observability_ai_assistant/conversation/{conversationId}\" | \"POST /internal/observability_ai_assistant/conversations\" | \"POST /internal/observability_ai_assistant/conversation\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}/title\" | \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\" | \"GET /internal/observability_ai_assistant/connectors\" | \"GET /internal/observability_ai_assistant/functions\" | \"POST /internal/observability_ai_assistant/functions/recall\" | \"POST /internal/observability_ai_assistant/functions/summarize\" | \"POST /internal/observability_ai_assistant/kb/semantic_text_migration\" | \"POST /internal/observability_ai_assistant/kb/setup\" | \"POST /internal/observability_ai_assistant/kb/reset\" | \"GET /internal/observability_ai_assistant/kb/status\" | \"GET /internal/observability_ai_assistant/kb/entries\" | \"PUT /internal/observability_ai_assistant/kb/user_instructions\" | \"POST /internal/observability_ai_assistant/kb/entries/import\" | \"GET /internal/observability_ai_assistant/kb/user_instructions\" | \"POST /internal/observability_ai_assistant/kb/entries/save\" | \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7153,7 +7189,7 @@ }, ") => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7165,7 +7201,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7187,7 +7223,7 @@ }, "; }) => React.ReactNode" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7210,7 +7246,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -7237,7 +7273,7 @@ }, "; }) => React.ReactNode" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7260,7 +7296,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -7331,7 +7367,7 @@ "InsightResponse", "; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7353,7 +7389,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7367,7 +7403,7 @@ "tags": [], "label": "aiAssistantCapabilities", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/capabilities.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/capabilities.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -7378,7 +7414,7 @@ "tags": [], "label": "show", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/capabilities.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/capabilities.ts", "deprecated": false, "trackAdoption": false } @@ -7393,7 +7429,7 @@ "tags": [], "label": "ObservabilityAIAssistantPublicSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -7407,7 +7443,7 @@ "tags": [], "label": "ObservabilityAIAssistantPublicStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -7427,7 +7463,7 @@ "text": "ObservabilityAIAssistantService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7443,7 +7479,7 @@ "InsightProps", "> | null" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7459,7 +7495,7 @@ "ChatFlyoutSecondSlotHandler", " | undefined>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7481,7 +7517,7 @@ }, " | undefined>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7502,7 +7538,7 @@ "text": "ObservabilityAIAssistantChatService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7519,7 +7555,7 @@ "() => ", "UseGenAIConnectorsResult" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -7544,7 +7580,7 @@ "text": "UseChatResult" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7615,7 +7651,7 @@ }, "[]; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false } @@ -7639,7 +7675,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -7650,7 +7686,7 @@ "tags": [], "label": "{}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -7661,7 +7697,7 @@ "tags": [], "label": "message", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7672,7 +7708,7 @@ "tags": [], "label": "instructions", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -7697,7 +7733,7 @@ "ScreenContextActionDefinition", ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7712,7 +7748,7 @@ "signature": [ "TActionDefinition" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false }, @@ -7726,7 +7762,7 @@ "signature": [ "TRespondFunction" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7757,7 +7793,7 @@ }, "[]; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -7771,258 +7807,1866 @@ } }, "server": { - "classes": [], - "functions": [ + "classes": [ { "parentPluginId": "observabilityAIAssistant", - "id": "def-server.streamIntoObservable", - "type": "Function", + "id": "def-server.ObservabilityAIAssistantClient", + "type": "Class", "tags": [], - "label": "streamIntoObservable", + "label": "ObservabilityAIAssistantClient", "description": [], - "signature": [ - "(readable: ", - "Readable", - ") => ", - "Observable", - "" - ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "observabilityAIAssistant", - "id": "def-server.streamIntoObservable.$1", - "type": "Object", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed", + "type": "Function", "tags": [], - "label": "readable", + "label": "Constructor", "description": [], "signature": [ - "Readable" + "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [], - "enums": [], - "misc": [ - { - "parentPluginId": "observabilityAIAssistant", - "id": "def-server.aiAssistantLogsIndexPattern", - "type": "string", - "tags": [], - "label": "aiAssistantLogsIndexPattern", - "description": [], - "signature": [ - "\"observability:logSources\"" - ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observabilityAIAssistant", - "id": "def-server.aiAssistantSearchConnectorIndexPattern", - "type": "string", - "tags": [], - "label": "aiAssistantSearchConnectorIndexPattern", - "description": [], - "signature": [ - "\"observability:aiAssistantSearchConnectorIndexPattern\"" - ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observabilityAIAssistant", - "id": "def-server.aiAssistantSimulatedFunctionCalling", - "type": "string", - "tags": [], - "label": "aiAssistantSimulatedFunctionCalling", - "description": [], - "signature": [ - "\"observability:aiAssistantSimulatedFunctionCalling\"" - ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observabilityAIAssistant", - "id": "def-server.ObservabilityAIAssistantServerRouteRepository", - "type": "Type", - "tags": [], - "label": "ObservabilityAIAssistantServerRouteRepository", - "description": [], - "signature": [ - "{ \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\": ", - { - "pluginId": "@kbn/server-route-repository-utils", - "scope": "common", - "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", - "section": "def-common.ServerRoute", - "text": "ServerRoute" - }, - "<\"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\", ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ entryId: ", - "StringC", - "; }>; }>, ", - "ObservabilityAIAssistantRouteHandlerResources", - ", void, ", - "ObservabilityAIAssistantRouteCreateOptions", - ">; \"POST /internal/observability_ai_assistant/kb/entries/save\": ", - { - "pluginId": "@kbn/server-route-repository-utils", - "scope": "common", - "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", - "section": "def-common.ServerRoute", - "text": "ServerRoute" - }, - "<\"POST /internal/observability_ai_assistant/kb/entries/save\", ", - "TypeC", - "<{ body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ id: ", - "StringC", - "; title: ", - "StringC", - "; text: ", - "BrandC", - "<", - "StringC", - ", ", - { - "pluginId": "@kbn/io-ts-utils", - "scope": "common", - "docId": "kibKbnIoTsUtilsPluginApi", - "section": "def-common.NonEmptyStringBrand", - "text": "NonEmptyStringBrand" - }, - ">; }>, ", - "PartialC", - "<{ confidence: ", - "UnionC", - "<[", - "LiteralC", - "<\"low\">, ", - "LiteralC", - "<\"medium\">, ", - "LiteralC", - "<\"high\">]>; is_correction: ", - "Type", - "; public: ", - "Type", - "; labels: ", - "RecordC", - "<", - "StringC", - ", ", - "StringC", - ">; role: ", - "UnionC", - "<[", - "LiteralC", - "<", - { - "pluginId": "observabilityAIAssistant", - "scope": "common", - "docId": "kibObservabilityAIAssistantPluginApi", - "section": "def-common.KnowledgeBaseEntryRole", - "text": "KnowledgeBaseEntryRole" - }, - ".AssistantSummarization>, ", - "LiteralC", - "<", - { - "pluginId": "observabilityAIAssistant", - "scope": "common", - "docId": "kibObservabilityAIAssistantPluginApi", - "section": "def-common.KnowledgeBaseEntryRole", - "text": "KnowledgeBaseEntryRole" - }, - ".UserEntry>, ", - "LiteralC", - "<", - { - "pluginId": "observabilityAIAssistant", - "scope": "common", - "docId": "kibObservabilityAIAssistantPluginApi", - "section": "def-common.KnowledgeBaseEntryRole", - "text": "KnowledgeBaseEntryRole" - }, - ".Elastic>]>; }>]>; }>, ", - "ObservabilityAIAssistantRouteHandlerResources", - ", void, ", - "ObservabilityAIAssistantRouteCreateOptions", - ">; \"GET /internal/observability_ai_assistant/kb/user_instructions\": ", - { - "pluginId": "@kbn/server-route-repository-utils", - "scope": "common", - "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", - "section": "def-common.ServerRoute", - "text": "ServerRoute" - }, - "<\"GET /internal/observability_ai_assistant/kb/user_instructions\", undefined, ", - "ObservabilityAIAssistantRouteHandlerResources", - ", { userInstructions: (", - "Instruction", - " & { public?: boolean | undefined; })[]; }, ", - "ObservabilityAIAssistantRouteCreateOptions", - ">; \"POST /internal/observability_ai_assistant/kb/entries/import\": ", - { - "pluginId": "@kbn/server-route-repository-utils", - "scope": "common", - "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", - "section": "def-common.ServerRoute", - "text": "ServerRoute" - }, - "<\"POST /internal/observability_ai_assistant/kb/entries/import\", ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ entries: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ id: ", - "StringC", - "; title: ", - "StringC", - "; text: ", - "BrandC", - "<", - "StringC", - ", ", - { - "pluginId": "@kbn/io-ts-utils", - "scope": "common", - "docId": "kibKbnIoTsUtilsPluginApi", - "section": "def-common.NonEmptyStringBrand", - "text": "NonEmptyStringBrand" - }, - ">; }>, ", - "PartialC", - "<{ confidence: ", - "UnionC", + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "dependencies", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.config", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "{ readonly scope?: \"search\" | \"observability\" | undefined; readonly enabled: boolean; readonly enableKnowledgeBase: boolean; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.core", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-lifecycle-server", + "scope": "server", + "docId": "kibKbnCoreLifecycleServerPluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + "<", + "ObservabilityAIAssistantPluginStartDependencies", + ", unknown>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.actionsClient", + "type": "Object", + "tags": [], + "label": "actionsClient", + "description": [], + "signature": [ + "{ execute: (connectorExecuteParams: ", + "ConnectorExecuteParams", + ") => Promise<", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ActionTypeExecutorResult", + "text": "ActionTypeExecutorResult" + }, + ">; create: ({ action, options, }: Omit<", + "ConnectorCreateParams", + ", \"context\">) => Promise<", + "Connector", + ">; update: ({ id, action, }: Pick<", + "ConnectorUpdateParams", + ", \"id\" | \"action\">) => Promise<", + "Connector", + ">; get: ({ id, throwIfSystemAction, }: { id: string; throwIfSystemAction?: boolean | undefined; }) => Promise<", + "Connector", + ">; getAll: ({ includeSystemActions }?: { includeSystemActions?: boolean | undefined; }) => Promise<", + { + "pluginId": "actions", + "scope": "server", + "docId": "kibActionsPluginApi", + "section": "def-server.ConnectorWithExtraFindData", + "text": "ConnectorWithExtraFindData" + }, + "[]>; getAllSystemConnectors: () => Promise<", + { + "pluginId": "actions", + "scope": "server", + "docId": "kibActionsPluginApi", + "section": "def-server.ConnectorWithExtraFindData", + "text": "ConnectorWithExtraFindData" + }, + "[]>; getBulk: ({ ids, throwIfSystemAction, }: { ids: string[]; throwIfSystemAction?: boolean | undefined; }) => Promise<", + "Connector", + "[]>; getOAuthAccessToken: ({ type, options }: Readonly<{} & { type: \"jwt\" | \"client\"; options: Readonly<{} & { tokenUrl: string; config: Readonly<{} & { clientId: string; jwtKeyId: string; userIdentifierValue: string; }>; secrets: Readonly<{ privateKeyPassword?: string | undefined; } & { clientSecret: string; privateKey: string; }>; }> | Readonly<{} & { tokenUrl: string; config: Readonly<{} & { clientId: string; tenantId: string; }>; secrets: Readonly<{} & { clientSecret: string; }>; scope: string; }>; }>, configurationUtilities: ", + "ActionsConfigurationUtilities", + ") => Promise<{ accessToken: string | null; }>; delete: ({ id }: { id: string; }) => Promise<{}>; bulkEnqueueExecution: (options: ", + "ExecuteOptions", + "[]) => Promise<", + "ExecutionResponse", + ">; listTypes: ({ featureId, includeSystemActionTypes, }?: ", + "ListTypesParams", + ") => Promise<", + "ConnectorType", + "[]>; isActionTypeEnabled: (actionTypeId: string, options?: { notifyUsage: boolean; }) => boolean; isPreconfigured: (connectorId: string) => boolean; isSystemAction: (connectorId: string) => boolean; getGlobalExecutionLogWithAuth: ({ dateStart, dateEnd, filter, page, perPage, sort, namespaces, }: ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.GetGlobalExecutionLogParams", + "text": "GetGlobalExecutionLogParams" + }, + ") => Promise<", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.IExecutionLogResult", + "text": "IExecutionLogResult" + }, + ">; getGlobalExecutionKpiWithAuth: ({ dateStart, dateEnd, filter, namespaces, }: ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.GetGlobalExecutionKPIParams", + "text": "GetGlobalExecutionKPIParams" + }, + ") => Promise<{ success: number; unknown: number; failure: number; warning: number; }>; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.uiSettingsClient", + "type": "Object", + "tags": [], + "label": "uiSettingsClient", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-ui-settings-server", + "scope": "server", + "docId": "kibKbnCoreUiSettingsServerPluginApi", + "section": "def-server.IUiSettingsClient", + "text": "IUiSettingsClient" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.namespace", + "type": "string", + "tags": [], + "label": "namespace", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.esClient", + "type": "Object", + "tags": [], + "label": "esClient", + "description": [], + "signature": [ + "{ asInternalUser: ", + { + "pluginId": "@kbn/core-elasticsearch-server", + "scope": "server", + "docId": "kibKbnCoreElasticsearchServerPluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + "; asCurrentUser: ", + { + "pluginId": "@kbn/core-elasticsearch-server", + "scope": "server", + "docId": "kibKbnCoreElasticsearchServerPluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + "; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.inferenceClient", + "type": "Object", + "tags": [], + "label": "inferenceClient", + "description": [], + "signature": [ + { + "pluginId": "inference", + "scope": "server", + "docId": "kibInferencePluginApi", + "section": "def-server.InferenceClient", + "text": "InferenceClient" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.logger", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.Logger", + "text": "Logger" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.user", + "type": "Object", + "tags": [], + "label": "user", + "description": [], + "signature": [ + "{ id?: string | undefined; name: string; } | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.knowledgeBaseService", + "type": "Object", + "tags": [], + "label": "knowledgeBaseService", + "description": [], + "signature": [ + "KnowledgeBaseService" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.scopes", + "type": "Array", + "tags": [], + "label": "scopes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ai-assistant-common", + "scope": "common", + "docId": "kibKbnAiAssistantCommonPluginApi", + "section": "def-common.AssistantScope", + "text": "AssistantScope" + }, + "[]" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "(conversationId: string) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.get.$1", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.delete", + "type": "Function", + "tags": [], + "label": "delete", + "description": [], + "signature": [ + "(conversationId: string) => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.delete.$1", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete", + "type": "Function", + "tags": [], + "label": "complete", + "description": [], + "signature": [ + "({ functionClient, connectorId, simulateFunctionCalling, instructions: adHocInstructions, messages: initialMessages, signal, persist, kibanaPublicUrl, isPublic, title: predefinedTitle, conversationId: predefinedConversationId, disableFunctions, }: { messages: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]; connectorId: string; signal: AbortSignal; functionClient: ", + "ChatFunctionClient", + "; persist: boolean; conversationId?: string | undefined; title?: string | undefined; isPublic?: boolean | undefined; kibanaPublicUrl?: string | undefined; instructions?: ", + "AdHocInstruction", + "[] | undefined; simulateFunctionCalling?: boolean | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; }) => ", + "Observable", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ConversationCreateEvent", + "text": "ConversationCreateEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ConversationUpdateEvent", + "text": "ConversationUpdateEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageAddEvent", + "text": "MessageAddEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ChatCompletionChunkEvent", + "text": "ChatCompletionChunkEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ChatCompletionMessageEvent", + "text": "ChatCompletionMessageEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.TokenCountEvent", + "text": "TokenCountEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.BufferFlushEvent", + "text": "BufferFlushEvent" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1", + "type": "Object", + "tags": [], + "label": "{\n functionClient,\n connectorId,\n simulateFunctionCalling = false,\n instructions: adHocInstructions = [],\n messages: initialMessages,\n signal,\n persist,\n kibanaPublicUrl,\n isPublic,\n title: predefinedTitle,\n conversationId: predefinedConversationId,\n disableFunctions = false,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.messages", + "type": "Array", + "tags": [], + "label": "messages", + "description": [], + "signature": [ + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.connectorId", + "type": "string", + "tags": [], + "label": "connectorId", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.signal", + "type": "Object", + "tags": [], + "label": "signal", + "description": [], + "signature": [ + "AbortSignal" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.functionClient", + "type": "Object", + "tags": [], + "label": "functionClient", + "description": [], + "signature": [ + "ChatFunctionClient" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.persist", + "type": "boolean", + "tags": [], + "label": "persist", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.conversationId", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.isPublic", + "type": "CompoundType", + "tags": [], + "label": "isPublic", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.kibanaPublicUrl", + "type": "string", + "tags": [], + "label": "kibanaPublicUrl", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.instructions", + "type": "Array", + "tags": [], + "label": "instructions", + "description": [], + "signature": [ + "AdHocInstruction", + "[] | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.simulateFunctionCalling", + "type": "CompoundType", + "tags": [], + "label": "simulateFunctionCalling", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.disableFunctions", + "type": "CompoundType", + "tags": [], + "label": "disableFunctions", + "description": [], + "signature": [ + "boolean | { except: string[]; } | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat", + "type": "Function", + "tags": [], + "label": "chat", + "description": [], + "signature": [ + "(name: string, { messages, connectorId, functions, functionCall, signal, simulateFunctionCalling, tracer, }: { messages: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]; connectorId: string; functions?: { name: string; description: string; parameters?: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.CompatibleJSONSchema", + "text": "CompatibleJSONSchema" + }, + " | undefined; }[] | undefined; functionCall?: string | undefined; signal: AbortSignal; simulateFunctionCalling?: boolean | undefined; tracer: ", + "LangTracer", + "; }) => ", + "Observable", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ChatCompletionChunkEvent", + "text": "ChatCompletionChunkEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ChatCompletionMessageEvent", + "text": "ChatCompletionMessageEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.TokenCountEvent", + "text": "TokenCountEvent" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2", + "type": "Object", + "tags": [], + "label": "{\n messages,\n connectorId,\n functions,\n functionCall,\n signal,\n simulateFunctionCalling,\n tracer,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.messages", + "type": "Array", + "tags": [], + "label": "messages", + "description": [], + "signature": [ + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.connectorId", + "type": "string", + "tags": [], + "label": "connectorId", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.functions", + "type": "Array", + "tags": [], + "label": "functions", + "description": [], + "signature": [ + "{ name: string; description: string; parameters?: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.CompatibleJSONSchema", + "text": "CompatibleJSONSchema" + }, + " | undefined; }[] | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.functionCall", + "type": "string", + "tags": [], + "label": "functionCall", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.signal", + "type": "Object", + "tags": [], + "label": "signal", + "description": [], + "signature": [ + "AbortSignal" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.simulateFunctionCalling", + "type": "CompoundType", + "tags": [], + "label": "simulateFunctionCalling", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.tracer", + "type": "Object", + "tags": [], + "label": "tracer", + "description": [], + "signature": [ + "LangTracer" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.find", + "type": "Function", + "tags": [], + "label": "find", + "description": [], + "signature": [ + "(options?: { query?: string | undefined; } | undefined) => Promise<{ conversations: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + "[]; }>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.find.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.find.$1.query", + "type": "string", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.update", + "type": "Function", + "tags": [], + "label": "update", + "description": [], + "signature": [ + "(conversationId: string, conversation: ", + "ConversationUpdateRequest", + ") => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.update.$1", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.update.$2", + "type": "CompoundType", + "tags": [], + "label": "conversation", + "description": [], + "signature": [ + "ConversationUpdateRequest" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setTitle", + "type": "Function", + "tags": [], + "label": "setTitle", + "description": [], + "signature": [ + "({ conversationId, title }: { conversationId: string; title: string; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setTitle.$1", + "type": "Object", + "tags": [], + "label": "{ conversationId, title }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setTitle.$1.conversationId", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setTitle.$1.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "(conversation: ", + "ConversationRequestBase", + ") => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.create.$1", + "type": "CompoundType", + "tags": [], + "label": "conversation", + "description": [], + "signature": [ + "ConversationRequestBase" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall", + "type": "Function", + "tags": [], + "label": "recall", + "description": [], + "signature": [ + "({ queries, categories, limit, }: { queries: { text: string; boost?: number | undefined; }[]; categories?: string[] | undefined; limit?: { size?: number | undefined; tokenCount?: number | undefined; } | undefined; }) => Promise<", + "RecalledEntry", + "[]>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall.$1", + "type": "Object", + "tags": [], + "label": "{\n queries,\n categories,\n limit,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall.$1.queries", + "type": "Array", + "tags": [], + "label": "queries", + "description": [], + "signature": [ + "{ text: string; boost?: number | undefined; }[]" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall.$1.categories", + "type": "Array", + "tags": [], + "label": "categories", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall.$1.limit", + "type": "Object", + "tags": [], + "label": "limit", + "description": [], + "signature": [ + "{ size?: number | undefined; tokenCount?: number | undefined; } | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseStatus", + "type": "Function", + "tags": [], + "label": "getKnowledgeBaseStatus", + "description": [], + "signature": [ + "() => Promise<{ ready: boolean; enabled: boolean; errorMessage: string; endpoint?: undefined; model_stats?: undefined; } | { endpoint: ", + "InferenceInferenceEndpointInfo", + "; ready: boolean; enabled: boolean; model_stats: { allocation_count: number; deployment_state: ", + "MlDeploymentAssignmentState", + " | undefined; allocation_state: ", + "MlDeploymentAllocationState", + " | undefined; }; errorMessage?: undefined; }>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setupKnowledgeBase", + "type": "Function", + "tags": [], + "label": "setupKnowledgeBase", + "description": [], + "signature": [ + "(modelId: string | undefined) => Promise<", + "InferenceInferenceEndpointInfo", + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setupKnowledgeBase.$1", + "type": "string", + "tags": [], + "label": "modelId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.resetKnowledgeBase", + "type": "Function", + "tags": [], + "label": "resetKnowledgeBase", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.migrateKnowledgeBaseToSemanticText", + "type": "Function", + "tags": [], + "label": "migrateKnowledgeBaseToSemanticText", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addUserInstruction", + "type": "Function", + "tags": [], + "label": "addUserInstruction", + "description": [], + "signature": [ + "({ entry, }: { entry: Omit<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntry", + "text": "KnowledgeBaseEntry" + }, + ", \"type\" | \"@timestamp\" | \"role\" | \"confidence\" | \"is_correction\">; }) => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addUserInstruction.$1", + "type": "Object", + "tags": [], + "label": "{\n entry,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addUserInstruction.$1.entry", + "type": "Object", + "tags": [], + "label": "entry", + "description": [], + "signature": [ + "{ id: string; text: string; title?: string | undefined; labels?: Record | undefined; public: boolean; user?: { name: string; } | undefined; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addKnowledgeBaseEntry", + "type": "Function", + "tags": [], + "label": "addKnowledgeBaseEntry", + "description": [], + "signature": [ + "({ entry, }: { entry: Omit<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntry", + "text": "KnowledgeBaseEntry" + }, + ", \"type\" | \"@timestamp\">; }) => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addKnowledgeBaseEntry.$1", + "type": "Object", + "tags": [], + "label": "{\n entry,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addKnowledgeBaseEntry.$1.entry", + "type": "Object", + "tags": [], + "label": "entry", + "description": [], + "signature": [ + "{ id: string; text: string; title?: string | undefined; role: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntryRole", + "text": "KnowledgeBaseEntryRole" + }, + "; labels?: Record | undefined; public: boolean; user?: { name: string; } | undefined; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries", + "type": "Function", + "tags": [], + "label": "getKnowledgeBaseEntries", + "description": [], + "signature": [ + "({ query, sortBy, sortDirection, }: { query: string; sortBy: string; sortDirection: \"asc\" | \"desc\"; }) => Promise<{ entries: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntry", + "text": "KnowledgeBaseEntry" + }, + "[]; }>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries.$1", + "type": "Object", + "tags": [], + "label": "{\n query,\n sortBy,\n sortDirection,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries.$1.query", + "type": "string", + "tags": [], + "label": "query", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries.$1.sortBy", + "type": "string", + "tags": [], + "label": "sortBy", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries.$1.sortDirection", + "type": "CompoundType", + "tags": [], + "label": "sortDirection", + "description": [], + "signature": [ + "\"asc\" | \"desc\"" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.deleteKnowledgeBaseEntry", + "type": "Function", + "tags": [], + "label": "deleteKnowledgeBaseEntry", + "description": [], + "signature": [ + "(id: string) => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.deleteKnowledgeBaseEntry.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseUserInstructions", + "type": "Function", + "tags": [], + "label": "getKnowledgeBaseUserInstructions", + "description": [], + "signature": [ + "() => Promise<(", + "Instruction", + " & { public?: boolean | undefined; })[]>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionRequestMessage", + "type": "Function", + "tags": [], + "label": "createFunctionRequestMessage", + "description": [], + "signature": [ + "({\n name,\n args,\n}: { name: string; args?: Record | undefined; }) => ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageAddEvent", + "text": "MessageAddEvent" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionRequestMessage.$1", + "type": "Object", + "tags": [], + "label": "{\n name,\n args,\n}", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionRequestMessage.$1.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionRequestMessage.$1.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "Record | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage", + "type": "Function", + "tags": [], + "label": "createFunctionResponseMessage", + "description": [], + "signature": [ + "({\n name,\n content,\n data,\n}: { name: string; content: unknown; data?: unknown; }) => ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageAddEvent", + "text": "MessageAddEvent" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage.$1", + "type": "Object", + "tags": [], + "label": "{\n name,\n content,\n data,\n}", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage.$1.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage.$1.content", + "type": "Unknown", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "unknown" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage.$1.data", + "type": "Unknown", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "unknown" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.streamIntoObservable", + "type": "Function", + "tags": [], + "label": "streamIntoObservable", + "description": [], + "signature": [ + "(readable: ", + "Readable", + ") => ", + "Observable", + "" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.streamIntoObservable.$1", + "type": "Object", + "tags": [], + "label": "readable", + "description": [], + "signature": [ + "Readable" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.aiAssistantLogsIndexPattern", + "type": "string", + "tags": [], + "label": "aiAssistantLogsIndexPattern", + "description": [], + "signature": [ + "\"observability:logSources\"" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.aiAssistantSearchConnectorIndexPattern", + "type": "string", + "tags": [], + "label": "aiAssistantSearchConnectorIndexPattern", + "description": [], + "signature": [ + "\"observability:aiAssistantSearchConnectorIndexPattern\"" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.aiAssistantSimulatedFunctionCalling", + "type": "string", + "tags": [], + "label": "aiAssistantSimulatedFunctionCalling", + "description": [], + "signature": [ + "\"observability:aiAssistantSimulatedFunctionCalling\"" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantServerRouteRepository", + "type": "Type", + "tags": [], + "label": "ObservabilityAIAssistantServerRouteRepository", + "description": [], + "signature": [ + "{ \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\", ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ entryId: ", + "StringC", + "; }>; }>, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", void, ", + "ObservabilityAIAssistantRouteCreateOptions", + ">; \"POST /internal/observability_ai_assistant/kb/entries/save\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability_ai_assistant/kb/entries/save\", ", + "TypeC", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", + "<{ id: ", + "StringC", + "; title: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; }>, ", + "PartialC", + "<{ confidence: ", + "UnionC", + "<[", + "LiteralC", + "<\"low\">, ", + "LiteralC", + "<\"medium\">, ", + "LiteralC", + "<\"high\">]>; is_correction: ", + "Type", + "; public: ", + "Type", + "; labels: ", + "RecordC", + "<", + "StringC", + ", ", + "StringC", + ">; role: ", + "UnionC", + "<[", + "LiteralC", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntryRole", + "text": "KnowledgeBaseEntryRole" + }, + ".AssistantSummarization>, ", + "LiteralC", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntryRole", + "text": "KnowledgeBaseEntryRole" + }, + ".UserEntry>, ", + "LiteralC", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntryRole", + "text": "KnowledgeBaseEntryRole" + }, + ".Elastic>]>; }>]>; }>, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", void, ", + "ObservabilityAIAssistantRouteCreateOptions", + ">; \"GET /internal/observability_ai_assistant/kb/user_instructions\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"GET /internal/observability_ai_assistant/kb/user_instructions\", undefined, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", { userInstructions: (", + "Instruction", + " & { public?: boolean | undefined; })[]; }, ", + "ObservabilityAIAssistantRouteCreateOptions", + ">; \"POST /internal/observability_ai_assistant/kb/entries/import\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability_ai_assistant/kb/entries/import\", ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ entries: ", + "ArrayC", + "<", + "IntersectionC", + "<[", + "TypeC", + "<{ id: ", + "StringC", + "; title: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; }>, ", + "PartialC", + "<{ confidence: ", + "UnionC", "<[", "LiteralC", "<\"low\">, ", @@ -8144,7 +9788,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -8831,7 +10475,7 @@ "ObservabilityAIAssistantRouteCreateOptions", ">; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8847,7 +10491,13 @@ "({}: { signal: AbortSignal; resources: ", "RespondFunctionResources", "; client: ", - "ObservabilityAIAssistantClient", + { + "pluginId": "observabilityAIAssistant", + "scope": "server", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-server.ObservabilityAIAssistantClient", + "text": "ObservabilityAIAssistantClient" + }, "; functions: ", "ChatFunctionClient", "; scopes: ", @@ -8860,7 +10510,7 @@ }, "[]; }) => Promise" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -8876,7 +10526,13 @@ "{ signal: AbortSignal; resources: ", "RespondFunctionResources", "; client: ", - "ObservabilityAIAssistantClient", + { + "pluginId": "observabilityAIAssistant", + "scope": "server", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-server.ObservabilityAIAssistantClient", + "text": "ObservabilityAIAssistantClient" + }, "; functions: ", "ChatFunctionClient", "; scopes: ", @@ -8889,7 +10545,7 @@ }, "[]; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/types.ts", "deprecated": false, "trackAdoption": false } @@ -8905,7 +10561,7 @@ "tags": [], "label": "ObservabilityAIAssistantServerStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8921,7 +10577,7 @@ "signature": [ "ObservabilityAIAssistantService" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -8936,7 +10592,7 @@ "tags": [], "label": "ObservabilityAIAssistantServerSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8952,7 +10608,7 @@ "signature": [ "ObservabilityAIAssistantService" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -8980,7 +10636,7 @@ }, " extends Error" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8994,7 +10650,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9008,7 +10664,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9023,7 +10679,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9038,7 +10694,7 @@ "signature": [ "ErrorMetaAttributes[T]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9056,7 +10712,7 @@ "tags": [], "label": "ShortIdTable", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9070,7 +10726,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -9086,7 +10742,7 @@ "signature": [ "(originalId: string) => string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9100,7 +10756,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9118,7 +10774,7 @@ "signature": [ "(shortId: string) => string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9132,7 +10788,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9163,7 +10819,7 @@ "ConcatenatedMessage", ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -9196,7 +10852,7 @@ }, ".NotFoundError>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -9229,7 +10885,7 @@ }, ".FunctionNotFoundError>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9243,7 +10899,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9278,7 +10934,7 @@ }, ".InternalError>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9292,7 +10948,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9327,7 +10983,7 @@ }, ".TokenLimitReachedError>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9341,7 +10997,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -9356,7 +11012,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -9375,7 +11031,7 @@ "signature": [ "(error: Error) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9389,7 +11045,7 @@ "signature": [ "Error" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9408,7 +11064,7 @@ "signature": [ "(type: string) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9422,7 +11078,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9441,7 +11097,7 @@ "signature": [ "(error: Error) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9455,7 +11111,7 @@ "signature": [ "Error" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9473,7 +11129,7 @@ "tags": [], "label": "Conversation", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9484,7 +11140,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9498,7 +11154,7 @@ "signature": [ "{ id?: string | undefined; name: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9514,7 +11170,7 @@ "TokenCount", " | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9535,7 +11191,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9549,7 +11205,7 @@ "signature": [ "{ [x: string]: string; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9563,7 +11219,7 @@ "signature": [ "{ [x: string]: number; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9574,7 +11230,7 @@ "tags": [], "label": "namespace", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9585,7 +11241,7 @@ "tags": [], "label": "public", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -9609,7 +11265,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9620,7 +11276,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9631,7 +11287,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9652,7 +11308,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9666,7 +11322,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9680,7 +11336,7 @@ "signature": [ "TParameters | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false } @@ -9694,7 +11350,7 @@ "tags": [], "label": "KnowledgeBaseEntry", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9705,7 +11361,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9716,7 +11372,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9730,7 +11386,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9741,7 +11397,7 @@ "tags": [], "label": "text", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9755,7 +11411,7 @@ "signature": [ "\"medium\" | \"high\" | \"low\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9766,7 +11422,7 @@ "tags": [], "label": "is_correction", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9780,7 +11436,7 @@ "signature": [ "\"user_instruction\" | \"contextual\" | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9791,7 +11447,7 @@ "tags": [], "label": "public", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9805,7 +11461,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9825,7 +11481,7 @@ "text": "KnowledgeBaseEntryRole" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9839,7 +11495,7 @@ "signature": [ "{ name: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -9853,7 +11509,7 @@ "tags": [], "label": "Message", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9864,7 +11520,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9910,7 +11566,7 @@ }, ".Elastic; } | undefined; data?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -9926,7 +11582,7 @@ "tags": [], "label": "ChatCompletionErrorCode", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9938,7 +11594,7 @@ "tags": [], "label": "FunctionVisibility", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9950,7 +11606,7 @@ "tags": [], "label": "KnowledgeBaseEntryRole", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9962,7 +11618,7 @@ "tags": [], "label": "KnowledgeBaseType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9974,7 +11630,7 @@ "tags": [], "label": "MessageRole", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9986,7 +11642,7 @@ "tags": [], "label": "StreamingChatResponseEventType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9998,7 +11654,7 @@ "tags": [], "label": "VisualizeESQLUserIntention", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10015,7 +11671,7 @@ "signature": [ "\"observability:logSources\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10030,7 +11686,7 @@ "signature": [ "\"observability:aiAssistantSearchConnectorIndexPattern\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10045,7 +11701,7 @@ "signature": [ "\"observability:aiAssistantSimulatedFunctionCalling\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10068,7 +11724,7 @@ }, ".BufferFlush; } & { data?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10091,7 +11747,7 @@ }, ".ChatCompletionChunk; } & { id: string; message: { content?: string | undefined; function_call?: { name?: string | undefined; arguments?: string | undefined; } | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10122,7 +11778,7 @@ }, " | undefined; meta?: Record | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10145,7 +11801,7 @@ }, ".ChatCompletionMessage; } & { id: string; message: { content?: string | undefined; function_call?: { name?: string | undefined; arguments?: string | undefined; } | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10234,7 +11890,7 @@ }, "[] | undefined; description?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10259,7 +11915,7 @@ "TokenCount", " | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10284,7 +11940,7 @@ "TokenCount", " | undefined; id?: string | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10309,7 +11965,7 @@ "TokenCount", " | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10340,7 +11996,7 @@ }, "; id: string; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10417,7 +12073,7 @@ "text": "BufferFlushEvent" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10486,7 +12142,7 @@ "text": "BufferFlushEvent" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10509,7 +12165,7 @@ }, ".TokenCount; } & { tokens: { completion: number; prompt: number; total: number; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10531,7 +12187,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index a238101a6e23b..f7dd0abb22396 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 298 | 1 | 296 | 28 | +| 385 | 1 | 383 | 30 | ## Client @@ -60,6 +60,9 @@ Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai ### Functions +### Classes + + ### Consts, variables and types diff --git a/api_docs/observability_a_i_assistant_app.devdocs.json b/api_docs/observability_a_i_assistant_app.devdocs.json index b20b594df3987..d583c2ff125c9 100644 --- a/api_docs/observability_a_i_assistant_app.devdocs.json +++ b/api_docs/observability_a_i_assistant_app.devdocs.json @@ -6,7 +6,69 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [], + "setup": { + "parentPluginId": "observabilityAIAssistantApp", + "id": "def-public.ObservabilityAIAssistantAppPublicSetup", + "type": "Interface", + "tags": [], + "label": "ObservabilityAIAssistantAppPublicSetup", + "description": [], + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "observabilityAIAssistantApp", + "id": "def-public.ObservabilityAIAssistantAppPublicStart", + "type": "Interface", + "tags": [], + "label": "ObservabilityAIAssistantAppPublicStart", + "description": [], + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistantApp", + "id": "def-public.ObservabilityAIAssistantAppPublicStart.RootCauseAnalysisContainer", + "type": "Function", + "tags": [], + "label": "RootCauseAnalysisContainer", + "description": [], + "signature": [ + "React.ExoticComponent<{ events?: ", + "RootCauseAnalysisEvent", + "[] | undefined; completeInBackground: boolean; onStartAnalysisClick: () => void; onStopAnalysisClick: () => void; onResetAnalysisClick: () => void; onClearAnalysisClick: () => void; onCompleteInBackgroundClick: () => void; loading: boolean; error?: Error | undefined; }>" + ], + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "observabilityAIAssistantApp", + "id": "def-public.ObservabilityAIAssistantAppPublicStart.RootCauseAnalysisContainer.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/ts5.0/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "lifecycle": "start", + "initialIsOpen": true + } }, "server": { "classes": [], @@ -24,7 +86,7 @@ "signature": [ "\"changes\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/index.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -39,7 +101,7 @@ "signature": [ "\"query\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -53,7 +115,7 @@ "tags": [], "label": "ObservabilityAIAssistantAppServerStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -67,7 +129,7 @@ "tags": [], "label": "ObservabilityAIAssistantAppServerSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index d17a9e0e27f08..918376893a8ae 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; @@ -21,7 +21,15 @@ Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 0 | +| 8 | 0 | 7 | 0 | + +## Client + +### Setup + + +### Start + ## Server diff --git a/api_docs/observability_ai_assistant_management.devdocs.json b/api_docs/observability_ai_assistant_management.devdocs.json index 8cc7e70b1990f..b7ca87c812621 100644 --- a/api_docs/observability_ai_assistant_management.devdocs.json +++ b/api_docs/observability_ai_assistant_management.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "AiAssistantManagementObservabilityPluginSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_management/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "AiAssistantManagementObservabilityPluginStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_management/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index ee6994ae7dc22..87a37dec963b2 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index eefd6bbbc17b9..1d0833fe9b41f 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 46b8953d5f670..c0e505928843d 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index d8f637861d6e7..e65df2edcfc46 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.devdocs.json b/api_docs/osquery.devdocs.json index 942a222062531..df87b16bced25 100644 --- a/api_docs/osquery.devdocs.json +++ b/api_docs/osquery.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "OsqueryPluginSetup", "description": [], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "OsqueryPluginStart", "description": [], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -52,7 +52,7 @@ }, " | undefined; }) => React.JSX.Element) | undefined" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -68,7 +68,7 @@ "OsqueryActionResultProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -83,7 +83,7 @@ "signature": [ "OsqueryActionResultProps" ], - "path": "x-pack/plugins/osquery/public/shared_components/lazy_osquery_result.tsx", + "path": "x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_result.tsx", "deprecated": false, "trackAdoption": false } @@ -101,7 +101,7 @@ "OsqueryActionResultsProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -116,7 +116,7 @@ "signature": [ "OsqueryActionResultsProps" ], - "path": "x-pack/plugins/osquery/public/shared_components/lazy_osquery_results.tsx", + "path": "x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_results.tsx", "deprecated": false, "trackAdoption": false } @@ -136,7 +136,7 @@ "UseFormReturn", "<{ label: string; query: string; ecs_mapping: Record; }, any, undefined>; }) => React.JSX.Element) | undefined" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -150,7 +150,7 @@ "signature": [ "(props: { agentId: string; }) => boolean" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -161,7 +161,7 @@ "tags": [], "label": "props", "description": [], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -172,7 +172,7 @@ "tags": [], "label": "agentId", "description": [], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -191,7 +191,7 @@ "signature": [ "() => { loading: boolean; disabled: boolean; permissionDenied: boolean; }" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -209,7 +209,7 @@ "OsqueryResponseActionsParamsFormProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -224,7 +224,7 @@ "signature": [ "OsqueryResponseActionsParamsFormProps" ], - "path": "x-pack/plugins/osquery/public/shared_components/lazy_osquery_action_params_form.tsx", + "path": "x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action_params_form.tsx", "deprecated": false, "trackAdoption": false } @@ -248,7 +248,7 @@ "SearchHit", "[]; }; }, Error>" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -262,7 +262,7 @@ "signature": [ "UseAllLiveQueriesConfig" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -289,7 +289,7 @@ "tags": [], "label": "OsqueryPluginSetup", "description": [], - "path": "x-pack/plugins/osquery/server/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -311,7 +311,7 @@ }, "[]; }; readonly \"kibana.alert.rule.execution.timestamp\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.execution.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.severity_improving\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.workflow_assignee_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }>> & { _index: string; }) | undefined) => Promise<{ response: { action_id: string; '@timestamp': string; expiration: string; type: string; input_type: string; alert_ids: string[] | undefined; event_ids: string[] | undefined; case_ids: string[] | undefined; agent_ids: string[] | undefined; agent_all: boolean | undefined; agent_platforms: string[] | undefined; agent_policy_ids: string[] | undefined; agents: string[]; user_id: string | undefined; metadata: object | undefined; pack_id: string | undefined; pack_name: string | undefined; pack_prebuilt: boolean | undefined; queries: _.Dictionary[]; }; fleetActionsCount: number; }>; stop: () => void; }" ], - "path": "x-pack/plugins/osquery/server/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -326,7 +326,7 @@ "tags": [], "label": "OsqueryPluginStart", "description": [], - "path": "x-pack/plugins/osquery/server/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -350,7 +350,7 @@ "signature": [ "\"/app/osquery\"" ], - "path": "x-pack/plugins/osquery/common/constants.ts", + "path": "x-pack/platform/plugins/shared/osquery/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -365,7 +365,7 @@ "signature": [ "\"osquery_manager\"" ], - "path": "x-pack/plugins/osquery/common/constants.ts", + "path": "x-pack/platform/plugins/shared/osquery/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -380,7 +380,7 @@ "signature": [ "\"osquery\"" ], - "path": "x-pack/plugins/osquery/common/index.ts", + "path": "x-pack/platform/plugins/shared/osquery/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -395,7 +395,7 @@ "signature": [ "\"Osquery\"" ], - "path": "x-pack/plugins/osquery/common/index.ts", + "path": "x-pack/platform/plugins/shared/osquery/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index deaeb4de2d923..91b81bd03c14d 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.devdocs.json b/api_docs/painless_lab.devdocs.json index 04e37e95b5801..ea0a326c6dff8 100644 --- a/api_docs/painless_lab.devdocs.json +++ b/api_docs/painless_lab.devdocs.json @@ -24,7 +24,7 @@ "signature": [ "{ readonly enabled: boolean; }" ], - "path": "x-pack/plugins/painless_lab/server/index.ts", + "path": "x-pack/platform/plugins/private/painless_lab/server/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -56,7 +56,7 @@ }, "; }>" ], - "path": "x-pack/plugins/painless_lab/server/index.ts", + "path": "x-pack/platform/plugins/private/painless_lab/server/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index c701e7935d091..bf06fb07d1314 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index a010cb19a416e..9b279a3527aba 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 901 | 768 | 43 | +| 907 | 771 | 43 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 55052 | 240 | 41416 | 2030 | +| 55051 | 243 | 41372 | 2032 | ## Plugin Directory @@ -39,7 +39,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Considering using bfetch capabilities when fetching large amounts of data. This services supports batching HTTP requests and streaming responses back. | 60 | 1 | 59 | 2 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Canvas application to Kibana | 9 | 0 | 8 | 3 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 125 | 0 | 105 | 28 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 267 | 2 | 252 | 9 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 271 | 2 | 255 | 9 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 83 | 0 | 20 | 1 | | cloudChat | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | Chat available on Elastic Cloud deployments for quicker assistance. | 0 | 0 | 0 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | Static migration page where self-managed users can see text/copy about migrating to Elastic Cloud | 8 | 0 | 8 | 1 | @@ -54,7 +54,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | crossClusterReplication | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | customBranding | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Enables customization of Kibana | 0 | 0 | 0 | 0 | | | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 268 | 0 | 249 | 1 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 114 | 0 | 111 | 14 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 114 | 0 | 111 | 13 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 54 | 0 | 51 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3209 | 31 | 2594 | 24 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 6 | 0 | 6 | 0 | @@ -66,13 +66,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 4 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of data set quality, where users can easily get an overview on the data sets they have. | 14 | 0 | 14 | 8 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 15 | 0 | 9 | 2 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 214 | 0 | 166 | 30 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 215 | 0 | 167 | 30 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 35 | 0 | 33 | 2 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | A stateful layer to register shared features and provide an access point to discover without a direct dependency | 26 | 0 | 23 | 2 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | -| | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | Server APIs for the Elastic AI Assistant | 56 | 0 | 41 | 2 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 571 | 1 | 462 | 9 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 19 | 0 | 19 | 2 | +| | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | Server APIs for the Elastic AI Assistant | 55 | 0 | 40 | 2 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 424 | 1 | 338 | 5 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 15 | 0 | 15 | 2 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 54 | 0 | 47 | 1 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | Adds dashboards for discovering and managing Enterprise Search products. | 5 | 0 | 5 | 0 | | | [@elastic/obs-entities](https://github.com/orgs/elastic/teams/obs-entities) | - | 2 | 0 | 2 | 0 | @@ -100,7 +100,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression XY plugin adds a `xy` renderer and function to the expression plugin. The renderer will display the `xy` chart. | 182 | 0 | 171 | 13 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Adds expression runtime to Kibana | 2241 | 17 | 1769 | 6 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 270 | 0 | 110 | 3 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Index pattern fields and ambiguous values formatters | 292 | 5 | 253 | 3 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Index pattern fields and ambiguous values formatters | 293 | 5 | 254 | 3 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes services for async usage and search of fields metadata. | 45 | 0 | 45 | 9 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 89 | 0 | 89 | 8 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 240 | 0 | 24 | 9 | @@ -156,8 +156,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 697 | 2 | 689 | 23 | -| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 298 | 1 | 296 | 28 | -| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 4 | 0 | 4 | 0 | +| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 385 | 1 | 383 | 30 | +| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 8 | 0 | 7 | 0 | | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 19 | 0 | 19 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 24 | 0 | 24 | 0 | @@ -165,7 +165,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 23 | 0 | 23 | 7 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds a standardized Presentation panel which allows any forward ref component to interface with various Kibana systems. | 11 | 0 | 11 | 4 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 159 | 2 | 129 | 10 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 126 | 2 | 102 | 8 | | | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 10 | 0 | 10 | 4 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 16 | 1 | 16 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 22 | 0 | 22 | 7 | @@ -191,7 +191,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | Plugin to provide access to and rendering of python notebooks for use in the persistent developer console. | 10 | 0 | 10 | 1 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 13 | 0 | 13 | 0 | | searchprofiler | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | -| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 455 | 0 | 238 | 0 | +| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 458 | 0 | 238 | 0 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 191 | 0 | 123 | 34 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | ESS customizations for Security Solution. | 6 | 0 | 6 | 0 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | Serverless customizations for security. | 7 | 0 | 7 | 0 | @@ -199,16 +199,16 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | Serverless customizations for observability. | 6 | 0 | 6 | 0 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | Serverless customizations for search. | 7 | 0 | 7 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 134 | 0 | 134 | 8 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds URL Service and sharing capabilities to Kibana | 136 | 0 | 73 | 15 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 48 | 0 | 48 | 2 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds URL Service and sharing capabilities to Kibana | 136 | 0 | 73 | 16 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 54 | 0 | 54 | 2 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 22 | 1 | 22 | 1 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides the Spaces feature, which allows saved objects to be organized into meaningful categories. | 269 | 0 | 73 | 1 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 25 | 0 | 25 | 3 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 10 | 0 | 10 | 0 | -| | [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/streams-program-team) | A manager for Streams | 13 | 0 | 13 | 4 | +| | [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/streams-program-team) | A manager for Streams | 13 | 0 | 13 | 3 | | | [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/streams-program-team) | - | 8 | 0 | 8 | 0 | -| synthetics | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 1 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 108 | 0 | 64 | 7 | +| synthetics | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 105 | 0 | 62 | 6 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 45 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 26 | 6 | | telemetryCollectionXpack | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | @@ -222,13 +222,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Extends UI Actions plugin with more functionality | 212 | 0 | 145 | 11 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains services reliant on the plugin lifecycle for the unified doc viewer component (see @kbn/unified-doc-viewer). | 15 | 0 | 10 | 3 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | The `unifiedHistogram` plugin provides UI components to create a layout including a resizable histogram and a main display. | 69 | 0 | 35 | 6 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 149 | 2 | 112 | 21 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 150 | 2 | 113 | 21 | | upgradeAssistant | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. | 1 | 0 | 0 | 0 | | urlDrilldown | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds drilldown implementations to Kibana | 0 | 0 | 0 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 12 | 0 | 12 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 52 | 0 | 14 | 5 | -| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 2 | 0 | 2 | 0 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The default editor used in most aggregation-based visualizations. | 70 | 0 | 63 | 4 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the gauge chart implementation using the elastic-charts library. The goal is to eventually deprecate the old implementation and keep only this. Until then, the library used is defined by the Legacy charts library advanced setting. | 7 | 0 | 7 | 2 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the heatmap implementation using the elastic-charts library. The goal is to eventually deprecate the old implementation and keep only this. Until then, the library used is defined by the Legacy heatmap charts library advanced setting. | 3 | 0 | 3 | 2 | @@ -242,7 +242,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Registers the vega visualization. Is the elastic version of vega and vega-lite libraries. | 2 | 0 | 2 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the vislib visualizations. These are the classical area/line/bar, gauge/goal and heatmap charts. We want to replace them with elastic-charts. | 1 | 0 | 1 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the new xy-axis chart using the elastic-charts library, which will eventually replace the vislib xy-axis charts including bar, area, and line. | 52 | 0 | 50 | 5 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 871 | 12 | 840 | 20 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 869 | 12 | 838 | 21 | | watcher | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | ## Package Directory @@ -252,6 +252,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 14 | 0 | 14 | 0 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 64 | 0 | 64 | 1 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 3 | 0 | 3 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 0 | 3 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 37 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 2 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 66 | 0 | 0 | 0 | @@ -266,7 +267,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 18 | 0 | 18 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 4 | 0 | 4 | 0 | -| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 87 | 0 | 87 | 11 | +| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 90 | 0 | 90 | 11 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 272 | 0 | 272 | 38 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 337 | 0 | 336 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 12 | 0 | 12 | 0 | @@ -286,11 +287,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 93 | 1 | 93 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 122 | 0 | 120 | 1 | -| | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 20 | 0 | 15 | 4 | +| | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 25 | 0 | 16 | 6 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 41 | 0 | 17 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | -| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 9 | 0 | 4 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 227 | 0 | 188 | 9 | +| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 12 | 0 | 5 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 190 | 0 | 149 | 8 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 79 | 0 | 50 | 9 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 24 | 0 | 24 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 149 | 2 | 143 | 20 | @@ -341,8 +342,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 6 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 4 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 23 | 0 | 15 | 0 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 16 | 0 | 13 | 0 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 3 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 1 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 5 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 6 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 4 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 4 | 0 | @@ -431,7 +432,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 4 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 13 | 1 | 12 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 113 | 1 | 0 | 0 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 357 | 1 | 5 | 2 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 361 | 1 | 5 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 11 | 0 | 11 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 226 | 0 | 183 | 11 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 5 | 0 | 5 | 0 | @@ -443,14 +444,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 4 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 128 | 0 | 94 | 44 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 12 | 0 | 12 | 0 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 564 | 1 | 134 | 4 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 566 | 1 | 134 | 4 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 75 | 0 | 74 | 5 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 14 | 0 | 14 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 36 | 0 | 6 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 10 | 0 | 3 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 8 | 0 | 8 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 8 | 0 | 8 | 0 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 20 | 0 | 6 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 21 | 0 | 6 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 146 | 1 | 63 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 16 | 0 | 16 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 15 | 0 | 15 | 2 | @@ -517,7 +518,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/docs](https://github.com/orgs/elastic/teams/docs) | - | 80 | 0 | 80 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 5 | 0 | 5 | 1 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 57 | 0 | 30 | 6 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 37 | 0 | 28 | 2 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 38 | 0 | 29 | 3 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 16 | 0 | 8 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 42 | 0 | 41 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 170 | 0 | 141 | 10 | @@ -527,21 +528,21 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 32 | 0 | 19 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 11 | 0 | 6 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 271 | 1 | 210 | 14 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 30 | 0 | 30 | 1 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 31 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | -| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 285 | 1 | 223 | 25 | +| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 287 | 1 | 225 | 25 | | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 29 | 0 | 12 | 0 | | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 83 | 0 | 74 | 0 | | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 205 | 0 | 193 | 12 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 40 | 0 | 40 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 0 | 52 | 1 | -| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 41 | 0 | 14 | 2 | +| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 43 | 0 | 15 | 2 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 22 | 0 | 18 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 51 | 0 | 42 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 0 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 3 | 0 | 3 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 111 | 2 | 86 | 1 | -| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 560 | 6 | 520 | 7 | +| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 564 | 6 | 524 | 7 | | | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 10 | 0 | 8 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 1 | 0 | 1 | 0 | @@ -560,11 +561,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-threat-hunting](https://github.com/orgs/elastic/teams/security-threat-hunting) | - | 85 | 0 | 80 | 2 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 75 | 0 | 73 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 126 | 3 | 126 | 0 | -| | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 132 | 0 | 43 | 1 | +| | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 136 | 0 | 43 | 3 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 7 | 1 | 7 | 1 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 9 | 0 | 9 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 12 | 43 | 0 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 82 | 0 | 82 | 0 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 85 | 0 | 85 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 60 | 0 | 60 | 4 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 44 | 0 | 44 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 23 | 0 | 14 | 0 | @@ -620,7 +621,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 8 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 2 | 0 | 1 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 34 | 0 | 0 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 47 | 0 | 41 | 1 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 48 | 0 | 41 | 1 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 18 | 0 | 18 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 42 | 1 | 35 | 1 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 32 | 0 | 0 | 0 | @@ -633,26 +634,27 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 99 | 1 | 99 | 0 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 6 | 0 | 6 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 29 | 0 | 27 | 5 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 4 | 0 | 4 | 1 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 31 | 2 | 31 | 2 | | | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 12 | 0 | 12 | 0 | | | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 15 | 0 | 15 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 46 | 0 | 46 | 9 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 51 | 5 | 34 | 0 | | | [@elastic/security-asset-management](https://github.com/orgs/elastic/teams/security-asset-management) | - | 66 | 0 | 66 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 44 | 3 | 27 | 1 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 5 | 0 | 5 | 0 | | | [@elastic/kibana-performance-testing](https://github.com/orgs/elastic/teams/kibana-performance-testing) | - | 3 | 0 | 3 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 92 | 0 | 80 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 229 | 0 | 193 | 6 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 87 | 0 | 75 | 1 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 233 | 0 | 197 | 6 | | | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 1 | 0 | 1 | 0 | | | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 31 | 0 | 31 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 168 | 0 | 55 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 13 | 0 | 7 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 22 | 0 | 9 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 9 | 0 | 8 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 8 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 16 | 0 | 9 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 1 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 0 | 5 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 18 | 0 | 3 | 0 | @@ -660,6 +662,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 0 | 8 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 1 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 14 | 0 | 7 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 18 | 0 | 18 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 40 | 0 | 38 | 5 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 13 | 0 | 9 | 0 | @@ -677,7 +680,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 91 | 0 | 91 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | A component for creating resizable layouts containing a fixed width panel and a flexible panel, with support for horizontal and vertical layouts. | 18 | 0 | 5 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 3 | 0 | 3 | 0 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 157 | 0 | 156 | 7 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 158 | 0 | 157 | 7 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 8 | 0 | 8 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 13 | 2 | 8 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 3 | 0 | 3 | 0 | @@ -687,7 +690,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 152 | 0 | 140 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 15 | 0 | 14 | 0 | -| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 117 | 0 | 86 | 8 | +| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 121 | 0 | 86 | 8 | | | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 6 | 0 | 6 | 0 | | | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 68 | 0 | 53 | 3 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 35 | 0 | 34 | 0 | @@ -705,9 +708,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 4 | 0 | 0 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 35 | 0 | 25 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 7 | 0 | 7 | 0 | -| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 125 | 0 | 66 | 0 | +| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 126 | 0 | 66 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 67 | 0 | 40 | 0 | -| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 281 | 1 | 160 | 0 | +| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 282 | 1 | 161 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 74 | 0 | 73 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 7 | 0 | 0 | 0 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 15 | 0 | 15 | 7 | @@ -718,7 +721,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 56 | 1 | 41 | 0 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 92 | 0 | 70 | 6 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 341 | 1 | 337 | 32 | -| | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 87 | 0 | 76 | 1 | +| | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 88 | 0 | 77 | 1 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 107 | 0 | 96 | 1 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 15 | 0 | 7 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 147 | 0 | 125 | 0 | @@ -788,18 +791,18 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 4 | 0 | 4 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 19 | 0 | 19 | 3 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 1 | 0 | 1 | 1 | -| | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 4 | 0 | 3 | 0 | +| | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 7 | 0 | 6 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 108 | 2 | 70 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 4 | 0 | 2 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 41 | 2 | 21 | 0 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 32 | 2 | 32 | 0 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 9 | 0 | 9 | 0 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 19 | 0 | 19 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 5 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 360 | 4 | 305 | 14 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 37 | 1 | 19 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 131 | 3 | 98 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | -| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 8 | 0 | 8 | 0 | +| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 14 | 0 | 14 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 74 | 0 | 55 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 9 | 0 | 7 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 17 | 0 | 17 | 0 | @@ -819,10 +822,10 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 37 | 0 | 16 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 26 | 0 | 15 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 144 | 0 | 138 | 4 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 145 | 0 | 139 | 4 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 24 | 0 | 22 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 14 | 0 | 14 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 9 | 0 | 4 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1254 | 0 | 4 | 0 | -| | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 20 | 0 | 10 | 0 | +| | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 23 | 0 | 13 | 0 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 405058c4edb25..19af531f21eb7 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.devdocs.json b/api_docs/presentation_util.devdocs.json index 3ceb843da051a..ea50ab8480f1e 100644 --- a/api_docs/presentation_util.devdocs.json +++ b/api_docs/presentation_util.devdocs.json @@ -3,62 +3,6 @@ "client": { "classes": [], "functions": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.cleanFiltersForSerialize", - "type": "Function", - "tags": [], - "label": "cleanFiltersForSerialize", - "description": [], - "signature": [ - "(filters?: ", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" - }, - "[] | undefined) => ", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" - }, - "[]" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/clean_redux_embeddable_state.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.cleanFiltersForSerialize.$1", - "type": "Array", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" - }, - "[] | undefined" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/clean_redux_embeddable_state.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "presentationUtil", "id": "def-public.DashboardDrilldownOptionsComponent", @@ -350,31 +294,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.lazyLoadReduxToolsPackage", - "type": "Function", - "tags": [], - "label": "lazyLoadReduxToolsPackage", - "description": [], - "signature": [ - "() => Promise<", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxToolsPackage", - "text": "ReduxToolsPackage" - }, - ">" - ], - "path": "src/plugins/presentation_util/public/redux_tools/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "presentationUtil", "id": "def-public.LazySavedObjectSaveModalDashboard", @@ -899,678 +818,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableState", - "type": "Interface", - "tags": [], - "label": "ReduxEmbeddableState", - "description": [ - "\nThe Embeddable Redux store should contain Input, Output and State. Input is serialized and used to create the embeddable,\nOutput is used as a communication layer for state that the Embeddable creates, and State is used to store ephemeral state which needs\nto be communicated between an embeddable and its inner React components." - ], - "signature": [ - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableState", - "text": "ReduxEmbeddableState" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableState.explicitInput", - "type": "Uncategorized", - "tags": [], - "label": "explicitInput", - "description": [], - "signature": [ - "InputType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableState.output", - "type": "Uncategorized", - "tags": [], - "label": "output", - "description": [], - "signature": [ - "OutputType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableState.componentState", - "type": "Uncategorized", - "tags": [], - "label": "componentState", - "description": [], - "signature": [ - "StateType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools", - "type": "Interface", - "tags": [], - "label": "ReduxEmbeddableTools", - "description": [ - "\nThe return type from createReduxEmbeddableTools. Contains tools to get state, select state for react components,\nset state, and react to state changes." - ], - "signature": [ - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableTools", - "text": "ReduxEmbeddableTools" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.cleanup", - "type": "Function", - "tags": [], - "label": "cleanup", - "description": [], - "signature": [ - "() => void" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.store", - "type": "Object", - "tags": [], - "label": "store", - "description": [], - "signature": [ - "ToolkitStore", - ">" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.select", - "type": "Function", - "tags": [], - "label": "select", - "description": [], - "signature": [ - "(selector: (state: ReduxEmbeddableStateType) => Selected, equalityFn?: ((previous: Selected, next: Selected) => boolean) | undefined) => Selected" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.select.$1", - "type": "Function", - "tags": [], - "label": "selector", - "description": [], - "signature": [ - "(state: ReduxStateType) => Selected" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.select.$1.$1", - "type": "Uncategorized", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "ReduxStateType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.select.$2", - "type": "Function", - "tags": [], - "label": "equalityFn", - "description": [], - "signature": [ - "((previous: Selected, next: Selected) => boolean) | undefined" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.getState", - "type": "Function", - "tags": [], - "label": "getState", - "description": [], - "signature": [ - "() => ReduxEmbeddableStateType & {}" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.dispatch", - "type": "Object", - "tags": [], - "label": "dispatch", - "description": [], - "signature": [ - "{ [ReducerKey in keyof ReducerType]: (payload: Parameters[1][\"payload\"]) => void; }" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.onStateChange", - "type": "Function", - "tags": [], - "label": "onStateChange", - "description": [], - "signature": [ - "(listener: () => void) => ", - "Unsubscribe" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.onStateChange.$1", - "type": "Function", - "tags": [], - "label": "listener", - "description": [], - "signature": [ - "() => void" - ], - "path": "node_modules/redux/index.d.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [] - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools", - "type": "Interface", - "tags": [], - "label": "ReduxTools", - "description": [ - "\nThe return type from createReduxTools. Contains tools to get state, select state for react components,\nset state, and react to state changes." - ], - "signature": [ - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxTools", - "text": "ReduxTools" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.store", - "type": "Object", - "tags": [], - "label": "store", - "description": [], - "signature": [ - "ToolkitStore", - ">" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.select", - "type": "Function", - "tags": [], - "label": "select", - "description": [], - "signature": [ - "(selector: (state: ReduxStateType) => Selected, equalityFn?: ((previous: Selected, next: Selected) => boolean) | undefined) => Selected" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.select.$1", - "type": "Function", - "tags": [], - "label": "selector", - "description": [], - "signature": [ - "(state: ReduxStateType) => Selected" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.select.$1.$1", - "type": "Uncategorized", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "ReduxStateType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.select.$2", - "type": "Function", - "tags": [], - "label": "equalityFn", - "description": [], - "signature": [ - "((previous: Selected, next: Selected) => boolean) | undefined" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.getState", - "type": "Function", - "tags": [], - "label": "getState", - "description": [], - "signature": [ - "() => ReduxStateType & {}" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.onStateChange", - "type": "Function", - "tags": [], - "label": "onStateChange", - "description": [], - "signature": [ - "(listener: () => void) => ", - "Unsubscribe" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.onStateChange.$1", - "type": "Function", - "tags": [], - "label": "listener", - "description": [], - "signature": [ - "() => void" - ], - "path": "node_modules/redux/index.d.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [] - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.dispatch", - "type": "Object", - "tags": [], - "label": "dispatch", - "description": [], - "signature": [ - "{ [ReducerKey in keyof ReducerType]: (payload: Parameters[1][\"payload\"]) => void; }" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage", - "type": "Interface", - "tags": [], - "label": "ReduxToolsPackage", - "description": [ - "\nThe package type is lazily exported from presentation_util and should contain all methods needed to use the redux embeddable tools." - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage.createReduxTools", - "type": "Function", - "tags": [], - "label": "createReduxTools", - "description": [], - "signature": [ - " = ", - "ReduxToolsReducers", - ">({ reducers, additionalMiddleware, initialState, }: { additionalMiddleware?: ", - "Middleware", - "<", - "AnyAction", - ", any, ", - "Dispatch", - "<", - "AnyAction", - ">>[] | undefined; initialState: ReduxStateType; reducers: ReducerType; }) => ", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxTools", - "text": "ReduxTools" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage.createReduxTools.$1", - "type": "Object", - "tags": [], - "label": "__0", - "description": [], - "signature": [ - "{ additionalMiddleware?: ", - "Middleware", - "<", - "AnyAction", - ", any, ", - "Dispatch", - "<", - "AnyAction", - ">>[] | undefined; initialState: ReduxStateType; reducers: ReducerType; }" - ], - "path": "src/plugins/presentation_util/public/redux_tools/create_redux_tools.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage.createReduxEmbeddableTools", - "type": "Function", - "tags": [], - "label": "createReduxEmbeddableTools", - "description": [], - "signature": [ - " = ", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableState", - "text": "ReduxEmbeddableState" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", unknown>, ReducerType extends ", - "ReduxToolsReducers", - " = ", - "ReduxToolsReducers", - ">({ reducers, embeddable, syncSettings, additionalMiddleware, initialComponentState, }: { embeddable: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" - }, - "; additionalMiddleware?: ", - "Middleware", - "<", - "AnyAction", - ", any, ", - "Dispatch", - "<", - "AnyAction", - ">>[] | undefined; initialComponentState?: ReduxEmbeddableStateType[\"componentState\"] | undefined; syncSettings?: ", - "ReduxEmbeddableSyncSettings", - "<", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableState", - "text": "ReduxEmbeddableState" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", unknown>> | undefined; reducers: ReducerType; }) => ", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableTools", - "text": "ReduxEmbeddableTools" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage.createReduxEmbeddableTools.$1", - "type": "Object", - "tags": [], - "label": "__0", - "description": [], - "signature": [ - "{ embeddable: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" - }, - "; additionalMiddleware?: ", - "Middleware", - "<", - "AnyAction", - ", any, ", - "Dispatch", - "<", - "AnyAction", - ">>[] | undefined; initialComponentState?: ReduxEmbeddableStateType[\"componentState\"] | undefined; syncSettings?: ", - "ReduxEmbeddableSyncSettings", - "<", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableState", - "text": "ReduxEmbeddableState" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", unknown>> | undefined; reducers: ReducerType; }" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/create_redux_embeddable_tools.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "presentationUtil", "id": "def-public.SaveModalDashboardProps", diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index f76c594cfb617..dd1b157130b81 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 159 | 2 | 129 | 10 | +| 126 | 2 | 102 | 8 | ## Client diff --git a/api_docs/product_doc_base.devdocs.json b/api_docs/product_doc_base.devdocs.json index c6d82bc6f79ef..71ded441b875c 100644 --- a/api_docs/product_doc_base.devdocs.json +++ b/api_docs/product_doc_base.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "ProductDocBasePluginSetup", "description": [], - "path": "x-pack/plugins/ai_infra/product_doc_base/public/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "ProductDocBasePluginStart", "description": [], - "path": "x-pack/plugins/ai_infra/product_doc_base/public/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -42,7 +42,7 @@ "signature": [ "InstallationAPI" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/public/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -71,7 +71,7 @@ "DocSearchResponse", ">" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/services/search/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/services/search/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -86,7 +86,7 @@ "signature": [ "DocSearchOptions" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/services/search/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/services/search/types.ts", "deprecated": false, "trackAdoption": false } @@ -102,7 +102,7 @@ "tags": [], "label": "ProductDocBaseSetupContract", "description": [], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -116,7 +116,7 @@ "tags": [], "label": "ProductDocBaseStartContract", "description": [], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -134,7 +134,7 @@ "DocSearchResponse", ">" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -149,7 +149,7 @@ "signature": [ "DocSearchOptions" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/services/search/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/services/search/types.ts", "deprecated": false, "trackAdoption": false } @@ -165,7 +165,7 @@ "signature": [ "DocumentationManagerAPI" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/product_doc_base.mdx b/api_docs/product_doc_base.mdx index 8697949c31bc7..406dacbd4bfa6 100644 --- a/api_docs/product_doc_base.mdx +++ b/api_docs/product_doc_base.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/productDocBase title: "productDocBase" image: https://source.unsplash.com/400x175/?github description: API docs for the productDocBase plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'productDocBase'] --- import productDocBaseObj from './product_doc_base.devdocs.json'; diff --git a/api_docs/profiling.devdocs.json b/api_docs/profiling.devdocs.json index 01192dc0b13f4..1946c2afe9ecb 100644 --- a/api_docs/profiling.devdocs.json +++ b/api_docs/profiling.devdocs.json @@ -17,7 +17,7 @@ "signature": [ "void" ], - "path": "x-pack/plugins/observability_solution/profiling/public/plugin.tsx", + "path": "x-pack/plugins/observability_solution/profiling/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 2f2edbd73b900..4b2eb4a48ac9d 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 522147b1c44c4..fd6fb3f5fac81 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.devdocs.json b/api_docs/remote_clusters.devdocs.json index bc742af1091a7..751c78d0c1f24 100644 --- a/api_docs/remote_clusters.devdocs.json +++ b/api_docs/remote_clusters.devdocs.json @@ -11,7 +11,7 @@ "tags": [], "label": "Cluster", "description": [], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -22,7 +22,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -36,7 +36,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -50,7 +50,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -64,7 +64,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -78,7 +78,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -92,7 +92,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -106,7 +106,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -120,7 +120,7 @@ "signature": [ "\"proxy\" | \"sniff\" | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -134,7 +134,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -148,7 +148,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -162,7 +162,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -176,7 +176,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -190,7 +190,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -204,7 +204,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -218,7 +218,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -232,7 +232,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -246,7 +246,7 @@ "signature": [ "\"certificate\" | \"api_key\"" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false } @@ -266,7 +266,7 @@ "signature": [ "\"/api/remote_clusters\"" ], - "path": "x-pack/plugins/remote_clusters/common/constants.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -280,7 +280,7 @@ "tags": [], "label": "RemoteClustersPluginSetup", "description": [], - "path": "x-pack/plugins/remote_clusters/public/plugin.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -291,7 +291,7 @@ "tags": [], "label": "isUiEnabled", "description": [], - "path": "x-pack/plugins/remote_clusters/public/plugin.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -314,7 +314,7 @@ "tags": [], "label": "RemoteClustersPluginSetup", "description": [], - "path": "x-pack/plugins/remote_clusters/server/plugin.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -325,7 +325,7 @@ "tags": [], "label": "isUiEnabled", "description": [], - "path": "x-pack/plugins/remote_clusters/server/plugin.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/server/plugin.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index fa12a3aa38bdd..b4a2c8f50c5fd 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 517733987a9a3..423048ed92f9b 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.devdocs.json b/api_docs/rollup.devdocs.json index 455e264f6ee57..95b0417824434 100644 --- a/api_docs/rollup.devdocs.json +++ b/api_docs/rollup.devdocs.json @@ -32,7 +32,7 @@ "signature": [ "\"/api/rollup\"" ], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +47,7 @@ "signature": [ "\"rollups:enableIndexPatterns\"" ], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -62,7 +62,7 @@ "signature": [ "\"8.0.0\"" ], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -77,7 +77,7 @@ "signature": [ "\"app_load\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -92,7 +92,7 @@ "signature": [ "\"rollup_jobs\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -107,7 +107,7 @@ "signature": [ "\"detail_panel_histogram_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -122,7 +122,7 @@ "signature": [ "\"detail_panel_json_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -137,7 +137,7 @@ "signature": [ "\"detail_panel_metrics_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -152,7 +152,7 @@ "signature": [ "\"detail_panel_summary_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -167,7 +167,7 @@ "signature": [ "\"detail_panel_terms_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -182,7 +182,7 @@ "signature": [ "\"job_create\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -197,7 +197,7 @@ "signature": [ "\"job_delete\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -212,7 +212,7 @@ "signature": [ "\"job_delete_many\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -227,7 +227,7 @@ "signature": [ "\"job_start\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -242,7 +242,7 @@ "signature": [ "\"job_start_many\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -257,7 +257,7 @@ "signature": [ "\"job_stop\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -272,7 +272,7 @@ "signature": [ "\"job_stop_many\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -287,7 +287,7 @@ "signature": [ "\"show_details_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -301,7 +301,7 @@ "tags": [], "label": "PLUGIN", "description": [], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -312,7 +312,7 @@ "tags": [], "label": "ID", "description": [], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -326,7 +326,7 @@ "signature": [ "\"basic\"" ], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index ddc9a17fdda4e..1d0652be22554 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 2dfad9af095ad..c32e479db696d 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.devdocs.json b/api_docs/runtime_fields.devdocs.json index 90294a4540fc7..296a735e223d9 100644 --- a/api_docs/runtime_fields.devdocs.json +++ b/api_docs/runtime_fields.devdocs.json @@ -21,7 +21,7 @@ }, ") => React.JSX.Element" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "text": "Props" } ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -68,7 +68,7 @@ }, ") => React.JSX.Element" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -88,7 +88,7 @@ "text": "Props" } ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -106,7 +106,7 @@ "tags": [], "label": "FormState", "description": [], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -120,7 +120,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", "deprecated": false, "trackAdoption": false }, @@ -131,7 +131,7 @@ "tags": [], "label": "isSubmitted", "description": [], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", "deprecated": false, "trackAdoption": false }, @@ -153,7 +153,7 @@ }, "; isValid: boolean; }>" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -168,7 +168,7 @@ "signature": [ "React.MouseEvent | React.FormEvent | undefined" ], - "path": "src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/types.ts", "deprecated": false, "trackAdoption": false } @@ -184,7 +184,7 @@ "tags": [], "label": "Props", "description": [], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -208,7 +208,7 @@ }, ") => void" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -228,7 +228,7 @@ "text": "RuntimeField" } ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -248,7 +248,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -272,7 +272,7 @@ "text": "DocLinksStart" } ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false }, @@ -295,7 +295,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false }, @@ -311,7 +311,7 @@ "signature": [ "{ namesNotAllowed?: string[] | undefined; existingConcreteFields?: Field[] | undefined; } | undefined" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false } @@ -325,7 +325,7 @@ "tags": [], "label": "RuntimeField", "description": [], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -336,7 +336,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -350,7 +350,7 @@ "signature": [ "\"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\"" ], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -364,7 +364,7 @@ "signature": [ "{ source: string; }" ], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -385,7 +385,7 @@ "ComboBoxOption", "<\"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\">[]" ], - "path": "x-pack/plugins/runtime_fields/public/constants.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -400,7 +400,7 @@ "signature": [ "\"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\"" ], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -414,7 +414,7 @@ "tags": [], "label": "PluginSetup", "description": [], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -430,7 +430,7 @@ "LoadEditorResponse", ">" ], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 6ec93b8215ca5..a35362c90cfb3 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.devdocs.json b/api_docs/saved_objects.devdocs.json index 79f331186c699..56c2bcd5d8cd7 100644 --- a/api_docs/saved_objects.devdocs.json +++ b/api_docs/saved_objects.devdocs.json @@ -34,14 +34,6 @@ "removeBy": "8.8.0", "trackAdoption": false, "references": [ - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx" - }, { "plugin": "presentationUtil", "path": "src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx" @@ -50,6 +42,14 @@ "plugin": "presentationUtil", "path": "src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx" }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx" + }, { "plugin": "lens", "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx" diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 7a4f8e71721f2..085a5db4fe1af 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.devdocs.json b/api_docs/saved_objects_finder.devdocs.json index c6104240fef8c..940faea8dee89 100644 --- a/api_docs/saved_objects_finder.devdocs.json +++ b/api_docs/saved_objects_finder.devdocs.json @@ -449,10 +449,6 @@ "plugin": "visualizations", "path": "src/plugins/visualizations/public/wizard/search_selection/search_selection.tsx" }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/components/source_picker.tsx" diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index f84b1de547b6c..dc5373fbf275c 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 5af681ef08084..4a67b96236b2e 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index b32e5a9d99d35..97d06ca2377cd 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index dd7b41d92559d..b8ff6660d5973 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 5a2fae0d7abd3..b1345cf274787 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index eb3e94d6aeabb..21ab80b86ac78 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 7519647f5d444..ed89df609e03e 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_assistant.mdx b/api_docs/search_assistant.mdx index 10999a62b75f5..3781137be4039 100644 --- a/api_docs/search_assistant.mdx +++ b/api_docs/search_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchAssistant title: "searchAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the searchAssistant plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchAssistant'] --- import searchAssistantObj from './search_assistant.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index 4c51a6bfb01e1..94b3d67879900 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_homepage.mdx b/api_docs/search_homepage.mdx index 26fd2f09cf18c..377154950a7cc 100644 --- a/api_docs/search_homepage.mdx +++ b/api_docs/search_homepage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchHomepage title: "searchHomepage" image: https://source.unsplash.com/400x175/?github description: API docs for the searchHomepage plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchHomepage'] --- import searchHomepageObj from './search_homepage.devdocs.json'; diff --git a/api_docs/search_indices.devdocs.json b/api_docs/search_indices.devdocs.json index 71fee82506aed..ee436dbc5ddd7 100644 --- a/api_docs/search_indices.devdocs.json +++ b/api_docs/search_indices.devdocs.json @@ -85,7 +85,7 @@ "label": "startAppId", "description": [], "signature": [ - "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"inventory\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" + "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"inventory\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" ], "path": "x-pack/plugins/search_indices/public/types.ts", "deprecated": false, diff --git a/api_docs/search_indices.mdx b/api_docs/search_indices.mdx index d3e710662efa5..4912a21b41655 100644 --- a/api_docs/search_indices.mdx +++ b/api_docs/search_indices.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchIndices title: "searchIndices" image: https://source.unsplash.com/400x175/?github description: API docs for the searchIndices plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchIndices'] --- import searchIndicesObj from './search_indices.devdocs.json'; diff --git a/api_docs/search_inference_endpoints.mdx b/api_docs/search_inference_endpoints.mdx index 586130aa4c7fb..7fcea62e7ba33 100644 --- a/api_docs/search_inference_endpoints.mdx +++ b/api_docs/search_inference_endpoints.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchInferenceEndpoints title: "searchInferenceEndpoints" image: https://source.unsplash.com/400x175/?github description: API docs for the searchInferenceEndpoints plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchInferenceEndpoints'] --- import searchInferenceEndpointsObj from './search_inference_endpoints.devdocs.json'; diff --git a/api_docs/search_navigation.devdocs.json b/api_docs/search_navigation.devdocs.json index 3ec95f74ec323..94e0857bfcb6b 100644 --- a/api_docs/search_navigation.devdocs.json +++ b/api_docs/search_navigation.devdocs.json @@ -132,7 +132,7 @@ "label": "link", "description": [], "signature": [ - "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"inventory\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" + "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"inventory\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" ], "path": "x-pack/plugins/search_solution/search_navigation/public/types.ts", "deprecated": false, diff --git a/api_docs/search_navigation.mdx b/api_docs/search_navigation.mdx index 68c346df437e9..ad51c0a47a8e5 100644 --- a/api_docs/search_navigation.mdx +++ b/api_docs/search_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNavigation title: "searchNavigation" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNavigation plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNavigation'] --- import searchNavigationObj from './search_navigation.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index 60127da7c23ad..78047262323e3 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index f21a543026a9b..64b0dc787fa3f 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/security.devdocs.json b/api_docs/security.devdocs.json index c1f411fb8b769..94b1e800ff111 100644 --- a/api_docs/security.devdocs.json +++ b/api_docs/security.devdocs.json @@ -141,6 +141,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "security", + "id": "def-public.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -3673,6 +3689,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "security", + "id": "def-server.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -6344,7 +6376,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts" } ] }, @@ -6467,7 +6499,7 @@ }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts" }, { "plugin": "fleet", @@ -6486,28 +6518,20 @@ "path": "x-pack/plugins/fleet/server/routes/setup/handlers.ts" }, { - "plugin": "cloudSecurityPosture", - "path": "x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts" - }, - { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" - }, - { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/enable.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/disable.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { "plugin": "apm", @@ -6522,68 +6546,76 @@ "path": "x-pack/plugins/observability_solution/apm/server/routes/fleet/is_superuser.ts" }, { - "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/enable.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/disable.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/route_handler_factory.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/route_handler_factory.ts" + "plugin": "cloudSecurityPosture", + "path": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/setup_routes.ts" } ] }, @@ -6651,11 +6683,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts" } ] } @@ -6963,6 +6995,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "security", + "id": "def-common.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/security.mdx b/api_docs/security.mdx index ee526e2bdc142..2a3264ee6b145 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 455 | 0 | 238 | 0 | +| 458 | 0 | 238 | 0 | ## Client diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index 83890026a0c99..dac95d2eed08e 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -47,7 +47,7 @@ "StartPlugins", ">" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -61,7 +61,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -82,7 +82,7 @@ }, "" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -127,7 +127,7 @@ "text": "PluginSetup" } ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -158,7 +158,7 @@ }, ">" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -173,7 +173,7 @@ "signature": [ "SetupPlugins" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -208,7 +208,7 @@ "text": "PluginStart" } ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -228,7 +228,7 @@ "text": "CoreStart" } ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -243,7 +243,7 @@ "signature": [ "StartPlugins" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -261,7 +261,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -297,7 +297,7 @@ "SetupPlugins", ") => Promise" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -328,7 +328,7 @@ }, ">" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -343,7 +343,7 @@ "signature": [ "SetupPlugins" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -360,10 +360,10 @@ "description": [], "signature": [ "() => Promise" ], - "path": "x-pack/plugins/security_solution/public/plugin.tsx", + "path": "x-pack/solutions/security/plugins/security_solution/public/plugin.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -382,7 +382,7 @@ "tags": [], "label": "FetchRulesResponse", "description": [], - "path": "x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -393,7 +393,7 @@ "tags": [], "label": "page", "description": [], - "path": "x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", "deprecated": false, "trackAdoption": false }, @@ -404,7 +404,7 @@ "tags": [], "label": "perPage", "description": [], - "path": "x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", "deprecated": false, "trackAdoption": false }, @@ -415,7 +415,7 @@ "tags": [], "label": "total", "description": [], - "path": "x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", "deprecated": false, "trackAdoption": false }, @@ -427,9 +427,9 @@ "label": "data", "description": [], "signature": [ - "({ id: string; type: \"eql\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"eql\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; tiebreaker_field?: string | undefined; timestamp_field?: string | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; event_category_override?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"query\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; saved_id?: string | undefined; } | { id: string; type: \"saved_query\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; saved_id: string; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; query?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"threshold\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threshold: { value: number; field: string | string[]; cardinality?: { value: number; field: string; }[] | undefined; }; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { duration: { value: number; unit: \"m\" | \"s\" | \"h\"; }; } | undefined; saved_id?: string | undefined; } | { id: string; type: \"threat_match\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; threat_query: string; threat_mapping: { entries: { value: string; type: \"mapping\"; field: string; }[]; }[]; threat_index: string[]; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; saved_id?: string | undefined; threat_filters?: unknown[] | undefined; threat_indicator_path?: string | undefined; threat_language?: \"kuery\" | \"lucene\" | undefined; concurrent_searches?: number | undefined; items_per_search?: number | undefined; } | { id: string; type: \"machine_learning\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; anomaly_threshold: number; machine_learning_job_id: string | string[]; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"new_terms\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; new_terms_fields: string[]; history_window_start: string; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"esql\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"esql\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; })[]" + "({ id: string; type: \"eql\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"eql\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; tiebreaker_field?: string | undefined; timestamp_field?: string | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; event_category_override?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"query\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; saved_id?: string | undefined; } | { id: string; type: \"saved_query\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; saved_id: string; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; query?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"threshold\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threshold: { value: number; field: string | string[]; cardinality?: { value: number; field: string; }[] | undefined; }; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { duration: { value: number; unit: \"m\" | \"s\" | \"h\"; }; } | undefined; saved_id?: string | undefined; } | { id: string; type: \"threat_match\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; threat_query: string; threat_mapping: { entries: { value: string; type: \"mapping\"; field: string; }[]; }[]; threat_index: string[]; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; saved_id?: string | undefined; threat_filters?: unknown[] | undefined; threat_indicator_path?: string | undefined; threat_language?: \"kuery\" | \"lucene\" | undefined; concurrent_searches?: number | undefined; items_per_search?: number | undefined; } | { id: string; type: \"machine_learning\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; anomaly_threshold: number; machine_learning_job_id: string | string[]; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"new_terms\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; new_terms_fields: string[]; history_window_start: string; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"esql\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"esql\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; })[]" ], - "path": "x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", "deprecated": false, "trackAdoption": false } @@ -443,7 +443,7 @@ "tags": [], "label": "LinkItem", "description": [], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -460,7 +460,7 @@ "RequiredCapabilities", " | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -492,7 +492,7 @@ }, ">[] | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -508,7 +508,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -522,9 +522,9 @@ "\nExperimental flag needed to enable the link" ], "signature": [ - "\"assistantModelEvaluation\" | \"defendInsights\" | \"alertSuppressionForSequenceEqlRuleEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"responseActionsSentinelOneV2Enabled\" | \"responseActionsSentinelOneGetFileEnabled\" | \"responseActionsSentinelOneKillProcessEnabled\" | \"responseActionsSentinelOneProcessesEnabled\" | \"responseActionsCrowdstrikeManualHostIsolationEnabled\" | \"endpointManagementSpaceAwarenessEnabled\" | \"securitySolutionNotesDisabled\" | \"entityAlertPreviewDisabled\" | \"newUserDetailsFlyoutManagedUser\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"responseActionsTelemetryEnabled\" | \"jamfDataInAnalyzerEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"graphVisualizationInFlyoutEnabled\" | \"prebuiltRulesCustomizationEnabled\" | \"malwareOnWriteScanOptionAvailable\" | \"unifiedManifestEnabled\" | \"valueListItemsModalEnabled\" | \"filterProcessDescendantsForEventFiltersEnabled\" | \"dataIngestionHubEnabled\" | \"entityStoreDisabled\" | \"serviceEntityStoreEnabled\" | \"siemMigrationsEnabled\" | undefined" + "\"assistantModelEvaluation\" | \"defendInsights\" | \"alertSuppressionForSequenceEqlRuleEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"responseActionsSentinelOneV2Enabled\" | \"responseActionsSentinelOneGetFileEnabled\" | \"responseActionsSentinelOneKillProcessEnabled\" | \"responseActionsSentinelOneProcessesEnabled\" | \"responseActionsCrowdstrikeManualHostIsolationEnabled\" | \"endpointManagementSpaceAwarenessEnabled\" | \"securitySolutionNotesDisabled\" | \"entityAlertPreviewDisabled\" | \"newUserDetailsFlyoutManagedUser\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"responseActionsTelemetryEnabled\" | \"jamfDataInAnalyzerEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"graphVisualizationInFlyoutEnabled\" | \"prebuiltRulesCustomizationEnabled\" | \"malwareOnWriteScanOptionAvailable\" | \"unifiedManifestEnabled\" | \"valueListItemsModalEnabled\" | \"filterProcessDescendantsForEventFiltersEnabled\" | \"dataIngestionHubEnabled\" | \"entityStoreDisabled\" | \"serviceEntityStoreEnabled\" | \"siemMigrationsEnabled\" | \"newExpandableFlyoutNavigationEnabled\" | \"crowdstrikeRunScriptEnabled\" | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -540,7 +540,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -556,7 +556,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -572,7 +572,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -588,7 +588,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -602,9 +602,9 @@ "\nExperimental flag needed to disable the link. Opposite of experimentalKey" ], "signature": [ - "\"assistantModelEvaluation\" | \"defendInsights\" | \"alertSuppressionForSequenceEqlRuleEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"responseActionsSentinelOneV2Enabled\" | \"responseActionsSentinelOneGetFileEnabled\" | \"responseActionsSentinelOneKillProcessEnabled\" | \"responseActionsSentinelOneProcessesEnabled\" | \"responseActionsCrowdstrikeManualHostIsolationEnabled\" | \"endpointManagementSpaceAwarenessEnabled\" | \"securitySolutionNotesDisabled\" | \"entityAlertPreviewDisabled\" | \"newUserDetailsFlyoutManagedUser\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"responseActionsTelemetryEnabled\" | \"jamfDataInAnalyzerEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"graphVisualizationInFlyoutEnabled\" | \"prebuiltRulesCustomizationEnabled\" | \"malwareOnWriteScanOptionAvailable\" | \"unifiedManifestEnabled\" | \"valueListItemsModalEnabled\" | \"filterProcessDescendantsForEventFiltersEnabled\" | \"dataIngestionHubEnabled\" | \"entityStoreDisabled\" | \"serviceEntityStoreEnabled\" | \"siemMigrationsEnabled\" | undefined" + "\"assistantModelEvaluation\" | \"defendInsights\" | \"alertSuppressionForSequenceEqlRuleEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"responseActionsSentinelOneV2Enabled\" | \"responseActionsSentinelOneGetFileEnabled\" | \"responseActionsSentinelOneKillProcessEnabled\" | \"responseActionsSentinelOneProcessesEnabled\" | \"responseActionsCrowdstrikeManualHostIsolationEnabled\" | \"endpointManagementSpaceAwarenessEnabled\" | \"securitySolutionNotesDisabled\" | \"entityAlertPreviewDisabled\" | \"newUserDetailsFlyoutManagedUser\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"responseActionsTelemetryEnabled\" | \"jamfDataInAnalyzerEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"graphVisualizationInFlyoutEnabled\" | \"prebuiltRulesCustomizationEnabled\" | \"malwareOnWriteScanOptionAvailable\" | \"unifiedManifestEnabled\" | \"valueListItemsModalEnabled\" | \"filterProcessDescendantsForEventFiltersEnabled\" | \"dataIngestionHubEnabled\" | \"entityStoreDisabled\" | \"serviceEntityStoreEnabled\" | \"siemMigrationsEnabled\" | \"newExpandableFlyoutNavigationEnabled\" | \"crowdstrikeRunScriptEnabled\" | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -626,7 +626,7 @@ "text": "SecurityPageName" } ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -642,7 +642,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -658,7 +658,7 @@ "signature": [ "{ text: string; } | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -675,7 +675,7 @@ "IconType", " | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -691,7 +691,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -707,7 +707,7 @@ "signature": [ "\"basic\" | \"standard\" | \"gold\" | \"platinum\" | \"enterprise\" | \"trial\" | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -730,7 +730,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -743,7 +743,7 @@ "description": [ "\nLink path relative to security root" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -759,7 +759,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -775,7 +775,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -792,7 +792,7 @@ "IconType", " | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -808,7 +808,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -821,7 +821,7 @@ "description": [ "\nTitle of the link" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -837,7 +837,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -860,7 +860,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false }, @@ -876,7 +876,7 @@ "signature": [ "string | { key: string; value: unknown; } | undefined" ], - "path": "x-pack/plugins/security_solution/public/common/links/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts", "deprecated": false, "trackAdoption": false } @@ -890,7 +890,7 @@ "tags": [], "label": "TimelineModel", "description": [], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -906,7 +906,7 @@ "signature": [ "TimelineTabs" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -920,7 +920,7 @@ "signature": [ "TimelineTabs" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -937,7 +937,7 @@ "ScrollToTopEvent", " | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -953,7 +953,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -966,7 +966,7 @@ "description": [ "A summary of the events and notes in this timeline" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -986,7 +986,7 @@ "text": "EqlOptions" } ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1003,7 +1003,7 @@ "TimelineEventsType", " | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1019,7 +1019,7 @@ "signature": [ "{ [x: string]: string[]; }" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1035,7 +1035,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1048,7 +1048,7 @@ "description": [ "The chronological history of actions related to this timeline" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1061,7 +1061,7 @@ "description": [ "When true, this timeline was marked as \"favorite\" by the user" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1074,7 +1074,7 @@ "description": [ "When true, the timeline will update as new data arrives" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1090,7 +1090,7 @@ "signature": [ "\"filter\" | \"search\"" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1103,7 +1103,7 @@ "description": [ "Title" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1119,7 +1119,7 @@ "signature": [ "\"default\" | \"template\"" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1135,7 +1135,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1151,7 +1151,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1167,7 +1167,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1183,7 +1183,7 @@ "signature": [ "{ [x: string]: boolean; }" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1197,7 +1197,7 @@ "signature": [ "{ [x: string]: { version: string; eventId: string; timelineId: string; pinnedEventId: string; createdBy?: string | null | undefined; updatedBy?: string | null | undefined; created?: number | null | undefined; updated?: number | null | undefined; }; }" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1212,7 +1212,7 @@ "ResolveTimelineConfig", " | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1226,7 +1226,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1240,7 +1240,7 @@ "signature": [ "string | null | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1255,7 +1255,7 @@ "SessionViewConfig", " | null" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1268,7 +1268,7 @@ "description": [ "When true, show the timeline flyover" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1284,7 +1284,7 @@ "signature": [ "\"active\" | \"draft\" | \"immutable\"" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1300,7 +1300,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1316,7 +1316,7 @@ "signature": [ "string | null | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1329,7 +1329,7 @@ "description": [ "timeline is saving" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1343,7 +1343,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1357,7 +1357,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1371,7 +1371,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1388,7 +1388,7 @@ "SortColumnTimeline", "[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1405,7 +1405,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1420,7 +1420,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1443,7 +1443,7 @@ }, "[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1459,7 +1459,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1475,7 +1475,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1486,7 +1486,7 @@ "tags": [], "label": "documentType", "description": [], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1500,7 +1500,7 @@ "signature": [ "(\"alert\" | \"alerts\" | \"plain\" | \"system\" | \"registry\" | \"auditd\" | \"auditd_file\" | \"library\" | \"netflow\" | \"suricata\" | \"system_dns\" | \"system_endgame_process\" | \"system_file\" | \"system_fim\" | \"system_security_event\" | \"system_socket\" | \"threat_match\" | \"zeek\")[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1521,7 +1521,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1535,7 +1535,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1549,7 +1549,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1563,7 +1563,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1579,7 +1579,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1593,7 +1593,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1606,7 +1606,7 @@ "description": [ "The number of items to show in a single page of results" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1622,7 +1622,7 @@ "signature": [ "number[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1640,7 +1640,7 @@ "SerializedFilterQuery", " | null; }" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1656,7 +1656,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1672,7 +1672,7 @@ "signature": [ "{ start: string; end: string; }" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1685,7 +1685,7 @@ "description": [ "Uniquely identifies the timeline" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1707,7 +1707,7 @@ }, "[]; }" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1720,7 +1720,7 @@ "description": [ "If selectAll checkbox in header is checked" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1731,7 +1731,7 @@ "tags": [], "label": "selectAll", "description": [], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1745,7 +1745,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1766,7 +1766,7 @@ }, " | null" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1777,7 +1777,7 @@ "tags": [], "label": "isDataProviderVisible", "description": [], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1793,7 +1793,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1807,7 +1807,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1818,7 +1818,7 @@ "tags": [], "label": "sampleSize", "description": [], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false }, @@ -1834,7 +1834,7 @@ "signature": [ "string | null | undefined" ], - "path": "x-pack/plugins/security_solution/public/timelines/store/model.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts", "deprecated": false, "trackAdoption": false } @@ -1852,7 +1852,7 @@ "tags": [], "label": "PluginSetup", "description": [], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1868,7 +1868,7 @@ "ResolverPluginSetup", ">" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1882,9 +1882,9 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; }" + "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; readonly newExpandableFlyoutNavigationEnabled: boolean; readonly crowdstrikeRunScriptEnabled: boolean; }" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1899,7 +1899,7 @@ "tags": [], "label": "PluginStart", "description": [], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1917,7 +1917,7 @@ "NavigationLink", "[]>" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1933,7 +1933,7 @@ "signature": [ "(components: Partial<{ GetStarted: React.ComponentType<{ indicesExist?: boolean | undefined; }>; DashboardsLandingCallout: React.ComponentType<{}>; EnablementModalCallout: React.ComponentType<{}>; }>) => void" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1948,7 +1948,7 @@ "signature": [ "{ GetStarted?: React.ComponentType<{ indicesExist?: boolean | undefined; }> | undefined; DashboardsLandingCallout?: React.ComponentType<{}> | undefined; EnablementModalCallout?: React.ComponentType<{}> | undefined; }" ], - "path": "x-pack/plugins/security_solution/public/contract_components.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/contract_components.ts", "deprecated": false, "trackAdoption": false } @@ -1968,7 +1968,7 @@ "BreadcrumbsNav", ">" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1985,7 +1985,7 @@ "() => ", "UpsellingService" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2001,7 +2001,7 @@ "signature": [ "({ userUrl, isAgentlessAvailable, }: { userUrl: UserUrl; isAgentlessAvailable: boolean; }) => void" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2016,7 +2016,7 @@ "signature": [ "{ userUrl: UserUrl; isAgentlessAvailable: boolean; }" ], - "path": "x-pack/plugins/security_solution/public/onboarding/service/onboarding_service.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/onboarding/service/onboarding_service.ts", "deprecated": false, "trackAdoption": false } @@ -2032,7 +2032,7 @@ "signature": [ "(isSolutionNavigationEnabled: boolean) => void" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2046,7 +2046,7 @@ "signature": [ "boolean" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2066,7 +2066,7 @@ "SolutionNavigation", ">" ], - "path": "x-pack/plugins/security_solution/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2086,7 +2086,7 @@ "tags": [], "label": "AppClient", "description": [], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2100,7 +2100,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2114,7 +2114,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2135,7 +2135,7 @@ "text": "ConfigType" } ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2150,7 +2150,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2165,7 +2165,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2186,7 +2186,7 @@ "text": "BuildFlavor" } ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2204,7 +2204,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2220,7 +2220,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2236,7 +2236,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2252,7 +2252,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2268,7 +2268,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2284,7 +2284,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2300,7 +2300,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2323,7 +2323,7 @@ "text": "BuildFlavor" } ], - "path": "x-pack/plugins/security_solution/server/client/client.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/client/client.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2377,7 +2377,7 @@ "SecuritySolutionPluginStartDependencies", ">" ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2391,7 +2391,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2412,7 +2412,7 @@ }, "" ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2441,7 +2441,7 @@ "text": "SecuritySolutionPluginSetup" } ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2455,7 +2455,7 @@ "signature": [ "SecuritySolutionPluginCoreSetupDependencies" ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2470,7 +2470,7 @@ "signature": [ "SecuritySolutionPluginSetupDependencies" ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2505,7 +2505,7 @@ "text": "SecuritySolutionPluginStart" } ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2525,7 +2525,7 @@ "text": "CoreStart" } ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2540,7 +2540,7 @@ "signature": [ "SecuritySolutionPluginStartDependencies" ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2558,7 +2558,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/security_solution/server/plugin.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2577,7 +2577,7 @@ "tags": [], "label": "SecuritySolutionApiRequestHandlerContext", "description": [], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2597,7 +2597,7 @@ "text": "CoreRequestHandlerContext" } ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2611,7 +2611,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2631,7 +2631,7 @@ "EndpointAuthz", ">>" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2654,7 +2654,7 @@ "text": "ConfigType" } ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2671,7 +2671,7 @@ "() => ", "FrameworkRequest" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2694,7 +2694,7 @@ "text": "AppClient" } ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2710,7 +2710,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2733,7 +2733,7 @@ "text": "IRuleDataService" } ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2750,7 +2750,7 @@ "() => ", "IDetectionRulesClient" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2767,7 +2767,7 @@ "() => ", "IDetectionEngineHealthClient" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2784,7 +2784,7 @@ "() => ", "IRuleExecutionLogForRoutes" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2816,7 +2816,7 @@ }, ">" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2837,7 +2837,7 @@ }, "" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2863,7 +2863,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2886,7 +2886,7 @@ "text": "DataViewsService" } ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2910,7 +2910,7 @@ }, " | null" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2927,7 +2927,7 @@ "() => ", "EndpointInternalFleetServicesInterface" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2944,7 +2944,7 @@ "() => ", "RiskEngineDataClient" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2961,7 +2961,7 @@ "() => ", "RiskScoreDataClient" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2978,7 +2978,7 @@ "() => ", "AssetCriticalityDataClient" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2995,7 +2995,7 @@ "() => ", "EntityStoreDataClient" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -3012,7 +3012,7 @@ "() => ", "SiemRuleMigrationsClient" ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -3035,7 +3035,7 @@ "text": "InferenceClient" } ], - "path": "x-pack/plugins/security_solution/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -3067,7 +3067,7 @@ "ConfigSettings", "; enableUiSettingsValidations: boolean; }" ], - "path": "x-pack/plugins/security_solution/server/config.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/config.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3081,7 +3081,7 @@ "tags": [], "label": "SecuritySolutionPluginSetup", "description": [], - "path": "x-pack/plugins/security_solution/server/plugin_contract.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin_contract.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3099,7 +3099,7 @@ "ProductFeaturesConfigurator", ") => void" ], - "path": "x-pack/plugins/security_solution/server/plugin_contract.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin_contract.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -3114,7 +3114,7 @@ "signature": [ "ProductFeaturesConfigurator" ], - "path": "x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features_service.ts", "deprecated": false, "trackAdoption": false } @@ -3130,9 +3130,9 @@ "\nThe security solution generic experimental features" ], "signature": [ - "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; }" + "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; readonly newExpandableFlyoutNavigationEnabled: boolean; readonly crowdstrikeRunScriptEnabled: boolean; }" ], - "path": "x-pack/plugins/security_solution/server/plugin_contract.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin_contract.ts", "deprecated": false, "trackAdoption": false } @@ -3147,7 +3147,7 @@ "tags": [], "label": "SecuritySolutionPluginStart", "description": [], - "path": "x-pack/plugins/security_solution/server/plugin_contract.ts", + "path": "x-pack/solutions/security/plugins/security_solution/server/plugin_contract.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -3167,7 +3167,7 @@ "tags": [], "label": "SecurityPageName", "description": [], - "path": "packages/deeplinks/security/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/security/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3181,7 +3181,7 @@ "tags": [], "label": "ADD_DATA_PATH", "description": [], - "path": "x-pack/plugins/security_solution/common/constants.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3198,7 +3198,7 @@ "signature": [ "\"securitySolution\"" ], - "path": "x-pack/plugins/security_solution/common/constants.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3213,7 +3213,7 @@ "signature": [ "\"/app/security\"" ], - "path": "x-pack/plugins/security_solution/common/constants.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3228,7 +3228,7 @@ "signature": [ "\"securitySolutionUI\"" ], - "path": "x-pack/plugins/security_solution/common/constants.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3243,7 +3243,7 @@ "signature": [ "\"securitySolutionCasesV2\"" ], - "path": "x-pack/plugins/security_solution/common/constants.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3258,7 +3258,7 @@ "signature": [ "\"/api/detection_engine/rules/_find\"" ], - "path": "x-pack/plugins/security_solution/common/constants.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3275,7 +3275,7 @@ "signature": [ "\"9a1a2dae-0b5f-4c3d-8305-a268d404c306\"" ], - "path": "x-pack/plugins/security_solution/common/detection_engine/constants.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/detection_engine/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3290,7 +3290,7 @@ "signature": [ "\"alert.attributes.enabled\"" ], - "path": "x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3303,9 +3303,9 @@ "label": "ExperimentalFeatures", "description": [], "signature": [ - "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; }" + "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; readonly newExpandableFlyoutNavigationEnabled: boolean; readonly crowdstrikeRunScriptEnabled: boolean; }" ], - "path": "x-pack/plugins/security_solution/common/experimental_features.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3320,7 +3320,7 @@ "signature": [ "\"/manage\"" ], - "path": "x-pack/plugins/security_solution/common/constants.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3337,7 +3337,7 @@ "signature": [ "\"logs-sentinel_one.activity-*\"" ], - "path": "x-pack/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3352,7 +3352,7 @@ "signature": [ "\"siem\"" ], - "path": "x-pack/plugins/security_solution/common/constants.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3369,9 +3369,9 @@ "\nA list of allowed values that can be used in `xpack.securitySolution.enableExperimental`.\nThis object is then used to validate and parse the value entered." ], "signature": [ - "{ readonly alertSuppressionForSequenceEqlRuleEnabled: true; readonly excludePoliciesInFilterEnabled: false; readonly kubernetesEnabled: false; readonly donutChartEmbeddablesEnabled: false; readonly previewTelemetryUrlEnabled: false; readonly extendedRuleExecutionLoggingEnabled: false; readonly socTrendsEnabled: false; readonly responseActionUploadEnabled: true; readonly automatedProcessActionsEnabled: true; readonly responseActionsSentinelOneV1Enabled: true; readonly responseActionsSentinelOneV2Enabled: true; readonly responseActionsSentinelOneGetFileEnabled: true; readonly responseActionsSentinelOneKillProcessEnabled: true; readonly responseActionsSentinelOneProcessesEnabled: true; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: true; readonly endpointManagementSpaceAwarenessEnabled: false; readonly securitySolutionNotesDisabled: false; readonly entityAlertPreviewDisabled: false; readonly assistantModelEvaluation: false; readonly newUserDetailsFlyoutManagedUser: false; readonly riskScoringPersistence: true; readonly riskScoringRoutesEnabled: true; readonly esqlRulesDisabled: false; readonly protectionUpdatesEnabled: true; readonly disableTimelineSaveTour: false; readonly riskEnginePrivilegesRouteEnabled: true; readonly sentinelOneDataInAnalyzerEnabled: true; readonly sentinelOneManualHostActionsEnabled: true; readonly crowdstrikeDataInAnalyzerEnabled: true; readonly responseActionsTelemetryEnabled: false; readonly jamfDataInAnalyzerEnabled: true; readonly timelineEsqlTabDisabled: false; readonly analyzerDatePickersAndSourcererDisabled: false; readonly graphVisualizationInFlyoutEnabled: false; readonly prebuiltRulesCustomizationEnabled: false; readonly malwareOnWriteScanOptionAvailable: true; readonly unifiedManifestEnabled: true; readonly valueListItemsModalEnabled: true; readonly filterProcessDescendantsForEventFiltersEnabled: true; readonly dataIngestionHubEnabled: false; readonly entityStoreDisabled: false; readonly serviceEntityStoreEnabled: true; readonly siemMigrationsEnabled: false; readonly defendInsights: false; }" + "{ readonly alertSuppressionForSequenceEqlRuleEnabled: true; readonly excludePoliciesInFilterEnabled: false; readonly kubernetesEnabled: false; readonly donutChartEmbeddablesEnabled: false; readonly previewTelemetryUrlEnabled: false; readonly extendedRuleExecutionLoggingEnabled: false; readonly socTrendsEnabled: false; readonly responseActionUploadEnabled: true; readonly automatedProcessActionsEnabled: true; readonly responseActionsSentinelOneV1Enabled: true; readonly responseActionsSentinelOneV2Enabled: true; readonly responseActionsSentinelOneGetFileEnabled: true; readonly responseActionsSentinelOneKillProcessEnabled: true; readonly responseActionsSentinelOneProcessesEnabled: true; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: true; readonly endpointManagementSpaceAwarenessEnabled: false; readonly securitySolutionNotesDisabled: false; readonly entityAlertPreviewDisabled: false; readonly assistantModelEvaluation: false; readonly newUserDetailsFlyoutManagedUser: false; readonly riskScoringPersistence: true; readonly riskScoringRoutesEnabled: true; readonly esqlRulesDisabled: false; readonly protectionUpdatesEnabled: true; readonly disableTimelineSaveTour: false; readonly riskEnginePrivilegesRouteEnabled: true; readonly sentinelOneDataInAnalyzerEnabled: true; readonly sentinelOneManualHostActionsEnabled: true; readonly crowdstrikeDataInAnalyzerEnabled: true; readonly responseActionsTelemetryEnabled: false; readonly jamfDataInAnalyzerEnabled: true; readonly timelineEsqlTabDisabled: false; readonly analyzerDatePickersAndSourcererDisabled: false; readonly graphVisualizationInFlyoutEnabled: false; readonly prebuiltRulesCustomizationEnabled: false; readonly malwareOnWriteScanOptionAvailable: true; readonly unifiedManifestEnabled: true; readonly valueListItemsModalEnabled: true; readonly filterProcessDescendantsForEventFiltersEnabled: true; readonly dataIngestionHubEnabled: false; readonly entityStoreDisabled: false; readonly serviceEntityStoreEnabled: false; readonly siemMigrationsEnabled: false; readonly defendInsights: false; readonly newExpandableFlyoutNavigationEnabled: false; readonly crowdstrikeRunScriptEnabled: false; }" ], - "path": "x-pack/plugins/security_solution/common/experimental_features.ts", + "path": "x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 3187c6ebb1327..4d6d35520ae1e 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.devdocs.json b/api_docs/security_solution_ess.devdocs.json index 86a4acbd57322..ddf880d8dc85d 100644 --- a/api_docs/security_solution_ess.devdocs.json +++ b/api_docs/security_solution_ess.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "SecuritySolutionEssPluginSetup", "description": [], - "path": "x-pack/plugins/security_solution_ess/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution_ess/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "SecuritySolutionEssPluginStart", "description": [], - "path": "x-pack/plugins/security_solution_ess/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution_ess/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "SecuritySolutionEssPluginSetup", "description": [], - "path": "x-pack/plugins/security_solution_ess/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution_ess/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -64,7 +64,7 @@ "tags": [], "label": "SecuritySolutionEssPluginStart", "description": [], - "path": "x-pack/plugins/security_solution_ess/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution_ess/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -88,7 +88,7 @@ "signature": [ "\"securitySolutionEss\"" ], - "path": "x-pack/plugins/security_solution_ess/common/index.ts", + "path": "x-pack/solutions/security/plugins/security_solution_ess/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -103,7 +103,7 @@ "signature": [ "\"securitySolutionEss\"" ], - "path": "x-pack/plugins/security_solution_ess/common/index.ts", + "path": "x-pack/solutions/security/plugins/security_solution_ess/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index ac50037684913..ff752ff79abb7 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.devdocs.json b/api_docs/security_solution_serverless.devdocs.json index f216fd2475aca..b5d2fc3e68290 100644 --- a/api_docs/security_solution_serverless.devdocs.json +++ b/api_docs/security_solution_serverless.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "SecuritySolutionServerlessPluginSetup", "description": [], - "path": "x-pack/plugins/security_solution_serverless/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "SecuritySolutionServerlessPluginStart", "description": [], - "path": "x-pack/plugins/security_solution_serverless/public/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "SecuritySolutionServerlessPluginSetup", "description": [], - "path": "x-pack/plugins/security_solution_serverless/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -64,7 +64,7 @@ "tags": [], "label": "SecuritySolutionServerlessPluginStart", "description": [], - "path": "x-pack/plugins/security_solution_serverless/server/types.ts", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -88,7 +88,7 @@ "signature": [ "\"securitySolutionServerless\"" ], - "path": "x-pack/plugins/security_solution_serverless/common/index.ts", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -103,7 +103,7 @@ "signature": [ "\"securitySolutionServerless\"" ], - "path": "x-pack/plugins/security_solution_serverless/common/index.ts", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -118,7 +118,7 @@ "signature": [ "\"security\"" ], - "path": "x-pack/plugins/security_solution_serverless/common/index.ts", + "path": "x-pack/solutions/security/plugins/security_solution_serverless/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index c564182e3e4a8..36d630567dca7 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index b8f60227062d9..2e68221d4fe11 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.devdocs.json b/api_docs/serverless_observability.devdocs.json index 27cfb7e4ed1a4..4b2486bb91368 100644 --- a/api_docs/serverless_observability.devdocs.json +++ b/api_docs/serverless_observability.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "ServerlessObservabilityPublicSetup", "description": [], - "path": "x-pack/plugins/serverless_observability/public/types.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "ServerlessObservabilityPublicStart", "description": [], - "path": "x-pack/plugins/serverless_observability/public/types.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "ServerlessObservabilityPluginSetup", "description": [], - "path": "x-pack/plugins/serverless_observability/server/types.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -64,7 +64,7 @@ "tags": [], "label": "ServerlessObservabilityPluginStart", "description": [], - "path": "x-pack/plugins/serverless_observability/server/types.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -88,7 +88,7 @@ "signature": [ "\"serverlessObservability\"" ], - "path": "x-pack/plugins/serverless_observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -103,7 +103,7 @@ "signature": [ "\"serverlessObservability\"" ], - "path": "x-pack/plugins/serverless_observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index 2b29dcbc97034..1d5e3d895dd30 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 4c4ffb23c5acc..e6e48faee4739 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.devdocs.json b/api_docs/session_view.devdocs.json index ccf4c1e0cd822..2aa60214d7714 100644 --- a/api_docs/session_view.devdocs.json +++ b/api_docs/session_view.devdocs.json @@ -11,7 +11,7 @@ "tags": [], "label": "SessionViewStart", "description": [], - "path": "x-pack/plugins/session_view/public/types.ts", + "path": "x-pack/solutions/security/plugins/session_view/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "SessionViewDeps", ") => JSX.Element" ], - "path": "x-pack/plugins/session_view/public/types.ts", + "path": "x-pack/solutions/security/plugins/session_view/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "SessionViewDeps" ], - "path": "x-pack/plugins/session_view/public/types.ts", + "path": "x-pack/solutions/security/plugins/session_view/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -65,7 +65,7 @@ "signature": [ "\"process.entry_leader.entity_id\"" ], - "path": "x-pack/plugins/session_view/common/constants.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -92,7 +92,7 @@ "tags": [], "label": "Aggregate", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -106,7 +106,7 @@ "signature": [ "string | number" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -117,7 +117,7 @@ "tags": [], "label": "doc_count", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -131,7 +131,7 @@ "tags": [], "label": "AlertStatusEventEntityIdMap", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -145,7 +145,7 @@ "signature": [ "[alertUuid: string]: { status: string; processEntityId: string; }" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -159,7 +159,7 @@ "tags": [], "label": "AlertTypeCount", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -174,7 +174,7 @@ "\"all\" | ", "EventCategory" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -185,7 +185,7 @@ "tags": [], "label": "count", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -199,7 +199,7 @@ "tags": [], "label": "IOLine", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -219,7 +219,7 @@ "text": "ProcessEvent" } ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -230,7 +230,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -244,7 +244,7 @@ "tags": [], "label": "Process", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -255,7 +255,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -276,7 +276,7 @@ }, "[]" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -297,7 +297,7 @@ }, "[]" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -318,7 +318,7 @@ }, "[]" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -339,7 +339,7 @@ }, "[]" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -360,7 +360,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -371,7 +371,7 @@ "tags": [], "label": "autoExpand", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -385,7 +385,7 @@ "signature": [ "number[] | null" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -407,7 +407,7 @@ }, ") => void" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -427,7 +427,7 @@ "text": "ProcessEvent" } ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -453,7 +453,7 @@ }, ") => void" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -473,7 +473,7 @@ "text": "ProcessEvent" } ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -499,7 +499,7 @@ }, ") => void" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -519,7 +519,7 @@ "text": "Process" } ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -537,7 +537,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -553,7 +553,7 @@ "signature": [ "() => boolean" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -569,7 +569,7 @@ "signature": [ "() => boolean" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -593,7 +593,7 @@ }, "[]" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -617,7 +617,7 @@ }, ") => void" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -637,7 +637,7 @@ "text": "AlertStatusEventEntityIdMap" } ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -655,7 +655,7 @@ "signature": [ "() => boolean" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -671,7 +671,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -694,7 +694,7 @@ "text": "ProcessEvent" } ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -710,7 +710,7 @@ "signature": [ "() => boolean" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -734,7 +734,7 @@ }, "[]" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -748,7 +748,7 @@ "signature": [ "boolean" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -766,7 +766,7 @@ "signature": [ "() => boolean" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -782,7 +782,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -806,7 +806,7 @@ }, ") => boolean" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -826,7 +826,7 @@ "text": "Process" } ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -844,7 +844,7 @@ "tags": [], "label": "ProcessEvent", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -858,7 +858,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -900,7 +900,7 @@ }, "[] | undefined; type?: string | string[] | undefined; id?: string | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -914,7 +914,7 @@ "signature": [ "{ extension?: string | undefined; path?: string | undefined; name?: string | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -929,7 +929,7 @@ "ProcessEventNetwork", " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -950,7 +950,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -971,7 +971,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -986,7 +986,7 @@ "User", " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1001,7 +1001,7 @@ "Group", " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1022,7 +1022,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1037,7 +1037,7 @@ "ProcessSelf", " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1059,7 +1059,7 @@ }, " | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1080,7 +1080,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1101,7 +1101,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1122,7 +1122,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -1136,7 +1136,7 @@ "tags": [], "label": "ProcessEventAlert", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1150,7 +1150,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1164,7 +1164,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1178,7 +1178,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1192,7 +1192,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1206,7 +1206,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1236,7 +1236,7 @@ }, "[] | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1251,7 +1251,7 @@ "ProcessEventAlertRule", " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -1265,7 +1265,7 @@ "tags": [], "label": "ProcessEventCloud", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1279,7 +1279,7 @@ "signature": [ "{ name?: string | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1293,7 +1293,7 @@ "signature": [ "{ id?: string | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1307,7 +1307,7 @@ "signature": [ "{ id?: string | undefined; name?: string | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1321,7 +1321,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1335,7 +1335,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -1349,7 +1349,7 @@ "tags": [], "label": "ProcessEventContainer", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1363,7 +1363,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1377,7 +1377,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1391,7 +1391,7 @@ "signature": [ "{ name?: string | undefined; tag?: string | undefined; hash?: { all?: string | undefined; } | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -1405,7 +1405,7 @@ "tags": [], "label": "ProcessEventHost", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1419,7 +1419,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1433,7 +1433,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1447,7 +1447,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1461,7 +1461,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1475,7 +1475,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1489,7 +1489,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1503,7 +1503,7 @@ "signature": [ "{ family?: string | undefined; full?: string | undefined; kernel?: string | undefined; name?: string | undefined; platform?: string | undefined; version?: string | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1517,7 +1517,7 @@ "signature": [ "{ id?: string | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -1531,7 +1531,7 @@ "tags": [], "label": "ProcessEventIPAddress", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1545,7 +1545,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1559,7 +1559,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1573,7 +1573,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -1587,7 +1587,7 @@ "tags": [], "label": "ProcessEventOrchestrator", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1601,7 +1601,7 @@ "signature": [ "{ name?: string | undefined; type?: string | undefined; ip?: string | undefined; parent?: { type?: string | undefined; } | undefined; labels?: string[] | undefined; annotations?: string[] | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1615,7 +1615,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1629,7 +1629,7 @@ "signature": [ "{ name?: string | undefined; id?: string | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -1643,7 +1643,7 @@ "tags": [], "label": "ProcessEventResults", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1657,7 +1657,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1671,7 +1671,7 @@ "signature": [ "any[] | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -1685,7 +1685,7 @@ "tags": [], "label": "ProcessEventsPage", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1706,7 +1706,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1720,7 +1720,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1734,7 +1734,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -1748,7 +1748,7 @@ "tags": [], "label": "ProcessFields", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1762,7 +1762,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1776,7 +1776,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1790,7 +1790,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1804,7 +1804,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1818,7 +1818,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1832,7 +1832,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1846,7 +1846,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1860,7 +1860,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1874,7 +1874,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1888,7 +1888,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1902,7 +1902,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1917,7 +1917,7 @@ "User", " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1932,7 +1932,7 @@ "Group", " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1947,7 +1947,7 @@ "Group", "[] | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1961,7 +1961,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1976,7 +1976,7 @@ "EntryMeta", " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -1997,7 +1997,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -2011,7 +2011,7 @@ "tags": [], "label": "ProcessStartMarker", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2031,7 +2031,7 @@ "text": "ProcessEvent" } ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -2042,7 +2042,7 @@ "tags": [], "label": "line", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -2056,7 +2056,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -2070,7 +2070,7 @@ "tags": [], "label": "Teletype", "description": [], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2084,7 +2084,7 @@ "signature": [ "{ major?: number | undefined; minor?: number | undefined; } | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -2098,7 +2098,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false }, @@ -2112,7 +2112,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false } @@ -2132,7 +2132,7 @@ "signature": [ "\"process.entry_leader.entity_id\"" ], - "path": "x-pack/plugins/session_view/common/constants.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2147,7 +2147,7 @@ "signature": [ "\"end\" | \"fork\" | \"exec\" | \"text_output\" | \"executed\"" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2162,7 +2162,7 @@ "signature": [ "\"event\" | \"signal\"" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2178,7 +2178,7 @@ "\"all\" | ", "EventCategory" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2201,7 +2201,7 @@ }, "; }" ], - "path": "x-pack/plugins/session_view/common/types/v1.ts", + "path": "x-pack/solutions/security/plugins/session_view/common/types/v1.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index b085908391dcc..f3ccb5be91195 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.devdocs.json b/api_docs/share.devdocs.json index f059f4827715a..36ca1c42b9b08 100644 --- a/api_docs/share.devdocs.json +++ b/api_docs/share.devdocs.json @@ -528,7 +528,7 @@ ], "signature": [ "(params: P, options?: ", - "FormatSearchParamsOptions", + "GetRedirectUrlOptions", " | undefined) => string" ], "path": "src/plugins/share/common/url_service/locators/types.ts", @@ -562,7 +562,7 @@ "URL serialization options." ], "signature": [ - "FormatSearchParamsOptions", + "GetRedirectUrlOptions", " | undefined" ], "path": "src/plugins/share/common/url_service/locators/types.ts", @@ -847,7 +847,9 @@ "\nAllows for passing contextual information that each consumer can provide to customize the share menu" ], "signature": [ - "{ title: string; }" + "{ title: string; config?: Partial> | undefined; }" ], "path": "src/plugins/share/public/types.ts", "deprecated": false, @@ -2318,7 +2320,7 @@ ], "signature": [ "(params: P, options?: ", - "FormatSearchParamsOptions", + "GetRedirectUrlOptions", " | undefined) => string" ], "path": "src/plugins/share/common/url_service/locators/types.ts", @@ -2352,7 +2354,7 @@ "URL serialization options." ], "signature": [ - "FormatSearchParamsOptions", + "GetRedirectUrlOptions", " | undefined" ], "path": "src/plugins/share/common/url_service/locators/types.ts", diff --git a/api_docs/share.mdx b/api_docs/share.mdx index b533d5e9cdafa..9acb90e44c143 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 136 | 0 | 73 | 15 | +| 136 | 0 | 73 | 16 | ## Client diff --git a/api_docs/slo.devdocs.json b/api_docs/slo.devdocs.json index 6103989a90a7a..10274a3f7c2c0 100644 --- a/api_docs/slo.devdocs.json +++ b/api_docs/slo.devdocs.json @@ -11,7 +11,7 @@ "tags": [], "label": "SLOPublicPluginsSetup", "description": [], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -31,7 +31,7 @@ "text": "DataPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -51,7 +51,7 @@ "text": "EmbeddableSetup" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -71,7 +71,7 @@ "text": "LicensingPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -161,7 +161,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -182,7 +182,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -206,7 +206,7 @@ }, "[]>) => void; }; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -226,7 +226,7 @@ "text": "PresentationUtilPluginStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -247,7 +247,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -295,7 +295,7 @@ }, ") => void; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -315,7 +315,7 @@ "text": "TriggersAndActionsUIPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -361,7 +361,7 @@ }, ") => void; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -381,7 +381,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -402,7 +402,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -416,7 +416,7 @@ "tags": [], "label": "SLOPublicPluginsStart", "description": [], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -436,7 +436,7 @@ "text": "AiopsPluginStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -456,7 +456,7 @@ "text": "CasesPublicStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -479,7 +479,7 @@ "ActiveCursor", "; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -500,7 +500,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -520,7 +520,7 @@ "text": "DashboardStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -540,7 +540,7 @@ "text": "DataPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -560,7 +560,7 @@ "text": "PluginStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -580,7 +580,7 @@ "text": "PluginStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -600,7 +600,7 @@ "text": "DataViewsServicePublic" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -621,7 +621,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -641,7 +641,7 @@ "text": "DiscoverSharedPublicStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -661,7 +661,7 @@ "text": "EmbeddableStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -682,7 +682,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -712,7 +712,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -732,7 +732,7 @@ "text": "LensPublicStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -752,7 +752,7 @@ "text": "LicensingPluginStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -800,7 +800,7 @@ "LinkProps", "; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -821,7 +821,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -865,7 +865,7 @@ }, ">; }) => void; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -885,7 +885,7 @@ "text": "PresentationUtilPluginStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -906,7 +906,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -946,7 +946,7 @@ }, ">): void; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -967,7 +967,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -987,7 +987,7 @@ "text": "TriggersAndActionsUIPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1075,7 +1075,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1095,7 +1095,7 @@ "text": "UnifiedSearchPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1115,7 +1115,7 @@ "text": "UsageCollectionStart" } ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1136,7 +1136,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1165,7 +1165,7 @@ }, "<{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; preventInitialBackfill?: boolean | undefined; syncField?: string | null | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; revision?: number | undefined; }> | undefined; }>; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", @@ -1211,7 +1211,7 @@ "SloListLocatorParams", ">; }" ], - "path": "x-pack/plugins/observability_solution/slo/public/types.ts", + "path": "x-pack/solutions/observability/plugins/slo/public/types.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "setup", @@ -1221,10 +1221,124 @@ "server": { "classes": [], "functions": [], - "interfaces": [], + "interfaces": [ + { + "parentPluginId": "slo", + "id": "def-server.SloClient", + "type": "Interface", + "tags": [], + "label": "SloClient", + "description": [], + "path": "x-pack/solutions/observability/plugins/slo/server/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "slo", + "id": "def-server.SloClient.getSummaryIndices", + "type": "Function", + "tags": [], + "label": "getSummaryIndices", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/solutions/observability/plugins/slo/server/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "enums": [], "misc": [], - "objects": [] + "objects": [], + "setup": { + "parentPluginId": "slo", + "id": "def-server.SLOServerSetup", + "type": "Interface", + "tags": [], + "label": "SLOServerSetup", + "description": [], + "path": "x-pack/solutions/observability/plugins/slo/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "slo", + "id": "def-server.SLOServerStart", + "type": "Interface", + "tags": [], + "label": "SLOServerStart", + "description": [], + "path": "x-pack/solutions/observability/plugins/slo/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "slo", + "id": "def-server.SLOServerStart.getSloClientWithRequest", + "type": "Function", + "tags": [], + "label": "getSloClientWithRequest", + "description": [], + "signature": [ + "(request: ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + ") => ", + { + "pluginId": "slo", + "scope": "server", + "docId": "kibSloPluginApi", + "section": "def-server.SloClient", + "text": "SloClient" + } + ], + "path": "x-pack/solutions/observability/plugins/slo/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "slo", + "id": "def-server.SLOServerStart.getSloClientWithRequest.$1", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + "" + ], + "path": "x-pack/solutions/observability/plugins/slo/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "lifecycle": "start", + "initialIsOpen": true + } }, "common": { "classes": [], @@ -1242,7 +1356,7 @@ "signature": [ "\"SLOs\"" ], - "path": "x-pack/plugins/observability_solution/slo/common/index.ts", + "path": "x-pack/solutions/observability/plugins/slo/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1257,7 +1371,7 @@ "signature": [ "\"slo\"" ], - "path": "x-pack/plugins/observability_solution/slo/common/index.ts", + "path": "x-pack/solutions/observability/plugins/slo/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1274,7 +1388,7 @@ "signature": [ "{ slos: string; slosSettings: string; slosWelcome: string; slosOutdatedDefinitions: string; sloCreate: string; sloCreateWithEncodedForm: (encodedParams: string) => string; sloEdit: (sloId: string) => string; sloEditWithEncodedForm: (sloId: string, encodedParams: string) => string; sloDetails: (sloId: string, instanceId?: string | undefined, remoteName?: string | undefined, tabId?: string | undefined) => string; }" ], - "path": "x-pack/plugins/observability_solution/slo/common/index.ts", + "path": "x-pack/solutions/observability/plugins/slo/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index 34be1f29719bd..7e51eaad109eb 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 48 | 0 | 48 | 2 | +| 54 | 0 | 54 | 2 | ## Client @@ -34,6 +34,17 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ ### Interfaces +## Server + +### Setup + + +### Start + + +### Interfaces + + ## Common ### Objects diff --git a/api_docs/snapshot_restore.devdocs.json b/api_docs/snapshot_restore.devdocs.json index 72be1ac1a783d..935bd2ba373c6 100644 --- a/api_docs/snapshot_restore.devdocs.json +++ b/api_docs/snapshot_restore.devdocs.json @@ -28,7 +28,7 @@ "tags": [], "label": "REPOSITORY_TYPES", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -45,7 +45,7 @@ "signature": [ "\"/api/snapshot_restore/\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -60,7 +60,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -75,7 +75,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -90,7 +90,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -105,7 +105,7 @@ "signature": [ "\"none\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -120,7 +120,7 @@ "signature": [ "\"8.0.0\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -136,7 +136,7 @@ "RepositoryType", "[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -152,7 +152,7 @@ "RepositoryType", "[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -168,7 +168,7 @@ "RepositoryType", "[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -182,7 +182,7 @@ "tags": [], "label": "PLUGIN", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -193,7 +193,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -207,7 +207,7 @@ "signature": [ "\"basic\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -221,7 +221,7 @@ "signature": [ "(i18n: any) => string" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -235,7 +235,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -253,7 +253,7 @@ "tags": [], "label": "REPOSITORY_PLUGINS_MAP", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -274,7 +274,7 @@ }, ".hdfs" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false } @@ -288,7 +288,7 @@ "tags": [], "label": "TIME_UNITS", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -302,7 +302,7 @@ "signature": [ "\"d\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -316,7 +316,7 @@ "signature": [ "\"h\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -330,7 +330,7 @@ "signature": [ "\"m\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -344,7 +344,7 @@ "signature": [ "\"s\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index fe3e8f32c653d..c95111e641a60 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 27ce322add6ab..0b4048878e808 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.devdocs.json b/api_docs/stack_alerts.devdocs.json index ffa4f04113286..a766826e2e72e 100644 --- a/api_docs/stack_alerts.devdocs.json +++ b/api_docs/stack_alerts.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "({ dependencies: { dataViews, dataViewEditor }, metadata, dataView, onSelectDataView, onChangeMetaData, }: ", "DataViewSelectPopoverProps", - ") => React.JSX.Element | null" + ") => React.JSX.Element" ], "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx", "deprecated": false, diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 5303fd771eb84..fe85571e22a3f 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 8e9ed5dc29325..c830d2c6252af 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/streams.devdocs.json b/api_docs/streams.devdocs.json index 095b9b87cb116..4e6151b341ba7 100644 --- a/api_docs/streams.devdocs.json +++ b/api_docs/streams.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "StreamsPluginSetup", "description": [], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -29,7 +29,7 @@ "Observable", "<{ status: \"unknown\" | \"disabled\" | \"enabled\"; }>" ], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -44,7 +44,7 @@ "tags": [], "label": "StreamsPluginStart", "description": [], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -63,7 +63,27 @@ "section": "def-common.RouteRepositoryClient", "text": "RouteRepositoryClient" }, - "<{ \"POST /api/streams/{id}/_sample\": ", + "<{ \"POST /api/streams/{id}/schema/fields_simulation\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /api/streams/{id}/schema/fields_simulation\", Zod.ZodObject<{ path: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; body: Zod.ZodObject<{ field_definitions: Zod.ZodArray; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }, { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }; }, { path: { id: string; }; body: { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }; }>, ", + "StreamsRouteHandlerResources", + ", { status: \"unknown\" | \"success\" | \"failure\"; simulationError: string | null; documentsWithRuntimeFieldsApplied: unknown[] | null; }, undefined>; \"GET /api/streams/{id}/schema/unmapped_fields\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"GET /api/streams/{id}/schema/unmapped_fields\", Zod.ZodObject<{ path: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; }, { path: { id: string; }; }>, ", + "StreamsRouteHandlerResources", + ", { unmappedFields: string[]; }, undefined>; \"POST /api/streams/{id}/_sample\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -129,11 +149,9 @@ "StreamsRouteHandlerResources", ", { definitions: { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]; trees: ", - "StreamTree", - "[]; }, undefined>; \"DELETE /api/streams/{id}\": ", + "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]; }, undefined>; \"DELETE /api/streams/{id}\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -159,7 +177,7 @@ "Condition", "; }, { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }>, \"many\">>; fields: Zod.ZodDefault; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }>, \"many\">>; children: Zod.ZodDefault, \"many\">>; fields: Zod.ZodDefault; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">>; managed: Zod.ZodDefault; children: Zod.ZodDefault, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; }, { children?: { id: string; condition?: ", "Condition", - "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; }; }, { path: { id: string; }; body: { children?: { id: string; condition?: ", "Condition", - "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; }; }>, ", "StreamsRouteHandlerResources", @@ -197,9 +215,9 @@ "StreamsRouteHandlerResources", ", { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, undefined>; \"POST /api/streams/{id}/_fork\": ", + "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; format?: string | undefined; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, undefined>; \"POST /api/streams/{id}/_fork\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -215,7 +233,7 @@ "Condition", "; }, { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }>, \"many\">>; fields: Zod.ZodDefault; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }>, \"many\">>; children: Zod.ZodDefault, \"many\">>; fields: Zod.ZodDefault; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">>; managed: Zod.ZodDefault; children: Zod.ZodDefault, \"many\">>; }, { id: Zod.ZodString; managed: Zod.ZodDefault; unmanaged_elasticsearch_assets: Zod.ZodOptional; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }>, \"many\">>; }>, \"children\">, \"strip\", Zod.ZodTypeAny, { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }>, \"many\">>; }, { id: Zod.ZodString; unmanaged_elasticsearch_assets: Zod.ZodOptional; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }>, \"many\">>; }>, \"children\">, \"strip\", Zod.ZodTypeAny, { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }>; condition: Zod.ZodType<", "Condition", ", Zod.ZodTypeDef, ", "Condition", - ">; }, \"strip\", Zod.ZodTypeAny, { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + ">; }, \"strip\", Zod.ZodTypeAny, { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }, { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }, { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }; }, { path: { id: string; }; body: { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }; }, { path: { id: string; }; body: { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", @@ -269,11 +287,11 @@ }, "<\"POST /api/streams/_enable\", Zod.ZodObject<{}, \"strip\", Zod.ZodTypeAny, {}, {}>, ", "StreamsRouteHandlerResources", - ", { acknowledged: true; }, undefined>; }, ", + ", { acknowledged: true; message: string; }, undefined>; }, ", "StreamsRepositoryClientOptions", ">" ], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -288,7 +306,7 @@ "Observable", "<{ status: \"unknown\" | \"disabled\" | \"enabled\"; }>" ], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -308,7 +326,7 @@ "tags": [], "label": "ListStreamResponse", "description": [], - "path": "x-pack/plugins/streams/server/lib/streams/stream_crud.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -322,11 +340,11 @@ "signature": [ "{ id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]" ], - "path": "x-pack/plugins/streams/server/lib/streams/stream_crud.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts", "deprecated": false, "trackAdoption": false } @@ -346,7 +364,7 @@ "signature": [ "{}" ], - "path": "x-pack/plugins/streams/common/config.ts", + "path": "x-pack/solutions/observability/plugins/streams/common/config.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -359,7 +377,27 @@ "label": "StreamsRouteRepository", "description": [], "signature": [ - "{ \"POST /api/streams/{id}/_sample\": ", + "{ \"POST /api/streams/{id}/schema/fields_simulation\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /api/streams/{id}/schema/fields_simulation\", Zod.ZodObject<{ path: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; body: Zod.ZodObject<{ field_definitions: Zod.ZodArray; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }, { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }; }, { path: { id: string; }; body: { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }; }>, ", + "StreamsRouteHandlerResources", + ", { status: \"unknown\" | \"success\" | \"failure\"; simulationError: string | null; documentsWithRuntimeFieldsApplied: unknown[] | null; }, undefined>; \"GET /api/streams/{id}/schema/unmapped_fields\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"GET /api/streams/{id}/schema/unmapped_fields\", Zod.ZodObject<{ path: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; }, { path: { id: string; }; }>, ", + "StreamsRouteHandlerResources", + ", { unmappedFields: string[]; }, undefined>; \"POST /api/streams/{id}/_sample\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -425,11 +463,9 @@ "StreamsRouteHandlerResources", ", { definitions: { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]; trees: ", - "StreamTree", - "[]; }, undefined>; \"DELETE /api/streams/{id}\": ", + "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]; }, undefined>; \"DELETE /api/streams/{id}\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -455,7 +491,7 @@ "Condition", "; }, { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }>, \"many\">>; fields: Zod.ZodDefault; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }>, \"many\">>; children: Zod.ZodDefault, \"many\">>; fields: Zod.ZodDefault; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">>; managed: Zod.ZodDefault; children: Zod.ZodDefault, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; }, { children?: { id: string; condition?: ", "Condition", - "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; }; }, { path: { id: string; }; body: { children?: { id: string; condition?: ", "Condition", - "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; }; }>, ", "StreamsRouteHandlerResources", @@ -493,9 +529,9 @@ "StreamsRouteHandlerResources", ", { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, undefined>; \"POST /api/streams/{id}/_fork\": ", + "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; format?: string | undefined; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, undefined>; \"POST /api/streams/{id}/_fork\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -511,7 +547,7 @@ "Condition", "; }, { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }>, \"many\">>; fields: Zod.ZodDefault; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }>, \"many\">>; children: Zod.ZodDefault, \"many\">>; fields: Zod.ZodDefault; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">>; managed: Zod.ZodDefault; children: Zod.ZodDefault, \"many\">>; }, { id: Zod.ZodString; managed: Zod.ZodDefault; unmanaged_elasticsearch_assets: Zod.ZodOptional; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }>, \"many\">>; }>, \"children\">, \"strip\", Zod.ZodTypeAny, { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }>, \"many\">>; }, { id: Zod.ZodString; unmanaged_elasticsearch_assets: Zod.ZodOptional; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }>, \"many\">>; }>, \"children\">, \"strip\", Zod.ZodTypeAny, { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }>; condition: Zod.ZodType<", "Condition", ", Zod.ZodTypeDef, ", "Condition", - ">; }, \"strip\", Zod.ZodTypeAny, { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + ">; }, \"strip\", Zod.ZodTypeAny, { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }, { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }, { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }; }, { path: { id: string; }; body: { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }; }, { path: { id: string; }; body: { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", @@ -565,9 +601,9 @@ }, "<\"POST /api/streams/_enable\", Zod.ZodObject<{}, \"strip\", Zod.ZodTypeAny, {}, {}>, ", "StreamsRouteHandlerResources", - ", { acknowledged: true; }, undefined>; }" + ", { acknowledged: true; message: string; }, undefined>; }" ], - "path": "x-pack/plugins/streams/server/routes/index.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/routes/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -581,7 +617,7 @@ "tags": [], "label": "StreamsPluginSetup", "description": [], - "path": "x-pack/plugins/streams/server/plugin.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -595,7 +631,7 @@ "tags": [], "label": "StreamsPluginStart", "description": [], - "path": "x-pack/plugins/streams/server/plugin.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -619,11 +655,11 @@ "signature": [ "{ id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }" + "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; format?: string | undefined; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }" ], - "path": "x-pack/plugins/streams/common/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -638,11 +674,11 @@ "signature": [ "{ id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }" ], - "path": "x-pack/plugins/streams/common/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/streams.mdx b/api_docs/streams.mdx index c998504b68e13..12d94aa1db8bd 100644 --- a/api_docs/streams.mdx +++ b/api_docs/streams.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streams title: "streams" image: https://source.unsplash.com/400x175/?github description: API docs for the streams plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streams'] --- import streamsObj from './streams.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/st | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 13 | 0 | 13 | 4 | +| 13 | 0 | 13 | 3 | ## Client diff --git a/api_docs/streams_app.devdocs.json b/api_docs/streams_app.devdocs.json index 12a4d9b1b7d5a..0c7fcf59a750f 100644 --- a/api_docs/streams_app.devdocs.json +++ b/api_docs/streams_app.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "StreamsAppPublicSetup", "description": [], - "path": "x-pack/plugins/streams_app/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "StreamsAppPublicStart", "description": [], - "path": "x-pack/plugins/streams_app/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "StreamsAppServerSetup", "description": [], - "path": "x-pack/plugins/streams_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -64,7 +64,7 @@ "tags": [], "label": "StreamsAppServerStart", "description": [], - "path": "x-pack/plugins/streams_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -83,7 +83,7 @@ "tags": [], "label": "EntityTypeDefinition", "description": [], - "path": "x-pack/plugins/streams_app/common/index.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -94,7 +94,7 @@ "tags": [], "label": "displayName", "description": [], - "path": "x-pack/plugins/streams_app/common/index.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -114,11 +114,11 @@ "signature": [ "EntityBase & { type: \"stream\"; properties: { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; }" ], - "path": "x-pack/plugins/streams_app/common/index.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -133,11 +133,11 @@ "signature": [ "EntityBase & { type: \"stream\"; properties: { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; }" ], - "path": "x-pack/plugins/streams_app/common/index.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/streams_app.mdx b/api_docs/streams_app.mdx index c33f416e0da40..5ead02c343fbb 100644 --- a/api_docs/streams_app.mdx +++ b/api_docs/streams_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streamsApp title: "streamsApp" image: https://source.unsplash.com/400x175/?github description: API docs for the streamsApp plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streamsApp'] --- import streamsAppObj from './streams_app.devdocs.json'; diff --git a/api_docs/task_manager.devdocs.json b/api_docs/task_manager.devdocs.json index 88f728716be0e..3d43a6cda1eb4 100644 --- a/api_docs/task_manager.devdocs.json +++ b/api_docs/task_manager.devdocs.json @@ -454,42 +454,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "taskManager", - "id": "def-server.isEphemeralTaskRejectedDueToCapacityError", - "type": "Function", - "tags": [], - "label": "isEphemeralTaskRejectedDueToCapacityError", - "description": [], - "signature": [ - "(error: Error | ", - "EphemeralTaskRejectedDueToCapacityError", - ") => boolean" - ], - "path": "x-pack/plugins/task_manager/server/task_running/errors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "taskManager", - "id": "def-server.isEphemeralTaskRejectedDueToCapacityError.$1", - "type": "CompoundType", - "tags": [], - "label": "error", - "description": [], - "signature": [ - "Error | ", - "EphemeralTaskRejectedDueToCapacityError" - ], - "path": "x-pack/plugins/task_manager/server/task_running/errors.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "taskManager", "id": "def-server.isUnrecoverableError", @@ -1673,23 +1637,6 @@ } ], "misc": [ - { - "parentPluginId": "taskManager", - "id": "def-server.EphemeralTask", - "type": "Type", - "tags": [], - "label": "EphemeralTask", - "description": [ - "\nA task instance that has an id and is ready for storage." - ], - "signature": [ - "{ params: Record; scope?: string[] | undefined; enabled?: boolean | undefined; state: Record; taskType: string; }" - ], - "path": "x-pack/plugins/task_manager/server/task.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "taskManager", "id": "def-server.TaskDefinitionRegistry", @@ -1988,9 +1935,9 @@ "signature": [ "Pick<", "TaskScheduling", - ", \"schedule\" | \"runSoon\" | \"bulkEnable\" | \"ephemeralRunNow\" | \"ensureScheduled\" | \"bulkUpdateSchedules\" | \"bulkDisable\" | \"bulkSchedule\" | \"bulkUpdateState\"> & Pick<", + ", \"schedule\" | \"runSoon\" | \"bulkEnable\" | \"ensureScheduled\" | \"bulkUpdateSchedules\" | \"bulkDisable\" | \"bulkSchedule\" | \"bulkUpdateState\"> & Pick<", "TaskStore", - ", \"get\" | \"aggregate\" | \"fetch\" | \"remove\" | \"bulkRemove\"> & { removeIfExists: (id: string) => Promise; } & { supportsEphemeralTasks: () => boolean; getRegisteredTypes: () => string[]; }" + ", \"get\" | \"aggregate\" | \"fetch\" | \"remove\" | \"bulkRemove\"> & { removeIfExists: (id: string) => Promise; } & { getRegisteredTypes: () => string[]; }" ], "path": "x-pack/plugins/task_manager/server/plugin.ts", "deprecated": false, diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 34fb36b7d6fd0..09bfec7a46728 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 108 | 0 | 64 | 7 | +| 105 | 0 | 62 | 6 | ## Server diff --git a/api_docs/telemetry.devdocs.json b/api_docs/telemetry.devdocs.json index 4ea397d13220c..765689834b183 100644 --- a/api_docs/telemetry.devdocs.json +++ b/api_docs/telemetry.devdocs.json @@ -811,14 +811,6 @@ "plugin": "datasetQuality", "path": "x-pack/plugins/observability_solution/dataset_quality/server/services/data_telemetry/data_telemetry_service.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/telemetry/sender_helpers.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/telemetry/sender.test.ts" @@ -827,21 +819,29 @@ "plugin": "fleet", "path": "x-pack/plugins/fleet/server/telemetry/sender.test.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender_helpers.ts" + }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.test.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.test.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.test.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender.test.ts" } ], "children": [], diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 207ac79533832..c952ea58fd007 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 627e061f33085..762b4de3bd2fe 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 32336fbcf4fd3..e0107c7da79cc 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.devdocs.json b/api_docs/threat_intelligence.devdocs.json index 2257a85ac3bcb..f55a8d2199db8 100644 --- a/api_docs/threat_intelligence.devdocs.json +++ b/api_docs/threat_intelligence.devdocs.json @@ -15,7 +15,7 @@ "signature": [ "(threatIntelligencePage: \"indicators\") => TILinkItem" ], - "path": "x-pack/plugins/threat_intelligence/public/utils/security_solution_links.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -31,7 +31,7 @@ "signature": [ "\"indicators\"" ], - "path": "x-pack/plugins/threat_intelligence/public/utils/security_solution_links.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -53,7 +53,7 @@ "description": [ "\nMethods exposed from the security solution to the threat intelligence application." ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -69,7 +69,7 @@ "signature": [ "() => React.ComponentType<{ children: React.ReactNode; }>" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -87,7 +87,7 @@ "signature": [ "() => React.ComponentType<{ children: React.ReactNode; }>" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -105,7 +105,7 @@ "signature": [ "LicenseAware" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -121,7 +121,7 @@ "signature": [ "SelectedDataView" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -140,7 +140,7 @@ "AnyAction", ">" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -158,7 +158,7 @@ "UseInvestigateInTimelineProps", ") => () => Promise" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -172,7 +172,7 @@ "signature": [ "UseInvestigateInTimelineProps" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -197,7 +197,7 @@ "text": "Query" } ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -221,7 +221,7 @@ }, "[]" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -244,7 +244,7 @@ "text": "TimeRange" } ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -260,7 +260,7 @@ "signature": [ "React.VoidFunctionComponent" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -307,7 +307,7 @@ "signature": [ "(query: { id: string; loading: boolean; refetch: VoidFunction; }) => void" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -318,7 +318,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -329,7 +329,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -340,7 +340,7 @@ "tags": [], "label": "loading", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -354,7 +354,7 @@ "signature": [ "VoidFunction" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -377,7 +377,7 @@ "signature": [ "(query: { id: string; }) => void" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -388,7 +388,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -399,7 +399,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -420,7 +420,7 @@ "signature": [ "Blocking" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -434,7 +434,7 @@ "tags": [], "label": "ThreatIntelligencePluginSetup", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -447,7 +447,7 @@ "tags": [], "label": "ThreatIntelligencePluginStart", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -469,7 +469,7 @@ }, "; }) => React.ReactElement>" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -493,7 +493,7 @@ "signature": [ "\"/threat_intelligence\"" ], - "path": "x-pack/plugins/threat_intelligence/public/constants/navigation.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -505,12 +505,12 @@ "tags": [], "label": "TIPageId", "description": [ - "\nAll the IDs for the threat intelligence pages.\nThis needs to match the threat intelligence page entries in SecurityPageName` (x-pack/plugins/security_solution/common/constants.ts).\n\nExample to add more IDs:\n export type TIPageId = 'threat_intelligence' | 'threat_intelligence-feed';" + "\nAll the IDs for the threat intelligence pages.\nThis needs to match the threat intelligence page entries in SecurityPageName` (x-pack/solutions/security/plugins/security_solution/common/constants.ts).\n\nExample to add more IDs:\n export type TIPageId = 'threat_intelligence' | 'threat_intelligence-feed';" ], "signature": [ "\"threat_intelligence\"" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 058f185518266..0abea67f7f77a 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.devdocs.json b/api_docs/timelines.devdocs.json index c404e4317d82e..b916d23908995 100644 --- a/api_docs/timelines.devdocs.json +++ b/api_docs/timelines.devdocs.json @@ -15,7 +15,7 @@ "signature": [ "(arrayIndex: number) => number" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -29,7 +29,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -50,7 +50,7 @@ "signature": [ "(element: HTMLElement | null | undefined) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -64,7 +64,7 @@ "signature": [ "HTMLElement | null | undefined" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -85,7 +85,7 @@ "signature": [ "({ colindexAttribute, containerElement, ariaColindex, ariaRowindex, rowindexAttribute, }: { colindexAttribute: string; containerElement: Element | null; ariaColindex: number; ariaRowindex: number; rowindexAttribute: string; }) => FocusColumnResult" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -96,7 +96,7 @@ "tags": [], "label": "{\n colindexAttribute,\n containerElement,\n ariaColindex,\n ariaRowindex,\n rowindexAttribute,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -107,7 +107,7 @@ "tags": [], "label": "colindexAttribute", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -121,7 +121,7 @@ "signature": [ "Element | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -132,7 +132,7 @@ "tags": [], "label": "ariaColindex", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -143,7 +143,7 @@ "tags": [], "label": "ariaRowindex", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -154,7 +154,7 @@ "tags": [], "label": "rowindexAttribute", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -176,7 +176,7 @@ "signature": [ "({ containerElement, tableClassName, }: { containerElement: HTMLElement | null; tableClassName: string; }) => HTMLDivElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -187,7 +187,7 @@ "tags": [], "label": "{\n containerElement,\n tableClassName,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -201,7 +201,7 @@ "signature": [ "HTMLElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -212,7 +212,7 @@ "tags": [], "label": "tableClassName", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -234,7 +234,7 @@ "signature": [ "({ containerElement, tableClassName, }: { containerElement: HTMLElement | null; tableClassName: string; }) => HTMLDivElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -245,7 +245,7 @@ "tags": [], "label": "{\n containerElement,\n tableClassName,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -259,7 +259,7 @@ "signature": [ "HTMLElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -270,7 +270,7 @@ "tags": [], "label": "tableClassName", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -290,7 +290,7 @@ "signature": [ "(ariaRowindex: number) => string" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -304,7 +304,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -323,7 +323,7 @@ "signature": [ "(ariaRowindex: number) => string" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -337,7 +337,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -361,7 +361,7 @@ "; shiftKey: boolean; tableHasFocus: (containerElement: HTMLElement | null) => boolean; tableClassName: string; }) => ", "SkipFocus" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -372,7 +372,7 @@ "tags": [], "label": "{\n containerElement,\n getFocusedCell,\n shiftKey,\n tableHasFocus,\n tableClassName,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -386,7 +386,7 @@ "signature": [ "HTMLElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -400,7 +400,7 @@ "signature": [ "({ containerElement, tableClassName, }: { containerElement: HTMLElement | null; tableClassName: string; }) => HTMLDivElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -415,7 +415,7 @@ "signature": [ "{ containerElement: HTMLElement | null; tableClassName: string; }" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -428,7 +428,7 @@ "tags": [], "label": "shiftKey", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -442,7 +442,7 @@ "signature": [ "(containerElement: HTMLElement | null) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -456,7 +456,7 @@ "signature": [ "HTMLElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -471,7 +471,7 @@ "tags": [], "label": "tableClassName", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -495,7 +495,7 @@ "SkipFocus", "; }) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -506,7 +506,7 @@ "tags": [], "label": "{\n onSkipFocusBackwards,\n onSkipFocusForward,\n skipFocus,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -520,7 +520,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -536,7 +536,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -552,7 +552,7 @@ "signature": [ "\"SKIP_FOCUS_BACKWARDS\" | \"SKIP_FOCUS_FORWARD\" | \"SKIP_FOCUS_NOOP\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -574,7 +574,7 @@ "signature": [ "(event: React.KeyboardEvent) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -588,7 +588,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -609,7 +609,7 @@ "signature": [ "(event: React.KeyboardEvent) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -623,7 +623,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -644,7 +644,7 @@ "signature": [ "(event: React.KeyboardEvent) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -658,7 +658,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -679,7 +679,7 @@ "signature": [ "(event: React.KeyboardEvent) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -693,7 +693,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -716,7 +716,7 @@ "OnColumnFocused", "; rowindexAttribute: string; }) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -727,7 +727,7 @@ "tags": [], "label": "{\n colindexAttribute,\n containerElement,\n event,\n maxAriaColindex,\n maxAriaRowindex,\n onColumnFocused,\n rowindexAttribute,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -738,7 +738,7 @@ "tags": [], "label": "colindexAttribute", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -752,7 +752,7 @@ "signature": [ "HTMLDivElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -766,7 +766,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -777,7 +777,7 @@ "tags": [], "label": "maxAriaColindex", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -788,7 +788,7 @@ "tags": [], "label": "maxAriaRowindex", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -802,7 +802,7 @@ "signature": [ "({ newFocusedColumn, newFocusedColumnAriaColindex, }: { newFocusedColumn: HTMLDivElement | null; newFocusedColumnAriaColindex: number | null; }) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -817,7 +817,7 @@ "signature": [ "{ newFocusedColumn: HTMLDivElement | null; newFocusedColumnAriaColindex: number | null; }" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -830,7 +830,7 @@ "tags": [], "label": "rowindexAttribute", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -852,7 +852,7 @@ "signature": [ "(event: React.KeyboardEvent) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -866,7 +866,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -895,7 +895,7 @@ " extends ", "HoverActionComponentProps" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -939,7 +939,7 @@ "EuiButtonIconProps", " & { href?: string | undefined; onClick?: React.MouseEventHandler | undefined; } & React.AnchorHTMLAttributes & { buttonRef?: React.Ref | undefined; })> | React.FunctionComponent | undefined" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false }, @@ -953,7 +953,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false }, @@ -982,7 +982,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false }, @@ -996,7 +996,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false }, @@ -1034,7 +1034,7 @@ }, "; }" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false } @@ -1056,7 +1056,7 @@ "signature": [ "\"aria-colindex\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1073,7 +1073,7 @@ "signature": [ "\"aria-rowindex\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1090,7 +1090,7 @@ "signature": [ "\"data-colindex\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1107,7 +1107,7 @@ "signature": [ "\"data-rowindex\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1124,7 +1124,7 @@ "signature": [ "1" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1139,7 +1139,7 @@ "signature": [ "({ newFocusedColumn, newFocusedColumnAriaColindex, }: { newFocusedColumn: HTMLDivElement | null; newFocusedColumnAriaColindex: number | null; }) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1154,7 +1154,7 @@ "signature": [ "{ newFocusedColumn: HTMLDivElement | null; newFocusedColumnAriaColindex: number | null; }" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -1195,7 +1195,7 @@ }, "; }" ], - "path": "x-pack/plugins/timelines/public/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1209,7 +1209,7 @@ "tags": [], "label": "TimelinesUIStart", "description": [], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1226,33 +1226,33 @@ "() => ", "HoverActionsConfig" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "kubernetesSecurity", - "path": "x-pack/plugins/kubernetes_security/public/hooks/use_filter.ts" + "path": "x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_filter.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/public/timelines/add_to_timeline_button.tsx" + "path": "x-pack/platform/plugins/shared/osquery/public/timelines/add_to_timeline_button.tsx" }, { "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" }, { "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" }, { "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" }, { "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" } ], "children": [], @@ -1268,7 +1268,7 @@ "signature": [ "() => any" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1288,7 +1288,7 @@ "LoadingPanelProps", ", string | React.JSXElementConstructor>" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1302,7 +1302,7 @@ "signature": [ "LoadingPanelProps" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1324,7 +1324,7 @@ "LastUpdatedAtProps", ", string | React.JSXElementConstructor>" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1338,7 +1338,7 @@ "signature": [ "LastUpdatedAtProps" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1359,7 +1359,7 @@ ") => ", "UseAddToTimeline" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1377,7 +1377,7 @@ "SensorAPI", ") => void" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1397,7 +1397,7 @@ "AnyAction", ">) => void" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1414,7 +1414,7 @@ "AnyAction", ">" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1441,7 +1441,7 @@ "tags": [], "label": "TimelinesPluginUI", "description": [], - "path": "x-pack/plugins/timelines/server/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1455,7 +1455,7 @@ "tags": [], "label": "TimelinesPluginStart", "description": [], - "path": "x-pack/plugins/timelines/server/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1486,7 +1486,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1501,7 +1501,7 @@ "Fields", "" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1516,7 +1516,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1531,7 +1531,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1550,7 +1550,7 @@ "signature": [ "(field: string) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1564,7 +1564,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1583,7 +1583,7 @@ "signature": [ "(value: T | T[] | null | undefined) => T[]" ], - "path": "x-pack/plugins/timelines/common/utils/to_array.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1597,7 +1597,7 @@ "signature": [ "T | T[] | null | undefined" ], - "path": "x-pack/plugins/timelines/common/utils/to_array.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1616,7 +1616,7 @@ "signature": [ "(value: T | T[] | null) => { str: string; isObjectArray?: boolean | undefined; }[]" ], - "path": "x-pack/plugins/timelines/common/utils/to_array.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1630,7 +1630,7 @@ "signature": [ "T | T[] | null" ], - "path": "x-pack/plugins/timelines/common/utils/to_array.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1648,7 +1648,7 @@ "tags": [], "label": "CursorType", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1663,7 +1663,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1678,7 +1678,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -1692,7 +1692,7 @@ "tags": [], "label": "DataProvider", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1705,7 +1705,7 @@ "description": [ "Uniquely identifies a data provider" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1718,7 +1718,7 @@ "description": [ "Human readable" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1731,7 +1731,7 @@ "description": [ "\nWhen `false`, a data provider is temporarily disabled, but not removed from\nthe timeline. default: `true`" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1744,7 +1744,7 @@ "description": [ "\nWhen `true`, a data provider is excluding the match, but not removed from\nthe timeline. default: `false`" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1757,7 +1757,7 @@ "description": [ "\nReturns the KQL query who have been added by user" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1779,7 +1779,7 @@ "text": "QueryMatch" } ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1802,7 +1802,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1818,7 +1818,7 @@ "signature": [ "\"default\" | \"template\" | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false } @@ -1834,27 +1834,27 @@ ], "label": "DeprecatedRowRenderer", "description": [ - "\nThis interface should not be used anymore.\nUse the one from `plugins/security_solution/common/types/timeline`." + "\nThis interface should not be used anymore.\nUse the one from `solutions/security/plugins/security_solution/common/types/timeline`." ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx" } ], "children": [ @@ -1868,7 +1868,7 @@ "signature": [ "DeprecatedRowRendererId" ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1890,7 +1890,7 @@ }, ") => boolean" ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1910,7 +1910,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1936,7 +1936,7 @@ }, "; isDraggable: boolean; scopeId: string; }) => React.ReactNode" ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1947,7 +1947,7 @@ "tags": [], "label": "{\n contextId,\n data,\n isDraggable,\n scopeId,\n }", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1961,7 +1961,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1981,7 +1981,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1992,7 +1992,7 @@ "tags": [], "label": "isDraggable", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2003,7 +2003,7 @@ "tags": [], "label": "scopeId", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false } @@ -2022,7 +2022,7 @@ "tags": [], "label": "EqlFieldsComboBoxOptions", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2037,7 +2037,7 @@ "EuiComboBoxOptionOption", "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2052,7 +2052,7 @@ "EuiComboBoxOptionOption", "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2067,7 +2067,7 @@ "EuiComboBoxOptionOption", "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false } @@ -2081,7 +2081,7 @@ "tags": [], "label": "EqlOptions", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2095,7 +2095,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2109,7 +2109,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2123,7 +2123,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2137,7 +2137,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2151,7 +2151,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false } @@ -2165,7 +2165,7 @@ "tags": [], "label": "FieldInfo", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2176,7 +2176,7 @@ "tags": [], "label": "category", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2190,7 +2190,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2204,7 +2204,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2218,7 +2218,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2229,7 +2229,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2243,7 +2243,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -2275,7 +2275,7 @@ }, ", \"format\">" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2288,7 +2288,7 @@ "description": [ "Where the field belong" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2305,7 +2305,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2322,7 +2322,7 @@ "Maybe", "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2339,7 +2339,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2354,7 +2354,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -2388,33 +2388,33 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" } ], "children": [ @@ -2435,7 +2435,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2449,7 +2449,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2465,7 +2465,7 @@ "MappingRuntimeField", "; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -2479,7 +2479,7 @@ "tags": [], "label": "Inspect", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2493,7 +2493,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -2507,7 +2507,7 @@ "tags": [], "label": "LastTimeDetails", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2522,7 +2522,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2537,7 +2537,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2552,7 +2552,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false } @@ -2566,7 +2566,7 @@ "tags": [], "label": "PaginationInputPaginated", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2579,7 +2579,7 @@ "description": [ "The activePage parameter defines the page of results you want to fetch" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2592,7 +2592,7 @@ "description": [ "The cursorStart parameter defines the start of the results to be displayed" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2605,7 +2605,7 @@ "description": [ "The fakePossibleCount parameter determines the total count in order to show 5 additional pages" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2618,7 +2618,7 @@ "description": [ "The querySize parameter is the number of items to be returned" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -2632,7 +2632,7 @@ "tags": [], "label": "QueryMatch", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2643,7 +2643,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2657,7 +2657,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2671,7 +2671,7 @@ "signature": [ "string | number | boolean | (string | number | boolean)[]" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2685,7 +2685,7 @@ "signature": [ "string | number | boolean | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2699,7 +2699,7 @@ "signature": [ "\"includes\" | \":\" | \":*\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false } @@ -2723,7 +2723,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2737,7 +2737,7 @@ "signature": [ "Field" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2757,7 +2757,7 @@ "text": "Direction" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -2771,7 +2771,7 @@ "tags": [], "label": "TimelineEdges", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2791,7 +2791,7 @@ "text": "TimelineItem" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2811,7 +2811,7 @@ "text": "CursorType" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false } @@ -2845,7 +2845,7 @@ "EqlSearchResponse", ">" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2866,7 +2866,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2877,7 +2877,7 @@ "tags": [], "label": "totalCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2891,7 +2891,7 @@ "signature": [ "{ activePage: number; querySize: number; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2912,7 +2912,7 @@ }, " | null" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false } @@ -2944,7 +2944,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2958,7 +2958,7 @@ "signature": [ "{ [x: string]: number; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2979,7 +2979,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2990,7 +2990,7 @@ "tags": [], "label": "totalCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3004,7 +3004,7 @@ "signature": [ "{ activePage: number; querySize: number; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3027,7 +3027,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false } @@ -3041,7 +3041,7 @@ "tags": [], "label": "TimelineEventsDetailsItem", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3056,7 +3056,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3070,7 +3070,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3081,7 +3081,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3096,7 +3096,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3110,7 +3110,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3121,7 +3121,7 @@ "tags": [], "label": "isObjectArray", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false } @@ -3153,7 +3153,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3176,7 +3176,7 @@ }, "[]> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3199,7 +3199,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3222,7 +3222,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3237,7 +3237,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false } @@ -3269,7 +3269,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3283,7 +3283,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3306,7 +3306,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false } @@ -3320,7 +3320,7 @@ "tags": [], "label": "TimelineItem", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3331,7 +3331,7 @@ "tags": [], "label": "_id", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3346,7 +3346,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3367,7 +3367,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3387,7 +3387,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false } @@ -3419,7 +3419,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3430,7 +3430,7 @@ "tags": [], "label": "destinationIpCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3453,7 +3453,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3464,7 +3464,7 @@ "tags": [], "label": "hostCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3475,7 +3475,7 @@ "tags": [], "label": "processCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3486,7 +3486,7 @@ "tags": [], "label": "sourceIpCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3497,7 +3497,7 @@ "tags": [], "label": "userCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false } @@ -3511,7 +3511,7 @@ "tags": [], "label": "TimelineNonEcsData", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3522,7 +3522,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3537,7 +3537,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false } @@ -3551,7 +3551,7 @@ "tags": [], "label": "TimerangeInput", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3564,7 +3564,7 @@ "description": [ "The interval string to use for last bucket. The format is '{value}{unit}'. For example '5m' would return the metrics for the last 5 minutes of the timespan." ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3577,7 +3577,7 @@ "description": [ "The end of the timerange" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3590,7 +3590,7 @@ "description": [ "The beginning of the timerange" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -3604,7 +3604,7 @@ "tags": [], "label": "TotalValue", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3615,7 +3615,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3626,7 +3626,7 @@ "tags": [], "label": "relation", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -3642,7 +3642,7 @@ "tags": [], "label": "Direction", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3654,7 +3654,7 @@ "tags": [], "label": "LastEventIndexKey", "description": [], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3666,7 +3666,7 @@ "tags": [], "label": "TimelineEventsQueries", "description": [], - "path": "x-pack/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3693,25 +3693,25 @@ }, "; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" } ], "initialIsOpen": false @@ -3730,373 +3730,373 @@ "FieldCategory", "; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts" + "path": "x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts" + "path": "x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/types/timeline/cells/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/types/timeline/cells/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/types/timeline/cells/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/types/timeline/cells/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/types/header_actions/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/types/header_actions/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/types/header_actions/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/types/header_actions/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/kuery/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/control_columns/transform_control_columns.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/transform_control_columns.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/control_columns/transform_control_columns.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/transform_control_columns.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/containers/source/mock.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/containers/source/mock.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/containers/source/mock.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/containers/source/mock.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/sourcerer/store/model.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/model.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/sourcerer/store/model.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/model.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/sourcerer/store/model.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/model.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/containers/source/use_data_view.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/containers/source/use_data_view.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/containers/source/use_data_view.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/containers/source/use_data_view.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/containers/source/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/containers/source/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/containers/source/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/containers/source/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/containers/source/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_badge.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_badge.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_badge.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_badge.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/add_data_provider_popover.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/add_data_provider_popover.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/top_n/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/top_n/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/add_data_provider_popover.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/add_data_provider_popover.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/context.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/context.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/utils/enriched_field_info.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/utils.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/utils/enriched_field_info.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/utils.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/utils.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/enriched_field_info.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/utils.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/enriched_field_info.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts" + "plugin": "@kbn/securitysolution-data-table", + "path": "x-pack/solutions/security/packages/data_table/mock/mock_source.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts" + "plugin": "@kbn/securitysolution-data-table", + "path": "x-pack/solutions/security/packages/data_table/mock/mock_source.ts" }, { - "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/mock/mock_source.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts" }, { - "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/mock/mock_source.ts" + "plugin": "securitySolution", + "path": "x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts" } ], "initialIsOpen": false @@ -4143,7 +4143,7 @@ }, " | undefined; type?: string | undefined; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/actions/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4166,7 +4166,7 @@ }, "; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4181,7 +4181,7 @@ "signature": [ "\"DELETED_SECURITY_SOLUTION_DATA_VIEW\"" ], - "path": "x-pack/plugins/timelines/common/constants.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4195,7 +4195,7 @@ ], "label": "DeprecatedCellValueElementProps", "description": [ - "\nThe following props are provided to the function called by `renderCellValue`.\nWarning: This type might be outdated. Therefore, migrate to the new one from\n`plugins/security_solution/common/types/timeline/cells/index.ts`." + "\nThe following props are provided to the function called by `renderCellValue`.\nWarning: This type might be outdated. Therefore, migrate to the new one from\n`solutions/security/plugins/security_solution/common/types/timeline/cells/index.ts`." ], "signature": [ "EuiDataGridCellValueElementProps", @@ -4249,25 +4249,25 @@ }, "[] | undefined; setFlyoutAlert?: ((alertId: string) => void) | undefined; scopeId: string; truncate?: boolean | undefined; key?: string | undefined; closeCellPopover?: (() => void) | undefined; enableActions?: boolean | undefined; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/cells/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/cells/index.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx" + "path": "x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx" } ], "initialIsOpen": false @@ -4282,7 +4282,7 @@ "signature": [ "\"events\" | \"sessions\"" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4299,7 +4299,7 @@ "signature": [ "\":*\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4321,7 +4321,7 @@ "text": "EqlOptions" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4341,33 +4341,33 @@ " : ", "IndexFieldsStrategyRequestByIndices" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" + "path": "x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" + "path": "x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" } ], "initialIsOpen": false @@ -4384,7 +4384,7 @@ "signature": [ "\":\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4401,7 +4401,7 @@ "signature": [ "\"includes\" | \":\" | \":*\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4424,7 +4424,7 @@ }, "; type?: string | undefined; esTypes?: string[] | undefined; }[]; language: \"eql\"; fieldRequested: string[]; params?: any; id?: string | undefined; size?: number | undefined; indexType?: string | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; timestampField?: string | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; runtimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; should: {}[]; must: {}[]; must_not: {}[]; }; } | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; eventCategoryField?: string | undefined; tiebreakerField?: string | undefined; runTimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4455,7 +4455,7 @@ }, ".all; params?: any; id?: string | undefined; indexType?: string | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; runtimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: any; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; authFilter?: {} | undefined; excludeEcsData?: boolean | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4478,7 +4478,7 @@ }, ".details; params?: any; id?: string | undefined; indexType?: string | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; runtimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; should: {}[]; must: {}[]; must_not: {}[]; }; } | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; authFilter?: {} | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4509,7 +4509,7 @@ }, "; params?: any; id?: string | undefined; indexType?: string | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4532,7 +4532,7 @@ }, ".kpi; params?: any; id?: string | undefined; indexType?: string | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; runtimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; should: {}[]; must: {}[]; must_not: {}[]; }; } | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4546,7 +4546,7 @@ "tags": [], "label": "EMPTY_BROWSER_FIELDS", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4562,7 +4562,7 @@ "signature": [ "{ readonly EVENTS: \"events\"; readonly SESSIONS: \"sessions\"; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index d3c4eb10322de..01510bd9702eb 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 47e11b4c27bff..55971fa847f57 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index f6897f079dd4f..a13ba2194a69f 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.devdocs.json b/api_docs/ui_actions.devdocs.json index 902cbd0c015da..ec4ba804fb8e2 100644 --- a/api_docs/ui_actions.devdocs.json +++ b/api_docs/ui_actions.devdocs.json @@ -772,26 +772,6 @@ { "plugin": "imageEmbeddable", "path": "src/plugins/image_embeddable/public/components/image_embeddable.tsx" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/helpers.ts" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/container.test.ts" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/container.test.ts" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/container.test.ts" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/explicit_input.test.ts" } ], "children": [ diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index b259a3b7ab81a..23b397c7b5a2f 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 3cadaea195dc2..b90d759d538e8 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 795a362575f0c..e4027cba28248 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 8c934b6a5263e..6a92acf4f886a 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.devdocs.json b/api_docs/unified_search.devdocs.json index 8cd7f76bb914f..7cf8791b9a017 100644 --- a/api_docs/unified_search.devdocs.json +++ b/api_docs/unified_search.devdocs.json @@ -1595,6 +1595,26 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.IUnifiedSearchPluginServices.userProfile", + "type": "Object", + "tags": [], + "label": "userProfile", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-user-profile-browser", + "scope": "public", + "docId": "kibKbnCoreUserProfileBrowserPluginApi", + "section": "def-public.UserProfileService", + "text": "UserProfileService" + } + ], + "path": "src/plugins/unified_search/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "unifiedSearch", "id": "def-public.IUnifiedSearchPluginServices.storage", diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 10bbb6d686cf2..5d73dcd94c28c 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 149 | 2 | 112 | 21 | +| 150 | 2 | 113 | 21 | ## Client diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index f6d9d17e126d7..803d5daaa841a 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 149 | 2 | 112 | 21 | +| 150 | 2 | 113 | 21 | ## Client diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index dc8ab141643a6..32a44d3be1620 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index e8a3ff383b534..cc47aee78a473 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 0dae6d29e8b4d..bf548b4bda351 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.devdocs.json b/api_docs/ux.devdocs.json index 0198d4e41388f..f4b0f58de4ad1 100644 --- a/api_docs/ux.devdocs.json +++ b/api_docs/ux.devdocs.json @@ -17,7 +17,7 @@ "signature": [ "void" ], - "path": "x-pack/plugins/observability_solution/ux/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/ux/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 606ada6a8816d..43141e952c6bb 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; -Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin. +Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index fbaea5e2d110d..1b8bf23cbc877 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 05e17b746a628..0cab4afd538cc 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 91d0b3ba9e2cc..23b0529eb7342 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 51ad1945ad75a..c16f1d1efbe82 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 0adee8b9b5585..85d9f7d8fe2d6 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 37fe584a900b1..64c11ccddea9e 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index f59f7e828cdd1..e1ed183fe8272 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index af2b3adaa3d40..1f630d3c43c40 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index a48db75fbdd6e..e996ae141aeab 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index ec33e813e88bf..8ca0f55262678 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.devdocs.json b/api_docs/visualizations.devdocs.json index 234558c6457ac..9de2b4cce618e 100644 --- a/api_docs/visualizations.devdocs.json +++ b/api_docs/visualizations.devdocs.json @@ -1463,13 +1463,7 @@ "label": "attributeService", "description": [], "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.AttributeService", - "text": "AttributeService" - }, + "AttributeService", "<", "VisualizeSavedObjectAttributes", ", ", @@ -1482,44 +1476,6 @@ "deprecated": false, "trackAdoption": false, "isRequired": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEmbeddable.Unnamed.$5", - "type": "Object", - "tags": [], - "label": "parent", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined" - ], - "path": "src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false } ], "returnComment": [] @@ -6834,31 +6790,7 @@ "section": "def-public.ViewMode", "text": "ViewMode" }, - ">; uuid: string; readonly parent?: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined; destroy: () => void; dataViews: ", + ">; uuid: string; destroy: () => void; dataViews: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -6938,31 +6870,15 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; setDisabledActionIds: (ids: string[] | undefined) => void; parentApi: (", - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.PresentationContainer", - "text": "PresentationContainer" - }, - " & Partial & ", + "; setDisabledActionIds: (ids: string[] | undefined) => void; hasLockedHoverActions$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishesViewMode", - "text": "PublishesViewMode" + "section": "def-public.PublishingSubject", + "text": "PublishingSubject" }, - ">) | undefined; hasLockedHoverActions$: ", + "; lockHoverActions: (lock: boolean) => void; disableTriggers: boolean; filters$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -6970,7 +6886,15 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; lockHoverActions: (lock: boolean) => void; disableTriggers: boolean; savedObjectId: ", + "<", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Filter", + "text": "Filter" + }, + "[] | undefined>; savedObjectId: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -6994,23 +6918,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined>; filters$: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" - }, - "<", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" - }, - "[] | undefined>; isCompatibleWithUnifiedSearch: (() => boolean) | undefined; query$: ", + " | undefined>; isCompatibleWithUnifiedSearch: (() => boolean) | undefined; query$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -7066,7 +6974,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => void; linkToLibrary: (() => Promise) | undefined; unlinkFromLibrary: (() => Promise) | undefined; getExplicitInput: () => ", + " | undefined) => void; linkToLibrary: (() => Promise) | undefined; unlinkFromLibrary: (() => Promise) | undefined; getExplicitInput: () => Readonly<", { "pluginId": "visualizations", "scope": "public", @@ -7074,7 +6982,7 @@ "section": "def-public.VisualizeInput", "text": "VisualizeInput" }, - "; getDescription: () => string; phase$: ", + ">; getDescription: () => string; phase$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -7164,7 +7072,7 @@ "VisualizeByValueInput", ">; getInputAsRefType: () => Promise<", "VisualizeByReferenceInput", - ">; readonly runtimeId: number; readonly isContainer: boolean; readonly deferEmbeddableLoad: boolean; catchError?: ((error: ", + ">; readonly runtimeId: number; readonly deferEmbeddableLoad: boolean; catchError?: ((error: ", { "pluginId": "expressions", "scope": "common", @@ -7172,39 +7080,7 @@ "section": "def-common.ErrorLike", "text": "ErrorLike" }, - ", domNode: HTMLElement | Element) => any) | undefined; fatalError?: Error | undefined; getAppContext: () => ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.EmbeddableAppContext", - "text": "EmbeddableAppContext" - }, - " | undefined; refreshInputFromParent: () => void; getIsContainer: () => this is ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - ">; getUpdated$: () => Readonly<", + ", domNode: HTMLElement | Element) => any) | undefined; fatalError?: Error | undefined; getUpdated$: () => Readonly<", "Observable", "<", { @@ -7230,7 +7106,7 @@ "section": "def-public.VisualizeInput", "text": "VisualizeInput" }, - ">) => Promise; getPersistableInput: () => ", + ">) => Promise; getPersistableInput: () => Readonly<", { "pluginId": "visualizations", "scope": "public", @@ -7238,7 +7114,7 @@ "section": "def-public.VisualizeInput", "text": "VisualizeInput" }, - "; getInput: () => Readonly<", + ">; getInput: () => Readonly<", { "pluginId": "visualizations", "scope": "public", @@ -7246,55 +7122,7 @@ "section": "def-public.VisualizeInput", "text": "VisualizeInput" }, - ">; getTitle: () => string; getRoot: () => ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", any> | ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - ">; untilInitializationFinished: () => Promise; updateOutput: (outputChanges: Partial<", + ">; getTitle: () => string; untilInitializationFinished: () => Promise; updateOutput: (outputChanges: Partial<", "VisualizeOutput", ">) => void; }" ], @@ -7302,197 +7130,6 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false - }, - { - "parentPluginId": "visualizations", - "id": "def-public.VisualizeEmbeddableFactoryContract", - "type": "Type", - "tags": [], - "label": "VisualizeEmbeddableFactoryContract", - "description": [], - "signature": [ - "{ readonly type: \"visualization\"; create: (input: ", - { - "pluginId": "visualizations", - "scope": "public", - "docId": "kibVisualizationsPluginApi", - "section": "def-public.VisualizeInput", - "text": "VisualizeInput" - }, - " & { savedVis?: ", - { - "pluginId": "visualizations", - "scope": "common", - "docId": "kibVisualizationsPluginApi", - "section": "def-common.SerializedVis", - "text": "SerializedVis" - }, - "<", - { - "pluginId": "visualizations", - "scope": "common", - "docId": "kibVisualizationsPluginApi", - "section": "def-common.VisParams", - "text": "VisParams" - }, - "> | undefined; }, parent?: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined) => Promise<", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" - }, - " | ", - { - "pluginId": "visualizations", - "scope": "public", - "docId": "kibVisualizationsPluginApi", - "section": "def-public.VisualizeEmbeddable", - "text": "VisualizeEmbeddable" - }, - " | undefined>; inject: (_state: ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableStateWithType", - "text": "EmbeddableStateWithType" - }, - ", references: ", - { - "pluginId": "@kbn/core-saved-objects-common", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsCommonPluginApi", - "section": "def-common.SavedObjectReference", - "text": "SavedObjectReference" - }, - "[]) => ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableStateWithType", - "text": "EmbeddableStateWithType" - }, - "; extract: (_state: ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableStateWithType", - "text": "EmbeddableStateWithType" - }, - ") => { state: ", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableStateWithType", - "text": "EmbeddableStateWithType" - }, - "; references: ", - { - "pluginId": "@kbn/core-saved-objects-common", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsCommonPluginApi", - "section": "def-common.SavedObjectReference", - "text": "SavedObjectReference" - }, - "[]; }; getDisplayName: () => string; isEditable: () => Promise; createFromSavedObject: (savedObjectId: string, input: Partial<", - { - "pluginId": "visualizations", - "scope": "public", - "docId": "kibVisualizationsPluginApi", - "section": "def-public.VisualizeInput", - "text": "VisualizeInput" - }, - "> & { id: string; }, parent?: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IContainer", - "text": "IContainer" - }, - "<{}, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerInput", - "text": "ContainerInput" - }, - "<{}>, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ContainerOutput", - "text": "ContainerOutput" - }, - "> | undefined) => Promise<", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" - }, - " | ", - { - "pluginId": "visualizations", - "scope": "public", - "docId": "kibVisualizationsPluginApi", - "section": "def-public.VisualizeEmbeddable", - "text": "VisualizeEmbeddable" - }, - ">; readonly savedObjectMetaData: ", - { - "pluginId": "savedObjectsFinder", - "scope": "public", - "docId": "kibSavedObjectsFinderPluginApi", - "section": "def-public.SavedObjectMetaData", - "text": "SavedObjectMetaData" - }, - "; getCurrentAppId: () => Promise; checkTitle: (props: ", - { - "pluginId": "savedObjects", - "scope": "public", - "docId": "kibSavedObjectsPluginApi", - "section": "def-public.OnSaveProps", - "text": "OnSaveProps" - }, - ") => Promise; }" - ], - "path": "src/plugins/visualizations/public/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false } ], "objects": [ @@ -9703,7 +9340,7 @@ "label": "mode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, @@ -15616,7 +15253,7 @@ "label": "GaugeCentralMajorMode", "description": [], "signature": [ - "\"none\" | \"custom\" | \"auto\"" + "\"none\" | \"auto\" | \"custom\"" ], "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, @@ -15646,7 +15283,7 @@ "label": "GaugeLabelMajorMode", "description": [], "signature": [ - "\"none\" | \"custom\" | \"auto\"" + "\"none\" | \"auto\" | \"custom\"" ], "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index a8031263a8f9f..084b21a46e04f 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2024-12-10 +date: 2024-12-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 871 | 12 | 840 | 20 | +| 869 | 12 | 838 | 21 | ## Client diff --git a/config/serverless.security.yml b/config/serverless.security.yml index b9190df608540..47a67c293565a 100644 --- a/config/serverless.security.yml +++ b/config/serverless.security.yml @@ -10,6 +10,7 @@ xpack.observabilityAIAssistant.enabled: false xpack.search.notebooks.enabled: false xpack.searchPlayground.enabled: false xpack.searchInferenceEndpoints.enabled: false +xpack.inventory.enabled: false ## Fine-tune the security solution feature privileges. Also, refer to `serverless.yml` for the project-agnostic overrides. xpack.features.overrides: diff --git a/dev_docs/key_concepts/api_authorization.mdx b/dev_docs/key_concepts/api_authorization.mdx index cda6ad5de21ce..5615a20d0f4b5 100644 --- a/dev_docs/key_concepts/api_authorization.mdx +++ b/dev_docs/key_concepts/api_authorization.mdx @@ -102,6 +102,38 @@ router.get({ }, handler); ``` +### Configuring operator and superuser privileges +We have two special predefined privilege sets that can be used in security configuration: +1. Operator +```ts +router.get({ + path: '/api/path', + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator, ''], + }, + }, + ... +}, handler); +``` +Operator privileges check is enforced only if operator privileges are enabled in the Elasticsearch configuration. +For more information on operator privileges, refer to the [Operator privileges documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/operator-privileges.html). +If operator privileges are disabled, we skip the check for it, so the only privilege checked from the example above is ``. +Operator privileges cannot be used as standalone, it is required to explicitly specify additional privileges in the configuration to ensure that the route is protected even when operator privileges are disabled. + +2. Superuser +```ts +router.get({ + path: '/api/path', + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.superuser], + }, + }, + ... +}, handler); +``` + ### Opting out of authorization for specific routes **Before migration:** ```ts @@ -291,7 +323,7 @@ GET /api/oas?pathStartsWith=/your/api/path ## Migrating from `access` tags to `security` configuration We aim to use the same privileges that are currently defined with tags `access:`. To assist with this migration, we have created eslint rule `no_deprecated_authz_config`, that will automatically convert your `access` tags to the new `security` configuration. -It scans route definitions and converts `access` tags to the new `requiredPriviliges` configuration. +It scans route definitions and converts `access` tags to the new `requiredPrivileges` configuration. Note: The rule is disabled by default to avoid automatic migrations without an oversight. You can perform migrations by running: diff --git a/docs/concepts/data-views.asciidoc b/docs/concepts/data-views.asciidoc index 2a260e611a060..02922b2989762 100644 --- a/docs/concepts/data-views.asciidoc +++ b/docs/concepts/data-views.asciidoc @@ -142,14 +142,14 @@ To match indices starting with `logstash-`, but exclude those starting with `log all clusters having a name starting with `cluster_`: ```ts -`cluster_*:logstash-*,cluster_*:-logstash-old*` +cluster_*:logstash-*,cluster_*:-logstash-old* ``` Excluding a cluster avoids sending any network calls to that cluster. To exclude a cluster with the name `cluster_one`: ```ts -`cluster_*:logstash-*,-cluster_one:*` +cluster_*:logstash-*,-cluster_one:* ``` Once you configure a {data-source} to use the {ccs} syntax, all searches and @@ -182,4 +182,4 @@ for {data-sources} with a high field count that span a large number of indices a list is updated every couple of minutes in typical {kib} usage. Alternatively, use the refresh button on the {data-source} management detail page to get an updated field list. A force reload of {kib} has the same effect. -The field list may be impacted by changes in indices and user permissions. \ No newline at end of file +The field list may be impacted by changes in indices and user permissions. diff --git a/docs/developer/contributing/development-tests.asciidoc b/docs/developer/contributing/development-tests.asciidoc index 81ca46669a828..d4a478040b4f8 100644 --- a/docs/developer/contributing/development-tests.asciidoc +++ b/docs/developer/contributing/development-tests.asciidoc @@ -60,7 +60,7 @@ You can generate code coverage report for a single plugin. [source,bash] ---- -yarn jest --coverage --config src/plugins/console/jest.config.js +yarn jest --coverage --config src/platform/plugins/shared/console/jest.config.js ---- Html report is available in target/kibana-coverage/jest/path/to/plugin diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 3266b5e836b27..f18bafe5221b3 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -28,7 +28,7 @@ allowing users to configure their advanced settings, also known as uiSettings within the code. -|{kib-repo}blob/{branch}/src/plugins/ai_assistant_management/selection/README.md[aiAssistantManagementSelection] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/ai_assistant_management/selection/README.md[aiAssistantManagementSelection] |The aiAssistantManagementSelection plugin manages the Ai Assistant management section. @@ -40,7 +40,7 @@ as uiSettings within the code. |The Charts plugin is a way to create easier integration of shared colors, themes, types and other utilities across all Kibana charts and visualizations. -|{kib-repo}blob/{branch}/src/plugins/console/README.md[console] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/console/README.md[console] |Console provides the user with tools for storing and executing requests against Elasticsearch. @@ -83,7 +83,7 @@ and field lists across the various Kibana apps. It's typically used in conjuncti for composing queries. -|{kib-repo}blob/{branch}/src/plugins/dev_tools/README.md[devTools] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/dev_tools/README.md[devTools] |The ui/registry/dev_tools is removed in favor of the devTools plugin which exposes a register method in the setup contract. Registering app works mostly the same as registering apps in core.application.register. Routing will be handled by the id of the dev tool - your dev tool will be mounted when the URL matches /app/dev_tools#/. @@ -110,7 +110,7 @@ This API doesn't support angular, for registering angular dev tools, bootstrap a |Contains a Discover-like table specifically for ES|QL queries: -|{kib-repo}blob/{branch}/src/plugins/es_ui_shared/README.md[esUiShared] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/es_ui_shared/README.md[esUiShared] |This plugin contains reusable code in the form of self-contained modules (or libraries). Each of these modules exports a set of functionality relevant to the domain of the module. @@ -258,7 +258,7 @@ in Kibana, e.g. visualizations. It has the form of a flyout panel. |This plugin adds the Links panel which allows authors to create hard links to navigate on click and bring all context from the source dashboard to the destination dashboard. -|{kib-repo}blob/{branch}/src/plugins/management/README.md[management] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/management/README.md[management] |This plugins contains the "Stack Management" page framework. It offers navigation and an API to link individual management section into it. This plugin does not contain any individual management section itself. @@ -470,7 +470,7 @@ The plugin exposes the static DefaultEditorController class to consume. |WARNING: Missing README. -|{kib-repo}blob/{branch}/x-pack/plugins/asset_inventory/README.md[assetInventory] +|{kib-repo}blob/{branch}/x-pack/solutions/security/plugins/asset_inventory/README.md[assetInventory] |Centralized asset inventory experience within the Elastic Security solution. A central place for users to view and manage all their assets from different environments. @@ -495,11 +495,11 @@ The plugin exposes the static DefaultEditorController class to consume. It was removed, but the plugin was left behind to register no longer used config keys. -|{kib-repo}blob/{branch}/x-pack/plugins/cloud_integrations/cloud_data_migration/README.md[cloudDataMigration] +|{kib-repo}blob/{branch}/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/README.md[cloudDataMigration] |Static migration page where self-managed users can see text/copy about migrating to Elastic Cloud -|{kib-repo}blob/{branch}/x-pack/plugins/cloud_defend/README.md[cloudDefend] +|{kib-repo}blob/{branch}/x-pack/solutions/security/plugins/cloud_defend/README.md[cloudDefend] |This plugin currently only exists to provide custom fleet policy UX for a set of new BPF LSM features. The first feature being container "drift prevention". @@ -516,11 +516,11 @@ This plugin no-longer exposes any evaluation APIs. Refer to - "non_recurring": 4, # <2> - "ephemeral": 8 # <3> + "non_recurring": 12, # <2> }, -------------------------------------------------- <1> 88% of executed tasks are recurring tasks -<2> 4% of executed tasks are non-recurring tasks -<3> 8% of executed tasks are ephemeral tasks +<2> 12% of executed tasks are non-recurring tasks You can infer from these stats that the majority of executions consist of recurring tasks at 88%. You can use the `execution.persistence` stats to evaluate the ratio of consumed capacity, but on their own, you should not make assumptions about the sufficiency of the available capacity. @@ -645,7 +641,7 @@ To assess the capacity, you should evaluate these stats against the `load` under } -------------------------------------------------- -You can infer from these stats that it is very unusual for Task Manager to run out of capacity, so the capacity is likely sufficient to handle the amount of non-recurring and ephemeral tasks. +You can infer from these stats that it is very unusual for Task Manager to run out of capacity, so the capacity is likely sufficient to handle the amount of non-recurring tasks. Suppose you have an alternate scenario, where you see the following output under `stats.runtime.value.execution.persistence`: @@ -653,15 +649,13 @@ Suppose you have an alternate scenario, where you see the following output under -------------------------------------------------- { "recurring": 60, # <1> - "non_recurring": 30, # <2> - "ephemeral": 10 # <3> + "non_recurring": 40, # <2> }, -------------------------------------------------- <1> 60% of executed tasks are recurring tasks -<2> 30% of executed tasks are non-recurring tasks -<3> 10% of executed tasks are ephemeral tasks +<2> 40% of executed tasks are non-recurring tasks -You can infer from these stats that even though most executions are recurring tasks, a substantial percentage of executions are non-recurring and ephemeral tasks at 40%. +You can infer from these stats that even though most executions are recurring tasks, a substantial percentage of executions are non-recurring tasks at 40%. Evaluating the `load` under `stats.runtime.value`, you see the following: @@ -678,9 +672,9 @@ Evaluating the `load` under `stats.runtime.value`, you see the following: -------------------------------------------------- You can infer from these stats that it is quite common for this {kib} instance to run out of capacity. -Given the high rate of non-recurring and ephemeral tasks, it would be reasonable to assess that there is insufficient capacity in the {kib} cluster to handle the amount of tasks. +Given the high rate of non-recurring tasks, it would be reasonable to assess that there is insufficient capacity in the {kib} cluster to handle the amount of tasks. -Keep in mind that these stats give you a glimpse at a moment in time, and even though there has been insufficient capacity in recent minutes, this might not be true in other times where fewer non-recurring or ephemeral tasks are used. We recommend tracking these stats over time and identifying the source of these tasks before making sweeping changes to your infrastructure. +Keep in mind that these stats give you a glimpse at a moment in time, and even though there has been insufficient capacity in recent minutes, this might not be true in other times where fewer non-recurring tasks are used. We recommend tracking these stats over time and identifying the source of these tasks before making sweeping changes to your infrastructure. [[task-manager-health-evaluate-the-workload]] ===== Evaluate the Workload diff --git a/docs/user/security/audit-logging.asciidoc b/docs/user/security/audit-logging.asciidoc index ef12f4303c1b4..0c5bee6106f01 100644 --- a/docs/user/security/audit-logging.asciidoc +++ b/docs/user/security/audit-logging.asciidoc @@ -151,6 +151,18 @@ Refer to the corresponding {es} logs for potential write errors. .1+| `product_documentation_create` | `unknown` | User requested to install the product documentation for use in AI Assistants. +.2+| `knowledge_base_entry_create` +| `success` | User has created knowledge base entry [id=x] +| `failure` | Failed attempt to create a knowledge base entry + +.2+| `knowledge_base_entry_update` +| `success` | User has updated knowledge base entry [id=x] +| `failure` | Failed attempt to update a knowledge base entry + +.2+| `knowledge_base_entry_delete` +| `success` | User has deleted knowledge base entry [id=x] +| `failure` | Failed attempt to delete a knowledge base entry + 3+a| ====== Type: change diff --git a/examples/bfetch_explorer/README.md b/examples/bfetch_explorer/README.md deleted file mode 100644 index 33723e7cabe07..0000000000000 --- a/examples/bfetch_explorer/README.md +++ /dev/null @@ -1,11 +0,0 @@ -## bfetch explorer - -bfetch is a service that allows you to batch HTTP requests and stream responses -back. - -This example app demonstrates: - - How you can create a streaming response route and consume it from the - client - - How you can create a batch processing route and consume it from the client - -To run this example, use the command `yarn start --run-examples`. diff --git a/examples/bfetch_explorer/kibana.jsonc b/examples/bfetch_explorer/kibana.jsonc deleted file mode 100644 index dbcd5c3496355..0000000000000 --- a/examples/bfetch_explorer/kibana.jsonc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "plugin", - "id": "@kbn/bfetch-explorer-plugin", - "owner": "@elastic/appex-sharedux", - "plugin": { - "id": "bfetchExplorer", - "server": true, - "browser": true, - "requiredPlugins": [ - "bfetch", - "developerExamples" - ], - "requiredBundles": [ - "kibanaReact" - ] - } -} diff --git a/examples/bfetch_explorer/public/components/count_until/index.tsx b/examples/bfetch_explorer/public/components/count_until/index.tsx deleted file mode 100644 index 3708fcc78193e..0000000000000 --- a/examples/bfetch_explorer/public/components/count_until/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React, { useState } from 'react'; -import useMountedState from 'react-use/lib/useMountedState'; -import useList from 'react-use/lib/useList'; -import { EuiForm, EuiSpacer, EuiFieldNumber, EuiFormRow, EuiButton } from '@elastic/eui'; -import { BfetchPublicSetup } from '@kbn/bfetch-plugin/public'; - -export interface Props { - fetchStreaming: BfetchPublicSetup['fetchStreaming']; -} - -export const CountUntil: React.FC = ({ fetchStreaming }) => { - const isMounted = useMountedState(); - const [data, setData] = useState(5); - const [showingResults, setShowingResults] = useState(false); - const [results, { push: pushResult, clear: clearList }] = useList([]); - const [completed, setCompleted] = useState(false); - const [error, setError] = useState(null); - - const handleSubmit = () => { - setShowingResults(true); - const { stream } = fetchStreaming({ - url: '/bfetch_explorer/count', - body: JSON.stringify({ data }), - }); - stream.subscribe({ - next: (next: string) => { - if (!isMounted()) return; - pushResult(next); - }, - error: (nextError: any) => { - if (!isMounted()) return; - setError(nextError); - }, - complete: () => { - if (!isMounted()) return; - setCompleted(true); - }, - }); - }; - - const handleReset = () => { - setShowingResults(false); - clearList(); - setError(null); - setCompleted(false); - }; - - if (showingResults) { - return ( - -
{JSON.stringify(error || results, null, 4)}
- - - Reset - -
- ); - } - - return ( - - - setData(Number(e.target.value))} - /> - - - Start - - - ); -}; diff --git a/examples/bfetch_explorer/public/components/double_integers/index.tsx b/examples/bfetch_explorer/public/components/double_integers/index.tsx deleted file mode 100644 index cf71bde62f09e..0000000000000 --- a/examples/bfetch_explorer/public/components/double_integers/index.tsx +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React, { useState } from 'react'; -import useMountedState from 'react-use/lib/useMountedState'; -import useList from 'react-use/lib/useList'; -import useCounter from 'react-use/lib/useCounter'; -import { EuiForm, EuiSpacer, EuiTextArea, EuiFormRow, EuiButton } from '@elastic/eui'; -import { ExplorerService } from '../../plugin'; - -interface ResultItem { - num: number; - result?: { - num: number; - }; - error?: any; -} - -const defaultNumbers = [2000, 300, -1, 1000].join('\n'); - -export interface Props { - double: ExplorerService['double']; -} - -export const DoubleIntegers: React.FC = ({ double }) => { - const isMounted = useMountedState(); - const [numbers, setNumbers] = useState(defaultNumbers); - const [showingResults, setShowingResults] = useState(false); - const [numberOfResultsAwaiting, counter] = useCounter(0); - const [results, { push: pushResult, clear: clearList }] = useList([]); - - const handleSubmit = () => { - setShowingResults(true); - const nums = numbers - .split('\n') - .map((num) => num.trim()) - .filter(Boolean) - .map(Number); - counter.set(nums.length); - nums.forEach((num) => { - double({ num }).then( - (result) => { - if (!isMounted()) return; - counter.dec(); - pushResult({ num, result }); - }, - (error) => { - if (!isMounted()) return; - counter.dec(); - pushResult({ num, error }); - } - ); - }); - }; - - const handleReset = () => { - setShowingResults(false); - counter.reset(); - clearList(); - }; - - if (showingResults) { - return ( - -
{JSON.stringify(results, null, 4)}
- - - Reset - -
- ); - } - - return ( - - - setNumbers(e.target.value)} - /> - - - Send - - - ); -}; diff --git a/examples/bfetch_explorer/public/components/page/index.tsx b/examples/bfetch_explorer/public/components/page/index.tsx deleted file mode 100644 index 2d17f9ba23dae..0000000000000 --- a/examples/bfetch_explorer/public/components/page/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React, { FC, PropsWithChildren } from 'react'; -import { EuiPageTemplate, EuiPageSection, EuiPageHeader } from '@elastic/eui'; - -export interface PageProps { - title?: React.ReactNode; - sidebar?: React.ReactNode; -} - -export const Page: FC> = ({ - title = 'Untitled', - sidebar, - children, -}) => { - return ( - - {sidebar} - - - - - {children} - - - ); -}; diff --git a/examples/bfetch_explorer/public/containers/app/index.tsx b/examples/bfetch_explorer/public/containers/app/index.tsx deleted file mode 100644 index 9ddd1b44e4354..0000000000000 --- a/examples/bfetch_explorer/public/containers/app/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { Redirect } from 'react-router-dom'; -import { BrowserRouter as Router, Route, Routes } from '@kbn/shared-ux-router'; -import { EuiPage } from '@elastic/eui'; -import { useDeps } from '../../hooks/use_deps'; -import { routes } from '../../routes'; - -export const App: React.FC = () => { - const { appBasePath } = useDeps(); - - const routeElements: React.ReactElement[] = []; - for (const { items } of routes) { - for (const { id, component } of items) { - routeElements.push( component} />); - } - } - - return ( - - - - {routeElements} - - - - - ); -}; diff --git a/examples/bfetch_explorer/public/containers/app/pages/page_count_until/index.tsx b/examples/bfetch_explorer/public/containers/app/pages/page_count_until/index.tsx deleted file mode 100644 index fdd5de83bf058..0000000000000 --- a/examples/bfetch_explorer/public/containers/app/pages/page_count_until/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import * as React from 'react'; -import { EuiPanel, EuiText } from '@elastic/eui'; -import { CountUntil } from '../../../../components/count_until'; -import { Page } from '../../../../components/page'; -import { useDeps } from '../../../../hooks/use_deps'; -import { Sidebar } from '../../sidebar'; - -export const PageCountUntil = () => { - const { plugins } = useDeps(); - - return ( - }> - - This demo sends a single number N using fetchStreaming to the server. The - server will stream back N number of messages with 1 second delay each containing a number - from 1 to N, after which it will close the stream. - -
- - - -
- ); -}; diff --git a/examples/bfetch_explorer/public/containers/app/pages/page_double_integers/index.tsx b/examples/bfetch_explorer/public/containers/app/pages/page_double_integers/index.tsx deleted file mode 100644 index 4e6b1864c638d..0000000000000 --- a/examples/bfetch_explorer/public/containers/app/pages/page_double_integers/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import * as React from 'react'; -import { EuiPanel, EuiText } from '@elastic/eui'; -import { DoubleIntegers } from '../../../../components/double_integers'; -import { Page } from '../../../../components/page'; -import { useDeps } from '../../../../hooks/use_deps'; -import { Sidebar } from '../../sidebar'; - -export const PageDoubleIntegers = () => { - const { explorer } = useDeps(); - - return ( - }> - - Below is a list of numbers in milliseconds. They are sent as a batch to the server. For each - number server waits given number of milliseconds then doubles the number and streams it - back. - -
- - - -
- ); -}; diff --git a/examples/bfetch_explorer/public/containers/app/sidebar/index.tsx b/examples/bfetch_explorer/public/containers/app/sidebar/index.tsx deleted file mode 100644 index 784c8b5a7b1fa..0000000000000 --- a/examples/bfetch_explorer/public/containers/app/sidebar/index.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { EuiSideNav } from '@elastic/eui'; -import { useHistory } from 'react-router-dom'; -import { routes } from '../../../routes'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -interface SidebarProps {} - -export const Sidebar: React.FC = () => { - const history = useHistory(); - - return ( - ({ - id, - name: title, - isSelected: true, - items: items.map((route) => ({ - id: route.id, - name: route.title, - onClick: () => history.push(`/${route.id}`), - 'data-test-subj': route.id, - })), - })), - }, - ]} - /> - ); -}; diff --git a/examples/bfetch_explorer/public/hooks/use_deps.ts b/examples/bfetch_explorer/public/hooks/use_deps.ts deleted file mode 100644 index a212525d00eff..0000000000000 --- a/examples/bfetch_explorer/public/hooks/use_deps.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { useKibana } from '@kbn/kibana-react-plugin/public'; -import { BfetchDeps } from '../mount'; - -export const useDeps = () => useKibana().services as unknown as BfetchDeps; diff --git a/examples/bfetch_explorer/public/index.ts b/examples/bfetch_explorer/public/index.ts deleted file mode 100644 index ebc736cca673b..0000000000000 --- a/examples/bfetch_explorer/public/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { BfetchExplorerPlugin } from './plugin'; - -export const plugin = () => new BfetchExplorerPlugin(); diff --git a/examples/bfetch_explorer/public/mount.tsx b/examples/bfetch_explorer/public/mount.tsx deleted file mode 100644 index 525f7b21078f0..0000000000000 --- a/examples/bfetch_explorer/public/mount.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import * as React from 'react'; -import { render, unmountComponentAtNode } from 'react-dom'; -import { CoreSetup, CoreStart, AppMountParameters } from '@kbn/core/public'; -import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; -import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; -import { BfetchExplorerStartPlugins, ExplorerService } from './plugin'; -import { App } from './containers/app'; - -export interface BfetchDeps { - appBasePath: string; - core: CoreStart; - plugins: BfetchExplorerStartPlugins; - explorer: ExplorerService; -} - -export const mount = - (coreSetup: CoreSetup, explorer: ExplorerService) => - async ({ appBasePath, element }: AppMountParameters) => { - const [core, plugins] = await coreSetup.getStartServices(); - const deps: BfetchDeps = { appBasePath, core, plugins, explorer }; - const reactElement = ( - - - - - - ); - render(reactElement, element); - return () => unmountComponentAtNode(element); - }; diff --git a/examples/bfetch_explorer/public/plugin.tsx b/examples/bfetch_explorer/public/plugin.tsx deleted file mode 100644 index 2840f016b5d2b..0000000000000 --- a/examples/bfetch_explorer/public/plugin.tsx +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Plugin, CoreSetup } from '@kbn/core/public'; -import { BfetchPublicSetup, BfetchPublicStart } from '@kbn/bfetch-plugin/public'; -import { DeveloperExamplesSetup } from '@kbn/developer-examples-plugin/public'; -import { mount } from './mount'; - -export interface ExplorerService { - double: (number: { num: number }) => Promise<{ num: number }>; -} - -export interface BfetchExplorerSetupPlugins { - bfetch: BfetchPublicSetup; - developerExamples: DeveloperExamplesSetup; -} - -export interface BfetchExplorerStartPlugins { - bfetch: BfetchPublicStart; -} - -export class BfetchExplorerPlugin implements Plugin { - public setup( - core: CoreSetup, - { bfetch, developerExamples }: BfetchExplorerSetupPlugins - ) { - const double = bfetch.batchedFunction<{ num: number }, { num: number }>({ - url: '/bfetch_explorer/double', - }); - - const explorer: ExplorerService = { - double, - }; - - core.application.register({ - id: 'bfetch-explorer', - title: 'bfetch explorer', - visibleIn: [], - mount: mount(core, explorer), - }); - - developerExamples.register({ - appId: 'bfetch-explorer', - title: 'bfetch', - description: - 'bfetch is a service that allows to batch HTTP requests and streams responses back.', - links: [ - { - label: 'README', - href: 'https://github.com/elastic/kibana/blob/main/src/plugins/bfetch/README.md', - iconType: 'logoGithub', - size: 's', - target: '_blank', - }, - ], - }); - } - - public start() {} - public stop() {} -} diff --git a/examples/bfetch_explorer/public/routes.tsx b/examples/bfetch_explorer/public/routes.tsx deleted file mode 100644 index 69ae6a8e94bbb..0000000000000 --- a/examples/bfetch_explorer/public/routes.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { PageDoubleIntegers } from './containers/app/pages/page_double_integers'; -import { PageCountUntil } from './containers/app/pages/page_count_until'; - -interface RouteSectionDef { - title: string; - id: string; - items: RouteDef[]; -} - -interface RouteDef { - title: string; - id: string; - component: React.ReactNode; -} - -export const routes: RouteSectionDef[] = [ - { - title: 'fetchStreaming', - id: 'fetchStreaming', - items: [ - { - title: 'Count until', - id: 'count-until', - component: , - }, - ], - }, - { - title: 'batchedFunction', - id: 'batchedFunction', - items: [ - { - title: 'Double integers', - id: 'double-integers', - component: , - }, - ], - }, -]; diff --git a/examples/bfetch_explorer/server/index.ts b/examples/bfetch_explorer/server/index.ts deleted file mode 100644 index ef09a9627b139..0000000000000 --- a/examples/bfetch_explorer/server/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export const plugin = async () => { - const { BfetchExplorerPlugin } = await import('./plugin'); - return new BfetchExplorerPlugin(); -}; diff --git a/examples/bfetch_explorer/server/plugin.ts b/examples/bfetch_explorer/server/plugin.ts deleted file mode 100644 index 41dd5ab4f4601..0000000000000 --- a/examples/bfetch_explorer/server/plugin.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Subject } from 'rxjs'; -import { Plugin, CoreSetup, CoreStart } from '@kbn/core/server'; -import { BfetchServerSetup, BfetchServerStart } from '@kbn/bfetch-plugin/server'; - -export interface BfetchExplorerSetupPlugins { - bfetch: BfetchServerSetup; -} - -export interface BfetchExplorerStartPlugins { - bfetch: BfetchServerStart; -} - -export class BfetchExplorerPlugin implements Plugin { - public setup(core: CoreSetup, plugins: BfetchExplorerSetupPlugins) { - plugins.bfetch.addStreamingResponseRoute('/bfetch_explorer/count', () => ({ - getResponseStream: ({ data }: any) => { - const subject = new Subject(); - const countTo = Number(data); - for (let cnt = 1; cnt <= countTo; cnt++) { - setTimeout(() => { - subject.next(String(cnt)); - }, cnt * 1000); - } - setTimeout(() => { - subject.complete(); - }, countTo * 1000); - return subject; - }, - })); - - plugins.bfetch.addBatchProcessingRoute<{ num: number }, { num: number }>( - '/bfetch_explorer/double', - () => ({ - onBatchItem: async ({ num }) => { - // Validate inputs. - if (num < 0) throw new Error('Invalid number'); - // Wait number of specified milliseconds. - await new Promise((r) => setTimeout(r, num)); - // Double the number and send it back. - return { num: 2 * num }; - }, - }) - ); - } - - public start(core: CoreStart, plugins: BfetchExplorerStartPlugins) {} - - public stop() {} -} diff --git a/examples/bfetch_explorer/tsconfig.json b/examples/bfetch_explorer/tsconfig.json deleted file mode 100644 index c8417c734f58d..0000000000000 --- a/examples/bfetch_explorer/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "index.ts", - "public/**/*.ts", - "public/**/*.tsx", - "server/**/*.ts", - "../../typings/**/*", - ], - "exclude": [ - "target/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/developer-examples-plugin", - "@kbn/bfetch-plugin", - "@kbn/kibana-react-plugin", - "@kbn/shared-ux-router", - "@kbn/react-kibana-context-render", - ] -} diff --git a/examples/controls_example/public/app/app.tsx b/examples/controls_example/public/app/app.tsx index 9c6df503700b6..9659b0fa47749 100644 --- a/examples/controls_example/public/app/app.tsx +++ b/examples/controls_example/public/app/app.tsx @@ -48,7 +48,7 @@ const App = ({ } return ( - + diff --git a/examples/controls_example/public/app/react_control_example/react_control_example.tsx b/examples/controls_example/public/app/react_control_example/react_control_example.tsx index 7ba409e83c0e3..b6cb97720d79b 100644 --- a/examples/controls_example/public/app/react_control_example/react_control_example.tsx +++ b/examples/controls_example/public/app/react_control_example/react_control_example.tsx @@ -315,10 +315,7 @@ export const ReactControlExample = ({ {JSON.stringify(controlGroupApi?.serializeState(), null, 2)} , - { - theme: core.theme, - i18n: core.i18n, - } + core ) ); }} @@ -374,10 +371,10 @@ export const ReactControlExample = ({ { + onClick={() => { if (controlGroupApi) { saveNotification$.next(); - setControlGroupSerializedState(await controlGroupApi.serializeState()); + setControlGroupSerializedState(controlGroupApi.serializeState()); } }} > diff --git a/examples/discover_customization_examples/public/plugin.tsx b/examples/discover_customization_examples/public/plugin.tsx index 6dc6e8f48da58..2ac642b4f752b 100644 --- a/examples/discover_customization_examples/public/plugin.tsx +++ b/examples/discover_customization_examples/public/plugin.tsx @@ -52,11 +52,11 @@ export class DiscoverCustomizationExamplesPlugin implements Plugin { title: PLUGIN_NAME, visibleIn: [], mount: async (appMountParams) => { - const [_, { discover, data }] = await core.getStartServices(); + const [coreStart, { discover, data }] = await core.getStartServices(); ReactDOM.render( - + diff --git a/examples/embeddable_examples/public/app/app.tsx b/examples/embeddable_examples/public/app/app.tsx index f59169849e9f0..97389830552a8 100644 --- a/examples/embeddable_examples/public/app/app.tsx +++ b/examples/embeddable_examples/public/app/app.tsx @@ -81,7 +81,7 @@ const App = ({ }, [pages]); return ( - + diff --git a/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts b/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts index 59f06847a1538..c08ba7a499b98 100644 --- a/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts +++ b/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts @@ -9,7 +9,6 @@ import { BehaviorSubject, Subject, combineLatest, map, merge } from 'rxjs'; import { v4 as generateId } from 'uuid'; -import { asyncForEach } from '@kbn/std'; import { TimeRange } from '@kbn/es-query'; import { PanelPackage, @@ -146,14 +145,14 @@ export function getPageApi() { }, onSave: async () => { const panelsState: LastSavedState['panelsState'] = []; - await asyncForEach(panels$.value, async ({ id, type }) => { + panels$.value.forEach(({ id, type }) => { try { const childApi = children$.value[id]; if (apiHasSerializableState(childApi)) { panelsState.push({ id, type, - panelState: await childApi.serializeState(), + panelState: childApi.serializeState(), }); } } catch (error) { diff --git a/examples/embeddable_examples/public/app/state_management_example/state_management_example.tsx b/examples/embeddable_examples/public/app/state_management_example/state_management_example.tsx index a3dcd06618155..18ff194769b3d 100644 --- a/examples/embeddable_examples/public/app/state_management_example/state_management_example.tsx +++ b/examples/embeddable_examples/public/app/state_management_example/state_management_example.tsx @@ -21,7 +21,6 @@ import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; import { ViewMode } from '@kbn/presentation-publishing'; import { ReactEmbeddableRenderer } from '@kbn/embeddable-plugin/public'; import { BehaviorSubject, Subject } from 'rxjs'; -import useMountedState from 'react-use/lib/useMountedState'; import { SAVED_BOOK_ID } from '../../react_embeddables/saved_book/constants'; import { BookApi, @@ -32,7 +31,6 @@ import { lastSavedStateSessionStorage } from './last_saved_state'; import { unsavedChangesSessionStorage } from './unsaved_changes'; export const StateManagementExample = ({ uiActions }: { uiActions: UiActionsStart }) => { - const isMounted = useMountedState(); const saveNotification$ = useMemo(() => { return new Subject(); }, []); @@ -123,16 +121,13 @@ export const StateManagementExample = ({ uiActions }: { uiActions: UiActionsStar { + onClick={() => { if (!bookApi) { return; } setIsSaving(true); - const bookSerializedState = await bookApi.serializeState(); - if (!isMounted()) { - return; - } + const bookSerializedState = bookApi.serializeState(); lastSavedStateSessionStorage.save(bookSerializedState); saveNotification$.next(); // signals embeddable unsaved change tracking to update last saved state setHasUnsavedChanges(false); diff --git a/examples/embeddable_examples/public/react_embeddables/data_table/data_table_react_embeddable.tsx b/examples/embeddable_examples/public/react_embeddables/data_table/data_table_react_embeddable.tsx index 54046eb5afa02..0311decf5c3c6 100644 --- a/examples/embeddable_examples/public/react_embeddables/data_table/data_table_react_embeddable.tsx +++ b/examples/embeddable_examples/public/react_embeddables/data_table/data_table_react_embeddable.tsx @@ -99,7 +99,7 @@ export const getDataTableFactory = ( width: 100%; `} > - + { @@ -36,19 +35,17 @@ export const registerCreateSavedBookAction = (uiActions: UiActionsPublicStart, c if (!apiCanAddNewPanel(embeddable)) throw new IncompatibleActionError(); const newPanelStateManager = stateManagerFromAttributes(defaultBookAttributes); - const { addToLibrary } = await openSavedBookEditor(newPanelStateManager, true, core, { - parentApi: embeddable, + const { savedBookId } = await openSavedBookEditor({ + attributesManager: newPanelStateManager, + parent: embeddable, + isCreate: true, + core, }); - const initialState: BookRuntimeState = await (async () => { - const bookAttributes = serializeBookAttributes(newPanelStateManager); - // if we're adding this to the library, we only need to return the by reference state. - if (addToLibrary) { - const savedBookId = await saveBookAttributes(undefined, bookAttributes); - return { savedBookId, ...bookAttributes }; - } - return bookAttributes; - })(); + const bookAttributes = serializeBookAttributes(newPanelStateManager); + const initialState: BookRuntimeState = savedBookId + ? { savedBookId, ...bookAttributes } + : { ...bookAttributes }; embeddable.addNewPanel({ panelType: SAVED_BOOK_ID, diff --git a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx index 8a028eeadd49e..0222e682b7b0d 100644 --- a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx +++ b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx @@ -27,26 +27,32 @@ import { OverlayRef } from '@kbn/core-mount-utils-browser'; import { i18n } from '@kbn/i18n'; import { tracksOverlays } from '@kbn/presentation-containers'; import { - apiHasParentApi, + apiHasInPlaceLibraryTransforms, apiHasUniqueId, useBatchedOptionalPublishingSubjects, } from '@kbn/presentation-publishing'; import { toMountPoint } from '@kbn/react-kibana-mount'; -import React from 'react'; +import React, { useState } from 'react'; import { serializeBookAttributes } from './book_state'; -import { BookAttributesManager } from './types'; +import { BookApi, BookAttributesManager } from './types'; +import { saveBookAttributes } from './saved_book_library'; -export const openSavedBookEditor = ( - attributesManager: BookAttributesManager, - isCreate: boolean, - core: CoreStart, - api: unknown -): Promise<{ addToLibrary: boolean }> => { +export const openSavedBookEditor = ({ + attributesManager, + isCreate, + core, + parent, + api, +}: { + attributesManager: BookAttributesManager; + isCreate: boolean; + core: CoreStart; + parent?: unknown; + api?: BookApi; +}): Promise<{ savedBookId?: string }> => { return new Promise((resolve) => { const closeOverlay = (overlayRef: OverlayRef) => { - if (apiHasParentApi(api) && tracksOverlays(api.parentApi)) { - api.parentApi.clearOverlays(); - } + if (tracksOverlays(parent)) parent.clearOverlays(); overlayRef.close(); }; @@ -54,8 +60,9 @@ export const openSavedBookEditor = ( const overlay = core.overlays.openFlyout( toMountPoint( { // set the state back to the initial state and reject attributesManager.authorName.next(initialState.authorName); @@ -64,19 +71,23 @@ export const openSavedBookEditor = ( attributesManager.numberOfPages.next(initialState.numberOfPages); closeOverlay(overlay); }} - onSubmit={(addToLibrary: boolean) => { + onSubmit={async (addToLibrary: boolean) => { + const savedBookId = addToLibrary + ? await saveBookAttributes( + apiHasInPlaceLibraryTransforms(api) ? api.libraryId$.value : undefined, + serializeBookAttributes(attributesManager) + ) + : undefined; + closeOverlay(overlay); - resolve({ addToLibrary }); + resolve({ savedBookId }); }} />, - { - theme: core.theme, - i18n: core.i18n, - } + core ), { type: isCreate ? 'overlay' : 'push', - size: isCreate ? 'm' : 's', + size: 'm', onClose: () => closeOverlay(overlay), } ); @@ -86,9 +97,7 @@ export const openSavedBookEditor = ( * if our parent needs to know about the overlay, notify it. This allows the parent to close the overlay * when navigating away, or change certain behaviors based on the overlay being open. */ - if (apiHasParentApi(api) && tracksOverlays(api.parentApi)) { - api.parentApi.openOverlay(overlay, overlayOptions); - } + if (tracksOverlays(parent)) parent.openOverlay(overlay, overlayOptions); }); }; @@ -97,19 +106,24 @@ export const SavedBookEditor = ({ isCreate, onSubmit, onCancel, + api, }: { attributesManager: BookAttributesManager; isCreate: boolean; - onSubmit: (addToLibrary: boolean) => void; + onSubmit: (addToLibrary: boolean) => Promise; onCancel: () => void; + api?: BookApi; }) => { - const [addToLibrary, setAddToLibrary] = React.useState(false); - const [authorName, synopsis, bookTitle, numberOfPages] = useBatchedOptionalPublishingSubjects( - attributesManager.authorName, - attributesManager.bookSynopsis, - attributesManager.bookTitle, - attributesManager.numberOfPages - ); + const [libraryId, authorName, synopsis, bookTitle, numberOfPages] = + useBatchedOptionalPublishingSubjects( + api?.libraryId$, + attributesManager.authorName, + attributesManager.bookSynopsis, + attributesManager.bookTitle, + attributesManager.numberOfPages + ); + const [addToLibrary, setAddToLibrary] = useState(Boolean(libraryId)); + const [saving, setSaving] = useState(false); return ( <> @@ -133,6 +147,7 @@ export const SavedBookEditor = ({ })} > attributesManager.authorName.next(e.target.value)} /> @@ -143,6 +158,7 @@ export const SavedBookEditor = ({ })} > attributesManager.bookTitle.next(e.target.value)} /> @@ -153,6 +169,7 @@ export const SavedBookEditor = ({ })} > attributesManager.numberOfPages.next(+e.target.value)} /> @@ -163,6 +180,7 @@ export const SavedBookEditor = ({ })} > attributesManager.bookSynopsis.next(e.target.value)} /> @@ -171,7 +189,7 @@ export const SavedBookEditor = ({ - + {i18n.translate('embeddableExamples.savedBook.editor.cancel', { defaultMessage: 'Discard changes', })} @@ -179,19 +197,25 @@ export const SavedBookEditor = ({ - {isCreate && ( - - setAddToLibrary(!addToLibrary)} - /> - - )} - onSubmit(addToLibrary)} fill> + setAddToLibrary(!addToLibrary)} + /> + + + { + setSaving(true); + onSubmit(addToLibrary); + }} + fill + > {isCreate ? i18n.translate('embeddableExamples.savedBook.editor.create', { defaultMessage: 'Create book', diff --git a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_library.ts b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_library.ts index 3d989debf7092..ef22750d94578 100644 --- a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_library.ts +++ b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_library.ts @@ -23,7 +23,7 @@ export const saveBookAttributes = async ( maybeId?: string, attributes?: BookAttributes ): Promise => { - await new Promise((r) => setTimeout(r, 100)); // simulate save to network. + await new Promise((r) => setTimeout(r, 500)); // simulate save to network. const id = maybeId ?? v4(); storage.set(id, attributes); return id; diff --git a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx index 58f0f4de8555c..74cd81cf51bde 100644 --- a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx +++ b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx @@ -81,14 +81,22 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { { ...titlesApi, onEdit: async () => { - openSavedBookEditor(bookAttributesManager, false, core, api); + openSavedBookEditor({ + attributesManager: bookAttributesManager, + parent: api.parentApi, + isCreate: false, + core, + api, + }).then((result) => { + savedBookId$.next(result.savedBookId); + }); }, isEditingEnabled: () => true, getTypeDisplayName: () => i18n.translate('embeddableExamples.savedbook.editBook.displayName', { defaultMessage: 'book', }), - serializeState: async () => { + serializeState: () => { if (!Boolean(savedBookId$.value)) { // if this book is currently by value, we serialize the entire state. const bookByValueState: BookByValueSerializedState = { @@ -98,16 +106,11 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { return { rawState: bookByValueState }; } - // if this book is currently by reference, we serialize the reference and write to the external store. + // if this book is currently by reference, we serialize the reference only. const bookByReferenceState: BookByReferenceSerializedState = { savedBookId: savedBookId$.value!, ...serializeTitles(), }; - - await saveBookAttributes( - savedBookId$.value, - serializeBookAttributes(bookAttributesManager) - ); return { rawState: bookByReferenceState }; }, diff --git a/examples/embeddable_examples/tsconfig.json b/examples/embeddable_examples/tsconfig.json index 8f59132f05fbc..d7aa8342de0c1 100644 --- a/examples/embeddable_examples/tsconfig.json +++ b/examples/embeddable_examples/tsconfig.json @@ -40,7 +40,6 @@ "@kbn/kibana-utils-plugin", "@kbn/core-mount-utils-browser", "@kbn/react-kibana-mount", - "@kbn/std", "@kbn/shared-ux-router" ] } diff --git a/examples/esql_ast_inspector/public/components/esql_inspector/components/preview/components/preview_ui/components/from_command/index.tsx b/examples/esql_ast_inspector/public/components/esql_inspector/components/preview/components/preview_ui/components/from_command/index.tsx index 58d22f5767ca6..3c10240eadfe9 100644 --- a/examples/esql_ast_inspector/public/components/esql_inspector/components/preview/components/preview_ui/components/from_command/index.tsx +++ b/examples/esql_ast_inspector/public/components/esql_inspector/components/preview/components/preview_ui/components/from_command/index.tsx @@ -52,7 +52,7 @@ export const FromCommand: React.FC = () => { onClick={() => { const length = from.args.length; const source = Builder.expression.source({ - name: `source${length + 1}`, + index: `source${length + 1}`, sourceType: 'index', }); from.args.push(source); diff --git a/examples/expressions_explorer/public/app.tsx b/examples/expressions_explorer/public/app.tsx index 638767ed72a35..ca7db99f81e97 100644 --- a/examples/expressions_explorer/public/app.tsx +++ b/examples/expressions_explorer/public/app.tsx @@ -24,6 +24,7 @@ import { I18nStart, IUiSettingsClient, ThemeServiceStart, + UserProfileService, } from '@kbn/core/public'; import { ExpressionsStart } from '@kbn/expressions-plugin/public'; import { Start as InspectorStart } from '@kbn/inspector-plugin/public'; @@ -41,6 +42,7 @@ interface Props { inspector: InspectorStart; actions: UiActionsStart; uiSettings: IUiSettingsClient; + userProfile: UserProfileService; settings: SettingsStart; theme: ThemeServiceStart; i18n: I18nStart; @@ -52,15 +54,13 @@ const ExpressionsExplorer = ({ actions, uiSettings, settings, - i18n, - theme, + ...startServices }: Props) => { const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ uiSettings, settings, - theme, + theme: startServices.theme, }); - const startServices = { i18n, theme }; return ( diff --git a/examples/expressions_explorer/public/plugin.tsx b/examples/expressions_explorer/public/plugin.tsx index b0030d1c00aaa..d03008bb16534 100644 --- a/examples/expressions_explorer/public/plugin.tsx +++ b/examples/expressions_explorer/public/plugin.tsx @@ -58,6 +58,7 @@ export class ExpressionsExplorerPlugin implements Plugin, - { - theme: coreStart.theme, - i18n: coreStart.i18n, - } + coreStart ) ); }); diff --git a/examples/portable_dashboards_example/public/app.tsx b/examples/portable_dashboards_example/public/app.tsx index c68b612c31193..04a42de836904 100644 --- a/examples/portable_dashboards_example/public/app.tsx +++ b/examples/portable_dashboards_example/public/app.tsx @@ -56,7 +56,7 @@ const PortableDashboardsDemos = ({ history: AppMountParameters['history']; }) => { return ( - + diff --git a/examples/resizable_layout_examples/public/application.tsx b/examples/resizable_layout_examples/public/application.tsx index 7637cf2a79c66..90065dc3f704d 100644 --- a/examples/resizable_layout_examples/public/application.tsx +++ b/examples/resizable_layout_examples/public/application.tsx @@ -8,7 +8,7 @@ */ import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; -import type { AppMountParameters } from '@kbn/core/public'; +import type { AppMountParameters, CoreStart } from '@kbn/core/public'; import { I18nProvider } from '@kbn/i18n-react'; import React, { ReactNode, useState } from 'react'; import ReactDOM from 'react-dom'; @@ -98,10 +98,10 @@ const ResizableSection = ({ ); }; -export const renderApp = ({ element, theme$ }: AppMountParameters) => { +export const renderApp = (coreStart: CoreStart, { element }: AppMountParameters) => { ReactDOM.render( - +
{ + const [coreStart] = await core.getStartServices(); // Load application bundle const { renderApp } = await import('./application'); // Render the application - return renderApp(params); + return renderApp(coreStart, params); }, }); diff --git a/examples/search_examples/public/search/app.tsx b/examples/search_examples/public/search/app.tsx index 6639d446e80ec..c1ffceb561fe4 100644 --- a/examples/search_examples/public/search/app.tsx +++ b/examples/search_examples/public/search/app.tsx @@ -43,7 +43,10 @@ import { PLUGIN_ID, PLUGIN_NAME, SERVER_SEARCH_ROUTE_PATH } from '../../common'; import { IMyStrategyResponse } from '../../common/types'; interface SearchExamplesAppDeps - extends Pick { + extends Pick< + CoreStart, + 'notifications' | 'http' | 'analytics' | 'i18n' | 'theme' | 'userProfile' + > { navigation: NavigationPublicPluginStart; data: DataPublicPluginStart; unifiedSearch: UnifiedSearchPublicPluginStart; @@ -230,13 +233,8 @@ export const SearchExamplesApp = ({ ); notifications.toasts.addSuccess( - { - title: 'Query result', - text: toMountPoint(message, startServices), - }, - { - toastLifeTimeMs: 300000, - } + { title: 'Query result', text: toMountPoint(message, startServices) }, + { toastLifeTimeMs: 300000 } ); if (res.warning) { notifications.toasts.addWarning({ diff --git a/examples/search_examples/public/search_sessions/app.tsx b/examples/search_examples/public/search_sessions/app.tsx index 5fcb0e326c8b8..aca66a3953524 100644 --- a/examples/search_examples/public/search_sessions/app.tsx +++ b/examples/search_examples/public/search_sessions/app.tsx @@ -56,6 +56,7 @@ interface SearchSessionsExampleAppDeps { analytics: CoreStart['analytics']; i18n: CoreStart['i18n']; theme: CoreStart['theme']; + userProfile: CoreStart['userProfile']; navigation: NavigationPublicPluginStart; data: DataPublicPluginStart; unifiedSearch: UnifiedSearchPublicPluginStart; @@ -674,6 +675,7 @@ function doSearch( analytics: CoreStart['analytics']; i18n: CoreStart['i18n']; theme: CoreStart['theme']; + userProfile: CoreStart['userProfile']; } ): Promise<{ request: IEsSearchRequest; response: IEsSearchResponse; tookMs?: number }> { if (!dataView) return Promise.reject('Select a data view'); diff --git a/examples/unified_field_list_examples/public/application.tsx b/examples/unified_field_list_examples/public/application.tsx index 6cbdc8242b6be..fa1a936d66893 100644 --- a/examples/unified_field_list_examples/public/application.tsx +++ b/examples/unified_field_list_examples/public/application.tsx @@ -18,11 +18,11 @@ import { UnifiedFieldListExampleApp } from './example_app'; export const renderApp = ( core: CoreStart, deps: AppPluginStartDependencies, - { element, theme$ }: AppMountParameters + { element }: AppMountParameters ) => { ReactDOM.render( - + { + const { euiTheme } = useEuiTheme(); const userProfile: UserProfile<{ avatar: UserProfileAvatarData }> = { uid: 'u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0', enabled: true, @@ -24,7 +25,7 @@ export const AvatarDemo: FunctionComponent = () => { }, data: { avatar: { - color: '#09e8ca', + color: euiTheme.colors.vis.euiColorVis1, initials: 'DN', imageUrl: 'https://source.unsplash.com/64x64/?cat', }, diff --git a/examples/user_profile_examples/public/tooltip_demo.tsx b/examples/user_profile_examples/public/tooltip_demo.tsx index 1c356be4df20d..bb99bfa5bb525 100644 --- a/examples/user_profile_examples/public/tooltip_demo.tsx +++ b/examples/user_profile_examples/public/tooltip_demo.tsx @@ -10,10 +10,11 @@ import React, { FunctionComponent } from 'react'; import { UserAvatarTip, UserToolTip } from '@kbn/user-profile-components'; import type { UserProfile, UserProfileAvatarData } from '@kbn/user-profile-components'; -import { EuiCommentList, EuiComment } from '@elastic/eui'; +import { EuiCommentList, EuiComment, useEuiTheme } from '@elastic/eui'; import { PanelWithCodeBlock } from './panel_with_code_block'; export const ToolTipDemo: FunctionComponent = () => { + const { euiTheme } = useEuiTheme(); const userProfile: UserProfile<{ avatar: UserProfileAvatarData }> = { uid: 'u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0', enabled: true, @@ -24,7 +25,7 @@ export const ToolTipDemo: FunctionComponent = () => { }, data: { avatar: { - color: '#09e8ca', + color: euiTheme.colors.vis.euiColorVis1, initials: 'WD', imageUrl: 'https://source.unsplash.com/64x64/?dingo', }, diff --git a/kbn_pm/src/commands/watch_command.mjs b/kbn_pm/src/commands/watch_command.mjs index c9e12620d9107..9a98b5c128102 100644 --- a/kbn_pm/src/commands/watch_command.mjs +++ b/kbn_pm/src/commands/watch_command.mjs @@ -27,6 +27,7 @@ export const command = { async run({ args, log }) { await Bazel.watch(log, { offline: args.getBooleanValue('offline') ?? true, + reactVersion: process.env.REACT_18 ? '18' : '17', }); }, }; diff --git a/kbn_pm/src/lib/bazel.mjs b/kbn_pm/src/lib/bazel.mjs index 53a1c87f164c2..f3a0e287cf3fd 100644 --- a/kbn_pm/src/lib/bazel.mjs +++ b/kbn_pm/src/lib/bazel.mjs @@ -83,7 +83,7 @@ async function runBazel(log, inputArgs, opts = undefined) { /** * * @param {import('./log.mjs').Log} log - * @param {{ offline: boolean } | undefined} opts + * @param {{ offline: boolean, reactVersion?: string } | undefined} opts */ export async function watch(log, opts = undefined) { const ibazel = (await getBazelRunner()).runIBazel; @@ -97,10 +97,12 @@ export async function watch(log, opts = undefined) { ...BAZEL_TARGETS, '--show_result=1', ...(opts?.offline ? ['--config=offline'] : []), + `--define=REACT_18=${opts?.reactVersion === '18' ? 'true' : 'false'}`, ]; log.debug(`> ibazel ${args.join(' ')}`); await ibazel(args, { cwd: REPO_ROOT, + env: { ...process.env, REACT_18: opts?.reactVersion === '18' ? 'true' : 'false' }, logPrefix: Color.info('[ibazel]'), onErrorExit(code, output) { throwBazelError(log, 'ibazel', code, output); diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index 5d4725f0b2e24..2a942bc85c3bc 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -114,7 +114,12 @@ tags: - description: Manage and interact with Security Assistant resources. name: Security AI Assistant API x-displayName: Security AI assistant - - description: You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page. + - description: | + Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged. + > warn + > If the API key used for authorization has different privileges than the key that created or most recently updated a rule, the rule behavior might change. + + > If the API key that created a rule is deleted, or the user that created the rule becomes inactive, the rule will stop running. name: Security Detections API x-displayName: Security detections - description: Endpoint Exceptions API allows you to manage detection rule endpoint exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met. @@ -126,10 +131,67 @@ tags: - description: '' name: Security Entity Analytics API x-displayName: Security entity analytics - - description: Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met. + - description: | + Exceptions are associated with detection and endpoint rules, and are used to prevent a rule from generating an alert from incoming events, even when the rule's other criteria are met. They can help reduce the number of false positives and prevent trusted processes and network activity from generating unnecessary alerts. + + Exceptions are made up of: + + * **Exception containers**: A container for related exceptions. Generally, a single exception container contains all the exception items relevant for a subset of rules. For example, a container can be used to group together network-related exceptions that are relevant for a large number of network rules. The container can then be associated with all the relevant rules. + * **Exception items**: The query (fields, values, and logic) used to prevent rules from generating alerts. When an exception item's query evaluates to `true`, the rule does not generate an alert. + + For detection rules, you can also use lists to define rule exceptions. A list holds multiple values of the same Elasticsearch data type, such as IP addresses. These values are used to determine when an exception prevents an alert from being generated. + > info + > You cannot use lists with endpoint rule exceptions. + + > info + > Only exception containers can be associated with rules. You cannot directly associate an exception item or a list container with a rule. To use list exceptions, create an exception item that references the relevant list container. + + ## Exceptions requirements + + Before you can start working with exceptions that use value lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. For a complete list of requirements, refer to [Enable and access detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui). name: Security Exceptions API x-displayName: Security exceptions - - description: Lists API allows you to manage lists of keywords, IPs or IP ranges items. + - description: | + Lists can be used with detection rule exceptions to define values that prevent a rule from generating alerts. + + Lists are made up of: + + * **List containers**: A container for values of the same Elasticsearch data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception prevents an alert from being generated. + + All list items in the same list container must be of the same data type, and each item defines a single value. For example, an IP list container named `internal-ip-addresses-southport` contains five items, where each item defines one internal IP address: + 1. `192.168.1.1` + 2. `192.168.1.3` + 3. `192.168.1.18` + 4. `192.168.1.12` + 5. `192.168.1.7` + + To use these IP addresses as values for defining rule exceptions, use the Security exceptions API to [create an exception list item](../operation/operation-createexceptionlistitem) that references the `internal-ip-addresses-southport` list. + > info + > Lists cannot be added directly to rules, nor do they define the operators used to determine when exceptions are applied (`is in list`, `is not in list`). Use an exception item to define the operator and associate it with an [exception container](../operation/operation-createexceptionlist). You can then add the exception container to a rule's `exceptions_list` object. + + ## Lists requirements + + Before you can start using lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. Refer to [Enable and access detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui) for a complete list of requirements. name: Security Lists API x-displayName: Security lists - description: Run live queries, manage packs and saved queries. @@ -33483,6 +33545,58 @@ paths: tags: - Security Entity Analytics API x-beta: true + /api/risk_score/engine/saved_object/configure: + patch: + description: Configuring the Risk Engine Saved Object + operationId: ConfigureRiskEngineSavedObject + requestBody: + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + type: object + properties: + exclude_alert_statuses: + items: + type: string + type: array + exclude_alert_tags: + items: + type: string + type: array + range: + type: object + properties: + end: + type: string + start: + type: string + required: true + responses: + '200': + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + description: Successful response + '400': + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + $ref: '#/components/schemas/Security_Entity_Analytics_API_TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + $ref: '#/components/schemas/Security_Entity_Analytics_API_ConfigureRiskEngineSavedObjectErrorResponse' + description: Unexpected error + summary: Configure the Risk Engine Saved Object + tags: + - Security Entity Analytics API + x-beta: true /api/risk_score/engine/schedule_now: post: description: Schedule the risk scoring engine to run as soon as possible. You can use this to recalculate entity risk scores after updating their asset criticality. @@ -46925,6 +47039,27 @@ components: required: - cleanup_successful - errors + Security_Entity_Analytics_API_ConfigureRiskEngineSavedObjectErrorResponse: + type: object + properties: + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + risk_engine_saved_object_configured: + example: false + type: boolean + required: + - risk_engine_saved_object_configured + - errors Security_Entity_Analytics_API_CreateAssetCriticalityRecord: allOf: - $ref: '#/components/schemas/Security_Entity_Analytics_API_AssetCriticalityRecordIdParts' diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index b8f8fa29e84ee..f12014443bb0b 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -130,7 +130,12 @@ tags: - description: Manage and interact with Security Assistant resources. name: Security AI Assistant API x-displayName: Security AI assistant - - description: You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page. + - description: | + Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged. + > warn + > If the API key used for authorization has different privileges than the key that created or most recently updated a rule, the rule behavior might change. + + > If the API key that created a rule is deleted, or the user that created the rule becomes inactive, the rule will stop running. name: Security Detections API x-displayName: Security detections - description: Endpoint Exceptions API allows you to manage detection rule endpoint exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met. @@ -142,10 +147,67 @@ tags: - description: '' name: Security Entity Analytics API x-displayName: Security entity analytics - - description: Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met. + - description: | + Exceptions are associated with detection and endpoint rules, and are used to prevent a rule from generating an alert from incoming events, even when the rule's other criteria are met. They can help reduce the number of false positives and prevent trusted processes and network activity from generating unnecessary alerts. + + Exceptions are made up of: + + * **Exception containers**: A container for related exceptions. Generally, a single exception container contains all the exception items relevant for a subset of rules. For example, a container can be used to group together network-related exceptions that are relevant for a large number of network rules. The container can then be associated with all the relevant rules. + * **Exception items**: The query (fields, values, and logic) used to prevent rules from generating alerts. When an exception item's query evaluates to `true`, the rule does not generate an alert. + + For detection rules, you can also use lists to define rule exceptions. A list holds multiple values of the same Elasticsearch data type, such as IP addresses. These values are used to determine when an exception prevents an alert from being generated. + > info + > You cannot use lists with endpoint rule exceptions. + + > info + > Only exception containers can be associated with rules. You cannot directly associate an exception item or a list container with a rule. To use list exceptions, create an exception item that references the relevant list container. + + ## Exceptions requirements + + Before you can start working with exceptions that use value lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. For a complete list of requirements, refer to [Enable and access detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui). name: Security Exceptions API x-displayName: Security exceptions - - description: Lists API allows you to manage lists of keywords, IPs or IP ranges items. + - description: | + Lists can be used with detection rule exceptions to define values that prevent a rule from generating alerts. + + Lists are made up of: + + * **List containers**: A container for values of the same Elasticsearch data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception prevents an alert from being generated. + + All list items in the same list container must be of the same data type, and each item defines a single value. For example, an IP list container named `internal-ip-addresses-southport` contains five items, where each item defines one internal IP address: + 1. `192.168.1.1` + 2. `192.168.1.3` + 3. `192.168.1.18` + 4. `192.168.1.12` + 5. `192.168.1.7` + + To use these IP addresses as values for defining rule exceptions, use the Security exceptions API to [create an exception list item](../operation/operation-createexceptionlistitem) that references the `internal-ip-addresses-southport` list. + > info + > Lists cannot be added directly to rules, nor do they define the operators used to determine when exceptions are applied (`is in list`, `is not in list`). Use an exception item to define the operator and associate it with an [exception container](../operation/operation-createexceptionlist). You can then add the exception container to a rule's `exceptions_list` object. + + ## Lists requirements + + Before you can start using lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. Refer to [Enable and access detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui) for a complete list of requirements. name: Security Lists API x-displayName: Security lists - description: Run live queries, manage packs and saved queries. @@ -4459,724 +4521,6 @@ paths: summary: Get information about rules tags: - alerting - /api/alerts/alert/{alertId}: - delete: - deprecated: true - description: | - Deprecated in 7.13.0. Use the delete rule API instead. WARNING: After you delete an alert, you cannot recover it. - operationId: legaryDeleteAlert - parameters: - - $ref: '#/components/parameters/Alerting_kbn_xsrf' - - description: The identifier for the alert. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - responses: - '204': - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Delete an alert - tags: - - alerting - get: - deprecated: true - description: Deprecated in 7.13.0. Use the get rule API instead. - operationId: legacyGetAlert - parameters: - - description: The identifier for the alert. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - responses: - '200': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_alert_response_properties' - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Get an alert by identifier - tags: - - alerting - post: - deprecated: true - description: Deprecated in 7.13.0. Use the create rule API instead. - operationId: legacyCreateAlert - parameters: - - $ref: '#/components/parameters/Alerting_kbn_xsrf' - - description: An UUID v1 or v4 identifier for the alert. If this parameter is omitted, the identifier is randomly generated. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - requestBody: - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - title: Legacy create alert request properties - type: object - properties: - actions: - items: - type: object - properties: - actionTypeId: - description: The identifier for the action type. - type: string - group: - description: | - Grouping actions is recommended for escalations for different types of alert instances. If you don't need this functionality, set it to `default`. - type: string - id: - description: The ID of the action saved object. - type: string - params: - description: | - The map to the `params` that the action type will receive. `params` are handled as Mustache templates and passed a default set of context. - type: object - required: - - actionTypeId - - group - - id - - params - type: array - alertTypeId: - description: The ID of the alert type that you want to call when the alert is scheduled to run. - type: string - consumer: - description: The name of the application that owns the alert. This name has to match the Kibana feature name, as that dictates the required role-based access control privileges. - type: string - enabled: - description: Indicates if you want to run the alert on an interval basis after it is created. - type: boolean - name: - description: A name to reference and search. - type: string - notifyWhen: - description: The condition for throttling the notification. - enum: - - onActionGroupChange - - onActiveAlert - - onThrottleInterval - type: string - params: - description: The parameters to pass to the alert type executor `params` value. This will also validate against the alert type params validator, if defined. - type: object - schedule: - description: | - The schedule specifying when this alert should be run. A schedule is structured such that the key specifies the format you wish to use and its value specifies the schedule. - type: object - properties: - interval: - description: The interval format specifies the interval in seconds, minutes, hours or days at which the alert should run. - example: 10s - type: string - tags: - description: A list of keywords to reference and search. - items: - type: string - type: array - throttle: - description: | - How often this alert should fire the same actions. This will prevent the alert from sending out the same notification over and over. For example, if an alert with a schedule of 1 minute stays in a triggered state for 90 minutes, setting a throttle of `10m` or `1h` will prevent it from sending 90 notifications during this period. - type: string - required: - - alertTypeId - - consumer - - name - - notifyWhen - - params - - schedule - required: true - responses: - '200': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_alert_response_properties' - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Create an alert - tags: - - alerting - put: - deprecated: true - description: Deprecated in 7.13.0. Use the update rule API instead. - operationId: legacyUpdateAlert - parameters: - - $ref: '#/components/parameters/Alerting_kbn_xsrf' - - description: The identifier for the alert. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - requestBody: - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - title: Legacy update alert request properties - type: object - properties: - actions: - items: - type: object - properties: - actionTypeId: - description: The identifier for the action type. - type: string - group: - description: | - Grouping actions is recommended for escalations for different types of alert instances. If you don't need this functionality, set it to `default`. - type: string - id: - description: The ID of the action saved object. - type: string - params: - description: | - The map to the `params` that the action type will receive. `params` are handled as Mustache templates and passed a default set of context. - type: object - required: - - actionTypeId - - group - - id - - params - type: array - name: - description: A name to reference and search. - type: string - notifyWhen: - description: The condition for throttling the notification. - enum: - - onActionGroupChange - - onActiveAlert - - onThrottleInterval - type: string - params: - description: The parameters to pass to the alert type executor `params` value. This will also validate against the alert type params validator, if defined. - type: object - schedule: - description: | - The schedule specifying when this alert should be run. A schedule is structured such that the key specifies the format you wish to use and its value specifies the schedule. - type: object - properties: - interval: - description: The interval format specifies the interval in seconds, minutes, hours or days at which the alert should run. - example: 1d - type: string - tags: - description: A list of keywords to reference and search. - items: - type: string - type: array - throttle: - description: | - How often this alert should fire the same actions. This will prevent the alert from sending out the same notification over and over. For example, if an alert with a schedule of 1 minute stays in a triggered state for 90 minutes, setting a throttle of `10m` or `1h` will prevent it from sending 90 notifications during this period. - type: string - required: - - name - - notifyWhen - - params - - schedule - required: true - responses: - '200': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_alert_response_properties' - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Update an alert - tags: - - alerting - /api/alerts/alert/{alertId}/_disable: - post: - deprecated: true - description: Deprecated in 7.13.0. Use the disable rule API instead. - operationId: legacyDisableAlert - parameters: - - $ref: '#/components/parameters/Alerting_kbn_xsrf' - - description: The identifier for the alert. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - responses: - '204': - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Disable an alert - tags: - - alerting - /api/alerts/alert/{alertId}/_enable: - post: - deprecated: true - description: Deprecated in 7.13.0. Use the enable rule API instead. - operationId: legacyEnableAlert - parameters: - - $ref: '#/components/parameters/Alerting_kbn_xsrf' - - description: The identifier for the alert. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - responses: - '204': - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Enable an alert - tags: - - alerting - /api/alerts/alert/{alertId}/_mute_all: - post: - deprecated: true - description: Deprecated in 7.13.0. Use the mute all alerts API instead. - operationId: legacyMuteAllAlertInstances - parameters: - - $ref: '#/components/parameters/Alerting_kbn_xsrf' - - description: The identifier for the alert. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - responses: - '204': - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Mute all alert instances - tags: - - alerting - /api/alerts/alert/{alertId}/_unmute_all: - post: - deprecated: true - description: Deprecated in 7.13.0. Use the unmute all alerts API instead. - operationId: legacyUnmuteAllAlertInstances - parameters: - - $ref: '#/components/parameters/Alerting_kbn_xsrf' - - description: The identifier for the alert. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - responses: - '204': - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Unmute all alert instances - tags: - - alerting - /api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_mute: - post: - deprecated: true - description: Deprecated in 7.13.0. Use the mute alert API instead. - operationId: legacyMuteAlertInstance - parameters: - - $ref: '#/components/parameters/Alerting_kbn_xsrf' - - description: An identifier for the alert. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - - description: An identifier for the alert instance. - in: path - name: alertInstanceId - required: true - schema: - example: dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2 - type: string - responses: - '204': - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Mute an alert instance - tags: - - alerting - /api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_unmute: - post: - deprecated: true - description: Deprecated in 7.13.0. Use the unmute alert API instead. - operationId: legacyUnmuteAlertInstance - parameters: - - $ref: '#/components/parameters/Alerting_kbn_xsrf' - - description: An identifier for the alert. - in: path - name: alertId - required: true - schema: - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - type: string - - description: An identifier for the alert instance. - in: path - name: alertInstanceId - required: true - schema: - example: dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2 - type: string - responses: - '204': - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Unmute an alert instance - tags: - - alerting - /api/alerts/alerts/_find: - get: - deprecated: true - description: | - Deprecated in 7.13.0. Use the find rules API instead. NOTE: Alert `params` are stored as a flattened field type and analyzed as keywords. As alerts change in Kibana, the results on each page of the response also change. Use the find API for traditional paginated results, but avoid using it to export large amounts of data. - operationId: legacyFindAlerts - parameters: - - description: The default operator to use for the `simple_query_string`. - example: OR - in: query - name: default_search_operator - schema: - default: OR - type: string - - description: The fields to return in the `attributes` key of the response. - in: query - name: fields - schema: - items: - type: string - type: array - - description: | - A KQL string that you filter with an attribute from your saved object. It should look like `savedObjectType.attributes.title: "myTitle"`. However, if you used a direct attribute of a saved object, such as `updatedAt`, you must define your filter, for example, `savedObjectType.updatedAt > 2018-12-22`. - in: query - name: filter - schema: - type: string - - description: Filters the rules that have a relation with the reference objects with a specific type and identifier. - in: query - name: has_reference - schema: - type: object - properties: - id: - type: string - type: - type: string - - description: The page number to return. - example: 1 - in: query - name: page - schema: - default: 1 - type: integer - - description: The number of alerts to return per page. - example: 20 - in: query - name: per_page - schema: - default: 20 - type: integer - - description: An Elasticsearch `simple_query_string` query that filters the alerts in the response. - in: query - name: search - schema: - type: string - - description: The fields to perform the `simple_query_string` parsed query against. - in: query - name: search_fields - schema: - oneOf: - - type: string - - items: - type: string - type: array - - description: | - Determines which field is used to sort the results. The field must exist in the `attributes` key of the response. - in: query - name: sort_field - schema: - type: string - - description: Determines the sort order. - example: asc - in: query - name: sort_order - schema: - default: desc - enum: - - asc - - desc - type: string - responses: - '200': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - type: object - properties: - data: - items: - $ref: '#/components/schemas/Alerting_alert_response_properties' - type: array - page: - type: integer - perPage: - type: integer - total: - type: integer - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Get a paginated set of alerts - tags: - - alerting - /api/alerts/alerts/_health: - get: - deprecated: true - description: Deprecated in 7.13.0. Use the get alerting framework health API instead. - operationId: legacyGetAlertingHealth - responses: - '200': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - type: object - properties: - alertingFrameworkHealth: - description: | - Three substates identify the health of the alerting framework: `decryptionHealth`, `executionHealth`, and `readHealth`. - type: object - properties: - decryptionHealth: - description: The timestamp and status of the alert decryption. - type: object - properties: - status: - enum: - - error - - ok - - warn - example: ok - type: string - timestamp: - example: '2023-01-13T01:28:00.280Z' - format: date-time - type: string - executionHealth: - description: The timestamp and status of the alert execution. - type: object - properties: - status: - enum: - - error - - ok - - warn - example: ok - type: string - timestamp: - example: '2023-01-13T01:28:00.280Z' - format: date-time - type: string - readHealth: - description: The timestamp and status of the alert reading events. - type: object - properties: - status: - enum: - - error - - ok - - warn - example: ok - type: string - timestamp: - example: '2023-01-13T01:28:00.280Z' - format: date-time - type: string - hasPermanentEncryptionKey: - description: If `false`, the encrypted saved object plugin does not have a permanent encryption key. - example: true - type: boolean - isSufficientlySecure: - description: If `false`, security is enabled but TLS is not. - example: true - type: boolean - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Get the alerting framework health - tags: - - alerting - /api/alerts/alerts/list_alert_types: - get: - deprecated: true - description: Deprecated in 7.13.0. Use the get rule types API instead. - operationId: legacyGetAlertTypes - responses: - '200': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - items: - type: object - properties: - actionGroups: - description: | - An explicit list of groups for which the alert type can schedule actions, each with the action group's unique ID and human readable name. Alert actions validation uses this configuration to ensure that groups are valid. - items: - type: object - properties: - id: - type: string - name: - type: string - type: array - actionVariables: - description: | - A list of action variables that the alert type makes available via context and state in action parameter templates, and a short human readable description. The Alert UI will use this information to prompt users for these variables in action parameter editors. - type: object - properties: - context: - items: - type: object - properties: - description: - type: string - name: - type: string - type: array - params: - items: - type: object - properties: - description: - type: string - name: - type: string - type: array - state: - items: - type: object - properties: - description: - type: string - name: - type: string - type: array - authorizedConsumers: - description: The list of the plugins IDs that have access to the alert type. - type: object - defaultActionGroupId: - description: The default identifier for the alert type group. - type: string - enabledInLicense: - description: Indicates whether the rule type is enabled based on the subscription. - type: boolean - id: - description: The unique identifier for the alert type. - type: string - isExportable: - description: Indicates whether the alert type is exportable in Saved Objects Management UI. - type: boolean - minimumLicenseRequired: - description: The subscriptions required to use the alert type. - type: string - name: - description: The descriptive name of the alert type. - type: string - producer: - description: An identifier for the application that produces this alert type. - type: string - recoveryActionGroup: - description: | - An action group to use when an alert instance goes from an active state to an inactive one. If it is not specified, the default recovered action group is used. - type: object - properties: - id: - type: string - name: - type: string - type: array - description: Indicates a successful call. - '401': - content: - application/json; Elastic-Api-Version=2023-10-31: - schema: - $ref: '#/components/schemas/Alerting_401_response' - description: Authorization information is missing or invalid. - summary: Get the alert types - tags: - - alerting /api/apm/agent_keys: post: description: Create a new agent key for APM. @@ -36208,6 +35552,57 @@ paths: summary: Cleanup the Risk Engine tags: - Security Entity Analytics API + /api/risk_score/engine/saved_object/configure: + patch: + description: Configuring the Risk Engine Saved Object + operationId: ConfigureRiskEngineSavedObject + requestBody: + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + type: object + properties: + exclude_alert_statuses: + items: + type: string + type: array + exclude_alert_tags: + items: + type: string + type: array + range: + type: object + properties: + end: + type: string + start: + type: string + required: true + responses: + '200': + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + description: Successful response + '400': + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + $ref: '#/components/schemas/Security_Entity_Analytics_API_TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + $ref: '#/components/schemas/Security_Entity_Analytics_API_ConfigureRiskEngineSavedObjectErrorResponse' + description: Unexpected error + summary: Configure the Risk Engine Saved Object + tags: + - Security Entity Analytics API /api/risk_score/engine/schedule_now: post: description: Schedule the risk scoring engine to run as soon as possible. You can use this to recalculate entity risk scores after updating their asset criticality. @@ -43931,13 +43326,6 @@ components: disabledFeatures: [] imageUrl: '' parameters: - Alerting_kbn_xsrf: - description: Cross-site request forgery protection - in: header - name: kbn-xsrf - required: true - schema: - type: string APM_UI_elastic_api_version: description: The version of the API to use in: header @@ -44291,89 +43679,6 @@ components: type: integer title: Unsuccessful rule API response type: object - Alerting_alert_response_properties: - title: Legacy alert response properties - type: object - properties: - actions: - items: - type: object - type: array - alertTypeId: - example: .index-threshold - type: string - apiKeyOwner: - example: elastic - nullable: true - type: string - createdAt: - description: The date and time that the alert was created. - example: '2022-12-05T23:36:58.284Z' - format: date-time - type: string - createdBy: - description: The identifier for the user that created the alert. - example: elastic - type: string - enabled: - description: Indicates whether the alert is currently enabled. - example: true - type: boolean - executionStatus: - type: object - properties: - lastExecutionDate: - example: '2022-12-06T00:13:43.890Z' - format: date-time - type: string - status: - example: ok - type: string - id: - description: The identifier for the alert. - example: b530fed0-74f5-11ed-9801-35303b735aef - type: string - muteAll: - example: false - type: boolean - mutedInstanceIds: - items: - type: string - nullable: true - type: array - name: - description: The name of the alert. - example: my alert - type: string - notifyWhen: - example: onActionGroupChange - type: string - params: - additionalProperties: true - type: object - schedule: - type: object - properties: - interval: - type: string - scheduledTaskId: - example: b530fed0-74f5-11ed-9801-35303b735aef - type: string - tags: - items: - type: string - type: array - throttle: - nullable: true - type: string - updatedAt: - example: '2022-12-05T23:36:58.284Z' - type: string - updatedBy: - description: The identifier for the user that updated this alert most recently. - example: elastic - nullable: true - type: string Alerting_fieldmap_properties: title: Field map objects in the get rule types response type: object @@ -54610,6 +53915,27 @@ components: required: - cleanup_successful - errors + Security_Entity_Analytics_API_ConfigureRiskEngineSavedObjectErrorResponse: + type: object + properties: + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + risk_engine_saved_object_configured: + example: false + type: boolean + required: + - risk_engine_saved_object_configured + - errors Security_Entity_Analytics_API_CreateAssetCriticalityRecord: allOf: - $ref: '#/components/schemas/Security_Entity_Analytics_API_AssetCriticalityRecordIdParts' diff --git a/oas_docs/overlays/alerting.overlays.yaml b/oas_docs/overlays/alerting.overlays.yaml index c4cc25b685783..0f579b54a5502 100644 --- a/oas_docs/overlays/alerting.overlays.yaml +++ b/oas_docs/overlays/alerting.overlays.yaml @@ -111,11 +111,11 @@ actions: # Infra metric threshold rule (metrics.alert.threshold) - $ref: '../../x-pack/plugins/observability_solution/infra/server/lib/alerting/docs/params_property_infra_metric_threshold.yaml' # SLO burn rate (slo.rules.burnRate) - - $ref: '../../x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/docs/params_property_slo_burn_rate.yaml' + - $ref: '../../x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/docs/params_property_slo_burn_rate.yaml' # Synthetics uptime TLS rule (xpack.uptime.alerts.tls) - - $ref: '../../x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml' + - $ref: '../../x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml' # Uptime monitor status rule (xpack.uptime.alerts.monitorStatus) - - $ref: '../../x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml' + - $ref: '../../x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml' # TBD # Anomaly detection alert rule (xpack.ml.anomaly_detection_alert) # Anomaly detection jobs health rule (xpack.ml.anomaly_detection_jobs_health) diff --git a/oas_docs/package-lock.json b/oas_docs/package-lock.json index b12374f23e3bf..637641180323c 100644 --- a/oas_docs/package-lock.json +++ b/oas_docs/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@redocly/cli": "^1.25.15", + "@redocly/cli": "^1.26.0", "bump-cli": "^2.8.4" } }, @@ -515,12 +515,12 @@ } }, "node_modules/@redocly/cli": { - "version": "1.25.15", - "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.25.15.tgz", - "integrity": "sha512-ZD743CJX4FpMJvGNE9Cm3gNn8LNRzRjyrYNVPi1C4iIEtrFkr5Zq791qv6gUFehWns71svbVyzWD9ftVTdfqYg==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.26.0.tgz", + "integrity": "sha512-yUsrTmEPHaBDQf16jSFGi2n+AJabHacLpr7La92Dseo0tRkgLKsUWiaVEEyqm79POBytD87mVTi3THitqnSyZQ==", "license": "MIT", "dependencies": { - "@redocly/openapi-core": "1.25.15", + "@redocly/openapi-core": "1.26.0", "abort-controller": "^3.0.0", "chokidar": "^3.5.1", "colorette": "^1.2.0", @@ -556,9 +556,9 @@ "license": "MIT" }, "node_modules/@redocly/openapi-core": { - "version": "1.25.15", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.25.15.tgz", - "integrity": "sha512-/dpr5zpGj2t1Bf7EIXEboRZm1hsJZBQfv3Q1pkivtdAEg3if2khv+b9gY68aquC6cM/2aQY2kMLy8LlY2tn+Og==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.26.0.tgz", + "integrity": "sha512-8Ofu6WpBp7eoLmf1qQ4+T0W4LRr8es+4Drw/RJG+acPXmaT2TmHk2B2v+3+1R9GqSIj6kx3N7JmQkxAPCnvDLw==", "license": "MIT", "dependencies": { "@redocly/ajv": "^8.11.2", diff --git a/oas_docs/package.json b/oas_docs/package.json index 67289885b4ba3..81ce46597c50d 100644 --- a/oas_docs/package.json +++ b/oas_docs/package.json @@ -8,7 +8,7 @@ }, "dependencies": { "bump-cli": "^2.8.4", - "@redocly/cli": "^1.25.15" + "@redocly/cli": "^1.26.0" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/oas_docs/scripts/merge_ess_oas.js b/oas_docs/scripts/merge_ess_oas.js index b9882b3dd49fc..3d96ad5b5933f 100644 --- a/oas_docs/scripts/merge_ess_oas.js +++ b/oas_docs/scripts/merge_ess_oas.js @@ -23,15 +23,15 @@ const { REPO_ROOT } = require('@kbn/repo-info'); // Observability Solution `${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm/bundled.yaml`, - `${REPO_ROOT}/x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.yaml`, + `${REPO_ROOT}/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/bundled.yaml`, // Security solution - `${REPO_ROOT}/x-pack/plugins/security_solution/docs/openapi/ess/*.schema.yaml`, + `${REPO_ROOT}/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-lists-common/docs/openapi/ess/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-endpoint-exceptions-common/docs/openapi/ess/*.schema.yaml`, - `${REPO_ROOT}/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/ess/*.schema.yaml`, - `${REPO_ROOT}/x-pack/plugins/osquery/docs/openapi/ess/*.schema.yaml`, + `${REPO_ROOT}/x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/ess/*.schema.yaml`, + `${REPO_ROOT}/x-pack/platform/plugins/shared/osquery/docs/openapi/ess/*.schema.yaml`, ], outputFilePath: `${REPO_ROOT}/oas_docs/output/kibana.yaml`, options: { diff --git a/oas_docs/scripts/merge_serverless_oas.js b/oas_docs/scripts/merge_serverless_oas.js index 7dcfa340eaf09..2f92195502db1 100644 --- a/oas_docs/scripts/merge_serverless_oas.js +++ b/oas_docs/scripts/merge_serverless_oas.js @@ -21,15 +21,15 @@ const { REPO_ROOT } = require('@kbn/repo-info'); // Observability Solution `${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm/bundled.yaml`, - `${REPO_ROOT}/x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.yaml`, + `${REPO_ROOT}/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/bundled.yaml`, // Security solution - `${REPO_ROOT}/x-pack/plugins/security_solution/docs/openapi/serverless/*.schema.yaml`, + `${REPO_ROOT}/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-endpoint-exceptions-common/docs/openapi/serverless/*.schema.yaml`, - `${REPO_ROOT}/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/serverless/*.schema.yaml`, - `${REPO_ROOT}/x-pack/plugins/osquery/docs/openapi/serverless/*.schema.yaml`, + `${REPO_ROOT}/x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/serverless/*.schema.yaml`, + `${REPO_ROOT}/x-pack/platform/plugins/shared/osquery/docs/openapi/serverless/*.schema.yaml`, ], outputFilePath: `${REPO_ROOT}/oas_docs/output/kibana.serverless.yaml`, options: { diff --git a/package.json b/package.json index a5687c0ae3729..ee007b076af4a 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "@elastic/datemath": "5.0.3", "@elastic/ebt": "^1.1.1", "@elastic/ecs": "^8.11.1", - "@elastic/elasticsearch": "^8.15.2", + "@elastic/elasticsearch": "^8.16.0", "@elastic/ems-client": "8.5.3", "@elastic/eui": "98.1.0-borealis.0", "@elastic/eui-theme-borealis": "0.0.4", @@ -159,8 +159,9 @@ "@kbn/actions-types": "link:packages/kbn-actions-types", "@kbn/advanced-settings-plugin": "link:src/plugins/advanced_settings", "@kbn/ai-assistant": "link:x-pack/packages/kbn-ai-assistant", - "@kbn/ai-assistant-common": "link:x-pack/packages/kbn-ai-assistant-common", - "@kbn/ai-assistant-management-plugin": "link:src/plugins/ai_assistant_management/selection", + "@kbn/ai-assistant-common": "link:x-pack/platform/packages/shared/ai-assistant/common", + "@kbn/ai-assistant-icon": "link:x-pack/platform/packages/shared/ai-assistant/icon", + "@kbn/ai-assistant-management-plugin": "link:src/platform/plugins/shared/ai_assistant_management/selection", "@kbn/aiops-change-point-detection": "link:x-pack/platform/packages/private/ml/aiops_change_point_detection", "@kbn/aiops-common": "link:x-pack/platform/packages/shared/ml/aiops_common", "@kbn/aiops-components": "link:x-pack/platform/packages/private/ml/aiops_components", @@ -191,12 +192,11 @@ "@kbn/apm-utils": "link:packages/kbn-apm-utils", "@kbn/app-link-test-plugin": "link:test/plugin_functional/plugins/app_link_test", "@kbn/application-usage-test-plugin": "link:x-pack/test/usage_collection/plugins/application_usage_test", - "@kbn/asset-inventory-plugin": "link:x-pack/plugins/asset_inventory", + "@kbn/asset-inventory-plugin": "link:x-pack/solutions/security/plugins/asset_inventory", "@kbn/audit-log-plugin": "link:x-pack/test/security_api_integration/plugins/audit_log", - "@kbn/avc-banner": "link:packages/kbn-avc-banner", + "@kbn/avc-banner": "link:src/platform/packages/shared/kbn-avc-banner", "@kbn/banners-plugin": "link:x-pack/plugins/banners", "@kbn/bfetch-error": "link:packages/kbn-bfetch-error", - "@kbn/bfetch-explorer-plugin": "link:examples/bfetch_explorer", "@kbn/bfetch-plugin": "link:src/plugins/bfetch", "@kbn/calculate-auto": "link:packages/kbn-calculate-auto", "@kbn/calculate-width-from-char-count": "link:packages/kbn-calculate-width-from-char-count", @@ -205,30 +205,30 @@ "@kbn/cases-components": "link:packages/kbn-cases-components", "@kbn/cases-plugin": "link:x-pack/plugins/cases", "@kbn/cbor": "link:packages/kbn-cbor", - "@kbn/cell-actions": "link:packages/kbn-cell-actions", + "@kbn/cell-actions": "link:src/platform/packages/shared/kbn-cell-actions", "@kbn/chart-expressions-common": "link:src/plugins/chart_expressions/common", "@kbn/chart-icons": "link:packages/kbn-chart-icons", "@kbn/charts-plugin": "link:src/plugins/charts", "@kbn/cloud": "link:packages/cloud", "@kbn/cloud-chat-plugin": "link:x-pack/plugins/cloud_integrations/cloud_chat", - "@kbn/cloud-data-migration-plugin": "link:x-pack/plugins/cloud_integrations/cloud_data_migration", - "@kbn/cloud-defend-plugin": "link:x-pack/plugins/cloud_defend", + "@kbn/cloud-data-migration-plugin": "link:x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration", + "@kbn/cloud-defend-plugin": "link:x-pack/solutions/security/plugins/cloud_defend", "@kbn/cloud-experiments-plugin": "link:x-pack/plugins/cloud_integrations/cloud_experiments", "@kbn/cloud-full-story-plugin": "link:x-pack/plugins/cloud_integrations/cloud_full_story", "@kbn/cloud-integration-saml-provider-plugin": "link:x-pack/test/cloud_integration/plugins/saml_provider", "@kbn/cloud-links-plugin": "link:x-pack/plugins/cloud_integrations/cloud_links", "@kbn/cloud-plugin": "link:x-pack/plugins/cloud", - "@kbn/cloud-security-posture": "link:x-pack/packages/kbn-cloud-security-posture/public", - "@kbn/cloud-security-posture-common": "link:x-pack/packages/kbn-cloud-security-posture/common", - "@kbn/cloud-security-posture-graph": "link:x-pack/packages/kbn-cloud-security-posture/graph", - "@kbn/cloud-security-posture-plugin": "link:x-pack/plugins/cloud_security_posture", + "@kbn/cloud-security-posture": "link:x-pack/solutions/security/packages/kbn-cloud-security-posture/public", + "@kbn/cloud-security-posture-common": "link:x-pack/platform/packages/shared/kbn-cloud-security-posture/common", + "@kbn/cloud-security-posture-graph": "link:x-pack/solutions/security/packages/kbn-cloud-security-posture/graph", + "@kbn/cloud-security-posture-plugin": "link:x-pack/solutions/security/plugins/cloud_security_posture", "@kbn/code-editor": "link:packages/shared-ux/code_editor/impl", "@kbn/code-editor-mock": "link:packages/shared-ux/code_editor/mocks", "@kbn/coloring": "link:packages/kbn-coloring", "@kbn/config": "link:packages/kbn-config", "@kbn/config-mocks": "link:packages/kbn-config-mocks", "@kbn/config-schema": "link:packages/kbn-config-schema", - "@kbn/console-plugin": "link:src/plugins/console", + "@kbn/console-plugin": "link:src/platform/plugins/shared/console", "@kbn/content-management-content-editor": "link:packages/content-management/content_editor", "@kbn/content-management-content-insights-public": "link:packages/content-management/content_insights/content_insights_public", "@kbn/content-management-content-insights-server": "link:packages/content-management/content_insights/content_insights_server", @@ -414,7 +414,7 @@ "@kbn/core-user-settings-server": "link:packages/core/user-settings/core-user-settings-server", "@kbn/core-user-settings-server-internal": "link:packages/core/user-settings/core-user-settings-server-internal", "@kbn/core-user-settings-server-mocks": "link:packages/core/user-settings/core-user-settings-server-mocks", - "@kbn/cross-cluster-replication-plugin": "link:x-pack/plugins/cross_cluster_replication", + "@kbn/cross-cluster-replication-plugin": "link:x-pack/platform/plugins/private/cross_cluster_replication", "@kbn/crypto": "link:packages/kbn-crypto", "@kbn/crypto-browser": "link:packages/kbn-crypto-browser", "@kbn/custom-branding-plugin": "link:x-pack/plugins/custom_branding", @@ -423,13 +423,13 @@ "@kbn/custom-integrations-plugin": "link:src/plugins/custom_integrations", "@kbn/dashboard-enhanced-plugin": "link:x-pack/plugins/dashboard_enhanced", "@kbn/dashboard-plugin": "link:src/plugins/dashboard", - "@kbn/data-forge": "link:x-pack/packages/kbn-data-forge", + "@kbn/data-forge": "link:x-pack/platform/packages/shared/kbn-data-forge", "@kbn/data-plugin": "link:src/plugins/data", "@kbn/data-quality-plugin": "link:x-pack/plugins/data_quality", "@kbn/data-search-plugin": "link:test/plugin_functional/plugins/data_search", "@kbn/data-service": "link:packages/kbn-data-service", - "@kbn/data-stream-adapter": "link:packages/kbn-data-stream-adapter", - "@kbn/data-usage-plugin": "link:x-pack/plugins/data_usage", + "@kbn/data-stream-adapter": "link:x-pack/solutions/security/packages/data-stream-adapter", + "@kbn/data-usage-plugin": "link:x-pack/platform/plugins/private/data_usage", "@kbn/data-view-editor-plugin": "link:src/plugins/data_view_editor", "@kbn/data-view-field-editor-example-plugin": "link:examples/data_view_field_editor_example", "@kbn/data-view-field-editor-plugin": "link:src/plugins/data_view_field_editor", @@ -440,19 +440,19 @@ "@kbn/dataset-quality-plugin": "link:x-pack/plugins/observability_solution/dataset_quality", "@kbn/datemath": "link:packages/kbn-datemath", "@kbn/deeplinks-analytics": "link:packages/deeplinks/analytics", - "@kbn/deeplinks-devtools": "link:packages/deeplinks/devtools", + "@kbn/deeplinks-devtools": "link:src/platform/packages/shared/deeplinks/devtools", "@kbn/deeplinks-fleet": "link:packages/deeplinks/fleet", - "@kbn/deeplinks-management": "link:packages/deeplinks/management", + "@kbn/deeplinks-management": "link:src/platform/packages/shared/deeplinks/management", "@kbn/deeplinks-ml": "link:src/platform/packages/shared/deeplinks/ml", - "@kbn/deeplinks-observability": "link:packages/deeplinks/observability", + "@kbn/deeplinks-observability": "link:src/platform/packages/shared/deeplinks/observability", "@kbn/deeplinks-search": "link:packages/deeplinks/search", - "@kbn/deeplinks-security": "link:packages/deeplinks/security", + "@kbn/deeplinks-security": "link:src/platform/packages/shared/deeplinks/security", "@kbn/deeplinks-shared": "link:packages/deeplinks/shared", "@kbn/default-nav-analytics": "link:packages/default-nav/analytics", - "@kbn/default-nav-devtools": "link:packages/default-nav/devtools", - "@kbn/default-nav-management": "link:packages/default-nav/management", + "@kbn/default-nav-devtools": "link:src/platform/packages/private/default-nav/devtools", + "@kbn/default-nav-management": "link:src/platform/packages/private/default-nav/management", "@kbn/default-nav-ml": "link:src/platform/packages/private/default-nav/ml", - "@kbn/dev-tools-plugin": "link:src/plugins/dev_tools", + "@kbn/dev-tools-plugin": "link:src/platform/plugins/shared/dev_tools", "@kbn/developer-examples-plugin": "link:examples/developer_examples", "@kbn/discover-contextual-components": "link:packages/kbn-discover-contextual-components", "@kbn/discover-customization-examples-plugin": "link:examples/discover_customization_examples", @@ -463,12 +463,12 @@ "@kbn/doc-links": "link:src/platform/packages/shared/kbn-doc-links", "@kbn/dom-drag-drop": "link:packages/kbn-dom-drag-drop", "@kbn/ebt-tools": "link:packages/kbn-ebt-tools", - "@kbn/ecs-data-quality-dashboard": "link:x-pack/packages/security-solution/ecs_data_quality_dashboard", - "@kbn/ecs-data-quality-dashboard-plugin": "link:x-pack/plugins/ecs_data_quality_dashboard", + "@kbn/ecs-data-quality-dashboard": "link:x-pack/solutions/security/packages/ecs_data_quality_dashboard", + "@kbn/ecs-data-quality-dashboard-plugin": "link:x-pack/solutions/security/plugins/ecs_data_quality_dashboard", "@kbn/elastic-agent-utils": "link:packages/kbn-elastic-agent-utils", - "@kbn/elastic-assistant": "link:x-pack/packages/kbn-elastic-assistant", - "@kbn/elastic-assistant-common": "link:x-pack/packages/kbn-elastic-assistant-common", - "@kbn/elastic-assistant-plugin": "link:x-pack/plugins/elastic_assistant", + "@kbn/elastic-assistant": "link:x-pack/platform/packages/shared/kbn-elastic-assistant", + "@kbn/elastic-assistant-common": "link:x-pack/platform/packages/shared/kbn-elastic-assistant-common", + "@kbn/elastic-assistant-plugin": "link:x-pack/solutions/security/plugins/elastic_assistant", "@kbn/elasticsearch-client-plugin": "link:test/plugin_functional/plugins/elasticsearch_client_plugin", "@kbn/elasticsearch-client-xpack-plugin": "link:x-pack/test/plugin_api_integration/plugins/elasticsearch_client", "@kbn/embeddable-enhanced-plugin": "link:x-pack/plugins/embeddable_enhanced", @@ -486,7 +486,7 @@ "@kbn/es-errors": "link:packages/kbn-es-errors", "@kbn/es-query": "link:packages/kbn-es-query", "@kbn/es-types": "link:packages/kbn-es-types", - "@kbn/es-ui-shared-plugin": "link:src/plugins/es_ui_shared", + "@kbn/es-ui-shared-plugin": "link:src/platform/plugins/shared/es_ui_shared", "@kbn/eso-model-version-example": "link:examples/eso_model_version_example", "@kbn/eso-plugin": "link:x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin", "@kbn/esql": "link:src/platform/plugins/shared/esql", @@ -504,9 +504,9 @@ "@kbn/event-annotation-plugin": "link:src/plugins/event_annotation", "@kbn/event-log-fixture-plugin": "link:x-pack/test/plugin_api_integration/plugins/event_log", "@kbn/event-log-plugin": "link:x-pack/plugins/event_log", - "@kbn/expandable-flyout": "link:packages/kbn-expandable-flyout", + "@kbn/expandable-flyout": "link:x-pack/solutions/security/packages/expandable-flyout", "@kbn/exploratory-view-example-plugin": "link:x-pack/examples/exploratory_view_example", - "@kbn/exploratory-view-plugin": "link:x-pack/plugins/observability_solution/exploratory_view", + "@kbn/exploratory-view-plugin": "link:x-pack/solutions/observability/plugins/exploratory_view", "@kbn/expression-error-plugin": "link:src/plugins/expression_error", "@kbn/expression-gauge-plugin": "link:src/plugins/chart_expressions/expression_gauge", "@kbn/expression-heatmap-plugin": "link:src/plugins/chart_expressions/expression_heatmap", @@ -553,7 +553,7 @@ "@kbn/graph-plugin": "link:x-pack/plugins/graph", "@kbn/grid-example-plugin": "link:examples/grid_example", "@kbn/grid-layout": "link:packages/kbn-grid-layout", - "@kbn/grokdebugger-plugin": "link:x-pack/plugins/grokdebugger", + "@kbn/grokdebugger-plugin": "link:x-pack/platform/plugins/private/grokdebugger", "@kbn/grouping": "link:packages/kbn-grouping", "@kbn/guided-onboarding": "link:packages/kbn-guided-onboarding", "@kbn/guided-onboarding-example-plugin": "link:examples/guided_onboarding_example", @@ -571,29 +571,29 @@ "@kbn/i18n-react": "link:packages/kbn-i18n-react", "@kbn/iframe-embedded-plugin": "link:x-pack/test/functional_embedded/plugins/iframe_embedded", "@kbn/image-embeddable-plugin": "link:src/plugins/image_embeddable", - "@kbn/index-adapter": "link:packages/kbn-index-adapter", - "@kbn/index-lifecycle-management-common-shared": "link:x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared", - "@kbn/index-lifecycle-management-plugin": "link:x-pack/plugins/index_lifecycle_management", + "@kbn/index-adapter": "link:x-pack/solutions/security/packages/index-adapter", + "@kbn/index-lifecycle-management-common-shared": "link:x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared", + "@kbn/index-lifecycle-management-plugin": "link:x-pack/platform/plugins/private/index_lifecycle_management", "@kbn/index-management-plugin": "link:x-pack/plugins/index_management", - "@kbn/index-management-shared-types": "link:x-pack/packages/index-management/index_management_shared_types", + "@kbn/index-management-shared-types": "link:x-pack/platform/packages/shared/index-management/index_management_shared_types", "@kbn/index-patterns-test-plugin": "link:test/plugin_functional/plugins/index_patterns", "@kbn/inference-common": "link:x-pack/platform/packages/shared/ai-infra/inference-common", "@kbn/inference-plugin": "link:x-pack/platform/plugins/shared/inference", "@kbn/inference_integration_flyout": "link:x-pack/platform/packages/private/ml/inference_integration_flyout", - "@kbn/infra-forge": "link:x-pack/packages/kbn-infra-forge", + "@kbn/infra-forge": "link:x-pack/platform/packages/private/kbn-infra-forge", "@kbn/infra-plugin": "link:x-pack/plugins/observability_solution/infra", - "@kbn/ingest-pipelines-plugin": "link:x-pack/plugins/ingest_pipelines", + "@kbn/ingest-pipelines-plugin": "link:x-pack/platform/plugins/shared/ingest_pipelines", "@kbn/input-control-vis-plugin": "link:src/plugins/input_control_vis", "@kbn/inspector-plugin": "link:src/plugins/inspector", - "@kbn/integration-assistant-plugin": "link:x-pack/plugins/integration_assistant", + "@kbn/integration-assistant-plugin": "link:x-pack/platform/plugins/shared/integration_assistant", "@kbn/interactive-setup-plugin": "link:src/plugins/interactive_setup", "@kbn/interactive-setup-test-endpoints-plugin": "link:test/interactive_setup_api_integration/plugins/test_endpoints", "@kbn/interpreter": "link:packages/kbn-interpreter", "@kbn/inventory-plugin": "link:x-pack/plugins/observability_solution/inventory", - "@kbn/investigate-app-plugin": "link:x-pack/plugins/observability_solution/investigate_app", - "@kbn/investigate-plugin": "link:x-pack/plugins/observability_solution/investigate", - "@kbn/investigation-shared": "link:packages/kbn-investigation-shared", - "@kbn/io-ts-utils": "link:packages/kbn-io-ts-utils", + "@kbn/investigate-app-plugin": "link:x-pack/solutions/observability/plugins/investigate_app", + "@kbn/investigate-plugin": "link:x-pack/solutions/observability/plugins/investigate", + "@kbn/investigation-shared": "link:x-pack/solutions/observability/packages/kbn-investigation-shared", + "@kbn/io-ts-utils": "link:src/platform/packages/shared/kbn-io-ts-utils", "@kbn/ipynb": "link:packages/kbn-ipynb", "@kbn/item-buffer": "link:packages/kbn-item-buffer", "@kbn/json-schemas": "link:x-pack/platform/packages/private/ml/json_schemas", @@ -607,16 +607,16 @@ "@kbn/kibana-react-plugin": "link:src/plugins/kibana_react", "@kbn/kibana-usage-collection-plugin": "link:src/plugins/kibana_usage_collection", "@kbn/kibana-utils-plugin": "link:src/plugins/kibana_utils", - "@kbn/kubernetes-security-plugin": "link:x-pack/plugins/kubernetes_security", - "@kbn/langchain": "link:x-pack/packages/kbn-langchain", + "@kbn/kubernetes-security-plugin": "link:x-pack/solutions/security/plugins/kubernetes_security", + "@kbn/langchain": "link:x-pack/platform/packages/shared/kbn-langchain", "@kbn/language-documentation": "link:src/platform/packages/private/kbn-language-documentation", "@kbn/lens-config-builder-example-plugin": "link:x-pack/examples/lens_config_builder_example", "@kbn/lens-embeddable-utils": "link:packages/kbn-lens-embeddable-utils", "@kbn/lens-formula-docs": "link:packages/kbn-lens-formula-docs", "@kbn/lens-inline-editing-example-plugin": "link:x-pack/examples/lens_embeddable_inline_editing_example", "@kbn/lens-plugin": "link:x-pack/plugins/lens", - "@kbn/license-api-guard-plugin": "link:x-pack/plugins/license_api_guard", - "@kbn/license-management-plugin": "link:x-pack/plugins/license_management", + "@kbn/license-api-guard-plugin": "link:x-pack/platform/plugins/private/license_api_guard", + "@kbn/license-management-plugin": "link:x-pack/platform/plugins/shared/license_management", "@kbn/licensing-plugin": "link:x-pack/plugins/licensing", "@kbn/links-plugin": "link:src/plugins/links", "@kbn/lists-plugin": "link:x-pack/plugins/lists", @@ -630,18 +630,18 @@ "@kbn/logs-shared-plugin": "link:x-pack/plugins/observability_solution/logs_shared", "@kbn/logstash-plugin": "link:x-pack/plugins/logstash", "@kbn/managed-content-badge": "link:packages/kbn-managed-content-badge", - "@kbn/management-cards-navigation": "link:packages/kbn-management/cards_navigation", - "@kbn/management-plugin": "link:src/plugins/management", - "@kbn/management-settings-application": "link:packages/kbn-management/settings/application", - "@kbn/management-settings-components-field-category": "link:packages/kbn-management/settings/components/field_category", - "@kbn/management-settings-components-field-input": "link:packages/kbn-management/settings/components/field_input", - "@kbn/management-settings-components-field-row": "link:packages/kbn-management/settings/components/field_row", - "@kbn/management-settings-components-form": "link:packages/kbn-management/settings/components/form", - "@kbn/management-settings-field-definition": "link:packages/kbn-management/settings/field_definition", + "@kbn/management-cards-navigation": "link:src/platform/packages/shared/kbn-management/cards_navigation", + "@kbn/management-plugin": "link:src/platform/plugins/shared/management", + "@kbn/management-settings-application": "link:src/platform/packages/private/kbn-management/settings/application", + "@kbn/management-settings-components-field-category": "link:src/platform/packages/private/kbn-management/settings/components/field_category", + "@kbn/management-settings-components-field-input": "link:src/platform/packages/shared/kbn-management/settings/components/field_input", + "@kbn/management-settings-components-field-row": "link:src/platform/packages/shared/kbn-management/settings/components/field_row", + "@kbn/management-settings-components-form": "link:src/platform/packages/private/kbn-management/settings/components/form", + "@kbn/management-settings-field-definition": "link:src/platform/packages/shared/kbn-management/settings/field_definition", "@kbn/management-settings-ids": "link:packages/kbn-management/settings/setting_ids", "@kbn/management-settings-section-registry": "link:packages/kbn-management/settings/section_registry", - "@kbn/management-settings-types": "link:packages/kbn-management/settings/types", - "@kbn/management-settings-utilities": "link:packages/kbn-management/settings/utilities", + "@kbn/management-settings-types": "link:src/platform/packages/shared/kbn-management/settings/types", + "@kbn/management-settings-utilities": "link:src/platform/packages/shared/kbn-management/settings/utilities", "@kbn/management-test-plugin": "link:test/plugin_functional/plugins/management_test_plugin", "@kbn/mapbox-gl": "link:packages/kbn-mapbox-gl", "@kbn/maps-custom-raster-source-plugin": "link:x-pack/examples/third_party_maps_source_example", @@ -692,20 +692,22 @@ "@kbn/notifications-plugin": "link:x-pack/plugins/notifications", "@kbn/object-versioning": "link:packages/kbn-object-versioning", "@kbn/object-versioning-utils": "link:packages/kbn-object-versioning-utils", - "@kbn/observability-ai-assistant-app-plugin": "link:x-pack/plugins/observability_solution/observability_ai_assistant_app", - "@kbn/observability-ai-assistant-management-plugin": "link:x-pack/plugins/observability_solution/observability_ai_assistant_management", - "@kbn/observability-ai-assistant-plugin": "link:x-pack/plugins/observability_solution/observability_ai_assistant", - "@kbn/observability-alert-details": "link:x-pack/packages/observability/alert_details", - "@kbn/observability-alerting-rule-utils": "link:x-pack/packages/observability/alerting_rule_utils", - "@kbn/observability-alerting-test-data": "link:x-pack/packages/observability/alerting_test_data", + "@kbn/observability-ai-assistant-app-plugin": "link:x-pack/solutions/observability/plugins/observability_ai_assistant_app", + "@kbn/observability-ai-assistant-management-plugin": "link:x-pack/solutions/observability/plugins/observability_ai_assistant_management", + "@kbn/observability-ai-assistant-plugin": "link:x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant", + "@kbn/observability-ai-common": "link:x-pack/solutions/observability/packages/observability_ai/observability_ai_common", + "@kbn/observability-ai-server": "link:x-pack/solutions/observability/packages/observability_ai/observability_ai_server", + "@kbn/observability-alert-details": "link:x-pack/solutions/observability/packages/alert_details", + "@kbn/observability-alerting-rule-utils": "link:x-pack/platform/packages/shared/observability/alerting_rule_utils", + "@kbn/observability-alerting-test-data": "link:x-pack/solutions/observability/packages/alerting_test_data", "@kbn/observability-fixtures-plugin": "link:x-pack/test/cases_api_integration/common/plugins/observability", - "@kbn/observability-get-padded-alert-time-range-util": "link:x-pack/packages/observability/get_padded_alert_time_range_util", + "@kbn/observability-get-padded-alert-time-range-util": "link:x-pack/solutions/observability/packages/get_padded_alert_time_range_util", "@kbn/observability-logs-explorer-plugin": "link:x-pack/plugins/observability_solution/observability_logs_explorer", "@kbn/observability-logs-overview": "link:x-pack/packages/observability/logs_overview", "@kbn/observability-onboarding-plugin": "link:x-pack/plugins/observability_solution/observability_onboarding", - "@kbn/observability-plugin": "link:x-pack/plugins/observability_solution/observability", + "@kbn/observability-plugin": "link:x-pack/solutions/observability/plugins/observability", "@kbn/observability-shared-plugin": "link:x-pack/plugins/observability_solution/observability_shared", - "@kbn/observability-synthetics-test-data": "link:x-pack/packages/observability/synthetics_test_data", + "@kbn/observability-synthetics-test-data": "link:x-pack/solutions/observability/packages/synthetics_test_data", "@kbn/observability-utils-browser": "link:x-pack/packages/observability/observability_utils/observability_utils_browser", "@kbn/observability-utils-common": "link:x-pack/packages/observability/observability_utils/observability_utils_common", "@kbn/observability-utils-server": "link:x-pack/packages/observability/observability_utils/observability_utils_server", @@ -713,9 +715,10 @@ "@kbn/open-telemetry-instrumented-plugin": "link:test/common/plugins/otel_metrics", "@kbn/openapi-common": "link:packages/kbn-openapi-common", "@kbn/osquery-io-ts-types": "link:src/platform/packages/shared/kbn-osquery-io-ts-types", - "@kbn/osquery-plugin": "link:x-pack/plugins/osquery", + "@kbn/osquery-plugin": "link:x-pack/platform/plugins/shared/osquery", "@kbn/paertial-results-example-plugin": "link:examples/partial_results_example", - "@kbn/painless-lab-plugin": "link:x-pack/plugins/painless_lab", + "@kbn/painless-lab-plugin": "link:x-pack/platform/plugins/private/painless_lab", + "@kbn/palettes": "link:packages/kbn-palettes", "@kbn/panel-loader": "link:packages/kbn-panel-loader", "@kbn/plugin-check": "link:packages/kbn-plugin-check", "@kbn/portable-dashboards-example": "link:examples/portable_dashboards_example", @@ -740,7 +743,7 @@ "@kbn/react-kibana-mount": "link:packages/react/kibana_mount", "@kbn/react-mute-legacy-root-warning": "link:packages/kbn-react-mute-legacy-root-warning", "@kbn/recently-accessed": "link:packages/kbn-recently-accessed", - "@kbn/remote-clusters-plugin": "link:x-pack/plugins/remote_clusters", + "@kbn/remote-clusters-plugin": "link:x-pack/platform/plugins/private/remote_clusters", "@kbn/rendering-plugin": "link:test/plugin_functional/plugins/rendering_plugin", "@kbn/repo-info": "link:packages/kbn-repo-info", "@kbn/repo-packages": "link:packages/kbn-repo-packages", @@ -764,15 +767,15 @@ "@kbn/response-ops-rule-params": "link:packages/response-ops/rule_params", "@kbn/response-stream-plugin": "link:examples/response_stream", "@kbn/rison": "link:packages/kbn-rison", - "@kbn/rollup": "link:x-pack/packages/rollup", - "@kbn/rollup-plugin": "link:x-pack/plugins/rollup", + "@kbn/rollup": "link:x-pack/platform/packages/private/rollup", + "@kbn/rollup-plugin": "link:x-pack/platform/plugins/private/rollup", "@kbn/router-to-openapispec": "link:packages/kbn-router-to-openapispec", "@kbn/router-utils": "link:packages/kbn-router-utils", "@kbn/routing-example-plugin": "link:examples/routing_example", "@kbn/rrule": "link:packages/kbn-rrule", "@kbn/rule-data-utils": "link:packages/kbn-rule-data-utils", "@kbn/rule-registry-plugin": "link:x-pack/plugins/rule_registry", - "@kbn/runtime-fields-plugin": "link:x-pack/plugins/runtime_fields", + "@kbn/runtime-fields-plugin": "link:x-pack/platform/plugins/private/runtime_fields", "@kbn/safer-lodash-set": "link:packages/kbn-safer-lodash-set", "@kbn/saml-provider-plugin": "link:x-pack/test/security_api_integration/plugins/saml_provider", "@kbn/sample-task-plugin": "link:x-pack/test/plugin_api_integration/plugins/sample_task_plugin", @@ -813,7 +816,7 @@ "@kbn/search-response-warnings": "link:packages/kbn-search-response-warnings", "@kbn/search-shared-ui": "link:x-pack/packages/search/shared_ui", "@kbn/search-types": "link:packages/kbn-search-types", - "@kbn/searchprofiler-plugin": "link:x-pack/plugins/searchprofiler", + "@kbn/searchprofiler-plugin": "link:x-pack/platform/plugins/shared/searchprofiler", "@kbn/security-api-key-management": "link:x-pack/packages/security/api_key_management", "@kbn/security-authorization-core": "link:x-pack/packages/security/authorization_core", "@kbn/security-authorization-core-common": "link:x-pack/packages/security/authorization_core_common", @@ -824,21 +827,21 @@ "@kbn/security-plugin-types-public": "link:x-pack/packages/security/plugin_types_public", "@kbn/security-plugin-types-server": "link:x-pack/packages/security/plugin_types_server", "@kbn/security-role-management-model": "link:x-pack/packages/security/role_management_model", - "@kbn/security-solution-distribution-bar": "link:x-pack/packages/security-solution/distribution_bar", - "@kbn/security-solution-ess": "link:x-pack/plugins/security_solution_ess", - "@kbn/security-solution-features": "link:x-pack/packages/security-solution/features", + "@kbn/security-solution-distribution-bar": "link:x-pack/solutions/security/packages/distribution_bar", + "@kbn/security-solution-ess": "link:x-pack/solutions/security/plugins/security_solution_ess", + "@kbn/security-solution-features": "link:x-pack/solutions/security/packages/features", "@kbn/security-solution-fixtures-plugin": "link:x-pack/test/cases_api_integration/common/plugins/security_solution", - "@kbn/security-solution-navigation": "link:x-pack/packages/security-solution/navigation", - "@kbn/security-solution-plugin": "link:x-pack/plugins/security_solution", - "@kbn/security-solution-serverless": "link:x-pack/plugins/security_solution_serverless", - "@kbn/security-solution-side-nav": "link:x-pack/packages/security-solution/side_nav", - "@kbn/security-solution-storybook-config": "link:x-pack/packages/security-solution/storybook/config", - "@kbn/security-solution-upselling": "link:x-pack/packages/security-solution/upselling", + "@kbn/security-solution-navigation": "link:x-pack/solutions/security/packages/navigation", + "@kbn/security-solution-plugin": "link:x-pack/solutions/security/plugins/security_solution", + "@kbn/security-solution-serverless": "link:x-pack/solutions/security/plugins/security_solution_serverless", + "@kbn/security-solution-side-nav": "link:x-pack/solutions/security/packages/side_nav", + "@kbn/security-solution-storybook-config": "link:x-pack/solutions/security/packages/storybook/config", + "@kbn/security-solution-upselling": "link:x-pack/solutions/security/packages/upselling", "@kbn/security-test-endpoints-plugin": "link:x-pack/test/security_functional/plugins/test_endpoints", "@kbn/security-ui-components": "link:x-pack/packages/security/ui_components", "@kbn/securitysolution-autocomplete": "link:packages/kbn-securitysolution-autocomplete", - "@kbn/securitysolution-data-table": "link:x-pack/packages/security-solution/data_table", - "@kbn/securitysolution-ecs": "link:packages/kbn-securitysolution-ecs", + "@kbn/securitysolution-data-table": "link:x-pack/solutions/security/packages/data_table", + "@kbn/securitysolution-ecs": "link:src/platform/packages/shared/kbn-securitysolution-ecs", "@kbn/securitysolution-endpoint-exceptions-common": "link:packages/kbn-securitysolution-endpoint-exceptions-common", "@kbn/securitysolution-es-utils": "link:packages/kbn-securitysolution-es-utils", "@kbn/securitysolution-exception-list-components": "link:packages/kbn-securitysolution-exception-list-components", @@ -857,20 +860,20 @@ "@kbn/securitysolution-t-grid": "link:packages/kbn-securitysolution-t-grid", "@kbn/securitysolution-utils": "link:packages/kbn-securitysolution-utils", "@kbn/server-http-tools": "link:packages/kbn-server-http-tools", - "@kbn/server-route-repository": "link:packages/kbn-server-route-repository", - "@kbn/server-route-repository-client": "link:packages/kbn-server-route-repository-client", - "@kbn/server-route-repository-utils": "link:packages/kbn-server-route-repository-utils", + "@kbn/server-route-repository": "link:src/platform/packages/shared/kbn-server-route-repository", + "@kbn/server-route-repository-client": "link:src/platform/packages/shared/kbn-server-route-repository-client", + "@kbn/server-route-repository-utils": "link:src/platform/packages/shared/kbn-server-route-repository-utils", "@kbn/serverless": "link:x-pack/plugins/serverless", "@kbn/serverless-common-settings": "link:packages/serverless/settings/common", - "@kbn/serverless-observability": "link:x-pack/plugins/serverless_observability", + "@kbn/serverless-observability": "link:x-pack/solutions/observability/plugins/serverless_observability", "@kbn/serverless-observability-settings": "link:packages/serverless/settings/observability_project", "@kbn/serverless-project-switcher": "link:packages/serverless/project_switcher", "@kbn/serverless-search": "link:x-pack/plugins/serverless_search", "@kbn/serverless-search-settings": "link:packages/serverless/settings/search_project", - "@kbn/serverless-security-settings": "link:packages/serverless/settings/security_project", + "@kbn/serverless-security-settings": "link:src/platform/packages/shared/serverless/settings/security_project", "@kbn/serverless-types": "link:packages/serverless/types", "@kbn/session-notifications-plugin": "link:test/plugin_functional/plugins/session_notifications", - "@kbn/session-view-plugin": "link:x-pack/plugins/session_view", + "@kbn/session-view-plugin": "link:x-pack/solutions/security/plugins/session_view", "@kbn/set-map": "link:packages/kbn-set-map", "@kbn/share-examples-plugin": "link:examples/share_examples", "@kbn/share-plugin": "link:src/plugins/share", @@ -925,15 +928,15 @@ "@kbn/shared-ux-tabbed-modal": "link:packages/shared-ux/modal/tabbed", "@kbn/shared-ux-table-persist": "link:packages/shared-ux/table_persist", "@kbn/shared-ux-utility": "link:packages/kbn-shared-ux-utility", - "@kbn/slo-plugin": "link:x-pack/plugins/observability_solution/slo", - "@kbn/slo-schema": "link:x-pack/packages/kbn-slo-schema", - "@kbn/snapshot-restore-plugin": "link:x-pack/plugins/snapshot_restore", + "@kbn/slo-plugin": "link:x-pack/solutions/observability/plugins/slo", + "@kbn/slo-schema": "link:x-pack/platform/packages/shared/kbn-slo-schema", + "@kbn/snapshot-restore-plugin": "link:x-pack/platform/plugins/private/snapshot_restore", "@kbn/sort-predicates": "link:packages/kbn-sort-predicates", "@kbn/spaces-plugin": "link:x-pack/plugins/spaces", "@kbn/spaces-test-plugin": "link:x-pack/test/spaces_api_integration/common/plugins/spaces_test_plugin", - "@kbn/sse-utils": "link:packages/kbn-sse-utils", - "@kbn/sse-utils-client": "link:packages/kbn-sse-utils-client", - "@kbn/sse-utils-server": "link:packages/kbn-sse-utils-server", + "@kbn/sse-utils": "link:src/platform/packages/shared/kbn-sse-utils", + "@kbn/sse-utils-client": "link:src/platform/packages/shared/kbn-sse-utils-client", + "@kbn/sse-utils-server": "link:src/platform/packages/shared/kbn-sse-utils-server", "@kbn/stack-alerts-plugin": "link:x-pack/plugins/stack_alerts", "@kbn/stack-connectors-plugin": "link:x-pack/plugins/stack_connectors", "@kbn/stack-management-usage-test-plugin": "link:x-pack/test/usage_collection/plugins/stack_management_usage_test", @@ -943,7 +946,7 @@ "@kbn/std": "link:packages/kbn-std", "@kbn/streams-app-plugin": "link:x-pack/solutions/observability/plugins/streams_app", "@kbn/streams-plugin": "link:x-pack/solutions/observability/plugins/streams", - "@kbn/synthetics-plugin": "link:x-pack/plugins/observability_solution/synthetics", + "@kbn/synthetics-plugin": "link:x-pack/solutions/observability/plugins/synthetics", "@kbn/synthetics-private-location": "link:x-pack/packages/kbn-synthetics-private-location", "@kbn/task-manager-fixture-plugin": "link:x-pack/test/alerting_api_integration/common/plugins/task_manager_fixture", "@kbn/task-manager-performance-plugin": "link:x-pack/test/plugin_api_perf/plugins/task_manager_performance", @@ -957,8 +960,8 @@ "@kbn/testing-embedded-lens-plugin": "link:x-pack/examples/testing_embedded_lens", "@kbn/third-party-lens-navigation-prompt-plugin": "link:x-pack/examples/third_party_lens_navigation_prompt", "@kbn/third-party-vis-lens-example-plugin": "link:x-pack/examples/third_party_vis_lens_example", - "@kbn/threat-intelligence-plugin": "link:x-pack/plugins/threat_intelligence", - "@kbn/timelines-plugin": "link:x-pack/plugins/timelines", + "@kbn/threat-intelligence-plugin": "link:x-pack/solutions/security/plugins/threat_intelligence", + "@kbn/timelines-plugin": "link:x-pack/solutions/security/plugins/timelines", "@kbn/timelion-grammar": "link:packages/kbn-timelion-grammar", "@kbn/timerange": "link:packages/kbn-timerange", "@kbn/tinymath": "link:packages/kbn-tinymath", @@ -969,7 +972,7 @@ "@kbn/triggers-actions-ui-plugin": "link:x-pack/plugins/triggers_actions_ui", "@kbn/triggers-actions-ui-types": "link:packages/kbn-triggers-actions-ui-types", "@kbn/try-in-console": "link:packages/kbn-try-in-console", - "@kbn/typed-react-router-config": "link:packages/kbn-typed-react-router-config", + "@kbn/typed-react-router-config": "link:src/platform/packages/shared/kbn-typed-react-router-config", "@kbn/ui-actions-browser": "link:packages/kbn-ui-actions-browser", "@kbn/ui-actions-enhanced-examples-plugin": "link:x-pack/examples/ui_actions_enhanced_examples", "@kbn/ui-actions-enhanced-plugin": "link:src/plugins/ui_actions_enhanced", @@ -989,9 +992,9 @@ "@kbn/unified-histogram-plugin": "link:src/plugins/unified_histogram", "@kbn/unified-search-plugin": "link:src/plugins/unified_search", "@kbn/unsaved-changes-badge": "link:packages/kbn-unsaved-changes-badge", - "@kbn/unsaved-changes-prompt": "link:packages/kbn-unsaved-changes-prompt", + "@kbn/unsaved-changes-prompt": "link:src/platform/packages/shared/kbn-unsaved-changes-prompt", "@kbn/upgrade-assistant-plugin": "link:x-pack/plugins/upgrade_assistant", - "@kbn/uptime-plugin": "link:x-pack/plugins/observability_solution/uptime", + "@kbn/uptime-plugin": "link:x-pack/solutions/observability/plugins/uptime", "@kbn/url-drilldown-plugin": "link:x-pack/plugins/drilldowns/url_drilldown", "@kbn/url-forwarding-plugin": "link:src/plugins/url_forwarding", "@kbn/usage-collection-plugin": "link:src/plugins/usage_collection", @@ -1003,7 +1006,7 @@ "@kbn/utility-types": "link:packages/kbn-utility-types", "@kbn/utility-types-jest": "link:packages/kbn-utility-types-jest", "@kbn/utils": "link:packages/kbn-utils", - "@kbn/ux-plugin": "link:x-pack/plugins/observability_solution/ux", + "@kbn/ux-plugin": "link:x-pack/solutions/observability/plugins/ux", "@kbn/v8-profiler-examples-plugin": "link:examples/v8_profiler_examples", "@kbn/vis-default-editor-plugin": "link:src/plugins/vis_default_editor", "@kbn/vis-type-gauge-plugin": "link:src/plugins/vis_types/gauge", @@ -1021,7 +1024,7 @@ "@kbn/visualization-ui-components": "link:packages/kbn-visualization-ui-components", "@kbn/visualization-utils": "link:packages/kbn-visualization-utils", "@kbn/visualizations-plugin": "link:src/plugins/visualizations", - "@kbn/watcher-plugin": "link:x-pack/plugins/watcher", + "@kbn/watcher-plugin": "link:x-pack/platform/plugins/private/watcher", "@kbn/xstate-utils": "link:packages/kbn-xstate-utils", "@kbn/zod": "link:packages/kbn-zod", "@kbn/zod-helpers": "link:packages/kbn-zod-helpers", @@ -1130,7 +1133,7 @@ "del": "^6.1.0", "diff": "^5.1.0", "dotenv": "^16.4.5", - "elastic-apm-node": "^4.8.1", + "elastic-apm-node": "^4.9.0", "email-addresses": "^5.0.0", "eventsource-parser": "^3.0.0", "execa": "^5.1.1", @@ -1145,6 +1148,7 @@ "fnv-plus": "^1.3.1", "formik": "^2.4.6", "fp-ts": "^2.3.1", + "fuse.js": "^7.0.0", "get-port": "^5.0.0", "getopts": "^2.2.5", "getos": "^3.1.0", @@ -1168,7 +1172,7 @@ "joi-to-json": "^4.3.0", "jquery": "^3.5.0", "js-search": "^1.4.3", - "js-sha256": "^0.9.0", + "js-sha256": "^0.11.0", "js-yaml": "^4.1.0", "json-schema-to-ts": "^2.9.1", "json-stable-stringify": "^1.0.1", @@ -1446,6 +1450,7 @@ "@kbn/es": "link:packages/kbn-es", "@kbn/es-archiver": "link:packages/kbn-es-archiver", "@kbn/eslint-config": "link:packages/kbn-eslint-config", + "@kbn/eslint-plugin-css": "link:packages/kbn-eslint-plugin-css", "@kbn/eslint-plugin-disable": "link:packages/kbn-eslint-plugin-disable", "@kbn/eslint-plugin-eslint": "link:packages/kbn-eslint-plugin-eslint", "@kbn/eslint-plugin-i18n": "link:packages/kbn-eslint-plugin-i18n", @@ -1487,6 +1492,7 @@ "@kbn/plugin-generator": "link:packages/kbn-plugin-generator", "@kbn/plugin-helpers": "link:packages/kbn-plugin-helpers", "@kbn/product-doc-artifact-builder": "link:x-pack/packages/ai-infra/product-doc-artifact-builder", + "@kbn/relocate": "link:packages/kbn-relocate", "@kbn/repo-file-maps": "link:packages/kbn-repo-file-maps", "@kbn/repo-linter": "link:packages/kbn-repo-linter", "@kbn/repo-path": "link:packages/kbn-repo-path", @@ -1501,7 +1507,7 @@ "@kbn/sort-package-json": "link:packages/kbn-sort-package-json", "@kbn/stdio-dev-helpers": "link:packages/kbn-stdio-dev-helpers", "@kbn/storybook": "link:packages/kbn-storybook", - "@kbn/synthetics-e2e": "link:x-pack/plugins/observability_solution/synthetics/e2e", + "@kbn/synthetics-e2e": "link:x-pack/solutions/observability/plugins/synthetics/e2e", "@kbn/telemetry-tools": "link:packages/kbn-telemetry-tools", "@kbn/test": "link:packages/kbn-test", "@kbn/test-eui-helpers": "link:packages/kbn-test-eui-helpers", @@ -1523,7 +1529,7 @@ "@octokit/rest": "^17.11.2", "@parcel/watcher": "^2.1.0", "@playwright/test": "1.49.0", - "@redocly/cli": "^1.25.15", + "@redocly/cli": "^1.26.0", "@statoscope/webpack-plugin": "^5.28.2", "@storybook/addon-a11y": "^6.5.16", "@storybook/addon-actions": "^6.5.16", @@ -1560,6 +1566,7 @@ "@types/classnames": "^2.2.9", "@types/cli-progress": "^3.11.5", "@types/color": "^3.0.3", + "@types/cssstyle": "^2.2.4", "@types/cytoscape": "^3.14.0", "@types/d3": "^3.5.43", "@types/d3-array": "^2.12.1", @@ -1613,10 +1620,9 @@ "@types/mime": "^2.0.1", "@types/mime-types": "^2.1.0", "@types/minimatch": "^2.0.29", - "@types/minimist": "^1.2.2", + "@types/minimist": "^1.2.5", "@types/mock-fs": "^4.13.1", "@types/moment-duration-format": "^2.2.3", - "@types/multistream": "^4.1.0", "@types/mustache": "^0.8.31", "@types/nock": "^10.0.3", "@types/node": "20.10.5", @@ -1631,7 +1637,6 @@ "@types/pbf": "3.0.2", "@types/pdfmake": "^0.2.2", "@types/picomatch": "^2.3.0", - "@types/pidusage": "^2.0.2", "@types/pixelmatch": "^5.2.4", "@types/pngjs": "^6.0.5", "@types/prop-types": "^15.7.5", @@ -1710,6 +1715,7 @@ "css-loader": "^3.4.2", "cssnano": "^5.1.12", "cssnano-preset-default": "^5.2.12", + "cssstyle": "^4.1.0", "csstype": "^3.0.2", "cypress": "13.15.2", "cypress-axe": "^1.5.0", @@ -1785,7 +1791,7 @@ "micromatch": "^4.0.8", "mini-css-extract-plugin": "1.1.0", "minimist": "^1.2.6", - "mocha": "^10.1.0", + "mocha": "^10.3.0", "mocha-junit-reporter": "^2.0.2", "mocha-multi-reporters": "^1.5.1", "mochawesome": "^7.1.3", @@ -1793,7 +1799,6 @@ "mock-fs": "^5.1.2", "ms-chromium-edge-driver": "^0.5.1", "msw": "^2.4.12", - "multistream": "^4.1.0", "mutation-observer": "^1.0.3", "native-hdr-histogram": "^1.0.0", "nock": "12.0.3", @@ -1804,7 +1809,6 @@ "p-reflect": "2.1.0", "peggy": "^1.2.0", "picomatch": "^2.3.1", - "pidusage": "^3.0.2", "pirates": "^4.0.1", "piscina": "^3.2.0", "pixelmatch": "^5.3.0", @@ -1842,7 +1846,7 @@ "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.1", "table": "^6.8.2", - "tape": "^5.0.1", + "tape": "^5.9.0", "terser": "^5.36.0", "terser-webpack-plugin": "^4.2.3", "tough-cookie": "^5.0.0", diff --git a/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts index ab9d19b6843e5..ab4de0e45fc99 100644 --- a/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts +++ b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts @@ -128,4 +128,31 @@ describe('trackPerformanceMeasureEntries', () => { value1: 'value1', }); }); + + test('reports an analytics event with query metadata', () => { + setupMockPerformanceObserver([ + { + name: '/', + entryType: 'measure', + startTime: 100, + duration: 1000, + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + meta: { + queryRangeSecs: 86400, + queryOffsetSecs: 0, + }, + }, + }, + ]); + trackPerformanceMeasureEntries(analyticsClientMock, true); + + expect(analyticsClientMock.reportEvent).toHaveBeenCalledTimes(1); + expect(analyticsClientMock.reportEvent).toHaveBeenCalledWith('performance_metric', { + duration: 1000, + eventName: 'kibana:plugin_render_time', + meta: { target: '/', query_range_secs: 86400, query_offset_secs: 0 }, + }); + }); }); diff --git a/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts index 38a0a28bb3893..fc46230f85c2c 100644 --- a/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts +++ b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts @@ -27,6 +27,7 @@ export function trackPerformanceMeasureEntries(analytics: AnalyticsClient, isDev if (entry.entryType === 'measure' && entry.detail?.type === 'kibana:performance') { const target = entry?.name; const duration = entry.duration; + const meta = entry.detail?.meta; const customMetrics = Object.keys(entry.detail?.customMetrics ?? {}).reduce( (acc, metric) => { if (ALLOWED_CUSTOM_METRICS_KEYS_VALUES.includes(metric)) { @@ -72,6 +73,8 @@ export function trackPerformanceMeasureEntries(analytics: AnalyticsClient, isDev ...customMetrics, meta: { target, + query_range_secs: meta?.queryRangeSecs, + query_offset_secs: meta?.queryOffsetSecs, }, }); } catch (error) { diff --git a/packages/core/application/core-application-browser-internal/integration_tests/router.test.tsx b/packages/core/application/core-application-browser-internal/integration_tests/router.test.tsx index 26245733dd329..f38a28696db92 100644 --- a/packages/core/application/core-application-browser-internal/integration_tests/router.test.tsx +++ b/packages/core/application/core-application-browser-internal/integration_tests/router.test.tsx @@ -120,7 +120,7 @@ describe('AppRouter', () => { expect(app1.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /app/app1 html: App 1
" @@ -132,7 +132,7 @@ describe('AppRouter', () => { expect(app1Unmount).toHaveBeenCalled(); expect(app2.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /app/app2 html:
App 2
" @@ -146,7 +146,7 @@ describe('AppRouter', () => { expect(standardApp.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /app/app1 html: App 1
" @@ -158,7 +158,7 @@ describe('AppRouter', () => { expect(standardAppUnmount).toHaveBeenCalled(); expect(chromelessApp.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /chromeless-a/path html:
Chromeless A
" @@ -170,7 +170,7 @@ describe('AppRouter', () => { expect(chromelessAppUnmount).toHaveBeenCalled(); expect(standardApp.mounter.mount).toHaveBeenCalledTimes(2); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /app/app1 html: App 1
" @@ -184,7 +184,7 @@ describe('AppRouter', () => { expect(chromelessAppA.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /chromeless-a/path html:
Chromeless A
" @@ -196,7 +196,7 @@ describe('AppRouter', () => { expect(chromelessAppAUnmount).toHaveBeenCalled(); expect(chromelessAppB.mounter.mount).toHaveBeenCalled(); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /chromeless-b/path html:
Chromeless B
" @@ -208,7 +208,7 @@ describe('AppRouter', () => { expect(chromelessAppBUnmount).toHaveBeenCalled(); expect(chromelessAppA.mounter.mount).toHaveBeenCalledTimes(2); expect(dom?.html()).toMatchInlineSnapshot(` - "
+ "
basename: /chromeless-a/path html:
Chromeless A
" diff --git a/packages/core/application/core-application-browser-internal/src/ui/app_container.scss b/packages/core/application/core-application-browser-internal/src/ui/app_container.scss deleted file mode 100644 index d30db740505d1..0000000000000 --- a/packages/core/application/core-application-browser-internal/src/ui/app_container.scss +++ /dev/null @@ -1,25 +0,0 @@ -.appContainer__loading { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: $euiZLevel1; - animation-name: appContainerFadeIn; - animation-iteration-count: 1; - animation-timing-function: ease-in; - animation-duration: 2s; -} - -@keyframes appContainerFadeIn { - 0% { - opacity: 0; - } - - 50% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} diff --git a/packages/core/application/core-application-browser-internal/src/ui/app_container.tsx b/packages/core/application/core-application-browser-internal/src/ui/app_container.tsx index b175cd30d992e..072253a6f9140 100644 --- a/packages/core/application/core-application-browser-internal/src/ui/app_container.tsx +++ b/packages/core/application/core-application-browser-internal/src/ui/app_container.tsx @@ -7,11 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import './app_container.scss'; - +import { css, keyframes } from '@emotion/react'; import { Observable } from 'rxjs'; import React, { Fragment, FC, useLayoutEffect, useRef, useState, MutableRefObject } from 'react'; -import { EuiLoadingElastic, EuiLoadingSpinner } from '@elastic/eui'; +import { EuiLoadingElastic, EuiLoadingSpinner, useEuiTheme } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { CoreTheme } from '@kbn/core-theme-browser'; @@ -129,11 +128,29 @@ export const AppContainer: FC = ({ }; const AppLoadingPlaceholder: FC<{ showPlainSpinner: boolean }> = ({ showPlainSpinner }) => { + const { euiTheme } = useEuiTheme(); + const appContainerFadeIn = keyframes({ + '0%': { opacity: 0 }, + '50%': { opacity: 0 }, + '100%': { opacity: 1 }, + }); + const appContainerStyles = css({ + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + zIndex: euiTheme.levels.header, + animationName: appContainerFadeIn, + animationIterationCount: 1, + animationTimingFunction: 'ease-in', + animationDuration: '2s', + }); + if (showPlainSpinner) { return ( = ({ showPlainSpi } return ( css` + #kibana-body { + // DO NOT ADD ANY OVERFLOW BEHAVIORS HERE + // It will break the sticky navigation + min-height: 100%; + display: flex; + flex-direction: column; + } + + // Affixes a div to restrict the position of charts tooltip to the visible viewport minus the header + #app-fixed-viewport { + pointer-events: none; + visibility: hidden; + position: fixed; + top: var(--kbnAppHeadersOffset, var(--euiFixedHeadersOffset, 0)); + right: 0; + bottom: 0; + left: 0; + } + + .kbnAppWrapper { + // DO NOT ADD ANY OTHER STYLES TO THIS SELECTOR + // This a very nested dependency happening in "all" apps + display: flex; + flex-flow: column nowrap; + flex-grow: 1; + z-index: 0; // This effectively puts every high z-index inside the scope of this wrapper to it doesn't interfere with the header and/or overlay mask + position: relative; // This is temporary for apps that relied on this being present on \`.application\` + } + + .kbnBody { + padding-top: var(--euiFixedHeadersOffset, 0); + } + + // Conditionally override :root CSS fixed header variable. Updating \`--euiFixedHeadersOffset\` + //on the body will cause all child EUI components to automatically update their offsets + .kbnBody--hasHeaderBanner { + --euiFixedHeadersOffset: var(--kbnHeaderOffsetWithBanner); + + // Offset fixed EuiHeaders by the top banner + .euiHeader[data-fixed-header] { + margin-top: var(--kbnHeaderBannerHeight); + } + + // Prevent banners from covering full screen data grids + .euiDataGrid--fullScreen { + height: calc(100vh - var(--kbnHeaderBannerHeight)); + top: var(--kbnHeaderBannerHeight); + } + } + + // Set a body CSS variable for the app container to use - calculates the total + // height of all fixed headers + the sticky action menu toolbar + .kbnBody--hasProjectActionMenu { + --kbnAppHeadersOffset: calc( + var(--kbnHeaderOffset) + var(--kbnProjectHeaderAppActionMenuHeight) + ); + + &.kbnBody--hasHeaderBanner { + --kbnAppHeadersOffset: calc( + var(--kbnHeaderOffsetWithBanner) + var(--kbnProjectHeaderAppActionMenuHeight) + ); + } + } + + .kbnBody--chromeHidden { + // stylelint-disable-next-line length-zero-no-unit + --euiFixedHeadersOffset: 0px; + + &.kbnBody--hasHeaderBanner { + --euiFixedHeadersOffset: var(--kbnHeaderBannerHeight); + } + + &.kbnBody--hasProjectActionMenu { + --kbnAppHeadersOffset: var(--euiFixedHeadersOffset, 0); + } + } +`; + +export const bannerStyles = (euiTheme: UseEuiTheme['euiTheme']) => css` + .header__topBanner { + position: fixed; + top: 0; + left: 0; + height: var(--kbnHeaderBannerHeight); + width: 100%; + z-index: ${euiTheme.levels.header}; + } + + .header__topBannerContainer { + height: 100%; + width: 100%; + } +`; + +export const chromeStyles = (euiTheme: UseEuiTheme['euiTheme']) => css` + .euiDataGrid__restrictBody { + .headerGlobalNav, + .kbnQueryBar { + display: none; + } + } + + .euiDataGrid__restrictBody.euiBody--headerIsFixed { + .euiFlyout { + top: 0; + height: 100%; + } + } + + .chrHeaderHelpMenu__version { + text-transform: none; + } + + .chrHeaderBadge__wrapper { + align-self: center; + margin-right: ${euiTheme.size.base}; + } + + .header__toggleNavButtonSection { + .euiBody--collapsibleNavIsDocked & { + display: none; + } + } + + .header__breadcrumbsWithExtensionContainer { + overflow: hidden; // enables text-ellipsis in the last breadcrumb + .euiHeaderBreadcrumbs { + // stop breadcrumbs from growing. + // this makes the extension appear right next to the last breadcrumb + flex-grow: 0; + margin-right: 0; + + overflow: hidden; // enables text-ellipsis in the last breadcrumb + } + } + .header__breadcrumbsAppendExtension { + flex-grow: 1; + } +`; + +export const GlobalAppStyle = () => { + const { euiTheme } = useEuiTheme(); + return ( + + ); +}; diff --git a/packages/core/apps/core-apps-browser-internal/src/status/lib/load_status.ts b/packages/core/apps/core-apps-browser-internal/src/status/lib/load_status.ts index e8519030c3fdf..189f42ee448ad 100644 --- a/packages/core/apps/core-apps-browser-internal/src/status/lib/load_status.ts +++ b/packages/core/apps/core-apps-browser-internal/src/status/lib/load_status.ts @@ -155,7 +155,9 @@ function formatStatus(id: string, status: ServiceStatus): FormattedStatus { }, }; } - +/** + * Maps status to health color for frontend views + */ export const STATUS_LEVEL_UI_ATTRS: Record = { critical: { title: i18n.translate('core.status.redTitle', { diff --git a/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_route_handler_context.ts b/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_route_handler_context.ts index 702a3ea10941d..b3ab51bf64e34 100644 --- a/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_route_handler_context.ts +++ b/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_route_handler_context.ts @@ -13,6 +13,7 @@ import type { DeprecationsRequestHandlerContext, DeprecationsClient, } from '@kbn/core-deprecations-server'; +import type { KibanaRequest } from '@kbn/core-http-server'; import type { InternalDeprecationsServiceStart } from './deprecations_service'; /** @@ -25,14 +26,16 @@ export class CoreDeprecationsRouteHandlerContext implements DeprecationsRequestH constructor( private readonly deprecationsStart: InternalDeprecationsServiceStart, private readonly elasticsearchRouterHandlerContext: CoreElasticsearchRouteHandlerContext, - private readonly savedObjectsRouterHandlerContext: CoreSavedObjectsRouteHandlerContext + private readonly savedObjectsRouterHandlerContext: CoreSavedObjectsRouteHandlerContext, + private readonly request: KibanaRequest ) {} public get client() { if (this.#client == null) { this.#client = this.deprecationsStart.asScopedToClient( this.elasticsearchRouterHandlerContext.client, - this.savedObjectsRouterHandlerContext.client + this.savedObjectsRouterHandlerContext.client, + this.request ); } return this.#client; diff --git a/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.test.ts b/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.test.ts index 0ea283b6eb5d6..a517b8300e935 100644 --- a/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.test.ts +++ b/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.test.ts @@ -12,7 +12,7 @@ import { registerConfigDeprecationsInfoMock, } from './deprecations_service.test.mocks'; import { mockCoreContext } from '@kbn/core-base-server-mocks'; -import { httpServiceMock } from '@kbn/core-http-server-mocks'; +import { httpServerMock, httpServiceMock } from '@kbn/core-http-server-mocks'; import { coreUsageDataServiceMock } from '@kbn/core-usage-data-server-mocks'; import { configServiceMock } from '@kbn/config-mocks'; import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; @@ -83,12 +83,13 @@ describe('DeprecationsService', () => { it('returns client with #getAllDeprecations method', async () => { const esClient = elasticsearchServiceMock.createScopedClusterClient(); const savedObjectsClient = savedObjectsClientMock.create(); + const request = httpServerMock.createKibanaRequest(); const deprecationsService = new DeprecationsService(coreContext); await deprecationsService.setup(deprecationsCoreSetupDeps); const start = deprecationsService.start(); - const deprecationsClient = start.asScopedToClient(esClient, savedObjectsClient); + const deprecationsClient = start.asScopedToClient(esClient, savedObjectsClient, request); expect(deprecationsClient.getAllDeprecations).toBeDefined(); }); diff --git a/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.ts b/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.ts index c0a0ef0f88c7b..8189172a5fe12 100644 --- a/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.ts +++ b/packages/core/deprecations/core-deprecations-server-internal/src/deprecations_service.ts @@ -20,19 +20,25 @@ import type { DeprecationsClient, } from '@kbn/core-deprecations-server'; import { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; +import type { KibanaRequest } from '@kbn/core-http-server'; import { DeprecationsFactory } from './deprecations_factory'; import { registerRoutes } from './routes'; import { config as deprecationConfig, DeprecationConfigType } from './deprecation_config'; import { registerApiDeprecationsInfo, registerConfigDeprecationsInfo } from './deprecations'; +/** + * Deprecation Service: Internal Start contract + */ export interface InternalDeprecationsServiceStart { /** * Creates a {@link DeprecationsClient} with provided SO client and ES client. - * + * @param esClient Scoped Elasticsearch client + * @param savedObjectsClient Scoped SO Client */ asScopedToClient( esClient: IScopedClusterClient, - savedObjectsClient: SavedObjectsClientContract + savedObjectsClient: SavedObjectsClientContract, + request: KibanaRequest ): DeprecationsClient; } @@ -113,13 +119,19 @@ export class DeprecationsService private createScopedDeprecations(): ( esClient: IScopedClusterClient, - savedObjectsClient: SavedObjectsClientContract + savedObjectsClient: SavedObjectsClientContract, + request: KibanaRequest ) => DeprecationsClient { - return (esClient: IScopedClusterClient, savedObjectsClient: SavedObjectsClientContract) => { + return ( + esClient: IScopedClusterClient, + savedObjectsClient: SavedObjectsClientContract, + request: KibanaRequest + ) => { return { getAllDeprecations: this.deprecationsFactory!.getAllDeprecations.bind(null, { savedObjectsClient, esClient, + request, }), }; }; diff --git a/packages/core/deprecations/core-deprecations-server-internal/src/mocks/deprecations_registry.mock.ts b/packages/core/deprecations/core-deprecations-server-internal/src/mocks/deprecations_registry.mock.ts index 9280243527207..eca729871bc1e 100644 --- a/packages/core/deprecations/core-deprecations-server-internal/src/mocks/deprecations_registry.mock.ts +++ b/packages/core/deprecations/core-deprecations-server-internal/src/mocks/deprecations_registry.mock.ts @@ -12,6 +12,7 @@ import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-m import type { GetDeprecationsContext } from '@kbn/core-deprecations-server'; import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import type { DeprecationsRegistry } from '../deprecations_registry'; +import { httpServerMock } from '@kbn/core-http-server-mocks'; type DeprecationsRegistryContract = PublicMethodsOf; @@ -28,6 +29,7 @@ const createGetDeprecationsContextMock = () => { const mocked: jest.Mocked = { esClient: elasticsearchClientMock.createScopedClusterClient(), savedObjectsClient: savedObjectsClientMock.create(), + request: httpServerMock.createKibanaRequest(), }; return mocked; diff --git a/packages/core/deprecations/core-deprecations-server/src/contracts.ts b/packages/core/deprecations/core-deprecations-server/src/contracts.ts index eecd0a8c7e1ac..4391ac2c1f68f 100644 --- a/packages/core/deprecations/core-deprecations-server/src/contracts.ts +++ b/packages/core/deprecations/core-deprecations-server/src/contracts.ts @@ -11,6 +11,7 @@ import type { MaybePromise } from '@kbn/utility-types'; import type { DeprecationsDetails } from '@kbn/core-deprecations-common'; import type { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import type { KibanaRequest } from '@kbn/core-http-server'; /** * The deprecations service provides a way for the Kibana platform to communicate deprecated @@ -87,27 +88,51 @@ import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-ser * @public */ export interface DeprecationsServiceSetup { + /** + * Registers deprecation messages or notices for a specific feature or functionality + * within the application. This allows developers to flag certain behaviors or APIs + * as deprecated, providing guidance and warnings for future deprecation plans. + * + * @param {RegisterDeprecationsConfig} deprecationContext - The configuration object containing + * information about the deprecated features, including messages, corrective actions, + * and any relevant metadata to inform users or developers about the deprecation. + */ registerDeprecations: (deprecationContext: RegisterDeprecationsConfig) => void; } /** + * Options to provide when registering deprecations via {@link DeprecationsServiceSetup.registerDeprecations}. * @public */ export interface RegisterDeprecationsConfig { + /** + * Method called when the user wants to list any existing deprecations. + * Returns the list of deprecation messages to warn about. + * @param {GetDeprecationsContext} context Scoped clients and helpers to ease fetching the deprecations. + */ getDeprecations: (context: GetDeprecationsContext) => MaybePromise; } /** + * Scoped clients and helpers to ease fetching the deprecations. * @public */ export interface GetDeprecationsContext { + /** Elasticsearch client scoped to the current user */ esClient: IScopedClusterClient; + /** Saved Objects client scoped to the current user and space */ savedObjectsClient: SavedObjectsClientContract; + request: KibanaRequest; } /** + * Provides a method to scope the {@link DeprecationsServiceSetup | Deprecations Service} to a specific domain. * @public */ export interface DeprecationRegistryProvider { + /** + * Returns the {@link DeprecationsServiceSetup | Deprecations Service} scoped to a specific domain. + * @param domainId Domain ID to categorize the deprecations reported under it. + */ getRegistry: (domainId: string) => DeprecationsServiceSetup; } diff --git a/packages/core/deprecations/core-deprecations-server/src/request_handler_context.ts b/packages/core/deprecations/core-deprecations-server/src/request_handler_context.ts index e75df37aa2c6e..fc5990cd65028 100644 --- a/packages/core/deprecations/core-deprecations-server/src/request_handler_context.ts +++ b/packages/core/deprecations/core-deprecations-server/src/request_handler_context.ts @@ -15,6 +15,9 @@ import type { DomainDeprecationDetails } from '@kbn/core-deprecations-common'; * @public */ export interface DeprecationsClient { + /** + * Fetch all Kibana deprecations. + */ getAllDeprecations: () => Promise; } @@ -23,5 +26,8 @@ export interface DeprecationsClient { * @public */ export interface DeprecationsRequestHandlerContext { + /** + * {@link DeprecationsClient | Deprecations client} exposed in the request handler context. + */ client: DeprecationsClient; } diff --git a/packages/core/deprecations/core-deprecations-server/tsconfig.json b/packages/core/deprecations/core-deprecations-server/tsconfig.json index fa09534af0b92..0179bace38bed 100644 --- a/packages/core/deprecations/core-deprecations-server/tsconfig.json +++ b/packages/core/deprecations/core-deprecations-server/tsconfig.json @@ -15,6 +15,7 @@ "@kbn/core-deprecations-common", "@kbn/core-elasticsearch-server", "@kbn/core-saved-objects-api-server", + "@kbn/core-http-server", ], "exclude": [ "target/**/*", diff --git a/packages/core/http/core-http-request-handler-context-server-internal/src/core_route_handler_context.ts b/packages/core/http/core-http-request-handler-context-server-internal/src/core_route_handler_context.ts index 376eb5a2bd24f..3f7136a1a97d5 100644 --- a/packages/core/http/core-http-request-handler-context-server-internal/src/core_route_handler_context.ts +++ b/packages/core/http/core-http-request-handler-context-server-internal/src/core_route_handler_context.ts @@ -111,7 +111,8 @@ export class CoreRouteHandlerContext implements CoreRequestHandlerContext { this.#deprecations = new CoreDeprecationsRouteHandlerContext( this.coreStart.deprecations, this.elasticsearch, - this.savedObjects + this.savedObjects, + this.request ); } return this.#deprecations; diff --git a/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts b/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts index f10d2cb3b3ac4..a0cadaacfbf7b 100644 --- a/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts +++ b/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts @@ -220,6 +220,16 @@ describe('RouteSecurity validation', () => { expect(() => validRouteSecurity(routeSecurity)).not.toThrow(); }); + it('should pass validation when operator privileges are combined with superuser', () => { + const routeSecurity = { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator, ReservedPrivilegesSet.superuser], + }, + }; + + expect(() => validRouteSecurity(routeSecurity)).not.toThrow(); + }); + it('should fail validation when anyRequired and allRequired have the same values', () => { const invalidRouteSecurity = { authz: { @@ -263,6 +273,20 @@ describe('RouteSecurity validation', () => { ); }); + it('should fail validation when allRequired has duplicate entries', () => { + const invalidRouteSecurity = { + authz: { + requiredPrivileges: [ + { anyRequired: ['privilege4', 'privilege5'], allRequired: ['privilege1', 'privilege1'] }, + ], + }, + }; + + expect(() => validRouteSecurity(invalidRouteSecurity)).toThrowErrorMatchingInlineSnapshot( + `"[authz.requiredPrivileges]: allRequired privileges must contain unique values"` + ); + }); + it('should fail validation when anyRequired has duplicates in multiple privilege entries', () => { const invalidRouteSecurity = { authz: { @@ -289,7 +313,7 @@ describe('RouteSecurity validation', () => { }; expect(() => validRouteSecurity(invalidRouteSecurity)).toThrowErrorMatchingInlineSnapshot( - `"[authz.requiredPrivileges]: Combining superuser with other privileges is redundant, superuser privileges set can be only used as a standalone privilege."` + `"[authz.requiredPrivileges]: Using superuser privileges in anyRequired is not allowed"` ); }); @@ -304,4 +328,41 @@ describe('RouteSecurity validation', () => { `"[authz.requiredPrivileges]: Combining superuser with other privileges is redundant, superuser privileges set can be only used as a standalone privilege."` ); }); + + it('should fail validation when anyRequired has operator privileges set', () => { + const invalidRouteSecurity = { + authz: { + requiredPrivileges: [ + { anyRequired: ['privilege1', 'privilege2'], allRequired: ['privilege4'] }, + { anyRequired: ['privilege5', ReservedPrivilegesSet.operator] }, + ], + }, + }; + + expect(() => validRouteSecurity(invalidRouteSecurity)).toThrowErrorMatchingInlineSnapshot( + `"[authz.requiredPrivileges]: Using operator privileges in anyRequired is not allowed"` + ); + }); + + it('should fail validation when operator privileges set is used as standalone', () => { + expect(() => + validRouteSecurity({ + authz: { + requiredPrivileges: [{ allRequired: [ReservedPrivilegesSet.operator] }], + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[authz.requiredPrivileges]: Operator privilege requires at least one additional non-operator privilege to be defined"` + ); + + expect(() => + validRouteSecurity({ + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator], + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[authz.requiredPrivileges]: Operator privilege requires at least one additional non-operator privilege to be defined"` + ); + }); }); diff --git a/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts b/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts index 65073f9a66ec6..ec54c5e61ce0d 100644 --- a/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts +++ b/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts @@ -50,15 +50,33 @@ const requiredPrivilegesSchema = schema.arrayOf( } }); + if (anyRequired.includes(ReservedPrivilegesSet.superuser)) { + return 'Using superuser privileges in anyRequired is not allowed'; + } + + const hasSuperuserInAllRequired = allRequired.includes(ReservedPrivilegesSet.superuser); + const hasOperatorInAllRequired = allRequired.includes(ReservedPrivilegesSet.operator); + // Combining superuser with other privileges is redundant. // If user is a superuser, they inherently have access to all the privileges that may come with other roles. + // The exception is when superuser and operator are the only required privileges. if ( - anyRequired.includes(ReservedPrivilegesSet.superuser) || - (allRequired.includes(ReservedPrivilegesSet.superuser) && allRequired.length > 1) + hasSuperuserInAllRequired && + allRequired.length > 1 && + !(hasOperatorInAllRequired && allRequired.length === 2) ) { return 'Combining superuser with other privileges is redundant, superuser privileges set can be only used as a standalone privilege.'; } + // Operator privilege requires at least one additional non-operator privilege to be defined, that's why it's not allowed in anyRequired. + if (anyRequired.includes(ReservedPrivilegesSet.operator)) { + return 'Using operator privileges in anyRequired is not allowed'; + } + + if (hasOperatorInAllRequired && allRequired.length === 1) { + return 'Operator privilege requires at least one additional non-operator privilege to be defined'; + } + if (anyRequired.length && allRequired.length) { for (const privilege of anyRequired) { if (allRequired.includes(privilege)) { @@ -68,12 +86,20 @@ const requiredPrivilegesSchema = schema.arrayOf( } if (anyRequired.length) { - const uniquePrivileges = new Set([...anyRequired]); + const uniqueAnyPrivileges = new Set([...anyRequired]); - if (anyRequired.length !== uniquePrivileges.size) { + if (anyRequired.length !== uniqueAnyPrivileges.size) { return 'anyRequired privileges must contain unique values'; } } + + if (allRequired.length) { + const uniqueAllPrivileges = new Set([...allRequired]); + + if (allRequired.length !== uniqueAllPrivileges.size) { + return 'allRequired privileges must contain unique values'; + } + } }, minSize: 1, } diff --git a/packages/core/http/core-http-server-internal/src/__snapshots__/http_config.test.ts.snap b/packages/core/http/core-http-server-internal/src/__snapshots__/http_config.test.ts.snap index aef7f6e70afca..71aedb914b72d 100644 --- a/packages/core/http/core-http-server-internal/src/__snapshots__/http_config.test.ts.snap +++ b/packages/core/http/core-http-server-internal/src/__snapshots__/http_config.test.ts.snap @@ -131,7 +131,6 @@ Object { "enabled": false, "keystore": Object {}, "supportedProtocols": Array [ - "TLSv1.1", "TLSv1.2", "TLSv1.3", ], diff --git a/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.scss b/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.scss deleted file mode 100644 index 3d10a71c84a95..0000000000000 --- a/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.scss +++ /dev/null @@ -1,3 +0,0 @@ -.kbnGlobalBannerList__item + .kbnGlobalBannerList__item { - margin-top: $euiSizeS; -} diff --git a/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.test.tsx b/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.test.tsx index f5e7d8c686ce7..36ee74d2bfa59 100644 --- a/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.test.tsx +++ b/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.test.tsx @@ -33,7 +33,7 @@ describe('BannersList', () => { ]); expect(mount().html()).toMatchInlineSnapshot( - `"

Hello!

"` + `"

Hello!

"` ); }); @@ -75,7 +75,7 @@ describe('BannersList', () => { // Two new banners should be rendered expect(component.html()).toMatchInlineSnapshot( - `"

First Banner!

Second banner!

"` + `"

First Banner!

Second banner!

"` ); // Original banner should be unmounted expect(unmount).toHaveBeenCalled(); diff --git a/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.tsx b/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.tsx index 173f1f3519a8f..63323b1fee3f9 100644 --- a/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.tsx +++ b/packages/core/overlays/core-overlays-browser-internal/src/banners/banners_list.tsx @@ -11,8 +11,6 @@ import React, { useEffect, useRef, useState } from 'react'; import { Observable } from 'rxjs'; import type { OverlayBanner } from './banners_service'; -import './banners_list.scss'; - interface Props { banners$: Observable; } @@ -52,7 +50,9 @@ const BannerItem: React.FunctionComponent<{ banner: OverlayBanner }> = ({ banner return (
({ + '& + &': { marginTop: euiTheme.size.s }, + })} ref={element} data-test-subj="global-banner-item" /> diff --git a/packages/core/overlays/core-overlays-browser-internal/src/flyout/__snapshots__/flyout_service.test.tsx.snap b/packages/core/overlays/core-overlays-browser-internal/src/flyout/__snapshots__/flyout_service.test.tsx.snap index 9df54435ba9a0..192c892b0128f 100644 --- a/packages/core/overlays/core-overlays-browser-internal/src/flyout/__snapshots__/flyout_service.test.tsx.snap +++ b/packages/core/overlays/core-overlays-browser-internal/src/flyout/__snapshots__/flyout_service.test.tsx.snap @@ -160,7 +160,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -280,7 +293,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, diff --git a/packages/core/overlays/core-overlays-browser-internal/src/modal/__snapshots__/modal_service.test.tsx.snap b/packages/core/overlays/core-overlays-browser-internal/src/modal/__snapshots__/modal_service.test.tsx.snap index cc2dc671f9210..c0e94fc9fb2d6 100644 --- a/packages/core/overlays/core-overlays-browser-internal/src/modal/__snapshots__/modal_service.test.tsx.snap +++ b/packages/core/overlays/core-overlays-browser-internal/src/modal/__snapshots__/modal_service.test.tsx.snap @@ -102,7 +102,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -380,7 +393,28 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -715,7 +749,36 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -969,7 +1032,36 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1228,7 +1320,36 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1482,7 +1603,36 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1696,7 +1846,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1816,7 +1979,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1941,7 +2117,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -2061,7 +2250,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, diff --git a/packages/core/overlays/core-overlays-browser-internal/tsconfig.json b/packages/core/overlays/core-overlays-browser-internal/tsconfig.json index 3604db4bc64f7..13263f09b74d5 100644 --- a/packages/core/overlays/core-overlays-browser-internal/tsconfig.json +++ b/packages/core/overlays/core-overlays-browser-internal/tsconfig.json @@ -5,12 +5,14 @@ "types": [ "jest", "node", - "react" + "react", + "@emotion/react/types/css-prop" ] }, "include": [ "**/*.ts", - "**/*.tsx" + "**/*.tsx", + "../../../../typings/emotion.d.ts" ], "kbn_references": [ "@kbn/i18n-react", @@ -28,9 +30,9 @@ "@kbn/core-analytics-browser-mocks", "@kbn/core-analytics-browser", "@kbn/core-user-profile-browser-mocks", - "@kbn/core-user-profile-browser", + "@kbn/core-user-profile-browser" ], "exclude": [ - "target/**/*", + "target/**/*" ] } diff --git a/packages/core/rendering/core-rendering-browser-internal/src/rendering_service.tsx b/packages/core/rendering/core-rendering-browser-internal/src/rendering_service.tsx index 1995d6c013cf6..9d5982bd40d35 100644 --- a/packages/core/rendering/core-rendering-browser-internal/src/rendering_service.tsx +++ b/packages/core/rendering/core-rendering-browser-internal/src/rendering_service.tsx @@ -20,6 +20,7 @@ import type { ThemeServiceStart } from '@kbn/core-theme-browser'; import type { UserProfileService } from '@kbn/core-user-profile-browser'; import { KibanaRootContextProvider } from '@kbn/react-kibana-context-root'; import { APP_FIXED_VIEWPORT_ID } from '@kbn/core-rendering-browser'; +import { GlobalAppStyle } from '@kbn/core-application-common'; import { AppWrapper } from './app_containers'; interface StartServices { @@ -62,6 +63,9 @@ export class RenderingService { ReactDOM.render( <> + {/* Global Styles that apply across the entire app */} + + {/* Fixed headers */} {chromeHeader} diff --git a/packages/core/root/core-root-browser-internal/src/core_system.scss b/packages/core/root/core-root-browser-internal/src/core_system.scss deleted file mode 100644 index 7a8870606c207..0000000000000 --- a/packages/core/root/core-root-browser-internal/src/core_system.scss +++ /dev/null @@ -1,9 +0,0 @@ -/** - * designed to emulate root-element stretching and overflow - * prevention previously handled in kbn_chrome.less - */ -.coreSystemRootDomElement { - overflow-x: hidden; - min-width: 100%; - min-height: 100%; -} diff --git a/packages/core/root/core-root-browser-internal/src/core_system.ts b/packages/core/root/core-root-browser-internal/src/core_system.ts index c9ad8194e4b64..042017368168c 100644 --- a/packages/core/root/core-root-browser-internal/src/core_system.ts +++ b/packages/core/root/core-root-browser-internal/src/core_system.ts @@ -7,6 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { css } from '@emotion/css'; import { filter, firstValueFrom } from 'rxjs'; import type { CoreContext } from '@kbn/core-base-browser-internal'; import { @@ -54,8 +55,6 @@ import { LOAD_START, } from './events'; -import './core_system.scss'; - /** * @internal */ @@ -405,11 +404,17 @@ export class CoreSystem { // ensure the rootDomElement is empty this.rootDomElement.textContent = ''; - this.rootDomElement.classList.add('coreSystemRootDomElement'); this.rootDomElement.appendChild(coreUiTargetDomElement); this.rootDomElement.appendChild(notificationsTargetDomElement); this.rootDomElement.appendChild(overlayTargetDomElement); + const coreSystemRootDomElement = css` + overflow-x: hidden; + min-width: 100%; + min-height: 100%; + `; + this.rootDomElement.classList.add(coreSystemRootDomElement); + this.rendering.start({ application, chrome, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/open_point_in_time.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/open_point_in_time.test.ts index ca07f39d6620e..2efc33eddddfd 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/open_point_in_time.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/open_point_in_time.test.ts @@ -36,6 +36,7 @@ import { createGenericNotFoundErrorPayload, } from '../../test_helpers/repository.test.common'; import { PointInTimeFinder } from '../point_in_time_finder'; +import { OpenPointInTimeResponse } from '@elastic/elasticsearch/lib/api/types'; describe('SavedObjectsRepository', () => { let client: ReturnType; @@ -81,7 +82,7 @@ describe('SavedObjectsRepository', () => { describe('#openPointInTimeForType', () => { const type = 'index-pattern'; - const generateResults = (id?: string) => ({ id: id || 'id' }); + const generateResults = (id?: string) => ({ id: id || 'id' } as OpenPointInTimeResponse); const successResponse = async (type: string, options?: SavedObjectsOpenPointInTimeOptions) => { client.openPointInTime.mockResponseOnce(generateResults()); const result = await repository.openPointInTimeForType(type, options); @@ -136,7 +137,7 @@ describe('SavedObjectsRepository', () => { it(`throws when ES is unable to find the index`, async () => { client.openPointInTime.mockResolvedValueOnce( elasticsearchClientMock.createSuccessTransportRequestPromise( - { id: 'error' }, + { id: 'error' } as OpenPointInTimeResponse, { statusCode: 404 } ) ); diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts index 984a60814d591..171b37c3a6b3b 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts @@ -66,6 +66,7 @@ import { import { savedObjectsExtensionsMock } from '../mocks/saved_objects_extensions.mock'; import { arrayMapsAreEqual } from '@kbn/core-saved-objects-utils-server'; import { mockAuthenticatedUser } from '@kbn/core-security-common/mocks'; +import { OpenPointInTimeResponse } from '@elastic/elasticsearch/lib/api/types'; describe('SavedObjectsRepository Security Extension', () => { let client: ReturnType; @@ -676,7 +677,7 @@ describe('SavedObjectsRepository Security Extension', () => { test(`returns result when partially authorized`, async () => { setupAuthorizeFunc(mockSecurityExt.authorizeOpenPointInTime, 'partially_authorized'); - client.openPointInTime.mockResponseOnce({ id }); + client.openPointInTime.mockResponseOnce({ id } as OpenPointInTimeResponse); const result = await repository.openPointInTimeForType(type); expect(mockSecurityExt.authorizeOpenPointInTime).toHaveBeenCalledTimes(1); @@ -687,7 +688,7 @@ describe('SavedObjectsRepository Security Extension', () => { test(`returns result when fully authorized`, async () => { setupAuthorizeFunc(mockSecurityExt.authorizeOpenPointInTime, 'fully_authorized'); - client.openPointInTime.mockResponseOnce({ id }); + client.openPointInTime.mockResponseOnce({ id } as OpenPointInTimeResponse); const result = await repository.openPointInTimeForType(type); expect(mockSecurityExt.authorizeOpenPointInTime).toHaveBeenCalledTimes(1); @@ -702,7 +703,7 @@ describe('SavedObjectsRepository Security Extension', () => { test(`calls authorizeOpenPointInTime with correct parameters`, async () => { setupAuthorizeFunc(mockSecurityExt.authorizeOpenPointInTime, 'fully_authorized'); - client.openPointInTime.mockResponseOnce({ id }); + client.openPointInTime.mockResponseOnce({ id } as OpenPointInTimeResponse); const namespaces = [namespace, 'x', 'y', 'z']; await repository.openPointInTimeForType(type, { namespaces }); expect(mockSecurityExt.authorizeOpenPointInTime).toHaveBeenCalledTimes(1); diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts index bb9ae3dd84698..929db1f171a83 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts @@ -15,24 +15,23 @@ import { import { SavedObjectsRepository } from './repository'; import { loggerMock } from '@kbn/logging-mocks'; -import { SavedObjectsSerializer } from '@kbn/core-saved-objects-base-server-internal'; import { kibanaMigratorMock } from '../mocks'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; import { mockTimestamp, - mappings, createRegistry, createDocumentMigrator, - createSpySerializer, } from '../test_helpers/repository.test.common'; +import type { ISavedObjectsRepository } from '@kbn/core-saved-objects-api-server'; +import { ISavedObjectsSpacesExtension } from '@kbn/core-saved-objects-server'; +import { savedObjectsExtensionsMock } from '../mocks/saved_objects_extensions.mock'; describe('SavedObjectsRepository', () => { let client: ReturnType; - let repository: SavedObjectsRepository; + let repository: ISavedObjectsRepository; let migrator: ReturnType; let logger: ReturnType; - let serializer: jest.Mocked; const registry = createRegistry(); const documentMigrator = createDocumentMigrator(registry); @@ -46,23 +45,13 @@ describe('SavedObjectsRepository', () => { migrator.runMigrations = jest.fn().mockResolvedValue([{ status: 'skipped' }]); logger = loggerMock.create(); - // create a mock serializer "shim" so we can track function calls, but use the real serializer's implementation - serializer = createSpySerializer(registry); - - const allTypes = registry.getAllTypes().map((type) => type.name); - const allowedTypes = [...new Set(allTypes.filter((type) => !registry.isHidden(type)))]; - - // @ts-expect-error must use the private constructor to use the mocked serializer - repository = new SavedObjectsRepository({ - index: '.kibana-test', - mappings, - client, + repository = SavedObjectsRepository.createRepository( migrator, - typeRegistry: registry, - serializer, - allowedTypes, - logger, - }); + registry, + '.kibana-test', + client, + logger + ); mockGetCurrentTime.mockReturnValue(mockTimestamp); mockGetSearchDsl.mockClear(); @@ -87,4 +76,60 @@ describe('SavedObjectsRepository', () => { expect(repository.getCurrentNamespace('space-a')).toBe('space-a'); }); }); + + describe('#asScopedToNamespace', () => { + it('returns a new client with undefined spacesExtensions (not available)', () => { + const scopedRepository = repository.asScopedToNamespace('space-a'); + expect(scopedRepository).toBeInstanceOf(SavedObjectsRepository); + expect(scopedRepository).not.toStrictEqual(repository); + + // Checking extensions.spacesExtension are both undefined + // @ts-expect-error type is ISavedObjectsRepository, but in reality is SavedObjectsRepository + expect(repository.extensions.spacesExtension).toBeUndefined(); + // @ts-expect-error type is ISavedObjectsRepository, but in reality is SavedObjectsRepository + expect(scopedRepository.extensions.spacesExtension).toBeUndefined(); + // @ts-expect-error type is ISavedObjectsRepository, but in reality is SavedObjectsRepository + expect(scopedRepository.extensions.spacesExtension).toStrictEqual( + // @ts-expect-error type is ISavedObjectsRepository, but in reality is SavedObjectsRepository + repository.extensions.spacesExtension + ); + }); + }); + + describe('with spacesExtension', () => { + let spacesExtension: jest.Mocked; + + beforeEach(() => { + spacesExtension = savedObjectsExtensionsMock.createSpacesExtension(); + repository = SavedObjectsRepository.createRepository( + migrator, + registry, + '.kibana-test', + client, + logger, + [], + { spacesExtension } + ); + }); + + describe('#asScopedToNamespace', () => { + it('returns a new client with space-scoped spacesExtensions', () => { + const scopedRepository = repository.asScopedToNamespace('space-a'); + expect(scopedRepository).toBeInstanceOf(SavedObjectsRepository); + expect(scopedRepository).not.toStrictEqual(repository); + expect(spacesExtension.asScopedToNamespace).toHaveBeenCalledWith('space-a'); + + // Checking extensions.spacesExtension are both defined but different + // @ts-expect-error type is ISavedObjectsRepository, but in reality is SavedObjectsRepository + expect(repository.extensions.spacesExtension).not.toBeUndefined(); + // @ts-expect-error type is ISavedObjectsRepository, but in reality is SavedObjectsRepository + expect(scopedRepository.extensions.spacesExtension).not.toBeUndefined(); + // @ts-expect-error type is ISavedObjectsRepository, but in reality is SavedObjectsRepository + expect(scopedRepository.extensions.spacesExtension).not.toStrictEqual( + // @ts-expect-error type is ISavedObjectsRepository, but in reality is SavedObjectsRepository + repository.extensions.spacesExtension + ); + }); + }); + }); }); diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts index 31a3c47e9c8ee..b2b8de1b4192a 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts @@ -168,7 +168,7 @@ export class SavedObjectsRepository implements ISavedObjectsRepository { }); } - private constructor(options: SavedObjectsRepositoryOptions) { + private constructor(private readonly options: SavedObjectsRepositoryOptions) { const { index, mappings, @@ -564,4 +564,17 @@ export class SavedObjectsRepository implements ISavedObjectsRepository { getCurrentNamespace(namespace?: string) { return this.helpers.common.getCurrentNamespace(namespace); } + + /** + * {@inheritDoc ISavedObjectsRepository.asScopedToNamespace} + */ + asScopedToNamespace(namespace: string) { + return new SavedObjectsRepository({ + ...this.options, + extensions: { + ...this.options.extensions, + spacesExtension: this.extensions.spacesExtension?.asScopedToNamespace(namespace), + }, + }); + } } diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/repository.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/repository.mock.ts index 7fc01d314abf7..5b2f2041fd340 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/repository.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/repository.mock.ts @@ -34,6 +34,7 @@ const createRepositoryMock = () => { collectMultiNamespaceReferences: jest.fn(), updateObjectsSpaces: jest.fn(), getCurrentNamespace: jest.fn(), + asScopedToNamespace: jest.fn().mockImplementation(createRepositoryMock), }; return mock; diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts index 9dc7c0f0133c5..0cde72544bd3f 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts @@ -47,6 +47,7 @@ const createSecurityExtension = (): jest.Mocked const createSpacesExtension = (): jest.Mocked => ({ getCurrentNamespace: jest.fn(), getSearchableNamespaces: jest.fn(), + asScopedToNamespace: jest.fn().mockImplementation(createSpacesExtension), }); const create = () => ({ diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.test.ts index 73cbb826bfdd0..9440b45269145 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.test.ts @@ -335,4 +335,12 @@ describe('SavedObjectsClient', () => { expect(client.getCurrentNamespace()).toEqual('ns'); expect(mockRepository.getCurrentNamespace).toHaveBeenCalledWith(); }); + + test('#asScopedToNamespace', () => { + const client = new SavedObjectsClient(mockRepository); + + const rescopedClient = client.asScopedToNamespace('ns'); + expect(rescopedClient).not.toStrictEqual(client); + expect(mockRepository.asScopedToNamespace).toHaveBeenCalledWith('ns'); + }); }); diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts index a4d0b44751c7f..addfefde9cfc3 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts @@ -216,4 +216,9 @@ export class SavedObjectsClient implements SavedObjectsClientContract { getCurrentNamespace() { return this._repository.getCurrentNamespace(); } + + /** {@inheritDoc SavedObjectsClientContract.asScopedToNamespace} */ + asScopedToNamespace(namespace: string) { + return new SavedObjectsClient(this._repository.asScopedToNamespace(namespace)); + } } diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/repository.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/repository.mock.ts index 5584d130c1091..c9b9ab4fba2a3 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/repository.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/repository.mock.ts @@ -33,6 +33,7 @@ const create = () => { collectMultiNamespaceReferences: jest.fn(), updateObjectsSpaces: jest.fn(), getCurrentNamespace: jest.fn(), + asScopedToNamespace: jest.fn().mockImplementation(create), }; mock.createPointInTimeFinder = savedObjectsPointInTimeFinderMock.create({ diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_client.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_client.mock.ts index c83ef37a1a956..aebeeb43059f4 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_client.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_client.mock.ts @@ -8,12 +8,10 @@ */ import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; -import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-server'; import { savedObjectsPointInTimeFinderMock } from './point_in_time_finder.mock'; const create = () => { - const mock = { - errors: SavedObjectsErrorHelpers, + const mock: jest.Mocked = { create: jest.fn(), bulkCreate: jest.fn(), checkConflicts: jest.fn(), @@ -33,7 +31,8 @@ const create = () => { collectMultiNamespaceReferences: jest.fn(), updateObjectsSpaces: jest.fn(), getCurrentNamespace: jest.fn(), - } as unknown as jest.Mocked; + asScopedToNamespace: jest.fn().mockImplementation(create), + }; mock.createPointInTimeFinder = savedObjectsPointInTimeFinderMock.create({ savedObjectsMock: mock, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts index 776ecfe3a7385..da9527ec4964f 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts @@ -48,6 +48,7 @@ const createSecurityExtension = (): jest.Mocked const createSpacesExtension = (): jest.Mocked => ({ getCurrentNamespace: jest.fn(), getSearchableNamespaces: jest.fn(), + asScopedToNamespace: jest.fn().mockImplementation(createSpacesExtension), }); const create = (): jest.Mocked => ({ diff --git a/packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_client.ts b/packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_client.ts index 495d7a58b0897..ae7b7d48e0d15 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_client.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_client.ts @@ -427,4 +427,10 @@ export interface SavedObjectsClientContract { * Returns the namespace associated with the client. If the namespace is the default one, this method returns `undefined`. */ getCurrentNamespace(): string | undefined; + + /** + * Returns a clone of the current Saved Objects client but scoped to the specified namespace. + * @param namespace Space to which the client should be scoped to. + */ + asScopedToNamespace(namespace: string): SavedObjectsClientContract; } diff --git a/packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_repository.ts b/packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_repository.ts index 46ebe1e4ceee6..e2be2a89d2a9b 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_repository.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server/src/saved_objects_repository.ts @@ -552,4 +552,10 @@ export interface ISavedObjectsRepository { * namespace. */ getCurrentNamespace(namespace?: string): string | undefined; + + /** + * Returns a new Saved Objects repository scoped to the specified namespace. + * @param namespace Space to which the repository should be scoped to. + */ + asScopedToNamespace(namespace: string): ISavedObjectsRepository; } diff --git a/packages/core/saved-objects/core-saved-objects-server/src/extensions/spaces.ts b/packages/core/saved-objects/core-saved-objects-server/src/extensions/spaces.ts index c81235c08e500..eb89e778b6c0e 100644 --- a/packages/core/saved-objects/core-saved-objects-server/src/extensions/spaces.ts +++ b/packages/core/saved-objects/core-saved-objects-server/src/extensions/spaces.ts @@ -25,4 +25,9 @@ export interface ISavedObjectsSpacesExtension { * If a wildcard '*' is used, it is expanded to an explicit list of namespace strings. */ getSearchableNamespaces: (namespaces: string[] | undefined) => Promise; + /** + * Returns a new Saved Objects Spaces Extension scoped to the specified namespace. + * @param namespace Space to which the extension should be scoped to. + */ + asScopedToNamespace(namespace: string): ISavedObjectsSpacesExtension; } diff --git a/packages/core/security/core-security-common/src/authentication/authenticated_user.ts b/packages/core/security/core-security-common/src/authentication/authenticated_user.ts index 4aa871125052b..d80ff8f434a4f 100644 --- a/packages/core/security/core-security-common/src/authentication/authenticated_user.ts +++ b/packages/core/security/core-security-common/src/authentication/authenticated_user.ts @@ -60,4 +60,9 @@ export interface AuthenticatedUser extends User { * User profile ID of this user. */ profile_uid?: string; + + /** + * Indicates whether user is an operator. + */ + operator?: boolean; } diff --git a/packages/core/usage-data/core-usage-data-server-internal/src/core_usage_data_service.test.ts b/packages/core/usage-data/core-usage-data-server-internal/src/core_usage_data_service.test.ts index 440a62853c099..f72664ff0c1fa 100644 --- a/packages/core/usage-data/core-usage-data-server-internal/src/core_usage_data_service.test.ts +++ b/packages/core/usage-data/core-usage-data-server-internal/src/core_usage_data_service.test.ts @@ -355,7 +355,6 @@ describe('CoreUsageDataService', () => { "keystoreConfigured": false, "redirectHttpFromPortConfigured": false, "supportedProtocols": Array [ - "TLSv1.1", "TLSv1.2", "TLSv1.3", ], diff --git a/packages/deeplinks/devtools/jest.config.js b/packages/deeplinks/devtools/jest.config.js deleted file mode 100644 index 2d3a8261a75d1..0000000000000 --- a/packages/deeplinks/devtools/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/deeplinks/devtools'], -}; diff --git a/packages/deeplinks/devtools/tsconfig.json b/packages/deeplinks/devtools/tsconfig.json deleted file mode 100644 index 94b099694eaf4..0000000000000 --- a/packages/deeplinks/devtools/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - ] -} diff --git a/packages/deeplinks/management/jest.config.js b/packages/deeplinks/management/jest.config.js deleted file mode 100644 index d308c49ffafae..0000000000000 --- a/packages/deeplinks/management/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/deeplinks/management'], -}; diff --git a/packages/deeplinks/management/tsconfig.json b/packages/deeplinks/management/tsconfig.json deleted file mode 100644 index d1414086f2187..0000000000000 --- a/packages/deeplinks/management/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [] -} diff --git a/packages/deeplinks/observability/jest.config.js b/packages/deeplinks/observability/jest.config.js deleted file mode 100644 index 76553cb468478..0000000000000 --- a/packages/deeplinks/observability/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/deeplinks/observability'], -}; diff --git a/packages/deeplinks/observability/locators/index.ts b/packages/deeplinks/observability/locators/index.ts deleted file mode 100644 index 5d45f66194b6d..0000000000000 --- a/packages/deeplinks/observability/locators/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './dataset_quality'; -export * from './dataset_quality_details'; -export * from './logs_explorer'; -export * from './observability_logs_explorer'; -export * from './observability_onboarding'; -export * from './uptime'; diff --git a/packages/deeplinks/observability/tsconfig.json b/packages/deeplinks/observability/tsconfig.json deleted file mode 100644 index 425a5a8612854..0000000000000 --- a/packages/deeplinks/observability/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/utility-types", - "@kbn/es-query", - ] -} diff --git a/packages/deeplinks/security/jest.config.js b/packages/deeplinks/security/jest.config.js deleted file mode 100644 index 6353eecfe6b98..0000000000000 --- a/packages/deeplinks/security/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/deeplinks/security'], -}; diff --git a/packages/deeplinks/security/tsconfig.json b/packages/deeplinks/security/tsconfig.json deleted file mode 100644 index d1414086f2187..0000000000000 --- a/packages/deeplinks/security/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [] -} diff --git a/packages/default-nav/devtools/jest.config.js b/packages/default-nav/devtools/jest.config.js deleted file mode 100644 index c7be7cf80bb03..0000000000000 --- a/packages/default-nav/devtools/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/default-nav/devtools'], -}; diff --git a/packages/default-nav/devtools/tsconfig.json b/packages/default-nav/devtools/tsconfig.json deleted file mode 100644 index 7adfc75ce745d..0000000000000 --- a/packages/default-nav/devtools/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/core-chrome-browser", - "@kbn/deeplinks-devtools", - ] -} diff --git a/packages/default-nav/management/jest.config.js b/packages/default-nav/management/jest.config.js deleted file mode 100644 index a42f1603492ec..0000000000000 --- a/packages/default-nav/management/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/default-nav/management'], -}; diff --git a/packages/default-nav/management/tsconfig.json b/packages/default-nav/management/tsconfig.json deleted file mode 100644 index 2e7b8415084c9..0000000000000 --- a/packages/default-nav/management/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/core-chrome-browser", - "@kbn/deeplinks-management", - ] -} diff --git a/packages/kbn-alerts-grouping/src/components/alerts_grouping.test.tsx b/packages/kbn-alerts-grouping/src/components/alerts_grouping.test.tsx index 0137953b2313c..14efad8dbddc2 100644 --- a/packages/kbn-alerts-grouping/src/components/alerts_grouping.test.tsx +++ b/packages/kbn-alerts-grouping/src/components/alerts_grouping.test.tsx @@ -8,7 +8,7 @@ */ /** - * Adapted from x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.test.tsx + * Adapted from x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.test.tsx */ import React from 'react'; import { render, within, screen } from '@testing-library/react'; diff --git a/packages/kbn-alerts-ui-shared/tsconfig.json b/packages/kbn-alerts-ui-shared/tsconfig.json index 07a52c9d9c1b9..30be2e17af3ea 100644 --- a/packages/kbn-alerts-ui-shared/tsconfig.json +++ b/packages/kbn-alerts-ui-shared/tsconfig.json @@ -34,6 +34,6 @@ "@kbn/alerts-as-data-utils", "@kbn/core-http-browser-mocks", "@kbn/core-notifications-browser-mocks", - "@kbn/shared-ux-table-persist" + "@kbn/shared-ux-table-persist", ] } diff --git a/packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts b/packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts index 8fa7a5997f4f7..e4e382860767d 100644 --- a/packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts +++ b/packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts @@ -83,6 +83,7 @@ export type LogDocument = Fields & 'kubernetes.pod.name'?: string; 'kubernetes.container.name'?: string; 'orchestrator.resource.name'?: string; + tags?: string | string[]; }>; class Log extends Serializable { diff --git a/packages/kbn-apm-synthtrace/src/cli/utils/synthtrace_worker.ts b/packages/kbn-apm-synthtrace/src/cli/utils/synthtrace_worker.ts index 72644bd8f1103..0d5398f473cb2 100644 --- a/packages/kbn-apm-synthtrace/src/cli/utils/synthtrace_worker.ts +++ b/packages/kbn-apm-synthtrace/src/cli/utils/synthtrace_worker.ts @@ -9,7 +9,6 @@ import { timerange } from '@kbn/apm-synthtrace-client'; import { castArray } from 'lodash'; -import pidusage from 'pidusage'; import { memoryUsage } from 'process'; import { parentPort, workerData } from 'worker_threads'; import { getApmEsClient } from './get_apm_es_client'; @@ -123,10 +122,16 @@ async function start() { return Math.round(value / 1024 ** 2).toString() + 'mb'; } + let cpuUsage = process.cpuUsage(); + setInterval(async () => { - const stats = await pidusage(process.pid); + cpuUsage = process.cpuUsage(cpuUsage); const mem = memoryUsage(); - logger.info(`cpu: ${stats.cpu}, memory: ${mb(mem.heapUsed)}/${mb(mem.heapTotal)}`); + logger.info( + `cpu time: (user: ${cpuUsage.user}µs, sys: ${cpuUsage.system}µs), memory: ${mb( + mem.heapUsed + )}/${mb(mem.heapTotal)}` + ); }, 5000); await logger.perf('index_scenario', async () => { diff --git a/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts b/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts index 2460e95014413..c53e4664f1373 100644 --- a/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts +++ b/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts @@ -17,6 +17,10 @@ import { Logger } from '../utils/create_logger'; export type InfraSynthtraceEsClientOptions = Omit; +interface Pipeline { + includeSerialization?: boolean; +} + export class InfraSynthtraceEsClient extends SynthtraceEsClient { constructor(options: { client: Client; logger: Logger } & InfraSynthtraceEsClientOptions) { super({ @@ -30,13 +34,26 @@ export class InfraSynthtraceEsClient extends SynthtraceEsClient { 'metrics-aws*', ]; } + + getDefaultPipeline( + { + includeSerialization, + }: { + includeSerialization?: boolean; + } = { includeSerialization: true } + ) { + return infraPipeline({ includeSerialization }); + } } -function infraPipeline() { +function infraPipeline({ includeSerialization }: Pipeline = { includeSerialization: true }) { return (base: Readable) => { + const serializationTransform = includeSerialization ? [getSerializeTransform()] : []; + return pipeline( + // @ts-expect-error Some weird stuff here with the type definition for pipeline. We have tests! base, - getSerializeTransform(), + ...serializationTransform, getRoutingTransform(), getDedotTransform(), (err: unknown) => { diff --git a/packages/kbn-apm-synthtrace/src/lib/utils/stream_utils.ts b/packages/kbn-apm-synthtrace/src/lib/utils/stream_utils.ts index 9e52e9fc2b0ad..77aba18974b38 100644 --- a/packages/kbn-apm-synthtrace/src/lib/utils/stream_utils.ts +++ b/packages/kbn-apm-synthtrace/src/lib/utils/stream_utils.ts @@ -8,11 +8,29 @@ */ import { eachSeries } from 'async'; -import MultiStream from 'multistream'; -import { Duplex, Readable, Transform } from 'stream'; +import { Duplex, Readable, Transform, PassThrough } from 'stream'; + +/** + * Pipe one or many streams sequentially into the destination stream. Once all + * source streams have been exhausted, the destination stream is ended. + * @param sources A collection of streams to read from + * @param destination The stream to pipe data to + */ +async function combineStreams(sources: Readable[], destination: PassThrough) { + for (const stream of sources) { + await new Promise((resolve, reject) => { + stream.on('end', resolve); + stream.on('error', reject); + stream.pipe(destination, { end: false }); + }); + } + destination.emit('end'); +} export function sequential(...streams: Readable[]) { - return new MultiStream(streams, { objectMode: true }); + const output = new PassThrough({ objectMode: true }); + combineStreams(streams, output).catch((err) => output.destroy(err)); + return output; } export function fork(...streams: Transform[]): Duplex { diff --git a/packages/kbn-avc-banner/jest.config.js b/packages/kbn-avc-banner/jest.config.js deleted file mode 100644 index e45e51dd79c86..0000000000000 --- a/packages/kbn-avc-banner/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-avc-banner'], -}; diff --git a/packages/kbn-avc-banner/tsconfig.json b/packages/kbn-avc-banner/tsconfig.json deleted file mode 100644 index b75e84d57cf72..0000000000000 --- a/packages/kbn-avc-banner/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/kibana-react-plugin", - ] -} diff --git a/packages/kbn-babel-preset/styled_components_files.js b/packages/kbn-babel-preset/styled_components_files.js index 89b71c06d9e84..2a74c5b60f181 100644 --- a/packages/kbn-babel-preset/styled_components_files.js +++ b/packages/kbn-babel-preset/styled_components_files.js @@ -15,9 +15,13 @@ module.exports = { USES_STYLED_COMPONENTS: [ /packages[\/\\]kbn-ui-shared-deps-(npm|src)[\/\\]/, /src[\/\\]plugins[\/\\](kibana_react)[\/\\]/, - /x-pack[\/\\]plugins[\/\\](observability_solution\/apm|beats_management|fleet|observability_solution\/infra|lists|observability_solution\/observability|observability_solution\/observability_shared|observability_solution\/exploratory_view|security_solution|timelines|observability_solution\/synthetics|observability_solution\/ux|observability_solution\/uptime)[\/\\]/, + /x-pack[\/\\]solutions[\/\\]observability[\/\\]plugins[\/\\](exploratory_view|investigate|investigate_app|observability|observability_ai_assistant_app|observability_ai_assistant_management|observability_solution|serverless_observability|streams|streams_app|synthetics|uptime|ux)[\/\\]/, + /x-pack[\/\\]plugins[\/\\](observability_solution\/apm|beats_management|fleet|lists|observability_solution\/observability|observability_solution\/observability_shared|observability_solution\/exploratory_view|security_solution|timelines|observability_solution\/synthetics|observability_solution\/ux|observability_solution\/uptime)[\/\\]/, + /x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\](observability_solution\/apm|beats_management|fleet|observability_solution\/infra|lists|observability_solution\/observability|observability_solution\/observability_shared|observability_solution\/exploratory_view|security_solution|timelines|observability_solution\/synthetics|observability_solution\/ux|observability_solution\/uptime)[\/\\]/, /x-pack[\/\\]test[\/\\]plugin_functional[\/\\]plugins[\/\\]resolver_test[\/\\]/, /x-pack[\/\\]packages[\/\\]elastic_assistant[\/\\]/, - /x-pack[\/\\]packages[\/\\]security-solution[\/\\]ecs_data_quality_dashboard[\/\\]/, + /x-pack[\/\\]solutions[\/\\]security[\/\\]packages[\/\\]ecs_data_quality_dashboard[\/\\]/, + /x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]/, + /x-pack[\/\\]platform[\/\\]packages[\/\\]shared[\/\\]kbn-elastic-assistant[\/\\]/, ], }; diff --git a/packages/kbn-cell-actions/jest.config.js b/packages/kbn-cell-actions/jest.config.js deleted file mode 100644 index 11196f0530fca..0000000000000 --- a/packages/kbn-cell-actions/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-cell-actions'], -}; diff --git a/packages/kbn-cell-actions/tsconfig.json b/packages/kbn-cell-actions/tsconfig.json deleted file mode 100644 index f7ac4890347af..0000000000000 --- a/packages/kbn-cell-actions/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react" - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/ui-theme", - "@kbn/i18n", - "@kbn/core", - "@kbn/data-plugin", - "@kbn/es-query", - "@kbn/ui-actions-plugin", - "@kbn/field-types", - "@kbn/data-views-plugin", - "@kbn/core-notifications-browser", - "@kbn/utility-types", - ], - "exclude": ["target/**/*"] -} diff --git a/packages/kbn-code-owners/index.ts b/packages/kbn-code-owners/index.ts index 1c371d27e2575..df85bb6d9c624 100644 --- a/packages/kbn-code-owners/index.ts +++ b/packages/kbn-code-owners/index.ts @@ -7,9 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export type { PathWithOwners, CodeOwnership } from './src/file_code_owner'; +export type { CodeOwnersEntry } from './src/code_owners'; +export * as cli from './src/cli'; export { - getPathsWithOwnersReversed, - getCodeOwnersForFile, - runGetOwnersForFileCli, -} from './src/file_code_owner'; + getCodeOwnersEntries, + findCodeOwnersEntryForPath, + getOwningTeamsForPath, +} from './src/code_owners'; diff --git a/packages/kbn-code-owners/src/cli.ts b/packages/kbn-code-owners/src/cli.ts new file mode 100644 index 0000000000000..9e7a839e0546c --- /dev/null +++ b/packages/kbn-code-owners/src/cli.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { run } from '@kbn/dev-cli-runner'; +import { findCodeOwnersEntryForPath } from './code_owners'; +import { throwIfPathIsMissing, throwIfPathNotInRepo } from './path'; + +/** + * CLI entrypoint for finding code owners for a given path. + */ +export async function findCodeOwnersForPath() { + await run( + async ({ flagsReader, log }) => { + const targetPath = flagsReader.requiredPath('path'); + throwIfPathIsMissing(targetPath, 'Target path', true); + throwIfPathNotInRepo(targetPath, true); + + const codeOwnersEntry = findCodeOwnersEntryForPath(targetPath); + + if (!codeOwnersEntry) { + log.warning(`No matching code owners entry found for path ${targetPath}`); + return; + } + + if (flagsReader.boolean('json')) { + // Replacer function that hides irrelevant fields in JSON output + const hideIrrelevantFields = (k: string, v: any) => { + return ['matcher'].includes(k) ? undefined : v; + }; + + log.write(JSON.stringify(codeOwnersEntry, hideIrrelevantFields, 2)); + return; + } + + log.write(`Matching pattern: ${codeOwnersEntry.pattern}`); + log.write('Teams:', codeOwnersEntry.teams); + }, + { + description: `Find code owners for a given path in this local Kibana repository`, + flags: { + string: ['path'], + boolean: ['json'], + help: ` + --path Path to find owners for (required) + --json Output result as JSON`, + }, + } + ); +} diff --git a/packages/kbn-code-owners/src/code_owners.ts b/packages/kbn-code-owners/src/code_owners.ts new file mode 100644 index 0000000000000..47aa2a67171c0 --- /dev/null +++ b/packages/kbn-code-owners/src/code_owners.ts @@ -0,0 +1,127 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { REPO_ROOT } from '@kbn/repo-info'; +import fs from 'node:fs'; +import path from 'node:path'; + +import ignore, { Ignore } from 'ignore'; +import { CODE_OWNERS_FILE, throwIfPathIsMissing, throwIfPathNotInRepo } from './path'; + +export interface CodeOwnersEntry { + pattern: string; + matcher: Ignore; + teams: string[]; + comment?: string; +} + +/** + * Generator function that yields lines from the CODEOWNERS file + */ +export function* getCodeOwnersLines(): Generator { + const codeOwnerLines = fs + .readFileSync(CODE_OWNERS_FILE, { encoding: 'utf8', flag: 'r' }) + .split(/\r?\n/); + + for (const line of codeOwnerLines) { + // Empty line + if (line.length === 0) continue; + + // Comment + if (line.startsWith('#')) continue; + + // Assignment override on backport branches to avoid review requests + if (line.includes('@kibanamachine')) continue; + + yield line.trim(); + } +} + +/** + * Get all code owner entries from the CODEOWNERS file + * + * Entries are ordered in reverse relative to how they're defined in the CODEOWNERS file + * as patterns defined lower in the CODEOWNERS file can override earlier entries. + */ +export function getCodeOwnersEntries(): CodeOwnersEntry[] { + const entries: CodeOwnersEntry[] = []; + + for (const line of getCodeOwnersLines()) { + const comment = line + .match(/#(.+)$/) + ?.at(1) + ?.trim(); + + const [rawPathPattern, ...rawTeams] = line + .replace(/#.+$/, '') // drop comment + .split(/\s+/); + + const pathPattern = rawPathPattern.replace(/\/$/, ''); + + entries.push({ + pattern: pathPattern, + teams: rawTeams.map((t) => t.replace('@', '')).filter((t) => t.length > 0), + comment, + + // Register code owner entry with the `ignores` lib for easy pattern matching later on + matcher: ignore().add(pathPattern), + }); + } + + // Reverse entry order as patterns defined lower in the CODEOWNERS file can override earlier entries + entries.reverse(); + + return entries; +} + +/** + * Get a list of matching code owners for a given path + * + * Tip: + * If you're making a lot of calls to this function, fetch the code owner paths once using + * `getCodeOwnersEntries` and pass it in the `getCodeOwnersEntries` parameter to speed up your queries.. + * + * @param searchPath The path to find code owners for + * @param codeOwnersEntries Pre-defined list of code owner paths to search in + * + * @returns Code owners entry if a match is found. + * @throws Error if `searchPath` does not exist or is not part of this repository + */ +export function findCodeOwnersEntryForPath( + searchPath: string, + codeOwnersEntries?: CodeOwnersEntry[] +): CodeOwnersEntry | undefined { + throwIfPathIsMissing(CODE_OWNERS_FILE, 'Code owners file'); + throwIfPathNotInRepo(searchPath); + const searchPathRelativeToRepo = path.relative(REPO_ROOT, searchPath); + + return (codeOwnersEntries || getCodeOwnersEntries()).find( + (p) => p.matcher.test(searchPathRelativeToRepo).ignored + ); +} + +/** + * Get a list of matching code owners for a given path + * + * Tip: + * If you're making a lot of calls to this function, fetch the code owner paths once using + * `getCodeOwnersEntries` and pass it in the `getCodeOwnersEntries` parameter to speed up your queries. + * + * @param searchPath The path to find code owners for + * @param codeOwnersEntries Pre-defined list of code owner entries + * + * @returns List of code owners for the given path. Empty list if no matching entry is found. + * @throws Error if `searchPath` does not exist or is not part of this repository + */ +export function getOwningTeamsForPath( + searchPath: string, + codeOwnersEntries?: CodeOwnersEntry[] +): string[] { + return findCodeOwnersEntryForPath(searchPath, codeOwnersEntries)?.teams || []; +} diff --git a/packages/kbn-code-owners/src/file_code_owner.ts b/packages/kbn-code-owners/src/file_code_owner.ts deleted file mode 100644 index aa3c856f15f7c..0000000000000 --- a/packages/kbn-code-owners/src/file_code_owner.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { REPO_ROOT } from '@kbn/repo-info'; -import { createFailError, createFlagError } from '@kbn/dev-cli-errors'; -import { join as joinPath } from 'path'; -import { existsSync, readFileSync } from 'fs'; -import { run } from '@kbn/dev-cli-runner'; - -import type { Ignore } from 'ignore'; -import ignore from 'ignore'; - -export interface PathWithOwners { - path: string; - teams: string; - ignorePattern: Ignore; -} -export type CodeOwnership = Partial> | undefined; - -const existOrThrow = (targetFile: string) => { - if (existsSync(targetFile) === false) - throw createFailError(`Unable to determine code owners: file ${targetFile} Not Found`); -}; - -/** - * Get the .github/CODEOWNERS entries, prepared for path matching. - * The last matching CODEOWNERS entry has highest precedence: - * https://help.github.com/articles/about-codeowners/ - * so entries are returned in reversed order to later search for the first match. - */ -export function getPathsWithOwnersReversed(): PathWithOwners[] { - const codeownersPath = joinPath(REPO_ROOT, '.github', 'CODEOWNERS'); - existOrThrow(codeownersPath); - const codeownersContent = readFileSync(codeownersPath, { encoding: 'utf8', flag: 'r' }); - const codeownersLines = codeownersContent.split(/\r?\n/); - const codeowners = codeownersLines - .map((line) => line.trim()) - .filter((line) => line && line[0] !== '#') - // kibanamachine is an assignment override on backport branches to avoid review requests - .filter((line) => line && !line.includes('@kibanamachine')); - - const pathsWithOwners: PathWithOwners[] = codeowners.map((c) => { - const [path, ...ghTeams] = c.split(/\s+/); - const cleanedPath = path.replace(/\/$/, ''); // remove trailing slash - return { - path: cleanedPath, - teams: ghTeams.map((t) => t.replace('@', '')).join(), - // register CODEOWNERS entries with the `ignores` lib for later path matching - ignorePattern: ignore().add([cleanedPath]), - }; - }); - - return pathsWithOwners.reverse(); -} - -/** - * Get the GitHub CODEOWNERS for a file in the repository - * @param filePath the file to get code owners for - * @param reversedCodeowners a cached reversed code owners list, use to speed up multiple requests - */ -export function getCodeOwnersForFile( - filePath: string, - reversedCodeowners?: PathWithOwners[] -): CodeOwnership { - const pathsWithOwners = reversedCodeowners ?? getPathsWithOwnersReversed(); - const match = pathsWithOwners.find((p) => p.ignorePattern.test(filePath).ignored); - if (match?.path && match.teams) return { path: match.path, teams: match.teams }; - return; -} -const trimFrontSlash = (x: string): string => x.replace(/^\//, ''); -/** - * Run the getCodeOwnersForFile() method above. - * Report back to the cli with either success and the owner(s), or a failure. - * - * This function depends on a --file param being passed on the cli, like this: - * $ node scripts/get_owners_for_file.js --file SOME-FILE - */ -export async function runGetOwnersForFileCli() { - run( - async ({ flags, log }) => { - const targetFile = flags.file as string; - if (!targetFile) throw createFlagError(`Missing --file argument`); - existOrThrow(targetFile); // This call is duplicated in getPathsWithOwnersReversed(), so this is a short circuit - const result = getCodeOwnersForFile(targetFile); - if (result) - log.success(`Found matching entry in .github/CODEOWNERS: -${trimFrontSlash(result?.path ? result.path : '')} ${result.teams}`); - else log.error(`Ownership of file [${targetFile}] is UNKNOWN`); - }, - { - description: 'Report file ownership from GitHub CODEOWNERS file.', - flags: { - string: ['file'], - help: ` - --file Required, path to the file to report owners for. - `, - }, - } - ); -} diff --git a/packages/kbn-code-owners/src/path.ts b/packages/kbn-code-owners/src/path.ts new file mode 100644 index 0000000000000..4a8c09b041c82 --- /dev/null +++ b/packages/kbn-code-owners/src/path.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import fs from 'node:fs'; +import path from 'node:path'; +import { createFailError } from '@kbn/dev-cli-errors'; +import { REPO_ROOT } from '@kbn/repo-info'; + +/** CODEOWNERS file path **/ +export const CODE_OWNERS_FILE = path.join(REPO_ROOT, '.github', 'CODEOWNERS'); + +/** + * Throw an error if the given path does not exist + * + * @param targetPath Path to check + * @param description Path description used in the error message if an exception is thrown + * @param cli Whether this function is called from a CLI context + */ +export function throwIfPathIsMissing( + targetPath: fs.PathLike, + description = 'File', + cli: boolean = false +) { + if (fs.existsSync(targetPath)) return; + const msg = `${description} ${targetPath} does not exist`; + throw cli ? createFailError(msg) : new Error(msg); +} + +/** + * Throw an error if the given path does not reside in this repo + * + * @param targetPath Path to check + * @param cli Whether this function is called from a CLI context + */ +export function throwIfPathNotInRepo(targetPath: fs.PathLike, cli: boolean = false) { + const relativePath = path.relative(REPO_ROOT, targetPath.toString()); + + if (relativePath.includes('../')) { + const msg = `Path ${targetPath} is not part of this repository.`; + throw cli ? createFailError(msg) : new Error(msg); + } +} diff --git a/packages/kbn-coloring/src/palettes/types.ts b/packages/kbn-coloring/src/palettes/types.ts index b5e81a437f6da..5a43c65097960 100644 --- a/packages/kbn-coloring/src/palettes/types.ts +++ b/packages/kbn-coloring/src/palettes/types.ts @@ -140,7 +140,9 @@ export interface CustomPaletteParams { progression?: 'fixed'; rangeMin?: number; rangeMax?: number; + /** lower color stops */ stops?: ColorStop[]; + /** upper color stops */ colorStops?: ColorStop[]; steps?: number; maxSteps?: number | undefined; diff --git a/packages/kbn-coloring/src/palettes/utils.test.ts b/packages/kbn-coloring/src/palettes/utils.test.ts index 8292c7440063e..e7595a738bf11 100644 --- a/packages/kbn-coloring/src/palettes/utils.test.ts +++ b/packages/kbn-coloring/src/palettes/utils.test.ts @@ -9,6 +9,7 @@ import { getPaletteRegistry } from './mocks/palettes_registry'; import { + applyPaletteParams, getDataMinMax, getPaletteStops, getStepValue, @@ -312,3 +313,43 @@ describe('getStepValue', () => { ).toBe(1); }); }); + +describe('applyPaletteParams', () => { + const paletteRegistry = getPaletteRegistry(); + it('should return a palette stops array only by the name', () => { + expect( + applyPaletteParams( + paletteRegistry, + { name: 'default', type: 'palette', params: { name: 'default' } }, + { min: 0, max: 100 } + ) + ).toEqual([ + // stops are 0 and 50 by with a 20 offset (100 divided by 5 steps) for display + // the mock palette service has only 2 colors so tests are a bit off by that + { color: 'red', stop: 20 }, + { color: 'black', stop: 70 }, + ]); + }); + + it('should return a palette stops array reversed', () => { + expect( + applyPaletteParams( + paletteRegistry, + { name: 'default', type: 'palette', params: { name: 'default', reverse: true } }, + { min: 0, max: 100 } + ) + ).toEqual([ + { color: 'black', stop: 20 }, + { color: 'red', stop: 70 }, + ]); + }); + + it('should pick the default palette from the activePalette object when passed', () => { + expect( + applyPaletteParams(paletteRegistry, { name: 'mocked', type: 'palette' }, { min: 0, max: 100 }) + ).toEqual([ + { color: 'blue', stop: 20 }, + { color: 'yellow', stop: 70 }, + ]); + }); +}); diff --git a/packages/kbn-coloring/src/palettes/utils.ts b/packages/kbn-coloring/src/palettes/utils.ts index c10ef98f825af..a4a3c24f6a797 100644 --- a/packages/kbn-coloring/src/palettes/utils.ts +++ b/packages/kbn-coloring/src/palettes/utils.ts @@ -13,6 +13,7 @@ import { CustomPaletteParams, DataBounds, ColorStop, + PaletteOutput, } from './types'; import { @@ -20,9 +21,10 @@ import { DEFAULT_PALETTE_NAME, DEFAULT_MAX_STOP, DEFAULT_MIN_STOP, + CUSTOM_PALETTE, + COMPLEMENTARY_PALETTE, DEFAULT_FALLBACK_PALETTE, LEGACY_COMPLIMENTARY_PALETTE, - COMPLEMENTARY_PALETTE, } from './constants'; /** @internal **/ @@ -204,3 +206,46 @@ export function getActivePaletteName(name?: string): string { } return paletteName; } + +export function applyPaletteParams>( + palettes: PaletteRegistry, + activePalette: T, + dataBounds: DataBounds +) { + // make a copy of it as they have to be manipulated later on + const displayStops = getPaletteStops(palettes, activePalette?.params || {}, { + dataBounds, + defaultPaletteName: activePalette?.name, + }); + + if (activePalette?.params?.reverse && activePalette?.params?.name !== CUSTOM_PALETTE) { + return reversePalette(displayStops); + } + return displayStops; +} + +/** + * Returns color stops for given palette type: + * + * - custom - User has modified the stops in some way - return stops as is + * - non-custom - Default palette stops - Return new stops based on palette + * + * > This is needed for BWC when switching between kibana themes. + */ +export function getOverridePaletteStops>( + paletteService: PaletteRegistry, + activePalette?: T +) { + if (!activePalette || activePalette.name === CUSTOM_PALETTE || !activePalette.params?.stops) { + return activePalette?.params?.stops; + } + + const { stops, ...otherParams } = activePalette.params; + const colors = paletteService + .get(activePalette.name ?? DEFAULT_PALETTE_NAME) + .getCategoricalColors(stops.length, otherParams); + return stops.map((stop, i) => ({ + ...stop, + color: colors[i], + })); +} diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/__stories__/color_mapping.stories.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/__stories__/color_mapping.stories.tsx index 3eebf74205a07..3ebc8064987b4 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/__stories__/color_mapping.stories.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/__stories__/color_mapping.stories.tsx @@ -8,11 +8,11 @@ */ import React, { FC, useState } from 'react'; +import { getKbnPalettes } from '@kbn/palettes'; import { EuiFlyout, EuiForm, EuiPage, isColorDark } from '@elastic/eui'; import { ComponentStory } from '@storybook/react'; import { css } from '@emotion/react'; import { CategoricalColorMapping, ColorMappingProps } from '../categorical_color_mapping'; -import { AVAILABLE_PALETTES, getPalette, NeutralPalette } from '../palettes'; import { DEFAULT_COLOR_MAPPING_CONFIG } from '../config/default_color_mapping'; import { ColorMapping } from '../config'; import { getColorFactory } from '../color/color_handling'; @@ -30,9 +30,8 @@ const Template: ComponentStory> = (args) => { DEFAULT_COLOR_MAPPING_CONFIG ); - const getPaletteFn = getPalette(AVAILABLE_PALETTES, NeutralPalette); - - const colorFactory = getColorFactory(updatedModel, getPaletteFn, false, args.data); + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + const colorFactory = getColorFactory(updatedModel, palettes, false, args.data); return ( @@ -71,7 +70,7 @@ const Template: ComponentStory> = (args) => { ownFocus={false} > - + @@ -82,6 +81,7 @@ export const Default = Template.bind({}); Default.args = { model: { ...DEFAULT_COLOR_MAPPING_CONFIG, + paletteId: 'eui_amsterdam', colorMode: { type: 'categorical', @@ -119,7 +119,6 @@ Default.args = { ], }, - palettes: AVAILABLE_PALETTES, specialTokens: new Map(), // eslint-disable-next-line no-console onModelUpdate: (model) => console.log(model), diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.test.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.test.tsx index dd7b12305fdad..530f16f912d0d 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.test.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.test.tsx @@ -10,9 +10,9 @@ import React from 'react'; import { mount } from 'enzyme'; import { CategoricalColorMapping, ColorMappingInputData } from './categorical_color_mapping'; -import { AVAILABLE_PALETTES } from './palettes'; import { DEFAULT_COLOR_MAPPING_CONFIG } from './config/default_color_mapping'; import { MULTI_FIELD_KEY_SEPARATOR } from '@kbn/data-plugin/common'; +import { getKbnPalettes } from '@kbn/palettes'; const ASSIGNMENTS_LIST = '[data-test-subj="lns-colorMapping-assignmentsList"]'; const ASSIGNMENTS_PROMPT = '[data-test-subj="lns-colorMapping-assignmentsPrompt"]'; @@ -20,6 +20,8 @@ const ASSIGNMENTS_PROMPT_ADD_ALL = '[data-test-subj="lns-colorMapping-assignment const ASSIGNMENT_ITEM = (i: number) => `[data-test-subj="lns-colorMapping-assignmentsItem${i}"]`; describe('color mapping', () => { + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + it('load a default color mapping', () => { const dataInput: ColorMappingInputData = { type: 'categories', @@ -31,7 +33,7 @@ describe('color mapping', () => { data={dataInput} isDarkMode={false} model={{ ...DEFAULT_COLOR_MAPPING_CONFIG }} - palettes={AVAILABLE_PALETTES} + palettes={palettes} onModelUpdate={onModelUpdateFn} specialTokens={new Map()} /> @@ -53,7 +55,7 @@ describe('color mapping', () => { data={dataInput} isDarkMode={false} model={{ ...DEFAULT_COLOR_MAPPING_CONFIG }} - palettes={AVAILABLE_PALETTES} + palettes={palettes} onModelUpdate={onModelUpdateFn} specialTokens={new Map()} /> @@ -81,7 +83,7 @@ describe('color mapping', () => { data={dataInput} isDarkMode={false} model={{ ...DEFAULT_COLOR_MAPPING_CONFIG }} - palettes={AVAILABLE_PALETTES} + palettes={palettes} onModelUpdate={onModelUpdateFn} specialTokens={ new Map([ diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx index 668cdc7ce07fd..8bd006ba9c663 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx @@ -11,6 +11,7 @@ import React from 'react'; import { Provider } from 'react-redux'; import { type EnhancedStore, configureStore } from '@reduxjs/toolkit'; import { isEqual } from 'lodash'; +import { KbnPalettes } from '@kbn/palettes'; import { colorMappingReducer, updateModel } from './state/color_mapping'; import { Container } from './components/container/container'; import { ColorMapping } from './config'; @@ -43,8 +44,8 @@ export type ColorMappingInputData = export interface ColorMappingProps { /** The initial color mapping model, usually coming from a the visualization saved object */ model: ColorMapping.Config; - /** A map of paletteId and palette configuration */ - palettes: Map; + /** A collection of palette configurations */ + palettes: KbnPalettes; /** A data description of what needs to be colored */ data: ColorMappingInputData; /** Theme dark mode */ diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.test.ts b/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.test.ts index 627f39e5026ac..c97100781e005 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.test.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.test.ts @@ -12,64 +12,52 @@ import { DEFAULT_NEUTRAL_PALETTE_INDEX, } from '../config/default_color_mapping'; import { getColorFactory } from './color_handling'; -import { getPalette, AVAILABLE_PALETTES } from '../palettes'; -import { - EUIAmsterdamColorBlindPalette, - EUI_AMSTERDAM_PALETTE_COLORS, -} from '../palettes/eui_amsterdam'; -import { NeutralPalette, NEUTRAL_COLOR_DARK, NEUTRAL_COLOR_LIGHT } from '../palettes/neutral'; import { toHex } from './color_math'; -import { ColorMapping } from '../config'; +import { KbnPalette, getKbnPalettes } from '@kbn/palettes'; describe('Color mapping - color generation', () => { - const getPaletteFn = getPalette(AVAILABLE_PALETTES, NeutralPalette); + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + const neutralPaletteColors = palettes + .get(KbnPalette.Neutral) + .colors() + .map((c) => c.toLowerCase()); + const elasticPaletteColors = palettes + .get(KbnPalette.Default) + .colors() + .map((c) => c.toLowerCase()); it('returns EUI light colors from default config', () => { - const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, getPaletteFn, false, { + const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, palettes, false, { type: 'categories', categories: ['catA', 'catB', 'catC'], }); - expect(colorFactory('catA')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); - expect(colorFactory('catB')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[1]); - expect(colorFactory('catC')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[2]); + expect(colorFactory('catA')).toBe(elasticPaletteColors[0]); + expect(colorFactory('catB')).toBe(elasticPaletteColors[1]); + expect(colorFactory('catC')).toBe(elasticPaletteColors[2]); // if the category is not available in the `categories` list then a default netural is used // this is an edge case and ideally never happen expect(colorFactory('not_available_1')).toBe( - NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX] + neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX] ); }); // currently there is no difference in the two colors, but this could change in the future // this test will catch the change it('returns EUI dark colors from default config', () => { - const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, getPaletteFn, true, { + const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, palettes, true, { type: 'categories', categories: ['catA', 'catB', 'catC'], }); - expect(colorFactory('catA')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); - expect(colorFactory('catB')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[1]); - expect(colorFactory('catC')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[2]); + expect(colorFactory('catA')).toBe(elasticPaletteColors[0]); + expect(colorFactory('catB')).toBe(elasticPaletteColors[1]); + expect(colorFactory('catC')).toBe(elasticPaletteColors[2]); // if the category is not available in the `categories` list then a default netural is used // this is an edge case and ideally never happen - expect(colorFactory('not_available')).toBe(NEUTRAL_COLOR_DARK[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('not_available')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); it('by default loops colors defined in palette', () => { - const twoColorPalette: ColorMapping.CategoricalPalette = { - id: 'twoColors', - name: 'twoColors', - colorCount: 2, - type: 'categorical', - getColor(indexInRange, isDarkMode, loop) { - return ['red', 'blue'][loop ? indexInRange % 2 : indexInRange]; - }, - }; - - const simplifiedGetPaletteGn = getPalette( - new Map([[twoColorPalette.id, twoColorPalette]]), - NeutralPalette - ); const colorFactory = getColorFactory( { ...DEFAULT_COLOR_MAPPING_CONFIG, @@ -84,37 +72,26 @@ describe('Color mapping - color generation', () => { touched: false, }, ], - paletteId: twoColorPalette.id, + paletteId: KbnPalette.Neutral, }, - simplifiedGetPaletteGn, + palettes, false, { type: 'categories', - categories: ['cat1', 'cat2', 'cat3', 'cat4'], + categories: ['cat1', 'cat2', 'cat3', 'cat4', 'cat5', 'cat6', 'cat7'], } ); - expect(colorFactory('cat1')).toBe('#ff0000'); - expect(colorFactory('cat2')).toBe('#0000ff'); + expect(colorFactory('cat1')).toBe(neutralPaletteColors[0]); + expect(colorFactory('cat2')).toBe(neutralPaletteColors[1]); + expect(colorFactory('cat3')).toBe(neutralPaletteColors[2]); + expect(colorFactory('cat4')).toBe(neutralPaletteColors[3]); + expect(colorFactory('cat5')).toBe(neutralPaletteColors[4]); // the palette will loop depending on the number of colors available - expect(colorFactory('cat3')).toBe('#ff0000'); - expect(colorFactory('cat4')).toBe('#0000ff'); + expect(colorFactory('cat6')).toBe(neutralPaletteColors[0]); + expect(colorFactory('cat7')).toBe(neutralPaletteColors[1]); }); it('returns the unassigned color if configured statically', () => { - const twoColorPalette: ColorMapping.CategoricalPalette = { - id: 'twoColors', - name: 'twoColors', - colorCount: 2, - type: 'categorical', - getColor(indexInRange, darkMode, loop) { - return ['red', 'blue'][loop ? indexInRange % 2 : indexInRange]; - }, - }; - - const simplifiedGetPaletteGn = getPalette( - new Map([[twoColorPalette.id, twoColorPalette]]), - NeutralPalette - ); const colorFactory = getColorFactory( { ...DEFAULT_COLOR_MAPPING_CONFIG, @@ -122,7 +99,7 @@ describe('Color mapping - color generation', () => { { color: { type: 'categorical', - paletteId: NeutralPalette.id, + paletteId: KbnPalette.Neutral, colorIndex: DEFAULT_NEUTRAL_PALETTE_INDEX, }, rule: { @@ -131,33 +108,32 @@ describe('Color mapping - color generation', () => { touched: false, }, ], - paletteId: twoColorPalette.id, }, - simplifiedGetPaletteGn, + palettes, false, { type: 'categories', categories: ['cat1', 'cat2', 'cat3', 'cat4'], } ); - expect(colorFactory('cat1')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); - expect(colorFactory('cat2')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); - expect(colorFactory('cat3')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); - expect(colorFactory('cat4')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('cat1')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('cat2')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('cat3')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('cat4')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); // if the category is not available in the `categories` list then a default netural is used // this is an edge case and ideally never happen - expect(colorFactory('not_available')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('not_available')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); it('handles special tokens, multi-field categories and non-trimmed whitespaces', () => { - const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, getPaletteFn, false, { + const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, palettes, false, { type: 'categories', categories: ['__other__', ['fieldA', 'fieldB'], '__empty__', ' with-whitespaces '], }); - expect(colorFactory('__other__')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); - // expect(colorFactory(['fieldA', 'fieldB'])).toBe(EUI_AMSTERDAM_PALETTE_COLORS[1]); - expect(colorFactory('__empty__')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[2]); - expect(colorFactory(' with-whitespaces ')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[3]); + expect(colorFactory('__other__')).toBe(elasticPaletteColors[0]); + // expect(colorFactory(['fieldA', 'fieldB'])).toBe(elasticPaletteColors[1]); + expect(colorFactory('__empty__')).toBe(elasticPaletteColors[2]); + expect(colorFactory(' with-whitespaces ')).toBe(elasticPaletteColors[3]); }); it('ignores configured assignments in loop mode', () => { @@ -172,17 +148,17 @@ describe('Color mapping - color generation', () => { }, ], }, - getPaletteFn, + palettes, false, { type: 'categories', categories: ['catA', 'catB', 'configuredAssignment', 'nextCat'], } ); - expect(colorFactory('catA')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); - expect(colorFactory('catB')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[1]); + expect(colorFactory('catA')).toBe(elasticPaletteColors[0]); + expect(colorFactory('catB')).toBe(elasticPaletteColors[1]); expect(colorFactory('configuredAssignment')).toBe('red'); - expect(colorFactory('nextCat')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[2]); + expect(colorFactory('nextCat')).toBe(elasticPaletteColors[2]); }); it('color with auto rule are assigned in order of the configured data input', () => { @@ -207,7 +183,7 @@ describe('Color mapping - color generation', () => { }, ], }, - getPaletteFn, + palettes, false, { type: 'categories', @@ -222,7 +198,7 @@ describe('Color mapping - color generation', () => { expect(colorFactory('greenCat')).toBe('green'); // if the category is not available in the `categories` list then a default netural is used // this is an edge case and ideally never happen - expect(colorFactory('not_available')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('not_available')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); it('returns sequential gradient colors from darker to lighter [desc, lightMode]', () => { @@ -234,7 +210,7 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, @@ -242,7 +218,7 @@ describe('Color mapping - color generation', () => { sort: 'desc', }, }, - getPaletteFn, + palettes, false, { type: 'categories', @@ -250,7 +226,7 @@ describe('Color mapping - color generation', () => { } ); // this matches exactly with the initial step selected - expect(toHex(colorFactory('cat1'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[0])); + expect(toHex(colorFactory('cat1'))).toBe(toHex(elasticPaletteColors[0])); expect(toHex(colorFactory('cat2'))).toBe('#93cebc'); expect(toHex(colorFactory('cat3'))).toBe('#cce8e0'); }); @@ -264,7 +240,7 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, @@ -272,7 +248,7 @@ describe('Color mapping - color generation', () => { sort: 'asc', }, }, - getPaletteFn, + palettes, false, { type: 'categories', @@ -284,7 +260,7 @@ describe('Color mapping - color generation', () => { // mid green point expect(toHex(colorFactory('cat2'))).toBe('#93cebc'); // initial gradient color - expect(toHex(colorFactory('cat3'))).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); + expect(toHex(colorFactory('cat3'))).toBe(elasticPaletteColors[0]); }); it('sequential gradients and static color from lighter to darker [asc, lightMode]', () => { const colorFactory = getColorFactory( @@ -300,7 +276,7 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, @@ -312,7 +288,7 @@ describe('Color mapping - color generation', () => { color: { type: 'categorical', colorIndex: DEFAULT_NEUTRAL_PALETTE_INDEX, - paletteId: NeutralPalette.id, + paletteId: KbnPalette.Neutral, }, rule: { type: 'other', @@ -321,7 +297,7 @@ describe('Color mapping - color generation', () => { }, ], }, - getPaletteFn, + palettes, false, { type: 'categories', @@ -329,9 +305,9 @@ describe('Color mapping - color generation', () => { } ); expect(toHex(colorFactory('cat1'))).toBe('#cce8e0'); - expect(toHex(colorFactory('cat2'))).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); + expect(toHex(colorFactory('cat2'))).toBe(elasticPaletteColors[0]); // this matches exactly with the initial step selected - expect(toHex(colorFactory('cat3'))).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(toHex(colorFactory('cat3'))).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); it('returns 2 colors gradient [desc, lightMode]', () => { @@ -343,13 +319,13 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 2, touched: false, }, @@ -357,16 +333,16 @@ describe('Color mapping - color generation', () => { sort: 'desc', }, }, - getPaletteFn, + palettes, false, { type: 'categories', categories: ['cat1', 'cat2', 'cat3'], } ); - expect(toHex(colorFactory('cat1'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[0])); // EUI green - expect(toHex(colorFactory('cat2'))).toBe('#a4908f'); // red gray green - expect(toHex(colorFactory('cat3'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[2])); // EUI pink + expect(toHex(colorFactory('cat1'))).toBe(toHex(elasticPaletteColors[0])); + expect(toHex(colorFactory('cat2'))).toBe('#a4908f'); + expect(toHex(colorFactory('cat3'))).toBe(toHex(elasticPaletteColors[2])); }); it('returns divergent gradient [asc, darkMode]', () => { @@ -378,14 +354,14 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, - { type: 'categorical', paletteId: NeutralPalette.id, colorIndex: 0, touched: false }, + { type: 'categorical', paletteId: KbnPalette.Neutral, colorIndex: 0, touched: false }, { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 2, touched: false, }, @@ -393,18 +369,18 @@ describe('Color mapping - color generation', () => { sort: 'asc', // testing in ascending order }, }, - getPaletteFn, + palettes, true, // testing in dark mode { type: 'categories', categories: ['cat1', 'cat2', 'cat3'], } ); - expect(toHex(colorFactory('cat1'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[2])); // EUI pink - expect(toHex(colorFactory('cat2'))).toBe(NEUTRAL_COLOR_DARK[0]); // NEUTRAL LIGHT GRAY - expect(toHex(colorFactory('cat3'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[0])); // EUI green - // if the category is not available in the `categories` list then a default netural is used + expect(toHex(colorFactory('cat1'))).toBe(toHex(elasticPaletteColors[2])); + expect(toHex(colorFactory('cat2'))).toBe(neutralPaletteColors[0]); + expect(toHex(colorFactory('cat3'))).toBe(toHex(elasticPaletteColors[0])); + // if the category is not available in the `categories` list then a default neutral is used // this is an edge case and ideally never happen - expect(colorFactory('not_available')).toBe(NEUTRAL_COLOR_DARK[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('not_available')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); }); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts b/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts index 373e56e3cb8f6..0031ac81908c0 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts @@ -9,9 +9,9 @@ import chroma from 'chroma-js'; import { findLast } from 'lodash'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '../config'; import { changeAlpha, combineColors, getValidColor } from './color_math'; -import { getPalette, NeutralPalette } from '../palettes'; import { ColorMappingInputData } from '../categorical_color_mapping'; import { ruleMatch } from './rule_matching'; import { GradientColorMode } from '../config/types'; @@ -25,7 +25,7 @@ export function getAssignmentColor( color: | ColorMapping.Config['assignments'][number]['color'] | (ColorMapping.LoopColor & { paletteId: string; colorIndex: number }), - getPaletteFn: ReturnType, + palettes: KbnPalettes, isDarkMode: boolean, index: number, total: number @@ -34,12 +34,12 @@ export function getAssignmentColor( case 'colorCode': case 'categorical': case 'loop': - return getColor(color, getPaletteFn, isDarkMode); + return getColor(color, palettes); case 'gradient': { if (colorMode.type === 'categorical') { return 'red'; } - const colorScale = getGradientColorScale(colorMode, getPaletteFn, isDarkMode); + const colorScale = getGradientColorScale(colorMode, palettes, isDarkMode); return total === 0 ? 'red' : total === 1 ? colorScale(0) : colorScale(index / (total - 1)); } } @@ -50,19 +50,16 @@ export function getColor( | ColorMapping.ColorCode | ColorMapping.CategoricalColor | (ColorMapping.LoopColor & { paletteId: string; colorIndex: number }), - getPaletteFn: ReturnType, - isDarkMode: boolean + palettes: KbnPalettes ): string { return color.type === 'colorCode' ? color.colorCode - : getValidColor( - getPaletteFn(color.paletteId).getColor(color.colorIndex, isDarkMode, true) - ).hex(); + : getValidColor(palettes.get(color.paletteId).getColor(color.colorIndex)).hex(); } export function getColorFactory( { assignments, specialAssignments, colorMode, paletteId }: ColorMapping.Config, - getPaletteFn: ReturnType, + palettes: KbnPalettes, isDarkMode: boolean, data: ColorMappingInputData ): (category: string | string[]) => string { @@ -104,7 +101,7 @@ export function getColorFactory( return getAssignmentColor( colorMode, autoByOrderAssignments[nonAssignedCategoryIndex].color, - getPaletteFn, + palettes, isDarkMode, autoAssignmentIndex, assignments.length @@ -129,7 +126,7 @@ export function getColorFactory( paletteId, } : specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX].color, - getPaletteFn, + palettes, isDarkMode, indexIfGradient, totalColorsIfGradient @@ -146,7 +143,7 @@ export function getColorFactory( return getAssignmentColor( colorMode, assignment.color, - getPaletteFn, + palettes, isDarkMode, matchingAssignmentIndex, assignments.length @@ -155,30 +152,29 @@ export function getColorFactory( return getColor( { type: 'categorical', - paletteId: NeutralPalette.id, + paletteId: KbnPalette.Neutral, colorIndex: DEFAULT_NEUTRAL_PALETTE_INDEX, }, - getPaletteFn, - isDarkMode + palettes ); }; } export function getGradientColorScale( colorMode: GradientColorMode, - getPaletteFn: ReturnType, + palettes: KbnPalettes, isDarkMode: boolean ): (value: number) => string { const steps = colorMode.steps.length === 1 ? [ - getColor(colorMode.steps[0], getPaletteFn, isDarkMode), + getColor(colorMode.steps[0], palettes), combineColors( - changeAlpha(getColor(colorMode.steps[0], getPaletteFn, isDarkMode), 0.3), + changeAlpha(getColor(colorMode.steps[0], palettes), 0.3), isDarkMode ? 'black' : 'white' ), ] - : colorMode.steps.map((d) => getColor(d, getPaletteFn, isDarkMode)); + : colorMode.steps.map((d) => getColor(d, palettes)); steps.sort(() => (colorMode.sort === 'asc' ? -1 : 1)); const scale = chroma.scale(steps).mode('lab'); return (value: number) => scale(value).hex(); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/assignment.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/assignment.tsx index 0606aa94e6aa8..5a629a18cf959 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/assignment.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/assignment.tsx @@ -13,6 +13,7 @@ import { EuiButtonIcon, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; +import { IKbnPalette, KbnPalettes } from '@kbn/palettes'; import { removeAssignment, updateAssignmentColor, @@ -21,7 +22,6 @@ import { import { ColorMapping } from '../../config'; import { Range } from './range'; import { Match } from './match'; -import { getPalette } from '../../palettes'; import { ColorMappingInputData } from '../../categorical_color_mapping'; import { ColorSwatch } from '../color_picker/color_swatch'; @@ -33,8 +33,8 @@ export function Assignment({ index, total, palette, + palettes, colorMode, - getPaletteFn, isDarkMode, specialTokens, assignmentValuesCounter, @@ -45,8 +45,8 @@ export function Assignment({ colorMode: ColorMapping.Config['colorMode']; assignment: ColorMapping.Config['assignments'][number]; disableDelete: boolean; - palette: ColorMapping.CategoricalPalette; - getPaletteFn: ReturnType; + palette: IKbnPalette; + palettes: KbnPalettes; isDarkMode: boolean; specialTokens: Map; assignmentValuesCounter: Map; @@ -62,9 +62,9 @@ export function Assignment({ swatchShape="square" colorMode={colorMode} assignmentColor={assignment.color} - getPaletteFn={getPaletteFn} index={index} palette={palette} + palettes={palettes} total={total} onColorChange={(color) => { dispatch(updateAssignmentColor({ assignmentIndex: index, color })); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/special_assignment.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/special_assignment.tsx index 3bdab18cbf19e..4834ccc57d822 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/special_assignment.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/special_assignment.tsx @@ -9,8 +9,7 @@ import { useDispatch } from 'react-redux'; import React from 'react'; -import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; +import { IKbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorSwatch } from '../color_picker/color_swatch'; import { updateSpecialAssignmentColor } from '../../state/color_mapping'; import { ColorCode, CategoricalColor } from '../../config/types'; @@ -19,15 +18,15 @@ export function SpecialAssignment({ assignmentColor, index, palette, - getPaletteFn, + palettes, isDarkMode, total, }: { isDarkMode: boolean; index: number; assignmentColor: CategoricalColor | ColorCode; - palette: ColorMapping.CategoricalPalette; - getPaletteFn: ReturnType; + palette: IKbnPalette; + palettes: KbnPalettes; total: number; }) { const dispatch = useDispatch(); @@ -36,7 +35,7 @@ export function SpecialAssignment({ forType="specialAssignment" colorMode={{ type: 'categorical' }} assignmentColor={assignmentColor} - getPaletteFn={getPaletteFn} + palettes={palettes} index={index} palette={palette} total={total} diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_picker.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_picker.tsx index e4d42b9645698..eafa07793dd5c 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_picker.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_picker.tsx @@ -10,32 +10,29 @@ import React, { useState } from 'react'; import { EuiButtonEmpty, EuiPopoverTitle, EuiTab, EuiTabs, EuiHorizontalRule } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { IKbnPalette, KbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; import { PaletteColors } from './palette_colors'; import { RGBPicker } from './rgb_picker'; -import { NeutralPalette } from '../../palettes/neutral'; export function ColorPicker({ - palette, - getPaletteFn, color, + palette, + palettes, close, selectColor, - isDarkMode, deleteStep, }: { color: ColorMapping.CategoricalColor | ColorMapping.ColorCode; - getPaletteFn: ReturnType; - palette: ColorMapping.CategoricalPalette; - isDarkMode: boolean; + palette: IKbnPalette; + palettes: KbnPalettes; close: () => void; selectColor: (color: ColorMapping.CategoricalColor | ColorMapping.ColorCode) => void; deleteStep?: () => void; }) { const [tab, setTab] = useState( color.type === 'categorical' && - (color.paletteId === palette.id || color.paletteId === NeutralPalette.id) + (color.paletteId === palette.id || color.paletteId === KbnPalette.Neutral) ? 'palette' : 'custom' ); @@ -64,20 +61,12 @@ export function ColorPicker({ {tab === 'palette' ? ( ) : ( - + )} {deleteStep ? ( <> diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_swatch.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_swatch.tsx index 590d66018e803..b1af9d364efd4 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_swatch.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_swatch.tsx @@ -18,10 +18,10 @@ import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; +import { IKbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorPicker } from './color_picker'; import { getAssignmentColor } from '../../color/color_handling'; import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; import { removeGradientColorStep } from '../../state/color_mapping'; import { selectColorPickerVisibility } from '../../state/selectors'; @@ -31,22 +31,23 @@ import { getValidColor } from '../../color/color_math'; interface ColorPickerSwatchProps { colorMode: ColorMapping.Config['colorMode']; assignmentColor: ColorMapping.Config['assignments'][number]['color']; - getPaletteFn: ReturnType; index: number; total: number; - palette: ColorMapping.CategoricalPalette; + palette: IKbnPalette; + palettes: KbnPalettes; onColorChange: (color: ColorMapping.CategoricalColor | ColorMapping.ColorCode) => void; swatchShape: 'square' | 'round'; isDarkMode: boolean; forType: 'assignment' | 'specialAssignment' | 'gradient'; } + export const ColorSwatch = ({ colorMode, assignmentColor, - getPaletteFn, index, total, palette, + palettes, onColorChange, swatchShape, isDarkMode, @@ -61,7 +62,7 @@ export const ColorSwatch = ({ const colorHex = getAssignmentColor( colorMode, assignmentColor, - getPaletteFn, + palettes, isDarkMode, index, total @@ -147,11 +148,9 @@ export const ColorSwatch = ({ } color={assignmentColor} palette={palette} - getPaletteFn={getPaletteFn} + palettes={palettes} close={() => dispatch(hideColorPickerVisibility())} - isDarkMode={isDarkMode} selectColor={(color) => { - // dispatch update onColorChange(color); }} deleteStep={ diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/palette_colors.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/palette_colors.tsx index 3f58ed5d564e9..0ed0d8d68bb63 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/palette_colors.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/palette_colors.tsx @@ -19,35 +19,33 @@ import { EuiSpacer, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { IKbnPalette, KbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; import { isSameColor } from '../../color/color_math'; -import { NeutralPalette } from '../../palettes/neutral'; export function PaletteColors({ palette, - isDarkMode, + palettes, color, - getPaletteFn, selectColor, }: { - palette: ColorMapping.CategoricalPalette; - isDarkMode: boolean; + palette: IKbnPalette; + palettes: KbnPalettes; color: ColorMapping.CategoricalColor | ColorMapping.ColorCode; - getPaletteFn: ReturnType; selectColor: (color: ColorMapping.CategoricalColor | ColorMapping.ColorCode) => void; }) { const colors = Array.from({ length: palette.colorCount }, (d, i) => { - return palette.getColor(i, isDarkMode, false); + return palette.getColor(i); }); - const neutralColors = Array.from({ length: NeutralPalette.colorCount }, (d, i) => { - return NeutralPalette.getColor(i, isDarkMode, false); + const neutralPalette = palettes.get(KbnPalette.Neutral); + const neutralColors = Array.from({ length: neutralPalette.colorCount }, (d, i) => { + return neutralPalette.getColor(i); }); const originalColor = color.type === 'categorical' - ? color.paletteId === NeutralPalette.id - ? NeutralPalette.getColor(color.colorIndex, isDarkMode, false) - : getPaletteFn(color.paletteId).getColor(color.colorIndex, isDarkMode, false) + ? color.paletteId === neutralPalette.id + ? neutralPalette.getColor(color.colorIndex) + : palettes.get(color.paletteId).getColor(color.colorIndex) : color.colorCode; return ( <> @@ -126,7 +124,7 @@ export function PaletteColors({ onClick={() => selectColor({ type: 'categorical', - paletteId: NeutralPalette.id, + paletteId: neutralPalette.id, colorIndex: index, }) } diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/rgb_picker.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/rgb_picker.tsx index 6c701fbfebacc..175d3ae36e71a 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/rgb_picker.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/rgb_picker.tsx @@ -22,24 +22,19 @@ import chromajs from 'chroma-js'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; import { i18n } from '@kbn/i18n'; +import { KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '../../config'; import { hasEnoughContrast } from '../../color/color_math'; -import { getPalette } from '../../palettes'; export function RGBPicker({ - isDarkMode, color, - getPaletteFn, + palettes, selectColor, - close, }: { - palette: ColorMapping.CategoricalPalette; - isDarkMode: boolean; color: ColorMapping.CategoricalColor | ColorMapping.ColorCode; - getPaletteFn: ReturnType; + palettes: KbnPalettes; selectColor: (color: ColorMapping.CategoricalColor | ColorMapping.ColorCode) => void; - close: () => void; }) { const [customColorMappingColor, setCustomColorMappingColor] = useState< ColorMapping.CategoricalColor | ColorMapping.ColorCode @@ -47,11 +42,7 @@ export function RGBPicker({ const customColorHex = customColorMappingColor.type === 'categorical' - ? getPaletteFn(customColorMappingColor.paletteId).getColor( - customColorMappingColor.colorIndex, - isDarkMode, - false - ) + ? palettes.get(customColorMappingColor.paletteId).getColor(customColorMappingColor.colorIndex) : customColorMappingColor.colorCode; const [colorTextInput, setColorTextInput] = useState(customColorHex); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/container/assigments.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/container/assigments.tsx index 1f9c37b1c60b6..6abe702ca8bc3 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/container/assigments.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/container/assigments.tsx @@ -29,6 +29,7 @@ import { euiThemeVars } from '@kbn/ui-theme'; import { i18n } from '@kbn/i18n'; import { useDispatch, useSelector } from 'react-redux'; import { findLast } from 'lodash'; +import { KbnPalettes } from '@kbn/palettes'; import { Assignment } from '../assignment/assignment'; import { addNewAssignment, @@ -38,7 +39,6 @@ import { import { selectColorMode, selectComputedAssignments, selectPalette } from '../../state/selectors'; import { ColorMappingInputData } from '../../categorical_color_mapping'; import { ColorMapping } from '../../config'; -import { getPalette, NeutralPalette } from '../../palettes'; import { ruleMatch } from '../../color/rule_matching'; export function AssignmentsConfig({ @@ -47,7 +47,7 @@ export function AssignmentsConfig({ isDarkMode, specialTokens, }: { - palettes: Map; + palettes: KbnPalettes; data: ColorMappingInputData; isDarkMode: boolean; /** map between original and formatted tokens used to handle special cases, like the Other bucket and the empty bucket */ @@ -56,8 +56,7 @@ export function AssignmentsConfig({ const [showOtherActions, setShowOtherActions] = useState(false); const dispatch = useDispatch(); - const getPaletteFn = getPalette(palettes, NeutralPalette); - const palette = useSelector(selectPalette(getPaletteFn)); + const palette = useSelector(selectPalette(palettes)); const colorMode = useSelector(selectColorMode); const assignments = useSelector(selectComputedAssignments); @@ -100,13 +99,13 @@ export function AssignmentsConfig({ ? { type: 'categorical', paletteId: palette.id, - colorIndex: nextCategoricalIndex % palette.colorCount, + colorIndex: nextCategoricalIndex % palette.colors().length, } : { type: 'gradient' }, touched: false, }) ); - }, [assignments, colorMode.type, data.type, dispatch, palette.colorCount, palette.id]); + }, [assignments, colorMode.type, data.type, dispatch, palette]); const onClickAddAllCurrentCategories = useCallback(() => { if (data.type === 'categories') { @@ -128,7 +127,7 @@ export function AssignmentsConfig({ ? { type: 'categorical', paletteId: palette.id, - colorIndex: (nextCategoricalIndex + i) % palette.colorCount, + colorIndex: (nextCategoricalIndex + i) % palette.colors().length, } : { type: 'gradient' }, touched: false, @@ -137,15 +136,7 @@ export function AssignmentsConfig({ ); dispatch(addNewAssignments(newAssignments)); } - }, [ - dispatch, - assignments, - colorMode.type, - data.type, - palette.colorCount, - palette.id, - unmatchingCategories, - ]); + }, [data.type, assignments, unmatchingCategories, dispatch, colorMode.type, palette]); return ( ; + palettes: KbnPalettes; data: ColorMappingInputData; isDarkMode: boolean; /** map between original and formatted tokens used to handle special cases, like the Other bucket and the empty bucket */ specialTokens: Map; }) { const dispatch = useDispatch(); - - const getPaletteFn = getPalette(palettes, NeutralPalette); - - const palette = useSelector(selectPalette(getPaletteFn)); + const palette = useSelector(selectPalette(palettes)); const colorMode = useSelector(selectColorMode); const assignments = useSelector(selectComputedAssignments); @@ -55,14 +50,10 @@ export function Container({ gutterSize="s" > - + - + @@ -105,7 +96,7 @@ export function Container({ > diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/container/unassigned_terms_config.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/container/unassigned_terms_config.tsx index 3a7469d120f10..4ebaadeeb7b82 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/container/unassigned_terms_config.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/container/unassigned_terms_config.tsx @@ -19,14 +19,13 @@ import { import { i18n } from '@kbn/i18n'; import { useDispatch, useSelector } from 'react-redux'; import { css } from '@emotion/react'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import { updateSpecialAssignmentColor } from '../../state/color_mapping'; -import { getPalette, NeutralPalette } from '../../palettes'; import { DEFAULT_NEUTRAL_PALETTE_INDEX, DEFAULT_OTHER_ASSIGNMENT_INDEX, } from '../../config/default_color_mapping'; import { SpecialAssignment } from '../assignment/special_assignment'; -import { ColorMapping } from '../../config'; import { selectColorMode, selectPalette, selectSpecialAssignments } from '../../state/selectors'; import { ColorMappingInputData } from '../../categorical_color_mapping'; @@ -35,15 +34,13 @@ export function UnassignedTermsConfig({ data, isDarkMode, }: { - palettes: Map; + palettes: KbnPalettes; data: ColorMappingInputData; isDarkMode: boolean; }) { const dispatch = useDispatch(); - - const getPaletteFn = getPalette(palettes, NeutralPalette); - - const palette = useSelector(selectPalette(getPaletteFn)); + const neutralPalette = palettes.get(KbnPalette.Neutral); + const palette = useSelector(selectPalette(palettes)); const colorMode = useSelector(selectColorMode); const specialAssignments = useSelector(selectSpecialAssignments); const otherAssignment = specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX]; @@ -99,7 +96,7 @@ export function UnassignedTermsConfig({ : { type: 'categorical', colorIndex: DEFAULT_NEUTRAL_PALETTE_INDEX, - paletteId: NeutralPalette.id, + paletteId: neutralPalette.id, }, }) ); @@ -122,7 +119,7 @@ export function UnassignedTermsConfig({ index={0} palette={palette} isDarkMode={isDarkMode} - getPaletteFn={getPaletteFn} + palettes={palettes} assignmentColor={otherAssignment.color} total={specialAssignments.length} /> diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient.tsx index c08834fdd384a..5fc9dc40f1589 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient.tsx @@ -11,9 +11,9 @@ import React from 'react'; import { euiThemeVars } from '@kbn/ui-theme'; import { css } from '@emotion/react'; import { useDispatch } from 'react-redux'; +import { KbnPalettes } from '@kbn/palettes'; import { changeAlpha } from '../../color/color_math'; import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; import { getGradientColorScale } from '../../color/color_handling'; import { AddStop } from './gradient_add_stop'; import { ColorSwatch } from '../color_picker/color_swatch'; @@ -22,21 +22,21 @@ import { updateGradientColorStep } from '../../state/color_mapping'; export function Gradient({ paletteId, colorMode, - getPaletteFn, isDarkMode, + palettes, }: { paletteId: string; isDarkMode: boolean; colorMode: ColorMapping.Config['colorMode']; - getPaletteFn: ReturnType; + palettes: KbnPalettes; }) { const dispatch = useDispatch(); if (colorMode.type === 'categorical') { return null; } - const currentPalette = getPaletteFn(paletteId); - const gradientColorScale = getGradientColorScale(colorMode, getPaletteFn, isDarkMode); + const currentPalette = palettes.get(paletteId); + const gradientColorScale = getGradientColorScale(colorMode, palettes, isDarkMode); const startStepColor = colorMode.sort === 'asc' @@ -104,7 +104,7 @@ export function Gradient({ forType="gradient" colorMode={colorMode} assignmentColor={startStepColor} - getPaletteFn={getPaletteFn} + palettes={palettes} index={startStepIndex} palette={currentPalette} total={colorMode.steps.length} @@ -133,7 +133,7 @@ export function Gradient({ forType="gradient" colorMode={colorMode} assignmentColor={middleStepColor} - getPaletteFn={getPaletteFn} + palettes={palettes} index={middleStepIndex} palette={currentPalette} total={colorMode.steps.length} @@ -161,7 +161,7 @@ export function Gradient({ forType="gradient" colorMode={colorMode} assignmentColor={endStepColor} - getPaletteFn={getPaletteFn} + palettes={palettes} index={endStepIndex} palette={currentPalette} total={colorMode.steps.length} diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient_add_stop.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient_add_stop.tsx index 6b89f8143fb8f..1c6736262e217 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient_add_stop.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient_add_stop.tsx @@ -20,6 +20,7 @@ import { import { useDispatch } from 'react-redux'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; +import { IKbnPalette } from '@kbn/palettes'; import { ColorMapping } from '../../config'; import { addGradientColorStep } from '../../state/color_mapping'; import { colorPickerVisibility } from '../../state/ui'; @@ -30,7 +31,7 @@ export function AddStop({ at, }: { colorMode: ColorMapping.GradientColorMode; - currentPalette: ColorMapping.CategoricalPalette; + currentPalette: IKbnPalette; at: number; }) { const euiTheme = useEuiTheme(); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/palette_selector.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/palette_selector.tsx index 1d909f000a417..54c6d05bbed18 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/palette_selector.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/palette_selector.tsx @@ -7,25 +7,16 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useState, useMemo } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { EuiColorPalettePicker, EuiConfirmModal, EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { KbnPalettes } from '@kbn/palettes'; import { RootState, updatePalette } from '../../state/color_mapping'; -import { ColorMapping } from '../../config'; import { updateAssignmentsPalette, updateColorModePalette } from '../../config/assignments'; -import { getPalette } from '../../palettes'; -export function PaletteSelector({ - palettes, - getPaletteFn, - isDarkMode, -}: { - getPaletteFn: ReturnType; - palettes: Map; - isDarkMode: boolean; -}) { +export function PaletteSelector({ palettes }: { palettes: KbnPalettes }) { const dispatch = useDispatch(); const model = useSelector((state: RootState) => state.colorMapping); @@ -38,7 +29,7 @@ export function PaletteSelector({ model.assignments, model.colorMode, selectedPaletteId, - getPaletteFn, + palettes, preserveColorChanges ), colorMode: updateColorModePalette( @@ -49,7 +40,7 @@ export function PaletteSelector({ }) ); }, - [getPaletteFn, model, dispatch] + [dispatch, model.assignments, model.colorMode, palettes] ); const [preserveModalPaletteId, setPreserveModalPaletteId] = useState(null); @@ -85,6 +76,11 @@ export function PaletteSelector({ ) : null; + const currentPaletteId = useMemo( + () => palettes.get(model.paletteId).id, // need to resolve aliased id + [model.paletteId, palettes] + ); + return ( <> {preserveChangesModal} @@ -97,14 +93,15 @@ export function PaletteSelector({ d.name !== 'Neutral') + palettes={palettes + .getAll() + .filter((d) => d.type === 'categorical') .map((palette) => ({ 'data-test-subj': `kbnColoring_ColorMapping_Palette-${palette.id}`, value: palette.id, title: palette.name, palette: Array.from({ length: palette.colorCount }, (_, i) => { - return palette.getColor(i, isDarkMode, false); + return palette.getColor(i); }), type: 'fixed', }))} @@ -118,7 +115,7 @@ export function PaletteSelector({ switchPaletteFn(selectedPaletteId, false); } }} - valueOfSelected={model.paletteId} + valueOfSelected={currentPaletteId} selectionDisplay={'palette'} compressed={true} /> diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/scale.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/scale.tsx index f7249aa12d576..42fea54d6fdb7 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/scale.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/scale.tsx @@ -12,12 +12,12 @@ import { useSelector, useDispatch } from 'react-redux'; import { EuiButtonGroup, EuiConfirmModal, EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { KbnPalettes } from '@kbn/palettes'; import { RootState, updatePalette } from '../../state/color_mapping'; import { ColorMapping } from '../../config'; import { updateAssignmentsPalette } from '../../config/assignments'; -import { getPalette } from '../../palettes'; -export function ScaleMode({ getPaletteFn }: { getPaletteFn: ReturnType }) { +export function ScaleMode({ palettes }: { palettes: KbnPalettes }) { const dispatch = useDispatch(); const colorMode = useSelector((state: RootState) => state.colorMapping.colorMode); const model = useSelector((state: RootState) => state.colorMapping); @@ -46,12 +46,12 @@ export function ScaleMode({ getPaletteFn }: { getPaletteFn: ReturnType( diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/config/assignments.ts b/packages/kbn-coloring/src/shared_components/color_mapping/config/assignments.ts index 3d30ce3c7f607..5f039c05074db 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/config/assignments.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/config/assignments.ts @@ -7,17 +7,17 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { KbnPalettes } from '@kbn/palettes'; import type { ColorMapping } from '.'; -import { getPalette } from '../palettes'; export function updateAssignmentsPalette( assignments: ColorMapping.Config['assignments'], colorMode: ColorMapping.Config['colorMode'], paletteId: string, - getPaletteFn: ReturnType, + palettes: KbnPalettes, preserveColorChanges: boolean ): ColorMapping.Config['assignments'] { - const palette = getPaletteFn(paletteId); + const palette = palettes.get(paletteId); return assignments.map(({ rule, color, touched }, index) => { if (preserveColorChanges && touched) { return { rule, color, touched }; @@ -27,7 +27,7 @@ export function updateAssignmentsPalette( ? { type: 'categorical', paletteId, - colorIndex: index % palette.colorCount, + colorIndex: index % palette.colors().length, } : { type: 'gradient' }; return { diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts b/packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts index b613d0d76adb8..1005f5d89855a 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts @@ -7,11 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '.'; -import { AVAILABLE_PALETTES, getPalette } from '../palettes'; -import { EUIAmsterdamColorBlindPalette } from '../palettes/eui_amsterdam'; -import { NeutralPalette } from '../palettes/neutral'; import { getColor, getGradientColorScale } from '../color/color_handling'; +import { DEFAULT_FALLBACK_PALETTE } from '../../../palettes'; export const DEFAULT_NEUTRAL_PALETTE_INDEX = 1; export const DEFAULT_OTHER_ASSIGNMENT_INDEX = 0; @@ -32,32 +31,31 @@ export const DEFAULT_COLOR_MAPPING_CONFIG: ColorMapping.Config = { touched: false, }, ], - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: DEFAULT_FALLBACK_PALETTE, colorMode: { type: 'categorical', }, }; export function getPaletteColors( - isDarkMode: boolean, + palettes: KbnPalettes, colorMappings?: ColorMapping.Config ): string[] { const colorMappingModel = colorMappings ?? { ...DEFAULT_COLOR_MAPPING_CONFIG }; - const palette = getPalette(AVAILABLE_PALETTES, NeutralPalette)(colorMappingModel.paletteId); - return getPaletteColorsFromPaletteId(isDarkMode, palette.id); + const palette = palettes.get(colorMappingModel.paletteId); + return getPaletteColorsFromPaletteId(palettes, palette.id); } export function getPaletteColorsFromPaletteId( - isDarkMode: boolean, + palettes: KbnPalettes, paletteId: ColorMapping.Config['paletteId'] ): string[] { - const palette = getPalette(AVAILABLE_PALETTES, NeutralPalette)(paletteId); - return Array.from({ length: palette.colorCount }, (d, i) => - palette.getColor(i, isDarkMode, true) - ); + const palette = palettes.get(paletteId); + return Array.from({ length: palette.colorCount }, (d, i) => palette.getColor(i)); } export function getColorsFromMapping( + palettes: KbnPalettes, isDarkMode: boolean, colorMappings?: ColorMapping.Config ): string[] { @@ -65,27 +63,18 @@ export function getColorsFromMapping( ...DEFAULT_COLOR_MAPPING_CONFIG, }; - const getPaletteFn = getPalette(AVAILABLE_PALETTES, NeutralPalette); if (colorMode.type === 'gradient') { - const colorScale = getGradientColorScale(colorMode, getPaletteFn, isDarkMode); + const colorScale = getGradientColorScale(colorMode, palettes, isDarkMode); return Array.from({ length: 6 }, (d, i) => colorScale(i / 6)); } else { - const palette = getPaletteFn(paletteId); + const palette = palettes.get(paletteId); const otherColors = specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX].color.type === 'loop' - ? Array.from({ length: palette.colorCount }, (d, i) => - palette.getColor(i, isDarkMode, true) - ) - : [ - getColor( - specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX].color, - getPaletteFn, - isDarkMode - ), - ]; + ? Array.from({ length: palette.colorCount }, (d, i) => palette.getColor(i)) + : [getColor(specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX].color, palettes)]; return [ ...assignments.map((a) => { - return a.color.type === 'gradient' ? '' : getColor(a.color, getPaletteFn, isDarkMode); + return a.color.type === 'gradient' ? '' : getColor(a.color, palettes); }), ...otherColors, ].filter((color) => color !== ''); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/config/types.ts b/packages/kbn-coloring/src/shared_components/color_mapping/config/types.ts index 1c8b984dc52dd..79be2aa615c3c 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/config/types.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/config/types.ts @@ -150,11 +150,3 @@ export interface Config { >; specialAssignments: Array>; } - -export interface CategoricalPalette { - id: string; - name: string; - type: 'categorical'; - colorCount: number; - getColor: (valueInRange: number, isDarkMode: boolean, loop: boolean) => string; -} diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/index.ts b/packages/kbn-coloring/src/shared_components/color_mapping/index.ts index 6337447c1038b..5cba53f0eadcc 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/index.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/index.ts @@ -15,7 +15,6 @@ export { } from './categorical_color_mapping'; export type { ColorMappingInputData } from './categorical_color_mapping'; export type { ColorMapping } from './config'; -export * from './palettes'; export * from './color/color_handling'; export { SPECIAL_TOKENS_STRING_CONVERSION, getSpecialString } from './color/rule_matching'; export { diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts deleted file mode 100644 index bd8492823b4db..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; - -export const ELASTIC_BRAND_PALETTE_COLORS = [ - '#20377d', - '#7de2d1', - '#ff957d', - '#f04e98', - '#0077cc', - '#fec514', -]; - -export const ElasticBrandPalette: ColorMapping.CategoricalPalette = { - id: 'elastic_brand_2023', - name: 'Elastic Brand', - colorCount: ELASTIC_BRAND_PALETTE_COLORS.length, - type: 'categorical', - getColor(indexInRange, isDarkMode, loop) { - return ELASTIC_BRAND_PALETTE_COLORS[ - loop ? indexInRange % ELASTIC_BRAND_PALETTE_COLORS.length : indexInRange - ]; - }, -}; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts deleted file mode 100644 index 7a29bc9f343e0..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; - -export const EUI_AMSTERDAM_PALETTE_COLORS = [ - '#54b399', - '#6092c0', - '#d36086', - '#9170b8', - '#ca8eae', - '#d6bf57', - '#b9a888', - '#da8b45', - '#aa6556', - '#e7664c', -]; - -export const EUIAmsterdamColorBlindPalette: ColorMapping.CategoricalPalette = { - id: 'eui_amsterdam_color_blind', - name: 'Default', - colorCount: EUI_AMSTERDAM_PALETTE_COLORS.length, - type: 'categorical', - getColor(indexInRange, isDarkMode, loop) { - return EUI_AMSTERDAM_PALETTE_COLORS[ - loop ? indexInRange % EUI_AMSTERDAM_PALETTE_COLORS.length : indexInRange - ]; - }, -}; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts deleted file mode 100644 index ca3d5b9503885..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; -import { ElasticBrandPalette } from './elastic_brand'; -import { EUIAmsterdamColorBlindPalette } from './eui_amsterdam'; -import { KibanaV7LegacyPalette } from './kibana_legacy'; -import { NeutralPalette } from './neutral'; - -export const AVAILABLE_PALETTES = new Map([ - [EUIAmsterdamColorBlindPalette.id, EUIAmsterdamColorBlindPalette], - [ElasticBrandPalette.id, ElasticBrandPalette], - [KibanaV7LegacyPalette.id, KibanaV7LegacyPalette], - [NeutralPalette.id, NeutralPalette], -]); - -/** - * This function should be instanciated once at the root of the component with the available palettes and - * a choosed default one and shared across components to keep a single point of truth of the available palettes and the default - * one. - */ -export function getPalette( - palettes: Map, - defaultPalette: ColorMapping.CategoricalPalette -): (paletteId: string) => ColorMapping.CategoricalPalette { - return (paletteId) => palettes.get(paletteId) ?? defaultPalette; -} - -export * from './eui_amsterdam'; -export * from './elastic_brand'; -export * from './kibana_legacy'; -export * from './neutral'; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts deleted file mode 100644 index c0c25049700fe..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; - -export const KIBANA_V7_LEGACY_PALETTE_COLORS = [ - '#00a69b', - '#57c17b', - '#6f87d8', - '#663db8', - '#bc52bc', - '#9e3533', - '#daa05d', -]; - -export const KibanaV7LegacyPalette: ColorMapping.CategoricalPalette = { - id: 'kibana_v7_legacy', - name: 'Kibana Legacy', - colorCount: KIBANA_V7_LEGACY_PALETTE_COLORS.length, - type: 'categorical', - getColor(indexInRange, isDarkMode, loop) { - return KIBANA_V7_LEGACY_PALETTE_COLORS[ - loop ? indexInRange % KIBANA_V7_LEGACY_PALETTE_COLORS.length : indexInRange - ]; - }, -}; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts deleted file mode 100644 index 5d41ab0fa3c94..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; - -const schemeGreys = ['#f2f4fb', '#d4d9e5', '#98a2b3', '#696f7d', '#353642']; -export const NEUTRAL_COLOR_LIGHT = schemeGreys.slice(); -export const NEUTRAL_COLOR_DARK = schemeGreys.slice().reverse(); - -export const NeutralPalette: ColorMapping.CategoricalPalette = { - id: 'neutral', - name: 'Neutral', - colorCount: NEUTRAL_COLOR_LIGHT.length, - type: 'categorical', - getColor(valueInRange, isDarkMode) { - return isDarkMode ? NEUTRAL_COLOR_DARK[valueInRange] : NEUTRAL_COLOR_LIGHT[valueInRange]; - }, -}; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/state/selectors.ts b/packages/kbn-coloring/src/shared_components/color_mapping/state/selectors.ts index 05454ead22a61..3f8053aa8e922 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/state/selectors.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/state/selectors.ts @@ -7,11 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { getPalette } from '../palettes'; +import { KbnPalettes } from '@kbn/palettes'; import { RootState } from './color_mapping'; -export function selectPalette(getPaletteFn: ReturnType) { - return (state: RootState) => getPaletteFn(state.colorMapping.paletteId); +export function selectPalette(palettes: KbnPalettes) { + return (state: RootState) => palettes.get(state.colorMapping.paletteId); } export function selectColorMode(state: RootState) { return state.colorMapping.colorMode; diff --git a/packages/kbn-coloring/tsconfig.json b/packages/kbn-coloring/tsconfig.json index 3a97faa1b9d3a..c3be4a82e8baa 100644 --- a/packages/kbn-coloring/tsconfig.json +++ b/packages/kbn-coloring/tsconfig.json @@ -23,6 +23,7 @@ "@kbn/data-plugin", "@kbn/ui-theme", "@kbn/visualization-utils", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/packages/kbn-data-stream-adapter/index.ts b/packages/kbn-data-stream-adapter/index.ts deleted file mode 100644 index f03a384dca1ff..0000000000000 --- a/packages/kbn-data-stream-adapter/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { DataStreamAdapter } from './src/data_stream_adapter'; -export { DataStreamSpacesAdapter } from './src/data_stream_spaces_adapter'; - -export { retryTransientEsErrors, ecsFieldMap } from '@kbn/index-adapter'; -export type { - SetComponentTemplateParams, - SetIndexTemplateParams, - InstallParams, - EcsFieldMap, -} from '@kbn/index-adapter'; - -export * from '@kbn/index-adapter/src/field_maps/types'; diff --git a/packages/kbn-data-stream-adapter/jest.config.js b/packages/kbn-data-stream-adapter/jest.config.js deleted file mode 100644 index 9dad2c70d375c..0000000000000 --- a/packages/kbn-data-stream-adapter/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-data-stream-adapter'], -}; diff --git a/packages/kbn-data-stream-adapter/package.json b/packages/kbn-data-stream-adapter/package.json deleted file mode 100644 index 588c7e4a1cf37..0000000000000 --- a/packages/kbn-data-stream-adapter/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "@kbn/data-stream-adapter", - "version": "1.0.0", - "description": "Utility library for Elasticsearch Data Stream management", - "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", - "private": true -} diff --git a/packages/kbn-data-stream-adapter/src/data_stream_adapter.ts b/packages/kbn-data-stream-adapter/src/data_stream_adapter.ts deleted file mode 100644 index f54ed81312d75..0000000000000 --- a/packages/kbn-data-stream-adapter/src/data_stream_adapter.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { IndexAdapter, SetIndexTemplateParams, type InstallParams } from '@kbn/index-adapter'; -import { createOrUpdateDataStream } from './create_or_update_data_stream'; - -export class DataStreamAdapter extends IndexAdapter { - public setIndexTemplate(params: SetIndexTemplateParams) { - super.setIndexTemplate({ ...params, isDataStream: true }); - } - - public async install(params: InstallParams) { - this.installed = true; - const { logger, pluginStop$, tasksTimeoutMs } = params; - const esClient = await params.esClient; - - await this.installTemplates(params); - - const installFn = this.getInstallFn({ logger, pluginStop$, tasksTimeoutMs }); - - // create data stream when everything is ready - await installFn( - createOrUpdateDataStream({ - name: this.name, - esClient, - logger, - totalFieldsLimit: this.totalFieldsLimit, - }), - `${this.name} data stream` - ); - } -} diff --git a/packages/kbn-data-stream-adapter/tsconfig.json b/packages/kbn-data-stream-adapter/tsconfig.json deleted file mode 100644 index 8c8bcce97fe74..0000000000000 --- a/packages/kbn-data-stream-adapter/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - ] - }, - "include": ["**/*.ts"], - "kbn_references": [ - "@kbn/core", - "@kbn/index-adapter", - ], - "exclude": [ - "target/**/*" - ], -} diff --git a/packages/kbn-dependency-usage/README.md b/packages/kbn-dependency-usage/README.md index 95d0b237bb141..5a8e07f6b32f9 100644 --- a/packages/kbn-dependency-usage/README.md +++ b/packages/kbn-dependency-usage/README.md @@ -30,11 +30,11 @@ bash scripts/dependency_usage.sh --dependency-name --paths **Example**: ```sh -bash scripts/dependency_usage.sh -p x-pack/plugins/security_solution +bash scripts/dependency_usage.sh -p x-pack/solutions/security/plugins/security_solution ``` -- `-p x-pack/plugins/security_solution`: Specifies the package or directory for which to list all dependencies. -- **Output**: Lists all dependencies for `x-pack/plugins/security_solution`. +- `-p x-pack/solutions/security/plugins/security_solution`: Specifies the package or directory for which to list all dependencies. +- **Output**: Lists all dependencies for `x-pack/solutions/security/plugins/security_solution`. --- @@ -91,18 +91,18 @@ When a package or plugin has multiple subteams, use the `--collapse-depth` optio Shows all subteams within `security_solution`. ```sh -bash scripts/dependency_usage.sh -p x-pack/plugins/security_solution -g owner --collapse-depth 4 +bash scripts/dependency_usage.sh -p x-pack/solutions/security/plugins/security_solution -g owner --collapse-depth 4 ``` #### Collapsed Grouping Groups the results under a higher-level owner (e.g., `security_solution` as a single group). ```sh -bash scripts/dependency_usage.sh -p x-pack/plugins/security_solution -g owner --collapse-depth 1 +bash scripts/dependency_usage.sh -p x-pack/solutions/security/plugins/security_solution -g owner --collapse-depth 1 ``` **Explanation**: -- `-p x-pack/plugins/security_solution`: Specifies the directory to scan. +- `-p x-pack/solutions/security/plugins/security_solution`: Specifies the directory to scan. - `-g owner`: Groups results by code owner. - `--collapse-depth`: Defines the depth for grouping, where higher numbers show more granular subteams. - **Output**: Lists dependencies grouped by code owner at different levels of depth based on the `--collapse-depth` value. @@ -119,13 +119,13 @@ bash scripts/dependency_usage.sh -p -d '' -o -o -v **Example**: ```sh -bash scripts/dependency_usage.sh -p x-pack/plugins/security_solution -o ./tmp/results.json +bash scripts/dependency_usage.sh -p x-pack/solutions/security/plugins/security_solution -o ./tmp/results.json ``` -- `-p x-pack/plugins/security_solution`: Specifies the target directory or package to analyze. +- `-p x-pack/solutions/security/plugins/security_solution`: Specifies the target directory or package to analyze. - `-o ./tmp/results.json`: Saves the output to the `results.json` file in the `./tmp` directory. - `-v`: Enables verbose mode. -**Output**: Saves a list of all dependencies in `x-pack/plugins/security_solution` to `./tmp/results.json`. Additionally, it logs a detailed, non aggregated dependency graph to `.dependency-graph-log.json` for debugging purposes. +**Output**: Saves a list of all dependencies in `x-pack/solutions/security/plugins/security_solution` to `./tmp/results.json`. Additionally, it logs a detailed, non aggregated dependency graph to `.dependency-graph-log.json` for debugging purposes. --- diff --git a/packages/kbn-dependency-usage/src/dependency_graph/providers/cruiser.test.ts b/packages/kbn-dependency-usage/src/dependency_graph/providers/cruiser.test.ts index ed2004c462ab3..14ad94f45000a 100644 --- a/packages/kbn-dependency-usage/src/dependency_graph/providers/cruiser.test.ts +++ b/packages/kbn-dependency-usage/src/dependency_graph/providers/cruiser.test.ts @@ -19,15 +19,21 @@ const codeOwners: Record = { 'plugins/data_charts': ['team_visualization'], 'plugins/analytics': ['team_analytics'], 'plugins/notification': ['team_alerts', 'team_notifications'], - 'plugins/security_solution/public/entity_analytics/components': ['team_security_analytics'], - 'plugins/security_solution/public/entity_analytics/components/componentA.ts': [ + 'solutions/security/plugins/security_solution/public/entity_analytics/components': [ 'team_security_analytics', ], - 'plugins/security_solution/public/entity_analytics/components/componentB.ts': [ + 'solutions/security/plugins/security_solution/public/entity_analytics/components/componentA.ts': [ 'team_security_analytics', ], - 'plugins/security_solution/server/lib/analytics/analytics.ts': ['team_security_analytics'], - 'plugins/security_solution/common/api/detection_engine': ['team_security_solution'], + 'solutions/security/plugins/security_solution/public/entity_analytics/components/componentB.ts': [ + 'team_security_analytics', + ], + 'solutions/security/plugins/security_solution/server/lib/analytics/analytics.ts': [ + 'team_security_analytics', + ], + 'solutions/security/plugins/security_solution/common/api/detection_engine': [ + 'team_security_solution', + ], }; jest.mock('dependency-cruiser', () => ({ @@ -301,23 +307,23 @@ describe('identifyDependencyUsage', () => { summary: { violations: [ { - from: 'plugins/security_solution/public/entity_analytics/components/componentA.ts', + from: 'solutions/security/plugins/security_solution/public/entity_analytics/components/componentA.ts', to: 'node_modules/lodash/fp.js', }, { - from: 'plugins/security_solution/public/entity_analytics/components/componentB.ts', + from: 'solutions/security/plugins/security_solution/public/entity_analytics/components/componentB.ts', to: 'node_modules/lodash/partition.js', }, { - from: 'plugins/security_solution/server/lib/analytics/analytics.ts', + from: 'solutions/security/plugins/security_solution/server/lib/analytics/analytics.ts', to: 'node_modules/lodash/partition.js', }, { - from: 'plugins/security_solution/server/lib/analytics/analytics.ts', + from: 'solutions/security/plugins/security_solution/server/lib/analytics/analytics.ts', to: 'node_modules/lodash/cloneDeep.js', }, { - from: 'plugins/security_solution/common/api/detection_engine', + from: 'solutions/security/plugins/security_solution/common/api/detection_engine', to: 'node_modules/lodash/sortBy.js', }, ], @@ -337,15 +343,15 @@ describe('identifyDependencyUsage', () => { expect(result).toEqual({ team_security_analytics: { modules: [ - 'plugins/security_solution/public/entity_analytics/components/componentA.ts', - 'plugins/security_solution/public/entity_analytics/components/componentB.ts', - 'plugins/security_solution/server/lib/analytics/analytics.ts', + 'solutions/security/plugins/security_solution/public/entity_analytics/components/componentA.ts', + 'solutions/security/plugins/security_solution/public/entity_analytics/components/componentB.ts', + 'solutions/security/plugins/security_solution/server/lib/analytics/analytics.ts', ], deps: ['lodash/fp.js', 'lodash/partition.js', 'lodash/cloneDeep.js'], teams: ['team_security_analytics'], }, team_security_solution: { - modules: ['plugins/security_solution/common/api/detection_engine'], + modules: ['solutions/security/plugins/security_solution/common/api/detection_engine'], deps: ['lodash/sortBy.js'], teams: ['team_security_solution'], }, diff --git a/packages/kbn-discover-contextual-components/src/data_types/logs/components/cell_actions_popover.tsx b/packages/kbn-discover-contextual-components/src/data_types/logs/components/cell_actions_popover.tsx index 96651cf26189b..8fa56c56162ab 100644 --- a/packages/kbn-discover-contextual-components/src/data_types/logs/components/cell_actions_popover.tsx +++ b/packages/kbn-discover-contextual-components/src/data_types/logs/components/cell_actions_popover.tsx @@ -20,10 +20,10 @@ import { EuiTextTruncate, EuiButtonEmpty, EuiCopy, + useEuiTheme, } from '@elastic/eui'; import { css } from '@emotion/react'; import { useBoolean } from '@kbn/react-hooks'; -import { euiThemeVars } from '@kbn/ui-theme'; import type { DocViewFilterFn } from '@kbn/unified-doc-viewer/types'; import type { SharePluginStart } from '@kbn/share-plugin/public'; import type { CoreStart } from '@kbn/core-lifecycle-browser'; @@ -38,10 +38,6 @@ import { openCellActionPopoverAriaText, } from './translations'; -const codeFontCSS = css` - font-family: ${euiThemeVars.euiCodeFontFamily}; -`; - interface CellActionsPopoverProps { onFilter?: DocViewFilterFn; /* ECS mapping for the key */ @@ -67,6 +63,7 @@ export function CellActionsPopover({ renderValue, renderPopoverTrigger, }: CellActionsPopoverProps) { + const { euiTheme } = useEuiTheme(); const [isPopoverOpen, { toggle: togglePopover, off: closePopover }] = useBoolean(false); const makeFilterHandlerByOperator = (operator: '+' | '-') => () => { @@ -95,7 +92,12 @@ export function CellActionsPopover({ data-test-subj="dataTableCellActionPopoverTitle" > - + {property}{' '} {typeof renderValue === 'function' ? renderValue(value) : value} diff --git a/packages/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx b/packages/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx index 7dacc3393763e..c6d8d3b10e297 100644 --- a/packages/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx +++ b/packages/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx @@ -11,7 +11,6 @@ import { dynamic } from '@kbn/shared-ux-utility'; import React from 'react'; import { css } from '@emotion/react'; import { AgentName } from '@kbn/elastic-agent-utils'; -import { euiThemeVars } from '@kbn/ui-theme'; import type { SharePluginStart } from '@kbn/share-plugin/public'; import type { CoreStart } from '@kbn/core-lifecycle-browser'; import { @@ -28,6 +27,7 @@ import { } from '@kbn/discover-utils'; import { DataTableRecord, getFieldValue } from '@kbn/discover-utils'; import { LogDocument, ResourceFields, getAvailableResourceFields } from '@kbn/discover-utils/src'; +import { useEuiTheme } from '@elastic/eui'; import { FieldBadgeWithActions, FieldBadgeWithActionsProps } from '../cell_actions_popover'; import { ServiceNameBadgeWithActions } from '../service_name_badge_with_actions'; /** @@ -94,15 +94,18 @@ export const createResourceFields = ( value: resourceDoc[name] as string, ResourceBadge: resourceBadgeComponentWithDependencies, ...(name === SERVICE_NAME_FIELD && { - Icon: () => ( - - ), + Icon: () => { + const { euiTheme } = useEuiTheme(); + return ( + + ); + }, }), }; }); diff --git a/packages/kbn-discover-contextual-components/tsconfig.json b/packages/kbn-discover-contextual-components/tsconfig.json index 21d65228b9597..0dc07688b4cab 100644 --- a/packages/kbn-discover-contextual-components/tsconfig.json +++ b/packages/kbn-discover-contextual-components/tsconfig.json @@ -22,7 +22,6 @@ "@kbn/router-utils", "@kbn/management-settings-ids", "@kbn/share-plugin", - "@kbn/ui-theme", "@kbn/unified-data-table", "@kbn/unified-doc-viewer", "@kbn/react-hooks", diff --git a/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.test.ts b/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.test.ts index 47792f0aa6d17..fcbf7848603a9 100644 --- a/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.test.ts +++ b/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.test.ts @@ -13,7 +13,7 @@ import { LogLevelCoalescedValue } from './get_log_level_coalesed_value'; const euiTheme = { colors: { - lightShade: '#ffffff', + mediumShade: '#d3dae6', }, }; @@ -32,20 +32,20 @@ describe('getLogLevelColor', () => { '#d6bf57' ); expect(getLogLevelColor(LogLevelCoalescedValue.error, euiTheme as EuiThemeComputed)).toBe( - '#df9352' + '#e18774' ); expect(getLogLevelColor(LogLevelCoalescedValue.critical, euiTheme as EuiThemeComputed)).toBe( - '#e7664c' + '#dd7b67' ); expect(getLogLevelColor(LogLevelCoalescedValue.alert, euiTheme as EuiThemeComputed)).toBe( - '#da5e47' + '#d76f5b' ); expect(getLogLevelColor(LogLevelCoalescedValue.emergency, euiTheme as EuiThemeComputed)).toBe( - '#cc5642' + '#d2634e' ); // other expect(getLogLevelColor(LogLevelCoalescedValue.trace, euiTheme as EuiThemeComputed)).toBe( - '#ffffff' + '#d3dae6' ); }); }); diff --git a/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.ts b/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.ts index 3e9d2e419bb76..1418ae7f10f45 100644 --- a/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.ts +++ b/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.ts @@ -7,7 +7,12 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { EuiThemeComputed, euiPaletteForTemperature, euiPaletteForStatus } from '@elastic/eui'; +import { + EuiThemeComputed, + euiPaletteForTemperature, + euiPaletteForStatus, + euiPaletteRed, +} from '@elastic/eui'; import { LogLevelCoalescedValue } from './get_log_level_coalesed_value'; export const getLogLevelColor = ( @@ -16,8 +21,11 @@ export const getLogLevelColor = ( ): string | undefined => { const euiPaletteForTemperature6 = euiPaletteForTemperature(6); const euiPaletteForStatus9 = euiPaletteForStatus(9); + const euiPaletteRed9 = euiPaletteRed(14); switch (logLevelCoalescedValue) { + case LogLevelCoalescedValue.trace: + return euiTheme.colors.mediumShade; case LogLevelCoalescedValue.debug: return euiPaletteForTemperature6[2]; // lighter, closer to the default color for all other unknown log levels case LogLevelCoalescedValue.info: @@ -27,15 +35,16 @@ export const getLogLevelColor = ( case LogLevelCoalescedValue.warning: return euiPaletteForStatus9[4]; case LogLevelCoalescedValue.error: - return euiPaletteForStatus9[5]; + return euiPaletteRed9[9]; case LogLevelCoalescedValue.critical: - return euiPaletteForStatus9[6]; + return euiPaletteRed9[10]; case LogLevelCoalescedValue.alert: - return euiPaletteForStatus9[7]; + return euiPaletteRed9[11]; case LogLevelCoalescedValue.emergency: + return euiPaletteRed9[12]; case LogLevelCoalescedValue.fatal: - return euiPaletteForStatus9[8]; + return euiPaletteRed9[13]; default: - return euiTheme.colors.lightShade; + return euiTheme.colors.mediumShade; } }; diff --git a/packages/kbn-discover-utils/src/utils/get_log_document_overview.ts b/packages/kbn-discover-utils/src/utils/get_log_document_overview.ts index 33c8fdba68526..04c70a87aff45 100644 --- a/packages/kbn-discover-utils/src/utils/get_log_document_overview.ts +++ b/packages/kbn-discover-utils/src/utils/get_log_document_overview.ts @@ -30,8 +30,7 @@ export function getLogDocumentOverview( }; const levelArray = doc.flattened[fieldConstants.LOG_LEVEL_FIELD]; - const level = - Array.isArray(levelArray) && levelArray.length ? levelArray[0].toLowerCase() : levelArray; + const level = Array.isArray(levelArray) && levelArray.length > 0 ? levelArray[0] : levelArray; const message = formatField(fieldConstants.MESSAGE_FIELD); const errorMessage = formatField(fieldConstants.ERROR_MESSAGE_FIELD); const eventOriginal = formatField(fieldConstants.EVENT_ORIGINAL_FIELD); diff --git a/packages/kbn-ebt-tools/BUILD.bazel b/packages/kbn-ebt-tools/BUILD.bazel index 7f916b42152ca..1ea329e82638e 100644 --- a/packages/kbn-ebt-tools/BUILD.bazel +++ b/packages/kbn-ebt-tools/BUILD.bazel @@ -25,6 +25,7 @@ SHARED_DEPS = [ "@npm//@elastic/apm-rum-core", "@npm//react", "@npm//react-router-dom", + "//packages/kbn-timerange" ] js_library( diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/index.ts b/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/index.ts new file mode 100644 index 0000000000000..790314a8f0892 --- /dev/null +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/index.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { + getDateRange, + getOffsetFromNowInSeconds, + getTimeDifferenceInSeconds, +} from '@kbn/timerange'; +import { perfomanceMarkers } from '../../performance_markers'; +import { EventData } from '../performance_context'; + +interface PerformanceMeta { + queryRangeSecs: number; + queryOffsetSecs: number; +} + +export function measureInteraction() { + performance.mark(perfomanceMarkers.startPageChange); + const trackedRoutes: string[] = []; + return { + /** + * Marks the end of the page ready state and measures the performance between the start of the page change and the end of the page ready state. + * @param pathname - The pathname of the page. + * @param customMetrics - Custom metrics to be included in the performance measure. + */ + pageReady(pathname: string, eventData?: EventData) { + let performanceMeta: PerformanceMeta | undefined; + performance.mark(perfomanceMarkers.endPageReady); + + if (eventData?.meta) { + const { rangeFrom, rangeTo } = eventData.meta; + + // Convert the date range to epoch timestamps (in milliseconds) + const dateRangesInEpoch = getDateRange({ + from: rangeFrom, + to: rangeTo, + }); + + performanceMeta = { + queryRangeSecs: getTimeDifferenceInSeconds(dateRangesInEpoch), + queryOffsetSecs: + rangeTo === 'now' ? 0 : getOffsetFromNowInSeconds(dateRangesInEpoch.endDate), + }; + } + + if (!trackedRoutes.includes(pathname)) { + performance.measure(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: eventData?.customMetrics, + meta: performanceMeta, + }, + start: perfomanceMarkers.startPageChange, + end: perfomanceMarkers.endPageReady, + }); + trackedRoutes.push(pathname); + } + }, + }; +} diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/measure_interaction.test.tsx b/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/measure_interaction.test.tsx new file mode 100644 index 0000000000000..5768a6126c571 --- /dev/null +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/measure_interaction.test.tsx @@ -0,0 +1,161 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { measureInteraction } from '.'; +import { perfomanceMarkers } from '../../performance_markers'; + +describe('measureInteraction', () => { + afterAll(() => { + jest.restoreAllMocks(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + performance.mark = jest.fn(); + performance.measure = jest.fn(); + }); + + it('should mark the start of the page change', () => { + measureInteraction(); + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.startPageChange); + }); + + it('should mark the end of the page ready state and measure performance', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + interaction.pageReady(pathname); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + }, + start: perfomanceMarkers.startPageChange, + end: perfomanceMarkers.endPageReady, + }); + }); + + it('should include custom metrics and meta in the performance measure', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + const eventData = { + customMetrics: { key1: 'foo-metric', value1: 100 }, + meta: { rangeFrom: 'now-15m', rangeTo: 'now' }, + }; + + interaction.pageReady(pathname, eventData); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: eventData.customMetrics, + meta: { + queryRangeSecs: 900, + queryOffsetSecs: 0, + }, + }, + end: 'end::pageReady', + start: 'start::pageChange', + }); + }); + + it('should handle absolute date format correctly', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + jest.spyOn(global.Date, 'now').mockReturnValue(1733704200000); // 2024-12-09T00:30:00Z + + const eventData = { + meta: { rangeFrom: '2024-12-09T00:00:00Z', rangeTo: '2024-12-09T00:30:00Z' }, + }; + + interaction.pageReady(pathname, eventData); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: undefined, + meta: { + queryRangeSecs: 1800, + queryOffsetSecs: 0, + }, + }, + end: 'end::pageReady', + start: 'start::pageChange', + }); + }); + + it('should handle negative offset when rangeTo is in the past', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + jest.spyOn(global.Date, 'now').mockReturnValue(1733704200000); // 2024-12-09T00:30:00Z + + const eventData = { + meta: { rangeFrom: '2024-12-08T00:00:00Z', rangeTo: '2024-12-09T00:00:00Z' }, + }; + + interaction.pageReady(pathname, eventData); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: undefined, + meta: { + queryRangeSecs: 86400, + queryOffsetSecs: -1800, + }, + }, + end: 'end::pageReady', + start: 'start::pageChange', + }); + }); + + it('should handle positive offset when rangeTo is in the future', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + jest.spyOn(global.Date, 'now').mockReturnValue(1733704200000); // 2024-12-09T00:30:00Z + + const eventData = { + meta: { rangeFrom: '2024-12-08T01:00:00Z', rangeTo: '2024-12-09T01:00:00Z' }, + }; + + interaction.pageReady(pathname, eventData); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: undefined, + meta: { + queryRangeSecs: 86400, + queryOffsetSecs: 1800, + }, + }, + end: 'end::pageReady', + start: 'start::pageChange', + }); + }); + + it('should not measure the same route twice', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + + interaction.pageReady(pathname); + interaction.pageReady(pathname); + + expect(performance.measure).toHaveBeenCalledTimes(1); + }); +}); diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx b/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx index a55c8d0475797..c3e60270c6ac4 100644 --- a/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx @@ -10,38 +10,19 @@ import React, { useMemo, useState } from 'react'; import { afterFrame } from '@elastic/apm-rum-core'; import { useLocation } from 'react-router-dom'; -import { perfomanceMarkers } from '../performance_markers'; import { PerformanceApi, PerformanceContext } from './use_performance_context'; import { PerformanceMetricEvent } from '../../performance_metric_events'; +import { measureInteraction } from './measure_interaction'; export type CustomMetrics = Omit; -function measureInteraction() { - performance.mark(perfomanceMarkers.startPageChange); - const trackedRoutes: string[] = []; - return { - /** - * Marks the end of the page ready state and measures the performance between the start of the page change and the end of the page ready state. - * @param pathname - The pathname of the page. - * @param customMetrics - Custom metrics to be included in the performance measure. - */ - pageReady(pathname: string, customMetrics?: CustomMetrics) { - performance.mark(perfomanceMarkers.endPageReady); - - if (!trackedRoutes.includes(pathname)) { - performance.measure(pathname, { - detail: { - eventName: 'kibana:plugin_render_time', - type: 'kibana:performance', - customMetrics, - }, - start: perfomanceMarkers.startPageChange, - end: perfomanceMarkers.endPageReady, - }); - trackedRoutes.push(pathname); - } - }, - }; +export interface Meta { + rangeFrom: string; + rangeTo: string; +} +export interface EventData { + customMetrics?: CustomMetrics; + meta?: Meta; } export function PerformanceContextProvider({ children }: { children: React.ReactElement }) { @@ -61,9 +42,9 @@ export function PerformanceContextProvider({ children }: { children: React.React const api = useMemo( () => ({ - onPageReady(customMetrics) { + onPageReady(eventData) { if (isRendered) { - interaction.pageReady(location.pathname, customMetrics); + interaction.pageReady(location.pathname, eventData); } }, }), diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts b/packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts index 4c399c0d3de82..775a822a308d3 100644 --- a/packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts @@ -8,18 +8,22 @@ */ import { useEffect, useState } from 'react'; -import { CustomMetrics } from './performance_context'; +import type { CustomMetrics, Meta } from './performance_context'; import { usePerformanceContext } from '../../..'; -export const usePageReady = (state: { customMetrics?: CustomMetrics; isReady: boolean }) => { +export const usePageReady = (state: { + customMetrics?: CustomMetrics; + isReady: boolean; + meta?: Meta; +}) => { const { onPageReady } = usePerformanceContext(); const [isReported, setIsReported] = useState(false); useEffect(() => { if (state.isReady && !isReported) { - onPageReady(state.customMetrics); + onPageReady({ customMetrics: state.customMetrics, meta: state.meta }); setIsReported(true); } - }, [isReported, onPageReady, state.customMetrics, state.isReady]); + }, [isReported, onPageReady, state.customMetrics, state.isReady, state.meta]); }; diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx b/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx index 1e045230cfe07..a2fab435778e1 100644 --- a/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx @@ -8,14 +8,13 @@ */ import { createContext, useContext } from 'react'; -import { CustomMetrics } from './performance_context'; - +import type { EventData } from './performance_context'; export interface PerformanceApi { /** * Marks the end of the page ready state and measures the performance between the start of the page change and the end of the page ready state. - * @param customMetrics - Custom metrics to be included in the performance measure. + * @param eventData - Data to send with the performance measure, conforming the structure of a {@link EventData}. */ - onPageReady(customMetrics?: CustomMetrics): void; + onPageReady(eventData?: EventData): void; } export const PerformanceContext = createContext(undefined); diff --git a/packages/kbn-ebt-tools/tsconfig.json b/packages/kbn-ebt-tools/tsconfig.json index 680ae75219fff..f74f8991be327 100644 --- a/packages/kbn-ebt-tools/tsconfig.json +++ b/packages/kbn-ebt-tools/tsconfig.json @@ -5,8 +5,6 @@ "types": ["jest", "node"] }, "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/logging-mocks" - ], + "kbn_references": ["@kbn/logging-mocks", "@kbn/timerange"], "exclude": ["target/**/*"] } diff --git a/packages/kbn-es-types/index.ts b/packages/kbn-es-types/index.ts index 683fddb541baf..d4ba23840e2a6 100644 --- a/packages/kbn-es-types/index.ts +++ b/packages/kbn-es-types/index.ts @@ -13,6 +13,7 @@ export type { SearchHit, ESSearchResponse, ESSearchRequest, + ESSearchRequestWithoutBody, ESSourceOptions, InferSearchResponseOf, AggregationResultOf, diff --git a/packages/kbn-es-types/src/index.ts b/packages/kbn-es-types/src/index.ts index 2ec37ba474789..77d02320b6f2d 100644 --- a/packages/kbn-es-types/src/index.ts +++ b/packages/kbn-es-types/src/index.ts @@ -8,6 +8,7 @@ */ import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import * as estypesWithoutBody from '@elastic/elasticsearch/lib/api/types'; import type { Field, QueryDslFieldAndFormat, @@ -26,6 +27,7 @@ import { export type ESFilter = estypes.QueryDslQueryContainer; export type ESSearchRequest = estypes.SearchRequest; +export type ESSearchRequestWithoutBody = estypesWithoutBody.SearchRequest; export type AggregationOptionsByType = Required; // Typings for Elasticsearch queries and aggregations. These are intended to be diff --git a/packages/kbn-es-types/src/search.ts b/packages/kbn-es-types/src/search.ts index d3675e04c2663..1c9a9e16fd4a7 100644 --- a/packages/kbn-es-types/src/search.ts +++ b/packages/kbn-es-types/src/search.ts @@ -23,20 +23,15 @@ type InvalidAggregationRequest = unknown; // Union keys are not included in keyof, but extends iterates over the types in a union. type ValidAggregationKeysOf> = T extends T ? keyof T : never; -type KeyOfSource = Record< - keyof T, - (T extends Record ? null : never) | string | number ->; +type KeyOfSource = { + [key in keyof T]: + | (T[key] extends Record ? null : never) + | string + | number; +}; -type KeysOfSources = T extends [any] - ? KeyOfSource - : T extends [any, any] - ? KeyOfSource & KeyOfSource - : T extends [any, any, any] - ? KeyOfSource & KeyOfSource & KeyOfSource - : T extends [any, any, any, any] - ? KeyOfSource & KeyOfSource & KeyOfSource & KeyOfSource - : Record; +// convert to intersection to be able to get all the keys +type KeysOfSources = UnionToIntersection>>>; type CompositeKeysOf = TAggregationContainer extends { diff --git a/packages/kbn-eslint-config/.eslintrc.js b/packages/kbn-eslint-config/.eslintrc.js index e38b6cc48c443..57a116a2b9b68 100644 --- a/packages/kbn-eslint-config/.eslintrc.js +++ b/packages/kbn-eslint-config/.eslintrc.js @@ -28,6 +28,7 @@ module.exports = { '@kbn/eslint-plugin-imports', '@kbn/eslint-plugin-telemetry', '@kbn/eslint-plugin-i18n', + '@kbn/eslint-plugin-css', 'eslint-plugin-depend', 'prettier', ], @@ -332,6 +333,7 @@ module.exports = { '@kbn/imports/no_boundary_crossing': 'error', '@kbn/imports/no_group_crossing_manifests': 'error', '@kbn/imports/no_group_crossing_imports': 'error', + '@kbn/css/no_css_color': 'warn', 'no-new-func': 'error', 'no-implied-eval': 'error', 'no-prototype-builtins': 'error', diff --git a/packages/kbn-eslint-plugin-css/README.mdx b/packages/kbn-eslint-plugin-css/README.mdx new file mode 100644 index 0000000000000..1e121657bc571 --- /dev/null +++ b/packages/kbn-eslint-plugin-css/README.mdx @@ -0,0 +1,129 @@ +--- +id: kibSharedUXEslintPluginCSS +slug: /kibana-dev-docs/shared-ux/packages/kbn-eslint-plugin-css +title: '@kbn/eslint-plugin-design-tokens' +description: Custom ESLint rules to guardrails for using eui in the Kibana repository +date: 2024-11-19 +tags: ['kibana', 'dev', 'contributor', 'shared_ux', 'eslint', 'eui'] +--- + +# Summary + +`@kbn/eslint-plugin-css` is an ESLint plugin providing custom ESLint rules to help setup guardrails for using eui in the Kibana repo especially around styling. + +The aim of this package is to help engineers to modify EUI components in a much complaint way. + +If a rule does not behave as you expect or you have an idea of how these rules can be improved, please reach out to the Shared UX team. + +# Rules + +## `@kbn/css/no_css_color` + +This rule warns engineers to not use literal css color in the codebase, particularly for CSS properties that apply color to +either the html element or text nodes, but rather urge users to defer to using the color tokens provided by EUI. + +This rule kicks in on the following JSXAttributes; `style`, `className` and `css` and supports various approaches to providing styling declarations. + +### Example + +The following code: + +``` +// Filename: /x-pack/plugins/observability_solution/observability/public/my_component.tsx + +import React from 'react'; +import { EuiText } from '@elastic/eui'; + +function MyComponent() { + return ( + You know, for search + ) +} +``` + +``` +// Filename: /x-pack/plugins/observability_solution/observability/public/my_component.tsx + +import React from 'react'; +import { EuiText } from '@elastic/eui'; + +function MyComponent() { + + const style = { + color: 'red' + } + + return ( + You know, for search + ) +} +``` + +``` +// Filename: /x-pack/plugins/observability_solution/observability/public/my_component.tsx + +import React from 'react'; +import { EuiText } from '@elastic/eui'; + +function MyComponent() { + const colorValue = '#dd4040'; + + return ( + You know, for search + ) +} +``` + +will all raise an eslint report with an appropriate message of severity that matches the configuration of the rule, further more all the examples above +will also match for when the attribute in question is `css`. The `css` attribute will also raise a report the following cases below; + +``` +// Filename: /x-pack/plugins/observability_solution/observability/public/my_component.tsx + +import React from 'react'; +import { css } from '@emotion/css'; +import { EuiText } from '@elastic/eui'; + +function MyComponent() { + return ( + You know, for search + ) +} +``` + +``` +// Filename: /x-pack/plugins/observability_solution/observability/public/my_component.tsx + +import React from 'react'; +import { EuiText } from '@elastic/eui'; + +function MyComponent() { + return ( + ({ color: '#dd4040' })}>You know, for search + ) +} +``` + +A special case is also covered for the `className` attribute, where the rule will also raise a report for the following case below; + + +``` +// Filename: /x-pack/plugins/observability_solution/observability/public/my_component.tsx + +import React from 'react'; +import { css } from '@emotion/css'; +import { EuiText } from '@elastic/eui'; + +function MyComponent() { + return ( + You know, for search + ) +} +``` + +it's worth pointing out that although the examples provided are specific to EUI components, this rule applies to all JSX elements. + +## `@kbn/css/prefer_css_attributes_for_eui_components` + +This rule warns engineers to use the `css` attribute for EUI components instead of the `style` attribute. + diff --git a/packages/kbn-eslint-plugin-css/index.ts b/packages/kbn-eslint-plugin-css/index.ts new file mode 100644 index 0000000000000..9ea4bcc67619f --- /dev/null +++ b/packages/kbn-eslint-plugin-css/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { NoCssColor } from './src/rules/no_css_color'; +import { PreferCSSAttributeForEuiComponents } from './src/rules/prefer_css_attribute_for_eui_components'; + +/** + * Custom ESLint rules, included as `'@kbn/eslint-plugin-design-tokens'` in the kibana eslint config + * @internal + */ +export const rules = { + no_css_color: NoCssColor, + prefer_css_attributes_for_eui_components: PreferCSSAttributeForEuiComponents, +}; diff --git a/packages/kbn-eslint-plugin-css/jest.config.js b/packages/kbn-eslint-plugin-css/jest.config.js new file mode 100644 index 0000000000000..c8ae20237eae8 --- /dev/null +++ b/packages/kbn-eslint-plugin-css/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-eslint-plugin-css'], +}; diff --git a/packages/kbn-eslint-plugin-css/kibana.jsonc b/packages/kbn-eslint-plugin-css/kibana.jsonc new file mode 100644 index 0000000000000..3ee8bff8736f6 --- /dev/null +++ b/packages/kbn-eslint-plugin-css/kibana.jsonc @@ -0,0 +1,6 @@ +{ + "type": "shared-common", + "id": "@kbn/eslint-plugin-css", + "devOnly": true, + "owner": "@elastic/appex-sharedux" +} diff --git a/packages/kbn-eslint-plugin-css/package.json b/packages/kbn-eslint-plugin-css/package.json new file mode 100644 index 0000000000000..c811f06f27cb7 --- /dev/null +++ b/packages/kbn-eslint-plugin-css/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/eslint-plugin-css", + "version": "1.0.0", + "private": true, + "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0" +} diff --git a/packages/kbn-eslint-plugin-css/src/rules/no_css_color.test.ts b/packages/kbn-eslint-plugin-css/src/rules/no_css_color.test.ts new file mode 100644 index 0000000000000..e1f683b09814f --- /dev/null +++ b/packages/kbn-eslint-plugin-css/src/rules/no_css_color.test.ts @@ -0,0 +1,249 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { RuleTester } from 'eslint'; +import { NoCssColor } from './no_css_color'; + +const tsTester = [ + '@typescript-eslint/parser', + new RuleTester({ + parser: require.resolve('@typescript-eslint/parser'), + parserOptions: { + sourceType: 'module', + ecmaVersion: 2018, + ecmaFeatures: { + jsx: true, + }, + }, + }), +] as const; + +const babelTester = [ + '@babel/eslint-parser', + new RuleTester({ + parser: require.resolve('@babel/eslint-parser'), + parserOptions: { + sourceType: 'module', + ecmaVersion: 2018, + requireConfigFile: false, + babelOptions: { + presets: ['@kbn/babel-preset/node_preset'], + }, + }, + }), +] as const; + +const invalid: RuleTester.InvalidTestCase[] = [ + { + name: 'Raises an error when a CSS color is used in a JSX style attribute', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCssColorSpecific' }], + }, + { + name: 'Raises an error when a CSS color references a string variable that is passed to style prop of a JSX element', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + const codeColor = '#dd4040'; + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCSSColorSpecificDeclaredVariable' }], + }, + { + name: 'Raises an error when a CSS color is used in an object variable that is passed to style prop of a JSX element', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + const codeStyle = { color: '#dd4040' }; + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCSSColorSpecificDeclaredVariable' }], + }, + { + name: 'Raises an error when an object property that is a literal CSS color is used for the background property in a JSX style attribute', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + const baseStyle = { background: 'rgb(255, 255, 255)' }; + + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCSSColorSpecificDeclaredVariable' }], + }, + { + name: 'Raises an error when a CSS color is used in a variable that is spread into another variable that is passed to style prop of a JSX element', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + const baseStyle = { background: 'rgb(255, 255, 255)' }; + const codeStyle = { margin: '5px', ...baseStyle }; + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCSSColorSpecificDeclaredVariable' }], + }, + { + name: 'Raises an error when a CSS color is used for the background property in a JSX style attribute', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCssColorSpecific' }], + }, + { + name: 'Raises an error when a CSS color for the color property is used in a JSX css attribute for EuiComponents', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCssColorSpecific' }], + }, + { + name: 'Raises an error when a CSS color for the color property is used in with the tagged template css function', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import { css } from '@emotion/css'; + + const codeColor = css\` color: #dd4040; \`; + `, + errors: [{ messageId: 'noCssColor' }], + }, + { + name: 'Raises an error when a CSS color for the color property is used in a JSX css attribute for EuiComponents with the css template function', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + import { css } from '@emotion/css'; + + function TestComponent() { + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCssColor' }], + }, + { + name: 'Raises an error when a CSS color for the color property is used in a JSX className attribute for EuiComponents with the css template function defined outside the scope of the component', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + import { css } from '@emotion/css'; + + const codeCss = css({ + color: '#dd4040', + }) + + function TestComponent() { + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCSSColorSpecificDeclaredVariable' }], + }, + { + name: 'Raises an error when a CSS color for the color property is used in a JSX className attribute for EuiComponents with the css template function defined outside the scope of the component', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + import { css } from '@emotion/css'; + + const codeCss = css\` color: #dd4040; \` + + function TestComponent() { + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCssColor' }], + }, + { + name: 'Raises an error when a CSS color for the color property is used in a JSX css attribute for EuiComponents with an arrow function', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + return ( + ({ color: '#dd4040' })}>This is a test + ) + }`, + errors: [{ messageId: 'noCssColorSpecific' }], + }, + { + name: 'Raises an error when a CSS color for the color property is used in a JSX css attribute for EuiComponents with a regular function', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCssColorSpecific' }], + }, + { + name: 'Raises an error when a CSS color for the color property is used in a JSX className attribute for EuiComponents with the css template function', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + import { css } from '@emotion/css'; + + function TestComponent() { + return ( + This is a test + ) + }`, + errors: [{ messageId: 'noCssColor' }], + }, +]; + +const valid: RuleTester.ValidTestCase[] = []; + +for (const [name, tester] of [tsTester, babelTester]) { + describe(name, () => { + tester.run('@kbn/no_css_color', NoCssColor, { + valid, + invalid, + }); + }); +} diff --git a/packages/kbn-eslint-plugin-css/src/rules/no_css_color.ts b/packages/kbn-eslint-plugin-css/src/rules/no_css_color.ts new file mode 100644 index 0000000000000..c453e5edfcd74 --- /dev/null +++ b/packages/kbn-eslint-plugin-css/src/rules/no_css_color.ts @@ -0,0 +1,453 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { Rule } from 'eslint'; +import { CSSStyleDeclaration } from 'cssstyle'; +import type { TSESTree } from '@typescript-eslint/typescript-estree'; + +/** + * @description List of superset css properties that can apply color to html box element elements and text nodes, leveraging the + * css style package allows us to directly singly check for these properties even if the actual declaration was written using the shorthand form + */ +const propertiesSupportingCssColor = ['color', 'background', 'border']; + +/** + * @description Builds off the existing color definition to match css declarations that can apply color to + * html elements and text nodes for string declarations + */ +const htmlElementColorDeclarationRegex = RegExp( + String.raw`(${propertiesSupportingCssColor.join('|')})` +); + +const checkPropertySpecifiesInvalidCSSColor = ([property, value]: string[]) => { + if (!property || !value) return false; + + const style = new CSSStyleDeclaration(); + + // @ts-ignore the types for this packages specifics an index signature of number, alongside other valid CSS properties + style[property] = value; + + const anchor = propertiesSupportingCssColor.find((resolvedProperty) => + property.includes(resolvedProperty) + ); + + if (!anchor) return false; + + // build the resolved color property to check if the value is a string after parsing the style declaration + const resolvedColorProperty = anchor === 'color' ? 'color' : anchor + 'Color'; + + // in trying to keep this rule simple, it's enough if a string is used to define a color to mark it as invalid + // @ts-ignore the types for this packages specifics an index signature of number, alongside other valid CSS properties + return typeof style[resolvedColorProperty] === 'string'; +}; + +const resolveMemberExpressionRoot = (node: TSESTree.MemberExpression): TSESTree.Identifier => { + if (node.object.type === 'MemberExpression') { + return resolveMemberExpressionRoot(node.object); + } + + return node.object as TSESTree.Identifier; +}; + +/** + * @description method to inspect values of interest found on an object + */ +const raiseReportIfPropertyHasInvalidCssColor = ( + context: Rule.RuleContext, + propertyNode: TSESTree.Property, + messageToReport: Rule.ReportDescriptor +) => { + let didReport = false; + + if ( + propertyNode.key.type === 'Identifier' && + !htmlElementColorDeclarationRegex.test(propertyNode.key.name) + ) { + return didReport; + } + + if (propertyNode.value.type === 'Literal') { + if ( + (didReport = checkPropertySpecifiesInvalidCSSColor([ + // @ts-expect-error the key name is present in this scenario + propertyNode.key.name, + propertyNode.value.value, + ])) + ) { + context.report(messageToReport); + } + } else if (propertyNode.value.type === 'Identifier') { + const identifierDeclaration = context.sourceCode + // @ts-expect-error + .getScope(propertyNode) + .variables.find( + (variable) => variable.name === (propertyNode.value as TSESTree.Identifier).name! + ); + + if ( + identifierDeclaration?.defs[0].node.init?.type === 'Literal' && + checkPropertySpecifiesInvalidCSSColor([ + // @ts-expect-error the key name is present in this scenario + propertyNode.key.name, + (identifierDeclaration.defs[0].node.init as TSESTree.Literal).value as string, + ]) + ) { + context.report({ + loc: propertyNode.value.loc, + messageId: 'noCSSColorSpecificDeclaredVariable', + data: { + // @ts-expect-error the key name is always present else this code will not execute + property: String(propertyNode.key.name), + line: String(propertyNode.value.loc.start.line), + variableName: propertyNode.value.name, + }, + }); + + didReport = true; + } + } else if (propertyNode.value.type === 'MemberExpression') { + // @ts-expect-error we ignore the case where this node could be a private identifier + const MemberExpressionLeafName = propertyNode.value.property.name; + const memberExpressionRootName = resolveMemberExpressionRoot(propertyNode.value).name; + + const expressionRootDeclaration = context.sourceCode + // @ts-expect-error + .getScope(propertyNode) + .variables.find((variable) => variable.name === memberExpressionRootName); + + const expressionRootDeclarationInit = expressionRootDeclaration?.defs[0].node.init; + + if (expressionRootDeclarationInit?.type === 'ObjectExpression') { + (expressionRootDeclarationInit as TSESTree.ObjectExpression).properties.forEach( + (property) => { + // This is a naive approach expecting the value to be at depth 1, we should actually be traversing the object to the same depth as the expression + if ( + property.type === 'Property' && + property.key.type === 'Identifier' && + property.key?.name === MemberExpressionLeafName + ) { + raiseReportIfPropertyHasInvalidCssColor(context, property, { + loc: propertyNode.value.loc, + messageId: 'noCSSColorSpecificDeclaredVariable', + data: { + // @ts-expect-error the key name is always present else this code will not execute + property: String(propertyNode.key.name), + line: String(propertyNode.value.loc.start.line), + variableName: memberExpressionRootName, + }, + }); + } + } + ); + } else if (expressionRootDeclarationInit?.type === 'CallExpression') { + // TODO: if this object was returned from invoking a function the best we can do is probably validate that the method invoked is one that returns an euitheme object + } + } + + return didReport; +}; + +/** + * + * @description style object declaration have a depth of 1, this function handles the properties of the object + */ +const handleObjectProperties = ( + context: Rule.RuleContext, + propertyParentNode: TSESTree.JSXAttribute, + property: TSESTree.ObjectLiteralElement, + reportMessage: Rule.ReportDescriptor +) => { + if (property.type === 'Property') { + raiseReportIfPropertyHasInvalidCssColor(context, property, reportMessage); + } else if (property.type === 'SpreadElement') { + const spreadElementIdentifierName = (property.argument as TSESTree.Identifier).name; + + const spreadElementDeclaration = context.sourceCode + // @ts-expect-error + .getScope(propertyParentNode!.value.expression!) + .references.find((ref) => ref.identifier.name === spreadElementIdentifierName)?.resolved; + + if (!spreadElementDeclaration) { + return; + } + + reportMessage = { + loc: propertyParentNode.loc, + messageId: 'noCSSColorSpecificDeclaredVariable', + data: { + // @ts-expect-error the key name is always present else this code will not execute + property: String(property.argument.name), + variableName: spreadElementIdentifierName, + line: String(property.loc.start.line), + }, + }; + + const spreadElementDeclarationNode = spreadElementDeclaration.defs[0].node.init; + + // evaluate only statically defined declarations, other possibilities like callExpressions in this context complicate things + if (spreadElementDeclarationNode?.type === 'ObjectExpression') { + (spreadElementDeclarationNode as TSESTree.ObjectExpression).properties.forEach( + (spreadProperty) => { + handleObjectProperties(context, propertyParentNode, spreadProperty, reportMessage); + } + ); + } + } +}; + +export const NoCssColor: Rule.RuleModule = { + meta: { + type: 'suggestion', + docs: { + description: 'Use color definitions from eui theme as opposed to CSS color values', + category: 'Best Practices', + recommended: true, + url: 'https://eui.elastic.co/#/theming/colors/values', + }, + messages: { + noCSSColorSpecificDeclaredVariable: + 'Avoid using a literal CSS color value for "{{property}}", use an EUI theme color instead in declared variable {{variableName}} on line {{line}}', + noCssColorSpecific: + 'Avoid using a literal CSS color value for "{{property}}", use an EUI theme color instead', + noCssColor: 'Avoid using a literal CSS color value, use an EUI theme color instead', + }, + schema: [], + }, + create(context) { + return { + // accounts for instances where declarations are created using the template tagged css function + TaggedTemplateExpression(node) { + if ( + node.tag.type !== 'Identifier' || + (node.tag.type === 'Identifier' && node.tag.name !== 'css') + ) { + return; + } + + for (let i = 0; i < node.quasi.quasis.length; i++) { + const declarationTemplateNode = node.quasi.quasis[i]; + + if (htmlElementColorDeclarationRegex.test(declarationTemplateNode.value.raw)) { + const cssText = declarationTemplateNode.value.raw.replace(/(\{|\}|\\n)/g, '').trim(); + + cssText.split(';').forEach((declaration) => { + if ( + declaration.length > 0 && + checkPropertySpecifiesInvalidCSSColor(declaration.split(':')) + ) { + context.report({ + node: declarationTemplateNode, + messageId: 'noCssColor', + }); + } + }); + } + } + }, + JSXAttribute(node: TSESTree.JSXAttribute) { + if (!(node.name.name === 'style' || node.name.name === 'css')) { + return; + } + + /** + * @description Accounts for instances where a variable is used to define a style object + * + * @example + * const codeStyle = { color: '#dd4040' }; + * This is an example + * + * @example + * const codeStyle = { color: '#dd4040' }; + * This is an example + * + * @example + * const codeStyle = css({ color: '#dd4040' }); + * This is an example + */ + if ( + node.value?.type === 'JSXExpressionContainer' && + node.value.expression.type === 'Identifier' + ) { + const styleVariableName = node.value.expression.name; + + const nodeScope = context.sourceCode.getScope(node.value.expression); + + const variableDeclarationMatches = nodeScope.references.find( + (ref) => ref.identifier.name === styleVariableName + )?.resolved; + + let variableInitializationNode; + + if ((variableInitializationNode = variableDeclarationMatches?.defs?.[0]?.node?.init)) { + if (variableInitializationNode.type === 'ObjectExpression') { + // @ts-ignore + variableInitializationNode.properties.forEach((property) => { + handleObjectProperties(context, node, property, { + loc: property.loc, + messageId: 'noCSSColorSpecificDeclaredVariable', + data: { + property: + property.type === 'SpreadElement' + ? String(property.argument.name) + : String(property.key.name), + variableName: styleVariableName, + line: String(property.loc.start.line), + }, + }); + }); + } else if ( + variableInitializationNode.type === 'CallExpression' && + variableInitializationNode.callee.name === 'css' + ) { + const cssFunctionArgument = variableInitializationNode.arguments[0]; + + if (cssFunctionArgument.type === 'ObjectExpression') { + // @ts-ignore + cssFunctionArgument.properties.forEach((property) => { + handleObjectProperties(context, node, property, { + loc: node.loc, + messageId: 'noCSSColorSpecificDeclaredVariable', + data: { + property: + property.type === 'SpreadElement' + ? String(property.argument.name) + : String(property.key.name), + variableName: styleVariableName, + line: String(property.loc.start.line), + }, + }); + }); + } + } + } + + return; + } + + /** + * + * @description Accounts for instances where a style object is inlined in the JSX attribute + * + * @example + * This is an example + * + * @example + * This is an example + * + * @example + * const styleRules = { color: '#dd4040' }; + * This is an example + * + * @example + * const styleRules = { color: '#dd4040' }; + * This is an example + */ + if ( + node.value?.type === 'JSXExpressionContainer' && + node.value.expression.type === 'ObjectExpression' + ) { + const declarationPropertiesNode = node.value.expression.properties; + + declarationPropertiesNode?.forEach((property) => { + handleObjectProperties(context, node, property, { + loc: property.loc, + messageId: 'noCssColorSpecific', + data: { + property: + property.type === 'SpreadElement' + ? // @ts-expect-error the key name is always present else this code will not execute + String(property.argument.name) + : // @ts-expect-error the key name is always present else this code will not execute + String(property.key.name), + }, + }); + }); + + return; + } + + if (node.name.name === 'css' && node.value?.type === 'JSXExpressionContainer') { + /** + * @example + * This is an example + */ + if (node.value.expression.type === 'TemplateLiteral') { + for (let i = 0; i < node.value.expression.quasis.length; i++) { + const declarationTemplateNode = node.value.expression.quasis[i]; + + if (htmlElementColorDeclarationRegex.test(declarationTemplateNode.value.raw)) { + const cssText = declarationTemplateNode.value.raw + .replace(/(\{|\}|\\n)/g, '') + .trim(); + + cssText.split(';').forEach((declaration) => { + if ( + declaration.length > 0 && + checkPropertySpecifiesInvalidCSSColor(declaration.split(':')) + ) { + context.report({ + node: declarationTemplateNode, + messageId: 'noCssColor', + }); + } + }); + } + } + } + + /** + * @example + * ({ color: '#dd4040' })}>This is an example + */ + if ( + node.value.expression.type === 'FunctionExpression' || + node.value.expression.type === 'ArrowFunctionExpression' + ) { + let declarationPropertiesNode: TSESTree.Property[] = []; + + if (node.value.expression.body.type === 'ObjectExpression') { + // @ts-expect-error + declarationPropertiesNode = node.value.expression.body.properties; + } + + if (node.value.expression.body.type === 'BlockStatement') { + const functionReturnStatementNode = node.value.expression.body.body?.find((_node) => { + return _node.type === 'ReturnStatement'; + }); + + if (!functionReturnStatementNode) { + return; + } + + declarationPropertiesNode = // @ts-expect-error + (functionReturnStatementNode as TSESTree.ReturnStatement).argument?.properties; + } + + if (!declarationPropertiesNode.length) { + return; + } + + declarationPropertiesNode.forEach((property) => { + handleObjectProperties(context, node, property, { + loc: property.loc, + messageId: 'noCssColorSpecific', + data: { + // @ts-expect-error the key name is always present else this code will not execute + property: property.key.name, + }, + }); + }); + + return; + } + } + }, + }; + }, +}; diff --git a/packages/kbn-eslint-plugin-css/src/rules/prefer_css_attribute_for_eui_components.test.ts b/packages/kbn-eslint-plugin-css/src/rules/prefer_css_attribute_for_eui_components.test.ts new file mode 100644 index 0000000000000..f1534ec5c861f --- /dev/null +++ b/packages/kbn-eslint-plugin-css/src/rules/prefer_css_attribute_for_eui_components.test.ts @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { RuleTester } from 'eslint'; +import { PreferCSSAttributeForEuiComponents } from './prefer_css_attribute_for_eui_components'; + +const tsTester = [ + '@typescript-eslint/parser', + new RuleTester({ + parser: require.resolve('@typescript-eslint/parser'), + parserOptions: { + sourceType: 'module', + ecmaVersion: 2018, + ecmaFeatures: { + jsx: true, + }, + }, + }), +] as const; + +const babelTester = [ + '@babel/eslint-parser', + new RuleTester({ + parser: require.resolve('@babel/eslint-parser'), + parserOptions: { + sourceType: 'module', + ecmaVersion: 2018, + requireConfigFile: false, + babelOptions: { + presets: ['@kbn/babel-preset/node_preset'], + }, + }, + }), +] as const; + +const invalid: RuleTester.InvalidTestCase[] = [ + { + name: 'Prefer the JSX css attribute for EUI components', + filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + code: ` + import React from 'react'; + + function TestComponent() { + return ( + This is a test + ) + }`, + errors: [ + { + messageId: 'preferCSSAttributeForEuiComponents', + }, + ], + output: ` + import React from 'react'; + + function TestComponent() { + return ( + This is a test + ) + }`, + }, +]; + +const valid: RuleTester.ValidTestCase[] = [ + { + name: invalid[0].name, + filename: invalid[0].filename, + code: invalid[0].output as string, + }, +]; + +for (const [name, tester] of [tsTester, babelTester]) { + describe(name, () => { + tester.run('@kbn/prefer_css_attribute_for_eui_components', PreferCSSAttributeForEuiComponents, { + valid, + invalid, + }); + }); +} diff --git a/packages/kbn-eslint-plugin-css/src/rules/prefer_css_attribute_for_eui_components.ts b/packages/kbn-eslint-plugin-css/src/rules/prefer_css_attribute_for_eui_components.ts new file mode 100644 index 0000000000000..f2b8bfd7b7d74 --- /dev/null +++ b/packages/kbn-eslint-plugin-css/src/rules/prefer_css_attribute_for_eui_components.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { Rule } from 'eslint'; +import type { TSESTree } from '@typescript-eslint/typescript-estree'; +import type { Identifier, Node } from 'estree'; + +export const PreferCSSAttributeForEuiComponents: Rule.RuleModule = { + meta: { + type: 'suggestion', + docs: { + description: 'Prefer the JSX css attribute for EUI components', + category: 'Best Practices', + recommended: true, + }, + messages: { + preferCSSAttributeForEuiComponents: 'Prefer the css attribute for EUI components', + }, + fixable: 'code', + schema: [], + }, + create(context) { + const isNamedEuiComponentRegex = /^Eui[A-Z]*/; + + return { + JSXOpeningElement(node: TSESTree.JSXOpeningElement) { + if (isNamedEuiComponentRegex.test((node.name as unknown as Identifier).name)) { + let styleAttrNode: TSESTree.JSXAttribute | undefined; + + if ( + // @ts-expect-error the returned result is somehow typed as a union of JSXAttribute and JSXAttributeSpread + (styleAttrNode = node.attributes.find( + (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'style' + )) + ) { + context.report({ + node: styleAttrNode?.parent! as Node, + messageId: 'preferCSSAttributeForEuiComponents', + fix(fixer) { + const cssAttr = node.attributes.find( + (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'css' + ); + + if (cssAttr) { + return null; + } + + return fixer.replaceTextRange(styleAttrNode?.name?.range!, 'css'); + }, + }); + } + } + }, + }; + }, +}; diff --git a/packages/kbn-eslint-plugin-css/tsconfig.json b/packages/kbn-eslint-plugin-css/tsconfig.json new file mode 100644 index 0000000000000..a6dec1c1a62c5 --- /dev/null +++ b/packages/kbn-eslint-plugin-css/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": ["jest", "node"], + "lib": ["es2021"] + }, + "include": ["**/*.ts"], + "exclude": ["target/**/*"], + "kbn_references": [] +} diff --git a/packages/kbn-eslint-plugin-i18n/helpers/get_i18n_identifier_from_file_path.test.ts b/packages/kbn-eslint-plugin-i18n/helpers/get_i18n_identifier_from_file_path.test.ts index ca59efd40de44..fc7bf0b6bb509 100644 --- a/packages/kbn-eslint-plugin-i18n/helpers/get_i18n_identifier_from_file_path.test.ts +++ b/packages/kbn-eslint-plugin-i18n/helpers/get_i18n_identifier_from_file_path.test.ts @@ -13,7 +13,7 @@ const SYSTEMPATH = 'systemPath'; const testMap = [ [ - 'x-pack/plugins/observability_solution/observability/public/header_actions.tsx', + 'x-pack/solutions/observability/plugins/observability/public/header_actions.tsx', 'xpack.observability', ], [ @@ -22,7 +22,7 @@ const testMap = [ ], ['x-pack/plugins/cases/server/components/foo.tsx', 'xpack.cases'], [ - 'x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx', + 'x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx', 'xpack.synthetics', ], ['src/plugins/vis_types/gauge/public/editor/collections.ts', 'visTypeGauge'], diff --git a/packages/kbn-eslint-plugin-i18n/rules/formatted_message_should_start_with_the_right_id.test.ts b/packages/kbn-eslint-plugin-i18n/rules/formatted_message_should_start_with_the_right_id.test.ts index 55d32fb801f04..69d03af917d1b 100644 --- a/packages/kbn-eslint-plugin-i18n/rules/formatted_message_should_start_with_the_right_id.test.ts +++ b/packages/kbn-eslint-plugin-i18n/rules/formatted_message_should_start_with_the_right_id.test.ts @@ -52,13 +52,13 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When a string literal is passed to FormattedMessage the ID attribute should start with the correct i18n identifier, and if no existing defaultMessage is passed, it should add an empty default.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ``, }, { name: 'When a string literal is passed to FormattedMessage the ID attribute should start with the correct i18n identifier, and if an existing id and defaultMessage is passed, it should leave them alone.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ``, }, ], @@ -66,7 +66,7 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When a string literal is passed to FormattedMessage the ID attribute should start with the correct i18n identifier, and if no existing defaultMessage is passed, it should add an empty default.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import { FormattedMessage } from '@kbn/i18n-react'; @@ -89,7 +89,7 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When a string literal is passed to the ID attribute of and the root of the i18n identifier is not correct, it should keep the existing identifier but only update the right base app, and keep the default message if available.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import { FormattedMessage } from '@kbn/i18n-react'; @@ -112,7 +112,7 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When no string literal is passed to the ID attribute of it should start with the correct i18n identifier.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import { FormattedMessage } from '@kbn/i18n-react'; @@ -135,7 +135,7 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When i18n is not imported yet, the rule should add it.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` function TestComponent() { return ; diff --git a/packages/kbn-eslint-plugin-i18n/rules/i18n_translate_should_start_with_the_right_id.test.ts b/packages/kbn-eslint-plugin-i18n/rules/i18n_translate_should_start_with_the_right_id.test.ts index 36ddbdd3c4258..df701532517b6 100644 --- a/packages/kbn-eslint-plugin-i18n/rules/i18n_translate_should_start_with_the_right_id.test.ts +++ b/packages/kbn-eslint-plugin-i18n/rules/i18n_translate_should_start_with_the_right_id.test.ts @@ -45,7 +45,7 @@ const babelTester = [ const invalid: RuleTester.InvalidTestCase[] = [ { name: 'When a string literal is passed to i18n.translate, it should start with the correct i18n identifier, and if no existing defaultMessage is passed, it should add an empty default.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` import { i18n } from '@kbn/i18n'; @@ -67,7 +67,7 @@ function TestComponent() { }, { name: 'When a string literal is passed to i18n.translate, and the root of the i18n identifier is not correct, it should keep the existing identifier but only update the right base app.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` import { i18n } from '@kbn/i18n'; @@ -89,7 +89,7 @@ function TestComponent() { }, { name: 'When a string literal is passed to i18n.translate, and the root of the i18n identifier is not correct, it should keep the existing identifier but only update the right base app, and keep the default message if available.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` import { i18n } from '@kbn/i18n'; @@ -111,7 +111,7 @@ function TestComponent() { }, { name: 'When no string literal is passed to i18n.translate, it should start with the correct i18n identifier.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` import { i18n } from '@kbn/i18n'; @@ -133,7 +133,7 @@ function TestComponent() { }, { name: 'When i18n is not imported yet, the rule should add it.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` function TestComponent() { const foo = i18n.translate(); diff --git a/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_formatted_message.test.ts b/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_formatted_message.test.ts index b9aeaed90d1a9..298e5976add23 100644 --- a/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_formatted_message.test.ts +++ b/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_formatted_message.test.ts @@ -45,7 +45,7 @@ const babelTester = [ const invalid: RuleTester.InvalidTestCase[] = [ { name: 'A JSX element with a string literal should be translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -76,7 +76,7 @@ function TestComponent() { }, { name: 'A JSX element with a string literal that are inside an Eui component should take the component name of the parent into account', - filename: '/x-pack/plugins/observability_solution/observability/public/another_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/another_component.tsx', code: ` import React from 'react'; @@ -120,7 +120,7 @@ function AnotherComponent() { { name: 'When no import of the translation module is present, the import line should be added', filename: - '/x-pack/plugins/observability_solution/observability/public/yet_another_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/yet_another_component.tsx', code: ` import React from 'react'; @@ -155,7 +155,7 @@ function YetAnotherComponent() { }, { name: 'Import lines without the necessary translation module should be updated to include i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { SomeOtherModule } from '@kbn/i18n-react'; @@ -183,7 +183,7 @@ function TestComponent() { }, { name: 'JSX elements that have a label, aria-label or title prop with a string value should be translated with FormattedMessage', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -239,7 +239,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a string value with quotes in it should be correctly translated with FormattedMessage', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -295,7 +295,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a JSXExpression value that is a string should be translated with FormattedMessage', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -351,7 +351,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a JSXExpression value that is a string with quotes in it should be correctly translated with FormattedMessage', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -410,7 +410,7 @@ function TestComponent3() { const valid: RuleTester.ValidTestCase[] = [ { name: 'A JSXText element inside a EuiCode component should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -422,7 +422,7 @@ function TestComponent() { }, { name: 'A JSXText element that contains anything other than alpha characters should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -434,7 +434,7 @@ function TestComponent() { }, { name: 'A JSXText element that is wrapped in three backticks (markdown) should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; diff --git a/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_i18n.test.ts b/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_i18n.test.ts index 17a1e290befb5..1d36880057f16 100644 --- a/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_i18n.test.ts +++ b/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_i18n.test.ts @@ -45,7 +45,7 @@ const babelTester = [ const invalid: RuleTester.InvalidTestCase[] = [ { name: 'A JSX element with a string literal should be translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -72,7 +72,7 @@ function TestComponent() { }, { name: 'A JSX element with a string literal that are inside an Eui component should take the component name of the parent into account', - filename: '/x-pack/plugins/observability_solution/observability/public/another_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/another_component.tsx', code: ` import React from 'react'; @@ -112,7 +112,7 @@ function AnotherComponent() { { name: 'When no import of the translation module is present, the import line should be added', filename: - '/x-pack/plugins/observability_solution/observability/public/yet_another_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/yet_another_component.tsx', code: ` import React from 'react'; @@ -143,7 +143,7 @@ function YetAnotherComponent() { }, { name: 'Import lines without the necessary translation module should be updated to include i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { SomeOtherModule } from '@kbn/i18n'; @@ -171,7 +171,7 @@ function TestComponent() { }, { name: 'JSX elements that have a label, aria-label or title prop with a string value should be translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -227,7 +227,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a string value with quotes should be correctly translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -283,7 +283,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a JSXExpression value that is a string should be translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -339,7 +339,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a JSXExpression value that is a string with quotes in it should be correctly translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -398,7 +398,7 @@ function TestComponent3() { const valid: RuleTester.ValidTestCase[] = [ { name: 'A JSXText element inside a EuiCode component should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -410,7 +410,7 @@ function TestComponent() { }, { name: 'A JSXText element that contains anything other than alpha characters should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -422,7 +422,7 @@ function TestComponent() { }, { name: 'A JSXText element that is wrapped in three backticks (markdown) should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; diff --git a/packages/kbn-eslint-plugin-telemetry/helpers/get_app_name.test.ts b/packages/kbn-eslint-plugin-telemetry/helpers/get_app_name.test.ts index 0d5526103fb7d..5053c4ca5a8e2 100644 --- a/packages/kbn-eslint-plugin-telemetry/helpers/get_app_name.test.ts +++ b/packages/kbn-eslint-plugin-telemetry/helpers/get_app_name.test.ts @@ -12,7 +12,7 @@ import { getAppName } from './get_app_name'; const SYSTEMPATH = 'systemPath'; const testMap = [ - ['x-pack/plugins/observability_solution/observability/foo/bar/baz/header_actions.tsx', 'o11y'], + ['x-pack/solutions/observability/plugins/observability/foo/bar/baz/header_actions.tsx', 'o11y'], ['x-pack/plugins/observability_solution/apm/baz/header_actions.tsx', 'apm'], ['x-pack/plugins/apm/public/components/app/correlations/correlations_table.tsx', 'apm'], ['x-pack/plugins/observability/foo/bar/baz/header_actions.tsx', 'o11y'], diff --git a/packages/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx b/packages/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx index de230ac617987..9053494071c03 100644 --- a/packages/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx +++ b/packages/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx @@ -11,7 +11,14 @@ import './index.scss'; import { isFieldLensCompatible } from '@kbn/visualization-ui-components'; import React, { useCallback, useEffect, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiFormRow, EuiSwitch, EuiSwitchEvent, EuiButtonGroup, EuiSpacer } from '@elastic/eui'; +import { + EuiFormRow, + EuiSwitch, + EuiSwitchEvent, + EuiButtonGroup, + EuiSpacer, + euiPaletteColorBlind, +} from '@elastic/eui'; import { IconSelectSetting, DimensionEditorSection, @@ -339,6 +346,7 @@ const AnnotationEditorControls = ({ label={i18n.translate('eventAnnotationComponents.xyChart.lineColor.label', { defaultMessage: 'Color', })} + swatches={euiPaletteColorBlind()} /> Run `yarn storybook expandable_flyout` to take a quick look at the expandable flyout in action - -## Design decisions - -The expandable-flyout is making some strict UI design decisions: -- when in collapsed mode (i.e. when only the right/preview section is open), the flyout's width linearly grows from its minimum value of 380px to its maximum value of 750px -- when in expanded mode (i.e. when the left section is opened), the flyout's width changes depending on the browser's width: - - if the window is smaller than 1600px, the flyout takes the entire browser window (minus 48px of padding on the left) - - for windows bigger than 1600px, the flyout's width is 80% of the entire browser window (with a max width of 1500px for the left section, and 750px for the right section) - -> While the expandable-flyout will work on very small screens, having both the right and left sections visible at the same time will not be a good experience to the user. We recommend only showing the right panel, and therefore handling this situation when you build your panels by considering hiding the actions that could open the left panel (like the expand details button in the [FlyoutNavigation](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx)). - -## State persistence - -The expandable flyout offers 2 ways of managing its state: - -### Memory storage - -The default behavior saves the state of the flyout in memory. The state is internal to the package and based on an isolated redux context. Using this mode means the state will not be persisted when sharing url or reloading browser pages. - -### Url storage - -The second way (done by setting the `urlKey` prop to a string value) saves the state of the flyout in the url. This allows the flyout to be automatically reopened when users refresh the browser page, or when users share an url. The `urlKey` will be used as the url parameter. - -**_Note: the word `memory` cannot be used as an `urlKey` as it is reserved for the memory storage behavior. You can use any other string value, try to use something that should be unique._** - -> We highly recommend NOT nesting flyouts in your code, as it would cause conflicts for the url keys. We recommend instead to build multiple panels, with each their own context to manage their data (for example, take a look at the Security Solution [setup](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout)). -> -> A good solution is for example to have one instance of a flyout at a page level, and then have multiple panels that can be opened in that flyout. - - -## Package API - -The ExpandableFlyout [React component](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/index.tsx) renders the UI, leveraging an [EuiFlyout](https://eui.elastic.co/#/layout/flyout). - -To retrieve the flyout's layout (left, right and preview panels), you can utilize [useExpandableFlyoutState](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts). - -To control (or mutate) flyout's layout, you can utilize [useExpandableFlyoutApi](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts). - -**Expandable Flyout API** exposes the following methods: -- **openFlyout**: open the flyout with a set of panels -- **openRightPanel**: open a right panel -- **openLeftPanel**: open a left panel -- **openPreviewPanel**: open a preview panel -- **closeRightPanel**: close the right panel -- **closeLeftPanel**: close the left panel -- **closePreviewPanel**: close the preview panels -- **previousPreviewPanel**: navigate to the previous preview panel -- **closeFlyout**: close the flyout - -> The expandable flyout propagates the `onClose` callback from the EuiFlyout component. As we recommend having a single instance of the flyout in your application, it's up to the application's code to dispatch the event (through Redux, window events, observable, prop drilling...). - -When calling `openFlyout`, the right panel state is automatically appended in the `history` slice in the redux context. To access the flyout's history, you can use the [useExpandableFlyoutHistory](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_history.ts) hook. - -## Usage - -To use the expandable flyout in your plugin, first you need wrap your code with the [context provider](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/context.tsx) at a high enough level as follows: -```typescript jsx -// state stored in the url - - ... - - - -// state stored in memory - - ... - -``` - -Then use the [React UI component](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/index.tsx) where you need: - -```typescript jsx - -``` -_where `myPanels` is a list of all the panels that can be rendered in the flyout_ - -## Optional properties - -The expandable flyout now offers a way for users to change some of the flyout's UI properties. These are done via a gear icon in the top right corner of the flyout, to the left of the close icon. - -The gear icon can be hidden by setting the `hideSettings` property to `true` in the flyout's custom props. -The `typeDisabled` property allows to disable the push/overlay toggle. -```typescript -flyoutCustomProps?: { - hideSettings?: boolean; - typeDisabled?: boolean, -}; -``` - -At the moment, clicking on the gear icon opens a popover that allows you to toggle the flyout between `overlay` and `push` modes (see [EUI](https://eui.elastic.co/#/layout/flyout#push-versus-overlay)). The default value is `overlay`. The package remembers the selected value in local storage, only for expandable flyout that have a urlKey. The state of memory flyouts is not persisted. - -## Terminology - -### Section - -One of the 3 areas of the flyout (**left**, **right** or **preview**). - -### Panel - -A set of properties defining what's displayed in one of the flyout section (see interface [here](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/types.ts)). diff --git a/packages/kbn-expandable-flyout/__mocks__/index.tsx b/packages/kbn-expandable-flyout/__mocks__/index.tsx deleted file mode 100644 index 75da56c9eb814..0000000000000 --- a/packages/kbn-expandable-flyout/__mocks__/index.tsx +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import type { IStorage } from '@kbn/kibana-utils-plugin/public'; - -export const ExpandableFlyout = jest.fn(); - -export const localStorageMock = (): IStorage => { - let store: Record = {}; - - return { - getItem: (key: string) => { - return store[key] || null; - }, - setItem: (key: string, value: unknown) => { - store[key] = value; - }, - clear() { - store = {}; - }, - removeItem(key: string) { - delete store[key]; - }, - }; -}; diff --git a/packages/kbn-expandable-flyout/index.ts b/packages/kbn-expandable-flyout/index.ts deleted file mode 100644 index 48478334b6590..0000000000000 --- a/packages/kbn-expandable-flyout/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { ExpandableFlyout } from './src'; - -export { useExpandableFlyoutApi } from './src/hooks/use_expandable_flyout_api'; -export { useExpandableFlyoutState } from './src/hooks/use_expandable_flyout_state'; -export { useExpandableFlyoutHistory } from './src/hooks/use_expandable_flyout_history'; - -export { type FlyoutPanels as ExpandableFlyoutState } from './src/store/state'; - -export { ExpandableFlyoutProvider } from './src/provider'; - -export type { ExpandableFlyoutProps } from './src'; -export type { FlyoutPanelProps, PanelPath, ExpandableFlyoutApi } from './src/types'; diff --git a/packages/kbn-expandable-flyout/jest.config.js b/packages/kbn-expandable-flyout/jest.config.js deleted file mode 100644 index c318a1b2717bc..0000000000000 --- a/packages/kbn-expandable-flyout/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-expandable-flyout'], -}; diff --git a/packages/kbn-expandable-flyout/package.json b/packages/kbn-expandable-flyout/package.json deleted file mode 100644 index 7cb64358db0ba..0000000000000 --- a/packages/kbn-expandable-flyout/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "@kbn/expandable-flyout", - "private": true, - "version": "1.0.0", - "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", - "sideEffects": false -} \ No newline at end of file diff --git a/packages/kbn-expandable-flyout/src/components/left_section.tsx b/packages/kbn-expandable-flyout/src/components/left_section.tsx deleted file mode 100644 index 591062116a971..0000000000000 --- a/packages/kbn-expandable-flyout/src/components/left_section.tsx +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { EuiFlexItem } from '@elastic/eui'; -import React, { memo } from 'react'; -import { LEFT_SECTION_TEST_ID } from './test_ids'; - -interface LeftSectionProps { - /** - * Component to be rendered - */ - component: React.ReactElement; -} - -/** - * Left section of the expanded flyout rendering a panel - */ -export const LeftSection: React.FC = memo(({ component }: LeftSectionProps) => ( - - {component} - -)); - -LeftSection.displayName = 'LeftSection'; diff --git a/packages/kbn-expandable-flyout/src/components/right_section.tsx b/packages/kbn-expandable-flyout/src/components/right_section.tsx deleted file mode 100644 index ab6598b9f8e3a..0000000000000 --- a/packages/kbn-expandable-flyout/src/components/right_section.tsx +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { EuiFlexItem } from '@elastic/eui'; -import React, { memo } from 'react'; -import { RIGHT_SECTION_TEST_ID } from './test_ids'; - -interface RightSectionProps { - /** - * Component to be rendered - */ - component: React.ReactElement; -} - -/** - * Right section of the expanded flyout rendering a panel - */ -export const RightSection: React.FC = memo( - ({ component }: RightSectionProps) => ( - - {component} - - ) -); - -RightSection.displayName = 'RightSection'; diff --git a/packages/kbn-expandable-flyout/src/components/test_ids.ts b/packages/kbn-expandable-flyout/src/components/test_ids.ts deleted file mode 100644 index 22d2e00ed66c7..0000000000000 --- a/packages/kbn-expandable-flyout/src/components/test_ids.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export const FLYOUT_TEST_ID = 'resizableFlyout'; - -export const RIGHT_SECTION_TEST_ID = 'rightSection'; - -export const LEFT_SECTION_TEST_ID = 'leftSection'; - -export const PREVIEW_SECTION_TEST_ID = 'previewSection'; - -export const PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID = 'previewSectionCloseButton'; - -export const PREVIEW_SECTION_BACK_BUTTON_TEST_ID = 'previewSectionBackButton'; - -export const PREVIEW_SECTION_HEADER_TEST_ID = 'previewSectionHeader'; - -export const SETTINGS_MENU_BUTTON_TEST_ID = 'settingsMenuButton'; - -export const SETTINGS_MENU_FLYOUT_TYPE_TITLE_TEST_ID = 'settingsMenuFlyoutTypeTitle'; - -export const SETTINGS_MENU_FLYOUT_TYPE_INFORMATION_ICON_TEST_ID = - 'settingsMenuFlyoutTypeInformationIcon'; - -export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_TEST_ID = 'settingsMenuFlyoutTypeButtonGroup'; - -export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_OVERLAY_TEST_ID = - 'settingsMenuFlyoutTypeButtonGroupOverlayOption'; - -export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_PUSH_TEST_ID = - 'settingsMenuFlyoutTypeButtonGroupPushOption'; - -export const SETTINGS_MENU_FLYOUT_RESIZE_TITLE_TEST_ID = 'settingsMenuFlyoutSizeTitle'; - -export const SETTINGS_MENU_FLYOUT_RESIZE_INFORMATION_ICON_TEST_ID = - 'settingsMenuFlyoutSizeInformationIcon'; - -export const SETTINGS_MENU_FLYOUT_RESIZE_BUTTON_TEST_ID = 'settingsMenuFlyoutSizeButton'; - -export const RESIZABLE_LEFT_SECTION_TEST_ID = 'resizableLeftSection'; - -export const RESIZABLE_RIGHT_SECTION_TEST_ID = 'resizableRightSection'; - -export const RESIZABLE_BUTTON_TEST_ID = 'resizableButton'; diff --git a/packages/kbn-expandable-flyout/src/components/translations.ts b/packages/kbn-expandable-flyout/src/components/translations.ts deleted file mode 100644 index 01ab016a720c1..0000000000000 --- a/packages/kbn-expandable-flyout/src/components/translations.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { i18n } from '@kbn/i18n'; - -export const BACK_BUTTON = i18n.translate('expandableFlyout.previewSection.backButton', { - defaultMessage: 'Back', -}); - -export const CLOSE_BUTTON = i18n.translate('expandableFlyout.previewSection.closeButton', { - defaultMessage: 'Close', -}); diff --git a/packages/kbn-expandable-flyout/src/constants.ts b/packages/kbn-expandable-flyout/src/constants.ts deleted file mode 100644 index dfabd845a3f20..0000000000000 --- a/packages/kbn-expandable-flyout/src/constants.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -/** - * This is a reserved word that we use as an id when no urlKey is provided and we are in memory storage mode - */ -export const REDUX_ID_FOR_MEMORY_STORAGE = 'memory'; - -export const EXPANDABLE_FLYOUT_LOCAL_STORAGE = 'expandableFlyout.ui'; -export const PUSH_VS_OVERLAY_LOCAL_STORAGE = 'pushVsOverlay'; -export const USER_COLLAPSED_WIDTH_LOCAL_STORAGE = 'collapsedWidth'; -export const USER_EXPANDED_WIDTH_LOCAL_STORAGE = 'expandedWidth'; -export const USER_SECTION_WIDTHS_LOCAL_STORAGE = 'sectionWidths'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_history.ts b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_history.ts deleted file mode 100644 index 415703a8811e4..0000000000000 --- a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_history.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; -import { useExpandableFlyoutContext } from '../context'; -import { selectHistoryById, useSelector } from '../store/redux'; - -/** - * This hook allows you to access the flyout state, read open right, left and preview panels. - */ -export const useExpandableFlyoutHistory = () => { - const { urlKey } = useExpandableFlyoutContext(); - // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' - const id = urlKey || REDUX_ID_FOR_MEMORY_STORAGE; - return useSelector(selectHistoryById(id)); -}; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts deleted file mode 100644 index 88a94f66d54ae..0000000000000 --- a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { useMemo } from 'react'; -import { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; -import { useExpandableFlyoutContext } from '../context'; -import { selectPanelsById, useSelector } from '../store/redux'; - -/** - * This hook allows you to access the flyout state, read open right, left and preview panels. - */ -export const useExpandableFlyoutState = () => { - const { urlKey } = useExpandableFlyoutContext(); - // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' - const id = useMemo(() => urlKey || REDUX_ID_FOR_MEMORY_STORAGE, [urlKey]); - - return useSelector(selectPanelsById(id)); -}; diff --git a/packages/kbn-expandable-flyout/src/index.stories.tsx b/packages/kbn-expandable-flyout/src/index.stories.tsx deleted file mode 100644 index b827d02f1da08..0000000000000 --- a/packages/kbn-expandable-flyout/src/index.stories.tsx +++ /dev/null @@ -1,371 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { - EuiButton, - EuiFlexGroup, - EuiFlexItem, - EuiFlyoutBody, - EuiFlyoutFooter, - EuiFlyoutHeader, - EuiPanel, - EuiTitle, -} from '@elastic/eui'; -import { ExpandableFlyout } from '.'; -import { TestProvider } from './test/provider'; -import { initialUiState, State } from './store/state'; - -export default { - component: ExpandableFlyout, - title: 'ExpandableFlyout', -}; - -const registeredPanels = [ - { - key: 'right', - component: () => ( - <> - - -

{'Right panel header'}

-
-
- -

{'Example of a right component body'}

-
- - - - {'Footer button'} - - - - - ), - }, - { - key: 'left', - component: () => ( - - - - -

{'Left panel header'}

-
-
-

{'Example of a left component content'}

- -
-
- ), - }, - { - key: 'preview1', - component: () => ( - - - - -

{'Preview panel header'}

-
-
-

{'Example of a preview component content'}

- -
-
- ), - }, - { - key: 'preview2', - component: () => ( - - - - -

{'Second preview panel header'}

-
-
-

{'Example of another preview component content'}

- -
-
- ), - }, -]; - -export const Right: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: undefined, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const Left: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const Preview: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: [ - { - id: 'preview1', - }, - ], - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const MultiplePreviews: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: [ - { - id: 'preview1', - }, - { - id: 'preview2', - }, - ], - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const CollapsedPushMode: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: undefined, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: { - ...initialUiState, - pushVsOverlay: 'push', - }, - }; - - return ( - - - - ); -}; - -export const ExpandedPushMode: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: { - ...initialUiState, - pushVsOverlay: 'push', - }, - }; - - return ( - - - - ); -}; - -export const DisableTypeSelection: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const ResetWidths: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const DisableResizeWidthSelection: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; diff --git a/packages/kbn-expandable-flyout/src/index.test.tsx b/packages/kbn-expandable-flyout/src/index.test.tsx deleted file mode 100644 index 5f0bada8653a1..0000000000000 --- a/packages/kbn-expandable-flyout/src/index.test.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { render } from '@testing-library/react'; - -import { Panel } from './types'; -import { ExpandableFlyout } from '.'; -import { useWindowWidth } from './hooks/use_window_width'; -import { TestProvider } from './test/provider'; -import { REDUX_ID_FOR_MEMORY_STORAGE } from './constants'; -import { initialUiState } from './store/state'; - -jest.mock('./hooks/use_window_width'); - -const registeredPanels: Panel[] = [ - { - key: 'key', - component: () =>
{'component'}
, - }, -]; - -describe('ExpandableFlyout', () => { - it(`should not render flyout if window width is 0`, () => { - (useWindowWidth as jest.Mock).mockReturnValue(0); - - const result = render( - - - - ); - - expect(result.asFragment()).toMatchInlineSnapshot(``); - }); - - it(`should render flyout`, () => { - (useWindowWidth as jest.Mock).mockReturnValue(1000); - - const state = { - panels: { - byId: { - [REDUX_ID_FOR_MEMORY_STORAGE]: { - right: { - id: 'key', - }, - left: undefined, - preview: undefined, - history: [{ id: 'key' }], - }, - }, - }, - ui: initialUiState, - }; - - const { getByTestId } = render( - - - - ); - - expect(getByTestId('TEST')).toBeInTheDocument(); - }); -}); diff --git a/packages/kbn-expandable-flyout/src/index.tsx b/packages/kbn-expandable-flyout/src/index.tsx deleted file mode 100644 index 25425a75e2ba9..0000000000000 --- a/packages/kbn-expandable-flyout/src/index.tsx +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React, { useMemo } from 'react'; -import type { Interpolation, Theme } from '@emotion/react'; -import { EuiFlyoutProps } from '@elastic/eui'; -import { EuiFlyoutResizableProps } from '@elastic/eui/src/components/flyout/flyout_resizable'; -import { Container } from './components/container'; -import { useWindowWidth } from './hooks/use_window_width'; -import { useInitializeFromLocalStorage } from './hooks/use_initialize_from_local_storage'; -import { FlyoutCustomProps } from './components/settings_menu'; -import type { Panel } from './types'; - -export interface ExpandableFlyoutProps extends Omit { - /** - * List of all registered panels available for render - */ - registeredPanels: Panel[]; - /** - * Allows for custom styles to be passed to the EuiFlyout component - */ - customStyles?: Interpolation; - /** - * Callback function to let application's code the flyout is closed - */ - onClose?: EuiFlyoutProps['onClose']; - /** - * Set of properties that drive a settings menu - */ - flyoutCustomProps?: FlyoutCustomProps; - /** - * Optional data test subject string to be used on the EuiFlyoutResizable component - */ - 'data-test-subj'?: string; -} - -/** - * Expandable flyout UI React component. - * Displays 3 sections (right, left, preview) depending on the panels in the context. - * - * The behavior expects that the left and preview sections should only be displayed is a right section - * is already rendered. - */ -export const ExpandableFlyout: React.FC = ({ ...props }) => { - const windowWidth = useWindowWidth(); - - useInitializeFromLocalStorage(); - - const container = useMemo(() => , [props]); - - if (windowWidth === 0) { - return null; - } - - return <>{container}; -}; - -ExpandableFlyout.displayName = 'ExpandableFlyout'; diff --git a/packages/kbn-expandable-flyout/src/provider.test.tsx b/packages/kbn-expandable-flyout/src/provider.test.tsx deleted file mode 100644 index 0d8e935098a3f..0000000000000 --- a/packages/kbn-expandable-flyout/src/provider.test.tsx +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { TestProvider } from './test/provider'; -import { UrlSynchronizer } from './provider'; -import * as actions from './store/actions'; -import { initialUiState, State } from './store/state'; -import { of } from 'rxjs'; - -const mockGet = jest.fn(); -const mockSet = jest.fn(); -const mockChange$ = jest.fn().mockReturnValue(of({})); -jest.mock('@kbn/kibana-utils-plugin/public'); -const { createKbnUrlStateStorage } = jest.requireMock('@kbn/kibana-utils-plugin/public'); - -const urlKey = 'urlKey'; - -describe('UrlSynchronizer', () => { - it(`should not dispatch any actions or update url if urlKey isn't passed`, () => { - const urlChangedAction = jest.spyOn(actions, 'urlChangedAction'); - - const initialState: State = { - panels: { - byId: { - [urlKey]: { - right: { id: 'key1' }, - left: { id: 'key11' }, - preview: undefined, - history: [{ id: 'key1' }], - }, - }, - needsSync: true, - }, - ui: initialUiState, - }; - - render( - - - - ); - - expect(urlChangedAction).not.toHaveBeenCalled(); - expect(mockSet).not.toHaveBeenCalled(); - }); - - it('should update url if no panels exist', () => { - (createKbnUrlStateStorage as jest.Mock).mockReturnValue({ - get: mockGet, - set: mockSet, - change$: mockChange$, - }); - const initialState: State = { - panels: { - byId: {}, - needsSync: true, - }, - ui: initialUiState, - }; - - render( - - - - ); - - expect(mockSet).toHaveBeenCalledWith('urlKey', { - left: undefined, - right: undefined, - preview: [undefined], - }); - }); - - it('should dispatch action and update url with the correct value', () => { - const urlChangedAction = jest.spyOn(actions, 'urlChangedAction'); - - (createKbnUrlStateStorage as jest.Mock).mockReturnValue({ - get: mockGet, - set: mockSet, - change$: mockChange$, - }); - const initialState: State = { - panels: { - byId: { - [urlKey]: { - right: { id: 'key1' }, - left: { id: 'key2' }, - preview: undefined, - history: [{ id: 'key1' }], - }, - }, - needsSync: true, - }, - ui: initialUiState, - }; - - render( - - - - ); - - expect(urlChangedAction).toHaveBeenCalledWith({ - id: urlKey, - preview: undefined, - }); - expect(mockSet).toHaveBeenCalled(); - }); -}); diff --git a/packages/kbn-expandable-flyout/src/provider.tsx b/packages/kbn-expandable-flyout/src/provider.tsx deleted file mode 100644 index cad83bb0ee808..0000000000000 --- a/packages/kbn-expandable-flyout/src/provider.tsx +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; -import React, { FC, PropsWithChildren, useEffect, useMemo } from 'react'; -import { Provider as ReduxProvider } from 'react-redux'; -import { useHistory } from 'react-router-dom'; -import { ExpandableFlyoutContextProvider, useExpandableFlyoutContext } from './context'; -import { FlyoutPanels } from './store/state'; -import { useExpandableFlyoutState } from './hooks/use_expandable_flyout_state'; -import { Context, selectNeedsSync, store, useDispatch, useSelector } from './store/redux'; -import { urlChangedAction } from './store/actions'; - -/** - * Dispatches actions when url state changes and initializes the state when the app is loaded with flyout url parameters - */ -export const UrlSynchronizer = () => { - const { urlKey } = useExpandableFlyoutContext(); - const panels = useExpandableFlyoutState(); - const needsSync = useSelector(selectNeedsSync()); - const dispatch = useDispatch(); - - const history = useHistory(); - - const urlStorage = useMemo( - () => - createKbnUrlStateStorage({ - history, - useHash: false, - useHashQuery: false, - }), - [history] - ); - - useEffect(() => { - if (!urlKey) { - return; - } - - const currentValue = urlStorage.get(urlKey); - - // Dispatch current value to redux store as it does not happen automatically - if (currentValue) { - dispatch( - urlChangedAction({ - ...currentValue, - preview: currentValue?.preview?.at(-1), - id: urlKey, - }) - ); - } - - const subscription = urlStorage.change$(urlKey).subscribe((value) => { - dispatch(urlChangedAction({ ...value, preview: value?.preview?.at(-1), id: urlKey })); - }); - - return () => subscription.unsubscribe(); - }, [dispatch, urlKey, urlStorage]); - - useEffect(() => { - if (!needsSync || !panels || !urlKey) { - return; - } - - const { left, right, preview } = panels; - urlStorage.set(urlKey, { left, right, preview: [preview?.at(-1)] }); - }, [needsSync, panels, urlKey, urlStorage]); - - return null; -}; - -interface ExpandableFlyoutProviderProps { - /** - * Unique key to be used as url parameter to store the state of the flyout. - * Providing this will save the state of the flyout in the url. - * The word `memory` is reserved, do NOT use it! - */ - urlKey?: string; -} - -/** - * Wrap your plugin with this context for the ExpandableFlyout React component. - */ -export const ExpandableFlyoutProvider: FC> = ({ - children, - urlKey, -}) => { - return ( - - - {urlKey ? : null} - {children} - - - ); -}; diff --git a/packages/kbn-expandable-flyout/src/store/state.ts b/packages/kbn-expandable-flyout/src/store/state.ts deleted file mode 100644 index 46326c311fbeb..0000000000000 --- a/packages/kbn-expandable-flyout/src/store/state.ts +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { FlyoutPanelProps } from '../..'; - -export interface FlyoutPanels { - /** - * Panel to render in the left section - */ - left: FlyoutPanelProps | undefined; - /** - * Panel to render in the right section - */ - right: FlyoutPanelProps | undefined; - /** - * Panels to render in the preview section - */ - preview: FlyoutPanelProps[] | undefined; - /* - * History of the right panels that were opened - */ - history: FlyoutPanelProps[]; -} - -export interface PanelsState { - /** - * Store the panels for multiple flyouts - */ - byId: { - [id: string]: FlyoutPanels; - }; - /** - * Is the flyout in sync with external storage (eg. url)? - * This value can be used in useEffect for example, to control whether we should - * call an external state sync method. - */ - needsSync?: boolean; -} - -export const initialPanelsState: PanelsState = { - byId: {}, - needsSync: false, -}; - -export interface DefaultWidthsState { - /** - * Default width for the right section (calculated from the window width) - */ - rightWidth: number; - /** - * Default width for the left section (calculated from the window width) - */ - leftWidth: number; - /** - * Default width for the preview section (calculated from the window width) - */ - previewWidth: number; - /** - * Value of the right width in percentage (of the flyout total width) - */ - rightPercentage: number; - /** - * Value of the left width in percentage (of the flyout total width) - */ - leftPercentage: number; - /** - * Value of the preview width in percentage (of the flyout total width) - */ - previewPercentage: number; -} - -export interface UserFlyoutWidthsState { - /** - * Width of the collapsed flyout - */ - collapsedWidth?: number; - /** - * Width of the expanded flyout - */ - expandedWidth?: number; -} - -export interface UserSectionWidthsState { - /** - * Percentage for the left section - */ - leftPercentage: number | undefined; - /** - * Percentage for the right section - */ - rightPercentage: number | undefined; -} - -export interface UiState { - /** - * Push vs overlay information - */ - pushVsOverlay: 'push' | 'overlay'; - /** - * Default widths for the flyout - */ - defaultWidths: DefaultWidthsState; - /** - * User resized widths for the flyout - */ - userFlyoutWidths: UserFlyoutWidthsState; - /** - * User resized left and right section widths for the flyout - */ - userSectionWidths: UserSectionWidthsState; -} - -export const initialUiState: UiState = { - pushVsOverlay: 'overlay', - defaultWidths: {} as DefaultWidthsState, - userFlyoutWidths: {}, - userSectionWidths: {} as UserSectionWidthsState, -}; - -export interface State { - /** - * All panels related information - */ - panels: PanelsState; - /** - * All ui related information - */ - ui: UiState; -} - -export const initialState: State = { - panels: initialPanelsState, - ui: initialUiState, -}; diff --git a/packages/kbn-expandable-flyout/src/test/provider.tsx b/packages/kbn-expandable-flyout/src/test/provider.tsx deleted file mode 100644 index 81de83720afd7..0000000000000 --- a/packages/kbn-expandable-flyout/src/test/provider.tsx +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Provider as ReduxProvider } from 'react-redux'; -import { configureStore } from '@reduxjs/toolkit'; -import React, { FC, PropsWithChildren } from 'react'; -import { I18nProvider } from '@kbn/i18n-react'; -import { - savePushVsOverlayToLocalStorageMiddleware, - saveUserSectionWidthsToLocalStorageMiddleware, - saveUserFlyoutWidthsToLocalStorageMiddleware, -} from '../store/middlewares'; -import { ExpandableFlyoutContextProvider } from '../context'; -import { panelsReducer, uiReducer } from '../store/reducers'; -import { Context } from '../store/redux'; -import { initialState, State } from '../store/state'; - -interface TestProviderProps { - state?: State; - urlKey?: string; -} - -export const TestProvider: FC> = ({ - children, - state = initialState, - urlKey, -}) => { - const store = configureStore({ - reducer: { - panels: panelsReducer, - ui: uiReducer, - }, - devTools: false, - preloadedState: state, - middleware: [ - savePushVsOverlayToLocalStorageMiddleware, - saveUserSectionWidthsToLocalStorageMiddleware, - saveUserFlyoutWidthsToLocalStorageMiddleware, - ], - }); - - return ( - - - - {children} - - - - ); -}; diff --git a/packages/kbn-expandable-flyout/src/types.ts b/packages/kbn-expandable-flyout/src/types.ts deleted file mode 100644 index 14e1a06ff4605..0000000000000 --- a/packages/kbn-expandable-flyout/src/types.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; - -export interface ExpandableFlyoutApi { - /** - * Open the flyout with left, right and/or preview panels - */ - openFlyout: (panels: { - left?: FlyoutPanelProps; - right?: FlyoutPanelProps; - preview?: FlyoutPanelProps; - }) => void; - /** - * Replaces the current right panel with a new one - */ - openRightPanel: (panel: FlyoutPanelProps) => void; - /** - * Replaces the current left panel with a new one - */ - openLeftPanel: (panel: FlyoutPanelProps) => void; - /** - * Add a new preview panel to the list of current preview panels - */ - openPreviewPanel: (panel: FlyoutPanelProps) => void; - /** - * Closes right panel - */ - closeRightPanel: () => void; - /** - * Closes left panel - */ - closeLeftPanel: () => void; - /** - * Closes all preview panels - */ - closePreviewPanel: () => void; - /** - * Go back to previous preview panel - */ - previousPreviewPanel: () => void; - /** - * Close all panels and closes flyout - */ - closeFlyout: () => void; -} - -export interface PanelPath { - /** - * Top level tab that to be displayed - */ - tab: string; - /** - * Optional secondary level to be displayed under top level tab - */ - subTab?: string; -} - -export interface FlyoutPanelProps { - /** - * Unique key to identify the panel - */ - id: string; - /** - * Any parameters necessary for the initial requests within the flyout - */ - params?: Record; - /** - * Tracks the path for what to show in a panel, such as activated tab and subtab - */ - path?: PanelPath; - /** - * Tracks visual state such as whether the panel is collapsed - */ - state?: Record; -} - -export interface Panel { - /** - * Unique key used to identify the panel - */ - key?: string; - /** - * Component to be rendered - */ - component: (props: FlyoutPanelProps) => React.ReactElement; -} diff --git a/packages/kbn-expandable-flyout/tsconfig.json b/packages/kbn-expandable-flyout/tsconfig.json deleted file mode 100644 index 5a0cf87cf61e2..0000000000000 --- a/packages/kbn-expandable-flyout/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/kibana-utils-plugin", - "@kbn/i18n-react" - ] -} diff --git a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/__fixtures__/ftr_report.xml b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/__fixtures__/ftr_report.xml index 07f1e79b0f5df..77c0d7691d22d 100644 --- a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/__fixtures__/ftr_report.xml +++ b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/__fixtures__/ftr_report.xml @@ -1,7 +1,7 @@ - + - + - + - + { ‹?xml version="1.0" encoding="utf-8"?› ‹testsuites name="ftr" timestamp="2019-06-05T23:37:10" time="903.670" tests="129" failures="5" skipped="71" command-line="node scripts/functional_tests --config=x-pack/test/api_integration/apis/status/config.ts"› ‹testsuite timestamp="2019-06-05T23:37:10" time="903.670" tests="129" failures="5" skipped="71" command-line="node scripts/functional_tests --config=x-pack/test/api_integration/apis/status/config.ts"› - ‹testcase name="maps app maps loaded from sample data ecommerce "before all" hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps/sample_data·js" time="154.378"› + ‹testcase name="maps app maps loaded from sample data ecommerce "before all" hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps/sample_data·js" time="154.378" owners="elastic/kibana-presentation"› - ‹system-out› - ‹![CDATA[[00:00:00] │ + ‹system-out›Failed Tests Reporter: @@ -88,7 +88,7 @@ it('rewrites ftr reports with minimal changes', async () => { + at onFailure (/var/lib/jenkins/workspace/elastic+kibana+master/JOB/x-pack-ciGroup7/node/immutable/kibana/test/common/services/retry/retry_for_success.ts:68:13) ‹/failure› ‹/testcase› - ‹testcase name="maps app "after all" hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps" time="0.179" metadata-json="{"messages":["foo"],"screenshots":[{"name":"failure[dashboard app using current data dashboard snapshots compare TSVB snapshot]","url":"https://storage.googleapis.com/kibana-ci-artifacts/jobs/elastic+kibana+7.x/1632/kibana-oss-tests/test/functional/screenshots/failure/dashboard%20app%20using%20current%20data%20dashboard%20snapshots%20compare%20TSVB%20snapshot.png"}]}"› + ‹testcase name="maps app "after all" hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps" time="0.179" metadata-json="{"messages":["foo"],"screenshots":[{"name":"failure[dashboard app using current data dashboard snapshots compare TSVB snapshot]","url":"https://storage.googleapis.com/kibana-ci-artifacts/jobs/elastic+kibana+7.x/1632/kibana-oss-tests/test/functional/screenshots/failure/dashboard%20app%20using%20current%20data%20dashboard%20snapshots%20compare%20TSVB%20snapshot.png"}]}" owners="elastic/kibana-presentation"› ‹system-out› - ‹![CDATA[[00:00:00] │ + [00:00:00] │ @@ -106,7 +106,7 @@ it('rewrites ftr reports with minimal changes', async () => { + at process._tickCallback (internal/process/next_tick.js:68:7) name: 'NoSuchSessionError', remoteStacktrace: '' } ‹/failure› ‹/testcase› - ‹testcase name="InfraOps app feature controls infrastructure security global infrastructure all privileges shows infrastructure navlink" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/infra/feature_controls/infrastructure_security·ts"› + ‹testcase name="InfraOps app feature controls infrastructure security global infrastructure all privileges shows infrastructure navlink" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/infra/feature_controls/infrastructure_security·ts" owners="elastic/kibana-presentation"› ‹system-out› - ‹![CDATA[[00:00:00] │ + [00:00:00] │ @@ -117,7 +117,7 @@ it('rewrites ftr reports with minimal changes', async () => { ‹/system-out› ‹skipped/› ‹/testcase› - ‹testcase name="machine learning anomaly detection saved search with lucene query job creation opens the advanced section" classname="Firefox XPack UI Functional Tests.x-pack/test/functional/apps/machine_learning/anomaly_detection/saved_search_job·ts" time="6.040"› + ‹testcase name="machine learning anomaly detection saved search with lucene query job creation opens the advanced section" classname="Firefox XPack UI Functional Tests.x-pack/test/functional/apps/machine_learning/anomaly_detection/saved_search_job·ts" time="6.040" owners="elastic/ml-ui"› - ‹system-out›‹![CDATA[[00:21:57] └-: machine learning...]]›‹/system-out› - ‹failure›‹![CDATA[{ NoSuchSessionError: Tried to run command without establishing a connection + ‹system-out›[00:21:57] └-: machine learning...‹/system-out› diff --git a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/get_failures.test.ts b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/get_failures.test.ts index b00ef8cb6bc49..52d2858232d52 100644 --- a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/get_failures.test.ts +++ b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/get_failures.test.ts @@ -28,6 +28,7 @@ it('discovers failures in ftr report', async () => { ", "likelyIrrelevant": false, "name": "maps app maps loaded from sample data ecommerce \\"before all\\" hook", + "owners": "elastic/kibana-presentation", "system-out": " [00:00:00] │ [00:07:04] └-: maps app @@ -49,6 +50,7 @@ it('discovers failures in ftr report', async () => { "likelyIrrelevant": true, "metadata-json": "{\\"messages\\":[\\"foo\\"],\\"screenshots\\":[{\\"name\\":\\"failure[dashboard app using current data dashboard snapshots compare TSVB snapshot]\\",\\"url\\":\\"https://storage.googleapis.com/kibana-ci-artifacts/jobs/elastic+kibana+7.x/1632/kibana-oss-tests/test/functional/screenshots/failure/dashboard%20app%20using%20current%20data%20dashboard%20snapshots%20compare%20TSVB%20snapshot.png\\"}]}", "name": "maps app \\"after all\\" hook", + "owners": "elastic/kibana-presentation", "system-out": " [00:00:00] │ [00:07:04] └-: maps app @@ -67,6 +69,7 @@ it('discovers failures in ftr report', async () => { at process._tickCallback (internal/process/next_tick.js:68:7) name: 'NoSuchSessionError', remoteStacktrace: '' }", "likelyIrrelevant": true, "name": "machine learning anomaly detection saved search with lucene query job creation opens the advanced section", + "owners": "elastic/ml-ui", "system-out": "[00:21:57] └-: machine learning...", "time": "6.040", }, @@ -87,6 +90,7 @@ it('discovers failures in jest report', async () => { ", "likelyIrrelevant": false, "name": "launcher can reconnect if process died", + "owners": undefined, "system-out": "", "time": "7.060", }, @@ -116,6 +120,7 @@ it('discovers failures in mocha report', async () => { ", "likelyIrrelevant": true, "name": "code in multiple nodes \\"before all\\" hook", + "owners": undefined, "system-out": " ", @@ -131,6 +136,7 @@ it('discovers failures in mocha report', async () => { ", "likelyIrrelevant": true, "name": "code in multiple nodes \\"after all\\" hook", + "owners": undefined, "system-out": " ", diff --git a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/get_failures.ts b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/get_failures.ts index dd5e846dfc01e..d65773810ddf4 100644 --- a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/get_failures.ts +++ b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/get_failures.ts @@ -18,6 +18,7 @@ export type TestFailure = FailedTestCase['$'] & { githubIssue?: string; failureCount?: number; commandLine?: string; + owners?: any; }; const getText = (node?: Array) => { @@ -78,6 +79,7 @@ export function getFailures(report: TestReport) { for (const testCase of makeFailedTestCaseIter(report)) { const failure = getText(testCase.failure); const likelyIrrelevant = isLikelyIrrelevant(testCase.$.name, failure); + const owners = testCase.$.owners; const failureObj = { // unwrap xml weirdness @@ -87,6 +89,7 @@ export function getFailures(report: TestReport) { likelyIrrelevant, 'system-out': getText(testCase['system-out']), commandLine, + owners, }; // cleaning up duplicates diff --git a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/report_failures_to_file.ts b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/report_failures_to_file.ts index b1e3997ebf030..049aff3dcdef1 100644 --- a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/report_failures_to_file.ts +++ b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/report_failures_to_file.ts @@ -179,6 +179,12 @@ export async function reportFailuresToFile(
` : '' } +
+ Owners: +
${escape(
+                  failure?.owners ? (failure?.owners as string) : 'Unable to determine code owners'
+                )}
+
Failures in tracked branches: ${failure.failureCount || 0} diff --git a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/test_report.ts b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/test_report.ts index e56e4a6810efd..6467cfaab14be 100644 --- a/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/test_report.ts +++ b/packages/kbn-failed-test-reporter-cli/failed_tests_reporter/test_report.ts @@ -11,7 +11,6 @@ import Fs from 'fs'; import { promisify } from 'util'; import xml2js from 'xml2js'; - const readAsync = promisify(Fs.readFile); export type TestReport = @@ -40,6 +39,8 @@ export interface TestSuite { 'metadata-json'?: string; /* the command that ran this suite */ 'command-line'?: string; + /* the codeowners of the file */ + owners?: string; }; testcase?: TestCase[]; } @@ -56,6 +57,8 @@ export interface TestCase { 'metadata-json'?: string; /* the command that ran this suite */ 'command-line'?: string; + /* the codeowners of the file */ + owners?: string; }; /* contents of system-out elements */ 'system-out'?: Array; diff --git a/packages/kbn-ftr-common-functional-ui-services/index.ts b/packages/kbn-ftr-common-functional-ui-services/index.ts index 1355d112ffaf8..c316ecf7db60e 100644 --- a/packages/kbn-ftr-common-functional-ui-services/index.ts +++ b/packages/kbn-ftr-common-functional-ui-services/index.ts @@ -15,7 +15,7 @@ export type { CustomCheerioStatic, } from './services/web_element_wrapper/custom_cheerio_api'; export { Browsers } from './services/remote/browsers'; -export { type Browser } from './services/browser'; +export { type Browser, type InterceptResponseFactory } from './services/browser'; export { NETWORK_PROFILES, type NetworkOptions, diff --git a/packages/kbn-ftr-common-functional-ui-services/services/browser.ts b/packages/kbn-ftr-common-functional-ui-services/services/browser.ts index 56888b0a8087c..7a3885d7e3f9a 100644 --- a/packages/kbn-ftr-common-functional-ui-services/services/browser.ts +++ b/packages/kbn-ftr-common-functional-ui-services/services/browser.ts @@ -13,6 +13,7 @@ import { Key, Origin, type WebDriver } from 'selenium-webdriver'; import { Driver as ChromiumWebDriver } from 'selenium-webdriver/chrome'; import { setTimeout as setTimeoutAsync } from 'timers/promises'; import Url from 'url'; +import { Protocol } from 'devtools-protocol'; import { NoSuchSessionError } from 'selenium-webdriver/lib/error'; import sharp from 'sharp'; @@ -26,7 +27,12 @@ import { import { FtrService, type FtrProviderContext } from './ftr_provider_context'; export type Browser = BrowserService; - +export interface InterceptResponseFactory { + fail: () => ['Fetch.failRequest', Protocol.Fetch.FailRequestRequest]; + fulfill: ( + responseOptions: Omit + ) => ['Fetch.fulfillRequest', Protocol.Fetch.FulfillRequestRequest]; +} class BrowserService extends FtrService { /** * Keyboard events @@ -837,6 +843,59 @@ class BrowserService extends FtrService { throw new Error(message); } } + + /** + * Intercept network requests using the Chrome DevTools Protocol (CDP). + * @param pattern - URL pattern to match intercepted requests. + * @param onIntercept - Callback defining how to handle intercepted requests. + * @param cb - Callback to trigger actions that make requests. + */ + + public async interceptRequest( + pattern: string, + onIntercept: (responseFactory: InterceptResponseFactory) => [string, Record], + cb: () => Promise + ): Promise { + const connection = await this.driver.createCDPConnection('page'); + + return new Promise((resolve, reject) => { + connection._wsConnection.on('message', async (data: Buffer) => { + try { + const parsed = JSON.parse(data.toString()); + this.log.debug(`CDP Event: ${parsed.method} ${parsed.params?.request?.url}`); + + if (parsed.method === 'Fetch.requestPaused') { + const requestId = parsed.params.requestId; + + const [method, params] = onIntercept({ + fail: () => ['Fetch.failRequest', { requestId, errorReason: 'Failed' }], + fulfill: (responseOptions) => [ + 'Fetch.fulfillRequest', + { requestId, ...responseOptions }, + ], + }); + + connection.execute(method, params, () => { + this.log.debug(`Executed command: ${method}`); + }); + } + } catch (error) { + this.log.error(`Error in Fetch.requestPaused handler: ${error.message}`); + } + }); + + connection.execute('Fetch.enable', { patterns: [{ urlPattern: pattern }] }, (result: any) => { + this.log.debug('Fetch.enable result:', result); + + cb() + .then(resolve) + .catch((error) => { + this.log.error(`Error in callback: ${error.message}`); + reject(error); + }); + }); + }); + } } export async function BrowserProvider(ctx: FtrProviderContext) { diff --git a/packages/kbn-generate-console-definitions/README.md b/packages/kbn-generate-console-definitions/README.md index a8b7e451612f5..1c5ed9c24ffa7 100644 --- a/packages/kbn-generate-console-definitions/README.md +++ b/packages/kbn-generate-console-definitions/README.md @@ -5,10 +5,10 @@ The definitions files are generated from the Elasticsearch specification [repo]( ## Instructions 1. Checkout the Elasticsearch specification [repo](https://github.com/elastic/elasticsearch-specification). 2. Run the command `node scripts/generate_console_definitions.js --source --emptyDest` - This command will use the folder `` as the source and the constant [`AUTOCOMPLETE_DEFINITIONS_FOLDER`](https://github.com/elastic/kibana/blob/main/src/plugins/console/common/constants/autocomplete_definitions.ts) as the destination. Based on the value of the constant, the autocomplete definitions will be generated in the folder `/src/plugins/server/lib/spec_definitions/json/generated`. The flag `--emptyDest` indicates that all existing files in the destination folder will be removed. -3. It's possible to generate the definitions into a different folder. For that pass an option to the command `--dest ` and also update the constant [`AUTOCOMPLETE_DEFINITIONS_FOLDER`](https://github.com/elastic/kibana/blob/main/src/plugins/console/common/constants/autocomplete_definitions.ts) so that the Console server will load the definitions from this folder. + This command will use the folder `` as the source and the constant [`AUTOCOMPLETE_DEFINITIONS_FOLDER`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/common/constants/autocomplete_definitions.ts) as the destination. Based on the value of the constant, the autocomplete definitions will be generated in the folder `/src/plugins/server/lib/spec_definitions/json/generated`. The flag `--emptyDest` indicates that all existing files in the destination folder will be removed. +3. It's possible to generate the definitions into a different folder. For that pass an option to the command `--dest ` and also update the constant [`AUTOCOMPLETE_DEFINITIONS_FOLDER`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/common/constants/autocomplete_definitions.ts) so that the Console server will load the definitions from this folder. ## Functionality This script generates definitions for all endpoints defined in the ES specification at once. -The script generates fully functional autocomplete definition files with properties as described in the [Console README.md file](https://github.com/elastic/kibana/blob/main/src/plugins/console/README.md) except `data_autocomplete_rules`. Currently, this property needs to be written manually to add autocomplete suggestions for request body parameters. +The script generates fully functional autocomplete definition files with properties as described in the [Console README.md file](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/README.md) except `data_autocomplete_rules`. Currently, this property needs to be written manually to add autocomplete suggestions for request body parameters. diff --git a/packages/kbn-generate-csv/src/lib/search_cursor_pit.test.ts b/packages/kbn-generate-csv/src/lib/search_cursor_pit.test.ts index 4852cfb9d32c1..ab5e294397a6e 100644 --- a/packages/kbn-generate-csv/src/lib/search_cursor_pit.test.ts +++ b/packages/kbn-generate-csv/src/lib/search_cursor_pit.test.ts @@ -17,6 +17,7 @@ import { createSearchSourceMock } from '@kbn/data-plugin/common/search/search_so import { createSearchRequestHandlerContext } from '@kbn/data-plugin/server/search/mocks'; import type { SearchCursorSettings } from './search_cursor'; import { SearchCursorPit } from './search_cursor_pit'; +import { OpenPointInTimeResponse } from '@elastic/elasticsearch/lib/api/types'; class TestSearchCursorPit extends SearchCursorPit { constructor(...args: ConstructorParameters) { @@ -69,7 +70,7 @@ describe('CSV Export Search Cursor', () => { openPointInTimeSpy = jest .spyOn(es.asCurrentUser, 'openPointInTime') - .mockResolvedValue({ id: 'somewhat-pit-id' }); + .mockResolvedValue({ id: 'somewhat-pit-id' } as OpenPointInTimeResponse); logger = loggingSystemMock.createLogger(); }); diff --git a/packages/kbn-generate-csv/src/lib/search_cursor_scroll.test.ts b/packages/kbn-generate-csv/src/lib/search_cursor_scroll.test.ts index 5d6cd6f67a4d6..cdccbca468a76 100644 --- a/packages/kbn-generate-csv/src/lib/search_cursor_scroll.test.ts +++ b/packages/kbn-generate-csv/src/lib/search_cursor_scroll.test.ts @@ -16,6 +16,7 @@ import { createSearchSourceMock } from '@kbn/data-plugin/common/search/search_so import { createSearchRequestHandlerContext } from '@kbn/data-plugin/server/search/mocks'; import type { SearchCursorSettings } from './search_cursor'; import { SearchCursorScroll } from './search_cursor_scroll'; +import type { OpenPointInTimeResponse } from '@elastic/elasticsearch/lib/api/types'; class TestSearchCursorScroll extends SearchCursorScroll { constructor(...args: ConstructorParameters) { @@ -47,7 +48,9 @@ describe('CSV Export Search Cursor', () => { es = elasticsearchServiceMock.createScopedClusterClient(); data = createSearchRequestHandlerContext(); - jest.spyOn(es.asCurrentUser, 'openPointInTime').mockResolvedValue({ id: 'simply-scroll-id' }); + jest + .spyOn(es.asCurrentUser, 'openPointInTime') + .mockResolvedValue({ id: 'simply-scroll-id' } as OpenPointInTimeResponse); logger = loggingSystemMock.createLogger(); }); diff --git a/packages/kbn-health-gateway-server/src/server/server_config.test.ts b/packages/kbn-health-gateway-server/src/server/server_config.test.ts index 0ef93e6daa3cb..fd04fcc09e6f6 100644 --- a/packages/kbn-health-gateway-server/src/server/server_config.test.ts +++ b/packages/kbn-health-gateway-server/src/server/server_config.test.ts @@ -56,7 +56,6 @@ describe('server config', () => { "enabled": false, "keystore": Object {}, "supportedProtocols": Array [ - "TLSv1.1", "TLSv1.2", "TLSv1.3", ], diff --git a/packages/kbn-index-adapter/index.ts b/packages/kbn-index-adapter/index.ts deleted file mode 100644 index 6956792135282..0000000000000 --- a/packages/kbn-index-adapter/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { IndexAdapter } from './src/index_adapter'; -export { IndexPatternAdapter, type InstallIndex } from './src/index_pattern_adapter'; -export { retryTransientEsErrors } from './src/retry_transient_es_errors'; -export { ecsFieldMap, type EcsFieldMap } from './src/field_maps/ecs_field_map'; -export { createOrUpdateIndexTemplate } from './src/create_or_update_index_template'; -export { createOrUpdateComponentTemplate } from './src/create_or_update_component_template'; - -export type { - SetComponentTemplateParams, - SetIndexTemplateParams, - IndexAdapterParams, - InstallParams, -} from './src/index_adapter'; -export * from './src/field_maps/types'; diff --git a/packages/kbn-index-adapter/jest.config.js b/packages/kbn-index-adapter/jest.config.js deleted file mode 100644 index bf08ec1526382..0000000000000 --- a/packages/kbn-index-adapter/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-index-adapter'], -}; diff --git a/packages/kbn-index-adapter/package.json b/packages/kbn-index-adapter/package.json deleted file mode 100644 index 70b79abe1b571..0000000000000 --- a/packages/kbn-index-adapter/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "@kbn/index-adapter", - "version": "1.0.0", - "description": "Utility library for Elasticsearch index management", - "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", - "private": true -} \ No newline at end of file diff --git a/packages/kbn-index-adapter/src/field_maps/types.ts b/packages/kbn-index-adapter/src/field_maps/types.ts deleted file mode 100644 index 90fb44873a342..0000000000000 --- a/packages/kbn-index-adapter/src/field_maps/types.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export interface AllowedValue { - description?: string; - name?: string; -} - -export interface MultiField { - flat_name: string; - name: string; - type: string; -} - -export interface EcsMetadata { - allowed_values?: AllowedValue[]; - dashed_name: string; - description: string; - doc_values?: boolean; - example?: string | number | boolean; - flat_name: string; - ignore_above?: number; - index?: boolean; - level: string; - multi_fields?: MultiField[]; - name: string; - normalize: string[]; - required?: boolean; - scaling_factor?: number; - short: string; - type: string; - properties?: Record; -} - -export type FieldMap = Record< - T, - { - type: string; - required: boolean; - array?: boolean; - doc_values?: boolean; - enabled?: boolean; - fields?: Record; - format?: string; - ignore_above?: number; - multi_fields?: MultiField[]; - index?: boolean; - path?: string; - scaling_factor?: number; - dynamic?: boolean | 'strict'; - properties?: Record; - inference_id?: string; - copy_to?: string; - } ->; - -// This utility type flattens all the keys of a schema object and its nested objects as a union type. -// Its purpose is to ensure that the FieldMap keys are always in sync with the schema object. -// It assumes all optional fields of the schema are required in the field map, they can always be omitted from the resulting type. -export type SchemaFieldMapKeys< - T extends Record, - Key = keyof T -> = Key extends string - ? NonNullable extends Record - ? `${Key}` | `${Key}.${SchemaFieldMapKeys>}` - : `${Key}` - : never; diff --git a/packages/kbn-index-adapter/tsconfig.json b/packages/kbn-index-adapter/tsconfig.json deleted file mode 100644 index cca50adbf7eb8..0000000000000 --- a/packages/kbn-index-adapter/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - ] - }, - "include": ["**/*.ts"], - "kbn_references": [ - "@kbn/core", - "@kbn/std", - "@kbn/safer-lodash-set", - "@kbn/logging-mocks", - ], - "exclude": [ - "target/**/*" - ], -} diff --git a/packages/kbn-investigation-shared/jest.config.js b/packages/kbn-investigation-shared/jest.config.js deleted file mode 100644 index 54ed81a5d343b..0000000000000 --- a/packages/kbn-investigation-shared/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../..', - roots: ['/packages/kbn-investigation-shared'], -}; diff --git a/packages/kbn-investigation-shared/package.json b/packages/kbn-investigation-shared/package.json deleted file mode 100644 index 7687defb4dc5a..0000000000000 --- a/packages/kbn-investigation-shared/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@kbn/investigation-shared", - "private": true, - "version": "1.0.0", - "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0" -} diff --git a/packages/kbn-investigation-shared/src/index.ts b/packages/kbn-investigation-shared/src/index.ts deleted file mode 100644 index 8ab81653a18dd..0000000000000 --- a/packages/kbn-investigation-shared/src/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './rest_specs'; -export * from './schema'; diff --git a/packages/kbn-investigation-shared/src/rest_specs/create.ts b/packages/kbn-investigation-shared/src/rest_specs/create.ts deleted file mode 100644 index 8a8e4d62a37ee..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/create.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationResponseSchema } from './investigation'; -import { alertOriginSchema, blankOriginSchema } from '../schema'; - -const createInvestigationParamsSchema = z.object({ - body: z.object({ - id: z.string(), - title: z.string(), - params: z.object({ - timeRange: z.object({ from: z.number(), to: z.number() }), - }), - origin: z.union([alertOriginSchema, blankOriginSchema]), - tags: z.array(z.string()), - externalIncidentUrl: z.string().nullable(), - }), -}); - -const createInvestigationResponseSchema = investigationResponseSchema; - -type CreateInvestigationParams = z.infer; -type CreateInvestigationResponse = z.output; - -export { createInvestigationParamsSchema, createInvestigationResponseSchema }; -export type { CreateInvestigationParams, CreateInvestigationResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/create_item.ts b/packages/kbn-investigation-shared/src/rest_specs/create_item.ts deleted file mode 100644 index 2e9551fcaa36b..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/create_item.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { itemSchema } from '../schema'; -import { investigationItemResponseSchema } from './investigation_item'; - -const createInvestigationItemParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), - body: itemSchema, -}); - -const createInvestigationItemResponseSchema = investigationItemResponseSchema; - -type CreateInvestigationItemParams = z.infer; -type CreateInvestigationItemResponse = z.output; - -export { createInvestigationItemParamsSchema, createInvestigationItemResponseSchema }; -export type { CreateInvestigationItemParams, CreateInvestigationItemResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/create_note.ts b/packages/kbn-investigation-shared/src/rest_specs/create_note.ts deleted file mode 100644 index bf4c4f62456e2..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/create_note.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationNoteResponseSchema } from './investigation_note'; - -const createInvestigationNoteParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), - body: z.object({ - content: z.string(), - }), -}); - -const createInvestigationNoteResponseSchema = investigationNoteResponseSchema; - -type CreateInvestigationNoteParams = z.infer; -type CreateInvestigationNoteResponse = z.output; - -export { createInvestigationNoteParamsSchema, createInvestigationNoteResponseSchema }; -export type { CreateInvestigationNoteParams, CreateInvestigationNoteResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/delete.ts b/packages/kbn-investigation-shared/src/rest_specs/delete.ts deleted file mode 100644 index 32e9b1f26bf66..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/delete.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -const deleteInvestigationParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), -}); - -type DeleteInvestigationParams = z.infer; - -export { deleteInvestigationParamsSchema }; -export type { DeleteInvestigationParams }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts b/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts deleted file mode 100644 index 712a74e299368..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const deleteInvestigationItemParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - itemId: z.string(), - }), -}); - -type DeleteInvestigationItemParams = z.infer; - -export { deleteInvestigationItemParamsSchema }; -export type { DeleteInvestigationItemParams }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts b/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts deleted file mode 100644 index c3789ea13a359..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const deleteInvestigationNoteParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - noteId: z.string(), - }), -}); - -type DeleteInvestigationNoteParams = z.infer; - -export { deleteInvestigationNoteParamsSchema }; -export type { DeleteInvestigationNoteParams }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/entity.ts b/packages/kbn-investigation-shared/src/rest_specs/entity.ts deleted file mode 100644 index 8e571f3e2a4d4..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/entity.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const metricsSchema = z.object({ - failedTransactionRate: z.number().optional(), - latency: z.number().optional(), - throughput: z.number().optional(), - logErrorRate: z.number().optional(), - logRate: z.number().optional(), -}); - -const entitySchema = z.object({ - id: z.string(), - definition_id: z.string(), - definition_version: z.string(), - display_name: z.string(), - last_seen_timestamp: z.string(), - identity_fields: z.array(z.string()), - schema_version: z.string(), - type: z.string(), - metrics: metricsSchema, -}); - -const entitySourceSchema = z.object({ - dataStream: z.string().optional(), -}); - -const entityWithSourceSchema = z.intersection( - entitySchema, - z.object({ - sources: z.array(entitySourceSchema), - }) -); - -type EntityWithSource = z.output; -type EntitySource = z.output; - -export { entitySchema, entityWithSourceSchema }; -export type { EntityWithSource, EntitySource }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/event.ts b/packages/kbn-investigation-shared/src/rest_specs/event.ts deleted file mode 100644 index e63083f75c824..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/event.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { eventSchema } from '../schema'; - -const eventResponseSchema = eventSchema; - -type EventResponse = z.output; -type EventSchema = z.output; - -export { eventResponseSchema }; -export type { EventResponse, EventSchema }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/find.ts b/packages/kbn-investigation-shared/src/rest_specs/find.ts deleted file mode 100644 index 7a938212cfba4..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/find.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationResponseSchema } from './investigation'; - -const findInvestigationsParamsSchema = z - .object({ - query: z - .object({ - alertId: z.string(), - search: z.string(), - filter: z.string(), - page: z.coerce.number(), - perPage: z.coerce.number(), - }) - .partial(), - }) - .partial(); - -const findInvestigationsResponseSchema = z.object({ - page: z.number(), - perPage: z.number(), - total: z.number(), - results: z.array(investigationResponseSchema), -}); - -type FindInvestigationsParams = z.infer; -type FindInvestigationsResponse = z.output; - -export { findInvestigationsParamsSchema, findInvestigationsResponseSchema }; -export type { FindInvestigationsParams, FindInvestigationsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get.ts b/packages/kbn-investigation-shared/src/rest_specs/get.ts deleted file mode 100644 index d9104959c1d7b..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationResponseSchema } from './investigation'; - -const getInvestigationParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), -}); - -const getInvestigationResponseSchema = investigationResponseSchema; - -type GetInvestigationParams = z.infer; // Parsed payload used by the backend -type GetInvestigationResponse = z.output; // Raw response sent to the frontend - -export { getInvestigationParamsSchema, getInvestigationResponseSchema }; -export type { GetInvestigationParams, GetInvestigationResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts b/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts deleted file mode 100644 index bee9f15db587d..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { statusSchema } from '../schema'; - -const getAllInvestigationStatsParamsSchema = z.object({ - query: z.object({}), -}); - -const getAllInvestigationStatsResponseSchema = z.object({ - count: z.record(statusSchema, z.number()), - total: z.number(), -}); - -type GetAllInvestigationStatsResponse = z.output; - -export { getAllInvestigationStatsParamsSchema, getAllInvestigationStatsResponseSchema }; -export type { GetAllInvestigationStatsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts b/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts deleted file mode 100644 index 35665b1b3c695..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const getAllInvestigationTagsParamsSchema = z.object({ - query: z.object({}), -}); - -const getAllInvestigationTagsResponseSchema = z.string().array(); - -type GetAllInvestigationTagsResponse = z.output; - -export { getAllInvestigationTagsParamsSchema, getAllInvestigationTagsResponseSchema }; -export type { GetAllInvestigationTagsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts b/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts deleted file mode 100644 index 383bc21b58085..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { entityWithSourceSchema } from './entity'; - -const getEntitiesParamsSchema = z - .object({ - query: z - .object({ - 'service.name': z.string(), - 'service.environment': z.string(), - 'host.name': z.string(), - 'container.id': z.string(), - }) - .partial(), - }) - .partial(); - -const getEntitiesResponseSchema = z.object({ - entities: z.array(entityWithSourceSchema), -}); - -type GetEntitiesParams = z.infer; -type GetEntitiesResponse = z.output; - -export { getEntitiesParamsSchema, getEntitiesResponseSchema }; -export type { GetEntitiesParams, GetEntitiesResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_events.ts b/packages/kbn-investigation-shared/src/rest_specs/get_events.ts deleted file mode 100644 index 064a75fab1562..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_events.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { eventResponseSchema } from './event'; - -const getEventsParamsSchema = z - .object({ - query: z - .object({ - rangeFrom: z.string(), - rangeTo: z.string(), - filter: z.string(), - }) - .partial(), - }) - .partial(); - -const getEventsResponseSchema = z.array(eventResponseSchema); - -type GetEventsParams = z.infer; -type GetEventsResponse = z.output; - -export { getEventsParamsSchema, getEventsResponseSchema }; -export type { GetEventsParams, GetEventsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_items.ts b/packages/kbn-investigation-shared/src/rest_specs/get_items.ts deleted file mode 100644 index eb6ddac42a7ae..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_items.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationItemResponseSchema } from './investigation_item'; - -const getInvestigationItemsParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), -}); - -const getInvestigationItemsResponseSchema = z.array(investigationItemResponseSchema); - -type GetInvestigationItemsResponse = z.output; - -export { getInvestigationItemsParamsSchema, getInvestigationItemsResponseSchema }; -export type { GetInvestigationItemsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts b/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts deleted file mode 100644 index 0a86f19a31d1a..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationNoteResponseSchema } from './investigation_note'; - -const getInvestigationNotesParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), -}); - -const getInvestigationNotesResponseSchema = z.array(investigationNoteResponseSchema); - -type GetInvestigationNotesResponse = z.output; - -export { getInvestigationNotesParamsSchema, getInvestigationNotesResponseSchema }; -export type { GetInvestigationNotesResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/index.ts b/packages/kbn-investigation-shared/src/rest_specs/index.ts deleted file mode 100644 index d0070c8b8959d..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/index.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export type * from './create'; -export type * from './create_item'; -export type * from './create_note'; -export type * from './delete'; -export type * from './delete_item'; -export type * from './delete_note'; -export type * from './find'; -export type * from './get'; -export type * from './get_items'; -export type * from './get_notes'; -export type * from './get_all_investigation_stats'; -export type * from './get_all_investigation_tags'; -export type * from './investigation'; -export type * from './investigation_item'; -export type * from './investigation_note'; -export type * from './update'; -export type * from './update_item'; -export type * from './update_note'; -export type * from './event'; -export type * from './get_events'; -export type * from './entity'; -export type * from './get_entities'; - -export * from './create'; -export * from './create_item'; -export * from './create_note'; -export * from './delete'; -export * from './delete_item'; -export * from './delete_note'; -export * from './find'; -export * from './get'; -export * from './get_items'; -export * from './get_notes'; -export * from './get_all_investigation_stats'; -export * from './get_all_investigation_tags'; -export * from './investigation'; -export * from './investigation_item'; -export * from './investigation_note'; -export * from './update'; -export * from './update_item'; -export * from './update_note'; -export * from './event'; -export * from './get_events'; -export * from './entity'; -export * from './get_entities'; diff --git a/packages/kbn-investigation-shared/src/rest_specs/investigation.ts b/packages/kbn-investigation-shared/src/rest_specs/investigation.ts deleted file mode 100644 index c02e90cd70d25..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/investigation.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationSchema } from '../schema'; - -const investigationResponseSchema = investigationSchema; - -type InvestigationResponse = z.output; - -export { investigationResponseSchema }; -export type { InvestigationResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts b/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts deleted file mode 100644 index e7faa1d7a2834..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationItemSchema } from '../schema'; - -const investigationItemResponseSchema = investigationItemSchema; - -type InvestigationItemResponse = z.output; - -export { investigationItemResponseSchema }; -export type { InvestigationItemResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts b/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts deleted file mode 100644 index 73114fe844d52..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationNoteSchema } from '../schema'; - -const investigationNoteResponseSchema = investigationNoteSchema; - -type InvestigationNoteResponse = z.output; - -export { investigationNoteResponseSchema }; -export type { InvestigationNoteResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/update.ts b/packages/kbn-investigation-shared/src/rest_specs/update.ts deleted file mode 100644 index cab773d9549a2..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/update.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationResponseSchema } from './investigation'; -import { statusSchema } from '../schema'; - -const updateInvestigationParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), - body: z - .object({ - title: z.string(), - status: statusSchema, - params: z.object({ - timeRange: z.object({ from: z.number(), to: z.number() }), - }), - tags: z.array(z.string()), - externalIncidentUrl: z.string().nullable(), - }) - .partial(), -}); - -const updateInvestigationResponseSchema = investigationResponseSchema; - -type UpdateInvestigationParams = z.infer; -type UpdateInvestigationResponse = z.output; - -export { updateInvestigationParamsSchema, updateInvestigationResponseSchema }; -export type { UpdateInvestigationParams, UpdateInvestigationResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/update_item.ts b/packages/kbn-investigation-shared/src/rest_specs/update_item.ts deleted file mode 100644 index 8e96785c452b9..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/update_item.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationItemResponseSchema } from './investigation_item'; -import { itemSchema } from '../schema'; - -const updateInvestigationItemParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - itemId: z.string(), - }), - body: itemSchema, -}); - -const updateInvestigationItemResponseSchema = investigationItemResponseSchema; - -type UpdateInvestigationItemParams = z.infer; -type UpdateInvestigationItemResponse = z.output; - -export { updateInvestigationItemParamsSchema, updateInvestigationItemResponseSchema }; -export type { UpdateInvestigationItemParams, UpdateInvestigationItemResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/update_note.ts b/packages/kbn-investigation-shared/src/rest_specs/update_note.ts deleted file mode 100644 index 35862cbe19aea..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/update_note.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationNoteResponseSchema } from './investigation_note'; - -const updateInvestigationNoteParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - noteId: z.string(), - }), - body: z.object({ - content: z.string(), - }), -}); - -const updateInvestigationNoteResponseSchema = investigationNoteResponseSchema; - -type UpdateInvestigationNoteParams = z.infer; -type UpdateInvestigationNoteResponse = z.output; - -export { updateInvestigationNoteParamsSchema, updateInvestigationNoteResponseSchema }; -export type { UpdateInvestigationNoteParams, UpdateInvestigationNoteResponse }; diff --git a/packages/kbn-investigation-shared/src/schema/event.ts b/packages/kbn-investigation-shared/src/schema/event.ts deleted file mode 100644 index c954a0de13fb3..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/event.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const eventTypeSchema = z.union([ - z.literal('annotation'), - z.literal('alert'), - z.literal('error_rate'), - z.literal('latency'), - z.literal('anomaly'), -]); - -const annotationEventSchema = z.object({ - eventType: z.literal('annotation'), - annotationType: z.string().optional(), -}); - -const alertStatusSchema = z.union([ - z.literal('active'), - z.literal('flapping'), - z.literal('recovered'), - z.literal('untracked'), -]); - -const alertEventSchema = z.object({ - eventType: z.literal('alert'), - alertStatus: alertStatusSchema, -}); - -const sourceSchema = z.record(z.string(), z.any()); - -const eventSchema = z.intersection( - z.object({ - id: z.string(), - title: z.string(), - description: z.string(), - timestamp: z.number(), - eventType: eventTypeSchema, - source: sourceSchema.optional(), - }), - z.discriminatedUnion('eventType', [annotationEventSchema, alertEventSchema]) -); - -export { eventSchema }; diff --git a/packages/kbn-investigation-shared/src/schema/index.ts b/packages/kbn-investigation-shared/src/schema/index.ts deleted file mode 100644 index f65fe9baf1f6f..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './investigation'; -export * from './investigation_item'; -export * from './investigation_note'; -export * from './origin'; -export * from './event'; - -export type * from './investigation'; diff --git a/packages/kbn-investigation-shared/src/schema/investigation.ts b/packages/kbn-investigation-shared/src/schema/investigation.ts deleted file mode 100644 index 751f1a20048a5..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/investigation.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { alertOriginSchema, blankOriginSchema } from './origin'; -import { investigationNoteSchema } from './investigation_note'; -import { investigationItemSchema } from './investigation_item'; - -const statusSchema = z.union([ - z.literal('triage'), - z.literal('active'), - z.literal('mitigated'), - z.literal('resolved'), - z.literal('cancelled'), -]); - -const investigationSchema = z.object({ - id: z.string(), - title: z.string(), - createdAt: z.number(), - createdBy: z.string(), - updatedAt: z.number(), - params: z.object({ - timeRange: z.object({ from: z.number(), to: z.number() }), - }), - origin: z.union([alertOriginSchema, blankOriginSchema]), - status: statusSchema, - tags: z.array(z.string()), - notes: z.array(investigationNoteSchema), - items: z.array(investigationItemSchema), - externalIncidentUrl: z.string().nullable(), -}); - -type Status = z.infer; - -export type { Status }; -export { investigationSchema, statusSchema }; diff --git a/packages/kbn-investigation-shared/src/schema/investigation_item.ts b/packages/kbn-investigation-shared/src/schema/investigation_item.ts deleted file mode 100644 index 820db8500e5dc..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/investigation_item.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const itemSchema = z.object({ - title: z.string(), - type: z.string(), - params: z.record(z.string(), z.any()), -}); - -const investigationItemSchema = z.intersection( - z.object({ - id: z.string(), - createdAt: z.number(), - createdBy: z.string(), - updatedAt: z.number(), - }), - itemSchema -); - -type Item = z.infer; -type InvestigationItem = z.infer; - -export type { Item, InvestigationItem }; -export { investigationItemSchema, itemSchema }; diff --git a/packages/kbn-investigation-shared/src/schema/investigation_note.ts b/packages/kbn-investigation-shared/src/schema/investigation_note.ts deleted file mode 100644 index ff877ab884127..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/investigation_note.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const investigationNoteSchema = z.object({ - id: z.string(), - content: z.string(), - createdAt: z.number(), - updatedAt: z.number(), - createdBy: z.string(), -}); - -export { investigationNoteSchema }; diff --git a/packages/kbn-investigation-shared/src/schema/origin.ts b/packages/kbn-investigation-shared/src/schema/origin.ts deleted file mode 100644 index b0c790db0ad67..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/origin.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const blankOriginSchema = z.object({ type: z.literal('blank') }); -const alertOriginSchema = z.object({ type: z.literal('alert'), id: z.string() }); - -export { alertOriginSchema, blankOriginSchema }; diff --git a/packages/kbn-investigation-shared/tsconfig.json b/packages/kbn-investigation-shared/tsconfig.json deleted file mode 100644 index e8db47aba5c14..0000000000000 --- a/packages/kbn-investigation-shared/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/zod" - ] -} diff --git a/packages/kbn-io-ts-utils/BUILD.bazel b/packages/kbn-io-ts-utils/BUILD.bazel new file mode 100644 index 0000000000000..cad7e8e0b6226 --- /dev/null +++ b/packages/kbn-io-ts-utils/BUILD.bazel @@ -0,0 +1,28 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") + +SRCS = glob( + [ + "**/*.ts", + "**/*.js", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__/**", + "**/integration_tests/**", + "**/mocks/**", + "**/scripts/**", + "**/storybook/**", + "**/test_fixtures/**", + "**/test_helpers/**", + ], +) + +js_library( + name = "kbn-io-ts-utils", + package_name = "@kbn/io-ts-utils", + srcs = ["package.json"] + SRCS, + visibility = ["//visibility:public"], +) \ No newline at end of file diff --git a/packages/kbn-io-ts-utils/jest.config.js b/packages/kbn-io-ts-utils/jest.config.js deleted file mode 100644 index 21c3cf4f8e049..0000000000000 --- a/packages/kbn-io-ts-utils/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-io-ts-utils'], -}; diff --git a/packages/kbn-io-ts-utils/tsconfig.json b/packages/kbn-io-ts-utils/tsconfig.json deleted file mode 100644 index 0ac791e1542ae..0000000000000 --- a/packages/kbn-io-ts-utils/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/datemath" - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/packages/kbn-management/cards_navigation/jest.config.js b/packages/kbn-management/cards_navigation/jest.config.js deleted file mode 100644 index 6d918533dacec..0000000000000 --- a/packages/kbn-management/cards_navigation/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/kbn-management/cards_navigation'], -}; diff --git a/packages/kbn-management/cards_navigation/tsconfig.json b/packages/kbn-management/cards_navigation/tsconfig.json deleted file mode 100644 index d73041d8c35a9..0000000000000 --- a/packages/kbn-management/cards_navigation/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@kbn/ambient-ui-types" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - ] -} diff --git a/packages/kbn-management/settings/application/tsconfig.json b/packages/kbn-management/settings/application/tsconfig.json deleted file mode 100644 index 3ebad4ae3d214..0000000000000 --- a/packages/kbn-management/settings/application/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@testing-library/jest-dom" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core-ui-settings-browser", - "@kbn/management-settings-types", - "@kbn/management-settings-field-definition", - "@kbn/management-settings-utilities", - "@kbn/management-settings-components-form", - "@kbn/i18n", - "@kbn/test-jest-helpers", - "@kbn/core-application-browser", - "@kbn/i18n-react", - "@kbn/management-settings-components-field-category", - "@kbn/react-kibana-context-root", - "@kbn/core-theme-browser-mocks", - "@kbn/core-i18n-browser", - "@kbn/core-analytics-browser-mocks", - "@kbn/core-ui-settings-common", - "@kbn/management-settings-section-registry", - "@kbn/core-notifications-browser", - "@kbn/core-chrome-browser", - "@kbn/core-user-profile-browser-mocks", - ] -} diff --git a/packages/kbn-management/settings/components/field_category/jest.config.js b/packages/kbn-management/settings/components/field_category/jest.config.js deleted file mode 100644 index 73d47db7b38a8..0000000000000 --- a/packages/kbn-management/settings/components/field_category/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['/packages/kbn-management/settings/components/field_category'], -}; diff --git a/packages/kbn-management/settings/components/field_category/tsconfig.json b/packages/kbn-management/settings/components/field_category/tsconfig.json deleted file mode 100644 index 8b4e9b1566b31..0000000000000 --- a/packages/kbn-management/settings/components/field_category/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-utilities", - "@kbn/management-settings-field-definition", - "@kbn/management-settings-components-field-row", - "@kbn/management-settings-types", - "@kbn/i18n-react", - ] -} diff --git a/packages/kbn-management/settings/components/field_input/tsconfig.json b/packages/kbn-management/settings/components/field_input/tsconfig.json deleted file mode 100644 index d3fc7c27da7a9..0000000000000 --- a/packages/kbn-management/settings/components/field_input/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/management-settings-field-definition", - "@kbn/monaco", - "@kbn/management-settings-utilities", - "@kbn/i18n-react", - "@kbn/i18n", - "@kbn/core-notifications-browser", - "@kbn/core-ui-settings-common", - "@kbn/react-kibana-context-root", - "@kbn/core-theme-browser-mocks", - "@kbn/core-i18n-browser", - "@kbn/core-analytics-browser-mocks", - "@kbn/core-ui-settings-browser", - "@kbn/code-editor", - "@kbn/core-user-profile-browser-mocks", - ] -} diff --git a/packages/kbn-management/settings/components/field_row/tsconfig.json b/packages/kbn-management/settings/components/field_row/tsconfig.json deleted file mode 100644 index 0c1f8e31e4a59..0000000000000 --- a/packages/kbn-management/settings/components/field_row/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@kbn/ambient-ui-types", - "@kbn/ambient-storybook-types", - "@emotion/react/types/css-prop" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/management-settings-field-definition", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/management-settings-utilities", - "@kbn/management-settings-components-field-input", - "@kbn/core-doc-links-browser", - "@kbn/react-kibana-context-root", - "@kbn/core-theme-browser-mocks", - "@kbn/core-i18n-browser", - "@kbn/core-analytics-browser-mocks", - "@kbn/core-user-profile-browser-mocks", - ] -} diff --git a/packages/kbn-management/settings/components/form/tsconfig.json b/packages/kbn-management/settings/components/form/tsconfig.json deleted file mode 100644 index 073882ccf4b48..0000000000000 --- a/packages/kbn-management/settings/components/form/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@testing-library/jest-dom", - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/management-settings-field-definition", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/management-settings-components-field-row", - "@kbn/react-kibana-context-root", - "@kbn/core-theme-browser-mocks", - "@kbn/core-i18n-browser", - "@kbn/react-kibana-mount", - "@kbn/core-notifications-browser", - "@kbn/core-theme-browser", - "@kbn/core-ui-settings-browser", - "@kbn/management-settings-components-field-input", - "@kbn/management-settings-components-field-category", - "@kbn/management-settings-utilities", - "@kbn/core-analytics-browser-mocks", - "@kbn/core-ui-settings-common", - "@kbn/core-user-profile-browser-mocks", - "@kbn/core-user-profile-browser", - ] -} diff --git a/packages/kbn-management/settings/field_definition/tsconfig.json b/packages/kbn-management/settings/field_definition/tsconfig.json deleted file mode 100644 index 26d2dc3afb883..0000000000000 --- a/packages/kbn-management/settings/field_definition/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/core-ui-settings-browser", - "@kbn/management-settings-utilities", - ] -} diff --git a/packages/kbn-management/settings/types/tsconfig.json b/packages/kbn-management/settings/types/tsconfig.json deleted file mode 100644 index 2753fb935acaa..0000000000000 --- a/packages/kbn-management/settings/types/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/analytics", - "@kbn/core", - "@kbn/core-ui-settings-common", - "@kbn/management-settings-section-registry", - ] -} diff --git a/packages/kbn-management/settings/utilities/tsconfig.json b/packages/kbn-management/settings/utilities/tsconfig.json deleted file mode 100644 index 553ed61f4fd90..0000000000000 --- a/packages/kbn-management/settings/utilities/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/i18n", - "@kbn/core-ui-settings-common", - ] -} diff --git a/packages/kbn-monaco/src/esql/lib/esql_theme.ts b/packages/kbn-monaco/src/esql/lib/esql_theme.ts index d8223df99bbd1..b10c924992f05 100644 --- a/packages/kbn-monaco/src/esql/lib/esql_theme.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_theme.ts @@ -45,7 +45,7 @@ export const buildESQLTheme = ({ // source commands ...buildRuleGroup( ['from', 'row', 'show'], - euiThemeVars.euiColorPrimaryText, + euiThemeVars.euiColorPrimary, true // isBold ), @@ -88,12 +88,12 @@ export const buildESQLTheme = ({ 'desc', 'nulls_order', ], - euiThemeVars.euiColorAccentText, + euiThemeVars.euiColorAccent, true // isBold ), // functions - ...buildRuleGroup(['functions'], euiThemeVars.euiColorPrimaryText), + ...buildRuleGroup(['functions'], euiThemeVars.euiColorPrimary), // operators ...buildRuleGroup( @@ -116,7 +116,7 @@ export const buildESQLTheme = ({ 'percent', // '%' 'cast_op', // '::' ], - euiThemeVars.euiColorPrimaryText + euiThemeVars.euiColorPrimary ), // comments @@ -156,7 +156,7 @@ export const buildESQLTheme = ({ 'closing_metrics_line_comment', 'closing_metrics_multiline_comment', ], - euiThemeVars.euiColorDisabledText + euiThemeVars.euiTextSubduedColor ), // values diff --git a/packages/kbn-openapi-generator/README.md b/packages/kbn-openapi-generator/README.md index 1652588cbe15b..de83360a788ec 100644 --- a/packages/kbn-openapi-generator/README.md +++ b/packages/kbn-openapi-generator/README.md @@ -57,7 +57,7 @@ Put it anywhere in your plugin, the code generation script will traverse the who Then to generate code run the following command: ```bash -node scripts/generate_openapi --rootDir ./x-pack/plugins/security_solution +node scripts/generate_openapi --rootDir ./x-pack/solutions/security/plugins/security_solution ``` ![Generator command output](image.png) @@ -134,7 +134,7 @@ source .buildkite/scripts/common/util.sh echo --- Security Solution OpenAPI Code Generation -(cd x-pack/plugins/security_solution && yarn openapi:generate) +(cd x-pack/solutions/security/plugins/security_solution && yarn openapi:generate) check_for_changed_files "yarn openapi:generate" true ``` diff --git a/packages/kbn-palettes/README.md b/packages/kbn-palettes/README.md new file mode 100644 index 0000000000000..d4c3913e33d24 --- /dev/null +++ b/packages/kbn-palettes/README.md @@ -0,0 +1,3 @@ +# @kbn/palettes + +Package containing shared visualization palette definitions diff --git a/packages/kbn-palettes/classes/categorical_palette.ts b/packages/kbn-palettes/classes/categorical_palette.ts new file mode 100644 index 0000000000000..fc352e7b45b35 --- /dev/null +++ b/packages/kbn-palettes/classes/categorical_palette.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Optional } from 'utility-types'; +import { KbnBasePalette, KbnBasePaletteConfig } from './palette'; +import { IKbnPalette } from './types'; + +export interface KbnCategoricalPaletteConfig extends Optional { + colors: string[]; +} + +export class KbnCategoricalPalette extends KbnBasePalette implements IKbnPalette { + public readonly type = 'categorical' as const; + + #colors: string[]; + + constructor({ colors, colorCount = colors.length, ...rest }: KbnCategoricalPaletteConfig) { + super({ ...rest, colorCount }); + + this.#colors = colors; + } + + public colors = (n?: number) => { + const end = n === undefined ? n : Math.max(1, n); + return this.#colors.slice(0, end); + }; +} diff --git a/packages/kbn-palettes/classes/color_fn_palette.ts b/packages/kbn-palettes/classes/color_fn_palette.ts new file mode 100644 index 0000000000000..4be79355f110f --- /dev/null +++ b/packages/kbn-palettes/classes/color_fn_palette.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Optional } from 'utility-types'; +import { KbnBasePaletteConfig, KbnBasePalette } from './palette'; +import { IKbnPalette, KbnPaletteType } from './types'; + +const DEFAULT_COLOR_COUNT = 10; + +export interface KbnColorFnPaletteConfig extends Optional { + type: KbnPaletteType; + colorFn: (n: number) => string[]; + /** + * Default number of colors returned from `colors` method. + * + * @default `colorCount` + */ + defaultNumberOfColors?: number; +} + +export class KbnColorFnPalette extends KbnBasePalette implements IKbnPalette { + public readonly type: KbnPaletteType; + + #colorFn: (n: number) => string[]; + #defaultNumberOfColors: number; + + constructor({ + type, + colorFn, + defaultNumberOfColors, + colorCount = DEFAULT_COLOR_COUNT, + ...rest + }: KbnColorFnPaletteConfig) { + super({ ...rest, colorCount }); + + this.type = type; + + this.#colorFn = colorFn; + this.#defaultNumberOfColors = defaultNumberOfColors ?? colorCount; + } + + public colors = (n: number = this.#defaultNumberOfColors) => { + return this.#colorFn(n === undefined ? n : Math.max(1, n)); + }; +} diff --git a/packages/kbn-palettes/classes/index.ts b/packages/kbn-palettes/classes/index.ts new file mode 100644 index 0000000000000..6cc89dc1cc1fe --- /dev/null +++ b/packages/kbn-palettes/classes/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './types'; +export { KbnPalettes } from './palettes'; diff --git a/packages/kbn-palettes/classes/palette.ts b/packages/kbn-palettes/classes/palette.ts new file mode 100644 index 0000000000000..8c707b1c3b7da --- /dev/null +++ b/packages/kbn-palettes/classes/palette.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Optional } from 'utility-types'; +import { IKbnPalette, KbnPaletteType } from './types'; + +export type KbnBasePaletteConfig = Optional< + Pick, + 'legacy' | 'aliases' +>; + +export abstract class KbnBasePalette implements IKbnPalette { + public abstract type: KbnPaletteType; + + public readonly id: string; + public readonly name: string; + public readonly colorCount: number; + public readonly legacy: boolean; + public readonly standalone: boolean; + public readonly aliases: string[]; + + constructor({ + id, + name, + colorCount, + aliases = [], + legacy = false, + standalone = false, + }: KbnBasePaletteConfig) { + this.id = id; + this.name = name; + this.colorCount = colorCount; + this.legacy = legacy; + this.standalone = standalone; + this.aliases = aliases; + } + + public abstract colors: (n?: number | undefined) => string[]; + + public getColor = (colorIndex: number, numberOfColors?: number) => { + const colors = this.colors(numberOfColors); + return colors[colorIndex % colors.length]; // ensure color is always returned + }; +} diff --git a/packages/kbn-palettes/classes/palettes.ts b/packages/kbn-palettes/classes/palettes.ts new file mode 100644 index 0000000000000..8b0ea42dd0724 --- /dev/null +++ b/packages/kbn-palettes/classes/palettes.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { IKbnPalette } from './types'; + +export class KbnPalettes { + #palettes: Map; + #aliasMappings: Map; + #defaultPalette: IKbnPalette; + + constructor(palettes: IKbnPalette[], defaultPalette: IKbnPalette) { + this.#defaultPalette = defaultPalette; + this.#palettes = new Map(palettes.map((p) => [p.id, p])); + this.#aliasMappings = buildAliasMappings(palettes); + } + + query = (id: string) => { + const aliasedId = (this.#palettes.has(id) ? id : this.#aliasMappings.get(id)) ?? id; + return this.#palettes.get(aliasedId); + }; + + get = (id: string) => { + return this.query(id) ?? this.#defaultPalette; + }; + + getAll = () => { + return [...this.#palettes.values()].filter(({ standalone }) => !standalone); + }; +} + +function buildAliasMappings(palettes: IKbnPalette[]): Map { + return palettes.reduce((acc, { id, aliases }) => { + aliases.forEach((alias) => { + acc.set(alias, id); + }); + return acc; + }, new Map()); +} diff --git a/packages/kbn-palettes/classes/types.ts b/packages/kbn-palettes/classes/types.ts new file mode 100644 index 0000000000000..345978a409a51 --- /dev/null +++ b/packages/kbn-palettes/classes/types.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export type KbnPaletteType = 'categorical' | 'gradient'; + +/** + * Common palette definition used throughout kibana + */ +export interface IKbnPalette { + /** + * Unique identifier for the palette + */ + id: string; + /** + * Display name of this palette. + */ + name: string; + /** + * Type of pallette + */ + type: KbnPaletteType; + /** + * Number of colors to display + */ + colorCount: number; + /** + * Palette belongs to an outdated theme set + */ + legacy: boolean; + /** + * Alternate aliases/ids this palette matches + */ + aliases: string[]; + /** + * Excluded from `getAll` but can still query for palette with `get`/`query` + * + * An example would be `KbnPalette.Neutral` palette. I want to exclude it from the list of all available palettes, but I still want to `get`/`query` the palette. + */ + standalone?: boolean; + /** + * Returns array of colors, optionally provide desired number of colors (`n`) + */ + colors: (n?: number) => string[]; + /** + * Returns color provided index and optional total number of colors + */ + getColor: (colorIndex: number, numberOfColors?: number) => string; +} diff --git a/packages/kbn-palettes/constants.ts b/packages/kbn-palettes/constants.ts new file mode 100644 index 0000000000000..13ac550577e59 --- /dev/null +++ b/packages/kbn-palettes/constants.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const DEFAULT_FALLBACK_PALETTE = 'default' as const; + +export const EUI_THEME_AMSTERDAM = 'EUI_THEME_AMSTERDAM'; +export const EUI_THEME_BOREALIS = 'EUI_THEME_BOREALIS'; + +const semantic = { + /** + * Log level palette + */ + LogLevel: 'log_level' as const, +}; + +const categorical = { + /** + * Default kibana theme + */ + Default: DEFAULT_FALLBACK_PALETTE, + /** + * Neutral palette + */ + Neutral: 'neutral' as const, + + // ---- Legacy Palettes ---- + /** + * Kibana legacy theme v7 to v9 + */ + Kibana7: 'eui_amsterdam' as const, + /** + * Kibana behind text legacy theme v7 to v9 + */ + Kibana7BehindText: 'behind_text' as const, + /** + * Kibana legacy theme v4 to v7 + */ + Kibana4: 'kibana_v7_legacy' as const, + /** + * Elastic classic color palette + */ + ElasticClassic: 'elastic_brand_2023' as const, +}; + +const gradient = { + Cool: 'cool' as const, + Gray: 'gray' as const, + Red: 'red' as const, + Green: 'green' as const, + Warm: 'warm' as const, + Temperature: 'temperature' as const, + Complementary: 'complementary' as const, + Status: 'status' as const, +}; + +/** + * Enum of all kbn palette ids, including by type + */ +export const KbnPalette = { + // Categorical palettes + ...categorical, + + // Gradient palettes + ...gradient, + + // Semantic palettes + ...semantic, + + // ---- Deprecated palettes ---- + /** + * Amsterdam theme + * @deprecated use `KbnPalette.kibana7` + */ + Amsterdam: 'eui_amsterdam_color_blind' as const, +}; diff --git a/packages/kbn-palettes/hooks/index.ts b/packages/kbn-palettes/hooks/index.ts new file mode 100644 index 0000000000000..b01c38728d15e --- /dev/null +++ b/packages/kbn-palettes/hooks/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './use_kbn_palettes'; diff --git a/packages/kbn-palettes/hooks/use_kbn_palettes.ts b/packages/kbn-palettes/hooks/use_kbn_palettes.ts new file mode 100644 index 0000000000000..f78c70ad2ba3e --- /dev/null +++ b/packages/kbn-palettes/hooks/use_kbn_palettes.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { useEuiTheme } from '@elastic/eui'; +import { getPalettes } from '../palettes'; +import { getLegacyKbnPalettes } from '../palettes/legacy'; + +export function useKbnPalettes() { + const { + euiTheme: { themeName }, + colorMode, + } = useEuiTheme(); + + if (themeName === 'EUI_THEME_BOREALIS') { + return getPalettes(colorMode === 'DARK'); + } + + return getLegacyKbnPalettes(colorMode === 'DARK'); +} diff --git a/packages/kbn-palettes/index.ts b/packages/kbn-palettes/index.ts new file mode 100644 index 0000000000000..361273837f9c9 --- /dev/null +++ b/packages/kbn-palettes/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './palettes'; +export * from './classes'; +export { DEFAULT_FALLBACK_PALETTE, KbnPalette } from './constants'; + +export * from './hooks'; diff --git a/packages/kbn-palettes/jest.config.js b/packages/kbn-palettes/jest.config.js new file mode 100644 index 0000000000000..ba851fd1d70fa --- /dev/null +++ b/packages/kbn-palettes/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-palettes'], +}; diff --git a/packages/kbn-palettes/kibana.jsonc b/packages/kbn-palettes/kibana.jsonc new file mode 100644 index 0000000000000..940c34426c2bc --- /dev/null +++ b/packages/kbn-palettes/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/palettes", + "owner": "@elastic/kibana-visualizations" +} diff --git a/packages/kbn-palettes/package.json b/packages/kbn-palettes/package.json new file mode 100644 index 0000000000000..6400900ccfba1 --- /dev/null +++ b/packages/kbn-palettes/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/palettes", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0" +} \ No newline at end of file diff --git a/packages/kbn-palettes/palettes/categorical/elastic.ts b/packages/kbn-palettes/palettes/categorical/elastic.ts new file mode 100644 index 0000000000000..239b1c009d5de --- /dev/null +++ b/packages/kbn-palettes/palettes/categorical/elastic.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteColorBlind } from '@elastic/eui'; +import { KbnPalette } from '../../constants'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; + +/** + * This is not correctly returning the updated vis colors from eui. + * All gradient function work correctly. + */ +export const elasticPalette = new KbnColorFnPalette({ + id: KbnPalette.Default, + type: 'categorical', + aliases: [ + 'elastic_borealis', // placeholder - not yet used + KbnPalette.Amsterdam, // to assign to existing default palettes + ], + colorCount: 10, + defaultNumberOfColors: 30, + name: i18n.translate('palettes.elastic.name', { + defaultMessage: 'Elastic (default)', + }), + // Return exact colors requested given enough rotations + colorFn: (n) => euiPaletteColorBlind({ rotations: Math.ceil(n / 10) }).slice(0, n), +}); diff --git a/packages/kbn-palettes/palettes/categorical/index.ts b/packages/kbn-palettes/palettes/categorical/index.ts new file mode 100644 index 0000000000000..63638c387f715 --- /dev/null +++ b/packages/kbn-palettes/palettes/categorical/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './neutral'; +export * from './elastic'; diff --git a/packages/kbn-palettes/palettes/categorical/neutral.ts b/packages/kbn-palettes/palettes/categorical/neutral.ts new file mode 100644 index 0000000000000..13de3a45cb94a --- /dev/null +++ b/packages/kbn-palettes/palettes/categorical/neutral.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { + KbnCategoricalPalette, + KbnCategoricalPaletteConfig, +} from '../../classes/categorical_palette'; +import { KbnPalette } from '../../constants'; + +const commonProps = { + id: KbnPalette.Neutral, + standalone: true, + name: i18n.translate('palettes.elastic.name', { + defaultMessage: 'Neutral', + }), +} satisfies Omit; + +const lightNeutralPalette = new KbnCategoricalPalette({ + ...commonProps, + colors: ['#F6F9FC', '#D0D4DA', '#989FAA', '#666D78', '#373D45'], +}); + +const darkNeutralPalette = new KbnCategoricalPalette({ + ...commonProps, + colors: ['#F6F9FC', '#C9D4E6', '#89A0C4', '#546D95', '#283C5C'], +}); + +export const getNeutralPalette = (darkMode: boolean) => + darkMode ? darkNeutralPalette : lightNeutralPalette; diff --git a/packages/kbn-palettes/palettes/get_kbn_palettes.ts b/packages/kbn-palettes/palettes/get_kbn_palettes.ts new file mode 100644 index 0000000000000..0519a2d4bf9a9 --- /dev/null +++ b/packages/kbn-palettes/palettes/get_kbn_palettes.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { CoreTheme } from '@kbn/core-theme-browser'; +import { getPalettes } from '.'; +import { getLegacyKbnPalettes } from './legacy'; + +export function getKbnPalettes({ name, darkMode }: CoreTheme) { + if (name === 'amsterdam') { + return getLegacyKbnPalettes(darkMode); + } + + return getPalettes(darkMode); +} diff --git a/packages/kbn-palettes/palettes/gradient/complementary.ts b/packages/kbn-palettes/palettes/gradient/complementary.ts new file mode 100644 index 0000000000000..c61fc8d140d5d --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/complementary.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteComplementary } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const complementaryPalette = new KbnColorFnPalette({ + id: KbnPalette.Complementary, + type: 'gradient', + name: i18n.translate('palettes.complementary.name', { + defaultMessage: 'Complementary', + }), + colorFn: euiPaletteComplementary, +}); diff --git a/packages/kbn-palettes/palettes/gradient/cool.ts b/packages/kbn-palettes/palettes/gradient/cool.ts new file mode 100644 index 0000000000000..2982cba8a35dd --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/cool.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteCool } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const coolPalette = new KbnColorFnPalette({ + id: KbnPalette.Cool, + type: 'gradient', + name: i18n.translate('palettes.cool.name', { + defaultMessage: 'Cool', + }), + colorFn: euiPaletteCool, +}); diff --git a/packages/kbn-palettes/palettes/gradient/gray.ts b/packages/kbn-palettes/palettes/gradient/gray.ts new file mode 100644 index 0000000000000..24d6d2444ce57 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/gray.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteGray } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const grayPalette = new KbnColorFnPalette({ + id: KbnPalette.Gray, + type: 'gradient', + name: i18n.translate('palettes.gray.name', { + defaultMessage: 'Gray', + }), + colorFn: euiPaletteGray, +}); diff --git a/packages/kbn-palettes/palettes/gradient/green.ts b/packages/kbn-palettes/palettes/gradient/green.ts new file mode 100644 index 0000000000000..bb6655d575ea5 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/green.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteGreen } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const greenPalette = new KbnColorFnPalette({ + id: KbnPalette.Green, + type: 'gradient', + name: i18n.translate('palettes.green.name', { + defaultMessage: 'Positive', + }), + colorFn: euiPaletteGreen, +}); diff --git a/packages/kbn-palettes/palettes/gradient/index.ts b/packages/kbn-palettes/palettes/gradient/index.ts new file mode 100644 index 0000000000000..7781fdd5ec7a3 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './cool'; +export * from './gray'; +export * from './red'; +export * from './green'; +export * from './warm'; +export * from './temperature'; +export * from './complementary'; +export * from './status'; diff --git a/packages/kbn-palettes/palettes/gradient/red.ts b/packages/kbn-palettes/palettes/gradient/red.ts new file mode 100644 index 0000000000000..e2cd76df1e454 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/red.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteRed } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const redPalette = new KbnColorFnPalette({ + id: KbnPalette.Red, + type: 'gradient', + name: i18n.translate('palettes.red.name', { + defaultMessage: 'Negative', + }), + colorFn: euiPaletteRed, +}); diff --git a/packages/kbn-palettes/palettes/gradient/status.ts b/packages/kbn-palettes/palettes/gradient/status.ts new file mode 100644 index 0000000000000..db0c1931aae73 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/status.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteForStatus } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const statusPalette = new KbnColorFnPalette({ + id: KbnPalette.Status, + type: 'gradient', + name: i18n.translate('palettes.status.name', { + defaultMessage: 'Status', + }), + colorFn: euiPaletteForStatus, +}); diff --git a/packages/kbn-palettes/palettes/gradient/temperature.ts b/packages/kbn-palettes/palettes/gradient/temperature.ts new file mode 100644 index 0000000000000..5cf802db6c1f2 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/temperature.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteForTemperature } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const temperaturePalette = new KbnColorFnPalette({ + id: KbnPalette.Temperature, + type: 'gradient', + name: i18n.translate('palettes.temperature.name', { + defaultMessage: 'Temperature', + }), + colorFn: euiPaletteForTemperature, +}); diff --git a/packages/kbn-palettes/palettes/gradient/warm.ts b/packages/kbn-palettes/palettes/gradient/warm.ts new file mode 100644 index 0000000000000..16ada3059903c --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/warm.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteWarm } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const warmPalette = new KbnColorFnPalette({ + id: KbnPalette.Warm, + type: 'gradient', + name: i18n.translate('palettes.warm.name', { + defaultMessage: 'Warm', + }), + colorFn: euiPaletteWarm, +}); diff --git a/packages/kbn-palettes/palettes/index.ts b/packages/kbn-palettes/palettes/index.ts new file mode 100644 index 0000000000000..5f70cafaa6b2c --- /dev/null +++ b/packages/kbn-palettes/palettes/index.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { KbnPalettes } from '../classes/palettes'; +import { elasticPalette, getNeutralPalette } from './categorical'; +import { elasticClassicPalette, kibana4Palette, kibana7Palette } from './legacy/categorical'; +import { + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, +} from './gradient'; +export { logLevelPalette } from './semantic'; + +const darkKbnPalettes = new KbnPalettes( + [ + elasticPalette, + kibana7Palette, + kibana4Palette, + getNeutralPalette(true), + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, + elasticClassicPalette, + ], + elasticPalette +); + +const lightKbnPalettes = new KbnPalettes( + [ + elasticPalette, + kibana7Palette, + kibana4Palette, + getNeutralPalette(true), + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, + elasticClassicPalette, + ], + elasticPalette +); + +export const getPalettes = (darkMode: boolean) => (darkMode ? darkKbnPalettes : lightKbnPalettes); + +export { elasticPalette } from './categorical'; +export * from './get_kbn_palettes'; diff --git a/packages/kbn-palettes/palettes/legacy/categorical/elastic_classic.ts b/packages/kbn-palettes/palettes/legacy/categorical/elastic_classic.ts new file mode 100644 index 0000000000000..5a4347b8b7cc2 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/elastic_classic.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +export const elasticClassicPalette = new KbnCategoricalPalette({ + id: KbnPalette.ElasticClassic, + name: i18n.translate('palettes.classic.name', { + defaultMessage: 'Elastic classic', + }), + colors: ['#20377d', '#7de2d1', '#ff957d', '#f04e98', '#0077cc', '#fec514'], +}); diff --git a/packages/kbn-palettes/palettes/legacy/categorical/index.ts b/packages/kbn-palettes/palettes/legacy/categorical/index.ts new file mode 100644 index 0000000000000..52e244344f20e --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './kibana_7'; +export * from './kibana_7_behind_text'; +export * from './kibana_4'; +export * from './elastic_classic'; +export * from './neutral'; diff --git a/packages/kbn-palettes/palettes/legacy/categorical/kibana_4.ts b/packages/kbn-palettes/palettes/legacy/categorical/kibana_4.ts new file mode 100644 index 0000000000000..ff8019a8fb02f --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/kibana_4.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +export const kibana4Palette = new KbnCategoricalPalette({ + id: KbnPalette.Kibana4, + name: i18n.translate('palettes.kibana4.name', { + defaultMessage: 'Kibana 4', + }), + colors: ['#00a69b', '#57c17b', '#6f87d8', '#663db8', '#bc52bc', '#9e3533', '#daa05d'], +}); diff --git a/packages/kbn-palettes/palettes/legacy/categorical/kibana_7.ts b/packages/kbn-palettes/palettes/legacy/categorical/kibana_7.ts new file mode 100644 index 0000000000000..75ec1c7073c6e --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/kibana_7.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +export const kibana7Palette = new KbnCategoricalPalette({ + id: KbnPalette.Kibana7, + aliases: [ + KbnPalette.Default, // needed when switching between new and old themes + KbnPalette.Amsterdam, // to assign to existing default palettes + ], + name: i18n.translate('palettes.kibana7.name', { + defaultMessage: 'Kibana 7', + }), + colorCount: 10, + colors: [ + '#54b399', + '#6092c0', + '#d36086', + '#9170b8', + '#ca8eae', + '#d6bf57', + '#b9a888', + '#da8b45', + '#aa6556', + '#e7664c', + '#7fc6b3', + '#88aed0', + '#de88a5', + '#ad94ca', + '#d8abc3', + '#e1cf81', + '#cbbea6', + '#e4a874', + '#c08c81', + '#ed8d79', + '#aad9cc', + '#b0c9e0', + '#e9b0c3', + '#c8b8dc', + '#e5c7d7', + '#ebdfab', + '#dcd4c4', + '#edc5a2', + '#d5b2ab', + '#f3b3a6', + ], +}); diff --git a/packages/kbn-palettes/palettes/legacy/categorical/kibana_7_behind_text.ts b/packages/kbn-palettes/palettes/legacy/categorical/kibana_7_behind_text.ts new file mode 100644 index 0000000000000..578afcdff6284 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/kibana_7_behind_text.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +export const kibana7BehindText = new KbnCategoricalPalette({ + id: KbnPalette.Kibana7BehindText, + name: i18n.translate('palettes.kibana7BehindText.name', { + defaultMessage: 'Kibana 7 (behind text)', + }), + standalone: true, + colorCount: 10, + colors: [ + '#6dccb1', + '#79aad9', + '#ee789d', + '#a987d1', + '#e4a6c7', + '#f1d86f', + '#d2c0a0', + '#f5a35c', + '#c47c6c', + '#ff7e62', + '#98dfcc', + '#a0c7e9', + '#f8a0bd', + '#c6ace3', + '#f2c4dc', + '#fbe899', + '#e4d7be', + '#ffc08b', + '#daa498', + '#ffa590', + '#c3f3e5', + '#c9e2fa', + '#ffc9dc', + '#e1d1f6', + '#ffe0f1', + '#fff9c4', + '#f6eddd', + '#ffdeba', + '#efcbc4', + '#ffccbe', + ], +}); diff --git a/packages/kbn-palettes/palettes/legacy/categorical/neutral.ts b/packages/kbn-palettes/palettes/legacy/categorical/neutral.ts new file mode 100644 index 0000000000000..99bb21e42f395 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/neutral.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +const schemeGreys = ['#f2f4fb', '#d4d9e5', '#98a2b3', '#696f7d', '#353642']; +const NEUTRAL_COLOR_LIGHT = schemeGreys.slice(); +const NEUTRAL_COLOR_DARK = schemeGreys.slice().reverse(); + +export const getNeutralPalette = (darkMode: boolean) => + new KbnCategoricalPalette({ + id: KbnPalette.Neutral, + name: i18n.translate('palettes.elastic.name', { + defaultMessage: 'Neutral', + }), + standalone: true, + colors: darkMode ? NEUTRAL_COLOR_DARK : NEUTRAL_COLOR_LIGHT, + }); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/complementary.ts b/packages/kbn-palettes/palettes/legacy/gradient/complementary.ts new file mode 100644 index 0000000000000..be730d39e89b1 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/complementary.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteComplementary } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const complementaryPalette = new KbnColorFnPalette({ + id: KbnPalette.Complementary, + type: 'gradient', + name: i18n.translate('palettes.complementary.name', { + defaultMessage: 'Complementary', + }), + colorFn: euiPaletteComplementary, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/cool.ts b/packages/kbn-palettes/palettes/legacy/gradient/cool.ts new file mode 100644 index 0000000000000..178b7f2afeae2 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/cool.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteCool } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const coolPalette = new KbnColorFnPalette({ + id: KbnPalette.Cool, + type: 'gradient', + name: i18n.translate('palettes.cool.name', { + defaultMessage: 'Cool', + }), + colorFn: euiPaletteCool, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/gray.ts b/packages/kbn-palettes/palettes/legacy/gradient/gray.ts new file mode 100644 index 0000000000000..c0176eba2262f --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/gray.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteGray } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const grayPalette = new KbnColorFnPalette({ + id: KbnPalette.Gray, + type: 'gradient', + name: i18n.translate('palettes.gray.name', { + defaultMessage: 'Gray', + }), + colorFn: euiPaletteGray, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/green.ts b/packages/kbn-palettes/palettes/legacy/gradient/green.ts new file mode 100644 index 0000000000000..3e84be1c923ff --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/green.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteGreen } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const greenPalette = new KbnColorFnPalette({ + id: KbnPalette.Green, + type: 'gradient', + name: i18n.translate('palettes.green.name', { + defaultMessage: 'Positive', + }), + colorFn: euiPaletteGreen, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/index.ts b/packages/kbn-palettes/palettes/legacy/gradient/index.ts new file mode 100644 index 0000000000000..7781fdd5ec7a3 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './cool'; +export * from './gray'; +export * from './red'; +export * from './green'; +export * from './warm'; +export * from './temperature'; +export * from './complementary'; +export * from './status'; diff --git a/packages/kbn-palettes/palettes/legacy/gradient/red.ts b/packages/kbn-palettes/palettes/legacy/gradient/red.ts new file mode 100644 index 0000000000000..9c028502ce602 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/red.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteRed } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const redPalette = new KbnColorFnPalette({ + id: KbnPalette.Red, + type: 'gradient', + name: i18n.translate('palettes.red.name', { + defaultMessage: 'Negative', + }), + colorFn: euiPaletteRed, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/status.ts b/packages/kbn-palettes/palettes/legacy/gradient/status.ts new file mode 100644 index 0000000000000..d367efe4752ff --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/status.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteForStatus } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const statusPalette = new KbnColorFnPalette({ + id: KbnPalette.Status, + type: 'gradient', + name: i18n.translate('palettes.status.name', { + defaultMessage: 'Status', + }), + colorFn: euiPaletteForStatus, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/temperature.ts b/packages/kbn-palettes/palettes/legacy/gradient/temperature.ts new file mode 100644 index 0000000000000..2ff7a7fbf65db --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/temperature.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteForTemperature } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const temperaturePalette = new KbnColorFnPalette({ + id: KbnPalette.Temperature, + type: 'gradient', + name: i18n.translate('palettes.temperature.name', { + defaultMessage: 'Temperature', + }), + colorFn: euiPaletteForTemperature, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/warm.ts b/packages/kbn-palettes/palettes/legacy/gradient/warm.ts new file mode 100644 index 0000000000000..f19a8eb148db3 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/warm.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteWarm } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const warmPalette = new KbnColorFnPalette({ + id: KbnPalette.Warm, + type: 'gradient', + name: i18n.translate('palettes.warm.name', { + defaultMessage: 'Warm', + }), + colorFn: euiPaletteWarm, +}); diff --git a/packages/kbn-palettes/palettes/legacy/index.ts b/packages/kbn-palettes/palettes/legacy/index.ts new file mode 100644 index 0000000000000..ced72336fc370 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/index.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { KbnPalettes } from '../../classes/palettes'; + +import { + kibana7Palette, + kibana4Palette, + elasticClassicPalette, + getNeutralPalette, + kibana7BehindText, +} from './categorical'; +import { + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, +} from './gradient'; + +const darkLegacyKbnPalettes = new KbnPalettes( + [ + kibana7Palette, + kibana4Palette, + kibana7BehindText, + getNeutralPalette(true), + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, + elasticClassicPalette, + ], + kibana7Palette +); + +const lightLegacyKbnPalettes = new KbnPalettes( + [ + kibana7Palette, + kibana4Palette, + kibana7BehindText, + getNeutralPalette(true), + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, + elasticClassicPalette, + ], + kibana7Palette +); + +export const getLegacyKbnPalettes = (darkMode: boolean) => + darkMode ? darkLegacyKbnPalettes : lightLegacyKbnPalettes; diff --git a/packages/kbn-palettes/palettes/semantic/index.ts b/packages/kbn-palettes/palettes/semantic/index.ts new file mode 100644 index 0000000000000..cfc7c779dacf4 --- /dev/null +++ b/packages/kbn-palettes/palettes/semantic/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './log_level'; diff --git a/packages/kbn-palettes/palettes/semantic/log_level.ts b/packages/kbn-palettes/palettes/semantic/log_level.ts new file mode 100644 index 0000000000000..cbcbbdaee3def --- /dev/null +++ b/packages/kbn-palettes/palettes/semantic/log_level.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { $Keys } from 'utility-types'; +import { KbnPalette } from '../../constants'; + +// TODO: update colors to vis colors +const logLevelColors = { + Emerg: '#F66D64', + Alert: '#E78E76', + Crit: '#E7A584', + Error: '#E7BD91', + Warn: '#E8D297', + Notice: '#C7D59', + Info: '#9CB1D3', + Debug: '#718FBC', + Other: '#CED4DE', +}; +type LogLevelKeys = $Keys; + +/** + * Defines a palette to be used directly and does not fully implement IKbnPalette + */ +export const logLevelPalette = { + id: KbnPalette.LogLevel, + name: i18n.translate('palettes.logLevel.name', { + defaultMessage: 'Log Level', + }), + getColor: (key: LogLevelKeys) => { + return logLevelColors[key]; + }, + colors: logLevelColors, +}; diff --git a/packages/kbn-palettes/tsconfig.json b/packages/kbn-palettes/tsconfig.json new file mode 100644 index 0000000000000..546dace9495b5 --- /dev/null +++ b/packages/kbn-palettes/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core-theme-browser" + ] +} diff --git a/packages/kbn-relocate/README.md b/packages/kbn-relocate/README.md new file mode 100644 index 0000000000000..06a04067a26a2 --- /dev/null +++ b/packages/kbn-relocate/README.md @@ -0,0 +1,57 @@ +# @kbn/relocate + +This package contains a CLI tool to help move modules (plugins and packages) into their intended folders, according to the _Sustainable Kibana Architecture. + +## Prerequisites + +You must have `gh` CLI tool installed. You can install it by running: + +```sh +brew install gh +gh auth login +``` + +## Usage + +First of all, you need to decide whether you want to contribute to an existing PR or to create a new one. Use the `--pr` flag to specify the PR you are trying to update: + +```sh +node scripts/relocate --pr +``` + +Note that when specifying an existing PR, the logic will undo + rewrite history for that PR, by force-pushing changes. + +To relocate modules for a given team, identify the "team handle" (e.g. @elastic/kibana-core), and run the following command from the root of the Kibana repo: + +```sh +node scripts/relocate --pr --team +``` + +You can relocate modules by path, e.g. all modules that are under `x-pack/plugins/observability_solution/`: + +```sh +node scripts/relocate --pr --path "x-pack/plugins/observability_solution/" +``` + +You can specify indivual packages by ID: + +```sh +node scripts/relocate --pr --include "@kbn/data-forge" --include "@kbn/deeplinks-observability" +``` + +You can also specify combinations of the above filters, to include modules that match ANY of the criteria. +Excluding modules explictly is also supported: + +```sh +node scripts/relocate --pr --team "@elastic/obs-ux-management-team" --exclude "@kbn/data-forge" +``` + +## Details + +The script generates log / description files of the form `relocate_YYYYMMDDhhmmss_.out`. You can inspect them if you encounter any errors. + +In particular, the file `relocate_YYYYMMDDhhmmss_description.out` contains the auto-generated PR description. You can push it to the PR by running: + +```sh +gh pr edit -F relocate_YYYYMMDDhhmmss_description.out -R elastic/kibana +``` diff --git a/packages/kbn-relocate/constants.ts b/packages/kbn-relocate/constants.ts new file mode 100644 index 0000000000000..5b5f4099b782b --- /dev/null +++ b/packages/kbn-relocate/constants.ts @@ -0,0 +1,114 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import dedent from 'dedent'; + +export const BASE_FOLDER = process.cwd() + '/'; +export const BASE_FOLDER_DEPTH = process.cwd().split('/').length; +export const KIBANA_FOLDER = process.cwd().split('/').pop()!; +export const EXCLUDED_MODULES = ['@kbn/core']; +export const TARGET_FOLDERS: Record = { + 'platform:private': [ + 'src/platform/packages/private/', + 'src/platform/plugins/private/', + 'x-pack/platform/packages/private/', + 'x-pack/platform/plugins/private/', + ], + 'platform:shared': [ + 'src/platform/packages/shared/', + 'src/platform/plugins/shared/', + 'x-pack/platform/packages/shared/', + 'x-pack/platform/plugins/shared/', + ], + 'observability:private': [ + 'x-pack/solutions/observability/packages/', + 'x-pack/solutions/observability/plugins/', + ], + 'search:private': ['x-pack/solutions/search/packages/', 'x-pack/solutions/search/plugins/'], + 'security:private': ['x-pack/solutions/security/packages/', 'x-pack/solutions/security/plugins/'], +}; +export const EXTENSIONS = [ + 'eslintignore', + 'gitignore', + 'js', + 'mjs', + 'txt', + 'json', + 'lock', + 'bazel', + 'md', + 'mdz', + 'asciidoc', + 'sh', + 'ts', + 'jsonc', + 'yaml', + 'yml', +]; + +export const EXCLUDED_FOLDERS = [ + './api_docs', // autogenerated daily https://buildkite.com/elastic/kibana-api-docs-daily + './.chromium', + './.devcontainer', + './.es', + './.git', + // './.github', + './.native_modules', + './.node_binaries', + './.vscode', + './.yarn-local-mirror', + './build', + './core_http.codeql', + './data', + './node_modules', + './target', + './test.codeql', + './test2.codeql', + './trash', +]; + +export const NO_GREP = EXCLUDED_FOLDERS.map((f) => `--exclude-dir "${f}"`).join(' '); + +// These two constants are singletons, used and updated throughout the process +export const UPDATED_REFERENCES = new Set(); +export const UPDATED_RELATIVE_PATHS = new Set(); +export const SCRIPT_ERRORS: string[] = []; + +export const YMDMS = new Date() + .toISOString() + .replace(/[^0-9]/g, '') + .slice(0, -3); + +export const DESCRIPTION = `relocate_${YMDMS}_description.out`; +export const NEW_BRANCH = `kbn-team-1309-relocate-${YMDMS}`; + +export const GLOBAL_DESCRIPTION = dedent` +## Summary + +This PR aims at relocating some of the Kibana modules (plugins and packages) into a new folder structure, according to the _Sustainable Kibana Architecture_ initiative. + +> [!IMPORTANT] +> * We kindly ask you to: +> * Manually fix the errors in the error section below (if there are any). +> * Search for the \`packages[\/\\]\` and \`plugins[\/\\]\` patterns in the source code (Babel and Eslint config files), and update them appropriately. +> * Manually review \`.buildkite/scripts/pipelines/pull_request/pipeline.ts\` to ensure that any CI pipeline customizations continue to be correctly applied after the changed path names +> * Review all of the updated files, specially the \`.ts\` and \`.js\` files listed in the sections below, as some of them contain relative paths that have been updated. +> * Think of potential impact of the move, including tooling and configuration files that can be pointing to the relocated modules. E.g.: +> * customised eslint rules +> * docs pointing to source code + +> [!NOTE] +> * This PR has been auto-generated. +> * Any manual contributions will be lost if the 'relocate' script is re-run. +> * Try to obtain the missing reviews / approvals before applying manual fixes, and/or keep your changes in a .patch / git stash. +> * Please use [#sustainable_kibana_architecture](https://elastic.slack.com/archives/C07TCKTA22E) Slack channel for feedback. + +Are you trying to rebase this PR to solve merge conflicts? Please follow the steps describe [here](https://elastic.slack.com/archives/C07TCKTA22E/p1734019532879269?thread_ts=1734019339.935419&cid=C07TCKTA22E). + +`; diff --git a/packages/kbn-relocate/index.ts b/packages/kbn-relocate/index.ts new file mode 100644 index 0000000000000..12f89a29275e6 --- /dev/null +++ b/packages/kbn-relocate/index.ts @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { run } from '@kbn/dev-cli-runner'; +import { findAndRelocateModules, findAndMoveModule } from './relocate'; + +const toStringArray = (flag: string | boolean | string[] | undefined): string[] => { + if (typeof flag === 'string') { + return [flag].filter(Boolean); + } else if (typeof flag === 'boolean') { + return []; + } else if (Array.isArray(flag)) { + return flag.filter(Boolean); + } + return []; +}; + +const toOptString = ( + flagName: string, + flag: string | boolean | string[] | undefined, + defaultValue?: string +): string | undefined => { + if (typeof flag === 'boolean') { + throw Error(`You must specify a valid string for the --${flagName} flag`); + } else if (Array.isArray(flag)) { + throw Error(`Cannot specify multiple values for --${flagName} flag`); + } + return flag || defaultValue; +}; + +/** + * A CLI to move Kibana modules into the right folder structure, + * according to the Sustainable Kibana Architecture + */ +export const runKbnRelocateCli = () => { + run( + async ({ log, flags }) => { + if (typeof flags.moveOnly === 'string' && flags.moveOnly.length > 0) { + log.info('When using --moveOnly flag, the rest of flags are ignored.'); + await findAndMoveModule(flags.moveOnly, log); + } else { + const { pr, team, path, include, exclude, baseBranch } = flags; + await findAndRelocateModules( + { + prNumber: toOptString('prNumber', pr), + baseBranch: toOptString('baseBranch', baseBranch, 'main')!, + teams: toStringArray(team), + paths: toStringArray(path), + included: toStringArray(include), + excluded: toStringArray(exclude), + }, + log + ); + } + }, + { + log: { + defaultLevel: 'info', + }, + flags: { + string: ['pr', 'team', 'path', 'include', 'exclude', 'baseBranch', 'moveOnly'], + help: ` + Usage: node scripts/relocate [options] + + --moveOnly Only move the specified module in the current branch (no cleanup, no branching, no commit) + --pr Use the given PR number instead of creating a new one + --team Include all modules (packages and plugins) belonging to the specified owner (can specify multiple teams) + --path Include all modules (packages and plugins) under the specified path (can specify multiple paths) + --include Include the specified module in the relocation (can specify multiple modules) + --exclude Exclude the specified module from the relocation (can use multiple times) + --baseBranch Use a branch different than 'main' (e.g. "8.x") + + E.g. relocate all modules owned by Core team and also modules owned by Operations team, excluding 'foo-module-id'. Force push into PR 239847: + node scripts/relocate --pr 239847 --team @elastic/kibana-core --team @elastic/kibana-operations --exclude @kbn/foo-module-id + `, + }, + } + ); +}; diff --git a/packages/kbn-relocate/jest.config.js b/packages/kbn-relocate/jest.config.js new file mode 100644 index 0000000000000..f63ccebc0ab46 --- /dev/null +++ b/packages/kbn-relocate/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-relocate'], +}; diff --git a/packages/kbn-relocate/kibana.jsonc b/packages/kbn-relocate/kibana.jsonc new file mode 100644 index 0000000000000..bae4e5f6e9c60 --- /dev/null +++ b/packages/kbn-relocate/kibana.jsonc @@ -0,0 +1,6 @@ +{ + "type": "shared-server", + "id": "@kbn/relocate", + "owner": "@elastic/kibana-core", + "devOnly": true +} diff --git a/packages/kbn-relocate/package.json b/packages/kbn-relocate/package.json new file mode 100644 index 0000000000000..5091a883ce6a5 --- /dev/null +++ b/packages/kbn-relocate/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/relocate", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0" +} diff --git a/packages/kbn-relocate/relocate.ts b/packages/kbn-relocate/relocate.ts new file mode 100644 index 0000000000000..5852d8fb5be04 --- /dev/null +++ b/packages/kbn-relocate/relocate.ts @@ -0,0 +1,260 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { join } from 'path'; +import { existsSync } from 'fs'; +import { rename, mkdir, rm } from 'fs/promises'; +import inquirer from 'inquirer'; +import { orderBy } from 'lodash'; +import type { ToolingLog } from '@kbn/tooling-log'; +import { getPackages } from '@kbn/repo-packages'; +import { REPO_ROOT } from '@kbn/repo-info'; +import type { Package, PullRequest } from './types'; +import { DESCRIPTION, EXCLUDED_MODULES, KIBANA_FOLDER, NEW_BRANCH } from './constants'; +import { + belongsTo, + calculateModuleTargetFolder, + isInTargetFolder, + replaceReferences, + replaceRelativePaths, +} from './utils/relocate'; +import { safeExec } from './utils/exec'; +import { relocatePlan, relocateSummary } from './utils/logging'; +import { + checkoutBranch, + checkoutResetPr, + cherryPickManualCommits, + findGithubLogin, + findPr, + findRemoteName, + getManualCommits, +} from './utils/git'; + +const moveModule = async (module: Package, log: ToolingLog) => { + const destination = calculateModuleTargetFolder(module); + log.info(`Moving ${module.directory} to ${destination}`); + const chunks = destination.split('/'); + chunks.pop(); // discard module folder + if (existsSync(destination)) { + await rm(destination, { recursive: true }); + } + await mkdir(join('/', ...chunks), { recursive: true }); + await rename(module.directory, destination); + await replaceReferences(module, destination, log); + await replaceRelativePaths(module, destination, log); +}; + +const relocateModules = async (toMove: Package[], log: ToolingLog): Promise => { + let relocated: number = 0; + for (let i = 0; i < toMove.length; ++i) { + const module = toMove[i]; + + log.info(''); + log.info('--------------------------------------------------------------------------------'); + log.info(`\t${module.id} (${i + 1} of ${toMove.length})`); + log.info('--------------------------------------------------------------------------------'); + await moveModule(module, log); + + // after move operations + await safeExec('yarn kbn bootstrap'); + await safeExec('node scripts/build_plugin_list_docs'); + await safeExec('node scripts/generate codeowners'); + await safeExec('node scripts/lint_packages --fix'); + await safeExec('node scripts/eslint --no-cache --fix'); + await safeExec('node scripts/precommit_hook --fix'); + + // single commit per module now + await safeExec(`git add .`); + await safeExec(`git commit --no-verify -m "Relocating module \\\`${module.id}\\\`"`); + ++relocated; + } + return relocated; +}; + +interface FindModulesParams { + teams: string[]; + paths: string[]; + included: string[]; + excluded: string[]; +} + +export interface RelocateModulesParams { + baseBranch: string; + prNumber?: string; + teams: string[]; + paths: string[]; + included: string[]; + excluded: string[]; +} + +const findModules = ({ teams, paths, included, excluded }: FindModulesParams, log: ToolingLog) => { + // get all modules + const modules = getPackages(REPO_ROOT); + + // find modules selected by user filters + return orderBy( + modules + // exclude devOnly modules (they will remain in /packages) + .filter(({ manifest }) => !manifest.devOnly) + // exclude modules that do not specify a group + .filter(({ manifest }) => manifest.group) + // explicit exclusions + .filter(({ id }) => !EXCLUDED_MODULES.includes(id) && !excluded.includes(id)) + // we don't want to move test modules (just yet) + .filter( + ({ directory }) => + !directory.includes(`/${KIBANA_FOLDER}/test/`) && + !directory.includes(`/${KIBANA_FOLDER}/x-pack/test/`) + ) + // the module is under the umbrella specified by the user + .filter( + (module) => + included.includes(module.id) || + teams.some((team) => belongsTo(module, team)) || + paths.some((path) => module.directory.includes(path)) + ) + // the module is not explicitly excluded + .filter(({ id }) => !excluded.includes(id)) + // exclude modules that are in the correct folder + .filter((module) => !isInTargetFolder(module, log)) + ); +}; + +export const findAndMoveModule = async (moduleId: string, log: ToolingLog) => { + const modules = findModules({ teams: [], paths: [], included: [moduleId], excluded: [] }, log); + if (!modules.length) { + log.warning(`Cannot move ${moduleId}, either not found or not allowed!`); + } else { + await moveModule(modules[0], log); + } +}; + +export const findAndRelocateModules = async (params: RelocateModulesParams, log: ToolingLog) => { + const { prNumber, baseBranch, ...findParams } = params; + let pr: PullRequest | undefined; + + const upstream = await findRemoteName('elastic/kibana'); + if (!upstream) { + log.error( + 'This repository does not have a remote pointing to the elastic/kibana repository. Aborting' + ); + return; + } + + const origin = await findRemoteName(`${await findGithubLogin()}/kibana`); + if (!origin) { + log.error('This repository does not have a remote pointing to your Kibana fork. Aborting'); + return; + } + + const toMove = findModules(findParams, log); + if (!toMove.length) { + log.info( + `No packages match the specified filters. Please tune your '--path' and/or '--team' and/or '--include' flags` + ); + return; + } + + relocatePlan(toMove, log); + + const resConfirmPlan = await inquirer.prompt({ + type: 'confirm', + name: 'confirmPlan', + message: `The script will RESET CHANGES in this repository, relocate the modules above and update references. Proceed?`, + }); + + if (!resConfirmPlan.confirmPlan) { + log.info('Aborting'); + return; + } + + if (prNumber) { + pr = await findPr(prNumber); + + if (getManualCommits(pr.commits).length > 0) { + const resOverride = await inquirer.prompt({ + type: 'confirm', + name: 'overrideManualCommits', + message: 'Detected manual commits in the PR, do you want to override them?', + }); + if (!resOverride.overrideManualCommits) { + return; + } + } + } + + // start with a clean repo + await safeExec(`git restore --staged .`); + await safeExec(`git restore .`); + await safeExec(`git clean -f -d`); + await safeExec(`git checkout ${baseBranch} && git pull ${upstream} ${baseBranch}`); + + if (pr) { + // checkout existing PR, reset all commits, rebase from baseBranch + try { + await checkoutResetPr(pr, baseBranch); + } catch (error) { + log.error(`Error checking out / resetting PR #${prNumber}:`); + log.error(error); + return; + } + } else { + // checkout new branch + await checkoutBranch(NEW_BRANCH); + } + + // push changes in the branch + await inquirer.prompt({ + type: 'confirm', + name: 'readyRelocate', + message: `Ready to relocate! You can commit changes previous to the relocation at this point. Confirm to proceed with the relocation`, + }); + + // relocate modules + await safeExec(`yarn kbn bootstrap`); + const movedCount = await relocateModules(toMove, log); + + if (movedCount === 0) { + log.warning( + 'No modules were relocated, aborting operation to prevent force-pushing empty changes (this would close the existing PR!)' + ); + return; + } + + relocateSummary(log); + + if (pr) { + await cherryPickManualCommits(pr, log); + } + + // push changes in the branch + const resPushBranch = await inquirer.prompt({ + type: 'confirm', + name: 'pushBranch', + message: `Relocation finished! You can commit extra changes at this point. Confirm to proceed pushing the current branch`, + }); + + const pushCmd = prNumber + ? `git push --force-with-lease` + : `git push --set-upstream ${origin} ${NEW_BRANCH}`; + + if (!resPushBranch.pushBranch) { + log.info(`Remember to push changes with "${pushCmd}"`); + return; + } + await safeExec(pushCmd); + + if (prNumber) { + await safeExec(`gh pr edit ${prNumber} -F ${DESCRIPTION} -R elastic/kibana`); + log.info(`Access the PR at: https://github.com/elastic/kibana/pull/${prNumber}`); + } else { + log.info('TIP: Run the following command to quickly create a PR:'); + log.info(`$ gh pr create -d -t "" -F ${DESCRIPTION} -R elastic/kibana`); + } +}; diff --git a/packages/kbn-relocate/tsconfig.json b/packages/kbn-relocate/tsconfig.json new file mode 100644 index 0000000000000..cd11268486134 --- /dev/null +++ b/packages/kbn-relocate/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/dev-cli-runner", + "@kbn/repo-info", + "@kbn/repo-packages", + "@kbn/tooling-log", + ] +} diff --git a/packages/kbn-relocate/types.ts b/packages/kbn-relocate/types.ts new file mode 100644 index 0000000000000..2f030bb68ae7e --- /dev/null +++ b/packages/kbn-relocate/types.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export type { Package } from '@kbn/repo-packages'; + +export interface CommitAuthor { + login: string; +} + +export interface Commit { + oid: string; + messageHeadline: string; + authors: CommitAuthor[]; +} + +export interface PullRequest { + number: string; + commits: Commit[]; + headRefName: string; +} diff --git a/packages/kbn-relocate/utils/exec.ts b/packages/kbn-relocate/utils/exec.ts new file mode 100644 index 0000000000000..afd9391dfcab5 --- /dev/null +++ b/packages/kbn-relocate/utils/exec.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import util from 'util'; +import { exec } from 'child_process'; + +export const execAsync = util.promisify(exec); + +export const safeExec = async (command: string, critical = true, log = true) => { + try { + if (log) { + // eslint-disable-next-line no-console + console.log(' >', command); + } + const result = await execAsync(command, { maxBuffer: 1024 * 1024 * 128 }); + return result; + } catch (err) { + const message = `Error executing ${command}: ${err}`; + + if (critical) { + throw err; + } + return { stdout: '', stderr: message }; + } +}; + +export const quietExec = async (command: string) => { + return await safeExec(command, false, false); +}; diff --git a/packages/kbn-relocate/utils/git.ts b/packages/kbn-relocate/utils/git.ts new file mode 100644 index 0000000000000..0085e07fdd6b5 --- /dev/null +++ b/packages/kbn-relocate/utils/git.ts @@ -0,0 +1,181 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import inquirer from 'inquirer'; +import type { ToolingLog } from '@kbn/tooling-log'; +import type { Commit, PullRequest } from '../types'; +import { safeExec } from './exec'; + +export const findRemoteName = async (repo: string) => { + const res = await safeExec('git remote -v', true, false); + const remotes = res.stdout + .trim() + .split('\n') + .map((line) => line.split(/\t| /).filter(Boolean)) + .filter((chunks) => chunks.length >= 2); + return remotes.find( + ([, url]) => url.includes(`github.com/${repo}`) || url.includes(`github.com:${repo}`) + )?.[0]; +}; + +export const findGithubLogin = async () => { + const res = await safeExec('gh auth status', true, false); + // e.g. ✓ Logged in to github.com account gsoldevila (/Users/gsoldevila/.config/gh/hosts.yml) + const loginLine = res.stdout + .split('\n') + .find((line) => line.includes('Logged in')) + ?.split(/\t| /) + .filter(Boolean); + + return loginLine?.[loginLine?.findIndex((fragment) => fragment === 'account') + 1]; +}; + +export const findPr = async (number: string): Promise<PullRequest> => { + const res = await safeExec(`gh pr view ${number} --json commits,headRefName`); + return { ...JSON.parse(res.stdout), number }; +}; + +export const isManualCommit = (commit: Commit) => + !commit.messageHeadline.startsWith('Relocating module ') && + !commit.messageHeadline.startsWith('Moving modules owned by ') && + !commit.messageHeadline.startsWith('Merge branch ') && + commit.authors.some( + (author) => author.login !== 'kibanamachine' && author.login !== 'elasticmachine' + ); + +export function getManualCommits(commits: Commit[]) { + return commits.filter(isManualCommit); +} + +export async function getLastCommitMessage() { + return (await safeExec('git log -1 --pretty=%B')).stdout.split('\n')[0]; +} + +export async function resetAllCommits(numCommits: number) { + await safeExec(`git reset --hard HEAD~${numCommits}`); + + let msg = await getLastCommitMessage(); + while (msg.startsWith('Relocating module ')) { + await safeExec(`git reset --hard HEAD~1`); + msg = await getLastCommitMessage(); + } + await safeExec('git restore --staged .'); + await safeExec('git restore .'); + await safeExec('git clean -f -d'); +} + +export async function localBranchExists(branchName: string): Promise<boolean> { + const res = await safeExec('git branch -l'); + const branches = res.stdout + .split('\n') + .filter(Boolean) + .map((name) => name.trim()); + return branches.includes(branchName); +} + +async function deleteBranches(...branchNames: string[]) { + const res = await safeExec('git branch -l'); + const branches = res.stdout + .split('\n') + .filter(Boolean) + .map((branchName) => branchName.trim()); + + await Promise.all( + branchNames + .filter((toDelete) => branches.includes(toDelete)) + .map((toDelete) => safeExec(`git branch -D ${toDelete}`).catch(() => {})) + ); +} + +export const checkoutResetPr = async (pr: PullRequest, baseBranch: string) => { + // delete existing branch + await deleteBranches(pr.headRefName); + + // checkout the PR branch + await safeExec(`gh pr checkout ${pr.number}`); + await resetAllCommits(pr.commits.length); + await safeExec(`git rebase ${baseBranch}`); +}; + +export const checkoutBranch = async (branch: string) => { + // create a new branch / PR + if (await localBranchExists(branch)) { + throw new Error('The local branch already exists, aborting!'); + } else { + await safeExec(`git checkout -b ${branch}`); + } +}; + +export const cherryPickManualCommits = async (pr: PullRequest, log: ToolingLog) => { + const manualCommits = getManualCommits(pr.commits); + if (manualCommits.length) { + log.info(`Found manual commits on https://github.com/elastic/kibana/pull/${pr.number}/commits`); + + for (let i = 0; i < manualCommits.length; ++i) { + const { oid, messageHeadline, authors } = manualCommits[i]; + const url = `https://github.com/elastic/kibana/pull/${pr.number}/commits/${oid}`; + + const res = await inquirer.prompt({ + type: 'list', + choices: [ + { name: 'Yes, attempt to cherry-pick', value: 'yes' }, + { name: 'No, I will add it manually (press when finished)', value: 'no' }, + ], + name: 'cherryPick', + message: `Do you want to cherry pick '${messageHeadline}' (${authors[0].login})?`, + }); + + if (res.cherryPick === 'yes') { + try { + await safeExec(`git cherry-pick ${oid}`); + log.info(`Commit '${messageHeadline}' (${authors[0].login}) cherry-picked successfully!`); + } catch (error) { + log.info(`Error trying to cherry-pick: ${url}`); + log.error(error.message); + const res2 = await inquirer.prompt({ + type: 'list', + choices: [ + { name: 'Abort this cherry-pick', value: 'abort' }, + { name: 'Conflicts solved (git cherry-pick --continue)', value: 'continue' }, + { name: 'I solved the conflicts and commited', value: 'done' }, + ], + name: 'cherryPickFailed', + message: `Automatic cherry-pick failed, manual intervention required`, + }); + + if (res2.cherryPickFailed === 'abort') { + try { + await safeExec(`git cherry-pick --abort`); + log.warning( + 'Cherry-pick aborted, please review changes in that commit and apply them manually if needed!' + ); + } catch (error2) { + log.error( + 'Cherry-pick --abort failed, please cleanup your working tree before continuing!' + ); + } + } else if (res2.cherryPickFailed === 'continue') { + try { + await safeExec(`git cherry-pick --continue`); + log.info( + `Commit '${messageHeadline}' (${authors[0].login}) cherry-picked successfully!` + ); + } catch (error2) { + await inquirer.prompt({ + type: 'confirm', + name: 'cherryPickContinueFailed', + message: `Cherry pick --continue failed, please address conflicts AND COMMIT manually. Hit confirm when ready`, + }); + } + } + } + } + } + } +}; diff --git a/packages/kbn-relocate/utils/logging.ts b/packages/kbn-relocate/utils/logging.ts new file mode 100644 index 0000000000000..4aec07a1d9bf9 --- /dev/null +++ b/packages/kbn-relocate/utils/logging.ts @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { ToolingLog } from '@kbn/tooling-log'; +import { appendFileSync, writeFileSync } from 'fs'; +import dedent from 'dedent'; +import Table from 'cli-table3'; +import type { Package } from '../types'; +import { calculateModuleTargetFolder } from './relocate'; +import { + BASE_FOLDER, + DESCRIPTION, + GLOBAL_DESCRIPTION, + SCRIPT_ERRORS, + UPDATED_REFERENCES, + UPDATED_RELATIVE_PATHS, +} from '../constants'; + +export const createModuleTable = (entries: string[][]) => { + const table = new Table({ + head: ['Id', 'Target folder'], + colAligns: ['left', 'left'], + style: { + 'padding-left': 2, + 'padding-right': 2, + }, + }); + + table.push(...entries); + return table; +}; + +export const relocatePlan = (modules: Package[], log: ToolingLog) => { + const plugins = modules.filter((module) => module.manifest.type === 'plugin'); + const packages = modules.filter((module) => module.manifest.type !== 'plugin'); + + const target = (module: Package) => calculateModuleTargetFolder(module).replace(BASE_FOLDER, ''); + writeFileSync(DESCRIPTION, GLOBAL_DESCRIPTION); + + if (plugins.length) { + const pluginList = dedent` + \n\n#### ${plugins.length} plugin(s) are going to be relocated:\n + | Id | Target folder | + | -- | ------------- | + ${plugins.map((plg) => `| \`${plg.id}\` | \`${target(plg)}\` |`).join('\n')} + \n\n`; + + appendFileSync(DESCRIPTION, pluginList); + const plgTable = createModuleTable(plugins.map((plg) => [plg.id, target(plg)])); + log.info(`${plugins.length} plugin(s) are going to be relocated:\n${plgTable.toString()}`); + } + + if (packages.length) { + const packageList = dedent` + \n\n#### ${packages.length} packages(s) are going to be relocated:\n + | Id | Target folder | + | -- | ------------- | + ${packages.map((pkg) => `| \`${pkg.id}\` | \`${target(pkg)}\` |`).join('\n')} + \n\n`; + + appendFileSync(DESCRIPTION, packageList); + const pkgTable = createModuleTable(packages.map((pkg) => [pkg.id, target(pkg)])); + log.info(`${packages.length} packages(s) are going to be relocated:\n${pkgTable.toString()}`); + } +}; + +export const appendCollapsible = ( + fileName: string, + title: string, + contents: string, + open = false +) => { + appendFileSync( + fileName, + dedent` + <details ${open ? 'open' : ''}> + <summary>${title}</summary> + + \`\`\` + ${contents} + \`\`\` + + </details>` + ); +}; + +export const relocateSummary = (log: ToolingLog) => { + if (SCRIPT_ERRORS.length > 0) { + const contents = SCRIPT_ERRORS.sort().join('\n'); + appendCollapsible(DESCRIPTION, 'Script errors', contents, true); + log.warning(`Please address the following errors:\n${contents}`); + } + + if (UPDATED_REFERENCES.size > 0) { + const contents = Array.from(UPDATED_REFERENCES).sort().join('\n'); + appendCollapsible(DESCRIPTION, 'Updated references', contents); + log.info( + `The following files have been updated to replace references to modules:\n${contents}` + ); + } + + if (UPDATED_RELATIVE_PATHS.size > 0) { + const contents = Array.from(UPDATED_RELATIVE_PATHS) + .sort() + .map((ref) => ref.replace(BASE_FOLDER, '')) + .join('\n'); + appendCollapsible(DESCRIPTION, 'Updated relative paths', contents); + log.info(`The following files contain relative paths that have been updated:\n${contents}`); + } +}; diff --git a/packages/kbn-relocate/utils/relocate.ts b/packages/kbn-relocate/utils/relocate.ts new file mode 100644 index 0000000000000..2f2b6a78379e6 --- /dev/null +++ b/packages/kbn-relocate/utils/relocate.ts @@ -0,0 +1,238 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { join } from 'path'; +import type { ToolingLog } from '@kbn/tooling-log'; +import { orderBy } from 'lodash'; +import type { Package } from '../types'; +import { applyTransforms } from './transforms'; +import { + BASE_FOLDER, + BASE_FOLDER_DEPTH, + EXTENSIONS, + KIBANA_FOLDER, + NO_GREP, + SCRIPT_ERRORS, + TARGET_FOLDERS, + UPDATED_REFERENCES, + UPDATED_RELATIVE_PATHS, +} from '../constants'; +import { quietExec, safeExec } from './exec'; + +export const belongsTo = (module: Package, owner: string): boolean => { + return Array.from(module.manifest.owner)[0] === owner; +}; + +export const stripFirstChunk = (path: string): string => { + const chunks = path.split('/'); + chunks.shift(); + return chunks.join('/'); +}; + +export const calculateModuleTargetFolder = (module: Package): string => { + const group = module.manifest.group!; + const isPlugin = module.manifest.type === 'plugin'; + const fullPath = join(BASE_FOLDER, module.directory); + let moduleDelimiter = isPlugin ? '/plugins/' : '/packages/'; + + // for platform modules that are in a sustainable folder, strip the /private/ or /shared/ part too + if (module.directory.includes(`${moduleDelimiter}private/`)) { + moduleDelimiter += 'private/'; + } else if (module.directory.includes(`${moduleDelimiter}shared/`)) { + moduleDelimiter += 'shared/'; + } + + const chunks = fullPath.split(moduleDelimiter); + chunks.shift(); // remove the base path up to '/packages/' or '/plugins/' + const moduleFolder = chunks.join(moduleDelimiter); // in case there's an extra /packages/ or /plugins/ folder + + let path: string; + + if (group === 'platform') { + if (fullPath.includes(`/${KIBANA_FOLDER}/packages/core/`)) { + // packages/core/* => src/core/packages/* + path = join(BASE_FOLDER, 'src', 'core', 'packages', moduleFolder); + } else { + const isXpack = fullPath.includes(`/${KIBANA_FOLDER}/x-pack/`); + const visibility = module.manifest.visibility!; + + path = join( + BASE_FOLDER, + isXpack ? 'x-pack' : 'src', + group, + isPlugin ? 'plugins' : 'packages', + visibility, + moduleFolder + ); + } + } else { + path = join( + BASE_FOLDER, + 'x-pack', // all solution modules are 'x-pack' + 'solutions', + group, + isPlugin ? 'plugins' : 'packages', + moduleFolder + ); + } + + // after-creation transforms + return applyTransforms(module, path); +}; + +export const isInTargetFolder = (module: Package, log: ToolingLog): boolean => { + if (!module.group || !module.visibility) { + log.warning(`The module '${module.id}' is missing the group/visibility information`); + return true; + } + + const baseTargetFolders = TARGET_FOLDERS[`${module.group}:${module.visibility}`]; + const baseTargetFolder = baseTargetFolders.find((candidate) => { + return module.directory.includes(candidate); + }); + if (baseTargetFolder) { + log.info( + `The module ${module.id} is already in the correct folder: '${baseTargetFolder}'. Skipping` + ); + return true; + } + + return false; +}; + +export const replaceReferences = async (module: Package, destination: string, log: ToolingLog) => { + const dir = module.directory; + const source = + dir.startsWith(KIBANA_FOLDER) || dir.startsWith(`/${KIBANA_FOLDER}`) + ? join(BASE_FOLDER, dir) + : dir; + const relativeSource = source.replace(BASE_FOLDER, ''); + const relativeDestination = destination.replace(BASE_FOLDER, ''); + + if ( + (relativeSource.startsWith('src') && relativeDestination.startsWith('src')) || + (relativeSource.startsWith('x-pack') && relativeDestination.startsWith('x-pack')) + ) { + await replaceReferencesInternal( + stripFirstChunk(relativeSource), + stripFirstChunk(relativeDestination), + log + ); + } else { + await replaceReferencesInternal(relativeSource, relativeDestination, log); + } +}; + +const replaceReferencesInternal = async ( + relativeSource: string, + relativeDestination: string, + log: ToolingLog +) => { + log.info(`Finding and replacing "${relativeSource}" by "${relativeDestination}"`); + + const src = relativeSource.replaceAll('/', '\\/'); + const dst = relativeDestination.replaceAll('/', '\\/'); + + const result = await safeExec( + `grep -I -s -R -l ${EXTENSIONS.map((ext) => `--include="*.${ext}"`).join(' ')} \ + ${NO_GREP} "${relativeSource}"`, + false + ); + + const matchingFiles = result.stdout.split('\n').filter(Boolean); + matchingFiles.push('.github/CODEOWNERS'); // to update references in the manual section, thanks pgayvallet! + + for (let i = 0; i < matchingFiles.length; ++i) { + const file = matchingFiles[i]; + if (file.includes('/target/types/') || file.includes('/target/public/')) { + continue; + } + + const md5Before = (await quietExec(`md5 ${file} --quiet`)).stdout.trim(); + // if we are updating packages/cloud references, we must pay attention to not update packages/cloud_defend too + await safeExec(`sed -i '' -E "/${src}[\-_a-zA-Z0-9]/! s/${src}/${dst}/g" ${file}`, false); + const md5After = (await quietExec(`md5 ${file} --quiet`)).stdout.trim(); + + if (md5Before !== md5After) { + UPDATED_REFERENCES.add(file); + } + } + + // plugins\/pluginName special treatment (.buildkite/scripts/pipelines/pull_request/pipeline.ts) + const backFwdSrc = relativeSource.replaceAll('/', `\\\\\\/`); + const backFwdDst = relativeDestination.replaceAll('/', `\\\\\\/`); + await safeExec( + `sed -i '' -E '/${src}[\-_a-zA-Z0-9]/! s/${backFwdSrc}/${backFwdDst}/g' .buildkite/scripts/pipelines/pull_request/pipeline.ts`, + false + ); +}; + +const getRelativeDepth = (directory: string): number => { + const fullPath = directory.startsWith(BASE_FOLDER) ? directory : join(BASE_FOLDER, directory); + return fullPath.split('/').length - BASE_FOLDER_DEPTH; +}; + +export const replaceRelativePaths = async ( + module: Package, + destination: string, + log: ToolingLog +) => { + log.info('Updating relative paths at fault'); + + const relativeDepthBefore = getRelativeDepth(module.directory); + const relativeDepthAfter = getRelativeDepth(destination); + const relativeDepthDiff = relativeDepthAfter - relativeDepthBefore; + + const result = await safeExec( + `grep -I -s -R -n -o ${NO_GREP} -E "\\.\\.(/\\.\\.)+/?" ${destination}`, + false + ); + const matches = result.stdout.split('\n').filter(Boolean); + + const brokenReferences = orderBy( + matches + .map((line) => line.split(':')) + .map(([path, line, match]) => { + if (match.endsWith('/')) { + match = match.substring(0, match.length - 1); + } + let moduleRelativePath = path.replace(destination, ''); + if (moduleRelativePath.startsWith('/')) { + moduleRelativePath = moduleRelativePath.substring(1); + } + const moduleRelativeDepth = moduleRelativePath.split('/').length - 1; // do not count filename + const matchDepth = match.split('/').length; + + return { path, line, moduleRelativeDepth, match, matchDepth }; + }) + .filter(({ matchDepth, moduleRelativeDepth }) => matchDepth > moduleRelativeDepth), + 'matchDepth', + 'desc' + ); + + for (let i = 0; i < brokenReferences.length; ++i) { + const { path, line, match, matchDepth } = brokenReferences[i]; + + if (path.includes('/target/types/') || path.includes('/target/public/')) { + continue; + } + const pathLine = `${path}:${line}`; + + if (UPDATED_RELATIVE_PATHS.has(pathLine)) { + const message = `Cannot replace multiple occurrences of "${match}" in the same line, please fix manually:\t${pathLine}`; + SCRIPT_ERRORS.push(message); + } else { + const escapedMatch = match.replaceAll('/', '\\/').replaceAll('.', '\\.'); // escape '.' too (regexp any char) + const escapedReplacement = new Array(matchDepth + relativeDepthDiff).fill('..').join('\\/'); + + await safeExec(`sed -i '' "${line}s/${escapedMatch}/${escapedReplacement}/" ${path}`, false); + UPDATED_RELATIVE_PATHS.add(pathLine); + } + } +}; diff --git a/packages/kbn-relocate/utils/transforms.ts b/packages/kbn-relocate/utils/transforms.ts new file mode 100644 index 0000000000000..ed584abeb55ab --- /dev/null +++ b/packages/kbn-relocate/utils/transforms.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { Package } from '../types'; + +type TransformFunction = (param: string) => string; +const TRANSFORMS: Record<string, string | TransformFunction> = { + 'x-pack/solutions/security/packages/security-solution/': 'x-pack/solutions/security/packages/', + 'x-pack/solutions/observability/plugins/observability_solution/': + 'x-pack/solutions/observability/plugins/', + 'x-pack/solutions/observability/packages/observability/': + 'x-pack/solutions/observability/packages/', + 'src/core/packages/core/': (path: string) => { + const relativePath = path.split('src/core/packages/')[1]; + const relativeChunks = relativePath.split('/'); + const packageName = relativeChunks.pop(); + const unneededPrefix = relativeChunks.join('-') + '-'; + + // strip the spare /core/ folder + path = path.replace('src/core/packages/core/', 'src/core/packages/'); + + if (packageName?.startsWith(unneededPrefix)) { + return path.replace(unneededPrefix, ''); + } else { + return path; + } + }, +}; +export const applyTransforms = (module: Package, path: string): string => { + const transform = Object.entries(TRANSFORMS).find(([what]) => path.includes(what)); + if (!transform) { + return path; + } else { + const [what, by] = transform; + if (typeof by === 'function') { + return by(path); + } else if (typeof by === 'string') { + return path.replace(what, by); + } else { + throw new Error('Invalid transform function', by); + } + } +}; diff --git a/packages/kbn-scout-reporting/src/reporting/playwright.ts b/packages/kbn-scout-reporting/src/reporting/playwright.ts index f50b25bab83d3..98ad6655626ae 100644 --- a/packages/kbn-scout-reporting/src/reporting/playwright.ts +++ b/packages/kbn-scout-reporting/src/reporting/playwright.ts @@ -24,9 +24,9 @@ import { SCOUT_REPORT_OUTPUT_ROOT } from '@kbn/scout-info'; import stripANSI from 'strip-ansi'; import { REPO_ROOT } from '@kbn/repo-info'; import { - type PathWithOwners, - getPathsWithOwnersReversed, - getCodeOwnersForFile, + type CodeOwnersEntry, + getCodeOwnersEntries, + getOwningTeamsForPath, } from '@kbn/code-owners'; import { generateTestRunId, getTestIDForTitle, ScoutReport, ScoutReportEventAction } from '.'; import { environmentMetadata } from '../datasources'; @@ -47,7 +47,7 @@ export class ScoutPlaywrightReporter implements Reporter { readonly name: string; readonly runId: string; private report: ScoutReport; - private readonly pathsWithOwners: PathWithOwners[]; + private readonly codeOwnersEntries: CodeOwnersEntry[]; constructor(private reporterOptions: ScoutPlaywrightReporterOptions = {}) { this.log = new ToolingLog({ @@ -60,20 +60,11 @@ export class ScoutPlaywrightReporter implements Reporter { this.log.info(`Scout test run ID: ${this.runId}`); this.report = new ScoutReport(this.log); - this.pathsWithOwners = getPathsWithOwnersReversed(); + this.codeOwnersEntries = getCodeOwnersEntries(); } private getFileOwners(filePath: string): string[] { - const concatenatedOwners = getCodeOwnersForFile(filePath, this.pathsWithOwners)?.teams; - - if (concatenatedOwners === undefined) { - return []; - } - - return concatenatedOwners - .replace(/#.+$/, '') - .split(',') - .filter((value) => value.length > 0); + return getOwningTeamsForPath(filePath, this.codeOwnersEntries); } /** diff --git a/packages/kbn-scout/README.md b/packages/kbn-scout/README.md index 4449bdf966200..b5e64416d4ed2 100644 --- a/packages/kbn-scout/README.md +++ b/packages/kbn-scout/README.md @@ -1,9 +1,258 @@ # @kbn/scout -The package is designed to streamline the setup and execution of Playwright tests for Kibana. It consolidates server management and testing capabilities by wrapping both the Kibana/Elasticsearch server launcher and the Playwright test runner. It includes: +`kbn-scout` is a modern test framework for Kibana. It uses Playwright for UI integration tests. Its primary goal is to enhance the developer experience by offering a lightweight and flexible testing solution to create UI tests next to the plugin source code. This README explains the structure of the `kbn-scout` package and provides an overview of its key components. - - core test and worker-scoped fixtures for reliable setup across test suites - - page objects combined into the fixture for for core Kibana apps UI interactions - - configurations for seamless test execution in both local and CI environments +### Table of Contents -This package aims to simplify test setup and enhance modularity, making it easier to create, run, and maintain deployment-agnostic tests, that are located in the plugin they actually test. +1. Overview +2. Folder Structure +3. Key Components +4. How to Use +5. Contributing + +### Overview + +The `kbn-scout` framework provides: + +- **Ease of integration:** a simplified mechanism to write and run tests closer to plugins. +- **Deployment-agnostic tests:** enables the testing of Kibana features across different environments (e.g., Stateful, Serverless). +- **Fixture-based design:** built on Playwright's fixture model to modularize and standardize test setup. +- **Focus on Developer Productivity:** faster test execution and minimal boilerplate for writing tests. + +### Folder Structure + +The `kbn-scout` structure includes the following key directories and files: + +``` +packages/kbn-scout/ +├── src/ +│ ├── cli/ +│ ├── common/ +│ │ ├── services/ +│ │ ├── utils/ +│ ├── config/ +│ │ ├── loader/ +│ │ ├── schema/ +│ │ └── serverless/ +│ │ └── stateful/ +│ │ └── config.ts +│ ├── playwright/ +│ │ ├── config/ +│ │ └── fixtures +│ │ │ └── test/ +│ │ │ └── worker/ +│ │ └── page_objects/ +│ │ └── runner +│ │ │ └── config_validator.ts +│ │ │ └── run_tests.ts +│ ├── servers/ +│ │ ├── run_elasticsearch.ts +│ │ └── run_kibana_server.ts +│ │ └── start_servers.ts +│ ├── types/ +│ └── index.ts +├── package.json +├── tsconfig.json +``` + +### Key Components + +1. **src/cli/** + +Contains the logic to start servers, with or without running tests. It is accessed through the `scripts/scout` script. + +2. **src/common/** + +`services` directory includes test helpers used across UI and API integration tests, such as Kibana and Elasticsearch `clients`, `esArchiver`, and `samlSessionManager`. These services are used to initialize instances and expose them to tests via Playwright worker fixtures. + +3. **src/config/** + +`config` directory holds configurations for running servers locally. `serverless` and `stateful` directories contain deployment-specific configurations. Configuration attributes are defined in `schema` directory. +The `Config` class in config.ts serves as the main entry point. It is instantiated using the config loader in +the `loader` directory. This instance is compatible with the `kbn-test` input format and is passed to functions +for starting servers. + +4. **src/playwright/** + +#### Config + +`playwright` directory manages the default Playwright configuration. It exports the `createPlaywrightConfig` function, which is used by Kibana plugins to define Scout playwright configurations and serves as the entry point to run tests. + +```ts +import { createPlaywrightConfig } from '@kbn/scout'; + +// eslint-disable-next-line import/no-default-export +export default createPlaywrightConfig({ + testDir: './tests', + workers: 2, +}); +``` + +Scout relies on configuration to determine the test files and opt-in [parallel test execution](https://playwright.dev/docs/test-parallel) against the single Elastic cluster. + +The Playwright configuration should only be created this way to ensure compatibility with Scout functionality. For configuration +verification, we use a marker `VALID_CONFIG_MARKER`, and Scout will throw an error if the configuration is invalid. + +#### Fixtures + +The `fixtures` directory contains core Scout capabilities required for testing the majority of Kibana plugins. [Fixtures](https://playwright.dev/docs/test-fixtures) can be +scoped to either `test` or `worker`. Scope decides when to init a new fixture instance: once per worker or for every test function. It is important to choose the correct scope to keep test execution optimally fast: if **a new instance is not needed for every test**, the fixture should be scoped to **worker**. Otherwise, it should be scoped to **test**. + +**Core `worker` scoped fixtures:** +- `log` +- `config` +- `esClient` +- `kbnClient` +- `esArchiver` +- `samlAuth` + +```ts + test.beforeAll(async ({ kbnClient }) => { + await kbnClient.importExport.load(testData.KBN_ARCHIVES.ECOMMERCE); + }); +``` + +**Core `test` scoped fixtures:** +- `browserAuth` +- `pageObjects` +- `page` + +```ts + test.beforeEach(async ({ browserAuth }) => { + await browserAuth.loginAsViewer(); + }); +``` + +If a new fixture depends on a fixture with a `test` scope, it must also be `test` scoped. + +#### Page Objects + +The `page_objects` directory contains all the Page Objects that represent Platform core functionality such as Discover, Dashboard, Index Management, etc. + +If a Page Object is likely to be used in more than one plugin, it should be added here. This allows other teams to reuse it, improving collaboration across teams, reducing code duplication, and simplifying support and adoption. + +Page Objects must be registered with the `createLazyPageObject` function, which guarantees its instance is lazy-initialized. This way, we can have all the page objects available in the test context, but only the ones that are called will be actually initialized: + +```ts +export function createCorePageObjects(page: ScoutPage): PageObjects { + return { + dashboard: createLazyPageObject(DashboardApp, page), + discover: createLazyPageObject(DiscoverApp, page), + // Add new page objects here + }; +} +``` + +All registered Page Objects are available via the `pageObjects` fixture: + +```ts +test.beforeEach(async ({ pageObjects }) => { + await pageObjects.discover.goto(); +}); +``` + +5. **src/servers/** + +Here we have logic to start Kibana and Elasticsearch servers using `kbn-test` functionality in Scout flavor. +The instance of the `Config` class is passed to start servers for the specific deployment type. The `loadServersConfig` function not only returns a `kbn-test` compatible config instance, but also converts it to `ScoutServiceConfig` format and saves it on disk to `./scout/servers/local.json` in the Kibana root directory. Scout `config` fixture reads it and expose to UI tests. + +### How to Use + +#### Starting Servers Only + +To start the servers without running tests, use the following command: + +```bash +node scripts/scout.js start-server [--stateful|--serverless=[es|oblt|security]] +``` + +This is useful for manual testing or running tests via an IDE. + +#### Running Servers and Tests + +To start the servers and run tests, use: + +```bash +node scripts/scout.js run-tests [--stateful|--serverless=[es|oblt|security]] --config <plugin-path>/ui_tests/playwright.config.ts +``` + +This command starts the required servers and then automatically executes the tests using Playwright. + +#### Running Tests Separately + +If the servers are already running, you can execute tests independently using either: + +- Playwright Plugin in IDE: Run tests directly within your IDE using Playwright's integration. +- Command Line: Use the following command to run tests: + +```bash +npx playwright test --config <plugin-path>/ui_tests/playwright.config.ts +``` + +### Contributing + +We welcome contributions to improve and extend `kbn-scout`. This guide will help you get started, add new features, and align with existing project standards. + +#### Setting Up the Environment + +Ensure you have the latest local copy of the Kibana repository. + +Install dependencies by running the following commands: +- `yarn kbn bootstrap` to install dependencies. +- `node scripts/build_kibana_platform_plugins.js` to build plugins. + +Move to the `packages/kbn-scout` directory to begin development. + +#### Adding or Modifying Features + +Contributions to sharable fixtures and page objects are highly encouraged to promote reusability, stability, and ease of adoption. Follow these steps: + +Create a New Page Object: Add your Page Object to the `src/playwright/page_objects` directory. For instance: + +#### Adding Page Objects + +1. **Create a New Page Object:** Add your Page Object to the src/playwright/page_objects directory. For instance: + +```ts +export class NewPage { + constructor(private readonly page: ScoutPage) {} + + // implementation +} +``` +2. **Register the Page Object:** Update the index file to include the new Page Object: +```ts +export function createCorePageObjects(page: ScoutPage): PageObjects { + return { + ... + newPage: createLazyPageObject(NewPage, page), + }; +} +``` +#### Adding Fixtures +1. **Determine Fixture Scope:** Decide if your fixture should apply to the `test` (per-test) or `worker` (per-worker) scope. + +2. **Implement the Fixture:** Add the implementation to `src/playwright/fixtures/test` or `src/playwright/fixtures/worker`. + +```ts +export const newTestFixture = base.extend<ScoutTestFixtures, ScoutWorkerFixtures>({ + newFixture: async ({}, use) => { + const myFn = // implementation + await use(myFn); + // optionally, cleanup on test completion + }, +}); +``` +3. **Register the Fixture:** Add the fixture to the appropriate scope: +```ts +export const scoutTestFixtures = mergeTests( + ... + newTestFixture, +); +``` + +#### Best Practices +- **Reusable Code:** When creating Page Objects or Fixtures that apply to more than one plugin, ensure they are added to the kbn-scout package. +- **Adhere to Existing Structure:** Maintain consistency with the project's architecture. +- **Add Unit Tests:** Include tests for new logic where applicable, ensuring it works as expected. +- **Playwright documentation:** [Official best practices](https://playwright.dev/docs/best-practices) diff --git a/packages/kbn-scout/index.ts b/packages/kbn-scout/index.ts index 5cb95662f4228..733d0bae1ecd1 100644 --- a/packages/kbn-scout/index.ts +++ b/packages/kbn-scout/index.ts @@ -8,7 +8,7 @@ */ export * as cli from './src/cli'; -export { expect, test, createPlaywrightConfig, createLazyPageObject } from './src/playwright'; +export { expect, test, tags, createPlaywrightConfig, createLazyPageObject } from './src/playwright'; export type { ScoutPage, ScoutPlaywrightOptions, diff --git a/packages/kbn-scout/src/config/loader/config_load.ts b/packages/kbn-scout/src/config/loader/config_load.ts index 5ef4b88b4cf1a..c7e6b197d6a28 100644 --- a/packages/kbn-scout/src/config/loader/config_load.ts +++ b/packages/kbn-scout/src/config/loader/config_load.ts @@ -8,10 +8,16 @@ */ import path from 'path'; -import { ToolingLog } from '@kbn/tooling-log'; import { Config } from '../config'; -export const loadConfig = async (configPath: string, log: ToolingLog): Promise<Config> => { +/** + * Dynamically loads server configuration file in the "kbn-scout" framework. It reads + * and validates the configuration file, ensuring the presence of essential servers + * information required to initialize the testing environment. + * @param configPath Path to the configuration file to be loaded. + * @returns Config instance that is used to start local servers + */ +export const loadConfig = async (configPath: string): Promise<Config> => { try { const absolutePath = path.resolve(configPath); const configModule = await import(absolutePath); diff --git a/packages/kbn-scout/src/config/serverless/es.serverless.config.ts b/packages/kbn-scout/src/config/serverless/es.serverless.config.ts index 89e27b4e877e0..0ae2c7e6f0b3f 100644 --- a/packages/kbn-scout/src/config/serverless/es.serverless.config.ts +++ b/packages/kbn-scout/src/config/serverless/es.serverless.config.ts @@ -17,6 +17,7 @@ export const servers: ScoutLoaderConfig = { serverArgs: [...defaultConfig.esTestCluster.serverArgs], }, kbnTestServer: { + ...defaultConfig.kbnTestServer, serverArgs: [ ...defaultConfig.kbnTestServer.serverArgs, '--serverless=es', diff --git a/packages/kbn-scout/src/config/serverless/oblt.serverless.config.ts b/packages/kbn-scout/src/config/serverless/oblt.serverless.config.ts index 3f283f140479e..08eb4d9d7cf55 100644 --- a/packages/kbn-scout/src/config/serverless/oblt.serverless.config.ts +++ b/packages/kbn-scout/src/config/serverless/oblt.serverless.config.ts @@ -22,6 +22,7 @@ export const servers: ScoutLoaderConfig = { ], }, kbnTestServer: { + ...defaultConfig.kbnTestServer, serverArgs: [ ...defaultConfig.kbnTestServer.serverArgs, '--serverless=oblt', diff --git a/packages/kbn-scout/src/config/serverless/security.serverless.config.ts b/packages/kbn-scout/src/config/serverless/security.serverless.config.ts index f1fa4f53f8988..289790a9ffeb1 100644 --- a/packages/kbn-scout/src/config/serverless/security.serverless.config.ts +++ b/packages/kbn-scout/src/config/serverless/security.serverless.config.ts @@ -20,6 +20,7 @@ export const servers: ScoutLoaderConfig = { ], }, kbnTestServer: { + ...defaultConfig.kbnTestServer, serverArgs: [ ...defaultConfig.kbnTestServer.serverArgs, '--serverless=security', diff --git a/packages/kbn-scout/src/config/serverless/serverless.base.config.ts b/packages/kbn-scout/src/config/serverless/serverless.base.config.ts index 8b4852f9c9e62..a20a0c3bbe7a7 100644 --- a/packages/kbn-scout/src/config/serverless/serverless.base.config.ts +++ b/packages/kbn-scout/src/config/serverless/serverless.base.config.ts @@ -80,6 +80,11 @@ export const defaultConfig: ScoutLoaderConfig = { 'xpack.security.authc.realms.jwt.jwt1.order=-98', `xpack.security.authc.realms.jwt.jwt1.pkc_jwkset_path=${getDockerFileMountPath(JWKS_PATH)}`, `xpack.security.authc.realms.jwt.jwt1.token_type=access_token`, + 'serverless.indices.validate_dot_prefixes=true', + // controller cluster-settings + `cluster.service.slow_task_logging_threshold=15s`, + `cluster.service.slow_task_thread_dump_timeout=5s`, + `serverless.search.enable_replicas_for_instant_failover=true`, ], ssl: true, // SSL is required for SAML realm }, @@ -136,7 +141,15 @@ export const defaultConfig: ScoutLoaderConfig = { // This ensures that we register the Security SAML API endpoints. // In the real world the SAML config is injected by control plane. `--plugin-path=${SAML_IDP_PLUGIN_PATH}`, + '--xpack.cloud.base_url=https://fake-cloud.elastic.co', + '--xpack.cloud.billing_url=/billing/overview/', + '--xpack.cloud.deployments_url=/deployments', '--xpack.cloud.id=ftr_fake_cloud_id', + '--xpack.cloud.organization_url=/account/', + '--xpack.cloud.profile_url=/user/settings/', + '--xpack.cloud.projects_url=/projects/', + '--xpack.cloud.serverless.project_id=fakeprojectid', + '--xpack.cloud.users_and_roles_url=/account/members/', // Ensure that SAML is used as the default authentication method whenever a user navigates to Kibana. In other // words, Kibana should attempt to authenticate the user using the provider with the lowest order if the Login // Selector is disabled (which is how Serverless Kibana is configured). By declaring `cloud-basic` with a higher diff --git a/packages/kbn-scout/src/config/utils.ts b/packages/kbn-scout/src/config/utils.ts index d15e0e094b2db..38c65f1573b04 100644 --- a/packages/kbn-scout/src/config/utils.ts +++ b/packages/kbn-scout/src/config/utils.ts @@ -16,6 +16,7 @@ import { SCOUT_SERVERS_ROOT } from '@kbn/scout-info'; import { CliSupportedServerModes, ScoutServerConfig } from '../types'; import { getConfigFilePath } from './get_config_file'; import { loadConfig } from './loader/config_load'; +import type { Config } from './config'; export const formatCurrentDate = () => { const now = new Date(); @@ -29,6 +30,11 @@ export const formatCurrentDate = () => { ); }; +/** + * Saves Scout server configuration to the disk. + * @param testServersConfig configuration to be saved + * @param log Logger instance to report errors or debug information. + */ const saveTestServersConfigOnDisk = (testServersConfig: ScoutServerConfig, log: ToolingLog) => { const configFilePath = path.join(SCOUT_SERVERS_ROOT, `local.json`); @@ -48,16 +54,26 @@ const saveTestServersConfigOnDisk = (testServersConfig: ScoutServerConfig, log: } }; -export async function loadServersConfig(mode: CliSupportedServerModes, log: ToolingLog) { +/** + * Loads server configuration based on the mode, creates "kbn-test" compatible Config + * instance, that can be used to start local servers and saves its "Scout"-format copy + * to the disk. + * @param mode server local run mode + * @param log Logger instance to report errors or debug information. + * @returns "kbn-test" compatible Config instance + */ +export async function loadServersConfig( + mode: CliSupportedServerModes, + log: ToolingLog +): Promise<Config> { // get path to one of the predefined config files const configPath = getConfigFilePath(mode); // load config that is compatible with kbn-test input format - const config = await loadConfig(configPath, log); + const config = await loadConfig(configPath); // construct config for Playwright Test const scoutServerConfig = config.getTestServersConfig(); // save test config to the file saveTestServersConfigOnDisk(scoutServerConfig, log); - return config; } diff --git a/packages/kbn-scout/src/playwright/fixtures/test/browser_auth.ts b/packages/kbn-scout/src/playwright/fixtures/test/browser_auth.ts index 5faa1b5392d96..11c2d97b06673 100644 --- a/packages/kbn-scout/src/playwright/fixtures/test/browser_auth.ts +++ b/packages/kbn-scout/src/playwright/fixtures/test/browser_auth.ts @@ -14,6 +14,11 @@ import { serviceLoadedMsg } from '../../utils'; type LoginFunction = (role: string) => Promise<void>; +/** + * The "browserAuth" fixture simplifies the process of logging into Kibana with + * different roles during tests. It uses the "samlAuth" fixture to create an authentication session + * for the specified role and the "context" fixture to update the cookie with the role-scoped session. + */ export const browserAuthFixture = base.extend<{ browserAuth: LoginFixture }, ScoutWorkerFixtures>({ browserAuth: async ({ log, context, samlAuth, config }, use) => { const setSessionCookie = async (cookieValue: string) => { diff --git a/packages/kbn-scout/src/playwright/fixtures/test/index.ts b/packages/kbn-scout/src/playwright/fixtures/test/index.ts index 41bfedcf39dc7..3e2ea85b90bc3 100644 --- a/packages/kbn-scout/src/playwright/fixtures/test/index.ts +++ b/packages/kbn-scout/src/playwright/fixtures/test/index.ts @@ -11,9 +11,11 @@ import { mergeTests } from '@playwright/test'; import { browserAuthFixture } from './browser_auth'; import { scoutPageFixture } from './page'; import { pageObjectsFixture } from './page_objects'; +import { validateTagsFixture } from './validate_tags'; export const scoutTestFixtures = mergeTests( browserAuthFixture, scoutPageFixture, - pageObjectsFixture + pageObjectsFixture, + validateTagsFixture ); diff --git a/packages/kbn-scout/src/playwright/fixtures/test/page_objects.ts b/packages/kbn-scout/src/playwright/fixtures/test/page_objects.ts index ed142b48b3f9a..06be362294432 100644 --- a/packages/kbn-scout/src/playwright/fixtures/test/page_objects.ts +++ b/packages/kbn-scout/src/playwright/fixtures/test/page_objects.ts @@ -11,6 +11,14 @@ import { test as base } from '@playwright/test'; import { ScoutTestFixtures, ScoutWorkerFixtures } from '../types'; import { createCorePageObjects } from '../../page_objects'; +/** + * The "pageObjects" fixture provides a centralized and consistent way to access and + * interact with reusable Page Objects in tests. This fixture automatically + * initializes core Page Objects and makes them available to tests, promoting + * modularity and reducing redundant setup. + * + * Note: Page Objects are lazily instantiated on first access. + */ export const pageObjectsFixture = base.extend<ScoutTestFixtures, ScoutWorkerFixtures>({ pageObjects: async ({ page }, use) => { const corePageObjects = createCorePageObjects(page); diff --git a/packages/kbn-scout/src/playwright/fixtures/test/validate_tags.ts b/packages/kbn-scout/src/playwright/fixtures/test/validate_tags.ts new file mode 100644 index 0000000000000..1866935440e1a --- /dev/null +++ b/packages/kbn-scout/src/playwright/fixtures/test/validate_tags.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { test as base } from '@playwright/test'; +import { tags } from '../../tags'; + +const supportedTags = tags.DEPLOYMENT_AGNOSTIC; + +export const validateTagsFixture = base.extend<{ validateTags: void }>({ + validateTags: [ + async ({}, use, testInfo) => { + if (testInfo.tags.length === 0) { + throw new Error(`At least one tag is required: ${supportedTags.join(', ')}`); + } + + const invalidTags = testInfo.tags.filter((tag: string) => !supportedTags.includes(tag)); + if (invalidTags.length > 0) { + throw new Error( + `Unsupported tag(s) found in test suite "${testInfo.title}": ${invalidTags.join( + ', ' + )}. ` + `Supported tags are: ${supportedTags.join(', ')}.` + ); + } + + await use(); + }, + { auto: true }, + ], +}); diff --git a/packages/kbn-scout/src/playwright/fixtures/types/test_scope.ts b/packages/kbn-scout/src/playwright/fixtures/types/test_scope.ts index 4ff7fc18cd6f2..13a3c3ebaed83 100644 --- a/packages/kbn-scout/src/playwright/fixtures/types/test_scope.ts +++ b/packages/kbn-scout/src/playwright/fixtures/types/test_scope.ts @@ -17,8 +17,20 @@ export interface ScoutTestFixtures { } export interface LoginFixture { + /** + * Logs in as a user with viewer-only permissions. + * @returns A Promise that resolves once the cookie in browser is set. + */ loginAsViewer: () => Promise<void>; + /** + * Logs in as a user with administrative privileges + * @returns A Promise that resolves once the cookie in browser is set. + */ loginAsAdmin: () => Promise<void>; + /** + * Logs in as a user with elevated, but not admin, permissions. + * @returns A Promise that resolves once the cookie in browser is set. + */ loginAsPrivilegedUser: () => Promise<void>; } diff --git a/packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts b/packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts index 20908a566abb2..c42f7143d3191 100644 --- a/packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts +++ b/packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts @@ -18,6 +18,13 @@ import { ScoutServerConfig } from '../../../types'; import { KibanaUrl } from '../../../common/services/kibana_url'; export interface EsArchiverFixture { + /** + * Loads an Elasticsearch archive if the specified data index is not present. + * @param name The name of the archive to load. + * @param performance An object of type LoadActionPerfOptions to measure and + * report performance metrics during the load operation. + * @returns A Promise that resolves to an object containing index statistics. + */ loadIfNeeded: ( name: string, performance?: LoadActionPerfOptions | undefined @@ -25,11 +32,30 @@ export interface EsArchiverFixture { } export interface UiSettingsFixture { + /** + * Applies one or more UI settings + * @param values (UiSettingValues): An object containing key-value pairs of UI settings to apply. + * @returns A Promise that resolves once the settings are applied. + */ set: (values: UiSettingValues) => Promise<void>; + /** + * Resets specific UI settings to their default values. + * @param values A list of UI setting keys to unset. + * @returns A Promise that resolves after the settings are unset. + */ unset: (...values: string[]) => Promise<any>; + /** + * Sets the default time range for Kibana. + * @from The start time of the default time range. + * @to The end time of the default time range. + * @returns A Promise that resolves once the default time is set. + */ setDefaultTime: ({ from, to }: { from: string; to: string }) => Promise<void>; } +/** + * The `ScoutWorkerFixtures` type defines the set of fixtures that are available + */ export interface ScoutWorkerFixtures { log: ToolingLog; config: ScoutServerConfig; diff --git a/packages/kbn-scout/src/playwright/fixtures/worker/core.ts b/packages/kbn-scout/src/playwright/fixtures/worker/core.ts index 359a779b05fc7..9f90f71d9c276 100644 --- a/packages/kbn-scout/src/playwright/fixtures/worker/core.ts +++ b/packages/kbn-scout/src/playwright/fixtures/worker/core.ts @@ -22,7 +22,16 @@ import { import { ScoutWorkerFixtures } from '../types/worker_scope'; import { ScoutTestOptions } from '../../types'; +/** + * The coreWorkerFixtures setup defines foundational fixtures that are essential + * for running tests in the "kbn-scout" framework. These fixtures provide reusable, + * scoped resources for each Playwright worker, ensuring that tests have consistent + * and isolated access to critical services such as logging, configuration, and + * clients for interacting with Kibana and Elasticsearch. + */ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ + // Provides a scoped logger instance for each worker. This logger is shared across + // all other fixtures within the worker scope. log: [ ({}, use) => { use(createLogger()); @@ -30,6 +39,11 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Loads the test server configuration from the source file based on local or cloud + * target, located by default in '.scout/servers' directory. It supplies Playwright + * with all server-related information including hosts, credentials, type of deployment, etc. + */ config: [ ({ log }, use, testInfo) => { const configName = 'local'; @@ -42,6 +56,10 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Generates and exposes a Kibana URL object based on the configuration, allowing tests + * and fixtures to programmatically construct and validate URLs. + */ kbnUrl: [ ({ config, log }, use) => { use(createKbnUrl(config, log)); @@ -49,6 +67,9 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Instantiates an Elasticsearch client, enabling API-level interactions with ES. + */ esClient: [ ({ config, log }, use) => { use(createEsClient(config, log)); @@ -56,6 +77,9 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Creates a Kibana client, enabling API-level interactions with Kibana. + */ kbnClient: [ ({ log, config }, use) => { use(createKbnClient(config, log)); @@ -63,10 +87,17 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Provides utilities for managing test data in Elasticsearch. The "loadIfNeeded" method + * optimizes test execution by loading data archives only if required, avoiding redundant + * data ingestion. + * + * Note: In order to speedup test execution and avoid the overhead of deleting the data + * we only expose capability to ingest the data indexes. + */ esArchiver: [ ({ log, esClient, kbnClient }, use) => { const esArchiverInstance = createEsArchiver(esClient, kbnClient, log); - // to speedup test execution we only allow to ingest the data indexes and only if index doesn't exist const loadIfNeeded = async (name: string, performance?: LoadActionPerfOptions | undefined) => esArchiverInstance!.loadIfNeeded(name, performance); @@ -75,6 +106,13 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Creates a SAML session manager, that handles authentication tasks for tests involving + * SAML-based authentication. + * + * Note: In order to speedup execution of tests, we cache the session cookies for each role + * after first call. + */ samlAuth: [ ({ log, config }, use) => { use(createSamlSessionManager(config, log)); diff --git a/packages/kbn-scout/src/playwright/fixtures/worker/ui_settings.ts b/packages/kbn-scout/src/playwright/fixtures/worker/ui_settings.ts index 989f7ce436616..20fa59da9aba7 100644 --- a/packages/kbn-scout/src/playwright/fixtures/worker/ui_settings.ts +++ b/packages/kbn-scout/src/playwright/fixtures/worker/ui_settings.ts @@ -12,6 +12,9 @@ import { UiSettingValues } from '@kbn/test/src/kbn_client/kbn_client_ui_settings import { ScoutWorkerFixtures } from '../types'; import { isValidUTCDate, formatTime } from '../../utils'; +/** + * This fixture provides a way to interact with Kibana UI settings. + */ export const uiSettingsFixture = base.extend<{}, ScoutWorkerFixtures>({ uiSettings: [ ({ kbnClient }, use) => { diff --git a/packages/kbn-scout/src/playwright/index.ts b/packages/kbn-scout/src/playwright/index.ts index 5294274c41bc5..0a82bc0468fce 100644 --- a/packages/kbn-scout/src/playwright/index.ts +++ b/packages/kbn-scout/src/playwright/index.ts @@ -25,3 +25,6 @@ export type { ScoutPage, EsArchiverFixture, } from './fixtures'; + +// use to tag tests +export { tags } from './tags'; diff --git a/packages/kbn-scout/src/playwright/runner/run_tests.ts b/packages/kbn-scout/src/playwright/runner/run_tests.ts index a5d8aa137dbfd..766209f169963 100644 --- a/packages/kbn-scout/src/playwright/runner/run_tests.ts +++ b/packages/kbn-scout/src/playwright/runner/run_tests.ts @@ -18,12 +18,14 @@ import { loadServersConfig } from '../../config'; import { silence } from '../../common'; import { RunTestsOptions } from './flags'; import { getExtraKbnOpts } from '../../servers/run_kibana_server'; +import { getPlaywrightGrepTag } from '../utils'; export async function runTests(log: ToolingLog, options: RunTestsOptions) { const runStartTime = Date.now(); - const reportTime = getTimeReporter(log, 'scripts/scout_test'); + const reportTime = getTimeReporter(log, 'scripts/scout run-tests'); const config = await loadServersConfig(options.mode, log); + const playwrightGrepTag = getPlaywrightGrepTag(config); const playwrightConfigPath = options.configPath; await withProcRunner(log, async (procs) => { @@ -59,7 +61,12 @@ export async function runTests(log: ToolingLog, options: RunTestsOptions) { // Running 'npx playwright test --config=${playwrightConfigPath}' await procs.run(`playwright`, { cmd: resolve(REPO_ROOT, './node_modules/.bin/playwright'), - args: ['test', `--config=${playwrightConfigPath}`, ...(options.headed ? ['--headed'] : [])], + args: [ + 'test', + `--config=${playwrightConfigPath}`, + `--grep=${playwrightGrepTag}`, + ...(options.headed ? ['--headed'] : []), + ], cwd: resolve(REPO_ROOT), env: { ...process.env, diff --git a/packages/kbn-scout/src/playwright/tags.ts b/packages/kbn-scout/src/playwright/tags.ts new file mode 100644 index 0000000000000..a022b6afd3430 --- /dev/null +++ b/packages/kbn-scout/src/playwright/tags.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +const SERVERLESS_ONLY = ['@svlSecurity', '@svlOblt', '@svlSearch']; +const ESS_ONLY = ['@ess']; +const DEPLOYMENT_AGNOSTIC = SERVERLESS_ONLY.concat(ESS_ONLY); + +export const tags = { + ESS_ONLY, + SERVERLESS_ONLY, + DEPLOYMENT_AGNOSTIC, +}; + +export const tagsByMode = { + stateful: '@ess', + serverless: { + es: '@svlSearch', + oblt: '@svlOblt', + security: '@svlSecurity', + }, +}; diff --git a/packages/kbn-scout/src/playwright/utils/index.ts b/packages/kbn-scout/src/playwright/utils/index.ts index 4b6fcafcbcfa8..8956c6d7cc18f 100644 --- a/packages/kbn-scout/src/playwright/utils/index.ts +++ b/packages/kbn-scout/src/playwright/utils/index.ts @@ -8,6 +8,8 @@ */ import moment from 'moment'; +import { Config } from '../../config'; +import { tagsByMode } from '../tags'; export const serviceLoadedMsg = (name: string) => `scout service loaded: ${name}`; @@ -18,3 +20,10 @@ export const isValidUTCDate = (date: string): boolean => { export function formatTime(date: string, fmt: string = 'MMM D, YYYY @ HH:mm:ss.SSS') { return moment.utc(date, fmt).format(); } + +export const getPlaywrightGrepTag = (config: Config): string => { + const serversConfig = config.getTestServersConfig(); + return serversConfig.serverless + ? tagsByMode.serverless[serversConfig.projectType!] + : tagsByMode.stateful; +}; diff --git a/packages/kbn-scout/src/types/config.d.ts b/packages/kbn-scout/src/types/config.d.ts index 2f0c3a764d65f..08c4bc5f3f9b0 100644 --- a/packages/kbn-scout/src/types/config.d.ts +++ b/packages/kbn-scout/src/types/config.d.ts @@ -25,9 +25,9 @@ export interface ScoutLoaderConfig { ssl: boolean; }; kbnTestServer: { - env?: any; - buildArgs?: string[]; - sourceArgs?: string[]; + env: any; + buildArgs: string[]; + sourceArgs: string[]; serverArgs: string[]; useDedicatedTestRunner?: boolean; }; diff --git a/packages/kbn-search-connectors/components/cron_editor/readme.md b/packages/kbn-search-connectors/components/cron_editor/readme.md index 1b2f8e39e9e58..f1288c56917cd 100644 --- a/packages/kbn-search-connectors/components/cron_editor/readme.md +++ b/packages/kbn-search-connectors/components/cron_editor/readme.md @@ -1,4 +1,4 @@ -`CronEditor` found `./cron_editor.tsx` is based on the `Cron Editor` component from `src/plugins/es_ui_shared/public/components/cron_editor` +`CronEditor` found `./cron_editor.tsx` is based on the `Cron Editor` component from `src/platform/plugins/shared/es_ui_shared/public/components/cron_editor` Includes a `disabled` prop that can be passed down to the child form components. diff --git a/packages/kbn-search-response-warnings/src/handle_warnings.tsx b/packages/kbn-search-response-warnings/src/handle_warnings.tsx index 95ce6e2b112a1..7287c3185cc52 100644 --- a/packages/kbn-search-response-warnings/src/handle_warnings.tsx +++ b/packages/kbn-search-response-warnings/src/handle_warnings.tsx @@ -14,6 +14,7 @@ import type { AnalyticsServiceStart, NotificationsStart, ThemeServiceStart, + UserProfileService, } from '@kbn/core/public'; import { toMountPoint } from '@kbn/react-kibana-mount'; import type { I18nStart } from '@kbn/core-i18n-browser'; @@ -36,6 +37,7 @@ interface Services { inspector: InspectorStart; notifications: NotificationsStart; theme: ThemeServiceStart; + userProfile: UserProfileService; } /** diff --git a/packages/kbn-securitysolution-autocomplete/src/es_field_selector/__tests__/use_es_field.test.ts b/packages/kbn-securitysolution-autocomplete/src/es_field_selector/__tests__/use_es_field.test.ts index 49a4b0d5eb40f..942ccbc29c38e 100644 --- a/packages/kbn-securitysolution-autocomplete/src/es_field_selector/__tests__/use_es_field.test.ts +++ b/packages/kbn-securitysolution-autocomplete/src/es_field_selector/__tests__/use_es_field.test.ts @@ -9,11 +9,7 @@ import { DataViewFieldBase } from '@kbn/es-query'; import { ReactElement } from 'react'; -import { act } from '@testing-library/react'; - -import { renderHook } from '@testing-library/react-hooks'; -import TestRenderer from 'react-test-renderer'; -const { act: actTestRenderer } = TestRenderer; +import { act, renderHook } from '@testing-library/react'; import { fields } from '../../fields/index.mock'; import { useEsField } from '../use_es_field'; @@ -480,7 +476,7 @@ describe('useField', () => { useEsField({ indexPattern, onChange: onChangeMock, isRequired: true }) ); - actTestRenderer(() => { + act(() => { result.current.handleTouch(); }); expect(result.current.isInvalid).toBeTruthy(); @@ -490,7 +486,7 @@ describe('useField', () => { useEsField({ indexPattern, onChange: onChangeMock, isRequired: true, selectedField }) ); - actTestRenderer(() => { + act(() => { result.current.handleTouch(); }); expect(result.current.isInvalid).toBeFalsy(); @@ -498,7 +494,7 @@ describe('useField', () => { it('should return isInvalid equals false when isRequired is false', () => { const { result } = renderHook(() => useEsField({ indexPattern, onChange: onChangeMock })); - actTestRenderer(() => { + act(() => { result.current.handleTouch(); }); expect(result.current.isInvalid).toBeFalsy(); diff --git a/packages/kbn-securitysolution-autocomplete/src/hooks/use_field_value_autocomplete/index.test.ts b/packages/kbn-securitysolution-autocomplete/src/hooks/use_field_value_autocomplete/index.test.ts index aae858aa63087..836744f3ede28 100644 --- a/packages/kbn-securitysolution-autocomplete/src/hooks/use_field_value_autocomplete/index.test.ts +++ b/packages/kbn-securitysolution-autocomplete/src/hooks/use_field_value_autocomplete/index.test.ts @@ -7,14 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; -import { - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn, - useFieldValueAutocomplete, -} from '.'; +import { UseFieldValueAutocompleteReturn, useFieldValueAutocomplete } from '.'; import { getField } from '../../fields/index.mock'; import { autocompleteStartMock } from '../../autocomplete/index.mock'; import { DataViewFieldBase } from '@kbn/es-query'; @@ -46,140 +42,115 @@ describe('use_field_value_autocomplete', () => { }); test('initializes hook', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: undefined, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: undefined, - }) - ); - await waitForNextUpdate(); - - expect(result.current).toEqual([false, true, [], result.current[3]]); - }); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: undefined, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: undefined, + }) + ); + await waitFor(() => expect(result.current).toEqual([false, true, [], result.current[3]])); }); test('does not call autocomplete service if "operatorType" is "exists"', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.EXISTS, - query: '', - selectedField: getField('machine.os'), - }) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.EXISTS, + query: '', + selectedField: getField('machine.os'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, true, [], result.current[3]]; - expect(getValueSuggestionsMock).not.toHaveBeenCalled(); expect(result.current).toEqual(expectedResult); + expect(getValueSuggestionsMock).not.toHaveBeenCalled(); }); }); test('does not call autocomplete service if "selectedField" is undefined', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.EXISTS, - query: '', - selectedField: undefined, - }) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.EXISTS, + query: '', + selectedField: undefined, + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, true, [], result.current[3]]; - expect(getValueSuggestionsMock).not.toHaveBeenCalled(); expect(result.current).toEqual(expectedResult); + expect(getValueSuggestionsMock).not.toHaveBeenCalled(); }); }); test('does not call autocomplete service if "indexPattern" is undefined', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: undefined, - operatorType: OperatorTypeEnum.EXISTS, - query: '', - selectedField: getField('machine.os'), - }) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: undefined, + operatorType: OperatorTypeEnum.EXISTS, + query: '', + selectedField: getField('machine.os'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, true, [], result.current[3]]; - expect(getValueSuggestionsMock).not.toHaveBeenCalled(); expect(result.current).toEqual(expectedResult); + expect(getValueSuggestionsMock).not.toHaveBeenCalled(); }); }); test('it uses full path name for nested fields to fetch suggestions', async () => { const suggestionsMock = jest.fn().mockResolvedValue([]); - await act(async () => { - const selectedField: DataViewFieldBase | undefined = getField('nestedField.child'); - if (selectedField == null) { - throw new TypeError('selectedField for this test should always be defined'); - } - - const { signal } = new AbortController(); - const { waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: suggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: { ...selectedField, name: 'child' }, - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); + const selectedField: DataViewFieldBase | undefined = getField('nestedField.child'); + if (selectedField == null) { + throw new TypeError('selectedField for this test should always be defined'); + } + + const { signal } = new AbortController(); + renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: suggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: { ...selectedField, name: 'child' }, + }) + ); + await waitFor(() => expect(suggestionsMock).toHaveBeenCalledWith({ field: { ...getField('nestedField.child'), name: 'nestedField.child' }, indexPattern: { @@ -199,63 +170,51 @@ describe('use_field_value_autocomplete', () => { query: '', signal, useTimeRange: false, - }); - }); + }) + ); }); test('returns "isSuggestingValues" of false if field type is boolean', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: getField('ssl'), - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: getField('ssl'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, false, [], result.current[3]]; - expect(getValueSuggestionsMock).not.toHaveBeenCalled(); expect(result.current).toEqual(expectedResult); + expect(getValueSuggestionsMock).not.toHaveBeenCalled(); }); }); test('returns "isSuggestingValues" of false to note that autocomplete service is not in use if no autocomplete suggestions available', async () => { const suggestionsMock = jest.fn().mockResolvedValue([]); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: suggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: getField('bytes'), - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: suggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: getField('bytes'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, false, [], result.current[3]]; expect(suggestionsMock).toHaveBeenCalled(); @@ -264,28 +223,22 @@ describe('use_field_value_autocomplete', () => { }); test('returns suggestions', async () => { - await act(async () => { - const { signal } = new AbortController(); - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: getField('@tags'), - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); + const { signal } = new AbortController(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: getField('@tags'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [ false, true, @@ -305,42 +258,34 @@ describe('use_field_value_autocomplete', () => { }); test('returns new suggestions on subsequent calls', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: getField('@tags'), - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); - - expect(result.current[3]).not.toBeNull(); - - // Added check for typescripts sake, if null, - // would not reach below logic as test would stop above - if (result.current[3] != null) { - result.current[3]({ - fieldSelected: getField('@tags'), - patterns: stubIndexPatternWithFields, - searchQuery: '', - value: 'hello', - }); - } - - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: getField('@tags'), + }) + ); + + await waitFor(() => expect(result.current[3]).not.toBeNull()); + + // Added check for typescripts sake, if null, + // would not reach below logic as test would stop above + if (result.current[3] != null) { + result.current[3]({ + fieldSelected: getField('@tags'), + patterns: stubIndexPatternWithFields, + searchQuery: '', + value: 'hello', + }); + } + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [ false, true, diff --git a/packages/kbn-securitysolution-ecs/index.ts b/packages/kbn-securitysolution-ecs/index.ts deleted file mode 100644 index 55b900ad5137a..0000000000000 --- a/packages/kbn-securitysolution-ecs/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './src'; diff --git a/packages/kbn-securitysolution-ecs/jest.config.js b/packages/kbn-securitysolution-ecs/jest.config.js deleted file mode 100644 index 50b1d85a0c5f8..0000000000000 --- a/packages/kbn-securitysolution-ecs/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-securitysolution-ecs'], -}; diff --git a/packages/kbn-securitysolution-ecs/tsconfig.json b/packages/kbn-securitysolution-ecs/tsconfig.json deleted file mode 100644 index dcb1ea0d03d93..0000000000000 --- a/packages/kbn-securitysolution-ecs/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts" - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts b/packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts index 99c6ffc3d05b7..29e526350be6c 100644 --- a/packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts +++ b/packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts @@ -20,26 +20,30 @@ interface IndexAlias { * * @param esClient An {@link ElasticsearchClient} * @param alias alias name used to filter results + * @param index index name used to filter results * * @returns an array of {@link IndexAlias} objects */ export const getIndexAliases = async ({ esClient, alias, + index, }: { esClient: ElasticsearchClient; alias: string; + index?: string; }): Promise<IndexAlias[]> => { const response = await esClient.indices.getAlias( { name: alias, + ...(index ? { index } : {}), }, { meta: true } ); - return Object.keys(response.body).map((index) => ({ + return Object.keys(response.body).map((indexName) => ({ alias, - index, - isWriteIndex: response.body[index].aliases[alias]?.is_write_index === true, + index: indexName, + isWriteIndex: response.body[indexName].aliases[alias]?.is_write_index === true, })); }; diff --git a/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/use_exception_item_card.test.ts b/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/use_exception_item_card.test.ts index cd3e9d8ab5817..5c04c87727147 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/use_exception_item_card.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/use_exception_item_card.test.ts @@ -8,7 +8,7 @@ */ import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { getExceptionListItemSchemaMock } from '../mocks/exception_list_item_schema.mock'; import { useExceptionItemCard } from './use_exception_item_card'; import * as i18n from './translations'; diff --git a/packages/kbn-securitysolution-exception-list-components/src/list_header/edit_modal/use_edit_modal.test.ts b/packages/kbn-securitysolution-exception-list-components/src/list_header/edit_modal/use_edit_modal.test.ts index e982637791200..65b532a55c834 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/list_header/edit_modal/use_edit_modal.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/list_header/edit_modal/use_edit_modal.test.ts @@ -8,7 +8,7 @@ */ import { ChangeEvent, SyntheticEvent } from 'react'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { useEditModal } from './use_edit_modal'; const listDetails = { name: 'test-name', description: 'test-description' }; diff --git a/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts b/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts index d3c17a4aefc48..e16681d2b184b 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts @@ -7,8 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { waitFor } from '@testing-library/react'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook, act } from '@testing-library/react'; import { useExceptionListHeader } from './use_list_header'; describe('useExceptionListHeader', () => { diff --git a/packages/kbn-securitysolution-exception-list-components/src/pagination/use_pagination.test.ts b/packages/kbn-securitysolution-exception-list-components/src/pagination/use_pagination.test.ts index f05066bb61499..e90408f1e161b 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/pagination/use_pagination.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/pagination/use_pagination.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { usePagination } from './use_pagination'; const onPaginationChange = jest.fn(); diff --git a/packages/kbn-securitysolution-exception-list-components/src/value_with_space_warning/use_value_with_space_warning.test.ts b/packages/kbn-securitysolution-exception-list-components/src/value_with_space_warning/use_value_with_space_warning.test.ts index ab0c87c110dfb..51954c0140e61 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/value_with_space_warning/use_value_with_space_warning.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/value_with_space_warning/use_value_with_space_warning.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useValueWithSpaceWarning } from './use_value_with_space_warning'; describe('useValueWithSpaceWarning', () => { diff --git a/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml b/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml index d02bd360cc313..c4f44ca0e85f5 100644 --- a/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml +++ b/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml @@ -1899,9 +1899,55 @@ components: security: - BasicAuth: [] tags: - - description: >- - Exceptions API allows you to manage detection rule exceptions to prevent a - rule from generating an alert from incoming events even when the rule's - other criteria are met. + - description: > + Exceptions are associated with detection and endpoint rules, and are used + to prevent a rule from generating an alert from incoming events, even when + the rule's other criteria are met. They can help reduce the number of + false positives and prevent trusted processes and network activity from + generating unnecessary alerts. + + + Exceptions are made up of: + + + * **Exception containers**: A container for related exceptions. Generally, + a single exception container contains all the exception items relevant for + a subset of rules. For example, a container can be used to group together + network-related exceptions that are relevant for a large number of network + rules. The container can then be associated with all the relevant rules. + + * **Exception items**: The query (fields, values, and logic) used to + prevent rules from generating alerts. When an exception item's query + evaluates to `true`, the rule does not generate an alert. + + + For detection rules, you can also use lists to define rule exceptions. A + list holds multiple values of the same Elasticsearch data type, such as IP + addresses. These values are used to determine when an exception prevents + an alert from being generated. + + > info + + > You cannot use lists with endpoint rule exceptions. + + + > info + + > Only exception containers can be associated with rules. You cannot + directly associate an exception item or a list container with a rule. To + use list exceptions, create an exception item that references the relevant + list container. + + + ## Exceptions requirements + + + Before you can start working with exceptions that use value lists, you + must create the `.lists` and `.items` data streams for the relevant Kibana + space. To do this, use the [Create list data + streams](../operation/operation-createlistindex) endpoint. Once these data + streams are created, your role needs privileges to manage rules. For a + complete list of requirements, refer to [Enable and access + detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui). name: Security Exceptions API x-displayName: Security exceptions diff --git a/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml b/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml index 885028d7e2d94..c686d57b725f9 100644 --- a/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml +++ b/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml @@ -1899,9 +1899,55 @@ components: security: - BasicAuth: [] tags: - - description: >- - Exceptions API allows you to manage detection rule exceptions to prevent a - rule from generating an alert from incoming events even when the rule's - other criteria are met. + - description: > + Exceptions are associated with detection and endpoint rules, and are used + to prevent a rule from generating an alert from incoming events, even when + the rule's other criteria are met. They can help reduce the number of + false positives and prevent trusted processes and network activity from + generating unnecessary alerts. + + + Exceptions are made up of: + + + * **Exception containers**: A container for related exceptions. Generally, + a single exception container contains all the exception items relevant for + a subset of rules. For example, a container can be used to group together + network-related exceptions that are relevant for a large number of network + rules. The container can then be associated with all the relevant rules. + + * **Exception items**: The query (fields, values, and logic) used to + prevent rules from generating alerts. When an exception item's query + evaluates to `true`, the rule does not generate an alert. + + + For detection rules, you can also use lists to define rule exceptions. A + list holds multiple values of the same Elasticsearch data type, such as IP + addresses. These values are used to determine when an exception prevents + an alert from being generated. + + > info + + > You cannot use lists with endpoint rule exceptions. + + + > info + + > Only exception containers can be associated with rules. You cannot + directly associate an exception item or a list container with a rule. To + use list exceptions, create an exception item that references the relevant + list container. + + + ## Exceptions requirements + + + Before you can start working with exceptions that use value lists, you + must create the `.lists` and `.items` data streams for the relevant Kibana + space. To do this, use the [Create list data + streams](../operation/operation-createlistindex) endpoint. Once these data + streams are created, your role needs privileges to manage rules. For a + complete list of requirements, refer to [Enable and access + detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui). name: Security Exceptions API x-displayName: Security exceptions diff --git a/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js index 83c84d91daaf5..70299e56eac2e 100644 --- a/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js +++ b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js @@ -22,21 +22,7 @@ const ROOT = resolve(__dirname, '..'); ), options: { includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security Exceptions API (Elastic Cloud Serverless)', - description: - "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met.", - }, - tags: [ - { - name: 'Security Exceptions API', - 'x-displayName': 'Security exceptions', - description: - "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met.", - }, - ], - }, + prototypeDocument: join(ROOT, 'scripts/openapi_bundle_info/exceptions_serverless.info.yaml'), }, }); @@ -48,21 +34,7 @@ const ROOT = resolve(__dirname, '..'); ), options: { includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security Exceptions API (Elastic Cloud and self-hosted)', - description: - "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met.", - }, - tags: [ - { - name: 'Security Exceptions API', - 'x-displayName': 'Security exceptions', - description: - "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met.", - }, - ], - }, + prototypeDocument: join(ROOT, 'scripts/openapi_bundle_info/exceptions_ess.info.yaml'), }, }); })(); diff --git a/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_ess.info.yaml b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_ess.info.yaml new file mode 100644 index 0000000000000..855870c444c7c --- /dev/null +++ b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_ess.info.yaml @@ -0,0 +1,26 @@ +openapi: 3.0.3 +info: + title: "Security Exceptions API (Elastic Cloud and self-hosted)" + description: "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met." + +tags: + - name: "Security Exceptions API" + x-displayName: "Security exceptions" + description: | + Exceptions are associated with detection and endpoint rules, and are used to prevent a rule from generating an alert from incoming events, even when the rule's other criteria are met. They can help reduce the number of false positives and prevent trusted processes and network activity from generating unnecessary alerts. + + Exceptions are made up of: + + * **Exception containers**: A container for related exceptions. Generally, a single exception container contains all the exception items relevant for a subset of rules. For example, a container can be used to group together network-related exceptions that are relevant for a large number of network rules. The container can then be associated with all the relevant rules. + * **Exception items**: The query (fields, values, and logic) used to prevent rules from generating alerts. When an exception item's query evaluates to `true`, the rule does not generate an alert. + + For detection rules, you can also use lists to define rule exceptions. A list holds multiple values of the same Elasticsearch data type, such as IP addresses. These values are used to determine when an exception prevents an alert from being generated. + > info + > You cannot use lists with endpoint rule exceptions. + + > info + > Only exception containers can be associated with rules. You cannot directly associate an exception item or a list container with a rule. To use list exceptions, create an exception item that references the relevant list container. + + ## Exceptions requirements + + Before you can start working with exceptions that use value lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. For a complete list of requirements, refer to [Enable and access detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui). diff --git a/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_serverless.info.yaml b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_serverless.info.yaml new file mode 100644 index 0000000000000..a8894d997be98 --- /dev/null +++ b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_serverless.info.yaml @@ -0,0 +1,26 @@ +openapi: 3.0.3 +info: + title: "Security Exceptions API (Elastic Cloud Serverless)" + description: "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met." + +tags: + - name: "Security Exceptions API" + x-displayName: "Security exceptions" + description: | + Exceptions are associated with detection and endpoint rules, and are used to prevent a rule from generating an alert from incoming events, even when the rule's other criteria are met. They can help reduce the number of false positives and prevent trusted processes and network activity from generating unnecessary alerts. + + Exceptions are made up of: + + * **Exception containers**: A container for related exceptions. Generally, a single exception container contains all the exception items relevant for a subset of rules. For example, a container can be used to group together network-related exceptions that are relevant for a large number of network rules. The container can then be associated with all the relevant rules. + * **Exception items**: The query (fields, values, and logic) used to prevent rules from generating alerts. When an exception item's query evaluates to `true`, the rule does not generate an alert. + + For detection rules, you can also use lists to define rule exceptions. A list holds multiple values of the same Elasticsearch data type, such as IP addresses. These values are used to determine when an exception prevents an alert from being generated. + > info + > You cannot use lists with endpoint rule exceptions. + + > info + > Only exception containers can be associated with rules. You cannot directly associate an exception item or a list container with a rule. To use list exceptions, create an exception item that references the relevant list container. + + ## Exceptions requirements + + Before you can start working with exceptions that use value lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. For a complete list of requirements, refer to [Enable and access detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui). diff --git a/packages/kbn-securitysolution-hook-utils/src/use_async/index.test.ts b/packages/kbn-securitysolution-hook-utils/src/use_async/index.test.ts index a9f02622df306..99417c1fe3292 100644 --- a/packages/kbn-securitysolution-hook-utils/src/use_async/index.test.ts +++ b/packages/kbn-securitysolution-hook-utils/src/use_async/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook, act } from '@testing-library/react'; import { useAsync } from '.'; @@ -20,8 +20,8 @@ type TestReturn = Promise<unknown>; describe('useAsync', () => { /** - * Timeout for both jest tests and for the waitForNextUpdate. - * jest tests default to 5 seconds and waitForNextUpdate defaults to 1 second. + * Timeout for both jest tests and for the waitFor. + * jest tests default to 5 seconds and waitFor defaults to 1 second. * 20_0000 = 20,000 milliseconds = 20 seconds */ const timeout = 20_000; @@ -42,43 +42,42 @@ describe('useAsync', () => { it( 'invokes the function when start is called', async () => { - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); act(() => { result.current.start(args); }); - await waitForNextUpdate({ timeout }); - - expect(fn).toHaveBeenCalled(); + await waitFor(() => expect(fn).toHaveBeenCalled(), { timeout }); }, timeout ); it('invokes the function with start args', async () => { - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); const expectedArgs = { ...args }; act(() => { result.current.start(args); }); - await waitForNextUpdate({ timeout }); - - expect(fn).toHaveBeenCalledWith(expectedArgs); + await waitFor(() => expect(fn).toHaveBeenCalledWith(expectedArgs), { timeout }); }); it( 'populates result with the resolved value of the fn', async () => { - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); fn.mockResolvedValue({ resolved: 'value' }); act(() => { result.current.start(args); }); - await waitForNextUpdate({ timeout }); - - expect(result.current.result).toEqual({ resolved: 'value' }); - expect(result.current.error).toBeUndefined(); + await waitFor( + () => { + expect(result.current.result).toEqual({ resolved: 'value' }); + expect(result.current.error).toBeUndefined(); + }, + { timeout } + ); }, timeout ); @@ -87,15 +86,19 @@ describe('useAsync', () => { 'populates error if function rejects', async () => { fn.mockRejectedValue(new Error('whoops')); - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); act(() => { result.current.start(args); }); - await waitForNextUpdate({ timeout }); - expect(result.current.result).toBeUndefined(); - expect(result.current.error).toEqual(new Error('whoops')); + await waitFor( + () => { + expect(result.current.result).toBeUndefined(); + expect(result.current.error).toEqual(new Error('whoops')); + }, + { timeout } + ); }, timeout ); @@ -106,7 +109,7 @@ describe('useAsync', () => { let resolve: () => void; fn.mockImplementation(() => new Promise<void>((_resolve) => (resolve = _resolve))); - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); act(() => { result.current.start(args); @@ -115,9 +118,7 @@ describe('useAsync', () => { expect(result.current.loading).toBe(true); act(() => resolve()); - await waitForNextUpdate({ timeout }); - - expect(result.current.loading).toBe(false); + await waitFor(() => expect(result.current.loading).toBe(false), { timeout }); }, timeout ); @@ -128,7 +129,7 @@ describe('useAsync', () => { let resolve: (result: string) => void; fn.mockImplementation(() => new Promise((_resolve) => (resolve = _resolve))); - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); act(() => { result.current.start(args); @@ -137,10 +138,13 @@ describe('useAsync', () => { expect(result.current.loading).toBe(true); act(() => resolve('result')); - await waitForNextUpdate({ timeout }); - - expect(result.current.loading).toBe(false); - expect(result.current.result).toBe('result'); + await waitFor( + () => { + expect(result.current.loading).toBe(false); + expect(result.current.result).toBe('result'); + }, + { timeout } + ); act(() => { result.current.start(args); @@ -149,10 +153,13 @@ describe('useAsync', () => { expect(result.current.loading).toBe(true); expect(result.current.result).toBe(undefined); act(() => resolve('result')); - await waitForNextUpdate({ timeout }); - - expect(result.current.loading).toBe(false); - expect(result.current.result).toBe('result'); + await waitFor( + () => { + expect(result.current.loading).toBe(false); + expect(result.current.result).toBe('result'); + }, + { timeout } + ); }, timeout ); diff --git a/packages/kbn-securitysolution-hook-utils/src/use_is_mounted/index.test.ts b/packages/kbn-securitysolution-hook-utils/src/use_is_mounted/index.test.ts index 3435fc838382b..a8013a65441c9 100644 --- a/packages/kbn-securitysolution-hook-utils/src/use_is_mounted/index.test.ts +++ b/packages/kbn-securitysolution-hook-utils/src/use_is_mounted/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useIsMounted } from '.'; diff --git a/packages/kbn-securitysolution-hook-utils/src/use_observable/index.test.ts b/packages/kbn-securitysolution-hook-utils/src/use_observable/index.test.ts index d0608c5d10174..8d90bffeb3ee2 100644 --- a/packages/kbn-securitysolution-hook-utils/src/use_observable/index.test.ts +++ b/packages/kbn-securitysolution-hook-utils/src/use_observable/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { Subject, throwError } from 'rxjs'; import { useObservable } from '.'; diff --git a/packages/kbn-securitysolution-io-ts-types/src/version/index.ts b/packages/kbn-securitysolution-io-ts-types/src/version/index.ts index 3269a335347fd..58a37ec155b0c 100644 --- a/packages/kbn-securitysolution-io-ts-types/src/version/index.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/version/index.ts @@ -12,7 +12,7 @@ import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than /** * Note this is just a positive number, but we use it as a type here which is still ok. - * This type was originally from "x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts" + * This type was originally from "x-pack/solutions/security/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts" * but is moved here to make things more portable. No unit tests, but see PositiveIntegerGreaterThanZero integer for unit tests. */ export const version = PositiveIntegerGreaterThanZero; diff --git a/packages/kbn-securitysolution-list-hooks/src/use_cursor/index.test.ts b/packages/kbn-securitysolution-list-hooks/src/use_cursor/index.test.ts index c4464704b7cd1..ca94eda81f950 100644 --- a/packages/kbn-securitysolution-list-hooks/src/use_cursor/index.test.ts +++ b/packages/kbn-securitysolution-list-hooks/src/use_cursor/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { UseCursorProps, useCursor } from '.'; diff --git a/packages/kbn-securitysolution-list-hooks/src/use_find_lists/index.test.ts b/packages/kbn-securitysolution-list-hooks/src/use_find_lists/index.test.ts index fa68009be9d9b..fcce54ac3be32 100644 --- a/packages/kbn-securitysolution-list-hooks/src/use_find_lists/index.test.ts +++ b/packages/kbn-securitysolution-list-hooks/src/use_find_lists/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook, act } from '@testing-library/react'; import { useFindLists } from '.'; import { httpServiceMock } from '@kbn/core-http-browser-mocks'; @@ -26,14 +26,14 @@ describe('useFindLists', () => { }); it('invokes Api.findLists', async () => { - const { result, waitForNextUpdate } = renderHook(() => useFindLists()); + const { result } = renderHook(() => useFindLists()); act(() => { result.current.start({ http: httpMock, pageIndex: 1, pageSize: 10 }); }); - await waitForNextUpdate(); - - expect(Api.findLists).toHaveBeenCalledWith( - expect.objectContaining({ http: httpMock, pageIndex: 1, pageSize: 10 }) + await waitFor(() => + expect(Api.findLists).toHaveBeenCalledWith( + expect.objectContaining({ http: httpMock, pageIndex: 1, pageSize: 10 }) + ) ); }); }); diff --git a/packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.ts b/packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.ts index e5166dc3f0f91..79f8748345fdf 100644 --- a/packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.ts +++ b/packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { Dispatch, useEffect, useState } from 'react'; +import { Dispatch, useEffect, useRef, useState } from 'react'; import type { CreateExceptionListItemSchema, PersistHookProps, @@ -47,57 +47,63 @@ export const usePersistExceptionItem = ({ const [isLoading, setIsLoading] = useState(false); const isUpdateExceptionItem = (item: unknown): item is UpdateExceptionListItemSchema => Boolean(item && (item as UpdateExceptionListItemSchema).id != null); + const isSubscribed = useRef(false); useEffect(() => { - let isSubscribed = true; - const abortCtrl = new AbortController(); + let abortCtrl: AbortController | null = null; + isSubscribed.current = true; setIsSaved(false); const saveExceptionItem = async (): Promise<void> => { - if (exceptionListItem != null) { - try { - setIsLoading(true); - - if (isUpdateExceptionItem(exceptionListItem)) { - // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes - // for context around the temporary `id` - const transformedList = transformOutput(exceptionListItem); - - await updateExceptionListItem({ - http, - listItem: transformedList, - signal: abortCtrl.signal, - }); - } else { - // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes - // for context around the temporary `id` - const transformedList = transformNewItemOutput(exceptionListItem); - - await addExceptionListItem({ - http, - listItem: transformedList, - signal: abortCtrl.signal, - }); - } - - if (isSubscribed) { - setIsSaved(true); - } - } catch (error) { - if (isSubscribed) { - onError(error); - } + if (exceptionListItem === null) { + return; + } + + try { + abortCtrl = new AbortController(); + setIsLoading(true); + + if (isUpdateExceptionItem(exceptionListItem)) { + // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes + // for context around the temporary `id` + const transformedList = transformOutput(exceptionListItem); + + await updateExceptionListItem({ + http, + listItem: transformedList, + signal: abortCtrl.signal, + }); + } else { + // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes + // for context around the temporary `id` + const transformedList = transformNewItemOutput(exceptionListItem); + + await addExceptionListItem({ + http, + listItem: transformedList, + signal: abortCtrl.signal, + }); } - if (isSubscribed) { + + if (isSubscribed.current) { + setIsSaved(true); + } + } catch (error) { + if (isSubscribed.current) { + onError(error); + } + } finally { + if (isSubscribed.current) { setIsLoading(false); } } }; saveExceptionItem(); + return (): void => { - isSubscribed = false; - abortCtrl.abort(); + isSubscribed.current = false; + abortCtrl?.abort(); }; }, [http, exceptionListItem, onError]); diff --git a/packages/kbn-securitysolution-lists-common/docs/openapi/ess/security_solution_lists_api_2023_10_31.bundled.schema.yaml b/packages/kbn-securitysolution-lists-common/docs/openapi/ess/security_solution_lists_api_2023_10_31.bundled.schema.yaml index ef88149b49b32..a8324753a6798 100644 --- a/packages/kbn-securitysolution-lists-common/docs/openapi/ess/security_solution_lists_api_2023_10_31.bundled.schema.yaml +++ b/packages/kbn-securitysolution-lists-common/docs/openapi/ess/security_solution_lists_api_2023_10_31.bundled.schema.yaml @@ -1562,6 +1562,79 @@ components: security: - BasicAuth: [] tags: - - description: Lists API allows you to manage lists of keywords, IPs or IP ranges items. + - description: > + Lists can be used with detection rule exceptions to define values that + prevent a rule from generating alerts. + + + Lists are made up of: + + + * **List containers**: A container for values of the same Elasticsearch + data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception + prevents an alert from being generated. + + + All list items in the same list container must be of the same data type, + and each item defines a single value. For example, an IP list container + named `internal-ip-addresses-southport` contains five items, where each + item defines one internal IP address: + + 1. `192.168.1.1` + + 2. `192.168.1.3` + + 3. `192.168.1.18` + + 4. `192.168.1.12` + + 5. `192.168.1.7` + + + To use these IP addresses as values for defining rule exceptions, use the + Security exceptions API to [create an exception list + item](../operation/operation-createexceptionlistitem) that references the + `internal-ip-addresses-southport` list. + + > info + + > Lists cannot be added directly to rules, nor do they define the + operators used to determine when exceptions are applied (`is in list`, `is + not in list`). Use an exception item to define the operator and associate + it with an [exception + container](../operation/operation-createexceptionlist). You can then add + the exception container to a rule's `exceptions_list` object. + + + ## Lists requirements + + + Before you can start using lists, you must create the `.lists` and + `.items` data streams for the relevant Kibana space. To do this, use the + [Create list data streams](../operation/operation-createlistindex) + endpoint. Once these data streams are created, your role needs privileges + to manage rules. Refer to [Enable and access + detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui) + for a complete list of requirements. name: Security Lists API x-displayName: Security lists diff --git a/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/security_solution_lists_api_2023_10_31.bundled.schema.yaml b/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/security_solution_lists_api_2023_10_31.bundled.schema.yaml index e3558193b30da..5cba050e50c35 100644 --- a/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/security_solution_lists_api_2023_10_31.bundled.schema.yaml +++ b/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/security_solution_lists_api_2023_10_31.bundled.schema.yaml @@ -1562,6 +1562,79 @@ components: security: - BasicAuth: [] tags: - - description: Lists API allows you to manage lists of keywords, IPs or IP ranges items. + - description: > + Lists can be used with detection rule exceptions to define values that + prevent a rule from generating alerts. + + + Lists are made up of: + + + * **List containers**: A container for values of the same Elasticsearch + data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception + prevents an alert from being generated. + + + All list items in the same list container must be of the same data type, + and each item defines a single value. For example, an IP list container + named `internal-ip-addresses-southport` contains five items, where each + item defines one internal IP address: + + 1. `192.168.1.1` + + 2. `192.168.1.3` + + 3. `192.168.1.18` + + 4. `192.168.1.12` + + 5. `192.168.1.7` + + + To use these IP addresses as values for defining rule exceptions, use the + Security exceptions API to [create an exception list + item](../operation/operation-createexceptionlistitem) that references the + `internal-ip-addresses-southport` list. + + > info + + > Lists cannot be added directly to rules, nor do they define the + operators used to determine when exceptions are applied (`is in list`, `is + not in list`). Use an exception item to define the operator and associate + it with an [exception + container](../operation/operation-createexceptionlist). You can then add + the exception container to a rule's `exceptions_list` object. + + + ## Lists requirements + + + Before you can start using lists, you must create the `.lists` and + `.items` data streams for the relevant Kibana space. To do this, use the + [Create list data streams](../operation/operation-createlistindex) + endpoint. Once these data streams are created, your role needs privileges + to manage rules. Refer to [Enable and access + detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui) + for a complete list of requirements. name: Security Lists API x-displayName: Security lists diff --git a/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js index b8ea2ea2e8377..7a61724759178 100644 --- a/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js +++ b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js @@ -22,20 +22,7 @@ const ROOT = resolve(__dirname, '..'); ), options: { includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security Lists API (Elastic Cloud Serverless)', - description: 'Lists API allows you to manage lists of keywords, IPs or IP ranges items.', - }, - tags: [ - { - name: 'Security Lists API', - 'x-displayName': 'Security lists', - description: - 'Lists API allows you to manage lists of keywords, IPs or IP ranges items.', - }, - ], - }, + prototypeDocument: join(ROOT, 'scripts/openapi_bundle_info/lists_serverless.info.yaml'), }, }); @@ -47,20 +34,7 @@ const ROOT = resolve(__dirname, '..'); ), options: { includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security Lists API (Elastic Cloud and self-hosted)', - description: 'Lists API allows you to manage lists of keywords, IPs or IP ranges items.', - }, - tags: [ - { - name: 'Security Lists API', - 'x-displayName': 'Security lists', - description: - 'Lists API allows you to manage lists of keywords, IPs or IP ranges items.', - }, - ], - }, + prototypeDocument: join(ROOT, 'scripts/openapi_bundle_info/lists_ess.info.yaml'), }, }); })(); diff --git a/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_ess.info.yaml b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_ess.info.yaml new file mode 100644 index 0000000000000..f2f528c8d7ba7 --- /dev/null +++ b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_ess.info.yaml @@ -0,0 +1,49 @@ +openapi: 3.0.3 +info: + title: "Security Lists API (Elastic Cloud and self-hosted)" + description: "Lists API allows you to manage lists of keywords, IPs or IP ranges items." + +tags: + - name: "Security Lists API" + x-displayName: "Security lists" + description: | + Lists can be used with detection rule exceptions to define values that prevent a rule from generating alerts. + + Lists are made up of: + + * **List containers**: A container for values of the same Elasticsearch data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception prevents an alert from being generated. + + All list items in the same list container must be of the same data type, and each item defines a single value. For example, an IP list container named `internal-ip-addresses-southport` contains five items, where each item defines one internal IP address: + 1. `192.168.1.1` + 2. `192.168.1.3` + 3. `192.168.1.18` + 4. `192.168.1.12` + 5. `192.168.1.7` + + To use these IP addresses as values for defining rule exceptions, use the Security exceptions API to [create an exception list item](../operation/operation-createexceptionlistitem) that references the `internal-ip-addresses-southport` list. + > info + > Lists cannot be added directly to rules, nor do they define the operators used to determine when exceptions are applied (`is in list`, `is not in list`). Use an exception item to define the operator and associate it with an [exception container](../operation/operation-createexceptionlist). You can then add the exception container to a rule's `exceptions_list` object. + + ## Lists requirements + + Before you can start using lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. Refer to [Enable and access detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui) for a complete list of requirements. diff --git a/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_serverless.info.yaml b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_serverless.info.yaml new file mode 100644 index 0000000000000..8f3245db29a99 --- /dev/null +++ b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_serverless.info.yaml @@ -0,0 +1,49 @@ +openapi: 3.0.3 +info: + title: "Security Lists API (Elastic Cloud Serverless)" + description: "Lists API allows you to manage lists of keywords, IPs or IP ranges items." + +tags: + - name: "Security Lists API" + x-displayName: "Security lists" + description: | + Lists can be used with detection rule exceptions to define values that prevent a rule from generating alerts. + + Lists are made up of: + + * **List containers**: A container for values of the same Elasticsearch data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception prevents an alert from being generated. + + All list items in the same list container must be of the same data type, and each item defines a single value. For example, an IP list container named `internal-ip-addresses-southport` contains five items, where each item defines one internal IP address: + 1. `192.168.1.1` + 2. `192.168.1.3` + 3. `192.168.1.18` + 4. `192.168.1.12` + 5. `192.168.1.7` + + To use these IP addresses as values for defining rule exceptions, use the Security exceptions API to [create an exception list item](../operation/operation-createexceptionlistitem) that references the `internal-ip-addresses-southport` list. + > info + > Lists cannot be added directly to rules, nor do they define the operators used to determine when exceptions are applied (`is in list`, `is not in list`). Use an exception item to define the operator and associate it with an [exception container](../operation/operation-createexceptionlist). You can then add the exception container to a rule's `exceptions_list` object. + + ## Lists requirements + + Before you can start using lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. Refer to [Enable and access detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui) for a complete list of requirements. diff --git a/packages/kbn-server-http-tools/src/ssl/ssl_config.ts b/packages/kbn-server-http-tools/src/ssl/ssl_config.ts index 4385f954c3306..bf184f4075625 100644 --- a/packages/kbn-server-http-tools/src/ssl/ssl_config.ts +++ b/packages/kbn-server-http-tools/src/ssl/ssl_config.ts @@ -52,7 +52,7 @@ export const sslSchema = schema.object( schema.literal(TLS_V1_2), schema.literal(TLS_V1_3), ]), - { defaultValue: [TLS_V1_1, TLS_V1_2, TLS_V1_3], minSize: 1 } + { defaultValue: [TLS_V1_2, TLS_V1_3], minSize: 1 } ), clientAuthentication: schema.oneOf( [schema.literal('none'), schema.literal('optional'), schema.literal('required')], diff --git a/packages/kbn-server-route-repository-client/jest.config.js b/packages/kbn-server-route-repository-client/jest.config.js deleted file mode 100644 index 6e6a4071c05bb..0000000000000 --- a/packages/kbn-server-route-repository-client/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-server-route-repository-client'], -}; diff --git a/packages/kbn-server-route-repository-client/tsconfig.json b/packages/kbn-server-route-repository-client/tsconfig.json deleted file mode 100644 index e1ce8a6572b75..0000000000000 --- a/packages/kbn-server-route-repository-client/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/server-route-repository-utils", - "@kbn/core-lifecycle-browser", - "@kbn/core-http-browser", - "@kbn/sse-utils-client", - ] -} diff --git a/packages/kbn-server-route-repository-utils/jest.config.js b/packages/kbn-server-route-repository-utils/jest.config.js deleted file mode 100644 index 39bcfc131648c..0000000000000 --- a/packages/kbn-server-route-repository-utils/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-server-route-repository-utils'], -}; diff --git a/packages/kbn-server-route-repository-utils/tsconfig.json b/packages/kbn-server-route-repository-utils/tsconfig.json deleted file mode 100644 index 593d368856aa6..0000000000000 --- a/packages/kbn-server-route-repository-utils/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core-http-server", - "@kbn/core", - "@kbn/zod", - "@kbn/core-http-browser", - "@kbn/sse-utils", - ] -} diff --git a/packages/kbn-server-route-repository/jest.config.js b/packages/kbn-server-route-repository/jest.config.js deleted file mode 100644 index 0c749ba792012..0000000000000 --- a/packages/kbn-server-route-repository/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-server-route-repository'], -}; diff --git a/packages/kbn-server-route-repository/tsconfig.json b/packages/kbn-server-route-repository/tsconfig.json deleted file mode 100644 index 0e11a0f095897..0000000000000 --- a/packages/kbn-server-route-repository/tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ], - "noUnusedLocals": false - }, - "include": [ - "**/*.ts" - ], - "kbn_references": [ - "@kbn/io-ts-utils", - "@kbn/core-http-request-handler-context-server", - "@kbn/core-http-server", - "@kbn/core-lifecycle-server", - "@kbn/logging", - "@kbn/core", - "@kbn/logging-mocks", - "@kbn/server-route-repository-utils", - "@kbn/zod", - "@kbn/sse-utils-server", - "@kbn/sse-utils", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/packages/kbn-sse-utils-client/jest.config.js b/packages/kbn-sse-utils-client/jest.config.js deleted file mode 100644 index 29aa22cc6dc30..0000000000000 --- a/packages/kbn-sse-utils-client/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-sse-utils-client'], -}; diff --git a/packages/kbn-sse-utils-client/tsconfig.json b/packages/kbn-sse-utils-client/tsconfig.json deleted file mode 100644 index fa695dc1d0f59..0000000000000 --- a/packages/kbn-sse-utils-client/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/sse-utils", - ] -} diff --git a/packages/kbn-sse-utils-server/jest.config.js b/packages/kbn-sse-utils-server/jest.config.js deleted file mode 100644 index a2fe0d9caa7d3..0000000000000 --- a/packages/kbn-sse-utils-server/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-sse-utils-server'], -}; diff --git a/packages/kbn-sse-utils-server/kibana.jsonc b/packages/kbn-sse-utils-server/kibana.jsonc deleted file mode 100644 index 8c533af1953e9..0000000000000 --- a/packages/kbn-sse-utils-server/kibana.jsonc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "shared-common", - "id": "@kbn/sse-utils-server", - "owner": [ - "@elastic/obs-knowledge-team" - ], - "group": "platform", - "visibility": "private" -} \ No newline at end of file diff --git a/packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts b/packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts deleted file mode 100644 index e0d653e44dabc..0000000000000 --- a/packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { map, Observable } from 'rxjs'; -import { PassThrough } from 'stream'; -import { ServerSentEvent } from '@kbn/sse-utils'; - -export function observableIntoEventSourceStream(source$: Observable<ServerSentEvent>): PassThrough { - const withSerializedEvents$ = source$.pipe( - map((event) => { - const { type, ...rest } = event; - return `event: ${type}\ndata: ${JSON.stringify(rest)}\n\n`; - }) - ); - - const stream = new PassThrough(); - - withSerializedEvents$.subscribe({ - next: (line) => { - stream.write(line); - }, - complete: () => { - stream.end(); - }, - error: (error) => { - stream.write(`event: error\ndata: ${JSON.stringify(error)}\n\n`); - stream.end(); - }, - }); - - return stream; -} diff --git a/packages/kbn-sse-utils-server/tsconfig.json b/packages/kbn-sse-utils-server/tsconfig.json deleted file mode 100644 index 9053749c5898b..0000000000000 --- a/packages/kbn-sse-utils-server/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/sse-utils", - ] -} diff --git a/packages/kbn-sse-utils/README.md b/packages/kbn-sse-utils/README.md deleted file mode 100644 index ad6dbf8b67c00..0000000000000 --- a/packages/kbn-sse-utils/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# @kbn/sse-utils - -This package exports utility functions that can be used to format and parse server-sent events(SSE). SSE is useful when streaming data back to the browser as part of a long-running process, such as LLM-based inference. It can convert an Observable that emits values of type `ServerSentEvent` into a response stream on the server, emitting lines in an SSE-compatible format, and it can convert an SSE response stream back into deserialized event. - -## Server - -On the server, you can use `observableIntoEventSourceStream` to convert an Observable that emits `ServerSentEvent` values into a Node.js response stream: - -```ts -import { observableIntoEventSourceStream } from '@kbn/sse-utils-server'; - -function myRequestHandler( - context: RequestHandlerContext, - request: KibanaRequest, - response: KibanaResponseFactory -) { - return response.ok({ - body: observableIntoEventSourceStream( - of({ - type: 'my_event_type', - data: { - anyData: {}, - }, - }) - ), - }); -} -``` - -All emitted values have to be of `ServerSentEvent` type: - -```ts -type ServerSentEvent = { - type: string; - data: Record<string, any>; -}; -``` - -Any error that occurs in the Observable is written to the stream as an event, and the stream is closed. - -## Client - -On the client, you can use `http `@elastic/core-http-browser` to convert the stream of events back into an Observable: - -```ts -import { httpResponseIntoObservable } from '@kbn/sse-utils-client'; -function streamEvents(http: Http) { - from( - http.post('/internal/my_event_stream', { - asResponse: true, - rawResponse: true, - }) - ).pipe(httpResponseIntoObservable()); -} -``` - -Any serialized error events from the stream are de-serialized, and thrown as an error in the Observable. diff --git a/packages/kbn-sse-utils/jest.config.js b/packages/kbn-sse-utils/jest.config.js deleted file mode 100644 index 73de8aa4d38bb..0000000000000 --- a/packages/kbn-sse-utils/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-sse-utils'], -}; diff --git a/packages/kbn-sse-utils/tsconfig.json b/packages/kbn-sse-utils/tsconfig.json deleted file mode 100644 index b38926e5f25ba..0000000000000 --- a/packages/kbn-sse-utils/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - ] -} diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts index 23766e8784df0..8ded1efba8a99 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts @@ -19,9 +19,9 @@ import { datasources, } from '@kbn/scout-reporting'; import { - getCodeOwnersForFile, - getPathsWithOwnersReversed, - type PathWithOwners, + getOwningTeamsForPath, + getCodeOwnersEntries, + type CodeOwnersEntry, } from '@kbn/code-owners'; import { Runner, Test } from '../../../fake_mocha_types'; @@ -41,7 +41,7 @@ export class ScoutFTRReporter { readonly name: string; readonly runId: string; private report: ScoutReport; - private readonly pathsWithOwners: PathWithOwners[]; + private readonly codeOwnersEntries: CodeOwnersEntry[]; constructor(private runner: Runner, private reporterOptions: ScoutFTRReporterOptions = {}) { this.log = new ToolingLog({ @@ -54,7 +54,7 @@ export class ScoutFTRReporter { this.log.info(`Scout test run ID: ${this.runId}`); this.report = new ScoutReport(this.log); - this.pathsWithOwners = getPathsWithOwnersReversed(); + this.codeOwnersEntries = getCodeOwnersEntries(); // Register event listeners for (const [eventName, listener] of Object.entries({ @@ -68,16 +68,7 @@ export class ScoutFTRReporter { } private getFileOwners(filePath: string): string[] { - const concatenatedOwners = getCodeOwnersForFile(filePath, this.pathsWithOwners)?.teams; - - if (concatenatedOwners === undefined) { - return []; - } - - return concatenatedOwners - .replace(/#.+$/, '') - .split(',') - .filter((value) => value.length > 0); + return getOwningTeamsForPath(filePath, this.codeOwnersEntries); } /** diff --git a/packages/kbn-test/src/functional_test_runner/run_check_ftr_code_owners.ts b/packages/kbn-test/src/functional_test_runner/run_check_ftr_code_owners.ts index 17bab9a44a44c..8a1ec50bd1a3e 100644 --- a/packages/kbn-test/src/functional_test_runner/run_check_ftr_code_owners.ts +++ b/packages/kbn-test/src/functional_test_runner/run_check_ftr_code_owners.ts @@ -10,11 +10,7 @@ import { run } from '@kbn/dev-cli-runner'; import { createFailError } from '@kbn/dev-cli-errors'; import { getRepoFiles } from '@kbn/get-repo-files'; -import { - getCodeOwnersForFile, - getPathsWithOwnersReversed, - type CodeOwnership, -} from '@kbn/code-owners'; +import { getOwningTeamsForPath, getCodeOwnersEntries } from '@kbn/code-owners'; const TEST_DIRECTORIES = ['test', 'x-pack/test', 'x-pack/test_serverless']; @@ -36,15 +32,22 @@ export async function runCheckFtrCodeOwnersCli() { const missingOwners = new Set<string>(); // cache codeowners for quicker lookup - const reversedCodeowners = getPathsWithOwnersReversed(); + log.info('Reading CODEOWNERS file'); + const codeOwnersEntries = getCodeOwnersEntries(); const testFiles = await getRepoFiles(TEST_DIRECTORIES); + log.info(`Checking ownership for ${testFiles.length} test files (this will take a while)`); + for (const { repoRel } of testFiles) { - const owners: CodeOwnership = getCodeOwnersForFile(repoRel, reversedCodeowners); - if (owners === undefined || owners.teams === '') missingOwners.add(repoRel); + const owners = getOwningTeamsForPath(repoRel, codeOwnersEntries); + + if (owners.length === 0) { + missingOwners.add(repoRel); + } } const timeSpent = fmtMs(performance.now() - start); + log.info(`Ownership check complete (took ${timeSpent})`); if (missingOwners.size) { log.error( @@ -55,9 +58,7 @@ export async function runCheckFtrCodeOwnersCli() { ); } - log.success( - `All test files have a code owner (checked ${testFiles.length} test files in ${timeSpent})` - ); + log.success(`All test files have a code owner. 🥳`); }, { description: 'Check that all test files are covered by GitHub CODEOWNERS', diff --git a/packages/kbn-test/src/jest/setup/react_testing_library.js b/packages/kbn-test/src/jest/setup/react_testing_library.js index d8994fdbe00e4..7b184485df1cb 100644 --- a/packages/kbn-test/src/jest/setup/react_testing_library.js +++ b/packages/kbn-test/src/jest/setup/react_testing_library.js @@ -36,6 +36,11 @@ jest.mock('@testing-library/react', () => { }; }); +const consoleFilters = [ + /^The above error occurred in the <.*?> component:/, // error boundary output + /^Error: Uncaught .+/, // jsdom output +]; + // This is a workaround to run tests with React 17 and the latest @testing-library/react // And prevent the act warnings that were supposed to be muted by @testing-library // The testing library mutes the act warnings in some cases by setting IS_REACT_ACT_ENVIRONMENT which is React@18 feature https://github.com/testing-library/react-testing-library/pull/1137/ @@ -44,14 +49,27 @@ jest.mock('@testing-library/react', () => { // NOTE: we're not muting all the act warnings but only those that testing-library wanted to mute const originalConsoleError = console.error; console.error = (...args) => { + const message = args[0]?.toString(); + if (global.IS_REACT_ACT_ENVIRONMENT === false) { - if ( - args[0].toString().includes('Warning: An update to %s inside a test was not wrapped in act') - ) { + if (message.includes('Warning: An update to %s inside a test was not wrapped in act')) { return; } } + // Additionally this is a restoration of the original console.error suppression + // expected by the usage of renderHook from react-hooks-testing-library + // which has been moved into latest react-testing-library but the suppression + // of the console.error was not moved with it. + // + // So adding by example from the original implementation: + // https://github.com/testing-library/react-hooks-testing-library/blob/1e01273374af4e48a0feb1f2233bf6c76d742167/src/core/console.ts + // with a slight modification to catch non-string errors as well + + if (message && consoleFilters.some((filter) => filter.test(message))) { + return; + } + originalConsoleError(...args); }; diff --git a/packages/kbn-test/src/mocha/junit_report_generation.js b/packages/kbn-test/src/mocha/junit_report_generation.js index 2dfa0cdbfa3c0..976cbfb7540d3 100644 --- a/packages/kbn-test/src/mocha/junit_report_generation.js +++ b/packages/kbn-test/src/mocha/junit_report_generation.js @@ -8,7 +8,7 @@ */ import { REPO_ROOT } from '@kbn/repo-info'; -import { getCodeOwnersForFile, getPathsWithOwnersReversed } from '@kbn/code-owners'; +import { getOwningTeamsForPath, getCodeOwnersEntries } from '@kbn/code-owners'; import { dirname, relative } from 'path'; import { writeFileSync, mkdirSync } from 'fs'; import { inspect } from 'util'; @@ -94,10 +94,10 @@ export function setupJUnitReportGeneration(runner, options = {}) { .filter((node) => node.pending || !results.find((result) => result.node === node)) .map((node) => ({ skipped: true, node })); - // cache codeowners for quicker lookup - let reversedCodeowners = []; + // cache codeowner entries for quicker lookup + let codeOwnersEntries = []; try { - reversedCodeowners = getPathsWithOwnersReversed(); + codeOwnersEntries = getCodeOwnersEntries(); } catch { /* no-op */ } @@ -143,8 +143,8 @@ export function setupJUnitReportGeneration(runner, options = {}) { if (failed) { const testCaseRelativePath = getPath(node); - const owners = getCodeOwnersForFile(testCaseRelativePath, reversedCodeowners); - attrs.owners = owners?.teams || ''; // empty string when no codeowners are defined + // Comma-separated list of owners. Empty string if no owners are found. + attrs.owners = getOwningTeamsForPath(testCaseRelativePath, codeOwnersEntries).join(','); } return testsuitesEl.ele('testcase', attrs); diff --git a/packages/kbn-timerange/BUILD.bazel b/packages/kbn-timerange/BUILD.bazel new file mode 100644 index 0000000000000..0e0f44f87be10 --- /dev/null +++ b/packages/kbn-timerange/BUILD.bazel @@ -0,0 +1,28 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") + +SRCS = glob( + [ + "**/*.ts", + "**/*.js", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__/**", + "**/integration_tests/**", + "**/mocks/**", + "**/scripts/**", + "**/storybook/**", + "**/test_fixtures/**", + "**/test_helpers/**", + ], +) + +js_library( + name = "kbn-timerange", + package_name = "@kbn/timerange", + srcs = ["package.json"] + SRCS, + visibility = ["//visibility:public"], +) \ No newline at end of file diff --git a/packages/kbn-timerange/index.ts b/packages/kbn-timerange/index.ts index c2f833d365f1c..5c67f5cdd0a26 100644 --- a/packages/kbn-timerange/index.ts +++ b/packages/kbn-timerange/index.ts @@ -7,4 +7,9 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { getDateRange, getDateISORange } from './src'; +export { + getDateRange, + getDateISORange, + getOffsetFromNowInSeconds, + getTimeDifferenceInSeconds, +} from './src'; diff --git a/packages/kbn-timerange/kibana.jsonc b/packages/kbn-timerange/kibana.jsonc index dc2e47f2a9c6c..5d6db9d12ce97 100644 --- a/packages/kbn-timerange/kibana.jsonc +++ b/packages/kbn-timerange/kibana.jsonc @@ -1,9 +1,7 @@ { "type": "shared-common", "id": "@kbn/timerange", - "owner": [ - "@elastic/obs-ux-logs-team" - ], - "group": "observability", - "visibility": "private" -} \ No newline at end of file + "owner": ["@elastic/obs-ux-logs-team"], + "group": "platform", + "visibility": "shared" +} diff --git a/packages/kbn-timerange/src/index.ts b/packages/kbn-timerange/src/index.ts index 2eec98496193d..bc7a8522bd5c5 100644 --- a/packages/kbn-timerange/src/index.ts +++ b/packages/kbn-timerange/src/index.ts @@ -52,3 +52,24 @@ export function getDateISORange({ from, to }: { from: string; to: string }) { endDate, }; } + +export function getTimeDifferenceInSeconds({ + startDate, + endDate, +}: { + startDate: number; + endDate: number; +}): number { + if (!startDate || !endDate || startDate > endDate) { + throw new Error(`Invalid Dates: from: ${startDate}, to: ${endDate}`); + } + + const rangeInSeconds = (endDate - startDate) / 1000; + return Math.round(rangeInSeconds); +} + +export function getOffsetFromNowInSeconds(epochDate: number) { + const now = Date.now(); + + return Math.round((epochDate - now) / 1000); +} diff --git a/packages/kbn-typed-react-router-config/jest.config.js b/packages/kbn-typed-react-router-config/jest.config.js deleted file mode 100644 index 0b2d32b78bf87..0000000000000 --- a/packages/kbn-typed-react-router-config/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-typed-react-router-config'], -}; diff --git a/packages/kbn-typed-react-router-config/tsconfig.json b/packages/kbn-typed-react-router-config/tsconfig.json deleted file mode 100644 index f9a133f48e8d5..0000000000000 --- a/packages/kbn-typed-react-router-config/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "isolatedModules": true, - "outDir": "target/types", - "types": [ - "node", - "jest" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "kbn_references": [ - "@kbn/io-ts-utils", - "@kbn/shared-ux-router", - "@kbn/core", - "@kbn/i18n", - "@kbn/kibana-react-plugin", - "@kbn/core-chrome-browser", - "@kbn/serverless" - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/packages/kbn-unified-field-list/src/components/field_stats/field_top_values_bucket.tsx b/packages/kbn-unified-field-list/src/components/field_stats/field_top_values_bucket.tsx index a53bbcdebc468..64d4c75e228ce 100755 --- a/packages/kbn-unified-field-list/src/components/field_stats/field_top_values_bucket.tsx +++ b/packages/kbn-unified-field-list/src/components/field_stats/field_top_values_bucket.tsx @@ -211,8 +211,14 @@ const FieldTopValuesBucket: React.FC<FieldTopValuesBucketProps> = ({ ); }; +// copied from x-pack/plugins/banners/server/utils.ts +const hexColorRegexp = /^#([0-9a-f]{6}|[0-9a-f]{3})$/i; +const isHexColor = (color: string) => { + return hexColorRegexp.test(color); +}; + const getPercentageColor = (euiTheme: EuiThemeComputed, color: string) => - euiTheme.themeName?.toLowerCase().includes('borealis') + euiTheme.themeName?.toLowerCase().includes('borealis') && isHexColor(color) ? makeHighContrastColor(color)(euiTheme) : color; // FIXME: remove in 9.x when Borealis becomes the default theme diff --git a/packages/kbn-unsaved-changes-prompt/jest.config.js b/packages/kbn-unsaved-changes-prompt/jest.config.js deleted file mode 100644 index 06d30fc1271e0..0000000000000 --- a/packages/kbn-unsaved-changes-prompt/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-unsaved-changes-prompt'], -}; diff --git a/packages/kbn-unsaved-changes-prompt/tsconfig.json b/packages/kbn-unsaved-changes-prompt/tsconfig.json deleted file mode 100644 index a8d349af93f84..0000000000000 --- a/packages/kbn-unsaved-changes-prompt/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": ["*.ts", "src/**/*"], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/core" - ] -} diff --git a/packages/kbn-visualization-ui-components/components/color_picker.tsx b/packages/kbn-visualization-ui-components/components/color_picker.tsx index 589066726300e..e3ca47e63e65f 100644 --- a/packages/kbn-visualization-ui-components/components/color_picker.tsx +++ b/packages/kbn-visualization-ui-components/components/color_picker.tsx @@ -10,14 +10,7 @@ import React, { useEffect, useRef, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { TooltipWrapper } from '@kbn/visualization-utils'; -import { - EuiFormRow, - EuiColorPicker, - EuiColorPickerProps, - EuiToolTip, - EuiIcon, - euiPaletteColorBlind, -} from '@elastic/eui'; +import { EuiFormRow, EuiColorPicker, EuiColorPickerProps, EuiToolTip, EuiIcon } from '@elastic/eui'; import { getColorAlpha, makeColorWithAlpha } from '@kbn/coloring'; const tooltipContent = { @@ -38,6 +31,7 @@ export interface ColorPickerProps { disableHelpTooltip?: boolean; disabledMessage?: string; showAlpha?: boolean; + swatches: string[]; } export const ColorPicker = ({ @@ -49,6 +43,7 @@ export const ColorPicker = ({ disableHelpTooltip, disabledMessage, showAlpha, + swatches, }: ColorPickerProps) => { const [colorText, setColorText] = useState(overwriteColor || defaultColor); const [validatedColor, setValidatedColor] = useState(overwriteColor || defaultColor); @@ -112,8 +107,8 @@ export const ColorPicker = ({ showAlpha={showAlpha} swatches={ currentColorAlpha === 1 - ? euiPaletteColorBlind() - : euiPaletteColorBlind().map((c) => makeColorWithAlpha(c, currentColorAlpha).hex()) + ? swatches + : swatches.map((c) => makeColorWithAlpha(c, currentColorAlpha).hex()) } /> ); diff --git a/packages/kbn-xstate-utils/kibana.jsonc b/packages/kbn-xstate-utils/kibana.jsonc index 3b1bcf6bf8d76..5638550a862df 100644 --- a/packages/kbn-xstate-utils/kibana.jsonc +++ b/packages/kbn-xstate-utils/kibana.jsonc @@ -4,6 +4,6 @@ "owner": [ "@elastic/obs-ux-logs-team" ], - "group": "observability", - "visibility": "private" + "group": "platform", + "visibility": "shared" } diff --git a/packages/kbn-zod-helpers/README.md b/packages/kbn-zod-helpers/README.md index 5e622edffefe4..eccc865092294 100644 --- a/packages/kbn-zod-helpers/README.md +++ b/packages/kbn-zod-helpers/README.md @@ -6,7 +6,7 @@ Helpers defined in this package: - Can be used in other packages and plugins to make it easier to define schemas with Zod, such as API schemas. - Are already used in `packages/kbn-openapi-generator`. -- Are already used in `x-pack/plugins/security_solution`. +- Are already used in `x-pack/solutions/security/plugins/security_solution`. When you add some helper code to this package, please make sure that: diff --git a/packages/presentation/presentation_containers/interfaces/serialized_state.ts b/packages/presentation/presentation_containers/interfaces/serialized_state.ts index 21011d46b2402..0368bd751ce78 100644 --- a/packages/presentation/presentation_containers/interfaces/serialized_state.ts +++ b/packages/presentation/presentation_containers/interfaces/serialized_state.ts @@ -8,7 +8,6 @@ */ import type { Reference } from '@kbn/content-management-utils'; -import type { MaybePromise } from '@kbn/utility-types'; /** * A package containing the serialized Embeddable state, with references extracted. When saving Embeddables using any @@ -24,7 +23,7 @@ export interface HasSerializableState<State extends object = object> { * Serializes all state into a format that can be saved into * some external store. The opposite of `deserialize` in the {@link ReactEmbeddableFactory} */ - serializeState: () => MaybePromise<SerializedPanelState<State>>; + serializeState: () => SerializedPanelState<State>; } export const apiHasSerializableState = (api: unknown | null): api is HasSerializableState => { diff --git a/packages/presentation/presentation_containers/tsconfig.json b/packages/presentation/presentation_containers/tsconfig.json index 15fe397861700..8e25a7b80c6e2 100644 --- a/packages/presentation/presentation_containers/tsconfig.json +++ b/packages/presentation/presentation_containers/tsconfig.json @@ -10,6 +10,5 @@ "@kbn/presentation-publishing", "@kbn/core-mount-utils-browser", "@kbn/content-management-utils", - "@kbn/utility-types", ] } diff --git a/packages/presentation/presentation_publishing/interfaces/fetch/publishes_unified_search.ts b/packages/presentation/presentation_publishing/interfaces/fetch/publishes_unified_search.ts index aec8c33715c0f..08a21f16ca5e9 100644 --- a/packages/presentation/presentation_publishing/interfaces/fetch/publishes_unified_search.ts +++ b/packages/presentation/presentation_publishing/interfaces/fetch/publishes_unified_search.ts @@ -7,7 +7,15 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { AggregateQuery, Filter, Query, TimeRange } from '@kbn/es-query'; +import { + AggregateQuery, + COMPARE_ALL_OPTIONS, + Filter, + Query, + TimeRange, + onlyDisabledFiltersChanged, +} from '@kbn/es-query'; +import fastIsEqual from 'fast-deep-equal'; import { useEffect, useMemo } from 'react'; import { BehaviorSubject } from 'rxjs'; import { PublishingSubject } from '../../publishing_subject'; @@ -113,15 +121,27 @@ export function useSearchApi({ }, []); useEffect(() => { - searchApi.filters$.next(filters); + if ( + !onlyDisabledFiltersChanged(searchApi.filters$.getValue(), filters, { + ...COMPARE_ALL_OPTIONS, + // do not compare $state to avoid refreshing when filter is pinned/unpinned (which does not impact results) + state: false, + }) + ) { + searchApi.filters$.next(filters); + } }, [filters, searchApi.filters$]); useEffect(() => { - searchApi.query$.next(query); + if (!fastIsEqual(searchApi.query$.getValue(), query)) { + searchApi.query$.next(query); + } }, [query, searchApi.query$]); useEffect(() => { - searchApi.timeRange$.next(timeRange); + if (!fastIsEqual(searchApi.timeRange$.getValue(), timeRange)) { + searchApi.timeRange$.next(timeRange); + } }, [timeRange, searchApi.timeRange$]); return searchApi; diff --git a/packages/react/kibana_context/common/tsconfig.json b/packages/react/kibana_context/common/tsconfig.json index 0d78dace105e1..994137ade7df2 100644 --- a/packages/react/kibana_context/common/tsconfig.json +++ b/packages/react/kibana_context/common/tsconfig.json @@ -13,5 +13,6 @@ "exclude": [ "target/**/*" ], - "kbn_references": [] + "kbn_references": [ + ] } diff --git a/packages/react/kibana_context/common/types.ts b/packages/react/kibana_context/common/types.ts index 05e7ab7a0c7d5..e6c15e3cb391f 100644 --- a/packages/react/kibana_context/common/types.ts +++ b/packages/react/kibana_context/common/types.ts @@ -35,4 +35,5 @@ export interface KibanaTheme { */ export interface ThemeServiceStart { theme$: Observable<KibanaTheme>; + getTheme?(): KibanaTheme; } diff --git a/packages/react/kibana_context/root/eui_provider.tsx b/packages/react/kibana_context/root/eui_provider.tsx index fa1d92e897800..9b089829a347b 100644 --- a/packages/react/kibana_context/root/eui_provider.tsx +++ b/packages/react/kibana_context/root/eui_provider.tsx @@ -65,16 +65,22 @@ const cache = { default: emotionCache, global: globalCache, utility: utilitiesCa * should not be used. Instead, refer to `KibanaRootContextProvider` to set up the root of Kibana. */ export const KibanaEuiProvider: FC<PropsWithChildren<KibanaEuiProviderProps>> = ({ - theme: { theme$ }, + theme, globalStyles: globalStylesProp, colorMode: colorModeProp, modify, children, }) => { - const kibanaTheme = useObservable(theme$, defaultTheme); + const { theme$ } = theme; + + // use the selected theme if available before using the defaultTheme; this ensures that + // Kibana loads with the currently selected theme without additional updates from default to selected + const initialTheme = theme.getTheme?.() ?? defaultTheme; + + const kibanaTheme = useObservable(theme$, initialTheme); const themeColorMode = useMemo(() => getColorMode(kibanaTheme), [kibanaTheme]); - const theme = useMemo(() => { + const _theme = useMemo(() => { const config = getThemeConfigByName(kibanaTheme.name) || DEFAULT_THEME_CONFIG; return config.euiTheme; }, [kibanaTheme.name]); @@ -95,7 +101,7 @@ export const KibanaEuiProvider: FC<PropsWithChildren<KibanaEuiProviderProps>> = colorMode, globalStyles, utilityClasses: globalStyles, - theme, + theme: _theme, }} > {children} diff --git a/packages/response-ops/rule_form/src/create_rule_form.tsx b/packages/response-ops/rule_form/src/create_rule_form.tsx index d7ba545935495..2f5e0472dcd50 100644 --- a/packages/response-ops/rule_form/src/create_rule_form.tsx +++ b/packages/response-ops/rule_form/src/create_rule_form.tsx @@ -64,7 +64,7 @@ export const CreateRuleForm = (props: CreateRuleFormProps) => { onSubmit, } = props; - const { http, docLinks, notifications, ruleTypeRegistry, i18n, theme } = plugins; + const { http, docLinks, notifications, ruleTypeRegistry, ...deps } = plugins; const { toasts } = notifications; const { mutate, isLoading: isSaving } = useCreateRule({ @@ -82,7 +82,7 @@ export const CreateRuleForm = (props: CreateRuleFormProps) => { ...(message.details && { text: toMountPoint( <RuleFormCircuitBreakerError>{message.details}</RuleFormCircuitBreakerError>, - { i18n, theme } + deps ), }), }); diff --git a/packages/response-ops/rule_form/src/edit_rule_form.tsx b/packages/response-ops/rule_form/src/edit_rule_form.tsx index 7350a42475b69..392447114edd4 100644 --- a/packages/response-ops/rule_form/src/edit_rule_form.tsx +++ b/packages/response-ops/rule_form/src/edit_rule_form.tsx @@ -45,7 +45,7 @@ export const EditRuleForm = (props: EditRuleFormProps) => { onCancel, onSubmit, } = props; - const { http, notifications, docLinks, ruleTypeRegistry, i18n, theme, application } = plugins; + const { http, notifications, docLinks, ruleTypeRegistry, application, ...deps } = plugins; const { toasts } = notifications; const { mutate, isLoading: isSaving } = useUpdateRule({ @@ -63,7 +63,7 @@ export const EditRuleForm = (props: EditRuleFormProps) => { ...(message.details && { text: toMountPoint( <RuleFormCircuitBreakerError>{message.details}</RuleFormCircuitBreakerError>, - { i18n, theme } + deps ), }), }); diff --git a/packages/response-ops/rule_form/src/rule_form.tsx b/packages/response-ops/rule_form/src/rule_form.tsx index c09add5ae1c06..f34f811a7b488 100644 --- a/packages/response-ops/rule_form/src/rule_form.tsx +++ b/packages/response-ops/rule_form/src/rule_form.tsx @@ -28,13 +28,46 @@ export interface RuleFormProps { } export const RuleForm = (props: RuleFormProps) => { - const { plugins, onCancel, onSubmit } = props; + const { plugins: _plugins, onCancel, onSubmit } = props; const { id, ruleTypeId } = useParams<{ id?: string; ruleTypeId?: string; }>(); + const { + http, + i18n, + theme, + userProfile, + application, + notifications, + charts, + settings, + data, + dataViews, + unifiedSearch, + docLinks, + ruleTypeRegistry, + actionTypeRegistry, + } = _plugins; + const ruleFormComponent = useMemo(() => { + const plugins = { + http, + i18n, + theme, + userProfile, + application, + notifications, + charts, + settings, + data, + dataViews, + unifiedSearch, + docLinks, + ruleTypeRegistry, + actionTypeRegistry, + }; if (id) { return <EditRuleForm id={id} plugins={plugins} onCancel={onCancel} onSubmit={onSubmit} />; } @@ -60,7 +93,26 @@ export const RuleForm = (props: RuleFormProps) => { } /> ); - }, [id, ruleTypeId, plugins, onCancel, onSubmit]); + }, [ + http, + i18n, + theme, + userProfile, + application, + notifications, + charts, + settings, + data, + dataViews, + unifiedSearch, + docLinks, + ruleTypeRegistry, + actionTypeRegistry, + id, + ruleTypeId, + onCancel, + onSubmit, + ]); return <QueryClientProvider client={queryClient}>{ruleFormComponent}</QueryClientProvider>; }; diff --git a/packages/response-ops/rule_form/src/types.ts b/packages/response-ops/rule_form/src/types.ts index 48ba6952b47f8..07f34e4c59026 100644 --- a/packages/response-ops/rule_form/src/types.ts +++ b/packages/response-ops/rule_form/src/types.ts @@ -16,6 +16,7 @@ import type { HttpStart } from '@kbn/core-http-browser'; import type { I18nStart } from '@kbn/core-i18n-browser'; import type { NotificationsStart } from '@kbn/core-notifications-browser'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; +import type { UserProfileService } from '@kbn/core-user-profile-browser'; import type { SettingsStart } from '@kbn/core-ui-settings-browser'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; @@ -54,6 +55,7 @@ export interface RuleFormPlugins { http: HttpStart; i18n: I18nStart; theme: ThemeServiceStart; + userProfile: UserProfileService; application: ApplicationStart; notifications: NotificationsStart; charts: ChartsPluginSetup; diff --git a/packages/response-ops/rule_form/tsconfig.json b/packages/response-ops/rule_form/tsconfig.json index 3f39fc766bd10..cea1478df1ef8 100644 --- a/packages/response-ops/rule_form/tsconfig.json +++ b/packages/response-ops/rule_form/tsconfig.json @@ -39,5 +39,6 @@ "@kbn/kibana-react-plugin", "@kbn/core-i18n-browser", "@kbn/core-theme-browser", + "@kbn/core-user-profile-browser", ] } diff --git a/packages/serverless/settings/security_project/tsconfig.json b/packages/serverless/settings/security_project/tsconfig.json deleted file mode 100644 index 16d6022e3d9bc..0000000000000 --- a/packages/serverless/settings/security_project/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-ids", - ] -} diff --git a/packages/shared-ux/button_toolbar/kibana.jsonc b/packages/shared-ux/button_toolbar/kibana.jsonc index 1a61c5ffc3d4d..909aeb3209de9 100644 --- a/packages/shared-ux/button_toolbar/kibana.jsonc +++ b/packages/shared-ux/button_toolbar/kibana.jsonc @@ -1,9 +1,9 @@ { - "type": "shared-common", + "type": "shared-browser", "id": "@kbn/shared-ux-button-toolbar", "owner": [ "@elastic/appex-sharedux" ], "group": "platform", "visibility": "shared" -} \ No newline at end of file +} diff --git a/packages/shared-ux/button_toolbar/src/buttons/toolbar_button/toolbar_button.styles.ts b/packages/shared-ux/button_toolbar/src/buttons/toolbar_button/toolbar_button.styles.ts index a5bb105424351..b70993ed8b02e 100644 --- a/packages/shared-ux/button_toolbar/src/buttons/toolbar_button/toolbar_button.styles.ts +++ b/packages/shared-ux/button_toolbar/src/buttons/toolbar_button/toolbar_button.styles.ts @@ -24,9 +24,9 @@ export const ToolbarButtonStyles = ({ euiTheme }: UseEuiTheme) => { borderColor: euiTheme.border.color, }, emptyButton: { - backgroundColor: euiTheme.colors.emptyShade, + backgroundColor: euiTheme.colors.backgroundBasePlain, border: `${euiTheme.border.thin}`, - color: `${euiTheme.colors.text}`, + color: `${euiTheme.colors.textParagraph}`, }, buttonPositions: { left: { diff --git a/packages/shared-ux/chrome/navigation/src/ui/components/panel/label_badge.tsx b/packages/shared-ux/chrome/navigation/src/ui/components/panel/label_badge.tsx index 8ea6fc9718125..ceff96fde7ed6 100644 --- a/packages/shared-ux/chrome/navigation/src/ui/components/panel/label_badge.tsx +++ b/packages/shared-ux/chrome/navigation/src/ui/components/panel/label_badge.tsx @@ -25,14 +25,13 @@ export const LabelBadge = ({ className?: string; }) => { const { euiTheme } = useEuiTheme(); - return ( <EuiBetaBadge label={text} size="s" css={css` margin-left: ${euiTheme.size.s}; - color: ${euiTheme.colors.text}; + color: ${euiTheme.colors.textParagraph}; vertical-align: middle; margin-bottom: ${euiTheme.size.xxs}; `} diff --git a/packages/shared-ux/code_editor/impl/placeholder_widget.ts b/packages/shared-ux/code_editor/impl/placeholder_widget.ts index 67a70af58ea1c..cf74087af115d 100644 --- a/packages/shared-ux/code_editor/impl/placeholder_widget.ts +++ b/packages/shared-ux/code_editor/impl/placeholder_widget.ts @@ -31,7 +31,7 @@ export class PlaceholderWidget implements monaco.editor.IContentWidget { const domNode = document.createElement('div'); domNode.innerText = this.placeholderText; domNode.className = css` - color: ${this.euiTheme.colors.subduedText}; + color: ${this.euiTheme.colors.textSubdued}; width: max-content; pointer-events: none; `; diff --git a/packages/shared-ux/file/file_picker/impl/kibana.jsonc b/packages/shared-ux/file/file_picker/impl/kibana.jsonc index 9d7bc72bb634d..e812b97c9a086 100644 --- a/packages/shared-ux/file/file_picker/impl/kibana.jsonc +++ b/packages/shared-ux/file/file_picker/impl/kibana.jsonc @@ -1,9 +1,9 @@ { - "type": "shared-common", + "type": "shared-browser", "id": "@kbn/shared-ux-file-picker", "owner": [ "@elastic/appex-sharedux" ], "group": "platform", "visibility": "shared" -} \ No newline at end of file +} diff --git a/packages/shared-ux/file/file_upload/impl/kibana.jsonc b/packages/shared-ux/file/file_upload/impl/kibana.jsonc index ed5b6366e2a73..406982d80f1d4 100644 --- a/packages/shared-ux/file/file_upload/impl/kibana.jsonc +++ b/packages/shared-ux/file/file_upload/impl/kibana.jsonc @@ -1,9 +1,9 @@ { - "type": "shared-common", + "type": "shared-browser", "id": "@kbn/shared-ux-file-upload", "owner": [ "@elastic/appex-sharedux" ], "group": "platform", "visibility": "shared" -} \ No newline at end of file +} diff --git a/packages/shared-ux/file/file_upload/impl/src/components/cancel_button.tsx b/packages/shared-ux/file/file_upload/impl/src/components/cancel_button.tsx index 5a2ae29e9fe33..9c34aa1bc59ba 100644 --- a/packages/shared-ux/file/file_upload/impl/src/components/cancel_button.tsx +++ b/packages/shared-ux/file/file_upload/impl/src/components/cancel_button.tsx @@ -34,12 +34,13 @@ export const CancelButton: FunctionComponent<Props> = ({ onClick, compressed }) /> ) : ( <EuiButton + color="danger" + fill={true} key="cancelButton" size="s" data-test-subj="cancelButton" disabled={disabled} onClick={onClick} - color="danger" > {i18nTexts.cancel} </EuiButton> diff --git a/packages/shared-ux/file/file_upload/impl/src/components/upload_button.tsx b/packages/shared-ux/file/file_upload/impl/src/components/upload_button.tsx index ba712fefff537..447f6acfdcdaf 100644 --- a/packages/shared-ux/file/file_upload/impl/src/components/upload_button.tsx +++ b/packages/shared-ux/file/file_upload/impl/src/components/upload_button.tsx @@ -30,6 +30,7 @@ export const UploadButton: FunctionComponent<Props> = ({ onClick }) => { key="uploadButton" isLoading={uploading} color={done ? 'success' : 'primary'} + fill={true} iconType={done ? 'checkInCircleFilled' : undefined} disabled={Boolean(!files.length || error || done)} onClick={onClick} diff --git a/packages/shared-ux/file/file_upload/impl/src/file_upload.component.tsx b/packages/shared-ux/file/file_upload/impl/src/file_upload.component.tsx index 0cff9a248d135..d79bd18dc7516 100644 --- a/packages/shared-ux/file/file_upload/impl/src/file_upload.component.tsx +++ b/packages/shared-ux/file/file_upload/impl/src/file_upload.component.tsx @@ -7,27 +7,30 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { css } from '@emotion/react'; import React from 'react'; +import useObservable from 'react-use/lib/useObservable'; + import { - EuiText, - EuiSpacer, - EuiFlexItem, - EuiFlexGroup, EuiFilePicker, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiText, useEuiTheme, useGeneratedHtmlId, + mathWithUnits, } from '@elastic/eui'; import type { EuiFilePickerClass, EuiFilePickerProps, } from '@elastic/eui/src/components/form/file_picker/file_picker'; -import { euiThemeVars } from '@kbn/ui-theme'; + import { useBehaviorSubject } from '@kbn/shared-ux-file-util'; -import { css } from '@emotion/react'; -import useObservable from 'react-use/lib/useObservable'; -import { i18nTexts } from './i18n_texts'; -import { ControlButton, ClearButton } from './components'; + +import { ClearButton, ControlButton } from './components'; import { useUploadState } from './context'; +import { i18nTexts } from './i18n_texts'; export interface Props { meta?: unknown; @@ -41,8 +44,6 @@ export interface Props { className?: string; } -const { euiFormMaxWidth, euiButtonHeightSmall } = euiThemeVars; - const styles = { horizontalContainer: css` display: flex; @@ -79,12 +80,15 @@ export const FileUpload = React.forwardRef<EuiFilePickerClass, Props>( const id = useGeneratedHtmlId({ prefix: 'filesFileUpload' }); const errorId = `${id}_error`; + // FIXME: add a token for this on euiTheme.components. https://github.com/elastic/eui/issues/8217 + const formMaxWidth = mathWithUnits(euiTheme.size.base, (x) => x * 25); + return ( <div data-test-subj="filesFileUpload" css={[ css` - max-width: ${fullWidth ? '100%' : euiFormMaxWidth}; + max-width: ${fullWidth ? '100%' : formMaxWidth}; `, fullWidth ? styles.fullWidth : undefined, compressed ? styles.horizontalContainer : undefined, @@ -143,7 +147,7 @@ export const FileUpload = React.forwardRef<EuiFilePickerClass, Props>( css={css` display: flex; align-items: center; - min-height: ${euiButtonHeightSmall}; + min-height: ${euiTheme.size.xl}; `} size="s" color="danger" diff --git a/packages/shared-ux/file/file_upload/impl/tsconfig.json b/packages/shared-ux/file/file_upload/impl/tsconfig.json index 81d7704f03f7b..7fbdf2f04dc6f 100644 --- a/packages/shared-ux/file/file_upload/impl/tsconfig.json +++ b/packages/shared-ux/file/file_upload/impl/tsconfig.json @@ -15,7 +15,6 @@ ], "kbn_references": [ "@kbn/i18n", - "@kbn/ui-theme", "@kbn/shared-ux-file-context", "@kbn/shared-ux-file-util", "@kbn/shared-ux-file-types", diff --git a/renovate.json b/renovate.json index 7903b41f290d3..e28b7eea6c6fe 100644 --- a/renovate.json +++ b/renovate.json @@ -260,6 +260,27 @@ ], "enabled": true }, + { + "groupName": "@elastic/ml-ui dependencies", + "matchDepNames": [ + "@types/he", + "he", + "react-popper-tooltip" + ], + "reviewers": [ + "team:ml-ui" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "Team:ML", + ":ml", + "release_note:skip", + "backport:all-open" + ], + "enabled": true + }, { "groupName": "@elastic/fleet dependencies", "matchDepNames": [ @@ -1246,12 +1267,57 @@ "minimumReleaseAge": "7 days", "enabled": true }, + { + "groupName": "json-stringify-pretty-compact", + "matchDepNames": [ + "json-stringify-pretty-compact" + ], + "reviewers": [ + "team:kibana-visualizations" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "Feature:Vega", + "Team:Visualizations", + "backport:all-open" + ], + "minimumReleaseAge": "7 days", + "enabled": true + }, + { + "groupName": "kibana-visualization color related modules", + "matchDepNames": [ + "chroma-js", + "color", + "tinycolor2", + "tinygradient", + "@types/chroma-js", + "@types/color" + ], + "reviewers": [ + "team:kibana-visualizations" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "Feature:Vega", + "Team:Visualizations", + "backport:all-open" + ], + "minimumReleaseAge": "7 days", + "enabled": true + }, { "groupName": "vega related modules", "matchDepNames": [ "vega", + "vega-interpreter", "vega-lite", "vega-schema-url-parser", + "vega-spec-injector", "vega-tooltip" ], "reviewers": [ @@ -1262,7 +1328,44 @@ ], "labels": [ "Feature:Vega", - "Team:Visualizations" + "Team:Visualizations", + "backport:all-open" + ], + "minimumReleaseAge": "7 days", + "enabled": true + }, + { + "groupName": "d3 modules", + "matchDepNames": [ + "@types/d3", + "@types/d3-array", + "@types/d3-brush", + "@types/d3-interpolate", + "@types/d3-scale", + "@types/d3-selection", + "@types/d3-shape", + "@types/d3-time", + "@types/d3-transition", + "d3", + "d3-array", + "d3-brush", + "d3-interpolate", + "d3-scale", + "d3-selection", + "d3-shape", + "d3-time", + "d3-transition" + ], + "reviewers": [ + "team:kibana-visualizations" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "Feature:Vega", + "Team:Visualizations", + "backport:all-open" ], "minimumReleaseAge": "7 days", "enabled": true @@ -2484,8 +2587,15 @@ }, { "groupName": "OpenTelemetry modules", - "matchDepPrefixes": [ - "@opentelemetry/" + "matchDepNames": [ + "@grpc/grpc-js", + "@opentelemetry/api", + "@opentelemetry/api-metrics", + "@opentelemetry/exporter-metrics-otlp-grpc", + "@opentelemetry/exporter-prometheus", + "@opentelemetry/resources", + "@opentelemetry/sdk-metrics-base", + "@opentelemetry/semantic-conventions" ], "reviewers": [ "team:stack-monitoring" @@ -2494,7 +2604,9 @@ "main" ], "labels": [ - "Team:Monitoring" + "Team:Monitoring", + "backport:all-open", + "release_note:skip" ], "minimumReleaseAge": "7 days", "enabled": true @@ -2610,6 +2722,25 @@ "minimumReleaseAge": "7 days", "enabled": true }, + { + "groupName": "react-is", + "matchDepNames": [ + "react-is", + "@types/react-is" + ], + "reviewers": [ + "team:visualizations" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "release_note:skip", + "backport:all-open", + "Team:Visualizations" + ], + "enabled": true + }, { "groupName": "re2js", "matchDepNames": [ diff --git a/scripts/get_owners_for_file.js b/scripts/get_owners_for_file.js index f5a07b76ee04c..15c21a3f06d9c 100644 --- a/scripts/get_owners_for_file.js +++ b/scripts/get_owners_for_file.js @@ -8,4 +8,4 @@ */ require('../src/setup_node_env'); -require('@kbn/code-owners').runGetOwnersForFileCli(); +void require('@kbn/code-owners').cli.findCodeOwnersForPath(); diff --git a/scripts/relocate.js b/scripts/relocate.js new file mode 100644 index 0000000000000..1a8c71373c673 --- /dev/null +++ b/scripts/relocate.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +require('../src/setup_node_env'); +require('@kbn/relocate').runKbnRelocateCli(); diff --git a/scripts/stage_by_owner.js b/scripts/stage_by_owner.js new file mode 100644 index 0000000000000..0ac33b3901a04 --- /dev/null +++ b/scripts/stage_by_owner.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +require('../src/setup_node_env'); +require('../src/dev/stage_by_owner'); diff --git a/src/core/public/styles/_index.scss b/src/core/public/styles/_index.scss index cfdb1c7192dcd..c8567498b42ec 100644 --- a/src/core/public/styles/_index.scss +++ b/src/core/public/styles/_index.scss @@ -1,3 +1 @@ @import './base'; -@import './chrome/index'; -@import './rendering/index'; diff --git a/src/core/public/styles/chrome/_banner.scss b/src/core/public/styles/chrome/_banner.scss deleted file mode 100644 index feb69e54a911f..0000000000000 --- a/src/core/public/styles/chrome/_banner.scss +++ /dev/null @@ -1,13 +0,0 @@ -.header__topBanner { - position: fixed; - top: 0; - left: 0; - height: var(--kbnHeaderBannerHeight); - width: 100%; - z-index: $euiZHeader; -} - -.header__topBannerContainer { - height: 100%; - width: 100%; -} diff --git a/src/core/public/styles/chrome/_index.scss b/src/core/public/styles/chrome/_index.scss deleted file mode 100644 index 22390aa5a44b3..0000000000000 --- a/src/core/public/styles/chrome/_index.scss +++ /dev/null @@ -1,45 +0,0 @@ -@import './banner'; - -.euiDataGrid__restrictBody { - .headerGlobalNav, - .kbnQueryBar { - display: none; - } -} - -.euiDataGrid__restrictBody.euiBody--headerIsFixed { - .euiFlyout { - top: 0; - height: 100%; - } -} - -.chrHeaderHelpMenu__version { - text-transform: none; -} - -.chrHeaderBadge__wrapper { - align-self: center; - margin-right: $euiSize; -} - -.header__toggleNavButtonSection { - .euiBody--collapsibleNavIsDocked & { - display: none; - } -} - -.header__breadcrumbsWithExtensionContainer { - overflow: hidden; // enables text-ellipsis in the last breadcrumb - .euiHeaderBreadcrumbs { - // stop breadcrumbs from growing. - // this makes the extension appear right next to the last breadcrumb - flex-grow: 0; - margin-right: 0; - - overflow: hidden; // enables text-ellipsis in the last breadcrumb - } -} -.header__breadcrumbsAppendExtension { - flex-grow: 1; -} diff --git a/src/core/public/styles/rendering/_base.scss b/src/core/public/styles/rendering/_base.scss deleted file mode 100644 index 259115f6a526a..0000000000000 --- a/src/core/public/styles/rendering/_base.scss +++ /dev/null @@ -1,80 +0,0 @@ -@import '../../mixins'; - -/** - * Stretch the root element of the Kibana application to set the base-size that - * flexed children should keep. Only works when paired with root styles applied - * by core service from new platform - */ - -#kibana-body { - // DO NOT ADD ANY OVERFLOW BEHAVIORS HERE - // It will break the sticky navigation - min-height: 100%; - display: flex; - flex-direction: column; -} - -// Affixes a div to restrict the position of charts tooltip to the visible viewport minus the header -#app-fixed-viewport { - pointer-events: none; - visibility: hidden; - position: fixed; - top: var(--kbnAppHeadersOffset, var(--euiFixedHeadersOffset, 0)); - right: 0; - bottom: 0; - left: 0; -} - -.kbnAppWrapper { - // DO NOT ADD ANY OTHER STYLES TO THIS SELECTOR - // This a very nested dependency happnening in "all" apps - display: flex; - flex-flow: column nowrap; - flex-grow: 1; - z-index: 0; // This effectively puts every high z-index inside the scope of this wrapper to it doesn't interfere with the header and/or overlay mask - position: relative; // This is temporary for apps that relied on this being present on `.application` -} - -.kbnBody { - padding-top: var(--euiFixedHeadersOffset, 0); -} - -// Conditionally override :root CSS fixed header variable. Updating `--euiFixedHeadersOffset` -// on the body will cause all child EUI components to automatically update their offsets -.kbnBody--hasHeaderBanner { - --euiFixedHeadersOffset: var(--kbnHeaderOffsetWithBanner); - - // Offset fixed EuiHeaders by the top banner - .euiHeader[data-fixed-header] { - margin-top: var(--kbnHeaderBannerHeight); - } - - // Prevent banners from covering full screen data grids - .euiDataGrid--fullScreen { - height: calc(100vh - var(--kbnHeaderBannerHeight)); - top: var(--kbnHeaderBannerHeight); - } -} - -// Set a body CSS variable for the app container to use - calculates the total -// height of all fixed headers + the sticky action menu toolbar -.kbnBody--hasProjectActionMenu { - --kbnAppHeadersOffset: calc(var(--kbnHeaderOffset) + var(--kbnProjectHeaderAppActionMenuHeight)); - - &.kbnBody--hasHeaderBanner { - --kbnAppHeadersOffset: calc(var(--kbnHeaderOffsetWithBanner) + var(--kbnProjectHeaderAppActionMenuHeight)); - } -} - -.kbnBody--chromeHidden { - // stylelint-disable-next-line length-zero-no-unit - --euiFixedHeadersOffset: 0px; - - &.kbnBody--hasHeaderBanner { - --euiFixedHeadersOffset: var(--kbnHeaderBannerHeight); - } - - &.kbnBody--hasProjectActionMenu { - --kbnAppHeadersOffset: var(--euiFixedHeadersOffset, 0); - } -} diff --git a/src/core/public/styles/rendering/_index.scss b/src/core/public/styles/rendering/_index.scss deleted file mode 100644 index c8567498b42ec..0000000000000 --- a/src/core/public/styles/rendering/_index.scss +++ /dev/null @@ -1 +0,0 @@ -@import './base'; diff --git a/src/core/server/docs/kib_core_deprecations_service.mdx b/src/core/server/docs/kib_core_deprecations_service.mdx index 2594bd2f0dd6b..1cf5fd50869f1 100644 --- a/src/core/server/docs/kib_core_deprecations_service.mdx +++ b/src/core/server/docs/kib_core_deprecations_service.mdx @@ -152,9 +152,13 @@ coreSetup.deprecations.registerDeprecations({ ``` The `getDeprecations` function is invoked when the user requests to see the deprecations affecting their deployment. -The function provides a context object which contains a scoped Elasticsearch client and a saved objects client. +The function provides a context object which contains a scoped Elasticsearch client and a Saved Objects client. -To check the full TS types of the service please check the [generated core docs](../../../../docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.md). +⚠️When using the Saved Objects client, bear in mind that all Spaces must be checked for deprecations: +By default, the Saved Objects client retrieves data from the current Space only. To override this behavior, add the +option `namespaces: ['*']` to search in all Spaces. When getting by ID, it's best to loop through all the spaces and get with `namespaces: [mySpaceOverride]`. + +To check the full TS types of the service please check the [generated core docs](https://docs.elastic.dev/kibana-dev-docs/api/kbn-core-deprecations-server). ### Example ```ts diff --git a/src/dev/build/tasks/os_packages/docker_generator/run.ts b/src/dev/build/tasks/os_packages/docker_generator/run.ts index fdfce95385806..ca45a31ad7310 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/run.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/run.ts @@ -51,7 +51,7 @@ export async function runDockerGenerator( */ if (flags.baseImage === 'wolfi') baseImageName = - 'docker.elastic.co/wolfi/chainguard-base:latest@sha256:ad2e15a6b7fbd893990fd9bd39fb0f367282a9ba65e350655540e470858ef382'; + 'docker.elastic.co/wolfi/chainguard-base:latest@sha256:1b51ff6dba78c98d3e02b0cd64a8ce3238c7a40408d21e3af12a329d44db6f23'; let imageFlavor = ''; if (flags.baseImage === 'ubi') imageFlavor += `-ubi`; diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile index 94d604d726562..e868cb73cb8db 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile +++ b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile @@ -134,7 +134,7 @@ RUN for iter in {1..10}; do \ (exit $exit_code) {{/ubuntu}} {{#wolfi}} -RUN apk --no-cache add bash curl fontconfig libstdc++ libnss findutils shadow +RUN apk --no-cache add bash curl fontconfig libstdc++ libnss findutils shadow ca-certificates {{/wolfi}} # Bring in Kibana from the initial stage. diff --git a/src/dev/code_coverage/docs/team_assignment/README.md b/src/dev/code_coverage/docs/team_assignment/README.md index c5b0db830ec4b..e39d63e751091 100644 --- a/src/dev/code_coverage/docs/team_assignment/README.md +++ b/src/dev/code_coverage/docs/team_assignment/README.md @@ -19,7 +19,7 @@ _notice the coverage delimiter `#CC# ...`_ /x-pack/test/plugin_functional/test_suites/resolver/ @elastic/endpoint-app-team @elastic/siem #CC# /x-pack/legacy/plugins/siem/ @elastic/siem #CC# /x-pack/plugins/siem/ @elastic/siem -#CC# /x-pack/plugins/security_solution/ @elastic/siem +#CC# /x-pack/solutions/security/plugins/security_solution/ @elastic/siem ``` The first 3 lines above fill the usual purpose of the CODEOWNERS file and cause PRs modifying files in these paths to require approval by the listed team(s). They also attribute files in those paths for purpose of code coverage reporting. @@ -29,9 +29,9 @@ The last 3 lines above ONLY attribute files in those paths for purpose of code c We create a data file containing all paths in the repo, with a team assigned. Example Team Assignments Block: ``` -x-pack/plugins/security_solution/common/constants.ts siem -x-pack/plugins/security_solution/common/detection_engine/build_exceptions_query.test.ts siem -x-pack/plugins/security_solution/common/detection_engine/build_exceptions_query.ts siem +x-pack/solutions/security/plugins/security_solution/common/constants.ts siem +x-pack/solutions/security/plugins/security_solution/common/detection_engine/build_exceptions_query.test.ts siem +x-pack/solutions/security/plugins/security_solution/common/detection_engine/build_exceptions_query.ts siem ... ``` @@ -39,5 +39,5 @@ x-pack/plugins/security_solution/common/detection_engine/build_exceptions_query. Subsequently, we use the data file during ingestion. We search the data file, for any given "coveredFilePath" - Given the above assignments block, and lets say the "coveredFilePath" during ingestion is - - `x-pack/plugins/security_solution/common/constants.ts` + - `x-pack/solutions/security/plugins/security_solution/common/constants.ts` - The team assignment would be `siem` in our [Kibana Stats Cluster](https://kibana-stats.elastic.dev/app/dashboards#/view/58b8db70-62f9-11ea-8312-7f2d69b79843?_g=(filters%3A!()%2CrefreshInterval%3A(pause%3A!t%2Cvalue%3A0)%2Ctime%3A(from%3Anow-7d%2Cto%3Anow))) diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index 3572781c4b262..b437c15688b94 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -44,7 +44,7 @@ export const IGNORE_FILE_GLOBS = [ 'packages/kbn-test/jest-preset.js', 'packages/kbn-test/*/jest-preset.js', 'test/package/Vagrantfile', - 'x-pack/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile', + 'x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile', '**/test/**/fixtures/**/*', 'packages/kbn-router-to-openapispec/openapi-types.d.ts', @@ -98,7 +98,19 @@ export const IGNORE_FILE_GLOBS = [ * * @type {Array} */ -export const KEBAB_CASE_DIRECTORY_GLOBS = ['packages/*', 'x-pack', 'x-pack/packages/*']; +export const KEBAB_CASE_DIRECTORY_GLOBS = [ + 'packages/*', + 'x-pack', + 'x-pack/packages/*', + 'src/core/packages/*/*', + 'src/platform/packages/private/*', + 'src/platform/packages/shared/*', + 'x-pack/platform/packages/private/*', + 'x-pack/platform/packages/shared/*', + 'x-pack/solutions/observability/packages/*', + 'x-pack/solutions/search/packages/*', + 'x-pack/solutions/security/packages/*', +]; /** * These patterns are matched against directories and indicate @@ -165,7 +177,7 @@ export const TEMPORARILY_IGNORED_PATHS = [ 'src/core/server/core_app/assets/favicons/safari-pinned-tab.svg', 'test/functional/apps/management/exports/_import_objects-conflicts.json', 'x-pack/legacy/plugins/index_management/public/lib/editSettings.js', - 'x-pack/legacy/plugins/license_management/public/store/reducers/licenseManagement.js', + 'x-pack/legacy/platform/plugins/shared/license_management/public/store/reducers/licenseManagement.js', 'x-pack/plugins/monitoring/public/icons/health-gray.svg', 'x-pack/plugins/monitoring/public/icons/health-green.svg', 'x-pack/plugins/monitoring/public/icons/health-red.svg', diff --git a/src/dev/stage_by_owner.ts b/src/dev/stage_by_owner.ts new file mode 100644 index 0000000000000..7987874da75fe --- /dev/null +++ b/src/dev/stage_by_owner.ts @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import simpleGit from 'simple-git'; + +import { run } from '@kbn/dev-cli-runner'; +import { getOwningTeamsForPath, getCodeOwnersEntries, CodeOwnersEntry } from '@kbn/code-owners'; +import { asyncForEach } from '@kbn/std'; +import { inspect } from 'util'; + +const git = simpleGit(); + +interface File { + path: string; + staged: boolean; +} + +// Function to get the list of changed files +const getChangedFiles = async (): Promise<File[]> => { + const { staged, files } = await git.status(); + return files.map((file) => ({ path: file.path, staged: staged.includes(file.path) })); +}; + +run( + async ({ flags, log }) => { + const { + _: [owner], + } = flags; + + const changedFiles = await getChangedFiles(); + const owners: { staged: Record<string, string[]>; unstaged: Record<string, string[]> } = { + staged: {}, + unstaged: {}, + }; + + let codeOwnersEntries: CodeOwnersEntry[] = []; + + try { + codeOwnersEntries = getCodeOwnersEntries(); + } catch (e) { + log.error('CODEOWNERS cannot be read.'); + process.exit(1); + } + + const getOwners = (file: string) => { + const teams = getOwningTeamsForPath(file, codeOwnersEntries); + + if (teams.length === 0) { + log.warning(`No owner found for ${file}`); + return []; + } + + return teams; + }; + + for (const file of changedFiles) { + const fileOwners = getOwners(file.path); + + if (fileOwners) { + await asyncForEach(fileOwners, async (fileOwner) => { + const loc = file.staged ? 'staged' : 'unstaged'; + + owners[loc][fileOwner] = [ + ...(owners[loc][fileOwner] || []), + file.path + (fileOwners.length > 1 ? ` (+${fileOwners.length - 1})` : ''), + ]; + + if (owner && fileOwner === owner) { + await git.add(file.path); + log.info(`Staged ${file.path}`); + } + }); + } + } + + if (!owner) { + log.info(inspect(owners, { colors: true, depth: null })); + } + + log.info('Done.'); + }, + { + usage: 'node src/dev/stage_by_owner.ts [owner]', + description: ` + This script stages files based on the CODEOWNERS file. + If an owner is provided, it stages the files owned by that owner. + Otherwise, it outputs changed files, grouped by owner. + `, + } +); diff --git a/src/dev/storybook/aliases.ts b/src/dev/storybook/aliases.ts index 1d3ec990948a9..4991ac0dfe44d 100644 --- a/src/dev/storybook/aliases.ts +++ b/src/dev/storybook/aliases.ts @@ -12,10 +12,11 @@ // If you wish for your Storybook to be built and included in CI, also add your // alias to .buildkite/scripts/steps/storybooks/build_and_upload.ts export const storybookAliases = { + ai_assistant: 'x-pack/packages/kbn-ai-assistant/.storybook', apm: 'x-pack/plugins/observability_solution/apm/.storybook', canvas: 'x-pack/plugins/canvas/storybook', cases: 'packages/kbn-cases-components/.storybook', - cell_actions: 'packages/kbn-cell-actions/.storybook', + cell_actions: 'src/platform/packages/shared/kbn-cell-actions/.storybook', cloud_security_posture_packages: 'x-pack/packages/kbn-cloud-security-posture/storybook/config', cloud: 'packages/cloud/.storybook', coloring: 'packages/kbn-coloring/.storybook', @@ -30,8 +31,8 @@ export const storybookAliases = { data: 'src/plugins/data/.storybook', discover: 'src/plugins/discover/.storybook', esql_ast_inspector: 'examples/esql_ast_inspector/.storybook', - es_ui_shared: 'src/plugins/es_ui_shared/.storybook', - expandable_flyout: 'packages/kbn-expandable-flyout/.storybook', + es_ui_shared: 'src/platform/plugins/shared/es_ui_shared/.storybook', + expandable_flyout: 'x-pack/solutions/security/packages/kbn-expandable-flyout/.storybook', expression_error: 'src/plugins/expression_error/.storybook', expression_image: 'src/plugins/expression_image/.storybook', expression_metric_vis: 'src/plugins/chart_expressions/expression_legacy_metric/.storybook', @@ -46,28 +47,28 @@ export const storybookAliases = { home: 'src/plugins/home/.storybook', infra: 'x-pack/plugins/observability_solution/infra/.storybook', inventory: 'x-pack/plugins/observability_solution/inventory/.storybook', - investigate: 'x-pack/plugins/observability_solution/investigate_app/.storybook', + investigate: 'x-pack/solutions/observability/plugins/investigate_app/.storybook', kibana_react: 'src/plugins/kibana_react/.storybook', lists: 'x-pack/plugins/lists/.storybook', logs_explorer: 'x-pack/plugins/observability_solution/logs_explorer/.storybook', management: 'packages/kbn-management/storybook/config', - observability: 'x-pack/plugins/observability_solution/observability/.storybook', + observability: 'x-pack/solutions/observability/plugins/observability/.storybook', observability_ai_assistant: - 'x-pack/plugins/observability_solution/observability_ai_assistant/.storybook', + 'x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook', observability_ai_assistant_app: - 'x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook', + 'x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook', observability_inventory: 'x-pack/plugins/observability_solution/inventory/.storybook', observability_shared: 'x-pack/plugins/observability_solution/observability_shared/.storybook', - observability_slo: 'x-pack/plugins/observability_solution/slo/.storybook', + observability_slo: 'x-pack/solutions/observability/plugins/slo/.storybook', presentation: 'src/plugins/presentation_util/storybook', random_sampling: 'x-pack/packages/kbn-random-sampling/.storybook', esql_editor: 'src/platform/packages/private/kbn-esql-editor/.storybook', - security_solution: 'x-pack/plugins/security_solution/.storybook', - security_solution_packages: 'x-pack/packages/security-solution/storybook/config', + security_solution: 'x-pack/solutions/security/plugins/security_solution/.storybook', + security_solution_packages: 'x-pack/solutions/security/packages/storybook/config', serverless: 'packages/serverless/storybook/config', shared_ux: 'packages/shared-ux/storybook/config', - slo: 'x-pack/plugins/observability_solution/slo/.storybook', - threat_intelligence: 'x-pack/plugins/threat_intelligence/.storybook', + slo: 'x-pack/solutions/observability/plugins/slo/.storybook', + threat_intelligence: 'x-pack/solutions/security/plugins/threat_intelligence/.storybook', triggers_actions_ui: 'x-pack/plugins/triggers_actions_ui/.storybook', ui_actions_enhanced: 'src/plugins/ui_actions_enhanced/.storybook', unified_search: 'src/plugins/unified_search/.storybook', diff --git a/src/dev/tsconfig.json b/src/dev/tsconfig.json index 87473c1e79e82..0e2e8e94c629b 100644 --- a/src/dev/tsconfig.json +++ b/src/dev/tsconfig.json @@ -44,5 +44,6 @@ "@kbn/core-test-helpers-kbn-server", "@kbn/dev-proc-runner", "@kbn/core-i18n-server-internal", + "@kbn/code-owners", ] } diff --git a/packages/default-nav/devtools/README.md b/src/platform/packages/private/default-nav/devtools/README.md similarity index 100% rename from packages/default-nav/devtools/README.md rename to src/platform/packages/private/default-nav/devtools/README.md diff --git a/packages/default-nav/devtools/default_navigation.ts b/src/platform/packages/private/default-nav/devtools/default_navigation.ts similarity index 100% rename from packages/default-nav/devtools/default_navigation.ts rename to src/platform/packages/private/default-nav/devtools/default_navigation.ts diff --git a/packages/default-nav/devtools/index.ts b/src/platform/packages/private/default-nav/devtools/index.ts similarity index 100% rename from packages/default-nav/devtools/index.ts rename to src/platform/packages/private/default-nav/devtools/index.ts diff --git a/src/platform/packages/private/default-nav/devtools/jest.config.js b/src/platform/packages/private/default-nav/devtools/jest.config.js new file mode 100644 index 0000000000000..c02758afa2bf8 --- /dev/null +++ b/src/platform/packages/private/default-nav/devtools/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/private/default-nav/devtools'], +}; diff --git a/packages/default-nav/devtools/kibana.jsonc b/src/platform/packages/private/default-nav/devtools/kibana.jsonc similarity index 100% rename from packages/default-nav/devtools/kibana.jsonc rename to src/platform/packages/private/default-nav/devtools/kibana.jsonc diff --git a/packages/default-nav/devtools/package.json b/src/platform/packages/private/default-nav/devtools/package.json similarity index 100% rename from packages/default-nav/devtools/package.json rename to src/platform/packages/private/default-nav/devtools/package.json diff --git a/src/platform/packages/private/default-nav/devtools/tsconfig.json b/src/platform/packages/private/default-nav/devtools/tsconfig.json new file mode 100644 index 0000000000000..6e216eb62dd4e --- /dev/null +++ b/src/platform/packages/private/default-nav/devtools/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core-chrome-browser", + "@kbn/deeplinks-devtools", + ] +} diff --git a/packages/default-nav/management/README.md b/src/platform/packages/private/default-nav/management/README.md similarity index 100% rename from packages/default-nav/management/README.md rename to src/platform/packages/private/default-nav/management/README.md diff --git a/packages/default-nav/management/default_navigation.ts b/src/platform/packages/private/default-nav/management/default_navigation.ts similarity index 100% rename from packages/default-nav/management/default_navigation.ts rename to src/platform/packages/private/default-nav/management/default_navigation.ts diff --git a/packages/default-nav/management/index.ts b/src/platform/packages/private/default-nav/management/index.ts similarity index 100% rename from packages/default-nav/management/index.ts rename to src/platform/packages/private/default-nav/management/index.ts diff --git a/src/platform/packages/private/default-nav/management/jest.config.js b/src/platform/packages/private/default-nav/management/jest.config.js new file mode 100644 index 0000000000000..4977ed105d381 --- /dev/null +++ b/src/platform/packages/private/default-nav/management/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/private/default-nav/management'], +}; diff --git a/packages/default-nav/management/kibana.jsonc b/src/platform/packages/private/default-nav/management/kibana.jsonc similarity index 100% rename from packages/default-nav/management/kibana.jsonc rename to src/platform/packages/private/default-nav/management/kibana.jsonc diff --git a/packages/default-nav/management/package.json b/src/platform/packages/private/default-nav/management/package.json similarity index 100% rename from packages/default-nav/management/package.json rename to src/platform/packages/private/default-nav/management/package.json diff --git a/src/platform/packages/private/default-nav/management/tsconfig.json b/src/platform/packages/private/default-nav/management/tsconfig.json new file mode 100644 index 0000000000000..86aef204f06cf --- /dev/null +++ b/src/platform/packages/private/default-nav/management/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core-chrome-browser", + "@kbn/deeplinks-management", + ] +} diff --git a/src/platform/packages/private/kbn-esql-editor/src/esql_editor.tsx b/src/platform/packages/private/kbn-esql-editor/src/esql_editor.tsx index eb3da01abd505..628bab839bdb9 100644 --- a/src/platform/packages/private/kbn-esql-editor/src/esql_editor.tsx +++ b/src/platform/packages/private/kbn-esql-editor/src/esql_editor.tsx @@ -169,25 +169,25 @@ export const ESQLEditor = memo(function ESQLEditor({ const currentSelection = editor1?.current?.getSelection(); const startLineNumber = currentSelection?.startLineNumber; const endLineNumber = currentSelection?.endLineNumber; + const edits = []; if (startLineNumber && endLineNumber) { for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) { const lineContent = editorModel.current?.getLineContent(lineNumber) ?? ''; const hasComment = lineContent?.startsWith('//'); const commentedLine = hasComment ? lineContent?.replace('//', '') : `//${lineContent}`; - // executeEdits allows to keep edit in history - editor1.current?.executeEdits('comment', [ - { - range: { - startLineNumber: lineNumber, - startColumn: 0, - endLineNumber: lineNumber, - endColumn: (lineContent?.length ?? 0) + 1, - }, - text: commentedLine, + edits.push({ + range: { + startLineNumber: lineNumber, + startColumn: 0, + endLineNumber: lineNumber, + endColumn: (lineContent?.length ?? 0) + 1, }, - ]); + text: commentedLine, + }); } + // executeEdits allows to keep edit in history + editor1.current?.executeEdits('comment', edits); } }, []); diff --git a/src/platform/packages/private/kbn-management/jest.config.js b/src/platform/packages/private/kbn-management/jest.config.js new file mode 100644 index 0000000000000..b249a47d2bf86 --- /dev/null +++ b/src/platform/packages/private/kbn-management/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/private/kbn-management'], +}; diff --git a/packages/kbn-management/settings/application/README.md b/src/platform/packages/private/kbn-management/settings/application/README.md similarity index 100% rename from packages/kbn-management/settings/application/README.md rename to src/platform/packages/private/kbn-management/settings/application/README.md diff --git a/packages/kbn-management/settings/application/__snapshots__/query_input.test.tsx.snap b/src/platform/packages/private/kbn-management/settings/application/__snapshots__/query_input.test.tsx.snap similarity index 100% rename from packages/kbn-management/settings/application/__snapshots__/query_input.test.tsx.snap rename to src/platform/packages/private/kbn-management/settings/application/__snapshots__/query_input.test.tsx.snap diff --git a/packages/kbn-management/settings/application/__stories__/application.stories.tsx b/src/platform/packages/private/kbn-management/settings/application/__stories__/application.stories.tsx similarity index 100% rename from packages/kbn-management/settings/application/__stories__/application.stories.tsx rename to src/platform/packages/private/kbn-management/settings/application/__stories__/application.stories.tsx diff --git a/packages/kbn-management/settings/application/__stories__/use_application_story.tsx b/src/platform/packages/private/kbn-management/settings/application/__stories__/use_application_story.tsx similarity index 100% rename from packages/kbn-management/settings/application/__stories__/use_application_story.tsx rename to src/platform/packages/private/kbn-management/settings/application/__stories__/use_application_story.tsx diff --git a/packages/kbn-management/settings/application/application.test.tsx b/src/platform/packages/private/kbn-management/settings/application/application.test.tsx similarity index 100% rename from packages/kbn-management/settings/application/application.test.tsx rename to src/platform/packages/private/kbn-management/settings/application/application.test.tsx diff --git a/packages/kbn-management/settings/application/application.tsx b/src/platform/packages/private/kbn-management/settings/application/application.tsx similarity index 100% rename from packages/kbn-management/settings/application/application.tsx rename to src/platform/packages/private/kbn-management/settings/application/application.tsx diff --git a/packages/kbn-management/settings/application/empty_state.tsx b/src/platform/packages/private/kbn-management/settings/application/empty_state.tsx similarity index 100% rename from packages/kbn-management/settings/application/empty_state.tsx rename to src/platform/packages/private/kbn-management/settings/application/empty_state.tsx diff --git a/packages/kbn-management/settings/application/hooks/index.ts b/src/platform/packages/private/kbn-management/settings/application/hooks/index.ts similarity index 100% rename from packages/kbn-management/settings/application/hooks/index.ts rename to src/platform/packages/private/kbn-management/settings/application/hooks/index.ts diff --git a/packages/kbn-management/settings/application/hooks/use_fields.ts b/src/platform/packages/private/kbn-management/settings/application/hooks/use_fields.ts similarity index 100% rename from packages/kbn-management/settings/application/hooks/use_fields.ts rename to src/platform/packages/private/kbn-management/settings/application/hooks/use_fields.ts diff --git a/packages/kbn-management/settings/application/hooks/use_scope_fields.ts b/src/platform/packages/private/kbn-management/settings/application/hooks/use_scope_fields.ts similarity index 100% rename from packages/kbn-management/settings/application/hooks/use_scope_fields.ts rename to src/platform/packages/private/kbn-management/settings/application/hooks/use_scope_fields.ts diff --git a/packages/kbn-management/settings/application/hooks/use_settings.ts b/src/platform/packages/private/kbn-management/settings/application/hooks/use_settings.ts similarity index 100% rename from packages/kbn-management/settings/application/hooks/use_settings.ts rename to src/platform/packages/private/kbn-management/settings/application/hooks/use_settings.ts diff --git a/packages/kbn-management/settings/application/i18n_texts.ts b/src/platform/packages/private/kbn-management/settings/application/i18n_texts.ts similarity index 100% rename from packages/kbn-management/settings/application/i18n_texts.ts rename to src/platform/packages/private/kbn-management/settings/application/i18n_texts.ts diff --git a/packages/kbn-management/settings/application/index.tsx b/src/platform/packages/private/kbn-management/settings/application/index.tsx similarity index 100% rename from packages/kbn-management/settings/application/index.tsx rename to src/platform/packages/private/kbn-management/settings/application/index.tsx diff --git a/packages/kbn-management/settings/application/kibana.jsonc b/src/platform/packages/private/kbn-management/settings/application/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/application/kibana.jsonc rename to src/platform/packages/private/kbn-management/settings/application/kibana.jsonc diff --git a/packages/kbn-management/settings/application/mocks/context.tsx b/src/platform/packages/private/kbn-management/settings/application/mocks/context.tsx similarity index 100% rename from packages/kbn-management/settings/application/mocks/context.tsx rename to src/platform/packages/private/kbn-management/settings/application/mocks/context.tsx diff --git a/packages/kbn-management/settings/application/mocks/index.ts b/src/platform/packages/private/kbn-management/settings/application/mocks/index.ts similarity index 100% rename from packages/kbn-management/settings/application/mocks/index.ts rename to src/platform/packages/private/kbn-management/settings/application/mocks/index.ts diff --git a/packages/kbn-management/settings/application/package.json b/src/platform/packages/private/kbn-management/settings/application/package.json similarity index 100% rename from packages/kbn-management/settings/application/package.json rename to src/platform/packages/private/kbn-management/settings/application/package.json diff --git a/packages/kbn-management/settings/application/query_input.test.tsx b/src/platform/packages/private/kbn-management/settings/application/query_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/application/query_input.test.tsx rename to src/platform/packages/private/kbn-management/settings/application/query_input.test.tsx diff --git a/packages/kbn-management/settings/application/query_input.tsx b/src/platform/packages/private/kbn-management/settings/application/query_input.tsx similarity index 100% rename from packages/kbn-management/settings/application/query_input.tsx rename to src/platform/packages/private/kbn-management/settings/application/query_input.tsx diff --git a/packages/kbn-management/settings/application/read_only_badge.ts b/src/platform/packages/private/kbn-management/settings/application/read_only_badge.ts similarity index 100% rename from packages/kbn-management/settings/application/read_only_badge.ts rename to src/platform/packages/private/kbn-management/settings/application/read_only_badge.ts diff --git a/packages/kbn-management/settings/application/services.tsx b/src/platform/packages/private/kbn-management/settings/application/services.tsx similarity index 100% rename from packages/kbn-management/settings/application/services.tsx rename to src/platform/packages/private/kbn-management/settings/application/services.tsx diff --git a/packages/kbn-management/settings/application/tab.tsx b/src/platform/packages/private/kbn-management/settings/application/tab.tsx similarity index 100% rename from packages/kbn-management/settings/application/tab.tsx rename to src/platform/packages/private/kbn-management/settings/application/tab.tsx diff --git a/src/platform/packages/private/kbn-management/settings/application/tsconfig.json b/src/platform/packages/private/kbn-management/settings/application/tsconfig.json new file mode 100644 index 0000000000000..de36999e41644 --- /dev/null +++ b/src/platform/packages/private/kbn-management/settings/application/tsconfig.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@testing-library/jest-dom" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core-ui-settings-browser", + "@kbn/management-settings-types", + "@kbn/management-settings-field-definition", + "@kbn/management-settings-utilities", + "@kbn/management-settings-components-form", + "@kbn/i18n", + "@kbn/test-jest-helpers", + "@kbn/core-application-browser", + "@kbn/i18n-react", + "@kbn/management-settings-components-field-category", + "@kbn/react-kibana-context-root", + "@kbn/core-theme-browser-mocks", + "@kbn/core-i18n-browser", + "@kbn/core-analytics-browser-mocks", + "@kbn/core-ui-settings-common", + "@kbn/management-settings-section-registry", + "@kbn/core-notifications-browser", + "@kbn/core-chrome-browser", + "@kbn/core-user-profile-browser-mocks", + ] +} diff --git a/packages/kbn-management/settings/components/field_category/README.mdx b/src/platform/packages/private/kbn-management/settings/components/field_category/README.mdx similarity index 100% rename from packages/kbn-management/settings/components/field_category/README.mdx rename to src/platform/packages/private/kbn-management/settings/components/field_category/README.mdx diff --git a/packages/kbn-management/settings/components/field_category/__stories__/categories.stories.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/categories.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/__stories__/categories.stories.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/categories.stories.tsx diff --git a/packages/kbn-management/settings/components/field_category/__stories__/category.stories.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/category.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/__stories__/category.stories.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/category.stories.tsx diff --git a/packages/kbn-management/settings/components/field_category/__stories__/use_category_story.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/use_category_story.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/__stories__/use_category_story.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/use_category_story.tsx diff --git a/packages/kbn-management/settings/components/field_category/categories.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/categories.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx diff --git a/packages/kbn-management/settings/components/field_category/category.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/category.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx diff --git a/packages/kbn-management/settings/components/field_category/clear_query_link.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/clear_query_link.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx diff --git a/packages/kbn-management/settings/components/field_category/index.ts b/src/platform/packages/private/kbn-management/settings/components/field_category/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_category/index.ts rename to src/platform/packages/private/kbn-management/settings/components/field_category/index.ts diff --git a/src/platform/packages/private/kbn-management/settings/components/field_category/jest.config.js b/src/platform/packages/private/kbn-management/settings/components/field_category/jest.config.js new file mode 100644 index 0000000000000..0d2ae1922729b --- /dev/null +++ b/src/platform/packages/private/kbn-management/settings/components/field_category/jest.config.js @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../../..', + roots: [ + '<rootDir>/src/platform/packages/private/kbn-management/settings/components/field_category', + ], +}; diff --git a/packages/kbn-management/settings/components/field_category/kibana.jsonc b/src/platform/packages/private/kbn-management/settings/components/field_category/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/components/field_category/kibana.jsonc rename to src/platform/packages/private/kbn-management/settings/components/field_category/kibana.jsonc diff --git a/packages/kbn-management/settings/components/field_category/package.json b/src/platform/packages/private/kbn-management/settings/components/field_category/package.json similarity index 100% rename from packages/kbn-management/settings/components/field_category/package.json rename to src/platform/packages/private/kbn-management/settings/components/field_category/package.json diff --git a/packages/kbn-management/settings/components/field_category/services.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/services.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx diff --git a/src/platform/packages/private/kbn-management/settings/components/field_category/tsconfig.json b/src/platform/packages/private/kbn-management/settings/components/field_category/tsconfig.json new file mode 100644 index 0000000000000..5fd04965d3f30 --- /dev/null +++ b/src/platform/packages/private/kbn-management/settings/components/field_category/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-utilities", + "@kbn/management-settings-field-definition", + "@kbn/management-settings-components-field-row", + "@kbn/management-settings-types", + "@kbn/i18n-react", + ] +} diff --git a/packages/kbn-management/settings/components/field_category/types.ts b/src/platform/packages/private/kbn-management/settings/components/field_category/types.ts similarity index 100% rename from packages/kbn-management/settings/components/field_category/types.ts rename to src/platform/packages/private/kbn-management/settings/components/field_category/types.ts diff --git a/packages/kbn-management/settings/components/form/README.mdx b/src/platform/packages/private/kbn-management/settings/components/form/README.mdx similarity index 100% rename from packages/kbn-management/settings/components/form/README.mdx rename to src/platform/packages/private/kbn-management/settings/components/form/README.mdx diff --git a/packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.test.tsx b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.test.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.test.tsx diff --git a/packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx similarity index 99% rename from packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx index e9947ac6f9306..dd300aad99c3a 100644 --- a/packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx +++ b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx @@ -87,7 +87,7 @@ export const BottomBar = ({ <EuiButton css={cssFormButton} disabled={hasInvalidChanges} - color="success" + color="primary" fill size="s" iconType="check" diff --git a/packages/kbn-management/settings/components/form/bottom_bar/index.tsx b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/index.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/bottom_bar/index.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/index.tsx diff --git a/packages/kbn-management/settings/components/form/bottom_bar/unsaved_count.tsx b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/unsaved_count.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/bottom_bar/unsaved_count.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/unsaved_count.tsx diff --git a/packages/kbn-management/settings/components/form/form.styles.ts b/src/platform/packages/private/kbn-management/settings/components/form/form.styles.ts similarity index 100% rename from packages/kbn-management/settings/components/form/form.styles.ts rename to src/platform/packages/private/kbn-management/settings/components/form/form.styles.ts diff --git a/packages/kbn-management/settings/components/form/form.test.tsx b/src/platform/packages/private/kbn-management/settings/components/form/form.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/form.test.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/form.test.tsx diff --git a/packages/kbn-management/settings/components/form/form.tsx b/src/platform/packages/private/kbn-management/settings/components/form/form.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/form.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/form.tsx diff --git a/packages/kbn-management/settings/components/form/index.ts b/src/platform/packages/private/kbn-management/settings/components/form/index.ts similarity index 100% rename from packages/kbn-management/settings/components/form/index.ts rename to src/platform/packages/private/kbn-management/settings/components/form/index.ts diff --git a/packages/kbn-management/settings/components/form/kibana.jsonc b/src/platform/packages/private/kbn-management/settings/components/form/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/components/form/kibana.jsonc rename to src/platform/packages/private/kbn-management/settings/components/form/kibana.jsonc diff --git a/packages/kbn-management/settings/components/form/mocks/context.tsx b/src/platform/packages/private/kbn-management/settings/components/form/mocks/context.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/mocks/context.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/mocks/context.tsx diff --git a/packages/kbn-management/settings/components/form/mocks/index.ts b/src/platform/packages/private/kbn-management/settings/components/form/mocks/index.ts similarity index 100% rename from packages/kbn-management/settings/components/form/mocks/index.ts rename to src/platform/packages/private/kbn-management/settings/components/form/mocks/index.ts diff --git a/packages/kbn-management/settings/components/form/mocks/settings_client.ts b/src/platform/packages/private/kbn-management/settings/components/form/mocks/settings_client.ts similarity index 100% rename from packages/kbn-management/settings/components/form/mocks/settings_client.ts rename to src/platform/packages/private/kbn-management/settings/components/form/mocks/settings_client.ts diff --git a/packages/kbn-management/settings/components/form/package.json b/src/platform/packages/private/kbn-management/settings/components/form/package.json similarity index 100% rename from packages/kbn-management/settings/components/form/package.json rename to src/platform/packages/private/kbn-management/settings/components/form/package.json diff --git a/packages/kbn-management/settings/components/form/reload_page_toast.tsx b/src/platform/packages/private/kbn-management/settings/components/form/reload_page_toast.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/reload_page_toast.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/reload_page_toast.tsx diff --git a/packages/kbn-management/settings/components/form/services.tsx b/src/platform/packages/private/kbn-management/settings/components/form/services.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/services.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/services.tsx diff --git a/packages/kbn-management/settings/components/form/storybook/form.stories.tsx b/src/platform/packages/private/kbn-management/settings/components/form/storybook/form.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/storybook/form.stories.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/storybook/form.stories.tsx diff --git a/src/platform/packages/private/kbn-management/settings/components/form/tsconfig.json b/src/platform/packages/private/kbn-management/settings/components/form/tsconfig.json new file mode 100644 index 0000000000000..56f49203120dc --- /dev/null +++ b/src/platform/packages/private/kbn-management/settings/components/form/tsconfig.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@testing-library/jest-dom", + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/management-settings-field-definition", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/management-settings-components-field-row", + "@kbn/react-kibana-context-root", + "@kbn/core-theme-browser-mocks", + "@kbn/core-i18n-browser", + "@kbn/react-kibana-mount", + "@kbn/core-notifications-browser", + "@kbn/core-theme-browser", + "@kbn/core-ui-settings-browser", + "@kbn/management-settings-components-field-input", + "@kbn/management-settings-components-field-category", + "@kbn/management-settings-utilities", + "@kbn/core-analytics-browser-mocks", + "@kbn/core-ui-settings-common", + "@kbn/core-user-profile-browser-mocks", + "@kbn/core-user-profile-browser", + ] +} diff --git a/packages/kbn-management/settings/components/form/types.ts b/src/platform/packages/private/kbn-management/settings/components/form/types.ts similarity index 100% rename from packages/kbn-management/settings/components/form/types.ts rename to src/platform/packages/private/kbn-management/settings/components/form/types.ts diff --git a/packages/kbn-management/settings/components/form/use_save.ts b/src/platform/packages/private/kbn-management/settings/components/form/use_save.ts similarity index 100% rename from packages/kbn-management/settings/components/form/use_save.ts rename to src/platform/packages/private/kbn-management/settings/components/form/use_save.ts diff --git a/packages/deeplinks/devtools/README.md b/src/platform/packages/shared/deeplinks/devtools/README.md similarity index 100% rename from packages/deeplinks/devtools/README.md rename to src/platform/packages/shared/deeplinks/devtools/README.md diff --git a/packages/deeplinks/devtools/constants.ts b/src/platform/packages/shared/deeplinks/devtools/constants.ts similarity index 100% rename from packages/deeplinks/devtools/constants.ts rename to src/platform/packages/shared/deeplinks/devtools/constants.ts diff --git a/packages/deeplinks/devtools/deep_links.ts b/src/platform/packages/shared/deeplinks/devtools/deep_links.ts similarity index 100% rename from packages/deeplinks/devtools/deep_links.ts rename to src/platform/packages/shared/deeplinks/devtools/deep_links.ts diff --git a/packages/deeplinks/devtools/index.ts b/src/platform/packages/shared/deeplinks/devtools/index.ts similarity index 100% rename from packages/deeplinks/devtools/index.ts rename to src/platform/packages/shared/deeplinks/devtools/index.ts diff --git a/src/platform/packages/shared/deeplinks/devtools/jest.config.js b/src/platform/packages/shared/deeplinks/devtools/jest.config.js new file mode 100644 index 0000000000000..f5eccf53d143c --- /dev/null +++ b/src/platform/packages/shared/deeplinks/devtools/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/deeplinks/devtools'], +}; diff --git a/packages/deeplinks/devtools/kibana.jsonc b/src/platform/packages/shared/deeplinks/devtools/kibana.jsonc similarity index 100% rename from packages/deeplinks/devtools/kibana.jsonc rename to src/platform/packages/shared/deeplinks/devtools/kibana.jsonc diff --git a/packages/deeplinks/devtools/package.json b/src/platform/packages/shared/deeplinks/devtools/package.json similarity index 100% rename from packages/deeplinks/devtools/package.json rename to src/platform/packages/shared/deeplinks/devtools/package.json diff --git a/src/platform/packages/shared/deeplinks/devtools/tsconfig.json b/src/platform/packages/shared/deeplinks/devtools/tsconfig.json new file mode 100644 index 0000000000000..af23c916b5d13 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/devtools/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + ] +} diff --git a/packages/deeplinks/management/README.md b/src/platform/packages/shared/deeplinks/management/README.md similarity index 100% rename from packages/deeplinks/management/README.md rename to src/platform/packages/shared/deeplinks/management/README.md diff --git a/packages/deeplinks/management/constants.ts b/src/platform/packages/shared/deeplinks/management/constants.ts similarity index 100% rename from packages/deeplinks/management/constants.ts rename to src/platform/packages/shared/deeplinks/management/constants.ts diff --git a/packages/deeplinks/management/deep_links.ts b/src/platform/packages/shared/deeplinks/management/deep_links.ts similarity index 100% rename from packages/deeplinks/management/deep_links.ts rename to src/platform/packages/shared/deeplinks/management/deep_links.ts diff --git a/packages/deeplinks/management/index.ts b/src/platform/packages/shared/deeplinks/management/index.ts similarity index 100% rename from packages/deeplinks/management/index.ts rename to src/platform/packages/shared/deeplinks/management/index.ts diff --git a/src/platform/packages/shared/deeplinks/management/jest.config.js b/src/platform/packages/shared/deeplinks/management/jest.config.js new file mode 100644 index 0000000000000..8a4039d61f2bc --- /dev/null +++ b/src/platform/packages/shared/deeplinks/management/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/deeplinks/management'], +}; diff --git a/packages/deeplinks/management/kibana.jsonc b/src/platform/packages/shared/deeplinks/management/kibana.jsonc similarity index 100% rename from packages/deeplinks/management/kibana.jsonc rename to src/platform/packages/shared/deeplinks/management/kibana.jsonc diff --git a/packages/deeplinks/management/package.json b/src/platform/packages/shared/deeplinks/management/package.json similarity index 100% rename from packages/deeplinks/management/package.json rename to src/platform/packages/shared/deeplinks/management/package.json diff --git a/src/platform/packages/shared/deeplinks/management/tsconfig.json b/src/platform/packages/shared/deeplinks/management/tsconfig.json new file mode 100644 index 0000000000000..18d16ae2e8837 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/management/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] +} diff --git a/packages/deeplinks/observability/README.md b/src/platform/packages/shared/deeplinks/observability/README.md similarity index 100% rename from packages/deeplinks/observability/README.md rename to src/platform/packages/shared/deeplinks/observability/README.md diff --git a/packages/deeplinks/observability/constants.ts b/src/platform/packages/shared/deeplinks/observability/constants.ts similarity index 100% rename from packages/deeplinks/observability/constants.ts rename to src/platform/packages/shared/deeplinks/observability/constants.ts diff --git a/packages/deeplinks/observability/deep_links.ts b/src/platform/packages/shared/deeplinks/observability/deep_links.ts similarity index 100% rename from packages/deeplinks/observability/deep_links.ts rename to src/platform/packages/shared/deeplinks/observability/deep_links.ts diff --git a/packages/deeplinks/observability/index.ts b/src/platform/packages/shared/deeplinks/observability/index.ts similarity index 100% rename from packages/deeplinks/observability/index.ts rename to src/platform/packages/shared/deeplinks/observability/index.ts diff --git a/src/platform/packages/shared/deeplinks/observability/jest.config.js b/src/platform/packages/shared/deeplinks/observability/jest.config.js new file mode 100644 index 0000000000000..132706f9af307 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/observability/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/deeplinks/observability'], +}; diff --git a/packages/deeplinks/observability/kibana.jsonc b/src/platform/packages/shared/deeplinks/observability/kibana.jsonc similarity index 100% rename from packages/deeplinks/observability/kibana.jsonc rename to src/platform/packages/shared/deeplinks/observability/kibana.jsonc diff --git a/src/platform/packages/shared/deeplinks/observability/locators/apm.ts b/src/platform/packages/shared/deeplinks/observability/locators/apm.ts new file mode 100644 index 0000000000000..64e446e883f1f --- /dev/null +++ b/src/platform/packages/shared/deeplinks/observability/locators/apm.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { SerializableRecord } from '@kbn/utility-types'; + +export const TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR = 'TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR'; + +export interface TransactionDetailsByTraceIdLocatorParams extends SerializableRecord { + rangeFrom?: string; + rangeTo?: string; + traceId: string; +} diff --git a/packages/deeplinks/observability/locators/dataset_quality.ts b/src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts similarity index 100% rename from packages/deeplinks/observability/locators/dataset_quality.ts rename to src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts diff --git a/packages/deeplinks/observability/locators/dataset_quality_details.ts b/src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts similarity index 100% rename from packages/deeplinks/observability/locators/dataset_quality_details.ts rename to src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts diff --git a/src/platform/packages/shared/deeplinks/observability/locators/index.ts b/src/platform/packages/shared/deeplinks/observability/locators/index.ts new file mode 100644 index 0000000000000..3317df2268df3 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/observability/locators/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './apm'; +export * from './dataset_quality'; +export * from './dataset_quality_details'; +export * from './logs_explorer'; +export * from './observability_logs_explorer'; +export * from './observability_onboarding'; +export * from './uptime'; diff --git a/packages/deeplinks/observability/locators/logs_explorer.ts b/src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts similarity index 100% rename from packages/deeplinks/observability/locators/logs_explorer.ts rename to src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts diff --git a/packages/deeplinks/observability/locators/observability_logs_explorer.ts b/src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts similarity index 100% rename from packages/deeplinks/observability/locators/observability_logs_explorer.ts rename to src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts diff --git a/packages/deeplinks/observability/locators/observability_onboarding.ts b/src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts similarity index 100% rename from packages/deeplinks/observability/locators/observability_onboarding.ts rename to src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts diff --git a/packages/deeplinks/observability/locators/uptime.ts b/src/platform/packages/shared/deeplinks/observability/locators/uptime.ts similarity index 100% rename from packages/deeplinks/observability/locators/uptime.ts rename to src/platform/packages/shared/deeplinks/observability/locators/uptime.ts diff --git a/packages/deeplinks/observability/package.json b/src/platform/packages/shared/deeplinks/observability/package.json similarity index 100% rename from packages/deeplinks/observability/package.json rename to src/platform/packages/shared/deeplinks/observability/package.json diff --git a/src/platform/packages/shared/deeplinks/observability/tsconfig.json b/src/platform/packages/shared/deeplinks/observability/tsconfig.json new file mode 100644 index 0000000000000..e1c207f1ba4d2 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/observability/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/utility-types", + "@kbn/es-query", + ] +} diff --git a/packages/deeplinks/security/README.md b/src/platform/packages/shared/deeplinks/security/README.md similarity index 100% rename from packages/deeplinks/security/README.md rename to src/platform/packages/shared/deeplinks/security/README.md diff --git a/packages/deeplinks/security/deep_links.ts b/src/platform/packages/shared/deeplinks/security/deep_links.ts similarity index 92% rename from packages/deeplinks/security/deep_links.ts rename to src/platform/packages/shared/deeplinks/security/deep_links.ts index c1d9b3b3cb6af..464003abd369c 100644 --- a/packages/deeplinks/security/deep_links.ts +++ b/src/platform/packages/shared/deeplinks/security/deep_links.ts @@ -22,7 +22,7 @@ export enum SecurityPageName { caseCreate = 'cases_create', // must match `CasesDeepLinkId.casesCreate` /* * Warning: Computed values are not permitted in an enum with string valued members - * All cloud security posture page names must match `CloudSecurityPosturePageId` in x-pack/plugins/cloud_security_posture/public/common/navigation/types.ts + * All cloud security posture page names must match `CloudSecurityPosturePageId` in x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/types.ts */ cloudSecurityPostureBenchmarks = 'cloud_security_posture-benchmarks', cloudSecurityPostureDashboard = 'cloud_security_posture-dashboard', @@ -30,7 +30,7 @@ export enum SecurityPageName { cloudSecurityPostureRules = 'cloud_security_posture-rules', /* * Warning: Computed values are not permitted in an enum with string valued members - * All cloud defend page names must match `CloudDefendPageId` in x-pack/plugins/cloud_defend/public/common/navigation/types.ts + * All cloud defend page names must match `CloudDefendPageId` in x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/types.ts */ cloudDefend = 'cloud_defend', cloudDefendPolicies = 'cloud_defend-policies', @@ -72,7 +72,7 @@ export enum SecurityPageName { siemMigrationsRules = 'siem_migrations-rules', /* * Warning: Computed values are not permitted in an enum with string valued members - * All threat intelligence page names must match `TIPageId` in x-pack/plugins/threat_intelligence/public/common/navigation/types.ts + * All threat intelligence page names must match `TIPageId` in x-pack/solutions/security/plugins/threat_intelligence/public/common/navigation/types.ts */ threatIntelligence = 'threat_intelligence', timelines = 'timelines', diff --git a/packages/deeplinks/security/index.ts b/src/platform/packages/shared/deeplinks/security/index.ts similarity index 100% rename from packages/deeplinks/security/index.ts rename to src/platform/packages/shared/deeplinks/security/index.ts diff --git a/src/platform/packages/shared/deeplinks/security/jest.config.js b/src/platform/packages/shared/deeplinks/security/jest.config.js new file mode 100644 index 0000000000000..8e931a6b4d6fc --- /dev/null +++ b/src/platform/packages/shared/deeplinks/security/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/deeplinks/security'], +}; diff --git a/packages/deeplinks/security/kibana.jsonc b/src/platform/packages/shared/deeplinks/security/kibana.jsonc similarity index 100% rename from packages/deeplinks/security/kibana.jsonc rename to src/platform/packages/shared/deeplinks/security/kibana.jsonc diff --git a/packages/deeplinks/security/package.json b/src/platform/packages/shared/deeplinks/security/package.json similarity index 100% rename from packages/deeplinks/security/package.json rename to src/platform/packages/shared/deeplinks/security/package.json diff --git a/src/platform/packages/shared/deeplinks/security/tsconfig.json b/src/platform/packages/shared/deeplinks/security/tsconfig.json new file mode 100644 index 0000000000000..18d16ae2e8837 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/security/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] +} diff --git a/packages/kbn-avc-banner/README.md b/src/platform/packages/shared/kbn-avc-banner/README.md similarity index 100% rename from packages/kbn-avc-banner/README.md rename to src/platform/packages/shared/kbn-avc-banner/README.md diff --git a/packages/kbn-avc-banner/index.ts b/src/platform/packages/shared/kbn-avc-banner/index.ts similarity index 100% rename from packages/kbn-avc-banner/index.ts rename to src/platform/packages/shared/kbn-avc-banner/index.ts diff --git a/src/platform/packages/shared/kbn-avc-banner/jest.config.js b/src/platform/packages/shared/kbn-avc-banner/jest.config.js new file mode 100644 index 0000000000000..09256a9d88b91 --- /dev/null +++ b/src/platform/packages/shared/kbn-avc-banner/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-avc-banner'], +}; diff --git a/packages/kbn-avc-banner/kibana.jsonc b/src/platform/packages/shared/kbn-avc-banner/kibana.jsonc similarity index 100% rename from packages/kbn-avc-banner/kibana.jsonc rename to src/platform/packages/shared/kbn-avc-banner/kibana.jsonc diff --git a/packages/kbn-avc-banner/package.json b/src/platform/packages/shared/kbn-avc-banner/package.json similarity index 100% rename from packages/kbn-avc-banner/package.json rename to src/platform/packages/shared/kbn-avc-banner/package.json diff --git a/packages/kbn-avc-banner/src/avc_banner_background.svg b/src/platform/packages/shared/kbn-avc-banner/src/avc_banner_background.svg similarity index 100% rename from packages/kbn-avc-banner/src/avc_banner_background.svg rename to src/platform/packages/shared/kbn-avc-banner/src/avc_banner_background.svg diff --git a/packages/kbn-avc-banner/src/custom.d.ts b/src/platform/packages/shared/kbn-avc-banner/src/custom.d.ts similarity index 100% rename from packages/kbn-avc-banner/src/custom.d.ts rename to src/platform/packages/shared/kbn-avc-banner/src/custom.d.ts diff --git a/packages/kbn-avc-banner/src/index.tsx b/src/platform/packages/shared/kbn-avc-banner/src/index.tsx similarity index 100% rename from packages/kbn-avc-banner/src/index.tsx rename to src/platform/packages/shared/kbn-avc-banner/src/index.tsx diff --git a/src/platform/packages/shared/kbn-avc-banner/tsconfig.json b/src/platform/packages/shared/kbn-avc-banner/tsconfig.json new file mode 100644 index 0000000000000..1f9876c64502f --- /dev/null +++ b/src/platform/packages/shared/kbn-avc-banner/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/kibana-react-plugin", + ] +} diff --git a/packages/kbn-cell-actions/.storybook/main.js b/src/platform/packages/shared/kbn-cell-actions/.storybook/main.js similarity index 100% rename from packages/kbn-cell-actions/.storybook/main.js rename to src/platform/packages/shared/kbn-cell-actions/.storybook/main.js diff --git a/packages/kbn-cell-actions/README.md b/src/platform/packages/shared/kbn-cell-actions/README.md similarity index 100% rename from packages/kbn-cell-actions/README.md rename to src/platform/packages/shared/kbn-cell-actions/README.md diff --git a/packages/kbn-cell-actions/actions/index.ts b/src/platform/packages/shared/kbn-cell-actions/actions/index.ts similarity index 100% rename from packages/kbn-cell-actions/actions/index.ts rename to src/platform/packages/shared/kbn-cell-actions/actions/index.ts diff --git a/packages/kbn-cell-actions/actions/utils.ts b/src/platform/packages/shared/kbn-cell-actions/actions/utils.ts similarity index 100% rename from packages/kbn-cell-actions/actions/utils.ts rename to src/platform/packages/shared/kbn-cell-actions/actions/utils.ts diff --git a/packages/kbn-cell-actions/constants.ts b/src/platform/packages/shared/kbn-cell-actions/constants.ts similarity index 100% rename from packages/kbn-cell-actions/constants.ts rename to src/platform/packages/shared/kbn-cell-actions/constants.ts diff --git a/packages/kbn-cell-actions/index.ts b/src/platform/packages/shared/kbn-cell-actions/index.ts similarity index 100% rename from packages/kbn-cell-actions/index.ts rename to src/platform/packages/shared/kbn-cell-actions/index.ts diff --git a/src/platform/packages/shared/kbn-cell-actions/jest.config.js b/src/platform/packages/shared/kbn-cell-actions/jest.config.js new file mode 100644 index 0000000000000..b55e4223182c6 --- /dev/null +++ b/src/platform/packages/shared/kbn-cell-actions/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-cell-actions'], +}; diff --git a/packages/kbn-cell-actions/kibana.jsonc b/src/platform/packages/shared/kbn-cell-actions/kibana.jsonc similarity index 100% rename from packages/kbn-cell-actions/kibana.jsonc rename to src/platform/packages/shared/kbn-cell-actions/kibana.jsonc diff --git a/packages/kbn-cell-actions/package.json b/src/platform/packages/shared/kbn-cell-actions/package.json similarity index 100% rename from packages/kbn-cell-actions/package.json rename to src/platform/packages/shared/kbn-cell-actions/package.json diff --git a/packages/kbn-cell-actions/src/__stories__/cell_actions.stories.tsx b/src/platform/packages/shared/kbn-cell-actions/src/__stories__/cell_actions.stories.tsx similarity index 100% rename from packages/kbn-cell-actions/src/__stories__/cell_actions.stories.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/__stories__/cell_actions.stories.tsx diff --git a/packages/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.test.ts diff --git a/packages/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.ts diff --git a/packages/kbn-cell-actions/src/actions/copy_to_clipboard/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/copy_to_clipboard/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/index.ts diff --git a/packages/kbn-cell-actions/src/actions/factory.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/factory.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/factory.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/factory.test.ts diff --git a/packages/kbn-cell-actions/src/actions/factory.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/factory.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/factory.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/factory.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/add_filter.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/add_filter.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/add_filter.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/add_filter.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/create_filter.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/create_filter.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/create_filter.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/create_filter.test.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/create_filter.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/create_filter.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/create_filter.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/create_filter.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/filter_in.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_in.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/filter_in.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_in.test.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/filter_in.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_in.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/filter_in.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_in.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/filter_out.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_out.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/filter_out.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_out.test.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/filter_out.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_out.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/filter_out.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_out.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/index.ts diff --git a/packages/kbn-cell-actions/src/actions/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/index.ts diff --git a/packages/kbn-cell-actions/src/actions/translations.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/translations.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/translations.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/translations.ts diff --git a/packages/kbn-cell-actions/src/actions/types.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/types.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts diff --git a/packages/kbn-cell-actions/src/actions/utils.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/utils.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/utils.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/utils.test.ts diff --git a/packages/kbn-cell-actions/src/actions/utils.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/utils.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/utils.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/utils.ts diff --git a/packages/kbn-cell-actions/src/components/cell_action_item.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/cell_action_item.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/cell_action_item.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/cell_action_item.test.tsx diff --git a/packages/kbn-cell-actions/src/components/cell_action_item.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/cell_action_item.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/cell_action_item.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/cell_action_item.tsx diff --git a/packages/kbn-cell-actions/src/components/cell_actions.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/cell_actions.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.test.tsx diff --git a/packages/kbn-cell-actions/src/components/cell_actions.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/cell_actions.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.tsx diff --git a/packages/kbn-cell-actions/src/components/extra_actions_button.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_button.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/extra_actions_button.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_button.test.tsx diff --git a/packages/kbn-cell-actions/src/components/extra_actions_button.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_button.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/extra_actions_button.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_button.tsx diff --git a/packages/kbn-cell-actions/src/components/extra_actions_popover.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_popover.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/extra_actions_popover.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_popover.test.tsx diff --git a/packages/kbn-cell-actions/src/components/extra_actions_popover.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_popover.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/extra_actions_popover.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_popover.tsx diff --git a/packages/kbn-cell-actions/src/components/hover_actions_popover.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/hover_actions_popover.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/hover_actions_popover.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/hover_actions_popover.test.tsx diff --git a/packages/kbn-cell-actions/src/components/hover_actions_popover.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/hover_actions_popover.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/hover_actions_popover.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/hover_actions_popover.tsx diff --git a/packages/kbn-cell-actions/src/components/index.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/index.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/index.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/index.tsx diff --git a/packages/kbn-cell-actions/src/components/inline_actions.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/inline_actions.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/inline_actions.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/inline_actions.test.tsx diff --git a/packages/kbn-cell-actions/src/components/inline_actions.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/inline_actions.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/inline_actions.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/inline_actions.tsx diff --git a/packages/kbn-cell-actions/src/components/translations.ts b/src/platform/packages/shared/kbn-cell-actions/src/components/translations.ts similarity index 100% rename from packages/kbn-cell-actions/src/components/translations.ts rename to src/platform/packages/shared/kbn-cell-actions/src/components/translations.ts diff --git a/packages/kbn-cell-actions/src/constants.ts b/src/platform/packages/shared/kbn-cell-actions/src/constants.ts similarity index 100% rename from packages/kbn-cell-actions/src/constants.ts rename to src/platform/packages/shared/kbn-cell-actions/src/constants.ts diff --git a/packages/kbn-cell-actions/src/context/cell_actions_context.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/context/cell_actions_context.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.test.tsx diff --git a/packages/kbn-cell-actions/src/context/cell_actions_context.tsx b/src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.tsx similarity index 100% rename from packages/kbn-cell-actions/src/context/cell_actions_context.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.tsx diff --git a/packages/kbn-cell-actions/src/context/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/context/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/context/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/context/index.ts diff --git a/packages/kbn-cell-actions/src/hooks/actions.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/hooks/actions.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/hooks/actions.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/actions.test.ts diff --git a/packages/kbn-cell-actions/src/hooks/actions.ts b/src/platform/packages/shared/kbn-cell-actions/src/hooks/actions.ts similarity index 100% rename from packages/kbn-cell-actions/src/hooks/actions.ts rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/actions.ts diff --git a/packages/kbn-cell-actions/src/hooks/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/hooks/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/hooks/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/index.ts diff --git a/packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx diff --git a/packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx b/src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx similarity index 100% rename from packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx diff --git a/packages/kbn-cell-actions/src/hooks/use_load_actions.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/hooks/use_load_actions.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/hooks/use_load_actions.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/use_load_actions.test.tsx diff --git a/packages/kbn-cell-actions/src/hooks/use_load_actions.ts b/src/platform/packages/shared/kbn-cell-actions/src/hooks/use_load_actions.ts similarity index 100% rename from packages/kbn-cell-actions/src/hooks/use_load_actions.ts rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/use_load_actions.ts diff --git a/packages/kbn-cell-actions/src/mocks/helpers.ts b/src/platform/packages/shared/kbn-cell-actions/src/mocks/helpers.ts similarity index 100% rename from packages/kbn-cell-actions/src/mocks/helpers.ts rename to src/platform/packages/shared/kbn-cell-actions/src/mocks/helpers.ts diff --git a/packages/kbn-cell-actions/src/types.ts b/src/platform/packages/shared/kbn-cell-actions/src/types.ts similarity index 100% rename from packages/kbn-cell-actions/src/types.ts rename to src/platform/packages/shared/kbn-cell-actions/src/types.ts diff --git a/src/platform/packages/shared/kbn-cell-actions/tsconfig.json b/src/platform/packages/shared/kbn-cell-actions/tsconfig.json new file mode 100644 index 0000000000000..f71c8caf5dcfe --- /dev/null +++ b/src/platform/packages/shared/kbn-cell-actions/tsconfig.json @@ -0,0 +1,28 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react" + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/ui-theme", + "@kbn/i18n", + "@kbn/core", + "@kbn/data-plugin", + "@kbn/es-query", + "@kbn/ui-actions-plugin", + "@kbn/field-types", + "@kbn/data-views-plugin", + "@kbn/core-notifications-browser", + "@kbn/utility-types", + ], + "exclude": ["target/**/*"] +} diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.g4 b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.g4 index 0857f14f9d0f0..ab236653dde18 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.g4 +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.g4 @@ -80,7 +80,7 @@ regexBooleanExpression ; matchBooleanExpression - : fieldExp=qualifiedName COLON queryString=constant + : fieldExp=qualifiedName (CAST_OP fieldType=dataType)? COLON matchQuery=constant ; valueExpression diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.interp b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.interp index 50493f584fe4c..c5b37fa411f65 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.interp +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.interp @@ -330,4 +330,4 @@ joinPredicate atn: -[4, 1, 128, 635, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 142, 8, 1, 10, 1, 12, 1, 145, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 153, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 173, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 185, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 192, 8, 5, 10, 5, 12, 5, 195, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 202, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 207, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 215, 8, 5, 10, 5, 12, 5, 218, 9, 5, 1, 6, 1, 6, 3, 6, 222, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 229, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 234, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 245, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 251, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 259, 8, 9, 10, 9, 12, 9, 262, 9, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 272, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 277, 8, 10, 10, 10, 12, 10, 280, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 288, 8, 11, 10, 11, 12, 11, 291, 9, 11, 3, 11, 293, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 5, 15, 307, 8, 15, 10, 15, 12, 15, 310, 9, 15, 1, 16, 1, 16, 1, 16, 3, 16, 315, 8, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 323, 8, 17, 10, 17, 12, 17, 326, 9, 17, 1, 17, 3, 17, 329, 8, 17, 1, 18, 1, 18, 1, 18, 3, 18, 334, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 344, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 350, 8, 22, 10, 22, 12, 22, 353, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 363, 8, 24, 10, 24, 12, 24, 366, 9, 24, 1, 24, 3, 24, 369, 8, 24, 1, 24, 1, 24, 3, 24, 373, 8, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 380, 8, 26, 1, 26, 1, 26, 3, 26, 384, 8, 26, 1, 27, 1, 27, 1, 27, 5, 27, 389, 8, 27, 10, 27, 12, 27, 392, 9, 27, 1, 28, 1, 28, 1, 28, 3, 28, 397, 8, 28, 1, 29, 1, 29, 1, 29, 5, 29, 402, 8, 29, 10, 29, 12, 29, 405, 9, 29, 1, 30, 1, 30, 1, 30, 5, 30, 410, 8, 30, 10, 30, 12, 30, 413, 9, 30, 1, 31, 1, 31, 1, 31, 5, 31, 418, 8, 31, 10, 31, 12, 31, 421, 9, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 3, 33, 428, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 443, 8, 34, 10, 34, 12, 34, 446, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 454, 8, 34, 10, 34, 12, 34, 457, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 465, 8, 34, 10, 34, 12, 34, 468, 9, 34, 1, 34, 1, 34, 3, 34, 472, 8, 34, 1, 35, 1, 35, 3, 35, 476, 8, 35, 1, 36, 1, 36, 1, 36, 3, 36, 481, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 490, 8, 38, 10, 38, 12, 38, 493, 9, 38, 1, 39, 1, 39, 3, 39, 497, 8, 39, 1, 39, 1, 39, 3, 39, 501, 8, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 513, 8, 42, 10, 42, 12, 42, 516, 9, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 526, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 5, 47, 538, 8, 47, 10, 47, 12, 47, 541, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 3, 50, 551, 8, 50, 1, 51, 3, 51, 554, 8, 51, 1, 51, 1, 51, 1, 52, 3, 52, 559, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 581, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 587, 8, 58, 10, 58, 12, 58, 590, 9, 58, 3, 58, 592, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 597, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 610, 8, 61, 1, 62, 3, 62, 613, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 3, 63, 622, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 628, 8, 64, 10, 64, 12, 64, 631, 9, 64, 1, 65, 1, 65, 1, 65, 0, 4, 2, 10, 18, 20, 66, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 0, 9, 1, 0, 64, 65, 1, 0, 66, 68, 2, 0, 30, 30, 81, 81, 1, 0, 72, 73, 2, 0, 35, 35, 40, 40, 2, 0, 43, 43, 46, 46, 2, 0, 42, 42, 56, 56, 2, 0, 57, 57, 59, 63, 1, 0, 22, 24, 660, 0, 132, 1, 0, 0, 0, 2, 135, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 6, 172, 1, 0, 0, 0, 8, 174, 1, 0, 0, 0, 10, 206, 1, 0, 0, 0, 12, 233, 1, 0, 0, 0, 14, 235, 1, 0, 0, 0, 16, 244, 1, 0, 0, 0, 18, 250, 1, 0, 0, 0, 20, 271, 1, 0, 0, 0, 22, 281, 1, 0, 0, 0, 24, 296, 1, 0, 0, 0, 26, 298, 1, 0, 0, 0, 28, 300, 1, 0, 0, 0, 30, 303, 1, 0, 0, 0, 32, 314, 1, 0, 0, 0, 34, 318, 1, 0, 0, 0, 36, 333, 1, 0, 0, 0, 38, 337, 1, 0, 0, 0, 40, 339, 1, 0, 0, 0, 42, 343, 1, 0, 0, 0, 44, 345, 1, 0, 0, 0, 46, 354, 1, 0, 0, 0, 48, 358, 1, 0, 0, 0, 50, 374, 1, 0, 0, 0, 52, 377, 1, 0, 0, 0, 54, 385, 1, 0, 0, 0, 56, 393, 1, 0, 0, 0, 58, 398, 1, 0, 0, 0, 60, 406, 1, 0, 0, 0, 62, 414, 1, 0, 0, 0, 64, 422, 1, 0, 0, 0, 66, 427, 1, 0, 0, 0, 68, 471, 1, 0, 0, 0, 70, 475, 1, 0, 0, 0, 72, 480, 1, 0, 0, 0, 74, 482, 1, 0, 0, 0, 76, 485, 1, 0, 0, 0, 78, 494, 1, 0, 0, 0, 80, 502, 1, 0, 0, 0, 82, 505, 1, 0, 0, 0, 84, 508, 1, 0, 0, 0, 86, 517, 1, 0, 0, 0, 88, 521, 1, 0, 0, 0, 90, 527, 1, 0, 0, 0, 92, 531, 1, 0, 0, 0, 94, 534, 1, 0, 0, 0, 96, 542, 1, 0, 0, 0, 98, 546, 1, 0, 0, 0, 100, 550, 1, 0, 0, 0, 102, 553, 1, 0, 0, 0, 104, 558, 1, 0, 0, 0, 106, 562, 1, 0, 0, 0, 108, 564, 1, 0, 0, 0, 110, 566, 1, 0, 0, 0, 112, 569, 1, 0, 0, 0, 114, 573, 1, 0, 0, 0, 116, 576, 1, 0, 0, 0, 118, 596, 1, 0, 0, 0, 120, 600, 1, 0, 0, 0, 122, 605, 1, 0, 0, 0, 124, 612, 1, 0, 0, 0, 126, 618, 1, 0, 0, 0, 128, 623, 1, 0, 0, 0, 130, 632, 1, 0, 0, 0, 132, 133, 3, 2, 1, 0, 133, 134, 5, 0, 0, 1, 134, 1, 1, 0, 0, 0, 135, 136, 6, 1, -1, 0, 136, 137, 3, 4, 2, 0, 137, 143, 1, 0, 0, 0, 138, 139, 10, 1, 0, 0, 139, 140, 5, 29, 0, 0, 140, 142, 3, 6, 3, 0, 141, 138, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 3, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 153, 3, 110, 55, 0, 147, 153, 3, 34, 17, 0, 148, 153, 3, 28, 14, 0, 149, 153, 3, 114, 57, 0, 150, 151, 4, 2, 1, 0, 151, 153, 3, 48, 24, 0, 152, 146, 1, 0, 0, 0, 152, 147, 1, 0, 0, 0, 152, 148, 1, 0, 0, 0, 152, 149, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 153, 5, 1, 0, 0, 0, 154, 173, 3, 50, 25, 0, 155, 173, 3, 8, 4, 0, 156, 173, 3, 80, 40, 0, 157, 173, 3, 74, 37, 0, 158, 173, 3, 52, 26, 0, 159, 173, 3, 76, 38, 0, 160, 173, 3, 82, 41, 0, 161, 173, 3, 84, 42, 0, 162, 173, 3, 88, 44, 0, 163, 173, 3, 90, 45, 0, 164, 173, 3, 116, 58, 0, 165, 173, 3, 92, 46, 0, 166, 167, 4, 3, 2, 0, 167, 173, 3, 122, 61, 0, 168, 169, 4, 3, 3, 0, 169, 173, 3, 120, 60, 0, 170, 171, 4, 3, 4, 0, 171, 173, 3, 124, 62, 0, 172, 154, 1, 0, 0, 0, 172, 155, 1, 0, 0, 0, 172, 156, 1, 0, 0, 0, 172, 157, 1, 0, 0, 0, 172, 158, 1, 0, 0, 0, 172, 159, 1, 0, 0, 0, 172, 160, 1, 0, 0, 0, 172, 161, 1, 0, 0, 0, 172, 162, 1, 0, 0, 0, 172, 163, 1, 0, 0, 0, 172, 164, 1, 0, 0, 0, 172, 165, 1, 0, 0, 0, 172, 166, 1, 0, 0, 0, 172, 168, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 173, 7, 1, 0, 0, 0, 174, 175, 5, 16, 0, 0, 175, 176, 3, 10, 5, 0, 176, 9, 1, 0, 0, 0, 177, 178, 6, 5, -1, 0, 178, 179, 5, 49, 0, 0, 179, 207, 3, 10, 5, 8, 180, 207, 3, 16, 8, 0, 181, 207, 3, 12, 6, 0, 182, 184, 3, 16, 8, 0, 183, 185, 5, 49, 0, 0, 184, 183, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 187, 5, 44, 0, 0, 187, 188, 5, 48, 0, 0, 188, 193, 3, 16, 8, 0, 189, 190, 5, 39, 0, 0, 190, 192, 3, 16, 8, 0, 191, 189, 1, 0, 0, 0, 192, 195, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 196, 1, 0, 0, 0, 195, 193, 1, 0, 0, 0, 196, 197, 5, 55, 0, 0, 197, 207, 1, 0, 0, 0, 198, 199, 3, 16, 8, 0, 199, 201, 5, 45, 0, 0, 200, 202, 5, 49, 0, 0, 201, 200, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 204, 5, 50, 0, 0, 204, 207, 1, 0, 0, 0, 205, 207, 3, 14, 7, 0, 206, 177, 1, 0, 0, 0, 206, 180, 1, 0, 0, 0, 206, 181, 1, 0, 0, 0, 206, 182, 1, 0, 0, 0, 206, 198, 1, 0, 0, 0, 206, 205, 1, 0, 0, 0, 207, 216, 1, 0, 0, 0, 208, 209, 10, 5, 0, 0, 209, 210, 5, 34, 0, 0, 210, 215, 3, 10, 5, 6, 211, 212, 10, 4, 0, 0, 212, 213, 5, 52, 0, 0, 213, 215, 3, 10, 5, 5, 214, 208, 1, 0, 0, 0, 214, 211, 1, 0, 0, 0, 215, 218, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 11, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 219, 221, 3, 16, 8, 0, 220, 222, 5, 49, 0, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 224, 5, 47, 0, 0, 224, 225, 3, 106, 53, 0, 225, 234, 1, 0, 0, 0, 226, 228, 3, 16, 8, 0, 227, 229, 5, 49, 0, 0, 228, 227, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 231, 5, 54, 0, 0, 231, 232, 3, 106, 53, 0, 232, 234, 1, 0, 0, 0, 233, 219, 1, 0, 0, 0, 233, 226, 1, 0, 0, 0, 234, 13, 1, 0, 0, 0, 235, 236, 3, 58, 29, 0, 236, 237, 5, 38, 0, 0, 237, 238, 3, 68, 34, 0, 238, 15, 1, 0, 0, 0, 239, 245, 3, 18, 9, 0, 240, 241, 3, 18, 9, 0, 241, 242, 3, 108, 54, 0, 242, 243, 3, 18, 9, 0, 243, 245, 1, 0, 0, 0, 244, 239, 1, 0, 0, 0, 244, 240, 1, 0, 0, 0, 245, 17, 1, 0, 0, 0, 246, 247, 6, 9, -1, 0, 247, 251, 3, 20, 10, 0, 248, 249, 7, 0, 0, 0, 249, 251, 3, 18, 9, 3, 250, 246, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 260, 1, 0, 0, 0, 252, 253, 10, 2, 0, 0, 253, 254, 7, 1, 0, 0, 254, 259, 3, 18, 9, 3, 255, 256, 10, 1, 0, 0, 256, 257, 7, 0, 0, 0, 257, 259, 3, 18, 9, 2, 258, 252, 1, 0, 0, 0, 258, 255, 1, 0, 0, 0, 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 19, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 264, 6, 10, -1, 0, 264, 272, 3, 68, 34, 0, 265, 272, 3, 58, 29, 0, 266, 272, 3, 22, 11, 0, 267, 268, 5, 48, 0, 0, 268, 269, 3, 10, 5, 0, 269, 270, 5, 55, 0, 0, 270, 272, 1, 0, 0, 0, 271, 263, 1, 0, 0, 0, 271, 265, 1, 0, 0, 0, 271, 266, 1, 0, 0, 0, 271, 267, 1, 0, 0, 0, 272, 278, 1, 0, 0, 0, 273, 274, 10, 1, 0, 0, 274, 275, 5, 37, 0, 0, 275, 277, 3, 26, 13, 0, 276, 273, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 21, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 282, 3, 24, 12, 0, 282, 292, 5, 48, 0, 0, 283, 293, 5, 66, 0, 0, 284, 289, 3, 10, 5, 0, 285, 286, 5, 39, 0, 0, 286, 288, 3, 10, 5, 0, 287, 285, 1, 0, 0, 0, 288, 291, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 293, 1, 0, 0, 0, 291, 289, 1, 0, 0, 0, 292, 283, 1, 0, 0, 0, 292, 284, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 295, 5, 55, 0, 0, 295, 23, 1, 0, 0, 0, 296, 297, 3, 72, 36, 0, 297, 25, 1, 0, 0, 0, 298, 299, 3, 64, 32, 0, 299, 27, 1, 0, 0, 0, 300, 301, 5, 12, 0, 0, 301, 302, 3, 30, 15, 0, 302, 29, 1, 0, 0, 0, 303, 308, 3, 32, 16, 0, 304, 305, 5, 39, 0, 0, 305, 307, 3, 32, 16, 0, 306, 304, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 31, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 311, 312, 3, 58, 29, 0, 312, 313, 5, 36, 0, 0, 313, 315, 1, 0, 0, 0, 314, 311, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 317, 3, 10, 5, 0, 317, 33, 1, 0, 0, 0, 318, 319, 5, 6, 0, 0, 319, 324, 3, 36, 18, 0, 320, 321, 5, 39, 0, 0, 321, 323, 3, 36, 18, 0, 322, 320, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 327, 329, 3, 42, 21, 0, 328, 327, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 35, 1, 0, 0, 0, 330, 331, 3, 38, 19, 0, 331, 332, 5, 38, 0, 0, 332, 334, 1, 0, 0, 0, 333, 330, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 336, 3, 40, 20, 0, 336, 37, 1, 0, 0, 0, 337, 338, 5, 81, 0, 0, 338, 39, 1, 0, 0, 0, 339, 340, 7, 2, 0, 0, 340, 41, 1, 0, 0, 0, 341, 344, 3, 44, 22, 0, 342, 344, 3, 46, 23, 0, 343, 341, 1, 0, 0, 0, 343, 342, 1, 0, 0, 0, 344, 43, 1, 0, 0, 0, 345, 346, 5, 80, 0, 0, 346, 351, 5, 81, 0, 0, 347, 348, 5, 39, 0, 0, 348, 350, 5, 81, 0, 0, 349, 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 45, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 355, 5, 70, 0, 0, 355, 356, 3, 44, 22, 0, 356, 357, 5, 71, 0, 0, 357, 47, 1, 0, 0, 0, 358, 359, 5, 19, 0, 0, 359, 364, 3, 36, 18, 0, 360, 361, 5, 39, 0, 0, 361, 363, 3, 36, 18, 0, 362, 360, 1, 0, 0, 0, 363, 366, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 367, 369, 3, 54, 27, 0, 368, 367, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 372, 1, 0, 0, 0, 370, 371, 5, 33, 0, 0, 371, 373, 3, 30, 15, 0, 372, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 49, 1, 0, 0, 0, 374, 375, 5, 4, 0, 0, 375, 376, 3, 30, 15, 0, 376, 51, 1, 0, 0, 0, 377, 379, 5, 15, 0, 0, 378, 380, 3, 54, 27, 0, 379, 378, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 383, 1, 0, 0, 0, 381, 382, 5, 33, 0, 0, 382, 384, 3, 30, 15, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 53, 1, 0, 0, 0, 385, 390, 3, 56, 28, 0, 386, 387, 5, 39, 0, 0, 387, 389, 3, 56, 28, 0, 388, 386, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 55, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 393, 396, 3, 32, 16, 0, 394, 395, 5, 16, 0, 0, 395, 397, 3, 10, 5, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 57, 1, 0, 0, 0, 398, 403, 3, 72, 36, 0, 399, 400, 5, 41, 0, 0, 400, 402, 3, 72, 36, 0, 401, 399, 1, 0, 0, 0, 402, 405, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 59, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 406, 411, 3, 66, 33, 0, 407, 408, 5, 41, 0, 0, 408, 410, 3, 66, 33, 0, 409, 407, 1, 0, 0, 0, 410, 413, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 61, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 414, 419, 3, 60, 30, 0, 415, 416, 5, 39, 0, 0, 416, 418, 3, 60, 30, 0, 417, 415, 1, 0, 0, 0, 418, 421, 1, 0, 0, 0, 419, 417, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 63, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 422, 423, 7, 3, 0, 0, 423, 65, 1, 0, 0, 0, 424, 428, 5, 85, 0, 0, 425, 426, 4, 33, 10, 0, 426, 428, 3, 70, 35, 0, 427, 424, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 428, 67, 1, 0, 0, 0, 429, 472, 5, 50, 0, 0, 430, 431, 3, 104, 52, 0, 431, 432, 5, 72, 0, 0, 432, 472, 1, 0, 0, 0, 433, 472, 3, 102, 51, 0, 434, 472, 3, 104, 52, 0, 435, 472, 3, 98, 49, 0, 436, 472, 3, 70, 35, 0, 437, 472, 3, 106, 53, 0, 438, 439, 5, 70, 0, 0, 439, 444, 3, 100, 50, 0, 440, 441, 5, 39, 0, 0, 441, 443, 3, 100, 50, 0, 442, 440, 1, 0, 0, 0, 443, 446, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 447, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 447, 448, 5, 71, 0, 0, 448, 472, 1, 0, 0, 0, 449, 450, 5, 70, 0, 0, 450, 455, 3, 98, 49, 0, 451, 452, 5, 39, 0, 0, 452, 454, 3, 98, 49, 0, 453, 451, 1, 0, 0, 0, 454, 457, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 458, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 458, 459, 5, 71, 0, 0, 459, 472, 1, 0, 0, 0, 460, 461, 5, 70, 0, 0, 461, 466, 3, 106, 53, 0, 462, 463, 5, 39, 0, 0, 463, 465, 3, 106, 53, 0, 464, 462, 1, 0, 0, 0, 465, 468, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 469, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 469, 470, 5, 71, 0, 0, 470, 472, 1, 0, 0, 0, 471, 429, 1, 0, 0, 0, 471, 430, 1, 0, 0, 0, 471, 433, 1, 0, 0, 0, 471, 434, 1, 0, 0, 0, 471, 435, 1, 0, 0, 0, 471, 436, 1, 0, 0, 0, 471, 437, 1, 0, 0, 0, 471, 438, 1, 0, 0, 0, 471, 449, 1, 0, 0, 0, 471, 460, 1, 0, 0, 0, 472, 69, 1, 0, 0, 0, 473, 476, 5, 53, 0, 0, 474, 476, 5, 69, 0, 0, 475, 473, 1, 0, 0, 0, 475, 474, 1, 0, 0, 0, 476, 71, 1, 0, 0, 0, 477, 481, 3, 64, 32, 0, 478, 479, 4, 36, 11, 0, 479, 481, 3, 70, 35, 0, 480, 477, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 481, 73, 1, 0, 0, 0, 482, 483, 5, 9, 0, 0, 483, 484, 5, 31, 0, 0, 484, 75, 1, 0, 0, 0, 485, 486, 5, 14, 0, 0, 486, 491, 3, 78, 39, 0, 487, 488, 5, 39, 0, 0, 488, 490, 3, 78, 39, 0, 489, 487, 1, 0, 0, 0, 490, 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 77, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 494, 496, 3, 10, 5, 0, 495, 497, 7, 4, 0, 0, 496, 495, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 499, 5, 51, 0, 0, 499, 501, 7, 5, 0, 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 79, 1, 0, 0, 0, 502, 503, 5, 8, 0, 0, 503, 504, 3, 62, 31, 0, 504, 81, 1, 0, 0, 0, 505, 506, 5, 2, 0, 0, 506, 507, 3, 62, 31, 0, 507, 83, 1, 0, 0, 0, 508, 509, 5, 11, 0, 0, 509, 514, 3, 86, 43, 0, 510, 511, 5, 39, 0, 0, 511, 513, 3, 86, 43, 0, 512, 510, 1, 0, 0, 0, 513, 516, 1, 0, 0, 0, 514, 512, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 85, 1, 0, 0, 0, 516, 514, 1, 0, 0, 0, 517, 518, 3, 60, 30, 0, 518, 519, 5, 89, 0, 0, 519, 520, 3, 60, 30, 0, 520, 87, 1, 0, 0, 0, 521, 522, 5, 1, 0, 0, 522, 523, 3, 20, 10, 0, 523, 525, 3, 106, 53, 0, 524, 526, 3, 94, 47, 0, 525, 524, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 89, 1, 0, 0, 0, 527, 528, 5, 7, 0, 0, 528, 529, 3, 20, 10, 0, 529, 530, 3, 106, 53, 0, 530, 91, 1, 0, 0, 0, 531, 532, 5, 10, 0, 0, 532, 533, 3, 58, 29, 0, 533, 93, 1, 0, 0, 0, 534, 539, 3, 96, 48, 0, 535, 536, 5, 39, 0, 0, 536, 538, 3, 96, 48, 0, 537, 535, 1, 0, 0, 0, 538, 541, 1, 0, 0, 0, 539, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 95, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 542, 543, 3, 64, 32, 0, 543, 544, 5, 36, 0, 0, 544, 545, 3, 68, 34, 0, 545, 97, 1, 0, 0, 0, 546, 547, 7, 6, 0, 0, 547, 99, 1, 0, 0, 0, 548, 551, 3, 102, 51, 0, 549, 551, 3, 104, 52, 0, 550, 548, 1, 0, 0, 0, 550, 549, 1, 0, 0, 0, 551, 101, 1, 0, 0, 0, 552, 554, 7, 0, 0, 0, 553, 552, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 5, 32, 0, 0, 556, 103, 1, 0, 0, 0, 557, 559, 7, 0, 0, 0, 558, 557, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 561, 5, 31, 0, 0, 561, 105, 1, 0, 0, 0, 562, 563, 5, 30, 0, 0, 563, 107, 1, 0, 0, 0, 564, 565, 7, 7, 0, 0, 565, 109, 1, 0, 0, 0, 566, 567, 5, 5, 0, 0, 567, 568, 3, 112, 56, 0, 568, 111, 1, 0, 0, 0, 569, 570, 5, 70, 0, 0, 570, 571, 3, 2, 1, 0, 571, 572, 5, 71, 0, 0, 572, 113, 1, 0, 0, 0, 573, 574, 5, 13, 0, 0, 574, 575, 5, 105, 0, 0, 575, 115, 1, 0, 0, 0, 576, 577, 5, 3, 0, 0, 577, 580, 5, 95, 0, 0, 578, 579, 5, 93, 0, 0, 579, 581, 3, 60, 30, 0, 580, 578, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 591, 1, 0, 0, 0, 582, 583, 5, 94, 0, 0, 583, 588, 3, 118, 59, 0, 584, 585, 5, 39, 0, 0, 585, 587, 3, 118, 59, 0, 586, 584, 1, 0, 0, 0, 587, 590, 1, 0, 0, 0, 588, 586, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 592, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 591, 582, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 117, 1, 0, 0, 0, 593, 594, 3, 60, 30, 0, 594, 595, 5, 36, 0, 0, 595, 597, 1, 0, 0, 0, 596, 593, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 599, 3, 60, 30, 0, 599, 119, 1, 0, 0, 0, 600, 601, 5, 18, 0, 0, 601, 602, 3, 36, 18, 0, 602, 603, 5, 93, 0, 0, 603, 604, 3, 62, 31, 0, 604, 121, 1, 0, 0, 0, 605, 606, 5, 17, 0, 0, 606, 609, 3, 54, 27, 0, 607, 608, 5, 33, 0, 0, 608, 610, 3, 30, 15, 0, 609, 607, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 123, 1, 0, 0, 0, 611, 613, 7, 8, 0, 0, 612, 611, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 615, 5, 20, 0, 0, 615, 616, 3, 126, 63, 0, 616, 617, 3, 128, 64, 0, 617, 125, 1, 0, 0, 0, 618, 621, 3, 64, 32, 0, 619, 620, 5, 89, 0, 0, 620, 622, 3, 64, 32, 0, 621, 619, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 127, 1, 0, 0, 0, 623, 624, 5, 93, 0, 0, 624, 629, 3, 130, 65, 0, 625, 626, 5, 39, 0, 0, 626, 628, 3, 130, 65, 0, 627, 625, 1, 0, 0, 0, 628, 631, 1, 0, 0, 0, 629, 627, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 129, 1, 0, 0, 0, 631, 629, 1, 0, 0, 0, 632, 633, 3, 16, 8, 0, 633, 131, 1, 0, 0, 0, 61, 143, 152, 172, 184, 193, 201, 206, 214, 216, 221, 228, 233, 244, 250, 258, 260, 271, 278, 289, 292, 308, 314, 324, 328, 333, 343, 351, 364, 368, 372, 379, 383, 390, 396, 403, 411, 419, 427, 444, 455, 466, 471, 475, 480, 491, 496, 500, 514, 525, 539, 550, 553, 558, 580, 588, 591, 596, 609, 612, 621, 629] \ No newline at end of file +[4, 1, 128, 639, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 142, 8, 1, 10, 1, 12, 1, 145, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 153, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 173, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 185, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 192, 8, 5, 10, 5, 12, 5, 195, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 202, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 207, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 215, 8, 5, 10, 5, 12, 5, 218, 9, 5, 1, 6, 1, 6, 3, 6, 222, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 229, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 234, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 239, 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 249, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 255, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 263, 8, 9, 10, 9, 12, 9, 266, 9, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 276, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 281, 8, 10, 10, 10, 12, 10, 284, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 292, 8, 11, 10, 11, 12, 11, 295, 9, 11, 3, 11, 297, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 5, 15, 311, 8, 15, 10, 15, 12, 15, 314, 9, 15, 1, 16, 1, 16, 1, 16, 3, 16, 319, 8, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 327, 8, 17, 10, 17, 12, 17, 330, 9, 17, 1, 17, 3, 17, 333, 8, 17, 1, 18, 1, 18, 1, 18, 3, 18, 338, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 348, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 354, 8, 22, 10, 22, 12, 22, 357, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 367, 8, 24, 10, 24, 12, 24, 370, 9, 24, 1, 24, 3, 24, 373, 8, 24, 1, 24, 1, 24, 3, 24, 377, 8, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 384, 8, 26, 1, 26, 1, 26, 3, 26, 388, 8, 26, 1, 27, 1, 27, 1, 27, 5, 27, 393, 8, 27, 10, 27, 12, 27, 396, 9, 27, 1, 28, 1, 28, 1, 28, 3, 28, 401, 8, 28, 1, 29, 1, 29, 1, 29, 5, 29, 406, 8, 29, 10, 29, 12, 29, 409, 9, 29, 1, 30, 1, 30, 1, 30, 5, 30, 414, 8, 30, 10, 30, 12, 30, 417, 9, 30, 1, 31, 1, 31, 1, 31, 5, 31, 422, 8, 31, 10, 31, 12, 31, 425, 9, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 3, 33, 432, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 447, 8, 34, 10, 34, 12, 34, 450, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 458, 8, 34, 10, 34, 12, 34, 461, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 469, 8, 34, 10, 34, 12, 34, 472, 9, 34, 1, 34, 1, 34, 3, 34, 476, 8, 34, 1, 35, 1, 35, 3, 35, 480, 8, 35, 1, 36, 1, 36, 1, 36, 3, 36, 485, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 494, 8, 38, 10, 38, 12, 38, 497, 9, 38, 1, 39, 1, 39, 3, 39, 501, 8, 39, 1, 39, 1, 39, 3, 39, 505, 8, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 517, 8, 42, 10, 42, 12, 42, 520, 9, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 530, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 5, 47, 542, 8, 47, 10, 47, 12, 47, 545, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 3, 50, 555, 8, 50, 1, 51, 3, 51, 558, 8, 51, 1, 51, 1, 51, 1, 52, 3, 52, 563, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 585, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 591, 8, 58, 10, 58, 12, 58, 594, 9, 58, 3, 58, 596, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 601, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 614, 8, 61, 1, 62, 3, 62, 617, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 3, 63, 626, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 632, 8, 64, 10, 64, 12, 64, 635, 9, 64, 1, 65, 1, 65, 1, 65, 0, 4, 2, 10, 18, 20, 66, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 0, 9, 1, 0, 64, 65, 1, 0, 66, 68, 2, 0, 30, 30, 81, 81, 1, 0, 72, 73, 2, 0, 35, 35, 40, 40, 2, 0, 43, 43, 46, 46, 2, 0, 42, 42, 56, 56, 2, 0, 57, 57, 59, 63, 1, 0, 22, 24, 665, 0, 132, 1, 0, 0, 0, 2, 135, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 6, 172, 1, 0, 0, 0, 8, 174, 1, 0, 0, 0, 10, 206, 1, 0, 0, 0, 12, 233, 1, 0, 0, 0, 14, 235, 1, 0, 0, 0, 16, 248, 1, 0, 0, 0, 18, 254, 1, 0, 0, 0, 20, 275, 1, 0, 0, 0, 22, 285, 1, 0, 0, 0, 24, 300, 1, 0, 0, 0, 26, 302, 1, 0, 0, 0, 28, 304, 1, 0, 0, 0, 30, 307, 1, 0, 0, 0, 32, 318, 1, 0, 0, 0, 34, 322, 1, 0, 0, 0, 36, 337, 1, 0, 0, 0, 38, 341, 1, 0, 0, 0, 40, 343, 1, 0, 0, 0, 42, 347, 1, 0, 0, 0, 44, 349, 1, 0, 0, 0, 46, 358, 1, 0, 0, 0, 48, 362, 1, 0, 0, 0, 50, 378, 1, 0, 0, 0, 52, 381, 1, 0, 0, 0, 54, 389, 1, 0, 0, 0, 56, 397, 1, 0, 0, 0, 58, 402, 1, 0, 0, 0, 60, 410, 1, 0, 0, 0, 62, 418, 1, 0, 0, 0, 64, 426, 1, 0, 0, 0, 66, 431, 1, 0, 0, 0, 68, 475, 1, 0, 0, 0, 70, 479, 1, 0, 0, 0, 72, 484, 1, 0, 0, 0, 74, 486, 1, 0, 0, 0, 76, 489, 1, 0, 0, 0, 78, 498, 1, 0, 0, 0, 80, 506, 1, 0, 0, 0, 82, 509, 1, 0, 0, 0, 84, 512, 1, 0, 0, 0, 86, 521, 1, 0, 0, 0, 88, 525, 1, 0, 0, 0, 90, 531, 1, 0, 0, 0, 92, 535, 1, 0, 0, 0, 94, 538, 1, 0, 0, 0, 96, 546, 1, 0, 0, 0, 98, 550, 1, 0, 0, 0, 100, 554, 1, 0, 0, 0, 102, 557, 1, 0, 0, 0, 104, 562, 1, 0, 0, 0, 106, 566, 1, 0, 0, 0, 108, 568, 1, 0, 0, 0, 110, 570, 1, 0, 0, 0, 112, 573, 1, 0, 0, 0, 114, 577, 1, 0, 0, 0, 116, 580, 1, 0, 0, 0, 118, 600, 1, 0, 0, 0, 120, 604, 1, 0, 0, 0, 122, 609, 1, 0, 0, 0, 124, 616, 1, 0, 0, 0, 126, 622, 1, 0, 0, 0, 128, 627, 1, 0, 0, 0, 130, 636, 1, 0, 0, 0, 132, 133, 3, 2, 1, 0, 133, 134, 5, 0, 0, 1, 134, 1, 1, 0, 0, 0, 135, 136, 6, 1, -1, 0, 136, 137, 3, 4, 2, 0, 137, 143, 1, 0, 0, 0, 138, 139, 10, 1, 0, 0, 139, 140, 5, 29, 0, 0, 140, 142, 3, 6, 3, 0, 141, 138, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 3, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 153, 3, 110, 55, 0, 147, 153, 3, 34, 17, 0, 148, 153, 3, 28, 14, 0, 149, 153, 3, 114, 57, 0, 150, 151, 4, 2, 1, 0, 151, 153, 3, 48, 24, 0, 152, 146, 1, 0, 0, 0, 152, 147, 1, 0, 0, 0, 152, 148, 1, 0, 0, 0, 152, 149, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 153, 5, 1, 0, 0, 0, 154, 173, 3, 50, 25, 0, 155, 173, 3, 8, 4, 0, 156, 173, 3, 80, 40, 0, 157, 173, 3, 74, 37, 0, 158, 173, 3, 52, 26, 0, 159, 173, 3, 76, 38, 0, 160, 173, 3, 82, 41, 0, 161, 173, 3, 84, 42, 0, 162, 173, 3, 88, 44, 0, 163, 173, 3, 90, 45, 0, 164, 173, 3, 116, 58, 0, 165, 173, 3, 92, 46, 0, 166, 167, 4, 3, 2, 0, 167, 173, 3, 122, 61, 0, 168, 169, 4, 3, 3, 0, 169, 173, 3, 120, 60, 0, 170, 171, 4, 3, 4, 0, 171, 173, 3, 124, 62, 0, 172, 154, 1, 0, 0, 0, 172, 155, 1, 0, 0, 0, 172, 156, 1, 0, 0, 0, 172, 157, 1, 0, 0, 0, 172, 158, 1, 0, 0, 0, 172, 159, 1, 0, 0, 0, 172, 160, 1, 0, 0, 0, 172, 161, 1, 0, 0, 0, 172, 162, 1, 0, 0, 0, 172, 163, 1, 0, 0, 0, 172, 164, 1, 0, 0, 0, 172, 165, 1, 0, 0, 0, 172, 166, 1, 0, 0, 0, 172, 168, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 173, 7, 1, 0, 0, 0, 174, 175, 5, 16, 0, 0, 175, 176, 3, 10, 5, 0, 176, 9, 1, 0, 0, 0, 177, 178, 6, 5, -1, 0, 178, 179, 5, 49, 0, 0, 179, 207, 3, 10, 5, 8, 180, 207, 3, 16, 8, 0, 181, 207, 3, 12, 6, 0, 182, 184, 3, 16, 8, 0, 183, 185, 5, 49, 0, 0, 184, 183, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 187, 5, 44, 0, 0, 187, 188, 5, 48, 0, 0, 188, 193, 3, 16, 8, 0, 189, 190, 5, 39, 0, 0, 190, 192, 3, 16, 8, 0, 191, 189, 1, 0, 0, 0, 192, 195, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 196, 1, 0, 0, 0, 195, 193, 1, 0, 0, 0, 196, 197, 5, 55, 0, 0, 197, 207, 1, 0, 0, 0, 198, 199, 3, 16, 8, 0, 199, 201, 5, 45, 0, 0, 200, 202, 5, 49, 0, 0, 201, 200, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 204, 5, 50, 0, 0, 204, 207, 1, 0, 0, 0, 205, 207, 3, 14, 7, 0, 206, 177, 1, 0, 0, 0, 206, 180, 1, 0, 0, 0, 206, 181, 1, 0, 0, 0, 206, 182, 1, 0, 0, 0, 206, 198, 1, 0, 0, 0, 206, 205, 1, 0, 0, 0, 207, 216, 1, 0, 0, 0, 208, 209, 10, 5, 0, 0, 209, 210, 5, 34, 0, 0, 210, 215, 3, 10, 5, 6, 211, 212, 10, 4, 0, 0, 212, 213, 5, 52, 0, 0, 213, 215, 3, 10, 5, 5, 214, 208, 1, 0, 0, 0, 214, 211, 1, 0, 0, 0, 215, 218, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 11, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 219, 221, 3, 16, 8, 0, 220, 222, 5, 49, 0, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 224, 5, 47, 0, 0, 224, 225, 3, 106, 53, 0, 225, 234, 1, 0, 0, 0, 226, 228, 3, 16, 8, 0, 227, 229, 5, 49, 0, 0, 228, 227, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 231, 5, 54, 0, 0, 231, 232, 3, 106, 53, 0, 232, 234, 1, 0, 0, 0, 233, 219, 1, 0, 0, 0, 233, 226, 1, 0, 0, 0, 234, 13, 1, 0, 0, 0, 235, 238, 3, 58, 29, 0, 236, 237, 5, 37, 0, 0, 237, 239, 3, 26, 13, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 241, 5, 38, 0, 0, 241, 242, 3, 68, 34, 0, 242, 15, 1, 0, 0, 0, 243, 249, 3, 18, 9, 0, 244, 245, 3, 18, 9, 0, 245, 246, 3, 108, 54, 0, 246, 247, 3, 18, 9, 0, 247, 249, 1, 0, 0, 0, 248, 243, 1, 0, 0, 0, 248, 244, 1, 0, 0, 0, 249, 17, 1, 0, 0, 0, 250, 251, 6, 9, -1, 0, 251, 255, 3, 20, 10, 0, 252, 253, 7, 0, 0, 0, 253, 255, 3, 18, 9, 3, 254, 250, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 255, 264, 1, 0, 0, 0, 256, 257, 10, 2, 0, 0, 257, 258, 7, 1, 0, 0, 258, 263, 3, 18, 9, 3, 259, 260, 10, 1, 0, 0, 260, 261, 7, 0, 0, 0, 261, 263, 3, 18, 9, 2, 262, 256, 1, 0, 0, 0, 262, 259, 1, 0, 0, 0, 263, 266, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 19, 1, 0, 0, 0, 266, 264, 1, 0, 0, 0, 267, 268, 6, 10, -1, 0, 268, 276, 3, 68, 34, 0, 269, 276, 3, 58, 29, 0, 270, 276, 3, 22, 11, 0, 271, 272, 5, 48, 0, 0, 272, 273, 3, 10, 5, 0, 273, 274, 5, 55, 0, 0, 274, 276, 1, 0, 0, 0, 275, 267, 1, 0, 0, 0, 275, 269, 1, 0, 0, 0, 275, 270, 1, 0, 0, 0, 275, 271, 1, 0, 0, 0, 276, 282, 1, 0, 0, 0, 277, 278, 10, 1, 0, 0, 278, 279, 5, 37, 0, 0, 279, 281, 3, 26, 13, 0, 280, 277, 1, 0, 0, 0, 281, 284, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 21, 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 285, 286, 3, 24, 12, 0, 286, 296, 5, 48, 0, 0, 287, 297, 5, 66, 0, 0, 288, 293, 3, 10, 5, 0, 289, 290, 5, 39, 0, 0, 290, 292, 3, 10, 5, 0, 291, 289, 1, 0, 0, 0, 292, 295, 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 297, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 296, 287, 1, 0, 0, 0, 296, 288, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 299, 5, 55, 0, 0, 299, 23, 1, 0, 0, 0, 300, 301, 3, 72, 36, 0, 301, 25, 1, 0, 0, 0, 302, 303, 3, 64, 32, 0, 303, 27, 1, 0, 0, 0, 304, 305, 5, 12, 0, 0, 305, 306, 3, 30, 15, 0, 306, 29, 1, 0, 0, 0, 307, 312, 3, 32, 16, 0, 308, 309, 5, 39, 0, 0, 309, 311, 3, 32, 16, 0, 310, 308, 1, 0, 0, 0, 311, 314, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 31, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 315, 316, 3, 58, 29, 0, 316, 317, 5, 36, 0, 0, 317, 319, 1, 0, 0, 0, 318, 315, 1, 0, 0, 0, 318, 319, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 3, 10, 5, 0, 321, 33, 1, 0, 0, 0, 322, 323, 5, 6, 0, 0, 323, 328, 3, 36, 18, 0, 324, 325, 5, 39, 0, 0, 325, 327, 3, 36, 18, 0, 326, 324, 1, 0, 0, 0, 327, 330, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 332, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 331, 333, 3, 42, 21, 0, 332, 331, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 35, 1, 0, 0, 0, 334, 335, 3, 38, 19, 0, 335, 336, 5, 38, 0, 0, 336, 338, 1, 0, 0, 0, 337, 334, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 340, 3, 40, 20, 0, 340, 37, 1, 0, 0, 0, 341, 342, 5, 81, 0, 0, 342, 39, 1, 0, 0, 0, 343, 344, 7, 2, 0, 0, 344, 41, 1, 0, 0, 0, 345, 348, 3, 44, 22, 0, 346, 348, 3, 46, 23, 0, 347, 345, 1, 0, 0, 0, 347, 346, 1, 0, 0, 0, 348, 43, 1, 0, 0, 0, 349, 350, 5, 80, 0, 0, 350, 355, 5, 81, 0, 0, 351, 352, 5, 39, 0, 0, 352, 354, 5, 81, 0, 0, 353, 351, 1, 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 45, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 358, 359, 5, 70, 0, 0, 359, 360, 3, 44, 22, 0, 360, 361, 5, 71, 0, 0, 361, 47, 1, 0, 0, 0, 362, 363, 5, 19, 0, 0, 363, 368, 3, 36, 18, 0, 364, 365, 5, 39, 0, 0, 365, 367, 3, 36, 18, 0, 366, 364, 1, 0, 0, 0, 367, 370, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 372, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 371, 373, 3, 54, 27, 0, 372, 371, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 375, 5, 33, 0, 0, 375, 377, 3, 30, 15, 0, 376, 374, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 49, 1, 0, 0, 0, 378, 379, 5, 4, 0, 0, 379, 380, 3, 30, 15, 0, 380, 51, 1, 0, 0, 0, 381, 383, 5, 15, 0, 0, 382, 384, 3, 54, 27, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 387, 1, 0, 0, 0, 385, 386, 5, 33, 0, 0, 386, 388, 3, 30, 15, 0, 387, 385, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 53, 1, 0, 0, 0, 389, 394, 3, 56, 28, 0, 390, 391, 5, 39, 0, 0, 391, 393, 3, 56, 28, 0, 392, 390, 1, 0, 0, 0, 393, 396, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 55, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 397, 400, 3, 32, 16, 0, 398, 399, 5, 16, 0, 0, 399, 401, 3, 10, 5, 0, 400, 398, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 57, 1, 0, 0, 0, 402, 407, 3, 72, 36, 0, 403, 404, 5, 41, 0, 0, 404, 406, 3, 72, 36, 0, 405, 403, 1, 0, 0, 0, 406, 409, 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 59, 1, 0, 0, 0, 409, 407, 1, 0, 0, 0, 410, 415, 3, 66, 33, 0, 411, 412, 5, 41, 0, 0, 412, 414, 3, 66, 33, 0, 413, 411, 1, 0, 0, 0, 414, 417, 1, 0, 0, 0, 415, 413, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 61, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 418, 423, 3, 60, 30, 0, 419, 420, 5, 39, 0, 0, 420, 422, 3, 60, 30, 0, 421, 419, 1, 0, 0, 0, 422, 425, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 63, 1, 0, 0, 0, 425, 423, 1, 0, 0, 0, 426, 427, 7, 3, 0, 0, 427, 65, 1, 0, 0, 0, 428, 432, 5, 85, 0, 0, 429, 430, 4, 33, 10, 0, 430, 432, 3, 70, 35, 0, 431, 428, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 432, 67, 1, 0, 0, 0, 433, 476, 5, 50, 0, 0, 434, 435, 3, 104, 52, 0, 435, 436, 5, 72, 0, 0, 436, 476, 1, 0, 0, 0, 437, 476, 3, 102, 51, 0, 438, 476, 3, 104, 52, 0, 439, 476, 3, 98, 49, 0, 440, 476, 3, 70, 35, 0, 441, 476, 3, 106, 53, 0, 442, 443, 5, 70, 0, 0, 443, 448, 3, 100, 50, 0, 444, 445, 5, 39, 0, 0, 445, 447, 3, 100, 50, 0, 446, 444, 1, 0, 0, 0, 447, 450, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 451, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 451, 452, 5, 71, 0, 0, 452, 476, 1, 0, 0, 0, 453, 454, 5, 70, 0, 0, 454, 459, 3, 98, 49, 0, 455, 456, 5, 39, 0, 0, 456, 458, 3, 98, 49, 0, 457, 455, 1, 0, 0, 0, 458, 461, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 462, 1, 0, 0, 0, 461, 459, 1, 0, 0, 0, 462, 463, 5, 71, 0, 0, 463, 476, 1, 0, 0, 0, 464, 465, 5, 70, 0, 0, 465, 470, 3, 106, 53, 0, 466, 467, 5, 39, 0, 0, 467, 469, 3, 106, 53, 0, 468, 466, 1, 0, 0, 0, 469, 472, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 473, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 473, 474, 5, 71, 0, 0, 474, 476, 1, 0, 0, 0, 475, 433, 1, 0, 0, 0, 475, 434, 1, 0, 0, 0, 475, 437, 1, 0, 0, 0, 475, 438, 1, 0, 0, 0, 475, 439, 1, 0, 0, 0, 475, 440, 1, 0, 0, 0, 475, 441, 1, 0, 0, 0, 475, 442, 1, 0, 0, 0, 475, 453, 1, 0, 0, 0, 475, 464, 1, 0, 0, 0, 476, 69, 1, 0, 0, 0, 477, 480, 5, 53, 0, 0, 478, 480, 5, 69, 0, 0, 479, 477, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 71, 1, 0, 0, 0, 481, 485, 3, 64, 32, 0, 482, 483, 4, 36, 11, 0, 483, 485, 3, 70, 35, 0, 484, 481, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 485, 73, 1, 0, 0, 0, 486, 487, 5, 9, 0, 0, 487, 488, 5, 31, 0, 0, 488, 75, 1, 0, 0, 0, 489, 490, 5, 14, 0, 0, 490, 495, 3, 78, 39, 0, 491, 492, 5, 39, 0, 0, 492, 494, 3, 78, 39, 0, 493, 491, 1, 0, 0, 0, 494, 497, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 77, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 498, 500, 3, 10, 5, 0, 499, 501, 7, 4, 0, 0, 500, 499, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 504, 1, 0, 0, 0, 502, 503, 5, 51, 0, 0, 503, 505, 7, 5, 0, 0, 504, 502, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 79, 1, 0, 0, 0, 506, 507, 5, 8, 0, 0, 507, 508, 3, 62, 31, 0, 508, 81, 1, 0, 0, 0, 509, 510, 5, 2, 0, 0, 510, 511, 3, 62, 31, 0, 511, 83, 1, 0, 0, 0, 512, 513, 5, 11, 0, 0, 513, 518, 3, 86, 43, 0, 514, 515, 5, 39, 0, 0, 515, 517, 3, 86, 43, 0, 516, 514, 1, 0, 0, 0, 517, 520, 1, 0, 0, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 85, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 521, 522, 3, 60, 30, 0, 522, 523, 5, 89, 0, 0, 523, 524, 3, 60, 30, 0, 524, 87, 1, 0, 0, 0, 525, 526, 5, 1, 0, 0, 526, 527, 3, 20, 10, 0, 527, 529, 3, 106, 53, 0, 528, 530, 3, 94, 47, 0, 529, 528, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 89, 1, 0, 0, 0, 531, 532, 5, 7, 0, 0, 532, 533, 3, 20, 10, 0, 533, 534, 3, 106, 53, 0, 534, 91, 1, 0, 0, 0, 535, 536, 5, 10, 0, 0, 536, 537, 3, 58, 29, 0, 537, 93, 1, 0, 0, 0, 538, 543, 3, 96, 48, 0, 539, 540, 5, 39, 0, 0, 540, 542, 3, 96, 48, 0, 541, 539, 1, 0, 0, 0, 542, 545, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 95, 1, 0, 0, 0, 545, 543, 1, 0, 0, 0, 546, 547, 3, 64, 32, 0, 547, 548, 5, 36, 0, 0, 548, 549, 3, 68, 34, 0, 549, 97, 1, 0, 0, 0, 550, 551, 7, 6, 0, 0, 551, 99, 1, 0, 0, 0, 552, 555, 3, 102, 51, 0, 553, 555, 3, 104, 52, 0, 554, 552, 1, 0, 0, 0, 554, 553, 1, 0, 0, 0, 555, 101, 1, 0, 0, 0, 556, 558, 7, 0, 0, 0, 557, 556, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 560, 5, 32, 0, 0, 560, 103, 1, 0, 0, 0, 561, 563, 7, 0, 0, 0, 562, 561, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 5, 31, 0, 0, 565, 105, 1, 0, 0, 0, 566, 567, 5, 30, 0, 0, 567, 107, 1, 0, 0, 0, 568, 569, 7, 7, 0, 0, 569, 109, 1, 0, 0, 0, 570, 571, 5, 5, 0, 0, 571, 572, 3, 112, 56, 0, 572, 111, 1, 0, 0, 0, 573, 574, 5, 70, 0, 0, 574, 575, 3, 2, 1, 0, 575, 576, 5, 71, 0, 0, 576, 113, 1, 0, 0, 0, 577, 578, 5, 13, 0, 0, 578, 579, 5, 105, 0, 0, 579, 115, 1, 0, 0, 0, 580, 581, 5, 3, 0, 0, 581, 584, 5, 95, 0, 0, 582, 583, 5, 93, 0, 0, 583, 585, 3, 60, 30, 0, 584, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 595, 1, 0, 0, 0, 586, 587, 5, 94, 0, 0, 587, 592, 3, 118, 59, 0, 588, 589, 5, 39, 0, 0, 589, 591, 3, 118, 59, 0, 590, 588, 1, 0, 0, 0, 591, 594, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 596, 1, 0, 0, 0, 594, 592, 1, 0, 0, 0, 595, 586, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 117, 1, 0, 0, 0, 597, 598, 3, 60, 30, 0, 598, 599, 5, 36, 0, 0, 599, 601, 1, 0, 0, 0, 600, 597, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 603, 3, 60, 30, 0, 603, 119, 1, 0, 0, 0, 604, 605, 5, 18, 0, 0, 605, 606, 3, 36, 18, 0, 606, 607, 5, 93, 0, 0, 607, 608, 3, 62, 31, 0, 608, 121, 1, 0, 0, 0, 609, 610, 5, 17, 0, 0, 610, 613, 3, 54, 27, 0, 611, 612, 5, 33, 0, 0, 612, 614, 3, 30, 15, 0, 613, 611, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 123, 1, 0, 0, 0, 615, 617, 7, 8, 0, 0, 616, 615, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 619, 5, 20, 0, 0, 619, 620, 3, 126, 63, 0, 620, 621, 3, 128, 64, 0, 621, 125, 1, 0, 0, 0, 622, 625, 3, 64, 32, 0, 623, 624, 5, 89, 0, 0, 624, 626, 3, 64, 32, 0, 625, 623, 1, 0, 0, 0, 625, 626, 1, 0, 0, 0, 626, 127, 1, 0, 0, 0, 627, 628, 5, 93, 0, 0, 628, 633, 3, 130, 65, 0, 629, 630, 5, 39, 0, 0, 630, 632, 3, 130, 65, 0, 631, 629, 1, 0, 0, 0, 632, 635, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 129, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 636, 637, 3, 16, 8, 0, 637, 131, 1, 0, 0, 0, 62, 143, 152, 172, 184, 193, 201, 206, 214, 216, 221, 228, 233, 238, 248, 254, 262, 264, 275, 282, 293, 296, 312, 318, 328, 332, 337, 347, 355, 368, 372, 376, 383, 387, 394, 400, 407, 415, 423, 431, 448, 459, 470, 475, 479, 484, 495, 500, 504, 518, 529, 543, 554, 557, 562, 584, 592, 595, 600, 613, 616, 625, 633] \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.ts b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.ts index ec261299493a5..3ec3100052389 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.ts @@ -1012,15 +1012,28 @@ export default class esql_parser extends parser_config { public matchBooleanExpression(): MatchBooleanExpressionContext { let localctx: MatchBooleanExpressionContext = new MatchBooleanExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 14, esql_parser.RULE_matchBooleanExpression); + let _la: number; try { this.enterOuterAlt(localctx, 1); { this.state = 235; localctx._fieldExp = this.qualifiedName(); - this.state = 236; + this.state = 238; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===37) { + { + this.state = 236; + this.match(esql_parser.CAST_OP); + this.state = 237; + localctx._fieldType = this.dataType(); + } + } + + this.state = 240; this.match(esql_parser.COLON); - this.state = 237; - localctx._queryString = this.constant(); + this.state = 241; + localctx._matchQuery = this.constant(); } } catch (re) { @@ -1042,14 +1055,14 @@ export default class esql_parser extends parser_config { let localctx: ValueExpressionContext = new ValueExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 16, esql_parser.RULE_valueExpression); try { - this.state = 244; + this.state = 248; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 12, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 13, this._ctx) ) { case 1: localctx = new ValueExpressionDefaultContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 239; + this.state = 243; this.operatorExpression(0); } break; @@ -1057,11 +1070,11 @@ export default class esql_parser extends parser_config { localctx = new ComparisonContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 240; + this.state = 244; (localctx as ComparisonContext)._left = this.operatorExpression(0); - this.state = 241; + this.state = 245; this.comparisonOperator(); - this.state = 242; + this.state = 246; (localctx as ComparisonContext)._right = this.operatorExpression(0); } break; @@ -1101,16 +1114,16 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 250; + this.state = 254; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 13, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 14, this._ctx) ) { case 1: { localctx = new OperatorExpressionDefaultContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 247; + this.state = 251; this.primaryExpression(0); } break; @@ -1119,7 +1132,7 @@ export default class esql_parser extends parser_config { localctx = new ArithmeticUnaryContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 248; + this.state = 252; (localctx as ArithmeticUnaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if(!(_la===64 || _la===65)) { @@ -1129,15 +1142,15 @@ export default class esql_parser extends parser_config { this._errHandler.reportMatch(this); this.consume(); } - this.state = 249; + this.state = 253; this.operatorExpression(3); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 260; + this.state = 264; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 15, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 16, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -1145,19 +1158,19 @@ export default class esql_parser extends parser_config { } _prevctx = localctx; { - this.state = 258; + this.state = 262; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 14, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 15, this._ctx) ) { case 1: { localctx = new ArithmeticBinaryContext(this, new OperatorExpressionContext(this, _parentctx, _parentState)); (localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 252; + this.state = 256; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 253; + this.state = 257; (localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if(!(((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 7) !== 0))) { @@ -1167,7 +1180,7 @@ export default class esql_parser extends parser_config { this._errHandler.reportMatch(this); this.consume(); } - this.state = 254; + this.state = 258; (localctx as ArithmeticBinaryContext)._right = this.operatorExpression(3); } break; @@ -1176,11 +1189,11 @@ export default class esql_parser extends parser_config { localctx = new ArithmeticBinaryContext(this, new OperatorExpressionContext(this, _parentctx, _parentState)); (localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 255; + this.state = 259; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 256; + this.state = 260; (localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if(!(_la===64 || _la===65)) { @@ -1190,16 +1203,16 @@ export default class esql_parser extends parser_config { this._errHandler.reportMatch(this); this.consume(); } - this.state = 257; + this.state = 261; (localctx as ArithmeticBinaryContext)._right = this.operatorExpression(2); } break; } } } - this.state = 262; + this.state = 266; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 15, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 16, this._ctx); } } } @@ -1236,16 +1249,16 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 271; + this.state = 275; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 16, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 17, this._ctx) ) { case 1: { localctx = new ConstantDefaultContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 264; + this.state = 268; this.constant(); } break; @@ -1254,7 +1267,7 @@ export default class esql_parser extends parser_config { localctx = new DereferenceContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 265; + this.state = 269; this.qualifiedName(); } break; @@ -1263,7 +1276,7 @@ export default class esql_parser extends parser_config { localctx = new FunctionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 266; + this.state = 270; this.functionExpression(); } break; @@ -1272,19 +1285,19 @@ export default class esql_parser extends parser_config { localctx = new ParenthesizedExpressionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 267; + this.state = 271; this.match(esql_parser.LP); - this.state = 268; + this.state = 272; this.booleanExpression(0); - this.state = 269; + this.state = 273; this.match(esql_parser.RP); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 278; + this.state = 282; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 17, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -1295,20 +1308,20 @@ export default class esql_parser extends parser_config { { localctx = new InlineCastContext(this, new PrimaryExpressionContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_primaryExpression); - this.state = 273; + this.state = 277; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 274; + this.state = 278; this.match(esql_parser.CAST_OP); - this.state = 275; + this.state = 279; this.dataType(); } } } - this.state = 280; + this.state = 284; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 17, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); } } } @@ -1334,37 +1347,37 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 281; + this.state = 285; this.functionName(); - this.state = 282; + this.state = 286; this.match(esql_parser.LP); - this.state = 292; + this.state = 296; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 19, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 20, this._ctx) ) { case 1: { - this.state = 283; + this.state = 287; this.match(esql_parser.ASTERISK); } break; case 2: { { - this.state = 284; + this.state = 288; this.booleanExpression(0); - this.state = 289; + this.state = 293; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===39) { { { - this.state = 285; + this.state = 289; this.match(esql_parser.COMMA); - this.state = 286; + this.state = 290; this.booleanExpression(0); } } - this.state = 291; + this.state = 295; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -1372,7 +1385,7 @@ export default class esql_parser extends parser_config { } break; } - this.state = 294; + this.state = 298; this.match(esql_parser.RP); } } @@ -1397,7 +1410,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 296; + this.state = 300; this.identifierOrParameter(); } } @@ -1423,7 +1436,7 @@ export default class esql_parser extends parser_config { localctx = new ToDataTypeContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 298; + this.state = 302; this.identifier(); } } @@ -1448,9 +1461,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 300; + this.state = 304; this.match(esql_parser.ROW); - this.state = 301; + this.state = 305; this.fields(); } } @@ -1476,25 +1489,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 303; + this.state = 307; this.field(); - this.state = 308; + this.state = 312; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 20, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 21, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 304; + this.state = 308; this.match(esql_parser.COMMA); - this.state = 305; + this.state = 309; this.field(); } } } - this.state = 310; + this.state = 314; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 20, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 21, this._ctx); } } } @@ -1519,19 +1532,19 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 314; + this.state = 318; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 21, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 22, this._ctx) ) { case 1: { - this.state = 311; + this.state = 315; this.qualifiedName(); - this.state = 312; + this.state = 316; this.match(esql_parser.ASSIGN); } break; } - this.state = 316; + this.state = 320; this.booleanExpression(0); } } @@ -1557,34 +1570,34 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 318; + this.state = 322; this.match(esql_parser.FROM); - this.state = 319; + this.state = 323; this.indexPattern(); - this.state = 324; + this.state = 328; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 22, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 23, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 320; + this.state = 324; this.match(esql_parser.COMMA); - this.state = 321; + this.state = 325; this.indexPattern(); } } } - this.state = 326; + this.state = 330; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 22, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 23, this._ctx); } - this.state = 328; + this.state = 332; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 23, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 24, this._ctx) ) { case 1: { - this.state = 327; + this.state = 331; this.metadata(); } break; @@ -1612,19 +1625,19 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 333; + this.state = 337; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 24, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 25, this._ctx) ) { case 1: { - this.state = 330; + this.state = 334; this.clusterString(); - this.state = 331; + this.state = 335; this.match(esql_parser.COLON); } break; } - this.state = 335; + this.state = 339; this.indexString(); } } @@ -1649,7 +1662,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 337; + this.state = 341; this.match(esql_parser.UNQUOTED_SOURCE); } } @@ -1675,7 +1688,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 339; + this.state = 343; _la = this._input.LA(1); if(!(_la===30 || _la===81)) { this._errHandler.recoverInline(this); @@ -1705,20 +1718,20 @@ export default class esql_parser extends parser_config { let localctx: MetadataContext = new MetadataContext(this, this._ctx, this.state); this.enterRule(localctx, 42, esql_parser.RULE_metadata); try { - this.state = 343; + this.state = 347; this._errHandler.sync(this); switch (this._input.LA(1)) { case 80: this.enterOuterAlt(localctx, 1); { - this.state = 341; + this.state = 345; this.metadataOption(); } break; case 70: this.enterOuterAlt(localctx, 2); { - this.state = 342; + this.state = 346; this.deprecated_metadata(); } break; @@ -1748,27 +1761,27 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 345; + this.state = 349; this.match(esql_parser.METADATA); - this.state = 346; + this.state = 350; this.match(esql_parser.UNQUOTED_SOURCE); - this.state = 351; + this.state = 355; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 26, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 27, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 347; + this.state = 351; this.match(esql_parser.COMMA); - this.state = 348; + this.state = 352; this.match(esql_parser.UNQUOTED_SOURCE); } } } - this.state = 353; + this.state = 357; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 26, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 27, this._ctx); } } } @@ -1793,11 +1806,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 354; + this.state = 358; this.match(esql_parser.OPENING_BRACKET); - this.state = 355; + this.state = 359; this.metadataOption(); - this.state = 356; + this.state = 360; this.match(esql_parser.CLOSING_BRACKET); } } @@ -1823,46 +1836,46 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 358; + this.state = 362; this.match(esql_parser.DEV_METRICS); - this.state = 359; + this.state = 363; this.indexPattern(); - this.state = 364; + this.state = 368; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 27, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 28, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 360; + this.state = 364; this.match(esql_parser.COMMA); - this.state = 361; + this.state = 365; this.indexPattern(); } } } - this.state = 366; + this.state = 370; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 27, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 28, this._ctx); } - this.state = 368; + this.state = 372; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 28, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 29, this._ctx) ) { case 1: { - this.state = 367; + this.state = 371; localctx._aggregates = this.aggFields(); } break; } - this.state = 372; + this.state = 376; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 29, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 30, this._ctx) ) { case 1: { - this.state = 370; + this.state = 374; this.match(esql_parser.BY); - this.state = 371; + this.state = 375; localctx._grouping = this.fields(); } break; @@ -1890,9 +1903,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 374; + this.state = 378; this.match(esql_parser.EVAL); - this.state = 375; + this.state = 379; this.fields(); } } @@ -1917,26 +1930,26 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 377; + this.state = 381; this.match(esql_parser.STATS); - this.state = 379; + this.state = 383; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 30, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 31, this._ctx) ) { case 1: { - this.state = 378; + this.state = 382; localctx._stats = this.aggFields(); } break; } - this.state = 383; + this.state = 387; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 31, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 32, this._ctx) ) { case 1: { - this.state = 381; + this.state = 385; this.match(esql_parser.BY); - this.state = 382; + this.state = 386; localctx._grouping = this.fields(); } break; @@ -1965,25 +1978,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 385; + this.state = 389; this.aggField(); - this.state = 390; + this.state = 394; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 32, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 33, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 386; + this.state = 390; this.match(esql_parser.COMMA); - this.state = 387; + this.state = 391; this.aggField(); } } } - this.state = 392; + this.state = 396; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 32, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 33, this._ctx); } } } @@ -2008,16 +2021,16 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 393; + this.state = 397; this.field(); - this.state = 396; + this.state = 400; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 33, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 34, this._ctx) ) { case 1: { - this.state = 394; + this.state = 398; this.match(esql_parser.WHERE); - this.state = 395; + this.state = 399; this.booleanExpression(0); } break; @@ -2046,25 +2059,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 398; + this.state = 402; this.identifierOrParameter(); - this.state = 403; + this.state = 407; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 34, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 35, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 399; + this.state = 403; this.match(esql_parser.DOT); - this.state = 400; + this.state = 404; this.identifierOrParameter(); } } } - this.state = 405; + this.state = 409; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 34, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 35, this._ctx); } } } @@ -2090,25 +2103,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 406; + this.state = 410; this.identifierPattern(); - this.state = 411; + this.state = 415; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 35, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 36, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 407; + this.state = 411; this.match(esql_parser.DOT); - this.state = 408; + this.state = 412; this.identifierPattern(); } } } - this.state = 413; + this.state = 417; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 35, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 36, this._ctx); } } } @@ -2134,25 +2147,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 414; + this.state = 418; this.qualifiedNamePattern(); - this.state = 419; + this.state = 423; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 36, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 37, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 415; + this.state = 419; this.match(esql_parser.COMMA); - this.state = 416; + this.state = 420; this.qualifiedNamePattern(); } } } - this.state = 421; + this.state = 425; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 36, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 37, this._ctx); } } } @@ -2178,7 +2191,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 422; + this.state = 426; _la = this._input.LA(1); if(!(_la===72 || _la===73)) { this._errHandler.recoverInline(this); @@ -2208,24 +2221,24 @@ export default class esql_parser extends parser_config { let localctx: IdentifierPatternContext = new IdentifierPatternContext(this, this._ctx, this.state); this.enterRule(localctx, 66, esql_parser.RULE_identifierPattern); try { - this.state = 427; + this.state = 431; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 37, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 38, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 424; + this.state = 428; this.match(esql_parser.ID_PATTERN); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 425; + this.state = 429; if (!(this.isDevVersion())) { throw this.createFailedPredicateException("this.isDevVersion()"); } - this.state = 426; + this.state = 430; this.parameter(); } break; @@ -2251,14 +2264,14 @@ export default class esql_parser extends parser_config { this.enterRule(localctx, 68, esql_parser.RULE_constant); let _la: number; try { - this.state = 471; + this.state = 475; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 41, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 42, this._ctx) ) { case 1: localctx = new NullLiteralContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 429; + this.state = 433; this.match(esql_parser.NULL); } break; @@ -2266,9 +2279,9 @@ export default class esql_parser extends parser_config { localctx = new QualifiedIntegerLiteralContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 430; + this.state = 434; this.integerValue(); - this.state = 431; + this.state = 435; this.match(esql_parser.UNQUOTED_IDENTIFIER); } break; @@ -2276,7 +2289,7 @@ export default class esql_parser extends parser_config { localctx = new DecimalLiteralContext(this, localctx); this.enterOuterAlt(localctx, 3); { - this.state = 433; + this.state = 437; this.decimalValue(); } break; @@ -2284,7 +2297,7 @@ export default class esql_parser extends parser_config { localctx = new IntegerLiteralContext(this, localctx); this.enterOuterAlt(localctx, 4); { - this.state = 434; + this.state = 438; this.integerValue(); } break; @@ -2292,7 +2305,7 @@ export default class esql_parser extends parser_config { localctx = new BooleanLiteralContext(this, localctx); this.enterOuterAlt(localctx, 5); { - this.state = 435; + this.state = 439; this.booleanValue(); } break; @@ -2300,7 +2313,7 @@ export default class esql_parser extends parser_config { localctx = new InputParameterContext(this, localctx); this.enterOuterAlt(localctx, 6); { - this.state = 436; + this.state = 440; this.parameter(); } break; @@ -2308,7 +2321,7 @@ export default class esql_parser extends parser_config { localctx = new StringLiteralContext(this, localctx); this.enterOuterAlt(localctx, 7); { - this.state = 437; + this.state = 441; this.string_(); } break; @@ -2316,27 +2329,27 @@ export default class esql_parser extends parser_config { localctx = new NumericArrayLiteralContext(this, localctx); this.enterOuterAlt(localctx, 8); { - this.state = 438; + this.state = 442; this.match(esql_parser.OPENING_BRACKET); - this.state = 439; + this.state = 443; this.numericValue(); - this.state = 444; + this.state = 448; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===39) { { { - this.state = 440; + this.state = 444; this.match(esql_parser.COMMA); - this.state = 441; + this.state = 445; this.numericValue(); } } - this.state = 446; + this.state = 450; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 447; + this.state = 451; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -2344,27 +2357,27 @@ export default class esql_parser extends parser_config { localctx = new BooleanArrayLiteralContext(this, localctx); this.enterOuterAlt(localctx, 9); { - this.state = 449; + this.state = 453; this.match(esql_parser.OPENING_BRACKET); - this.state = 450; + this.state = 454; this.booleanValue(); - this.state = 455; + this.state = 459; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===39) { { { - this.state = 451; + this.state = 455; this.match(esql_parser.COMMA); - this.state = 452; + this.state = 456; this.booleanValue(); } } - this.state = 457; + this.state = 461; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 458; + this.state = 462; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -2372,27 +2385,27 @@ export default class esql_parser extends parser_config { localctx = new StringArrayLiteralContext(this, localctx); this.enterOuterAlt(localctx, 10); { - this.state = 460; + this.state = 464; this.match(esql_parser.OPENING_BRACKET); - this.state = 461; + this.state = 465; this.string_(); - this.state = 466; + this.state = 470; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===39) { { { - this.state = 462; + this.state = 466; this.match(esql_parser.COMMA); - this.state = 463; + this.state = 467; this.string_(); } } - this.state = 468; + this.state = 472; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 469; + this.state = 473; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -2417,14 +2430,14 @@ export default class esql_parser extends parser_config { let localctx: ParameterContext = new ParameterContext(this, this._ctx, this.state); this.enterRule(localctx, 70, esql_parser.RULE_parameter); try { - this.state = 475; + this.state = 479; this._errHandler.sync(this); switch (this._input.LA(1)) { case 53: localctx = new InputParamContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 473; + this.state = 477; this.match(esql_parser.PARAM); } break; @@ -2432,7 +2445,7 @@ export default class esql_parser extends parser_config { localctx = new InputNamedOrPositionalParamContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 474; + this.state = 478; this.match(esql_parser.NAMED_OR_POSITIONAL_PARAM); } break; @@ -2459,24 +2472,24 @@ export default class esql_parser extends parser_config { let localctx: IdentifierOrParameterContext = new IdentifierOrParameterContext(this, this._ctx, this.state); this.enterRule(localctx, 72, esql_parser.RULE_identifierOrParameter); try { - this.state = 480; + this.state = 484; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 43, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 44, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 477; + this.state = 481; this.identifier(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 478; + this.state = 482; if (!(this.isDevVersion())) { throw this.createFailedPredicateException("this.isDevVersion()"); } - this.state = 479; + this.state = 483; this.parameter(); } break; @@ -2503,9 +2516,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 482; + this.state = 486; this.match(esql_parser.LIMIT); - this.state = 483; + this.state = 487; this.match(esql_parser.INTEGER_LITERAL); } } @@ -2531,27 +2544,27 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 485; + this.state = 489; this.match(esql_parser.SORT); - this.state = 486; + this.state = 490; this.orderExpression(); - this.state = 491; + this.state = 495; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 44, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 45, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 487; + this.state = 491; this.match(esql_parser.COMMA); - this.state = 488; + this.state = 492; this.orderExpression(); } } } - this.state = 493; + this.state = 497; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 44, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 45, this._ctx); } } } @@ -2577,14 +2590,14 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 494; + this.state = 498; this.booleanExpression(0); - this.state = 496; + this.state = 500; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 45, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 46, this._ctx) ) { case 1: { - this.state = 495; + this.state = 499; localctx._ordering = this._input.LT(1); _la = this._input.LA(1); if(!(_la===35 || _la===40)) { @@ -2597,14 +2610,14 @@ export default class esql_parser extends parser_config { } break; } - this.state = 500; + this.state = 504; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 46, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 47, this._ctx) ) { case 1: { - this.state = 498; + this.state = 502; this.match(esql_parser.NULLS); - this.state = 499; + this.state = 503; localctx._nullOrdering = this._input.LT(1); _la = this._input.LA(1); if(!(_la===43 || _la===46)) { @@ -2640,9 +2653,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 502; + this.state = 506; this.match(esql_parser.KEEP); - this.state = 503; + this.state = 507; this.qualifiedNamePatterns(); } } @@ -2667,9 +2680,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 505; + this.state = 509; this.match(esql_parser.DROP); - this.state = 506; + this.state = 510; this.qualifiedNamePatterns(); } } @@ -2695,27 +2708,27 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 508; + this.state = 512; this.match(esql_parser.RENAME); - this.state = 509; + this.state = 513; this.renameClause(); - this.state = 514; + this.state = 518; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 47, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 48, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 510; + this.state = 514; this.match(esql_parser.COMMA); - this.state = 511; + this.state = 515; this.renameClause(); } } } - this.state = 516; + this.state = 520; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 47, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 48, this._ctx); } } } @@ -2740,11 +2753,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 517; + this.state = 521; localctx._oldName = this.qualifiedNamePattern(); - this.state = 518; + this.state = 522; this.match(esql_parser.AS); - this.state = 519; + this.state = 523; localctx._newName = this.qualifiedNamePattern(); } } @@ -2769,18 +2782,18 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 521; + this.state = 525; this.match(esql_parser.DISSECT); - this.state = 522; + this.state = 526; this.primaryExpression(0); - this.state = 523; + this.state = 527; this.string_(); - this.state = 525; + this.state = 529; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 48, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 49, this._ctx) ) { case 1: { - this.state = 524; + this.state = 528; this.commandOptions(); } break; @@ -2808,11 +2821,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 527; + this.state = 531; this.match(esql_parser.GROK); - this.state = 528; + this.state = 532; this.primaryExpression(0); - this.state = 529; + this.state = 533; this.string_(); } } @@ -2837,9 +2850,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 531; + this.state = 535; this.match(esql_parser.MV_EXPAND); - this.state = 532; + this.state = 536; this.qualifiedName(); } } @@ -2865,25 +2878,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 534; + this.state = 538; this.commandOption(); - this.state = 539; + this.state = 543; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 49, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 50, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 535; + this.state = 539; this.match(esql_parser.COMMA); - this.state = 536; + this.state = 540; this.commandOption(); } } } - this.state = 541; + this.state = 545; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 49, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 50, this._ctx); } } } @@ -2908,11 +2921,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 542; + this.state = 546; this.identifier(); - this.state = 543; + this.state = 547; this.match(esql_parser.ASSIGN); - this.state = 544; + this.state = 548; this.constant(); } } @@ -2938,7 +2951,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 546; + this.state = 550; _la = this._input.LA(1); if(!(_la===42 || _la===56)) { this._errHandler.recoverInline(this); @@ -2968,20 +2981,20 @@ export default class esql_parser extends parser_config { let localctx: NumericValueContext = new NumericValueContext(this, this._ctx, this.state); this.enterRule(localctx, 100, esql_parser.RULE_numericValue); try { - this.state = 550; + this.state = 554; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 50, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 51, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 548; + this.state = 552; this.decimalValue(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 549; + this.state = 553; this.integerValue(); } break; @@ -3009,12 +3022,12 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 553; + this.state = 557; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===64 || _la===65) { { - this.state = 552; + this.state = 556; _la = this._input.LA(1); if(!(_la===64 || _la===65)) { this._errHandler.recoverInline(this); @@ -3026,7 +3039,7 @@ export default class esql_parser extends parser_config { } } - this.state = 555; + this.state = 559; this.match(esql_parser.DECIMAL_LITERAL); } } @@ -3052,12 +3065,12 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 558; + this.state = 562; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===64 || _la===65) { { - this.state = 557; + this.state = 561; _la = this._input.LA(1); if(!(_la===64 || _la===65)) { this._errHandler.recoverInline(this); @@ -3069,7 +3082,7 @@ export default class esql_parser extends parser_config { } } - this.state = 560; + this.state = 564; this.match(esql_parser.INTEGER_LITERAL); } } @@ -3094,7 +3107,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 562; + this.state = 566; this.match(esql_parser.QUOTED_STRING); } } @@ -3120,7 +3133,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 564; + this.state = 568; _la = this._input.LA(1); if(!(((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 125) !== 0))) { this._errHandler.recoverInline(this); @@ -3152,9 +3165,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 566; + this.state = 570; this.match(esql_parser.EXPLAIN); - this.state = 567; + this.state = 571; this.subqueryExpression(); } } @@ -3179,11 +3192,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 569; + this.state = 573; this.match(esql_parser.OPENING_BRACKET); - this.state = 570; + this.state = 574; this.query(0); - this.state = 571; + this.state = 575; this.match(esql_parser.CLOSING_BRACKET); } } @@ -3209,9 +3222,9 @@ export default class esql_parser extends parser_config { localctx = new ShowInfoContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 573; + this.state = 577; this.match(esql_parser.SHOW); - this.state = 574; + this.state = 578; this.match(esql_parser.INFO); } } @@ -3237,48 +3250,48 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 576; + this.state = 580; this.match(esql_parser.ENRICH); - this.state = 577; + this.state = 581; localctx._policyName = this.match(esql_parser.ENRICH_POLICY_NAME); - this.state = 580; + this.state = 584; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 53, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 54, this._ctx) ) { case 1: { - this.state = 578; + this.state = 582; this.match(esql_parser.ON); - this.state = 579; + this.state = 583; localctx._matchField = this.qualifiedNamePattern(); } break; } - this.state = 591; + this.state = 595; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 55, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 56, this._ctx) ) { case 1: { - this.state = 582; + this.state = 586; this.match(esql_parser.WITH); - this.state = 583; + this.state = 587; this.enrichWithClause(); - this.state = 588; + this.state = 592; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 54, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 55, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 584; + this.state = 588; this.match(esql_parser.COMMA); - this.state = 585; + this.state = 589; this.enrichWithClause(); } } } - this.state = 590; + this.state = 594; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 54, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 55, this._ctx); } } break; @@ -3306,19 +3319,19 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 596; + this.state = 600; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 56, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 57, this._ctx) ) { case 1: { - this.state = 593; + this.state = 597; localctx._newName = this.qualifiedNamePattern(); - this.state = 594; + this.state = 598; this.match(esql_parser.ASSIGN); } break; } - this.state = 598; + this.state = 602; localctx._enrichField = this.qualifiedNamePattern(); } } @@ -3343,13 +3356,13 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 600; + this.state = 604; this.match(esql_parser.DEV_LOOKUP); - this.state = 601; + this.state = 605; localctx._tableName = this.indexPattern(); - this.state = 602; + this.state = 606; this.match(esql_parser.ON); - this.state = 603; + this.state = 607; localctx._matchFields = this.qualifiedNamePatterns(); } } @@ -3374,18 +3387,18 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 605; + this.state = 609; this.match(esql_parser.DEV_INLINESTATS); - this.state = 606; + this.state = 610; localctx._stats = this.aggFields(); - this.state = 609; + this.state = 613; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 57, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 58, this._ctx) ) { case 1: { - this.state = 607; + this.state = 611; this.match(esql_parser.BY); - this.state = 608; + this.state = 612; localctx._grouping = this.fields(); } break; @@ -3414,12 +3427,12 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 612; + this.state = 616; this._errHandler.sync(this); _la = this._input.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 29360128) !== 0)) { { - this.state = 611; + this.state = 615; localctx._type_ = this._input.LT(1); _la = this._input.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 29360128) !== 0))) { @@ -3432,11 +3445,11 @@ export default class esql_parser extends parser_config { } } - this.state = 614; + this.state = 618; this.match(esql_parser.DEV_JOIN); - this.state = 615; + this.state = 619; this.joinTarget(); - this.state = 616; + this.state = 620; this.joinCondition(); } } @@ -3462,16 +3475,16 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 618; + this.state = 622; localctx._index = this.identifier(); - this.state = 621; + this.state = 625; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===89) { { - this.state = 619; + this.state = 623; this.match(esql_parser.AS); - this.state = 620; + this.state = 624; localctx._alias = this.identifier(); } } @@ -3500,27 +3513,27 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 623; + this.state = 627; this.match(esql_parser.ON); - this.state = 624; + this.state = 628; this.joinPredicate(); - this.state = 629; + this.state = 633; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 60, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 61, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 625; + this.state = 629; this.match(esql_parser.COMMA); - this.state = 626; + this.state = 630; this.joinPredicate(); } } } - this.state = 631; + this.state = 635; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 60, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 61, this._ctx); } } } @@ -3545,7 +3558,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 632; + this.state = 636; this.valueExpression(); } } @@ -3650,7 +3663,7 @@ export default class esql_parser extends parser_config { return true; } - public static readonly _serializedATN: number[] = [4,1,128,635,2,0,7,0, + public static readonly _serializedATN: number[] = [4,1,128,639,2,0,7,0, 2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9, 2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2, 17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24, @@ -3666,197 +3679,199 @@ export default class esql_parser extends parser_config { 8,5,1,5,1,5,1,5,1,5,1,5,5,5,192,8,5,10,5,12,5,195,9,5,1,5,1,5,1,5,1,5,1, 5,3,5,202,8,5,1,5,1,5,1,5,3,5,207,8,5,1,5,1,5,1,5,1,5,1,5,1,5,5,5,215,8, 5,10,5,12,5,218,9,5,1,6,1,6,3,6,222,8,6,1,6,1,6,1,6,1,6,1,6,3,6,229,8,6, - 1,6,1,6,1,6,3,6,234,8,6,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,3,8,245,8,8, - 1,9,1,9,1,9,1,9,3,9,251,8,9,1,9,1,9,1,9,1,9,1,9,1,9,5,9,259,8,9,10,9,12, - 9,262,9,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,272,8,10,1,10,1, - 10,1,10,5,10,277,8,10,10,10,12,10,280,9,10,1,11,1,11,1,11,1,11,1,11,1,11, - 5,11,288,8,11,10,11,12,11,291,9,11,3,11,293,8,11,1,11,1,11,1,12,1,12,1, - 13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,5,15,307,8,15,10,15,12,15,310,9,15, - 1,16,1,16,1,16,3,16,315,8,16,1,16,1,16,1,17,1,17,1,17,1,17,5,17,323,8,17, - 10,17,12,17,326,9,17,1,17,3,17,329,8,17,1,18,1,18,1,18,3,18,334,8,18,1, - 18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,3,21,344,8,21,1,22,1,22,1,22,1,22, - 5,22,350,8,22,10,22,12,22,353,9,22,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1, - 24,5,24,363,8,24,10,24,12,24,366,9,24,1,24,3,24,369,8,24,1,24,1,24,3,24, - 373,8,24,1,25,1,25,1,25,1,26,1,26,3,26,380,8,26,1,26,1,26,3,26,384,8,26, - 1,27,1,27,1,27,5,27,389,8,27,10,27,12,27,392,9,27,1,28,1,28,1,28,3,28,397, - 8,28,1,29,1,29,1,29,5,29,402,8,29,10,29,12,29,405,9,29,1,30,1,30,1,30,5, - 30,410,8,30,10,30,12,30,413,9,30,1,31,1,31,1,31,5,31,418,8,31,10,31,12, - 31,421,9,31,1,32,1,32,1,33,1,33,1,33,3,33,428,8,33,1,34,1,34,1,34,1,34, - 1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34,443,8,34,10,34,12,34, - 446,9,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34,454,8,34,10,34,12,34,457,9, - 34,1,34,1,34,1,34,1,34,1,34,1,34,5,34,465,8,34,10,34,12,34,468,9,34,1,34, - 1,34,3,34,472,8,34,1,35,1,35,3,35,476,8,35,1,36,1,36,1,36,3,36,481,8,36, - 1,37,1,37,1,37,1,38,1,38,1,38,1,38,5,38,490,8,38,10,38,12,38,493,9,38,1, - 39,1,39,3,39,497,8,39,1,39,1,39,3,39,501,8,39,1,40,1,40,1,40,1,41,1,41, - 1,41,1,42,1,42,1,42,1,42,5,42,513,8,42,10,42,12,42,516,9,42,1,43,1,43,1, - 43,1,43,1,44,1,44,1,44,1,44,3,44,526,8,44,1,45,1,45,1,45,1,45,1,46,1,46, - 1,46,1,47,1,47,1,47,5,47,538,8,47,10,47,12,47,541,9,47,1,48,1,48,1,48,1, - 48,1,49,1,49,1,50,1,50,3,50,551,8,50,1,51,3,51,554,8,51,1,51,1,51,1,52, - 3,52,559,8,52,1,52,1,52,1,53,1,53,1,54,1,54,1,55,1,55,1,55,1,56,1,56,1, - 56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,58,3,58,581,8,58,1,58,1,58,1,58, - 1,58,5,58,587,8,58,10,58,12,58,590,9,58,3,58,592,8,58,1,59,1,59,1,59,3, - 59,597,8,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,3,61, - 610,8,61,1,62,3,62,613,8,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,3,63,622, - 8,63,1,64,1,64,1,64,1,64,5,64,628,8,64,10,64,12,64,631,9,64,1,65,1,65,1, - 65,0,4,2,10,18,20,66,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36, - 38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84, - 86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124, - 126,128,130,0,9,1,0,64,65,1,0,66,68,2,0,30,30,81,81,1,0,72,73,2,0,35,35, - 40,40,2,0,43,43,46,46,2,0,42,42,56,56,2,0,57,57,59,63,1,0,22,24,660,0,132, - 1,0,0,0,2,135,1,0,0,0,4,152,1,0,0,0,6,172,1,0,0,0,8,174,1,0,0,0,10,206, - 1,0,0,0,12,233,1,0,0,0,14,235,1,0,0,0,16,244,1,0,0,0,18,250,1,0,0,0,20, - 271,1,0,0,0,22,281,1,0,0,0,24,296,1,0,0,0,26,298,1,0,0,0,28,300,1,0,0,0, - 30,303,1,0,0,0,32,314,1,0,0,0,34,318,1,0,0,0,36,333,1,0,0,0,38,337,1,0, - 0,0,40,339,1,0,0,0,42,343,1,0,0,0,44,345,1,0,0,0,46,354,1,0,0,0,48,358, - 1,0,0,0,50,374,1,0,0,0,52,377,1,0,0,0,54,385,1,0,0,0,56,393,1,0,0,0,58, - 398,1,0,0,0,60,406,1,0,0,0,62,414,1,0,0,0,64,422,1,0,0,0,66,427,1,0,0,0, - 68,471,1,0,0,0,70,475,1,0,0,0,72,480,1,0,0,0,74,482,1,0,0,0,76,485,1,0, - 0,0,78,494,1,0,0,0,80,502,1,0,0,0,82,505,1,0,0,0,84,508,1,0,0,0,86,517, - 1,0,0,0,88,521,1,0,0,0,90,527,1,0,0,0,92,531,1,0,0,0,94,534,1,0,0,0,96, - 542,1,0,0,0,98,546,1,0,0,0,100,550,1,0,0,0,102,553,1,0,0,0,104,558,1,0, - 0,0,106,562,1,0,0,0,108,564,1,0,0,0,110,566,1,0,0,0,112,569,1,0,0,0,114, - 573,1,0,0,0,116,576,1,0,0,0,118,596,1,0,0,0,120,600,1,0,0,0,122,605,1,0, - 0,0,124,612,1,0,0,0,126,618,1,0,0,0,128,623,1,0,0,0,130,632,1,0,0,0,132, - 133,3,2,1,0,133,134,5,0,0,1,134,1,1,0,0,0,135,136,6,1,-1,0,136,137,3,4, - 2,0,137,143,1,0,0,0,138,139,10,1,0,0,139,140,5,29,0,0,140,142,3,6,3,0,141, - 138,1,0,0,0,142,145,1,0,0,0,143,141,1,0,0,0,143,144,1,0,0,0,144,3,1,0,0, - 0,145,143,1,0,0,0,146,153,3,110,55,0,147,153,3,34,17,0,148,153,3,28,14, - 0,149,153,3,114,57,0,150,151,4,2,1,0,151,153,3,48,24,0,152,146,1,0,0,0, - 152,147,1,0,0,0,152,148,1,0,0,0,152,149,1,0,0,0,152,150,1,0,0,0,153,5,1, - 0,0,0,154,173,3,50,25,0,155,173,3,8,4,0,156,173,3,80,40,0,157,173,3,74, - 37,0,158,173,3,52,26,0,159,173,3,76,38,0,160,173,3,82,41,0,161,173,3,84, - 42,0,162,173,3,88,44,0,163,173,3,90,45,0,164,173,3,116,58,0,165,173,3,92, - 46,0,166,167,4,3,2,0,167,173,3,122,61,0,168,169,4,3,3,0,169,173,3,120,60, - 0,170,171,4,3,4,0,171,173,3,124,62,0,172,154,1,0,0,0,172,155,1,0,0,0,172, - 156,1,0,0,0,172,157,1,0,0,0,172,158,1,0,0,0,172,159,1,0,0,0,172,160,1,0, - 0,0,172,161,1,0,0,0,172,162,1,0,0,0,172,163,1,0,0,0,172,164,1,0,0,0,172, - 165,1,0,0,0,172,166,1,0,0,0,172,168,1,0,0,0,172,170,1,0,0,0,173,7,1,0,0, - 0,174,175,5,16,0,0,175,176,3,10,5,0,176,9,1,0,0,0,177,178,6,5,-1,0,178, - 179,5,49,0,0,179,207,3,10,5,8,180,207,3,16,8,0,181,207,3,12,6,0,182,184, - 3,16,8,0,183,185,5,49,0,0,184,183,1,0,0,0,184,185,1,0,0,0,185,186,1,0,0, - 0,186,187,5,44,0,0,187,188,5,48,0,0,188,193,3,16,8,0,189,190,5,39,0,0,190, - 192,3,16,8,0,191,189,1,0,0,0,192,195,1,0,0,0,193,191,1,0,0,0,193,194,1, - 0,0,0,194,196,1,0,0,0,195,193,1,0,0,0,196,197,5,55,0,0,197,207,1,0,0,0, - 198,199,3,16,8,0,199,201,5,45,0,0,200,202,5,49,0,0,201,200,1,0,0,0,201, - 202,1,0,0,0,202,203,1,0,0,0,203,204,5,50,0,0,204,207,1,0,0,0,205,207,3, - 14,7,0,206,177,1,0,0,0,206,180,1,0,0,0,206,181,1,0,0,0,206,182,1,0,0,0, - 206,198,1,0,0,0,206,205,1,0,0,0,207,216,1,0,0,0,208,209,10,5,0,0,209,210, - 5,34,0,0,210,215,3,10,5,6,211,212,10,4,0,0,212,213,5,52,0,0,213,215,3,10, - 5,5,214,208,1,0,0,0,214,211,1,0,0,0,215,218,1,0,0,0,216,214,1,0,0,0,216, - 217,1,0,0,0,217,11,1,0,0,0,218,216,1,0,0,0,219,221,3,16,8,0,220,222,5,49, - 0,0,221,220,1,0,0,0,221,222,1,0,0,0,222,223,1,0,0,0,223,224,5,47,0,0,224, - 225,3,106,53,0,225,234,1,0,0,0,226,228,3,16,8,0,227,229,5,49,0,0,228,227, - 1,0,0,0,228,229,1,0,0,0,229,230,1,0,0,0,230,231,5,54,0,0,231,232,3,106, - 53,0,232,234,1,0,0,0,233,219,1,0,0,0,233,226,1,0,0,0,234,13,1,0,0,0,235, - 236,3,58,29,0,236,237,5,38,0,0,237,238,3,68,34,0,238,15,1,0,0,0,239,245, - 3,18,9,0,240,241,3,18,9,0,241,242,3,108,54,0,242,243,3,18,9,0,243,245,1, - 0,0,0,244,239,1,0,0,0,244,240,1,0,0,0,245,17,1,0,0,0,246,247,6,9,-1,0,247, - 251,3,20,10,0,248,249,7,0,0,0,249,251,3,18,9,3,250,246,1,0,0,0,250,248, - 1,0,0,0,251,260,1,0,0,0,252,253,10,2,0,0,253,254,7,1,0,0,254,259,3,18,9, - 3,255,256,10,1,0,0,256,257,7,0,0,0,257,259,3,18,9,2,258,252,1,0,0,0,258, - 255,1,0,0,0,259,262,1,0,0,0,260,258,1,0,0,0,260,261,1,0,0,0,261,19,1,0, - 0,0,262,260,1,0,0,0,263,264,6,10,-1,0,264,272,3,68,34,0,265,272,3,58,29, - 0,266,272,3,22,11,0,267,268,5,48,0,0,268,269,3,10,5,0,269,270,5,55,0,0, - 270,272,1,0,0,0,271,263,1,0,0,0,271,265,1,0,0,0,271,266,1,0,0,0,271,267, - 1,0,0,0,272,278,1,0,0,0,273,274,10,1,0,0,274,275,5,37,0,0,275,277,3,26, - 13,0,276,273,1,0,0,0,277,280,1,0,0,0,278,276,1,0,0,0,278,279,1,0,0,0,279, - 21,1,0,0,0,280,278,1,0,0,0,281,282,3,24,12,0,282,292,5,48,0,0,283,293,5, - 66,0,0,284,289,3,10,5,0,285,286,5,39,0,0,286,288,3,10,5,0,287,285,1,0,0, - 0,288,291,1,0,0,0,289,287,1,0,0,0,289,290,1,0,0,0,290,293,1,0,0,0,291,289, - 1,0,0,0,292,283,1,0,0,0,292,284,1,0,0,0,292,293,1,0,0,0,293,294,1,0,0,0, - 294,295,5,55,0,0,295,23,1,0,0,0,296,297,3,72,36,0,297,25,1,0,0,0,298,299, - 3,64,32,0,299,27,1,0,0,0,300,301,5,12,0,0,301,302,3,30,15,0,302,29,1,0, - 0,0,303,308,3,32,16,0,304,305,5,39,0,0,305,307,3,32,16,0,306,304,1,0,0, - 0,307,310,1,0,0,0,308,306,1,0,0,0,308,309,1,0,0,0,309,31,1,0,0,0,310,308, - 1,0,0,0,311,312,3,58,29,0,312,313,5,36,0,0,313,315,1,0,0,0,314,311,1,0, - 0,0,314,315,1,0,0,0,315,316,1,0,0,0,316,317,3,10,5,0,317,33,1,0,0,0,318, - 319,5,6,0,0,319,324,3,36,18,0,320,321,5,39,0,0,321,323,3,36,18,0,322,320, - 1,0,0,0,323,326,1,0,0,0,324,322,1,0,0,0,324,325,1,0,0,0,325,328,1,0,0,0, - 326,324,1,0,0,0,327,329,3,42,21,0,328,327,1,0,0,0,328,329,1,0,0,0,329,35, - 1,0,0,0,330,331,3,38,19,0,331,332,5,38,0,0,332,334,1,0,0,0,333,330,1,0, - 0,0,333,334,1,0,0,0,334,335,1,0,0,0,335,336,3,40,20,0,336,37,1,0,0,0,337, - 338,5,81,0,0,338,39,1,0,0,0,339,340,7,2,0,0,340,41,1,0,0,0,341,344,3,44, - 22,0,342,344,3,46,23,0,343,341,1,0,0,0,343,342,1,0,0,0,344,43,1,0,0,0,345, - 346,5,80,0,0,346,351,5,81,0,0,347,348,5,39,0,0,348,350,5,81,0,0,349,347, - 1,0,0,0,350,353,1,0,0,0,351,349,1,0,0,0,351,352,1,0,0,0,352,45,1,0,0,0, - 353,351,1,0,0,0,354,355,5,70,0,0,355,356,3,44,22,0,356,357,5,71,0,0,357, - 47,1,0,0,0,358,359,5,19,0,0,359,364,3,36,18,0,360,361,5,39,0,0,361,363, - 3,36,18,0,362,360,1,0,0,0,363,366,1,0,0,0,364,362,1,0,0,0,364,365,1,0,0, - 0,365,368,1,0,0,0,366,364,1,0,0,0,367,369,3,54,27,0,368,367,1,0,0,0,368, - 369,1,0,0,0,369,372,1,0,0,0,370,371,5,33,0,0,371,373,3,30,15,0,372,370, - 1,0,0,0,372,373,1,0,0,0,373,49,1,0,0,0,374,375,5,4,0,0,375,376,3,30,15, - 0,376,51,1,0,0,0,377,379,5,15,0,0,378,380,3,54,27,0,379,378,1,0,0,0,379, - 380,1,0,0,0,380,383,1,0,0,0,381,382,5,33,0,0,382,384,3,30,15,0,383,381, - 1,0,0,0,383,384,1,0,0,0,384,53,1,0,0,0,385,390,3,56,28,0,386,387,5,39,0, - 0,387,389,3,56,28,0,388,386,1,0,0,0,389,392,1,0,0,0,390,388,1,0,0,0,390, - 391,1,0,0,0,391,55,1,0,0,0,392,390,1,0,0,0,393,396,3,32,16,0,394,395,5, - 16,0,0,395,397,3,10,5,0,396,394,1,0,0,0,396,397,1,0,0,0,397,57,1,0,0,0, - 398,403,3,72,36,0,399,400,5,41,0,0,400,402,3,72,36,0,401,399,1,0,0,0,402, - 405,1,0,0,0,403,401,1,0,0,0,403,404,1,0,0,0,404,59,1,0,0,0,405,403,1,0, - 0,0,406,411,3,66,33,0,407,408,5,41,0,0,408,410,3,66,33,0,409,407,1,0,0, - 0,410,413,1,0,0,0,411,409,1,0,0,0,411,412,1,0,0,0,412,61,1,0,0,0,413,411, - 1,0,0,0,414,419,3,60,30,0,415,416,5,39,0,0,416,418,3,60,30,0,417,415,1, - 0,0,0,418,421,1,0,0,0,419,417,1,0,0,0,419,420,1,0,0,0,420,63,1,0,0,0,421, - 419,1,0,0,0,422,423,7,3,0,0,423,65,1,0,0,0,424,428,5,85,0,0,425,426,4,33, - 10,0,426,428,3,70,35,0,427,424,1,0,0,0,427,425,1,0,0,0,428,67,1,0,0,0,429, - 472,5,50,0,0,430,431,3,104,52,0,431,432,5,72,0,0,432,472,1,0,0,0,433,472, - 3,102,51,0,434,472,3,104,52,0,435,472,3,98,49,0,436,472,3,70,35,0,437,472, - 3,106,53,0,438,439,5,70,0,0,439,444,3,100,50,0,440,441,5,39,0,0,441,443, - 3,100,50,0,442,440,1,0,0,0,443,446,1,0,0,0,444,442,1,0,0,0,444,445,1,0, - 0,0,445,447,1,0,0,0,446,444,1,0,0,0,447,448,5,71,0,0,448,472,1,0,0,0,449, - 450,5,70,0,0,450,455,3,98,49,0,451,452,5,39,0,0,452,454,3,98,49,0,453,451, - 1,0,0,0,454,457,1,0,0,0,455,453,1,0,0,0,455,456,1,0,0,0,456,458,1,0,0,0, - 457,455,1,0,0,0,458,459,5,71,0,0,459,472,1,0,0,0,460,461,5,70,0,0,461,466, - 3,106,53,0,462,463,5,39,0,0,463,465,3,106,53,0,464,462,1,0,0,0,465,468, - 1,0,0,0,466,464,1,0,0,0,466,467,1,0,0,0,467,469,1,0,0,0,468,466,1,0,0,0, - 469,470,5,71,0,0,470,472,1,0,0,0,471,429,1,0,0,0,471,430,1,0,0,0,471,433, - 1,0,0,0,471,434,1,0,0,0,471,435,1,0,0,0,471,436,1,0,0,0,471,437,1,0,0,0, - 471,438,1,0,0,0,471,449,1,0,0,0,471,460,1,0,0,0,472,69,1,0,0,0,473,476, - 5,53,0,0,474,476,5,69,0,0,475,473,1,0,0,0,475,474,1,0,0,0,476,71,1,0,0, - 0,477,481,3,64,32,0,478,479,4,36,11,0,479,481,3,70,35,0,480,477,1,0,0,0, - 480,478,1,0,0,0,481,73,1,0,0,0,482,483,5,9,0,0,483,484,5,31,0,0,484,75, - 1,0,0,0,485,486,5,14,0,0,486,491,3,78,39,0,487,488,5,39,0,0,488,490,3,78, - 39,0,489,487,1,0,0,0,490,493,1,0,0,0,491,489,1,0,0,0,491,492,1,0,0,0,492, - 77,1,0,0,0,493,491,1,0,0,0,494,496,3,10,5,0,495,497,7,4,0,0,496,495,1,0, - 0,0,496,497,1,0,0,0,497,500,1,0,0,0,498,499,5,51,0,0,499,501,7,5,0,0,500, - 498,1,0,0,0,500,501,1,0,0,0,501,79,1,0,0,0,502,503,5,8,0,0,503,504,3,62, - 31,0,504,81,1,0,0,0,505,506,5,2,0,0,506,507,3,62,31,0,507,83,1,0,0,0,508, - 509,5,11,0,0,509,514,3,86,43,0,510,511,5,39,0,0,511,513,3,86,43,0,512,510, - 1,0,0,0,513,516,1,0,0,0,514,512,1,0,0,0,514,515,1,0,0,0,515,85,1,0,0,0, - 516,514,1,0,0,0,517,518,3,60,30,0,518,519,5,89,0,0,519,520,3,60,30,0,520, - 87,1,0,0,0,521,522,5,1,0,0,522,523,3,20,10,0,523,525,3,106,53,0,524,526, - 3,94,47,0,525,524,1,0,0,0,525,526,1,0,0,0,526,89,1,0,0,0,527,528,5,7,0, - 0,528,529,3,20,10,0,529,530,3,106,53,0,530,91,1,0,0,0,531,532,5,10,0,0, - 532,533,3,58,29,0,533,93,1,0,0,0,534,539,3,96,48,0,535,536,5,39,0,0,536, - 538,3,96,48,0,537,535,1,0,0,0,538,541,1,0,0,0,539,537,1,0,0,0,539,540,1, - 0,0,0,540,95,1,0,0,0,541,539,1,0,0,0,542,543,3,64,32,0,543,544,5,36,0,0, - 544,545,3,68,34,0,545,97,1,0,0,0,546,547,7,6,0,0,547,99,1,0,0,0,548,551, - 3,102,51,0,549,551,3,104,52,0,550,548,1,0,0,0,550,549,1,0,0,0,551,101,1, - 0,0,0,552,554,7,0,0,0,553,552,1,0,0,0,553,554,1,0,0,0,554,555,1,0,0,0,555, - 556,5,32,0,0,556,103,1,0,0,0,557,559,7,0,0,0,558,557,1,0,0,0,558,559,1, - 0,0,0,559,560,1,0,0,0,560,561,5,31,0,0,561,105,1,0,0,0,562,563,5,30,0,0, - 563,107,1,0,0,0,564,565,7,7,0,0,565,109,1,0,0,0,566,567,5,5,0,0,567,568, - 3,112,56,0,568,111,1,0,0,0,569,570,5,70,0,0,570,571,3,2,1,0,571,572,5,71, - 0,0,572,113,1,0,0,0,573,574,5,13,0,0,574,575,5,105,0,0,575,115,1,0,0,0, - 576,577,5,3,0,0,577,580,5,95,0,0,578,579,5,93,0,0,579,581,3,60,30,0,580, - 578,1,0,0,0,580,581,1,0,0,0,581,591,1,0,0,0,582,583,5,94,0,0,583,588,3, - 118,59,0,584,585,5,39,0,0,585,587,3,118,59,0,586,584,1,0,0,0,587,590,1, - 0,0,0,588,586,1,0,0,0,588,589,1,0,0,0,589,592,1,0,0,0,590,588,1,0,0,0,591, - 582,1,0,0,0,591,592,1,0,0,0,592,117,1,0,0,0,593,594,3,60,30,0,594,595,5, - 36,0,0,595,597,1,0,0,0,596,593,1,0,0,0,596,597,1,0,0,0,597,598,1,0,0,0, - 598,599,3,60,30,0,599,119,1,0,0,0,600,601,5,18,0,0,601,602,3,36,18,0,602, - 603,5,93,0,0,603,604,3,62,31,0,604,121,1,0,0,0,605,606,5,17,0,0,606,609, - 3,54,27,0,607,608,5,33,0,0,608,610,3,30,15,0,609,607,1,0,0,0,609,610,1, - 0,0,0,610,123,1,0,0,0,611,613,7,8,0,0,612,611,1,0,0,0,612,613,1,0,0,0,613, - 614,1,0,0,0,614,615,5,20,0,0,615,616,3,126,63,0,616,617,3,128,64,0,617, - 125,1,0,0,0,618,621,3,64,32,0,619,620,5,89,0,0,620,622,3,64,32,0,621,619, - 1,0,0,0,621,622,1,0,0,0,622,127,1,0,0,0,623,624,5,93,0,0,624,629,3,130, - 65,0,625,626,5,39,0,0,626,628,3,130,65,0,627,625,1,0,0,0,628,631,1,0,0, - 0,629,627,1,0,0,0,629,630,1,0,0,0,630,129,1,0,0,0,631,629,1,0,0,0,632,633, - 3,16,8,0,633,131,1,0,0,0,61,143,152,172,184,193,201,206,214,216,221,228, - 233,244,250,258,260,271,278,289,292,308,314,324,328,333,343,351,364,368, - 372,379,383,390,396,403,411,419,427,444,455,466,471,475,480,491,496,500, - 514,525,539,550,553,558,580,588,591,596,609,612,621,629]; + 1,6,1,6,1,6,3,6,234,8,6,1,7,1,7,1,7,3,7,239,8,7,1,7,1,7,1,7,1,8,1,8,1,8, + 1,8,1,8,3,8,249,8,8,1,9,1,9,1,9,1,9,3,9,255,8,9,1,9,1,9,1,9,1,9,1,9,1,9, + 5,9,263,8,9,10,9,12,9,266,9,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3, + 10,276,8,10,1,10,1,10,1,10,5,10,281,8,10,10,10,12,10,284,9,10,1,11,1,11, + 1,11,1,11,1,11,1,11,5,11,292,8,11,10,11,12,11,295,9,11,3,11,297,8,11,1, + 11,1,11,1,12,1,12,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,5,15,311,8,15, + 10,15,12,15,314,9,15,1,16,1,16,1,16,3,16,319,8,16,1,16,1,16,1,17,1,17,1, + 17,1,17,5,17,327,8,17,10,17,12,17,330,9,17,1,17,3,17,333,8,17,1,18,1,18, + 1,18,3,18,338,8,18,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,3,21,348,8,21, + 1,22,1,22,1,22,1,22,5,22,354,8,22,10,22,12,22,357,9,22,1,23,1,23,1,23,1, + 23,1,24,1,24,1,24,1,24,5,24,367,8,24,10,24,12,24,370,9,24,1,24,3,24,373, + 8,24,1,24,1,24,3,24,377,8,24,1,25,1,25,1,25,1,26,1,26,3,26,384,8,26,1,26, + 1,26,3,26,388,8,26,1,27,1,27,1,27,5,27,393,8,27,10,27,12,27,396,9,27,1, + 28,1,28,1,28,3,28,401,8,28,1,29,1,29,1,29,5,29,406,8,29,10,29,12,29,409, + 9,29,1,30,1,30,1,30,5,30,414,8,30,10,30,12,30,417,9,30,1,31,1,31,1,31,5, + 31,422,8,31,10,31,12,31,425,9,31,1,32,1,32,1,33,1,33,1,33,3,33,432,8,33, + 1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34,447, + 8,34,10,34,12,34,450,9,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34,458,8,34,10, + 34,12,34,461,9,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34,469,8,34,10,34,12, + 34,472,9,34,1,34,1,34,3,34,476,8,34,1,35,1,35,3,35,480,8,35,1,36,1,36,1, + 36,3,36,485,8,36,1,37,1,37,1,37,1,38,1,38,1,38,1,38,5,38,494,8,38,10,38, + 12,38,497,9,38,1,39,1,39,3,39,501,8,39,1,39,1,39,3,39,505,8,39,1,40,1,40, + 1,40,1,41,1,41,1,41,1,42,1,42,1,42,1,42,5,42,517,8,42,10,42,12,42,520,9, + 42,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,3,44,530,8,44,1,45,1,45,1,45, + 1,45,1,46,1,46,1,46,1,47,1,47,1,47,5,47,542,8,47,10,47,12,47,545,9,47,1, + 48,1,48,1,48,1,48,1,49,1,49,1,50,1,50,3,50,555,8,50,1,51,3,51,558,8,51, + 1,51,1,51,1,52,3,52,563,8,52,1,52,1,52,1,53,1,53,1,54,1,54,1,55,1,55,1, + 55,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,58,3,58,585,8,58, + 1,58,1,58,1,58,1,58,5,58,591,8,58,10,58,12,58,594,9,58,3,58,596,8,58,1, + 59,1,59,1,59,3,59,601,8,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61, + 1,61,1,61,3,61,614,8,61,1,62,3,62,617,8,62,1,62,1,62,1,62,1,62,1,63,1,63, + 1,63,3,63,626,8,63,1,64,1,64,1,64,1,64,5,64,632,8,64,10,64,12,64,635,9, + 64,1,65,1,65,1,65,0,4,2,10,18,20,66,0,2,4,6,8,10,12,14,16,18,20,22,24,26, + 28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74, + 76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116, + 118,120,122,124,126,128,130,0,9,1,0,64,65,1,0,66,68,2,0,30,30,81,81,1,0, + 72,73,2,0,35,35,40,40,2,0,43,43,46,46,2,0,42,42,56,56,2,0,57,57,59,63,1, + 0,22,24,665,0,132,1,0,0,0,2,135,1,0,0,0,4,152,1,0,0,0,6,172,1,0,0,0,8,174, + 1,0,0,0,10,206,1,0,0,0,12,233,1,0,0,0,14,235,1,0,0,0,16,248,1,0,0,0,18, + 254,1,0,0,0,20,275,1,0,0,0,22,285,1,0,0,0,24,300,1,0,0,0,26,302,1,0,0,0, + 28,304,1,0,0,0,30,307,1,0,0,0,32,318,1,0,0,0,34,322,1,0,0,0,36,337,1,0, + 0,0,38,341,1,0,0,0,40,343,1,0,0,0,42,347,1,0,0,0,44,349,1,0,0,0,46,358, + 1,0,0,0,48,362,1,0,0,0,50,378,1,0,0,0,52,381,1,0,0,0,54,389,1,0,0,0,56, + 397,1,0,0,0,58,402,1,0,0,0,60,410,1,0,0,0,62,418,1,0,0,0,64,426,1,0,0,0, + 66,431,1,0,0,0,68,475,1,0,0,0,70,479,1,0,0,0,72,484,1,0,0,0,74,486,1,0, + 0,0,76,489,1,0,0,0,78,498,1,0,0,0,80,506,1,0,0,0,82,509,1,0,0,0,84,512, + 1,0,0,0,86,521,1,0,0,0,88,525,1,0,0,0,90,531,1,0,0,0,92,535,1,0,0,0,94, + 538,1,0,0,0,96,546,1,0,0,0,98,550,1,0,0,0,100,554,1,0,0,0,102,557,1,0,0, + 0,104,562,1,0,0,0,106,566,1,0,0,0,108,568,1,0,0,0,110,570,1,0,0,0,112,573, + 1,0,0,0,114,577,1,0,0,0,116,580,1,0,0,0,118,600,1,0,0,0,120,604,1,0,0,0, + 122,609,1,0,0,0,124,616,1,0,0,0,126,622,1,0,0,0,128,627,1,0,0,0,130,636, + 1,0,0,0,132,133,3,2,1,0,133,134,5,0,0,1,134,1,1,0,0,0,135,136,6,1,-1,0, + 136,137,3,4,2,0,137,143,1,0,0,0,138,139,10,1,0,0,139,140,5,29,0,0,140,142, + 3,6,3,0,141,138,1,0,0,0,142,145,1,0,0,0,143,141,1,0,0,0,143,144,1,0,0,0, + 144,3,1,0,0,0,145,143,1,0,0,0,146,153,3,110,55,0,147,153,3,34,17,0,148, + 153,3,28,14,0,149,153,3,114,57,0,150,151,4,2,1,0,151,153,3,48,24,0,152, + 146,1,0,0,0,152,147,1,0,0,0,152,148,1,0,0,0,152,149,1,0,0,0,152,150,1,0, + 0,0,153,5,1,0,0,0,154,173,3,50,25,0,155,173,3,8,4,0,156,173,3,80,40,0,157, + 173,3,74,37,0,158,173,3,52,26,0,159,173,3,76,38,0,160,173,3,82,41,0,161, + 173,3,84,42,0,162,173,3,88,44,0,163,173,3,90,45,0,164,173,3,116,58,0,165, + 173,3,92,46,0,166,167,4,3,2,0,167,173,3,122,61,0,168,169,4,3,3,0,169,173, + 3,120,60,0,170,171,4,3,4,0,171,173,3,124,62,0,172,154,1,0,0,0,172,155,1, + 0,0,0,172,156,1,0,0,0,172,157,1,0,0,0,172,158,1,0,0,0,172,159,1,0,0,0,172, + 160,1,0,0,0,172,161,1,0,0,0,172,162,1,0,0,0,172,163,1,0,0,0,172,164,1,0, + 0,0,172,165,1,0,0,0,172,166,1,0,0,0,172,168,1,0,0,0,172,170,1,0,0,0,173, + 7,1,0,0,0,174,175,5,16,0,0,175,176,3,10,5,0,176,9,1,0,0,0,177,178,6,5,-1, + 0,178,179,5,49,0,0,179,207,3,10,5,8,180,207,3,16,8,0,181,207,3,12,6,0,182, + 184,3,16,8,0,183,185,5,49,0,0,184,183,1,0,0,0,184,185,1,0,0,0,185,186,1, + 0,0,0,186,187,5,44,0,0,187,188,5,48,0,0,188,193,3,16,8,0,189,190,5,39,0, + 0,190,192,3,16,8,0,191,189,1,0,0,0,192,195,1,0,0,0,193,191,1,0,0,0,193, + 194,1,0,0,0,194,196,1,0,0,0,195,193,1,0,0,0,196,197,5,55,0,0,197,207,1, + 0,0,0,198,199,3,16,8,0,199,201,5,45,0,0,200,202,5,49,0,0,201,200,1,0,0, + 0,201,202,1,0,0,0,202,203,1,0,0,0,203,204,5,50,0,0,204,207,1,0,0,0,205, + 207,3,14,7,0,206,177,1,0,0,0,206,180,1,0,0,0,206,181,1,0,0,0,206,182,1, + 0,0,0,206,198,1,0,0,0,206,205,1,0,0,0,207,216,1,0,0,0,208,209,10,5,0,0, + 209,210,5,34,0,0,210,215,3,10,5,6,211,212,10,4,0,0,212,213,5,52,0,0,213, + 215,3,10,5,5,214,208,1,0,0,0,214,211,1,0,0,0,215,218,1,0,0,0,216,214,1, + 0,0,0,216,217,1,0,0,0,217,11,1,0,0,0,218,216,1,0,0,0,219,221,3,16,8,0,220, + 222,5,49,0,0,221,220,1,0,0,0,221,222,1,0,0,0,222,223,1,0,0,0,223,224,5, + 47,0,0,224,225,3,106,53,0,225,234,1,0,0,0,226,228,3,16,8,0,227,229,5,49, + 0,0,228,227,1,0,0,0,228,229,1,0,0,0,229,230,1,0,0,0,230,231,5,54,0,0,231, + 232,3,106,53,0,232,234,1,0,0,0,233,219,1,0,0,0,233,226,1,0,0,0,234,13,1, + 0,0,0,235,238,3,58,29,0,236,237,5,37,0,0,237,239,3,26,13,0,238,236,1,0, + 0,0,238,239,1,0,0,0,239,240,1,0,0,0,240,241,5,38,0,0,241,242,3,68,34,0, + 242,15,1,0,0,0,243,249,3,18,9,0,244,245,3,18,9,0,245,246,3,108,54,0,246, + 247,3,18,9,0,247,249,1,0,0,0,248,243,1,0,0,0,248,244,1,0,0,0,249,17,1,0, + 0,0,250,251,6,9,-1,0,251,255,3,20,10,0,252,253,7,0,0,0,253,255,3,18,9,3, + 254,250,1,0,0,0,254,252,1,0,0,0,255,264,1,0,0,0,256,257,10,2,0,0,257,258, + 7,1,0,0,258,263,3,18,9,3,259,260,10,1,0,0,260,261,7,0,0,0,261,263,3,18, + 9,2,262,256,1,0,0,0,262,259,1,0,0,0,263,266,1,0,0,0,264,262,1,0,0,0,264, + 265,1,0,0,0,265,19,1,0,0,0,266,264,1,0,0,0,267,268,6,10,-1,0,268,276,3, + 68,34,0,269,276,3,58,29,0,270,276,3,22,11,0,271,272,5,48,0,0,272,273,3, + 10,5,0,273,274,5,55,0,0,274,276,1,0,0,0,275,267,1,0,0,0,275,269,1,0,0,0, + 275,270,1,0,0,0,275,271,1,0,0,0,276,282,1,0,0,0,277,278,10,1,0,0,278,279, + 5,37,0,0,279,281,3,26,13,0,280,277,1,0,0,0,281,284,1,0,0,0,282,280,1,0, + 0,0,282,283,1,0,0,0,283,21,1,0,0,0,284,282,1,0,0,0,285,286,3,24,12,0,286, + 296,5,48,0,0,287,297,5,66,0,0,288,293,3,10,5,0,289,290,5,39,0,0,290,292, + 3,10,5,0,291,289,1,0,0,0,292,295,1,0,0,0,293,291,1,0,0,0,293,294,1,0,0, + 0,294,297,1,0,0,0,295,293,1,0,0,0,296,287,1,0,0,0,296,288,1,0,0,0,296,297, + 1,0,0,0,297,298,1,0,0,0,298,299,5,55,0,0,299,23,1,0,0,0,300,301,3,72,36, + 0,301,25,1,0,0,0,302,303,3,64,32,0,303,27,1,0,0,0,304,305,5,12,0,0,305, + 306,3,30,15,0,306,29,1,0,0,0,307,312,3,32,16,0,308,309,5,39,0,0,309,311, + 3,32,16,0,310,308,1,0,0,0,311,314,1,0,0,0,312,310,1,0,0,0,312,313,1,0,0, + 0,313,31,1,0,0,0,314,312,1,0,0,0,315,316,3,58,29,0,316,317,5,36,0,0,317, + 319,1,0,0,0,318,315,1,0,0,0,318,319,1,0,0,0,319,320,1,0,0,0,320,321,3,10, + 5,0,321,33,1,0,0,0,322,323,5,6,0,0,323,328,3,36,18,0,324,325,5,39,0,0,325, + 327,3,36,18,0,326,324,1,0,0,0,327,330,1,0,0,0,328,326,1,0,0,0,328,329,1, + 0,0,0,329,332,1,0,0,0,330,328,1,0,0,0,331,333,3,42,21,0,332,331,1,0,0,0, + 332,333,1,0,0,0,333,35,1,0,0,0,334,335,3,38,19,0,335,336,5,38,0,0,336,338, + 1,0,0,0,337,334,1,0,0,0,337,338,1,0,0,0,338,339,1,0,0,0,339,340,3,40,20, + 0,340,37,1,0,0,0,341,342,5,81,0,0,342,39,1,0,0,0,343,344,7,2,0,0,344,41, + 1,0,0,0,345,348,3,44,22,0,346,348,3,46,23,0,347,345,1,0,0,0,347,346,1,0, + 0,0,348,43,1,0,0,0,349,350,5,80,0,0,350,355,5,81,0,0,351,352,5,39,0,0,352, + 354,5,81,0,0,353,351,1,0,0,0,354,357,1,0,0,0,355,353,1,0,0,0,355,356,1, + 0,0,0,356,45,1,0,0,0,357,355,1,0,0,0,358,359,5,70,0,0,359,360,3,44,22,0, + 360,361,5,71,0,0,361,47,1,0,0,0,362,363,5,19,0,0,363,368,3,36,18,0,364, + 365,5,39,0,0,365,367,3,36,18,0,366,364,1,0,0,0,367,370,1,0,0,0,368,366, + 1,0,0,0,368,369,1,0,0,0,369,372,1,0,0,0,370,368,1,0,0,0,371,373,3,54,27, + 0,372,371,1,0,0,0,372,373,1,0,0,0,373,376,1,0,0,0,374,375,5,33,0,0,375, + 377,3,30,15,0,376,374,1,0,0,0,376,377,1,0,0,0,377,49,1,0,0,0,378,379,5, + 4,0,0,379,380,3,30,15,0,380,51,1,0,0,0,381,383,5,15,0,0,382,384,3,54,27, + 0,383,382,1,0,0,0,383,384,1,0,0,0,384,387,1,0,0,0,385,386,5,33,0,0,386, + 388,3,30,15,0,387,385,1,0,0,0,387,388,1,0,0,0,388,53,1,0,0,0,389,394,3, + 56,28,0,390,391,5,39,0,0,391,393,3,56,28,0,392,390,1,0,0,0,393,396,1,0, + 0,0,394,392,1,0,0,0,394,395,1,0,0,0,395,55,1,0,0,0,396,394,1,0,0,0,397, + 400,3,32,16,0,398,399,5,16,0,0,399,401,3,10,5,0,400,398,1,0,0,0,400,401, + 1,0,0,0,401,57,1,0,0,0,402,407,3,72,36,0,403,404,5,41,0,0,404,406,3,72, + 36,0,405,403,1,0,0,0,406,409,1,0,0,0,407,405,1,0,0,0,407,408,1,0,0,0,408, + 59,1,0,0,0,409,407,1,0,0,0,410,415,3,66,33,0,411,412,5,41,0,0,412,414,3, + 66,33,0,413,411,1,0,0,0,414,417,1,0,0,0,415,413,1,0,0,0,415,416,1,0,0,0, + 416,61,1,0,0,0,417,415,1,0,0,0,418,423,3,60,30,0,419,420,5,39,0,0,420,422, + 3,60,30,0,421,419,1,0,0,0,422,425,1,0,0,0,423,421,1,0,0,0,423,424,1,0,0, + 0,424,63,1,0,0,0,425,423,1,0,0,0,426,427,7,3,0,0,427,65,1,0,0,0,428,432, + 5,85,0,0,429,430,4,33,10,0,430,432,3,70,35,0,431,428,1,0,0,0,431,429,1, + 0,0,0,432,67,1,0,0,0,433,476,5,50,0,0,434,435,3,104,52,0,435,436,5,72,0, + 0,436,476,1,0,0,0,437,476,3,102,51,0,438,476,3,104,52,0,439,476,3,98,49, + 0,440,476,3,70,35,0,441,476,3,106,53,0,442,443,5,70,0,0,443,448,3,100,50, + 0,444,445,5,39,0,0,445,447,3,100,50,0,446,444,1,0,0,0,447,450,1,0,0,0,448, + 446,1,0,0,0,448,449,1,0,0,0,449,451,1,0,0,0,450,448,1,0,0,0,451,452,5,71, + 0,0,452,476,1,0,0,0,453,454,5,70,0,0,454,459,3,98,49,0,455,456,5,39,0,0, + 456,458,3,98,49,0,457,455,1,0,0,0,458,461,1,0,0,0,459,457,1,0,0,0,459,460, + 1,0,0,0,460,462,1,0,0,0,461,459,1,0,0,0,462,463,5,71,0,0,463,476,1,0,0, + 0,464,465,5,70,0,0,465,470,3,106,53,0,466,467,5,39,0,0,467,469,3,106,53, + 0,468,466,1,0,0,0,469,472,1,0,0,0,470,468,1,0,0,0,470,471,1,0,0,0,471,473, + 1,0,0,0,472,470,1,0,0,0,473,474,5,71,0,0,474,476,1,0,0,0,475,433,1,0,0, + 0,475,434,1,0,0,0,475,437,1,0,0,0,475,438,1,0,0,0,475,439,1,0,0,0,475,440, + 1,0,0,0,475,441,1,0,0,0,475,442,1,0,0,0,475,453,1,0,0,0,475,464,1,0,0,0, + 476,69,1,0,0,0,477,480,5,53,0,0,478,480,5,69,0,0,479,477,1,0,0,0,479,478, + 1,0,0,0,480,71,1,0,0,0,481,485,3,64,32,0,482,483,4,36,11,0,483,485,3,70, + 35,0,484,481,1,0,0,0,484,482,1,0,0,0,485,73,1,0,0,0,486,487,5,9,0,0,487, + 488,5,31,0,0,488,75,1,0,0,0,489,490,5,14,0,0,490,495,3,78,39,0,491,492, + 5,39,0,0,492,494,3,78,39,0,493,491,1,0,0,0,494,497,1,0,0,0,495,493,1,0, + 0,0,495,496,1,0,0,0,496,77,1,0,0,0,497,495,1,0,0,0,498,500,3,10,5,0,499, + 501,7,4,0,0,500,499,1,0,0,0,500,501,1,0,0,0,501,504,1,0,0,0,502,503,5,51, + 0,0,503,505,7,5,0,0,504,502,1,0,0,0,504,505,1,0,0,0,505,79,1,0,0,0,506, + 507,5,8,0,0,507,508,3,62,31,0,508,81,1,0,0,0,509,510,5,2,0,0,510,511,3, + 62,31,0,511,83,1,0,0,0,512,513,5,11,0,0,513,518,3,86,43,0,514,515,5,39, + 0,0,515,517,3,86,43,0,516,514,1,0,0,0,517,520,1,0,0,0,518,516,1,0,0,0,518, + 519,1,0,0,0,519,85,1,0,0,0,520,518,1,0,0,0,521,522,3,60,30,0,522,523,5, + 89,0,0,523,524,3,60,30,0,524,87,1,0,0,0,525,526,5,1,0,0,526,527,3,20,10, + 0,527,529,3,106,53,0,528,530,3,94,47,0,529,528,1,0,0,0,529,530,1,0,0,0, + 530,89,1,0,0,0,531,532,5,7,0,0,532,533,3,20,10,0,533,534,3,106,53,0,534, + 91,1,0,0,0,535,536,5,10,0,0,536,537,3,58,29,0,537,93,1,0,0,0,538,543,3, + 96,48,0,539,540,5,39,0,0,540,542,3,96,48,0,541,539,1,0,0,0,542,545,1,0, + 0,0,543,541,1,0,0,0,543,544,1,0,0,0,544,95,1,0,0,0,545,543,1,0,0,0,546, + 547,3,64,32,0,547,548,5,36,0,0,548,549,3,68,34,0,549,97,1,0,0,0,550,551, + 7,6,0,0,551,99,1,0,0,0,552,555,3,102,51,0,553,555,3,104,52,0,554,552,1, + 0,0,0,554,553,1,0,0,0,555,101,1,0,0,0,556,558,7,0,0,0,557,556,1,0,0,0,557, + 558,1,0,0,0,558,559,1,0,0,0,559,560,5,32,0,0,560,103,1,0,0,0,561,563,7, + 0,0,0,562,561,1,0,0,0,562,563,1,0,0,0,563,564,1,0,0,0,564,565,5,31,0,0, + 565,105,1,0,0,0,566,567,5,30,0,0,567,107,1,0,0,0,568,569,7,7,0,0,569,109, + 1,0,0,0,570,571,5,5,0,0,571,572,3,112,56,0,572,111,1,0,0,0,573,574,5,70, + 0,0,574,575,3,2,1,0,575,576,5,71,0,0,576,113,1,0,0,0,577,578,5,13,0,0,578, + 579,5,105,0,0,579,115,1,0,0,0,580,581,5,3,0,0,581,584,5,95,0,0,582,583, + 5,93,0,0,583,585,3,60,30,0,584,582,1,0,0,0,584,585,1,0,0,0,585,595,1,0, + 0,0,586,587,5,94,0,0,587,592,3,118,59,0,588,589,5,39,0,0,589,591,3,118, + 59,0,590,588,1,0,0,0,591,594,1,0,0,0,592,590,1,0,0,0,592,593,1,0,0,0,593, + 596,1,0,0,0,594,592,1,0,0,0,595,586,1,0,0,0,595,596,1,0,0,0,596,117,1,0, + 0,0,597,598,3,60,30,0,598,599,5,36,0,0,599,601,1,0,0,0,600,597,1,0,0,0, + 600,601,1,0,0,0,601,602,1,0,0,0,602,603,3,60,30,0,603,119,1,0,0,0,604,605, + 5,18,0,0,605,606,3,36,18,0,606,607,5,93,0,0,607,608,3,62,31,0,608,121,1, + 0,0,0,609,610,5,17,0,0,610,613,3,54,27,0,611,612,5,33,0,0,612,614,3,30, + 15,0,613,611,1,0,0,0,613,614,1,0,0,0,614,123,1,0,0,0,615,617,7,8,0,0,616, + 615,1,0,0,0,616,617,1,0,0,0,617,618,1,0,0,0,618,619,5,20,0,0,619,620,3, + 126,63,0,620,621,3,128,64,0,621,125,1,0,0,0,622,625,3,64,32,0,623,624,5, + 89,0,0,624,626,3,64,32,0,625,623,1,0,0,0,625,626,1,0,0,0,626,127,1,0,0, + 0,627,628,5,93,0,0,628,633,3,130,65,0,629,630,5,39,0,0,630,632,3,130,65, + 0,631,629,1,0,0,0,632,635,1,0,0,0,633,631,1,0,0,0,633,634,1,0,0,0,634,129, + 1,0,0,0,635,633,1,0,0,0,636,637,3,16,8,0,637,131,1,0,0,0,62,143,152,172, + 184,193,201,206,214,216,221,228,233,238,248,254,262,264,275,282,293,296, + 312,318,328,332,337,347,355,368,372,376,383,387,394,400,407,415,423,431, + 448,459,470,475,479,484,495,500,504,518,529,543,554,557,562,584,592,595, + 600,613,616,625,633]; private static __ATN: ATN; public static get _ATN(): ATN { @@ -4318,7 +4333,8 @@ export class RegexBooleanExpressionContext extends ParserRuleContext { export class MatchBooleanExpressionContext extends ParserRuleContext { public _fieldExp!: QualifiedNameContext; - public _queryString!: ConstantContext; + public _fieldType!: DataTypeContext; + public _matchQuery!: ConstantContext; constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); this.parser = parser; @@ -4332,6 +4348,12 @@ export class MatchBooleanExpressionContext extends ParserRuleContext { public constant(): ConstantContext { return this.getTypedRuleContext(ConstantContext, 0) as ConstantContext; } + public CAST_OP(): TerminalNode { + return this.getToken(esql_parser.CAST_OP, 0); + } + public dataType(): DataTypeContext { + return this.getTypedRuleContext(DataTypeContext, 0) as DataTypeContext; + } public get ruleIndex(): number { return esql_parser.RULE_matchBooleanExpression; } diff --git a/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.test.ts index 9c914b449f536..b6bab193200c5 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.test.ts @@ -8,14 +8,368 @@ */ import { Builder } from '.'; +import { BasicPrettyPrinter } from '../pretty_print'; -test('can mint a numeric literal', () => { - const node = Builder.expression.literal.numeric({ value: 42, literalType: 'integer' }); +describe('command', () => { + test('can create a LIMIT command', () => { + const node = Builder.command({ + name: 'limit', + args: [Builder.expression.literal.integer(10)], + }); + const text = BasicPrettyPrinter.command(node); - expect(node).toMatchObject({ - type: 'literal', - literalType: 'integer', - name: '42', - value: 42, + expect(text).toBe('LIMIT 10'); + }); + + test('can create a FROM command with BY option', () => { + const node = Builder.command({ + name: 'from', + args: [ + Builder.expression.source({ index: 'my_index', sourceType: 'index' }), + Builder.option({ + name: 'by', + args: [ + Builder.expression.column({ + args: [Builder.identifier({ name: '_id' })], + }), + Builder.expression.column({ + args: [Builder.identifier('_source')], + }), + ], + }), + ], + }); + const text = BasicPrettyPrinter.command(node); + + expect(text).toBe('FROM my_index BY _id, _source'); + }); +}); + +describe('function', () => { + test('can mint a binary expression', () => { + const node = Builder.expression.func.binary('+', [ + Builder.expression.literal.integer(1), + Builder.expression.literal.integer(2), + ]); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('1 + 2'); + }); + + test('can mint a unary expression', () => { + const node = Builder.expression.func.unary('not', Builder.expression.literal.integer(123)); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('NOT 123'); + }); + + test('can mint "-" unary expression', () => { + const node = Builder.expression.func.unary('-', Builder.expression.literal.integer(123)); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('-123'); + }); + + test('can mint a unary postfix expression', () => { + const node = Builder.expression.func.postfix( + 'is not null', + Builder.expression.literal.integer(123) + ); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('123 IS NOT NULL'); + }); + + test('can mint a function call', () => { + const node = Builder.expression.func.call('agg', [ + Builder.expression.literal.integer(1), + Builder.expression.literal.integer(2), + Builder.expression.literal.integer(3), + ]); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('AGG(1, 2, 3)'); + }); +}); + +describe('source', () => { + test('basic index', () => { + const node = Builder.expression.source({ index: 'my_index', sourceType: 'index' }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_index'); + }); + + test('basic index using shortcut', () => { + const node = Builder.expression.source('my_index'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_index'); + }); + + test('index with cluster', () => { + const node = Builder.expression.source({ + index: 'my_index', + sourceType: 'index', + cluster: 'my_cluster', + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_cluster:my_index'); + }); + + test('can use .indexSource() shorthand to specify cluster', () => { + const node = Builder.expression.indexSource('my_index', 'my_cluster'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_cluster:my_index'); + }); + + test('policy index', () => { + const node = Builder.expression.source({ index: 'my_policy', sourceType: 'policy' }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_policy'); + }); +}); + +describe('column', () => { + test('a simple field', () => { + const node = Builder.expression.column({ args: [Builder.identifier('my_field')] }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_field'); + }); + + test('a simple field using shorthand', () => { + const node = Builder.expression.column('my_field'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_field'); + }); + + test('a nested field', () => { + const node = Builder.expression.column({ + args: [Builder.identifier('locale'), Builder.identifier('region')], + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('locale.region'); + }); + + test('a nested field using shortcut', () => { + const node = Builder.expression.column(['locale', 'region']); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('locale.region'); + }); + + test('a nested with params using shortcut', () => { + const node = Builder.expression.column(['locale', '?param', 'region']); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('locale.?param.region'); + }); +}); + +describe('literal', () => { + describe('"time interval"', () => { + test('a basic time Interval node', () => { + const node = Builder.expression.literal.qualifiedInteger(42, 'days'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('42 days'); + }); + }); + + describe('null', () => { + test('can create a NULL node', () => { + const node = Builder.expression.literal.nil(); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('NULL'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'null', + }); + }); + }); + + describe('numeric', () => { + test('integer shorthand', () => { + const node = Builder.expression.literal.integer(42); + + expect(node).toMatchObject({ + type: 'literal', + literalType: 'integer', + name: '42', + value: 42, + }); + }); + + test('decimal shorthand', () => { + const node = Builder.expression.literal.decimal(3.14); + + expect(node).toMatchObject({ + type: 'literal', + literalType: 'double', + name: '3.14', + value: 3.14, + }); + }); + }); + + describe('string', () => { + test('can create a basic string', () => { + const node = Builder.expression.literal.string('abc'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('"abc"'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'keyword', + name: '"abc"', + value: '"abc"', + valueUnquoted: 'abc', + }); + }); + }); + + describe('boolean', () => { + test('TRUE literal', () => { + const node = Builder.expression.literal.boolean(true); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('TRUE'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'boolean', + name: 'true', + value: 'true', + }); + }); + }); + + describe('lists', () => { + test('string list', () => { + const node = Builder.expression.literal.list({ + values: [ + Builder.expression.literal.string('a'), + Builder.expression.literal.string('b'), + Builder.expression.literal.string('c'), + ], + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('["a", "b", "c"]'); + }); + + test('integer list', () => { + const node = Builder.expression.literal.list({ + values: [ + Builder.expression.literal.integer(1), + Builder.expression.literal.integer(2), + Builder.expression.literal.integer(3), + ], + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('[1, 2, 3]'); + }); + + test('boolean list', () => { + const node = Builder.expression.literal.list({ + values: [ + Builder.expression.literal.boolean(true), + Builder.expression.literal.boolean(false), + ], + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('[TRUE, FALSE]'); + }); + }); +}); + +describe('identifier', () => { + test('a single identifier node', () => { + const node = Builder.identifier('text'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('text'); + }); +}); + +describe('param', () => { + test('unnamed', () => { + const node = Builder.param.build('?'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('?'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'param', + paramType: 'unnamed', + }); + }); + + test('named', () => { + const node = Builder.param.build('?the_name'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('?the_name'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'param', + paramType: 'named', + value: 'the_name', + }); + }); + + test('positional', () => { + const node = Builder.param.build('?123'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('?123'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'param', + paramType: 'positional', + value: 123, + }); + }); +}); + +describe('cast', () => { + test('cast to integer', () => { + const node = Builder.expression.inlineCast({ + value: Builder.expression.literal.decimal(123.45), + castType: 'integer', + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('123.45::INTEGER'); + }); +}); + +describe('order', () => { + test('field with no modifiers', () => { + const node = Builder.expression.order(Builder.expression.column('my_field'), { + nulls: '', + order: '', + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_field'); + }); + + test('field with ASC and NULL FIRST modifiers', () => { + const node = Builder.expression.order(Builder.expression.column(['a', 'b', 'c']), { + nulls: 'NULLS FIRST', + order: 'ASC', + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('a.b.c ASC NULLS FIRST'); }); }); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.ts b/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.ts index 07b9f14875abb..7988b0e953559 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.ts @@ -32,6 +32,12 @@ import { ESQLParamLiteral, ESQLFunction, ESQLAstItem, + ESQLStringLiteral, + ESQLBinaryExpression, + ESQLUnaryExpression, + ESQLTimeInterval, + ESQLBooleanLiteral, + ESQLNullLiteral, } from '../types'; import { AstNodeParserFields, AstNodeTemplate, PartialFields } from './types'; @@ -100,14 +106,22 @@ export namespace Builder { }; }; + export type SourceTemplate = { index: string } & Omit<AstNodeTemplate<ESQLSource>, 'name'>; + export const source = ( - template: AstNodeTemplate<ESQLSource>, + indexOrTemplate: string | SourceTemplate, fromParser?: Partial<AstNodeParserFields> ): ESQLSource => { + const template: SourceTemplate = + typeof indexOrTemplate === 'string' + ? { sourceType: 'index', index: indexOrTemplate } + : indexOrTemplate; + const { index, cluster } = template; return { ...template, ...Builder.parserFields(fromParser), type: 'source', + name: (cluster ? cluster + ':' : '') + index, }; }; @@ -122,16 +136,29 @@ export namespace Builder { ...Builder.parserFields(fromParser), index, cluster, - name: (cluster ? cluster + ':' : '') + index, sourceType: 'index', type: 'source', + name: (cluster ? cluster + ':' : '') + index, }; }; + export type ColumnTemplate = Omit<AstNodeTemplate<ESQLColumn>, 'name' | 'quoted' | 'parts'>; + export const column = ( - template: Omit<AstNodeTemplate<ESQLColumn>, 'name' | 'quoted' | 'parts'>, + nameOrTemplate: string | string[] | ColumnTemplate, fromParser?: Partial<AstNodeParserFields> ): ESQLColumn => { + if (typeof nameOrTemplate === 'string') { + nameOrTemplate = [nameOrTemplate]; + } + + const template: ColumnTemplate = Array.isArray(nameOrTemplate) + ? { + args: nameOrTemplate.map((name: string) => + name[0] === '?' ? Builder.param.build(name) : Builder.identifier(name) + ), + } + : nameOrTemplate; const node: ESQLColumn = { ...template, ...Builder.parserFields(fromParser), @@ -207,21 +234,83 @@ export namespace Builder { ); }; + export const unary = ( + name: string, + arg: ESQLAstItem, + template?: Omit<AstNodeTemplate<ESQLFunction>, 'subtype' | 'name' | 'operator' | 'args'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLUnaryExpression => { + const operator = Builder.identifier({ name }); + return Builder.expression.func.node( + { ...template, name, operator, args: [arg], subtype: 'unary-expression' }, + fromParser + ) as ESQLUnaryExpression; + }; + + export const postfix = ( + name: string, + arg: ESQLAstItem, + template?: Omit<AstNodeTemplate<ESQLFunction>, 'subtype' | 'name' | 'operator' | 'args'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLUnaryExpression => { + const operator = Builder.identifier({ name }); + return Builder.expression.func.node( + { ...template, name, operator, args: [arg], subtype: 'postfix-unary-expression' }, + fromParser + ) as ESQLUnaryExpression; + }; + export const binary = ( name: string, args: [left: ESQLAstItem, right: ESQLAstItem], template?: Omit<AstNodeTemplate<ESQLFunction>, 'subtype' | 'name' | 'operator' | 'args'>, fromParser?: Partial<AstNodeParserFields> - ): ESQLFunction => { + ): ESQLBinaryExpression => { const operator = Builder.identifier({ name }); return Builder.expression.func.node( { ...template, name, operator, args, subtype: 'binary-expression' }, fromParser - ); + ) as ESQLBinaryExpression; }; } export namespace literal { + /** + * Constructs a NULL literal node. + */ + export const nil = ( + template?: Omit<AstNodeTemplate<ESQLNullLiteral>, 'name' | 'literalType'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLNullLiteral => { + const node: ESQLNullLiteral = { + ...template, + ...Builder.parserFields(fromParser), + type: 'literal', + literalType: 'null', + name: 'NULL', + value: 'NULL', + }; + + return node; + }; + + export const boolean = ( + value: boolean, + template?: Omit<AstNodeTemplate<ESQLBooleanLiteral>, 'name' | 'literalType'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLBooleanLiteral => { + const node: ESQLBooleanLiteral = { + ...template, + ...Builder.parserFields(fromParser), + type: 'literal', + literalType: 'boolean', + name: String(value), + value: String(value), + }; + + return node; + }; + /** * Constructs an integer literal node. */ @@ -239,11 +328,16 @@ export namespace Builder { return node; }; + /** + * Creates an integer literal. + * + * @example 42 + */ export const integer = ( value: number, - template?: Omit<AstNodeTemplate<ESQLIntegerLiteral | ESQLDecimalLiteral>, 'name'>, + template?: Omit<AstNodeTemplate<ESQLIntegerLiteral>, 'name'>, fromParser?: Partial<AstNodeParserFields> - ): ESQLIntegerLiteral | ESQLDecimalLiteral => { + ): ESQLIntegerLiteral => { return Builder.expression.literal.numeric( { ...template, @@ -251,7 +345,78 @@ export namespace Builder { literalType: 'integer', }, fromParser - ); + ) as ESQLIntegerLiteral; + }; + + /** + * Creates a floating point number literal. + * + * @example 3.14 + */ + export const decimal = ( + value: number, + template?: Omit<AstNodeTemplate<ESQLDecimalLiteral>, 'name'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLDecimalLiteral => { + return Builder.expression.literal.numeric( + { + ...template, + value, + literalType: 'double', + }, + fromParser + ) as ESQLDecimalLiteral; + }; + + /** + * Constructs "time interval" literal node. + * + * @example 1337 milliseconds + */ + export const qualifiedInteger = ( + quantity: ESQLTimeInterval['quantity'], + unit: ESQLTimeInterval['unit'], + fromParser?: Partial<AstNodeParserFields> + ): ESQLTimeInterval => { + return { + ...Builder.parserFields(fromParser), + type: 'timeInterval', + unit, + quantity, + name: `${quantity} ${unit}`, + }; + }; + + export const string = ( + valueUnquoted: string, + template?: Omit< + AstNodeTemplate<ESQLStringLiteral>, + 'name' | 'literalType' | 'value' | 'valueUnquoted' + > & + Partial<Pick<ESQLStringLiteral, 'name'>>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLStringLiteral => { + const value = + '"' + + valueUnquoted + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/\t/g, '\\t') + + '"'; + const name = template?.name ?? value; + const node: ESQLStringLiteral = { + ...template, + ...Builder.parserFields(fromParser), + type: 'literal', + literalType: 'keyword', + name, + value, + valueUnquoted, + }; + + return node; }; export const list = ( @@ -269,9 +434,11 @@ export namespace Builder { } export const identifier = ( - template: AstNodeTemplate<ESQLIdentifier>, + nameOrTemplate: string | AstNodeTemplate<ESQLIdentifier>, fromParser?: Partial<AstNodeParserFields> ): ESQLIdentifier => { + const template: AstNodeTemplate<ESQLIdentifier> = + typeof nameOrTemplate === 'string' ? { name: nameOrTemplate } : nameOrTemplate; return { ...template, ...Builder.parserFields(fromParser), diff --git a/src/platform/packages/shared/kbn-esql-ast/src/mutate/generic/commands/args/index.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/mutate/generic/commands/args/index.test.ts index e687c4528dd7d..29c0898b694d8 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/mutate/generic/commands/args/index.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/mutate/generic/commands/args/index.test.ts @@ -21,7 +21,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 123 ); @@ -37,7 +37,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 0 ); @@ -53,7 +53,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 1 ); @@ -70,7 +70,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 123 ); @@ -86,7 +86,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 0 ); @@ -102,7 +102,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 1 ); @@ -121,7 +121,7 @@ describe('generic.commands.args', () => { generic.commands.args.append( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }) + Builder.expression.source({ index: 'test', sourceType: 'index' }) ); const src2 = BasicPrettyPrinter.print(root); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/commands.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/commands.test.ts index 6fb176c9624f7..9fc53e9790c36 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/commands.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/commands.test.ts @@ -141,6 +141,35 @@ describe('commands', () => { ]); }); + it('KEEP (with param)', () => { + const query = 'FROM index | KEEP abc, ?param'; + const { ast } = parse(query); + + expect(ast).toMatchObject([ + {}, + { + type: 'command', + name: 'keep', + args: [ + { + type: 'column', + name: 'abc', + }, + { + type: 'column', + args: [ + { + type: 'literal', + literalType: 'param', + value: 'param', + }, + ], + }, + ], + }, + ]); + }); + it('SORT', () => { const query = 'FROM index | SORT 1'; const { ast } = parse(query); @@ -257,7 +286,9 @@ describe('commands', () => { }, { type: 'literal', - value: '"b"', + literalType: 'keyword', + name: '"b"', + valueUnquoted: 'b', }, { type: 'option', @@ -265,7 +296,9 @@ describe('commands', () => { args: [ { type: 'literal', - value: '"c"', + literalType: 'keyword', + name: '"c"', + valueUnquoted: 'c', }, ], }, @@ -274,6 +307,31 @@ describe('commands', () => { ]); }); + it('DISSECT (no options)', () => { + const query = 'FROM index | DISSECT a "b"'; + const { ast } = parse(query); + + expect(ast).toMatchObject([ + {}, + { + type: 'command', + name: 'dissect', + args: [ + { + type: 'column', + name: 'a', + }, + { + type: 'literal', + literalType: 'keyword', + name: '"b"', + valueUnquoted: 'b', + }, + ], + }, + ]); + }); + it('GROK', () => { const query = 'FROM index | GROK a "b"'; const { ast } = parse(query); @@ -290,7 +348,9 @@ describe('commands', () => { }, { type: 'literal', - value: '"b"', + literalType: 'keyword', + name: '"b"', + valueUnquoted: 'b', }, ], }, diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/literal.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/literal.test.ts index ede899d4d8058..71ae3603c9c20 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/literal.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/literal.test.ts @@ -11,11 +11,24 @@ import { parse } from '..'; import { ESQLLiteral } from '../../types'; describe('literal expression', () => { - it('numeric expression captures "value", and "name" fields', () => { - const text = 'ROW 1'; + it('NULL', () => { + const text = 'ROW NULL'; const { ast } = parse(text); const literal = ast[0].args[0] as ESQLLiteral; + expect(literal).toMatchObject({ + type: 'literal', + literalType: 'null', + name: 'NULL', + value: 'NULL', + }); + }); + + it('numeric expression captures "value", and "name" fields', () => { + const text = 'ROW 1'; + const { root } = parse(text); + const literal = root.commands[0].args[0] as ESQLLiteral; + expect(literal).toMatchObject({ type: 'literal', literalType: 'integer', @@ -26,9 +39,9 @@ describe('literal expression', () => { it('doubles vs integers', () => { const text = 'ROW a(1.0, 1)'; - const { ast } = parse(text); + const { root } = parse(text); - expect(ast[0]).toMatchObject({ + expect(root.commands[0]).toMatchObject({ type: 'command', args: [ { @@ -47,4 +60,118 @@ describe('literal expression', () => { ], }); }); + + describe('string', () => { + describe('single quoted', () => { + it('empty string', () => { + const text = 'ROW "", 1'; + const { root } = parse(text); + + expect(root.commands[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'literal', + literalType: 'keyword', + name: '""', + valueUnquoted: '', + }, + {}, + ], + }); + }); + + it('short string', () => { + const text = 'ROW "abc", 1'; + const { root } = parse(text); + + expect(root.commands[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'literal', + literalType: 'keyword', + name: '"abc"', + valueUnquoted: 'abc', + }, + {}, + ], + }); + }); + + it('escaped characters', () => { + const text = 'ROW "a\\nb\\tc\\rd\\\\e\\"f", 1'; + const { root } = parse(text); + + expect(root.commands[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'literal', + literalType: 'keyword', + name: '"a\\nb\\tc\\rd\\\\e\\"f"', + valueUnquoted: 'a\nb\tc\rd\\e"f', + }, + {}, + ], + }); + }); + }); + + describe('triple quoted', () => { + it('empty string', () => { + const text = 'ROW """""", 1'; + const { root } = parse(text); + + expect(root.commands[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'literal', + literalType: 'keyword', + name: '""""""', + valueUnquoted: '', + }, + {}, + ], + }); + }); + + it('short string', () => { + const text = 'ROW """abc""", 1'; + const { root } = parse(text); + + expect(root.commands[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'literal', + literalType: 'keyword', + name: '"""abc"""', + valueUnquoted: 'abc', + }, + {}, + ], + }); + }); + + it('characters are not escaped', () => { + const text = 'ROW """a\\nb\\c\\"d""", 1'; + const { root } = parse(text); + + expect(root.commands[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'literal', + literalType: 'keyword', + name: '"""a\\nb\\c\\"d"""', + valueUnquoted: 'a\\nb\\c\\"d', + }, + {}, + ], + }); + }); + }); + }); }); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/esql_ast_builder_listener.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/esql_ast_builder_listener.ts index e167a55f1b682..ea9201b800721 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/parser/esql_ast_builder_listener.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/esql_ast_builder_listener.ts @@ -50,8 +50,6 @@ import { visitByOption, collectAllColumnIdentifiers, visitRenameClauses, - visitDissect, - visitGrok, collectBooleanExpression, visitOrderExpressions, getPolicyName, @@ -60,6 +58,8 @@ import { } from './walkers'; import type { ESQLAst, ESQLAstMetricsCommand } from '../types'; import { createJoinCommand } from './factories/join'; +import { createDissectCommand } from './factories/dissect'; +import { createGrokCommand } from './factories/grok'; export class ESQLAstBuilderListener implements ESQLParserListener { private ast: ESQLAst = []; @@ -262,9 +262,9 @@ export class ESQLAstBuilderListener implements ESQLParserListener { * @param ctx the parse tree */ exitDissectCommand(ctx: DissectCommandContext) { - const command = createCommand('dissect', ctx); + const command = createDissectCommand(ctx); + this.ast.push(command); - command.args.push(...visitDissect(ctx)); } /** @@ -272,9 +272,9 @@ export class ESQLAstBuilderListener implements ESQLParserListener { * @param ctx the parse tree */ exitGrokCommand(ctx: GrokCommandContext) { - const command = createCommand('grok', ctx); + const command = createGrokCommand(ctx); + this.ast.push(command); - command.args.push(...visitGrok(ctx)); } /** diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/factories.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/factories.ts index 388469e82ab99..0db09c0f9dfa7 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/parser/factories.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/factories.ts @@ -32,6 +32,7 @@ import { InputParamContext, InputNamedOrPositionalParamContext, IdentifierOrParameterContext, + StringContext, } from '../antlr/esql_parser'; import { DOUBLE_TICKS_REGEX, SINGLE_BACKTICK, TICKS_REGEX } from './constants'; import type { @@ -119,17 +120,27 @@ export function createFakeMultiplyLiteral( }; } -export function createLiteralString(token: Token): ESQLLiteral { - const text = token.text!; - return { - type: 'literal', - literalType: 'keyword', - text, - name: text, - value: text, - location: getPosition(token), - incomplete: Boolean(token.text === ''), - }; +export function createLiteralString(ctx: StringContext): ESQLLiteral { + const quotedString = ctx.QUOTED_STRING()?.getText() ?? '""'; + const isTripleQuoted = quotedString.startsWith('"""') && quotedString.endsWith('"""'); + let valueUnquoted = isTripleQuoted ? quotedString.slice(3, -3) : quotedString.slice(1, -1); + + if (!isTripleQuoted) { + valueUnquoted = valueUnquoted + .replace(/\\\\/g, '\\') + .replace(/\\"/g, '"') + .replace(/\\r/g, '\r') + .replace(/\\n/g, '\n') + .replace(/\\t/g, '\t'); + } + + return Builder.expression.literal.string( + valueUnquoted, + { + name: quotedString, + }, + createParserFields(ctx) + ); } function isMissingText(text: string) { @@ -526,11 +537,21 @@ export function createColumn(ctx: ParserRuleContext): ESQLColumn { if (ctx instanceof QualifiedNamePatternContext) { const list = ctx.identifierPattern_list(); - for (const identifier of list) { - const name = parseIdentifier(identifier.getText()); - const node = Builder.identifier({ name }, createParserFields(identifier)); + for (const identifierPattern of list) { + const ID_PATTERN = identifierPattern.ID_PATTERN(); - args.push(node); + if (ID_PATTERN) { + const name = parseIdentifier(ID_PATTERN.getText()); + const node = Builder.identifier({ name }, createParserFields(identifierPattern)); + + args.push(node); + } else { + const parameter = createParam(identifierPattern.parameter()); + + if (parameter) { + args.push(parameter); + } + } } } else if (ctx instanceof QualifiedNameContext) { const list = ctx.identifierOrParameter_list(); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/factories/dissect.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/factories/dissect.ts new file mode 100644 index 0000000000000..ee65347adb496 --- /dev/null +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/factories/dissect.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import esql_parser, { CommandOptionsContext, DissectCommandContext } from '../../antlr/esql_parser'; +import { ESQLCommand, ESQLCommandOption } from '../../types'; +import { + createCommand, + createLiteralString, + createOption, + sanitizeIdentifierString, + textExistsAndIsValid, +} from '../factories'; +import { getConstant, visitPrimaryExpression } from '../walkers'; + +const createDissectOptions = (ctx: CommandOptionsContext | undefined): ESQLCommandOption[] => { + if (!ctx) { + return []; + } + + const options: ESQLCommandOption[] = []; + + for (const optionCtx of ctx.commandOption_list()) { + const option = createOption( + sanitizeIdentifierString(optionCtx.identifier()).toLowerCase(), + optionCtx + ); + options.push(option); + // it can throw while accessing constant for incomplete commands, so try catch it + try { + const optionValue = getConstant(optionCtx.constant()); + if (optionValue != null) { + option.args.push(optionValue); + } + } catch (e) { + // do nothing here + } + } + + return options; +}; + +export const createDissectCommand = (ctx: DissectCommandContext): ESQLCommand => { + const command = createCommand('dissect', ctx); + const primaryExpression = visitPrimaryExpression(ctx.primaryExpression()); + const stringContext = ctx.string_(); + const pattern = stringContext.getToken(esql_parser.QUOTED_STRING, 0); + const doParseStringAndOptions = pattern && textExistsAndIsValid(pattern.getText()); + + command.args.push(primaryExpression); + + if (doParseStringAndOptions) { + const stringNode = createLiteralString(stringContext); + + command.args.push(stringNode); + command.args.push(...createDissectOptions(ctx.commandOptions())); + } + + return command; +}; diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/factories/grok.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/factories/grok.ts new file mode 100644 index 0000000000000..01464641657e6 --- /dev/null +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/factories/grok.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import esql_parser, { GrokCommandContext } from '../../antlr/esql_parser'; +import { ESQLCommand } from '../../types'; +import { createCommand, createLiteralString, textExistsAndIsValid } from '../factories'; +import { visitPrimaryExpression } from '../walkers'; + +export const createGrokCommand = (ctx: GrokCommandContext): ESQLCommand => { + const command = createCommand('grok', ctx); + const primaryExpression = visitPrimaryExpression(ctx.primaryExpression()); + const stringContext = ctx.string_(); + const pattern = stringContext.getToken(esql_parser.QUOTED_STRING, 0); + const doParseStringAndOptions = pattern && textExistsAndIsValid(pattern.getText()); + + command.args.push(primaryExpression); + + if (doParseStringAndOptions) { + const stringNode = createLiteralString(stringContext); + + command.args.push(stringNode); + } + + return command; +}; diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/walkers.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/walkers.ts index 60dfafa6e3c89..a9f3ac7157a1f 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/parser/walkers.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/walkers.ts @@ -18,14 +18,12 @@ import { BooleanLiteralContext, InputParameterContext, BooleanValueContext, - type CommandOptionsContext, ComparisonContext, type ComparisonOperatorContext, type ConstantContext, ConstantDefaultContext, DecimalLiteralContext, DereferenceContext, - type DissectCommandContext, type DropCommandContext, type EnrichCommandContext, type FieldContext, @@ -33,7 +31,6 @@ import { type AggFieldsContext, type FromCommandContext, FunctionContext, - type GrokCommandContext, IntegerLiteralContext, IsNullContext, type KeepCommandContext, @@ -74,7 +71,6 @@ import { createFakeMultiplyLiteral, createList, createNumericLiteral, - sanitizeIdentifierString, computeLocationExtends, createColumnStar, wrapIdentifierAsArray, @@ -86,6 +82,7 @@ import { createOrderExpression, createFunctionCall, createParam, + createLiteralString, } from './factories'; import { @@ -331,7 +328,7 @@ function getBooleanValue(ctx: BooleanLiteralContext | BooleanValueContext) { return createLiteral('boolean', booleanTerminalNode!); } -function getConstant(ctx: ConstantContext): ESQLAstItem { +export function getConstant(ctx: ConstantContext): ESQLAstItem { if (ctx instanceof NullLiteralContext) { return createLiteral('null', ctx.NULL()); } @@ -354,8 +351,7 @@ function getConstant(ctx: ConstantContext): ESQLAstItem { return getBooleanValue(ctx); } if (ctx instanceof StringLiteralContext) { - // String literal covers multiple ES|QL types: text and keyword types - return createLiteral('keyword', ctx.string_().QUOTED_STRING()); + return createLiteralString(ctx.string_()); } if ( ctx instanceof NumericArrayLiteralContext || @@ -374,11 +370,9 @@ function getConstant(ctx: ConstantContext): ESQLAstItem { values.push(getBooleanValue(booleanValue)!); } for (const string of ctx.getTypedRuleContexts(StringContext)) { - // String literal covers multiple ES|QL types: text and keyword types - const literal = createLiteral('keyword', string.QUOTED_STRING()); - if (literal) { - values.push(literal); - } + const literal = createLiteralString(string); + + values.push(literal); } return createList(ctx, values); } @@ -484,10 +478,10 @@ function collectRegexExpression(ctx: BooleanExpressionContext): ESQLFunction[] { const arg = visitValueExpression(regex.valueExpression()); if (arg) { fn.args.push(arg); - const literal = createLiteral('keyword', regex._pattern.QUOTED_STRING()); - if (literal) { - fn.args.push(literal); - } + + const literal = createLiteralString(regex._pattern); + + fn.args.push(literal); } return fn; }) @@ -631,47 +625,3 @@ export function visitOrderExpressions( return ast; } - -export function visitDissect(ctx: DissectCommandContext) { - const pattern = ctx.string_().getToken(esql_parser.QUOTED_STRING, 0); - return [ - visitPrimaryExpression(ctx.primaryExpression()), - ...(pattern && textExistsAndIsValid(pattern.getText()) - ? [createLiteral('keyword', pattern), ...visitDissectOptions(ctx.commandOptions())] - : []), - ].filter(nonNullable); -} - -export function visitGrok(ctx: GrokCommandContext) { - const pattern = ctx.string_().getToken(esql_parser.QUOTED_STRING, 0); - return [ - visitPrimaryExpression(ctx.primaryExpression()), - ...(pattern && textExistsAndIsValid(pattern.getText()) - ? [createLiteral('keyword', pattern)] - : []), - ].filter(nonNullable); -} - -function visitDissectOptions(ctx: CommandOptionsContext | undefined) { - if (!ctx) { - return []; - } - const options: ESQLCommandOption[] = []; - for (const optionCtx of ctx.commandOption_list()) { - const option = createOption( - sanitizeIdentifierString(optionCtx.identifier()).toLowerCase(), - optionCtx - ); - options.push(option); - // it can throw while accessing constant for incomplete commands, so try catch it - try { - const optionValue = getConstant(optionCtx.constant()); - if (optionValue != null) { - option.args.push(optionValue); - } - } catch (e) { - // do nothing here - } - } - return options; -} diff --git a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts index 60248774f9157..296425b1eca07 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts @@ -289,7 +289,8 @@ export class BasicPrettyPrinter { case 'unary-expression': { operator = this.keyword(operator); - const formatted = `${operator} ${ctx.visitArgument(0, undefined)}`; + const separator = operator === '-' || operator === '+' ? '' : ' '; + const formatted = `${operator}${separator}${ctx.visitArgument(0, undefined)}`; return this.decorateWithComments(ctx.node, formatted); } diff --git a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts index bb768c1e6a738..76e6536070b71 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts @@ -16,6 +16,7 @@ import { ESQLParamLiteral, ESQLProperNode, ESQLSource, + ESQLStringLiteral, ESQLTimeInterval, } from '../types'; @@ -27,7 +28,16 @@ const regexUnquotedIdPattern = /^([a-z\*_\@]{1})[a-z0-9_\*]*$/i; * atomic short string. */ export const LeafPrinter = { - source: (node: ESQLSource) => node.name, + source: (node: ESQLSource): string => { + const { index, name, cluster } = node; + let text = index || name || ''; + + if (cluster) { + text = `${cluster}:${text}`; + } + + return text; + }, identifier: (node: ESQLIdentifier) => { const name = node.name; @@ -72,6 +82,21 @@ export const LeafPrinter = { return formatted; }, + string: (node: ESQLStringLiteral) => { + const str = node.valueUnquoted; + const strFormatted = + '"' + + str + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/\t/g, '\\t') + + '"'; + + return strFormatted; + }, + literal: (node: ESQLLiteral) => { switch (node.literalType) { case 'null': { @@ -84,7 +109,7 @@ export const LeafPrinter = { return LeafPrinter.param(node); } case 'keyword': { - return String(node.value); + return LeafPrinter.string(node); } case 'double': { const isRounded = node.value % 1 === 0; diff --git a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts index 9ba4ce8b0a5ae..f9612a2233b89 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts @@ -526,7 +526,8 @@ export class WrappingPrettyPrinter { switch (node.subtype) { case 'unary-expression': { - txt = `${operator} ${ctx.visitArgument(0, inp).txt}`; + const separator = operator === '-' || operator === '+' ? '' : ' '; + txt = `${operator}${separator}${ctx.visitArgument(0, inp).txt}`; break; } case 'postfix-unary-expression': { diff --git a/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/cmd.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/cmd.test.ts index 1158c2bf838e0..fdf8477a3bc3b 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/cmd.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/cmd.test.ts @@ -46,5 +46,5 @@ test('can compose expressions into commands', () => { const text2 = BasicPrettyPrinter.command(cmd2); expect(text1).toBe('WHERE a.b.c == "asdf"'); - expect(text2).toBe('DISSECT a.b.c """%{date}"""'); + expect(text2).toBe('DISSECT a.b.c "%{date}"'); }); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/expr_function.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/expr_function.test.ts index a859fbc2c0d3d..0295f6f11fa30 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/expr_function.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/expr_function.test.ts @@ -57,7 +57,7 @@ test('can generate a function call expression', () => { { type: 'literal', literalType: 'keyword', - value: '"test"', + valueUnquoted: 'test', }, ], }); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/types.ts b/src/platform/packages/shared/kbn-esql-ast/src/types.ts index a204cf50901ce..9adb7cbe36c5c 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/types.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/types.ts @@ -257,6 +257,7 @@ export interface ESQLUnknownItem extends ESQLAstBaseItem { } export interface ESQLTimeInterval extends ESQLAstBaseItem { + /** @todo For consistency with other literals, this should be `literal`, not `timeInterval`. */ type: 'timeInterval'; unit: string; quantity: number; @@ -363,8 +364,12 @@ export interface ESQLNullLiteral extends ESQLAstBaseItem { // @internal export interface ESQLStringLiteral extends ESQLAstBaseItem { type: 'literal'; + + /** This really should be `string`, not `keyword`. */ literalType: 'keyword'; + value: string; + valueUnquoted: string; } // @internal diff --git a/packages/kbn-io-ts-utils/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/index.ts diff --git a/src/platform/packages/shared/kbn-io-ts-utils/jest.config.js b/src/platform/packages/shared/kbn-io-ts-utils/jest.config.js new file mode 100644 index 0000000000000..425673182b7e4 --- /dev/null +++ b/src/platform/packages/shared/kbn-io-ts-utils/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-io-ts-utils'], +}; diff --git a/packages/kbn-io-ts-utils/kibana.jsonc b/src/platform/packages/shared/kbn-io-ts-utils/kibana.jsonc similarity index 100% rename from packages/kbn-io-ts-utils/kibana.jsonc rename to src/platform/packages/shared/kbn-io-ts-utils/kibana.jsonc diff --git a/packages/kbn-io-ts-utils/package.json b/src/platform/packages/shared/kbn-io-ts-utils/package.json similarity index 100% rename from packages/kbn-io-ts-utils/package.json rename to src/platform/packages/shared/kbn-io-ts-utils/package.json diff --git a/packages/kbn-io-ts-utils/src/array_to_string_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/array_to_string_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/array_to_string_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/array_to_string_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/date_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/date_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/date_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/date_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/datemath_string_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/datemath_string_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/datemath_string_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/datemath_string_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/decode_or_throw.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/decode_or_throw.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts diff --git a/packages/kbn-io-ts-utils/src/deep_exact_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/deep_exact_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/in_range_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/in_range_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/in_range_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/in_range_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/index_pattern_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/index_pattern_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/index_pattern_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/index_pattern_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/is_greater_or_equal/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/is_greater_or_equal/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts diff --git a/packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/json_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/json_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/json_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/json_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/merge_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/merge_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/merge_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/merge_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/non_empty_string_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/non_empty_string_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/parseable_types/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/parseable_types/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/parseable_types/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/parseable_types/index.ts diff --git a/packages/kbn-io-ts-utils/src/route_validation/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/route_validation/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/route_validation/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/route_validation/index.ts diff --git a/packages/kbn-io-ts-utils/src/strict_keys_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/strict_keys_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/strict_keys_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/strict_keys_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/time_key_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/time_key_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/to_boolean_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/to_boolean_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/to_boolean_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/to_boolean_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/to_json_schema/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/to_json_schema/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/to_json_schema/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/to_json_schema/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.ts diff --git a/packages/kbn-io-ts-utils/src/to_number_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/to_number_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/to_number_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/to_number_rt/index.ts diff --git a/src/platform/packages/shared/kbn-io-ts-utils/tsconfig.json b/src/platform/packages/shared/kbn-io-ts-utils/tsconfig.json new file mode 100644 index 0000000000000..adaa8b70c4b14 --- /dev/null +++ b/src/platform/packages/shared/kbn-io-ts-utils/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/datemath" + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/packages/kbn-management/cards_navigation/README.mdx b/src/platform/packages/shared/kbn-management/cards_navigation/README.mdx similarity index 100% rename from packages/kbn-management/cards_navigation/README.mdx rename to src/platform/packages/shared/kbn-management/cards_navigation/README.mdx diff --git a/packages/kbn-management/cards_navigation/index.ts b/src/platform/packages/shared/kbn-management/cards_navigation/index.ts similarity index 100% rename from packages/kbn-management/cards_navigation/index.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/index.ts diff --git a/packages/kbn-management/cards_navigation/kibana.jsonc b/src/platform/packages/shared/kbn-management/cards_navigation/kibana.jsonc similarity index 100% rename from packages/kbn-management/cards_navigation/kibana.jsonc rename to src/platform/packages/shared/kbn-management/cards_navigation/kibana.jsonc diff --git a/packages/kbn-management/cards_navigation/mocks/mocks.ts b/src/platform/packages/shared/kbn-management/cards_navigation/mocks/mocks.ts similarity index 100% rename from packages/kbn-management/cards_navigation/mocks/mocks.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/mocks/mocks.ts diff --git a/packages/kbn-management/cards_navigation/mocks/storybook.mock.ts b/src/platform/packages/shared/kbn-management/cards_navigation/mocks/storybook.mock.ts similarity index 100% rename from packages/kbn-management/cards_navigation/mocks/storybook.mock.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/mocks/storybook.mock.ts diff --git a/packages/kbn-management/cards_navigation/package.json b/src/platform/packages/shared/kbn-management/cards_navigation/package.json similarity index 100% rename from packages/kbn-management/cards_navigation/package.json rename to src/platform/packages/shared/kbn-management/cards_navigation/package.json diff --git a/packages/kbn-management/cards_navigation/src/cards_navigation.stories.tsx b/src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.stories.tsx similarity index 100% rename from packages/kbn-management/cards_navigation/src/cards_navigation.stories.tsx rename to src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.stories.tsx diff --git a/packages/kbn-management/cards_navigation/src/cards_navigation.test.tsx b/src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.test.tsx similarity index 100% rename from packages/kbn-management/cards_navigation/src/cards_navigation.test.tsx rename to src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.test.tsx diff --git a/packages/kbn-management/cards_navigation/src/cards_navigation.tsx b/src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.tsx similarity index 100% rename from packages/kbn-management/cards_navigation/src/cards_navigation.tsx rename to src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.tsx diff --git a/packages/kbn-management/cards_navigation/src/consts.tsx b/src/platform/packages/shared/kbn-management/cards_navigation/src/consts.tsx similarity index 100% rename from packages/kbn-management/cards_navigation/src/consts.tsx rename to src/platform/packages/shared/kbn-management/cards_navigation/src/consts.tsx diff --git a/packages/kbn-management/cards_navigation/src/index.ts b/src/platform/packages/shared/kbn-management/cards_navigation/src/index.ts similarity index 100% rename from packages/kbn-management/cards_navigation/src/index.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/src/index.ts diff --git a/packages/kbn-management/cards_navigation/src/types.ts b/src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts similarity index 100% rename from packages/kbn-management/cards_navigation/src/types.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts diff --git a/src/platform/packages/shared/kbn-management/cards_navigation/tsconfig.json b/src/platform/packages/shared/kbn-management/cards_navigation/tsconfig.json new file mode 100644 index 0000000000000..0005162e325f0 --- /dev/null +++ b/src/platform/packages/shared/kbn-management/cards_navigation/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@kbn/ambient-ui-types" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + ] +} diff --git a/src/platform/packages/shared/kbn-management/jest.config.js b/src/platform/packages/shared/kbn-management/jest.config.js new file mode 100644 index 0000000000000..e5fdb49ff9b97 --- /dev/null +++ b/src/platform/packages/shared/kbn-management/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-management'], +}; diff --git a/packages/kbn-management/settings/components/field_input/README.mdx b/src/platform/packages/shared/kbn-management/settings/components/field_input/README.mdx similarity index 100% rename from packages/kbn-management/settings/components/field_input/README.mdx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/README.mdx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/array_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/array_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/array_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/array_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/boolean_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/boolean_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/boolean_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/boolean_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/color_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/color_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/color_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/color_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/common.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/common.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/common.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/common.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/image_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/image_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/image_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/image_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/json_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/json_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/json_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/json_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/markdown_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/markdown_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/markdown_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/markdown_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/number_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/number_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/number_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/number_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/select_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/select_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/select_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/select_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/text_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/text_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/text_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/text_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/code_editor.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/code_editor.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/code_editor.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/code_editor.tsx diff --git a/packages/kbn-management/settings/components/field_input/field_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/field_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/field_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/field_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/index.ts diff --git a/packages/kbn-management/settings/components/field_input/input/array_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/array_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/array_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/array_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/array_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/array_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/array_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/array_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/boolean_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/boolean_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/boolean_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/boolean_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/boolean_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/boolean_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/boolean_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/boolean_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/code_editor_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/code_editor_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/code_editor_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/code_editor_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/color_picker_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/color_picker_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/color_picker_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/color_picker_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/color_picker_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/color_picker_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/color_picker_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/color_picker_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/image_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/image_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/image_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/image_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/image_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/image_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/image_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/image_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/index.ts diff --git a/packages/kbn-management/settings/components/field_input/input/json_editor_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/json_editor_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/json_editor_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/json_editor_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/markdown_editor_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/markdown_editor_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/markdown_editor_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/markdown_editor_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/number_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/number_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/number_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/number_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/number_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/number_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/number_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/number_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/select_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/select_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/select_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/select_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/select_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/select_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/select_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/select_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/text_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/text_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/text_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/text_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/text_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/text_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/text_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/text_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/components/field_input/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/components/field_input/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/components/field_input/kibana.jsonc diff --git a/packages/kbn-management/settings/components/field_input/mocks/context.mock.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/mocks/context.mock.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/mocks/context.mock.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/mocks/context.mock.tsx diff --git a/packages/kbn-management/settings/components/field_input/mocks/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/mocks/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/mocks/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/mocks/index.ts diff --git a/packages/kbn-management/settings/components/field_input/package.json b/src/platform/packages/shared/kbn-management/settings/components/field_input/package.json similarity index 100% rename from packages/kbn-management/settings/components/field_input/package.json rename to src/platform/packages/shared/kbn-management/settings/components/field_input/package.json diff --git a/packages/kbn-management/settings/components/field_input/services.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/services.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/services.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/services.tsx diff --git a/packages/kbn-management/settings/components/field_input/setup_tests.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/setup_tests.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/setup_tests.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/setup_tests.ts diff --git a/src/platform/packages/shared/kbn-management/settings/components/field_input/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/components/field_input/tsconfig.json new file mode 100644 index 0000000000000..ce22fa8df8c1a --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/components/field_input/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/management-settings-field-definition", + "@kbn/monaco", + "@kbn/management-settings-utilities", + "@kbn/i18n-react", + "@kbn/i18n", + "@kbn/core-notifications-browser", + "@kbn/core-ui-settings-common", + "@kbn/react-kibana-context-root", + "@kbn/core-theme-browser-mocks", + "@kbn/core-i18n-browser", + "@kbn/core-analytics-browser-mocks", + "@kbn/core-ui-settings-browser", + "@kbn/code-editor", + "@kbn/core-user-profile-browser-mocks", + ] +} diff --git a/packages/kbn-management/settings/components/field_input/types.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/types.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts diff --git a/packages/kbn-management/settings/components/field_row/README.mdx b/src/platform/packages/shared/kbn-management/settings/components/field_row/README.mdx similarity index 100% rename from packages/kbn-management/settings/components/field_row/README.mdx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/README.mdx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/array_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/array_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/array_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/array_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/boolean_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/boolean_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/boolean_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/boolean_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/color_picker_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/color_picker_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/color_picker_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/color_picker_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/common.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/common.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/common.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/common.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/image_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/image_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/image_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/image_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/json_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/json_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/json_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/json_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/markdown_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/markdown_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/markdown_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/markdown_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/number_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/number_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/number_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/number_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/select_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/select_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/select_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/select_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/text_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/text_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/text_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/text_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/assets/form_row.png b/src/platform/packages/shared/kbn-management/settings/components/field_row/assets/form_row.png similarity index 100% rename from packages/kbn-management/settings/components/field_row/assets/form_row.png rename to src/platform/packages/shared/kbn-management/settings/components/field_row/assets/form_row.png diff --git a/packages/kbn-management/settings/components/field_row/assets/page.png b/src/platform/packages/shared/kbn-management/settings/components/field_row/assets/page.png similarity index 100% rename from packages/kbn-management/settings/components/field_row/assets/page.png rename to src/platform/packages/shared/kbn-management/settings/components/field_row/assets/page.png diff --git a/packages/kbn-management/settings/components/field_row/description/default_value.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/default_value.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/default_value.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/default_value.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/default_value.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/default_value.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/default_value.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/default_value.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/deprecation.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/deprecation.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/deprecation.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/deprecation.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/deprecation.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/deprecation.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/deprecation.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/deprecation.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/description.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/description.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/description.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/description.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/description.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/description.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/description.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/description.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/index.ts diff --git a/packages/kbn-management/settings/components/field_row/field_row.styles.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.styles.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/field_row.styles.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.styles.ts diff --git a/packages/kbn-management/settings/components/field_row/field_row.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/field_row.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/field_row.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/field_row.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/change_image_link.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/change_image_link.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/change_image_link.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/change_image_link.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/change_image_link.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/change_image_link.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/change_image_link.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/change_image_link.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/index.ts diff --git a/packages/kbn-management/settings/components/field_row/footer/input_footer.styles.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/input_footer.styles.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/input_footer.styles.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/input_footer.styles.ts diff --git a/packages/kbn-management/settings/components/field_row/footer/input_footer.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/input_footer.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/input_footer.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/input_footer.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/overridden_message.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/overridden_message.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/overridden_message.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/overridden_message.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/overridden_message.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/overridden_message.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/overridden_message.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/overridden_message.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/reset_link.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/reset_link.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/reset_link.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/reset_link.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/reset_link.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/reset_link.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/reset_link.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/reset_link.tsx diff --git a/packages/kbn-management/settings/components/field_row/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/index.ts diff --git a/packages/kbn-management/settings/components/field_row/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/components/field_row/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/components/field_row/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/components/field_row/kibana.jsonc diff --git a/packages/kbn-management/settings/components/field_row/mocks/context.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/mocks/context.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/mocks/context.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/mocks/context.tsx diff --git a/packages/kbn-management/settings/components/field_row/mocks/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/mocks/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/mocks/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/mocks/index.ts diff --git a/packages/kbn-management/settings/components/field_row/package.json b/src/platform/packages/shared/kbn-management/settings/components/field_row/package.json similarity index 100% rename from packages/kbn-management/settings/components/field_row/package.json rename to src/platform/packages/shared/kbn-management/settings/components/field_row/package.json diff --git a/packages/kbn-management/settings/components/field_row/services.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/services.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx diff --git a/packages/kbn-management/settings/components/field_row/setup_tests.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/setup_tests.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/setup_tests.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/setup_tests.ts diff --git a/packages/kbn-management/settings/components/field_row/title/icon_custom.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/title/icon_custom.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/title/icon_custom.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/title/icon_custom.tsx diff --git a/packages/kbn-management/settings/components/field_row/title/icon_unsaved.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/title/icon_unsaved.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/title/icon_unsaved.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/title/icon_unsaved.tsx diff --git a/packages/kbn-management/settings/components/field_row/title/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/title/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/title/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/title/index.ts diff --git a/packages/kbn-management/settings/components/field_row/title/title.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/title/title.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/title/title.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/title/title.tsx diff --git a/src/platform/packages/shared/kbn-management/settings/components/field_row/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/components/field_row/tsconfig.json new file mode 100644 index 0000000000000..d0b13e6c13926 --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/components/field_row/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@kbn/ambient-ui-types", + "@kbn/ambient-storybook-types", + "@emotion/react/types/css-prop" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/management-settings-field-definition", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/management-settings-utilities", + "@kbn/management-settings-components-field-input", + "@kbn/core-doc-links-browser", + "@kbn/react-kibana-context-root", + "@kbn/core-theme-browser-mocks", + "@kbn/core-i18n-browser", + "@kbn/core-analytics-browser-mocks", + "@kbn/core-user-profile-browser-mocks", + ] +} diff --git a/packages/kbn-management/settings/components/field_row/types.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/types.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts diff --git a/packages/kbn-management/settings/field_definition/README.mdx b/src/platform/packages/shared/kbn-management/settings/field_definition/README.mdx similarity index 100% rename from packages/kbn-management/settings/field_definition/README.mdx rename to src/platform/packages/shared/kbn-management/settings/field_definition/README.mdx diff --git a/packages/kbn-management/settings/field_definition/get_definition.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/get_definition.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts diff --git a/packages/kbn-management/settings/field_definition/get_definitions.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/get_definitions.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts diff --git a/packages/kbn-management/settings/field_definition/index.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/index.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/index.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/index.ts diff --git a/packages/kbn-management/settings/field_definition/is/field_definition.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/is/field_definition.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts diff --git a/packages/kbn-management/settings/field_definition/is/index.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/is/index.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/is/index.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/is/index.ts diff --git a/packages/kbn-management/settings/field_definition/is/unsaved_change.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/is/unsaved_change.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts diff --git a/packages/kbn-management/settings/field_definition/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/field_definition/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/field_definition/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/field_definition/kibana.jsonc diff --git a/packages/kbn-management/settings/field_definition/package.json b/src/platform/packages/shared/kbn-management/settings/field_definition/package.json similarity index 100% rename from packages/kbn-management/settings/field_definition/package.json rename to src/platform/packages/shared/kbn-management/settings/field_definition/package.json diff --git a/src/platform/packages/shared/kbn-management/settings/field_definition/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/field_definition/tsconfig.json new file mode 100644 index 0000000000000..f9236003cbbfb --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/field_definition/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/core-ui-settings-browser", + "@kbn/management-settings-utilities", + ] +} diff --git a/packages/kbn-management/settings/types/README.mdx b/src/platform/packages/shared/kbn-management/settings/types/README.mdx similarity index 100% rename from packages/kbn-management/settings/types/README.mdx rename to src/platform/packages/shared/kbn-management/settings/types/README.mdx diff --git a/packages/kbn-management/settings/types/capabilities.ts b/src/platform/packages/shared/kbn-management/settings/types/capabilities.ts similarity index 100% rename from packages/kbn-management/settings/types/capabilities.ts rename to src/platform/packages/shared/kbn-management/settings/types/capabilities.ts diff --git a/packages/kbn-management/settings/types/category.ts b/src/platform/packages/shared/kbn-management/settings/types/category.ts similarity index 100% rename from packages/kbn-management/settings/types/category.ts rename to src/platform/packages/shared/kbn-management/settings/types/category.ts diff --git a/packages/kbn-management/settings/types/field_definition.ts b/src/platform/packages/shared/kbn-management/settings/types/field_definition.ts similarity index 100% rename from packages/kbn-management/settings/types/field_definition.ts rename to src/platform/packages/shared/kbn-management/settings/types/field_definition.ts diff --git a/packages/kbn-management/settings/types/index.ts b/src/platform/packages/shared/kbn-management/settings/types/index.ts similarity index 100% rename from packages/kbn-management/settings/types/index.ts rename to src/platform/packages/shared/kbn-management/settings/types/index.ts diff --git a/packages/kbn-management/settings/types/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/types/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/types/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/types/kibana.jsonc diff --git a/packages/kbn-management/settings/types/metadata.ts b/src/platform/packages/shared/kbn-management/settings/types/metadata.ts similarity index 100% rename from packages/kbn-management/settings/types/metadata.ts rename to src/platform/packages/shared/kbn-management/settings/types/metadata.ts diff --git a/packages/kbn-management/settings/types/package.json b/src/platform/packages/shared/kbn-management/settings/types/package.json similarity index 100% rename from packages/kbn-management/settings/types/package.json rename to src/platform/packages/shared/kbn-management/settings/types/package.json diff --git a/packages/kbn-management/settings/types/setting_type.ts b/src/platform/packages/shared/kbn-management/settings/types/setting_type.ts similarity index 100% rename from packages/kbn-management/settings/types/setting_type.ts rename to src/platform/packages/shared/kbn-management/settings/types/setting_type.ts diff --git a/packages/kbn-management/settings/types/tab.ts b/src/platform/packages/shared/kbn-management/settings/types/tab.ts similarity index 100% rename from packages/kbn-management/settings/types/tab.ts rename to src/platform/packages/shared/kbn-management/settings/types/tab.ts diff --git a/src/platform/packages/shared/kbn-management/settings/types/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/types/tsconfig.json new file mode 100644 index 0000000000000..31d88a1be797b --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/types/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/analytics", + "@kbn/core", + "@kbn/core-ui-settings-common", + "@kbn/management-settings-section-registry", + ] +} diff --git a/packages/kbn-management/settings/types/unsaved_change.ts b/src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts similarity index 100% rename from packages/kbn-management/settings/types/unsaved_change.ts rename to src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts diff --git a/packages/kbn-management/settings/utilities/README.mdx b/src/platform/packages/shared/kbn-management/settings/utilities/README.mdx similarity index 100% rename from packages/kbn-management/settings/utilities/README.mdx rename to src/platform/packages/shared/kbn-management/settings/utilities/README.mdx diff --git a/packages/kbn-management/settings/utilities/category/categorize_fields.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/categorize_fields.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/categorize_fields.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/categorize_fields.ts diff --git a/packages/kbn-management/settings/utilities/category/const.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/const.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/const.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/const.ts diff --git a/packages/kbn-management/settings/utilities/category/get_category_counts.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_counts.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/get_category_counts.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_counts.ts diff --git a/packages/kbn-management/settings/utilities/category/get_category_name.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_name.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/get_category_name.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_name.ts diff --git a/packages/kbn-management/settings/utilities/category/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/index.ts diff --git a/packages/kbn-management/settings/utilities/field/get_input_value.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/get_input_value.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts diff --git a/packages/kbn-management/settings/utilities/field/has_unsaved_change.test.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.test.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/has_unsaved_change.test.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.test.ts diff --git a/packages/kbn-management/settings/utilities/field/has_unsaved_change.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/has_unsaved_change.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts diff --git a/packages/kbn-management/settings/utilities/field/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/index.ts diff --git a/packages/kbn-management/settings/utilities/field/is_default_value.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/is_default_value.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts diff --git a/packages/kbn-management/settings/utilities/field/use_update.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/use_update.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts diff --git a/packages/kbn-management/settings/utilities/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/index.ts diff --git a/packages/kbn-management/settings/utilities/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/utilities/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/utilities/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/utilities/kibana.jsonc diff --git a/packages/kbn-management/settings/utilities/mocks/capabilities.mock.ts b/src/platform/packages/shared/kbn-management/settings/utilities/mocks/capabilities.mock.ts similarity index 100% rename from packages/kbn-management/settings/utilities/mocks/capabilities.mock.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/mocks/capabilities.mock.ts diff --git a/packages/kbn-management/settings/utilities/mocks/settings.mock.ts b/src/platform/packages/shared/kbn-management/settings/utilities/mocks/settings.mock.ts similarity index 100% rename from packages/kbn-management/settings/utilities/mocks/settings.mock.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/mocks/settings.mock.ts diff --git a/packages/kbn-management/settings/utilities/package.json b/src/platform/packages/shared/kbn-management/settings/utilities/package.json similarity index 100% rename from packages/kbn-management/settings/utilities/package.json rename to src/platform/packages/shared/kbn-management/settings/utilities/package.json diff --git a/packages/kbn-management/settings/utilities/setting/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/setting/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/setting/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/setting/index.ts diff --git a/packages/kbn-management/settings/utilities/setting/is_default_value.ts b/src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts similarity index 100% rename from packages/kbn-management/settings/utilities/setting/is_default_value.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts diff --git a/packages/kbn-management/settings/utilities/setting/normalize_settings.test.ts b/src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.test.ts similarity index 100% rename from packages/kbn-management/settings/utilities/setting/normalize_settings.test.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.test.ts diff --git a/packages/kbn-management/settings/utilities/setting/normalize_settings.ts b/src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.ts similarity index 100% rename from packages/kbn-management/settings/utilities/setting/normalize_settings.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.ts diff --git a/packages/kbn-management/settings/utilities/storybook/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/storybook/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/storybook/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/storybook/index.ts diff --git a/packages/kbn-management/settings/utilities/storybook/values.ts b/src/platform/packages/shared/kbn-management/settings/utilities/storybook/values.ts similarity index 100% rename from packages/kbn-management/settings/utilities/storybook/values.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/storybook/values.ts diff --git a/src/platform/packages/shared/kbn-management/settings/utilities/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/utilities/tsconfig.json new file mode 100644 index 0000000000000..70445908b2d24 --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/utilities/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/i18n", + "@kbn/core-ui-settings-common", + ] +} diff --git a/packages/kbn-securitysolution-ecs/README.md b/src/platform/packages/shared/kbn-securitysolution-ecs/README.md similarity index 100% rename from packages/kbn-securitysolution-ecs/README.md rename to src/platform/packages/shared/kbn-securitysolution-ecs/README.md diff --git a/packages/kbn-investigation-shared/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/index.ts similarity index 100% rename from packages/kbn-investigation-shared/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/index.ts diff --git a/src/platform/packages/shared/kbn-securitysolution-ecs/jest.config.js b/src/platform/packages/shared/kbn-securitysolution-ecs/jest.config.js new file mode 100644 index 0000000000000..f9e49d0a6719a --- /dev/null +++ b/src/platform/packages/shared/kbn-securitysolution-ecs/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-securitysolution-ecs'], +}; diff --git a/packages/kbn-securitysolution-ecs/kibana.jsonc b/src/platform/packages/shared/kbn-securitysolution-ecs/kibana.jsonc similarity index 100% rename from packages/kbn-securitysolution-ecs/kibana.jsonc rename to src/platform/packages/shared/kbn-securitysolution-ecs/kibana.jsonc diff --git a/packages/kbn-securitysolution-ecs/package.json b/src/platform/packages/shared/kbn-securitysolution-ecs/package.json similarity index 100% rename from packages/kbn-securitysolution-ecs/package.json rename to src/platform/packages/shared/kbn-securitysolution-ecs/package.json diff --git a/packages/kbn-securitysolution-ecs/src/agent/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/agent/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/auditd/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/auditd/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/cloud/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/cloud/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/destination/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/destination/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/dll/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/dll/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/dns/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/dns/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/ecs_fields/extend_map.test.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/extend_map.test.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/ecs_fields/extend_map.test.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/extend_map.test.ts diff --git a/packages/kbn-securitysolution-ecs/src/ecs_fields/extend_map.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/extend_map.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/ecs_fields/extend_map.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/extend_map.ts diff --git a/packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/endgame/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/endgame/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/event/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/event/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/file/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/file/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/geo/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/geo/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/host/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/host/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/http/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/http/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/memory_protection/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/memory_protection/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/network/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/network/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/process/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/process/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/ransomware/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/ransomware/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/registry/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/registry/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/rule/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/rule/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/signal/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/signal/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/source/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/source/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/suricata/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/suricata/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/suricata/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/suricata/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/system/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/system/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/target_type/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/target_type/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/target_type/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/target_type/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/threat/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/threat/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/tls/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/tls/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/url/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/url/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/user/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/user/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/winlog/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/winlog/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/winlog/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/winlog/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/zeek/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/zeek/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts diff --git a/src/platform/packages/shared/kbn-securitysolution-ecs/tsconfig.json b/src/platform/packages/shared/kbn-securitysolution-ecs/tsconfig.json new file mode 100644 index 0000000000000..e4fd00b524dd9 --- /dev/null +++ b/src/platform/packages/shared/kbn-securitysolution-ecs/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/packages/kbn-server-route-repository-client/README.md b/src/platform/packages/shared/kbn-server-route-repository-client/README.md similarity index 100% rename from packages/kbn-server-route-repository-client/README.md rename to src/platform/packages/shared/kbn-server-route-repository-client/README.md diff --git a/packages/kbn-server-route-repository-client/index.ts b/src/platform/packages/shared/kbn-server-route-repository-client/index.ts similarity index 100% rename from packages/kbn-server-route-repository-client/index.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/index.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository-client/jest.config.js b/src/platform/packages/shared/kbn-server-route-repository-client/jest.config.js new file mode 100644 index 0000000000000..325cde5bdf78c --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository-client/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-server-route-repository-client'], +}; diff --git a/packages/kbn-server-route-repository-client/kibana.jsonc b/src/platform/packages/shared/kbn-server-route-repository-client/kibana.jsonc similarity index 100% rename from packages/kbn-server-route-repository-client/kibana.jsonc rename to src/platform/packages/shared/kbn-server-route-repository-client/kibana.jsonc diff --git a/packages/kbn-server-route-repository-client/package.json b/src/platform/packages/shared/kbn-server-route-repository-client/package.json similarity index 100% rename from packages/kbn-server-route-repository-client/package.json rename to src/platform/packages/shared/kbn-server-route-repository-client/package.json diff --git a/packages/kbn-server-route-repository-client/src/create_observable_from_http_response.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/create_observable_from_http_response.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/create_observable_from_http_response.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/create_observable_from_http_response.ts diff --git a/packages/kbn-server-route-repository-client/src/create_repository_client.test.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.test.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/create_repository_client.test.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.test.ts diff --git a/packages/kbn-server-route-repository-client/src/create_repository_client.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/create_repository_client.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.ts diff --git a/packages/kbn-server-route-repository-client/src/is_http_fetch_error.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/is_http_fetch_error.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/is_http_fetch_error.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/is_http_fetch_error.ts diff --git a/packages/kbn-server-route-repository-client/src/is_request_aborted_error.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/is_request_aborted_error.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/is_request_aborted_error.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/is_request_aborted_error.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository-client/tsconfig.json b/src/platform/packages/shared/kbn-server-route-repository-client/tsconfig.json new file mode 100644 index 0000000000000..144271cdf8003 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository-client/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/server-route-repository-utils", + "@kbn/core-lifecycle-browser", + "@kbn/core-http-browser", + "@kbn/sse-utils-client", + ] +} diff --git a/packages/kbn-server-route-repository-utils/README.md b/src/platform/packages/shared/kbn-server-route-repository-utils/README.md similarity index 100% rename from packages/kbn-server-route-repository-utils/README.md rename to src/platform/packages/shared/kbn-server-route-repository-utils/README.md diff --git a/packages/kbn-server-route-repository-utils/index.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/index.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/index.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/index.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository-utils/jest.config.js b/src/platform/packages/shared/kbn-server-route-repository-utils/jest.config.js new file mode 100644 index 0000000000000..fddc8e7bd0e81 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository-utils/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-server-route-repository-utils'], +}; diff --git a/packages/kbn-server-route-repository-utils/kibana.jsonc b/src/platform/packages/shared/kbn-server-route-repository-utils/kibana.jsonc similarity index 100% rename from packages/kbn-server-route-repository-utils/kibana.jsonc rename to src/platform/packages/shared/kbn-server-route-repository-utils/kibana.jsonc diff --git a/packages/kbn-server-route-repository-utils/package.json b/src/platform/packages/shared/kbn-server-route-repository-utils/package.json similarity index 100% rename from packages/kbn-server-route-repository-utils/package.json rename to src/platform/packages/shared/kbn-server-route-repository-utils/package.json diff --git a/packages/kbn-server-route-repository-utils/src/format_request.test.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.test.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/src/format_request.test.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.test.ts diff --git a/packages/kbn-server-route-repository-utils/src/format_request.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/src/format_request.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts diff --git a/packages/kbn-server-route-repository-utils/src/parse_endpoint.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/src/parse_endpoint.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts diff --git a/packages/kbn-server-route-repository-utils/src/typings.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/src/typings.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository-utils/tsconfig.json b/src/platform/packages/shared/kbn-server-route-repository-utils/tsconfig.json new file mode 100644 index 0000000000000..4dbcb3bef87d0 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository-utils/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core-http-server", + "@kbn/core", + "@kbn/zod", + "@kbn/core-http-browser", + "@kbn/sse-utils", + ] +} diff --git a/packages/kbn-server-route-repository/README.md b/src/platform/packages/shared/kbn-server-route-repository/README.md similarity index 100% rename from packages/kbn-server-route-repository/README.md rename to src/platform/packages/shared/kbn-server-route-repository/README.md diff --git a/packages/kbn-server-route-repository/index.ts b/src/platform/packages/shared/kbn-server-route-repository/index.ts similarity index 100% rename from packages/kbn-server-route-repository/index.ts rename to src/platform/packages/shared/kbn-server-route-repository/index.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository/jest.config.js b/src/platform/packages/shared/kbn-server-route-repository/jest.config.js new file mode 100644 index 0000000000000..701aa33fac5e7 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-server-route-repository'], +}; diff --git a/packages/kbn-server-route-repository/kibana.jsonc b/src/platform/packages/shared/kbn-server-route-repository/kibana.jsonc similarity index 100% rename from packages/kbn-server-route-repository/kibana.jsonc rename to src/platform/packages/shared/kbn-server-route-repository/kibana.jsonc diff --git a/packages/kbn-server-route-repository/package.json b/src/platform/packages/shared/kbn-server-route-repository/package.json similarity index 100% rename from packages/kbn-server-route-repository/package.json rename to src/platform/packages/shared/kbn-server-route-repository/package.json diff --git a/packages/kbn-server-route-repository/src/create_server_route_factory.ts b/src/platform/packages/shared/kbn-server-route-repository/src/create_server_route_factory.ts similarity index 100% rename from packages/kbn-server-route-repository/src/create_server_route_factory.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/create_server_route_factory.ts diff --git a/packages/kbn-server-route-repository/src/decode_request_params.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/decode_request_params.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.test.ts diff --git a/packages/kbn-server-route-repository/src/decode_request_params.ts b/src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts similarity index 100% rename from packages/kbn-server-route-repository/src/decode_request_params.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts diff --git a/packages/kbn-server-route-repository/src/make_zod_validation_object.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/make_zod_validation_object.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/make_zod_validation_object.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/make_zod_validation_object.test.ts diff --git a/packages/kbn-server-route-repository/src/make_zod_validation_object.ts b/src/platform/packages/shared/kbn-server-route-repository/src/make_zod_validation_object.ts similarity index 100% rename from packages/kbn-server-route-repository/src/make_zod_validation_object.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/make_zod_validation_object.ts diff --git a/packages/kbn-server-route-repository/src/register_routes.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/register_routes.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/register_routes.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/register_routes.test.ts diff --git a/packages/kbn-server-route-repository/src/register_routes.ts b/src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts similarity index 95% rename from packages/kbn-server-route-repository/src/register_routes.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts index 6201ffcd869ea..90c4f42b9ce44 100644 --- a/packages/kbn-server-route-repository/src/register_routes.ts +++ b/src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts @@ -98,8 +98,15 @@ export function registerRoutes<TDependencies extends Record<string, any>>({ if (isKibanaResponse(result)) { return result; } else if (isObservable(result)) { + const controller = new AbortController(); + request.events.aborted$.subscribe(() => { + controller.abort(); + }); return response.ok({ - body: observableIntoEventSourceStream(result as Observable<ServerSentEvent>), + body: observableIntoEventSourceStream(result as Observable<ServerSentEvent>, { + logger, + signal: controller.signal, + }), }); } else { const body = result || {}; diff --git a/packages/kbn-server-route-repository/src/strip_nullish_request_parameters.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/strip_nullish_request_parameters.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.test.ts diff --git a/packages/kbn-server-route-repository/src/strip_nullish_request_parameters.ts b/src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.ts similarity index 100% rename from packages/kbn-server-route-repository/src/strip_nullish_request_parameters.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.ts diff --git a/packages/kbn-server-route-repository/src/test_types.ts b/src/platform/packages/shared/kbn-server-route-repository/src/test_types.ts similarity index 100% rename from packages/kbn-server-route-repository/src/test_types.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/test_types.ts diff --git a/packages/kbn-server-route-repository/src/validate_and_decode_params.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/validate_and_decode_params.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/validate_and_decode_params.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/validate_and_decode_params.test.ts diff --git a/packages/kbn-server-route-repository/src/validate_and_decode_params.ts b/src/platform/packages/shared/kbn-server-route-repository/src/validate_and_decode_params.ts similarity index 100% rename from packages/kbn-server-route-repository/src/validate_and_decode_params.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/validate_and_decode_params.ts diff --git a/packages/kbn-server-route-repository/src/validation_objects.ts b/src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts similarity index 100% rename from packages/kbn-server-route-repository/src/validation_objects.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository/tsconfig.json b/src/platform/packages/shared/kbn-server-route-repository/tsconfig.json new file mode 100644 index 0000000000000..8a493c3b83722 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository/tsconfig.json @@ -0,0 +1,30 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ], + "noUnusedLocals": false + }, + "include": [ + "**/*.ts" + ], + "kbn_references": [ + "@kbn/io-ts-utils", + "@kbn/core-http-request-handler-context-server", + "@kbn/core-http-server", + "@kbn/core-lifecycle-server", + "@kbn/logging", + "@kbn/core", + "@kbn/logging-mocks", + "@kbn/server-route-repository-utils", + "@kbn/zod", + "@kbn/sse-utils-server", + "@kbn/sse-utils", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/packages/kbn-sse-utils-client/README.md b/src/platform/packages/shared/kbn-sse-utils-client/README.md similarity index 100% rename from packages/kbn-sse-utils-client/README.md rename to src/platform/packages/shared/kbn-sse-utils-client/README.md diff --git a/packages/kbn-sse-utils-client/index.ts b/src/platform/packages/shared/kbn-sse-utils-client/index.ts similarity index 100% rename from packages/kbn-sse-utils-client/index.ts rename to src/platform/packages/shared/kbn-sse-utils-client/index.ts diff --git a/src/platform/packages/shared/kbn-sse-utils-client/jest.config.js b/src/platform/packages/shared/kbn-sse-utils-client/jest.config.js new file mode 100644 index 0000000000000..2e90b1d614331 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-client/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-sse-utils-client'], +}; diff --git a/packages/kbn-sse-utils-client/kibana.jsonc b/src/platform/packages/shared/kbn-sse-utils-client/kibana.jsonc similarity index 100% rename from packages/kbn-sse-utils-client/kibana.jsonc rename to src/platform/packages/shared/kbn-sse-utils-client/kibana.jsonc diff --git a/packages/kbn-sse-utils-client/package.json b/src/platform/packages/shared/kbn-sse-utils-client/package.json similarity index 100% rename from packages/kbn-sse-utils-client/package.json rename to src/platform/packages/shared/kbn-sse-utils-client/package.json diff --git a/packages/kbn-sse-utils-client/src/create_observable_from_http_response.ts b/src/platform/packages/shared/kbn-sse-utils-client/src/create_observable_from_http_response.ts similarity index 100% rename from packages/kbn-sse-utils-client/src/create_observable_from_http_response.ts rename to src/platform/packages/shared/kbn-sse-utils-client/src/create_observable_from_http_response.ts diff --git a/packages/kbn-sse-utils-client/src/http_response_into_observable.test.ts b/src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.test.ts similarity index 100% rename from packages/kbn-sse-utils-client/src/http_response_into_observable.test.ts rename to src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.test.ts diff --git a/packages/kbn-sse-utils-client/src/http_response_into_observable.ts b/src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.ts similarity index 100% rename from packages/kbn-sse-utils-client/src/http_response_into_observable.ts rename to src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.ts diff --git a/src/platform/packages/shared/kbn-sse-utils-client/tsconfig.json b/src/platform/packages/shared/kbn-sse-utils-client/tsconfig.json new file mode 100644 index 0000000000000..6807bb0f68ebf --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-client/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/sse-utils", + ] +} diff --git a/packages/kbn-sse-utils-server/README.md b/src/platform/packages/shared/kbn-sse-utils-server/README.md similarity index 100% rename from packages/kbn-sse-utils-server/README.md rename to src/platform/packages/shared/kbn-sse-utils-server/README.md diff --git a/packages/kbn-sse-utils-server/index.ts b/src/platform/packages/shared/kbn-sse-utils-server/index.ts similarity index 100% rename from packages/kbn-sse-utils-server/index.ts rename to src/platform/packages/shared/kbn-sse-utils-server/index.ts diff --git a/src/platform/packages/shared/kbn-sse-utils-server/jest.config.js b/src/platform/packages/shared/kbn-sse-utils-server/jest.config.js new file mode 100644 index 0000000000000..eb6d801b56a5f --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-sse-utils-server'], +}; diff --git a/src/platform/packages/shared/kbn-sse-utils-server/kibana.jsonc b/src/platform/packages/shared/kbn-sse-utils-server/kibana.jsonc new file mode 100644 index 0000000000000..c4778482e4561 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/kibana.jsonc @@ -0,0 +1,9 @@ +{ + "type": "shared-common", + "id": "@kbn/sse-utils-server", + "owner": [ + "@elastic/obs-knowledge-team" + ], + "group": "platform", + "visibility": "shared" +} diff --git a/packages/kbn-sse-utils-server/package.json b/src/platform/packages/shared/kbn-sse-utils-server/package.json similarity index 100% rename from packages/kbn-sse-utils-server/package.json rename to src/platform/packages/shared/kbn-sse-utils-server/package.json diff --git a/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.test.ts b/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.test.ts new file mode 100644 index 0000000000000..9f4f8ffa84284 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.test.ts @@ -0,0 +1,198 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Logger } from '@kbn/logging'; +import { observableIntoEventSourceStream } from './observable_into_event_source_stream'; +import { PassThrough } from 'node:stream'; +import { Subject } from 'rxjs'; +import { ServerSentEvent, ServerSentEventType } from '@kbn/sse-utils/src/events'; +import { + ServerSentEventErrorCode, + createSSEInternalError, + createSSERequestError, +} from '@kbn/sse-utils/src/errors'; + +describe('observableIntoEventSourceStream', () => { + let logger: jest.Mocked<Logger>; + + let controller: AbortController; + + let stream: PassThrough; + let source$: Subject<ServerSentEvent>; + + let data: string[]; + + beforeEach(() => { + jest.useFakeTimers(); + logger = { + debug: jest.fn(), + error: jest.fn(), + } as unknown as jest.Mocked<Logger>; + + controller = new AbortController(); + source$ = new Subject(); + data = []; + + stream = observableIntoEventSourceStream(source$, { logger, signal: controller.signal }); + stream.on('data', (chunk) => { + data.push(chunk.toString()); + }); + }); + + afterEach(() => { + jest.clearAllTimers(); + }); + + it('writes events into the stream in SSE format', () => { + source$.next({ type: ServerSentEventType.data, data: { foo: 'bar' } }); + source$.complete(); + + jest.runAllTimers(); + + expect(data).toEqual(['event: data\ndata: {"data":{"foo":"bar"}}\n\n']); + }); + + it('handles SSE errors', () => { + const sseError = createSSEInternalError('Invalid input'); + + source$.error(sseError); + + jest.runAllTimers(); + + expect(logger.error).toHaveBeenCalledWith(sseError); + expect(logger.debug).toHaveBeenCalled(); + const debugFn = logger.debug.mock.calls[0][0] as () => string; + const loggedError = JSON.parse(debugFn()); + expect(loggedError).toEqual({ + type: 'error', + error: { + code: ServerSentEventErrorCode.internalError, + message: 'Invalid input', + meta: {}, + }, + }); + + expect(data).toEqual([ + `event: error\ndata: ${JSON.stringify({ + error: { + code: ServerSentEventErrorCode.internalError, + message: 'Invalid input', + meta: {}, + }, + })}\n\n`, + ]); + }); + + it('handles SSE errors with metadata', () => { + const sseError = createSSERequestError('Invalid request', 400); + + source$.error(sseError); + + jest.runAllTimers(); + + expect(logger.error).toHaveBeenCalledWith(sseError); + expect(logger.debug).toHaveBeenCalled(); + const debugFn = logger.debug.mock.calls[0][0] as () => string; + const loggedError = JSON.parse(debugFn()); + expect(loggedError).toEqual({ + type: 'error', + error: { + code: ServerSentEventErrorCode.requestError, + message: 'Invalid request', + meta: { + status: 400, + }, + }, + }); + + expect(data).toEqual([ + `event: error\ndata: ${JSON.stringify({ + error: { + code: ServerSentEventErrorCode.requestError, + message: 'Invalid request', + meta: { + status: 400, + }, + }, + })}\n\n`, + ]); + }); + + it('handles non-SSE errors', () => { + const error = new Error('Non-SSE Error'); + + source$.error(error); + + jest.runAllTimers(); + + expect(logger.error).toHaveBeenCalledWith(error); + expect(data).toEqual([ + `event: error\ndata: ${JSON.stringify({ + error: { + code: ServerSentEventErrorCode.internalError, + message: 'Non-SSE Error', + }, + })}\n\n`, + ]); + }); + + it('should send keep-alive comments every 10 seconds', () => { + jest.advanceTimersByTime(10000); + expect(data).toContain(': keep-alive'); + + jest.advanceTimersByTime(10000); + expect(data.filter((d) => d === ': keep-alive')).toHaveLength(2); + }); + + describe('without fake timers', () => { + beforeEach(() => { + jest.useFakeTimers({ doNotFake: ['nextTick'] }); + }); + + it('should end the stream when the observable completes', async () => { + jest.useFakeTimers({ doNotFake: ['nextTick'] }); + + const endSpy = jest.fn(); + stream.on('end', endSpy); + + source$.complete(); + + await new Promise((resolve) => process.nextTick(resolve)); + + expect(endSpy).toHaveBeenCalled(); + }); + + it('should end stream when signal is aborted', async () => { + const endSpy = jest.fn(); + stream.on('end', endSpy); + + // Emit some data + source$.next({ type: ServerSentEventType.data, data: { initial: 'data' } }); + + // Abort the signal + controller.abort(); + + // Emit more data after abort + source$.next({ type: ServerSentEventType.data, data: { after: 'abort' } }); + + await new Promise((resolve) => process.nextTick(resolve)); + + expect(endSpy).toHaveBeenCalled(); + + // Data after abort should not be received + expect(data).toEqual([ + `event: data\ndata: ${JSON.stringify({ data: { initial: 'data' } })}\n\n`, + ]); + }); + + afterEach(() => { + jest.useFakeTimers(); + }); + }); +}); diff --git a/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts b/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts new file mode 100644 index 0000000000000..0a71cd60192e6 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Logger } from '@kbn/logging'; +import { + isSSEError, + ServerSentErrorEvent, + ServerSentEventErrorCode, +} from '@kbn/sse-utils/src/errors'; +import { ServerSentEvent, ServerSentEventType } from '@kbn/sse-utils/src/events'; +import { catchError, map, Observable, of } from 'rxjs'; +import { PassThrough } from 'stream'; + +export function observableIntoEventSourceStream( + source$: Observable<ServerSentEvent>, + { + logger, + signal, + }: { + logger: Pick<Logger, 'debug' | 'error'>; + signal: AbortSignal; + } +) { + const withSerializedErrors$ = source$.pipe( + catchError((error): Observable<ServerSentErrorEvent> => { + if (isSSEError(error)) { + logger.error(error); + logger.debug(() => JSON.stringify(error)); + return of({ + type: ServerSentEventType.error, + error: { + code: error.code, + message: error.message, + meta: error.meta, + }, + }); + } + + logger.error(error); + + return of({ + type: ServerSentEventType.error, + error: { + code: ServerSentEventErrorCode.internalError, + message: error.message as string, + }, + }); + }), + map((event) => { + const { type, ...rest } = event; + return `event: ${type}\ndata: ${JSON.stringify(rest)}\n\n`; + }) + ); + + const stream = new PassThrough(); + + const intervalId = setInterval(() => { + // `:` denotes a comment - this is to keep the connection open + // it will be ignored by the SSE parser on the client + stream.write(': keep-alive'); + }, 10000); + + const subscription = withSerializedErrors$.subscribe({ + next: (line) => { + stream.write(line); + }, + complete: () => { + stream.end(); + clearTimeout(intervalId); + }, + error: (error) => { + clearTimeout(intervalId); + stream.write( + `event:error\ndata: ${JSON.stringify({ + error: { + code: ServerSentEventErrorCode.internalError, + message: error.message, + }, + })}\n\n` + ); + stream.end(); + }, + }); + + signal.addEventListener('abort', () => { + subscription.unsubscribe(); + stream.end(); + }); + + return stream; +} diff --git a/packages/kbn-sse-utils-server/src/supertest_to_observable.ts b/src/platform/packages/shared/kbn-sse-utils-server/src/supertest_to_observable.ts similarity index 100% rename from packages/kbn-sse-utils-server/src/supertest_to_observable.ts rename to src/platform/packages/shared/kbn-sse-utils-server/src/supertest_to_observable.ts diff --git a/src/platform/packages/shared/kbn-sse-utils-server/tsconfig.json b/src/platform/packages/shared/kbn-sse-utils-server/tsconfig.json new file mode 100644 index 0000000000000..8e73d0e64c84f --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/sse-utils", + "@kbn/logging", + ] +} diff --git a/src/platform/packages/shared/kbn-sse-utils/README.md b/src/platform/packages/shared/kbn-sse-utils/README.md new file mode 100644 index 0000000000000..948376fb7e4e5 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils/README.md @@ -0,0 +1,58 @@ +# @kbn/sse-utils + +This package exports utility functions that can be used to format and parse server-sent events(SSE). SSE is useful when streaming data back to the browser as part of a long-running process, such as LLM-based inference. It can convert an Observable that emits values of type `ServerSentEvent` into a response stream on the server, emitting lines in an SSE-compatible format, and it can convert an SSE response stream back into deserialized event. + +## Server + +On the server, you can use `observableIntoEventSourceStream` to convert an Observable that emits `ServerSentEvent` values into a Node.js response stream: + +```ts +import { observableIntoEventSourceStream } from '@kbn/sse-utils-server'; + +function myRequestHandler( + context: RequestHandlerContext, + request: KibanaRequest, + response: KibanaResponseFactory +) { + return response.ok({ + body: observableIntoEventSourceStream( + of({ + type: 'my_event_type', + data: { + anyData: {}, + }, + }), + logger + ), + }); +} +``` + +All emitted values have to be of `ServerSentEvent` type: + +```ts +type ServerSentEvent = { + type: string; + data: Record<string, any>; +}; +``` + +Any error that occurs in the Observable is written to the stream as an event, and the stream is closed. + +## Client + +On the client, you can use `http `@elastic/core-http-browser` to convert the stream of events back into an Observable: + +```ts +import { httpResponseIntoObservable } from '@kbn/sse-utils-client'; +function streamEvents(http: Http) { + from( + http.post('/internal/my_event_stream', { + asResponse: true, + rawResponse: true, + }) + ).pipe(httpResponseIntoObservable()); +} +``` + +Any serialized error events from the stream are de-serialized, and thrown as an error in the Observable. diff --git a/packages/kbn-sse-utils/index.ts b/src/platform/packages/shared/kbn-sse-utils/index.ts similarity index 100% rename from packages/kbn-sse-utils/index.ts rename to src/platform/packages/shared/kbn-sse-utils/index.ts diff --git a/src/platform/packages/shared/kbn-sse-utils/jest.config.js b/src/platform/packages/shared/kbn-sse-utils/jest.config.js new file mode 100644 index 0000000000000..b7409fb04e8f2 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-sse-utils'], +}; diff --git a/packages/kbn-sse-utils/kibana.jsonc b/src/platform/packages/shared/kbn-sse-utils/kibana.jsonc similarity index 100% rename from packages/kbn-sse-utils/kibana.jsonc rename to src/platform/packages/shared/kbn-sse-utils/kibana.jsonc diff --git a/packages/kbn-sse-utils/package.json b/src/platform/packages/shared/kbn-sse-utils/package.json similarity index 100% rename from packages/kbn-sse-utils/package.json rename to src/platform/packages/shared/kbn-sse-utils/package.json diff --git a/packages/kbn-sse-utils/src/errors.ts b/src/platform/packages/shared/kbn-sse-utils/src/errors.ts similarity index 100% rename from packages/kbn-sse-utils/src/errors.ts rename to src/platform/packages/shared/kbn-sse-utils/src/errors.ts diff --git a/packages/kbn-sse-utils/src/events.ts b/src/platform/packages/shared/kbn-sse-utils/src/events.ts similarity index 100% rename from packages/kbn-sse-utils/src/events.ts rename to src/platform/packages/shared/kbn-sse-utils/src/events.ts diff --git a/src/platform/packages/shared/kbn-sse-utils/tsconfig.json b/src/platform/packages/shared/kbn-sse-utils/tsconfig.json new file mode 100644 index 0000000000000..05d96f4557574 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + ] +} diff --git a/packages/kbn-typed-react-router-config/index.ts b/src/platform/packages/shared/kbn-typed-react-router-config/index.ts similarity index 100% rename from packages/kbn-typed-react-router-config/index.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/index.ts diff --git a/src/platform/packages/shared/kbn-typed-react-router-config/jest.config.js b/src/platform/packages/shared/kbn-typed-react-router-config/jest.config.js new file mode 100644 index 0000000000000..cfaf181f1f4a2 --- /dev/null +++ b/src/platform/packages/shared/kbn-typed-react-router-config/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-typed-react-router-config'], +}; diff --git a/packages/kbn-typed-react-router-config/kibana.jsonc b/src/platform/packages/shared/kbn-typed-react-router-config/kibana.jsonc similarity index 100% rename from packages/kbn-typed-react-router-config/kibana.jsonc rename to src/platform/packages/shared/kbn-typed-react-router-config/kibana.jsonc diff --git a/packages/kbn-typed-react-router-config/package.json b/src/platform/packages/shared/kbn-typed-react-router-config/package.json similarity index 100% rename from packages/kbn-typed-react-router-config/package.json rename to src/platform/packages/shared/kbn-typed-react-router-config/package.json diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/breadcrumb.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/breadcrumb.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/breadcrumb.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/breadcrumb.tsx diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/index.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/index.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/index.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/index.tsx diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts diff --git a/packages/kbn-typed-react-router-config/src/create_router.test.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.test.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/create_router.test.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.test.tsx diff --git a/packages/kbn-typed-react-router-config/src/create_router.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/create_router.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts diff --git a/packages/kbn-typed-react-router-config/src/outlet.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/outlet.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx diff --git a/packages/kbn-typed-react-router-config/src/route_renderer.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/route_renderer.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/route_renderer.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/route_renderer.tsx diff --git a/packages/kbn-typed-react-router-config/src/router_provider.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/router_provider.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx diff --git a/packages/kbn-typed-react-router-config/src/types/index.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/types/index.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts diff --git a/packages/kbn-typed-react-router-config/src/types/utils.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/types/utils.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/types/utils.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/types/utils.ts diff --git a/packages/kbn-typed-react-router-config/src/use_current_route.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_current_route.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx diff --git a/packages/kbn-typed-react-router-config/src/use_match_routes.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_match_routes.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_match_routes.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_match_routes.ts diff --git a/packages/kbn-typed-react-router-config/src/use_params.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_params.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_params.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_params.ts diff --git a/packages/kbn-typed-react-router-config/src/use_route_path.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_route_path.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_route_path.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_route_path.tsx diff --git a/packages/kbn-typed-react-router-config/src/use_router.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_router.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx diff --git a/src/platform/packages/shared/kbn-typed-react-router-config/tsconfig.json b/src/platform/packages/shared/kbn-typed-react-router-config/tsconfig.json new file mode 100644 index 0000000000000..0995478cae6bc --- /dev/null +++ b/src/platform/packages/shared/kbn-typed-react-router-config/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "isolatedModules": true, + "outDir": "target/types", + "types": [ + "node", + "jest" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "kbn_references": [ + "@kbn/io-ts-utils", + "@kbn/shared-ux-router", + "@kbn/core", + "@kbn/i18n", + "@kbn/kibana-react-plugin", + "@kbn/core-chrome-browser", + "@kbn/serverless" + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/packages/kbn-unsaved-changes-prompt/README.md b/src/platform/packages/shared/kbn-unsaved-changes-prompt/README.md similarity index 100% rename from packages/kbn-unsaved-changes-prompt/README.md rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/README.md diff --git a/packages/kbn-unsaved-changes-prompt/index.ts b/src/platform/packages/shared/kbn-unsaved-changes-prompt/index.ts similarity index 100% rename from packages/kbn-unsaved-changes-prompt/index.ts rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/index.ts diff --git a/src/platform/packages/shared/kbn-unsaved-changes-prompt/jest.config.js b/src/platform/packages/shared/kbn-unsaved-changes-prompt/jest.config.js new file mode 100644 index 0000000000000..4c92eb4efbc5d --- /dev/null +++ b/src/platform/packages/shared/kbn-unsaved-changes-prompt/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-unsaved-changes-prompt'], +}; diff --git a/packages/kbn-unsaved-changes-prompt/kibana.jsonc b/src/platform/packages/shared/kbn-unsaved-changes-prompt/kibana.jsonc similarity index 100% rename from packages/kbn-unsaved-changes-prompt/kibana.jsonc rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/kibana.jsonc diff --git a/packages/kbn-unsaved-changes-prompt/package.json b/src/platform/packages/shared/kbn-unsaved-changes-prompt/package.json similarity index 100% rename from packages/kbn-unsaved-changes-prompt/package.json rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/package.json diff --git a/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts b/src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts similarity index 100% rename from packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts diff --git a/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx b/src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx similarity index 100% rename from packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx diff --git a/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx b/src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx similarity index 100% rename from packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx diff --git a/src/platform/packages/shared/kbn-unsaved-changes-prompt/tsconfig.json b/src/platform/packages/shared/kbn-unsaved-changes-prompt/tsconfig.json new file mode 100644 index 0000000000000..f36642a9adb25 --- /dev/null +++ b/src/platform/packages/shared/kbn-unsaved-changes-prompt/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": ["*.ts", "src/**/*"], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core" + ] +} diff --git a/packages/serverless/settings/security_project/README.mdx b/src/platform/packages/shared/serverless/settings/security_project/README.mdx similarity index 100% rename from packages/serverless/settings/security_project/README.mdx rename to src/platform/packages/shared/serverless/settings/security_project/README.mdx diff --git a/packages/serverless/settings/security_project/index.ts b/src/platform/packages/shared/serverless/settings/security_project/index.ts similarity index 100% rename from packages/serverless/settings/security_project/index.ts rename to src/platform/packages/shared/serverless/settings/security_project/index.ts diff --git a/packages/serverless/settings/security_project/kibana.jsonc b/src/platform/packages/shared/serverless/settings/security_project/kibana.jsonc similarity index 100% rename from packages/serverless/settings/security_project/kibana.jsonc rename to src/platform/packages/shared/serverless/settings/security_project/kibana.jsonc diff --git a/packages/serverless/settings/security_project/package.json b/src/platform/packages/shared/serverless/settings/security_project/package.json similarity index 100% rename from packages/serverless/settings/security_project/package.json rename to src/platform/packages/shared/serverless/settings/security_project/package.json diff --git a/src/platform/packages/shared/serverless/settings/security_project/tsconfig.json b/src/platform/packages/shared/serverless/settings/security_project/tsconfig.json new file mode 100644 index 0000000000000..16a9ba9ba4b5d --- /dev/null +++ b/src/platform/packages/shared/serverless/settings/security_project/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-ids", + ] +} diff --git a/src/plugins/ai_assistant_management/selection/README.md b/src/platform/plugins/shared/ai_assistant_management/selection/README.md similarity index 100% rename from src/plugins/ai_assistant_management/selection/README.md rename to src/platform/plugins/shared/ai_assistant_management/selection/README.md diff --git a/src/plugins/ai_assistant_management/selection/common/ai_assistant_type.ts b/src/platform/plugins/shared/ai_assistant_management/selection/common/ai_assistant_type.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/common/ai_assistant_type.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/common/ai_assistant_type.ts diff --git a/src/plugins/ai_assistant_management/selection/common/ui_setting_keys.ts b/src/platform/plugins/shared/ai_assistant_management/selection/common/ui_setting_keys.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/common/ui_setting_keys.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/common/ui_setting_keys.ts diff --git a/src/platform/plugins/shared/ai_assistant_management/selection/jest.config.js b/src/platform/plugins/shared/ai_assistant_management/selection/jest.config.js new file mode 100644 index 0000000000000..7082a96250d33 --- /dev/null +++ b/src/platform/plugins/shared/ai_assistant_management/selection/jest.config.js @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/plugins/shared/ai_assistant_management/selection'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/src/platform/plugins/shared/ai_assistant_management/selection', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/src/platform/plugins/shared/ai_assistant_management/selection/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/src/plugins/ai_assistant_management/selection/kibana.jsonc b/src/platform/plugins/shared/ai_assistant_management/selection/kibana.jsonc similarity index 100% rename from src/plugins/ai_assistant_management/selection/kibana.jsonc rename to src/platform/plugins/shared/ai_assistant_management/selection/kibana.jsonc diff --git a/src/plugins/ai_assistant_management/selection/public/app_context.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/app_context.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/app_context.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/app_context.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/index.ts b/src/platform/plugins/shared/ai_assistant_management/selection/public/index.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/index.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/public/index.ts diff --git a/src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/plugin.ts b/src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/plugin.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts diff --git a/src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/routes/components/redirect_to_home_if_unauthorized.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/redirect_to_home_if_unauthorized.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/routes/components/redirect_to_home_if_unauthorized.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/redirect_to_home_if_unauthorized.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/routes/config.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/config.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/routes/config.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/routes/config.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/types.ts b/src/platform/plugins/shared/ai_assistant_management/selection/public/types.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/types.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/public/types.ts diff --git a/src/plugins/ai_assistant_management/selection/server/config.ts b/src/platform/plugins/shared/ai_assistant_management/selection/server/config.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/server/config.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/server/config.ts diff --git a/src/plugins/ai_assistant_management/selection/server/index.ts b/src/platform/plugins/shared/ai_assistant_management/selection/server/index.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/server/index.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/server/index.ts diff --git a/src/plugins/ai_assistant_management/selection/server/plugin.ts b/src/platform/plugins/shared/ai_assistant_management/selection/server/plugin.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/server/plugin.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/server/plugin.ts diff --git a/src/plugins/ai_assistant_management/selection/server/types.ts b/src/platform/plugins/shared/ai_assistant_management/selection/server/types.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/server/types.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/server/types.ts diff --git a/src/platform/plugins/shared/ai_assistant_management/selection/tsconfig.json b/src/platform/plugins/shared/ai_assistant_management/selection/tsconfig.json new file mode 100644 index 0000000000000..0fc6cec454817 --- /dev/null +++ b/src/platform/plugins/shared/ai_assistant_management/selection/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": ["common/**/*", "public/**/*", "server/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/management-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/core-chrome-browser", + "@kbn/typed-react-router-config", + "@kbn/serverless", + "@kbn/config-schema", + "@kbn/core-plugins-server", + "@kbn/features-plugin", + "@kbn/config", + "@kbn/doc-links" + ], + "exclude": ["target/**/*"] +} diff --git a/src/platform/plugins/shared/console/README.md b/src/platform/plugins/shared/console/README.md new file mode 100644 index 0000000000000..3b3bc1a5a5ade --- /dev/null +++ b/src/platform/plugins/shared/console/README.md @@ -0,0 +1,320 @@ +# Console + +## About + +Console provides the user with tools for storing and executing requests against Elasticsearch. + +## Features + +### `load_from` query parameter + +The `load_from` query parameter enables opening Console with prepopulated requests in two ways: from the elastic.co docs and from within other parts of Kibana. + +Plugins can open requests in Kibana by assigning this parameter a `data:text/plain` [lz-string](https://pieroxy.net/blog/pages/lz-string/index.html) encoded value. For example, navigating to `/dev_tools#/console?load_from=data:text/plain,OIUQKgBA+gzgpgQwE4GMAWAoA3gIgI4CucSAnjgFy4C2CALulAgDZMVYC+nQA` will prepopulate Console with the following request: + +``` +GET _search +{"query":{"match_all":{}}} +``` + +### Kibana API support ([#100253](https://github.com/elastic/kibana/pull/128562)) +Console plugin now supports Kibana API endpoints. `kbn:` prefix must be used in the request URL to send a request to Kibana API. For example, the following request sends a request to the Kibana API to retrieve the list of available spaces: +``` +GET kbn:api/spaces/space +``` + +### Request-body comments +Single-line and multiline comments can be added to the request body. The comments are displayed in the request editor, but are not sent to the cluster. The comments are useful for adding notes to the request body. For example, the following request body contains a single-line comment and a multiline comment: +``` +POST /_some_endpoint +{ + // This is a single-line comment + /* This is a multiline comment */ + "field": "value" +} +``` + +### Variables +Console plugin now supports variables. The variables can be used in the request body and in the request URL. The variables are defined in the `Variables` flyout in the Console UI and used in the request body and URL by wrapping the variable name with `${}`. For example, the following request body contains a variable: +``` +POST /_some_endpoint +{ + "field": "${variable}" +} +``` + +## Architecture +Console uses Monaco editor that is wrapped with [`kbn-monaco`](https://github.com/elastic/kibana/blob/main/packages/kbn-monaco/index.ts), so that if needed it can easily be replaced with another editor. +The autocomplete logic is located in [`autocomplete`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/public/lib/autocomplete) folder. Autocomplete rules are computed by classes in `components` sub-folder. + +## Autocomplete definitions +Kibana users benefit greatly from autocomplete suggestions since not all Elasticsearch APIs can be provided with a corresponding UI. Autocomplete suggestions improve usability of Console for any Elasticsearch API endpoint. +Autocomplete definitions are all created in the form of javascript objects loaded from `json` and `js` files. + +### Creating definitions +The [`generated`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated) folder contains definitions created automatically from Elasticsearch specifications. See this [README](https://github.com/elastic/kibana/blob/main/packages/kbn-generate-console-definitions/README.md) file for more information on the `generate-console-definitions` script. The AppEx/Management team (@elastic/kibana-management) regularly runs the script to update the definitions and is planning to automate this process. + +Manually created override files in the [`overrides`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides) folder contain additions for request body parameters since those +are not created by the script. Any other fixes such as documentation links, request methods and patterns and url parameters +should be addressed at the source. That means this should be fixed in Elasticsearch specifications and then +autocomplete definitions can be re-generated with the script. + +If there are any endpoints missing completely from the `generated` folder, this should also be addressed at the source, i.e. +Elasticsearch specifications. If for some reason, that is not possible, then additional definitions files +can be placed in the folder [`manual`]((https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/json/manual)). + +### Top level keys +Use following top level keys in the definitions objects. + +#### `documentation` +Url to Elasticsearch REST API documentation for the endpoint (If the url contains `master` or `current` strings in the path, Console automatically replaces them with the `docLinkVersion` to always redirect the user to the correct version of the documentation). + +#### `methods` +Allowed http methods (`GET`, `POST` etc) + +#### `patterns` +Array of API endpoints that contain dynamic parameters like `{index}` or `{fields}`. For example, `{index}/_rollup/{rollup_index}`. Dynamic parameters used in patterns are not always defined. For example, a pattern `_ilm/policy/{policy}` indicates that any string can be used as policy name. +See the [Dynamic parameters](#dynamic-parameters) section below for more info about dynamic parameters defined in the autocomplete engine, such as `{index}`. + +#### `url_params` +Query url parameters and their values. See the [Query url parameters](#query-url-parameters) section below for more info. An example: +```json +{ + "url_params": { + "format": "", + "local": "__flag__", + "h": [], + "expand_wildcards": [ + "open", + "closed", + "hidden", + "none", + "all" + ] + } +} +``` + +#### `priority` +Value for selecting one autocomplete definition, if several configurations are loaded from the files. The highest number takes precedence. + +#### `availability` +A property that describes if an endpoint is available in stack and serverless environments. Endpoints with a `false` boolean value are filtered out in the corresponding environment. An example of an endpoint that is not available in the serverless environment: +```json +"availability": { + "stack": true, + "serverless": false +} +``` + +#### `data_autocomplete_rules` +Request body parameters and their values. Only used in `overrides` files because REST API specs don't contain any information about body request parameters. +Refer to Elasticsearch REST API documentation when configuring this object. See the [Request body parameters](#request-body-parameters) section below for more info. An example: +```json +{ + "data_autocomplete_rules": { + "text": [], + "field": "{field}", + "analyzer": "", + "explain": { "__one_of": [false, true] } + } +} +``` + +### Query url parameters +Query url parameters are configured in form of an object, for example: +```json +{ + "url_params": { + "local": "__flag__", + "scroll": "", + "expand_wildcards": [ + "open", + "closed", + "hidden", + "none", + "all" + ] + } +} +``` +This object specifies 3 query parameters: `local` (boolean value), `scroll` (no default value) and `expand_wildcards` (with a list of accepted values). + +When the user types in the url path into Console and at least 2 characters after `?`, all matching url parameters are displayed as autocomplete suggestions. In this example, after typing +``` +GET /_some_endpoint?ca +``` +"local" and "expand_wildcards" are displayed as suggestions. +When the user types at least 2 characters after `=`, all matching values for this parameter are displayed as autocomplete suggestions. In this example, after typing +``` +GET /_some_endpoint?expand_wildcards=hi +``` +"hidden" is displayed for autocompletion. + +Dynamic parameters such as `{index}` or `{fields}` are accepted both as an url parameter and its value in the configuration object. See the [Dynamic parameters](#dynamic-parameters) section below for more information. + +### Request body parameters +Request body parameters are configured in form of an object, for example: +```json +{ + "data_autocomplete_rules": { + "index_patterns": [], + "mappings": { "__scope_link": "put_mapping" }, + "version": 0, + "aliases": { + "__template": { + "NAME": {} + } + } + } +} +``` +Object's keys are parameters that will be displayed as autocomplete suggestions when the user starts typing request body. In this example, after typing +``` +PUT /_some_endpoint +{ + " +``` +"index_patterns", "mappings", "version" and "aliases" are displayed as autocomplete suggestions. +Object's values provide default or accepted values of request body parameters. For example, if "version" is selected from the suggestions list, value `0` is automatically filled, resulting in the following request: +``` +PUT /_some_endpoint +{ + "version": 0 +} +``` +Object's values can contain objects for nested configuration because the engine can work recursively while searching for autocomplete suggestions. + +Upper case strings are used to indicate that the property's name is a dynamic value that the user needs to define. For example, the autocomplete suggestion for aggregations displays the following object: +```json +{ + "aggs": { + "NAME": { + "AGG_TYPE": {} + } + } +} +``` +Both upper case strings `NAME` and `AGG_TYPE` indicate that those values need to be filled in by the user. + +**Following values can be used in the configuration object:** + +#### One value from the list (`__one_of: [..., ...]`) +Use this configuration for a parameter with a list of allowed values, for example types of snapshot repository: +``` +"type": {"__one_of": ["fs", "url", "s3", "hdfs", "azure"]} +``` +The first value in the list will be automatically filled as parameter value. For example, when "type" is selected from the suggestions list, the request body is autofilled as following: +``` +PUT /_some_endpoint +{ + "type": "fs" +} +``` +But if the value `fs` is deleted, all suggestions will be displayed: "fs", "url", "s3", "hdfs" and "azure". +Use `__one_of: [true, false]` for boolean values. + +#### Array of values (`[..., ... ]` or `__any_of: [..., ...]`) +Use this configuration for parameters which accept an array of values, for example actions parameter: +``` +"actions": { "__any_of": [ "add", "remove"]} +``` +When "actions" is selected from the suggestions list, it will be autocompleted with an empty array: +``` +POST /_some_endpoint +{ + "actions": [] +} +``` +All values in the array are displayed as suggestions for parameter values inside the array. + + +#### Default object structure (`__template: {...}`) +Use this configuration to insert an object with default values into the request body when the corresponding key is typed in. +For example, in this configuration +```json +{ + "terms": { + "__template": { + "field": "", + "size": 10 + }, + "field": "{field}", + "size": 10, + "shard_size": 10, + "min_doc_count": 10 + } +} +``` +the `terms` parameter has several properties, but only `field` and `size` are autocompleted in the request body when "terms" is selected from the suggestions list. +``` +POST /_some_endpoint +{ + terms: { + field: '', + size: 10, + } +} +``` +The rest of the properties are displayed as autocomplete suggestions, when the `terms` object is being edited. + +#### Scope link (`__scope_link`) +Use this type to copy a configuration object specified in a different endpoint definition. For example, the `put_settings` endpoint definition contains a configuration object that can be reused for `settings` parameter in a different endpoint: +```json +{ + "data_autocomplete_rules": { + "settings": { + "__scope_link": "put_settings" + } + } +} +``` +#### Global scope (`GLOBAL`) +Use `GLOBAL` keyword with `__scope_link` to refer to a reusable set of definitions created in the [`globals`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/js/globals.ts) file. +For example: +```json +{ + "data_autocomplete_rules": { + "query": { + "__scope_link": "GLOBAL.query" + } + } +} +``` +#### Conditional definition (`__condition: { lines_regex: ... }`) +To provide a different set of autocomplete suggestions based on the value configured in the request. For example, when creating a snapshot repository of different types (`fs`, `url` etc) different properties are displayed in the suggestions list based on the type. See [snapshot.create_repository.json](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json) for an example. + + +### Dynamic parameters +Some autocomplete definitions need to be configured with dynamic values that can't be hard coded into a json or js file, for example a list of indices in the cluster. +A list of dynamic parameters is defined in the `parametrizedComponentFactories` function in [`kb.js`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/public/lib/kb/kb.js) file. The values of these parameters are assigned dynamically for every cluster. +Use these dynamic parameters with curly braces, for example `{index}`, `{fields}`, `{template}` etc. + +Dynamic parameters can be used in url patterns, for example `{index}/_search`. Url patterns can also contain unknown parameters just to indicate that any value can be used in the url, for example in the url `/_ilm/policy/{policy}` the value for `{policy}` can be any accepted policy name and the dynamic parameter `{policy}` is not defined in the autocomplete engine. + +For request body parameters, only known dynamic properties are allowed. For example: +```json +{ + "data_autocomplete_rules": { + "query": { + "field": "{field}" + } + } +} +``` +If an unknown dynamic parameter (for example, `{my_param}`) is used in request body parameters, a warning will be logged in the browser: `[Console] no factory found for 'my_param'`. + +### Architecture changes in 8.3 release (timeline: 07-04-2022 - 19-06-2022) +One of the main changes in architecture is refactoring the retrieval of autocomplete suggestions. Console used to send a separate request to ES for each autocomplete entity (mappings, aliases, templates, data-streams etc) to retrieve the autocomplete suggestions via the original [hand-rolled ES proxy](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/routes/api/console/proxy/create_handler.ts). This had a few drawbacks: +- The number of requests was dependent on the number of autocomplete entities, which was not scalable and could cause performance issues +- It added unnecessary dependencies on the ES proxy +- We risked fetching an enormous response payload for users who have a large number of mappings. + +To address these issues, we created a specific [route](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/index.ts) in the Kibana server to retrieve all autocomplete entities in one request and send it to the client. The response for mappings capped to 10MB to avoid sending a huge payload. The client-side code was refactored to use the new response format. For more details, see [#130633](https://github.com/elastic/kibana/pull/130633). + +Another change is replacing jQuery with the core http client to communicate with the Kibana server. Console used a custom jQuery ajax [function](https://github.com/elastic/kibana/blob/8.0/src/platform/plugins/shared/console/public/lib/es/es.ts) to send requests to the Kibana server to have lower-level control over the requests, specifically controls like `crossDomain: true`. This is no longer needed since we are using the core http client. For more details, see [#127867](https://github.com/elastic/kibana/pull/127867). + +### Outstanding issues +#### Autocomplete suggestions for Kibana API endpoints +Console currently supports autocomplete suggestions for Elasticsearch API endpoints. The autocomplete suggestions for Kibana API endpoints are not supported yet. +Related issue: [#130661](https://github.com/elastic/kibana/issues/130661) \ No newline at end of file diff --git a/src/plugins/console/common/constants/api.ts b/src/platform/plugins/shared/console/common/constants/api.ts similarity index 100% rename from src/plugins/console/common/constants/api.ts rename to src/platform/plugins/shared/console/common/constants/api.ts diff --git a/src/plugins/console/common/constants/autocomplete_definitions.ts b/src/platform/plugins/shared/console/common/constants/autocomplete_definitions.ts similarity index 100% rename from src/plugins/console/common/constants/autocomplete_definitions.ts rename to src/platform/plugins/shared/console/common/constants/autocomplete_definitions.ts diff --git a/src/plugins/console/common/constants/copy_as.ts b/src/platform/plugins/shared/console/common/constants/copy_as.ts similarity index 100% rename from src/plugins/console/common/constants/copy_as.ts rename to src/platform/plugins/shared/console/common/constants/copy_as.ts diff --git a/src/plugins/console/common/constants/editor_input.ts b/src/platform/plugins/shared/console/common/constants/editor_input.ts similarity index 100% rename from src/plugins/console/common/constants/editor_input.ts rename to src/platform/plugins/shared/console/common/constants/editor_input.ts diff --git a/src/plugins/console/common/constants/index.ts b/src/platform/plugins/shared/console/common/constants/index.ts similarity index 100% rename from src/plugins/console/common/constants/index.ts rename to src/platform/plugins/shared/console/common/constants/index.ts diff --git a/src/plugins/console/common/constants/plugin.ts b/src/platform/plugins/shared/console/common/constants/plugin.ts similarity index 100% rename from src/plugins/console/common/constants/plugin.ts rename to src/platform/plugins/shared/console/common/constants/plugin.ts diff --git a/src/plugins/console/common/constants/variables.ts b/src/platform/plugins/shared/console/common/constants/variables.ts similarity index 100% rename from src/plugins/console/common/constants/variables.ts rename to src/platform/plugins/shared/console/common/constants/variables.ts diff --git a/src/plugins/console/common/constants/welcome_panel.ts b/src/platform/plugins/shared/console/common/constants/welcome_panel.ts similarity index 100% rename from src/plugins/console/common/constants/welcome_panel.ts rename to src/platform/plugins/shared/console/common/constants/welcome_panel.ts diff --git a/src/plugins/console/common/text_object.ts b/src/platform/plugins/shared/console/common/text_object.ts similarity index 100% rename from src/plugins/console/common/text_object.ts rename to src/platform/plugins/shared/console/common/text_object.ts diff --git a/src/plugins/console/common/types/api_responses.ts b/src/platform/plugins/shared/console/common/types/api_responses.ts similarity index 100% rename from src/plugins/console/common/types/api_responses.ts rename to src/platform/plugins/shared/console/common/types/api_responses.ts diff --git a/src/plugins/console/common/types/autocomplete_definitions.ts b/src/platform/plugins/shared/console/common/types/autocomplete_definitions.ts similarity index 100% rename from src/plugins/console/common/types/autocomplete_definitions.ts rename to src/platform/plugins/shared/console/common/types/autocomplete_definitions.ts diff --git a/src/plugins/console/common/types/index.ts b/src/platform/plugins/shared/console/common/types/index.ts similarity index 100% rename from src/plugins/console/common/types/index.ts rename to src/platform/plugins/shared/console/common/types/index.ts diff --git a/src/plugins/console/common/types/models.ts b/src/platform/plugins/shared/console/common/types/models.ts similarity index 100% rename from src/plugins/console/common/types/models.ts rename to src/platform/plugins/shared/console/common/types/models.ts diff --git a/src/plugins/console/common/types/plugin_config.ts b/src/platform/plugins/shared/console/common/types/plugin_config.ts similarity index 100% rename from src/plugins/console/common/types/plugin_config.ts rename to src/platform/plugins/shared/console/common/types/plugin_config.ts diff --git a/src/platform/plugins/shared/console/jest.config.js b/src/platform/plugins/shared/console/jest.config.js new file mode 100644 index 0000000000000..12edf4d1f4cf6 --- /dev/null +++ b/src/platform/plugins/shared/console/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/plugins/shared/console'], + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/platform/plugins/shared/console', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/src/platform/plugins/shared/console/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/src/plugins/console/kibana.jsonc b/src/platform/plugins/shared/console/kibana.jsonc similarity index 100% rename from src/plugins/console/kibana.jsonc rename to src/platform/plugins/shared/console/kibana.jsonc diff --git a/src/plugins/console/public/application/components/console_menu.tsx b/src/platform/plugins/shared/console/public/application/components/console_menu.tsx similarity index 100% rename from src/plugins/console/public/application/components/console_menu.tsx rename to src/platform/plugins/shared/console/public/application/components/console_menu.tsx diff --git a/src/plugins/console/public/application/components/console_tour_step.tsx b/src/platform/plugins/shared/console/public/application/components/console_tour_step.tsx similarity index 100% rename from src/plugins/console/public/application/components/console_tour_step.tsx rename to src/platform/plugins/shared/console/public/application/components/console_tour_step.tsx diff --git a/src/plugins/console/public/application/components/editor_content_spinner.tsx b/src/platform/plugins/shared/console/public/application/components/editor_content_spinner.tsx similarity index 100% rename from src/plugins/console/public/application/components/editor_content_spinner.tsx rename to src/platform/plugins/shared/console/public/application/components/editor_content_spinner.tsx diff --git a/src/plugins/console/public/application/components/help_popover.tsx b/src/platform/plugins/shared/console/public/application/components/help_popover.tsx similarity index 100% rename from src/plugins/console/public/application/components/help_popover.tsx rename to src/platform/plugins/shared/console/public/application/components/help_popover.tsx diff --git a/src/plugins/console/public/application/components/index.ts b/src/platform/plugins/shared/console/public/application/components/index.ts similarity index 100% rename from src/plugins/console/public/application/components/index.ts rename to src/platform/plugins/shared/console/public/application/components/index.ts diff --git a/src/plugins/console/public/application/components/network_request_status_bar/index.ts b/src/platform/plugins/shared/console/public/application/components/network_request_status_bar/index.ts similarity index 100% rename from src/plugins/console/public/application/components/network_request_status_bar/index.ts rename to src/platform/plugins/shared/console/public/application/components/network_request_status_bar/index.ts diff --git a/src/plugins/console/public/application/components/network_request_status_bar/network_request_status_bar.tsx b/src/platform/plugins/shared/console/public/application/components/network_request_status_bar/network_request_status_bar.tsx similarity index 100% rename from src/plugins/console/public/application/components/network_request_status_bar/network_request_status_bar.tsx rename to src/platform/plugins/shared/console/public/application/components/network_request_status_bar/network_request_status_bar.tsx diff --git a/src/plugins/console/public/application/components/output_panel_empty_state.tsx b/src/platform/plugins/shared/console/public/application/components/output_panel_empty_state.tsx similarity index 100% rename from src/plugins/console/public/application/components/output_panel_empty_state.tsx rename to src/platform/plugins/shared/console/public/application/components/output_panel_empty_state.tsx diff --git a/src/plugins/console/public/application/components/settings/index.ts b/src/platform/plugins/shared/console/public/application/components/settings/index.ts similarity index 100% rename from src/plugins/console/public/application/components/settings/index.ts rename to src/platform/plugins/shared/console/public/application/components/settings/index.ts diff --git a/src/plugins/console/public/application/components/settings/settings_editor.tsx b/src/platform/plugins/shared/console/public/application/components/settings/settings_editor.tsx similarity index 100% rename from src/plugins/console/public/application/components/settings/settings_editor.tsx rename to src/platform/plugins/shared/console/public/application/components/settings/settings_editor.tsx diff --git a/src/plugins/console/public/application/components/settings/settings_form_row.tsx b/src/platform/plugins/shared/console/public/application/components/settings/settings_form_row.tsx similarity index 100% rename from src/plugins/console/public/application/components/settings/settings_form_row.tsx rename to src/platform/plugins/shared/console/public/application/components/settings/settings_form_row.tsx diff --git a/src/plugins/console/public/application/components/settings/settings_group.tsx b/src/platform/plugins/shared/console/public/application/components/settings/settings_group.tsx similarity index 100% rename from src/plugins/console/public/application/components/settings/settings_group.tsx rename to src/platform/plugins/shared/console/public/application/components/settings/settings_group.tsx diff --git a/src/plugins/console/public/application/components/settings/types.ts b/src/platform/plugins/shared/console/public/application/components/settings/types.ts similarity index 100% rename from src/plugins/console/public/application/components/settings/types.ts rename to src/platform/plugins/shared/console/public/application/components/settings/types.ts diff --git a/src/plugins/console/public/application/components/shortcuts_popover/index.ts b/src/platform/plugins/shared/console/public/application/components/shortcuts_popover/index.ts similarity index 100% rename from src/plugins/console/public/application/components/shortcuts_popover/index.ts rename to src/platform/plugins/shared/console/public/application/components/shortcuts_popover/index.ts diff --git a/src/plugins/console/public/application/components/shortcuts_popover/keys.tsx b/src/platform/plugins/shared/console/public/application/components/shortcuts_popover/keys.tsx similarity index 100% rename from src/plugins/console/public/application/components/shortcuts_popover/keys.tsx rename to src/platform/plugins/shared/console/public/application/components/shortcuts_popover/keys.tsx diff --git a/src/plugins/console/public/application/components/shortcuts_popover/shortcut_line.tsx b/src/platform/plugins/shared/console/public/application/components/shortcuts_popover/shortcut_line.tsx similarity index 100% rename from src/plugins/console/public/application/components/shortcuts_popover/shortcut_line.tsx rename to src/platform/plugins/shared/console/public/application/components/shortcuts_popover/shortcut_line.tsx diff --git a/src/plugins/console/public/application/components/shortcuts_popover/shortcuts_popover.tsx b/src/platform/plugins/shared/console/public/application/components/shortcuts_popover/shortcuts_popover.tsx similarity index 100% rename from src/plugins/console/public/application/components/shortcuts_popover/shortcuts_popover.tsx rename to src/platform/plugins/shared/console/public/application/components/shortcuts_popover/shortcuts_popover.tsx diff --git a/src/plugins/console/public/application/components/something_went_wrong_callout.tsx b/src/platform/plugins/shared/console/public/application/components/something_went_wrong_callout.tsx similarity index 100% rename from src/plugins/console/public/application/components/something_went_wrong_callout.tsx rename to src/platform/plugins/shared/console/public/application/components/something_went_wrong_callout.tsx diff --git a/src/plugins/console/public/application/components/storage_quota_error.tsx b/src/platform/plugins/shared/console/public/application/components/storage_quota_error.tsx similarity index 100% rename from src/plugins/console/public/application/components/storage_quota_error.tsx rename to src/platform/plugins/shared/console/public/application/components/storage_quota_error.tsx diff --git a/src/plugins/console/public/application/components/top_nav_menu.tsx b/src/platform/plugins/shared/console/public/application/components/top_nav_menu.tsx similarity index 100% rename from src/plugins/console/public/application/components/top_nav_menu.tsx rename to src/platform/plugins/shared/console/public/application/components/top_nav_menu.tsx diff --git a/src/plugins/console/public/application/components/variables/index.ts b/src/platform/plugins/shared/console/public/application/components/variables/index.ts similarity index 100% rename from src/plugins/console/public/application/components/variables/index.ts rename to src/platform/plugins/shared/console/public/application/components/variables/index.ts diff --git a/src/plugins/console/public/application/components/variables/types.ts b/src/platform/plugins/shared/console/public/application/components/variables/types.ts similarity index 100% rename from src/plugins/console/public/application/components/variables/types.ts rename to src/platform/plugins/shared/console/public/application/components/variables/types.ts diff --git a/src/plugins/console/public/application/components/variables/utils.test.ts b/src/platform/plugins/shared/console/public/application/components/variables/utils.test.ts similarity index 100% rename from src/plugins/console/public/application/components/variables/utils.test.ts rename to src/platform/plugins/shared/console/public/application/components/variables/utils.test.ts diff --git a/src/plugins/console/public/application/components/variables/utils.ts b/src/platform/plugins/shared/console/public/application/components/variables/utils.ts similarity index 100% rename from src/plugins/console/public/application/components/variables/utils.ts rename to src/platform/plugins/shared/console/public/application/components/variables/utils.ts diff --git a/src/plugins/console/public/application/components/variables/variables_editor.tsx b/src/platform/plugins/shared/console/public/application/components/variables/variables_editor.tsx similarity index 100% rename from src/plugins/console/public/application/components/variables/variables_editor.tsx rename to src/platform/plugins/shared/console/public/application/components/variables/variables_editor.tsx diff --git a/src/plugins/console/public/application/components/variables/variables_editor_form.tsx b/src/platform/plugins/shared/console/public/application/components/variables/variables_editor_form.tsx similarity index 100% rename from src/plugins/console/public/application/components/variables/variables_editor_form.tsx rename to src/platform/plugins/shared/console/public/application/components/variables/variables_editor_form.tsx diff --git a/src/plugins/console/public/application/containers/config/config.tsx b/src/platform/plugins/shared/console/public/application/containers/config/config.tsx similarity index 100% rename from src/plugins/console/public/application/containers/config/config.tsx rename to src/platform/plugins/shared/console/public/application/containers/config/config.tsx diff --git a/src/plugins/console/public/application/containers/config/index.ts b/src/platform/plugins/shared/console/public/application/containers/config/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/config/index.ts rename to src/platform/plugins/shared/console/public/application/containers/config/index.ts diff --git a/src/plugins/console/public/application/containers/config/settings.tsx b/src/platform/plugins/shared/console/public/application/containers/config/settings.tsx similarity index 100% rename from src/plugins/console/public/application/containers/config/settings.tsx rename to src/platform/plugins/shared/console/public/application/containers/config/settings.tsx diff --git a/src/plugins/console/public/application/containers/config/variables.tsx b/src/platform/plugins/shared/console/public/application/containers/config/variables.tsx similarity index 100% rename from src/plugins/console/public/application/containers/config/variables.tsx rename to src/platform/plugins/shared/console/public/application/containers/config/variables.tsx diff --git a/src/plugins/console/public/application/containers/editor/components/context_menu/context_menu.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/context_menu.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/components/context_menu/context_menu.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/context_menu.tsx diff --git a/src/plugins/console/public/application/containers/editor/components/context_menu/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/components/context_menu/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/index.ts diff --git a/src/plugins/console/public/application/containers/editor/components/context_menu/language_selector_modal.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/language_selector_modal.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/components/context_menu/language_selector_modal.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/language_selector_modal.tsx diff --git a/src/plugins/console/public/application/containers/editor/components/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/components/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/components/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/components/index.ts diff --git a/src/plugins/console/public/application/containers/editor/editor.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/editor.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/editor.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/editor.tsx diff --git a/src/plugins/console/public/application/containers/editor/hooks/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/index.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_register_keyboard_commands.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_register_keyboard_commands.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_register_keyboard_commands.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_register_keyboard_commands.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_resize_checker_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_resize_checker_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_resize_checker_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_resize_checker_utils.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_set_initial_value.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_set_initial_value.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_set_initial_value.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_set_initial_value.test.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_set_initial_value.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_set_initial_value.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_set_initial_value.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_set_initial_value.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_setup_autocomplete_polling.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_setup_autocomplete_polling.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_setup_autocomplete_polling.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_setup_autocomplete_polling.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_setup_autosave.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_setup_autosave.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_setup_autosave.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_setup_autosave.ts diff --git a/src/plugins/console/public/application/containers/editor/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/index.ts diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor.tsx diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_actions_provider.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_actions_provider.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_actions_provider.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_actions_provider.test.ts diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_actions_provider.ts b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_actions_provider.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_actions_provider.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_actions_provider.ts diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_output.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_output.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output.tsx diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_suggestion_provider.ts b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_suggestion_provider.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_suggestion_provider.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_suggestion_provider.ts diff --git a/src/plugins/console/public/application/containers/editor/types.ts b/src/platform/plugins/shared/console/public/application/containers/editor/types.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/types.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/types.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/autocomplete_utils.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/autocomplete_utils.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/autocomplete_utils.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/autocomplete_utils.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/autocomplete_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/autocomplete_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/autocomplete_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/autocomplete_utils.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/constants.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/constants.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/constants.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/constants.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/index.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/index.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/response.pbf b/src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/response.pbf similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/response.pbf rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/response.pbf diff --git a/src/plugins/console/public/application/containers/editor/utils/output_data.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/output_data.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/output_data.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/output_data.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/requests_utils.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/requests_utils.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/requests_utils.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/requests_utils.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/requests_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/requests_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/requests_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/requests_utils.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/status_code_decoration_utils.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/status_code_decoration_utils.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/status_code_decoration_utils.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/status_code_decoration_utils.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/status_code_decoration_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/status_code_decoration_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/status_code_decoration_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/status_code_decoration_utils.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/tokens_utils.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/tokens_utils.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/tokens_utils.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/tokens_utils.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/tokens_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/tokens_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/tokens_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/tokens_utils.ts diff --git a/src/plugins/console/public/application/containers/embeddable/_embeddable_console.scss b/src/platform/plugins/shared/console/public/application/containers/embeddable/_embeddable_console.scss similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/_embeddable_console.scss rename to src/platform/plugins/shared/console/public/application/containers/embeddable/_embeddable_console.scss diff --git a/src/plugins/console/public/application/containers/embeddable/_index.scss b/src/platform/plugins/shared/console/public/application/containers/embeddable/_index.scss similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/_index.scss rename to src/platform/plugins/shared/console/public/application/containers/embeddable/_index.scss diff --git a/src/plugins/console/public/application/containers/embeddable/_variables.scss b/src/platform/plugins/shared/console/public/application/containers/embeddable/_variables.scss similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/_variables.scss rename to src/platform/plugins/shared/console/public/application/containers/embeddable/_variables.scss diff --git a/src/plugins/console/public/application/containers/embeddable/console_resize_button.test.ts b/src/platform/plugins/shared/console/public/application/containers/embeddable/console_resize_button.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/console_resize_button.test.ts rename to src/platform/plugins/shared/console/public/application/containers/embeddable/console_resize_button.test.ts diff --git a/src/plugins/console/public/application/containers/embeddable/console_resize_button.tsx b/src/platform/plugins/shared/console/public/application/containers/embeddable/console_resize_button.tsx similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/console_resize_button.tsx rename to src/platform/plugins/shared/console/public/application/containers/embeddable/console_resize_button.tsx diff --git a/src/plugins/console/public/application/containers/embeddable/console_wrapper.tsx b/src/platform/plugins/shared/console/public/application/containers/embeddable/console_wrapper.tsx similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/console_wrapper.tsx rename to src/platform/plugins/shared/console/public/application/containers/embeddable/console_wrapper.tsx diff --git a/src/plugins/console/public/application/containers/embeddable/embeddable_console.tsx b/src/platform/plugins/shared/console/public/application/containers/embeddable/embeddable_console.tsx similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/embeddable_console.tsx rename to src/platform/plugins/shared/console/public/application/containers/embeddable/embeddable_console.tsx diff --git a/src/plugins/console/public/application/containers/embeddable/index.tsx b/src/platform/plugins/shared/console/public/application/containers/embeddable/index.tsx similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/index.tsx rename to src/platform/plugins/shared/console/public/application/containers/embeddable/index.tsx diff --git a/src/plugins/console/public/application/containers/history/history.tsx b/src/platform/plugins/shared/console/public/application/containers/history/history.tsx similarity index 100% rename from src/plugins/console/public/application/containers/history/history.tsx rename to src/platform/plugins/shared/console/public/application/containers/history/history.tsx diff --git a/src/plugins/console/public/application/containers/history/history_empty.tsx b/src/platform/plugins/shared/console/public/application/containers/history/history_empty.tsx similarity index 100% rename from src/plugins/console/public/application/containers/history/history_empty.tsx rename to src/platform/plugins/shared/console/public/application/containers/history/history_empty.tsx diff --git a/src/plugins/console/public/application/containers/history/history_viewer_monaco.tsx b/src/platform/plugins/shared/console/public/application/containers/history/history_viewer_monaco.tsx similarity index 100% rename from src/plugins/console/public/application/containers/history/history_viewer_monaco.tsx rename to src/platform/plugins/shared/console/public/application/containers/history/history_viewer_monaco.tsx diff --git a/src/plugins/console/public/application/containers/history/index.ts b/src/platform/plugins/shared/console/public/application/containers/history/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/history/index.ts rename to src/platform/plugins/shared/console/public/application/containers/history/index.ts diff --git a/src/plugins/console/public/application/containers/index.ts b/src/platform/plugins/shared/console/public/application/containers/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/index.ts rename to src/platform/plugins/shared/console/public/application/containers/index.ts diff --git a/src/plugins/console/public/application/containers/main/constants.ts b/src/platform/plugins/shared/console/public/application/containers/main/constants.ts similarity index 100% rename from src/plugins/console/public/application/containers/main/constants.ts rename to src/platform/plugins/shared/console/public/application/containers/main/constants.ts diff --git a/src/plugins/console/public/application/containers/main/get_console_tour_step_props.tsx b/src/platform/plugins/shared/console/public/application/containers/main/get_console_tour_step_props.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/get_console_tour_step_props.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/get_console_tour_step_props.tsx diff --git a/src/plugins/console/public/application/containers/main/get_top_nav.ts b/src/platform/plugins/shared/console/public/application/containers/main/get_top_nav.ts similarity index 100% rename from src/plugins/console/public/application/containers/main/get_top_nav.ts rename to src/platform/plugins/shared/console/public/application/containers/main/get_top_nav.ts diff --git a/src/plugins/console/public/application/containers/main/get_tour_steps.tsx b/src/platform/plugins/shared/console/public/application/containers/main/get_tour_steps.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/get_tour_steps.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/get_tour_steps.tsx diff --git a/src/plugins/console/public/application/containers/main/i18n.ts b/src/platform/plugins/shared/console/public/application/containers/main/i18n.ts similarity index 100% rename from src/plugins/console/public/application/containers/main/i18n.ts rename to src/platform/plugins/shared/console/public/application/containers/main/i18n.ts diff --git a/src/plugins/console/public/application/containers/main/import_confirm_modal.tsx b/src/platform/plugins/shared/console/public/application/containers/main/import_confirm_modal.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/import_confirm_modal.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/import_confirm_modal.tsx diff --git a/src/plugins/console/public/application/containers/main/index.ts b/src/platform/plugins/shared/console/public/application/containers/main/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/main/index.ts rename to src/platform/plugins/shared/console/public/application/containers/main/index.ts diff --git a/src/plugins/console/public/application/containers/main/main.tsx b/src/platform/plugins/shared/console/public/application/containers/main/main.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/main.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/main.tsx diff --git a/src/plugins/console/public/application/containers/main/nav_icon_button.tsx b/src/platform/plugins/shared/console/public/application/containers/main/nav_icon_button.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/nav_icon_button.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/nav_icon_button.tsx diff --git a/src/plugins/console/public/application/contexts/create_use_context.ts b/src/platform/plugins/shared/console/public/application/contexts/create_use_context.ts similarity index 100% rename from src/plugins/console/public/application/contexts/create_use_context.ts rename to src/platform/plugins/shared/console/public/application/contexts/create_use_context.ts diff --git a/src/plugins/console/public/application/contexts/editor_context/editor_context.tsx b/src/platform/plugins/shared/console/public/application/contexts/editor_context/editor_context.tsx similarity index 100% rename from src/plugins/console/public/application/contexts/editor_context/editor_context.tsx rename to src/platform/plugins/shared/console/public/application/contexts/editor_context/editor_context.tsx diff --git a/src/plugins/console/public/application/contexts/editor_context/editor_registry.ts b/src/platform/plugins/shared/console/public/application/contexts/editor_context/editor_registry.ts similarity index 100% rename from src/plugins/console/public/application/contexts/editor_context/editor_registry.ts rename to src/platform/plugins/shared/console/public/application/contexts/editor_context/editor_registry.ts diff --git a/src/plugins/console/public/application/contexts/editor_context/index.ts b/src/platform/plugins/shared/console/public/application/contexts/editor_context/index.ts similarity index 100% rename from src/plugins/console/public/application/contexts/editor_context/index.ts rename to src/platform/plugins/shared/console/public/application/contexts/editor_context/index.ts diff --git a/src/plugins/console/public/application/contexts/index.ts b/src/platform/plugins/shared/console/public/application/contexts/index.ts similarity index 100% rename from src/plugins/console/public/application/contexts/index.ts rename to src/platform/plugins/shared/console/public/application/contexts/index.ts diff --git a/src/plugins/console/public/application/contexts/request_context.tsx b/src/platform/plugins/shared/console/public/application/contexts/request_context.tsx similarity index 100% rename from src/plugins/console/public/application/contexts/request_context.tsx rename to src/platform/plugins/shared/console/public/application/contexts/request_context.tsx diff --git a/src/plugins/console/public/application/contexts/services_context.mock.ts b/src/platform/plugins/shared/console/public/application/contexts/services_context.mock.ts similarity index 100% rename from src/plugins/console/public/application/contexts/services_context.mock.ts rename to src/platform/plugins/shared/console/public/application/contexts/services_context.mock.ts diff --git a/src/plugins/console/public/application/contexts/services_context.tsx b/src/platform/plugins/shared/console/public/application/contexts/services_context.tsx similarity index 100% rename from src/plugins/console/public/application/contexts/services_context.tsx rename to src/platform/plugins/shared/console/public/application/contexts/services_context.tsx diff --git a/src/plugins/console/public/application/factories/index.ts b/src/platform/plugins/shared/console/public/application/factories/index.ts similarity index 100% rename from src/plugins/console/public/application/factories/index.ts rename to src/platform/plugins/shared/console/public/application/factories/index.ts diff --git a/src/plugins/console/public/application/factories/token_iterator.ts b/src/platform/plugins/shared/console/public/application/factories/token_iterator.ts similarity index 100% rename from src/plugins/console/public/application/factories/token_iterator.ts rename to src/platform/plugins/shared/console/public/application/factories/token_iterator.ts diff --git a/src/plugins/console/public/application/hooks/README.md b/src/platform/plugins/shared/console/public/application/hooks/README.md similarity index 100% rename from src/plugins/console/public/application/hooks/README.md rename to src/platform/plugins/shared/console/public/application/hooks/README.md diff --git a/src/plugins/console/public/application/hooks/index.ts b/src/platform/plugins/shared/console/public/application/hooks/index.ts similarity index 100% rename from src/plugins/console/public/application/hooks/index.ts rename to src/platform/plugins/shared/console/public/application/hooks/index.ts diff --git a/src/plugins/console/public/application/hooks/use_data_init/data_migration.ts b/src/platform/plugins/shared/console/public/application/hooks/use_data_init/data_migration.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_data_init/data_migration.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_data_init/data_migration.ts diff --git a/src/plugins/console/public/application/hooks/use_data_init/index.ts b/src/platform/plugins/shared/console/public/application/hooks/use_data_init/index.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_data_init/index.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_data_init/index.ts diff --git a/src/plugins/console/public/application/hooks/use_data_init/use_data_init.ts b/src/platform/plugins/shared/console/public/application/hooks/use_data_init/use_data_init.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_data_init/use_data_init.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_data_init/use_data_init.ts diff --git a/src/plugins/console/public/application/hooks/use_save_current_text_object.ts b/src/platform/plugins/shared/console/public/application/hooks/use_save_current_text_object.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_save_current_text_object.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_save_current_text_object.ts diff --git a/src/plugins/console/public/application/hooks/use_send_current_request/index.ts b/src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/index.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_send_current_request/index.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/index.ts diff --git a/src/plugins/console/public/application/hooks/use_send_current_request/send_request.test.ts b/src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/send_request.test.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_send_current_request/send_request.test.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/send_request.test.ts diff --git a/src/plugins/console/public/application/hooks/use_send_current_request/send_request.ts b/src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/send_request.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_send_current_request/send_request.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/send_request.ts diff --git a/src/plugins/console/public/application/hooks/use_set_input_editor.ts b/src/platform/plugins/shared/console/public/application/hooks/use_set_input_editor.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_set_input_editor.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_set_input_editor.ts diff --git a/src/plugins/console/public/application/index.tsx b/src/platform/plugins/shared/console/public/application/index.tsx similarity index 100% rename from src/plugins/console/public/application/index.tsx rename to src/platform/plugins/shared/console/public/application/index.tsx diff --git a/src/plugins/console/public/application/lib/api.ts b/src/platform/plugins/shared/console/public/application/lib/api.ts similarity index 100% rename from src/plugins/console/public/application/lib/api.ts rename to src/platform/plugins/shared/console/public/application/lib/api.ts diff --git a/src/plugins/console/public/application/lib/es_host_service.ts b/src/platform/plugins/shared/console/public/application/lib/es_host_service.ts similarity index 100% rename from src/plugins/console/public/application/lib/es_host_service.ts rename to src/platform/plugins/shared/console/public/application/lib/es_host_service.ts diff --git a/src/plugins/console/public/application/lib/format_request.ts b/src/platform/plugins/shared/console/public/application/lib/format_request.ts similarity index 100% rename from src/plugins/console/public/application/lib/format_request.ts rename to src/platform/plugins/shared/console/public/application/lib/format_request.ts diff --git a/src/plugins/console/public/application/lib/index.ts b/src/platform/plugins/shared/console/public/application/lib/index.ts similarity index 100% rename from src/plugins/console/public/application/lib/index.ts rename to src/platform/plugins/shared/console/public/application/lib/index.ts diff --git a/src/plugins/console/public/application/lib/load_from.test.ts b/src/platform/plugins/shared/console/public/application/lib/load_from.test.ts similarity index 100% rename from src/plugins/console/public/application/lib/load_from.test.ts rename to src/platform/plugins/shared/console/public/application/lib/load_from.test.ts diff --git a/src/plugins/console/public/application/lib/load_from.ts b/src/platform/plugins/shared/console/public/application/lib/load_from.ts similarity index 100% rename from src/plugins/console/public/application/lib/load_from.ts rename to src/platform/plugins/shared/console/public/application/lib/load_from.ts diff --git a/src/plugins/console/public/application/logo.svg b/src/platform/plugins/shared/console/public/application/logo.svg similarity index 100% rename from src/plugins/console/public/application/logo.svg rename to src/platform/plugins/shared/console/public/application/logo.svg diff --git a/src/plugins/console/public/application/stores/editor.ts b/src/platform/plugins/shared/console/public/application/stores/editor.ts similarity index 100% rename from src/plugins/console/public/application/stores/editor.ts rename to src/platform/plugins/shared/console/public/application/stores/editor.ts diff --git a/src/plugins/console/public/application/stores/embeddable_console.ts b/src/platform/plugins/shared/console/public/application/stores/embeddable_console.ts similarity index 100% rename from src/plugins/console/public/application/stores/embeddable_console.ts rename to src/platform/plugins/shared/console/public/application/stores/embeddable_console.ts diff --git a/src/plugins/console/public/application/stores/request.ts b/src/platform/plugins/shared/console/public/application/stores/request.ts similarity index 100% rename from src/plugins/console/public/application/stores/request.ts rename to src/platform/plugins/shared/console/public/application/stores/request.ts diff --git a/src/plugins/console/public/index.scss b/src/platform/plugins/shared/console/public/index.scss similarity index 100% rename from src/plugins/console/public/index.scss rename to src/platform/plugins/shared/console/public/index.scss diff --git a/src/plugins/console/public/index.ts b/src/platform/plugins/shared/console/public/index.ts similarity index 100% rename from src/plugins/console/public/index.ts rename to src/platform/plugins/shared/console/public/index.ts diff --git a/src/plugins/console/public/lib/autocomplete/body_completer.js b/src/platform/plugins/shared/console/public/lib/autocomplete/body_completer.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/body_completer.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/body_completer.js diff --git a/src/plugins/console/public/lib/autocomplete/components/accept_endpoint_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/accept_endpoint_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/accept_endpoint_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/accept_endpoint_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/component_template_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/component_template_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/component_template_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/component_template_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/conditional_proxy.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/conditional_proxy.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/conditional_proxy.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/conditional_proxy.js diff --git a/src/plugins/console/public/lib/autocomplete/components/constant_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/constant_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/constant_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/constant_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/data_stream_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/data_stream_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/data_stream_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/data_stream_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/field_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/field_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/field_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/field_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/full_request_component.ts b/src/platform/plugins/shared/console/public/lib/autocomplete/components/full_request_component.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/full_request_component.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/full_request_component.ts diff --git a/src/plugins/console/public/lib/autocomplete/components/global_only_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/global_only_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/global_only_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/global_only_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/index.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/index.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/index.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/index.js diff --git a/src/plugins/console/public/lib/autocomplete/components/index_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/index_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/index_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/index_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/index_template_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/index_template_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/index_template_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/index_template_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/legacy/index.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/legacy/index.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/legacy/index.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/legacy/index.js diff --git a/src/plugins/console/public/lib/autocomplete/components/legacy/legacy_template_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/legacy/legacy_template_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/legacy/legacy_template_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/legacy/legacy_template_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/list_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/list_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/list_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/list_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/object_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/object_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/object_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/object_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/shared_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/shared_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/shared_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/shared_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/simple_param_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/simple_param_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/simple_param_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/simple_param_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/url_pattern_matcher.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/url_pattern_matcher.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/url_pattern_matcher.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/url_pattern_matcher.js diff --git a/src/plugins/console/public/lib/autocomplete/engine.js b/src/platform/plugins/shared/console/public/lib/autocomplete/engine.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/engine.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/engine.js diff --git a/src/plugins/console/public/lib/autocomplete/types.ts b/src/platform/plugins/shared/console/public/lib/autocomplete/types.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete/types.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete/types.ts diff --git a/src/plugins/console/public/lib/autocomplete/url_autocomplete.test.js b/src/platform/plugins/shared/console/public/lib/autocomplete/url_autocomplete.test.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/url_autocomplete.test.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/url_autocomplete.test.js diff --git a/src/plugins/console/public/lib/autocomplete/url_params.js b/src/platform/plugins/shared/console/public/lib/autocomplete/url_params.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/url_params.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/url_params.js diff --git a/src/plugins/console/public/lib/autocomplete/url_params.test.js b/src/platform/plugins/shared/console/public/lib/autocomplete/url_params.test.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/url_params.test.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/url_params.test.js diff --git a/src/plugins/console/public/lib/autocomplete_entities/alias.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/alias.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/alias.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/alias.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/autocomplete_entities.test.js b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/autocomplete_entities.test.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/autocomplete_entities.test.js rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/autocomplete_entities.test.js diff --git a/src/plugins/console/public/lib/autocomplete_entities/base_template.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/base_template.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/base_template.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/base_template.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/component_template.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/component_template.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/component_template.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/component_template.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/data_stream.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/data_stream.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/data_stream.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/data_stream.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/expand_aliases.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/expand_aliases.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/expand_aliases.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/expand_aliases.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/index.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/index.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/index.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/index.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/index_template.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/index_template.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/index_template.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/index_template.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/legacy/index.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/legacy/index.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/legacy/index.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/legacy/index.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/legacy/legacy_template.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/legacy/legacy_template.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/legacy/legacy_template.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/legacy/legacy_template.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/mapping.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/mapping.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/mapping.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/mapping.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/types.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/types.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/types.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/types.ts diff --git a/src/plugins/console/public/lib/es/content_type.test.js b/src/platform/plugins/shared/console/public/lib/es/content_type.test.js similarity index 100% rename from src/plugins/console/public/lib/es/content_type.test.js rename to src/platform/plugins/shared/console/public/lib/es/content_type.test.js diff --git a/src/plugins/console/public/lib/es/es.ts b/src/platform/plugins/shared/console/public/lib/es/es.ts similarity index 100% rename from src/plugins/console/public/lib/es/es.ts rename to src/platform/plugins/shared/console/public/lib/es/es.ts diff --git a/src/plugins/console/public/lib/es/index.ts b/src/platform/plugins/shared/console/public/lib/es/index.ts similarity index 100% rename from src/plugins/console/public/lib/es/index.ts rename to src/platform/plugins/shared/console/public/lib/es/index.ts diff --git a/src/plugins/console/public/lib/kb/api.js b/src/platform/plugins/shared/console/public/lib/kb/api.js similarity index 100% rename from src/plugins/console/public/lib/kb/api.js rename to src/platform/plugins/shared/console/public/lib/kb/api.js diff --git a/src/plugins/console/public/lib/kb/index.js b/src/platform/plugins/shared/console/public/lib/kb/index.js similarity index 100% rename from src/plugins/console/public/lib/kb/index.js rename to src/platform/plugins/shared/console/public/lib/kb/index.js diff --git a/src/plugins/console/public/lib/kb/kb.js b/src/platform/plugins/shared/console/public/lib/kb/kb.js similarity index 100% rename from src/plugins/console/public/lib/kb/kb.js rename to src/platform/plugins/shared/console/public/lib/kb/kb.js diff --git a/src/plugins/console/public/lib/kb/kb.test.js b/src/platform/plugins/shared/console/public/lib/kb/kb.test.js similarity index 100% rename from src/plugins/console/public/lib/kb/kb.test.js rename to src/platform/plugins/shared/console/public/lib/kb/kb.test.js diff --git a/src/plugins/console/public/lib/local_storage_object_client/create.ts b/src/platform/plugins/shared/console/public/lib/local_storage_object_client/create.ts similarity index 100% rename from src/plugins/console/public/lib/local_storage_object_client/create.ts rename to src/platform/plugins/shared/console/public/lib/local_storage_object_client/create.ts diff --git a/src/plugins/console/public/lib/local_storage_object_client/index.ts b/src/platform/plugins/shared/console/public/lib/local_storage_object_client/index.ts similarity index 100% rename from src/plugins/console/public/lib/local_storage_object_client/index.ts rename to src/platform/plugins/shared/console/public/lib/local_storage_object_client/index.ts diff --git a/src/plugins/console/public/lib/local_storage_object_client/local_storage_object_client.ts b/src/platform/plugins/shared/console/public/lib/local_storage_object_client/local_storage_object_client.ts similarity index 100% rename from src/plugins/console/public/lib/local_storage_object_client/local_storage_object_client.ts rename to src/platform/plugins/shared/console/public/lib/local_storage_object_client/local_storage_object_client.ts diff --git a/src/plugins/console/public/lib/token_iterator/index.ts b/src/platform/plugins/shared/console/public/lib/token_iterator/index.ts similarity index 100% rename from src/plugins/console/public/lib/token_iterator/index.ts rename to src/platform/plugins/shared/console/public/lib/token_iterator/index.ts diff --git a/src/plugins/console/public/lib/token_iterator/token_iterator.test.ts b/src/platform/plugins/shared/console/public/lib/token_iterator/token_iterator.test.ts similarity index 100% rename from src/plugins/console/public/lib/token_iterator/token_iterator.test.ts rename to src/platform/plugins/shared/console/public/lib/token_iterator/token_iterator.test.ts diff --git a/src/plugins/console/public/lib/token_iterator/token_iterator.ts b/src/platform/plugins/shared/console/public/lib/token_iterator/token_iterator.ts similarity index 100% rename from src/plugins/console/public/lib/token_iterator/token_iterator.ts rename to src/platform/plugins/shared/console/public/lib/token_iterator/token_iterator.ts diff --git a/src/plugins/console/public/lib/utils/index.ts b/src/platform/plugins/shared/console/public/lib/utils/index.ts similarity index 100% rename from src/plugins/console/public/lib/utils/index.ts rename to src/platform/plugins/shared/console/public/lib/utils/index.ts diff --git a/src/plugins/console/public/lib/utils/utils.test.js b/src/platform/plugins/shared/console/public/lib/utils/utils.test.js similarity index 100% rename from src/plugins/console/public/lib/utils/utils.test.js rename to src/platform/plugins/shared/console/public/lib/utils/utils.test.js diff --git a/src/plugins/console/public/plugin.ts b/src/platform/plugins/shared/console/public/plugin.ts similarity index 100% rename from src/plugins/console/public/plugin.ts rename to src/platform/plugins/shared/console/public/plugin.ts diff --git a/src/plugins/console/public/services/api.ts b/src/platform/plugins/shared/console/public/services/api.ts similarity index 100% rename from src/plugins/console/public/services/api.ts rename to src/platform/plugins/shared/console/public/services/api.ts diff --git a/src/plugins/console/public/services/autocomplete.mock.ts b/src/platform/plugins/shared/console/public/services/autocomplete.mock.ts similarity index 100% rename from src/plugins/console/public/services/autocomplete.mock.ts rename to src/platform/plugins/shared/console/public/services/autocomplete.mock.ts diff --git a/src/plugins/console/public/services/autocomplete.ts b/src/platform/plugins/shared/console/public/services/autocomplete.ts similarity index 100% rename from src/plugins/console/public/services/autocomplete.ts rename to src/platform/plugins/shared/console/public/services/autocomplete.ts diff --git a/src/plugins/console/public/services/embeddable_console.test.ts b/src/platform/plugins/shared/console/public/services/embeddable_console.test.ts similarity index 100% rename from src/plugins/console/public/services/embeddable_console.test.ts rename to src/platform/plugins/shared/console/public/services/embeddable_console.test.ts diff --git a/src/plugins/console/public/services/embeddable_console.ts b/src/platform/plugins/shared/console/public/services/embeddable_console.ts similarity index 100% rename from src/plugins/console/public/services/embeddable_console.ts rename to src/platform/plugins/shared/console/public/services/embeddable_console.ts diff --git a/src/plugins/console/public/services/history.mock.ts b/src/platform/plugins/shared/console/public/services/history.mock.ts similarity index 100% rename from src/plugins/console/public/services/history.mock.ts rename to src/platform/plugins/shared/console/public/services/history.mock.ts diff --git a/src/plugins/console/public/services/history.ts b/src/platform/plugins/shared/console/public/services/history.ts similarity index 100% rename from src/plugins/console/public/services/history.ts rename to src/platform/plugins/shared/console/public/services/history.ts diff --git a/src/plugins/console/public/services/http.ts b/src/platform/plugins/shared/console/public/services/http.ts similarity index 100% rename from src/plugins/console/public/services/http.ts rename to src/platform/plugins/shared/console/public/services/http.ts diff --git a/src/plugins/console/public/services/index.ts b/src/platform/plugins/shared/console/public/services/index.ts similarity index 100% rename from src/plugins/console/public/services/index.ts rename to src/platform/plugins/shared/console/public/services/index.ts diff --git a/src/plugins/console/public/services/settings.mock.ts b/src/platform/plugins/shared/console/public/services/settings.mock.ts similarity index 100% rename from src/plugins/console/public/services/settings.mock.ts rename to src/platform/plugins/shared/console/public/services/settings.mock.ts diff --git a/src/plugins/console/public/services/settings.ts b/src/platform/plugins/shared/console/public/services/settings.ts similarity index 100% rename from src/plugins/console/public/services/settings.ts rename to src/platform/plugins/shared/console/public/services/settings.ts diff --git a/src/plugins/console/public/services/storage.mock.ts b/src/platform/plugins/shared/console/public/services/storage.mock.ts similarity index 100% rename from src/plugins/console/public/services/storage.mock.ts rename to src/platform/plugins/shared/console/public/services/storage.mock.ts diff --git a/src/plugins/console/public/services/storage.ts b/src/platform/plugins/shared/console/public/services/storage.ts similarity index 100% rename from src/plugins/console/public/services/storage.ts rename to src/platform/plugins/shared/console/public/services/storage.ts diff --git a/src/plugins/console/public/services/tracker.ts b/src/platform/plugins/shared/console/public/services/tracker.ts similarity index 100% rename from src/plugins/console/public/services/tracker.ts rename to src/platform/plugins/shared/console/public/services/tracker.ts diff --git a/src/plugins/console/public/services/use_request.ts b/src/platform/plugins/shared/console/public/services/use_request.ts similarity index 100% rename from src/plugins/console/public/services/use_request.ts rename to src/platform/plugins/shared/console/public/services/use_request.ts diff --git a/src/plugins/console/public/shared_imports.ts b/src/platform/plugins/shared/console/public/shared_imports.ts similarity index 100% rename from src/plugins/console/public/shared_imports.ts rename to src/platform/plugins/shared/console/public/shared_imports.ts diff --git a/src/plugins/console/public/styles/_app.scss b/src/platform/plugins/shared/console/public/styles/_app.scss similarity index 100% rename from src/plugins/console/public/styles/_app.scss rename to src/platform/plugins/shared/console/public/styles/_app.scss diff --git a/src/plugins/console/public/styles/_index.scss b/src/platform/plugins/shared/console/public/styles/_index.scss similarity index 100% rename from src/plugins/console/public/styles/_index.scss rename to src/platform/plugins/shared/console/public/styles/_index.scss diff --git a/src/plugins/console/public/styles/components/_history.scss b/src/platform/plugins/shared/console/public/styles/components/_history.scss similarity index 100% rename from src/plugins/console/public/styles/components/_history.scss rename to src/platform/plugins/shared/console/public/styles/components/_history.scss diff --git a/src/plugins/console/public/styles/components/_index.scss b/src/platform/plugins/shared/console/public/styles/components/_index.scss similarity index 100% rename from src/plugins/console/public/styles/components/_index.scss rename to src/platform/plugins/shared/console/public/styles/components/_index.scss diff --git a/src/plugins/console/public/types/common.ts b/src/platform/plugins/shared/console/public/types/common.ts similarity index 100% rename from src/plugins/console/public/types/common.ts rename to src/platform/plugins/shared/console/public/types/common.ts diff --git a/src/plugins/console/public/types/config.ts b/src/platform/plugins/shared/console/public/types/config.ts similarity index 100% rename from src/plugins/console/public/types/config.ts rename to src/platform/plugins/shared/console/public/types/config.ts diff --git a/src/plugins/console/public/types/core_editor.ts b/src/platform/plugins/shared/console/public/types/core_editor.ts similarity index 100% rename from src/plugins/console/public/types/core_editor.ts rename to src/platform/plugins/shared/console/public/types/core_editor.ts diff --git a/src/plugins/console/public/types/embeddable_console.ts b/src/platform/plugins/shared/console/public/types/embeddable_console.ts similarity index 100% rename from src/plugins/console/public/types/embeddable_console.ts rename to src/platform/plugins/shared/console/public/types/embeddable_console.ts diff --git a/src/plugins/console/public/types/index.ts b/src/platform/plugins/shared/console/public/types/index.ts similarity index 100% rename from src/plugins/console/public/types/index.ts rename to src/platform/plugins/shared/console/public/types/index.ts diff --git a/src/plugins/console/public/types/locator.ts b/src/platform/plugins/shared/console/public/types/locator.ts similarity index 100% rename from src/plugins/console/public/types/locator.ts rename to src/platform/plugins/shared/console/public/types/locator.ts diff --git a/src/plugins/console/public/types/plugin_dependencies.ts b/src/platform/plugins/shared/console/public/types/plugin_dependencies.ts similarity index 100% rename from src/plugins/console/public/types/plugin_dependencies.ts rename to src/platform/plugins/shared/console/public/types/plugin_dependencies.ts diff --git a/src/plugins/console/public/types/token.ts b/src/platform/plugins/shared/console/public/types/token.ts similarity index 100% rename from src/plugins/console/public/types/token.ts rename to src/platform/plugins/shared/console/public/types/token.ts diff --git a/src/plugins/console/public/types/tokens_provider.ts b/src/platform/plugins/shared/console/public/types/tokens_provider.ts similarity index 100% rename from src/plugins/console/public/types/tokens_provider.ts rename to src/platform/plugins/shared/console/public/types/tokens_provider.ts diff --git a/src/plugins/console/server/config.ts b/src/platform/plugins/shared/console/server/config.ts similarity index 100% rename from src/plugins/console/server/config.ts rename to src/platform/plugins/shared/console/server/config.ts diff --git a/src/plugins/console/server/index.ts b/src/platform/plugins/shared/console/server/index.ts similarity index 100% rename from src/plugins/console/server/index.ts rename to src/platform/plugins/shared/console/server/index.ts diff --git a/src/plugins/console/server/lib/elasticsearch_proxy_config.test.js b/src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.test.js similarity index 99% rename from src/plugins/console/server/lib/elasticsearch_proxy_config.test.js rename to src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.test.js index 0cca5f4bfc0da..70729147fd0b8 100644 --- a/src/plugins/console/server/lib/elasticsearch_proxy_config.test.js +++ b/src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.test.js @@ -20,7 +20,7 @@ const getDefaultElasticsearchConfig = () => { }; }; -describe('plugins/console', function () { +describe('platform/plugins/shared/console', function () { describe('#getElasticsearchProxyConfig', function () { it('sets timeout', function () { const value = 1000; diff --git a/src/plugins/console/server/lib/elasticsearch_proxy_config.ts b/src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.ts similarity index 100% rename from src/plugins/console/server/lib/elasticsearch_proxy_config.ts rename to src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.ts diff --git a/src/plugins/console/server/lib/index.ts b/src/platform/plugins/shared/console/server/lib/index.ts similarity index 100% rename from src/plugins/console/server/lib/index.ts rename to src/platform/plugins/shared/console/server/lib/index.ts diff --git a/src/plugins/console/server/lib/proxy_config.test.js b/src/platform/plugins/shared/console/server/lib/proxy_config.test.js similarity index 100% rename from src/plugins/console/server/lib/proxy_config.test.js rename to src/platform/plugins/shared/console/server/lib/proxy_config.test.js diff --git a/src/plugins/console/server/lib/proxy_config.ts b/src/platform/plugins/shared/console/server/lib/proxy_config.ts similarity index 100% rename from src/plugins/console/server/lib/proxy_config.ts rename to src/platform/plugins/shared/console/server/lib/proxy_config.ts diff --git a/src/plugins/console/server/lib/proxy_config_collection.test.js b/src/platform/plugins/shared/console/server/lib/proxy_config_collection.test.js similarity index 100% rename from src/plugins/console/server/lib/proxy_config_collection.test.js rename to src/platform/plugins/shared/console/server/lib/proxy_config_collection.test.js diff --git a/src/plugins/console/server/lib/proxy_config_collection.ts b/src/platform/plugins/shared/console/server/lib/proxy_config_collection.ts similarity index 100% rename from src/plugins/console/server/lib/proxy_config_collection.ts rename to src/platform/plugins/shared/console/server/lib/proxy_config_collection.ts diff --git a/src/plugins/console/server/lib/proxy_request.test.ts b/src/platform/plugins/shared/console/server/lib/proxy_request.test.ts similarity index 100% rename from src/plugins/console/server/lib/proxy_request.test.ts rename to src/platform/plugins/shared/console/server/lib/proxy_request.test.ts diff --git a/src/plugins/console/server/lib/proxy_request.ts b/src/platform/plugins/shared/console/server/lib/proxy_request.ts similarity index 100% rename from src/plugins/console/server/lib/proxy_request.ts rename to src/platform/plugins/shared/console/server/lib/proxy_request.ts diff --git a/src/plugins/console/server/lib/set_headers.test.js b/src/platform/plugins/shared/console/server/lib/set_headers.test.js similarity index 100% rename from src/plugins/console/server/lib/set_headers.test.js rename to src/platform/plugins/shared/console/server/lib/set_headers.test.js diff --git a/src/plugins/console/server/lib/set_headers.ts b/src/platform/plugins/shared/console/server/lib/set_headers.ts similarity index 100% rename from src/plugins/console/server/lib/set_headers.ts rename to src/platform/plugins/shared/console/server/lib/set_headers.ts diff --git a/src/plugins/console/server/lib/spec_definitions/index.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/index.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/index.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/index.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/aggregations.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/aggregations.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/aggregations.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/aggregations.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/aliases.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/aliases.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/aliases.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/aliases.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/document.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/document.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/document.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/document.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/filter.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/filter.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/filter.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/filter.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/globals.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/globals.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/globals.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/globals.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/index.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/index.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/index.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/index.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/ingest.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/ingest.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/ingest.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/ingest.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/mappings.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/mappings.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/mappings.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/mappings.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/query/dsl.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/dsl.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/query/dsl.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/dsl.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/query/index.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/index.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/query/index.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/index.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/query/templates.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/templates.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/query/templates.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/templates.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/reindex.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/reindex.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/reindex.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/reindex.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/search.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/search.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/search.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/search.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/settings.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/settings.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/settings.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/settings.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/shared.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/shared.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/shared.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/shared.ts diff --git a/src/platform/plugins/shared/console/server/lib/spec_definitions/json/README.md b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/README.md new file mode 100644 index 0000000000000..9c7a777b370b4 --- /dev/null +++ b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/README.md @@ -0,0 +1 @@ +Please refer to this [README](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/README.md#creating-definitions) file before adding/editing definitions files in this folder. \ No newline at end of file diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_nodes.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_nodes.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_nodes.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_nodes.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.get_desired_balance.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.get_desired_balance.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.get_desired_balance.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.get_desired_balance.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.get_desired_nodes.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.get_desired_nodes.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.get_desired_nodes.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.get_desired_nodes.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.prevalidate_node_removal.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.prevalidate_node_removal.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.prevalidate_node_removal.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.prevalidate_node_removal.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.update_desired_nodes.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.update_desired_nodes.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.update_desired_nodes.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.update_desired_nodes.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/async_search.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/async_search.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/async_search.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/async_search.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/async_search.status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/async_search.status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/async_search.submit.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.submit.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/async_search.submit.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.submit.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.delete_autoscaling_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.delete_autoscaling_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.delete_autoscaling_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.delete_autoscaling_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_capacity.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_capacity.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_capacity.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_capacity.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.put_autoscaling_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.put_autoscaling_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.put_autoscaling_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.put_autoscaling_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/bulk.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/bulk.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/bulk.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/bulk.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/capabilities.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/capabilities.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/capabilities.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/capabilities.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.aliases.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.aliases.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.aliases.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.aliases.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.allocation.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.allocation.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.allocation.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.allocation.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.component_templates.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.component_templates.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.component_templates.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.component_templates.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.count.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.count.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.count.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.count.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.fielddata.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.fielddata.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.fielddata.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.fielddata.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.health.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.health.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.health.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.health.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.help.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.help.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.help.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.help.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.indices.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.indices.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.indices.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.indices.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.master.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.master.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.master.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.master.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_datafeeds.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_datafeeds.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_datafeeds.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_datafeeds.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_jobs.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_jobs.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_jobs.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_jobs.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_trained_models.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_trained_models.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_trained_models.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_trained_models.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.nodeattrs.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.nodeattrs.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.nodeattrs.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.nodeattrs.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.nodes.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.nodes.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.nodes.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.nodes.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.pending_tasks.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.pending_tasks.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.pending_tasks.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.pending_tasks.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.plugins.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.plugins.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.plugins.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.plugins.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.recovery.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.recovery.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.recovery.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.recovery.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.repositories.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.repositories.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.repositories.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.repositories.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.segments.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.segments.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.segments.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.segments.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.shards.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.shards.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.shards.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.shards.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.snapshots.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.snapshots.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.snapshots.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.snapshots.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.tasks.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.tasks.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.tasks.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.tasks.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.templates.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.templates.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.templates.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.templates.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.thread_pool.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.thread_pool.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.thread_pool.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.thread_pool.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.transforms.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.transforms.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.transforms.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.transforms.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.delete_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.delete_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.delete_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.delete_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow_info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow_info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow_info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow_info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.forget_follower.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.forget_follower.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.forget_follower.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.forget_follower.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.get_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.get_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.get_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.get_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.pause_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.pause_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.pause_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.pause_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.pause_follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.pause_follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.pause_follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.pause_follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.put_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.put_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.put_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.put_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.resume_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.resume_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.resume_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.resume_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.resume_follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.resume_follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.resume_follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.resume_follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.unfollow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.unfollow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.unfollow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.unfollow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/clear_scroll.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/clear_scroll.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/clear_scroll.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/clear_scroll.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/close_point_in_time.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/close_point_in_time.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/close_point_in_time.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/close_point_in_time.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.allocation_explain.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.allocation_explain.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.allocation_explain.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.allocation_explain.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.delete_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.delete_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.delete_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.delete_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.delete_voting_config_exclusions.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.delete_voting_config_exclusions.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.delete_voting_config_exclusions.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.delete_voting_config_exclusions.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.exists_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.exists_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.exists_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.exists_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.get_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.get_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.get_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.get_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.get_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.get_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.get_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.get_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.health.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.health.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.health.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.health.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.pending_tasks.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.pending_tasks.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.pending_tasks.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.pending_tasks.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.post_voting_config_exclusions.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.post_voting_config_exclusions.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.post_voting_config_exclusions.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.post_voting_config_exclusions.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.put_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.put_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.put_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.put_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.put_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.put_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.put_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.put_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.remote_info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.remote_info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.remote_info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.remote_info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.reroute.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.reroute.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.reroute.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.reroute.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.state.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.state.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.state.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.state.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.check_in.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.check_in.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.check_in.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.check_in.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.last_sync.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.last_sync.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.last_sync.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.last_sync.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.list.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.list.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.list.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.list.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_cancel.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_cancel.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_cancel.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_cancel.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_check_in.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_check_in.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_check_in.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_check_in.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_claim.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_claim.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_claim.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_claim.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_error.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_error.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_error.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_error.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_list.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_list.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_list.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_list.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_update_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_update_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_update_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_update_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_active_filtering.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_active_filtering.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_active_filtering.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_active_filtering.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_api_key_id.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_api_key_id.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_api_key_id.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_api_key_id.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_configuration.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_configuration.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_configuration.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_configuration.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_error.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_error.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_error.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_error.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_features.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_features.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_features.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_features.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_filtering.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_filtering.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_filtering.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_filtering.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_filtering_validation.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_filtering_validation.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_filtering_validation.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_filtering_validation.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_index_name.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_index_name.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_index_name.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_index_name.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_name.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_name.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_name.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_name.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_native.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_native.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_native.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_native.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_scheduling.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_scheduling.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_scheduling.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_scheduling.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_service_type.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_service_type.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_service_type.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_service_type.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/count.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/count.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/count.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/count.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.delete_dangling_index.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.delete_dangling_index.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.delete_dangling_index.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.delete_dangling_index.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.import_dangling_index.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.import_dangling_index.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.import_dangling_index.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.import_dangling_index.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.list_dangling_indices.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.list_dangling_indices.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.list_dangling_indices.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.list_dangling_indices.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/delete_by_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_by_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/delete_by_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_by_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/delete_by_query_rethrottle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_by_query_rethrottle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/delete_by_query_rethrottle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_by_query_rethrottle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/delete_script.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_script.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/delete_script.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_script.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.delete_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.delete_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.delete_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.delete_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.execute_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.execute_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.execute_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.execute_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.get_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.get_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.get_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.get_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.put_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.put_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.put_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.put_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/eql.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/eql.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/eql.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/eql.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/eql.get_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.get_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/eql.get_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.get_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/eql.search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/eql.search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/esql.async_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.async_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/esql.async_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.async_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/esql.async_query_get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.async_query_get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/esql.async_query_get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.async_query_get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/esql.query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/esql.query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/exists.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/exists.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/exists.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/exists.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/exists_source.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/exists_source.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/exists_source.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/exists_source.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/explain.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/explain.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/explain.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/explain.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/features.get_features.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/features.get_features.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/features.get_features.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/features.get_features.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/features.reset_features.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/features.reset_features.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/features.reset_features.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/features.reset_features.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/field_caps.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/field_caps.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/field_caps.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/field_caps.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.delete_secret.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.delete_secret.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.delete_secret.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.delete_secret.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.get_secret.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.get_secret.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.get_secret.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.get_secret.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.global_checkpoints.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.global_checkpoints.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.global_checkpoints.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.global_checkpoints.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.msearch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.msearch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.msearch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.msearch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.post_secret.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.post_secret.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.post_secret.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.post_secret.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get_script.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get_script.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get_script_context.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script_context.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get_script_context.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script_context.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get_script_languages.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script_languages.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get_script_languages.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script_languages.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get_source.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_source.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get_source.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_source.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/graph.explore.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/graph.explore.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/graph.explore.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/graph.explore.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/health_report.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/health_report.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/health_report.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/health_report.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.delete_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.delete_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.delete_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.delete_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.explain_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.explain_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.explain_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.explain_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.get_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.get_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.get_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.get_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.get_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.get_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.get_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.get_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.migrate_to_data_tiers.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.migrate_to_data_tiers.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.migrate_to_data_tiers.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.migrate_to_data_tiers.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.move_to_step.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.move_to_step.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.move_to_step.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.move_to_step.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.put_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.put_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.put_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.put_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.remove_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.remove_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.remove_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.remove_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.retry.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.retry.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.retry.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.retry.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.start.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.start.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.start.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.start.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.stop.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.stop.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.stop.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.stop.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/index.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/index.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/index.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/index.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.add_block.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.add_block.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.add_block.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.add_block.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.analyze.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.analyze.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.analyze.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.analyze.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.clear_cache.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.clear_cache.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.clear_cache.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.clear_cache.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.clone.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.clone.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.clone.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.clone.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.close.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.close.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.close.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.close.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.create_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.create_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.create_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.create_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.data_streams_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.data_streams_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.data_streams_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.data_streams_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.disk_usage.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.disk_usage.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.disk_usage.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.disk_usage.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.downsample.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.downsample.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.downsample.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.downsample.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.field_usage_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.field_usage_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.field_usage_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.field_usage_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.flush.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.flush.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.flush.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.flush.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.forcemerge.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.forcemerge.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.forcemerge.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.forcemerge.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_field_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_field_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_field_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_field_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.migrate_to_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.migrate_to_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.migrate_to_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.migrate_to_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.modify_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.modify_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.modify_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.modify_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.open.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.open.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.open.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.open.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.promote_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.promote_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.promote_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.promote_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.recovery.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.recovery.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.recovery.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.recovery.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.refresh.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.refresh.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.refresh.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.refresh.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.reload_search_analyzers.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.reload_search_analyzers.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.reload_search_analyzers.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.reload_search_analyzers.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.resolve_cluster.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.resolve_cluster.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.resolve_cluster.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.resolve_cluster.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.resolve_index.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.resolve_index.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.resolve_index.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.resolve_index.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.rollover.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.rollover.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.rollover.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.rollover.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.segments.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.segments.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.segments.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.segments.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.shard_stores.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.shard_stores.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.shard_stores.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.shard_stores.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.shrink.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.shrink.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.shrink.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.shrink.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.split.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.split.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.split.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.split.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.unfreeze.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.unfreeze.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.unfreeze.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.unfreeze.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.update_aliases.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.update_aliases.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.update_aliases.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.update_aliases.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.validate_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.validate_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.validate_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.validate_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.inference.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.inference.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.inference.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.inference.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.stream_inference.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.stream_inference.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.stream_inference.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.stream_inference.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_geoip_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_geoip_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_geoip_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_geoip_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_ip_location_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_ip_location_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_ip_location_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_ip_location_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.geo_ip_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.geo_ip_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.geo_ip_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.geo_ip_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_geoip_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_geoip_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_geoip_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_geoip_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_ip_location_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_ip_location_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_ip_location_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_ip_location_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.processor_grok.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.processor_grok.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.processor_grok.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.processor_grok.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_geoip_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_geoip_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_geoip_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_geoip_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_ip_location_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_ip_location_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_ip_location_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_ip_location_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.simulate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.simulate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.simulate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.simulate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/knn_search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/knn_search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/knn_search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/knn_search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.get_basic_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get_basic_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.get_basic_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get_basic_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.get_trial_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get_trial_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.get_trial_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get_trial_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.post_start_basic.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post_start_basic.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.post_start_basic.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post_start_basic.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.post_start_trial.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post_start_trial.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.post_start_trial.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post_start_trial.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.delete_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.delete_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/logstash.delete_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.delete_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.put_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.put_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/logstash.put_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.put_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/mget.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/mget.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/mget.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/mget.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/migration.deprecations.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.deprecations.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/migration.deprecations.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.deprecations.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/migration.get_feature_upgrade_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.get_feature_upgrade_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/migration.get_feature_upgrade_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.get_feature_upgrade_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/migration.post_feature_upgrade.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.post_feature_upgrade.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/migration.post_feature_upgrade.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.post_feature_upgrade.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.clear_trained_model_deployment_cache.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.clear_trained_model_deployment_cache.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.clear_trained_model_deployment_cache.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.clear_trained_model_deployment_cache.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.close_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.close_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.close_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.close_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_event.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_event.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_event.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_event.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_expired_data.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_expired_data.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_expired_data.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_expired_data.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_filter.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_filter.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_filter.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_filter.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_forecast.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_forecast.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_forecast.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_forecast.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.estimate_model_memory.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.estimate_model_memory.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.estimate_model_memory.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.estimate_model_memory.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.evaluate_data_frame.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.evaluate_data_frame.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.evaluate_data_frame.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.evaluate_data_frame.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.explain_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.explain_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.explain_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.explain_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.flush_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.flush_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.flush_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.flush_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.forecast.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.forecast.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.forecast.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.forecast.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_buckets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_buckets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_buckets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_buckets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_calendar_events.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_calendar_events.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_calendar_events.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_calendar_events.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_calendars.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_calendars.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_calendars.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_calendars.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_categories.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_categories.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_categories.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_categories.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_datafeed_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_datafeed_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_datafeed_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_datafeed_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_datafeeds.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_datafeeds.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_datafeeds.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_datafeeds.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_filters.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_filters.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_filters.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_filters.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_influencers.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_influencers.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_influencers.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_influencers.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_job_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_job_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_job_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_job_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_jobs.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_jobs.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_jobs.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_jobs.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_memory_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_memory_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_memory_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_memory_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshot_upgrade_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshot_upgrade_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshot_upgrade_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshot_upgrade_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshots.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshots.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshots.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshots.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_overall_buckets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_overall_buckets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_overall_buckets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_overall_buckets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_records.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_records.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_records.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_records.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_trained_models.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_trained_models.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_trained_models.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_trained_models.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_trained_models_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_trained_models_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_trained_models_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_trained_models_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.infer_trained_model.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.infer_trained_model.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.infer_trained_model.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.infer_trained_model.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.open_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.open_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.open_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.open_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.post_calendar_events.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.post_calendar_events.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.post_calendar_events.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.post_calendar_events.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.post_data.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.post_data.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.post_data.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.post_data.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.preview_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.preview_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.preview_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.preview_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.preview_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.preview_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.preview_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.preview_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_calendar.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_calendar.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_calendar.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_calendar.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_calendar_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_calendar_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_calendar_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_calendar_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_filter.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_filter.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_filter.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_filter.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_definition_part.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_definition_part.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_definition_part.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_definition_part.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_vocabulary.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_vocabulary.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_vocabulary.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_vocabulary.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.reset_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.reset_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.reset_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.reset_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.revert_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.revert_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.revert_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.revert_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.set_upgrade_mode.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.set_upgrade_mode.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.set_upgrade_mode.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.set_upgrade_mode.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_trained_model_deployment.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_trained_model_deployment.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_trained_model_deployment.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_trained_model_deployment.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_filter.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_filter.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_filter.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_filter.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_trained_model_deployment.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_trained_model_deployment.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_trained_model_deployment.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_trained_model_deployment.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.upgrade_job_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.upgrade_job_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.upgrade_job_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.upgrade_job_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.validate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.validate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.validate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.validate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.validate_detector.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.validate_detector.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.validate_detector.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.validate_detector.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/monitoring.bulk.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/monitoring.bulk.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/monitoring.bulk.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/monitoring.bulk.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/msearch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/msearch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/msearch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/msearch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/msearch_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/msearch_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/msearch_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/msearch_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/mtermvectors.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/mtermvectors.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/mtermvectors.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/mtermvectors.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.clear_repositories_metering_archive.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.clear_repositories_metering_archive.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.clear_repositories_metering_archive.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.clear_repositories_metering_archive.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.get_repositories_metering_info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.get_repositories_metering_info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.get_repositories_metering_info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.get_repositories_metering_info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.hot_threads.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.hot_threads.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.hot_threads.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.hot_threads.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.reload_secure_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.reload_secure_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.reload_secure_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.reload_secure_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.usage.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.usage.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.usage.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.usage.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/open_point_in_time.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/open_point_in_time.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/open_point_in_time.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/open_point_in_time.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/profiling.flamegraph.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.flamegraph.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/profiling.flamegraph.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.flamegraph.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/profiling.stacktraces.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.stacktraces.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/profiling.stacktraces.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.stacktraces.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/profiling.status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/profiling.status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/profiling.topn_functions.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.topn_functions.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/profiling.topn_functions.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.topn_functions.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/put_script.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/put_script.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/put_script.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/put_script.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.delete_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.delete_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.delete_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.delete_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.delete_ruleset.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.delete_ruleset.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.delete_ruleset.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.delete_ruleset.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.get_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.get_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.get_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.get_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.get_ruleset.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.get_ruleset.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.get_ruleset.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.get_ruleset.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.list_rulesets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.list_rulesets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.list_rulesets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.list_rulesets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.put_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.put_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.put_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.put_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.put_ruleset.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.put_ruleset.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.put_ruleset.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.put_ruleset.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.test.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.test.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.test.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.test.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rank_eval.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rank_eval.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rank_eval.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rank_eval.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/reindex.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/reindex.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/reindex.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/reindex.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/reindex_rethrottle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/reindex_rethrottle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/reindex_rethrottle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/reindex_rethrottle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/render_search_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/render_search_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/render_search_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/render_search_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.delete_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.delete_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.delete_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.delete_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_jobs.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_jobs.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_jobs.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_jobs.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_caps.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_caps.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_caps.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_caps.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_index_caps.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_index_caps.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_index_caps.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_index_caps.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.put_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.put_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.put_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.put_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.rollup_search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.rollup_search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.rollup_search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.rollup_search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.start_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.start_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.start_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.start_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.stop_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.stop_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.stop_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.stop_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/scripts_painless_execute.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/scripts_painless_execute.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/scripts_painless_execute.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/scripts_painless_execute.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/scroll.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/scroll.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/scroll.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/scroll.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.delete_behavioral_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.delete_behavioral_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.delete_behavioral_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.delete_behavioral_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.get_behavioral_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.get_behavioral_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.get_behavioral_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.get_behavioral_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.list.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.list.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.list.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.list.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.post_behavioral_analytics_event.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.post_behavioral_analytics_event.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.post_behavioral_analytics_event.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.post_behavioral_analytics_event.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.put_behavioral_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.put_behavioral_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.put_behavioral_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.put_behavioral_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.render_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.render_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.render_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.render_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_mvt.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_mvt.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_mvt.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_mvt.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_shards.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_shards.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_shards.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_shards.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.cache_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.cache_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.cache_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.cache_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.clear_cache.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.clear_cache.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.clear_cache.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.clear_cache.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.mount.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.mount.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.mount.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.mount.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.activate_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.activate_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.activate_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.activate_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_delete_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_delete_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_delete_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_delete_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_put_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_put_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_put_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_put_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_update_api_keys.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_update_api_keys.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_update_api_keys.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_update_api_keys.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.change_password.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.change_password.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.change_password.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.change_password.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_api_key_cache.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_api_key_cache.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_api_key_cache.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_api_key_cache.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_realms.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_realms.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_realms.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_realms.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_roles.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_roles.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_roles.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_roles.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_service_tokens.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_service_tokens.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_service_tokens.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_service_tokens.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.create_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.create_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.create_service_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_service_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.create_service_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_service_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_role_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_role_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_role_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_role_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_service_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_service_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_service_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_service_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.disable_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.disable_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.disable_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.disable_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.disable_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.disable_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.disable_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.disable_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.enable_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enable_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.enable_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enable_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.enable_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enable_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.enable_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enable_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.enroll_kibana.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enroll_kibana.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.enroll_kibana.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enroll_kibana.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.enroll_node.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enroll_node.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.enroll_node.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enroll_node.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_builtin_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_builtin_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_builtin_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_builtin_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_role_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_role_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_role_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_role_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_service_accounts.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_service_accounts.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_service_accounts.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_service_accounts.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_service_credentials.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_service_credentials.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_service_credentials.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_service_credentials.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.grant_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.grant_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.grant_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.grant_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.has_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.has_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.has_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.has_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.has_privileges_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.has_privileges_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.has_privileges_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.has_privileges_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.invalidate_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.invalidate_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.invalidate_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.invalidate_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.invalidate_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.invalidate_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.invalidate_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.invalidate_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_prepare_authentication.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_prepare_authentication.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_prepare_authentication.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_prepare_authentication.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.put_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.put_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.put_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.put_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.put_role_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_role_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.put_role_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_role_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.put_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.put_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.query_api_keys.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_api_keys.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.query_api_keys.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_api_keys.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.query_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.query_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.query_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.query_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_complete_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_complete_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_complete_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_complete_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_invalidate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_invalidate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_invalidate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_invalidate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_prepare_authentication.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_prepare_authentication.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_prepare_authentication.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_prepare_authentication.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_service_provider_metadata.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_service_provider_metadata.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_service_provider_metadata.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_service_provider_metadata.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.suggest_user_profiles.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.suggest_user_profiles.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.suggest_user_profiles.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.suggest_user_profiles.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.update_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.update_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_user_profile_data.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_user_profile_data.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.update_user_profile_data.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_user_profile_data.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.delete_node.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.delete_node.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.delete_node.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.delete_node.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.get_node.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.get_node.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.get_node.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.get_node.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.put_node.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.put_node.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.put_node.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.put_node.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/simulate.ingest.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/simulate.ingest.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/simulate.ingest.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/simulate.ingest.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.delete_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.delete_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.delete_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.delete_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.execute_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.execute_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.execute_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.execute_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.execute_retention.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.execute_retention.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.execute_retention.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.execute_retention.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.put_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.put_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.put_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.put_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.start.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.start.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.start.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.start.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.stop.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.stop.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.stop.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.stop.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.cleanup_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.cleanup_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.cleanup_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.cleanup_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.clone.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.clone.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.clone.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.clone.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.create_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.create_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.create_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.create_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.delete_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.delete_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.delete_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.delete_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.get_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.get_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.get_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.get_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.repository_analyze.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.repository_analyze.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.repository_analyze.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.repository_analyze.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.repository_verify_integrity.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.repository_verify_integrity.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.repository_verify_integrity.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.repository_verify_integrity.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.restore.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.restore.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.restore.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.restore.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.verify_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.verify_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.verify_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.verify_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.clear_cursor.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.clear_cursor.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.clear_cursor.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.clear_cursor.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.delete_async.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.delete_async.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.delete_async.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.delete_async.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.get_async.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.get_async.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.get_async.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.get_async.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.get_async_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.get_async_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.get_async_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.get_async_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.translate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.translate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.translate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.translate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ssl.certificates.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ssl.certificates.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ssl.certificates.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ssl.certificates.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonyms_sets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonyms_sets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonyms_sets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonyms_sets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/tasks.cancel.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.cancel.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/tasks.cancel.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.cancel.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/tasks.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/tasks.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/tasks.list.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.list.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/tasks.list.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.list.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/terms_enum.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/terms_enum.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/terms_enum.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/terms_enum.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/termvectors.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/termvectors.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/termvectors.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/termvectors.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_field_structure.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_field_structure.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_field_structure.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_field_structure.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_message_structure.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_message_structure.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_message_structure.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_message_structure.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_structure.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_structure.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_structure.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_structure.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.test_grok_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.test_grok_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.test_grok_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.test_grok_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_node_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_node_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_node_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_node_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_transform_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_transform_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_transform_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_transform_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.preview_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.preview_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.preview_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.preview_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.put_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.put_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.put_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.put_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.reset_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.reset_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.reset_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.reset_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.schedule_now_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.schedule_now_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.schedule_now_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.schedule_now_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.start_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.start_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.start_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.start_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.stop_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.stop_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.stop_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.stop_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.update_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.update_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.update_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.update_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.upgrade_transforms.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.upgrade_transforms.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.upgrade_transforms.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.upgrade_transforms.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/update.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/update.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/update_by_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update_by_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/update_by_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update_by_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/update_by_query_rethrottle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update_by_query_rethrottle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/update_by_query_rethrottle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update_by_query_rethrottle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.ack_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.ack_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.ack_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.ack_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.activate_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.activate_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.activate_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.activate_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.deactivate_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.deactivate_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.deactivate_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.deactivate_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.delete_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.delete_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.delete_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.delete_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.execute_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.execute_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.execute_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.execute_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.get_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.get_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.put_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.put_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.put_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.put_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.query_watches.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.query_watches.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.query_watches.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.query_watches.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.start.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.start.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.start.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.start.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.stop.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.stop.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.stop.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.stop.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/xpack.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/xpack.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/xpack.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/xpack.info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/xpack.usage.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/xpack.usage.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/xpack.usage.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/xpack.usage.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/manual/.empty b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/manual/.empty similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/manual/.empty rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/manual/.empty diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/async_search.submit.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/async_search.submit.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/async_search.submit.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/async_search.submit.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.forget_follower.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.forget_follower.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.forget_follower.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.forget_follower.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.put_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.put_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.put_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.put_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.resume_follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.resume_follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.resume_follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.resume_follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/clear_scroll.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/clear_scroll.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/clear_scroll.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/clear_scroll.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.health.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.health.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.health.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.health.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.put_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.put_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.put_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.put_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.put_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.put_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.put_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.put_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.reroute.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.reroute.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.reroute.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.reroute.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.state.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.state.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.state.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.state.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/count.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/count.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/count.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/count.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/delete_by_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/delete_by_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/delete_by_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/delete_by_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/enrich.put_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/enrich.put_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/enrich.put_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/enrich.put_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/esql.query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/esql.query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/esql.query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/esql.query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/graph.explore.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/graph.explore.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/graph.explore.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/graph.explore.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ilm.move_to_step.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ilm.move_to_step.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ilm.move_to_step.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ilm.move_to_step.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ilm.put_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ilm.put_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ilm.put_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ilm.put_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.clone.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.clone.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.clone.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.clone.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.delete_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.delete_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.delete_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.delete_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.exists_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.exists_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.exists_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.exists_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_field_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_field_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_field_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_field_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.rollover.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.rollover.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.rollover.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.rollover.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.update_aliases.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.update_aliases.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.update_aliases.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.update_aliases.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.validate_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.validate_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.validate_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.validate_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/license.post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/license.post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/license.post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/license.post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/logstash.put_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/logstash.put_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/logstash.put_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/logstash.put_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.evaluate_data_frame.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.evaluate_data_frame.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.evaluate_data_frame.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.evaluate_data_frame.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.explain_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.explain_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.explain_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.explain_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_buckets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_buckets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_buckets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_buckets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_calendar_events.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_calendar_events.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_calendar_events.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_calendar_events.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_calendars.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_calendars.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_calendars.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_calendars.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_categories.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_categories.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_categories.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_categories.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_influencers.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_influencers.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_influencers.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_influencers.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_model_snapshots.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_model_snapshots.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_model_snapshots.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_model_snapshots.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_overall_buckets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_overall_buckets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_overall_buckets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_overall_buckets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_records.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_records.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_records.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_records.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.post_calendar_events.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.post_calendar_events.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.post_calendar_events.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.post_calendar_events.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_calendar.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_calendar.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_calendar.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_calendar.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_trained_model.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_trained_model.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_trained_model.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_trained_model.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.revert_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.revert_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.revert_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.revert_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/nodes.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/nodes.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/nodes.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/nodes.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/nodes.usage.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/nodes.usage.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/nodes.usage.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/nodes.usage.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/query_rules.put_ruleset.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/query_rules.put_ruleset.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/query_rules.put_ruleset.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/query_rules.put_ruleset.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.delete_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.delete_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.delete_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.delete_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.put_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.put_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.put_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.put_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.rollup_search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.rollup_search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.rollup_search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.rollup_search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.post_behavioral_analytics_event.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.post_behavioral_analytics_event.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.post_behavioral_analytics_event.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.post_behavioral_analytics_event.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/search_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/search_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.change_password.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.change_password.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.change_password.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.change_password.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.create_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.create_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.create_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.create_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.get_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.get_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.get_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.get_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.has_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.has_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.has_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.has_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.invalidate_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.invalidate_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.invalidate_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.invalidate_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.invalidate_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.invalidate_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.invalidate_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.invalidate_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_role_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_role_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_role_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_role_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_complete_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_complete_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_complete_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_complete_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_invalidate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_invalidate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_invalidate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_invalidate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_prepare_authentication.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_prepare_authentication.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_prepare_authentication.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_prepare_authentication.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/slm.put_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.put_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/slm.put_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.put_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/slm.start.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.start.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/slm.start.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.start.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/slm.stop.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.stop.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/slm.stop.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.stop.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.restore.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.restore.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.restore.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.restore.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/sql.query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/sql.query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/sql.query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/sql.query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/terms_enum.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/terms_enum.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/terms_enum.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/terms_enum.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.get_transform_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.get_transform_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.get_transform_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.get_transform_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.preview_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.preview_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.preview_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.preview_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.put_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.put_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.put_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.put_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.stop_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.stop_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.stop_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.stop_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.update_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.update_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.update_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.update_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/update_by_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/update_by_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/update_by_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/update_by_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/watcher.execute_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/watcher.execute_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/watcher.execute_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/watcher.execute_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/watcher.put_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/watcher.put_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/watcher.put_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/watcher.put_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/xpack.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/xpack.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/xpack.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/xpack.info.json diff --git a/src/plugins/console/server/lib/utils/encode_path.test.ts b/src/platform/plugins/shared/console/server/lib/utils/encode_path.test.ts similarity index 100% rename from src/plugins/console/server/lib/utils/encode_path.test.ts rename to src/platform/plugins/shared/console/server/lib/utils/encode_path.test.ts diff --git a/src/plugins/console/server/lib/utils/encode_path.ts b/src/platform/plugins/shared/console/server/lib/utils/encode_path.ts similarity index 100% rename from src/plugins/console/server/lib/utils/encode_path.ts rename to src/platform/plugins/shared/console/server/lib/utils/encode_path.ts diff --git a/src/plugins/console/server/lib/utils/index.ts b/src/platform/plugins/shared/console/server/lib/utils/index.ts similarity index 100% rename from src/plugins/console/server/lib/utils/index.ts rename to src/platform/plugins/shared/console/server/lib/utils/index.ts diff --git a/src/plugins/console/server/lib/utils/sanitize_hostname.test.ts b/src/platform/plugins/shared/console/server/lib/utils/sanitize_hostname.test.ts similarity index 100% rename from src/plugins/console/server/lib/utils/sanitize_hostname.test.ts rename to src/platform/plugins/shared/console/server/lib/utils/sanitize_hostname.test.ts diff --git a/src/plugins/console/server/lib/utils/sanitize_hostname.ts b/src/platform/plugins/shared/console/server/lib/utils/sanitize_hostname.ts similarity index 100% rename from src/plugins/console/server/lib/utils/sanitize_hostname.ts rename to src/platform/plugins/shared/console/server/lib/utils/sanitize_hostname.ts diff --git a/src/plugins/console/server/lib/utils/to_url.test.ts b/src/platform/plugins/shared/console/server/lib/utils/to_url.test.ts similarity index 100% rename from src/plugins/console/server/lib/utils/to_url.test.ts rename to src/platform/plugins/shared/console/server/lib/utils/to_url.test.ts diff --git a/src/plugins/console/server/lib/utils/to_url.ts b/src/platform/plugins/shared/console/server/lib/utils/to_url.ts similarity index 100% rename from src/plugins/console/server/lib/utils/to_url.ts rename to src/platform/plugins/shared/console/server/lib/utils/to_url.ts diff --git a/src/plugins/console/server/lib/wildcard_matcher.test.js b/src/platform/plugins/shared/console/server/lib/wildcard_matcher.test.js similarity index 100% rename from src/plugins/console/server/lib/wildcard_matcher.test.js rename to src/platform/plugins/shared/console/server/lib/wildcard_matcher.test.js diff --git a/src/plugins/console/server/lib/wildcard_matcher.ts b/src/platform/plugins/shared/console/server/lib/wildcard_matcher.ts similarity index 100% rename from src/plugins/console/server/lib/wildcard_matcher.ts rename to src/platform/plugins/shared/console/server/lib/wildcard_matcher.ts diff --git a/src/plugins/console/server/plugin.ts b/src/platform/plugins/shared/console/server/plugin.ts similarity index 100% rename from src/plugins/console/server/plugin.ts rename to src/platform/plugins/shared/console/server/plugin.ts diff --git a/src/plugins/console/server/routes/api/__mocks__/request.mock.ts b/src/platform/plugins/shared/console/server/routes/api/__mocks__/request.mock.ts similarity index 100% rename from src/plugins/console/server/routes/api/__mocks__/request.mock.ts rename to src/platform/plugins/shared/console/server/routes/api/__mocks__/request.mock.ts diff --git a/src/plugins/console/server/routes/api/__mocks__/routes.mock.ts b/src/platform/plugins/shared/console/server/routes/api/__mocks__/routes.mock.ts similarity index 100% rename from src/plugins/console/server/routes/api/__mocks__/routes.mock.ts rename to src/platform/plugins/shared/console/server/routes/api/__mocks__/routes.mock.ts diff --git a/src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/index.ts diff --git a/src/plugins/console/server/routes/api/console/autocomplete_entities/validation_config.ts b/src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/validation_config.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/autocomplete_entities/validation_config.ts rename to src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/validation_config.ts diff --git a/src/plugins/console/server/routes/api/console/convert_request_to_language/convert_request_handler.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/convert_request_handler.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/convert_request_to_language/convert_request_handler.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/convert_request_handler.test.ts diff --git a/src/plugins/console/server/routes/api/console/convert_request_to_language/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/convert_request_to_language/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/index.ts diff --git a/src/plugins/console/server/routes/api/console/es_config/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/es_config/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/es_config/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/es_config/index.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/body.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/body.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/body.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/body.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/create_handler.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/create_handler.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/create_handler.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/create_handler.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/headers.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/headers.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/headers.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/headers.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/index.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/mocks.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/mocks.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/mocks.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/mocks.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/params.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/params.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/params.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/params.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/proxy_fallback.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/proxy_fallback.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/proxy_fallback.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/proxy_fallback.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/query_string.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/query_string.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/query_string.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/query_string.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/route_validation.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/route_validation.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/route_validation.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/route_validation.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/stubs.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/stubs.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/stubs.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/stubs.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/validation_config.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/validation_config.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/validation_config.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/validation_config.ts diff --git a/src/plugins/console/server/routes/api/console/spec_definitions/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/spec_definitions/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/spec_definitions/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/spec_definitions/index.ts diff --git a/src/plugins/console/server/routes/index.ts b/src/platform/plugins/shared/console/server/routes/index.ts similarity index 100% rename from src/plugins/console/server/routes/index.ts rename to src/platform/plugins/shared/console/server/routes/index.ts diff --git a/src/plugins/console/server/services/es_legacy_config_service.ts b/src/platform/plugins/shared/console/server/services/es_legacy_config_service.ts similarity index 100% rename from src/plugins/console/server/services/es_legacy_config_service.ts rename to src/platform/plugins/shared/console/server/services/es_legacy_config_service.ts diff --git a/src/plugins/console/server/services/index.ts b/src/platform/plugins/shared/console/server/services/index.ts similarity index 100% rename from src/plugins/console/server/services/index.ts rename to src/platform/plugins/shared/console/server/services/index.ts diff --git a/src/plugins/console/server/services/spec_definitions_service.test.ts b/src/platform/plugins/shared/console/server/services/spec_definitions_service.test.ts similarity index 100% rename from src/plugins/console/server/services/spec_definitions_service.test.ts rename to src/platform/plugins/shared/console/server/services/spec_definitions_service.test.ts diff --git a/src/plugins/console/server/services/spec_definitions_service.ts b/src/platform/plugins/shared/console/server/services/spec_definitions_service.ts similarity index 100% rename from src/plugins/console/server/services/spec_definitions_service.ts rename to src/platform/plugins/shared/console/server/services/spec_definitions_service.ts diff --git a/src/plugins/console/server/shared_imports.ts b/src/platform/plugins/shared/console/server/shared_imports.ts similarity index 100% rename from src/plugins/console/server/shared_imports.ts rename to src/platform/plugins/shared/console/server/shared_imports.ts diff --git a/src/plugins/console/server/types.ts b/src/platform/plugins/shared/console/server/types.ts similarity index 100% rename from src/plugins/console/server/types.ts rename to src/platform/plugins/shared/console/server/types.ts diff --git a/src/platform/plugins/shared/console/tsconfig.json b/src/platform/plugins/shared/console/tsconfig.json new file mode 100644 index 0000000000000..1b296983f6169 --- /dev/null +++ b/src/platform/plugins/shared/console/tsconfig.json @@ -0,0 +1,39 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": ["common/**/*", "public/**/*", "server/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/dev-tools-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/home-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/share-plugin", + "@kbn/usage-collection-plugin", + "@kbn/i18n", + "@kbn/analytics", + "@kbn/utility-types", + "@kbn/i18n-react", + "@kbn/shared-ux-utility", + "@kbn/core-http-browser", + "@kbn/config-schema", + "@kbn/core-http-router-server-internal", + "@kbn/core-elasticsearch-server", + "@kbn/core-http-browser-mocks", + "@kbn/react-kibana-context-theme", + "@kbn/code-editor", + "@kbn/monaco", + "@kbn/cloud-plugin", + "@kbn/core-notifications-browser", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-mount", + "@kbn/ui-theme", + "@kbn/core-doc-links-browser", + "@kbn/shared-ux-router", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/src/plugins/dev_tools/README.md b/src/platform/plugins/shared/dev_tools/README.md similarity index 100% rename from src/plugins/dev_tools/README.md rename to src/platform/plugins/shared/dev_tools/README.md diff --git a/src/plugins/dev_tools/common/constants.ts b/src/platform/plugins/shared/dev_tools/common/constants.ts similarity index 100% rename from src/plugins/dev_tools/common/constants.ts rename to src/platform/plugins/shared/dev_tools/common/constants.ts diff --git a/src/plugins/dev_tools/common/index.ts b/src/platform/plugins/shared/dev_tools/common/index.ts similarity index 100% rename from src/plugins/dev_tools/common/index.ts rename to src/platform/plugins/shared/dev_tools/common/index.ts diff --git a/src/plugins/dev_tools/kibana.jsonc b/src/platform/plugins/shared/dev_tools/kibana.jsonc similarity index 100% rename from src/plugins/dev_tools/kibana.jsonc rename to src/platform/plugins/shared/dev_tools/kibana.jsonc diff --git a/src/plugins/dev_tools/public/application.tsx b/src/platform/plugins/shared/dev_tools/public/application.tsx similarity index 100% rename from src/plugins/dev_tools/public/application.tsx rename to src/platform/plugins/shared/dev_tools/public/application.tsx diff --git a/src/plugins/dev_tools/public/constants/texts.ts b/src/platform/plugins/shared/dev_tools/public/constants/texts.ts similarity index 100% rename from src/plugins/dev_tools/public/constants/texts.ts rename to src/platform/plugins/shared/dev_tools/public/constants/texts.ts diff --git a/src/plugins/dev_tools/public/dev_tool.ts b/src/platform/plugins/shared/dev_tools/public/dev_tool.ts similarity index 100% rename from src/plugins/dev_tools/public/dev_tool.ts rename to src/platform/plugins/shared/dev_tools/public/dev_tool.ts diff --git a/src/plugins/dev_tools/public/index.scss b/src/platform/plugins/shared/dev_tools/public/index.scss similarity index 100% rename from src/plugins/dev_tools/public/index.scss rename to src/platform/plugins/shared/dev_tools/public/index.scss diff --git a/src/platform/plugins/shared/dev_tools/public/index.ts b/src/platform/plugins/shared/dev_tools/public/index.ts new file mode 100644 index 0000000000000..800e6f46df24f --- /dev/null +++ b/src/platform/plugins/shared/dev_tools/public/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +// TODO: https://github.com/elastic/kibana/issues/110892 + +import { DevToolsPlugin } from './plugin'; +export * from './plugin'; +export * from '../common/constants'; + +export function plugin() { + return new DevToolsPlugin(); +} diff --git a/src/plugins/dev_tools/public/plugin.ts b/src/platform/plugins/shared/dev_tools/public/plugin.ts similarity index 100% rename from src/plugins/dev_tools/public/plugin.ts rename to src/platform/plugins/shared/dev_tools/public/plugin.ts diff --git a/src/plugins/dev_tools/public/services/breadcrumb.ts b/src/platform/plugins/shared/dev_tools/public/services/breadcrumb.ts similarity index 100% rename from src/plugins/dev_tools/public/services/breadcrumb.ts rename to src/platform/plugins/shared/dev_tools/public/services/breadcrumb.ts diff --git a/src/plugins/dev_tools/public/services/doc_title.ts b/src/platform/plugins/shared/dev_tools/public/services/doc_title.ts similarity index 100% rename from src/plugins/dev_tools/public/services/doc_title.ts rename to src/platform/plugins/shared/dev_tools/public/services/doc_title.ts diff --git a/src/plugins/dev_tools/public/services/index.ts b/src/platform/plugins/shared/dev_tools/public/services/index.ts similarity index 100% rename from src/plugins/dev_tools/public/services/index.ts rename to src/platform/plugins/shared/dev_tools/public/services/index.ts diff --git a/src/plugins/dev_tools/public/types.ts b/src/platform/plugins/shared/dev_tools/public/types.ts similarity index 100% rename from src/plugins/dev_tools/public/types.ts rename to src/platform/plugins/shared/dev_tools/public/types.ts diff --git a/src/plugins/dev_tools/server/config.ts b/src/platform/plugins/shared/dev_tools/server/config.ts similarity index 100% rename from src/plugins/dev_tools/server/config.ts rename to src/platform/plugins/shared/dev_tools/server/config.ts diff --git a/src/plugins/dev_tools/server/index.ts b/src/platform/plugins/shared/dev_tools/server/index.ts similarity index 100% rename from src/plugins/dev_tools/server/index.ts rename to src/platform/plugins/shared/dev_tools/server/index.ts diff --git a/src/plugins/dev_tools/server/plugin.ts b/src/platform/plugins/shared/dev_tools/server/plugin.ts similarity index 100% rename from src/plugins/dev_tools/server/plugin.ts rename to src/platform/plugins/shared/dev_tools/server/plugin.ts diff --git a/src/plugins/dev_tools/server/ui_settings.ts b/src/platform/plugins/shared/dev_tools/server/ui_settings.ts similarity index 100% rename from src/plugins/dev_tools/server/ui_settings.ts rename to src/platform/plugins/shared/dev_tools/server/ui_settings.ts diff --git a/src/platform/plugins/shared/dev_tools/tsconfig.json b/src/platform/plugins/shared/dev_tools/tsconfig.json new file mode 100644 index 0000000000000..a80d3ddcea9f2 --- /dev/null +++ b/src/platform/plugins/shared/dev_tools/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": ["common/*", "public/**/*", "server/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/url-forwarding-plugin", + "@kbn/management-plugin", + "@kbn/i18n", + "@kbn/ui-theme", + "@kbn/shared-ux-router", + "@kbn/deeplinks-devtools", + "@kbn/config-schema", + "@kbn/core-plugins-server", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/src/plugins/es_ui_shared/.storybook/main.ts b/src/platform/plugins/shared/es_ui_shared/.storybook/main.ts similarity index 100% rename from src/plugins/es_ui_shared/.storybook/main.ts rename to src/platform/plugins/shared/es_ui_shared/.storybook/main.ts diff --git a/src/platform/plugins/shared/es_ui_shared/.storybook/manager.ts b/src/platform/plugins/shared/es_ui_shared/.storybook/manager.ts new file mode 100644 index 0000000000000..566332bc6a3ed --- /dev/null +++ b/src/platform/plugins/shared/es_ui_shared/.storybook/manager.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { addons } from '@storybook/addons'; +import { create } from '@storybook/theming'; +import { PANEL_ID } from '@storybook/addon-actions'; + +addons.setConfig({ + theme: create({ + base: 'light', + brandTitle: 'Platform Deployment Management Storybook', + brandUrl: + 'https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/es_ui_shared', + }), + showPanel: () => true, + selectedPanel: PANEL_ID, +}); diff --git a/src/plugins/es_ui_shared/README.md b/src/platform/plugins/shared/es_ui_shared/README.md similarity index 100% rename from src/plugins/es_ui_shared/README.md rename to src/platform/plugins/shared/es_ui_shared/README.md diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.test.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.test.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.test.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.test.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.test.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.test.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.test.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.test.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/global_flyout/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/global_flyout/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_collapsing.txt b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_collapsing.txt similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_collapsing.txt rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_collapsing.txt diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_expanding.txt b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_expanding.txt similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_expanding.txt rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_expanding.txt diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/json_xjson_translation_tools.test.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/json_xjson_translation_tools.test.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/json_xjson_translation_tools.test.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/json_xjson_translation_tools.test.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/parser.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/parser.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/parser.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/parser.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/use_xjson_mode.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/use_xjson_mode.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/use_xjson_mode.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/use_xjson_mode.ts diff --git a/src/plugins/es_ui_shared/common/index.ts b/src/platform/plugins/shared/es_ui_shared/common/index.ts similarity index 100% rename from src/plugins/es_ui_shared/common/index.ts rename to src/platform/plugins/shared/es_ui_shared/common/index.ts diff --git a/src/platform/plugins/shared/es_ui_shared/jest.config.js b/src/platform/plugins/shared/es_ui_shared/jest.config.js new file mode 100644 index 0000000000000..5deb0919362aa --- /dev/null +++ b/src/platform/plugins/shared/es_ui_shared/jest.config.js @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/plugins/shared/es_ui_shared'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/src/platform/plugins/shared/es_ui_shared', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/src/platform/plugins/shared/es_ui_shared/{__packages_do_not_import__,common,public,server,static}/**/*.{ts,tsx}', + ], +}; diff --git a/src/plugins/es_ui_shared/kibana.jsonc b/src/platform/plugins/shared/es_ui_shared/kibana.jsonc similarity index 100% rename from src/plugins/es_ui_shared/kibana.jsonc rename to src/platform/plugins/shared/es_ui_shared/kibana.jsonc diff --git a/src/plugins/es_ui_shared/public/authorization/index.ts b/src/platform/plugins/shared/es_ui_shared/public/authorization/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/authorization/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/authorization/index.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/constants.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/constants.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/constants.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/constants.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_daily.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_daily.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_daily.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_daily.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.test.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.test.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.test.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_hourly.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_hourly.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_hourly.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_hourly.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_monthly.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_monthly.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_monthly.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_monthly.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_weekly.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_weekly.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_weekly.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_weekly.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_yearly.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_yearly.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_yearly.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_yearly.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/index.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/services/cron.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/cron.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/services/cron.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/cron.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/services/humanized_numbers.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/humanized_numbers.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/services/humanized_numbers.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/humanized_numbers.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/services/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/services/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/index.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/types.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/types.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/types.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/types.ts diff --git a/src/plugins/es_ui_shared/public/components/json_editor/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/json_editor/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/json_editor/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/json_editor/index.ts diff --git a/src/plugins/es_ui_shared/public/components/json_editor/json_editor.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/json_editor/json_editor.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/json_editor/json_editor.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/json_editor/json_editor.tsx diff --git a/src/plugins/es_ui_shared/public/components/json_editor/use_json.ts b/src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/json_editor/use_json.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts diff --git a/src/plugins/es_ui_shared/public/components/page_loading/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/page_loading/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/page_loading/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/page_loading/index.ts diff --git a/src/plugins/es_ui_shared/public/components/page_loading/page_loading.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/page_loading/page_loading.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/page_loading/page_loading.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/page_loading/page_loading.tsx diff --git a/src/plugins/es_ui_shared/public/components/section_loading/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/section_loading/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/section_loading/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/section_loading/index.ts diff --git a/src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/section_loading/section_loading.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/section_loading/section_loading.tsx diff --git a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/__snapshots__/view_api_request_flyout.test.tsx.snap b/src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/__snapshots__/view_api_request_flyout.test.tsx.snap similarity index 100% rename from src/plugins/es_ui_shared/public/components/view_api_request_flyout/__snapshots__/view_api_request_flyout.test.tsx.snap rename to src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/__snapshots__/view_api_request_flyout.test.tsx.snap diff --git a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/view_api_request_flyout/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/index.ts diff --git a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.test.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.test.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.test.tsx diff --git a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/README.md b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/README.md similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/README.md rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/README.md diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_nav.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_nav.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_nav.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_nav.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_step.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_step.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_step.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_step.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/index.ts b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/index.ts diff --git a/src/plugins/es_ui_shared/public/forms/index.ts b/src/platform/plugins/shared/es_ui_shared/public/forms/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/forms/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/forms/index.ts diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/README.md b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/README.md similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/README.md rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/README.md diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/index.ts b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/index.ts diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/multi_content_context.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/multi_content_context.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/multi_content_context.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/multi_content_context.tsx diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/use_multi_content.ts b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/use_multi_content.ts similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/use_multi_content.ts rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/use_multi_content.ts diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/with_multi_content.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/with_multi_content.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/with_multi_content.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/with_multi_content.tsx diff --git a/src/plugins/es_ui_shared/public/global_flyout/index.ts b/src/platform/plugins/shared/es_ui_shared/public/global_flyout/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/global_flyout/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/global_flyout/index.ts diff --git a/src/plugins/es_ui_shared/public/index.ts b/src/platform/plugins/shared/es_ui_shared/public/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/index.ts diff --git a/src/plugins/es_ui_shared/public/indices/constants/index.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/constants/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/constants/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/constants/index.ts diff --git a/src/plugins/es_ui_shared/public/indices/index.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/index.ts diff --git a/src/plugins/es_ui_shared/public/indices/validate/index.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/validate/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/validate/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/validate/index.ts diff --git a/src/plugins/es_ui_shared/public/indices/validate/validate_index.test.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.test.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/validate/validate_index.test.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.test.ts diff --git a/src/plugins/es_ui_shared/public/indices/validate/validate_index.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/validate/validate_index.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts diff --git a/src/plugins/es_ui_shared/public/request/index.ts b/src/platform/plugins/shared/es_ui_shared/public/request/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/index.ts diff --git a/src/plugins/es_ui_shared/public/request/send_request.test.helpers.ts b/src/platform/plugins/shared/es_ui_shared/public/request/send_request.test.helpers.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/send_request.test.helpers.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/send_request.test.helpers.ts diff --git a/src/plugins/es_ui_shared/public/request/send_request.test.ts b/src/platform/plugins/shared/es_ui_shared/public/request/send_request.test.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/send_request.test.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/send_request.test.ts diff --git a/src/plugins/es_ui_shared/public/request/send_request.ts b/src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/send_request.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts diff --git a/src/plugins/es_ui_shared/public/request/use_request.test.helpers.tsx b/src/platform/plugins/shared/es_ui_shared/public/request/use_request.test.helpers.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/request/use_request.test.helpers.tsx rename to src/platform/plugins/shared/es_ui_shared/public/request/use_request.test.helpers.tsx diff --git a/src/plugins/es_ui_shared/public/request/use_request.test.ts b/src/platform/plugins/shared/es_ui_shared/public/request/use_request.test.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/use_request.test.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/use_request.test.ts diff --git a/src/plugins/es_ui_shared/public/request/use_request.ts b/src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/use_request.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts diff --git a/src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.test.ts b/src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.test.ts similarity index 100% rename from src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.test.ts rename to src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.test.ts diff --git a/src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.ts b/src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.ts similarity index 100% rename from src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.ts rename to src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.ts diff --git a/src/plugins/es_ui_shared/public/url/extract_query_params.ts b/src/platform/plugins/shared/es_ui_shared/public/url/extract_query_params.ts similarity index 100% rename from src/plugins/es_ui_shared/public/url/extract_query_params.ts rename to src/platform/plugins/shared/es_ui_shared/public/url/extract_query_params.ts diff --git a/src/plugins/es_ui_shared/public/url/index.ts b/src/platform/plugins/shared/es_ui_shared/public/url/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/url/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/url/index.ts diff --git a/src/plugins/es_ui_shared/public/xjson/index.ts b/src/platform/plugins/shared/es_ui_shared/public/xjson/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/xjson/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/xjson/index.ts diff --git a/src/plugins/es_ui_shared/server/errors/index.ts b/src/platform/plugins/shared/es_ui_shared/server/errors/index.ts similarity index 100% rename from src/plugins/es_ui_shared/server/errors/index.ts rename to src/platform/plugins/shared/es_ui_shared/server/errors/index.ts diff --git a/src/plugins/es_ui_shared/server/index.ts b/src/platform/plugins/shared/es_ui_shared/server/index.ts similarity index 100% rename from src/plugins/es_ui_shared/server/index.ts rename to src/platform/plugins/shared/es_ui_shared/server/index.ts diff --git a/src/platform/plugins/shared/es_ui_shared/static/forms/README.md b/src/platform/plugins/shared/es_ui_shared/static/forms/README.md new file mode 100644 index 0000000000000..98d3703ed57df --- /dev/null +++ b/src/platform/plugins/shared/es_ui_shared/static/forms/README.md @@ -0,0 +1,68 @@ +# Form lib + +## Documentation + +The documentation can be accessed at: https://docs.elastic.dev/form-lib/welcome + + +### Run locally + +In order to run the documentation locally + +1. Fork and clone the elastic docs repo https://github.com/elastic/docs.elastic.dev +2. `cp sources.json sources-dev.json` +3. Edit the "elastic/kibana" section inside `source-dev.json` + +``` +// From this +{ + "type": "github", + "location": "elastic/kibana" +} + +// to this +{ + "type": "file", + "location": "../../<root-kibana-repo>", + // optional, if you want a faster build you can only include the form lib docs + "subdirs": [ + "src/platform/plugins/shared/es_ui_shared/static/forms/docs" + ] +} +``` + +4. Follow the "Getting started" instructions (https://github.com/elastic/docs.elastic.dev#getting-started) +5. `yarn dev` to launch the docs server + +## Field value change sequence diagram + +```mermaid +sequenceDiagram +actor User +User ->> UseField: change <input /> value +UseField ->> useField: setValue() +useField ->> useField: run field formatters +useField ->> useField: update state: value +useField ->> useField: create new "field" (FieldHook) +useField ->> useField: useEffect(): "field" changed +useField ->> useForm: addField(path, field) +useForm ->> useForm: update "fieldsRef" map object +useForm ->> useForm: update "formData$" observable +useForm ->> useFormData: update state: formData +useFormData -->> User: onChange() (optional handler passed to useFormdata()) +par useEffect +useField ->> UseField: call "onChange" prop +and useEffect +useField ->> useField: update state: isPristine: false +useField ->> useField: update state: isChangingValue: true +useField ->> useForm: validateFields() +note right of useForm: Validate the current field + any other field<br>declared in the "fieldsToValidateOnChange" +useForm -->> useField: validate() +useField ->> useField: update state: isValid true|false +useField ->> useForm: update state: isValid undefined|true|false +useField ->> useField: update state: isChangingValue: false +and useEffect +useField ->> useField: update state: isModified: true|false +end +User ->> User: useEffect() -- >useFormData state update +``` \ No newline at end of file diff --git a/src/plugins/es_ui_shared/static/forms/components/field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/button_group_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/button_group_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/button_group_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/button_group_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/card_radio_group_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/card_radio_group_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/card_radio_group_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/card_radio_group_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/checkbox_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/checkbox_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/checkbox_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/checkbox_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/combobox_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/combobox_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/combobox_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/combobox_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/date_picker_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/date_picker_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/date_picker_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/date_picker_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/file_picker_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/file_picker_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/file_picker_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/file_picker_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/hidden_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/hidden_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/hidden_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/hidden_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/json_editor_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/json_editor_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/json_editor_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/json_editor_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/multi_button_group_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/multi_button_group_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/multi_button_group_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/multi_button_group_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/multi_select_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/multi_select_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/multi_select_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/multi_select_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/numeric_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/numeric_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/numeric_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/numeric_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/password_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/password_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/password_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/password_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/radio_group_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/radio_group_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/radio_group_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/radio_group_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/range_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/range_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/range_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/range_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/select_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/select_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/select_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/select_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/super_select_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/super_select_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/super_select_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/super_select_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/text_area_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/text_area_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/text_area_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/text_area_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/text_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/text_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/text_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/text_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/toggle_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/toggle_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/toggle_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/toggle_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/form_row.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/form_row.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/form_row.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/form_row.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/components/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/default_value.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/default_value.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/default_value.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/default_value.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/field_hook.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/field_hook.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/field_hook.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/field_hook.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/form_component.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_component.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/form_component.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_component.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/form_hook.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_hook.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/form_hook.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_hook.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/form_lib_field_value_change.png b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_lib_field_value_change.png similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/form_lib_field_value_change.png rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_lib_field_value_change.png diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/fundamentals.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/fundamentals.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/fundamentals.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/fundamentals.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_array.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_array.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_array.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_array.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_field.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_field.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_data.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_data.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_form_data.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_data.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_hook.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_hook.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_form_hook.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_hook.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/fields_composition.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/fields_composition.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/fields_composition.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/fields_composition.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/style_fields.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/style_fields.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/style_fields.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/style_fields.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/validation.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/validation.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/helpers/components.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/helpers/components.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/helpers/components.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/helpers/components.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/helpers/validators.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/helpers/validators.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/helpers/validators.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/helpers/validators.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/nav_form_lib.docnav.json b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/nav_form_lib.docnav.json similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/nav_form_lib.docnav.json rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/nav_form_lib.docnav.json diff --git a/src/plugins/es_ui_shared/static/forms/docs/welcome.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/welcome.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/welcome.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/welcome.mdx diff --git a/src/plugins/es_ui_shared/static/forms/helpers/de_serializers.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/de_serializers.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/de_serializers.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/de_serializers.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_formatters.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_formatters.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_formatters.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_formatters.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/contains_char.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/contains_char.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/contains_char.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/contains_char.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/empty_field.test.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/empty_field.test.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/empty_field.test.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/empty_field.test.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/empty_field.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/empty_field.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/empty_field.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/empty_field.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/index_name.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index_name.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/index_name.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index_name.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/index_pattern_field.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index_pattern_field.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/index_pattern_field.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index_pattern_field.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_integer.test.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_integer.test.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_integer.test.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_integer.test.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_integer.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_integer.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_integer.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_integer.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_json.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_json.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_json.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_json.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/lowercase_string.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/lowercase_string.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/lowercase_string.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/lowercase_string.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/max_length.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/max_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/max_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/max_length.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/min_length.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/min_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/min_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/min_length.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/min_selectable_selection.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/min_selectable_selection.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/min_selectable_selection.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/min_selectable_selection.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/number_greater_than.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/number_greater_than.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/number_greater_than.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/number_greater_than.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/number_smaller_than.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/number_smaller_than.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/number_smaller_than.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/number_smaller_than.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/starts_with.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/starts_with.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/starts_with.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/starts_with.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/types.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/types.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/types.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/types.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/url.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/url.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/url.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/url.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/serializers.test.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/serializers.test.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/serializers.test.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/serializers.test.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/serializers.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/serializers.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/serializers.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/serializers.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/constants.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/constants.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/constants.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/constants.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_de_serializer.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_de_serializer.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_de_serializer.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_de_serializer.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_default_value.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_default_value.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_default_value.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_default_value.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_global_fields.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_global_fields.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_global_fields.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_global_fields.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_is_modified.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_is_modified.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_is_modified.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_is_modified.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_utils.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_utils.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_utils.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_utils.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_validation.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_validation.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_validation.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_validation.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/types.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/types.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/types.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/types.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_basic.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_basic.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_basic.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_basic.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_complex.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_complex.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_complex.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_complex.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_dynamic_data.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_dynamic_data.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_dynamic_data.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_dynamic_data.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_reorder.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_reorder.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_reorder.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_reorder.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_change_listeners.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_change_listeners.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_change_listeners.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_change_listeners.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_field_types.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_field_types.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_field_types.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_field_types.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_multi_field_basic.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_multi_field_basic.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_multi_field_basic.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_multi_field_basic.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form.stories.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form.stories.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form.stories.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form.stories.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.stories.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.stories.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.stories.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.stories.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.stories.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.stories.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.stories.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.stories.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_field.stories.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_field.stories.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_field.stories.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_field.stories.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/constants.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/constants.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/constants.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/constants.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/form_context.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/form_context.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/form_context.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/form_context.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/form_data_context.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/form_data_context.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/form_data_context.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/form_data_context.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/helpers.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/helpers.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/helpers.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/helpers.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field_from_props.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field_from_props.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field_from_props.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field_from_props.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/utils/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/utils/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/utils/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/utils/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/utils/use_behavior_subject.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/utils/use_behavior_subject.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/utils/use_behavior_subject.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/utils/use_behavior_subject.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/subject.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/subject.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/subject.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/subject.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/utils.test.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/utils.test.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/utils.test.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/utils.test.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/utils.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/utils.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/utils.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/utils.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/shared_imports.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/shared_imports.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/shared_imports.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/shared_imports.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/types.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/types.ts diff --git a/src/plugins/es_ui_shared/static/validators/array/has_max_length.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/array/has_max_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/array/has_max_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/array/has_max_length.ts diff --git a/src/plugins/es_ui_shared/static/validators/array/has_min_length.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/array/has_min_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/array/has_min_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/array/has_min_length.ts diff --git a/src/plugins/es_ui_shared/static/validators/array/index.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/array/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/array/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/array/index.ts diff --git a/src/plugins/es_ui_shared/static/validators/array/is_empty.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/array/is_empty.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/array/is_empty.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/array/is_empty.ts diff --git a/src/plugins/es_ui_shared/static/validators/number/greater_than.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/number/greater_than.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/number/greater_than.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/number/greater_than.ts diff --git a/src/plugins/es_ui_shared/static/validators/number/index.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/number/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/number/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/number/index.ts diff --git a/src/plugins/es_ui_shared/static/validators/number/smaller_than.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/number/smaller_than.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/number/smaller_than.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/number/smaller_than.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/contains_chars.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/contains_chars.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/contains_chars.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/contains_chars.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/ends_with.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/ends_with.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/ends_with.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/ends_with.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/has_max_length.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/has_max_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/has_max_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/has_max_length.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/has_min_length.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/has_min_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/has_min_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/has_min_length.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/index.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/index.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/is_empty.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/is_empty.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/is_empty.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/is_empty.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/is_json.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/is_json.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/is_json.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/is_json.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/is_lowercase.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/is_lowercase.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/is_lowercase.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/is_lowercase.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/is_url.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/is_url.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/is_url.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/is_url.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/starts_with.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/starts_with.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/starts_with.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/starts_with.ts diff --git a/src/platform/plugins/shared/es_ui_shared/tsconfig.json b/src/platform/plugins/shared/es_ui_shared/tsconfig.json new file mode 100644 index 0000000000000..2ec9524e4a111 --- /dev/null +++ b/src/platform/plugins/shared/es_ui_shared/tsconfig.json @@ -0,0 +1,32 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__packages_do_not_import__/**/*", + "common/**/*", + "public/**/*", + "server/**/*", + "static/**/*", + "../../../../../typings/**/*", + ".storybook/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/data-views-plugin", + "@kbn/i18n", + "@kbn/shared-ux-page-kibana-template", + "@kbn/i18n-react", + "@kbn/test-jest-helpers", + "@kbn/share-plugin", + "@kbn/safer-lodash-set", + "@kbn/storybook", + "@kbn/shared-ux-link-redirect-app", + "@kbn/code-editor", + "@kbn/core-application-common", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/src/platform/plugins/shared/esql/jest.integration.config.js b/src/platform/plugins/shared/esql/jest.integration.config.js new file mode 100644 index 0000000000000..33f2103af1ad3 --- /dev/null +++ b/src/platform/plugins/shared/esql/jest.integration.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test/jest_integration', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/plugins/shared/esql'], +}; diff --git a/src/platform/plugins/shared/esql/server/index.ts b/src/platform/plugins/shared/esql/server/index.ts index 775da36c43959..c4b769d83e716 100644 --- a/src/platform/plugins/shared/esql/server/index.ts +++ b/src/platform/plugins/shared/esql/server/index.ts @@ -7,7 +7,9 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const plugin = async () => { +import type { PluginInitializerContext } from '@kbn/core/server'; + +export const plugin = async (initContext: PluginInitializerContext) => { const { EsqlServerPlugin } = await import('./plugin'); - return new EsqlServerPlugin(); + return new EsqlServerPlugin(initContext); }; diff --git a/src/platform/plugins/shared/esql/server/plugin.ts b/src/platform/plugins/shared/esql/server/plugin.ts index a227c8e95b4af..1b145c2f43411 100644 --- a/src/platform/plugins/shared/esql/server/plugin.ts +++ b/src/platform/plugins/shared/esql/server/plugin.ts @@ -7,13 +7,22 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import type { CoreSetup, CoreStart, Plugin } from '@kbn/core/server'; +import type { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from '@kbn/core/server'; import { schema } from '@kbn/config-schema'; import { ContentManagementServerSetup } from '@kbn/content-management-plugin/server'; import { getUiSettings } from './ui_settings'; +import { registerRoutes } from './routes'; export class EsqlServerPlugin implements Plugin { + private readonly initContext: PluginInitializerContext; + + constructor(initContext: PluginInitializerContext) { + this.initContext = { ...initContext }; + } + public setup(core: CoreSetup, plugins: { contentManagement: ContentManagementServerSetup }) { + const { initContext } = this; + core.uiSettings.register(getUiSettings()); plugins.contentManagement.favorites.registerFavoriteType('esql_query', { @@ -23,6 +32,9 @@ export class EsqlServerPlugin implements Plugin { status: schema.string(), }), }); + + registerRoutes(core, initContext); + return {}; } diff --git a/src/platform/plugins/shared/esql/server/routes/get_join_indices.ts b/src/platform/plugins/shared/esql/server/routes/get_join_indices.ts new file mode 100644 index 0000000000000..8fe1b92259d1b --- /dev/null +++ b/src/platform/plugins/shared/esql/server/routes/get_join_indices.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { IRouter, PluginInitializerContext } from '@kbn/core/server'; + +import { EsqlService } from '../services/esql_service'; + +export const registerGetJoinIndicesRoute = ( + router: IRouter, + { logger }: PluginInitializerContext +) => { + router.get( + { + path: '/internal/esql/autocomplete/join/indices', + validate: {}, + }, + async (requestHandlerContext, request, response) => { + try { + const core = await requestHandlerContext.core; + const service = new EsqlService({ client: core.elasticsearch.client.asCurrentUser }); + const result = await service.getJoinIndices(); + + return response.ok({ + body: result, + }); + } catch (error) { + logger.get().debug(error); + throw error; + } + } + ); +}; diff --git a/src/platform/plugins/shared/esql/server/routes/index.ts b/src/platform/plugins/shared/esql/server/routes/index.ts new file mode 100644 index 0000000000000..93947ee1be43d --- /dev/null +++ b/src/platform/plugins/shared/esql/server/routes/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { CoreSetup, PluginInitializerContext } from '@kbn/core/server'; + +import { registerGetJoinIndicesRoute } from './get_join_indices'; + +export const registerRoutes = (setup: CoreSetup, initContext: PluginInitializerContext) => { + const router = setup.http.createRouter(); + + registerGetJoinIndicesRoute(router, initContext); +}; diff --git a/src/platform/plugins/shared/esql/server/services/esql_service.ts b/src/platform/plugins/shared/esql/server/services/esql_service.ts new file mode 100644 index 0000000000000..2861d7859ae41 --- /dev/null +++ b/src/platform/plugins/shared/esql/server/services/esql_service.ts @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { ElasticsearchClient } from '@kbn/core/server'; +import type { JoinIndexAutocompleteItem, JoinIndicesAutocompleteResult } from './types'; + +export interface EsqlServiceOptions { + client: ElasticsearchClient; +} + +export class EsqlService { + constructor(public readonly options: EsqlServiceOptions) {} + + protected async getIndexAliases(indices: string[]): Promise<Record<string, string[]>> { + const result: Record<string, string[]> = {}; + const { client } = this.options; + + // Execute: GET /<index1,index2,...>/_alias + interface AliasesResponse { + [indexName: string]: { + aliases: { + [aliasName: string]: {}; + }; + }; + } + const response = (await client.indices.getAlias({ + index: indices, + })) as AliasesResponse; + + for (const [indexName, { aliases }] of Object.entries(response)) { + const aliasNames = Object.keys(aliases ?? {}); + + if (aliasNames.length > 0) { + result[indexName] = aliasNames; + } + } + + return result; + } + + public async getJoinIndices(): Promise<JoinIndicesAutocompleteResult> { + const { client } = this.options; + + // Execute: GET /_all/_settings/index.mode,aliases?flat_settings=true + interface IndexModeResponse { + [indexName: string]: { + settings: { + 'index.mode': string; + }; + }; + } + const queryByIndexModeResponse = (await client.indices.getSettings({ + name: 'index.mode', + flat_settings: true, + })) as IndexModeResponse; + + const indices: JoinIndexAutocompleteItem[] = []; + const indexNames: string[] = []; + + for (const [name, { settings }] of Object.entries(queryByIndexModeResponse)) { + if (settings['index.mode'] === 'lookup') { + indexNames.push(name); + indices.push({ name, mode: 'lookup', aliases: [] }); + } + } + + const aliases = await this.getIndexAliases(indexNames); + + for (const index of indices) { + index.aliases = aliases[index.name] ?? []; + } + + const result: JoinIndicesAutocompleteResult = { + indices, + }; + + return result; + } +} diff --git a/src/platform/plugins/shared/esql/server/services/integration_tests/esql_service.test.ts b/src/platform/plugins/shared/esql/server/services/integration_tests/esql_service.test.ts new file mode 100644 index 0000000000000..dc73cfade4e7b --- /dev/null +++ b/src/platform/plugins/shared/esql/server/services/integration_tests/esql_service.test.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { EsqlServiceTestbed } from './testbed'; + +describe('EsqlService', () => { + const testbed = new EsqlServiceTestbed(); + + beforeAll(async () => { + await testbed.start(); + await testbed.setupLookupIndices(); + }); + + afterAll(async () => { + await testbed.stop(); + }); + + it('can load ES|QL Autocomplete/Validation indices for JOIN command', async () => { + const url = '/internal/esql/autocomplete/join/indices'; + const result = await testbed.GET(url).send().expect(200); + + const item1 = result.body.indices.find((item: any) => item.name === 'lookup_index1'); + const item2 = result.body.indices.find((item: any) => item.name === 'lookup_index2'); + + expect(item1).toMatchObject({ + name: 'lookup_index1', + mode: 'lookup', + aliases: [], + }); + + item2.aliases.sort(); + + expect(item2).toMatchObject({ + name: 'lookup_index2', + mode: 'lookup', + aliases: ['lookup_index2_alias1', 'lookup_index2_alias2'], + }); + }); +}); diff --git a/src/platform/plugins/shared/esql/server/services/integration_tests/testbed.ts b/src/platform/plugins/shared/esql/server/services/integration_tests/testbed.ts new file mode 100644 index 0000000000000..95de7fdf562c3 --- /dev/null +++ b/src/platform/plugins/shared/esql/server/services/integration_tests/testbed.ts @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { ElasticsearchClient } from '@kbn/core/server'; +import { + createTestServers, + request, + type TestUtils, + type TestElasticsearchUtils, + type TestKibanaUtils, +} from '@kbn/core-test-helpers-kbn-server'; + +export class EsqlServiceTestbed { + public servers?: TestUtils; + public es?: TestElasticsearchUtils; + public kibana?: TestKibanaUtils; + + public async start() { + this.servers = createTestServers({ adjustTimeout: jest.setTimeout }); + this.es = await this.servers.startES(); + this.kibana = await this.servers.startKibana(); + } + + public async stop() { + await this.kibana?.root?.shutdown(); + await this.kibana?.stop(); + await this.es?.stop(); + } + + public esClient(): ElasticsearchClient { + const client = this.kibana?.coreStart.elasticsearch.client.asInternalUser; + + if (!client) { + throw new Error('ES client not available, make sure to call `.start()`'); + } + + return client; + } + + public async setupLookupIndices() { + const client = this.esClient(); + + await client.indices.create({ + index: 'lookup_index1', + body: { + settings: { + 'index.mode': 'lookup', + }, + mappings: { + properties: { + field1: { type: 'keyword' }, + }, + }, + }, + }); + + // Lookup index with aliases + await client.indices.create({ + index: 'lookup_index2', + body: { + settings: { + 'index.mode': 'lookup', + }, + aliases: { + lookup_index2_alias1: {}, + lookup_index2_alias2: {}, + }, + mappings: { + properties: { + field2: { type: 'keyword' }, + }, + }, + }, + }); + } + + public readonly GET = (path: string) => { + return request.get(this.kibana!.root, path).set('x-elastic-internal-origin', 'esql-test'); + }; +} diff --git a/src/platform/plugins/shared/esql/server/services/types.ts b/src/platform/plugins/shared/esql/server/services/types.ts new file mode 100644 index 0000000000000..025a627653d56 --- /dev/null +++ b/src/platform/plugins/shared/esql/server/services/types.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export interface JoinIndicesAutocompleteResult { + indices: JoinIndexAutocompleteItem[]; +} + +export interface JoinIndexAutocompleteItem { + name: string; + mode: 'lookup' | string; + aliases: string[]; +} diff --git a/src/platform/plugins/shared/esql/tsconfig.json b/src/platform/plugins/shared/esql/tsconfig.json index 699fce107f1da..bacd508aa7ea6 100644 --- a/src/platform/plugins/shared/esql/tsconfig.json +++ b/src/platform/plugins/shared/esql/tsconfig.json @@ -26,6 +26,7 @@ "@kbn/usage-collection-plugin", "@kbn/content-management-plugin", "@kbn/kibana-utils-plugin", + "@kbn/core-test-helpers-kbn-server", ], "exclude": [ "target/**/*", diff --git a/src/platform/plugins/shared/management/README.md b/src/platform/plugins/shared/management/README.md new file mode 100644 index 0000000000000..f3135cd9dd2da --- /dev/null +++ b/src/platform/plugins/shared/management/README.md @@ -0,0 +1,41 @@ +# Management Plugin + +This plugins contains the "Stack Management" page framework. It offers navigation and an API +to link individual management section into it. This plugin does not contain any individual +management section itself. + +## Cards navigation + +This plugin offers a special version of its landing page with a special feature called "cards navigation". +This feature can be enabled by calling the `setupCardsNavigation` method from the `management` plugin from +your plugin's `setup` method: + +``` + management.setupCardsNavigation({ enabled: true }); +``` + +The cards that will be shown are defined in the `src/platform/packages/shared/kbn-management/cards_navigation/src/consts.tsx` file +and they are grouped into categories. These cards are computed based on the `SectionsService` that is provided +in the `management` plugin. + +### Adding a new card to the navigation + +For adding a new item to the navigation all you have to do is edit the `src/platform/packages/shared/kbn-management/cards_navigation/src/consts.tsx` +file and add two things: + +* Add the app id into the `appIds` enum (make sure that the app_id value matches the one from the plugin) +* Add a new entry to the `appDefinitions` object. In here you can specify the category where you want it to be, icon and description. + + +### Removing an item from the navigation + +If card needs to be hidden from the navigation you can specify that by using the `hideLinksTo` prop: + +``` + management.setupCardsNavigation({ + enabled: true, + hideLinksTo: [appIds.MAINTENANCE_WINDOWS], + }); +``` + +More specifics about the `setupCardsNavigation` can be found in `src/platform/packages/shared/kbn-management/cards_navigation/readme.mdx`. diff --git a/src/plugins/management/common/contants.ts b/src/platform/plugins/shared/management/common/contants.ts similarity index 100% rename from src/plugins/management/common/contants.ts rename to src/platform/plugins/shared/management/common/contants.ts diff --git a/src/plugins/management/common/index.ts b/src/platform/plugins/shared/management/common/index.ts similarity index 100% rename from src/plugins/management/common/index.ts rename to src/platform/plugins/shared/management/common/index.ts diff --git a/src/plugins/management/common/locator.test.ts b/src/platform/plugins/shared/management/common/locator.test.ts similarity index 100% rename from src/plugins/management/common/locator.test.ts rename to src/platform/plugins/shared/management/common/locator.test.ts diff --git a/src/plugins/management/common/locator.ts b/src/platform/plugins/shared/management/common/locator.ts similarity index 100% rename from src/plugins/management/common/locator.ts rename to src/platform/plugins/shared/management/common/locator.ts diff --git a/src/platform/plugins/shared/management/jest.config.js b/src/platform/plugins/shared/management/jest.config.js new file mode 100644 index 0000000000000..bae14a396ffe1 --- /dev/null +++ b/src/platform/plugins/shared/management/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/plugins/shared/management'], + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/platform/plugins/shared/management', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/src/platform/plugins/shared/management/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/src/plugins/management/kibana.jsonc b/src/platform/plugins/shared/management/kibana.jsonc similarity index 100% rename from src/plugins/management/kibana.jsonc rename to src/platform/plugins/shared/management/kibana.jsonc diff --git a/src/plugins/management/public/application.tsx b/src/platform/plugins/shared/management/public/application.tsx similarity index 100% rename from src/plugins/management/public/application.tsx rename to src/platform/plugins/shared/management/public/application.tsx diff --git a/src/plugins/management/public/components/index.ts b/src/platform/plugins/shared/management/public/components/index.ts similarity index 100% rename from src/plugins/management/public/components/index.ts rename to src/platform/plugins/shared/management/public/components/index.ts diff --git a/src/plugins/management/public/components/landing/classic_empty_prompt.tsx b/src/platform/plugins/shared/management/public/components/landing/classic_empty_prompt.tsx similarity index 100% rename from src/plugins/management/public/components/landing/classic_empty_prompt.tsx rename to src/platform/plugins/shared/management/public/components/landing/classic_empty_prompt.tsx diff --git a/src/plugins/management/public/components/landing/index.ts b/src/platform/plugins/shared/management/public/components/landing/index.ts similarity index 100% rename from src/plugins/management/public/components/landing/index.ts rename to src/platform/plugins/shared/management/public/components/landing/index.ts diff --git a/src/plugins/management/public/components/landing/landing.test.tsx b/src/platform/plugins/shared/management/public/components/landing/landing.test.tsx similarity index 100% rename from src/plugins/management/public/components/landing/landing.test.tsx rename to src/platform/plugins/shared/management/public/components/landing/landing.test.tsx diff --git a/src/plugins/management/public/components/landing/landing.tsx b/src/platform/plugins/shared/management/public/components/landing/landing.tsx similarity index 100% rename from src/plugins/management/public/components/landing/landing.tsx rename to src/platform/plugins/shared/management/public/components/landing/landing.tsx diff --git a/src/plugins/management/public/components/landing/solution_empty_prompt.tsx b/src/platform/plugins/shared/management/public/components/landing/solution_empty_prompt.tsx similarity index 100% rename from src/plugins/management/public/components/landing/solution_empty_prompt.tsx rename to src/platform/plugins/shared/management/public/components/landing/solution_empty_prompt.tsx diff --git a/src/plugins/management/public/components/management_app/index.ts b/src/platform/plugins/shared/management/public/components/management_app/index.ts similarity index 100% rename from src/plugins/management/public/components/management_app/index.ts rename to src/platform/plugins/shared/management/public/components/management_app/index.ts diff --git a/src/plugins/management/public/components/management_app/management_app.scss b/src/platform/plugins/shared/management/public/components/management_app/management_app.scss similarity index 100% rename from src/plugins/management/public/components/management_app/management_app.scss rename to src/platform/plugins/shared/management/public/components/management_app/management_app.scss diff --git a/src/plugins/management/public/components/management_app/management_app.tsx b/src/platform/plugins/shared/management/public/components/management_app/management_app.tsx similarity index 100% rename from src/plugins/management/public/components/management_app/management_app.tsx rename to src/platform/plugins/shared/management/public/components/management_app/management_app.tsx diff --git a/src/plugins/management/public/components/management_app/management_context.tsx b/src/platform/plugins/shared/management/public/components/management_app/management_context.tsx similarity index 100% rename from src/plugins/management/public/components/management_app/management_context.tsx rename to src/platform/plugins/shared/management/public/components/management_app/management_context.tsx diff --git a/src/plugins/management/public/components/management_app/management_router.tsx b/src/platform/plugins/shared/management/public/components/management_app/management_router.tsx similarity index 100% rename from src/plugins/management/public/components/management_app/management_router.tsx rename to src/platform/plugins/shared/management/public/components/management_app/management_router.tsx diff --git a/src/plugins/management/public/components/management_app_wrapper/index.tsx b/src/platform/plugins/shared/management/public/components/management_app_wrapper/index.tsx similarity index 100% rename from src/plugins/management/public/components/management_app_wrapper/index.tsx rename to src/platform/plugins/shared/management/public/components/management_app_wrapper/index.tsx diff --git a/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx b/src/platform/plugins/shared/management/public/components/management_app_wrapper/management_app_wrapper.tsx similarity index 100% rename from src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx rename to src/platform/plugins/shared/management/public/components/management_app_wrapper/management_app_wrapper.tsx diff --git a/src/plugins/management/public/components/management_sections.tsx b/src/platform/plugins/shared/management/public/components/management_sections.tsx similarity index 100% rename from src/plugins/management/public/components/management_sections.tsx rename to src/platform/plugins/shared/management/public/components/management_sections.tsx diff --git a/src/plugins/management/public/components/management_sidebar_nav/index.ts b/src/platform/plugins/shared/management/public/components/management_sidebar_nav/index.ts similarity index 100% rename from src/plugins/management/public/components/management_sidebar_nav/index.ts rename to src/platform/plugins/shared/management/public/components/management_sidebar_nav/index.ts diff --git a/src/plugins/management/public/components/management_sidebar_nav/management_sidebar_nav.scss b/src/platform/plugins/shared/management/public/components/management_sidebar_nav/management_sidebar_nav.scss similarity index 100% rename from src/plugins/management/public/components/management_sidebar_nav/management_sidebar_nav.scss rename to src/platform/plugins/shared/management/public/components/management_sidebar_nav/management_sidebar_nav.scss diff --git a/src/plugins/management/public/components/management_sidebar_nav/management_sidebar_nav.tsx b/src/platform/plugins/shared/management/public/components/management_sidebar_nav/management_sidebar_nav.tsx similarity index 100% rename from src/plugins/management/public/components/management_sidebar_nav/management_sidebar_nav.tsx rename to src/platform/plugins/shared/management/public/components/management_sidebar_nav/management_sidebar_nav.tsx diff --git a/src/plugins/management/public/index.ts b/src/platform/plugins/shared/management/public/index.ts similarity index 100% rename from src/plugins/management/public/index.ts rename to src/platform/plugins/shared/management/public/index.ts diff --git a/src/plugins/management/public/management_sections_service.test.ts b/src/platform/plugins/shared/management/public/management_sections_service.test.ts similarity index 100% rename from src/plugins/management/public/management_sections_service.test.ts rename to src/platform/plugins/shared/management/public/management_sections_service.test.ts diff --git a/src/plugins/management/public/management_sections_service.ts b/src/platform/plugins/shared/management/public/management_sections_service.ts similarity index 100% rename from src/plugins/management/public/management_sections_service.ts rename to src/platform/plugins/shared/management/public/management_sections_service.ts diff --git a/src/plugins/management/public/mocks/index.ts b/src/platform/plugins/shared/management/public/mocks/index.ts similarity index 100% rename from src/plugins/management/public/mocks/index.ts rename to src/platform/plugins/shared/management/public/mocks/index.ts diff --git a/src/plugins/management/public/plugin.tsx b/src/platform/plugins/shared/management/public/plugin.tsx similarity index 100% rename from src/plugins/management/public/plugin.tsx rename to src/platform/plugins/shared/management/public/plugin.tsx diff --git a/src/plugins/management/public/types.ts b/src/platform/plugins/shared/management/public/types.ts similarity index 100% rename from src/plugins/management/public/types.ts rename to src/platform/plugins/shared/management/public/types.ts diff --git a/src/plugins/management/public/utils/breadcrumbs.ts b/src/platform/plugins/shared/management/public/utils/breadcrumbs.ts similarity index 100% rename from src/plugins/management/public/utils/breadcrumbs.ts rename to src/platform/plugins/shared/management/public/utils/breadcrumbs.ts diff --git a/src/plugins/management/public/utils/index.ts b/src/platform/plugins/shared/management/public/utils/index.ts similarity index 100% rename from src/plugins/management/public/utils/index.ts rename to src/platform/plugins/shared/management/public/utils/index.ts diff --git a/src/plugins/management/public/utils/management_app.ts b/src/platform/plugins/shared/management/public/utils/management_app.ts similarity index 100% rename from src/plugins/management/public/utils/management_app.ts rename to src/platform/plugins/shared/management/public/utils/management_app.ts diff --git a/src/plugins/management/public/utils/management_item.ts b/src/platform/plugins/shared/management/public/utils/management_item.ts similarity index 100% rename from src/plugins/management/public/utils/management_item.ts rename to src/platform/plugins/shared/management/public/utils/management_item.ts diff --git a/src/plugins/management/public/utils/management_section.test.ts b/src/platform/plugins/shared/management/public/utils/management_section.test.ts similarity index 100% rename from src/plugins/management/public/utils/management_section.test.ts rename to src/platform/plugins/shared/management/public/utils/management_section.test.ts diff --git a/src/plugins/management/public/utils/management_section.ts b/src/platform/plugins/shared/management/public/utils/management_section.ts similarity index 100% rename from src/plugins/management/public/utils/management_section.ts rename to src/platform/plugins/shared/management/public/utils/management_section.ts diff --git a/src/plugins/management/server/capabilities_provider.ts b/src/platform/plugins/shared/management/server/capabilities_provider.ts similarity index 100% rename from src/plugins/management/server/capabilities_provider.ts rename to src/platform/plugins/shared/management/server/capabilities_provider.ts diff --git a/src/plugins/management/server/config.ts b/src/platform/plugins/shared/management/server/config.ts similarity index 100% rename from src/plugins/management/server/config.ts rename to src/platform/plugins/shared/management/server/config.ts diff --git a/src/plugins/management/server/index.ts b/src/platform/plugins/shared/management/server/index.ts similarity index 100% rename from src/plugins/management/server/index.ts rename to src/platform/plugins/shared/management/server/index.ts diff --git a/src/plugins/management/server/plugin.ts b/src/platform/plugins/shared/management/server/plugin.ts similarity index 100% rename from src/plugins/management/server/plugin.ts rename to src/platform/plugins/shared/management/server/plugin.ts diff --git a/src/platform/plugins/shared/management/tsconfig.json b/src/platform/plugins/shared/management/tsconfig.json new file mode 100644 index 0000000000000..a32ec64ec1ee8 --- /dev/null +++ b/src/platform/plugins/shared/management/tsconfig.json @@ -0,0 +1,36 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/utility-types", + "@kbn/share-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/shared-ux-page-kibana-template", + "@kbn/shared-ux-router", + "@kbn/management-cards-navigation", + "@kbn/shared-ux-link-redirect-app", + "@kbn/test-jest-helpers", + "@kbn/config-schema", + "@kbn/serverless", + "@kbn/shared-ux-error-boundary", + "@kbn/deeplinks-management", + "@kbn/react-kibana-context-render", + "@kbn/core-chrome-browser", + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/src/plugins/advanced_settings/README.md b/src/plugins/advanced_settings/README.md index 5403974bfe686..0154d73c46f46 100644 --- a/src/plugins/advanced_settings/README.md +++ b/src/plugins/advanced_settings/README.md @@ -1,5 +1,5 @@ # Advanced Settings -This plugin registers the [management settings application](packages/kbn-management/settings/application/application.tsx) +This plugin registers the [management settings application](src/platform/packages/private/kbn-management/settings/application/application.tsx) allowing users to configure their advanced settings, also known as uiSettings within the code. \ No newline at end of file diff --git a/src/plugins/ai_assistant_management/selection/jest.config.js b/src/plugins/ai_assistant_management/selection/jest.config.js deleted file mode 100644 index 9106de820a29d..0000000000000 --- a/src/plugins/ai_assistant_management/selection/jest.config.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/src/plugins/ai_assistant_management/selection'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/src/plugins/ai_assistant_management/selection', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/src/plugins/ai_assistant_management/selection/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/src/plugins/ai_assistant_management/selection/tsconfig.json b/src/plugins/ai_assistant_management/selection/tsconfig.json deleted file mode 100644 index 6bd8efe0e80b8..0000000000000 --- a/src/plugins/ai_assistant_management/selection/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": ["common/**/*", "public/**/*", "server/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/management-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/core-chrome-browser", - "@kbn/typed-react-router-config", - "@kbn/serverless", - "@kbn/config-schema", - "@kbn/core-plugins-server", - "@kbn/features-plugin", - "@kbn/config", - "@kbn/doc-links" - ], - "exclude": ["target/**/*"] -} diff --git a/src/plugins/chart_expressions/expression_metric/common/expression_functions/metric_vis_function.ts b/src/plugins/chart_expressions/expression_metric/common/expression_functions/metric_vis_function.ts index 5e4bd45c03f5d..0a00a0cbf73d0 100644 --- a/src/plugins/chart_expressions/expression_metric/common/expression_functions/metric_vis_function.ts +++ b/src/plugins/chart_expressions/expression_metric/common/expression_functions/metric_vis_function.ts @@ -212,7 +212,7 @@ export const metricVisFunction = (): MetricVisExpressionFunctionDefinition => ({ secondaryPrefix: args.secondaryPrefix, color: args.color, icon: args.icon, - palette: args.palette?.params, + palette: args.palette, progressDirection: args.progressDirection, titlesTextAlign: args.titlesTextAlign, valuesTextAlign: args.valuesTextAlign, diff --git a/src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts b/src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts index 2eae93f88c020..f07a8297540ed 100644 --- a/src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts +++ b/src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts @@ -10,6 +10,7 @@ import { ExpressionValueVisDimension } from '@kbn/visualizations-plugin/common'; import { CustomPaletteState } from '@kbn/charts-plugin/common'; import { LayoutDirection, MetricStyle } from '@elastic/charts'; +import { PaletteOutput } from '@kbn/coloring'; import { TrendlineResult } from './expression_functions'; export const visType = 'metric'; @@ -26,7 +27,7 @@ export interface MetricVisParam { secondaryPrefix?: string; color?: string; icon?: string; - palette?: CustomPaletteState; + palette?: PaletteOutput<CustomPaletteState>; progressDirection?: LayoutDirection; titlesTextAlign: MetricStyle['titlesTextAlign']; valuesTextAlign: MetricStyle['valuesTextAlign']; diff --git a/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.test.tsx b/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.test.tsx index 38d8e4d695c8d..db0a85f1f9f3a 100644 --- a/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.test.tsx +++ b/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.test.tsx @@ -27,6 +27,7 @@ import { CustomPaletteState } from '@kbn/charts-plugin/common/expressions/palett import { DimensionsVisParam, MetricVisParam } from '../../common'; import { euiThemeVars } from '@kbn/ui-theme'; import { DEFAULT_TRENDLINE_NAME } from '../../common/constants'; +import { PaletteOutput } from '@kbn/coloring'; import { faker } from '@faker-js/faker'; const mockDeserialize = jest.fn(({ id }: { id: string }) => { @@ -1160,12 +1161,16 @@ describe('MetricVisComponent', function () { // should be overridden color: 'static-color', palette: { - colors: [], - gradient: true, - stops: [], - range: 'number', - rangeMin: 2, - rangeMax: 10, + type: 'palette', + name: 'default', + params: { + colors: [], + gradient: true, + stops: [], + range: 'number', + rangeMin: 2, + rangeMax: 10, + }, }, }, }} @@ -1200,7 +1205,7 @@ describe('MetricVisComponent', function () { describe('percent-based', () => { const renderWithPalette = ( - palette: CustomPaletteState, + palette: PaletteOutput<CustomPaletteState>, dimensions: MetricVisComponentProps['config']['dimensions'] ) => shallow( @@ -1238,13 +1243,17 @@ describe('MetricVisComponent', function () { renderWithPalette( { - range: 'percent', - // the rest of these params don't matter - colors: [], - gradient: false, - stops: [], - rangeMin: 2, - rangeMax: 10, + type: 'palette', + name: 'default', + params: { + range: 'percent', + // the rest of these params don't matter + colors: [], + gradient: false, + stops: [], + rangeMin: 2, + rangeMax: 10, + }, }, dimensions as DimensionsVisParam ); diff --git a/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.tsx b/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.tsx index 4a75f5cdf7b00..00fe4ac948f05 100644 --- a/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.tsx +++ b/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.tsx @@ -36,7 +36,7 @@ import { FieldFormatConvertFunction, SerializedFieldFormat, } from '@kbn/field-formats-plugin/common'; -import { CUSTOM_PALETTE } from '@kbn/coloring'; +import { CUSTOM_PALETTE, PaletteOutput } from '@kbn/coloring'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; import { useResizeObserver, useEuiScrollBar, EuiIcon } from '@elastic/eui'; @@ -100,14 +100,14 @@ const getMetricFormatter = ( const getColor = ( value: number, - paletteParams: CustomPaletteState, + palette: PaletteOutput<CustomPaletteState>, accessors: { metric: string; max?: string; breakdownBy?: string }, data: Datatable, rowNumber: number ) => { const { min, max } = getDataBoundsForPalette(accessors, data, rowNumber); - return getPaletteService().get(CUSTOM_PALETTE)?.getColorForValue?.(value, paletteParams, { + return getPaletteService().get(CUSTOM_PALETTE)?.getColorForValue?.(value, palette.params, { min, max, }); @@ -236,7 +236,7 @@ export const MetricVis = ({ icon: config.metric?.icon ? getIcon(config.metric?.icon) : undefined, extra: renderSecondaryMetric(data.columns, row, config), color: - config.metric.palette && value != null + config.metric.palette?.params && value != null ? getColor( value, config.metric.palette, diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx index 816a10509b425..549742b7e3401 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx +++ b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx @@ -41,6 +41,7 @@ import { } from '@kbn/expressions-plugin/public'; import type { FieldFormat } from '@kbn/field-formats-plugin/common'; import { getOverridesFor } from '@kbn/chart-expressions-common'; +import { useKbnPalettes } from '@kbn/palettes'; import { useAppFixedViewport } from '@kbn/core-rendering-browser'; import { consolidateMetricColumns } from '../../common/utils'; import { DEFAULT_PERCENT_DECIMALS } from '../../common/constants'; @@ -117,6 +118,7 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { } = props; const visParams = useMemo(() => filterOutConfig(visType, preVisParams), [preVisParams, visType]); const chartBaseTheme = props.chartsThemeService.useChartsBaseTheme(); + const palettes = useKbnPalettes(); const { table: visData, @@ -312,6 +314,7 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { { ...props.uiState?.get('vis.colors', {}), ...props.visParams.labels.colorOverrides }, visData.rows, props.palettesRegistry, + palettes, formatters, services.fieldFormats, syncColors, @@ -325,6 +328,7 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { props.uiState, props.visParams.labels.colorOverrides, props.palettesRegistry, + palettes, formatters, services.fieldFormats, syncColors, diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/colors/color_mapping_accessors.ts b/src/plugins/chart_expressions/expression_partition_vis/public/utils/colors/color_mapping_accessors.ts index dcfcccaa3b53e..8368e98b83715 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/colors/color_mapping_accessors.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/colors/color_mapping_accessors.ts @@ -8,7 +8,7 @@ */ import { NodeColorAccessor, PATH_KEY } from '@elastic/charts'; -import { lightenColor } from '@kbn/charts-plugin/public'; +import { decreaseOpacity } from '@kbn/charts-plugin/public'; import { MultiFieldKey } from '@kbn/data-plugin/common'; import { getColorFactory } from '@kbn/coloring'; import { isMultiFieldKey } from '@kbn/data-plugin/common'; @@ -34,8 +34,8 @@ const getPieFillColor = // first two are: small multiple and pie whole center. const category = getCategoryKeys(path[2].value); const color = getColorFn(category); - // increase the lightness of the color on each layer. - return lightenColor(color, layerIndex + 1, numOfLayers); + // progressively decrease opacity of base color on each layer. + return decreaseOpacity(color, layerIndex + 1, numOfLayers); }; /** diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.ts b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.ts index b6de7fc728ede..6bd8d188f78c5 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.ts @@ -75,7 +75,7 @@ const getDistinctColor = ( isSplitChart: boolean, overwriteColors: { [key: string]: string } = {}, visParams: PartitionVisParams, - palettes: PaletteRegistry | null, + paletteService: PaletteRegistry | null, syncColors: boolean, { parentSeries, allSeries }: DistinctSeries, formattedCategoricalKey: string @@ -93,7 +93,7 @@ const getDistinctColor = ( const index = allSeries.findIndex((d) => isEqual(d, categoricalKey)); const isSplitParentLayer = isSplitChart && parentSeries.includes(categoricalKey); - return palettes?.get(visParams.palette.name).getCategoricalColor( + return paletteService?.get(visParams.palette.name).getCategoricalColor( [ { name: categoricalKey, @@ -207,7 +207,7 @@ export const getColor = ( distinctSeries: DistinctSeries, { columnsLength, rowsLength }: { columnsLength: number; rowsLength: number }, visParams: PartitionVisParams, - palettes: PaletteRegistry | null, + paletteService: PaletteRegistry | null, byDataPalette: ReturnType<typeof byDataColorPaletteMap> | undefined, syncColors: boolean, isDarkMode: boolean, @@ -230,7 +230,7 @@ export const getColor = ( isSplitChart, overwriteColors, visParams, - palettes, + paletteService, syncColors, distinctSeries, name @@ -271,7 +271,7 @@ export const getColor = ( } } - const outputColor = palettes?.get(visParams.palette.name).getCategoricalColor( + const outputColor = paletteService?.get(visParams.palette.name).getCategoricalColor( seriesLayers, { behindText: visParams.labels.show || isTreemapOrMosaicChart(chartType), diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts index d6c6e7d315924..eb211ad481899 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts @@ -13,8 +13,11 @@ import { BucketColumns, ChartTypes } from '../../../common/types'; import { createMockPieParams, createMockVisData } from '../../mocks'; import { getPaletteRegistry } from '../../__mocks__/palettes'; import { getLayers } from './get_layers'; +import { getKbnPalettes } from '@kbn/palettes'; describe('getLayers', () => { + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + it('preserves slice order for multi-metric layer', () => { const visData = createMockVisData(); const columns: BucketColumns[] = [ @@ -43,6 +46,7 @@ describe('getLayers', () => { {}, [], getPaletteRegistry(), + palettes, {}, fieldFormatsMock, false, @@ -153,6 +157,7 @@ describe('getLayers', () => { {}, [], getPaletteRegistry(), + palettes, {}, fieldFormatsMock, false, diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.ts b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.ts index c83353d4d8396..4346dd6ae4928 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.ts @@ -8,19 +8,14 @@ */ import { Datum, PartitionLayer } from '@elastic/charts'; -import { - PaletteRegistry, - getColorFactory, - getPalette, - AVAILABLE_PALETTES, - NeutralPalette, -} from '@kbn/coloring'; +import { PaletteRegistry, getColorFactory } from '@kbn/coloring'; import { i18n } from '@kbn/i18n'; import { FieldFormat } from '@kbn/field-formats-plugin/common'; import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import type { Datatable, DatatableRow } from '@kbn/expressions-plugin/public'; import { getColorCategories } from '@kbn/chart-expressions-common'; +import { KbnPalettes } from '@kbn/palettes'; import { getDistinctSeries } from '..'; import { BucketColumns, ChartTypes, PartitionVisParams } from '../../../common/types'; import { sortPredicateByType, sortPredicateSaveSourceOrder } from './sort_predicate'; @@ -41,7 +36,8 @@ export const getLayers = ( visData: Datatable, overwriteColors: { [key: string]: string } = {}, rows: DatatableRow[], - palettes: PaletteRegistry | null, + paletteService: PaletteRegistry | null, + palettes: KbnPalettes, formatters: Record<string, FieldFormat | undefined>, formatter: FieldFormatsStart, syncColors: boolean, @@ -59,11 +55,11 @@ export const getLayers = ( const isSplitChart = Boolean(visParams.dimensions.splitColumn || visParams.dimensions.splitRow); let byDataPalette: ReturnType<typeof byDataColorPaletteMap>; - if (!syncColors && columns[1]?.id && palettes && visParams.palette) { + if (!syncColors && columns[1]?.id && paletteService && visParams.palette) { byDataPalette = byDataColorPaletteMap( rows, columns[1], - palettes?.get(visParams.palette.name), + paletteService?.get(visParams.palette.name), visParams.palette, formatters, formatter @@ -79,8 +75,9 @@ export const getLayers = ( chartType, columns, rows, - isDarkMode, - visParams + palettes, + visParams, + isDarkMode ); return columns.map((col, layerIndex) => { @@ -110,7 +107,7 @@ export const getLayers = ( distinctSeries, { columnsLength: columns.length, rowsLength: rows.length }, visParams, - palettes, + paletteService, byDataPalette, syncColors, isDarkMode, @@ -131,8 +128,9 @@ function getColorFromMappingFactory( chartType: ChartTypes, columns: Array<Partial<BucketColumns>>, rows: DatatableRow[], - isDarkMode: boolean, - visParams: PartitionVisParams + palettes: KbnPalettes, + visParams: PartitionVisParams, + isDarkMode: boolean ): undefined | ((category: string | string[]) => string) { const { colorMapping, dimensions } = visParams; @@ -151,19 +149,14 @@ function getColorFromMappingFactory( } // the mosaic configures the main categories in the second column, instead of the first // as it happens in all the other partition types. - // Independentely from the bucket aggregation used, the categories will always be casted + // Independently from the bucket aggregation used, the categories will always be casted // as string to make it nicely working with a text input field, avoiding a field const categories = chartType === ChartTypes.MOSAIC && columns.length === 2 ? getColorCategories(rows, columns[1]?.id) : getColorCategories(rows, columns[0]?.id); - return getColorFactory( - JSON.parse(colorMapping), - getPalette(AVAILABLE_PALETTES, NeutralPalette), - isDarkMode, - { - type: 'categories', - categories, - } - ); + return getColorFactory(JSON.parse(colorMapping), palettes, isDarkMode, { + type: 'categories', + categories, + }); } diff --git a/src/plugins/chart_expressions/expression_partition_vis/tsconfig.json b/src/plugins/chart_expressions/expression_partition_vis/tsconfig.json index 1d8c4c4098728..ec1ac8ee94edc 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/tsconfig.json +++ b/src/plugins/chart_expressions/expression_partition_vis/tsconfig.json @@ -31,6 +31,7 @@ "@kbn/cell-actions", "@kbn/react-kibana-context-render", "@kbn/core-rendering-browser", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx b/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx index 12a7991a68adf..46064ebd6b6e2 100644 --- a/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx +++ b/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx @@ -23,19 +23,13 @@ import { WordCloudElementEvent, } from '@elastic/charts'; import { EmptyPlaceholder } from '@kbn/charts-plugin/public'; -import { - PaletteRegistry, - PaletteOutput, - getColorFactory, - getPalette, - AVAILABLE_PALETTES, - NeutralPalette, -} from '@kbn/coloring'; +import { PaletteRegistry, PaletteOutput, getColorFactory } from '@kbn/coloring'; import { IInterpreterRenderHandlers, DatatableRow } from '@kbn/expressions-plugin/public'; import { getColorCategories, getOverridesFor } from '@kbn/chart-expressions-common'; import type { AllowedSettingsOverrides, AllowedChartOverrides } from '@kbn/charts-plugin/common'; import { getColumnByAccessor, getFormatByAccessor } from '@kbn/visualizations-plugin/common/utils'; import { isMultiFieldKey } from '@kbn/data-plugin/common'; +import { KbnPalettes, useKbnPalettes } from '@kbn/palettes'; import { getFormatService } from '../format_service'; import { TagcloudRendererConfig } from '../../common/types'; import { ScaleOptions, Orientation } from '../../common/constants'; @@ -56,13 +50,13 @@ const calculateWeight = (value: number, x1: number, y1: number, x2: number, y2: ((value - x1) * (y2 - x2)) / (y1 - x1) + x2; const getColor = ( - palettes: PaletteRegistry, + paletteService: PaletteRegistry, activePalette: PaletteOutput, text: string, values: string[], syncColors: boolean ) => { - return palettes?.get(activePalette?.name)?.getCategoricalColor( + return paletteService?.get(activePalette?.name)?.getCategoricalColor( [ { name: text, @@ -106,6 +100,7 @@ export const TagCloudChart = ({ isDarkMode, }: TagCloudChartProps) => { const [warning, setWarning] = useState(false); + const palettes = useKbnPalettes(); const { bucket, metric, scale, palette, showLabel, orientation, colorMapping } = visParams; const bucketFormatter = useMemo(() => { @@ -128,6 +123,7 @@ export const TagCloudChart = ({ const colorFromMappingFn = getColorFromMappingFactory( tagColumn, visData.rows, + palettes, isDarkMode, colorMapping ); @@ -149,15 +145,16 @@ export const TagCloudChart = ({ }); }, [ bucket, - bucketFormatter, - metric, - palette, - palettesRegistry, - syncColors, visData.columns, visData.rows, - colorMapping, + metric, + palettes, isDarkMode, + colorMapping, + bucketFormatter, + palettesRegistry, + palette, + syncColors, ]); useEffect(() => { @@ -320,6 +317,7 @@ export { TagCloudChart as default }; function getColorFromMappingFactory( tagColumn: string | undefined, rows: DatatableRow[], + palettes: KbnPalettes, isDarkMode: boolean, colorMapping?: string ): undefined | ((category: string | string[]) => string) { @@ -327,13 +325,8 @@ function getColorFromMappingFactory( // return undefined, we will use the legacy color mapping instead return undefined; } - return getColorFactory( - JSON.parse(colorMapping), - getPalette(AVAILABLE_PALETTES, NeutralPalette), - isDarkMode, - { - type: 'categories', - categories: getColorCategories(rows, tagColumn), - } - ); + return getColorFactory(JSON.parse(colorMapping), palettes, isDarkMode, { + type: 'categories', + categories: getColorCategories(rows, tagColumn), + }); } diff --git a/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json b/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json index 40caf4e3b00f0..485c561bda281 100644 --- a/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json +++ b/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json @@ -28,6 +28,7 @@ "@kbn/chart-icons", "@kbn/data-plugin", "@kbn/react-kibana-context-render", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap index 5cfd34c6c8b5a..c01267bf3acd7 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap +++ b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap @@ -1751,6 +1751,13 @@ exports[`XYChart component it renders area 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -3306,6 +3313,13 @@ exports[`XYChart component it renders bar 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -4861,6 +4875,13 @@ exports[`XYChart component it renders horizontal bar 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -6416,6 +6437,13 @@ exports[`XYChart component it renders line 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -7971,6 +7999,13 @@ exports[`XYChart component it renders stacked area 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -9526,6 +9561,13 @@ exports[`XYChart component it renders stacked bar 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -11081,6 +11123,13 @@ exports[`XYChart component it renders stacked horizontal bar 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -12862,6 +12911,13 @@ exports[`XYChart component split chart should render split chart if both, splitR "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -14650,6 +14706,13 @@ exports[`XYChart component split chart should render split chart if splitColumnA "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -16436,6 +16499,13 @@ exports[`XYChart component split chart should render split chart if splitRowAcce "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" diff --git a/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx b/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx index 3335f29029904..df51a0869ecea 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx @@ -20,6 +20,7 @@ import { PaletteRegistry } from '@kbn/coloring'; import { FormatFactory } from '@kbn/field-formats-plugin/common'; import { getAccessorByDimension } from '@kbn/visualizations-plugin/common/utils'; import { PersistedState } from '@kbn/visualizations-plugin/public'; +import { KbnPalettes } from '@kbn/palettes'; import { CommonXYDataLayerConfig, EndValue, @@ -49,6 +50,7 @@ interface Props { fittingFunction?: FittingFunction; endValue?: EndValue | undefined; paletteService: PaletteRegistry; + palettes: KbnPalettes; formattedDatatables: DatatablesWithFormatInfo; syncColors: boolean; timeZone: string; @@ -75,6 +77,7 @@ export const DataLayers: FC<Props> = ({ minBarHeight, formatFactory, paletteService, + palettes, fittingFunction, emphasizeFitting, yAxesConfiguration, @@ -163,6 +166,7 @@ export const DataLayers: FC<Props> = ({ formatFactory, columnToLabelMap, paletteService, + palettes, formattedDatatableInfo, syncColors, yAxis, diff --git a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx index 349af46eb101a..3ebc9efcd6c0a 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx @@ -38,6 +38,7 @@ import { IconType } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { PaletteRegistry } from '@kbn/coloring'; import { RenderMode } from '@kbn/expressions-plugin/common'; +import { useKbnPalettes } from '@kbn/palettes'; import { ESQL_TABLE_TYPE } from '@kbn/data-plugin/common'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { EmptyPlaceholder, LegendToggle } from '@kbn/charts-plugin/public'; @@ -233,6 +234,7 @@ export function XYChart({ const chartRef = useRef<Chart>(null); const chartBaseTheme = chartsThemeService.useChartsBaseTheme(); const darkMode = chartsThemeService.useDarkMode(); + const palettes = useKbnPalettes(); const appFixedViewport = useAppFixedViewport(); const filteredLayers = getFilteredLayers(layers); const layersById = filteredLayers.reduce<Record<string, CommonXYLayerConfig>>( @@ -989,6 +991,7 @@ export function XYChart({ minBarHeight={args.minBarHeight} formatFactory={formatFactory} paletteService={paletteService} + palettes={palettes} fittingFunction={fittingFunction} emphasizeFitting={emphasizeFitting} yAxesConfiguration={yAxesConfiguration} diff --git a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/index.ts b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/index.ts index 650b8fba2a6d9..71b8bb35ac222 100644 --- a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/index.ts +++ b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/index.ts @@ -8,4 +8,4 @@ */ export { getXyChartRenderer } from './xy_chart_renderer'; -export type { GetStartDepsFn } from './xy_chart_renderer'; +export type { GetStartDeps } from './xy_chart_renderer'; diff --git a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx index 57387a46388af..cb7a75fcdf691 100644 --- a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx @@ -32,6 +32,7 @@ import { extractVisualizationType, } from '@kbn/chart-expressions-common'; +import { ThemeServiceSetup } from '@kbn/core/public'; import type { getDataLayers } from '../helpers'; import { LayerTypes, SeriesTypes } from '../../common/constants'; import type { CommonXYDataLayerConfig, XYChartProps } from '../../common'; @@ -43,10 +44,11 @@ import type { StartServices, } from '../types'; -export type GetStartDepsFn = () => Promise<{ +export interface GetStartDeps { data: DataPublicPluginStart; formatFactory: FormatFactory; theme: ChartsPluginStart['theme']; + kibanaTheme: ThemeServiceSetup; activeCursor: ChartsPluginStart['activeCursor']; paletteService: PaletteRegistry; timeZone: string; @@ -55,10 +57,10 @@ export type GetStartDepsFn = () => Promise<{ usageCollection?: UsageCollectionStart; timeFormat: string; startServices: StartServices; -}>; +} interface XyChartRendererDeps { - getStartDeps: GetStartDepsFn; + getStartDeps: () => Promise<GetStartDeps>; } export const extractCounterEvents = ( diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/color/color_mapping_accessor.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/color/color_mapping_accessor.ts index 6923a9a2f5409..93b498f5b57e1 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/color/color_mapping_accessor.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/color/color_mapping_accessor.ts @@ -10,13 +10,14 @@ import { SeriesColorAccessorFn } from '@elastic/charts'; import { getColorFactory, type ColorMapping, type ColorMappingInputData } from '@kbn/coloring'; import { MULTI_FIELD_KEY_SEPARATOR } from '@kbn/data-plugin/common'; +import { KbnPalettes } from '@kbn/palettes'; /** * Return a color accessor function for XY charts depending on the split accessors received. */ export function getColorSeriesAccessorFn( config: ColorMapping.Config, - getPaletteFn: (paletteId: string) => ColorMapping.CategoricalPalette, + palettes: KbnPalettes, isDarkMode: boolean, mappingData: ColorMappingInputData, fieldId: string, @@ -28,7 +29,7 @@ export function getColorSeriesAccessorFn( [...specialTokens.entries()].map((d) => [d[1], d[0]]) ); - const getColor = getColorFactory(config, getPaletteFn, isDarkMode, mappingData); + const getColor = getColorFactory(config, palettes, isDarkMode, mappingData); return ({ splitAccessors }) => { const splitValue = splitAccessors.get(fieldId); diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx b/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx index 942909880f301..11cd6b05fc16b 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx @@ -25,13 +25,9 @@ import { Datatable } from '@kbn/expressions-plugin/common'; import { getAccessorByDimension } from '@kbn/visualizations-plugin/common/utils'; import type { ExpressionValueVisDimension } from '@kbn/visualizations-plugin/common/expression_functions'; import { PaletteRegistry, SeriesLayer } from '@kbn/coloring'; -import { - getPalette, - AVAILABLE_PALETTES, - NeutralPalette, - SPECIAL_TOKENS_STRING_CONVERSION, -} from '@kbn/coloring'; +import { SPECIAL_TOKENS_STRING_CONVERSION } from '@kbn/coloring'; import { getColorCategories } from '@kbn/chart-expressions-common'; +import { KbnPalettes } from '@kbn/palettes'; import { isDataLayer } from '../../common/utils/layer_types_guards'; import { CommonXYDataLayerConfig, CommonXYLayerConfig, XScaleType } from '../../common'; import { AxisModes, SeriesTypes } from '../../common/constants'; @@ -54,6 +50,7 @@ type GetSeriesPropsFn = (config: { colorAssignments: ColorAssignments; columnToLabelMap: Record<string, string>; paletteService: PaletteRegistry; + palettes: KbnPalettes; yAxis?: GroupsConfiguration[number]; xAxis?: GroupsConfiguration[number]; syncColors: boolean; @@ -392,6 +389,7 @@ export const getSeriesProps: GetSeriesPropsFn = ({ formatFactory, columnToLabelMap, paletteService, + palettes, syncColors, yAxis, xAxis, @@ -490,7 +488,7 @@ export const getSeriesProps: GetSeriesPropsFn = ({ layer.colorMapping && splitColumnIds.length > 0 ? getColorSeriesAccessorFn( JSON.parse(layer.colorMapping), // the color mapping is at this point just a stringified JSON - getPalette(AVAILABLE_PALETTES, NeutralPalette), + palettes, isDarkMode, { type: 'categories', diff --git a/src/plugins/chart_expressions/expression_xy/public/plugin.ts b/src/plugins/chart_expressions/expression_xy/public/plugin.ts index 04ba0ac2b3bc2..8415e2bc7d04c 100755 --- a/src/plugins/chart_expressions/expression_xy/public/plugin.ts +++ b/src/plugins/chart_expressions/expression_xy/public/plugin.ts @@ -31,7 +31,7 @@ import { extendedAnnotationLayerFunction, referenceLineDecorationConfigFunction, } from '../common/expression_functions'; -import { GetStartDepsFn, getXyChartRenderer } from './expression_renderers'; +import { GetStartDeps, getXyChartRenderer } from './expression_renderers'; import { eventAnnotationsResult } from '../common/expression_functions/event_annotations_result'; export interface XYPluginStartDependencies { @@ -71,7 +71,7 @@ export class ExpressionXyPlugin { expressions.registerFunction(xyVisFunction); expressions.registerFunction(layeredXyVisFunction); - const getStartDeps: GetStartDepsFn = async () => { + const getStartDeps = async () => { const [coreStart, deps] = await core.getStartServices(); const { data, @@ -100,7 +100,7 @@ export class ExpressionXyPlugin { timeZone: getTimeZone(core.uiSettings), timeFormat: core.uiSettings.get('dateFormat'), startServices: coreStart, - }; + } satisfies GetStartDeps; }; expressions.registerRenderer(getXyChartRenderer({ getStartDeps })); diff --git a/src/plugins/chart_expressions/expression_xy/public/types.ts b/src/plugins/chart_expressions/expression_xy/public/types.ts index ed287da3801ec..0187df4564050 100755 --- a/src/plugins/chart_expressions/expression_xy/public/types.ts +++ b/src/plugins/chart_expressions/expression_xy/public/types.ts @@ -32,7 +32,7 @@ export interface StartDeps { expression: ExpressionsServiceStart; } -export type StartServices = Pick<CoreStart, 'analytics' | 'i18n' | 'theme'>; +export type StartServices = Pick<CoreStart, 'analytics' | 'i18n' | 'theme' | 'userProfile'>; export type ExpressionXyPluginSetup = void; export type ExpressionXyPluginStart = void; diff --git a/src/plugins/chart_expressions/expression_xy/tsconfig.json b/src/plugins/chart_expressions/expression_xy/tsconfig.json index cd8bd4db90b89..5ffa2904e04b4 100644 --- a/src/plugins/chart_expressions/expression_xy/tsconfig.json +++ b/src/plugins/chart_expressions/expression_xy/tsconfig.json @@ -36,6 +36,7 @@ "@kbn/cell-actions", "@kbn/react-kibana-context-render", "@kbn/core-rendering-browser", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/charts/public/index.ts b/src/plugins/charts/public/index.ts index 6b70018ac5901..711f38b7d92f7 100644 --- a/src/plugins/charts/public/index.ts +++ b/src/plugins/charts/public/index.ts @@ -22,7 +22,8 @@ export const plugin = () => new ChartsPlugin(); export type { ChartsPluginSetup, ChartsPluginStart } from './plugin'; export * from './static'; -export { lightenColor } from './services/palettes/lighten_color'; +export * from './services/palettes/lighten_color'; +export * from './services/palettes/decrease_opacity'; export { useActiveCursor } from './services/active_cursor'; export interface ClickTriggerEvent { diff --git a/src/plugins/charts/public/mocks.ts b/src/plugins/charts/public/mocks.ts index aa7518d1df9f1..db6bd2bab4212 100644 --- a/src/plugins/charts/public/mocks.ts +++ b/src/plugins/charts/public/mocks.ts @@ -7,6 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { createCoreSetupMock } from '@kbn/core-lifecycle-browser-mocks/src/core_setup.mock'; import { ChartsPlugin } from './plugin'; import { themeServiceMock } from './services/theme/mock'; import { activeCursorMock } from './services/active_cursor/mock'; @@ -19,13 +20,13 @@ export type Start = jest.Mocked<ReturnType<ChartsPlugin['start']>>; const createSetupContract = (): Setup => ({ theme: themeServiceMock, - palettes: paletteServiceMock.setup(), + palettes: paletteServiceMock.setup(createCoreSetupMock().theme.getTheme()), }); const createStartContract = (): Start => ({ theme: themeServiceMock, activeCursor: activeCursorMock, - palettes: paletteServiceMock.setup(), + palettes: paletteServiceMock.setup(createCoreSetupMock().theme.getTheme()), }); export const chartPluginMock = { diff --git a/src/plugins/charts/public/plugin.ts b/src/plugins/charts/public/plugin.ts index 4d058c3beea32..06a7236545aba 100644 --- a/src/plugins/charts/public/plugin.ts +++ b/src/plugins/charts/public/plugin.ts @@ -42,8 +42,8 @@ export class ChartsPlugin implements Plugin<ChartsPluginSetup, ChartsPluginStart dependencies.expressions.registerFunction(palette); dependencies.expressions.registerFunction(systemPalette); this.themeService.init(core.theme); - this.palettes = this.paletteService.setup(); - + // TODO: make this reactive to changes in $theme + this.palettes = this.paletteService.setup(core.theme.getTheme()); this.activeCursor.setup(); return { diff --git a/src/plugins/charts/public/services/palettes/decrease_opacity.test.ts b/src/plugins/charts/public/services/palettes/decrease_opacity.test.ts new file mode 100644 index 0000000000000..845021e768755 --- /dev/null +++ b/src/plugins/charts/public/services/palettes/decrease_opacity.test.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import chroma from 'chroma-js'; +import { decreaseOpacity } from './decrease_opacity'; + +describe('decrease_opacity', () => { + it('should keep existing color if there is a single color step', () => { + expect(decreaseOpacity('#FF0000', 1, 1)).toEqual('#FF0000'); + }); + + it('should keep existing color for the first step', () => { + expect(decreaseOpacity('#FF0000', 1, 10)).toEqual('#FF0000'); + }); + + it('should decrease color opacity', () => { + const baseColor = '#FF0000'; + + const color1 = chroma(decreaseOpacity(baseColor, 2, 4)); + const color2 = chroma(decreaseOpacity(baseColor, 3, 4)); + + expect(chroma(baseColor).luminance()).toBeLessThan(color1.luminance()); + expect(color1.luminance()).toBeLessThan(color2.luminance()); + }); + + it('should not exceed top luminance', () => { + const result = decreaseOpacity('#000', 12, 10); + + expect(chroma(result).luminance()).toBeLessThan(0.8); + }); +}); diff --git a/src/plugins/charts/public/services/palettes/decrease_opacity.ts b/src/plugins/charts/public/services/palettes/decrease_opacity.ts new file mode 100644 index 0000000000000..bd49ba66b1707 --- /dev/null +++ b/src/plugins/charts/public/services/palettes/decrease_opacity.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import chroma from 'chroma-js'; +import { euiThemeVars } from '@kbn/ui-theme'; + +const MIN_OPACITY = 0.2; + +/** + * Reduces color opacity, by mixing color with background color. + * + * This is used when the resulting color needs to be opaque (i.e. alpha of 1). + */ +export function decreaseOpacity(baseColor: string, step: number, totalSteps: number) { + if (totalSteps === 1) { + return baseColor; + } + + const backgroundColor = euiThemeVars.euiColorEmptyShade; + const ratio = Math.min(0.2 * (step - 1), 1 - MIN_OPACITY); + const color = chroma(baseColor).mix(backgroundColor, ratio, 'lch'); + + return color.hex().toUpperCase(); +} diff --git a/src/plugins/charts/public/services/palettes/lighten_color.ts b/src/plugins/charts/public/services/palettes/lighten_color.ts index 80298f5c8b531..b7c1908375ebd 100644 --- a/src/plugins/charts/public/services/palettes/lighten_color.ts +++ b/src/plugins/charts/public/services/palettes/lighten_color.ts @@ -23,5 +23,6 @@ export function lightenColor(baseColor: string, step: number, totalSteps: number const currentLevelTargetLightness = outputColorLightness + lightnessSpace * ((step - 1) / (totalSteps - 1)); const lightenedColor = hslColor.lightness(currentLevelTargetLightness); + return lightenedColor.hex(); } diff --git a/src/plugins/charts/public/services/palettes/palettes.test.tsx b/src/plugins/charts/public/services/palettes/palettes.test.tsx index a9567b0c12179..a962da6776c4e 100644 --- a/src/plugins/charts/public/services/palettes/palettes.test.tsx +++ b/src/plugins/charts/public/services/palettes/palettes.test.tsx @@ -11,7 +11,7 @@ import { buildPalettes } from './palettes'; import { euiPaletteColorBlind, euiPaletteColorBlindBehindText } from '@elastic/eui'; describe('palettes', () => { - const palettes = buildPalettes(); + const palettes = buildPalettes({ name: 'amsterdam', darkMode: false }); describe('default palette', () => { describe('syncColors: false', () => { diff --git a/src/plugins/charts/public/services/palettes/palettes.tsx b/src/plugins/charts/public/services/palettes/palettes.tsx index fc9d2370694bf..4858bf0547d46 100644 --- a/src/plugins/charts/public/services/palettes/palettes.tsx +++ b/src/plugins/charts/public/services/palettes/palettes.tsx @@ -9,29 +9,19 @@ import chroma from 'chroma-js'; import { i18n } from '@kbn/i18n'; -import { - euiPaletteColorBlind, - euiPaletteCool, - euiPaletteGray, - euiPaletteRed, - euiPaletteGreen, - euiPaletteWarm, - euiPaletteForStatus, - euiPaletteForTemperature, - euiPaletteComplementary, - euiPaletteColorBlindBehindText, -} from '@elastic/eui'; +import { getKbnPalettes, KbnPalette, type IKbnPalette } from '@kbn/palettes'; import type { ChartColorConfiguration, PaletteDefinition, SeriesLayer } from '@kbn/coloring'; import { flatten, zip } from 'lodash'; +import { CoreTheme } from '@kbn/core/public'; import { createColorPalette as createLegacyColorPalette } from '../..'; -import { lightenColor } from './lighten_color'; import { MappedColors } from '../mapped_colors'; import { workoutColorForValue } from './helpers'; +import { decreaseOpacity } from './decrease_opacity'; function buildRoundRobinCategoricalWithMappedColors( - id = 'default', - colors = euiPaletteColorBlind({ rotations: 2 }), - behindTextColors = euiPaletteColorBlindBehindText({ rotations: 2 }) + id: string, + colors: string[], + behindTextColors?: string[] ): Omit<PaletteDefinition, 'title'> { const behindTextColorMap: Record<string, string> = Object.fromEntries( zip(colors, behindTextColors) @@ -50,21 +40,22 @@ function buildRoundRobinCategoricalWithMappedColors( const mappedColor = mappedColors.get(colorKey); outputColor = chartConfiguration.behindText ? behindTextColorMap[mappedColor] : mappedColor; } else { - outputColor = chartConfiguration.behindText - ? behindTextColors[series[0].rankAtDepth % behindTextColors.length] - : colors[series[0].rankAtDepth % colors.length]; + outputColor = + chartConfiguration.behindText && behindTextColors + ? behindTextColors[series[0].rankAtDepth % behindTextColors.length] + : colors[series[0].rankAtDepth % colors.length]; } if (!chartConfiguration.maxDepth || chartConfiguration.maxDepth === 1) { return outputColor; } - return lightenColor(outputColor, series.length, chartConfiguration.maxDepth); + return decreaseOpacity(outputColor, series.length, chartConfiguration.maxDepth); } return { id, getCategoricalColor: getColor, - getCategoricalColors: () => colors.slice(0, 10), + getCategoricalColors: (size: number) => colors.slice(0, size), toExpression: () => ({ type: 'expression', chain: [ @@ -80,29 +71,27 @@ function buildRoundRobinCategoricalWithMappedColors( }; } -function buildGradient( - id: string, - colors: (n: number) => string[] -): Omit<PaletteDefinition, 'title'> { +function buildGradient(id: string, palette: IKbnPalette): PaletteDefinition { function getColor( series: SeriesLayer[], chartConfiguration: ChartColorConfiguration = { behindText: false } ) { const totalSeriesAtDepth = series[0].totalSeriesAtDepth; const rankAtDepth = series[0].rankAtDepth; - const actualColors = colors(totalSeriesAtDepth); + const actualColors = palette.colors(totalSeriesAtDepth); const outputColor = actualColors[rankAtDepth]; if (!chartConfiguration.maxDepth || chartConfiguration.maxDepth === 1) { return outputColor; } - return lightenColor(outputColor, series.length, chartConfiguration.maxDepth); + return decreaseOpacity(outputColor, series.length, chartConfiguration.maxDepth); } return { id, + title: palette.name, getCategoricalColor: getColor, - getCategoricalColors: colors, + getCategoricalColors: palette.colors, canDynamicColoring: true, toExpression: () => ({ type: 'expression', @@ -153,7 +142,7 @@ function buildCustomPalette(): PaletteDefinition { return outputColor; } - return lightenColor(outputColor, series.length, chartConfiguration.maxDepth); + return decreaseOpacity(outputColor, series.length, chartConfiguration.maxDepth); }, internal: true, title: i18n.translate('charts.palettes.customLabel', { defaultMessage: 'Custom' }), @@ -220,50 +209,32 @@ function buildCustomPalette(): PaletteDefinition { } as PaletteDefinition<unknown>; } -export const buildPalettes = (): Record<string, PaletteDefinition> => ({ - default: { - title: i18n.translate('charts.palettes.defaultPaletteLabel', { defaultMessage: 'Default' }), - ...buildRoundRobinCategoricalWithMappedColors(), - }, - status: { - title: i18n.translate('charts.palettes.statusLabel', { defaultMessage: 'Status' }), - ...buildGradient('status', euiPaletteForStatus), - }, - temperature: { - title: i18n.translate('charts.palettes.temperatureLabel', { defaultMessage: 'Temperature' }), - ...buildGradient('temperature', euiPaletteForTemperature), - }, - complementary: { - title: i18n.translate('charts.palettes.complementaryLabel', { - defaultMessage: 'Complementary', - }), - ...buildGradient('complementary', euiPaletteComplementary), - }, - negative: { - title: i18n.translate('charts.palettes.negativeLabel', { defaultMessage: 'Negative' }), - ...buildGradient('negative', euiPaletteRed), - }, - positive: { - title: i18n.translate('charts.palettes.positiveLabel', { defaultMessage: 'Positive' }), - ...buildGradient('positive', euiPaletteGreen), - }, - cool: { - title: i18n.translate('charts.palettes.coolLabel', { defaultMessage: 'Cool' }), - ...buildGradient('cool', euiPaletteCool), - }, - warm: { - title: i18n.translate('charts.palettes.warmLabel', { defaultMessage: 'Warm' }), - ...buildGradient('warm', euiPaletteWarm), - }, - gray: { - title: i18n.translate('charts.palettes.grayLabel', { defaultMessage: 'Gray' }), - ...buildGradient('gray', euiPaletteGray), - }, - kibana_palette: { - title: i18n.translate('charts.palettes.kibanaPaletteLabel', { - defaultMessage: 'Compatibility', - }), - ...buildRoundRobinCategoricalWithMappedColors('kibana_palette', createLegacyColorPalette(20)), - }, - custom: buildCustomPalette() as PaletteDefinition<unknown>, -}); +export const buildPalettes = (theme: CoreTheme): Record<string, PaletteDefinition> => { + const kbnPalettes = getKbnPalettes(theme); + const defaultPalette = kbnPalettes.get(KbnPalette.Default); + return { + default: { + title: defaultPalette.name, + ...buildRoundRobinCategoricalWithMappedColors( + 'default', // needs to match key of palette definition + defaultPalette.colors(), + kbnPalettes.query(KbnPalette.Kibana7BehindText)?.colors() + ), + }, + status: buildGradient('status', kbnPalettes.get('status')), + temperature: buildGradient('temperature', kbnPalettes.get('temperature')), + complementary: buildGradient('complementary', kbnPalettes.get('complementary')), + negative: buildGradient('negative', kbnPalettes.get('red')), + positive: buildGradient('positive', kbnPalettes.get('green')), + cool: buildGradient('cool', kbnPalettes.get('cool')), + warm: buildGradient('warm', kbnPalettes.get('warm')), + gray: buildGradient('gray', kbnPalettes.get('gray')), + kibana_palette: { + title: i18n.translate('charts.palettes.kibanaPaletteLabel', { + defaultMessage: 'Compatibility', + }), + ...buildRoundRobinCategoricalWithMappedColors('kibana_palette', createLegacyColorPalette(20)), + }, + custom: buildCustomPalette(), + }; +}; diff --git a/src/plugins/charts/public/services/palettes/service.ts b/src/plugins/charts/public/services/palettes/service.ts index 30c58172ad429..5e66a5d9e650a 100644 --- a/src/plugins/charts/public/services/palettes/service.ts +++ b/src/plugins/charts/public/services/palettes/service.ts @@ -10,6 +10,7 @@ import type { PaletteRegistry, PaletteDefinition } from '@kbn/coloring'; import { getActivePaletteName } from '@kbn/coloring'; import type { ExpressionsSetup } from '@kbn/expressions-plugin/public'; +import { CoreTheme } from '@kbn/core/public'; import type { ChartsPluginSetup } from '../..'; export interface PaletteSetupPlugins { @@ -21,12 +22,12 @@ export class PaletteService { private palettes: Record<string, PaletteDefinition<unknown>> | undefined = undefined; constructor() {} - public setup() { + public setup(theme: CoreTheme) { return { getPalettes: async (): Promise<PaletteRegistry> => { if (!this.palettes) { const { buildPalettes } = await import('./palettes'); - this.palettes = buildPalettes(); + this.palettes = buildPalettes(theme); } return { get: (name: string) => { diff --git a/src/plugins/charts/public/services/theme/theme.test.tsx b/src/plugins/charts/public/services/theme/theme.test.tsx index da89ec475d577..df0acfbede1cf 100644 --- a/src/plugins/charts/public/services/theme/theme.test.tsx +++ b/src/plugins/charts/public/services/theme/theme.test.tsx @@ -82,19 +82,19 @@ describe('ThemeService', () => { const { useChartsBaseTheme } = themeService; const { result } = renderHook(() => useChartsBaseTheme()); - expect(result.current).toBe(LIGHT_THEME); + expect(result.current).toStrictEqual(LIGHT_THEME); act(() => { setUpMockTheme.theme$ = createTheme$Mock(true); themeService.init(setUpMockTheme); }); - expect(result.current).toBe(DARK_THEME); + expect(result.current).toStrictEqual(DARK_THEME); act(() => { setUpMockTheme.theme$ = createTheme$Mock(false); themeService.init(setUpMockTheme); }); // act(() => darkMode$.next(false)); - expect(result.current).toBe(LIGHT_THEME); + expect(result.current).toStrictEqual(LIGHT_THEME); }); it('should not rerender when emitting the same value', () => { diff --git a/src/plugins/charts/public/services/theme/theme.ts b/src/plugins/charts/public/services/theme/theme.ts index d7ec8c03e506c..765daf957e74d 100644 --- a/src/plugins/charts/public/services/theme/theme.ts +++ b/src/plugins/charts/public/services/theme/theme.ts @@ -12,6 +12,7 @@ import { Observable, BehaviorSubject } from 'rxjs'; import { CoreSetup, CoreTheme } from '@kbn/core/public'; import { DARK_THEME, LIGHT_THEME, PartialTheme, Theme } from '@elastic/charts'; +import { euiThemeVars } from '@kbn/ui-theme'; export class ThemeService { /** Returns default charts theme */ @@ -102,8 +103,21 @@ export class ThemeService { */ public init(theme: CoreSetup['theme']) { this.theme$ = theme.theme$; - this.theme$.subscribe(({ darkMode }) => { - this._chartsBaseTheme$.next(darkMode ? DARK_THEME : LIGHT_THEME); + this.theme$.subscribe((newTheme) => { + this._chartsBaseTheme$.next(getChartTheme(newTheme)); }); } } + +// TODO: define these overrides in elastic/charts when Borealis becomes default +function getChartTheme(theme: CoreTheme): Theme { + const chartTheme = theme.darkMode ? DARK_THEME : LIGHT_THEME; + + if (theme.name !== 'amsterdam') { + const backgroundColor = euiThemeVars.euiColorEmptyShade; + chartTheme.background.color = backgroundColor; + chartTheme.background.fallbackColor = backgroundColor; + } + + return chartTheme; +} diff --git a/src/plugins/charts/tsconfig.json b/src/plugins/charts/tsconfig.json index 8ad33a8517031..0bd9814e55579 100644 --- a/src/plugins/charts/tsconfig.json +++ b/src/plugins/charts/tsconfig.json @@ -16,6 +16,8 @@ "@kbn/shared-ux-utility", "@kbn/config-schema", "@kbn/data-plugin", + "@kbn/core-lifecycle-browser-mocks", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/console/README.md b/src/plugins/console/README.md deleted file mode 100644 index 35921de334380..0000000000000 --- a/src/plugins/console/README.md +++ /dev/null @@ -1,320 +0,0 @@ -# Console - -## About - -Console provides the user with tools for storing and executing requests against Elasticsearch. - -## Features - -### `load_from` query parameter - -The `load_from` query parameter enables opening Console with prepopulated requests in two ways: from the elastic.co docs and from within other parts of Kibana. - -Plugins can open requests in Kibana by assigning this parameter a `data:text/plain` [lz-string](https://pieroxy.net/blog/pages/lz-string/index.html) encoded value. For example, navigating to `/dev_tools#/console?load_from=data:text/plain,OIUQKgBA+gzgpgQwE4GMAWAoA3gIgI4CucSAnjgFy4C2CALulAgDZMVYC+nQA` will prepopulate Console with the following request: - -``` -GET _search -{"query":{"match_all":{}}} -``` - -### Kibana API support ([#100253](https://github.com/elastic/kibana/pull/128562)) -Console plugin now supports Kibana API endpoints. `kbn:` prefix must be used in the request URL to send a request to Kibana API. For example, the following request sends a request to the Kibana API to retrieve the list of available spaces: -``` -GET kbn:api/spaces/space -``` - -### Request-body comments -Single-line and multiline comments can be added to the request body. The comments are displayed in the request editor, but are not sent to the cluster. The comments are useful for adding notes to the request body. For example, the following request body contains a single-line comment and a multiline comment: -``` -POST /_some_endpoint -{ - // This is a single-line comment - /* This is a multiline comment */ - "field": "value" -} -``` - -### Variables -Console plugin now supports variables. The variables can be used in the request body and in the request URL. The variables are defined in the `Variables` flyout in the Console UI and used in the request body and URL by wrapping the variable name with `${}`. For example, the following request body contains a variable: -``` -POST /_some_endpoint -{ - "field": "${variable}" -} -``` - -## Architecture -Console uses Monaco editor that is wrapped with [`kbn-monaco`](https://github.com/elastic/kibana/blob/main/packages/kbn-monaco/index.ts), so that if needed it can easily be replaced with another editor. -The autocomplete logic is located in [`autocomplete`](https://github.com/elastic/kibana/blob/main/src/plugins/console/public/lib/autocomplete) folder. Autocomplete rules are computed by classes in `components` sub-folder. - -## Autocomplete definitions -Kibana users benefit greatly from autocomplete suggestions since not all Elasticsearch APIs can be provided with a corresponding UI. Autocomplete suggestions improve usability of Console for any Elasticsearch API endpoint. -Autocomplete definitions are all created in the form of javascript objects loaded from `json` and `js` files. - -### Creating definitions -The [`generated`](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/json/generated) folder contains definitions created automatically from Elasticsearch specifications. See this [README](https://github.com/elastic/kibana/blob/main/packages/kbn-generate-console-definitions/README.md) file for more information on the `generate-console-definitions` script. The AppEx/Management team (@elastic/kibana-management) regularly runs the script to update the definitions and is planning to automate this process. - -Manually created override files in the [`overrides`](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/json/overrides) folder contain additions for request body parameters since those -are not created by the script. Any other fixes such as documentation links, request methods and patterns and url parameters -should be addressed at the source. That means this should be fixed in Elasticsearch specifications and then -autocomplete definitions can be re-generated with the script. - -If there are any endpoints missing completely from the `generated` folder, this should also be addressed at the source, i.e. -Elasticsearch specifications. If for some reason, that is not possible, then additional definitions files -can be placed in the folder [`manual`]((https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/json/manual)). - -### Top level keys -Use following top level keys in the definitions objects. - -#### `documentation` -Url to Elasticsearch REST API documentation for the endpoint (If the url contains `master` or `current` strings in the path, Console automatically replaces them with the `docLinkVersion` to always redirect the user to the correct version of the documentation). - -#### `methods` -Allowed http methods (`GET`, `POST` etc) - -#### `patterns` -Array of API endpoints that contain dynamic parameters like `{index}` or `{fields}`. For example, `{index}/_rollup/{rollup_index}`. Dynamic parameters used in patterns are not always defined. For example, a pattern `_ilm/policy/{policy}` indicates that any string can be used as policy name. -See the [Dynamic parameters](#dynamic-parameters) section below for more info about dynamic parameters defined in the autocomplete engine, such as `{index}`. - -#### `url_params` -Query url parameters and their values. See the [Query url parameters](#query-url-parameters) section below for more info. An example: -```json -{ - "url_params": { - "format": "", - "local": "__flag__", - "h": [], - "expand_wildcards": [ - "open", - "closed", - "hidden", - "none", - "all" - ] - } -} -``` - -#### `priority` -Value for selecting one autocomplete definition, if several configurations are loaded from the files. The highest number takes precedence. - -#### `availability` -A property that describes if an endpoint is available in stack and serverless environments. Endpoints with a `false` boolean value are filtered out in the corresponding environment. An example of an endpoint that is not available in the serverless environment: -```json -"availability": { - "stack": true, - "serverless": false -} -``` - -#### `data_autocomplete_rules` -Request body parameters and their values. Only used in `overrides` files because REST API specs don't contain any information about body request parameters. -Refer to Elasticsearch REST API documentation when configuring this object. See the [Request body parameters](#request-body-parameters) section below for more info. An example: -```json -{ - "data_autocomplete_rules": { - "text": [], - "field": "{field}", - "analyzer": "", - "explain": { "__one_of": [false, true] } - } -} -``` - -### Query url parameters -Query url parameters are configured in form of an object, for example: -```json -{ - "url_params": { - "local": "__flag__", - "scroll": "", - "expand_wildcards": [ - "open", - "closed", - "hidden", - "none", - "all" - ] - } -} -``` -This object specifies 3 query parameters: `local` (boolean value), `scroll` (no default value) and `expand_wildcards` (with a list of accepted values). - -When the user types in the url path into Console and at least 2 characters after `?`, all matching url parameters are displayed as autocomplete suggestions. In this example, after typing -``` -GET /_some_endpoint?ca -``` -"local" and "expand_wildcards" are displayed as suggestions. -When the user types at least 2 characters after `=`, all matching values for this parameter are displayed as autocomplete suggestions. In this example, after typing -``` -GET /_some_endpoint?expand_wildcards=hi -``` -"hidden" is displayed for autocompletion. - -Dynamic parameters such as `{index}` or `{fields}` are accepted both as an url parameter and its value in the configuration object. See the [Dynamic parameters](#dynamic-parameters) section below for more information. - -### Request body parameters -Request body parameters are configured in form of an object, for example: -```json -{ - "data_autocomplete_rules": { - "index_patterns": [], - "mappings": { "__scope_link": "put_mapping" }, - "version": 0, - "aliases": { - "__template": { - "NAME": {} - } - } - } -} -``` -Object's keys are parameters that will be displayed as autocomplete suggestions when the user starts typing request body. In this example, after typing -``` -PUT /_some_endpoint -{ - " -``` -"index_patterns", "mappings", "version" and "aliases" are displayed as autocomplete suggestions. -Object's values provide default or accepted values of request body parameters. For example, if "version" is selected from the suggestions list, value `0` is automatically filled, resulting in the following request: -``` -PUT /_some_endpoint -{ - "version": 0 -} -``` -Object's values can contain objects for nested configuration because the engine can work recursively while searching for autocomplete suggestions. - -Upper case strings are used to indicate that the property's name is a dynamic value that the user needs to define. For example, the autocomplete suggestion for aggregations displays the following object: -```json -{ - "aggs": { - "NAME": { - "AGG_TYPE": {} - } - } -} -``` -Both upper case strings `NAME` and `AGG_TYPE` indicate that those values need to be filled in by the user. - -**Following values can be used in the configuration object:** - -#### One value from the list (`__one_of: [..., ...]`) -Use this configuration for a parameter with a list of allowed values, for example types of snapshot repository: -``` -"type": {"__one_of": ["fs", "url", "s3", "hdfs", "azure"]} -``` -The first value in the list will be automatically filled as parameter value. For example, when "type" is selected from the suggestions list, the request body is autofilled as following: -``` -PUT /_some_endpoint -{ - "type": "fs" -} -``` -But if the value `fs` is deleted, all suggestions will be displayed: "fs", "url", "s3", "hdfs" and "azure". -Use `__one_of: [true, false]` for boolean values. - -#### Array of values (`[..., ... ]` or `__any_of: [..., ...]`) -Use this configuration for parameters which accept an array of values, for example actions parameter: -``` -"actions": { "__any_of": [ "add", "remove"]} -``` -When "actions" is selected from the suggestions list, it will be autocompleted with an empty array: -``` -POST /_some_endpoint -{ - "actions": [] -} -``` -All values in the array are displayed as suggestions for parameter values inside the array. - - -#### Default object structure (`__template: {...}`) -Use this configuration to insert an object with default values into the request body when the corresponding key is typed in. -For example, in this configuration -```json -{ - "terms": { - "__template": { - "field": "", - "size": 10 - }, - "field": "{field}", - "size": 10, - "shard_size": 10, - "min_doc_count": 10 - } -} -``` -the `terms` parameter has several properties, but only `field` and `size` are autocompleted in the request body when "terms" is selected from the suggestions list. -``` -POST /_some_endpoint -{ - terms: { - field: '', - size: 10, - } -} -``` -The rest of the properties are displayed as autocomplete suggestions, when the `terms` object is being edited. - -#### Scope link (`__scope_link`) -Use this type to copy a configuration object specified in a different endpoint definition. For example, the `put_settings` endpoint definition contains a configuration object that can be reused for `settings` parameter in a different endpoint: -```json -{ - "data_autocomplete_rules": { - "settings": { - "__scope_link": "put_settings" - } - } -} -``` -#### Global scope (`GLOBAL`) -Use `GLOBAL` keyword with `__scope_link` to refer to a reusable set of definitions created in the [`globals`](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/js/globals.ts) file. -For example: -```json -{ - "data_autocomplete_rules": { - "query": { - "__scope_link": "GLOBAL.query" - } - } -} -``` -#### Conditional definition (`__condition: { lines_regex: ... }`) -To provide a different set of autocomplete suggestions based on the value configured in the request. For example, when creating a snapshot repository of different types (`fs`, `url` etc) different properties are displayed in the suggestions list based on the type. See [snapshot.create_repository.json](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json) for an example. - - -### Dynamic parameters -Some autocomplete definitions need to be configured with dynamic values that can't be hard coded into a json or js file, for example a list of indices in the cluster. -A list of dynamic parameters is defined in the `parametrizedComponentFactories` function in [`kb.js`](https://github.com/elastic/kibana/blob/main/src/plugins/console/public/lib/kb/kb.js) file. The values of these parameters are assigned dynamically for every cluster. -Use these dynamic parameters with curly braces, for example `{index}`, `{fields}`, `{template}` etc. - -Dynamic parameters can be used in url patterns, for example `{index}/_search`. Url patterns can also contain unknown parameters just to indicate that any value can be used in the url, for example in the url `/_ilm/policy/{policy}` the value for `{policy}` can be any accepted policy name and the dynamic parameter `{policy}` is not defined in the autocomplete engine. - -For request body parameters, only known dynamic properties are allowed. For example: -```json -{ - "data_autocomplete_rules": { - "query": { - "field": "{field}" - } - } -} -``` -If an unknown dynamic parameter (for example, `{my_param}`) is used in request body parameters, a warning will be logged in the browser: `[Console] no factory found for 'my_param'`. - -### Architecture changes in 8.3 release (timeline: 07-04-2022 - 19-06-2022) -One of the main changes in architecture is refactoring the retrieval of autocomplete suggestions. Console used to send a separate request to ES for each autocomplete entity (mappings, aliases, templates, data-streams etc) to retrieve the autocomplete suggestions via the original [hand-rolled ES proxy](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/routes/api/console/proxy/create_handler.ts). This had a few drawbacks: -- The number of requests was dependent on the number of autocomplete entities, which was not scalable and could cause performance issues -- It added unnecessary dependencies on the ES proxy -- We risked fetching an enormous response payload for users who have a large number of mappings. - -To address these issues, we created a specific [route](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts) in the Kibana server to retrieve all autocomplete entities in one request and send it to the client. The response for mappings capped to 10MB to avoid sending a huge payload. The client-side code was refactored to use the new response format. For more details, see [#130633](https://github.com/elastic/kibana/pull/130633). - -Another change is replacing jQuery with the core http client to communicate with the Kibana server. Console used a custom jQuery ajax [function](https://github.com/elastic/kibana/blob/8.0/src/plugins/console/public/lib/es/es.ts) to send requests to the Kibana server to have lower-level control over the requests, specifically controls like `crossDomain: true`. This is no longer needed since we are using the core http client. For more details, see [#127867](https://github.com/elastic/kibana/pull/127867). - -### Outstanding issues -#### Autocomplete suggestions for Kibana API endpoints -Console currently supports autocomplete suggestions for Elasticsearch API endpoints. The autocomplete suggestions for Kibana API endpoints are not supported yet. -Related issue: [#130661](https://github.com/elastic/kibana/issues/130661) \ No newline at end of file diff --git a/src/plugins/console/jest.config.js b/src/plugins/console/jest.config.js deleted file mode 100644 index 0a55da6792911..0000000000000 --- a/src/plugins/console/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/src/plugins/console'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/plugins/console', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/src/plugins/console/{common,public,server}/**/*.{js,ts,tsx}'], -}; diff --git a/src/plugins/console/server/lib/spec_definitions/json/README.md b/src/plugins/console/server/lib/spec_definitions/json/README.md deleted file mode 100644 index 9e9dc9fbec716..0000000000000 --- a/src/plugins/console/server/lib/spec_definitions/json/README.md +++ /dev/null @@ -1 +0,0 @@ -Please refer to this [README](https://github.com/elastic/kibana/blob/main/src/plugins/console/README.md#creating-definitions) file before adding/editing definitions files in this folder. \ No newline at end of file diff --git a/src/plugins/console/tsconfig.json b/src/plugins/console/tsconfig.json deleted file mode 100644 index 02e4e7a9b7689..0000000000000 --- a/src/plugins/console/tsconfig.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": ["common/**/*", "public/**/*", "server/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/dev-tools-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/home-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/share-plugin", - "@kbn/usage-collection-plugin", - "@kbn/i18n", - "@kbn/analytics", - "@kbn/utility-types", - "@kbn/i18n-react", - "@kbn/shared-ux-utility", - "@kbn/core-http-browser", - "@kbn/config-schema", - "@kbn/core-http-router-server-internal", - "@kbn/core-elasticsearch-server", - "@kbn/core-http-browser-mocks", - "@kbn/react-kibana-context-theme", - "@kbn/code-editor", - "@kbn/monaco", - "@kbn/cloud-plugin", - "@kbn/core-notifications-browser", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-mount", - "@kbn/ui-theme", - "@kbn/core-doc-links-browser", - "@kbn/shared-ux-router", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/src/plugins/controls/public/control_group/open_edit_control_group_flyout.tsx b/src/plugins/controls/public/control_group/open_edit_control_group_flyout.tsx index 459913d98de0b..52a19aef8b1e0 100644 --- a/src/plugins/controls/public/control_group/open_edit_control_group_flyout.tsx +++ b/src/plugins/controls/public/control_group/open_edit_control_group_flyout.tsx @@ -92,10 +92,7 @@ export const openEditControlGroupFlyout = ( onDeleteAll={() => onDeleteAll(overlay)} onCancel={() => closeOverlay(overlay)} />, - { - theme: coreServices.theme, - i18n: coreServices.i18n, - } + coreServices ), { 'aria-label': i18n.translate('controls.controlGroup.manageControl', { diff --git a/src/plugins/controls/public/controls/data_controls/open_data_control_editor.tsx b/src/plugins/controls/public/controls/data_controls/open_data_control_editor.tsx index c01f9aa83cea9..c34af20001de8 100644 --- a/src/plugins/controls/public/controls/data_controls/open_data_control_editor.tsx +++ b/src/plugins/controls/public/controls/data_controls/open_data_control_editor.tsx @@ -91,10 +91,7 @@ export const openDataControlEditor = < onSave({ type: selectedControlType, state }); }} />, - { - theme: coreServices.theme, - i18n: coreServices.i18n, - } + coreServices ), { size: 'm', diff --git a/src/plugins/controls/public/controls/types.ts b/src/plugins/controls/public/controls/types.ts index dd5d38e96346b..8cc33b3513263 100644 --- a/src/plugins/controls/public/controls/types.ts +++ b/src/plugins/controls/public/controls/types.ts @@ -9,7 +9,7 @@ import { BehaviorSubject } from 'rxjs'; -import { SerializedPanelState } from '@kbn/presentation-containers'; +import { HasSerializableState } from '@kbn/presentation-containers'; import { PanelCompatibleComponent } from '@kbn/presentation-panel-plugin/public/panel_component/types'; import { HasParentApi, @@ -39,16 +39,12 @@ export type DefaultControlApi = PublishesDataLoading & CanClearSelections & HasType & HasUniqueId & + HasSerializableState<DefaultControlState> & HasParentApi<ControlGroupApi> & { setDataLoading: (loading: boolean) => void; setBlockingError: (error: Error | undefined) => void; grow: PublishingSubject<boolean | undefined>; width: PublishingSubject<ControlWidth | undefined>; - - // Can not use HasSerializableState interface - // HasSerializableState types serializeState as function returning 'MaybePromise' - // Controls serializeState is sync - serializeState: () => SerializedPanelState<DefaultControlState>; }; export type ControlApiRegistration<ControlApi extends DefaultControlApi = DefaultControlApi> = Omit< diff --git a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx index 10b21fc36edcc..9b3e9a536a86a 100644 --- a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx +++ b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx @@ -83,12 +83,11 @@ export class CopyToDashboardAction implements Action<EmbeddableApiContext> { public async execute({ embeddable }: EmbeddableApiContext) { if (!apiIsCompatible(embeddable)) throw new IncompatibleActionError(); - const { theme, i18n } = coreServices; const session = coreServices.overlays.openModal( - toMountPoint(<CopyToDashboardModal closeModal={() => session.close()} api={embeddable} />, { - theme, - i18n, - }), + toMountPoint( + <CopyToDashboardModal closeModal={() => session.close()} api={embeddable} />, + coreServices + ), { maxWidth: 400, 'data-test-subj': 'copyToDashboardPanel', diff --git a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx index 66b0ed367481d..858b241ad7e5c 100644 --- a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx +++ b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx @@ -50,9 +50,9 @@ export function CopyToDashboardModal({ api, closeModal }: CopyToDashboardModalPr const dashboardId = api.parentApi.savedObjectId.value; - const onSubmit = useCallback(async () => { + const onSubmit = useCallback(() => { const dashboard = api.parentApi; - const panelToCopy = await dashboard.getDashboardPanelFromId(api.uuid); + const panelToCopy = dashboard.getDashboardPanelFromId(api.uuid); const runtimeSnapshot = apiHasSnapshottableState(api) ? api.snapshotRuntimeState() : undefined; if (!panelToCopy && !runtimeSnapshot) { diff --git a/src/plugins/dashboard/public/dashboard_api/get_dashboard_api.ts b/src/plugins/dashboard/public/dashboard_api/get_dashboard_api.ts index 2e2e6352f829a..5fcb6522b0152 100644 --- a/src/plugins/dashboard/public/dashboard_api/get_dashboard_api.ts +++ b/src/plugins/dashboard/public/dashboard_api/get_dashboard_api.ts @@ -87,18 +87,15 @@ export function getDashboardApi({ controlGroupApi$, panelsManager.api.children$ ); + const settingsManager = initializeSettingsManager(initialState); const unifiedSearchManager = initializeUnifiedSearchManager( initialState, controlGroupApi$, + settingsManager.api.timeRestore$, dataLoadingManager.internalApi.waitForPanelsToLoad$, () => unsavedChangesManager.internalApi.getLastSavedState(), creationOptions ); - const settingsManager = initializeSettingsManager({ - initialState, - setTimeRestore: unifiedSearchManager.internalApi.setTimeRestore, - timeRestore$: unifiedSearchManager.internalApi.timeRestore$, - }); const unsavedChangesManager = initializeUnsavedChangesManager({ creationOptions, controlGroupApi$, @@ -111,8 +108,8 @@ export function getDashboardApi({ viewModeManager, unifiedSearchManager, }); - async function getState() { - const { panels, references: panelReferences } = await panelsManager.internalApi.getState(); + function getState() { + const { panels, references: panelReferences } = panelsManager.internalApi.getState(); const dashboardState: DashboardState = { ...settingsManager.internalApi.getState(), ...unifiedSearchManager.internalApi.getState(), @@ -124,7 +121,7 @@ export function getDashboardApi({ let controlGroupReferences: Reference[] | undefined; if (controlGroupApi) { const { rawState: controlGroupSerializedState, references: extractedReferences } = - await controlGroupApi.serializeState(); + controlGroupApi.serializeState(); controlGroupReferences = extractedReferences; dashboardState.controlGroupInput = controlGroupSerializedState; } @@ -177,7 +174,7 @@ export function getDashboardApi({ isManaged, lastSavedId: savedObjectId$.value, viewMode: viewModeManager.api.viewMode.value, - ...(await getState()), + ...getState(), }); if (saveResult) { @@ -200,7 +197,7 @@ export function getDashboardApi({ }, runQuickSave: async () => { if (isManaged) return; - const { controlGroupReferences, dashboardState, panelReferences } = await getState(); + const { controlGroupReferences, dashboardState, panelReferences } = getState(); const saveResult = await getDashboardContentManagementService().saveDashboardState({ controlGroupReferences, currentState: dashboardState, diff --git a/src/plugins/dashboard/public/dashboard_api/panels_manager.ts b/src/plugins/dashboard/public/dashboard_api/panels_manager.ts index 4f082d1c0484f..5188a604631b4 100644 --- a/src/plugins/dashboard/public/dashboard_api/panels_manager.ts +++ b/src/plugins/dashboard/public/dashboard_api/panels_manager.ts @@ -13,11 +13,7 @@ import { v4 } from 'uuid'; import { asyncForEach } from '@kbn/std'; import type { Reference } from '@kbn/content-management-utils'; import { METRIC_TYPE } from '@kbn/analytics'; -import { - PanelPackage, - SerializedPanelState, - apiHasSerializableState, -} from '@kbn/presentation-containers'; +import { PanelPackage, apiHasSerializableState } from '@kbn/presentation-containers'; import { DefaultEmbeddableApi, EmbeddablePackageState, @@ -32,7 +28,6 @@ import { getPanelTitle, stateHasTitles, } from '@kbn/presentation-publishing'; -import { cloneDeep } from 'lodash'; import { apiHasSnapshottableState } from '@kbn/presentation-containers/interfaces/serialized_state'; import { i18n } from '@kbn/i18n'; import { coreServices, usageCollectionService } from '../services/kibana_services'; @@ -156,13 +151,11 @@ export function initializePanelsManager( }); } - async function getDashboardPanelFromId(panelId: string) { + function getDashboardPanelFromId(panelId: string) { const panel = panels$.value[panelId]; const child = children$.value[panelId]; if (!child || !panel) throw new PanelNotFoundError(); - const serialized = apiHasSerializableState(child) - ? await child.serializeState() - : { rawState: {} }; + const serialized = apiHasSerializableState(child) ? child.serializeState() : { rawState: {} }; return { type: panel.type, explicitInput: { ...panel.explicitInput, ...serialized.rawState }, @@ -181,7 +174,7 @@ export function initializePanelsManager( return titles; } - async function duplicateReactEmbeddableInput( + function duplicateReactEmbeddableInput( childApi: unknown, panelToClone: DashboardPanelState, panelTitles: string[] @@ -198,7 +191,7 @@ export function initializePanelsManager( * use in-place library transforms */ if (apiHasLibraryTransforms(childApi)) { - const byValueSerializedState = await childApi.getByValueState(); + const byValueSerializedState = childApi.getByValueState(); if (panelToClone.references) { pushReferences(prefixReferencesFromPanel(id, panelToClone.references)); } @@ -284,9 +277,9 @@ export function initializePanelsManager( canRemovePanels: () => trackPanel.expandedPanelId.value === undefined, children$, duplicatePanel: async (idToDuplicate: string) => { - const panelToClone = await getDashboardPanelFromId(idToDuplicate); + const panelToClone = getDashboardPanelFromId(idToDuplicate); - const duplicatedPanelState = await duplicateReactEmbeddableInput( + const duplicatedPanelState = duplicateReactEmbeddableInput( children$.value[idToDuplicate], panelToClone, await getPanelTitles() @@ -414,36 +407,23 @@ export function initializePanelsManager( } if (resetChangedPanelCount) children$.next(currentChildren); }, - getState: async (): Promise<{ + getState: (): { panels: DashboardState['panels']; references: Reference[]; - }> => { + } => { const references: Reference[] = []; - const panels = cloneDeep(panels$.value); - - const serializePromises: Array< - Promise<{ uuid: string; serialized: SerializedPanelState<object> }> - > = []; - for (const uuid of Object.keys(panels)) { - const api = children$.value[uuid]; - - if (apiHasSerializableState(api)) { - serializePromises.push( - (async () => { - const serialized = await api.serializeState(); - return { uuid, serialized }; - })() - ); - } - } - const serializeResults = await Promise.all(serializePromises); - for (const result of serializeResults) { - panels[result.uuid].explicitInput = { ...result.serialized.rawState, id: result.uuid }; - references.push( - ...prefixReferencesFromPanel(result.uuid, result.serialized.references ?? []) - ); - } + const panels = Object.keys(panels$.value).reduce((acc, id) => { + const childApi = children$.value[id]; + const serializeResult = apiHasSerializableState(childApi) + ? childApi.serializeState() + : { rawState: {} }; + acc[id] = { ...panels$.value[id], explicitInput: { ...serializeResult.rawState, id } }; + + references.push(...prefixReferencesFromPanel(id, serializeResult.references ?? [])); + + return acc; + }, {} as DashboardPanelMap); return { panels, references }; }, diff --git a/src/plugins/dashboard/public/dashboard_api/settings_manager.ts b/src/plugins/dashboard/public/dashboard_api/settings_manager.ts index 0b4903a506a90..9cb93269f4b4b 100644 --- a/src/plugins/dashboard/public/dashboard_api/settings_manager.ts +++ b/src/plugins/dashboard/public/dashboard_api/settings_manager.ts @@ -8,25 +8,12 @@ */ import fastIsEqual from 'fast-deep-equal'; -import { - PublishingSubject, - StateComparators, - initializeTitles, -} from '@kbn/presentation-publishing'; +import { StateComparators, initializeTitles } from '@kbn/presentation-publishing'; import { BehaviorSubject } from 'rxjs'; -import { DashboardState } from './types'; +import { DashboardSettings, DashboardState } from './types'; import { DEFAULT_DASHBOARD_INPUT } from '../dashboard_constants'; -import { DashboardStateFromSettingsFlyout } from '../dashboard_container/types'; -export function initializeSettingsManager({ - initialState, - setTimeRestore, - timeRestore$, -}: { - initialState?: DashboardState; - setTimeRestore: (timeRestore: boolean) => void; - timeRestore$: PublishingSubject<boolean | undefined>; -}) { +export function initializeSettingsManager(initialState?: DashboardState) { const syncColors$ = new BehaviorSubject<boolean>( initialState?.syncColors ?? DEFAULT_DASHBOARD_INPUT.syncColors ); @@ -50,6 +37,12 @@ export function initializeSettingsManager({ if (!fastIsEqual(tags, tags$.value)) tags$.next(tags); } const titleManager = initializeTitles(initialState ?? {}); + const timeRestore$ = new BehaviorSubject<boolean | undefined>( + initialState?.timeRestore ?? DEFAULT_DASHBOARD_INPUT.timeRestore + ); + function setTimeRestore(timeRestore: boolean) { + if (timeRestore !== timeRestore$.value) timeRestore$.next(timeRestore); + } const useMargins$ = new BehaviorSubject<boolean>( initialState?.useMargins ?? DEFAULT_DASHBOARD_INPUT.useMargins ); @@ -69,7 +62,7 @@ export function initializeSettingsManager({ }; } - function setSettings(settings: DashboardStateFromSettingsFlyout) { + function setSettings(settings: DashboardSettings) { setSyncColors(settings.syncColors); setSyncCursor(settings.syncCursor); setSyncTooltips(settings.syncTooltips); @@ -100,35 +93,16 @@ export function initializeSettingsManager({ syncColors: [syncColors$, setSyncColors], syncCursor: [syncCursor$, setSyncCursor], syncTooltips: [syncTooltips$, setSyncTooltips], + timeRestore: [timeRestore$, setTimeRestore], useMargins: [useMargins$, setUseMargins], - } as StateComparators< - Pick< - DashboardState, - | 'description' - | 'hidePanelTitles' - | 'syncColors' - | 'syncCursor' - | 'syncTooltips' - | 'title' - | 'useMargins' - > - >, + } as StateComparators<Omit<DashboardSettings, 'tags'>>, internalApi: { - getState: (): Pick< - DashboardState, - | 'description' - | 'hidePanelTitles' - | 'syncColors' - | 'syncCursor' - | 'syncTooltips' - | 'tags' - | 'title' - | 'useMargins' - > => { + getState: (): DashboardSettings => { const settings = getSettings(); return { ...settings, title: settings.title ?? '', + timeRestore: settings.timeRestore ?? DEFAULT_DASHBOARD_INPUT.timeRestore, hidePanelTitles: settings.hidePanelTitles ?? DEFAULT_DASHBOARD_INPUT.hidePanelTitles, }; }, diff --git a/src/plugins/dashboard/public/dashboard_api/types.ts b/src/plugins/dashboard/public/dashboard_api/types.ts index 7a1fc5fed7e13..54b540d575695 100644 --- a/src/plugins/dashboard/public/dashboard_api/types.ts +++ b/src/plugins/dashboard/public/dashboard_api/types.ts @@ -54,15 +54,12 @@ import { PublishesReload } from '@kbn/presentation-publishing/interfaces/fetch/p import { PublishesSearchSession } from '@kbn/presentation-publishing/interfaces/fetch/publishes_search_session'; import { LocatorPublic } from '@kbn/share-plugin/common'; import { DashboardPanelMap, DashboardPanelState } from '../../common'; -import type { DashboardOptions } from '../../server/content_management'; +import type { DashboardAttributes, DashboardOptions } from '../../server/content_management'; import { LoadDashboardReturn, SaveDashboardReturn, } from '../services/dashboard_content_management_service/types'; -import { - DashboardLocatorParams, - DashboardStateFromSettingsFlyout, -} from '../dashboard_container/types'; +import { DashboardLocatorParams } from '../dashboard_container/types'; export const DASHBOARD_API_TYPE = 'dashboard'; @@ -93,23 +90,19 @@ export interface DashboardCreationOptions { getEmbeddableAppContext?: (dashboardId?: string) => EmbeddableAppContext; } -export interface DashboardState extends DashboardOptions { - // filter context to be passed to children +export type DashboardSettings = DashboardOptions & { + description?: DashboardAttributes['description']; + tags: string[]; + timeRestore: DashboardAttributes['timeRestore']; + title: DashboardAttributes['description']; +}; + +export interface DashboardState extends DashboardSettings { query: Query; filters: Filter[]; - timeRestore: boolean; timeRange?: TimeRange; refreshInterval?: RefreshInterval; - - // dashboard meta info - title: string; - tags: string[]; viewMode: ViewMode; - description?: string; - - // settings from DashboardOptions - - // dashboard contents panels: DashboardPanelMap; /** @@ -152,8 +145,8 @@ export type DashboardApi = CanExpandPanels & fullScreenMode$: PublishingSubject<boolean>; focusedPanelId$: PublishingSubject<string | undefined>; forceRefresh: () => void; - getSettings: () => DashboardStateFromSettingsFlyout; - getDashboardPanelFromId: (id: string) => Promise<DashboardPanelState>; + getSettings: () => DashboardSettings; + getDashboardPanelFromId: (id: string) => DashboardPanelState; hasOverlays$: PublishingSubject<boolean>; hasUnsavedChanges$: PublishingSubject<boolean>; highlightPanel: (panelRef: HTMLDivElement) => void; @@ -173,7 +166,7 @@ export type DashboardApi = CanExpandPanels & setPanels: (panels: DashboardPanelMap) => void; setQuery: (query?: Query | undefined) => void; setScrollToPanelId: (id: string | undefined) => void; - setSettings: (settings: DashboardStateFromSettingsFlyout) => void; + setSettings: (settings: DashboardSettings) => void; setTags: (tags: string[]) => void; setTimeRange: (timeRange?: TimeRange | undefined) => void; unifiedSearchFilters$: PublishesUnifiedSearch['filters$']; diff --git a/src/plugins/dashboard/public/dashboard_api/unified_search_manager.ts b/src/plugins/dashboard/public/dashboard_api/unified_search_manager.ts index 1310f0104a5ea..9d39961778a91 100644 --- a/src/plugins/dashboard/public/dashboard_api/unified_search_manager.ts +++ b/src/plugins/dashboard/public/dashboard_api/unified_search_manager.ts @@ -48,6 +48,7 @@ import { DEFAULT_DASHBOARD_INPUT, GLOBAL_STATE_STORAGE_KEY } from '../dashboard_ export function initializeUnifiedSearchManager( initialState: DashboardState, controlGroupApi$: PublishingSubject<ControlGroupApi | undefined>, + timeRestore$: PublishingSubject<boolean | undefined>, waitForPanelsToLoad$: Observable<void>, getLastSavedState: () => DashboardState | undefined, creationOptions?: DashboardCreationOptions @@ -97,12 +98,6 @@ export function initializeUnifiedSearchManager( timefilterService.setTime(timeRangeOrDefault); } } - const timeRestore$ = new BehaviorSubject<boolean | undefined>( - initialState?.timeRestore ?? DEFAULT_DASHBOARD_INPUT.timeRestore - ); - function setTimeRestore(timeRestore: boolean) { - if (timeRestore !== timeRestore$.value) timeRestore$.next(timeRestore); - } const timeslice$ = new BehaviorSubject<[number, number] | undefined>(undefined); const unifiedSearchFilters$ = new BehaviorSubject<Filter[] | undefined>(initialState.filters); // setAndSyncUnifiedSearchFilters method not needed since filters synced with 2-way data binding @@ -312,9 +307,8 @@ export function initializeUnifiedSearchManager( return true; }, ], - timeRestore: [timeRestore$, setTimeRestore], } as StateComparators< - Pick<DashboardState, 'filters' | 'query' | 'refreshInterval' | 'timeRange' | 'timeRestore'> + Pick<DashboardState, 'filters' | 'query' | 'refreshInterval' | 'timeRange'> >, internalApi: { controlGroupReload$, @@ -325,7 +319,6 @@ export function initializeUnifiedSearchManager( ...lastSavedState.filters, ]); setQuery(lastSavedState.query); - setTimeRestore(lastSavedState.timeRestore); if (lastSavedState.timeRestore) { setAndSyncRefreshInterval(lastSavedState.refreshInterval); setAndSyncTimeRange(lastSavedState.timeRange); @@ -341,8 +334,6 @@ export function initializeUnifiedSearchManager( timeRange: timeRange$.value, timeRestore: timeRestore$.value ?? DEFAULT_DASHBOARD_INPUT.timeRestore, }), - setTimeRestore, - timeRestore$, }, cleanup: () => { controlGroupSubscriptions.unsubscribe(); diff --git a/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx b/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx index 3ad35d34b7fd1..d68c4a76e9f78 100644 --- a/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx +++ b/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx @@ -49,7 +49,7 @@ export const DashboardNoMatch = ({ history }: { history: RouteComponentProps['hi /> </p> </EuiCallOut>, - { analytics: coreServices.analytics, i18n: coreServices.i18n, theme: coreServices.theme } + coreServices ) ); diff --git a/src/plugins/dashboard/public/dashboard_app/top_nav/dashboard_editing_toolbar.tsx b/src/plugins/dashboard/public/dashboard_app/top_nav/dashboard_editing_toolbar.tsx index 6f9e0b5892a89..4e2aea60ad758 100644 --- a/src/plugins/dashboard/public/dashboard_app/top_nav/dashboard_editing_toolbar.tsx +++ b/src/plugins/dashboard/public/dashboard_app/top_nav/dashboard_editing_toolbar.tsx @@ -80,12 +80,6 @@ export function DashboardEditingToolbar({ isDisabled }: { isDisabled?: boolean } [dashboardApi] ); - /** - * embeddableFactory: Required, you can get the factory from embeddableStart.getEmbeddableFactory(<embeddable type, i.e. lens>) - * initialInput: Optional, use it in case you want to pass your own input to the factory - * dismissNotification: Optional, if not passed a toast will appear in the dashboard - */ - const controlGroupApi = useStateFromPublishingSubject(dashboardApi.controlGroupApi$); const extraButtons = [ <EditorMenu createNewVisType={createNewVisType} isDisabled={isDisabled} />, diff --git a/src/plugins/dashboard/public/dashboard_app/top_nav/editor_menu.tsx b/src/plugins/dashboard/public/dashboard_app/top_nav/editor_menu.tsx index cf7f9c65c6618..6d052225d6fba 100644 --- a/src/plugins/dashboard/public/dashboard_app/top_nav/editor_menu.tsx +++ b/src/plugins/dashboard/public/dashboard_app/top_nav/editor_menu.tsx @@ -57,7 +57,7 @@ export const EditorMenu = ({ createNewVisType, isDisabled }: EditorMenuProps) => /> ); }), - { analytics: coreServices.analytics, theme: coreServices.theme, i18n: coreServices.i18n } + coreServices ); dashboardApi.openOverlay( diff --git a/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid.test.tsx b/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid.test.tsx index 8700161711e17..543d6b7456270 100644 --- a/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid.test.tsx +++ b/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid.test.tsx @@ -10,7 +10,6 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; -import { CONTACT_CARD_EMBEDDABLE } from '@kbn/embeddable-plugin/public/lib/test_samples/embeddables'; import { DashboardGrid } from './dashboard_grid'; import { buildMockDashboardApi } from '../../../mocks'; @@ -50,12 +49,12 @@ jest.mock('./dashboard_grid_item', () => { const PANELS = { '1': { gridData: { x: 0, y: 0, w: 6, h: 6, i: '1' }, - type: CONTACT_CARD_EMBEDDABLE, + type: 'lens', explicitInput: { id: '1' }, }, '2': { gridData: { x: 6, y: 6, w: 6, h: 6, i: '2' }, - type: CONTACT_CARD_EMBEDDABLE, + type: 'lens', explicitInput: { id: '2' }, }, }; diff --git a/src/plugins/dashboard/public/dashboard_container/component/settings/index.ts b/src/plugins/dashboard/public/dashboard_container/component/settings/index.ts index 758ea4bf2fd70..970e67e6b8289 100644 --- a/src/plugins/dashboard/public/dashboard_container/component/settings/index.ts +++ b/src/plugins/dashboard/public/dashboard_container/component/settings/index.ts @@ -7,4 +7,4 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { DashboardSettings } from './settings_flyout'; +export { DashboardSettingsFlyout } from './settings_flyout'; diff --git a/src/plugins/dashboard/public/dashboard_container/component/settings/settings_flyout.tsx b/src/plugins/dashboard/public/dashboard_container/component/settings/settings_flyout.tsx index 20fd2b93119de..e0de277fc3c06 100644 --- a/src/plugins/dashboard/public/dashboard_container/component/settings/settings_flyout.tsx +++ b/src/plugins/dashboard/public/dashboard_container/component/settings/settings_flyout.tsx @@ -31,7 +31,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { DashboardContainerInput } from '../../../../common'; +import { DashboardSettings } from '../../../dashboard_api/types'; import { useDashboardApi } from '../../../dashboard_api/use_dashboard_api'; import { getDashboardContentManagementService } from '../../../services/dashboard_content_management_service'; import { savedObjectsTaggingService } from '../../../services/kibana_services'; @@ -42,7 +42,7 @@ interface DashboardSettingsProps { const DUPLICATE_TITLE_CALLOUT_ID = 'duplicateTitleCallout'; -export const DashboardSettings = ({ onClose }: DashboardSettingsProps) => { +export const DashboardSettingsFlyout = ({ onClose }: DashboardSettingsProps) => { const dashboardApi = useDashboardApi(); const [localSettings, setLocalSettings] = useState(dashboardApi.getSettings()); @@ -81,7 +81,7 @@ export const DashboardSettings = ({ onClose }: DashboardSettingsProps) => { } }; - const updateDashboardSetting = useCallback((newSettings: Partial<DashboardContainerInput>) => { + const updateDashboardSetting = useCallback((newSettings: Partial<DashboardSettings>) => { setLocalSettings((prevSettings) => { return { ...prevSettings, diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/api/open_settings_flyout.tsx b/src/plugins/dashboard/public/dashboard_container/embeddable/api/open_settings_flyout.tsx index 867e6ae9d0477..582d19af620f9 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/api/open_settings_flyout.tsx +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/api/open_settings_flyout.tsx @@ -14,20 +14,20 @@ import { toMountPoint } from '@kbn/react-kibana-mount'; import { DashboardApi } from '../../../dashboard_api/types'; import { DashboardContext } from '../../../dashboard_api/use_dashboard_api'; import { coreServices } from '../../../services/kibana_services'; -import { DashboardSettings } from '../../component/settings/settings_flyout'; +import { DashboardSettingsFlyout } from '../../component/settings/settings_flyout'; export function openSettingsFlyout(dashboardApi: DashboardApi) { dashboardApi.openOverlay( coreServices.overlays.openFlyout( toMountPoint( <DashboardContext.Provider value={dashboardApi}> - <DashboardSettings + <DashboardSettingsFlyout onClose={() => { dashboardApi.clearOverlays(); }} /> </DashboardContext.Provider>, - { analytics: coreServices.analytics, i18n: coreServices.i18n, theme: coreServices.theme } + coreServices ), { size: 's', diff --git a/src/plugins/dashboard/public/dashboard_container/types.ts b/src/plugins/dashboard/public/dashboard_container/types.ts index eac2a782f11c2..2eff03bf10913 100644 --- a/src/plugins/dashboard/public/dashboard_container/types.ts +++ b/src/plugins/dashboard/public/dashboard_container/types.ts @@ -7,12 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import type { ContainerOutput } from '@kbn/embeddable-plugin/public'; import { SerializableRecord } from '@kbn/utility-types'; import { ControlGroupRuntimeState } from '@kbn/controls-plugin/public'; import type { DashboardContainerInput } from '../../common'; -import type { DashboardOptions, DashboardPanel } from '../../server/content_management'; +import type { DashboardPanel } from '../../server/content_management'; export interface UnsavedPanelState { [key: string]: object | undefined; @@ -23,13 +22,6 @@ export type RedirectToProps = | { destination: 'dashboard'; id?: string; useReplace?: boolean; editMode?: boolean } | { destination: 'listing'; filter?: string; useReplace?: boolean }; -export type DashboardStateFromSaveModal = Pick< - DashboardContainerInput, - 'title' | 'description' | 'tags' | 'timeRestore' ->; - -export type DashboardStateFromSettingsFlyout = DashboardStateFromSaveModal & DashboardOptions; - export type DashboardLoadType = | 'sessionFirstLoad' | 'dashboardFirstLoad' @@ -41,12 +33,6 @@ export interface DashboardRenderPerformanceStats { panelsRenderStartTime: number; } -export type DashboardContainerInputWithoutId = Omit<DashboardContainerInput, 'id'>; - -export interface DashboardContainerOutput extends ContainerOutput { - usedDataViewIds?: string[]; -} - export type DashboardLoadedEventStatus = 'done' | 'error'; export interface DashboardLoadedEventMeta { diff --git a/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx b/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx index f3dac2e9bb624..a2adea2470abb 100644 --- a/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx +++ b/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx @@ -112,7 +112,7 @@ export const confirmCreateWithUnsaved = ( </div> </EuiOutsideClickDetector> </EuiFocusTrap>, - { analytics: coreServices.analytics, i18n: coreServices.i18n, theme: coreServices.theme } + coreServices ), { 'data-test-subj': 'dashboardCreateConfirmModal', diff --git a/src/plugins/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.tsx b/src/plugins/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.tsx index e434fe19d7b26..e29f93f97c17e 100644 --- a/src/plugins/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.tsx +++ b/src/plugins/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.tsx @@ -16,7 +16,6 @@ import type { SavedObjectsFindOptionsReference } from '@kbn/core/public'; import { reportPerformanceMetricEvent } from '@kbn/ebt-tools'; import { ViewMode } from '@kbn/embeddable-plugin/public'; -import { DashboardContainerInput } from '../../../common'; import type { DashboardSearchOut } from '../../../server/content_management'; import { DASHBOARD_CONTENT_ID, @@ -35,6 +34,7 @@ import { import { confirmCreateWithUnsaved } from '../confirm_overlays'; import { DashboardListingEmptyPrompt } from '../dashboard_listing_empty_prompt'; import { DashboardSavedObjectUserContent } from '../types'; +import { UpdateDashboardMetaProps } from '../../services/dashboard_content_management_service/lib/update_dashboard_meta'; type GetDetailViewLink = TableListViewTableProps<DashboardSavedObjectUserContent>['getDetailViewLink']; @@ -130,7 +130,7 @@ export const useDashboardListingTable = ({ }, [dashboardBackupService, goToDashboard, useSessionStorageIntegration]); const updateItemMeta = useCallback( - async (props: Pick<DashboardContainerInput, 'id' | 'title' | 'description' | 'tags'>) => { + async (props: UpdateDashboardMetaProps) => { await dashboardContentManagementService.updateDashboardMeta(props); setUnsavedDashboardIds(dashboardBackupService.getDashboardIdsWithUnsavedChanges()); diff --git a/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/update_dashboard_meta.ts b/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/update_dashboard_meta.ts index 90f31cfdc05c6..60f61b64caeec 100644 --- a/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/update_dashboard_meta.ts +++ b/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/update_dashboard_meta.ts @@ -7,16 +7,21 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { DashboardContainerInput } from '../../../../common'; import { DASHBOARD_CONTENT_ID } from '../../../dashboard_constants'; -import type { DashboardUpdateIn, DashboardUpdateOut } from '../../../../server/content_management'; +import type { + DashboardAttributes, + DashboardUpdateIn, + DashboardUpdateOut, +} from '../../../../server/content_management'; import { findDashboardsByIds } from './find_dashboards'; import { contentManagementService, savedObjectsTaggingService } from '../../kibana_services'; -type UpdateDashboardMetaProps = Pick< - DashboardContainerInput, - 'id' | 'title' | 'description' | 'tags' ->; +export interface UpdateDashboardMetaProps { + id: DashboardUpdateIn['id']; + title: DashboardAttributes['title']; + description?: DashboardAttributes['description']; + tags: string[]; +} export const updateDashboardMeta = async ({ id, diff --git a/src/plugins/dashboard/public/services/dashboard_content_management_service/types.ts b/src/plugins/dashboard/public/services/dashboard_content_management_service/types.ts index 1922ed3e30dac..3c0c37afc0cd6 100644 --- a/src/plugins/dashboard/public/services/dashboard_content_management_service/types.ts +++ b/src/plugins/dashboard/public/services/dashboard_content_management_service/types.ts @@ -21,6 +21,7 @@ import { SearchDashboardsResponse, } from './lib/find_dashboards'; import { DashboardState } from '../../dashboard_api/types'; +import { UpdateDashboardMetaProps } from './lib/update_dashboard_meta'; export interface DashboardContentManagementService { findDashboards: FindDashboardsService; @@ -28,9 +29,7 @@ export interface DashboardContentManagementService { loadDashboardState: (props: { id?: string }) => Promise<LoadDashboardReturn>; saveDashboardState: (props: SaveDashboardProps) => Promise<SaveDashboardReturn>; checkForDuplicateDashboardTitle: (meta: DashboardDuplicateTitleCheckProps) => Promise<boolean>; - updateDashboardMeta: ( - props: Pick<DashboardContainerInput, 'id' | 'title' | 'description' | 'tags'> - ) => Promise<void>; + updateDashboardMeta: (props: UpdateDashboardMetaProps) => Promise<void>; } /** diff --git a/src/plugins/data/public/search/search_interceptor/search_interceptor.ts b/src/plugins/data/public/search/search_interceptor/search_interceptor.ts index 8b312cd2fab87..068265943ecd7 100644 --- a/src/plugins/data/public/search/search_interceptor/search_interceptor.ts +++ b/src/plugins/data/public/search/search_interceptor/search_interceptor.ts @@ -47,6 +47,7 @@ import type { IUiSettingsClient, ThemeServiceStart, ToastsSetup, + UserProfileService, } from '@kbn/core/public'; import { toMountPoint } from '@kbn/react-kibana-mount'; @@ -127,6 +128,7 @@ export class SearchInterceptor { analytics: Pick<AnalyticsServiceStart, 'reportEvent'>; i18n: I18nStart; theme: Pick<ThemeServiceStart, 'theme$'>; + userProfile: UserProfileService; }; /* @@ -136,10 +138,10 @@ export class SearchInterceptor { this.deps.http.addLoadingCountSource(this.pendingCount$); this.deps.startServices.then(([coreStart, depsStart]) => { - const { application, docLinks, analytics, i18n: i18nStart, theme } = coreStart; + const { application, docLinks, ...startRenderServices } = coreStart; this.application = application; this.docLinks = docLinks; - this.startRenderServices = { analytics, i18n: i18nStart, theme }; + this.startRenderServices = startRenderServices; this.inspector = (depsStart as SearchServiceStartDependencies).inspector; }); diff --git a/src/plugins/data/public/search/search_service.ts b/src/plugins/data/public/search/search_service.ts index d1e5d02e5d840..6d2e09a5ef300 100644 --- a/src/plugins/data/public/search/search_service.ts +++ b/src/plugins/data/public/search/search_service.ts @@ -217,16 +217,7 @@ export class SearchService implements Plugin<ISearchSetup, ISearchStart> { } public start( - { - analytics, - http, - theme, - uiSettings, - chrome, - application, - notifications, - i18n: i18nStart, - }: CoreStart, + { http, uiSettings, chrome, application, notifications, ...startServices }: CoreStart, { fieldFormats, indexPatterns, @@ -245,11 +236,9 @@ export class SearchService implements Plugin<ISearchSetup, ISearchStart> { const aggs = this.aggsService.start({ fieldFormats, indexPatterns }); const warningsServices = { - analytics, - i18n: i18nStart, inspector, notifications, - theme, + ...startServices, }; const searchSourceDependencies: SearchSourceDependencies = { @@ -305,7 +294,7 @@ export class SearchService implements Plugin<ISearchSetup, ISearchStart> { tourDisabled: screenshotMode.isScreenshotMode(), }) ), - { analytics, i18n: i18nStart, theme } + startServices ), }); } diff --git a/src/plugins/data/public/search/session/sessions_mgmt/application/render.tsx b/src/plugins/data/public/search/session/sessions_mgmt/application/render.tsx index f786819044061..4c375be8534c4 100644 --- a/src/plugins/data/public/search/session/sessions_mgmt/application/render.tsx +++ b/src/plugins/data/public/search/session/sessions_mgmt/application/render.tsx @@ -16,7 +16,7 @@ import { SearchSessionsMgmtMain } from '../components/main'; export const renderApp = ( elem: HTMLElement | null, - { i18n, uiSettings, ...homeDeps }: AppDependencies + { uiSettings, ...homeDeps }: AppDependencies ) => { if (!elem) { return () => undefined; @@ -28,7 +28,7 @@ export const renderApp = ( }); render( - <KibanaRenderContextProvider theme={homeDeps.core.theme} i18n={i18n}> + <KibanaRenderContextProvider {...homeDeps.core}> <KibanaReactContextProvider> <SearchSessionsMgmtMain {...homeDeps} timezone={uiSettings.get('dateFormat:tz')} /> </KibanaReactContextProvider> diff --git a/src/plugins/data/server/search/search_service.ts b/src/plugins/data/server/search/search_service.ts index 156336e47492d..f4d17f4f640e5 100644 --- a/src/plugins/data/server/search/search_service.ts +++ b/src/plugins/data/server/search/search_service.ts @@ -189,7 +189,7 @@ export class SearchService implements Plugin<ISearchSetup, ISearchStart> { // We don't want to register this because we don't want the client to be able to access this // strategy, but we do want to expose it to other server-side plugins - // see x-pack/plugins/security_solution/server/search_strategy/timeline/index.ts + // see x-pack/solutions/security/plugins/security_solution/server/search_strategy/timeline/index.ts // for example use case this.searchAsInternalUser = enhancedEsSearchStrategyProvider( this.initializerContext.config.legacy.globalConfig$, diff --git a/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts b/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts index 9fb6fafb11dbb..ad03451bf8691 100644 --- a/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts +++ b/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts @@ -11,7 +11,7 @@ import type { IncomingHttpHeaders } from 'http'; import type { IScopedClusterClient, Logger } from '@kbn/core/server'; import { catchError, tap } from 'rxjs'; import type { DiagnosticResult } from '@elastic/transport'; -import { SqlQueryResponse } from '@elastic/elasticsearch/lib/api/types'; +import { SqlQueryResponse, type SqlQuerySqlFormat } from '@elastic/elasticsearch/lib/api/types'; import { getKbnServerError } from '@kbn/kibana-utils-plugin/server'; import { getKbnSearchError } from '../../report_search_error'; import type { ISearchStrategy, SearchStrategyDependencies } from '../../types'; @@ -61,9 +61,9 @@ export const sqlSearchStrategyProvider = ( } else { ({ headers, body, meta } = await client.sql.query( { - format: params.format ?? 'json', ...getDefaultAsyncSubmitParams(searchConfig, options), ...params, + format: (params.format ?? 'json') as SqlQuerySqlFormat, }, { ...options.transport, signal: options.abortSignal, meta: true } )); diff --git a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap index 1e97b4a59ed0f..c0caa836b45c7 100644 --- a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap +++ b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap @@ -1,5 +1,99 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`ColorFormatEditor should render boolean type normally 1`] = ` +<Fragment> + <EuiBasicTable + columns={ + Array [ + Object { + "field": "boolean", + "name": <Memo(MemoizedFormattedMessage) + defaultMessage="Boolean" + id="indexPatternFieldEditor.color.booleanLabel" + />, + "render": [Function], + }, + Object { + "field": "text", + "name": <Memo(MemoizedFormattedMessage) + defaultMessage="Text color" + id="indexPatternFieldEditor.color.textColorLabel" + />, + "render": [Function], + }, + Object { + "field": "background", + "name": <Memo(MemoizedFormattedMessage) + defaultMessage="Background color" + id="indexPatternFieldEditor.color.backgroundLabel" + />, + "render": [Function], + }, + Object { + "name": <Memo(MemoizedFormattedMessage) + defaultMessage="Example" + id="indexPatternFieldEditor.color.exampleLabel" + />, + "render": [Function], + }, + Object { + "actions": Array [ + Object { + "available": [Function], + "color": "danger", + "data-test-subj": "colorEditorRemoveColor", + "description": "Delete color format", + "icon": "trash", + "name": "Delete", + "onClick": [Function], + "type": "icon", + }, + ], + "field": "actions", + "name": "Actions", + }, + ] + } + items={ + Array [ + Object { + "background": "#ffffff", + "boolean": "true", + "index": 0, + "range": "-Infinity:Infinity", + "regex": "<insert regex>", + "text": "#000000", + }, + ] + } + noItemsMessage={ + <EuiI18n + default="No items found" + token="euiBasicTable.noItemsMessage" + /> + } + tableLayout="fixed" + /> + <EuiSpacer + size="m" + /> + <EuiButton + data-test-subj="colorEditorAddColor" + iconType="plusInCircle" + onClick={[Function]} + size="s" + > + <MemoizedFormattedMessage + defaultMessage="Add color" + id="indexPatternFieldEditor.color.addColorButton" + /> + </EuiButton> + <EuiSpacer + size="l" + /> +</Fragment> +`; + exports[`ColorFormatEditor should render multiple colors 1`] = ` <Fragment> <EuiBasicTable @@ -58,6 +152,7 @@ exports[`ColorFormatEditor should render multiple colors 1`] = ` Array [ Object { "background": "#ffffff", + "boolean": "true", "index": 0, "range": "-Infinity:Infinity", "regex": "<insert regex>", @@ -65,6 +160,7 @@ exports[`ColorFormatEditor should render multiple colors 1`] = ` }, Object { "background": "#ffffff", + "boolean": "true", "index": 1, "range": "-Infinity:Infinity", "regex": "<insert regex>", @@ -158,6 +254,7 @@ exports[`ColorFormatEditor should render other type normally (range field) 1`] = Array [ Object { "background": "#ffffff", + "boolean": "true", "index": 0, "range": "-Infinity:Infinity", "regex": "<insert regex>", @@ -251,6 +348,7 @@ exports[`ColorFormatEditor should render string type normally (regex field) 1`] Array [ Object { "background": "#ffffff", + "boolean": "true", "index": 0, "range": "-Infinity:Infinity", "regex": "<insert regex>", diff --git a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.test.tsx b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.test.tsx index a44845ad93f06..7b75c38aa02aa 100644 --- a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.test.tsx +++ b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.test.tsx @@ -57,6 +57,20 @@ describe('ColorFormatEditor', () => { expect(component).toMatchSnapshot(); }); + it('should render boolean type normally', async () => { + const component = shallowWithI18nProvider( + <ColorFormatEditor + fieldType={'boolean'} + format={format as unknown as FieldFormat} + formatParams={formatParams} + onChange={onChange} + onError={onError} + /> + ); + + expect(component).toMatchSnapshot(); + }); + it('should render other type normally (range field)', async () => { const component = shallowWithI18nProvider( <ColorFormatEditor diff --git a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx index 9ed18eb7f8bdc..85343826a58f3 100644 --- a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx +++ b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx @@ -15,6 +15,7 @@ import { EuiColorPicker, EuiIcon, EuiFieldText, + EuiSelect, EuiSpacer, } from '@elastic/eui'; @@ -29,6 +30,7 @@ import { FormatEditorProps } from '../types'; interface Color { range?: string; regex?: string; + boolean?: string; text: string; background: string; } @@ -76,6 +78,90 @@ export class ColorFormatEditor extends DefaultFormatEditor<ColorFormatEditorForm }); }; + getFirstColumn = (fieldType: string) => { + if (fieldType === 'boolean') + return { + field: 'boolean', + name: ( + <FormattedMessage + id="indexPatternFieldEditor.color.booleanLabel" + defaultMessage="Boolean" + /> + ), + render: (value: string, item: IndexedColor) => { + return ( + <EuiSelect + options={[ + { value: 'true', text: 'true' }, + { value: 'false', text: 'false' }, + ]} + value={value} + data-test-subj={`colorEditorKeyBoolean ${item.index}`} + onChange={(e) => { + this.onColorChange( + { + boolean: e.target.value, + }, + item.index + ); + }} + /> + ); + }, + }; + if (fieldType === 'string') + return { + field: 'regex', + name: ( + <FormattedMessage + id="indexPatternFieldEditor.color.patternLabel" + defaultMessage="Pattern (regular expression)" + /> + ), + render: (value: string, item: IndexedColor) => { + return ( + <EuiFieldText + value={value} + data-test-subj={`colorEditorKeyPattern ${item.index}`} + onChange={(e) => { + this.onColorChange( + { + regex: e.target.value, + }, + item.index + ); + }} + /> + ); + }, + }; + return { + field: 'range', + name: ( + <FormattedMessage + id="indexPatternFieldEditor.color.rangeLabel" + defaultMessage="Range (min:max)" + /> + ), + render: (value: string, item: IndexedColor) => { + return ( + <EuiFieldText + value={value} + data-test-subj={`colorEditorKeyRange ${item.index}`} + onChange={(e) => { + this.onColorChange( + { + range: e.target.value, + }, + item.index + ); + }} + /> + ); + }, + }; + }; + render() { const { formatParams, fieldType } = this.props; @@ -91,57 +177,7 @@ export class ColorFormatEditor extends DefaultFormatEditor<ColorFormatEditorForm []; const columns = [ - fieldType === 'string' - ? { - field: 'regex', - name: ( - <FormattedMessage - id="indexPatternFieldEditor.color.patternLabel" - defaultMessage="Pattern (regular expression)" - /> - ), - render: (value: string, item: IndexedColor) => { - return ( - <EuiFieldText - value={value} - data-test-subj={`colorEditorKeyPattern ${item.index}`} - onChange={(e) => { - this.onColorChange( - { - regex: e.target.value, - }, - item.index - ); - }} - /> - ); - }, - } - : { - field: 'range', - name: ( - <FormattedMessage - id="indexPatternFieldEditor.color.rangeLabel" - defaultMessage="Range (min:max)" - /> - ), - render: (value: string, item: IndexedColor) => { - return ( - <EuiFieldText - value={value} - data-test-subj={`colorEditorKeyRange ${item.index}`} - onChange={(e) => { - this.onColorChange( - { - range: e.target.value, - }, - item.index - ); - }} - /> - ); - }, - }, + this.getFirstColumn(fieldType), { field: 'text', name: ( diff --git a/src/plugins/data_view_field_editor/server/routes/field_preview.ts b/src/plugins/data_view_field_editor/server/routes/field_preview.ts index 8d585a7688714..a7df6a9f4e2ac 100644 --- a/src/plugins/data_view_field_editor/server/routes/field_preview.ts +++ b/src/plugins/data_view_field_editor/server/routes/field_preview.ts @@ -81,9 +81,8 @@ export const registerFieldPreviewRoute = ({ router }: RouteDependencies): void = }; try { - // client types need to be update to support this request format + // client types need to be updated to support this request format // when it does, supply response types - // @ts-expect-error const { result } = await client.asCurrentUser.scriptsPainlessExecute(body); return res.ok({ body: { values: result } }); diff --git a/src/plugins/data_view_management/public/types.ts b/src/plugins/data_view_management/public/types.ts index 161ee3b1e21de..eaee8b28d6145 100644 --- a/src/plugins/data_view_management/public/types.ts +++ b/src/plugins/data_view_management/public/types.ts @@ -33,7 +33,7 @@ import { SharePluginStart } from '@kbn/share-plugin/public'; import type { IndexPatternManagementStart } from '.'; import type { DataViewMgmtService } from './management_app/data_view_management_service'; -export type StartServices = Pick<CoreStart, 'analytics' | 'i18n' | 'theme'>; +export type StartServices = Pick<CoreStart, 'analytics' | 'i18n' | 'theme' | 'userProfile'>; export interface IndexPatternManagmentContext extends StartServices { dataViewMgmtService: DataViewMgmtService; diff --git a/src/plugins/dev_tools/public/index.ts b/src/plugins/dev_tools/public/index.ts deleted file mode 100644 index ebe346160b9be..0000000000000 --- a/src/plugins/dev_tools/public/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -// TODO: https://github.com/elastic/kibana/issues/110892 -/* eslint-disable @kbn/eslint/no_export_all */ - -import { DevToolsPlugin } from './plugin'; -export * from './plugin'; -export * from '../common/constants'; - -export function plugin() { - return new DevToolsPlugin(); -} diff --git a/src/plugins/dev_tools/tsconfig.json b/src/plugins/dev_tools/tsconfig.json deleted file mode 100644 index 102e44488a7eb..0000000000000 --- a/src/plugins/dev_tools/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": ["common/*", "public/**/*", "server/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/url-forwarding-plugin", - "@kbn/management-plugin", - "@kbn/i18n", - "@kbn/ui-theme", - "@kbn/shared-ux-router", - "@kbn/deeplinks-devtools", - "@kbn/config-schema", - "@kbn/core-plugins-server", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/src/plugins/discover/public/application/main/discover_main_route.tsx b/src/plugins/discover/public/application/main/discover_main_route.tsx index 205926cf4943b..c88774d6f9e11 100644 --- a/src/plugins/discover/public/application/main/discover_main_route.tsx +++ b/src/plugins/discover/public/application/main/discover_main_route.tsx @@ -206,7 +206,7 @@ export function DiscoverMainRoute({ onBeforeRedirect() { services.urlTracker.setTrackedUrl('/'); }, - theme: core.theme, + ...core, })(e); } else { setError(e); @@ -222,8 +222,7 @@ export function DiscoverMainRoute({ services, chrome.recentlyAccessed, history, - core.application.navigateToApp, - core.theme, + core, basePath, toastNotifications, ] diff --git a/src/plugins/discover/public/application/main/hooks/use_url_tracking.ts b/src/plugins/discover/public/application/main/hooks/use_url_tracking.ts index e9afd3ed60349..e5f368b99b8ab 100644 --- a/src/plugins/discover/public/application/main/hooks/use_url_tracking.ts +++ b/src/plugins/discover/public/application/main/hooks/use_url_tracking.ts @@ -8,6 +8,7 @@ */ import { useEffect } from 'react'; +import { isOfAggregateQueryType } from '@kbn/es-query'; import { DiscoverSavedSearchContainer } from '../state_management/discover_saved_search_container'; import { useDiscoverServices } from '../../../hooks/use_discover_services'; @@ -23,7 +24,12 @@ export function useUrlTracking(savedSearchContainer: DiscoverSavedSearchContaine if (!dataView) { return; } - const trackingEnabled = Boolean(dataView.isPersisted() || savedSearch.id); + const trackingEnabled = + // Disable for ad-hoc data views as it can't be restored after a page refresh + Boolean(dataView.isPersisted() || savedSearch.id) || + // Enable for ES|QL, although it uses ad-hoc data views + isOfAggregateQueryType(savedSearch.searchSource.getField('query')); + urlTracker.setTrackingEnabled(trackingEnabled); }); diff --git a/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx b/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx index a059b6f507259..ed56ee5f07c9c 100644 --- a/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx +++ b/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx @@ -33,7 +33,7 @@ export interface QueryParams { to: string | null; } -const LEGACY_BASE_ALERT_API_PATH = '/api/alerts'; +const BASE_ALERTING_API_PATH = '/api/alerting'; const buildTimeRangeFilter = ( dataView: DataView, @@ -77,7 +77,7 @@ export const getAlertUtils = ( const fetchAlert = async (id: string) => { try { return await core.http.get<Rule<SearchThresholdAlertParams>>( - `${LEGACY_BASE_ALERT_API_PATH}/alert/${id}` + `${BASE_ALERTING_API_PATH}/rule/${id}` ); } catch (error) { const errorTitle = i18n.translate('discover.viewAlert.alertRuleFetchErrorTitle', { diff --git a/src/plugins/discover/public/build_services.ts b/src/plugins/discover/public/build_services.ts index df194bc03fa0f..0aef34338c374 100644 --- a/src/plugins/discover/public/build_services.ts +++ b/src/plugins/discover/public/build_services.ts @@ -23,6 +23,8 @@ import type { AnalyticsServiceStart, AppMountParameters, ScopedHistory, + ThemeServiceStart, + UserProfileService, } from '@kbn/core/public'; import type { FilterManager, @@ -96,7 +98,8 @@ export interface DiscoverServices { history: History<HistoryLocationState>; getScopedHistory: <T>() => ScopedHistory<T | undefined> | undefined; setHeaderActionMenu: AppMountParameters['setHeaderActionMenu']; - theme: CoreStart['theme']; + theme: ThemeServiceStart; + userProfile: UserProfileService; filterManager: FilterManager; fieldFormats: FieldFormatsStart; dataViews: DataViewsContract; @@ -185,6 +188,7 @@ export const buildServices = memoize( embeddable: plugins.embeddable, i18n: core.i18n, theme: core.theme, + userProfile: core.userProfile, fieldFormats: plugins.fieldFormats, filterManager: plugins.data.query.filterManager, history, diff --git a/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/consts.ts b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/consts.ts new file mode 100644 index 0000000000000..1e6e0b1b2e9db --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/consts.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const DEPRECATION_LOGS_PROFILE_ID = 'deprecation-logs-profile'; +export const DEPRECATION_LOGS_PATTERN_PREFIX = '.logs-deprecation'; diff --git a/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/index.ts b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/index.ts new file mode 100644 index 0000000000000..8110f3371ce81 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export { createDeprecationLogsDataSourceProfileProvider } from './profile'; diff --git a/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.test.ts b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.test.ts new file mode 100644 index 0000000000000..c961f310f6e5a --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.test.ts @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { createStubIndexPattern } from '@kbn/data-views-plugin/common/data_view.stub'; +import { createDataViewDataSource } from '../../../../../common/data_sources'; +import { DataSourceCategory, RootContext, SolutionType } from '../../../profiles'; +import { createDeprecationLogsDataSourceProfileProvider } from './profile'; +import type { ContextWithProfileId } from '../../../profile_service'; +import { DEPRECATION_LOGS_PROFILE_ID } from './consts'; + +describe('deprecationLogsProfileProvider', () => { + const deprecationLogsProfileProvider = createDeprecationLogsDataSourceProfileProvider(); + const VALID_INDEX_PATTERN = '.logs-deprecation.elasticsearch-default'; + const VALID_MIXED_INDEX_PATTERN = + '.logs-deprecation.elasticsearch-default,.logs-deprecation.abc,.logs-deprecation.def'; + const INVALID_MIXED_INDEX_PATTERN = '.logs-deprecation.elasticsearch-default,metrics-*'; + const INVALID_INDEX_PATTERN = 'my_source-access-*'; + const ROOT_CONTEXT: ContextWithProfileId<RootContext> = { + profileId: DEPRECATION_LOGS_PROFILE_ID, + solutionType: SolutionType.Default, + }; + const RESOLUTION_MATCH = { + isMatch: true, + context: { + category: DataSourceCategory.Logs, + }, + }; + const RESOLUTION_MISMATCH = { + isMatch: false, + }; + + it('should match data view sources with an allowed index pattern', () => { + const result = deprecationLogsProfileProvider.resolve({ + rootContext: ROOT_CONTEXT, + dataSource: createDataViewDataSource({ dataViewId: VALID_INDEX_PATTERN }), + dataView: createStubIndexPattern({ spec: { title: VALID_INDEX_PATTERN } }), + }); + expect(result).toEqual(RESOLUTION_MATCH); + }); + + it('should match data view sources with a mixed pattern containing allowed index patterns', () => { + const result = deprecationLogsProfileProvider.resolve({ + rootContext: ROOT_CONTEXT, + dataSource: createDataViewDataSource({ dataViewId: VALID_MIXED_INDEX_PATTERN }), + dataView: createStubIndexPattern({ spec: { title: VALID_MIXED_INDEX_PATTERN } }), + }); + expect(result).toEqual(RESOLUTION_MATCH); + }); + + it('should NOT match data view sources with not allowed index pattern', () => { + const result = deprecationLogsProfileProvider.resolve({ + rootContext: ROOT_CONTEXT, + dataSource: createDataViewDataSource({ dataViewId: INVALID_INDEX_PATTERN }), + dataView: createStubIndexPattern({ spec: { title: INVALID_INDEX_PATTERN } }), + }); + expect(result).toEqual(RESOLUTION_MISMATCH); + }); + + it('should NOT match data view sources with a mixed pattern containing not allowed index patterns', () => { + const result = deprecationLogsProfileProvider.resolve({ + rootContext: ROOT_CONTEXT, + dataSource: createDataViewDataSource({ dataViewId: INVALID_MIXED_INDEX_PATTERN }), + dataView: createStubIndexPattern({ spec: { title: INVALID_MIXED_INDEX_PATTERN } }), + }); + expect(result).toEqual(RESOLUTION_MISMATCH); + }); +}); diff --git a/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.ts b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.ts new file mode 100644 index 0000000000000..4d220892aea29 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { DataSourceCategory } from '../../../profiles'; +import { type DataSourceProfileProvider } from '../../../profiles'; +import { DEPRECATION_LOGS_PATTERN_PREFIX, DEPRECATION_LOGS_PROFILE_ID } from './consts'; +import { extractIndexPatternFrom } from '../../extract_index_pattern_from'; + +export const createDeprecationLogsDataSourceProfileProvider = + (): DataSourceProfileProvider<{}> => ({ + profileId: DEPRECATION_LOGS_PROFILE_ID, + profile: { + getDefaultAppState: () => () => ({ + columns: [ + { name: 'log.level', width: 150 }, + { name: 'message' }, + { name: 'elasticsearch.http.request.x_opaque_id', width: 250 }, + { name: 'elasticsearch.cluster.name', width: 250 }, + { name: 'elasticsearch.event.category', width: 250 }, + ], + }), + }, + resolve: (params) => { + const indexPattern = extractIndexPatternFrom(params); + + if (!checkAllIndicesInPatternAreDeprecationLogs(indexPattern)) { + return { isMatch: false }; + } + + return { + isMatch: true, + context: { + category: DataSourceCategory.Logs, + }, + }; + }, + }); + +/* + This function returns true if the index pattern belongs to deprecation logs. + It also considers multiple patterns separated by commas. +*/ +const checkAllIndicesInPatternAreDeprecationLogs = (indexPattern: string | null): boolean => { + if (!indexPattern) { + return false; + } + const indexPatternArray = indexPattern.split(','); + const result = indexPatternArray.reduce( + (acc, val) => acc && val.startsWith(DEPRECATION_LOGS_PATTERN_PREFIX), + true + ); + return result; +}; diff --git a/src/plugins/discover/public/context_awareness/profile_providers/register_profile_providers.ts b/src/plugins/discover/public/context_awareness/profile_providers/register_profile_providers.ts index b0ee4318dde2e..88c7628e9273a 100644 --- a/src/plugins/discover/public/context_awareness/profile_providers/register_profile_providers.ts +++ b/src/plugins/discover/public/context_awareness/profile_providers/register_profile_providers.ts @@ -28,6 +28,7 @@ import { } from './profile_provider_services'; import type { DiscoverServices } from '../../build_services'; import { createObservabilityRootProfileProvider } from './observability/observability_root_profile'; +import { createDeprecationLogsDataSourceProfileProvider } from './common/deprecation_logs'; /** * Register profile providers for root, data source, and document contexts to the profile profile services @@ -133,6 +134,7 @@ const createRootProfileProviders = (providerServices: ProfileProviderServices) = */ const createDataSourceProfileProviders = (providerServices: ProfileProviderServices) => [ createExampleDataSourceProfileProvider(), + createDeprecationLogsDataSourceProfileProvider(), ...createObservabilityLogsDataSourceProfileProviders(providerServices), ]; diff --git a/src/plugins/discover/public/context_awareness/profiles_manager.test.ts b/src/plugins/discover/public/context_awareness/profiles_manager.test.ts index 006b1c9e0da32..d12b56de911b8 100644 --- a/src/plugins/discover/public/context_awareness/profiles_manager.test.ts +++ b/src/plugins/discover/public/context_awareness/profiles_manager.test.ts @@ -26,6 +26,7 @@ describe('ProfilesManager', () => { jest.clearAllMocks(); mocks = createContextAwarenessMocks(); jest.spyOn(mocks.ebtManagerMock, 'updateProfilesContextWith'); + jest.spyOn(mocks.ebtManagerMock, 'trackContextualProfileResolvedEvent'); }); it('should return default profiles', () => { @@ -74,6 +75,15 @@ describe('ProfilesManager', () => { 'root-profile', 'data-source-profile', ]); + + expect(mocks.ebtManagerMock.trackContextualProfileResolvedEvent).toHaveBeenNthCalledWith(1, { + profileId: 'root-profile', + contextLevel: 'rootLevel', + }); + expect(mocks.ebtManagerMock.trackContextualProfileResolvedEvent).toHaveBeenNthCalledWith(2, { + profileId: 'data-source-profile', + contextLevel: 'dataSourceLevel', + }); }); it('should expose profiles as an observable', async () => { @@ -152,7 +162,7 @@ describe('ProfilesManager', () => { resolveSpy.mockRejectedValue(new Error('Failed to resolve')); await mocks.profilesManagerMock.resolveRootProfile({ solutionNavId: 'newSolutionNavId' }); expect(addLog).toHaveBeenCalledWith( - '[ProfilesManager] root context resolution failed with params: {\n "solutionNavId": "newSolutionNavId"\n}', + '[ProfilesManager] rootLevel context resolution failed with params: {\n "solutionNavId": "newSolutionNavId"\n}', new Error('Failed to resolve') ); profiles = mocks.profilesManagerMock.getProfiles(); @@ -177,7 +187,7 @@ describe('ProfilesManager', () => { query: { esql: 'from logs-*' }, }); expect(addLog).toHaveBeenCalledWith( - '[ProfilesManager] data source context resolution failed with params: {\n "esqlQuery": "from logs-*"\n}', + '[ProfilesManager] dataSourceLevel context resolution failed with params: {\n "esqlQuery": "from logs-*"\n}', new Error('Failed to resolve') ); profiles = mocks.profilesManagerMock.getProfiles(); @@ -199,10 +209,14 @@ describe('ProfilesManager', () => { }); profiles = mocks.profilesManagerMock.getProfiles({ record: record2 }); expect(addLog).toHaveBeenCalledWith( - '[ProfilesManager] document context resolution failed with params: {\n "recordId": "logstash-2014.09.09::388::"\n}', + '[ProfilesManager] documentLevel context resolution failed with params: {\n "recordId": "logstash-2014.09.09::388::"\n}', new Error('Failed to resolve') ); expect(profiles).toEqual([{}, {}, {}]); + expect(mocks.ebtManagerMock.trackContextualProfileResolvedEvent).toHaveBeenCalledWith({ + profileId: 'document-profile', + contextLevel: 'documentLevel', + }); }); it('should cancel existing root profile resolution when another is triggered', async () => { diff --git a/src/plugins/discover/public/context_awareness/profiles_manager.ts b/src/plugins/discover/public/context_awareness/profiles_manager.ts index d5714565dacd2..fefbe7b5c08fe 100644 --- a/src/plugins/discover/public/context_awareness/profiles_manager.ts +++ b/src/plugins/discover/public/context_awareness/profiles_manager.ts @@ -51,6 +51,12 @@ export interface GetProfilesOptions { record?: DataTableRecord; } +export enum ContextualProfileLevel { + rootLevel = 'rootLevel', + dataSourceLevel = 'dataSourceLevel', + documentLevel = 'documentLevel', +} + export class ProfilesManager { private readonly rootContext$: BehaviorSubject<ContextWithProfileId<RootContext>>; private readonly dataSourceContext$: BehaviorSubject<ContextWithProfileId<DataSourceContext>>; @@ -104,7 +110,7 @@ export class ProfilesManager { try { context = await this.rootProfileService.resolve(params); } catch (e) { - logResolutionError(ContextType.Root, serializedParams, e); + logResolutionError(ContextualProfileLevel.rootLevel, serializedParams, e); } if (abortController.signal.aborted) { @@ -142,7 +148,7 @@ export class ProfilesManager { rootContext: this.rootContext$.getValue(), }); } catch (e) { - logResolutionError(ContextType.DataSource, serializedParams, e); + logResolutionError(ContextualProfileLevel.dataSourceLevel, serializedParams, e); } if (abortController.signal.aborted) { @@ -179,11 +185,20 @@ export class ProfilesManager { dataSourceContext: this.dataSourceContext$.getValue(), }); } catch (e) { - logResolutionError(ContextType.Document, { recordId: params.record.id }, e); + logResolutionError( + ContextualProfileLevel.documentLevel, + { recordId: params.record.id }, + e + ); context = this.documentProfileService.defaultContext; } } + this.ebtManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.documentLevel, + profileId: context.profileId, + }); + return context; }, }); @@ -223,6 +238,15 @@ export class ProfilesManager { private trackActiveProfiles(rootContextProfileId: string, dataSourceContextProfileId: string) { const dscProfiles = [rootContextProfileId, dataSourceContextProfileId]; + this.ebtManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: rootContextProfileId, + }); + this.ebtManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.dataSourceLevel, + profileId: dataSourceContextProfileId, + }); + this.ebtManager.updateProfilesContextWith(dscProfiles); } } @@ -256,19 +280,13 @@ const recordHasContext = ( return Boolean(record && 'context' in record); }; -enum ContextType { - Root = 'root', - DataSource = 'data source', - Document = 'document', -} - const logResolutionError = <TParams, TError>( - profileType: ContextType, + profileLevel: ContextualProfileLevel, params: TParams, error: TError ) => { addLog( - `[ProfilesManager] ${profileType} context resolution failed with params: ${JSON.stringify( + `[ProfilesManager] ${profileLevel} context resolution failed with params: ${JSON.stringify( params, null, 2 diff --git a/src/plugins/discover/public/embeddable/get_search_embeddable_factory.tsx b/src/plugins/discover/public/embeddable/get_search_embeddable_factory.tsx index c1b5cf9f7695f..1f97e2de66390 100644 --- a/src/plugins/discover/public/embeddable/get_search_embeddable_factory.tsx +++ b/src/plugins/discover/public/embeddable/get_search_embeddable_factory.tsx @@ -20,6 +20,7 @@ import { i18n } from '@kbn/i18n'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { FetchContext, + getUnchangingComparator, initializeTimeRange, initializeTitles, useBatchedPublishingSubjects, @@ -186,7 +187,7 @@ export const getSearchEmbeddableFactory = ({ defaultPanelTitle$.next(undefined); defaultPanelDescription$.next(undefined); }, - serializeState: async () => + serializeState: () => serializeState({ uuid, initialState, @@ -194,7 +195,6 @@ export const getSearchEmbeddableFactory = ({ serializeTitles, serializeTimeRange: timeRange.serialize, savedObjectId: savedObjectId$.getValue(), - discoverServices, }), getInspectorAdapters: () => searchEmbeddable.stateManager.inspectorAdapters.getValue(), }, @@ -202,6 +202,7 @@ export const getSearchEmbeddableFactory = ({ ...titleComparators, ...timeRange.comparators, ...searchEmbeddable.comparators, + rawSavedObjectAttributes: getUnchangingComparator(), savedObjectId: [savedObjectId$, (value) => savedObjectId$.next(value)], savedObjectTitle: [defaultPanelTitle$, (value) => defaultPanelTitle$.next(value)], savedObjectDescription: [ diff --git a/src/plugins/discover/public/embeddable/types.ts b/src/plugins/discover/public/embeddable/types.ts index 94d0b10cc3f64..0443801ec7245 100644 --- a/src/plugins/discover/public/embeddable/types.ts +++ b/src/plugins/discover/public/embeddable/types.ts @@ -68,9 +68,13 @@ export interface NonPersistedDisplayOptions { enableFilters?: boolean; } +export type EditableSavedSearchAttributes = Partial< + Pick<SavedSearchAttributes, (typeof EDITABLE_SAVED_SEARCH_KEYS)[number]> +>; + export type SearchEmbeddableSerializedState = SerializedTitles & SerializedTimeRange & - Partial<Pick<SavedSearchAttributes, (typeof EDITABLE_SAVED_SEARCH_KEYS)[number]>> & { + EditableSavedSearchAttributes & { // by value attributes?: SavedSearchAttributes & { references: SavedSearch['references'] }; // by reference @@ -81,6 +85,7 @@ export type SearchEmbeddableSerializedState = SerializedTitles & export type SearchEmbeddableRuntimeState = SearchEmbeddableSerializedAttributes & SerializedTitles & SerializedTimeRange & { + rawSavedObjectAttributes?: EditableSavedSearchAttributes; savedObjectTitle?: string; savedObjectId?: string; savedObjectDescription?: string; diff --git a/src/plugins/discover/public/embeddable/utils/serialization_utils.test.ts b/src/plugins/discover/public/embeddable/utils/serialization_utils.test.ts index c91aacb89aff6..2a7a23b3600a7 100644 --- a/src/plugins/discover/public/embeddable/utils/serialization_utils.test.ts +++ b/src/plugins/discover/public/embeddable/utils/serialization_utils.test.ts @@ -121,7 +121,6 @@ describe('Serialization utils', () => { savedSearch, serializeTitles: jest.fn(), serializeTimeRange: jest.fn(), - discoverServices: discoverServiceMock, }); expect(serializedState).toEqual({ @@ -148,19 +147,16 @@ describe('Serialization utils', () => { searchSource, }; - beforeAll(() => { - discoverServiceMock.savedSearch.get = jest.fn().mockResolvedValue(savedSearch); - }); - - test('equal state', async () => { - const serializedState = await serializeState({ + test('equal state', () => { + const serializedState = serializeState({ uuid, - initialState: {}, + initialState: { + rawSavedObjectAttributes: savedSearch, + }, savedSearch, serializeTitles: jest.fn(), serializeTimeRange: jest.fn(), savedObjectId: 'test-id', - discoverServices: discoverServiceMock, }); expect(serializedState).toEqual({ @@ -171,15 +167,16 @@ describe('Serialization utils', () => { }); }); - test('overwrite state', async () => { - const serializedState = await serializeState({ + test('overwrite state', () => { + const serializedState = serializeState({ uuid, - initialState: {}, + initialState: { + rawSavedObjectAttributes: savedSearch, + }, savedSearch: { ...savedSearch, sampleSize: 500, sort: [['order_date', 'asc']] }, serializeTitles: jest.fn(), serializeTimeRange: jest.fn(), savedObjectId: 'test-id', - discoverServices: discoverServiceMock, }); expect(serializedState).toEqual({ diff --git a/src/plugins/discover/public/embeddable/utils/serialization_utils.ts b/src/plugins/discover/public/embeddable/utils/serialization_utils.ts index f193d52054a3c..397d078dba3e3 100644 --- a/src/plugins/discover/public/embeddable/utils/serialization_utils.ts +++ b/src/plugins/discover/public/embeddable/utils/serialization_utils.ts @@ -43,6 +43,7 @@ export const deserializeState = async ({ const { get } = discoverServices.savedSearch; const so = await get(savedObjectId, true); + const rawSavedObjectAttributes = pick(so, EDITABLE_SAVED_SEARCH_KEYS); const savedObjectOverride = pick(serializedState.rawState, EDITABLE_SAVED_SEARCH_KEYS); return { // ignore the time range from the saved object - only global time range + panel time range matter @@ -53,6 +54,9 @@ export const deserializeState = async ({ // Overwrite SO state with dashboard state for title, description, columns, sort, etc. ...panelState, ...savedObjectOverride, + + // back up the original saved object attributes for comparison + rawSavedObjectAttributes, }; } else { // by value @@ -72,14 +76,13 @@ export const deserializeState = async ({ } }; -export const serializeState = async ({ +export const serializeState = ({ uuid, initialState, savedSearch, serializeTitles, serializeTimeRange, savedObjectId, - discoverServices, }: { uuid: string; initialState: SearchEmbeddableRuntimeState; @@ -87,19 +90,17 @@ export const serializeState = async ({ serializeTitles: () => SerializedTitles; serializeTimeRange: () => SerializedTimeRange; savedObjectId?: string; - discoverServices: DiscoverServices; -}): Promise<SerializedPanelState<SearchEmbeddableSerializedState>> => { +}): SerializedPanelState<SearchEmbeddableSerializedState> => { const searchSource = savedSearch.searchSource; const { searchSourceJSON, references: originalReferences } = searchSource.serialize(); const savedSearchAttributes = toSavedSearchAttributes(savedSearch, searchSourceJSON); if (savedObjectId) { - const { get } = discoverServices.savedSearch; - const so = await get(savedObjectId); + const editableAttributesBackup = initialState.rawSavedObjectAttributes ?? {}; // only save the current state that is **different** than the saved object state const overwriteState = EDITABLE_SAVED_SEARCH_KEYS.reduce((prev, key) => { - if (deepEqual(savedSearchAttributes[key], so[key])) { + if (deepEqual(savedSearchAttributes[key], editableAttributesBackup[key])) { return prev; } return { ...prev, [key]: savedSearchAttributes[key] }; diff --git a/src/plugins/discover/public/plugin.tsx b/src/plugins/discover/public/plugin.tsx index 959ea78d50ecb..2529b48246105 100644 --- a/src/plugins/discover/public/plugin.tsx +++ b/src/plugins/discover/public/plugin.tsx @@ -179,7 +179,7 @@ export class DiscoverPlugin window.dispatchEvent(new HashChangeEvent('hashchange')); }); - ebtManager.enableContext(); + ebtManager.onDiscoverAppMounted(); const services = buildServices({ core: coreStart, @@ -228,7 +228,7 @@ export class DiscoverPlugin }); return () => { - ebtManager.disableAndResetContext(); + ebtManager.onDiscoverAppUnmounted(); unlistenParentHistory(); unmount(); appUnMounted(); diff --git a/src/plugins/discover/public/services/discover_ebt_manager.test.ts b/src/plugins/discover/public/services/discover_ebt_manager.test.ts index 0ed20dacdb0ce..cfc5fa9fbc24c 100644 --- a/src/plugins/discover/public/services/discover_ebt_manager.test.ts +++ b/src/plugins/discover/public/services/discover_ebt_manager.test.ts @@ -11,6 +11,7 @@ import { BehaviorSubject } from 'rxjs'; import { coreMock } from '@kbn/core/public/mocks'; import { DiscoverEBTManager } from './discover_ebt_manager'; import { FieldsMetadataPublicStart } from '@kbn/fields-metadata-plugin/public'; +import { ContextualProfileLevel } from '../context_awareness/profiles_manager'; describe('DiscoverEBTManager', () => { let discoverEBTContextManager: DiscoverEBTManager; @@ -31,6 +32,7 @@ describe('DiscoverEBTManager', () => { beforeEach(() => { discoverEBTContextManager = new DiscoverEBTManager(); + (coreSetupMock.analytics.reportEvent as jest.Mock).mockClear(); }); describe('register', () => { @@ -95,7 +97,7 @@ describe('DiscoverEBTManager', () => { shouldInitializeCustomContext: true, shouldInitializeCustomEvents: false, }); - discoverEBTContextManager.enableContext(); + discoverEBTContextManager.onDiscoverAppMounted(); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toBe(dscProfiles); @@ -112,7 +114,7 @@ describe('DiscoverEBTManager', () => { shouldInitializeCustomContext: true, shouldInitializeCustomEvents: false, }); - discoverEBTContextManager.enableContext(); + discoverEBTContextManager.onDiscoverAppMounted(); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toBe(dscProfiles); @@ -140,14 +142,14 @@ describe('DiscoverEBTManager', () => { shouldInitializeCustomContext: true, shouldInitializeCustomEvents: false, }); - discoverEBTContextManager.enableContext(); + discoverEBTContextManager.onDiscoverAppMounted(); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toBe(dscProfiles); - discoverEBTContextManager.disableAndResetContext(); + discoverEBTContextManager.onDiscoverAppUnmounted(); expect(discoverEBTContextManager.getProfilesContext()).toEqual([]); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toEqual([]); - discoverEBTContextManager.enableContext(); + discoverEBTContextManager.onDiscoverAppMounted(); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toBe(dscProfiles); }); @@ -239,4 +241,117 @@ describe('DiscoverEBTManager', () => { }); }); }); + + describe('trackContextualProfileResolvedEvent', () => { + it('should track the event when a next contextual profile is resolved', async () => { + discoverEBTContextManager.initialize({ + core: coreSetupMock, + shouldInitializeCustomContext: false, + shouldInitializeCustomEvents: true, + }); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenNthCalledWith( + 1, + 'discover_profile_resolved', + { + contextLevel: 'rootLevel', + profileId: 'test', + } + ); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.dataSourceLevel, + profileId: 'data-source-test', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenNthCalledWith( + 2, + 'discover_profile_resolved', + { + contextLevel: 'dataSourceLevel', + profileId: 'data-source-test', + } + ); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.documentLevel, + profileId: 'document-test', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenNthCalledWith( + 3, + 'discover_profile_resolved', + { + contextLevel: 'documentLevel', + profileId: 'document-test', + } + ); + }); + + it('should not trigger duplicate requests', async () => { + discoverEBTContextManager.initialize({ + core: coreSetupMock, + shouldInitializeCustomContext: false, + shouldInitializeCustomEvents: true, + }); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(1); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(1); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test2', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(2); + }); + + it('should trigger similar requests after remount', async () => { + discoverEBTContextManager.initialize({ + core: coreSetupMock, + shouldInitializeCustomContext: false, + shouldInitializeCustomEvents: true, + }); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(1); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(1); + + discoverEBTContextManager.onDiscoverAppUnmounted(); + discoverEBTContextManager.onDiscoverAppMounted(); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(2); + }); + }); }); diff --git a/src/plugins/discover/public/services/discover_ebt_manager.ts b/src/plugins/discover/public/services/discover_ebt_manager.ts index 420eb6c244444..afa93f4d55743 100644 --- a/src/plugins/discover/public/services/discover_ebt_manager.ts +++ b/src/plugins/discover/public/services/discover_ebt_manager.ts @@ -11,7 +11,11 @@ import { BehaviorSubject } from 'rxjs'; import { isEqual } from 'lodash'; import type { CoreSetup } from '@kbn/core-lifecycle-browser'; import type { FieldsMetadataPublicStart } from '@kbn/fields-metadata-plugin/public'; +import { ContextualProfileLevel } from '../context_awareness/profiles_manager'; +/** + * Field usage events i.e. when a field is selected in the data table, removed from the data table, or a filter is added + */ const FIELD_USAGE_EVENT_TYPE = 'discover_field_usage'; const FIELD_USAGE_EVENT_NAME = 'eventName'; const FIELD_USAGE_FIELD_NAME = 'fieldName'; @@ -30,6 +34,19 @@ interface FieldUsageEventData { [FIELD_USAGE_FILTER_OPERATION]?: FilterOperation; } +/** + * Contextual profile resolved event i.e. when a different contextual profile is resolved at root, data source, or document level + * Duplicated events for the same profile level will not be sent. + */ +const CONTEXTUAL_PROFILE_RESOLVED_EVENT_TYPE = 'discover_profile_resolved'; +const CONTEXTUAL_PROFILE_LEVEL = 'contextLevel'; +const CONTEXTUAL_PROFILE_ID = 'profileId'; + +interface ContextualProfileResolvedEventData { + [CONTEXTUAL_PROFILE_LEVEL]: ContextualProfileLevel; + [CONTEXTUAL_PROFILE_ID]: string; +} + export interface DiscoverEBTContextProps { discoverProfiles: string[]; // Discover Context Awareness Profiles } @@ -39,8 +56,19 @@ export class DiscoverEBTManager { private isCustomContextEnabled: boolean = false; private customContext$: DiscoverEBTContext | undefined; private reportEvent: CoreSetup['analytics']['reportEvent'] | undefined; + private lastResolvedContextProfiles: { + [ContextualProfileLevel.rootLevel]: string | undefined; + [ContextualProfileLevel.dataSourceLevel]: string | undefined; + [ContextualProfileLevel.documentLevel]: string | undefined; + }; - constructor() {} + constructor() { + this.lastResolvedContextProfiles = { + [ContextualProfileLevel.rootLevel]: undefined, + [ContextualProfileLevel.dataSourceLevel]: undefined, + [ContextualProfileLevel.documentLevel]: undefined, + }; + } // https://docs.elastic.dev/telemetry/collection/event-based-telemetry public initialize({ @@ -104,17 +132,40 @@ export class DiscoverEBTManager { }, }, }); + core.analytics.registerEventType({ + eventType: CONTEXTUAL_PROFILE_RESOLVED_EVENT_TYPE, + schema: { + [CONTEXTUAL_PROFILE_LEVEL]: { + type: 'keyword', + _meta: { + description: + 'The context level at which it was resolved i.e. rootLevel, dataSourceLevel, documentLevel', + }, + }, + [CONTEXTUAL_PROFILE_ID]: { + type: 'keyword', + _meta: { + description: 'The resolved name of the active profile', + }, + }, + }, + }); this.reportEvent = core.analytics.reportEvent; } } - public enableContext() { + public onDiscoverAppMounted() { this.isCustomContextEnabled = true; } - public disableAndResetContext() { + public onDiscoverAppUnmounted() { this.updateProfilesContextWith([]); this.isCustomContextEnabled = false; + this.lastResolvedContextProfiles = { + [ContextualProfileLevel.rootLevel]: undefined, + [ContextualProfileLevel.dataSourceLevel]: undefined, + [ContextualProfileLevel.documentLevel]: undefined, + }; } public updateProfilesContextWith(discoverProfiles: DiscoverEBTContextProps['discoverProfiles']) { @@ -216,4 +267,30 @@ export class DiscoverEBTManager { filterOperation, }); } + + public trackContextualProfileResolvedEvent({ + contextLevel, + profileId, + }: { + contextLevel: ContextualProfileLevel; + profileId: string; + }) { + if (!this.reportEvent) { + return; + } + + if (this.lastResolvedContextProfiles[contextLevel] === profileId) { + // avoid sending duplicate events to EBT + return; + } + + this.lastResolvedContextProfiles[contextLevel] = profileId; + + const eventData: ContextualProfileResolvedEventData = { + [CONTEXTUAL_PROFILE_LEVEL]: contextLevel, + [CONTEXTUAL_PROFILE_ID]: profileId, + }; + + this.reportEvent(CONTEXTUAL_PROFILE_RESOLVED_EVENT_TYPE, eventData); + } } diff --git a/src/plugins/discover/public/utils/initialize_kbn_url_tracking.ts b/src/plugins/discover/public/utils/initialize_kbn_url_tracking.ts index 480ada838581d..5119d51a69ce1 100644 --- a/src/plugins/discover/public/utils/initialize_kbn_url_tracking.ts +++ b/src/plugins/discover/public/utils/initialize_kbn_url_tracking.ts @@ -35,7 +35,7 @@ export function initializeKbnUrlTracking({ }) { /** * Store the setting of enabling / disabling url - * it's should be disabled for ad-hoc data views to omit error messages + * it's should be disabled for ad-hoc data views (but enabled for ES|QL) to omit error messages * - When you've added an ad hoc data view in Discover * - Continued your work in different parts of Kibana * - You've closed the Kibana tab diff --git a/src/plugins/embeddable/kibana.jsonc b/src/plugins/embeddable/kibana.jsonc index ea198de6386a3..8a012aefbc30b 100644 --- a/src/plugins/embeddable/kibana.jsonc +++ b/src/plugins/embeddable/kibana.jsonc @@ -18,7 +18,7 @@ "contentManagement" ], "optionalPlugins": ["savedObjectsTaggingOss", "usageCollection"], - "requiredBundles": ["savedObjects", "kibanaUtils", "presentationPanel"], + "requiredBundles": ["kibanaUtils", "presentationPanel"], "extraPublicDirs": ["common"] } } diff --git a/src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx b/src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx deleted file mode 100644 index 8747c78eb3bae..0000000000000 --- a/src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { css } from '@emotion/react'; -import { PresentationPanel } from '@kbn/presentation-panel-plugin/public'; -import { PanelCompatibleComponent } from '@kbn/presentation-panel-plugin/public/panel_component/types'; -import { isPromise } from '@kbn/std'; -import React, { ReactNode, useEffect, useImperativeHandle, useMemo, useState, useRef } from 'react'; -import { untilPluginStartServicesReady } from '../kibana_services'; -import { EmbeddablePanelProps } from './types'; - -const getComponentFromEmbeddable = async ( - embeddable: EmbeddablePanelProps['embeddable'], - isMounted: () => boolean -): Promise<PanelCompatibleComponent | null> => { - const startServicesPromise = untilPluginStartServicesReady(); - const embeddablePromise = - typeof embeddable === 'function' ? embeddable() : Promise.resolve(embeddable); - const [, unwrappedEmbeddable] = await Promise.all([startServicesPromise, embeddablePromise]); - if (!isMounted()) { - return null; - } - if (unwrappedEmbeddable.parent) { - await unwrappedEmbeddable.parent.untilEmbeddableLoaded(unwrappedEmbeddable.id); - } - - return React.forwardRef((props, apiRef) => { - const [node, setNode] = useState<ReactNode | undefined>(); - const embeddableRoot: React.RefObject<HTMLDivElement> = useMemo(() => React.createRef(), []); - - // Render legacy embeddable into ref, and destroy on unmount. - useEffect(() => { - if (!embeddableRoot.current) return; - const nextNode = unwrappedEmbeddable.render(embeddableRoot.current) ?? undefined; - if (isPromise(nextNode)) { - nextNode.then((resolved) => setNode(resolved)); - } else { - setNode(nextNode); - } - return () => { - unwrappedEmbeddable.destroy(); - }; - }, [embeddableRoot]); - - useImperativeHandle(apiRef, () => unwrappedEmbeddable); - - return ( - <div css={css(`width: 100%; height: 100%; display:flex`)} ref={embeddableRoot}> - {node} - </div> - ); - }); -}; - -/** - * @deprecated - * Loads and renders a legacy embeddable. - * - * Ancestry chain must use 'key' attribute to reset DOM and state when embeddable changes - * For example <Parent key={embeddableId}><EmbeddablePanel/></Parent> - */ -export const EmbeddablePanel = (props: EmbeddablePanelProps) => { - // can not use useMountedState - // 1. useMountedState defaults mountedRef to false and sets mountedRef to true in useEffect - // 2. embeddable can be an object or a function that returns a promise - // 3. when embeddable is an object, Promise.resolve(embeddable) returns before - // useMountedState useEffect is called and thus isMounted() returns false when component has not been unmounted - const mountedRef = useRef<boolean>(true); - useEffect(() => { - return () => { - mountedRef.current = false; - }; - }, []); - const isMounted = () => { - return mountedRef.current; - }; - const { embeddable, ...passThroughProps } = props; - const componentPromise = useMemo( - () => getComponentFromEmbeddable(embeddable, isMounted), - // Ancestry chain is expected to use 'key' attribute to reset DOM and state - // when embeddable needs to be re-loaded - // empty array is consistent with PresentationPanel useAsync dependency check - // eslint-disable-next-line react-hooks/exhaustive-deps - [] - ); - return <PresentationPanel {...passThroughProps} Component={componentPromise} />; -}; diff --git a/src/plugins/embeddable/public/embeddable_panel/index.ts b/src/plugins/embeddable/public/embeddable_panel/index.ts deleted file mode 100644 index 72f6a47b6af38..0000000000000 --- a/src/plugins/embeddable/public/embeddable_panel/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { EmbeddablePanel } from './embeddable_panel'; diff --git a/src/plugins/embeddable/public/embeddable_panel/types.ts b/src/plugins/embeddable/public/embeddable_panel/types.ts deleted file mode 100644 index 385dcb96e33c8..0000000000000 --- a/src/plugins/embeddable/public/embeddable_panel/types.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { PresentationPanelProps } from '@kbn/presentation-panel-plugin/public'; -import { MaybePromise } from '@kbn/utility-types'; -import { ReactNode } from 'react'; -import { EmbeddableInput, EmbeddableOutput, IEmbeddable } from '../lib'; - -export type LegacyCompatibleEmbeddable = IEmbeddable< - EmbeddableInput, - EmbeddableOutput, - MaybePromise<ReactNode> ->; - -export type EmbeddablePanelProps = Omit<PresentationPanelProps, 'Component'> & { - embeddable: LegacyCompatibleEmbeddable | (() => Promise<LegacyCompatibleEmbeddable>); -}; - -export type UnwrappedEmbeddablePanelProps = Omit<EmbeddablePanelProps, 'embeddable'> & { - embeddable: LegacyCompatibleEmbeddable; -}; diff --git a/src/plugins/embeddable/public/index.ts b/src/plugins/embeddable/public/index.ts index 19d3bd76c1a77..c3bb2a796b286 100644 --- a/src/plugins/embeddable/public/index.ts +++ b/src/plugins/embeddable/public/index.ts @@ -12,11 +12,9 @@ import { EmbeddablePublicPlugin } from './plugin'; export { useAddFromLibraryTypes } from './add_from_library/registry'; export { openAddFromLibraryFlyout } from './add_from_library/open_add_from_library_flyout'; -export { EmbeddablePanel } from './embeddable_panel'; export { cellValueTrigger, CELL_VALUE_TRIGGER, - Container, contextMenuTrigger, CONTEXT_MENU_TRIGGER, defaultEmbeddableFactoryProvider, @@ -58,9 +56,6 @@ export type { Adapters, CellValueContext, ChartActionContext, - ContainerInput, - ContainerOutput, - EmbeddableContainerSettings, EmbeddableContext, EmbeddableEditorState, EmbeddableFactory, @@ -70,11 +65,9 @@ export type { EmbeddableOutput, EmbeddablePackageState, FilterableEmbeddable, - IContainer, IEmbeddable, MultiValueClickContext, OutputSpec, - PanelState, PropertySpec, RangeSelectContext, ReferenceOrValueEmbeddable, @@ -82,7 +75,6 @@ export type { SelfStyledEmbeddable, ValueClickContext, } from './lib'; -export { AttributeService, ATTRIBUTE_SERVICE_KEY } from './lib/attribute_service'; export type { EmbeddableSetup, EmbeddableSetupDependencies, diff --git a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.mock.tsx b/src/plugins/embeddable/public/lib/attribute_service/attribute_service.mock.tsx deleted file mode 100644 index 0500ca563593f..0000000000000 --- a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.mock.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { EmbeddableInput, SavedObjectEmbeddableInput } from '..'; -import { coreMock } from '@kbn/core/public/mocks'; -import { AttributeServiceOptions } from './attribute_service'; -import { CoreStart } from '@kbn/core/public'; -import { AttributeService, ATTRIBUTE_SERVICE_KEY } from '.'; - -export const mockAttributeService = < - A extends { title: string }, - V extends EmbeddableInput & { [ATTRIBUTE_SERVICE_KEY]: A } = EmbeddableInput & { - [ATTRIBUTE_SERVICE_KEY]: A; - }, - R extends SavedObjectEmbeddableInput = SavedObjectEmbeddableInput, - M extends unknown = unknown ->( - type: string, - options: AttributeServiceOptions<A, M>, - customCore?: jest.Mocked<CoreStart> -): AttributeService<A, V, R, M> => { - const core = customCore ? customCore : coreMock.createStart(); - return new AttributeService<A, V, R, M>( - type, - core.notifications.toasts, - options, - jest.fn().mockReturnValue(() => ({ getDisplayName: () => type })) - ); -}; diff --git a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.test.ts b/src/plugins/embeddable/public/lib/attribute_service/attribute_service.test.ts deleted file mode 100644 index 3b86bdfb7d664..0000000000000 --- a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.test.ts +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ATTRIBUTE_SERVICE_KEY, AttributeServiceUnwrapResult } from './attribute_service'; -import { mockAttributeService } from './attribute_service.mock'; -import { coreMock } from '@kbn/core/public/mocks'; -import { OnSaveProps } from '@kbn/saved-objects-plugin/public/save_modal'; - -interface TestAttributes { - title: string; - testAttr1?: string; - testAttr2?: { array: unknown[]; testAttr3: string }; -} - -interface TestByValueInput { - id: string; - [ATTRIBUTE_SERVICE_KEY]: TestAttributes; -} - -describe('attributeService', () => { - const defaultTestType = 'defaultTestType'; - let attributes: TestAttributes; - let byValueInput: TestByValueInput; - let byReferenceInput: { id: string; savedObjectId: string }; - const defaultSaveMethod = ( - testAttributes: TestAttributes, - savedObjectId?: string - ): Promise<{ id: string }> => { - return new Promise(() => { - return { id: '123' }; - }); - }; - - const defaultUnwrapMethod = ( - savedObjectId: string - ): Promise<AttributeServiceUnwrapResult<TestAttributes>> => { - return new Promise(() => { - return { ...attributes }; - }); - }; - const defaultCheckForDuplicateTitle = (props: OnSaveProps): Promise<true> => { - return new Promise(() => { - return true; - }); - }; - const options = { - saveMethod: defaultSaveMethod, - unwrapMethod: defaultUnwrapMethod, - checkForDuplicateTitle: defaultCheckForDuplicateTitle, - }; - - beforeEach(() => { - attributes = { - title: 'ultra title', - testAttr1: 'neat first attribute', - testAttr2: { array: [1, 2, 3], testAttr3: 'super attribute' }, - }; - byValueInput = { - id: '456', - attributes, - }; - byReferenceInput = { - id: '456', - savedObjectId: '123', - }; - }); - - describe('determining input type', () => { - const defaultAttributeService = mockAttributeService<TestAttributes>(defaultTestType, options); - const customAttributeService = mockAttributeService<TestAttributes, TestByValueInput>( - defaultTestType, - options - ); - - it('can determine input type given default types', () => { - expect( - defaultAttributeService.inputIsRefType({ id: '456', savedObjectId: '123' }) - ).toBeTruthy(); - expect( - defaultAttributeService.inputIsRefType({ - id: '456', - attributes: { title: 'wow I am by value' }, - }) - ).toBeFalsy(); - }); - it('can determine input type given custom types', () => { - expect( - customAttributeService.inputIsRefType({ id: '456', savedObjectId: '123' }) - ).toBeTruthy(); - expect( - customAttributeService.inputIsRefType({ - id: '456', - [ATTRIBUTE_SERVICE_KEY]: { title: 'wow I am by value' }, - }) - ).toBeFalsy(); - }); - }); - - describe('unwrapping attributes', () => { - it('does not throw error when given reference type input with no unwrap method', async () => { - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, { - saveMethod: defaultSaveMethod, - checkForDuplicateTitle: jest.fn(), - }); - expect(await attributeService.unwrapAttributes(byReferenceInput)).toEqual({ - attributes: byReferenceInput, - }); - }); - - it('returns attributes when when given value type input', async () => { - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, options); - expect(await attributeService.unwrapAttributes(byValueInput)).toEqual({ attributes }); - }); - - it('runs attributes through a custom unwrap method', async () => { - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, { - saveMethod: defaultSaveMethod, - unwrapMethod: (savedObjectId) => { - return new Promise((resolve) => { - return resolve({ - attributes: { - ...attributes, - testAttr2: { array: [1, 2, 3, 4, 5], testAttr3: 'kibanana' }, - }, - }); - }); - }, - checkForDuplicateTitle: jest.fn(), - }); - expect(await attributeService.unwrapAttributes(byReferenceInput)).toEqual({ - attributes: { - ...attributes, - testAttr2: { array: [1, 2, 3, 4, 5], testAttr3: 'kibanana' }, - }, - }); - }); - }); - - describe('wrapping attributes', () => { - it('returns given attributes when use ref type is false', async () => { - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, options); - expect(await attributeService.wrapAttributes(attributes, false)).toEqual({ attributes }); - }); - - it('calls saveMethod with appropriate parameters', async () => { - const core = coreMock.createStart(); - const saveMethod = jest.fn(); - saveMethod.mockReturnValueOnce({}); - const attributeService = mockAttributeService<TestAttributes>( - defaultTestType, - { - saveMethod, - unwrapMethod: defaultUnwrapMethod, - checkForDuplicateTitle: defaultCheckForDuplicateTitle, - }, - core - ); - expect(await attributeService.wrapAttributes(attributes, true, byReferenceInput)).toEqual( - byReferenceInput - ); - expect(saveMethod).toHaveBeenCalledWith(attributes, '123'); - }); - - it('uses custom save method when given an id', async () => { - const saveMethod = jest.fn().mockReturnValue({ id: '123' }); - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, { - saveMethod, - unwrapMethod: defaultUnwrapMethod, - checkForDuplicateTitle: defaultCheckForDuplicateTitle, - }); - expect(await attributeService.wrapAttributes(attributes, true, byReferenceInput)).toEqual( - byReferenceInput - ); - expect(saveMethod).toHaveBeenCalledWith(attributes, byReferenceInput.savedObjectId); - }); - - it('uses custom save method given no id', async () => { - const saveMethod = jest.fn().mockReturnValue({ id: '678' }); - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, { - saveMethod, - unwrapMethod: defaultUnwrapMethod, - checkForDuplicateTitle: defaultCheckForDuplicateTitle, - }); - expect(await attributeService.wrapAttributes(attributes, true)).toEqual({ - savedObjectId: '678', - }); - expect(saveMethod).toHaveBeenCalledWith(attributes, undefined); - }); - }); -}); diff --git a/src/plugins/embeddable/public/lib/attribute_service/index.ts b/src/plugins/embeddable/public/lib/attribute_service/index.ts deleted file mode 100644 index 7e41bfc6ceec6..0000000000000 --- a/src/plugins/embeddable/public/lib/attribute_service/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { AttributeService, ATTRIBUTE_SERVICE_KEY } from './attribute_service'; diff --git a/src/plugins/embeddable/public/lib/containers/container.ts b/src/plugins/embeddable/public/lib/containers/container.ts deleted file mode 100644 index 8e7487323cf44..0000000000000 --- a/src/plugins/embeddable/public/lib/containers/container.ts +++ /dev/null @@ -1,627 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import deepEqual from 'fast-deep-equal'; -import { isEqual, xor } from 'lodash'; -import { BehaviorSubject, EMPTY, merge, Subscription } from 'rxjs'; -import { - catchError, - combineLatestWith, - distinctUntilChanged, - map, - mergeMap, - pairwise, - switchMap, - take, -} from 'rxjs'; -import { v4 as uuidv4 } from 'uuid'; - -import { PanelPackage } from '@kbn/presentation-containers'; -import { PresentationContainer } from '@kbn/presentation-containers'; - -import { isSavedObjectEmbeddableInput } from '../../../common/lib/saved_object_embeddable'; -import { EmbeddableStart } from '../../plugin'; -import { - Embeddable, - EmbeddableFactory, - EmbeddableInput, - EmbeddableOutput, - ErrorEmbeddable, - IEmbeddable, - isErrorEmbeddable, -} from '../embeddables'; -import { EmbeddableFactoryNotFoundError, PanelNotFoundError } from '../errors'; -import { - ContainerInput, - ContainerOutput, - EmbeddableContainerSettings, - IContainer, - PanelState, -} from './i_container'; -import { reactEmbeddableRegistryHasKey } from '../../react_embeddable_system'; - -const getKeys = <T extends {}>(o: T): Array<keyof T> => Object.keys(o) as Array<keyof T>; - -export abstract class Container< - TChildInput extends Partial<EmbeddableInput> = {}, - TContainerInput extends ContainerInput<TChildInput> = ContainerInput<TChildInput>, - TContainerOutput extends ContainerOutput = ContainerOutput - > - extends Embeddable<TContainerInput, TContainerOutput> - implements IContainer<TChildInput, TContainerInput, TContainerOutput>, PresentationContainer -{ - public readonly isContainer: boolean = true; - - public children$: BehaviorSubject<{ [key: string]: unknown }> = new BehaviorSubject<{ - [key: string]: unknown; - }>({}); - - private subscription: Subscription | undefined; - private readonly anyChildOutputChange$; - - constructor( - input: TContainerInput, - output: TContainerOutput, - protected readonly getFactory: EmbeddableStart['getEmbeddableFactory'], - parent?: IContainer, - settings?: EmbeddableContainerSettings - ) { - super(input, output, parent); - this.getFactory = getFactory; // Currently required for using in storybook due to https://github.com/storybookjs/storybook/issues/13834 - - // if there is no special initialization logic, we can immediately start updating children on input updates. - const awaitingInitialize = Boolean( - settings?.initializeSequentially || settings?.childIdInitializeOrder - ); - - const init$ = this.getInput$().pipe( - take(1), - mergeMap(async (currentInput) => { - if (settings?.untilContainerInitialized) { - await settings.untilContainerInitialized(); - } - const initPromise = this.initializeChildEmbeddables(currentInput, settings); - if (awaitingInitialize) await initPromise; - }) - ); - - // on all subsequent input changes, diff and update children on changes. - const update$ = this.getInput$() - // At each update event, get both the previous and current state. - .pipe(pairwise()); - - this.subscription = init$ - .pipe(combineLatestWith(update$)) - .subscribe(([_, [{ panels: prevPanels }, { panels: currentPanels }]]) => { - this.maybeUpdateChildren(currentPanels, prevPanels); - }); - - this.anyChildOutputChange$ = this.getOutput$().pipe( - map(() => this.getChildIds()), - distinctUntilChanged(deepEqual), - - // children may change, so make sure we subscribe/unsubscribe with switchMap - switchMap((newChildIds: string[]) => - merge( - ...newChildIds.map((childId) => - this.getChild(childId) - .getOutput$() - .pipe( - // Embeddables often throw errors into their output streams. - catchError(() => EMPTY), - map(() => childId) - ) - ) - ) - ) - ); - } - - public getPanelCount() { - return Object.keys(this.getInput().panels).length; - } - - public removePanel(id: string) { - this.removeEmbeddable(id); - } - - public async addNewPanel<ApiType extends unknown = unknown>( - panelPackage: PanelPackage - ): Promise<ApiType | undefined> { - const newEmbeddable = await this.addNewEmbeddable( - panelPackage.panelType, - panelPackage.initialState as Partial<EmbeddableInput> - ); - return newEmbeddable as ApiType; - } - - public async replacePanel(idToRemove: string, { panelType, initialState }: PanelPackage) { - return await this.replaceEmbeddable( - idToRemove, - initialState as Partial<EmbeddableInput>, - panelType, - true - ); - } - - public setChildLoaded(embeddable: IEmbeddable) { - // make sure the panel wasn't removed in the mean time, since the embeddable creation is async - if (!this.input.panels[embeddable.id]) { - embeddable.destroy(); - return; - } - - const currentChildren = this.children$.value; - this.children$.next({ - ...currentChildren, - [embeddable.id]: embeddable, - }); - this.updateOutput({ - embeddableLoaded: { - ...this.output.embeddableLoaded, - [embeddable.id]: true, - }, - } as Partial<TContainerOutput>); - } - - public updateInputForChild<EEI extends EmbeddableInput = EmbeddableInput>( - id: string, - changes: Partial<EEI> - ) { - if (!this.input.panels[id]) { - throw new PanelNotFoundError(); - } - const panels = { - panels: { - ...this.input.panels, - [id]: { - ...this.input.panels[id], - explicitInput: { - ...this.input.panels[id].explicitInput, - ...changes, - }, - }, - }, - }; - this.updateInput(panels as Partial<TContainerInput>); - } - - public reload() { - for (const child of Object.values(this.children$.value)) { - (child as IEmbeddable)?.reload?.(); - } - } - - public async addNewEmbeddable< - EEI extends EmbeddableInput = EmbeddableInput, - EEO extends EmbeddableOutput = EmbeddableOutput, - E extends IEmbeddable<EEI, EEO> = IEmbeddable<EEI, EEO> - >(type: string, explicitInput: Partial<EEI>, attributes?: unknown): Promise<E | ErrorEmbeddable> { - const factory = this.getFactory(type) as EmbeddableFactory<EEI, EEO, E> | undefined; - - if (!factory) { - throw new EmbeddableFactoryNotFoundError(type); - } - - const { newPanel, otherPanels } = this.createNewPanelState<EEI, E>( - factory, - explicitInput, - attributes - ); - - return this.createAndSaveEmbeddable(type, newPanel, otherPanels); - } - - public async replaceEmbeddable< - EEI extends EmbeddableInput = EmbeddableInput, - EEO extends EmbeddableOutput = EmbeddableOutput, - E extends IEmbeddable<EEI, EEO> = IEmbeddable<EEI, EEO> - >( - id: string, - newExplicitInput: Partial<EEI>, - newType?: string, - generateNewId?: boolean - ): Promise<string> { - if (!this.input.panels[id]) { - throw new PanelNotFoundError(); - } - - if (newType && newType !== this.input.panels[id].type) { - const factory = this.getFactory(newType) as EmbeddableFactory<EEI, EEO, E> | undefined; - if (!factory) { - throw new EmbeddableFactoryNotFoundError(newType); - } - } - - const panels = { ...this.input.panels }; - const oldPanel = panels[id]; - - if (generateNewId) { - delete panels[id]; - id = uuidv4(); - } - this.updateInput({ - panels: { - ...panels, - [id]: { - ...oldPanel, - explicitInput: { ...newExplicitInput, id }, - type: newType ?? oldPanel.type, - }, - }, - } as Partial<TContainerInput>); - - await this.untilEmbeddableLoaded<E>(id); - return id; - } - - public removeEmbeddable(embeddableId: string) { - // Just a shortcut for removing the panel from input state, all internal state will get cleaned up naturally - // by the listener. - const panels = this.onRemoveEmbeddable(embeddableId); - this.updateInput({ panels } as Partial<TContainerInput>); - } - - /** - * Control the panels that are pushed to the input stream when an embeddable is - * removed. This can be used if removing one embeddable has knock-on effects, like - * re-ordering embeddables that come after it. - */ - protected onRemoveEmbeddable(embeddableId: string): ContainerInput['panels'] { - const panels = { ...this.input.panels }; - delete panels[embeddableId]; - return panels; - } - - public getChildIds(): string[] { - return Object.keys(this.children$.value); - } - - public getChild<E extends IEmbeddable>(id: string): E { - return this.children$.value[id] as E; - } - - public getInputForChild<TEmbeddableInput extends EmbeddableInput = EmbeddableInput>( - embeddableId: string - ): TEmbeddableInput { - const containerInput: TChildInput = this.getInheritedInput(embeddableId); - const panelState = this.getPanelState(embeddableId); - - const explicitInput = panelState.explicitInput; - const explicitFiltered: { [key: string]: unknown } = {}; - - const keys = getKeys(panelState.explicitInput); - - // If explicit input for a particular value is undefined, and container has that input defined, - // we will use the inherited container input. This way children can set a value to undefined in order - // to default back to inherited input. However, if the particular value is not part of the container, then - // the caller may be trying to explicitly tell the child to clear out a given value, so in that case, we want - // to pass it along. - keys.forEach((key) => { - if (explicitInput[key] === undefined && containerInput[key] !== undefined) { - return; - } - explicitFiltered[key] = explicitInput[key]; - }); - - return { - ...containerInput, - ...explicitFiltered, - // Typescript has difficulties with inferring this type but it is accurate with all - // tests I tried. Could probably be revisted with future releases of TS to see if - // it can accurately infer the type. - } as unknown as TEmbeddableInput; - } - - public getAnyChildOutputChange$() { - return this.anyChildOutputChange$; - } - - public destroy() { - super.destroy(); - for (const child of Object.values(this.children$.value)) { - (child as IEmbeddable)?.destroy?.(); - } - this.subscription?.unsubscribe(); - } - - public async untilEmbeddableLoaded<TEmbeddable extends IEmbeddable>( - id: string - ): Promise<TEmbeddable | ErrorEmbeddable> { - if (!this.input.panels[id]) { - throw new PanelNotFoundError(); - } - - if (this.output.embeddableLoaded[id]) { - return this.children$.value[id] as TEmbeddable; - } - - return new Promise<TEmbeddable>((resolve, reject) => { - const subscription = merge(this.getOutput$(), this.getInput$()).subscribe(() => { - if (this.output.embeddableLoaded[id]) { - subscription.unsubscribe(); - resolve(this.children$.value[id] as TEmbeddable); - } - - // If we hit this, the panel was removed before the embeddable finished loading. - if (this.input.panels[id] === undefined) { - subscription.unsubscribe(); - // @ts-expect-error undefined in not assignable to TEmbeddable | ErrorEmbeddable - resolve(undefined); - } - }); - }); - } - - public async untilReactEmbeddableLoaded<ApiType>(id: string): Promise<ApiType | undefined> { - if (!this.input.panels[id]) { - throw new PanelNotFoundError(); - } - - if (this.children$.value[id]) { - return this.children$.value[id] as ApiType; - } - - return new Promise((resolve, reject) => { - const subscription = merge(this.children$, this.getInput$()).subscribe(() => { - if (this.children$.value[id]) { - subscription.unsubscribe(); - resolve(this.children$.value[id] as ApiType); - } - - // If we hit this, the panel was removed before the embeddable finished loading. - if (this.input.panels[id] === undefined) { - subscription.unsubscribe(); - resolve(undefined); - } - }); - }); - } - - public async getExplicitInputIsEqual(lastInput: TContainerInput) { - const { panels: lastPanels, ...restOfLastInput } = lastInput; - const { panels: currentPanels, ...restOfCurrentInput } = this.getExplicitInput(); - const otherInputIsEqual = isEqual(restOfLastInput, restOfCurrentInput); - if (!otherInputIsEqual) return false; - - const embeddableIdsA = Object.keys(lastPanels); - const embeddableIdsB = Object.keys(currentPanels); - if ( - embeddableIdsA.length !== embeddableIdsB.length || - xor(embeddableIdsA, embeddableIdsB).length > 0 - ) { - return false; - } - // embeddable ids are equal so let's compare individual panels. - for (const id of embeddableIdsA) { - const currentEmbeddable = await this.untilEmbeddableLoaded(id); - const lastPanelInput = lastPanels[id].explicitInput; - if (isErrorEmbeddable(currentEmbeddable)) continue; - if (!(await currentEmbeddable.getExplicitInputIsEqual(lastPanelInput))) { - return false; - } - } - return true; - } - - protected createNewPanelState< - TEmbeddableInput extends EmbeddableInput, - TEmbeddable extends IEmbeddable<TEmbeddableInput, any> - >( - factory: EmbeddableFactory<TEmbeddableInput, any, TEmbeddable>, - partial: Partial<TEmbeddableInput> = {}, - attributes?: unknown - ): { newPanel: PanelState<TEmbeddableInput>; otherPanels: TContainerInput['panels'] } { - const embeddableId = partial.id || uuidv4(); - - const explicitInput = this.createNewExplicitEmbeddableInput<TEmbeddableInput>( - embeddableId, - factory, - partial - ); - - return { - newPanel: { - type: factory.type, - explicitInput: { - ...explicitInput, - id: embeddableId, - version: factory.latestVersion, - } as TEmbeddableInput, - }, - otherPanels: this.getInput().panels, - }; - } - - protected getPanelState<TEmbeddableInput extends EmbeddableInput = EmbeddableInput>( - embeddableId: string - ) { - if (this.input.panels[embeddableId] === undefined) { - throw new PanelNotFoundError(); - } - const panelState: PanelState = this.input.panels[embeddableId]; - return panelState as PanelState<TEmbeddableInput>; - } - - /** - * Return state that comes from the container and is passed down to the child. For instance, time range and - * filters are common inherited input state. Note that state stored in `this.input.panels[embeddableId].explicitInput` - * will override inherited input. - */ - protected abstract getInheritedInput(id: string): TChildInput; - - private async initializeChildEmbeddables( - initialInput: TContainerInput, - initializeSettings?: EmbeddableContainerSettings - ) { - let initializeOrder = Object.keys(initialInput.panels); - if (initializeSettings?.childIdInitializeOrder) { - const initializeOrderSet = new Set<string>(); - - for (const id of [...initializeSettings.childIdInitializeOrder, ...initializeOrder]) { - if (!initializeOrderSet.has(id) && Boolean(this.getInput().panels[id])) { - initializeOrderSet.add(id); - } - } - - initializeOrder = Array.from(initializeOrderSet); - } - - for (const id of initializeOrder) { - if (initializeSettings?.initializeSequentially) { - const embeddable = await this.onPanelAdded(initialInput.panels[id]); - - if (embeddable && !isErrorEmbeddable(embeddable)) { - await this.untilEmbeddableLoaded(id); - } - } else { - this.onPanelAdded(initialInput.panels[id]); - } - } - } - - protected async createAndSaveEmbeddable< - TEmbeddableInput extends EmbeddableInput = EmbeddableInput, - TEmbeddable extends IEmbeddable<TEmbeddableInput> = IEmbeddable<TEmbeddableInput> - >(type: string, panelState: PanelState, otherPanels: TContainerInput['panels']) { - this.updateInput({ - panels: { - ...otherPanels, - [panelState.explicitInput.id]: panelState, - }, - } as Partial<TContainerInput>); - - return await this.untilEmbeddableLoaded<TEmbeddable>(panelState.explicitInput.id); - } - - private createNewExplicitEmbeddableInput< - TEmbeddableInput extends EmbeddableInput = EmbeddableInput, - TEmbeddable extends IEmbeddable< - TEmbeddableInput, - EmbeddableOutput - > = IEmbeddable<TEmbeddableInput> - >( - id: string, - factory: EmbeddableFactory<TEmbeddableInput, any, TEmbeddable>, - partial: Partial<TEmbeddableInput> = {} - ): Partial<TEmbeddableInput> { - const inheritedInput = this.getInheritedInput(id); - const defaults = factory.getDefaultInput(partial); - - // Container input overrides defaults. - const explicitInput: Partial<TEmbeddableInput> = partial; - - getKeys(defaults).forEach((key) => { - // @ts-ignore We know this key might not exist on inheritedInput. - const inheritedValue = inheritedInput[key]; - if (inheritedValue === undefined && explicitInput[key] === undefined) { - explicitInput[key] = defaults[key]; - } - }); - return explicitInput; - } - - private onPanelRemoved(id: string) { - // Clean up - const embeddable = this.getChild(id); - if (embeddable && embeddable.destroy) { - embeddable.destroy(); - - // Remove references. - const nextChildren = this.children$.value; - delete nextChildren[id]; - this.children$.next(nextChildren); - } - - this.updateOutput({ - embeddableLoaded: { - ...this.output.embeddableLoaded, - [id]: undefined, - }, - } as Partial<TContainerOutput>); - } - - private async onPanelAdded(panel: PanelState) { - // do nothing if this panel's type is in the new Embeddable registry. - if (reactEmbeddableRegistryHasKey(panel.type)) { - this.updateOutput({ - embeddableLoaded: { - ...this.output.embeddableLoaded, - [panel.explicitInput.id]: true, - }, - } as Partial<TContainerOutput>); - return; - } - - this.updateOutput({ - embeddableLoaded: { - ...this.output.embeddableLoaded, - [panel.explicitInput.id]: false, - }, - } as Partial<TContainerOutput>); - let embeddable: IEmbeddable | ErrorEmbeddable | undefined; - const inputForChild = this.getInputForChild(panel.explicitInput.id); - try { - const factory = this.getFactory(panel.type); - if (!factory) { - throw new EmbeddableFactoryNotFoundError(panel.type); - } - - // TODO: lets get rid of this distinction with factories, I don't think it will be needed after this change. - embeddable = isSavedObjectEmbeddableInput(inputForChild) - ? await factory.createFromSavedObject(inputForChild.savedObjectId, inputForChild, this) - : await factory.create(inputForChild, this); - } catch (e) { - embeddable = new ErrorEmbeddable(e, { id: panel.explicitInput.id }, this); - } - - // EmbeddableFactory.create can return undefined without throwing an error, which indicates that an embeddable - // can't be created. This logic essentially only exists to support the current use case of - // visualizations being created from the add panel, which redirects the user to the visualize app. Once we - // switch over to inline creation we can probably clean this up, and force EmbeddableFactory.create to always - // return an embeddable, or throw an error. - if (embeddable) { - if (!embeddable.deferEmbeddableLoad) { - this.setChildLoaded(embeddable); - } - } else if (embeddable === undefined) { - this.removeEmbeddable(panel.explicitInput.id); - } - - return embeddable; - } - - private panelHasChanged(currentPanel: PanelState, prevPanel: PanelState) { - if (currentPanel.type !== prevPanel.type) { - return true; - } - } - - private maybeUpdateChildren( - currentPanels: TContainerInput['panels'], - prevPanels: TContainerInput['panels'] - ) { - const allIds = Object.keys({ ...currentPanels, ...this.output.embeddableLoaded }); - allIds.forEach((id) => { - if (currentPanels[id] !== undefined && this.output.embeddableLoaded[id] === undefined) { - return this.onPanelAdded(currentPanels[id]); - } - if (currentPanels[id] === undefined && this.output.embeddableLoaded[id] !== undefined) { - return this.onPanelRemoved(id); - } - // In case of type change, remove and add a panel with the same id - if (currentPanels[id] && prevPanels[id]) { - if (this.panelHasChanged(currentPanels[id], prevPanels[id])) { - this.onPanelRemoved(id); - this.onPanelAdded(currentPanels[id]); - } - } - }); - } -} diff --git a/src/plugins/embeddable/public/lib/containers/i_container.ts b/src/plugins/embeddable/public/lib/containers/i_container.ts deleted file mode 100644 index 9ba8c41e50509..0000000000000 --- a/src/plugins/embeddable/public/lib/containers/i_container.ts +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { - Embeddable, - EmbeddableInput, - EmbeddableOutput, - ErrorEmbeddable, - IEmbeddable, -} from '../embeddables'; -import { PanelState } from '../../../common/types'; - -export type { PanelState }; - -export interface ContainerOutput extends EmbeddableOutput { - embeddableLoaded: { [key: string]: boolean }; -} - -export interface ContainerInput<PanelExplicitInput = {}> extends EmbeddableInput { - hidePanelTitles?: boolean; - panels: { - [key: string]: PanelState<PanelExplicitInput & EmbeddableInput & { id: string }>; - }; -} - -export interface EmbeddableContainerSettings { - /** - * If true, the container will wait for each embeddable to load after creation before loading the next embeddable. - */ - initializeSequentially?: boolean; - /** - * Initialise children in the order specified. If an ID does not match it will be skipped and if a child is not included it will be initialized in the default order after the list of provided IDs. - */ - childIdInitializeOrder?: string[]; - - untilContainerInitialized?: () => Promise<void>; -} - -export interface IContainer< - Inherited extends {} = {}, - I extends ContainerInput<Inherited> = ContainerInput<Inherited>, - O extends ContainerOutput = ContainerOutput -> extends IEmbeddable<I, O> { - /** - * Call if you want to wait until an embeddable with that id has finished loading. - */ - untilEmbeddableLoaded<TEmbeddable extends IEmbeddable>( - id: string - ): Promise<TEmbeddable | ErrorEmbeddable>; - - /** - * Returns the input for the given child. Uses a combination of explicit input - * for the child stored on the parent and derived/inherited input taken from the - * container itself. - * @param id - */ - getInputForChild<EEI extends EmbeddableInput>(id: string): EEI; - - /** - * Changes the input for a given child. Note, this will override all inherited state taken from - * the container itself. - * @param id - * @param changes - */ - updateInputForChild<EEI extends EmbeddableInput>(id: string, changes: Partial<EEI>): void; - - /** - * Returns the child embeddable with the given id. - * @param id - */ - getChild<E extends Embeddable<EmbeddableInput> = Embeddable<EmbeddableInput>>(id: string): E; - - /** - * Embeddables which have deferEmbeddableLoad set to true need to manually call setChildLoaded - * on their parent container to communicate when they have finished loading. - * @param embeddable - the embeddable to set - */ - setChildLoaded<E extends IEmbeddable = IEmbeddable>(embeddable: E): void; - - /** - * Removes the embeddable with the given id. - * @param embeddableId - */ - removeEmbeddable(embeddableId: string): void; - - /** - * Adds a new embeddable to the container. `explicitInput` may partially specify the required embeddable input, - * but the remainder must come from inherited container state. - */ - addNewEmbeddable< - EEI extends EmbeddableInput = EmbeddableInput, - EEO extends EmbeddableOutput = EmbeddableOutput, - E extends Embeddable<EEI, EEO> = Embeddable<EEI, EEO> - >( - type: string, - explicitInput: Partial<EEI>, - attributes?: unknown - ): Promise<E | ErrorEmbeddable>; - - replaceEmbeddable< - EEI extends EmbeddableInput = EmbeddableInput, - EEO extends EmbeddableOutput = EmbeddableOutput, - E extends Embeddable<EEI, EEO> = Embeddable<EEI, EEO> - >( - id: string, - newExplicitInput: Partial<EEI>, - newType?: string, - generateNewId?: boolean - ): Promise<string>; -} diff --git a/src/plugins/embeddable/public/lib/containers/index.ts b/src/plugins/embeddable/public/lib/containers/index.ts deleted file mode 100644 index 2f8a5dcf5d82b..0000000000000 --- a/src/plugins/embeddable/public/lib/containers/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export type { - IContainer, - PanelState, - ContainerInput, - ContainerOutput, - EmbeddableContainerSettings, -} from './i_container'; -export { Container } from './container'; diff --git a/src/plugins/embeddable/public/lib/embeddable_placement/embeddable_placement_registry.ts b/src/plugins/embeddable/public/lib/embeddable_placement/embeddable_placement_registry.ts deleted file mode 100644 index de54efd2db6fb..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddable_placement/embeddable_placement_registry.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -type GetPanelPlacementSettings<StateType> = (serializedState: StateType) => { - width?: number; - height?: number; - strategy?: string; -}; - -const registry: Map<string, GetPanelPlacementSettings<any>> = new Map(); - -export const registerEmbeddablePlacementStrategy = <StateType>( - panelType: string, - getPanelPlacementSettings: GetPanelPlacementSettings<StateType> -) => { - if (registry.has(panelType)) { - throw new Error(`Embeddable placement for embeddable type ${panelType} already exists`); - } - - registry.set(panelType, getPanelPlacementSettings); -}; - -export const getEmbeddablePlacementStrategy = (panelType: string) => { - return registry.get(panelType); -}; diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.test.tsx b/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.test.tsx deleted file mode 100644 index 4def23c8801c6..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.test.tsx +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { of } from 'rxjs'; - -import { embeddablePluginMock } from '../../../mocks'; -import { applicationServiceMock } from '@kbn/core/public/mocks'; -import { Embeddable, EmbeddableInput, ViewMode } from '../..'; -import { canEditEmbeddable, editLegacyEmbeddable } from './edit_legacy_embeddable'; -import { ContactCardEmbeddable } from '../../test_samples'; -import { core, embeddableStart } from '../../../kibana_services'; - -const applicationMock = applicationServiceMock.createStartContract(); -const stateTransferMock = embeddablePluginMock.createStartContract().getStateTransfer(); - -// mock app id -core.application.currentAppId$ = of('superCoolCurrentApp'); - -class EditableEmbeddable extends Embeddable { - public readonly type = 'EDITABLE_EMBEDDABLE'; - - constructor(input: EmbeddableInput, editable: boolean) { - super(input, { - editUrl: 'www.google.com', - editable, - }); - } - - public reload() {} -} - -test('canEditEmbeddable returns true when edit url is available, in edit mode and editable', () => { - expect( - canEditEmbeddable(new EditableEmbeddable({ id: '123', viewMode: ViewMode.EDIT }, true)) - ).toBe(true); -}); - -test('canEditEmbeddable returns false when edit url is not available', async () => { - const embeddable = new ContactCardEmbeddable( - { - id: '123', - firstName: 'sue', - viewMode: ViewMode.EDIT, - }, - { - execAction: () => Promise.resolve(undefined), - } - ); - expect(canEditEmbeddable(embeddable)).toBe(false); -}); - -test('canEditEmbeddable returns false when edit url is available but in view mode', async () => { - expect( - canEditEmbeddable( - new EditableEmbeddable( - { - id: '123', - viewMode: ViewMode.VIEW, - }, - true - ) - ) - ).toBe(false); -}); - -test('canEditEmbeddable returns false when edit url is available, in edit mode, but not editable', async () => { - expect( - canEditEmbeddable( - new EditableEmbeddable( - { - id: '123', - viewMode: ViewMode.EDIT, - }, - false - ) - ) - ).toBe(false); -}); - -test('getEditHref returns the edit url', async () => { - const embeddable = new EditableEmbeddable({ id: '123', viewMode: ViewMode.EDIT }, true); - expect(await embeddable.getEditHref()).toBe(embeddable.getOutput().editUrl); -}); - -test('redirects to app using state transfer', async () => { - embeddableStart.getStateTransfer = jest.fn().mockReturnValue(stateTransferMock); - - applicationMock.currentAppId$ = of('superCoolCurrentApp'); - const testPath = '/test-path'; - const embeddable = new EditableEmbeddable( - { - id: '123', - viewMode: ViewMode.EDIT, - coolInput1: 1, - coolInput2: 2, - } as unknown as EmbeddableInput, - true - ); - embeddable.getOutput = jest.fn(() => ({ editApp: 'ultraVisualize', editPath: '/123' })); - embeddable.getAppContext = jest.fn().mockReturnValue({ - getCurrentPath: () => testPath, - }); - await editLegacyEmbeddable(embeddable); - expect(stateTransferMock.navigateToEditor).toHaveBeenCalledWith('ultraVisualize', { - path: '/123', - state: { - originatingApp: 'superCoolCurrentApp', - embeddableId: '123', - valueInput: { - id: '123', - viewMode: ViewMode.EDIT, - coolInput1: 1, - coolInput2: 2, - }, - originatingPath: testPath, - searchSessionId: undefined, - }, - }); -}); diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.tsx b/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.tsx deleted file mode 100644 index e99bbcfca22ef..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { firstValueFrom } from 'rxjs'; -import { LegacyCompatibleEmbeddable } from '../../../embeddable_panel/types'; -import { core, embeddableStart } from '../../../kibana_services'; -import { Container } from '../../containers'; -import { EmbeddableFactoryNotFoundError } from '../../errors'; -import { EmbeddableEditorState } from '../../state_transfer'; -import { isExplicitInputWithAttributes } from '../embeddable_factory'; -import { EmbeddableInput } from '../i_embeddable'; - -const getExplicitInput = (embeddable: LegacyCompatibleEmbeddable) => - (embeddable.getRoot() as Container)?.getInput()?.panels?.[embeddable.id]?.explicitInput ?? - embeddable.getInput(); - -const getAppTarget = async (embeddable: LegacyCompatibleEmbeddable) => { - const app = embeddable ? embeddable.getOutput().editApp : undefined; - const path = embeddable ? embeddable.getOutput().editPath : undefined; - if (!app || !path) return; - - const currentAppId = await firstValueFrom(core.application.currentAppId$); - if (!currentAppId) return { app, path }; - - const state: EmbeddableEditorState = { - originatingApp: currentAppId, - valueInput: getExplicitInput(embeddable), - embeddableId: embeddable.id, - searchSessionId: embeddable.getInput().searchSessionId, - originatingPath: embeddable.getAppContext()?.getCurrentPath?.(), - }; - return { app, path, state }; -}; - -export const editLegacyEmbeddable = async (embeddable: LegacyCompatibleEmbeddable) => { - const { editableWithExplicitInput } = embeddable.getOutput(); - - if (editableWithExplicitInput) { - const factory = embeddableStart.getEmbeddableFactory(embeddable.type); - if (!factory) { - throw new EmbeddableFactoryNotFoundError(embeddable.type); - } - - const oldExplicitInput = embeddable.getExplicitInput(); - let newExplicitInput: Partial<EmbeddableInput>; - try { - const explicitInputReturn = await factory.getExplicitInput( - oldExplicitInput, - embeddable.parent - ); - newExplicitInput = isExplicitInputWithAttributes(explicitInputReturn) - ? explicitInputReturn.newInput - : explicitInputReturn; - } catch (e) { - // error likely means user canceled editing - return; - } - embeddable.parent?.replaceEmbeddable(embeddable.id, newExplicitInput); - return; - } - - const appTarget = await getAppTarget(embeddable); - const stateTransfer = embeddableStart.getStateTransfer(); - if (appTarget) { - if (stateTransfer && appTarget.state) { - await stateTransfer.navigateToEditor(appTarget.app, { - path: appTarget.path, - state: appTarget.state, - }); - } else { - await core.application.navigateToApp(appTarget.app, { path: appTarget.path }); - } - return; - } - - const href = embeddable.getOutput().editUrl; - if (href) { - window.location.href = href; - return; - } -}; - -export const canEditEmbeddable = (embeddable: LegacyCompatibleEmbeddable) => { - return Boolean( - embeddable && - embeddable.getInput().viewMode === 'edit' && - embeddable.getOutput().editable && - !embeddable.getOutput().inlineEditable && - (embeddable.getOutput().editUrl || - (embeddable.getOutput().editApp && embeddable.getOutput().editPath) || - embeddable.getOutput().editableWithExplicitInput) - ); -}; diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/embeddable_compatibility_utils.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/embeddable_compatibility_utils.ts index 84b31d5556f42..6512d28d6bcfd 100644 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/embeddable_compatibility_utils.ts +++ b/src/plugins/embeddable/public/lib/embeddables/compatibility/embeddable_compatibility_utils.ts @@ -9,15 +9,8 @@ import { ViewMode } from '@kbn/presentation-publishing'; import deepEqual from 'fast-deep-equal'; -import { - BehaviorSubject, - distinctUntilChanged, - distinctUntilKeyChanged, - map, - Subscription, -} from 'rxjs'; +import { BehaviorSubject, distinctUntilKeyChanged, map, Subscription } from 'rxjs'; import { EmbeddableInput, EmbeddableOutput, IEmbeddable } from '../..'; -import { Container } from '../../containers'; import { ViewMode as LegacyViewMode } from '../../types'; import { CommonLegacyEmbeddable } from './legacy_embeddable_to_api'; @@ -33,33 +26,16 @@ export const embeddableInputToSubject = < const subject = new BehaviorSubject<ValueType | undefined>( embeddable.getExplicitInput()?.[key] as ValueType ); - if (useExplicitInput && embeddable.parent) { - subscription.add( - embeddable.parent - .getInput$() - .pipe( - distinctUntilChanged((prev, current) => { - const previousValue = (prev.panels[embeddable.id]?.explicitInput as LegacyInput)[key]; - const currentValue = (current.panels[embeddable.id]?.explicitInput as LegacyInput)?.[ - key - ]; - return deepEqual(previousValue, currentValue); - }) - ) - .subscribe(() => subject.next(embeddable.getExplicitInput()?.[key] as ValueType)) - ); - } else { - subscription.add( - embeddable - .getInput$() - .pipe( - distinctUntilKeyChanged(key, (prev, current) => { - return deepEqual(prev, current); - }) - ) - .subscribe(() => subject.next(embeddable.getInput()?.[key] as ValueType)) - ); - } + subscription.add( + embeddable + .getInput$() + .pipe( + distinctUntilKeyChanged(key, (prev, current) => { + return deepEqual(prev, current); + }) + ) + .subscribe(() => subject.next(embeddable.getInput()?.[key] as ValueType)) + ); return subject; }; @@ -122,20 +98,3 @@ export const viewModeToSubject = ( ); return subject; }; - -/** - * Temporarily copying types from dashboard_container.ts because we cannot import it here. - */ -interface DashboardRequiredMethods { - getExpandedPanelId: () => string | undefined; - setExpandedPanelId: (expandedPanelId: string | undefined) => void; -} - -export const hasDashboardRequiredMethods = ( - container: unknown -): container is DashboardRequiredMethods & Container => { - return ( - typeof (container as DashboardRequiredMethods).getExpandedPanelId === 'function' && - typeof (container as DashboardRequiredMethods).setExpandedPanelId === 'function' - ); -}; diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/legacy_embeddable_to_api.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/legacy_embeddable_to_api.ts index daab774d7f35d..56fe9b82d1b2d 100644 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/legacy_embeddable_to_api.ts +++ b/src/plugins/embeddable/public/lib/embeddables/compatibility/legacy_embeddable_to_api.ts @@ -37,14 +37,11 @@ import { IEmbeddable, LegacyEmbeddableAPI, } from '../i_embeddable'; -import { canEditEmbeddable, editLegacyEmbeddable } from './edit_legacy_embeddable'; import { embeddableInputToSubject, embeddableOutputToSubject, viewModeToSubject, } from './embeddable_compatibility_utils'; -import { canLinkLegacyEmbeddable, linkLegacyEmbeddable } from './link_legacy_embeddable'; -import { canUnlinkLegacyEmbeddable, unlinkLegacyEmbeddable } from './unlink_legacy_embeddable'; export type CommonLegacyInput = EmbeddableInput & { savedObjectId?: string; timeRange: TimeRange }; export type CommonLegacyOutput = EmbeddableOutput & { indexPatterns: DataView[] }; @@ -93,13 +90,15 @@ export const legacyEmbeddableToApi = ( /** * Support editing of legacy embeddables */ - const onEdit = () => editLegacyEmbeddable(embeddable); + const onEdit = () => { + throw new Error('Edit legacy embeddable not supported'); + }; const getTypeDisplayName = () => embeddableStart.getEmbeddableFactory(embeddable.type)?.getDisplayName() ?? i18n.translate('embeddableApi.compatibility.defaultTypeDisplayName', { defaultMessage: 'chart', }); - const isEditingEnabled = () => canEditEmbeddable(embeddable); + const isEditingEnabled = () => false; /** * Performance tracking @@ -185,7 +184,6 @@ export const legacyEmbeddableToApi = ( ); const uuid = embeddable.id; - const parentApi = embeddable.parent; const disableTriggers = embeddable.getInput().disableTriggers; /** @@ -249,7 +247,6 @@ export const legacyEmbeddableToApi = ( return { api: { - parentApi: parentApi as LegacyEmbeddableAPI['parentApi'], uuid, disableTriggers: disableTriggers ?? false, viewMode, @@ -286,11 +283,15 @@ export const legacyEmbeddableToApi = ( panelDescription, defaultPanelDescription, - canLinkToLibrary: () => canLinkLegacyEmbeddable(embeddable), - linkToLibrary: () => linkLegacyEmbeddable(embeddable), + canLinkToLibrary: async () => false, + linkToLibrary: () => { + throw new Error('Link to library not supported for legacy embeddable'); + }, - canUnlinkFromLibrary: () => canUnlinkLegacyEmbeddable(embeddable), - unlinkFromLibrary: () => unlinkLegacyEmbeddable(embeddable), + canUnlinkFromLibrary: async () => false, + unlinkFromLibrary: () => { + throw new Error('Unlink from library not supported for legacy embeddable'); + }, savedObjectId, }, diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.test.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.test.ts deleted file mode 100644 index e0a546a18969d..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.test.ts +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { EmbeddableInput, ErrorEmbeddable, IContainer, SavedObjectEmbeddableInput } from '../..'; -import { core } from '../../../kibana_services'; -import { embeddablePluginMock } from '../../../mocks'; -import { createHelloWorldContainerAndEmbeddable } from '../../../tests/helpers'; -import { ReferenceOrValueEmbeddable } from '../../reference_or_value_embeddable'; -import { - ContactCardEmbeddable, - ContactCardEmbeddableFactory, - ContactCardEmbeddableInput, -} from '../../test_samples'; -import { ViewMode } from '../../types'; -import { CommonLegacyEmbeddable } from './legacy_embeddable_to_api'; -import { canLinkLegacyEmbeddable, linkLegacyEmbeddable } from './link_legacy_embeddable'; - -let container: IContainer; -let embeddable: ContactCardEmbeddable & ReferenceOrValueEmbeddable; -const embeddableFactory = new ContactCardEmbeddableFactory((() => null) as any, {} as any); - -const defaultCapabilities = { - advancedSettings: {}, - visualize: { save: true }, - maps: { save: true }, - navLinks: {}, -}; - -beforeEach(async () => { - const result = await createHelloWorldContainerAndEmbeddable(); - container = result.container; - embeddable = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - ContactCardEmbeddableInput - >(result.embeddable, { - mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: result.embeddable.id }, - mockedByValueInput: { firstName: 'Kibanana', id: result.embeddable.id }, - }); - embeddable.updateInput({ viewMode: ViewMode.EDIT }); -}); - -const assignDefaultCapabilities = () => { - Object.defineProperty(core.application, 'capabilities', { - value: defaultCapabilities, - }); -}; - -test('Cannot link an Error Embeddable to the library', async () => { - assignDefaultCapabilities(); - const errorEmbeddable = new ErrorEmbeddable( - 'Wow what an awful error', - { id: ' 404' }, - embeddable.getRoot() as IContainer - ); - expect(await canLinkLegacyEmbeddable(errorEmbeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Cannot link an ES|QL Embeddable to the library', async () => { - assignDefaultCapabilities(); - const filterableEmbeddable = embeddablePluginMock.mockFilterableEmbeddable(embeddable, { - getFilters: () => [], - getQuery: () => ({ - esql: 'from logstash-* | limit 10', - }), - }); - expect( - await canLinkLegacyEmbeddable(filterableEmbeddable as unknown as CommonLegacyEmbeddable) - ).toBe(false); -}); - -test('Cannot link a visualize embeddable to the library without visualize save permissions', async () => { - Object.defineProperty(core.application, 'capabilities', { - value: { ...defaultCapabilities, visualize: { save: false } }, - }); - expect(await canLinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Can link an embeddable to the library when it has value type input', async () => { - assignDefaultCapabilities(); - embeddable.updateInput(await embeddable.getInputAsValueType()); - expect(await canLinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe(true); -}); - -test('Cannot link an embedable when its input is by reference', async () => { - assignDefaultCapabilities(); - embeddable.updateInput(await embeddable.getInputAsRefType()); - expect(await canLinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Cannot link an embedable when view mode is set to view', async () => { - assignDefaultCapabilities(); - embeddable.updateInput(await embeddable.getInputAsRefType()); - embeddable.updateInput({ viewMode: ViewMode.VIEW }); - expect(await canLinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Cannot link an embedable when it is not a child of a Dashboard container', async () => { - assignDefaultCapabilities(); - let orphanContactCard = await embeddableFactory.create({ - id: 'orphanContact', - firstName: 'Orphan', - }); - - orphanContactCard = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - ContactCardEmbeddableInput - >(orphanContactCard, { - mockedByReferenceInput: { savedObjectId: 'test', id: orphanContactCard.id }, - mockedByValueInput: { firstName: 'Kibanana', id: orphanContactCard.id }, - }); - expect( - await canLinkLegacyEmbeddable(orphanContactCard as unknown as CommonLegacyEmbeddable) - ).toBe(false); -}); - -test('Linking an embeddable replaces embeddableId and retains panel count', async () => { - assignDefaultCapabilities(); - const dashboard = embeddable.getRoot() as IContainer; - const originalPanelCount = Object.keys(dashboard.getInput().panels).length; - const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); - - await linkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable); - expect(Object.keys(container.getInput().panels).length).toEqual(originalPanelCount); - - const newPanelId = Object.keys(container.getInput().panels).find( - (key) => !originalPanelKeySet.has(key) - ); - expect(newPanelId).toBeDefined(); - const newPanel = container.getInput().panels[newPanelId!]; - expect(newPanel.type).toEqual(embeddable.type); -}); - -test('Link legacy embeddable returns reference type input', async () => { - assignDefaultCapabilities(); - const complicatedAttributes = { - attribute1: 'The best attribute', - attribute2: 22, - attribute3: ['array', 'of', 'strings'], - attribute4: { nestedattribute: 'hello from the nest' }, - }; - - embeddable = embeddablePluginMock.mockRefOrValEmbeddable<ContactCardEmbeddable>(embeddable, { - mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: embeddable.id }, - mockedByValueInput: { attributes: complicatedAttributes, id: embeddable.id } as EmbeddableInput, - }); - const dashboard = embeddable.getRoot() as IContainer; - const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); - await linkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable); - const newPanelId = Object.keys(container.getInput().panels).find( - (key) => !originalPanelKeySet.has(key) - ); - expect(newPanelId).toBeDefined(); - const newPanel = container.getInput().panels[newPanelId!]; - expect(newPanel.type).toEqual(embeddable.type); - expect((newPanel.explicitInput as unknown as { attributes: unknown }).attributes).toBeUndefined(); - expect((newPanel.explicitInput as SavedObjectEmbeddableInput).savedObjectId).toBe( - 'testSavedObjectId' - ); -}); diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.ts deleted file mode 100644 index 2126d1eff764e..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import type { AggregateQuery } from '@kbn/es-query'; -import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; -import { apiIsPresentationContainer } from '@kbn/presentation-containers'; -import { core } from '../../../kibana_services'; -import { PanelNotFoundError } from '../../errors'; -import { isFilterableEmbeddable } from '../../filterable_embeddable'; -import { isReferenceOrValueEmbeddable } from '../../reference_or_value_embeddable'; -import { isErrorEmbeddable } from '../is_error_embeddable'; -import { CommonLegacyEmbeddable } from './legacy_embeddable_to_api'; -import { IContainer } from '../../containers'; - -export const canLinkLegacyEmbeddable = async (embeddable: CommonLegacyEmbeddable) => { - // linking and unlinking legacy embeddables is only supported on Dashboard - if ( - isErrorEmbeddable(embeddable) || - !(embeddable.getRoot() && embeddable.getRoot().isContainer) || - !isReferenceOrValueEmbeddable(embeddable) - ) { - return false; - } - - const { visualize } = core.application.capabilities; - const canSave = visualize.save; - - const { isOfAggregateQueryType } = await import('@kbn/es-query'); - const query = isFilterableEmbeddable(embeddable) && embeddable.getQuery(); - - // Textbased panels (i.e. ES|QL) should not save to library - const isTextBasedEmbeddable = isOfAggregateQueryType(query as AggregateQuery); - - return Boolean( - canSave && - isReferenceOrValueEmbeddable(embeddable) && - !embeddable.inputIsRefType(embeddable.getInput()) && - !isTextBasedEmbeddable - ); -}; - -export const linkLegacyEmbeddable = async (embeddable: CommonLegacyEmbeddable) => { - const root = embeddable.getRoot() as IContainer; - if (!isReferenceOrValueEmbeddable(embeddable) || !apiIsPresentationContainer(root)) { - throw new IncompatibleActionError(); - } - - // Link to library - const newInput = await embeddable.getInputAsRefType(); - embeddable.updateInput(newInput); - - // Replace panel in parent. - const panelToReplace = root.getInput().panels[embeddable.id]; - if (!panelToReplace) { - throw new PanelNotFoundError(); - } - await root.replacePanel(panelToReplace.explicitInput.id, { - panelType: embeddable.type, - initialState: { ...newInput }, - }); -}; diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.test.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.test.ts deleted file mode 100644 index 50c44f2c1b253..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.test.ts +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ErrorEmbeddable, IContainer, PanelState, SavedObjectEmbeddableInput } from '../..'; -import { embeddablePluginMock } from '../../../mocks'; -import { createHelloWorldContainerAndEmbeddable } from '../../../tests/helpers'; -import { ReferenceOrValueEmbeddable } from '../../reference_or_value_embeddable'; -import { - ContactCardEmbeddable, - ContactCardEmbeddableFactory, - ContactCardEmbeddableInput, -} from '../../test_samples'; -import { ViewMode } from '../../types'; -import { CommonLegacyEmbeddable } from './legacy_embeddable_to_api'; -import { canLinkLegacyEmbeddable } from './link_legacy_embeddable'; -import { canUnlinkLegacyEmbeddable, unlinkLegacyEmbeddable } from './unlink_legacy_embeddable'; - -let container: IContainer; -let embeddable: ContactCardEmbeddable & ReferenceOrValueEmbeddable; - -const embeddableFactory = new ContactCardEmbeddableFactory((() => null) as any, {} as any); - -beforeEach(async () => { - const result = await createHelloWorldContainerAndEmbeddable(); - container = result.container; - embeddable = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - ContactCardEmbeddableInput - >(result.embeddable, { - mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: result.embeddable.id }, - mockedByValueInput: { firstName: 'Kibanana', id: result.embeddable.id }, - }); - embeddable.updateInput({ viewMode: ViewMode.EDIT }); -}); - -test('Can unlink returns false when given an Error Embeddable', async () => { - const errorEmbeddable = new ErrorEmbeddable( - 'Wow what an awful error', - { id: ' 404' }, - embeddable.getRoot() as IContainer - ); - expect( - await canUnlinkLegacyEmbeddable(errorEmbeddable as unknown as CommonLegacyEmbeddable) - ).toBe(false); -}); - -test('Can unlink returns true when embeddable on dashboard has reference type input', async () => { - embeddable.updateInput(await embeddable.getInputAsRefType()); - expect(await canUnlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - true - ); -}); - -test('Can unlink returns false when embeddable input is by value', async () => { - embeddable.updateInput(await embeddable.getInputAsValueType()); - expect(await canUnlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Can unlink returns false when view mode is set to view', async () => { - embeddable.updateInput(await embeddable.getInputAsRefType()); - embeddable.updateInput({ viewMode: ViewMode.VIEW }); - expect(await canUnlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Can unlink returns false when embeddable is not in a dashboard container', async () => { - let orphanContactCard = await embeddableFactory.create({ - id: 'orphanContact', - firstName: 'Orphan', - }); - - orphanContactCard = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - ContactCardEmbeddableInput - >(orphanContactCard, { - mockedByReferenceInput: { savedObjectId: 'test', id: orphanContactCard.id }, - mockedByValueInput: { firstName: 'Kibanana', id: orphanContactCard.id }, - }); - expect( - await canLinkLegacyEmbeddable(orphanContactCard as unknown as CommonLegacyEmbeddable) - ).toBe(false); - expect(await canUnlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Unlink replaces embeddableId and retains panel count', async () => { - const dashboard = embeddable.getRoot() as IContainer; - const originalPanelCount = Object.keys(dashboard.getInput().panels).length; - const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); - await unlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable); - expect(Object.keys(container.getInput().panels).length).toEqual(originalPanelCount); - - const newPanelId = Object.keys(container.getInput().panels).find( - (key) => !originalPanelKeySet.has(key) - ); - expect(newPanelId).toBeDefined(); - const newPanel = container.getInput().panels[newPanelId!]; - expect(newPanel.type).toEqual(embeddable.type); -}); - -test('Unlink unwraps all attributes from savedObject', async () => { - const complicatedAttributes = { - attribute1: 'The best attribute', - attribute2: 22, - attribute3: ['array', 'of', 'strings'], - attribute4: { nestedattribute: 'hello from the nest' }, - }; - - embeddable = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - { attributes: unknown; id: string }, - SavedObjectEmbeddableInput - >(embeddable, { - mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: embeddable.id }, - mockedByValueInput: { attributes: complicatedAttributes, id: embeddable.id }, - }); - const dashboard = embeddable.getRoot() as IContainer; - const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); - await unlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable); - const newPanelId = Object.keys(container.getInput().panels).find( - (key) => !originalPanelKeySet.has(key) - ); - expect(newPanelId).toBeDefined(); - const newPanel = container.getInput().panels[newPanelId!] as PanelState & { - explicitInput: { attributes: unknown }; - }; - expect(newPanel.type).toEqual(embeddable.type); - expect((newPanel.explicitInput as { attributes: unknown }).attributes).toEqual( - complicatedAttributes - ); -}); diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.ts deleted file mode 100644 index f4d0a3e0ac08a..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; -import { apiIsPresentationContainer } from '@kbn/presentation-containers'; -import { IContainer, PanelState } from '../../containers'; -import { PanelNotFoundError } from '../../errors'; -import { isReferenceOrValueEmbeddable } from '../../reference_or_value_embeddable'; -import { ViewMode } from '../../types'; -import { isErrorEmbeddable } from '../is_error_embeddable'; -import { EmbeddableInput } from '../i_embeddable'; -import { CommonLegacyEmbeddable } from './legacy_embeddable_to_api'; - -export const canUnlinkLegacyEmbeddable = async (embeddable: CommonLegacyEmbeddable) => { - return Boolean( - isReferenceOrValueEmbeddable(embeddable) && - !isErrorEmbeddable(embeddable) && - embeddable.getInput()?.viewMode !== ViewMode.VIEW && - embeddable.getRoot() && - embeddable.getRoot().isContainer && - embeddable.inputIsRefType(embeddable.getInput()) - ); -}; - -export const unlinkLegacyEmbeddable = async (embeddable: CommonLegacyEmbeddable) => { - const root = embeddable.getRoot() as IContainer; - if (!isReferenceOrValueEmbeddable(embeddable) || !apiIsPresentationContainer(root)) { - throw new IncompatibleActionError(); - } - - // unlink and update input. - const newInput = await embeddable.getInputAsValueType(); - embeddable.updateInput(newInput); - - // replace panel in parent. - const panelToReplace = root.getInput().panels[embeddable.id] as PanelState<EmbeddableInput>; - if (!panelToReplace) { - throw new PanelNotFoundError(); - } - await root.replacePanel(panelToReplace.explicitInput.id, { - panelType: embeddable.type, - initialState: { ...newInput, title: embeddable.getTitle() }, - }); -}; diff --git a/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts b/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts index b634c8d507510..13baf96962a3a 100644 --- a/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts +++ b/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts @@ -9,7 +9,6 @@ import { SavedObjectAttributes } from '@kbn/core/public'; import type { FinderAttributes } from '@kbn/saved-objects-finder-plugin/common'; -import { IContainer } from '..'; import { EmbeddableFactory } from './embeddable_factory'; import { EmbeddableStateWithType } from '../../../common/types'; import { EmbeddableFactoryDefinition } from './embeddable_factory_definition'; @@ -41,7 +40,7 @@ export const defaultEmbeddableFactoryProvider = < : () => Promise.resolve({}), createFromSavedObject: def.createFromSavedObject ? def.createFromSavedObject.bind(def) - : (savedObjectId: string, input: Partial<I>, parent?: IContainer) => { + : (savedObjectId: string, input: Partial<I>, parent?: unknown) => { throw new Error(`Creation from saved object not supported by type ${def.type}`); }, create: (...args) => { diff --git a/src/plugins/embeddable/public/lib/embeddables/embeddable.test.tsx b/src/plugins/embeddable/public/lib/embeddables/embeddable.test.tsx deleted file mode 100644 index 84160c9b391aa..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/embeddable.test.tsx +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -/* eslint-disable max-classes-per-file */ - -import { skip, take } from 'rxjs'; -import { Embeddable } from './embeddable'; -import { EmbeddableOutput, EmbeddableInput } from './i_embeddable'; -import { ViewMode } from '../types'; -import { ContactCardEmbeddable } from '../test_samples/embeddables/contact_card/contact_card_embeddable'; -import { - MockFilter, - FilterableEmbeddable, -} from '../test_samples/embeddables/filterable_embeddable'; - -class TestClass { - constructor() {} -} - -interface Output extends EmbeddableOutput { - testClass: TestClass; - inputUpdatedTimes: number; -} - -class OutputTestEmbeddable extends Embeddable<EmbeddableInput, Output> { - public readonly type = 'test'; - constructor() { - super( - { id: 'test', viewMode: ViewMode.VIEW }, - { testClass: new TestClass(), inputUpdatedTimes: 0 } - ); - - this.getInput$().subscribe(() => { - this.updateOutput({ inputUpdatedTimes: this.getOutput().inputUpdatedTimes + 1 }); - }); - } - - reload() {} -} - -class PhaseTestEmbeddable extends Embeddable<EmbeddableInput, EmbeddableOutput> { - public readonly type = 'phaseTest'; - constructor() { - super({ id: 'phaseTest', viewMode: ViewMode.VIEW }, {}); - } - public reportsEmbeddableLoad(): boolean { - return true; - } - reload() {} -} - -test('Embeddable calls input subscribers when changed', (done) => { - const hello = new ContactCardEmbeddable( - { id: '123', firstName: 'Brienne', lastName: 'Tarth' }, - { execAction: (() => null) as any } - ); - - const subscription = hello - .getInput$() - .pipe(skip(1)) - .subscribe((input) => { - expect(input.nameTitle).toEqual('Sir'); - done(); - subscription.unsubscribe(); - }); - - hello.updateInput({ nameTitle: 'Sir' }); -}); - -test('Embeddable reload is called if lastReloadRequest input time changes', async () => { - const hello = new FilterableEmbeddable({ id: '123', filters: [], lastReloadRequestTime: 0 }); - - hello.reload = jest.fn(); - - hello.updateInput({ lastReloadRequestTime: 1 }); - - expect(hello.reload).toBeCalledTimes(1); -}); - -test('Embeddable reload is called if lastReloadRequest input time changed and new input is used', async () => { - const hello = new FilterableEmbeddable({ id: '123', filters: [], lastReloadRequestTime: 0 }); - - const aFilter = {} as unknown as MockFilter; - hello.reload = jest.fn(() => { - // when reload is called embeddable already has new input - expect(hello.getInput().filters).toEqual([aFilter]); - }); - - hello.updateInput({ lastReloadRequestTime: 1, filters: [aFilter] }); - - expect(hello.reload).toBeCalledTimes(1); -}); - -test('Embeddable reload is not called if lastReloadRequest input time does not change', async () => { - const hello = new FilterableEmbeddable({ id: '123', filters: [], lastReloadRequestTime: 1 }); - - hello.reload = jest.fn(); - - hello.updateInput({ lastReloadRequestTime: 1 }); - - expect(hello.reload).toBeCalledTimes(0); -}); - -test('updating output state retains instance information', async () => { - const outputTest = new OutputTestEmbeddable(); - expect(outputTest.getOutput().testClass).toBeInstanceOf(TestClass); - expect(outputTest.getOutput().inputUpdatedTimes).toBe(1); - outputTest.updateInput({ viewMode: ViewMode.EDIT }); - expect(outputTest.getOutput().inputUpdatedTimes).toBe(2); - expect(outputTest.getOutput().testClass).toBeInstanceOf(TestClass); -}); - -test('fires phase events when output changes', async () => { - const phaseEventTest = new PhaseTestEmbeddable(); - let phaseEventCount = 0; - phaseEventTest.phase$.subscribe((event) => { - if (event) { - phaseEventCount++; - } - }); - expect(phaseEventCount).toBe(1); // loading is true by default which fires an event. - phaseEventTest.updateOutput({ loading: false }); - expect(phaseEventCount).toBe(2); - phaseEventTest.updateOutput({ rendered: true }); - expect(phaseEventCount).toBe(3); -}); - -test('updated$ called after reload and batches input/output changes', async () => { - const hello = new ContactCardEmbeddable( - { id: '123', firstName: 'Brienne', lastName: 'Tarth' }, - { execAction: (() => null) as any } - ); - - const reloadSpy = jest.spyOn(hello, 'reload'); - - const input$ = hello.getInput$().pipe(skip(1)); - let inputEmittedTimes = 0; - input$.subscribe(() => { - inputEmittedTimes++; - }); - - const updated$ = hello.getUpdated$(); - let updatedEmittedTimes = 0; - updated$.subscribe(() => { - updatedEmittedTimes++; - }); - const updatedPromise = updated$.pipe(take(1)).toPromise(); - - hello.updateInput({ nameTitle: 'Sir', lastReloadRequestTime: Date.now() }); - expect(reloadSpy).toHaveBeenCalledTimes(1); - expect(inputEmittedTimes).toBe(1); - expect(updatedEmittedTimes).toBe(0); - - await updatedPromise; - - expect(updatedEmittedTimes).toBe(1); -}); diff --git a/src/plugins/embeddable/public/lib/embeddables/embeddable.tsx b/src/plugins/embeddable/public/lib/embeddables/embeddable.tsx index 9fc3598bcd5ad..40fb391400a18 100644 --- a/src/plugins/embeddable/public/lib/embeddables/embeddable.tsx +++ b/src/plugins/embeddable/public/lib/embeddables/embeddable.tsx @@ -13,9 +13,7 @@ import * as Rx from 'rxjs'; import { merge } from 'rxjs'; import { debounceTime, distinctUntilChanged, map, skip } from 'rxjs'; import { RenderCompleteDispatcher } from '@kbn/kibana-utils-plugin/public'; -import { EmbeddableAppContext } from '@kbn/presentation-publishing'; import { Adapters } from '../types'; -import { IContainer } from '../containers'; import { EmbeddableError, EmbeddableOutput, @@ -48,8 +46,6 @@ export abstract class Embeddable< public readonly runtimeId = Embeddable.runtimeId++; - public readonly parent?: IContainer; - public readonly isContainer: boolean = false; public readonly deferEmbeddableLoad: boolean = false; public catchError?(error: EmbeddableError, domNode: HTMLElement | Element): TNode | (() => void); @@ -69,13 +65,9 @@ export abstract class Embeddable< protected renderComplete = new RenderCompleteDispatcher(); - // Listener to parent changes, if this embeddable exists in a parent, in order - // to update input when the parent changes. - private parentSubscription?: Rx.Subscription; - protected destroyed: boolean = false; - constructor(input: TEmbeddableInput, output: TEmbeddableOutput, parent?: IContainer) { + constructor(input: TEmbeddableInput, output: TEmbeddableOutput) { this.id = input.id; this.output = { @@ -93,20 +85,10 @@ export abstract class Embeddable< viewMode: ViewMode.EDIT, ...input, }; - this.parent = parent; this.inputSubject.next(this.input); this.outputSubject.next(this.output); - if (parent) { - this.parentSubscription = Rx.merge(parent.getInput$(), parent.getOutput$()).subscribe(() => { - // Make sure this panel hasn't been removed immediately after it was added, but before it finished loading. - if (!parent.getInput().panels[this.id]) return; - - const newInput = parent.getInputForChild<TEmbeddableInput>(this.id); - this.onResetInput(newInput); - }); - } this.getOutput$() .pipe( map(({ title }) => title || ''), @@ -122,7 +104,6 @@ export abstract class Embeddable< onEdit: this.onEdit, viewMode: this.viewMode, dataViews: this.dataViews, - parentApi: this.parentApi, panelTitle: this.panelTitle, query$: this.query$, dataLoading: this.dataLoading, @@ -166,7 +147,6 @@ export abstract class Embeddable< public disableTriggers: LegacyEmbeddableAPI['disableTriggers']; public onEdit: LegacyEmbeddableAPI['onEdit']; public viewMode: LegacyEmbeddableAPI['viewMode']; - public parentApi: LegacyEmbeddableAPI['parentApi']; public dataViews: LegacyEmbeddableAPI['dataViews']; public query$: LegacyEmbeddableAPI['query$']; public panelTitle: LegacyEmbeddableAPI['panelTitle']; @@ -200,27 +180,10 @@ export abstract class Embeddable< return this.getOutput().editUrl ?? undefined; } - public getAppContext(): EmbeddableAppContext | undefined { - return this.parent?.getAppContext(); - } - public reportsEmbeddableLoad() { return false; } - public refreshInputFromParent() { - if (!this.parent) return; - // Make sure this panel hasn't been removed immediately after it was added, but before it finished loading. - if (!this.parent.getInput().panels[this.id]) return; - - const newInput = this.parent.getInputForChild<TEmbeddableInput>(this.id); - this.onResetInput(newInput); - } - - public getIsContainer(): this is IContainer { - return this.isContainer === true; - } - /** * Reload will be called when there is a request to refresh the data or view, even if the * input data did not change. @@ -274,12 +237,6 @@ export abstract class Embeddable< } public getExplicitInput() { - const root = this.getRoot(); - if (root?.getIsContainer?.()) { - return ( - (root.getInput().panels?.[this.id]?.explicitInput as TEmbeddableInput) ?? this.getInput() - ); - } return this.getInput(); } @@ -299,28 +256,11 @@ export abstract class Embeddable< return this.output.description ?? ''; } - /** - * Returns the top most parent embeddable, or itself if this embeddable - * is not within a parent. - */ - public getRoot(): IEmbeddable | IContainer { - let root: IEmbeddable | IContainer = this; - while (root.parent) { - root = root.parent; - } - return root; - } - public updateInput(changes: Partial<TEmbeddableInput>): void { if (this.destroyed) { throw new Error('Embeddable has been destroyed'); } - if (this.parent) { - // Ensures state changes flow from container downward. - this.parent.updateInputForChild<TEmbeddableInput>(this.id, changes); - } else { - this.onInputChanged(changes); - } + this.onInputChanged(changes); } public render(el: HTMLElement): TNode | void { @@ -352,9 +292,6 @@ export abstract class Embeddable< this.outputSubject.complete(); this.destroyAPI(); - if (this.parentSubscription) { - this.parentSubscription.unsubscribe(); - } return; } @@ -374,9 +311,6 @@ export abstract class Embeddable< */ protected setInitializationFinished() { if (!this.deferEmbeddableLoad) return; - if (this.deferEmbeddableLoad && this.parent?.isContainer) { - this.parent.setChildLoaded(this); - } this.initializationFinished.complete(); } @@ -399,11 +333,6 @@ export abstract class Embeddable< protected onFatalError(e: Error) { this.fatalError = e; this.outputSubject.error(e); - // if the container is waiting for this embeddable to complete loading, - // a fatal error counts as complete. - if (this.deferEmbeddableLoad && this.parent?.isContainer) { - this.parent.setChildLoaded(this); - } } private onResetInput(newInput: TEmbeddableInput) { diff --git a/src/plugins/embeddable/public/lib/embeddables/embeddable_factory.ts b/src/plugins/embeddable/public/lib/embeddables/embeddable_factory.ts index ec5a849cc2da8..e363af639e252 100644 --- a/src/plugins/embeddable/public/lib/embeddables/embeddable_factory.ts +++ b/src/plugins/embeddable/public/lib/embeddables/embeddable_factory.ts @@ -13,7 +13,6 @@ import type { FinderAttributes } from '@kbn/saved-objects-finder-plugin/common'; import { UiActionsPresentableGrouping } from '@kbn/ui-actions-plugin/public'; import { EmbeddableInput, EmbeddableOutput, IEmbeddable } from './i_embeddable'; import { ErrorEmbeddable } from './error_embeddable'; -import { IContainer } from '../containers/i_container'; import { PropertySpec } from '../types'; import { EmbeddableStateWithType } from '../../../common/types'; @@ -125,7 +124,7 @@ export interface EmbeddableFactory< */ getExplicitInput( initialInput?: Partial<TEmbeddableInput>, - parent?: IContainer + parent?: unknown ): Promise<Partial<TEmbeddableInput> | ExplicitInputWithAttributes>; /** @@ -138,7 +137,7 @@ export interface EmbeddableFactory< createFromSavedObject( savedObjectId: string, input: Partial<TEmbeddableInput>, - parent?: IContainer + parent?: unknown ): Promise<TEmbeddable | ErrorEmbeddable>; /** @@ -147,7 +146,7 @@ export interface EmbeddableFactory< */ create( initialInput: TEmbeddableInput, - parent?: IContainer + parent?: unknown ): Promise<TEmbeddable | ErrorEmbeddable | undefined>; order?: number; diff --git a/src/plugins/embeddable/public/lib/embeddables/error_embeddable.tsx b/src/plugins/embeddable/public/lib/embeddables/error_embeddable.tsx index 52b74215c50e8..ffb5c197a4bcc 100644 --- a/src/plugins/embeddable/public/lib/embeddables/error_embeddable.tsx +++ b/src/plugins/embeddable/public/lib/embeddables/error_embeddable.tsx @@ -11,7 +11,6 @@ import React, { ReactNode } from 'react'; import { PresentationPanelError } from '@kbn/presentation-panel-plugin/public'; -import { IContainer } from '../containers'; import { Embeddable } from './embeddable'; import { EmbeddableInput, EmbeddableOutput } from './i_embeddable'; @@ -23,8 +22,8 @@ export class ErrorEmbeddable extends Embeddable<EmbeddableInput, EmbeddableOutpu public readonly type = ERROR_EMBEDDABLE_TYPE; public error: Error | string; - constructor(error: Error | string, input: EmbeddableInput, parent?: IContainer) { - super(input, {}, parent); + constructor(error: Error | string, input: EmbeddableInput) { + super(input, {}); this.error = error; } diff --git a/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts b/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts index 57cf7eec6eb95..e1dbc3db22368 100644 --- a/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts +++ b/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts @@ -8,7 +8,6 @@ */ import { ErrorLike } from '@kbn/expressions-plugin/common'; -import { DefaultPresentationPanelApi } from '@kbn/presentation-panel-plugin/public/panel_component/types'; import { HasEditCapabilities, HasType, @@ -18,7 +17,6 @@ import { PublishesDataViews, PublishesDisabledActionIds, PublishesUnifiedSearch, - HasParentApi, HasUniqueId, PublishesViewMode, PublishesWritablePanelDescription, @@ -26,12 +24,10 @@ import { PublishesPhaseEvents, PublishesSavedObjectId, HasLegacyLibraryTransforms, - EmbeddableAppContext, CanLockHoverActions, } from '@kbn/presentation-publishing'; import { Observable } from 'rxjs'; import { EmbeddableInput } from '../../../common/types'; -import { IContainer } from '../containers/i_container'; import { EmbeddableHasTimeRange } from '../filterable_embeddable/types'; import { HasInspectorAdapters } from '../inspector'; import { Adapters } from '../types'; @@ -57,7 +53,6 @@ export type LegacyEmbeddableAPI = HasType & PublishesWritablePanelTitle & PublishesWritablePanelDescription & Partial<HasLegacyLibraryTransforms> & - HasParentApi<DefaultPresentationPanelApi['parentApi']> & EmbeddableHasTimeRange & PublishesSavedObjectId & CanLockHoverActions; @@ -89,18 +84,6 @@ export interface IEmbeddable< O extends EmbeddableOutput = EmbeddableOutput, N = any > extends LegacyEmbeddableAPI { - /** - * Is this embeddable an instance of a Container class, can it contain - * nested embeddables? - **/ - readonly isContainer: boolean; - - /** - * If this embeddable is nested inside a container, this will contain - * a reference to its parent. - **/ - readonly parent?: IContainer; - /** * The type of embeddable, this is what will be used to take a serialized * embeddable and find the correct factory for which to create an instance of it. @@ -147,12 +130,6 @@ export interface IEmbeddable< */ reportsEmbeddableLoad(): boolean; - /** - * A functional representation of the isContainer variable, but helpful for typescript to - * know the shape if this returns true - */ - getIsContainer(): this is IContainer; - /** * Get the input used to instantiate this embeddable. The input is a serialized representation of * this embeddable instance and can be used to clone or re-instantiate it. Input state: @@ -222,17 +199,6 @@ export interface IEmbeddable< */ getDescription(): string | undefined; - /** - * Returns the top most parent embeddable, or itself if this embeddable - * is not within a parent. - */ - getRoot(): IEmbeddable | IContainer; - - /** - * Returns the context of this embeddable's container, or undefined. - */ - getAppContext(): EmbeddableAppContext | undefined; - /** * Renders the embeddable at the given node. * @param domNode @@ -276,7 +242,5 @@ export interface IEmbeddable< */ getExplicitInputIsEqual(lastInput: Partial<I>): Promise<boolean>; - refreshInputFromParent(): void; - untilInitializationFinished(): Promise<void>; } diff --git a/src/plugins/embeddable/public/lib/index.ts b/src/plugins/embeddable/public/lib/index.ts index bcae2e69ec407..511cc619bd5af 100644 --- a/src/plugins/embeddable/public/lib/index.ts +++ b/src/plugins/embeddable/public/lib/index.ts @@ -11,7 +11,6 @@ export * from './errors'; export * from './embeddables'; export * from './types'; export * from './triggers'; -export * from './containers'; export * from './state_transfer'; export * from './reference_or_value_embeddable'; export * from './self_styled_embeddable'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card.tsx deleted file mode 100644 index 2f725881a6a4b..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card.tsx +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { EuiCard, EuiFlexItem, EuiFlexGroup, EuiFormRow } from '@elastic/eui'; - -import { Subscription } from 'rxjs'; -import { EuiButton } from '@elastic/eui'; -import * as Rx from 'rxjs'; -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import { ContactCardEmbeddable, CONTACT_USER_TRIGGER } from './contact_card_embeddable'; - -interface Props { - embeddable: ContactCardEmbeddable; - execTrigger: UiActionsStart['executeTriggerActions']; -} - -interface State { - fullName: string; - firstName: string; -} - -export class ContactCardEmbeddableComponent extends React.Component<Props, State> { - private subscription?: Subscription; - private mounted: boolean = false; - - constructor(props: Props) { - super(props); - this.state = { - fullName: this.props.embeddable.getOutput().fullName, - firstName: this.props.embeddable.getInput().firstName, - }; - } - - componentDidMount() { - this.mounted = true; - this.subscription = Rx.merge( - this.props.embeddable.getOutput$(), - this.props.embeddable.getInput$() - ).subscribe(() => { - if (this.mounted) { - this.setState({ - fullName: this.props.embeddable.getOutput().fullName, - firstName: this.props.embeddable.getInput().firstName, - }); - } - }); - } - - componentWillUnmount() { - if (this.subscription) { - this.subscription.unsubscribe(); - } - this.mounted = false; - } - - emitContactTrigger = () => { - this.props.execTrigger(CONTACT_USER_TRIGGER, { - embeddable: this.props.embeddable, - }); - }; - - getCardFooterContent = () => ( - <EuiFlexGroup justifyContent="flexEnd"> - <EuiFlexItem grow={false}> - <EuiFormRow label=""> - <EuiButton - onClick={this.emitContactTrigger} - >{`Contact ${this.state.firstName}`}</EuiButton> - </EuiFormRow> - </EuiFlexItem> - </EuiFlexGroup> - ); - - render() { - return ( - <EuiCard - textAlign="left" - title={this.state.fullName} - footer={this.getCardFooterContent()} - description="" - /> - ); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable.tsx deleted file mode 100644 index bb3dff9631fb6..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable.tsx +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import ReactDom from 'react-dom'; -import { Subscription } from 'rxjs'; -import type { ErrorLike } from '@kbn/expressions-plugin/common'; -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import { Container } from '../../../containers'; -import { EmbeddableOutput, Embeddable, EmbeddableInput } from '../../../embeddables'; -import { CONTACT_CARD_EMBEDDABLE } from './contact_card_embeddable_factory'; -import { ContactCardEmbeddableComponent } from './contact_card'; - -export interface ContactCardEmbeddableInput extends EmbeddableInput { - firstName: string; - lastName?: string; - nameTitle?: string; -} - -export interface ContactCardEmbeddableOutput extends EmbeddableOutput { - fullName: string; - originalLastName?: string; -} - -export interface ContactCardEmbeddableOptions { - execAction: UiActionsStart['executeTriggerActions']; - outputOverrides?: Partial<ContactCardEmbeddableOutput>; -} - -function getFullName(input: ContactCardEmbeddableInput) { - const { nameTitle, firstName, lastName } = input; - const nameParts = [nameTitle, firstName, lastName].filter((name) => name !== undefined); - return nameParts.join(' '); -} - -export class ContactCardEmbeddable extends Embeddable< - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput -> { - private subscription: Subscription; - private node?: Element; - public readonly type: string = CONTACT_CARD_EMBEDDABLE; - - constructor( - initialInput: ContactCardEmbeddableInput, - protected readonly options: ContactCardEmbeddableOptions, - parent?: Container - ) { - super( - initialInput, - { - fullName: getFullName(initialInput), - originalLastName: initialInput.lastName, - defaultTitle: `Hello ${getFullName(initialInput)}`, - ...options.outputOverrides, - }, - parent - ); - - this.subscription = this.getInput$().subscribe(() => { - const fullName = getFullName(this.input); - this.updateOutput({ - fullName, - defaultTitle: `Hello ${fullName}`, - }); - }); - } - - public render(node: HTMLElement) { - this.node = node; - ReactDom.render( - <ContactCardEmbeddableComponent embeddable={this} execTrigger={this.options.execAction} />, - node - ); - } - - public catchError?(error: ErrorLike, node: HTMLElement) { - ReactDom.render(<div data-test-subj="error">{error.message}</div>, node); - - return () => ReactDom.unmountComponentAtNode(node); - } - - public destroy() { - super.destroy(); - this.subscription.unsubscribe(); - if (this.node) { - ReactDom.unmountComponentAtNode(this.node); - } - } - - public reload() {} - - public triggerError(error: ErrorLike, fatal = false) { - if (fatal) { - this.onFatalError(error); - } else { - this.updateOutput({ error }); - } - } -} - -export const CONTACT_USER_TRIGGER = 'CONTACT_USER_TRIGGER'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx deleted file mode 100644 index 79e0824b0275f..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; - -import { CoreStart } from '@kbn/core/public'; -import { toMountPoint } from '@kbn/react-kibana-mount'; -import { EmbeddableFactoryDefinition } from '../../../embeddables'; -import { Container } from '../../../containers'; -import { ContactCardEmbeddable, ContactCardEmbeddableInput } from './contact_card_embeddable'; -import { ContactCardInitializer } from './contact_card_initializer'; - -export const CONTACT_CARD_EMBEDDABLE = 'CONTACT_CARD_EMBEDDABLE'; - -export class ContactCardEmbeddableFactory - implements EmbeddableFactoryDefinition<ContactCardEmbeddableInput> -{ - public readonly type = CONTACT_CARD_EMBEDDABLE; - savedObjectMetaData = { - name: 'Contact card', - type: CONTACT_CARD_EMBEDDABLE, - getIconForSavedObject: () => 'document', - }; - - constructor( - protected readonly execTrigger: UiActionsStart['executeTriggerActions'], - private readonly core: CoreStart - ) {} - - public async isEditable() { - return true; - } - - public getDisplayName() { - return i18n.translate('embeddableApi.samples.contactCard.displayName', { - defaultMessage: 'contact card', - }); - } - - public getDefaultInput() { - return {}; - } - - public getExplicitInput = (): Promise<Partial<ContactCardEmbeddableInput>> => { - return new Promise((resolve) => { - const modalSession = this.core.overlays.openModal( - toMountPoint( - <ContactCardInitializer - onCancel={() => { - modalSession.close(); - // @ts-expect-error - resolve(undefined); - }} - onCreate={(input: { firstName: string; lastName?: string }) => { - modalSession.close(); - resolve(input); - }} - />, - this.core - ), - { - 'data-test-subj': 'createContactCardEmbeddable', - } - ); - }); - }; - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - return new ContactCardEmbeddable( - initialInput, - { - execAction: this.execTrigger, - }, - parent - ); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react.tsx deleted file mode 100644 index e2cc363b6ec3a..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react.tsx +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { ContactCardEmbeddableComponent } from './contact_card'; -import { ContactCardEmbeddable } from './contact_card_embeddable'; - -export class ContactCardEmbeddableReact extends ContactCardEmbeddable { - public render() { - return ( - <ContactCardEmbeddableComponent embeddable={this} execTrigger={this.options.execAction} /> - ); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react_factory.ts deleted file mode 100644 index 28e651cd14d02..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react_factory.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Container } from '../../../containers'; -import { ContactCardEmbeddableInput } from './contact_card_embeddable'; -import { ContactCardEmbeddableFactory } from './contact_card_embeddable_factory'; -import { ContactCardEmbeddableReact } from './contact_card_embeddable_react'; - -export const CONTACT_CARD_EMBEDDABLE_REACT = 'CONTACT_CARD_EMBEDDABLE_REACT'; - -export class ContactCardEmbeddableReactFactory extends ContactCardEmbeddableFactory { - public readonly type = CONTACT_CARD_EMBEDDABLE_REACT as ContactCardEmbeddableFactory['type']; - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - return new ContactCardEmbeddableReact( - initialInput, - { - execAction: this.execTrigger, - }, - parent - ); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable.tsx deleted file mode 100644 index eaeeb592d9eb3..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ContactCardEmbeddable } from './contact_card_embeddable'; - -export class ContactCardExportableEmbeddable extends ContactCardEmbeddable { - public getInspectorAdapters = () => { - return { - tables: { - allowCsvExport: true, - tables: { - layer1: { - type: 'datatable', - columns: [ - { id: 'firstName', name: 'First Name' }, - { id: 'originalLastName', name: 'Last Name' }, - ], - rows: [ - { - firstName: this.getInput().firstName, - orignialLastName: this.getInput().lastName, - }, - ], - }, - }, - }, - }; - }; -} - -export const CONTACT_EXPORTABLE_USER_TRIGGER = 'CONTACT_EXPORTABLE_USER_TRIGGER'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx deleted file mode 100644 index 7ddf5f1711b61..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; - -import { CoreStart } from '@kbn/core/public'; -import { toMountPoint } from '@kbn/react-kibana-mount'; -import { EmbeddableFactoryDefinition } from '../../../embeddables'; -import { Container } from '../../../containers'; -import { ContactCardEmbeddableInput } from './contact_card_embeddable'; -import { ContactCardExportableEmbeddable } from './contact_card_exportable_embeddable'; -import { ContactCardInitializer } from './contact_card_initializer'; - -export const CONTACT_CARD_EXPORTABLE_EMBEDDABLE = 'CONTACT_CARD_EXPORTABLE_EMBEDDABLE'; - -export class ContactCardExportableEmbeddableFactory - implements EmbeddableFactoryDefinition<ContactCardEmbeddableInput> -{ - public readonly type = CONTACT_CARD_EXPORTABLE_EMBEDDABLE; - - constructor( - private readonly execTrigger: UiActionsStart['executeTriggerActions'], - private readonly core: CoreStart - ) {} - - public async isEditable() { - return true; - } - - public getDefaultInput() { - return {}; - } - - public getDisplayName() { - return i18n.translate('embeddableApi.samples.contactCard.displayName', { - defaultMessage: 'contact card', - }); - } - - public getExplicitInput = (): Promise<Partial<ContactCardEmbeddableInput>> => { - return new Promise((resolve) => { - const modalSession = this.core.overlays.openModal( - toMountPoint( - <ContactCardInitializer - onCancel={() => { - modalSession.close(); - // @ts-expect-error - resolve(undefined); - }} - onCreate={(input: { firstName: string; lastName?: string }) => { - modalSession.close(); - resolve(input); - }} - />, - this.core - ), - { - 'data-test-subj': 'createContactCardEmbeddable', - } - ); - }); - }; - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - return new ContactCardExportableEmbeddable( - initialInput, - { - execAction: this.execTrigger, - }, - parent - ); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_initializer.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_initializer.tsx deleted file mode 100644 index 10c07ef5d5aad..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_initializer.tsx +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { - EuiForm, - EuiFormRow, - EuiFieldText, - EuiModalHeader, - EuiModalHeaderTitle, - EuiModalBody, - EuiButton, - EuiModalFooter, - EuiButtonEmpty, -} from '@elastic/eui'; -import React, { Component } from 'react'; - -export interface ContactCardInitializerProps { - onCreate: (name: { lastName?: string; firstName: string }) => void; - onCancel: () => void; -} - -interface State { - firstName?: string; - lastName?: string; -} - -export class ContactCardInitializer extends Component<ContactCardInitializerProps, State> { - constructor(props: ContactCardInitializerProps) { - super(props); - this.state = {}; - } - - render() { - return ( - <div> - <EuiModalHeader> - <EuiModalHeaderTitle>Create a new greeting card</EuiModalHeaderTitle> - </EuiModalHeader> - - <EuiModalBody> - <EuiForm> - <EuiFormRow label="First name"> - <EuiFieldText - name="popfirst" - value={this.state.firstName} - onChange={(e) => this.setState({ firstName: e.target.value })} - /> - </EuiFormRow> - - <EuiFormRow label="Last name"> - <EuiFieldText - name="popfirst" - value={this.state.lastName} - placeholder="optional" - onChange={(e) => this.setState({ lastName: e.target.value })} - /> - </EuiFormRow> - </EuiForm> - </EuiModalBody> - - <EuiModalFooter> - <EuiButtonEmpty onClick={this.props.onCancel}>Cancel</EuiButtonEmpty> - - <EuiButton - isDisabled={!this.state.firstName} - onClick={() => { - if (this.state.firstName) { - this.props.onCreate({ - firstName: this.state.firstName, - ...(this.state.lastName ? { lastName: this.state.lastName } : {}), - }); - } - }} - fill - > - Create - </EuiButton> - </EuiModalFooter> - </div> - ); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/descriptive_contact_card_embeddable_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/descriptive_contact_card_embeddable_factory.ts deleted file mode 100644 index fa251fc7cdb04..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/descriptive_contact_card_embeddable_factory.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; - -import { Container, EmbeddableFactoryDefinition } from '../../..'; -import { ContactCardEmbeddable, ContactCardEmbeddableInput } from './contact_card_embeddable'; - -export const DESCRIPTIVE_CONTACT_CARD_EMBEDDABLE = 'DESCRIPTIVE_CONTACT_CARD_EMBEDDABLE'; - -export class DescriptiveContactCardEmbeddableFactory - implements EmbeddableFactoryDefinition<ContactCardEmbeddableInput> -{ - public readonly type = DESCRIPTIVE_CONTACT_CARD_EMBEDDABLE; - - constructor(protected readonly execTrigger: UiActionsStart['executeTriggerActions']) {} - - public async isEditable() { - return true; - } - - public getDisplayName() { - return 'descriptive contact card'; - } - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - return new ContactCardEmbeddable( - initialInput, - { - execAction: this.execTrigger, - outputOverrides: { - defaultDescription: 'This is a family friend', - }, - }, - parent - ); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts deleted file mode 100644 index 5344e74647c2f..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './contact_card'; -export * from './contact_card_embeddable'; -export * from './contact_card_embeddable_factory'; -export * from './contact_card_exportable_embeddable'; -export * from './contact_card_exportable_embeddable_factory'; -export * from './contact_card_embeddable_react'; -export * from './contact_card_embeddable_react_factory'; -export * from './contact_card_initializer'; -export * from './slow_contact_card_embeddable_factory'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory.ts deleted file mode 100644 index aeb8714332521..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import { Container, EmbeddableFactoryDefinition } from '../../..'; -import { ContactCardEmbeddable, ContactCardEmbeddableInput } from './contact_card_embeddable'; -import { CONTACT_CARD_EMBEDDABLE } from './contact_card_embeddable_factory'; - -interface SlowContactCardEmbeddableFactoryOptions { - execAction: UiActionsStart['executeTriggerActions']; - loadTickCount?: number; -} - -export class SlowContactCardEmbeddableFactory - implements EmbeddableFactoryDefinition<ContactCardEmbeddableInput> -{ - private loadTickCount = 0; - public readonly type = CONTACT_CARD_EMBEDDABLE; - - constructor(private readonly options: SlowContactCardEmbeddableFactoryOptions) { - if (options.loadTickCount) { - this.loadTickCount = options.loadTickCount; - } - } - - public async isEditable() { - return true; - } - - public getDisplayName() { - return 'slow to load contact card'; - } - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - for (let i = 0; i < this.loadTickCount; i++) { - await Promise.resolve(); - } - return new ContactCardEmbeddable(initialInput, { execAction: this.options.execAction }, parent); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/empty_embeddable.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/empty_embeddable.tsx deleted file mode 100644 index f05f4f8153e8c..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/empty_embeddable.tsx +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Embeddable, EmbeddableInput, EmbeddableOutput } from '../..'; - -export const EMPTY_EMBEDDABLE = 'EMPTY_EMBEDDABLE'; - -export class EmptyEmbeddable extends Embeddable<EmbeddableInput, EmbeddableOutput> { - public readonly type = EMPTY_EMBEDDABLE; - constructor(initialInput: EmbeddableInput) { - super(initialInput, {}); - } - public render() {} - public reload() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container.tsx deleted file mode 100644 index 3dc9952d6da42..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container.tsx +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Container, ContainerInput } from '../../containers'; -import { EmbeddableStart } from '../../../plugin'; -import { MockFilter } from './filterable_embeddable'; - -export const FILTERABLE_CONTAINER = 'FILTERABLE_CONTAINER'; - -export interface FilterableContainerInput extends ContainerInput { - filters: MockFilter[]; -} - -/** - * interfaces are not allowed to specify a sub-set of the required types until - * https://github.com/microsoft/TypeScript/issues/15300 is fixed so we use a type - * here instead - */ -type InheritedChildrenInput = { - filters: MockFilter[]; - id?: string; -}; - -export class FilterableContainer extends Container< - InheritedChildrenInput, - FilterableContainerInput -> { - public readonly type = FILTERABLE_CONTAINER; - - constructor( - initialInput: FilterableContainerInput, - getFactory: EmbeddableStart['getEmbeddableFactory'], - parent?: Container - ) { - super(initialInput, { embeddableLoaded: {} }, getFactory, parent); - } - - public getInheritedInput() { - return { - filters: this.input.filters, - viewMode: this.input.viewMode, - }; - } - - public render() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container_factory.ts deleted file mode 100644 index b394f905d3378..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container_factory.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { i18n } from '@kbn/i18n'; -import { Container, EmbeddableFactoryDefinition } from '../..'; -import { - FilterableContainer, - FilterableContainerInput, - FILTERABLE_CONTAINER, -} from './filterable_container'; -import { EmbeddableStart } from '../../../plugin'; - -export class FilterableContainerFactory - implements EmbeddableFactoryDefinition<FilterableContainerInput> -{ - public readonly type = FILTERABLE_CONTAINER; - - constructor( - private readonly getFactory: () => Promise<EmbeddableStart['getEmbeddableFactory']> - ) {} - - public getDisplayName() { - return i18n.translate('embeddableApi.samples.filterableContainer.displayName', { - defaultMessage: 'filterable dashboard', - }); - } - - public async isEditable() { - return true; - } - - public create = async (initialInput: FilterableContainerInput, parent?: Container) => { - const getEmbeddableFactory = await this.getFactory(); - return new FilterableContainer(initialInput, getEmbeddableFactory, parent); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable.tsx deleted file mode 100644 index ee32fa6e2642f..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { IContainer } from '../../containers'; -import { EmbeddableOutput, EmbeddableInput, Embeddable } from '../../embeddables'; - -/** @internal */ -export interface MockFilter { - $state?: {}; - meta: {}; - query?: {}; -} - -export const FILTERABLE_EMBEDDABLE = 'FILTERABLE_EMBEDDABLE'; - -export interface FilterableEmbeddableInput extends EmbeddableInput { - filters: MockFilter[]; -} - -export class FilterableEmbeddable extends Embeddable<FilterableEmbeddableInput, EmbeddableOutput> { - public readonly type = FILTERABLE_EMBEDDABLE; - constructor(initialInput: FilterableEmbeddableInput, parent?: IContainer) { - super(initialInput, {}, parent); - } - - public getInspectorAdapters(): Record<string, string> { - const inspectorAdapters: Record<string, string> = { - filters: `My filters are ${JSON.stringify(this.input.filters)}`, - }; - return inspectorAdapters; - } - - public render() {} - - public reload() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable_factory.ts deleted file mode 100644 index cba773effb9ed..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable_factory.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { i18n } from '@kbn/i18n'; -import { - FilterableEmbeddable, - FilterableEmbeddableInput, - FILTERABLE_EMBEDDABLE, -} from './filterable_embeddable'; -import { EmbeddableFactoryDefinition } from '../../embeddables'; -import { IContainer } from '../../containers'; - -export class FilterableEmbeddableFactory - implements EmbeddableFactoryDefinition<FilterableEmbeddableInput> -{ - public readonly type = FILTERABLE_EMBEDDABLE; - - public async isEditable() { - return true; - } - - public getDisplayName() { - return i18n.translate('embeddableApi.samples.filterableEmbeddable.displayName', { - defaultMessage: 'filterable', - }); - } - - public async create(initialInput: FilterableEmbeddableInput, parent?: IContainer) { - return new FilterableEmbeddable(initialInput, parent); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container.tsx deleted file mode 100644 index fe772a1f9a007..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container.tsx +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import ReactDOM from 'react-dom'; -import { I18nProvider } from '@kbn/i18n-react'; -import { Container, ViewMode, ContainerInput } from '../..'; -import { HelloWorldContainerComponent } from './hello_world_container_component'; -import { EmbeddableStart } from '../../../plugin'; -import { EmbeddableContainerSettings } from '../../containers/i_container'; - -export const HELLO_WORLD_CONTAINER = 'HELLO_WORLD_CONTAINER'; - -/** - * interfaces are not allowed to specify a sub-set of the required types until - * https://github.com/microsoft/TypeScript/issues/15300 is fixed so we use a type - * here instead - */ -type InheritedInput = { - id: string; - viewMode: ViewMode; - lastName: string; -}; - -interface HelloWorldContainerInput extends ContainerInput { - lastName?: string; -} - -interface HelloWorldContainerOptions { - getEmbeddableFactory?: EmbeddableStart['getEmbeddableFactory']; -} - -export class HelloWorldContainer extends Container<InheritedInput, HelloWorldContainerInput> { - public readonly type = HELLO_WORLD_CONTAINER; - - constructor( - input: ContainerInput<{ firstName: string; lastName: string }>, - options: HelloWorldContainerOptions, - initializeSettings?: EmbeddableContainerSettings - ) { - super( - input, - { embeddableLoaded: {} }, - options.getEmbeddableFactory || (() => undefined), - undefined, - initializeSettings - ); - } - - public getInheritedInput(id: string) { - return { - id, - viewMode: this.input.viewMode || ViewMode.EDIT, - lastName: this.input.lastName || 'foo', - }; - } - - public render(node: HTMLElement) { - ReactDOM.render( - <I18nProvider> - <HelloWorldContainerComponent container={this} /> - </I18nProvider>, - node - ); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx deleted file mode 100644 index 7bc322c3a1dde..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React, { Component, RefObject } from 'react'; -import { Subscription } from 'rxjs'; - -import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; - -import { IContainer, PanelState } from '../..'; -import { EmbeddablePanel } from '../../../embeddable_panel'; - -interface Props { - container: IContainer; -} - -interface State { - panels: { [key: string]: PanelState }; - loaded: { [key: string]: boolean }; -} - -export class HelloWorldContainerComponent extends Component<Props, State> { - private roots: { [key: string]: RefObject<HTMLDivElement> } = {}; - private mounted: boolean = false; - private inputSubscription?: Subscription; - private outputSubscription?: Subscription; - - constructor(props: Props) { - super(props); - - Object.values(this.props.container.getInput().panels).forEach((panelState) => { - this.roots[panelState.explicitInput.id] = React.createRef(); - }); - - this.state = { - loaded: this.props.container.getOutput().embeddableLoaded, - panels: this.props.container.getInput().panels, - }; - } - - public async componentDidMount() { - this.mounted = true; - - this.inputSubscription = this.props.container.getInput$().subscribe(() => { - if (this.mounted) { - this.setState({ panels: this.props.container.getInput().panels }); - } - }); - - this.outputSubscription = this.props.container.getOutput$().subscribe(() => { - if (this.mounted) { - this.setState({ loaded: this.props.container.getOutput().embeddableLoaded }); - } - }); - } - - public componentWillUnmount() { - this.mounted = false; - this.props.container.destroy(); - - if (this.inputSubscription) { - this.inputSubscription.unsubscribe(); - } - - if (this.outputSubscription) { - this.outputSubscription.unsubscribe(); - } - } - - public render() { - return ( - <div> - <h2>HELLO WORLD! These are my precious embeddable children:</h2> - <EuiSpacer size="l" /> - <EuiFlexGroup>{this.renderList()}</EuiFlexGroup> - </div> - ); - } - - private renderList() { - const list = Object.values(this.state.panels).map((panelState) => { - const item = ( - <EuiFlexItem key={panelState.explicitInput.id}> - <EmbeddablePanel - embeddable={() => - this.props.container.untilEmbeddableLoaded(panelState.explicitInput.id) - } - /> - </EuiFlexItem> - ); - return item; - }); - return list; - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/index.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/index.ts deleted file mode 100644 index 97f6d31622283..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './contact_card'; -export * from './empty_embeddable'; -export * from './filterable_container'; -export * from './filterable_container_factory'; -export * from './filterable_embeddable'; -export * from './filterable_embeddable_factory'; -export * from './hello_world_container'; -export * from './hello_world_container_component'; -export * from './time_range_container'; -export * from './time_range_embeddable_factory'; -export * from './time_range_embeddable'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_container.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_container.ts deleted file mode 100644 index a7d306c86ed8c..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_container.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import type { TimeRange } from '@kbn/es-query'; -import { ContainerInput, Container, ContainerOutput, EmbeddableStart } from '../../..'; - -/** - * interfaces are not allowed to specify a sub-set of the required types until - * https://github.com/microsoft/TypeScript/issues/15300 is fixed so we use a type - * here instead - */ -type InheritedChildrenInput = { - timeRange: TimeRange; - id?: string; -}; - -interface ContainerTimeRangeInput extends ContainerInput<InheritedChildrenInput> { - timeRange: TimeRange; -} - -const TIME_RANGE_CONTAINER = 'TIME_RANGE_CONTAINER'; - -export class TimeRangeContainer extends Container< - InheritedChildrenInput, - ContainerTimeRangeInput, - ContainerOutput -> { - public readonly type = TIME_RANGE_CONTAINER; - constructor( - initialInput: ContainerTimeRangeInput, - getFactory: EmbeddableStart['getEmbeddableFactory'], - parent?: Container - ) { - super(initialInput, { embeddableLoaded: {} }, getFactory, parent); - } - - public getAllDataViews() { - return []; - } - - public getInheritedInput() { - return { timeRange: this.input.timeRange }; - } - - public render() {} - - public reload() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable.ts deleted file mode 100644 index fa9dca4071bbb..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import type { TimeRange } from '@kbn/es-query'; -import { EmbeddableOutput, Embeddable, EmbeddableInput, IContainer } from '../../..'; - -export interface EmbeddableTimeRangeInput extends EmbeddableInput { - timeRange: TimeRange; -} - -export const TIME_RANGE_EMBEDDABLE = 'TIME_RANGE_EMBEDDABLE'; - -export class TimeRangeEmbeddable extends Embeddable<EmbeddableTimeRangeInput, EmbeddableOutput> { - public readonly type = TIME_RANGE_EMBEDDABLE; - - constructor(initialInput: EmbeddableTimeRangeInput, parent?: IContainer) { - const { title: defaultTitle, description: defaultDescription } = initialInput; - super( - initialInput, - { - defaultTitle, - defaultDescription, - }, - parent - ); - } - - public render() {} - - public reload() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable_factory.ts deleted file mode 100644 index fefbfd5df95d1..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable_factory.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { IContainer, EmbeddableFactoryDefinition } from '../../..'; -import { - TIME_RANGE_EMBEDDABLE, - TimeRangeEmbeddable, - EmbeddableTimeRangeInput, -} from './time_range_embeddable'; - -export class TimeRangeEmbeddableFactory - implements EmbeddableFactoryDefinition<EmbeddableTimeRangeInput> -{ - public readonly type = TIME_RANGE_EMBEDDABLE; - - public async isEditable() { - return true; - } - - public async create(initialInput: EmbeddableTimeRangeInput, parent?: IContainer) { - return new TimeRangeEmbeddable(initialInput, parent); - } - - public getDisplayName() { - return 'time range'; - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/index.ts b/src/plugins/embeddable/public/lib/test_samples/index.ts deleted file mode 100644 index b27497d8d8d23..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './embeddables'; diff --git a/src/plugins/embeddable/public/mocks.tsx b/src/plugins/embeddable/public/mocks.tsx index fcabaa7cdb6c7..7db4efd34e48e 100644 --- a/src/plugins/embeddable/public/mocks.tsx +++ b/src/plugins/embeddable/public/mocks.tsx @@ -35,13 +35,9 @@ import { import { setKibanaServices } from './kibana_services'; import { SelfStyledOptions } from './lib/self_styled_embeddable/types'; import { EmbeddablePublicPlugin } from './plugin'; -import { - reactEmbeddableRegistryHasKey, - registerReactEmbeddableFactory, -} from './react_embeddable_system'; +import { registerReactEmbeddableFactory } from './react_embeddable_system'; import { registerAddFromLibraryType } from './add_from_library/registry'; -export { mockAttributeService } from './lib/attribute_service/attribute_service.mock'; export type Setup = jest.Mocked<EmbeddableSetup>; export type Start = jest.Mocked<EmbeddableStart>; @@ -103,14 +99,12 @@ const createSetupContract = (): Setup => { registerReactEmbeddableFactory: jest.fn().mockImplementation(registerReactEmbeddableFactory), registerEmbeddableFactory: jest.fn(), registerEnhancement: jest.fn(), - setCustomEmbeddableFactoryProvider: jest.fn(), }; return setupContract; }; const createStartContract = (): Start => { const startContract: Start = { - reactEmbeddableRegistryHasKey: jest.fn().mockImplementation(reactEmbeddableRegistryHasKey), getEmbeddableFactories: jest.fn(), getEmbeddableFactory: jest.fn(), telemetry: jest.fn(), @@ -118,7 +112,6 @@ const createStartContract = (): Start => { inject: jest.fn(), getAllMigrations: jest.fn(), getStateTransfer: jest.fn(() => createEmbeddableStateTransferMock() as EmbeddableStateTransfer), - getAttributeService: jest.fn(), }; return startContract; }; diff --git a/src/plugins/embeddable/public/plugin.test.ts b/src/plugins/embeddable/public/plugin.test.ts index b51b7e7488a68..00a19f8e9f561 100644 --- a/src/plugins/embeddable/public/plugin.test.ts +++ b/src/plugins/embeddable/public/plugin.test.ts @@ -9,83 +9,6 @@ import { coreMock } from '@kbn/core/public/mocks'; import { testPlugin } from './tests/test_plugin'; -import { EmbeddableFactoryProvider } from './types'; -import { defaultEmbeddableFactoryProvider } from './lib'; -import { HelloWorldEmbeddable } from './tests/fixtures'; - -test('can set custom embeddable factory provider', async () => { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const { setup, doStart } = testPlugin(coreSetup, coreStart); - - const customProvider: EmbeddableFactoryProvider = (def) => ({ - ...defaultEmbeddableFactoryProvider(def), - getDisplayName: () => 'Intercepted!', - }); - - setup.setCustomEmbeddableFactoryProvider(customProvider); - setup.registerEmbeddableFactory('test', { - type: 'test', - latestVersion: '1.0.0', - create: () => Promise.resolve(undefined), - getDisplayName: () => 'Test', - isEditable: () => Promise.resolve(true), - }); - - const start = doStart(); - const factory = start.getEmbeddableFactory('test'); - expect(factory!.getDisplayName()).toEqual('Intercepted!'); -}); - -test('custom embeddable factory provider test for intercepting embeddable creation and destruction', async () => { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const { setup, doStart } = testPlugin(coreSetup, coreStart); - - let updateCount = 0; - const customProvider: EmbeddableFactoryProvider = (def) => { - return { - ...defaultEmbeddableFactoryProvider(def), - create: async (input, parent) => { - const embeddable = await defaultEmbeddableFactoryProvider(def).create(input, parent); - if (embeddable) { - const subscription = embeddable.getInput$().subscribe( - () => { - updateCount++; - }, - () => {}, - () => { - subscription.unsubscribe(); - updateCount = 0; - } - ); - } - return embeddable; - }, - }; - }; - - setup.setCustomEmbeddableFactoryProvider(customProvider); - setup.registerEmbeddableFactory('test', { - type: 'test', - latestVersion: '1.0.0', - create: (input, parent) => Promise.resolve(new HelloWorldEmbeddable(input, parent)), - getDisplayName: () => 'Test', - isEditable: () => Promise.resolve(true), - }); - - const start = doStart(); - const factory = start.getEmbeddableFactory('test'); - - const embeddable = await factory?.create({ id: '123' }); - embeddable!.updateInput({ title: 'boo' }); - // initial subscription, plus the second update. - expect(updateCount).toEqual(2); - - embeddable!.destroy(); - await new Promise((resolve) => process.nextTick(resolve)); - expect(updateCount).toEqual(0); -}); describe('embeddable factory', () => { const coreSetup = coreMock.createSetup(); diff --git a/src/plugins/embeddable/public/plugin.tsx b/src/plugins/embeddable/public/plugin.tsx index 801b518a0bd01..ef339e5bacc2c 100644 --- a/src/plugins/embeddable/public/plugin.tsx +++ b/src/plugins/embeddable/public/plugin.tsx @@ -27,7 +27,6 @@ import type { ContentManagementPublicStart } from '@kbn/content-management-plugi import type { SavedObjectTaggingOssPluginStart } from '@kbn/saved-objects-tagging-oss-plugin/public'; import { EmbeddableFactoryRegistry, - EmbeddableFactoryProvider, EnhancementsRegistry, EnhancementRegistryDefinition, EnhancementRegistryItem, @@ -39,12 +38,9 @@ import { EmbeddableOutput, defaultEmbeddableFactoryProvider, IEmbeddable, - SavedObjectEmbeddableInput, } from './lib'; import { EmbeddableFactoryDefinition } from './lib/embeddables/embeddable_factory_definition'; import { EmbeddableStateTransfer } from './lib/state_transfer'; -import { ATTRIBUTE_SERVICE_KEY, AttributeService } from './lib/attribute_service'; -import { AttributeServiceOptions } from './lib/attribute_service/attribute_service'; import { EmbeddableStateWithType, CommonEmbeddableStartContract } from '../common/types'; import { getExtractFunction, @@ -54,10 +50,7 @@ import { } from '../common/lib'; import { getAllMigrations } from '../common/lib/get_all_migrations'; import { setKibanaServices } from './kibana_services'; -import { - reactEmbeddableRegistryHasKey, - registerReactEmbeddableFactory, -} from './react_embeddable_system'; +import { registerReactEmbeddableFactory } from './react_embeddable_system'; import { registerAddFromLibraryType } from './add_from_library/registry'; export interface EmbeddableSetupDependencies { @@ -114,18 +107,9 @@ export interface EmbeddableSetup { * @deprecated */ registerEnhancement: (enhancement: EnhancementRegistryDefinition) => void; - /** - * @deprecated - */ - setCustomEmbeddableFactoryProvider: (customProvider: EmbeddableFactoryProvider) => void; } export interface EmbeddableStart extends PersistableStateService<EmbeddableStateWithType> { - /** - * Checks if a {@link ReactEmbeddableFactory} has been registered using {@link registerReactEmbeddableFactory} - */ - reactEmbeddableRegistryHasKey: (type: string) => boolean; - /** * @deprecated use {@link registerReactEmbeddableFactory} instead. */ @@ -142,26 +126,12 @@ export interface EmbeddableStart extends PersistableStateService<EmbeddableState */ getEmbeddableFactories: () => IterableIterator<EmbeddableFactory>; getStateTransfer: (storage?: Storage) => EmbeddableStateTransfer; - getAttributeService: < - A extends { title: string }, - V extends EmbeddableInput & { - [ATTRIBUTE_SERVICE_KEY]: A; - } = EmbeddableInput & { - [ATTRIBUTE_SERVICE_KEY]: A; - }, - R extends SavedObjectEmbeddableInput = SavedObjectEmbeddableInput, - M extends unknown = unknown - >( - type: string, - options: AttributeServiceOptions<A, M> - ) => AttributeService<A, V, R, M>; } export class EmbeddablePublicPlugin implements Plugin<EmbeddableSetup, EmbeddableStart> { private readonly embeddableFactoryDefinitions: Map<string, EmbeddableFactoryDefinition> = new Map(); private readonly embeddableFactories: EmbeddableFactoryRegistry = new Map(); private readonly enhancements: EnhancementsRegistry = new Map(); - private customEmbeddableFactoryProvider?: EmbeddableFactoryProvider; private stateTransferService: EmbeddableStateTransfer = {} as EmbeddableStateTransfer; private isRegistryReady = false; private appList?: ReadonlyMap<string, PublicAppInfo>; @@ -178,25 +148,12 @@ export class EmbeddablePublicPlugin implements Plugin<EmbeddableSetup, Embeddabl registerEmbeddableFactory: this.registerEmbeddableFactory, registerEnhancement: this.registerEnhancement, - setCustomEmbeddableFactoryProvider: (provider: EmbeddableFactoryProvider) => { - if (this.customEmbeddableFactoryProvider) { - throw new Error( - 'Custom embeddable factory provider is already set, and can only be set once' - ); - } - this.customEmbeddableFactoryProvider = provider; - }, }; } public start(core: CoreStart, deps: EmbeddableStartDependencies): EmbeddableStart { this.embeddableFactoryDefinitions.forEach((def) => { - this.embeddableFactories.set( - def.type, - this.customEmbeddableFactoryProvider - ? this.customEmbeddableFactoryProvider(def) - : defaultEmbeddableFactoryProvider(def) - ); + this.embeddableFactories.set(def.type, defaultEmbeddableFactoryProvider(def)); }); this.appListSubscription = core.application.applications$.subscribe((appList) => { @@ -224,12 +181,8 @@ export class EmbeddablePublicPlugin implements Plugin<EmbeddableSetup, Embeddabl ); const embeddableStart: EmbeddableStart = { - reactEmbeddableRegistryHasKey, - getEmbeddableFactory: this.getEmbeddableFactory, getEmbeddableFactories: this.getEmbeddableFactories, - getAttributeService: (type: string, options) => - new AttributeService(type, core.notifications.toasts, options, this.getEmbeddableFactory), getStateTransfer: (storage?: Storage) => storage ? new EmbeddableStateTransfer( @@ -339,12 +292,7 @@ export class EmbeddablePublicPlugin implements Plugin<EmbeddableSetup, Embeddabl if (!this.embeddableFactories.get(type)) { const def = this.embeddableFactoryDefinitions.get(type); if (!def) return; - this.embeddableFactories.set( - type, - this.customEmbeddableFactoryProvider - ? this.customEmbeddableFactoryProvider(def) - : defaultEmbeddableFactoryProvider(def) - ); + this.embeddableFactories.set(type, defaultEmbeddableFactoryProvider(def)); } }; } diff --git a/src/plugins/embeddable/public/react_embeddable_system/index.ts b/src/plugins/embeddable/public/react_embeddable_system/index.ts index d0bd95e32e10e..8b1b59da6767b 100644 --- a/src/plugins/embeddable/public/react_embeddable_system/index.ts +++ b/src/plugins/embeddable/public/react_embeddable_system/index.ts @@ -7,9 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { - reactEmbeddableRegistryHasKey, - registerReactEmbeddableFactory, -} from './react_embeddable_registry'; +export { registerReactEmbeddableFactory } from './react_embeddable_registry'; export { ReactEmbeddableRenderer } from './react_embeddable_renderer'; export type { DefaultEmbeddableApi, ReactEmbeddableFactory } from './types'; diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx index aa3e9b0e99675..43f8541fbab7f 100644 --- a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx @@ -9,7 +9,6 @@ import { registerReactEmbeddableFactory, - reactEmbeddableRegistryHasKey, getReactEmbeddableFactory, } from './react_embeddable_registry'; import { ReactEmbeddableFactory } from './types'; @@ -33,9 +32,4 @@ describe('react embeddable registry', () => { registerReactEmbeddableFactory('test', getTestEmbeddableFactory); expect(getReactEmbeddableFactory('test')).toEqual(returnedFactory); }); - - it('can check if a factory is registered', () => { - expect(reactEmbeddableRegistryHasKey('test')).toBe(true); - expect(reactEmbeddableRegistryHasKey('notRegistered')).toBe(false); - }); }); diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts index 0d007f85f7977..046b63d5531ab 100644 --- a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts @@ -40,8 +40,6 @@ export const registerReactEmbeddableFactory = < registry[type] = getFactory; }; -export const reactEmbeddableRegistryHasKey = (key: string) => registry[key] !== undefined; - export const getReactEmbeddableFactory = async < SerializedState extends object = object, RuntimeState extends object = SerializedState, diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx index a9c4821d71a53..2119e6de03a8a 100644 --- a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx @@ -18,7 +18,7 @@ import { import { PresentationPanel, PresentationPanelProps } from '@kbn/presentation-panel-plugin/public'; import { ComparatorDefinition, StateComparators } from '@kbn/presentation-publishing'; import React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react'; -import { BehaviorSubject, combineLatest, debounceTime, skip, Subscription, switchMap } from 'rxjs'; +import { BehaviorSubject, combineLatest, debounceTime, map, skip, Subscription } from 'rxjs'; import { v4 as generateId } from 'uuid'; import { getReactEmbeddableFactory } from './react_embeddable_registry'; import { @@ -142,15 +142,7 @@ export const ReactEmbeddableRenderer = < .pipe( skip(1), debounceTime(ON_STATE_CHANGE_DEBOUNCE), - switchMap(() => { - const isAsync = - apiRegistration.serializeState.prototype?.name === 'AsyncFunction'; - return isAsync - ? (apiRegistration.serializeState() as Promise< - SerializedPanelState<SerializedState> - >) - : Promise.resolve(apiRegistration.serializeState()); - }) + map(() => apiRegistration.serializeState()) ) .subscribe((nextSerializedState) => { onAnyStateChange(nextSerializedState); diff --git a/src/plugins/embeddable/public/store/create_store.test.ts b/src/plugins/embeddable/public/store/create_store.test.ts deleted file mode 100644 index 09413141d71c5..0000000000000 --- a/src/plugins/embeddable/public/store/create_store.test.ts +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -// eslint-disable-next-line max-classes-per-file -import { createAction, createReducer, createSlice, PayloadAction } from '@reduxjs/toolkit'; -import type { Store } from 'redux'; -import { - defaultEmbeddableFactoryProvider, - Container, - ContainerInput, - Embeddable, - EmbeddableInput, - EmbeddableOutput, -} from '../lib'; -import { createStore, State } from './create_store'; -import { input } from './input_slice'; -import { output } from './output_slice'; - -interface TestEmbeddableInput extends EmbeddableInput { - custom?: string; -} - -interface TestEmbeddableOutput extends EmbeddableOutput { - custom?: string; -} - -interface TestContainerInput extends ContainerInput { - custom?: string; -} - -class TestEmbeddable extends Embeddable<TestEmbeddableInput, TestEmbeddableOutput> { - type = 'test'; - reload = jest.fn(); - render = jest.fn(); -} - -class TestContainer extends Container<Partial<TestEmbeddableInput>, TestContainerInput> { - type = 'test'; - - getInheritedInput() { - return { - custom: this.input.custom, - }; - } -} - -describe('createStore', () => { - let embeddable: TestEmbeddable; - let store: Store<State<TestEmbeddable>>; - - beforeEach(() => { - embeddable = new TestEmbeddable({ id: '12345' }, { title: 'Test' }); - store = createStore(embeddable); - }); - - it('should populate the state with the embeddable input', () => { - expect(store.getState()).toHaveProperty('input', expect.objectContaining({ id: '12345' })); - }); - - it('should populate the state with the embeddable output', () => { - expect(store.getState()).toHaveProperty('output', expect.objectContaining({ title: 'Test' })); - }); - - it('should update the embeddable input on action dispatch', () => { - store.dispatch(input.actions.setTitle('Something')); - - expect(store.getState()).toHaveProperty('input.title', 'Something'); - }); - - it('should update the embeddable output on action dispatch', () => { - store.dispatch(output.actions.setTitle('Something')); - - expect(store.getState()).toHaveProperty('output.title', 'Something'); - }); - - it('should group input updates on multiple dispatch calls', async () => { - jest.spyOn(embeddable, 'updateInput'); - store.dispatch(input.actions.setTitle('Something')); - store.dispatch(input.actions.setHidePanelTitles(true)); - await new Promise((resolve) => setTimeout(resolve)); - - expect(embeddable.updateInput).toHaveBeenCalledTimes(1); - expect(embeddable.updateInput).nthCalledWith( - 1, - expect.objectContaining({ title: 'Something', hidePanelTitles: true }) - ); - }); - - it('should group output updates on multiple dispatch calls', async () => { - jest.spyOn(embeddable, 'updateOutput'); - store.dispatch(output.actions.setTitle('Something')); - store.dispatch(output.actions.setLoading(true)); - await new Promise((resolve) => setTimeout(resolve)); - - expect(embeddable.updateOutput).toHaveBeenCalledTimes(1); - expect(embeddable.updateOutput).nthCalledWith( - 1, - expect.objectContaining({ title: 'Something', loading: true }) - ); - }); - - it('should not update input on output changes', async () => { - jest.spyOn(embeddable, 'updateInput'); - store.dispatch(output.actions.setTitle('Something')); - await new Promise((resolve) => setTimeout(resolve)); - - expect(embeddable.updateInput).not.toHaveBeenCalled(); - }); - - it('should sync input changes', () => { - jest.spyOn(embeddable, 'updateInput'); - embeddable.updateInput({ title: 'Something' }); - - expect(embeddable.updateInput).toHaveBeenCalledTimes(1); - expect(store.getState()).toHaveProperty('input.title', 'Something'); - }); - - it('should sync output changes', () => { - jest.spyOn(embeddable, 'updateOutput'); - embeddable.updateOutput({ title: 'Something' }); - - expect(embeddable.updateOutput).toHaveBeenCalledTimes(1); - expect(store.getState()).toHaveProperty('output.title', 'Something'); - }); - - it('should provide a way to use a custom reducer', async () => { - const setCustom = createAction<string>('custom'); - const customStore = createStore(embeddable, { - reducer: { - input: createReducer({} as TestEmbeddableInput, (builder) => - builder.addCase(setCustom, (state, action) => ({ ...state, custom: action.payload })) - ), - }, - }); - - jest.spyOn(embeddable, 'updateInput'); - customStore.dispatch(input.actions.setTitle('Something')); - customStore.dispatch(setCustom('Something else')); - await new Promise((resolve) => setTimeout(resolve)); - - expect(embeddable.updateInput).toHaveBeenCalledWith( - expect.objectContaining({ custom: 'Something else', title: 'Something' }) - ); - }); - - it('should provide a way to use a custom slice', async () => { - const slice = createSlice({ - name: 'test', - initialState: {} as State<TestEmbeddable>, - reducers: { - setCustom(state, action: PayloadAction<TestEmbeddableInput['custom']>) { - state.input.custom = action.payload; - state.output.custom = action.payload; - }, - }, - }); - const customStore = createStore(embeddable, { reducer: slice.reducer }); - - jest.spyOn(embeddable, 'updateInput'); - jest.spyOn(embeddable, 'updateOutput'); - customStore.dispatch(input.actions.setTitle('Something')); - customStore.dispatch(slice.actions.setCustom('Something else')); - await new Promise((resolve) => setTimeout(resolve)); - - expect(embeddable.updateInput).toHaveBeenCalledWith( - expect.objectContaining({ custom: 'Something else', title: 'Something' }) - ); - expect(embeddable.updateOutput).toHaveBeenCalledWith( - expect.objectContaining({ custom: 'Something else' }) - ); - }); - - describe('of a nested embeddable', () => { - const factory = defaultEmbeddableFactoryProvider< - TestEmbeddableInput, - TestEmbeddableOutput, - TestEmbeddable - >({ - type: 'test', - getDisplayName: () => 'Test', - isEditable: async () => true, - create: async (data, parent) => new TestEmbeddable(data, {}, parent), - }); - const getFactory = jest.fn().mockReturnValue(factory); - - let container: TestContainer; - - beforeEach(async () => { - container = new TestContainer( - { custom: 'something', id: 'id', panels: {} }, - { embeddableLoaded: {} }, - getFactory - ); - embeddable = (await container.addNewEmbeddable('test', { id: '12345' })) as TestEmbeddable; - store = createStore(embeddable); - }); - - it('should populate inherited input', () => { - expect(store.getState()).toHaveProperty('input.custom', 'something'); - }); - - it('should override inherited input on dispatch', async () => { - store.dispatch( - input.actions.update({ custom: 'something else' } as Partial<TestEmbeddableInput>) - ); - await new Promise((resolve) => setTimeout(resolve)); - - expect(store.getState()).toHaveProperty('input.custom', 'something else'); - expect(container.getInput()).not.toHaveProperty('input.custom'); - }); - - it('should restore value from the inherited input', async () => { - store.dispatch( - input.actions.update({ custom: 'something else' } as Partial<TestEmbeddableInput>) - ); - await new Promise((resolve) => setTimeout(resolve)); - store.dispatch(input.actions.update({ custom: undefined } as Partial<TestEmbeddableInput>)); - await new Promise((resolve) => setTimeout(resolve)); - - expect(store.getState()).toHaveProperty('input.custom', 'something'); - }); - - it('should not override inherited input on dispatch', async () => { - store.dispatch(input.actions.setTitle('Something')); - await new Promise((resolve) => setTimeout(resolve)); - container.updateInput({ custom: 'something else' }); - - expect(store.getState()).toHaveProperty( - 'input', - expect.objectContaining({ - title: 'Something', - custom: 'something else', - }) - ); - }); - }); -}); diff --git a/src/plugins/embeddable/public/store/create_store.ts b/src/plugins/embeddable/public/store/create_store.ts deleted file mode 100644 index a7b465a3c6db9..0000000000000 --- a/src/plugins/embeddable/public/store/create_store.ts +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { chain, isEmpty, keys } from 'lodash'; -import { combineReducers, Reducer, Store, ReducersMapObject } from 'redux'; -import { configureStore, ConfigureStoreOptions } from '@reduxjs/toolkit'; -import { - debounceTime, - distinctUntilChanged, - filter, - last, - map, - pluck, - share, - takeUntil, - Observable, -} from 'rxjs'; -import reduceReducers from 'reduce-reducers'; -import type { Optional } from 'utility-types'; -import type { IEmbeddable } from '../lib'; -import { input } from './input_slice'; -import { output } from './output_slice'; - -export interface State<E extends IEmbeddable = IEmbeddable> { - input: E extends IEmbeddable<infer I, infer O> ? I : never; - output: E extends IEmbeddable<infer I, infer O> ? O : never; -} - -export interface CreateStoreOptions<S extends State> - extends Omit<ConfigureStoreOptions<S>, 'reducer'> { - reducer?: Reducer<S> | Optional<ReducersMapObject<S>, keyof State>; -} - -function createReducer<S extends State>( - reducer?: CreateStoreOptions<S>['reducer'] -): Reducer<S> | ReducersMapObject<S> { - if (reducer instanceof Function) { - const generic = combineReducers<Pick<S, keyof State>>({ - input: input.reducer, - output: output.reducer, - }) as Reducer<S>; - - return reduceReducers(generic, reducer) as Reducer<S>; - } - - return { - ...(reducer ?? {}), - input: reducer?.input ? reduceReducers(input.reducer, reducer.input) : input.reducer, - output: reducer?.output ? reduceReducers(output.reducer, reducer.output) : output.reducer, - } as ReducersMapObject<S>; -} - -function diff<T extends Record<keyof any, any>>(previous: T, current: T) { - return chain(current) - .keys() - .concat(keys(previous)) - .uniq() - .filter((key) => previous[key] !== current[key]) - .map((key) => [key, current[key]]) - .fromPairs() - .value() as Partial<T>; -} - -/** - * Creates a Redux store for the given embeddable. - * @param embeddable The embeddable instance. - * @param options The custom options to pass to the `configureStore` call. - * @returns The Redux store. - */ -export function createStore<E extends IEmbeddable = IEmbeddable, S extends State<E> = State<E>>( - embeddable: E, - { preloadedState, reducer, ...options }: CreateStoreOptions<S> = {} -): Store<S> { - const store = configureStore({ - ...options, - preloadedState: { - input: embeddable.getInput(), - output: embeddable.getOutput(), - ...(preloadedState ?? {}), - } as NonNullable<typeof preloadedState>, - reducer: createReducer(reducer), - }); - - const state$ = new Observable<S>((subscriber) => { - subscriber.add(store.subscribe(() => subscriber.next(store.getState()))); - }).pipe(share()); - const input$ = embeddable.getInput$(); - const output$ = embeddable.getOutput$(); - - state$ - .pipe( - takeUntil(input$.pipe(last())), - pluck('input'), - distinctUntilChanged(), - map((value) => diff(embeddable.getInput(), value)), - filter((patch) => !isEmpty(patch)), - debounceTime(0) - ) - .subscribe((patch) => embeddable.updateInput(patch)); - - state$ - .pipe( - takeUntil(output$.pipe(last())), - pluck('output'), - distinctUntilChanged(), - map((value) => diff(embeddable.getOutput(), value)), - filter((patch) => !isEmpty(patch)), - debounceTime(0) - ) - .subscribe((patch) => embeddable.updateOutput(patch)); - - input$ - .pipe( - map((value) => diff(store.getState().input, value)), - filter((patch) => !isEmpty(patch)) - ) - .subscribe((patch) => store.dispatch(input.actions.update(patch))); - - output$ - .pipe( - map((value) => diff(store.getState().output, value)), - filter((patch) => !isEmpty(patch)) - ) - .subscribe((patch) => store.dispatch(output.actions.update(patch))); - - return store; -} diff --git a/src/plugins/embeddable/public/store/index.ts b/src/plugins/embeddable/public/store/index.ts deleted file mode 100644 index eb75831b90bef..0000000000000 --- a/src/plugins/embeddable/public/store/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { input } from './input_slice'; -import { output } from './output_slice'; - -export type { CreateStoreOptions, State } from './create_store'; -export { createStore } from './create_store'; -export const actions = { - input: input.actions, - output: output.actions, -}; diff --git a/src/plugins/embeddable/public/store/input_slice.ts b/src/plugins/embeddable/public/store/input_slice.ts deleted file mode 100644 index 3b3cf8b8ee588..0000000000000 --- a/src/plugins/embeddable/public/store/input_slice.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import type { EmbeddableInput } from '../lib'; - -export const input = createSlice({ - name: 'input', - initialState: {} as EmbeddableInput, - reducers: { - setDisabledActions(state, action: PayloadAction<EmbeddableInput['disabledActions']>) { - state.disabledActions = action.payload; - }, - setDisableTriggers(state, action: PayloadAction<EmbeddableInput['disableTriggers']>) { - state.disableTriggers = action.payload; - }, - setEnhancements(state, action: PayloadAction<EmbeddableInput['enhancements']>) { - state.enhancements = action.payload; - }, - setExecutionContext(state, action: PayloadAction<EmbeddableInput['executionContext']>) { - state.executionContext = action.payload; - }, - setHidePanelTitles(state, action: PayloadAction<EmbeddableInput['hidePanelTitles']>) { - state.hidePanelTitles = action.payload; - }, - setLastReloadRequestTime( - state, - action: PayloadAction<EmbeddableInput['lastReloadRequestTime']> - ) { - state.lastReloadRequestTime = action.payload; - }, - setSearchSessionId(state, action: PayloadAction<EmbeddableInput['searchSessionId']>) { - state.searchSessionId = action.payload; - }, - setSyncColors(state, action: PayloadAction<EmbeddableInput['syncColors']>) { - state.syncColors = action.payload; - }, - setSyncCursor(state, action: PayloadAction<EmbeddableInput['syncCursor']>) { - state.syncCursor = action.payload; - }, - setSyncTooltips(state, action: PayloadAction<EmbeddableInput['syncTooltips']>) { - state.syncTooltips = action.payload; - }, - setTitle(state, action: PayloadAction<EmbeddableInput['title']>) { - state.title = action.payload; - }, - setViewMode(state, action: PayloadAction<EmbeddableInput['viewMode']>) { - state.viewMode = action.payload; - }, - update(state, action: PayloadAction<Partial<EmbeddableInput>>) { - return { ...state, ...action.payload }; - }, - }, -}); diff --git a/src/plugins/embeddable/public/store/output_slice.ts b/src/plugins/embeddable/public/store/output_slice.ts deleted file mode 100644 index df53053d0e4a0..0000000000000 --- a/src/plugins/embeddable/public/store/output_slice.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import type { EmbeddableOutput } from '../lib'; - -export const output = createSlice({ - name: 'output', - initialState: {} as EmbeddableOutput, - reducers: { - setLoading(state, action: PayloadAction<EmbeddableOutput['loading']>) { - state.loading = action.payload; - }, - setRendered(state, action: PayloadAction<EmbeddableOutput['rendered']>) { - state.rendered = action.payload; - }, - setError(state, action: PayloadAction<EmbeddableOutput['error']>) { - state.error = action.payload; - }, - setEditUrl(state, action: PayloadAction<EmbeddableOutput['editUrl']>) { - state.editUrl = action.payload; - }, - setEditApp(state, action: PayloadAction<EmbeddableOutput['editApp']>) { - state.editApp = action.payload; - }, - setEditPath(state, action: PayloadAction<EmbeddableOutput['editPath']>) { - state.editPath = action.payload; - }, - setDefaultTitle(state, action: PayloadAction<EmbeddableOutput['defaultTitle']>) { - state.defaultTitle = action.payload; - }, - setTitle(state, action: PayloadAction<EmbeddableOutput['title']>) { - state.title = action.payload; - }, - setEditable(state, action: PayloadAction<EmbeddableOutput['editable']>) { - state.editable = action.payload; - }, - setSavedObjectId(state, action: PayloadAction<EmbeddableOutput['savedObjectId']>) { - state.savedObjectId = action.payload; - }, - update(state, action: PayloadAction<Partial<EmbeddableOutput>>) { - return { ...state, ...action.payload }; - }, - }, -}); diff --git a/src/plugins/embeddable/public/tests/container.test.ts b/src/plugins/embeddable/public/tests/container.test.ts deleted file mode 100644 index 1209f54fb8866..0000000000000 --- a/src/plugins/embeddable/public/tests/container.test.ts +++ /dev/null @@ -1,817 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { coreMock } from '@kbn/core/public/mocks'; -import * as Rx from 'rxjs'; -import { skip } from 'rxjs'; -import { EmbeddableOutput, isErrorEmbeddable, SavedObjectEmbeddableInput, ViewMode } from '../lib'; -import { ERROR_EMBEDDABLE_TYPE } from '../lib/embeddables/error_embeddable'; -import { - ContactCardEmbeddable, - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput, -} from '../lib/test_samples/embeddables/contact_card/contact_card_embeddable'; -import { CONTACT_CARD_EMBEDDABLE } from '../lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory'; -import { SlowContactCardEmbeddableFactory } from '../lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory'; -import { - FilterableContainer, - FilterableContainerInput, -} from '../lib/test_samples/embeddables/filterable_container'; -import { - FilterableEmbeddable, - FilterableEmbeddableInput, - FILTERABLE_EMBEDDABLE, - MockFilter, -} from '../lib/test_samples/embeddables/filterable_embeddable'; -import { HelloWorldContainer } from '../lib/test_samples/embeddables/hello_world_container'; -import { HelloWorldEmbeddableFactoryDefinition, HELLO_WORLD_EMBEDDABLE } from './fixtures'; -import { createHelloWorldContainerAndEmbeddable, of } from './helpers'; -import { testPlugin } from './test_plugin'; - -describe('container initialization', () => { - const panels = { - '123': { - explicitInput: { id: '123' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - '456': { - explicitInput: { id: '456' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - '789': { - explicitInput: { id: '789' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }; - - const expectEmbeddableLoaded = (container: HelloWorldContainer, id: string) => { - expect(container.getOutput().embeddableLoaded['123']).toBe(true); - const embeddable = container.getChild<ContactCardEmbeddable>('123'); - expect(embeddable).toBeDefined(); - expect(embeddable.id).toBe('123'); - }; - - it('initializes embeddables', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels, - }); - - expectEmbeddableLoaded(container, '123'); - expectEmbeddableLoaded(container, '456'); - expectEmbeddableLoaded(container, '789'); - }); - - it('initializes embeddables once and only once with multiple input updates', async () => { - const { container, contactCardCreateSpy } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels, - }); - container.updateInput({ lastReloadRequestTime: 1 }); - container.updateInput({ lastReloadRequestTime: 2 }); - expect(contactCardCreateSpy).toHaveBeenCalledTimes(4); - }); - - it('initializes embeddables in order', async () => { - const childIdInitializeOrder = ['456', '123', '789']; - const { contactCardCreateSpy } = await createHelloWorldContainerAndEmbeddable( - { - id: 'hello', - panels, - }, - {}, - { childIdInitializeOrder } - ); - - await new Promise((r) => setTimeout(r, 1)); - for (const [index, orderedId] of childIdInitializeOrder.entries()) { - expect(contactCardCreateSpy).toHaveBeenNthCalledWith( - index + 1, - expect.objectContaining({ id: orderedId }), - expect.anything() // parent passed into create method - ); - } - }); - - it('initializes embeddables in order with partial order arg', async () => { - const childIdInitializeOrder = ['789', 'idontexist']; - const { contactCardCreateSpy } = await createHelloWorldContainerAndEmbeddable( - { - id: 'hello', - panels, - }, - {}, - { childIdInitializeOrder } - ); - const expectedInitializeOrder = ['789', '123', '456']; - - await new Promise((r) => setTimeout(r, 1)); - for (const [index, orderedId] of expectedInitializeOrder.entries()) { - expect(contactCardCreateSpy).toHaveBeenNthCalledWith( - index + 1, - expect.objectContaining({ id: orderedId }), - expect.anything() // parent passed into create method - ); - } - }); - - it('initializes embeddables in order, awaiting each', async () => { - const childIdInitializeOrder = ['456', '123', '789']; - const { container, contactCardCreateSpy } = await createHelloWorldContainerAndEmbeddable( - { - id: 'hello', - panels, - }, - {}, - { childIdInitializeOrder, initializeSequentially: true } - ); - - const untilEmbeddableLoadedMock = jest.spyOn(container, 'untilEmbeddableLoaded'); - - await new Promise((r) => setTimeout(r, 10)); - - for (const [index, orderedId] of childIdInitializeOrder.entries()) { - await container.untilEmbeddableLoaded(orderedId); - expect(contactCardCreateSpy).toHaveBeenNthCalledWith( - index + 1, - expect.objectContaining({ id: orderedId }), - expect.anything() // parent passed into create method - ); - expect(untilEmbeddableLoadedMock).toHaveBeenCalledWith(orderedId); - } - }); -}); - -test('Container.addNewEmbeddable', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {} }, - { - firstName: 'Susy', - } - ); - expect(embeddable).toBeDefined(); - - if (!isErrorEmbeddable(embeddable)) { - expect(embeddable.getInput().firstName).toBe('Susy'); - } else { - expect(false).toBe(true); - } - - const embeddableInContainer = container.getChild<ContactCardEmbeddable>(embeddable.id); - expect(embeddableInContainer).toBeDefined(); - expect(embeddableInContainer.id).toBe(embeddable.id); -}); - -test('Container.removeEmbeddable removes and cleans up', async () => { - const { start } = await createHelloWorldContainerAndEmbeddable(); - - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - explicitInput: { id: '123', firstName: 'Sam', lastName: 'Tarley' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - const embeddable = await container.addNewEmbeddable< - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput, - ContactCardEmbeddable - >(CONTACT_CARD_EMBEDDABLE, { - firstName: 'Susy', - lastName: 'Q', - }); - - if (isErrorEmbeddable(embeddable)) { - expect(false).toBe(true); - return; - } - - embeddable.updateInput({ lastName: 'Z' }); - - container - .getOutput$() - .pipe(skip(1)) - .subscribe(() => { - const noFind = container.getChild<ContactCardEmbeddable>(embeddable.id); - expect(noFind).toBeUndefined(); - - expect(container.getInput().panels[embeddable.id]).toBeUndefined(); - if (isErrorEmbeddable(embeddable)) { - expect(false).toBe(true); - } - - expect(() => embeddable.updateInput({ nameTitle: 'Sir' })).toThrowError(); - expect(container.getOutput().embeddableLoaded[embeddable.id]).toBeUndefined(); - }); - - container.removeEmbeddable(embeddable.id); -}); - -test('Container.input$ is notified when child embeddable input is updated', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {} }, - { - firstName: 'Susy', - lastName: 'Q', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const changes = jest.fn(); - - expect(changes).toHaveBeenCalledTimes(0); - - const subscription = container.getInput$().subscribe(changes); - - expect(changes).toHaveBeenCalledTimes(1); - - embeddable.updateInput({ lastName: 'Z' }); - - expect(changes).toHaveBeenCalledTimes(2); - - expect(embeddable.getInput().lastName === 'Z'); - - embeddable.updateInput({ lastName: embeddable.getOutput().originalLastName }); - - expect(embeddable.getInput().lastName === 'Q'); - - expect(changes).toBeCalledTimes(3); - - subscription.unsubscribe(); - - embeddable.updateInput({ nameTitle: 'Dr.' }); - - expect(changes).toBeCalledTimes(3); -}); - -test('Container.input$', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {} }, - { - firstName: 'Susy', - id: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const changes = jest.fn(); - const input = container.getInput(); - expect(input.panels[embeddable.id].explicitInput).toEqual({ firstName: 'Susy', id: 'Susy' }); - - const subscription = container.getInput$().subscribe(changes); - embeddable.updateInput({ nameTitle: 'Dr.' }); - expect(container.getInput().panels[embeddable.id].explicitInput).toEqual({ - nameTitle: 'Dr.', - firstName: 'Susy', - id: 'Susy', - }); - subscription.unsubscribe(); -}); - -test('Container.getInput$ not triggered if state is the same', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {} }, - { - firstName: 'Susy', - id: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const changes = jest.fn(); - const input = container.getInput(); - expect(input.panels[embeddable.id].explicitInput).toEqual({ - id: 'Susy', - firstName: 'Susy', - }); - const subscription = container.getInput$().subscribe(changes); - embeddable.updateInput({ nameTitle: 'Dr.' }); - expect(changes).toBeCalledTimes(2); - embeddable.updateInput({ nameTitle: 'Dr.' }); - expect(changes).toBeCalledTimes(2); - subscription.unsubscribe(); -}); - -test('Container view mode change propagates to children', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {}, viewMode: ViewMode.VIEW }, - { - firstName: 'Susy', - id: 'Susy', - } - ); - - expect(embeddable.getInput().viewMode).toBe(ViewMode.VIEW); - - container.updateInput({ viewMode: ViewMode.EDIT }); - - expect(embeddable.getInput().viewMode).toBe(ViewMode.EDIT); -}); - -test(`Container updates its state when a child's input is updated`, async () => { - const { container, embeddable, start } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {}, viewMode: ViewMode.VIEW }, - { - id: '123', - firstName: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const containerSubscription = Rx.merge(container.getInput$(), container.getOutput$()).subscribe( - () => { - const child = container.getChild<ContactCardEmbeddable>(embeddable.id); - if ( - container.getOutput().embeddableLoaded[embeddable.id] && - child.getInput().nameTitle === 'Dr.' - ) { - containerSubscription.unsubscribe(); - - // Make sure a brand new container built off the output of container also creates an embeddable - // with "Dr.", not the default the embeddable was first added with. Makes sure changed input - // is preserved with the container. - const containerClone = new HelloWorldContainer(container.getInput(), { - getEmbeddableFactory: start.getEmbeddableFactory, - }); - const cloneSubscription = Rx.merge( - containerClone.getOutput$(), - containerClone.getInput$() - ).subscribe(() => { - const childClone = containerClone.getChild<ContactCardEmbeddable>(embeddable.id); - - if ( - containerClone.getOutput().embeddableLoaded[embeddable.id] && - childClone.getInput().nameTitle === 'Dr.' - ) { - cloneSubscription.unsubscribe(); - } - }); - } - } - ); - - embeddable.updateInput({ nameTitle: 'Dr.' }); -}); - -test(`Derived container state passed to children`, async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {}, viewMode: ViewMode.VIEW }, - { - firstName: 'Susy', - } - ); - - let subscription = embeddable - .getInput$() - .pipe(skip(1)) - .subscribe((changes: Partial<ContactCardEmbeddableInput>) => { - expect(changes.viewMode).toBe(ViewMode.EDIT); - }); - container.updateInput({ viewMode: ViewMode.EDIT }); - - subscription.unsubscribe(); - subscription = embeddable - .getInput$() - .pipe(skip(1)) - .subscribe((changes: Partial<ContactCardEmbeddableInput>) => { - expect(changes.viewMode).toBe(ViewMode.VIEW); - }); - container.updateInput({ viewMode: ViewMode.VIEW }); - subscription.unsubscribe(); -}); - -test(`Can subscribe to children embeddable updates`, async () => { - const { embeddable } = await createHelloWorldContainerAndEmbeddable( - { - id: 'hello container', - panels: {}, - viewMode: ViewMode.VIEW, - }, - { - firstName: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const subscription = embeddable.getInput$().subscribe((input: ContactCardEmbeddableInput) => { - if (input.nameTitle === 'Dr.') { - subscription.unsubscribe(); - } - }); - embeddable.updateInput({ nameTitle: 'Dr.' }); -}); - -test('Test nested reactions', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {}, viewMode: ViewMode.VIEW }, - { - firstName: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const containerSubscription = container.getInput$().subscribe((input: any) => { - const embeddableNameTitle = embeddable.getInput().nameTitle; - const viewMode = input.viewMode; - const nameTitleFromContainer = container.getInputForChild<ContactCardEmbeddableInput>( - embeddable.id - ).nameTitle; - if ( - embeddableNameTitle === 'Dr.' && - nameTitleFromContainer === 'Dr.' && - viewMode === ViewMode.EDIT - ) { - containerSubscription.unsubscribe(); - embeddableSubscription.unsubscribe(); - } - }); - - const embeddableSubscription = embeddable.getInput$().subscribe(() => { - if (embeddable.getInput().nameTitle === 'Dr.') { - container.updateInput({ viewMode: ViewMode.EDIT }); - } - }); - - embeddable.updateInput({ nameTitle: 'Dr.' }); -}); - -test('Explicit embeddable input mapped to undefined will default to inherited', async () => { - const { start } = await createHelloWorldContainerAndEmbeddable(); - const derivedFilter: MockFilter = { - $state: { store: 'appState' }, - meta: { disabled: false, alias: 'name', negate: false }, - query: { match: {} }, - }; - const container = new FilterableContainer( - { id: 'hello', panels: {}, filters: [derivedFilter] }, - start.getEmbeddableFactory - ); - const embeddable = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - embeddable.updateInput({ filters: [] }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([]); - - embeddable.updateInput({ filters: undefined }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([ - derivedFilter, - ]); -}); - -test('Explicit embeddable input mapped to undefined with no inherited value will get passed to embeddable', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ id: 'hello', panels: {} }); - - const embeddable = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - embeddable.updateInput({ filters: [] }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([]); - - const subscription = embeddable - .getInput$() - .pipe(skip(1)) - .subscribe(() => { - if (embeddable.getInput().filters === undefined) { - subscription.unsubscribe(); - } - }); - - embeddable.updateInput({ filters: undefined }); -}); - -test('Panel removed from input state', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: {}, - }); - - const embeddable = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - const filteredPanels = { ...container.getInput().panels }; - delete filteredPanels[embeddable.id]; - const newInput: Partial<FilterableContainerInput> = { - ...container.getInput(), - panels: filteredPanels, - }; - - container.updateInput(newInput); - await new Promise((r) => setTimeout(r, 1)); - - expect(container.getChild(embeddable.id)).toBeUndefined(); - expect(container.getOutput().embeddableLoaded[embeddable.id]).toBeUndefined(); -}); - -test('Panel added to input state', async () => { - const { container, start } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: {}, - }); - - const embeddable = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - const embeddable2 = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - const container2 = new FilterableContainer( - { id: 'hello', panels: {}, filters: [] }, - start.getEmbeddableFactory - ); - - container2.updateInput(container.getInput()); - await new Promise((r) => setTimeout(r, 1)); - - expect(container.getChild(embeddable.id)).toBeDefined(); - expect(container.getOutput().embeddableLoaded[embeddable.id]).toBe(true); - expect(container.getChild(embeddable2.id)).toBeDefined(); - expect(container.getOutput().embeddableLoaded[embeddable2.id]).toBe(true); -}); - -test('Container changes made directly after adding a new embeddable are propagated', async () => { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const { setup, doStart, uiActions } = testPlugin(coreSetup, coreStart); - - const factory = new SlowContactCardEmbeddableFactory({ - loadTickCount: 3, - execAction: uiActions.executeTriggerActions, - }); - setup.registerEmbeddableFactory(factory.type, factory); - - const start = doStart(); - - const container = new HelloWorldContainer( - { - id: 'hello', - panels: {}, - viewMode: ViewMode.EDIT, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - const subscription = Rx.merge(container.getOutput$(), container.getInput$()) - .pipe(skip(2)) - .subscribe(() => { - expect(Object.keys(container.getOutput().embeddableLoaded).length).toBe(1); - if (Object.keys(container.getOutput().embeddableLoaded).length > 0) { - const embeddableId = Object.keys(container.getOutput().embeddableLoaded)[0]; - - if (container.getOutput().embeddableLoaded[embeddableId] === true) { - const embeddable = container.getChild(embeddableId); - if (embeddable.getInput().viewMode === ViewMode.VIEW) { - subscription.unsubscribe(); - } - } - } - }); - - container.addNewEmbeddable<ContactCardEmbeddableInput>(CONTACT_CARD_EMBEDDABLE, { - firstName: 'A girl', - lastName: 'has no name', - }); - - container.updateInput({ viewMode: ViewMode.VIEW }); -}); - -test('container stores ErrorEmbeddables when a factory for a child cannot be found (so the panel can be removed)', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: { - '123': { - type: 'IDontExist', - explicitInput: { id: '123' }, - }, - }, - viewMode: ViewMode.EDIT, - }); - - container.getOutput$().subscribe(() => { - if (container.getOutput().embeddableLoaded['123']) { - const child = container.getChild('123'); - expect(child.type).toBe(ERROR_EMBEDDABLE_TYPE); - } - }); -}); - -test('container stores ErrorEmbeddables when a saved object cannot be found', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: { - '123': { - type: 'vis', - explicitInput: { id: '123', savedObjectId: '456' } as SavedObjectEmbeddableInput, - }, - }, - viewMode: ViewMode.EDIT, - }); - - container.getOutput$().subscribe(() => { - if (container.getOutput().embeddableLoaded['123']) { - const child = container.getChild('123'); - expect(child.type).toBe(ERROR_EMBEDDABLE_TYPE); - } - }); -}); - -test('ErrorEmbeddables get updated when parent does', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: { - '123': { - type: 'vis', - explicitInput: { id: '123', savedObjectId: '456' } as SavedObjectEmbeddableInput, - }, - }, - viewMode: ViewMode.EDIT, - }); - - container.getOutput$().subscribe(() => { - if (container.getOutput().embeddableLoaded['123']) { - const embeddable = container.getChild('123'); - - expect(embeddable.getInput().viewMode).toBe(ViewMode.EDIT); - - container.updateInput({ viewMode: ViewMode.VIEW }); - - expect(embeddable.getInput().viewMode).toBe(ViewMode.VIEW); - } - }); -}); - -test('untilEmbeddableLoaded() throws an error if there is no such child panel in the container', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: {}, - }); - - expect(container.untilEmbeddableLoaded('idontexist')).rejects.toThrowError(); -}); - -test('untilEmbeddableLoaded() throws an error if there is no such child panel in the container - 2', async () => { - const { doStart } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - const start = doStart(); - const container = new HelloWorldContainer( - { - id: 'hello', - panels: {}, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - const [, error] = await of(container.untilEmbeddableLoaded('123')); - expect(error).toBeInstanceOf(Error); - expect((error as Error).message).toMatchInlineSnapshot(`"Panel not found"`); -}); - -test('untilEmbeddableLoaded() resolves if child is loaded in the container', async () => { - const { setup, doStart } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - const factory = new HelloWorldEmbeddableFactoryDefinition(); - setup.registerEmbeddableFactory(factory.type, factory); - const start = doStart(); - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - type: HELLO_WORLD_EMBEDDABLE, - explicitInput: { id: '123' }, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - const child = await container.untilEmbeddableLoaded('123'); - expect(child).toBeDefined(); - expect(child.type).toBe(HELLO_WORLD_EMBEDDABLE); -}); - -test('untilEmbeddableLoaded resolves with undefined if child is subsequently removed', async () => { - const { doStart, setup, uiActions } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - const factory = new SlowContactCardEmbeddableFactory({ - loadTickCount: 3, - execAction: uiActions.executeTriggerActions, - }); - setup.registerEmbeddableFactory(factory.type, factory); - - const start = doStart(); - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - explicitInput: { id: '123', firstName: 'Sam', lastName: 'Tarley' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - container.untilEmbeddableLoaded('123').then((embed) => { - expect(embed).toBeUndefined(); - }); - - container.updateInput({ panels: {} }); -}); - -test('adding a panel then subsequently removing it before its loaded removes the panel', (done) => { - const { doStart, uiActions, setup } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - const factory = new SlowContactCardEmbeddableFactory({ - loadTickCount: 1, - execAction: uiActions.executeTriggerActions, - }); - setup.registerEmbeddableFactory(factory.type, factory); - const start = doStart(); - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - explicitInput: { id: '123', firstName: 'Sam', lastName: 'Tarley' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - // Final state should be that the panel is removed. - Rx.merge(container.getInput$(), container.getOutput$()).subscribe(() => { - if ( - container.getInput().panels['123'] === undefined && - container.getOutput().embeddableLoaded['123'] === undefined && - container.getInput().panels['456'] !== undefined && - container.getOutput().embeddableLoaded['456'] === true - ) { - done(); - } - }); - - container.updateInput({ panels: {} }); - - container.updateInput({ - panels: { - '456': { - explicitInput: { id: '456' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }); -}); diff --git a/src/plugins/embeddable/public/tests/explicit_input.test.ts b/src/plugins/embeddable/public/tests/explicit_input.test.ts deleted file mode 100644 index 60ed8378b4f8f..0000000000000 --- a/src/plugins/embeddable/public/tests/explicit_input.test.ts +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { skip } from 'rxjs'; -import { testPlugin } from './test_plugin'; -import { - MockFilter, - FILTERABLE_EMBEDDABLE, - FilterableEmbeddableInput, -} from '../lib/test_samples/embeddables/filterable_embeddable'; -import { FilterableEmbeddableFactory } from '../lib/test_samples/embeddables/filterable_embeddable_factory'; -import { CONTACT_CARD_EMBEDDABLE } from '../lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory'; -import { SlowContactCardEmbeddableFactory } from '../lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory'; -import { HELLO_WORLD_EMBEDDABLE, HelloWorldEmbeddableFactoryDefinition } from './fixtures'; -import { FilterableContainer } from '../lib/test_samples/embeddables/filterable_container'; -import { isErrorEmbeddable } from '../lib'; -import { HelloWorldContainer } from '../lib/test_samples/embeddables/hello_world_container'; -import { coreMock } from '@kbn/core/public/mocks'; - -const { setup, doStart, uiActions } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - -setup.registerEmbeddableFactory(FILTERABLE_EMBEDDABLE, new FilterableEmbeddableFactory()); -const factory = new SlowContactCardEmbeddableFactory({ - loadTickCount: 2, - execAction: uiActions.executeTriggerActions, -}); -setup.registerEmbeddableFactory(CONTACT_CARD_EMBEDDABLE, factory); -setup.registerEmbeddableFactory( - HELLO_WORLD_EMBEDDABLE, - new HelloWorldEmbeddableFactoryDefinition() -); - -const start = doStart(); - -test('Explicit embeddable input mapped to undefined will default to inherited', async () => { - const derivedFilter: MockFilter = { - $state: { store: 'appState' }, - meta: { disabled: false, alias: 'name', negate: false }, - query: { match: {} }, - }; - const container = new FilterableContainer( - { id: 'hello', panels: {}, filters: [derivedFilter] }, - start.getEmbeddableFactory - ); - const embeddable = await container.addNewEmbeddable<any, any, any>(FILTERABLE_EMBEDDABLE, {}); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - embeddable.updateInput({ filters: [] }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([]); - - embeddable.updateInput({ filters: undefined }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([ - derivedFilter, - ]); -}); - -test('Explicit embeddable input mapped to undefined with no inherited value will get passed to embeddable', async () => { - const container = new HelloWorldContainer( - { id: 'hello', panels: {} }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - const embeddable = await container.addNewEmbeddable<any, any, any>(FILTERABLE_EMBEDDABLE, {}); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - embeddable.updateInput({ filters: [] }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([]); - - const subscription = await embeddable - .getInput$() - .pipe(skip(1)) - .subscribe(() => { - if (embeddable.getInput().filters === undefined) { - subscription.unsubscribe(); - } - }); - - embeddable.updateInput({ filters: undefined }); -}); - -// The goal is to make sure that if the container input changes after `onPanelAdded` is called -// but before the embeddable factory returns the embeddable, that the `inheritedChildInput` and -// embeddable input comparisons won't cause explicit input to be set when it shouldn't. -test('Explicit input tests in async situations', (done: () => void) => { - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - explicitInput: { firstName: 'Sam', id: '123' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - container.updateInput({ lastName: 'lolol' }); - - const subscription = container.getOutput$().subscribe(() => { - if (container.getOutput().embeddableLoaded['123']) { - const embeddable = container.getChild<any>('123'); - expect(embeddable).toBeDefined(); - expect(embeddable.getInput().lastName).toBe('lolol'); - subscription.unsubscribe(); - done(); - } - }); -}); diff --git a/src/plugins/embeddable/public/tests/fixtures/hello_world_embeddable.tsx b/src/plugins/embeddable/public/tests/fixtures/hello_world_embeddable.tsx deleted file mode 100644 index b70e1732f1e65..0000000000000 --- a/src/plugins/embeddable/public/tests/fixtures/hello_world_embeddable.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Embeddable, EmbeddableInput, IContainer } from '../..'; - -export const HELLO_WORLD_EMBEDDABLE = 'HELLO_WORLD_EMBEDDABLE'; - -export class HelloWorldEmbeddable extends Embeddable { - // The type of this embeddable. This will be used to find the appropriate factory - // to instantiate this kind of embeddable. - public readonly type = HELLO_WORLD_EMBEDDABLE; - - constructor(initialInput: EmbeddableInput, parent?: IContainer) { - super(initialInput, {}, parent); - } - - /** - * Render yourself at the dom node using whatever framework you like, angular, react, or just plain - * vanilla js. - * @param node - */ - public render(node: HTMLElement) { - node.innerHTML = '<div data-test-subj="helloWorldEmbeddable">HELLO WORLD!</div>'; - } - - /** - * This is mostly relevant for time based embeddables which need to update data - * even if EmbeddableInput has not changed at all. - */ - public reload() {} -} diff --git a/src/plugins/embeddable/public/tests/fixtures/hello_world_embeddable_factory.ts b/src/plugins/embeddable/public/tests/fixtures/hello_world_embeddable_factory.ts deleted file mode 100644 index 83c6d94748c56..0000000000000 --- a/src/plugins/embeddable/public/tests/fixtures/hello_world_embeddable_factory.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { i18n } from '@kbn/i18n'; -import { IContainer, EmbeddableInput, EmbeddableFactoryDefinition, EmbeddableFactory } from '../..'; -import { HelloWorldEmbeddable, HELLO_WORLD_EMBEDDABLE } from './hello_world_embeddable'; - -export type HelloWorldEmbeddableFactory = EmbeddableFactory; -export class HelloWorldEmbeddableFactoryDefinition implements EmbeddableFactoryDefinition { - public readonly type = HELLO_WORLD_EMBEDDABLE; - - /** - * In our simple example, we let everyone have permissions to edit this. Most - * embeddables should check the UI Capabilities service to be sure of - * the right permissions. - */ - public async isEditable() { - return true; - } - - public async create(initialInput: EmbeddableInput, parent?: IContainer) { - return new HelloWorldEmbeddable(initialInput, parent); - } - - public getDisplayName() { - return i18n.translate('embeddableApi.helloworld.displayName', { - defaultMessage: 'hello world', - }); - } -} diff --git a/src/plugins/embeddable/public/tests/fixtures/hello_world_embeddable_react.tsx b/src/plugins/embeddable/public/tests/fixtures/hello_world_embeddable_react.tsx deleted file mode 100644 index 42db1d55c4379..0000000000000 --- a/src/plugins/embeddable/public/tests/fixtures/hello_world_embeddable_react.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { HelloWorldEmbeddable } from './hello_world_embeddable'; - -export class HelloWorldEmbeddableReact extends HelloWorldEmbeddable { - public render() { - return <div data-test-subj="helloWorldEmbeddable">HELLO WORLD!</div>; - } -} diff --git a/src/plugins/embeddable/public/tests/fixtures/index.ts b/src/plugins/embeddable/public/tests/fixtures/index.ts deleted file mode 100644 index 1f6f7a247ed86..0000000000000 --- a/src/plugins/embeddable/public/tests/fixtures/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './hello_world_embeddable'; -export * from './hello_world_embeddable_factory'; -export * from './hello_world_embeddable_react'; diff --git a/src/plugins/embeddable/public/tests/get_embeddable_factories.test.ts b/src/plugins/embeddable/public/tests/get_embeddable_factories.test.ts deleted file mode 100644 index 6b7794958ad54..0000000000000 --- a/src/plugins/embeddable/public/tests/get_embeddable_factories.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { testPlugin } from './test_plugin'; -import { FilterableContainerFactory } from '../lib/test_samples/embeddables/filterable_container_factory'; -import { ContactCardEmbeddableFactory } from '../lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory'; - -test('exports getEmbeddableFactories() function', () => { - const { doStart } = testPlugin(); - expect(typeof doStart().getEmbeddableFactories).toBe('function'); -}); - -test('returns empty list if there are no embeddable factories', () => { - const { doStart } = testPlugin(); - const start = doStart(); - const list = [...start.getEmbeddableFactories()]; - expect(list).toEqual([]); -}); - -test('returns existing embeddable factories', () => { - const { setup, doStart } = testPlugin(); - - const factory1 = new FilterableContainerFactory(async () => await start.getEmbeddableFactory); - const factory2 = new ContactCardEmbeddableFactory((() => null) as any, {} as any); - setup.registerEmbeddableFactory(factory1.type, factory1); - setup.registerEmbeddableFactory(factory2.type, factory2); - - const start = doStart(); - - const list = [...start.getEmbeddableFactories()]; - expect(list.length).toBe(2); - expect(!!list.find(({ type }) => factory1.type === type)).toBe(true); - expect(!!list.find(({ type }) => factory2.type === type)).toBe(true); -}); diff --git a/src/plugins/embeddable/public/tests/helpers.ts b/src/plugins/embeddable/public/tests/helpers.ts deleted file mode 100644 index d7fee9d13dec8..0000000000000 --- a/src/plugins/embeddable/public/tests/helpers.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { coreMock } from '@kbn/core/public/mocks'; -import { ContainerInput, EmbeddableContainerSettings, isErrorEmbeddable } from '../lib'; -import { - ContactCardEmbeddable, - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput, - CONTACT_CARD_EMBEDDABLE, - FilterableEmbeddableFactory, - HelloWorldContainer, - SlowContactCardEmbeddableFactory, -} from '../lib/test_samples'; -import { HelloWorldEmbeddableFactoryDefinition } from './fixtures'; -import { testPlugin } from './test_plugin'; - -export async function createHelloWorldContainerAndEmbeddable( - containerInput: ContainerInput = { id: 'hello', panels: {} }, - embeddableInput = {}, - settings?: EmbeddableContainerSettings -) { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const { setup, doStart, uiActions } = testPlugin(coreSetup, coreStart); - const filterableFactory = new FilterableEmbeddableFactory(); - const slowContactCardFactory = new SlowContactCardEmbeddableFactory({ - execAction: uiActions.executeTriggerActions, - }); - const contactCardCreateSpy = jest.spyOn(slowContactCardFactory, 'create'); - - const helloWorldFactory = new HelloWorldEmbeddableFactoryDefinition(); - - setup.registerEmbeddableFactory(filterableFactory.type, filterableFactory); - setup.registerEmbeddableFactory(slowContactCardFactory.type, slowContactCardFactory); - setup.registerEmbeddableFactory(helloWorldFactory.type, helloWorldFactory); - - const start = doStart(); - - const container = new HelloWorldContainer( - containerInput, - { - getEmbeddableFactory: start.getEmbeddableFactory, - }, - settings - ); - - const embeddable = await container.addNewEmbeddable< - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput, - ContactCardEmbeddable - >(CONTACT_CARD_EMBEDDABLE, embeddableInput); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - return { - setup, - start, - coreSetup, - coreStart, - container, - uiActions, - embeddable, - contactCardCreateSpy, - }; -} - -export const expectErrorAsync = (fn: (...args: unknown[]) => Promise<unknown>): Promise<Error> => { - return fn() - .then(() => { - throw new Error('Expected an error throw.'); - }) - .catch((error) => { - if (error.message === 'Expected an error throw.') { - throw error; - } - return error; - }); -}; - -export const expectError = (fn: (...args: unknown[]) => unknown): Error => { - try { - fn(); - throw new Error('Expected an error throw.'); - } catch (error) { - if (error.message === 'Expected an error throw.') { - throw error; - } - return error; - } -}; - -export const of = async <T, P extends Promise<T>>( - promise: P -): Promise<[T | undefined, Error | unknown]> => { - try { - return [await promise, undefined]; - } catch (error) { - return [, error]; - } -}; diff --git a/src/plugins/embeddable/tsconfig.json b/src/plugins/embeddable/tsconfig.json index c3b5925e33233..bf97096d1484b 100644 --- a/src/plugins/embeddable/tsconfig.json +++ b/src/plugins/embeddable/tsconfig.json @@ -7,10 +7,8 @@ "kbn_references": [ "@kbn/core", "@kbn/inspector-plugin", - "@kbn/saved-objects-plugin", "@kbn/kibana-utils-plugin", "@kbn/ui-actions-plugin", - "@kbn/i18n-react", "@kbn/utility-types", "@kbn/es-query", "@kbn/i18n", diff --git a/src/plugins/es_ui_shared/.storybook/manager.ts b/src/plugins/es_ui_shared/.storybook/manager.ts deleted file mode 100644 index bfeeb1b14c88e..0000000000000 --- a/src/plugins/es_ui_shared/.storybook/manager.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { addons } from '@storybook/addons'; -import { create } from '@storybook/theming'; -import { PANEL_ID } from '@storybook/addon-actions'; - -addons.setConfig({ - theme: create({ - base: 'light', - brandTitle: 'Platform Deployment Management Storybook', - brandUrl: 'https://github.com/elastic/kibana/tree/main/src/plugins/es_ui_shared', - }), - showPanel: () => true, - selectedPanel: PANEL_ID, -}); diff --git a/src/plugins/es_ui_shared/jest.config.js b/src/plugins/es_ui_shared/jest.config.js deleted file mode 100644 index e120ae9b0ef8c..0000000000000 --- a/src/plugins/es_ui_shared/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/src/plugins/es_ui_shared'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/plugins/es_ui_shared', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/src/plugins/es_ui_shared/{__packages_do_not_import__,common,public,server,static}/**/*.{ts,tsx}', - ], -}; diff --git a/src/plugins/es_ui_shared/static/forms/README.md b/src/plugins/es_ui_shared/static/forms/README.md deleted file mode 100644 index e3e64faf0ddbc..0000000000000 --- a/src/plugins/es_ui_shared/static/forms/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Form lib - -## Documentation - -The documentation can be accessed at: https://docs.elastic.dev/form-lib/welcome - - -### Run locally - -In order to run the documentation locally - -1. Fork and clone the elastic docs repo https://github.com/elastic/docs.elastic.dev -2. `cp sources.json sources-dev.json` -3. Edit the "elastic/kibana" section inside `source-dev.json` - -``` -// From this -{ - "type": "github", - "location": "elastic/kibana" -} - -// to this -{ - "type": "file", - "location": "../../<root-kibana-repo>", - // optional, if you want a faster build you can only include the form lib docs - "subdirs": [ - "src/plugins/es_ui_shared/static/forms/docs" - ] -} -``` - -4. Follow the "Getting started" instructions (https://github.com/elastic/docs.elastic.dev#getting-started) -5. `yarn dev` to launch the docs server - -## Field value change sequence diagram - -```mermaid -sequenceDiagram -actor User -User ->> UseField: change <input /> value -UseField ->> useField: setValue() -useField ->> useField: run field formatters -useField ->> useField: update state: value -useField ->> useField: create new "field" (FieldHook) -useField ->> useField: useEffect(): "field" changed -useField ->> useForm: addField(path, field) -useForm ->> useForm: update "fieldsRef" map object -useForm ->> useForm: update "formData$" observable -useForm ->> useFormData: update state: formData -useFormData -->> User: onChange() (optional handler passed to useFormdata()) -par useEffect -useField ->> UseField: call "onChange" prop -and useEffect -useField ->> useField: update state: isPristine: false -useField ->> useField: update state: isChangingValue: true -useField ->> useForm: validateFields() -note right of useForm: Validate the current field + any other field<br>declared in the "fieldsToValidateOnChange" -useForm -->> useField: validate() -useField ->> useField: update state: isValid true|false -useField ->> useForm: update state: isValid undefined|true|false -useField ->> useField: update state: isChangingValue: false -and useEffect -useField ->> useField: update state: isModified: true|false -end -User ->> User: useEffect() -- >useFormData state update -``` \ No newline at end of file diff --git a/src/plugins/es_ui_shared/tsconfig.json b/src/plugins/es_ui_shared/tsconfig.json deleted file mode 100644 index 2747f41b0f370..0000000000000 --- a/src/plugins/es_ui_shared/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__packages_do_not_import__/**/*", - "common/**/*", - "public/**/*", - "server/**/*", - "static/**/*", - "../../../typings/**/*", - ".storybook/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/data-views-plugin", - "@kbn/i18n", - "@kbn/shared-ux-page-kibana-template", - "@kbn/i18n-react", - "@kbn/test-jest-helpers", - "@kbn/share-plugin", - "@kbn/safer-lodash-set", - "@kbn/storybook", - "@kbn/shared-ux-link-redirect-app", - "@kbn/code-editor", - "@kbn/core-application-common", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/src/plugins/expression_error/public/expression_renderers/__stories__/error_renderer.stories.tsx b/src/plugins/expression_error/public/expression_renderers/__stories__/error_renderer.stories.tsx index b7f789f873de3..ea28ff903582c 100644 --- a/src/plugins/expression_error/public/expression_renderers/__stories__/error_renderer.stories.tsx +++ b/src/plugins/expression_error/public/expression_renderers/__stories__/error_renderer.stories.tsx @@ -19,7 +19,5 @@ storiesOf('renderers/error', module).add('default', () => { error: thrownError, }; - return ( - <Render renderer={getErrorRenderer(coreMock.createStart().theme.theme$)} config={config} /> - ); + return <Render renderer={getErrorRenderer(coreMock.createStart())} config={config} />; }); diff --git a/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx b/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx index 29fa69aa736b4..e26aa7c4a5160 100644 --- a/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx +++ b/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition } from '@kbn/expressions-plugin/common'; import { i18n } from '@kbn/i18n'; import { withSuspense } from '@kbn/presentation-util-plugin/public'; @@ -36,25 +35,24 @@ const strings = { }), }; -export const getDebugRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<any> => ({ - name: 'debug', - displayName: strings.getDisplayName(), - help: strings.getHelpDescription(), - reuseDomNode: true, - render(domNode, config, handlers) { - handlers.onDestroy(() => unmountComponentAtNode(domNode)); - render( - <KibanaErrorBoundaryProvider analytics={undefined}> - <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> - <Debug parentNode={domNode} payload={config} onLoaded={handlers.done} /> - </KibanaThemeProvider> - </KibanaErrorBoundary> - </KibanaErrorBoundaryProvider>, - domNode - ); - }, - }); +export const getDebugRenderer = (core: CoreStart) => (): ExpressionRenderDefinition<any> => ({ + name: 'debug', + displayName: strings.getDisplayName(), + help: strings.getHelpDescription(), + reuseDomNode: true, + render(domNode, config, handlers) { + handlers.onDestroy(() => unmountComponentAtNode(domNode)); + render( + <KibanaErrorBoundaryProvider analytics={undefined}> + <KibanaErrorBoundary> + <KibanaThemeProvider {...core}> + <Debug parentNode={domNode} payload={config} onLoaded={handlers.done} /> + </KibanaThemeProvider> + </KibanaErrorBoundary> + </KibanaErrorBoundaryProvider>, + domNode + ); + }, +}); -export const debugRendererFactory = (core: CoreSetup) => getDebugRenderer(core.theme.theme$); +export const debugRendererFactory = (core: CoreStart) => getDebugRenderer(core); diff --git a/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx b/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx index 4ba3daa15d08c..9d352926bd9d4 100644 --- a/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx +++ b/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { I18nProvider } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { @@ -38,7 +37,7 @@ const errorStrings = { const ErrorComponent = withSuspense(LazyErrorRenderComponent); export const getErrorRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<ErrorRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<ErrorRendererConfig> => ({ name: 'error', displayName: errorStrings.getDisplayName(), help: errorStrings.getHelpDescription(), @@ -55,7 +54,7 @@ export const getErrorRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <ErrorComponent onLoaded={handlers.done} {...config} parentNode={domNode} /> </I18nProvider> @@ -67,4 +66,4 @@ export const getErrorRenderer = }, }); -export const errorRendererFactory = (core: CoreSetup) => getErrorRenderer(core.theme.theme$); +export const errorRendererFactory = (core: CoreStart) => getErrorRenderer(core); diff --git a/src/plugins/expression_error/public/plugin.ts b/src/plugins/expression_error/public/plugin.ts index 66b5209267599..180a6209f4da5 100755 --- a/src/plugins/expression_error/public/plugin.ts +++ b/src/plugins/expression_error/public/plugin.ts @@ -26,8 +26,10 @@ export class ExpressionErrorPlugin implements Plugin<ExpressionErrorPluginSetup, ExpressionErrorPluginStart, SetupDeps, StartDeps> { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionErrorPluginSetup { - expressions.registerRenderer(errorRendererFactory(core)); - expressions.registerRenderer(debugRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerRenderer(errorRendererFactory(start)); + expressions.registerRenderer(debugRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionErrorPluginStart {} diff --git a/src/plugins/expression_image/public/expression_renderers/__stories__/image_renderer.stories.tsx b/src/plugins/expression_image/public/expression_renderers/__stories__/image_renderer.stories.tsx index 07fb4db558bd5..1577ee8b7fabf 100644 --- a/src/plugins/expression_image/public/expression_renderers/__stories__/image_renderer.stories.tsx +++ b/src/plugins/expression_image/public/expression_renderers/__stories__/image_renderer.stories.tsx @@ -23,7 +23,7 @@ const Renderer = ({ elasticLogo }: { elasticLogo: string }) => { return ( <Render - renderer={getImageRenderer(coreMock.createStart().theme.theme$)} + renderer={getImageRenderer(coreMock.createStart())} config={config} width="500px" height="500px" diff --git a/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx b/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx index e80281fc10f42..c5d1d201e1c9d 100644 --- a/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx +++ b/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -34,7 +33,7 @@ const strings = { }; export const getImageRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<ImageRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<ImageRendererConfig> => ({ name: 'image', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -62,7 +61,7 @@ export const getImageRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <div style={style} /> </KibanaThemeProvider> </KibanaErrorBoundary> @@ -73,4 +72,4 @@ export const getImageRenderer = }, }); -export const imageRendererFactory = (core: CoreSetup) => getImageRenderer(core.theme.theme$); +export const imageRendererFactory = (core: CoreStart) => getImageRenderer(core); diff --git a/src/plugins/expression_image/public/plugin.ts b/src/plugins/expression_image/public/plugin.ts index 4ee0b457b4f61..e9fac6f9215c6 100755 --- a/src/plugins/expression_image/public/plugin.ts +++ b/src/plugins/expression_image/public/plugin.ts @@ -27,8 +27,10 @@ export class ExpressionImagePlugin implements Plugin<ExpressionImagePluginSetup, ExpressionImagePluginStart, SetupDeps, StartDeps> { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionImagePluginSetup { - expressions.registerFunction(imageFunction); - expressions.registerRenderer(imageRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(imageFunction); + expressions.registerRenderer(imageRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionImagePluginStart {} diff --git a/src/plugins/expression_metric/public/expression_renderers/__stories__/metric_renderer.stories.tsx b/src/plugins/expression_metric/public/expression_renderers/__stories__/metric_renderer.stories.tsx index 5438bb4b4287a..9c8e5d17dc3bb 100644 --- a/src/plugins/expression_metric/public/expression_renderers/__stories__/metric_renderer.stories.tsx +++ b/src/plugins/expression_metric/public/expression_renderers/__stories__/metric_renderer.stories.tsx @@ -38,7 +38,7 @@ const metricFontSpec: CSSProperties = { color: '#b83c6f', }; -const theme$ = coreMock.createStart().theme.theme$; +const core = coreMock.createStart(); storiesOf('renderers/Metric', module) .add('with null metric', () => { @@ -49,7 +49,7 @@ storiesOf('renderers/Metric', module) label: '', metricFormat: '', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with number metric', () => { const config: MetricRendererConfig = { @@ -59,7 +59,7 @@ storiesOf('renderers/Metric', module) label: '', metricFormat: '', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with string metric', () => { const config: MetricRendererConfig = { @@ -69,7 +69,7 @@ storiesOf('renderers/Metric', module) label: '', metricFormat: '', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with label', () => { const config: MetricRendererConfig = { @@ -79,7 +79,7 @@ storiesOf('renderers/Metric', module) label: 'Average price', metricFormat: '', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with number metric and a specified format', () => { const config: MetricRendererConfig = { @@ -89,7 +89,7 @@ storiesOf('renderers/Metric', module) label: 'Average price', metricFormat: '0.00%', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with formatted string metric and a specified format', () => { const config: MetricRendererConfig = { @@ -99,7 +99,7 @@ storiesOf('renderers/Metric', module) label: 'Total Revenue', metricFormat: '$0a', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with invalid metricFont', () => { const config: MetricRendererConfig = { @@ -109,5 +109,5 @@ storiesOf('renderers/Metric', module) label: 'Total Revenue', metricFormat: '$0a', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }); diff --git a/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx b/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx index db4b8575d5e26..315cf1fca32a2 100644 --- a/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx +++ b/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx @@ -9,9 +9,8 @@ import React, { CSSProperties } from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -33,7 +32,7 @@ const strings = { }; export const getMetricRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<MetricRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<MetricRendererConfig> => ({ name: 'metric', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -51,7 +50,7 @@ export const getMetricRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <MetricComponent label={config.label} labelFont={config.labelFont ? (config.labelFont.spec as CSSProperties) : {}} @@ -68,4 +67,4 @@ export const getMetricRenderer = }, }); -export const metricRendererFactory = (core: CoreSetup) => getMetricRenderer(core.theme.theme$); +export const metricRendererFactory = (core: CoreStart) => getMetricRenderer(core); diff --git a/src/plugins/expression_metric/public/plugin.ts b/src/plugins/expression_metric/public/plugin.ts index ce5bd9069ca21..0bcf71a93b484 100755 --- a/src/plugins/expression_metric/public/plugin.ts +++ b/src/plugins/expression_metric/public/plugin.ts @@ -27,8 +27,10 @@ export class ExpressionMetricPlugin implements Plugin<ExpressionMetricPluginSetup, ExpressionMetricPluginStart, SetupDeps, StartDeps> { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionMetricPluginSetup { - expressions.registerFunction(metricFunction); - expressions.registerRenderer(metricRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(metricFunction); + expressions.registerRenderer(metricRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionMetricPluginStart {} diff --git a/src/plugins/expression_repeat_image/public/expression_renderers/__stories__/repeat_image_renderer.stories.tsx b/src/plugins/expression_repeat_image/public/expression_renderers/__stories__/repeat_image_renderer.stories.tsx index a5f58b97970cf..31ae794d234a4 100644 --- a/src/plugins/expression_repeat_image/public/expression_renderers/__stories__/repeat_image_renderer.stories.tsx +++ b/src/plugins/expression_repeat_image/public/expression_renderers/__stories__/repeat_image_renderer.stories.tsx @@ -32,7 +32,7 @@ const Renderer = ({ return ( <Render - renderer={getRepeatImageRenderer(coreMock.createStart().theme.theme$)} + renderer={getRepeatImageRenderer(coreMock.createStart())} config={config} width="400px" /> diff --git a/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx b/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx index 9a35459880889..9aed56e999c3f 100644 --- a/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx +++ b/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -35,7 +34,7 @@ const strings = { }; export const getRepeatImageRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<RepeatImageRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<RepeatImageRendererConfig> => ({ name: 'repeatImage', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -60,7 +59,7 @@ export const getRepeatImageRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <RepeatImageComponent onLoaded={handlers.done} {...settings} parentNode={domNode} /> </I18nProvider> @@ -72,5 +71,4 @@ export const getRepeatImageRenderer = }, }); -export const repeatImageRendererFactory = (core: CoreSetup) => - getRepeatImageRenderer(core.theme.theme$); +export const repeatImageRendererFactory = (core: CoreStart) => getRepeatImageRenderer(core); diff --git a/src/plugins/expression_repeat_image/public/plugin.ts b/src/plugins/expression_repeat_image/public/plugin.ts index c9421c76895ba..f66ae96a8b7c1 100755 --- a/src/plugins/expression_repeat_image/public/plugin.ts +++ b/src/plugins/expression_repeat_image/public/plugin.ts @@ -33,8 +33,10 @@ export class ExpressionRepeatImagePlugin > { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionRepeatImagePluginSetup { - expressions.registerFunction(repeatImageFunction); - expressions.registerRenderer(repeatImageRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(repeatImageFunction); + expressions.registerRenderer(repeatImageRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionRepeatImagePluginStart {} diff --git a/src/plugins/expression_reveal_image/public/expression_renderers/__stories__/reveal_image_renderer.stories.tsx b/src/plugins/expression_reveal_image/public/expression_renderers/__stories__/reveal_image_renderer.stories.tsx index 664cc97117791..32ea7edd04765 100644 --- a/src/plugins/expression_reveal_image/public/expression_renderers/__stories__/reveal_image_renderer.stories.tsx +++ b/src/plugins/expression_reveal_image/public/expression_renderers/__stories__/reveal_image_renderer.stories.tsx @@ -29,12 +29,7 @@ const Renderer = ({ percent: 0.45, }; - return ( - <Render - renderer={getRevealImageRenderer(coreMock.createStart().theme.theme$)} - config={config} - /> - ); + return <Render renderer={getRevealImageRenderer(coreMock.createStart())} config={config} />; }; storiesOf('renderers/revealImage', module).add( diff --git a/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx b/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx index fbfe479225ece..3190a7c90c112 100644 --- a/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx +++ b/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -34,7 +33,7 @@ export const strings = { }; export const getRevealImageRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<RevealImageRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<RevealImageRendererConfig> => ({ name: 'revealImage', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -52,7 +51,7 @@ export const getRevealImageRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <RevealImageComponent onLoaded={handlers.done} {...config} parentNode={domNode} /> </I18nProvider> @@ -64,5 +63,4 @@ export const getRevealImageRenderer = }, }); -export const revealImageRendererFactory = (core: CoreSetup) => - getRevealImageRenderer(core.theme.theme$); +export const revealImageRendererFactory = (core: CoreStart) => getRevealImageRenderer(core); diff --git a/src/plugins/expression_reveal_image/public/plugin.ts b/src/plugins/expression_reveal_image/public/plugin.ts index e41fea42bf1e2..66e802f4cf448 100755 --- a/src/plugins/expression_reveal_image/public/plugin.ts +++ b/src/plugins/expression_reveal_image/public/plugin.ts @@ -33,8 +33,10 @@ export class ExpressionRevealImagePlugin > { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionRevealImagePluginSetup { - expressions.registerFunction(revealImageFunction); - expressions.registerRenderer(revealImageRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(revealImageFunction); + expressions.registerRenderer(revealImageRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionRevealImagePluginStart {} diff --git a/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx b/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx index 0f93314ee0816..79e975bf2d46e 100644 --- a/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx @@ -31,7 +31,5 @@ storiesOf('renderers/progress', module).add('default', () => { valueWeight: 15, }; - return ( - <Render renderer={getProgressRenderer(coreMock.createStart().theme.theme$)} config={config} /> - ); + return <Render renderer={getProgressRenderer(coreMock.createStart())} config={config} />; }); diff --git a/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx b/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx index d089174c60325..f69f5d765484c 100644 --- a/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx @@ -24,7 +24,5 @@ storiesOf('renderers/shape', module).add('default', () => { maintainAspect: true, }; - return ( - <Render renderer={getShapeRenderer(coreMock.createStart().theme.theme$)} config={config} /> - ); + return <Render renderer={getShapeRenderer(coreMock.createStart())} config={config} />; }); diff --git a/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx b/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx index ed7629a7d87a0..17118625e9157 100644 --- a/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -34,7 +33,7 @@ const strings = { }; export const getProgressRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<ProgressRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<ProgressRendererConfig> => ({ name: 'progress', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -52,7 +51,7 @@ export const getProgressRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <ProgressComponent {...config} parentNode={domNode} onLoaded={handlers.done} /> </I18nProvider> @@ -64,4 +63,4 @@ export const getProgressRenderer = }, }); -export const progressRendererFactory = (core: CoreSetup) => getProgressRenderer(core.theme.theme$); +export const progressRendererFactory = (core: CoreStart) => getProgressRenderer(core); diff --git a/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx b/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx index 650033aa4542d..a41e359eec00d 100644 --- a/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -34,7 +33,7 @@ const strings = { }; export const getShapeRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<ShapeRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<ShapeRendererConfig> => ({ name: 'shape', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -52,7 +51,7 @@ export const getShapeRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <ShapeComponent onLoaded={handlers.done} {...config} parentNode={domNode} /> </I18nProvider> @@ -65,4 +64,4 @@ export const getShapeRenderer = }, }); -export const shapeRendererFactory = (core: CoreSetup) => getShapeRenderer(core.theme.theme$); +export const shapeRendererFactory = (core: CoreStart) => getShapeRenderer(core); diff --git a/src/plugins/expression_shape/public/plugin.ts b/src/plugins/expression_shape/public/plugin.ts index 0acb611d363d6..4d4ea8d9b35cb 100755 --- a/src/plugins/expression_shape/public/plugin.ts +++ b/src/plugins/expression_shape/public/plugin.ts @@ -27,10 +27,12 @@ export class ExpressionShapePlugin implements Plugin<ExpressionShapePluginSetup, ExpressionShapePluginStart, SetupDeps, StartDeps> { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionShapePluginSetup { - expressions.registerFunction(shapeFunction); - expressions.registerFunction(progressFunction); - expressions.registerRenderer(shapeRendererFactory(core)); - expressions.registerRenderer(progressRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(shapeFunction); + expressions.registerFunction(progressFunction); + expressions.registerRenderer(shapeRendererFactory(start)); + expressions.registerRenderer(progressRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionShapePluginStart {} diff --git a/src/plugins/field_formats/common/constants/color_default.ts b/src/plugins/field_formats/common/constants/color_default.ts index 689791d3ae4c8..8133d4611d1f8 100644 --- a/src/plugins/field_formats/common/constants/color_default.ts +++ b/src/plugins/field_formats/common/constants/color_default.ts @@ -12,4 +12,5 @@ export const DEFAULT_CONVERTER_COLOR = { regex: '<insert regex>', text: '#000000', background: '#ffffff', + boolean: 'true', }; diff --git a/src/plugins/field_formats/common/converters/bytes.ts b/src/plugins/field_formats/common/converters/bytes.ts index f56e523fbca7b..86e853f33a8c1 100644 --- a/src/plugins/field_formats/common/converters/bytes.ts +++ b/src/plugins/field_formats/common/converters/bytes.ts @@ -15,7 +15,7 @@ import { FIELD_FORMAT_IDS } from '../types'; export class BytesFormat extends NumeralFormat { static id = FIELD_FORMAT_IDS.BYTES; static title = i18n.translate('fieldFormats.bytes.title', { - defaultMessage: 'Bytes', + defaultMessage: 'Bytes and Bits', }); id = BytesFormat.id; diff --git a/src/plugins/field_formats/common/converters/color.test.ts b/src/plugins/field_formats/common/converters/color.test.ts index 392e3d677e66a..bf1afb24fe18e 100644 --- a/src/plugins/field_formats/common/converters/color.test.ts +++ b/src/plugins/field_formats/common/converters/color.test.ts @@ -56,6 +56,29 @@ describe('Color Format', () => { }); }); + describe('field is a boolean', () => { + test('should add colors if the value is true or false', () => { + const colorer = new ColorFormat( + { + fieldType: 'boolean', + colors: [ + { + boolean: 'true', + text: 'blue', + background: 'yellow', + }, + ], + }, + jest.fn() + ); + + expect(colorer.convert(true, HTML_CONTEXT_TYPE)).toBe( + '<span style="color:blue;background-color:yellow">true</span>' + ); + expect(colorer.convert(false, HTML_CONTEXT_TYPE)).toBe('false'); + }); + }); + describe('field is a string', () => { test('should add colors if the regex matches', () => { const colorer = new ColorFormat( diff --git a/src/plugins/field_formats/common/converters/color.tsx b/src/plugins/field_formats/common/converters/color.tsx index c05003a01954d..e8a1d2b696644 100644 --- a/src/plugins/field_formats/common/converters/color.tsx +++ b/src/plugins/field_formats/common/converters/color.tsx @@ -23,7 +23,7 @@ export class ColorFormat extends FieldFormat { static title = i18n.translate('fieldFormats.color.title', { defaultMessage: 'Color', }); - static fieldType = [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.STRING]; + static fieldType = [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.STRING, KBN_FIELD_TYPES.BOOLEAN]; getParamDefaults() { return { @@ -32,7 +32,7 @@ export class ColorFormat extends FieldFormat { }; } - findColorRuleForVal(val: string | number) { + findColorRuleForVal(val: string | number | boolean) { switch (this.param('fieldType')) { case 'string': return findLast(this.param('colors'), (colorParam: typeof DEFAULT_CONVERTER_COLOR) => { @@ -50,6 +50,10 @@ export class ColorFormat extends FieldFormat { // @ts-expect-error upgrade typescript v5.1.6 return val >= Number(start) && val <= Number(end); }); + case 'boolean': + return findLast(this.param('colors'), ({ boolean }) => { + return boolean === val.toString(); + }); default: return null; diff --git a/src/plugins/field_formats/common/converters/url.test.ts b/src/plugins/field_formats/common/converters/url.test.ts index d1c89575b2d4d..9a1fcb7cbef6e 100644 --- a/src/plugins/field_formats/common/converters/url.test.ts +++ b/src/plugins/field_formats/common/converters/url.test.ts @@ -139,7 +139,7 @@ describe('UrlFormat', () => { expect(url.convert('url', TEXT_CONTEXT_TYPE)).toBe('external url'); }); - test('can use the raw value', () => { + test('can use the raw value with {{value}}', () => { const url = new UrlFormat({ labelTemplate: 'external {{value}}', }); @@ -147,6 +147,14 @@ describe('UrlFormat', () => { expect(url.convert('url?', TEXT_CONTEXT_TYPE)).toBe('external url?'); }); + test('can use the raw value with {{rawValue}}', () => { + const url = new UrlFormat({ + labelTemplate: 'external {{rawValue}}', + }); + + expect(url.convert('url?', TEXT_CONTEXT_TYPE)).toBe('external url?'); + }); + test('can use the url', () => { const url = new UrlFormat({ urlTemplate: 'http://google.com/{{value}}', diff --git a/src/plugins/field_formats/common/converters/url.ts b/src/plugins/field_formats/common/converters/url.ts index a0b423a737f08..ffa6973de27a4 100644 --- a/src/plugins/field_formats/common/converters/url.ts +++ b/src/plugins/field_formats/common/converters/url.ts @@ -86,6 +86,7 @@ export class UrlFormat extends FieldFormat { return this.compileTemplate(template)({ value, url, + rawValue: value, }); } diff --git a/src/plugins/guided_onboarding/README.md b/src/plugins/guided_onboarding/README.md index a7d1447d6da8b..f5e1ae42e71ab 100755 --- a/src/plugins/guided_onboarding/README.md +++ b/src/plugins/guided_onboarding/README.md @@ -125,8 +125,8 @@ To use the API service, you need to know a guide ID (currently one of `appSearch The guided onboarding exposes a function `registerGuideConfig(guideId: GuideId, guideConfig: GuideConfig)` function in its setup contract. This function allows consumers to register a guide config for a specified guide ID. The function throws an error if a config already exists for the guide ID. See code examples in following plugins: - enterprise search: `x-pack/plugins/enterprise_search/server/plugin.ts` -- observability: `x-pack/plugins/observability_solution/observability/server/plugin.ts` -- security solution: `x-pack/plugins/security_solution/server/plugin.ts` +- observability: `x-pack/solutions/observability/plugins/observability/server/plugin.ts` +- security solution: `x-pack/solutions/security/plugins/security_solution/server/plugin.ts` ## Adding a new guide diff --git a/src/plugins/guided_onboarding/public/components/guide_button.tsx b/src/plugins/guided_onboarding/public/components/guide_button.tsx index 7df5d03049f1f..32d78c1af545a 100644 --- a/src/plugins/guided_onboarding/public/components/guide_button.tsx +++ b/src/plugins/guided_onboarding/public/components/guide_button.tsx @@ -58,7 +58,7 @@ export const GuideButton = ({ <EuiButton isLoading={isLoading} onClick={toggleGuidePanel} - color="success" + color="accent" fill size="s" data-test-subj="guideButton" @@ -97,7 +97,7 @@ export const GuideButton = ({ return ( <EuiButton onClick={navigateToLandingPage} - color="success" + color="accent" fill size="s" data-test-subj="guideButtonRedirect" diff --git a/src/plugins/guided_onboarding/public/components/guide_panel_step.styles.ts b/src/plugins/guided_onboarding/public/components/guide_panel_step.styles.ts index 2fc0d8afb111b..f8ca12a9fd1f1 100644 --- a/src/plugins/guided_onboarding/public/components/guide_panel_step.styles.ts +++ b/src/plugins/guided_onboarding/public/components/guide_panel_step.styles.ts @@ -17,17 +17,21 @@ export const getGuidePanelStepStyles = (euiTheme: EuiThemeComputed, stepStatus: height: 24px; border-radius: 50%; border: 2px solid - ${stepStatus === 'inactive' ? euiTheme.colors.lightShade : euiTheme.colors.success}; + ${stepStatus === 'inactive' ? euiTheme.colors.borderBasePlain : euiTheme.colors.success}; font-weight: ${euiTheme.font.weight.medium}; text-align: center; line-height: 1.4; - color: ${stepStatus === 'inactive' ? euiTheme.colors.subduedText : euiTheme.colors.text}; + color: ${stepStatus === 'inactive' + ? euiTheme.colors.textSubdued + : euiTheme.colors.textParagraph}; `, stepTitle: css` font-weight: ${euiTheme.font.weight.semiBold}; - color: ${stepStatus === 'inactive' ? euiTheme.colors.subduedText : euiTheme.colors.text}; + color: ${stepStatus === 'inactive' + ? euiTheme.colors.textSubdued + : euiTheme.colors.textParagraph}; .euiAccordion-isOpen & { - color: ${euiTheme.colors.title}; + color: ${euiTheme.colors.textHeading}; } `, description: css` diff --git a/src/plugins/guided_onboarding/public/components/quit_guide_modal.tsx b/src/plugins/guided_onboarding/public/components/quit_guide_modal.tsx index bdaf8b710ac4d..f29beaad2acf8 100644 --- a/src/plugins/guided_onboarding/public/components/quit_guide_modal.tsx +++ b/src/plugins/guided_onboarding/public/components/quit_guide_modal.tsx @@ -94,7 +94,7 @@ export const QuitGuideModal = ({ onClick={deactivateGuide} isLoading={isLoading} fill - color="warning" + color="primary" > {i18n.translate('guidedOnboarding.quitGuideModal.quitButtonLabel', { defaultMessage: 'Quit guide', diff --git a/src/plugins/home/public/application/components/tutorial/instruction_set.js b/src/plugins/home/public/application/components/tutorial/instruction_set.js index a4c64894bea95..41104b6269895 100644 --- a/src/plugins/home/public/application/components/tutorial/instruction_set.js +++ b/src/plugins/home/public/application/components/tutorial/instruction_set.js @@ -28,7 +28,7 @@ import { import * as StatusCheckStates from './status_check_states'; import { injectI18n, FormattedMessage } from '@kbn/i18n-react'; -import { euiThemeVars } from '@kbn/ui-theme'; +import { euiThemeVars } from '@kbn/ui-theme'; // FIXME: remove this, and access style variables from EUI context class InstructionSetUi extends React.Component { constructor(props) { diff --git a/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts index 491664ef3fda7..6c53f7479789e 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts @@ -148,7 +148,7 @@ export const getSavedObjects = (): SavedObject[] => [ optionsJSON: '{"useMargins":true,"syncColors":false,"syncCursor":true,"syncTooltips":false,"hidePanelTitles":false}', panelsJSON: - '[{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":21,"w":24,"h":10,"i":"5"},"panelIndex":"5","embeddableConfig":{"attributes":{"title":"[eCommerce] Promotion Tracking (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-1d08a43c-8913-4692-a3e0-8d77902f6e46"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-9725cdbd-a9f3-479f-a349-0f11244e5239"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-2031d0f8-01fc-4009-b1ad-a7b7ca9266c0"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"xy-visualization-layer-192ad2e4-2bb7-44a9-b345-e96045fa6ccd"}],"state":{"visualization":{"legend":{"isVisible":true,"showSingleSeries":true,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0,"yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"line","layerType":"data","layerId":"e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e","accessors":["a69956c9-43cd-4756-a3c0-e93cb1502a0b"],"yConfig":[{"forAccessor":"a69956c9-43cd-4756-a3c0-e93cb1502a0b","color":"rgba(211,96,134,1)","axisMode":"left"}],"xAccessor":"f3cc8168-6360-4727-a410-a57f5a325091","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"1d08a43c-8913-4692-a3e0-8d77902f6e46","accessors":["9a3d8abd-81a5-40ae-9616-020d5a5b2ee2"],"yConfig":[{"forAccessor":"9a3d8abd-81a5-40ae-9616-020d5a5b2ee2","color":"rgba(84,179,153,1)","axisMode":"left"}],"xAccessor":"644b06ea-73a3-47b1-9b40-3035844c4621","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"9725cdbd-a9f3-479f-a349-0f11244e5239","accessors":["b5588228-9c46-4a4b-92ee-d140c327bca0"],"yConfig":[{"forAccessor":"b5588228-9c46-4a4b-92ee-d140c327bca0","color":"rgba(96,146,192,1)","axisMode":"left"}],"xAccessor":"6749b404-4784-4fd6-8bf6-5712e84c7310","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"2031d0f8-01fc-4009-b1ad-a7b7ca9266c0","accessors":["985e05c0-3a0b-4e55-84bb-1f02128388a9"],"yConfig":[{"forAccessor":"985e05c0-3a0b-4e55-84bb-1f02128388a9","color":"rgba(202,142,174,1)","axisMode":"left"}],"xAccessor":"1b199cb1-b47f-48e6-b209-74eb81b303f5","palette":{"name":"default","type":"palette"}},{"layerId":"192ad2e4-2bb7-44a9-b345-e96045fa6ccd","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"c8c30be0-b88f-11e8-a451-f37365e9f268","label":"Event","key":{"type":"point_in_time"},"color":"#194D33","timeField":"order_date","icon":"bell","filter":{"type":"kibana_query","query":"taxful_total_price:>250","language":"lucene"},"extraFields":["taxful_total_price"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e":{"columns":{"f3cc8168-6360-4727-a410-a57f5a325091":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"a69956c9-43cd-4756-a3c0-e93cb1502a0b":{"label":"Revenue Trousers","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*trouser*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["f3cc8168-6360-4727-a410-a57f5a325091","a69956c9-43cd-4756-a3c0-e93cb1502a0b"],"incompleteColumns":{}},"1d08a43c-8913-4692-a3e0-8d77902f6e46":{"columns":{"644b06ea-73a3-47b1-9b40-3035844c4621":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"9a3d8abd-81a5-40ae-9616-020d5a5b2ee2":{"label":"Revenue Watches","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*watch*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["644b06ea-73a3-47b1-9b40-3035844c4621","9a3d8abd-81a5-40ae-9616-020d5a5b2ee2"],"incompleteColumns":{}},"9725cdbd-a9f3-479f-a349-0f11244e5239":{"columns":{"6749b404-4784-4fd6-8bf6-5712e84c7310":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"b5588228-9c46-4a4b-92ee-d140c327bca0":{"label":"Revenue Bags","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*bag*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["6749b404-4784-4fd6-8bf6-5712e84c7310","b5588228-9c46-4a4b-92ee-d140c327bca0"],"incompleteColumns":{}},"2031d0f8-01fc-4009-b1ad-a7b7ca9266c0":{"columns":{"1b199cb1-b47f-48e6-b209-74eb81b303f5":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"985e05c0-3a0b-4e55-84bb-1f02128388a9":{"label":"Revenue Cocktail Dresses","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*cocktail dress*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["1b199cb1-b47f-48e6-b209-74eb81b303f5","985e05c0-3a0b-4e55-84bb-1f02128388a9"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":false,"enhancements":{}},"title":"[eCommerce] Promotion Tracking"},{"version":"8.11.0","type":"lens","gridData":{"x":36,"y":7,"w":12,"h":7,"i":"7"},"panelIndex":"7","embeddableConfig":{"attributes":{"title":"Sold Products per Day","description":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-037375ae-9e23-4dd5-a4f0-5f117bb7dac1"}],"state":{"visualization":{"layerId":"037375ae-9e23-4dd5-a4f0-5f117bb7dac1","layerType":"data","metricAccessor":"c27bd77c-68e2-4d75-8fda-41c45d22f8d4","maxAccessor":"ce816876-e92d-4b1a-bbb0-ed7637fc0eea","showBar":true,"color":"#68BC00"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"037375ae-9e23-4dd5-a4f0-5f117bb7dac1":{"ignoreGlobalFilters":false,"columns":{"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"time_range","isBucketed":false,"scale":"ratio","references":[],"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0",{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1",1000]},60]},60]},24],"location":{"min":11,"max":45},"text":"time_range() / 1000 / 60 / 60 / 24"}],"location":{"min":0,"max":46},"text":"count() / (time_range() / 1000 / 60 / 60 / 24)"}},"references":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1"],"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4":{"label":"Trxns / day","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"format":{"id":"number"},"formula":"count() / (time_range() / 1000 / 60 / 60 / 24)","isFormulaBroken":false},"references":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2"],"customLabel":true},"ce816876-e92d-4b1a-bbb0-ed7637fc0eea":{"label":"Static value: 300","dataType":"number","operationType":"static_value","isStaticValue":true,"isBucketed":false,"scale":"ratio","params":{"value":"300"},"references":[]}},"columnOrder":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2","c27bd77c-68e2-4d75-8fda-41c45d22f8d4","ce816876-e92d-4b1a-bbb0-ed7637fc0eea"],"incompleteColumns":{}}}},"indexpattern":{"layers":{}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"timeRange":{"from":"now-7d","to":"now"},"enhancements":{}}},{"version":"8.11.0","type":"search","gridData":{"x":0,"y":54,"w":48,"h":18,"i":"10"},"panelIndex":"10","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_10"},{"version":"8.11.0","type":"map","gridData":{"x":0,"y":31,"w":24,"h":14,"i":"11"},"panelIndex":"11","embeddableConfig":{"isLayerTOCOpen":false,"hiddenLayers":[],"mapCenter":{"lat":45.88578,"lon":-15.07605,"zoom":2.11},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_11"},{"version":"8.11.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":7,"i":"a71cf076-6895-491c-8878-63592e429ed5"},"panelIndex":"a71cf076-6895-491c-8878-63592e429ed5","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_a71cf076-6895-491c-8878-63592e429ed5"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":0,"w":12,"h":7,"i":"75283285-dffd-48a7-a0c2-2235184b5282"},"panelIndex":"75283285-dffd-48a7-a0c2-2235184b5282","embeddableConfig":{"enhancements":{},"attributes":{"visualizationType":"lnsMetric","state":{"visualization":{"layerId":"c7478794-6767-4286-9d65-1c0ecd909dd8","layerType":"data","metricAccessor":"041db33b-5c9c-47f3-a5d3-ef5e255d1663"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"c7478794-6767-4286-9d65-1c0ecd909dd8":{"columnOrder":["041db33b-5c9c-47f3-a5d3-ef5e255d1663"],"columns":{"041db33b-5c9c-47f3-a5d3-ef5e255d1663":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Sum of revenue","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","params":{}}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}},"references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-c7478794-6767-4286-9d65-1c0ecd909dd8"}]},"hidePanelTitles":true},"title":"Sum of revenue"},{"version":"8.11.0","type":"lens","gridData":{"x":36,"y":0,"w":12,"h":7,"i":"58774330-b1b3-42dd-a04c-fbce9cc4d288"},"panelIndex":"58774330-b1b3-42dd-a04c-fbce9cc4d288","embeddableConfig":{"enhancements":{},"attributes":{"title":"Median spending","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-4fb42a8e-b133-43c8-805c-a38472053938"}],"state":{"visualization":{"layerId":"4fb42a8e-b133-43c8-805c-a38472053938","layerType":"data","metricAccessor":"020bbfdf-9ef8-4802-aa9e-342d2ea0bebf"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"4fb42a8e-b133-43c8-805c-a38472053938":{"columnOrder":["020bbfdf-9ef8-4802-aa9e-342d2ea0bebf"],"columns":{"020bbfdf-9ef8-4802-aa9e-342d2ea0bebf":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Median spending","operationType":"median","scale":"ratio","sourceField":"taxful_total_price","params":{}}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true},"title":"Median spending"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":7,"w":12,"h":7,"i":"b63ec47d-aace-4980-b928-6be8adafa5a4"},"panelIndex":"b63ec47d-aace-4980-b928-6be8adafa5a4","embeddableConfig":{"enhancements":{},"attributes":{"visualizationType":"lnsMetric","state":{"visualization":{"layerId":"667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17","layerType":"data","metricAccessor":"c52c2003-ae58-4604-bae7-52ba0fb38a01"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17":{"columnOrder":["c52c2003-ae58-4604-bae7-52ba0fb38a01"],"columns":{"c52c2003-ae58-4604-bae7-52ba0fb38a01":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Avg. items sold","operationType":"average","params":{"format":{"id":"number","params":{"decimals":1,"compact":true}}},"scale":"ratio","sourceField":"total_quantity"}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}},"references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17"}]},"hidePanelTitles":true},"title":"Avg. items sold"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":14,"w":24,"h":7,"i":"d9495793-80ba-4a9a-b0e3-d1155ec99b09"},"panelIndex":"d9495793-80ba-4a9a-b0e3-d1155ec99b09","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"b6093a53-884f-42c2-9fcc-ba56cfb66c53":{"columnOrder":["15c45f89-a149-443a-a830-aa8c3a9317db","2b41b3d8-2f62-407a-a866-960f254c679d","eadae280-2da3-4d1d-a0e1-f9733f89c15b","ddc92e50-4d5c-413e-b91b-3e504889fa65","5e31e5d3-2aaa-4475-a130-3b69bf2f748a"],"columns":{"15c45f89-a149-443a-a830-aa8c3a9317db":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"},"2b41b3d8-2f62-407a-a866-960f254c679d":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Total items","operationType":"sum","scale":"ratio","sourceField":"products.quantity"},"5e31e5d3-2aaa-4475-a130-3b69bf2f748a":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Tx. last week","operationType":"count","scale":"ratio","sourceField":"___records___","timeShift":"1w"},"ddc92e50-4d5c-413e-b91b-3e504889fa65":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Transactions","operationType":"count","scale":"ratio","sourceField":"___records___"},"eadae280-2da3-4d1d-a0e1-f9733f89c15b":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Last week","operationType":"sum","scale":"ratio","sourceField":"products.quantity","timeShift":"1w"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"curveType":"LINEAR","fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["2b41b3d8-2f62-407a-a866-960f254c679d","eadae280-2da3-4d1d-a0e1-f9733f89c15b","5e31e5d3-2aaa-4475-a130-3b69bf2f748a","ddc92e50-4d5c-413e-b91b-3e504889fa65"],"layerId":"b6093a53-884f-42c2-9fcc-ba56cfb66c53","position":"top","seriesType":"line","showGridlines":false,"xAccessor":"15c45f89-a149-443a-a830-aa8c3a9317db","yConfig":[{"color":"#b6e0d5","forAccessor":"eadae280-2da3-4d1d-a0e1-f9733f89c15b"},{"color":"#edafc4","forAccessor":"5e31e5d3-2aaa-4475-a130-3b69bf2f748a"}],"layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"line","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-b6093a53-884f-42c2-9fcc-ba56cfb66c53","type":"index-pattern"}]}},"title":"Transactions per day"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":31,"w":24,"h":14,"i":"bda054f7-2d06-4936-b461-365d1be621fa"},"panelIndex":"bda054f7-2d06-4936-b461-365d1be621fa","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"0731ee8b-31c5-4be9-92d9-69ee760465d7":{"columnOrder":["7bf8f089-1542-40bd-b349-45fdfc309ac6","826b2f39-b616-40b2-a222-972fdc1d7596","cfd45c47-fc41-430c-9e7a-b71dc0c916b0","bf51c1af-443e-49f4-a21f-54c87bfc5677","bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1","bf51c1af-443e-49f4-a21f-54c87bfc5677X2"],"columns":{"7bf8f089-1542-40bd-b349-45fdfc309ac6":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"},"826b2f39-b616-40b2-a222-972fdc1d7596":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"This week","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"bf51c1af-443e-49f4-a21f-54c87bfc5677":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Difference","operationType":"formula","params":{"format":{"id":"number","params":{"decimals":2}},"formula":"sum(taxful_total_price) - sum(taxful_total_price, shift=\'1w\')","isFormulaBroken":false},"references":["bf51c1af-443e-49f4-a21f-54c87bfc5677X2"],"scale":"ratio"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X1":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","timeShift":"1w"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X2":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"math","params":{"tinymathAst":{"args":["bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1"],"location":{"max":61,"min":0},"name":"subtract","text":"sum(taxful_total_price) - sum(taxful_total_price, shift=\'1w\')","type":"function"}},"references":["bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1"],"scale":"ratio"},"cfd45c47-fc41-430c-9e7a-b71dc0c916b0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"1 week ago","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","timeShift":"1w"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"columns":[{"columnId":"7bf8f089-1542-40bd-b349-45fdfc309ac6"},{"alignment":"left","columnId":"826b2f39-b616-40b2-a222-972fdc1d7596"},{"columnId":"cfd45c47-fc41-430c-9e7a-b71dc0c916b0"},{"colorMode":"text","columnId":"bf51c1af-443e-49f4-a21f-54c87bfc5677","isTransposed":false,"palette":{"name":"custom","params":{"colorStops":[{"color":"#D36086","stop":-10000},{"color":"#209280","stop":0}],"continuity":"above","name":"custom","rangeMax":0,"rangeMin":-10000,"rangeType":"number","steps":5,"stops":[{"color":"#D36086","stop":0},{"color":"#209280","stop":2249.03125}]},"type":"palette"}}],"layerId":"0731ee8b-31c5-4be9-92d9-69ee760465d7","layerType":"data","rowHeight":"single","rowHeightLines":1}},"visualizationType":"lnsDatatable","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-0731ee8b-31c5-4be9-92d9-69ee760465d7","type":"index-pattern"}]}},"title":"Daily comparison"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":45,"w":24,"h":9,"i":"d68e91dd-1539-48b0-9279-b43bba2054fe"},"panelIndex":"d68e91dd-1539-48b0-9279-b43bba2054fe","embeddableConfig":{"hidePanelTitles":false,"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"5ed846c2-a70b-4d9c-a244-f254bef763b8":{"columnOrder":["d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","7ac31901-277a-46e2-8128-8d684b2c1127"],"columns":{"7ac31901-277a-46e2-8128-8d684b2c1127":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Items","operationType":"count","scale":"ratio","sourceField":"___records___"},"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46":{"customLabel":true,"dataType":"string","isBucketed":true,"label":"Product name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"7ac31901-277a-46e2-8128-8d684b2c1127","type":"column"},"orderDirection":"desc","otherBucket":false,"size":5,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"products.product_name.keyword"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["7ac31901-277a-46e2-8128-8d684b2c1127"],"layerId":"5ed846c2-a70b-4d9c-a244-f254bef763b8","position":"top","seriesType":"bar_horizontal","showGridlines":false,"xAccessor":"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_horizontal","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-5ed846c2-a70b-4d9c-a244-f254bef763b8","type":"index-pattern"}]}},"title":"Top products this week"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":45,"w":24,"h":9,"i":"39d96714-152f-414b-992c-ce2492fc69f3"},"panelIndex":"39d96714-152f-414b-992c-ce2492fc69f3","embeddableConfig":{"timeRange":{"from":"now-2w","to":"now-1w"},"hidePanelTitles":false,"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"5ed846c2-a70b-4d9c-a244-f254bef763b8":{"columnOrder":["d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","7ac31901-277a-46e2-8128-8d684b2c1127"],"columns":{"7ac31901-277a-46e2-8128-8d684b2c1127":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Items","operationType":"count","scale":"ratio","sourceField":"___records___"},"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46":{"customLabel":true,"dataType":"string","isBucketed":true,"label":"Product name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"7ac31901-277a-46e2-8128-8d684b2c1127","type":"column"},"orderDirection":"desc","otherBucket":false,"size":5,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"products.product_name.keyword"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["7ac31901-277a-46e2-8128-8d684b2c1127"],"layerId":"5ed846c2-a70b-4d9c-a244-f254bef763b8","position":"top","seriesType":"bar_horizontal","showGridlines":false,"xAccessor":"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_horizontal","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-5ed846c2-a70b-4d9c-a244-f254bef763b8","type":"index-pattern"}]}},"title":"Top products last week"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":14,"w":24,"h":17,"i":"cd47b7cb-0ac0-43e0-b8c6-53489648bdef"},"panelIndex":"cd47b7cb-0ac0-43e0-b8c6-53489648bdef","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"97c63ea6-9305-4755-97d1-0f26817c6f9a":{"columnOrder":["9f61a7df-198e-4754-b34c-81ed544136ba","ebcb19af-0900-4439-949f-d8cd9bccde19","5575214b-7f21-4b6c-8bc1-34433c6a0c58"],"columns":{"5575214b-7f21-4b6c-8bc1-34433c6a0c58":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"___records___"},"9f61a7df-198e-4754-b34c-81ed544136ba":{"dataType":"string","isBucketed":true,"label":"Top values of category.keyword","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"5575214b-7f21-4b6c-8bc1-34433c6a0c58","type":"column"},"orderDirection":"desc","otherBucket":true,"size":10,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"category.keyword"},"ebcb19af-0900-4439-949f-d8cd9bccde19":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["5575214b-7f21-4b6c-8bc1-34433c6a0c58"],"layerId":"97c63ea6-9305-4755-97d1-0f26817c6f9a","position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"splitAccessor":"9f61a7df-198e-4754-b34c-81ed544136ba","xAccessor":"ebcb19af-0900-4439-949f-d8cd9bccde19","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_percentage_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-97c63ea6-9305-4755-97d1-0f26817c6f9a","type":"index-pattern"}]}},"title":"Breakdown by category"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":7,"w":24,"h":7,"i":"bdb525ab-270b-46f1-a847-dd29be19aadb"},"panelIndex":"bdb525ab-270b-46f1-a847-dd29be19aadb","embeddableConfig":{"enhancements":{},"hidePanelTitles":false,"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"c7478794-6767-4286-9d65-1c0ecd909dd8":{"columnOrder":["8289349e-6d1b-4abf-b164-0208183d2c34","041db33b-5c9c-47f3-a5d3-ef5e255d1663","041db33b-5c9c-47f3-a5d3-ef5e255d1663X0","041db33b-5c9c-47f3-a5d3-ef5e255d1663X1"],"columns":{"041db33b-5c9c-47f3-a5d3-ef5e255d1663":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"% of target ($10k)","operationType":"formula","params":{"format":{"id":"percent","params":{"decimals":0}},"formula":"sum(taxful_total_price) / 10000 - 1","isFormulaBroken":false},"references":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X1"],"scale":"ratio"},"041db33b-5c9c-47f3-a5d3-ef5e255d1663X0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Weekly revenue","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"041db33b-5c9c-47f3-a5d3-ef5e255d1663X1":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Weekly revenue","operationType":"math","params":{"tinymathAst":{"args":[{"args":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X0",10000],"location":{"max":32,"min":0},"name":"divide","text":"sum(taxful_total_price) / 10000 ","type":"function"},1],"location":{"max":35,"min":0},"name":"subtract","text":"sum(taxful_total_price) / 10000 - 1","type":"function"}},"references":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X0"],"scale":"ratio"},"8289349e-6d1b-4abf-b164-0208183d2c34":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["041db33b-5c9c-47f3-a5d3-ef5e255d1663"],"layerId":"c7478794-6767-4286-9d65-1c0ecd909dd8","seriesType":"bar_stacked","xAccessor":"8289349e-6d1b-4abf-b164-0208183d2c34","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-c7478794-6767-4286-9d65-1c0ecd909dd8","type":"index-pattern"}]}},"title":"% of target revenue ($10k)"}]', + '[{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":21,"w":24,"h":10,"i":"5"},"panelIndex":"5","embeddableConfig":{"attributes":{"title":"[eCommerce] Promotion Tracking (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-1d08a43c-8913-4692-a3e0-8d77902f6e46"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-9725cdbd-a9f3-479f-a349-0f11244e5239"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-2031d0f8-01fc-4009-b1ad-a7b7ca9266c0"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"xy-visualization-layer-192ad2e4-2bb7-44a9-b345-e96045fa6ccd"}],"state":{"visualization":{"legend":{"isVisible":true,"showSingleSeries":true,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0,"yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"line","layerType":"data","layerId":"e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e","accessors":["a69956c9-43cd-4756-a3c0-e93cb1502a0b"],"yConfig":[{"forAccessor":"a69956c9-43cd-4756-a3c0-e93cb1502a0b","axisMode":"left"}],"xAccessor":"f3cc8168-6360-4727-a410-a57f5a325091","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"1d08a43c-8913-4692-a3e0-8d77902f6e46","accessors":["9a3d8abd-81a5-40ae-9616-020d5a5b2ee2"],"yConfig":[{"forAccessor":"9a3d8abd-81a5-40ae-9616-020d5a5b2ee2","axisMode":"left"}],"xAccessor":"644b06ea-73a3-47b1-9b40-3035844c4621","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"9725cdbd-a9f3-479f-a349-0f11244e5239","accessors":["b5588228-9c46-4a4b-92ee-d140c327bca0"],"yConfig":[{"forAccessor":"b5588228-9c46-4a4b-92ee-d140c327bca0","axisMode":"left"}],"xAccessor":"6749b404-4784-4fd6-8bf6-5712e84c7310","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"2031d0f8-01fc-4009-b1ad-a7b7ca9266c0","accessors":["985e05c0-3a0b-4e55-84bb-1f02128388a9"],"yConfig":[{"forAccessor":"985e05c0-3a0b-4e55-84bb-1f02128388a9","axisMode":"left"}],"xAccessor":"1b199cb1-b47f-48e6-b209-74eb81b303f5","palette":{"name":"default","type":"palette"}},{"layerId":"192ad2e4-2bb7-44a9-b345-e96045fa6ccd","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"c8c30be0-b88f-11e8-a451-f37365e9f268","label":"Event","key":{"type":"point_in_time"},"color":"#194D33","timeField":"order_date","icon":"bell","filter":{"type":"kibana_query","query":"taxful_total_price:>250","language":"lucene"},"extraFields":["taxful_total_price"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e":{"columns":{"f3cc8168-6360-4727-a410-a57f5a325091":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"a69956c9-43cd-4756-a3c0-e93cb1502a0b":{"label":"Revenue Trousers","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*trouser*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["f3cc8168-6360-4727-a410-a57f5a325091","a69956c9-43cd-4756-a3c0-e93cb1502a0b"],"incompleteColumns":{}},"1d08a43c-8913-4692-a3e0-8d77902f6e46":{"columns":{"644b06ea-73a3-47b1-9b40-3035844c4621":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"9a3d8abd-81a5-40ae-9616-020d5a5b2ee2":{"label":"Revenue Watches","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*watch*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["644b06ea-73a3-47b1-9b40-3035844c4621","9a3d8abd-81a5-40ae-9616-020d5a5b2ee2"],"incompleteColumns":{}},"9725cdbd-a9f3-479f-a349-0f11244e5239":{"columns":{"6749b404-4784-4fd6-8bf6-5712e84c7310":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"b5588228-9c46-4a4b-92ee-d140c327bca0":{"label":"Revenue Bags","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*bag*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["6749b404-4784-4fd6-8bf6-5712e84c7310","b5588228-9c46-4a4b-92ee-d140c327bca0"],"incompleteColumns":{}},"2031d0f8-01fc-4009-b1ad-a7b7ca9266c0":{"columns":{"1b199cb1-b47f-48e6-b209-74eb81b303f5":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"985e05c0-3a0b-4e55-84bb-1f02128388a9":{"label":"Revenue Cocktail Dresses","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*cocktail dress*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["1b199cb1-b47f-48e6-b209-74eb81b303f5","985e05c0-3a0b-4e55-84bb-1f02128388a9"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":false,"enhancements":{}},"title":"[eCommerce] Promotion Tracking"},{"version":"8.11.0","type":"lens","gridData":{"x":36,"y":7,"w":12,"h":7,"i":"7"},"panelIndex":"7","embeddableConfig":{"attributes":{"title":"Sold Products per Day","description":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-037375ae-9e23-4dd5-a4f0-5f117bb7dac1"}],"state":{"visualization":{"layerId":"037375ae-9e23-4dd5-a4f0-5f117bb7dac1","layerType":"data","metricAccessor":"c27bd77c-68e2-4d75-8fda-41c45d22f8d4","maxAccessor":"ce816876-e92d-4b1a-bbb0-ed7637fc0eea","showBar":true,"palette":{"type":"palette","name":"status","params":{"name":"status","reverse":true,"rangeType":"percent","rangeMin":0,"rangeMax":100,"progression":"fixed","stops":[{"color":"#23be8f","stop":33.33},{"color":"#fcd279","stop":66.66},{"color":"#f66d64","stop":100}],"steps":3,"colorStops":[],"continuity":"all","maxSteps":5}}},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"037375ae-9e23-4dd5-a4f0-5f117bb7dac1":{"ignoreGlobalFilters":false,"columns":{"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"time_range","isBucketed":false,"scale":"ratio","references":[],"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0",{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1",1000]},60]},60]},24],"location":{"min":11,"max":45},"text":"time_range() / 1000 / 60 / 60 / 24"}],"location":{"min":0,"max":46},"text":"count() / (time_range() / 1000 / 60 / 60 / 24)"}},"references":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1"],"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4":{"label":"Trxns / day","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"format":{"id":"number"},"formula":"count() / (time_range() / 1000 / 60 / 60 / 24)","isFormulaBroken":false},"references":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2"],"customLabel":true},"ce816876-e92d-4b1a-bbb0-ed7637fc0eea":{"label":"Static value: 300","dataType":"number","operationType":"static_value","isStaticValue":true,"isBucketed":false,"scale":"ratio","params":{"value":"300"},"references":[]}},"columnOrder":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2","c27bd77c-68e2-4d75-8fda-41c45d22f8d4","ce816876-e92d-4b1a-bbb0-ed7637fc0eea"],"incompleteColumns":{}}}},"indexpattern":{"layers":{}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"timeRange":{"from":"now-7d","to":"now"},"enhancements":{}}},{"version":"8.11.0","type":"search","gridData":{"x":0,"y":54,"w":48,"h":18,"i":"10"},"panelIndex":"10","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_10"},{"version":"8.11.0","type":"map","gridData":{"x":0,"y":31,"w":24,"h":14,"i":"11"},"panelIndex":"11","embeddableConfig":{"isLayerTOCOpen":false,"hiddenLayers":[],"mapCenter":{"lat":45.88578,"lon":-15.07605,"zoom":2.11},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_11"},{"version":"8.11.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":7,"i":"a71cf076-6895-491c-8878-63592e429ed5"},"panelIndex":"a71cf076-6895-491c-8878-63592e429ed5","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_a71cf076-6895-491c-8878-63592e429ed5"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":0,"w":12,"h":7,"i":"75283285-dffd-48a7-a0c2-2235184b5282"},"panelIndex":"75283285-dffd-48a7-a0c2-2235184b5282","embeddableConfig":{"enhancements":{},"attributes":{"visualizationType":"lnsMetric","state":{"visualization":{"layerId":"c7478794-6767-4286-9d65-1c0ecd909dd8","layerType":"data","metricAccessor":"041db33b-5c9c-47f3-a5d3-ef5e255d1663"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"c7478794-6767-4286-9d65-1c0ecd909dd8":{"columnOrder":["041db33b-5c9c-47f3-a5d3-ef5e255d1663"],"columns":{"041db33b-5c9c-47f3-a5d3-ef5e255d1663":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Sum of revenue","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","params":{}}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}},"references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-c7478794-6767-4286-9d65-1c0ecd909dd8"}]},"hidePanelTitles":true},"title":"Sum of revenue"},{"version":"8.11.0","type":"lens","gridData":{"x":36,"y":0,"w":12,"h":7,"i":"58774330-b1b3-42dd-a04c-fbce9cc4d288"},"panelIndex":"58774330-b1b3-42dd-a04c-fbce9cc4d288","embeddableConfig":{"enhancements":{},"attributes":{"title":"Median spending","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-4fb42a8e-b133-43c8-805c-a38472053938"}],"state":{"visualization":{"layerId":"4fb42a8e-b133-43c8-805c-a38472053938","layerType":"data","metricAccessor":"020bbfdf-9ef8-4802-aa9e-342d2ea0bebf"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"4fb42a8e-b133-43c8-805c-a38472053938":{"columnOrder":["020bbfdf-9ef8-4802-aa9e-342d2ea0bebf"],"columns":{"020bbfdf-9ef8-4802-aa9e-342d2ea0bebf":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Median spending","operationType":"median","scale":"ratio","sourceField":"taxful_total_price","params":{}}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true},"title":"Median spending"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":7,"w":12,"h":7,"i":"b63ec47d-aace-4980-b928-6be8adafa5a4"},"panelIndex":"b63ec47d-aace-4980-b928-6be8adafa5a4","embeddableConfig":{"enhancements":{},"attributes":{"visualizationType":"lnsMetric","state":{"visualization":{"layerId":"667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17","layerType":"data","metricAccessor":"c52c2003-ae58-4604-bae7-52ba0fb38a01"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17":{"columnOrder":["c52c2003-ae58-4604-bae7-52ba0fb38a01"],"columns":{"c52c2003-ae58-4604-bae7-52ba0fb38a01":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Avg. items sold","operationType":"average","params":{"format":{"id":"number","params":{"decimals":1,"compact":true}}},"scale":"ratio","sourceField":"total_quantity"}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}},"references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17"}]},"hidePanelTitles":true},"title":"Avg. items sold"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":14,"w":24,"h":7,"i":"d9495793-80ba-4a9a-b0e3-d1155ec99b09"},"panelIndex":"d9495793-80ba-4a9a-b0e3-d1155ec99b09","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"b6093a53-884f-42c2-9fcc-ba56cfb66c53":{"columnOrder":["15c45f89-a149-443a-a830-aa8c3a9317db","2b41b3d8-2f62-407a-a866-960f254c679d","eadae280-2da3-4d1d-a0e1-f9733f89c15b","ddc92e50-4d5c-413e-b91b-3e504889fa65","5e31e5d3-2aaa-4475-a130-3b69bf2f748a"],"columns":{"15c45f89-a149-443a-a830-aa8c3a9317db":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"},"2b41b3d8-2f62-407a-a866-960f254c679d":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Total items","operationType":"sum","scale":"ratio","sourceField":"products.quantity"},"5e31e5d3-2aaa-4475-a130-3b69bf2f748a":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Tx. last week","operationType":"count","scale":"ratio","sourceField":"___records___","timeShift":"1w"},"ddc92e50-4d5c-413e-b91b-3e504889fa65":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Transactions","operationType":"count","scale":"ratio","sourceField":"___records___"},"eadae280-2da3-4d1d-a0e1-f9733f89c15b":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Last week","operationType":"sum","scale":"ratio","sourceField":"products.quantity","timeShift":"1w"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"curveType":"LINEAR","fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["2b41b3d8-2f62-407a-a866-960f254c679d","eadae280-2da3-4d1d-a0e1-f9733f89c15b","5e31e5d3-2aaa-4475-a130-3b69bf2f748a","ddc92e50-4d5c-413e-b91b-3e504889fa65"],"layerId":"b6093a53-884f-42c2-9fcc-ba56cfb66c53","position":"top","seriesType":"line","showGridlines":false,"xAccessor":"15c45f89-a149-443a-a830-aa8c3a9317db","yConfig":[],"layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"line","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-b6093a53-884f-42c2-9fcc-ba56cfb66c53","type":"index-pattern"}]}},"title":"Transactions per day"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":31,"w":24,"h":14,"i":"bda054f7-2d06-4936-b461-365d1be621fa"},"panelIndex":"bda054f7-2d06-4936-b461-365d1be621fa","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"0731ee8b-31c5-4be9-92d9-69ee760465d7":{"columnOrder":["7bf8f089-1542-40bd-b349-45fdfc309ac6","826b2f39-b616-40b2-a222-972fdc1d7596","cfd45c47-fc41-430c-9e7a-b71dc0c916b0","bf51c1af-443e-49f4-a21f-54c87bfc5677","bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1","bf51c1af-443e-49f4-a21f-54c87bfc5677X2"],"columns":{"7bf8f089-1542-40bd-b349-45fdfc309ac6":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"},"826b2f39-b616-40b2-a222-972fdc1d7596":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"This week","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"bf51c1af-443e-49f4-a21f-54c87bfc5677":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Difference","operationType":"formula","params":{"format":{"id":"number","params":{"decimals":2}},"formula":"sum(taxful_total_price) - sum(taxful_total_price, shift=\'1w\')","isFormulaBroken":false},"references":["bf51c1af-443e-49f4-a21f-54c87bfc5677X2"],"scale":"ratio"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X1":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","timeShift":"1w"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X2":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"math","params":{"tinymathAst":{"args":["bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1"],"location":{"max":61,"min":0},"name":"subtract","text":"sum(taxful_total_price) - sum(taxful_total_price, shift=\'1w\')","type":"function"}},"references":["bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1"],"scale":"ratio"},"cfd45c47-fc41-430c-9e7a-b71dc0c916b0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"1 week ago","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","timeShift":"1w"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"columns":[{"columnId":"7bf8f089-1542-40bd-b349-45fdfc309ac6"},{"alignment":"left","columnId":"826b2f39-b616-40b2-a222-972fdc1d7596"},{"columnId":"cfd45c47-fc41-430c-9e7a-b71dc0c916b0"},{"colorMode":"text","columnId":"bf51c1af-443e-49f4-a21f-54c87bfc5677","isTransposed":false,"palette":{"type":"palette","name":"status","params":{"continuity":"above","name":"status","rangeMax":null,"rangeMin":-2284.2265625,"rangeType":"percent","steps":5,"stops":[{"color":"#23be8f","stop":0},{"color":"#9dedce","stop":20},{"color":"#fcd279","stop":40},{"color":"#ffc0b8","stop":60},{"color":"#f66d64","stop":80}],"reverse":true}}}],"layerId":"0731ee8b-31c5-4be9-92d9-69ee760465d7","layerType":"data","rowHeight":"single","rowHeightLines":1}},"visualizationType":"lnsDatatable","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-0731ee8b-31c5-4be9-92d9-69ee760465d7","type":"index-pattern"}]}},"title":"Daily comparison"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":45,"w":24,"h":9,"i":"d68e91dd-1539-48b0-9279-b43bba2054fe"},"panelIndex":"d68e91dd-1539-48b0-9279-b43bba2054fe","embeddableConfig":{"hidePanelTitles":false,"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"5ed846c2-a70b-4d9c-a244-f254bef763b8":{"columnOrder":["d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","7ac31901-277a-46e2-8128-8d684b2c1127"],"columns":{"7ac31901-277a-46e2-8128-8d684b2c1127":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Items","operationType":"count","scale":"ratio","sourceField":"___records___"},"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46":{"customLabel":true,"dataType":"string","isBucketed":true,"label":"Product name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"7ac31901-277a-46e2-8128-8d684b2c1127","type":"column"},"orderDirection":"desc","otherBucket":false,"size":5,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"products.product_name.keyword"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["7ac31901-277a-46e2-8128-8d684b2c1127"],"layerId":"5ed846c2-a70b-4d9c-a244-f254bef763b8","position":"top","seriesType":"bar_horizontal","showGridlines":false,"xAccessor":"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_horizontal","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-5ed846c2-a70b-4d9c-a244-f254bef763b8","type":"index-pattern"}]}},"title":"Top products this week"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":45,"w":24,"h":9,"i":"39d96714-152f-414b-992c-ce2492fc69f3"},"panelIndex":"39d96714-152f-414b-992c-ce2492fc69f3","embeddableConfig":{"timeRange":{"from":"now-2w","to":"now-1w"},"hidePanelTitles":false,"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"5ed846c2-a70b-4d9c-a244-f254bef763b8":{"columnOrder":["d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","7ac31901-277a-46e2-8128-8d684b2c1127"],"columns":{"7ac31901-277a-46e2-8128-8d684b2c1127":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Items","operationType":"count","scale":"ratio","sourceField":"___records___"},"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46":{"customLabel":true,"dataType":"string","isBucketed":true,"label":"Product name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"7ac31901-277a-46e2-8128-8d684b2c1127","type":"column"},"orderDirection":"desc","otherBucket":false,"size":5,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"products.product_name.keyword"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["7ac31901-277a-46e2-8128-8d684b2c1127"],"layerId":"5ed846c2-a70b-4d9c-a244-f254bef763b8","position":"top","seriesType":"bar_horizontal","showGridlines":false,"xAccessor":"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_horizontal","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-5ed846c2-a70b-4d9c-a244-f254bef763b8","type":"index-pattern"}]}},"title":"Top products last week"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":14,"w":24,"h":17,"i":"cd47b7cb-0ac0-43e0-b8c6-53489648bdef"},"panelIndex":"cd47b7cb-0ac0-43e0-b8c6-53489648bdef","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"97c63ea6-9305-4755-97d1-0f26817c6f9a":{"columnOrder":["9f61a7df-198e-4754-b34c-81ed544136ba","ebcb19af-0900-4439-949f-d8cd9bccde19","5575214b-7f21-4b6c-8bc1-34433c6a0c58"],"columns":{"5575214b-7f21-4b6c-8bc1-34433c6a0c58":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"___records___"},"9f61a7df-198e-4754-b34c-81ed544136ba":{"dataType":"string","isBucketed":true,"label":"Top values of category.keyword","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"5575214b-7f21-4b6c-8bc1-34433c6a0c58","type":"column"},"orderDirection":"desc","otherBucket":true,"size":10,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"category.keyword"},"ebcb19af-0900-4439-949f-d8cd9bccde19":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["5575214b-7f21-4b6c-8bc1-34433c6a0c58"],"layerId":"97c63ea6-9305-4755-97d1-0f26817c6f9a","position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"splitAccessor":"9f61a7df-198e-4754-b34c-81ed544136ba","xAccessor":"ebcb19af-0900-4439-949f-d8cd9bccde19","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_percentage_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-97c63ea6-9305-4755-97d1-0f26817c6f9a","type":"index-pattern"}]}},"title":"Breakdown by category"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":7,"w":24,"h":7,"i":"bdb525ab-270b-46f1-a847-dd29be19aadb"},"panelIndex":"bdb525ab-270b-46f1-a847-dd29be19aadb","embeddableConfig":{"enhancements":{},"hidePanelTitles":false,"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"c7478794-6767-4286-9d65-1c0ecd909dd8":{"columnOrder":["8289349e-6d1b-4abf-b164-0208183d2c34","041db33b-5c9c-47f3-a5d3-ef5e255d1663","041db33b-5c9c-47f3-a5d3-ef5e255d1663X0","041db33b-5c9c-47f3-a5d3-ef5e255d1663X1"],"columns":{"041db33b-5c9c-47f3-a5d3-ef5e255d1663":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"% of target ($10k)","operationType":"formula","params":{"format":{"id":"percent","params":{"decimals":0}},"formula":"sum(taxful_total_price) / 10000 - 1","isFormulaBroken":false},"references":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X1"],"scale":"ratio"},"041db33b-5c9c-47f3-a5d3-ef5e255d1663X0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Weekly revenue","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"041db33b-5c9c-47f3-a5d3-ef5e255d1663X1":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Weekly revenue","operationType":"math","params":{"tinymathAst":{"args":[{"args":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X0",10000],"location":{"max":32,"min":0},"name":"divide","text":"sum(taxful_total_price) / 10000 ","type":"function"},1],"location":{"max":35,"min":0},"name":"subtract","text":"sum(taxful_total_price) / 10000 - 1","type":"function"}},"references":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X0"],"scale":"ratio"},"8289349e-6d1b-4abf-b164-0208183d2c34":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["041db33b-5c9c-47f3-a5d3-ef5e255d1663"],"layerId":"c7478794-6767-4286-9d65-1c0ecd909dd8","seriesType":"bar_stacked","xAccessor":"8289349e-6d1b-4abf-b164-0208183d2c34","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-c7478794-6767-4286-9d65-1c0ecd909dd8","type":"index-pattern"}]}},"title":"% of target revenue ($10k)"}]', timeFrom: 'now-7d', title: '[eCommerce] Revenue Dashboard', timeTo: 'now', diff --git a/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts index 0b072bd1a4389..3f4d7e2bc6ada 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts @@ -148,7 +148,7 @@ export const getSavedObjects = (): SavedObject[] => [ optionsJSON: '{"useMargins":true,"syncColors":false,"syncCursor":true,"syncTooltips":false,"hidePanelTitles":false}', panelsJSON: - '[{"version":"8.8.0","type":"search","gridData":{"x":0,"y":69,"w":48,"h":15,"i":"4"},"panelIndex":"4","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_4"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":16,"w":24,"h":9,"i":"7"},"panelIndex":"7","embeddableConfig":{"attributes":{"title":"[Flights] Delays & Cancellations (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce"},{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"xy-visualization-layer-10fed425-accd-411b-a773-ee825bc3945b"}],"state":{"visualization":{"legend":{"isVisible":false,"showSingleSeries":false,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0.5,"yLeftExtent":{"upperBound":1,"mode":"custom"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"area","layerType":"data","layerId":"dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce","accessors":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4a"],"yConfig":[{"forAccessor":"b9d6187b-8a7e-4c49-bffd-7a60cc075a4a","color":"rgba(0,156,224,1)","axisMode":"left"}],"xAccessor":"6944431b-f90a-4dab-a282-0961cb97edd1","palette":{"name":"default","type":"palette"}},{"layerId":"10fed425-accd-411b-a773-ee825bc3945b","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"53b7dff0-4c89-11e8-a66a-6989ad5a0a39","label":"Event","key":{"type":"point_in_time"},"timeField":"timestamp","color":"#0062B1","icon":"alert","filter":{"type":"kibana_query","query":"FlightDelay:true AND Cancelled:true","language":"lucene"},"extraFields":["FlightDelay","Cancelled","Carrier"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce":{"columns":{"6944431b-f90a-4dab-a282-0961cb97edd1":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true,"dropPartials":false}},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay:true","language":"lucene"},"params":{"emptyAsNull":false},"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"*","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1"],"location":{"min":0,"max":49},"text":"count(lucene=\'FlightDelay:true\') / count(kql=\'*\')"}},"references":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1"],"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4a":{"label":"Percent Delays","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"format":{"id":"percent"},"formula":"count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","isFormulaBroken":false},"references":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2"],"customLabel":true}},"columnOrder":["6944431b-f90a-4dab-a282-0961cb97edd1","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2","b9d6187b-8a7e-4c49-bffd-7a60cc075a4a"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delays & Cancellations"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":58,"w":24,"h":11,"i":"10"},"panelIndex":"10","embeddableConfig":{"attributes":{"title":"[Flights] Delay Buckets (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-247b176d-e81d-47dc-bbd1-4de85d098961"},{"type":"index-pattern","name":"c61f29fc-1ff3-4d46-a6c2-bde8a5b97f4a","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"legend":{"isVisible":false,"position":"right","legendSize":"auto","shouldTruncate":true,"maxLines":1,"showSingleSeries":true},"valueLabels":"hide","curveType":"LINEAR","yTitle":"Count","yLeftExtent":{"mode":"full","enforce":true},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":-90},"gridlinesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"layerId":"247b176d-e81d-47dc-bbd1-4de85d098961","accessors":["c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da"],"layerType":"data","seriesType":"bar_stacked","xAccessor":"c7936be7-e59b-424e-a912-69ba820d8e24","simpleView":false,"palette":{"type":"palette","name":"default"},"yConfig":[{"forAccessor":"c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da","axisMode":"left","color":"#1F78C1"}],"xScaleType":"linear","isHistogram":true}]},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"negate":true,"disabled":false,"alias":null,"type":"phrase","key":"FlightDelayMin","value":"0","params":{"query":0,"type":"phrase"},"index":"c61f29fc-1ff3-4d46-a6c2-bde8a5b97f4a"},"query":{"match":{"FlightDelayMin":{"query":0,"type":"phrase"}}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"247b176d-e81d-47dc-bbd1-4de85d098961":{"columns":{"c7936be7-e59b-424e-a912-69ba820d8e24":{"label":"Flight Delay Minutes","dataType":"number","operationType":"range","sourceField":"FlightDelayMin","isBucketed":true,"scale":"interval","params":{"includeEmptyRows":false,"type":"histogram","ranges":[{"from":0,"to":1000,"label":""}],"maxBars":"auto"},"customLabel":true},"c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da":{"label":"Count","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["c7936be7-e59b-424e-a912-69ba820d8e24","c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delay Buckets"},{"version":"8.8.0","type":"map","gridData":{"x":0,"y":36,"w":24,"h":22,"i":"23"},"panelIndex":"23","embeddableConfig":{"isLayerTOCOpen":true,"hiddenLayers":[],"mapCenter":{"lat":48.72307,"lon":-115.18171,"zoom":4.28},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_23"},{"version":"8.8.0","type":"visualization","gridData":{"x":24,"y":36,"w":24,"h":22,"i":"31"},"panelIndex":"31","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_31"},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":8,"i":"6afc61f7-e2d5-45a3-9e7a-281160ad3eb9"},"panelIndex":"6afc61f7-e2d5-45a3-9e7a-281160ad3eb9","embeddableConfig":{"savedVis":{"title":"[Flights] Markdown Instructions","description":"","type":"markdown","params":{"fontSize":10,"openLinksInNewTab":true,"markdown":"## Sample Flight data\\nThis dashboard contains sample data for you to play with. You can view it, search it, and interact with the visualizations. For more information about Kibana, check our [docs](https://www.elastic.co/guide/en/kibana/current/index.html)."},"uiState":{},"data":{"aggs":[],"searchSource":{}}},"hidePanelTitles":true,"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":0,"w":8,"h":8,"i":"392b4936-f753-47bc-a98d-a4e41a0a4cd4"},"panelIndex":"392b4936-f753-47bc-a98d-a4e41a0a4cd4","embeddableConfig":{"enhancements":{},"attributes":{"title":"[Flights] Total Flights","description":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-8fa993db-c147-4954-adf7-4ff264d42576"}],"state":{"visualization":{"layerId":"8fa993db-c147-4954-adf7-4ff264d42576","layerType":"data","metricAccessor":"81124c45-6ab6-42f4-8859-495d55eb8065"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"8fa993db-c147-4954-adf7-4ff264d42576":{"columns":{"81124c45-6ab6-42f4-8859-495d55eb8065":{"label":"Total flights","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true}},"columnOrder":["81124c45-6ab6-42f4-8859-495d55eb8065"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true}},{"version":"8.8.0","type":"lens","gridData":{"x":32,"y":0,"w":8,"h":4,"i":"9271deff-5a61-4665-83fc-f9fdc6bf0c0b"},"panelIndex":"9271deff-5a61-4665-83fc-f9fdc6bf0c0b","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"7e8fe9b1-f45c-4f3d-9561-30febcd357ec"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"7e8fe9b1-f45c-4f3d-9561-30febcd357ec":{"label":"Delayed","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'FlightDelay : true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay : true","language":"kuery"},"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"location":{"min":0,"max":41},"text":"count(kql=\'FlightDelay : true\') / count()"}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"customLabel":true}},"columnOrder":["7e8fe9b1-f45c-4f3d-9561-30febcd357ec","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":40,"y":0,"w":8,"h":4,"i":"aa591c29-1a31-4ee1-a71d-b829c06fd162"},"panelIndex":"aa591c29-1a31-4ee1-a71d-b829c06fd162","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"},{"type":"index-pattern","name":"c804c161-375f-4d52-a1cc-2e98b966957d","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"c7851241-5526-499a-960b-357af8c2ce5b"},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"alias":null,"negate":false,"disabled":false,"type":"phrase","key":"FlightDelay","params":{"query":true},"index":"c804c161-375f-4d52-a1cc-2e98b966957d"},"query":{"match_phrase":{"FlightDelay":true}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"c7851241-5526-499a-960b-357af8c2ce5b":{"label":"Delayed vs 1 week earlier","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count() / count(shift=\'1w\') - 1","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX2"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX2":{"label":"Part of Delayed","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"subtract","args":[{"type":"function","name":"divide","args":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"location":{"min":0,"max":28},"text":"count() / count(shift=\'1w\') "},1],"location":{"min":0,"max":31},"text":"count() / count(shift=\'1w\') - 1"}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX0":{"label":"Part of Delayed","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX1":{"label":"Part of Delayed","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","timeShift":"1w","customLabel":true}},"columnOrder":["c7851241-5526-499a-960b-357af8c2ce5b","c7851241-5526-499a-960b-357af8c2ce5bX2","c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":32,"y":4,"w":8,"h":4,"i":"b766e3b8-4544-46ed-99e6-9ecc4847e2a2"},"panelIndex":"b766e3b8-4544-46ed-99e6-9ecc4847e2a2","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"7e8fe9b1-f45c-4f3d-9561-30febcd357ec"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"7e8fe9b1-f45c-4f3d-9561-30febcd357ec":{"label":"Cancelled","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'Cancelled : true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0":{"label":"Part of Cancelled","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"Cancelled : true","language":"kuery"},"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1":{"label":"Part of Cancelled","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2":{"label":"Part of Cancelled","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"location":{"min":0,"max":39},"text":"count(kql=\'Cancelled : true\') / count()"}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"customLabel":true}},"columnOrder":["7e8fe9b1-f45c-4f3d-9561-30febcd357ec","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":40,"y":4,"w":8,"h":4,"i":"2e33ade5-96e5-40b4-b460-493e5d4fa834"},"panelIndex":"2e33ade5-96e5-40b4-b460-493e5d4fa834","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"},{"type":"index-pattern","name":"14cea722-a629-4c69-a06d-94a4a4c9a718","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"c7851241-5526-499a-960b-357af8c2ce5b"},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"alias":null,"negate":false,"disabled":false,"type":"phrase","key":"Cancelled","params":{"query":true},"index":"14cea722-a629-4c69-a06d-94a4a4c9a718"},"query":{"match_phrase":{"Cancelled":true}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"c7851241-5526-499a-960b-357af8c2ce5b":{"label":"Cancelled vs 1 week earlier","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count() / count(shift=\'1w\') - 1","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX2"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX2":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"subtract","args":[{"type":"function","name":"divide","args":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"location":{"min":0,"max":28},"text":"count() / count(shift=\'1w\') "},1],"location":{"min":0,"max":31},"text":"count() / count(shift=\'1w\') - 1"}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX0":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX1":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","timeShift":"1w","customLabel":true}},"columnOrder":["c7851241-5526-499a-960b-357af8c2ce5b","c7851241-5526-499a-960b-357af8c2ce5bX2","c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":8,"w":24,"h":8,"i":"086ac2e9-dd16-4b45-92b8-1e43ff7e3f65"},"panelIndex":"086ac2e9-dd16-4b45-92b8-1e43ff7e3f65","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"formBased":{"layers":{"03c34665-471c-49c7-acf1-5a11f517421c":{"columns":{"a5b94e30-4e77-4b0a-9187-1d8b13de1456":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true}},"3e267327-7317-4310-aee3-320e0f7c1e70":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["a5b94e30-4e77-4b0a-9187-1d8b13de1456","3e267327-7317-4310-aee3-320e0f7c1e70"],"incompleteColumns":{}}}}},"visualization":{"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"valueLabels":"hide","fittingFunction":"None","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"custom","lowerBound":0,"upperBound":1},"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"layerId":"03c34665-471c-49c7-acf1-5a11f517421c","accessors":["3e267327-7317-4310-aee3-320e0f7c1e70"],"position":"top","seriesType":"bar_stacked","showGridlines":false,"xAccessor":"a5b94e30-4e77-4b0a-9187-1d8b13de1456","layerType":"data"}]},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-03c34665-471c-49c7-acf1-5a11f517421c","type":"index-pattern"}]},"hidePanelTitles":false,"enhancements":{}},"title":"[Flights] Flight count"},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":8,"w":24,"h":28,"i":"fb86b32f-fb7a-45cf-9511-f366fef51bbd"},"panelIndex":"fb86b32f-fb7a-45cf-9511-f366fef51bbd","embeddableConfig":{"attributes":{"title":"Cities by delay, cancellation","type":"lens","visualizationType":"lnsDatatable","state":{"datasourceStates":{"formBased":{"layers":{"f26e8f7a-4118-4227-bea0-5c02d8b270f7":{"columns":{"3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0":{"label":"Top values of OriginCityName","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"OriginCityName","isBucketed":true,"params":{"size":1000,"orderBy":{"type":"alphabetical","fallback":true},"orderDirection":"asc","otherBucket":true,"missingBucket":false}},"52f6f2e9-6242-4c44-be63-b799150e7e60X0":{"label":"Part of Delay %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay : true ","language":"kuery"},"customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60X1":{"label":"Part of Delay %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60X2":{"label":"Part of Delay %","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1"],"location":{"min":0,"max":42},"text":"count(kql=\'FlightDelay : true \') / count()"}},"references":["52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1"],"customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60":{"label":"Delay %","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'FlightDelay : true \') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":0}}},"references":["52f6f2e9-6242-4c44-be63-b799150e7e60X2"],"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0":{"label":"Part of Cancel %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"Cancelled: true","language":"kuery"},"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1":{"label":"Part of Cancel %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2":{"label":"Part of Cancel %","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1"],"location":{"min":0,"max":38},"text":"count(kql=\'Cancelled: true\') / count()"}},"references":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1"],"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6":{"label":"Cancel %","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'Cancelled: true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":0}}},"references":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2"],"customLabel":true}},"columnOrder":["3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0","52f6f2e9-6242-4c44-be63-b799150e7e60","52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1","52f6f2e9-6242-4c44-be63-b799150e7e60X2","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6"],"incompleteColumns":{}}}}},"visualization":{"columns":[{"isTransposed":false,"columnId":"3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0","width":262.75},{"columnId":"52f6f2e9-6242-4c44-be63-b799150e7e60","isTransposed":false,"width":302.5,"colorMode":"cell","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#f7e0b8","stop":0.6},{"color":"#e7664c","stop":1}],"name":"custom","colorStops":[{"color":"#f7e0b8","stop":0.2},{"color":"#e7664c","stop":0.6}],"rangeType":"number","rangeMin":0.2,"rangeMax":0.6}},"alignment":"center"},{"columnId":"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6","isTransposed":false,"alignment":"center","colorMode":"cell","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#f7e0b8","stop":0.6},{"color":"#e7664c","stop":0.6666666666666666}],"rangeType":"number","name":"custom","colorStops":[{"color":"#f7e0b8","stop":0.2},{"color":"#e7664c","stop":0.6}],"rangeMin":0.2,"rangeMax":0.6}}}],"layerId":"f26e8f7a-4118-4227-bea0-5c02d8b270f7","sorting":{"columnId":"52f6f2e9-6242-4c44-be63-b799150e7e60","direction":"desc"},"layerType":"data","rowHeight":"single","rowHeightLines":1},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-f26e8f7a-4118-4227-bea0-5c02d8b270f7","type":"index-pattern"}]},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Most delayed cities"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":25,"w":24,"h":11,"i":"0cc42484-16f7-42ec-b38c-9bf8be69cde7"},"panelIndex":"0cc42484-16f7-42ec-b38c-9bf8be69cde7","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"formBased":{"layers":{"e80cc05e-c52a-4e5f-ac71-4b37274867f5":{"columns":{"caf7421e-93a3-439e-ab0a-fbdead93c21c":{"label":"Top values of FlightDelayType","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"FlightDelayType","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"0233d302-ec81-4fbe-96cb-7fac84cf035c"},"orderDirection":"desc","otherBucket":true,"missingBucket":false}},"13ec79e3-9d73-4536-9056-3d92802bb30a":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true}},"0233d302-ec81-4fbe-96cb-7fac84cf035c":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["caf7421e-93a3-439e-ab0a-fbdead93c21c","13ec79e3-9d73-4536-9056-3d92802bb30a","0233d302-ec81-4fbe-96cb-7fac84cf035c"],"incompleteColumns":{}}}}},"visualization":{"legend":{"isVisible":true,"position":"bottom","legendSize":"auto"},"valueLabels":"hide","fittingFunction":"None","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"axisTitlesVisibilitySettings":{"x":true,"yLeft":false,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_percentage_stacked","layers":[{"layerId":"e80cc05e-c52a-4e5f-ac71-4b37274867f5","accessors":["0233d302-ec81-4fbe-96cb-7fac84cf035c"],"position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"palette":{"type":"palette","name":"cool"},"xAccessor":"13ec79e3-9d73-4536-9056-3d92802bb30a","splitAccessor":"caf7421e-93a3-439e-ab0a-fbdead93c21c","layerType":"data"}]},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-e80cc05e-c52a-4e5f-ac71-4b37274867f5","type":"index-pattern"}]},"hidePanelTitles":false,"enhancements":{}},"title":"[Flights] Delay Type"},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":58,"w":12,"h":11,"i":"5d53db36-2d5a-4adc-af7b-cec4c1a294e0"},"panelIndex":"5d53db36-2d5a-4adc-af7b-cec4c1a294e0","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsPie","state":{"datasourceStates":{"formBased":{"layers":{"0c8e136b-a822-4fb3-836d-e06cbea4eea4":{"columns":{"d1cee8bf-34cf-4141-99d7-ff043ee77b56":{"label":"Top values of FlightDelayType","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"FlightDelayType","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"aa152ace-ee2d-447b-b86d-459bef4d7880"},"orderDirection":"desc","otherBucket":true,"missingBucket":false}},"aa152ace-ee2d-447b-b86d-459bef4d7880":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["d1cee8bf-34cf-4141-99d7-ff043ee77b56","aa152ace-ee2d-447b-b86d-459bef4d7880"],"incompleteColumns":{}}}}},"visualization":{"shape":"pie","palette":{"type":"palette","name":"cool"},"layers":[{"layerId":"0c8e136b-a822-4fb3-836d-e06cbea4eea4","numberDisplay":"percent","categoryDisplay":"default","legendDisplay":"default","nestedLegend":false,"layerType":"data","legendSize":"auto","primaryGroups":["d1cee8bf-34cf-4141-99d7-ff043ee77b56"],"metrics":["aa152ace-ee2d-447b-b86d-459bef4d7880"]}]},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"type":"phrase","key":"FlightDelayType","params":{"query":"No Delay"},"disabled":false,"negate":true,"alias":null,"index":"filter-index-pattern-0"},"query":{"match_phrase":{"FlightDelayType":"No Delay"}},"$state":{"store":"appState"}}]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-0c8e136b-a822-4fb3-836d-e06cbea4eea4","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"filter-index-pattern-0","type":"index-pattern"}]},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delay Type"},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":58,"w":12,"h":11,"i":"ecd89a7c-9124-4472-bdc6-9bdbd70d45d5"},"panelIndex":"ecd89a7c-9124-4472-bdc6-9bdbd70d45d5","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-dffd86e7-01a9-4990-b974-3706608b5532"}],"state":{"visualization":{"title":"Empty XY chart","legend":{"isVisible":true,"position":"right"},"valueLabels":"hide","preferredSeriesType":"bar_horizontal","layers":[{"layerId":"dffd86e7-01a9-4990-b974-3706608b5532","accessors":["9d212159-afac-41f5-9303-5fb62ff04ba3"],"position":"top","seriesType":"bar_horizontal","showGridlines":false,"layerType":"data","splitAccessor":"d99ad4d7-26ff-4d65-a8ce-34656fdafa0a","palette":{"type":"palette","name":"temperature"}}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"dffd86e7-01a9-4990-b974-3706608b5532":{"columns":{"9d212159-afac-41f5-9303-5fb62ff04ba3":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true}},"d99ad4d7-26ff-4d65-a8ce-34656fdafa0a":{"label":"Top 10 values of DestWeather","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"DestWeather","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"9d212159-afac-41f5-9303-5fb62ff04ba3"},"orderDirection":"desc","otherBucket":true,"missingBucket":false,"parentFormat":{"id":"terms"},"include":[],"exclude":[],"includeIsRegex":false,"excludeIsRegex":false}}},"columnOrder":["d99ad4d7-26ff-4d65-a8ce-34656fdafa0a","9d212159-afac-41f5-9303-5fb62ff04ba3"],"sampling":1,"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}}]', + '[{"version":"8.8.0","type":"search","gridData":{"x":0,"y":69,"w":48,"h":15,"i":"4"},"panelIndex":"4","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_4"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":16,"w":24,"h":9,"i":"7"},"panelIndex":"7","embeddableConfig":{"attributes":{"title":"[Flights] Delays & Cancellations (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce"},{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"xy-visualization-layer-10fed425-accd-411b-a773-ee825bc3945b"}],"state":{"visualization":{"legend":{"isVisible":false,"showSingleSeries":false,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0.5,"yLeftExtent":{"upperBound":1,"mode":"custom"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"area","layerType":"data","layerId":"dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce","accessors":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4a"],"yConfig":[{"forAccessor":"b9d6187b-8a7e-4c49-bffd-7a60cc075a4a","axisMode":"left"}],"xAccessor":"6944431b-f90a-4dab-a282-0961cb97edd1","palette":{"name":"default","type":"palette"}},{"layerId":"10fed425-accd-411b-a773-ee825bc3945b","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"53b7dff0-4c89-11e8-a66a-6989ad5a0a39","label":"Event","key":{"type":"point_in_time"},"timeField":"timestamp","color":"#0062B1","icon":"alert","filter":{"type":"kibana_query","query":"FlightDelay:true AND Cancelled:true","language":"lucene"},"extraFields":["FlightDelay","Cancelled","Carrier"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce":{"columns":{"6944431b-f90a-4dab-a282-0961cb97edd1":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true,"dropPartials":false}},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay:true","language":"lucene"},"params":{"emptyAsNull":false},"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"*","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1"],"location":{"min":0,"max":49},"text":"count(lucene=\'FlightDelay:true\') / count(kql=\'*\')"}},"references":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1"],"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4a":{"label":"Percent Delays","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"format":{"id":"percent"},"formula":"count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","isFormulaBroken":false},"references":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2"],"customLabel":true}},"columnOrder":["6944431b-f90a-4dab-a282-0961cb97edd1","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2","b9d6187b-8a7e-4c49-bffd-7a60cc075a4a"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delays & Cancellations"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":58,"w":24,"h":11,"i":"10"},"panelIndex":"10","embeddableConfig":{"attributes":{"title":"[Flights] Delay Buckets (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-247b176d-e81d-47dc-bbd1-4de85d098961"},{"type":"index-pattern","name":"c61f29fc-1ff3-4d46-a6c2-bde8a5b97f4a","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"legend":{"isVisible":false,"position":"right","legendSize":"auto","shouldTruncate":true,"maxLines":1,"showSingleSeries":true},"valueLabels":"hide","curveType":"LINEAR","yTitle":"Count","yLeftExtent":{"mode":"full","enforce":true},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":-90},"gridlinesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"layerId":"247b176d-e81d-47dc-bbd1-4de85d098961","accessors":["c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da"],"layerType":"data","seriesType":"bar_stacked","xAccessor":"c7936be7-e59b-424e-a912-69ba820d8e24","simpleView":false,"palette":{"type":"palette","name":"default"},"yConfig":[{"forAccessor":"c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da","axisMode":"left","color":"#1F78C1"}],"xScaleType":"linear","isHistogram":true}]},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"negate":true,"disabled":false,"alias":null,"type":"phrase","key":"FlightDelayMin","value":"0","params":{"query":0,"type":"phrase"},"index":"c61f29fc-1ff3-4d46-a6c2-bde8a5b97f4a"},"query":{"match":{"FlightDelayMin":{"query":0,"type":"phrase"}}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"247b176d-e81d-47dc-bbd1-4de85d098961":{"columns":{"c7936be7-e59b-424e-a912-69ba820d8e24":{"label":"Flight Delay Minutes","dataType":"number","operationType":"range","sourceField":"FlightDelayMin","isBucketed":true,"scale":"interval","params":{"includeEmptyRows":false,"type":"histogram","ranges":[{"from":0,"to":1000,"label":""}],"maxBars":"auto"},"customLabel":true},"c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da":{"label":"Count","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["c7936be7-e59b-424e-a912-69ba820d8e24","c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delay Buckets"},{"version":"8.8.0","type":"map","gridData":{"x":0,"y":36,"w":24,"h":22,"i":"23"},"panelIndex":"23","embeddableConfig":{"isLayerTOCOpen":true,"hiddenLayers":[],"mapCenter":{"lat":48.72307,"lon":-115.18171,"zoom":4.28},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_23"},{"version":"8.8.0","type":"visualization","gridData":{"x":24,"y":36,"w":24,"h":22,"i":"31"},"panelIndex":"31","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_31"},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":8,"i":"6afc61f7-e2d5-45a3-9e7a-281160ad3eb9"},"panelIndex":"6afc61f7-e2d5-45a3-9e7a-281160ad3eb9","embeddableConfig":{"savedVis":{"title":"[Flights] Markdown Instructions","description":"","type":"markdown","params":{"fontSize":10,"openLinksInNewTab":true,"markdown":"## Sample Flight data\\nThis dashboard contains sample data for you to play with. You can view it, search it, and interact with the visualizations. For more information about Kibana, check our [docs](https://www.elastic.co/guide/en/kibana/current/index.html)."},"uiState":{},"data":{"aggs":[],"searchSource":{}}},"hidePanelTitles":true,"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":0,"w":8,"h":8,"i":"392b4936-f753-47bc-a98d-a4e41a0a4cd4"},"panelIndex":"392b4936-f753-47bc-a98d-a4e41a0a4cd4","embeddableConfig":{"enhancements":{},"attributes":{"title":"[Flights] Total Flights","description":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-8fa993db-c147-4954-adf7-4ff264d42576"}],"state":{"visualization":{"layerId":"8fa993db-c147-4954-adf7-4ff264d42576","layerType":"data","metricAccessor":"81124c45-6ab6-42f4-8859-495d55eb8065"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"8fa993db-c147-4954-adf7-4ff264d42576":{"columns":{"81124c45-6ab6-42f4-8859-495d55eb8065":{"label":"Total flights","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true}},"columnOrder":["81124c45-6ab6-42f4-8859-495d55eb8065"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true}},{"version":"8.8.0","type":"lens","gridData":{"x":32,"y":0,"w":8,"h":4,"i":"9271deff-5a61-4665-83fc-f9fdc6bf0c0b"},"panelIndex":"9271deff-5a61-4665-83fc-f9fdc6bf0c0b","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"7e8fe9b1-f45c-4f3d-9561-30febcd357ec"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"7e8fe9b1-f45c-4f3d-9561-30febcd357ec":{"label":"Delayed","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'FlightDelay : true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay : true","language":"kuery"},"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"location":{"min":0,"max":41},"text":"count(kql=\'FlightDelay : true\') / count()"}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"customLabel":true}},"columnOrder":["7e8fe9b1-f45c-4f3d-9561-30febcd357ec","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":40,"y":0,"w":8,"h":4,"i":"aa591c29-1a31-4ee1-a71d-b829c06fd162"},"panelIndex":"aa591c29-1a31-4ee1-a71d-b829c06fd162","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"},{"type":"index-pattern","name":"c804c161-375f-4d52-a1cc-2e98b966957d","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"c7851241-5526-499a-960b-357af8c2ce5b"},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"alias":null,"negate":false,"disabled":false,"type":"phrase","key":"FlightDelay","params":{"query":true},"index":"c804c161-375f-4d52-a1cc-2e98b966957d"},"query":{"match_phrase":{"FlightDelay":true}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"c7851241-5526-499a-960b-357af8c2ce5b":{"label":"Delayed vs 1 week earlier","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count() / count(shift=\'1w\') - 1","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX2"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX2":{"label":"Part of Delayed","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"subtract","args":[{"type":"function","name":"divide","args":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"location":{"min":0,"max":28},"text":"count() / count(shift=\'1w\') "},1],"location":{"min":0,"max":31},"text":"count() / count(shift=\'1w\') - 1"}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX0":{"label":"Part of Delayed","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX1":{"label":"Part of Delayed","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","timeShift":"1w","customLabel":true}},"columnOrder":["c7851241-5526-499a-960b-357af8c2ce5b","c7851241-5526-499a-960b-357af8c2ce5bX2","c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":32,"y":4,"w":8,"h":4,"i":"b766e3b8-4544-46ed-99e6-9ecc4847e2a2"},"panelIndex":"b766e3b8-4544-46ed-99e6-9ecc4847e2a2","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"7e8fe9b1-f45c-4f3d-9561-30febcd357ec"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"7e8fe9b1-f45c-4f3d-9561-30febcd357ec":{"label":"Cancelled","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'Cancelled : true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0":{"label":"Part of Cancelled","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"Cancelled : true","language":"kuery"},"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1":{"label":"Part of Cancelled","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2":{"label":"Part of Cancelled","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"location":{"min":0,"max":39},"text":"count(kql=\'Cancelled : true\') / count()"}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"customLabel":true}},"columnOrder":["7e8fe9b1-f45c-4f3d-9561-30febcd357ec","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":40,"y":4,"w":8,"h":4,"i":"2e33ade5-96e5-40b4-b460-493e5d4fa834"},"panelIndex":"2e33ade5-96e5-40b4-b460-493e5d4fa834","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"},{"type":"index-pattern","name":"14cea722-a629-4c69-a06d-94a4a4c9a718","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"c7851241-5526-499a-960b-357af8c2ce5b"},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"alias":null,"negate":false,"disabled":false,"type":"phrase","key":"Cancelled","params":{"query":true},"index":"14cea722-a629-4c69-a06d-94a4a4c9a718"},"query":{"match_phrase":{"Cancelled":true}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"c7851241-5526-499a-960b-357af8c2ce5b":{"label":"Cancelled vs 1 week earlier","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count() / count(shift=\'1w\') - 1","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX2"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX2":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"subtract","args":[{"type":"function","name":"divide","args":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"location":{"min":0,"max":28},"text":"count() / count(shift=\'1w\') "},1],"location":{"min":0,"max":31},"text":"count() / count(shift=\'1w\') - 1"}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX0":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX1":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","timeShift":"1w","customLabel":true}},"columnOrder":["c7851241-5526-499a-960b-357af8c2ce5b","c7851241-5526-499a-960b-357af8c2ce5bX2","c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":8,"w":24,"h":8,"i":"086ac2e9-dd16-4b45-92b8-1e43ff7e3f65"},"panelIndex":"086ac2e9-dd16-4b45-92b8-1e43ff7e3f65","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"formBased":{"layers":{"03c34665-471c-49c7-acf1-5a11f517421c":{"columns":{"a5b94e30-4e77-4b0a-9187-1d8b13de1456":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true}},"3e267327-7317-4310-aee3-320e0f7c1e70":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["a5b94e30-4e77-4b0a-9187-1d8b13de1456","3e267327-7317-4310-aee3-320e0f7c1e70"],"incompleteColumns":{}}}}},"visualization":{"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"valueLabels":"hide","fittingFunction":"None","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"custom","lowerBound":0,"upperBound":1},"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"layerId":"03c34665-471c-49c7-acf1-5a11f517421c","accessors":["3e267327-7317-4310-aee3-320e0f7c1e70"],"position":"top","seriesType":"bar_stacked","showGridlines":false,"xAccessor":"a5b94e30-4e77-4b0a-9187-1d8b13de1456","layerType":"data"}]},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-03c34665-471c-49c7-acf1-5a11f517421c","type":"index-pattern"}]},"hidePanelTitles":false,"enhancements":{}},"title":"[Flights] Flight count"},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":8,"w":24,"h":28,"i":"fb86b32f-fb7a-45cf-9511-f366fef51bbd"},"panelIndex":"fb86b32f-fb7a-45cf-9511-f366fef51bbd","embeddableConfig":{"attributes":{"title":"Cities by delay, cancellation","type":"lens","visualizationType":"lnsDatatable","state":{"datasourceStates":{"formBased":{"layers":{"f26e8f7a-4118-4227-bea0-5c02d8b270f7":{"columns":{"3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0":{"label":"Top values of OriginCityName","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"OriginCityName","isBucketed":true,"params":{"size":1000,"orderBy":{"type":"alphabetical","fallback":true},"orderDirection":"asc","otherBucket":true,"missingBucket":false}},"52f6f2e9-6242-4c44-be63-b799150e7e60X0":{"label":"Part of Delay %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay : true ","language":"kuery"},"customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60X1":{"label":"Part of Delay %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60X2":{"label":"Part of Delay %","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1"],"location":{"min":0,"max":42},"text":"count(kql=\'FlightDelay : true \') / count()"}},"references":["52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1"],"customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60":{"label":"Delay %","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'FlightDelay : true \') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":0}}},"references":["52f6f2e9-6242-4c44-be63-b799150e7e60X2"],"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0":{"label":"Part of Cancel %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"Cancelled: true","language":"kuery"},"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1":{"label":"Part of Cancel %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2":{"label":"Part of Cancel %","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1"],"location":{"min":0,"max":38},"text":"count(kql=\'Cancelled: true\') / count()"}},"references":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1"],"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6":{"label":"Cancel %","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'Cancelled: true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":0}}},"references":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2"],"customLabel":true}},"columnOrder":["3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0","52f6f2e9-6242-4c44-be63-b799150e7e60","52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1","52f6f2e9-6242-4c44-be63-b799150e7e60X2","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6"],"incompleteColumns":{}}}}},"visualization":{"columns":[{"isTransposed":false,"columnId":"3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0","width":262.75},{"columnId":"52f6f2e9-6242-4c44-be63-b799150e7e60","isTransposed":false,"width":302.5,"colorMode":"cell","palette":{"type":"palette","name":"negative","params":{"steps":5,"stops":[{"color":"#fcdedc","stop":0},{"color":"#fec3bd","stop":0.2},{"color":"#fea79e","stop":0.4},{"color":"#fb8b81","stop":0.6},{"color":"#f66d64","stop":0.8}],"name":"negative","rangeType":"number","rangeMin":0,"rangeMax":null,"continuity":"above","reverse":false}},"alignment":"center"},{"columnId":"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6","isTransposed":false,"alignment":"center","colorMode":"cell","palette":{"type":"palette","name":"negative","params":{"steps":5,"stops":[{"color":"#fcdedc","stop":0},{"color":"#fec3bd","stop":0.2},{"color":"#fea79e","stop":0.4},{"color":"#fb8b81","stop":0.6},{"color":"#f66d64","stop":0.8}],"name":"negative","rangeType":"number","rangeMin":0,"rangeMax":null,"continuity":"above","reverse":false}}}],"layerId":"f26e8f7a-4118-4227-bea0-5c02d8b270f7","sorting":{"columnId":"52f6f2e9-6242-4c44-be63-b799150e7e60","direction":"desc"},"layerType":"data","rowHeight":"single","rowHeightLines":1},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-f26e8f7a-4118-4227-bea0-5c02d8b270f7","type":"index-pattern"}]},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Most delayed cities"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":25,"w":24,"h":11,"i":"0cc42484-16f7-42ec-b38c-9bf8be69cde7"},"panelIndex":"0cc42484-16f7-42ec-b38c-9bf8be69cde7","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"formBased":{"layers":{"e80cc05e-c52a-4e5f-ac71-4b37274867f5":{"columns":{"caf7421e-93a3-439e-ab0a-fbdead93c21c":{"label":"Top values of FlightDelayType","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"FlightDelayType","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"0233d302-ec81-4fbe-96cb-7fac84cf035c"},"orderDirection":"desc","otherBucket":true,"missingBucket":false}},"13ec79e3-9d73-4536-9056-3d92802bb30a":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true}},"0233d302-ec81-4fbe-96cb-7fac84cf035c":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["caf7421e-93a3-439e-ab0a-fbdead93c21c","13ec79e3-9d73-4536-9056-3d92802bb30a","0233d302-ec81-4fbe-96cb-7fac84cf035c"],"incompleteColumns":{}}}}},"visualization":{"legend":{"isVisible":true,"position":"bottom","legendSize":"auto"},"valueLabels":"hide","fittingFunction":"None","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"axisTitlesVisibilitySettings":{"x":true,"yLeft":false,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_percentage_stacked","layers":[{"layerId":"e80cc05e-c52a-4e5f-ac71-4b37274867f5","accessors":["0233d302-ec81-4fbe-96cb-7fac84cf035c"],"position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"palette":{"type":"palette","name":"cool"},"xAccessor":"13ec79e3-9d73-4536-9056-3d92802bb30a","splitAccessor":"caf7421e-93a3-439e-ab0a-fbdead93c21c","layerType":"data"}]},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-e80cc05e-c52a-4e5f-ac71-4b37274867f5","type":"index-pattern"}]},"hidePanelTitles":false,"enhancements":{}},"title":"[Flights] Delay Type"},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":58,"w":12,"h":11,"i":"5d53db36-2d5a-4adc-af7b-cec4c1a294e0"},"panelIndex":"5d53db36-2d5a-4adc-af7b-cec4c1a294e0","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsPie","state":{"datasourceStates":{"formBased":{"layers":{"0c8e136b-a822-4fb3-836d-e06cbea4eea4":{"columns":{"d1cee8bf-34cf-4141-99d7-ff043ee77b56":{"label":"Top values of FlightDelayType","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"FlightDelayType","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"aa152ace-ee2d-447b-b86d-459bef4d7880"},"orderDirection":"desc","otherBucket":true,"missingBucket":false}},"aa152ace-ee2d-447b-b86d-459bef4d7880":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["d1cee8bf-34cf-4141-99d7-ff043ee77b56","aa152ace-ee2d-447b-b86d-459bef4d7880"],"incompleteColumns":{}}}}},"visualization":{"shape":"pie","palette":{"type":"palette","name":"cool"},"layers":[{"layerId":"0c8e136b-a822-4fb3-836d-e06cbea4eea4","numberDisplay":"percent","categoryDisplay":"default","legendDisplay":"default","nestedLegend":false,"layerType":"data","legendSize":"auto","primaryGroups":["d1cee8bf-34cf-4141-99d7-ff043ee77b56"],"metrics":["aa152ace-ee2d-447b-b86d-459bef4d7880"]}]},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"type":"phrase","key":"FlightDelayType","params":{"query":"No Delay"},"disabled":false,"negate":true,"alias":null,"index":"filter-index-pattern-0"},"query":{"match_phrase":{"FlightDelayType":"No Delay"}},"$state":{"store":"appState"}}]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-0c8e136b-a822-4fb3-836d-e06cbea4eea4","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"filter-index-pattern-0","type":"index-pattern"}]},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delay Type"},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":58,"w":12,"h":11,"i":"ecd89a7c-9124-4472-bdc6-9bdbd70d45d5"},"panelIndex":"ecd89a7c-9124-4472-bdc6-9bdbd70d45d5","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-dffd86e7-01a9-4990-b974-3706608b5532"}],"state":{"visualization":{"title":"Empty XY chart","legend":{"isVisible":true,"position":"right"},"valueLabels":"hide","preferredSeriesType":"bar_horizontal","layers":[{"layerId":"dffd86e7-01a9-4990-b974-3706608b5532","accessors":["9d212159-afac-41f5-9303-5fb62ff04ba3"],"position":"top","seriesType":"bar_horizontal","showGridlines":false,"layerType":"data","splitAccessor":"d99ad4d7-26ff-4d65-a8ce-34656fdafa0a","palette":{"type":"palette","name":"temperature"}}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"dffd86e7-01a9-4990-b974-3706608b5532":{"columns":{"9d212159-afac-41f5-9303-5fb62ff04ba3":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true}},"d99ad4d7-26ff-4d65-a8ce-34656fdafa0a":{"label":"Top 10 values of DestWeather","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"DestWeather","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"9d212159-afac-41f5-9303-5fb62ff04ba3"},"orderDirection":"desc","otherBucket":true,"missingBucket":false,"parentFormat":{"id":"terms"},"include":[],"exclude":[],"includeIsRegex":false,"excludeIsRegex":false}}},"columnOrder":["d99ad4d7-26ff-4d65-a8ce-34656fdafa0a","9d212159-afac-41f5-9303-5fb62ff04ba3"],"sampling":1,"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}}]', timeFrom: 'now-7d', title: '[Flights] Global Flight Dashboard', timeTo: 'now', diff --git a/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts index a73979c88cb2e..19d59c35523f4 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts @@ -313,7 +313,7 @@ export const getSavedObjects = (): SavedObject[] => [ optionsJSON: '{"useMargins":true,"syncColors":false,"syncCursor":true,"syncTooltips":false,"hidePanelTitles":false}', panelsJSON: - '[{"version":"8.8.0","type":"map","gridData":{"x":0,"y":14,"w":24,"h":18,"i":"4"},"panelIndex":"4","embeddableConfig":{"isLayerTOCOpen":false,"hiddenLayers":[],"mapCenter":{"lat":42.16337,"lon":-88.92107,"zoom":3.64},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_4"},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":0,"w":12,"h":7,"i":"11"},"panelIndex":"11","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-28b89898-3feb-415a-8dd9-74d755ac7c2a"}],"state":{"visualization":{"layerId":"28b89898-3feb-415a-8dd9-74d755ac7c2a","layerType":"data","metricAccessor":"f92c482e-1eee-4c2a-9338-64fb3eec286a","palette":{"name":"custom","type":"palette","params":{"steps":3,"name":"custom","reverse":false,"rangeType":"number","rangeMin":0,"rangeMax":null,"progression":"fixed","stops":[{"color":"#D23115","stop":500},{"color":"#FCC400","stop":1000},{"color":"#68BC00","stop":1658}],"colorStops":[{"color":"#D23115","stop":0},{"color":"#FCC400","stop":500},{"color":"#68BC00","stop":1000}],"continuity":"above","maxSteps":5}}},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"28b89898-3feb-415a-8dd9-74d755ac7c2a":{"columns":{"f92c482e-1eee-4c2a-9338-64fb3eec286a":{"label":"Unique Visitors","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["f92c482e-1eee-4c2a-9338-64fb3eec286a"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true,"enhancements":{}}},{"version":"8.8.0","type":"visualization","gridData":{"x":24,"y":14,"w":24,"h":33,"i":"14"},"panelIndex":"14","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_14"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":7,"w":24,"h":7,"i":"15"},"panelIndex":"15","embeddableConfig":{"attributes":{"title":"[Logs] Response Codes Over Time + Annotations (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-b38fe501-4b47-4de8-a423-6656d1162174"},{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"xy-visualization-layer-f265e722-ae38-495c-903c-48aa7931fa82"}],"state":{"visualization":{"legend":{"isVisible":true,"showSingleSeries":true,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0.5,"yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"area_percentage_stacked","layerType":"data","layerId":"b38fe501-4b47-4de8-a423-6656d1162174","accessors":["896c5eb2-81c5-44f1-a4a1-57344161ea62"],"yConfig":[{"forAccessor":"896c5eb2-81c5-44f1-a4a1-57344161ea62","color":"rgba(115,216,255,1)","axisMode":"left"}],"xAccessor":"8986e393-d24f-49b0-96ca-118fd66d75e5","splitAccessor":"43f5bb0f-c6da-43a0-8a0a-50e9838ed34b","palette":{"name":"default","type":"palette"}},{"layerId":"f265e722-ae38-495c-903c-48aa7931fa82","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"bd7548a0-2223-11e8-832f-d5027f3c8a47","label":"Event","key":{"type":"point_in_time"},"color":"#D33115","timeField":"timestamp","icon":"asterisk","filter":{"type":"kibana_query","query":"tags:error AND tags:security","language":"lucene"},"extraFields":["geo.src"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b38fe501-4b47-4de8-a423-6656d1162174":{"columns":{"8986e393-d24f-49b0-96ca-118fd66d75e5":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true,"dropPartials":false}},"43f5bb0f-c6da-43a0-8a0a-50e9838ed34b":{"label":"Filters","dataType":"string","operationType":"filters","scale":"ordinal","isBucketed":true,"params":{"filters":[{"input":{"query":"response.keyword >= 200 and response.keyword < 400","language":"kuery"},"label":"HTTP 2xx and 3xx"},{"input":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"label":"HTTP 4xx"},{"input":{"query":"response.keyword >= 500","language":"kuery"},"label":"HTTP 5xx"}]}},"896c5eb2-81c5-44f1-a4a1-57344161ea62":{"label":"Response Code Count","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["8986e393-d24f-49b0-96ca-118fd66d75e5","43f5bb0f-c6da-43a0-8a0a-50e9838ed34b","896c5eb2-81c5-44f1-a4a1-57344161ea62"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Logs] Response Codes Over Time + Annotations"},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":7,"i":"343f0bef-0b19-452e-b1c8-59beb18b6f0c"},"panelIndex":"343f0bef-0b19-452e-b1c8-59beb18b6f0c","embeddableConfig":{"savedVis":{"title":"[Logs] Markdown Instructions","description":"","type":"markdown","params":{"fontSize":12,"openLinksInNewTab":true,"markdown":"## Sample Logs Data\\nThis dashboard contains sample data for you to play with. You can view it, search it, and interact with the visualizations. For more information about Kibana, check our [docs](https://www.elastic.co/guide/en/kibana/current/index.html)."},"uiState":{},"data":{"aggs":[],"searchSource":{"query":{"query":"","language":"kuery"},"filter":[]}}},"enhancements":{},"hidePanelTitles":true}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":0,"w":12,"h":7,"i":"bb94016e-f4a6-49ca-87a9-296a2869d570"},"panelIndex":"bb94016e-f4a6-49ca-87a9-296a2869d570","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-483defd2-775b-4a62-bdef-496c819bb8ed"}],"state":{"visualization":{"layerId":"483defd2-775b-4a62-bdef-496c819bb8ed","layerType":"data","metricAccessor":"37430d12-7452-4cc9-b035-5cfd4061edf0"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"483defd2-775b-4a62-bdef-496c819bb8ed":{"columns":{"37430d12-7452-4cc9-b035-5cfd4061edf0":{"label":"Visits","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true}},"columnOrder":["37430d12-7452-4cc9-b035-5cfd4061edf0"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":7,"w":12,"h":7,"i":"8c1456d4-1993-4ba2-b701-04aca02c9fef"},"panelIndex":"8c1456d4-1993-4ba2-b701-04aca02c9fef","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-f3793bb7-3971-4753-866d-4008e77a9f9a"}],"state":{"visualization":{"layerId":"f3793bb7-3971-4753-866d-4008e77a9f9a","layerType":"data","metricAccessor":"71c076a6-e782-4866-b8df-5fd85a41f08b"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"f3793bb7-3971-4753-866d-4008e77a9f9a":{"columns":{"71c076a6-e782-4866-b8df-5fd85a41f08bX0":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 500","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX1":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX2":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"location":{"min":0,"max":46},"text":"count(kql=\'response.keyword >= 500\') / count()"}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08b":{"label":"HTTP 5xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"customLabel":true}},"columnOrder":["71c076a6-e782-4866-b8df-5fd85a41f08b","71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1","71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":7,"w":12,"h":7,"i":"01d8e435-91c0-484f-a11e-856747050b0a"},"panelIndex":"01d8e435-91c0-484f-a11e-856747050b0a","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-f3793bb7-3971-4753-866d-4008e77a9f9a"}],"state":{"visualization":{"layerId":"f3793bb7-3971-4753-866d-4008e77a9f9a","layerType":"data","metricAccessor":"71c076a6-e782-4866-b8df-5fd85a41f08b"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"f3793bb7-3971-4753-866d-4008e77a9f9a":{"columns":{"71c076a6-e782-4866-b8df-5fd85a41f08bX0":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX1":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX2":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"location":{"min":0,"max":73},"text":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()"}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08b":{"label":"HTTP 4xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"customLabel":true}},"columnOrder":["71c076a6-e782-4866-b8df-5fd85a41f08b","71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1","71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":32,"w":24,"h":15,"i":"8e59c7cf-6e42-4343-a113-c4a255fcf2ce"},"panelIndex":"8e59c7cf-6e42-4343-a113-c4a255fcf2ce","embeddableConfig":{"savedVis":{"title":"","description":"","type":"vega","params":{"spec":"{\\n $schema: https://vega.github.io/schema/vega-lite/v5.json\\n data: {\\n url: {\\n %context%: true\\n %timefield%: @timestamp\\n index: kibana_sample_data_logs\\n body: {\\n aggs: {\\n countries: {\\n terms: {\\n field: geo.src\\n size: 25\\n }\\n aggs: {\\n hours: {\\n histogram: {\\n field: hour_of_day\\n interval: 1\\n }\\n aggs: {\\n unique: {\\n cardinality: {\\n field: clientip\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n size: 0\\n }\\n }\\n format: {property: \\"aggregations.countries.buckets\\"}\\n }\\n \\n transform: [\\n {\\n flatten: [\\"hours.buckets\\"],\\n as: [\\"buckets\\"]\\n }\\n ]\\n\\n mark: {\\n type: rect\\n tooltip: true\\n }\\n\\n encoding: {\\n x: {\\n field: buckets.key\\n type: ordinal\\n axis: {\\n title: false\\n labelAngle: 0\\n }\\n }\\n y: {\\n field: key\\n type: nominal\\n sort: {\\n field: -buckets.unique.value\\n }\\n axis: {title: false}\\n }\\n color: {\\n field: buckets.unique.value\\n type: quantitative\\n axis: {title: false}\\n scale: {\\n scheme: reds\\n }\\n }\\n }\\n}\\n"},"uiState":{},"data":{"aggs":[],"searchSource":{"query":{"query":"","language":"kuery"},"filter":[]}}},"enhancements":{}},"panelRefName":"panel_8e59c7cf-6e42-4343-a113-c4a255fcf2ce"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":47,"w":24,"h":13,"i":"21bb0939-ee09-4021-8848-6552b3a6a788"},"panelIndex":"21bb0939-ee09-4021-8848-6552b3a6a788","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsDatatable","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-c840e93e-2949-4723-ad35-6bdb2d724404"}],"state":{"visualization":{"columns":[{"columnId":"4e64d6d7-4f92-4d5e-abbb-13796604db30","isTransposed":false},{"columnId":"fb9a848d-76f3-4005-a067-4259a50b5621","isTransposed":false},{"columnId":"a2760bc2-9a6e-46a1-8595-86f61573c7cf","isTransposed":false},{"columnId":"2c8bd8d5-35ff-4386-8d27-3ba882b13e43","isTransposed":false,"colorMode":"text","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#d23115","stop":1000},{"color":"#fcc400","stop":1500},{"color":"#68bc00","stop":1501}],"rangeType":"number","rangeMin":0,"rangeMax":null,"continuity":"above","colorStops":[{"color":"#d23115","stop":0},{"color":"#fcc400","stop":1000},{"color":"#68bc00","stop":1500}],"name":"custom"}}},{"columnId":"defa6f97-b874-4556-8438-056fb437787b","isTransposed":false,"colorMode":"text","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#D23115","stop":10},{"color":"#FCC400","stop":25},{"color":"#68bc00","stop":26}],"rangeType":"number","rangeMin":0,"rangeMax":null,"continuity":"above","colorStops":[{"color":"#D23115","stop":0},{"color":"#FCC400","stop":10},{"color":"#68bc00","stop":25}],"name":"custom"}}}],"layerId":"c840e93e-2949-4723-ad35-6bdb2d724404","layerType":"data"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"c840e93e-2949-4723-ad35-6bdb2d724404":{"columns":{"4e64d6d7-4f92-4d5e-abbb-13796604db30":{"label":"Type","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"extension.keyword","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"fb9a848d-76f3-4005-a067-4259a50b5621"},"orderDirection":"desc","otherBucket":true,"missingBucket":false,"parentFormat":{"id":"terms"},"include":[],"exclude":[],"includeIsRegex":false,"excludeIsRegex":false},"customLabel":true},"fb9a848d-76f3-4005-a067-4259a50b5621":{"label":"Bytes (Total)","dataType":"number","operationType":"sum","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"emptyAsNull":true,"format":{"id":"bytes","params":{"decimals":2}}},"customLabel":true},"a2760bc2-9a6e-46a1-8595-86f61573c7cf":{"label":"Bytes (Last Hour)","dataType":"number","operationType":"sum","sourceField":"bytes","isBucketed":false,"scale":"ratio","reducedTimeRange":"1h","params":{"emptyAsNull":true,"format":{"id":"bytes","params":{"decimals":2}}},"customLabel":true},"2c8bd8d5-35ff-4386-8d27-3ba882b13e43":{"label":"Unique Visits (Total)","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"params":{"emptyAsNull":true},"customLabel":true},"defa6f97-b874-4556-8438-056fb437787b":{"label":"Unique count of clientip","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"reducedTimeRange":"1h","params":{"emptyAsNull":true}}},"columnOrder":["4e64d6d7-4f92-4d5e-abbb-13796604db30","fb9a848d-76f3-4005-a067-4259a50b5621","a2760bc2-9a6e-46a1-8595-86f61573c7cf","2c8bd8d5-35ff-4386-8d27-3ba882b13e43","defa6f97-b874-4556-8438-056fb437787b"],"sampling":1,"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":47,"w":24,"h":13,"i":"cbca842c-b9fa-4523-9ce0-14e350866e33"},"panelIndex":"cbca842c-b9fa-4523-9ce0-14e350866e33","embeddableConfig":{"hidePanelTitles":false,"enhancements":{}},"title":"[Logs] Bytes distribution","panelRefName":"panel_cbca842c-b9fa-4523-9ce0-14e350866e33"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":60,"w":48,"h":19,"i":"1d5f0b3f-d9d2-4b26-997b-83bc5ca3090b"},"panelIndex":"1d5f0b3f-d9d2-4b26-997b-83bc5ca3090b","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsDatatable","state":{"datasourceStates":{"formBased":{"layers":{"c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0":{"columns":{"42783ad7-dbcf-4310-bc06-f21f4eaaac96":{"label":"URL","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"url.keyword","isBucketed":true,"params":{"size":1000,"orderBy":{"type":"column","columnId":"f7835375-4d5b-4839-95ea-41928192a319"},"orderDirection":"desc","otherBucket":true,"missingBucket":false},"customLabel":true},"f7835375-4d5b-4839-95ea-41928192a319":{"label":"Visits","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX0":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX1":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX2":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1"],"location":{"min":0,"max":73},"text":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()"}},"references":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1"],"customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1da":{"label":"HTTP 4xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX2"],"customLabel":true},"791d5a5b-a7ba-4e9e-b533-51b33c7d7747":{"label":"Unique","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"customLabel":true},"611e3509-e834-4fdd-b573-44e959e95d27":{"label":"95th percentile of bytes","dataType":"number","operationType":"percentile","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"percentile":95,"format":{"id":"bytes","params":{"decimals":0}}}},"9f79ecca-123f-4098-a658-6b0e998da003":{"label":"Median of bytes","dataType":"number","operationType":"median","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"format":{"id":"bytes","params":{"decimals":0}}}},"491285fd-0196-402c-9b7f-4660fdc1c22aX0":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 500","language":"kuery"},"customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22aX1":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22aX2":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1"],"location":{"min":0,"max":46},"text":"count(kql=\'response.keyword >= 500\') / count()"}},"references":["491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1"],"customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22a":{"label":"HTTP 5xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["491285fd-0196-402c-9b7f-4660fdc1c22aX2"],"customLabel":true}},"columnOrder":["42783ad7-dbcf-4310-bc06-f21f4eaaac96","f7835375-4d5b-4839-95ea-41928192a319","791d5a5b-a7ba-4e9e-b533-51b33c7d7747","07fc84ca-4147-4ba9-879e-d1b4e086e1da","491285fd-0196-402c-9b7f-4660fdc1c22a","491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1","491285fd-0196-402c-9b7f-4660fdc1c22aX2","07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1","07fc84ca-4147-4ba9-879e-d1b4e086e1daX2","611e3509-e834-4fdd-b573-44e959e95d27","9f79ecca-123f-4098-a658-6b0e998da003"],"incompleteColumns":{}}}}},"visualization":{"layerId":"c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0","columns":[{"columnId":"42783ad7-dbcf-4310-bc06-f21f4eaaac96","width":650.6666666666666},{"columnId":"f7835375-4d5b-4839-95ea-41928192a319"},{"columnId":"491285fd-0196-402c-9b7f-4660fdc1c22a","isTransposed":false,"width":81.66666666666669,"colorMode":"cell","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#fbddd6","stop":0.1},{"color":"#CC5642","stop":1}],"rangeType":"number","name":"custom","colorStops":[{"color":"#fbddd6","stop":0.05},{"color":"#CC5642","stop":0.1}],"rangeMin":0.05,"rangeMax":0.1}}},{"columnId":"07fc84ca-4147-4ba9-879e-d1b4e086e1da","isTransposed":false,"colorMode":"cell","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#fbddd6","stop":0.1},{"color":"#cc5642","stop":1.1}],"name":"custom","colorStops":[{"color":"#fbddd6","stop":0.05},{"color":"#cc5642","stop":0.1}],"rangeType":"number","rangeMin":0.05,"rangeMax":0.1}}},{"columnId":"791d5a5b-a7ba-4e9e-b533-51b33c7d7747","isTransposed":false},{"columnId":"611e3509-e834-4fdd-b573-44e959e95d27","isTransposed":false},{"columnId":"9f79ecca-123f-4098-a658-6b0e998da003","isTransposed":false}],"sorting":{"columnId":"491285fd-0196-402c-9b7f-4660fdc1c22a","direction":"desc"},"layerType":"data","rowHeight":"single","rowHeightLines":1},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0","type":"index-pattern"}]},"enhancements":{"dynamicActions":{"events":[]}},"hidePanelTitles":false},"title":"[Logs] Errors by host"}]', + '[{"version":"8.8.0","type":"map","gridData":{"x":0,"y":14,"w":24,"h":18,"i":"4"},"panelIndex":"4","embeddableConfig":{"isLayerTOCOpen":false,"hiddenLayers":[],"mapCenter":{"lat":42.16337,"lon":-88.92107,"zoom":3.64},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_4"},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":0,"w":12,"h":7,"i":"11"},"panelIndex":"11","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-28b89898-3feb-415a-8dd9-74d755ac7c2a"}],"state":{"visualization":{"layerId":"28b89898-3feb-415a-8dd9-74d755ac7c2a","layerType":"data","metricAccessor":"f92c482e-1eee-4c2a-9338-64fb3eec286a","palette":{"type":"palette","name":"status","params":{"steps":3,"rangeType":"number","rangeMin":0,"rangeMax":null,"progression":"fixed","stops":[{"color":"#23be8f","stop":0},{"color":"#fcd279","stop":608.66},{"color":"#f66d64","stop":1217.33}],"continuity":"above","maxSteps":5}}},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"28b89898-3feb-415a-8dd9-74d755ac7c2a":{"columns":{"f92c482e-1eee-4c2a-9338-64fb3eec286a":{"label":"Unique Visitors","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["f92c482e-1eee-4c2a-9338-64fb3eec286a"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true,"enhancements":{}}},{"version":"8.8.0","type":"visualization","gridData":{"x":24,"y":14,"w":24,"h":33,"i":"14"},"panelIndex":"14","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_14"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":7,"w":24,"h":7,"i":"15"},"panelIndex":"15","embeddableConfig":{"attributes":{"title":"[Logs] Response Codes Over Time + Annotations (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-b38fe501-4b47-4de8-a423-6656d1162174"},{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"xy-visualization-layer-f265e722-ae38-495c-903c-48aa7931fa82"}],"state":{"visualization":{"legend":{"isVisible":true,"showSingleSeries":true,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0.5,"yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"area_percentage_stacked","layerType":"data","layerId":"b38fe501-4b47-4de8-a423-6656d1162174","accessors":["896c5eb2-81c5-44f1-a4a1-57344161ea62"],"yConfig":[{"forAccessor":"896c5eb2-81c5-44f1-a4a1-57344161ea62","color":"rgba(115,216,255,1)","axisMode":"left"}],"xAccessor":"8986e393-d24f-49b0-96ca-118fd66d75e5","splitAccessor":"43f5bb0f-c6da-43a0-8a0a-50e9838ed34b","palette":{"name":"default","type":"palette"}},{"layerId":"f265e722-ae38-495c-903c-48aa7931fa82","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"bd7548a0-2223-11e8-832f-d5027f3c8a47","label":"Event","key":{"type":"point_in_time"},"color":"#D33115","timeField":"timestamp","icon":"asterisk","filter":{"type":"kibana_query","query":"tags:error AND tags:security","language":"lucene"},"extraFields":["geo.src"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b38fe501-4b47-4de8-a423-6656d1162174":{"columns":{"8986e393-d24f-49b0-96ca-118fd66d75e5":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true,"dropPartials":false}},"43f5bb0f-c6da-43a0-8a0a-50e9838ed34b":{"label":"Filters","dataType":"string","operationType":"filters","scale":"ordinal","isBucketed":true,"params":{"filters":[{"input":{"query":"response.keyword >= 200 and response.keyword < 400","language":"kuery"},"label":"HTTP 2xx and 3xx"},{"input":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"label":"HTTP 4xx"},{"input":{"query":"response.keyword >= 500","language":"kuery"},"label":"HTTP 5xx"}]}},"896c5eb2-81c5-44f1-a4a1-57344161ea62":{"label":"Response Code Count","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["8986e393-d24f-49b0-96ca-118fd66d75e5","43f5bb0f-c6da-43a0-8a0a-50e9838ed34b","896c5eb2-81c5-44f1-a4a1-57344161ea62"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Logs] Response Codes Over Time + Annotations"},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":7,"i":"343f0bef-0b19-452e-b1c8-59beb18b6f0c"},"panelIndex":"343f0bef-0b19-452e-b1c8-59beb18b6f0c","embeddableConfig":{"savedVis":{"title":"[Logs] Markdown Instructions","description":"","type":"markdown","params":{"fontSize":12,"openLinksInNewTab":true,"markdown":"## Sample Logs Data\\nThis dashboard contains sample data for you to play with. You can view it, search it, and interact with the visualizations. For more information about Kibana, check our [docs](https://www.elastic.co/guide/en/kibana/current/index.html)."},"uiState":{},"data":{"aggs":[],"searchSource":{"query":{"query":"","language":"kuery"},"filter":[]}}},"enhancements":{},"hidePanelTitles":true}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":0,"w":12,"h":7,"i":"bb94016e-f4a6-49ca-87a9-296a2869d570"},"panelIndex":"bb94016e-f4a6-49ca-87a9-296a2869d570","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-483defd2-775b-4a62-bdef-496c819bb8ed"}],"state":{"visualization":{"layerId":"483defd2-775b-4a62-bdef-496c819bb8ed","layerType":"data","metricAccessor":"37430d12-7452-4cc9-b035-5cfd4061edf0"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"483defd2-775b-4a62-bdef-496c819bb8ed":{"columns":{"37430d12-7452-4cc9-b035-5cfd4061edf0":{"label":"Visits","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true}},"columnOrder":["37430d12-7452-4cc9-b035-5cfd4061edf0"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":7,"w":12,"h":7,"i":"8c1456d4-1993-4ba2-b701-04aca02c9fef"},"panelIndex":"8c1456d4-1993-4ba2-b701-04aca02c9fef","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-f3793bb7-3971-4753-866d-4008e77a9f9a"}],"state":{"visualization":{"layerId":"f3793bb7-3971-4753-866d-4008e77a9f9a","layerType":"data","metricAccessor":"71c076a6-e782-4866-b8df-5fd85a41f08b"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"f3793bb7-3971-4753-866d-4008e77a9f9a":{"columns":{"71c076a6-e782-4866-b8df-5fd85a41f08bX0":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 500","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX1":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX2":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"location":{"min":0,"max":46},"text":"count(kql=\'response.keyword >= 500\') / count()"}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08b":{"label":"HTTP 5xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"customLabel":true}},"columnOrder":["71c076a6-e782-4866-b8df-5fd85a41f08b","71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1","71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":7,"w":12,"h":7,"i":"01d8e435-91c0-484f-a11e-856747050b0a"},"panelIndex":"01d8e435-91c0-484f-a11e-856747050b0a","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-f3793bb7-3971-4753-866d-4008e77a9f9a"}],"state":{"visualization":{"layerId":"f3793bb7-3971-4753-866d-4008e77a9f9a","layerType":"data","metricAccessor":"71c076a6-e782-4866-b8df-5fd85a41f08b"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"f3793bb7-3971-4753-866d-4008e77a9f9a":{"columns":{"71c076a6-e782-4866-b8df-5fd85a41f08bX0":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX1":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX2":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"location":{"min":0,"max":73},"text":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()"}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08b":{"label":"HTTP 4xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"customLabel":true}},"columnOrder":["71c076a6-e782-4866-b8df-5fd85a41f08b","71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1","71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":32,"w":24,"h":15,"i":"8e59c7cf-6e42-4343-a113-c4a255fcf2ce"},"panelIndex":"8e59c7cf-6e42-4343-a113-c4a255fcf2ce","embeddableConfig":{"savedVis":{"title":"","description":"","type":"vega","params":{"spec":"{\\n $schema: https://vega.github.io/schema/vega-lite/v5.json\\n data: {\\n url: {\\n %context%: true\\n %timefield%: @timestamp\\n index: kibana_sample_data_logs\\n body: {\\n aggs: {\\n countries: {\\n terms: {\\n field: geo.src\\n size: 25\\n }\\n aggs: {\\n hours: {\\n histogram: {\\n field: hour_of_day\\n interval: 1\\n }\\n aggs: {\\n unique: {\\n cardinality: {\\n field: clientip\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n size: 0\\n }\\n }\\n format: {property: \\"aggregations.countries.buckets\\"}\\n }\\n \\n transform: [\\n {\\n flatten: [\\"hours.buckets\\"],\\n as: [\\"buckets\\"]\\n }\\n ]\\n\\n mark: {\\n type: rect\\n tooltip: true\\n }\\n\\n encoding: {\\n x: {\\n field: buckets.key\\n type: ordinal\\n axis: {\\n title: false\\n labelAngle: 0\\n }\\n }\\n y: {\\n field: key\\n type: nominal\\n sort: {\\n field: -buckets.unique.value\\n }\\n axis: {title: false}\\n }\\n color: {\\n field: buckets.unique.value\\n type: quantitative\\n axis: {title: false}\\n scale: {\\n scheme: reds\\n }\\n }\\n }\\n}\\n"},"uiState":{},"data":{"aggs":[],"searchSource":{"query":{"query":"","language":"kuery"},"filter":[]}}},"enhancements":{}},"panelRefName":"panel_8e59c7cf-6e42-4343-a113-c4a255fcf2ce"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":47,"w":24,"h":13,"i":"21bb0939-ee09-4021-8848-6552b3a6a788"},"panelIndex":"21bb0939-ee09-4021-8848-6552b3a6a788","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsDatatable","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-c840e93e-2949-4723-ad35-6bdb2d724404"}],"state":{"visualization":{"columns":[{"columnId":"4e64d6d7-4f92-4d5e-abbb-13796604db30","isTransposed":false},{"columnId":"fb9a848d-76f3-4005-a067-4259a50b5621","isTransposed":false},{"columnId":"a2760bc2-9a6e-46a1-8595-86f61573c7cf","isTransposed":false},{"columnId":"2c8bd8d5-35ff-4386-8d27-3ba882b13e43","isTransposed":false,"colorMode":"text","palette":{"type":"palette","name":"status","params":{"steps":5,"stops":[{"color":"#23be8f","stop":20},{"color":"#9dedce","stop":40},{"color":"#fcd279","stop":60},{"color":"#ffc0b8","stop":80},{"color":"#f66d64","stop":100}],"rangeType":"percent","rangeMin":20,"rangeMax":null,"continuity":"above","reverse":false}}},{"columnId":"defa6f97-b874-4556-8438-056fb437787b","isTransposed":false,"colorMode":"text","palette":{"type":"palette","name":"status","params":{"steps":5,"stops":[{"color":"#23be8f","stop":20},{"color":"#9dedce","stop":40},{"color":"#fcd279","stop":60},{"color":"#ffc0b8","stop":80},{"color":"#f66d64","stop":100}],"rangeType":"percent","rangeMin":20,"rangeMax":null,"continuity":"above","reverse":false}}}],"layerId":"c840e93e-2949-4723-ad35-6bdb2d724404","layerType":"data"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"c840e93e-2949-4723-ad35-6bdb2d724404":{"columns":{"4e64d6d7-4f92-4d5e-abbb-13796604db30":{"label":"Type","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"extension.keyword","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"fb9a848d-76f3-4005-a067-4259a50b5621"},"orderDirection":"desc","otherBucket":true,"missingBucket":false,"parentFormat":{"id":"terms"},"include":[],"exclude":[],"includeIsRegex":false,"excludeIsRegex":false},"customLabel":true},"fb9a848d-76f3-4005-a067-4259a50b5621":{"label":"Bytes (Total)","dataType":"number","operationType":"sum","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"emptyAsNull":true,"format":{"id":"bytes","params":{"decimals":2}}},"customLabel":true},"a2760bc2-9a6e-46a1-8595-86f61573c7cf":{"label":"Bytes (Last Hour)","dataType":"number","operationType":"sum","sourceField":"bytes","isBucketed":false,"scale":"ratio","reducedTimeRange":"1h","params":{"emptyAsNull":true,"format":{"id":"bytes","params":{"decimals":2}}},"customLabel":true},"2c8bd8d5-35ff-4386-8d27-3ba882b13e43":{"label":"Unique Visits (Total)","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"params":{"emptyAsNull":true},"customLabel":true},"defa6f97-b874-4556-8438-056fb437787b":{"label":"Unique count of clientip","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"reducedTimeRange":"1h","params":{"emptyAsNull":true}}},"columnOrder":["4e64d6d7-4f92-4d5e-abbb-13796604db30","fb9a848d-76f3-4005-a067-4259a50b5621","a2760bc2-9a6e-46a1-8595-86f61573c7cf","2c8bd8d5-35ff-4386-8d27-3ba882b13e43","defa6f97-b874-4556-8438-056fb437787b"],"sampling":1,"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":47,"w":24,"h":13,"i":"cbca842c-b9fa-4523-9ce0-14e350866e33"},"panelIndex":"cbca842c-b9fa-4523-9ce0-14e350866e33","embeddableConfig":{"hidePanelTitles":false,"enhancements":{}},"title":"[Logs] Bytes distribution","panelRefName":"panel_cbca842c-b9fa-4523-9ce0-14e350866e33"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":60,"w":48,"h":19,"i":"1d5f0b3f-d9d2-4b26-997b-83bc5ca3090b"},"panelIndex":"1d5f0b3f-d9d2-4b26-997b-83bc5ca3090b","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsDatatable","state":{"datasourceStates":{"formBased":{"layers":{"c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0":{"columns":{"42783ad7-dbcf-4310-bc06-f21f4eaaac96":{"label":"URL","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"url.keyword","isBucketed":true,"params":{"size":1000,"orderBy":{"type":"column","columnId":"f7835375-4d5b-4839-95ea-41928192a319"},"orderDirection":"desc","otherBucket":true,"missingBucket":false},"customLabel":true},"f7835375-4d5b-4839-95ea-41928192a319":{"label":"Visits","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX0":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX1":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX2":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1"],"location":{"min":0,"max":73},"text":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()"}},"references":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1"],"customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1da":{"label":"HTTP 4xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX2"],"customLabel":true},"791d5a5b-a7ba-4e9e-b533-51b33c7d7747":{"label":"Unique","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"customLabel":true},"611e3509-e834-4fdd-b573-44e959e95d27":{"label":"95th percentile of bytes","dataType":"number","operationType":"percentile","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"percentile":95,"format":{"id":"bytes","params":{"decimals":0}}}},"9f79ecca-123f-4098-a658-6b0e998da003":{"label":"Median of bytes","dataType":"number","operationType":"median","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"format":{"id":"bytes","params":{"decimals":0}}}},"491285fd-0196-402c-9b7f-4660fdc1c22aX0":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 500","language":"kuery"},"customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22aX1":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22aX2":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1"],"location":{"min":0,"max":46},"text":"count(kql=\'response.keyword >= 500\') / count()"}},"references":["491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1"],"customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22a":{"label":"HTTP 5xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["491285fd-0196-402c-9b7f-4660fdc1c22aX2"],"customLabel":true}},"columnOrder":["42783ad7-dbcf-4310-bc06-f21f4eaaac96","f7835375-4d5b-4839-95ea-41928192a319","791d5a5b-a7ba-4e9e-b533-51b33c7d7747","07fc84ca-4147-4ba9-879e-d1b4e086e1da","491285fd-0196-402c-9b7f-4660fdc1c22a","491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1","491285fd-0196-402c-9b7f-4660fdc1c22aX2","07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1","07fc84ca-4147-4ba9-879e-d1b4e086e1daX2","611e3509-e834-4fdd-b573-44e959e95d27","9f79ecca-123f-4098-a658-6b0e998da003"],"incompleteColumns":{}}}}},"visualization":{"layerId":"c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0","columns":[{"columnId":"42783ad7-dbcf-4310-bc06-f21f4eaaac96","width":650.6666666666666},{"columnId":"f7835375-4d5b-4839-95ea-41928192a319"},{"columnId":"491285fd-0196-402c-9b7f-4660fdc1c22a","isTransposed":false,"width":81.66666666666669,"colorMode":"cell","palette":{"type":"palette","name":"negative","params":{"steps":5,"stops":[{"color":"#fcdedc","stop":20},{"color":"#fec3bd","stop":40},{"color":"#fea79e","stop":60},{"color":"#fb8b81","stop":80},{"color":"#f66d64","stop":100}],"rangeType":"percent","rangeMin":20,"rangeMax":null,"continuity":"above","reverse":false}}},{"columnId":"07fc84ca-4147-4ba9-879e-d1b4e086e1da","isTransposed":false,"colorMode":"cell","palette":{"type":"palette","name":"negative","params":{"steps":5,"stops":[{"color":"#fcdedc","stop":20},{"color":"#fec3bd","stop":40},{"color":"#fea79e","stop":60},{"color":"#fb8b81","stop":80},{"color":"#f66d64","stop":100}],"rangeType":"percent","rangeMin":20,"rangeMax":null,"continuity":"above","reverse":false}}},{"columnId":"791d5a5b-a7ba-4e9e-b533-51b33c7d7747","isTransposed":false},{"columnId":"611e3509-e834-4fdd-b573-44e959e95d27","isTransposed":false},{"columnId":"9f79ecca-123f-4098-a658-6b0e998da003","isTransposed":false}],"sorting":{"columnId":"491285fd-0196-402c-9b7f-4660fdc1c22a","direction":"desc"},"layerType":"data","rowHeight":"single","rowHeightLines":1},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0","type":"index-pattern"}]},"enhancements":{"dynamicActions":{"events":[]}},"hidePanelTitles":false},"title":"[Logs] Errors by host"}]', timeFrom: 'now-7d/d', title: '[Logs] Web Traffic', timeTo: 'now', diff --git a/src/plugins/image_embeddable/public/components/image_editor/open_image_editor.tsx b/src/plugins/image_embeddable/public/components/image_editor/open_image_editor.tsx index f730147cb0d2c..9454dab4b9236 100644 --- a/src/plugins/image_embeddable/public/components/image_editor/open_image_editor.tsx +++ b/src/plugins/image_embeddable/public/components/image_editor/open_image_editor.tsx @@ -28,7 +28,7 @@ export const openImageEditor = async ({ }): Promise<ImageConfig> => { const { ImageEditorFlyout } = await import('./image_editor_flyout'); - const { overlays, theme, i18n, http, security } = coreServices; + const { overlays, http, security, ...startServices } = coreServices; const user = await security.authc.getCurrentUser(); const filesClient = filesService.filesClientFactory.asUnscoped<FileImageMetadata>(); @@ -73,7 +73,7 @@ export const openImageEditor = async ({ /> </ImageViewerContext.Provider> </FilesContext>, - { theme, i18n } + startServices ), { onClose: () => { diff --git a/src/plugins/image_embeddable/public/imports.ts b/src/plugins/image_embeddable/public/imports.ts index 1ec91560de8b4..dbe06b00daea9 100644 --- a/src/plugins/image_embeddable/public/imports.ts +++ b/src/plugins/image_embeddable/public/imports.ts @@ -18,11 +18,6 @@ export type { export type { FileImageMetadata } from '@kbn/shared-ux-file-types'; -export type { - IContainer, - EmbeddableInput, - EmbeddableFactoryDefinition, -} from '@kbn/embeddable-plugin/public'; export type { ApplicationStart, OverlayStart, ThemeServiceStart } from '@kbn/core/public'; export type { UiActionsStart, UiActionsSetup } from '@kbn/ui-actions-plugin/public'; diff --git a/src/plugins/kibana_overview/public/components/_overview.scss b/src/plugins/kibana_overview/public/components/_overview.scss index 85eebd7da2959..10b4b5a099dab 100644 --- a/src/plugins/kibana_overview/public/components/_overview.scss +++ b/src/plugins/kibana_overview/public/components/_overview.scss @@ -48,7 +48,7 @@ } &.securitySolution { .euiCard__image { - background-color: $euiColorSuccess; + background-color: $euiColorAccentSecondary; } } } diff --git a/src/plugins/links/public/editor/open_editor_flyout.tsx b/src/plugins/links/public/editor/open_editor_flyout.tsx index 87b1ab4e21ff8..32e9cc92be849 100644 --- a/src/plugins/links/public/editor/open_editor_flyout.tsx +++ b/src/plugins/links/public/editor/open_editor_flyout.tsx @@ -133,7 +133,7 @@ export async function openEditorFlyout({ parentDashboardId={parentDashboardId} isByReference={Boolean(initialState?.savedObjectId)} />, - { theme: coreServices.theme, i18n: coreServices.i18n } + coreServices ), { id: flyoutId, diff --git a/src/plugins/links/public/embeddable/links_embeddable.tsx b/src/plugins/links/public/embeddable/links_embeddable.tsx index 685f0a6c46a3b..a1bff3702c6ce 100644 --- a/src/plugins/links/public/embeddable/links_embeddable.tsx +++ b/src/plugins/links/public/embeddable/links_embeddable.tsx @@ -121,7 +121,7 @@ export const getLinksEmbeddableFactory = () => { delete snapshot.savedObjectId; return snapshot; }, - serializeState: async (): Promise<SerializedPanelState<LinksSerializedState>> => { + serializeState: (): SerializedPanelState<LinksSerializedState> => { if (savedObjectId$.value !== undefined) { const linksByReferenceState: LinksByReferenceSerializedState = { savedObjectId: savedObjectId$.value, diff --git a/src/plugins/management/README.md b/src/plugins/management/README.md deleted file mode 100644 index 15974f6d4814d..0000000000000 --- a/src/plugins/management/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Management Plugin - -This plugins contains the "Stack Management" page framework. It offers navigation and an API -to link individual management section into it. This plugin does not contain any individual -management section itself. - -## Cards navigation - -This plugin offers a special version of its landing page with a special feature called "cards navigation". -This feature can be enabled by calling the `setupCardsNavigation` method from the `management` plugin from -your plugin's `setup` method: - -``` - management.setupCardsNavigation({ enabled: true }); -``` - -The cards that will be shown are defined in the `packages/kbn-management/cards_navigation/src/consts.tsx` file -and they are grouped into categories. These cards are computed based on the `SectionsService` that is provided -in the `management` plugin. - -### Adding a new card to the navigation - -For adding a new item to the navigation all you have to do is edit the `packages/kbn-management/cards_navigation/src/consts.tsx` -file and add two things: - -* Add the app id into the `appIds` enum (make sure that the app_id value matches the one from the plugin) -* Add a new entry to the `appDefinitions` object. In here you can specify the category where you want it to be, icon and description. - - -### Removing an item from the navigation - -If card needs to be hidden from the navigation you can specify that by using the `hideLinksTo` prop: - -``` - management.setupCardsNavigation({ - enabled: true, - hideLinksTo: [appIds.MAINTENANCE_WINDOWS], - }); -``` - -More specifics about the `setupCardsNavigation` can be found in `packages/kbn-management/cards_navigation/readme.mdx`. diff --git a/src/plugins/management/jest.config.js b/src/plugins/management/jest.config.js deleted file mode 100644 index df990c44e36c1..0000000000000 --- a/src/plugins/management/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/src/plugins/management'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/plugins/management', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/src/plugins/management/{common,public,server}/**/*.{ts,tsx}'], -}; diff --git a/src/plugins/management/tsconfig.json b/src/plugins/management/tsconfig.json deleted file mode 100644 index 01b1f62b3ba15..0000000000000 --- a/src/plugins/management/tsconfig.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/utility-types", - "@kbn/share-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/shared-ux-page-kibana-template", - "@kbn/shared-ux-router", - "@kbn/management-cards-navigation", - "@kbn/shared-ux-link-redirect-app", - "@kbn/test-jest-helpers", - "@kbn/config-schema", - "@kbn/serverless", - "@kbn/shared-ux-error-boundary", - "@kbn/deeplinks-management", - "@kbn/react-kibana-context-render", - "@kbn/core-chrome-browser", - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/src/plugins/navigation/public/side_navigation/index.tsx b/src/plugins/navigation/public/side_navigation/index.tsx index c6659ef1af6f2..5d476b09d1da5 100644 --- a/src/plugins/navigation/public/side_navigation/index.tsx +++ b/src/plugins/navigation/public/side_navigation/index.tsx @@ -8,34 +8,34 @@ */ import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import React, { Suspense, type FC } from 'react'; -import { EuiSkeletonRectangle } from '@elastic/eui'; +import { EuiSkeletonRectangle, useEuiTheme } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { Props as NavigationProps } from './side_navigation'; const SideNavComponentLazy = React.lazy(() => import('./side_navigation')); -export const SideNavComponent: FC<NavigationProps> = (props) => ( - <Suspense - fallback={ - <EuiSkeletonRectangle - css={css` - margin: ${euiThemeVars.euiSize}; - `} - width={16} - height={16} - borderRadius="s" - contentAriaLabel={i18n.translate( - 'navigation.sideNavigation.loadingSolutionNavigationLabel', - { - defaultMessage: 'Loading solution navigation', - } - )} - /> - } - > - <SideNavComponentLazy {...props} /> - </Suspense> -); +export const SideNavComponent: FC<NavigationProps> = (props) => { + const { euiTheme } = useEuiTheme(); + return ( + <Suspense + fallback={ + <EuiSkeletonRectangle + css={css` + margin: ${euiTheme.size.base}; + `} + width={16} + height={16} + borderRadius="s" + contentAriaLabel={i18n.translate( + 'navigation.sideNavigation.loadingSolutionNavigationLabel', + { defaultMessage: 'Loading solution navigation' } + )} + /> + } + > + <SideNavComponentLazy {...props} /> + </Suspense> + ); +}; diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.test.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.test.tsx index e633ec4a70be1..430753074a958 100644 --- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.test.tsx +++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.test.tsx @@ -8,13 +8,12 @@ */ import React from 'react'; -import { TopNavMenuItem } from './top_nav_menu_item'; -import { TopNavMenuData } from './top_nav_menu_data'; +import { TopNavMenuItem, TopNavMenuItemProps } from './top_nav_menu_item'; import { shallowWithIntl } from '@kbn/test-jest-helpers'; import { EuiButtonIcon } from '@elastic/eui'; describe('TopNavMenu', () => { - const ensureMenuItemDisabled = (data: TopNavMenuData) => { + const ensureMenuItemDisabled = (data: TopNavMenuItemProps) => { const component = shallowWithIntl(<TopNavMenuItem {...data} />); expect(component.prop('isDisabled')).toEqual(true); @@ -24,10 +23,11 @@ describe('TopNavMenu', () => { }; it('Should render and click an item', () => { - const data: TopNavMenuData = { + const data: TopNavMenuItemProps = { id: 'test', label: 'test', run: jest.fn(), + closePopover: jest.fn(), }; const component = shallowWithIntl(<TopNavMenuItem {...data} />); @@ -43,13 +43,14 @@ describe('TopNavMenu', () => { }); it('Should render item with all attributes', () => { - const data: TopNavMenuData = { + const data: TopNavMenuItemProps = { id: 'test', label: 'test', description: 'description', testId: 'test-class-name', disableButton: false, run: jest.fn(), + closePopover: jest.fn(), }; const component = shallowWithIntl(<TopNavMenuItem {...data} />); @@ -61,13 +62,14 @@ describe('TopNavMenu', () => { }); it('Should render emphasized item which should be clickable', () => { - const data: TopNavMenuData = { + const data: TopNavMenuItemProps = { id: 'test', label: 'test', iconType: 'beaker', iconSide: 'right', emphasize: true, run: jest.fn(), + closePopover: jest.fn(), }; const component = shallowWithIntl(<TopNavMenuItem {...data} />); @@ -78,12 +80,13 @@ describe('TopNavMenu', () => { }); it('Should render an icon-only item', () => { - const data: TopNavMenuData = { + const data: TopNavMenuItemProps = { id: 'test', label: 'test', iconType: 'share', iconOnly: true, run: jest.fn(), + closePopover: jest.fn(), }; const component = shallowWithIntl(<TopNavMenuItem {...data} />); @@ -100,6 +103,7 @@ describe('TopNavMenu', () => { label: 'test', disableButton: true, run: jest.fn(), + closePopover: jest.fn(), }); }); @@ -109,6 +113,7 @@ describe('TopNavMenu', () => { label: 'test', disableButton: () => true, run: jest.fn(), + closePopover: jest.fn(), }); }); @@ -121,6 +126,7 @@ describe('TopNavMenu', () => { emphasize: true, disableButton: true, run: jest.fn(), + closePopover: jest.fn(), }); }); @@ -133,6 +139,26 @@ describe('TopNavMenu', () => { emphasize: true, disableButton: () => true, run: jest.fn(), + closePopover: jest.fn(), }); }); + + it('Should render emphasized item in mobile mode, which should be clickable and call closePopover on click', () => { + const data: TopNavMenuItemProps = { + id: 'test', + label: 'test', + iconType: 'beaker', + iconSide: 'right', + emphasize: true, + isMobileMenu: true, + run: jest.fn(), + closePopover: jest.fn(), + }; + + const component = shallowWithIntl(<TopNavMenuItem {...data} />); + const event = { currentTarget: { value: 'a' } }; + component.simulate('click', event); + expect(data.run).toHaveBeenCalledTimes(1); + expect(data.closePopover).toHaveBeenCalledTimes(1); + }); }); diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.tsx index 84232d47fd337..f19d7d08d79d9 100644 --- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.tsx +++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.tsx @@ -19,7 +19,12 @@ import { } from '@elastic/eui'; import { TopNavMenuData } from './top_nav_menu_data'; -export function TopNavMenuItem(props: TopNavMenuData & { isMobileMenu?: boolean }) { +export interface TopNavMenuItemProps extends TopNavMenuData { + closePopover: () => void; + isMobileMenu?: boolean; +} + +export function TopNavMenuItem(props: TopNavMenuItemProps) { function isDisabled(): boolean { const val = isFunction(props.disableButton) ? props.disableButton() : props.disableButton; return val!; @@ -46,6 +51,9 @@ export function TopNavMenuItem(props: TopNavMenuData & { isMobileMenu?: boolean function handleClick(e: MouseEvent<HTMLButtonElement>) { if (isDisabled()) return; props.run(e.currentTarget); + if (props.isMobileMenu) { + props.closePopover(); + } } const commonButtonProps = { diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu_items.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu_items.tsx index 928749beb4477..e5150679bf1d5 100644 --- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu_items.tsx +++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu_items.tsx @@ -35,9 +35,18 @@ export const TopNavMenuItems = ({ className={className} popoverBreakpoints={popoverBreakpoints} > - {config.map((menuItem: TopNavMenuData, i: number) => { - return <TopNavMenuItem key={`nav-menu-${i}`} isMobileMenu={isMobileMenu} {...menuItem} />; - })} + {(closePopover) => + config.map((menuItem: TopNavMenuData, i: number) => { + return ( + <TopNavMenuItem + key={`nav-menu-${i}`} + isMobileMenu={isMobileMenu} + closePopover={closePopover} + {...menuItem} + /> + ); + }) + } </EuiHeaderLinks> ); }; diff --git a/src/plugins/navigation/tsconfig.json b/src/plugins/navigation/tsconfig.json index 00b5186670cf1..1ee0462330954 100644 --- a/src/plugins/navigation/tsconfig.json +++ b/src/plugins/navigation/tsconfig.json @@ -27,7 +27,6 @@ "@kbn/config-schema", "@kbn/i18n", "@kbn/std", - "@kbn/ui-theme", ], "exclude": [ "target/**/*", diff --git a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/open_customize_panel.tsx b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/open_customize_panel.tsx index 8fa2fd0658e56..b33a1f6014ea8 100644 --- a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/open_customize_panel.tsx +++ b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/open_customize_panel.tsx @@ -42,7 +42,7 @@ export const openCustomizePanelFlyout = ({ }} /> </KibanaReactContextProvider>, - { theme: core.theme, i18n: core.i18n } + core ), { size: 's', diff --git a/src/plugins/saved_objects/public/save_modal/saved_object_save_modal.tsx b/src/plugins/saved_objects/public/save_modal/saved_object_save_modal.tsx index a3e6d1cc22b2a..f56091a407fae 100644 --- a/src/plugins/saved_objects/public/save_modal/saved_object_save_modal.tsx +++ b/src/plugins/saved_objects/public/save_modal/saved_object_save_modal.tsx @@ -32,7 +32,6 @@ import { FormattedMessage } from '@kbn/i18n-react'; import React from 'react'; import { EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { euiThemeVars } from '@kbn/ui-theme'; export interface OnSaveProps { newTitle: string; @@ -405,7 +404,10 @@ export class SavedObjectSaveModal extends React.Component<Props, SaveModalState> /> </EuiFlexItem> {this.props.mustCopyOnSaveMessage && ( - <EuiFlexItem css={{ marginLeft: `-${euiThemeVars.euiSize}` }} grow={false}> + <EuiFlexItem + css={({ euiTheme }) => ({ marginLeft: `-${euiTheme.size.base}` })} + grow={false} + > <EuiIconTip type="iInCircle" content={this.props.mustCopyOnSaveMessage} /> </EuiFlexItem> )} diff --git a/src/plugins/saved_objects/tsconfig.json b/src/plugins/saved_objects/tsconfig.json index 83e113a7e4e17..167a6e1c7551e 100644 --- a/src/plugins/saved_objects/tsconfig.json +++ b/src/plugins/saved_objects/tsconfig.json @@ -1,20 +1,25 @@ { "extends": "../../../tsconfig.base.json", "compilerOptions": { - "outDir": "target/types", + "outDir": "target/types" }, - "include": ["common/**/*", "public/**/*", "server/**/*"], + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + // Emotion theme typing + "../../../typings/emotion.d.ts" + ], "kbn_references": [ "@kbn/core", "@kbn/data-plugin", "@kbn/i18n", "@kbn/data-views-plugin", "@kbn/i18n-react", - "@kbn/ui-theme", "@kbn/react-kibana-mount", - "@kbn/test-jest-helpers", + "@kbn/test-jest-helpers" ], "exclude": [ - "target/**/*", + "target/**/*" ] } diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap index bc0eda7e6d5a5..a3bcf4da52544 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap @@ -1,239 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Table prevents hidden saved objects from being deleted 1`] = ` -<Fragment> - <EuiSearchBar - box={ - Object { - "data-test-subj": "savedObjectSearchBar", - "schema": Object { - "recognizedFields": Array [ - "type", - "tag", - ], - }, - } - } - filters={ - Array [ - Object { - "field": "type", - "multiSelect": "or", - "name": "Type", - "options": Array [ - Object { - "value": 2, - }, - ], - "type": "field_value_selection", - }, - ] - } - onChange={[Function]} - toolsRight={ - Array [ - <EuiToolTip - content={ - <Memo(MemoizedFormattedMessage) - defaultMessage="Selected objects can’t be deleted because they are hidden objects." - id="savedObjectsManagement.objectsTable.table.deleteDisabledTooltip" - /> - } - delay="regular" - display="inlineBlock" - position="top" - > - <EuiButton - color="danger" - data-test-subj="savedObjectsManagementDelete" - iconType="trash" - isDisabled={true} - onClick={[Function]} - title="Unable to delete saved objects" - > - <Memo(MemoizedFormattedMessage) - defaultMessage="Delete" - id="savedObjectsManagement.objectsTable.table.deleteButtonLabel" - /> - </EuiButton> - </EuiToolTip>, - <EuiPopover - anchorPosition="downCenter" - button={ - <EuiButton - iconSide="right" - iconType="arrowDown" - isDisabled={false} - onClick={[Function]} - > - <Memo(MemoizedFormattedMessage) - defaultMessage="Export" - id="savedObjectsManagement.objectsTable.table.exportPopoverButtonLabel" - /> - </EuiButton> - } - closePopover={[Function]} - display="inline-block" - hasArrow={true} - isOpen={false} - ownFocus={true} - panelPaddingSize="m" - repositionToCrossAxis={true} - > - <EuiFormRow - label={ - <Memo(MemoizedFormattedMessage) - defaultMessage="Options" - id="savedObjectsManagement.objectsTable.exportObjectsConfirmModal.exportOptionsLabel" - /> - } - > - <EuiSwitch - checked={true} - label={ - <Memo(MemoizedFormattedMessage) - defaultMessage="Include related objects" - id="savedObjectsManagement.objectsTable.exportObjectsConfirmModal.includeReferencesDeepLabel" - /> - } - name="includeReferencesDeep" - onChange={[Function]} - /> - </EuiFormRow> - <EuiFormRow> - <EuiButton - fill={true} - iconType="exportAction" - onClick={[Function]} - > - <Memo(MemoizedFormattedMessage) - defaultMessage="Export" - id="savedObjectsManagement.objectsTable.table.exportButtonLabel" - /> - </EuiButton> - </EuiFormRow> - </EuiPopover>, - ] - } - /> - <EuiSpacer /> - <div - data-test-subj="savedObjectsTable" - > - <EuiBasicTable - columns={ - Array [ - Object { - "align": "center", - "data-test-subj": "savedObjectsTableRowType", - "description": "Type of the saved object", - "field": "type", - "name": "Type", - "render": [Function], - "sortable": true, - "width": "65px", - }, - Object { - "data-test-subj": "savedObjectsTableRowTitle", - "dataType": "string", - "description": "Title of the saved object", - "field": "meta.title", - "name": "Title", - "render": [Function], - "sortable": false, - }, - Object { - "field": "updated_at", - "name": "Last updated", - "render": [Function], - "sortable": true, - "width": "150px", - }, - Object { - "actions": Array [ - Object { - "data-test-subj": "savedObjectsTableAction-inspect", - "description": "Inspect this saved object", - "icon": "inspect", - "name": "Inspect", - "onClick": [Function], - "type": "icon", - }, - Object { - "data-test-subj": "savedObjectsTableAction-relationships", - "description": "View the relationships this saved object has to other saved objects", - "icon": "kqlSelector", - "name": "Relationships", - "onClick": [Function], - "type": "icon", - }, - ], - "name": "Actions", - "width": "80px", - }, - ] - } - itemId="id" - items={ - Array [ - Object { - "attributes": Object {}, - "id": "1", - "meta": Object { - "editUrl": "#/management/kibana/dataViews/dataView/1", - "icon": "indexPatternApp", - "inAppUrl": Object { - "path": "/management/kibana/dataViews/dataView/1", - "uiCapabilitiesPath": "management.kibana.indexPatterns", - }, - "title": "MyIndexPattern*", - }, - "references": Array [], - "type": "index-pattern", - }, - ] - } - loading={false} - noItemsMessage={ - <EuiI18n - default="No items found" - token="euiBasicTable.noItemsMessage" - /> - } - onChange={[Function]} - pagination={ - Object { - "pageIndex": 1, - "pageSize": 2, - "pageSizeOptions": Array [ - 5, - 10, - 20, - 50, - ], - "totalItemCount": 3, - } - } - rowProps={[Function]} - selection={ - Object { - "onSelectionChange": [Function], - } - } - sorting={ - Object { - "sort": Object { - "direction": "desc", - "field": "updated_at", - }, - } - } - tableLayout="fixed" - /> - </div> -</Fragment> -`; - exports[`Table should render normally 1`] = ` <Fragment> <EuiSearchBar @@ -267,6 +33,7 @@ exports[`Table should render normally 1`] = ` toolsRight={ Array [ <EuiToolTip + data-test-subj="deleteSOToolTip" delay="regular" display="inlineBlock" position="top" diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/import_summary.scss b/src/plugins/saved_objects_management/public/management_section/objects_table/components/import_summary.scss index 4b46c1244e246..0dc6b0e3ddc5d 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/import_summary.scss +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/import_summary.scss @@ -8,11 +8,11 @@ } .savedObjectsManagementImportSummary__createdCount { - color: $euiColorSuccessText; + color: $euiColorTextSuccess; } .savedObjectsManagementImportSummary__errorCount { - color: $euiColorDangerText; + color: $euiColorTextDanger; } .savedObjectsManagementImportSummary__icon { diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx index 4c2ce7cfcef6e..3e7d1df19e470 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx @@ -113,7 +113,7 @@ describe('Table', () => { expect(component.state().isSearchTextValid).toBe(true); }); - it(`prevents hidden saved objects from being deleted`, () => { + it(`prevents hidden saved objects from being deleted`, async () => { const selectedSavedObjects = [ { type: 'visualization', meta: { hiddenType: true } }, { type: 'search', meta: { hiddenType: true } }, @@ -124,9 +124,33 @@ describe('Table', () => { selectedSavedObjects, capabilities: { savedObjectsManagement: { delete: false } } as any, }; - const component = shallowWithI18nProvider(<Table {...customizedProps} />); + render( + <I18nProvider> + <Table {...customizedProps} /> + </I18nProvider> + ); - expect(component).toMatchSnapshot(); + await waitFor(() => { + expect(screen.getByTestId('savedObjectsManagementDelete')).toBeDisabled(); + }); + }); + + it(`disables delete when no objects are selected `, async () => { + const selectedSavedObjects = [] as any; + const customizedProps = { + ...defaultProps, + selectedSavedObjects, + capabilities: { savedObjectsManagement: { delete: true } } as any, + }; + render( + <I18nProvider> + <Table {...customizedProps} /> + </I18nProvider> + ); + + await waitFor(() => { + expect(screen.getByTestId('savedObjectsManagementDelete')).toBeDisabled(); + }); }); it(`allows for automatic refreshing after an action`, () => { diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx index a32a1e9e958e1..73e6e2978429b 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx @@ -386,8 +386,9 @@ export class Table extends PureComponent<TableProps, TableState> { const activeActionContents = this.state.activeAction?.render() ?? null; const exceededResultCount = totalItemCount > MAX_PAGINATED_ITEM; - const allHidden = selectedSavedObjects.every(({ meta: { hiddenType } }) => hiddenType); - + const anySelected = selectedSavedObjects.length > 0; + const allHidden = + anySelected && selectedSavedObjects.every(({ meta: { hiddenType } }) => hiddenType); return ( <Fragment> {activeActionContents} @@ -403,6 +404,8 @@ export class Table extends PureComponent<TableProps, TableState> { defaultQuery={this.props.initialQuery} toolsRight={[ <EuiToolTip + data-test-subj="deleteSOToolTip" + key="deleteSOToolTip" content={ allHidden ? ( <FormattedMessage @@ -417,7 +420,9 @@ export class Table extends PureComponent<TableProps, TableState> { iconType="trash" color="danger" onClick={onDelete} - isDisabled={allHidden || !capabilities.savedObjectsManagement.delete} + isDisabled={ + !anySelected || allHidden || !capabilities.savedObjectsManagement.delete + } title={ capabilities.savedObjectsManagement.delete ? undefined diff --git a/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts b/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts index defb0e1a79986..b17eadf7e9571 100644 --- a/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts +++ b/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts @@ -8,9 +8,7 @@ */ import { contentManagementMock } from '@kbn/content-management-plugin/public/mocks'; -import { coreMock } from '@kbn/core/public/mocks'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; -import { AttributeService, type EmbeddableStart } from '@kbn/embeddable-plugin/public'; import { spacesPluginMock } from '@kbn/spaces-plugin/public/mocks'; import { SavedSearchByValueAttributes, byValueToSavedSearch } from '.'; @@ -18,11 +16,6 @@ const mockServices = { contentManagement: contentManagementMock.createStartContract().client, search: dataPluginMock.createStartContract().search, spaces: spacesPluginMock.createStartContract(), - embeddable: { - getAttributeService: jest.fn( - (_, opts) => new AttributeService('search', coreMock.createStart().notifications.toasts, opts) - ), - } as unknown as EmbeddableStart, }; describe('toSavedSearch', () => { diff --git a/src/plugins/telemetry/server/telemetry_collection/get_cluster_stats.ts b/src/plugins/telemetry/server/telemetry_collection/get_cluster_stats.ts index 35afcacc3d0b5..317066c46720b 100644 --- a/src/plugins/telemetry/server/telemetry_collection/get_cluster_stats.ts +++ b/src/plugins/telemetry/server/telemetry_collection/get_cluster_stats.ts @@ -20,8 +20,6 @@ export async function getClusterStats(esClient: ElasticsearchClient) { return await esClient.cluster.stats( { timeout: CLUSTER_STAT_TIMEOUT, - - // @ts-expect-error include_remotes: true, }, { diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/logs_overview_degraded_fields.tsx b/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/logs_overview_degraded_fields.tsx index 3a244dcd5eb3c..90e9b1bcb0658 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/logs_overview_degraded_fields.tsx +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/logs_overview_degraded_fields.tsx @@ -228,7 +228,7 @@ const getDegradedFieldsColumns = (): Array<EuiBasicTableColumn<DegradedField>> = sortable: true, field: 'values', render: (values: string[]) => { - return values.map((value, idx) => <EuiBadge key={idx}>{value}</EuiBadge>); + return values.map((value, idx) => <EuiBadge key={idx}>{JSON.stringify(value)}</EuiBadge>); }, }, ]; diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/sub_components/highlight_field.tsx b/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/sub_components/highlight_field.tsx index 0c5356b7f1659..88a431beeabd4 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/sub_components/highlight_field.tsx +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/sub_components/highlight_field.tsx @@ -8,10 +8,8 @@ */ import { EuiBadge, EuiFlexGroup, EuiText, EuiTitle } from '@elastic/eui'; -import { css } from '@emotion/react'; import React, { ReactNode } from 'react'; import { dynamic } from '@kbn/shared-ux-utility'; -import { euiThemeVars } from '@kbn/ui-theme'; import { PartialFieldMetadataPlain } from '@kbn/fields-metadata-plugin/common'; import { HoverActionPopover } from './hover_popover_action'; @@ -44,7 +42,7 @@ export function HighlightField({ return formattedValue && value ? ( <div {...props}> <EuiFlexGroup responsive={false} alignItems="center" gutterSize="xs"> - <EuiTitle css={fieldNameStyle} size="xxxs"> + <EuiTitle size="xxxs"> <span>{label}</span> </EuiTitle> {hasFieldDescription ? <HighlightFieldDescription fieldMetadata={fieldMetadata} /> : null} @@ -80,7 +78,3 @@ const FormattedValue = ({ value }: { value: string }) => ( dangerouslySetInnerHTML={{ __html: value }} /> ); - -const fieldNameStyle = css` - color: ${euiThemeVars.euiColorDarkShade}; -`; diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss index 348c8c9784ad8..9775bf6b2ac58 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss @@ -3,7 +3,6 @@ word-wrap: break-word; white-space: pre-wrap; line-height: $euiLineHeight; - color: $euiColorFullShade; vertical-align: top; &--highlighted { diff --git a/src/plugins/unified_doc_viewer/tsconfig.json b/src/plugins/unified_doc_viewer/tsconfig.json index 212fcb0335c75..fb896fdace3e7 100644 --- a/src/plugins/unified_doc_viewer/tsconfig.json +++ b/src/plugins/unified_doc_viewer/tsconfig.json @@ -28,7 +28,6 @@ "@kbn/code-editor-mock", "@kbn/custom-icons", "@kbn/react-field", - "@kbn/ui-theme", "@kbn/discover-shared-plugin", "@kbn/fields-metadata-plugin", "@kbn/core-notifications-browser", diff --git a/src/plugins/unified_search/public/actions/apply_filter_action.ts b/src/plugins/unified_search/public/actions/apply_filter_action.ts index 9106e091ee506..96d760eb560dc 100644 --- a/src/plugins/unified_search/public/actions/apply_filter_action.ts +++ b/src/plugins/unified_search/public/actions/apply_filter_action.ts @@ -14,7 +14,7 @@ import { IncompatibleActionError, UiActionsActionDefinition } from '@kbn/ui-acti // for cleanup esFilters need to fix the issue https://github.com/elastic/kibana/issues/131292 import { FilterManager, TimefilterContract } from '@kbn/data-plugin/public'; import type { Filter, RangeFilter } from '@kbn/es-query'; -import { getOverlays, getIndexPatterns } from '../services'; +import { getIndexPatterns } from '../services'; import { applyFiltersPopover } from '../apply_filters'; export const ACTION_GLOBAL_APPLY_FILTER = 'ACTION_GLOBAL_APPLY_FILTER'; @@ -74,7 +74,7 @@ export function createFilterAction( ); const filterSelectionPromise: Promise<Filter[]> = new Promise((resolve) => { - const overlay = getOverlays().openModal( + const overlay = coreStart.overlays.openModal( toMountPoint( applyFiltersPopover( filters, diff --git a/src/plugins/unified_search/public/plugin.ts b/src/plugins/unified_search/public/plugin.ts index 151b8f6d6fabb..ae2813e790e55 100755 --- a/src/plugins/unified_search/public/plugin.ts +++ b/src/plugins/unified_search/public/plugin.ts @@ -14,7 +14,7 @@ import { APPLY_FILTER_TRIGGER } from '@kbn/data-plugin/public'; import { createQueryStringInput } from './query_string_input/get_query_string_input'; import { UPDATE_FILTER_REFERENCES_TRIGGER, updateFilterReferencesTrigger } from './triggers'; import type { ConfigSchema } from '../server/config'; -import { setIndexPatterns, setTheme, setOverlays, setAnalytics, setI18n } from './services'; +import { setCoreStart, setIndexPatterns } from './services'; import { AutocompleteService } from './autocomplete/autocomplete_service'; import { createSearchBar } from './search_bar/create_search_bar'; import { createIndexPatternSelect } from './index_pattern_select'; @@ -72,10 +72,7 @@ export class UnifiedSearchPublicPlugin core: CoreStart, { data, dataViews, uiActions, screenshotMode }: UnifiedSearchStartDependencies ): UnifiedSearchPublicPluginStart { - setAnalytics(core.analytics); - setI18n(core.i18n); - setTheme(core.theme); - setOverlays(core.overlays); + setCoreStart(core); setIndexPatterns(dataViews); const autocompleteStart = this.autocomplete.start(); diff --git a/src/plugins/unified_search/public/query_string_input/query_string_input.scss b/src/plugins/unified_search/public/query_string_input/query_string_input.scss index 46473af849c9b..89af2e8e9911a 100644 --- a/src/plugins/unified_search/public/query_string_input/query_string_input.scss +++ b/src/plugins/unified_search/public/query_string_input/query_string_input.scss @@ -51,7 +51,7 @@ &.kbnQueryBar__textarea--autoHeight { overflow-x: auto; overflow-y: auto; - white-space: normal; + white-space: pre; max-height: calc(35vh - 100px); min-height: $euiFormControlHeight; } diff --git a/src/plugins/unified_search/public/query_string_input/query_string_input.tsx b/src/plugins/unified_search/public/query_string_input/query_string_input.tsx index 2e76341ae6071..2c5469ef306d7 100644 --- a/src/plugins/unified_search/public/query_string_input/query_string_input.tsx +++ b/src/plugins/unified_search/public/query_string_input/query_string_input.tsx @@ -56,7 +56,7 @@ import { SuggestionsComponent } from '../typeahead'; import { onRaf } from '../utils'; import { FilterButtonGroup } from '../filter_bar/filter_button_group/filter_button_group'; import { AutocompleteService, QuerySuggestion, QuerySuggestionTypes } from '../autocomplete'; -import { getAnalytics, getI18n, getTheme } from '../services'; +import { getCoreStart } from '../services'; import './query_string_input.scss'; export const strings = { @@ -568,7 +568,7 @@ export default class QueryStringInputUI extends PureComponent<QueryStringInputPr </EuiFlexItem> </EuiFlexGroup> </div>, - { analytics: getAnalytics(), i18n: getI18n(), theme: getTheme() } + getCoreStart() ), }); } diff --git a/src/plugins/unified_search/public/services.ts b/src/plugins/unified_search/public/services.ts index 152c987d84e6e..3b3636c660094 100644 --- a/src/plugins/unified_search/public/services.ts +++ b/src/plugins/unified_search/public/services.ts @@ -7,22 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { - ThemeServiceStart, - OverlayStart, - AnalyticsServiceStart, - I18nStart, -} from '@kbn/core/public'; -import { createGetterSetter } from '@kbn/kibana-utils-plugin/public'; +import { CoreStart } from '@kbn/core/public'; import { DataViewsContract } from '@kbn/data-views-plugin/public'; +import { createGetterSetter } from '@kbn/kibana-utils-plugin/public'; + +export const [getCoreStart, setCoreStart] = createGetterSetter<CoreStart>('CoreStart'); export const [getIndexPatterns, setIndexPatterns] = createGetterSetter<DataViewsContract>('IndexPatterns'); - -export const [getAnalytics, setAnalytics] = createGetterSetter<AnalyticsServiceStart>('Analytics'); - -export const [getI18n, setI18n] = createGetterSetter<I18nStart>('I18n'); - -export const [getTheme, setTheme] = createGetterSetter<ThemeServiceStart>('Theme'); - -export const [getOverlays, setOverlays] = createGetterSetter<OverlayStart>('Overlays'); diff --git a/src/plugins/unified_search/public/types.ts b/src/plugins/unified_search/public/types.ts index 08c8b282d23b9..f9d0556447778 100755 --- a/src/plugins/unified_search/public/types.ts +++ b/src/plugins/unified_search/public/types.ts @@ -96,6 +96,7 @@ export interface IUnifiedSearchPluginServices extends Partial<CoreStart> { analytics: CoreStart['analytics']; i18n: CoreStart['i18n']; theme: CoreStart['theme']; + userProfile: CoreStart['userProfile']; storage: IStorageWrapper; docLinks: DocLinksStart; data: DataPublicPluginStart; diff --git a/src/plugins/unified_search/server/autocomplete/value_suggestions_route.ts b/src/plugins/unified_search/server/autocomplete/value_suggestions_route.ts index 1ea0084423ea1..afda8f890e96c 100644 --- a/src/plugins/unified_search/server/autocomplete/value_suggestions_route.ts +++ b/src/plugins/unified_search/server/autocomplete/value_suggestions_route.ts @@ -25,6 +25,13 @@ export function registerValueSuggestionsRoute(router: IRouter, config$: Observab .addVersion( { version: '1', + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because uses the current user authorizations.', + }, + }, validate: { request: { params: schema.object( diff --git a/src/plugins/vis_default_editor/public/default_editor_controller.tsx b/src/plugins/vis_default_editor/public/default_editor_controller.tsx index 5b141282b9a1e..7f95da7e2c75b 100644 --- a/src/plugins/vis_default_editor/public/default_editor_controller.tsx +++ b/src/plugins/vis_default_editor/public/default_editor_controller.tsx @@ -15,7 +15,7 @@ import { EuiErrorBoundary, EuiLoadingChart } from '@elastic/eui'; import { Vis, VisualizeEmbeddableContract } from '@kbn/visualizations-plugin/public'; import { IEditorController, EditorRenderProps } from '@kbn/visualizations-plugin/public'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; -import { getAnalytics, getI18n, getTheme } from './services'; +import { getCoreStart } from './services'; // @ts-ignore const DefaultEditor = lazy(() => import('./default_editor')); @@ -30,7 +30,7 @@ class DefaultEditorController implements IEditorController { render(props: EditorRenderProps) { render( - <KibanaRenderContextProvider analytics={getAnalytics()} i18n={getI18n()} theme={getTheme()}> + <KibanaRenderContextProvider {...getCoreStart()}> <EuiErrorBoundary> <Suspense fallback={ diff --git a/src/plugins/vis_default_editor/public/plugin.ts b/src/plugins/vis_default_editor/public/plugin.ts index d3b6479189a69..192504864cf64 100644 --- a/src/plugins/vis_default_editor/public/plugin.ts +++ b/src/plugins/vis_default_editor/public/plugin.ts @@ -11,7 +11,7 @@ import { CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; import type { VisualizationsSetup } from '@kbn/visualizations-plugin/public'; import { DefaultEditorController } from './default_editor_controller'; -import { setAnalytics, setI18n, setTheme } from './services'; +import { setAnalytics, setCoreStart, setTheme } from './services'; export interface VisDefaultEditorSetupDependencies { visualizations: VisualizationsSetup; @@ -29,7 +29,7 @@ export class VisDefaultEditorPlugin } public start(core: CoreStart) { - setI18n(core.i18n); + setCoreStart(core); } stop() {} diff --git a/src/plugins/vis_default_editor/public/services.ts b/src/plugins/vis_default_editor/public/services.ts index 0652b8ba742ee..23b4594174c50 100644 --- a/src/plugins/vis_default_editor/public/services.ts +++ b/src/plugins/vis_default_editor/public/services.ts @@ -7,10 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { AnalyticsServiceStart, I18nStart, ThemeServiceStart } from '@kbn/core/public'; +import { AnalyticsServiceStart, CoreStart, ThemeServiceStart } from '@kbn/core/public'; import { createGetterSetter } from '@kbn/kibana-utils-plugin/common'; export const [getAnalytics, setAnalytics] = createGetterSetter<AnalyticsServiceStart>('AnalyticsService'); -export const [getI18n, setI18n] = createGetterSetter<I18nStart>('I18nService'); export const [getTheme, setTheme] = createGetterSetter<ThemeServiceStart>('ThemeService'); +export const [getCoreStart, setCoreStart] = createGetterSetter<CoreStart>('CoreStart'); diff --git a/src/plugins/vis_types/timelion/server/routes/functions.ts b/src/plugins/vis_types/timelion/server/routes/functions.ts index 4e989f2ac747c..6f435536ce7d5 100644 --- a/src/plugins/vis_types/timelion/server/routes/functions.ts +++ b/src/plugins/vis_types/timelion/server/routes/functions.ts @@ -15,6 +15,13 @@ export function functionsRoute(router: IRouter, { functions }: { functions: Load router.get( { path: '/internal/timelion/functions', + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because it just returns a static list of function ids to use in timelion expression.', + }, + }, validate: false, }, async (context, request, response) => { diff --git a/src/plugins/vis_types/timelion/server/routes/run.ts b/src/plugins/vis_types/timelion/server/routes/run.ts index 1e63004d9895c..3d737890db0f6 100644 --- a/src/plugins/vis_types/timelion/server/routes/run.ts +++ b/src/plugins/vis_types/timelion/server/routes/run.ts @@ -39,6 +39,13 @@ export function runRoute( router.post( { path: '/internal/timelion/run', + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because it executes some server side data processing and uses the data-plugin to query ES following the data-plugin authz rules.', + }, + }, validate: { body: schema.object({ sheet: schema.arrayOf(schema.string()), diff --git a/src/plugins/vis_types/timeseries/server/routes/fields.ts b/src/plugins/vis_types/timeseries/server/routes/fields.ts index 8751e2ad222f7..f5c8c84fdb70c 100644 --- a/src/plugins/vis_types/timeseries/server/routes/fields.ts +++ b/src/plugins/vis_types/timeseries/server/routes/fields.ts @@ -18,6 +18,13 @@ export const fieldsRoutes = (router: VisTypeTimeseriesRouter, framework: Framewo router.get<{}, { index: string }, {}>( { path: ROUTES.FIELDS, + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because it uses the data-plugin to query ES following the data-plugin authz rules.', + }, + }, validate: { query: schema.object({ index: schema.string() }), }, diff --git a/src/plugins/vis_types/timeseries/server/routes/vis.ts b/src/plugins/vis_types/timeseries/server/routes/vis.ts index 89ea60764e8a0..a75eb463e072c 100644 --- a/src/plugins/vis_types/timeseries/server/routes/vis.ts +++ b/src/plugins/vis_types/timeseries/server/routes/vis.ts @@ -21,6 +21,13 @@ export const visDataRoutes = (router: VisTypeTimeseriesRouter, framework: Framew router.post<{}, {}, VisPayload>( { path: ROUTES.VIS_DATA, + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because it uses the data-plugin to query ES following the data-plugin authz rules.', + }, + }, validate: { body: escapeHatch, }, diff --git a/src/plugins/vis_types/vega/public/__snapshots__/vega_visualization.test.tsx.snap b/src/plugins/vis_types/vega/public/__snapshots__/vega_visualization.test.tsx.snap index dad12b304efdf..f9afbdc899113 100644 --- a/src/plugins/vis_types/vega/public/__snapshots__/vega_visualization.test.tsx.snap +++ b/src/plugins/vis_types/vega/public/__snapshots__/vega_visualization.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`VegaVisualizations VegaVisualization - basics should show vega graph (may fail in dev env) 1`] = `"<div class=\\"vgaVis__view\\" role=\\"graphics-document\\" aria-roledescription=\\"visualization\\" aria-label=\\"Vega visualization\\" style=\\"cursor: default;\\"><svg xmlns=\\"http://www.w3.org/2000/svg\\" xmlns:xlink=\\"http://www.w3.org/1999/xlink\\" version=\\"1.1\\" class=\\"marks\\" width=\\"512\\" height=\\"512\\" viewBox=\\"0 0 512 512\\" style=\\"background-color: transparent;\\"><g fill=\\"none\\" stroke-miterlimit=\\"10\\" transform=\\"translate(0,0)\\"><g class=\\"mark-group role-frame root\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h512v512h-512Z\\"></path><g><g class=\\"mark-group role-scope\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h0v0h0Z\\"></path><g><g class=\\"mark-area role-mark\\" role=\\"graphics-symbol\\" aria-roledescription=\\"area mark container\\"><path d=\\"M0,512C18.963,512,37.926,512,56.889,512C75.852,512,94.815,512,113.778,512C132.741,512,151.704,512,170.667,512C189.63,512,208.593,512,227.556,512C246.519,512,265.481,512,284.444,512C303.407,512,322.37,512,341.333,512C360.296,512,379.259,512,398.222,512C417.185,512,436.148,512,455.111,512C474.074,512,493.037,512,512,512L512,355.2C493.037,324.8,474.074,294.4,455.111,294.4C436.148,294.4,417.185,457.6,398.222,457.6C379.259,457.6,360.296,233.6,341.333,233.6C322.37,233.6,303.407,435.2,284.444,435.2C265.481,435.2,246.519,345.6,227.556,345.6C208.593,345.6,189.63,451.2,170.667,451.2C151.704,451.2,132.741,252.8,113.778,252.8C94.815,252.8,75.852,346.133,56.889,374.4C37.926,402.667,18.963,412.533,0,422.4Z\\" fill=\\"#54B399\\" fill-opacity=\\"1\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h0v0h0Z\\"></path><g><g class=\\"mark-area role-mark\\" role=\\"graphics-symbol\\" aria-roledescription=\\"area mark container\\"><path d=\\"M0,422.4C18.963,412.533,37.926,402.667,56.889,374.4C75.852,346.133,94.815,252.8,113.778,252.8C132.741,252.8,151.704,451.2,170.667,451.2C189.63,451.2,208.593,345.6,227.556,345.6C246.519,345.6,265.481,435.2,284.444,435.2C303.407,435.2,322.37,233.6,341.333,233.6C360.296,233.6,379.259,457.6,398.222,457.6C417.185,457.6,436.148,294.4,455.111,294.4C474.074,294.4,493.037,324.8,512,355.2L512,307.2C493.037,275.2,474.074,243.2,455.111,243.2C436.148,243.2,417.185,371.2,398.222,371.2C379.259,371.2,360.296,22.4,341.333,22.4C322.37,22.4,303.407,278.4,284.444,278.4C265.481,278.4,246.519,204.8,227.556,192C208.593,179.2,189.63,185.6,170.667,172.8C151.704,160,132.741,83.2,113.778,83.2C94.815,83.2,75.852,83.2,56.889,83.2C37.926,83.2,18.963,164.8,0,246.4Z\\" fill=\\"#6092C0\\" fill-opacity=\\"1\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g></svg></div><div class=\\"vgaVis__controls vgaVis__controls--column\\"></div>"`; +exports[`VegaVisualizations VegaVisualization - basics should show vega graph (may fail in dev env) 1`] = `"<div class=\\"vgaVis__view\\" role=\\"graphics-document\\" aria-roledescription=\\"visualization\\" aria-label=\\"Vega visualization\\" style=\\"cursor: default;\\"><svg xmlns=\\"http://www.w3.org/2000/svg\\" xmlns:xlink=\\"http://www.w3.org/1999/xlink\\" version=\\"1.1\\" class=\\"marks\\" width=\\"512\\" height=\\"512\\" viewBox=\\"0 0 512 512\\" style=\\"background-color: transparent;\\"><g fill=\\"none\\" stroke-miterlimit=\\"10\\" transform=\\"translate(0,0)\\"><g class=\\"mark-group role-frame root\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h512v512h-512Z\\"></path><g><g class=\\"mark-group role-scope\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h0v0h0Z\\"></path><g><g class=\\"mark-area role-mark\\" role=\\"graphics-symbol\\" aria-roledescription=\\"area mark container\\"><path d=\\"M0,512C18.963,512,37.926,512,56.889,512C75.852,512,94.815,512,113.778,512C132.741,512,151.704,512,170.667,512C189.63,512,208.593,512,227.556,512C246.519,512,265.481,512,284.444,512C303.407,512,322.37,512,341.333,512C360.296,512,379.259,512,398.222,512C417.185,512,436.148,512,455.111,512C474.074,512,493.037,512,512,512L512,355.2C493.037,324.8,474.074,294.4,455.111,294.4C436.148,294.4,417.185,457.6,398.222,457.6C379.259,457.6,360.296,233.6,341.333,233.6C322.37,233.6,303.407,435.2,284.444,435.2C265.481,435.2,246.519,345.6,227.556,345.6C208.593,345.6,189.63,451.2,170.667,451.2C151.704,451.2,132.741,252.8,113.778,252.8C94.815,252.8,75.852,346.133,56.889,374.4C37.926,402.667,18.963,412.533,0,422.4Z\\" fill=\\"blue\\" fill-opacity=\\"1\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h0v0h0Z\\"></path><g><g class=\\"mark-area role-mark\\" role=\\"graphics-symbol\\" aria-roledescription=\\"area mark container\\"><path d=\\"M0,422.4C18.963,412.533,37.926,402.667,56.889,374.4C75.852,346.133,94.815,252.8,113.778,252.8C132.741,252.8,151.704,451.2,170.667,451.2C189.63,451.2,208.593,345.6,227.556,345.6C246.519,345.6,265.481,435.2,284.444,435.2C303.407,435.2,322.37,233.6,341.333,233.6C360.296,233.6,379.259,457.6,398.222,457.6C417.185,457.6,436.148,294.4,455.111,294.4C474.074,294.4,493.037,324.8,512,355.2L512,307.2C493.037,275.2,474.074,243.2,455.111,243.2C436.148,243.2,417.185,371.2,398.222,371.2C379.259,371.2,360.296,22.4,341.333,22.4C322.37,22.4,303.407,278.4,284.444,278.4C265.481,278.4,246.519,204.8,227.556,192C208.593,179.2,189.63,185.6,170.667,172.8C151.704,160,132.741,83.2,113.778,83.2C94.815,83.2,75.852,83.2,56.889,83.2C37.926,83.2,18.963,164.8,0,246.4Z\\" fill=\\"yellow\\" fill-opacity=\\"1\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g></svg></div><div class=\\"vgaVis__controls vgaVis__controls--column\\"></div>"`; exports[`VegaVisualizations VegaVisualization - basics should show vegalite graph and update on resize (may fail in dev env) 1`] = `"<ul class=\\"vgaVis__messages\\"><li class=\\"vgaVis__message vgaVis__message--warn\\"><pre class=\\"vgaVis__messageCode\\">\\"width\\" and \\"height\\" params are ignored because \\"autosize\\" is enabled. Set \\"autosize\\": \\"none\\" to disable</pre></li></ul><div class=\\"vgaVis__view\\" role=\\"graphics-document\\" aria-roledescription=\\"visualization\\" aria-label=\\"Vega visualization\\" style=\\"cursor: default;\\"><svg xmlns=\\"http://www.w3.org/2000/svg\\" xmlns:xlink=\\"http://www.w3.org/1999/xlink\\" version=\\"1.1\\" class=\\"marks\\" width=\\"512\\" height=\\"512\\" viewBox=\\"0 0 512 512\\" style=\\"background-color: transparent;\\"><g fill=\\"none\\" stroke-miterlimit=\\"10\\" transform=\\"translate(7,5)\\"><g class=\\"mark-group role-frame root\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0.5,0.5h498v500h-498Z\\" fill=\\"transparent\\" stroke=\\"#ddd\\"></path><g><g class=\\"mark-line role-mark marks\\" role=\\"graphics-object\\" aria-roledescription=\\"line mark container\\"><path aria-label=\\"key: Dec 11, 2017; doc_count: 0\\" role=\\"graphics-symbol\\" aria-roledescription=\\"line mark\\" d=\\"M0,500L55.333,500L110.667,500L166,45.5L221.333,33.3L276.667,34L332,486.7L387.333,500L442.667,500L498,500\\" stroke=\\"#54B399\\" stroke-width=\\"2\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g></svg></div><div class=\\"vgaVis__controls vgaVis__controls--column\\"></div>"`; diff --git a/src/plugins/vis_types/vega/public/plugin.ts b/src/plugins/vis_types/vega/public/plugin.ts index e3d92425281b7..d36a547a9d6ed 100644 --- a/src/plugins/vis_types/vega/public/plugin.ts +++ b/src/plugins/vis_types/vega/public/plugin.ts @@ -16,6 +16,7 @@ import { Setup as InspectorSetup } from '@kbn/inspector-plugin/public'; import type { MapsEmsPluginPublicStart } from '@kbn/maps-ems-plugin/public'; import { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; +import { KbnPalette, getKbnPalettes } from '@kbn/palettes'; import { setNotifications, setData, @@ -98,6 +99,17 @@ export class VegaPlugin implements Plugin<void, void> { core: CoreStart, { data, mapsEms, dataViews, usageCollection }: VegaPluginStartDependencies ) { + core.theme.theme$ + .subscribe({ + async next(theme) { + const { scheme } = await import('vega'); + + const palettes = getKbnPalettes(theme); + scheme('elastic', palettes.get(KbnPalette.Default).colors()); + }, + }) + .unsubscribe(); + setNotifications(core.notifications); setData(data); setDataViews(dataViews); diff --git a/src/plugins/vis_types/vega/public/vega_view/vega_base_view.js b/src/plugins/vis_types/vega/public/vega_view/vega_base_view.js index d517e593e2227..89c2fbe8848c5 100644 --- a/src/plugins/vis_types/vega/public/vega_view/vega_base_view.js +++ b/src/plugins/vis_types/vega/public/vega_view/vega_base_view.js @@ -9,11 +9,10 @@ import moment from 'moment'; import dateMath from '@kbn/datemath'; -import { scheme, loader, logger, Warn, version as vegaVersion, expressionFunction } from 'vega'; +import { loader, logger, Warn, version as vegaVersion, expressionFunction } from 'vega'; import { expressionInterpreter } from 'vega-interpreter'; import { version as vegaLiteVersion } from 'vega-lite'; import { Utils } from '../data_model/utils'; -import { euiPaletteColorBlind } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { buildQueryFilter, compareFilters } from '@kbn/es-query'; import { TooltipHandler } from './vega_tooltip'; @@ -22,8 +21,6 @@ import { getEnableExternalUrls, getDataViews } from '../services'; import { extractIndexPatternsFromSpec } from '../lib/extract_index_pattern'; import { normalizeDate, normalizeString, normalizeObject } from './utils'; -scheme('elastic', euiPaletteColorBlind()); - // Vega's extension functions are global. When called, // we forward execution to the instance-specific handler // This functions must be declared in the VegaBaseView class diff --git a/src/plugins/vis_types/vega/public/vega_visualization.test.tsx b/src/plugins/vis_types/vega/public/vega_visualization.test.tsx index ab51db562f4f2..bd1e8d1b12b34 100644 --- a/src/plugins/vis_types/vega/public/vega_visualization.test.tsx +++ b/src/plugins/vis_types/vega/public/vega_visualization.test.tsx @@ -25,6 +25,7 @@ import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; import { VegaVisualizationDependencies } from './plugin'; import React from 'react'; import { TimeCache } from './data_model/time_cache'; +import { scheme } from 'vega'; jest.mock('./default_spec', () => ({ getDefaultSpec: () => jest.requireActual('./test_utils/default.spec.json'), @@ -122,6 +123,7 @@ describe('VegaVisualizations', () => { test('should show vega graph (may fail in dev env)', async () => { let vegaVis; try { + scheme('elastic', ['blue', 'yellow']); vegaVis = new VegaVisualization(domNode, jest.fn()); const vegaParser = new VegaParser( JSON.stringify(vegaGraph), diff --git a/src/plugins/vis_types/vega/tsconfig.json b/src/plugins/vis_types/vega/tsconfig.json index 172dd4c60fea7..3c980d413b1c5 100644 --- a/src/plugins/vis_types/vega/tsconfig.json +++ b/src/plugins/vis_types/vega/tsconfig.json @@ -41,6 +41,7 @@ "@kbn/code-editor", "@kbn/react-kibana-context-render", "@kbn/search-types", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/vis_types/vislib/public/plugin.ts b/src/plugins/vis_types/vislib/public/plugin.ts index 47ba0306b5393..5a9419e1721e3 100644 --- a/src/plugins/vis_types/vislib/public/plugin.ts +++ b/src/plugins/vis_types/vislib/public/plugin.ts @@ -18,11 +18,15 @@ import type { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; import { LEGACY_HEATMAP_CHARTS_LIBRARY } from '@kbn/vis-type-heatmap-plugin/common'; import { LEGACY_GAUGE_CHARTS_LIBRARY } from '@kbn/vis-type-gauge-plugin/common'; import type { VislibPublicConfig } from '../server/config'; -import { setAnalytics, setI18n, setUsageCollectionStart } from './services'; +import { + setFormatService, + setDataActions, + setCoreStart, + setUsageCollectionStart, +} from './services'; import { heatmapVisTypeDefinition } from './heatmap'; import { createVisTypeVislibVisFn } from './vis_type_vislib_vis_fn'; -import { setFormatService, setDataActions, setTheme } from './services'; import { getVislibVisRenderer } from './vis_renderer'; import { gaugeVisTypeDefinition } from './gauge'; import { goalVisTypeDefinition } from './goal'; @@ -87,11 +91,9 @@ export class VisTypeVislibPlugin core: CoreStart, { data, usageCollection, fieldFormats }: VisTypeVislibPluginStartDependencies ) { + setCoreStart(core); setFormatService(fieldFormats); setDataActions(data.actions); - setAnalytics(core.analytics); - setI18n(core.i18n); - setTheme(core.theme); if (usageCollection) { setUsageCollectionStart(usageCollection); } diff --git a/src/plugins/vis_types/vislib/public/services.ts b/src/plugins/vis_types/vislib/public/services.ts index 4193af3329fc0..37c971236de3f 100644 --- a/src/plugins/vis_types/vislib/public/services.ts +++ b/src/plugins/vis_types/vislib/public/services.ts @@ -7,22 +7,19 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { AnalyticsServiceStart, I18nStart, ThemeServiceStart } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { createGetterSetter } from '@kbn/kibana-utils-plugin/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; +export const [getCoreStart, setCoreStart] = createGetterSetter<CoreStart>('CoreStart'); + export const [getDataActions, setDataActions] = createGetterSetter<DataPublicPluginStart['actions']>('vislib data.actions'); export const [getFormatService, setFormatService] = createGetterSetter<FieldFormatsStart>('FieldFormats'); -export const [getAnalytics, setAnalytics] = - createGetterSetter<AnalyticsServiceStart>('vislib theme service'); -export const [getI18n, setI18n] = createGetterSetter<I18nStart>('vislib theme service'); -export const [getTheme, setTheme] = createGetterSetter<ThemeServiceStart>('vislib theme service'); - export const [getUsageCollectionStart, setUsageCollectionStart] = createGetterSetter<UsageCollectionStart>('UsageCollection', false); diff --git a/src/plugins/vis_types/vislib/public/vis_controller.tsx b/src/plugins/vis_types/vislib/public/vis_controller.tsx index 89a7a4125d3c2..380d61713c253 100644 --- a/src/plugins/vis_types/vislib/public/vis_controller.tsx +++ b/src/plugins/vis_types/vislib/public/vis_controller.tsx @@ -136,7 +136,7 @@ export const createVislibVisController = ( } mountLegend( - startServices: Pick<CoreStart, 'analytics' | 'i18n' | 'theme'>, + startServices: Pick<CoreStart, 'analytics' | 'i18n' | 'theme' | 'userProfile'>, visData: unknown, visParams: BasicVislibParams, fireEvent: IInterpreterRenderHandlers['event'], diff --git a/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx b/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx index 0ceca90442e2f..f71f192907e4c 100644 --- a/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx +++ b/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx @@ -11,7 +11,7 @@ import React from 'react'; import ReactDOM from 'react-dom/server'; import { EuiIcon } from '@elastic/eui'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; -import { getAnalytics, getI18n, getTheme } from '../../services'; +import { getCoreStart } from '../../services'; interface Props { wholeBucket: boolean; @@ -19,7 +19,7 @@ interface Props { export const touchdownTemplate = ({ wholeBucket }: Props) => { return ReactDOM.renderToStaticMarkup( - <KibanaRenderContextProvider analytics={getAnalytics()} i18n={getI18n()} theme={getTheme()}> + <KibanaRenderContextProvider {...getCoreStart()}> <p className="visTooltip__header"> <EuiIcon type="iInCircle" className="visTooltip__headerIcon" /> <span className="visTooltip__headerText"> diff --git a/src/plugins/visualizations/public/actions/edit_in_lens_action.tsx b/src/plugins/visualizations/public/actions/edit_in_lens_action.tsx index 8995b2abf7385..f8ed7a6294dbf 100644 --- a/src/plugins/visualizations/public/actions/edit_in_lens_action.tsx +++ b/src/plugins/visualizations/public/actions/edit_in_lens_action.tsx @@ -26,7 +26,10 @@ import { import { Action } from '@kbn/ui-actions-plugin/public'; import React from 'react'; import { take } from 'rxjs'; -import { apiHasVisualizeConfig, HasVisualizeConfig } from '../legacy/embeddable'; +import { + apiHasVisualizeConfig, + type HasVisualizeConfig, +} from '../embeddable/interfaces/has_visualize_config'; import { apiHasExpressionVariables, HasExpressionVariables, diff --git a/src/plugins/visualizations/public/embeddable/save_to_library.ts b/src/plugins/visualizations/public/embeddable/save_to_library.ts index ae92252565aaa..416eda1f277a3 100644 --- a/src/plugins/visualizations/public/embeddable/save_to_library.ts +++ b/src/plugins/visualizations/public/embeddable/save_to_library.ts @@ -9,7 +9,7 @@ import { Reference } from '../../common/content_management'; import { PersistedState } from '../persisted_state'; -import { getAnalytics, getI18n, getOverlays, getTheme } from '../services'; +import { getAnalytics, getI18n, getOverlays, getTheme, getUserProfile } from '../services'; import { saveVisualization } from '../utils/saved_visualize_utils'; import { VisualizeOutputState } from './types'; @@ -63,6 +63,7 @@ export const saveToLibrary = async ({ i18n: getI18n(), overlays: getOverlays(), theme: getTheme(), + userProfile: getUserProfile(), }, references ?? [] ); diff --git a/src/plugins/visualizations/public/embeddable/state.ts b/src/plugins/visualizations/public/embeddable/state.ts index 52641703e04b6..79a3bc841a999 100644 --- a/src/plugins/visualizations/public/embeddable/state.ts +++ b/src/plugins/visualizations/public/embeddable/state.ts @@ -22,6 +22,7 @@ import { getSearch, getSpaces, getTheme, + getUserProfile, } from '../services'; import { deserializeReferences, @@ -137,6 +138,7 @@ export const deserializeSavedObjectState = async ({ overlays: getOverlays(), analytics: getAnalytics(), theme: getTheme(), + userProfile: getUserProfile(), }, savedObjectId ); diff --git a/src/plugins/visualizations/public/embeddable/types.ts b/src/plugins/visualizations/public/embeddable/types.ts index 80e7e2d9179e8..767f911d5bd52 100644 --- a/src/plugins/visualizations/public/embeddable/types.ts +++ b/src/plugins/visualizations/public/embeddable/types.ts @@ -23,7 +23,7 @@ import { SerializedTitles, } from '@kbn/presentation-publishing'; import { DeepPartial } from '@kbn/utility-types'; -import { HasVisualizeConfig } from '../legacy/embeddable'; +import type { HasVisualizeConfig } from './interfaces/has_visualize_config'; import type { Vis, VisParams, VisSavedObject } from '../types'; import type { SerializedVis } from '../vis'; diff --git a/src/plugins/visualizations/public/index.ts b/src/plugins/visualizations/public/index.ts index 3de1bfc01f2ef..4c3dc07a9eb5d 100644 --- a/src/plugins/visualizations/public/index.ts +++ b/src/plugins/visualizations/public/index.ts @@ -10,7 +10,7 @@ import { PublicContract } from '@kbn/utility-types'; import { PluginInitializerContext } from '@kbn/core/public'; import { VisualizationsPlugin, VisualizationsSetup, VisualizationsStart } from './plugin'; -import type { VisualizeEmbeddableFactory, VisualizeEmbeddable } from './legacy/embeddable'; +import type { VisualizeEmbeddable } from './legacy/embeddable'; export function plugin(initializerContext: PluginInitializerContext) { return new VisualizationsPlugin(initializerContext); @@ -19,7 +19,8 @@ export function plugin(initializerContext: PluginInitializerContext) { /** @public static code */ export { TypesService } from './vis_types/types_service'; export { VIS_EVENT_TO_TRIGGER } from './embeddable'; -export { apiHasVisualizeConfig, COMMON_VISUALIZATION_GROUPING } from './legacy/embeddable'; +export { apiHasVisualizeConfig } from './embeddable/interfaces/has_visualize_config'; +export { COMMON_VISUALIZATION_GROUPING } from './legacy/embeddable/constants'; export { VisualizationContainer } from './components'; export { getVisSchemas } from './vis_schemas'; @@ -37,11 +38,11 @@ export type { } from './vis_types'; export type { VisualizeEditorInput } from './embeddable/types'; export type { Vis, SerializedVis, SerializedVisData, VisData } from './vis'; -export type VisualizeEmbeddableFactoryContract = PublicContract<VisualizeEmbeddableFactory>; export type VisualizeEmbeddableContract = PublicContract<VisualizeEmbeddable>; export type { SchemaConfig } from '../common/types'; export { updateOldState } from './legacy/vis_update_state'; -export type { VisualizeInput, VisualizeEmbeddable, HasVisualizeConfig } from './legacy/embeddable'; +export type { VisualizeInput, VisualizeEmbeddable } from './legacy/embeddable'; +export type { HasVisualizeConfig } from './embeddable/interfaces/has_visualize_config'; export type { PersistedState } from './persisted_state'; export type { ISavedVis, diff --git a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx b/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx similarity index 90% rename from src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx rename to src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx index 05aa8a3d0059a..49703371ac783 100644 --- a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx +++ b/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx @@ -10,7 +10,6 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { get, omit } from 'lodash'; -import { NotificationsStart } from '@kbn/core/public'; import { SavedObjectSaveModal, OnSaveProps, @@ -21,8 +20,8 @@ import { EmbeddableInput, SavedObjectEmbeddableInput, isSavedObjectEmbeddableInput, - EmbeddableFactory, -} from '..'; +} from '@kbn/embeddable-plugin/public'; +import { getNotifications } from '../../services'; /** * The attribute service is a shared, generic service that embeddables can use to provide the functionality @@ -64,20 +63,10 @@ export class AttributeService< RefType extends SavedObjectEmbeddableInput = SavedObjectEmbeddableInput, MetaInfo extends unknown = unknown > { - private embeddableFactory; - constructor( private type: string, - private toasts: NotificationsStart['toasts'], - private options: AttributeServiceOptions<SavedObjectAttributes, MetaInfo>, - getEmbeddableFactory?: (embeddableFactoryId: string) => EmbeddableFactory - ) { - if (getEmbeddableFactory) { - const factory = getEmbeddableFactory(this.type); - - this.embeddableFactory = factory; - } - } + private options: AttributeServiceOptions<SavedObjectAttributes, MetaInfo> + ) {} private async defaultUnwrapMethod( input: RefType @@ -116,8 +105,8 @@ export class AttributeService< } return { ...originalInput } as RefType; } catch (error) { - this.toasts.addDanger({ - title: i18n.translate('embeddableApi.attributeService.saveToLibraryError', { + getNotifications().toasts.addDanger({ + title: i18n.translate('visualizations.attributeService.saveToLibraryError', { defaultMessage: `An error occurred while saving. Error: {errorMessage}`, values: { errorMessage: error.message, @@ -187,9 +176,7 @@ export class AttributeService< (input as ValType)[ATTRIBUTE_SERVICE_KEY].title )} showCopyOnSave={false} - objectType={ - this.embeddableFactory ? this.embeddableFactory.getDisplayName() : this.type - } + objectType={this.type} showDescription={false} /> ); diff --git a/src/plugins/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts b/src/plugins/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts index 69ed12302f4ec..76acb5da63c53 100644 --- a/src/plugins/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts +++ b/src/plugins/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { IContainer, ErrorEmbeddable, AttributeService } from '@kbn/embeddable-plugin/public'; +import { ErrorEmbeddable } from '@kbn/embeddable-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/public'; import { Vis } from '../../types'; import type { @@ -16,18 +16,19 @@ import type { VisualizeByValueInput, VisualizeByReferenceInput, VisualizeSavedObjectAttributes, + VisualizeEmbeddableDeps, } from './visualize_embeddable'; import { getHttp, getTimeFilter, getCapabilities } from '../../services'; import { urlFor } from '../../utils/saved_visualize_utils'; -import { VisualizeEmbeddableFactoryDeps } from './visualize_embeddable_factory'; import { createVisualizeEmbeddableAsync } from './visualize_embeddable_async'; +import { AttributeService } from './attribute_service'; /** @deprecated * VisualizeEmbeddable is no longer registered with the legacy embeddable system and is only * used within the visualize editor. */ export const createVisEmbeddableFromObject = - (deps: VisualizeEmbeddableFactoryDeps) => + (deps: VisualizeEmbeddableDeps) => async ( vis: Vis, input: Partial<VisualizeInput> & { id: string }, @@ -35,8 +36,7 @@ export const createVisEmbeddableFromObject = VisualizeSavedObjectAttributes, VisualizeByValueInput, VisualizeByReferenceInput - >, - parent?: IContainer + > ): Promise<VisualizeEmbeddable | ErrorEmbeddable> => { try { const visId = vis.id as string; @@ -74,11 +74,10 @@ export const createVisEmbeddableFromObject = capabilities, }, input, - attributeService, - parent + attributeService ); } catch (e) { console.error(e); // eslint-disable-line no-console - return new ErrorEmbeddable(e, input, parent); + return new ErrorEmbeddable(e, input); } }; diff --git a/src/plugins/visualizations/public/legacy/embeddable/index.ts b/src/plugins/visualizations/public/legacy/embeddable/index.ts index 6afee494e6f4f..6aa08f7b847de 100644 --- a/src/plugins/visualizations/public/legacy/embeddable/index.ts +++ b/src/plugins/visualizations/public/legacy/embeddable/index.ts @@ -7,12 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { VisualizeEmbeddableFactory } from './visualize_embeddable_factory'; export { VISUALIZE_EMBEDDABLE_TYPE, COMMON_VISUALIZATION_GROUPING } from './constants'; export { createVisEmbeddableFromObject } from './create_vis_embeddable_from_object'; export type { VisualizeEmbeddable, VisualizeInput } from './visualize_embeddable'; -export { - type HasVisualizeConfig, - apiHasVisualizeConfig, -} from '../../embeddable/interfaces/has_visualize_config'; diff --git a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx b/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx index 196753d73b28c..3ef1947dc5d3d 100644 --- a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx +++ b/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx @@ -23,12 +23,10 @@ import { Warnings } from '@kbn/charts-plugin/public'; import { hasUnsupportedDownsampledAggregationFailure } from '@kbn/search-response-warnings'; import { Adapters, - AttributeService, Embeddable, EmbeddableInput, EmbeddableOutput, FilterableEmbeddable, - IContainer, ReferenceOrValueEmbeddable, SavedObjectEmbeddableInput, } from '@kbn/embeddable-plugin/public'; @@ -42,17 +40,28 @@ import type { RenderMode } from '@kbn/expressions-plugin/common'; import { DATA_VIEW_SAVED_OBJECT_TYPE } from '@kbn/data-views-plugin/public'; import { mapAndFlattenFilters } from '@kbn/data-plugin/public'; import { isChartSizeEvent } from '@kbn/chart-expressions-common'; +import { StartServicesGetter } from '@kbn/kibana-utils-plugin/public'; import { isFallbackDataView } from '../../visualize_app/utils'; import { VisualizationMissedSavedObjectError } from '../../components/visualization_missed_saved_object_error'; import VisualizationError from '../../components/visualization_error'; import { VISUALIZE_EMBEDDABLE_TYPE } from './constants'; import { SerializedVis, Vis } from '../../vis'; -import { getApplication, getExecutionContext, getExpressions, getUiActions } from '../../services'; +import { getApplication, getExpressions, getUiActions } from '../../services'; import { VIS_EVENT_TO_TRIGGER } from '../../embeddable/events'; -import { VisualizeEmbeddableFactoryDeps } from './visualize_embeddable_factory'; import { getSavedVisualization } from '../../utils/saved_visualize_utils'; import { VisSavedObject } from '../../types'; import { toExpressionAst } from '../../embeddable/to_ast'; +import { AttributeService } from './attribute_service'; +import { VisualizationsStartDeps } from '../../plugin'; + +export interface VisualizeEmbeddableDeps { + start: StartServicesGetter< + Pick< + VisualizationsStartDeps, + 'inspector' | 'embeddable' | 'data' | 'savedObjectsTaggingOss' | 'spaces' + > + >; +} export interface VisualizeEmbeddableConfiguration { vis: Vis; @@ -60,7 +69,7 @@ export interface VisualizeEmbeddableConfiguration { editPath: string; editUrl: string; capabilities: { visualizeSave: boolean; dashboardSave: boolean; visualizeOpen: boolean }; - deps: VisualizeEmbeddableFactoryDeps; + deps: VisualizeEmbeddableDeps; } export interface VisualizeInput extends EmbeddableInput { @@ -120,7 +129,7 @@ export class VisualizeEmbeddable private warningDomNode: any; public readonly type = VISUALIZE_EMBEDDABLE_TYPE; private abortController?: AbortController; - private readonly deps: VisualizeEmbeddableFactoryDeps; + private readonly deps: VisualizeEmbeddableDeps; private readonly inspectorAdapters?: Adapters; private attributeService?: AttributeService< VisualizeSavedObjectAttributes, @@ -140,22 +149,17 @@ export class VisualizeEmbeddable VisualizeSavedObjectAttributes, VisualizeByValueInput, VisualizeByReferenceInput - >, - parent?: IContainer + > ) { - super( - initialInput, - { - defaultTitle: vis.title, - defaultDescription: vis.description, - editPath, - editApp: 'visualize', - editUrl, - indexPatterns, - visTypeName: vis.type.name, - }, - parent - ); + super(initialInput, { + defaultTitle: vis.title, + defaultDescription: vis.description, + editPath, + editApp: 'visualize', + editUrl, + indexPatterns, + visTypeName: vis.type.name, + }); this.deps = deps; this.timefilter = timefilter; this.syncColors = this.input.syncColors; @@ -270,8 +274,6 @@ export class VisualizeEmbeddable this.vis.uiState.on('change', this.uiStateChangeHandler); } - } else if (this.parent) { - this.vis.uiState.clearAllKeys(); } } @@ -572,7 +574,6 @@ export class VisualizeEmbeddable }; private getExecutionContext() { - const parentContext = this.parent?.getInput().executionContext || getExecutionContext().get(); const child: KibanaExecutionContext = { type: 'agg_based', name: this.vis.type.name, @@ -582,7 +583,6 @@ export class VisualizeEmbeddable }; return { - ...parentContext, child, }; } diff --git a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.test.ts b/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.test.ts deleted file mode 100644 index 61f5cee020503..0000000000000 --- a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.test.ts +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { EmbeddableStateWithType } from '@kbn/embeddable-plugin/common'; -import { VisualizeEmbeddableFactory, VisualizeInput } from '.'; -import { VisualizeEmbeddableFactoryDeps } from './visualize_embeddable_factory'; - -describe('visualize_embeddable_factory', () => { - const factory = new VisualizeEmbeddableFactory({} as VisualizeEmbeddableFactoryDeps); - test('extract saved search references for search source state and not store them in state', () => { - const { state, references } = factory.extract({ - savedVis: { - type: 'area', - params: {}, - uiState: {}, - data: { - aggs: [ - { - id: '1', - enabled: true, - type: 'count', - params: {}, - schema: 'metric', - }, - ], - searchSource: { - query: { - query: '', - language: 'kuery', - }, - filter: [], - }, - savedSearchId: '123', - }, - }, - enhancements: {}, - type: 'visualization', - } as unknown as EmbeddableStateWithType); - expect(references).toEqual([ - { - type: 'search', - name: 'search_0', - id: '123', - }, - ]); - expect((state as unknown as VisualizeInput).savedVis?.data.savedSearchId).toBeUndefined(); - }); - - test('extract data view references for search source state and not store them in state', () => { - const { state, references } = factory.extract({ - savedVis: { - type: 'area', - params: {}, - uiState: {}, - data: { - aggs: [ - { - id: '1', - enabled: true, - type: 'count', - params: {}, - schema: 'metric', - }, - ], - searchSource: { - query: { - query: '', - language: 'kuery', - }, - index: '123', - filter: [], - }, - }, - }, - enhancements: {}, - type: 'visualization', - } as unknown as EmbeddableStateWithType); - expect(references).toEqual([ - { - type: 'index-pattern', - name: ( - (state as unknown as VisualizeInput).savedVis?.data.searchSource as { - indexRefName: string; - } - ).indexRefName, - id: '123', - }, - ]); - expect((state as unknown as VisualizeInput).savedVis?.data.searchSource.index).toBeUndefined(); - }); - - test('inject data view references into search source state', () => { - const embeddedState = factory.inject( - { - savedVis: { - type: 'area', - params: {}, - uiState: {}, - data: { - aggs: [ - { - id: '1', - enabled: true, - type: 'count', - params: {}, - schema: 'metric', - }, - ], - searchSource: { - query: { - query: '', - language: 'kuery', - }, - indexRefName: 'x', - filter: [], - }, - }, - }, - enhancements: {}, - type: 'visualization', - } as unknown as EmbeddableStateWithType, - [{ name: 'x', id: '123', type: 'index-pattern' }] - ) as VisualizeInput; - expect(embeddedState.savedVis!.data.searchSource.index).toBe('123'); - expect( - (embeddedState.savedVis!.data.searchSource as { indexRefName: string }).indexRefName - ).toBe(undefined); - }); - - test('inject data view reference into search source state even if it is in injected state already', () => { - const embeddedState = factory.inject( - { - savedVis: { - type: 'area', - params: {}, - uiState: {}, - data: { - aggs: [ - { - id: '1', - enabled: true, - type: 'count', - params: {}, - schema: 'metric', - }, - ], - searchSource: { - query: { - query: '', - language: 'kuery', - }, - index: '456', - filter: [], - }, - }, - }, - enhancements: {}, - type: 'visualization', - } as unknown as EmbeddableStateWithType, - [{ name: 'kibanaSavedObjectMeta.searchSourceJSON.index', id: '123', type: 'index-pattern' }] - ) as VisualizeInput; - expect(embeddedState.savedVis!.data.searchSource.index).toBe('123'); - expect( - (embeddedState.savedVis!.data.searchSource as { indexRefName: string }).indexRefName - ).toBe(undefined); - }); - - test('inject search reference into search source state', () => { - const embeddedState = factory.inject( - { - savedVis: { - type: 'area', - params: {}, - uiState: {}, - data: { - aggs: [ - { - id: '1', - enabled: true, - type: 'count', - params: {}, - schema: 'metric', - }, - ], - searchSource: { - query: { - query: '', - language: 'kuery', - }, - filter: [], - }, - }, - }, - enhancements: {}, - type: 'visualization', - } as unknown as EmbeddableStateWithType, - [{ name: 'search_0', id: '123', type: 'search' }] - ); - expect((embeddedState as VisualizeInput).savedVis!.data.savedSearchId).toBe('123'); - }); - - test('inject search reference into search source state even if it is injected already', () => { - const embeddedState = factory.inject( - { - savedVis: { - type: 'area', - params: {}, - uiState: {}, - data: { - aggs: [ - { - id: '1', - enabled: true, - type: 'count', - params: {}, - schema: 'metric', - }, - ], - searchSource: { - query: { - query: '', - language: 'kuery', - }, - filter: [], - }, - savedSearchId: '789', - }, - }, - enhancements: {}, - type: 'visualization', - } as unknown as EmbeddableStateWithType, - [{ name: 'search_0', id: '123', type: 'search' }] - ); - expect((embeddedState as VisualizeInput).savedVis!.data.savedSearchId).toBe('123'); - }); -}); diff --git a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx b/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx deleted file mode 100644 index 7594c8d42f2ea..0000000000000 --- a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx +++ /dev/null @@ -1,363 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { i18n } from '@kbn/i18n'; -import { first } from 'rxjs'; -import type { OnSaveProps } from '@kbn/saved-objects-plugin/public'; -import type { SavedObjectMetaData } from '@kbn/saved-objects-finder-plugin/public'; -import type { EmbeddableStateWithType } from '@kbn/embeddable-plugin/common'; - -import { - injectSearchSourceReferences, - extractSearchSourceReferences, - SerializedSearchSourceFields, -} from '@kbn/data-plugin/public'; -import type { SavedObjectAttributes, SavedObjectReference } from '@kbn/core/public'; - -import { - EmbeddableFactoryDefinition, - EmbeddableOutput, - ErrorEmbeddable, - IContainer, - AttributeService, -} from '@kbn/embeddable-plugin/public'; -import type { StartServicesGetter } from '@kbn/kibana-utils-plugin/public'; -import { checkForDuplicateTitle } from '../../utils/saved_objects_utils/check_for_duplicate_title'; -import type { - VisualizeByReferenceInput, - VisualizeByValueInput, - VisualizeEmbeddable, - VisualizeInput, - VisualizeOutput, - VisualizeSavedObjectAttributes, -} from './visualize_embeddable'; -import { VISUALIZE_EMBEDDABLE_TYPE } from './constants'; -import type { SerializedVis, Vis } from '../../vis'; -import { createVisAsync } from '../../vis_async'; -import { getCapabilities, getTypes } from '../../services'; -import { showNewVisModal } from '../../wizard'; -import { - convertToSerializedVis, - getSavedVisualization, - saveVisualization, - getFullPath, -} from '../../utils/saved_visualize_utils'; -import { - extractControlsReferences, - extractTimeSeriesReferences, - injectTimeSeriesReferences, - injectControlsReferences, -} from '../../utils/saved_visualization_references'; -import { createVisEmbeddableFromObject } from './create_vis_embeddable_from_object'; -import type { VisualizationsStartDeps } from '../../plugin'; - -interface VisualizationAttributes extends SavedObjectAttributes { - title: string; - visState: string; -} - -export interface VisualizeEmbeddableFactoryDeps { - start: StartServicesGetter< - Pick< - VisualizationsStartDeps, - 'inspector' | 'embeddable' | 'data' | 'savedObjectsTaggingOss' | 'spaces' - > - >; -} - -/** @deprecated - * VisualizeEmbeddable is no longer registered with the legacy embeddable system and is only - * used within the visualize editor. - */ -export class VisualizeEmbeddableFactory - implements - EmbeddableFactoryDefinition< - VisualizeInput, - VisualizeOutput | EmbeddableOutput, - VisualizeEmbeddable, - VisualizationAttributes - > -{ - public readonly type = VISUALIZE_EMBEDDABLE_TYPE; - - private attributeService?: AttributeService< - VisualizeSavedObjectAttributes, - VisualizeByValueInput, - VisualizeByReferenceInput - >; - - public readonly savedObjectMetaData: SavedObjectMetaData<VisualizationAttributes> = { - name: i18n.translate('visualizations.savedObjectName', { defaultMessage: 'Visualization' }), - includeFields: ['visState'], - type: 'visualization', - getIconForSavedObject: (savedObject) => { - return ( - getTypes().get(JSON.parse(savedObject.attributes.visState).type)?.icon || 'visualizeApp' - ); - }, - getTooltipForSavedObject: (savedObject) => { - return `${savedObject.attributes.title} (${ - getTypes().get(JSON.parse(savedObject.attributes.visState).type)?.title - })`; - }, - showSavedObject: (savedObject) => { - try { - const typeName: string = JSON.parse(savedObject.attributes.visState).type; - const visType = getTypes().get(typeName); - return Boolean(visType); - } catch { - return false; - } - }, - getSavedObjectSubType: (savedObject) => { - return JSON.parse(savedObject.attributes.visState).type; - }, - }; - - constructor(private readonly deps: VisualizeEmbeddableFactoryDeps) {} - - public async isEditable() { - return getCapabilities().visualize.save as boolean; - } - - public getDisplayName() { - return i18n.translate('visualizations.displayName', { - defaultMessage: 'visualization', - }); - } - - public async getCurrentAppId() { - return this.deps.start().core.application.currentAppId$.pipe(first()).toPromise(); - } - - private async getAttributeService() { - if (!this.attributeService) { - this.attributeService = this.deps - .start() - .plugins.embeddable.getAttributeService< - VisualizeSavedObjectAttributes, - VisualizeByValueInput, - VisualizeByReferenceInput - >(this.type, { - saveMethod: this.saveMethod.bind(this), - checkForDuplicateTitle: this.checkTitle.bind(this), - }); - } - return this.attributeService!; - } - - public async createFromSavedObject( - savedObjectId: string, - input: Partial<VisualizeInput> & { id: string }, - parent?: IContainer - ): Promise<VisualizeEmbeddable | ErrorEmbeddable> { - const startDeps = this.deps.start(); - - try { - const savedObject = await getSavedVisualization( - { - search: startDeps.plugins.data.search, - dataViews: startDeps.plugins.data.dataViews, - spaces: startDeps.plugins.spaces, - savedObjectsTagging: startDeps.plugins.savedObjectsTaggingOss?.getTaggingApi(), - ...startDeps.core, - }, - savedObjectId - ); - - if (savedObject.sharingSavedObjectProps?.outcome === 'conflict') { - return new ErrorEmbeddable( - i18n.translate('visualizations.embeddable.legacyURLConflict.errorMessage', { - defaultMessage: `This visualization has the same URL as a legacy alias. Disable the alias to resolve this error : {json}`, - values: { json: savedObject.sharingSavedObjectProps?.errorJSON }, - }), - input, - parent - ); - } - const visState = convertToSerializedVis(savedObject); - const vis = await createVisAsync(savedObject.visState.type, visState); - - return createVisEmbeddableFromObject(this.deps)( - vis, - input, - await this.getAttributeService(), - parent - ); - } catch (e) { - console.error(e); // eslint-disable-line no-console - return new ErrorEmbeddable(e, input, parent); - } - } - - public async create(input: VisualizeInput & { savedVis?: SerializedVis }, parent?: IContainer) { - // TODO: This is a bit of a hack to preserve the original functionality. Ideally we will clean this up - // to allow for in place creation of visualizations without having to navigate away to a new URL. - if (input.savedVis) { - const visState = input.savedVis; - const vis = await createVisAsync(visState.type, visState); - return createVisEmbeddableFromObject(this.deps)( - vis, - input, - await this.getAttributeService(), - parent - ); - } else { - showNewVisModal({ - originatingApp: await this.getCurrentAppId(), - outsideVisualizeApp: true, - }); - return undefined; - } - } - - private async saveMethod(attributes: VisualizeSavedObjectAttributes): Promise<{ id: string }> { - try { - const { title, savedVis } = attributes; - const visObj = attributes.vis; - if (!savedVis) { - throw new Error('No Saved Vis'); - } - const saveOptions = { - confirmOverwrite: false, - returnToOrigin: true, - isTitleDuplicateConfirmed: true, - copyOnSave: false, - }; - savedVis.title = title; - savedVis.description = ''; - savedVis.searchSourceFields = visObj?.data.searchSource?.getSerializedFields(); - savedVis.savedSearchId = visObj?.data.savedSearchId; - const serializedVis = (visObj as unknown as Vis).serialize(); - const { params, data } = serializedVis; - savedVis.visState = { - title, - type: serializedVis.type, - params, - aggs: data.aggs, - }; - if (visObj) { - savedVis.uiStateJSON = visObj?.uiState.toString(); - } - const { core, plugins } = this.deps.start(); - const id = await saveVisualization(savedVis, saveOptions, { - savedObjectsTagging: plugins.savedObjectsTaggingOss?.getTaggingApi(), - ...core, - }); - if (!id || id === '') { - throw new Error( - i18n.translate('visualizations.savingVisualizationFailed.errorMsg', { - defaultMessage: 'Saving a visualization failed', - }) - ); - } - core.chrome.recentlyAccessed.add(getFullPath(id), savedVis.title, String(id)); - return { id }; - } catch (error) { - throw error; - } - } - - public async checkTitle(props: OnSaveProps): Promise<boolean> { - const { core } = this.deps.start(); - - return checkForDuplicateTitle( - { - title: props.newTitle, - lastSavedTitle: '', - getEsType: () => this.type, - }, - false, - props.isTitleDuplicateConfirmed, - props.onTitleDuplicate, - core - ); - } - - public inject(_state: EmbeddableStateWithType, references: SavedObjectReference[]) { - let state = _state as unknown as VisualizeInput; - - const { type, params } = state.savedVis ?? {}; - - if (type && params) { - injectControlsReferences(type, params, references); - injectTimeSeriesReferences(type, params, references); - } - - if (state.savedVis?.data.searchSource) { - let extractedSearchSource = state.savedVis?.data - .searchSource as SerializedSearchSourceFields & { - indexRefName: string; - }; - if (!('indexRefName' in state.savedVis.data.searchSource)) { - // due to a bug in 8.0, some visualizations were saved with an injected state - re-extract in that case and inject the upstream references because they might have changed - extractedSearchSource = extractSearchSourceReferences( - extractedSearchSource - )[0] as SerializedSearchSourceFields & { - indexRefName: string; - }; - } - const injectedSearchSource = injectSearchSourceReferences(extractedSearchSource, references); - state = { - ...state, - savedVis: { - ...state.savedVis, - data: { - ...state.savedVis.data, - searchSource: injectedSearchSource, - savedSearchId: references.find((r) => r.name === 'search_0')?.id, - }, - }, - }; - } - - return state as EmbeddableStateWithType; - } - - public extract(_state: EmbeddableStateWithType) { - let state = _state as unknown as VisualizeInput; - const references = []; - - if (state.savedVis?.data.savedSearchId) { - references.push({ - name: 'search_0', - type: 'search', - id: String(state.savedVis.data.savedSearchId), - }); - } - - if (state.savedVis?.data.searchSource) { - const [extractedSearchSource, searchSourceReferences] = extractSearchSourceReferences( - state.savedVis.data.searchSource - ); - - references.push(...searchSourceReferences); - state = { - ...state, - savedVis: { - ...state.savedVis, - data: { - ...state.savedVis.data, - searchSource: extractedSearchSource, - savedSearchId: undefined, - }, - }, - }; - } - - const { type, params } = state.savedVis ?? {}; - - if (type && params) { - extractControlsReferences(type, params, references, `control_${state.id}`); - extractTimeSeriesReferences(type, params, references, `metrics_${state.id}`); - } - - return { state: state as EmbeddableStateWithType, references }; - } -} diff --git a/src/plugins/visualizations/public/plugin.ts b/src/plugins/visualizations/public/plugin.ts index 856c16104b6ca..0dcbf78c399da 100644 --- a/src/plugins/visualizations/public/plugin.ts +++ b/src/plugins/visualizations/public/plugin.ts @@ -105,6 +105,7 @@ import { setAnalytics, setI18n, setTheme, + setUserProfile, setExecutionContext, setFieldFormats, setSavedObjectTagging, @@ -115,6 +116,7 @@ import { setDataViews, setInspector, getTypes, + setNotifications, } from './services'; import { VisualizeConstants, VISUALIZE_EMBEDDABLE_TYPE } from '../common/constants'; import { EditInLensAction } from './actions/edit_in_lens_action'; @@ -464,6 +466,7 @@ export class VisualizationsPlugin const types = this.types.start(); setTypes(types); setI18n(core.i18n); + setUserProfile(core.userProfile); setEmbeddable(embeddable); setApplication(core.application); setCapabilities(core.application.capabilities); @@ -485,6 +488,7 @@ export class VisualizationsPlugin setSavedSearch(savedSearch); setDataViews(dataViews); setInspector(inspector); + setNotifications(core.notifications); if (spaces) { setSpaces(spaces); diff --git a/src/plugins/visualizations/public/services.ts b/src/plugins/visualizations/public/services.ts index 3b383abe52a35..b517082b8a2ba 100644 --- a/src/plugins/visualizations/public/services.ts +++ b/src/plugins/visualizations/public/services.ts @@ -21,6 +21,8 @@ import type { ExecutionContextSetup, AnalyticsServiceStart, I18nStart, + NotificationsStart, + UserProfileService, } from '@kbn/core/public'; import type { DataPublicPluginStart, TimefilterContract } from '@kbn/data-plugin/public'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; @@ -42,9 +44,14 @@ export const [getUISettings, setUISettings] = createGetterSetter<IUiSettingsClie export const [getAnalytics, setAnalytics] = createGetterSetter<AnalyticsServiceStart>('Analytics'); export const [getI18n, setI18n] = createGetterSetter<I18nStart>('I18n'); export const [getTheme, setTheme] = createGetterSetter<ThemeServiceStart>('Theme'); +export const [getNotifications, setNotifications] = + createGetterSetter<NotificationsStart>('Notifications'); export const [getCapabilities, setCapabilities] = createGetterSetter<Capabilities>('Capabilities'); +export const [getUserProfile, setUserProfile] = + createGetterSetter<UserProfileService>('UserProfile'); + export const [getHttp, setHttp] = createGetterSetter<HttpStart>('Http'); export const [getFieldsFormats, setFieldFormats] = diff --git a/src/plugins/visualizations/public/types.ts b/src/plugins/visualizations/public/types.ts index 2ccb5c648f79e..5ff4d462426f9 100644 --- a/src/plugins/visualizations/public/types.ts +++ b/src/plugins/visualizations/public/types.ts @@ -34,6 +34,7 @@ export type StartServices = Pick< | 'analytics' | 'i18n' | 'theme' + | 'userProfile' >; export type { Vis, SerializedVis, VisParams }; diff --git a/src/plugins/visualizations/public/visualize_app/utils/get_visualization_instance.ts b/src/plugins/visualizations/public/visualize_app/utils/get_visualization_instance.ts index 3a3898093a8eb..df7c7b5dda52d 100644 --- a/src/plugins/visualizations/public/visualize_app/utils/get_visualization_instance.ts +++ b/src/plugins/visualizations/public/visualize_app/utils/get_visualization_instance.ts @@ -16,7 +16,7 @@ import { createVisAsync } from '../../vis_async'; import { convertToSerializedVis, getSavedVisualization } from '../../utils/saved_visualize_utils'; import { SerializedVis, Vis, VisSavedObject, VisualizeEmbeddableContract } from '../..'; import type { VisInstance, VisualizeServices } from '../types'; -import { VisualizeInput } from '../../legacy/embeddable'; +import type { VisualizeInput } from '../../legacy/embeddable'; function isErrorRelatedToRuntimeFields(error: ExpressionValueError['error']) { const originalError = error.original || error; diff --git a/src/plugins/visualizations/public/visualize_app/utils/utils.ts b/src/plugins/visualizations/public/visualize_app/utils/utils.ts index b12c249284373..0af00b444f1d5 100644 --- a/src/plugins/visualizations/public/visualize_app/utils/utils.ts +++ b/src/plugins/visualizations/public/visualize_app/utils/utils.ts @@ -70,9 +70,7 @@ export const redirectToSavedObjectPage = ( savedVisualizationsId?: string ) => { const { - history, setActiveUrl, - toastNotifications, http: { basePath }, application: { navigateToApp }, } = services; @@ -81,9 +79,7 @@ export const redirectToSavedObjectPage = ( path: `kibana/objects/savedVisualizations/${savedVisualizationsId}`, }; redirectWhenMissing({ - history, navigateToApp, - toastNotifications, basePath, mapping: { visualization: VisualizeConstants.LANDING_PAGE_PATH, @@ -94,7 +90,7 @@ export const redirectToSavedObjectPage = ( onBeforeRedirect() { setActiveUrl(VisualizeConstants.LANDING_PAGE_PATH); }, - theme: services.theme, + ...services, })(error); }; diff --git a/src/plugins/visualizations/public/wizard/show_new_vis.tsx b/src/plugins/visualizations/public/wizard/show_new_vis.tsx index 64fe4cb07b9f9..251101519ea59 100644 --- a/src/plugins/visualizations/public/wizard/show_new_vis.tsx +++ b/src/plugins/visualizations/public/wizard/show_new_vis.tsx @@ -21,6 +21,7 @@ import { getTheme, getContentManagement, getUISettings, + getUserProfile, } from '../services'; import type { BaseVisType } from '../vis_types'; @@ -94,7 +95,7 @@ export function showNewVisModal({ </Suspense> ); }), - { analytics: getAnalytics(), i18n: getI18n(), theme: getTheme() } + { analytics: getAnalytics(), i18n: getI18n(), theme: getTheme(), userProfile: getUserProfile() } ); unmount = mount(container); diff --git a/test/examples/bfetch_explorer/batched_function.ts b/test/examples/bfetch_explorer/batched_function.ts deleted file mode 100644 index 35b4123befc44..0000000000000 --- a/test/examples/bfetch_explorer/batched_function.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../functional/ftr_provider_context'; - -// eslint-disable-next-line import/no-default-export -export default function ({ getService }: FtrProviderContext) { - const testSubjects = getService('testSubjects'); - - describe('batchedFunction', () => { - beforeEach(async () => { - await testSubjects.click('count-until'); - await testSubjects.click('double-integers'); - }); - - it('executes all requests in a batch', async () => { - const form = await testSubjects.find('DoubleIntegers'); - const btn = await form.findByCssSelector('button'); - await btn.click(); - await new Promise((r) => setTimeout(r, 4000)); - const pre = await form.findByCssSelector('pre'); - const text = await pre.getVisibleText(); - const json = JSON.parse(text); - - expect(json).to.eql([ - { - num: -1, - error: { - message: 'Invalid number', - }, - }, - { - num: 300, - result: { - num: 600, - }, - }, - { - num: 1000, - result: { - num: 2000, - }, - }, - { - num: 2000, - result: { - num: 4000, - }, - }, - ]); - }); - - it('streams results back', async () => { - const form = await testSubjects.find('DoubleIntegers'); - const btn = await form.findByCssSelector('button'); - await btn.click(); - - await new Promise((r) => setTimeout(r, 500)); - const pre = await form.findByCssSelector('pre'); - - const text1 = await pre.getVisibleText(); - const json1 = JSON.parse(text1); - - expect(json1.length > 0).to.be(true); - expect(json1.length < 4).to.be(true); - - await new Promise((r) => setTimeout(r, 3500)); - - const text2 = await pre.getVisibleText(); - const json2 = JSON.parse(text2); - - expect(json2.length).to.be(4); - }); - }); -} diff --git a/test/examples/bfetch_explorer/index.ts b/test/examples/bfetch_explorer/index.ts deleted file mode 100644 index 19e7cb6f0a0a4..0000000000000 --- a/test/examples/bfetch_explorer/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { FtrProviderContext } from '../../functional/ftr_provider_context'; - -// eslint-disable-next-line import/no-default-export -export default function ({ getService, getPageObjects, loadTestFile }: FtrProviderContext) { - const browser = getService('browser'); - const PageObjects = getPageObjects(['common', 'header']); - - describe('bfetch explorer', function () { - before(async () => { - await browser.setWindowSize(1300, 900); - await PageObjects.common.navigateToApp('bfetch-explorer', { insertTimestamp: false }); - }); - - loadTestFile(require.resolve('./batched_function')); - }); -} diff --git a/test/examples/config.js b/test/examples/config.js index cb1dd9dc308e8..7a3f9c4dfd265 100644 --- a/test/examples/config.js +++ b/test/examples/config.js @@ -19,7 +19,6 @@ export default async function ({ readConfigFile }) { rootTags: ['runOutsideOfCiGroups'], testFiles: [ require.resolve('./hello_world'), - require.resolve('./bfetch_explorer'), require.resolve('./ui_actions'), require.resolve('./state_sync'), require.resolve('./routing'), diff --git a/test/functional/apps/discover/context_awareness/_telemetry.ts b/test/functional/apps/discover/context_awareness/_telemetry.ts index 587de698f9336..ba3294c3dd25a 100644 --- a/test/functional/apps/discover/context_awareness/_telemetry.ts +++ b/test/functional/apps/discover/context_awareness/_telemetry.ts @@ -121,7 +121,99 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - describe('events', () => { + describe('contextual profiles', () => { + before(async () => { + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + }); + + after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + }); + + it('should send EBT events when a different data source profile gets resolved', async () => { + await common.navigateToApp('discover'); + await discover.selectTextBaseLang(); + await discover.waitUntilSearchingHasFinished(); + await monacoEditor.setCodeEditorValue('from my-example-logs | sort @timestamp desc'); + await ebtUIHelper.setOptIn(true); // starts the recording of events from this moment + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + let events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + // root profile stays the same as it's not changing after switching to ES|QL mode + + // but the data source profile should change because of the different data source + expect(events[0].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'example-data-source-profile', + }); + + // should not trigger any new events after a simple refresh + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(1); + + // should detect a new data source profile when switching to a different data source + await monacoEditor.setCodeEditorValue('from my-example-* | sort @timestamp desc'); + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events[1].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'default-data-source-profile', + }); + + expect(events.length).to.be(2); + }); + + it('should send EBT events when a different document profile gets resolved', async () => { + await common.navigateToApp('discover'); + await discover.selectTextBaseLang(); + await monacoEditor.setCodeEditorValue('from my-example-* | sort @timestamp desc'); + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await ebtUIHelper.setOptIn(true); // starts the recording of events from this moment + + // should trigger a new event after opening the doc viewer + await dataGrid.clickRowToggle(); + await discover.isShowingDocViewer(); + + const events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(1); + + expect(events[0].properties).to.eql({ + contextLevel: 'documentLevel', + profileId: 'default-document-profile', + }); + }); + }); + + describe('field usage events', () => { beforeEach(async () => { await common.navigateToApp('discover'); await header.waitUntilLoadingHasFinished(); diff --git a/test/functional/apps/discover/esql/_esql_columns.ts b/test/functional/apps/discover/esql/_esql_columns.ts index 59c4b8b816664..3ee6c9e4a3f56 100644 --- a/test/functional/apps/discover/esql/_esql_columns.ts +++ b/test/functional/apps/discover/esql/_esql_columns.ts @@ -181,14 +181,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('should reset columns if available fields or index pattern are different in transformational query', async () => { - await monacoEditor.setCodeEditorValue('from logstash-* | keep ip, @timestamp'); + await monacoEditor.setCodeEditorValue('from logstash-* | keep ip, @timestamp | limit 500'); await testSubjects.click('querySubmitButton'); await header.waitUntilLoadingHasFinished(); await discover.waitUntilSearchingHasFinished(); expect(await dataGrid.getHeaderFields()).to.eql(['ip', '@timestamp']); // reset columns if available fields are different - await monacoEditor.setCodeEditorValue('from logstash-* | keep ip, @timestamp, bytes'); + await monacoEditor.setCodeEditorValue( + 'from logstash-* | keep ip, @timestamp, bytes | limit 500' + ); await testSubjects.click('querySubmitButton'); await header.waitUntilLoadingHasFinished(); await discover.waitUntilSearchingHasFinished(); diff --git a/test/functional/apps/discover/group8/_sidenav_link.ts b/test/functional/apps/discover/group8/_sidenav_link.ts new file mode 100644 index 0000000000000..8919e7f32fef4 --- /dev/null +++ b/test/functional/apps/discover/group8/_sidenav_link.ts @@ -0,0 +1,156 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const esArchiver = getService('esArchiver'); + const { discover, timePicker, header, common } = getPageObjects([ + 'discover', + 'timePicker', + 'header', + 'common', + ]); + const kibanaServer = getService('kibanaServer'); + const security = getService('security'); + const retry = getService('retry'); + const queryBar = getService('queryBar'); + const appsMenu = getService('appsMenu'); + const monacoEditor = getService('monacoEditor'); + const testSubjects = getService('testSubjects'); + const dataViews = getService('dataViews'); + + describe('discover URL in side nav', function () { + before(async function () { + await security.testUser.setRoles(['kibana_admin', 'test_logstash_reader']); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' }); + await timePicker.setDefaultAbsoluteRangeViaUiSettings(); + }); + + after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.uiSettings.replace({}); + await kibanaServer.savedObjects.cleanStandardList(); + }); + + it('saves the last URL when in data view mode', async function () { + await common.navigateToApp('discover'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await queryBar.setQuery('response:200'); + await queryBar.submitQuery(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDashboard(); + await header.waitUntilLoadingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDiscover(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await retry.try(async () => { + expect(await queryBar.getQueryString()).to.be('response:200'); + expect(await discover.getHitCount()).to.be('12,891'); + }); + }); + + it('saves the last URL when in ES|QL mode', async function () { + await common.navigateToApp('discover'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await discover.selectTextBaseLang(); + + await monacoEditor.setCodeEditorValue('FROM logstash-* | LIMIT 30'); + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDashboard(); + await header.waitUntilLoadingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDiscover(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await retry.try(async () => { + expect(await monacoEditor.getCodeEditorValue()).to.be('FROM logstash-* | LIMIT 30'); + expect(await discover.getHitCount()).to.be('30'); + }); + }); + + it('should not save the last URL if it was an ad-hoc data view', async function () { + await common.navigateToApp('discover'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await queryBar.setQuery('response:200'); + await queryBar.submitQuery(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await dataViews.createFromSearchBar({ name: 'logs', hasTimeField: true, adHoc: true }); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await queryBar.setQuery('response:503'); + await queryBar.submitQuery(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDashboard(); + await header.waitUntilLoadingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDiscover(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await retry.try(async () => { + expect(await queryBar.getQueryString()).to.be('response:200'); + expect(await discover.getHitCount()).to.be('12,891'); + }); + }); + + it('saves the last URL if the session was saved', async function () { + await common.navigateToApp('discover'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await dataViews.createFromSearchBar({ name: 'logs', hasTimeField: true, adHoc: true }); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await queryBar.setQuery('response:404'); + await queryBar.submitQuery(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await discover.saveSearch('test'); + + await appsMenu.openCollapsibleNav(); + await header.clickDashboard(); + await header.waitUntilLoadingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDiscover(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await retry.try(async () => { + expect(await queryBar.getQueryString()).to.be('response:404'); + expect(await discover.getHitCount()).to.be('696'); + expect(await discover.getSavedSearchTitle()).to.be('test'); + }); + }); + }); +} diff --git a/test/functional/apps/discover/group8/index.ts b/test/functional/apps/discover/group8/index.ts index 46d5040fee298..59b8a948b59f4 100644 --- a/test/functional/apps/discover/group8/index.ts +++ b/test/functional/apps/discover/group8/index.ts @@ -24,5 +24,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_default_route')); loadTestFile(require.resolve('./_flyouts')); + loadTestFile(require.resolve('./_sidenav_link')); }); } diff --git a/test/functional/apps/management/data_views/_field_formatter.ts b/test/functional/apps/management/data_views/_field_formatter.ts index bd88d96f9700a..94f0b671490f6 100644 --- a/test/functional/apps/management/data_views/_field_formatter.ts +++ b/test/functional/apps/management/data_views/_field_formatter.ts @@ -315,6 +315,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // check available formats for ES_FIELD_TYPES.BOOLEAN expectFormatterTypes: [ FIELD_FORMAT_IDS.BOOLEAN, + FIELD_FORMAT_IDS.COLOR, FIELD_FORMAT_IDS.STATIC_LOOKUP, FIELD_FORMAT_IDS.STRING, FIELD_FORMAT_IDS.URL, diff --git a/test/plugin_functional/test_suites/core_plugins/rendering.ts b/test/plugin_functional/test_suites/core_plugins/rendering.ts index 87b8fe406263b..1bda105ba07a6 100644 --- a/test/plugin_functional/test_suites/core_plugins/rendering.ts +++ b/test/plugin_functional/test_suites/core_plugins/rendering.ts @@ -128,7 +128,6 @@ export default function ({ getService }: PluginFunctionalProviderContext) { 'data_visualizer.resultLinks.fileBeat.enabled (boolean)', 'dev_tools.deeplinks.navLinkStatus (string?)', 'discover.experimental.enabledProfiles (array?)', - 'enterpriseSearch.canDeployEntSearch (boolean?)', 'enterpriseSearch.host (string?)', 'enterpriseSearch.ui.enabled (boolean?)', 'home.disableWelcomeScreen (boolean?)', diff --git a/tsconfig.base.json b/tsconfig.base.json index 6daea879e4151..9b760a854bb58 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -16,10 +16,12 @@ "@kbn/advanced-settings-plugin/*": ["src/plugins/advanced_settings/*"], "@kbn/ai-assistant": ["x-pack/packages/kbn-ai-assistant"], "@kbn/ai-assistant/*": ["x-pack/packages/kbn-ai-assistant/*"], - "@kbn/ai-assistant-common": ["x-pack/packages/kbn-ai-assistant-common"], - "@kbn/ai-assistant-common/*": ["x-pack/packages/kbn-ai-assistant-common/*"], - "@kbn/ai-assistant-management-plugin": ["src/plugins/ai_assistant_management/selection"], - "@kbn/ai-assistant-management-plugin/*": ["src/plugins/ai_assistant_management/selection/*"], + "@kbn/ai-assistant-common": ["x-pack/platform/packages/shared/ai-assistant/common"], + "@kbn/ai-assistant-common/*": ["x-pack/platform/packages/shared/ai-assistant/common/*"], + "@kbn/ai-assistant-icon": ["x-pack/platform/packages/shared/ai-assistant/icon"], + "@kbn/ai-assistant-icon/*": ["x-pack/platform/packages/shared/ai-assistant/icon/*"], + "@kbn/ai-assistant-management-plugin": ["src/platform/plugins/shared/ai_assistant_management/selection"], + "@kbn/ai-assistant-management-plugin/*": ["src/platform/plugins/shared/ai_assistant_management/selection/*"], "@kbn/aiops-change-point-detection": ["x-pack/platform/packages/private/ml/aiops_change_point_detection"], "@kbn/aiops-change-point-detection/*": ["x-pack/platform/packages/private/ml/aiops_change_point_detection/*"], "@kbn/aiops-common": ["x-pack/platform/packages/shared/ml/aiops_common"], @@ -96,12 +98,12 @@ "@kbn/app-link-test-plugin/*": ["test/plugin_functional/plugins/app_link_test/*"], "@kbn/application-usage-test-plugin": ["x-pack/test/usage_collection/plugins/application_usage_test"], "@kbn/application-usage-test-plugin/*": ["x-pack/test/usage_collection/plugins/application_usage_test/*"], - "@kbn/asset-inventory-plugin": ["x-pack/plugins/asset_inventory"], - "@kbn/asset-inventory-plugin/*": ["x-pack/plugins/asset_inventory/*"], + "@kbn/asset-inventory-plugin": ["x-pack/solutions/security/plugins/asset_inventory"], + "@kbn/asset-inventory-plugin/*": ["x-pack/solutions/security/plugins/asset_inventory/*"], "@kbn/audit-log-plugin": ["x-pack/test/security_api_integration/plugins/audit_log"], "@kbn/audit-log-plugin/*": ["x-pack/test/security_api_integration/plugins/audit_log/*"], - "@kbn/avc-banner": ["packages/kbn-avc-banner"], - "@kbn/avc-banner/*": ["packages/kbn-avc-banner/*"], + "@kbn/avc-banner": ["src/platform/packages/shared/kbn-avc-banner"], + "@kbn/avc-banner/*": ["src/platform/packages/shared/kbn-avc-banner/*"], "@kbn/axe-config": ["packages/kbn-axe-config"], "@kbn/axe-config/*": ["packages/kbn-axe-config/*"], "@kbn/babel-preset": ["packages/kbn-babel-preset"], @@ -116,8 +118,6 @@ "@kbn/bazel-runner/*": ["packages/kbn-bazel-runner/*"], "@kbn/bfetch-error": ["packages/kbn-bfetch-error"], "@kbn/bfetch-error/*": ["packages/kbn-bfetch-error/*"], - "@kbn/bfetch-explorer-plugin": ["examples/bfetch_explorer"], - "@kbn/bfetch-explorer-plugin/*": ["examples/bfetch_explorer/*"], "@kbn/bfetch-plugin": ["src/plugins/bfetch"], "@kbn/bfetch-plugin/*": ["src/plugins/bfetch/*"], "@kbn/calculate-auto": ["packages/kbn-calculate-auto"], @@ -136,8 +136,8 @@ "@kbn/cases-plugin/*": ["x-pack/plugins/cases/*"], "@kbn/cbor": ["packages/kbn-cbor"], "@kbn/cbor/*": ["packages/kbn-cbor/*"], - "@kbn/cell-actions": ["packages/kbn-cell-actions"], - "@kbn/cell-actions/*": ["packages/kbn-cell-actions/*"], + "@kbn/cell-actions": ["src/platform/packages/shared/kbn-cell-actions"], + "@kbn/cell-actions/*": ["src/platform/packages/shared/kbn-cell-actions/*"], "@kbn/chart-expressions-common": ["src/plugins/chart_expressions/common"], "@kbn/chart-expressions-common/*": ["src/plugins/chart_expressions/common/*"], "@kbn/chart-icons": ["packages/kbn-chart-icons"], @@ -162,10 +162,10 @@ "@kbn/cloud/*": ["packages/cloud/*"], "@kbn/cloud-chat-plugin": ["x-pack/plugins/cloud_integrations/cloud_chat"], "@kbn/cloud-chat-plugin/*": ["x-pack/plugins/cloud_integrations/cloud_chat/*"], - "@kbn/cloud-data-migration-plugin": ["x-pack/plugins/cloud_integrations/cloud_data_migration"], - "@kbn/cloud-data-migration-plugin/*": ["x-pack/plugins/cloud_integrations/cloud_data_migration/*"], - "@kbn/cloud-defend-plugin": ["x-pack/plugins/cloud_defend"], - "@kbn/cloud-defend-plugin/*": ["x-pack/plugins/cloud_defend/*"], + "@kbn/cloud-data-migration-plugin": ["x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration"], + "@kbn/cloud-data-migration-plugin/*": ["x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/*"], + "@kbn/cloud-defend-plugin": ["x-pack/solutions/security/plugins/cloud_defend"], + "@kbn/cloud-defend-plugin/*": ["x-pack/solutions/security/plugins/cloud_defend/*"], "@kbn/cloud-experiments-plugin": ["x-pack/plugins/cloud_integrations/cloud_experiments"], "@kbn/cloud-experiments-plugin/*": ["x-pack/plugins/cloud_integrations/cloud_experiments/*"], "@kbn/cloud-full-story-plugin": ["x-pack/plugins/cloud_integrations/cloud_full_story"], @@ -176,14 +176,14 @@ "@kbn/cloud-links-plugin/*": ["x-pack/plugins/cloud_integrations/cloud_links/*"], "@kbn/cloud-plugin": ["x-pack/plugins/cloud"], "@kbn/cloud-plugin/*": ["x-pack/plugins/cloud/*"], - "@kbn/cloud-security-posture": ["x-pack/packages/kbn-cloud-security-posture/public"], - "@kbn/cloud-security-posture/*": ["x-pack/packages/kbn-cloud-security-posture/public/*"], - "@kbn/cloud-security-posture-common": ["x-pack/packages/kbn-cloud-security-posture/common"], - "@kbn/cloud-security-posture-common/*": ["x-pack/packages/kbn-cloud-security-posture/common/*"], - "@kbn/cloud-security-posture-graph": ["x-pack/packages/kbn-cloud-security-posture/graph"], - "@kbn/cloud-security-posture-graph/*": ["x-pack/packages/kbn-cloud-security-posture/graph/*"], - "@kbn/cloud-security-posture-plugin": ["x-pack/plugins/cloud_security_posture"], - "@kbn/cloud-security-posture-plugin/*": ["x-pack/plugins/cloud_security_posture/*"], + "@kbn/cloud-security-posture": ["x-pack/solutions/security/packages/kbn-cloud-security-posture/public"], + "@kbn/cloud-security-posture/*": ["x-pack/solutions/security/packages/kbn-cloud-security-posture/public/*"], + "@kbn/cloud-security-posture-common": ["x-pack/platform/packages/shared/kbn-cloud-security-posture/common"], + "@kbn/cloud-security-posture-common/*": ["x-pack/platform/packages/shared/kbn-cloud-security-posture/common/*"], + "@kbn/cloud-security-posture-graph": ["x-pack/solutions/security/packages/kbn-cloud-security-posture/graph"], + "@kbn/cloud-security-posture-graph/*": ["x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/*"], + "@kbn/cloud-security-posture-plugin": ["x-pack/solutions/security/plugins/cloud_security_posture"], + "@kbn/cloud-security-posture-plugin/*": ["x-pack/solutions/security/plugins/cloud_security_posture/*"], "@kbn/code-editor": ["packages/shared-ux/code_editor/impl"], "@kbn/code-editor/*": ["packages/shared-ux/code_editor/impl/*"], "@kbn/code-editor-mock": ["packages/shared-ux/code_editor/mocks"], @@ -198,8 +198,8 @@ "@kbn/config-mocks/*": ["packages/kbn-config-mocks/*"], "@kbn/config-schema": ["packages/kbn-config-schema"], "@kbn/config-schema/*": ["packages/kbn-config-schema/*"], - "@kbn/console-plugin": ["src/plugins/console"], - "@kbn/console-plugin/*": ["src/plugins/console/*"], + "@kbn/console-plugin": ["src/platform/plugins/shared/console"], + "@kbn/console-plugin/*": ["src/platform/plugins/shared/console/*"], "@kbn/content-management-content-editor": ["packages/content-management/content_editor"], "@kbn/content-management-content-editor/*": ["packages/content-management/content_editor/*"], "@kbn/content-management-content-insights-public": ["packages/content-management/content_insights/content_insights_public"], @@ -680,8 +680,8 @@ "@kbn/core-user-settings-server-internal/*": ["packages/core/user-settings/core-user-settings-server-internal/*"], "@kbn/core-user-settings-server-mocks": ["packages/core/user-settings/core-user-settings-server-mocks"], "@kbn/core-user-settings-server-mocks/*": ["packages/core/user-settings/core-user-settings-server-mocks/*"], - "@kbn/cross-cluster-replication-plugin": ["x-pack/plugins/cross_cluster_replication"], - "@kbn/cross-cluster-replication-plugin/*": ["x-pack/plugins/cross_cluster_replication/*"], + "@kbn/cross-cluster-replication-plugin": ["x-pack/platform/plugins/private/cross_cluster_replication"], + "@kbn/cross-cluster-replication-plugin/*": ["x-pack/platform/plugins/private/cross_cluster_replication/*"], "@kbn/crypto": ["packages/kbn-crypto"], "@kbn/crypto/*": ["packages/kbn-crypto/*"], "@kbn/crypto-browser": ["packages/kbn-crypto-browser"], @@ -700,8 +700,8 @@ "@kbn/dashboard-enhanced-plugin/*": ["x-pack/plugins/dashboard_enhanced/*"], "@kbn/dashboard-plugin": ["src/plugins/dashboard"], "@kbn/dashboard-plugin/*": ["src/plugins/dashboard/*"], - "@kbn/data-forge": ["x-pack/packages/kbn-data-forge"], - "@kbn/data-forge/*": ["x-pack/packages/kbn-data-forge/*"], + "@kbn/data-forge": ["x-pack/platform/packages/shared/kbn-data-forge"], + "@kbn/data-forge/*": ["x-pack/platform/packages/shared/kbn-data-forge/*"], "@kbn/data-plugin": ["src/plugins/data"], "@kbn/data-plugin/*": ["src/plugins/data/*"], "@kbn/data-quality-plugin": ["x-pack/plugins/data_quality"], @@ -710,10 +710,10 @@ "@kbn/data-search-plugin/*": ["test/plugin_functional/plugins/data_search/*"], "@kbn/data-service": ["packages/kbn-data-service"], "@kbn/data-service/*": ["packages/kbn-data-service/*"], - "@kbn/data-stream-adapter": ["packages/kbn-data-stream-adapter"], - "@kbn/data-stream-adapter/*": ["packages/kbn-data-stream-adapter/*"], - "@kbn/data-usage-plugin": ["x-pack/plugins/data_usage"], - "@kbn/data-usage-plugin/*": ["x-pack/plugins/data_usage/*"], + "@kbn/data-stream-adapter": ["x-pack/solutions/security/packages/data-stream-adapter"], + "@kbn/data-stream-adapter/*": ["x-pack/solutions/security/packages/data-stream-adapter/*"], + "@kbn/data-usage-plugin": ["x-pack/platform/plugins/private/data_usage"], + "@kbn/data-usage-plugin/*": ["x-pack/platform/plugins/private/data_usage/*"], "@kbn/data-view-editor-plugin": ["src/plugins/data_view_editor"], "@kbn/data-view-editor-plugin/*": ["src/plugins/data_view_editor/*"], "@kbn/data-view-field-editor-example-plugin": ["examples/data_view_field_editor_example"], @@ -734,28 +734,28 @@ "@kbn/datemath/*": ["packages/kbn-datemath/*"], "@kbn/deeplinks-analytics": ["packages/deeplinks/analytics"], "@kbn/deeplinks-analytics/*": ["packages/deeplinks/analytics/*"], - "@kbn/deeplinks-devtools": ["packages/deeplinks/devtools"], - "@kbn/deeplinks-devtools/*": ["packages/deeplinks/devtools/*"], + "@kbn/deeplinks-devtools": ["src/platform/packages/shared/deeplinks/devtools"], + "@kbn/deeplinks-devtools/*": ["src/platform/packages/shared/deeplinks/devtools/*"], "@kbn/deeplinks-fleet": ["packages/deeplinks/fleet"], "@kbn/deeplinks-fleet/*": ["packages/deeplinks/fleet/*"], - "@kbn/deeplinks-management": ["packages/deeplinks/management"], - "@kbn/deeplinks-management/*": ["packages/deeplinks/management/*"], + "@kbn/deeplinks-management": ["src/platform/packages/shared/deeplinks/management"], + "@kbn/deeplinks-management/*": ["src/platform/packages/shared/deeplinks/management/*"], "@kbn/deeplinks-ml": ["src/platform/packages/shared/deeplinks/ml"], "@kbn/deeplinks-ml/*": ["src/platform/packages/shared/deeplinks/ml/*"], - "@kbn/deeplinks-observability": ["packages/deeplinks/observability"], - "@kbn/deeplinks-observability/*": ["packages/deeplinks/observability/*"], + "@kbn/deeplinks-observability": ["src/platform/packages/shared/deeplinks/observability"], + "@kbn/deeplinks-observability/*": ["src/platform/packages/shared/deeplinks/observability/*"], "@kbn/deeplinks-search": ["packages/deeplinks/search"], "@kbn/deeplinks-search/*": ["packages/deeplinks/search/*"], - "@kbn/deeplinks-security": ["packages/deeplinks/security"], - "@kbn/deeplinks-security/*": ["packages/deeplinks/security/*"], + "@kbn/deeplinks-security": ["src/platform/packages/shared/deeplinks/security"], + "@kbn/deeplinks-security/*": ["src/platform/packages/shared/deeplinks/security/*"], "@kbn/deeplinks-shared": ["packages/deeplinks/shared"], "@kbn/deeplinks-shared/*": ["packages/deeplinks/shared/*"], "@kbn/default-nav-analytics": ["packages/default-nav/analytics"], "@kbn/default-nav-analytics/*": ["packages/default-nav/analytics/*"], - "@kbn/default-nav-devtools": ["packages/default-nav/devtools"], - "@kbn/default-nav-devtools/*": ["packages/default-nav/devtools/*"], - "@kbn/default-nav-management": ["packages/default-nav/management"], - "@kbn/default-nav-management/*": ["packages/default-nav/management/*"], + "@kbn/default-nav-devtools": ["src/platform/packages/private/default-nav/devtools"], + "@kbn/default-nav-devtools/*": ["src/platform/packages/private/default-nav/devtools/*"], + "@kbn/default-nav-management": ["src/platform/packages/private/default-nav/management"], + "@kbn/default-nav-management/*": ["src/platform/packages/private/default-nav/management/*"], "@kbn/default-nav-ml": ["src/platform/packages/private/default-nav/ml"], "@kbn/default-nav-ml/*": ["src/platform/packages/private/default-nav/ml/*"], "@kbn/dependency-ownership": ["packages/kbn-dependency-ownership"], @@ -768,8 +768,8 @@ "@kbn/dev-cli-runner/*": ["packages/kbn-dev-cli-runner/*"], "@kbn/dev-proc-runner": ["packages/kbn-dev-proc-runner"], "@kbn/dev-proc-runner/*": ["packages/kbn-dev-proc-runner/*"], - "@kbn/dev-tools-plugin": ["src/plugins/dev_tools"], - "@kbn/dev-tools-plugin/*": ["src/plugins/dev_tools/*"], + "@kbn/dev-tools-plugin": ["src/platform/plugins/shared/dev_tools"], + "@kbn/dev-tools-plugin/*": ["src/platform/plugins/shared/dev_tools/*"], "@kbn/dev-utils": ["packages/kbn-dev-utils"], "@kbn/dev-utils/*": ["packages/kbn-dev-utils/*"], "@kbn/developer-examples-plugin": ["examples/developer_examples"], @@ -794,18 +794,18 @@ "@kbn/dom-drag-drop/*": ["packages/kbn-dom-drag-drop/*"], "@kbn/ebt-tools": ["packages/kbn-ebt-tools"], "@kbn/ebt-tools/*": ["packages/kbn-ebt-tools/*"], - "@kbn/ecs-data-quality-dashboard": ["x-pack/packages/security-solution/ecs_data_quality_dashboard"], - "@kbn/ecs-data-quality-dashboard/*": ["x-pack/packages/security-solution/ecs_data_quality_dashboard/*"], - "@kbn/ecs-data-quality-dashboard-plugin": ["x-pack/plugins/ecs_data_quality_dashboard"], - "@kbn/ecs-data-quality-dashboard-plugin/*": ["x-pack/plugins/ecs_data_quality_dashboard/*"], + "@kbn/ecs-data-quality-dashboard": ["x-pack/solutions/security/packages/ecs_data_quality_dashboard"], + "@kbn/ecs-data-quality-dashboard/*": ["x-pack/solutions/security/packages/ecs_data_quality_dashboard/*"], + "@kbn/ecs-data-quality-dashboard-plugin": ["x-pack/solutions/security/plugins/ecs_data_quality_dashboard"], + "@kbn/ecs-data-quality-dashboard-plugin/*": ["x-pack/solutions/security/plugins/ecs_data_quality_dashboard/*"], "@kbn/elastic-agent-utils": ["packages/kbn-elastic-agent-utils"], "@kbn/elastic-agent-utils/*": ["packages/kbn-elastic-agent-utils/*"], - "@kbn/elastic-assistant": ["x-pack/packages/kbn-elastic-assistant"], - "@kbn/elastic-assistant/*": ["x-pack/packages/kbn-elastic-assistant/*"], - "@kbn/elastic-assistant-common": ["x-pack/packages/kbn-elastic-assistant-common"], - "@kbn/elastic-assistant-common/*": ["x-pack/packages/kbn-elastic-assistant-common/*"], - "@kbn/elastic-assistant-plugin": ["x-pack/plugins/elastic_assistant"], - "@kbn/elastic-assistant-plugin/*": ["x-pack/plugins/elastic_assistant/*"], + "@kbn/elastic-assistant": ["x-pack/platform/packages/shared/kbn-elastic-assistant"], + "@kbn/elastic-assistant/*": ["x-pack/platform/packages/shared/kbn-elastic-assistant/*"], + "@kbn/elastic-assistant-common": ["x-pack/platform/packages/shared/kbn-elastic-assistant-common"], + "@kbn/elastic-assistant-common/*": ["x-pack/platform/packages/shared/kbn-elastic-assistant-common/*"], + "@kbn/elastic-assistant-plugin": ["x-pack/solutions/security/plugins/elastic_assistant"], + "@kbn/elastic-assistant-plugin/*": ["x-pack/solutions/security/plugins/elastic_assistant/*"], "@kbn/elasticsearch-client-plugin": ["test/plugin_functional/plugins/elasticsearch_client_plugin"], "@kbn/elasticsearch-client-plugin/*": ["test/plugin_functional/plugins/elasticsearch_client_plugin/*"], "@kbn/elasticsearch-client-xpack-plugin": ["x-pack/test/plugin_api_integration/plugins/elasticsearch_client"], @@ -844,10 +844,12 @@ "@kbn/es-query/*": ["packages/kbn-es-query/*"], "@kbn/es-types": ["packages/kbn-es-types"], "@kbn/es-types/*": ["packages/kbn-es-types/*"], - "@kbn/es-ui-shared-plugin": ["src/plugins/es_ui_shared"], - "@kbn/es-ui-shared-plugin/*": ["src/plugins/es_ui_shared/*"], + "@kbn/es-ui-shared-plugin": ["src/platform/plugins/shared/es_ui_shared"], + "@kbn/es-ui-shared-plugin/*": ["src/platform/plugins/shared/es_ui_shared/*"], "@kbn/eslint-config": ["packages/kbn-eslint-config"], "@kbn/eslint-config/*": ["packages/kbn-eslint-config/*"], + "@kbn/eslint-plugin-css": ["packages/kbn-eslint-plugin-css"], + "@kbn/eslint-plugin-css/*": ["packages/kbn-eslint-plugin-css/*"], "@kbn/eslint-plugin-disable": ["packages/kbn-eslint-plugin-disable"], "@kbn/eslint-plugin-disable/*": ["packages/kbn-eslint-plugin-disable/*"], "@kbn/eslint-plugin-eslint": ["packages/kbn-eslint-plugin-eslint"], @@ -892,14 +894,14 @@ "@kbn/event-log-fixture-plugin/*": ["x-pack/test/plugin_api_integration/plugins/event_log/*"], "@kbn/event-log-plugin": ["x-pack/plugins/event_log"], "@kbn/event-log-plugin/*": ["x-pack/plugins/event_log/*"], - "@kbn/expandable-flyout": ["packages/kbn-expandable-flyout"], - "@kbn/expandable-flyout/*": ["packages/kbn-expandable-flyout/*"], + "@kbn/expandable-flyout": ["x-pack/solutions/security/packages/expandable-flyout"], + "@kbn/expandable-flyout/*": ["x-pack/solutions/security/packages/expandable-flyout/*"], "@kbn/expect": ["packages/kbn-expect"], "@kbn/expect/*": ["packages/kbn-expect/*"], "@kbn/exploratory-view-example-plugin": ["x-pack/examples/exploratory_view_example"], "@kbn/exploratory-view-example-plugin/*": ["x-pack/examples/exploratory_view_example/*"], - "@kbn/exploratory-view-plugin": ["x-pack/plugins/observability_solution/exploratory_view"], - "@kbn/exploratory-view-plugin/*": ["x-pack/plugins/observability_solution/exploratory_view/*"], + "@kbn/exploratory-view-plugin": ["x-pack/solutions/observability/plugins/exploratory_view"], + "@kbn/exploratory-view-plugin/*": ["x-pack/solutions/observability/plugins/exploratory_view/*"], "@kbn/expression-error-plugin": ["src/plugins/expression_error"], "@kbn/expression-error-plugin/*": ["src/plugins/expression_error/*"], "@kbn/expression-gauge-plugin": ["src/plugins/chart_expressions/expression_gauge"], @@ -1008,8 +1010,8 @@ "@kbn/grid-example-plugin/*": ["examples/grid_example/*"], "@kbn/grid-layout": ["packages/kbn-grid-layout"], "@kbn/grid-layout/*": ["packages/kbn-grid-layout/*"], - "@kbn/grokdebugger-plugin": ["x-pack/plugins/grokdebugger"], - "@kbn/grokdebugger-plugin/*": ["x-pack/plugins/grokdebugger/*"], + "@kbn/grokdebugger-plugin": ["x-pack/platform/plugins/private/grokdebugger"], + "@kbn/grokdebugger-plugin/*": ["x-pack/platform/plugins/private/grokdebugger/*"], "@kbn/grouping": ["packages/kbn-grouping"], "@kbn/grouping/*": ["packages/kbn-grouping/*"], "@kbn/guided-onboarding": ["packages/kbn-guided-onboarding"], @@ -1048,16 +1050,16 @@ "@kbn/import-locator/*": ["packages/kbn-import-locator/*"], "@kbn/import-resolver": ["packages/kbn-import-resolver"], "@kbn/import-resolver/*": ["packages/kbn-import-resolver/*"], - "@kbn/index-adapter": ["packages/kbn-index-adapter"], - "@kbn/index-adapter/*": ["packages/kbn-index-adapter/*"], - "@kbn/index-lifecycle-management-common-shared": ["x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared"], - "@kbn/index-lifecycle-management-common-shared/*": ["x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/*"], - "@kbn/index-lifecycle-management-plugin": ["x-pack/plugins/index_lifecycle_management"], - "@kbn/index-lifecycle-management-plugin/*": ["x-pack/plugins/index_lifecycle_management/*"], + "@kbn/index-adapter": ["x-pack/solutions/security/packages/index-adapter"], + "@kbn/index-adapter/*": ["x-pack/solutions/security/packages/index-adapter/*"], + "@kbn/index-lifecycle-management-common-shared": ["x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared"], + "@kbn/index-lifecycle-management-common-shared/*": ["x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/*"], + "@kbn/index-lifecycle-management-plugin": ["x-pack/platform/plugins/private/index_lifecycle_management"], + "@kbn/index-lifecycle-management-plugin/*": ["x-pack/platform/plugins/private/index_lifecycle_management/*"], "@kbn/index-management-plugin": ["x-pack/plugins/index_management"], "@kbn/index-management-plugin/*": ["x-pack/plugins/index_management/*"], - "@kbn/index-management-shared-types": ["x-pack/packages/index-management/index_management_shared_types"], - "@kbn/index-management-shared-types/*": ["x-pack/packages/index-management/index_management_shared_types/*"], + "@kbn/index-management-shared-types": ["x-pack/platform/packages/shared/index-management/index_management_shared_types"], + "@kbn/index-management-shared-types/*": ["x-pack/platform/packages/shared/index-management/index_management_shared_types/*"], "@kbn/index-patterns-test-plugin": ["test/plugin_functional/plugins/index_patterns"], "@kbn/index-patterns-test-plugin/*": ["test/plugin_functional/plugins/index_patterns/*"], "@kbn/inference_integration_flyout": ["x-pack/platform/packages/private/ml/inference_integration_flyout"], @@ -1066,18 +1068,18 @@ "@kbn/inference-common/*": ["x-pack/platform/packages/shared/ai-infra/inference-common/*"], "@kbn/inference-plugin": ["x-pack/platform/plugins/shared/inference"], "@kbn/inference-plugin/*": ["x-pack/platform/plugins/shared/inference/*"], - "@kbn/infra-forge": ["x-pack/packages/kbn-infra-forge"], - "@kbn/infra-forge/*": ["x-pack/packages/kbn-infra-forge/*"], + "@kbn/infra-forge": ["x-pack/platform/packages/private/kbn-infra-forge"], + "@kbn/infra-forge/*": ["x-pack/platform/packages/private/kbn-infra-forge/*"], "@kbn/infra-plugin": ["x-pack/plugins/observability_solution/infra"], "@kbn/infra-plugin/*": ["x-pack/plugins/observability_solution/infra/*"], - "@kbn/ingest-pipelines-plugin": ["x-pack/plugins/ingest_pipelines"], - "@kbn/ingest-pipelines-plugin/*": ["x-pack/plugins/ingest_pipelines/*"], + "@kbn/ingest-pipelines-plugin": ["x-pack/platform/plugins/shared/ingest_pipelines"], + "@kbn/ingest-pipelines-plugin/*": ["x-pack/platform/plugins/shared/ingest_pipelines/*"], "@kbn/input-control-vis-plugin": ["src/plugins/input_control_vis"], "@kbn/input-control-vis-plugin/*": ["src/plugins/input_control_vis/*"], "@kbn/inspector-plugin": ["src/plugins/inspector"], "@kbn/inspector-plugin/*": ["src/plugins/inspector/*"], - "@kbn/integration-assistant-plugin": ["x-pack/plugins/integration_assistant"], - "@kbn/integration-assistant-plugin/*": ["x-pack/plugins/integration_assistant/*"], + "@kbn/integration-assistant-plugin": ["x-pack/platform/plugins/shared/integration_assistant"], + "@kbn/integration-assistant-plugin/*": ["x-pack/platform/plugins/shared/integration_assistant/*"], "@kbn/interactive-setup-plugin": ["src/plugins/interactive_setup"], "@kbn/interactive-setup-plugin/*": ["src/plugins/interactive_setup/*"], "@kbn/interactive-setup-test-endpoints-plugin": ["test/interactive_setup_api_integration/plugins/test_endpoints"], @@ -1088,14 +1090,14 @@ "@kbn/inventory-e2e/*": ["x-pack/plugins/observability_solution/inventory/e2e/*"], "@kbn/inventory-plugin": ["x-pack/plugins/observability_solution/inventory"], "@kbn/inventory-plugin/*": ["x-pack/plugins/observability_solution/inventory/*"], - "@kbn/investigate-app-plugin": ["x-pack/plugins/observability_solution/investigate_app"], - "@kbn/investigate-app-plugin/*": ["x-pack/plugins/observability_solution/investigate_app/*"], - "@kbn/investigate-plugin": ["x-pack/plugins/observability_solution/investigate"], - "@kbn/investigate-plugin/*": ["x-pack/plugins/observability_solution/investigate/*"], - "@kbn/investigation-shared": ["packages/kbn-investigation-shared"], - "@kbn/investigation-shared/*": ["packages/kbn-investigation-shared/*"], - "@kbn/io-ts-utils": ["packages/kbn-io-ts-utils"], - "@kbn/io-ts-utils/*": ["packages/kbn-io-ts-utils/*"], + "@kbn/investigate-app-plugin": ["x-pack/solutions/observability/plugins/investigate_app"], + "@kbn/investigate-app-plugin/*": ["x-pack/solutions/observability/plugins/investigate_app/*"], + "@kbn/investigate-plugin": ["x-pack/solutions/observability/plugins/investigate"], + "@kbn/investigate-plugin/*": ["x-pack/solutions/observability/plugins/investigate/*"], + "@kbn/investigation-shared": ["x-pack/solutions/observability/packages/kbn-investigation-shared"], + "@kbn/investigation-shared/*": ["x-pack/solutions/observability/packages/kbn-investigation-shared/*"], + "@kbn/io-ts-utils": ["src/platform/packages/shared/kbn-io-ts-utils"], + "@kbn/io-ts-utils/*": ["src/platform/packages/shared/kbn-io-ts-utils/*"], "@kbn/ipynb": ["packages/kbn-ipynb"], "@kbn/ipynb/*": ["packages/kbn-ipynb/*"], "@kbn/item-buffer": ["packages/kbn-item-buffer"], @@ -1130,10 +1132,10 @@ "@kbn/kibana-usage-collection-plugin/*": ["src/plugins/kibana_usage_collection/*"], "@kbn/kibana-utils-plugin": ["src/plugins/kibana_utils"], "@kbn/kibana-utils-plugin/*": ["src/plugins/kibana_utils/*"], - "@kbn/kubernetes-security-plugin": ["x-pack/plugins/kubernetes_security"], - "@kbn/kubernetes-security-plugin/*": ["x-pack/plugins/kubernetes_security/*"], - "@kbn/langchain": ["x-pack/packages/kbn-langchain"], - "@kbn/langchain/*": ["x-pack/packages/kbn-langchain/*"], + "@kbn/kubernetes-security-plugin": ["x-pack/solutions/security/plugins/kubernetes_security"], + "@kbn/kubernetes-security-plugin/*": ["x-pack/solutions/security/plugins/kubernetes_security/*"], + "@kbn/langchain": ["x-pack/platform/packages/shared/kbn-langchain"], + "@kbn/langchain/*": ["x-pack/platform/packages/shared/kbn-langchain/*"], "@kbn/language-documentation": ["src/platform/packages/private/kbn-language-documentation"], "@kbn/language-documentation/*": ["src/platform/packages/private/kbn-language-documentation/*"], "@kbn/lens-config-builder-example-plugin": ["x-pack/examples/lens_config_builder_example"], @@ -1146,10 +1148,10 @@ "@kbn/lens-inline-editing-example-plugin/*": ["x-pack/examples/lens_embeddable_inline_editing_example/*"], "@kbn/lens-plugin": ["x-pack/plugins/lens"], "@kbn/lens-plugin/*": ["x-pack/plugins/lens/*"], - "@kbn/license-api-guard-plugin": ["x-pack/plugins/license_api_guard"], - "@kbn/license-api-guard-plugin/*": ["x-pack/plugins/license_api_guard/*"], - "@kbn/license-management-plugin": ["x-pack/plugins/license_management"], - "@kbn/license-management-plugin/*": ["x-pack/plugins/license_management/*"], + "@kbn/license-api-guard-plugin": ["x-pack/platform/plugins/private/license_api_guard"], + "@kbn/license-api-guard-plugin/*": ["x-pack/platform/plugins/private/license_api_guard/*"], + "@kbn/license-management-plugin": ["x-pack/platform/plugins/shared/license_management"], + "@kbn/license-management-plugin/*": ["x-pack/platform/plugins/shared/license_management/*"], "@kbn/licensing-plugin": ["x-pack/plugins/licensing"], "@kbn/licensing-plugin/*": ["x-pack/plugins/licensing/*"], "@kbn/links-plugin": ["src/plugins/links"], @@ -1184,30 +1186,30 @@ "@kbn/managed-vscode-config/*": ["packages/kbn-managed-vscode-config/*"], "@kbn/managed-vscode-config-cli": ["packages/kbn-managed-vscode-config-cli"], "@kbn/managed-vscode-config-cli/*": ["packages/kbn-managed-vscode-config-cli/*"], - "@kbn/management-cards-navigation": ["packages/kbn-management/cards_navigation"], - "@kbn/management-cards-navigation/*": ["packages/kbn-management/cards_navigation/*"], - "@kbn/management-plugin": ["src/plugins/management"], - "@kbn/management-plugin/*": ["src/plugins/management/*"], - "@kbn/management-settings-application": ["packages/kbn-management/settings/application"], - "@kbn/management-settings-application/*": ["packages/kbn-management/settings/application/*"], - "@kbn/management-settings-components-field-category": ["packages/kbn-management/settings/components/field_category"], - "@kbn/management-settings-components-field-category/*": ["packages/kbn-management/settings/components/field_category/*"], - "@kbn/management-settings-components-field-input": ["packages/kbn-management/settings/components/field_input"], - "@kbn/management-settings-components-field-input/*": ["packages/kbn-management/settings/components/field_input/*"], - "@kbn/management-settings-components-field-row": ["packages/kbn-management/settings/components/field_row"], - "@kbn/management-settings-components-field-row/*": ["packages/kbn-management/settings/components/field_row/*"], - "@kbn/management-settings-components-form": ["packages/kbn-management/settings/components/form"], - "@kbn/management-settings-components-form/*": ["packages/kbn-management/settings/components/form/*"], - "@kbn/management-settings-field-definition": ["packages/kbn-management/settings/field_definition"], - "@kbn/management-settings-field-definition/*": ["packages/kbn-management/settings/field_definition/*"], + "@kbn/management-cards-navigation": ["src/platform/packages/shared/kbn-management/cards_navigation"], + "@kbn/management-cards-navigation/*": ["src/platform/packages/shared/kbn-management/cards_navigation/*"], + "@kbn/management-plugin": ["src/platform/plugins/shared/management"], + "@kbn/management-plugin/*": ["src/platform/plugins/shared/management/*"], + "@kbn/management-settings-application": ["src/platform/packages/private/kbn-management/settings/application"], + "@kbn/management-settings-application/*": ["src/platform/packages/private/kbn-management/settings/application/*"], + "@kbn/management-settings-components-field-category": ["src/platform/packages/private/kbn-management/settings/components/field_category"], + "@kbn/management-settings-components-field-category/*": ["src/platform/packages/private/kbn-management/settings/components/field_category/*"], + "@kbn/management-settings-components-field-input": ["src/platform/packages/shared/kbn-management/settings/components/field_input"], + "@kbn/management-settings-components-field-input/*": ["src/platform/packages/shared/kbn-management/settings/components/field_input/*"], + "@kbn/management-settings-components-field-row": ["src/platform/packages/shared/kbn-management/settings/components/field_row"], + "@kbn/management-settings-components-field-row/*": ["src/platform/packages/shared/kbn-management/settings/components/field_row/*"], + "@kbn/management-settings-components-form": ["src/platform/packages/private/kbn-management/settings/components/form"], + "@kbn/management-settings-components-form/*": ["src/platform/packages/private/kbn-management/settings/components/form/*"], + "@kbn/management-settings-field-definition": ["src/platform/packages/shared/kbn-management/settings/field_definition"], + "@kbn/management-settings-field-definition/*": ["src/platform/packages/shared/kbn-management/settings/field_definition/*"], "@kbn/management-settings-ids": ["packages/kbn-management/settings/setting_ids"], "@kbn/management-settings-ids/*": ["packages/kbn-management/settings/setting_ids/*"], "@kbn/management-settings-section-registry": ["packages/kbn-management/settings/section_registry"], "@kbn/management-settings-section-registry/*": ["packages/kbn-management/settings/section_registry/*"], - "@kbn/management-settings-types": ["packages/kbn-management/settings/types"], - "@kbn/management-settings-types/*": ["packages/kbn-management/settings/types/*"], - "@kbn/management-settings-utilities": ["packages/kbn-management/settings/utilities"], - "@kbn/management-settings-utilities/*": ["packages/kbn-management/settings/utilities/*"], + "@kbn/management-settings-types": ["src/platform/packages/shared/kbn-management/settings/types"], + "@kbn/management-settings-types/*": ["src/platform/packages/shared/kbn-management/settings/types/*"], + "@kbn/management-settings-utilities": ["src/platform/packages/shared/kbn-management/settings/utilities"], + "@kbn/management-settings-utilities/*": ["src/platform/packages/shared/kbn-management/settings/utilities/*"], "@kbn/management-storybook-config": ["packages/kbn-management/storybook/config"], "@kbn/management-storybook-config/*": ["packages/kbn-management/storybook/config/*"], "@kbn/management-test-plugin": ["test/plugin_functional/plugins/management_test_plugin"], @@ -1316,22 +1318,26 @@ "@kbn/object-versioning/*": ["packages/kbn-object-versioning/*"], "@kbn/object-versioning-utils": ["packages/kbn-object-versioning-utils"], "@kbn/object-versioning-utils/*": ["packages/kbn-object-versioning-utils/*"], - "@kbn/observability-ai-assistant-app-plugin": ["x-pack/plugins/observability_solution/observability_ai_assistant_app"], - "@kbn/observability-ai-assistant-app-plugin/*": ["x-pack/plugins/observability_solution/observability_ai_assistant_app/*"], - "@kbn/observability-ai-assistant-management-plugin": ["x-pack/plugins/observability_solution/observability_ai_assistant_management"], - "@kbn/observability-ai-assistant-management-plugin/*": ["x-pack/plugins/observability_solution/observability_ai_assistant_management/*"], - "@kbn/observability-ai-assistant-plugin": ["x-pack/plugins/observability_solution/observability_ai_assistant"], - "@kbn/observability-ai-assistant-plugin/*": ["x-pack/plugins/observability_solution/observability_ai_assistant/*"], - "@kbn/observability-alert-details": ["x-pack/packages/observability/alert_details"], - "@kbn/observability-alert-details/*": ["x-pack/packages/observability/alert_details/*"], - "@kbn/observability-alerting-rule-utils": ["x-pack/packages/observability/alerting_rule_utils"], - "@kbn/observability-alerting-rule-utils/*": ["x-pack/packages/observability/alerting_rule_utils/*"], - "@kbn/observability-alerting-test-data": ["x-pack/packages/observability/alerting_test_data"], - "@kbn/observability-alerting-test-data/*": ["x-pack/packages/observability/alerting_test_data/*"], + "@kbn/observability-ai-assistant-app-plugin": ["x-pack/solutions/observability/plugins/observability_ai_assistant_app"], + "@kbn/observability-ai-assistant-app-plugin/*": ["x-pack/solutions/observability/plugins/observability_ai_assistant_app/*"], + "@kbn/observability-ai-assistant-management-plugin": ["x-pack/solutions/observability/plugins/observability_ai_assistant_management"], + "@kbn/observability-ai-assistant-management-plugin/*": ["x-pack/solutions/observability/plugins/observability_ai_assistant_management/*"], + "@kbn/observability-ai-assistant-plugin": ["x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant"], + "@kbn/observability-ai-assistant-plugin/*": ["x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/*"], + "@kbn/observability-ai-common": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_common"], + "@kbn/observability-ai-common/*": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_common/*"], + "@kbn/observability-ai-server": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_server"], + "@kbn/observability-ai-server/*": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_server/*"], + "@kbn/observability-alert-details": ["x-pack/solutions/observability/packages/alert_details"], + "@kbn/observability-alert-details/*": ["x-pack/solutions/observability/packages/alert_details/*"], + "@kbn/observability-alerting-rule-utils": ["x-pack/platform/packages/shared/observability/alerting_rule_utils"], + "@kbn/observability-alerting-rule-utils/*": ["x-pack/platform/packages/shared/observability/alerting_rule_utils/*"], + "@kbn/observability-alerting-test-data": ["x-pack/solutions/observability/packages/alerting_test_data"], + "@kbn/observability-alerting-test-data/*": ["x-pack/solutions/observability/packages/alerting_test_data/*"], "@kbn/observability-fixtures-plugin": ["x-pack/test/cases_api_integration/common/plugins/observability"], "@kbn/observability-fixtures-plugin/*": ["x-pack/test/cases_api_integration/common/plugins/observability/*"], - "@kbn/observability-get-padded-alert-time-range-util": ["x-pack/packages/observability/get_padded_alert_time_range_util"], - "@kbn/observability-get-padded-alert-time-range-util/*": ["x-pack/packages/observability/get_padded_alert_time_range_util/*"], + "@kbn/observability-get-padded-alert-time-range-util": ["x-pack/solutions/observability/packages/get_padded_alert_time_range_util"], + "@kbn/observability-get-padded-alert-time-range-util/*": ["x-pack/solutions/observability/packages/get_padded_alert_time_range_util/*"], "@kbn/observability-logs-explorer-plugin": ["x-pack/plugins/observability_solution/observability_logs_explorer"], "@kbn/observability-logs-explorer-plugin/*": ["x-pack/plugins/observability_solution/observability_logs_explorer/*"], "@kbn/observability-logs-overview": ["x-pack/packages/observability/logs_overview"], @@ -1340,12 +1346,12 @@ "@kbn/observability-onboarding-e2e/*": ["x-pack/plugins/observability_solution/observability_onboarding/e2e/*"], "@kbn/observability-onboarding-plugin": ["x-pack/plugins/observability_solution/observability_onboarding"], "@kbn/observability-onboarding-plugin/*": ["x-pack/plugins/observability_solution/observability_onboarding/*"], - "@kbn/observability-plugin": ["x-pack/plugins/observability_solution/observability"], - "@kbn/observability-plugin/*": ["x-pack/plugins/observability_solution/observability/*"], + "@kbn/observability-plugin": ["x-pack/solutions/observability/plugins/observability"], + "@kbn/observability-plugin/*": ["x-pack/solutions/observability/plugins/observability/*"], "@kbn/observability-shared-plugin": ["x-pack/plugins/observability_solution/observability_shared"], "@kbn/observability-shared-plugin/*": ["x-pack/plugins/observability_solution/observability_shared/*"], - "@kbn/observability-synthetics-test-data": ["x-pack/packages/observability/synthetics_test_data"], - "@kbn/observability-synthetics-test-data/*": ["x-pack/packages/observability/synthetics_test_data/*"], + "@kbn/observability-synthetics-test-data": ["x-pack/solutions/observability/packages/synthetics_test_data"], + "@kbn/observability-synthetics-test-data/*": ["x-pack/solutions/observability/packages/synthetics_test_data/*"], "@kbn/observability-utils-browser": ["x-pack/packages/observability/observability_utils/observability_utils_browser"], "@kbn/observability-utils-browser/*": ["x-pack/packages/observability/observability_utils/observability_utils_browser/*"], "@kbn/observability-utils-common": ["x-pack/packages/observability/observability_utils/observability_utils_common"], @@ -1368,12 +1374,14 @@ "@kbn/optimizer-webpack-helpers/*": ["packages/kbn-optimizer-webpack-helpers/*"], "@kbn/osquery-io-ts-types": ["src/platform/packages/shared/kbn-osquery-io-ts-types"], "@kbn/osquery-io-ts-types/*": ["src/platform/packages/shared/kbn-osquery-io-ts-types/*"], - "@kbn/osquery-plugin": ["x-pack/plugins/osquery"], - "@kbn/osquery-plugin/*": ["x-pack/plugins/osquery/*"], + "@kbn/osquery-plugin": ["x-pack/platform/plugins/shared/osquery"], + "@kbn/osquery-plugin/*": ["x-pack/platform/plugins/shared/osquery/*"], "@kbn/paertial-results-example-plugin": ["examples/partial_results_example"], "@kbn/paertial-results-example-plugin/*": ["examples/partial_results_example/*"], - "@kbn/painless-lab-plugin": ["x-pack/plugins/painless_lab"], - "@kbn/painless-lab-plugin/*": ["x-pack/plugins/painless_lab/*"], + "@kbn/painless-lab-plugin": ["x-pack/platform/plugins/private/painless_lab"], + "@kbn/painless-lab-plugin/*": ["x-pack/platform/plugins/private/painless_lab/*"], + "@kbn/palettes": ["packages/kbn-palettes"], + "@kbn/palettes/*": ["packages/kbn-palettes/*"], "@kbn/panel-loader": ["packages/kbn-panel-loader"], "@kbn/panel-loader/*": ["packages/kbn-panel-loader/*"], "@kbn/peggy": ["packages/kbn-peggy"], @@ -1436,8 +1444,10 @@ "@kbn/react-mute-legacy-root-warning/*": ["packages/kbn-react-mute-legacy-root-warning/*"], "@kbn/recently-accessed": ["packages/kbn-recently-accessed"], "@kbn/recently-accessed/*": ["packages/kbn-recently-accessed/*"], - "@kbn/remote-clusters-plugin": ["x-pack/plugins/remote_clusters"], - "@kbn/remote-clusters-plugin/*": ["x-pack/plugins/remote_clusters/*"], + "@kbn/relocate": ["packages/kbn-relocate"], + "@kbn/relocate/*": ["packages/kbn-relocate/*"], + "@kbn/remote-clusters-plugin": ["x-pack/platform/plugins/private/remote_clusters"], + "@kbn/remote-clusters-plugin/*": ["x-pack/platform/plugins/private/remote_clusters/*"], "@kbn/rendering-plugin": ["test/plugin_functional/plugins/rendering_plugin"], "@kbn/rendering-plugin/*": ["test/plugin_functional/plugins/rendering_plugin/*"], "@kbn/repo-file-maps": ["packages/kbn-repo-file-maps"], @@ -1494,10 +1504,10 @@ "@kbn/response-stream-plugin/*": ["examples/response_stream/*"], "@kbn/rison": ["packages/kbn-rison"], "@kbn/rison/*": ["packages/kbn-rison/*"], - "@kbn/rollup": ["x-pack/packages/rollup"], - "@kbn/rollup/*": ["x-pack/packages/rollup/*"], - "@kbn/rollup-plugin": ["x-pack/plugins/rollup"], - "@kbn/rollup-plugin/*": ["x-pack/plugins/rollup/*"], + "@kbn/rollup": ["x-pack/platform/packages/private/rollup"], + "@kbn/rollup/*": ["x-pack/platform/packages/private/rollup/*"], + "@kbn/rollup-plugin": ["x-pack/platform/plugins/private/rollup"], + "@kbn/rollup-plugin/*": ["x-pack/platform/plugins/private/rollup/*"], "@kbn/router-to-openapispec": ["packages/kbn-router-to-openapispec"], "@kbn/router-to-openapispec/*": ["packages/kbn-router-to-openapispec/*"], "@kbn/router-utils": ["packages/kbn-router-utils"], @@ -1510,8 +1520,8 @@ "@kbn/rule-data-utils/*": ["packages/kbn-rule-data-utils/*"], "@kbn/rule-registry-plugin": ["x-pack/plugins/rule_registry"], "@kbn/rule-registry-plugin/*": ["x-pack/plugins/rule_registry/*"], - "@kbn/runtime-fields-plugin": ["x-pack/plugins/runtime_fields"], - "@kbn/runtime-fields-plugin/*": ["x-pack/plugins/runtime_fields/*"], + "@kbn/runtime-fields-plugin": ["x-pack/platform/plugins/private/runtime_fields"], + "@kbn/runtime-fields-plugin/*": ["x-pack/platform/plugins/private/runtime_fields/*"], "@kbn/safer-lodash-set": ["packages/kbn-safer-lodash-set"], "@kbn/safer-lodash-set/*": ["packages/kbn-safer-lodash-set/*"], "@kbn/saml-provider-plugin": ["x-pack/test/security_api_integration/plugins/saml_provider"], @@ -1598,8 +1608,8 @@ "@kbn/search-shared-ui/*": ["x-pack/packages/search/shared_ui/*"], "@kbn/search-types": ["packages/kbn-search-types"], "@kbn/search-types/*": ["packages/kbn-search-types/*"], - "@kbn/searchprofiler-plugin": ["x-pack/plugins/searchprofiler"], - "@kbn/searchprofiler-plugin/*": ["x-pack/plugins/searchprofiler/*"], + "@kbn/searchprofiler-plugin": ["x-pack/platform/plugins/shared/searchprofiler"], + "@kbn/searchprofiler-plugin/*": ["x-pack/platform/plugins/shared/searchprofiler/*"], "@kbn/security-api-integration-helpers": ["x-pack/test/security_api_integration/packages/helpers"], "@kbn/security-api-integration-helpers/*": ["x-pack/test/security_api_integration/packages/helpers/*"], "@kbn/security-api-key-management": ["x-pack/packages/security/api_key_management"], @@ -1622,36 +1632,36 @@ "@kbn/security-plugin-types-server/*": ["x-pack/packages/security/plugin_types_server/*"], "@kbn/security-role-management-model": ["x-pack/packages/security/role_management_model"], "@kbn/security-role-management-model/*": ["x-pack/packages/security/role_management_model/*"], - "@kbn/security-solution-distribution-bar": ["x-pack/packages/security-solution/distribution_bar"], - "@kbn/security-solution-distribution-bar/*": ["x-pack/packages/security-solution/distribution_bar/*"], - "@kbn/security-solution-ess": ["x-pack/plugins/security_solution_ess"], - "@kbn/security-solution-ess/*": ["x-pack/plugins/security_solution_ess/*"], - "@kbn/security-solution-features": ["x-pack/packages/security-solution/features"], - "@kbn/security-solution-features/*": ["x-pack/packages/security-solution/features/*"], + "@kbn/security-solution-distribution-bar": ["x-pack/solutions/security/packages/distribution_bar"], + "@kbn/security-solution-distribution-bar/*": ["x-pack/solutions/security/packages/distribution_bar/*"], + "@kbn/security-solution-ess": ["x-pack/solutions/security/plugins/security_solution_ess"], + "@kbn/security-solution-ess/*": ["x-pack/solutions/security/plugins/security_solution_ess/*"], + "@kbn/security-solution-features": ["x-pack/solutions/security/packages/features"], + "@kbn/security-solution-features/*": ["x-pack/solutions/security/packages/features/*"], "@kbn/security-solution-fixtures-plugin": ["x-pack/test/cases_api_integration/common/plugins/security_solution"], "@kbn/security-solution-fixtures-plugin/*": ["x-pack/test/cases_api_integration/common/plugins/security_solution/*"], - "@kbn/security-solution-navigation": ["x-pack/packages/security-solution/navigation"], - "@kbn/security-solution-navigation/*": ["x-pack/packages/security-solution/navigation/*"], - "@kbn/security-solution-plugin": ["x-pack/plugins/security_solution"], - "@kbn/security-solution-plugin/*": ["x-pack/plugins/security_solution/*"], - "@kbn/security-solution-serverless": ["x-pack/plugins/security_solution_serverless"], - "@kbn/security-solution-serverless/*": ["x-pack/plugins/security_solution_serverless/*"], - "@kbn/security-solution-side-nav": ["x-pack/packages/security-solution/side_nav"], - "@kbn/security-solution-side-nav/*": ["x-pack/packages/security-solution/side_nav/*"], - "@kbn/security-solution-storybook-config": ["x-pack/packages/security-solution/storybook/config"], - "@kbn/security-solution-storybook-config/*": ["x-pack/packages/security-solution/storybook/config/*"], - "@kbn/security-solution-upselling": ["x-pack/packages/security-solution/upselling"], - "@kbn/security-solution-upselling/*": ["x-pack/packages/security-solution/upselling/*"], + "@kbn/security-solution-navigation": ["x-pack/solutions/security/packages/navigation"], + "@kbn/security-solution-navigation/*": ["x-pack/solutions/security/packages/navigation/*"], + "@kbn/security-solution-plugin": ["x-pack/solutions/security/plugins/security_solution"], + "@kbn/security-solution-plugin/*": ["x-pack/solutions/security/plugins/security_solution/*"], + "@kbn/security-solution-serverless": ["x-pack/solutions/security/plugins/security_solution_serverless"], + "@kbn/security-solution-serverless/*": ["x-pack/solutions/security/plugins/security_solution_serverless/*"], + "@kbn/security-solution-side-nav": ["x-pack/solutions/security/packages/side_nav"], + "@kbn/security-solution-side-nav/*": ["x-pack/solutions/security/packages/side_nav/*"], + "@kbn/security-solution-storybook-config": ["x-pack/solutions/security/packages/storybook/config"], + "@kbn/security-solution-storybook-config/*": ["x-pack/solutions/security/packages/storybook/config/*"], + "@kbn/security-solution-upselling": ["x-pack/solutions/security/packages/upselling"], + "@kbn/security-solution-upselling/*": ["x-pack/solutions/security/packages/upselling/*"], "@kbn/security-test-endpoints-plugin": ["x-pack/test/security_functional/plugins/test_endpoints"], "@kbn/security-test-endpoints-plugin/*": ["x-pack/test/security_functional/plugins/test_endpoints/*"], "@kbn/security-ui-components": ["x-pack/packages/security/ui_components"], "@kbn/security-ui-components/*": ["x-pack/packages/security/ui_components/*"], "@kbn/securitysolution-autocomplete": ["packages/kbn-securitysolution-autocomplete"], "@kbn/securitysolution-autocomplete/*": ["packages/kbn-securitysolution-autocomplete/*"], - "@kbn/securitysolution-data-table": ["x-pack/packages/security-solution/data_table"], - "@kbn/securitysolution-data-table/*": ["x-pack/packages/security-solution/data_table/*"], - "@kbn/securitysolution-ecs": ["packages/kbn-securitysolution-ecs"], - "@kbn/securitysolution-ecs/*": ["packages/kbn-securitysolution-ecs/*"], + "@kbn/securitysolution-data-table": ["x-pack/solutions/security/packages/data_table"], + "@kbn/securitysolution-data-table/*": ["x-pack/solutions/security/packages/data_table/*"], + "@kbn/securitysolution-ecs": ["src/platform/packages/shared/kbn-securitysolution-ecs"], + "@kbn/securitysolution-ecs/*": ["src/platform/packages/shared/kbn-securitysolution-ecs/*"], "@kbn/securitysolution-endpoint-exceptions-common": ["packages/kbn-securitysolution-endpoint-exceptions-common"], "@kbn/securitysolution-endpoint-exceptions-common/*": ["packages/kbn-securitysolution-endpoint-exceptions-common/*"], "@kbn/securitysolution-es-utils": ["packages/kbn-securitysolution-es-utils"], @@ -1688,18 +1698,18 @@ "@kbn/securitysolution-utils/*": ["packages/kbn-securitysolution-utils/*"], "@kbn/server-http-tools": ["packages/kbn-server-http-tools"], "@kbn/server-http-tools/*": ["packages/kbn-server-http-tools/*"], - "@kbn/server-route-repository": ["packages/kbn-server-route-repository"], - "@kbn/server-route-repository/*": ["packages/kbn-server-route-repository/*"], - "@kbn/server-route-repository-client": ["packages/kbn-server-route-repository-client"], - "@kbn/server-route-repository-client/*": ["packages/kbn-server-route-repository-client/*"], - "@kbn/server-route-repository-utils": ["packages/kbn-server-route-repository-utils"], - "@kbn/server-route-repository-utils/*": ["packages/kbn-server-route-repository-utils/*"], + "@kbn/server-route-repository": ["src/platform/packages/shared/kbn-server-route-repository"], + "@kbn/server-route-repository/*": ["src/platform/packages/shared/kbn-server-route-repository/*"], + "@kbn/server-route-repository-client": ["src/platform/packages/shared/kbn-server-route-repository-client"], + "@kbn/server-route-repository-client/*": ["src/platform/packages/shared/kbn-server-route-repository-client/*"], + "@kbn/server-route-repository-utils": ["src/platform/packages/shared/kbn-server-route-repository-utils"], + "@kbn/server-route-repository-utils/*": ["src/platform/packages/shared/kbn-server-route-repository-utils/*"], "@kbn/serverless": ["x-pack/plugins/serverless"], "@kbn/serverless/*": ["x-pack/plugins/serverless/*"], "@kbn/serverless-common-settings": ["packages/serverless/settings/common"], "@kbn/serverless-common-settings/*": ["packages/serverless/settings/common/*"], - "@kbn/serverless-observability": ["x-pack/plugins/serverless_observability"], - "@kbn/serverless-observability/*": ["x-pack/plugins/serverless_observability/*"], + "@kbn/serverless-observability": ["x-pack/solutions/observability/plugins/serverless_observability"], + "@kbn/serverless-observability/*": ["x-pack/solutions/observability/plugins/serverless_observability/*"], "@kbn/serverless-observability-settings": ["packages/serverless/settings/observability_project"], "@kbn/serverless-observability-settings/*": ["packages/serverless/settings/observability_project/*"], "@kbn/serverless-project-switcher": ["packages/serverless/project_switcher"], @@ -1708,16 +1718,16 @@ "@kbn/serverless-search/*": ["x-pack/plugins/serverless_search/*"], "@kbn/serverless-search-settings": ["packages/serverless/settings/search_project"], "@kbn/serverless-search-settings/*": ["packages/serverless/settings/search_project/*"], - "@kbn/serverless-security-settings": ["packages/serverless/settings/security_project"], - "@kbn/serverless-security-settings/*": ["packages/serverless/settings/security_project/*"], + "@kbn/serverless-security-settings": ["src/platform/packages/shared/serverless/settings/security_project"], + "@kbn/serverless-security-settings/*": ["src/platform/packages/shared/serverless/settings/security_project/*"], "@kbn/serverless-storybook-config": ["packages/serverless/storybook/config"], "@kbn/serverless-storybook-config/*": ["packages/serverless/storybook/config/*"], "@kbn/serverless-types": ["packages/serverless/types"], "@kbn/serverless-types/*": ["packages/serverless/types/*"], "@kbn/session-notifications-plugin": ["test/plugin_functional/plugins/session_notifications"], "@kbn/session-notifications-plugin/*": ["test/plugin_functional/plugins/session_notifications/*"], - "@kbn/session-view-plugin": ["x-pack/plugins/session_view"], - "@kbn/session-view-plugin/*": ["x-pack/plugins/session_view/*"], + "@kbn/session-view-plugin": ["x-pack/solutions/security/plugins/session_view"], + "@kbn/session-view-plugin/*": ["x-pack/solutions/security/plugins/session_view/*"], "@kbn/set-map": ["packages/kbn-set-map"], "@kbn/set-map/*": ["packages/kbn-set-map/*"], "@kbn/share-examples-plugin": ["examples/share_examples"], @@ -1826,12 +1836,12 @@ "@kbn/shared-ux-table-persist/*": ["packages/shared-ux/table_persist/*"], "@kbn/shared-ux-utility": ["packages/kbn-shared-ux-utility"], "@kbn/shared-ux-utility/*": ["packages/kbn-shared-ux-utility/*"], - "@kbn/slo-plugin": ["x-pack/plugins/observability_solution/slo"], - "@kbn/slo-plugin/*": ["x-pack/plugins/observability_solution/slo/*"], - "@kbn/slo-schema": ["x-pack/packages/kbn-slo-schema"], - "@kbn/slo-schema/*": ["x-pack/packages/kbn-slo-schema/*"], - "@kbn/snapshot-restore-plugin": ["x-pack/plugins/snapshot_restore"], - "@kbn/snapshot-restore-plugin/*": ["x-pack/plugins/snapshot_restore/*"], + "@kbn/slo-plugin": ["x-pack/solutions/observability/plugins/slo"], + "@kbn/slo-plugin/*": ["x-pack/solutions/observability/plugins/slo/*"], + "@kbn/slo-schema": ["x-pack/platform/packages/shared/kbn-slo-schema"], + "@kbn/slo-schema/*": ["x-pack/platform/packages/shared/kbn-slo-schema/*"], + "@kbn/snapshot-restore-plugin": ["x-pack/platform/plugins/private/snapshot_restore"], + "@kbn/snapshot-restore-plugin/*": ["x-pack/platform/plugins/private/snapshot_restore/*"], "@kbn/some-dev-log": ["packages/kbn-some-dev-log"], "@kbn/some-dev-log/*": ["packages/kbn-some-dev-log/*"], "@kbn/sort-package-json": ["packages/kbn-sort-package-json"], @@ -1842,12 +1852,12 @@ "@kbn/spaces-plugin/*": ["x-pack/plugins/spaces/*"], "@kbn/spaces-test-plugin": ["x-pack/test/spaces_api_integration/common/plugins/spaces_test_plugin"], "@kbn/spaces-test-plugin/*": ["x-pack/test/spaces_api_integration/common/plugins/spaces_test_plugin/*"], - "@kbn/sse-utils": ["packages/kbn-sse-utils"], - "@kbn/sse-utils/*": ["packages/kbn-sse-utils/*"], - "@kbn/sse-utils-client": ["packages/kbn-sse-utils-client"], - "@kbn/sse-utils-client/*": ["packages/kbn-sse-utils-client/*"], - "@kbn/sse-utils-server": ["packages/kbn-sse-utils-server"], - "@kbn/sse-utils-server/*": ["packages/kbn-sse-utils-server/*"], + "@kbn/sse-utils": ["src/platform/packages/shared/kbn-sse-utils"], + "@kbn/sse-utils/*": ["src/platform/packages/shared/kbn-sse-utils/*"], + "@kbn/sse-utils-client": ["src/platform/packages/shared/kbn-sse-utils-client"], + "@kbn/sse-utils-client/*": ["src/platform/packages/shared/kbn-sse-utils-client/*"], + "@kbn/sse-utils-server": ["src/platform/packages/shared/kbn-sse-utils-server"], + "@kbn/sse-utils-server/*": ["src/platform/packages/shared/kbn-sse-utils-server/*"], "@kbn/stack-alerts-plugin": ["x-pack/plugins/stack_alerts"], "@kbn/stack-alerts-plugin/*": ["x-pack/plugins/stack_alerts/*"], "@kbn/stack-connectors-plugin": ["x-pack/plugins/stack_connectors"], @@ -1870,10 +1880,10 @@ "@kbn/streams-app-plugin/*": ["x-pack/solutions/observability/plugins/streams_app/*"], "@kbn/streams-plugin": ["x-pack/solutions/observability/plugins/streams"], "@kbn/streams-plugin/*": ["x-pack/solutions/observability/plugins/streams/*"], - "@kbn/synthetics-e2e": ["x-pack/plugins/observability_solution/synthetics/e2e"], - "@kbn/synthetics-e2e/*": ["x-pack/plugins/observability_solution/synthetics/e2e/*"], - "@kbn/synthetics-plugin": ["x-pack/plugins/observability_solution/synthetics"], - "@kbn/synthetics-plugin/*": ["x-pack/plugins/observability_solution/synthetics/*"], + "@kbn/synthetics-e2e": ["x-pack/solutions/observability/plugins/synthetics/e2e"], + "@kbn/synthetics-e2e/*": ["x-pack/solutions/observability/plugins/synthetics/e2e/*"], + "@kbn/synthetics-plugin": ["x-pack/solutions/observability/plugins/synthetics"], + "@kbn/synthetics-plugin/*": ["x-pack/solutions/observability/plugins/synthetics/*"], "@kbn/synthetics-private-location": ["x-pack/packages/kbn-synthetics-private-location"], "@kbn/synthetics-private-location/*": ["x-pack/packages/kbn-synthetics-private-location/*"], "@kbn/task-manager-fixture-plugin": ["x-pack/test/alerting_api_integration/common/plugins/task_manager_fixture"], @@ -1918,10 +1928,10 @@ "@kbn/third-party-lens-navigation-prompt-plugin/*": ["x-pack/examples/third_party_lens_navigation_prompt/*"], "@kbn/third-party-vis-lens-example-plugin": ["x-pack/examples/third_party_vis_lens_example"], "@kbn/third-party-vis-lens-example-plugin/*": ["x-pack/examples/third_party_vis_lens_example/*"], - "@kbn/threat-intelligence-plugin": ["x-pack/plugins/threat_intelligence"], - "@kbn/threat-intelligence-plugin/*": ["x-pack/plugins/threat_intelligence/*"], - "@kbn/timelines-plugin": ["x-pack/plugins/timelines"], - "@kbn/timelines-plugin/*": ["x-pack/plugins/timelines/*"], + "@kbn/threat-intelligence-plugin": ["x-pack/solutions/security/plugins/threat_intelligence"], + "@kbn/threat-intelligence-plugin/*": ["x-pack/solutions/security/plugins/threat_intelligence/*"], + "@kbn/timelines-plugin": ["x-pack/solutions/security/plugins/timelines"], + "@kbn/timelines-plugin/*": ["x-pack/solutions/security/plugins/timelines/*"], "@kbn/timelion-grammar": ["packages/kbn-timelion-grammar"], "@kbn/timelion-grammar/*": ["packages/kbn-timelion-grammar/*"], "@kbn/timerange": ["packages/kbn-timerange"], @@ -1948,8 +1958,8 @@ "@kbn/ts-projects/*": ["packages/kbn-ts-projects/*"], "@kbn/ts-type-check-cli": ["packages/kbn-ts-type-check-cli"], "@kbn/ts-type-check-cli/*": ["packages/kbn-ts-type-check-cli/*"], - "@kbn/typed-react-router-config": ["packages/kbn-typed-react-router-config"], - "@kbn/typed-react-router-config/*": ["packages/kbn-typed-react-router-config/*"], + "@kbn/typed-react-router-config": ["src/platform/packages/shared/kbn-typed-react-router-config"], + "@kbn/typed-react-router-config/*": ["src/platform/packages/shared/kbn-typed-react-router-config/*"], "@kbn/ui-actions-browser": ["packages/kbn-ui-actions-browser"], "@kbn/ui-actions-browser/*": ["packages/kbn-ui-actions-browser/*"], "@kbn/ui-actions-enhanced-examples-plugin": ["x-pack/examples/ui_actions_enhanced_examples"], @@ -1988,12 +1998,12 @@ "@kbn/unified-search-plugin/*": ["src/plugins/unified_search/*"], "@kbn/unsaved-changes-badge": ["packages/kbn-unsaved-changes-badge"], "@kbn/unsaved-changes-badge/*": ["packages/kbn-unsaved-changes-badge/*"], - "@kbn/unsaved-changes-prompt": ["packages/kbn-unsaved-changes-prompt"], - "@kbn/unsaved-changes-prompt/*": ["packages/kbn-unsaved-changes-prompt/*"], + "@kbn/unsaved-changes-prompt": ["src/platform/packages/shared/kbn-unsaved-changes-prompt"], + "@kbn/unsaved-changes-prompt/*": ["src/platform/packages/shared/kbn-unsaved-changes-prompt/*"], "@kbn/upgrade-assistant-plugin": ["x-pack/plugins/upgrade_assistant"], "@kbn/upgrade-assistant-plugin/*": ["x-pack/plugins/upgrade_assistant/*"], - "@kbn/uptime-plugin": ["x-pack/plugins/observability_solution/uptime"], - "@kbn/uptime-plugin/*": ["x-pack/plugins/observability_solution/uptime/*"], + "@kbn/uptime-plugin": ["x-pack/solutions/observability/plugins/uptime"], + "@kbn/uptime-plugin/*": ["x-pack/solutions/observability/plugins/uptime/*"], "@kbn/url-drilldown-plugin": ["x-pack/plugins/drilldowns/url_drilldown"], "@kbn/url-drilldown-plugin/*": ["x-pack/plugins/drilldowns/url_drilldown/*"], "@kbn/url-forwarding-plugin": ["src/plugins/url_forwarding"], @@ -2016,8 +2026,8 @@ "@kbn/utility-types-jest/*": ["packages/kbn-utility-types-jest/*"], "@kbn/utils": ["packages/kbn-utils"], "@kbn/utils/*": ["packages/kbn-utils/*"], - "@kbn/ux-plugin": ["x-pack/plugins/observability_solution/ux"], - "@kbn/ux-plugin/*": ["x-pack/plugins/observability_solution/ux/*"], + "@kbn/ux-plugin": ["x-pack/solutions/observability/plugins/ux"], + "@kbn/ux-plugin/*": ["x-pack/solutions/observability/plugins/ux/*"], "@kbn/v8-profiler-examples-plugin": ["examples/v8_profiler_examples"], "@kbn/v8-profiler-examples-plugin/*": ["examples/v8_profiler_examples/*"], "@kbn/validate-next-docs-cli": ["packages/kbn-validate-next-docs-cli"], @@ -2054,8 +2064,8 @@ "@kbn/visualization-utils/*": ["packages/kbn-visualization-utils/*"], "@kbn/visualizations-plugin": ["src/plugins/visualizations"], "@kbn/visualizations-plugin/*": ["src/plugins/visualizations/*"], - "@kbn/watcher-plugin": ["x-pack/plugins/watcher"], - "@kbn/watcher-plugin/*": ["x-pack/plugins/watcher/*"], + "@kbn/watcher-plugin": ["x-pack/platform/plugins/private/watcher"], + "@kbn/watcher-plugin/*": ["x-pack/platform/plugins/private/watcher/*"], "@kbn/web-worker-stub": ["packages/kbn-web-worker-stub"], "@kbn/web-worker-stub/*": ["packages/kbn-web-worker-stub/*"], "@kbn/whereis-pkg-cli": ["packages/kbn-whereis-pkg-cli"], @@ -2070,9 +2080,7 @@ "@kbn/zod-helpers/*": ["packages/kbn-zod-helpers/*"], // END AUTOMATED PACKAGE LISTING // Allows for importing from `kibana` package for the exported types. - "@emotion/core": [ - "typings/@emotion" - ] + "@emotion/core": ["typings/@emotion"] }, // Support .tsx files and transform JSX into calls to React.createElement "jsx": "react", diff --git a/versions.json b/versions.json index 30b013e25cd2b..126e39ed0bad2 100644 --- a/versions.json +++ b/versions.json @@ -14,7 +14,7 @@ "previousMinor": true }, { - "version": "8.17.0", + "version": "8.17.1", "branch": "8.17", "previousMajor": true }, @@ -23,11 +23,6 @@ "branch": "8.16", "previousMajor": true }, - { - "version": "8.15.6", - "branch": "8.15", - "previousMajor": true - }, { "version": "7.17.27", "branch": "7.17" diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index c6eab5697fd29..a4482fdb8c4a9 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -20,11 +20,11 @@ "xpack.canvas": "plugins/canvas", "xpack.cases": "plugins/cases", "xpack.cloud": "plugins/cloud", - "xpack.cloudDefend": "plugins/cloud_defend", + "xpack.cloudDefend": "solutions/security/plugins/cloud_defend", "xpack.cloudLinks": "plugins/cloud_integrations/cloud_links", - "xpack.cloudDataMigration": "plugins/cloud_integrations/cloud_data_migration", + "xpack.cloudDataMigration": "platform/plugins/private/cloud_integrations/cloud_data_migration", "xpack.csp": [ - "plugins/cloud_security_posture", + "solutions/security/plugins/cloud_security_posture", "packages/kbn-cloud-security-posture-common", "packages/kbn-cloud-security-posture" ], @@ -32,19 +32,19 @@ "xpack.dashboard": "plugins/dashboard_enhanced", "xpack.dataQuality": "plugins/data_quality", "xpack.datasetQuality": "plugins/observability_solution/dataset_quality", - "xpack.dataUsage": "plugins/data_usage", + "xpack.dataUsage": "platform/plugins/private/data_usage", "xpack.discover": "plugins/discover_enhanced", - "xpack.crossClusterReplication": "plugins/cross_cluster_replication", - "xpack.elasticAssistant": "packages/kbn-elastic-assistant", - "xpack.elasticAssistantCommon": "packages/kbn-elastic-assistant-common", - "xpack.elasticAssistantPlugin": "plugins/elastic_assistant", - "xpack.ecsDataQualityDashboard": "plugins/ecs_data_quality_dashboard", + "xpack.crossClusterReplication": "platform/plugins/private/cross_cluster_replication", + "xpack.elasticAssistant": "platform/packages/shared/kbn-elastic-assistant", + "xpack.elasticAssistantCommon": "platform/packages/shared/kbn-elastic-assistant-common", + "xpack.elasticAssistantPlugin": "solutions/security/plugins/elastic_assistant", + "xpack.ecsDataQualityDashboard": "solutions/security/plugins/ecs_data_quality_dashboard", "xpack.embeddableEnhanced": "plugins/embeddable_enhanced", "xpack.endpoint": "plugins/endpoint", "xpack.enterpriseSearch": "plugins/enterprise_search", "xpack.features": "plugins/features", "xpack.dataVisualizer": "platform/plugins/private/data_visualizer", - "xpack.exploratoryView": "plugins/observability_solution/exploratory_view", + "xpack.exploratoryView": "solutions/observability/plugins/exploratory_view", "xpack.fileUpload": "plugins/file_upload", "xpack.globalSearch": [ "plugins/global_search" @@ -55,25 +55,25 @@ "xpack.graph": [ "plugins/graph" ], - "xpack.grokDebugger": "plugins/grokdebugger", + "xpack.grokDebugger": "platform/plugins/private/grokdebugger", "xpack.idxMgmt": "plugins/index_management", "xpack.idxMgmtPackage": "packages/index-management", - "xpack.indexLifecycleMgmt": "plugins/index_lifecycle_management", + "xpack.indexLifecycleMgmt": "platform/plugins/private/index_lifecycle_management", "xpack.infra": "plugins/observability_solution/infra", "xpack.logsDataAccess": "plugins/observability_solution/logs_data_access", "xpack.logsExplorer": "plugins/observability_solution/logs_explorer", "xpack.logsShared": "plugins/observability_solution/logs_shared", "xpack.fleet": "plugins/fleet", - "xpack.ingestPipelines": "plugins/ingest_pipelines", - "xpack.integrationAssistant": "plugins/integration_assistant", + "xpack.ingestPipelines": "platform/plugins/shared/ingest_pipelines", + "xpack.integrationAssistant": "platform/plugins/shared/integration_assistant", "xpack.inference": "platform/plugins/shared/inference", "xpack.inventory": "plugins/observability_solution/inventory", - "xpack.investigate": "plugins/observability_solution/investigate", - "xpack.investigateApp": "plugins/observability_solution/investigate_app", - "xpack.kubernetesSecurity": "plugins/kubernetes_security", + "xpack.investigate": "solutions/observability/plugins/investigate", + "xpack.investigateApp": "solutions/observability/plugins/investigate_app", + "xpack.kubernetesSecurity": "solutions/security/plugins/kubernetes_security", "xpack.lens": "plugins/lens", - "xpack.licenseApiGuard": "plugins/license_api_guard", - "xpack.licenseMgmt": "plugins/license_management", + "xpack.licenseApiGuard": "platform/plugins/private/license_api_guard", + "xpack.licenseMgmt": "platform/plugins/shared/license_management", "xpack.licensing": "plugins/licensing", "xpack.lists": "plugins/lists", "xpack.logstash": [ @@ -100,12 +100,12 @@ "xpack.monitoring": [ "plugins/monitoring" ], - "xpack.observability": "plugins/observability_solution/observability", + "xpack.observability": "solutions/observability/plugins/observability", "xpack.observabilityAiAssistant": [ - "plugins/observability_solution/observability_ai_assistant", - "plugins/observability_solution/observability_ai_assistant_app" + "platform/plugins/shared/observability_solution/observability_ai_assistant", + "solutions/observability/plugins/observability_ai_assistant_app" ], - "xpack.observabilityAiAssistantManagement": "plugins/observability_solution/observability_ai_assistant_management", + "xpack.observabilityAiAssistantManagement": "solutions/observability/plugins/observability_ai_assistant_management", "xpack.observabilityLogsExplorer": "plugins/observability_solution/observability_logs_explorer", "xpack.observability_onboarding": "plugins/observability_solution/observability_onboarding", "xpack.observabilityShared": "plugins/observability_solution/observability_shared", @@ -113,21 +113,21 @@ "packages/observability/logs_overview/src/components" ], "xpack.osquery": [ - "plugins/osquery" + "platform/plugins/shared/osquery" ], - "xpack.painlessLab": "plugins/painless_lab", + "xpack.painlessLab": "platform/plugins/private/painless_lab", "xpack.profiling": [ "plugins/observability_solution/profiling" ], - "xpack.remoteClusters": "plugins/remote_clusters", + "xpack.remoteClusters": "platform/plugins/private/remote_clusters", "xpack.reporting": [ "plugins/reporting" ], "xpack.rollupJobs": [ - "packages/rollup", - "plugins/rollup" + "platform/packages/private/rollup", + "platform/plugins/private/rollup" ], - "xpack.runtimeFields": "plugins/runtime_fields", + "xpack.runtimeFields": "platform/plugins/private/runtime_fields", "xpack.screenshotting": "plugins/screenshotting", "xpack.searchSharedUI": "packages/search/shared_ui", "xpack.searchHomepage": "plugins/search_homepage", @@ -137,7 +137,7 @@ "xpack.searchPlayground": "plugins/search_playground", "xpack.searchInferenceEndpoints": "plugins/search_inference_endpoints", "xpack.searchAssistant": "plugins/search_assistant", - "xpack.searchProfiler": "plugins/searchprofiler", + "xpack.searchProfiler": "platform/plugins/shared/searchprofiler", "xpack.security": [ "plugins/security", "packages/security" @@ -145,37 +145,37 @@ "xpack.server": "legacy/server", "xpack.serverless": "plugins/serverless", "xpack.serverlessSearch": "plugins/serverless_search", - "xpack.serverlessObservability": "plugins/serverless_observability", - "xpack.securitySolution": "plugins/security_solution", - "xpack.securitySolutionEss": "plugins/security_solution_ess", - "xpack.securitySolutionServerless": "plugins/security_solution_serverless", - "xpack.sessionView": "plugins/session_view", + "xpack.serverlessObservability": "solutions/observability/plugins/serverless_observability", + "xpack.securitySolution": "solutions/security/plugins/security_solution", + "xpack.securitySolutionEss": "solutions/security/plugins/security_solution_ess", + "xpack.securitySolutionServerless": "solutions/security/plugins/security_solution_serverless", + "xpack.sessionView": "solutions/security/plugins/session_view", "xpack.streams": [ "solutions/observability/plugins/streams_app" ], - "xpack.slo": "plugins/observability_solution/slo", - "xpack.snapshotRestore": "plugins/snapshot_restore", + "xpack.slo": "solutions/observability/plugins/slo", + "xpack.snapshotRestore": "platform/plugins/private/snapshot_restore", "xpack.spaces": "plugins/spaces", "xpack.savedObjectsTagging": [ "plugins/saved_objects_tagging" ], "xpack.taskManager": "legacy/plugins/task_manager", - "xpack.threatIntelligence": "plugins/threat_intelligence", - "xpack.timelines": "plugins/timelines", + "xpack.threatIntelligence": "solutions/security/plugins/threat_intelligence", + "xpack.timelines": "solutions/security/plugins/timelines", "xpack.transform": "platform/plugins/private/transform", "xpack.triggersActionsUI": "plugins/triggers_actions_ui", "xpack.upgradeAssistant": "plugins/upgrade_assistant", "xpack.uptime": [ - "plugins/observability_solution/uptime" + "solutions/observability/plugins/uptime" ], "xpack.synthetics": [ - "plugins/observability_solution/synthetics" + "solutions/observability/plugins/synthetics" ], "xpack.ux": [ - "plugins/observability_solution/ux" + "solutions/observability/plugins/ux" ], "xpack.urlDrilldown": "plugins/drilldowns/url_drilldown", - "xpack.watcher": "plugins/watcher" + "xpack.watcher": "platform/plugins/private/watcher" }, "exclude": [ "examples" diff --git a/x-pack/README.md b/x-pack/README.md index be925841b0996..0afb180dab1f7 100644 --- a/x-pack/README.md +++ b/x-pack/README.md @@ -100,4 +100,4 @@ See [here](./test/functional/apps/dashboard/reporting/README.md) for more inform #### Running Security Solution Cypress E2E/integration tests -See [here](./plugins/security_solution/cypress/README.md) for information on running this test suite. +See [here](./solutions/security/plugins/security_solution/cypress/README.md) for information on running this test suite. diff --git a/x-pack/examples/embedded_lens_example/public/mount.tsx b/x-pack/examples/embedded_lens_example/public/mount.tsx index 6ff43709d3f89..f791c115be636 100644 --- a/x-pack/examples/embedded_lens_example/public/mount.tsx +++ b/x-pack/examples/embedded_lens_example/public/mount.tsx @@ -22,11 +22,8 @@ export const mount = const defaultDataView = await plugins.data.indexPatterns.getDefault(); const { formula } = await plugins.lens.stateHelperApi(); - const { analytics, i18n, theme } = core; - const startServices = { analytics, i18n, theme }; - const reactElement = ( - <KibanaRenderContextProvider {...startServices}> + <KibanaRenderContextProvider {...core}> {defaultDataView && defaultDataView.isTimeBased() ? ( <App core={core} plugins={plugins} defaultDataView={defaultDataView} formula={formula} /> ) : ( diff --git a/x-pack/examples/triggers_actions_ui_example/public/application.tsx b/x-pack/examples/triggers_actions_ui_example/public/application.tsx index 74b99fc2dece3..638233dd47a88 100644 --- a/x-pack/examples/triggers_actions_ui_example/public/application.tsx +++ b/x-pack/examples/triggers_actions_ui_example/public/application.tsx @@ -45,6 +45,7 @@ export interface TriggersActionsUiExampleComponentParams { docLinks: CoreStart['docLinks']; i18n: CoreStart['i18n']; theme: CoreStart['theme']; + userProfile: CoreStart['userProfile']; settings: CoreStart['settings']; history: ScopedHistory; triggersActionsUi: TriggersAndActionsUIPublicPluginStart; @@ -63,12 +64,11 @@ const TriggersActionsUiExampleApp = ({ notifications, settings, docLinks, - i18n, - theme, data, charts, dataViews, unifiedSearch, + ...startServices }: TriggersActionsUiExampleComponentParams) => { return ( <Router history={history}> @@ -193,8 +193,6 @@ const TriggersActionsUiExampleApp = ({ application, notifications, docLinks, - i18n, - theme, charts, data, dataViews, @@ -202,6 +200,7 @@ const TriggersActionsUiExampleApp = ({ settings, ruleTypeRegistry: triggersActionsUi.ruleTypeRegistry, actionTypeRegistry: triggersActionsUi.actionTypeRegistry, + ...startServices, }} /> </Page> @@ -218,8 +217,6 @@ const TriggersActionsUiExampleApp = ({ application, notifications, docLinks, - theme, - i18n, charts, data, dataViews, @@ -227,6 +224,7 @@ const TriggersActionsUiExampleApp = ({ settings, ruleTypeRegistry: triggersActionsUi.ruleTypeRegistry, actionTypeRegistry: triggersActionsUi.actionTypeRegistry, + ...startServices, }} /> </Page> @@ -245,7 +243,6 @@ export const renderApp = ( deps: TriggersActionsUiExamplePublicStartDeps, { appBasePath, element, history }: AppMountParameters ) => { - const { http, notifications, docLinks, application, i18n, theme, settings } = core; const { triggersActionsUi } = deps; const { ruleTypeRegistry, actionTypeRegistry } = triggersActionsUi; @@ -263,19 +260,13 @@ export const renderApp = ( <IntlProvider locale="en"> <TriggersActionsUiExampleApp history={history} - http={http} - notifications={notifications} - application={application} - docLinks={docLinks} - i18n={i18n} - theme={theme} - settings={settings} triggersActionsUi={deps.triggersActionsUi} data={deps.data} charts={deps.charts} dataViews={deps.dataViews} dataViewsEditor={deps.dataViewsEditor} unifiedSearch={deps.unifiedSearch} + {...core} /> </IntlProvider> </QueryClientProvider> diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json b/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json deleted file mode 100644 index 12a691a15cc4f..0000000000000 --- a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - ] -} diff --git a/x-pack/packages/index-management/index_management_shared_types/jest.config.js b/x-pack/packages/index-management/index_management_shared_types/jest.config.js deleted file mode 100644 index c9238a37a56ab..0000000000000 --- a/x-pack/packages/index-management/index_management_shared_types/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/index-management/index_management_shared_types'], -}; diff --git a/x-pack/packages/index-management/index_management_shared_types/tsconfig.json b/x-pack/packages/index-management/index_management_shared_types/tsconfig.json deleted file mode 100644 index 8e9142a838322..0000000000000 --- a/x-pack/packages/index-management/index_management_shared_types/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core-application-browser", - "@kbn/utility-types", - "@kbn/share-plugin", - ] -} diff --git a/x-pack/packages/kbn-ai-assistant-common/jest.config.js b/x-pack/packages/kbn-ai-assistant-common/jest.config.js deleted file mode 100644 index 6682c06e5e764..0000000000000 --- a/x-pack/packages/kbn-ai-assistant-common/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_ai_assistant_common_src', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/kbn-ai-assistant-common/src/**/*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-ai-assistant-common/src/*.test.{ts,tsx}', - ], - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-ai-assistant-common'], -}; diff --git a/x-pack/packages/kbn-ai-assistant-common/tsconfig.json b/x-pack/packages/kbn-ai-assistant-common/tsconfig.json deleted file mode 100644 index 35c604906821d..0000000000000 --- a/x-pack/packages/kbn-ai-assistant-common/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - ] -} diff --git a/x-pack/packages/kbn-ai-assistant/.storybook/main.ts b/x-pack/packages/kbn-ai-assistant/.storybook/main.ts new file mode 100644 index 0000000000000..a20131369d328 --- /dev/null +++ b/x-pack/packages/kbn-ai-assistant/.storybook/main.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { defaultConfig } from '@kbn/storybook'; + +module.exports = { + ...defaultConfig, + stories: [ + '../**/*.stories.tsx', + '../../../platform/packages/shared/ai-assistant/**/*.stories.tsx', + ], + reactOptions: { + strictMode: true, + }, +}; diff --git a/x-pack/packages/kbn-ai-assistant/.storybook/manager.ts b/x-pack/packages/kbn-ai-assistant/.storybook/manager.ts new file mode 100644 index 0000000000000..548bd62b3779c --- /dev/null +++ b/x-pack/packages/kbn-ai-assistant/.storybook/manager.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { addons } from '@storybook/addons'; +import { create } from '@storybook/theming'; +import { PANEL_ID } from '@storybook/addon-actions'; + +addons.setConfig({ + theme: create({ + base: 'light', + brandTitle: 'AI Assistant Storybook', + brandUrl: 'https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant', + }), + showPanel: true.valueOf, + selectedPanel: PANEL_ID, +}); diff --git a/x-pack/packages/kbn-ai-assistant/src/buttons/ask_assistant_button.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/buttons/ask_assistant_button.stories.tsx deleted file mode 100644 index 9c0d19e3c4b75..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/buttons/ask_assistant_button.stories.tsx +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { ComponentStory } from '@storybook/react'; -import { EuiButtonSize } from '@elastic/eui'; - -import { AskAssistantButton as Component, AskAssistantButtonProps } from './ask_assistant_button'; - -export default { - component: Component, - title: 'app/Atoms/AskAiAssistantButton', - argTypes: { - size: { - options: ['xs', 's', 'm'] as EuiButtonSize[], - control: { type: 'radio' }, - }, - fill: { - control: { - type: 'boolean', - }, - }, - flush: { - control: { - type: 'boolean', - if: { arg: 'variant', eq: 'empty' }, - }, - }, - variant: { - options: ['basic', 'empty', 'iconOnly'], - control: { type: 'radio' }, - }, - }, -}; - -const Template: ComponentStory<typeof Component> = (props: AskAssistantButtonProps) => ( - <Component {...props} /> -); - -const defaultProps = { - fill: true, - size: 'm' as EuiButtonSize, - variant: 'basic' as const, -}; - -export const AskAiAssistantButton = Template.bind({}); -AskAiAssistantButton.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/buttons/hide_expand_conversation_list_button.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/buttons/hide_expand_conversation_list_button.stories.tsx deleted file mode 100644 index d49ccdfb3823d..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/buttons/hide_expand_conversation_list_button.stories.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { ComponentStory } from '@storybook/react'; - -import { - HideExpandConversationListButton as Component, - HideExpandConversationListButtonProps, -} from './hide_expand_conversation_list_button'; - -export default { - component: Component, - title: 'app/Atoms/HideExpandConversationListButton', - argTypes: { - isExpanded: { - control: { - type: 'boolean', - }, - }, - }, -}; - -const Template: ComponentStory<typeof Component> = ( - props: HideExpandConversationListButtonProps -) => <Component {...props} />; - -const defaultProps = { - isExpanded: true, -}; - -export const HideExpandConversationListButton = Template.bind({}); -HideExpandConversationListButton.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/buttons/new_chat_button.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/buttons/new_chat_button.stories.tsx deleted file mode 100644 index f4e0cae677ef0..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/buttons/new_chat_button.stories.tsx +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import { NewChatButton as Component } from './new_chat_button'; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Atoms/NewChatButton', -}; - -export default meta; - -export const NewChatButton: ComponentStoryObj<typeof Component> = { - args: {}, -}; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/chat_body.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/chat_body.stories.tsx deleted file mode 100644 index 3809e97f059b6..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/chat_body.stories.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import React from 'react'; -import { MessageRole } from '@kbn/observability-ai-assistant-plugin/public'; -import { buildSystemMessage } from '../utils/builders'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { ChatBody as Component } from './chat_body'; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Organisms/ChatBody', - decorators: [KibanaReactStorybookDecorator], -}; - -export default meta; -const defaultProps: ComponentStoryObj<typeof Component> = { - args: { - initialTitle: 'My Conversation', - initialMessages: [ - buildSystemMessage(), - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.User, - content: `{"entries":[{"@timestamp":"2023-08-04T06:31:15.160Z","public":false,"confidence":"high","is_correction":false,"namespace":"default","text":"The user's name is Dario.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:53:21.848Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The RENAME command in ES|QL is used to rename a column. The syntax is 'RENAME <new-name> = <old-name>'. For example, 'FROM employees | KEEP first_name, last_name, still_hired | RENAME employed = still_hired' will rename the 'still_hired' column to 'employed'. If a column with the new name already exists, it will be replaced by the new column. Multiple columns can be renamed with a single RENAME command.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:52:02.052Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The KEEP command in ES|QL is used to specify what columns are returned and the order in which they are returned. To limit the columns that are returned, a comma-separated list of column names is used. The columns are then returned in the specified order. Wildcards can also be used to return all columns with a name that matches a pattern. For example, 'FROM employees | KEEP h*' will return all columns with a name that starts with an 'h'. The asterisk wildcard (*) by itself translates to all columns that do not match the other arguments.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:55:18.984Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The WHERE command in ES|QL is used to produce a table that contains all the rows from the input table for which the provided condition evaluates to true. For example, 'FROM employees | KEEP first_name, last_name, still_hired | WHERE still_hired == true' will return only the rows where 'still_hired' is true. WHERE supports various operators and functions for calculating values.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:53:57.401Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The SORT command in ES|QL is used to sort rows on one or more fields. The default sort order is ascending, but this can be explicitly set using ASC or DESC. For example, 'FROM employees | KEEP first_name, last_name, height | SORT height DESC' will sort the rows in descending order of height. Additional sort expressions can be provided to act as tie breakers. By default, null values are treated as being larger than any other value, meaning they are sorted last in an ascending order and first in a descending order. This can be changed by providing NULLS FIRST or NULLS LAST.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:50:09.345Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The EVAL command in ES|QL is used to append new columns to a table. For example, 'FROM employees | KEEP first_name, last_name, height | EVAL height_feet = height * 3.281, height_cm = height * 100' will append new columns 'height_feet' and 'height_cm' to the 'employees' table. If the specified column already exists, the existing column will be dropped, and the new column will be appended to the table. EVAL supports various functions for calculating values.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:49:37.882Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The ENRICH command in ES|QL is used to add data from existing indices to incoming records at query time. It requires an enrich policy to be executed, which defines a match field and a set of enrich fields. ENRICH looks for records in the enrich index based on the match field value. The matching key in the input dataset can be defined using 'ON <field-name>'. If it’s not specified, the match will be performed on a field with the same name as the match field defined in the enrich policy. You can specify which attributes to be added to the result using 'WITH <field1>, <field2>...' syntax. Attributes can also be renamed using 'WITH new_name=<field1>'. By default, ENRICH will add all the enrich fields defined in the enrich policy to the result. In case of name collisions, the newly created fields will override the existing fields.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:50:45.339Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The GROK command in ES|QL enables you to extract structured data out of a string. GROK matches the string against patterns, based on regular expressions, and extracts the specified patterns as columns. For example, 'ROW a = "1953-01-23T12:15:00Z 127.0.0.1 some.email@foo.com 42" | GROK a "%{TIMESTAMP_ISO8601:date} %{IP:ip} %{EMAILADDRESS:email} %{NUMBER:num:int}" | KEEP date, ip, email, num' will extract the date, IP, email, and number from the string into separate columns. Refer to the grok processor documentation for the syntax of grok patterns.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:44:22.647Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The FROM source command in ES|QL returns a table with up to 10,000 documents from a data stream, index, or alias. Each row in the table represents a document, and each column corresponds to a field, which can be accessed by the name of that field. Date math can be used to refer to indices, aliases and data streams, which is useful for time series data. Comma-separated lists or wildcards can be used to query multiple data streams, indices, or aliases.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:42:52.832Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"ES|QL, the Elasticsearch Query Language, is a query language designed for iterative data exploration. An ES|QL query consists of a series of commands, separated by pipes. Each query starts with a source command that produces a table, typically with data from Elasticsearch. This can be followed by one or more processing commands that modify the input table by adding, removing, or changing rows and columns. Processing commands can be chained together, with each command working on the output table of the previous command. The result of a query is the table produced by the final processing command. ES|QL can be used via the _esql endpoint, and results are returned as JSON by default. It can also be used in Kibana's Discover and Lens features for data exploration and visualization. Currently, ES|QL supports field types such as alias, boolean, date, ip, keyword family, double/float/half_float, long int/short/byte, and version.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}}]}`, - }, - }, - ], - knowledgeBase: { - status: { - loading: false, - value: { - ready: true, - enabled: true, - }, - refresh: () => {}, - }, - isInstalling: false, - install: async () => {}, - }, - connectors: { - connectors: [ - { - id: 'foo', - referencedByCount: 1, - actionTypeId: 'foo', - name: 'GPT-v8-ultra', - isPreconfigured: true, - isDeprecated: false, - isSystemAction: false, - }, - ], - loading: false, - error: undefined, - selectedConnector: 'foo', - selectConnector: () => {}, - reloadConnectors: () => {}, - }, - currentUser: { - username: 'elastic', - full_name: '', - }, - }, - render: (props) => { - return ( - <div style={{ height: '100vh', display: 'flex', maxWidth: 600 }}> - <Component {...props} /> - </div> - ); - }, -}; - -export const ChatBody: ComponentStoryObj<typeof Component> = { - ...defaultProps, -}; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/chat_flyout.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/chat_flyout.stories.tsx deleted file mode 100644 index 72546d770e6a6..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/chat_flyout.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ComponentStory } from '@storybook/react'; -import React from 'react'; -import { buildSystemMessage } from '../utils/builders'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { ChatFlyout as Component, FlyoutPositionMode } from './chat_flyout'; - -export default { - component: Component, - title: 'app/Organisms/ChatFlyout', - decorators: [KibanaReactStorybookDecorator], -}; - -type ChatFlyoutProps = React.ComponentProps<typeof Component>; - -const Template: ComponentStory<typeof Component> = (props: ChatFlyoutProps) => { - return ( - <div style={{ display: 'flex', minHeight: 800, maxWidth: 600 }}> - <Component {...props} /> - </div> - ); -}; - -const defaultProps: ChatFlyoutProps = { - isOpen: true, - initialTitle: 'How is this working', - initialMessages: [buildSystemMessage()], - initialFlyoutPositionMode: FlyoutPositionMode.OVERLAY, - onClose: () => {}, - navigateToConversation: () => {}, -}; - -export const ChatFlyout = Template.bind({}); -ChatFlyout.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.stories.tsx deleted file mode 100644 index 0a61e16070232..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.stories.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React from 'react'; -import { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import { FindActionResult } from '@kbn/actions-plugin/server'; -import { EuiPanel } from '@elastic/eui'; -import { ChatHeader as Component } from './chat_header'; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Molecules/ChatHeader', -}; - -export default meta; - -export const ChatHeaderLoaded: ComponentStoryObj<typeof Component> = { - args: { - title: 'My conversation', - connectors: { - loading: false, - selectedConnector: 'gpt-4', - connectors: [ - { id: 'gpt-4', name: 'OpenAI GPT-4' }, - { id: 'gpt-3.5-turbo', name: 'OpenAI GPT-3.5 Turbo' }, - ] as FindActionResult[], - selectConnector: () => {}, - reloadConnectors: () => {}, - }, - }, - render: (props) => { - return ( - <EuiPanel hasBorder hasShadow={false}> - <Component {...props} /> - </EuiPanel> - ); - }, -}; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/chat_timeline.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/chat_timeline.stories.tsx deleted file mode 100644 index 7c04c3ad0bae7..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/chat_timeline.stories.tsx +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiButton, EuiSpacer } from '@elastic/eui'; -import type { ComponentStory } from '@storybook/react'; -import React, { type ComponentProps, useState } from 'react'; -import { - MessageRole, - type ObservabilityAIAssistantChatService, -} from '@kbn/observability-ai-assistant-plugin/public'; -import { ChatState } from '@kbn/observability-ai-assistant-plugin/public'; -import { - buildAssistantMessage, - buildFunctionResponseMessage, - buildSystemMessage, - buildUserMessage, -} from '../utils/builders'; -import { ChatTimeline as Component, type ChatTimelineProps } from './chat_timeline'; - -export default { - component: Component, - title: 'app/Organisms/ChatTimeline', - parameters: { - backgrounds: { - default: 'white', - values: [{ name: 'white', value: '#fff' }], - }, - }, - argTypes: {}, -}; - -const Template: ComponentStory<typeof Component> = (props: ChatTimelineProps) => { - const [count, setCount] = useState(props.messages.length - 1); - - return ( - <> - <Component {...props} messages={props.messages.filter((_, index) => index <= count)} /> - - <EuiSpacer /> - - <EuiButton - data-test-subj="observabilityAiAssistantTemplateAddMessageButton" - onClick={() => setCount(count >= 0 && count < props.messages.length - 1 ? count + 1 : 0)} - > - Add message - </EuiButton> - </> - ); -}; - -const defaultProps: ComponentProps<typeof Component> = { - knowledgeBase: { - status: { - loading: false, - value: { - ready: true, - enabled: true, - }, - refresh: () => {}, - }, - isInstalling: false, - installError: undefined, - install: async () => {}, - }, - chatService: { - hasRenderFunction: () => false, - } as unknown as ObservabilityAIAssistantChatService, - chatState: ChatState.Ready, - hasConnector: true, - currentUser: { - full_name: 'John Doe', - username: 'johndoe', - }, - messages: [ - buildSystemMessage(), - buildUserMessage(), - buildAssistantMessage(), - buildUserMessage({ message: { content: 'How does it work?' } }), - buildAssistantMessage({ - message: { - content: `The way functions work depends on whether we are talking about mathematical functions or programming functions. Let's explore both: - - Mathematical Functions: - In mathematics, a function maps input values to corresponding output values based on a specific rule or expression. The general process of how a mathematical function works can be summarized as follows: - Step 1: Input - You provide an input value to the function, denoted as 'x' in the notation f(x). This value represents the independent variable. - - Step 2: Processing - The function takes the input value and applies a specific rule or algorithm to it. This rule is defined by the function itself and varies depending on the function's expression. - - Step 3: Output - After processing the input, the function produces an output value, denoted as 'f(x)' or 'y'. This output represents the dependent variable and is the result of applying the function's rule to the input. - - Step 4: Uniqueness - A well-defined mathematical function ensures that each input value corresponds to exactly one output value. In other words, the function should yield the same output for the same input whenever it is called.`, - }, - }), - buildUserMessage({ - message: { content: 'Can you execute a function?' }, - }), - buildAssistantMessage({ - message: { - content: 'Sure, I can do that.', - function_call: { - name: 'a_function', - arguments: '{ "foo": "bar" }', - trigger: MessageRole.Assistant, - }, - }, - }), - buildFunctionResponseMessage({ - message: { content: '{ "message": "The arguments are wrong" }' }, - }), - buildAssistantMessage({ - message: { - content: '', - function_call: { - name: 'a_function', - arguments: '{ "bar": "foo" }', - trigger: MessageRole.Assistant, - }, - }, - }), - ], - onActionClick: async () => {}, - onEdit: async () => {}, - onFeedback: () => {}, - onRegenerate: () => {}, - onSendTelemetry: () => {}, - onStopGenerating: () => {}, -}; - -export const ChatTimeline = Template.bind({}); -ChatTimeline.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/conversation_list.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/conversation_list.stories.tsx deleted file mode 100644 index 7405b477647fd..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/conversation_list.stories.tsx +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import React from 'react'; -import { buildConversation } from '../utils/builders'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { ConversationList as Component } from './conversation_list'; - -type ConversationListProps = React.ComponentProps<typeof Component>; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Organisms/ConversationList', - decorators: [KibanaReactStorybookDecorator], -}; - -export default meta; - -const Wrapper = (props: ConversationListProps) => { - return ( - <div style={{ minHeight: 800, maxWidth: 240, display: 'flex' }}> - <Component {...props} /> - </div> - ); -}; - -export const ConversationListLoading: ComponentStoryObj<typeof Component> = { - args: { - conversations: { - loading: true, - error: undefined, - value: { conversations: [] }, - refresh: () => {}, - }, - isLoading: true, - }, - render: Wrapper, -}; - -export const ConversationListError: ComponentStoryObj<typeof Component> = { - args: { - conversations: { - loading: false, - error: new Error('Failed to load conversations'), - value: { conversations: [] }, - refresh: () => {}, - }, - isLoading: false, - }, - render: Wrapper, -}; - -export const ConversationListLoaded: ComponentStoryObj<typeof Component> = { - args: { - conversations: { - loading: false, - error: undefined, - value: { - conversations: [ - buildConversation({ - conversation: { - id: 'foo', - title: 'Why is database service responding with errors after I did rm -rf /postgres', - last_updated: '', - }, - }), - ], - }, - refresh: () => {}, - }, - selectedConversationId: '', - }, - render: Wrapper, -}; - -export const ConversationListEmpty: ComponentStoryObj<typeof Component> = { - args: { - conversations: { - loading: false, - error: undefined, - value: { conversations: [] }, - refresh: () => {}, - }, - isLoading: false, - selectedConversationId: '', - }, - render: Wrapper, -}; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/function_list_popover.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/function_list_popover.stories.tsx deleted file mode 100644 index 62da0b2d14ff8..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/function_list_popover.stories.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ComponentStory } from '@storybook/react'; -import React from 'react'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { FunctionListPopover as Component } from './function_list_popover'; - -export default { - component: Component, - title: 'app/Organisms/FunctionListPopover', - decorators: [KibanaReactStorybookDecorator], -}; - -type FunctionListPopover = React.ComponentProps<typeof Component>; - -const Template: ComponentStory<typeof Component> = (props: FunctionListPopover) => { - return <Component {...props} />; -}; - -const defaultProps: FunctionListPopover = { - onSelectFunction: () => {}, - disabled: false, - mode: 'function', - selectedFunctionName: '', -}; - -export const FunctionListPopover = Template.bind({}); -FunctionListPopover.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/knowledge_base_callout.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/knowledge_base_callout.stories.tsx deleted file mode 100644 index 84c730129348e..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/knowledge_base_callout.stories.tsx +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import { merge } from 'lodash'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { KnowledgeBaseCallout as Component } from './knowledge_base_callout'; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Molecules/KnowledgeBaseCallout', - decorators: [KibanaReactStorybookDecorator], -}; - -export default meta; -const defaultProps: ComponentStoryObj<typeof Component> = { - args: { - knowledgeBase: { - status: { - loading: false, - value: { - ready: false, - enabled: true, - }, - refresh: () => {}, - }, - isInstalling: false, - installError: undefined, - install: async () => {}, - }, - }, -}; - -export const StatusError: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { knowledgeBase: { status: { loading: false, error: new Error() } } }, -}); - -export const Loading: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { knowledgeBase: { status: { loading: true } } }, -}); - -export const NotInstalled: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { knowledgeBase: { status: { loading: false, value: { ready: false, enabled: true } } } }, -}); - -export const Installing: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { - knowledgeBase: { - status: { loading: false, value: { ready: false, enabled: true } }, - isInstalling: true, - }, - }, -}); - -export const InstallError: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { - knowledgeBase: { - status: { - loading: false, - value: { ready: false, enabled: true }, - }, - isInstalling: false, - installError: new Error(), - }, - }, -}); - -export const Installed: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { knowledgeBase: { status: { loading: false, value: { ready: true, enabled: true } } } }, -}); diff --git a/x-pack/packages/kbn-ai-assistant/src/hooks/use_conversation.test.tsx b/x-pack/packages/kbn-ai-assistant/src/hooks/use_conversation.test.tsx index dffca3addd34e..196553ce55066 100644 --- a/x-pack/packages/kbn-ai-assistant/src/hooks/use_conversation.test.tsx +++ b/x-pack/packages/kbn-ai-assistant/src/hooks/use_conversation.test.tsx @@ -5,12 +5,7 @@ * 2.0. */ import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; -import { - act, - renderHook, - type RenderHookResult, - type WrapperComponent, -} from '@testing-library/react-hooks'; +import { renderHook, act, type RenderHookResult } from '@testing-library/react'; import { merge } from 'lodash'; import React, { PropsWithChildren } from 'react'; import { BehaviorSubject, Observable, of, Subject } from 'rxjs'; @@ -33,7 +28,7 @@ import type { NotificationsStart } from '@kbn/core/public'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { AssistantScope } from '@kbn/ai-assistant-common'; -let hookResult: RenderHookResult<UseConversationProps, UseConversationResult>; +let hookResult: RenderHookResult<UseConversationResult, UseConversationProps>; type MockedService = DeeplyMockedKeys<Omit<AIAssistantAppService, 'conversations'>> & { conversations: DeeplyMockedKeys< @@ -81,34 +76,32 @@ const useKibanaMockServices = { }; describe('useConversation', () => { - let wrapper: WrapperComponent<PropsWithChildren<UseConversationProps>>; + const wrapper = ({ children }: PropsWithChildren) => ( + <KibanaContextProvider services={useKibanaMockServices}>{children}</KibanaContextProvider> + ); - beforeEach(() => { + afterEach(() => { jest.clearAllMocks(); - wrapper = ({ children }: PropsWithChildren<unknown>) => ( - <KibanaContextProvider services={useKibanaMockServices}>{children}</KibanaContextProvider> - ); }); describe('with initial messages and a conversation id', () => { - beforeEach(() => { - hookResult = renderHook(useConversation, { - initialProps: { - chatService: mockChatService, - connectorId: 'my-connector', - initialMessages: [ - { - '@timestamp': new Date().toISOString(), - message: { content: '', role: MessageRole.User }, - }, - ], - initialConversationId: 'foo', - }, - wrapper, - }); - }); it('throws an error', () => { - expect(hookResult.result.error).toBeTruthy(); + expect(() => + renderHook(useConversation, { + initialProps: { + chatService: mockChatService, + connectorId: 'my-connector', + initialMessages: [ + { + '@timestamp': new Date().toISOString(), + message: { content: '', role: MessageRole.User }, + }, + ], + initialConversationId: 'foo', + }, + wrapper, + }) + ).toThrow(/Cannot set initialMessages if initialConversationId is set/); }); }); @@ -434,25 +427,29 @@ describe('useConversation', () => { describe('when the title is updated', () => { describe('without a stored conversation', () => { - beforeEach(() => { - hookResult = renderHook(useConversation, { - initialProps: { - chatService: mockChatService, - connectorId: 'my-connector', - initialMessages: [ - { - '@timestamp': new Date().toISOString(), - message: { content: '', role: MessageRole.User }, - }, - ], - initialConversationId: 'foo', - }, - wrapper, - }); - }); + it('throws an error', (done) => { + try { + const { result } = renderHook(useConversation, { + initialProps: { + chatService: mockChatService, + connectorId: 'my-connector', + initialMessages: [ + { + '@timestamp': new Date().toISOString(), + message: { content: '', role: MessageRole.User }, + }, + ], + initialConversationId: 'foo', + }, + wrapper, + }); - it('throws an error', () => { - expect(() => hookResult.result.current.saveTitle('my-new-title')).toThrow(); + result.current.saveTitle('my-new-title'); + } catch (e) { + expect(e).toBeInstanceOf(Error); + expect(e.message).toBe('Cannot set initialMessages if initialConversationId is set'); + done(); + } }); }); diff --git a/x-pack/packages/kbn-ai-assistant/src/hooks/use_local_storage.test.ts b/x-pack/packages/kbn-ai-assistant/src/hooks/use_local_storage.test.ts index ab1d00392fdb9..ea4ed05e36b66 100644 --- a/x-pack/packages/kbn-ai-assistant/src/hooks/use_local_storage.test.ts +++ b/x-pack/packages/kbn-ai-assistant/src/hooks/use_local_storage.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { useLocalStorage } from './use_local_storage'; describe('useLocalStorage', () => { diff --git a/x-pack/packages/kbn-ai-assistant/tsconfig.json b/x-pack/packages/kbn-ai-assistant/tsconfig.json index 5ba1b161bccba..159a38f67f426 100644 --- a/x-pack/packages/kbn-ai-assistant/tsconfig.json +++ b/x-pack/packages/kbn-ai-assistant/tsconfig.json @@ -12,6 +12,8 @@ "include": [ "**/*.ts", "**/*.tsx", + ".storybook/**/*.ts", + ".storybook/**/*.tsx", ], "exclude": [ "target/**/*" @@ -35,5 +37,6 @@ "@kbn/ml-plugin", "@kbn/share-plugin", "@kbn/ai-assistant-common", + "@kbn/storybook", ] } diff --git a/x-pack/packages/kbn-cloud-security-posture/common/README.md b/x-pack/packages/kbn-cloud-security-posture/common/README.md deleted file mode 100644 index 8f4b7fb4be9d9..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/common/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# @kbn/cloud-security-posture-common - -This package provides common code consumed in both the browser, i.e. the -`packages/kbn-cloud-security-posture` package and `plugins/cloud_security_posture` plugin, and on the server, i.e. the -`plugins/cloud_security_posture` plugin. - -## Maintainers - -Maintained by the Cloud Security Team \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture/common/jest.config.js b/x-pack/packages/kbn-cloud-security-posture/common/jest.config.js deleted file mode 100644 index 62d5a239b9dc9..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/common/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/kbn-cloud-security-posture/common'], -}; diff --git a/x-pack/packages/kbn-cloud-security-posture/common/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture/common/tsconfig.json deleted file mode 100644 index ebec9929559f0..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/common/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/config-schema", - "@kbn/data-views-plugin", - "@kbn/i18n", - "@kbn/analytics", - "@kbn/usage-collection-plugin", - "@kbn/es-query", - ] -} diff --git a/x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts b/x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts deleted file mode 100644 index ac2e27b70878f..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.ts +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; - -import { i18n } from '@kbn/i18n'; -import type { CspBenchmarkRulesStates } from '../schema/rules/latest'; - -export const defaultErrorMessage = i18n.translate('xpack.csp.common.utils.helpers.unknownError', { - defaultMessage: 'Unknown Error', -}); - -export const extractErrorMessage = (e: unknown, fallbackMessage?: string): string => { - if (e instanceof Error) return e.message; - if (typeof e === 'string') return e; - - return fallbackMessage ?? defaultErrorMessage; -}; - -export const buildMutedRulesFilter = ( - rulesStates: CspBenchmarkRulesStates -): QueryDslQueryContainer[] => { - const mutedRules = Object.fromEntries( - Object.entries(rulesStates).filter(([key, value]) => value.muted === true) - ); - - const mutedRulesFilterQuery = Object.keys(mutedRules).map((key) => { - const rule = mutedRules[key]; - return { - bool: { - must: [ - { term: { 'rule.benchmark.id': rule.benchmark_id } }, - { term: { 'rule.benchmark.version': rule.benchmark_version } }, - { term: { 'rule.benchmark.rule_number': rule.rule_number } }, - ], - }, - }; - }); - - return mutedRulesFilterQuery; -}; - -export const buildGenericEntityFlyoutPreviewQuery = ( - field: string, - queryValue?: string, - status?: string, - queryField?: string -) => { - return { - bool: { - filter: [ - { - bool: { - should: [ - { - term: { - [field]: `${queryValue || ''}`, - }, - }, - ], - minimum_should_match: 1, - }, - }, - status && queryField - ? { - bool: { - should: [ - { - term: { - [queryField]: status, - }, - }, - ], - minimum_should_match: 1, - }, - } - : undefined, - ].filter(Boolean), - }, - }; -}; - -// Higher-order function for Misconfiguration -export const buildMisconfigurationEntityFlyoutPreviewQuery = ( - field: string, - queryValue?: string, - status?: string -) => { - const queryField = 'result.evaluation'; - return buildGenericEntityFlyoutPreviewQuery(field, queryValue, status, queryField); -}; - -// Higher-order function for Vulnerability -export const buildVulnerabilityEntityFlyoutPreviewQuery = ( - field: string, - queryValue?: string, - status?: string -) => { - const queryField = 'vulnerability.severity'; - return buildGenericEntityFlyoutPreviewQuery(field, queryValue, status, queryField); -}; - -export const buildEntityAlertsQuery = ( - field: string, - to: string, - from: string, - queryValue?: string, - size?: number, - severity?: string -) => { - return { - size: size || 0, - _source: false, - fields: [ - '_id', - '_index', - 'kibana.alert.rule.uuid', - 'kibana.alert.severity', - 'kibana.alert.rule.name', - 'kibana.alert.workflow_status', - ], - query: { - bool: { - filter: [ - { - bool: { - should: [ - { - term: { - [field]: `${queryValue || ''}`, - }, - }, - ], - minimum_should_match: 1, - }, - }, - severity - ? { - bool: { - should: [ - { - term: { - 'kibana.alert.severity': severity, - }, - }, - ], - minimum_should_match: 1, - }, - } - : undefined, - { - range: { - '@timestamp': { - gte: from, - lte: to, - }, - }, - }, - { - terms: { - 'kibana.alert.workflow_status': ['open', 'acknowledged'], - }, - }, - ].filter(Boolean), - }, - }, - }; -}; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/index.ts b/x-pack/packages/kbn-cloud-security-posture/graph/index.ts deleted file mode 100644 index c50969cfd6402..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/graph/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './src/components'; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/jest.config.js b/x-pack/packages/kbn-cloud-security-posture/graph/jest.config.js deleted file mode 100644 index 3b8fbbd9384a4..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/graph/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - roots: ['<rootDir>/x-pack/packages/kbn-cloud-security-posture/graph'], - rootDir: '../../../..', - setupFiles: ['jest-canvas-mock'], - setupFilesAfterEnv: ['<rootDir>/x-pack/packages/kbn-cloud-security-posture/graph/setup_tests.ts'], -}; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/index.ts b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/index.ts deleted file mode 100644 index 2b050aa55429f..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { Graph } from './graph/graph'; -export { GraphPopover } from './graph/graph_popover'; -export { useGraphPopover } from './graph/use_graph_popover'; -export type { GraphProps } from './graph/graph'; -export type { - NodeViewModel, - EdgeViewModel, - GroupNodeViewModel, - LabelNodeViewModel, - EntityNodeViewModel, - NodeProps, -} from './types'; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts deleted file mode 100644 index 328829ee3fabe..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/types.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { - EntityNodeDataModel, - GroupNodeDataModel, - LabelNodeDataModel, - EdgeDataModel, - NodeShape, -} from '@kbn/cloud-security-posture-common/types/graph/latest'; -import type { Node, NodeProps as xyNodeProps } from '@xyflow/react'; -import type { Edge, EdgeProps as xyEdgeProps } from '@xyflow/react'; - -export interface Size { - width: number; - height: number; -} - -interface BaseNodeDataViewModel { - interactive?: boolean; -} - -export type NodeClickCallback = (e: React.MouseEvent<HTMLElement>, node: NodeProps) => void; - -export type ExpandButtonClickCallback = ( - e: React.MouseEvent<HTMLElement>, - node: NodeProps, - unToggleCallback: () => void -) => void; - -export interface EntityNodeViewModel - extends Record<string, unknown>, - EntityNodeDataModel, - BaseNodeDataViewModel { - expandButtonClick?: ExpandButtonClickCallback; - nodeClick?: NodeClickCallback; -} - -export interface GroupNodeViewModel - extends Record<string, unknown>, - GroupNodeDataModel, - BaseNodeDataViewModel {} - -export interface LabelNodeViewModel - extends Record<string, unknown>, - LabelNodeDataModel, - BaseNodeDataViewModel { - expandButtonClick?: ExpandButtonClickCallback; -} - -export type NodeViewModel = EntityNodeViewModel | GroupNodeViewModel | LabelNodeViewModel; - -export type NodeProps = xyNodeProps<Node<NodeViewModel>>; - -export interface EdgeViewModel extends Record<string, unknown>, EdgeDataModel {} - -export type EdgeProps = xyEdgeProps< - Edge< - EdgeViewModel & { - sourceShape: NodeShape; - targetShape: NodeShape; - } - > ->; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture/graph/tsconfig.json deleted file mode 100644 index d0056e29e6784..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/graph/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/cloud-security-posture-common", - "@kbn/utility-types", - "@kbn/ui-theme", - ] -} diff --git a/x-pack/packages/kbn-cloud-security-posture/public/jest.config.js b/x-pack/packages/kbn-cloud-security-posture/public/jest.config.js deleted file mode 100644 index 1c1a8c84561c1..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/public/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/kbn-cloud-security-posture/public'], -}; diff --git a/x-pack/packages/kbn-cloud-security-posture/public/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture/public/tsconfig.json deleted file mode 100644 index 8c950553c7cde..0000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/public/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/licensing-plugin", - "@kbn/data-views-plugin", - "@kbn/unified-search-plugin", - "@kbn/ui-actions-plugin", - "@kbn/field-formats-plugin", - "@kbn/data-view-field-editor-plugin", - "@kbn/data-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/charts-plugin", - "@kbn/discover-plugin", - "@kbn/fleet-plugin", - "@kbn/usage-collection-plugin", - "@kbn/share-plugin", - "@kbn/es-query", - "@kbn/cloud-plugin", - "@kbn/spaces-plugin", - "@kbn/kibana-react-plugin", - "@kbn/cloud-security-posture-common", - "@kbn/i18n", - "@kbn/search-types", - "@kbn/ui-theme", - "@kbn/i18n-react", - "@kbn/rison", - "@kbn/core-lifecycle-browser", - ] -} diff --git a/x-pack/packages/kbn-cloud-security-posture/storybook/config/babel_with_emotion.ts b/x-pack/packages/kbn-cloud-security-posture/storybook/config/babel_with_emotion.ts new file mode 100644 index 0000000000000..7512a5bba8737 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/storybook/config/babel_with_emotion.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import babelJest from 'babel-jest'; + +// eslint-disable-next-line import/no-default-export +export default babelJest.createTransformer({ + presets: [ + [ + require.resolve('@kbn/babel-preset/node_preset'), + { + '@babel/preset-env': { + // disable built-in filtering, which is more performant but strips the import of `regenerator-runtime` required by EUI + useBuiltIns: false, + corejs: false, + }, + }, + ], + ], + plugins: ['@emotion'], +}); diff --git a/x-pack/packages/kbn-data-forge/jest.config.js b/x-pack/packages/kbn-data-forge/jest.config.js deleted file mode 100644 index d1a6e79c73a62..0000000000000 --- a/x-pack/packages/kbn-data-forge/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-data-forge'], -}; diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh deleted file mode 100755 index 76221bba3ad34..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../ecs - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --include $ECS/fields/custom \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh deleted file mode 100755 index da992a32c79d6..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../ecs - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --include $ECS/fields/custom \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh deleted file mode 100755 index 8cfa4b8956f2b..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=admin_console - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh deleted file mode 100755 index dcbf7e9be9de7..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=heartbeat - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json - diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh deleted file mode 100755 index 8e2778b740f0d..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=message_processor - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --include $ECS/fields/custom \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json - diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh deleted file mode 100755 index af8cbb8ec6252..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=mongodb - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --include $ECS/fields/custom \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json - diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh deleted file mode 100755 index 151e98b97fed3..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=nginx_proxy - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json - diff --git a/x-pack/packages/kbn-data-forge/tsconfig.json b/x-pack/packages/kbn-data-forge/tsconfig.json deleted file mode 100644 index ba7e509700917..0000000000000 --- a/x-pack/packages/kbn-data-forge/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - "./src/**/*.json" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/tooling-log", - "@kbn/datemath", - "@kbn/safer-lodash-set", - "@kbn/dev-utils" - ] -} diff --git a/x-pack/packages/kbn-elastic-assistant-common/README.md b/x-pack/packages/kbn-elastic-assistant-common/README.md deleted file mode 100644 index 973bc975c7da6..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# @kbn/elastic-assistant-common - -This package provides common code consumed in both the browser, i.e. the -`packages/kbn-elastic-assistant` package and `plugins/security_solution` plugin, and on the server, i.e. the -`plugins/elastic_assistant` plugin. - -For example, the data anonymization functions exported by this package -are be used in both the browser, and on the server. - -## Maintainers - -Maintained by the Security Solution team - -## Running unit tests with code coverage - -To (interactively) run unit tests with code coverage, run the following command: - -```sh -cd $KIBANA_HOME && node scripts/jest --watch x-pack/packages/kbn-elastic-assistant-common --coverage -``` - -## OpenAPI Codegen - -Implemented using the new OpenAPI codegen and bundle packages: -* Includes OpenAPI codegen script and CI action as detailed in: https://github.com/elastic/kibana/pull/166269 -* Includes OpenAPI docs bundling script as detailed in: https://github.com/elastic/kibana/pull/171526 - -To run codegen/bundling locally, cd to `x-pack/packages/kbn-elastic-assistant-common/` and run any of the following commands: - -```bash -yarn openapi:generate -yarn openapi:generate:debug -yarn openapi:bundle -``` - -Codegen is configured to run on CI by means of the `.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh` script, which is run as part of the `checks` pipeline, and is registered in `.buildkite/scripts/steps/checks.sh`. diff --git a/x-pack/packages/kbn-elastic-assistant-common/env/README.md b/x-pack/packages/kbn-elastic-assistant-common/env/README.md deleted file mode 100644 index b90d83aaca812..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/env/README.md +++ /dev/null @@ -1,33 +0,0 @@ -With https://github.com/elastic/kibana/pull/186566, we've introduced a few sample `*.http` files for easier development/testing. These files are supported out of the box in JetBrains IDE's or in VSCode with the [httpyac](https://httpyac.github.io/) (and many other) extensions. Since the configuration for these files includes a `-` in the name, a few @elastic/kibana-operations files have been updated to exclude them from checks and being included in the distribution. - -You can read more about `http` files [here](https://www.jetbrains.com/help/webstorm/http-client-in-product-code-editor.html) and for the spec see this repo [here](https://github.com/JetBrains/http-request-in-editor-spec/blob/master/spec.md). If we find these useful, we could add support to our [OpenAPI Generator](https://openapi-generator.tech/docs/generators/jetbrains-http-client) to create these automatically. They currently live co-located next to the OAS and generated schema files here: - -``` -x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http -x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http -``` - -and the main config here in this directory: - -``` -x-pack/packages/kbn-elastic-assistant-common/env/http-client.env.json -``` - -The `x-pack/packages/kbn-elastic-assistant-common/.gitignore` has been updated to ignore `http-client.private.env.json` files locally, which is how you can override the config as you'd like. This is helpful to add variables like `basePath` as below: - -``` -{ - "dev": { - "basePath": "/kbn" - } -} -``` - -To use them, just open the corresponding `*.http` for the API you want to test, and click `Send`, and the response will open in another tab. Here is what that looks like for creating one of the new `IndexEntry` KB documents that have been introduced in the initial PR: - -<p align="center"> - <img width="500" src="https://github.com/user-attachments/assets/c9e70d1a-28d2-4eb3-9853-ab6d8e1c7acf" /> -</p> - - -For continuing this effort, https://github.com/elastic/kibana/issues/192386 has been created. diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/README.md b/x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/README.md deleted file mode 100644 index 5a471245e0449..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/README.md +++ /dev/null @@ -1,51 +0,0 @@ -### Feature Capabilities - -Feature capabilities are an object describing specific capabilities of the assistant, like whether a feature like streaming is enabled, and are defined in the sibling `./index.ts` file within this `kbn-elastic-assistant-common` package. These capabilities can be registered for a given plugin through the assistant server, and so do not need to be plumbed through the `ElasticAssistantProvider`. - -Storage and accessor functions are made available via the `AppContextService`, and exposed to clients via the`/internal/elastic_assistant/capabilities` route, which can be fetched by clients using the `useCapabilities()` UI hook. - -### Registering Capabilities - -To register a capability on plugin start, add the following in the consuming plugin's `start()`, specifying any number of capabilities you would like to explicitly declare: - -```ts -plugins.elasticAssistant.registerFeatures(APP_UI_ID, { - assistantModelEvaluation: config.experimentalFeatures.assistantModelEvaluation, - assistantStreamingEnabled: config.experimentalFeatures.assistantStreamingEnabled, -}); -``` - -### Declaring Feature Capabilities -Default feature capabilities are declared in `x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts`: - -```ts -export type AssistantFeatures = { [K in keyof typeof defaultAssistantFeatures]: boolean }; - -export const defaultAssistantFeatures = Object.freeze({ - assistantModelEvaluation: false, - assistantStreamingEnabled: false, -}); -``` - -### Using Capabilities Client Side -Capabilities can be fetched client side using the `useCapabilities()` hook ala: - -```ts -const { data: capabilities } = useCapabilities({ http, toasts }); -const { assistantModelEvaluation: modelEvaluatorEnabled, assistantStreamingEnabled } = capabilities ?? defaultAssistantFeatures; -``` - -### Using Capabilities Server Side -Or server side within a route (or elsewhere) via the `assistantContext`: - -```ts -const assistantContext = await context.elasticAssistant; -const pluginName = getPluginNameFromRequest({ request, logger }); -const registeredFeatures = assistantContext.getRegisteredFeatures(pluginName); -if (!registeredFeatures.assistantModelEvaluation) { - return response.notFound(); -} -``` - -> [!NOTE] -> Note, just as with [registering arbitrary tools](https://github.com/elastic/kibana/pull/172234), features are registered for a specific plugin, where the plugin name that corresponds to your application is defined in the `x-kbn-context` header of requests made from your application, which may be different than your plugin's registered `APP_ID`. diff --git a/x-pack/packages/kbn-elastic-assistant-common/jest.config.js b/x-pack/packages/kbn-elastic-assistant-common/jest.config.js deleted file mode 100644 index 1da38998cc4d2..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/jest.config.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_elastic_assistant_common_impl', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/**/*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/*mock*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/*.test.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/*.d.ts', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/*.config.ts', - ], - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-elastic-assistant-common'], -}; diff --git a/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/bundle.js b/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/bundle.js deleted file mode 100644 index b06776be03a4b..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/bundle.js +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -require('../../../../../src/setup_node_env'); -const { bundle } = require('@kbn/openapi-bundler'); -// eslint-disable-next-line import/no-nodejs-modules -const { join, resolve } = require('path'); - -const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); - -(async () => { - await bundle({ - sourceGlob: join(ELASTIC_ASSISTANT_ROOT, 'impl/schemas/**/*.schema.yaml'), - outputFilePath: join( - ELASTIC_ASSISTANT_ROOT, - 'docs/openapi/serverless/elastic_assistant_api_{version}.bundled.schema.yaml' - ), - options: { - includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security AI Assistant API (Elastic Cloud Serverless)', - description: 'Manage and interact with Security Assistant resources.', - }, - tags: [ - { - name: 'Security AI Assistant API', - 'x-displayName': 'Security AI assistant', - description: 'Manage and interact with Security Assistant resources.', - }, - ], - }, - }, - }); - - await bundle({ - sourceGlob: join(ELASTIC_ASSISTANT_ROOT, 'impl/schemas/**/*.schema.yaml'), - outputFilePath: join( - ELASTIC_ASSISTANT_ROOT, - 'docs/openapi/ess/elastic_assistant_api_{version}.bundled.schema.yaml' - ), - options: { - includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security AI Assistant API (Elastic Cloud & self-hosted)', - description: 'Manage and interact with Security Assistant resources.', - }, - tags: [ - { - name: 'Security AI Assistant API', - 'x-displayName': 'Security AI assistant', - description: 'Manage and interact with Security Assistant resources.', - }, - ], - }, - }, - }); -})(); diff --git a/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/generate.js b/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/generate.js deleted file mode 100644 index dd17ecef2fb31..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/generate.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -require('../../../../../src/setup_node_env'); -const { generate } = require('@kbn/openapi-generator'); -// eslint-disable-next-line import/no-nodejs-modules -const { resolve } = require('path'); - -const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); - -generate({ - rootDir: ELASTIC_ASSISTANT_ROOT, - sourceGlob: './impl/schemas/**/*.schema.yaml', - templateName: 'zod_operation_schema', -}); diff --git a/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json b/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json deleted file mode 100644 index b9f4da3d1f1dc..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/zod-helpers", - "@kbn/securitysolution-io-ts-utils", - "@kbn/core", - "@kbn/logging", - "@kbn/zod", - ] -} diff --git a/x-pack/packages/kbn-elastic-assistant/README.md b/x-pack/packages/kbn-elastic-assistant/README.md deleted file mode 100644 index 0d0a848e536c7..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# @kbn/elastic-assistant - -The `Elastic Assistant` is a user interface for interacting with generative AIs, like `ChatGPT`. - -This package provides: - -- Components for rendering the `Elastic Assistant` -- Hooks for passing context (for example, fields in an alert) to the `Elastic Assistant`, enabling users to include this content in their queries - -## Maintainers - -Maintained by the Security Solution team - -## Running unit tests with code coverage - -To (interactively) run unit tests with code coverage, run the following command: - -```sh -cd $KIBANA_HOME && node scripts/jest --watch x-pack/packages/kbn-elastic-assistant --coverage -``` diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx deleted file mode 100644 index 7e87ca79e88ab..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { act, renderHook } from '@testing-library/react-hooks'; - -import { - DeleteConversationParams, - GetConversationByIdParams, - deleteConversation, - getConversationById, -} from './conversations'; -import { HttpSetupMock } from '@kbn/core-http-browser-mocks'; -import { coreMock } from '@kbn/core/public/mocks'; - -let http: HttpSetupMock = coreMock.createSetup().http; - -const toasts = { - addError: jest.fn(), -}; - -describe('conversations api', () => { - beforeEach(() => { - jest.clearAllMocks(); - http = coreMock.createSetup().http; - }); - - it('should call api to delete conversation', async () => { - await act(async () => { - const deleteProps = { http, toasts, id: 'test' } as unknown as DeleteConversationParams; - - const { waitForNextUpdate } = renderHook(() => deleteConversation(deleteProps)); - await waitForNextUpdate(); - - expect(deleteProps.http.fetch).toHaveBeenCalledWith( - '/api/security_ai_assistant/current_user/conversations/test', - { - method: 'DELETE', - signal: undefined, - version: '2023-10-31', - } - ); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - - it('should display error toast when delete api throws error', async () => { - http.fetch.mockRejectedValue(new Error('this is an error')); - const deleteProps = { http, toasts, id: 'test' } as unknown as DeleteConversationParams; - - await expect(deleteConversation(deleteProps)).rejects.toThrowError('this is an error'); - expect(toasts.addError).toHaveBeenCalled(); - }); - - it('should call api to get conversation', async () => { - await act(async () => { - const getProps = { http, toasts, id: 'test' } as unknown as GetConversationByIdParams; - const { waitForNextUpdate } = renderHook(() => getConversationById(getProps)); - await waitForNextUpdate(); - - expect(getProps.http.fetch).toHaveBeenCalledWith( - '/api/security_ai_assistant/current_user/conversations/test', - { - method: 'GET', - signal: undefined, - version: '2023-10-31', - } - ); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - - it('should display error toast when get api throws error', async () => { - http.fetch.mockRejectedValue(new Error('this is an error')); - const getProps = { http, toasts, id: 'test' } as unknown as GetConversationByIdParams; - - await expect(getConversationById(getProps)).rejects.toThrowError('this is an error'); - expect(toasts.addError).toHaveBeenCalled(); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx deleted file mode 100644 index 83073b5770ba0..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { act, renderHook } from '@testing-library/react-hooks'; -import { useKnowledgeBaseStatus, UseKnowledgeBaseStatusParams } from './use_knowledge_base_status'; -import { getKnowledgeBaseStatus as _getKnowledgeBaseStatus } from './api'; - -const getKnowledgeBaseStatusMock = _getKnowledgeBaseStatus as jest.Mock; - -jest.mock('./api', () => { - const actual = jest.requireActual('./api'); - return { - ...actual, - getKnowledgeBaseStatus: jest.fn((...args) => actual.getKnowledgeBaseStatus(...args)), - }; -}); - -jest.mock('@tanstack/react-query', () => ({ - useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { - try { - const res = await fn({}); - return Promise.resolve(res); - } catch (e) { - opts.onError(e); - } - }), -})); - -const statusResponse = { - elser_exists: true, - index_exists: true, - pipeline_exists: true, - security_labs_exists: true, -}; - -const http = { - fetch: jest.fn().mockResolvedValue(statusResponse), -}; -const toasts = { - addError: jest.fn(), -}; -const defaultProps = { http, toasts } as unknown as UseKnowledgeBaseStatusParams; -describe('useKnowledgeBaseStatus', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - it('should call api to get knowledge base status without resource arg', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseStatus(defaultProps)); - await waitForNextUpdate(); - - expect(defaultProps.http.fetch).toHaveBeenCalledWith( - '/internal/elastic_assistant/knowledge_base/', - { - method: 'GET', - signal: undefined, - version: '1', - } - ); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - it('should call api to get knowledge base status with resource arg', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => - useKnowledgeBaseStatus({ ...defaultProps, resource: 'something' }) - ); - await waitForNextUpdate(); - - expect(defaultProps.http.fetch).toHaveBeenCalledWith( - '/internal/elastic_assistant/knowledge_base/something', - { - method: 'GET', - signal: undefined, - version: '1', - } - ); - }); - }); - - it('should return status response', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useKnowledgeBaseStatus(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual(statusResponse); - }); - }); - - it('should display error toast when api throws error', async () => { - getKnowledgeBaseStatusMock.mockRejectedValue(new Error('this is an error')); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseStatus(defaultProps)); - await waitForNextUpdate(); - - expect(toasts.addError).toHaveBeenCalled(); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx deleted file mode 100644 index 0c66b412fc5d2..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { ReactNode } from 'react'; - -export interface AssistantAvatarProps { - size?: keyof typeof sizeMap; - // Required for EuiAvatar `iconType` prop - // eslint-disable-next-line react/no-unused-prop-types - children?: ReactNode; - className?: string; -} - -export const sizeMap = { - xl: 64, - l: 48, - m: 32, - s: 24, - xs: 16, - xxs: 12, -}; - -/** - * Default Elastic AI Assistant logo - * - * TODO: Can be removed once added to EUI - */ -export const AssistantAvatar = ({ className, size = 's' }: AssistantAvatarProps) => ( - <svg - className={className} - xmlns="http://www.w3.org/2000/svg" - width={sizeMap[size]} - height={sizeMap[size]} - viewBox="0 0 64 64" - fill="none" - > - <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> - <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> - <path - fill="#343741" - d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" - /> - <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> - </svg> -); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx deleted file mode 100644 index b9457e5cfea68..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback, useEffect, useRef, useState } from 'react'; -import { EuiFlyoutResizable } from '@elastic/eui'; - -import useEvent from 'react-use/lib/useEvent'; -import { css } from '@emotion/react'; -// eslint-disable-next-line @kbn/eslint/module_migration -import { createGlobalStyle } from 'styled-components'; -import { ShowAssistantOverlayProps, useAssistantContext } from '../../assistant_context'; -import { Assistant, CONVERSATION_SIDE_PANEL_WIDTH } from '..'; - -const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0; - -/** - * Modal container for Elastic AI Assistant conversations, receiving the page contents as context, plus whatever - * component currently has focus and any specific context it may provide through the SAssInterface. - */ - -export const UnifiedTimelineGlobalStyles = createGlobalStyle` - body:has(.timeline-portal-overlay-mask) .euiOverlayMask { - z-index: 1003 !important; - } -`; - -export const AssistantOverlay = React.memo(() => { - const [isModalVisible, setIsModalVisible] = useState(false); - // Why is this named Title and not Id? - const [conversationTitle, setConversationTitle] = useState<string | undefined>(undefined); - const [promptContextId, setPromptContextId] = useState<string | undefined>(); - const { assistantTelemetry, setShowAssistantOverlay, getLastConversationId } = - useAssistantContext(); - - const [chatHistoryVisible, setChatHistoryVisible] = useState(false); - - // Bind `showAssistantOverlay` in SecurityAssistantContext to this modal instance - const showOverlay = useCallback( - () => - ({ - showOverlay: so, - promptContextId: pid, - conversationTitle: cTitle, - }: ShowAssistantOverlayProps) => { - const conversationId = getLastConversationId(cTitle); - if (so) assistantTelemetry?.reportAssistantInvoked({ conversationId, invokedBy: 'click' }); - - setIsModalVisible(so); - setPromptContextId(pid); - setConversationTitle(conversationId); - }, - [assistantTelemetry, getLastConversationId] - ); - useEffect(() => { - setShowAssistantOverlay(showOverlay); - }, [setShowAssistantOverlay, showOverlay]); - - // Called whenever platform specific shortcut for assistant is pressed - const handleShortcutPress = useCallback(() => { - // Try to restore the last conversation on shortcut pressed - if (!isModalVisible) { - setConversationTitle(getLastConversationId()); - assistantTelemetry?.reportAssistantInvoked({ - invokedBy: 'shortcut', - conversationId: getLastConversationId(), - }); - } - - setIsModalVisible(!isModalVisible); - }, [isModalVisible, getLastConversationId, assistantTelemetry]); - - // Register keyboard listener to show the modal when cmd + ; is pressed - const onKeyDown = useCallback( - (event: KeyboardEvent) => { - if (event.key === ';' && (isMac ? event.metaKey : event.ctrlKey)) { - event.preventDefault(); - handleShortcutPress(); - } - }, - [handleShortcutPress] - ); - useEvent('keydown', onKeyDown); - - // Modal control functions - const cleanupAndCloseModal = useCallback(() => { - setIsModalVisible(false); - setPromptContextId(undefined); - setConversationTitle(conversationTitle); - }, [conversationTitle]); - - const handleCloseModal = useCallback(() => { - cleanupAndCloseModal(); - }, [cleanupAndCloseModal]); - - const toggleChatHistory = useCallback(() => { - setChatHistoryVisible((prev) => { - if (flyoutRef?.current) { - const currentValue = parseInt(flyoutRef.current.style.inlineSize.split('px')[0], 10); - flyoutRef.current.style.inlineSize = `${ - prev - ? currentValue - CONVERSATION_SIDE_PANEL_WIDTH - : currentValue + CONVERSATION_SIDE_PANEL_WIDTH - }px`; - } - - return !prev; - }); - }, []); - - const flyoutRef = useRef<HTMLDivElement>(); - - if (!isModalVisible) return null; - - return ( - <> - <EuiFlyoutResizable - ref={flyoutRef} - css={css` - max-inline-size: calc(100% - 20px); - min-inline-size: 400px; - > div { - height: 100%; - } - `} - onClose={handleCloseModal} - data-test-subj="ai-assistant-flyout" - paddingSize="none" - hideCloseButton - > - <Assistant - conversationTitle={conversationTitle} - promptContextId={promptContextId} - onCloseFlyout={handleCloseModal} - chatHistoryVisible={chatHistoryVisible} - setChatHistoryVisible={toggleChatHistory} - /> - </EuiFlyoutResizable> - <UnifiedTimelineGlobalStyles /> - </> - ); -}); - -AssistantOverlay.displayName = 'AssistantOverlay'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts deleted file mode 100644 index 233e45049333c..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Replacements } from '@kbn/elastic-assistant-common'; -import { FindAnonymizationFieldsResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen'; -import type { ReactNode } from 'react'; - -/** - * helps the Elastic AI Assistant display the most relevant user prompts - */ -export type PromptContextCategory = - | 'alert' - | 'alerts' - | 'event' - | 'events' - | 'data-quality-index-summary' - | string; - -/** - * This interface is used to pass context to the Elastic AI Assistant, - * for the purpose of building prompts. Examples of context include: - * - a single alert - * - multiple alerts - * - a single event - * - multiple events - * - markdown - * - csv - * - anything else that the LLM can interpret - */ -export interface PromptContext { - /** - * The category of data, e.g. `alert | alerts | event | events | string` - * - * `category` helps the Elastic AI Assistant display the most relevant user prompts - */ - category: PromptContextCategory; - - /** - * The Elastic AI Assistant will display this **short**, static description - * in the context pill - */ - description: string; - - /** - * The Elastic AI Assistant will invoke this function to retrieve the context data, - * which will be included in a prompt (e.g. the contents of an alert or an event) - */ - getPromptContext: () => Promise<string> | Promise<Record<string, string[]>>; - - /** - * A unique identifier for this prompt context - */ - id: string; - - /** - * Replacements associated with the context, i.e. replacements for an attack discovery provided as context - */ - replacements?: Replacements; - - /** - * An optional user prompt that's filled in, but not sent, when the Elastic AI Assistant opens - */ - suggestedUserPrompt?: string; - - /** - * The Elastic AI Assistant will display this tooltip when the user hovers over the context pill - */ - tooltip: ReactNode; -} - -/** - * A prompt context that was added from the pills to the current conversation, but not yet sent - */ -export interface SelectedPromptContext { - /** anonymization fields to be included in a conversation */ - contextAnonymizationFields?: FindAnonymizationFieldsResponse; - /** unique id of the selected `PromptContext` */ - promptContextId: string; - /** this data is not anonymized */ - rawData: string | Record<string, string[]>; - /** replacements associated with the context, i.e. replacements for an attack discovery provided as context */ - replacements?: Replacements; -} - -/** - * This interface is used to pass a default or base set of contexts to the Elastic AI Assistant when - * initializing it. This is used to provide 'category' options when users create Quick Prompts. - * Also, useful for collating all of a solutions' prompts in one place. - * - * e.g. see Security Solution's x-pack/plugins/security_solution/public/assistant/prompt_contexts/index.tsx - */ -export type PromptContextTemplate = Omit<PromptContext, 'id' | 'getPromptContext'>; - -export type UnRegisterPromptContext = (promptContextId: string) => void; - -export type RegisterPromptContext = (promptContext: PromptContext) => void; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx deleted file mode 100644 index e3a6ab1fc75b5..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { act, renderHook } from '@testing-library/react-hooks'; - -import { DEFAULT_LATEST_ALERTS } from '../../../assistant_context/constants'; -import { alertConvo, welcomeConvo } from '../../../mock/conversation'; -import { useSettingsUpdater } from './use_settings_updater'; -import { defaultQuickPrompt, mockSystemPrompt } from '../../../mock/system_prompt'; -import { HttpSetup } from '@kbn/core/public'; -import { PromptResponse } from '@kbn/elastic-assistant-common'; - -const mockConversations = { - [alertConvo.title]: alertConvo, - [welcomeConvo.title]: welcomeConvo, -}; -const conversationsLoaded = false; -const promptsLoaded = false; - -const mockHttp = { - fetch: jest.fn(), -} as unknown as HttpSetup; - -const mockSystemPrompts: PromptResponse[] = [mockSystemPrompt]; -const mockQuickPrompts: PromptResponse[] = [defaultQuickPrompt]; - -const anonymizationFields = { - total: 2, - page: 1, - perPage: 1000, - data: [ - { id: 'allow1', field: 'allow1', allowed: true, anonymized: false }, - { id: 'replacement1', field: 'replacement1', allowed: false, anonymized: true }, - ], -}; - -const setAssistantStreamingEnabled = jest.fn(); -const setKnowledgeBaseMock = jest.fn(); -const reportAssistantSettingToggled = jest.fn(); -const setUpdatedAnonymizationData = jest.fn(); -const mockValues = { - assistantStreamingEnabled: true, - setAssistantStreamingEnabled, - assistantTelemetry: { reportAssistantSettingToggled }, - allSystemPrompts: mockSystemPrompts, - allQuickPrompts: mockQuickPrompts, - knowledgeBase: { - latestAlerts: DEFAULT_LATEST_ALERTS, - }, - baseConversations: {}, - setKnowledgeBase: setKnowledgeBaseMock, - http: mockHttp, - anonymizationFieldsBulkActions: {}, -}; - -const updatedValues = { - conversations: { ...mockConversations }, - allSystemPrompts: [mockSystemPrompt], - allQuickPrompts: [ - { - consumer: 'securitySolutionUI', - content: - 'You are a helpful, expert assistant who answers questions about Elastic Security. Do not answer questions unrelated to Elastic Security.\nIf you answer a question related to KQL or EQL, it should be immediately usable within an Elastic Security timeline; please always format the output correctly with back ticks. Any answer provided for Query DSL should also be usable in a security timeline. This means you should only ever include the "filter" portion of the query.\nUse the following context to answer questions:', - id: 'default-system-prompt', - name: 'Default system prompt', - promptType: 'quick', - color: 'red', - }, - ], - updatedAnonymizationData: { - total: 2, - page: 1, - perPage: 1000, - data: [ - { id: 'allow2', field: 'allow2', allowed: true, anonymized: false }, - { id: 'replacement2', field: 'replacement2', allowed: false, anonymized: true }, - ], - }, - knowledgeBase: { - latestAlerts: DEFAULT_LATEST_ALERTS + 10, - }, - assistantStreamingEnabled: false, -}; - -jest.mock('../../../assistant_context', () => { - const original = jest.requireActual('../../../assistant_context'); - return { - ...original, - useAssistantContext: jest.fn().mockImplementation(() => mockValues), - }; -}); - -describe('useSettingsUpdater', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - it('should set all state variables to their initial values when resetSettings is called', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: [...mockSystemPrompts, ...mockQuickPrompts], - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { - setConversationSettings, - setConversationsSettingsBulkActions, - setUpdatedKnowledgeBaseSettings, - setUpdatedAssistantStreamingEnabled, - resetSettings, - setPromptsBulkActions, - } = result.current; - - setConversationSettings(updatedValues.conversations); - setConversationsSettingsBulkActions({}); - setPromptsBulkActions({}); - setUpdatedAnonymizationData(updatedValues.updatedAnonymizationData); - setUpdatedKnowledgeBaseSettings(updatedValues.knowledgeBase); - setUpdatedAssistantStreamingEnabled(updatedValues.assistantStreamingEnabled); - - expect(result.current.conversationSettings).toEqual(updatedValues.conversations); - expect(result.current.quickPromptSettings).toEqual(updatedValues.allQuickPrompts); - expect(result.current.systemPromptSettings).toEqual(updatedValues.allSystemPrompts); - expect(result.current.updatedAnonymizationData).toEqual(anonymizationFields); - expect(result.current.knowledgeBase).toEqual(updatedValues.knowledgeBase); - expect(result.current.assistantStreamingEnabled).toEqual( - updatedValues.assistantStreamingEnabled - ); - - resetSettings(); - - expect(result.current.conversationSettings).toEqual(mockConversations); - expect(result.current.quickPromptSettings).toEqual(mockValues.allQuickPrompts); - expect(result.current.systemPromptSettings).toEqual(mockValues.allSystemPrompts); - expect(result.current.anonymizationFieldsBulkActions).toEqual( - mockValues.anonymizationFieldsBulkActions - ); - expect(result.current.knowledgeBase).toEqual(mockValues.knowledgeBase); - expect(result.current.assistantStreamingEnabled).toEqual( - mockValues.assistantStreamingEnabled - ); - }); - }); - - it('should update all state variables to their updated values when saveSettings is called', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: mockSystemPrompts, - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { - setConversationSettings, - setConversationsSettingsBulkActions, - setAnonymizationFieldsBulkActions, - setUpdatedKnowledgeBaseSettings, - setPromptsBulkActions, - } = result.current; - - setConversationSettings(updatedValues.conversations); - setConversationsSettingsBulkActions({ delete: { ids: ['1'] } }); - setAnonymizationFieldsBulkActions({ delete: { ids: ['1'] } }); - setPromptsBulkActions({}); - setUpdatedAnonymizationData(updatedValues.updatedAnonymizationData); - setUpdatedKnowledgeBaseSettings(updatedValues.knowledgeBase); - - await result.current.saveSettings(); - - expect(mockHttp.fetch).toHaveBeenCalledWith( - '/internal/elastic_assistant/current_user/conversations/_bulk_action', - { - method: 'POST', - version: '1', - body: '{"delete":{"ids":["1"]}}', - } - ); - expect(setUpdatedAnonymizationData).toHaveBeenCalledWith( - updatedValues.updatedAnonymizationData - ); - expect(setKnowledgeBaseMock).toHaveBeenCalledWith(updatedValues.knowledgeBase); - }); - }); - it('should track when alerts count is updated', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: mockSystemPrompts, - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { setUpdatedKnowledgeBaseSettings } = result.current; - - setUpdatedKnowledgeBaseSettings({ - ...updatedValues.knowledgeBase, - }); - await result.current.saveSettings(); - expect(reportAssistantSettingToggled).toHaveBeenCalledWith({ alertsCountUpdated: true }); - }); - }); - it('should track when streaming is updated', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: mockSystemPrompts, - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { setUpdatedAssistantStreamingEnabled } = result.current; - - setUpdatedAssistantStreamingEnabled(false); - await result.current.saveSettings(); - expect(reportAssistantSettingToggled).toHaveBeenCalledWith({ - assistantStreamingEnabled: false, - }); - }); - }); - it('if no settings update, do not track anything', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: mockSystemPrompts, - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { setUpdatedKnowledgeBaseSettings } = result.current; - - setUpdatedKnowledgeBaseSettings(mockValues.knowledgeBase); - await result.current.saveSettings(); - expect(reportAssistantSettingToggled).not.toHaveBeenCalledWith(); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx deleted file mode 100644 index 780ffcbd9a323..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { act, renderHook } from '@testing-library/react-hooks'; -import { DefinedUseQueryResult } from '@tanstack/react-query'; - -import { useAssistantOverlay } from '.'; -import { waitFor } from '@testing-library/react'; -import { useFetchCurrentUserConversations } from '../api'; -import { Conversation } from '../../assistant_context/types'; -import { mockConnectors } from '../../mock/connectors'; - -const mockUseAssistantContext = { - registerPromptContext: jest.fn(), - showAssistantOverlay: jest.fn(), - unRegisterPromptContext: jest.fn(), -}; -jest.mock('../../assistant_context', () => { - const original = jest.requireActual('../../assistant_context'); - - return { - ...original, - useAssistantContext: () => mockUseAssistantContext, - }; -}); -jest.mock('../api/conversations/use_fetch_current_user_conversations'); -const mockCreateConversation = jest.fn().mockResolvedValue({ id: 'conversation-id' }); -jest.mock('../use_conversation', () => { - return { - useConversation: jest.fn(() => ({ - createConversation: mockCreateConversation, - currentConversation: { id: 'conversation-id' }, - })), - }; -}); - -jest.mock('../../connectorland/helpers'); -jest.mock('../../connectorland/use_load_connectors', () => { - return { - useLoadConnectors: jest.fn(() => ({ - data: mockConnectors, - error: null, - isSuccess: true, - })), - }; -}); - -const mockData = { - welcome_id: { - id: 'welcome_id', - title: 'Welcome', - category: 'assistant', - messages: [], - apiConfig: { connectorId: '123' }, - replacements: {}, - }, - electric_sheep_id: { - id: 'electric_sheep_id', - category: 'assistant', - title: 'electric sheep', - messages: [], - apiConfig: { connectorId: '123' }, - replacements: {}, - }, -}; - -describe('useAssistantOverlay', () => { - beforeEach(() => { - jest.clearAllMocks(); - jest.mocked(useFetchCurrentUserConversations).mockReturnValue({ - data: mockData, - isLoading: false, - refetch: jest.fn().mockResolvedValue({ - isLoading: false, - data: { - ...mockData, - welcome_id: { - ...mockData.welcome_id, - apiConfig: { newProp: true }, - }, - }, - }), - isFetched: true, - } as unknown as DefinedUseQueryResult<Record<string, Conversation>, unknown>); - }); - - it('calls registerPromptContext with the expected context', async () => { - const category = 'event'; - const description = 'test description'; - const getPromptContext = jest.fn(() => Promise.resolve('test data')); - const id = 'test-id'; - const suggestedUserPrompt = 'test user prompt'; - const tooltip = 'test tooltip'; - const isAssistantAvailable = true; - - renderHook(() => - useAssistantOverlay( - category, - null, - description, - getPromptContext, - id, - suggestedUserPrompt, - tooltip, - isAssistantAvailable - ) - ); - - await waitFor(() => { - expect(mockUseAssistantContext.registerPromptContext).toHaveBeenCalledWith({ - category, - description, - getPromptContext, - id, - suggestedUserPrompt, - tooltip, - }); - }); - }); - - it('calls unRegisterPromptContext on unmount', () => { - const isAssistantAvailable = true; - const { unmount } = renderHook(() => - useAssistantOverlay( - 'event', - null, - 'description', - () => Promise.resolve('data'), - 'id', - null, - 'tooltip', - isAssistantAvailable - ) - ); - - unmount(); - - expect(mockUseAssistantContext.unRegisterPromptContext).toHaveBeenCalledWith('id'); - }); - - it('calls `showAssistantOverlay` from the assistant context', () => { - const isAssistantAvailable = true; - const { result } = renderHook(() => - useAssistantOverlay( - 'event', - 'conversation-id', - 'description', - () => Promise.resolve('data'), - 'id', - null, - 'tooltip', - isAssistantAvailable - ) - ); - - act(() => { - result.current.showAssistantOverlay(true); - }); - - expect(mockCreateConversation).not.toHaveBeenCalled(); - expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ - showOverlay: true, - promptContextId: 'id', - conversationTitle: 'conversation-id', - }); - }); - - it('calls `showAssistantOverlay` and creates a new conversation when shouldCreateConversation: true and the conversation does not exist', async () => { - const isAssistantAvailable = true; - const { result } = renderHook(() => - useAssistantOverlay( - 'event', - 'conversation-id', - 'description', - () => Promise.resolve('data'), - 'id', - null, - 'tooltip', - isAssistantAvailable - ) - ); - - act(() => { - result.current.showAssistantOverlay(true, true); - }); - - expect(mockCreateConversation).toHaveBeenCalledWith({ - title: 'conversation-id', - apiConfig: { - actionTypeId: '.gen-ai', - connectorId: 'connectorId', - }, - category: 'assistant', - }); - - await waitFor(() => { - expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ - showOverlay: true, - promptContextId: 'id', - conversationTitle: 'conversation-id', - }); - }); - }); - - it('calls `showAssistantOverlay` and does not create a new conversation when shouldCreateConversation: true and the conversation exists', async () => { - const isAssistantAvailable = true; - const { result } = renderHook(() => - useAssistantOverlay( - 'event', - 'electric sheep', - 'description', - () => Promise.resolve('data'), - 'id', - null, - 'tooltip', - isAssistantAvailable - ) - ); - - act(() => { - result.current.showAssistantOverlay(true, true); - }); - - expect(mockCreateConversation).not.toHaveBeenCalled(); - - await waitFor(() => { - expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ - showOverlay: true, - promptContextId: 'id', - conversationTitle: 'electric sheep', - }); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx deleted file mode 100644 index 696a2e41b37c2..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useConversation } from '.'; -import { act, renderHook } from '@testing-library/react-hooks'; -import { TestProviders } from '../../mock/test_providers/test_providers'; -import React from 'react'; -import { MessageRole } from '@kbn/elastic-assistant-common'; -import { httpServiceMock } from '@kbn/core/public/mocks'; -import { WELCOME_CONVERSATION } from './sample_conversations'; -import { - deleteConversation, - getConversationById as _getConversationById, - createConversation as _createConversationApi, -} from '../api/conversations'; - -jest.mock('../api/conversations'); -const message = { - content: 'You are a robot', - role: 'user' as MessageRole, - timestamp: '10/04/2023, 1:00:36 PM', -}; -const anotherMessage = { - content: 'I am a robot', - role: 'assistant' as MessageRole, - timestamp: '10/04/2023, 1:00:46 PM', -}; - -const mockConvo = { - id: 'new-convo', - title: 'new-convo', - messages: [message, anotherMessage], - apiConfig: { - connectorId: '123', - actionTypeId: '.gen-ai', - defaultSystemPromptId: 'default-system-prompt', - }, -}; - -const getConversationById = _getConversationById as jest.Mock; -const createConversation = _createConversationApi as jest.Mock; - -describe('useConversation', () => { - let httpMock: ReturnType<typeof httpServiceMock.createSetupContract>; - - beforeEach(() => { - httpMock = httpServiceMock.createSetupContract(); - - jest.clearAllMocks(); - }); - - it('should create a new conversation when called with valid conversationId and message', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useConversation(), { - wrapper: ({ children }: React.PropsWithChildren<{}>) => ( - <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> - ), - }); - await waitForNextUpdate(); - createConversation.mockResolvedValue(mockConvo); - - const createResult = await result.current.createConversation({ - ...mockConvo, - replacements: {}, - title: mockConvo.title, - category: 'assistant', - }); - - expect(createResult).toEqual(mockConvo); - }); - }); - - it('should delete an existing conversation when called with valid conversationId', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useConversation(), { - wrapper: ({ children }: React.PropsWithChildren<{}>) => ( - <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> - ), - }); - await waitForNextUpdate(); - - await result.current.deleteConversation('new-convo'); - - expect(deleteConversation).toHaveBeenCalledWith({ - http: httpMock, - id: 'new-convo', - }); - }); - }); - - it('should update the apiConfig for an existing conversation when called with a valid conversationId and apiConfig', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useConversation(), { - wrapper: ({ children }: React.PropsWithChildren<{}>) => ( - <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> - ), - }); - await waitForNextUpdate(); - - await result.current.setApiConfig({ - conversation: WELCOME_CONVERSATION, - apiConfig: mockConvo.apiConfig, - }); - - expect(createConversation).toHaveBeenCalledWith({ - http: httpMock, - conversation: { ...WELCOME_CONVERSATION, apiConfig: mockConvo.apiConfig, id: '' }, - }); - }); - }); - - it('should remove the last message from a conversation when called with valid conversationId', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useConversation(), { - wrapper: ({ children }: React.PropsWithChildren<{}>) => ( - <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> - ), - }); - await waitForNextUpdate(); - - getConversationById.mockResolvedValue(mockConvo); - - const removeResult = await result.current.removeLastMessage('new-convo'); - - expect(removeResult).toEqual([message]); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx deleted file mode 100644 index 0f04068a89ca2..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx +++ /dev/null @@ -1,376 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { renderHook, act } from '@testing-library/react-hooks'; -import { useCurrentConversation, Props } from '.'; -import { useConversation } from '../use_conversation'; -import deepEqual from 'fast-deep-equal'; -import { Conversation } from '../../..'; -import { find } from 'lodash'; - -// Mock dependencies -jest.mock('../use_conversation'); -jest.mock('../helpers'); -jest.mock('fast-deep-equal'); -jest.mock('lodash'); -const mockData = { - welcome_id: { - id: 'welcome_id', - title: 'Welcome', - category: 'assistant', - messages: [], - apiConfig: { - connectorId: '123', - actionTypeId: '.gen-ai', - defaultSystemPromptId: 'system-prompt-id', - }, - replacements: {}, - }, - electric_sheep_id: { - id: 'electric_sheep_id', - category: 'assistant', - title: 'electric sheep', - messages: [], - apiConfig: { connectorId: '123', actionTypeId: '.gen-ai' }, - replacements: {}, - }, -}; -describe('useCurrentConversation', () => { - const mockUseConversation = { - createConversation: jest.fn(), - deleteConversation: jest.fn(), - getConversation: jest.fn(), - getDefaultConversation: jest.fn(), - setApiConfig: jest.fn(), - }; - - beforeEach(() => { - jest.clearAllMocks(); - (useConversation as jest.Mock).mockReturnValue(mockUseConversation); - (deepEqual as jest.Mock).mockReturnValue(false); - (find as jest.Mock).mockReturnValue(undefined); - }); - - const defaultProps: Props = { - // @ts-ignore not exact system prompt type, ok for test - allSystemPrompts: [{ id: 'system-prompt-id' }, { id: 'something-crazy' }], - conversationId: '', - conversations: {}, - mayUpdateConversations: true, - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ data: mockData }), - }; - - const setupHook = (props: Partial<Props> = {}) => { - return renderHook(() => useCurrentConversation({ ...defaultProps, ...props })); - }; - - it('should initialize with correct default values', () => { - const { result } = setupHook(); - - expect(result.current.currentConversation).toBeUndefined(); - expect(result.current.currentSystemPrompt).toBeUndefined(); - }); - - it('should set the current system prompt ID when the prompt selection changes', async () => { - const conversationId = 'welcome_id'; - const conversation = mockData.welcome_id; - mockUseConversation.getConversation.mockResolvedValue(conversation); - - const { result } = setupHook({ - conversationId, - conversations: { [conversationId]: conversation }, - }); - - await act(async () => { - await result.current.setCurrentSystemPromptId('prompt-id'); - }); - - expect(mockUseConversation.setApiConfig).toHaveBeenCalledWith({ - conversation, - apiConfig: { - ...conversation.apiConfig, - defaultSystemPromptId: 'prompt-id', - }, - }); - expect(defaultProps.refetchCurrentUserConversations).toHaveBeenCalled(); - }); - - it('should fetch and set the current conversation', async () => { - const conversationId = 'welcome_id'; - const conversation = mockData.welcome_id; - mockUseConversation.getConversation.mockResolvedValue(conversation); - - const { result } = setupHook({ - conversationId, - conversations: { [conversationId]: conversation }, - }); - - await act(async () => { - await result.current.refetchCurrentConversation({ cId: conversationId }); - }); - - expect(result.current.currentConversation).toEqual(conversation); - }); - - it('should handle conversation selection', async () => { - const conversationId = 'test-id'; - const conversationTitle = 'Test Conversation'; - const conversation = { - ...mockData.welcome_id, - id: conversationId, - title: conversationTitle, - apiConfig: { - ...mockData.welcome_id.apiConfig, - defaultSystemPromptId: 'something-crazy', - }, - } as Conversation; - const mockConversations = { - ...mockData, - [conversationId]: conversation, - }; - (find as jest.Mock).mockReturnValue(conversation); - - const { result } = setupHook({ - conversationId: mockData.welcome_id.id, - conversations: mockConversations, - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: mockConversations, - }), - }); - - await act(async () => { - await result.current.handleOnConversationSelected({ - cId: conversationId, - cTitle: conversationTitle, - }); - }); - - expect(result.current.currentConversation).toEqual(conversation); - expect(result.current.currentSystemPrompt?.id).toBe('something-crazy'); - }); - - it('should non-existing handle conversation selection', async () => { - const conversationId = 'test-id'; - const conversationTitle = 'Test Conversation'; - const conversation = { - ...mockData.welcome_id, - id: conversationId, - title: conversationTitle, - } as Conversation; - const mockConversations = { - ...mockData, - [conversationId]: conversation, - }; - (find as jest.Mock).mockReturnValue(conversation); - - const { result } = setupHook({ - conversationId: mockData.welcome_id.id, - conversations: mockConversations, - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: mockConversations, - }), - }); - - await act(async () => { - await result.current.handleOnConversationSelected({ - cId: 'bad', - cTitle: 'bad', - }); - }); - - expect(result.current.currentConversation).toEqual(mockData.welcome_id); - expect(result.current.currentSystemPrompt?.id).toBe('system-prompt-id'); - }); - - it('should create a new conversation', async () => { - const newConversation = { - ...mockData.welcome_id, - id: 'new-id', - title: 'NEW_CHAT', - messages: [], - } as Conversation; - mockUseConversation.createConversation.mockResolvedValue(newConversation); - - const { result } = setupHook({ - conversations: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - }, - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - [newConversation.id]: newConversation, - }, - }), - }); - - await act(async () => { - await result.current.handleCreateConversation(); - }); - - expect(mockUseConversation.createConversation).toHaveBeenCalled(); - }); - - it('should create a new conversation using the connector portion of the apiConfig of the current conversation', async () => { - const newConversation = { - ...mockData.welcome_id, - id: 'new-id', - title: 'NEW_CHAT', - messages: [], - } as Conversation; - mockUseConversation.createConversation.mockResolvedValue(newConversation); - - const { result } = setupHook({ - conversations: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - }, - conversationId: 'old-id', - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - [newConversation.id]: newConversation, - }, - }), - }); - - await act(async () => { - await result.current.handleCreateConversation(); - }); - const { defaultSystemPromptId: _, ...everythingExceptSystemPromptId } = - mockData.welcome_id.apiConfig; - - expect(mockUseConversation.createConversation).toHaveBeenCalledWith({ - apiConfig: everythingExceptSystemPromptId, - title: 'New chat', - }); - }); - - it('should create a new conversation with correct isNewConversationDefault: true system prompt', async () => { - const newConversation = { - ...mockData.welcome_id, - id: 'new-id', - title: 'NEW_CHAT', - messages: [], - } as Conversation; - mockUseConversation.createConversation.mockResolvedValue(newConversation); - - const { result } = setupHook({ - conversations: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - }, - allSystemPrompts: [ - { - timestamp: '2024-09-10T15:52:24.761Z', - users: [ - { - id: 'u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0', - name: 'elastic', - }, - ], - content: 'Address the user as Mr Orange in each response', - isNewConversationDefault: true, - updatedAt: '2024-09-10T22:07:44.915Z', - id: 'LBOi3JEBy3uD9EGi1d_G', - name: 'Call me Orange', - promptType: 'system', - consumer: 'securitySolutionUI', - }, - ], - conversationId: 'old-id', - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - [newConversation.id]: newConversation, - }, - }), - }); - - await act(async () => { - await result.current.handleCreateConversation(); - }); - const { defaultSystemPromptId: _, ...everythingExceptSystemPromptId } = - mockData.welcome_id.apiConfig; - - expect(mockUseConversation.createConversation).toHaveBeenCalledWith({ - apiConfig: { - ...everythingExceptSystemPromptId, - defaultSystemPromptId: 'LBOi3JEBy3uD9EGi1d_G', - }, - title: 'New chat', - }); - }); - - it('should delete a conversation', async () => { - const conversationTitle = 'Test Conversation'; - const conversation = { - ...mockData.welcome_id, - id: 'test-id', - title: conversationTitle, - messages: [], - } as Conversation; - - const { result } = setupHook({ - conversations: { ...mockData, 'test-id': conversation }, - }); - - await act(async () => { - await result.current.handleOnConversationDeleted('test-id'); - }); - - expect(mockUseConversation.deleteConversation).toHaveBeenCalledWith('test-id'); - expect(result.current.currentConversation).toBeUndefined(); - }); - - it('should refetch the conversation multiple times if isStreamRefetch is true', async () => { - const conversationId = 'test-id'; - const conversation = { id: conversationId, messages: [{ role: 'user' }] } as Conversation; - mockUseConversation.getConversation.mockResolvedValue(conversation); - - const { result } = setupHook({ - conversationId, - conversations: { [conversationId]: conversation }, - }); - - await act(async () => { - await result.current.refetchCurrentConversation({ - cId: conversationId, - isStreamRefetch: true, - }); - }); - - expect(mockUseConversation.getConversation).toHaveBeenCalledTimes(6); // initial + 5 retries - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx deleted file mode 100644 index d599190ca5623..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Dispatch, SetStateAction, useCallback, useEffect, useMemo, useState } from 'react'; -import { QueryObserverResult } from '@tanstack/react-query'; -import { PromptResponse } from '@kbn/elastic-assistant-common'; -import { find } from 'lodash'; -import deepEqual from 'fast-deep-equal'; -import { AIConnector } from '../../connectorland/connector_selector'; -import { getGenAiConfig } from '../../connectorland/helpers'; -import { NEW_CHAT } from '../conversations/conversation_sidepanel/translations'; -import { getDefaultNewSystemPrompt, getDefaultSystemPrompt } from '../use_conversation/helpers'; -import { useConversation } from '../use_conversation'; -import { sleep } from '../helpers'; -import { Conversation, WELCOME_CONVERSATION_TITLE } from '../../..'; - -export interface Props { - allSystemPrompts: PromptResponse[]; - conversationId: string; - conversations: Record<string, Conversation>; - defaultConnector?: AIConnector; - mayUpdateConversations: boolean; - refetchCurrentUserConversations: () => Promise< - QueryObserverResult<Record<string, Conversation>, unknown> - >; -} - -interface UseCurrentConversation { - currentConversation: Conversation | undefined; - currentSystemPrompt: PromptResponse | undefined; - handleCreateConversation: () => Promise<void>; - handleOnConversationDeleted: (cTitle: string) => Promise<void>; - handleOnConversationSelected: ({ cId, cTitle }: { cId: string; cTitle: string }) => Promise<void>; - refetchCurrentConversation: (options?: { - cId?: string; - cTitle?: string; - isStreamRefetch?: boolean; - }) => Promise<Conversation | undefined>; - setCurrentConversation: Dispatch<SetStateAction<Conversation | undefined>>; - setCurrentSystemPromptId: (promptId: string | undefined) => void; -} - -/** - * Manages the current conversation state. Interacts with the conversation API and keeps local state up to date. - * Manages system prompt as that is per conversation - * Provides methods to handle conversation selection, creation, deletion, and system prompt selection. - */ -export const useCurrentConversation = ({ - allSystemPrompts, - conversationId, - conversations, - defaultConnector, - mayUpdateConversations, - refetchCurrentUserConversations, -}: Props): UseCurrentConversation => { - const { - createConversation, - deleteConversation, - getConversation, - getDefaultConversation, - setApiConfig, - } = useConversation(); - const [currentConversation, setCurrentConversation] = useState<Conversation | undefined>(); - const [currentConversationId, setCurrentConversationId] = useState<string | undefined>( - conversationId - ); - useEffect(() => { - setCurrentConversationId(conversationId); - }, [conversationId]); - /** - * START SYSTEM PROMPT - */ - const currentSystemPrompt = useMemo( - () => - getDefaultSystemPrompt({ - allSystemPrompts, - conversation: currentConversation, - }), - [allSystemPrompts, currentConversation] - ); - - // Write the selected system prompt to the conversation config - const setCurrentSystemPromptId = useCallback( - async (promptId?: string) => { - if (currentConversation && currentConversation.apiConfig) { - await setApiConfig({ - conversation: currentConversation, - apiConfig: { - ...currentConversation.apiConfig, - defaultSystemPromptId: promptId, - }, - }); - await refetchCurrentUserConversations(); - } - }, - [currentConversation, refetchCurrentUserConversations, setApiConfig] - ); - - /** - * END SYSTEM PROMPT - */ - - /** - * Refetches the current conversation, optionally by conversation ID or title. - * @param cId - The conversation ID to refetch. - * @param cTitle - The conversation title to refetch. - * @param isStreamRefetch - Are we refetching because stream completed? If so retry several times to ensure the message has updated on the server - */ - const refetchCurrentConversation = useCallback( - async ({ - cId, - cTitle, - isStreamRefetch = false, - }: { cId?: string; cTitle?: string; isStreamRefetch?: boolean } = {}) => { - if (cId === '' || (cTitle && !conversations[cTitle])) { - return; - } - - const cConversationId = - cId ?? (cTitle && conversations[cTitle].id) ?? currentConversation?.id; - - if (cConversationId) { - let updatedConversation = await getConversation(cConversationId); - let retries = 0; - const maxRetries = 5; - - // this retry is a workaround for the stream not YET being persisted to the stored conversation - while ( - isStreamRefetch && - updatedConversation && - updatedConversation.messages[updatedConversation.messages.length - 1].role !== - 'assistant' && - retries < maxRetries - ) { - retries++; - await sleep(2000); - updatedConversation = await getConversation(cConversationId); - } - - if (updatedConversation) { - setCurrentConversation(updatedConversation); - } - - return updatedConversation; - } - }, - [conversations, currentConversation?.id, getConversation] - ); - - const initializeDefaultConversationWithConnector = useCallback( - async (defaultConvo: Conversation): Promise<Conversation> => { - const apiConfig = getGenAiConfig(defaultConnector); - const updatedConvo = - (await setApiConfig({ - conversation: defaultConvo, - apiConfig: { - ...defaultConvo?.apiConfig, - connectorId: (defaultConnector?.id as string) ?? '', - actionTypeId: (defaultConnector?.actionTypeId as string) ?? '.gen-ai', - provider: apiConfig?.apiProvider, - model: apiConfig?.defaultModel, - defaultSystemPromptId: allSystemPrompts.find((sp) => sp.isNewConversationDefault)?.id, - }, - })) ?? defaultConvo; - await refetchCurrentUserConversations(); - return updatedConvo; - }, - [allSystemPrompts, defaultConnector, refetchCurrentUserConversations, setApiConfig] - ); - - const handleOnConversationSelected = useCallback( - async ({ cId, cTitle }: { cId: string; cTitle: string }) => { - const allConversations = await refetchCurrentUserConversations(); - - // This is a default conversation that has not yet been initialized - // add the default connector config - if (cId === '' && allConversations?.data?.[cTitle]) { - const updatedConvo = await initializeDefaultConversationWithConnector( - allConversations.data[cTitle] - ); - setCurrentConversationId(updatedConvo.id); - } else if (allConversations?.data?.[cId]) { - setCurrentConversationId(cId); - } - }, - [ - initializeDefaultConversationWithConnector, - refetchCurrentUserConversations, - setCurrentConversationId, - ] - ); - - // update currentConversation when conversations or currentConversationId update - useEffect(() => { - if (!mayUpdateConversations) return; - const updateConversation = async () => { - const nextConversation: Conversation = - (currentConversationId && conversations[currentConversationId]) || - // if currentConversationId is not an id, it should be a title from a - // default conversation that has not yet been initialized - find(conversations, ['title', currentConversationId]) || - find(conversations, ['title', WELCOME_CONVERSATION_TITLE]) || - // if no Welcome convo exists, create one - getDefaultConversation({ cTitle: WELCOME_CONVERSATION_TITLE }); - - if (nextConversation && nextConversation.id === '') { - // This is a default conversation that has not yet been initialized - const conversation = await initializeDefaultConversationWithConnector(nextConversation); - return setCurrentConversation(conversation); - } - setCurrentConversation((prev) => { - if (deepEqual(prev, nextConversation)) return prev; - - if ( - prev && - prev.id === nextConversation.id && - // if the conversation id has not changed and the previous conversation has more messages - // it is because the local conversation has a readable stream running - // and it has not yet been persisted to the stored conversation - prev.messages.length > nextConversation.messages.length - ) { - return { - ...nextConversation, - messages: prev.messages, - }; - } - - return nextConversation; - }); - }; - updateConversation(); - }, [ - currentConversationId, - conversations, - getDefaultConversation, - initializeDefaultConversationWithConnector, - mayUpdateConversations, - ]); - - const handleOnConversationDeleted = useCallback( - async (cTitle: string) => { - await deleteConversation(conversations[cTitle].id); - await refetchCurrentUserConversations(); - }, - [conversations, deleteConversation, refetchCurrentUserConversations] - ); - - const handleCreateConversation = useCallback(async () => { - const newChatExists = find(conversations, ['title', NEW_CHAT]); - if (newChatExists && !newChatExists.messages.length) { - handleOnConversationSelected({ - cId: newChatExists.id, - cTitle: newChatExists.title, - }); - return; - } - const newSystemPrompt = getDefaultNewSystemPrompt(allSystemPrompts); - - const newConversation = await createConversation({ - title: NEW_CHAT, - ...(currentConversation?.apiConfig != null && - currentConversation?.apiConfig?.actionTypeId != null - ? { - apiConfig: { - connectorId: currentConversation.apiConfig.connectorId, - actionTypeId: currentConversation.apiConfig.actionTypeId, - ...(newSystemPrompt?.id != null ? { defaultSystemPromptId: newSystemPrompt.id } : {}), - }, - } - : {}), - }); - - if (newConversation) { - handleOnConversationSelected({ - cId: newConversation.id, - cTitle: newConversation.title, - }); - } else { - await refetchCurrentUserConversations(); - } - }, [ - allSystemPrompts, - conversations, - createConversation, - currentConversation?.apiConfig, - handleOnConversationSelected, - refetchCurrentUserConversations, - ]); - - return { - currentConversation, - currentSystemPrompt, - handleCreateConversation, - handleOnConversationDeleted, - handleOnConversationSelected, - refetchCurrentConversation, - setCurrentConversation, - setCurrentSystemPromptId, - }; -}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx deleted file mode 100644 index 4e877e1886fb4..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { renderHook } from '@testing-library/react-hooks'; - -import { useAssistantContext } from '.'; -import useLocalStorage from 'react-use/lib/useLocalStorage'; -import { TestProviders } from '../mock/test_providers/test_providers'; - -jest.mock('react-use/lib/useLocalStorage', () => jest.fn().mockReturnValue(['456', jest.fn()])); -jest.mock('react-use/lib/useSessionStorage', () => jest.fn().mockReturnValue(['456', jest.fn()])); - -describe('AssistantContext', () => { - beforeEach(() => jest.clearAllMocks()); - - test('it throws an error when useAssistantContext hook is used without a SecurityAssistantContext', () => { - const { result } = renderHook(useAssistantContext); - - expect(result.error).toEqual( - new Error('useAssistantContext must be used within a AssistantProvider') - ); - }); - - test('it should return the httpFetch function', async () => { - const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); - - const path = '/path/to/resource'; - await result.current.http.fetch(path); - - expect(result.current.http.fetch).toBeCalledWith(path); - }); - - test('getLastConversationId defaults to provided id', async () => { - const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); - const id = result.current.getLastConversationId('123'); - expect(id).toEqual('123'); - }); - - test('getLastConversationId uses local storage id when no id is provided ', async () => { - const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); - const id = result.current.getLastConversationId(); - expect(id).toEqual('456'); - }); - - test('getLastConversationId defaults to Welcome when no local storage id and no id is provided ', async () => { - (useLocalStorage as jest.Mock).mockReturnValue([undefined, jest.fn()]); - const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); - const id = result.current.getLastConversationId(); - expect(id).toEqual('Welcome'); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx deleted file mode 100644 index 50d3a73797413..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { act, renderHook } from '@testing-library/react-hooks'; -import { useLoadActionTypes, Props } from '.'; -import { mockActionTypes } from '../../mock/connectors'; - -jest.mock('@tanstack/react-query', () => ({ - useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { - try { - const res = await fn(); - return Promise.resolve(res); - } catch (e) { - opts.onError(e); - } - }), -})); - -const http = { - get: jest.fn().mockResolvedValue(mockActionTypes), -}; -const toasts = { - addError: jest.fn(), -}; -const defaultProps = { http, toasts } as unknown as Props; -describe('useLoadActionTypes', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - it('should call api to load action types', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useLoadActionTypes(defaultProps)); - await waitForNextUpdate(); - - expect(defaultProps.http.get).toHaveBeenCalledWith('/api/actions/connector_types', { - query: { feature_id: 'generativeAIForSecurity' }, - }); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - - it('should return sorted action types', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useLoadActionTypes(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual( - mockActionTypes.sort((a, b) => a.name.localeCompare(b.name)) - ); - }); - }); - it('should display error toast when api throws error', async () => { - await act(async () => { - const mockHttp = { - get: jest.fn().mockRejectedValue(new Error('this is an error')), - } as unknown as Props['http']; - const { waitForNextUpdate } = renderHook(() => - useLoadActionTypes({ ...defaultProps, http: mockHttp }) - ); - await waitForNextUpdate(); - - expect(toasts.addError).toHaveBeenCalled(); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx deleted file mode 100644 index b29274efb19c0..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { act, renderHook } from '@testing-library/react-hooks'; -import { useLoadConnectors, Props } from '.'; -import { mockConnectors } from '../../mock/connectors'; - -const mockConnectorsAndExtras = [ - ...mockConnectors, - { - ...mockConnectors[0], - id: 'connector-missing-secrets', - name: 'Connector Missing Secrets', - isMissingSecrets: true, - }, - { - ...mockConnectors[0], - - id: 'connector-wrong-action-type', - name: 'Connector Wrong Action Type', - isMissingSecrets: true, - actionTypeId: '.d3', - }, -]; - -const connectorsApiResponse = mockConnectorsAndExtras.map((c) => ({ - ...c, - connector_type_id: c.actionTypeId, - is_preconfigured: false, - is_deprecated: false, - referenced_by_count: 0, - is_missing_secrets: c.isMissingSecrets, - is_system_action: false, -})); - -const loadConnectorsResult = mockConnectors.map((c) => ({ - ...c, - isPreconfigured: false, - isDeprecated: false, - referencedByCount: 0, - isSystemAction: false, -})); - -jest.mock('@tanstack/react-query', () => ({ - useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { - try { - const res = await fn(); - return Promise.resolve(res); - } catch (e) { - opts.onError(e); - } - }), -})); - -const http = { - get: jest.fn().mockResolvedValue(connectorsApiResponse), -}; -const toasts = { - addError: jest.fn(), -}; -const defaultProps = { http, toasts } as unknown as Props; -describe('useLoadConnectors', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - it('should call api to load action types', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useLoadConnectors(defaultProps)); - await waitForNextUpdate(); - - expect(defaultProps.http.get).toHaveBeenCalledWith('/api/actions/connectors'); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - - it('should return sorted action types, removing isMissingSecrets and wrong action type ids', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useLoadConnectors(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual( - // @ts-ignore ts does not like config, but we define it in the mock data - loadConnectorsResult.map((c) => ({ ...c, apiProvider: c.config.apiProvider })) - ); - }); - }); - it('should display error toast when api throws error', async () => { - await act(async () => { - const mockHttp = { - get: jest.fn().mockRejectedValue(new Error('this is an error')), - } as unknown as Props['http']; - const { waitForNextUpdate } = renderHook(() => - useLoadConnectors({ ...defaultProps, http: mockHttp }) - ); - await waitForNextUpdate(); - - expect(toasts.addError).toHaveBeenCalled(); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx deleted file mode 100644 index cc08b0a68ab89..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiBasicTableColumn, EuiButtonEmpty, EuiCode, EuiSwitch, EuiText } from '@elastic/eui'; -import React from 'react'; -// eslint-disable-next-line @kbn/eslint/module_migration -import styled from 'styled-components'; - -import { BulkActions } from '../bulk_actions'; -import * as i18n from '../translations'; -import { BatchUpdateListItem, ContextEditorRow, FIELDS } from '../types'; - -const AnonymizedButton = styled(EuiButtonEmpty)` - max-height: 24px; -`; - -export const getColumns = ({ - compressed = true, - hasUpdateAIAssistantAnonymization, - onListUpdated, - rawData, -}: { - compressed?: boolean; - hasUpdateAIAssistantAnonymization: boolean; - onListUpdated: (updates: BatchUpdateListItem[]) => void; - rawData: Record<string, string[]> | null; -}): Array<EuiBasicTableColumn<ContextEditorRow>> => { - const actionsColumn: EuiBasicTableColumn<ContextEditorRow> = { - field: FIELDS.ACTIONS, - name: '', - render: (_, row) => { - return ( - <BulkActions - appliesTo="singleRow" - disabled={false} - disableAllow={row.allowed} - disableDeny={!row.allowed} - disableAnonymize={!row.allowed || (row.allowed && row.anonymized)} - disableUnanonymize={!row.allowed || (row.allowed && !row.anonymized)} - onListUpdated={onListUpdated} - selected={[row]} - /> - ); - }, - sortable: false, - width: '36px', - }; - - const valuesColumn: EuiBasicTableColumn<ContextEditorRow> = { - field: FIELDS.RAW_VALUES, - name: i18n.VALUES, - render: (rawValues: ContextEditorRow['rawValues']) => ( - <EuiCode data-test-subj="rawValues">{rawValues.join(',')}</EuiCode> - ), - sortable: false, - }; - - const baseColumns: Array<EuiBasicTableColumn<ContextEditorRow>> = [ - { - field: FIELDS.ALLOWED, - name: i18n.ALLOWED, - render: (_, { allowed, field }) => ( - <EuiSwitch - data-test-subj="allowed" - checked={allowed} - disabled={!hasUpdateAIAssistantAnonymization} - label="" - showLabel={false} - compressed={compressed} - onChange={() => { - onListUpdated([ - { - field, - operation: allowed ? 'remove' : 'add', - update: rawData == null ? 'defaultAllow' : 'allow', - }, - ]); - }} - /> - ), - sortable: true, - width: '75px', - }, - { - field: FIELDS.ANONYMIZED, - name: i18n.ANONYMIZED, - render: (_, { allowed, anonymized, field }) => ( - <AnonymizedButton - data-test-subj="anonymized" - disabled={!allowed || !hasUpdateAIAssistantAnonymization} - color={anonymized ? 'primary' : 'text'} - flush="both" - iconType={anonymized ? 'eyeClosed' : 'eye'} - isSelected={anonymized ? true : false} - onClick={() => - onListUpdated([ - { - field, - operation: anonymized ? 'remove' : 'add', - update: rawData == null ? 'defaultAllowReplacement' : 'allowReplacement', - }, - ]) - } - > - <EuiText size="xs">{anonymized ? i18n.YES : i18n.NO}</EuiText> - </AnonymizedButton> - ), - sortable: true, - width: '102px', - }, - { - field: FIELDS.FIELD, - name: i18n.FIELD, - sortable: true, - width: '260px', - }, - ]; - - return rawData == null - ? [...baseColumns, ...(hasUpdateAIAssistantAnonymization ? [actionsColumn] : [])] - : [...baseColumns, valuesColumn, ...(hasUpdateAIAssistantAnonymization ? [actionsColumn] : [])]; -}; diff --git a/x-pack/packages/kbn-elastic-assistant/index.ts b/x-pack/packages/kbn-elastic-assistant/index.ts deleted file mode 100644 index 7f9ce6fe36c2f..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/index.ts +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -// To integrate the assistant into a Kibana app, perform the following three steps: - -// Step 1: Wrap your Kibana app in the `AssistantProvider` component. This typically -// happens in the root of your app. Optionally provide a custom title for the assistant: - -/** provides context (from the app) to the assistant, and injects Kibana services, like `http` */ -export { AssistantProvider, useAssistantContext } from './impl/assistant_context'; - -// Step 2: Add the `AssistantOverlay` component to your app. This component displays the assistant -// overlay in a modal, bound to a shortcut key: - -/** modal overlay for Elastic Assistant conversations */ -export { AssistantOverlay } from './impl/assistant/assistant_overlay'; - -// In addition to the `AssistantOverlay`, or as an alternative, you may use the `Assistant` component -// to display the assistant without the modal overlay: - -/** this component renders the Assistant without the modal overlay to, for example, render it in a Timeline tab */ -export { Assistant } from './impl/assistant'; - -// Step 3: Wherever you want to bring context into the assistant, use the any combination of the following -// components and hooks: -// - `NewChat` component -// - `NewChatByTitle` component -// - `useAssistantOverlay` hook - -/** - * `NewChat` displays a _New chat_ icon button, providing all the context - * necessary to start a new chat. You may optionally style the button icon, - * or override the default _New chat_ text with custom content, like `🪄✨` - * - * USE THIS WHEN: All the data necessary to start a new chat is available - * in the same part of the React tree as the _New chat_ button. - */ -export { NewChat } from './impl/new_chat'; - -/** - * `NewChatByTitle` displays a _New chat_ icon button by providing only the `promptContextId` - * of a context that was (already) registered by the `useAssistantOverlay` hook. You may - * optionally style the button icon, or override the default _New chat_ text with custom - * content, like {'🪄✨'} - * - * USE THIS WHEN: all the data necessary to start a new chat is NOT available - * in the same part of the React tree as the _New chat_ button. When paired - * with the `useAssistantOverlay` hook, this option enables context to be be - * registered where the data is available, and then the _New chat_ button can be displayed - * in another part of the tree. - */ -export { NewChatByTitle } from './impl/new_chat_by_title'; - -/** - * `useAssistantOverlay` is a hook that registers context with the assistant overlay, and - * returns an optional `showAssistantOverlay` function to display the assistant overlay. - * As an alterative to using the `showAssistantOverlay` returned from this hook, you may - * use the `NewChatByTitle` component and pass it the `promptContextId` returned by this hook. - * - * USE THIS WHEN: You want to register context in one part of the tree, and then show - * a _New chat_ button in another part of the tree without passing around the data, or when - * you want to build a custom `New chat` button with features not not provided by the - * `NewChat` component. - */ -export { useAssistantOverlay } from './impl/assistant/use_assistant_overlay'; - -/** a helper that enriches content returned from a query with action buttons */ -export { analyzeMarkdown } from './impl/assistant/use_conversation/helpers'; - -/** Default Elastic AI Assistant logo, can be removed once included in EUI **/ -export { AssistantAvatar } from './impl/assistant/assistant_avatar/assistant_avatar'; - -export { ConnectorSelectorInline } from './impl/connectorland/connector_selector_inline/connector_selector_inline'; - -export { - /** The Attack discovery local storage key */ - ATTACK_DISCOVERY_STORAGE_KEY, - DEFAULT_ASSISTANT_NAMESPACE, - /** The default maximum number of alerts to be sent as context when generating Attack discoveries */ - DEFAULT_ATTACK_DISCOVERY_MAX_ALERTS, - DEFAULT_LATEST_ALERTS, - DEFEND_INSIGHTS_STORAGE_KEY, - KNOWLEDGE_BASE_LOCAL_STORAGE_KEY, - /** The local storage key that specifies the maximum number of alerts to send as context */ - MAX_ALERTS_LOCAL_STORAGE_KEY, - /** The local storage key that specifies whether the settings tour should be shown */ - SHOW_SETTINGS_TOUR_LOCAL_STORAGE_KEY, -} from './impl/assistant_context/constants'; - -export { useLoadConnectors } from './impl/connectorland/use_load_connectors'; - -export { - ELASTIC_AI_ASSISTANT_TITLE, - WELCOME_CONVERSATION_TITLE, -} from './impl/assistant/use_conversation/translations'; - -export type { - /** for rendering results in a code block */ - CodeBlockDetails, - /** the type of query that will be executed for a code block */ - QueryType, -} from './impl/assistant/use_conversation/helpers'; - -export type { - /** Feature Availability Interface */ - AssistantAvailability, - /** Telemetry Interface */ - AssistantTelemetry, - /** Conversation Interface */ - Conversation, - /** Message interface on the client */ - ClientMessage, - /** Function type to return messages UI */ - GetAssistantMessages, -} from './impl/assistant_context/types'; - -/** - * This interface is used to pass context to the assistant, - * for the purpose of building prompts. Examples of context include: - * - a single alert - * - multiple alerts - * - a single event - * - multiple events - * - markdown - * - csv - * - anything else that the LLM can interpret - */ -export type { PromptContext } from './impl/assistant/prompt_context/types'; - -/** - * This interface is used to pass a default or base set of contexts to the Elastic Assistant when - * initializing it. This is used to provide 'category' options when users create Quick Prompts. - * Also, useful for collating all of a solutions' prompts in one place. - * - * e.g. see Security Solution's x-pack/plugins/security_solution/public/assistant/prompt_contexts/index.tsx - */ -export type { PromptContextTemplate } from './impl/assistant/prompt_context/types'; - -export { useFetchCurrentUserConversations } from './impl/assistant/api/conversations/use_fetch_current_user_conversations'; -export * from './impl/assistant/api/conversations/bulk_update_actions_conversations'; -export { getConversationById } from './impl/assistant/api/conversations/conversations'; - -export { mergeBaseWithPersistedConversations } from './impl/assistant/helpers'; - -export { UpgradeButtons } from './impl/upgrade/upgrade_buttons'; -export { getUserConversations, getPrompts, bulkUpdatePrompts } from './impl/assistant/api'; - -export { - /** A range slider component, typically used to configure the number of alerts sent as context */ - AlertsRange, - /** This event occurs when the `AlertsRange` slider is changed */ - type SingleRangeChangeEvent, -} from './impl/knowledge_base/alerts_range'; -export { - /** A label instructing the user to send fewer alerts */ - SELECT_FEWER_ALERTS, - /** Your anonymization settings will apply to these alerts (label) */ - YOUR_ANONYMIZATION_SETTINGS, -} from './impl/knowledge_base/translations'; diff --git a/x-pack/packages/kbn-elastic-assistant/jest.config.js b/x-pack/packages/kbn-elastic-assistant/jest.config.js deleted file mode 100644 index 46d4ca8b91eb4..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/jest.config.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_elastic_assistant_impl', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/**/*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/*mock*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/*.test.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/*.d.ts', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/*.config.ts', - ], - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-elastic-assistant'], -}; diff --git a/x-pack/packages/kbn-elastic-assistant/tsconfig.json b/x-pack/packages/kbn-elastic-assistant/tsconfig.json deleted file mode 100644 index 1a23097b2271e..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/tsconfig.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@kbn/ambient-ui-types" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - "../../../typings/emotion.d.ts" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/elastic-assistant-common", - "@kbn/core-http-browser", - "@kbn/i18n", - "@kbn/stack-connectors-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/core-http-browser-mocks", - "@kbn/cases-plugin", - "@kbn/actions-plugin", - "@kbn/core-notifications-browser", - "@kbn/i18n-react", - "@kbn/ui-theme", - "@kbn/core-doc-links-browser", - "@kbn/core", - "@kbn/zod", - "@kbn/data-views-plugin", - "@kbn/user-profile-components", - ] -} diff --git a/x-pack/packages/kbn-infra-forge/jest.config.js b/x-pack/packages/kbn-infra-forge/jest.config.js deleted file mode 100644 index d5bd842dee334..0000000000000 --- a/x-pack/packages/kbn-infra-forge/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-infra-forge'], -}; diff --git a/x-pack/packages/kbn-infra-forge/tsconfig.json b/x-pack/packages/kbn-infra-forge/tsconfig.json deleted file mode 100644 index 09420c85fcfd7..0000000000000 --- a/x-pack/packages/kbn-infra-forge/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - "./src/data_sources/composable/component/base.json", - "./src/data_sources/composable/component/event.json", - "./src/data_sources/composable/component/host.json", - "./src/data_sources/composable/component/metricset.json", - "./src/data_sources/composable/component/system.json", - "./src/data_sources/composable/template.json" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/tooling-log", - "@kbn/datemath" - ] -} diff --git a/x-pack/packages/kbn-langchain/jest.config.js b/x-pack/packages/kbn-langchain/jest.config.js deleted file mode 100644 index f436e6a9edbe6..0000000000000 --- a/x-pack/packages/kbn-langchain/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_langchain', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/kbn-langchain/server/**/*.{ts}', - '!<rootDir>/x-pack/packages/kbn-langchain/server/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/packages/kbn-langchain/server/*mock*.{ts}', - '!<rootDir>/x-pack/packages/kbn-langchain/server/*.test.{ts}', - '!<rootDir>/x-pack/packages/kbn-langchain/server/*.d.ts', - '!<rootDir>/x-pack/packages/kbn-langchain/server/*.config.ts', - ], - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-langchain'], -}; diff --git a/x-pack/packages/kbn-langchain/tsconfig.json b/x-pack/packages/kbn-langchain/tsconfig.json deleted file mode 100644 index e775b1a4ad50d..0000000000000 --- a/x-pack/packages/kbn-langchain/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/logging", - "@kbn/actions-plugin", - "@kbn/logging-mocks", - "@kbn/utility-types", - "@kbn/tooling-log" - ] -} diff --git a/x-pack/packages/kbn-slo-schema/jest.config.js b/x-pack/packages/kbn-slo-schema/jest.config.js deleted file mode 100644 index 915ccf489264a..0000000000000 --- a/x-pack/packages/kbn-slo-schema/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-slo-schema'], -}; diff --git a/x-pack/packages/kbn-slo-schema/tsconfig.json b/x-pack/packages/kbn-slo-schema/tsconfig.json deleted file mode 100644 index cd411fff0db4a..0000000000000 --- a/x-pack/packages/kbn-slo-schema/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts" - ], - "kbn_references": [ - "@kbn/std", - "@kbn/io-ts-utils", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/packages/observability/alert_details/jest.config.js b/x-pack/packages/observability/alert_details/jest.config.js deleted file mode 100644 index 746e2af6257c9..0000000000000 --- a/x-pack/packages/observability/alert_details/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/alert_details'], -}; diff --git a/x-pack/packages/observability/alert_details/tsconfig.json b/x-pack/packages/observability/alert_details/tsconfig.json deleted file mode 100644 index d1b4c3fb2ce23..0000000000000 --- a/x-pack/packages/observability/alert_details/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/rule-data-utils", - "@kbn/core", - "@kbn/rule-registry-plugin", - "@kbn/core-http-browser-mocks" - ] -} diff --git a/x-pack/packages/observability/alerting_rule_utils/jest.config.js b/x-pack/packages/observability/alerting_rule_utils/jest.config.js deleted file mode 100644 index 605fe2b4fcdcf..0000000000000 --- a/x-pack/packages/observability/alerting_rule_utils/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/alerting_rule_utils'], -}; diff --git a/x-pack/packages/observability/alerting_rule_utils/tsconfig.json b/x-pack/packages/observability/alerting_rule_utils/tsconfig.json deleted file mode 100644 index baf441402ea8c..0000000000000 --- a/x-pack/packages/observability/alerting_rule_utils/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/alerts-as-data-utils" - ] -} diff --git a/x-pack/packages/observability/alerting_test_data/jest.config.js b/x-pack/packages/observability/alerting_test_data/jest.config.js deleted file mode 100644 index 05b0dbe613054..0000000000000 --- a/x-pack/packages/observability/alerting_test_data/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/alerting_test_data'], -}; diff --git a/x-pack/packages/observability/alerting_test_data/tsconfig.json b/x-pack/packages/observability/alerting_test_data/tsconfig.json deleted file mode 100644 index 109b0dfbcf1a4..0000000000000 --- a/x-pack/packages/observability/alerting_test_data/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/observability-plugin", - "@kbn/rule-data-utils", - "@kbn/alerting-comparators", - ] -} diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/jest.config.js b/x-pack/packages/observability/get_padded_alert_time_range_util/jest.config.js deleted file mode 100644 index 2e476b09b3c4c..0000000000000 --- a/x-pack/packages/observability/get_padded_alert_time_range_util/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/get_padded_alert_time_range_util'], -}; diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/tsconfig.json b/x-pack/packages/observability/get_padded_alert_time_range_util/tsconfig.json deleted file mode 100644 index 0d78dace105e1..0000000000000 --- a/x-pack/packages/observability/get_padded_alert_time_range_util/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [] -} diff --git a/x-pack/packages/observability/logs_overview/kibana.jsonc b/x-pack/packages/observability/logs_overview/kibana.jsonc index 34d8ac98a5253..1709e01f926ed 100644 --- a/x-pack/packages/observability/logs_overview/kibana.jsonc +++ b/x-pack/packages/observability/logs_overview/kibana.jsonc @@ -4,6 +4,6 @@ "owner": [ "@elastic/obs-ux-logs-team" ], - "group": "observability", - "visibility": "private" + "group": "platform", + "visibility": "shared" } diff --git a/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_entities_by_fuzzy_search.ts b/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_entities_by_fuzzy_search.ts new file mode 100644 index 0000000000000..aedf89b2ab97d --- /dev/null +++ b/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_entities_by_fuzzy_search.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { castArray, orderBy } from 'lodash'; +import Fuse from 'fuse.js'; +import { ObservabilityElasticsearchClient } from '../es/client/create_observability_es_client'; + +export async function getEntitiesByFuzzySearch({ + esClient, + entity, + start, + end, + index, +}: { + esClient: ObservabilityElasticsearchClient; + entity: Record<string, string>; + start: number; + end: number; + index: string | string[]; +}): Promise<string[]> { + if (Object.keys(entity).length > 1) { + return []; + } + + const [field, value] = Object.entries(entity)[0]; + + const { terms } = await esClient.client.termsEnum({ + index: castArray(index).join(','), + field, + index_filter: { + range: { + '@timestamp': { + gte: new Date(start).toISOString(), + lte: new Date(end).toISOString(), + }, + }, + }, + size: 10_000, + }); + + const results = new Fuse(terms, { includeScore: true, threshold: 0.75 }).search(value); + + return orderBy(results, (result) => result.score, 'asc') + .slice(0, 5) + .map((result) => result.item); +} diff --git a/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_log_patterns.ts b/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_log_patterns.ts new file mode 100644 index 0000000000000..b4071d665f383 --- /dev/null +++ b/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_log_patterns.ts @@ -0,0 +1,405 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + AggregationsCategorizeTextAggregation, + AggregationsDateHistogramAggregation, + AggregationsMaxAggregation, + AggregationsMinAggregation, + AggregationsTopHitsAggregation, + QueryDslQueryContainer, +} from '@elastic/elasticsearch/lib/api/types'; +import { categorizationAnalyzer } from '@kbn/aiops-log-pattern-analysis/categorization_analyzer'; +import { ChangePointType } from '@kbn/es-types/src'; +import { pValueToLabel } from '@kbn/observability-utils-common/ml/p_value_to_label'; +import { calculateAuto } from '@kbn/calculate-auto'; +import { omit, orderBy, uniqBy } from 'lodash'; +import moment from 'moment'; +import { ObservabilityElasticsearchClient } from '../es/client/create_observability_es_client'; +import { kqlQuery } from '../es/queries/kql_query'; +import { rangeQuery } from '../es/queries/range_query'; + +interface FieldPatternResultBase { + field: string; + count: number; + pattern: string; + regex: string; + sample: string; + firstOccurrence: string; + lastOccurrence: string; + highlight: Record<string, string[]>; + metadata: Record<string, unknown[]>; +} + +interface FieldPatternResultChanges { + timeseries: Array<{ x: number; y: number }>; + change: { + timestamp?: string; + significance: 'high' | 'medium' | 'low' | null; + type: ChangePointType; + change_point?: number; + p_value?: number; + }; +} + +export type FieldPatternResult<TChanges extends boolean | undefined = undefined> = + FieldPatternResultBase & (TChanges extends true ? FieldPatternResultChanges : {}); + +export type FieldPatternResultWithChanges = FieldPatternResult<true>; + +interface CategorizeTextOptions { + query: QueryDslQueryContainer; + metadata: string[]; + esClient: ObservabilityElasticsearchClient; + samplingProbability: number; + fields: string[]; + index: string | string[]; + useMlStandardTokenizer: boolean; + size: number; + start: number; + end: number; +} +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +type CategorizeTextSubAggregations = { + sample: { top_hits: AggregationsTopHitsAggregation }; + minTimestamp: { min: AggregationsMinAggregation }; + maxTimestamp: { max: AggregationsMaxAggregation }; +}; + +interface CategorizeTextAggregationResult { + categorize_text: AggregationsCategorizeTextAggregation; + aggs: CategorizeTextSubAggregations & + ( + | {} + | { + timeseries: { date_histogram: AggregationsDateHistogramAggregation }; + changes: { change_point: { buckets_path: string } }; + } + ); +} + +export async function runCategorizeTextAggregation< + TChanges extends boolean | undefined = undefined +>( + options: CategorizeTextOptions & { includeChanges?: TChanges } +): Promise<Array<FieldPatternResult<TChanges>>>; + +export async function runCategorizeTextAggregation({ + esClient, + fields, + metadata, + index, + query, + samplingProbability, + useMlStandardTokenizer, + includeChanges, + size, + start, + end, +}: CategorizeTextOptions & { includeChanges?: boolean }): Promise< + Array<FieldPatternResult<boolean>> +> { + const aggs = Object.fromEntries( + fields.map((field): [string, CategorizeTextAggregationResult] => [ + field, + { + categorize_text: { + field, + min_doc_count: 1, + size, + categorization_analyzer: useMlStandardTokenizer + ? { + tokenizer: 'ml_standard', + char_filter: [ + { + type: 'pattern_replace', + pattern: '\\\\n', + replacement: '', + } as unknown as string, + ], + } + : categorizationAnalyzer, + }, + aggs: { + minTimestamp: { + min: { + field: '@timestamp', + }, + }, + maxTimestamp: { + max: { + field: '@timestamp', + }, + }, + ...(includeChanges + ? { + timeseries: { + date_histogram: { + field: '@timestamp', + min_doc_count: 0, + extended_bounds: { + min: start, + max: end, + }, + fixed_interval: `${calculateAuto + .atLeast(30, moment.duration(end - start, 'ms'))! + .asMilliseconds()}ms`, + }, + }, + changes: { + change_point: { + buckets_path: 'timeseries>_count', + }, + }, + } + : {}), + sample: { + top_hits: { + size: 1, + _source: false, + fields: [field, ...metadata], + sort: { + _score: { + order: 'desc', + }, + }, + highlight: { + fields: { + '*': {}, + }, + }, + }, + }, + }, + }, + ]) + ); + + const response = await esClient.search('get_log_patterns', { + index, + size: 0, + track_total_hits: false, + query: { + bool: { + filter: [query, ...rangeQuery(start, end)], + }, + }, + aggregations: { + sampler: { + random_sampler: { + probability: samplingProbability, + }, + aggs, + }, + }, + }); + + if (!response.aggregations) { + return []; + } + + const fieldAggregates = omit(response.aggregations.sampler, 'seed', 'doc_count', 'probability'); + + return Object.entries(fieldAggregates).flatMap(([fieldName, aggregate]) => { + const buckets = aggregate.buckets; + + return buckets.map((bucket) => { + return { + field: fieldName, + count: bucket.doc_count, + pattern: bucket.key, + regex: bucket.regex, + sample: bucket.sample.hits.hits[0].fields![fieldName][0] as string, + highlight: bucket.sample.hits.hits[0].highlight ?? {}, + metadata: bucket.sample.hits.hits[0].fields!, + firstOccurrence: new Date(bucket.minTimestamp.value!).toISOString(), + lastOccurrence: new Date(bucket.maxTimestamp.value!).toISOString(), + ...('timeseries' in bucket + ? { + timeseries: bucket.timeseries.buckets.map((dateBucket) => ({ + x: dateBucket.key, + y: dateBucket.doc_count, + })), + change: Object.entries(bucket.changes.type).map( + ([changePointType, change]): FieldPatternResultChanges['change'] => { + return { + type: changePointType as ChangePointType, + significance: + change.p_value !== undefined ? pValueToLabel(change.p_value) : null, + change_point: change.change_point, + p_value: change.p_value, + timestamp: + change.change_point !== undefined + ? bucket.timeseries.buckets[change.change_point].key_as_string + : undefined, + }; + } + )[0], + } + : {}), + }; + }); + }); +} + +interface LogPatternOptions { + esClient: ObservabilityElasticsearchClient; + start: number; + end: number; + index: string | string[]; + kuery: string; + metadata?: string[]; + fields: string[]; +} + +export async function getLogPatterns<TChanges extends boolean | undefined = undefined>( + options: LogPatternOptions & { includeChanges?: TChanges } +): Promise<Array<FieldPatternResult<TChanges>>>; + +export async function getLogPatterns({ + esClient, + start, + end, + index, + kuery, + includeChanges, + metadata = [], + fields, +}: LogPatternOptions & { includeChanges?: boolean }): Promise<Array<FieldPatternResult<boolean>>> { + const fieldCapsResponse = await esClient.fieldCaps('get_field_caps_for_log_pattern_analysis', { + fields, + index_filter: { + bool: { + filter: [...rangeQuery(start, end)], + }, + }, + index, + types: ['text', 'match_only_text'], + }); + + const fieldsInFieldCaps = Object.keys(fieldCapsResponse.fields); + + if (!fieldsInFieldCaps.length) { + return []; + } + + const totalDocsResponse = await esClient.search('get_total_docs_for_log_pattern_analysis', { + index, + size: 0, + track_total_hits: true, + query: { + bool: { + filter: [...kqlQuery(kuery), ...rangeQuery(start, end)], + }, + }, + }); + + const totalHits = totalDocsResponse.hits.total.value; + + if (totalHits === 0) { + return []; + } + + let samplingProbability = 100_000 / totalHits; + + if (samplingProbability >= 0.5) { + samplingProbability = 1; + } + + const fieldGroups = includeChanges + ? fieldsInFieldCaps.map((field) => [field]) + : [fieldsInFieldCaps]; + + const allPatterns = await Promise.all( + fieldGroups.map(async (fieldGroup) => { + const topMessagePatterns = await runCategorizeTextAggregation({ + esClient, + index, + fields: fieldGroup, + query: { + bool: { + filter: kqlQuery(kuery), + }, + }, + samplingProbability, + useMlStandardTokenizer: false, + size: 100, + start, + end, + includeChanges, + metadata, + }); + + if (topMessagePatterns.length === 0) { + return []; + } + + const patternsToExclude = topMessagePatterns.filter((pattern) => { + // elasticsearch will barf because the query is too complex. this measures + // the # of groups to capture for a measure of complexity. + const complexity = pattern.regex.match(/(\.\+\?)|(\.\*\?)/g)?.length ?? 0; + return ( + complexity <= 25 && + // anything less than 50 messages should be re-processed with the ml_standard tokenizer + pattern.count > 50 + ); + }); + + const rareMessagePatterns = await runCategorizeTextAggregation({ + esClient, + index, + fields: fieldGroup, + start, + end, + query: { + bool: { + filter: kqlQuery(kuery), + must_not: [ + ...patternsToExclude.map((pattern) => { + return { + bool: { + filter: [ + { + regexp: { + [pattern.field]: { + value: pattern.regex, + }, + }, + }, + { + match: { + [pattern.field]: { + query: pattern.pattern, + fuzziness: 0, + operator: 'and' as const, + auto_generate_synonyms_phrase_query: false, + }, + }, + }, + ], + }, + }; + }), + ], + }, + }, + size: 1000, + includeChanges, + samplingProbability: 1, + useMlStandardTokenizer: true, + metadata, + }); + + return [...patternsToExclude, ...rareMessagePatterns]; + }) + ); + + return uniqBy( + orderBy(allPatterns.flat(), (pattern) => pattern.count, 'desc'), + (pattern) => pattern.sample + ); +} diff --git a/x-pack/packages/observability/observability_utils/observability_utils_server/tsconfig.json b/x-pack/packages/observability/observability_utils/observability_utils_server/tsconfig.json index f6dd781184b86..33d7e75322f00 100644 --- a/x-pack/packages/observability/observability_utils/observability_utils_server/tsconfig.json +++ b/x-pack/packages/observability/observability_utils/observability_utils_server/tsconfig.json @@ -24,6 +24,8 @@ "@kbn/alerting-plugin", "@kbn/rule-registry-plugin", "@kbn/rule-data-utils", + "@kbn/aiops-log-pattern-analysis", + "@kbn/calculate-auto", "@kbn/utility-types", "@kbn/task-manager-plugin", ] diff --git a/x-pack/packages/observability/synthetics_test_data/index.ts b/x-pack/packages/observability/synthetics_test_data/index.ts deleted file mode 100644 index d1fe1034d7b1e..0000000000000 --- a/x-pack/packages/observability/synthetics_test_data/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { makeUpSummary, makeDownSummary } from './src/make_summaries'; diff --git a/x-pack/packages/observability/synthetics_test_data/jest.config.js b/x-pack/packages/observability/synthetics_test_data/jest.config.js deleted file mode 100644 index 62001f4072246..0000000000000 --- a/x-pack/packages/observability/synthetics_test_data/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/synthetics_test_data'], -}; diff --git a/x-pack/packages/observability/synthetics_test_data/tsconfig.json b/x-pack/packages/observability/synthetics_test_data/tsconfig.json deleted file mode 100644 index 86d57b8d692f7..0000000000000 --- a/x-pack/packages/observability/synthetics_test_data/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - ] -} diff --git a/x-pack/packages/rollup/jest.config.js b/x-pack/packages/rollup/jest.config.js deleted file mode 100644 index 05a65766c9222..0000000000000 --- a/x-pack/packages/rollup/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/rollup'], -}; diff --git a/x-pack/packages/rollup/tsconfig.json b/x-pack/packages/rollup/tsconfig.json deleted file mode 100644 index 4ef55e499d329..0000000000000 --- a/x-pack/packages/rollup/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": ["@kbn/i18n"] -} diff --git a/x-pack/packages/security-solution/README.mdx b/x-pack/packages/security-solution/README.mdx deleted file mode 100644 index 8f46e37529f9d..0000000000000 --- a/x-pack/packages/security-solution/README.mdx +++ /dev/null @@ -1,10 +0,0 @@ -## Security Solution package - -This package compiles components used by Security Solution - -### Lazy by default - -All components are exported to be lazily-loaded with a default `React.Suspense` default most appropriate to its nature. - -If a page needs to alter the `React.Suspense` behavior, (e.g. a different "loading" component), one can import the `Lazy[ComponentName]` version and surround it with a custom `React.Suspense` component. - diff --git a/x-pack/packages/security-solution/data_table/README.md b/x-pack/packages/security-solution/data_table/README.md deleted file mode 100644 index 1cea501e31e30..0000000000000 --- a/x-pack/packages/security-solution/data_table/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Security Solutions's Data Table - -## Motivation - -The idea behind this package is to have a reusable data table component, embedding the features -available to alerts table in security solution plugin. - -## How to use this - -Standalone examples will follow. In the meantime: - -Consult the following file to get the idea of what is necessary to reuse the component - -`x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx` - -The following file: -`kibana/x-pack/plugins/security_solution/public/common/store/reducer.ts` - -showcases the redux store setup for the package. - -## The most important public api members - -- DataTableComponent itself -- dataTableReducer - -### Extras - -Be sure to check out provided helpers - -## Storybook - -General look of the component can be checked visually running the following storybook: -`yarn storybook security_solution_data_table` - -Note that all the interactions are mocked. \ No newline at end of file diff --git a/x-pack/packages/security-solution/data_table/jest.config.js b/x-pack/packages/security-solution/data_table/jest.config.js deleted file mode 100644 index 38f769e20277c..0000000000000 --- a/x-pack/packages/security-solution/data_table/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - roots: ['<rootDir>/x-pack/packages/security-solution/data_table'], - rootDir: '../../../..', -}; diff --git a/x-pack/packages/security-solution/data_table/tsconfig.json b/x-pack/packages/security-solution/data_table/tsconfig.json deleted file mode 100644 index 9fab7f29b9aab..0000000000000 --- a/x-pack/packages/security-solution/data_table/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": ["jest", "node", "react"] - }, - "include": ["**/*.ts", "**/*.tsx"], - "exclude": ["target/**/*"], - "kbn_references": [ - "@kbn/cell-actions", - "@kbn/timelines-plugin", - "@kbn/es-query", - "@kbn/triggers-actions-ui-plugin", - "@kbn/securitysolution-ecs", - "@kbn/safer-lodash-set", - "@kbn/i18n", - "@kbn/ui-theme", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/i18n-react", - "@kbn/ui-actions-plugin", - "@kbn/data-views-plugin", - "@kbn/field-formats-plugin", - "@kbn/data-plugin" - ] -} diff --git a/x-pack/packages/security-solution/distribution_bar/jest.config.js b/x-pack/packages/security-solution/distribution_bar/jest.config.js deleted file mode 100644 index efe091d25afdd..0000000000000 --- a/x-pack/packages/security-solution/distribution_bar/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - roots: ['<rootDir>/x-pack/packages/security-solution/distribution_bar'], - rootDir: '../../../..', -}; diff --git a/x-pack/packages/security-solution/distribution_bar/tsconfig.json b/x-pack/packages/security-solution/distribution_bar/tsconfig.json deleted file mode 100644 index b87424ce11016..0000000000000 --- a/x-pack/packages/security-solution/distribution_bar/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react", - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/ui-theme", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/jest.config.js b/x-pack/packages/security-solution/ecs_data_quality_dashboard/jest.config.js deleted file mode 100644 index 5f6f7ab9bce1f..0000000000000 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/packages/security-solution/ecs_data_quality_dashboard_impl', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*.{ts,tsx}', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/{__test__,__snapshots__,__examples__,*mock*,stub,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*mock*.{ts,tsx}', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*.test.{ts,tsx}', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*.d.ts', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*.config.ts', - ], - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard'], - setupFilesAfterEnv: [ - '<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/setup_tests.ts', - ], -}; diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/tsconfig.json b/x-pack/packages/security-solution/ecs_data_quality_dashboard/tsconfig.json deleted file mode 100644 index e42a916396971..0000000000000 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/ui-theme", - "@kbn/core-http-browser", - "@kbn/core-http-browser-mocks", - "@kbn/elastic-assistant", - "@kbn/triggers-actions-ui-plugin", - "@kbn/core", - "@kbn/core-notifications-browser", - "@kbn/core-notifications-browser-mocks", - ] -} diff --git a/x-pack/packages/security-solution/features/jest.config.js b/x-pack/packages/security-solution/features/jest.config.js deleted file mode 100644 index 47da21e7adff0..0000000000000 --- a/x-pack/packages/security-solution/features/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/features'], -}; diff --git a/x-pack/packages/security-solution/features/src/security/types.ts b/x-pack/packages/security-solution/features/src/security/types.ts deleted file mode 100644 index d069657070fc6..0000000000000 --- a/x-pack/packages/security-solution/features/src/security/types.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { ProductFeatureSecurityKey, SecuritySubFeatureId } from '../product_features_keys'; -import type { ProductFeatureKibanaConfig } from '../types'; - -export interface SecurityFeatureParams { - /** - * Experimental features. - * Unfortunately these can't be properly Typed due to it requiring an - * import directly from the Security Solution plugin. The list of `keys` in this - * object are defined here: - * @see https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/experimental_features.ts#L14 - */ - experimentalFeatures: Record<string, boolean>; - savedObjects: string[]; -} - -export type DefaultSecurityProductFeaturesConfig = Omit< - Record<ProductFeatureSecurityKey, ProductFeatureKibanaConfig<SecuritySubFeatureId>>, - ProductFeatureSecurityKey.endpointExceptions - // | add not generic security app features here ->; diff --git a/x-pack/packages/security-solution/features/tsconfig.json b/x-pack/packages/security-solution/features/tsconfig.json deleted file mode 100644 index 2c153f831721d..0000000000000 --- a/x-pack/packages/security-solution/features/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/features-plugin", - "@kbn/utility-types", - "@kbn/i18n", - "@kbn/core-application-common", - "@kbn/cases-plugin", - "@kbn/securitysolution-rules", - "@kbn/securitysolution-list-constants", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/packages/security-solution/navigation/jest.config.js b/x-pack/packages/security-solution/navigation/jest.config.js deleted file mode 100644 index a150e2a7b4c9c..0000000000000 --- a/x-pack/packages/security-solution/navigation/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/navigation'], -}; diff --git a/x-pack/packages/security-solution/navigation/src/constants.ts b/x-pack/packages/security-solution/navigation/src/constants.ts deleted file mode 100644 index d05d6c26807b5..0000000000000 --- a/x-pack/packages/security-solution/navigation/src/constants.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export const SECURITY_UI_APP_ID = 'securitySolutionUI' as const; - -export { SecurityPageName } from '@kbn/deeplinks-security'; - -export enum LinkCategoryType { - title = 'title', - collapsibleTitle = 'collapsibleTitle', - accordion = 'accordion', - separator = 'separator', -} - -/** - * External (non-Security) page names that need to be linked in the Security navigation. - * Format: `<pluginId>:<deepLinkId>/<path>`. - * - * `pluginId`: is the id of the plugin that owns the deep link - * - * `deepLinkId`: is the id of the deep link inside the plugin. - * Keep empty for the root page of the plugin, e.g. `osquery:` - * - * `path`: is the path to append to the plugin and deep link. - * This is optional and only needed if the path is not registered in the plugin's `deepLinks`. e.g. `integrations:/browse/security` - * The path should not be used for links displayed in the main left navigation, since highlighting won't work. - **/ -export enum ExternalPageName { - // Discover - discover = 'discover:', - // Osquery - osquery = 'osquery:', - // Analytics - maps = 'maps:', - visualize = 'visualize:', - // Machine Learning - // Ref: src/platform/packages/private/default-nav/ml/default_navigation.ts - mlOverview = 'ml:overview', - mlNotifications = 'ml:notifications', - mlMemoryUsage = 'ml:memoryUsage', - mlAnomalyDetection = 'ml:anomalyDetection', - mlAnomalyExplorer = 'ml:anomalyExplorer', - mlSingleMetricViewer = 'ml:singleMetricViewer', - mlSuppliedConfigurations = 'ml:suppliedConfigurations', - mlSettings = 'ml:settings', - mlDataFrameAnalytics = 'ml:dataFrameAnalytics', - mlResultExplorer = 'ml:resultExplorer', - mlAnalyticsMap = 'ml:analyticsMap', - mlNodesOverview = 'ml:nodesOverview', - mlNodes = 'ml:nodes', - mlFileUpload = 'ml:fileUpload', - mlIndexDataVisualizer = 'ml:indexDataVisualizer', - mlESQLdataVisualizer = 'ml:esqlDataVisualizer', - mlDataDrift = 'ml:dataDrift', - mlExplainLogRateSpikes = 'ml:logRateAnalysis', - mlLogPatternAnalysis = 'ml:logPatternAnalysis', - mlChangePointDetections = 'ml:changePointDetections', - // Dev Tools - // Ref: packages/default-nav/devtools/default_navigation.ts - devTools = 'dev_tools:', - // Fleet - // Ref: x-pack/plugins/fleet/public/deep_links.ts - fleet = 'fleet:', - fleetAgents = 'fleet:agents', - fleetPolicies = 'fleet:policies', - fleetEnrollmentTokens = 'fleet:enrollment_tokens', - fleetUninstallTokens = 'fleet:uninstall_tokens', - fleetDataStreams = 'fleet:data_streams', - fleetSettings = 'fleet:settings', - // Integrations - // No deepLinkId registered, using path for the security search - integrationsSecurity = 'integrations:/browse/security', - // Management - // Ref: packages/default-nav/management/default_navigation.ts - management = 'management:', - managementIngestPipelines = 'management:ingest_pipelines', - managementPipelines = 'management:pipelines', - managementIndexManagement = 'management:index_management', - managementTransforms = 'management:transform', - managementMaintenanceWindows = 'management:maintenanceWindows', - managementTriggersActions = 'management:triggersActions', - managementCases = 'management:cases', - managementTriggersActionsConnectors = 'management:triggersActionsConnectors', - managementReporting = 'management:reporting', - managementJobsListLink = 'management:jobsListLink', - managementDataViews = 'management:dataViews', - managementObjects = 'management:objects', - managementApiKeys = 'management:api_keys', - managementTags = 'management:tags', - managementFiles = 'management:filesManagement', - managementSpaces = 'management:spaces', - managementSettings = 'management:settings', - // Cloud UI - // These are links to Cloud UI outside Kibana - // Special Format: <cloud>:<cloudUrlKey> - // cloudUrlKey Ref: x-pack/plugins/security_solution_serverless/public/navigation/links/util.ts - cloudUsersAndRoles = 'cloud:usersAndRoles', - cloudBilling = 'cloud:billing', - cloudPerformance = 'cloud:performance', -} diff --git a/x-pack/packages/security-solution/navigation/tsconfig.json b/x-pack/packages/security-solution/navigation/tsconfig.json deleted file mode 100644 index a0ba8fb180bfb..0000000000000 --- a/x-pack/packages/security-solution/navigation/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react" - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/i18n", - "@kbn/core", - "@kbn/deeplinks-security" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/packages/security-solution/side_nav/jest.config.js b/x-pack/packages/security-solution/side_nav/jest.config.js deleted file mode 100644 index 89a16e7fff05e..0000000000000 --- a/x-pack/packages/security-solution/side_nav/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/side_nav'], -}; diff --git a/x-pack/packages/security-solution/side_nav/tsconfig.json b/x-pack/packages/security-solution/side_nav/tsconfig.json deleted file mode 100644 index 4468c671f4351..0000000000000 --- a/x-pack/packages/security-solution/side_nav/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react", - "@kbn/ambient-ui-types" - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/i18n", - "@kbn/analytics", - "@kbn/shared-ux-page-solution-nav", - "@kbn/security-solution-navigation", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/packages/security-solution/storybook/config/kibana.jsonc b/x-pack/packages/security-solution/storybook/config/kibana.jsonc deleted file mode 100644 index cc52a3074f250..0000000000000 --- a/x-pack/packages/security-solution/storybook/config/kibana.jsonc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "shared-common", - "id": "@kbn/security-solution-storybook-config", - "owner": "@elastic/security-threat-hunting-explore" -} diff --git a/x-pack/packages/security-solution/storybook/config/main.ts b/x-pack/packages/security-solution/storybook/config/main.ts deleted file mode 100644 index 4e7fca030c2f6..0000000000000 --- a/x-pack/packages/security-solution/storybook/config/main.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { defaultConfig } from '@kbn/storybook'; - -module.exports = { - ...defaultConfig, - stories: ['../../**/*.stories.+(tsx|mdx)'], - reactOptions: { - strictMode: true, - }, -}; diff --git a/x-pack/packages/security-solution/storybook/config/tsconfig.json b/x-pack/packages/security-solution/storybook/config/tsconfig.json deleted file mode 100644 index 1f8b2275f5191..0000000000000 --- a/x-pack/packages/security-solution/storybook/config/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "@kbn/ambient-storybook-types", - ] - }, - "include": [ - "**/*.ts" - ], - "kbn_references": [ - "@kbn/storybook", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/packages/security-solution/upselling/jest.config.js b/x-pack/packages/security-solution/upselling/jest.config.js deleted file mode 100644 index 014db69e5a69d..0000000000000 --- a/x-pack/packages/security-solution/upselling/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/upselling'], -}; diff --git a/x-pack/packages/security-solution/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx b/x-pack/packages/security-solution/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx deleted file mode 100644 index 626c3a4126334..0000000000000 --- a/x-pack/packages/security-solution/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; - -interface Props { - className?: string; - size?: keyof typeof sizeMap; -} - -export const sizeMap = { - xl: 64, - l: 48, - m: 32, - s: 24, - xs: 16, - xxs: 12, -}; - -/** - * Default Elastic AI Assistant logo - * - * TODO: This may be removed when the logo is added to EUI - */ -export const AssistantAvatar = ({ className, size = 's' }: Props) => ( - <svg - className={className} - fill="none" - height={sizeMap[size]} - role="img" - viewBox="0 0 64 64" - width={sizeMap[size]} - xmlns="http://www.w3.org/2000/svg" - > - <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> - <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> - <path - fill="#343741" - d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" - /> - <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> - </svg> -); diff --git a/x-pack/packages/security-solution/upselling/tsconfig.json b/x-pack/packages/security-solution/upselling/tsconfig.json deleted file mode 100644 index 70b145ed91b7d..0000000000000 --- a/x-pack/packages/security-solution/upselling/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react", - "@kbn/ambient-ui-types" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/security-solution-navigation", - "@kbn/shared-ux-page-kibana-template", - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/x-pack/packages/security/api_key_management/src/components/token_field.tsx b/x-pack/packages/security/api_key_management/src/components/token_field.tsx index ccda03a2315c2..fa3454bfae0bf 100644 --- a/x-pack/packages/security/api_key_management/src/components/token_field.tsx +++ b/x-pack/packages/security/api_key_management/src/components/token_field.tsx @@ -52,7 +52,7 @@ export const TokenField: FunctionComponent<TokenFieldProps> = ({ value, ...props defaultMessage: 'Copy to clipboard', })} iconType="copyClipboard" - color="success" + color="accentSecondary" style={{ backgroundColor: 'transparent' }} onClick={copyText} /> diff --git a/x-pack/packages/security/plugin_types_server/index.ts b/x-pack/packages/security/plugin_types_server/index.ts index 2b46fa0146a2a..4f213fc6c9920 100644 --- a/x-pack/packages/security/plugin_types_server/index.ts +++ b/x-pack/packages/security/plugin_types_server/index.ts @@ -50,6 +50,7 @@ export type { CheckUserProfilesPrivileges, AuthorizationMode, AuthorizationServiceSetup, + EsSecurityConfig, } from './src/authorization'; export type { SecurityPluginSetup, SecurityPluginStart } from './src/plugin'; export type { diff --git a/x-pack/packages/security/plugin_types_server/src/authorization/es_security_config.ts b/x-pack/packages/security/plugin_types_server/src/authorization/es_security_config.ts new file mode 100644 index 0000000000000..3f4d244d5fb9c --- /dev/null +++ b/x-pack/packages/security/plugin_types_server/src/authorization/es_security_config.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Client } from '@elastic/elasticsearch'; + +type XpackUsageResponse = Awaited<ReturnType<Client['xpack']['usage']>>; +type XpackUsageSecurity = XpackUsageResponse['security']; + +export type EsSecurityConfig = Pick<XpackUsageSecurity, 'operator_privileges'>; diff --git a/x-pack/packages/security/plugin_types_server/src/authorization/index.ts b/x-pack/packages/security/plugin_types_server/src/authorization/index.ts index c48e797dc1d1b..0ffa0900fa2d3 100644 --- a/x-pack/packages/security/plugin_types_server/src/authorization/index.ts +++ b/x-pack/packages/security/plugin_types_server/src/authorization/index.ts @@ -43,6 +43,7 @@ export type { PrivilegeDeprecationsRolesByFeatureIdResponse, } from './deprecations'; export type { AuthorizationMode } from './mode'; +export type { EsSecurityConfig } from './es_security_config'; export { GLOBAL_RESOURCE } from './constants'; export { elasticsearchRoleSchema, getKibanaRoleSchema } from './role_schema'; diff --git a/x-pack/packages/kbn-infra-forge/README.md b/x-pack/platform/packages/private/kbn-infra-forge/README.md similarity index 100% rename from x-pack/packages/kbn-infra-forge/README.md rename to x-pack/platform/packages/private/kbn-infra-forge/README.md diff --git a/x-pack/packages/kbn-infra-forge/index.ts b/x-pack/platform/packages/private/kbn-infra-forge/index.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/index.ts rename to x-pack/platform/packages/private/kbn-infra-forge/index.ts diff --git a/x-pack/platform/packages/private/kbn-infra-forge/jest.config.js b/x-pack/platform/packages/private/kbn-infra-forge/jest.config.js new file mode 100644 index 0000000000000..ca4dd781d58f8 --- /dev/null +++ b/x-pack/platform/packages/private/kbn-infra-forge/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/private/kbn-infra-forge'], +}; diff --git a/x-pack/packages/kbn-infra-forge/kibana.jsonc b/x-pack/platform/packages/private/kbn-infra-forge/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-infra-forge/kibana.jsonc rename to x-pack/platform/packages/private/kbn-infra-forge/kibana.jsonc diff --git a/x-pack/packages/kbn-infra-forge/package.json b/x-pack/platform/packages/private/kbn-infra-forge/package.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/package.json rename to x-pack/platform/packages/private/kbn-infra-forge/package.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/event.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/event.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/event.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/metricset.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/metricset.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/metricset.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/metricset.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/system.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/system.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/system.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/system.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/template.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/template.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/template.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/template.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/fake_hosts/index.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/fake_hosts/index.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/fake_hosts/index.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/fake_hosts/index.ts diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/fake_hosts/index_template_def.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/fake_hosts/index_template_def.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/fake_hosts/index_template_def.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/fake_hosts/index_template_def.ts diff --git a/x-pack/packages/kbn-infra-forge/src/lib/manage_template.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/lib/manage_template.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/lib/manage_template.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/lib/manage_template.ts diff --git a/x-pack/packages/kbn-infra-forge/src/lib/queue.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/lib/queue.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/lib/queue.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/lib/queue.ts diff --git a/x-pack/packages/kbn-infra-forge/src/run.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/run.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/run.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/run.ts diff --git a/x-pack/platform/packages/private/kbn-infra-forge/tsconfig.json b/x-pack/platform/packages/private/kbn-infra-forge/tsconfig.json new file mode 100644 index 0000000000000..44527346cbd92 --- /dev/null +++ b/x-pack/platform/packages/private/kbn-infra-forge/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + "./src/data_sources/composable/component/base.json", + "./src/data_sources/composable/component/event.json", + "./src/data_sources/composable/component/host.json", + "./src/data_sources/composable/component/metricset.json", + "./src/data_sources/composable/component/system.json", + "./src/data_sources/composable/template.json" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/tooling-log", + "@kbn/datemath" + ] +} diff --git a/x-pack/platform/packages/private/ml/url_state/index.ts b/x-pack/platform/packages/private/ml/url_state/index.ts index 13443af51bc4d..3bfc7f4ba1fa1 100644 --- a/x-pack/platform/packages/private/ml/url_state/index.ts +++ b/x-pack/platform/packages/private/ml/url_state/index.ts @@ -10,7 +10,7 @@ export { parseUrlState, usePageUrlState, useUrlState, - PageUrlStateService, + UrlStateService, Provider, UrlStateProvider, type Accessor, diff --git a/x-pack/platform/packages/private/ml/url_state/src/url_state.test.tsx b/x-pack/platform/packages/private/ml/url_state/src/url_state.test.tsx index 033ecd77fadf4..ab7726d99f238 100644 --- a/x-pack/platform/packages/private/ml/url_state/src/url_state.test.tsx +++ b/x-pack/platform/packages/private/ml/url_state/src/url_state.test.tsx @@ -6,14 +6,26 @@ */ import React, { useEffect, type FC } from 'react'; -import { render, act } from '@testing-library/react'; +import { render, act, renderHook } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; -import { parseUrlState, useUrlState, UrlStateProvider } from './url_state'; +import { + parseUrlState, + useUrlState, + UrlStateProvider, + usePageUrlState, + useGlobalUrlState, +} from './url_state'; const mockHistoryInitialState = "?_a=(mlExplorerFilter:(),mlExplorerSwimlane:(viewByFieldName:action),query:(query_string:(analyze_wildcard:!t,query:'*')))&_g=(ml:(jobIds:!(dec-2)),refreshInterval:(display:Off,pause:!f,value:0),time:(from:'2019-01-01T00:03:40.000Z',mode:absolute,to:'2019-08-30T11:55:07.000Z'))&savedSearchId=571aaf70-4c88-11e8-b3d7-01146121b73d"; +const wrapper = ({ children }: { children: React.ReactNode }) => ( + <MemoryRouter> + <UrlStateProvider>{children}</UrlStateProvider> + </MemoryRouter> +); + describe('getUrlState', () => { test('properly decode url with _g and _a', () => { expect(parseUrlState(mockHistoryInitialState)).toEqual({ @@ -143,3 +155,50 @@ describe('useUrlState', () => { expect(getByTestId('appState').innerHTML).toBe('the updated query'); }); }); + +describe('usePageUrlState', () => { + it('manages page-specific state with default values', () => { + const pageKey = 'testPage'; + const defaultPageState = { + defaultValue: 'initial', + }; + + const updatedPageState = { + defaultValue: 'updated', + }; + + const { result } = renderHook(() => usePageUrlState(pageKey, defaultPageState), { wrapper }); + + expect(result.current[0]).toEqual(defaultPageState); + + act(() => { + result.current[1](updatedPageState); + }); + + expect(result.current[0]).toEqual(updatedPageState); + }); +}); + +describe('useGlobalUrlState', () => { + it('manages global state with ML and time properties', () => { + const defaultState = { + ml: { jobIds: ['initial-job'] }, + time: { from: 'now-15m', to: 'now' }, + }; + + const updatedState = { + ml: { jobIds: ['updated-job'] }, + time: { from: 'now-1h', to: 'now' }, + }; + + const { result } = renderHook(() => useGlobalUrlState(defaultState), { wrapper }); + + expect(result.current[0]).toEqual(defaultState); + + act(() => { + result.current[1](updatedState); + }); + + expect(result.current[0]).toEqual(updatedState); + }); +}); diff --git a/x-pack/platform/packages/private/ml/url_state/src/url_state.tsx b/x-pack/platform/packages/private/ml/url_state/src/url_state.tsx index 7cd6bc1d812e6..e24176321094a 100644 --- a/x-pack/platform/packages/private/ml/url_state/src/url_state.tsx +++ b/x-pack/platform/packages/private/ml/url_state/src/url_state.tsx @@ -26,6 +26,7 @@ import type { Observable } from 'rxjs'; import { BehaviorSubject } from 'rxjs'; import { distinctUntilChanged } from 'rxjs'; import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import useDeepCompareEffect from 'react-use/lib/useDeepCompareEffect'; export interface Dictionary<TValue> { [id: string]: TValue; @@ -211,27 +212,26 @@ export const useUrlState = ( /** * Service for managing URL state of particular page. */ -export class PageUrlStateService<T> { - private _pageUrlState$ = new BehaviorSubject<T | null>(null); - private _pageUrlStateCallback: ((update: Partial<T>, replaceState?: boolean) => void) | null = - null; +export class UrlStateService<T> { + private _urlState$ = new BehaviorSubject<T | null>(null); + private _urlStateCallback: ((update: Partial<T>, replaceState?: boolean) => void) | null = null; /** * Provides updates for the page URL state. */ - public getPageUrlState$(): Observable<T> { - return this._pageUrlState$.pipe(distinctUntilChanged(isEqual)); + public getUrlState$(): Observable<T> { + return this._urlState$.pipe(distinctUntilChanged(isEqual)); } - public getPageUrlState(): T | null { - return this._pageUrlState$.getValue(); + public getUrlState(): T | null { + return this._urlState$.getValue(); } public updateUrlState(update: Partial<T>, replaceState?: boolean): void { - if (!this._pageUrlStateCallback) { + if (!this._urlStateCallback) { throw new Error('Callback has not been initialized.'); } - this._pageUrlStateCallback(update, replaceState); + this._urlStateCallback(update, replaceState); } /** @@ -239,7 +239,7 @@ export class PageUrlStateService<T> { * @param currentState */ public setCurrentState(currentState: T): void { - this._pageUrlState$.next(currentState); + this._urlState$.next(currentState); } /** @@ -247,7 +247,7 @@ export class PageUrlStateService<T> { * @param callback */ public setUpdateCallback(callback: (update: Partial<T>, replaceState?: boolean) => void): void { - this._pageUrlStateCallback = callback; + this._urlStateCallback = callback; } } @@ -256,32 +256,53 @@ export interface PageUrlState { pageUrlState: object; } -/** - * Hook for managing the URL state of the page. - */ -export const usePageUrlState = <T extends PageUrlState>( - pageKey: T['pageKey'], - defaultState?: T['pageUrlState'] -): [ - T['pageUrlState'], - (update: Partial<T['pageUrlState']>, replaceState?: boolean) => void, - PageUrlStateService<T['pageUrlState']> -] => { - const [appState, setAppState] = useUrlState('_a'); - const pageState = appState?.[pageKey]; +interface AppStateOptions<T> { + pageKey: string; + defaultState?: T; +} - const setCallback = useRef<typeof setAppState>(); +interface GlobalStateOptions<T> { + defaultState?: T; +} + +type UrlStateOptions<K extends Accessor, T> = K extends '_a' + ? AppStateOptions<T> + : GlobalStateOptions<T>; + +function isAppStateOptions<T>( + _stateKey: Accessor, + options: Partial<AppStateOptions<T>> +): options is AppStateOptions<T> { + return 'pageKey' in options; +} + +export const useUrlStateService = <K extends Accessor, T>( + stateKey: K, + options: UrlStateOptions<K, T> +): [T, (update: Partial<T>, replaceState?: boolean) => void, UrlStateService<T>] => { + const optionsRef = useRef(options); + + useDeepCompareEffect(() => { + optionsRef.current = options; + }, [options]); + + const [state, setState] = useUrlState(stateKey); + const urlState = isAppStateOptions<T>(stateKey, optionsRef.current) + ? state?.[optionsRef.current.pageKey] + : state; + + const setCallback = useRef<typeof setState>(); useEffect(() => { - setCallback.current = setAppState; - }, [setAppState]); + setCallback.current = setState; + }, [setState]); - const prevPageState = useRef<T['pageUrlState'] | undefined>(); + const prevPageState = useRef<T | undefined>(); - const resultPageState: T['pageUrlState'] = useMemo(() => { + const resultState: T = useMemo(() => { const result = { - ...(defaultState ?? {}), - ...(pageState ?? {}), + ...(optionsRef.current.defaultState ?? {}), + ...(urlState ?? {}), }; if (isEqual(result, prevPageState.current)) { @@ -300,38 +321,82 @@ export const usePageUrlState = <T extends PageUrlState>( prevPageState.current = result; return result; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [pageState]); + }, [urlState]); const onStateUpdate = useCallback( - (update: Partial<T['pageUrlState']>, replaceState?: boolean) => { + (update: Partial<T>, replaceState?: boolean) => { if (!setCallback?.current) { throw new Error('Callback for URL state update has not been initialized.'); } - - setCallback.current( - pageKey, - { - ...resultPageState, - ...update, - }, - replaceState - ); + if (isAppStateOptions<T>(stateKey, optionsRef.current)) { + setCallback.current( + optionsRef.current.pageKey, + { + ...resultState, + ...update, + }, + replaceState + ); + } else { + setCallback.current({ ...resultState, ...update }, replaceState); + } }, - [pageKey, resultPageState] + [stateKey, resultState] ); - const pageUrlStateService = useMemo(() => new PageUrlStateService<T['pageUrlState']>(), []); + const urlStateService = useMemo(() => new UrlStateService<T>(), []); useEffect( - function updatePageUrlService() { - pageUrlStateService.setCurrentState(resultPageState); - pageUrlStateService.setUpdateCallback(onStateUpdate); + function updateUrlStateService() { + urlStateService.setCurrentState(resultState); + urlStateService.setUpdateCallback(onStateUpdate); }, - [pageUrlStateService, onStateUpdate, resultPageState] + [urlStateService, onStateUpdate, resultState] ); - return useMemo(() => { - return [resultPageState, onStateUpdate, pageUrlStateService]; - }, [resultPageState, onStateUpdate, pageUrlStateService]); + return useMemo( + () => [resultState, onStateUpdate, urlStateService], + [resultState, onStateUpdate, urlStateService] + ); +}; + +/** + * Hook for managing the URL state of the page. + */ +export const usePageUrlState = <T extends PageUrlState>( + pageKey: T['pageKey'], + defaultState?: T['pageUrlState'] +): [ + T['pageUrlState'], + (update: Partial<T['pageUrlState']>, replaceState?: boolean) => void, + UrlStateService<T['pageUrlState']> +] => { + return useUrlStateService<'_a', T['pageUrlState']>('_a', { pageKey, defaultState }); +}; + +/** + * Global state type, to add more state types, add them here + */ + +export interface GlobalState { + ml: { + jobIds: string[]; + }; + time?: { + from: string; + to: string; + }; +} + +/** + * Hook for managing the global URL state. + */ +export const useGlobalUrlState = ( + defaultState?: GlobalState +): [ + GlobalState, + (update: Partial<GlobalState>, replaceState?: boolean) => void, + UrlStateService<GlobalState> +] => { + return useUrlStateService<'_g', GlobalState>('_g', { defaultState }); }; diff --git a/x-pack/packages/rollup/README.md b/x-pack/platform/packages/private/rollup/README.md similarity index 100% rename from x-pack/packages/rollup/README.md rename to x-pack/platform/packages/private/rollup/README.md diff --git a/x-pack/packages/rollup/index.ts b/x-pack/platform/packages/private/rollup/index.ts similarity index 100% rename from x-pack/packages/rollup/index.ts rename to x-pack/platform/packages/private/rollup/index.ts diff --git a/x-pack/platform/packages/private/rollup/jest.config.js b/x-pack/platform/packages/private/rollup/jest.config.js new file mode 100644 index 0000000000000..5975f0f68097b --- /dev/null +++ b/x-pack/platform/packages/private/rollup/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/private/rollup'], +}; diff --git a/x-pack/packages/rollup/kibana.jsonc b/x-pack/platform/packages/private/rollup/kibana.jsonc similarity index 100% rename from x-pack/packages/rollup/kibana.jsonc rename to x-pack/platform/packages/private/rollup/kibana.jsonc diff --git a/x-pack/packages/rollup/package.json b/x-pack/platform/packages/private/rollup/package.json similarity index 100% rename from x-pack/packages/rollup/package.json rename to x-pack/platform/packages/private/rollup/package.json diff --git a/x-pack/packages/rollup/src/constants/index.ts b/x-pack/platform/packages/private/rollup/src/constants/index.ts similarity index 100% rename from x-pack/packages/rollup/src/constants/index.ts rename to x-pack/platform/packages/private/rollup/src/constants/index.ts diff --git a/x-pack/packages/rollup/src/index.ts b/x-pack/platform/packages/private/rollup/src/index.ts similarity index 100% rename from x-pack/packages/rollup/src/index.ts rename to x-pack/platform/packages/private/rollup/src/index.ts diff --git a/x-pack/packages/rollup/src/rollup_deprecation_tooltip/index.ts b/x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/index.ts similarity index 100% rename from x-pack/packages/rollup/src/rollup_deprecation_tooltip/index.ts rename to x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/index.ts diff --git a/x-pack/packages/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx b/x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx similarity index 100% rename from x-pack/packages/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx rename to x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx diff --git a/x-pack/platform/packages/private/rollup/tsconfig.json b/x-pack/platform/packages/private/rollup/tsconfig.json new file mode 100644 index 0000000000000..b396ea0bc88e0 --- /dev/null +++ b/x-pack/platform/packages/private/rollup/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": ["@kbn/i18n"] +} diff --git a/x-pack/packages/kbn-ai-assistant-common/README.md b/x-pack/platform/packages/shared/ai-assistant/common/README.md similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/README.md rename to x-pack/platform/packages/shared/ai-assistant/common/README.md diff --git a/x-pack/packages/kbn-ai-assistant-common/index.ts b/x-pack/platform/packages/shared/ai-assistant/common/index.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/index.ts rename to x-pack/platform/packages/shared/ai-assistant/common/index.ts diff --git a/x-pack/platform/packages/shared/ai-assistant/common/jest.config.js b/x-pack/platform/packages/shared/ai-assistant/common/jest.config.js new file mode 100644 index 0000000000000..64fbdd9d6aee7 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/common/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_ai_assistant_common_src', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/packages/shared/ai-assistant/common/src/**/*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/ai-assistant/common/src/*.test.{ts,tsx}', + ], + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/ai-assistant/common'], +}; diff --git a/x-pack/packages/kbn-ai-assistant-common/kibana.jsonc b/x-pack/platform/packages/shared/ai-assistant/common/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/kibana.jsonc rename to x-pack/platform/packages/shared/ai-assistant/common/kibana.jsonc diff --git a/x-pack/packages/kbn-ai-assistant-common/package.json b/x-pack/platform/packages/shared/ai-assistant/common/package.json similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/package.json rename to x-pack/platform/packages/shared/ai-assistant/common/package.json diff --git a/x-pack/packages/kbn-ai-assistant-common/setup_tests.ts b/x-pack/platform/packages/shared/ai-assistant/common/setup_tests.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/setup_tests.ts rename to x-pack/platform/packages/shared/ai-assistant/common/setup_tests.ts diff --git a/x-pack/packages/kbn-ai-assistant-common/src/index.ts b/x-pack/platform/packages/shared/ai-assistant/common/src/index.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/src/index.ts rename to x-pack/platform/packages/shared/ai-assistant/common/src/index.ts diff --git a/x-pack/packages/kbn-ai-assistant-common/src/types/index.ts b/x-pack/platform/packages/shared/ai-assistant/common/src/types/index.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/src/types/index.ts rename to x-pack/platform/packages/shared/ai-assistant/common/src/types/index.ts diff --git a/x-pack/packages/kbn-ai-assistant-common/src/utils/filter_scopes.ts b/x-pack/platform/packages/shared/ai-assistant/common/src/utils/filter_scopes.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/src/utils/filter_scopes.ts rename to x-pack/platform/packages/shared/ai-assistant/common/src/utils/filter_scopes.ts diff --git a/x-pack/packages/kbn-ai-assistant-common/src/utils/index.ts b/x-pack/platform/packages/shared/ai-assistant/common/src/utils/index.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/src/utils/index.ts rename to x-pack/platform/packages/shared/ai-assistant/common/src/utils/index.ts diff --git a/x-pack/platform/packages/shared/ai-assistant/common/tsconfig.json b/x-pack/platform/packages/shared/ai-assistant/common/tsconfig.json new file mode 100644 index 0000000000000..c214aaeb21c62 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/common/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] +} diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/README.md b/x-pack/platform/packages/shared/ai-assistant/icon/README.md new file mode 100644 index 0000000000000..88c8421820fdc --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/README.md @@ -0,0 +1,3 @@ +# @kbn/ai-assistant-icon + +Empty package generated by @kbn/generate diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/avatar.stories.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/avatar.stories.tsx new file mode 100644 index 0000000000000..829f18d138d5f --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/avatar.stories.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ComponentMeta, ComponentStory } from '@storybook/react'; + +import { AssistantAvatar as Component } from '../avatar'; + +export default { + title: 'Assistant Icon/Avatar', + component: Component, + argTypes: { + iconSize: { + control: 'select', + options: ['original', 's', 'm', 'l', 'xl', 'xxl', undefined], + defaultValue: undefined, + }, + size: { + control: 'select', + options: ['s', 'm', 'l', 'xl', undefined], + defaultValue: undefined, + }, + name: { + control: 'text', + defaultValue: 'Elastic Assistant', + }, + }, +} as ComponentMeta<typeof Component>; + +export const Avatar: ComponentStory<typeof Component> = (args) => <Component {...args} />; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/beacon.stories.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/beacon.stories.tsx new file mode 100644 index 0000000000000..b0a77f6cab3cb --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/beacon.stories.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ComponentMeta, ComponentStory } from '@storybook/react'; + +import { AssistantBeacon as Component } from '../beacon'; + +export default { + title: 'Assistant Icon/Beacon', + component: Component, + argTypes: { + size: { + control: 'select', + options: ['original', 's', 'm', 'l', 'xl', 'xxl'], + defaultValue: 'xxl', + }, + }, +} as ComponentMeta<typeof Component>; + +export const Beacon: ComponentStory<typeof Component> = (args) => <Component {...args} />; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/icon.stories.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/icon.stories.tsx new file mode 100644 index 0000000000000..e27ec513e7aa8 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/icon.stories.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ComponentMeta, ComponentStory } from '@storybook/react'; + +import { AssistantIcon as Component } from '../icon'; + +export default { + title: 'Assistant Icon/Icon', + component: Component, + argTypes: { + size: { + control: 'select', + options: ['original', 's', 'm', 'l', 'xl', 'xxl'], + defaultValue: 'xxl', + }, + }, +} as ComponentMeta<typeof Component>; + +export const Icon: ComponentStory<typeof Component> = (args) => <Component {...args} />; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/avatar.styles.ts b/x-pack/platform/packages/shared/ai-assistant/icon/avatar.styles.ts new file mode 100644 index 0000000000000..3b9d0b40ef274 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/avatar.styles.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; + +export const useStyles = () => { + const { + euiTheme: { border, size }, + } = useEuiTheme(); + + const root = css` + border: ${border.thin}; + padding: ${size.xs}; + `; + + return { root }; +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx new file mode 100644 index 0000000000000..40142b8b30fa8 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiAvatar, EuiAvatarProps } from '@elastic/eui'; + +import { AssistantIcon } from './icon'; +import { useStyles } from './avatar.styles'; + +/** + * Avatar component for the AI Assistant. + */ +export type AssistantAvatarProps = Omit< + EuiAvatarProps, + 'iconType' | 'initials' | 'initialsLength' | 'imageUrl' +>; + +/** + * A `EuiAvatar` component customized for the AI Assistant. + */ +export const AssistantAvatar = ({ + css, + color = 'plain', + size = 'm', + ...props +}: AssistantAvatarProps) => { + const { root } = useStyles(); + return <EuiAvatar {...{ ...props, color, size }} css={[root, css]} iconType={AssistantIcon} />; +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/beacon.styles.ts b/x-pack/platform/packages/shared/ai-assistant/icon/beacon.styles.ts new file mode 100644 index 0000000000000..5fff8e45f2031 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/beacon.styles.ts @@ -0,0 +1,138 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; +import { AssistantBeaconProps } from './beacon'; + +/** + * Returns contextually-relevant styles for the AI Assistant beacon. + */ +export const useStyles = ({ + backgroundColor = 'body', + size: iconSize = 'xxl', +}: AssistantBeaconProps) => { + const { + euiTheme: { colors, size }, + } = useEuiTheme(); + + const background = colors[backgroundColor]; + const rootSize = size[iconSize]; + + const root = css` + // Distance between the icon and the ring + --ring-padding: ${Math.max(parseInt(rootSize, 10) / 2, parseInt(size.m, 10))}px; + --ring-size: calc(${rootSize} + var(--ring-padding)); + + // Size of the mask that hides the ring at frame 0 + --mask-point: calc(var(--ring-size) + 1px); + + // Overall size of the icon, given the animation doubles the + // ring size at its end. + --root-size: calc(var(--ring-size) * 2); + + background-color: ${background}; + display: flex; + justify-content: center; + align-items: center; + position: relative; + width: var(--root-size); + height: var(--root-size); + + &:after { + content: ''; + position: absolute; + height: var(--mask-point); + width: var(--mask-point); + z-index: 2; + border: 2px solid ${background}; + border-radius: 50%; + } + `; + + const rings = css` + display: inline-block; + position: absolute; + height: var(--ring-size); + width: var(--ring-size); + + @keyframes outer { + 0% { + opacity: 1; + transform: scaleY(1) scaleX(1); + } + 20% { + opacity: 0.5; + } + 70% { + opacity: 0.2; + transform: scaleY(2) scaleX(2); + } + 80% { + opacity: 0; + transform: scaleY(2) scaleX(2); + } + 90% { + opacity: 0; + transform: scaleY(1) scaleX(1); + } + } + + @keyframes inner { + 0% { + opacity: 1; + transform: scaleY(1) scaleX(1); + } + 15% { + opacity: 1; + transform: scaleY(1) scaleX(1); + } + 40% { + opacity: 0.5; + } + 70% { + opacity: 0.2; + transform: scaleY(1.5) scaleX(1.5); + } + 80% { + opacity: 0; + transform: scaleY(1.5) scaleX(1.5); + } + 90% { + opacity: 0; + transform: scaleY(1) scaleX(1); + } + } + + &:before, + &:after { + content: ''; + position: absolute; + width: var(--ring-size); + height: var(--ring-size); + top: 0; + left: 0; + z-index: 0; + border: 1px solid ${colors.primary}; + border-radius: 50%; + animation: 4s cubic-bezier(0.42, 0, 0.37, 1) 0.5s infinite normal none running; + } + + &:before { + animation-name: inner; + } + + &:after { + animation-name: outer; + } + `; + + return { + root, + rings, + }; +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx new file mode 100644 index 0000000000000..12594d97efa35 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { EuiIconProps, EuiThemeComputed } from '@elastic/eui'; + +import { AssistantIcon } from './icon'; +import { useStyles } from './beacon.styles'; + +type Size = keyof EuiThemeComputed['size'] & EuiIconProps['size']; + +/** + * Parameters for the styles for the AI Assistant beacon. + */ +export interface AssistantBeaconProps { + /** + * Background color for the beacon. + */ + backgroundColor?: keyof EuiThemeComputed['colors']; + /** + * Size of the beacon. + */ + size?: Size; +} + +/** + * An AI Assistant icon with a pulsing ring around it, used in "hero" areas promoting functionality or prompting interaction. + */ +export const AssistantBeacon = ({ backgroundColor, size = 'xxl' }: AssistantBeaconProps) => { + const { root, rings } = useStyles({ backgroundColor, size }); + + return ( + <div css={root}> + <AssistantIcon {...{ size }} /> + <span css={rings} /> + </div> + ); +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx new file mode 100644 index 0000000000000..39b4d9391df29 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiIcon, EuiIconProps } from '@elastic/eui'; +import { dynamic } from '@kbn/shared-ux-utility'; + +/** + * Props for the AI Assistant icon. + */ +export type AssistantIconProps = Omit<EuiIconProps, 'type'>; + +/** + * Default Elastic AI Assistant icon. + */ +export const AssistantIcon = ({ size = 'm', ...rest }: AssistantIconProps) => { + // TODO: can be removed once added to EUI. + const type = dynamic(() => import('./svg/assistant')); + return <EuiIcon {...{ type, size, ...rest }} />; +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/index.ts b/x-pack/platform/packages/shared/ai-assistant/icon/index.ts new file mode 100644 index 0000000000000..4cf6a0daacab3 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { AssistantAvatar, type AssistantAvatarProps } from './avatar'; +export { AssistantBeacon, type AssistantBeaconProps } from './beacon'; +export { AssistantIcon, type AssistantIconProps } from './icon'; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/jest.config.js b/x-pack/platform/packages/shared/ai-assistant/icon/jest.config.js new file mode 100644 index 0000000000000..fdfd796189ed9 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/ai-assistant/icon'], +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/kibana.jsonc b/x-pack/platform/packages/shared/ai-assistant/icon/kibana.jsonc new file mode 100644 index 0000000000000..35576a4c73158 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/kibana.jsonc @@ -0,0 +1,7 @@ +{ + "type": "shared-browser", + "id": "@kbn/ai-assistant-icon", + "owner": "@elastic/appex-sharedux", + "visibility": "shared", + "group": "platform" +} diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/package.json b/x-pack/platform/packages/shared/ai-assistant/icon/package.json new file mode 100644 index 0000000000000..c88a4d89d8945 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/ai-assistant-icon", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0" +} \ No newline at end of file diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.svg b/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.svg new file mode 100644 index 0000000000000..d4334388fd468 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.svg @@ -0,0 +1,9 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="100%" width="100%" viewBox="0 0 64 64" fill="none"> + <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> + <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> + <path + fill="#343741" + d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" + /> + <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> +</svg> diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.tsx new file mode 100644 index 0000000000000..9d47665d3e06e --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +const AssistantLogo = (props: React.SVGProps<SVGSVGElement>) => ( + <svg + xmlns="http://www.w3.org/2000/svg" + height="100%" + width="100%" + viewBox="0 0 64 64" + fill="none" + {...props} + > + <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> + <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> + <path + fill="#343741" + d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" + /> + <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> + </svg> +); + +// eslint-disable-next-line import/no-default-export +export { AssistantLogo as default }; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/tsconfig.json b/x-pack/platform/packages/shared/ai-assistant/icon/tsconfig.json new file mode 100644 index 0000000000000..59f40eee91e0d --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@kbn/ambient-ui-types" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/shared-ux-utility", + ] +} diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/index.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/index.ts index 4b5ef3a5cfda1..603192fb96db4 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/index.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/index.ts @@ -13,6 +13,9 @@ export { type AssistantMessage, type ToolMessage, type UserMessage, + type MessageOf, + type AssistantMessageOf, + type ToolMessageOf, type ToolSchemaType, type FromToolSchema, type ToolSchema, diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/index.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/index.ts index 3daa898ab2e1a..cedc8297d75bc 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/index.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/index.ts @@ -33,6 +33,9 @@ export { type AssistantMessage, type UserMessage, type ToolMessage, + type AssistantMessageOf, + type MessageOf, + type ToolMessageOf, } from './messages'; export { type ToolSchema, type ToolSchemaType, type FromToolSchema } from './tool_schema'; export { diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts index ca74b094e0a3b..43d03cf130c01 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolCall } from './tools'; +import type { ToolCall, ToolCallsOf, ToolNamesOf, ToolOptions, ToolResponsesOf } from './tools'; /** * Enum for all possible {@link Message} roles. @@ -52,17 +52,32 @@ export type AssistantMessage = MessageBase<MessageRole.Assistant> & { /** * Represents a tool invocation result, following a request from the LLM to execute a tool. */ -export type ToolMessage<TToolResponse extends Record<string, any> | unknown> = - MessageBase<MessageRole.Tool> & { - /** - * The call id matching the {@link ToolCall} this tool message is for. - */ - toolCallId: string; - /** - * The response from the tool invocation. - */ - response: TToolResponse; - }; +export type ToolMessage< + TName extends string = string, + TToolResponse extends Record<string, any> | unknown = Record<string, any> | unknown, + TToolData extends Record<string, any> | undefined = Record<string, any> | undefined +> = MessageBase<MessageRole.Tool> & { + /* + * The name of the tool called. Used for refining the type of the response. + */ + name: TName; + /** + * The call id matching the {@link ToolCall} this tool message is for. + */ + toolCallId: string; + /** + * The response from the tool invocation. + */ + response: TToolResponse; +} & (TToolData extends undefined + ? {} + : { + /** + * Additional data from the tool invocation, that is not sent to the LLM + * but can be used to attach baggage (such as timeseries or debug data) + */ + data: TToolData; + }); /** * Mixin composed of all the possible types of messages in a chatComplete discussion. @@ -72,4 +87,30 @@ export type ToolMessage<TToolResponse extends Record<string, any> | unknown> = * - {@link AssistantMessage} * - {@link ToolMessage} */ -export type Message = UserMessage | AssistantMessage | ToolMessage<unknown>; +export type Message = UserMessage | AssistantMessage | ToolMessage; + +/** + * Utility type to get the Assistant message type of a {@link ToolOptions} type. + */ +export type AssistantMessageOf<TToolOptions extends ToolOptions> = Omit< + AssistantMessage, + 'toolCalls' +> & + ToolCallsOf<TToolOptions>; + +/** + * Utility type to get the Tool message type of a {@link ToolOptions} type. + */ + +export type ToolMessageOf<TToolOptions extends ToolOptions> = ToolMessage< + ToolNamesOf<TToolOptions>, + ToolResponsesOf<TToolOptions['tools']> +>; + +/** + * Utility type to get the mixin Message type of a {@link ToolOptions} type. + */ +export type MessageOf<TToolOptions extends ToolOptions> = + | UserMessage + | AssistantMessageOf<TToolOptions> + | ToolMessageOf<TToolOptions>; diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts index 0c7d5c6755f31..5cd52d5f58883 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts @@ -8,24 +8,24 @@ import type { ValuesType } from 'utility-types'; import { FromToolSchema, ToolSchema } from './tool_schema'; -type Assert<TValue, TType> = TValue extends TType ? TValue & TType : never; - type ToolsOfChoice<TToolOptions extends ToolOptions> = TToolOptions['toolChoice'] extends { function: infer TToolName; } ? TToolName extends keyof TToolOptions['tools'] - ? Pick<TToolOptions['tools'], TToolName> + ? TToolName extends string + ? Pick<TToolOptions['tools'], TToolName> + : TToolOptions['tools'] : TToolOptions['tools'] : TToolOptions['tools']; /** * Utility type to infer the tool calls response shape. */ -type ToolResponsesOf<TTools extends Record<string, ToolDefinition> | undefined> = +export type ToolResponsesOf<TTools extends Record<string, ToolDefinition> | undefined> = TTools extends Record<string, ToolDefinition> ? Array< ValuesType<{ - [TName in keyof TTools]: ToolResponseOf<Assert<TName, string>, TTools[TName]>; + [TName in keyof TTools & string]: ToolCall<TName, ToolResponseOf<TTools[TName]>>; }> > : never[]; @@ -33,10 +33,11 @@ type ToolResponsesOf<TTools extends Record<string, ToolDefinition> | undefined> /** * Utility type to infer the tool call response shape. */ -type ToolResponseOf<TName extends string, TToolDefinition extends ToolDefinition> = ToolCall< - TName, - TToolDefinition extends { schema: ToolSchema } ? FromToolSchema<TToolDefinition['schema']> : {} ->; +export type ToolResponseOf<TToolDefinition extends ToolDefinition> = TToolDefinition extends { + schema: ToolSchema; +} + ? FromToolSchema<TToolDefinition['schema']> + : {}; /** * Tool invocation choice type. @@ -129,6 +130,10 @@ export interface ToolCall< name: TName; } & (TArguments extends Record<string, any> ? { arguments: TArguments } : {}); } +/** + * Utility type to get the tool names of ToolOptions + */ +export type ToolNamesOf<TToolOptions extends ToolOptions> = keyof TToolOptions['tools'] & string; /** * Tool-related parameters of {@link ChatCompleteAPI} diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts index 3355042910a61..cd90394cd67d3 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts @@ -96,6 +96,17 @@ export interface OutputOptions< * Defaults to false. */ stream?: TStream; + + /** + * Optional configuration for retrying the call if an error occurs. + */ + retry?: { + /** + * Whether to retry on validation errors. Can be a number or retries, + * or a boolean, which means one retry. + */ + onValidationError?: boolean | number; + }; } /** diff --git a/x-pack/platform/packages/shared/ai-infra/product-doc-common/package.json b/x-pack/platform/packages/shared/ai-infra/product-doc-common/package.json index 839d411a2efb9..2d7c67f17728d 100644 --- a/x-pack/platform/packages/shared/ai-infra/product-doc-common/package.json +++ b/x-pack/platform/packages/shared/ai-infra/product-doc-common/package.json @@ -3,4 +3,4 @@ "private": true, "version": "1.0.0", "license": "Elastic License 2.0" -} \ No newline at end of file +} diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/README.md b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/README.md similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/README.md rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/README.md diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/kibana.jsonc b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/kibana.jsonc similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/kibana.jsonc rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/kibana.jsonc diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/package.json b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/package.json similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/package.json rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/package.json diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts diff --git a/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json new file mode 100644 index 0000000000000..0e4ba01c6d576 --- /dev/null +++ b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + ] +} diff --git a/x-pack/packages/index-management/index_management_shared_types/README.md b/x-pack/platform/packages/shared/index-management/index_management_shared_types/README.md similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/README.md rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/README.md diff --git a/x-pack/packages/index-management/index_management_shared_types/index.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/index.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/index.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/index.ts diff --git a/x-pack/platform/packages/shared/index-management/index_management_shared_types/jest.config.js b/x-pack/platform/packages/shared/index-management/index_management_shared_types/jest.config.js new file mode 100644 index 0000000000000..2b8ce5014e57c --- /dev/null +++ b/x-pack/platform/packages/shared/index-management/index_management_shared_types/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '<rootDir>/x-pack/platform/packages/shared/index-management/index_management_shared_types', + ], +}; diff --git a/x-pack/packages/index-management/index_management_shared_types/kibana.jsonc b/x-pack/platform/packages/shared/index-management/index_management_shared_types/kibana.jsonc similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/kibana.jsonc rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/kibana.jsonc diff --git a/x-pack/packages/index-management/index_management_shared_types/package.json b/x-pack/platform/packages/shared/index-management/index_management_shared_types/package.json similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/package.json rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/package.json diff --git a/x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts diff --git a/x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts diff --git a/x-pack/packages/index-management/index_management_shared_types/src/services/index.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/index.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/services/index.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/index.ts diff --git a/x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts diff --git a/x-pack/packages/index-management/index_management_shared_types/src/types.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/types.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts diff --git a/x-pack/platform/packages/shared/index-management/index_management_shared_types/tsconfig.json b/x-pack/platform/packages/shared/index-management/index_management_shared_types/tsconfig.json new file mode 100644 index 0000000000000..b23a97fd4c854 --- /dev/null +++ b/x-pack/platform/packages/shared/index-management/index_management_shared_types/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core-application-browser", + "@kbn/utility-types", + "@kbn/share-plugin", + ] +} diff --git a/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/README.md b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/README.md new file mode 100644 index 0000000000000..aa39b20dbbdff --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/README.md @@ -0,0 +1,9 @@ +# @kbn/cloud-security-posture-common + +This package provides common code consumed in both the browser, i.e. the +`packages/kbn-cloud-security-posture` package and `solutions/security/plugins/cloud_security_posture` plugin, and on the server, i.e. the +`solutions/security/plugins/cloud_security_posture` plugin. + +## Maintainers + +Maintained by the Cloud Security Team \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture/common/constants.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/constants.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/constants.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/index.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/index.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/index.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/index.ts diff --git a/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/jest.config.js b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/jest.config.js new file mode 100644 index 0000000000000..bb188473325e7 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-cloud-security-posture/common'], +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/common/kibana.jsonc b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/kibana.jsonc diff --git a/x-pack/packages/kbn-cloud-security-posture/common/package.json b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/package.json similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/package.json rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/package.json diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/graph/index.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/graph/index.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/graph/index.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/graph/index.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/graph/latest.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/graph/latest.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/graph/latest.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/graph/latest.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/graph/v1.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/graph/v1.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/graph/v1.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/graph/v1.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/rules/index.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/index.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/rules/index.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/index.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/rules/latest.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/latest.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/rules/latest.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/latest.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v1.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v1.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v1.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v1.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v2.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v2.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v2.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v2.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v3.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v3.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v3.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v3.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v4.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v4.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v4.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v4.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v5.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v5.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/rules/v5.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/rules/v5.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/csp_vulnerability_finding.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/latest.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/latest.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/schema/vulnerabilities/latest.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/schema/vulnerabilities/latest.ts diff --git a/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/tsconfig.json b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/tsconfig.json new file mode 100644 index 0000000000000..681b16eddbd65 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/config-schema", + "@kbn/data-views-plugin", + "@kbn/i18n", + "@kbn/analytics", + "@kbn/usage-collection-plugin", + "@kbn/es-query", + ] +} diff --git a/x-pack/packages/kbn-cloud-security-posture/common/types/benchmark.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/benchmark.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/types/benchmark.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/benchmark.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/types/findings.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/findings.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/types/graph/index.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/graph/index.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/types/graph/index.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/graph/index.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/types/graph/latest.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/graph/latest.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/types/graph/latest.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/graph/latest.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/types/graph/v1.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/graph/v1.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/types/graph/v1.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/graph/v1.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/types/status.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/types/status.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/status.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/types/vulnerabilities.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/vulnerabilities.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/types/vulnerabilities.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/types/vulnerabilities.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/utils/get_abbreviated_number.test.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/get_abbreviated_number.test.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/utils/get_abbreviated_number.test.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/get_abbreviated_number.test.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/utils/get_abbreviated_number.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/get_abbreviated_number.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/utils/get_abbreviated_number.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/get_abbreviated_number.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.test.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/utils/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.test.ts diff --git a/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts new file mode 100644 index 0000000000000..8335fea705069 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/helpers.ts @@ -0,0 +1,174 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; + +import { i18n } from '@kbn/i18n'; +import type { CspBenchmarkRulesStates } from '../schema/rules/latest'; + +export const defaultErrorMessage = i18n.translate( + 'sharedPlatformPackages.csp.common.utils.helpers.unknownError', + { + defaultMessage: 'Unknown Error', + } +); + +export const extractErrorMessage = (e: unknown, fallbackMessage?: string): string => { + if (e instanceof Error) return e.message; + if (typeof e === 'string') return e; + + return fallbackMessage ?? defaultErrorMessage; +}; + +export const buildMutedRulesFilter = ( + rulesStates: CspBenchmarkRulesStates +): QueryDslQueryContainer[] => { + const mutedRules = Object.fromEntries( + Object.entries(rulesStates).filter(([key, value]) => value.muted === true) + ); + + const mutedRulesFilterQuery = Object.keys(mutedRules).map((key) => { + const rule = mutedRules[key]; + return { + bool: { + must: [ + { term: { 'rule.benchmark.id': rule.benchmark_id } }, + { term: { 'rule.benchmark.version': rule.benchmark_version } }, + { term: { 'rule.benchmark.rule_number': rule.rule_number } }, + ], + }, + }; + }); + + return mutedRulesFilterQuery; +}; + +export const buildGenericEntityFlyoutPreviewQuery = ( + field: string, + queryValue?: string, + status?: string, + queryField?: string +) => { + return { + bool: { + filter: [ + { + bool: { + should: [ + { + term: { + [field]: `${queryValue || ''}`, + }, + }, + ], + minimum_should_match: 1, + }, + }, + status && queryField + ? { + bool: { + should: [ + { + term: { + [queryField]: status, + }, + }, + ], + minimum_should_match: 1, + }, + } + : undefined, + ].filter(Boolean), + }, + }; +}; + +// Higher-order function for Misconfiguration +export const buildMisconfigurationEntityFlyoutPreviewQuery = ( + field: string, + queryValue?: string, + status?: string +) => { + const queryField = 'result.evaluation'; + return buildGenericEntityFlyoutPreviewQuery(field, queryValue, status, queryField); +}; + +// Higher-order function for Vulnerability +export const buildVulnerabilityEntityFlyoutPreviewQuery = ( + field: string, + queryValue?: string, + status?: string +) => { + const queryField = 'vulnerability.severity'; + return buildGenericEntityFlyoutPreviewQuery(field, queryValue, status, queryField); +}; + +export const buildEntityAlertsQuery = ( + field: string, + to: string, + from: string, + queryValue?: string, + size?: number, + severity?: string +) => { + return { + size: size || 0, + _source: false, + fields: [ + '_id', + '_index', + 'kibana.alert.rule.uuid', + 'kibana.alert.severity', + 'kibana.alert.rule.name', + 'kibana.alert.workflow_status', + ], + query: { + bool: { + filter: [ + { + bool: { + should: [ + { + term: { + [field]: `${queryValue || ''}`, + }, + }, + ], + minimum_should_match: 1, + }, + }, + severity + ? { + bool: { + should: [ + { + term: { + 'kibana.alert.severity': severity, + }, + }, + ], + minimum_should_match: 1, + }, + } + : undefined, + { + range: { + '@timestamp': { + gte: from, + lte: to, + }, + }, + }, + { + terms: { + 'kibana.alert.workflow_status': ['open', 'acknowledged'], + }, + }, + ].filter(Boolean), + }, + }, + }; +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/common/utils/ui_metrics.ts b/x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/ui_metrics.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/common/utils/ui_metrics.ts rename to x-pack/platform/packages/shared/kbn-cloud-security-posture/common/utils/ui_metrics.ts diff --git a/x-pack/packages/kbn-data-forge/README.md b/x-pack/platform/packages/shared/kbn-data-forge/README.md similarity index 100% rename from x-pack/packages/kbn-data-forge/README.md rename to x-pack/platform/packages/shared/kbn-data-forge/README.md diff --git a/x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/change_point_detection.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/change_point_detection.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/change_point_detection.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/change_point_detection.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/concept_drift.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/concept_drift.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/concept_drift.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/concept_drift.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/contextual_anomaly.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/contextual_anomaly.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/contextual_anomaly.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/contextual_anomaly.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/point_anomaly.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/point_anomaly.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/point_anomaly.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/point_anomaly.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/changing_log_volume_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/changing_log_volume_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/changing_log_volume_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/changing_log_volume_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/fake_logs_sine.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/fake_logs_sine.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/fake_logs_sine.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/fake_logs_sine.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/fake_stack.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/fake_stack.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/fake_stack.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/fake_stack.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/full_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/full_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/full_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/full_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/future_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/future_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/future_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/future_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/good_to_bad_to_good.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/good_to_bad_to_good.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/good_to_bad_to_good.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/good_to_bad_to_good.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_drop.yml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_drop.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_drop.yml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_drop.yml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario0_logs.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario0_logs.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario0_logs.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario0_logs.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario1_spike_logs.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario1_spike_logs.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario1_spike_logs.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario1_spike_logs.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario2_spike_logs_host.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario2_spike_logs_host.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario2_spike_logs_host.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario2_spike_logs_host.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario3_spike_errors.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario3_spike_errors.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario3_spike_errors.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario3_spike_errors.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario4_spike_errors_with_recovery.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario4_spike_errors_with_recovery.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario4_spike_errors_with_recovery.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario4_spike_errors_with_recovery.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario5_spike_logs_linear.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario5_spike_logs_linear.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario5_spike_logs_linear.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario5_spike_logs_linear.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/metric_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/metric_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/metric_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/metric_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/ramp_up_then_down.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/ramp_up_then_down.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/ramp_up_then_down.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/ramp_up_then_down.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario0_paralell_metrics_drop_step_change.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario0_paralell_metrics_drop_step_change.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario0_paralell_metrics_drop_step_change.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario0_paralell_metrics_drop_step_change.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario1_paralell_metrics_increase_step_change.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario1_paralell_metrics_increase_step_change.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario1_paralell_metrics_increase_step_change.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario1_paralell_metrics_increase_step_change.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario2_divergent_metrics.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario2_divergent_metrics.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario2_divergent_metrics.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario2_divergent_metrics.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario3_chained_metrics_change.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario3_chained_metrics_change.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario3_chained_metrics_change.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario3_chained_metrics_change.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_groupby.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_groupby.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_groupby.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_groupby.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_nodata.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_nodata.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_nodata.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_nodata.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_groupby.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_groupby.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_groupby.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_groupby.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_nodata.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_nodata.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_nodata.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_nodata.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/slo_burn_rate.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/slo_burn_rate.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/slo_burn_rate.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/slo_burn_rate.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/transition_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/transition_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/transition_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/transition_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/transitioning_templates_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/transitioning_templates_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/transitioning_templates_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/transitioning_templates_example.yaml diff --git a/x-pack/packages/kbn-data-forge/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/index.ts diff --git a/x-pack/platform/packages/shared/kbn-data-forge/jest.config.js b/x-pack/platform/packages/shared/kbn-data-forge/jest.config.js new file mode 100644 index 0000000000000..2b75e2ad4d2b6 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-data-forge'], +}; diff --git a/x-pack/packages/kbn-data-forge/kibana.jsonc b/x-pack/platform/packages/shared/kbn-data-forge/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-data-forge/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-data-forge/kibana.jsonc diff --git a/x-pack/packages/kbn-data-forge/package.json b/x-pack/platform/packages/shared/kbn-data-forge/package.json similarity index 100% rename from x-pack/packages/kbn-data-forge/package.json rename to x-pack/platform/packages/shared/kbn-data-forge/package.json diff --git a/x-pack/packages/kbn-data-forge/src/cleanup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/cleanup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts diff --git a/x-pack/packages/kbn-data-forge/src/cli.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/cli.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/cli.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/cli.ts diff --git a/x-pack/packages/kbn-data-forge/src/constants.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/constants.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/metricset.yaml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/metricset.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/metricset.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/metricset.yaml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/system.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/system.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/system.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/system.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh new file mode 100755 index 0000000000000..f4e90c0d0510f --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +cd ../../../../../../../../../../ecs + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --include $ECS/fields/custom \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/event.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/event.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/event.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/metricset.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/metricset.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/metricset.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/metricset.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/system.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/system.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/system.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/system.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/custom/metricset.yaml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/custom/metricset.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/custom/metricset.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/custom/metricset.yaml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh new file mode 100755 index 0000000000000..2862d2e9acfea --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +cd ../../../../../../../../../../ecs + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --include $ECS/fields/custom \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/event.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/event.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/event.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/metricset.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/metricset.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/metricset.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/metricset.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/assets/admin_console.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/assets/admin_console.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/assets/admin_console.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/assets/admin_console.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh new file mode 100755 index 0000000000000..da33b88d992e1 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=admin_console + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/event.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/event.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/event.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/http.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/http.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/http.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/http.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/server.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/server.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/server.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/server.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/url.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/url.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/url.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/url.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user_agent.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user_agent.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user_agent.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user_agent.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_base_event.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_base_event.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_base_event.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_base_event.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/delete_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/delete_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/delete_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/delete_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/edit_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/edit_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/edit_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/edit_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/internal_error.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/internal_error.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/internal_error.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/internal_error.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/list_customers.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/list_customers.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/list_customers.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/list_customers.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login_error.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login_error.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login_error.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login_error.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_connection_error.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_connection_error.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_connection_error.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_connection_error.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_proxy_timeout.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_proxy_timeout.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_proxy_timeout.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_proxy_timeout.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/qa_deployed_to_production.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/qa_deployed_to_production.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/qa_deployed_to_production.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/qa_deployed_to_production.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/startup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/startup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/startup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/startup.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/view_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/view_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/view_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/view_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/login_cache.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/login_cache.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/login_cache.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/login_cache.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/assets/transaction_rates.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/assets/transaction_rates.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/assets/transaction_rates.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/assets/transaction_rates.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/common/constants.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/common/constants.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/common/constants.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/common/constants.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/common/weighted_sample.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/common/weighted_sample.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/common/weighted_sample.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/common/weighted_sample.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/assets/heartbeat.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/assets/heartbeat.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/assets/heartbeat.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/assets/heartbeat.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh new file mode 100755 index 0000000000000..4d366a307a40a --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=heartbeat + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json + diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/event.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/event.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/event.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/bad.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/bad.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/bad.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/bad.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/create_event.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/create_event.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/create_event.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/create_event.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/good.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/good.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/good.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/good.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/assets/message_processor.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/assets/message_processor.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/assets/message_processor.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/assets/message_processor.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/custom/processor.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/custom/processor.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/custom/processor.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/custom/processor.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh new file mode 100755 index 0000000000000..642b35d36b06e --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=message_processor + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --include $ECS/fields/custom \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json + diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/processor.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/processor.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/processor.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/processor.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad_host.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad_host.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad_host.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad_host.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_base_event.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_base_event.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_base_event.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_base_event.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_latency_histogram.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_latency_histogram.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_latency_histogram.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_latency_histogram.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_bytes_processed.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_bytes_processed.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_bytes_processed.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_bytes_processed.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_time_spent.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_time_spent.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_time_spent.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_time_spent.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/good.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/good.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/good.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/good.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/startup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/startup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/startup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/startup.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/assets/mongodb.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/assets/mongodb.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/assets/mongodb.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/assets/mongodb.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/custom/mongodb.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/custom/mongodb.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/custom/mongodb.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/custom/mongodb.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh new file mode 100755 index 0000000000000..50495c22bc22e --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=mongodb + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --include $ECS/fields/custom \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json + diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/mongodb.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/mongodb.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/mongodb.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/mongodb.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/create_base_event.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/create_base_event.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/create_base_event.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/create_base_event.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/mongo_actions.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/mongo_actions.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/mongo_actions.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/mongo_actions.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/startup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/startup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/startup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/startup.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/assets/nginx_proxy.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/assets/nginx_proxy.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/assets/nginx_proxy.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/assets/nginx_proxy.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh new file mode 100755 index 0000000000000..54a4230e3d9b8 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=nginx_proxy + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json + diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/http.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/http.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/http.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/http.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/url.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/url.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/url.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/url.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/create_nginx_timestamp.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/create_nginx_timestamp.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/create_nginx_timestamp.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/create_nginx_timestamp.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_nginx_log.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_nginx_log.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_nginx_log.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_nginx_log.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_upstream_timedout.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_upstream_timedout.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_upstream_timedout.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_upstream_timedout.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/startup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/startup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/startup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/startup.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_cloud.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_cloud.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_cloud.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_cloud.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_host.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_host.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_host.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_host.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_log_message.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_log_message.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_log_message.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_log_message.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_service.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_service.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_service.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_service.ts diff --git a/x-pack/packages/kbn-data-forge/src/generate.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/generate.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/add_ephemeral_project_id.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/add_ephemeral_project_id.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/add_ephemeral_project_id.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/add_ephemeral_project_id.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/cli_to_partial_config.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/cli_to_partial_config.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/cli_to_partial_config.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/cli_to_partial_config.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/create_config.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/create_config.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/create_events.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_events.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/create_events.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_events.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_exponetial_function.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_exponetial_function.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_exponetial_function.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_exponetial_function.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_linear_function.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_linear_function.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_linear_function.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_linear_function.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_sine_function.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_sine_function.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_sine_function.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_sine_function.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/data_shapes/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/data_shapes/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/delete_index_template.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/delete_index_template.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/delete_index_template.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/delete_index_template.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/elasticsearch_error_handler.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/elasticsearch_error_handler.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/elasticsearch_error_handler.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/elasticsearch_error_handler.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/generate_counter_data.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/generate_counter_data.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/generate_counter_data.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/generate_counter_data.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/get_es_client.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/get_es_client.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/get_es_client.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/get_es_client.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/index_schedule.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/index_schedule.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/index_schedule.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/index_schedule.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/indices.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/indices.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/indices.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/indices.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_assets.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_assets.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_assets.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_assets.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_default_component_template.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_default_component_template.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_default_component_template.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_default_component_template.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_default_ingest_pipeline.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_default_ingest_pipeline.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_default_ingest_pipeline.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_default_ingest_pipeline.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_index_template.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_index_template.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_index_template.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_index_template.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_kibana_assets.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_kibana_assets.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_kibana_assets.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_kibana_assets.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/is_weekend.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/is_weekend.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/is_weekend.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/is_weekend.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/parse_cli_options.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/parse_cli_options.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/parse_cli_options.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/parse_cli_options.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/queue.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/queue.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/queue.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/queue.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/replace_metrics_with_shapes.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/replace_metrics_with_shapes.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/replace_metrics_with_shapes.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/replace_metrics_with_shapes.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/setup_kibana_system_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/setup_kibana_system_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/setup_kibana_system_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/setup_kibana_system_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/wait.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/wait.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/wait.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/wait.ts diff --git a/x-pack/packages/kbn-data-forge/src/run.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/run.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/run.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/run.ts diff --git a/x-pack/packages/kbn-data-forge/src/types/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/types/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts diff --git a/x-pack/platform/packages/shared/kbn-data-forge/tsconfig.json b/x-pack/platform/packages/shared/kbn-data-forge/tsconfig.json new file mode 100644 index 0000000000000..3c3d54da2f20d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + "./src/**/*.json" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/tooling-log", + "@kbn/datemath", + "@kbn/safer-lodash-set", + "@kbn/dev-utils" + ] +} diff --git a/x-pack/packages/kbn-elastic-assistant-common/.gitignore b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/.gitignore similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/.gitignore rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/.gitignore diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/README.md b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/README.md new file mode 100644 index 0000000000000..d02d3cad21eef --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/README.md @@ -0,0 +1,36 @@ +# @kbn/elastic-assistant-common + +This package provides common code consumed in both the browser, i.e. the +`platform/packages/shared/kbn-elastic-assistant` package and `solutions/security/plugins/security_solution` plugin, and on the server, i.e. the +`solutions/security/plugins/elastic_assistant` plugin. + +For example, the data anonymization functions exported by this package +are be used in both the browser, and on the server. + +## Maintainers + +Maintained by the Security Solution team + +## Running unit tests with code coverage + +To (interactively) run unit tests with code coverage, run the following command: + +```sh +cd $KIBANA_HOME && node scripts/jest --watch x-pack/platform/packages/shared/kbn-elastic-assistant-common --coverage +``` + +## OpenAPI Codegen + +Implemented using the new OpenAPI codegen and bundle packages: +* Includes OpenAPI codegen script and CI action as detailed in: https://github.com/elastic/kibana/pull/166269 +* Includes OpenAPI docs bundling script as detailed in: https://github.com/elastic/kibana/pull/171526 + +To run codegen/bundling locally, cd to `x-pack/platform/packages/shared/kbn-elastic-assistant-common/` and run any of the following commands: + +```bash +yarn openapi:generate +yarn openapi:generate:debug +yarn openapi:bundle +``` + +Codegen is configured to run on CI by means of the `.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh` script, which is run as part of the `checks` pipeline, and is registered in `.buildkite/scripts/steps/checks.sh`. diff --git a/x-pack/packages/kbn-elastic-assistant-common/constants.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/constants.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/ess/elastic_assistant_api_2023_10_31.bundled.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/ess/elastic_assistant_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/docs/openapi/ess/elastic_assistant_api_2023_10_31.bundled.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/ess/elastic_assistant_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/serverless/elastic_assistant_api_2023_10_31.bundled.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/serverless/elastic_assistant_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/docs/openapi/serverless/elastic_assistant_api_2023_10_31.bundled.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/serverless/elastic_assistant_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/README.md b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/README.md new file mode 100644 index 0000000000000..25d3cac906882 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/README.md @@ -0,0 +1,33 @@ +With https://github.com/elastic/kibana/pull/186566, we've introduced a few sample `*.http` files for easier development/testing. These files are supported out of the box in JetBrains IDE's or in VSCode with the [httpyac](https://httpyac.github.io/) (and many other) extensions. Since the configuration for these files includes a `-` in the name, a few @elastic/kibana-operations files have been updated to exclude them from checks and being included in the distribution. + +You can read more about `http` files [here](https://www.jetbrains.com/help/webstorm/http-client-in-product-code-editor.html) and for the spec see this repo [here](https://github.com/JetBrains/http-request-in-editor-spec/blob/master/spec.md). If we find these useful, we could add support to our [OpenAPI Generator](https://openapi-generator.tech/docs/generators/jetbrains-http-client) to create these automatically. They currently live co-located next to the OAS and generated schema files here: + +``` +x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http +x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http +``` + +and the main config here in this directory: + +``` +x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/http-client.env.json +``` + +The `x-pack/platform/packages/shared/kbn-elastic-assistant-common/.gitignore` has been updated to ignore `http-client.private.env.json` files locally, which is how you can override the config as you'd like. This is helpful to add variables like `basePath` as below: + +``` +{ + "dev": { + "basePath": "/kbn" + } +} +``` + +To use them, just open the corresponding `*.http` for the API you want to test, and click `Send`, and the response will open in another tab. Here is what that looks like for creating one of the new `IndexEntry` KB documents that have been introduced in the initial PR: + +<p align="center"> + <img width="500" src="https://github.com/user-attachments/assets/c9e70d1a-28d2-4eb3-9853-ab6d8e1c7acf" /> +</p> + + +For continuing this effort, https://github.com/elastic/kibana/issues/192386 has been created. diff --git a/x-pack/packages/kbn-elastic-assistant-common/env/http-client.env.json b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/http-client.env.json similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/env/http-client.env.json rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/http-client.env.json diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/README.md b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/README.md new file mode 100644 index 0000000000000..da6991d422089 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/README.md @@ -0,0 +1,51 @@ +### Feature Capabilities + +Feature capabilities are an object describing specific capabilities of the assistant, like whether a feature like streaming is enabled, and are defined in the sibling `./index.ts` file within this `kbn-elastic-assistant-common` package. These capabilities can be registered for a given plugin through the assistant server, and so do not need to be plumbed through the `ElasticAssistantProvider`. + +Storage and accessor functions are made available via the `AppContextService`, and exposed to clients via the`/internal/elastic_assistant/capabilities` route, which can be fetched by clients using the `useCapabilities()` UI hook. + +### Registering Capabilities + +To register a capability on plugin start, add the following in the consuming plugin's `start()`, specifying any number of capabilities you would like to explicitly declare: + +```ts +plugins.elasticAssistant.registerFeatures(APP_UI_ID, { + assistantModelEvaluation: config.experimentalFeatures.assistantModelEvaluation, + assistantStreamingEnabled: config.experimentalFeatures.assistantStreamingEnabled, +}); +``` + +### Declaring Feature Capabilities +Default feature capabilities are declared in `x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts`: + +```ts +export type AssistantFeatures = { [K in keyof typeof defaultAssistantFeatures]: boolean }; + +export const defaultAssistantFeatures = Object.freeze({ + assistantModelEvaluation: false, + assistantStreamingEnabled: false, +}); +``` + +### Using Capabilities Client Side +Capabilities can be fetched client side using the `useCapabilities()` hook ala: + +```ts +const { data: capabilities } = useCapabilities({ http, toasts }); +const { assistantModelEvaluation: modelEvaluatorEnabled, assistantStreamingEnabled } = capabilities ?? defaultAssistantFeatures; +``` + +### Using Capabilities Server Side +Or server side within a route (or elsewhere) via the `assistantContext`: + +```ts +const assistantContext = await context.elasticAssistant; +const pluginName = getPluginNameFromRequest({ request, logger }); +const registeredFeatures = assistantContext.getRegisteredFeatures(pluginName); +if (!registeredFeatures.assistantModelEvaluation) { + return response.notFound(); +} +``` + +> [!NOTE] +> Note, just as with [registering arbitrary tools](https://github.com/elastic/kibana/pull/172234), features are registered for a specific plugin, where the plugin name that corresponds to your application is defined in the `x-kbn-context` header of requests made from your application, which may be different than your plugin's registered `APP_ID`. diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/mock/get_anonymized_value/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/mock/get_anonymized_value/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/mock/get_anonymized_value/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/mock/get_anonymized_value/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.http b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.http similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.http rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.http diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/utils/spaces_roles_users_data.http b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/spaces_roles_users_data.http similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/utils/spaces_roles_users_data.http rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/spaces_roles_users_data.http diff --git a/x-pack/packages/kbn-elastic-assistant-common/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/index.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/jest.config.js b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/jest.config.js new file mode 100644 index 0000000000000..cda35c6b34674 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/jest.config.js @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_elastic_assistant_common_impl', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/**/*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/*mock*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/*.test.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/*.d.ts', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/*.config.ts', + ], + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common'], +}; diff --git a/x-pack/packages/kbn-elastic-assistant-common/kibana.jsonc b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/kibana.jsonc diff --git a/x-pack/packages/kbn-elastic-assistant-common/package.json b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/package.json similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/package.json rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/package.json diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/bundle.js b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/bundle.js new file mode 100644 index 0000000000000..1462a71785056 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/bundle.js @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../../../../src/setup_node_env'); +const { bundle } = require('@kbn/openapi-bundler'); +// eslint-disable-next-line import/no-nodejs-modules +const { join, resolve } = require('path'); + +const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); + +(async () => { + await bundle({ + sourceGlob: join(ELASTIC_ASSISTANT_ROOT, 'impl/schemas/**/*.schema.yaml'), + outputFilePath: join( + ELASTIC_ASSISTANT_ROOT, + 'docs/openapi/serverless/elastic_assistant_api_{version}.bundled.schema.yaml' + ), + options: { + includeLabels: ['serverless'], + prototypeDocument: { + info: { + title: 'Security AI Assistant API (Elastic Cloud Serverless)', + description: 'Manage and interact with Security Assistant resources.', + }, + tags: [ + { + name: 'Security AI Assistant API', + 'x-displayName': 'Security AI assistant', + description: 'Manage and interact with Security Assistant resources.', + }, + ], + }, + }, + }); + + await bundle({ + sourceGlob: join(ELASTIC_ASSISTANT_ROOT, 'impl/schemas/**/*.schema.yaml'), + outputFilePath: join( + ELASTIC_ASSISTANT_ROOT, + 'docs/openapi/ess/elastic_assistant_api_{version}.bundled.schema.yaml' + ), + options: { + includeLabels: ['ess'], + prototypeDocument: { + info: { + title: 'Security AI Assistant API (Elastic Cloud & self-hosted)', + description: 'Manage and interact with Security Assistant resources.', + }, + tags: [ + { + name: 'Security AI Assistant API', + 'x-displayName': 'Security AI assistant', + description: 'Manage and interact with Security Assistant resources.', + }, + ], + }, + }, + }); +})(); diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/generate.js b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/generate.js new file mode 100644 index 0000000000000..a550523d6b060 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/generate.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../../../../src/setup_node_env'); +const { generate } = require('@kbn/openapi-generator'); +// eslint-disable-next-line import/no-nodejs-modules +const { resolve } = require('path'); + +const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); + +generate({ + rootDir: ELASTIC_ASSISTANT_ROOT, + sourceGlob: './impl/schemas/**/*.schema.yaml', + templateName: 'zod_operation_schema', +}); diff --git a/x-pack/packages/kbn-elastic-assistant-common/setup_tests.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/setup_tests.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/setup_tests.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/setup_tests.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/tsconfig.json b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/tsconfig.json new file mode 100644 index 0000000000000..f002f81718b0d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/zod-helpers", + "@kbn/securitysolution-io-ts-utils", + "@kbn/core", + "@kbn/logging", + "@kbn/zod", + ] +} diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/README.md b/x-pack/platform/packages/shared/kbn-elastic-assistant/README.md new file mode 100644 index 0000000000000..ec40f4ca5f5e3 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/README.md @@ -0,0 +1,20 @@ +# @kbn/elastic-assistant + +The `Elastic Assistant` is a user interface for interacting with generative AIs, like `ChatGPT`. + +This package provides: + +- Components for rendering the `Elastic Assistant` +- Hooks for passing context (for example, fields in an alert) to the `Elastic Assistant`, enabling users to include this content in their queries + +## Maintainers + +Maintained by the Security Solution team + +## Running unit tests with code coverage + +To (interactively) run unit tests with code coverage, run the following command: + +```sh +cd $KIBANA_HOME && node scripts/jest --watch x-pack/platform/packages/shared/kbn-elastic-assistant --coverage +``` diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx similarity index 89% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx index 5352e60bcea45..35bf94bc1d1b3 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ReactNode } from 'react'; @@ -41,9 +41,7 @@ describe('useFetchAnonymizationFields', () => { wrapper: createWrapper(), }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useFetchAnonymizationFields()); - await waitForNextUpdate(); + await waitFor(() => { expect(http.fetch).toHaveBeenCalledWith( '/api/security_ai_assistant/anonymization_fields/_find', { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/__mocks__/use_capabilities.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/__mocks__/use_capabilities.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/__mocks__/use_capabilities.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/__mocks__/use_capabilities.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx similarity index 96% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx index 6101782ae43b1..cc5df8d0a44b7 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ReactNode } from 'react'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx new file mode 100644 index 0000000000000..50ae344a78671 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act, waitFor, renderHook } from '@testing-library/react'; + +import { + DeleteConversationParams, + GetConversationByIdParams, + deleteConversation, + getConversationById, +} from './conversations'; +import { HttpSetupMock } from '@kbn/core-http-browser-mocks'; +import { coreMock } from '@kbn/core/public/mocks'; + +let http: HttpSetupMock = coreMock.createSetup().http; + +const toasts = { + addError: jest.fn(), +}; + +describe('conversations api', () => { + beforeEach(() => { + jest.clearAllMocks(); + http = coreMock.createSetup().http; + }); + + it('should call api to delete conversation', async () => { + await act(async () => { + const deleteProps = { http, toasts, id: 'test' } as unknown as DeleteConversationParams; + + renderHook(() => deleteConversation(deleteProps)); + await waitFor(() => { + expect(deleteProps.http.fetch).toHaveBeenCalledWith( + '/api/security_ai_assistant/current_user/conversations/test', + { + method: 'DELETE', + signal: undefined, + version: '2023-10-31', + } + ); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + }); + + it('should display error toast when delete api throws error', async () => { + http.fetch.mockRejectedValue(new Error('this is an error')); + const deleteProps = { http, toasts, id: 'test' } as unknown as DeleteConversationParams; + + await expect(deleteConversation(deleteProps)).rejects.toThrowError('this is an error'); + expect(toasts.addError).toHaveBeenCalled(); + }); + + it('should call api to get conversation', async () => { + await act(async () => { + const getProps = { http, toasts, id: 'test' } as unknown as GetConversationByIdParams; + renderHook(() => getConversationById(getProps)); + await waitFor(() => { + expect(getProps.http.fetch).toHaveBeenCalledWith( + '/api/security_ai_assistant/current_user/conversations/test', + { + method: 'GET', + signal: undefined, + version: '2023-10-31', + } + ); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + }); + + it('should display error toast when get api throws error', async () => { + http.fetch.mockRejectedValue(new Error('this is an error')); + const getProps = { http, toasts, id: 'test' } as unknown as GetConversationByIdParams; + + await expect(getConversationById(getProps)).rejects.toThrowError('this is an error'); + expect(toasts.addError).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx similarity index 87% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx index f10c7d07a35d6..cfe67c60324cc 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ReactNode } from 'react'; @@ -41,11 +41,7 @@ describe('useFetchCurrentUserConversations', () => { wrapper: createWrapper(), }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => - useFetchCurrentUserConversations(defaultProps) - ); - await waitForNextUpdate(); + await waitFor(() => { expect(defaultProps.http.fetch).toHaveBeenCalledWith( '/api/security_ai_assistant/current_user/conversations/_find', { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx similarity index 77% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx index 6d1296fc9aa64..913dbaed3263b 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { usePerformEvaluation, UsePerformEvaluationParams } from './use_perform_evaluation'; import { postEvaluation as _postEvaluation } from './evaluate'; import { useMutation as _useMutation } from '@tanstack/react-query'; @@ -50,10 +50,8 @@ describe('usePerformEvaluation', () => { jest.clearAllMocks(); }); it('should call api with undefined evalParams', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); - await waitForNextUpdate(); - + renderHook(() => usePerformEvaluation(defaultProps)); + await waitFor(() => { expect(defaultProps.http.post).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { body: undefined, headers: { @@ -80,10 +78,9 @@ describe('usePerformEvaluation', () => { opts.onError(e); } }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); - await waitForNextUpdate(); + renderHook(() => usePerformEvaluation(defaultProps)); + await waitFor(() => expect(defaultProps.http.post).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { body: '{"graphs":["d","c"],"datasetName":"kewl","connectorIds":["h","g"],"runName":"test run"}', headers: { @@ -91,26 +88,19 @@ describe('usePerformEvaluation', () => { }, signal: undefined, version: API_VERSIONS.internal.v1, - }); - }); + }) + ); }); it('should return evaluation response', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual(statusResponse); - }); + const { result } = renderHook(() => usePerformEvaluation(defaultProps)); + await waitFor(() => expect(result.current).resolves.toStrictEqual(statusResponse)); }); it('should display error toast when api throws error', async () => { postEvaluationMock.mockRejectedValue(new Error('this is an error')); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); - await waitForNextUpdate(); - expect(toasts.addError).toHaveBeenCalled(); - }); + renderHook(() => usePerformEvaluation(defaultProps)); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx similarity index 76% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx index 4f258aa3c1964..a77ab1d63aa6e 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { useKnowledgeBaseIndices, UseKnowledgeBaseIndicesParams, @@ -48,10 +48,8 @@ describe('useKnowledgeBaseIndices', () => { }); it('should call api to get knowledge base indices', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); - await waitForNextUpdate(); - + renderHook(() => useKnowledgeBaseIndices(defaultProps)); + await waitFor(() => { expect(defaultProps.http.fetch).toHaveBeenCalledWith( '/internal/elastic_assistant/knowledge_base/_indices', { @@ -65,20 +63,17 @@ describe('useKnowledgeBaseIndices', () => { }); it('should return indices response', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual(indicesResponse); + const { result } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); + await waitFor(() => { + expect(result.current).resolves.toStrictEqual(indicesResponse); }); }); it('should display error toast when api throws error', async () => { getKnowledgeBaseIndicesMock.mockRejectedValue(new Error('this is an error')); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); - await waitForNextUpdate(); + renderHook(() => useKnowledgeBaseIndices(defaultProps)); + await waitFor(() => { expect(toasts.addError).toHaveBeenCalled(); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx new file mode 100644 index 0000000000000..69fccba092ee9 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { waitFor, renderHook } from '@testing-library/react'; +import { useKnowledgeBaseStatus, UseKnowledgeBaseStatusParams } from './use_knowledge_base_status'; +import { getKnowledgeBaseStatus as _getKnowledgeBaseStatus } from './api'; + +const getKnowledgeBaseStatusMock = _getKnowledgeBaseStatus as jest.Mock; + +jest.mock('./api', () => { + const actual = jest.requireActual('./api'); + return { + ...actual, + getKnowledgeBaseStatus: jest.fn((...args) => actual.getKnowledgeBaseStatus(...args)), + }; +}); + +jest.mock('@tanstack/react-query', () => ({ + useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { + try { + const res = await fn({}); + return Promise.resolve(res); + } catch (e) { + opts.onError(e); + } + }), +})); + +const statusResponse = { + elser_exists: true, + index_exists: true, + pipeline_exists: true, + security_labs_exists: true, +}; + +const http = { + fetch: jest.fn().mockResolvedValue(statusResponse), +}; +const toasts = { + addError: jest.fn(), +}; +const defaultProps = { http, toasts } as unknown as UseKnowledgeBaseStatusParams; +describe('useKnowledgeBaseStatus', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should call api to get knowledge base status without resource arg', async () => { + renderHook(() => useKnowledgeBaseStatus(defaultProps)); + await waitFor(() => { + expect(defaultProps.http.fetch).toHaveBeenCalledWith( + '/internal/elastic_assistant/knowledge_base/', + { + method: 'GET', + signal: undefined, + version: '1', + } + ); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + it('should call api to get knowledge base status with resource arg', async () => { + renderHook(() => useKnowledgeBaseStatus({ ...defaultProps, resource: 'something' })); + await waitFor(() => + expect(defaultProps.http.fetch).toHaveBeenCalledWith( + '/internal/elastic_assistant/knowledge_base/something', + { + method: 'GET', + signal: undefined, + version: '1', + } + ) + ); + }); + + it('should return status response', async () => { + const { result } = renderHook(() => useKnowledgeBaseStatus(defaultProps)); + await waitFor(() => expect(result.current).resolves.toStrictEqual(statusResponse)); + }); + + it('should display error toast when api throws error', async () => { + getKnowledgeBaseStatusMock.mockRejectedValue(new Error('this is an error')); + renderHook(() => useKnowledgeBaseStatus(defaultProps)); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx similarity index 75% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx index c08f6f93617fc..802ddf74bdf72 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { useSetupKnowledgeBase, UseSetupKnowledgeBaseParams } from './use_setup_knowledge_base'; import { postKnowledgeBase as _postKnowledgeBase } from './api'; import { useMutation as _useMutation } from '@tanstack/react-query'; @@ -50,10 +50,8 @@ describe('useSetupKnowledgeBase', () => { jest.clearAllMocks(); }); it('should call api to post knowledge base setup', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useSetupKnowledgeBase(defaultProps)); - await waitForNextUpdate(); - + renderHook(() => useSetupKnowledgeBase(defaultProps)); + await waitFor(() => { expect(defaultProps.http.fetch).toHaveBeenCalledWith( '/internal/elastic_assistant/knowledge_base/', { @@ -73,36 +71,27 @@ describe('useSetupKnowledgeBase', () => { opts.onError(e); } }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useSetupKnowledgeBase(defaultProps)); - await waitForNextUpdate(); + renderHook(() => useSetupKnowledgeBase(defaultProps)); + await waitFor(() => expect(defaultProps.http.fetch).toHaveBeenCalledWith( '/internal/elastic_assistant/knowledge_base/something', { method: 'POST', version: '1', } - ); - }); + ) + ); }); it('should return setup response', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useSetupKnowledgeBase(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual(statusResponse); - }); + const { result } = renderHook(() => useSetupKnowledgeBase(defaultProps)); + await waitFor(() => expect(result.current).resolves.toStrictEqual(statusResponse)); }); it('should display error toast when api throws error', async () => { postKnowledgeBaseMock.mockRejectedValue(new Error('this is an error')); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useSetupKnowledgeBase(defaultProps)); - await waitForNextUpdate(); - - expect(toasts.addError).toHaveBeenCalled(); - }); + renderHook(() => useSetupKnowledgeBase(defaultProps)); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx similarity index 89% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx index 8e228d2787a36..8fb1f808f8df5 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ReactNode } from 'react'; @@ -41,9 +41,7 @@ describe('useFetchPrompts', () => { wrapper: createWrapper(), }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useFetchPrompts()); - await waitForNextUpdate(); + await waitFor(() => { expect(http.fetch).toHaveBeenCalledWith('/api/security_ai_assistant/prompts/_find', { method: 'GET', query: { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx similarity index 95% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx index f569ca1450caf..f3990dd0b7362 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx @@ -120,6 +120,9 @@ const AvatarWrapper = styled.span` } `; +/** + * @deprecated This component will soon be replaced by `AssistantBeacon` from `@kbn/ai-assistant-icon`. + */ export const AssistantAnimatedIcon = React.memo(() => ( <Container> <Animation /> diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx new file mode 100644 index 0000000000000..205a2c7b7bac3 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { ReactNode } from 'react'; + +export interface AssistantAvatarProps { + size?: keyof typeof sizeMap; + // Required for EuiAvatar `iconType` prop + // eslint-disable-next-line react/no-unused-prop-types + children?: ReactNode; + className?: string; +} + +export const sizeMap = { + xl: 64, + l: 48, + m: 32, + s: 24, + xs: 16, + xxs: 12, +}; + +/** + * Default Elastic AI Assistant logo + * + * @deprecated This component will soon be replaced by `AssistantIcon` from `@kbn/ai-assistant-icon`. + */ +export const AssistantAvatar = ({ className, size = 's' }: AssistantAvatarProps) => ( + <svg + className={className} + xmlns="http://www.w3.org/2000/svg" + width={sizeMap[size]} + height={sizeMap[size]} + viewBox="0 0 64 64" + fill="none" + > + <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> + <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> + <path + fill="#343741" + d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" + /> + <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> + </svg> +); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/empty_convo.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/empty_convo.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/empty_convo.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/empty_convo.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/welcome_setup.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/welcome_setup.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/welcome_setup.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/welcome_setup.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/flyout_navigation.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/flyout_navigation.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/flyout_navigation.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/flyout_navigation.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx new file mode 100644 index 0000000000000..c80145dcef5b9 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx @@ -0,0 +1,147 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useEffect, useRef, useState } from 'react'; +import { EuiFlyoutResizable } from '@elastic/eui'; + +import useEvent from 'react-use/lib/useEvent'; +import { css } from '@emotion/react'; + +import { createGlobalStyle } from 'styled-components'; +import { ShowAssistantOverlayProps, useAssistantContext } from '../../assistant_context'; +import { Assistant, CONVERSATION_SIDE_PANEL_WIDTH } from '..'; + +const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0; + +/** + * Modal container for Elastic AI Assistant conversations, receiving the page contents as context, plus whatever + * component currently has focus and any specific context it may provide through the SAssInterface. + */ + +export const UnifiedTimelineGlobalStyles = createGlobalStyle` + body:has(.timeline-portal-overlay-mask) .euiOverlayMask { + z-index: 1003 !important; + } +`; + +export const AssistantOverlay = React.memo(() => { + const [isModalVisible, setIsModalVisible] = useState(false); + // Why is this named Title and not Id? + const [conversationTitle, setConversationTitle] = useState<string | undefined>(undefined); + const [promptContextId, setPromptContextId] = useState<string | undefined>(); + const { assistantTelemetry, setShowAssistantOverlay, getLastConversationId } = + useAssistantContext(); + + const [chatHistoryVisible, setChatHistoryVisible] = useState(false); + + // Bind `showAssistantOverlay` in SecurityAssistantContext to this modal instance + const showOverlay = useCallback( + () => + ({ + showOverlay: so, + promptContextId: pid, + conversationTitle: cTitle, + }: ShowAssistantOverlayProps) => { + const conversationId = getLastConversationId(cTitle); + if (so) assistantTelemetry?.reportAssistantInvoked({ conversationId, invokedBy: 'click' }); + + setIsModalVisible(so); + setPromptContextId(pid); + setConversationTitle(conversationId); + }, + [assistantTelemetry, getLastConversationId] + ); + useEffect(() => { + setShowAssistantOverlay(showOverlay); + }, [setShowAssistantOverlay, showOverlay]); + + // Called whenever platform specific shortcut for assistant is pressed + const handleShortcutPress = useCallback(() => { + // Try to restore the last conversation on shortcut pressed + if (!isModalVisible) { + setConversationTitle(getLastConversationId()); + assistantTelemetry?.reportAssistantInvoked({ + invokedBy: 'shortcut', + conversationId: getLastConversationId(), + }); + } + + setIsModalVisible(!isModalVisible); + }, [isModalVisible, getLastConversationId, assistantTelemetry]); + + // Register keyboard listener to show the modal when cmd + ; is pressed + const onKeyDown = useCallback( + (event: KeyboardEvent) => { + if (event.key === ';' && (isMac ? event.metaKey : event.ctrlKey)) { + event.preventDefault(); + handleShortcutPress(); + } + }, + [handleShortcutPress] + ); + useEvent('keydown', onKeyDown); + + // Modal control functions + const cleanupAndCloseModal = useCallback(() => { + setIsModalVisible(false); + setPromptContextId(undefined); + setConversationTitle(conversationTitle); + }, [conversationTitle]); + + const handleCloseModal = useCallback(() => { + cleanupAndCloseModal(); + }, [cleanupAndCloseModal]); + + const toggleChatHistory = useCallback(() => { + setChatHistoryVisible((prev) => { + if (flyoutRef?.current) { + const currentValue = parseInt(flyoutRef.current.style.inlineSize.split('px')[0], 10); + flyoutRef.current.style.inlineSize = `${ + prev + ? currentValue - CONVERSATION_SIDE_PANEL_WIDTH + : currentValue + CONVERSATION_SIDE_PANEL_WIDTH + }px`; + } + + return !prev; + }); + }, []); + + const flyoutRef = useRef<HTMLDivElement>(); + + if (!isModalVisible) return null; + + return ( + <> + <EuiFlyoutResizable + ref={flyoutRef} + css={css` + max-inline-size: calc(100% - 20px); + min-inline-size: 400px; + > div { + height: 100%; + } + `} + onClose={handleCloseModal} + data-test-subj="ai-assistant-flyout" + paddingSize="none" + hideCloseButton + > + <Assistant + conversationTitle={conversationTitle} + promptContextId={promptContextId} + onCloseFlyout={handleCloseModal} + chatHistoryVisible={chatHistoryVisible} + setChatHistoryVisible={toggleChatHistory} + /> + </EuiFlyoutResizable> + <UnifiedTimelineGlobalStyles /> + </> + ); +}); + +AssistantOverlay.displayName = 'AssistantOverlay'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_title/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_title/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_title/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_title/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_title/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_title/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_title/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_title/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_actions/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_actions/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_actions/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_actions/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_actions/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_actions/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_actions/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_actions/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_autosize_textarea.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_autosize_textarea.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_autosize_textarea.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_autosize_textarea.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx similarity index 91% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx index f72f85892d379..54fc610d405de 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx @@ -10,8 +10,7 @@ import { useSendMessage } from '../use_send_message'; import { useConversation } from '../use_conversation'; import { emptyWelcomeConvo, welcomeConvo } from '../../mock/conversation'; import { useChatSend, UseChatSendProps } from './use_chat_send'; -import { act, renderHook } from '@testing-library/react-hooks'; -import { waitFor } from '@testing-library/react'; +import { waitFor, renderHook, act } from '@testing-library/react'; import { TestProviders } from '../../mock/test_providers/test_providers'; import { useAssistantContext } from '../../..'; @@ -64,10 +63,10 @@ describe('use chat send', () => { }); it('handleOnChatCleared clears the conversation', async () => { (clearConversation as jest.Mock).mockReturnValueOnce(testProps.currentConversation); - const { result, waitForNextUpdate } = renderHook(() => useChatSend(testProps), { + const { result } = renderHook(() => useChatSend(testProps), { wrapper: TestProviders, }); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); act(() => { result.current.handleOnChatCleared(); }); @@ -99,7 +98,7 @@ describe('use chat send', () => { }); }); it('handleRegenerateResponse removes the last message of the conversation, resends the convo to GenAI, and appends the message received', async () => { - const { result, waitForNextUpdate } = renderHook( + const { result } = renderHook( () => useChatSend({ ...testProps, currentConversation: { ...welcomeConvo, id: 'welcome-id' } }), { @@ -107,7 +106,7 @@ describe('use chat send', () => { } ); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); act(() => { result.current.handleRegenerateResponse(); }); @@ -121,10 +120,10 @@ describe('use chat send', () => { }); it('sends telemetry events for both user and assistant', async () => { const promptText = 'prompt text'; - const { result, waitForNextUpdate } = renderHook(() => useChatSend(testProps), { + const { result } = renderHook(() => useChatSend(testProps), { wrapper: TestProviders, }); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); act(() => { result.current.handleChatSend(promptText); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/badges/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/badges/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/badges/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/badges/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/use_flyout_modal_visibility.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/use_flyout_modal_visibility.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/use_flyout_modal_visibility.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/use_flyout_modal_visibility.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/pagination/use_session_pagination.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/pagination/use_session_pagination.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/pagination/use_session_pagination.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/pagination/use_session_pagination.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/constants.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/constants.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/constants.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/constants.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_streaming_switch.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_streaming_switch.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_streaming_switch.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_streaming_switch.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx index 091c691d8e324..0e088533ba1d8 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; + +import { renderHook, act } from '@testing-library/react'; import { useConversationChanged } from './use_conversation_changed'; import { customConvo } from '../../../mock/conversation'; import { mockConnectors } from '../../../mock/connectors'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_changed.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_changed.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_changed.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_changed.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deleted.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deleted.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deleted.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deleted.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx index f96de69b8ae7c..5210d76d05791 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; + +import { renderHook, act } from '@testing-library/react'; import { useConversationDeleted } from './use_conversation_deleted'; import { customConvo, alertConvo, welcomeConvo } from '../../../mock/conversation'; import { Conversation, ConversationsBulkActions } from '../../../..'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx index 797bde3466223..5a98d86b1b4a2 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; + +import { renderHook } from '@testing-library/react'; import { useConversationsTable, GetConversationsListParams, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/translations.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts new file mode 100644 index 0000000000000..7ea1fdbc38bf8 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts @@ -0,0 +1,100 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Replacements } from '@kbn/elastic-assistant-common'; +import { FindAnonymizationFieldsResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen'; +import type { ReactNode } from 'react'; + +/** + * helps the Elastic AI Assistant display the most relevant user prompts + */ +export type PromptContextCategory = + | 'alert' + | 'alerts' + | 'event' + | 'events' + | 'data-quality-index-summary' + | string; + +/** + * This interface is used to pass context to the Elastic AI Assistant, + * for the purpose of building prompts. Examples of context include: + * - a single alert + * - multiple alerts + * - a single event + * - multiple events + * - markdown + * - csv + * - anything else that the LLM can interpret + */ +export interface PromptContext { + /** + * The category of data, e.g. `alert | alerts | event | events | string` + * + * `category` helps the Elastic AI Assistant display the most relevant user prompts + */ + category: PromptContextCategory; + + /** + * The Elastic AI Assistant will display this **short**, static description + * in the context pill + */ + description: string; + + /** + * The Elastic AI Assistant will invoke this function to retrieve the context data, + * which will be included in a prompt (e.g. the contents of an alert or an event) + */ + getPromptContext: () => Promise<string> | Promise<Record<string, string[]>>; + + /** + * A unique identifier for this prompt context + */ + id: string; + + /** + * Replacements associated with the context, i.e. replacements for an attack discovery provided as context + */ + replacements?: Replacements; + + /** + * An optional user prompt that's filled in, but not sent, when the Elastic AI Assistant opens + */ + suggestedUserPrompt?: string; + + /** + * The Elastic AI Assistant will display this tooltip when the user hovers over the context pill + */ + tooltip: ReactNode; +} + +/** + * A prompt context that was added from the pills to the current conversation, but not yet sent + */ +export interface SelectedPromptContext { + /** anonymization fields to be included in a conversation */ + contextAnonymizationFields?: FindAnonymizationFieldsResponse; + /** unique id of the selected `PromptContext` */ + promptContextId: string; + /** this data is not anonymized */ + rawData: string | Record<string, string[]>; + /** replacements associated with the context, i.e. replacements for an attack discovery provided as context */ + replacements?: Replacements; +} + +/** + * This interface is used to pass a default or base set of contexts to the Elastic AI Assistant when + * initializing it. This is used to provide 'category' options when users create Quick Prompts. + * Also, useful for collating all of a solutions' prompts in one place. + * + * e.g. see Security Solution's x-pack/solutions/security/plugins/security_solution/public/assistant/prompt_contexts/index.tsx + */ +export type PromptContextTemplate = Omit<PromptContext, 'id' | 'getPromptContext'>; + +export type UnRegisterPromptContext = (promptContextId: string) => void; + +export type RegisterPromptContext = (promptContext: PromptContext) => void; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx index 009ee6c5a83cd..507c6773dd398 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; + +import { renderHook, act } from '@testing-library/react'; import { useSystemPromptEditor } from './use_system_prompt_editor'; import { mockSystemPrompt, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/default_conversations_column.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/default_conversations_column.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/default_conversations_column.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/default_conversations_column.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx index 220e150ec8647..4fa17c80e5925 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useSystemPromptTable } from './use_system_prompt_table'; import { Conversation } from '../../../../assistant_context/types'; import { AIConnector } from '../../../../connectorland/connector_selector'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_textarea/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_textarea/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_textarea/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_textarea/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_textarea/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_textarea/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_textarea/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_textarea/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/helpers.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/helpers.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/helpers.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/helpers.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx index 239b8a06293ed..3626249c9fe31 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { useQuickPromptEditor } from './use_quick_prompt_editor'; import { mockAlertPromptContext } from '../../../mock/prompt_context'; import { MOCK_QUICK_PROMPTS } from '../../../mock/quick_prompt'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx index ae91a8bb971c6..9d957a77dd738 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useQuickPromptTable } from './use_quick_prompt_table'; import { EuiTableActionsColumnType, EuiTableComputedColumnType } from '@elastic/eui'; import { MOCK_QUICK_PROMPTS } from '../../../mock/quick_prompt'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_management.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_management.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_management.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_management.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_modal.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_modal.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_modal.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_modal.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx similarity index 99% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx index cb78e98f205f2..04c5818118728 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx @@ -16,7 +16,6 @@ import { EuiSplitPanel, } from '@elastic/eui'; -// eslint-disable-next-line @kbn/eslint/module_migration import styled from 'styled-components'; import { css } from '@emotion/react'; import { PromptResponse } from '@kbn/elastic-assistant-common'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_bottom_bar.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_bottom_bar.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_bottom_bar.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_bottom_bar.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/const.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/const.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/const.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/const.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/settings_context_menu/settings_context_menu.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/settings_context_menu/settings_context_menu.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/settings_context_menu/settings_context_menu.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/settings_context_menu/settings_context_menu.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/types.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx new file mode 100644 index 0000000000000..8f68d99c3eaa5 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx @@ -0,0 +1,306 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act, waitFor, renderHook } from '@testing-library/react'; + +import { DEFAULT_LATEST_ALERTS } from '../../../assistant_context/constants'; +import { alertConvo, welcomeConvo } from '../../../mock/conversation'; +import { useSettingsUpdater } from './use_settings_updater'; +import { defaultQuickPrompt, mockSystemPrompt } from '../../../mock/system_prompt'; +import { HttpSetup } from '@kbn/core/public'; +import { PromptResponse } from '@kbn/elastic-assistant-common'; + +const mockConversations = { + [alertConvo.title]: alertConvo, + [welcomeConvo.title]: welcomeConvo, +}; +const conversationsLoaded = false; +const promptsLoaded = false; + +const mockHttp = { + fetch: jest.fn(), +} as unknown as HttpSetup; + +const mockSystemPrompts: PromptResponse[] = [mockSystemPrompt]; +const mockQuickPrompts: PromptResponse[] = [defaultQuickPrompt]; + +const anonymizationFields = { + total: 2, + page: 1, + perPage: 1000, + data: [ + { id: 'allow1', field: 'allow1', allowed: true, anonymized: false }, + { id: 'replacement1', field: 'replacement1', allowed: false, anonymized: true }, + ], +}; + +const setAssistantStreamingEnabled = jest.fn(); +const setKnowledgeBaseMock = jest.fn(); +const reportAssistantSettingToggled = jest.fn(); +const setUpdatedAnonymizationData = jest.fn(); +const mockValues = { + assistantStreamingEnabled: true, + setAssistantStreamingEnabled, + assistantTelemetry: { reportAssistantSettingToggled }, + allSystemPrompts: mockSystemPrompts, + allQuickPrompts: mockQuickPrompts, + knowledgeBase: { + latestAlerts: DEFAULT_LATEST_ALERTS, + }, + baseConversations: {}, + setKnowledgeBase: setKnowledgeBaseMock, + http: mockHttp, + anonymizationFieldsBulkActions: {}, +}; + +const updatedValues = { + conversations: { ...mockConversations }, + allSystemPrompts: [mockSystemPrompt], + allQuickPrompts: [ + { + consumer: 'securitySolutionUI', + content: + 'You are a helpful, expert assistant who answers questions about Elastic Security. Do not answer questions unrelated to Elastic Security.\nIf you answer a question related to KQL or EQL, it should be immediately usable within an Elastic Security timeline; please always format the output correctly with back ticks. Any answer provided for Query DSL should also be usable in a security timeline. This means you should only ever include the "filter" portion of the query.\nUse the following context to answer questions:', + id: 'default-system-prompt', + name: 'Default system prompt', + promptType: 'quick', + color: 'red', + }, + ], + updatedAnonymizationData: { + total: 2, + page: 1, + perPage: 1000, + data: [ + { id: 'allow2', field: 'allow2', allowed: true, anonymized: false }, + { id: 'replacement2', field: 'replacement2', allowed: false, anonymized: true }, + ], + }, + knowledgeBase: { + latestAlerts: DEFAULT_LATEST_ALERTS + 10, + }, + assistantStreamingEnabled: false, +}; + +jest.mock('../../../assistant_context', () => { + const original = jest.requireActual('../../../assistant_context'); + return { + ...original, + useAssistantContext: jest.fn().mockImplementation(() => mockValues), + }; +}); + +describe('useSettingsUpdater', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should set all state variables to their initial values when resetSettings is called', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: [...mockSystemPrompts, ...mockQuickPrompts], + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + const { + setConversationSettings, + setConversationsSettingsBulkActions, + setUpdatedKnowledgeBaseSettings, + setUpdatedAssistantStreamingEnabled, + resetSettings, + setPromptsBulkActions, + } = result.current; + + act(() => { + setConversationSettings(updatedValues.conversations); + setConversationsSettingsBulkActions({}); + setPromptsBulkActions({}); + setUpdatedAnonymizationData(updatedValues.updatedAnonymizationData); + setUpdatedKnowledgeBaseSettings(updatedValues.knowledgeBase); + setUpdatedAssistantStreamingEnabled(updatedValues.assistantStreamingEnabled); + }); + + expect(result.current.conversationSettings).toEqual(updatedValues.conversations); + expect(result.current.quickPromptSettings).toEqual(updatedValues.allQuickPrompts); + expect(result.current.systemPromptSettings).toEqual(updatedValues.allSystemPrompts); + expect(result.current.updatedAnonymizationData).toEqual(anonymizationFields); + expect(result.current.knowledgeBase).toEqual(updatedValues.knowledgeBase); + expect(result.current.assistantStreamingEnabled).toEqual( + updatedValues.assistantStreamingEnabled + ); + + act(() => { + resetSettings(); + }); + + expect(result.current.conversationSettings).toEqual(mockConversations); + expect(result.current.quickPromptSettings).toEqual(mockValues.allQuickPrompts); + expect(result.current.systemPromptSettings).toEqual(mockValues.allSystemPrompts); + expect(result.current.anonymizationFieldsBulkActions).toEqual( + mockValues.anonymizationFieldsBulkActions + ); + expect(result.current.knowledgeBase).toEqual(mockValues.knowledgeBase); + expect(result.current.assistantStreamingEnabled).toEqual(mockValues.assistantStreamingEnabled); + }); + + it('should update all state variables to their updated values when saveSettings is called', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: mockSystemPrompts, + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + + const { + setConversationSettings, + setConversationsSettingsBulkActions, + setAnonymizationFieldsBulkActions, + setUpdatedKnowledgeBaseSettings, + setPromptsBulkActions, + } = result.current; + + act(() => { + setConversationSettings(updatedValues.conversations); + setConversationsSettingsBulkActions({ delete: { ids: ['1'] } }); + setAnonymizationFieldsBulkActions({ delete: { ids: ['1'] } }); + setPromptsBulkActions({}); + setUpdatedAnonymizationData(updatedValues.updatedAnonymizationData); + setUpdatedKnowledgeBaseSettings(updatedValues.knowledgeBase); + }); + + await act(async () => { + await result.current.saveSettings(); + }); + + await waitFor(() => { + expect(mockHttp.fetch).toHaveBeenCalledWith( + '/internal/elastic_assistant/current_user/conversations/_bulk_action', + { + method: 'POST', + version: '1', + body: '{"delete":{"ids":["1"]}}', + } + ); + expect(setUpdatedAnonymizationData).toHaveBeenCalledWith( + updatedValues.updatedAnonymizationData + ); + expect(setKnowledgeBaseMock).toHaveBeenCalledWith(updatedValues.knowledgeBase); + }); + }); + + it('should track when alerts count is updated', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: mockSystemPrompts, + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + const { setUpdatedKnowledgeBaseSettings } = result.current; + + act(() => { + setUpdatedKnowledgeBaseSettings({ + ...updatedValues.knowledgeBase, + }); + }); + + await act(async () => { + await result.current.saveSettings(); + }); + + await waitFor(() => + expect(reportAssistantSettingToggled).toHaveBeenCalledWith({ alertsCountUpdated: true }) + ); + }); + + it('should track when streaming is updated', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: mockSystemPrompts, + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + const { setUpdatedAssistantStreamingEnabled } = result.current; + + act(() => { + setUpdatedAssistantStreamingEnabled(false); + }); + + await act(async () => { + await result.current.saveSettings(); + }); + + await waitFor(() => + expect(reportAssistantSettingToggled).toHaveBeenCalledWith({ + assistantStreamingEnabled: false, + }) + ); + }); + + it('if no settings update, do not track anything', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: mockSystemPrompts, + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); + const { setUpdatedKnowledgeBaseSettings } = result.current; + + await act(async () => { + setUpdatedKnowledgeBaseSettings(mockValues.knowledgeBase); + await result.current.saveSettings(); + }); + + await waitFor(() => expect(reportAssistantSettingToggled).not.toHaveBeenCalledWith()); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/streaming_text/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/streaming_text/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/streaming_text/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/streaming_text/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/streaming_text/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/streaming_text/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/streaming_text/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/streaming_text/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/translations.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx new file mode 100644 index 0000000000000..7a142710d19ec --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx @@ -0,0 +1,237 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DefinedUseQueryResult } from '@tanstack/react-query'; + +import { useAssistantOverlay } from '.'; +import { waitFor, renderHook, act } from '@testing-library/react'; +import { useFetchCurrentUserConversations } from '../api'; +import { Conversation } from '../../assistant_context/types'; +import { mockConnectors } from '../../mock/connectors'; + +const mockUseAssistantContext = { + registerPromptContext: jest.fn(), + showAssistantOverlay: jest.fn(), + unRegisterPromptContext: jest.fn(), +}; +jest.mock('../../assistant_context', () => { + const original = jest.requireActual('../../assistant_context'); + + return { + ...original, + useAssistantContext: () => mockUseAssistantContext, + }; +}); +jest.mock('../api/conversations/use_fetch_current_user_conversations'); +const mockCreateConversation = jest.fn().mockResolvedValue({ id: 'conversation-id' }); +jest.mock('../use_conversation', () => { + return { + useConversation: jest.fn(() => ({ + createConversation: mockCreateConversation, + currentConversation: { id: 'conversation-id' }, + })), + }; +}); + +jest.mock('../../connectorland/helpers'); +jest.mock('../../connectorland/use_load_connectors', () => { + return { + useLoadConnectors: jest.fn(() => ({ + data: mockConnectors, + error: null, + isSuccess: true, + })), + }; +}); + +const mockData = { + welcome_id: { + id: 'welcome_id', + title: 'Welcome', + category: 'assistant', + messages: [], + apiConfig: { connectorId: '123' }, + replacements: {}, + }, + electric_sheep_id: { + id: 'electric_sheep_id', + category: 'assistant', + title: 'electric sheep', + messages: [], + apiConfig: { connectorId: '123' }, + replacements: {}, + }, +}; + +describe('useAssistantOverlay', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.mocked(useFetchCurrentUserConversations).mockReturnValue({ + data: mockData, + isLoading: false, + refetch: jest.fn().mockResolvedValue({ + isLoading: false, + data: { + ...mockData, + welcome_id: { + ...mockData.welcome_id, + apiConfig: { newProp: true }, + }, + }, + }), + isFetched: true, + } as unknown as DefinedUseQueryResult<Record<string, Conversation>, unknown>); + }); + + it('calls registerPromptContext with the expected context', async () => { + const category = 'event'; + const description = 'test description'; + const getPromptContext = jest.fn(() => Promise.resolve('test data')); + const id = 'test-id'; + const suggestedUserPrompt = 'test user prompt'; + const tooltip = 'test tooltip'; + const isAssistantAvailable = true; + + renderHook(() => + useAssistantOverlay( + category, + null, + description, + getPromptContext, + id, + suggestedUserPrompt, + tooltip, + isAssistantAvailable + ) + ); + + await waitFor(() => { + expect(mockUseAssistantContext.registerPromptContext).toHaveBeenCalledWith({ + category, + description, + getPromptContext, + id, + suggestedUserPrompt, + tooltip, + }); + }); + }); + + it('calls unRegisterPromptContext on unmount', () => { + const isAssistantAvailable = true; + const { unmount } = renderHook(() => + useAssistantOverlay( + 'event', + null, + 'description', + () => Promise.resolve('data'), + 'id', + null, + 'tooltip', + isAssistantAvailable + ) + ); + + unmount(); + + expect(mockUseAssistantContext.unRegisterPromptContext).toHaveBeenCalledWith('id'); + }); + + it('calls `showAssistantOverlay` from the assistant context', () => { + const isAssistantAvailable = true; + const { result } = renderHook(() => + useAssistantOverlay( + 'event', + 'conversation-id', + 'description', + () => Promise.resolve('data'), + 'id', + null, + 'tooltip', + isAssistantAvailable + ) + ); + + act(() => { + result.current.showAssistantOverlay(true); + }); + + expect(mockCreateConversation).not.toHaveBeenCalled(); + expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ + showOverlay: true, + promptContextId: 'id', + conversationTitle: 'conversation-id', + }); + }); + + it('calls `showAssistantOverlay` and creates a new conversation when shouldCreateConversation: true and the conversation does not exist', async () => { + const isAssistantAvailable = true; + const { result } = renderHook(() => + useAssistantOverlay( + 'event', + 'conversation-id', + 'description', + () => Promise.resolve('data'), + 'id', + null, + 'tooltip', + isAssistantAvailable + ) + ); + + act(() => { + result.current.showAssistantOverlay(true, true); + }); + + expect(mockCreateConversation).toHaveBeenCalledWith({ + title: 'conversation-id', + apiConfig: { + actionTypeId: '.gen-ai', + connectorId: 'connectorId', + }, + category: 'assistant', + }); + + await waitFor(() => { + expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ + showOverlay: true, + promptContextId: 'id', + conversationTitle: 'conversation-id', + }); + }); + }); + + it('calls `showAssistantOverlay` and does not create a new conversation when shouldCreateConversation: true and the conversation exists', async () => { + const isAssistantAvailable = true; + const { result } = renderHook(() => + useAssistantOverlay( + 'event', + 'electric sheep', + 'description', + () => Promise.resolve('data'), + 'id', + null, + 'tooltip', + isAssistantAvailable + ) + ); + + act(() => { + result.current.showAssistantOverlay(true, true); + }); + + expect(mockCreateConversation).not.toHaveBeenCalled(); + + await waitFor(() => { + expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ + showOverlay: true, + promptContextId: 'id', + conversationTitle: 'electric sheep', + }); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx new file mode 100644 index 0000000000000..9e4fc2ab1a2c6 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx @@ -0,0 +1,139 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useConversation } from '.'; +import { act, waitFor, renderHook } from '@testing-library/react'; +import { TestProviders } from '../../mock/test_providers/test_providers'; +import React from 'react'; +import { MessageRole } from '@kbn/elastic-assistant-common'; +import { httpServiceMock } from '@kbn/core/public/mocks'; +import { WELCOME_CONVERSATION } from './sample_conversations'; +import { + deleteConversation, + getConversationById as _getConversationById, + createConversation as _createConversationApi, +} from '../api/conversations'; + +jest.mock('../api/conversations'); +const message = { + content: 'You are a robot', + role: 'user' as MessageRole, + timestamp: '10/04/2023, 1:00:36 PM', +}; +const anotherMessage = { + content: 'I am a robot', + role: 'assistant' as MessageRole, + timestamp: '10/04/2023, 1:00:46 PM', +}; + +const mockConvo = { + id: 'new-convo', + title: 'new-convo', + messages: [message, anotherMessage], + apiConfig: { + connectorId: '123', + actionTypeId: '.gen-ai', + defaultSystemPromptId: 'default-system-prompt', + }, +}; + +const getConversationById = _getConversationById as jest.Mock; +const createConversation = _createConversationApi as jest.Mock; + +describe('useConversation', () => { + let httpMock: ReturnType<typeof httpServiceMock.createSetupContract>; + + beforeEach(() => { + httpMock = httpServiceMock.createSetupContract(); + + jest.clearAllMocks(); + }); + + it('should create a new conversation when called with valid conversationId and message', async () => { + const { result } = renderHook(() => useConversation(), { + wrapper: ({ children }: React.PropsWithChildren<{}>) => ( + <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> + ), + }); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + createConversation.mockResolvedValue(mockConvo); + + let createResult; + + await act(async () => { + createResult = await result.current.createConversation({ + ...mockConvo, + replacements: {}, + title: mockConvo.title, + category: 'assistant', + }); + }); + + expect(createResult).toEqual(mockConvo); + }); + + it('should delete an existing conversation when called with valid conversationId', async () => { + const { result } = renderHook(() => useConversation(), { + wrapper: ({ children }: React.PropsWithChildren<{}>) => ( + <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> + ), + }); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + await act(async () => { + await result.current.deleteConversation('new-convo'); + }); + + expect(deleteConversation).toHaveBeenCalledWith({ + http: httpMock, + id: 'new-convo', + }); + }); + + it('should update the apiConfig for an existing conversation when called with a valid conversationId and apiConfig', async () => { + const { result } = renderHook(() => useConversation(), { + wrapper: ({ children }: React.PropsWithChildren<{}>) => ( + <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> + ), + }); + await waitFor(() => new Promise((resolve) => resolve(null))); + + await act(async () => { + await result.current.setApiConfig({ + conversation: WELCOME_CONVERSATION, + apiConfig: mockConvo.apiConfig, + }); + }); + + expect(createConversation).toHaveBeenCalledWith({ + http: httpMock, + conversation: { ...WELCOME_CONVERSATION, apiConfig: mockConvo.apiConfig, id: '' }, + }); + }); + + it('should remove the last message from a conversation when called with valid conversationId', async () => { + const { result } = renderHook(() => useConversation(), { + wrapper: ({ children }: React.PropsWithChildren<{}>) => ( + <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> + ), + }); + await waitFor(() => new Promise((resolve) => resolve(null))); + + getConversationById.mockResolvedValue(mockConvo); + + let removeResult; + + await act(async () => { + removeResult = await result.current.removeLastMessage('new-convo'); + }); + + expect(removeResult).toEqual([message]); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx new file mode 100644 index 0000000000000..f5ea35983dd80 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx @@ -0,0 +1,382 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook, act, waitFor } from '@testing-library/react'; +import { useCurrentConversation, Props } from '.'; +import { useConversation } from '../use_conversation'; +import deepEqual from 'fast-deep-equal'; +import { Conversation } from '../../..'; +import { find } from 'lodash'; + +// Mock dependencies +jest.mock('../use_conversation'); +jest.mock('../helpers'); +jest.mock('fast-deep-equal'); +jest.mock('lodash'); +const mockData = { + welcome_id: { + id: 'welcome_id', + title: 'Welcome', + category: 'assistant', + messages: [], + apiConfig: { + connectorId: '123', + actionTypeId: '.gen-ai', + defaultSystemPromptId: 'system-prompt-id', + }, + replacements: {}, + }, + electric_sheep_id: { + id: 'electric_sheep_id', + category: 'assistant', + title: 'electric sheep', + messages: [], + apiConfig: { connectorId: '123', actionTypeId: '.gen-ai' }, + replacements: {}, + }, +}; +describe('useCurrentConversation', () => { + const mockUseConversation = { + createConversation: jest.fn(), + deleteConversation: jest.fn(), + getConversation: jest.fn(), + getDefaultConversation: jest.fn(), + setApiConfig: jest.fn(), + }; + + beforeEach(() => { + (useConversation as jest.Mock).mockReturnValue(mockUseConversation); + (deepEqual as jest.Mock).mockReturnValue(false); + (find as jest.Mock).mockReturnValue(undefined); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + const defaultProps: Props = { + // @ts-ignore not exact system prompt type, ok for test + allSystemPrompts: [{ id: 'system-prompt-id' }, { id: 'something-crazy' }], + conversationId: '', + conversations: {}, + mayUpdateConversations: true, + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ data: mockData }), + }; + + const setupHook = (props: Partial<Props> = {}) => { + return renderHook(() => useCurrentConversation({ ...defaultProps, ...props })); + }; + + it('should initialize with correct default values', () => { + const { result } = setupHook(); + + expect(result.current.currentConversation).toBeUndefined(); + expect(result.current.currentSystemPrompt).toBeUndefined(); + }); + + it('should set the current system prompt ID when the prompt selection changes', async () => { + const conversationId = 'welcome_id'; + const conversation = mockData.welcome_id; + mockUseConversation.getConversation.mockResolvedValue(conversation); + + const { result } = setupHook({ + conversationId, + conversations: { [conversationId]: conversation }, + }); + + await act(async () => { + await result.current.setCurrentSystemPromptId('prompt-id'); + }); + + expect(mockUseConversation.setApiConfig).toHaveBeenCalledWith({ + conversation, + apiConfig: { + ...conversation.apiConfig, + defaultSystemPromptId: 'prompt-id', + }, + }); + expect(defaultProps.refetchCurrentUserConversations).toHaveBeenCalled(); + }); + + it('should fetch and set the current conversation', async () => { + const conversationId = 'welcome_id'; + const conversation = mockData.welcome_id; + mockUseConversation.getConversation.mockResolvedValue(conversation); + + const { result } = setupHook({ + conversationId, + conversations: { [conversationId]: conversation }, + }); + + await act(async () => { + await result.current.refetchCurrentConversation({ cId: conversationId }); + }); + + expect(result.current.currentConversation).toEqual(conversation); + }); + + it('should handle conversation selection', async () => { + const conversationId = 'test-id'; + const conversationTitle = 'Test Conversation'; + const conversation = { + ...mockData.welcome_id, + id: conversationId, + title: conversationTitle, + apiConfig: { + ...mockData.welcome_id.apiConfig, + defaultSystemPromptId: 'something-crazy', + }, + } as Conversation; + const mockConversations = { + ...mockData, + [conversationId]: conversation, + }; + (find as jest.Mock).mockReturnValue(conversation); + + const { result } = setupHook({ + conversationId: mockData.welcome_id.id, + conversations: mockConversations, + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: mockConversations, + }), + }); + + await act(async () => { + await result.current.handleOnConversationSelected({ + cId: conversationId, + cTitle: conversationTitle, + }); + }); + + expect(result.current.currentConversation).toEqual(conversation); + expect(result.current.currentSystemPrompt?.id).toBe('something-crazy'); + }); + + it('should non-existing handle conversation selection', async () => { + const conversationId = 'test-id'; + const conversationTitle = 'Test Conversation'; + const conversation = { + ...mockData.welcome_id, + id: conversationId, + title: conversationTitle, + } as Conversation; + const mockConversations = { + ...mockData, + [conversationId]: conversation, + }; + (find as jest.Mock).mockReturnValue(conversation); + + const { result } = setupHook({ + conversationId: mockData.welcome_id.id, + conversations: mockConversations, + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: mockConversations, + }), + }); + + await act(async () => { + await result.current.handleOnConversationSelected({ + cId: 'bad', + cTitle: 'bad', + }); + }); + + expect(result.current.currentConversation).toEqual(mockData.welcome_id); + expect(result.current.currentSystemPrompt?.id).toBe('system-prompt-id'); + }); + + it('should create a new conversation', async () => { + const newConversation = { + ...mockData.welcome_id, + id: 'new-id', + title: 'NEW_CHAT', + messages: [], + } as Conversation; + mockUseConversation.createConversation.mockResolvedValue(newConversation); + + const { result } = setupHook({ + conversations: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + }, + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + [newConversation.id]: newConversation, + }, + }), + }); + + await act(async () => { + await result.current.handleCreateConversation(); + }); + + expect(mockUseConversation.createConversation).toHaveBeenCalled(); + }); + + it('should create a new conversation using the connector portion of the apiConfig of the current conversation', async () => { + const newConversation = { + ...mockData.welcome_id, + id: 'new-id', + title: 'NEW_CHAT', + messages: [], + } as Conversation; + mockUseConversation.createConversation.mockResolvedValue(newConversation); + + const { result } = setupHook({ + conversations: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + }, + conversationId: 'old-id', + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + [newConversation.id]: newConversation, + }, + }), + }); + + await act(async () => { + await result.current.handleCreateConversation(); + }); + const { defaultSystemPromptId: _, ...everythingExceptSystemPromptId } = + mockData.welcome_id.apiConfig; + + expect(mockUseConversation.createConversation).toHaveBeenCalledWith({ + apiConfig: everythingExceptSystemPromptId, + title: 'New chat', + }); + }); + + it('should create a new conversation with correct isNewConversationDefault: true system prompt', async () => { + const newConversation = { + ...mockData.welcome_id, + id: 'new-id', + title: 'NEW_CHAT', + messages: [], + } as Conversation; + mockUseConversation.createConversation.mockResolvedValue(newConversation); + + const { result } = setupHook({ + conversations: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + }, + allSystemPrompts: [ + { + timestamp: '2024-09-10T15:52:24.761Z', + users: [ + { + id: 'u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0', + name: 'elastic', + }, + ], + content: 'Address the user as Mr Orange in each response', + isNewConversationDefault: true, + updatedAt: '2024-09-10T22:07:44.915Z', + id: 'LBOi3JEBy3uD9EGi1d_G', + name: 'Call me Orange', + promptType: 'system', + consumer: 'securitySolutionUI', + }, + ], + conversationId: 'old-id', + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + [newConversation.id]: newConversation, + }, + }), + }); + + await act(async () => { + await result.current.handleCreateConversation(); + }); + + const { defaultSystemPromptId: _, ...everythingExceptSystemPromptId } = + mockData.welcome_id.apiConfig; + + await waitFor(() => + expect(mockUseConversation.createConversation).toHaveBeenCalledWith({ + apiConfig: { + ...everythingExceptSystemPromptId, + defaultSystemPromptId: 'LBOi3JEBy3uD9EGi1d_G', + }, + title: 'New chat', + }) + ); + }); + + it('should delete a conversation', async () => { + const conversationTitle = 'Test Conversation'; + const conversation = { + ...mockData.welcome_id, + id: 'test-id', + title: conversationTitle, + messages: [], + } as Conversation; + + const { result } = setupHook({ + conversations: { ...mockData, 'test-id': conversation }, + }); + + await act(async () => { + await result.current.handleOnConversationDeleted('test-id'); + }); + + expect(mockUseConversation.deleteConversation).toHaveBeenCalledWith('test-id'); + expect(result.current.currentConversation).toBeUndefined(); + }); + + it('should refetch the conversation multiple times if isStreamRefetch is true', async () => { + const conversationId = 'test-id'; + const conversation = { id: conversationId, messages: [{ role: 'user' }] } as Conversation; + mockUseConversation.getConversation.mockResolvedValue(conversation); + + const { result } = setupHook({ + conversationId, + conversations: { [conversationId]: conversation }, + }); + + await act(async () => { + await result.current.refetchCurrentConversation({ + cId: conversationId, + isStreamRefetch: true, + }); + }); + + expect(mockUseConversation.getConversation).toHaveBeenCalledTimes(6); // initial + 5 retries + }); +}); diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx new file mode 100644 index 0000000000000..ab5e5532a19cb --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx @@ -0,0 +1,315 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Dispatch, SetStateAction, useCallback, useEffect, useMemo, useState } from 'react'; +import { QueryObserverResult } from '@tanstack/react-query'; +import { PromptResponse } from '@kbn/elastic-assistant-common'; +import { find } from 'lodash'; +import deepEqual from 'fast-deep-equal'; +import { AIConnector } from '../../connectorland/connector_selector'; +import { getGenAiConfig } from '../../connectorland/helpers'; +import { NEW_CHAT } from '../conversations/conversation_sidepanel/translations'; +import { getDefaultNewSystemPrompt, getDefaultSystemPrompt } from '../use_conversation/helpers'; +import { useConversation } from '../use_conversation'; +import { sleep } from '../helpers'; +import { Conversation, WELCOME_CONVERSATION_TITLE } from '../../..'; + +export interface Props { + allSystemPrompts: PromptResponse[]; + conversationId: string; + conversations: Record<string, Conversation>; + defaultConnector?: AIConnector; + mayUpdateConversations: boolean; + refetchCurrentUserConversations: () => Promise< + QueryObserverResult<Record<string, Conversation>, unknown> + >; +} + +interface UseCurrentConversation { + currentConversation: Conversation | undefined; + currentSystemPrompt: PromptResponse | undefined; + handleCreateConversation: () => Promise<void>; + handleOnConversationDeleted: (cTitle: string) => Promise<void>; + handleOnConversationSelected: ({ cId, cTitle }: { cId: string; cTitle: string }) => Promise<void>; + refetchCurrentConversation: (options?: { + cId?: string; + cTitle?: string; + isStreamRefetch?: boolean; + }) => Promise<Conversation | undefined>; + setCurrentConversation: Dispatch<SetStateAction<Conversation | undefined>>; + setCurrentSystemPromptId: (promptId: string | undefined) => void; +} + +/** + * Manages the current conversation state. Interacts with the conversation API and keeps local state up to date. + * Manages system prompt as that is per conversation + * Provides methods to handle conversation selection, creation, deletion, and system prompt selection. + */ +export const useCurrentConversation = ({ + allSystemPrompts, + conversationId, + conversations, + defaultConnector, + mayUpdateConversations, + refetchCurrentUserConversations, +}: Props): UseCurrentConversation => { + const { + createConversation, + deleteConversation, + getConversation, + getDefaultConversation, + setApiConfig, + } = useConversation(); + const [currentConversation, setCurrentConversation] = useState<Conversation | undefined>(); + const [currentConversationId, setCurrentConversationId] = useState<string | undefined>( + conversationId + ); + useEffect(() => { + setCurrentConversationId(conversationId); + }, [conversationId]); + /** + * START SYSTEM PROMPT + */ + const currentSystemPrompt = useMemo( + () => + getDefaultSystemPrompt({ + allSystemPrompts, + conversation: currentConversation, + }), + [allSystemPrompts, currentConversation] + ); + + // Write the selected system prompt to the conversation config + const setCurrentSystemPromptId = useCallback( + async (promptId?: string) => { + if (currentConversation && currentConversation.apiConfig) { + await setApiConfig({ + conversation: currentConversation, + apiConfig: { + ...currentConversation.apiConfig, + defaultSystemPromptId: promptId, + }, + }); + await refetchCurrentUserConversations(); + } + }, + [currentConversation, refetchCurrentUserConversations, setApiConfig] + ); + + /** + * END SYSTEM PROMPT + */ + + /** + * Refetches the current conversation, optionally by conversation ID or title. + * @param cId - The conversation ID to refetch. + * @param cTitle - The conversation title to refetch. + * @param isStreamRefetch - Are we refetching because stream completed? If so retry several times to ensure the message has updated on the server + */ + const refetchCurrentConversation = useCallback( + async ({ + cId, + cTitle, + isStreamRefetch = false, + }: { cId?: string; cTitle?: string; isStreamRefetch?: boolean } = {}) => { + if (cId === '' || (cTitle && !conversations[cTitle])) { + return; + } + + const cConversationId = + cId ?? (cTitle && conversations[cTitle].id) ?? currentConversation?.id; + + if (cConversationId) { + let updatedConversation = await getConversation(cConversationId); + let retries = 0; + const maxRetries = 5; + + // this retry is a workaround for the stream not YET being persisted to the stored conversation + while ( + isStreamRefetch && + updatedConversation && + updatedConversation.messages[updatedConversation.messages.length - 1].role !== + 'assistant' && + retries < maxRetries + ) { + retries++; + await sleep(2000); + updatedConversation = await getConversation(cConversationId); + } + + if (updatedConversation) { + setCurrentConversation(updatedConversation); + } + + return updatedConversation; + } + }, + [conversations, currentConversation?.id, getConversation] + ); + + const initializeDefaultConversationWithConnector = useCallback( + async (defaultConvo: Conversation): Promise<Conversation> => { + const apiConfig = getGenAiConfig(defaultConnector); + const updatedConvo = + (await setApiConfig({ + conversation: defaultConvo, + apiConfig: { + ...defaultConvo?.apiConfig, + connectorId: (defaultConnector?.id as string) ?? '', + actionTypeId: (defaultConnector?.actionTypeId as string) ?? '.gen-ai', + provider: apiConfig?.apiProvider, + model: apiConfig?.defaultModel, + defaultSystemPromptId: allSystemPrompts.find((sp) => sp.isNewConversationDefault)?.id, + }, + })) ?? defaultConvo; + await refetchCurrentUserConversations(); + return updatedConvo; + }, + [allSystemPrompts, defaultConnector, refetchCurrentUserConversations, setApiConfig] + ); + + const handleOnConversationSelected = useCallback( + async ({ cId, cTitle }: { cId: string; cTitle: string }) => { + const allConversations = await refetchCurrentUserConversations(); + + // This is a default conversation that has not yet been initialized + // add the default connector config + if (cId === '' && allConversations?.data?.[cTitle]) { + const updatedConvo = await initializeDefaultConversationWithConnector( + allConversations.data[cTitle] + ); + setCurrentConversationId(updatedConvo.id); + } else if (allConversations?.data?.[cId]) { + setCurrentConversationId(cId); + } + }, + [ + initializeDefaultConversationWithConnector, + refetchCurrentUserConversations, + setCurrentConversationId, + ] + ); + + // update currentConversation when conversations or currentConversationId update + useEffect(() => { + if (!mayUpdateConversations) return; + const updateConversation = async () => { + const nextConversation: Conversation = + (currentConversationId && conversations[currentConversationId]) || + // if currentConversationId is not an id, it should be a title from a + // default conversation that has not yet been initialized + find(conversations, ['title', currentConversationId]) || + find(conversations, ['title', WELCOME_CONVERSATION_TITLE]) || + // if no Welcome convo exists, create one + getDefaultConversation({ cTitle: WELCOME_CONVERSATION_TITLE }); + + // on the off chance that the conversation is not found, return + if (!nextConversation) { + return; + } + + if (nextConversation && nextConversation.id === '') { + // This is a default conversation that has not yet been initialized + const conversation = await initializeDefaultConversationWithConnector(nextConversation); + return setCurrentConversation(conversation); + } + setCurrentConversation((prev) => { + if (deepEqual(prev, nextConversation)) return prev; + + if ( + prev && + prev.id === nextConversation.id && + // if the conversation id has not changed and the previous conversation has more messages + // it is because the local conversation has a readable stream running + // and it has not yet been persisted to the stored conversation + prev.messages.length > nextConversation.messages.length + ) { + return { + ...nextConversation, + messages: prev.messages, + }; + } + + return nextConversation; + }); + }; + updateConversation(); + }, [ + currentConversationId, + conversations, + getDefaultConversation, + initializeDefaultConversationWithConnector, + mayUpdateConversations, + ]); + + const handleOnConversationDeleted = useCallback( + async (cTitle: string) => { + await deleteConversation(conversations[cTitle].id); + await refetchCurrentUserConversations(); + }, + [conversations, deleteConversation, refetchCurrentUserConversations] + ); + + const handleCreateConversation = useCallback(async () => { + const newChatExists = find(conversations, ['title', NEW_CHAT]); + if (newChatExists && !newChatExists.messages.length) { + handleOnConversationSelected({ + cId: newChatExists.id, + cTitle: newChatExists.title, + }); + return; + } + const newSystemPrompt = getDefaultNewSystemPrompt(allSystemPrompts); + + let conversation: Partial<Conversation> = {}; + if (currentConversation?.apiConfig) { + const { defaultSystemPromptId: _, ...restApiConfig } = currentConversation?.apiConfig; + conversation = + restApiConfig.actionTypeId != null + ? { + apiConfig: { + ...restApiConfig, + ...(newSystemPrompt?.id != null + ? { defaultSystemPromptId: newSystemPrompt.id } + : {}), + }, + } + : {}; + } + const newConversation = await createConversation({ + title: NEW_CHAT, + ...conversation, + }); + + if (newConversation) { + handleOnConversationSelected({ + cId: newConversation.id, + cTitle: newConversation.title, + }); + } else { + await refetchCurrentUserConversations(); + } + }, [ + allSystemPrompts, + conversations, + createConversation, + currentConversation?.apiConfig, + handleOnConversationSelected, + refetchCurrentUserConversations, + ]); + + return { + currentConversation, + currentSystemPrompt, + handleCreateConversation, + handleOnConversationDeleted, + handleOnConversationSelected, + refetchCurrentConversation, + setCurrentConversation, + setCurrentSystemPromptId, + }; +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_data_stream_apis.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_data_stream_apis.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_data_stream_apis.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_data_stream_apis.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant_context/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/helpers.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.test.tsx new file mode 100644 index 0000000000000..94e7800450c5d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.test.tsx @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react'; + +import { useAssistantContext } from '.'; +import useLocalStorage from 'react-use/lib/useLocalStorage'; +import { TestProviders } from '../mock/test_providers/test_providers'; + +jest.mock('react-use/lib/useLocalStorage', () => jest.fn().mockReturnValue(['456', jest.fn()])); +jest.mock('react-use/lib/useSessionStorage', () => jest.fn().mockReturnValue(['456', jest.fn()])); + +describe('AssistantContext', () => { + beforeEach(() => jest.clearAllMocks()); + + test('it throws an error when useAssistantContext hook is used without a SecurityAssistantContext', () => { + expect(() => renderHook(useAssistantContext)).toThrow( + /useAssistantContext must be used within a AssistantProvider/ + ); + }); + + test('it should return the httpFetch function', async () => { + const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); + + const path = '/path/to/resource'; + await result.current.http.fetch(path); + + expect(result.current.http.fetch).toBeCalledWith(path); + }); + + test('getLastConversationId defaults to provided id', async () => { + const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); + const id = result.current.getLastConversationId('123'); + expect(id).toEqual('123'); + }); + + test('getLastConversationId uses local storage id when no id is provided ', async () => { + const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); + const id = result.current.getLastConversationId(); + expect(id).toEqual('456'); + }); + + test('getLastConversationId defaults to Welcome when no local storage id and no id is provided ', async () => { + (useLocalStorage as jest.Mock).mockReturnValue([undefined, jest.fn()]); + const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); + const id = result.current.getLastConversationId(); + expect(id).toEqual('Welcome'); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/add_connector_modal/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/add_connector_modal/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/add_connector_modal/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/add_connector_modal/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_button/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_button/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_button/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_button/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_setup/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_setup/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/helpers.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/helpers.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/translations.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx new file mode 100644 index 0000000000000..dd169c9e345e3 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act, waitFor, renderHook } from '@testing-library/react'; +import { useLoadActionTypes, Props } from '.'; +import { mockActionTypes } from '../../mock/connectors'; + +jest.mock('@tanstack/react-query', () => ({ + useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { + try { + const res = await fn(); + return Promise.resolve(res); + } catch (e) { + opts.onError(e); + } + }), +})); + +const http = { + get: jest.fn().mockResolvedValue(mockActionTypes), +}; +const toasts = { + addError: jest.fn(), +}; +const defaultProps = { http, toasts } as unknown as Props; +describe('useLoadActionTypes', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should call api to load action types', async () => { + renderHook(() => useLoadActionTypes(defaultProps)); + await waitFor(() => { + expect(defaultProps.http.get).toHaveBeenCalledWith('/api/actions/connector_types', { + query: { feature_id: 'generativeAIForSecurity' }, + }); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + + it('should return sorted action types', async () => { + const { result } = renderHook(() => useLoadActionTypes(defaultProps)); + await waitFor(() => + expect(result.current).resolves.toStrictEqual( + mockActionTypes.sort((a, b) => a.name.localeCompare(b.name)) + ) + ); + }); + it('should display error toast when api throws error', async () => { + await act(async () => { + const mockHttp = { + get: jest.fn().mockRejectedValue(new Error('this is an error')), + } as unknown as Props['http']; + renderHook(() => useLoadActionTypes({ ...defaultProps, http: mockHttp })); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx new file mode 100644 index 0000000000000..685d01c988e0d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { waitFor, renderHook } from '@testing-library/react'; +import { useLoadConnectors, Props } from '.'; +import { mockConnectors } from '../../mock/connectors'; + +const mockConnectorsAndExtras = [ + ...mockConnectors, + { + ...mockConnectors[0], + id: 'connector-missing-secrets', + name: 'Connector Missing Secrets', + isMissingSecrets: true, + }, + { + ...mockConnectors[0], + + id: 'connector-wrong-action-type', + name: 'Connector Wrong Action Type', + isMissingSecrets: true, + actionTypeId: '.d3', + }, +]; + +const connectorsApiResponse = mockConnectorsAndExtras.map((c) => ({ + ...c, + connector_type_id: c.actionTypeId, + is_preconfigured: false, + is_deprecated: false, + referenced_by_count: 0, + is_missing_secrets: c.isMissingSecrets, + is_system_action: false, +})); + +const loadConnectorsResult = mockConnectors.map((c) => ({ + ...c, + isPreconfigured: false, + isDeprecated: false, + referencedByCount: 0, + isSystemAction: false, +})); + +jest.mock('@tanstack/react-query', () => ({ + useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { + try { + const res = await fn(); + return Promise.resolve(res); + } catch (e) { + opts.onError(e); + } + }), +})); + +const http = { + get: jest.fn().mockResolvedValue(connectorsApiResponse), +}; +const toasts = { + addError: jest.fn(), +}; +const defaultProps = { http, toasts } as unknown as Props; +describe('useLoadConnectors', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should call api to load action types', async () => { + renderHook(() => useLoadConnectors(defaultProps)); + await waitFor(() => { + expect(defaultProps.http.get).toHaveBeenCalledWith('/api/actions/connectors'); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + + it('should return sorted action types, removing isMissingSecrets and wrong action type ids', async () => { + const { result } = renderHook(() => useLoadConnectors(defaultProps)); + await waitFor(() => { + expect(result.current).resolves.toStrictEqual( + // @ts-ignore ts does not like config, but we define it in the mock data + loadConnectorsResult.map((c) => ({ ...c, apiProvider: c.config.apiProvider })) + ); + }); + }); + it('should display error toast when api throws error', async () => { + const mockHttp = { + get: jest.fn().mockRejectedValue(new Error('this is an error')), + } as unknown as Props['http']; + renderHook(() => useLoadConnectors({ ...defaultProps, http: mockHttp })); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/use_anonymization_list_update.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/use_anonymization_list_update.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/use_anonymization_list_update.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/use_anonymization_list_update.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx new file mode 100644 index 0000000000000..94ecaeedc42e8 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx @@ -0,0 +1,126 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiBasicTableColumn, EuiButtonEmpty, EuiCode, EuiSwitch, EuiText } from '@elastic/eui'; +import React from 'react'; + +import styled from 'styled-components'; + +import { BulkActions } from '../bulk_actions'; +import * as i18n from '../translations'; +import { BatchUpdateListItem, ContextEditorRow, FIELDS } from '../types'; + +const AnonymizedButton = styled(EuiButtonEmpty)` + max-height: 24px; +`; + +export const getColumns = ({ + compressed = true, + hasUpdateAIAssistantAnonymization, + onListUpdated, + rawData, +}: { + compressed?: boolean; + hasUpdateAIAssistantAnonymization: boolean; + onListUpdated: (updates: BatchUpdateListItem[]) => void; + rawData: Record<string, string[]> | null; +}): Array<EuiBasicTableColumn<ContextEditorRow>> => { + const actionsColumn: EuiBasicTableColumn<ContextEditorRow> = { + field: FIELDS.ACTIONS, + name: '', + render: (_, row) => { + return ( + <BulkActions + appliesTo="singleRow" + disabled={false} + disableAllow={row.allowed} + disableDeny={!row.allowed} + disableAnonymize={!row.allowed || (row.allowed && row.anonymized)} + disableUnanonymize={!row.allowed || (row.allowed && !row.anonymized)} + onListUpdated={onListUpdated} + selected={[row]} + /> + ); + }, + sortable: false, + width: '36px', + }; + + const valuesColumn: EuiBasicTableColumn<ContextEditorRow> = { + field: FIELDS.RAW_VALUES, + name: i18n.VALUES, + render: (rawValues: ContextEditorRow['rawValues']) => ( + <EuiCode data-test-subj="rawValues">{rawValues.join(',')}</EuiCode> + ), + sortable: false, + }; + + const baseColumns: Array<EuiBasicTableColumn<ContextEditorRow>> = [ + { + field: FIELDS.ALLOWED, + name: i18n.ALLOWED, + render: (_, { allowed, field }) => ( + <EuiSwitch + data-test-subj="allowed" + checked={allowed} + disabled={!hasUpdateAIAssistantAnonymization} + label="" + showLabel={false} + compressed={compressed} + onChange={() => { + onListUpdated([ + { + field, + operation: allowed ? 'remove' : 'add', + update: rawData == null ? 'defaultAllow' : 'allow', + }, + ]); + }} + /> + ), + sortable: true, + width: '75px', + }, + { + field: FIELDS.ANONYMIZED, + name: i18n.ANONYMIZED, + render: (_, { allowed, anonymized, field }) => ( + <AnonymizedButton + data-test-subj="anonymized" + disabled={!allowed || !hasUpdateAIAssistantAnonymization} + color={anonymized ? 'primary' : 'text'} + flush="both" + iconType={anonymized ? 'eyeClosed' : 'eye'} + isSelected={anonymized ? true : false} + onClick={() => + onListUpdated([ + { + field, + operation: anonymized ? 'remove' : 'add', + update: rawData == null ? 'defaultAllowReplacement' : 'allowReplacement', + }, + ]) + } + > + <EuiText size="xs">{anonymized ? i18n.YES : i18n.NO}</EuiText> + </AnonymizedButton> + ), + sortable: true, + width: '102px', + }, + { + field: FIELDS.FIELD, + name: i18n.FIELD, + sortable: true, + width: '260px', + }, + ]; + + return rawData == null + ? [...baseColumns, ...(hasUpdateAIAssistantAnonymization ? [actionsColumn] : [])] + : [...baseColumns, valuesColumn, ...(hasUpdateAIAssistantAnonymization ? [actionsColumn] : [])]; +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_flyout/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_flyout/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_flyout/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_flyout/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_preview.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_preview.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_preview.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_preview.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/replacements_context_viewer/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/replacements_context_viewer/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/replacements_context_viewer/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/replacements_context_viewer/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/add_entry_button.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/add_entry_button.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/add_entry_button.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/add_entry_button.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/document_entry_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/document_entry_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/document_entry_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/document_entry_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/use_knowledge_base_table.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/use_knowledge_base_table.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/use_knowledge_base_table.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/use_knowledge_base_table.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/connectors.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/connectors.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/connectors.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/connectors.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/conversation.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/conversation.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/conversation.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/conversation.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/prompt_context/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/prompt_context/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/prompt_context/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/prompt_context/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/quick_prompt.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/quick_prompt.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/quick_prompt.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/quick_prompt.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/system_prompt/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/system_prompt/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/system_prompt/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/system_prompt/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/const.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/const.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/const.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/const.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/overview.gif b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/overview.gif similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/overview.gif rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/overview.gif diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/step_config.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/step_config.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/step_config.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/step_config.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/upgrade/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/upgrade/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/index.ts new file mode 100644 index 0000000000000..97cd680fae3af --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/index.ts @@ -0,0 +1,163 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// To integrate the assistant into a Kibana app, perform the following three steps: + +// Step 1: Wrap your Kibana app in the `AssistantProvider` component. This typically +// happens in the root of your app. Optionally provide a custom title for the assistant: + +/** provides context (from the app) to the assistant, and injects Kibana services, like `http` */ +export { AssistantProvider, useAssistantContext } from './impl/assistant_context'; + +// Step 2: Add the `AssistantOverlay` component to your app. This component displays the assistant +// overlay in a modal, bound to a shortcut key: + +/** modal overlay for Elastic Assistant conversations */ +export { AssistantOverlay } from './impl/assistant/assistant_overlay'; + +// In addition to the `AssistantOverlay`, or as an alternative, you may use the `Assistant` component +// to display the assistant without the modal overlay: + +/** this component renders the Assistant without the modal overlay to, for example, render it in a Timeline tab */ +export { Assistant } from './impl/assistant'; + +// Step 3: Wherever you want to bring context into the assistant, use the any combination of the following +// components and hooks: +// - `NewChat` component +// - `NewChatByTitle` component +// - `useAssistantOverlay` hook + +/** + * `NewChat` displays a _New chat_ icon button, providing all the context + * necessary to start a new chat. You may optionally style the button icon, + * or override the default _New chat_ text with custom content, like `🪄✨` + * + * USE THIS WHEN: All the data necessary to start a new chat is available + * in the same part of the React tree as the _New chat_ button. + */ +export { NewChat } from './impl/new_chat'; + +/** + * `NewChatByTitle` displays a _New chat_ icon button by providing only the `promptContextId` + * of a context that was (already) registered by the `useAssistantOverlay` hook. You may + * optionally style the button icon, or override the default _New chat_ text with custom + * content, like {'🪄✨'} + * + * USE THIS WHEN: all the data necessary to start a new chat is NOT available + * in the same part of the React tree as the _New chat_ button. When paired + * with the `useAssistantOverlay` hook, this option enables context to be be + * registered where the data is available, and then the _New chat_ button can be displayed + * in another part of the tree. + */ +export { NewChatByTitle } from './impl/new_chat_by_title'; + +/** + * `useAssistantOverlay` is a hook that registers context with the assistant overlay, and + * returns an optional `showAssistantOverlay` function to display the assistant overlay. + * As an alterative to using the `showAssistantOverlay` returned from this hook, you may + * use the `NewChatByTitle` component and pass it the `promptContextId` returned by this hook. + * + * USE THIS WHEN: You want to register context in one part of the tree, and then show + * a _New chat_ button in another part of the tree without passing around the data, or when + * you want to build a custom `New chat` button with features not not provided by the + * `NewChat` component. + */ +export { useAssistantOverlay } from './impl/assistant/use_assistant_overlay'; + +/** a helper that enriches content returned from a query with action buttons */ +export { analyzeMarkdown } from './impl/assistant/use_conversation/helpers'; + +/** Default Elastic AI Assistant logo, can be removed once included in EUI **/ +export { AssistantAvatar } from './impl/assistant/assistant_avatar/assistant_avatar'; + +export { ConnectorSelectorInline } from './impl/connectorland/connector_selector_inline/connector_selector_inline'; + +export { + /** The Attack discovery local storage key */ + ATTACK_DISCOVERY_STORAGE_KEY, + DEFAULT_ASSISTANT_NAMESPACE, + /** The default maximum number of alerts to be sent as context when generating Attack discoveries */ + DEFAULT_ATTACK_DISCOVERY_MAX_ALERTS, + DEFAULT_LATEST_ALERTS, + DEFEND_INSIGHTS_STORAGE_KEY, + KNOWLEDGE_BASE_LOCAL_STORAGE_KEY, + /** The local storage key that specifies the maximum number of alerts to send as context */ + MAX_ALERTS_LOCAL_STORAGE_KEY, + /** The local storage key that specifies whether the settings tour should be shown */ + SHOW_SETTINGS_TOUR_LOCAL_STORAGE_KEY, +} from './impl/assistant_context/constants'; + +export { useLoadConnectors } from './impl/connectorland/use_load_connectors'; + +export { + ELASTIC_AI_ASSISTANT_TITLE, + WELCOME_CONVERSATION_TITLE, +} from './impl/assistant/use_conversation/translations'; + +export type { + /** for rendering results in a code block */ + CodeBlockDetails, + /** the type of query that will be executed for a code block */ + QueryType, +} from './impl/assistant/use_conversation/helpers'; + +export type { + /** Feature Availability Interface */ + AssistantAvailability, + /** Telemetry Interface */ + AssistantTelemetry, + /** Conversation Interface */ + Conversation, + /** Message interface on the client */ + ClientMessage, + /** Function type to return messages UI */ + GetAssistantMessages, +} from './impl/assistant_context/types'; + +/** + * This interface is used to pass context to the assistant, + * for the purpose of building prompts. Examples of context include: + * - a single alert + * - multiple alerts + * - a single event + * - multiple events + * - markdown + * - csv + * - anything else that the LLM can interpret + */ +export type { PromptContext } from './impl/assistant/prompt_context/types'; + +/** + * This interface is used to pass a default or base set of contexts to the Elastic Assistant when + * initializing it. This is used to provide 'category' options when users create Quick Prompts. + * Also, useful for collating all of a solutions' prompts in one place. + * + * e.g. see Security Solution's x-pack/solutions/security/plugins/security_solution/public/assistant/prompt_contexts/index.tsx + */ +export type { PromptContextTemplate } from './impl/assistant/prompt_context/types'; + +export { useFetchCurrentUserConversations } from './impl/assistant/api/conversations/use_fetch_current_user_conversations'; +export * from './impl/assistant/api/conversations/bulk_update_actions_conversations'; +export { getConversationById } from './impl/assistant/api/conversations/conversations'; + +export { mergeBaseWithPersistedConversations } from './impl/assistant/helpers'; + +export { UpgradeButtons } from './impl/upgrade/upgrade_buttons'; +export { getUserConversations, getPrompts, bulkUpdatePrompts } from './impl/assistant/api'; + +export { + /** A range slider component, typically used to configure the number of alerts sent as context */ + AlertsRange, + /** This event occurs when the `AlertsRange` slider is changed */ + type SingleRangeChangeEvent, +} from './impl/knowledge_base/alerts_range'; +export { + /** A label instructing the user to send fewer alerts */ + SELECT_FEWER_ALERTS, + /** Your anonymization settings will apply to these alerts (label) */ + YOUR_ANONYMIZATION_SETTINGS, +} from './impl/knowledge_base/translations'; diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/jest.config.js b/x-pack/platform/packages/shared/kbn-elastic-assistant/jest.config.js new file mode 100644 index 0000000000000..a073b71c8f750 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/jest.config.js @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_elastic_assistant_impl', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/**/*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/*mock*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/*.test.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/*.d.ts', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/*.config.ts', + ], + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant'], +}; diff --git a/x-pack/packages/kbn-elastic-assistant/kibana.jsonc b/x-pack/platform/packages/shared/kbn-elastic-assistant/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-elastic-assistant/kibana.jsonc diff --git a/x-pack/packages/kbn-elastic-assistant/package.json b/x-pack/platform/packages/shared/kbn-elastic-assistant/package.json similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/package.json rename to x-pack/platform/packages/shared/kbn-elastic-assistant/package.json diff --git a/x-pack/packages/kbn-elastic-assistant/setup_tests.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/setup_tests.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/setup_tests.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/setup_tests.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/tsconfig.json b/x-pack/platform/packages/shared/kbn-elastic-assistant/tsconfig.json new file mode 100644 index 0000000000000..e060e8f3bed27 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/tsconfig.json @@ -0,0 +1,38 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@kbn/ambient-ui-types" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + "../../../../../typings/emotion.d.ts" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/elastic-assistant-common", + "@kbn/core-http-browser", + "@kbn/i18n", + "@kbn/stack-connectors-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/core-http-browser-mocks", + "@kbn/cases-plugin", + "@kbn/actions-plugin", + "@kbn/core-notifications-browser", + "@kbn/i18n-react", + "@kbn/ui-theme", + "@kbn/core-doc-links-browser", + "@kbn/core", + "@kbn/zod", + "@kbn/data-views-plugin", + "@kbn/user-profile-components", + ] +} diff --git a/x-pack/packages/kbn-langchain/README.md b/x-pack/platform/packages/shared/kbn-langchain/README.md similarity index 100% rename from x-pack/packages/kbn-langchain/README.md rename to x-pack/platform/packages/shared/kbn-langchain/README.md diff --git a/x-pack/platform/packages/shared/kbn-langchain/jest.config.js b/x-pack/platform/packages/shared/kbn-langchain/jest.config.js new file mode 100644 index 0000000000000..6ba981c7b745d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-langchain/jest.config.js @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_langchain', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/**/*.{ts}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/*mock*.{ts}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/*.test.{ts}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/*.d.ts', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/*.config.ts', + ], + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-langchain'], +}; diff --git a/x-pack/packages/kbn-langchain/kibana.jsonc b/x-pack/platform/packages/shared/kbn-langchain/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-langchain/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-langchain/kibana.jsonc diff --git a/x-pack/packages/kbn-langchain/package.json b/x-pack/platform/packages/shared/kbn-langchain/package.json similarity index 100% rename from x-pack/packages/kbn-langchain/package.json rename to x-pack/platform/packages/shared/kbn-langchain/package.json diff --git a/x-pack/packages/kbn-langchain/server/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/bedrock_chat.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/bedrock_chat.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/bedrock_chat.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/bedrock_chat.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/bedrock_runtime_client.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/bedrock_runtime_client.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/bedrock_runtime_client.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/bedrock_runtime_client.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/chat_bedrock_converse.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/chat_bedrock_converse.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/chat_bedrock_converse.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/chat_bedrock_converse.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_openai.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_openai.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_openai.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_openai.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_openai.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_openai.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_openai.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_openai.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_vertex/chat_vertex.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/chat_vertex.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_vertex/chat_vertex.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/chat_vertex.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_vertex/chat_vertex.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/chat_vertex.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_vertex/chat_vertex.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/chat_vertex.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_vertex/connection.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/connection.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_vertex/connection.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/connection.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_vertex/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_vertex/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/constants.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/constants.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/constants.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/constants.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/gemini_chat.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/gemini_chat.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/gemini_chat.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/gemini_chat.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/helpers.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/helpers.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/helpers.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/helpers.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/helpers.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/helpers.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/llm.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/llm.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/llm.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/llm.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/llm.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/llm.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/llm.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/llm.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/mocks/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/mocks/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/mocks/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/mocks/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/simple_chat_model.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/simple_chat_model.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/simple_chat_model.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/simple_chat_model.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/simple_chat_model.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/simple_chat_model.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/simple_chat_model.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/simple_chat_model.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/types.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/types.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/types.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/types.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/README.mdx b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/README.mdx similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/README.mdx rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/README.mdx diff --git a/x-pack/packages/kbn-langchain/server/tracers/apm/apm_tracer.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/apm/apm_tracer.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/apm/apm_tracer.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/apm/apm_tracer.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/apm/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/apm/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/apm/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/apm/index.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/langsmith/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/langsmith/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/langsmith/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/langsmith/index.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/langsmith/langsmith_tracer.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/langsmith/langsmith_tracer.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/langsmith/langsmith_tracer.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/langsmith/langsmith_tracer.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/telemetry/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/telemetry/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/index.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/bedrock.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/bedrock.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/bedrock.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/bedrock.test.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/bedrock.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/bedrock.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/bedrock.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/bedrock.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/gemini.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/gemini.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/gemini.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/gemini.test.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/gemini.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/gemini.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/gemini.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/gemini.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/types.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/types.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/types.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/types.ts diff --git a/x-pack/platform/packages/shared/kbn-langchain/tsconfig.json b/x-pack/platform/packages/shared/kbn-langchain/tsconfig.json new file mode 100644 index 0000000000000..a3ee2491f36d8 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-langchain/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/logging", + "@kbn/actions-plugin", + "@kbn/logging-mocks", + "@kbn/utility-types", + "@kbn/tooling-log" + ] +} diff --git a/x-pack/packages/kbn-slo-schema/README.md b/x-pack/platform/packages/shared/kbn-slo-schema/README.md similarity index 100% rename from x-pack/packages/kbn-slo-schema/README.md rename to x-pack/platform/packages/shared/kbn-slo-schema/README.md diff --git a/x-pack/packages/kbn-slo-schema/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/index.ts diff --git a/x-pack/platform/packages/shared/kbn-slo-schema/jest.config.js b/x-pack/platform/packages/shared/kbn-slo-schema/jest.config.js new file mode 100644 index 0000000000000..caa876c76fafe --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-slo-schema/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-slo-schema'], +}; diff --git a/x-pack/packages/kbn-slo-schema/kibana.jsonc b/x-pack/platform/packages/shared/kbn-slo-schema/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-slo-schema/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-slo-schema/kibana.jsonc diff --git a/x-pack/packages/kbn-slo-schema/package.json b/x-pack/platform/packages/shared/kbn-slo-schema/package.json similarity index 100% rename from x-pack/packages/kbn-slo-schema/package.json rename to x-pack/platform/packages/shared/kbn-slo-schema/package.json diff --git a/x-pack/packages/kbn-slo-schema/src/models/duration.test.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.test.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/models/duration.test.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.test.ts diff --git a/x-pack/packages/kbn-slo-schema/src/models/duration.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/models/duration.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts diff --git a/x-pack/packages/kbn-slo-schema/src/models/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/models/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/models/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/models/index.ts diff --git a/x-pack/packages/kbn-slo-schema/src/models/pagination.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/models/pagination.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/index.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_overview.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_overview.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_overview.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_overview.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/index.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/manage.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/manage.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/manage.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/manage.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/common.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/common.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/duration.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/duration.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/duration.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/duration.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/health.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/health.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/health.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/health.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/index.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/indicators.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/schema.test.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/schema.test.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/schema.test.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/schema.test.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/settings.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/settings.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/settings.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/settings.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/slo.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/slo.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/time_window.test.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.test.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/time_window.test.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.test.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/time_window.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/time_window.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts diff --git a/x-pack/platform/packages/shared/kbn-slo-schema/tsconfig.json b/x-pack/platform/packages/shared/kbn-slo-schema/tsconfig.json new file mode 100644 index 0000000000000..47c1c65ecc3aa --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-slo-schema/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts" + ], + "kbn_references": [ + "@kbn/std", + "@kbn/io-ts-utils", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/categorization_analyzer.ts b/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/categorization_analyzer.ts new file mode 100644 index 0000000000000..3bdf8dea9ee60 --- /dev/null +++ b/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/categorization_analyzer.ts @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { AggregationsCustomCategorizeTextAnalyzer } from '@elastic/elasticsearch/lib/api/types'; + +// This is a copy of the default categorization analyzer but using the 'standard' tokenizer rather than the 'ml_standard' tokenizer. +// The 'ml_standard' tokenizer splits tokens in a way that was observed to give better categories in testing many years ago, however, +// the downside of these better categories is then a potential failure to match the original documents when creating a filter for Discover. +// A future enhancement would be to check which analyzer is specified in the mappings for the source field and to use +// that instead of unconditionally using 'standard'. +// However for an initial fix, using the standard analyzer will be more likely to match the results from the majority of searches. +export const categorizationAnalyzer: AggregationsCustomCategorizeTextAnalyzer = { + char_filter: ['first_line_with_letters'], + tokenizer: 'standard', + filter: [ + // @ts-expect-error filter type in AggregationsCustomCategorizeTextAnalyzer is incorrect + { + type: 'stop', + stopwords: [ + 'Monday', + 'Tuesday', + 'Wednesday', + 'Thursday', + 'Friday', + 'Saturday', + 'Sunday', + 'Mon', + 'Tue', + 'Wed', + 'Thu', + 'Fri', + 'Sat', + 'Sun', + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + 'GMT', + 'UTC', + ], + }, + // @ts-expect-error filter type in AggregationsCustomCategorizeTextAnalyzer is incorrect + { + type: 'limit', + max_token_count: '100', + }, + ], +}; diff --git a/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/create_category_request.ts b/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/create_category_request.ts index c1d6f82c9e582..4e8e2268fed5a 100644 --- a/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/create_category_request.ts +++ b/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/create_category_request.ts @@ -5,16 +5,14 @@ * 2.0. */ -import type { - QueryDslQueryContainer, - AggregationsCustomCategorizeTextAnalyzer, -} from '@elastic/elasticsearch/lib/api/types'; +import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { isPopulatedObject } from '@kbn/ml-is-populated-object/src/is_populated_object'; import type { createRandomSamplerWrapper } from '@kbn/ml-random-sampler-utils'; import { createDefaultQuery } from '@kbn/aiops-common/create_default_query'; +import { categorizationAnalyzer } from './categorization_analyzer'; const CATEGORY_LIMIT = 1000; const EXAMPLE_LIMIT = 4; @@ -121,67 +119,3 @@ export function createCategoryRequest( }, }; } - -// This is a copy of the default categorization analyzer but using the 'standard' tokenizer rather than the 'ml_standard' tokenizer. -// The 'ml_standard' tokenizer splits tokens in a way that was observed to give better categories in testing many years ago, however, -// the downside of these better categories is then a potential failure to match the original documents when creating a filter for Discover. -// A future enhancement would be to check which analyzer is specified in the mappings for the source field and to use -// that instead of unconditionally using 'standard'. -// However for an initial fix, using the standard analyzer will be more likely to match the results from the majority of searches. -const categorizationAnalyzer: AggregationsCustomCategorizeTextAnalyzer = { - char_filter: ['first_line_with_letters'], - tokenizer: 'standard', - filter: [ - // @ts-expect-error filter type in AggregationsCustomCategorizeTextAnalyzer is incorrect - { - type: 'stop', - stopwords: [ - 'Monday', - 'Tuesday', - 'Wednesday', - 'Thursday', - 'Friday', - 'Saturday', - 'Sunday', - 'Mon', - 'Tue', - 'Wed', - 'Thu', - 'Fri', - 'Sat', - 'Sun', - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December', - 'Jan', - 'Feb', - 'Mar', - 'Apr', - 'May', - 'Jun', - 'Jul', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec', - 'GMT', - 'UTC', - ], - }, - // @ts-expect-error filter type in AggregationsCustomCategorizeTextAnalyzer is incorrect - { - type: 'limit', - max_token_count: '100', - }, - ], -}; diff --git a/x-pack/packages/observability/alerting_rule_utils/README.md b/x-pack/platform/packages/shared/observability/alerting_rule_utils/README.md similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/README.md rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/README.md diff --git a/x-pack/packages/observability/alerting_rule_utils/index.ts b/x-pack/platform/packages/shared/observability/alerting_rule_utils/index.ts similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/index.ts rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/index.ts diff --git a/x-pack/platform/packages/shared/observability/alerting_rule_utils/jest.config.js b/x-pack/platform/packages/shared/observability/alerting_rule_utils/jest.config.js new file mode 100644 index 0000000000000..159f3ea52391a --- /dev/null +++ b/x-pack/platform/packages/shared/observability/alerting_rule_utils/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/observability/alerting_rule_utils'], +}; diff --git a/x-pack/packages/observability/alerting_rule_utils/kibana.jsonc b/x-pack/platform/packages/shared/observability/alerting_rule_utils/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/kibana.jsonc rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/kibana.jsonc diff --git a/x-pack/packages/observability/alerting_rule_utils/package.json b/x-pack/platform/packages/shared/observability/alerting_rule_utils/package.json similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/package.json rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/package.json diff --git a/x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.test.ts b/x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.test.ts similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.test.ts rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.test.ts diff --git a/x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts b/x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts diff --git a/x-pack/platform/packages/shared/observability/alerting_rule_utils/tsconfig.json b/x-pack/platform/packages/shared/observability/alerting_rule_utils/tsconfig.json new file mode 100644 index 0000000000000..04f886a74e0c3 --- /dev/null +++ b/x-pack/platform/packages/shared/observability/alerting_rule_utils/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/alerts-as-data-utils" + ] +} diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/README.md b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/README.md similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/README.md rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/README.md diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/common/index.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/common/index.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/common/index.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/common/index.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/i18nrc.json b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/i18nrc.json similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/i18nrc.json rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/i18nrc.json diff --git a/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/jest.config.js b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/jest.config.js new file mode 100644 index 0000000000000..d7156515657a3 --- /dev/null +++ b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../', + roots: ['<rootDir>/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/{common,public}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/kibana.jsonc b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/kibana.jsonc similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/kibana.jsonc rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/kibana.jsonc diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/app.styles.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/app.styles.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/app.styles.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/app.styles.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/components/app.tsx b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/components/app.tsx similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/components/app.tsx rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/components/app.tsx diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/index.tsx similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/index.tsx diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/services/breadcrumb.mock.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/services/breadcrumb.mock.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/services/breadcrumb.mock.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/services/breadcrumb.mock.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/services/breadcrumbs.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/services/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/services/breadcrumbs.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/services/breadcrumbs.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/index.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/index.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/index.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/index.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/plugin.test.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/plugin.test.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/plugin.test.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/plugin.test.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/plugin.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/plugin.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/plugin.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/plugin.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/server/config.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/config.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/server/config.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/config.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/server/index.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/index.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/server/index.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/index.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/server/plugin.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/plugin.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/server/plugin.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/plugin.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/server/types.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/types.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/server/types.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/types.ts diff --git a/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/tsconfig.json b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/tsconfig.json new file mode 100644 index 0000000000000..baf9d6471c405 --- /dev/null +++ b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/cloud-plugin", + "@kbn/management-plugin", + "@kbn/features-plugin", + // required bundles + "@kbn/kibana-react-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/core-plugins-server", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/cross_cluster_replication/README.md b/x-pack/platform/plugins/private/cross_cluster_replication/README.md similarity index 100% rename from x-pack/plugins/cross_cluster_replication/README.md rename to x-pack/platform/plugins/private/cross_cluster_replication/README.md diff --git a/x-pack/plugins/cross_cluster_replication/common/constants/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/constants/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/constants/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/constants/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/__snapshots__/follower_index_serialization.test.ts.snap b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/__snapshots__/follower_index_serialization.test.ts.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/__snapshots__/follower_index_serialization.test.ts.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/__snapshots__/follower_index_serialization.test.ts.snap diff --git a/x-pack/plugins/cross_cluster_replication/common/services/auto_follow_pattern_serialization.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/auto_follow_pattern_serialization.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/auto_follow_pattern_serialization.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/auto_follow_pattern_serialization.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/auto_follow_pattern_serialization.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/auto_follow_pattern_serialization.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/auto_follow_pattern_serialization.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/auto_follow_pattern_serialization.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/follower_index_serialization.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/follower_index_serialization.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/follower_index_serialization.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/follower_index_serialization.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/follower_index_serialization.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/follower_index_serialization.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/follower_index_serialization.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/follower_index_serialization.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/utils.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/utils.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/utils.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/utils.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/utils.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/utils.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/utils.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/utils.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/types.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/types.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/types.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/types.ts diff --git a/x-pack/platform/plugins/private/cross_cluster_replication/jest.config.js b/x-pack/platform/plugins/private/cross_cluster_replication/jest.config.js new file mode 100644 index 0000000000000..24cfdf31fc8d2 --- /dev/null +++ b/x-pack/platform/plugins/private/cross_cluster_replication/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/cross_cluster_replication'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/cross_cluster_replication', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/cross_cluster_replication/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/cross_cluster_replication/kibana.jsonc b/x-pack/platform/plugins/private/cross_cluster_replication/kibana.jsonc similarity index 100% rename from x-pack/plugins/cross_cluster_replication/kibana.jsonc rename to x-pack/platform/plugins/private/cross_cluster_replication/kibana.jsonc diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_add.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_add.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_add.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_add.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_edit.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_edit.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_edit.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_edit.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_list.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_list.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_list.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_list.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/fixtures/auto_follow_pattern.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/fixtures/auto_follow_pattern.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/fixtures/auto_follow_pattern.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/fixtures/auto_follow_pattern.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/fixtures/follower_index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/fixtures/follower_index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/fixtures/follower_index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/fixtures/follower_index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_index_add.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_index_add.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_index_add.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_index_add.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_index_edit.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_index_edit.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_index_edit.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_index_edit.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_indices_list.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_indices_list.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_indices_list.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_indices_list.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_add.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_add.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_add.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_add.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_edit.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_edit.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_edit.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_edit.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_list.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_list.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_list.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_list.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/constants.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/constants.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/constants.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/constants.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_add.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_add.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_add.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_add.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_edit.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_edit.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_edit.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_edit.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_list.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_list.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_list.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_list.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/home.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/home.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/home.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/home.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/http_requests.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/http_requests.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/http_requests.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/http_requests.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/setup_environment.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/setup_environment.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/setup_environment.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/setup_environment.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/home.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/home.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/home.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/home.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/breadcrumbs.mock.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/breadcrumbs.mock.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/breadcrumbs.mock.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/breadcrumbs.mock.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/search_box.mock.tsx b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/search_box.mock.tsx similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/search_box.mock.tsx rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/search_box.mock.tsx diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/track_ui_metric.mock.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/track_ui_metric.mock.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/track_ui_metric.mock.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/track_ui_metric.mock.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/app.tsx b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/app.tsx similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/app.tsx rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/app.tsx diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/__snapshots__/auto_follow_pattern_form.test.js.snap b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/__snapshots__/auto_follow_pattern_form.test.js.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/__snapshots__/auto_follow_pattern_form.test.js.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/__snapshots__/auto_follow_pattern_form.test.js.snap diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.container.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.container.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.container.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.container.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.tsx b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.tsx similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.tsx rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.tsx diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_form.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_form.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_form.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_form.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_form.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_form.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_form.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_form.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_page_title.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_page_title.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_page_title.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_page_title.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_request_flyout.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_request_flyout.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_request_flyout.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_request_flyout.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/__snapshots__/follower_index_form.test.js.snap b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/__snapshots__/follower_index_form.test.js.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/__snapshots__/follower_index_form.test.js.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/__snapshots__/follower_index_form.test.js.snap diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/advanced_settings_fields.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/advanced_settings_fields.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/advanced_settings_fields.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/advanced_settings_fields.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_request_flyout.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_request_flyout.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_request_flyout.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_request_flyout.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_page_title.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_page_title.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_page_title.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_page_title.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/form_entry_row.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/form_entry_row.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/form_entry_row.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/form_entry_row.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/index.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/index.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/index.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/index.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/remote_clusters_form_field.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/remote_clusters_form_field.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/remote_clusters_form_field.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/remote_clusters_form_field.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/remote_clusters_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/remote_clusters_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/remote_clusters_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/remote_clusters_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/section_error.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_error.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/section_error.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_error.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/section_loading.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_loading.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/section_loading.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_loading.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/section_unauthorized.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_unauthorized.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/section_unauthorized.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_unauthorized.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/constants/api.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/api.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/constants/api.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/api.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/constants/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/constants/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/constants/sections.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/sections.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/constants/sections.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/sections.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/constants/ui_metric.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/ui_metric.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/constants/ui_metric.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/ui_metric.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/index.tsx b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/index.tsx similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/index.tsx rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/index.tsx diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/home.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/home.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/home.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/home.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/index.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/index.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/index.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/index.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/__snapshots__/auto_follow_pattern_validators.test.js.snap b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/__snapshots__/auto_follow_pattern_validators.test.js.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/__snapshots__/auto_follow_pattern_validators.test.js.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/__snapshots__/auto_follow_pattern_validators.test.js.snap diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/api.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/api.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/api.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/api.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_errors.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_errors.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_errors.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_errors.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_errors.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_errors.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_errors.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_errors.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/breadcrumbs.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/breadcrumbs.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/breadcrumbs.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/documentation_links.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/documentation_links.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/documentation_links.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/documentation_links.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/follower_index_default_settings.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/follower_index_default_settings.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/follower_index_default_settings.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/follower_index_default_settings.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/get_remote_cluster_name.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/get_remote_cluster_name.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/get_remote_cluster_name.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/get_remote_cluster_name.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/input_validation.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/input_validation.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/input_validation.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/input_validation.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/notifications.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/notifications.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/notifications.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/notifications.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/routing.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/routing.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/routing.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/routing.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/routing.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/routing.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/routing.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/routing.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/track_ui_metric.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/track_ui_metric.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/track_ui_metric.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/track_ui_metric.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/utils.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/utils.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/utils.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/utils.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/utils.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/utils.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/utils.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/utils.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/action_types.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/action_types.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/action_types.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/action_types.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/api.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/api.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/api.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/api.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/auto_follow_pattern.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/auto_follow_pattern.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/auto_follow_pattern.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/auto_follow_pattern.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/ccr.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/ccr.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/ccr.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/ccr.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/follower_index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/follower_index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/follower_index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/follower_index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/index.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/index.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/index.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/index.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/api.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/api.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/api.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/api.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/api.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/api.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/api.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/api.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/auto_follow_pattern.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/auto_follow_pattern.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/auto_follow_pattern.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/auto_follow_pattern.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/follower_index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/follower_index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/follower_index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/follower_index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/stats.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/stats.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/stats.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/stats.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/selectors/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/selectors/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/selectors/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/selectors/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/store.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/store.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/store.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/store.js diff --git a/x-pack/plugins/cross_cluster_replication/public/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/plugin.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/plugin.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/shared_imports.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/shared_imports.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/shared_imports.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/types.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/types.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/types.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/types.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/config.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/config.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/config.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/config.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/lib/__snapshots__/ccr_stats_serialization.test.ts.snap b/x-pack/platform/plugins/private/cross_cluster_replication/server/lib/__snapshots__/ccr_stats_serialization.test.ts.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/lib/__snapshots__/ccr_stats_serialization.test.ts.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/server/lib/__snapshots__/ccr_stats_serialization.test.ts.snap diff --git a/x-pack/plugins/cross_cluster_replication/server/lib/ccr_stats_serialization.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/lib/ccr_stats_serialization.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/lib/ccr_stats_serialization.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/lib/ccr_stats_serialization.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/lib/ccr_stats_serialization.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/lib/ccr_stats_serialization.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/lib/ccr_stats_serialization.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/lib/ccr_stats_serialization.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/plugin.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/plugin.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/plugin.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/plugin.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/test_lib.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/test_lib.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/test_lib.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/test_lib.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/services/add_base_path.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/services/add_base_path.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/services/add_base_path.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/services/add_base_path.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/services/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/services/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/services/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/services/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/shared_imports.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/shared_imports.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/shared_imports.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/types.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/types.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/types.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/types.ts diff --git a/x-pack/platform/plugins/private/cross_cluster_replication/tsconfig.json b/x-pack/platform/plugins/private/cross_cluster_replication/tsconfig.json new file mode 100644 index 0000000000000..d6804765c1ef9 --- /dev/null +++ b/x-pack/platform/plugins/private/cross_cluster_replication/tsconfig.json @@ -0,0 +1,37 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/licensing-plugin", + "@kbn/management-plugin", + "@kbn/remote-clusters-plugin", + "@kbn/index-management-plugin", + "@kbn/features-plugin", + // optional plugins + "@kbn/usage-collection-plugin", + // required bundles + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/data-plugin", + "@kbn/license-api-guard-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/analytics", + "@kbn/test-jest-helpers", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/data_usage/README.md b/x-pack/platform/plugins/private/data_usage/README.md similarity index 100% rename from x-pack/plugins/data_usage/README.md rename to x-pack/platform/plugins/private/data_usage/README.md diff --git a/x-pack/plugins/data_usage/common/constants.ts b/x-pack/platform/plugins/private/data_usage/common/constants.ts similarity index 100% rename from x-pack/plugins/data_usage/common/constants.ts rename to x-pack/platform/plugins/private/data_usage/common/constants.ts diff --git a/x-pack/plugins/data_usage/common/experimental_features.ts b/x-pack/platform/plugins/private/data_usage/common/experimental_features.ts similarity index 100% rename from x-pack/plugins/data_usage/common/experimental_features.ts rename to x-pack/platform/plugins/private/data_usage/common/experimental_features.ts diff --git a/x-pack/plugins/data_usage/common/index.ts b/x-pack/platform/plugins/private/data_usage/common/index.ts similarity index 100% rename from x-pack/plugins/data_usage/common/index.ts rename to x-pack/platform/plugins/private/data_usage/common/index.ts diff --git a/x-pack/plugins/data_usage/common/query_client.tsx b/x-pack/platform/plugins/private/data_usage/common/query_client.tsx similarity index 100% rename from x-pack/plugins/data_usage/common/query_client.tsx rename to x-pack/platform/plugins/private/data_usage/common/query_client.tsx diff --git a/x-pack/plugins/data_usage/common/rest_types/data_streams.ts b/x-pack/platform/plugins/private/data_usage/common/rest_types/data_streams.ts similarity index 100% rename from x-pack/plugins/data_usage/common/rest_types/data_streams.ts rename to x-pack/platform/plugins/private/data_usage/common/rest_types/data_streams.ts diff --git a/x-pack/plugins/data_usage/common/rest_types/index.ts b/x-pack/platform/plugins/private/data_usage/common/rest_types/index.ts similarity index 100% rename from x-pack/plugins/data_usage/common/rest_types/index.ts rename to x-pack/platform/plugins/private/data_usage/common/rest_types/index.ts diff --git a/x-pack/plugins/data_usage/common/rest_types/usage_metrics.test.ts b/x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.test.ts similarity index 100% rename from x-pack/plugins/data_usage/common/rest_types/usage_metrics.test.ts rename to x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.test.ts diff --git a/x-pack/plugins/data_usage/common/rest_types/usage_metrics.ts b/x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.ts similarity index 100% rename from x-pack/plugins/data_usage/common/rest_types/usage_metrics.ts rename to x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.ts index 07130c84b6fdf..3a53a141caf9d 100644 --- a/x-pack/plugins/data_usage/common/rest_types/usage_metrics.ts +++ b/x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.ts @@ -28,8 +28,8 @@ export const isDefaultMetricType = (metricType: string) => DEFAULT_METRIC_TYPES.includes(metricType); export const METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP = Object.freeze<Record<MetricTypes, string>>({ - storage_retained: 'Data Retained in Storage', ingest_rate: 'Data Ingested', + storage_retained: 'Data Retained in Storage', search_vcu: 'Search VCU', ingest_vcu: 'Ingest VCU', ml_vcu: 'ML VCU', @@ -40,8 +40,8 @@ export const METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP = Object.freeze<Record<Met }); export const METRIC_TYPE_UI_OPTIONS_VALUES_TO_API_MAP = Object.freeze<Record<string, MetricTypes>>({ - 'Data Retained in Storage': 'storage_retained', 'Data Ingested': 'ingest_rate', + 'Data Retained in Storage': 'storage_retained', 'Search VCU': 'search_vcu', 'Ingest VCU': 'ingest_vcu', 'ML VCU': 'ml_vcu', diff --git a/x-pack/plugins/data_usage/common/test_utils/index.ts b/x-pack/platform/plugins/private/data_usage/common/test_utils/index.ts similarity index 100% rename from x-pack/plugins/data_usage/common/test_utils/index.ts rename to x-pack/platform/plugins/private/data_usage/common/test_utils/index.ts diff --git a/x-pack/plugins/data_usage/common/test_utils/test_provider.tsx b/x-pack/platform/plugins/private/data_usage/common/test_utils/test_provider.tsx similarity index 100% rename from x-pack/plugins/data_usage/common/test_utils/test_provider.tsx rename to x-pack/platform/plugins/private/data_usage/common/test_utils/test_provider.tsx diff --git a/x-pack/plugins/data_usage/common/test_utils/test_query_client_options.ts b/x-pack/platform/plugins/private/data_usage/common/test_utils/test_query_client_options.ts similarity index 100% rename from x-pack/plugins/data_usage/common/test_utils/test_query_client_options.ts rename to x-pack/platform/plugins/private/data_usage/common/test_utils/test_query_client_options.ts diff --git a/x-pack/platform/plugins/private/data_usage/common/utils.test.ts b/x-pack/platform/plugins/private/data_usage/common/utils.test.ts new file mode 100644 index 0000000000000..c7ff57069e44e --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/common/utils.test.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isDateRangeValid } from './utils'; + +describe('isDateRangeValid', () => { + describe('Valid ranges', () => { + it.each([ + ['start date is `now-10s` and end date is `now`', { start: 'now-10s', end: 'now' }], + ['bounded within the min and max date range', { start: 'now-8d', end: 'now-4s' }], + ])('should return true if %s', (_, { start, end }) => { + expect(isDateRangeValid({ start, end })).toBe(true); + }); + }); + + describe('Invalid ranges', () => { + it.each([ + ['both start and end date is `now`', { start: 'now', end: 'now' }], + ['starts before the min date', { start: 'now-11d', end: 'now-5s' }], + ['ends after the max date in seconds', { start: 'now-9d', end: 'now+2s' }], + ['ends after the max date in days', { start: 'now-6d', end: 'now+6d' }], + [ + 'end date is before the start date even when both are within min and max date range', + { start: 'now-3s', end: 'now-10s' }, + ], + ])('should return false if the date range %s', (_, { start, end }) => { + expect(isDateRangeValid({ start, end })).toBe(false); + }); + }); +}); diff --git a/x-pack/platform/plugins/private/data_usage/common/utils.ts b/x-pack/platform/plugins/private/data_usage/common/utils.ts new file mode 100644 index 0000000000000..2fe683dc8310d --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/common/utils.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import dateMath from '@kbn/datemath'; + +export const DEFAULT_DATE_RANGE_OPTIONS = Object.freeze({ + autoRefreshOptions: { + enabled: false, + duration: 10000, + }, + startDate: 'now-24h/h', + endDate: 'now', + maxDate: 'now+1s', + minDate: 'now-9d', + recentlyUsedDateRanges: [], +}); + +export type ParsedDate = ReturnType<typeof momentDateParser>; +export const momentDateParser = (date: string) => dateMath.parse(date); +export const transformToUTCtime = ({ + start, + end, + isISOString = false, +}: { + start: string; + end: string; + isISOString?: boolean; +}) => { + const utcOffset = momentDateParser(start)?.utcOffset() ?? 0; + const utcStart = momentDateParser(start)?.utc().add(utcOffset, 'm'); + const utcEnd = momentDateParser(end)?.utc().add(utcOffset, 'm'); + return { + start: isISOString ? utcStart?.toISOString() : momentDateParser(start), + end: isISOString ? utcEnd?.toISOString() : momentDateParser(end), + }; +}; + +export const isDateRangeValid = ({ start, end }: { start: string; end: string }): boolean => { + const startDate = momentDateParser(start); + const endDate = momentDateParser(end); + + if (!startDate || !endDate) { + return false; + } + const minDate = momentDateParser(DEFAULT_DATE_RANGE_OPTIONS.minDate); + const maxDate = momentDateParser(DEFAULT_DATE_RANGE_OPTIONS.maxDate); + return ( + startDate.isSameOrAfter(minDate, 's') && + endDate.isSameOrBefore(maxDate, 's') && + startDate.isBefore(endDate, 's') + ); +}; diff --git a/x-pack/platform/plugins/private/data_usage/jest.config.js b/x-pack/platform/plugins/private/data_usage/jest.config.js new file mode 100644 index 0000000000000..cc8bf9953aded --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/jest.config.js @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/data_usage'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/data_usage', + coverageReporters: ['text', 'html'], + collectCoverageFrom: ['<rootDir>/x-pack/plugins/datas_usage/{common,public}/**/*.{ts,tsx}'], +}; diff --git a/x-pack/plugins/data_usage/kibana.jsonc b/x-pack/platform/plugins/private/data_usage/kibana.jsonc similarity index 100% rename from x-pack/plugins/data_usage/kibana.jsonc rename to x-pack/platform/plugins/private/data_usage/kibana.jsonc diff --git a/x-pack/plugins/data_usage/public/app/components/assets/illustration_product_no_results_magnifying_glass.svg b/x-pack/platform/plugins/private/data_usage/public/app/components/assets/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/assets/illustration_product_no_results_magnifying_glass.svg rename to x-pack/platform/plugins/private/data_usage/public/app/components/assets/illustration_product_no_results_magnifying_glass.svg diff --git a/x-pack/plugins/data_usage/public/app/components/chart_panel.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/chart_panel.tsx similarity index 97% rename from x-pack/plugins/data_usage/public/app/components/chart_panel.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/chart_panel.tsx index 208b1e576c0d7..9a7700a5de828 100644 --- a/x-pack/plugins/data_usage/public/app/components/chart_panel.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/chart_panel.tsx @@ -91,7 +91,7 @@ export const ChartPanel: React.FC<ChartPanelProps> = ({ return ( <EuiFlexItem grow={false} key={metricType}> - <EuiPanel hasShadow={false} hasBorder={true}> + <EuiPanel hasShadow={false} hasBorder={true} data-test-subj={`${metricType}-chart`}> <EuiTitle size="xs"> <h5>{chartKeyToTitleMap[metricType as ChartKey] || metricType}</h5> </EuiTitle> diff --git a/x-pack/plugins/data_usage/public/app/components/charts.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/charts.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/charts.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/charts.tsx diff --git a/x-pack/plugins/data_usage/public/app/components/charts_loading.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/charts_loading.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/charts_loading.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/charts_loading.tsx diff --git a/x-pack/plugins/data_usage/public/app/components/data_usage_metrics.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.test.tsx similarity index 85% rename from x-pack/plugins/data_usage/public/app/components/data_usage_metrics.test.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.test.tsx index befae95393e1c..90257e08ead01 100644 --- a/x-pack/plugins/data_usage/public/app/components/data_usage_metrics.test.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.test.tsx @@ -12,6 +12,7 @@ import { DataUsageMetrics } from './data_usage_metrics'; import { useGetDataUsageMetrics } from '../../hooks/use_get_usage_metrics'; import { useGetDataUsageDataStreams } from '../../hooks/use_get_data_streams'; import { coreMock as mockCore } from '@kbn/core/public/mocks'; +import { mockUseKibana, generateDataStreams } from '../mocks'; jest.mock('../../utils/use_breadcrumbs', () => { return { @@ -60,60 +61,10 @@ jest.mock('@kbn/kibana-react-plugin/public', () => { const original = jest.requireActual('@kbn/kibana-react-plugin/public'); return { ...original, - useKibana: () => ({ - services: { - uiSettings: { - get: jest.fn().mockImplementation((key) => { - const get = (k: 'dateFormat' | 'timepicker:quickRanges') => { - const x = { - dateFormat: 'MMM D, YYYY @ HH:mm:ss.SSS', - 'timepicker:quickRanges': [ - { - from: 'now/d', - to: 'now/d', - display: 'Today', - }, - { - from: 'now/w', - to: 'now/w', - display: 'This week', - }, - { - from: 'now-15m', - to: 'now', - display: 'Last 15 minutes', - }, - { - from: 'now-30m', - to: 'now', - display: 'Last 30 minutes', - }, - { - from: 'now-1h', - to: 'now', - display: 'Last 1 hour', - }, - { - from: 'now-24h', - to: 'now', - display: 'Last 24 hours', - }, - { - from: 'now-7d', - to: 'now', - display: 'Last 7 days', - }, - ], - }; - return x[k]; - }; - return get(key); - }), - }, - }, - }), + useKibana: () => mockUseKibana, }; }); + const mockUseGetDataUsageMetrics = useGetDataUsageMetrics as jest.Mock; const mockUseGetDataUsageDataStreams = useGetDataUsageDataStreams as jest.Mock; const mockServices = mockCore.createStart(); @@ -131,13 +82,6 @@ const getBaseMockedDataUsageMetrics = () => ({ refetch: jest.fn(), }); -const generateDataStreams = (count: number) => { - return Array.from({ length: count }, (_, i) => ({ - name: `.ds-${i}`, - storageSizeBytes: 1024 ** 2 * (22 / 7), - })); -}; - describe('DataUsageMetrics', () => { let user: UserEvent; const testId = 'test'; @@ -228,14 +172,14 @@ describe('DataUsageMetrics', () => { expect(toggleFilterButton).toHaveTextContent('Data streams10'); await user.click(toggleFilterButton); const allFilterOptions = getAllByTestId('dataStreams-filter-option'); - // deselect 9 options - for (let i = 0; i < allFilterOptions.length; i++) { + // deselect 3 options + for (let i = 0; i < 3; i++) { await user.click(allFilterOptions[i]); } - expect(toggleFilterButton).toHaveTextContent('Data streams1'); + expect(toggleFilterButton).toHaveTextContent('Data streams7'); expect(within(toggleFilterButton).getByRole('marquee').getAttribute('aria-label')).toEqual( - '1 active filters' + '7 active filters' ); }); diff --git a/x-pack/plugins/data_usage/public/app/components/data_usage_metrics.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.tsx similarity index 91% rename from x-pack/plugins/data_usage/public/app/components/data_usage_metrics.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.tsx index efaa779dfe3c9..35ff42decef0e 100644 --- a/x-pack/plugins/data_usage/public/app/components/data_usage_metrics.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.tsx @@ -17,13 +17,9 @@ import { PLUGIN_NAME } from '../../translations'; import { useGetDataUsageMetrics } from '../../hooks/use_get_usage_metrics'; import { useGetDataUsageDataStreams } from '../../hooks/use_get_data_streams'; import { useDataUsageMetricsUrlParams } from '../hooks/use_charts_url_params'; -import { - DEFAULT_DATE_RANGE_OPTIONS, - transformToUTCtime, - isDateRangeValid, -} from '../../../common/utils'; +import { DEFAULT_DATE_RANGE_OPTIONS, transformToUTCtime } from '../../../common/utils'; import { useDateRangePicker } from '../hooks/use_date_picker'; -import { ChartFilters, ChartFiltersProps } from './filters/charts_filters'; +import { ChartsFilters, ChartsFiltersProps } from './filters/charts_filters'; import { ChartsLoading } from './charts_loading'; import { NoDataCallout } from './no_data_callout'; import { useTestIdGenerator } from '../../hooks/use_test_id_generator'; @@ -80,7 +76,7 @@ export const DataUsageMetrics = memo( if (!metricTypesFromUrl && isFirstPageLoad) { setUrlMetricTypesFilter(metricsFilters.metricTypes.join(',')); } - if (!dataStreamsFromUrl && dataStreams && isFirstPageLoad) { + if (!dataStreamsFromUrl && !!dataStreams && dataStreams.length > 0 && isFirstPageLoad) { const hasMoreThan50 = dataStreams.length > 50; const _dataStreams = hasMoreThan50 ? dataStreams.slice(0, 50) : dataStreams; setUrlDataStreamsFilter(_dataStreams.map((ds) => ds.name).join(',')); @@ -114,16 +110,8 @@ export const DataUsageMetrics = memo( })); }, [metricTypesFromUrl, dataStreamsFromUrl, startDateFromUrl, endDateFromUrl]); - const { dateRangePickerState, onRefreshChange, onTimeChange } = useDateRangePicker(); - - const isValidDateRange = useMemo( - () => - isDateRangeValid({ - start: dateRangePickerState.startDate, - end: dateRangePickerState.endDate, - }), - [dateRangePickerState.endDate, dateRangePickerState.startDate] - ); + const { dateRangePickerState, isValidDateRange, onRefreshChange, onTimeChange } = + useDateRangePicker(); const enableFetchUsageMetricsData = useMemo( () => @@ -187,8 +175,10 @@ export const DataUsageMetrics = memo( [setMetricsFilters] ); - const filterOptions: ChartFiltersProps['filterOptions'] = useMemo(() => { - const dataStreamsOptions = dataStreams?.reduce<Record<string, number>>((acc, ds) => { + const filterOptions: ChartsFiltersProps['filterOptions'] = useMemo(() => { + const dataStreamsOptions = dataStreams?.reduce< + Required<ChartsFiltersProps['filterOptions']['dataStreams']>['appendOptions'] + >((acc, ds) => { acc[ds.name] = ds.storageSizeBytes; return acc; }, {}); @@ -239,10 +229,11 @@ export const DataUsageMetrics = memo( return ( <EuiFlexGroup alignItems="flexStart" direction="column" data-test-subj={getTestId()}> <FlexItemWithCss> - <ChartFilters + <ChartsFilters dateRangePickerState={dateRangePickerState} isDataLoading={isFetchingDataStreams} isUpdateDisabled={!enableFetchUsageMetricsData} + isValidDateRange={isValidDateRange} onClick={refetchDataUsageMetrics} onRefresh={onRefresh} onRefreshChange={onRefreshChange} diff --git a/x-pack/plugins/data_usage/public/app/components/dataset_quality_link.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/dataset_quality_link.tsx similarity index 90% rename from x-pack/plugins/data_usage/public/app/components/dataset_quality_link.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/dataset_quality_link.tsx index 8e81e6091156b..3b481565ae27c 100644 --- a/x-pack/plugins/data_usage/public/app/components/dataset_quality_link.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/dataset_quality_link.tsx @@ -41,7 +41,11 @@ export const DatasetQualityLink: React.FC<DatasetQualityLinkProps> = React.memo( } }; return ( - <LegendActionItem label={UX_LABELS.dataQualityPopup.view} onClick={onClickDataQuality} /> + <LegendActionItem + label={UX_LABELS.dataQualityPopup.view} + onClick={onClickDataQuality} + dataTestSubj="DatasetQualityAction" + /> ); } ); diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.test.tsx new file mode 100644 index 0000000000000..4987654235d4e --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.test.tsx @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { TestProvider } from '../../../../common/test_utils'; +import { render, type RenderResult } from '@testing-library/react'; +import userEvent, { type UserEvent } from '@testing-library/user-event'; +import { ChartsFilter, type ChartsFilterProps } from './charts_filter'; +import { FilterName } from '../../hooks'; +import { mockUseKibana, generateDataStreams } from '../../mocks'; + +const mockUseLocation = jest.fn(() => ({ pathname: '/' })); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: () => mockUseLocation(), + useHistory: jest.fn().mockReturnValue({ + push: jest.fn(), + listen: jest.fn(), + location: { + search: '', + }, + }), +})); + +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useKibana: () => mockUseKibana, + }; +}); + +describe('Charts Filters', () => { + let user: UserEvent; + const testId = 'test'; + const testIdFilter = `${testId}-filter`; + + const defaultProps = { + filterOptions: { + filterName: 'dataStreams' as FilterName, + isFilterLoading: false, + appendOptions: {}, + selectedOptions: [], + options: generateDataStreams(8).map((ds) => ds.name), + onChangeFilterOptions: jest.fn(), + }, + }; + + let renderComponent: (props: ChartsFilterProps) => RenderResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + renderComponent = (props: ChartsFilterProps) => + render( + <TestProvider> + <ChartsFilter data-test-subj={testIdFilter} {...props} /> + </TestProvider> + ); + user = userEvent.setup({ advanceTimers: jest.advanceTimersByTime, pointerEventsCheck: 0 }); + }); + + it('renders data streams filter with all options selected', async () => { + const { getByTestId, getAllByTestId } = renderComponent(defaultProps); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + + const filterButton = getByTestId(`${testIdFilter}-dataStreams-popoverButton`); + expect(filterButton).toBeTruthy(); + await user.click(filterButton); + const allFilterOptions = getAllByTestId('dataStreams-filter-option'); + + // checked options + const checkedOptions = allFilterOptions.filter( + (option) => option.getAttribute('aria-checked') === 'true' + ); + expect(checkedOptions).toHaveLength(8); + }); + + it('renders data streams filter with 50 options selected when more than 50 items in the filter', async () => { + const { getByTestId } = renderComponent({ + ...defaultProps, + filterOptions: { + ...defaultProps.filterOptions, + options: generateDataStreams(55).map((ds) => ds.name), + }, + }); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + + const toggleFilterButton = getByTestId(`${testIdFilter}-dataStreams-popoverButton`); + expect(toggleFilterButton).toBeTruthy(); + expect(toggleFilterButton).toHaveTextContent('Data streams50'); + expect( + toggleFilterButton.querySelector('.euiNotificationBadge')?.getAttribute('aria-label') + ).toBe('50 active filters'); + }); + + it('renders data streams filter with no options selected and select all is disabled', async () => { + const { getByTestId, queryByTestId } = renderComponent({ + ...defaultProps, + filterOptions: { + ...defaultProps.filterOptions, + options: [], + }, + }); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + + const filterButton = getByTestId(`${testIdFilter}-dataStreams-popoverButton`); + expect(filterButton).toBeTruthy(); + await user.click(filterButton); + expect(queryByTestId('dataStreams-filter-option')).toBeFalsy(); + expect(getByTestId('dataStreams-group-label')).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-dataStreams-selectAllButton`)).toBeDisabled(); + }); +}); diff --git a/x-pack/plugins/data_usage/public/app/components/filters/charts_filter.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.tsx similarity index 90% rename from x-pack/plugins/data_usage/public/app/components/filters/charts_filter.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.tsx index 2e60561f3ed29..e041b262a7f44 100644 --- a/x-pack/plugins/data_usage/public/app/components/filters/charts_filter.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.tsx @@ -81,6 +81,11 @@ export const ChartsFilter = memo<ChartsFilterProps>( }, }); + const isSelectAllDisabled = useMemo( + () => options.length === 0 || (hasActiveFilters && numFilters === 0), + [hasActiveFilters, numFilters, options.length] + ); + const addHeightToPopover = useMemo( () => isDataStreamsFilter && numFilters + numActiveFilters > 15, [isDataStreamsFilter, numFilters, numActiveFilters] @@ -107,7 +112,12 @@ export const ChartsFilter = memo<ChartsFilterProps>( const sortedDataStreamsFilterOptions = useMemo(() => { if (shouldPinSelectedDataStreams() || areDataStreamsSelectedOnMount) { // pin checked items to the top - return orderBy('checked', 'asc', items); + const sorted = orderBy( + 'checked', + 'asc', + items.filter((item) => !item.isGroupLabel) + ); + return [...items.filter((item) => item.isGroupLabel), ...sorted]; } // return options as are for other filters return items; @@ -155,14 +165,25 @@ export const ChartsFilter = memo<ChartsFilterProps>( ); const onSelectAll = useCallback(() => { - const allItems: FilterItems = items.map((item) => { - return { - ...item, - checked: 'on', - }; - }); + const allItems: FilterItems = items.reduce<FilterItems>((acc, item) => { + if (!item.isGroupLabel) { + acc.push({ + ...item, + checked: 'on', + }); + } else { + acc.push(item); + } + return acc; + }, []); + setItems(allItems); - const optionsToSelect = allItems.map((i) => i.label); + const optionsToSelect = allItems.reduce<string[]>((acc, i) => { + if (i.checked) { + acc.push(i.label); + } + return acc; + }, []); onChangeFilterOptions(optionsToSelect); if (isDataStreamsFilter) { @@ -260,7 +281,7 @@ export const ChartsFilter = memo<ChartsFilterProps>( data-test-subj={getTestId(`${filterName}-selectAllButton`)} icon="check" label={UX_LABELS.filterSelectAll} - isDisabled={hasActiveFilters && numFilters === 0} + isDisabled={isSelectAllDisabled} onClick={onSelectAll} /> </EuiFlexItem> diff --git a/x-pack/plugins/data_usage/public/app/components/filters/charts_filter_popover.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter_popover.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/filters/charts_filter_popover.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter_popover.tsx diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.test.tsx new file mode 100644 index 0000000000000..d4196abeaa268 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.test.tsx @@ -0,0 +1,180 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { TestProvider } from '../../../../common/test_utils'; +import { render, type RenderResult } from '@testing-library/react'; +import userEvent, { type UserEvent } from '@testing-library/user-event'; +import { ChartsFilters, type ChartsFiltersProps } from './charts_filters'; +import { FilterName } from '../../hooks'; +import { mockUseKibana } from '../../mocks'; +import { + METRIC_TYPE_VALUES, + METRIC_TYPE_UI_OPTIONS_VALUES_TO_API_MAP, +} from '../../../../common/rest_types/usage_metrics'; + +const mockUseLocation = jest.fn(() => ({ pathname: '/' })); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: () => mockUseLocation(), + useHistory: jest.fn().mockReturnValue({ + push: jest.fn(), + listen: jest.fn(), + location: { + search: '', + }, + }), +})); + +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useKibana: () => mockUseKibana, + }; +}); + +describe('Charts Filters', () => { + let user: UserEvent; + const testId = 'test'; + const testIdFilter = `${testId}-filter`; + const onClick = jest.fn(); + const dateRangePickerState = { + startDate: 'now-15m', + endDate: 'now', + recentlyUsedDateRanges: [], + autoRefreshOptions: { + enabled: false, + duration: 0, + }, + }; + const defaultProps = { + dateRangePickerState, + isDataLoading: false, + isUpdateDisabled: false, + isValidDateRange: true, + filterOptions: { + dataStreams: { + filterName: 'dataStreams' as FilterName, + isFilterLoading: false, + options: ['.ds-1', '.ds-2'], + onChangeFilterOptions: jest.fn(), + }, + metricTypes: { + filterName: 'metricTypes' as FilterName, + isFilterLoading: false, + options: METRIC_TYPE_VALUES.slice(), + onChangeFilterOptions: jest.fn(), + }, + }, + onClick, + onRefresh: jest.fn(), + onRefreshChange: jest.fn(), + onTimeChange: jest.fn(), + }; + + let renderComponent: (props: ChartsFiltersProps) => RenderResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + renderComponent = (props: ChartsFiltersProps) => + render( + <TestProvider> + <ChartsFilters data-test-subj={testIdFilter} {...props} /> + </TestProvider> + ); + user = userEvent.setup({ advanceTimers: jest.advanceTimersByTime, pointerEventsCheck: 0 }); + }); + + it('renders data streams filter, date range filter and refresh button', () => { + const { getByTestId } = renderComponent(defaultProps); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-date-range`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-super-refresh-button`)).toBeTruthy(); + }); + + it('renders metric filter', () => { + const { getByTestId } = renderComponent({ ...defaultProps, showMetricsTypesFilter: true }); + expect(getByTestId(`${testIdFilter}-metricTypes-popoverButton`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-date-range`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-super-refresh-button`)).toBeTruthy(); + }); + + it('has default metrics selected if showing metrics filter', async () => { + const { getByTestId, getAllByTestId } = renderComponent({ + ...defaultProps, + showMetricsTypesFilter: true, + }); + const metricsFilterButton = getByTestId(`${testIdFilter}-metricTypes-popoverButton`); + expect(metricsFilterButton).toBeTruthy(); + await user.click(metricsFilterButton); + const allFilterOptions = getAllByTestId('metricTypes-filter-option'); + + // checked options + const checkedOptions = allFilterOptions.filter( + (option) => option.getAttribute('aria-checked') === 'true' + ); + expect(checkedOptions).toHaveLength(2); + expect(checkedOptions.map((option) => option.title)).toEqual( + Object.keys(METRIC_TYPE_UI_OPTIONS_VALUES_TO_API_MAP).slice(0, 2) + ); + + // unchecked options + const unCheckedOptions = allFilterOptions.filter( + (option) => option.getAttribute('aria-checked') === 'false' + ); + expect(unCheckedOptions).toHaveLength(7); + expect(unCheckedOptions.map((option) => option.title)).toEqual( + Object.keys(METRIC_TYPE_UI_OPTIONS_VALUES_TO_API_MAP).slice(2) + ); + }); + + it('should show invalid date range info', () => { + const { getByTestId } = renderComponent({ + ...defaultProps, + // using this prop to set invalid date range + isValidDateRange: false, + }); + expect(getByTestId(`${testIdFilter}-invalid-date-range`)).toBeTruthy(); + }); + + it('should not show invalid date range info', () => { + const { queryByTestId } = renderComponent(defaultProps); + expect(queryByTestId(`${testIdFilter}-invalid-date-range`)).toBeNull(); + }); + + it('should disable refresh button', () => { + const { getByTestId } = renderComponent({ + ...defaultProps, + isUpdateDisabled: true, + }); + expect(getByTestId(`${testIdFilter}-super-refresh-button`)).toBeDisabled(); + }); + + it('should show `updating` on refresh button', () => { + const { getByTestId } = renderComponent({ + ...defaultProps, + isDataLoading: true, + }); + expect(getByTestId(`${testIdFilter}-super-refresh-button`)).toBeDisabled(); + expect(getByTestId(`${testIdFilter}-super-refresh-button`).textContent).toEqual('Updating'); + }); + + it('should call onClick on refresh button click', () => { + const { getByTestId } = renderComponent(defaultProps); + getByTestId(`${testIdFilter}-super-refresh-button`).click(); + expect(onClick).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.tsx new file mode 100644 index 0000000000000..8b8b3f864cd7d --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.tsx @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo, useCallback, useMemo } from 'react'; +import { + EuiFilterGroup, + EuiFlexGroup, + EuiFlexItem, + EuiSuperUpdateButton, + EuiText, + EuiTextAlign, +} from '@elastic/eui'; + +import { UX_LABELS } from '../../../translations'; +import { useTestIdGenerator } from '../../../hooks/use_test_id_generator'; +import { useGetDataUsageMetrics } from '../../../hooks/use_get_usage_metrics'; +import { type UsageMetricsDateRangePickerProps, UsageMetricsDateRangePicker } from './date_picker'; +import { ChartsFilter, ChartsFilterProps } from './charts_filter'; +import { FilterName } from '../../hooks'; + +export interface ChartsFiltersProps extends UsageMetricsDateRangePickerProps { + isUpdateDisabled: boolean; + isValidDateRange: boolean; + filterOptions: Record<FilterName, ChartsFilterProps['filterOptions']>; + onClick: ReturnType<typeof useGetDataUsageMetrics>['refetch']; + showMetricsTypesFilter?: boolean; +} + +export const ChartsFilters = memo<ChartsFiltersProps>( + ({ + dateRangePickerState, + isDataLoading, + isUpdateDisabled, + isValidDateRange, + filterOptions, + onClick, + onRefresh, + onRefreshChange, + onTimeChange, + showMetricsTypesFilter = false, + 'data-test-subj': dataTestSubj, + }) => { + const getTestId = useTestIdGenerator(dataTestSubj); + + const filters = useMemo(() => { + return ( + <> + {showMetricsTypesFilter && ( + <ChartsFilter filterOptions={filterOptions.metricTypes} data-test-subj={dataTestSubj} /> + )} + {!filterOptions.dataStreams.isFilterLoading && ( + <ChartsFilter filterOptions={filterOptions.dataStreams} data-test-subj={dataTestSubj} /> + )} + </> + ); + }, [dataTestSubj, filterOptions, showMetricsTypesFilter]); + + const onClickRefreshButton = useCallback(() => onClick(), [onClick]); + + return ( + <EuiFlexGroup responsive gutterSize="m" justifyContent="flexStart"> + <EuiFlexItem grow={1}> + <EuiFilterGroup>{filters}</EuiFilterGroup> + </EuiFlexItem> + <EuiFlexItem grow={1}> + <UsageMetricsDateRangePicker + dateRangePickerState={dateRangePickerState} + isDataLoading={isDataLoading} + onRefresh={onRefresh} + onRefreshChange={onRefreshChange} + onTimeChange={onTimeChange} + data-test-subj={dataTestSubj} + /> + {!isValidDateRange && ( + <EuiText color="danger" size="s" data-test-subj={getTestId('invalid-date-range')}> + <EuiTextAlign textAlign="center"> + <p>{UX_LABELS.filters.invalidDateRange}</p> + </EuiTextAlign> + </EuiText> + )} + </EuiFlexItem> + <EuiFlexItem grow={false}> + <EuiSuperUpdateButton + data-test-subj={getTestId('super-refresh-button')} + fill={false} + isLoading={isDataLoading} + isDisabled={isUpdateDisabled} + onClick={onClickRefreshButton} + /> + </EuiFlexItem> + <EuiFlexItem grow={2} /> + </EuiFlexGroup> + ); + } +); + +ChartsFilters.displayName = 'ChartsFilters'; diff --git a/x-pack/plugins/data_usage/public/app/components/filters/date_picker.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/date_picker.tsx similarity index 98% rename from x-pack/plugins/data_usage/public/app/components/filters/date_picker.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/filters/date_picker.tsx index 1b04587b4245d..10fbb2ab399ce 100644 --- a/x-pack/plugins/data_usage/public/app/components/filters/date_picker.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/date_picker.tsx @@ -28,7 +28,7 @@ export interface DateRangePickerValues { recentlyUsedDateRanges: EuiSuperDatePickerRecentRange[]; } -interface UsageMetricsDateRangePickerProps { +export interface UsageMetricsDateRangePickerProps { dateRangePickerState: DateRangePickerValues; isDataLoading: boolean; onRefresh: () => void; diff --git a/x-pack/plugins/data_usage/public/app/components/filters/toggle_all_button.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/toggle_all_button.tsx similarity index 95% rename from x-pack/plugins/data_usage/public/app/components/filters/toggle_all_button.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/filters/toggle_all_button.tsx index 3d1c4080fcc9c..e6d4f6cd3c721 100644 --- a/x-pack/plugins/data_usage/public/app/components/filters/toggle_all_button.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/toggle_all_button.tsx @@ -26,7 +26,6 @@ interface ToggleAllButtonProps { export const ToggleAllButton = memo<ToggleAllButtonProps>( ({ color, 'data-test-subj': dataTestSubj, icon, isDisabled, label, onClick }) => { - // const getTestId = useTestIdGenerator(dataTestSubj); return ( <EuiButtonEmpty color={color} diff --git a/x-pack/plugins/data_usage/public/app/components/legend_action.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action.tsx similarity index 93% rename from x-pack/plugins/data_usage/public/app/components/legend_action.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/legend_action.tsx index b748b77163245..1282bd43e863a 100644 --- a/x-pack/plugins/data_usage/public/app/components/legend_action.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action.tsx @@ -52,6 +52,7 @@ export const LegendAction: React.FC<LegendActionProps> = React.memo( return ( <EuiFlexGroup gutterSize="s" alignItems="center"> <EuiPopover + data-test-subj="legendActionPopover" button={ <EuiFlexGroup gutterSize="s" alignItems="center"> <EuiFlexItem grow={false}> @@ -59,6 +60,7 @@ export const LegendAction: React.FC<LegendActionProps> = React.memo( iconType="boxesHorizontal" aria-label={UX_LABELS.dataQualityPopup.open} onClick={() => togglePopover(uniqueStreamName)} + data-test-subj="legendActionButton" /> </EuiFlexItem> </EuiFlexGroup> @@ -71,11 +73,13 @@ export const LegendAction: React.FC<LegendActionProps> = React.memo( <LegendActionItem label={UX_LABELS.dataQualityPopup.copy} onClick={onCopyDataStreamName} + dataTestSubj="copyDataStreamNameAction" /> {hasIndexManagementFeature && ( <LegendActionItem label={UX_LABELS.dataQualityPopup.manage} onClick={onClickIndexManagement} + dataTestSubj="manageDataStreamAction" /> )} {hasDataSetQualityFeature && <DatasetQualityLink dataStreamName={label} />} diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action_item.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action_item.tsx new file mode 100644 index 0000000000000..542fff6902fb9 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action_item.tsx @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo } from 'react'; +import { EuiListGroupItem } from '@elastic/eui'; + +export const LegendActionItem = memo( + ({ + label, + onClick, + dataTestSubj, + }: { + label: string; + onClick: () => Promise<void> | void; + dataTestSubj: string; + }) => <EuiListGroupItem label={label} onClick={onClick} data-test-subj={dataTestSubj} size="s" /> +); + +LegendActionItem.displayName = 'LegendActionItem'; diff --git a/x-pack/plugins/data_usage/public/app/components/no_data_callout.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/no_data_callout.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/no_data_callout.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/no_data_callout.tsx diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/page.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/page.test.tsx new file mode 100644 index 0000000000000..debed5b12dde6 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/page.test.tsx @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { TestProvider } from '../../../common/test_utils'; +import { render, type RenderResult } from '@testing-library/react'; +import { DataUsagePage, type DataUsagePageProps } from './page'; + +describe('Page Component', () => { + const testId = 'test'; + let renderComponent: (props: DataUsagePageProps) => RenderResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + renderComponent = (props: DataUsagePageProps) => + render( + <TestProvider> + <DataUsagePage data-test-subj={testId} {...props} /> + </TestProvider> + ); + }); + + it('renders', () => { + const { getByTestId } = renderComponent({ title: 'test' }); + expect(getByTestId(`${testId}-header`)).toBeTruthy(); + }); + + it('should show page title', () => { + const { getByTestId } = renderComponent({ title: 'test header' }); + expect(getByTestId(`${testId}-title`)).toBeTruthy(); + expect(getByTestId(`${testId}-title`)).toHaveTextContent('test header'); + }); + + it('should show page description', () => { + const { getByTestId } = renderComponent({ title: 'test', subtitle: 'test description' }); + expect(getByTestId(`${testId}-description`)).toBeTruthy(); + expect(getByTestId(`${testId}-description`)).toHaveTextContent('test description'); + }); +}); diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/page.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/page.tsx new file mode 100644 index 0000000000000..0a8f363b0a25f --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/page.tsx @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PropsWithChildren } from 'react'; +import React, { memo, useMemo } from 'react'; +import type { CommonProps } from '@elastic/eui'; +import { + EuiPageHeader, + EuiPageSection, + EuiFlexGroup, + EuiFlexItem, + EuiTitle, + EuiSpacer, +} from '@elastic/eui'; +import { useTestIdGenerator } from '../../hooks/use_test_id_generator'; + +export interface DataUsagePageProps { + title: React.ReactNode; + subtitle?: React.ReactNode; + actions?: React.ReactNode; + restrictWidth?: boolean | number; + hasBottomBorder?: boolean; + hideHeader?: boolean; + 'data-test-subj'?: string; +} + +export const DataUsagePage = memo<PropsWithChildren<DataUsagePageProps & CommonProps>>( + ({ + title, + subtitle, + children, + restrictWidth = false, + hasBottomBorder = true, + 'data-test-subj': dataTestSubj, + ...otherProps + }) => { + const getTestId = useTestIdGenerator(dataTestSubj); + + const header = useMemo(() => { + return ( + <EuiFlexGroup direction="column" gutterSize="none" alignItems="flexStart"> + <EuiFlexItem grow={false}> + <EuiTitle size="l"> + <span data-test-subj={getTestId(`title`)}>{title}</span> + </EuiTitle> + </EuiFlexItem> + </EuiFlexGroup> + ); + }, [getTestId, title]); + + const description = useMemo(() => { + return subtitle ? ( + <span data-test-subj={getTestId(`description`)}>{subtitle}</span> + ) : undefined; + }, [getTestId, subtitle]); + + return ( + <div {...otherProps} data-test-subj={dataTestSubj}> + <> + <EuiPageHeader + pageTitle={header} + description={description} + bottomBorder={hasBottomBorder} + restrictWidth={restrictWidth} + data-test-subj={getTestId('header')} + /> + <EuiSpacer size="l" /> + </> + <EuiPageSection paddingSize="none" color="transparent" restrictWidth={restrictWidth}> + {children} + </EuiPageSection> + </div> + ); + } +); + +DataUsagePage.displayName = 'DataUsagePage'; diff --git a/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.test.tsx new file mode 100644 index 0000000000000..18f49d8042e71 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.test.tsx @@ -0,0 +1,111 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { TestProvider } from '../../common/test_utils'; +import { render, type RenderResult } from '@testing-library/react'; +import { DataUsageMetricsPage } from './data_usage_metrics_page'; +import { coreMock as mockCore } from '@kbn/core/public/mocks'; +import { useGetDataUsageMetrics } from '../hooks/use_get_usage_metrics'; +import { useGetDataUsageDataStreams } from '../hooks/use_get_data_streams'; +import { mockUseKibana } from './mocks'; + +jest.mock('../hooks/use_get_usage_metrics'); +jest.mock('../hooks/use_get_data_streams'); +const mockServices = mockCore.createStart(); +jest.mock('../utils/use_breadcrumbs', () => { + return { + useBreadcrumbs: jest.fn(), + }; +}); +jest.mock('../utils/use_kibana', () => { + return { + useKibanaContextForPlugin: () => ({ + services: mockServices, + }), + }; +}); + +const mockUseLocation = jest.fn(() => ({ pathname: '/' })); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: () => mockUseLocation(), + useHistory: jest.fn().mockReturnValue({ + push: jest.fn(), + listen: jest.fn(), + location: { + search: '', + }, + }), +})); + +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useKibana: () => mockUseKibana, + }; +}); + +const mockUseGetDataUsageMetrics = useGetDataUsageMetrics as jest.Mock; +const mockUseGetDataUsageDataStreams = useGetDataUsageDataStreams as jest.Mock; + +const getBaseMockedDataStreams = () => ({ + error: undefined, + data: undefined, + isFetching: false, + refetch: jest.fn(), +}); +const getBaseMockedDataUsageMetrics = () => ({ + error: undefined, + data: undefined, + isFetching: false, + refetch: jest.fn(), +}); + +describe('DataUsageMetrics Page', () => { + const testId = 'test'; + let renderComponent: () => RenderResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + renderComponent = () => + render( + <TestProvider> + <DataUsageMetricsPage data-test-subj={testId} /> + </TestProvider> + ); + mockUseGetDataUsageMetrics.mockReturnValue(getBaseMockedDataUsageMetrics); + mockUseGetDataUsageDataStreams.mockReturnValue(getBaseMockedDataStreams); + }); + + it('renders', () => { + const { getByTestId } = renderComponent(); + expect(getByTestId(`${testId}-page-header`)).toBeTruthy(); + }); + + it('should show page title', () => { + const { getByTestId } = renderComponent(); + expect(getByTestId(`${testId}-page-title`)).toBeTruthy(); + expect(getByTestId(`${testId}-page-title`)).toHaveTextContent('Data Usage'); + }); + + it('should show page description', () => { + const { getByTestId } = renderComponent(); + expect(getByTestId(`${testId}-page-description`)).toBeTruthy(); + expect(getByTestId(`${testId}-page-description`)).toHaveTextContent( + 'Monitor data ingested and retained by data streams over the past 10 days.' + ); + }); +}); diff --git a/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.tsx b/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.tsx new file mode 100644 index 0000000000000..7edc2b57e360c --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo } from 'react'; +import { DataUsagePage } from './components/page'; +import { DATA_USAGE_PAGE } from '../translations'; +import { DataUsageMetrics } from './components/data_usage_metrics'; +import { useTestIdGenerator } from '../hooks/use_test_id_generator'; + +export interface DataUsageMetricsPageProps { + 'data-test-subj'?: string; +} +export const DataUsageMetricsPage = memo<DataUsageMetricsPageProps>( + ({ 'data-test-subj': dataTestSubj = 'data-usage' }) => { + const getTestId = useTestIdGenerator(dataTestSubj); + + return ( + <DataUsagePage + data-test-subj={getTestId('page')} + title={DATA_USAGE_PAGE.title} + subtitle={DATA_USAGE_PAGE.subTitle} + > + <DataUsageMetrics data-test-subj={getTestId('metrics')} /> + </DataUsagePage> + ); + } +); + +DataUsageMetricsPage.displayName = 'DataUsageMetricsPage'; diff --git a/x-pack/plugins/data_usage/public/app/hooks/index.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/index.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/hooks/index.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/hooks/index.tsx diff --git a/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_filter.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_filter.tsx new file mode 100644 index 0000000000000..429ffab06637a --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_filter.tsx @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useEffect, useMemo } from 'react'; +import { EuiIconTip } from '@elastic/eui'; +import { DEFAULT_SELECTED_OPTIONS } from '../../../common'; +import { + METRIC_TYPE_VALUES, + METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP, + isDefaultMetricType, +} from '../../../common/rest_types'; +import { FILTER_NAMES, UX_LABELS } from '../../translations'; +import { useDataUsageMetricsUrlParams } from './use_charts_url_params'; +import { formatBytes } from '../../utils/format_bytes'; +import { ChartsFilterProps } from '../components/filters/charts_filter'; + +export type FilterName = keyof typeof FILTER_NAMES; + +export type FilterItems = Array<{ + key?: string; + label: string; + isGroupLabel?: boolean; + checked?: 'on' | undefined; + 'data-test-subj'?: string; +}>; + +export const useChartsFilter = ({ + filterOptions, +}: { + filterOptions: ChartsFilterProps['filterOptions']; +}): { + areDataStreamsSelectedOnMount: boolean; + items: FilterItems; + setItems: React.Dispatch<React.SetStateAction<FilterItems>>; + hasActiveFilters: boolean; + numActiveFilters: number; + numFilters: number; + setAreDataStreamsSelectedOnMount: (value: React.SetStateAction<boolean>) => void; + setUrlDataStreamsFilter: ReturnType< + typeof useDataUsageMetricsUrlParams + >['setUrlDataStreamsFilter']; + setUrlMetricTypesFilter: ReturnType< + typeof useDataUsageMetricsUrlParams + >['setUrlMetricTypesFilter']; +} => { + const { + dataStreams: selectedDataStreamsFromUrl, + metricTypes: selectedMetricTypesFromUrl, + setUrlMetricTypesFilter, + setUrlDataStreamsFilter, + } = useDataUsageMetricsUrlParams(); + const isMetricTypesFilter = filterOptions.filterName === 'metricTypes'; + const isDataStreamsFilter = filterOptions.filterName === 'dataStreams'; + + // track the state of selected data streams via URL + // when the page is loaded via selected data streams on URL + const [areDataStreamsSelectedOnMount, setAreDataStreamsSelectedOnMount] = + useState<boolean>(false); + + useEffect(() => { + if (selectedDataStreamsFromUrl && selectedDataStreamsFromUrl.length > 0) { + setAreDataStreamsSelectedOnMount(true); + } + // don't sync with changes to further selectedDataStreamsFromUrl + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const initialSelectedOptions = useMemo(() => { + if (isMetricTypesFilter) { + return METRIC_TYPE_VALUES.map((metricType) => ({ + key: metricType, + label: METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP[metricType], + checked: selectedMetricTypesFromUrl + ? selectedMetricTypesFromUrl.includes(metricType) + ? 'on' + : undefined + : isDefaultMetricType(metricType) // default metrics are selected by default + ? 'on' + : undefined, + 'data-test-subj': `${filterOptions.filterName}-filter-option`, + })) as FilterItems; + } + let dataStreamOptions: FilterItems = []; + + if (isDataStreamsFilter && !!filterOptions.options.length) { + dataStreamOptions = filterOptions.options?.map((filterOption, i) => ({ + key: filterOption, + label: filterOption, + append: formatBytes(filterOptions.appendOptions?.[filterOption] ?? 0), + checked: selectedDataStreamsFromUrl + ? selectedDataStreamsFromUrl.includes(filterOption) + ? 'on' + : undefined + : i < DEFAULT_SELECTED_OPTIONS + ? 'on' + : undefined, + 'data-test-subj': `${filterOptions.filterName}-filter-option`, + truncationProps: { + truncation: 'start', + truncationOffset: 15, + }, + })); + } + + return [ + { + label: UX_LABELS.filters.dataStreams.label, + append: ( + <span css={{ display: 'flex', alignItems: 'flex-end', marginLeft: 'auto' }}> + {UX_LABELS.filters.dataStreams.append} + <EuiIconTip + content={UX_LABELS.filters.dataStreams.appendTooltip} + type="iInCircle" + color="subdued" + css={{ alignContent: 'flex-start', justifyContent: 'flex-start' }} + /> + </span> + ), + isGroupLabel: true, + 'data-test-subj': `${filterOptions.filterName}-group-label`, + }, + ...dataStreamOptions, + ]; + }, [ + filterOptions.appendOptions, + filterOptions.filterName, + filterOptions.options, + isDataStreamsFilter, + isMetricTypesFilter, + selectedDataStreamsFromUrl, + selectedMetricTypesFromUrl, + ]); + // filter options + const [items, setItems] = useState<FilterItems>(initialSelectedOptions); + + const hasActiveFilters = useMemo( + () => !!items.find((item) => !item.isGroupLabel && item.checked === 'on'), + [items] + ); + const numActiveFilters = useMemo( + () => items.filter((item) => !item.isGroupLabel && item.checked === 'on').length, + [items] + ); + const numFilters = useMemo( + () => items.filter((item) => item.key && item.checked !== 'on').length, + [items] + ); + + return { + areDataStreamsSelectedOnMount, + items, + setItems, + hasActiveFilters, + numActiveFilters, + numFilters, + setAreDataStreamsSelectedOnMount, + setUrlMetricTypesFilter, + setUrlDataStreamsFilter, + }; +}; diff --git a/x-pack/plugins/data_usage/public/app/hooks/use_charts_url_params.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_url_params.test.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/hooks/use_charts_url_params.test.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_url_params.test.tsx diff --git a/x-pack/plugins/data_usage/public/app/hooks/use_charts_url_params.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_url_params.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/hooks/use_charts_url_params.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_url_params.tsx diff --git a/x-pack/plugins/data_usage/public/app/hooks/use_date_picker.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_date_picker.tsx similarity index 85% rename from x-pack/plugins/data_usage/public/app/hooks/use_date_picker.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/hooks/use_date_picker.tsx index 6b7e6f792b69b..ce5c70584946d 100644 --- a/x-pack/plugins/data_usage/public/app/hooks/use_date_picker.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_date_picker.tsx @@ -5,14 +5,14 @@ * 2.0. */ -import { useCallback, useState } from 'react'; +import { useCallback, useMemo, useState } from 'react'; import type { DurationRange, OnRefreshChangeProps, } from '@elastic/eui/src/components/date_picker/types'; import { useDataUsageMetricsUrlParams } from './use_charts_url_params'; import { DateRangePickerValues } from '../components/filters/date_picker'; -import { DEFAULT_DATE_RANGE_OPTIONS } from '../../../common/utils'; +import { DEFAULT_DATE_RANGE_OPTIONS, isDateRangeValid } from '../../../common/utils'; export const useDateRangePicker = () => { const { @@ -85,5 +85,14 @@ export const useDateRangePicker = () => { ] ); - return { dateRangePickerState, onRefreshChange, onTimeChange }; + const isValidDateRange = useMemo( + () => + isDateRangeValid({ + start: dateRangePickerState.startDate, + end: dateRangePickerState.endDate, + }), + [dateRangePickerState.endDate, dateRangePickerState.startDate] + ); + + return { dateRangePickerState, isValidDateRange, onRefreshChange, onTimeChange }; }; diff --git a/x-pack/platform/plugins/private/data_usage/public/app/mocks.ts b/x-pack/platform/plugins/private/data_usage/public/app/mocks.ts new file mode 100644 index 0000000000000..eed86c4bc6dc2 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/mocks.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +export const mockUseKibana = { + services: { + uiSettings: { + get: jest.fn().mockImplementation((key) => { + const get = (k: 'dateFormat' | 'timepicker:quickRanges') => { + const x = { + dateFormat: 'MMM D, YYYY @ HH:mm:ss.SSS', + 'timepicker:quickRanges': [ + { + from: 'now/d', + to: 'now/d', + display: 'Today', + }, + { + from: 'now/w', + to: 'now/w', + display: 'This week', + }, + { + from: 'now-15m', + to: 'now', + display: 'Last 15 minutes', + }, + { + from: 'now-30m', + to: 'now', + display: 'Last 30 minutes', + }, + { + from: 'now-1h', + to: 'now', + display: 'Last 1 hour', + }, + { + from: 'now-24h', + to: 'now', + display: 'Last 24 hours', + }, + { + from: 'now-7d', + to: 'now', + display: 'Last 7 days', + }, + ], + }; + return x[k]; + }; + return get(key); + }), + }, + }, +}; + +export const generateDataStreams = (count: number) => { + return Array.from({ length: count }, (_, i) => ({ + name: `.ds-${i}`, + storageSizeBytes: 1024 ** 2 * (22 / 7), + })); +}; diff --git a/x-pack/plugins/data_usage/public/application.tsx b/x-pack/platform/plugins/private/data_usage/public/application.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/application.tsx rename to x-pack/platform/plugins/private/data_usage/public/application.tsx diff --git a/x-pack/plugins/data_usage/public/hooks/use_get_data_streams.test.tsx b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.test.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_get_data_streams.test.tsx rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.test.tsx diff --git a/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.ts b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.ts new file mode 100644 index 0000000000000..0dc9d7d535eb1 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.ts @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query'; +import { useQuery } from '@tanstack/react-query'; +import type { IHttpFetchError } from '@kbn/core-http-browser'; +import { DataStreamsResponseBodySchemaBody } from '../../common/rest_types'; +import { DATA_USAGE_DATA_STREAMS_API_ROUTE, DEFAULT_SELECTED_OPTIONS } from '../../common'; +import { useKibanaContextForPlugin } from '../utils/use_kibana'; + +type GetDataUsageDataStreamsResponse = Array< + DataStreamsResponseBodySchemaBody[number] & { + selected: boolean; + } +>; + +export const useGetDataUsageDataStreams = ({ + selectedDataStreams, + options = { + enabled: false, + }, +}: { + selectedDataStreams?: string[]; + options?: UseQueryOptions<GetDataUsageDataStreamsResponse, IHttpFetchError>; +}): UseQueryResult<GetDataUsageDataStreamsResponse, IHttpFetchError> => { + const { http } = useKibanaContextForPlugin().services; + + return useQuery<GetDataUsageDataStreamsResponse, IHttpFetchError>({ + queryKey: ['get-data-usage-data-streams'], + ...options, + keepPreviousData: true, + queryFn: async ({ signal }) => { + return http + .get<GetDataUsageDataStreamsResponse>(DATA_USAGE_DATA_STREAMS_API_ROUTE, { + signal, + version: '1', + }) + .then((response) => { + const augmentedDataStreamsBasedOnSelectedItems = response.reduce<{ + selected: GetDataUsageDataStreamsResponse; + rest: GetDataUsageDataStreamsResponse; + }>( + (acc, ds, i) => { + const item = { + name: ds.name, + storageSizeBytes: ds.storageSizeBytes, + selected: ds.selected, + }; + + if (selectedDataStreams?.includes(ds.name) && i < DEFAULT_SELECTED_OPTIONS) { + acc.selected.push({ ...item, selected: true }); + } else { + acc.rest.push({ ...item, selected: false }); + } + + return acc; + }, + { selected: [], rest: [] } + ); + + return [ + ...augmentedDataStreamsBasedOnSelectedItems.selected, + ...augmentedDataStreamsBasedOnSelectedItems.rest, + ]; + }) + .catch((error) => { + throw error.body; + }); + }, + }); +}; diff --git a/x-pack/plugins/data_usage/public/hooks/use_get_usage_metrics.test.tsx b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_usage_metrics.test.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_get_usage_metrics.test.tsx rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_get_usage_metrics.test.tsx diff --git a/x-pack/plugins/data_usage/public/hooks/use_get_usage_metrics.ts b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_usage_metrics.ts similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_get_usage_metrics.ts rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_get_usage_metrics.ts diff --git a/x-pack/plugins/data_usage/public/hooks/use_test_id_generator.ts b/x-pack/platform/plugins/private/data_usage/public/hooks/use_test_id_generator.ts similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_test_id_generator.ts rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_test_id_generator.ts diff --git a/x-pack/plugins/data_usage/public/hooks/use_url_params.ts b/x-pack/platform/plugins/private/data_usage/public/hooks/use_url_params.ts similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_url_params.ts rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_url_params.ts diff --git a/x-pack/plugins/data_usage/public/index.ts b/x-pack/platform/plugins/private/data_usage/public/index.ts similarity index 100% rename from x-pack/plugins/data_usage/public/index.ts rename to x-pack/platform/plugins/private/data_usage/public/index.ts diff --git a/x-pack/plugins/data_usage/public/plugin.ts b/x-pack/platform/plugins/private/data_usage/public/plugin.ts similarity index 100% rename from x-pack/plugins/data_usage/public/plugin.ts rename to x-pack/platform/plugins/private/data_usage/public/plugin.ts diff --git a/x-pack/platform/plugins/private/data_usage/public/translations.tsx b/x-pack/platform/plugins/private/data_usage/public/translations.tsx new file mode 100644 index 0000000000000..ba70f0cdc1787 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/translations.tsx @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const PLUGIN_NAME = i18n.translate('xpack.dataUsage.name', { + defaultMessage: 'Data Usage', +}); + +export const FILTER_NAMES = Object.freeze({ + metricTypes: i18n.translate('xpack.dataUsage.metrics.filter.metricTypes', { + defaultMessage: 'Metric types', + }), + dataStreams: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams', { + defaultMessage: 'Data streams', + }), +}); + +export const CHART_TITLES = Object.freeze({ + ingest_rate: i18n.translate('xpack.dataUsage.charts.ingestedMax', { + defaultMessage: 'Data Ingested', + }), + storage_retained: i18n.translate('xpack.dataUsage.charts.retainedMax', { + defaultMessage: 'Data Retained in Storage', + }), +}); + +export const DATA_USAGE_PAGE = Object.freeze({ + title: i18n.translate('xpack.dataUsage.name', { + defaultMessage: 'Data Usage', + }), + subTitle: i18n.translate('xpack.dataUsage.pageSubtitle', { + defaultMessage: 'Monitor data ingested and retained by data streams over the past 10 days.', + }), +}); + +export const UX_LABELS = Object.freeze({ + filters: { + invalidDateRange: i18n.translate('xpack.dataUsage.metrics.filter.invalidDateRange', { + defaultMessage: 'The date range should be within 10 days from now.', + }), + dataStreams: { + label: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams.label', { + defaultMessage: 'Name', + }), + append: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams.append', { + defaultMessage: 'Size', + }), + appendTooltip: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams.appendTooltip', { + defaultMessage: 'Storage size is not updated based on the selected date range.', + }), + }, + }, + filterSelectAll: i18n.translate('xpack.dataUsage.metrics.filter.selectAll', { + defaultMessage: 'Select all', + }), + filterClearAll: i18n.translate('xpack.dataUsage.metrics.filter.clearAll', { + defaultMessage: 'Clear all', + }), + filterSearchPlaceholder: (filterName: string) => + i18n.translate('xpack.dataUsage.metrics.filter.searchPlaceholder', { + defaultMessage: 'Search {filterName}', + values: { filterName }, + }), + filterEmptyMessage: (filterName: string) => + i18n.translate('xpack.dataUsage.metrics.filter.emptyMessage', { + defaultMessage: 'No {filterName} available', + values: { filterName }, + }), + dataQualityPopup: { + open: i18n.translate('xpack.dataUsage.metrics.dataQuality.open.actions', { + defaultMessage: 'Open data stream actions', + }), + copy: i18n.translate('xpack.dataUsage.metrics.dataQuality.copy.dataStream', { + defaultMessage: 'Copy data stream name', + }), + manage: i18n.translate('xpack.dataUsage.metrics.dataQuality.manage.dataStream', { + defaultMessage: 'Manage data stream', + }), + view: i18n.translate('xpack.dataUsage.metrics.dataQuality.view', { + defaultMessage: 'View data quality', + }), + }, +}); diff --git a/x-pack/plugins/data_usage/public/types.ts b/x-pack/platform/plugins/private/data_usage/public/types.ts similarity index 100% rename from x-pack/plugins/data_usage/public/types.ts rename to x-pack/platform/plugins/private/data_usage/public/types.ts diff --git a/x-pack/plugins/data_usage/public/utils/format_bytes.test.ts b/x-pack/platform/plugins/private/data_usage/public/utils/format_bytes.test.ts similarity index 100% rename from x-pack/plugins/data_usage/public/utils/format_bytes.test.ts rename to x-pack/platform/plugins/private/data_usage/public/utils/format_bytes.test.ts diff --git a/x-pack/plugins/data_usage/public/utils/format_bytes.ts b/x-pack/platform/plugins/private/data_usage/public/utils/format_bytes.ts similarity index 100% rename from x-pack/plugins/data_usage/public/utils/format_bytes.ts rename to x-pack/platform/plugins/private/data_usage/public/utils/format_bytes.ts diff --git a/x-pack/plugins/data_usage/public/utils/use_breadcrumbs.tsx b/x-pack/platform/plugins/private/data_usage/public/utils/use_breadcrumbs.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/utils/use_breadcrumbs.tsx rename to x-pack/platform/plugins/private/data_usage/public/utils/use_breadcrumbs.tsx diff --git a/x-pack/plugins/data_usage/public/utils/use_kibana.tsx b/x-pack/platform/plugins/private/data_usage/public/utils/use_kibana.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/utils/use_kibana.tsx rename to x-pack/platform/plugins/private/data_usage/public/utils/use_kibana.tsx diff --git a/x-pack/plugins/data_usage/server/common/errors.ts b/x-pack/platform/plugins/private/data_usage/server/common/errors.ts similarity index 100% rename from x-pack/plugins/data_usage/server/common/errors.ts rename to x-pack/platform/plugins/private/data_usage/server/common/errors.ts diff --git a/x-pack/plugins/data_usage/server/config.ts b/x-pack/platform/plugins/private/data_usage/server/config.ts similarity index 100% rename from x-pack/plugins/data_usage/server/config.ts rename to x-pack/platform/plugins/private/data_usage/server/config.ts diff --git a/x-pack/plugins/data_usage/server/errors.ts b/x-pack/platform/plugins/private/data_usage/server/errors.ts similarity index 100% rename from x-pack/plugins/data_usage/server/errors.ts rename to x-pack/platform/plugins/private/data_usage/server/errors.ts diff --git a/x-pack/plugins/data_usage/server/index.ts b/x-pack/platform/plugins/private/data_usage/server/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/index.ts rename to x-pack/platform/plugins/private/data_usage/server/index.ts diff --git a/x-pack/plugins/data_usage/server/mocks/index.ts b/x-pack/platform/plugins/private/data_usage/server/mocks/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/mocks/index.ts rename to x-pack/platform/plugins/private/data_usage/server/mocks/index.ts diff --git a/x-pack/plugins/data_usage/server/plugin.ts b/x-pack/platform/plugins/private/data_usage/server/plugin.ts similarity index 100% rename from x-pack/plugins/data_usage/server/plugin.ts rename to x-pack/platform/plugins/private/data_usage/server/plugin.ts diff --git a/x-pack/plugins/data_usage/server/routes/error_handler.ts b/x-pack/platform/plugins/private/data_usage/server/routes/error_handler.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/error_handler.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/error_handler.ts diff --git a/x-pack/plugins/data_usage/server/routes/index.tsx b/x-pack/platform/plugins/private/data_usage/server/routes/index.tsx similarity index 100% rename from x-pack/plugins/data_usage/server/routes/index.tsx rename to x-pack/platform/plugins/private/data_usage/server/routes/index.tsx diff --git a/x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts similarity index 79% rename from x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts index 9efe61bd75118..e7166baea59d3 100644 --- a/x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts +++ b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts @@ -127,6 +127,48 @@ describe('registerDataStreamsRoute', () => { }); }); + it('should not include `dot` indices/data streams that start with a `.`', async () => { + mockGetMeteringStats.mockResolvedValue({ + datastreams: [ + { + name: 'ds-1', + size_in_bytes: 100, + }, + { + name: '.ds-2', + size_in_bytes: 200, + }, + { + name: 'ds-3', + size_in_bytes: 500, + }, + { + name: '.ds-4', + size_in_bytes: 0, + }, + ], + }); + const mockRequest = httpServerMock.createKibanaRequest({ body: {} }); + const mockResponse = httpServerMock.createResponseFactory(); + const mockRouter = mockCore.http.createRouter.mock.results[0].value; + const [[, handler]] = mockRouter.versioned.get.mock.results[0].value.addVersion.mock.calls; + await handler(context, mockRequest, mockResponse); + + expect(mockResponse.ok).toHaveBeenCalledTimes(1); + expect(mockResponse.ok.mock.calls[0][0]).toEqual({ + body: [ + { + name: 'ds-3', + storageSizeBytes: 500, + }, + { + name: 'ds-1', + storageSizeBytes: 100, + }, + ], + }); + }); + it('should return correct error if metering stats request fails with an unknown error', async () => { // using custom error for test here to avoid having to import the actual error class mockGetMeteringStats.mockRejectedValue( @@ -178,9 +220,9 @@ describe('registerDataStreamsRoute', () => { }); it.each([ - ['no datastreams', {}, []], - ['empty array', { datastreams: [] }, []], - ['an empty element', { datastreams: [{}] }, []], + ['no datastreams key in response', { indices: [] }, []], + ['empty datastreams array', { indices: [], datastreams: [] }, []], + ['an empty element', { indices: [], datastreams: [{}] }, []], ])('should return empty array when no stats data with %s', async (_, stats, res) => { mockGetMeteringStats.mockResolvedValue(stats); const mockRequest = httpServerMock.createKibanaRequest({ body: {} }); @@ -189,9 +231,22 @@ describe('registerDataStreamsRoute', () => { const [[, handler]] = mockRouter.versioned.get.mock.results[0].value.addVersion.mock.calls; await handler(context, mockRequest, mockResponse); - expect(mockResponse.ok).toHaveBeenCalledTimes(1); - expect(mockResponse.ok.mock.calls[0][0]).toEqual({ - body: res, - }); + // @ts-expect-error + if (stats && stats.datastreams && stats.datastreams.length) { + expect(mockResponse.customError).toHaveBeenCalledTimes(1); + expect(mockResponse.customError).toHaveBeenCalledWith({ + body: new CustomHttpRequestError( + 'No relevant user defined data streams found with storage size greater than zero', + 404 + ), + statusCode: 404, + }); + } else { + expect(mockResponse.customError).toHaveBeenCalledTimes(1); + expect(mockResponse.customError).toHaveBeenCalledWith({ + body: new CustomHttpRequestError('No data streams found', 404), + statusCode: 404, + }); + } }); }); diff --git a/x-pack/plugins/data_usage/server/routes/internal/data_streams.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/data_streams.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.ts diff --git a/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams_handler.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams_handler.ts new file mode 100644 index 0000000000000..ccda00a9478dd --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams_handler.ts @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RequestHandler } from '@kbn/core/server'; +import { DataUsageContext, DataUsageRequestHandlerContext } from '../../types'; +import { errorHandler } from '../error_handler'; +import { getMeteringStats } from '../../utils/get_metering_stats'; +import type { + DataStreamsRequestQuery, + DataStreamsResponseBodySchemaBody, +} from '../../../common/rest_types/data_streams'; +import { NoIndicesMeteringError, NoPrivilegeMeteringError } from '../../errors'; +import { CustomHttpRequestError } from '../../utils'; + +export const getDataStreamsHandler = ( + dataUsageContext: DataUsageContext +): RequestHandler<never, DataStreamsRequestQuery, unknown, DataUsageRequestHandlerContext> => { + const logger = dataUsageContext.logFactory.get('dataStreamsRoute'); + return async (context, request, response) => { + const { includeZeroStorage } = request.query; + + logger.debug('Retrieving user data streams'); + + try { + const core = await context.core; + const { datastreams: meteringStatsDataStreams } = await getMeteringStats( + core.elasticsearch.client.asSecondaryAuthUser + ); + + if (!meteringStatsDataStreams || !meteringStatsDataStreams.length) { + return errorHandler( + logger, + response, + new CustomHttpRequestError('No data streams found', 404) + ); + } + + const nonSystemDataStreams = meteringStatsDataStreams.filter((dataStream) => { + return !dataStream.name?.startsWith('.'); + }); + + if (!nonSystemDataStreams || !nonSystemDataStreams.length) { + return errorHandler( + logger, + response, + new CustomHttpRequestError('No user defined data streams found', 404) + ); + } + + const body = nonSystemDataStreams + .reduce<DataStreamsResponseBodySchemaBody>((acc, stat) => { + if (includeZeroStorage || stat.size_in_bytes > 0) { + acc.push({ + name: stat.name, + storageSizeBytes: stat.size_in_bytes, + }); + } + return acc; + }, []) + .sort((a, b) => b.storageSizeBytes - a.storageSizeBytes); + + if (!body || !body.length) { + return errorHandler( + logger, + response, + new CustomHttpRequestError( + 'No relevant user defined data streams found with storage size greater than zero', + 404 + ) + ); + } + + return response.ok({ + body, + }); + } catch (error) { + if (error.message.includes('security_exception')) { + return errorHandler(logger, response, new NoPrivilegeMeteringError()); + } else if (error.message.includes('index_not_found_exception')) { + return errorHandler(logger, response, new NoIndicesMeteringError()); + } + + return errorHandler(logger, response, error); + } + }; +}; diff --git a/x-pack/plugins/data_usage/server/routes/internal/index.tsx b/x-pack/platform/plugins/private/data_usage/server/routes/internal/index.tsx similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/index.tsx rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/index.tsx diff --git a/x-pack/plugins/data_usage/server/routes/internal/usage_metrics.test.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.test.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/usage_metrics.test.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.test.ts diff --git a/x-pack/plugins/data_usage/server/routes/internal/usage_metrics.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/usage_metrics.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.ts diff --git a/x-pack/plugins/data_usage/server/routes/internal/usage_metrics_handler.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics_handler.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/usage_metrics_handler.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics_handler.ts diff --git a/x-pack/plugins/data_usage/server/services/app_context.ts b/x-pack/platform/plugins/private/data_usage/server/services/app_context.ts similarity index 100% rename from x-pack/plugins/data_usage/server/services/app_context.ts rename to x-pack/platform/plugins/private/data_usage/server/services/app_context.ts diff --git a/x-pack/plugins/data_usage/server/services/autoops_api.ts b/x-pack/platform/plugins/private/data_usage/server/services/autoops_api.ts similarity index 100% rename from x-pack/plugins/data_usage/server/services/autoops_api.ts rename to x-pack/platform/plugins/private/data_usage/server/services/autoops_api.ts diff --git a/x-pack/plugins/data_usage/server/services/index.ts b/x-pack/platform/plugins/private/data_usage/server/services/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/services/index.ts rename to x-pack/platform/plugins/private/data_usage/server/services/index.ts diff --git a/x-pack/plugins/data_usage/server/types/index.ts b/x-pack/platform/plugins/private/data_usage/server/types/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/types/index.ts rename to x-pack/platform/plugins/private/data_usage/server/types/index.ts diff --git a/x-pack/plugins/data_usage/server/types/types.ts b/x-pack/platform/plugins/private/data_usage/server/types/types.ts similarity index 100% rename from x-pack/plugins/data_usage/server/types/types.ts rename to x-pack/platform/plugins/private/data_usage/server/types/types.ts diff --git a/x-pack/plugins/data_usage/server/utils/custom_http_request_error.ts b/x-pack/platform/plugins/private/data_usage/server/utils/custom_http_request_error.ts similarity index 100% rename from x-pack/plugins/data_usage/server/utils/custom_http_request_error.ts rename to x-pack/platform/plugins/private/data_usage/server/utils/custom_http_request_error.ts diff --git a/x-pack/plugins/data_usage/server/utils/get_metering_stats.ts b/x-pack/platform/plugins/private/data_usage/server/utils/get_metering_stats.ts similarity index 100% rename from x-pack/plugins/data_usage/server/utils/get_metering_stats.ts rename to x-pack/platform/plugins/private/data_usage/server/utils/get_metering_stats.ts diff --git a/x-pack/plugins/data_usage/server/utils/index.ts b/x-pack/platform/plugins/private/data_usage/server/utils/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/utils/index.ts rename to x-pack/platform/plugins/private/data_usage/server/utils/index.ts diff --git a/x-pack/platform/plugins/private/data_usage/tsconfig.json b/x-pack/platform/plugins/private/data_usage/tsconfig.json new file mode 100644 index 0000000000000..6ebec73506c67 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/tsconfig.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/i18n", + "@kbn/data-plugin", + "@kbn/kibana-react-plugin", + "@kbn/management-plugin", + "@kbn/react-kibana-context-render", + "@kbn/shared-ux-router", + "@kbn/ebt-tools", + "@kbn/share-plugin", + "@kbn/config-schema", + "@kbn/logging", + "@kbn/deeplinks-observability", + "@kbn/unified-search-plugin", + "@kbn/core-http-browser", + "@kbn/core-chrome-browser", + "@kbn/features-plugin", + "@kbn/index-management-shared-types", + "@kbn/repo-info", + "@kbn/cloud-plugin", + "@kbn/server-http-tools", + "@kbn/utility-types-jest", + "@kbn/datemath", + "@kbn/ui-theme", + "@kbn/i18n-react", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/grokdebugger/README.md b/x-pack/platform/plugins/private/grokdebugger/README.md similarity index 100% rename from x-pack/plugins/grokdebugger/README.md rename to x-pack/platform/plugins/private/grokdebugger/README.md diff --git a/x-pack/plugins/grokdebugger/common/constants/editor.js b/x-pack/platform/plugins/private/grokdebugger/common/constants/editor.js similarity index 100% rename from x-pack/plugins/grokdebugger/common/constants/editor.js rename to x-pack/platform/plugins/private/grokdebugger/common/constants/editor.js diff --git a/x-pack/plugins/grokdebugger/common/constants/index.js b/x-pack/platform/plugins/private/grokdebugger/common/constants/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/common/constants/index.js rename to x-pack/platform/plugins/private/grokdebugger/common/constants/index.js diff --git a/x-pack/plugins/grokdebugger/common/constants/plugin.js b/x-pack/platform/plugins/private/grokdebugger/common/constants/plugin.js similarity index 100% rename from x-pack/plugins/grokdebugger/common/constants/plugin.js rename to x-pack/platform/plugins/private/grokdebugger/common/constants/plugin.js diff --git a/x-pack/plugins/grokdebugger/common/constants/routes.js b/x-pack/platform/plugins/private/grokdebugger/common/constants/routes.js similarity index 100% rename from x-pack/plugins/grokdebugger/common/constants/routes.js rename to x-pack/platform/plugins/private/grokdebugger/common/constants/routes.js diff --git a/x-pack/platform/plugins/private/grokdebugger/jest.config.js b/x-pack/platform/plugins/private/grokdebugger/jest.config.js new file mode 100644 index 0000000000000..deb18f968e703 --- /dev/null +++ b/x-pack/platform/plugins/private/grokdebugger/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/grokdebugger'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/grokdebugger', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/grokdebugger/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/grokdebugger/kibana.jsonc b/x-pack/platform/plugins/private/grokdebugger/kibana.jsonc similarity index 100% rename from x-pack/plugins/grokdebugger/kibana.jsonc rename to x-pack/platform/plugins/private/grokdebugger/kibana.jsonc diff --git a/x-pack/plugins/grokdebugger/public/components/custom_patterns_input/custom_patterns_input.js b/x-pack/platform/plugins/private/grokdebugger/public/components/custom_patterns_input/custom_patterns_input.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/custom_patterns_input/custom_patterns_input.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/custom_patterns_input/custom_patterns_input.js diff --git a/x-pack/plugins/grokdebugger/public/components/custom_patterns_input/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/custom_patterns_input/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/custom_patterns_input/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/custom_patterns_input/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/event_input/event_input.js b/x-pack/platform/plugins/private/grokdebugger/public/components/event_input/event_input.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/event_input/event_input.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/event_input/event_input.js diff --git a/x-pack/plugins/grokdebugger/public/components/event_input/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/event_input/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/event_input/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/event_input/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/event_output/event_output.js b/x-pack/platform/plugins/private/grokdebugger/public/components/event_output/event_output.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/event_output/event_output.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/event_output/event_output.js diff --git a/x-pack/plugins/grokdebugger/public/components/event_output/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/event_output/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/event_output/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/event_output/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/grok_debugger/grok_debugger.js b/x-pack/platform/plugins/private/grokdebugger/public/components/grok_debugger/grok_debugger.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/grok_debugger/grok_debugger.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/grok_debugger/grok_debugger.js diff --git a/x-pack/plugins/grokdebugger/public/components/grok_debugger/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/grok_debugger/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/grok_debugger/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/grok_debugger/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/inactive_license.js b/x-pack/platform/plugins/private/grokdebugger/public/components/inactive_license.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/inactive_license.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/inactive_license.js diff --git a/x-pack/plugins/grokdebugger/public/components/pattern_input/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/pattern_input/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/pattern_input/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/pattern_input/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/pattern_input/pattern_input.js b/x-pack/platform/plugins/private/grokdebugger/public/components/pattern_input/pattern_input.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/pattern_input/pattern_input.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/pattern_input/pattern_input.js diff --git a/x-pack/plugins/grokdebugger/public/index.js b/x-pack/platform/plugins/private/grokdebugger/public/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/index.js diff --git a/x-pack/plugins/grokdebugger/public/models/grokdebugger_request/grokdebugger_request.js b/x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_request/grokdebugger_request.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/models/grokdebugger_request/grokdebugger_request.js rename to x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_request/grokdebugger_request.js diff --git a/x-pack/plugins/grokdebugger/public/models/grokdebugger_request/index.js b/x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_request/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/models/grokdebugger_request/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_request/index.js diff --git a/x-pack/plugins/grokdebugger/public/models/grokdebugger_response/grokdebugger_response.js b/x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_response/grokdebugger_response.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/models/grokdebugger_response/grokdebugger_response.js rename to x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_response/grokdebugger_response.js diff --git a/x-pack/plugins/grokdebugger/public/models/grokdebugger_response/index.js b/x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_response/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/models/grokdebugger_response/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_response/index.js diff --git a/x-pack/plugins/grokdebugger/public/plugin.js b/x-pack/platform/plugins/private/grokdebugger/public/plugin.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/plugin.js rename to x-pack/platform/plugins/private/grokdebugger/public/plugin.js diff --git a/x-pack/plugins/grokdebugger/public/register_feature.ts b/x-pack/platform/plugins/private/grokdebugger/public/register_feature.ts similarity index 100% rename from x-pack/plugins/grokdebugger/public/register_feature.ts rename to x-pack/platform/plugins/private/grokdebugger/public/register_feature.ts diff --git a/x-pack/plugins/grokdebugger/public/render_app.js b/x-pack/platform/plugins/private/grokdebugger/public/render_app.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/render_app.js rename to x-pack/platform/plugins/private/grokdebugger/public/render_app.js diff --git a/x-pack/plugins/grokdebugger/public/services/grokdebugger/grokdebugger_service.js b/x-pack/platform/plugins/private/grokdebugger/public/services/grokdebugger/grokdebugger_service.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/services/grokdebugger/grokdebugger_service.js rename to x-pack/platform/plugins/private/grokdebugger/public/services/grokdebugger/grokdebugger_service.js diff --git a/x-pack/plugins/grokdebugger/public/shared_imports.ts b/x-pack/platform/plugins/private/grokdebugger/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/grokdebugger/public/shared_imports.ts rename to x-pack/platform/plugins/private/grokdebugger/public/shared_imports.ts diff --git a/x-pack/plugins/grokdebugger/server/index.js b/x-pack/platform/plugins/private/grokdebugger/server/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/index.js rename to x-pack/platform/plugins/private/grokdebugger/server/index.js diff --git a/x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts b/x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts similarity index 100% rename from x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts rename to x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.test.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.test.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.test.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.test.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_request/index.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_request/index.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/index.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.test.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.test.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.test.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.test.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_response/index.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_response/index.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/index.js diff --git a/x-pack/plugins/grokdebugger/server/plugin.js b/x-pack/platform/plugins/private/grokdebugger/server/plugin.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/plugin.js rename to x-pack/platform/plugins/private/grokdebugger/server/plugin.js diff --git a/x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/index.js b/x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/index.js rename to x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/index.js diff --git a/x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/register_grok_simulate_route.ts b/x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/register_grok_simulate_route.ts similarity index 100% rename from x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/register_grok_simulate_route.ts rename to x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/register_grok_simulate_route.ts diff --git a/x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/register_grokdebugger_routes.js b/x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/register_grokdebugger_routes.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/register_grokdebugger_routes.js rename to x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/register_grokdebugger_routes.js diff --git a/x-pack/plugins/grokdebugger/server/shared_imports.ts b/x-pack/platform/plugins/private/grokdebugger/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/grokdebugger/server/shared_imports.ts rename to x-pack/platform/plugins/private/grokdebugger/server/shared_imports.ts diff --git a/x-pack/platform/plugins/private/grokdebugger/tsconfig.json b/x-pack/platform/plugins/private/grokdebugger/tsconfig.json new file mode 100644 index 0000000000000..a205cbe24b4d9 --- /dev/null +++ b/x-pack/platform/plugins/private/grokdebugger/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/licensing-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/code-editor", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/index_lifecycle_management/README.md b/x-pack/platform/plugins/private/index_lifecycle_management/README.md similarity index 100% rename from x-pack/plugins/index_lifecycle_management/README.md rename to x-pack/platform/plugins/private/index_lifecycle_management/README.md diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_flyout.test.tsx.snap b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/policy_flyout.test.tsx.snap similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_flyout.test.tsx.snap rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/policy_flyout.test.tsx.snap diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/extend_index_management.test.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/extend_index_management.test.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/extend_index_management.test.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/extend_index_management.test.tsx diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/mocks.ts b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/mocks.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/mocks.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/mocks.ts diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/policy_flyout.test.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/policy_flyout.test.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/policy_flyout.test.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/policy_flyout.test.tsx diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/policy_table.test.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/policy_table.test.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/policy_table.test.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/policy_table.test.tsx diff --git a/x-pack/plugins/index_lifecycle_management/common/constants/data_tiers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/constants/data_tiers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/constants/data_tiers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/constants/data_tiers.ts diff --git a/x-pack/plugins/index_lifecycle_management/common/constants/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/constants/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/constants/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/constants/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/common/constants/license.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/constants/license.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/constants/license.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/constants/license.ts diff --git a/x-pack/plugins/index_lifecycle_management/common/types/api.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/types/api.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/types/api.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/types/api.ts diff --git a/x-pack/plugins/index_lifecycle_management/common/types/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/types/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/types/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/types/index.ts diff --git a/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/README.md b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/README.md new file mode 100644 index 0000000000000..0f8d23b70b45e --- /dev/null +++ b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/README.md @@ -0,0 +1,14 @@ +Most plugins of the deployment management team follow +the similar testing infrastructure where integration tests are located in `__jest__` and run as unit tests. + +The `index_lifecycle_management` tests [were refactored](https://github.com/elastic/kibana/pull/141750) to be run as integration tests because they [became flaky hitting the 5 seconds timeout](https://github.com/elastic/kibana/issues/115307#issuecomment-1238417474) for a jest unit test. + +Jest integration tests are just sit in a different directory and have two main differences: +- They never use parallelism, this allows them to access file system resources, launch services, etc. without needing to worry about conflicts with other tests +- They are allowed to take their sweet time, the default timeout is currently 10 minutes. + +To run these tests use: + +``` +node scripts/jest_integration x-pack/platform/plugins/private/index_lifecycle_management/ +``` \ No newline at end of file diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/app/app.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/app/app.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/app/app.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/app/app.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/app/app.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/app/app.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/app/app.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/app/app.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/downsample.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/downsample.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/downsample.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/downsample.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/downsample.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/downsample.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/downsample.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/downsample.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/edit_warning.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/edit_warning.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/edit_warning.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/edit_warning.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/frozen_phase.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/frozen_phase.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/frozen_phase.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/frozen_phase.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/rollover.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/rollover.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/rollover.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/rollover.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/rollover.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/rollover.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/rollover.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/rollover.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timeline.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timeline.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timeline.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timeline.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timeline.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timeline.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timeline.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timeline.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timing.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timing.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timing.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timing.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timing.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timing.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timing.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timing.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/cold_phase_validation.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/cold_phase_validation.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/cold_phase_validation.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/cold_phase_validation.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/downsample_interval.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/downsample_interval.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/downsample_interval.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/downsample_interval.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/error_indicators.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/error_indicators.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/error_indicators.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/error_indicators.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/hot_phase_validation.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/hot_phase_validation.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/hot_phase_validation.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/hot_phase_validation.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/policy_name_validation.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/policy_name_validation.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/policy_name_validation.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/policy_name_validation.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/timing.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/timing.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/timing.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/timing.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/validation.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/validation.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/validation.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/validation.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/warm_phase_validation.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/warm_phase_validation.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/warm_phase_validation.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/warm_phase_validation.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/init_test_bed.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/init_test_bed.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/init_test_bed.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/init_test_bed.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/delete_searchable_snapshot_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/delete_searchable_snapshot_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/delete_searchable_snapshot_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/delete_searchable_snapshot_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/downsample_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/downsample_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/downsample_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/downsample_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/errors_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/errors_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/errors_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/errors_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/forcemerge_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/forcemerge_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/forcemerge_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/forcemerge_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_set_value_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_set_value_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_set_value_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_set_value_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_and_set_value_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_and_set_value_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_and_set_value_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_and_set_value_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/index_priority_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/index_priority_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/index_priority_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/index_priority_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/min_age_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/min_age_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/min_age_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/min_age_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/node_allocation_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/node_allocation_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/node_allocation_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/node_allocation_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/phases.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/phases.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/phases.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/phases.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/readonly_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/readonly_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/readonly_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/readonly_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/replicas_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/replicas_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/replicas_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/replicas_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/request_flyout_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/request_flyout_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/request_flyout_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/request_flyout_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/rollover_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/rollover_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/rollover_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/rollover_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/save_policy_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/save_policy_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/save_policy_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/save_policy_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/searchable_snapshot_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/searchable_snapshot_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/searchable_snapshot_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/searchable_snapshot_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/shrink_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/shrink_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/shrink_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/shrink_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/snapshot_policy_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/snapshot_policy_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/snapshot_policy_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/snapshot_policy_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/toggle_phase_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/toggle_phase_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/toggle_phase_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/toggle_phase_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/global_mocks.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/global_mocks.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/global_mocks.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/global_mocks.tsx diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/http_requests.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/http_requests.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/http_requests.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/http_requests.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/setup_environment.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/setup_environment.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/setup_environment.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/setup_environment.tsx diff --git a/x-pack/platform/plugins/private/index_lifecycle_management/jest.config.js b/x-pack/platform/plugins/private/index_lifecycle_management/jest.config.js new file mode 100644 index 0000000000000..678335172509f --- /dev/null +++ b/x-pack/platform/plugins/private/index_lifecycle_management/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/index_lifecycle_management'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/index_lifecycle_management', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/index_lifecycle_management/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/platform/plugins/private/index_lifecycle_management/jest.integration.config.js b/x-pack/platform/plugins/private/index_lifecycle_management/jest.integration.config.js new file mode 100644 index 0000000000000..21f22c8543341 --- /dev/null +++ b/x-pack/platform/plugins/private/index_lifecycle_management/jest.integration.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test/jest_integration', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/index_lifecycle_management'], + testMatch: ['/**/integration_tests/**/*.test.{js,mjs,ts,tsx}'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/index_lifecycle_management', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/index_lifecycle_management/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/index_lifecycle_management/kibana.jsonc b/x-pack/platform/plugins/private/index_lifecycle_management/kibana.jsonc similarity index 100% rename from x-pack/plugins/index_lifecycle_management/kibana.jsonc rename to x-pack/platform/plugins/private/index_lifecycle_management/kibana.jsonc diff --git a/x-pack/plugins/index_lifecycle_management/public/application/app.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/app.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/app.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/app.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/components/index_templates_flyout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/components/index_templates_flyout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/components/index_templates_flyout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/components/index_templates_flyout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/constants/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/constants/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/constants/policy.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/policy.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/constants/policy.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/policy.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/constants/ui_metric.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/ui_metric.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/constants/ui_metric.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/ui_metric.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/index.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/index.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/index.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/determine_allocation_type.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/determine_allocation_type.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/determine_allocation_type.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/determine_allocation_type.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/get_available_node_roles_for_phase.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/get_available_node_roles_for_phase.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/get_available_node_roles_for_phase.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/get_available_node_roles_for_phase.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/is_node_role_first_preference.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/is_node_role_first_preference.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/is_node_role_first_preference.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/is_node_role_first_preference.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/policies.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/policies.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/policies.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/policies.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/rollover.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/rollover.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/rollover.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/rollover.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/settings_local_storage.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/settings_local_storage.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/settings_local_storage.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/settings_local_storage.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/use_is_read_only.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/use_is_read_only.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/use_is_read_only.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/use_is_read_only.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/edit_warning.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/edit_warning.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/edit_warning.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/edit_warning.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/form_errors_callout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/form_errors_callout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/form_errors_callout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/form_errors_callout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.svg.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.svg.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.svg.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.svg.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/learn_more_link.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/learn_more_link.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/learn_more_link.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/learn_more_link.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/optional_label.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/optional_label.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/optional_label.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/optional_label.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/phase_footer.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/phase_footer.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/phase_footer.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/phase_footer.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_searchable_snapshot_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_searchable_snapshot_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_searchable_snapshot_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_searchable_snapshot_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/frozen_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/frozen_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/frozen_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/frozen_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_docs_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_docs_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_docs_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_docs_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/use_rollover_value_required_validation.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/use_rollover_value_required_validation.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/use_rollover_value_required_validation.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/use_rollover_value_required_validation.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/cloud_data_tier_callout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/cloud_data_tier_callout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/cloud_data_tier_callout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/cloud_data_tier_callout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_nodes_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_nodes_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_nodes_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_nodes_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_tiers_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_tiers_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_tiers_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_tiers_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/loading_error.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/loading_error.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/loading_error.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/loading_error.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_custom_attributes_messages.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_custom_attributes_messages.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_custom_attributes_messages.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_custom_attributes_messages.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_available_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_available_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_available_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_available_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_nodes_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_nodes_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_nodes_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_nodes_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_allocation.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_allocation.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_allocation.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_allocation.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_attrs_details.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_attrs_details.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_attrs_details.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_attrs_details.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_role_to_fallback_tier_map.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_role_to_fallback_tier_map.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_role_to_fallback_tier_map.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_role_to_fallback_tier_map.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/types.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_fallback_nodes_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_fallback_nodes_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_fallback_nodes_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_fallback_nodes_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_use_fallback_tier_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_use_fallback_tier_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_use_fallback_tier_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_use_fallback_tier_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/downsample_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/downsample_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/downsample_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/downsample_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index_priority_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index_priority_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index_priority_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index_priority_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/min_age_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/min_age_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/min_age_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/min_age_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/util.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/util.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/util.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/util.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/readonly_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/readonly_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/readonly_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/readonly_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/replicas_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/replicas_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/replicas_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/replicas_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/repository_combobox_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/repository_combobox_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/repository_combobox_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/repository_combobox_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/shrink_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/shrink_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/shrink_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/shrink_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/unit_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/unit_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/unit_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/unit_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/warm_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/warm_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/warm_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/warm_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/timeline_phase_text.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/timeline_phase_text.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/timeline_phase_text.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/timeline_phase_text.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.container.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.container.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.container.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.container.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/constants.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/constants.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/constants.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/constants.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/enhanced_use_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/enhanced_use_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/enhanced_use_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/enhanced_use_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/form_errors_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/form_errors_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/form_errors_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/form_errors_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/global_fields_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/global_fields_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/global_fields_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/global_fields_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/phase_timings_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/phase_timings_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/phase_timings_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/phase_timings_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/get_default_repository.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/get_default_repository.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/get_default_repository.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/get_default_repository.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/save_policy.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/save_policy.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/save_policy.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/save_policy.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/types.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/add_policy_to_template_confirm_modal.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/add_policy_to_template_confirm_modal.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/add_policy_to_template_confirm_modal.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/add_policy_to_template_confirm_modal.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/confirm_delete.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/confirm_delete.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/confirm_delete.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/confirm_delete.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/deprecated_policy_badge.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/deprecated_policy_badge.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/deprecated_policy_badge.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/deprecated_policy_badge.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/list_action_handler.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/list_action_handler.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/list_action_handler.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/list_action_handler.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/managed_policy_badge.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/managed_policy_badge.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/managed_policy_badge.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/managed_policy_badge.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/policy_table.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/policy_table.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/policy_table.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/policy_table.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/cold_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/cold_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/cold_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/cold_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/action_description.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/action_description.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/action_description.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/action_description.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/data_allocation.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/data_allocation.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/data_allocation.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/data_allocation.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/delete_searchable_snapshot.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/delete_searchable_snapshot.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/delete_searchable_snapshot.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/delete_searchable_snapshot.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/downsample.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/downsample.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/downsample.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/downsample.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/forcemerge.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/forcemerge.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/forcemerge.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/forcemerge.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/i18n_texts.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/i18n_texts.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/i18n_texts.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/i18n_texts.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index_priority.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index_priority.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index_priority.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index_priority.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/min_age.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/min_age.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/min_age.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/min_age.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/readonly.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/readonly.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/readonly.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/readonly.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/replicas.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/replicas.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/replicas.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/replicas.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/searchable_snapshot.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/searchable_snapshot.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/searchable_snapshot.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/searchable_snapshot.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/shrink.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/shrink.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/shrink.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/shrink.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/types.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/wait_for_snapshot.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/wait_for_snapshot.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/wait_for_snapshot.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/wait_for_snapshot.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/delete_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/delete_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/delete_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/delete_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/frozen_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/frozen_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/frozen_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/frozen_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/hot_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/hot_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/hot_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/hot_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_description.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_description.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_description.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_description.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_indicator.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_indicator.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_indicator.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_indicator.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/timeline.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/timeline.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/timeline.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/timeline.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/view_policy_flyout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/view_policy_flyout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/view_policy_flyout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/view_policy_flyout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/warm_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/warm_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/warm_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/warm_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/api.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/api.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/api.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/api_errors.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/api_errors.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/api_errors.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/api_errors.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/breadcrumbs.mock.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/breadcrumbs.mock.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/breadcrumbs.mock.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/breadcrumbs.mock.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/breadcrumbs.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/breadcrumbs.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/breadcrumbs.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/http.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/http.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/http.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/http.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/navigation.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/navigation.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/navigation.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/navigation.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/notification.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/notification.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/notification.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/notification.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/ui_metric.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/ui_metric.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/ui_metric.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/ui_metric.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/add_lifecycle_confirm_modal.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/add_lifecycle_confirm_modal.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/add_lifecycle_confirm_modal.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/add_lifecycle_confirm_modal.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/remove_lifecycle_confirm_modal.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/remove_lifecycle_confirm_modal.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/remove_lifecycle_confirm_modal.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/remove_lifecycle_confirm_modal.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/index.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/index.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/extend_index_management/index.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/index.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/locator.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/locator.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/plugin.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/plugin.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/plugin.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/plugin.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/shared_imports.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/shared_imports.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/types.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/config.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/config.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/config.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/config.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/plugin.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/plugin.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/plugin.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/plugin.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/index/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/index/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_remove_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_remove_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_remove_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_remove_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_retry_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_retry_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_retry_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_retry_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/__jest__/fixtures.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/__jest__/fixtures.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/__jest__/fixtures.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/__jest__/fixtures.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/__jest__/register_list_route.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/__jest__/register_list_route.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/__jest__/register_list_route.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/__jest__/register_list_route.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/policies/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_create_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_create_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/templates/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/templates/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/services/add_base_path.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/services/add_base_path.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/services/add_base_path.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/services/add_base_path.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/services/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/services/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/services/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/services/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/services/license.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/services/license.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/shared_imports.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/shared_imports.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/shared_imports.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/types.ts diff --git a/x-pack/platform/plugins/private/index_lifecycle_management/tsconfig.json b/x-pack/platform/plugins/private/index_lifecycle_management/tsconfig.json new file mode 100644 index 0000000000000..5f061478f6a5d --- /dev/null +++ b/x-pack/platform/plugins/private/index_lifecycle_management/tsconfig.json @@ -0,0 +1,49 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__jest__/**/*", + "integration_tests/**/*", + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/licensing-plugin", + "@kbn/management-plugin", + "@kbn/features-plugin", + "@kbn/share-plugin", + // optional plugins + "@kbn/cloud-plugin", + "@kbn/usage-collection-plugin", + "@kbn/index-management-plugin", + "@kbn/home-plugin", + // required bundles + "@kbn/kibana-react-plugin", + "@kbn/test-jest-helpers", + "@kbn/core-http-browser-mocks", + "@kbn/i18n", + "@kbn/utility-types", + "@kbn/analytics", + "@kbn/es-ui-shared-plugin", + "@kbn/i18n-react", + "@kbn/core-http-browser", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/ui-theme", + "@kbn/shared-ux-link-redirect-app", + "@kbn/index-management-shared-types", + "@kbn/react-kibana-context-render", + "@kbn/unsaved-changes-prompt", + "@kbn/shared-ux-table-persist", + "@kbn/index-lifecycle-management-common-shared", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/license_api_guard/README.md b/x-pack/platform/plugins/private/license_api_guard/README.md similarity index 100% rename from x-pack/plugins/license_api_guard/README.md rename to x-pack/platform/plugins/private/license_api_guard/README.md diff --git a/x-pack/platform/plugins/private/license_api_guard/jest.config.js b/x-pack/platform/plugins/private/license_api_guard/jest.config.js new file mode 100644 index 0000000000000..875bf3730a871 --- /dev/null +++ b/x-pack/platform/plugins/private/license_api_guard/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/license_api_guard'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/license_api_guard', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/license_api_guard/server/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/license_api_guard/kibana.jsonc b/x-pack/platform/plugins/private/license_api_guard/kibana.jsonc similarity index 100% rename from x-pack/plugins/license_api_guard/kibana.jsonc rename to x-pack/platform/plugins/private/license_api_guard/kibana.jsonc diff --git a/x-pack/plugins/license_api_guard/server/index.ts b/x-pack/platform/plugins/private/license_api_guard/server/index.ts similarity index 100% rename from x-pack/plugins/license_api_guard/server/index.ts rename to x-pack/platform/plugins/private/license_api_guard/server/index.ts diff --git a/x-pack/plugins/license_api_guard/server/license.test.ts b/x-pack/platform/plugins/private/license_api_guard/server/license.test.ts similarity index 100% rename from x-pack/plugins/license_api_guard/server/license.test.ts rename to x-pack/platform/plugins/private/license_api_guard/server/license.test.ts diff --git a/x-pack/plugins/license_api_guard/server/license.ts b/x-pack/platform/plugins/private/license_api_guard/server/license.ts similarity index 100% rename from x-pack/plugins/license_api_guard/server/license.ts rename to x-pack/platform/plugins/private/license_api_guard/server/license.ts diff --git a/x-pack/plugins/license_api_guard/server/shared_imports.ts b/x-pack/platform/plugins/private/license_api_guard/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/license_api_guard/server/shared_imports.ts rename to x-pack/platform/plugins/private/license_api_guard/server/shared_imports.ts diff --git a/x-pack/platform/plugins/private/license_api_guard/tsconfig.json b/x-pack/platform/plugins/private/license_api_guard/tsconfig.json new file mode 100644 index 0000000000000..0d837f888b530 --- /dev/null +++ b/x-pack/platform/plugins/private/license_api_guard/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "server/**/*" + ], + "kbn_references": [ + "@kbn/licensing-plugin", + "@kbn/core", + "@kbn/i18n", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/painless_lab/README.md b/x-pack/platform/plugins/private/painless_lab/README.md similarity index 100% rename from x-pack/plugins/painless_lab/README.md rename to x-pack/platform/plugins/private/painless_lab/README.md diff --git a/x-pack/plugins/painless_lab/common/constants.ts b/x-pack/platform/plugins/private/painless_lab/common/constants.ts similarity index 100% rename from x-pack/plugins/painless_lab/common/constants.ts rename to x-pack/platform/plugins/private/painless_lab/common/constants.ts diff --git a/x-pack/platform/plugins/private/painless_lab/jest.config.js b/x-pack/platform/plugins/private/painless_lab/jest.config.js new file mode 100644 index 0000000000000..9121bbc4df001 --- /dev/null +++ b/x-pack/platform/plugins/private/painless_lab/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/painless_lab'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/painless_lab', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/painless_lab/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/painless_lab/kibana.jsonc b/x-pack/platform/plugins/private/painless_lab/kibana.jsonc similarity index 100% rename from x-pack/plugins/painless_lab/kibana.jsonc rename to x-pack/platform/plugins/private/painless_lab/kibana.jsonc diff --git a/x-pack/plugins/painless_lab/public/application/components/editor.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/editor.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/editor.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/editor.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/main.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/main.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/main.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/main.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/main_controls.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/main_controls.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/main_controls.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/main_controls.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/context_tab.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/context_tab.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/context_tab.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/context_tab.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/index.ts b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/index.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/index.ts diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/output_pane.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/output_pane.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/output_pane.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/output_pane.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/output_tab.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/output_tab.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/output_tab.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/output_tab.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/parameters_tab.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/parameters_tab.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/parameters_tab.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/parameters_tab.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/request_flyout.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/request_flyout.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/request_flyout.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/request_flyout.tsx diff --git a/x-pack/plugins/painless_lab/public/application/constants.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/constants.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/constants.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/constants.tsx diff --git a/x-pack/plugins/painless_lab/public/application/context/context.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/context/context.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/context/context.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/context/context.tsx diff --git a/x-pack/plugins/painless_lab/public/application/context/index.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/context/index.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/context/index.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/context/index.tsx diff --git a/x-pack/plugins/painless_lab/public/application/context/initial_payload.ts b/x-pack/platform/plugins/private/painless_lab/public/application/context/initial_payload.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/context/initial_payload.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/context/initial_payload.ts diff --git a/x-pack/plugins/painless_lab/public/application/hooks/index.ts b/x-pack/platform/plugins/private/painless_lab/public/application/hooks/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/hooks/index.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/hooks/index.ts diff --git a/x-pack/plugins/painless_lab/public/application/hooks/use_submit_code.ts b/x-pack/platform/plugins/private/painless_lab/public/application/hooks/use_submit_code.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/hooks/use_submit_code.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/hooks/use_submit_code.ts diff --git a/x-pack/plugins/painless_lab/public/application/index.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/index.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/index.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/index.tsx diff --git a/x-pack/plugins/painless_lab/public/application/lib/__snapshots__/format.test.ts.snap b/x-pack/platform/plugins/private/painless_lab/public/application/lib/__snapshots__/format.test.ts.snap similarity index 100% rename from x-pack/plugins/painless_lab/public/application/lib/__snapshots__/format.test.ts.snap rename to x-pack/platform/plugins/private/painless_lab/public/application/lib/__snapshots__/format.test.ts.snap diff --git a/x-pack/plugins/painless_lab/public/application/lib/format.test.ts b/x-pack/platform/plugins/private/painless_lab/public/application/lib/format.test.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/lib/format.test.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/lib/format.test.ts diff --git a/x-pack/plugins/painless_lab/public/application/lib/format.ts b/x-pack/platform/plugins/private/painless_lab/public/application/lib/format.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/lib/format.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/lib/format.ts diff --git a/x-pack/plugins/painless_lab/public/application/types.ts b/x-pack/platform/plugins/private/painless_lab/public/application/types.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/types.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/types.ts diff --git a/x-pack/plugins/painless_lab/public/index.scss b/x-pack/platform/plugins/private/painless_lab/public/index.scss similarity index 100% rename from x-pack/plugins/painless_lab/public/index.scss rename to x-pack/platform/plugins/private/painless_lab/public/index.scss diff --git a/x-pack/plugins/painless_lab/public/index.ts b/x-pack/platform/plugins/private/painless_lab/public/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/index.ts rename to x-pack/platform/plugins/private/painless_lab/public/index.ts diff --git a/x-pack/plugins/painless_lab/public/links.ts b/x-pack/platform/plugins/private/painless_lab/public/links.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/links.ts rename to x-pack/platform/plugins/private/painless_lab/public/links.ts diff --git a/x-pack/plugins/painless_lab/public/plugin.tsx b/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/plugin.tsx rename to x-pack/platform/plugins/private/painless_lab/public/plugin.tsx diff --git a/x-pack/plugins/painless_lab/public/shared_imports.ts b/x-pack/platform/plugins/private/painless_lab/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/shared_imports.ts rename to x-pack/platform/plugins/private/painless_lab/public/shared_imports.ts diff --git a/x-pack/platform/plugins/private/painless_lab/public/styles/_index.scss b/x-pack/platform/plugins/private/painless_lab/public/styles/_index.scss new file mode 100644 index 0000000000000..69c5c9a0c344d --- /dev/null +++ b/x-pack/platform/plugins/private/painless_lab/public/styles/_index.scss @@ -0,0 +1,47 @@ +@import '../../../../../../../src/core/public/mixins'; + +/** + * This is a very brittle way of preventing the editor and other content from disappearing + * behind the bottom bar. + */ +$bottomBarHeight: $euiSize * 3; + +.painlessLabBottomBarPlaceholder { + height: $bottomBarHeight; +} + +.painlessLabLeftPane { + padding-top: $euiSizeM; + background-color: $euiFormBackgroundColor; +} + +.painlessLabRightPane { + background-color: $euiColorEmptyShade; + padding: $euiSizeS; + border-left: $euiBorderThin; + height: 100%; +} + +.painlessLabRightPane__tabs { + display: flex; + flex-direction: column; + height: 100%; + + [role='tabpanel'] { + height: 100%; + overflow-y: auto; + } +} + +// adding dev tool top bar + bottom bar height to the body offset +// (they're both the same height, hence the x2) +$bodyOffset: $bottomBarHeight * 2; + +.painlessLabMainContainer { + @include kibanaFullBodyHeight($bodyOffset); +} + +.painlessLabPanelsContainer { + // The panels container should adopt the height of the main container + height: 100%; +} diff --git a/x-pack/plugins/painless_lab/public/types.ts b/x-pack/platform/plugins/private/painless_lab/public/types.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/types.ts rename to x-pack/platform/plugins/private/painless_lab/public/types.ts diff --git a/x-pack/plugins/painless_lab/server/index.ts b/x-pack/platform/plugins/private/painless_lab/server/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/index.ts rename to x-pack/platform/plugins/private/painless_lab/server/index.ts diff --git a/x-pack/plugins/painless_lab/server/plugin.ts b/x-pack/platform/plugins/private/painless_lab/server/plugin.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/plugin.ts rename to x-pack/platform/plugins/private/painless_lab/server/plugin.ts diff --git a/x-pack/plugins/painless_lab/server/routes/api/execute.ts b/x-pack/platform/plugins/private/painless_lab/server/routes/api/execute.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/routes/api/execute.ts rename to x-pack/platform/plugins/private/painless_lab/server/routes/api/execute.ts diff --git a/x-pack/plugins/painless_lab/server/routes/api/index.ts b/x-pack/platform/plugins/private/painless_lab/server/routes/api/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/routes/api/index.ts rename to x-pack/platform/plugins/private/painless_lab/server/routes/api/index.ts diff --git a/x-pack/plugins/painless_lab/server/services/index.ts b/x-pack/platform/plugins/private/painless_lab/server/services/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/services/index.ts rename to x-pack/platform/plugins/private/painless_lab/server/services/index.ts diff --git a/x-pack/plugins/painless_lab/server/services/license.ts b/x-pack/platform/plugins/private/painless_lab/server/services/license.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/services/license.ts rename to x-pack/platform/plugins/private/painless_lab/server/services/license.ts diff --git a/x-pack/plugins/ingest_pipelines/server/shared_imports.ts b/x-pack/platform/plugins/private/painless_lab/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/shared_imports.ts rename to x-pack/platform/plugins/private/painless_lab/server/shared_imports.ts diff --git a/x-pack/plugins/painless_lab/server/types.ts b/x-pack/platform/plugins/private/painless_lab/server/types.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/types.ts rename to x-pack/platform/plugins/private/painless_lab/server/types.ts diff --git a/x-pack/platform/plugins/private/painless_lab/tsconfig.json b/x-pack/platform/plugins/private/painless_lab/tsconfig.json new file mode 100644 index 0000000000000..5500aaa5ab492 --- /dev/null +++ b/x-pack/platform/plugins/private/painless_lab/tsconfig.json @@ -0,0 +1,28 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/dev-tools-plugin", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/licensing-plugin", + "@kbn/i18n", + "@kbn/monaco", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/code-editor", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/remote_clusters/README.md b/x-pack/platform/plugins/private/remote_clusters/README.md similarity index 100% rename from x-pack/plugins/remote_clusters/README.md rename to x-pack/platform/plugins/private/remote_clusters/README.md diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.helpers.tsx b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/remote_clusters_add.helpers.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.helpers.tsx rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/remote_clusters_add.helpers.tsx diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/special_characters.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/special_characters.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/add/special_characters.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/special_characters.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.helpers.tsx b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.helpers.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.helpers.tsx rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.helpers.tsx diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/http_requests.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/http_requests.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/http_requests.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/http_requests.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/index.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/index.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/index.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/setup_environment.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/setup_environment.tsx rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/setup_environment.tsx diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.helpers.js b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/list/remote_clusters_list.helpers.js similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.helpers.js rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/list/remote_clusters_list.helpers.js diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js diff --git a/x-pack/plugins/remote_clusters/common/constants.ts b/x-pack/platform/plugins/private/remote_clusters/common/constants.ts similarity index 100% rename from x-pack/plugins/remote_clusters/common/constants.ts rename to x-pack/platform/plugins/private/remote_clusters/common/constants.ts diff --git a/x-pack/plugins/remote_clusters/common/lib/cluster_serialization.test.ts b/x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/common/lib/cluster_serialization.test.ts rename to x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.test.ts diff --git a/x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts b/x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts similarity index 100% rename from x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts rename to x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts diff --git a/x-pack/plugins/remote_clusters/common/lib/index.ts b/x-pack/platform/plugins/private/remote_clusters/common/lib/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/common/lib/index.ts rename to x-pack/platform/plugins/private/remote_clusters/common/lib/index.ts diff --git a/x-pack/plugins/remote_clusters/fixtures/remote_cluster.js b/x-pack/platform/plugins/private/remote_clusters/fixtures/remote_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/fixtures/remote_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/fixtures/remote_cluster.js diff --git a/x-pack/platform/plugins/private/remote_clusters/jest.config.js b/x-pack/platform/plugins/private/remote_clusters/jest.config.js new file mode 100644 index 0000000000000..8f206f2ba544d --- /dev/null +++ b/x-pack/platform/plugins/private/remote_clusters/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/remote_clusters'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/remote_clusters', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/remote_clusters/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/remote_clusters/kibana.jsonc b/x-pack/platform/plugins/private/remote_clusters/kibana.jsonc similarity index 100% rename from x-pack/plugins/remote_clusters/kibana.jsonc rename to x-pack/platform/plugins/private/remote_clusters/kibana.jsonc diff --git a/x-pack/plugins/remote_clusters/public/application/_hacks.scss b/x-pack/platform/plugins/private/remote_clusters/public/application/_hacks.scss similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/_hacks.scss rename to x-pack/platform/plugins/private/remote_clusters/public/application/_hacks.scss diff --git a/x-pack/plugins/remote_clusters/public/application/app.js b/x-pack/platform/plugins/private/remote_clusters/public/application/app.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/app.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/app.js diff --git a/x-pack/plugins/remote_clusters/public/application/app_context.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/app_context.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/app_context.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/app_context.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/constants/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/constants/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/constants/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/constants/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/constants/paths.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/constants/paths.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/constants/paths.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/constants/paths.ts diff --git a/x-pack/plugins/remote_clusters/public/application/constants/ui_metric.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/constants/ui_metric.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/constants/ui_metric.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/constants/ui_metric.ts diff --git a/x-pack/plugins/remote_clusters/public/application/index.d.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/index.d.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/index.d.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/index.d.ts diff --git a/x-pack/plugins/remote_clusters/public/application/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/configured_by_node_warning/configured_by_node_warning.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/configured_by_node_warning/configured_by_node_warning.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/configured_by_node_warning/configured_by_node_warning.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/configured_by_node_warning/configured_by_node_warning.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/configured_by_node_warning/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/configured_by_node_warning/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/configured_by_node_warning/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/configured_by_node_warning/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/sniff_connection.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/sniff_connection.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/sniff_connection.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/sniff_connection.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_name.test.ts.snap b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_name.test.ts.snap similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_name.test.ts.snap rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_name.test.ts.snap diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_node_connections.test.tsx.snap b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_node_connections.test.tsx.snap similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_node_connections.test.tsx.snap rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_node_connections.test.tsx.snap diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_proxy.test.ts.snap b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_proxy.test.ts.snap similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_proxy.test.ts.snap rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_proxy.test.ts.snap diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_seeds.test.ts.snap b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_seeds.test.ts.snap similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_seeds.test.ts.snap rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_seeds.test.ts.snap diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.test.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.test.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.test.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.test.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_page_title/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_page_title/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_page_title/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_page_title/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_page_title/remote_cluster_page_title.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_page_title/remote_cluster_page_title.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_page_title/remote_cluster_page_title.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_page_title/remote_cluster_page_title.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/confirm_modal.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/confirm_modal.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/confirm_modal.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/confirm_modal.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/remote_cluster_setup_trust.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/remote_cluster_setup_trust.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/remote_cluster_setup_trust.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/remote_cluster_setup_trust.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/index.d.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/index.d.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/index.d.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/index.d.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/wizard_form.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/wizard_form.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/wizard_form.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/wizard_form.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/connection_status.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/connection_status.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/connection_status.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/connection_status.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.js diff --git a/x-pack/plugins/remote_clusters/public/application/services/api.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/api.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/api.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/api.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/api_errors.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/api_errors.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/api_errors.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/api_errors.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/breadcrumb.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/breadcrumb.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/breadcrumb.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/breadcrumb.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/documentation.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/documentation.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/documentation.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/documentation.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/http.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/http.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/http.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/http.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/notification.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/notification.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/notification.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/notification.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/redirect.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/redirect.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/redirect.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/redirect.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/routing.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/routing.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/routing.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/routing.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/ui_metric.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/ui_metric.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/ui_metric.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/ui_metric.ts diff --git a/x-pack/plugins/remote_clusters/public/application/store/action_types.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/action_types.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/action_types.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/action_types.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/add_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/add_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/add_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/add_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/detail_panel.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/detail_panel.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/detail_panel.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/detail_panel.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/edit_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/edit_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/edit_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/edit_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/load_clusters.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/load_clusters.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/load_clusters.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/load_clusters.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/refresh_clusters.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/refresh_clusters.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/refresh_clusters.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/refresh_clusters.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/remove_clusters.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/remove_clusters.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/remove_clusters.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/remove_clusters.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/index.d.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/store/index.d.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/index.d.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/index.d.ts diff --git a/x-pack/plugins/remote_clusters/public/application/store/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/middleware/detail_panel.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/middleware/detail_panel.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/middleware/detail_panel.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/middleware/detail_panel.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/middleware/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/middleware/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/middleware/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/middleware/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/add_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/add_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/add_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/add_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/clusters.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/clusters.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/clusters.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/clusters.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/detail_panel.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/detail_panel.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/detail_panel.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/detail_panel.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/edit_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/edit_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/edit_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/edit_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/remove_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/remove_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/remove_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/remove_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/selectors/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/selectors/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/selectors/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/selectors/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/store.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/store.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/store.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/store.js diff --git a/x-pack/plugins/remote_clusters/public/assets/cloud_screenshot.png b/x-pack/platform/plugins/private/remote_clusters/public/assets/cloud_screenshot.png similarity index 100% rename from x-pack/plugins/remote_clusters/public/assets/cloud_screenshot.png rename to x-pack/platform/plugins/private/remote_clusters/public/assets/cloud_screenshot.png diff --git a/x-pack/plugins/remote_clusters/public/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/index.ts diff --git a/x-pack/plugins/remote_clusters/public/locator.ts b/x-pack/platform/plugins/private/remote_clusters/public/locator.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/locator.ts rename to x-pack/platform/plugins/private/remote_clusters/public/locator.ts diff --git a/x-pack/plugins/remote_clusters/public/plugin.ts b/x-pack/platform/plugins/private/remote_clusters/public/plugin.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/plugin.ts rename to x-pack/platform/plugins/private/remote_clusters/public/plugin.ts diff --git a/x-pack/plugins/remote_clusters/public/shared_imports.ts b/x-pack/platform/plugins/private/remote_clusters/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/shared_imports.ts rename to x-pack/platform/plugins/private/remote_clusters/public/shared_imports.ts diff --git a/x-pack/plugins/remote_clusters/public/types.ts b/x-pack/platform/plugins/private/remote_clusters/public/types.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/types.ts rename to x-pack/platform/plugins/private/remote_clusters/public/types.ts diff --git a/x-pack/plugins/remote_clusters/server/config.ts b/x-pack/platform/plugins/private/remote_clusters/server/config.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/config.ts rename to x-pack/platform/plugins/private/remote_clusters/server/config.ts diff --git a/x-pack/plugins/remote_clusters/server/index.ts b/x-pack/platform/plugins/private/remote_clusters/server/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/index.ts rename to x-pack/platform/plugins/private/remote_clusters/server/index.ts diff --git a/x-pack/plugins/remote_clusters/server/lib/does_cluster_exist.ts b/x-pack/platform/plugins/private/remote_clusters/server/lib/does_cluster_exist.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/lib/does_cluster_exist.ts rename to x-pack/platform/plugins/private/remote_clusters/server/lib/does_cluster_exist.ts diff --git a/x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/index.ts b/x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/index.ts rename to x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/index.ts diff --git a/x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.test.ts diff --git a/x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.ts b/x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.ts rename to x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.ts diff --git a/x-pack/plugins/remote_clusters/server/plugin.ts b/x-pack/platform/plugins/private/remote_clusters/server/plugin.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/plugin.ts rename to x-pack/platform/plugins/private/remote_clusters/server/plugin.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.test.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/add_route.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/add_route.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.test.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/delete_route.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/delete_route.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.test.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/get_route.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/get_route.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/index.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/index.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/index.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/types.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/types.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/types.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/types.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.test.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/update_route.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/update_route.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.ts diff --git a/x-pack/plugins/license_management/server/shared_imports.ts b/x-pack/platform/plugins/private/remote_clusters/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/license_management/server/shared_imports.ts rename to x-pack/platform/plugins/private/remote_clusters/server/shared_imports.ts diff --git a/x-pack/plugins/remote_clusters/server/types.ts b/x-pack/platform/plugins/private/remote_clusters/server/types.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/types.ts rename to x-pack/platform/plugins/private/remote_clusters/server/types.ts diff --git a/x-pack/platform/plugins/private/remote_clusters/tsconfig.json b/x-pack/platform/plugins/private/remote_clusters/tsconfig.json new file mode 100644 index 0000000000000..5676db4042f49 --- /dev/null +++ b/x-pack/platform/plugins/private/remote_clusters/tsconfig.json @@ -0,0 +1,42 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__jest__/**/*", + "common/**/*", + "fixtures/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/licensing-plugin", + "@kbn/management-plugin", + "@kbn/features-plugin", + // optional plugins + "@kbn/usage-collection-plugin", + "@kbn/cloud-plugin", + // required bundles + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/test-jest-helpers", + "@kbn/core-execution-context-browser-mocks", + "@kbn/i18n", + "@kbn/utility-types", + "@kbn/share-plugin", + "@kbn/core-http-browser", + "@kbn/analytics", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/expect", + "@kbn/shared-ux-router", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/rollup/README.md b/x-pack/platform/plugins/private/rollup/README.md similarity index 100% rename from x-pack/plugins/rollup/README.md rename to x-pack/platform/plugins/private/rollup/README.md diff --git a/x-pack/plugins/rollup/common/index.ts b/x-pack/platform/plugins/private/rollup/common/index.ts similarity index 100% rename from x-pack/plugins/rollup/common/index.ts rename to x-pack/platform/plugins/private/rollup/common/index.ts diff --git a/x-pack/plugins/rollup/common/ui_metric.ts b/x-pack/platform/plugins/private/rollup/common/ui_metric.ts similarity index 100% rename from x-pack/plugins/rollup/common/ui_metric.ts rename to x-pack/platform/plugins/private/rollup/common/ui_metric.ts diff --git a/x-pack/plugins/rollup/fixtures/index.js b/x-pack/platform/plugins/private/rollup/fixtures/index.js similarity index 100% rename from x-pack/plugins/rollup/fixtures/index.js rename to x-pack/platform/plugins/private/rollup/fixtures/index.js diff --git a/x-pack/plugins/rollup/fixtures/job.js b/x-pack/platform/plugins/private/rollup/fixtures/job.js similarity index 100% rename from x-pack/plugins/rollup/fixtures/job.js rename to x-pack/platform/plugins/private/rollup/fixtures/job.js diff --git a/x-pack/platform/plugins/private/rollup/jest.config.js b/x-pack/platform/plugins/private/rollup/jest.config.js new file mode 100644 index 0000000000000..59552e8149fcc --- /dev/null +++ b/x-pack/platform/plugins/private/rollup/jest.config.js @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/rollup'], + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/rollup', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/rollup/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/rollup/kibana.jsonc b/x-pack/platform/plugins/private/rollup/kibana.jsonc similarity index 100% rename from x-pack/plugins/rollup/kibana.jsonc rename to x-pack/platform/plugins/private/rollup/kibana.jsonc diff --git a/x-pack/plugins/rollup/public/application.tsx b/x-pack/platform/plugins/private/rollup/public/application.tsx similarity index 100% rename from x-pack/plugins/rollup/public/application.tsx rename to x-pack/platform/plugins/private/rollup/public/application.tsx diff --git a/x-pack/plugins/rollup/public/crud_app/_crud_app.scss b/x-pack/platform/plugins/private/rollup/public/crud_app/_crud_app.scss similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/_crud_app.scss rename to x-pack/platform/plugins/private/rollup/public/crud_app/_crud_app.scss diff --git a/x-pack/plugins/rollup/public/crud_app/app.js b/x-pack/platform/plugins/private/rollup/public/crud_app/app.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/app.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/app.js diff --git a/x-pack/plugins/rollup/public/crud_app/constants/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/constants/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/constants/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/constants/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/constants/metrics_config.js b/x-pack/platform/plugins/private/rollup/public/crud_app/constants/metrics_config.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/constants/metrics_config.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/constants/metrics_config.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/deprecation_callout/deprecation_callout.tsx b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/deprecation_callout/deprecation_callout.tsx similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/deprecation_callout/deprecation_callout.tsx rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/deprecation_callout/deprecation_callout.tsx diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/deprecation_callout/index.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/deprecation_callout/index.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/deprecation_callout/index.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/deprecation_callout/index.ts diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/field_list/field_list.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/field_list/field_list.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/field_list/field_list.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/field_list/field_list.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/field_list/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/field_list/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/field_list/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/field_list/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/confirm_delete_modal.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/confirm_delete_modal.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/confirm_delete_modal.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/confirm_delete_modal.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/job_details.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/job_details.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/job_details.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/job_details.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_histogram.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_histogram.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_histogram.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_histogram.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_metrics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_metrics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_metrics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_metrics.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_request.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_request.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_request.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_request.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_summary.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_summary.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_summary.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_summary.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_terms.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_terms.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_terms.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_terms.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_status/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_status/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_status/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_status/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_status/job_status.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_status/job_status.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_status/job_status.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_status/job_status.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/job_create.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/job_create.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/job_create.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/job_create.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/navigation/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/navigation/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/navigation/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/navigation/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/navigation/navigation.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/navigation/navigation.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/navigation/navigation.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/navigation/navigation.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/field_chooser.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/field_chooser.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/field_chooser.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/field_chooser.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/step_error.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/step_error.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/step_error.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/step_error.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_date_histogram.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_date_histogram.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_date_histogram.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_date_histogram.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_histogram.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_histogram.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_histogram.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_histogram.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_logistics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_logistics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_logistics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_logistics.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_metrics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_metrics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_metrics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_metrics.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_review.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_review.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_review.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_review.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_terms.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_terms.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_terms.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_terms.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_field.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_field.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_field.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_field.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_interval.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_interval.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_interval.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_interval.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_histogram_interval.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_histogram_interval.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_histogram_interval.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_histogram_interval.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_id.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_id.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_id.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_id.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_index_pattern.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_index_pattern.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_index_pattern.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_index_pattern.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_metrics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_metrics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_metrics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_metrics.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_cron.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_cron.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_cron.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_cron.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_delay.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_delay.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_delay.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_delay.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_page_size.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_page_size.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_page_size.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_page_size.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/deprecated_prompt.tsx b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/deprecated_prompt.tsx similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/deprecated_prompt.tsx rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/deprecated_prompt.tsx diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.test.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.test.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.test.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.test.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.test.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.test.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.test.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.test.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.test.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.test.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.test.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.test.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/api.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/api.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/api.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/api.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/api_errors.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/services/api_errors.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/api_errors.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/api_errors.ts diff --git a/x-pack/plugins/rollup/public/crud_app/services/breadcrumbs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/breadcrumbs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/breadcrumbs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/breadcrumbs.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/documentation_links.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/services/documentation_links.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/documentation_links.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/documentation_links.ts diff --git a/x-pack/plugins/rollup/public/crud_app/services/filter_items.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/filter_items.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/filter_items.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/filter_items.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/flatten_panel_tree.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/flatten_panel_tree.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/flatten_panel_tree.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/flatten_panel_tree.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/format_fields.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/format_fields.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/format_fields.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/format_fields.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/http_provider.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/services/http_provider.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/http_provider.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/http_provider.ts diff --git a/x-pack/plugins/rollup/public/crud_app/services/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/noticeable_delay.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/noticeable_delay.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/noticeable_delay.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/noticeable_delay.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/retype_metrics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/retype_metrics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/retype_metrics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/retype_metrics.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/routing.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/routing.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/routing.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/routing.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/sort_table.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/sort_table.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/sort_table.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/sort_table.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/track_ui_metric.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/services/track_ui_metric.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/track_ui_metric.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/track_ui_metric.ts diff --git a/x-pack/plugins/rollup/public/crud_app/store/action_types.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/action_types.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/action_types.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/action_types.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/change_job_status.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/change_job_status.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/change_job_status.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/change_job_status.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/clone_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/clone_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/clone_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/clone_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/create_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/create_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/create_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/create_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/delete_jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/delete_jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/delete_jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/delete_jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/detail_panel.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/detail_panel.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/detail_panel.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/detail_panel.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/load_jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/load_jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/load_jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/load_jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/refresh_jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/refresh_jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/refresh_jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/refresh_jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/table_state.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/table_state.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/table_state.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/table_state.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/middleware/clone_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/clone_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/middleware/clone_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/clone_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/middleware/detail_panel.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/detail_panel.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/middleware/detail_panel.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/detail_panel.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/middleware/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/middleware/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/clone_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/clone_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/clone_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/clone_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/create_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/create_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/create_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/create_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/detail_panel.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/detail_panel.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/detail_panel.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/detail_panel.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/table_state.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/table_state.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/table_state.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/table_state.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/update_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/update_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/update_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/update_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/selectors/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/selectors/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/selectors/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/selectors/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/store.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/store.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/store.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/store.js diff --git a/x-pack/plugins/rollup/public/extend_index_management/index.ts b/x-pack/platform/plugins/private/rollup/public/extend_index_management/index.ts similarity index 100% rename from x-pack/plugins/rollup/public/extend_index_management/index.ts rename to x-pack/platform/plugins/private/rollup/public/extend_index_management/index.ts diff --git a/x-pack/plugins/rollup/public/index.scss b/x-pack/platform/plugins/private/rollup/public/index.scss similarity index 100% rename from x-pack/plugins/rollup/public/index.scss rename to x-pack/platform/plugins/private/rollup/public/index.scss diff --git a/x-pack/plugins/rollup/public/index.ts b/x-pack/platform/plugins/private/rollup/public/index.ts similarity index 100% rename from x-pack/plugins/rollup/public/index.ts rename to x-pack/platform/plugins/private/rollup/public/index.ts diff --git a/x-pack/plugins/rollup/public/kibana_services.ts b/x-pack/platform/plugins/private/rollup/public/kibana_services.ts similarity index 100% rename from x-pack/plugins/rollup/public/kibana_services.ts rename to x-pack/platform/plugins/private/rollup/public/kibana_services.ts diff --git a/x-pack/plugins/rollup/public/plugin.ts b/x-pack/platform/plugins/private/rollup/public/plugin.ts similarity index 100% rename from x-pack/plugins/rollup/public/plugin.ts rename to x-pack/platform/plugins/private/rollup/public/plugin.ts diff --git a/x-pack/plugins/rollup/public/shared_imports.ts b/x-pack/platform/plugins/private/rollup/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/rollup/public/shared_imports.ts rename to x-pack/platform/plugins/private/rollup/public/shared_imports.ts diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/constants.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/constants.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/constants.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/constants.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/index.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/index.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/index.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/index.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/jest.mocks.tsx b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/jest.mocks.tsx similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/jest.mocks.tsx rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/jest.mocks.tsx diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/job_clone.helpers.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_clone.helpers.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/job_clone.helpers.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_clone.helpers.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/job_create.helpers.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_create.helpers.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/job_create.helpers.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_create.helpers.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/job_list.helpers.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_list.helpers.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/job_list.helpers.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_list.helpers.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/setup_context.tsx b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/setup_context.tsx similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/setup_context.tsx rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/setup_context.tsx diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/setup_environment.ts b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/setup_environment.ts similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/setup_environment.ts rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/setup_environment.ts diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_clone.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_clone.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_clone.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_clone.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_date_histogram.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_date_histogram.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_date_histogram.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_date_histogram.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_histogram.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_histogram.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_histogram.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_histogram.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_logistics.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_logistics.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_logistics.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_logistics.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_metrics.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_metrics.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_metrics.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_metrics.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_review.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_review.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_review.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_review.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_terms.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_terms.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_terms.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_terms.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_list.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_list.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_list.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_list.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_list_clone.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_list_clone.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_list_clone.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_list_clone.test.js diff --git a/x-pack/plugins/rollup/public/types.ts b/x-pack/platform/plugins/private/rollup/public/types.ts similarity index 100% rename from x-pack/plugins/rollup/public/types.ts rename to x-pack/platform/plugins/private/rollup/public/types.ts diff --git a/x-pack/plugins/rollup/server/collectors/helpers.test.ts b/x-pack/platform/plugins/private/rollup/server/collectors/helpers.test.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/helpers.test.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/helpers.test.ts diff --git a/x-pack/plugins/rollup/server/collectors/helpers.ts b/x-pack/platform/plugins/private/rollup/server/collectors/helpers.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/helpers.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/helpers.ts diff --git a/x-pack/plugins/rollup/server/collectors/index.ts b/x-pack/platform/plugins/private/rollup/server/collectors/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/index.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/index.ts diff --git a/x-pack/plugins/rollup/server/collectors/register.test.ts b/x-pack/platform/plugins/private/rollup/server/collectors/register.test.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/register.test.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/register.test.ts diff --git a/x-pack/plugins/rollup/server/collectors/register.ts b/x-pack/platform/plugins/private/rollup/server/collectors/register.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/register.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/register.ts diff --git a/x-pack/plugins/rollup/server/config.ts b/x-pack/platform/plugins/private/rollup/server/config.ts similarity index 100% rename from x-pack/plugins/rollup/server/config.ts rename to x-pack/platform/plugins/private/rollup/server/config.ts diff --git a/x-pack/plugins/rollup/server/index.ts b/x-pack/platform/plugins/private/rollup/server/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/index.ts rename to x-pack/platform/plugins/private/rollup/server/index.ts diff --git a/x-pack/plugins/rollup/server/lib/format_es_error.ts b/x-pack/platform/plugins/private/rollup/server/lib/format_es_error.ts similarity index 100% rename from x-pack/plugins/rollup/server/lib/format_es_error.ts rename to x-pack/platform/plugins/private/rollup/server/lib/format_es_error.ts diff --git a/x-pack/plugins/rollup/server/plugin.ts b/x-pack/platform/plugins/private/rollup/server/plugin.ts similarity index 100% rename from x-pack/plugins/rollup/server/plugin.ts rename to x-pack/platform/plugins/private/rollup/server/plugin.ts diff --git a/x-pack/plugins/rollup/server/rollup_data_enricher.ts b/x-pack/platform/plugins/private/rollup/server/rollup_data_enricher.ts similarity index 100% rename from x-pack/plugins/rollup/server/rollup_data_enricher.ts rename to x-pack/platform/plugins/private/rollup/server/rollup_data_enricher.ts diff --git a/x-pack/plugins/rollup/server/routes/api/indices/index.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/indices/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/indices/index.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/indices/index.ts diff --git a/x-pack/plugins/rollup/server/routes/api/indices/register_get_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_get_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/indices/register_get_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_get_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/index.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/index.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/index.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_create_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_create_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_create_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_create_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_delete_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_delete_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_delete_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_delete_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_get_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_get_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_get_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_get_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_start_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_start_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_start_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_start_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_stop_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_stop_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_stop_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_stop_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/search/index.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/search/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/search/index.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/search/index.ts diff --git a/x-pack/plugins/rollup/server/routes/api/search/register_search_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/search/register_search_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/search/register_search_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/search/register_search_route.ts diff --git a/x-pack/plugins/rollup/server/routes/index.ts b/x-pack/platform/plugins/private/rollup/server/routes/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/index.ts rename to x-pack/platform/plugins/private/rollup/server/routes/index.ts diff --git a/x-pack/plugins/rollup/server/services/add_base_path.ts b/x-pack/platform/plugins/private/rollup/server/services/add_base_path.ts similarity index 100% rename from x-pack/plugins/rollup/server/services/add_base_path.ts rename to x-pack/platform/plugins/private/rollup/server/services/add_base_path.ts diff --git a/x-pack/plugins/rollup/server/services/index.ts b/x-pack/platform/plugins/private/rollup/server/services/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/services/index.ts rename to x-pack/platform/plugins/private/rollup/server/services/index.ts diff --git a/x-pack/plugins/rollup/server/services/license.ts b/x-pack/platform/plugins/private/rollup/server/services/license.ts similarity index 100% rename from x-pack/plugins/rollup/server/services/license.ts rename to x-pack/platform/plugins/private/rollup/server/services/license.ts diff --git a/x-pack/plugins/rollup/server/shared_imports.ts b/x-pack/platform/plugins/private/rollup/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/rollup/server/shared_imports.ts rename to x-pack/platform/plugins/private/rollup/server/shared_imports.ts diff --git a/x-pack/plugins/rollup/server/types.ts b/x-pack/platform/plugins/private/rollup/server/types.ts similarity index 100% rename from x-pack/plugins/rollup/server/types.ts rename to x-pack/platform/plugins/private/rollup/server/types.ts diff --git a/x-pack/platform/plugins/private/rollup/tsconfig.json b/x-pack/platform/plugins/private/rollup/tsconfig.json new file mode 100644 index 0000000000000..38d87b951a44d --- /dev/null +++ b/x-pack/platform/plugins/private/rollup/tsconfig.json @@ -0,0 +1,42 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "fixtures/**/*", + "public/**/*", + "server/**/*", + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/management-plugin", + "@kbn/licensing-plugin", + "@kbn/features-plugin", + // optional plugins + "@kbn/home-plugin", + "@kbn/index-management-plugin", + "@kbn/usage-collection-plugin", + // required bundles + "@kbn/kibana-utils-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/data-plugin", + "@kbn/test-jest-helpers", + "@kbn/analytics", + "@kbn/i18n", + "@kbn/core-http-browser", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/data-views-plugin", + "@kbn/react-kibana-context-render", + "@kbn/rollup", + + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/plugins/private/runtime_fields/README.md b/x-pack/platform/plugins/private/runtime_fields/README.md new file mode 100644 index 0000000000000..c4e657fdb3b44 --- /dev/null +++ b/x-pack/platform/plugins/private/runtime_fields/README.md @@ -0,0 +1,239 @@ +# Runtime fields + +Welcome to the home of the runtime field editor and everything related to runtime fields! + +## The runtime field editor + +### Integration + +The recommended way to integrate the runtime fields editor is by adding a plugin dependency to the `"runtimeFields"` x-pack plugin. This way you will be able to lazy load the editor when it is required and it will not increment the bundle size of your plugin. + +```js +// 1. Add the plugin as a dependency in your kibana.json +{ + ... + "requiredBundles": [ + "runtimeFields", + ... + ] +} + +// 2. Access it in your plugin setup() +export class MyPlugin { + setup(core, { runtimeFields }) { + // logic to provide it to your app, probably through context + } +} + +// 3. Load the editor and open it anywhere in your app +const MyComponent = () => { + // Access the plugin through context + const { runtimeFields } = useAppPlugins(); + + // Ref of the handler to close the editor + const closeRuntimeFieldEditor = useRef(() => {}); + + const saveRuntimeField = (field: RuntimeField) => { + // Do something with the field + // See interface returned in @returns section below + }; + + const openRuntimeFieldsEditor = async() => { + // Lazy load the editor + const { openEditor } = await runtimeFields.loadEditor(); + + closeRuntimeFieldEditor.current = openEditor({ + onSave: saveRuntimeField, + /* defaultValue: optional field to edit */ + /* ctx: Context -- see section below */ + }); + }; + + useEffect(() => { + return () => { + // Make sure to remove the editor when the component unmounts + closeRuntimeFieldEditor.current(); + }; + }, []); + + return ( + <button onClick={openRuntimeFieldsEditor}>Add field</button> + ) +} +``` + +#### `@returns` + +You get back a `RuntimeField` object with the following interface + +```ts +interface RuntimeField { + name: string; + type: RuntimeType; // 'long' | 'boolean' ... + script: { + source: string; + }; +} +``` + +#### Context object + +You can provide a context object to the runtime field editor. It has the following interface + +```ts +interface Context { + /** An array of field name not allowed. You would probably provide an array of existing runtime fields + * to prevent the user creating a field with the same name. + */ + namesNotAllowed?: string[]; + /** + * An array of existing concrete fields. If the user gives a name to the runtime + * field that matches one of the concrete fields, a callout will be displayed + * to indicate that this runtime field will shadow the concrete field. + * This array is also used to provide the list of field autocomplete suggestions to the code editor + */ + existingConcreteFields?: Array<{ + name: string; + type: string; + }>; +} +``` + +#### Other type of integration + +The runtime field editor is also exported as static React component that you can import into your components. The editor is exported in 2 flavours: + +- As the content of a `<EuiFlyout />` (it contains a flyout header and footer) +- As a standalone component that you can inline anywhere + +**Note:** The runtime field editor uses the `<CodeEditor />` that has a dependency on the `Provider` from the `"kibana_react"` plugin. If your app is not already wrapped by this provider you will need to add it at least around the runtime field editor. You can see an example in the ["Using the core.overlays.openFlyout()"](#using-the-coreoverlaysopenflyout) example below. + +### Content of a `<EuiFlyout />` + +```js +import React, { useState } from 'react'; +import { EuiFlyoutBody, EuiButton } from '@elastic/eui'; +import { RuntimeFieldEditorFlyoutContent, RuntimeField } from '../runtime_fields/public'; + +const MyComponent = () => { + const { docLinksStart } = useCoreContext(); // access the core start service + const [isFlyoutVisilbe, setIsFlyoutVisible] = useState(false); + + const saveRuntimeField = useCallback((field: RuntimeField) => { + // Do something with the field + }, []); + + return ( + <> + <EuiButton onClick={() => setIsFlyoutVisible(true)}>Create field</EuiButton> + + {isFlyoutVisible && ( + <EuiFlyout onClose={() => setIsFlyoutVisible(false)}> + <RuntimeFieldEditorFlyoutContent + onSave={saveRuntimeField} + onCancel={() => setIsFlyoutVisible(false)} + docLinks={docLinksStart} + defaultValue={/*optional runtime field to edit*/} + ctx={/*optional context object -- see section above*/} + /> + </EuiFlyout> + )} + </> + ) +} +``` + +#### Using the `core.overlays.openFlyout()` + +As an alternative you can open the flyout with the `openFlyout()` helper from core. + +```js +import React, { useRef } from 'react'; +import { EuiButton } from '@elastic/eui'; +import { OverlayRef } from 'src/core/public'; + +import { createKibanaReactContext, toMountPoint } from '../../../../src/plugins/kibana_react/public'; +import { RuntimeFieldEditorFlyoutContent, RuntimeField } from '../runtime_fields/public'; + +const MyComponent = () => { + // Access the core start service + const { docLinksStart, theme, overlays, uiSettings } = useCoreContext(); + const flyoutEditor = useRef<OverlayRef | null>(null); + + const { openFlyout } = overlays; + + const saveRuntimeField = useCallback((field: RuntimeField) => { + // Do something with the field + }, []); + + const openRuntimeFieldEditor = useCallback(() => { + const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ uiSettings }); + + flyoutEditor.current = openFlyout( + toMountPoint( + <KibanaReactContextProvider> + <RuntimeFieldEditorFlyoutContent + onSave={saveRuntimeField} + onCancel={() => flyoutEditor.current?.close()} + docLinks={docLinksStart} + defaultValue={defaultRuntimeField} + ctx={/*optional context object -- see section above*/} + /> + </KibanaReactContextProvider>, + { theme$: theme.theme$ } + ) + ); + }, [openFlyout, saveRuntimeField, uiSettings]); + + return ( + <> + <EuiButton onClick={openRuntimeFieldEditor}>Create field</EuiButton> + </> + ) +} +``` + +### Standalone component + +```js +import React, { useState } from 'react'; +import { EuiButton, EuiSpacer } from '@elastic/eui'; +import { RuntimeFieldEditor, RuntimeField, RuntimeFieldFormState } from '../runtime_fields/public'; + +const MyComponent = () => { + const { docLinksStart } = useCoreContext(); // access the core start service + const [runtimeFieldFormState, setRuntimeFieldFormState] = useState<RuntimeFieldFormState>({ + isSubmitted: false, + isValid: undefined, + submit: async() => Promise.resolve({ isValid: false, data: {} as RuntimeField }) + }); + + const { submit, isValid: isFormValid, isSubmitted } = runtimeFieldFormState; + + const saveRuntimeField = useCallback(async () => { + const { isValid, data } = await submit(); + if (isValid) { + // Do something with the field (data) + } + }, [submit]); + + return ( + <> + <RuntimeFieldEditor + onChange={setRuntimeFieldFormState} + docLinks={docLinksStart} + defaultValue={/*optional runtime field to edit*/} + ctx={/*optional context object -- see section above*/} + /> + + <EuiSpacer /> + + <EuiButton + onClick={saveRuntimeField} + disabled={isSubmitted && !isFormValid}> + Save field + </EuiButton> + </> + ) +} +``` diff --git a/x-pack/platform/plugins/private/runtime_fields/jest.config.js b/x-pack/platform/plugins/private/runtime_fields/jest.config.js new file mode 100644 index 0000000000000..b31a02448f969 --- /dev/null +++ b/x-pack/platform/plugins/private/runtime_fields/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/runtime_fields'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/runtime_fields', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/runtime_fields/public/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/runtime_fields/kibana.jsonc b/x-pack/platform/plugins/private/runtime_fields/kibana.jsonc similarity index 100% rename from x-pack/plugins/runtime_fields/kibana.jsonc rename to x-pack/platform/plugins/private/runtime_fields/kibana.jsonc diff --git a/x-pack/plugins/runtime_fields/public/__jest__/setup_environment.tsx b/x-pack/platform/plugins/private/runtime_fields/public/__jest__/setup_environment.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/__jest__/setup_environment.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/__jest__/setup_environment.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/index.ts diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/index.ts diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.test.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.test.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.test.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.test.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/index.ts diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.test.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.test.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.test.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.test.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_form/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_form/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/index.ts diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.test.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.test.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.test.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.test.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_form/schema.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/schema.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_form/schema.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/schema.ts diff --git a/x-pack/plugins/runtime_fields/public/constants.ts b/x-pack/platform/plugins/private/runtime_fields/public/constants.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/constants.ts rename to x-pack/platform/plugins/private/runtime_fields/public/constants.ts diff --git a/x-pack/plugins/runtime_fields/public/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/index.ts diff --git a/x-pack/plugins/runtime_fields/public/lib/documentation.ts b/x-pack/platform/plugins/private/runtime_fields/public/lib/documentation.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/lib/documentation.ts rename to x-pack/platform/plugins/private/runtime_fields/public/lib/documentation.ts diff --git a/x-pack/plugins/runtime_fields/public/lib/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/lib/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/lib/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/lib/index.ts diff --git a/x-pack/plugins/runtime_fields/public/load_editor.tsx b/x-pack/platform/plugins/private/runtime_fields/public/load_editor.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/load_editor.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/load_editor.tsx diff --git a/x-pack/plugins/runtime_fields/public/plugin.test.ts b/x-pack/platform/plugins/private/runtime_fields/public/plugin.test.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/plugin.test.ts rename to x-pack/platform/plugins/private/runtime_fields/public/plugin.test.ts diff --git a/x-pack/plugins/runtime_fields/public/plugin.ts b/x-pack/platform/plugins/private/runtime_fields/public/plugin.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/plugin.ts rename to x-pack/platform/plugins/private/runtime_fields/public/plugin.ts diff --git a/x-pack/plugins/runtime_fields/public/shared_imports.ts b/x-pack/platform/plugins/private/runtime_fields/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/shared_imports.ts rename to x-pack/platform/plugins/private/runtime_fields/public/shared_imports.ts diff --git a/x-pack/plugins/runtime_fields/public/test_utils.ts b/x-pack/platform/plugins/private/runtime_fields/public/test_utils.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/test_utils.ts rename to x-pack/platform/plugins/private/runtime_fields/public/test_utils.ts diff --git a/x-pack/plugins/runtime_fields/public/types.ts b/x-pack/platform/plugins/private/runtime_fields/public/types.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/types.ts rename to x-pack/platform/plugins/private/runtime_fields/public/types.ts diff --git a/x-pack/platform/plugins/private/runtime_fields/tsconfig.json b/x-pack/platform/plugins/private/runtime_fields/tsconfig.json new file mode 100644 index 0000000000000..1dd95411649aa --- /dev/null +++ b/x-pack/platform/plugins/private/runtime_fields/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "public/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/es-ui-shared-plugin", + "@kbn/kibana-react-plugin", + "@kbn/test-jest-helpers", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/monaco", + "@kbn/code-editor", + "@kbn/code-editor-mock", + "@kbn/react-kibana-mount", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/snapshot_restore/README.md b/x-pack/platform/plugins/private/snapshot_restore/README.md similarity index 100% rename from x-pack/plugins/snapshot_restore/README.md rename to x-pack/platform/plugins/private/snapshot_restore/README.md diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/constant.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/constant.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/constant.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/constant.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/home.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/home.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/home.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/home.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/http_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/http_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/http_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/http_requests.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/index.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/index.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/mocks.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/mocks.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/mocks.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/mocks.tsx diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_add.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_add.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_add.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_add.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_edit.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_edit.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_edit.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_edit.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_form.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_form.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_form.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_form.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_list.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_list.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_list.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_list.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/repository_add.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/repository_add.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/repository_add.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/repository_add.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/repository_edit.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/repository_edit.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/repository_edit.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/repository_edit.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/restore_snapshot.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/restore_snapshot.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/restore_snapshot.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/restore_snapshot.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/setup_environment.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/setup_environment.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/setup_environment.tsx diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/snapshot_list.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/snapshot_list.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/snapshot_list.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/snapshot_list.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/home.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/home.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/home.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/home.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_add.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_add.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_add.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_add.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_edit.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_edit.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_edit.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_edit.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_list.test.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_list.test.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_list.test.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_list.test.tsx diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/repository_add.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/repository_add.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/repository_add.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/repository_add.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/repository_edit.test.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/repository_edit.test.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/repository_edit.test.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/repository_edit.test.tsx diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/restore_snapshot.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/restore_snapshot.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/restore_snapshot.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/restore_snapshot.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/snapshot_list.test.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/snapshot_list.test.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/snapshot_list.test.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/snapshot_list.test.tsx diff --git a/x-pack/plugins/snapshot_restore/common/constants.ts b/x-pack/platform/plugins/private/snapshot_restore/common/constants.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/constants.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/constants.ts diff --git a/x-pack/platform/plugins/private/snapshot_restore/common/index.ts b/x-pack/platform/plugins/private/snapshot_restore/common/index.ts new file mode 100644 index 0000000000000..4607eb0da935f --- /dev/null +++ b/x-pack/platform/plugins/private/snapshot_restore/common/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// TODO: https://github.com/elastic/kibana/issues/110892 + +export * from './constants'; diff --git a/x-pack/plugins/snapshot_restore/common/lib/flatten.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/flatten.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/flatten.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/flatten.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/flatten.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/flatten.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/flatten.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/flatten.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/index.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/index.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/is_data_stream_backing_index.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/is_data_stream_backing_index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/is_data_stream_backing_index.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/is_data_stream_backing_index.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/policy_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/policy_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/policy_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/policy_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/policy_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/policy_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/policy_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/policy_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/restore_settings_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/restore_settings_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/restore_settings_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/restore_settings_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/restore_settings_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/restore_settings_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/restore_settings_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/restore_settings_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/snapshot_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/snapshot_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/snapshot_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/snapshot_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/snapshot_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/snapshot_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/snapshot_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/snapshot_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/time_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/time_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/time_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/time_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/time_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/time_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/time_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/time_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/utils.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/utils.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/utils.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/utils.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/index.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/index.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/indices.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/indices.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/indices.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/indices.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/policy.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/policy.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/policy.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/policy.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/repository.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/repository.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/repository.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/repository.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/restore.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/restore.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/restore.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/restore.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/snapshot.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/snapshot.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/snapshot.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/snapshot.ts diff --git a/x-pack/platform/plugins/private/snapshot_restore/jest.config.js b/x-pack/platform/plugins/private/snapshot_restore/jest.config.js new file mode 100644 index 0000000000000..6708784cd706d --- /dev/null +++ b/x-pack/platform/plugins/private/snapshot_restore/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/snapshot_restore'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/snapshot_restore', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/snapshot_restore/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/snapshot_restore/kibana.jsonc b/x-pack/platform/plugins/private/snapshot_restore/kibana.jsonc similarity index 100% rename from x-pack/plugins/snapshot_restore/kibana.jsonc rename to x-pack/platform/plugins/private/snapshot_restore/kibana.jsonc diff --git a/x-pack/plugins/snapshot_restore/public/application/app.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/app.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/app.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/app.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/app_context.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/app_context.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/app_context.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/app_context.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/app_providers.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/app_providers.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/app_providers.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/app_providers.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_data_streams_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_data_streams_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_data_streams_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_data_streams_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_feature_states.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_feature_states.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_feature_states.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_feature_states.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.test.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.test.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/data_placeholder.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/data_placeholder.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/data_placeholder.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/data_placeholder.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/data_stream_badge.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/data_stream_badge.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/data_stream_badge.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/data_stream_badge.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/disable_tooltip.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/disable_tooltip.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/disable_tooltip.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/disable_tooltip.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/feature_states_form_field/feature_states_form_field.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/feature_states_form_field/feature_states_form_field.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/feature_states_form_field/feature_states_form_field.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/feature_states_form_field/feature_states_form_field.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/feature_states_form_field/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/feature_states_form_field/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/feature_states_form_field/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/feature_states_form_field/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/formatted_date_time.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/formatted_date_time.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/formatted_date_time.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/formatted_date_time.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/lib/helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/lib/helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/lib/helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/lib/helpers.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/lib/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/lib/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/lib/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/lib/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/loading.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/loading.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/loading.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/loading.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_delete_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_delete_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_delete_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_delete_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_execute_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_execute_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_execute_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_execute_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/_policy_form.scss b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/_policy_form.scss similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/_policy_form.scss rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/_policy_form.scss diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/navigation.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/navigation.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/navigation.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/navigation.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/policy_form.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/policy_form.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/policy_form.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/policy_form.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_logistics.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_logistics.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_logistics.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_logistics.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_retention.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_retention.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_retention.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_retention.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_review.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_review.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_review.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_review.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/include_feature_states_field.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/include_feature_states_field.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/include_feature_states_field.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/include_feature_states_field.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/include_global_state_field.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/include_global_state_field.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/include_global_state_field.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/include_global_state_field.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/data_streams_and_indices_list_help_text.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/data_streams_and_indices_list_help_text.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/data_streams_and_indices_list_help_text.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/data_streams_and_indices_list_help_text.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.test.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.test.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/step_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/step_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/step_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/step_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_delete_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_delete_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_delete_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_delete_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/repository_form.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/repository_form.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/repository_form.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/repository_form.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/step_one.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/step_one.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/step_one.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/step_one.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/step_two.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/step_two.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/step_two.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/step_two.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/azure_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/azure_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/azure_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/azure_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/chunk_size.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/chunk_size.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/chunk_size.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/chunk_size.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/max_restore.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/max_restore.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/max_restore.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/max_restore.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/max_snapshots.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/max_snapshots.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/max_snapshots.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/max_snapshots.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/fs_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/fs_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/fs_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/fs_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/gcs_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/gcs_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/gcs_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/gcs_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/index.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/index.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/index.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/index.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/readonly_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/readonly_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/readonly_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/readonly_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/s3_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/s3_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/s3_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/s3_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_type_logo.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_type_logo.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_type_logo.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_type_logo.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_verification_badge.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_verification_badge.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_verification_badge.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_verification_badge.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/navigation.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/navigation.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/navigation.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/navigation.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/restore_snapshot_form.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/restore_snapshot_form.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/restore_snapshot_form.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/restore_snapshot_form.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_and_indices_list_help_text.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_and_indices_list_help_text.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_and_indices_list_help_text.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_and_indices_list_help_text.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_global_state_call_out.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_global_state_call_out.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_global_state_call_out.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_global_state_call_out.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/step_logistics.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/step_logistics.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/step_logistics.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/step_logistics.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/system_indices_overwritten_callout.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/system_indices_overwritten_callout.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/system_indices_overwritten_callout.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/system_indices_overwritten_callout.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/retention_execute_modal_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/retention_execute_modal_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/retention_execute_modal_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/retention_execute_modal_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/retention_update_modal_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/retention_update_modal_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/retention_update_modal_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/retention_update_modal_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/snapshot_delete_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/snapshot_delete_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/snapshot_delete_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/snapshot_delete_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/policies/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/policies/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/policies/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/policies/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/policies/policy_feature_states_summary.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/policies/policy_feature_states_summary.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/policies/policy_feature_states_summary.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/policies/policy_feature_states_summary.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/snapshots/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/snapshots/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/snapshots/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/snapshots/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/snapshots/snapshot_feature_states_summary.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/snapshots/snapshot_feature_states_summary.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/snapshots/snapshot_feature_states_summary.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/snapshots/snapshot_feature_states_summary.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/constants/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/constants/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/constants/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/constants/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/index.scss b/x-pack/platform/plugins/private/snapshot_restore/public/application/index.scss similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/index.scss rename to x-pack/platform/plugins/private/snapshot_restore/public/application/index.scss diff --git a/x-pack/plugins/snapshot_restore/public/application/index.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/index.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/index.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/index.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/attempt_to_uri_decode.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/attempt_to_uri_decode.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/attempt_to_uri_decode.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/attempt_to_uri_decode.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/snapshot_list_params.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/snapshot_list_params.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/snapshot_list_params.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/snapshot_list_params.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/type_to_doc_url.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/type_to_doc_url.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/type_to_doc_url.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/type_to_doc_url.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/use_decoded_params.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/use_decoded_params.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/use_decoded_params.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/use_decoded_params.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/mount_management_section.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/mount_management_section.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/mount_management_section.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/mount_management_section.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/_home.scss b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/_home.scss similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/_home.scss rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/_home.scss diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/home.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/home.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/home.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/home.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/policy_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/policy_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/policy_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/policy_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_summary.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_summary.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_summary.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_summary.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_table/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_table/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/repository_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/repository_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/repository_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/repository_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/azure_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/azure_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/azure_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/azure_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/fs_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/fs_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/fs_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/fs_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/gcs_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/gcs_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/gcs_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/gcs_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/hdfs_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/hdfs_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/hdfs_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/hdfs_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/index.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/index.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/index.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/index.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/readonly_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/readonly_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/readonly_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/readonly_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/s3_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/s3_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/s3_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/s3_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_table/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_table/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_table/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_table/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_table/repository_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_table/repository_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_table/repository_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_table/repository_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/shards_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/shards_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/shards_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/shards_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_empty_prompt.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_empty_prompt.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_empty_prompt.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_empty_prompt.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_error.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_error.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_error.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_error.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_empty_prompt.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_empty_prompt.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_empty_prompt.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_empty_prompt.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_search_bar.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_search_bar.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_search_bar.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_search_bar.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/snapshot_state.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/snapshot_state.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/snapshot_state.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/snapshot_state.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_failures.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_failures.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_failures.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_failures.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_summary.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_summary.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_summary.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_summary.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/policy_add/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_add/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/policy_add/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_add/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/policy_add/policy_add.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_add/policy_add.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/policy_add/policy_add.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_add/policy_add.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/policy_edit/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_edit/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/policy_edit/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_edit/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/policy_edit/policy_edit.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_edit/policy_edit.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/policy_edit/policy_edit.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_edit/policy_edit.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/repository_add/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_add/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/repository_add/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_add/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/repository_add/repository_add.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_add/repository_add.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/repository_add/repository_add.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_add/repository_add.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/repository_edit/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_edit/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/repository_edit/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_edit/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/repository_edit/repository_edit.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_edit/repository_edit.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/repository_edit/repository_edit.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_edit/repository_edit.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/restore_snapshot/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/restore_snapshot/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/restore_snapshot/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/restore_snapshot/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/restore_snapshot/restore_snapshot.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/restore_snapshot/restore_snapshot.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/restore_snapshot/restore_snapshot.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/restore_snapshot/restore_snapshot.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/http.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/http.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/http.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/http.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/policy_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/policy_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/policy_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/policy_requests.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/repository_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/repository_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/repository_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/repository_requests.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/restore_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/restore_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/restore_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/restore_requests.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/snapshot_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/snapshot_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/snapshot_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/snapshot_requests.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/use_request.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/use_request.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/use_request.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/use_request.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/navigation/breadcrumb.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/breadcrumb.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/navigation/breadcrumb.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/breadcrumb.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/navigation/doc_title.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/doc_title.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/navigation/doc_title.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/doc_title.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/navigation/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/navigation/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/navigation/links.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/links.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/navigation/links.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/links.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/text/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/text/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/text/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/text/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/text/text.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/text/text.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/text/text.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/text/text.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/ui_metric/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/ui_metric/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/ui_metric/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/ui_metric/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/ui_metric/ui_metric.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/ui_metric/ui_metric.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/ui_metric/ui_metric.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/ui_metric/ui_metric.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/validation/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/validation/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_policy.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_policy.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/validation/validate_policy.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_policy.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_repository.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_repository.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/validation/validate_repository.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_repository.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_restore.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_restore.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/validation/validate_restore.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_restore.ts diff --git a/x-pack/plugins/snapshot_restore/public/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/locator.ts b/x-pack/platform/plugins/private/snapshot_restore/public/locator.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/locator.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/locator.ts diff --git a/x-pack/plugins/snapshot_restore/public/plugin.ts b/x-pack/platform/plugins/private/snapshot_restore/public/plugin.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/plugin.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/plugin.ts diff --git a/x-pack/plugins/snapshot_restore/public/shared_imports.ts b/x-pack/platform/plugins/private/snapshot_restore/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/shared_imports.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/shared_imports.ts diff --git a/x-pack/plugins/snapshot_restore/public/types.ts b/x-pack/platform/plugins/private/snapshot_restore/public/types.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/types.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/types.ts diff --git a/x-pack/plugins/snapshot_restore/server/config.ts b/x-pack/platform/plugins/private/snapshot_restore/server/config.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/config.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/config.ts diff --git a/x-pack/plugins/snapshot_restore/server/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/clean_settings.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/clean_settings.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/clean_settings.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/clean_settings.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/get_managed_policy_names.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/get_managed_policy_names.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/get_managed_policy_names.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/get_managed_policy_names.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/get_managed_repository_name.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/get_managed_repository_name.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/get_managed_repository_name.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/get_managed_repository_name.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/get_snapshot_search_wildcard.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/get_snapshot_search_wildcard.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/get_snapshot_search_wildcard.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/get_snapshot_search_wildcard.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/get_snapshot_search_wildcard.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/get_snapshot_search_wildcard.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/get_snapshot_search_wildcard.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/get_snapshot_search_wildcard.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/repository_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/repository_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/repository_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/repository_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/repository_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/repository_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/repository_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/repository_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/restore_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/restore_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/restore_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/restore_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/restore_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/restore_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/restore_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/restore_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/wrap_es_error.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/wrap_es_error.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/wrap_es_error.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/wrap_es_error.ts diff --git a/x-pack/plugins/snapshot_restore/server/plugin.ts b/x-pack/platform/plugins/private/snapshot_restore/server/plugin.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/plugin.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/plugin.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/app.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/app.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/app.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/app.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/policy.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/policy.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/policy.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/policy.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/repositories.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/repositories.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/restore.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/restore.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/restore.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/restore.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/snapshots.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/snapshots.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/validate_schemas.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/validate_schemas.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/validate_schemas.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/validate_schemas.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/helpers.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/services/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/services/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/services/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/services/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/services/license.ts b/x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/services/license.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts diff --git a/x-pack/plugins/painless_lab/server/shared_imports.ts b/x-pack/platform/plugins/private/snapshot_restore/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/shared_imports.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/shared_imports.ts diff --git a/x-pack/plugins/snapshot_restore/server/test/helpers/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/test/helpers/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/test/helpers/route_dependencies.ts b/x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/route_dependencies.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/test/helpers/route_dependencies.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/route_dependencies.ts diff --git a/x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts b/x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts diff --git a/x-pack/plugins/snapshot_restore/server/types.ts b/x-pack/platform/plugins/private/snapshot_restore/server/types.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/types.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/types.ts diff --git a/x-pack/plugins/snapshot_restore/test/fixtures/index.ts b/x-pack/platform/plugins/private/snapshot_restore/test/fixtures/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/test/fixtures/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/test/fixtures/index.ts diff --git a/x-pack/plugins/snapshot_restore/test/fixtures/policy.ts b/x-pack/platform/plugins/private/snapshot_restore/test/fixtures/policy.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/test/fixtures/policy.ts rename to x-pack/platform/plugins/private/snapshot_restore/test/fixtures/policy.ts diff --git a/x-pack/plugins/snapshot_restore/test/fixtures/repository.ts b/x-pack/platform/plugins/private/snapshot_restore/test/fixtures/repository.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/test/fixtures/repository.ts rename to x-pack/platform/plugins/private/snapshot_restore/test/fixtures/repository.ts diff --git a/x-pack/plugins/snapshot_restore/test/fixtures/snapshot.ts b/x-pack/platform/plugins/private/snapshot_restore/test/fixtures/snapshot.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/test/fixtures/snapshot.ts rename to x-pack/platform/plugins/private/snapshot_restore/test/fixtures/snapshot.ts diff --git a/x-pack/platform/plugins/private/snapshot_restore/tsconfig.json b/x-pack/platform/plugins/private/snapshot_restore/tsconfig.json new file mode 100644 index 0000000000000..d4f277410f427 --- /dev/null +++ b/x-pack/platform/plugins/private/snapshot_restore/tsconfig.json @@ -0,0 +1,42 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__jest__/**/*", + "common/**/*", + "public/**/*", + "server/**/*", + "test/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/licensing-plugin", + "@kbn/features-plugin", + "@kbn/cloud-plugin", + "@kbn/security-plugin", + "@kbn/management-plugin", + "@kbn/usage-collection-plugin", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/test-jest-helpers", + "@kbn/i18n", + "@kbn/utility-types", + "@kbn/share-plugin", + "@kbn/i18n-react", + "@kbn/analytics", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/core-ui-settings-browser", + "@kbn/core-http-router-server-mocks", + "@kbn/code-editor", + "@kbn/code-editor-mock", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/plugins/private/transform/common/types/es_ingest_pipeline.ts b/x-pack/platform/plugins/private/transform/common/types/es_ingest_pipeline.ts index 61dc8effa3657..aa487f9358b09 100644 --- a/x-pack/platform/plugins/private/transform/common/types/es_ingest_pipeline.ts +++ b/x-pack/platform/plugins/private/transform/common/types/es_ingest_pipeline.ts @@ -7,7 +7,7 @@ // This interface doesn't cover a full ingest pipeline spec, // just what's necessary to make it work in the transform creation wizard. -// The full interface can be found in x-pack/plugins/ingest_pipelines/common/types.ts +// The full interface can be found in x-pack/platform/plugins/shared/ingest_pipelines/common/types.ts export interface EsIngestPipeline { name: string; } diff --git a/x-pack/platform/plugins/private/transform/public/alerting/transform_health_rule_type/transform_selector_control.test.tsx b/x-pack/platform/plugins/private/transform/public/alerting/transform_health_rule_type/transform_selector_control.test.tsx new file mode 100644 index 0000000000000..79d21ca95d4ef --- /dev/null +++ b/x-pack/platform/plugins/private/transform/public/alerting/transform_health_rule_type/transform_selector_control.test.tsx @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; +import type { TransformSelectorControlProps } from './transform_selector_control'; +import { TransformSelectorControl } from './transform_selector_control'; + +describe('TransformSelectorControl', () => { + const defaultProps: TransformSelectorControlProps = { + label: 'Select Transforms', + errors: [], + onChange: jest.fn(), + selectedOptions: [], + options: ['transform1', 'transform2'], + allowSelectAll: true, + }; + + it('renders without crashing', () => { + const { getByLabelText } = render(<TransformSelectorControl {...defaultProps} />); + expect(getByLabelText('Select Transforms')).toBeInTheDocument(); + }); + + it('displays options correctly', () => { + const { getByText } = render(<TransformSelectorControl {...defaultProps} />); + fireEvent.click(getByText('Select Transforms')); + expect(getByText('transform1')).toBeInTheDocument(); + expect(getByText('transform2')).toBeInTheDocument(); + expect(getByText('*')).toBeInTheDocument(); + }); + + it('calls onChange with selected options', () => { + const { getByText } = render(<TransformSelectorControl {...defaultProps} />); + fireEvent.click(getByText('Select Transforms')); + fireEvent.click(getByText('transform1')); + expect(defaultProps.onChange).toHaveBeenCalledWith(['transform1']); + }); + + it('only allows wildcards as custom options', () => { + const { getByText, getByTestId } = render(<TransformSelectorControl {...defaultProps} />); + fireEvent.click(getByText('Select Transforms')); + const input = getByTestId('comboBoxSearchInput'); + + fireEvent.change(input, { target: { value: 'custom' } }); + fireEvent.keyDown(input, { key: 'Enter', code: 'Enter' }); + expect(defaultProps.onChange).not.toHaveBeenCalledWith(['custom']); + + fireEvent.change(input, { target: { value: 'custom*' } }); + fireEvent.keyDown(input, { key: 'Enter', code: 'Enter' }); + expect(defaultProps.onChange).toHaveBeenCalledWith(['custom*']); + }); + + it('displays errors correctly', () => { + const errorProps = { ...defaultProps, errors: ['Error message'] }; + const { getByText } = render(<TransformSelectorControl {...errorProps} />); + expect(getByText('Error message')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/platform/plugins/private/transform/public/alerting/transform_health_rule_type/transform_selector_control.tsx b/x-pack/platform/plugins/private/transform/public/alerting/transform_health_rule_type/transform_selector_control.tsx index 97c7c74823c0a..bbb1c77e50ed3 100644 --- a/x-pack/platform/plugins/private/transform/public/alerting/transform_health_rule_type/transform_selector_control.tsx +++ b/x-pack/platform/plugins/private/transform/public/alerting/transform_health_rule_type/transform_selector_control.tsx @@ -5,11 +5,12 @@ * 2.0. */ -import type { EuiComboBoxProps } from '@elastic/eui'; +import type { EuiComboBoxOptionsListProps, EuiComboBoxProps } from '@elastic/eui'; import { EuiComboBox, EuiFormRow } from '@elastic/eui'; import type { FC } from 'react'; -import React, { useMemo } from 'react'; +import React, { useMemo, useState } from 'react'; import { isDefined } from '@kbn/ml-is-defined'; +import { i18n } from '@kbn/i18n'; import { ALL_TRANSFORMS_SELECTION } from '../../../common/constants'; export interface TransformSelectorControlProps { @@ -33,6 +34,8 @@ export const TransformSelectorControl: FC<TransformSelectorControlProps> = ({ options, allowSelectAll = false, }) => { + const [allowCustomOptions, setAllowCustomOptions] = useState(false); + const onSelectionChange: EuiComboBoxProps<string>['onChange'] = ((selectionUpdate) => { if (!selectionUpdate?.length) { onChange([]); @@ -50,6 +53,12 @@ export const TransformSelectorControl: FC<TransformSelectorControlProps> = ({ ); }) as Exclude<EuiComboBoxProps<string>['onChange'], undefined>; + const onCreateOption = allowCustomOptions + ? (((searchValue) => { + onChange([...selectedOptions, searchValue]); + }) as EuiComboBoxOptionsListProps<string>['onCreateOption']) + : undefined; + const selectedOptionsEui = useMemo(() => convertToEuiOptions(selectedOptions), [selectedOptions]); const optionsEui = useMemo(() => { return convertToEuiOptions(allowSelectAll ? [ALL_TRANSFORMS_SELECTION, ...options] : options); @@ -58,6 +67,17 @@ export const TransformSelectorControl: FC<TransformSelectorControlProps> = ({ return ( <EuiFormRow fullWidth label={label} isInvalid={!!errors?.length} error={errors}> <EuiComboBox<string> + onSearchChange={(searchValue, hasMatchingOption) => { + setAllowCustomOptions(!hasMatchingOption && searchValue.includes('*')); + }} + onCreateOption={onCreateOption} + customOptionText={i18n.translate( + 'xpack.transform.alertTypes.transformHealth.customOptionText', + { + defaultMessage: 'Include {searchValuePlaceholder} wildcard', + values: { searchValuePlaceholder: '{searchValue}' }, + } + )} singleSelection={false} selectedOptions={selectedOptionsEui} options={optionsEui} diff --git a/x-pack/platform/plugins/private/transform/public/app/sections/transform_management/components/transform_list/expanded_row_json_pane.tsx b/x-pack/platform/plugins/private/transform/public/app/sections/transform_management/components/transform_list/expanded_row_json_pane.tsx index 48e17d9157226..60c47ecc81f8b 100644 --- a/x-pack/platform/plugins/private/transform/public/app/sections/transform_management/components/transform_list/expanded_row_json_pane.tsx +++ b/x-pack/platform/plugins/private/transform/public/app/sections/transform_management/components/transform_list/expanded_row_json_pane.tsx @@ -16,6 +16,12 @@ interface Props { } export const ExpandedRowJsonPane: FC<Props> = ({ json }) => { + // exclude alerting rules from the JSON + if ('alerting_rules' in json) { + const { alerting_rules: alertingRules, ...rest } = json; + json = rest; + } + return ( <div data-test-subj="transformJsonTabContent"> <EuiFlexGroup> diff --git a/x-pack/platform/plugins/private/transform/server/lib/alerting/transform_health_rule_type/transform_health_service.test.ts b/x-pack/platform/plugins/private/transform/server/lib/alerting/transform_health_rule_type/transform_health_service.test.ts index ff502c9fcdc2e..a799fbe0499ff 100644 --- a/x-pack/platform/plugins/private/transform/server/lib/alerting/transform_health_rule_type/transform_health_service.test.ts +++ b/x-pack/platform/plugins/private/transform/server/lib/alerting/transform_health_rule_type/transform_health_service.test.ts @@ -5,16 +5,18 @@ * 2.0. */ -import { transformHealthServiceProvider } from './transform_health_service'; -import type { ElasticsearchClient } from '@kbn/core/server'; -import type { RulesClient } from '@kbn/alerting-plugin/server'; -import type { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common'; -import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; -import { rulesClientMock } from '@kbn/alerting-plugin/server/rules_client.mock'; import type { TransformGetTransformResponse, TransformGetTransformStatsResponse, + TransformGetTransformTransformSummary, } from '@elastic/elasticsearch/lib/api/types'; +import type { FindResult, RulesClient } from '@kbn/alerting-plugin/server'; +import { rulesClientMock } from '@kbn/alerting-plugin/server/rules_client.mock'; +import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; +import type { ElasticsearchClient } from '@kbn/core/server'; +import type { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common'; +import { transformHealthServiceProvider } from './transform_health_service'; +import type { TransformHealthRuleParams } from './schema'; describe('transformHealthServiceProvider', () => { let esClient: jest.Mocked<ElasticsearchClient>; @@ -24,20 +26,48 @@ describe('transformHealthServiceProvider', () => { beforeEach(() => { esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; - (esClient.transform.getTransform as jest.Mock).mockResolvedValue({ - count: 3, - transforms: [ - // Mock continuous transforms - ...new Array(102).fill(null).map((_, i) => ({ - id: `transform${i}`, - sync: true, - })), - { - id: 'transform102', - sync: false, - }, - ], - } as unknown as TransformGetTransformResponse); + (esClient.transform.getTransform as jest.Mock).mockImplementation( + async ({ transform_id: transformId }) => { + if (transformId === 'transform4,transform6,transform6*') { + // arrangement for exclude transforms + return { + transforms: [ + { + id: `transform4`, + sync: true, + }, + { + id: `transform6`, + sync: true, + }, + ...new Array(10).fill(null).map((_, i) => ({ + id: `transform6${i}`, + sync: true, + })), + ], + } as unknown as TransformGetTransformResponse; + } else { + return { + transforms: [ + // Mock continuous transforms + ...new Array(102).fill(null).map((_, i) => ({ + id: `transform${i}`, + sync: { + time: { + field: 'order_date', + delay: '60s', + }, + }, + })), + { + id: 'transform102', + }, + ], + } as unknown as TransformGetTransformResponse; + } + } + ); + (esClient.transform.getTransformStats as jest.Mock).mockResolvedValue({ count: 2, transforms: [{}], @@ -57,19 +87,27 @@ describe('transformHealthServiceProvider', () => { const service = transformHealthServiceProvider({ esClient, rulesClient, fieldFormatsRegistry }); const result = await service.getHealthChecksResults({ includeTransforms: ['*'], - excludeTransforms: ['transform4', 'transform6', 'transform62'], + excludeTransforms: ['transform4', 'transform6', 'transform6*'], testsConfig: null, }); + expect(esClient.transform.getTransform).toHaveBeenCalledTimes(2); + + expect(esClient.transform.getTransform).toHaveBeenCalledWith({ + allow_no_match: true, + size: 1000, + }); expect(esClient.transform.getTransform).toHaveBeenCalledWith({ + transform_id: 'transform4,transform6,transform6*', allow_no_match: true, size: 1000, }); + expect(esClient.transform.getTransformStats).toHaveBeenCalledTimes(1); expect(esClient.transform.getTransformStats).toHaveBeenNthCalledWith(1, { basic: true, transform_id: - 'transform0,transform1,transform2,transform3,transform5,transform7,transform8,transform9,transform10,transform11,transform12,transform13,transform14,transform15,transform16,transform17,transform18,transform19,transform20,transform21,transform22,transform23,transform24,transform25,transform26,transform27,transform28,transform29,transform30,transform31,transform32,transform33,transform34,transform35,transform36,transform37,transform38,transform39,transform40,transform41,transform42,transform43,transform44,transform45,transform46,transform47,transform48,transform49,transform50,transform51,transform52,transform53,transform54,transform55,transform56,transform57,transform58,transform59,transform60,transform61,transform63,transform64,transform65,transform66,transform67,transform68,transform69,transform70,transform71,transform72,transform73,transform74,transform75,transform76,transform77,transform78,transform79,transform80,transform81,transform82,transform83,transform84,transform85,transform86,transform87,transform88,transform89,transform90,transform91,transform92,transform93,transform94,transform95,transform96,transform97,transform98,transform99,transform100,transform101', + 'transform0,transform1,transform2,transform3,transform5,transform7,transform8,transform9,transform10,transform11,transform12,transform13,transform14,transform15,transform16,transform17,transform18,transform19,transform20,transform21,transform22,transform23,transform24,transform25,transform26,transform27,transform28,transform29,transform30,transform31,transform32,transform33,transform34,transform35,transform36,transform37,transform38,transform39,transform40,transform41,transform42,transform43,transform44,transform45,transform46,transform47,transform48,transform49,transform50,transform51,transform52,transform53,transform54,transform55,transform56,transform57,transform58,transform59,transform70,transform71,transform72,transform73,transform74,transform75,transform76,transform77,transform78,transform79,transform80,transform81,transform82,transform83,transform84,transform85,transform86,transform87,transform88,transform89,transform90,transform91,transform92,transform93,transform94,transform95,transform96,transform97,transform98,transform99,transform100,transform101', }); expect(result).toBeDefined(); @@ -126,4 +164,131 @@ describe('transformHealthServiceProvider', () => { 'Transform transform_with_a_very_long_id_that_result_in_long_url_for_sure_0, transform_with_a_very_long_id_that_result_in_long_url_for_sure_1, transform_with_a_very_long_id_that_result_in_long_url_for_sure_2, transform_with_a_very_long_id_that_result_in_long_url_for_sure_3, transform_with_a_very_long_id_that_result_in_long_url_for_sure_4, transform_with_a_very_long_id_that_result_in_long_url_for_sure_5, transform_with_a_very_long_id_that_result_in_long_url_for_sure_6, transform_with_a_very_long_id_that_result_in_long_url_for_sure_7, transform_with_a_very_long_id_that_result_in_long_url_for_sure_8, transform_with_a_very_long_id_that_result_in_long_url_for_sure_9, transform_with_a_very_long_id_that_result_in_long_url_for_sure_10, transform_with_a_very_long_id_that_result_in_long_url_for_sure_11, transform_with_a_very_long_id_that_result_in_long_url_for_sure_12, transform_with_a_very_long_id_that_result_in_long_url_for_sure_13, transform_with_a_very_long_id_that_result_in_long_url_for_sure_14, transform_with_a_very_long_id_that_result_in_long_url_for_sure_15, transform_with_a_very_long_id_that_result_in_long_url_for_sure_16, transform_with_a_very_long_id_that_result_in_long_url_for_sure_17, transform_with_a_very_long_id_that_result_in_long_url_for_sure_18, transform_with_a_very_long_id_that_result_in_long_url_for_sure_19, transform_with_a_very_long_id_that_result_in_long_url_for_sure_20, transform_with_a_very_long_id_that_result_in_long_url_for_sure_21, transform_with_a_very_long_id_that_result_in_long_url_for_sure_22, transform_with_a_very_long_id_that_result_in_long_url_for_sure_23, transform_with_a_very_long_id_that_result_in_long_url_for_sure_24, transform_with_a_very_long_id_that_result_in_long_url_for_sure_25, transform_with_a_very_long_id_that_result_in_long_url_for_sure_26, transform_with_a_very_long_id_that_result_in_long_url_for_sure_27, transform_with_a_very_long_id_that_result_in_long_url_for_sure_28, transform_with_a_very_long_id_that_result_in_long_url_for_sure_29, transform_with_a_very_long_id_that_result_in_long_url_for_sure_30, transform_with_a_very_long_id_that_result_in_long_url_for_sure_31, transform_with_a_very_long_id_that_result_in_long_url_for_sure_32, transform_with_a_very_long_id_that_result_in_long_url_for_sure_33, transform_with_a_very_long_id_that_result_in_long_url_for_sure_34, transform_with_a_very_long_id_that_result_in_long_url_for_sure_35, transform_with_a_very_long_id_that_result_in_long_url_for_sure_36, transform_with_a_very_long_id_that_result_in_long_url_for_sure_37, transform_with_a_very_long_id_that_result_in_long_url_for_sure_38, transform_with_a_very_long_id_that_result_in_long_url_for_sure_39, transform_with_a_very_long_id_that_result_in_long_url_for_sure_40, transform_with_a_very_long_id_that_result_in_long_url_for_sure_41, transform_with_a_very_long_id_that_result_in_long_url_for_sure_42, transform_with_a_very_long_id_that_result_in_long_url_for_sure_43, transform_with_a_very_long_id_that_result_in_long_url_for_sure_44, transform_with_a_very_long_id_that_result_in_long_url_for_sure_45, transform_with_a_very_long_id_that_result_in_long_url_for_sure_46, transform_with_a_very_long_id_that_result_in_long_url_for_sure_47, transform_with_a_very_long_id_that_result_in_long_url_for_sure_48, transform_with_a_very_long_id_that_result_in_long_url_for_sure_49, transform_with_a_very_long_id_that_result_in_long_url_for_sure_50, transform_with_a_very_long_id_that_result_in_long_url_for_sure_51, transform_with_a_very_long_id_that_result_in_long_url_for_sure_52, transform_with_a_very_long_id_that_result_in_long_url_for_sure_53, transform_with_a_very_long_id_that_result_in_long_url_for_sure_54, transform_with_a_very_long_id_that_result_in_long_url_for_sure_55, transform_with_a_very_long_id_that_result_in_long_url_for_sure_56, transform_with_a_very_long_id_that_result_in_long_url_for_sure_57, transform_with_a_very_long_id_that_result_in_long_url_for_sure_58, transform_with_a_very_long_id_that_result_in_long_url_for_sure_59 are not started.' ); }); + + describe('populateTransformsWithAssignedRules', () => { + it('should throw an error if rulesClient is missing', async () => { + const service = transformHealthServiceProvider({ esClient, fieldFormatsRegistry }); + + await expect(service.populateTransformsWithAssignedRules([])).rejects.toThrow( + 'Rules client is missing' + ); + }); + + it('should return an empty list if no transforms are provided', async () => { + const service = transformHealthServiceProvider({ + esClient, + rulesClient, + fieldFormatsRegistry, + }); + + const result = await service.populateTransformsWithAssignedRules([]); + expect(result).toEqual([]); + }); + + it('should return transforms with associated alerting rules', async () => { + const transforms = [ + { id: 'transform1', sync: {} }, + { id: 'transform2', sync: {} }, + { id: 'transform3', sync: {} }, + ] as TransformGetTransformTransformSummary[]; + + const rules = [ + { + id: 'rule1', + params: { + includeTransforms: ['transform1', 'transform2'], + excludeTransforms: [], + }, + }, + { + id: 'rule2', + params: { + includeTransforms: ['transform3'], + excludeTransforms: null, + }, + }, + ]; + + rulesClient.find.mockResolvedValue({ data: rules } as FindResult<TransformHealthRuleParams>); + + const service = transformHealthServiceProvider({ + esClient, + rulesClient, + fieldFormatsRegistry, + }); + + const result = await service.populateTransformsWithAssignedRules(transforms); + + expect(result).toEqual([ + { + id: 'transform1', + sync: {}, + alerting_rules: [rules[0]], + }, + { + id: 'transform2', + sync: {}, + alerting_rules: [rules[0]], + }, + { + id: 'transform3', + sync: {}, + alerting_rules: [rules[1]], + }, + ]); + }); + + it('should exclude transforms based on excludeTransforms parameter', async () => { + const transforms = [ + { id: 'transform1', sync: {} }, + { id: 'transform2', sync: {} }, + { id: 'transform3', sync: {} }, + ] as TransformGetTransformTransformSummary[]; + + const rules = [ + { + id: 'rule1', + params: { + includeTransforms: ['transform*'], + excludeTransforms: ['transform2'], + }, + }, + { + id: 'rule2', + params: { + includeTransforms: ['*'], + excludeTransforms: [], + }, + }, + ]; + + rulesClient.find.mockResolvedValue({ data: rules } as FindResult<TransformHealthRuleParams>); + + const service = transformHealthServiceProvider({ + esClient, + rulesClient, + fieldFormatsRegistry, + }); + + const result = await service.populateTransformsWithAssignedRules(transforms); + + expect(result).toEqual([ + { + id: 'transform1', + sync: {}, + alerting_rules: [rules[0], rules[1]], + }, + { + id: 'transform2', + sync: {}, + alerting_rules: [rules[1]], + }, + { + id: 'transform3', + sync: {}, + alerting_rules: [rules[0], rules[1]], + }, + ]); + }); + }); }); diff --git a/x-pack/platform/plugins/private/transform/server/lib/alerting/transform_health_rule_type/transform_health_service.ts b/x-pack/platform/plugins/private/transform/server/lib/alerting/transform_health_rule_type/transform_health_service.ts index 939d4e01a6f1d..288cb86842db0 100644 --- a/x-pack/platform/plugins/private/transform/server/lib/alerting/transform_health_rule_type/transform_health_service.ts +++ b/x-pack/platform/plugins/private/transform/server/lib/alerting/transform_health_rule_type/transform_health_service.ts @@ -38,11 +38,7 @@ interface TestResult { context: TransformHealthAlertContext; } -type Transform = estypes.TransformGetTransformTransformSummary & { - id: string; - description?: string; - sync: object; -}; +type Transform = estypes.TransformGetTransformTransformSummary; type TransformWithAlertingRules = Transform & { alerting_rules: TransformHealthAlertRule[] }; @@ -63,40 +59,44 @@ export function transformHealthServiceProvider({ * Resolves result transform selection. Only continuously running transforms are included. * @param includeTransforms * @param excludeTransforms - * @param skipIDsCheck */ const getResultsTransformIds = async ( includeTransforms: string[], - excludeTransforms: string[] | null, - skipIDsCheck = false + excludeTransforms: string[] | null ): Promise<Set<string>> => { const includeAll = includeTransforms.some((id) => id === ALL_TRANSFORMS_SELECTION); let resultTransformIds: string[] = []; - if (skipIDsCheck) { - resultTransformIds = includeTransforms; - } else { - // Fetch transforms to make sure assigned transforms exists. - const transformsResponse = ( - await esClient.transform.getTransform({ - ...(includeAll ? {} : { transform_id: includeTransforms.join(',') }), - allow_no_match: true, - size: 1000, - }) - ).transforms as Transform[]; - - transformsResponse.forEach((t) => { - transformsDict.set(t.id, t); - // Include only continuously running transforms. - if (t.sync) { - resultTransformIds.push(t.id); - } - }); - } + // Fetch transforms to make sure assigned transforms exists. + const transformsResponse = ( + await esClient.transform.getTransform({ + ...(includeAll ? {} : { transform_id: includeTransforms.join(',') }), + allow_no_match: true, + size: 1000, + }) + ).transforms as Transform[]; + + transformsResponse.forEach((t) => { + transformsDict.set(t.id, t); + // Include only continuously running transforms. + if (isContinuousTransform(t)) { + resultTransformIds.push(t.id); + } + }); if (excludeTransforms && excludeTransforms.length > 0) { - const excludeIdsSet = new Set(excludeTransforms); + let excludeIdsSet = new Set(excludeTransforms); + if (excludeTransforms.some((id) => id.includes('*'))) { + const excludeTransformResponse = ( + await esClient.transform.getTransform({ + transform_id: excludeTransforms.join(','), + allow_no_match: true, + size: 1000, + }) + ).transforms as Transform[]; + excludeIdsSet = new Set(excludeTransformResponse.map((t) => t.id)); + } resultTransformIds = resultTransformIds.filter((id) => !excludeIdsSet.has(id)); } @@ -381,13 +381,19 @@ export function transformHealthServiceProvider({ async populateTransformsWithAssignedRules( transforms: Transform[] ): Promise<TransformWithAlertingRules[]> { - const newList = transforms.filter(isContinuousTransform) as TransformWithAlertingRules[]; + const continuousTransforms = transforms.filter( + isContinuousTransform + ) as TransformWithAlertingRules[]; if (!rulesClient) { throw new Error('Rules client is missing'); } - const transformMap = keyBy(newList, 'id'); + if (!continuousTransforms.length) { + return transforms as TransformWithAlertingRules[]; + } + + const transformMap = keyBy(continuousTransforms, 'id'); const transformAlertingRules = await rulesClient.find<TransformHealthRuleParams>({ options: { @@ -398,12 +404,23 @@ export function transformHealthServiceProvider({ for (const ruleInstance of transformAlertingRules.data) { // Retrieve result transform IDs - const resultTransformIds = await getResultsTransformIds( - ruleInstance.params.includeTransforms.includes(ALL_TRANSFORMS_SELECTION) - ? Object.keys(transformMap) - : ruleInstance.params.includeTransforms, - ruleInstance.params.excludeTransforms, - true + const { includeTransforms, excludeTransforms } = ruleInstance.params; + + const resultTransformIds = new Set( + transforms + .filter( + (t) => + includeTransforms.some((includedTransformId) => + new RegExp(includedTransformId.replace(/\*/g, '.*')).test(t.id) + ) && + (Array.isArray(excludeTransforms) && excludeTransforms.length > 0 + ? excludeTransforms.every( + (excludedTransformId) => + new RegExp(excludedTransformId.replace(/\*/g, '.*')).test(t.id) === false + ) + : true) + ) + .map((t) => t.id) ); resultTransformIds.forEach((transformId) => { @@ -419,7 +436,7 @@ export function transformHealthServiceProvider({ }); } - return newList; + return continuousTransforms; }, }; } diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index 57b385d68f8b7..ec1d7a13e1692 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -215,17 +215,8 @@ "charts.legend.toggleLegendButtonAriaLabel": "Afficher/Masquer la légende", "charts.legend.toggleLegendButtonTitle": "Afficher/Masquer la légende", "charts.noDataLabel": "Résultat introuvable", - "charts.palettes.complementaryLabel": "Complémentaire", - "charts.palettes.coolLabel": "Froide", "charts.palettes.customLabel": "Personnalisée", - "charts.palettes.defaultPaletteLabel": "Par défaut", - "charts.palettes.grayLabel": "Gris", "charts.palettes.kibanaPaletteLabel": "Compatibilité", - "charts.palettes.negativeLabel": "Négative", - "charts.palettes.positiveLabel": "Positive", - "charts.palettes.statusLabel": "Statut", - "charts.palettes.temperatureLabel": "Température", - "charts.palettes.warmLabel": "Chaude", "charts.partialData.bucketTooltipText": "La plage temporelle sélectionnée n'inclut pas ce compartiment en entier. Il se peut qu'elle contienne des données partielles.", "charts.warning.warningLabel": "{numberWarnings, number} {numberWarnings, plural, one {avertissement} other {avertissements}}", "cloud.connectionDetails.apiKeyFormat.beats.description": "Utilisé pour la configuration de Beats", @@ -2803,7 +2794,6 @@ "embeddableApi.addPanel.managedPanelTooltip": "Elastic gère ce panneau. Le fait de l'ajouter à un tableau de bord le dissocie de la bibliothèque.", "embeddableApi.addPanel.noMatchingObjectsMessage": "Aucun objet correspondant trouvé.", "embeddableApi.addPanel.Title": "Ajouter depuis la bibliothèque", - "embeddableApi.attributeService.saveToLibraryError": "Une erreur s'est produite lors de l'enregistrement. Erreur : {errorMessage}.", "embeddableApi.cellValueTrigger.description": "Les actions apparaissent dans les options de valeur de cellule dans la visualisation", "embeddableApi.cellValueTrigger.title": "Valeur de cellule", "embeddableApi.common.constants.grouping.annotations": "Annotations et Navigation", @@ -2815,7 +2805,6 @@ "embeddableApi.errors.embeddableFactoryNotFound": "Impossible de charger {type}. Veuillez effectuer une mise à niveau vers la distribution par défaut d'Elasticsearch et de Kibana avec la licence appropriée.", "embeddableApi.errors.paneldoesNotExist": "Panneau introuvable", "embeddableApi.errors.panelIncompatibleError": "L'API du panneau n'est pas compatible", - "embeddableApi.helloworld.displayName": "bonjour", "embeddableApi.multiValueClickTrigger.description": "Sélection de plusieurs valeurs d'une même dimension dans la visualisation", "embeddableApi.multiValueClickTrigger.title": "Clics multiples", "embeddableApi.panelBadgeTrigger.description": "Des actions apparaissent dans la barre de titre lorsqu'un élément pouvant être intégré est chargé dans un panneau.", @@ -2826,9 +2815,6 @@ "embeddableApi.panelNotificationTrigger.title": "Notifications du panneau", "embeddableApi.reactEmbeddable.factoryAlreadyExistsError": "Une usine incorporable pour le type : {key} est déjà enregistrée.", "embeddableApi.reactEmbeddable.factoryNotFoundError": "Aucune usine incorporable n'a été trouvée pour le type : {key}", - "embeddableApi.samples.contactCard.displayName": "carte de visite", - "embeddableApi.samples.filterableContainer.displayName": "tableau de bord filtrable", - "embeddableApi.samples.filterableEmbeddable.displayName": "filtrable", "embeddableApi.selectRangeTrigger.description": "Une plage de valeurs sur la visualisation", "embeddableApi.selectRangeTrigger.title": "Sélection de la plage", "embeddableApi.valueClickTrigger.description": "Un point de données cliquable sur la visualisation", @@ -3135,17 +3121,6 @@ "exceptionList-components.wildcardWithWrongOperatorCallout.changeTheOperator": "Changer d'opérateur", "exceptionList-components.wildcardWithWrongOperatorCallout.matches": "correspond à", "exceptionList-components.wildcardWithWrongOperatorCallout.title": "Veuillez examiner vos entrées", - "expandableFlyout.previewSection.backButton": "Retour", - "expandableFlyout.previewSection.closeButton": "Fermer", - "expandableFlyout.renderMenu.flyoutResizeButton": "Réinitialiser la taille", - "expandableFlyout.renderMenu.flyoutResizeTitle": "Taille du menu volant", - "expandableFlyout.settingsMenu.flyoutTypeTitle": "Type de menu volant", - "expandableFlyout.settingsMenu.overlayMode": "Superposer", - "expandableFlyout.settingsMenu.overlayTooltip": "Affiche le menu volant sur la page", - "expandableFlyout.settingsMenu.popoverButton": "Paramètres du menu volant", - "expandableFlyout.settingsMenu.popoverTitle": "Paramètres du menu volant", - "expandableFlyout.settingsMenu.pushMode": "Déploiement", - "expandableFlyout.settingsMenu.pushTooltip": "Affiche le menu volant à côté de la page", "expressionError.errorComponent.description": "Échec de l'expression avec le message :", "expressionError.errorComponent.title": "Oups ! Échec de l'expression", "expressionError.renderer.debug.displayName": "Déboguer", @@ -9644,7 +9619,6 @@ "visualizations.editVisualization.readOnlyErrorMessage": "Les visualisations {visTypeTitle} sont en lecture seule et ne peuvent pas être ouvertes dans l'éditeur", "visualizations.embeddable.errorTitle": "Impossible de charger la visualisation", "visualizations.embeddable.inspectorTitle": "Inspecteur", - "visualizations.embeddable.legacyURLConflict.errorMessage": "Cette visualisation a la même URL qu'un alias hérité. Désactiver l'alias pour résoudre cette erreur : {json}", "visualizations.embeddable.placeholderTitle": "Titre de l'espace réservé", "visualizations.embeddable.tsdbRollupWarning": "La visualisation utilise une fonction qui n'est pas prise en charge par les données cumulées. Sélectionnez une autre fonction ou modifiez la plage temporelle.", "visualizations.experimentalVisInfoText": "Elle pourra être modifiée ou supprimée totalement dans une prochaine version. Elastic s'efforcera de corriger tous les problèmes, mais les fonctionnalités en version d'évaluation technique ne sont pas soumises aux accords de niveau de service d'assistance des fonctionnalités officielles en disponibilité générale. Pour apporter des commentaires, veuillez créer une entrée dans {githubLink}.", @@ -9713,9 +9687,7 @@ "visualizations.pageHeading": "Visualisation {chartType} {chartName}", "visualizations.readOnlyLegacyVisMessage": "Ces détails ne peuvent pas être modifiés, car cette visualisation n'est plus prise en charge.", "visualizations.reporting.defaultReportTitle": "Visualisation [{date}]", - "visualizations.savedObjectName": "Visualisation", "visualizations.saveDuplicateRejectedDescription": "La confirmation d'enregistrement avec un doublon de titre a été rejetée.", - "visualizations.savingVisualizationFailed.errorMsg": "L'enregistrement de la visualisation a échoué", "visualizations.search.label": "Recherche", "visualizations.share.shareModal.title": "Partager la visualisation", "visualizations.tonNavMenu.tryItBadgeText": "Essayer", @@ -14667,7 +14639,7 @@ "xpack.csp.cnvmDashboardTable.section.topVulnerableResources.column.vulnerabilities": "Vulnérabilités", "xpack.csp.cnvmDashboardTable.section.topVulnerableResources.column.vulnerabilityCount": "Vulnérabilités", "xpack.csp.common.component.multiSelectFilter.searchWord": "Recherche", - "xpack.csp.common.utils.helpers.unknownError": "Erreur inconnue", + "sharedPlatformPackages.csp.common.utils.helpers.unknownError": "Erreur inconnue", "xpack.csp.compactFormattedNumber.naTitle": "S. O.", "xpack.csp.complianceScoreBar.tooltipTitle": "{failed} échecs et {passed} réussites de résultats", "xpack.csp.complianceScoreChart.counterButtonLink.failedFindingsTooltip": "Échec des résultats", @@ -14682,9 +14654,9 @@ "xpack.csp.createPackagePolicy.customAssetsTab.rulesViewLabel": "Afficher les règles CSP", "xpack.csp.createPackagePolicy.customAssetsTab.vulnerabilityDashboardViewLabel": "Afficher le tableau de bord CNVM", "xpack.csp.createPackagePolicy.customAssetsTab.vulnerabilityFindingsViewLabel": "Afficher les résultats des vulnérabilités", - "xpack.csp.cspEvaluationBadge.failLabel": "Échec", - "xpack.csp.cspEvaluationBadge.naLabel": "S. O.", - "xpack.csp.cspEvaluationBadge.passLabel": "Réussite", + "securitySolutionPackages.csp.cspEvaluationBadge.failLabel": "Échec", + "securitySolutionPackages.csp.cspEvaluationBadge.naLabel": "S. O.", + "securitySolutionPackages.csp.cspEvaluationBadge.passLabel": "Réussite", "xpack.csp.cspIntegration.gcpCloudCredentials.cloudFormationSupportedMessage": "La fonctionnalité Lancer Cloud Shell pour obtenir les informations d'identification de façon automatisée n’est pas pris en charge dans la version d'intégration actuelle. Veuillez effectuer une mise à niveau vers la dernière version pour activer Lancer Cloud Shell pour les informations d'identification automatisées.", "xpack.csp.cspmIntegration.awsOption.benchmarkTitle": "CIS AWS", "xpack.csp.cspmIntegration.awsOption.nameTitle": "AWS", @@ -14768,7 +14740,7 @@ "xpack.csp.findings.distributionBar.totalPassedLabel": "Réussite des résultats", "xpack.csp.findings.errorCallout.pageSearchErrorTitle": "Une erreur s’est produite lors de la récupération des résultats de recherche.", "xpack.csp.findings.errorCallout.showErrorButtonLabel": "Afficher le message d'erreur", - "xpack.csp.findings.findingsErrorToast.searchFailedTitle": "Échec de la recherche", + "securitySolutionPackages.csp.findings.findingsErrorToast.searchFailedTitle": "Échec de la recherche", "xpack.csp.findings.findingsFlyout.calloutTitle": "Certains champs ne sont pas fournis par {vendor}", "xpack.csp.findings.findingsFlyout.flyoutDescriptionList.resourceId": "ID ressource", "xpack.csp.findings.findingsFlyout.flyoutDescriptionList.resourceName": "Nom de ressource", @@ -14938,11 +14910,10 @@ "xpack.csp.kspmIntegration.integration.shortNameTitle": "KSPM", "xpack.csp.kspmIntegration.vanillaOption.benchmarkTitle": "CIS Kubernetes", "xpack.csp.kspmIntegration.vanillaOption.nameTitle": "Autogéré", - "xpack.csp.navigation.dashboardNavItemLabel": "Niveau de sécurité du cloud", - "xpack.csp.navigation.findingsNavItemLabel": "Résultats", - "xpack.csp.navigation.myBenchmarksNavItemLabel": "Benchmarks", - "xpack.csp.navigation.rulesNavItemLabel": "Règles", - "xpack.csp.navigation.vulnerabilityDashboardNavItemLabel": "Gestion des vulnérabilités natives du cloud", + "securitySolutionPackages.csp.navigation.dashboardNavItemLabel": "Niveau de sécurité du cloud", + "securitySolutionPackages.csp.navigation.findingsNavItemLabel": "Résultats", + "securitySolutionPackages.csp.navigation.rulesNavItemLabel": "Règles", + "securitySolutionPackages.csp.navigation.vulnerabilityDashboardNavItemLabel": "Gestion des vulnérabilités natives du cloud", "xpack.csp.noFindingsStates.indexing.indexingButtonTitle": "Évaluation du niveau en cours", "xpack.csp.noFindingsStates.indexing.indexingDescription": "En attente de la collecte et de l'indexation des données. Revenez plus tard pour voir vos résultats", "xpack.csp.noFindingsStates.indexTimeout.indexTimeoutDescription": "La collecte des résultats prend plus de temps que prévu. {docs}.", @@ -15954,7 +15925,6 @@ "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxGenerationAttemptsErrorMessage": "Nombre maximum de tentatives de génération ({generationAttempts}) atteint. Essayez d'envoyer un nombre d'alertes moins élevé à ce modèle.", "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxHallucinationFailuresErrorMessage": "Nombre maximum d'échecs d'hallucinations ({hallucinationFailures}) atteint. Essayez d'envoyer un nombre d'alertes moins élevé à ce modèle.", "xpack.elasticAssistantPlugin.server.newChat": "Nouveau chat", - "xpack.embeddableEnhanced.Drilldowns": "Explorations", "xpack.enterpriseSearch.accessControlIndexSelector.p.accessControlSyncsAreLabel": "Les synchronisations de contrôle d'accès maintiennent les informations d'autorisation à jour pour assurer la sécurité au niveau du document (DLS)", "xpack.enterpriseSearch.actions.backButtonLabel": "Retour", "xpack.enterpriseSearch.actions.cancelButtonLabel": "Annuler", @@ -18325,7 +18295,6 @@ "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.pipelinesLabel": "Pipelines", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.schedulingTitle": "Planification", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.syncRulesLabel": "Règles de synchronisation", - "xpack.enterpriseSearch.nav.title": "Enterprise Search", "xpack.enterpriseSearch.navigation.applicationsSearchApplicationsLinkLabel": "Applications de recherche", "xpack.enterpriseSearch.navigation.appSearchEnginesLinkLabel": "Moteurs", "xpack.enterpriseSearch.navigation.contentConnectorsLinkLabel": "Connecteurs", @@ -18675,8 +18644,6 @@ "xpack.enterpriseSearch.searchNav.build.searchApplications": "Applications de recherche", "xpack.enterpriseSearch.searchNav.content": "Contenu", "xpack.enterpriseSearch.searchNav.devTools": "Outils de développement", - "xpack.enterpriseSearch.searchNav.entsearch": "Enterprise Search", - "xpack.enterpriseSearch.searchNav.entsearch.appSearch": "App Search", "xpack.enterpriseSearch.searchNav.headerSolutionSwitcher.searchSolutionTitle": "Recherche", "xpack.enterpriseSearch.searchNav.kibana": "Kibana", "xpack.enterpriseSearch.searchNav.management": "Gestion", @@ -25989,7 +25956,6 @@ "xpack.investigateApp.addObservationUI.h2.addAnObservationChartLabel": "Ajouter un graphique d'observation", "xpack.investigateApp.addObservationUI.p.selectADataSourceLabel": "Sélectionnez une source de données pour générer un graphique d'aperçu", "xpack.investigateApp.appTitle": "Investigations", - "xpack.investigateApp.assistantHypothesis.observabilityAIAssistantContextualInsight.helpMeInvestigateThisLabel": "Aidez-moi à résoudre la cause de cet échec", "xpack.investigateApp.defaultChart.error_equation.description": "Vérifiez l'équation.", "xpack.investigateApp.defaultChart.error_equation.title": "Une erreur s'est produite lors de l'affichage du graphique", "xpack.investigateApp.defaultChart.noData.title": "Aucune donnée graphique disponible", @@ -26153,9 +26119,9 @@ "xpack.lens.app.settingsAriaLabel": "Ouvrir le menu de paramètres Lens", "xpack.lens.app.share.defaultDashboardTitle": "Visualisation Lens [{date}]", "xpack.lens.app.shareButtonDisabledWarning": "La visualisation ne comprend aucune donnée à partager.", - "xpack.lens.app.shareModal.title": "Partager cette visualisation Lens", "xpack.lens.app.shareModal.draftModeCallout.link.warning": "Copiez le lien afin d’obtenir un lien temporaire. Enregistrez la visualisation Lens pour créer un lien permanent.", "xpack.lens.app.shareModal.draftModeCallout.title": "Modifications non enregistrées", + "xpack.lens.app.shareModal.title": "Partager cette visualisation Lens", "xpack.lens.app.shareTitle": "Partager", "xpack.lens.app.shareTitleAria": "Partager la visualisation", "xpack.lens.app.showUnderlyingDataMultipleLayers": "Impossible d’afficher les données sous-jacentes pour les visualisations avec plusieurs calques.", @@ -27348,9 +27314,6 @@ "xpack.logsShared.dataSearch.cancelButtonLabel": "Annuler la demande", "xpack.logsShared.dataSearch.loadingErrorRetryButtonLabel": "Réessayer", "xpack.logsShared.dataSearch.shardFailureErrorMessage": "Index {indexName} : {errorMessage}", - "xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.message": "Les options d'affichage des indices et des données précédemment fournies par le biais de la page des paramètres de l'interface utilisateur des logs sont désormais obsolètes. Veuillez désormais utiliser le paramètre avancé des sources de logs Kibana.", - "xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.message.manualStepMessage": "Mettez à jour le paramètre avancé des sources de logs Kibana (via Gestion > Paramètres avancés) pour qu'il corresponde au paramètre précédemment fourni via la page des paramètres de l'interface utilisateur des logs. Ensuite, via la page des paramètres de l'interface utilisateur des logs, utilisez l'option de paramètre avancé des sources de logs Kibana.", - "xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.title": "Paramétrage des sources de logs", "xpack.logsShared.lobs.logEntryActionsViewInContextButton": "Afficher en contexte", "xpack.logsShared.logEntryActionsMenu.apmActionLabel": "Afficher dans APM", "xpack.logsShared.logEntryActionsMenu.buttonLabel": "Examiner", @@ -29649,10 +29612,8 @@ "xpack.ml.explorer.distributionChart.valueWithoutAnomalyScoreLabel": "valeur", "xpack.ml.explorer.invalidKuerySyntaxErrorMessageFromTable": "Syntaxe non valide dans la barre de requête. L'entrée doit être du code KQL (Kibana Query Language) valide", "xpack.ml.explorer.invalidKuerySyntaxErrorMessageQueryBar": "Requête non valide", - "xpack.ml.explorer.invalidTimeRangeInUrlCallout": "Le filtre de temps a été modifié pour inclure la plage entière en raison d'un filtre de temps par défaut non valide. Vérifiez les paramètres avancés pour {field}.", "xpack.ml.explorer.jobIdLabel": "ID tâche", "xpack.ml.explorer.jobScoreAcrossAllInfluencersLabel": "(score de tâche pour tous les influenceurs)", - "xpack.ml.explorer.kueryBar.filterPlaceholder": "Filtrer par champ d'influenceur… ({queryExample})", "xpack.ml.explorer.mapTitle": "Nombre d'anomalies par emplacement {infoTooltip}", "xpack.ml.explorer.noAnomaliesFoundLabel": "Aucune anomalie n'a été trouvée", "xpack.ml.explorer.noConfiguredInfluencersTooltip": "La liste Principaux influenceurs est masquée, car aucun influenceur n'a été configuré pour les tâches sélectionnées.", @@ -39068,7 +39029,6 @@ "xpack.securitySolution.detectionEngine.rules.updatePrebuiltRulesCalloutTitle": "Mises à jour disponibles pour les règles installées. Examinez et mettez à jour dans {link}.", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedRulesAndTimelinesButton": "Mettez à jour {updateRules} {updateRules, plural, =1 {règle prédéfinie} other {règles prédéfinies}} d'Elastic et {updateTimelines} {updateTimelines, plural, =1 {chronologie prédéfinie} other {chronologies prédéfinies}} d'Elastic", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedTimelinesButton": "Mettez à jour {updateTimelines} {updateTimelines, plural, =1 {chronologie prédéfinie} other {chronologies prédéfinies}} d'Elastic", - "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.dataSourceLabel": "Source de données", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.eqlQueryLabel": "Requête EQL", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.esqlQueryLabel": "Requête ESQL", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.kqlQueryLabel": "Requête KQL", @@ -39079,43 +39039,26 @@ "xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.title": "Affichage différé", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionDescriptionLabel": "Affiche la règle actuellement installée", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionLabel": "Règle actuelle", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.fieldsWithUpdates": "La mise à niveau contient {count} {count, plural, one {champ} other {champs}}", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfConflicts": "{count} {count, plural, one {conflit} other {conflits}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel": "Modifier", "xpack.securitySolution.detectionEngine.rules.upgradeRules.elasticUpdateVersionLabel": "Mise à jour Elastic", "xpack.securitySolution.detectionEngine.rules.upgradeRules.expandHiddenDiffLinesLabel": "Développer {linesCount}{linesCount, plural, one {ligne} other {lignes}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldReadOnly.noteLabel": "Guide d'investigation", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict": "Conflit résolu", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription": "Nous avons suggéré une mise à jour pour ce champ modifié, veuillez la consulter avant d'accepter.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflicts": "{count} des champs {count, plural, one {a} other {ont}} un conflit non résolu. Veuillez en prendre connaissance et apporter les modifications appropriées.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflictsDescription": "Veuillez apporter une contribution au conflit non résolu. Vous pouvez également conserver la version actuelle sans les mises à jour, ou accepter la mise à jour Elastic tout en perdant vos modifications.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflicts": "{count} des champs {count, plural, one {a} other {ont}} un conflit de mise à jour. Veuillez examiner la mise à jour en cours suggérée.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflictsDescription": "Veuillez consulter la version mise à jour recommandée avant de l'accepter. Vous pouvez modifier le champ, puis l'enregistrer, si nécessaire.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgrade": "La mise à jour est prête à être appliquée.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription": "Tous les conflits ont maintenant été examinés et résolus, veuillez mettre à jour la règle.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator": "-", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict": "Conflit résolu", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription": "Nous avons suggéré une mise à jour pour ce champ modifié, veuillez la consulter avant d'accepter.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAccepted": "Mise à jour acceptée", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAcceptedDescription": "Vous pouvez toujours apporter des modifications, veuillez consulter/accepter tous les autres conflits avant de mettre à jour la règle.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate": "Mise à jour finale", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesBodyTitle": "Il n’y a actuellement aucune mise à jour disponible pour vos règles Elastic installées.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesTitle": "Toutes les règles Elastic sont à jour", "xpack.securitySolution.detectionEngine.rules.upgradeRules.ruleUpgradeHelper": "Découvrez comment {docsLink}.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.saveButtonLabel": "Enregistrer", "xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder": "Rechercher par nom de règle", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updatedVersionDescriptionLabel": "Affiche la règle qui sera installée", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink": "mettre à jour vos règles", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll": "Tout mettre à jour", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText": "Choisissez les valeurs de champ utilisées dans la règle mise à niveau.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected": "Mettre à jour {numberOfSelectedRules} règle(s) sélectionnée(s)", "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel": "Sélectionnez les versions à comparer", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsCurrentLabel": "Base - Actuel", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsFinalLabel": "Base - Final", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsTargetLabel": "Base - Cible", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsFinalLabel": "Actuel - Final", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsTargetLabel": "Actuel - Cible", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.targetVsFinalLabel": "Actuel - Final", "xpack.securitySolution.detectionEngine.rulesSnoozeBadge.error.unableToFetch": "Impossible de récupérer les paramètres de répétition", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistant": "Demander à l'assistant", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistantDesc": "Message d'erreur de l'exécution de la règle", @@ -42853,7 +42796,7 @@ "xpack.serverlessSearch.languages.php": "PHP", "xpack.serverlessSearch.languages.php.githubLink": "elasticsearch-serverless-php", "xpack.serverlessSearch.languages.python": "Python", - "xpack.serverlessSearch.languages.python.githubLabel": "elasticsearch-serverless-python", + "xpack.serverlessSearch.languages.python.githubLabel": "elasticsearch-py", "xpack.serverlessSearch.languages.ruby": "Ruby", "xpack.serverlessSearch.languages.ruby.githubLabel": "elasticsearch-serverless-ruby", "xpack.serverlessSearch.learnMore": "En savoir plus", @@ -45197,7 +45140,6 @@ "xpack.stackConnectors.components.inference.taskTypeDetailsLabel": "Paramètres des tâches", "xpack.stackConnectors.components.inference.taskTypeFieldLabel": "Type de tâche", "xpack.stackConnectors.components.inference.taskTypeHelpLabel": "Configurer la tâche d'inférence. Ces paramètres sont spécifiques au service et au modèle sélectionnés.", - "xpack.stackConnectors.components.inference.taskTypeLabel": "Type de tâche", "xpack.stackConnectors.components.inference.unableToFindProvidersQueryMessage": "Impossible de trouver des fournisseurs", "xpack.stackConnectors.components.jira.apiTokenTextFieldLabel": "Token d'API", "xpack.stackConnectors.components.jira.apiUrlTextFieldLabel": "URL", @@ -48433,8 +48375,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.flyoutHeader": "Réindexer {index}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.learnMoreLinkLabel": "En savoir plus", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.acceptChangesTitle": "Accepter les modifications", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningDetail": "Les types de mapping ne sont plus pris en charge dans Elastic 8.x. Assurez-vous qu'aucun code d'application ou script n'utilise {mappingType}.", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningTitle": "Remplacer le type de mapping {mappingType} par {defaultType}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningDetail": "Les paramètres d'index déclassés ont été détectés :", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningTitle": "Retirer les paramètres d'index déclassés", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutDetail": "Sauvegardez l'index avant de continuer. Pour poursuivre avec la réindexation, acceptez chaque modification.", @@ -48629,7 +48569,6 @@ "xpack.upgradeAssistant.overview.logsStep.title": "Traiter les déclassements d'API", "xpack.upgradeAssistant.overview.logsStep.viewLogsButtonLabel": "Afficher les logs", "xpack.upgradeAssistant.overview.observe.discoveryDescription": "Recherchez et filtrez les logs de déclassement pour comprendre les types de modifications que vous devez effectuer.", - "xpack.upgradeAssistant.overview.observe.observabilityDescription": "Obtenez des informations sur les API déclassées qui sont utilisées et les applications que vous devez mettre à jour.", "xpack.upgradeAssistant.overview.pageDescription": "Préparez-vous pour la prochaine version de la Suite Elastic !", "xpack.upgradeAssistant.overview.pageTitle": "Assistant de mise à niveau", "xpack.upgradeAssistant.overview.snapshotRestoreLink": "Créer un snapshot", @@ -48666,7 +48605,6 @@ "xpack.upgradeAssistant.overview.verifyChanges.resetCounterButton": "Réinitialiser le compteur", "xpack.upgradeAssistant.overview.verifyChanges.retryButton": "Réessayer", "xpack.upgradeAssistant.overview.viewDiscoverResultsAction": "Analyser les logs dans Discover", - "xpack.upgradeAssistant.overview.viewObservabilityResultsAction": "Afficher les logs d'obsolescence dans Logs Explorer", "xpack.upgradeAssistant.reindex.reindexPrivilegesErrorBatch": "Vous ne disposez pas des privilèges appropriés pour réindexer \"{indexName}\".", "xpack.upgradeAssistant.status.allDeprecationsResolvedMessage": "Tous les avertissements de déclassement ont été résolus.", "xpack.upgradeAssistant.status.deprecationsUnresolvedMessage": "Les problèmes suivants doivent être résolus avant la mise à niveau : {upgradeIssues}.", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index 62ebb2e26b8f2..6d5033351a195 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -215,17 +215,8 @@ "charts.legend.toggleLegendButtonAriaLabel": "凡例を切り替える", "charts.legend.toggleLegendButtonTitle": "凡例を切り替える", "charts.noDataLabel": "結果が見つかりませんでした", - "charts.palettes.complementaryLabel": "補完", - "charts.palettes.coolLabel": "Cool", "charts.palettes.customLabel": "カスタム", - "charts.palettes.defaultPaletteLabel": "デフォルト", - "charts.palettes.grayLabel": "グレー", "charts.palettes.kibanaPaletteLabel": "互換性", - "charts.palettes.negativeLabel": "負", - "charts.palettes.positiveLabel": "正", - "charts.palettes.statusLabel": "ステータス", - "charts.palettes.temperatureLabel": "温度", - "charts.palettes.warmLabel": "ウォーム", "charts.partialData.bucketTooltipText": "選択された時間範囲にはこのバケット全体は含まれていません。一部データが含まれている可能性があります。", "charts.warning.warningLabel": "{numberWarnings, number} {numberWarnings, plural, other {件の警告}}", "cloud.connectionDetails.apiKeyFormat.beats.description": "Beatsを構成するために使用", @@ -2798,7 +2789,6 @@ "embeddableApi.addPanel.managedPanelTooltip": "Elasticはこのパネルを管理します。ダッシュボードに追加すると、ライブラリからリンクが解除されます。", "embeddableApi.addPanel.noMatchingObjectsMessage": "一致するオブジェクトが見つかりませんでした。", "embeddableApi.addPanel.Title": "ライブラリから追加", - "embeddableApi.attributeService.saveToLibraryError": "保存中にエラーが発生しました。エラー:{errorMessage}", "embeddableApi.cellValueTrigger.description": "アクションはビジュアライゼーションのセル値オプションに表示されます", "embeddableApi.cellValueTrigger.title": "セル値", "embeddableApi.common.constants.grouping.annotations": "注釈とナビゲーション", @@ -2810,7 +2800,6 @@ "embeddableApi.errors.embeddableFactoryNotFound": "{type} を読み込めません。Elasticsearch と Kibanaのデフォルトのディストリビューションを適切なライセンスでアップグレードしてください。", "embeddableApi.errors.paneldoesNotExist": "パネルが見つかりません", "embeddableApi.errors.panelIncompatibleError": "パネルAPIに互換性がありません", - "embeddableApi.helloworld.displayName": "こんにちは", "embeddableApi.multiValueClickTrigger.description": "ビジュアライゼーションの1つのディメンションの複数値を選択しています", "embeddableApi.multiValueClickTrigger.title": "マルチクリック", "embeddableApi.panelBadgeTrigger.description": "パネルに埋め込み可能なファイルが読み込まれるときに、アクションがタイトルバーに表示されます。", @@ -2821,9 +2810,6 @@ "embeddableApi.panelNotificationTrigger.title": "パネル通知", "embeddableApi.reactEmbeddable.factoryAlreadyExistsError": "タイプ\"{key}\"の埋め込み可能ファクトリはすでに登録されています。", "embeddableApi.reactEmbeddable.factoryNotFoundError": "タイプ\"{key}\"の埋め込み可能ファクトリが見つかりません", - "embeddableApi.samples.contactCard.displayName": "連絡先カード", - "embeddableApi.samples.filterableContainer.displayName": "フィルター可能なダッシュボード", - "embeddableApi.samples.filterableEmbeddable.displayName": "フィルター可能", "embeddableApi.selectRangeTrigger.description": "ビジュアライゼーションでの値の範囲", "embeddableApi.selectRangeTrigger.title": "範囲選択", "embeddableApi.valueClickTrigger.description": "ビジュアライゼーションでデータポイントをクリック", @@ -3129,17 +3115,6 @@ "exceptionList-components.wildcardWithWrongOperatorCallout.changeTheOperator": "演算子を変更", "exceptionList-components.wildcardWithWrongOperatorCallout.matches": "一致", "exceptionList-components.wildcardWithWrongOperatorCallout.title": "エントリを確認してください", - "expandableFlyout.previewSection.backButton": "戻る", - "expandableFlyout.previewSection.closeButton": "閉じる", - "expandableFlyout.renderMenu.flyoutResizeButton": "サイズをリセット", - "expandableFlyout.renderMenu.flyoutResizeTitle": "フライアウトサイズ", - "expandableFlyout.settingsMenu.flyoutTypeTitle": "フライアウトタイプ", - "expandableFlyout.settingsMenu.overlayMode": "オーバーレイ", - "expandableFlyout.settingsMenu.overlayTooltip": "ページ上にフライアウトを表示します", - "expandableFlyout.settingsMenu.popoverButton": "フライアウト設定", - "expandableFlyout.settingsMenu.popoverTitle": "フライアウト設定", - "expandableFlyout.settingsMenu.pushMode": "プッシュ", - "expandableFlyout.settingsMenu.pushTooltip": "ページの横にフライアウトを表示します", "expressionError.errorComponent.description": "表現が失敗し次のメッセージが返されました:", "expressionError.errorComponent.title": "おっと!表現が失敗しました", "expressionError.renderer.debug.displayName": "デバッグ", @@ -9519,7 +9494,6 @@ "visualizations.editVisualization.readOnlyErrorMessage": "{visTypeTitle}ビジュアライゼーションは読み取り専用であり、エディターで開くことができません。", "visualizations.embeddable.errorTitle": "ビジュアライゼーションを読み込めません", "visualizations.embeddable.inspectorTitle": "インスペクター", - "visualizations.embeddable.legacyURLConflict.errorMessage": "このビジュアライゼーションにはレガシーエイリアスと同じURLがあります。このエラーを解決するには、エイリアスを無効にしてください:{json}", "visualizations.embeddable.placeholderTitle": "プレースホルダータイトル", "visualizations.embeddable.tsdbRollupWarning": "ビジュアライゼーションは、ロールアップされたデータによってサポートされていない関数を使用しています。別の関数を選択するか、時間範囲を選択してください。", "visualizations.experimentalVisInfoText": "将来のリリースでは、変更されるか、完全に削除される場合があります。Elasticはすべての問題の修正に努めますが、テクニカルプレビュー中の機能には正式なGA機能のサポートSLAが適用されません。フィードバックがある場合は、{githubLink}で問題を報告してください。", @@ -9588,9 +9562,7 @@ "visualizations.pageHeading": "{chartName} {chartType}ビジュアライゼーション", "visualizations.readOnlyLegacyVisMessage": "これらの詳細は編集できません。このビジュアライゼーションはサポートされていません。", "visualizations.reporting.defaultReportTitle": "ビジュアライゼーション[{date}]", - "visualizations.savedObjectName": "ビジュアライゼーション", "visualizations.saveDuplicateRejectedDescription": "重複ファイルの保存確認が拒否されました", - "visualizations.savingVisualizationFailed.errorMsg": "ビジュアライゼーションの保存が失敗しました", "visualizations.search.label": "検索", "visualizations.share.shareModal.title": "このビジュアライゼーションを共有", "visualizations.tonNavMenu.tryItBadgeText": "お試しください", @@ -14534,7 +14506,7 @@ "xpack.csp.cnvmDashboardTable.section.topVulnerableResources.column.vulnerabilities": "脆弱性", "xpack.csp.cnvmDashboardTable.section.topVulnerableResources.column.vulnerabilityCount": "脆弱性", "xpack.csp.common.component.multiSelectFilter.searchWord": "検索", - "xpack.csp.common.utils.helpers.unknownError": "不明なエラー", + "sharedPlatformPackages.csp.common.utils.helpers.unknownError": "不明なエラー", "xpack.csp.compactFormattedNumber.naTitle": "N/A", "xpack.csp.complianceScoreBar.tooltipTitle": "{failed}が失敗し、{passed}が調査結果に合格しました", "xpack.csp.complianceScoreChart.counterButtonLink.failedFindingsTooltip": "失敗した調査結果", @@ -14549,9 +14521,9 @@ "xpack.csp.createPackagePolicy.customAssetsTab.rulesViewLabel": "CSPルールを表示", "xpack.csp.createPackagePolicy.customAssetsTab.vulnerabilityDashboardViewLabel": "CNVMダッシュボードを表示", "xpack.csp.createPackagePolicy.customAssetsTab.vulnerabilityFindingsViewLabel": "脆弱性の調査結果を表示", - "xpack.csp.cspEvaluationBadge.failLabel": "失敗", - "xpack.csp.cspEvaluationBadge.naLabel": "N/A", - "xpack.csp.cspEvaluationBadge.passLabel": "合格", + "securitySolutionPackages.csp.cspEvaluationBadge.failLabel": "失敗", + "securitySolutionPackages.csp.cspEvaluationBadge.naLabel": "N/A", + "securitySolutionPackages.csp.cspEvaluationBadge.passLabel": "合格", "xpack.csp.cspIntegration.gcpCloudCredentials.cloudFormationSupportedMessage": "Launch Cloud ShellLaunch Cloud Formation for Automated Credentialsは、現在の統合バージョンではサポートされていません。Launch Cloud Shell for Automated Credentialsを有効化するには、最新バージョンにアップグレードしてください。", "xpack.csp.cspmIntegration.awsOption.benchmarkTitle": "CIS AWS", "xpack.csp.cspmIntegration.awsOption.nameTitle": "AWS", @@ -14634,7 +14606,7 @@ "xpack.csp.findings.distributionBar.totalPassedLabel": "合格した調査結果", "xpack.csp.findings.errorCallout.pageSearchErrorTitle": "検索結果の取得中にエラーが発生しました", "xpack.csp.findings.errorCallout.showErrorButtonLabel": "エラーメッセージを表示", - "xpack.csp.findings.findingsErrorToast.searchFailedTitle": "検索失敗", + "securitySolutionPackages.csp.findings.findingsErrorToast.searchFailedTitle": "検索失敗", "xpack.csp.findings.findingsFlyout.calloutTitle": "一部のフィールドは{vendor}によって提供されていません", "xpack.csp.findings.findingsFlyout.flyoutDescriptionList.resourceId": "リソースID", "xpack.csp.findings.findingsFlyout.flyoutDescriptionList.resourceName": "リソース名", @@ -14803,11 +14775,10 @@ "xpack.csp.kspmIntegration.integration.shortNameTitle": "KSPM", "xpack.csp.kspmIntegration.vanillaOption.benchmarkTitle": "CIS Kubernetes", "xpack.csp.kspmIntegration.vanillaOption.nameTitle": "自己管理", - "xpack.csp.navigation.dashboardNavItemLabel": "クラウドセキュリティ態勢", - "xpack.csp.navigation.findingsNavItemLabel": "調査結果", - "xpack.csp.navigation.myBenchmarksNavItemLabel": "ベンチマーク", - "xpack.csp.navigation.rulesNavItemLabel": "ルール", - "xpack.csp.navigation.vulnerabilityDashboardNavItemLabel": "Cloud Native Vulnerability Management", + "securitySolutionPackages.csp.navigation.dashboardNavItemLabel": "クラウドセキュリティ態勢", + "securitySolutionPackages.csp.navigation.findingsNavItemLabel": "調査結果", + "securitySolutionPackages.csp.navigation.rulesNavItemLabel": "ルール", + "securitySolutionPackages.csp.navigation.vulnerabilityDashboardNavItemLabel": "Cloud Native Vulnerability Management", "xpack.csp.noFindingsStates.indexing.indexingButtonTitle": "態勢評価中", "xpack.csp.noFindingsStates.indexing.indexingDescription": "データの収集とインデックス作成を待機しています。結果を表示するには、しばらくたってから確認してください", "xpack.csp.noFindingsStates.indexTimeout.indexTimeoutDescription": "調査結果の収集に想定よりも時間がかかっています。{docs}。", @@ -15817,7 +15788,6 @@ "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxGenerationAttemptsErrorMessage": "最大生成試行回数({generationAttempts})に達しました。このモデルに送信するアラートの数を減らしてください。", "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxHallucinationFailuresErrorMessage": "最大ハルシネーション失敗回数({hallucinationFailures})に達しました。このモデルに送信するアラートの数を減らしてください。", "xpack.elasticAssistantPlugin.server.newChat": "新しいチャット", - "xpack.embeddableEnhanced.Drilldowns": "ドリルダウン", "xpack.enterpriseSearch.accessControlIndexSelector.p.accessControlSyncsAreLabel": "アクセス制御の同期により、ドキュメントレベルセキュリティ(DLS)の権限情報が最新の状態に保たれます。", "xpack.enterpriseSearch.actions.backButtonLabel": "戻る", "xpack.enterpriseSearch.actions.cancelButtonLabel": "キャンセル", @@ -18184,7 +18154,6 @@ "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.pipelinesLabel": "パイプライン", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.schedulingTitle": "スケジュール", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.syncRulesLabel": "同期ルール", - "xpack.enterpriseSearch.nav.title": "エンタープライズ サーチ", "xpack.enterpriseSearch.navigation.applicationsSearchApplicationsLinkLabel": "検索アプリケーション", "xpack.enterpriseSearch.navigation.appSearchEnginesLinkLabel": "エンジン", "xpack.enterpriseSearch.navigation.contentConnectorsLinkLabel": "コネクター", @@ -18533,8 +18502,6 @@ "xpack.enterpriseSearch.searchNav.build.searchApplications": "検索アプリケーション", "xpack.enterpriseSearch.searchNav.content": "コンテンツ", "xpack.enterpriseSearch.searchNav.devTools": "開発ツール", - "xpack.enterpriseSearch.searchNav.entsearch": "エンタープライズ サーチ", - "xpack.enterpriseSearch.searchNav.entsearch.appSearch": "App Search", "xpack.enterpriseSearch.searchNav.headerSolutionSwitcher.searchSolutionTitle": "検索", "xpack.enterpriseSearch.searchNav.kibana": "Kibana", "xpack.enterpriseSearch.searchNav.management": "管理", @@ -25848,7 +25815,6 @@ "xpack.investigateApp.addObservationUI.h2.addAnObservationChartLabel": "観測グラフを追加", "xpack.investigateApp.addObservationUI.p.selectADataSourceLabel": "データソースを選択して、プレビューグラフを生成", "xpack.investigateApp.appTitle": "調査", - "xpack.investigateApp.assistantHypothesis.observabilityAIAssistantContextualInsight.helpMeInvestigateThisLabel": "このエラーの調査を支援", "xpack.investigateApp.defaultChart.error_equation.description": "式を確認してください。", "xpack.investigateApp.defaultChart.error_equation.title": "グラフの表示中にエラーが発生しました", "xpack.investigateApp.defaultChart.noData.title": "グラフデータがありません", @@ -26012,9 +25978,9 @@ "xpack.lens.app.settingsAriaLabel": "Lens設定メニューを開く", "xpack.lens.app.share.defaultDashboardTitle": "Lensビジュアライゼーション[{date}]", "xpack.lens.app.shareButtonDisabledWarning": "ビジュアライゼーションには共有するデータがありません。", - "xpack.lens.app.shareModal.title": "このLensビジュアライゼーションを共有", "xpack.lens.app.shareModal.draftModeCallout.link.warning": "リンクをコピーして、一時リンクを取得します。Lensビジュアライゼーションを保存して、永続リンクを作成します。", "xpack.lens.app.shareModal.draftModeCallout.title": "保存されていない変更", + "xpack.lens.app.shareModal.title": "このLensビジュアライゼーションを共有", "xpack.lens.app.shareTitle": "共有", "xpack.lens.app.shareTitleAria": "ビジュアライゼーションを共有", "xpack.lens.app.showUnderlyingDataMultipleLayers": "複数レイヤーのビジュアライゼーションでは、基本データを表示できません", @@ -27211,9 +27177,6 @@ "xpack.logsShared.dataSearch.cancelButtonLabel": "リクエストのキャンセル", "xpack.logsShared.dataSearch.loadingErrorRetryButtonLabel": "再試行", "xpack.logsShared.dataSearch.shardFailureErrorMessage": "インデックス {indexName}:{errorMessage}", - "xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.message": "以前はログUI設定ページで提供されていたインデックスとデータ表示オプションは、現在では廃止予定です。Kibanaログソースの詳細設定を使用するように移行してください。", - "xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.message.manualStepMessage": "ログソースKibana詳細設定([管理]>[詳細設定])を、以前にLogs UI設定ページで指定した設定と一致するように更新します。次に、ログUI設定ページで、Kibanaログソースの詳細設定オプションを使用します。", - "xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.title": "ログソース設定", "xpack.logsShared.lobs.logEntryActionsViewInContextButton": "コンテキストで表示", "xpack.logsShared.logEntryActionsMenu.apmActionLabel": "APMで表示", "xpack.logsShared.logEntryActionsMenu.buttonLabel": "調査", @@ -29510,10 +29473,8 @@ "xpack.ml.explorer.distributionChart.valueWithoutAnomalyScoreLabel": "値", "xpack.ml.explorer.invalidKuerySyntaxErrorMessageFromTable": "クエリーバーに無効な構文。インプットは有効な Kibana クエリー言語(KQL)でなければなりません", "xpack.ml.explorer.invalidKuerySyntaxErrorMessageQueryBar": "無効なクエリー", - "xpack.ml.explorer.invalidTimeRangeInUrlCallout": "無効なデフォルト時間フィルターのため、時間フィルターが全範囲に変更されました。{field}の詳細設定を確認してください。", "xpack.ml.explorer.jobIdLabel": "ジョブID", "xpack.ml.explorer.jobScoreAcrossAllInfluencersLabel": "(すべての影響因子のジョブスコア)", - "xpack.ml.explorer.kueryBar.filterPlaceholder": "影響因子フィールドでフィルタリング…({queryExample})", "xpack.ml.explorer.mapTitle": "場所別異常件数{infoTooltip}", "xpack.ml.explorer.noAnomaliesFoundLabel": "異常値が見つかりませんでした", "xpack.ml.explorer.noConfiguredInfluencersTooltip": "選択されたジョブに影響因子が構成されていないため、トップインフルエンスリストは非表示になっています。", @@ -38925,7 +38886,6 @@ "xpack.securitySolution.detectionEngine.rules.updatePrebuiltRulesCalloutTitle": "インストールされたルールの更新が利用可能です。{link}で確認して更新してください。", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedRulesAndTimelinesButton": "{updateRules} Elasticの事前構築済みの{updateRules, plural, other {個のルール}}と{updateTimelines} Elasticの事前構築済みの{updateTimelines, plural, other {個のタイムライン}}を更新", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedTimelinesButton": "{updateTimelines} Elastic事前構築済み{updateTimelines, plural, other {タイムライン}}を更新", - "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.dataSourceLabel": "データソース", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.eqlQueryLabel": "EQL クエリ", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.esqlQueryLabel": "EQLクエリ", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.kqlQueryLabel": "KQLクエリ", @@ -38936,43 +38896,26 @@ "xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.title": "差異ビュー", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionDescriptionLabel": "現在インストールされているルールを表示します", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionLabel": "現在のルール", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.fieldsWithUpdates": "アップグレードには{count} {count, plural, other {個のフィールド}}があります", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfConflicts": "{count} {count, plural, other {件の競合}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel": "編集", "xpack.securitySolution.detectionEngine.rules.upgradeRules.elasticUpdateVersionLabel": "Elastic更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.expandHiddenDiffLinesLabel": "変更されていない{linesCount} {linesCount, plural, other {行}}を展開", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldReadOnly.noteLabel": "調査ガイド", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict": "解決された競合", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription": "この修正されたフィールドの更新を提案しました。承認する前に確認してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflicts": "{count}個のフィールド{count, plural, other {には}}未解決の競合があります。確認し、必要に応じて修正してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflictsDescription": "未解決の競合の情報を入力してください。更新を適用せずに現在の状態を維持することもできます。Elasticの更新を承認すると、修正内容は失われます。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflicts": "{count}個のフィールド{count, plural, other {には}}更新の競合があります。更新中の候補の更新を確認してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflictsDescription": "更新を承認する前に、提案された更新バージョンを確認してください。変更する場合は、編集してフィールドを保存できます。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgrade": "更新を適用できます。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription": "すべての競合が確認され、解決されました。ルールを更新してください。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator": "-", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict": "解決された競合", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription": "この修正されたフィールドの更新を提案しました。承認する前に確認してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAccepted": "更新が承認されました", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAcceptedDescription": "変更を行うことができます。ルールを更新する前に、他のすべての競合を確認/承認してください。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate": "最終更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesBodyTitle": "現在、インストールされているElasticルールに利用可能な更新はありません。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesTitle": "すべてのElasticルールが最新です", "xpack.securitySolution.detectionEngine.rules.upgradeRules.ruleUpgradeHelper": "{docsLink}方法を確認してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.saveButtonLabel": "保存", "xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder": "ルール名で検索", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updatedVersionDescriptionLabel": "インストールされるルールを表示します", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink": "ルールを更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll": "すべて更新", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText": "アップグレードされたルールで使用されるフィールド値を選択してください。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected": "{numberOfSelectedRules}個の選択したルールを更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel": "比較するバージョンを選択", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsCurrentLabel": "基本と現在", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsFinalLabel": "基本と最終", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsTargetLabel": "基本とターゲット", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsFinalLabel": "現在と最終", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsTargetLabel": "現在とターゲット", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.targetVsFinalLabel": "ターゲットと最終", "xpack.securitySolution.detectionEngine.rulesSnoozeBadge.error.unableToFetch": "スヌーズ設定を取得できません", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistant": "アシスタントに聞く", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistantDesc": "ルールの実行失敗メッセージ", @@ -42710,7 +42653,7 @@ "xpack.serverlessSearch.languages.php": "PHP", "xpack.serverlessSearch.languages.php.githubLink": "elasticsearch-serverless-php", "xpack.serverlessSearch.languages.python": "Python", - "xpack.serverlessSearch.languages.python.githubLabel": "elasticsearch-serverless-python", + "xpack.serverlessSearch.languages.python.githubLabel": "elasticsearch-py", "xpack.serverlessSearch.languages.ruby": "Ruby", "xpack.serverlessSearch.languages.ruby.githubLabel": "elasticsearch-serverless-ruby", "xpack.serverlessSearch.learnMore": "詳細", @@ -45047,7 +44990,6 @@ "xpack.stackConnectors.components.inference.taskTypeDetailsLabel": "タスク設定", "xpack.stackConnectors.components.inference.taskTypeFieldLabel": "タスクタイプ", "xpack.stackConnectors.components.inference.taskTypeHelpLabel": "推論タスクを構成します。これらの設定は、選択したサービスおよびモデルに固有です。", - "xpack.stackConnectors.components.inference.taskTypeLabel": "タスクタイプ", "xpack.stackConnectors.components.inference.unableToFindProvidersQueryMessage": "プロバイダーが見つかりません", "xpack.stackConnectors.components.jira.apiTokenTextFieldLabel": "APIトークン", "xpack.stackConnectors.components.jira.apiUrlTextFieldLabel": "URL", @@ -48280,8 +48222,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.flyoutHeader": "再インデックス{index}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.learnMoreLinkLabel": "詳細", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.acceptChangesTitle": "変更を承諾", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningDetail": "マッピングタイプはElastic 8.xではサポートされていません。アプリケーションコードまたはスクリプトが{mappingType}に依存していないことを確認してください。", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningTitle": "マッピングタイプ{mappingType}を{defaultType}で置き換えます", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningDetail": "次の廃止予定のインデックス設定が検出されました。", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningTitle": "廃止予定のインデックス設定を削除", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutDetail": "続行する前に、インデックスをバックアップしてください。再インデックスを続行するには、各変更を承諾してください。", @@ -48477,7 +48417,6 @@ "xpack.upgradeAssistant.overview.logsStep.title": "API廃止予定に対処", "xpack.upgradeAssistant.overview.logsStep.viewLogsButtonLabel": "ログを表示", "xpack.upgradeAssistant.overview.observe.discoveryDescription": "廃止予定ログを検索およびフィルターし、必要な変更のタイプを把握します。", - "xpack.upgradeAssistant.overview.observe.observabilityDescription": "使用中のAPIのうち廃止予定のAPIと、更新が必要なアプリケーションを特定できます。", "xpack.upgradeAssistant.overview.pageDescription": "次のバージョンのElastic Stackをお待ちください。", "xpack.upgradeAssistant.overview.pageTitle": "アップグレードアシスタント", "xpack.upgradeAssistant.overview.snapshotRestoreLink": "スナップショットの作成", @@ -48514,7 +48453,6 @@ "xpack.upgradeAssistant.overview.verifyChanges.resetCounterButton": "カウンターのリセット", "xpack.upgradeAssistant.overview.verifyChanges.retryButton": "再試行", "xpack.upgradeAssistant.overview.viewDiscoverResultsAction": "Discoverでログを分析", - "xpack.upgradeAssistant.overview.viewObservabilityResultsAction": "Logs Explorerで廃止予定ログを表示", "xpack.upgradeAssistant.reindex.reindexPrivilegesErrorBatch": "「{indexName}」に再インデックスするための権限が不十分です。", "xpack.upgradeAssistant.status.allDeprecationsResolvedMessage": "すべての廃止予定の警告が解決されました。", "xpack.upgradeAssistant.status.deprecationsUnresolvedMessage": "アップグレード前に次の問題を解決する必要があります:{upgradeIssues}。", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index 6532e3737dbe6..31f48f1621ef4 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -241,17 +241,8 @@ "charts.legend.toggleLegendButtonAriaLabel": "切换图例", "charts.legend.toggleLegendButtonTitle": "切换图例", "charts.noDataLabel": "找不到结果", - "charts.palettes.complementaryLabel": "互补性", - "charts.palettes.coolLabel": "冷", "charts.palettes.customLabel": "定制", - "charts.palettes.defaultPaletteLabel": "默认", - "charts.palettes.grayLabel": "灰", "charts.palettes.kibanaPaletteLabel": "兼容性", - "charts.palettes.negativeLabel": "负", - "charts.palettes.positiveLabel": "正", - "charts.palettes.statusLabel": "状态", - "charts.palettes.temperatureLabel": "温度", - "charts.palettes.warmLabel": "暖", "charts.partialData.bucketTooltipText": "选定的时间范围不包括此整个存储桶。其可能包含部分数据。", "charts.warning.warningLabel": "{numberWarnings, number} 个{numberWarnings, plural, other {警告}}", "cloud.connectionDetails.apiKeyFormat.beats.description": "用于配置 Beats", @@ -2788,7 +2779,6 @@ "embeddableApi.addPanel.managedPanelTooltip": "Elastic 将管理此面板。将其添加到仪表板会取消其与库的链接。", "embeddableApi.addPanel.noMatchingObjectsMessage": "未找到任何匹配对象。", "embeddableApi.addPanel.Title": "从库中添加", - "embeddableApi.attributeService.saveToLibraryError": "保存时出错。错误:{errorMessage}", "embeddableApi.cellValueTrigger.description": "操作在可视化上的单元格值选项中显示", "embeddableApi.cellValueTrigger.title": "单元格值", "embeddableApi.common.constants.grouping.annotations": "标注和导航", @@ -2800,7 +2790,6 @@ "embeddableApi.errors.embeddableFactoryNotFound": "{type} 无法加载。请升级到具有适当许可的默认 Elasticsearch 和 Kibana 分发。", "embeddableApi.errors.paneldoesNotExist": "未找到面板", "embeddableApi.errors.panelIncompatibleError": "面板 API 不兼容", - "embeddableApi.helloworld.displayName": "hello world", "embeddableApi.multiValueClickTrigger.description": "在可视化上选择多个单一维度的值", "embeddableApi.multiValueClickTrigger.title": "多次单击", "embeddableApi.panelBadgeTrigger.description": "可嵌入对象在面板加载后,操作便显示在标题栏中。", @@ -2811,9 +2800,6 @@ "embeddableApi.panelNotificationTrigger.title": "面板通知", "embeddableApi.reactEmbeddable.factoryAlreadyExistsError": "已注册类型为 {key} 的可嵌入工厂。", "embeddableApi.reactEmbeddable.factoryNotFoundError": "未找到类型为 {key} 的可嵌入工厂", - "embeddableApi.samples.contactCard.displayName": "联系卡片", - "embeddableApi.samples.filterableContainer.displayName": "可筛选仪表板", - "embeddableApi.samples.filterableEmbeddable.displayName": "可筛选", "embeddableApi.selectRangeTrigger.description": "可视化上的值范围", "embeddableApi.selectRangeTrigger.title": "范围选择", "embeddableApi.valueClickTrigger.description": "可视化上的数据点单击", @@ -3119,17 +3105,6 @@ "exceptionList-components.wildcardWithWrongOperatorCallout.changeTheOperator": "更改运算符", "exceptionList-components.wildcardWithWrongOperatorCallout.matches": "匹配", "exceptionList-components.wildcardWithWrongOperatorCallout.title": "请复查您的条目", - "expandableFlyout.previewSection.backButton": "返回", - "expandableFlyout.previewSection.closeButton": "关闭", - "expandableFlyout.renderMenu.flyoutResizeButton": "重置大小", - "expandableFlyout.renderMenu.flyoutResizeTitle": "浮出控件大小", - "expandableFlyout.settingsMenu.flyoutTypeTitle": "浮出控件类型", - "expandableFlyout.settingsMenu.overlayMode": "覆盖", - "expandableFlyout.settingsMenu.overlayTooltip": "在页面上显示浮出控件", - "expandableFlyout.settingsMenu.popoverButton": "浮出控件设置", - "expandableFlyout.settingsMenu.popoverTitle": "浮出控件设置", - "expandableFlyout.settingsMenu.pushMode": "推送", - "expandableFlyout.settingsMenu.pushTooltip": "在页面旁显示浮出控件", "expressionError.errorComponent.description": "表达式失败,并显示消息:", "expressionError.errorComponent.title": "哎哟!表达式失败", "expressionError.renderer.debug.displayName": "故障排查", @@ -9371,7 +9346,6 @@ "visualizations.editVisualization.readOnlyErrorMessage": "{visTypeTitle} 可视化为只读状态,无法在编辑器中打开", "visualizations.embeddable.errorTitle": "无法加载可视化", "visualizations.embeddable.inspectorTitle": "检查器", - "visualizations.embeddable.legacyURLConflict.errorMessage": "此可视化具有与旧版别名相同的 URL。请禁用别名以解决此错误:{json}", "visualizations.embeddable.placeholderTitle": "占位符标题", "visualizations.embeddable.tsdbRollupWarning": "可视化使用的函数不受汇总/打包数据支持。请选择其他函数,或更改时间范围。", "visualizations.experimentalVisInfoText": "在未来版本中可能会更改或完全移除。Elastic 将努力修复任何问题,但处于技术预览状态的功能不受正式 GA 功能支持 SLA 的约束。如欲提供反馈,请在 {githubLink} 中创建问题。", @@ -9439,9 +9413,7 @@ "visualizations.pageHeading": "{chartName} {chartType} 可视化", "visualizations.readOnlyLegacyVisMessage": "无法编辑这些详情,因为不再支持此可视化。", "visualizations.reporting.defaultReportTitle": "可视化 [{date}]", - "visualizations.savedObjectName": "可视化", "visualizations.saveDuplicateRejectedDescription": "已拒绝使用重复标题保存确认", - "visualizations.savingVisualizationFailed.errorMsg": "保存可视化失败", "visualizations.search.label": "搜索", "visualizations.share.shareModal.title": "共享此可视化", "visualizations.tonNavMenu.tryItBadgeText": "试用", @@ -14261,7 +14233,7 @@ "xpack.csp.cnvmDashboardTable.section.topVulnerableResources.column.vulnerabilities": "漏洞", "xpack.csp.cnvmDashboardTable.section.topVulnerableResources.column.vulnerabilityCount": "漏洞", "xpack.csp.common.component.multiSelectFilter.searchWord": "搜索", - "xpack.csp.common.utils.helpers.unknownError": "未知错误", + "sharedPlatformPackages.csp.common.utils.helpers.unknownError": "未知错误", "xpack.csp.compactFormattedNumber.naTitle": "不可用", "xpack.csp.complianceScoreBar.tooltipTitle": "{failed} 个失败和 {passed} 个通过的结果", "xpack.csp.complianceScoreChart.counterButtonLink.failedFindingsTooltip": "失败的结果", @@ -14276,9 +14248,9 @@ "xpack.csp.createPackagePolicy.customAssetsTab.rulesViewLabel": "查看 CSP 规则", "xpack.csp.createPackagePolicy.customAssetsTab.vulnerabilityDashboardViewLabel": "查看 CNVM 仪表板", "xpack.csp.createPackagePolicy.customAssetsTab.vulnerabilityFindingsViewLabel": "查看漏洞结果", - "xpack.csp.cspEvaluationBadge.failLabel": "失败", - "xpack.csp.cspEvaluationBadge.naLabel": "不可用", - "xpack.csp.cspEvaluationBadge.passLabel": "通过", + "securitySolutionPackages.csp.cspEvaluationBadge.failLabel": "失败", + "securitySolutionPackages.csp.cspEvaluationBadge.naLabel": "不可用", + "securitySolutionPackages.csp.cspEvaluationBadge.passLabel": "通过", "xpack.csp.cspIntegration.gcpCloudCredentials.cloudFormationSupportedMessage": "当前集成版本不支持为自动化凭据启动 Cloud Shell。请升级到最新版本以启用为自动化凭据启动 Cloud Shell。", "xpack.csp.cspmIntegration.awsOption.benchmarkTitle": "CIS AWS", "xpack.csp.cspmIntegration.awsOption.nameTitle": "AWS", @@ -14362,7 +14334,7 @@ "xpack.csp.findings.distributionBar.totalPassedLabel": "通过的结果", "xpack.csp.findings.errorCallout.pageSearchErrorTitle": "检索搜索结果时遇到问题", "xpack.csp.findings.errorCallout.showErrorButtonLabel": "显示错误消息", - "xpack.csp.findings.findingsErrorToast.searchFailedTitle": "搜索失败", + "securitySolutionPackages.csp.findings.findingsErrorToast.searchFailedTitle": "搜索失败", "xpack.csp.findings.findingsFlyout.calloutTitle": "{vendor} 未提供某些字段", "xpack.csp.findings.findingsFlyout.flyoutDescriptionList.resourceId": "资源 ID", "xpack.csp.findings.findingsFlyout.flyoutDescriptionList.resourceName": "资源名称", @@ -14532,11 +14504,10 @@ "xpack.csp.kspmIntegration.integration.shortNameTitle": "KSPM", "xpack.csp.kspmIntegration.vanillaOption.benchmarkTitle": "CIS Kubernetes", "xpack.csp.kspmIntegration.vanillaOption.nameTitle": "自管型", - "xpack.csp.navigation.dashboardNavItemLabel": "云安全态势", - "xpack.csp.navigation.findingsNavItemLabel": "结果", - "xpack.csp.navigation.myBenchmarksNavItemLabel": "基准", - "xpack.csp.navigation.rulesNavItemLabel": "规则", - "xpack.csp.navigation.vulnerabilityDashboardNavItemLabel": "云原生漏洞管理", + "securitySolutionPackages.csp.navigation.dashboardNavItemLabel": "云安全态势", + "securitySolutionPackages.csp.navigation.findingsNavItemLabel": "结果", + "securitySolutionPackages.csp.navigation.rulesNavItemLabel": "规则", + "securitySolutionPackages.csp.navigation.vulnerabilityDashboardNavItemLabel": "云原生漏洞管理", "xpack.csp.noFindingsStates.indexing.indexingButtonTitle": "正进行态势评估", "xpack.csp.noFindingsStates.indexing.indexingDescription": "正在等待要收集和索引的数据。请稍后返回检查以查看结果", "xpack.csp.noFindingsStates.indexTimeout.indexTimeoutDescription": "收集结果所需的时间长于预期。{docs}。", @@ -15537,7 +15508,6 @@ "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxGenerationAttemptsErrorMessage": "已达到最大生成尝试次数 ({generationAttempts})。尝试向此模型发送更少的告警。", "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxHallucinationFailuresErrorMessage": "已达到最大幻觉失败次数 ({hallucinationFailures})。尝试向此模型发送更少的告警。", "xpack.elasticAssistantPlugin.server.newChat": "新聊天", - "xpack.embeddableEnhanced.Drilldowns": "向下钻取", "xpack.enterpriseSearch.accessControlIndexSelector.p.accessControlSyncsAreLabel": "访问控制同步会使权限信息保持最新以实现文档级别安全性 (DLS)", "xpack.enterpriseSearch.actions.backButtonLabel": "返回", "xpack.enterpriseSearch.actions.cancelButtonLabel": "取消", @@ -17881,7 +17851,6 @@ "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.pipelinesLabel": "管道", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.schedulingTitle": "正在计划", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.syncRulesLabel": "同步规则", - "xpack.enterpriseSearch.nav.title": "Enterprise Search", "xpack.enterpriseSearch.navigation.applicationsSearchApplicationsLinkLabel": "搜索应用程序", "xpack.enterpriseSearch.navigation.appSearchEnginesLinkLabel": "引擎", "xpack.enterpriseSearch.navigation.contentConnectorsLinkLabel": "连接器", @@ -18231,8 +18200,6 @@ "xpack.enterpriseSearch.searchNav.build.searchApplications": "搜索应用程序", "xpack.enterpriseSearch.searchNav.content": "内容", "xpack.enterpriseSearch.searchNav.devTools": "开发工具", - "xpack.enterpriseSearch.searchNav.entsearch": "Enterprise Search", - "xpack.enterpriseSearch.searchNav.entsearch.appSearch": "App Search", "xpack.enterpriseSearch.searchNav.headerSolutionSwitcher.searchSolutionTitle": "搜索", "xpack.enterpriseSearch.searchNav.kibana": "Kibana", "xpack.enterpriseSearch.searchNav.management": "管理", @@ -25411,7 +25378,6 @@ "xpack.investigateApp.addObservationUI.h2.addAnObservationChartLabel": "添加观察图表", "xpack.investigateApp.addObservationUI.p.selectADataSourceLabel": "选择数据源以生成预览图表", "xpack.investigateApp.appTitle": "调查", - "xpack.investigateApp.assistantHypothesis.observabilityAIAssistantContextualInsight.helpMeInvestigateThisLabel": "帮助我调查此故障", "xpack.investigateApp.defaultChart.error_equation.description": "检查方程。", "xpack.investigateApp.defaultChart.error_equation.title": "渲染图表时出错", "xpack.investigateApp.defaultChart.noData.title": "没有可用图表数据", @@ -25574,9 +25540,9 @@ "xpack.lens.app.settingsAriaLabel": "打开 Lens 设置菜单", "xpack.lens.app.share.defaultDashboardTitle": "Lens 可视化 [{date}]", "xpack.lens.app.shareButtonDisabledWarning": "此可视化没有可共享的数据。", - "xpack.lens.app.shareModal.title": "共享此 Lens 可视化", "xpack.lens.app.shareModal.draftModeCallout.link.warning": "复制链接以获取临时链接。保存 Lens 可视化以创建永久链接。", "xpack.lens.app.shareModal.draftModeCallout.title": "未保存的更改", + "xpack.lens.app.shareModal.title": "共享此 Lens 可视化", "xpack.lens.app.shareTitle": "共享", "xpack.lens.app.shareTitleAria": "共享可视化", "xpack.lens.app.showUnderlyingDataMultipleLayers": "无法显示具有多个图层的可视化的底层数据", @@ -26769,9 +26735,6 @@ "xpack.logsShared.dataSearch.cancelButtonLabel": "取消请求", "xpack.logsShared.dataSearch.loadingErrorRetryButtonLabel": "重试", "xpack.logsShared.dataSearch.shardFailureErrorMessage": "索引 {indexName}:{errorMessage}", - "xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.message": "以前通过日志 UI 设置页面提供的索引和数据视图选项现已弃用。请进行迁移,以使用 Kibana 日志源高级设置。", - "xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.message.manualStepMessage": "更新日志源 Kibana 高级设置(通过'管理 > 高级设置'),以匹配以前通过日志 UI 设置页面提供的设置。然后,通过日志 UI 设置页面使用 Kibana 日志源高级设置选项。", - "xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.title": "日志源设置", "xpack.logsShared.lobs.logEntryActionsViewInContextButton": "在上下文中查看", "xpack.logsShared.logEntryActionsMenu.apmActionLabel": "在 APM 中查看", "xpack.logsShared.logEntryActionsMenu.buttonLabel": "调查", @@ -29034,10 +28997,8 @@ "xpack.ml.explorer.distributionChart.valueWithoutAnomalyScoreLabel": "值", "xpack.ml.explorer.invalidKuerySyntaxErrorMessageFromTable": "查询栏中的语法无效。输入必须是有效的 Kibana 查询语言 (KQL)", "xpack.ml.explorer.invalidKuerySyntaxErrorMessageQueryBar": "无效查询", - "xpack.ml.explorer.invalidTimeRangeInUrlCallout": "由于默认时间筛选无效,时间筛选已更改为完整范围。检查 {field} 的高级设置。", "xpack.ml.explorer.jobIdLabel": "作业 ID", "xpack.ml.explorer.jobScoreAcrossAllInfluencersLabel": "(所有影响因素的作业分数)", - "xpack.ml.explorer.kueryBar.filterPlaceholder": "按影响因素字段筛选……({queryExample})", "xpack.ml.explorer.mapTitle": "异常计数(按位置){infoTooltip}", "xpack.ml.explorer.noAnomaliesFoundLabel": "找不到异常", "xpack.ml.explorer.noConfiguredInfluencersTooltip": "'排名最前影响因素'列表被隐藏,因为没有为所选作业配置影响因素。", @@ -38349,7 +38310,6 @@ "xpack.securitySolution.detectionEngine.rules.updatePrebuiltRulesCalloutTitle": "已安装规则有可用更新。在 {link} 中复查并更新。", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedRulesAndTimelinesButton": "更新 {updateRules} 个 Elastic 预构建{updateRules, plural, other {规则}}及 {updateTimelines} 个 Elastic 预构建{updateTimelines, plural, other {时间线}}", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedTimelinesButton": "更新 {updateTimelines} 个 Elastic 预构建{updateTimelines, plural, other {时间线}}", - "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.dataSourceLabel": "数据源", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.eqlQueryLabel": "EQL 查询", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.esqlQueryLabel": "ESQL 查询", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.kqlQueryLabel": "KQL 查询", @@ -38360,43 +38320,26 @@ "xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.title": "差异视图", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionDescriptionLabel": "显示当前安装的规则", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionLabel": "当前规则", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.fieldsWithUpdates": "升级包含 {count} 个{count, plural, other {字段}}", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfConflicts": "{count} 个{count, plural, other {冲突}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel": "编辑", "xpack.securitySolution.detectionEngine.rules.upgradeRules.elasticUpdateVersionLabel": "Elastic 更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.expandHiddenDiffLinesLabel": "展开 {linesCount} 个未更改的{linesCount, plural, other {行}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldReadOnly.noteLabel": "调查指南", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict": "已解决冲突", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription": "我们已为这个已修改字段推荐了更新,请在接受前进行复查。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflicts": "{count} 个字段{count, plural, other {存在}}未解决的冲突。请复查并做出相应更改。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflictsDescription": "请为未解决的冲突提供输入。您还可以保持现状而不进行更新,也可以接受 Elastic 更新但丢失修改。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflicts": "{count} 个字段{count, plural, other {存在}}更新冲突,请复查正在更新的建议更新。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflictsDescription": "在接受更新之前,请复查建议的已更新版本。如果希望更改字段,您可以编辑然后保存字段。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgrade": "更新已准备就绪,可以应用。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription": "现已复查并解决所有冲突,请更新规则。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator": "-", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict": "已解决冲突", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription": "我们已为这个已修改字段推荐了更新,请在接受前进行复查。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAccepted": "已接受更新", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAcceptedDescription": "您仍然可以做出更改,在更新规则之前,请复查/接受所有其他冲突。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate": "最后更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesBodyTitle": "您已安装的 Elastic 规则当前没有可用更新。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesTitle": "所有 Elastic 规则均保持最新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.ruleUpgradeHelper": "了解如何 {docsLink}。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.saveButtonLabel": "保存", "xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder": "按规则名称搜索", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updatedVersionDescriptionLabel": "显示将安装的规则", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink": "更新您的规则", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll": "全部更新", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText": "选择用在已升级规则中的字段值。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected": "更新 {numberOfSelectedRules} 个选定规则", "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel": "选择要比较的版本", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsCurrentLabel": "基础与当前", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsFinalLabel": "基础与最终", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsTargetLabel": "基础与目标", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsFinalLabel": "当前与最终", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsTargetLabel": "当前与目标", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.targetVsFinalLabel": "目标与最终", "xpack.securitySolution.detectionEngine.rulesSnoozeBadge.error.unableToFetch": "无法提取暂停设置", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistant": "询问助手", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistantDesc": "规则的执行失败消息", @@ -42092,7 +42035,7 @@ "xpack.serverlessSearch.languages.php": "PHP", "xpack.serverlessSearch.languages.php.githubLink": "elasticsearch-serverless-php", "xpack.serverlessSearch.languages.python": "Python", - "xpack.serverlessSearch.languages.python.githubLabel": "elasticsearch-serverless-python", + "xpack.serverlessSearch.languages.python.githubLabel": "elasticsearch-py", "xpack.serverlessSearch.languages.ruby": "Ruby", "xpack.serverlessSearch.languages.ruby.githubLabel": "elasticsearch-serverless-ruby", "xpack.serverlessSearch.learnMore": "了解详情", @@ -44378,7 +44321,6 @@ "xpack.stackConnectors.components.inference.taskTypeDetailsLabel": "任务设置", "xpack.stackConnectors.components.inference.taskTypeFieldLabel": "任务类型", "xpack.stackConnectors.components.inference.taskTypeHelpLabel": "配置推理任务。这些设置特定于选定服务和模型。", - "xpack.stackConnectors.components.inference.taskTypeLabel": "任务类型", "xpack.stackConnectors.components.inference.unableToFindProvidersQueryMessage": "找不到提供商", "xpack.stackConnectors.components.jira.apiTokenTextFieldLabel": "API 令牌", "xpack.stackConnectors.components.jira.apiUrlTextFieldLabel": "URL", @@ -47569,8 +47511,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.flyoutHeader": "重新索引 {index}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.learnMoreLinkLabel": "了解详情", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.acceptChangesTitle": "接受更改", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningDetail": "映射类型在 Elastic 8.x 中不再受支持。确保没有应用程序代码或脚本依赖 {mappingType}。", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningTitle": "将映射类型 {mappingType} 替换为 {defaultType}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningDetail": "检测到以下弃用的索引设置:", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningTitle": "移除弃用的索引设置", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutDetail": "继续前备份索引。要继续重新索引,请接受每个更改。", @@ -47766,7 +47706,6 @@ "xpack.upgradeAssistant.overview.logsStep.title": "解决 API 弃用", "xpack.upgradeAssistant.overview.logsStep.viewLogsButtonLabel": "查看日志", "xpack.upgradeAssistant.overview.observe.discoveryDescription": "搜索并筛选弃用日志以了解需要进行的更改类型。", - "xpack.upgradeAssistant.overview.observe.observabilityDescription": "深入了解正在使用哪些已弃用 API 以及需要更新哪些应用程序。", "xpack.upgradeAssistant.overview.pageDescription": "准备使用下一版 Elastic Stack!", "xpack.upgradeAssistant.overview.pageTitle": "升级助手", "xpack.upgradeAssistant.overview.snapshotRestoreLink": "创建快照", @@ -47803,7 +47742,6 @@ "xpack.upgradeAssistant.overview.verifyChanges.resetCounterButton": "重置计数器", "xpack.upgradeAssistant.overview.verifyChanges.retryButton": "重试", "xpack.upgradeAssistant.overview.viewDiscoverResultsAction": "在 Discover 中分析日志", - "xpack.upgradeAssistant.overview.viewObservabilityResultsAction": "在日志浏览器中查看弃用日志", "xpack.upgradeAssistant.status.allDeprecationsResolvedMessage": "所有弃用警告均已解决。", "xpack.upgradeAssistant.status.deprecationsUnresolvedMessage": "在升级之前必须解决以下问题:{upgradeIssues}。", "xpack.upgradeAssistant.status.esTotalCriticalDepsMessage": "{esTotalCriticalDeps} 个 Elasticsearch 弃用{esTotalCriticalDeps, plural, other {问题}}", diff --git a/x-pack/plugins/watcher/README.md b/x-pack/platform/plugins/private/watcher/README.md similarity index 100% rename from x-pack/plugins/watcher/README.md rename to x-pack/platform/plugins/private/watcher/README.md diff --git a/x-pack/plugins/watcher/__fixtures__/execute_details.ts b/x-pack/platform/plugins/private/watcher/__fixtures__/execute_details.ts similarity index 100% rename from x-pack/plugins/watcher/__fixtures__/execute_details.ts rename to x-pack/platform/plugins/private/watcher/__fixtures__/execute_details.ts diff --git a/x-pack/plugins/watcher/__fixtures__/get_watch_history.ts b/x-pack/platform/plugins/private/watcher/__fixtures__/get_watch_history.ts similarity index 100% rename from x-pack/plugins/watcher/__fixtures__/get_watch_history.ts rename to x-pack/platform/plugins/private/watcher/__fixtures__/get_watch_history.ts diff --git a/x-pack/plugins/watcher/__fixtures__/index.ts b/x-pack/platform/plugins/private/watcher/__fixtures__/index.ts similarity index 100% rename from x-pack/plugins/watcher/__fixtures__/index.ts rename to x-pack/platform/plugins/private/watcher/__fixtures__/index.ts diff --git a/x-pack/plugins/watcher/__fixtures__/watch.ts b/x-pack/platform/plugins/private/watcher/__fixtures__/watch.ts similarity index 100% rename from x-pack/plugins/watcher/__fixtures__/watch.ts rename to x-pack/platform/plugins/private/watcher/__fixtures__/watch.ts diff --git a/x-pack/plugins/watcher/__jest__/__snapshots__/license_prompt.test.tsx.snap b/x-pack/platform/plugins/private/watcher/__jest__/__snapshots__/license_prompt.test.tsx.snap similarity index 100% rename from x-pack/plugins/watcher/__jest__/__snapshots__/license_prompt.test.tsx.snap rename to x-pack/platform/plugins/private/watcher/__jest__/__snapshots__/license_prompt.test.tsx.snap diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/app_context.mock.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/app_context.mock.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/app_context.mock.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/app_context.mock.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/http_requests.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/http_requests.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/http_requests.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/http_requests.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/index.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/index.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/index.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/index.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/jest_constants.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/jest_constants.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/jest_constants.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/jest_constants.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/setup_environment.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/setup_environment.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/setup_environment.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_json_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_create_json_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_json_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_create_json_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_create_json_page.test.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_create_json_page.test.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_edit_page.test.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_edit_page.test.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_edit_page.test.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_edit_page.test.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_list_page.test.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_list_page.test.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_list_page.test.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_list_page.test.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_status_page.test.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_status_page.test.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_status_page.test.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_status_page.test.ts diff --git a/x-pack/plugins/watcher/__jest__/license_prompt.test.tsx b/x-pack/platform/plugins/private/watcher/__jest__/license_prompt.test.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/license_prompt.test.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/license_prompt.test.tsx diff --git a/x-pack/plugins/watcher/common/constants/action_modes.ts b/x-pack/platform/plugins/private/watcher/common/constants/action_modes.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/action_modes.ts rename to x-pack/platform/plugins/private/watcher/common/constants/action_modes.ts diff --git a/x-pack/plugins/watcher/common/constants/action_states.ts b/x-pack/platform/plugins/private/watcher/common/constants/action_states.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/action_states.ts rename to x-pack/platform/plugins/private/watcher/common/constants/action_states.ts diff --git a/x-pack/plugins/watcher/common/constants/action_types.ts b/x-pack/platform/plugins/private/watcher/common/constants/action_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/action_types.ts rename to x-pack/platform/plugins/private/watcher/common/constants/action_types.ts diff --git a/x-pack/plugins/watcher/common/constants/agg_types.ts b/x-pack/platform/plugins/private/watcher/common/constants/agg_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/agg_types.ts rename to x-pack/platform/plugins/private/watcher/common/constants/agg_types.ts diff --git a/x-pack/plugins/watcher/common/constants/comparators.ts b/x-pack/platform/plugins/private/watcher/common/constants/comparators.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/comparators.ts rename to x-pack/platform/plugins/private/watcher/common/constants/comparators.ts diff --git a/x-pack/plugins/watcher/common/constants/error_codes.ts b/x-pack/platform/plugins/private/watcher/common/constants/error_codes.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/error_codes.ts rename to x-pack/platform/plugins/private/watcher/common/constants/error_codes.ts diff --git a/x-pack/plugins/watcher/common/constants/es_scroll_settings.ts b/x-pack/platform/plugins/private/watcher/common/constants/es_scroll_settings.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/es_scroll_settings.ts rename to x-pack/platform/plugins/private/watcher/common/constants/es_scroll_settings.ts diff --git a/x-pack/plugins/watcher/common/constants/index.ts b/x-pack/platform/plugins/private/watcher/common/constants/index.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/index.ts rename to x-pack/platform/plugins/private/watcher/common/constants/index.ts diff --git a/x-pack/plugins/watcher/common/constants/index_names.ts b/x-pack/platform/plugins/private/watcher/common/constants/index_names.ts similarity index 79% rename from x-pack/plugins/watcher/common/constants/index_names.ts rename to x-pack/platform/plugins/private/watcher/common/constants/index_names.ts index b854ecd047483..64425387dc138 100644 --- a/x-pack/plugins/watcher/common/constants/index_names.ts +++ b/x-pack/platform/plugins/private/watcher/common/constants/index_names.ts @@ -5,7 +5,6 @@ * 2.0. */ -export const INDEX_NAMES: { [key: string]: string } = { - WATCHES: '.watches', +export const INDEX_NAMES = { WATCHER_HISTORY: '.watcher-history-*', }; diff --git a/x-pack/plugins/watcher/common/constants/lists.ts b/x-pack/platform/plugins/private/watcher/common/constants/lists.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/lists.ts rename to x-pack/platform/plugins/private/watcher/common/constants/lists.ts diff --git a/x-pack/plugins/watcher/common/constants/pagination.ts b/x-pack/platform/plugins/private/watcher/common/constants/pagination.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/pagination.ts rename to x-pack/platform/plugins/private/watcher/common/constants/pagination.ts diff --git a/x-pack/plugins/watcher/common/constants/plugin.ts b/x-pack/platform/plugins/private/watcher/common/constants/plugin.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/plugin.ts rename to x-pack/platform/plugins/private/watcher/common/constants/plugin.ts diff --git a/x-pack/plugins/watcher/common/constants/refresh_intervals.ts b/x-pack/platform/plugins/private/watcher/common/constants/refresh_intervals.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/refresh_intervals.ts rename to x-pack/platform/plugins/private/watcher/common/constants/refresh_intervals.ts diff --git a/x-pack/plugins/watcher/common/constants/routes.ts b/x-pack/platform/plugins/private/watcher/common/constants/routes.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/routes.ts rename to x-pack/platform/plugins/private/watcher/common/constants/routes.ts diff --git a/x-pack/plugins/watcher/common/constants/sort_orders.ts b/x-pack/platform/plugins/private/watcher/common/constants/sort_orders.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/sort_orders.ts rename to x-pack/platform/plugins/private/watcher/common/constants/sort_orders.ts diff --git a/x-pack/plugins/watcher/common/constants/time_units.ts b/x-pack/platform/plugins/private/watcher/common/constants/time_units.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/time_units.ts rename to x-pack/platform/plugins/private/watcher/common/constants/time_units.ts diff --git a/x-pack/plugins/watcher/common/constants/watch_history.ts b/x-pack/platform/plugins/private/watcher/common/constants/watch_history.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/watch_history.ts rename to x-pack/platform/plugins/private/watcher/common/constants/watch_history.ts diff --git a/x-pack/plugins/watcher/common/constants/watch_state_comments.ts b/x-pack/platform/plugins/private/watcher/common/constants/watch_state_comments.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/watch_state_comments.ts rename to x-pack/platform/plugins/private/watcher/common/constants/watch_state_comments.ts diff --git a/x-pack/plugins/watcher/common/constants/watch_states.ts b/x-pack/platform/plugins/private/watcher/common/constants/watch_states.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/watch_states.ts rename to x-pack/platform/plugins/private/watcher/common/constants/watch_states.ts diff --git a/x-pack/plugins/watcher/common/constants/watch_types.ts b/x-pack/platform/plugins/private/watcher/common/constants/watch_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/watch_types.ts rename to x-pack/platform/plugins/private/watcher/common/constants/watch_types.ts diff --git a/x-pack/plugins/watcher/common/lib/get_action_type/get_action_type.test.js b/x-pack/platform/plugins/private/watcher/common/lib/get_action_type/get_action_type.test.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_action_type/get_action_type.test.js rename to x-pack/platform/plugins/private/watcher/common/lib/get_action_type/get_action_type.test.js diff --git a/x-pack/plugins/watcher/common/lib/get_action_type/get_action_type.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_action_type/get_action_type.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_action_type/get_action_type.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_action_type/get_action_type.ts diff --git a/x-pack/plugins/watcher/common/lib/get_action_type/index.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_action_type/index.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_action_type/index.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_action_type/index.ts diff --git a/x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_moment/get_moment.test.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_moment/get_moment.test.ts diff --git a/x-pack/plugins/watcher/common/lib/get_moment/get_moment.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_moment/get_moment.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_moment/get_moment.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_moment/get_moment.ts diff --git a/x-pack/plugins/watcher/common/lib/get_moment/index.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_moment/index.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_moment/index.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_moment/index.ts diff --git a/x-pack/plugins/watcher/common/lib/serialization/index.d.ts b/x-pack/platform/plugins/private/watcher/common/lib/serialization/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/index.d.ts rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/index.d.ts diff --git a/x-pack/plugins/watcher/common/lib/serialization/index.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/index.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/index.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/index.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_actions.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_actions.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_actions.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_actions.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_condition.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_condition.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_condition.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_condition.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_input.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_input.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_input.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_input.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_metadata.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_metadata.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_metadata.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_metadata.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_transform.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_transform.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_transform.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_transform.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_trigger.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_trigger.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_trigger.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_trigger.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/index.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/index.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/index.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/index.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/single_line_script.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/single_line_script.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/single_line_script.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/single_line_script.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialize_json_watch.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_json_watch.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialize_json_watch.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_json_watch.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialize_json_watch.test.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_json_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialize_json_watch.test.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_json_watch.test.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialize_threshold_watch.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_threshold_watch.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialize_threshold_watch.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_threshold_watch.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialize_threshold_watch.test.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_threshold_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialize_threshold_watch.test.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_threshold_watch.test.js diff --git a/x-pack/plugins/watcher/common/models/action/action.js b/x-pack/platform/plugins/private/watcher/common/models/action/action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/action.js diff --git a/x-pack/plugins/watcher/common/models/action/action.test.js b/x-pack/platform/plugins/private/watcher/common/models/action/action.test.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/action.test.js rename to x-pack/platform/plugins/private/watcher/common/models/action/action.test.js diff --git a/x-pack/plugins/watcher/common/models/action/base_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/base_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/base_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/base_action.js diff --git a/x-pack/plugins/watcher/common/models/action/email_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/email_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/email_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/email_action.js diff --git a/x-pack/plugins/watcher/common/models/action/index.js b/x-pack/platform/plugins/private/watcher/common/models/action/index.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/index.js rename to x-pack/platform/plugins/private/watcher/common/models/action/index.js diff --git a/x-pack/plugins/watcher/common/models/action/index_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/index_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/index_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/index_action.js diff --git a/x-pack/plugins/watcher/common/models/action/jira_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/jira_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/jira_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/jira_action.js diff --git a/x-pack/plugins/watcher/common/models/action/logging_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/logging_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/logging_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/logging_action.js diff --git a/x-pack/plugins/watcher/common/models/action/pagerduty_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/pagerduty_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/pagerduty_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/pagerduty_action.js diff --git a/x-pack/plugins/watcher/common/models/action/slack_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/slack_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/slack_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/slack_action.js diff --git a/x-pack/plugins/watcher/common/models/action/unknown_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/unknown_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/unknown_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/unknown_action.js diff --git a/x-pack/plugins/watcher/common/models/action/webhook_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/webhook_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/webhook_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/webhook_action.js diff --git a/x-pack/plugins/watcher/common/types/action_types.ts b/x-pack/platform/plugins/private/watcher/common/types/action_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/action_types.ts rename to x-pack/platform/plugins/private/watcher/common/types/action_types.ts diff --git a/x-pack/plugins/watcher/common/types/index.ts b/x-pack/platform/plugins/private/watcher/common/types/index.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/index.ts rename to x-pack/platform/plugins/private/watcher/common/types/index.ts diff --git a/x-pack/plugins/watcher/common/types/license_status.ts b/x-pack/platform/plugins/private/watcher/common/types/license_status.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/license_status.ts rename to x-pack/platform/plugins/private/watcher/common/types/license_status.ts diff --git a/x-pack/plugins/watcher/common/types/status_types.ts b/x-pack/platform/plugins/private/watcher/common/types/status_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/status_types.ts rename to x-pack/platform/plugins/private/watcher/common/types/status_types.ts diff --git a/x-pack/plugins/watcher/common/types/watch_types.ts b/x-pack/platform/plugins/private/watcher/common/types/watch_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/watch_types.ts rename to x-pack/platform/plugins/private/watcher/common/types/watch_types.ts diff --git a/x-pack/platform/plugins/private/watcher/jest.config.js b/x-pack/platform/plugins/private/watcher/jest.config.js new file mode 100644 index 0000000000000..ac6ccc83eea58 --- /dev/null +++ b/x-pack/platform/plugins/private/watcher/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/watcher'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/watcher', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/watcher/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/watcher/kibana.jsonc b/x-pack/platform/plugins/private/watcher/kibana.jsonc similarity index 100% rename from x-pack/plugins/watcher/kibana.jsonc rename to x-pack/platform/plugins/private/watcher/kibana.jsonc diff --git a/x-pack/plugins/watcher/public/application/app.tsx b/x-pack/platform/plugins/private/watcher/public/application/app.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/app.tsx rename to x-pack/platform/plugins/private/watcher/public/application/app.tsx diff --git a/x-pack/plugins/watcher/public/application/app_context.tsx b/x-pack/platform/plugins/private/watcher/public/application/app_context.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/app_context.tsx rename to x-pack/platform/plugins/private/watcher/public/application/app_context.tsx diff --git a/x-pack/plugins/watcher/public/application/components/action_state_badge.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/action_state_badge.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/action_state_badge.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/action_state_badge.tsx diff --git a/x-pack/plugins/watcher/public/application/components/confirm_watches_modal.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/confirm_watches_modal.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/confirm_watches_modal.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/confirm_watches_modal.tsx diff --git a/x-pack/plugins/watcher/public/application/components/delete_watches_modal.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/delete_watches_modal.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/delete_watches_modal.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/delete_watches_modal.tsx diff --git a/x-pack/plugins/watcher/public/application/components/form_errors.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/form_errors.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/form_errors.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/form_errors.tsx diff --git a/x-pack/plugins/watcher/public/application/components/index.ts b/x-pack/platform/plugins/private/watcher/public/application/components/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/components/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/components/index.ts diff --git a/x-pack/plugins/watcher/public/application/components/page_error/index.ts b/x-pack/platform/plugins/private/watcher/public/application/components/page_error/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/components/page_error/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/components/page_error/index.ts diff --git a/x-pack/plugins/watcher/public/application/components/page_error/page_error.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/page_error/page_error.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error.tsx diff --git a/x-pack/plugins/watcher/public/application/components/page_error/page_error_forbidden.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error_forbidden.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/page_error/page_error_forbidden.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error_forbidden.tsx diff --git a/x-pack/plugins/watcher/public/application/components/page_error/page_error_not_exist.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error_not_exist.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/page_error/page_error_not_exist.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error_not_exist.tsx diff --git a/x-pack/plugins/watcher/public/application/components/section_error.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/section_error.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/section_error.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/section_error.tsx diff --git a/x-pack/plugins/watcher/public/application/components/section_loading.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/section_loading.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/section_loading.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/section_loading.tsx diff --git a/x-pack/plugins/watcher/public/application/components/watch_state_badge.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/watch_state_badge.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/watch_state_badge.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/watch_state_badge.tsx diff --git a/x-pack/plugins/watcher/public/application/constants/base_path.ts b/x-pack/platform/plugins/private/watcher/public/application/constants/base_path.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/constants/base_path.ts rename to x-pack/platform/plugins/private/watcher/public/application/constants/base_path.ts diff --git a/x-pack/plugins/watcher/public/application/constants/index.ts b/x-pack/platform/plugins/private/watcher/public/application/constants/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/constants/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/constants/index.ts diff --git a/x-pack/plugins/watcher/public/application/index.tsx b/x-pack/platform/plugins/private/watcher/public/application/index.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/index.tsx rename to x-pack/platform/plugins/private/watcher/public/application/index.tsx diff --git a/x-pack/plugins/watcher/public/application/lib/api.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/api.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/api.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/api.ts diff --git a/x-pack/plugins/watcher/public/application/lib/breadcrumbs.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/breadcrumbs.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/breadcrumbs.ts diff --git a/x-pack/plugins/watcher/public/application/lib/format_date.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/format_date.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/format_date.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/format_date.ts diff --git a/x-pack/plugins/watcher/public/application/lib/get_search_value.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/get_search_value.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/get_search_value.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/get_search_value.ts diff --git a/x-pack/plugins/watcher/public/application/lib/get_time_unit_label.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/get_time_unit_label.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/get_time_unit_label.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/get_time_unit_label.ts diff --git a/x-pack/plugins/watcher/public/application/lib/navigation.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/navigation.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/navigation.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/navigation.ts diff --git a/x-pack/plugins/watcher/public/application/lib/use_request.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/use_request.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/use_request.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/use_request.ts diff --git a/x-pack/plugins/watcher/public/application/license_prompt.tsx b/x-pack/platform/plugins/private/watcher/public/application/license_prompt.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/license_prompt.tsx rename to x-pack/platform/plugins/private/watcher/public/application/license_prompt.tsx diff --git a/x-pack/plugins/watcher/public/application/models/action/action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/base_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/base_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/base_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/base_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/email_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/email_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/email_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/email_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/action/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/action/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/action/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/index.js diff --git a/x-pack/plugins/watcher/public/application/models/action/index_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/index_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/index_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/index_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/jira_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/jira_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/jira_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/jira_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/logging_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/logging_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/logging_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/logging_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/pagerduty_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/pagerduty_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/pagerduty_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/pagerduty_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/slack_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/slack_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/slack_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/slack_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/unknown_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/unknown_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/unknown_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/unknown_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/webhook_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/webhook_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/webhook_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/webhook_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action_status/action_status.js b/x-pack/platform/plugins/private/watcher/public/application/models/action_status/action_status.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action_status/action_status.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action_status/action_status.js diff --git a/x-pack/plugins/watcher/public/application/models/action_status/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/action_status/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action_status/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action_status/index.js diff --git a/x-pack/plugins/watcher/public/application/models/execute_details/execute_details.js b/x-pack/platform/plugins/private/watcher/public/application/models/execute_details/execute_details.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/execute_details/execute_details.js rename to x-pack/platform/plugins/private/watcher/public/application/models/execute_details/execute_details.js diff --git a/x-pack/plugins/watcher/public/application/models/execute_details/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/execute_details/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/execute_details/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/execute_details/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/execute_details/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/execute_details/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/execute_details/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/execute_details/index.js diff --git a/x-pack/plugins/watcher/public/application/models/settings/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/settings/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/settings/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/settings/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/settings/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/settings/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/settings/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/settings/index.js diff --git a/x-pack/plugins/watcher/public/application/models/settings/settings.js b/x-pack/platform/plugins/private/watcher/public/application/models/settings/settings.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/settings/settings.js rename to x-pack/platform/plugins/private/watcher/public/application/models/settings/settings.js diff --git a/x-pack/plugins/watcher/public/application/models/visualize_options/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/visualize_options/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/visualize_options/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/visualize_options/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/index.js diff --git a/x-pack/plugins/watcher/public/application/models/visualize_options/visualize_options.js b/x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/visualize_options.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/visualize_options/visualize_options.js rename to x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/visualize_options.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/agg_types.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/agg_types.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/agg_types.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/agg_types.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/base_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/base_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/base_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/base_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/comparators.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/comparators.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/comparators.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/comparators.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/default_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/default_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/default_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/default_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/group_by_types.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/group_by_types.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/group_by_types.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/group_by_types.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/json_watch.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/json_watch.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/json_watch.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/json_watch.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/json_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/json_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/json_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/json_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/lib/check_action_id_collision/check_action_id_collision.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/check_action_id_collision/check_action_id_collision.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/lib/check_action_id_collision/check_action_id_collision.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/check_action_id_collision/check_action_id_collision.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/lib/check_action_id_collision/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/check_action_id_collision/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/lib/check_action_id_collision/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/check_action_id_collision/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/lib/create_action_id/create_action_id.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/create_action_id/create_action_id.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/lib/create_action_id/create_action_id.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/create_action_id/create_action_id.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/lib/create_action_id/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/create_action_id/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/lib/create_action_id/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/create_action_id/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/monitoring_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/monitoring_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/monitoring_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/monitoring_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/threshold_watch.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/threshold_watch.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/threshold_watch.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/threshold_watch.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/threshold_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/threshold_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/threshold_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/threshold_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_errors/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_errors/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_errors/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_errors/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_errors/watch_errors.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_errors/watch_errors.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_errors/watch_errors.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_errors/watch_errors.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_history_item/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_history_item/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch_history_item/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_history_item/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_history_item/watch_history_item.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/watch_history_item.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_history_item/watch_history_item.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/watch_history_item.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_status/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch_status/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_status/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_status/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch_status/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_status/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_status/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_status/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_status/watch_status.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_status/watch_status.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_status/watch_status.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_status/watch_status.js diff --git a/x-pack/plugins/watcher/public/application/sections/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_form.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_form.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_form.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_form.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_simulate.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_simulate.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_simulate.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_simulate.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/simulate_watch_results_flyout.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/simulate_watch_results_flyout.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/simulate_watch_results_flyout.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/simulate_watch_results_flyout.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/monitoring_watch_edit.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/monitoring_watch_edit.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/monitoring_watch_edit.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/monitoring_watch_edit.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/request_flyout.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/request_flyout.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/request_flyout.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/request_flyout.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/jira_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/jira_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/jira_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/jira_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/logging_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/logging_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/logging_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/logging_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/pagerduty_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/pagerduty_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/pagerduty_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/pagerduty_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/slack_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/slack_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/slack_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/slack_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_dropdown.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_dropdown.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_dropdown.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_dropdown.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_panel.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_panel.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_panel.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_panel.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/watch_visualization.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/watch_visualization.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/watch_visualization.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/watch_visualization.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_context.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_context.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_context.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_context.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_edit_actions.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_edit_actions.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_edit_actions.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_edit_actions.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_edit_page.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_edit_page.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_edit_page.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_edit_page.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_list_page/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_list_page/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_list_page/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_list_page/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_list_page/watch_list_page.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_list_page/watch_list_page.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_list_page/watch_list_page.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_list_page/watch_list_page.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/components/action_statuses_panel.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/action_statuses_panel.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/components/action_statuses_panel.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/action_statuses_panel.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/components/execution_history_panel.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/execution_history_panel.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/components/execution_history_panel.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/execution_history_panel.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/components/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/components/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/watch_details_context.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/watch_details_context.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/watch_details_context.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/watch_details_context.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/watch_status_page.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/watch_status_page.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/watch_status_page.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/watch_status_page.tsx diff --git a/x-pack/plugins/watcher/public/application/shared_imports.ts b/x-pack/platform/plugins/private/watcher/public/application/shared_imports.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/shared_imports.ts rename to x-pack/platform/plugins/private/watcher/public/application/shared_imports.ts diff --git a/x-pack/plugins/watcher/public/index.scss b/x-pack/platform/plugins/private/watcher/public/index.scss similarity index 100% rename from x-pack/plugins/watcher/public/index.scss rename to x-pack/platform/plugins/private/watcher/public/index.scss diff --git a/x-pack/plugins/watcher/public/index.ts b/x-pack/platform/plugins/private/watcher/public/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/index.ts rename to x-pack/platform/plugins/private/watcher/public/index.ts diff --git a/x-pack/plugins/watcher/public/legacy/calc_auto_interval.ts b/x-pack/platform/plugins/private/watcher/public/legacy/calc_auto_interval.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/calc_auto_interval.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/calc_auto_interval.ts diff --git a/x-pack/plugins/watcher/public/legacy/calc_es_interval.ts b/x-pack/platform/plugins/private/watcher/public/legacy/calc_es_interval.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/calc_es_interval.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/calc_es_interval.ts diff --git a/x-pack/plugins/watcher/public/legacy/index.ts b/x-pack/platform/plugins/private/watcher/public/legacy/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/index.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/index.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/index.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/index.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/index.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/invalid_es_calendar_interval_error.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/invalid_es_calendar_interval_error.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/invalid_es_calendar_interval_error.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/invalid_es_calendar_interval_error.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/invalid_es_interval_format_error.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/invalid_es_interval_format_error.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/invalid_es_interval_format_error.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/invalid_es_interval_format_error.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/is_valid_es_interval.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/is_valid_es_interval.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/is_valid_es_interval.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/is_valid_es_interval.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/parse_es_interval.test.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/parse_es_interval.test.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/parse_es_interval.test.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/parse_es_interval.test.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/parse_es_interval.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/parse_es_interval.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/parse_es_interval.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/parse_es_interval.ts diff --git a/x-pack/plugins/watcher/public/legacy/time_buckets.d.ts b/x-pack/platform/plugins/private/watcher/public/legacy/time_buckets.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/time_buckets.d.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/time_buckets.d.ts diff --git a/x-pack/plugins/watcher/public/legacy/time_buckets.js b/x-pack/platform/plugins/private/watcher/public/legacy/time_buckets.js similarity index 100% rename from x-pack/plugins/watcher/public/legacy/time_buckets.js rename to x-pack/platform/plugins/private/watcher/public/legacy/time_buckets.js diff --git a/x-pack/plugins/watcher/public/plugin.ts b/x-pack/platform/plugins/private/watcher/public/plugin.ts similarity index 100% rename from x-pack/plugins/watcher/public/plugin.ts rename to x-pack/platform/plugins/private/watcher/public/plugin.ts diff --git a/x-pack/plugins/watcher/public/types.ts b/x-pack/platform/plugins/private/watcher/public/types.ts similarity index 100% rename from x-pack/plugins/watcher/public/types.ts rename to x-pack/platform/plugins/private/watcher/public/types.ts diff --git a/x-pack/plugins/watcher/server/index.ts b/x-pack/platform/plugins/private/watcher/server/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/index.ts rename to x-pack/platform/plugins/private/watcher/server/index.ts diff --git a/x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.test.js b/x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.test.js similarity index 100% rename from x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.test.js rename to x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.test.js diff --git a/x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.ts b/x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.ts similarity index 100% rename from x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.ts rename to x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.ts diff --git a/x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/index.ts b/x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/index.ts rename to x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/index.ts diff --git a/x-pack/plugins/watcher/server/lib/normalized_field_types/index.ts b/x-pack/platform/plugins/private/watcher/server/lib/normalized_field_types/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/lib/normalized_field_types/index.ts rename to x-pack/platform/plugins/private/watcher/server/lib/normalized_field_types/index.ts diff --git a/x-pack/plugins/watcher/server/lib/normalized_field_types/normalized_field_types.ts b/x-pack/platform/plugins/private/watcher/server/lib/normalized_field_types/normalized_field_types.ts similarity index 100% rename from x-pack/plugins/watcher/server/lib/normalized_field_types/normalized_field_types.ts rename to x-pack/platform/plugins/private/watcher/server/lib/normalized_field_types/normalized_field_types.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.state.test.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.state.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/action_status_model.state.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.state.test.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.test.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/action_status_model.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model_utils.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model_utils.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/action_status_model_utils.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model_utils.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/index.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/index.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/index.ts diff --git a/x-pack/plugins/watcher/server/models/execute_details/execute_details.js b/x-pack/platform/plugins/private/watcher/server/models/execute_details/execute_details.js similarity index 100% rename from x-pack/plugins/watcher/server/models/execute_details/execute_details.js rename to x-pack/platform/plugins/private/watcher/server/models/execute_details/execute_details.js diff --git a/x-pack/plugins/watcher/server/models/execute_details/execute_details.test.js b/x-pack/platform/plugins/private/watcher/server/models/execute_details/execute_details.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/execute_details/execute_details.test.js rename to x-pack/platform/plugins/private/watcher/server/models/execute_details/execute_details.test.js diff --git a/x-pack/plugins/watcher/server/models/execute_details/index.js b/x-pack/platform/plugins/private/watcher/server/models/execute_details/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/execute_details/index.js rename to x-pack/platform/plugins/private/watcher/server/models/execute_details/index.js diff --git a/x-pack/plugins/watcher/server/models/fields/fields.js b/x-pack/platform/plugins/private/watcher/server/models/fields/fields.js similarity index 100% rename from x-pack/plugins/watcher/server/models/fields/fields.js rename to x-pack/platform/plugins/private/watcher/server/models/fields/fields.js diff --git a/x-pack/plugins/watcher/server/models/fields/fields.test.js b/x-pack/platform/plugins/private/watcher/server/models/fields/fields.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/fields/fields.test.js rename to x-pack/platform/plugins/private/watcher/server/models/fields/fields.test.js diff --git a/x-pack/plugins/watcher/server/models/fields/index.js b/x-pack/platform/plugins/private/watcher/server/models/fields/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/fields/index.js rename to x-pack/platform/plugins/private/watcher/server/models/fields/index.js diff --git a/x-pack/plugins/watcher/server/models/settings/index.js b/x-pack/platform/plugins/private/watcher/server/models/settings/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/settings/index.js rename to x-pack/platform/plugins/private/watcher/server/models/settings/index.js diff --git a/x-pack/plugins/watcher/server/models/settings/settings.js b/x-pack/platform/plugins/private/watcher/server/models/settings/settings.js similarity index 100% rename from x-pack/plugins/watcher/server/models/settings/settings.js rename to x-pack/platform/plugins/private/watcher/server/models/settings/settings.js diff --git a/x-pack/plugins/watcher/server/models/settings/settings.test.js b/x-pack/platform/plugins/private/watcher/server/models/settings/settings.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/settings/settings.test.js rename to x-pack/platform/plugins/private/watcher/server/models/settings/settings.test.js diff --git a/x-pack/plugins/watcher/server/models/visualize_options/index.js b/x-pack/platform/plugins/private/watcher/server/models/visualize_options/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/visualize_options/index.js rename to x-pack/platform/plugins/private/watcher/server/models/visualize_options/index.js diff --git a/x-pack/plugins/watcher/server/models/visualize_options/visualize_options.js b/x-pack/platform/plugins/private/watcher/server/models/visualize_options/visualize_options.js similarity index 100% rename from x-pack/plugins/watcher/server/models/visualize_options/visualize_options.js rename to x-pack/platform/plugins/private/watcher/server/models/visualize_options/visualize_options.js diff --git a/x-pack/plugins/watcher/server/models/watch/base_watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/base_watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/base_watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/base_watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/base_watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/base_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/base_watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/base_watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/index.js diff --git a/x-pack/plugins/watcher/server/models/watch/json_watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/json_watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/json_watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/json_watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/json_watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/json_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/json_watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/json_watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/get_interval_type.test.ts b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/get_interval_type.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/get_interval_type.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/get_interval_type.test.ts diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/get_interval_type.ts b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/get_interval_type.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/get_interval_type.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/get_interval_type.ts diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/index.ts b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/index.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/index.ts diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_watch_type/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_watch_type/index.js diff --git a/x-pack/plugins/watcher/server/models/watch/monitoring_watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/monitoring_watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/monitoring_watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/monitoring_watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/monitoring_watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/monitoring_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/monitoring_watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/monitoring_watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/build_visualize_query.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/build_visualize_query.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/build_visualize_query.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/build_visualize_query.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.query.date.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.query.date.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.query.date.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.query.date.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.query.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.query.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.query.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.query.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.date.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.date.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.date.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.date.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.date.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.date.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.date.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.date.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.date.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.date.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.date.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.date.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/format_visualize_data.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/format_visualize_data.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/format_visualize_data.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/format_visualize_data.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/format_visualize_data.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/format_visualize_data.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/format_visualize_data.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/format_visualize_data.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/index.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/threshold_watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/threshold_watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/threshold_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/threshold_watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch_errors/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch_errors/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_errors/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_errors/index.js diff --git a/x-pack/plugins/watcher/server/models/watch_errors/watch_errors.js b/x-pack/platform/plugins/private/watcher/server/models/watch_errors/watch_errors.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_errors/watch_errors.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_errors/watch_errors.js diff --git a/x-pack/plugins/watcher/server/models/watch_errors/watch_errors.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch_errors/watch_errors.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_errors/watch_errors.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_errors/watch_errors.test.js diff --git a/x-pack/plugins/watcher/server/models/watch_history_item/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch_history_item/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_history_item/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_history_item/index.js diff --git a/x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.js b/x-pack/platform/plugins/private/watcher/server/models/watch_history_item/watch_history_item.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_history_item/watch_history_item.js diff --git a/x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch_history_item/watch_history_item.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_history_item/watch_history_item.test.js diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/index.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/index.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/index.ts diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model.test.ts diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model.ts diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model_utils.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model_utils.ts diff --git a/x-pack/platform/plugins/private/watcher/server/plugin.ts b/x-pack/platform/plugins/private/watcher/server/plugin.ts new file mode 100644 index 0000000000000..7572a63368d47 --- /dev/null +++ b/x-pack/platform/plugins/private/watcher/server/plugin.ts @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { SemVer } from 'semver'; +import { CoreStart, CoreSetup, Logger, Plugin, PluginInitializerContext } from '@kbn/core/server'; + +import { PLUGIN, INDEX_NAMES } from '../common/constants'; + +import type { SetupDependencies, StartDependencies, RouteDependencies } from './types'; + +import { registerSettingsRoutes } from './routes/api/settings'; +import { registerIndicesRoutes } from './routes/api/indices'; +import { registerLicenseRoutes } from './routes/api/license'; +import { registerWatchesRoutes } from './routes/api/watches'; +import { registerWatchRoutes } from './routes/api/watch'; +import { registerListFieldsRoute } from './routes/api/register_list_fields_route'; +import { registerLoadHistoryRoute } from './routes/api/register_load_history_route'; + +import { License, handleEsError } from './shared_imports'; + +export class WatcherServerPlugin implements Plugin<void, void, any, any> { + private readonly license: License; + private readonly logger: Logger; + + constructor(private ctx: PluginInitializerContext) { + this.logger = ctx.logger.get(); + this.license = new License(); + } + + setup({ http }: CoreSetup, { features }: SetupDependencies) { + this.license.setup({ + pluginName: PLUGIN.getI18nName(i18n), + logger: this.logger, + }); + + const kibanaVersion = new SemVer(this.ctx.env.packageInfo.version); + + const router = http.createRouter(); + const routeDependencies: RouteDependencies = { + router, + license: this.license, + lib: { + handleEsError, + }, + kibanaVersion, + }; + + features.registerElasticsearchFeature({ + id: 'watcher', + management: { + insightsAndAlerting: ['watcher'], + }, + catalogue: ['watcher'], + privileges: [ + { + requiredClusterPrivileges: ['manage_watcher'], + requiredIndexPrivileges: { + [INDEX_NAMES.WATCHER_HISTORY]: ['read'], + }, + ui: [], + }, + { + requiredClusterPrivileges: ['monitor_watcher'], + requiredIndexPrivileges: { + [INDEX_NAMES.WATCHER_HISTORY]: ['read'], + }, + ui: [], + }, + ], + }); + + registerListFieldsRoute(routeDependencies); + registerLoadHistoryRoute(routeDependencies); + registerIndicesRoutes(routeDependencies); + registerLicenseRoutes(routeDependencies); + registerSettingsRoutes(routeDependencies); + registerWatchesRoutes(routeDependencies); + registerWatchRoutes(routeDependencies); + } + + start(core: CoreStart, { licensing }: StartDependencies) { + this.license.start({ + pluginId: PLUGIN.ID, + minimumLicenseType: PLUGIN.MINIMUM_LICENSE_REQUIRED, + licensing, + }); + } + + stop() {} +} diff --git a/x-pack/plugins/watcher/server/routes/api/indices/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/indices/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/indices/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/indices/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/indices/register_get_index_patterns_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_index_patterns_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/indices/register_get_index_patterns_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_index_patterns_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/indices/register_indices_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_indices_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/indices/register_indices_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_indices_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/license/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/license/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/license/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/license/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/license/register_license_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/license/register_license_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/license/register_license_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/license/register_license_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/license/register_refresh_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/license/register_refresh_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/license/register_refresh_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/license/register_refresh_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/register_list_fields_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/register_list_fields_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/register_list_fields_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/register_list_fields_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/register_load_history_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/register_load_history_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/register_load_history_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/register_load_history_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/settings/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/settings/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/settings/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/settings/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/settings/register_load_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_load_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/settings/register_load_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_load_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/settings/register_settings_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_settings_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/settings/register_settings_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_settings_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/action/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/action/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_acknowledge_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_acknowledge_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/action/register_action_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_action_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/action/register_action_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_action_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_activate_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_activate_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_deactivate_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_deactivate_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_delete_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_delete_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_delete_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_delete_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_execute_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_execute_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_execute_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_execute_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_history_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_history_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_history_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_history_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_load_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_load_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_load_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_load_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_save_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_save_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_save_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_save_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_visualize_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_visualize_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_visualize_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_visualize_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_watch_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_watch_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_watch_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_watch_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watches/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watches/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watches/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watches/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watches/register_delete_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_delete_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watches/register_delete_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_delete_route.ts diff --git a/x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_list_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_list_route.ts new file mode 100644 index 0000000000000..56affd6be154e --- /dev/null +++ b/x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_list_route.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RouteDependencies } from '../../../types'; +import { Watch } from '../../../models/watch'; + +export function registerListRoute({ router, license, lib: { handleEsError } }: RouteDependencies) { + router.get( + { + path: '/api/watcher/watches', + validate: false, + }, + license.guardApiRoute(async (ctx, request, response) => { + try { + const esClient = (await ctx.core).elasticsearch.client; + const { watches: hits } = await esClient.asCurrentUser.watcher.queryWatches(); + const watches = hits.map(({ _id, watch, status }) => { + return Watch.fromUpstreamJson( + { + id: _id, + watchJson: watch, + watchStatusJson: status, + }, + { + throwExceptions: { + Action: false, + }, + } + ); + }); + + return response.ok({ + body: { + watches: watches.map((watch) => watch.downstreamJson), + }, + }); + } catch (e) { + return handleEsError({ error: e, response }); + } + }) + ); +} diff --git a/x-pack/plugins/watcher/server/routes/api/watches/register_watches_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_watches_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watches/register_watches_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_watches_routes.ts diff --git a/x-pack/plugins/watcher/server/shared_imports.ts b/x-pack/platform/plugins/private/watcher/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/watcher/server/shared_imports.ts rename to x-pack/platform/plugins/private/watcher/server/shared_imports.ts diff --git a/x-pack/plugins/watcher/server/types.ts b/x-pack/platform/plugins/private/watcher/server/types.ts similarity index 100% rename from x-pack/plugins/watcher/server/types.ts rename to x-pack/platform/plugins/private/watcher/server/types.ts diff --git a/x-pack/platform/plugins/private/watcher/tsconfig.json b/x-pack/platform/plugins/private/watcher/tsconfig.json new file mode 100644 index 0000000000000..3a040c75bb84a --- /dev/null +++ b/x-pack/platform/plugins/private/watcher/tsconfig.json @@ -0,0 +1,45 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__jest__/**/*", + "server/**/*", + "public/**/*", + "common/**/*", + "__fixtures__/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/management-plugin", + "@kbn/charts-plugin", + "@kbn/data-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/license-api-guard-plugin", + "@kbn/licensing-plugin", + "@kbn/features-plugin", + "@kbn/core-doc-links-browser-mocks", + "@kbn/core-execution-context-browser-mocks", + "@kbn/test-jest-helpers", + "@kbn/i18n", + "@kbn/safer-lodash-set", + "@kbn/config-schema", + "@kbn/datemath", + "@kbn/field-formats-plugin", + "@kbn/i18n-react", + "@kbn/shared-ux-router", + "@kbn/license-management-plugin", + "@kbn/share-plugin", + "@kbn/core-ui-settings-browser", + "@kbn/core-ui-settings-browser-mocks", + "@kbn/code-editor", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/constants.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/constants.ts index 71d9369318225..9c0ea6bb30230 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/constants.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/constants.ts @@ -7,7 +7,7 @@ // Definitions index -export const DEFINITIONS_ALIAS = '.kibana-entities-definitions'; +export const DEFINITIONS_ALIAS = '.kibana_entities-definitions'; export const TEMPLATE_VERSION = 1; // Privileges diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/constants.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/constants.ts new file mode 100644 index 0000000000000..3982a91b8f671 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/constants.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const BUILT_IN_ID_PREFIX = 'built_in_'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/containers_from_ecs_data.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/containers_from_ecs_data.ts new file mode 100644 index 0000000000000..244cfb82fc6d9 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/containers_from_ecs_data.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BuiltInDefinition } from '../../types'; +import { BUILT_IN_ID_PREFIX } from './constants'; + +export const builtInContainersFromEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}containers_from_ecs_data`, + display_name: 'Containers', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}containers_from_ecs_data_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}containers_from_ecs_data`, + index_patterns: ['filebeat-*', 'logs-*', 'metrics-*', 'metricbeat-*'], + identity_fields: ['container.id'], + display_name: 'container.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: [], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/hosts_from_ecs_data.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/hosts_from_ecs_data.ts new file mode 100644 index 0000000000000..a6aa14991c0d8 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/hosts_from_ecs_data.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from './constants'; +import { BuiltInDefinition } from '../../types'; + +export const builtInHostsFromEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}hosts_from_ecs_data`, + display_name: 'Hosts', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}hosts_from_ecs_data_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}hosts_from_ecs_data`, + index_patterns: ['filebeat-*', 'logs-*', 'metrics-*', 'metricbeat-*'], + identity_fields: ['host.name'], + display_name: 'host.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: [], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/index.ts new file mode 100644 index 0000000000000..9f7b67469b6a4 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { builtInServicesFromEcsEntityDefinition } from './services_from_ecs_data'; +import { builtInHostsFromEcsEntityDefinition } from './hosts_from_ecs_data'; +import { builtInContainersFromEcsEntityDefinition } from './containers_from_ecs_data'; +import { BuiltInDefinition } from '../../types'; + +import * as kubernetes from './kubernetes'; + +export const builtInDefinitions: BuiltInDefinition[] = [ + builtInServicesFromEcsEntityDefinition, + builtInHostsFromEcsEntityDefinition, + builtInContainersFromEcsEntityDefinition, + ...Object.values(kubernetes), +]; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cluster.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cluster.ts new file mode 100644 index 0000000000000..11d9059aeb021 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cluster.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesClusterEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_ecs`, + display_name: 'Kubernetes Clusters (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['orchestrator.cluster.name'], + display_name: 'orchestrator.cluster.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['orchestrator.cluster.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cron_job.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cron_job.ts new file mode 100644 index 0000000000000..597ee54cd7b95 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cron_job.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesCronJobEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_ecs`, + display_name: 'Kubernetes CronJobs (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.cronjob.name'], + display_name: 'kubernetes.cronjob.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.cronjob.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/daemon_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/daemon_set.ts new file mode 100644 index 0000000000000..efe49291c7a8e --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/daemon_set.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesDaemonSetEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_ecs`, + display_name: 'Kubernetes DaemonSets (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.daemonset.name'], + display_name: 'kubernetes.daemonset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.daemonset.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/deployment.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/deployment.ts new file mode 100644 index 0000000000000..e68ff1e0b047c --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/deployment.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesDeploymentEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_ecs`, + display_name: 'Kubernetes Deployments (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.deployment.name'], + display_name: 'kubernetes.deployment.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.deployment.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/ecs_index_patterns.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/ecs_index_patterns.ts new file mode 100644 index 0000000000000..14e2766cac2b2 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/ecs_index_patterns.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const commonEcsIndexPatterns = ['metrics-kubernetes*', 'logs-*']; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/index.ts new file mode 100644 index 0000000000000..ecfa67ff893ba --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { builtInKubernetesClusterEcsEntityDefinition } from './cluster'; +export { builtInKubernetesNodeEcsEntityDefinition } from './node'; +export { builtInKubernetesPodEcsEntityDefinition } from './pod'; +export { builtInKubernetesReplicaSetEcsEntityDefinition } from './replica_set'; +export { builtInKubernetesDeploymentEcsEntityDefinition } from './deployment'; +export { builtInKubernetesStatefulSetEcsEntityDefinition } from './stateful_set'; +export { builtInKubernetesDaemonSetEcsEntityDefinition } from './daemon_set'; +export { builtInKubernetesJobEcsEntityDefinition } from './job'; +export { builtInKubernetesCronJobEcsEntityDefinition } from './cron_job'; +export { builtInKubernetesServiceEcsEntityDefinition } from './service'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/job.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/job.ts new file mode 100644 index 0000000000000..17f7a6d6ea5f1 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/job.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesJobEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_job_ecs`, + display_name: 'Kubernetes Jobs (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_job_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_job_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.job.name'], + display_name: 'kubernetes.job.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.job.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/node.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/node.ts new file mode 100644 index 0000000000000..eaaf5e10d45b4 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/node.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesNodeEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_node_ecs`, + display_name: 'Kubernetes Nodes (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_node_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_node_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.node.name'], + display_name: 'kubernetes.node.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.node.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/pod.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/pod.ts new file mode 100644 index 0000000000000..d18c5d87fd53a --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/pod.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesPodEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_ecs`, + display_name: 'Kubernetes Pods (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.pod.uid'], + display_name: 'kubernetes.pod.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.pod.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/replica_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/replica_set.ts new file mode 100644 index 0000000000000..c44514440dee1 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/replica_set.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesReplicaSetEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_ecs`, + display_name: 'Kubernetes ReplicaSets (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.replicaset.name'], + display_name: 'kubernetes.replicaset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.replicaset.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/service.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/service.ts new file mode 100644 index 0000000000000..4336cad1b0ea0 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/service.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesServiceEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_service_ecs`, + display_name: 'Kubernetes Services (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_service_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_service_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.service.name'], + display_name: 'kubernetes.service.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.service.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/stateful_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/stateful_set.ts new file mode 100644 index 0000000000000..5c3fc0df6070d --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/stateful_set.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesStatefulSetEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_ecs`, + display_name: 'Kubernetes StatefulSets (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.statefulset.name'], + display_name: 'kubernetes.statefulset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.statefulset.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/index.ts new file mode 100644 index 0000000000000..fa559fb86d9db --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './ecs'; +export * from './semconv'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cluster.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cluster.ts new file mode 100644 index 0000000000000..14371c4fe1871 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cluster.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesClusterSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_semconv`, + display_name: 'Kubernetes Clusters (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.cluster.uid'], + display_name: 'k8s.cluster.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.cluster.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cron_job.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cron_job.ts new file mode 100644 index 0000000000000..35db4649b24d4 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cron_job.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesCronJobSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_semconv`, + display_name: 'Kubernetes CronJobs (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.cronjob.uid'], + display_name: 'k8s.cronjob.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.cronjob.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/daemon_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/daemon_set.ts new file mode 100644 index 0000000000000..fa233fbeec4f9 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/daemon_set.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesDaemonSetSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_semconv`, + display_name: 'Kubernetes DaemonSets (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.daemonset.uid'], + display_name: 'k8s.daemonset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.daemonset.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/deployment.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/deployment.ts new file mode 100644 index 0000000000000..13e29cf8b4e58 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/deployment.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesDeploymentSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_semconv`, + display_name: 'Kubernetes Deployments (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.deployment.uid'], + display_name: 'k8s.deployment.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.deployment.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/index.ts new file mode 100644 index 0000000000000..fbfcd9c5f9024 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { builtInKubernetesClusterSemConvEntityDefinition } from './cluster'; +export { builtInKubernetesNodeSemConvEntityDefinition } from './node'; +export { builtInKubernetesPodSemConvEntityDefinition } from './pod'; +export { builtInKubernetesReplicaSetSemConvEntityDefinition } from './replica_set'; +export { builtInKubernetesDeploymentSemConvEntityDefinition } from './deployment'; +export { builtInKubernetesStatefulSetSemConvEntityDefinition } from './stateful_set'; +export { builtInKubernetesDaemonSetSemConvEntityDefinition } from './daemon_set'; +export { builtInKubernetesJobSemConvEntityDefinition } from './job'; +export { builtInKubernetesCronJobSemConvEntityDefinition } from './cron_job'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/job.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/job.ts new file mode 100644 index 0000000000000..d830b33fae0e5 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/job.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesJobSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_job_semconv`, + display_name: 'Kubernetes Jobs (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_job_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_job_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.job.uid'], + display_name: 'k8s.job.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.job.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/node.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/node.ts new file mode 100644 index 0000000000000..a99e2fa88d8f0 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/node.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesNodeSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_node_semconv`, + display_name: 'Kubernetes Nodes (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_node_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_node_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.node.uid'], + display_name: 'k8s.node.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.node.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/otel_index_patterns.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/otel_index_patterns.ts new file mode 100644 index 0000000000000..9978f61efafab --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/otel_index_patterns.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const commonOtelIndexPatterns = ['metrics-*otel*', 'logs-*']; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/pod.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/pod.ts new file mode 100644 index 0000000000000..cb983201beede --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/pod.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesPodSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_semconv`, + display_name: 'Kubernetes Pods (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.pod.uid'], + display_name: 'k8s.pod.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.pod.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/replica_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/replica_set.ts new file mode 100644 index 0000000000000..feba9f02383bc --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/replica_set.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesReplicaSetSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_semconv`, + display_name: 'Kubernetes ReplicaSets (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.replicaset.uid'], + display_name: 'k8s.replicaset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.replicaset.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/stateful_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/stateful_set.ts new file mode 100644 index 0000000000000..0776be72c4d1d --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/stateful_set.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesStatefulSetSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_semconv`, + display_name: 'Kubernetes StatefulSets (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.statefulset.uid'], + display_name: 'k8s.statefulset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.statefulset.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/services_from_ecs_data.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/services_from_ecs_data.ts new file mode 100644 index 0000000000000..cc4b665666bb0 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/services_from_ecs_data.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { BuiltInDefinition } from '../../types'; +import { BUILT_IN_ID_PREFIX } from './constants'; + +export const builtInServicesFromEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}services_from_ecs_data`, + display_name: 'Services', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}services_from_ecs_data_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}services_from_ecs_data`, + index_patterns: ['logs-*', 'filebeat*', 'traces-*'], + identity_fields: ['service.name'], + display_name: 'service.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: [], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/install_built_in_definitions.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/install_built_in_definitions.ts new file mode 100644 index 0000000000000..e5535d6e35f1a --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/install_built_in_definitions.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IClusterClient, Logger } from '@kbn/core/server'; +import { storeTypeDefinition } from './type_definition'; +import { storeSourceDefinition } from './source_definition'; +import { builtInDefinitions } from './built_in'; +import { EntitySourceDefinition, EntityTypeDefinition } from '../types'; + +export async function installBuiltInDefinitions(clusterClient: IClusterClient, logger: Logger) { + logger.info('Installing built in entity definitions'); + + const types: EntityTypeDefinition[] = []; + const sources: EntitySourceDefinition[] = []; + for (const definition of builtInDefinitions) { + types.push(definition.type); + sources.push(...definition.sources); + } + + const typeInstallations = await Promise.allSettled( + types.map((type) => storeTypeDefinition({ type, clusterClient, logger, replace: true })) + ); + + typeInstallations.forEach((installation) => { + if (installation.status === 'rejected') { + logger.error(installation.reason); + } + }); + + const sourceInstallations = await Promise.allSettled( + sources.map((source) => + storeSourceDefinition({ + source, + clusterClient, + logger, + replace: true, + }) + ) + ); + + // This may fail because the type installation failed and storeSourceDefinition verifies that the type exists first + // It may also fail for other reasons but we continue in case there are more sources for the same type that might succeed + sourceInstallations.forEach((installation) => { + if (installation.status === 'rejected') { + logger.error(installation.reason); + } + }); +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/instance_as_filter.test.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/instance_as_filter.test.ts new file mode 100644 index 0000000000000..bd39257ac72e7 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/instance_as_filter.test.ts @@ -0,0 +1,183 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EntityV2 } from '@kbn/entities-schema'; +import { instanceAsFilter } from './instance_as_filter'; +import { readSourceDefinitions } from './source_definition'; +import { loggerMock } from '@kbn/logging-mocks'; +import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; +import { EntitySourceDefinition } from '../types'; +import { UnknownEntityType } from '../errors/unknown_entity_type'; +import { InvalidEntityInstance } from '../errors/invalid_entity_instance'; + +const readSourceDefinitionsMock = readSourceDefinitions as jest.Mock; +jest.mock('./source_definition', () => ({ + readSourceDefinitions: jest.fn(), +})); +const esClientMock = elasticsearchServiceMock.createClusterClient(); +const logger = loggerMock.create(); + +describe('instanceAsFilter', () => { + it('throws if no sources are found for the type', async () => { + const instance: EntityV2 = { + 'entity.type': 'my_type', + 'entity.id': 'whatever', + 'entity.display_name': 'Whatever', + }; + + const sources: EntitySourceDefinition[] = []; + readSourceDefinitionsMock.mockResolvedValue(sources); + + await expect(instanceAsFilter(instance, esClientMock, logger)).rejects.toThrowError( + UnknownEntityType + ); + }); + + it('throws if the instance cannot match any sources due to missing identity fields', async () => { + const instance: EntityV2 = { + 'entity.type': 'my_type', + 'entity.id': 'whatever', + 'entity.display_name': 'Whatever', + }; + + const sources: EntitySourceDefinition[] = [ + { + id: 'my_source', + type_id: 'my_type', + identity_fields: ['host.name'], + index_patterns: [], + metadata_fields: [], + filters: [], + }, + ]; + readSourceDefinitionsMock.mockResolvedValue(sources); + + await expect(instanceAsFilter(instance, esClientMock, logger)).rejects.toThrowError( + InvalidEntityInstance + ); + }); + + it('creates a single source filter for a single identity field', async () => { + const instance: EntityV2 = { + 'entity.type': 'my_type', + 'entity.id': 'whatever', + 'entity.display_name': 'Whatever', + 'host.name': 'my_host', + }; + + const sources: EntitySourceDefinition[] = [ + { + id: 'my_source', + type_id: 'my_type', + identity_fields: ['host.name'], + index_patterns: [], + metadata_fields: [], + filters: [], + }, + ]; + readSourceDefinitionsMock.mockResolvedValue(sources); + + await expect(instanceAsFilter(instance, esClientMock, logger)).resolves.toBe( + '(host.name: "my_host")' + ); + }); + + it('creates a single source filter for multiple identity field', async () => { + const instance: EntityV2 = { + 'entity.type': 'my_type', + 'entity.id': 'whatever', + 'entity.display_name': 'Whatever', + 'host.name': 'my_host', + 'host.os': 'my_os', + }; + + const sources: EntitySourceDefinition[] = [ + { + id: 'my_source', + type_id: 'my_type', + identity_fields: ['host.name', 'host.os'], + index_patterns: [], + metadata_fields: [], + filters: [], + }, + ]; + readSourceDefinitionsMock.mockResolvedValue(sources); + + await expect(instanceAsFilter(instance, esClientMock, logger)).resolves.toBe( + '(host.name: "my_host" AND host.os: "my_os")' + ); + }); + + it('creates multiple source filters for a single identity field', async () => { + const instance: EntityV2 = { + 'entity.type': 'my_type', + 'entity.id': 'whatever', + 'entity.display_name': 'Whatever', + 'host.name': 'my_host', + 'host.os': 'my_os', + }; + + const sources: EntitySourceDefinition[] = [ + { + id: 'my_source_host', + type_id: 'my_type', + identity_fields: ['host.name'], + index_patterns: [], + metadata_fields: [], + filters: [], + }, + { + id: 'my_source_os', + type_id: 'my_type', + identity_fields: ['host.os'], + index_patterns: [], + metadata_fields: [], + filters: [], + }, + ]; + readSourceDefinitionsMock.mockResolvedValue(sources); + + await expect(instanceAsFilter(instance, esClientMock, logger)).resolves.toBe( + '(host.name: "my_host") OR (host.os: "my_os")' + ); + }); + + it('creates multiple source filters for multiple identity field', async () => { + const instance: EntityV2 = { + 'entity.type': 'my_type', + 'entity.id': 'whatever', + 'entity.display_name': 'Whatever', + 'host.name': 'my_host', + 'host.os': 'my_os', + 'host.arch': 'my_arch', + }; + + const sources: EntitySourceDefinition[] = [ + { + id: 'my_source_host', + type_id: 'my_type', + identity_fields: ['host.name', 'host.arch'], + index_patterns: [], + metadata_fields: [], + filters: [], + }, + { + id: 'my_source_os', + type_id: 'my_type', + identity_fields: ['host.os', 'host.arch'], + index_patterns: [], + metadata_fields: [], + filters: [], + }, + ]; + readSourceDefinitionsMock.mockResolvedValue(sources); + + await expect(instanceAsFilter(instance, esClientMock, logger)).resolves.toBe( + '(host.name: "my_host" AND host.arch: "my_arch") OR (host.os: "my_os" AND host.arch: "my_arch")' + ); + }); +}); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/instance_as_filter.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/instance_as_filter.ts new file mode 100644 index 0000000000000..c936277db8e25 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/instance_as_filter.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EntityV2 } from '@kbn/entities-schema'; +import { Logger } from '@kbn/core/server'; +import { compact } from 'lodash'; +import { readSourceDefinitions } from './source_definition'; +import { InternalClusterClient } from '../types'; +import { UnknownEntityType } from '../errors/unknown_entity_type'; +import { InvalidEntityInstance } from '../errors/invalid_entity_instance'; + +export async function instanceAsFilter( + instance: EntityV2, + clusterClient: InternalClusterClient, + logger: Logger +) { + const sources = await readSourceDefinitions(clusterClient, logger, { + type: instance['entity.type'], + }); + + if (sources.length === 0) { + throw new UnknownEntityType(`No sources found for type ${instance['entity.type']}`); + } + + const sourceFilters = compact<string>( + sources.map((source) => { + const { identity_fields: identityFields } = source; + + const instanceHasRequiredFields = identityFields.every((identityField) => + instance[identityField] ? true : false + ); + + if (!instanceHasRequiredFields) { + return undefined; + } + + const fieldFilters = identityFields.map( + (identityField) => `${identityField}: "${instance[identityField]}"` + ); + + return `(${fieldFilters.join(' AND ')})`; + }) + ); + + if (sourceFilters.length === 0) { + throw new InvalidEntityInstance( + `Entity ${instance['entity.id']} of type ${instance['entity.type']} is missing some identity fields, no sources could match` + ); + } + + return sourceFilters.join(' OR '); +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/setup_entity_definitions_index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/setup_entity_definitions_index.ts index b9e3f39a3dd62..05d7b2de7cb97 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/setup_entity_definitions_index.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/setup_entity_definitions_index.ts @@ -6,8 +6,9 @@ */ import { errors } from '@elastic/elasticsearch'; -import { IClusterClient, Logger } from '@kbn/core/server'; +import { Logger } from '@kbn/core/server'; import { DEFINITIONS_ALIAS, TEMPLATE_VERSION } from '../constants'; +import { InternalClusterClient } from '../types'; const definitionsIndexTemplate = { name: `${DEFINITIONS_ALIAS}-template`, @@ -21,6 +22,8 @@ const definitionsIndexTemplate = { template: { settings: { hidden: true, + number_of_shards: 1, + auto_expand_replicas: '0-1', }, aliases: { [DEFINITIONS_ALIAS]: { @@ -51,7 +54,10 @@ const definitionsIndexTemplate = { const CURRENT_INDEX = `${DEFINITIONS_ALIAS}-${TEMPLATE_VERSION}` as const; -export async function setupEntityDefinitionsIndex(clusterClient: IClusterClient, logger: Logger) { +export async function setupEntityDefinitionsIndex( + clusterClient: InternalClusterClient, + logger: Logger +) { const esClient = clusterClient.asInternalUser; try { logger.debug(`Installing entity definitions index template for version ${TEMPLATE_VERSION}`); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/source_definition.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/source_definition.ts index 7ed1779708e54..eab219792295c 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/source_definition.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/source_definition.ts @@ -5,26 +5,53 @@ * 2.0. */ -import { IScopedClusterClient, Logger } from '@kbn/core/server'; +import { Logger } from '@kbn/core/server'; import { DEFINITIONS_ALIAS, TEMPLATE_VERSION } from '../constants'; -import { EntitySourceDefinition, StoredEntitySourceDefinition } from '../types'; +import { + EntitySourceDefinition, + InternalClusterClient, + StoredEntitySourceDefinition, +} from '../types'; import { SourceAs, runESQLQuery } from '../run_esql_query'; import { EntityDefinitionConflict } from '../errors/entity_definition_conflict'; +import { readTypeDefinitionById } from './type_definition'; +import { UnknownEntityType } from '../errors/unknown_entity_type'; -export async function storeSourceDefinition( - source: EntitySourceDefinition, - clusterClient: IScopedClusterClient, - logger: Logger -): Promise<EntitySourceDefinition> { +interface StoreSourceDefinitionOptions { + source: EntitySourceDefinition; + clusterClient: InternalClusterClient; + logger: Logger; + replace?: boolean; +} + +export async function storeSourceDefinition({ + source, + clusterClient, + logger, + replace = false, +}: StoreSourceDefinitionOptions): Promise<EntitySourceDefinition> { const esClient = clusterClient.asInternalUser; + try { + await readTypeDefinitionById(source.type_id, clusterClient, logger); + } catch (error) { + if (error instanceof UnknownEntityType) { + throw new UnknownEntityType( + `Type with ID ${source.type_id} not found, cannot attach source with ID ${source.id}` + ); + } + + throw error; + } + const sources = await runESQLQuery('fetch source definition for conflict check', { esClient, - query: `FROM ${DEFINITIONS_ALIAS} METADATA _id | WHERE definition_type == "source" AND _id == "source:${source.id}" | KEEP _id`, + query: `FROM ${DEFINITIONS_ALIAS} METADATA _id | WHERE definition_type == "source" AND _id == "${source.type_id}:${source.id}" | KEEP _id`, logger, }); - if (sources.length !== 0) { + if (sources.length !== 0 && replace === false) { + logger.debug(`Entity source definition with ID ${source.id} already exists`); throw new EntityDefinitionConflict('source', source.id); } @@ -34,10 +61,12 @@ export async function storeSourceDefinition( source, }; + logger.debug(`Installing entity source definition ${source.id} for type ${source.type_id}`); await esClient.index({ index: DEFINITIONS_ALIAS, - id: `source:${definition.source.id}`, + id: `${source.type_id}:${definition.source.id}`, document: definition, + refresh: 'wait_for', }); return definition.source; @@ -48,7 +77,7 @@ export interface ReadSourceDefinitionOptions { } export async function readSourceDefinitions( - clusterClient: IScopedClusterClient, + clusterClient: InternalClusterClient, logger: Logger, options?: ReadSourceDefinitionOptions ): Promise<EntitySourceDefinition[]> { diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/type_definition.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/type_definition.ts index 710e176a4a128..9b362a8df2b3e 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/type_definition.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/type_definition.ts @@ -5,26 +5,36 @@ * 2.0. */ -import { IScopedClusterClient, Logger } from '@kbn/core/server'; +import { Logger } from '@kbn/core/server'; import { DEFINITIONS_ALIAS, TEMPLATE_VERSION } from '../constants'; -import { EntityTypeDefinition, StoredEntityTypeDefinition } from '../types'; +import { EntityTypeDefinition, InternalClusterClient, StoredEntityTypeDefinition } from '../types'; import { SourceAs, runESQLQuery } from '../run_esql_query'; import { EntityDefinitionConflict } from '../errors/entity_definition_conflict'; +import { UnknownEntityType } from '../errors/unknown_entity_type'; -export async function storeTypeDefinition( - type: EntityTypeDefinition, - clusterClient: IScopedClusterClient, - logger: Logger -): Promise<EntityTypeDefinition> { +interface StoreTypeDefinitionOptions { + type: EntityTypeDefinition; + clusterClient: InternalClusterClient; + logger: Logger; + replace?: boolean; +} + +export async function storeTypeDefinition({ + type, + clusterClient, + logger, + replace = false, +}: StoreTypeDefinitionOptions): Promise<EntityTypeDefinition> { const esClient = clusterClient.asInternalUser; const types = await runESQLQuery('fetch type definition for conflict check', { esClient, - query: `FROM ${DEFINITIONS_ALIAS} METADATA _id | WHERE definition_type == "type" AND _id == "type:${type.id}" | KEEP _id`, + query: `FROM ${DEFINITIONS_ALIAS} METADATA _id | WHERE definition_type == "type" AND _id == "${type.id}" | KEEP _id`, logger, }); - if (types.length !== 0) { + if (types.length !== 0 && replace === false) { + logger.debug(`Entity type definition with ID ${type.id} already exists`); throw new EntityDefinitionConflict('type', type.id); } @@ -34,17 +44,19 @@ export async function storeTypeDefinition( type, }; + logger.debug(`Installing entity type definition ${type.id}`); await esClient.index({ index: DEFINITIONS_ALIAS, - id: `type:${definition.type.id}`, + id: `${definition.type.id}`, document: definition, + refresh: 'wait_for', }); return definition.type; } export async function readTypeDefinitions( - clusterClient: IScopedClusterClient, + clusterClient: InternalClusterClient, logger: Logger ): Promise<EntityTypeDefinition[]> { const esClient = clusterClient.asInternalUser; @@ -60,3 +72,26 @@ export async function readTypeDefinitions( return types.map((storedTypeDefinition) => storedTypeDefinition._source.type); } + +export async function readTypeDefinitionById( + id: string, + clusterClient: InternalClusterClient, + logger: Logger +): Promise<EntityTypeDefinition> { + const esClient = clusterClient.asInternalUser; + + const types = await runESQLQuery<SourceAs<StoredEntityTypeDefinition>>( + 'fetch type definition by ID', + { + esClient, + query: `FROM ${DEFINITIONS_ALIAS} METADATA _id,_source | WHERE definition_type == "type" AND _id == "${id}" | KEEP _source`, + logger, + } + ); + + if (types.length === 0) { + throw new UnknownEntityType(`Type with ID ${id} not found`); + } + + return types[0]._source.type; +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/entity_client.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/entity_client.ts index bb40fc2849a46..a2003b5fc7d11 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/entity_client.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/entity_client.ts @@ -8,23 +8,29 @@ import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { IScopedClusterClient, Logger } from '@kbn/core/server'; import { EntityV2 } from '@kbn/entities-schema'; -import { without } from 'lodash'; import { ReadSourceDefinitionOptions, readSourceDefinitions, storeSourceDefinition, } from './definitions/source_definition'; import { readTypeDefinitions, storeTypeDefinition } from './definitions/type_definition'; -import { getEntityInstancesQuery } from './queries'; -import { mergeEntitiesList } from './queries/utils'; +import { getEntityInstancesQuery, getEntityCountQuery } from './queries'; +import { + isFulfilledResult, + isRejectedResult, + mergeEntitiesList, + sortEntitiesList, +} from './queries/utils'; import { EntitySourceDefinition, EntityTypeDefinition, SearchByType, SearchBySources, + CountByTypes, } from './types'; import { UnknownEntityType } from './errors/unknown_entity_type'; import { runESQLQuery } from './run_esql_query'; +import { validateFields } from './validate_fields'; export class EntityClient { constructor( @@ -59,76 +65,127 @@ export class EntityClient { sort, limit, }: SearchBySources) { - const entities = await Promise.all( - sources.map(async (source) => { - const mandatoryFields = [ - ...source.identity_fields, - ...(source.timestamp_field ? [source.timestamp_field] : []), - ...(source.display_name ? [source.display_name] : []), - ]; - const metaFields = [...metadataFields, ...source.metadata_fields]; - - // operations on an unmapped field result in a failing query so we verify - // field capabilities beforehand - const { fields } = await this.options.clusterClient.asCurrentUser.fieldCaps({ - index: source.index_patterns, - fields: [...mandatoryFields, ...metaFields], - }); + const searches = sources.map(async (source) => { + const availableMetadataFields = await validateFields({ + source, + metadataFields, + esClient: this.options.clusterClient.asCurrentUser, + logger: this.options.logger, + }); + + const { query, filter } = getEntityInstancesQuery({ + source: { + ...source, + metadata_fields: availableMetadataFields, + filters: [...source.filters, ...filters], + }, + start, + end, + sort, + limit, + }); + this.options.logger.debug( + () => `Entity instances query: ${query}\nfilter: ${JSON.stringify(filter, null, 2)}` + ); + + const rawEntities = await runESQLQuery<EntityV2>('resolve entities', { + query, + filter, + esClient: this.options.clusterClient.asCurrentUser, + logger: this.options.logger, + }); + + return rawEntities; + }); + + const { entities, errors } = await Promise.allSettled(searches).then((results) => ({ + entities: results.filter(isFulfilledResult).flatMap((result) => result.value), + errors: results.filter(isRejectedResult).map((result) => result.reason.message as string), + })); + + if (sources.length === 1) { + return { entities, errors }; + } + + // we have to manually merge, sort and limit entities since we run + // independant queries for each source + return { + errors, + entities: sortEntitiesList({ + sources, + sort, + entities: mergeEntitiesList({ entities, sources, metadataFields }), + }).slice(0, limit), + }; + } + + async countEntities({ start, end, types = [], filters = [] }: CountByTypes) { + if (types.length === 0) { + types = (await this.readTypeDefinitions()).map((definition) => definition.id); + } - const sourceHasMandatoryFields = mandatoryFields.every((field) => !!fields[field]); - if (!sourceHasMandatoryFields) { - // we can't build entities without id fields so we ignore the source. - // TODO filters should likely behave similarly. we should also throw - const missingFields = mandatoryFields.filter((field) => !fields[field]); - this.options.logger.info( - `Ignoring source for type [${source.type_id}] with index_patterns [${ - source.index_patterns - }] because some mandatory fields [${missingFields.join(', ')}] are not mapped` - ); - return []; + const counts = await Promise.all( + types.map(async (type) => { + const sources = await this.readSourceDefinitions({ type }); + if (sources.length === 0) { + return { type, value: 0, errors: [] }; } - // but metadata field not being available is fine - const availableMetadataFields = metaFields.filter((field) => fields[field]); - if (availableMetadataFields.length < metaFields.length) { - this.options.logger.info( - `Ignoring unmapped fields [${without(metaFields, ...availableMetadataFields).join( - ', ' - )}]` - ); + const { sources: validSources, errors } = await Promise.allSettled( + sources.map((source) => + validateFields({ + source, + esClient: this.options.clusterClient.asCurrentUser, + logger: this.options.logger, + }).then(() => source) + ) + ).then((results) => ({ + sources: results.filter(isFulfilledResult).flatMap((result) => result.value), + errors: results.filter(isRejectedResult).map((result) => result.reason.message as string), + })); + + if (validSources.length === 0) { + return { type, value: 0, errors }; } - const { query, filter } = getEntityInstancesQuery({ - source: { - ...source, - metadata_fields: availableMetadataFields, - filters: [...source.filters, ...filters], - }, + const { query, filter } = getEntityCountQuery({ + sources: validSources, + filters, start, end, - sort, - limit, }); - this.options.logger.debug( - () => `Entity query: ${query}\nfilter: ${JSON.stringify(filter, null, 2)}` + this.options.logger.info( + `Entity count query: ${query}\nfilter: ${JSON.stringify(filter, null, 2)}` ); - const rawEntities = await runESQLQuery<EntityV2>('resolve entities', { + const [{ count }] = await runESQLQuery<{ count: number }>('count entities', { query, filter, esClient: this.options.clusterClient.asCurrentUser, logger: this.options.logger, }); - return rawEntities; + return { type, value: count, errors }; }) - ).then((results) => results.flat()); - - return mergeEntitiesList(sources, entities).slice(0, limit); + ); + + return counts.reduce( + (result, count) => { + result.types[count.type] = count.value; + result.total += count.value; + result.errors.push(...count.errors); + return result; + }, + { total: 0, types: {} as Record<string, number>, errors: [] as string[] } + ); } async storeTypeDefinition(type: EntityTypeDefinition) { - return storeTypeDefinition(type, this.options.clusterClient, this.options.logger); + return storeTypeDefinition({ + type, + clusterClient: this.options.clusterClient, + logger: this.options.logger, + }); } async readTypeDefinitions() { @@ -136,7 +193,11 @@ export class EntityClient { } async storeSourceDefinition(source: EntitySourceDefinition) { - return storeSourceDefinition(source, this.options.clusterClient, this.options.logger); + return storeSourceDefinition({ + source, + clusterClient: this.options.clusterClient, + logger: this.options.logger, + }); } async readSourceDefinitions(options?: ReadSourceDefinitionOptions) { diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/errors/invalid_entity_instance.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/errors/invalid_entity_instance.ts new file mode 100644 index 0000000000000..12b0a94fe3ebb --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/errors/invalid_entity_instance.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export class InvalidEntityInstance extends Error { + constructor(message: string) { + super(message); + this.name = 'InvalidEntityInstance'; + } +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.test.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.test.ts new file mode 100644 index 0000000000000..04a391ef0026f --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.test.ts @@ -0,0 +1,327 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getEntityCountQuery } from './entity_count'; + +describe('getEntityCountQuery', () => { + it('generates a valid esql query for a single source', () => { + const { query, filter } = getEntityCountQuery({ + sources: [ + { + id: 'service_source', + type_id: 'service', + index_patterns: ['logs-*'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + ], + filters: [], + start: '2024-11-20T19:00:00.000Z', + end: '2024-11-20T20:00:00.000Z', + }); + + expect(query).toEqual('FROM logs-* | STATS BY service.name::keyword | STATS count = COUNT()'); + + expect(filter).toEqual({ + bool: { + filter: [ + { + bool: { + should: [ + { + exists: { + field: 'service.name', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + range: { + '@timestamp': { + gte: '2024-11-20T19:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + range: { + '@timestamp': { + lte: '2024-11-20T20:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + { + bool: { + should: [ + { + bool: { + should: [ + { + match_phrase: { + _index: 'logs-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + match_phrase: { + _index: '.ds-logs-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }); + }); + + it('generates a valid esql query for multiple sources', () => { + const { query, filter } = getEntityCountQuery({ + sources: [ + { + id: 'service_source_1', + type_id: 'service', + index_patterns: ['metrics-*'], + identity_fields: ['service_name'], + metadata_fields: [], + filters: [], + timestamp_field: 'timestamp_field', + }, + { + id: 'service_source_2', + type_id: 'service', + index_patterns: ['logs-*'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + ], + filters: [], + start: '2024-11-20T19:00:00.000Z', + end: '2024-11-20T20:00:00.000Z', + }); + + expect(query).toEqual( + 'FROM metrics-*, logs-* METADATA _index | ' + + 'EVAL is_source_0 = _index LIKE "metrics-**" OR _index LIKE ".ds-metrics-**" | ' + + 'EVAL is_source_1 = _index LIKE "logs-**" OR _index LIKE ".ds-logs-**" | ' + + 'EVAL entity.id = CASE(is_source_0, service_name::keyword, is_source_1, service.name::keyword) | ' + + 'WHERE entity.id IS NOT NULL | ' + + 'STATS BY entity.id | ' + + 'STATS count = COUNT()' + ); + + expect(filter).toEqual({ + bool: { + should: [ + { + bool: { + filter: [ + { + bool: { + should: [ + { + exists: { + field: 'service_name', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + range: { + timestamp_field: { + gte: '2024-11-20T19:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + range: { + timestamp_field: { + lte: '2024-11-20T20:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + { + bool: { + should: [ + { + bool: { + should: [ + { + match_phrase: { + _index: 'metrics-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + match_phrase: { + _index: '.ds-metrics-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + exists: { + field: 'service.name', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + range: { + '@timestamp': { + gte: '2024-11-20T19:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + range: { + '@timestamp': { + lte: '2024-11-20T20:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + { + bool: { + should: [ + { + bool: { + should: [ + { + match_phrase: { + _index: 'logs-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + match_phrase: { + _index: '.ds-logs-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + ], + minimum_should_match: 1, + }, + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.ts new file mode 100644 index 0000000000000..930ee15be61b8 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.ts @@ -0,0 +1,136 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { compact, last } from 'lodash'; +import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; +import { EntitySourceDefinition } from '../types'; +import { asKeyword } from './utils'; + +const fromCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + let command = `FROM ${sources.flatMap((source) => source.index_patterns).join(', ')}`; + if (sources.length > 1) { + command += ' METADATA _index'; + } + + return command; +}; + +const dslFilter = ({ + sources, + filters, + start, + end, +}: { + sources: EntitySourceDefinition[]; + filters: string[]; + start: string; + end: string; +}) => { + const sourcesFilters = sources + .map((source) => { + const sourceFilters = [ + ...source.filters, + ...source.identity_fields.map((field) => `${field}: *`), + ]; + + if (source.timestamp_field) { + sourceFilters.push( + `${source.timestamp_field} >= "${start}" AND ${source.timestamp_field} <= "${end}"` + ); + } + + sourceFilters.push( + source.index_patterns + .map((pattern) => `_index: "${pattern}*" OR _index: ".ds-${last(pattern.split(':'))}*"`) + .join(' OR ') + ); + + return '(' + sourceFilters.map((filter) => '(' + filter + ')').join(' AND ') + ')'; + }) + .join(' OR '); + + const additionalFilters = filters.map((filter) => '(' + filter + ')').join(' AND '); + + return toElasticsearchQuery( + fromKueryExpression(compact([`(${sourcesFilters})`, additionalFilters]).join(' AND ')) + ); +}; + +const statsCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + const commands = [ + sources.length === 1 + ? `STATS BY ${sources[0].identity_fields.map(asKeyword).join(', ')}` + : `STATS BY entity.id`, + 'STATS count = COUNT()', + ]; + return commands.join(' | '); +}; + +const sourcesEvalCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + if (sources.length === 1) { + return; + } + + const evals = sources.map((source, index) => { + const condition = source.index_patterns + .map( + (pattern) => `_index LIKE "${pattern}*" OR _index LIKE ".ds-${last(pattern.split(':'))}*"` + ) + .join(' OR '); + + return `EVAL is_source_${index} = ${condition}`; + }); + + return evals.join(' | '); +}; + +const idEvalCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + if (sources.length === 1) { + return; + } + + const conditions = sources.flatMap((source, index) => { + return [ + `is_source_${index}`, + source.identity_fields.length === 1 + ? asKeyword(source.identity_fields[0]) + : `CONCAT(${source.identity_fields.map(asKeyword).join(', ":", ')})`, + ]; + }); + return `EVAL entity.id = CASE(${conditions.join(', ')})`; +}; + +const whereCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + if (sources.length === 1) { + return; + } + + return 'WHERE entity.id IS NOT NULL'; +}; + +export function getEntityCountQuery({ + sources, + filters, + start, + end, +}: { + sources: EntitySourceDefinition[]; + filters: string[]; + start: string; + end: string; +}) { + const commands = compact([ + fromCommand({ sources }), + sourcesEvalCommand({ sources }), + idEvalCommand({ sources }), + whereCommand({ sources }), + statsCommand({ sources }), + ]); + + const filter = dslFilter({ sources, filters, start, end }); + return { query: commands.join(' | '), filter }; +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.test.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.test.ts new file mode 100644 index 0000000000000..8836b7635ff36 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.test.ts @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getEntityInstancesQuery } from './entity_instances'; + +describe('getEntityInstancesQuery', () => { + it('generates a valid esql query', () => { + const { query, filter } = getEntityInstancesQuery({ + source: { + id: 'service_source', + type_id: 'service', + index_patterns: ['logs-*', 'metrics-*'], + identity_fields: ['service.name'], + metadata_fields: ['host.name'], + filters: [], + timestamp_field: 'custom_timestamp_field', + display_name: 'service.id', + }, + limit: 5, + start: '2024-11-20T19:00:00.000Z', + end: '2024-11-20T20:00:00.000Z', + sort: { field: 'entity.id', direction: 'DESC' }, + }); + + expect(query).toEqual( + 'FROM logs-*, metrics-* | ' + + 'STATS host.name = VALUES(host.name::keyword), entity.last_seen_timestamp = MAX(custom_timestamp_field), service.id = MAX(service.id::keyword) BY service.name::keyword | ' + + 'RENAME `service.name::keyword` AS service.name | ' + + 'EVAL entity.type = "service", entity.id = service.name, entity.display_name = COALESCE(service.id, entity.id) | ' + + 'SORT entity.id DESC | ' + + 'LIMIT 5' + ); + + expect(filter).toEqual({ + bool: { + filter: [ + { + bool: { + should: [ + { + exists: { + field: 'service.name', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + range: { + custom_timestamp_field: { + gte: '2024-11-20T19:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + range: { + custom_timestamp_field: { + lte: '2024-11-20T20:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + ], + }, + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.ts new file mode 100644 index 0000000000000..c9a5948b55dc1 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.ts @@ -0,0 +1,122 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; +import { asKeyword } from './utils'; +import { EntitySourceDefinition, SortBy } from '../types'; + +const fromCommand = ({ source }: { source: EntitySourceDefinition }) => { + let query = `FROM ${source.index_patterns.join(', ')}`; + + const esMetadataFields = source.metadata_fields.filter((field) => + ['_index', '_id'].includes(field) + ); + if (esMetadataFields.length) { + query += ` METADATA ${esMetadataFields.join(', ')}`; + } + + return query; +}; + +const dslFilter = ({ + source, + start, + end, +}: { + source: EntitySourceDefinition; + start: string; + end: string; +}) => { + const filters = [...source.filters, ...source.identity_fields.map((field) => `${field}: *`)]; + + if (source.timestamp_field) { + filters.push( + `${source.timestamp_field} >= "${start}" AND ${source.timestamp_field} <= "${end}"` + ); + } + + const kuery = filters.map((filter) => '(' + filter + ')').join(' AND '); + return toElasticsearchQuery(fromKueryExpression(kuery)); +}; + +const statsCommand = ({ source }: { source: EntitySourceDefinition }) => { + const aggs = source.metadata_fields + .filter((field) => !source.identity_fields.some((idField) => idField === field)) + .map((field) => `${field} = VALUES(${asKeyword(field)})`); + + if (source.timestamp_field) { + aggs.push(`entity.last_seen_timestamp = MAX(${source.timestamp_field})`); + } + + if (source.display_name) { + // ideally we want the latest value but there's no command yet + // so we use MAX for now + aggs.push(`${source.display_name} = MAX(${asKeyword(source.display_name)})`); + } + + return `STATS ${aggs.join(', ')} BY ${source.identity_fields.map(asKeyword).join(', ')}`; +}; + +const renameCommand = ({ source }: { source: EntitySourceDefinition }) => { + const operations = source.identity_fields.map((field) => `\`${asKeyword(field)}\` AS ${field}`); + return `RENAME ${operations.join(', ')}`; +}; + +const evalCommand = ({ source }: { source: EntitySourceDefinition }) => { + const id = + source.identity_fields.length === 1 + ? source.identity_fields[0] + : `CONCAT(${source.identity_fields.join(', ":", ')})`; + + const displayName = source.display_name + ? `COALESCE(${source.display_name}, entity.id)` + : 'entity.id'; + + return `EVAL ${[ + `entity.type = "${source.type_id}"`, + `entity.id = ${id}`, + `entity.display_name = ${displayName}`, + ].join(', ')}`; +}; + +const sortCommand = ({ source, sort }: { source: EntitySourceDefinition; sort?: SortBy }) => { + if (sort) { + return `SORT ${sort.field} ${sort.direction}`; + } + + if (source.timestamp_field) { + return `SORT entity.last_seen_timestamp DESC`; + } + + return `SORT entity.id ASC`; +}; + +export function getEntityInstancesQuery({ + source, + limit, + start, + end, + sort, +}: { + source: EntitySourceDefinition; + limit: number; + start: string; + end: string; + sort?: SortBy; +}) { + const commands = [ + fromCommand({ source }), + statsCommand({ source }), + renameCommand({ source }), + evalCommand({ source }), + sortCommand({ source, sort }), + `LIMIT ${limit}`, + ]; + const filter = dslFilter({ source, start, end }); + + return { query: commands.join(' | '), filter }; +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.test.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.test.ts deleted file mode 100644 index 9bc475d031923..0000000000000 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.test.ts +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { getEntityInstancesQuery } from '.'; - -describe('getEntityInstancesQuery', () => { - describe('getEntityInstancesQuery', () => { - it('generates a valid esql query', () => { - const { query, filter } = getEntityInstancesQuery({ - source: { - id: 'service_source', - type_id: 'service', - index_patterns: ['logs-*', 'metrics-*'], - identity_fields: ['service.name'], - metadata_fields: ['host.name'], - filters: [], - timestamp_field: 'custom_timestamp_field', - display_name: 'service.id', - }, - limit: 5, - start: '2024-11-20T19:00:00.000Z', - end: '2024-11-20T20:00:00.000Z', - sort: { field: 'entity.id', direction: 'DESC' }, - }); - - expect(query).toEqual( - 'FROM logs-*, metrics-* | ' + - 'STATS host.name = VALUES(host.name::keyword), entity.last_seen_timestamp = MAX(custom_timestamp_field), service.id = MAX(service.id::keyword) BY service.name::keyword | ' + - 'RENAME `service.name::keyword` AS service.name | ' + - 'EVAL entity.type = "service", entity.id = service.name, entity.display_name = COALESCE(service.id, entity.id) | ' + - 'SORT entity.id DESC | ' + - 'LIMIT 5' - ); - - expect(filter).toEqual({ - bool: { - filter: [ - { - bool: { - should: [ - { - exists: { - field: 'service.name', - }, - }, - ], - minimum_should_match: 1, - }, - }, - { - bool: { - filter: [ - { - bool: { - should: [ - { - range: { - custom_timestamp_field: { - gte: '2024-11-20T19:00:00.000Z', - }, - }, - }, - ], - minimum_should_match: 1, - }, - }, - { - bool: { - should: [ - { - range: { - custom_timestamp_field: { - lte: '2024-11-20T20:00:00.000Z', - }, - }, - }, - ], - minimum_should_match: 1, - }, - }, - ], - }, - }, - ], - }, - }); - }); - }); -}); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.ts index 5ce7a54eb1d1c..21e7d16be3442 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.ts @@ -5,118 +5,5 @@ * 2.0. */ -import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; -import { asKeyword } from './utils'; -import { EntitySourceDefinition, SortBy } from '../types'; - -const sourceCommand = ({ source }: { source: EntitySourceDefinition }) => { - let query = `FROM ${source.index_patterns.join(', ')}`; - - const esMetadataFields = source.metadata_fields.filter((field) => - ['_index', '_id'].includes(field) - ); - if (esMetadataFields.length) { - query += ` METADATA ${esMetadataFields.join(', ')}`; - } - - return query; -}; - -const dslFilter = ({ - source, - start, - end, -}: { - source: EntitySourceDefinition; - start: string; - end: string; -}) => { - const filters = [...source.filters, ...source.identity_fields.map((field) => `${field}: *`)]; - - if (source.timestamp_field) { - filters.push( - `${source.timestamp_field} >= "${start}" AND ${source.timestamp_field} <= "${end}"` - ); - } - - const kuery = filters.map((filter) => '(' + filter + ')').join(' AND '); - return toElasticsearchQuery(fromKueryExpression(kuery)); -}; - -const statsCommand = ({ source }: { source: EntitySourceDefinition }) => { - const aggs = source.metadata_fields - .filter((field) => !source.identity_fields.some((idField) => idField === field)) - .map((field) => `${field} = VALUES(${asKeyword(field)})`); - - if (source.timestamp_field) { - aggs.push(`entity.last_seen_timestamp = MAX(${source.timestamp_field})`); - } - - if (source.display_name) { - // ideally we want the latest value but there's no command yet - // so we use MAX for now - aggs.push(`${source.display_name} = MAX(${asKeyword(source.display_name)})`); - } - - return `STATS ${aggs.join(', ')} BY ${source.identity_fields.map(asKeyword).join(', ')}`; -}; - -const renameCommand = ({ source }: { source: EntitySourceDefinition }) => { - const operations = source.identity_fields.map((field) => `\`${asKeyword(field)}\` AS ${field}`); - return `RENAME ${operations.join(', ')}`; -}; - -const evalCommand = ({ source }: { source: EntitySourceDefinition }) => { - const id = - source.identity_fields.length === 1 - ? source.identity_fields[0] - : `CONCAT(${source.identity_fields.join(', ":", ')})`; - - const displayName = source.display_name - ? `COALESCE(${source.display_name}, entity.id)` - : 'entity.id'; - - return `EVAL ${[ - `entity.type = "${source.type_id}"`, - `entity.id = ${id}`, - `entity.display_name = ${displayName}`, - ].join(', ')}`; -}; - -const sortCommand = ({ source, sort }: { source: EntitySourceDefinition; sort?: SortBy }) => { - if (sort) { - return `SORT ${sort.field} ${sort.direction}`; - } - - if (source.timestamp_field) { - return `SORT entity.last_seen_timestamp DESC`; - } - - return `SORT entity.id ASC`; -}; - -export function getEntityInstancesQuery({ - source, - limit, - start, - end, - sort, -}: { - source: EntitySourceDefinition; - limit: number; - start: string; - end: string; - sort?: SortBy; -}) { - const commands = [ - sourceCommand({ source }), - statsCommand({ source }), - renameCommand({ source }), - evalCommand({ source }), - sortCommand({ source, sort }), - `LIMIT ${limit}`, - ]; - const filter = dslFilter({ source, start, end }); - - return { query: commands.join(' | '), filter }; -} +export { getEntityInstancesQuery } from './entity_instances'; +export { getEntityCountQuery } from './entity_count'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.test.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.test.ts index 295ab7796585c..d588811f2aa19 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.test.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.test.ts @@ -17,22 +17,32 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', }, { 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', }, ]; - const mergedEntities = mergeEntitiesList([], entities); + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: [], + sources: [ + { identity_fields: ['service.name'], metadata_fields: ['only_in_record_1'] }, + { identity_fields: ['service.name'], metadata_fields: ['only_in_record_2'] }, + ] as EntitySourceDefinition[], + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', }); }); @@ -43,6 +53,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-1', 'agent.name': 'agent-1', 'service.environment': ['dev', 'staging'], @@ -53,6 +64,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-2', 'host-3'], 'agent.name': 'agent-2', 'service.environment': 'prod', @@ -60,23 +72,21 @@ describe('mergeEntitiesList', () => { }, ]; - const mergedEntities = mergeEntitiesList( - [ - { - metadata_fields: ['host.name', 'agent.name', 'service.environment', 'only_in_record_1'], - }, - { - metadata_fields: ['host.name', 'agent.name', 'service.environment', 'only_in_record_2'], - }, + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name', 'agent.name', 'service.environment'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: ['only_in_record_1'] }, + { identity_fields: ['service.name'], metadata_fields: ['only_in_record_2'] }, ] as EntitySourceDefinition[], - entities - ); + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2', 'host-3'], 'agent.name': ['agent-1', 'agent-2'], 'service.environment': ['dev', 'staging', 'prod'], @@ -92,6 +102,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-1', }, { @@ -99,6 +110,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-2', }, { @@ -106,33 +118,33 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T16:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-3', }, { 'entity.id': 'foo', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-3', }, ]; - const mergedEntities = mergeEntitiesList( - [ - { - metadata_fields: ['host.name'], - }, - { - metadata_fields: ['host.name'], - }, + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, ] as EntitySourceDefinition[], - entities - ); + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2', 'host-3'], }); }); @@ -143,28 +155,32 @@ describe('mergeEntitiesList', () => { 'entity.id': 'foo', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-1', }, { 'entity.id': 'foo', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-2', }, ]; - const mergedEntities = mergeEntitiesList( - [ - { metadata_fields: ['host.name'] }, - { metadata_fields: ['host.name'] }, + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, ] as EntitySourceDefinition[], - entities - ); + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2'], }); }); @@ -176,6 +192,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-1', }, { @@ -183,6 +200,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-2', }, { @@ -190,29 +208,117 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T16:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2'], }, ]; - const mergedEntities = mergeEntitiesList( - [ - { - metadata_fields: ['host.name'], - }, - { - metadata_fields: ['host.name'], - }, + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, ] as EntitySourceDefinition[], - entities - ); + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2'], }); }); + + it('assigns all identity fields to the merged entity', () => { + const entities = [ + { + 'entity.id': 'foo', + 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + }, + { + 'entity.id': 'foo', + 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', + 'entity.type': 'service', + 'entity.display_name': 'foo', + servicename_field: 'foo', + }, + { + 'entity.id': 'foo', + 'entity.last_seen_timestamp': '2024-11-20T16:00:00.000Z', + 'entity.type': 'service', + 'entity.display_name': 'foo', + service_name: 'foo', + }, + ]; + + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: [], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['servicename_field'], metadata_fields: [] as string[] }, + { identity_fields: ['service_name'], metadata_fields: [] as string[] }, + ] as EntitySourceDefinition[], + }); + expect(mergedEntities.length).toEqual(1); + expect(mergedEntities[0]).toEqual({ + 'entity.id': 'foo', + 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + servicename_field: 'foo', + service_name: 'foo', + }); + }); + + it('ignores null values when merging', () => { + const entities = [ + { + 'entity.id': 'foo', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + 'host.name': null, + }, + { + 'entity.id': 'foo', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + 'host.name': 'host-2', + }, + { + 'entity.id': 'foo', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + 'host.name': null, + }, + ]; + + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + ] as EntitySourceDefinition[], + }); + expect(mergedEntities.length).toEqual(1); + expect(mergedEntities[0]).toEqual({ + 'entity.id': 'foo', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + 'host.name': 'host-2', + }); + }); }); }); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.ts index 5d1ebf3001434..969128fcf4088 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.ts @@ -6,8 +6,8 @@ */ import { EntityV2 } from '@kbn/entities-schema'; -import { compact, uniq } from 'lodash'; -import { EntitySourceDefinition } from '../types'; +import { orderBy, uniq } from 'lodash'; +import { EntitySourceDefinition, SortBy } from '../types'; function getLatestDate(date1?: string, date2?: string) { if (!date1 && !date2) return; @@ -17,7 +17,12 @@ function getLatestDate(date1?: string, date2?: string) { ).toISOString(); } -function mergeEntities(metadataFields: string[], entity1: EntityV2, entity2: EntityV2): EntityV2 { +function mergeEntities( + identityFields: string[], + mergeableFields: string[], + entity1: EntityV2, + entity2: EntityV2 +): EntityV2 { const merged: EntityV2 = { ...entity1 }; const latestTimestamp = getLatestDate( @@ -28,14 +33,18 @@ function mergeEntities(metadataFields: string[], entity1: EntityV2, entity2: Ent merged['entity.last_seen_timestamp'] = latestTimestamp; } - for (const [key, value] of Object.entries(entity2).filter(([_key]) => - metadataFields.includes(_key) + for (const [key, value] of Object.entries(entity2).filter( + ([_key]) => mergeableFields.includes(_key) && entity2[_key] )) { if (merged[key]) { - merged[key] = uniq([ - ...(Array.isArray(merged[key]) ? merged[key] : [merged[key]]), - ...(Array.isArray(value) ? value : [value]), - ]); + // we want to keep identity fields as single-value properties. + // this can happen if two sources group by the same identity + if (!identityFields.includes(key)) { + merged[key] = uniq([ + ...(Array.isArray(merged[key]) ? merged[key] : [merged[key]]), + ...(Array.isArray(value) ? value : [value]), + ]); + } } else { merged[key] = value; } @@ -43,13 +52,21 @@ function mergeEntities(metadataFields: string[], entity1: EntityV2, entity2: Ent return merged; } -export function mergeEntitiesList( - sources: EntitySourceDefinition[], - entities: EntityV2[] -): EntityV2[] { - const metadataFields = uniq( - sources.flatMap((source) => compact([source.timestamp_field, ...source.metadata_fields])) - ); +export function mergeEntitiesList({ + entities, + sources, + metadataFields, +}: { + entities: EntityV2[]; + sources: EntitySourceDefinition[]; + metadataFields: string[]; +}): EntityV2[] { + const identityFields = uniq([...sources.flatMap((source) => source.identity_fields)]); + const mergeableFields = uniq([ + ...identityFields, + ...metadataFields, + ...sources.flatMap((source) => source.metadata_fields), + ]); const instances: { [key: string]: EntityV2 } = {}; for (let i = 0; i < entities.length; i++) { @@ -57,7 +74,7 @@ export function mergeEntitiesList( const id = entity['entity.id']; if (instances[id]) { - instances[id] = mergeEntities(metadataFields, instances[id], entity); + instances[id] = mergeEntities(identityFields, mergeableFields, instances[id], entity); } else { instances[id] = entity; } @@ -66,6 +83,38 @@ export function mergeEntitiesList( return Object.values(instances); } +export function sortEntitiesList({ + entities, + sources, + sort, +}: { + entities: EntityV2[]; + sources: EntitySourceDefinition[]; + sort?: SortBy; +}) { + if (!sort) { + sort = defaultSort(sources); + } + + return orderBy(entities, sort.field, sort.direction.toLowerCase() as 'asc' | 'desc'); +} + export function asKeyword(field: string) { return `${field}::keyword`; } + +export function defaultSort(sources: EntitySourceDefinition[]): SortBy { + if (sources.some((source) => source.timestamp_field)) { + return { field: 'entity.last_seen_timestamp', direction: 'DESC' }; + } + + return { field: 'entity.id', direction: 'ASC' }; +} + +export const isRejectedResult = ( + input: PromiseSettledResult<unknown> +): input is PromiseRejectedResult => input.status === 'rejected'; + +export const isFulfilledResult = <T>( + input: PromiseSettledResult<T> +): input is PromiseFulfilledResult<T> => input.status === 'fulfilled'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/types.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/types.ts index e9815942592de..9515a60d7eec2 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/types.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/types.ts @@ -5,13 +5,17 @@ * 2.0. */ +import { IClusterClient } from '@kbn/core/server'; import { z } from '@kbn/zod'; import moment from 'moment'; +export type InternalClusterClient = Pick<IClusterClient, 'asInternalUser'>; + // Definitions export const entityTypeDefinitionRt = z.object({ id: z.string(), + display_name: z.string(), }); export type EntityTypeDefinition = z.TypeOf<typeof entityTypeDefinitionRt>; @@ -29,6 +33,11 @@ export const entitySourceDefinitionRt = z.object({ export type EntitySourceDefinition = z.TypeOf<typeof entitySourceDefinitionRt>; +export interface BuiltInDefinition { + type: EntityTypeDefinition; + sources: EntitySourceDefinition[]; +} + // Stored definitions export type DefinitionType = 'type' | 'source'; @@ -74,6 +83,8 @@ const searchCommonRt = z.object({ filters: z.optional(z.array(z.string())).default([]), }); +export type SearchCommon = z.output<typeof searchCommonRt>; + export const searchByTypeRt = z.intersection( searchCommonRt, z.object({ @@ -91,3 +102,22 @@ export const searchBySourcesRt = z.intersection( ); export type SearchBySources = z.output<typeof searchBySourcesRt>; + +export const countByTypesRt = z.object({ + types: z.optional(z.array(z.string())), + filters: z.optional(z.array(z.string())), + start: z + .optional(z.string()) + .default(() => moment().subtract(5, 'minutes').toISOString()) + .refine((val) => moment(val).isValid(), { + message: '[start] should be a date in ISO format', + }), + end: z + .optional(z.string()) + .default(() => moment().toISOString()) + .refine((val) => moment(val).isValid(), { + message: '[end] should be a date in ISO format', + }), +}); + +export type CountByTypes = z.output<typeof countByTypesRt>; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/validate_fields.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/validate_fields.ts new file mode 100644 index 0000000000000..ef5ae1bf783ac --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/validate_fields.ts @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { without } from 'lodash'; +import { Logger } from '@kbn/logging'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { EntitySourceDefinition } from './types'; + +// verifies field capabilities of the provided source. +// we map source fields in two categories: +// - mandatory: those are necessary for building entities according to the +// source definition (identity_fields, timestamp_field and display_name). +// unmapped mandatory field throws an error +// - optional: the requested metadata fields. unmapped metadata field is not +// fatal, we simply ignore it +// returns the available metadata fields. +export async function validateFields({ + esClient, + source, + logger, + metadataFields = [], +}: { + esClient: ElasticsearchClient; + source: EntitySourceDefinition; + logger: Logger; + metadataFields?: string[]; +}) { + const mandatoryFields = [ + ...source.identity_fields, + ...(source.timestamp_field ? [source.timestamp_field] : []), + ...(source.display_name ? [source.display_name] : []), + ]; + const metaFields = [...metadataFields, ...source.metadata_fields]; + + const { fields } = await esClient + .fieldCaps({ + index: source.index_patterns, + fields: [...mandatoryFields, ...metaFields], + }) + .catch((err) => { + if (err.meta?.statusCode === 404) { + throw new Error( + `No index found for source [source: ${source.id}, type: ${ + source.type_id + }] with index patterns [${source.index_patterns.join(', ')}]` + ); + } + throw err; + }); + + const sourceHasMandatoryFields = mandatoryFields.every((field) => !!fields[field]); + if (!sourceHasMandatoryFields) { + const missingFields = mandatoryFields.filter((field) => !fields[field]); + throw new Error( + `Mandatory fields [${missingFields.join(', ')}] are not mapped for source [source: ${ + source.id + }, type: ${source.type_id}] with index patterns [${source.index_patterns.join(', ')}]` + ); + } + + // operations on an unmapped field result in a failing query + const availableMetadataFields = metaFields.filter((field) => fields[field]); + if (availableMetadataFields.length < metaFields.length) { + logger.info( + `Ignoring unmapped metadata fields [${without(metaFields, ...availableMetadataFields).join( + ', ' + )}] for source [source: ${source.id}, type: ${source.type_id}]` + ); + } + return availableMetadataFields; +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/plugin.ts b/x-pack/platform/plugins/shared/entity_manager/server/plugin.ts index d2e9d12a33797..8799c7f365bf7 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/plugin.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/plugin.ts @@ -39,11 +39,16 @@ import { READ_ENTITY_SOURCE_DEFINITION_PRIVILEGE, READ_ENTITIES_PRIVILEGE, } from './lib/v2/constants'; +import { installBuiltInDefinitions } from './lib/v2/definitions/install_built_in_definitions'; +import { instanceAsFilter } from './lib/v2/definitions/instance_as_filter'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface EntityManagerServerPluginSetup {} export interface EntityManagerServerPluginStart { getScopedClient: (options: { request: KibanaRequest }) => Promise<EntityClient>; + v2: { + instanceAsFilter: typeof instanceAsFilter; + }; } export const config: PluginConfigDescriptor<EntityManagerConfig> = { @@ -165,10 +170,11 @@ export class EntityManagerServerPlugin this.server.encryptedSavedObjects = plugins.encryptedSavedObjects; } - const esClient = core.elasticsearch.client.asInternalUser; - // Setup v1 definitions index - installEntityManagerTemplates({ esClient, logger: this.logger }) + installEntityManagerTemplates({ + esClient: core.elasticsearch.client.asInternalUser, + logger: this.logger, + }) .then(async () => { // the api key validation requires a check against the cluster license // which is lazily loaded. we ensure it gets loaded before the update @@ -185,14 +191,19 @@ export class EntityManagerServerPlugin .catch((err) => this.logger.error(err)); // Setup v2 definitions index - setupEntityDefinitionsIndex(core.elasticsearch.client, this.logger).catch((error) => { - this.logger.error(error); - }); + setupEntityDefinitionsIndex(core.elasticsearch.client, this.logger) + .then(() => installBuiltInDefinitions(core.elasticsearch.client, this.logger)) + .catch((error) => { + this.logger.error(error); + }); return { getScopedClient: async ({ request }: { request: KibanaRequest }) => { return this.getScopedClient({ request, coreStart: core }); }, + v2: { + instanceAsFilter, + }, }; } diff --git a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/count.ts b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/count.ts new file mode 100644 index 0000000000000..46ae3da330f25 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/count.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { createEntityManagerServerRoute } from '../create_entity_manager_server_route'; +import { READ_ENTITIES_PRIVILEGE } from '../../lib/v2/constants'; +import { countByTypesRt } from '../../lib/v2/types'; + +export const countEntitiesRoute = createEntityManagerServerRoute({ + endpoint: 'POST /internal/entities/v2/_count', + security: { + authz: { + requiredPrivileges: [READ_ENTITIES_PRIVILEGE], + }, + }, + params: z.object({ + body: countByTypesRt, + }), + handler: async ({ request, response, params, getScopedClient }) => { + const client = await getScopedClient({ request }); + const result = await client.v2.countEntities(params.body); + + return response.ok({ body: result }); + }, +}); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/index.ts index c601ebe988a29..009393d44b634 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/index.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/index.ts @@ -8,9 +8,11 @@ import { searchRoutes } from './search'; import { typeDefinitionRoutes } from './type_definition_routes'; import { sourceDefinitionRoutes } from './source_definition_routes'; +import { countEntitiesRoute } from './count'; export const v2Routes = { ...searchRoutes, ...typeDefinitionRoutes, ...sourceDefinitionRoutes, + ...countEntitiesRoute, }; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/search.ts b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/search.ts index 82d0e5e84f2da..a2ebb26da715f 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/search.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/search.ts @@ -24,9 +24,9 @@ export const searchEntitiesRoute = createEntityManagerServerRoute({ handler: async ({ request, response, params, logger, getScopedClient }) => { try { const client = await getScopedClient({ request }); - const entities = await client.v2.searchEntities(params.body); + const result = await client.v2.searchEntities(params.body); - return response.ok({ body: { entities } }); + return response.ok({ body: result }); } catch (e) { logger.error(e); @@ -51,9 +51,9 @@ export const searchEntitiesPreviewRoute = createEntityManagerServerRoute({ }), handler: async ({ request, response, params, getScopedClient }) => { const client = await getScopedClient({ request }); - const entities = await client.v2.searchEntitiesBySources(params.body); + const result = await client.v2.searchEntitiesBySources(params.body); - return response.ok({ body: { entities } }); + return response.ok({ body: result }); }, }); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/source_definition_routes.ts b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/source_definition_routes.ts index 4fdfa281cfd72..c02627f889939 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/source_definition_routes.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/source_definition_routes.ts @@ -13,6 +13,7 @@ import { import { entitySourceDefinitionRt } from '../../lib/v2/types'; import { createEntityManagerServerRoute } from '../create_entity_manager_server_route'; import { EntityDefinitionConflict } from '../../lib/v2/errors/entity_definition_conflict'; +import { UnknownEntityType } from '../../lib/v2/errors/unknown_entity_type'; const createSourceDefinitionRoute = createEntityManagerServerRoute({ endpoint: 'POST /internal/entities/v2/definitions/sources', @@ -40,8 +41,16 @@ const createSourceDefinitionRoute = createEntityManagerServerRoute({ }, }); } catch (error) { + if (error instanceof UnknownEntityType) { + return response.notFound({ + body: { + message: error.message, + }, + }); + } + if (error instanceof EntityDefinitionConflict) { - response.conflict({ + return response.conflict({ body: { message: error.message, }, diff --git a/x-pack/platform/plugins/shared/entity_manager/tsconfig.json b/x-pack/platform/plugins/shared/entity_manager/tsconfig.json index beb8097502b2b..0fc46870ea472 100644 --- a/x-pack/platform/plugins/shared/entity_manager/tsconfig.json +++ b/x-pack/platform/plugins/shared/entity_manager/tsconfig.json @@ -38,5 +38,6 @@ "@kbn/es-types", "@kbn/apm-utils", "@kbn/features-plugin", + "@kbn/core-elasticsearch-server-mocks", ] } diff --git a/x-pack/platform/plugins/shared/inference/common/output/create_output_api.test.ts b/x-pack/platform/plugins/shared/inference/common/output/create_output_api.test.ts index b5d380fa9aac6..c65720aae2e48 100644 --- a/x-pack/platform/plugins/shared/inference/common/output/create_output_api.test.ts +++ b/x-pack/platform/plugins/shared/inference/common/output/create_output_api.test.ts @@ -12,6 +12,7 @@ import { ChatCompletionEventType, } from '@kbn/inference-common'; import { createOutputApi } from './create_output_api'; +import { createToolValidationError } from '../../server/chat_complete/errors'; describe('createOutputApi', () => { let chatComplete: jest.Mock; @@ -119,4 +120,80 @@ describe('createOutputApi', () => { }, ]); }); + + describe('when using retry', () => { + const unvalidatedFailedToolCall = { + function: { + name: 'myFunction', + arguments: JSON.stringify({ foo: 'bar' }), + }, + toolCallId: 'foo', + }; + + const validationError = createToolValidationError('Validation failed', { + toolCalls: [unvalidatedFailedToolCall], + }); + + it('retries once when onValidationError is a boolean', async () => { + chatComplete.mockRejectedValueOnce(validationError); + chatComplete.mockResolvedValueOnce( + Promise.resolve({ content: 'retried content', toolCalls: [unvalidatedFailedToolCall] }) + ); + + const output = createOutputApi(chatComplete); + + const response = await output({ + id: 'retry-id', + stream: false, + connectorId: '.retry-connector', + input: 'input message', + retry: { + onValidationError: true, + }, + }); + + expect(chatComplete).toHaveBeenCalledTimes(2); + expect(response).toEqual({ + id: 'retry-id', + content: 'retried content', + output: unvalidatedFailedToolCall.function.arguments, + }); + }); + + it('retries the number of specified attempts', async () => { + chatComplete.mockRejectedValue(validationError); + + const output = createOutputApi(chatComplete); + + await expect( + output({ + id: 'retry-id', + stream: false, + connectorId: '.retry-connector', + input: 'input message', + retry: { + onValidationError: 2, + }, + }) + ).rejects.toThrow('Validation failed'); + + expect(chatComplete).toHaveBeenCalledTimes(3); + }); + + it('throws an error if retry is provided in streaming mode', () => { + const output = createOutputApi(chatComplete); + + expect(() => + output({ + id: 'stream-retry-id', + stream: true, + connectorId: '.stream-retry-connector', + input: 'input message', + retry: { + onValidationError: 1, + }, + }) + ).toThrowError('Retry options are not supported in streaming mode'); + }); + }); }); diff --git a/x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts b/x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts index d263f733bf4ee..3e65cb283dd45 100644 --- a/x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts +++ b/x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts @@ -10,17 +10,22 @@ import { ChatCompletionEventType, MessageRole, OutputAPI, + OutputCompositeResponse, OutputEventType, OutputOptions, ToolSchema, + isToolValidationError, withoutTokenCountEvents, } from '@kbn/inference-common'; import { isObservable, map } from 'rxjs'; import { ensureMultiTurn } from '../utils/ensure_multi_turn'; +type DefaultOutputOptions = OutputOptions<string, ToolSchema | undefined, boolean>; + export function createOutputApi(chatCompleteApi: ChatCompleteAPI): OutputAPI; + export function createOutputApi(chatCompleteApi: ChatCompleteAPI) { - return ({ + return function callOutputApi({ id, connectorId, input, @@ -29,19 +34,26 @@ export function createOutputApi(chatCompleteApi: ChatCompleteAPI) { previousMessages, functionCalling, stream, - }: OutputOptions<string, ToolSchema | undefined, boolean>) => { + retry, + }: DefaultOutputOptions): OutputCompositeResponse<string, ToolSchema | undefined, boolean> { + if (stream && retry !== undefined) { + throw new Error(`Retry options are not supported in streaming mode`); + } + + const messages = ensureMultiTurn([ + ...(previousMessages || []), + { + role: MessageRole.User, + content: input, + }, + ]); + const response = chatCompleteApi({ connectorId, stream, functionCalling, system, - messages: ensureMultiTurn([ - ...(previousMessages || []), - { - role: MessageRole.User, - content: input, - }, - ]), + messages, ...(schema ? { tools: { @@ -79,16 +91,55 @@ export function createOutputApi(chatCompleteApi: ChatCompleteAPI) { }) ); } else { - return response.then((chatResponse) => { - return { - id, - content: chatResponse.content, - output: - chatResponse.toolCalls.length && 'arguments' in chatResponse.toolCalls[0].function - ? chatResponse.toolCalls[0].function.arguments - : undefined, - }; - }); + return response.then( + (chatResponse) => { + return { + id, + content: chatResponse.content, + output: + chatResponse.toolCalls.length && 'arguments' in chatResponse.toolCalls[0].function + ? chatResponse.toolCalls[0].function.arguments + : undefined, + }; + }, + (error: Error) => { + if (isToolValidationError(error) && retry?.onValidationError) { + const retriesLeft = + typeof retry.onValidationError === 'number' ? retry.onValidationError : 1; + + return callOutputApi({ + id, + connectorId, + input, + schema, + system, + previousMessages: messages.concat( + { + role: MessageRole.Assistant as const, + content: '', + toolCalls: error.meta.toolCalls!, + }, + ...(error.meta.toolCalls?.map((toolCall) => { + return { + name: toolCall.function.name, + role: MessageRole.Tool as const, + toolCallId: toolCall.toolCallId, + response: { + error: error.meta, + }, + }; + }) ?? []) + ), + functionCalling, + stream: false, + retry: { + onValidationError: retriesLeft - 1, + }, + }) as OutputCompositeResponse<string, ToolSchema | undefined, false>; + } + throw error; + } + ); } }; } diff --git a/x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/ast/corrections/like.ts b/x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/ast/corrections/like.ts index be61bd216284b..6ee068339b776 100644 --- a/x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/ast/corrections/like.ts +++ b/x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/ast/corrections/like.ts @@ -43,6 +43,9 @@ function checkLikeNode(node: ESQLLikeOperator): QueryCorrection[] { likeExpression.value = likeExpression.value .replaceAll(/(?<!\\)%/g, '*') .replaceAll(/(?<!\\)_/g, '?'); + likeExpression.valueUnquoted = likeExpression.valueUnquoted + .replaceAll(/(?<!\\)%/g, '*') + .replaceAll(/(?<!\\)_/g, '?'); if (likeExpression.value !== initialValue) { likeExpression.name = likeExpression.value; diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/bedrock/bedrock_claude_adapter.test.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/bedrock/bedrock_claude_adapter.test.ts index ca6f60dd45a55..565727b7f57fe 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/bedrock/bedrock_claude_adapter.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/bedrock/bedrock_claude_adapter.test.ts @@ -170,6 +170,7 @@ describe('bedrockClaudeAdapter', () => { ], }, { + name: 'my_function', role: MessageRole.Tool, toolCallId: '0', response: { diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/gemini/gemini_adapter.test.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/gemini/gemini_adapter.test.ts index c3410b2af3623..95a46f73d5d1f 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/gemini/gemini_adapter.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/gemini/gemini_adapter.test.ts @@ -172,6 +172,7 @@ describe('geminiAdapter', () => { ], }, { + name: 'my_function', role: MessageRole.Tool, toolCallId: '0', response: { diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.test.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.test.ts index 2d0154313b632..48544f1bb0fb1 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.test.ts @@ -142,6 +142,7 @@ describe('openAIAdapter', () => { ], }, { + name: 'my_function', role: MessageRole.Tool, toolCallId: '0', response: { diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.ts index fa412f335800d..49b6bb5142023 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.ts @@ -58,7 +58,6 @@ export const openAIAdapter: InferenceConnectorAdapter = { request = { stream, messages: messagesToOpenAI({ system: wrapped.system, messages: wrapped.messages }), - temperature: 0, }; } else { request = { @@ -66,7 +65,6 @@ export const openAIAdapter: InferenceConnectorAdapter = { messages: messagesToOpenAI({ system, messages }), tool_choice: toolChoiceToOpenAI(toolChoice), tools: toolsToOpenAI(tools), - temperature: 0, }; } diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/api.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/api.ts index 13b1c8d87270c..e58c94759e165 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/api.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/api.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { last } from 'lodash'; +import { last, omit } from 'lodash'; import { defer, switchMap, throwError } from 'rxjs'; import type { Logger } from '@kbn/logging'; import type { KibanaRequest } from '@kbn/core-http-server'; @@ -51,14 +51,26 @@ export function createChatCompleteApi({ request, actions, logger }: CreateChatCo const connectorType = connector.type; const inferenceAdapter = getInferenceAdapter(connectorType); + const messagesWithoutData = messages.map((message) => omit(message, 'data')); + if (!inferenceAdapter) { return throwError(() => createInferenceRequestError(`Adapter for type ${connectorType} not implemented`, 400) ); } - logger.debug(() => `Sending request: ${JSON.stringify(last(messages))}`); - logger.trace(() => JSON.stringify({ messages, toolChoice, tools, system })); + logger.debug( + () => `Sending request, last message is: ${JSON.stringify(last(messagesWithoutData))}` + ); + + logger.trace(() => + JSON.stringify({ + messages: messagesWithoutData, + toolChoice, + tools, + system, + }) + ); return inferenceAdapter.chatComplete({ system, diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/errors.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/errors.ts index a830f57fec559..00ef2d90ca1f7 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/errors.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/errors.ts @@ -44,7 +44,7 @@ export function createToolValidationError( name?: string; arguments?: string; errorsText?: string; - toolCalls?: UnvalidatedToolCall[]; + toolCalls: UnvalidatedToolCall[]; } ): ChatCompletionToolValidationError { return new InferenceTaskError(ChatCompletionErrorCode.ToolValidationError, message, meta); diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/simulated_function_calling/wrap_with_simulated_function_calling.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/simulated_function_calling/wrap_with_simulated_function_calling.ts index 4eb6cfd8d50e1..d2cb0bfae4999 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/simulated_function_calling/wrap_with_simulated_function_calling.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/simulated_function_calling/wrap_with_simulated_function_calling.ts @@ -79,7 +79,7 @@ export function wrapWithSimulatedFunctionCalling({ }; } -const convertToolResponseMessage = (message: ToolMessage<unknown>): UserMessage => { +const convertToolResponseMessage = (message: ToolMessage): UserMessage => { return { role: MessageRole.User, content: JSON.stringify({ diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.test.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.test.ts index c6e5b032120a3..f7c1115305f57 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.test.ts @@ -183,7 +183,7 @@ describe('chunksIntoMessage', () => { } await expect(async () => getMessage()).rejects.toThrowErrorMatchingInlineSnapshot( - `"Tool call arguments for myFunction were invalid"` + `"Tool call arguments for myFunction (001) were invalid"` ); }); diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.ts index fe9b745f442fc..77c4164348cc6 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.ts @@ -5,17 +5,17 @@ * 2.0. */ -import { last, map, merge, OperatorFunction, scan, share } from 'rxjs'; -import type { Logger } from '@kbn/logging'; import { - UnvalidatedToolCall, - ToolOptions, ChatCompletionChunkEvent, ChatCompletionEventType, ChatCompletionMessageEvent, ChatCompletionTokenCountEvent, + ToolOptions, + UnvalidatedToolCall, withoutTokenCountEvents, } from '@kbn/inference-common'; +import type { Logger } from '@kbn/logging'; +import { OperatorFunction, map, merge, share, toArray } from 'rxjs'; import { validateToolCalls } from '../../util/validate_tool_calls'; export function chunksIntoMessage<TToolOptions extends ToolOptions>({ @@ -37,38 +37,36 @@ export function chunksIntoMessage<TToolOptions extends ToolOptions>({ shared$, shared$.pipe( withoutTokenCountEvents(), - scan( - (prev, chunk) => { - prev.content += chunk.content ?? ''; + toArray(), + map((chunks): ChatCompletionMessageEvent<TToolOptions> => { + const concatenatedChunk = chunks.reduce( + (prev, chunk) => { + prev.content += chunk.content ?? ''; + + chunk.tool_calls?.forEach((toolCall) => { + let prevToolCall = prev.tool_calls[toolCall.index]; + if (!prevToolCall) { + prev.tool_calls[toolCall.index] = { + function: { + name: '', + arguments: '', + }, + toolCallId: '', + }; - chunk.tool_calls?.forEach((toolCall) => { - let prevToolCall = prev.tool_calls[toolCall.index]; - if (!prevToolCall) { - prev.tool_calls[toolCall.index] = { - function: { - name: '', - arguments: '', - }, - toolCallId: '', - }; + prevToolCall = prev.tool_calls[toolCall.index]; + } - prevToolCall = prev.tool_calls[toolCall.index]; - } + prevToolCall.function.name += toolCall.function.name; + prevToolCall.function.arguments += toolCall.function.arguments; + prevToolCall.toolCallId += toolCall.toolCallId; + }); - prevToolCall.function.name += toolCall.function.name; - prevToolCall.function.arguments += toolCall.function.arguments; - prevToolCall.toolCallId += toolCall.toolCallId; - }); + return prev; + }, + { content: '', tool_calls: [] as UnvalidatedToolCall[] } + ); - return prev; - }, - { - content: '', - tool_calls: [] as UnvalidatedToolCall[], - } - ), - last(), - map((concatenatedChunk): ChatCompletionMessageEvent<TToolOptions> => { logger.debug(() => `Received completed message: ${JSON.stringify(concatenatedChunk)}`); const validatedToolCalls = validateToolCalls<TToolOptions>({ diff --git a/x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts b/x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts index 8b4cc49dfaa46..84e3dd57cded1 100644 --- a/x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts +++ b/x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts @@ -76,9 +76,11 @@ const chatCompleteBodySchema: Type<ChatCompleteRequestBody> = schema.object({ name: schema.maybe(schema.string()), }), schema.object({ + name: schema.string(), role: schema.literal(MessageRole.Tool), toolCallId: schema.string(), response: schema.recordOf(schema.string(), schema.any()), + data: schema.maybe(schema.recordOf(schema.string(), schema.any())), }), ]) ), diff --git a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/actions/generate_esql.ts b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/actions/generate_esql.ts index 3d8701eba72db..5c2612aa0a4d4 100644 --- a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/actions/generate_esql.ts +++ b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/actions/generate_esql.ts @@ -34,6 +34,7 @@ export const generateEsqlTask = <TToolOptions extends ToolOptions>({ docBase, functionCalling, logger, + system, }: { connectorId: string; systemMessage: string; @@ -43,6 +44,7 @@ export const generateEsqlTask = <TToolOptions extends ToolOptions>({ docBase: EsqlDocumentBase; functionCalling?: FunctionCallingMode; logger: Pick<Logger, 'debug'>; + system?: string; }) => { return function askLlmToRespond({ documentationRequest: { commands, functions }, @@ -97,7 +99,7 @@ export const generateEsqlTask = <TToolOptions extends ToolOptions>({ When converting queries from one language to ES|QL, make sure that the functions are available and documented in ES|QL. E.g., for SPL's LEN, use LENGTH. For IF, use CASE. - `, + ${system ? `## Additional instructions\n\n${system}` : ''}`, messages: [ ...messages, { @@ -106,6 +108,7 @@ export const generateEsqlTask = <TToolOptions extends ToolOptions>({ toolCalls: [fakeRequestDocsToolCall], }, { + name: fakeRequestDocsToolCall.function.name, role: MessageRole.Tool, response: { documentation: requestedDocumentation, diff --git a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts index 56c48b73f4994..801d80a30174e 100644 --- a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts +++ b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts @@ -21,6 +21,7 @@ export function naturalLanguageToEsql<TToolOptions extends ToolOptions>({ toolChoice, logger, functionCalling, + system, ...rest }: NlToEsqlTaskParams<TToolOptions>): Observable<NlToEsqlTaskEvent<TToolOptions>> { return from(loadDocBase()).pipe( @@ -41,6 +42,7 @@ export function naturalLanguageToEsql<TToolOptions extends ToolOptions>({ tools, toolChoice, }, + system, }); return requestDocumentation({ diff --git a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/types.ts b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/types.ts index db3ac3b493481..5a1477524dbd4 100644 --- a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/types.ts +++ b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/types.ts @@ -29,5 +29,6 @@ export type NlToEsqlTaskParams<TToolOptions extends ToolOptions> = { connectorId: string; logger: Pick<Logger, 'debug'>; functionCalling?: FunctionCallingMode; + system?: string; } & TToolOptions & ({ input: string } | { messages: Message[] }); diff --git a/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.test.ts b/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.test.ts index 57b030771c6c0..8691a50cda207 100644 --- a/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.test.ts @@ -108,7 +108,7 @@ describe('validateToolCalls', () => { }); } expect(() => validate()).toThrowErrorMatchingInlineSnapshot( - `"Tool call arguments for my_function were invalid"` + `"Tool call arguments for my_function (1) were invalid"` ); try { @@ -119,6 +119,15 @@ describe('validateToolCalls', () => { arguments: JSON.stringify({ foo: 'bar' }), errorsText: `data must have required property 'bar'`, name: 'my_function', + toolCalls: [ + { + function: { + arguments: JSON.stringify({ foo: 'bar' }), + name: 'my_function', + }, + toolCallId: '1', + }, + ], }); } else { fail('Expected toolValidationError'); diff --git a/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.ts b/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.ts index ffc2482774b23..3698a93206c07 100644 --- a/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.ts +++ b/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.ts @@ -54,11 +54,12 @@ export function validateToolCalls<TToolOptions extends ToolOptions>({ if (!valid) { throw createToolValidationError( - `Tool call arguments for ${toolCall.function.name} were invalid`, + `Tool call arguments for ${toolCall.function.name} (${toolCall.toolCallId}) were invalid`, { name: toolCall.function.name, errorsText: validator.errorsText(), arguments: toolCall.function.arguments, + toolCalls, } ); } diff --git a/x-pack/plugins/ingest_pipelines/README.md b/x-pack/platform/plugins/shared/ingest_pipelines/README.md similarity index 100% rename from x-pack/plugins/ingest_pipelines/README.md rename to x-pack/platform/plugins/shared/ingest_pipelines/README.md diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/fixtures.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/fixtures.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/fixtures.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/fixtures.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/http_requests.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/http_requests.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/http_requests.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/http_requests.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/index.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/manage_processors.helpers.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/manage_processors.helpers.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/manage_processors.helpers.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/manage_processors.helpers.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipeline_form.helpers.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipeline_form.helpers.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipeline_form.helpers.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipeline_form.helpers.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_clone.helpers.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_clone.helpers.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_clone.helpers.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_clone.helpers.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create_from_csv.helpers.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create_from_csv.helpers.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create_from_csv.helpers.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create_from_csv.helpers.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_edit.helpers.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_edit.helpers.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_edit.helpers.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_edit.helpers.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_list.helpers.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_list.helpers.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_list.helpers.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/pipelines_list.helpers.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_clone.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_clone.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_clone.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_clone.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create_from_csv.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create_from_csv.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create_from_csv.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create_from_csv.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_edit.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_edit.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_edit.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_edit.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_list.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_list.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_list.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/ingest_pipelines_list.test.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/manage_processors.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/manage_processors.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/__jest__/client_integration/manage_processors.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/__jest__/client_integration/manage_processors.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/common/constants.ts b/x-pack/platform/plugins/shared/ingest_pipelines/common/constants.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/common/constants.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/common/constants.ts diff --git a/x-pack/plugins/ingest_pipelines/common/lib/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/common/lib/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/common/lib/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/common/lib/index.ts diff --git a/x-pack/plugins/ingest_pipelines/common/lib/pipeline_serialization.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/common/lib/pipeline_serialization.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/common/lib/pipeline_serialization.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/common/lib/pipeline_serialization.test.ts diff --git a/x-pack/plugins/ingest_pipelines/common/lib/pipeline_serialization.ts b/x-pack/platform/plugins/shared/ingest_pipelines/common/lib/pipeline_serialization.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/common/lib/pipeline_serialization.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/common/lib/pipeline_serialization.ts diff --git a/x-pack/plugins/ingest_pipelines/common/types.ts b/x-pack/platform/plugins/shared/ingest_pipelines/common/types.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/common/types.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/common/types.ts diff --git a/x-pack/platform/plugins/shared/ingest_pipelines/jest.config.js b/x-pack/platform/plugins/shared/ingest_pipelines/jest.config.js new file mode 100644 index 0000000000000..36819e3814d56 --- /dev/null +++ b/x-pack/platform/plugins/shared/ingest_pipelines/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/shared/ingest_pipelines'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/shared/ingest_pipelines', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/ingest_pipelines/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/ingest_pipelines/kibana.jsonc b/x-pack/platform/plugins/shared/ingest_pipelines/kibana.jsonc similarity index 100% rename from x-pack/plugins/ingest_pipelines/kibana.jsonc rename to x-pack/platform/plugins/shared/ingest_pipelines/kibana.jsonc diff --git a/x-pack/plugins/ingest_pipelines/public/application/app.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/app.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/app.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/app.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/README.md b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/README.md similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/README.md rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/README.md diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/constants.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/constants.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/constants.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/constants.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/http_requests.helpers.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/http_requests.helpers.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/http_requests.helpers.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/http_requests.helpers.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/pipeline_processors_editor.helpers.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/pipeline_processors_editor.helpers.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/pipeline_processors_editor.helpers.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/pipeline_processors_editor.helpers.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/pipeline_processors_editor.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/pipeline_processors_editor.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/pipeline_processors_editor.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/pipeline_processors_editor.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/append.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/append.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/append.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/append.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/attachment.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/attachment.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/attachment.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/attachment.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/bytes.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/bytes.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/bytes.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/bytes.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/circle.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/circle.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/circle.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/circle.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/common_processor_fields.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/common_processor_fields.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/common_processor_fields.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/common_processor_fields.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/community_id.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/community_id.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/community_id.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/community_id.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/convert.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/convert.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/convert.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/convert.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/csv.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/csv.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/csv.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/csv.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/date.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/date.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/date.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/date.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/date_index.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/date_index.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/date_index.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/date_index.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/dot_expander.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/dot_expander.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/dot_expander.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/dot_expander.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/enrich.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/enrich.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/enrich.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/enrich.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fail.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fail.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fail.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fail.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fingerprint.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fingerprint.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fingerprint.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fingerprint.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/foreach.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/foreach.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/foreach.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/foreach.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/geo_grid.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/geo_grid.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/geo_grid.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/geo_grid.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/grok.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/grok.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/grok.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/grok.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/inference.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/inference.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/inference.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/inference.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/network_direction.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/network_direction.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/network_direction.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/network_direction.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/pipeline.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/pipeline.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/pipeline.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/pipeline.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor_form.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor_form.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor_form.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor_form.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/redact.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/redact.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/redact.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/redact.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/registered_domain.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/registered_domain.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/registered_domain.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/registered_domain.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/reroute.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/reroute.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/reroute.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/reroute.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/script.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/script.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/script.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/script.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/set.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/set.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/set.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/set.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/uri_parts.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/uri_parts.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/uri_parts.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/uri_parts.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/user_agent.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/user_agent.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/user_agent.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/user_agent.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors_editor.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors_editor.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors_editor.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors_editor.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/test_pipeline.helpers.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/test_pipeline.helpers.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/test_pipeline.helpers.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/test_pipeline.helpers.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/test_pipeline.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/test_pipeline.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/test_pipeline.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/__jest__/test_pipeline.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/_shared.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/_shared.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/_shared.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/_shared.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/add_processor_button.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/add_processor_button.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/add_processor_button.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/add_processor_button.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/button.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/button.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/button.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/button.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/modal_provider.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/modal_provider.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/modal_provider.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/modal_provider.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/modal_provider.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/modal_provider.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/modal_provider.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/load_from_json/modal_provider.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/on_failure_processors_title.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/on_failure_processors_title.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/on_failure_processors_title.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/on_failure_processors_title.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/context_menu.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/context_menu.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/context_menu.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/context_menu.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/i18n_texts.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/i18n_texts.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/i18n_texts.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/i18n_texts.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.container.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.container.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.container.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.container.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/types.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/types.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/types.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item/types.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_status.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_status.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_status.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_status.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/pipeline_processors_editor_item_toolip.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/pipeline_processors_editor_item_toolip.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/pipeline_processors_editor_item_toolip.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/pipeline_processors_editor_item_toolip.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/pipeline_processors_editor_item_tooltip.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/pipeline_processors_editor_item_tooltip.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/pipeline_processors_editor_item_tooltip.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/pipeline_processors_editor_item_tooltip.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/processor_information.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/processor_information.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/processor_information.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/pipeline_processors_editor_item_tooltip/processor_information.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/add_processor_form.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/add_processor_form.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/add_processor_form.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/add_processor_form.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/documentation_button.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/documentation_button.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/documentation_button.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/documentation_button.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/edit_processor_form.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/edit_processor_form.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/edit_processor_form.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/edit_processor_form.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/drag_and_drop_text_list.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/drag_and_drop_text_list.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/drag_and_drop_text_list.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/drag_and_drop_text_list.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/drag_and_drop_text_list.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/drag_and_drop_text_list.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/drag_and_drop_text_list.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/drag_and_drop_text_list.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/text_editor.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/text_editor.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/text_editor.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/text_editor.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/text_editor.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/text_editor.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/text_editor.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/text_editor.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/xjson_editor.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/xjson_editor.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/xjson_editor.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/xjson_editor.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_form.container.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_form.container.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_form.container.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_form.container.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/processor_output.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/processor_output.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/processor_output.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/processor_output.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/processor_output.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/processor_output.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/processor_output.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_output/processor_output.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_settings_fields.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_settings_fields.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_settings_fields.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processor_settings_fields.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/append.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/append.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/append.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/append.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/attachment.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/attachment.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/attachment.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/attachment.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/bytes.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/bytes.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/bytes.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/bytes.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/circle.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/circle.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/circle.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/circle.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/common_processor_fields.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/common_processor_fields.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/common_processor_fields.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/common_processor_fields.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/field_name_field.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/field_name_field.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/field_name_field.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/field_name_field.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/ignore_missing_field.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/ignore_missing_field.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/ignore_missing_field.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/ignore_missing_field.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/processor_type_field.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/processor_type_field.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/processor_type_field.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/processor_type_field.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/properties_field.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/properties_field.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/properties_field.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/properties_field.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/target_field.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/target_field.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/target_field.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/common_fields/target_field.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/community_id.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/community_id.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/community_id.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/community_id.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/convert.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/convert.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/convert.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/convert.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/csv.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/csv.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/csv.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/csv.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/custom.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/custom.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/custom.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/custom.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/date.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/date.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/date.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/date.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/date_index_name.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/date_index_name.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/date_index_name.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/date_index_name.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dissect.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dissect.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dissect.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dissect.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dot_expander.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dot_expander.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dot_expander.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/dot_expander.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/drop.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/drop.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/drop.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/drop.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/enrich.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/enrich.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/enrich.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/enrich.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fail.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fail.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fail.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fail.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fingerprint.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fingerprint.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fingerprint.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fingerprint.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/foreach.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/foreach.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/foreach.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/foreach.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/geogrid.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/geogrid.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/geogrid.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/geogrid.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/geoip.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/geoip.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/geoip.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/geoip.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/grok.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/grok.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/grok.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/grok.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/gsub.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/gsub.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/gsub.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/gsub.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/html_strip.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/html_strip.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/html_strip.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/html_strip.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/inference.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/inference.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/inference.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/inference.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/ip_location.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/ip_location.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/ip_location.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/ip_location.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/join.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/join.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/join.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/join.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/json.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/json.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/json.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/json.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/kv.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/kv.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/kv.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/kv.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/lowercase.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/lowercase.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/lowercase.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/lowercase.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/network_direction.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/network_direction.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/network_direction.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/network_direction.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/pipeline.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/pipeline.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/pipeline.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/pipeline.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/redact.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/redact.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/redact.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/redact.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/registered_domain.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/registered_domain.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/registered_domain.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/registered_domain.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/remove.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/remove.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/remove.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/remove.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/rename.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/rename.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/rename.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/rename.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/reroute.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/reroute.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/reroute.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/reroute.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/script.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/script.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/script.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/script.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/set.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/set.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/set.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/set.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/set_security_user.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/set_security_user.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/set_security_user.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/set_security_user.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/shared.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/shared.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/shared.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/shared.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/shared.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/shared.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/shared.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/shared.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/sort.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/sort.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/sort.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/sort.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/split.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/split.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/split.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/split.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/trim.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/trim.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/trim.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/trim.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/uppercase.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/uppercase.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/uppercase.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/uppercase.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/uri_parts.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/uri_parts.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/uri_parts.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/uri_parts.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/url_decode.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/url_decode.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/url_decode.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/url_decode.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/user_agent.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/user_agent.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/user_agent.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/user_agent.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_remove_modal.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_remove_modal.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_remove_modal.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processor_remove_modal.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_empty_prompt.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_empty_prompt.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_empty_prompt.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_empty_prompt.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_header.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_header.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_header.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_header.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/drop_zone_button.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/drop_zone_button.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/drop_zone_button.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/drop_zone_button.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/private_tree.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/private_tree.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/private_tree.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/private_tree.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/tree_node.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/tree_node.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/tree_node.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/components/tree_node.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/processors_tree.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/processors_tree.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/processors_tree.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/processors_tree.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/processors_tree.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/processors_tree.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/processors_tree.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/processors_tree.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/utils.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/utils.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/utils.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/processors_tree/utils.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/error_icon.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/error_icon.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/error_icon.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/error_icon.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/error_ignored_icon.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/error_ignored_icon.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/error_ignored_icon.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/error_ignored_icon.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/skipped_icon.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/skipped_icon.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/skipped_icon.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/status_icons/skipped_icon.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/stringify_value_description.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/stringify_value_description.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/stringify_value_description.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/stringify_value_description.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/stringify_value_description.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/stringify_value_description.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/stringify_value_description.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/shared/stringify_value_description.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/add_documents_button.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/add_documents_button.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/add_documents_button.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/add_documents_button.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_output_button.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_output_button.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_output_button.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_output_button.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_actions.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_actions.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_actions.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_actions.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_flyout.container.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_flyout.container.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_flyout.container.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_flyout.container.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_flyout.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_flyout.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_flyout.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_flyout.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/add_docs_accordion.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/add_docs_accordion.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/add_docs_accordion.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/add_docs_accordion.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/add_docs_accordion.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/add_docs_accordion.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/add_docs_accordion.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/add_docs_accordion.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_docs_accordion/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_document_form.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_document_form.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_document_form.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/add_document_form.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/reset_documents_modal.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/reset_documents_modal.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/reset_documents_modal.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/reset_documents_modal.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_documents/tab_documents.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_output.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_output.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_output.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/tab_output.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/test_pipeline_tabs.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/test_pipeline_tabs.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/test_pipeline_tabs.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/test_pipeline_tabs/test_pipeline_tabs.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/constants.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/constants.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/constants.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/constants.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/context/context.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/context/context.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/context/context.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/context/context.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/context/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/context/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/context/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/context/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/context/processors_context.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/context/processors_context.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/context/processors_context.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/context/processors_context.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/context/test_pipeline_context.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/context/test_pipeline_context.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/context/test_pipeline_context.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/context/test_pipeline_context.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/deserialize.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/deserialize.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/deserialize.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/deserialize.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/deserialize.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/deserialize.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/deserialize.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/deserialize.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/editors/global_on_failure_processors_editor.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/editors/global_on_failure_processors_editor.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/editors/global_on_failure_processors_editor.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/editors/global_on_failure_processors_editor.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/editors/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/editors/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/editors/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/editors/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/editors/processors_editor.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/editors/processors_editor.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/editors/processors_editor.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/editors/processors_editor.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/pipeline_editor.scss b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/pipeline_editor.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/pipeline_editor.scss rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/pipeline_editor.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/pipeline_editor.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/pipeline_editor.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/pipeline_editor.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/pipeline_editor.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/constants.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/constants.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/constants.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/constants.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/processors_reducer.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/processors_reducer.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/processors_reducer.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/processors_reducer.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/processors_reducer.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/processors_reducer.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/processors_reducer.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/processors_reducer.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/utils.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/utils.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/utils.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/processors_reducer/utils.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/serialize.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/serialize.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/serialize.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/serialize.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/types.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/types.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/types.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/types.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/use_is_mounted.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/use_is_mounted.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/use_is_mounted.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/use_is_mounted.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/utils.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/utils.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/utils.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/utils.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/utils.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/utils.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/utils.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_editor/utils.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/bulk_request_panel.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/bulk_request_panel.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/bulk_request_panel.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/bulk_request_panel.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/collapsible_panel.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/collapsible_panel.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/collapsible_panel.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/collapsible_panel.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/error_utils.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/error_utils.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/error_utils.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/error_utils.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/error_utils.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/error_utils.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/error_utils.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/error_utils.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/i18n_texts.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/i18n_texts.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/i18n_texts.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/i18n_texts.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/pipeline_form_error.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/pipeline_form_error.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/pipeline_form_error.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_error/pipeline_form_error.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/pipeline_request_flyout.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/pipeline_request_flyout.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/pipeline_request_flyout.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/pipeline_request_flyout.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/schema.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/schema.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/schema.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/schema.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/types.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/types.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/types.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/types.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/utils.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/utils.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/utils.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/utils.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/utils.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/utils.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/utils.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/components/pipeline_form/utils.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/constants/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/constants/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/constants/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/constants/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/hooks/index.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/hooks/index.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/hooks/index.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/hooks/index.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/hooks/redirect_path.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/hooks/redirect_path.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/hooks/redirect_path.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/hooks/redirect_path.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/index.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/index.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/index.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/index.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/lib/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/lib/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/lib/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/lib/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/lib/utils.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/lib/utils.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/lib/utils.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/lib/utils.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/lib/utils.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/lib/utils.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/lib/utils.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/lib/utils.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/mount_management_section.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/mount_management_section.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/mount_management_section.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/mount_management_section.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/add_database_modal.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/add_database_modal.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/add_database_modal.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/add_database_modal.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/constants.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/constants.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/constants.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/constants.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/delete_database_modal.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/delete_database_modal.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/delete_database_modal.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/delete_database_modal.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/empty_list.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/empty_list.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/empty_list.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/empty_list.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/geoip_list.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/geoip_list.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/geoip_list.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/geoip_list.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/get_error_message.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/get_error_message.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/get_error_message.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/get_error_message.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/manage_processors.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/manage_processors.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/manage_processors.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/manage_processors.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/use_check_manage_processors_privileges.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/use_check_manage_processors_privileges.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/use_check_manage_processors_privileges.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/use_check_manage_processors_privileges.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/utils.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/utils.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/utils.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/utils.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/utils.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/utils.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/manage_processors/utils.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/manage_processors/utils.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_clone/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_clone/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_clone/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_clone/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_clone/pipelines_clone.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_clone/pipelines_clone.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_clone/pipelines_clone.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_clone/pipelines_clone.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create/pipelines_create.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create/pipelines_create.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create/pipelines_create.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create/pipelines_create.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/error_display.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/error_display.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/error_display.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/error_display.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/instructions.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/instructions.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/instructions.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/instructions.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/main.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/main.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/main.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/main.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/pipelines_csv_uploader.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/pipelines_csv_uploader.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/pipelines_csv_uploader.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/pipelines_csv_uploader.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/pipelines_preview.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/pipelines_preview.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create_from_csv/pipelines_preview.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_create_from_csv/pipelines_preview.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_edit/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_edit/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_edit/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_edit/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_edit/pipelines_edit.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_edit/pipelines_edit.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_edit/pipelines_edit.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_edit/pipelines_edit.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/delete_modal.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/delete_modal.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/delete_modal.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/delete_modal.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/details_flyout.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/details_flyout.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/details_flyout.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/details_flyout.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/details_json_block.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/details_json_block.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/details_json_block.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/details_json_block.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/empty_list.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/empty_list.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/empty_list.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/empty_list.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/main.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/main.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/not_found_flyout.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/not_found_flyout.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/not_found_flyout.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/not_found_flyout.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/serializers.test.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/serializers.test.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/serializers.test.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/serializers.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/table.tsx b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/table.tsx similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/table.tsx rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/table.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/services/api.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/api.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/services/api.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/api.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/services/breadcrumbs.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/services/breadcrumbs.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/breadcrumbs.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/services/documentation.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/documentation.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/services/documentation.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/documentation.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/services/file_reader.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/file_reader.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/services/file_reader.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/file_reader.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/services/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/services/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/services/navigation.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/navigation.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/services/navigation.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/navigation.ts diff --git a/x-pack/plugins/ingest_pipelines/public/application/services/ui_metric.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/ui_metric.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/services/ui_metric.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/application/services/ui_metric.ts diff --git a/x-pack/plugins/ingest_pipelines/public/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/index.ts diff --git a/x-pack/plugins/ingest_pipelines/public/locator.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/locator.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/locator.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/locator.test.ts diff --git a/x-pack/plugins/ingest_pipelines/public/locator.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/locator.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/locator.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/locator.ts diff --git a/x-pack/plugins/ingest_pipelines/public/plugin.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/plugin.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/plugin.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/plugin.ts diff --git a/x-pack/plugins/ingest_pipelines/public/shared_imports.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/shared_imports.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/shared_imports.ts diff --git a/x-pack/plugins/ingest_pipelines/public/types.ts b/x-pack/platform/plugins/shared/ingest_pipelines/public/types.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/types.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/public/types.ts diff --git a/x-pack/plugins/ingest_pipelines/server/config.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/config.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/config.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/config.ts diff --git a/x-pack/plugins/ingest_pipelines/server/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/index.ts diff --git a/x-pack/plugins/ingest_pipelines/server/lib/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/lib/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/lib/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/lib/index.ts diff --git a/x-pack/plugins/ingest_pipelines/server/lib/mapper.test.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/lib/mapper.test.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/lib/mapper.test.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/lib/mapper.test.ts diff --git a/x-pack/plugins/ingest_pipelines/server/lib/mapper.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/lib/mapper.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/lib/mapper.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/lib/mapper.ts diff --git a/x-pack/plugins/ingest_pipelines/server/plugin.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/plugin.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/plugin.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/plugin.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/create.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/create.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/create.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/create.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/database/create.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/create.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/database/create.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/create.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/database/delete.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/delete.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/database/delete.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/delete.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/database/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/database/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/index.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/database/list.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/list.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/database/list.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/list.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/database/normalize_database_name.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/normalize_database_name.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/database/normalize_database_name.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/normalize_database_name.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/database/serialization.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/serialization.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/database/serialization.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/database/serialization.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/delete.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/delete.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/delete.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/delete.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/documents.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/documents.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/documents.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/documents.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/get.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/get.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/get.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/get.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/index.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/parse_csv.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/parse_csv.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/parse_csv.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/parse_csv.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/privileges.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/privileges.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/privileges.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/privileges.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/shared/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/shared/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/shared/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/shared/index.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/shared/pipeline_schema.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/shared/pipeline_schema.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/shared/pipeline_schema.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/shared/pipeline_schema.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/simulate.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/simulate.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/simulate.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/simulate.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/api/update.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/update.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/api/update.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/api/update.ts diff --git a/x-pack/plugins/ingest_pipelines/server/routes/index.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/routes/index.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/routes/index.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/routes/index.ts diff --git a/x-pack/plugins/remote_clusters/server/shared_imports.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/shared_imports.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/shared_imports.ts diff --git a/x-pack/plugins/ingest_pipelines/server/types.ts b/x-pack/platform/plugins/shared/ingest_pipelines/server/types.ts similarity index 100% rename from x-pack/plugins/ingest_pipelines/server/types.ts rename to x-pack/platform/plugins/shared/ingest_pipelines/server/types.ts diff --git a/x-pack/platform/plugins/shared/ingest_pipelines/tsconfig.json b/x-pack/platform/plugins/shared/ingest_pipelines/tsconfig.json new file mode 100644 index 0000000000000..b2bfeccf6733a --- /dev/null +++ b/x-pack/platform/plugins/shared/ingest_pipelines/tsconfig.json @@ -0,0 +1,46 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "__jest__/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/licensing-plugin", + "@kbn/features-plugin", + "@kbn/security-plugin", + "@kbn/file-upload-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/kibana-react-plugin", + "@kbn/management-plugin", + "@kbn/share-plugin", + "@kbn/usage-collection-plugin", + "@kbn/utility-types", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/analytics", + "@kbn/monaco", + "@kbn/test-jest-helpers", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/core-ui-settings-browser", + "@kbn/code-editor", + "@kbn/react-kibana-context-render", + "@kbn/console-plugin", + "@kbn/react-kibana-context-theme", + "@kbn/unsaved-changes-prompt", + "@kbn/core-http-browser-mocks", + "@kbn/shared-ux-table-persist", + "@kbn/core-http-browser", + "@kbn/core-plugins-server" + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/plugins/shared/integration_assistant/README.md b/x-pack/platform/plugins/shared/integration_assistant/README.md new file mode 100644 index 0000000000000..1b380bc2af8dd --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/README.md @@ -0,0 +1,90 @@ +# Integration Assistant + +## Overview + +Team owner: Security Integrations Scalability + +This is a new Kibana plugin created to help users with automatically generating integration packages based on provided log samples and relevant information + +## Features + +Exposes 4 API's that can be consumed by any frontend plugin, which are: + +- ECS Mapping API +- Categorization API +- Related Fields API +- Build Integration API +- Optional Test Pipeline API (Used to update pipeline results if the ingest pipeline is changed by a user in the UI). + +## Development + +### Backend + +#### Overview + +The backend part of the plugin utilizes langraph extensively to parse the provided log samples and generate the integration package. + +One instance of langraph is created that will include one or more `nodes` in which each node represents a step in the integration package generation process. + +Each node links to a specific function, usually a `handler` specified in its own file under each graph folder that will be executed when the node is reached. + +#### Structure + +**Graphs** + +The graph components are split into logical parts and are placed in separate folders for each graph under the `./server/graphs` directory. + +Each graph folder needs to contains at least one `graph.ts`, which exports a function that returns the compiled graph object. + +Each exported graph function is then linked up to one or more API routes. + +**Routes** + +All routes are defined under `./server/routes` in its own file, and then included in the `./server/routes/register_routes.ts` file. + +**Integration Builder** + +The integration builder is the last step in the expected API flow (ECS Mapping -> Categorization -> Related Fields -> Integration Builder). +With the provided package and data stream details, an optional logo and a list of sample logs, the API will build out the entire folder structure and files required for the integration package, archive it and return it as a `Buffer`. + +**Templates** + +Currently the templates are stored as `nunjucks` files as they were converted from `jinja2` templates, which use the exact same format. Longer term this will most likely be switched to the Kibana forked Handlebars templating engine. + +The templates are stored in the `./server/templates` directory and are used to generate the integration package files while running the Integration Builder API. + +One template (pipeline.yml.njk) is used by the ECS Mapping API to generate the boilerplate ingest pipeline structure we want to use for all generated integrations. + +#### Flows + +Generated by running `yarn draw-graphs` inside the root of the plugin folder. + +**First graph:** +**Log Format Detection:** +![!LogFormatDetectionGraph](./docs/img/log_detection_graph.png) + +**Second graph, main:** +**ECS Main:** +![ECSMappingGraph](./docs/img/ecs_graph.png) + +**Second graph, sub:** +**ECS Sub:** +![ECSMappingSubGraph](./docs/img/ecs_subgraph.png) + +**Third graph:** +**Categorization:** +![CategorizationGraph](./docs/img/categorization_graph.png) + +**Fourth graph:** +**Related:** +![RelatedGraph](./docs/img/related_graph.png) + +## Tests + +All mocks/fixtures are placed in the top `./__jest__` directory of the plugin. If many mocks/fixtures are required, try to split them up into separate file(s). + +Tests can be run with: + +```bash +node scripts/jest x-pack/platform/plugins/shared/integration_assistant/ --coverage +``` diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/build_integration.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/build_integration.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/build_integration.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/build_integration.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/categorization.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/categorization.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/categorization.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/categorization.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/cel.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/cel.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/cel.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/cel.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/ecs_mapping.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/ecs_mapping.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/ecs_mapping.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/ecs_mapping.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/index.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/index.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/kv.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/kv.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/kv.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/kv.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/log_type_detection.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/log_type_detection.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/log_type_detection.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/log_type_detection.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/related.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/related.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/related.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/related.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/unstructured.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/unstructured.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/unstructured.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/unstructured.ts diff --git a/x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml similarity index 97% rename from x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml index 298abbc1201ea..2be69571865e8 100644 --- a/x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Auto Import Analyze Logs API endpoint version: "1" paths: - /api/integration_assistant/analyzelogs: + /internal/automatic_import/analyzelogs: post: summary: Analyzes log samples and processes them. operationId: AnalyzeLogs diff --git a/x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.schema.yaml similarity index 96% rename from x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.schema.yaml index 7a5a994cff4df..cc210c53f1e70 100644 --- a/x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt Build Integrarion API endpoint version: "1" paths: - /api/integration_assistant/build: + /internal/automatic_import/build: post: summary: Builds Integration with the given input samples operationId: BuildIntegration diff --git a/x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.schema.yaml similarity index 97% rename from x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.schema.yaml index 4a8a28abf3a7e..694eb80e852c4 100644 --- a/x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt Categorization API endpoint version: "1" paths: - /api/integration_assistant/categorization: + /internal/automatic_import/categorization: post: summary: Builds Categorization processors based on the samples operationId: Categorization diff --git a/x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.schema.yaml similarity index 97% rename from x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.schema.yaml index 18187959fe461..dc33d9ac69e3e 100644 --- a/x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Automatic Import CEL Input API endpoint version: "1" paths: - /api/integration_assistant/cel: + /internal/automatic_import/cel: post: summary: Builds CEL input configuration operationId: CelInput diff --git a/x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml similarity index 96% rename from x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml index b7f20616007ea..e592565c52b63 100644 --- a/x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt Check Pipeline API endpoint version: "1" paths: - /api/integration_assistant/pipeline: + /internal/automatic_import/pipeline: post: summary: Checks if the pipeline is valid for the given samples operationId: CheckPipeline diff --git a/x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.schema.yaml similarity index 98% rename from x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.schema.yaml index 6bc125a74f52a..2534823b1d171 100644 --- a/x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt ECS Mapping API endpoint version: "1" paths: - /api/integration_assistant/ecs: + /internal/automatic_import/ecs: post: summary: Builds ECS Mapping based on the input samples operationId: EcsMapping diff --git a/x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/generation_error.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/generation_error.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/generation_error.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/generation_error.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/generation_error.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/generation_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/generation_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/generation_error.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/api_test.mock.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/api_test.mock.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/api_test.mock.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/api_test.mock.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.schema.yaml diff --git a/x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/common_attributes.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/common_attributes.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.schema.yaml diff --git a/x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/processor_attributes.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/processor_attributes.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.schema.yaml diff --git a/x-pack/plugins/integration_assistant/common/api/model/response_schemas.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/response_schemas.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/response_schemas.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/response_schemas.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/response_schemas.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/response_schemas.schema.yaml similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/response_schemas.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/response_schemas.schema.yaml diff --git a/x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/related/related_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.schema.yaml similarity index 98% rename from x-pack/plugins/integration_assistant/common/api/related/related_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.schema.yaml index 9ca2f6ab7bae0..2d53b07d4f846 100644 --- a/x-pack/plugins/integration_assistant/common/api/related/related_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt Related API endpoint version: "1" paths: - /api/integration_assistant/related: + /internal/automatic_import/related: post: summary: Builds related.* fields for integration with the given input samples operationId: Related diff --git a/x-pack/plugins/integration_assistant/common/api/related/related_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/related/related_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.test.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/common/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/common/constants.ts new file mode 100644 index 0000000000000..2e5975a1d4074 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/common/constants.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { LicenseType } from '@kbn/licensing-plugin/common/types'; + +// Plugin information +export const PLUGIN_ID = 'integrationAssistant'; + +// Public App Routes +export const INTEGRATION_ASSISTANT_APP_ROUTE = '/app/integration_assistant'; + +// Server API Routes +export const INTEGRATION_ASSISTANT_BASE_PATH = '/internal/automatic_import'; + +export const ECS_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/ecs`; +export const CATEGORIZATION_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/categorization`; +export const ANALYZE_LOGS_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/analyzelogs`; +export const RELATED_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/related`; +export const CEL_INPUT_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/cel`; +export const CHECK_PIPELINE_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/pipeline`; +export const INTEGRATION_BUILDER_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/build`; +export const FLEET_PACKAGES_PATH = `/api/fleet/epm/packages`; + +// License +export const MINIMUM_LICENSE_TYPE: LicenseType = 'enterprise'; + +// ErrorCodes + +export enum GenerationErrorCode { + RECURSION_LIMIT = 'recursion-limit', + RECURSION_LIMIT_ANALYZE_LOGS = 'recursion-limit-analyze-logs', + UNSUPPORTED_LOG_SAMPLES_FORMAT = 'unsupported-log-samples-format', + UNPARSEABLE_CSV_DATA = 'unparseable-csv-data', + CEF_ERROR = 'cef-not-supported', +} + +// Size limits +export const FRONTEND_SAMPLE_ROWS = 100; +export const LOG_FORMAT_DETECTION_SAMPLE_ROWS = 5; +export const CATEGORIZATION_INITIAL_BATCH_SIZE = 60; +export const CATEROGIZATION_REVIEW_BATCH_SIZE = 40; +export const CATEGORIZATION_REVIEW_MAX_CYCLES = 5; +export const CATEGORIZATION_RECURSION_LIMIT = 50; diff --git a/x-pack/plugins/integration_assistant/common/ecs.ts b/x-pack/platform/plugins/shared/integration_assistant/common/ecs.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/ecs.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/ecs.ts diff --git a/x-pack/plugins/integration_assistant/common/experimental_features.ts b/x-pack/platform/plugins/shared/integration_assistant/common/experimental_features.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/experimental_features.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/experimental_features.ts diff --git a/x-pack/plugins/integration_assistant/common/index.ts b/x-pack/platform/plugins/shared/integration_assistant/common/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/index.ts diff --git a/x-pack/plugins/integration_assistant/common/utils.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/utils.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/utils.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/utils.test.ts diff --git a/x-pack/plugins/integration_assistant/common/utils.ts b/x-pack/platform/plugins/shared/integration_assistant/common/utils.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/utils.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/utils.ts diff --git a/x-pack/plugins/integration_assistant/docs/imgs/categorization_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/categorization_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/categorization_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/categorization_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/cel_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/cel_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/cel_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/cel_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/ecs_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/ecs_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/ecs_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/ecs_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/ecs_subgraph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/ecs_subgraph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/ecs_subgraph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/ecs_subgraph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/kv_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/kv_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/kv_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/kv_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/log_detection_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/log_detection_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/log_detection_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/log_detection_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/related_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/related_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/related_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/related_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/unstructured_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/unstructured_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/unstructured_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/unstructured_graph.png diff --git a/x-pack/platform/plugins/shared/integration_assistant/jest.config.js b/x-pack/platform/plugins/shared/integration_assistant/jest.config.js new file mode 100644 index 0000000000000..9d35ce22d3231 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/jest.config.js @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/shared/integration_assistant'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/shared/integration_assistant', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/integration_assistant/{common,server,public}/**/*.{ts,tsx}', + '!<rootDir>/x-pack/platform/plugins/shared/integration_assistant/{__jest__}/**/*', + '!<rootDir>/x-pack/platform/plugins/shared/integration_assistant/**/*.test.{ts,tsx}', + '!<rootDir>/x-pack/platform/plugins/shared/integration_assistant/**/*.config.ts', + ], + setupFiles: ['jest-canvas-mock'], +}; diff --git a/x-pack/plugins/integration_assistant/kibana.jsonc b/x-pack/platform/plugins/shared/integration_assistant/kibana.jsonc similarity index 100% rename from x-pack/plugins/integration_assistant/kibana.jsonc rename to x-pack/platform/plugins/shared/integration_assistant/kibana.jsonc diff --git a/x-pack/plugins/integration_assistant/package.json b/x-pack/platform/plugins/shared/integration_assistant/package.json similarity index 100% rename from x-pack/plugins/integration_assistant/package.json rename to x-pack/platform/plugins/shared/integration_assistant/package.json diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/authorization_wrapper.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/authorization_wrapper.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/authorization_wrapper.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/authorization_wrapper.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/index.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/missing_privileges_description.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/missing_privileges_description.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/missing_privileges_description.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/missing_privileges_description.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/missing_privileges_tooltip.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/missing_privileges_tooltip.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/missing_privileges_tooltip.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/missing_privileges_tooltip.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/availability_wrapper.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/availability_wrapper.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/availability_wrapper.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/availability_wrapper.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/index.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/license_paywall_card.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/license_paywall_card.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/license_paywall_card.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/license_paywall_card.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/buttons_footer.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/buttons_footer.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/buttons_footer.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/buttons_footer.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/integration_image_header.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/integration_image_header.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/integration_image_header.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/integration_image_header.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/section_title.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/section_title.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/section_title.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/section_title.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/section_wrapper.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/section_wrapper.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/section_wrapper.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/section_wrapper.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/success_section/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/success_section/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/index.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/success_section/success_section.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/success_section.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/success_section/success_section.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/success_section.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/success_section/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/success_section/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/common/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/constants.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/__mocks__/use_authorization.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/__mocks__/use_authorization.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/__mocks__/use_authorization.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/__mocks__/use_authorization.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/__mocks__/use_availability.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/__mocks__/use_availability.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/__mocks__/use_availability.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/__mocks__/use_availability.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/use_authorization.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_authorization.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/use_authorization.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_authorization.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/use_availability.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_availability.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/use_availability.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_availability.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/use_kibana.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/use_kibana.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_kibana.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/use_navigate.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_navigate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/use_navigate.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_navigate.ts diff --git a/x-pack/plugins/integration_assistant/public/common/images/integrations_light.svg b/x-pack/platform/plugins/shared/integration_assistant/public/common/images/integrations_light.svg similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/images/integrations_light.svg rename to x-pack/platform/plugins/shared/integration_assistant/public/common/images/integrations_light.svg diff --git a/x-pack/plugins/integration_assistant/public/common/lib/api.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/lib/api.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api.ts diff --git a/x-pack/plugins/integration_assistant/public/common/lib/api_parsers.test.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api_parsers.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/lib/api_parsers.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api_parsers.test.ts diff --git a/x-pack/plugins/integration_assistant/public/common/lib/api_parsers.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api_parsers.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/lib/api_parsers.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api_parsers.ts diff --git a/x-pack/plugins/integration_assistant/public/common/lib/lang_smith.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/lib/lang_smith.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/lib/lang_smith.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/lib/lang_smith.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration.tsx diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx new file mode 100644 index 0000000000000..133da383e4e99 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx @@ -0,0 +1,855 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, act } from '@testing-library/react'; +import { TestProvider } from '../../../mocks/test_provider'; +import { CreateIntegrationAssistant } from './create_integration_assistant'; +import type { State } from './state'; +import { ExperimentalFeaturesService } from '../../../services'; +import { mockReportEvent } from '../../../services/telemetry/mocks/service'; +import { TelemetryEventType } from '../../../services/telemetry/types'; + +export const defaultInitialState: State = { + step: 1, + connector: undefined, + integrationSettings: undefined, + isGenerating: false, + hasCelInput: false, + result: undefined, +}; + +const mockInitialState = jest.fn((): State => defaultInitialState); +jest.mock('./state', () => ({ + ...jest.requireActual('./state'), + get initialState() { + return mockInitialState(); + }, +})); + +jest.mock('../../../services'); +const mockedExperimentalFeaturesService = jest.mocked(ExperimentalFeaturesService); + +const mockConnectorStep = jest.fn(() => <div data-test-subj="connectorStepMock" />); +const mockIntegrationStep = jest.fn(() => <div data-test-subj="integrationStepMock" />); +const mockDataStreamStep = jest.fn(() => <div data-test-subj="dataStreamStepMock" />); +const mockReviewStep = jest.fn(() => <div data-test-subj="reviewStepMock" />); +const mockCelInputStep = jest.fn(() => <div data-test-subj="celInputStepMock" />); +const mockReviewCelStep = jest.fn(() => <div data-test-subj="reviewCelStepMock" />); +const mockDeployStep = jest.fn(() => <div data-test-subj="deployStepMock" />); + +const mockIsConnectorStepReadyToComplete = jest.fn(); +const mockIsIntegrationStepReadyToComplete = jest.fn(); +const mockIsDataStreamStepReadyToComplete = jest.fn(); +const mockIsReviewStepReadyToComplete = jest.fn(); +const mockIsCelInputStepReadyToComplete = jest.fn(); +const mockIsCelReviewStepReadyToComplete = jest.fn(); + +jest.mock('./steps/connector_step', () => ({ + ConnectorStep: () => mockConnectorStep(), + isConnectorStepReadyToComplete: () => mockIsConnectorStepReadyToComplete(), +})); +jest.mock('./steps/integration_step', () => ({ + IntegrationStep: () => mockIntegrationStep(), + isIntegrationStepReadyToComplete: () => mockIsIntegrationStepReadyToComplete(), +})); +jest.mock('./steps/data_stream_step', () => ({ + DataStreamStep: () => mockDataStreamStep(), + isDataStreamStepReadyToComplete: () => mockIsDataStreamStepReadyToComplete(), +})); +jest.mock('./steps/review_step', () => ({ + ReviewStep: () => mockReviewStep(), + isReviewStepReadyToComplete: () => mockIsReviewStepReadyToComplete(), +})); +jest.mock('./steps/cel_input_step', () => ({ + CelInputStep: () => mockCelInputStep(), + isCelInputStepReadyToComplete: () => mockIsCelInputStepReadyToComplete(), +})); +jest.mock('./steps/review_cel_step', () => ({ + ReviewCelStep: () => mockReviewCelStep(), + isCelReviewStepReadyToComplete: () => mockIsCelReviewStepReadyToComplete(), +})); +jest.mock('./steps/deploy_step', () => ({ DeployStep: () => mockDeployStep() })); + +const mockNavigate = jest.fn(); +jest.mock('../../../common/hooks/use_navigate', () => ({ + ...jest.requireActual('../../../common/hooks/use_navigate'), + useNavigate: () => mockNavigate, +})); + +const renderIntegrationAssistant = () => + render(<CreateIntegrationAssistant />, { wrapper: TestProvider }); + +describe('CreateIntegration', () => { + beforeEach(() => { + jest.clearAllMocks(); + + mockedExperimentalFeaturesService.get.mockReturnValue({ + generateCel: false, + } as never); + }); + + describe('when step is 1', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 1 }); + }); + + it('shoud report telemetry for assistant open', () => { + renderIntegrationAssistant(); + expect(mockReportEvent).toHaveBeenCalledWith(TelemetryEventType.IntegrationAssistantOpen, { + sessionId: expect.any(String), + }); + }); + + it('should render connector step', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('connectorStepMock')).toBeInTheDocument(); + }); + + it('should call isConnectorStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsConnectorStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show "Next" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Next'); + }); + + describe('when connector step is not done', () => { + beforeEach(() => { + mockIsConnectorStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when connector step is done', () => { + beforeEach(() => { + mockIsConnectorStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for connector step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 1, + stepName: 'Connector Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + }); + }); + + describe('when back button is clicked', () => { + let result: ReturnType<typeof renderIntegrationAssistant>; + beforeEach(() => { + result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-backButton').click(); + }); + }); + + it('should not report telemetry', () => { + expect(mockReportEvent).not.toHaveBeenCalled(); + }); + + it('should navigate to the landing page', () => { + expect(mockNavigate).toHaveBeenCalledWith('landing'); + }); + }); + }); + + describe('when step is 2', () => { + beforeEach(() => { + mockIsConnectorStepReadyToComplete.mockReturnValue(true); + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 2 }); + }); + + it('should render integration', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('integrationStepMock')).toBeInTheDocument(); + }); + + it('should call isIntegrationStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsIntegrationStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show "Next" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Next'); + }); + + describe('when integration step is not done', () => { + beforeEach(() => { + mockIsIntegrationStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when integration step is done', () => { + beforeEach(() => { + mockIsIntegrationStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for integration step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 2, + stepName: 'Integration Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + }); + }); + + describe('when back button is clicked', () => { + let result: ReturnType<typeof renderIntegrationAssistant>; + beforeEach(() => { + result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-backButton').click(); + }); + }); + + it('should not report telemetry', () => { + expect(mockReportEvent).not.toHaveBeenCalled(); + }); + + it('should show connector step', () => { + expect(result.queryByTestId('connectorStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + + describe('when step is 3', () => { + beforeEach(() => { + mockIsConnectorStepReadyToComplete.mockReturnValue(true); + mockIsIntegrationStepReadyToComplete.mockReturnValue(true); + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 3 }); + }); + + it('should render data stream', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('dataStreamStepMock')).toBeInTheDocument(); + }); + + it('should call isDataStreamStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsDataStreamStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show "Analyze logs" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Analyze logs'); + }); + + describe('when data stream step is not done', () => { + beforeEach(() => { + mockIsDataStreamStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when data stream step is done', () => { + beforeEach(() => { + mockIsDataStreamStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for data stream step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 3, + stepName: 'DataStream Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + + it('should show loader on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('generatingLoader')).toBeInTheDocument(); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + // Not sure why there are two buttons when testing. + const nextButton = result + .getAllByTestId('buttonsFooter-nextButton') + .filter((button) => button.textContent !== 'Next')[0]; + expect(nextButton).toBeDisabled(); + }); + }); + }); + + describe('when back button is clicked', () => { + let result: ReturnType<typeof renderIntegrationAssistant>; + beforeEach(() => { + result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-backButton').click(); + }); + }); + + it('should not report telemetry', () => { + expect(mockReportEvent).not.toHaveBeenCalled(); + }); + + it('should show integration step', () => { + expect(result.queryByTestId('integrationStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + + describe('when step is 4', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 4 }); + }); + + it('should render review', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('reviewStepMock')).toBeInTheDocument(); + }); + + it('should call isReviewStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsReviewStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show the "Add to Elastic" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Add to Elastic'); + }); + + describe('when review step is not done', () => { + beforeEach(() => { + mockIsReviewStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when review step is done', () => { + beforeEach(() => { + mockIsReviewStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for review step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 4, + stepName: 'Review Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + + it('should show deploy step', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + }); + + describe('when step is 5', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5 }); + }); + + it('should render deploy', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should hide the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should hide the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + it('should show "Close" on the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toHaveTextContent('Close'); + }); + }); +}); + +describe('CreateIntegration with generateCel enabled', () => { + beforeEach(() => { + jest.clearAllMocks(); + + mockedExperimentalFeaturesService.get.mockReturnValue({ + generateCel: true, + } as never); + }); + + describe('when step is 5 and has celInput', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5, hasCelInput: true }); + }); + + it('should render cel input', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('celInputStepMock')).toBeInTheDocument(); + }); + + it('should call isCelInputStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsCelInputStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show "Generate CEL input configuration" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent( + 'Generate CEL input configuration' + ); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + describe('when cel input step is not done', () => { + beforeEach(() => { + mockIsCelInputStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + // Not sure why there are two buttons when testing. + const nextButton = result + .getAllByTestId('buttonsFooter-nextButton') + .filter((button) => button.textContent !== 'Next')[0]; + expect(nextButton).toBeDisabled(); + }); + }); + + describe('when cel input step is done', () => { + beforeEach(() => { + mockIsCelInputStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for cel input step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 5, + stepName: 'CEL Input Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + + it('should show loader on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('generatingLoader')).toBeInTheDocument(); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + // Not sure why there are two buttons when testing. + const nextButton = result + .getAllByTestId('buttonsFooter-nextButton') + .filter((button) => button.textContent !== 'Next')[0]; + expect(nextButton).toBeDisabled(); + }); + }); + }); + + describe('when back button is clicked', () => { + let result: ReturnType<typeof renderIntegrationAssistant>; + beforeEach(() => { + result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-backButton').click(); + }); + }); + + it('should not report telemetry', () => { + expect(mockReportEvent).not.toHaveBeenCalled(); + }); + + it('should show review step', () => { + expect(result.queryByTestId('reviewStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + + describe('when step is 5 and does not have celInput', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5 }); + }); + + it('should render deploy', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should hide the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should hide the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + it('should show "Close" on the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toHaveTextContent('Close'); + }); + }); + + describe('when step is 6', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ + ...defaultInitialState, + step: 6, + celInputResult: { program: 'program', stateSettings: {}, redactVars: [] }, + }); + }); + + it('should render review', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('reviewCelStepMock')).toBeInTheDocument(); + }); + + it('should call isReviewCelStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsCelReviewStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show the "Add to Elastic" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Add to Elastic'); + }); + + describe('when cel review step is not done', () => { + beforeEach(() => { + mockIsCelReviewStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when cel review step is done', () => { + beforeEach(() => { + mockIsCelReviewStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for review step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 6, + stepName: 'CEL Review Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + + it('should show deploy step', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + }); + + describe('when step is 7', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 7 }); + }); + + it('should render deploy', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should hide the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should hide the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + it('should show "Close" on the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toHaveTextContent('Close'); + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx new file mode 100644 index 0000000000000..81cb5a9b3b137 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx @@ -0,0 +1,184 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useReducer, useMemo, useEffect, useCallback } from 'react'; +import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; +import { Header } from './header'; +import { Footer } from './footer'; +import { useNavigate, Page } from '../../../common/hooks/use_navigate'; +import { ConnectorStep, isConnectorStepReadyToComplete } from './steps/connector_step'; +import { IntegrationStep, isIntegrationStepReadyToComplete } from './steps/integration_step'; +import { DataStreamStep, isDataStreamStepReadyToComplete } from './steps/data_stream_step'; +import { ReviewStep, isReviewStepReadyToComplete } from './steps/review_step'; +import { CelInputStep, isCelInputStepReadyToComplete } from './steps/cel_input_step'; +import { ReviewCelStep, isCelReviewStepReadyToComplete } from './steps/review_cel_step'; +import { DeployStep } from './steps/deploy_step'; +import { reducer, initialState, ActionsProvider, type Actions } from './state'; +import { useTelemetry } from '../telemetry'; +import { ExperimentalFeaturesService } from '../../../services'; + +const stepNames: Record<number | string, string> = { + 1: 'Connector Step', + 2: 'Integration Step', + 3: 'DataStream Step', + 4: 'Review Step', + cel_input: 'CEL Input Step', + cel_review: 'CEL Review Step', + deploy: 'Deploy Step', +}; + +export const CreateIntegrationAssistant = React.memo(() => { + const [state, dispatch] = useReducer(reducer, initialState); + const navigate = useNavigate(); + const { generateCel: isGenerateCelEnabled } = ExperimentalFeaturesService.get(); + + const celInputStepIndex = isGenerateCelEnabled && state.hasCelInput ? 5 : null; + const celReviewStepIndex = isGenerateCelEnabled && state.celInputResult ? 6 : null; + const deployStepIndex = + celInputStepIndex !== null || celReviewStepIndex !== null || state.step === 7 ? 7 : 5; + + const stepName = + state.step === deployStepIndex + ? stepNames.deploy + : state.step === celReviewStepIndex + ? stepNames.cel_review + : state.step === celInputStepIndex + ? stepNames.cel_input + : state.step in stepNames + ? stepNames[state.step] + : 'Unknown Step'; + + const telemetry = useTelemetry(); + useEffect(() => { + telemetry.reportAssistantOpen(); + }, [telemetry]); + + const isThisStepReadyToComplete = useMemo(() => { + if (state.step === 1) { + return isConnectorStepReadyToComplete(state); + } else if (state.step === 2) { + return isIntegrationStepReadyToComplete(state); + } else if (state.step === 3) { + return isDataStreamStepReadyToComplete(state); + } else if (state.step === 4) { + return isReviewStepReadyToComplete(state); + } else if (isGenerateCelEnabled && state.step === 5) { + return isCelInputStepReadyToComplete(state); + } else if (isGenerateCelEnabled && state.step === 6) { + return isCelReviewStepReadyToComplete(state); + } + return false; + }, [state, isGenerateCelEnabled]); + + const goBackStep = useCallback(() => { + if (state.step === 1) { + navigate(Page.landing); + } else { + dispatch({ type: 'SET_STEP', payload: state.step - 1 }); + } + }, [navigate, dispatch, state.step]); + + const completeStep = useCallback(() => { + if (!isThisStepReadyToComplete) { + // If the user tries to navigate to the next step without completing the current step. + return; + } + telemetry.reportAssistantStepComplete({ step: state.step, stepName }); + if (state.step === 3 || state.step === celInputStepIndex) { + dispatch({ type: 'SET_IS_GENERATING', payload: true }); + } else { + dispatch({ type: 'SET_STEP', payload: state.step + 1 }); + } + }, [telemetry, state.step, stepName, celInputStepIndex, isThisStepReadyToComplete]); + + const actions = useMemo<Actions>( + () => ({ + setStep: (payload) => { + dispatch({ type: 'SET_STEP', payload }); + }, + setConnector: (payload) => { + dispatch({ type: 'SET_CONNECTOR', payload }); + }, + setIntegrationSettings: (payload) => { + dispatch({ type: 'SET_INTEGRATION_SETTINGS', payload }); + }, + setIsGenerating: (payload) => { + dispatch({ type: 'SET_IS_GENERATING', payload }); + }, + setHasCelInput: (payload) => { + dispatch({ type: 'SET_HAS_CEL_INPUT', payload }); + }, + setResult: (payload) => { + dispatch({ type: 'SET_GENERATED_RESULT', payload }); + }, + setCelInputResult: (payload) => { + dispatch({ type: 'SET_CEL_INPUT_RESULT', payload }); + }, + completeStep, + }), + [completeStep] + ); + + return ( + <ActionsProvider value={actions}> + <KibanaPageTemplate> + <Header currentStep={state.step} isGenerating={state.isGenerating} /> + <KibanaPageTemplate.Section grow paddingSize="l"> + {state.step === 1 && <ConnectorStep connector={state.connector} />} + {state.step === 2 && <IntegrationStep integrationSettings={state.integrationSettings} />} + {state.step === 3 && ( + <DataStreamStep + integrationSettings={state.integrationSettings} + connector={state.connector} + isGenerating={state.isGenerating} + /> + )} + {state.step === 4 && ( + <ReviewStep + integrationSettings={state.integrationSettings} + isGenerating={state.isGenerating} + result={state.result} + /> + )} + {state.step === celInputStepIndex && ( + <CelInputStep + integrationSettings={state.integrationSettings} + connector={state.connector} + isGenerating={state.isGenerating} + /> + )} + {state.step === celReviewStepIndex && ( + <ReviewCelStep + isGenerating={state.isGenerating} + celInputResult={state.celInputResult} + /> + )} + + {state.step === deployStepIndex && ( + <DeployStep + integrationSettings={state.integrationSettings} + result={state.result} + celInputResult={state.celInputResult} + connector={state.connector} + /> + )} + </KibanaPageTemplate.Section> + <Footer + isGenerating={state.isGenerating} + isAnalyzeStep={state.step === 3} + isAnalyzeCelStep={state.step === celInputStepIndex} + isLastStep={state.step === deployStepIndex} + isNextStepEnabled={isThisStepReadyToComplete && !state.isGenerating} + isNextAddingToElastic={state.step === deployStepIndex - 1} + onBack={goBackStep} + onNext={completeStep} + /> + </KibanaPageTemplate> + </ActionsProvider> + ); +}); +CreateIntegrationAssistant.displayName = 'CreateIntegrationAssistant'; diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx new file mode 100644 index 0000000000000..1291507e3f62b --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render, type RenderResult } from '@testing-library/react'; +import { TestProvider } from '../../../../mocks/test_provider'; +import { Footer } from './footer'; +import { ActionsProvider } from '../state'; +import { mockActions } from '../mocks/state'; +import { ExperimentalFeaturesService } from '../../../../services'; + +const mockNavigate = jest.fn(); +jest.mock('../../../../common/hooks/use_navigate', () => ({ + ...jest.requireActual('../../../../common/hooks/use_navigate'), + useNavigate: () => mockNavigate, +})); + +jest.mock('../../../../services'); +const mockedExperimentalFeaturesService = jest.mocked(ExperimentalFeaturesService); + +const wrapper: React.FC<React.PropsWithChildren<{}>> = ({ children }) => ( + <TestProvider> + <ActionsProvider value={mockActions}>{children}</ActionsProvider> + </TestProvider> +); + +describe('Footer', () => { + beforeEach(() => { + jest.clearAllMocks(); + + mockedExperimentalFeaturesService.get.mockReturnValue({ + generateCel: false, + } as never); + }); + + describe('when rendered for the most common case', () => { + let result: RenderResult; + beforeEach(() => { + result = render(<Footer isNextStepEnabled />, { + wrapper, + }); + }); + it('should render footer buttons component', () => { + expect(result.queryByTestId('buttonsFooter')).toBeInTheDocument(); + }); + + it('should render cancel button', () => { + expect(result.queryByTestId('buttonsFooter-cancelButton')).toBeInTheDocument(); + }); + + it('should render back button', () => { + expect(result.queryByTestId('buttonsFooter-backButton')).toBeInTheDocument(); + }); + + it('should render next button', () => { + expect(result.queryByTestId('buttonsFooter-nextButton')).toBeInTheDocument(); + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx new file mode 100644 index 0000000000000..dfd38517e1609 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiLoadingSpinner } from '@elastic/eui'; +import React, { useMemo } from 'react'; +import { ButtonsFooter } from '../../../../common/components/buttons_footer'; +import { type State } from '../state'; +import * as i18n from './translations'; + +// Generation button for Step 3 +const AnalyzeButtonText = React.memo<{ isGenerating: boolean }>(({ isGenerating }) => { + if (!isGenerating) { + return <>{i18n.ANALYZE_LOGS}</>; + } + return ( + <> + <EuiLoadingSpinner size="s" data-test-subj="generatingLoader" /> + {i18n.LOADING} + </> + ); +}); +AnalyzeButtonText.displayName = 'AnalyzeButtonText'; + +// Generation button for Step 5 +const AnalyzeCelButtonText = React.memo<{ isGenerating: boolean }>(({ isGenerating }) => { + if (!isGenerating) { + return <>{i18n.ANALYZE_CEL}</>; + } + return ( + <> + <EuiLoadingSpinner size="s" data-test-subj="generatingLoader" /> + {i18n.LOADING} + </> + ); +}); +AnalyzeCelButtonText.displayName = 'AnalyzeCelButtonText'; + +interface FooterProps { + isGenerating?: State['isGenerating']; + isAnalyzeStep?: boolean; + isAnalyzeCelStep?: boolean; + isLastStep?: boolean; + isNextStepEnabled?: boolean; + isNextAddingToElastic?: boolean; + onBack?: () => void; + onNext?: () => void; +} + +export const Footer = React.memo<FooterProps>( + ({ + isGenerating = false, + isAnalyzeStep = false, + isAnalyzeCelStep = false, + isLastStep = false, + isNextStepEnabled = false, + isNextAddingToElastic = false, + onBack = () => {}, + onNext = () => {}, + }) => { + const nextButtonText = useMemo( + () => + isNextAddingToElastic ? ( + i18n.ADD_TO_ELASTIC + ) : isAnalyzeStep ? ( + <AnalyzeButtonText isGenerating={isGenerating} /> + ) : isAnalyzeCelStep ? ( + <AnalyzeCelButtonText isGenerating={isGenerating} /> + ) : null, + [isNextAddingToElastic, isAnalyzeStep, isGenerating, isAnalyzeCelStep] + ); + + return isLastStep ? ( + <ButtonsFooter cancelButtonText={i18n.CLOSE} /> + ) : ( + <ButtonsFooter + nextButtonText={nextButtonText} + isNextDisabled={!isNextStepEnabled} + onBack={onBack} + onNext={onNext} + /> + ); + } +); +Footer.displayName = 'Footer'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/steps.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/steps.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/steps.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/steps.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts new file mode 100644 index 0000000000000..bdae762e83c2b --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts @@ -0,0 +1,439 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Pipeline, Docs, SamplesFormat } from '../../../../../common'; +import type { Actions, State } from '../state'; +import type { AIConnector } from '../types'; + +const result: { pipeline: Pipeline; docs: Docs; samplesFormat: SamplesFormat } = { + pipeline: { + description: 'Pipeline to process my_integration my_data_stream_title logs', + processors: [ + { + set: { + field: 'ecs.version', + tag: 'set_ecs_version', + value: '8.11.0', + }, + }, + { + rename: { + field: 'message', + target_field: 'event.original', + tag: 'rename_message', + ignore_missing: true, + if: 'ctx.event?.original == null', + }, + }, + { + remove: { + field: 'message', + ignore_missing: true, + tag: 'remove_message', + if: 'ctx.event?.original != null', + }, + }, + { + json: { + field: 'event.original', + tag: 'json_original', + target_field: 'my_integration.my_data_stream_title', + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.event', + target_field: 'event.action', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.uid', + target_field: 'event.id', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.code', + target_field: 'event.code', + ignore_missing: true, + }, + }, + { + date: { + field: 'my_integration.my_data_stream_title.time', + target_field: '@timestamp', + formats: ['ISO8601'], + if: 'ctx.my_integration?.my_data_stream_title?.time != null', + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.user', + target_field: 'user.name', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.user_agent', + target_field: 'user_agent.original', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.addr.remote', + target_field: 'source.address', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.server_hostname', + target_field: 'destination.domain', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.proto', + target_field: 'network.transport', + ignore_missing: true, + }, + }, + { + script: { + description: 'Drops null/empty values recursively.', + tag: 'script_drop_null_empty_values', + lang: 'painless', + source: + 'boolean dropEmptyFields(Object object) {\n if (object == null || object == "") {\n return true;\n } else if (object instanceof Map) {\n ((Map) object).values().removeIf(value -> dropEmptyFields(value));\n return (((Map) object).size() == 0);\n } else if (object instanceof List) {\n ((List) object).removeIf(value -> dropEmptyFields(value));\n return (((List) object).length == 0);\n }\n return false;\n}\ndropEmptyFields(ctx);\n', + }, + }, + { + geoip: { + field: 'source.ip', + tag: 'geoip_source_ip', + target_field: 'source.geo', + ignore_missing: true, + }, + }, + { + geoip: { + ignore_missing: true, + database_file: 'GeoLite2-ASN.mmdb', + field: 'source.ip', + tag: 'geoip_source_asn', + target_field: 'source.as', + properties: ['asn', 'organization_name'], + }, + }, + { + rename: { + field: 'source.as.asn', + tag: 'rename_source_as_asn', + target_field: 'source.as.number', + ignore_missing: true, + }, + }, + { + rename: { + field: 'source.as.organization_name', + tag: 'rename_source_as_organization_name', + target_field: 'source.as.organization.name', + ignore_missing: true, + }, + }, + { + geoip: { + field: 'destination.ip', + tag: 'geoip_destination_ip', + target_field: 'destination.geo', + ignore_missing: true, + }, + }, + { + geoip: { + database_file: 'GeoLite2-ASN.mmdb', + field: 'destination.ip', + tag: 'geoip_destination_asn', + target_field: 'destination.as', + properties: ['asn', 'organization_name'], + ignore_missing: true, + }, + }, + { + rename: { + field: 'destination.as.asn', + tag: 'rename_destination_as_asn', + target_field: 'destination.as.number', + ignore_missing: true, + }, + }, + { + append: { + field: 'event.type', + value: ['start'], + allow_duplicates: false, + if: "ctx.event?.action == 'user.login'", + }, + }, + { + append: { + field: 'event.category', + value: ['authentication'], + allow_duplicates: false, + if: "ctx.event?.action == 'user.login'", + }, + }, + { + append: { + field: 'event.type', + value: ['start'], + allow_duplicates: false, + if: "ctx.event?.action == 'session.start'", + }, + }, + { + append: { + field: 'event.category', + value: ['session'], + allow_duplicates: false, + if: "ctx.event?.action == 'session.start'", + }, + }, + { + append: { + field: 'event.type', + value: ['info'], + allow_duplicates: false, + if: 'ctx.my_integration?.my_data_stream_title?.mfa_device != null', + }, + }, + { + append: { + field: 'event.category', + value: ['authentication'], + allow_duplicates: false, + if: 'ctx.my_integration?.my_data_stream_title?.mfa_device != null', + }, + }, + { + append: { + field: 'related.ip', + value: ['{{{my_integration.my_data_stream_title.addr.remote}}}'], + if: 'ctx?.my_integration?.my_data_stream_title?.addr?.remote != null', + allow_duplicates: false, + }, + }, + { + append: { + field: 'related.user', + value: ['{{{user.name}}}'], + allow_duplicates: false, + }, + }, + { + append: { + field: 'related.hosts', + value: ['{{{destination.domain}}}'], + if: 'ctx?.destination?.domain != null', + allow_duplicates: false, + }, + }, + { + append: { + field: 'related.hosts', + value: ['{{{my_integration.my_data_stream_title.server_labels.hostname}}}'], + if: 'ctx?.my_integration?.my_data_stream_title?.server_labels?.hostname != null', + allow_duplicates: false, + }, + }, + { + rename: { + field: 'destination.as.organization_name', + tag: 'rename_destination_as_organization_name', + target_field: 'destination.as.organization.name', + ignore_missing: true, + }, + }, + { + remove: { + field: 'event.original', + tag: 'remove_original_event', + if: 'ctx?.tags == null || !(ctx.tags.contains("preserve_original_event"))', + ignore_failure: true, + ignore_missing: true, + }, + }, + ], + on_failure: [ + { + append: { + field: 'error.message', + value: + 'Processor {{{_ingest.on_failure_processor_type}}} with tag {{{_ingest.on_failure_processor_tag}}} in pipeline {{{_ingest.on_failure_pipeline}}} failed with message: {{{_ingest.on_failure_message}}}', + }, + }, + { + set: { + field: 'event.kind', + value: 'pipeline_error', + }, + }, + ], + }, + docs: [ + { + '@timestamp': '2024-02-23T18:56:50.628Z', + ecs: { + version: '8.11.0', + }, + my_integration: { + my_data_stream_title: { + cluster_name: 'teleport.ericbeahan.com', + 'addr.remote': '136.61.214.196:50332', + ei: 0, + method: 'local', + required_private_key_policy: 'none', + success: true, + time: '2024-02-23T18:56:50.628Z', + mfa_device: { + mfa_device_type: 'TOTP', + mfa_device_uuid: 'd07bf388-af49-4ec2-b8a4-c8a9e785b70b', + mfa_device_name: 'otp-device', + }, + }, + }, + related: { + user: ['teleport-admin'], + }, + event: { + action: 'user.login', + code: 'T1000I', + id: 'b675d102-fc25-4f7a-bf5d-96468cc176ea', + type: ['start', 'info'], + category: ['authentication'], + }, + user: { + name: 'teleport-admin', + }, + user_agent: { + original: + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36', + }, + tags: [ + '_geoip_database_unavailable_GeoLite2-City.mmdb', + '_geoip_database_unavailable_GeoLite2-ASN.mmdb', + '_geoip_database_unavailable_GeoLite2-City.mmdb', + '_geoip_database_unavailable_GeoLite2-ASN.mmdb', + ], + }, + { + '@timestamp': '2024-02-23T18:56:57.199Z', + ecs: { + version: '8.11.0', + }, + my_integration: { + my_data_stream_title: { + cluster_name: 'teleport.ericbeahan.com', + 'addr.remote': '136.61.214.196:50339', + ei: 0, + private_key_policy: 'none', + login: 'ec2-user', + server_id: 'face0091-2bf1-43fd-a16a-f1514b4119f4', + sid: '293fda2d-2266-4d4d-b9d1-bd5ea9dd9fc3', + user_kind: 1, + server_labels: { + 'teleport.internal/resource-id': 'dccb2999-9fb8-4169-aded-ec7a1c0a26de', + hostname: 'ip-172-31-8-163.us-east-2.compute.internal', + }, + size: '80:25', + namespace: 'default', + session_recording: 'node', + time: '2024-02-23T18:56:57.199Z', + }, + }, + related: { + user: ['teleport-admin'], + hosts: ['ip-172-31-8-163.us-east-2.compute.internal'], + }, + destination: { + domain: 'ip-172-31-8-163.us-east-2.compute.internal', + }, + event: { + action: 'session.start', + code: 'T2000I', + id: 'fff30583-13be-49e8-b159-32952c6ea34f', + type: ['start'], + category: ['session'], + }, + user: { + name: 'teleport-admin', + }, + network: { + transport: 'ssh', + }, + tags: [ + '_geoip_database_unavailable_GeoLite2-City.mmdb', + '_geoip_database_unavailable_GeoLite2-ASN.mmdb', + '_geoip_database_unavailable_GeoLite2-City.mmdb', + '_geoip_database_unavailable_GeoLite2-ASN.mmdb', + ], + }, + ], + samplesFormat: { name: 'json' }, +}; + +const rawSamples = [ + '{"ei":0,"event":"user.login","uid":"b675d102-fc25-4f7a-bf5d-96468cc176ea","code":"T1000I","time":"2024-02-23T18:56:50.628Z","cluster_name":"teleport.ericbeahan.com","user":"teleport-admin","required_private_key_policy":"none","success":true,"method":"local","mfa_device.mfa_device_name":"otp-device","mfa_device.mfa_device_uuid":"d07bf388-af49-4ec2-b8a4-c8a9e785b70b","mfa_device.mfa_device_type":"TOTP","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36","addr.remote":"136.61.214.196:50332"}', + '{"ei":0,"event":"cert.create","uid":"efd326fc-dd13-4df8-acef-3102c2d717d3","code":"TC000I","time":"2024-02-23T18:56:50.653Z","cluster_name":"teleport.ericbeahan.com","cert_type":"user","identity.user":"teleport-admin","identity.roles":["access","editor"],"identity.logins":["root","ubuntu","ec2-user","-teleport-internal-join"],"identity.expires":"2024-02-24T06:56:50.648137154Z","identity.route_to_cluster":"teleport.ericbeahan.com","identity.traits.aws_role_arns":null,"identity.traits.azure_identities":null,"identity.traits.db_names":null,"identity.traits.db_roles":null,"identity.traits.db_users":null,"identity.traits.gcp_service_accounts":null,"identity.traits.host_user_gid":[""],"identity.traits.host_user_uid":[""],"identity.traits.kubernetes_groups":null,"identity.traits.kubernetes_users":null,"identity.traits.logins":["root","ubuntu","ec2-user"],"identity.traits.windows_logins":null,"identity.teleport_cluster":"teleport.ericbeahan.com","identity.client_ip":"136.61.214.196","identity.prev_identity_expires":"0001-01-01T00:00:00Z","identity.private_key_policy":"none"}', + '{"ei":0,"event":"session.start","uid":"fff30583-13be-49e8-b159-32952c6ea34f","code":"T2000I","time":"2024-02-23T18:56:57.199Z","cluster_name":"teleport.ericbeahan.com","user":"teleport-admin","login":"ec2-user","user_kind":1,"sid":"293fda2d-2266-4d4d-b9d1-bd5ea9dd9fc3","private_key_policy":"none","namespace":"default","server_id":"face0091-2bf1-43fd-a16a-f1514b4119f4","server_hostname":"ip-172-31-8-163.us-east-2.compute.internal","server_labels.hostname":"ip-172-31-8-163.us-east-2.compute.internal","server_labels.teleport.internal/resource-id":"dccb2999-9fb8-4169-aded-ec7a1c0a26de","addr.remote":"136.61.214.196:50339","proto":"ssh","size":"80:25","initial_command":[""],"session_recording":"node"}', +]; +const logo = + 'PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzMyNjlfMjExOTMpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC41IDExLjk5OTdMNC40MDQgMS42ODQyMUMzLjM4Nzc1IC0wLjAzNzA0MDIgMC43NSAwLjY4NDQ2IDAuNzUgMi42ODMyMVYyMS4zMTYyQzAuNzUgMjMuMzE1IDMuMzg3NzUgMjQuMDM2NSA0LjQwNCAyMi4zMTUyTDEwLjUgMTEuOTk5N1oiIGZpbGw9IiNGMDRFOTgiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy4xMTMzIDEyTDEyLjQzNzYgMTMuMTQ0NUw2LjM0MTU2IDIzLjQ2QzYuMjI2ODEgMjMuNjUzNSA2LjA5NzA2IDIzLjgzMDUgNS45NTgzMSAyNEgxMi44NDAzQzE0LjY1MDggMjQgMTYuMzMzMSAyMy4wNjc3IDE3LjI5MjMgMjEuNTMyNUwyMy4yNTAzIDEySDEzLjExMzNaIiBmaWxsPSIjRkE3NDRFIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMjkyNCAyLjQ2NzVDMTYuMzMzMiAwLjkzMjI1IDE0LjY1MDkgMCAxMi44Mzk3IDBINS45NTg0NEM2LjA5NjQ0IDAuMTY5NSA2LjIyNjk0IDAuMzQ2NSA2LjM0MDk0IDAuNTRMMTIuNDM2OSAxMC44NTU1TDEzLjExMzQgMTJIMjMuMjQ5N0wxNy4yOTI0IDIuNDY3NVoiIGZpbGw9IiMzNDM3NDEiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8zMjY5XzIxMTkzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo='; + +export const mockState: State = { + step: 4, + connector: { + id: 'claudeV3OpusUsWest2', + name: 'Claude 3 Opus US-WEST-2', + actionTypeId: '.bedrock', + config: { + apiUrl: 'https://bedrock-runtime.us-west-2.amazonaws.com', + defaultModel: 'anthropic.claude-3-opus-20240229-v1:0', + }, + } as AIConnector, + integrationSettings: { + title: 'Mocked Integration title', + name: 'mocked_integration', + logo, + description: 'Mocked Integration description', + dataStreamTitle: 'Mocked Data Stream Title', + dataStreamName: 'mocked_datastream_name', + dataStreamDescription: 'Mocked Data Stream Description', + inputTypes: ['filestream'], + logSamples: rawSamples, + }, + isGenerating: false, + hasCelInput: false, + result, +}; + +export const mockActions: Actions = { + setStep: jest.fn(), + setConnector: jest.fn(), + setIntegrationSettings: jest.fn(), + setIsGenerating: jest.fn(), + setHasCelInput: jest.fn(), + setResult: jest.fn(), + setCelInputResult: jest.fn(), + completeStep: jest.fn(), +}; diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts new file mode 100644 index 0000000000000..17ac3bdd9f90f --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts @@ -0,0 +1,92 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { createContext, useContext } from 'react'; +import type { Pipeline, Docs, SamplesFormat, CelInput } from '../../../../common'; +import type { AIConnector, IntegrationSettings } from './types'; + +export interface State { + step: number; + connector?: AIConnector; + integrationSettings?: IntegrationSettings; + isGenerating: boolean; + hasCelInput: boolean; + result?: { + pipeline: Pipeline; + docs: Docs; + samplesFormat?: SamplesFormat; + }; + celInputResult?: CelInput; +} + +export const initialState: State = { + step: 1, + connector: undefined, + integrationSettings: undefined, + isGenerating: false, + hasCelInput: false, + result: undefined, +}; + +type Action = + | { type: 'SET_STEP'; payload: State['step'] } + | { type: 'SET_CONNECTOR'; payload: State['connector'] } + | { type: 'SET_INTEGRATION_SETTINGS'; payload: State['integrationSettings'] } + | { type: 'SET_IS_GENERATING'; payload: State['isGenerating'] } + | { type: 'SET_HAS_CEL_INPUT'; payload: State['hasCelInput'] } + | { type: 'SET_GENERATED_RESULT'; payload: State['result'] } + | { type: 'SET_CEL_INPUT_RESULT'; payload: State['celInputResult'] }; + +export const reducer = (state: State, action: Action): State => { + switch (action.type) { + case 'SET_STEP': + return { + ...state, + step: action.payload, + isGenerating: false, + ...(action.payload < state.step && { result: undefined }), // reset the result when we go back + }; + case 'SET_CONNECTOR': + return { ...state, connector: action.payload }; + case 'SET_INTEGRATION_SETTINGS': + return { ...state, integrationSettings: action.payload }; + case 'SET_IS_GENERATING': + return { ...state, isGenerating: action.payload }; + case 'SET_HAS_CEL_INPUT': + return { ...state, hasCelInput: action.payload }; + case 'SET_GENERATED_RESULT': + return { + ...state, + // keep original result as the samplesFormat is not always included in the payload + result: state.result ? { ...state.result, ...action.payload } : action.payload, + }; + case 'SET_CEL_INPUT_RESULT': + return { ...state, celInputResult: action.payload }; + default: + return state; + } +}; + +export interface Actions { + setStep: (payload: State['step']) => void; + setConnector: (payload: State['connector']) => void; + setIntegrationSettings: (payload: State['integrationSettings']) => void; + setIsGenerating: (payload: State['isGenerating']) => void; + setHasCelInput: (payload: State['hasCelInput']) => void; + setResult: (payload: State['result']) => void; + setCelInputResult: (payload: State['celInputResult']) => void; + completeStep: () => void; +} + +const ActionsContext = createContext<Actions | undefined>(undefined); +export const ActionsProvider = ActionsContext.Provider; +export const useActions = () => { + const actions = useContext(ActionsContext); + if (!actions) { + throw new Error('useActions must be used within a ActionsProvider'); + } + return actions; +}; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/api_definition_input.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/api_definition_input.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/api_definition_input.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/api_definition_input.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx similarity index 87% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx index b0a0b3194ec33..851ea3f7e6a21 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx @@ -22,7 +22,7 @@ interface CelInputStepProps { export const CelInputStep = React.memo<CelInputStepProps>( ({ integrationSettings, connector, isGenerating }) => { - const { setIsGenerating, setStep, setCelInputResult } = useActions(); + const { setIsGenerating, setStep, setCelInputResult, completeStep } = useActions(); const onGenerationCompleted = useCallback<OnComplete>( (result: State['celInputResult']) => { @@ -43,7 +43,14 @@ export const CelInputStep = React.memo<CelInputStepProps>( <EuiFlexItem> <StepContentWrapper title={i18n.CEL_INPUT_TITLE} subtitle={i18n.CEL_INPUT_DESCRIPTION}> <EuiPanel hasShadow={false} hasBorder> - <EuiForm component="form" fullWidth> + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > <ApiDefinitionInput integrationSettings={integrationSettings} /> </EuiForm> </EuiPanel> diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/generation_modal.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/generation_modal.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/generation_modal.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/generation_modal.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts new file mode 100644 index 0000000000000..fa89ccc3882db --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { State } from '../../state'; + +export const isCelInputStepReadyToComplete = ({ integrationSettings }: State) => + Boolean( + integrationSettings?.name && + integrationSettings?.dataStreamTitle && + integrationSettings?.dataStreamDescription && + integrationSettings?.dataStreamName && + integrationSettings?.apiDefinition + ); +// TODO add support for not uploading a spec file diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/translations.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx new file mode 100644 index 0000000000000..a5577ca961107 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx @@ -0,0 +1,102 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { + useEuiTheme, + EuiBadge, + EuiFlexGroup, + EuiFlexItem, + EuiPanel, + EuiRadio, + EuiFormFieldset, +} from '@elastic/eui'; +import { css } from '@emotion/react'; +import { useKibana } from '../../../../../common/hooks/use_kibana'; +import type { AIConnector } from '../../types'; + +const useRowCss = () => { + const { euiTheme } = useEuiTheme(); + return css` + &.euiPanel:hover, + &.euiPanel:focus { + box-shadow: none; + transform: none; + } + &.euiPanel:hover { + background-color: ${euiTheme.colors.lightestShade}; + } + .euiRadio { + color: ${euiTheme.colors.textPrimary}; + label.euiRadio__label { + padding-left: ${euiTheme.size.xl} !important; + } + } + `; +}; + +interface ConnectorSelectorProps { + connectors: AIConnector[]; + selectedConnectorId: string | undefined; + setConnector: (connector: AIConnector | undefined) => void; +} +export const ConnectorSelector = React.memo<ConnectorSelectorProps>( + ({ connectors, setConnector, selectedConnectorId }) => { + const { + triggersActionsUi: { actionTypeRegistry }, + } = useKibana().services; + const rowCss = useRowCss(); + return ( + <EuiFormFieldset> + <EuiFlexGroup + alignItems="stretch" + direction="column" + gutterSize="s" + data-test-subj="connectorSelector" + > + {connectors.map((connector) => ( + <EuiFlexItem key={connector.id}> + <EuiPanel + element="button" + type="button" // So that the enter button will not submit the form. + role="radio" + key={connector.id} + onClick={() => setConnector(connector)} + hasShadow={false} + hasBorder + paddingSize="l" + css={rowCss} + data-test-subj={`connectorSelector-${connector.id}`} + > + <EuiFlexGroup direction="row" alignItems="center" justifyContent="spaceBetween"> + <EuiFlexItem> + <EuiRadio + label={connector.name} + id={connector.id} + value={connector.id} + checked={selectedConnectorId === connector.id} + onChange={() => setConnector(connector)} + data-test-subj={`connectorSelectorRadio-${connector.id}${ + selectedConnectorId === connector.id ? '-selected' : '' + }`} + /> + </EuiFlexItem> + <EuiFlexItem grow={false}> + <EuiBadge color="hollow"> + {actionTypeRegistry.get(connector.actionTypeId).actionTypeTitle} + </EuiBadge> + </EuiFlexItem> + </EuiFlexGroup> + </EuiPanel> + </EuiFlexItem> + ))} + </EuiFlexGroup> + </EuiFormFieldset> + ); + } +); +ConnectorSelector.displayName = 'ConnectorSelector'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_setup.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_setup.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_setup.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_setup.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.test.tsx diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx new file mode 100644 index 0000000000000..8c7fa66795c81 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx @@ -0,0 +1,173 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useEffect, useState } from 'react'; +import { useLoadConnectors } from '@kbn/elastic-assistant'; +import { + EuiForm, + EuiFlexGroup, + EuiFlexItem, + EuiLoadingSpinner, + EuiPopover, + EuiLink, + EuiSpacer, + EuiText, + EuiIcon, + useEuiTheme, +} from '@elastic/eui'; +import { + AuthorizationWrapper, + MissingPrivilegesTooltip, +} from '../../../../../common/components/authorization'; +import { useAuthorization } from '../../../../../common/hooks/use_authorization'; +import { useKibana } from '../../../../../common/hooks/use_kibana'; +import { StepContentWrapper } from '../step_content_wrapper'; +import { ConnectorSelector } from './connector_selector'; +import { ConnectorSetup } from './connector_setup'; +import type { AIConnector } from '../../types'; +import { useActions } from '../../state'; +import * as i18n from './translations'; + +/** + * List of allowed action type IDs for the integrations assistant. + */ +const AllowedActionTypeIds = ['.bedrock', '.gen-ai', '.gemini']; + +interface ConnectorStepProps { + connector: AIConnector | undefined; +} +export const ConnectorStep = React.memo<ConnectorStepProps>(({ connector }) => { + const { euiTheme } = useEuiTheme(); + const { http, notifications } = useKibana().services; + const { setConnector, completeStep } = useActions(); + + const [connectors, setConnectors] = useState<AIConnector[]>(); + const { + isLoading, + data: aiConnectors, + refetch: refetchConnectors, + } = useLoadConnectors({ http, toasts: notifications.toasts }); + + useEffect(() => { + if (aiConnectors != null) { + // filter out connectors, this is temporary until we add support for more models + const filteredAiConnectors = aiConnectors.filter(({ actionTypeId }) => + AllowedActionTypeIds.includes(actionTypeId) + ); + setConnectors(filteredAiConnectors); + if (filteredAiConnectors && filteredAiConnectors.length === 1) { + // pre-select the connector if there is only one + setConnector(filteredAiConnectors[0]); + } + } + }, [aiConnectors, setConnector]); + + const onConnectorSaved = useCallback(() => refetchConnectors(), [refetchConnectors]); + + const hasConnectors = !isLoading && connectors?.length; + + return ( + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > + <StepContentWrapper + title={i18n.TITLE} + subtitle={i18n.DESCRIPTION} + right={ + hasConnectors ? <CreateConnectorPopover onConnectorSaved={onConnectorSaved} /> : null + } + > + <EuiFlexGroup direction="column" alignItems="stretch"> + <EuiFlexItem> + {isLoading ? ( + <EuiLoadingSpinner /> + ) : ( + <> + {hasConnectors ? ( + <ConnectorSelector + connectors={connectors} + setConnector={setConnector} + selectedConnectorId={connector?.id} + /> + ) : ( + <AuthorizationWrapper canCreateConnectors> + <ConnectorSetup + actionTypeIds={AllowedActionTypeIds} + onConnectorSaved={onConnectorSaved} + /> + </AuthorizationWrapper> + )} + </> + )} + </EuiFlexItem> + </EuiFlexGroup> + <EuiSpacer size="m" /> + <EuiText size="s" color="subdued"> + <EuiFlexGroup direction="row" gutterSize="xs" alignItems="flexStart"> + <EuiFlexItem grow={false} css={{ margin: euiTheme.size.xxs }}> + <EuiIcon type="iInCircle" /> + </EuiFlexItem> + <EuiFlexItem>{i18n.SUPPORTED_MODELS_INFO}</EuiFlexItem> + </EuiFlexGroup> + </EuiText> + </StepContentWrapper> + </EuiForm> + ); +}); +ConnectorStep.displayName = 'ConnectorStep'; + +interface CreateConnectorPopoverProps { + onConnectorSaved: () => void; +} +const CreateConnectorPopover = React.memo<CreateConnectorPopoverProps>(({ onConnectorSaved }) => { + const { canCreateConnectors } = useAuthorization(); + const [isOpen, setIsPopoverOpen] = useState(false); + const openPopover = useCallback(() => setIsPopoverOpen(true), []); + const closePopover = useCallback(() => setIsPopoverOpen(false), []); + + const onConnectorSavedAndClose = useCallback(() => { + onConnectorSaved(); + closePopover(); + }, [onConnectorSaved, closePopover]); + + if (!canCreateConnectors) { + return ( + <MissingPrivilegesTooltip canCreateConnectors> + <EuiLink data-test-subj="createConnectorPopoverButtonDisabled" disabled> + {i18n.CREATE_CONNECTOR} + </EuiLink> + </MissingPrivilegesTooltip> + ); + } + return ( + <EuiPopover + button={ + <EuiText size="s"> + <EuiLink data-test-subj="createConnectorPopoverButton" onClick={openPopover}> + {i18n.CREATE_CONNECTOR} + </EuiLink> + </EuiText> + } + isOpen={isOpen} + closePopover={closePopover} + data-test-subj="createConnectorPopover" + > + <ConnectorSetup + actionTypeIds={AllowedActionTypeIds} + onConnectorSaved={onConnectorSavedAndClose} + onClose={closePopover} + compressed + /> + </EuiPopover> + ); +}); +CreateConnectorPopover.displayName = 'CreateConnectorPopover'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts new file mode 100644 index 0000000000000..cc09cd2a6c87b --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { State } from '../../state'; + +export const isConnectorStepReadyToComplete = ({ connector }: State) => connector != null; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx similarity index 86% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx index 4b505fb7062d6..1bd7b92b2e0cb 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx @@ -53,8 +53,14 @@ interface DataStreamStepProps { } export const DataStreamStep = React.memo<DataStreamStepProps>( ({ integrationSettings, connector, isGenerating }) => { - const { setIntegrationSettings, setIsGenerating, setHasCelInput, setStep, setResult } = - useActions(); + const { + setIntegrationSettings, + setIsGenerating, + setHasCelInput, + setStep, + setResult, + completeStep, + } = useActions(); const { isLoading: isLoadingPackageNames, packageNames } = useLoadPackageNames(); // this is used to avoid duplicate names const [name, setName] = useState<string>(integrationSettings?.name ?? ''); @@ -150,14 +156,21 @@ export const DataStreamStep = React.memo<DataStreamStepProps>( ); return ( - <EuiFlexGroup direction="column" gutterSize="l" data-test-subj="dataStreamStep"> - <EuiFlexItem> - <StepContentWrapper - title={i18n.INTEGRATION_NAME_TITLE} - subtitle={i18n.INTEGRATION_NAME_DESCRIPTION} - > - <EuiPanel hasShadow={false} hasBorder> - <EuiForm component="form" fullWidth> + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > + <EuiFlexGroup direction="column" gutterSize="l" data-test-subj="dataStreamStep"> + <EuiFlexItem> + <StepContentWrapper + title={i18n.INTEGRATION_NAME_TITLE} + subtitle={i18n.INTEGRATION_NAME_DESCRIPTION} + > + <EuiPanel hasShadow={false} hasBorder> <EuiFormRow label={i18n.INTEGRATION_NAME_LABEL} helpText={ @@ -176,18 +189,16 @@ export const DataStreamStep = React.memo<DataStreamStepProps>( disabled={isLoadingPackageNames} /> </EuiFormRow> - </EuiForm> - </EuiPanel> - </StepContentWrapper> - </EuiFlexItem> + </EuiPanel> + </StepContentWrapper> + </EuiFlexItem> - <EuiFlexItem> - <StepContentWrapper - title={i18n.DATA_STREAM_TITLE} - subtitle={i18n.DATA_STREAM_DESCRIPTION} - > - <EuiPanel hasShadow={false} hasBorder> - <EuiForm component="form" fullWidth> + <EuiFlexItem> + <StepContentWrapper + title={i18n.DATA_STREAM_TITLE} + subtitle={i18n.DATA_STREAM_DESCRIPTION} + > + <EuiPanel hasShadow={false} hasBorder> <EuiFormRow label={i18n.DATA_STREAM_TITLE_LABEL}> <EuiFieldText name="dataStreamTitle" @@ -228,19 +239,19 @@ export const DataStreamStep = React.memo<DataStreamStepProps>( /> </EuiFormRow> <SampleLogsInput integrationSettings={integrationSettings} /> - </EuiForm> - </EuiPanel> - </StepContentWrapper> - {isGenerating && ( - <GenerationModal - integrationSettings={integrationSettings} - connector={connector} - onComplete={onGenerationCompleted} - onClose={onGenerationClosed} - /> - )} - </EuiFlexItem> - </EuiFlexGroup> + </EuiPanel> + </StepContentWrapper> + {isGenerating && ( + <GenerationModal + integrationSettings={integrationSettings} + connector={connector} + onComplete={onGenerationCompleted} + onClose={onGenerationClosed} + /> + )} + </EuiFlexItem> + </EuiFlexGroup> + </EuiForm> ); } ); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts new file mode 100644 index 0000000000000..509ee99b4122f --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { State } from '../../state'; + +export const isDataStreamStepReadyToComplete = ({ integrationSettings }: State) => + Boolean( + integrationSettings?.name && + integrationSettings?.dataStreamTitle && + integrationSettings?.dataStreamDescription && + integrationSettings?.dataStreamName && + integrationSettings?.logSamples + ); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_generation.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_generation.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_generation.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_generation.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_load_package_names.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_load_package_names.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_load_package_names.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_load_package_names.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/use_deploy_integration.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/use_deploy_integration.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/use_deploy_integration.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/use_deploy_integration.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx similarity index 94% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx index dc27abd9529cd..928f4db5f065f 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx @@ -51,7 +51,7 @@ interface IntegrationStepProps { export const IntegrationStep = React.memo<IntegrationStepProps>(({ integrationSettings }) => { const styles = useLayoutStyles(); - const { setIntegrationSettings } = useActions(); + const { setIntegrationSettings, completeStep } = useActions(); const [logoError, setLogoError] = React.useState<string>(); const setIntegrationValues = useCallback( @@ -95,7 +95,14 @@ export const IntegrationStep = React.memo<IntegrationStepProps>(({ integrationSe <EuiPanel paddingSize="none" hasShadow={false} hasBorder data-test-subj="integrationStep"> <EuiFlexGroup direction="row" gutterSize="none"> <EuiFlexItem css={styles.left}> - <EuiForm component="form" fullWidth> + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > <EuiFormRow label={i18n.TITLE_LABEL}> <EuiFieldText name="title" diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts new file mode 100644 index 0000000000000..4f40641311671 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { State } from '../../state'; + +export const isIntegrationStepReadyToComplete = ({ integrationSettings }: State) => + Boolean(integrationSettings?.title && integrationSettings?.description); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/package_card_preview.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/package_card_preview.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/package_card_preview.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/package_card_preview.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/cel_config_results.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/cel_config_results.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/cel_config_results.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/cel_config_results.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts new file mode 100644 index 0000000000000..902cdea32d5e0 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { State } from '../../state'; + +export const isCelReviewStepReadyToComplete = ({ isGenerating, celInputResult }: State) => + isGenerating === false && celInputResult != null; diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx new file mode 100644 index 0000000000000..85b9980a4a5de --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiForm, EuiLoadingSpinner, EuiPanel } from '@elastic/eui'; +import React from 'react'; +import { useActions, type State } from '../../state'; +import { StepContentWrapper } from '../step_content_wrapper'; +import * as i18n from './translations'; +import { CelConfigResults } from './cel_config_results'; + +interface ReviewCelStepProps { + celInputResult: State['celInputResult']; + isGenerating: State['isGenerating']; +} + +export const ReviewCelStep = React.memo<ReviewCelStepProps>(({ isGenerating, celInputResult }) => { + const { completeStep } = useActions(); + + return ( + <StepContentWrapper title={i18n.TITLE} subtitle={i18n.DESCRIPTION}> + <EuiPanel hasShadow={false} hasBorder data-test-subj="reviewCelStep"> + {isGenerating ? ( + <EuiLoadingSpinner size="l" /> + ) : ( + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > + <CelConfigResults celInputResult={celInputResult} /> + </EuiForm> + )} + </EuiPanel> + </StepContentWrapper> + ); +}); +ReviewCelStep.displayName = 'ReviewCelStep'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/fields_table.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/fields_table.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/fields_table.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/fields_table.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts new file mode 100644 index 0000000000000..91b9726e03a3e --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { State } from '../../state'; + +export const isReviewStepReadyToComplete = ({ isGenerating, result }: State) => + isGenerating === false && result != null; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/use_check_pipeline.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/use_check_pipeline.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/use_check_pipeline.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/use_check_pipeline.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/step_content_wrapper.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/step_content_wrapper.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/step_content_wrapper.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/step_content_wrapper.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/types.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/create_integration_landing.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/create_integration_landing.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/create_integration_landing.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/create_integration_landing.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/create_integration_upload.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/create_integration_upload.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/create_integration_upload.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/create_integration_upload.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/docs_link_subtitle.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/docs_link_subtitle.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/docs_link_subtitle.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/docs_link_subtitle.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/index.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/index.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/index.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/index.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/telemetry.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/telemetry.tsx similarity index 95% rename from x-pack/plugins/integration_assistant/public/components/create_integration/telemetry.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/telemetry.tsx index 39076726b7f9d..04d8a07cd1288 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/telemetry.tsx +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/telemetry.tsx @@ -15,20 +15,12 @@ import type { IntegrationSettings, } from './create_integration_assistant/types'; -const stepNames: Record<string, string> = { - '1': 'Connector Step', - '2': 'Integration Step', - '3': 'DataStream Step', - '4': 'Review Step', - '5': 'Deploy Step', -}; - type ReportUploadZipIntegrationComplete = (params: { integrationName?: string; error?: string; }) => void; type ReportAssistantOpen = () => void; -type ReportAssistantStepComplete = (params: { step: number }) => void; +type ReportAssistantStepComplete = (params: { step: number; stepName: string }) => void; type ReportGenerationComplete = (params: { connector: AIConnector; integrationSettings: IntegrationSettings; @@ -92,11 +84,11 @@ export const TelemetryContextProvider = React.memo<PropsWithChildren<{}>>(({ chi }, [telemetry]); const reportAssistantStepComplete = useCallback<ReportAssistantStepComplete>( - ({ step }) => { + ({ step, stepName }) => { telemetry.reportEvent(TelemetryEventType.IntegrationAssistantStepComplete, { sessionId: sessionData.current.sessionId, step, - stepName: stepNames[step.toString()] ?? 'Unknown Step', + stepName, durationMs: Date.now() - stepsData.current.startedAt, sessionElapsedTime: Date.now() - sessionData.current.startedAt, }); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/types.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration_card_button/index.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/index.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration_card_button/index.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/index.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration_card_button/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration_card_button/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/types.ts diff --git a/x-pack/plugins/integration_assistant/public/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/index.ts diff --git a/x-pack/plugins/integration_assistant/public/mocks/test_provider.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/mocks/test_provider.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/mocks/test_provider.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/mocks/test_provider.tsx diff --git a/x-pack/plugins/integration_assistant/public/plugin.ts b/x-pack/platform/plugins/shared/integration_assistant/public/plugin.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/plugin.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/plugin.ts diff --git a/x-pack/plugins/integration_assistant/public/services/experimental_features_service.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/experimental_features_service.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/experimental_features_service.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/experimental_features_service.ts diff --git a/x-pack/plugins/integration_assistant/public/services/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/index.ts diff --git a/x-pack/plugins/integration_assistant/public/services/mocks/services.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/mocks/services.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/mocks/services.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/mocks/services.ts diff --git a/x-pack/plugins/integration_assistant/public/services/telemetry/events.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/events.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/telemetry/events.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/events.ts diff --git a/x-pack/plugins/integration_assistant/public/services/telemetry/mocks/service.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/mocks/service.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/telemetry/mocks/service.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/mocks/service.ts diff --git a/x-pack/plugins/integration_assistant/public/services/telemetry/service.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/service.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/telemetry/service.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/service.ts diff --git a/x-pack/plugins/integration_assistant/public/services/telemetry/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/telemetry/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/types.ts diff --git a/x-pack/plugins/integration_assistant/public/services/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/types.ts diff --git a/x-pack/plugins/integration_assistant/public/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/types.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs.js b/x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs.js new file mode 100644 index 0000000000000..0ee794df84317 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs.js @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../../../src/setup_node_env'); +require('./draw_graphs_script').drawGraphs(); diff --git a/x-pack/plugins/integration_assistant/scripts/draw_graphs_script.ts b/x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs_script.ts similarity index 100% rename from x-pack/plugins/integration_assistant/scripts/draw_graphs_script.ts rename to x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs_script.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/request.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/request.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/request.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/request.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/request_context.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/request_context.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/request_context.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/request_context.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/response.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/response.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/response.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/response.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/test_adapters.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/test_adapters.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/test_adapters.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/test_adapters.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/server/config.ts b/x-pack/platform/plugins/shared/integration_assistant/server/config.ts new file mode 100644 index 0000000000000..bd30cc844ebe7 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/server/config.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { schema, type TypeOf } from '@kbn/config-schema'; +import type { PluginConfigDescriptor } from '@kbn/core/server'; + +export const configSchema = schema.object({ + enabled: schema.boolean({ defaultValue: true }), + /** + * For internal use. A list of string values (comma delimited) that will enable experimental + * type of functionality that is not yet released. Valid values for this settings need to + * be defined in: + * `x-pack/platform/plugins/shared/integration_assistant/common/experimental_features.ts` + * under the `allowedExperimentalValues` object + * + * @example + * xpack.integration_assistant.enableExperimental: + * - someCrazyFeature + * - someEvenCrazierFeature + */ + enableExperimental: schema.arrayOf(schema.string(), { + defaultValue: () => [], + }), +}); +export type IntegrationAssistantConfigType = TypeOf<typeof configSchema>; + +export const config: PluginConfigDescriptor<IntegrationAssistantConfigType> = { + exposeToBrowser: { + enableExperimental: true, + }, + schema: configSchema, +}; diff --git a/x-pack/platform/plugins/shared/integration_assistant/server/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/constants.ts new file mode 100644 index 0000000000000..b7edc9d5e8e7d --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/server/constants.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const ROUTE_HANDLER_TIMEOUT = 10 * 60 * 1000; // 10 * 60 seconds = 10 minutes +export const LANG_CHAIN_TIMEOUT = ROUTE_HANDLER_TIMEOUT - 10_000; // 9 minutes 50 seconds +export const CONNECTOR_TIMEOUT = LANG_CHAIN_TIMEOUT - 10_000; // 9 minutes 40 seconds +export enum LogFormat { + JSON = 'json', + NDJSON = 'ndjson', + CSV = 'csv', + STRUCTURED = 'structured', + UNSTRUCTURED = 'unstructured', +} +export const FLEET_ALL_ROLE = 'fleet-all' as const; +export const INTEGRATIONS_ALL_ROLE = 'integrations-all' as const; +export const ACTIONS_AND_CONNECTORS_ALL_ROLE = 'actions:execute-advanced-connectors' as const; diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/categorization.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/categorization.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/categorization.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/categorization.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/errors.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/errors.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/errors.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/errors.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/errors.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/errors.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/errors.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/errors.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/invalid.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/invalid.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/invalid.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/invalid.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/review.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/review.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/review.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/review.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/review.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/review.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/review.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/review.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/stable.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/stable.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/stable.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/stable.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/util.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/util.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/util.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/util.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/util.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/validate.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/validate.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/validate.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/validate.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/validate.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/validate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/validate.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/validate.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/build_program.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/build_program.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/build_program.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/build_program.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/build_program.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/build_program.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/build_program.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/build_program.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_details.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_details.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_details.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_details.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_details.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_details.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_details.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_details.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_vars.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_vars.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_vars.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_vars.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_vars.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_vars.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_vars.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_vars.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/summarize_query.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/summarize_query.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/summarize_query.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/summarize_query.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/summarize_query.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/summarize_query.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/summarize_query.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/summarize_query.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/util.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/util.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/util.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/util.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/util.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/csv/columns.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/columns.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/csv/columns.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/columns.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/csv/columns.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/columns.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/csv/columns.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/columns.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/csv/csv.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/csv.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/csv/csv.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/csv.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/chunk.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/chunk.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/chunk.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/chunk.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/chunk.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/chunk.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/chunk.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/chunk.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/duplicates.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/duplicates.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/duplicates.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/duplicates.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/invalid.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/invalid.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/invalid.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/invalid.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/mapping.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/mapping.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/mapping.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/mapping.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/missing.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/missing.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/missing.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/missing.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/missing.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/model.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/model.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/model.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/model.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/pipeline.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/pipeline.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/pipeline.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/pipeline.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/pipeline.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/pipeline.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/pipeline.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/pipeline.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/state.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/state.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/state.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/state.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/validate.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/validate.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/validate.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/validate.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/validate.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/validate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/validate.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/validate.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/error.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/header.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/header.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/header.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/header.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/header.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/header.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/header.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/kv.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/kv.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/kv.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/kv.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/kv.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/kv.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/validate.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/validate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/validate.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/validate.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/detection.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/detection.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/detection.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/detection.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/errors.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/errors.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/errors.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/errors.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/errors.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/errors.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/errors.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/related.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/related.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/related.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/related.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/related.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/related.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/related.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/related.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/review.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/review.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/review.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/review.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/review.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/review.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/review.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/review.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/util.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/util.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/util.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/util.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/util.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/error.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/errors.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/errors.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/errors.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/errors.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/unstructured.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/unstructured.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/unstructured.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/unstructured.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/validate.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/validate.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/validate.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/validate.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/validate.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/validate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/validate.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/validate.ts diff --git a/x-pack/plugins/integration_assistant/server/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/index.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/agent.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/agent.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/agent.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/agent.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/agent.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/agent.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/agent.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/agent.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.test.ts new file mode 100644 index 0000000000000..01d3976b9dd6b --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.test.ts @@ -0,0 +1,342 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { buildPackage, isValidName, renderPackageManifestYAML } from './build_integration'; +import { testIntegration } from '../../__jest__/fixtures/build_integration'; +import { generateUniqueId, ensureDirSync, createSync } from '../util'; +import { createDataStream } from './data_stream'; +import { createFieldMapping } from './fields'; +import { createAgentInput } from './agent'; +import { createPipeline } from './pipeline'; +import { DataStream, Docs, InputType, Pipeline, Integration } from '../../common'; +import yaml from 'js-yaml'; +import { createReadme } from './readme_files'; + +const mockedDataPath = 'path'; +const mockedId = 123; + +jest.mock('../util'); +jest.mock('./data_stream'); +jest.mock('./fields'); +jest.mock('./agent'); +jest.mock('./pipeline'); +jest.mock('./readme_files'); + +(createFieldMapping as jest.Mock).mockReturnValue([]); +(createDataStream as jest.Mock).mockReturnValue([]); + +(generateUniqueId as jest.Mock).mockReturnValue(mockedId); + +jest.mock('@kbn/utils', () => ({ + getDataPath: jest.fn(() => mockedDataPath), +})); + +jest.mock('adm-zip', () => { + return jest.fn().mockImplementation(() => ({ + addLocalFolder: jest.fn(), + toBuffer: jest.fn(), + addFile: jest.fn(), + })); +}); + +describe('buildPackage', () => { + const packagePath = `${mockedDataPath}/integration-assistant-${mockedId}`; + const integrationPath = `${packagePath}/integration-1.0.0`; + + const firstDatastreamName = 'datastream_one'; + const secondDatastreamName = 'datastream_two'; + + const firstDataStreamInputTypes: InputType[] = ['filestream', 'kafka']; + const secondDataStreamInputTypes: InputType[] = ['kafka']; + + const firstDataStreamDocs: Docs = [ + { + key: 'foo', + anotherKey: 'bar', + }, + ]; + const secondDataStreamDocs: Docs = [{}]; + + const firstDataStreamPipeline: Pipeline = { + processors: [ + { + set: { + field: 'ecs.version', + value: '8.11.0', + }, + }, + ], + }; + const secondDataStreamPipeline: Pipeline = { processors: [] }; + + const firstDataStream: DataStream = { + name: firstDatastreamName, + title: 'datastream_one', + description: 'datastream_one description', + inputTypes: firstDataStreamInputTypes, + docs: firstDataStreamDocs, + rawSamples: ['{"test1": "test1"}'], + pipeline: firstDataStreamPipeline, + samplesFormat: { name: 'ndjson', multiline: false }, + }; + + const secondDataStream: DataStream = { + name: secondDatastreamName, + title: 'datastream_two', + description: 'datastream_two description', + inputTypes: secondDataStreamInputTypes, + docs: secondDataStreamDocs, + rawSamples: ['{"test1": "test1"}'], + pipeline: secondDataStreamPipeline, + samplesFormat: { name: 'ndjson', multiline: false }, + }; + + const firstDatastreamPath = `${integrationPath}/data_stream/${firstDatastreamName}`; + const secondDatastreamPath = `${integrationPath}/data_stream/${secondDatastreamName}`; + + testIntegration.dataStreams = [firstDataStream, secondDataStream]; + + beforeEach(async () => { + jest.clearAllMocks(); + await buildPackage(testIntegration); + }); + + it('Should create expected directories and files', async () => { + // Package & integration folders + expect(ensureDirSync).toHaveBeenCalledWith(packagePath); + expect(ensureDirSync).toHaveBeenCalledWith(integrationPath); + + // _dev files + expect(ensureDirSync).toHaveBeenCalledWith(`${integrationPath}/_dev/build`); + expect(createSync).toHaveBeenCalledWith( + `${integrationPath}/_dev/build/build.yml`, + expect.any(String) + ); + + // Changelog file + expect(createSync).toHaveBeenCalledWith(`${integrationPath}/changelog.yml`, expect.any(String)); + + // Manifest files + expect(createSync).toHaveBeenCalledWith(`${integrationPath}/manifest.yml`, expect.any(String)); + }); + + it('Should not create logo files if info is not present in the integration', async () => { + jest.clearAllMocks(); + testIntegration.logo = undefined; + + await buildPackage(testIntegration); + + expect(ensureDirSync).not.toHaveBeenCalledWith(`${integrationPath}/img`); + expect(createSync).not.toHaveBeenCalledWith( + `${integrationPath}/img/logo.svg`, + expect.any(Buffer) + ); + }); + + it('Should call createDataStream for each datastream', async () => { + expect(createDataStream).toHaveBeenCalledWith( + 'integration', + firstDatastreamPath, + firstDataStream + ); + expect(createDataStream).toHaveBeenCalledWith( + 'integration', + secondDatastreamPath, + secondDataStream + ); + }); + + it('Should call createAgentInput for each datastream', async () => { + expect(createAgentInput).toHaveBeenCalledWith(firstDatastreamPath, firstDataStreamInputTypes); + expect(createAgentInput).toHaveBeenCalledWith(secondDatastreamPath, secondDataStreamInputTypes); + }); + + it('Should call createPipeline for each datastream', async () => { + expect(createPipeline).toHaveBeenCalledWith(firstDatastreamPath, firstDataStreamPipeline); + expect(createPipeline).toHaveBeenCalledWith(secondDatastreamPath, secondDataStreamPipeline); + }); + + it('Should call createFieldMapping for each datastream', async () => { + expect(createFieldMapping).toHaveBeenCalledWith( + 'integration', + firstDatastreamName, + firstDatastreamPath, + firstDataStreamDocs + ); + expect(createFieldMapping).toHaveBeenCalledWith( + 'integration', + secondDatastreamName, + secondDatastreamPath, + secondDataStreamDocs + ); + }); + + it('Should call createReadme once with sorted fields', async () => { + jest.clearAllMocks(); + + const firstDSFieldsMapping = [{ name: 'name_a', description: 'description 1', type: 'type 1' }]; + + const firstDataStreamFields = [ + { name: 'name_b', description: 'description 1', type: 'type 1' }, + ]; + + const secondDSFieldsMapping = [ + { name: 'name_c', description: 'description 2', type: 'type 2' }, + { name: 'name_e', description: 'description 3', type: 'type 3' }, + ]; + + const secondDataStreamFields = [ + { name: 'name_d', description: 'description 2', type: 'type 2' }, + ]; + + (createFieldMapping as jest.Mock).mockReturnValueOnce(firstDSFieldsMapping); + (createDataStream as jest.Mock).mockReturnValueOnce(firstDataStreamFields); + + (createFieldMapping as jest.Mock).mockReturnValueOnce(secondDSFieldsMapping); + (createDataStream as jest.Mock).mockReturnValueOnce(secondDataStreamFields); + + await buildPackage(testIntegration); + + expect(createReadme).toHaveBeenCalledWith( + integrationPath, + testIntegration.name, + testIntegration.dataStreams, + [ + { + datastream: firstDatastreamName, + fields: [ + { name: 'name_a', description: 'description 1', type: 'type 1' }, + + { name: 'name_b', description: 'description 1', type: 'type 1' }, + ], + }, + { + datastream: secondDatastreamName, + fields: [ + { name: 'name_c', description: 'description 2', type: 'type 2' }, + { name: 'name_d', description: 'description 2', type: 'type 2' }, + { name: 'name_e', description: 'description 3', type: 'type 3' }, + ], + }, + ] + ); + }); +}); + +describe('renderPackageManifestYAML', () => { + test('generates the package manifest correctly', () => { + const integration: Integration = { + title: 'Sample Integration', + name: 'sample_integration', + description: + ' This is a sample integration\n\nWith multiple lines and weird spacing. \n\n And more lines ', + logo: 'some-logo.png', + dataStreams: [ + { + name: 'data_stream_one', + title: 'Data Stream 1', + description: 'This is data stream 1', + inputTypes: ['filestream'], + rawSamples: ['{field: "value"}'], + pipeline: { + processors: [], + }, + docs: [], + samplesFormat: { name: 'ndjson', multiline: false }, + }, + { + name: 'data_stream_two', + title: 'Data Stream 2', + description: + 'This is data stream 2\nWith multiple lines of description\nBut otherwise, nothing special', + inputTypes: ['aws-cloudwatch'], + pipeline: { + processors: [], + }, + rawSamples: ['field="value"'], + docs: [], + samplesFormat: { name: 'structured' }, + }, + ], + }; + + const manifestContent = renderPackageManifestYAML(integration); + + // The manifest content must be parseable as YAML. + const manifest = yaml.load(manifestContent) as Record<string, unknown>; + + expect(manifest).toBeDefined(); + expect(manifest.title).toBe(integration.title); + expect(manifest.name).toBe(integration.name); + expect(manifest.type).toBe('integration'); + expect(manifest.description).toBe(integration.description); + expect(Array.isArray(manifest.icons)).toBe(true); + expect((manifest.icons as object[]).length).toBe(1); + expect((manifest.icons as object[])[0]).toEqual({ + src: '/img/logo.svg', + title: 'Sample Integration Logo', + size: '32x32', + type: 'image/svg+xml', + }); + }); +}); + +describe('isValidName', () => { + it('should return true for valid names', () => { + expect(isValidName('validName')).toBe(true); + expect(isValidName('Valid_Name')).toBe(true); + expect(isValidName('anotherValidName')).toBe(true); + }); + + it('should return false for names with numbers', () => { + expect(isValidName('invalid123')).toBe(false); + expect(isValidName('123invalid')).toBe(false); + expect(isValidName('invalid_123')).toBe(false); + }); + + it('should return false for empty string', () => { + expect(isValidName('')).toBe(false); + }); + + it('should return false for names with spaces', () => { + expect(isValidName('invalid name')).toBe(false); + expect(isValidName(' invalid')).toBe(false); + expect(isValidName('invalid ')).toBe(false); + expect(isValidName('invalid name with spaces')).toBe(false); + }); + + it('should return false for names with special characters', () => { + expect(isValidName('invalid@name')).toBe(false); + expect(isValidName('invalid#name')).toBe(false); + expect(isValidName('invalid$name')).toBe(false); + expect(isValidName('invalid%name')).toBe(false); + expect(isValidName('invalid^name')).toBe(false); + expect(isValidName('invalid&name')).toBe(false); + expect(isValidName('invalid*name')).toBe(false); + expect(isValidName('invalid(name')).toBe(false); + expect(isValidName('invalid/name')).toBe(false); + }); + + it('should return false for names with dashes', () => { + expect(isValidName('invalid-name')).toBe(false); + expect(isValidName('invalid-name-with-dashes')).toBe(false); + }); + + it('should return false for names with periods', () => { + expect(isValidName('invalid.name')).toBe(false); + expect(isValidName('invalid.name.with.periods')).toBe(false); + }); + + it('should return false for names with mixed invalid characters', () => { + expect(isValidName('invalid@name#with$special%characters')).toBe(false); + expect(isValidName('invalid name with spaces and 123')).toBe(false); + }); + + it('should return false for names with empty string', () => { + expect(isValidName('')).toBe(false); + }); +}); diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/build_integration.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.ts similarity index 89% rename from x-pack/plugins/integration_assistant/server/integration_builder/build_integration.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.ts index 785c11125afd9..e63e7d0648da7 100644 --- a/x-pack/plugins/integration_assistant/server/integration_builder/build_integration.ts +++ b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.ts @@ -34,6 +34,12 @@ function configureNunjucks() { export async function buildPackage(integration: Integration): Promise<Buffer> { configureNunjucks(); + if (!isValidName(integration.name)) { + throw new Error( + `Invalid integration name: ${integration.name}, Should only contain letters and underscores` + ); + } + const workingDir = joinPath(getDataPath(), `integration-assistant-${generateUniqueId()}`); const packageDirectoryName = `${integration.name}-${initialVersion}`; const packageDir = createDirectories(workingDir, integration, packageDirectoryName); @@ -41,6 +47,11 @@ export async function buildPackage(integration: Integration): Promise<Buffer> { const dataStreamsDir = joinPath(packageDir, 'data_stream'); const fieldsPerDatastream = integration.dataStreams.map((dataStream) => { const dataStreamName = dataStream.name; + if (!isValidName(dataStreamName)) { + throw new Error( + `Invalid datastream name: ${dataStreamName}, Should only contain letters and underscores` + ); + } const specificDataStreamDir = joinPath(dataStreamsDir, dataStreamName); const dataStreamFields = createDataStream(integration.name, specificDataStreamDir, dataStream); @@ -60,12 +71,15 @@ export async function buildPackage(integration: Integration): Promise<Buffer> { }); createReadme(packageDir, integration.name, integration.dataStreams, fieldsPerDatastream); - const zipBuffer = await createZipArchive(workingDir, packageDirectoryName); + const zipBuffer = await createZipArchive(integration, workingDir, packageDirectoryName); removeDirSync(workingDir); return zipBuffer; } - +export function isValidName(input: string): boolean { + const regex = /^[a-zA-Z_]+$/; + return input.length > 0 && regex.test(input); +} function createDirectories( workingDir: string, integration: Integration, @@ -84,17 +98,6 @@ function createPackage(packageDir: string, integration: Integration): void { createPackageManifest(packageDir, integration); // Skipping creation of system tests temporarily for custom package generation // createPackageSystemTests(packageDir, integration); - if (integration?.logo !== undefined) { - createLogo(packageDir, integration.logo); - } -} - -function createLogo(packageDir: string, logo: string): void { - const logoDir = joinPath(packageDir, 'img'); - ensureDirSync(logoDir); - - const buffer = Buffer.from(logo, 'base64'); - createSync(joinPath(logoDir, 'logo.svg'), buffer); } function createBuildFile(packageDir: string): void { @@ -113,10 +116,20 @@ function createChangelog(packageDir: string): void { createSync(joinPath(packageDir, 'changelog.yml'), changelogTemplate); } -async function createZipArchive(workingDir: string, packageDirectoryName: string): Promise<Buffer> { +async function createZipArchive( + integration: Integration, + workingDir: string, + packageDirectoryName: string +): Promise<Buffer> { const tmpPackageDir = joinPath(workingDir, packageDirectoryName); const zip = new AdmZip(); zip.addLocalFolder(tmpPackageDir, packageDirectoryName); + + if (integration.logo) { + const logoDir = joinPath(packageDirectoryName, 'img/logo.svg'); + const logoBuffer = Buffer.from(integration.logo, 'base64'); + zip.addFile(logoDir, logoBuffer); + } const buffer = zip.toBuffer(); return buffer; } diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/data_stream.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/data_stream.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/data_stream.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/data_stream.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/data_stream.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/data_stream.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/data_stream.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/data_stream.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/dev_folders.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/dev_folders.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/dev_folders.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/dev_folders.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/fields.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/fields.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/fields.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/fields.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/fields.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/fields.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/fields.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/fields.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/index.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/pipeline.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/pipeline.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/pipeline.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/pipeline.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/pipeline.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/pipeline.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/pipeline.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/pipeline.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/readme_files.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/readme_files.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/readme_files.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/readme_files.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/readme_files.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/readme_files.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/readme_files.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/readme_files.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/cef_error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/cef_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/cef_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/cef_error.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/index.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/recursion_limit_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/recursion_limit_error.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/types.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/unparseable_csv_error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/unparseable_csv_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/unparseable_csv_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/unparseable_csv_error.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/unsupported_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/unsupported_error.ts diff --git a/x-pack/plugins/integration_assistant/server/plugin.ts b/x-pack/platform/plugins/shared/integration_assistant/server/plugin.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/plugin.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/plugin.ts diff --git a/x-pack/plugins/integration_assistant/server/processor_types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/processor_types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/processor_types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/processor_types.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/analyze_logs_routes.ts similarity index 94% rename from x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/analyze_logs_routes.ts index 93ac55f6f712c..de6f3fc054dc6 100644 --- a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts +++ b/x-pack/platform/plugins/shared/integration_assistant/server/routes/analyze_logs_routes.ts @@ -10,7 +10,12 @@ import { getRequestAbortedSignal } from '@kbn/data-plugin/server'; import { APMTracer } from '@kbn/langchain/server/tracers/apm'; import { getLangSmithTracer } from '@kbn/langchain/server/tracers/langsmith'; import { ANALYZE_LOGS_PATH, AnalyzeLogsRequestBody, AnalyzeLogsResponse } from '../../common'; -import { ROUTE_HANDLER_TIMEOUT } from '../constants'; +import { + ACTIONS_AND_CONNECTORS_ALL_ROLE, + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ROUTE_HANDLER_TIMEOUT, +} from '../constants'; import { getLogFormatDetectionGraph } from '../graphs/log_type_detection/graph'; import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { getLLMClass, getLLMType } from '../util/llm'; @@ -39,9 +44,11 @@ export function registerAnalyzeLogsRoutes( version: '1', security: { authz: { - enabled: false, - reason: - 'This route is opted out from authorization because the privileges are not defined yet.', + requiredPrivileges: [ + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ACTIONS_AND_CONNECTORS_ALL_ROLE, + ], }, }, validate: { diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/build_integration_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.ts similarity index 88% rename from x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.ts index f62d6d55f933d..94bcbfaedaebf 100644 --- a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts +++ b/x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.ts @@ -14,6 +14,11 @@ import { withAvailability } from './with_availability'; import { isErrorThatHandlesItsOwnResponse } from '../lib/errors'; import { handleCustomErrors } from './routes_util'; import { GenerationErrorCode } from '../../common/constants'; +import { + ACTIONS_AND_CONNECTORS_ALL_ROLE, + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, +} from '../constants'; export function registerIntegrationBuilderRoutes( router: IRouter<IntegrationAssistantRouteHandlerContext> ) { @@ -27,9 +32,11 @@ export function registerIntegrationBuilderRoutes( version: '1', security: { authz: { - enabled: false, - reason: - 'This route is opted out from authorization because the privileges are not defined yet.', + requiredPrivileges: [ + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ACTIONS_AND_CONNECTORS_ALL_ROLE, + ], }, }, validate: { diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/categorization_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.ts similarity index 93% rename from x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.ts index 5f63ed9c7bf3c..72aaf1d963efb 100644 --- a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts +++ b/x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.ts @@ -14,7 +14,12 @@ import { CategorizationRequestBody, CategorizationResponse, } from '../../common'; -import { ROUTE_HANDLER_TIMEOUT } from '../constants'; +import { + ACTIONS_AND_CONNECTORS_ALL_ROLE, + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ROUTE_HANDLER_TIMEOUT, +} from '../constants'; import { getCategorizationGraph } from '../graphs/categorization'; import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { getLLMClass, getLLMType } from '../util/llm'; @@ -42,9 +47,11 @@ export function registerCategorizationRoutes( version: '1', security: { authz: { - enabled: false, - reason: - 'This route is opted out from authorization because the privileges are not defined yet.', + requiredPrivileges: [ + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ACTIONS_AND_CONNECTORS_ALL_ROLE, + ], }, }, validate: { diff --git a/x-pack/plugins/integration_assistant/server/routes/cel_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/cel_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_route.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_routes.ts similarity index 91% rename from x-pack/plugins/integration_assistant/server/routes/cel_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_routes.ts index 9ce16c3909119..63faeb6a71f26 100644 --- a/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts +++ b/x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_routes.ts @@ -10,7 +10,12 @@ import { getRequestAbortedSignal } from '@kbn/data-plugin/server'; import { APMTracer } from '@kbn/langchain/server/tracers/apm'; import { getLangSmithTracer } from '@kbn/langchain/server/tracers/langsmith'; import { CEL_INPUT_GRAPH_PATH, CelInputRequestBody, CelInputResponse } from '../../common'; -import { ROUTE_HANDLER_TIMEOUT } from '../constants'; +import { + ACTIONS_AND_CONNECTORS_ALL_ROLE, + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ROUTE_HANDLER_TIMEOUT, +} from '../constants'; import { getCelGraph } from '../graphs/cel'; import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { getLLMClass, getLLMType } from '../util/llm'; @@ -34,9 +39,11 @@ export function registerCelInputRoutes(router: IRouter<IntegrationAssistantRoute version: '1', security: { authz: { - enabled: false, - reason: - 'This route is opted out from authorization because the privileges are not defined yet.', + requiredPrivileges: [ + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ACTIONS_AND_CONNECTORS_ALL_ROLE, + ], }, }, validate: { diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/ecs_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.ts similarity index 92% rename from x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.ts index adb30d6c03fba..ff115eb8027c6 100644 --- a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts +++ b/x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.ts @@ -10,7 +10,12 @@ import { getRequestAbortedSignal } from '@kbn/data-plugin/server'; import { APMTracer } from '@kbn/langchain/server/tracers/apm'; import { getLangSmithTracer } from '@kbn/langchain/server/tracers/langsmith'; import { ECS_GRAPH_PATH, EcsMappingRequestBody, EcsMappingResponse } from '../../common'; -import { ROUTE_HANDLER_TIMEOUT } from '../constants'; +import { + ACTIONS_AND_CONNECTORS_ALL_ROLE, + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ROUTE_HANDLER_TIMEOUT, +} from '../constants'; import { getEcsGraph } from '../graphs/ecs'; import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { getLLMClass, getLLMType } from '../util/llm'; @@ -36,9 +41,11 @@ export function registerEcsRoutes(router: IRouter<IntegrationAssistantRouteHandl version: '1', security: { authz: { - enabled: false, - reason: - 'This route is opted out from authorization because the privileges are not defined yet.', + requiredPrivileges: [ + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ACTIONS_AND_CONNECTORS_ALL_ROLE, + ], }, }, validate: { diff --git a/x-pack/plugins/integration_assistant/server/routes/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/index.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/pipeline_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/pipeline_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/pipeline_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.ts similarity index 89% rename from x-pack/plugins/integration_assistant/server/routes/pipeline_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.ts index aafad454fb720..357d104c7e852 100644 --- a/x-pack/plugins/integration_assistant/server/routes/pipeline_routes.ts +++ b/x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.ts @@ -7,7 +7,12 @@ import type { IKibanaResponse, IRouter } from '@kbn/core/server'; import { CheckPipelineRequestBody, CheckPipelineResponse, CHECK_PIPELINE_PATH } from '../../common'; -import { ROUTE_HANDLER_TIMEOUT } from '../constants'; +import { + ACTIONS_AND_CONNECTORS_ALL_ROLE, + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ROUTE_HANDLER_TIMEOUT, +} from '../constants'; import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { testPipeline } from '../util/pipeline'; import { buildRouteValidationWithZod } from '../util/route_validation'; @@ -32,9 +37,11 @@ export function registerPipelineRoutes(router: IRouter<IntegrationAssistantRoute version: '1', security: { authz: { - enabled: false, - reason: - 'This route is opted out from authorization because the privileges are not defined yet.', + requiredPrivileges: [ + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ACTIONS_AND_CONNECTORS_ALL_ROLE, + ], }, }, validate: { diff --git a/x-pack/plugins/integration_assistant/server/routes/register_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/register_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/register_routes.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/related_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/related_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/related_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.ts similarity index 93% rename from x-pack/plugins/integration_assistant/server/routes/related_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.ts index d839ce2a08620..814fda4684786 100644 --- a/x-pack/plugins/integration_assistant/server/routes/related_routes.ts +++ b/x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.ts @@ -10,7 +10,12 @@ import { getRequestAbortedSignal } from '@kbn/data-plugin/server'; import { APMTracer } from '@kbn/langchain/server/tracers/apm'; import { getLangSmithTracer } from '@kbn/langchain/server/tracers/langsmith'; import { RELATED_GRAPH_PATH, RelatedRequestBody, RelatedResponse } from '../../common'; -import { ROUTE_HANDLER_TIMEOUT } from '../constants'; +import { + ACTIONS_AND_CONNECTORS_ALL_ROLE, + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ROUTE_HANDLER_TIMEOUT, +} from '../constants'; import { getRelatedGraph } from '../graphs/related'; import type { IntegrationAssistantRouteHandlerContext } from '../plugin'; import { getLLMClass, getLLMType } from '../util/llm'; @@ -36,9 +41,11 @@ export function registerRelatedRoutes(router: IRouter<IntegrationAssistantRouteH version: '1', security: { authz: { - enabled: false, - reason: - 'This route is opted out from authorization because the privileges are not defined yet.', + requiredPrivileges: [ + FLEET_ALL_ROLE, + INTEGRATIONS_ALL_ROLE, + ACTIONS_AND_CONNECTORS_ALL_ROLE, + ], }, }, validate: { diff --git a/x-pack/plugins/integration_assistant/server/routes/routes_util.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/routes_util.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/routes_util.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/routes_util.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/routes_util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/routes_util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/routes_util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/routes_util.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/with_availability.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/with_availability.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/with_availability.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/with_availability.ts diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/aws_cloudwatch.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/aws_cloudwatch.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/aws_cloudwatch.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/aws_cloudwatch.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/aws_s3.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/aws_s3.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/aws_s3.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/aws_s3.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/azure_blob_storage.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/azure_blob_storage.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/azure_blob_storage.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/azure_blob_storage.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/azure_eventhub.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/azure_eventhub.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/azure_eventhub.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/azure_eventhub.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/cel.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/cel.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/cel.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/cel.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/cloudfoundry.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/cloudfoundry.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/cloudfoundry.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/cloudfoundry.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/common.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/common.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/common.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/common.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/filestream.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/filestream.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/filestream.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/filestream.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/gcp_pubsub.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/gcp_pubsub.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/gcp_pubsub.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/gcp_pubsub.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/gcs.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/gcs.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/gcs.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/gcs.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/http_endpoint.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/http_endpoint.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/http_endpoint.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/http_endpoint.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/journald.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/journald.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/journald.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/journald.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/kafka.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/kafka.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/kafka.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/kafka.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/logfile.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/logfile.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/logfile.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/logfile.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/tcp.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/tcp.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/tcp.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/tcp.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/udp.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/udp.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/udp.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/udp.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/base_fields.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/base_fields.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/base_fields.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/base_fields.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/build.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/build.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/build.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/build.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/build_readme.md.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/build_readme.md.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/build_readme.md.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/build_readme.md.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/changelog.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/changelog.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/changelog.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/changelog.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/data_stream/fields/agent.yml b/x-pack/platform/plugins/shared/integration_assistant/server/templates/data_stream/fields/agent.yml similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/data_stream/fields/agent.yml rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/data_stream/fields/agent.yml diff --git a/x-pack/plugins/integration_assistant/server/templates/data_stream/fields/beats.yml b/x-pack/platform/plugins/shared/integration_assistant/server/templates/data_stream/fields/beats.yml similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/data_stream/fields/beats.yml rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/data_stream/fields/beats.yml diff --git a/x-pack/plugins/integration_assistant/server/templates/description_readme.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/description_readme.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/description_readme.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/description_readme.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/aws_cloudwatch_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/aws_cloudwatch_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/aws_cloudwatch_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/aws_cloudwatch_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/aws_s3_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/aws_s3_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/aws_s3_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/aws_s3_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/azure_blob_storage_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/azure_blob_storage_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/azure_blob_storage_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/azure_blob_storage_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/azure_eventhub_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/azure_eventhub_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/azure_eventhub_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/azure_eventhub_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/cel_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/cel_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/cel_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/cel_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/cloudfoundry_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/cloudfoundry_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/cloudfoundry_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/cloudfoundry_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/common_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/common_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/common_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/common_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/data_stream.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/data_stream.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/data_stream.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/data_stream.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/filestream_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/filestream_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/filestream_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/filestream_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/gcp_pubsub_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/gcp_pubsub_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/gcp_pubsub_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/gcp_pubsub_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/gcs_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/gcs_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/gcs_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/gcs_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/http_endpoint_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/http_endpoint_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/http_endpoint_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/http_endpoint_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/journald_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/journald_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/journald_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/journald_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/kafka_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/kafka_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/kafka_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/kafka_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/logfile_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/logfile_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/logfile_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/logfile_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/ssl_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/ssl_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/ssl_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/ssl_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/tcp_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/tcp_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/tcp_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/tcp_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/udp_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/udp_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/udp_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/udp_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/package_readme.md.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/package_readme.md.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/package_readme.md.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/package_readme.md.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/pipeline.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/pipeline.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/pipeline.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/pipeline.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/pipeline_tests/test_common_config.yml b/x-pack/platform/plugins/shared/integration_assistant/server/templates/pipeline_tests/test_common_config.yml similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/pipeline_tests/test_common_config.yml rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/pipeline_tests/test_common_config.yml diff --git a/x-pack/plugins/integration_assistant/server/templates/processors/append.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/append.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/processors/append.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/append.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/processors/grok.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/grok.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/processors/grok.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/grok.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/processors/kv.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/kv.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/processors/kv.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/kv.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/docker_compose.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/docker_compose.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/docker_compose.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/docker_compose.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_filestream.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_filestream.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_filestream.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_filestream.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_gcs.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_gcs.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_gcs.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_gcs.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_logfile.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_logfile.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_logfile.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_logfile.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_tcp.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_tcp.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_tcp.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_tcp.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_udp.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_udp.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_udp.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_udp.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_filestream_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_filestream_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_filestream_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_filestream_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_gcs_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_gcs_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_gcs_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_gcs_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_logfile_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_logfile_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_logfile_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_logfile_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_tcp_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_tcp_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_tcp_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_tcp_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_udp_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_udp_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_udp_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_udp_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/types.ts diff --git a/x-pack/plugins/integration_assistant/server/util/files.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/files.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/files.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/files.ts diff --git a/x-pack/plugins/integration_assistant/server/util/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/util/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/index.ts diff --git a/x-pack/plugins/integration_assistant/server/util/llm.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/llm.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/llm.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/llm.ts diff --git a/x-pack/plugins/integration_assistant/server/util/pipeline.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/pipeline.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/pipeline.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/pipeline.ts diff --git a/x-pack/plugins/integration_assistant/server/util/processors.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/processors.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/processors.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/processors.ts diff --git a/x-pack/plugins/integration_assistant/server/util/route_validation.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/route_validation.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/route_validation.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/route_validation.ts diff --git a/x-pack/plugins/integration_assistant/server/util/samples.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/samples.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/samples.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/samples.test.ts diff --git a/x-pack/plugins/integration_assistant/server/util/samples.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/samples.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/samples.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/samples.ts diff --git a/x-pack/plugins/integration_assistant/server/util/util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/util.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/tsconfig.json b/x-pack/platform/plugins/shared/integration_assistant/tsconfig.json new file mode 100644 index 0000000000000..94214e0e8fa4b --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/tsconfig.json @@ -0,0 +1,48 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "public/**/*", + "server/**/*.ts", + "common/**/*.ts", + "scripts/**/*.ts", + "__jest__/**/*", + "../../../../typings/**/*" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/config-schema", + "@kbn/langchain", + "@kbn/core-elasticsearch-server", + "@kbn/actions-plugin", + "@kbn/data-plugin", + "@kbn/i18n-react", + "@kbn/shared-ux-page-kibana-template", + "@kbn/i18n", + "@kbn/core-http-browser", + "@kbn/elastic-assistant", + "@kbn/kibana-react-plugin", + "@kbn/code-editor", + "@kbn/monaco", + "@kbn/triggers-actions-ui-plugin", + "@kbn/shared-ux-router", + "@kbn/zod-helpers", + "@kbn/stack-connectors-plugin", + "@kbn/core-analytics-browser", + "@kbn/logging-mocks", + "@kbn/licensing-plugin", + "@kbn/core-http-request-handler-context-server", + "@kbn/core-http-router-server-mocks", + "@kbn/core-http-server", + "@kbn/kibana-utils-plugin", + "@kbn/utils", + "@kbn/zod", + "@kbn/tooling-log" + ] +} diff --git a/x-pack/plugins/license_management/README.md b/x-pack/platform/plugins/shared/license_management/README.md similarity index 100% rename from x-pack/plugins/license_management/README.md rename to x-pack/platform/plugins/shared/license_management/README.md diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/add_license.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/add_license.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/add_license.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/add_license.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/license_page_header.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/license_page_header.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/license_page_header.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/license_page_header.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/start_trial.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/start_trial.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/start_trial.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/start_trial.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap diff --git a/x-pack/plugins/license_management/__jest__/add_license.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/add_license.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/add_license.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/add_license.test.js diff --git a/x-pack/plugins/license_management/__jest__/api_responses/index.js b/x-pack/platform/plugins/shared/license_management/__jest__/api_responses/index.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/api_responses/index.js rename to x-pack/platform/plugins/shared/license_management/__jest__/api_responses/index.js diff --git a/x-pack/plugins/license_management/__jest__/api_responses/upload_license.js b/x-pack/platform/plugins/shared/license_management/__jest__/api_responses/upload_license.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/api_responses/upload_license.js rename to x-pack/platform/plugins/shared/license_management/__jest__/api_responses/upload_license.js diff --git a/x-pack/plugins/license_management/__jest__/license_page_header.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/license_page_header.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/license_page_header.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/license_page_header.test.js diff --git a/x-pack/plugins/license_management/__jest__/request_trial_extension.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/request_trial_extension.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/request_trial_extension.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/request_trial_extension.test.js diff --git a/x-pack/plugins/license_management/__jest__/revert_to_basic.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/revert_to_basic.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/revert_to_basic.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/revert_to_basic.test.js diff --git a/x-pack/plugins/license_management/__jest__/start_trial.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/start_trial.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/start_trial.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/start_trial.test.js diff --git a/x-pack/plugins/license_management/__jest__/upload_license.test.tsx b/x-pack/platform/plugins/shared/license_management/__jest__/upload_license.test.tsx similarity index 100% rename from x-pack/plugins/license_management/__jest__/upload_license.test.tsx rename to x-pack/platform/plugins/shared/license_management/__jest__/upload_license.test.tsx diff --git a/x-pack/plugins/license_management/__jest__/util/index.js b/x-pack/platform/plugins/shared/license_management/__jest__/util/index.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/util/index.js rename to x-pack/platform/plugins/shared/license_management/__jest__/util/index.js diff --git a/x-pack/plugins/license_management/__jest__/util/util.js b/x-pack/platform/plugins/shared/license_management/__jest__/util/util.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/util/util.js rename to x-pack/platform/plugins/shared/license_management/__jest__/util/util.js diff --git a/x-pack/plugins/license_management/__mocks__/focus-trap-react.js b/x-pack/platform/plugins/shared/license_management/__mocks__/focus-trap-react.js similarity index 100% rename from x-pack/plugins/license_management/__mocks__/focus-trap-react.js rename to x-pack/platform/plugins/shared/license_management/__mocks__/focus-trap-react.js diff --git a/x-pack/plugins/license_management/common/constants/base_path.ts b/x-pack/platform/plugins/shared/license_management/common/constants/base_path.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/base_path.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/base_path.ts diff --git a/x-pack/plugins/license_management/common/constants/external_links.ts b/x-pack/platform/plugins/shared/license_management/common/constants/external_links.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/external_links.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/external_links.ts diff --git a/x-pack/plugins/license_management/common/constants/index.ts b/x-pack/platform/plugins/shared/license_management/common/constants/index.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/index.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/index.ts diff --git a/x-pack/plugins/license_management/common/constants/permissions.ts b/x-pack/platform/plugins/shared/license_management/common/constants/permissions.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/permissions.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/permissions.ts diff --git a/x-pack/plugins/license_management/common/constants/plugin.ts b/x-pack/platform/plugins/shared/license_management/common/constants/plugin.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/plugin.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/plugin.ts diff --git a/x-pack/platform/plugins/shared/license_management/jest.config.js b/x-pack/platform/plugins/shared/license_management/jest.config.js new file mode 100644 index 0000000000000..765ce55d2b948 --- /dev/null +++ b/x-pack/platform/plugins/shared/license_management/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/shared/license_management'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/shared/license_management', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/license_management/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/license_management/kibana.jsonc b/x-pack/platform/plugins/shared/license_management/kibana.jsonc similarity index 100% rename from x-pack/plugins/license_management/kibana.jsonc rename to x-pack/platform/plugins/shared/license_management/kibana.jsonc diff --git a/x-pack/plugins/license_management/public/application/_license_management.scss b/x-pack/platform/plugins/shared/license_management/public/application/_license_management.scss similarity index 100% rename from x-pack/plugins/license_management/public/application/_license_management.scss rename to x-pack/platform/plugins/shared/license_management/public/application/_license_management.scss diff --git a/x-pack/plugins/license_management/public/application/app.container.js b/x-pack/platform/plugins/shared/license_management/public/application/app.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/app.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/app.container.js diff --git a/x-pack/plugins/license_management/public/application/app.js b/x-pack/platform/plugins/shared/license_management/public/application/app.js similarity index 100% rename from x-pack/plugins/license_management/public/application/app.js rename to x-pack/platform/plugins/shared/license_management/public/application/app.js diff --git a/x-pack/plugins/license_management/public/application/app_context.tsx b/x-pack/platform/plugins/shared/license_management/public/application/app_context.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/app_context.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/app_context.tsx diff --git a/x-pack/plugins/license_management/public/application/app_providers.tsx b/x-pack/platform/plugins/shared/license_management/public/application/app_providers.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/app_providers.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/app_providers.tsx diff --git a/x-pack/plugins/license_management/public/application/breadcrumbs.ts b/x-pack/platform/plugins/shared/license_management/public/application/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/breadcrumbs.ts rename to x-pack/platform/plugins/shared/license_management/public/application/breadcrumbs.ts diff --git a/x-pack/plugins/license_management/public/application/components/telemetry_opt_in/index.ts b/x-pack/platform/plugins/shared/license_management/public/application/components/telemetry_opt_in/index.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/components/telemetry_opt_in/index.ts rename to x-pack/platform/plugins/shared/license_management/public/application/components/telemetry_opt_in/index.ts diff --git a/x-pack/plugins/license_management/public/application/components/telemetry_opt_in/telemetry_opt_in.tsx b/x-pack/platform/plugins/shared/license_management/public/application/components/telemetry_opt_in/telemetry_opt_in.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/components/telemetry_opt_in/telemetry_opt_in.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/components/telemetry_opt_in/telemetry_opt_in.tsx diff --git a/x-pack/plugins/license_management/public/application/index.scss b/x-pack/platform/plugins/shared/license_management/public/application/index.scss similarity index 100% rename from x-pack/plugins/license_management/public/application/index.scss rename to x-pack/platform/plugins/shared/license_management/public/application/index.scss diff --git a/x-pack/plugins/license_management/public/application/index.tsx b/x-pack/platform/plugins/shared/license_management/public/application/index.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/index.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/index.tsx diff --git a/x-pack/plugins/license_management/public/application/lib/es.ts b/x-pack/platform/plugins/shared/license_management/public/application/lib/es.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/lib/es.ts rename to x-pack/platform/plugins/shared/license_management/public/application/lib/es.ts diff --git a/x-pack/plugins/license_management/public/application/lib/telemetry.ts b/x-pack/platform/plugins/shared/license_management/public/application/lib/telemetry.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/lib/telemetry.ts rename to x-pack/platform/plugins/shared/license_management/public/application/lib/telemetry.ts diff --git a/x-pack/plugins/license_management/public/application/sections/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/add_license/add_license.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/add_license/add_license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/add_license/add_license.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/add_license/add_license.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/add_license/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/add_license/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/add_license/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/add_license/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/license_dashboard.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_dashboard.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/license_dashboard.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_dashboard.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/license_dashboard.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_dashboard.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/license_dashboard.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_dashboard.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/license_page_header/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_page_header/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/license_page_header/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_page_header/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/license_page_header/license_page_header.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_page_header/license_page_header.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/license_page_header/license_page_header.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_page_header/license_page_header.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/index.ts b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/index.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/index.ts rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/index.ts diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/start_trial.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/start_trial.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/start_trial.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/start_trial.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/start_trial.tsx b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/start_trial.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/start_trial.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/start_trial.tsx diff --git a/x-pack/plugins/license_management/public/application/sections/upload_license/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/upload_license/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/upload_license/upload_license.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/upload_license.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/upload_license/upload_license.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/upload_license.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/upload_license/upload_license.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/upload_license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/upload_license/upload_license.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/upload_license.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/add_error_message.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/add_error_message.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/add_error_message.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/add_error_message.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/add_license.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/add_license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/add_license.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/add_license.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/index.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/index.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/permissions.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/permissions.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/permissions.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/permissions.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/set_breadcrumb.ts b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/set_breadcrumb.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/set_breadcrumb.ts rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/set_breadcrumb.ts diff --git a/x-pack/plugins/license_management/public/application/store/actions/start_basic.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/start_basic.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/start_basic.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/start_basic.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/start_trial.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/start_trial.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/start_trial.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/start_trial.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/upload_license.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/upload_license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/upload_license.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/upload_license.js diff --git a/x-pack/plugins/license_management/public/application/store/index.js b/x-pack/platform/plugins/shared/license_management/public/application/store/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/index.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/index.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/index.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/license.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/license.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/license.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/license_management.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/license_management.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/license_management.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/license_management.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/permissions.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/permissions.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/permissions.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/permissions.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/start_basic_license_status.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/start_basic_license_status.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/start_basic_license_status.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/start_basic_license_status.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/trial_status.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/trial_status.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/trial_status.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/trial_status.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/upload_error_message.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/upload_error_message.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/upload_error_message.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/upload_error_message.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/upload_status.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/upload_status.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/upload_status.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/upload_status.js diff --git a/x-pack/plugins/license_management/public/application/store/store.js b/x-pack/platform/plugins/shared/license_management/public/application/store/store.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/store.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/store.js diff --git a/x-pack/plugins/license_management/public/index.ts b/x-pack/platform/plugins/shared/license_management/public/index.ts similarity index 100% rename from x-pack/plugins/license_management/public/index.ts rename to x-pack/platform/plugins/shared/license_management/public/index.ts diff --git a/x-pack/plugins/license_management/public/locator.test.ts b/x-pack/platform/plugins/shared/license_management/public/locator.test.ts similarity index 100% rename from x-pack/plugins/license_management/public/locator.test.ts rename to x-pack/platform/plugins/shared/license_management/public/locator.test.ts diff --git a/x-pack/plugins/license_management/public/locator.ts b/x-pack/platform/plugins/shared/license_management/public/locator.ts similarity index 100% rename from x-pack/plugins/license_management/public/locator.ts rename to x-pack/platform/plugins/shared/license_management/public/locator.ts diff --git a/x-pack/plugins/license_management/public/plugin.ts b/x-pack/platform/plugins/shared/license_management/public/plugin.ts similarity index 100% rename from x-pack/plugins/license_management/public/plugin.ts rename to x-pack/platform/plugins/shared/license_management/public/plugin.ts diff --git a/x-pack/plugins/license_management/public/shared_imports.ts b/x-pack/platform/plugins/shared/license_management/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/license_management/public/shared_imports.ts rename to x-pack/platform/plugins/shared/license_management/public/shared_imports.ts diff --git a/x-pack/plugins/license_management/public/types.ts b/x-pack/platform/plugins/shared/license_management/public/types.ts similarity index 100% rename from x-pack/plugins/license_management/public/types.ts rename to x-pack/platform/plugins/shared/license_management/public/types.ts diff --git a/x-pack/plugins/license_management/server/config.ts b/x-pack/platform/plugins/shared/license_management/server/config.ts similarity index 100% rename from x-pack/plugins/license_management/server/config.ts rename to x-pack/platform/plugins/shared/license_management/server/config.ts diff --git a/x-pack/plugins/license_management/server/index.ts b/x-pack/platform/plugins/shared/license_management/server/index.ts similarity index 100% rename from x-pack/plugins/license_management/server/index.ts rename to x-pack/platform/plugins/shared/license_management/server/index.ts diff --git a/x-pack/plugins/license_management/server/lib/license.ts b/x-pack/platform/plugins/shared/license_management/server/lib/license.ts similarity index 100% rename from x-pack/plugins/license_management/server/lib/license.ts rename to x-pack/platform/plugins/shared/license_management/server/lib/license.ts diff --git a/x-pack/plugins/license_management/server/lib/permissions.ts b/x-pack/platform/plugins/shared/license_management/server/lib/permissions.ts similarity index 100% rename from x-pack/plugins/license_management/server/lib/permissions.ts rename to x-pack/platform/plugins/shared/license_management/server/lib/permissions.ts diff --git a/x-pack/plugins/license_management/server/lib/start_basic.ts b/x-pack/platform/plugins/shared/license_management/server/lib/start_basic.ts similarity index 100% rename from x-pack/plugins/license_management/server/lib/start_basic.ts rename to x-pack/platform/plugins/shared/license_management/server/lib/start_basic.ts diff --git a/x-pack/plugins/license_management/server/lib/start_trial.ts b/x-pack/platform/plugins/shared/license_management/server/lib/start_trial.ts similarity index 100% rename from x-pack/plugins/license_management/server/lib/start_trial.ts rename to x-pack/platform/plugins/shared/license_management/server/lib/start_trial.ts diff --git a/x-pack/plugins/license_management/server/plugin.ts b/x-pack/platform/plugins/shared/license_management/server/plugin.ts similarity index 100% rename from x-pack/plugins/license_management/server/plugin.ts rename to x-pack/platform/plugins/shared/license_management/server/plugin.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/index.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/index.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/index.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/index.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/register_license_route.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_license_route.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/register_license_route.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_license_route.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/register_permissions_route.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_permissions_route.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/register_permissions_route.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_permissions_route.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/register_start_basic_route.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_basic_route.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/register_start_basic_route.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_basic_route.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/register_start_trial_routes.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_trial_routes.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/register_start_trial_routes.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_trial_routes.ts diff --git a/x-pack/plugins/license_management/server/routes/helpers.ts b/x-pack/platform/plugins/shared/license_management/server/routes/helpers.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/helpers.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/helpers.ts diff --git a/x-pack/plugins/license_management/server/routes/index.ts b/x-pack/platform/plugins/shared/license_management/server/routes/index.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/index.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/shared_imports.ts b/x-pack/platform/plugins/shared/license_management/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/shared_imports.ts rename to x-pack/platform/plugins/shared/license_management/server/shared_imports.ts diff --git a/x-pack/plugins/license_management/server/types.ts b/x-pack/platform/plugins/shared/license_management/server/types.ts similarity index 100% rename from x-pack/plugins/license_management/server/types.ts rename to x-pack/platform/plugins/shared/license_management/server/types.ts diff --git a/x-pack/platform/plugins/shared/license_management/tsconfig.json b/x-pack/platform/plugins/shared/license_management/tsconfig.json new file mode 100644 index 0000000000000..053bd88b1912c --- /dev/null +++ b/x-pack/platform/plugins/shared/license_management/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "public/**/*", + "server/**/*", + "common/**/*", + "__jest__/**/*", + "__mocks__/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/kibana-react-plugin", + "@kbn/telemetry-management-section-plugin", + "@kbn/management-plugin", + "@kbn/telemetry-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/licensing-plugin", + "@kbn/features-plugin", + "@kbn/security-plugin", + "@kbn/i18n-react", + "@kbn/i18n", + "@kbn/config-schema", + "@kbn/test-jest-helpers", + "@kbn/shared-ux-router", + "@kbn/utility-types", + "@kbn/share-plugin", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/plugins/shared/ml/common/types/anomaly_detection_jobs/summary_job.ts b/x-pack/platform/plugins/shared/ml/common/types/anomaly_detection_jobs/summary_job.ts index 4dace0284e011..1609c473dffc1 100644 --- a/x-pack/platform/plugins/shared/ml/common/types/anomaly_detection_jobs/summary_job.ts +++ b/x-pack/platform/plugins/shared/ml/common/types/anomaly_detection_jobs/summary_job.ts @@ -169,18 +169,20 @@ export interface AuditMessage { export type MlSummaryJobs = MlSummaryJob[]; +export interface MlJobTimeRange { + from: number; + to: number; + fromPx: number; + toPx: number; + fromMoment: Moment | null; + toMoment: Moment | null; + widthPx: number | null; + label?: string; +} + export interface MlJobWithTimeRange extends CombinedJobWithStats { id: string; isRunning?: boolean; isNotSingleMetricViewerJobMessage?: string; - timeRange: { - from: number; - to: number; - fromPx: number; - toPx: number; - fromMoment: Moment; - toMoment: Moment; - widthPx: number; - label: string; - }; + timeRange: MlJobTimeRange; } diff --git a/x-pack/platform/plugins/shared/ml/common/types/management.ts b/x-pack/platform/plugins/shared/ml/common/types/management.ts index 51685435296d9..98d1fe166534d 100644 --- a/x-pack/platform/plugins/shared/ml/common/types/management.ts +++ b/x-pack/platform/plugins/shared/ml/common/types/management.ts @@ -29,7 +29,7 @@ export interface AnalyticsManagementItems { export interface TrainedModelsManagementItems { id: string; description: string; - state: estypes.MlDeploymentState | ''; + state: estypes.MlDeploymentAssignmentState | ''; type: Array<string | undefined>; spaces: string[]; } diff --git a/x-pack/platform/plugins/shared/ml/common/util/datafeed_utils.ts b/x-pack/platform/plugins/shared/ml/common/util/datafeed_utils.ts index 9f66ac143ffe1..31c526a8b1706 100644 --- a/x-pack/platform/plugins/shared/ml/common/util/datafeed_utils.ts +++ b/x-pack/platform/plugins/shared/ml/common/util/datafeed_utils.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { omit } from 'lodash'; import type { Aggregation, Datafeed } from '../types/anomaly_detection_jobs'; export function getAggregations<T>(obj: any): T | undefined { @@ -18,3 +19,10 @@ export const getDatafeedAggregations = ( ): Aggregation | undefined => { return getAggregations<Aggregation>(datafeedConfig); }; + +export function getIndicesOptions(datafeedConfig?: Datafeed) { + // remove ignore_throttled from indices_options to avoid deprecation warnings in the logs + return datafeedConfig?.indices_options + ? omit(datafeedConfig.indices_options, 'ignore_throttled') + : {}; +} diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.js b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.js deleted file mode 100644 index b0fac87389e44..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.js +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { PropTypes } from 'prop-types'; -import { EuiFlexItem, EuiLink, EuiText } from '@elastic/eui'; -import { JobSelectorBadge } from '../job_selector_badge'; -import { i18n } from '@kbn/i18n'; - -export function IdBadges({ limit, maps, onLinkClick, selectedIds, showAllBarBadges }) { - const badges = []; - const currentGroups = []; - // Create group badges. Skip job ids here. - for (let i = 0; i < selectedIds.length; i++) { - const currentId = selectedIds[i]; - if (maps.groupsMap[currentId] !== undefined) { - currentGroups.push(currentId); - - badges.push( - <EuiFlexItem grow={false} key={currentId}> - <JobSelectorBadge - id={currentId} - isGroup={true} - numJobs={maps.groupsMap[currentId].length} - /> - </EuiFlexItem> - ); - } else { - continue; - } - } - // Create jobId badges for jobs with no groups or with groups not selected - for (let i = 0; i < selectedIds.length; i++) { - const currentId = selectedIds[i]; - if (maps.groupsMap[currentId] === undefined) { - const jobGroups = maps.jobsMap[currentId] || []; - - if (jobGroups.some((g) => currentGroups.includes(g)) === false) { - badges.push( - <EuiFlexItem grow={false} key={currentId}> - <JobSelectorBadge id={currentId} /> - </EuiFlexItem> - ); - } else { - continue; - } - } else { - continue; - } - } - - if (showAllBarBadges || badges.length <= limit) { - if (badges.length > limit) { - badges.push( - <EuiLink key="more-badges-bar-link" onClick={onLinkClick}> - <EuiText grow={false} size="xs"> - {i18n.translate('xpack.ml.jobSelector.hideBarBadges', { - defaultMessage: 'Hide', - })} - </EuiText> - </EuiLink> - ); - } - - return <>{badges}</>; - } else { - const overFlow = badges.length - limit; - - badges.splice(limit); - badges.push( - <EuiLink key="more-badges-bar-link" onClick={onLinkClick}> - <EuiText grow={false} size="xs"> - {i18n.translate('xpack.ml.jobSelector.showBarBadges', { - defaultMessage: `And {overFlow} more`, - values: { overFlow }, - })} - </EuiText> - </EuiLink> - ); - - return <>{badges}</>; - } -} -IdBadges.propTypes = { - limit: PropTypes.number, - maps: PropTypes.shape({ - jobsMap: PropTypes.object, - groupsMap: PropTypes.object, - }), - onLinkClick: PropTypes.func, - selectedIds: PropTypes.array, - showAllBarBadges: PropTypes.bool, -}; diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.test.js b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.test.js deleted file mode 100644 index cd99398c578a3..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.test.js +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { render } from '@testing-library/react'; // eslint-disable-line import/no-extraneous-dependencies -import { IdBadges } from './id_badges'; - -const props = { - limit: 2, - maps: { - groupsMap: { - group1: ['job1', 'job2'], - group2: ['job3'], - }, - jobsMap: { - job1: ['group1'], - job2: ['group1'], - job3: ['group2'], - job4: [], - }, - }, - onLinkClick: jest.fn(), - selectedIds: ['group1', 'job1', 'job3'], - showAllBarBadges: false, -}; - -const overLimitProps = { ...props, selectedIds: ['group1', 'job1', 'job3', 'job4'] }; - -describe('IdBadges', () => { - test('When group selected renders groupId and not corresponding jobIds', () => { - const { getByText, queryByText } = render(<IdBadges {...props} />); - // group1 badge should be present - const groupId = getByText(/group1/); - expect(groupId).toBeDefined(); - // job1 is in group1 so it should not show up since group1 is selected - const jobId = queryByText(/job1/); - expect(jobId).toBeNull(); - }); - - describe('showAllBarBadges is false', () => { - test('shows link to show more badges if selection is over limit', () => { - const { getByText } = render(<IdBadges {...overLimitProps} />); - const showMoreLink = getByText('And 1 more'); - expect(showMoreLink).toBeDefined(); - }); - - test('does not show link to show more badges if selection is under limit', () => { - const { queryByText } = render(<IdBadges {...props} />); - const showMoreLink = queryByText(/ more/); - expect(showMoreLink).toBeNull(); - }); - }); - - describe('showAllBarBadges is true', () => { - const overLimitShowAllProps = { - ...props, - showAllBarBadges: true, - selectedIds: ['group1', 'job1', 'job3', 'job4'], - }; - - test('shows all badges when selection is over limit', () => { - const { getByText } = render(<IdBadges {...overLimitShowAllProps} />); - const group1 = getByText(/group1/); - const job3 = getByText(/job3/); - const job4 = getByText(/job4/); - expect(group1).toBeDefined(); - expect(job3).toBeDefined(); - expect(job4).toBeDefined(); - }); - - test('shows hide link when selection is over limit', () => { - const { getByText, queryByText } = render(<IdBadges {...overLimitShowAllProps} />); - const showMoreLink = queryByText(/ more/); - expect(showMoreLink).toBeNull(); - - const hideLink = getByText('Hide'); - expect(hideLink).toBeDefined(); - }); - }); -}); diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.test.tsx b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.test.tsx new file mode 100644 index 0000000000000..424c3d8231863 --- /dev/null +++ b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.test.tsx @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import type { IdBadgesProps } from './id_badges'; +import { IdBadges } from './id_badges'; + +const props: IdBadgesProps = { + limit: 2, + selectedGroups: [ + { + groupId: 'group1', + jobIds: ['job1', 'job2'], + }, + { + groupId: 'group2', + jobIds: ['job3'], + }, + ], + selectedJobIds: ['job1', 'job2', 'job3'], + onLinkClick: jest.fn(), + showAllBarBadges: false, +}; + +const overLimitProps: IdBadgesProps = { ...props, selectedJobIds: ['job4'] }; + +describe('IdBadges', () => { + test('When group selected renders groupId and not corresponding jobIds', () => { + const { getByText, queryByText } = render(<IdBadges {...props} />); + // group1 badge should be present + const groupId = getByText(/group1/); + expect(groupId).toBeDefined(); + // job1 is in group1 so it should not show up since group1 is selected + const jobId = queryByText(/job1/); + expect(jobId).toBeNull(); + }); + + describe('showAllBarBadges is false', () => { + test('shows link to show more badges if selection is over limit', () => { + const { getByText } = render(<IdBadges {...overLimitProps} />); + const showMoreLink = getByText('And 1 more'); + expect(showMoreLink).toBeDefined(); + }); + + test('does not show link to show more badges if selection is under limit', () => { + const { queryByText } = render(<IdBadges {...props} />); + const showMoreLink = queryByText(/ more/); + expect(showMoreLink).toBeNull(); + }); + }); + + describe('showAllBarBadges is true', () => { + const overLimitShowAllProps: IdBadgesProps = { + ...props, + showAllBarBadges: true, + selectedGroups: [ + { + groupId: 'group1', + jobIds: ['job1', 'job2'], + }, + ], + selectedJobIds: ['job3', 'job4'], + }; + + test('shows all badges when selection is over limit', () => { + const { getByText } = render(<IdBadges {...overLimitShowAllProps} />); + const group1 = getByText(/group1/); + const job3 = getByText(/job3/); + const job4 = getByText(/job4/); + expect(group1).toBeDefined(); + expect(job3).toBeDefined(); + expect(job4).toBeDefined(); + }); + + test('shows hide link when selection is over limit', () => { + const { getByText, queryByText } = render(<IdBadges {...overLimitShowAllProps} />); + const showMoreLink = queryByText(/ more/); + expect(showMoreLink).toBeNull(); + + const hideLink = getByText('Hide'); + expect(hideLink).toBeDefined(); + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.tsx b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.tsx new file mode 100644 index 0000000000000..b03ece5aaac55 --- /dev/null +++ b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/id_badges.tsx @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiFlexItem, EuiLink, EuiText } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { JobSelectorBadge } from '../job_selector_badge'; +import type { GroupObj } from '../job_selector'; + +export interface IdBadgesProps { + limit: number; + selectedGroups: GroupObj[]; + selectedJobIds: string[]; + onLinkClick: () => void; + showAllBarBadges: boolean; +} + +export function IdBadges({ + limit, + selectedGroups, + onLinkClick, + selectedJobIds, + showAllBarBadges, +}: IdBadgesProps) { + const badges = []; + + // Create group badges. Skip job ids here. + for (let i = 0; i < selectedGroups.length; i++) { + const currentGroup = selectedGroups[i]; + badges.push( + <EuiFlexItem grow={false} key={currentGroup.groupId}> + <JobSelectorBadge + id={currentGroup.groupId} + isGroup={true} + numJobs={currentGroup.jobIds.length} + /> + </EuiFlexItem> + ); + } + // Create badges for jobs with no groups + for (let i = 0; i < selectedJobIds.length; i++) { + const currentId = selectedJobIds[i]; + if (selectedGroups.some((g) => g.jobIds.includes(currentId))) { + continue; + } + badges.push( + <EuiFlexItem grow={false} key={currentId}> + <JobSelectorBadge id={currentId} /> + </EuiFlexItem> + ); + } + + if (showAllBarBadges || badges.length <= limit) { + if (badges.length > limit) { + badges.push( + <EuiLink key="more-badges-bar-link" onClick={onLinkClick}> + <EuiText grow={false} size="xs"> + {i18n.translate('xpack.ml.jobSelector.hideBarBadges', { + defaultMessage: 'Hide', + })} + </EuiText> + </EuiLink> + ); + } + + return <>{badges}</>; + } else { + const overFlow = badges.length - limit; + + badges.splice(limit); + badges.push( + <EuiLink key="more-badges-bar-link" onClick={onLinkClick}> + <EuiText grow={false} size="xs"> + {i18n.translate('xpack.ml.jobSelector.showBarBadges', { + defaultMessage: `And {overFlow} more`, + values: { overFlow }, + })} + </EuiText> + </EuiLink> + ); + + return <>{badges}</>; + } +} diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/index.js b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/index.ts similarity index 100% rename from x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/index.js rename to x-pack/platform/plugins/shared/ml/public/application/components/job_selector/id_badges/index.ts diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_select_service_utils.ts b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_select_service_utils.ts index 26110819fd1ed..47507a1e760a4 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_select_service_utils.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_select_service_utils.ts @@ -11,9 +11,10 @@ import d3 from 'd3'; import type { Dictionary } from '../../../../common/types/common'; import type { MlJobWithTimeRange } from '../../../../common/types/anomaly_detection_jobs'; +import type { MlJobGroupWithTimeRange } from './job_selector_flyout'; export function getGroupsFromJobs(jobs: MlJobWithTimeRange[]) { - const groups: Dictionary<any> = {}; + const groups: Dictionary<MlJobGroupWithTimeRange> = {}; const groupsMap: Dictionary<any> = {}; jobs.forEach((job) => { @@ -86,7 +87,7 @@ export function getTimeRangeFromSelection(jobs: MlJobWithTimeRange[], selection: if (jobs.length > 0) { const times: number[] = []; jobs.forEach((job) => { - if (selection.includes(job.job_id)) { + if (selection.includes(job.job_id) || selection.some((s) => job.groups?.includes(s))) { if (job.timeRange.from !== undefined) { times.push(job.timeRange.from); } diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_selector.tsx b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_selector.tsx index 063aa303944be..848da20c66e65 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_selector.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_selector.tsx @@ -16,7 +16,6 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { useUrlState } from '@kbn/ml-url-state'; import './_index.scss'; import { useStorage } from '@kbn/ml-local-storage'; @@ -29,7 +28,7 @@ import type { MlJobWithTimeRange } from '../../../../common/types/anomaly_detect import { ML_APPLY_TIME_RANGE_CONFIG } from '../../../../common/types/storage'; import { FeedBackButton } from '../feedback_button'; -interface GroupObj { +export interface GroupObj { groupId: string; jobIds: string[]; } @@ -78,6 +77,15 @@ export interface JobSelectorProps { dateFormatTz: string; singleSelection: boolean; timeseriesOnly: boolean; + onSelectionChange?: ({ + jobIds, + time, + }: { + jobIds: string[]; + time?: { from: string; to: string }; + }) => void; + selectedJobIds?: string[]; + selectedGroups?: GroupObj[]; } export interface JobSelectionMaps { @@ -85,23 +93,23 @@ export interface JobSelectionMaps { groupsMap: Dictionary<string[]>; } -export function JobSelector({ dateFormatTz, singleSelection, timeseriesOnly }: JobSelectorProps) { - const [globalState, setGlobalState] = useUrlState('_g'); +export function JobSelector({ + dateFormatTz, + singleSelection, + timeseriesOnly, + selectedJobIds = [], + selectedGroups = [], + onSelectionChange, +}: JobSelectorProps) { const [applyTimeRangeConfig, setApplyTimeRangeConfig] = useStorage( ML_APPLY_TIME_RANGE_CONFIG, true ); - const selectedJobIds = globalState?.ml?.jobIds ?? []; - const selectedGroups = globalState?.ml?.groups ?? []; - - const [maps, setMaps] = useState<JobSelectionMaps>({ - groupsMap: getInitialGroupsMap(selectedGroups), - jobsMap: {}, - }); const [selectedIds, setSelectedIds] = useState( mergeSelection(selectedJobIds, selectedGroups, singleSelection) ); + const [showAllBarBadges, setShowAllBarBadges] = useState(false); const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); @@ -124,20 +132,13 @@ export function JobSelector({ dateFormatTz, singleSelection, timeseriesOnly }: J } const applySelection: JobSelectorFlyoutProps['onSelectionConfirmed'] = useCallback( - ({ newSelection, jobIds, groups: newGroups, time }) => { + ({ newSelection, jobIds, time }) => { setSelectedIds(newSelection); - setGlobalState({ - ml: { - jobIds, - groups: newGroups, - }, - ...(time !== undefined ? { time } : {}), - }); - + onSelectionChange?.({ jobIds, time }); closeFlyout(); }, - [setGlobalState, setSelectedIds] + [onSelectionChange] ); function renderJobSelectionBar() { @@ -155,9 +156,9 @@ export function JobSelector({ dateFormatTz, singleSelection, timeseriesOnly }: J > <IdBadges limit={BADGE_LIMIT} - maps={maps} onLinkClick={() => setShowAllBarBadges(!showAllBarBadges)} - selectedIds={selectedIds} + selectedJobIds={selectedJobIds} + selectedGroups={selectedGroups} showAllBarBadges={showAllBarBadges} /> </EuiFlexGroup> @@ -211,9 +212,7 @@ export function JobSelector({ dateFormatTz, singleSelection, timeseriesOnly }: J singleSelection={singleSelection} selectedIds={selectedIds} onSelectionConfirmed={applySelection} - onJobsFetched={setMaps} onFlyoutClose={closeFlyout} - maps={maps} applyTimeRangeConfig={applyTimeRangeConfig} onTimeRangeConfigChange={setApplyTimeRangeConfig} /> diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_selector_flyout.tsx b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_selector_flyout.tsx index 02fb52c120303..4684ef1e63b43 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_selector_flyout.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/job_selector_flyout.tsx @@ -29,7 +29,10 @@ import { getTimeRangeFromSelection, normalizeTimes, } from './job_select_service_utils'; -import type { MlJobWithTimeRange } from '../../../../common/types/anomaly_detection_jobs'; +import type { + MlJobTimeRange, + MlJobWithTimeRange, +} from '../../../../common/types/anomaly_detection_jobs'; import { useMlKibana } from '../../contexts/kibana'; import type { JobSelectionMaps } from './job_selector'; @@ -39,7 +42,6 @@ export const DEFAULT_GANTT_BAR_WIDTH = 299; // pixels export interface JobSelectionResult { newSelection: string[]; jobIds: string[]; - groups: Array<{ groupId: string; jobIds: string[] }>; time: { from: string; to: string } | undefined; } @@ -52,12 +54,17 @@ export interface JobSelectorFlyoutProps { onSelectionConfirmed: (payload: JobSelectionResult) => void; singleSelection: boolean; timeseriesOnly: boolean; - maps: JobSelectionMaps; withTimeRangeSelector?: boolean; applyTimeRangeConfig?: boolean; onTimeRangeConfigChange?: (v: boolean) => void; } +export interface MlJobGroupWithTimeRange { + id: string; + jobIds: string[]; + timeRange: MlJobTimeRange; +} + export const JobSelectorFlyoutContent: FC<JobSelectorFlyoutProps> = ({ dateFormatTz, selectedIds = [], @@ -66,7 +73,6 @@ export const JobSelectorFlyoutContent: FC<JobSelectorFlyoutProps> = ({ onJobsFetched, onSelectionConfirmed, onFlyoutClose, - maps, applyTimeRangeConfig, onTimeRangeConfigChange, withTimeRangeSelector = true, @@ -83,42 +89,37 @@ export const JobSelectorFlyoutContent: FC<JobSelectorFlyoutProps> = ({ const [isLoading, setIsLoading] = useState(true); const [showAllBadges, setShowAllBadges] = useState(false); const [jobs, setJobs] = useState<MlJobWithTimeRange[]>([]); - const [groups, setGroups] = useState<any[]>([]); + const [groups, setGroups] = useState<MlJobGroupWithTimeRange[]>([]); + const [ganttBarWidth, setGanttBarWidth] = useState(DEFAULT_GANTT_BAR_WIDTH); - const [jobGroupsMaps, setJobGroupsMaps] = useState(maps); const flyoutEl = useRef<HTMLElement | null>(null); const applySelection = useCallback(() => { - // allNewSelection will be a list of all job ids (including those from groups) selected from the table - const allNewSelection: string[] = []; - const groupSelection: Array<{ groupId: string; jobIds: string[] }> = []; + const selectedGroupIds = newSelection.filter((id) => groups.some((group) => group.id === id)); - newSelection.forEach((id) => { - if (jobGroupsMaps.groupsMap[id] !== undefined) { - // Push all jobs from selected groups into the newSelection list - allNewSelection.push(...jobGroupsMaps.groupsMap[id]); - // if it's a group - push group obj to set in global state - groupSelection.push({ groupId: id, jobIds: jobGroupsMaps.groupsMap[id] }); - } else { - allNewSelection.push(id); - } - }); - // create a Set to remove duplicate values - const allNewSelectionUnique = Array.from(new Set(allNewSelection)); + const jobsInSelectedGroups = [ + ...new Set( + groups + .filter((group) => selectedGroupIds.includes(group.id)) + .flatMap((group) => group.jobIds) + ), + ]; + + const standaloneJobs = newSelection.filter( + (id) => !selectedGroupIds.includes(id) && !jobsInSelectedGroups.includes(id) + ); - const time = applyTimeRangeConfig - ? getTimeRangeFromSelection(jobs, allNewSelectionUnique) - : undefined; + const finalSelection = [...selectedGroupIds, ...standaloneJobs]; + const time = applyTimeRangeConfig ? getTimeRangeFromSelection(jobs, finalSelection) : undefined; onSelectionConfirmed({ - newSelection: allNewSelectionUnique, - jobIds: allNewSelectionUnique, - groups: groupSelection, + newSelection: finalSelection, + jobIds: finalSelection, time, }); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [onSelectionConfirmed, newSelection, jobGroupsMaps, applyTimeRangeConfig]); + }, [onSelectionConfirmed, newSelection, applyTimeRangeConfig]); function removeId(id: string) { setNewSelection(newSelection.filter((item) => item !== id)); @@ -168,7 +169,6 @@ export const JobSelectorFlyoutContent: FC<JobSelectorFlyoutProps> = ({ const { groups: groupsWithTimerange, groupsMap } = getGroupsFromJobs(normalizedJobs); setJobs(normalizedJobs); setGroups(groupsWithTimerange); - setJobGroupsMaps({ groupsMap, jobsMap: resp.jobsMap }); if (onJobsFetched) { onJobsFetched({ groupsMap, jobsMap: resp.jobsMap }); @@ -215,7 +215,7 @@ export const JobSelectorFlyoutContent: FC<JobSelectorFlyoutProps> = ({ <EuiFlexGroup wrap responsive={false} gutterSize="xs" alignItems="center"> <NewSelectionIdBadges limit={BADGE_LIMIT} - maps={jobGroupsMaps} + groups={groups} newSelection={newSelection} onDeleteClick={removeId} onLinkClick={() => setShowAllBadges(!showAllBadges)} diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.test.js b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.test.js deleted file mode 100644 index 4ff3e992c6e19..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.test.js +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { render } from '@testing-library/react'; // eslint-disable-line import/no-extraneous-dependencies -import { NewSelectionIdBadges } from './new_selection_id_badges'; - -const props = { - limit: 2, - maps: { - groupsMap: { - group1: ['job1', 'job2'], - group2: ['job3'], - }, - }, - onLinkClick: jest.fn(), - onDeleteClick: jest.fn(), - newSelection: ['group1', 'job1', 'job3'], - showAllBadges: false, -}; - -describe('NewSelectionIdBadges', () => { - describe('showAllBarBadges is false', () => { - test('shows link to show more badges if selection is over limit', () => { - const { getByText } = render(<NewSelectionIdBadges {...props} />); - const showMoreLink = getByText('And 1 more'); - expect(showMoreLink).toBeDefined(); - }); - - test('does not show link to show more badges if selection is within limit', () => { - const underLimitProps = { ...props, newSelection: ['group1', 'job1'] }; - const { queryByText } = render(<NewSelectionIdBadges {...underLimitProps} />); - const showMoreLink = queryByText(/ more/); - expect(showMoreLink).toBeNull(); - }); - }); - - describe('showAllBarBadges is true', () => { - const showAllTrueProps = { - ...props, - showAllBadges: true, - }; - - test('shows all badges when selection is over limit', () => { - const { getByText } = render(<NewSelectionIdBadges {...showAllTrueProps} />); - const group1 = getByText(/group1/); - const job1 = getByText(/job1/); - const job3 = getByText(/job3/); - expect(group1).toBeDefined(); - expect(job1).toBeDefined(); - expect(job3).toBeDefined(); - }); - - test('shows hide link when selection is over limit', () => { - const { getByText, queryByText } = render(<NewSelectionIdBadges {...showAllTrueProps} />); - const showMoreLink = queryByText(/ more/); - expect(showMoreLink).toBeNull(); - - const hideLink = getByText('Hide'); - expect(hideLink).toBeDefined(); - }); - }); -}); diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.test.tsx b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.test.tsx new file mode 100644 index 0000000000000..101c6f53d33fd --- /dev/null +++ b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.test.tsx @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import type { NewSelectionIdBadgesProps } from './new_selection_id_badges'; +import { NewSelectionIdBadges } from './new_selection_id_badges'; + +const props: NewSelectionIdBadgesProps = { + limit: 2, + groups: [ + { + id: 'group1', + jobIds: ['job1', 'job2'], + timeRange: { + from: 0, + to: 0, + fromPx: 0, + toPx: 0, + fromMoment: null, + toMoment: null, + widthPx: 0, + }, + }, + { + id: 'group2', + jobIds: ['job3', 'job4'], + timeRange: { + from: 0, + to: 0, + fromPx: 0, + toPx: 0, + fromMoment: null, + toMoment: null, + widthPx: 0, + }, + }, + ], + onLinkClick: jest.fn(), + onDeleteClick: jest.fn(), + newSelection: ['group1', 'job1', 'job3'], + showAllBadges: false, +}; + +describe('NewSelectionIdBadges', () => { + describe('showAllBarBadges is false', () => { + test('shows link to show more badges if selection is over limit', () => { + const { getByText } = render(<NewSelectionIdBadges {...props} />); + const showMoreLink = getByText('And 1 more'); + expect(showMoreLink).toBeDefined(); + }); + + test('does not show link to show more badges if selection is within limit', () => { + const underLimitProps = { ...props, newSelection: ['group1', 'job1'] }; + const { queryByText } = render(<NewSelectionIdBadges {...underLimitProps} />); + const showMoreLink = queryByText(/ more/); + expect(showMoreLink).toBeNull(); + }); + }); + + describe('showAllBarBadges is true', () => { + const showAllTrueProps = { + ...props, + showAllBadges: true, + }; + + test('shows all badges when selection is over limit', () => { + const { getByText } = render(<NewSelectionIdBadges {...showAllTrueProps} />); + const group1 = getByText(/group1/); + const job1 = getByText(/job1/); + const job3 = getByText(/job3/); + expect(group1).toBeDefined(); + expect(job1).toBeDefined(); + expect(job3).toBeDefined(); + }); + + test('shows hide link when selection is over limit', () => { + const { getByText, queryByText } = render(<NewSelectionIdBadges {...showAllTrueProps} />); + const showMoreLink = queryByText(/ more/); + expect(showMoreLink).toBeNull(); + + const hideLink = getByText('Hide'); + expect(hideLink).toBeDefined(); + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.tsx b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.tsx index 71db8bdbbf85a..06c53f427e39a 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/new_selection_id_badges/new_selection_id_badges.tsx @@ -10,24 +10,24 @@ import React from 'react'; import { EuiFlexItem, EuiLink, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { JobSelectorBadge } from '../job_selector_badge'; -import type { JobSelectionMaps } from '../job_selector'; +import type { MlJobGroupWithTimeRange } from '../job_selector_flyout'; -interface NewSelectionIdBadgesProps { +export interface NewSelectionIdBadgesProps { limit: number; - maps: JobSelectionMaps; newSelection: string[]; onDeleteClick?: Function; onLinkClick?: MouseEventHandler<HTMLAnchorElement>; showAllBadges?: boolean; + groups: MlJobGroupWithTimeRange[]; } export const NewSelectionIdBadges: FC<NewSelectionIdBadgesProps> = ({ limit, - maps, newSelection, onDeleteClick, onLinkClick, showAllBadges, + groups, }) => { const badges = []; @@ -41,7 +41,7 @@ export const NewSelectionIdBadges: FC<NewSelectionIdBadgesProps> = ({ <JobSelectorBadge id={newSelection[i]} icon={true} - isGroup={maps.groupsMap[newSelection[i]] !== undefined} + isGroup={groups.some((g) => g.id === newSelection[i])} removeId={onDeleteClick} /> </EuiFlexItem> diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/use_job_selection.ts b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/use_job_selection.ts index 51d1882084d3e..87914c25f944b 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/use_job_selection.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/components/job_selector/use_job_selection.ts @@ -5,43 +5,13 @@ * 2.0. */ -import { difference } from 'lodash'; import { useEffect, useMemo } from 'react'; - +import useObservable from 'react-use/lib/useObservable'; import { i18n } from '@kbn/i18n'; -import { useUrlState } from '@kbn/ml-url-state'; - import type { MlJobWithTimeRange } from '../../../../common/types/anomaly_detection_jobs'; - import { useNotifications } from '../../contexts/kibana'; import { useJobSelectionFlyout } from '../../contexts/ml/use_job_selection_flyout'; - -// check that the ids read from the url exist by comparing them to the -// jobs loaded via mlJobsService. -function getInvalidJobIds(jobs: MlJobWithTimeRange[], ids: string[]) { - return ids.filter((id) => { - const jobExists = jobs.some((job) => job.job_id === id); - return jobExists === false && id !== '*'; - }); -} - -// This is useful when redirecting from dashboards where groupIds are treated as jobIds -const getJobIdsFromGroups = (jobIds: string[], jobs: MlJobWithTimeRange[]) => { - const result = new Set<string>(); - - jobIds.forEach((id) => { - const jobsInGroup = jobs.filter((job) => job.groups?.includes(id)); - - if (jobsInGroup.length > 0) { - jobsInGroup.forEach((job) => result.add(job.job_id)); - } else { - // If it's not a group ID, keep it (regardless of whether it's valid or not) - result.add(id); - } - }); - - return Array.from(result); -}; +import { useAnomalyExplorerContext } from '../../explorer/anomaly_explorer_context'; export interface JobSelection { jobIds: string[]; @@ -49,67 +19,52 @@ export interface JobSelection { } export const useJobSelection = (jobs: MlJobWithTimeRange[]) => { - const [globalState, setGlobalState] = useUrlState('_g'); const { toasts: toastNotifications } = useNotifications(); + const { anomalyExplorerCommonStateService } = useAnomalyExplorerContext(); - const getJobSelection = useJobSelectionFlyout(); + const selectedJobs = useObservable( + anomalyExplorerCommonStateService.selectedJobs$, + anomalyExplorerCommonStateService.selectedJobs + ); + const invalidJobIds = useObservable( + anomalyExplorerCommonStateService.invalidJobIds$, + anomalyExplorerCommonStateService.invalidJobIds + ); - const tmpIds = useMemo(() => { - const ids = getJobIdsFromGroups(globalState?.ml?.jobIds || [], jobs); - return (typeof ids === 'string' ? [ids] : ids).map((id: string) => String(id)); - }, [globalState?.ml?.jobIds, jobs]); - - const invalidIds = useMemo(() => { - return getInvalidJobIds(jobs, tmpIds); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [tmpIds]); - - const validIds = useMemo(() => { - const res = difference(tmpIds, invalidIds); - res.sort(); - return res; - }, [tmpIds, invalidIds]); - - const jobSelection: JobSelection = useMemo(() => { - const selectedGroups = globalState?.ml?.groups ?? []; - return { jobIds: validIds, selectedGroups }; - }, [validIds, globalState?.ml?.groups]); + const getJobSelection = useJobSelectionFlyout(); + const selectedIds = useMemo(() => { + return selectedJobs?.map((j) => j.id); + }, [selectedJobs]); useEffect(() => { - if (invalidIds.length > 0) { + if (invalidJobIds.length > 0) { toastNotifications.addWarning( i18n.translate('xpack.ml.jobSelect.requestedJobsDoesNotExistWarningMessage', { defaultMessage: `Requested -{invalidIdsLength, plural, one {job {invalidIds} does not exist} other {jobs {invalidIds} do not exist}}`, + {invalidIdsLength, plural, one {job {invalidIds} does not exist} other {jobs {invalidIds} do not exist}}`, values: { - invalidIdsLength: invalidIds.length, - invalidIds: invalidIds.join(), + invalidIdsLength: invalidJobIds.length, + invalidIds: invalidJobIds.join(), }, }) ); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [invalidIds]); + }, [invalidJobIds]); useEffect(() => { // if there are no valid ids, ask the user to provide job selection with the flyout - if (validIds.length === 0 && jobs.length > 0) { + if (!selectedIds || (selectedIds.length === 0 && jobs.length > 0)) { getJobSelection({ singleSelection: false }) .then(({ jobIds, time }) => { - const mlGlobalState = globalState?.ml || {}; - mlGlobalState.jobIds = jobIds; - - setGlobalState({ - ...{ ml: mlGlobalState }, - ...(time !== undefined ? { time } : {}), - }); + anomalyExplorerCommonStateService.setSelectedJobs(jobIds, time); }) .catch(() => { // flyout closed without selection }); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [jobs, validIds, setGlobalState, globalState?.ml]); + }, [jobs]); - return jobSelection; + return { selectedIds, selectedJobs }; }; diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/chart_loader.ts b/x-pack/platform/plugins/shared/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/chart_loader.ts index b18d3e444d73d..573b850fcd2a5 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/chart_loader.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/chart_loader.ts @@ -6,6 +6,7 @@ */ import { getSeverityType } from '@kbn/ml-anomaly-utils'; +import { getIndicesOptions } from '../../../../../common/util/datafeed_utils'; import type { MlResultsService } from '../../../services/results_service'; import type { CombinedJobWithStats } from '../../../../../common/types/anomaly_detection_jobs'; import type { Anomaly } from '../../../jobs/new_job/common/results_loader/results_loader'; @@ -32,7 +33,7 @@ export function chartLoaderProvider(mlResultsService: MlResultsService) { job.data_counts.latest_record_timestamp!, intervalMs, job.datafeed_config.runtime_mappings, - job.datafeed_config.indices_options + getIndicesOptions(job.datafeed_config) ); if (resp.error !== undefined) { throw resp.error; diff --git a/x-pack/platform/plugins/shared/ml/public/application/contexts/ml/use_job_selection_flyout.tsx b/x-pack/platform/plugins/shared/ml/public/application/contexts/ml/use_job_selection_flyout.tsx index a95c9ad41fd42..fd19689d68b5e 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/contexts/ml/use_job_selection_flyout.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/contexts/ml/use_job_selection_flyout.tsx @@ -10,9 +10,10 @@ import moment from 'moment'; import type { KibanaReactOverlays } from '@kbn/kibana-react-plugin/public'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { useMlKibana } from '../kibana'; -import { JobSelectorFlyout } from '../../../embeddables/common/components/job_selector_flyout'; -import { getInitialGroupsMap } from '../../components/job_selector/job_selector'; -import type { JobSelectionResult } from '../../components/job_selector/job_selector_flyout'; +import { + JobSelectorFlyoutContent, + type JobSelectionResult, +} from '../../components/job_selector/job_selector_flyout'; export type GetJobSelection = ReturnType<typeof useJobSelectionFlyout>; @@ -49,16 +50,12 @@ export function useJobSelectionFlyout() { const tzConfig = uiSettings.get('dateFormat:tz'); const dateFormatTz = tzConfig !== 'Browser' ? tzConfig : moment.tz.guess(); - const maps = { - groupsMap: getInitialGroupsMap([]), - jobsMap: {}, - }; return new Promise(async (resolve, reject) => { try { flyoutRef.current = overlays.openFlyout( <KibanaContextProvider services={services}> - <JobSelectorFlyout + <JobSelectorFlyoutContent selectedIds={[]} withTimeRangeSelector={config.withTimeRangeSelector} dateFormatTz={dateFormatTz} @@ -72,7 +69,6 @@ export function useJobSelectionFlyout() { resolve(payload); flyoutRef.current!.close(); }} - maps={maps} /> </KibanaContextProvider> ); diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/index.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/index.ts index 2a7b30d4ed6d8..12185d2799174 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/index.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/index.ts @@ -5,5 +5,4 @@ * 2.0. */ -export { jobSelectionActionCreator } from './job_selection'; export { useExplorerData } from './load_explorer_data'; diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/job_selection.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/job_selection.ts deleted file mode 100644 index bd6bcd6e95657..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/job_selection.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Observable } from 'rxjs'; -import { from } from 'rxjs'; -import { map } from 'rxjs'; - -import type { MlFieldFormatService } from '../../services/field_format_service'; -import type { MlJobService } from '../../services/job_service'; - -import { EXPLORER_ACTION } from '../explorer_constants'; -import { createJobs, getInfluencers } from '../explorer_utils'; -import type { ExplorerActions } from '../explorer_dashboard_service'; - -export function jobSelectionActionCreator( - mlJobService: MlJobService, - mlFieldFormatService: MlFieldFormatService, - selectedJobIds: string[] -): Observable<ExplorerActions | null> { - return from(mlFieldFormatService.populateFormats(selectedJobIds)).pipe( - map((resp) => { - if (resp.error) { - return null; - } - - const jobs = createJobs(mlJobService.jobs).map((job) => { - job.selected = selectedJobIds.some((id) => job.id === id); - return job; - }); - - const selectedJobs = jobs.filter((job) => job.selected); - const noInfluencersConfigured = getInfluencers(mlJobService, selectedJobs).length === 0; - - return { - type: EXPLORER_ACTION.JOB_SELECTION_CHANGE, - payload: { - loading: false, - selectedJobs, - noInfluencersConfigured, - }, - }; - }) - ); -} diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/load_explorer_data.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/load_explorer_data.ts index 19bf333e0d2bd..6035b0327740f 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/load_explorer_data.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/actions/load_explorer_data.ts @@ -31,7 +31,7 @@ import { loadTopInfluencers, loadOverallAnnotations, } from '../explorer_utils'; -import type { ExplorerState } from '../reducers'; + import { useMlApi, useUiSettings } from '../../contexts/kibana'; import type { MlResultsService } from '../../services/results_service'; import { mlResultsServiceProvider } from '../../services/results_service'; @@ -39,6 +39,7 @@ import type { AnomalyExplorerChartsService } from '../../services/anomaly_explor import { useAnomalyExplorerContext } from '../anomaly_explorer_context'; import type { MlApi } from '../../services/ml_api_service'; import { useMlJobService, type MlJobService } from '../../services/job_service'; +import type { ExplorerState } from '../explorer_data'; // Memoize the data fetching methods. // wrapWithLastRefreshArg() wraps any given function and preprends a `lastRefresh` argument diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_charts_state_service.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_charts_state_service.ts index 05c6bda4057d4..9944dd2d6591f 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_charts_state_service.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_charts_state_service.ts @@ -8,7 +8,7 @@ import type { Observable } from 'rxjs'; import { BehaviorSubject, combineLatest, of, Subscription } from 'rxjs'; import { distinctUntilChanged, map, skipWhile, switchMap } from 'rxjs'; -import type { PageUrlStateService } from '@kbn/ml-url-state'; +import type { UrlStateService } from '@kbn/ml-url-state'; import { StateService } from '../services/state_service'; import type { AnomalyExplorerCommonStateService } from './anomaly_explorer_common_state'; import type { AnomalyTimelineStateService } from './anomaly_timeline_state_service'; @@ -29,7 +29,7 @@ export class AnomalyChartsStateService extends StateService { private _anomalyTimelineStateServices: AnomalyTimelineStateService, private _anomalyExplorerChartsService: AnomalyExplorerChartsService, private _anomalyExplorerUrlStateService: AnomalyExplorerUrlStateService, - private _tableSeverityState: PageUrlStateService<TableSeverity> + private _tableSeverityState: UrlStateService<TableSeverity> ) { super(); this._init(); @@ -40,7 +40,7 @@ export class AnomalyChartsStateService extends StateService { subscription.add( this._anomalyExplorerUrlStateService - .getPageUrlState$() + .getUrlState$() .pipe( map((urlState) => urlState?.mlShowCharts ?? true), distinctUntilChanged() @@ -55,12 +55,12 @@ export class AnomalyChartsStateService extends StateService { private initChartDataSubscription() { return combineLatest([ - this._anomalyExplorerCommonStateService.getSelectedJobs$(), - this._anomalyExplorerCommonStateService.getInfluencerFilterQuery$(), + this._anomalyExplorerCommonStateService.selectedJobs$, + this._anomalyExplorerCommonStateService.influencerFilterQuery$, this._anomalyTimelineStateServices.getContainerWidth$().pipe(skipWhile((v) => v === 0)), this._anomalyTimelineStateServices.getSelectedCells$(), this._anomalyTimelineStateServices.getViewBySwimlaneFieldName$(), - this._tableSeverityState.getPageUrlState$(), + this._tableSeverityState.getUrlState$(), ]) .pipe( switchMap( diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_context_menu.tsx b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_context_menu.tsx index b27f8efe4fcc6..7904a55264d08 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_context_menu.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_context_menu.tsx @@ -59,6 +59,7 @@ interface AnomalyContextMenuProps { bounds?: TimeRangeBounds; interval?: number; chartsCount: number; + mergedGroupsAndJobsIds: string[]; } const SavedObjectSaveModalDashboard = withSuspense(LazySavedObjectSaveModalDashboard); @@ -76,6 +77,7 @@ export const AnomalyContextMenu: FC<AnomalyContextMenuProps> = ({ bounds, interval, chartsCount, + mergedGroupsAndJobsIds, }) => { const { services: { @@ -104,8 +106,8 @@ export const AnomalyContextMenu: FC<AnomalyContextMenuProps> = ({ const { anomalyExplorerCommonStateService, chartsStateService } = useAnomalyExplorerContext(); const { queryString } = useObservable( - anomalyExplorerCommonStateService.getFilterSettings$(), - anomalyExplorerCommonStateService.getFilterSettings() + anomalyExplorerCommonStateService.filterSettings$, + anomalyExplorerCommonStateService.filterSettings ); const chartsData = useObservable( @@ -137,8 +139,6 @@ export const AnomalyContextMenu: FC<AnomalyContextMenuProps> = ({ maxSeriesToPlot >= 1 && maxSeriesToPlot <= MAX_ANOMALY_CHARTS_ALLOWED; - const jobIds = selectedJobs.map(({ id }) => id); - const getEmbeddableInput = useCallback( (timeRange?: TimeRange) => { // Respect the query and the influencers selected @@ -151,7 +151,8 @@ export const AnomalyContextMenu: FC<AnomalyContextMenuProps> = ({ ); const influencers = selectionInfluencers ?? []; - const config = getDefaultEmbeddablePanelConfig(jobIds, queryString); + const config = getDefaultEmbeddablePanelConfig(mergedGroupsAndJobsIds, queryString); + const queryFromSelectedCells = influencers .map((s) => escapeKueryForEmbeddableFieldValuePair(s.fieldName, s.fieldValue)) .join(' or '); @@ -161,7 +162,7 @@ export const AnomalyContextMenu: FC<AnomalyContextMenuProps> = ({ return { ...config, ...(timeRange ? { timeRange } : {}), - jobIds, + jobIds: mergedGroupsAndJobsIds, maxSeriesToPlot: maxSeriesToPlot ?? DEFAULT_MAX_SERIES_TO_PLOT, severityThreshold: severity.val, ...((isDefined(queryString) && queryString !== '') || @@ -175,7 +176,7 @@ export const AnomalyContextMenu: FC<AnomalyContextMenuProps> = ({ : {}), }; }, - [jobIds, maxSeriesToPlot, severity, queryString, selectedCells] + [selectedCells, mergedGroupsAndJobsIds, queryString, maxSeriesToPlot, severity.val] ); const onSaveCallback: SaveModalDashboardProps['onSave'] = useCallback( @@ -350,7 +351,7 @@ export const AnomalyContextMenu: FC<AnomalyContextMenuProps> = ({ defaultMessage: 'Anomaly charts', })} documentInfo={{ - title: getDefaultExplorerChartsPanelTitle(selectedJobs.map(({ id }) => id)), + title: getDefaultExplorerChartsPanelTitle(mergedGroupsAndJobsIds), }} onClose={setIsAddDashboardActive.bind(null, false)} onSave={onSaveCallback} diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_explorer_common_state.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_explorer_common_state.ts index 800b3b2bc5eca..ebd3c9f4ded6d 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_explorer_common_state.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_explorer_common_state.ts @@ -5,16 +5,20 @@ * 2.0. */ -import type { Observable, Subscription } from 'rxjs'; +import type { Observable } from 'rxjs'; +import { Subscription } from 'rxjs'; import { BehaviorSubject } from 'rxjs'; import { distinctUntilChanged, map, shareReplay, filter } from 'rxjs'; import { isEqual } from 'lodash'; import type { InfluencersFilterQuery } from '@kbn/ml-anomaly-utils'; -import type { ExplorerJob } from './explorer_utils'; +import type { GlobalState, UrlStateService } from '@kbn/ml-url-state/src/url_state'; +import { createJobs, type ExplorerJob } from './explorer_utils'; import type { AnomalyExplorerUrlStateService } from './hooks/use_explorer_url_state'; import type { AnomalyExplorerFilterUrlState } from '../../../common/types/locator'; import type { KQLFilterSettings } from './components/explorer_query_bar/explorer_query_bar'; import { StateService } from '../services/state_service'; +import type { MlJobService } from '../services/job_service'; +import type { GroupObj } from '../components/job_selector/job_selector'; export interface AnomalyExplorerState { selectedJobs: ExplorerJob[]; @@ -30,8 +34,10 @@ export type FilterSettings = Required< * Manages related values in the URL state and applies required formatting. */ export class AnomalyExplorerCommonStateService extends StateService { - private _selectedJobs$ = new BehaviorSubject<ExplorerJob[] | undefined>(undefined); + private _selectedJobs$ = new BehaviorSubject<ExplorerJob[]>([]); + private _selectedGroups$ = new BehaviorSubject<GroupObj[]>([]); private _filterSettings$ = new BehaviorSubject<FilterSettings>(this._getDefaultFilterSettings()); + private _invalidJobIds$ = new BehaviorSubject<string[]>([]); private _getDefaultFilterSettings(): FilterSettings { return { @@ -42,65 +48,135 @@ export class AnomalyExplorerCommonStateService extends StateService { }; } - constructor(private anomalyExplorerUrlStateService: AnomalyExplorerUrlStateService) { + constructor( + private anomalyExplorerUrlStateService: AnomalyExplorerUrlStateService, + private globalUrlStateService: UrlStateService<GlobalState>, + private mlJobsService: MlJobService + ) { super(); this._init(); } - protected _initSubscriptions(): Subscription { - return this.anomalyExplorerUrlStateService - .getPageUrlState$() - .pipe( - map((urlState) => urlState?.mlExplorerFilter), - distinctUntilChanged(isEqual) - ) - .subscribe((v) => { - const result = { - ...this._getDefaultFilterSettings(), - ...v, - }; - this._filterSettings$.next(result); - }); - } - - public setSelectedJobs(explorerJobs: ExplorerJob[] | undefined) { - this._selectedJobs$.next(explorerJobs); - } + public readonly selectedGroups$: Observable<GroupObj[]> = this._selectedGroups$.pipe( + distinctUntilChanged(isEqual), + shareReplay(1) + ); - public getSelectedJobs$(): Observable<ExplorerJob[]> { - return this._selectedJobs$.pipe( - filter((v) => Array.isArray(v) && v.length > 0), - distinctUntilChanged(isEqual), - shareReplay(1) - ); - } + public readonly invalidJobIds$: Observable<string[]> = this._invalidJobIds$.pipe( + distinctUntilChanged(isEqual), + shareReplay(1) + ); - private readonly _smvJobs$ = this.getSelectedJobs$().pipe( - map((jobs) => jobs.filter((j) => j.isSingleMetricViewerJob)), + public readonly selectedJobs$: Observable<ExplorerJob[]> = this._selectedJobs$.pipe( + filter((v) => Array.isArray(v) && v.length > 0), + distinctUntilChanged(isEqual), shareReplay(1) ); - public getSingleMetricJobs$(): Observable<ExplorerJob[]> { - return this._smvJobs$; + public readonly influencerFilterQuery$: Observable<InfluencersFilterQuery | undefined> = + this._filterSettings$.pipe( + map((v) => v?.influencersFilterQuery), + distinctUntilChanged(isEqual) + ); + + public readonly filterSettings$ = this._filterSettings$.asObservable(); + + public get selectedGroups(): GroupObj[] { + return this._selectedGroups$.getValue(); } - public getSelectedJobs(): ExplorerJob[] | undefined { + public get invalidJobIds(): string[] { + return this._invalidJobIds$.getValue(); + } + + public get selectedJobs(): ExplorerJob[] { return this._selectedJobs$.getValue(); } - public getInfluencerFilterQuery$(): Observable<InfluencersFilterQuery | undefined> { - return this._filterSettings$.pipe( - map((v) => v?.influencersFilterQuery), - distinctUntilChanged(isEqual) + public get filterSettings(): FilterSettings { + return this._filterSettings$.getValue(); + } + + protected _initSubscriptions(): Subscription { + const subscriptions = new Subscription(); + + subscriptions.add( + this.anomalyExplorerUrlStateService + .getUrlState$() + .pipe( + map((urlState) => urlState?.mlExplorerFilter), + distinctUntilChanged(isEqual) + ) + .subscribe((v) => { + const result = { + ...this._getDefaultFilterSettings(), + ...v, + }; + this._filterSettings$.next(result); + }) + ); + + subscriptions.add( + this.globalUrlStateService + .getUrlState$() + .pipe( + map((urlState) => urlState?.ml?.jobIds), + distinctUntilChanged(isEqual) + ) + .subscribe((selectedJobIds: string[]) => { + this._processSelectedJobs(selectedJobIds); + }) ); + + return subscriptions; } - public getFilterSettings$(): Observable<FilterSettings> { - return this._filterSettings$.asObservable(); + private _processSelectedJobs(selectedJobIds: string[]) { + if (!selectedJobIds || selectedJobIds.length === 0) { + this._selectedJobs$.next([]); + this._invalidJobIds$.next([]); + this._selectedGroups$.next([]); + return; + } + // TODO: We are using mlJobService jobs, which has stale data. + + const groupIds = selectedJobIds.filter((id) => + this.mlJobsService.jobs.some((job) => job.groups?.includes(id)) + ); + + const selectedGroups = groupIds.map((groupId) => ({ + groupId, + jobIds: this.mlJobsService.jobs + .filter((job) => job.groups?.includes(groupId)) + .map((job) => job.job_id), + })); + + const selectedJobs = this.mlJobsService.jobs.filter( + (j) => selectedJobIds.includes(j.job_id) || j.groups?.some((g) => groupIds.includes(g)) + ); + + const mappedJobs = createJobs(selectedJobs); + + const invalidJobIds = this._getInvalidJobIds(selectedJobIds); + + this._invalidJobIds$.next(invalidJobIds); + this._selectedJobs$.next(mappedJobs); + this._selectedGroups$.next(selectedGroups); } - public getFilterSettings(): FilterSettings { - return this._filterSettings$.getValue(); + private _getInvalidJobIds(jobIds: string[]): string[] { + return jobIds.filter( + (id) => !this.mlJobsService.jobs.some((j) => j.job_id === id || j.groups?.includes(id)) + ); + } + + public setSelectedJobs(jobIds: string[], time?: { from: string; to: string }) { + this.globalUrlStateService.updateUrlState({ + ml: { + jobIds, + }, + ...(time ? { time } : {}), + }); } public setFilterSettings(update: KQLFilterSettings) { diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_explorer_context.tsx b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_explorer_context.tsx index 2c1fb6dc8c182..cb29924d2373c 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_explorer_context.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_explorer_context.tsx @@ -8,6 +8,7 @@ import type { PropsWithChildren } from 'react'; import React, { useContext, useEffect, useMemo, useState, type FC } from 'react'; import { useTimefilter } from '@kbn/ml-date-picker'; +import { useGlobalUrlState } from '@kbn/ml-url-state/src/url_state'; import { AnomalyTimelineStateService } from './anomaly_timeline_state_service'; import { AnomalyExplorerCommonStateService } from './anomaly_explorer_common_state'; import { useMlKibana } from '../contexts/kibana'; @@ -18,7 +19,6 @@ import { AnomalyChartsStateService } from './anomaly_charts_state_service'; import { AnomalyExplorerChartsService } from '../services/anomaly_explorer_charts_service'; import { useTableSeverity } from '../components/controls/select_severity'; import { AnomalyDetectionAlertsStateService } from './alerts'; -import { explorerServiceFactory, type ExplorerService } from './explorer_dashboard_service'; import { useMlJobService } from '../services/job_service'; export interface AnomalyExplorerContextValue { @@ -28,7 +28,6 @@ export interface AnomalyExplorerContextValue { anomalyTimelineStateService: AnomalyTimelineStateService; chartsStateService: AnomalyChartsStateService; anomalyDetectionAlertsStateService: AnomalyDetectionAlertsStateService; - explorerService: ExplorerService; } /** @@ -57,11 +56,12 @@ export function useAnomalyExplorerContext() { export const AnomalyExplorerContextProvider: FC<PropsWithChildren<unknown>> = ({ children }) => { const [, , anomalyExplorerUrlStateService] = useExplorerUrlState(); + const [, , globalUrlStateService] = useGlobalUrlState(); const timefilter = useTimefilter(); const { services: { - mlServices: { mlApi, mlFieldFormatService }, + mlServices: { mlApi }, uiSettings, data, }, @@ -82,8 +82,6 @@ export const AnomalyExplorerContextProvider: FC<PropsWithChildren<unknown>> = ({ // updates so using `useEffect` is the right thing to do here to not get errors // related to React lifecycle methods. useEffect(() => { - const explorerService = explorerServiceFactory(mlJobService, mlFieldFormatService); - const anomalyTimelineService = new AnomalyTimelineService( timefilter, uiSettings, @@ -91,7 +89,9 @@ export const AnomalyExplorerContextProvider: FC<PropsWithChildren<unknown>> = ({ ); const anomalyExplorerCommonStateService = new AnomalyExplorerCommonStateService( - anomalyExplorerUrlStateService + anomalyExplorerUrlStateService, + globalUrlStateService, + mlJobService ); const anomalyTimelineStateService = new AnomalyTimelineStateService( @@ -129,7 +129,6 @@ export const AnomalyExplorerContextProvider: FC<PropsWithChildren<unknown>> = ({ anomalyTimelineStateService, chartsStateService, anomalyDetectionAlertsStateService, - explorerService, }); return () => { diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline.tsx b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline.tsx index b64afb345f5bc..cad2ef9376890 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline.tsx @@ -49,13 +49,12 @@ import { ANOMALY_SWIMLANE_EMBEDDABLE_TYPE } from '../..'; import type { SwimlaneType } from './explorer_constants'; import { OVERALL_LABEL, SWIMLANE_TYPE, VIEW_BY_JOB_LABEL } from './explorer_constants'; import { useMlKibana } from '../contexts/kibana'; -import type { ExplorerState } from './reducers/explorer_reducer'; import { ExplorerNoInfluencersFound } from './components/explorer_no_influencers_found'; import { SwimlaneContainer } from './swimlane_container'; -import type { - AppStateSelectedCells, - OverallSwimlaneData, - ViewBySwimLaneData, +import { + type AppStateSelectedCells, + type OverallSwimlaneData, + type ViewBySwimLaneData, } from './explorer_utils'; import { NoOverallData } from './components/no_overall_data'; import { SeverityControl } from '../components/severity_control'; @@ -67,6 +66,8 @@ import { useAnomalyExplorerContext } from './anomaly_explorer_context'; import { getTimeBoundsFromSelection } from './hooks/use_selected_cells'; import { SwimLaneWrapper } from './alerts'; import { Y_AXIS_LABEL_WIDTH } from './constants'; +import type { ExplorerState } from './explorer_data'; +import { useJobSelection } from './hooks/use_job_selection'; function mapSwimlaneOptionsToEuiOptions(options: string[]) { return options.map((option) => ({ @@ -120,16 +121,13 @@ export const AnomalyTimeline: FC<AnomalyTimelineProps> = React.memo( const { overallAnnotations } = explorerState; const { filterActive, queryString } = useObservable( - anomalyExplorerCommonStateService.getFilterSettings$(), - anomalyExplorerCommonStateService.getFilterSettings() + anomalyExplorerCommonStateService.filterSettings$, + anomalyExplorerCommonStateService.filterSettings ); const swimlaneLimit = useObservable(anomalyTimelineStateService.getSwimLaneCardinality$()); - const selectedJobs = useObservable( - anomalyExplorerCommonStateService.getSelectedJobs$(), - anomalyExplorerCommonStateService.getSelectedJobs() - ); + const { selectedJobs, mergedGroupsAndJobsIds } = useJobSelection(); const loading = useObservable(anomalyTimelineStateService.isOverallSwimLaneLoading$(), true); @@ -196,6 +194,7 @@ export const AnomalyTimeline: FC<AnomalyTimelineProps> = React.memo( openCasesModalCallback({ swimlaneType: swimLaneType, ...(swimLaneType === SWIMLANE_TYPE.VIEW_BY ? { viewBy: viewBySwimlaneFieldName } : {}), + // For cases attachment, pass just the job IDs to maintain stale data jobIds: selectedJobs?.map((v) => v.id), timeRange: globalTimeRange, ...(isDefined(queryString) && queryString !== '' @@ -359,15 +358,13 @@ export const AnomalyTimeline: FC<AnomalyTimelineProps> = React.memo( const stateTransfer = embeddable!.getStateTransfer(); - const jobIds = selectedJobs.map((j) => j.id); - - const config = getDefaultEmbeddablePanelConfig(jobIds, queryString); + const config = getDefaultEmbeddablePanelConfig(mergedGroupsAndJobsIds, queryString); const embeddableInput: Partial<AnomalySwimLaneEmbeddableState> = { id: config.id, title: newTitle, description: newDescription, - jobIds, + jobIds: mergedGroupsAndJobsIds, swimlaneType: selectedSwimlane, ...(selectedSwimlane === SWIMLANE_TYPE.VIEW_BY ? { viewBy: viewBySwimlaneFieldName } @@ -389,7 +386,14 @@ export const AnomalyTimeline: FC<AnomalyTimelineProps> = React.memo( path, }); }, - [embeddable, queryString, selectedJobs, selectedSwimlane, viewBySwimlaneFieldName] + [ + embeddable, + mergedGroupsAndJobsIds, + queryString, + selectedJobs, + selectedSwimlane, + viewBySwimlaneFieldName, + ] ); return ( @@ -621,7 +625,7 @@ export const AnomalyTimeline: FC<AnomalyTimelineProps> = React.memo( defaultMessage: 'Anomaly swim lane', })} documentInfo={{ - title: getDefaultSwimlanePanelTitle(selectedJobs.map(({ id }) => id)), + title: getDefaultSwimlanePanelTitle(mergedGroupsAndJobsIds), }} onClose={() => { setSelectedSwimlane(undefined); diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline_state_service.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline_state_service.ts index 371284d0ac047..0da777072052f 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline_state_service.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline_state_service.ts @@ -124,7 +124,7 @@ export class AnomalyTimelineStateService extends StateService { update: AnomalyExplorerSwimLaneUrlState, replaceState?: boolean ) => { - const explorerUrlState = this.anomalyExplorerUrlStateService.getPageUrlState(); + const explorerUrlState = this.anomalyExplorerUrlStateService.getUrlState(); const mlExplorerSwimLaneState = explorerUrlState?.mlExplorerSwimlane; const resultUpdate = replaceState ? update : { ...mlExplorerSwimLaneState, ...update }; return this.anomalyExplorerUrlStateService.updateUrlState({ @@ -145,7 +145,7 @@ export class AnomalyTimelineStateService extends StateService { subscription.add( this.anomalyExplorerUrlStateService - .getPageUrlState$() + .getUrlState$() .pipe( map((v) => v?.mlExplorerSwimlane), distinctUntilChanged(isEqual) @@ -171,7 +171,7 @@ export class AnomalyTimelineStateService extends StateService { subscription.add( combineLatest([ - this.anomalyExplorerCommonStateService.getSelectedJobs$(), + this.anomalyExplorerCommonStateService.selectedJobs$, this.getContainerWidth$(), this._timeBounds$, ]).subscribe(([selectedJobs, containerWidth]) => { @@ -192,8 +192,8 @@ export class AnomalyTimelineStateService extends StateService { map((v) => v?.viewByFieldName), distinctUntilChanged() ), - this.anomalyExplorerCommonStateService.getSelectedJobs$(), - this.anomalyExplorerCommonStateService.getFilterSettings$(), + this.anomalyExplorerCommonStateService.selectedJobs$, + this.anomalyExplorerCommonStateService.filterSettings$, this._selectedCells$, ]).subscribe(([currentlySelected, selectedJobs, filterSettings, selectedCells]) => { const { viewBySwimlaneFieldName, viewBySwimlaneOptions } = this._getViewBySwimlaneOptions( @@ -220,7 +220,7 @@ export class AnomalyTimelineStateService extends StateService { }), distinctUntilChanged(isEqual) ), - this.anomalyExplorerCommonStateService.getInfluencerFilterQuery$(), + this.anomalyExplorerCommonStateService.influencerFilterQuery$, this._timeBounds$, ]).subscribe(([pagination, influencersFilerQuery]) => { let resultPaginaiton: SwimLanePagination = pagination; @@ -233,7 +233,7 @@ export class AnomalyTimelineStateService extends StateService { private _initOverallSwimLaneData() { return combineLatest([ - this.anomalyExplorerCommonStateService.getSelectedJobs$(), + this.anomalyExplorerCommonStateService.selectedJobs$, this._swimLaneSeverity$, this.getSwimLaneBucketInterval$(), this._timeBounds$, @@ -263,8 +263,8 @@ export class AnomalyTimelineStateService extends StateService { private _initTopFieldValues() { return ( combineLatest([ - this.anomalyExplorerCommonStateService.getSelectedJobs$(), - this.anomalyExplorerCommonStateService.getInfluencerFilterQuery$(), + this.anomalyExplorerCommonStateService.selectedJobs$, + this.anomalyExplorerCommonStateService.influencerFilterQuery$, this.getViewBySwimlaneFieldName$(), this.getSwimLanePagination$(), this.getSwimLaneCardinality$(), @@ -331,8 +331,8 @@ export class AnomalyTimelineStateService extends StateService { private _initViewBySwimLaneData() { return combineLatest([ this._overallSwimLaneData$.pipe(skipWhile((v) => !v)), - this.anomalyExplorerCommonStateService.getSelectedJobs$(), - this.anomalyExplorerCommonStateService.getInfluencerFilterQuery$(), + this.anomalyExplorerCommonStateService.selectedJobs$, + this.anomalyExplorerCommonStateService.influencerFilterQuery$, this._swimLaneSeverity$, this.getSwimLaneBucketInterval$(), this.getViewBySwimlaneFieldName$(), @@ -671,7 +671,7 @@ export class AnomalyTimelineStateService extends StateService { */ public getSwimLaneJobs$(): Observable<ExplorerJob[]> { return combineLatest([ - this.anomalyExplorerCommonStateService.getSelectedJobs$(), + this.anomalyExplorerCommonStateService.selectedJobs$, this.getViewBySwimlaneFieldName$(), this._viewBySwimLaneData$, this._selectedCells$, diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer.tsx b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer.tsx index ba95fc6671bcb..0ffb38f3631d1 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer.tsx @@ -69,16 +69,16 @@ import { FILTER_ACTION } from './explorer_constants'; // Anomalies Table // @ts-ignore import { AnomaliesTable } from '../components/anomalies_table/anomalies_table'; -import { ANOMALY_DETECTION_DEFAULT_TIME_RANGE } from '../../../common/constants/settings'; import { AnomalyContextMenu } from './anomaly_context_menu'; import type { JobSelectorProps } from '../components/job_selector/job_selector'; -import type { ExplorerState } from './reducers'; import { useToastNotificationService } from '../services/toast_notification_service'; import { useMlKibana, useMlLocator } from '../contexts/kibana'; import { useAnomalyExplorerContext } from './anomaly_explorer_context'; import { ML_ANOMALY_EXPLORER_PANELS } from '../../../common/types/storage'; import { AlertsPanel } from './alerts'; import { useMlIndexUtils } from '../util/index_service'; +import type { ExplorerState } from './explorer_data'; +import { useJobSelection } from './hooks/use_job_selection'; const AnnotationFlyout = dynamic(async () => ({ default: (await import('../components/annotations/annotation_flyout')).AnnotationFlyout, @@ -94,8 +94,6 @@ const ExplorerChartsContainer = dynamic(async () => ({ interface ExplorerPageProps { jobSelectorProps: JobSelectorProps; - noInfluencersConfigured?: boolean; - influencers?: ExplorerState['influencers']; filterActive?: boolean; filterPlaceHolder?: string; indexPattern?: DataView; @@ -107,8 +105,6 @@ interface ExplorerPageProps { const ExplorerPage: FC<PropsWithChildren<ExplorerPageProps>> = ({ children, jobSelectorProps, - noInfluencersConfigured, - influencers, filterActive, filterPlaceHolder, indexPattern, @@ -147,7 +143,6 @@ interface ExplorerUIProps { showCharts: boolean; selectedJobsRunning: boolean; overallSwimlaneData: OverallSwimlaneData | null; - invalidTimeRangeError?: boolean; stoppedPartitions?: string[]; // TODO Remove timefilter: TimefilterContract; @@ -155,6 +150,7 @@ interface ExplorerUIProps { timeBuckets: TimeBuckets; selectedCells: AppStateSelectedCells | undefined | null; swimLaneSeverity?: number; + noInfluencersConfigured?: boolean; } export function getDefaultPanelsState() { @@ -171,7 +167,6 @@ export function getDefaultPanelsState() { } export const Explorer: FC<ExplorerUIProps> = ({ - invalidTimeRangeError, showCharts, severity, stoppedPartitions, @@ -182,6 +177,7 @@ export const Explorer: FC<ExplorerUIProps> = ({ swimLaneSeverity, explorerState, overallSwimlaneData, + noInfluencersConfigured, }) => { const isMobile = useIsWithinBreakpoints(['xs', 's']); @@ -275,7 +271,7 @@ export const Explorer: FC<ExplorerUIProps> = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [anomalyExplorerPanelState]); - const { displayWarningToast, displayDangerToast } = useToastNotificationService(); + const { displayDangerToast } = useToastNotificationService(); const { anomalyTimelineStateService, anomalyExplorerCommonStateService, @@ -291,14 +287,11 @@ export const Explorer: FC<ExplorerUIProps> = ({ const [dataViews, setDataViews] = useState<DataView[] | undefined>(); const filterSettings = useObservable( - anomalyExplorerCommonStateService.getFilterSettings$(), - anomalyExplorerCommonStateService.getFilterSettings() + anomalyExplorerCommonStateService.filterSettings$, + anomalyExplorerCommonStateService.filterSettings ); - const selectedJobs = useObservable( - anomalyExplorerCommonStateService.getSelectedJobs$(), - anomalyExplorerCommonStateService.getSelectedJobs() - ); + const { selectedJobs, selectedGroups, mergedGroupsAndJobsIds } = useJobSelection(); const alertsData = useObservable(anomalyDetectionAlertsStateService.anomalyDetectionAlerts$, []); @@ -361,21 +354,6 @@ export const Explorer: FC<ExplorerUIProps> = ({ [explorerState, language, filterSettings] ); - useEffect(() => { - if (invalidTimeRangeError) { - displayWarningToast( - i18n.translate('xpack.ml.explorer.invalidTimeRangeInUrlCallout', { - defaultMessage: - 'The time filter was changed to the full range due to an invalid default time filter. Check the advanced settings for {field}.', - values: { - field: ANOMALY_DETECTION_DEFAULT_TIME_RANGE, - }, - }) - ); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - const { services: { charts: chartsService, @@ -387,15 +365,8 @@ export const Explorer: FC<ExplorerUIProps> = ({ const mlIndexUtils = useMlIndexUtils(); const mlLocator = useMlLocator(); - const { - annotations, - filterPlaceHolder, - indexPattern, - influencers, - loading, - noInfluencersConfigured, - tableData, - } = explorerState; + const { annotations, filterPlaceHolder, indexPattern, influencers, loading, tableData } = + explorerState; const chartsData = useObservable( chartsStateService.getChartsData$(), @@ -442,11 +413,24 @@ export const Explorer: FC<ExplorerUIProps> = ({ </EuiBadge> ); + const handleJobSelectionChange = useCallback( + ({ jobIds, time }: { jobIds: string[]; time?: { from: string; to: string } }) => { + anomalyExplorerCommonStateService.setSelectedJobs(jobIds, time); + }, + [anomalyExplorerCommonStateService] + ); + + const selectedJobIds = Array.isArray(selectedJobs) ? selectedJobs.map((job) => job.id) : []; + const jobSelectorProps = { dateFormatTz: getDateFormatTz(uiSettings), - } as JobSelectorProps; + onSelectionChange: handleJobSelectionChange, + selectedJobIds, + selectedGroups, + } as unknown as JobSelectorProps; const noJobsSelected = !selectedJobs || selectedJobs.length === 0; + const hasResults: boolean = !!overallSwimlaneData?.points && overallSwimlaneData.points.length > 0; const hasResultsWithAnomalies = @@ -454,7 +438,6 @@ export const Explorer: FC<ExplorerUIProps> = ({ tableData.anomalies?.length > 0; const hasActiveFilter = isDefined(swimLaneSeverity); - const selectedJobIds = Array.isArray(selectedJobs) ? selectedJobs.map((job) => job.id) : []; useEffect(() => { if (!noJobsSelected) { @@ -592,6 +575,7 @@ export const Explorer: FC<ExplorerUIProps> = ({ <EuiFlexItem grow={false} style={{ marginLeft: 'auto', alignSelf: 'baseline' }}> <AnomalyContextMenu selectedJobs={selectedJobs!} + mergedGroupsAndJobsIds={mergedGroupsAndJobsIds} selectedCells={selectedCells} bounds={bounds} interval={swimLaneBucketInterval ? swimLaneBucketInterval.asSeconds() : undefined} @@ -650,8 +634,6 @@ export const Explorer: FC<ExplorerUIProps> = ({ <ExplorerPage dataViews={dataViews} jobSelectorProps={jobSelectorProps} - noInfluencersConfigured={noInfluencersConfigured} - influencers={influencers} filterActive={filterActive} filterPlaceHolder={filterPlaceHolder} indexPattern={indexPattern as DataView} diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_constants.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_constants.ts index 9deb2ca8aa74f..0e891e9ac5cca 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_constants.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_constants.ts @@ -11,21 +11,6 @@ import { i18n } from '@kbn/i18n'; -export const DRAG_SELECT_ACTION = { - NEW_SELECTION: 'newSelection', - ELEMENT_SELECT: 'elementSelect', - DRAG_START: 'dragStart', -} as const; - -export const EXPLORER_ACTION = { - CLEAR_EXPLORER_DATA: 'clearExplorerData', - CLEAR_INFLUENCER_FILTER_SETTINGS: 'clearInfluencerFilterSettings', - CLEAR_JOBS: 'clearJobs', - JOB_SELECTION_CHANGE: 'jobSelectionChange', - SET_CHARTS_DATA_LOADING: 'setChartsDataLoading', - SET_EXPLORER_DATA: 'setExplorerData', -} as const; - export const FILTER_ACTION = { ADD: '+', REMOVE: '-', diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_dashboard_service.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_dashboard_service.ts deleted file mode 100644 index 2f5ed99c9a401..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_dashboard_service.ts +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * Service for firing and registering for events across the different - * components in the Explorer dashboard. - */ - -import { isEqual } from 'lodash'; -import type { Observable } from 'rxjs'; -import { from, isObservable, Subject } from 'rxjs'; -import { distinctUntilChanged, flatMap, scan, shareReplay } from 'rxjs'; -import type { DeepPartial } from '@kbn/utility-types'; -import { jobSelectionActionCreator } from './actions'; -import { EXPLORER_ACTION } from './explorer_constants'; -import type { ExplorerState } from './reducers'; -import { explorerReducer, getExplorerDefaultState } from './reducers'; -import type { MlFieldFormatService } from '../services/field_format_service'; -import type { MlJobService } from '../services/job_service'; -import type { ExplorerJob } from './explorer_utils'; - -type ExplorerAction = (typeof EXPLORER_ACTION)[keyof typeof EXPLORER_ACTION]; - -export interface ExplorerActionPayloads { - [EXPLORER_ACTION.SET_EXPLORER_DATA]: DeepPartial<ExplorerState>; - [EXPLORER_ACTION.JOB_SELECTION_CHANGE]: { - loading: boolean; - selectedJobs: ExplorerJob[]; - noInfluencersConfigured: boolean; - }; -} - -export type ExplorerActions = { - [K in ExplorerAction]: K extends keyof ExplorerActionPayloads - ? { - type: K; - payload: ExplorerActionPayloads[K]; - } - : { - type: K; - }; -}[ExplorerAction]; - -type ExplorerActionMaybeObservable = ExplorerActions | Observable<ExplorerActions | null>; - -export const explorerAction$ = new Subject<ExplorerActionMaybeObservable>(); - -const explorerFilteredAction$ = explorerAction$.pipe( - // consider observables as side-effects - flatMap((action: ExplorerActionMaybeObservable) => - isObservable(action) ? action : (from([action]) as Observable<ExplorerActionMaybeObservable>) - ), - distinctUntilChanged(isEqual) -); - -// applies action and returns state -const explorerState$: Observable<ExplorerState> = explorerFilteredAction$.pipe( - scan(explorerReducer, getExplorerDefaultState()), - // share the last emitted value among new subscribers - shareReplay(1) -); - -// Export observable state and action dispatchers as service -export const explorerServiceFactory = ( - mlJobService: MlJobService, - mlFieldFormatService: MlFieldFormatService -) => ({ - state$: explorerState$, - clearExplorerData: () => { - explorerAction$.next({ type: EXPLORER_ACTION.CLEAR_EXPLORER_DATA }); - }, - clearInfluencerFilterSettings: () => { - explorerAction$.next({ - type: EXPLORER_ACTION.CLEAR_INFLUENCER_FILTER_SETTINGS, - }); - }, - clearJobs: () => { - explorerAction$.next({ type: EXPLORER_ACTION.CLEAR_JOBS }); - }, - updateJobSelection: (selectedJobIds: string[]) => { - explorerAction$.next( - jobSelectionActionCreator(mlJobService, mlFieldFormatService, selectedJobIds) - ); - }, - setExplorerData: (payload: DeepPartial<ExplorerState>) => { - explorerAction$.next({ type: EXPLORER_ACTION.SET_EXPLORER_DATA, payload }); - }, - setChartsDataLoading: () => { - explorerAction$.next({ type: EXPLORER_ACTION.SET_CHARTS_DATA_LOADING }); - }, -}); - -export type ExplorerService = ReturnType<typeof explorerServiceFactory>; diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_data.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_data.ts new file mode 100644 index 0000000000000..7e40dd07268d2 --- /dev/null +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_data.ts @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DataView } from '@kbn/data-views-plugin/common'; +import { ML_RESULTS_INDEX_PATTERN } from '../../../common/constants/index_patterns'; +import type { AnomaliesTableData, ExplorerJob } from './explorer_utils'; +import type { AnnotationsTable } from '../../../common/types/annotations'; +import type { InfluencerValueData } from '../components/influencers_list/influencers_list'; +import { + type ExplorerChartsData, + getDefaultChartsData, +} from './explorer_charts/explorer_charts_container_service'; + +export interface ExplorerState { + overallAnnotations: AnnotationsTable; + annotations: AnnotationsTable; + anomalyChartsDataLoading: boolean; + chartsData: ExplorerChartsData; + fieldFormatsLoading: boolean; + filterPlaceHolder: string | undefined; + indexPattern: { + title: string; + fields: Array<{ name: string; type: string; aggregatable: boolean; searchable: boolean }>; + }; + influencers: Record<string, InfluencerValueData[]>; + isAndOperator: boolean; + loading: boolean; + maskAll: boolean; + noInfluencersConfigured: boolean; + queryString: string; + selectedJobs: ExplorerJob[] | null; + tableData: AnomaliesTableData; + tableQueryString: string; +} + +function getDefaultIndexPattern() { + return { title: ML_RESULTS_INDEX_PATTERN, fields: [] } as unknown as DataView; +} + +export function getExplorerDefaultState(): ExplorerState { + return { + overallAnnotations: { + error: undefined, + annotationsData: [], + }, + annotations: { + error: undefined, + annotationsData: [], + }, + anomalyChartsDataLoading: true, + chartsData: getDefaultChartsData(), + fieldFormatsLoading: false, + filterPlaceHolder: undefined, + indexPattern: getDefaultIndexPattern(), + influencers: {}, + isAndOperator: false, + loading: false, + maskAll: false, + noInfluencersConfigured: true, + queryString: '', + selectedJobs: null, + tableData: { + anomalies: [], + examplesByJobId: [''], + interval: 0, + jobIds: [], + showViewSeriesLink: false, + }, + tableQueryString: '', + }; +} diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_utils.test.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_utils.test.ts new file mode 100644 index 0000000000000..f784b5c16412c --- /dev/null +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_utils.test.ts @@ -0,0 +1,159 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ML_RESULTS_INDEX_PATTERN } from '../../../common/constants/index_patterns'; +import type { GroupObj } from '../components/job_selector/job_selector'; +import type { ExplorerJob } from './explorer_utils'; +import { getIndexPattern, getMergedGroupsAndJobsIds } from './explorer_utils'; + +describe('getIndexPattern', () => { + it('should create correct index pattern format from a list of Explorer jobs', () => { + const mockExplorerJobs: ExplorerJob[] = [ + { + id: 'job-1', + selected: true, + bucketSpanSeconds: 3600, + modelPlotEnabled: false, + }, + { + id: 'job-2', + selected: false, + bucketSpanSeconds: 7200, + modelPlotEnabled: true, + sourceIndices: ['index-1'], + groups: ['group-1'], + }, + ]; + + const result = getIndexPattern(mockExplorerJobs); + + expect(result).toEqual({ + title: ML_RESULTS_INDEX_PATTERN, + fields: [ + { + name: 'job-1', + type: 'string', + aggregatable: true, + searchable: true, + }, + { + name: 'job-2', + type: 'string', + aggregatable: true, + searchable: true, + }, + ], + }); + }); + + it('should handle empty jobs array', () => { + const result = getIndexPattern([]); + + expect(result).toEqual({ + title: ML_RESULTS_INDEX_PATTERN, + fields: [], + }); + }); +}); + +describe('getMergedGroupsAndJobsIds', () => { + it('should merge group ids and standalone job ids correctly', () => { + const mockGroups: GroupObj[] = [ + { + groupId: 'group-1', + jobIds: ['job-1', 'job-2'], + }, + { + groupId: 'group-2', + jobIds: ['job-3', 'job-4'], + }, + ]; + + const mockSelectedJobs: ExplorerJob[] = [ + { + id: 'job-1', // part of group-1 + selected: true, + bucketSpanSeconds: 3600, + modelPlotEnabled: false, + }, + { + id: 'job-5', // standalone job + selected: true, + bucketSpanSeconds: 3600, + modelPlotEnabled: false, + }, + { + id: 'job-6', // standalone job + selected: true, + bucketSpanSeconds: 3600, + modelPlotEnabled: false, + }, + ]; + + const result = getMergedGroupsAndJobsIds(mockGroups, mockSelectedJobs); + + expect(result).toEqual(['group-1', 'group-2', 'job-5', 'job-6']); + }); + + it('should handle empty groups and jobs', () => { + const result = getMergedGroupsAndJobsIds([], []); + + expect(result).toEqual([]); + }); + + it('should handle overlapping jobs between groups', () => { + const mockGroups: GroupObj[] = [ + { + groupId: 'group-1', + jobIds: ['job-1', 'job-2'], + }, + { + groupId: 'group-2', + jobIds: ['job-2', 'job-3'], // job-2 is in both groups + }, + ]; + + const mockSelectedJobs: ExplorerJob[] = [ + { + id: 'job-4', + selected: true, + bucketSpanSeconds: 3600, + modelPlotEnabled: false, + }, + ]; + + const result = getMergedGroupsAndJobsIds(mockGroups, mockSelectedJobs); + + expect(result).toEqual(['group-1', 'group-2', 'job-4']); + }); + + it('should handle groups with no jobs', () => { + const mockGroups: GroupObj[] = [ + { + groupId: 'group-1', + jobIds: [], + }, + { + groupId: 'group-2', + jobIds: ['job-1'], + }, + ]; + + const mockSelectedJobs: ExplorerJob[] = [ + { + id: 'job-2', + selected: true, + bucketSpanSeconds: 3600, + modelPlotEnabled: false, + }, + ]; + + const result = getMergedGroupsAndJobsIds(mockGroups, mockSelectedJobs); + + expect(result).toEqual(['group-1', 'group-2', 'job-2']); + }); +}); diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_utils.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_utils.ts index abe921ee4352e..ce68528040b0d 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_utils.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/explorer_utils.ts @@ -54,6 +54,8 @@ import type { MlResultsService } from '../services/results_service'; import type { Annotations, AnnotationsTable } from '../../../common/types/annotations'; import { useMlKibana } from '../contexts/kibana'; import type { MlApi } from '../services/ml_api_service'; +import { ML_RESULTS_INDEX_PATTERN } from '../../../common/constants/index_patterns'; +import type { GroupObj } from '../components/job_selector/job_selector'; export interface ExplorerJob { id: string; @@ -62,6 +64,7 @@ export interface ExplorerJob { isSingleMetricViewerJob?: boolean; sourceIndices?: string[]; modelPlotEnabled: boolean; + groups?: string[]; } export function isExplorerJob(arg: unknown): arg is ExplorerJob { @@ -149,6 +152,7 @@ export function createJobs(jobs: CombinedJob[]): ExplorerJob[] { isSingleMetricViewerJob: isTimeSeriesViewJob(job), sourceIndices: job.datafeed_config.indices, modelPlotEnabled: job.model_plot_config?.enabled === true, + groups: job.groups, }; }); } @@ -488,6 +492,7 @@ export async function loadAnomaliesTableData( influencersFilterQuery?: InfluencersFilterQuery ): Promise<AnomaliesTableData> { const jobIds = getSelectionJobIds(selectedCells, selectedJobs); + const influencers = getSelectionInfluencers(selectedCells, fieldName); const timeRange = getSelectionTimeRange(selectedCells, bounds); @@ -700,3 +705,28 @@ export async function getDataViewsAndIndicesWithGeoFields( } return { sourceIndicesWithGeoFieldsMap, dataViews: [...dataViewsMap.values()] }; } + +// Creates index pattern in the format expected by the kuery bar/kuery autocomplete provider +// Field objects required fields: name, type, aggregatable, searchable +export function getIndexPattern(influencers: ExplorerJob[]) { + return { + title: ML_RESULTS_INDEX_PATTERN, + fields: influencers.map((influencer) => ({ + name: influencer.id, + type: 'string', + aggregatable: true, + searchable: true, + })), + }; +} + +// Returns a list of unique group ids and job ids +export function getMergedGroupsAndJobsIds(groups: GroupObj[], selectedJobs: ExplorerJob[]) { + const jobIdsFromGroups = groups.flatMap((group) => group.jobIds); + const groupIds = groups.map((group) => group.groupId); + const uniqueJobIds = selectedJobs + .filter((job) => !jobIdsFromGroups.includes(job.id)) + .map((job) => job.id); + + return [...groupIds, ...uniqueJobIds]; +} diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/hooks/use_explorer_url_state.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/hooks/use_explorer_url_state.ts index cfa3fdc03d343..cbea33986eab7 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/hooks/use_explorer_url_state.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/hooks/use_explorer_url_state.ts @@ -5,12 +5,11 @@ * 2.0. */ -import type { PageUrlStateService } from '@kbn/ml-url-state'; -import { usePageUrlState } from '@kbn/ml-url-state'; +import { usePageUrlState, type UrlStateService } from '@kbn/ml-url-state'; import type { ExplorerAppState } from '../../../../common/types/locator'; import { ML_PAGES } from '../../../../common/constants/locator'; -export type AnomalyExplorerUrlStateService = PageUrlStateService<ExplorerAppState>; +export type AnomalyExplorerUrlStateService = UrlStateService<ExplorerAppState>; interface LegacyExplorerPageUrlState { pageKey: 'mlExplorerSwimlane'; diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/hooks/use_job_selection.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/hooks/use_job_selection.ts new file mode 100644 index 0000000000000..36fdc076e4cef --- /dev/null +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/hooks/use_job_selection.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import useObservable from 'react-use/lib/useObservable'; +import { useMemo } from 'react'; +import { useAnomalyExplorerContext } from '../anomaly_explorer_context'; +import { getMergedGroupsAndJobsIds } from '../explorer_utils'; + +export const useJobSelection = () => { + const { anomalyExplorerCommonStateService } = useAnomalyExplorerContext(); + + const selectedJobs = useObservable( + anomalyExplorerCommonStateService.selectedJobs$, + anomalyExplorerCommonStateService.selectedJobs + ); + + const selectedGroups = useObservable( + anomalyExplorerCommonStateService.selectedGroups$, + anomalyExplorerCommonStateService.selectedGroups + ); + + const mergedGroupsAndJobsIds = useMemo( + () => getMergedGroupsAndJobsIds(selectedGroups, selectedJobs), + [selectedGroups, selectedJobs] + ); + + return { + selectedJobs, + selectedGroups, + mergedGroupsAndJobsIds, + }; +}; diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/clear_influencer_filter_settings.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/clear_influencer_filter_settings.ts deleted file mode 100644 index 5eec96170b238..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/clear_influencer_filter_settings.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { getClearedSelectedAnomaliesState } from '../../explorer_utils'; - -import type { ExplorerState } from './state'; - -export function clearInfluencerFilterSettings(state: ExplorerState): ExplorerState { - return { - ...state, - isAndOperator: false, - maskAll: false, - queryString: '', - tableQueryString: '', - ...getClearedSelectedAnomaliesState(), - }; -} diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/get_index_pattern.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/get_index_pattern.ts deleted file mode 100644 index 878ba9370c95b..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/get_index_pattern.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ML_RESULTS_INDEX_PATTERN } from '../../../../../common/constants/index_patterns'; -import type { ExplorerJob } from '../../explorer_utils'; - -// Creates index pattern in the format expected by the kuery bar/kuery autocomplete provider -// Field objects required fields: name, type, aggregatable, searchable -export function getIndexPattern(influencers: ExplorerJob[]) { - return { - title: ML_RESULTS_INDEX_PATTERN, - fields: influencers.map((influencer) => ({ - name: influencer.id, - type: 'string', - aggregatable: true, - searchable: true, - })), - }; -} diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/index.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/index.ts deleted file mode 100644 index 74b6c88fba8d4..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { getIndexPattern } from './get_index_pattern'; -export { explorerReducer } from './reducer'; -export type { ExplorerState } from './state'; -export { getExplorerDefaultState } from './state'; diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/job_selection_change.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/job_selection_change.ts deleted file mode 100644 index 58f7461b11047..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/job_selection_change.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { EXPLORER_ACTION } from '../../explorer_constants'; -import type { ExplorerActionPayloads } from '../../explorer_dashboard_service'; - -import { getIndexPattern } from './get_index_pattern'; -import type { ExplorerState } from './state'; - -export const jobSelectionChange = ( - state: ExplorerState, - payload: ExplorerActionPayloads[typeof EXPLORER_ACTION.JOB_SELECTION_CHANGE] -): ExplorerState => { - const { selectedJobs, noInfluencersConfigured } = payload; - const stateUpdate: ExplorerState = { - ...state, - noInfluencersConfigured, - selectedJobs, - }; - - // clear filter if selected jobs have no influencers - if (stateUpdate.noInfluencersConfigured === true) { - const noFilterState = { - filterActive: false, - filteredFields: [], - influencersFilterQuery: undefined, - maskAll: false, - queryString: '', - tableQueryString: '', - }; - - Object.assign(stateUpdate, noFilterState); - } else { - // indexPattern will not be used if there are no influencers so set up can be skipped - // indexPattern is passed to KqlFilterBar which is only shown if (noInfluencersConfigured === false) - stateUpdate.indexPattern = getIndexPattern(selectedJobs); - } - - stateUpdate.loading = true; - return stateUpdate; -}; diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/reducer.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/reducer.ts deleted file mode 100644 index 4be342c9333ad..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/reducer.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { getDefaultChartsData } from '../../explorer_charts/explorer_charts_container_service'; -import { EXPLORER_ACTION } from '../../explorer_constants'; -import type { ExplorerActionPayloads, ExplorerActions } from '../../explorer_dashboard_service'; -import { getClearedSelectedAnomaliesState } from '../../explorer_utils'; - -import { clearInfluencerFilterSettings } from './clear_influencer_filter_settings'; -import { jobSelectionChange } from './job_selection_change'; -import type { ExplorerState } from './state'; -import { getExplorerDefaultState } from './state'; -import { setKqlQueryBarPlaceholder } from './set_kql_query_bar_placeholder'; - -export const explorerReducer = ( - state: ExplorerState, - nextAction: ExplorerActions -): ExplorerState => { - const { type } = nextAction; - const payload = 'payload' in nextAction ? nextAction.payload : {}; - - let nextState: ExplorerState; - - switch (type) { - case EXPLORER_ACTION.CLEAR_EXPLORER_DATA: - nextState = getExplorerDefaultState(); - break; - - case EXPLORER_ACTION.CLEAR_INFLUENCER_FILTER_SETTINGS: - nextState = clearInfluencerFilterSettings(state); - break; - - case EXPLORER_ACTION.CLEAR_JOBS: - nextState = { - ...state, - ...getClearedSelectedAnomaliesState(), - loading: false, - selectedJobs: [], - }; - break; - - case EXPLORER_ACTION.JOB_SELECTION_CHANGE: - nextState = jobSelectionChange( - state, - payload as ExplorerActionPayloads[typeof EXPLORER_ACTION.JOB_SELECTION_CHANGE] - ); - break; - - case EXPLORER_ACTION.SET_CHARTS_DATA_LOADING: - nextState = { - ...state, - anomalyChartsDataLoading: true, - chartsData: getDefaultChartsData(), - }; - break; - - case EXPLORER_ACTION.SET_EXPLORER_DATA: - nextState = { ...state, ...(payload as Partial<ExplorerState>) }; - break; - - default: - nextState = state; - } - - if (nextState.selectedJobs === null) { - return nextState; - } - - return { - ...nextState, - ...setKqlQueryBarPlaceholder(nextState), - }; -}; diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/set_kql_query_bar_placeholder.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/set_kql_query_bar_placeholder.ts deleted file mode 100644 index e68037f0da471..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/set_kql_query_bar_placeholder.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -import type { ExplorerState } from './state'; - -// Set the KQL query bar placeholder value -export const setKqlQueryBarPlaceholder = (state: ExplorerState) => { - const { influencers, noInfluencersConfigured } = state; - - if (influencers !== undefined && !noInfluencersConfigured) { - for (const influencerName in influencers) { - if (influencers[influencerName][0] && influencers[influencerName][0].influencerFieldValue) { - return { - filterPlaceHolder: i18n.translate('xpack.ml.explorer.kueryBar.filterPlaceholder', { - defaultMessage: 'Filter by influencer fields… ({queryExample})', - values: { - queryExample: `${influencerName} : ${influencers[influencerName][0].influencerFieldValue}`, - }, - }), - }; - } - } - } - - return {}; -}; diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/state.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/state.ts deleted file mode 100644 index 3eed0c410b0da..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/explorer_reducer/state.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { DataView } from '@kbn/data-views-plugin/common'; -import { ML_RESULTS_INDEX_PATTERN } from '../../../../../common/constants/index_patterns'; -import type { ExplorerChartsData } from '../../explorer_charts/explorer_charts_container_service'; -import { getDefaultChartsData } from '../../explorer_charts/explorer_charts_container_service'; -import type { AnomaliesTableData, ExplorerJob } from '../../explorer_utils'; -import type { AnnotationsTable } from '../../../../../common/types/annotations'; -import type { InfluencerValueData } from '../../../components/influencers_list/influencers_list'; - -export interface ExplorerState { - overallAnnotations: AnnotationsTable; - annotations: AnnotationsTable; - anomalyChartsDataLoading: boolean; - chartsData: ExplorerChartsData; - fieldFormatsLoading: boolean; - filterPlaceHolder: string | undefined; - indexPattern: { - title: string; - fields: Array<{ name: string; type: string; aggregatable: boolean; searchable: boolean }>; - }; - influencers: Record<string, InfluencerValueData[]>; - isAndOperator: boolean; - loading: boolean; - maskAll: boolean; - noInfluencersConfigured: boolean; - queryString: string; - selectedJobs: ExplorerJob[] | null; - tableData: AnomaliesTableData; - tableQueryString: string; -} - -function getDefaultIndexPattern() { - return { title: ML_RESULTS_INDEX_PATTERN, fields: [] } as unknown as DataView; -} - -export function getExplorerDefaultState(): ExplorerState { - return { - overallAnnotations: { - error: undefined, - annotationsData: [], - }, - annotations: { - error: undefined, - annotationsData: [], - }, - anomalyChartsDataLoading: true, - chartsData: getDefaultChartsData(), - fieldFormatsLoading: false, - filterPlaceHolder: undefined, - indexPattern: getDefaultIndexPattern(), - influencers: {}, - isAndOperator: false, - loading: true, - maskAll: false, - noInfluencersConfigured: true, - queryString: '', - selectedJobs: null, - tableData: { - anomalies: [], - examplesByJobId: [''], - interval: 0, - jobIds: [], - showViewSeriesLink: false, - }, - tableQueryString: '', - }; -} diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/index.ts b/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/index.ts deleted file mode 100644 index db44d1864daa1..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/reducers/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export type { ExplorerState } from './explorer_reducer'; -export { explorerReducer, getExplorerDefaultState, getIndexPattern } from './explorer_reducer'; diff --git a/x-pack/platform/plugins/shared/ml/public/application/model_management/test_models/models/inference_base.ts b/x-pack/platform/plugins/shared/ml/public/application/model_management/test_models/models/inference_base.ts index b7ac57a5750a8..eee0a38e0731b 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/model_management/test_models/models/inference_base.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/model_management/test_models/models/inference_base.ts @@ -376,10 +376,10 @@ export abstract class InferenceBase<TInferResponse> { }; } - // @ts-expect-error error does not exist in type protected getDocFromResponse({ doc, error }: estypes.IngestSimulatePipelineSimulation) { if (doc === undefined) { if (error) { + // @ts-expect-error Error is now typed in estypes. However, I doubt that it doesn't get the HTTP wrapper expected. this.setFinishedWithErrors(error); throw Error(error.reason); } diff --git a/x-pack/platform/plugins/shared/ml/public/application/overview/components/anomaly_detection_panel/actions.tsx b/x-pack/platform/plugins/shared/ml/public/application/overview/components/anomaly_detection_panel/actions.tsx index d46610a69483f..9f3c11f4bc04d 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/overview/components/anomaly_detection_panel/actions.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/overview/components/anomaly_detection_panel/actions.tsx @@ -58,8 +58,8 @@ export function useGroupActions(): Array<Action<Group>> { const path = await locator?.getUrl({ page: ML_PAGES.ANOMALY_EXPLORER, pageState: { - jobIds: item.jobIds, timeRange: timefilter.getTime(), + jobIds: isUngrouped(item) ? item.jobIds : [item.id], }, }); await navigateToPath(path); @@ -67,3 +67,5 @@ export function useGroupActions(): Array<Action<Group>> { }, ]; } + +const isUngrouped = (item: Group) => item.id === 'ungrouped'; diff --git a/x-pack/platform/plugins/shared/ml/public/application/routing/routes/explorer/state_manager.tsx b/x-pack/platform/plugins/shared/ml/public/application/routing/routes/explorer/state_manager.tsx index 87983d2c61603..a077afae69b3b 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/routing/routes/explorer/state_manager.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/routing/routes/explorer/state_manager.tsx @@ -6,13 +6,12 @@ */ import type { FC } from 'react'; -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import useObservable from 'react-use/lib/useObservable'; import { i18n } from '@kbn/i18n'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import { useUrlState } from '@kbn/ml-url-state'; import { useTimefilter } from '@kbn/ml-date-picker'; import { ML_JOB_ID } from '@kbn/ml-anomaly-utils'; import { useTimeBuckets } from '@kbn/ml-time-buckets'; @@ -30,6 +29,10 @@ import { PageTitle } from '../../../components/page_title'; import { AnomalyResultsViewSelector } from '../../../components/anomaly_results_view_selector'; import { AnomalyDetectionEmptyState } from '../../../jobs/jobs_list/components/anomaly_detection_empty_state'; import { useAnomalyExplorerContext } from '../../../explorer/anomaly_explorer_context'; +import { getInfluencers } from '../../../explorer/explorer_utils'; +import { useMlJobService } from '../../../services/job_service'; +import type { ExplorerState } from '../../../explorer/explorer_data'; +import { getExplorerDefaultState } from '../../../explorer/explorer_data'; export interface ExplorerUrlStateManagerProps { jobsWithTimeRange: MlJobWithTimeRange[]; @@ -43,38 +46,24 @@ export const ExplorerUrlStateManager: FC<ExplorerUrlStateManagerProps> = ({ } = useMlKibana(); const { mlApi } = mlServices; - const [globalState] = useUrlState('_g'); const [stoppedPartitions, setStoppedPartitions] = useState<string[] | undefined>(); - const [invalidTimeRangeError, setInValidTimeRangeError] = useState<boolean>(false); const timeBuckets = useTimeBuckets(uiSettings); const timefilter = useTimefilter({ timeRangeSelector: true, autoRefreshSelector: true }); + const mlJobService = useMlJobService(); + const { selectedIds: jobIds, selectedJobs } = useJobSelection(jobsWithTimeRange); + const noInfluencersConfigured = getInfluencers(mlJobService, selectedJobs).length === 0; - const { jobIds } = useJobSelection(jobsWithTimeRange); const selectedJobsRunning = jobsWithTimeRange.some( - (job) => jobIds.includes(job.id) && job.isRunning === true + (job) => jobIds?.includes(job.id) && job.isRunning === true ); const anomalyExplorerContext = useAnomalyExplorerContext(); - const { explorerService } = anomalyExplorerContext; - const explorerState = useObservable(anomalyExplorerContext.explorerService.state$); + const [explorerState, setExplorerState] = useState<ExplorerState>(getExplorerDefaultState()); const refresh = useRefresh(); const lastRefresh = refresh?.lastRefresh ?? 0; - // We cannot simply infer bounds from the globalState's `time` attribute - // with `moment` since it can contain custom strings such as `now-15m`. - // So when globalState's `time` changes, we update the timefilter and use - // `timefilter.getBounds()` to update `bounds` in this component's state. - useEffect(() => { - if (globalState?.time !== undefined) { - if (globalState.time.mode === 'invalid') { - setInValidTimeRangeError(true); - } - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [globalState?.time?.from, globalState?.time?.to, globalState?.time?.ts]); - const getJobsWithStoppedPartitions = useCallback(async (selectedJobIds: string[]) => { try { const fetchedStoppedPartitions = await mlApi.results.getCategoryStoppedPartitions( @@ -97,35 +86,18 @@ export const ExplorerUrlStateManager: FC<ExplorerUrlStateManagerProps> = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - useEffect( - function handleJobSelection() { - if (jobIds.length > 0) { - explorerService.updateJobSelection(jobIds); - getJobsWithStoppedPartitions(jobIds); - } else { - explorerService.clearJobs(); - } - }, - // eslint-disable-next-line react-hooks/exhaustive-deps - [JSON.stringify(jobIds)] - ); - useEffect(() => { - return () => { - // upon component unmounting - // clear any data to prevent next page from rendering old charts - explorerService.clearExplorerData(); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + if (jobIds && jobIds.length > 0) { + getJobsWithStoppedPartitions(jobIds); + } + }, [getJobsWithStoppedPartitions, jobIds]); const [explorerData, loadExplorerData] = useExplorerData(); useEffect(() => { if (explorerData !== undefined && Object.keys(explorerData).length > 0) { - explorerService.setExplorerData(explorerData); + setExplorerState((prevState) => ({ ...prevState, ...explorerData })); } - // eslint-disable-next-line react-hooks/exhaustive-deps }, [explorerData]); const [tableInterval] = useTableInterval(); @@ -151,35 +123,36 @@ export const ExplorerUrlStateManager: FC<ExplorerUrlStateManagerProps> = ({ ); const influencersFilterQuery = useObservable( - anomalyExplorerContext.anomalyExplorerCommonStateService.getInfluencerFilterQuery$() + anomalyExplorerContext.anomalyExplorerCommonStateService.influencerFilterQuery$ ); - const loadExplorerDataConfig = - explorerState !== undefined - ? { - lastRefresh, - influencersFilterQuery, - noInfluencersConfigured: explorerState.noInfluencersConfigured, - selectedCells, - selectedJobs: explorerState.selectedJobs, - tableInterval: tableInterval.val, - tableSeverity: tableSeverity.val, - viewBySwimlaneFieldName: viewByFieldName, - } - : undefined; - - useEffect( - function updateAnomalyExplorerCommonState() { - anomalyExplorerContext.anomalyExplorerCommonStateService.setSelectedJobs( - loadExplorerDataConfig?.selectedJobs! - ); - }, - // eslint-disable-next-line react-hooks/exhaustive-deps - [loadExplorerDataConfig] + const loadExplorerDataConfig = useMemo( + () => ({ + lastRefresh, + influencersFilterQuery, + noInfluencersConfigured, + selectedCells, + selectedJobs, + tableInterval: tableInterval.val, + tableSeverity: tableSeverity.val, + viewBySwimlaneFieldName: viewByFieldName, + }), + [ + lastRefresh, + influencersFilterQuery, + noInfluencersConfigured, + selectedCells, + selectedJobs, + tableInterval, + tableSeverity, + viewByFieldName, + ] ); useEffect(() => { if (!loadExplorerDataConfig || loadExplorerDataConfig?.selectedCells === undefined) return; + // TODO: Find other way to set loading state as it causes unnecessary re-renders - handle it in anomaly_explorer_common_state + setExplorerState((prevState) => ({ ...prevState, loading: true })); loadExplorerData(loadExplorerDataConfig); // eslint-disable-next-line react-hooks/exhaustive-deps }, [JSON.stringify(loadExplorerDataConfig)]); @@ -202,10 +175,7 @@ export const ExplorerUrlStateManager: FC<ExplorerUrlStateManagerProps> = ({ <MlPageHeader> <EuiFlexGroup alignItems="center" gutterSize="s"> <EuiFlexItem grow={false}> - <AnomalyResultsViewSelector - viewId="explorer" - selectedJobs={explorerState.selectedJobs} - /> + <AnomalyResultsViewSelector viewId="explorer" selectedJobs={selectedJobs} /> </EuiFlexItem> <EuiFlexItem grow={false}> <PageTitle @@ -223,11 +193,11 @@ export const ExplorerUrlStateManager: FC<ExplorerUrlStateManagerProps> = ({ <Explorer {...{ explorerState, + noInfluencersConfigured, overallSwimlaneData, showCharts, severity: tableSeverity.val, stoppedPartitions, - invalidTimeRangeError, selectedJobsRunning, timeBuckets, timefilter, diff --git a/x-pack/platform/plugins/shared/ml/public/application/routing/routes/timeseriesexplorer/state_manager.tsx b/x-pack/platform/plugins/shared/ml/public/application/routing/routes/timeseriesexplorer/state_manager.tsx index 309f24dd1c62b..8975f65e5d970 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/routing/routes/timeseriesexplorer/state_manager.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/routing/routes/timeseriesexplorer/state_manager.tsx @@ -189,6 +189,25 @@ export const TimeSeriesExplorerUrlStateManager: FC<TimeSeriesExplorerUrlStateMan const getJobSelection = useJobSelectionFlyout(); + const handleJobSelectionChange = useCallback( + ({ + jobIds, + time, + }: { + jobIds: string[]; + + time?: { from: string; to: string }; + }) => { + setGlobalState({ + ml: { + jobIds, + }, + ...(time !== undefined ? { time } : {}), + }); + }, + [setGlobalState] + ); + // Use a side effect to clear appState when changing jobs. useEffect(() => { if (selectedJobIds !== undefined && previousSelectedJobIds !== undefined) { @@ -268,7 +287,11 @@ export const TimeSeriesExplorerUrlStateManager: FC<TimeSeriesExplorerUrlStateMan if (timeSeriesJobs.length === 0 || selectedJobId === undefined) { return ( - <TimeSeriesExplorerPage dateFormatTz={dateFormatTz} noSingleMetricJobsFound> + <TimeSeriesExplorerPage + dateFormatTz={dateFormatTz} + noSingleMetricJobsFound + handleJobSelectionChange={handleJobSelectionChange} + > <TimeseriesexplorerNoJobsFound /> </TimeSeriesExplorerPage> ); @@ -276,7 +299,11 @@ export const TimeSeriesExplorerUrlStateManager: FC<TimeSeriesExplorerUrlStateMan if (!bounds) { return ( - <TimeSeriesExplorerPage dateFormatTz={dateFormatTz}> + <TimeSeriesExplorerPage + dateFormatTz={dateFormatTz} + handleJobSelectionChange={handleJobSelectionChange} + selectedJobId={[selectedJobId]} + > <TimeseriesexplorerNoChartData /> </TimeSeriesExplorerPage> ); @@ -306,6 +333,7 @@ export const TimeSeriesExplorerUrlStateManager: FC<TimeSeriesExplorerUrlStateMan zoom: zoomProp, invalidTimeRangeError, functionDescription: selectedFunctionDescription, + handleJobSelectionChange, }} /> ); diff --git a/x-pack/platform/plugins/shared/ml/public/application/services/ml_api_service/trained_models.ts b/x-pack/platform/plugins/shared/ml/public/application/services/ml_api_service/trained_models.ts index 9e473658bc769..04d815082c547 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/services/ml_api_service/trained_models.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/services/ml_api_service/trained_models.ts @@ -31,7 +31,6 @@ import type { export interface InferenceQueryParams { from?: number; - include_model_definition?: boolean; size?: number; tags?: string; include?: 'total_feature_importance' | 'feature_importance_baseline' | string; diff --git a/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer.d.ts b/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer.d.ts index 90dfe24946195..bcba172b9523b 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer.d.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer.d.ts @@ -23,6 +23,13 @@ interface TimeSeriesExplorerProps { tableInterval?: string; tableSeverity?: number; zoom?: { from?: string; to?: string }; + handleJobSelectionChange: ({ + jobIds, + time, + }: { + jobIds: string[]; + time?: { from: string; to: string }; + }) => void; } // eslint-disable-next-line react/prefer-stateless-function diff --git a/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer.js b/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer.js index 9fce79d3d1fab..92b3c480a47ee 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer.js +++ b/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer.js @@ -115,6 +115,7 @@ export class TimeSeriesExplorer extends React.Component { tableInterval: PropTypes.string, tableSeverity: PropTypes.number, zoom: PropTypes.object, + handleJobSelectionChange: PropTypes.func, }; state = getTimeseriesexplorerDefaultState(); @@ -1009,7 +1010,11 @@ export class TimeSeriesExplorer extends React.Component { if (selectedDetectorIndex === undefined || mlJobService.getJob(selectedJobId) === undefined) { return ( - <TimeSeriesExplorerPage dateFormatTz={dateFormatTz} resizeRef={this.resizeRef}> + <TimeSeriesExplorerPage + handleJobSelectionChange={this.props.handleJobSelectionChange} + dateFormatTz={dateFormatTz} + resizeRef={this.resizeRef} + > <ExplorerNoJobsSelected /> </TimeSeriesExplorerPage> ); @@ -1039,7 +1044,12 @@ export class TimeSeriesExplorer extends React.Component { this.previousShowModelBounds = showModelBounds; return ( - <TimeSeriesExplorerPage dateFormatTz={dateFormatTz} resizeRef={this.resizeRef}> + <TimeSeriesExplorerPage + dateFormatTz={dateFormatTz} + resizeRef={this.resizeRef} + handleJobSelectionChange={this.props.handleJobSelectionChange} + selectedJobId={[selectedJobId]} + > {fieldNamesWithEmptyValues.length > 0 && ( <> <EuiCallOut diff --git a/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer_page.tsx b/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer_page.tsx index dc7cacdba5d0a..c998dda0bcd91 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer_page.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/timeseriesexplorer_page.tsx @@ -25,6 +25,14 @@ interface TimeSeriesExplorerPageProps { dateFormatTz?: string; resizeRef?: any; noSingleMetricJobsFound?: boolean; + handleJobSelectionChange: ({ + jobIds, + time, + }: { + jobIds: string[]; + time?: { from: string; to: string }; + }) => void; + selectedJobId?: string[]; } const timeseriesExplorerStyles = getTimeseriesExplorerStyles(); @@ -35,6 +43,8 @@ export const TimeSeriesExplorerPage: FC<PropsWithChildren<TimeSeriesExplorerPage dateFormatTz, resizeRef, noSingleMetricJobsFound, + handleJobSelectionChange, + selectedJobId = [], }) => { const { services: { cases, docLinks }, @@ -66,7 +76,13 @@ export const TimeSeriesExplorerPage: FC<PropsWithChildren<TimeSeriesExplorerPage </MlPageHeader> {noSingleMetricJobsFound ? null : ( - <JobSelector dateFormatTz={dateFormatTz!} singleSelection={true} timeseriesOnly={true} /> + <JobSelector + dateFormatTz={dateFormatTz!} + singleSelection={true} + timeseriesOnly={true} + onSelectionChange={handleJobSelectionChange} + selectedJobIds={selectedJobId} + /> )} <CasesContext owner={[]} permissions={casesPermissions!}> {children} diff --git a/x-pack/platform/plugins/shared/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable_factory.tsx b/x-pack/platform/plugins/shared/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable_factory.tsx index 3f5afc4065e1f..fe844ae26905b 100644 --- a/x-pack/platform/plugins/shared/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable_factory.tsx +++ b/x-pack/platform/plugins/shared/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable_factory.tsx @@ -32,7 +32,7 @@ import { useReactEmbeddableExecutionContext } from '../common/use_embeddable_exe import { initializeAnomalyChartsControls } from './initialize_anomaly_charts_controls'; import { LazyAnomalyChartsContainer } from './lazy_anomaly_charts_container'; import { getAnomalyChartsServiceDependencies } from './get_anomaly_charts_services_dependencies'; -import { buildDataViewPublishingApi } from '../common/anomaly_detection_embeddable'; +import { buildDataViewPublishingApi } from '../common/build_data_view_publishing_api'; export const getAnomalyChartsReactEmbeddableFactory = ( getStartServices: StartServicesAccessor<MlStartDependencies, MlPluginStart> diff --git a/x-pack/platform/plugins/shared/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable_factory.tsx b/x-pack/platform/plugins/shared/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable_factory.tsx index 464b5bd196675..6969f43c105f3 100644 --- a/x-pack/platform/plugins/shared/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable_factory.tsx +++ b/x-pack/platform/plugins/shared/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable_factory.tsx @@ -41,7 +41,7 @@ import { import { HttpService } from '../../application/services/http_service'; import type { MlPluginStart, MlStartDependencies } from '../../plugin'; import { SWIM_LANE_SELECTION_TRIGGER } from '../../ui_actions'; -import { buildDataViewPublishingApi } from '../common/anomaly_detection_embeddable'; +import { buildDataViewPublishingApi } from '../common/build_data_view_publishing_api'; import { useReactEmbeddableExecutionContext } from '../common/use_embeddable_execution_context'; import { initializeSwimLaneControls } from './initialize_swim_lane_controls'; import { initializeSwimLaneDataFetcher } from './initialize_swim_lane_data_fetcher'; diff --git a/x-pack/platform/plugins/shared/ml/public/embeddables/common/anomaly_detection_embeddable.ts b/x-pack/platform/plugins/shared/ml/public/embeddables/common/anomaly_detection_embeddable.ts deleted file mode 100644 index a4e1d423f94d8..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/embeddables/common/anomaly_detection_embeddable.ts +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { type DataView } from '@kbn/data-views-plugin/common'; -import { type DataViewsContract } from '@kbn/data-views-plugin/public'; -import type { IContainer } from '@kbn/embeddable-plugin/public'; -import { - Embeddable, - type EmbeddableInput, - type EmbeddableOutput, -} from '@kbn/embeddable-plugin/public'; -import type { PublishingSubject } from '@kbn/presentation-publishing'; -import type { Subscription } from 'rxjs'; -import { BehaviorSubject, firstValueFrom, forkJoin, from, map, switchMap } from 'rxjs'; -import { type AnomalyDetectorService } from '../../application/services/anomaly_detector_service'; -import type { JobId } from '../../../common/types/anomaly_detection_jobs'; -import type { AnomalySwimLaneEmbeddableApi } from '../anomaly_swimlane/types'; - -export type CommonInput = { jobIds: string[] } & EmbeddableInput; - -export type CommonOutput = { indexPatterns?: DataView[] } & EmbeddableOutput; - -export const buildDataViewPublishingApi = ( - services: { anomalyDetectorService: AnomalyDetectorService; dataViewsService: DataViewsContract }, - api: Pick<AnomalySwimLaneEmbeddableApi, 'jobIds'>, - subscription: Subscription -): PublishingSubject<DataView[] | undefined> => { - const dataViews$ = new BehaviorSubject<DataView[] | undefined>(undefined); - - subscription.add( - api.jobIds - .pipe( - // Get job definitions - switchMap((jobIds) => services.anomalyDetectorService.getJobs$(jobIds)), - // Get unique indices from the datafeed configs - map((jobs) => [...new Set(jobs.map((j) => j.datafeed_config!.indices).flat())]), - switchMap((indices) => - forkJoin( - indices.map((indexName) => - from( - services.dataViewsService.find(`"${indexName}"`).then((r) => { - const dView = r.find((obj) => - obj.getIndexPattern().toLowerCase().includes(indexName.toLowerCase()) - ); - - return dView; - }) - ) - ) - ) - ), - map((results) => { - return results.flat().filter((dView) => dView !== undefined) as DataView[]; - }) - ) - .subscribe(dataViews$) - ); - - return dataViews$; -}; - -export abstract class AnomalyDetectionEmbeddable< - Input extends CommonInput, - Output extends CommonOutput -> extends Embeddable<Input, Output> { - // Need to defer embeddable load in order to resolve data views - deferEmbeddableLoad = true; - - // API - public abstract jobIds: BehaviorSubject<JobId[] | undefined>; - - protected constructor( - initialInput: Input, - private anomalyDetectorService: AnomalyDetectorService, - private dataViewsService: DataViewsContract, - parent?: IContainer - ) { - super(initialInput, {} as Output, parent); - - this.initializeOutput(initialInput).finally(() => { - this.setInitializationFinished(); - }); - } - - protected async initializeOutput(initialInput: CommonInput) { - const { jobIds } = initialInput; - - try { - const jobs = await firstValueFrom(this.anomalyDetectorService.getJobs$(jobIds)); - - // First get list of unique indices from the selected jobs - const indices = new Set(jobs.map((j) => j.datafeed_config!.indices).flat()); - // Then find the data view assuming the data view title matches the index name - const indexPatterns: Record<string, DataView> = {}; - for (const indexName of indices) { - const response = await this.dataViewsService.find(`"${indexName}"`); - const indexPattern = response.find((obj) => - obj.getIndexPattern().toLowerCase().includes(indexName.toLowerCase()) - ); - - if (indexPattern !== undefined) { - indexPatterns[indexPattern.id!] = indexPattern; - } - } - - this.updateOutput({ - ...this.getOutput(), - indexPatterns: Object.values(indexPatterns), - }); - } catch (e) { - // Unable to find and load data view but we can ignore the error - // as we only load it to support the filter & query bar - // the visualizations should still work correctly - - // eslint-disable-next-line no-console - console.error(`Unable to load data views for ${jobIds}`, e); - } - } -} diff --git a/x-pack/platform/plugins/shared/ml/public/embeddables/common/build_data_view_publishing_api.ts b/x-pack/platform/plugins/shared/ml/public/embeddables/common/build_data_view_publishing_api.ts new file mode 100644 index 0000000000000..62f14602f3af3 --- /dev/null +++ b/x-pack/platform/plugins/shared/ml/public/embeddables/common/build_data_view_publishing_api.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { type DataView } from '@kbn/data-views-plugin/common'; +import { type DataViewsContract } from '@kbn/data-views-plugin/public'; +import type { PublishingSubject } from '@kbn/presentation-publishing'; +import type { Subscription } from 'rxjs'; +import { BehaviorSubject, forkJoin, from, map, switchMap } from 'rxjs'; +import { type AnomalyDetectorService } from '../../application/services/anomaly_detector_service'; +import type { AnomalySwimLaneEmbeddableApi } from '../anomaly_swimlane/types'; + +export const buildDataViewPublishingApi = ( + services: { anomalyDetectorService: AnomalyDetectorService; dataViewsService: DataViewsContract }, + api: Pick<AnomalySwimLaneEmbeddableApi, 'jobIds'>, + subscription: Subscription +): PublishingSubject<DataView[] | undefined> => { + const dataViews$ = new BehaviorSubject<DataView[] | undefined>(undefined); + + subscription.add( + api.jobIds + .pipe( + // Get job definitions + switchMap((jobIds) => services.anomalyDetectorService.getJobs$(jobIds)), + // Get unique indices from the datafeed configs + map((jobs) => [...new Set(jobs.map((j) => j.datafeed_config!.indices).flat())]), + switchMap((indices) => + forkJoin( + indices.map((indexName) => + from( + services.dataViewsService.find(`"${indexName}"`).then((r) => { + const dView = r.find((obj) => + obj.getIndexPattern().toLowerCase().includes(indexName.toLowerCase()) + ); + + return dView; + }) + ) + ) + ) + ), + map((results) => { + return results.flat().filter((dView) => dView !== undefined) as DataView[]; + }) + ) + .subscribe(dataViews$) + ); + + return dataViews$; +}; diff --git a/x-pack/platform/plugins/shared/ml/public/embeddables/common/components/job_selector_flyout.tsx b/x-pack/platform/plugins/shared/ml/public/embeddables/common/components/job_selector_flyout.tsx deleted file mode 100644 index 44888067c839e..0000000000000 --- a/x-pack/platform/plugins/shared/ml/public/embeddables/common/components/job_selector_flyout.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { FC } from 'react'; -import React, { useState } from 'react'; -import type { JobSelectorFlyoutProps } from '../../../application/components/job_selector/job_selector_flyout'; -import { JobSelectorFlyoutContent } from '../../../application/components/job_selector/job_selector_flyout'; - -export const JobSelectorFlyout: FC<JobSelectorFlyoutProps> = ({ - selectedIds, - withTimeRangeSelector, - dateFormatTz, - singleSelection, - timeseriesOnly, - onFlyoutClose, - onSelectionConfirmed, - maps, -}) => { - const [applyTimeRangeState, setApplyTimeRangeState] = useState<boolean>(true); - - return ( - <JobSelectorFlyoutContent - selectedIds={selectedIds} - withTimeRangeSelector={withTimeRangeSelector} - dateFormatTz={dateFormatTz} - singleSelection={singleSelection} - timeseriesOnly={timeseriesOnly} - onFlyoutClose={onFlyoutClose} - onSelectionConfirmed={onSelectionConfirmed} - onTimeRangeConfigChange={setApplyTimeRangeState} - applyTimeRangeConfig={applyTimeRangeState} - maps={maps} - /> - ); -}; diff --git a/x-pack/platform/plugins/shared/ml/public/maps/util.ts b/x-pack/platform/plugins/shared/ml/public/maps/util.ts index f661c08b6c5f6..8563380da5642 100644 --- a/x-pack/platform/plugins/shared/ml/public/maps/util.ts +++ b/x-pack/platform/plugins/shared/ml/public/maps/util.ts @@ -24,9 +24,9 @@ import { formatHumanReadableDateTimeSeconds } from '@kbn/ml-date-utils'; import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import type { MlApi } from '../application/services/ml_api_service'; import { tabColor } from '../../common/util/group_color_utils'; -import { getIndexPattern } from '../application/explorer/reducers/explorer_reducer/get_index_pattern'; import { AnomalySource } from './anomaly_source'; -import type { SourceIndexGeoFields } from '../application/explorer/explorer_utils'; +import type { ExplorerJob } from '../application/explorer/explorer_utils'; +import { getIndexPattern, type SourceIndexGeoFields } from '../application/explorer/explorer_utils'; export const ML_ANOMALY_LAYERS = { TYPICAL: 'typical', @@ -170,8 +170,8 @@ export async function getResultsForJobId( const { query, timeFilters } = searchFilters; const hasQuery = query && query.query !== ''; let queryFilter; - // @ts-ignore missing properties from ExplorerJob - those fields aren't required for this - const indexPattern = getIndexPattern([{ id: jobId }]); + + const indexPattern = getIndexPattern([{ id: jobId }] as ExplorerJob[]); if (hasQuery && query.language === SEARCH_QUERY_LANGUAGE.KUERY) { queryFilter = toElasticsearchQuery(fromKueryExpression(query.query), indexPattern); diff --git a/x-pack/platform/plugins/shared/ml/server/lib/ml_client/ml_client.ts b/x-pack/platform/plugins/shared/ml/server/lib/ml_client/ml_client.ts index aa8bb89c47ea5..bbd5b7ef7d90f 100644 --- a/x-pack/platform/plugins/shared/ml/server/lib/ml_client/ml_client.ts +++ b/x-pack/platform/plugins/shared/ml/server/lib/ml_client/ml_client.ts @@ -472,7 +472,7 @@ export function getMlClient( throw error; } if (error.statusCode === 404) { - throw new MLJobNotFound(error.body.error.reason); + throw new MLJobNotFound(formatJobNotFoundError(error.body.error.reason)); } throw error; } @@ -786,3 +786,14 @@ function filterAll(ids: string[]) { // something called _all, which will subsequently fail. return ids.length === 1 && ids[0] === '_all' ? [] : ids; } + +function formatJobNotFoundError(errorReason: string) { + const failingJobMatch = errorReason.match(/No known job with id '([^']+)'/); + const failingJobIds = failingJobMatch?.[1]?.split(','); + const errorMessage = failingJobIds?.length + ? `No known job or group with ${ + failingJobIds.length === 1 ? 'id' : 'ids' + } '${failingJobIds.join("', '")}'` + : errorReason; + return errorMessage; +} diff --git a/x-pack/platform/plugins/shared/ml/server/models/fields_service/fields_service.ts b/x-pack/platform/plugins/shared/ml/server/models/fields_service/fields_service.ts index 95e97ef01e3b3..f68a7b0c7560d 100644 --- a/x-pack/platform/plugins/shared/ml/server/models/fields_service/fields_service.ts +++ b/x-pack/platform/plugins/shared/ml/server/models/fields_service/fields_service.ts @@ -17,7 +17,7 @@ import { parseInterval } from '@kbn/ml-parse-interval'; import { initCardinalityFieldsCache } from './fields_aggs_cache'; import { isValidAggregationField } from '../../../common/util/validation_utils'; -import { getDatafeedAggregations } from '../../../common/util/datafeed_utils'; +import { getDatafeedAggregations, getIndicesOptions } from '../../../common/util/datafeed_utils'; import type { Datafeed, IndicesOptions } from '../../../common/types/anomaly_detection_jobs'; /** @@ -190,7 +190,7 @@ export function fieldsServiceProvider({ asCurrentUser }: IScopedClusterClient) { { index, body, - ...(datafeedConfig?.indices_options ?? {}), + ...getIndicesOptions(datafeedConfig), }, { maxRetries: 0 } ); @@ -418,7 +418,7 @@ export function fieldsServiceProvider({ asCurrentUser }: IScopedClusterClient) { { index, body, - ...(datafeedConfig?.indices_options ?? {}), + ...getIndicesOptions(datafeedConfig), }, { maxRetries: 0 } ); diff --git a/x-pack/platform/plugins/shared/ml/server/models/job_validation/job_validation.ts b/x-pack/platform/plugins/shared/ml/server/models/job_validation/job_validation.ts index fff24e7730f18..a44083df9f9f4 100644 --- a/x-pack/platform/plugins/shared/ml/server/models/job_validation/job_validation.ts +++ b/x-pack/platform/plugins/shared/ml/server/models/job_validation/job_validation.ts @@ -25,7 +25,7 @@ import { validateTimeRange, isValidTimeField } from './validate_time_range'; import type { validateJobSchema } from '../../routes/schemas/job_validation_schema'; import type { CombinedJob } from '../../../common/types/anomaly_detection_jobs'; import type { MlClient } from '../../lib/ml_client'; -import { getDatafeedAggregations } from '../../../common/util/datafeed_utils'; +import { getDatafeedAggregations, getIndicesOptions } from '../../../common/util/datafeed_utils'; import type { AuthorizationHeader } from '../../lib/request_authorization'; export type ValidateJobPayload = TypeOf<typeof validateJobSchema>; @@ -74,7 +74,7 @@ export async function validateJob( timeField, job.datafeed_config.query, job.datafeed_config.runtime_mappings, - job.datafeed_config.indices_options + getIndicesOptions(job.datafeed_config) ); } diff --git a/x-pack/platform/plugins/shared/ml/server/models/results_service/results_service.ts b/x-pack/platform/plugins/shared/ml/server/models/results_service/results_service.ts index bbf9c4def4722..a0a11bfcc912c 100644 --- a/x-pack/platform/plugins/shared/ml/server/models/results_service/results_service.ts +++ b/x-pack/platform/plugins/shared/ml/server/models/results_service/results_service.ts @@ -19,6 +19,7 @@ import { ML_JOB_ID, ML_PARTITION_FIELD_VALUE, } from '@kbn/ml-anomaly-utils'; +import { getIndicesOptions } from '../../../common/util/datafeed_utils'; import { buildAnomalyTableItems } from './build_anomaly_table_items'; import { ANOMALIES_TABLE_DEFAULT_QUERY_SIZE } from '../../../common/constants/search'; import { getPartitionFieldsValuesFactory } from './get_partition_fields_values'; @@ -727,7 +728,7 @@ export function resultsServiceProvider(mlClient: MlClient, client?: IScopedClust }, size: 0, }, - ...(datafeedConfig?.indices_options ?? {}), + ...getIndicesOptions(datafeedConfig), }; if (client) { diff --git a/x-pack/plugins/observability_solution/exploratory_view/.storybook/jest_setup.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/.storybook/jest_setup.js rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/exploratory_view/.storybook/main.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/.storybook/main.js rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/exploratory_view/.storybook/preview.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/.storybook/preview.js rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/preview.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/README.md b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/README.md similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/README.md rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/README.md diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/TRACING.md b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/TRACING.md similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/TRACING.md rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/TRACING.md diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/capabilities.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/capabilities.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/capabilities.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts similarity index 98% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts index 974b002ea93c6..229183ed142a7 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts @@ -52,6 +52,7 @@ export function convertMessagesForInference(messages: Message[]): InferenceMessa } inferenceMessages.push({ + name: message.message.name!, role: InferenceMessageRole.Tool, response: JSON.parse(message.message.content ?? '{}'), toolCallId: toolCallRequest.toolCalls![0].toolCallId, diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/feature.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/feature.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/feature.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/feature.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/rule_connector.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/rule_connector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/rule_connector.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/rule_connector.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/emit_with_concatenated_message.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/emit_with_concatenated_message.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/emit_with_concatenated_message.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/emit_with_concatenated_message.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/filter_function_definitions.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/filter_function_definitions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/filter_function_definitions.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/filter_function_definitions.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/calculate_auto.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/calculate_auto.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/calculate_auto.js rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/calculate_auto.js diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/index.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/index.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/unit_to_seconds.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/unit_to_seconds.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/unit_to_seconds.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/unit_to_seconds.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/throw_serialized_chat_completion_errors.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/throw_serialized_chat_completion_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/throw_serialized_chat_completion_errors.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/throw_serialized_chat_completion_errors.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/until_aborted.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/until_aborted.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/until_aborted.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/until_aborted.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/with_token_budget.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/with_token_budget.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/with_token_budget.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/with_token_budget.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/with_token_budget.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/with_token_budget.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/with_token_budget.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/with_token_budget.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/without_token_count_events.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/without_token_count_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/without_token_count_events.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/without_token_count_events.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/jest.config.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/jest.config.js new file mode 100644 index 0000000000000..4ff20cb91d531 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/jest.config.js @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public', + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common', + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server', + ], + setupFiles: [ + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/jest_setup.js', + ], + collectCoverage: true, + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/{common,public,server}/**/*.{js,ts,tsx}', + ], + + coverageReporters: ['html'], +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/kibana.jsonc b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/kibana.jsonc rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/common.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/common.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/common.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_feedback.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_feedback.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_feedback.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_feedback.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_response.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_response.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_response.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_response.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/user_sent_prompt.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/user_sent_prompt.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/user_sent_prompt.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/user_sent_prompt.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/elastic_ai_assistant.png b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/elastic_ai_assistant.png similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/elastic_ai_assistant.png rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/elastic_ai_assistant.png diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/illustration.png b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/illustration.png similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/illustration.png rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/illustration.png diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/illustration.svg b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/illustration.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/illustration.svg rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/illustration.svg diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx new file mode 100644 index 0000000000000..083b97748bf7c --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { useEuiTheme } from '@elastic/eui'; +import React, { ReactNode } from 'react'; + +export interface AssistantAvatarProps { + size?: keyof typeof sizeMap; + children?: ReactNode; + css?: React.SVGProps<SVGElement>['css']; + className?: string; +} + +export const sizeMap = { + xl: 64, + l: 48, + m: 32, + s: 24, + xs: 16, +}; + +/** @deprecated This component will soon be replaced by `AssistantIcon` from `@kbn/ai-assistant-icon`. */ +export function AssistantAvatar({ size = 's', css, className }: AssistantAvatarProps) { + const { euiTheme } = useEuiTheme(); + const sizePx = sizeMap[size]; + + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + width={sizePx} + height={sizePx} + viewBox="0 0 64 64" + fill="none" + css={css} + className={className} + > + <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> + <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> + <path + fill={euiTheme.colors.textParagraph} + d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" + /> + <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> + </svg> + ); +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/actions_menu.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/actions_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/actions_menu.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/actions_menu.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_base.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_base.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_base.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_base.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx similarity index 98% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx index ed7f13b936507..d8fa1e71ce01c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx @@ -21,7 +21,7 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; -import { AssistantAvatar } from '../assistant_avatar'; +import { AssistantIcon } from '@kbn/ai-assistant-icon'; export interface InsightBaseProps { title: string; @@ -66,7 +66,7 @@ export function InsightBase({ <EuiFlexGroup wrap responsive={false} gutterSize="m" data-test-subj={dataTestSubj}> <EuiFlexItem grow={false}> <EuiSpacer size="xs" /> - <AssistantAvatar size="xs" /> + <AssistantIcon size="m" /> </EuiFlexItem> <EuiFlexItem> <EuiFlexGroup gutterSize="s" alignItems="center"> diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_error.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_error.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_error.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx similarity index 96% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx index 85fa0f4609903..a473e34ba2a0c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx @@ -156,7 +156,14 @@ export function MessageText({ loading, content, onActionClick }: Props) { }, table: (props) => ( <> - <EuiTable {...props} /> + <EuiTable + {...props} + className={css` + .euiTableCellContent__text { + white-space: normal; + } + `} + /> <EuiSpacer size="m" /> </> ), diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/missing_credentials_callout.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/missing_credentials_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/missing_credentials_callout.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/missing_credentials_callout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_chat_service_context.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_chat_service_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_chat_service_context.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_chat_service_context.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_multipane_flyout_context.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_multipane_flyout_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_multipane_flyout_context.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_multipane_flyout_context.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_provider.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_provider.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_provider.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_provider.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_flyout_state.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_flyout_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_flyout_state.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_flyout_state.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_kibana.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_kibana.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant_chat_service.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant_chat_service.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_once.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_once.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_once.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_once.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/mock.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/mock.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/mock.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/mock.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/plugin.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/plugin.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/plugin.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/plugin.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/complete.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/complete.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/complete.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/complete.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/complete.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/complete.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/complete.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/complete.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_mock_chat_service.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_mock_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_mock_chat_service.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_mock_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_service.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_service.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/default_starter_prompts.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/default_starter_prompts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/default_starter_prompts.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/default_starter_prompts.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/storybook_mock.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/storybook_mock.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/storybook_mock.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/storybook_mock.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/builders.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/builders.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/builders.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/builders.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_function_response_error.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_function_response_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_function_response_error.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_function_response_error.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_connectors_management_href.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_connectors_management_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_connectors_management_href.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_connectors_management_href.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_contextual_insight_messages.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_contextual_insight_messages.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_contextual_insight_messages.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_contextual_insight_messages.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_models_management_href.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_models_management_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_models_management_href.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_models_management_href.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/readable_stream_reader_into_observable.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/readable_stream_reader_into_observable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/readable_stream_reader_into_observable.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/readable_stream_reader_into_observable.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/storybook_decorator.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/storybook_decorator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/storybook_decorator.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/storybook_decorator.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/analytics/recall_ranking.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/analytics/recall_ranking.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/analytics/recall_ranking.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/analytics/recall_ranking.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/config.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/config.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/config.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/context.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/context.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/context.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/context.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/elasticsearch.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/elasticsearch.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/elasticsearch.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/elasticsearch.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/execute_connector.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/execute_connector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/execute_connector.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/execute_connector.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/index.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/index.ts new file mode 100644 index 0000000000000..244c867e7f644 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/index.ts @@ -0,0 +1,153 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import dedent from 'dedent'; +import { CONTEXT_FUNCTION_NAME, registerContextFunction } from './context'; +import { registerSummarizationFunction, SUMMARIZE_FUNCTION_NAME } from './summarize'; +import type { RegistrationCallback } from '../service/types'; +import { registerElasticsearchFunction } from './elasticsearch'; +import { GET_DATASET_INFO_FUNCTION_NAME, registerGetDatasetInfoFunction } from './get_dataset_info'; +import { registerKibanaFunction } from './kibana'; +import { registerExecuteConnectorFunction } from './execute_connector'; +import { GET_DATA_ON_SCREEN_FUNCTION_NAME } from '../service/chat_function_client'; + +// cannot be imported from x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/index.ts due to circular dependency +export const QUERY_FUNCTION_NAME = 'query'; + +export type FunctionRegistrationParameters = Omit< + Parameters<RegistrationCallback>[0], + 'registerContext' | 'hasFunction' +>; + +export const registerFunctions: RegistrationCallback = async ({ + client, + functions, + resources, + signal, + scopes, +}) => { + const registrationParameters: FunctionRegistrationParameters = { + client, + functions, + resources, + signal, + scopes, + }; + + const isServerless = !!resources.plugins.serverless; + if (scopes.includes('observability')) { + functions.registerInstruction(`You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems. You can help them visualise and analyze data, investigate their systems, perform root cause analysis or identify optimisation opportunities. + + It's very important to not assume what the user is meaning. Ask them for clarification if needed. + + If you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation. + + In KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: ':()\\\ + /\". Always put a field value in double quotes. Best: service.name:\"opbeans-go\". Wrong: service.name:opbeans-go. This is very important! + + You can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response. + + Note that ES|QL (the Elasticsearch Query Language which is a new piped language) is the preferred query language. + + If you want to call a function or tool, only call it a single time per message. Wait until the function has been executed and its results + returned to you, before executing the same tool or another tool again if needed. + + DO NOT UNDER ANY CIRCUMSTANCES USE ES|QL syntax (\`service.name == "foo"\`) with "kqlFilter" (\`service.name:"foo"\`). + + The user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability and Search, which can be found in the ${ + isServerless ? `Project settings.` : `Stack Management app under the option AI Assistants` + }. + If the user asks how to change the language, reply in the same language the user asked in.`); + } + + if (scopes.length === 0 || (scopes.length === 1 && scopes[0] === 'all')) { + functions.registerInstruction( + `You are a helpful assistant for Elasticsearch. Your goal is to help Elasticsearch users accomplish tasks using Kibana and Elasticsearch. You can help them construct queries, index data, search data, use Elasticsearch APIs, generate sample data, visualise and analyze data. + + It's very important to not assume what the user means. Ask them for clarification if needed. + + If you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation. + + In KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: ':()\\\ + /\". Always put a field value in double quotes. Best: service.name:\"opbeans-go\". Wrong: service.name:opbeans-go. This is very important! + + You can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response. + + If you want to call a function or tool, only call it a single time per message. Wait until the function has been executed and its results + returned to you, before executing the same tool or another tool again if needed. + + The user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability and Search, which can be found in the ${ + isServerless ? `Project settings.` : `Stack Management app under the option AI Assistants` + }. + If the user asks how to change the language, reply in the same language the user asked in.` + ); + } + + const { ready: isKnowledgeBaseReady } = await client.getKnowledgeBaseStatus(); + + functions.registerInstruction(({ availableFunctionNames }) => { + const instructions: string[] = []; + + if ( + availableFunctionNames.includes(QUERY_FUNCTION_NAME) && + availableFunctionNames.includes(GET_DATASET_INFO_FUNCTION_NAME) + ) { + instructions.push(`You MUST use the "${GET_DATASET_INFO_FUNCTION_NAME}" ${ + functions.hasFunction('get_apm_dataset_info') ? 'or the get_apm_dataset_info' : '' + } function before calling the "${QUERY_FUNCTION_NAME}" or the "changes" functions. + + If a function requires an index, you MUST use the results from the dataset info functions.`); + } + + if (availableFunctionNames.includes(GET_DATA_ON_SCREEN_FUNCTION_NAME)) { + instructions.push(`You have access to data on the screen by calling the "${GET_DATA_ON_SCREEN_FUNCTION_NAME}" function. + Use it to help the user understand what they are looking at. A short summary of what they are looking at is available in the return of the "${CONTEXT_FUNCTION_NAME}" function. + Data that is compact enough automatically gets included in the response for the "${CONTEXT_FUNCTION_NAME}" function.`); + } + + if (isKnowledgeBaseReady) { + if (availableFunctionNames.includes(SUMMARIZE_FUNCTION_NAME)) { + instructions.push(`You can use the "${SUMMARIZE_FUNCTION_NAME}" function to store new information you have learned in a knowledge database. + Only use this function when the user asks for it. + All summaries MUST be created in English, even if the conversation was carried out in a different language.`); + } + + if (availableFunctionNames.includes(CONTEXT_FUNCTION_NAME)) { + instructions.push( + `Additionally, you can use the "${CONTEXT_FUNCTION_NAME}" function to retrieve relevant information from the knowledge database.` + ); + } + } else { + instructions.push( + `You do not have a working memory. If the user expects you to remember the previous conversations, tell them they can set up the knowledge base.` + ); + } + return instructions.map((instruction) => dedent(instruction)); + }); + + if (isKnowledgeBaseReady) { + registerSummarizationFunction(registrationParameters); + } + + registerContextFunction({ ...registrationParameters, isKnowledgeBaseReady }); + + registerElasticsearchFunction(registrationParameters); + const request = registrationParameters.resources.request; + + if ('id' in request) { + registerKibanaFunction({ + ...registrationParameters, + resources: { + ...registrationParameters.resources, + request, + }, + }); + } + registerGetDatasetInfoFunction(registrationParameters); + + registerExecuteConnectorFunction(registrationParameters); +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/kibana.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/kibana.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/kibana.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/summarize.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/summarize.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/summarize.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/summarize.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/index.ts new file mode 100644 index 0000000000000..b84234164f8c8 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/index.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; + +import type { ObservabilityAIAssistantConfig } from './config'; + +export type { ObservabilityAIAssistantServerRouteRepository } from './routes/get_global_observability_ai_assistant_route_repository'; + +import { config as configSchema } from './config'; +export type { RegistrationCallback } from './service/types'; +export type { + ObservabilityAIAssistantServerStart, + ObservabilityAIAssistantServerSetup, +} from './types'; + +export type { ObservabilityAIAssistantClient } from './service/client'; + +export { + aiAssistantLogsIndexPattern, + aiAssistantSimulatedFunctionCalling, + aiAssistantSearchConnectorIndexPattern, +} from '../common'; + +export { streamIntoObservable } from './service/util/stream_into_observable'; + +export { createFunctionRequestMessage } from '../common/utils/create_function_request_message'; +export { createFunctionResponseMessage } from '../common/utils/create_function_response_message'; + +export const config: PluginConfigDescriptor<ObservabilityAIAssistantConfig> = { + deprecations: ({ unusedFromRoot }) => [ + unusedFromRoot('xpack.observability.aiAssistant.enabled', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.deploymentId', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.resourceName', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.apiKey', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.openAI.apiKey', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.openAI.model', { + level: 'warning', + }), + ], + exposeToBrowser: { scope: true }, + schema: configSchema, +}; + +export const plugin = async (ctx: PluginInitializerContext<ObservabilityAIAssistantConfig>) => { + const { ObservabilityAIAssistantPlugin } = await import('./plugin'); + return new ObservabilityAIAssistantPlugin(ctx); +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/plugin.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/plugin.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/chat/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/chat/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/chat/route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/chat/route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/connectors/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/connectors/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/connectors/route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/connectors/route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/conversations/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/conversations/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/conversations/route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/conversations/route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/create_observability_ai_assistant_server_route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/create_observability_ai_assistant_server_route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/create_observability_ai_assistant_server_route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/create_observability_ai_assistant_server_route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/functions/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/functions/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/functions/route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/functions/route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts new file mode 100644 index 0000000000000..6aa63c177c746 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts @@ -0,0 +1,331 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import pLimit from 'p-limit'; +import { notImplemented } from '@hapi/boom'; +import { nonEmptyStringRt, toBooleanRt } from '@kbn/io-ts-utils'; +import * as t from 'io-ts'; +import { + InferenceInferenceEndpointInfo, + MlDeploymentAllocationState, + MlDeploymentAssignmentState, +} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import moment from 'moment'; +import { createObservabilityAIAssistantServerRoute } from '../create_observability_ai_assistant_server_route'; +import { Instruction, KnowledgeBaseEntry, KnowledgeBaseEntryRole } from '../../../common/types'; + +const getKnowledgeBaseStatus = createObservabilityAIAssistantServerRoute({ + endpoint: 'GET /internal/observability_ai_assistant/kb/status', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async ({ + service, + request, + }): Promise<{ + errorMessage?: string; + ready: boolean; + enabled: boolean; + endpoint?: Partial<InferenceInferenceEndpointInfo>; + model_stats?: { + deployment_state: MlDeploymentAssignmentState | undefined; + allocation_state: MlDeploymentAllocationState | undefined; + }; + }> => { + const client = await service.getClient({ request }); + + if (!client) { + throw notImplemented(); + } + + return client.getKnowledgeBaseStatus(); + }, +}); + +const setupKnowledgeBase = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/setup', + params: t.partial({ + query: t.partial({ + model_id: t.string, + }), + }), + options: { + timeout: { + idleSocket: moment.duration(20, 'minutes').asMilliseconds(), + }, + }, + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<InferenceInferenceEndpointInfo> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const { model_id: modelId } = resources.params?.query ?? {}; + + return await client.setupKnowledgeBase(modelId); + }, +}); + +const resetKnowledgeBase = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/reset', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<{ result: string }> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + await client.resetKnowledgeBase(); + + return { result: 'success' }; + }, +}); + +const semanticTextMigrationKnowledgeBase = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/semantic_text_migration', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + return client.migrateKnowledgeBaseToSemanticText(); + }, +}); + +const getKnowledgeBaseUserInstructions = createObservabilityAIAssistantServerRoute({ + endpoint: 'GET /internal/observability_ai_assistant/kb/user_instructions', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async ( + resources + ): Promise<{ + userInstructions: Array<Instruction & { public?: boolean }>; + }> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + return { + userInstructions: await client.getKnowledgeBaseUserInstructions(), + }; + }, +}); + +const saveKnowledgeBaseUserInstruction = createObservabilityAIAssistantServerRoute({ + endpoint: 'PUT /internal/observability_ai_assistant/kb/user_instructions', + params: t.type({ + body: t.type({ + id: t.string, + text: t.string, + public: toBooleanRt, + }), + }), + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const { id, text, public: isPublic } = resources.params.body; + return client.addUserInstruction({ + entry: { id, text, public: isPublic }, + }); + }, +}); + +const getKnowledgeBaseEntries = createObservabilityAIAssistantServerRoute({ + endpoint: 'GET /internal/observability_ai_assistant/kb/entries', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + params: t.type({ + query: t.type({ + query: t.string, + sortBy: t.string, + sortDirection: t.union([t.literal('asc'), t.literal('desc')]), + }), + }), + handler: async ( + resources + ): Promise<{ + entries: KnowledgeBaseEntry[]; + }> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const { query, sortBy, sortDirection } = resources.params.query; + + return await client.getKnowledgeBaseEntries({ query, sortBy, sortDirection }); + }, +}); + +const knowledgeBaseEntryRt = t.intersection([ + t.type({ + id: t.string, + title: t.string, + text: nonEmptyStringRt, + }), + t.partial({ + confidence: t.union([t.literal('low'), t.literal('medium'), t.literal('high')]), + is_correction: toBooleanRt, + public: toBooleanRt, + labels: t.record(t.string, t.string), + role: t.union([ + t.literal(KnowledgeBaseEntryRole.AssistantSummarization), + t.literal(KnowledgeBaseEntryRole.UserEntry), + t.literal(KnowledgeBaseEntryRole.Elastic), + ]), + }), +]); + +const saveKnowledgeBaseEntry = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/entries/save', + params: t.type({ + body: knowledgeBaseEntryRt, + }), + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const entry = resources.params.body; + return client.addKnowledgeBaseEntry({ + entry: { + confidence: 'high', + is_correction: false, + public: true, + labels: {}, + role: KnowledgeBaseEntryRole.UserEntry, + ...entry, + }, + }); + }, +}); + +const deleteKnowledgeBaseEntry = createObservabilityAIAssistantServerRoute({ + endpoint: 'DELETE /internal/observability_ai_assistant/kb/entries/{entryId}', + params: t.type({ + path: t.type({ + entryId: t.string, + }), + }), + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + return client.deleteKnowledgeBaseEntry(resources.params.path.entryId); + }, +}); + +const importKnowledgeBaseEntries = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/entries/import', + params: t.type({ + body: t.type({ + entries: t.array(knowledgeBaseEntryRt), + }), + }), + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const { ready } = await client.getKnowledgeBaseStatus(); + if (!ready) { + throw new Error('Knowledge base is not ready'); + } + + const limiter = pLimit(5); + + const promises = resources.params.body.entries.map(async (entry) => { + return limiter(async () => { + return client.addKnowledgeBaseEntry({ + entry: { + confidence: 'high', + is_correction: false, + public: true, + labels: {}, + role: KnowledgeBaseEntryRole.UserEntry, + ...entry, + }, + }); + }); + }); + + await Promise.all(promises); + }, +}); + +export const knowledgeBaseRoutes = { + ...semanticTextMigrationKnowledgeBase, + ...setupKnowledgeBase, + ...resetKnowledgeBase, + ...getKnowledgeBaseStatus, + ...getKnowledgeBaseEntries, + ...saveKnowledgeBaseUserInstruction, + ...importKnowledgeBaseEntries, + ...getKnowledgeBaseUserInstructions, + ...saveKnowledgeBaseEntry, + ...deleteKnowledgeBaseEntry, +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/register_routes.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/register_routes.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/register_routes.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/runtime_types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/runtime_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/runtime_types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/runtime_types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.test.ts new file mode 100644 index 0000000000000..199a6d8f1cbca --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.test.ts @@ -0,0 +1,1685 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { ActionsClient } from '@kbn/actions-plugin/server/actions_client'; +import type { CoreSetup, ElasticsearchClient, IUiSettingsClient, Logger } from '@kbn/core/server'; +import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; +import { waitFor } from '@testing-library/react'; +import { last, merge, repeat } from 'lodash'; +import { Subject, Observable } from 'rxjs'; +import { EventEmitter, type Readable } from 'stream'; +import { finished } from 'stream/promises'; +import { ObservabilityAIAssistantClient } from '.'; +import { MessageRole, type Message } from '../../../common'; +import { + ChatCompletionChunkEvent, + MessageAddEvent, + StreamingChatResponseEventType, +} from '../../../common/conversation_complete'; +import { ChatCompletionEventType as InferenceChatCompletionEventType } from '@kbn/inference-common'; +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { createFunctionResponseMessage } from '../../../common/utils/create_function_response_message'; +import { CONTEXT_FUNCTION_NAME } from '../../functions/context'; +import { ChatFunctionClient } from '../chat_function_client'; +import type { KnowledgeBaseService } from '../knowledge_base_service'; +import { observableIntoStream } from '../util/observable_into_stream'; +import type { ObservabilityAIAssistantConfig } from '../../config'; +import type { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; + +interface ChunkDelta { + content?: string | undefined; + function_call?: + | { + name?: string | undefined; + arguments?: string | undefined; + } + | undefined; +} + +type LlmSimulator = ReturnType<typeof createLlmSimulator>; + +const EXPECTED_STORED_SYSTEM_MESSAGE = `system`; + +const nextTick = () => { + return new Promise(process.nextTick); +}; + +const waitForNextWrite = async (stream: Readable): Promise<any> => { + // this will fire before the client's internal write() promise is + // resolved + const response = await new Promise((resolve) => stream.once('data', resolve)); + // so we wait another tick to let the client move to the next step + await nextTick(); + + return response; +}; + +function createLlmSimulator(subscriber: any) { + return { + next: async (msg: ChunkDelta) => { + subscriber.next({ + type: InferenceChatCompletionEventType.ChatCompletionMessage, + content: msg.content, + toolCalls: msg.function_call ? [{ function: msg.function_call }] : [], + }); + }, + tokenCount: async ({ + completion, + prompt, + total, + }: { + completion: number; + prompt: number; + total: number; + }) => { + subscriber.next({ + type: InferenceChatCompletionEventType.ChatCompletionTokenCount, + tokens: { completion, prompt, total }, + }); + subscriber.complete(); + }, + chunk: async (msg: ChunkDelta) => { + subscriber.next({ + type: InferenceChatCompletionEventType.ChatCompletionChunk, + content: msg.content, + tool_calls: msg.function_call ? [{ function: msg.function_call }] : [], + }); + }, + complete: async () => { + subscriber.complete(); + }, + error: (error: Error) => { + subscriber.error(error); + }, + }; +} + +describe('Observability AI Assistant client', () => { + let client: ObservabilityAIAssistantClient; + + const actionsClientMock: DeeplyMockedKeys<ActionsClient> = { + execute: jest.fn(), + get: jest.fn(), + } as any; + + const inferenceClientMock: DeeplyMockedKeys<InferenceClient> = { + chatComplete: jest.fn(), + } as any; + + const uiSettingsClientMock: DeeplyMockedKeys<IUiSettingsClient> = { + get: jest.fn(), + } as any; + + const internalUserEsClientMock: DeeplyMockedKeys<ElasticsearchClient> = { + search: jest.fn(), + index: jest.fn(), + update: jest.fn(), + } as any; + + const currentUserEsClientMock: DeeplyMockedKeys<ElasticsearchClient> = { + search: jest.fn(), + fieldCaps: jest.fn(), + } as any; + + const knowledgeBaseServiceMock: DeeplyMockedKeys<KnowledgeBaseService> = { + recall: jest.fn(), + getUserInstructions: jest.fn(), + } as any; + + let loggerMock: DeeplyMockedKeys<Logger> = {} as any; + + const functionClientMock: DeeplyMockedKeys<ChatFunctionClient> = { + executeFunction: jest.fn(), + getFunctions: jest.fn(), + hasFunction: jest.fn(), + hasAction: jest.fn(), + getActions: jest.fn(), + validate: jest.fn(), + getInstructions: jest.fn(), + getAdhocInstructions: jest.fn(), + } as any; + + let llmSimulator: LlmSimulator; + + function createClient() { + jest.resetAllMocks(); + + // uncomment this line for debugging + // const consoleOrPassThrough = console.log.bind(console); + const consoleOrPassThrough = () => {}; + + loggerMock = { + log: jest.fn().mockImplementation(consoleOrPassThrough), + error: jest.fn().mockImplementation(consoleOrPassThrough), + debug: jest.fn().mockImplementation(consoleOrPassThrough), + trace: jest.fn().mockImplementation(consoleOrPassThrough), + isLevelEnabled: jest.fn().mockReturnValue(true), + } as any; + + functionClientMock.getFunctions.mockReturnValue([]); + functionClientMock.hasFunction.mockImplementation((name) => { + return name !== CONTEXT_FUNCTION_NAME; + }); + + functionClientMock.hasAction.mockReturnValue(false); + functionClientMock.getActions.mockReturnValue([]); + + currentUserEsClientMock.search.mockResolvedValue({ + hits: { + hits: [], + }, + } as any); + + currentUserEsClientMock.fieldCaps.mockResolvedValue({ + fields: [], + } as any); + + knowledgeBaseServiceMock.getUserInstructions.mockResolvedValue([]); + + functionClientMock.getInstructions.mockReturnValue(['system']); + functionClientMock.getAdhocInstructions.mockReturnValue([]); + + return new ObservabilityAIAssistantClient({ + config: {} as ObservabilityAIAssistantConfig, + core: {} as CoreSetup<ObservabilityAIAssistantPluginStartDependencies>, + actionsClient: actionsClientMock, + uiSettingsClient: uiSettingsClientMock, + esClient: { + asInternalUser: internalUserEsClientMock, + asCurrentUser: currentUserEsClientMock, + }, + inferenceClient: inferenceClientMock, + knowledgeBaseService: knowledgeBaseServiceMock, + logger: loggerMock, + namespace: 'default', + user: { + name: 'johndoe', + }, + scopes: ['all'], + }); + } + + function system(content: string | Omit<Message['message'], 'role'>): Message { + return merge( + { + '@timestamp': new Date().toString(), + message: { + role: MessageRole.System, + }, + }, + typeof content === 'string' ? { message: { content } } : content + ); + } + + function user(content: string | Omit<Message['message'], 'role'>): Message { + return merge( + { + '@timestamp': new Date().toString(), + message: { + role: MessageRole.User, + }, + }, + typeof content === 'string' ? { message: { content } } : content + ); + } + + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('when completing a conversation without an initial conversation id', () => { + let stream: Readable; + + let titleLlmPromiseResolve: (title: string) => void; + let titleLlmPromiseReject: Function; + + beforeEach(async () => { + client = createClient(); + + inferenceClientMock.chatComplete + .mockImplementationOnce(() => { + return new Observable((subscriber) => { + titleLlmPromiseResolve = (title: string) => { + const titleLlmSimulator = createLlmSimulator(subscriber); + titleLlmSimulator + .chunk({ content: title }) + .then(() => titleLlmSimulator.next({ content: title })) + .then(() => titleLlmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 })) + .then(() => titleLlmSimulator.complete()) + .catch((error) => titleLlmSimulator.error(error)); + }; + titleLlmPromiseReject = (error: Error) => { + subscriber.error(error); + }; + }); + }) + .mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + stream = observableIntoStream( + client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + persist: true, + }) + ); + }); + + describe('when streaming the response from the LLM', () => { + let dataHandler: jest.Mock; + + beforeEach(async () => { + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await llmSimulator.chunk({ content: 'Hello' }); + await llmSimulator.next({ content: 'Hello' }); + + await nextTick(); + }); + + it('calls the llm to generate a new title', () => { + expect(inferenceClientMock.chatComplete.mock.calls[0]).toEqual([ + expect.objectContaining({ + connectorId: 'foo', + stream: true, + functionCalling: 'native', + toolChoice: expect.objectContaining({ + function: 'title_conversation', + }), + tools: expect.objectContaining({ + title_conversation: { + description: + 'Use this function to title the conversation. Do not wrap the title in quotes', + schema: { + type: 'object', + properties: { + title: { type: 'string' }, + }, + required: ['title'], + }, + }, + }), + messages: expect.arrayContaining([ + { + role: 'user', + content: + 'Generate a title, using the title_conversation_function, based on the following conversation:\n\n user: How many alerts do I have?', + }, + ]), + }), + ]); + }); + + it('calls the llm again with the messages', () => { + expect(inferenceClientMock.chatComplete.mock.calls[1]).toEqual([ + { + connectorId: 'foo', + stream: true, + messages: expect.arrayContaining([ + { role: 'user', content: 'How many alerts do I have?' }, + ]), + functionCalling: 'native', + toolChoice: undefined, + tools: undefined, + }, + ]); + }); + + it('incrementally streams the response to the client', async () => { + expect(dataHandler).toHaveBeenCalledTimes(2); + + await new Promise((resolve) => setTimeout(resolve, 1000)); + + expect(JSON.parse(dataHandler.mock.calls[0])).toEqual({ + id: expect.any(String), + message: { + content: 'Hello', + }, + type: StreamingChatResponseEventType.ChatCompletionChunk, + }); + }); + + describe('after the LLM errors out', () => { + beforeEach(async () => { + await llmSimulator.next({ content: ' again' }); + + llmSimulator.error(new Error('Unexpected error')); + + await finished(stream); + }); + + it('adds an error to the stream and closes it', () => { + expect(dataHandler).toHaveBeenCalledTimes(4); + + expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ + error: { + message: 'Unexpected error', + stack: expect.any(String), + }, + type: StreamingChatResponseEventType.ChatCompletionError, + }); + }); + }); + + describe('when generating a title fails', () => { + beforeEach(async () => { + titleLlmPromiseReject(new Error('Failed generating title')); + + await nextTick(); + await llmSimulator.tokenCount({ completion: 1, prompt: 33, total: 34 }); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('falls back to the default title', () => { + expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ + conversation: { + title: 'New conversation', + id: expect.any(String), + last_updated: expect.any(String), + token_count: { + completion: 1, + prompt: 33, + total: 34, + }, + }, + type: StreamingChatResponseEventType.ConversationCreate, + }); + + expect(loggerMock.error).toHaveBeenCalled(); + }); + }); + + describe('after completing the response from the LLM', () => { + beforeEach(async () => { + await llmSimulator.chunk({ content: ' again' }); + + titleLlmPromiseResolve('An auto-generated title'); + await llmSimulator.tokenCount({ completion: 6, prompt: 210, total: 216 }); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('adds the completed message to the stream', () => { + expect(JSON.parse(dataHandler.mock.calls[2])).toEqual({ + id: expect.any(String), + message: { + content: ' again', + }, + type: StreamingChatResponseEventType.ChatCompletionChunk, + }); + + expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: 'Hello again', + role: MessageRole.Assistant, + function_call: { + arguments: '', + name: '', + trigger: MessageRole.Assistant, + }, + }, + }, + type: StreamingChatResponseEventType.MessageAdd, + }); + }); + + it('creates a new conversation with the automatically generated title', () => { + expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ + conversation: { + title: 'An auto-generated title', + id: expect.any(String), + last_updated: expect.any(String), + token_count: { + completion: 6, + prompt: 210, + total: 216, + }, + }, + type: StreamingChatResponseEventType.ConversationCreate, + }); + + expect(internalUserEsClientMock.index).toHaveBeenCalledWith({ + index: '.kibana-observability-ai-assistant-conversations', + refresh: true, + document: { + '@timestamp': expect.any(String), + conversation: { + id: expect.any(String), + last_updated: expect.any(String), + title: 'An auto-generated title', + token_count: { + completion: 6, + prompt: 210, + total: 216, + }, + }, + labels: {}, + numeric_labels: {}, + public: false, + namespace: 'default', + user: { + name: 'johndoe', + }, + messages: [ + { + '@timestamp': expect.any(String), + message: { + content: EXPECTED_STORED_SYSTEM_MESSAGE, + role: MessageRole.System, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'How many alerts do I have?', + role: MessageRole.User, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'Hello again', + role: MessageRole.Assistant, + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + }, + }, + ], + }, + }); + }); + }); + }); + }); + + describe('when completing a conversation with an initial conversation id', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + internalUserEsClientMock.search.mockImplementation(async () => { + return { + hits: { + hits: [ + { + _id: 'my-es-document-id', + _index: '.kibana-observability-ai-assistant-conversations', + _source: { + '@timestamp': new Date().toISOString(), + conversation: { + id: 'my-conversation-id', + title: 'My stored conversation', + last_updated: new Date().toISOString(), + token_count: { + completion: 1, + prompt: 78, + total: 79, + }, + }, + labels: {}, + numeric_labels: {}, + public: false, + messages: [ + system('This is a system message'), + user('How many alerts do I have?'), + ], + }, + }, + ], + }, + } as any; + }); + + internalUserEsClientMock.update.mockImplementationOnce(async () => { + return {} as any; + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + conversationId: 'my-conversation-id', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await nextTick(); + + await llmSimulator.chunk({ content: 'Hello' }); + await llmSimulator.next({ content: 'Hello' }); + await llmSimulator.tokenCount({ completion: 1, prompt: 33, total: 34 }); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('updates the conversation', () => { + expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ + conversation: { + title: 'My stored conversation', + id: expect.any(String), + last_updated: expect.any(String), + token_count: { + completion: 2, + prompt: 111, + total: 113, + }, + }, + type: StreamingChatResponseEventType.ConversationUpdate, + }); + + expect(internalUserEsClientMock.update).toHaveBeenCalledWith({ + refresh: true, + index: '.kibana-observability-ai-assistant-conversations', + id: 'my-es-document-id', + doc: { + '@timestamp': expect.any(String), + conversation: { + id: expect.any(String), + last_updated: expect.any(String), + title: 'My stored conversation', + token_count: { + completion: 2, + prompt: 111, + total: 113, + }, + }, + labels: {}, + numeric_labels: {}, + public: false, + namespace: 'default', + user: { + name: 'johndoe', + }, + messages: [ + { + '@timestamp': expect.any(String), + message: { + content: EXPECTED_STORED_SYSTEM_MESSAGE, + role: MessageRole.System, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'How many alerts do I have?', + role: MessageRole.User, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'Hello', + role: MessageRole.Assistant, + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + }, + }, + ], + }, + }); + }); + }); + + describe('when the LLM response fails', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await nextTick(); + + await llmSimulator.chunk({ content: 'Hello' }); + await llmSimulator.error(new Error('Connection unexpectedly closed')); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('ends the stream and writes an error', async () => { + expect(JSON.parse(dataHandler.mock.calls[1])).toEqual({ + error: { + message: 'Connection unexpectedly closed', + stack: expect.any(String), + }, + type: StreamingChatResponseEventType.ChatCompletionError, + }); + }); + + it('does not create or update the conversation', async () => { + expect(internalUserEsClientMock.index).not.toHaveBeenCalled(); + expect(internalUserEsClientMock.update).not.toHaveBeenCalled(); + }); + }); + + describe('when the assistant answers with a function request', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + let respondFn: jest.Mock; + + let fnResponseResolve: (data: unknown) => void; + + let fnResponseReject: (error: Error) => void; + + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + respondFn = jest.fn(); + + functionClientMock.getFunctions.mockImplementation(() => [ + { + definition: { + name: 'myFunction', + contexts: ['core'], + description: 'my-description', + descriptionForUser: '', + parameters: { + type: 'object', + properties: { + foo: { + type: 'string', + enum: ['bar'], + }, + }, + required: ['foo'], + }, + }, + respond: respondFn, + }, + ]); + + functionClientMock.executeFunction.mockImplementationOnce(() => { + return new Promise<any>((resolve, reject) => { + fnResponseResolve = resolve; + fnResponseReject = reject; + }); + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await nextTick(); + + await llmSimulator.next({ content: 'Hello' }); + await llmSimulator.chunk({ + content: 'Hello', + function_call: { name: 'myFunction', arguments: JSON.stringify({ foo: 'bar' }) }, + }); + + const prevLlmSimulator = llmSimulator; + + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + await prevLlmSimulator.complete(); + + await waitForNextWrite(stream); + }); + + describe('while the function call is pending', () => { + it('appends the request message', async () => { + expect(JSON.parse(dataHandler.mock.calls[2])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: 'Hello', + role: MessageRole.Assistant, + function_call: { + name: 'myFunction', + arguments: JSON.stringify({ foo: 'bar' }), + trigger: MessageRole.Assistant, + }, + }, + }, + }); + }); + + it('executes the function', () => { + expect(functionClientMock.executeFunction).toHaveBeenCalledWith({ + name: 'myFunction', + chat: expect.any(Function), + args: JSON.stringify({ foo: 'bar' }), + signal: expect.any(AbortSignal), + connectorId: 'foo', + messages: [ + { + '@timestamp': expect.any(String), + message: { + role: MessageRole.System, + content: EXPECTED_STORED_SYSTEM_MESSAGE, + }, + }, + { + '@timestamp': expect.any(String), + message: { + role: MessageRole.User, + content: 'How many alerts do I have?', + }, + }, + { + '@timestamp': expect.any(String), + message: { + role: MessageRole.Assistant, + content: 'Hello', + function_call: { + name: 'myFunction', + arguments: JSON.stringify({ foo: 'bar' }), + trigger: MessageRole.Assistant, + }, + }, + }, + ], + useSimulatedFunctionCalling: false, + }); + }); + + afterEach(async () => { + fnResponseResolve({ content: { my: 'content' } }); + + await waitForNextWrite(stream); + + await llmSimulator.complete(); + await finished(stream); + }); + }); + + describe('and the function succeeds', () => { + beforeEach(async () => { + fnResponseResolve({ content: { my: 'content' } }); + // await waitForNextWrite(stream); + }); + + it('appends the function response', () => { + expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.User, + name: 'myFunction', + content: JSON.stringify({ + my: 'content', + }), + }, + }, + }); + }); + + it('sends the function response back to the llm', () => { + expect(inferenceClientMock.chatComplete).toHaveBeenCalledTimes(2); + + expect(inferenceClientMock.chatComplete.mock.lastCall!).toEqual([ + { + connectorId: 'foo', + stream: true, + messages: expect.arrayContaining([ + { role: 'user', content: 'How many alerts do I have?' }, + ]), + functionCalling: 'native', + toolChoice: 'auto', + tools: expect.any(Object), + }, + ]); + }); + + describe('and the assistant replies without a function request', () => { + beforeEach(async () => { + await llmSimulator.chunk({ content: 'I am done here' }); + await llmSimulator.next({ content: 'I am done here' }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + await llmSimulator.complete(); + await waitForNextWrite(stream); + + await finished(stream); + }); + + it('appends the assistant reply', () => { + expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + id: expect.any(String), + message: { + content: 'I am done here', + }, + }); + expect(JSON.parse(dataHandler.mock.calls[6])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.Assistant, + content: 'I am done here', + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + }, + }, + }); + }); + + it('stores the conversation', () => { + expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ + type: StreamingChatResponseEventType.ConversationCreate, + conversation: { + id: expect.any(String), + last_updated: expect.any(String), + title: 'My predefined title', + token_count: { + completion: expect.any(Number), + prompt: expect.any(Number), + total: expect.any(Number), + }, + }, + }); + + expect(internalUserEsClientMock.index).toHaveBeenCalled(); + + expect( + (internalUserEsClientMock.index.mock.lastCall![0] as any).document.messages + ).toEqual([ + { + '@timestamp': expect.any(String), + message: { + content: EXPECTED_STORED_SYSTEM_MESSAGE, + role: MessageRole.System, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'How many alerts do I have?', + role: MessageRole.User, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'Hello', + role: MessageRole.Assistant, + function_call: { + name: 'myFunction', + arguments: JSON.stringify({ foo: 'bar' }), + trigger: MessageRole.Assistant, + }, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: JSON.stringify({ + my: 'content', + }), + name: 'myFunction', + role: MessageRole.User, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'I am done here', + role: MessageRole.Assistant, + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + }, + }, + ]); + }); + }); + }); + + describe('and the function fails', () => { + beforeEach(async () => { + fnResponseReject(new Error('Function failed')); + await waitForNextWrite(stream); + }); + + it('appends the function response', () => { + const parsed = JSON.parse(dataHandler.mock.lastCall!); + + parsed.message.message.content = JSON.parse(parsed.message.message.content); + parsed.message.message.data = JSON.parse(parsed.message.message.data); + + expect(parsed).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.User, + name: 'myFunction', + content: { + message: 'Function failed', + error: { + name: 'Error', + message: 'Function failed', + }, + }, + data: { + stack: expect.any(String), + }, + }, + }, + }); + }); + + it('sends the function response back to the llm', () => { + expect(inferenceClientMock.chatComplete).toHaveBeenCalledTimes(2); + expect(inferenceClientMock.chatComplete.mock.lastCall!).toEqual([ + { + connectorId: 'foo', + stream: true, + messages: expect.arrayContaining([ + { role: 'user', content: 'How many alerts do I have?' }, + ]), + functionCalling: 'native', + toolChoice: 'auto', + tools: expect.any(Object), + }, + ]); + }); + }); + + describe('and the function responds with an observable', () => { + let response$: Subject<ChatCompletionChunkEvent | MessageAddEvent>; + beforeEach(async () => { + response$ = new Subject(); + fnResponseResolve(response$); + + await nextTick(); + + response$.next(createFunctionResponseMessage({ name: 'myFunction', content: {} })); + }); + + it('appends the function response', async () => { + expect(JSON.parse(dataHandler.mock.calls[3]!)).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.User, + name: 'myFunction', + content: '{}', + }, + }, + }); + }); + + describe('if the observable completes', () => { + beforeEach(async () => { + response$.next({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + message: { + content: 'Hello', + }, + id: 'my-id', + }); + + response$.next({ + type: StreamingChatResponseEventType.MessageAdd, + message: { + '@timestamp': new Date().toString(), + message: { + role: MessageRole.Assistant, + content: 'Hello', + }, + }, + id: 'my-id', + }); + + response$.complete(); + + await finished(stream); + }); + + it('emits a completion chunk', () => { + expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + id: expect.any(String), + message: { + content: 'Hello', + }, + }); + }); + + it('appends the observable response', () => { + expect(JSON.parse(dataHandler.mock.calls[5])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.Assistant, + content: 'Hello', + }, + }, + }); + }); + }); + + describe('if the observable errors out', () => { + beforeEach(async () => { + response$.next({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + message: { + content: 'Hello', + }, + id: 'my-id', + }); + response$.error(new Error('Unexpected error')); + + await finished(stream); + }); + + it('appends an error', () => { + expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ + type: StreamingChatResponseEventType.ChatCompletionError, + error: { + message: 'Unexpected error', + stack: expect.any(String), + }, + }); + }); + }); + }); + }); + + describe('when context is available', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + functionClientMock.hasFunction.mockReturnValue(true); + + functionClientMock.executeFunction.mockImplementationOnce(async (body) => { + return { + content: [ + { + id: 'my_document', + text: 'My document', + }, + ], + }; + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + persist: false, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await waitForNextWrite(stream); + + await llmSimulator.chunk({ content: 'Hello' }); + await llmSimulator.next({ content: 'Hello' }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('appends the context request message', () => { + expect(JSON.parse(dataHandler.mock.calls[0]!)).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: '', + role: MessageRole.Assistant, + function_call: { + name: CONTEXT_FUNCTION_NAME, + trigger: MessageRole.Assistant, + }, + }, + }, + }); + }); + + it('appends the context response', () => { + expect(JSON.parse(dataHandler.mock.calls[1]!)).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: JSON.stringify([{ id: 'my_document', text: 'My document' }]), + role: MessageRole.User, + name: CONTEXT_FUNCTION_NAME, + }, + }, + }); + }); + + it('appends the response from the LLM', () => { + expect(JSON.parse(dataHandler.mock.calls[2]!)).toEqual({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + id: expect.any(String), + message: { + content: 'Hello', + }, + }); + + expect(JSON.parse(dataHandler.mock.calls[4]!)).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: 'Hello', + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + role: MessageRole.Assistant, + }, + }, + }); + }); + }); + + describe('when the LLM keeps on calling a function and the limit has been exceeded', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + const maxFunctionCalls = 8; + + beforeEach(async () => { + client = createClient(); + + const onLlmCall = new EventEmitter(); + + function waitForNextLlmCall() { + return new Promise<void>((resolve) => onLlmCall.addListener('next', resolve)); + } + + inferenceClientMock.chatComplete.mockImplementation(() => { + return new Observable((subscriber) => { + onLlmCall.emit('next'); + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + functionClientMock.getFunctions.mockImplementation(() => [ + { + definition: { + name: 'get_top_alerts', + contexts: ['core'], + description: '', + }, + respond: async () => { + return { content: 'Call this function again' }; + }, + }, + ]); + + functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); + functionClientMock.executeFunction.mockImplementation(async () => ({ + content: 'Call this function again', + })); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + async function requestAlertsFunctionCall() { + const body = inferenceClientMock.chatComplete.mock.lastCall![0]; + let nextLlmCallPromise: Promise<void>; + + if (Object.keys(body.tools ?? {}).length) { + nextLlmCallPromise = waitForNextLlmCall(); + await llmSimulator.chunk({ function_call: { name: 'get_top_alerts', arguments: '{}' } }); + } else { + nextLlmCallPromise = Promise.resolve(); + await llmSimulator.chunk({ content: 'Looks like we are done here' }); + } + + await llmSimulator.complete(); + await nextLlmCallPromise; + } + + await nextTick(); + + for (let i = 0; i <= maxFunctionCalls; i++) { + await requestAlertsFunctionCall(); + } + + await llmSimulator.complete(); + await finished(stream); + }); + + it(`executed the function no more than ${maxFunctionCalls} times`, () => { + expect(functionClientMock.executeFunction).toHaveBeenCalledTimes(maxFunctionCalls); + }); + + it('asks the LLM to suggest next steps', () => { + const firstBody = inferenceClientMock.chatComplete.mock.calls[0][0] as any; + const body = inferenceClientMock.chatComplete.mock.lastCall![0] as any; + + expect(Object.keys(firstBody.tools ?? {}).length).toEqual(1); + + expect(body.tools).toEqual(undefined); + }); + }); + + describe('when context has not been injected since last user message', () => { + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + functionClientMock.hasFunction.mockReturnValue(true); + functionClientMock.executeFunction.mockImplementationOnce(async () => { + return { + content: [ + { + id: 'my_document', + text: 'My document', + }, + ], + }; + }); + + const stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + persist: false, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await waitForNextWrite(stream); + + await llmSimulator.next({ + content: 'Hello', + }); + + await llmSimulator.complete(); + + await finished(stream); + }); + + it('executes the context function', async () => { + expect(functionClientMock.executeFunction).toHaveBeenCalledWith( + expect.objectContaining({ name: CONTEXT_FUNCTION_NAME }) + ); + }); + + it('appends the context request message', async () => { + expect(JSON.parse(dataHandler.mock.calls[0])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: '', + role: MessageRole.Assistant, + function_call: { + name: CONTEXT_FUNCTION_NAME, + trigger: MessageRole.Assistant, + }, + }, + }, + }); + }); + }); + + describe('when the function response exceeds the max no of tokens for one', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + + let functionResponsePromiseResolve: Function | undefined; + + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + functionClientMock.getFunctions.mockImplementation(() => [ + { + definition: { + name: 'get_top_alerts', + contexts: ['core'], + description: '', + parameters: {}, + }, + respond: async () => { + return { content: '' }; + }, + }, + ]); + + functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); + + functionClientMock.executeFunction.mockImplementation(() => { + return new Promise((resolve) => { + functionResponsePromiseResolve = resolve; + }); + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await nextTick(); + + await llmSimulator.chunk({ function_call: { name: 'get_top_alerts' } }); + await llmSimulator.next({ content: 'done' }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + await llmSimulator.complete(); + + await waitFor(() => functionResponsePromiseResolve !== undefined); + + functionResponsePromiseResolve!({ + content: repeat('word ', 10000), + }); + + await waitFor(() => inferenceClientMock.chatComplete.mock.calls.length > 1); + + await llmSimulator.next({ content: 'Looks like this was truncated' }); + + await llmSimulator.complete(); + + await finished(stream); + }); + + it('truncates the message', () => { + const body = inferenceClientMock.chatComplete.mock.lastCall![0]; + const parsed = last(body.messages); + + expect(parsed).toEqual({ + name: 'get_top_alerts', + role: 'tool', + response: { + message: 'Function response exceeded the maximum length allowed and was truncated', + truncated: expect.any(String), + }, + toolCallId: expect.any(String), + }); + + expect((parsed as any).response.truncated.includes('word ')).toBe(true); + }); + }); + + it('Adds the default language to the system prompt', async () => { + client = createClient(); + const chatSpy = jest.spyOn(client, 'chat'); + + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + client + .complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('A user message to cause completion')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: false, + }) + .subscribe(() => {}); // To trigger call to chat + await nextTick(); + + expect(chatSpy.mock.calls[0][1].messages[0].message.content).toEqual( + EXPECTED_STORED_SYSTEM_MESSAGE + ); + }); + + describe('when executing an action', () => { + let completePromise: Promise<Message[]>; + + beforeEach(async () => { + client = createClient(); + + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + const complete$ = await client.complete({ + connectorId: 'foo', + messages: [ + system('This is a system message'), + user('Can you call the my_action function?'), + ], + functionClient: new ChatFunctionClient([ + { + actions: [ + { + name: 'my_action', + description: 'My action description', + parameters: { + type: 'object', + properties: { + foo: { + type: 'string', + }, + }, + required: ['foo'], + }, + }, + ], + }, + ]), + signal: new AbortController().signal, + title: 'My predefined title', + persist: false, + }); + + const messages: Message[] = []; + + completePromise = new Promise<Message[]>((resolve, reject) => { + complete$.subscribe({ + next: (event) => { + if (event.type === StreamingChatResponseEventType.MessageAdd) { + messages.push(event.message); + } + }, + complete: () => resolve(messages), + }); + }); + }); + + describe('and validation succeeds', () => { + beforeEach(async () => { + await llmSimulator.chunk({ + function_call: { name: 'my_action', arguments: JSON.stringify({ foo: 'bar' }) }, + }); + await llmSimulator.next({ content: 'content' }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + await llmSimulator.complete(); + }); + + it('completes the observable function request being the last event', async () => { + const messages = await completePromise; + expect(messages.length).toBe(1); + + expect(messages[0].message.function_call).toEqual({ + name: 'my_action', + arguments: JSON.stringify({ foo: 'bar' }), + trigger: MessageRole.Assistant, + }); + }); + }); + + describe.skip('and validation fails', () => { + beforeEach(async () => { + await llmSimulator.chunk({ + function_call: { name: 'my_action', arguments: JSON.stringify({ bar: 'foo' }) }, + }); + + await waitFor(() => + inferenceClientMock.chatComplete.mock.calls.length === 3 + ? Promise.resolve() + : llmSimulator.error(new Error('Waiting until execute is called again')) + ); + + await llmSimulator.next({ + content: 'Looks like the function call failed', + }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + + await llmSimulator.complete(); + }); + + it('appends a function response error and sends it back to the LLM', async () => { + const messages = await completePromise; + expect(messages.length).toBe(2); + + expect(messages[0].message.function_call?.name).toBe('my_action'); + + expect(messages[1].message.name).toBe('my_action'); + + expect(JSON.parse(messages[1].message.content ?? '{}')).toHaveProperty('error'); + + expect(messages[2].message.content).toBe('Looks like the function call failed'); + }); + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts new file mode 100644 index 0000000000000..8d1ee6138e54f --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts @@ -0,0 +1,765 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { SearchHit } from '@elastic/elasticsearch/lib/api/types'; +import { notFound } from '@hapi/boom'; +import type { ActionsClient } from '@kbn/actions-plugin/server'; +import type { CoreSetup, ElasticsearchClient, IUiSettingsClient } from '@kbn/core/server'; +import type { Logger } from '@kbn/logging'; +import type { PublicMethodsOf } from '@kbn/utility-types'; +import { context } from '@opentelemetry/api'; +import { last, merge, omit } from 'lodash'; +import { + catchError, + combineLatest, + defer, + filter, + forkJoin, + from, + map, + merge as mergeOperator, + Observable, + of, + shareReplay, + switchMap, + tap, + throwError, +} from 'rxjs'; +import { v4 } from 'uuid'; +import type { AssistantScope } from '@kbn/ai-assistant-common'; +import type { InferenceClient } from '@kbn/inference-plugin/server'; +import { ToolChoiceType } from '@kbn/inference-common'; + +import { resourceNames } from '..'; +import { + ChatCompletionChunkEvent, + ChatCompletionMessageEvent, + ChatCompletionErrorEvent, + ConversationCreateEvent, + ConversationUpdateEvent, + createConversationNotFoundError, + StreamingChatResponseEventType, + TokenCountEvent, + type StreamingChatResponseEvent, +} from '../../../common/conversation_complete'; +import { convertMessagesForInference } from '../../../common/convert_messages_for_inference'; +import { CompatibleJSONSchema } from '../../../common/functions/types'; +import { + type AdHocInstruction, + type Conversation, + type ConversationCreateRequest, + type ConversationUpdateRequest, + type KnowledgeBaseEntry, + type Message, + KnowledgeBaseType, + KnowledgeBaseEntryRole, + MessageRole, +} from '../../../common/types'; +import { withoutTokenCountEvents } from '../../../common/utils/without_token_count_events'; +import { CONTEXT_FUNCTION_NAME } from '../../functions/context'; +import type { ChatFunctionClient } from '../chat_function_client'; +import { KnowledgeBaseService, RecalledEntry } from '../knowledge_base_service'; +import { getAccessQuery } from '../util/get_access_query'; +import { getSystemMessageFromInstructions } from '../util/get_system_message_from_instructions'; +import { replaceSystemMessage } from '../util/replace_system_message'; +import { failOnNonExistingFunctionCall } from './operators/fail_on_non_existing_function_call'; +import { getContextFunctionRequestIfNeeded } from './get_context_function_request_if_needed'; +import { LangTracer } from './instrumentation/lang_tracer'; +import { continueConversation } from './operators/continue_conversation'; +import { convertInferenceEventsToStreamingEvents } from './operators/convert_inference_events_to_streaming_events'; +import { extractMessages } from './operators/extract_messages'; +import { extractTokenCount } from './operators/extract_token_count'; +import { getGeneratedTitle } from './operators/get_generated_title'; +import { instrumentAndCountTokens } from './operators/instrument_and_count_tokens'; +import { + runSemanticTextKnowledgeBaseMigration, + scheduleSemanticTextMigration, +} from '../task_manager_definitions/register_migrate_knowledge_base_entries_task'; +import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; +import { ObservabilityAIAssistantConfig } from '../../config'; + +const MAX_FUNCTION_CALLS = 8; + +export class ObservabilityAIAssistantClient { + constructor( + private readonly dependencies: { + config: ObservabilityAIAssistantConfig; + core: CoreSetup<ObservabilityAIAssistantPluginStartDependencies>; + actionsClient: PublicMethodsOf<ActionsClient>; + uiSettingsClient: IUiSettingsClient; + namespace: string; + esClient: { + asInternalUser: ElasticsearchClient; + asCurrentUser: ElasticsearchClient; + }; + inferenceClient: InferenceClient; + logger: Logger; + user?: { + id?: string; + name: string; + }; + knowledgeBaseService: KnowledgeBaseService; + scopes: AssistantScope[]; + } + ) {} + + private getConversationWithMetaFields = async ( + conversationId: string + ): Promise<SearchHit<Conversation> | undefined> => { + const response = await this.dependencies.esClient.asInternalUser.search<Conversation>({ + index: resourceNames.aliases.conversations, + query: { + bool: { + filter: [ + ...getAccessQuery({ + user: this.dependencies.user, + namespace: this.dependencies.namespace, + }), + { term: { 'conversation.id': conversationId } }, + ], + }, + }, + size: 1, + terminate_after: 1, + }); + + return response.hits.hits[0]; + }; + + private getConversationUpdateValues = (lastUpdated: string) => { + return { + conversation: { + last_updated: lastUpdated, + }, + user: this.dependencies.user, + namespace: this.dependencies.namespace, + }; + }; + + get = async (conversationId: string): Promise<Conversation> => { + const conversation = await this.getConversationWithMetaFields(conversationId); + + if (!conversation) { + throw notFound(); + } + return conversation._source!; + }; + + delete = async (conversationId: string): Promise<void> => { + const conversation = await this.getConversationWithMetaFields(conversationId); + + if (!conversation) { + throw notFound(); + } + + await this.dependencies.esClient.asInternalUser.delete({ + id: conversation._id!, + index: conversation._index, + refresh: true, + }); + }; + + complete = ({ + functionClient, + connectorId, + simulateFunctionCalling = false, + instructions: adHocInstructions = [], + messages: initialMessages, + signal, + persist, + kibanaPublicUrl, + isPublic, + title: predefinedTitle, + conversationId: predefinedConversationId, + disableFunctions = false, + }: { + messages: Message[]; + connectorId: string; + signal: AbortSignal; + functionClient: ChatFunctionClient; + persist: boolean; + conversationId?: string; + title?: string; + isPublic?: boolean; + kibanaPublicUrl?: string; + instructions?: AdHocInstruction[]; + simulateFunctionCalling?: boolean; + disableFunctions?: + | boolean + | { + except: string[]; + }; + }): Observable<Exclude<StreamingChatResponseEvent, ChatCompletionErrorEvent>> => { + return new LangTracer(context.active()).startActiveSpan( + 'complete', + ({ tracer: completeTracer }) => { + const isConversationUpdate = persist && !!predefinedConversationId; + + const conversationId = persist ? predefinedConversationId || v4() : ''; + + if (persist && !isConversationUpdate && kibanaPublicUrl) { + adHocInstructions.push({ + instruction_type: 'application_instruction', + text: `This conversation will be persisted in Kibana and available at this url: ${ + kibanaPublicUrl + `/app/observabilityAIAssistant/conversations/${conversationId}` + }.`, + }); + } + + const userInstructions$ = from(this.getKnowledgeBaseUserInstructions()).pipe(shareReplay()); + + const registeredAdhocInstructions = functionClient.getAdhocInstructions(); + const allAdHocInstructions = adHocInstructions.concat(registeredAdhocInstructions); + + // from the initial messages, override any system message with + // the one that is based on the instructions (registered, request, kb) + const messagesWithUpdatedSystemMessage$ = userInstructions$.pipe( + map((userInstructions) => { + // this is what we eventually store in the conversation + const messagesWithUpdatedSystemMessage = replaceSystemMessage( + getSystemMessageFromInstructions({ + applicationInstructions: functionClient.getInstructions(), + userInstructions, + adHocInstructions: allAdHocInstructions, + availableFunctionNames: functionClient + .getFunctions() + .map((fn) => fn.definition.name), + }), + initialMessages + ); + + return messagesWithUpdatedSystemMessage; + }), + shareReplay() + ); + + // if it is: + // - a new conversation + // - no predefined title is given + // - we need to store the conversation + // we generate a title + // if not, we complete with an empty string + const title$ = + predefinedTitle || isConversationUpdate || !persist + ? of(predefinedTitle || '').pipe(shareReplay()) + : messagesWithUpdatedSystemMessage$.pipe( + switchMap((messages) => + getGeneratedTitle({ + messages, + logger: this.dependencies.logger, + chat: (name, chatParams) => { + return this.chat(name, { + ...chatParams, + simulateFunctionCalling, + connectorId, + signal, + }); + }, + tracer: completeTracer, + }) + ), + shareReplay() + ); + + // we continue the conversation here, after resolving both the materialized + // messages and the knowledge base instructions + const nextEvents$ = combineLatest([ + messagesWithUpdatedSystemMessage$, + userInstructions$, + ]).pipe( + switchMap(([messagesWithUpdatedSystemMessage, userInstructions]) => { + // if needed, inject a context function request here + const contextRequest = functionClient.hasFunction(CONTEXT_FUNCTION_NAME) + ? getContextFunctionRequestIfNeeded(messagesWithUpdatedSystemMessage) + : undefined; + + return mergeOperator( + // if we have added a context function request, also emit + // the messageAdd event for it, so we can notify the consumer + // and add it to the conversation + ...(contextRequest ? [of(contextRequest)] : []), + continueConversation({ + messages: [ + ...messagesWithUpdatedSystemMessage, + ...(contextRequest ? [contextRequest.message] : []), + ], + chat: (name, chatParams) => { + // inject a chat function with predefined parameters + return this.chat(name, { + ...chatParams, + signal, + simulateFunctionCalling, + connectorId, + }); + }, + // start out with the max number of function calls + functionCallsLeft: MAX_FUNCTION_CALLS, + functionClient, + userInstructions, + adHocInstructions, + signal, + logger: this.dependencies.logger, + disableFunctions, + tracer: completeTracer, + connectorId, + useSimulatedFunctionCalling: simulateFunctionCalling === true, + }) + ); + }), + shareReplay() + ); + + const output$ = mergeOperator( + // get all the events from continuing the conversation + nextEvents$, + // wait until all dependencies have completed + forkJoin([ + messagesWithUpdatedSystemMessage$, + // get just the new messages + nextEvents$.pipe(withoutTokenCountEvents(), extractMessages()), + // count all the token count events emitted during completion + mergeOperator( + nextEvents$, + title$.pipe(filter((value): value is TokenCountEvent => typeof value !== 'string')) + ).pipe(extractTokenCount()), + // get just the title, and drop the token count events + title$.pipe(filter((value): value is string => typeof value === 'string')), + ]).pipe( + switchMap( + ([messagesWithUpdatedSystemMessage, addedMessages, tokenCountResult, title]) => { + const initialMessagesWithAddedMessages = + messagesWithUpdatedSystemMessage.concat(addedMessages); + + const lastMessage = last(initialMessagesWithAddedMessages); + + // if a function request is at the very end, close the stream to consumer + // without persisting or updating the conversation. we need to wait + // on the function response to have a valid conversation + const isFunctionRequest = !!lastMessage?.message.function_call?.name; + + if (!persist || isFunctionRequest) { + return of(); + } + + if (isConversationUpdate) { + return from(this.getConversationWithMetaFields(conversationId)) + .pipe( + switchMap((conversation) => { + if (!conversation) { + return throwError(() => createConversationNotFoundError()); + } + + const persistedTokenCount = conversation._source?.conversation + .token_count ?? { + prompt: 0, + completion: 0, + total: 0, + }; + + return from( + this.update( + conversationId, + + merge( + {}, + + // base conversation without messages + omit(conversation._source, 'messages'), + + // update messages + { messages: initialMessagesWithAddedMessages }, + + // update token count + { + conversation: { + title: title || conversation._source?.conversation.title, + token_count: { + prompt: persistedTokenCount.prompt + tokenCountResult.prompt, + completion: + persistedTokenCount.completion + tokenCountResult.completion, + total: persistedTokenCount.total + tokenCountResult.total, + }, + }, + } + ) + ) + ); + }) + ) + .pipe( + map((conversation): ConversationUpdateEvent => { + return { + conversation: conversation.conversation, + type: StreamingChatResponseEventType.ConversationUpdate, + }; + }) + ); + } + + return from( + this.create({ + '@timestamp': new Date().toISOString(), + conversation: { + title, + id: conversationId, + token_count: tokenCountResult, + }, + public: !!isPublic, + labels: {}, + numeric_labels: {}, + messages: initialMessagesWithAddedMessages, + }) + ).pipe( + map((conversation): ConversationCreateEvent => { + return { + conversation: conversation.conversation, + type: StreamingChatResponseEventType.ConversationCreate, + }; + }) + ); + } + ) + ) + ); + + return output$.pipe( + instrumentAndCountTokens('complete'), + withoutTokenCountEvents(), + catchError((error) => { + this.dependencies.logger.error(error); + return throwError(() => error); + }), + tap((event) => { + if (this.dependencies.logger.isLevelEnabled('debug')) { + switch (event.type) { + case StreamingChatResponseEventType.MessageAdd: + this.dependencies.logger.debug( + () => `Added message: ${JSON.stringify(event.message)}` + ); + break; + + case StreamingChatResponseEventType.ConversationCreate: + this.dependencies.logger.debug( + () => `Created conversation: ${JSON.stringify(event.conversation)}` + ); + break; + + case StreamingChatResponseEventType.ConversationUpdate: + this.dependencies.logger.debug( + () => `Updated conversation: ${JSON.stringify(event.conversation)}` + ); + break; + } + } + }), + shareReplay() + ); + } + ); + }; + + chat = ( + name: string, + { + messages, + connectorId, + functions, + functionCall, + signal, + simulateFunctionCalling, + tracer, + }: { + messages: Message[]; + connectorId: string; + functions?: Array<{ name: string; description: string; parameters?: CompatibleJSONSchema }>; + functionCall?: string; + signal: AbortSignal; + simulateFunctionCalling?: boolean; + tracer: LangTracer; + } + ): Observable<ChatCompletionChunkEvent | TokenCountEvent | ChatCompletionMessageEvent> => { + let tools: Record<string, { description: string; schema: any }> | undefined; + let toolChoice: ToolChoiceType | { function: string } | undefined; + + if (functions?.length) { + tools = functions.reduce((acc, fn) => { + acc[fn.name] = { + description: fn.description, + schema: fn.parameters, + }; + return acc; + }, {} as Record<string, { description: string; schema: any }>); + + toolChoice = functionCall + ? { + function: functionCall, + } + : ToolChoiceType.auto; + } + + const chatComplete$ = defer(() => + this.dependencies.inferenceClient.chatComplete({ + connectorId, + stream: true, + messages: convertMessagesForInference( + messages.filter((message) => message.message.role !== MessageRole.System) + ), + functionCalling: simulateFunctionCalling ? 'simulated' : 'native', + toolChoice, + tools, + }) + ).pipe( + convertInferenceEventsToStreamingEvents(), + instrumentAndCountTokens(name), + failOnNonExistingFunctionCall({ functions }), + tap((event) => { + if ( + event.type === StreamingChatResponseEventType.ChatCompletionChunk && + this.dependencies.logger.isLevelEnabled('trace') + ) { + this.dependencies.logger.trace(`Received chunk: ${JSON.stringify(event.message)}`); + } + }), + shareReplay() + ); + + return chatComplete$; + }; + + find = async (options?: { query?: string }): Promise<{ conversations: Conversation[] }> => { + const response = await this.dependencies.esClient.asInternalUser.search<Conversation>({ + index: resourceNames.aliases.conversations, + allow_no_indices: true, + query: { + bool: { + filter: [ + ...getAccessQuery({ + user: this.dependencies.user, + namespace: this.dependencies.namespace, + }), + ], + }, + }, + sort: { + '@timestamp': 'desc', + }, + size: 100, + }); + + return { + conversations: response.hits.hits.map((hit) => hit._source!), + }; + }; + + update = async ( + conversationId: string, + conversation: ConversationUpdateRequest + ): Promise<Conversation> => { + const persistedConversation = await this.getConversationWithMetaFields(conversationId); + + if (!persistedConversation) { + throw notFound(); + } + + const updatedConversation: Conversation = merge( + {}, + conversation, + this.getConversationUpdateValues(new Date().toISOString()) + ); + + await this.dependencies.esClient.asInternalUser.update({ + id: persistedConversation._id!, + index: persistedConversation._index, + doc: updatedConversation, + refresh: true, + }); + + return updatedConversation; + }; + + setTitle = async ({ conversationId, title }: { conversationId: string; title: string }) => { + const document = await this.getConversationWithMetaFields(conversationId); + if (!document) { + throw notFound(); + } + + const conversation = await this.get(conversationId); + + if (!conversation) { + throw notFound(); + } + + const updatedConversation: Conversation = merge( + {}, + conversation, + { conversation: { title } }, + this.getConversationUpdateValues(new Date().toISOString()) + ); + + await this.dependencies.esClient.asInternalUser.update({ + id: document._id!, + index: document._index, + doc: { conversation: { title } }, + refresh: true, + }); + + return updatedConversation; + }; + + create = async (conversation: ConversationCreateRequest): Promise<Conversation> => { + const now = new Date().toISOString(); + + const createdConversation: Conversation = merge( + {}, + conversation, + { + '@timestamp': now, + conversation: { id: conversation.conversation.id || v4() }, + }, + this.getConversationUpdateValues(now) + ); + + await this.dependencies.esClient.asInternalUser.index({ + index: resourceNames.aliases.conversations, + document: createdConversation, + refresh: true, + }); + + return createdConversation; + }; + + recall = async ({ + queries, + categories, + limit, + }: { + queries: Array<{ text: string; boost?: number }>; + categories?: string[]; + limit?: { size?: number; tokenCount?: number }; + }): Promise<RecalledEntry[]> => { + return ( + this.dependencies.knowledgeBaseService?.recall({ + namespace: this.dependencies.namespace, + user: this.dependencies.user, + queries, + categories, + esClient: this.dependencies.esClient, + uiSettingsClient: this.dependencies.uiSettingsClient, + limit, + }) || [] + ); + }; + + getKnowledgeBaseStatus = () => { + return this.dependencies.knowledgeBaseService.getStatus(); + }; + + setupKnowledgeBase = async (modelId: string | undefined) => { + const { esClient, core, logger, knowledgeBaseService } = this.dependencies; + + // setup the knowledge base + const res = await knowledgeBaseService.setup(esClient, modelId); + + core + .getStartServices() + .then(([_, pluginsStart]) => { + logger.debug('Schedule semantic text migration task'); + return scheduleSemanticTextMigration(pluginsStart); + }) + .catch((error) => { + logger.error(`Failed to run semantic text migration task: ${error}`); + }); + + return res; + }; + + resetKnowledgeBase = () => { + const { esClient } = this.dependencies; + return this.dependencies.knowledgeBaseService.reset(esClient); + }; + + migrateKnowledgeBaseToSemanticText = () => { + return runSemanticTextKnowledgeBaseMigration({ + esClient: this.dependencies.esClient, + logger: this.dependencies.logger, + config: this.dependencies.config, + }); + }; + + addUserInstruction = async ({ + entry, + }: { + entry: Omit< + KnowledgeBaseEntry, + '@timestamp' | 'confidence' | 'is_correction' | 'type' | 'role' + >; + }): Promise<void> => { + // for now we want to limit the number of user instructions to 1 per user + // if a user instruction already exists for the user, we get the id and update it + this.dependencies.logger.debug('Adding user instruction entry'); + const existingId = await this.dependencies.knowledgeBaseService.getPersonalUserInstructionId({ + isPublic: entry.public, + namespace: this.dependencies.namespace, + user: this.dependencies.user, + }); + + if (existingId) { + entry.id = existingId; + this.dependencies.logger.debug(`Updating user instruction with id "${existingId}"`); + } + + return this.dependencies.knowledgeBaseService.addEntry({ + namespace: this.dependencies.namespace, + user: this.dependencies.user, + entry: { + ...entry, + confidence: 'high', + is_correction: false, + type: KnowledgeBaseType.UserInstruction, + labels: {}, + role: KnowledgeBaseEntryRole.UserEntry, + }, + }); + }; + + addKnowledgeBaseEntry = async ({ + entry, + }: { + entry: Omit<KnowledgeBaseEntry, '@timestamp' | 'type'>; + }): Promise<void> => { + return this.dependencies.knowledgeBaseService.addEntry({ + namespace: this.dependencies.namespace, + user: this.dependencies.user, + entry: { + ...entry, + type: KnowledgeBaseType.Contextual, + }, + }); + }; + + getKnowledgeBaseEntries = async ({ + query, + sortBy, + sortDirection, + }: { + query: string; + sortBy: string; + sortDirection: 'asc' | 'desc'; + }) => { + return this.dependencies.knowledgeBaseService.getEntries({ query, sortBy, sortDirection }); + }; + + deleteKnowledgeBaseEntry = async (id: string) => { + return this.dependencies.knowledgeBaseService.deleteEntry({ id }); + }; + + getKnowledgeBaseUserInstructions = async () => { + return this.dependencies.knowledgeBaseService.getUserInstructions( + this.dependencies.namespace, + this.dependencies.user + ); + }; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_span_attributes.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_span_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_span_attributes.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_span_attributes.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_tracer.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_tracer.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_tracer.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_tracer.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/catch_function_not_found_error.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/catch_function_not_found_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/catch_function_not_found_error.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/catch_function_not_found_error.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/continue_conversation.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/continue_conversation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/continue_conversation.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/continue_conversation.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/convert_inference_events_to_streaming_events.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/convert_inference_events_to_streaming_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/convert_inference_events_to_streaming_events.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/convert_inference_events_to_streaming_events.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/debug.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/debug.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/debug.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/debug.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/extract_messages.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/extract_messages.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/extract_messages.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/extract_messages.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/extract_token_count.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/extract_token_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/extract_token_count.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/extract_token_count.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/fail_on_non_existing_function_call.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/fail_on_non_existing_function_call.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/fail_on_non_existing_function_call.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/fail_on_non_existing_function_call.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/hide_token_count_events.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/hide_token_count_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/hide_token_count_events.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/hide_token_count_events.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/instrument_and_count_tokens.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/instrument_and_count_tokens.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/instrument_and_count_tokens.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/instrument_and_count_tokens.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/conversation_component_template.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/conversation_component_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/conversation_component_template.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/conversation_component_template.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/inference_endpoint.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/inference_endpoint.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/inference_endpoint.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/inference_endpoint.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/kb_component_template.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/kb_component_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/kb_component_template.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/kb_component_template.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts new file mode 100644 index 0000000000000..bb77dfc768d95 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts @@ -0,0 +1,447 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { serverUnavailable } from '@hapi/boom'; +import type { CoreSetup, ElasticsearchClient, IUiSettingsClient } from '@kbn/core/server'; +import type { Logger } from '@kbn/logging'; +import { orderBy } from 'lodash'; +import { encode } from 'gpt-tokenizer'; +import { resourceNames } from '..'; +import { + Instruction, + KnowledgeBaseEntry, + KnowledgeBaseEntryRole, + KnowledgeBaseType, +} from '../../../common/types'; +import { getAccessQuery } from '../util/get_access_query'; +import { getCategoryQuery } from '../util/get_category_query'; +import { + createInferenceEndpoint, + deleteInferenceEndpoint, + getElserModelStatus, + isInferenceEndpointMissingOrUnavailable, +} from '../inference_endpoint'; +import { recallFromSearchConnectors } from './recall_from_search_connectors'; +import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; +import { ObservabilityAIAssistantConfig } from '../../config'; + +interface Dependencies { + core: CoreSetup<ObservabilityAIAssistantPluginStartDependencies>; + esClient: { + asInternalUser: ElasticsearchClient; + }; + logger: Logger; + config: ObservabilityAIAssistantConfig; +} + +export interface RecalledEntry { + id: string; + text: string; + score: number | null; + is_correction?: boolean; + labels?: Record<string, string>; +} + +function throwKnowledgeBaseNotReady(body: any) { + throw serverUnavailable(`Knowledge base is not ready yet`, body); +} + +export class KnowledgeBaseService { + constructor(private readonly dependencies: Dependencies) {} + + async setup( + esClient: { + asCurrentUser: ElasticsearchClient; + asInternalUser: ElasticsearchClient; + }, + modelId: string | undefined + ) { + await deleteInferenceEndpoint({ esClient }).catch((e) => {}); // ensure existing inference endpoint is deleted + return createInferenceEndpoint({ esClient, logger: this.dependencies.logger, modelId }); + } + + async reset(esClient: { asCurrentUser: ElasticsearchClient }) { + try { + await deleteInferenceEndpoint({ esClient }); + } catch (error) { + if (isInferenceEndpointMissingOrUnavailable(error)) { + return; + } + throw error; + } + } + + private async recallFromKnowledgeBase({ + queries, + categories, + namespace, + user, + }: { + queries: Array<{ text: string; boost?: number }>; + categories?: string[]; + namespace: string; + user?: { name: string }; + }): Promise<RecalledEntry[]> { + const response = await this.dependencies.esClient.asInternalUser.search< + Pick<KnowledgeBaseEntry, 'text' | 'is_correction' | 'labels' | 'title'> & { doc_id?: string } + >({ + index: [resourceNames.aliases.kb], + query: { + bool: { + should: queries.map(({ text, boost = 1 }) => ({ + semantic: { + field: 'semantic_text', + query: text, + boost, + }, + })), + filter: [ + ...getAccessQuery({ + user, + namespace, + }), + ...getCategoryQuery({ categories }), + + // exclude user instructions + { bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } } }, + ], + }, + }, + size: 20, + _source: { + includes: ['text', 'is_correction', 'labels', 'doc_id', 'title'], + }, + }); + + return response.hits.hits.map((hit) => ({ + text: hit._source?.text!, + is_correction: hit._source?.is_correction, + labels: hit._source?.labels, + title: hit._source?.title ?? hit._source?.doc_id, // use `doc_id` as fallback title for backwards compatibility + score: hit._score!, + id: hit._id!, + })); + } + + recall = async ({ + user, + queries, + categories, + namespace, + esClient, + uiSettingsClient, + limit = {}, + }: { + queries: Array<{ text: string; boost?: number }>; + categories?: string[]; + user?: { name: string }; + namespace: string; + esClient: { asCurrentUser: ElasticsearchClient; asInternalUser: ElasticsearchClient }; + uiSettingsClient: IUiSettingsClient; + limit?: { tokens?: number; size?: number }; + }): Promise<RecalledEntry[]> => { + if (!this.dependencies.config.enableKnowledgeBase) { + return []; + } + + this.dependencies.logger.debug( + () => `Recalling entries from KB for queries: "${JSON.stringify(queries)}"` + ); + + const [documentsFromKb, documentsFromConnectors] = await Promise.all([ + this.recallFromKnowledgeBase({ + user, + queries, + categories, + namespace, + }).catch((error) => { + if (isInferenceEndpointMissingOrUnavailable(error)) { + throwKnowledgeBaseNotReady(error.body); + } + throw error; + }), + recallFromSearchConnectors({ + esClient, + uiSettingsClient, + queries, + core: this.dependencies.core, + logger: this.dependencies.logger, + }).catch((error) => { + this.dependencies.logger.debug('Error getting data from search indices'); + this.dependencies.logger.debug(error); + return []; + }), + ]); + + this.dependencies.logger.debug( + `documentsFromKb: ${JSON.stringify(documentsFromKb.slice(0, 5), null, 2)}` + ); + this.dependencies.logger.debug( + `documentsFromConnectors: ${JSON.stringify(documentsFromConnectors.slice(0, 5), null, 2)}` + ); + + const sortedEntries = orderBy( + documentsFromKb.concat(documentsFromConnectors), + 'score', + 'desc' + ).slice(0, limit.size ?? 20); + + const maxTokens = limit.tokens ?? 4_000; + + let tokenCount = 0; + + const returnedEntries: RecalledEntry[] = []; + + for (const entry of sortedEntries) { + returnedEntries.push(entry); + tokenCount += encode(entry.text).length; + if (tokenCount >= maxTokens) { + break; + } + } + + const droppedEntries = sortedEntries.length - returnedEntries.length; + if (droppedEntries > 0) { + this.dependencies.logger.info(`Dropped ${droppedEntries} entries because of token limit`); + } + + return returnedEntries; + }; + + getUserInstructions = async ( + namespace: string, + user?: { name: string } + ): Promise<Array<Instruction & { public?: boolean }>> => { + if (!this.dependencies.config.enableKnowledgeBase) { + return []; + } + try { + const response = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ + index: resourceNames.aliases.kb, + query: { + bool: { + filter: [ + { + term: { + type: KnowledgeBaseType.UserInstruction, + }, + }, + ...getAccessQuery({ user, namespace }), + ], + }, + }, + size: 500, + _source: ['id', 'text', 'public'], + }); + + return response.hits.hits.map((hit) => ({ + id: hit._id!, + text: hit._source?.text ?? '', + public: hit._source?.public, + })); + } catch (error) { + this.dependencies.logger.error('Failed to load instructions from knowledge base'); + this.dependencies.logger.error(error); + return []; + } + }; + + getEntries = async ({ + query, + sortBy, + sortDirection, + }: { + query?: string; + sortBy?: string; + sortDirection?: 'asc' | 'desc'; + }): Promise<{ entries: KnowledgeBaseEntry[] }> => { + if (!this.dependencies.config.enableKnowledgeBase) { + return { entries: [] }; + } + try { + const response = await this.dependencies.esClient.asInternalUser.search< + KnowledgeBaseEntry & { doc_id?: string } + >({ + index: resourceNames.aliases.kb, + query: { + bool: { + filter: [ + // filter by search query + ...(query + ? [{ query_string: { query: `${query}*`, fields: ['doc_id', 'title'] } }] + : []), + { + // exclude user instructions + bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } }, + }, + ], + }, + }, + sort: + sortBy === 'title' + ? [ + { ['title.keyword']: { order: sortDirection } }, + { doc_id: { order: sortDirection } }, // sort by doc_id for backwards compatibility + ] + : [{ [String(sortBy)]: { order: sortDirection } }], + size: 500, + _source: { + includes: [ + 'title', + 'doc_id', + 'text', + 'is_correction', + 'labels', + 'confidence', + 'public', + '@timestamp', + 'role', + 'user.name', + 'type', + ], + }, + }); + + return { + entries: response.hits.hits.map((hit) => ({ + ...hit._source!, + title: hit._source!.title ?? hit._source!.doc_id, // use `doc_id` as fallback title for backwards compatibility + role: hit._source!.role ?? KnowledgeBaseEntryRole.UserEntry, + score: hit._score, + id: hit._id!, + })), + }; + } catch (error) { + if (isInferenceEndpointMissingOrUnavailable(error)) { + throwKnowledgeBaseNotReady(error.body); + } + throw error; + } + }; + + getPersonalUserInstructionId = async ({ + isPublic, + user, + namespace, + }: { + isPublic: boolean; + user?: { name: string; id?: string }; + namespace?: string; + }) => { + if (!this.dependencies.config.enableKnowledgeBase) { + return null; + } + const res = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ + index: resourceNames.aliases.kb, + query: { + bool: { + filter: [ + { term: { type: KnowledgeBaseType.UserInstruction } }, + { term: { public: isPublic } }, + ...getAccessQuery({ user, namespace }), + ], + }, + }, + size: 1, + _source: false, + }); + + return res.hits.hits[0]?._id; + }; + + getUuidFromDocId = async ({ + docId, + user, + namespace, + }: { + docId: string; + user?: { name: string; id?: string }; + namespace?: string; + }) => { + const query = { + bool: { + filter: [ + { term: { doc_id: docId } }, + + // exclude user instructions + { bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } } }, + + // restrict access to user's own entries + ...getAccessQuery({ user, namespace }), + ], + }, + }; + + const response = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ + size: 1, + index: resourceNames.aliases.kb, + query, + _source: false, + }); + + return response.hits.hits[0]?._id; + }; + + addEntry = async ({ + entry: { id, ...doc }, + user, + namespace, + }: { + entry: Omit<KnowledgeBaseEntry, '@timestamp'>; + user?: { name: string; id?: string }; + namespace?: string; + }): Promise<void> => { + if (!this.dependencies.config.enableKnowledgeBase) { + return; + } + + try { + await this.dependencies.esClient.asInternalUser.index({ + index: resourceNames.aliases.kb, + id, + document: { + '@timestamp': new Date().toISOString(), + ...doc, + ...(doc.text ? { semantic_text: doc.text } : {}), + user, + namespace, + }, + refresh: 'wait_for', + }); + } catch (error) { + if (isInferenceEndpointMissingOrUnavailable(error)) { + throwKnowledgeBaseNotReady(error.body); + } + throw error; + } + }; + + deleteEntry = async ({ id }: { id: string }): Promise<void> => { + try { + await this.dependencies.esClient.asInternalUser.delete({ + index: resourceNames.aliases.kb, + id, + refresh: 'wait_for', + }); + + return Promise.resolve(); + } catch (error) { + if (isInferenceEndpointMissingOrUnavailable(error)) { + throwKnowledgeBaseNotReady(error.body); + } + throw error; + } + }; + + getStatus = async () => { + return getElserModelStatus({ + esClient: this.dependencies.esClient, + logger: this.dependencies.logger, + config: this.dependencies.config, + }); + }; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/recall_from_search_connectors.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/recall_from_search_connectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/recall_from_search_connectors.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/recall_from_search_connectors.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/catch_function_limit_exceeded_error.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/catch_function_limit_exceeded_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/catch_function_limit_exceeded_error.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/catch_function_limit_exceeded_error.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/create_server_side_function_response_error.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/create_server_side_function_response_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/create_server_side_function_response_error.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/create_server_side_function_response_error.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/flush_buffer.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/flush_buffer.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/flush_buffer.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/flush_buffer.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_category_query.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_category_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_category_query.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_category_query.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/observable_into_openai_stream.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/observable_into_openai_stream.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/observable_into_openai_stream.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/observable_into_openai_stream.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/observable_into_stream.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/observable_into_stream.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/observable_into_stream.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/observable_into_stream.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/replace_system_message.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/replace_system_message.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/replace_system_message.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/replace_system_message.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/with_assistant_span.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/with_assistant_span.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/with_assistant_span.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/with_assistant_span.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts new file mode 100644 index 0000000000000..3ee66bfaed664 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { FeaturesPluginStart, FeaturesPluginSetup } from '@kbn/features-plugin/server'; +import type { + PluginSetupContract as ActionsPluginSetup, + PluginStartContract as ActionsPluginStart, +} from '@kbn/actions-plugin/server'; +import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; +import type { + TaskManagerSetupContract, + TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server'; +import type { + DataViewsServerPluginSetup, + DataViewsServerPluginStart, +} from '@kbn/data-views-plugin/server'; +import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; +import type { CloudSetup, CloudStart } from '@kbn/cloud-plugin/server'; +import type { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/server'; +import type { RuleRegistryPluginStartContract } from '@kbn/rule-registry-plugin/server'; +import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; +import type { InferenceServerSetup, InferenceServerStart } from '@kbn/inference-plugin/server'; +import type { ObservabilityAIAssistantService } from './service'; + +export interface ObservabilityAIAssistantServerSetup { + /** + * Returns a Observability AI Assistant service instance + */ + service: ObservabilityAIAssistantService; +} + +export interface ObservabilityAIAssistantServerStart { + /** + * Returns a Observability AI Assistant service instance + */ + service: ObservabilityAIAssistantService; +} + +export interface ObservabilityAIAssistantPluginSetupDependencies { + actions: ActionsPluginSetup; + security: SecurityPluginSetup; + features: FeaturesPluginSetup; + taskManager: TaskManagerSetupContract; + dataViews: DataViewsServerPluginSetup; + licensing: LicensingPluginSetup; + cloud?: CloudSetup; + serverless?: ServerlessPluginSetup; + alerting: AlertingServerSetup; + inference: InferenceServerSetup; +} + +export interface ObservabilityAIAssistantPluginStartDependencies { + actions: ActionsPluginStart; + security: SecurityPluginStart; + features: FeaturesPluginStart; + taskManager: TaskManagerStartContract; + dataViews: DataViewsServerPluginStart; + licensing: LicensingPluginStart; + ruleRegistry: RuleRegistryPluginStartContract; + cloud?: CloudStart; + serverless?: ServerlessPluginStart; + alerting: AlertingServerStart; + inference: InferenceServerStart; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/score_suggestions.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/score_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/score_suggestions.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/score_suggestions.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/tsconfig.json b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/tsconfig.json new file mode 100644 index 0000000000000..1f484e645912c --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/tsconfig.json @@ -0,0 +1,56 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../../typings/**/*", + "common/**/*", + "public/**/*", + "scripts/**/*", + "typings/**/*", + "public/**/*.json", + "server/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/logging", + "@kbn/kibana-utils-plugin", + "@kbn/core-analytics-browser", + "@kbn/core", + "@kbn/server-route-repository", + "@kbn/server-route-repository-client", + "@kbn/actions-plugin", + "@kbn/licensing-plugin", + "@kbn/std", + "@kbn/utility-types-jest", + "@kbn/kibana-react-plugin", + "@kbn/shared-ux-utility", + "@kbn/security-plugin", + "@kbn/config-schema", + "@kbn/utility-types", + "@kbn/data-views-plugin", + "@kbn/io-ts-utils", + "@kbn/rule-registry-plugin", + "@kbn/alerting-plugin", + "@kbn/spaces-plugin", + "@kbn/task-manager-plugin", + "@kbn/core-elasticsearch-server", + "@kbn/core-ui-settings-server", + "@kbn/apm-utils", + "@kbn/features-plugin", + "@kbn/cloud-plugin", + "@kbn/serverless", + "@kbn/core-elasticsearch-server", + "@kbn/core-ui-settings-server", + "@kbn/management-settings-ids", + "@kbn/ai-assistant-common", + "@kbn/inference-common", + "@kbn/inference-plugin", + "@kbn/core-lifecycle-server", + "@kbn/server-route-repository-utils", + "@kbn/inference-plugin", + "@kbn/ai-assistant-icon" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/osquery/.nycrc b/x-pack/platform/plugins/shared/osquery/.nycrc similarity index 100% rename from x-pack/plugins/osquery/.nycrc rename to x-pack/platform/plugins/shared/osquery/.nycrc diff --git a/x-pack/plugins/osquery/README.md b/x-pack/platform/plugins/shared/osquery/README.md similarity index 100% rename from x-pack/plugins/osquery/README.md rename to x-pack/platform/plugins/shared/osquery/README.md diff --git a/x-pack/plugins/osquery/common/api/asset/assets.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/asset/assets.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/assets.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/asset/assets.gen.ts diff --git a/x-pack/plugins/osquery/common/api/asset/assets.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/asset/assets.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/assets.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/asset/assets.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/asset/assets_status.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/asset/assets_status.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/assets_status.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/asset/assets_status.gen.ts diff --git a/x-pack/plugins/osquery/common/api/asset/assets_status.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/asset/assets_status.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/assets_status.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/asset/assets_status.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/asset/get_assets_status_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/asset/get_assets_status_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/get_assets_status_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/asset/get_assets_status_route.ts diff --git a/x-pack/plugins/osquery/common/api/asset/update_assets_status_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/asset/update_assets_status_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/update_assets_status_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/asset/update_assets_status_route.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_policy_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_policy_route.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status_for_agent_policy_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status_for_agent_policy_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status_for_agent_policy_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status_for_agent_policy_route.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agents_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agents_route.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_package_policies_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_package_policies_route.ts diff --git a/x-pack/plugins/osquery/common/api/index.ts b/x-pack/platform/plugins/shared/osquery/common/api/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/index.ts rename to x-pack/platform/plugins/shared/osquery/common/api/index.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/create_live_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/create_live_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/create_live_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/create_live_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/live_query/create_live_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/create_live_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/find_live_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/find_live_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/find_live_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/find_live_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/live_query/find_live_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/find_live_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/get_live_query_details_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_details_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/get_live_query_details_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_details_route.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/get_live_query_results.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/get_live_query_results.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results.gen.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/get_live_query_results.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/get_live_query_results.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/live_query/get_live_query_results_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/get_live_query_results_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results_route.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/live_queries.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/live_queries.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/live_queries.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/live_queries.gen.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/live_queries.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/live_query/live_queries.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/live_queries.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/live_queries.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/model/default_uuid.test.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/default_uuid.test.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/default_uuid.test.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/default_uuid.test.ts diff --git a/x-pack/plugins/osquery/common/api/model/default_uuid.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/default_uuid.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/default_uuid.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/default_uuid.ts diff --git a/x-pack/plugins/osquery/common/api/model/non_empty_string.test.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/non_empty_string.test.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/non_empty_string.test.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/non_empty_string.test.ts diff --git a/x-pack/plugins/osquery/common/api/model/non_empty_string.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/non_empty_string.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/non_empty_string.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/non_empty_string.ts diff --git a/x-pack/plugins/osquery/common/api/model/schema/common_attributes.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/schema/common_attributes.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/schema/common_attributes.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/schema/common_attributes.gen.ts diff --git a/x-pack/plugins/osquery/common/api/model/schema/common_attributes.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/model/schema/common_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/model/schema/common_attributes.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/model/schema/common_attributes.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/create_pack.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/create_pack.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack.gen.ts diff --git a/x-pack/plugins/osquery/common/api/packs/create_pack.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/create_pack.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/create_pack_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/create_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack_route.ts diff --git a/x-pack/plugins/osquery/common/api/packs/delete_packs_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/delete_packs_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/delete_packs_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/delete_packs_route.ts diff --git a/x-pack/plugins/osquery/common/api/packs/find_packs.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/find_packs.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs.gen.ts diff --git a/x-pack/plugins/osquery/common/api/packs/find_packs.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/find_packs.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/find_packs_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/find_packs_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs_route.ts diff --git a/x-pack/plugins/osquery/common/api/packs/packs.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/packs.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/packs.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/packs.gen.ts diff --git a/x-pack/plugins/osquery/common/api/packs/packs.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/packs/packs.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/packs.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/packs/packs.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/read_packs_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/read_packs_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/read_packs_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/read_packs_route.ts diff --git a/x-pack/plugins/osquery/common/api/packs/update_packs.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/update_packs.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs.gen.ts diff --git a/x-pack/plugins/osquery/common/api/packs/update_packs.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/update_packs.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/update_packs_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/update_packs_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/create_saved_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/create_saved_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/create_saved_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/create_saved_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/saved_query/create_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/create_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/delete_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/delete_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/delete_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/delete_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/find_saved_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/find_saved_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/find_saved_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/find_saved_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/saved_query/find_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/find_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/read_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/read_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/read_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/read_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/saved_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/saved_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/saved_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/saved_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/saved_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/saved_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/saved_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/saved_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/saved_query/update_saved_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/update_saved_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/update_saved_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/update_saved_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/saved_query/update_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/update_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/status/privileges_check.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/status/privileges_check.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/status/privileges_check.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/status/privileges_check.gen.ts diff --git a/x-pack/plugins/osquery/common/api/status/privileges_check.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/status/privileges_check.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/status/privileges_check.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/status/privileges_check.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/status/status.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/status/status.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/status/status.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/status/status.gen.ts diff --git a/x-pack/plugins/osquery/common/api/status/status.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/status/status.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/status/status.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/status/status.schema.yaml diff --git a/x-pack/plugins/osquery/common/config.ts b/x-pack/platform/plugins/shared/osquery/common/config.ts similarity index 100% rename from x-pack/plugins/osquery/common/config.ts rename to x-pack/platform/plugins/shared/osquery/common/config.ts diff --git a/x-pack/plugins/osquery/common/constants.ts b/x-pack/platform/plugins/shared/osquery/common/constants.ts similarity index 100% rename from x-pack/plugins/osquery/common/constants.ts rename to x-pack/platform/plugins/shared/osquery/common/constants.ts diff --git a/x-pack/plugins/osquery/common/index.ts b/x-pack/platform/plugins/shared/osquery/common/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/index.ts rename to x-pack/platform/plugins/shared/osquery/common/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/common/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/common/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/common/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/common/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/osquery/actions/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/actions/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/osquery/actions/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/actions/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/osquery/agents/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/agents/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/osquery/agents/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/agents/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/osquery/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/osquery/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/osquery/results/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/results/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/osquery/results/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/results/index.ts diff --git a/x-pack/plugins/osquery/common/shared_imports.ts b/x-pack/platform/plugins/shared/osquery/common/shared_imports.ts similarity index 100% rename from x-pack/plugins/osquery/common/shared_imports.ts rename to x-pack/platform/plugins/shared/osquery/common/shared_imports.ts diff --git a/x-pack/plugins/osquery/common/translations/errors.ts b/x-pack/platform/plugins/shared/osquery/common/translations/errors.ts similarity index 100% rename from x-pack/plugins/osquery/common/translations/errors.ts rename to x-pack/platform/plugins/shared/osquery/common/translations/errors.ts diff --git a/x-pack/plugins/osquery/common/typed_json.ts b/x-pack/platform/plugins/shared/osquery/common/typed_json.ts similarity index 100% rename from x-pack/plugins/osquery/common/typed_json.ts rename to x-pack/platform/plugins/shared/osquery/common/typed_json.ts diff --git a/x-pack/plugins/osquery/common/types.ts b/x-pack/platform/plugins/shared/osquery/common/types.ts similarity index 100% rename from x-pack/plugins/osquery/common/types.ts rename to x-pack/platform/plugins/shared/osquery/common/types.ts diff --git a/x-pack/plugins/osquery/common/types/osquery_action.ts b/x-pack/platform/plugins/shared/osquery/common/types/osquery_action.ts similarity index 100% rename from x-pack/plugins/osquery/common/types/osquery_action.ts rename to x-pack/platform/plugins/shared/osquery/common/types/osquery_action.ts diff --git a/x-pack/plugins/osquery/common/utility_types.ts b/x-pack/platform/plugins/shared/osquery/common/utility_types.ts similarity index 100% rename from x-pack/plugins/osquery/common/utility_types.ts rename to x-pack/platform/plugins/shared/osquery/common/utility_types.ts diff --git a/x-pack/plugins/osquery/common/utils/aggregations.ts b/x-pack/platform/plugins/shared/osquery/common/utils/aggregations.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/aggregations.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/aggregations.ts diff --git a/x-pack/plugins/osquery/common/utils/build_query/filters.ts b/x-pack/platform/plugins/shared/osquery/common/utils/build_query/filters.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/build_query/filters.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/build_query/filters.ts diff --git a/x-pack/plugins/osquery/common/utils/build_query/index.ts b/x-pack/platform/plugins/shared/osquery/common/utils/build_query/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/build_query/index.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/build_query/index.ts diff --git a/x-pack/plugins/osquery/common/utils/build_query/remove_multilines.ts b/x-pack/platform/plugins/shared/osquery/common/utils/build_query/remove_multilines.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/build_query/remove_multilines.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/build_query/remove_multilines.ts diff --git a/x-pack/plugins/osquery/common/utils/converters.ts b/x-pack/platform/plugins/shared/osquery/common/utils/converters.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/converters.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/converters.ts diff --git a/x-pack/plugins/osquery/common/utils/replace_params_query.test.ts b/x-pack/platform/plugins/shared/osquery/common/utils/replace_params_query.test.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/replace_params_query.test.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/replace_params_query.test.ts diff --git a/x-pack/plugins/osquery/common/utils/replace_params_query.ts b/x-pack/platform/plugins/shared/osquery/common/utils/replace_params_query.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/replace_params_query.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/replace_params_query.ts diff --git a/x-pack/plugins/osquery/cypress/.gitignore b/x-pack/platform/plugins/shared/osquery/cypress/.gitignore similarity index 100% rename from x-pack/plugins/osquery/cypress/.gitignore rename to x-pack/platform/plugins/shared/osquery/cypress/.gitignore diff --git a/x-pack/platform/plugins/shared/osquery/cypress/README.md b/x-pack/platform/plugins/shared/osquery/cypress/README.md new file mode 100644 index 0000000000000..fb8c3c609108b --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/cypress/README.md @@ -0,0 +1,138 @@ +# Cypress Tests + +The `osquery/cypress` directory contains functional UI tests that execute using [Cypress](https://www.cypress.io/). + +## Running the tests + +There are currently three ways to run the tests, comprised of two execution modes and two target environments, which will be detailed below. + +### Execution modes + +#### Interactive mode + +When you run Cypress in interactive mode, an interactive runner is displayed that allows you to see commands as they execute while also viewing the application under test. For more information, please see [cypress documentation](https://docs.cypress.io/guides/core-concepts/test-runner.html#Overview). + +#### Headless mode + +A headless browser is a browser simulation program that does not have a user interface. These programs operate like any other browser, but do not display any UI. This is why meanwhile you are executing the tests on this mode you are not going to see the application under test. Just the output of the test is displayed on the terminal once the execution is finished. + +### Target environments + +#### FTR (CI) + +This is the configuration used by CI. It uses the FTR to spawn both a Kibana instance (http://localhost:5620) and an Elasticsearch instance (http://localhost:9220) with a preloaded minimum set of data (see preceding "Test data" section), and then executes cypress against this stack. You can find this configuration in `x-pack/test/osquery_cypress` + +### Test Execution: Examples + +#### FTR + Headless (Chrome) + +Since this is how tests are run on CI, this will likely be the configuration you want to reproduce failures locally, etc. + +```shell +# bootstrap kibana from the project root +yarn kbn bootstrap + +# build the plugins/assets that cypress will execute against +node scripts/build_kibana_platform_plugins + +# launch the cypress test runner +cd x-pack/platform/plugins/shared/osquery +yarn cypress:run-as-ci +``` +#### FTR + Interactive + +This is the preferred mode for developing new tests. + +```shell +# bootstrap kibana from the project root +yarn kbn bootstrap + +# build the plugins/assets that cypress will execute against +node scripts/build_kibana_platform_plugins + +# launch the cypress test runner +cd x-pack/platform/plugins/shared/osquery +yarn cypress:open-as-ci +``` + +Note that you can select the browser you want to use on the top right side of the interactive runner. + +## Folder Structure + +### integration/ + +Cypress convention. Contains the specs that are going to be executed. + +### fixtures/ + +Cypress convention. Fixtures are used as external pieces of static data when we stub responses. + +### plugins/ + +Cypress convention. As a convenience, by default Cypress will automatically include the plugins file cypress/plugins/index.js before every single spec file it runs. + +### screens/ + +Contains the elements we want to interact with in our tests. + +Each file inside the screens folder represents a screen in our application. + +### tasks/ + +_Tasks_ are functions that may be reused across tests. + +Each file inside the tasks folder represents a screen of our application. + +## Test data + +The data the tests need: + +- Is generated on the fly using our application APIs (preferred way) +- Is ingested on the ELS instance using the `es_archive` utility + +### How to generate a new archive + +**Note:** As mentioned above, archives are only meant to contain external data, e.g. beats data. Due to the tendency for archived domain objects (rules, signals) to quickly become out of date, it is strongly suggested that you generate this data within the test, through interaction with either the UI or the API. + +We use es_archiver to manage the data that our Cypress tests need. + +1. Set up a clean instance of kibana and elasticsearch (if this is not possible, try to clean/minimize the data that you are going to archive). +2. With the kibana and elasticsearch instance up and running, create the data that you need for your test. +3. When you are sure that you have all the data you need run the following command from: `x-pack/platform/plugins/shared/osquery` + +```sh +node ../../../../../scripts/es_archiver save <nameOfTheFolderWhereDataIsSaved> <indexPatternsToBeSaved> --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://<elasticsearchUsername>:<elasticsearchPassword>@<elasticsearchHost>:<elasticsearchPort> +``` + +Example: + +```sh +node ../../../../../scripts/es_archiver save custom_rules ".kibana",".siem-signal*" --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://elastic:changeme@localhost:9220 +``` + +Note that the command will create the folder if it does not exist. + +## Development Best Practices + +### Clean up the state + +Remember to clean up the state of the test after its execution, typically with the `cleanKibana` function. Be mindful of failure scenarios, as well: if your test fails, will it leave the environment in a recoverable state? + +### Minimize the use of es_archive + +When possible, create all the data that you need for executing the tests using the application APIS or the UI. + +### Speed up test execution time + +Loading the web page takes a big amount of time, in order to minimize that impact, the following points should be +taken into consideration until another solution is implemented: + +- Group the tests that are similar in different contexts. +- For every context login only once, clean the state between tests if needed without re-loading the page. +- All tests in a spec file must be order-independent. + +Remember that minimizing the number of times the web page is loaded, we minimize as well the execution time. + +## Linting + +Optional linting rules for Cypress and linting setup can be found [here](https://github.com/cypress-io/eslint-plugin-cypress#usage) diff --git a/x-pack/plugins/osquery/cypress/cypress.config.ts b/x-pack/platform/plugins/shared/osquery/cypress/cypress.config.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/cypress.config.ts rename to x-pack/platform/plugins/shared/osquery/cypress/cypress.config.ts diff --git a/x-pack/platform/plugins/shared/osquery/cypress/cypress_base.config.ts b/x-pack/platform/plugins/shared/osquery/cypress/cypress_base.config.ts new file mode 100644 index 0000000000000..7594d33496ddc --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/cypress/cypress_base.config.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { merge } from 'lodash'; +import path from 'path'; +import { load as loadYaml } from 'js-yaml'; +import { readFileSync } from 'fs'; +import type { YamlRoleDefinitions } from '@kbn/test-suites-serverless/shared/lib'; +import { samlAuthentication } from '@kbn/security-solution-plugin/public/management/cypress/support/saml_authentication'; +import { setupUserDataLoader } from './support/setup_data_loader_tasks'; +import { getFailedSpecVideos } from './support/filter_videos'; + +const ROLES_YAML_FILE_PATH = path.join( + `${__dirname}/support`, + 'project_controller_osquery_roles.yml' +); +const roleDefinitions = loadYaml(readFileSync(ROLES_YAML_FILE_PATH, 'utf8')) as YamlRoleDefinitions; + +export const getCypressBaseConfig = ( + overrides: Cypress.ConfigOptions = {} +): Cypress.ConfigOptions => + merge( + { + reporter: '../../../../../node_modules/cypress-multi-reporters', + reporterOptions: { + configFile: './reporter_config.json', + }, + + defaultCommandTimeout: 60000, + execTimeout: 120000, + pageLoadTimeout: 12000, + screenshotsFolder: '../../../../../target/kibana-osquery/cypress/screenshots', + trashAssetsBeforeRuns: false, + video: true, + videosFolder: '../../../../../target/kibana-osquery/cypress/videos', + + retries: { + runMode: 1, + openMode: 0, + }, + videoCompression: 15, + viewportHeight: 900, + viewportWidth: 1440, + experimentalStudio: true, + + env: { + grepFilterSpecs: true, + grepOmitFiltered: true, + }, + + e2e: { + specPattern: './e2e/**/*.cy.ts', + experimentalRunAllSpecs: true, + experimentalMemoryManagement: true, + numTestsKeptInMemory: 3, + setupNodeEvents(on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions) { + setupUserDataLoader(on, config, { roleDefinitions, additionalRoleName: 'viewer' }); + samlAuthentication(on, config); + on('after:spec', getFailedSpecVideos); + + return config; + }, + }, + }, + overrides + ); diff --git a/x-pack/plugins/osquery/cypress/e2e/all/add_integration.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/add_integration.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/add_integration.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/add_integration.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_cases.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_cases.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_cases.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_cases.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_multiple_agents.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_multiple_agents.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_multiple_agents.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_multiple_agents.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/cases.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/cases.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/cases.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/cases.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/custom_space.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/custom_space.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/custom_space.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/custom_space.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/ecs_mappings.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/ecs_mappings.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/ecs_mappings.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/ecs_mappings.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/edit_saved_queries.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/edit_saved_queries.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/edit_saved_queries.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/edit_saved_queries.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/live_query.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/live_query.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/live_query_packs.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query_packs.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/live_query_packs.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query_packs.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/live_query_run.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query_run.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/live_query_run.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query_run.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/metrics.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/metrics.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/metrics.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/metrics.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/packs_create_edit.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/packs_create_edit.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/packs_create_edit.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/packs_create_edit.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/packs_integration.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/packs_integration.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/saved_queries.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/saved_queries.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/saved_queries.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/saved_queries.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/timelines.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/timelines.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/timelines.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/timelines.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/api/live_query_results.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/api/live_query_results.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/api/live_query_results.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/api/live_query_results.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/api/packs.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/api/packs.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/api/packs.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/api/packs.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/roles/alert_test.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/alert_test.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/roles/alert_test.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/alert_test.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/roles/reader.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/reader.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/roles/reader.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/reader.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/tiers/endpoint_complete.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/endpoint_complete.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/tiers/endpoint_complete.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/endpoint_complete.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/tiers/endpoint_essentials.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/endpoint_essentials.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/tiers/endpoint_essentials.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/endpoint_essentials.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/tiers/security_complete.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/security_complete.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/tiers/security_complete.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/security_complete.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/tiers/security_essentials.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/security_essentials.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/tiers/security_essentials.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/security_essentials.cy.ts diff --git a/x-pack/plugins/osquery/cypress/plugins/index.ts b/x-pack/platform/plugins/shared/osquery/cypress/plugins/index.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/plugins/index.ts rename to x-pack/platform/plugins/shared/osquery/cypress/plugins/index.ts diff --git a/x-pack/platform/plugins/shared/osquery/cypress/reporter_config.json b/x-pack/platform/plugins/shared/osquery/cypress/reporter_config.json new file mode 100644 index 0000000000000..048881736ca5e --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/cypress/reporter_config.json @@ -0,0 +1,10 @@ +{ + "reporterEnabled": "mochawesome, mocha-junit-reporter", + "reporterOptions": { + "html": false, + "json": true, + "mochaFile": "../../../../../target/kibana-osquery/cypress/results/TEST-osquery-cypress-[hash].xml", + "overwrite": false, + "reportDir": "../../../../../target/kibana-osquery/cypress/results" + } +} diff --git a/x-pack/plugins/osquery/cypress/screens/fleet.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/fleet.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/fleet.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/fleet.ts diff --git a/x-pack/plugins/osquery/cypress/screens/integrations.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/integrations.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/integrations.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/integrations.ts diff --git a/x-pack/plugins/osquery/cypress/screens/live_query.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/live_query.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/live_query.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/live_query.ts diff --git a/x-pack/plugins/osquery/cypress/screens/navigation.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/navigation.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/navigation.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/navigation.ts diff --git a/x-pack/plugins/osquery/cypress/screens/osquery.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/osquery.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/osquery.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/osquery.ts diff --git a/x-pack/plugins/osquery/cypress/screens/packs.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/packs.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/packs.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/packs.ts diff --git a/x-pack/plugins/osquery/cypress/serverless_cypress.config.ts b/x-pack/platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/serverless_cypress.config.ts rename to x-pack/platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts diff --git a/x-pack/plugins/osquery/cypress/serverless_cypress_qa.config.ts b/x-pack/platform/plugins/shared/osquery/cypress/serverless_cypress_qa.config.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/serverless_cypress_qa.config.ts rename to x-pack/platform/plugins/shared/osquery/cypress/serverless_cypress_qa.config.ts diff --git a/x-pack/plugins/osquery/cypress/support/e2e.ts b/x-pack/platform/plugins/shared/osquery/cypress/support/e2e.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/support/e2e.ts rename to x-pack/platform/plugins/shared/osquery/cypress/support/e2e.ts diff --git a/x-pack/plugins/osquery/cypress/support/filter_videos.ts b/x-pack/platform/plugins/shared/osquery/cypress/support/filter_videos.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/support/filter_videos.ts rename to x-pack/platform/plugins/shared/osquery/cypress/support/filter_videos.ts diff --git a/x-pack/plugins/osquery/cypress/support/project_controller_osquery_roles.yml b/x-pack/platform/plugins/shared/osquery/cypress/support/project_controller_osquery_roles.yml similarity index 100% rename from x-pack/plugins/osquery/cypress/support/project_controller_osquery_roles.yml rename to x-pack/platform/plugins/shared/osquery/cypress/support/project_controller_osquery_roles.yml diff --git a/x-pack/plugins/osquery/cypress/support/roles.ts b/x-pack/platform/plugins/shared/osquery/cypress/support/roles.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/support/roles.ts rename to x-pack/platform/plugins/shared/osquery/cypress/support/roles.ts diff --git a/x-pack/plugins/osquery/cypress/support/setup_data_loader_tasks.ts b/x-pack/platform/plugins/shared/osquery/cypress/support/setup_data_loader_tasks.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/support/setup_data_loader_tasks.ts rename to x-pack/platform/plugins/shared/osquery/cypress/support/setup_data_loader_tasks.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/api_fixtures.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/api_fixtures.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/api_fixtures.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/api_fixtures.ts diff --git a/x-pack/platform/plugins/shared/osquery/cypress/tasks/archiver.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/archiver.ts new file mode 100644 index 0000000000000..2fb9381993084 --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/cypress/tasks/archiver.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export enum ArchiverMethod { + SAVE = 'save', + LOAD = 'load', + UNLOAD = 'unload', +} + +export const runKbnArchiverScript = ( + method: ArchiverMethod, + fileName: string, + space = 'default' +) => { + const { + ELASTICSEARCH_USERNAME, + ELASTICSEARCH_PASSWORD, + hostname: HOSTNAME, + configport: PORT, + } = Cypress.env(); + const script = `node ../../../../../scripts/kbn_archiver.js --space ${space} --kibana-url http://${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}@${HOSTNAME}:${PORT} ${method} ./cypress/fixtures/saved_objects/${fileName}.ndjson`; + + cy.exec(script, { env: { NODE_TLS_REJECT_UNAUTHORIZED: 1 } }); +}; diff --git a/x-pack/plugins/osquery/cypress/tasks/common.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/common.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/common.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/common.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/integrations.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/integrations.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/integrations.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/integrations.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/inventory.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/inventory.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/inventory.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/inventory.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/live_query.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/live_query.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/live_query.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/live_query.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/login.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/login.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/login.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/login.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/navigation.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/navigation.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/navigation.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/navigation.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/packs.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/packs.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/packs.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/packs.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/response_actions.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/response_actions.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/response_actions.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/response_actions.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/serverless.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/serverless.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/serverless.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/serverless.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/wait_until.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/wait_until.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/wait_until.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/wait_until.ts diff --git a/x-pack/platform/plugins/shared/osquery/cypress/tsconfig.json b/x-pack/platform/plugins/shared/osquery/cypress/tsconfig.json new file mode 100644 index 0000000000000..8a106ed78c34d --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/cypress/tsconfig.json @@ -0,0 +1,41 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "include": [ + "**/*", + "./cypress.config.ts", + "./serverless_cypress.config.ts", + "./serverless_cypress_qa.config.ts", + "../../../../../test_serverless/shared/lib", + ], + "exclude": [ + "target/**/*", + "../../../../../test_serverless/shared/lib/security/default_http_headers.ts" + ], + "compilerOptions": { + "outDir": "target/types", + "types": [ + "cypress", + "node", + ], + "resolveJsonModule": true, + }, + "kbn_references": [ + "@kbn/test-suites-serverless", + { + "path": "../../../../../test/security_solution_cypress/cypress/tsconfig.json" + }, + "@kbn/cypress-config", + // cypress projects that are nested inside of other ts project use code + // from the parent ts project in ways that can't be automatically deteceted + // at this time so we have to force the inclusion of this reference + { + "path": "../tsconfig.json", + "force": true + }, + "@kbn/security-solution-plugin", + "@kbn/fleet-plugin", + "@kbn/cases-plugin", + "@kbn/security-solution-plugin/public/management/cypress", + "@kbn/test-suites-xpack/security_solution_cypress/cypress", + ] +} diff --git a/x-pack/plugins/osquery/docs/openapi/ess/osquery_api_2023_10_31.bundled.schema.yaml b/x-pack/platform/plugins/shared/osquery/docs/openapi/ess/osquery_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/docs/openapi/ess/osquery_api_2023_10_31.bundled.schema.yaml rename to x-pack/platform/plugins/shared/osquery/docs/openapi/ess/osquery_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/plugins/osquery/docs/openapi/serverless/osquery_api_2023_10_31.bundled.schema.yaml b/x-pack/platform/plugins/shared/osquery/docs/openapi/serverless/osquery_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/docs/openapi/serverless/osquery_api_2023_10_31.bundled.schema.yaml rename to x-pack/platform/plugins/shared/osquery/docs/openapi/serverless/osquery_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/platform/plugins/shared/osquery/jest.config.js b/x-pack/platform/plugins/shared/osquery/jest.config.js new file mode 100644 index 0000000000000..5214584e4ee5c --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/jest.config.js @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/shared/osquery'], + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/shared/osquery', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/osquery/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/osquery/kibana.jsonc b/x-pack/platform/plugins/shared/osquery/kibana.jsonc similarity index 100% rename from x-pack/plugins/osquery/kibana.jsonc rename to x-pack/platform/plugins/shared/osquery/kibana.jsonc diff --git a/x-pack/platform/plugins/shared/osquery/package.json b/x-pack/platform/plugins/shared/osquery/package.json new file mode 100644 index 0000000000000..fda5a3830020b --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/package.json @@ -0,0 +1,24 @@ +{ + "author": "Elastic", + "name": "@kbn/osquery-plugin", + "version": "1.0.0", + "private": true, + "license": "Elastic License 2.0", + "scripts": { + "cypress:burn": "yarn cypress:run --env burn=2 --headed", + "cypress:changed-specs-only": "yarn cypress:run --changed-specs-only --env burn=2", + "cypress": "NODE_OPTIONS=--openssl-legacy-provider node ../../../../solutions/security/plugins/security_solution/scripts/start_cypress_parallel --config-file ../../platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts --ftr-config-file ../../../../../x-pack/test/osquery_cypress/cli_config", + "cypress:open": "yarn cypress open", + "cypress:run": "yarn cypress run", + "cypress:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ../../../../solutions/security/plugins/security_solution/scripts/start_cypress_parallel --config-file ../../platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts --ftr-config-file ../../../../../x-pack/test/osquery_cypress/serverless_cli_config", + "cypress:serverless:open": "yarn cypress:serverless open", + "cypress:serverless:run": "yarn cypress:serverless run", + "cypress:qa:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ../../../../solutions/security/plugins/security_solution/scripts/start_cypress_parallel_serverless --config-file ../../platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts --onBeforeHook ../../../../test/osquery_cypress/runner_qa.ts", + "cypress:qa:serverless:run": "yarn cypress:qa:serverless run", + "nyc": "../../../../../node_modules/.bin/nyc report --reporter=text-summary", + "junit:merge": "../../../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-osquery/cypress/results/mochawesome*.json > ../../../target/kibana-osquery/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-osquery/cypress/results/output.json --reportDir ../../../target/kibana-osquery/cypress/results && yarn junit:transform && mkdir -p ../../../target/junit && cp ../../../target/kibana-osquery/cypress/results/*.xml ../../../target/junit/", + "junit:transform": "node ../security_solution/scripts/junit_transformer --pathPattern '../../../../../target/kibana-osquery/cypress/results/*.xml' --rootDirectory ../../../ --reportName 'Osquery Cypress' --writeInPlace", + "openapi:generate": "node scripts/openapi/generate", + "openapi:bundle": "node scripts/openapi/bundle" + } +} diff --git a/x-pack/plugins/osquery/public/action_results/action_agents_status_badges.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/action_agents_status_badges.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/action_agents_status_badges.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/action_agents_status_badges.tsx diff --git a/x-pack/plugins/osquery/public/action_results/action_agents_status_bar.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/action_agents_status_bar.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/action_agents_status_bar.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/action_agents_status_bar.tsx diff --git a/x-pack/plugins/osquery/public/action_results/action_results_summary.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/action_results_summary.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/action_results_summary.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/action_results_summary.tsx diff --git a/x-pack/plugins/osquery/public/action_results/services/agent_status.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/services/agent_status.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/services/agent_status.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/services/agent_status.tsx diff --git a/x-pack/plugins/osquery/public/action_results/translations.ts b/x-pack/platform/plugins/shared/osquery/public/action_results/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/action_results/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/action_results/translations.ts diff --git a/x-pack/plugins/osquery/public/action_results/types.ts b/x-pack/platform/plugins/shared/osquery/public/action_results/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/action_results/types.ts rename to x-pack/platform/plugins/shared/osquery/public/action_results/types.ts diff --git a/x-pack/plugins/osquery/public/action_results/use_action_privileges.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/use_action_privileges.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/use_action_privileges.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/use_action_privileges.tsx diff --git a/x-pack/plugins/osquery/public/action_results/use_action_results.ts b/x-pack/platform/plugins/shared/osquery/public/action_results/use_action_results.ts similarity index 100% rename from x-pack/plugins/osquery/public/action_results/use_action_results.ts rename to x-pack/platform/plugins/shared/osquery/public/action_results/use_action_results.ts diff --git a/x-pack/plugins/osquery/public/actions/actions_table.tsx b/x-pack/platform/plugins/shared/osquery/public/actions/actions_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/actions/actions_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/actions/actions_table.tsx diff --git a/x-pack/plugins/osquery/public/actions/translations.ts b/x-pack/platform/plugins/shared/osquery/public/actions/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/actions/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/actions/translations.ts diff --git a/x-pack/plugins/osquery/public/actions/use_all_live_queries.ts b/x-pack/platform/plugins/shared/osquery/public/actions/use_all_live_queries.ts similarity index 100% rename from x-pack/plugins/osquery/public/actions/use_all_live_queries.ts rename to x-pack/platform/plugins/shared/osquery/public/actions/use_all_live_queries.ts diff --git a/x-pack/plugins/osquery/public/actions/use_live_query_details.ts b/x-pack/platform/plugins/shared/osquery/public/actions/use_live_query_details.ts similarity index 100% rename from x-pack/plugins/osquery/public/actions/use_live_query_details.ts rename to x-pack/platform/plugins/shared/osquery/public/actions/use_live_query_details.ts diff --git a/x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx b/x-pack/platform/plugins/shared/osquery/public/agent_policies/agents_policy_link.tsx similarity index 100% rename from x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx rename to x-pack/platform/plugins/shared/osquery/public/agent_policies/agents_policy_link.tsx diff --git a/x-pack/plugins/osquery/public/agent_policies/index.tsx b/x-pack/platform/plugins/shared/osquery/public/agent_policies/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/agent_policies/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/agent_policies/index.tsx diff --git a/x-pack/plugins/osquery/public/agent_policies/use_agent_policies.ts b/x-pack/platform/plugins/shared/osquery/public/agent_policies/use_agent_policies.ts similarity index 100% rename from x-pack/plugins/osquery/public/agent_policies/use_agent_policies.ts rename to x-pack/platform/plugins/shared/osquery/public/agent_policies/use_agent_policies.ts diff --git a/x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts b/x-pack/platform/plugins/shared/osquery/public/agent_policies/use_agent_policy.ts similarity index 100% rename from x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts rename to x-pack/platform/plugins/shared/osquery/public/agent_policies/use_agent_policy.ts diff --git a/x-pack/plugins/osquery/public/agents/agent_grouper.test.ts b/x-pack/platform/plugins/shared/osquery/public/agents/agent_grouper.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/agent_grouper.test.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/agent_grouper.test.ts diff --git a/x-pack/plugins/osquery/public/agents/agent_grouper.ts b/x-pack/platform/plugins/shared/osquery/public/agents/agent_grouper.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/agent_grouper.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/agent_grouper.ts diff --git a/x-pack/plugins/osquery/public/agents/agent_id_to_name.tsx b/x-pack/platform/plugins/shared/osquery/public/agents/agent_id_to_name.tsx similarity index 100% rename from x-pack/plugins/osquery/public/agents/agent_id_to_name.tsx rename to x-pack/platform/plugins/shared/osquery/public/agents/agent_id_to_name.tsx diff --git a/x-pack/plugins/osquery/public/agents/agents_table.tsx b/x-pack/platform/plugins/shared/osquery/public/agents/agents_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/agents/agents_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/agents/agents_table.tsx diff --git a/x-pack/plugins/osquery/public/agents/helpers.test.ts b/x-pack/platform/plugins/shared/osquery/public/agents/helpers.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/helpers.test.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/helpers.test.ts diff --git a/x-pack/plugins/osquery/public/agents/helpers.ts b/x-pack/platform/plugins/shared/osquery/public/agents/helpers.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/helpers.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/helpers.ts diff --git a/x-pack/plugins/osquery/public/agents/translations.ts b/x-pack/platform/plugins/shared/osquery/public/agents/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/translations.ts diff --git a/x-pack/plugins/osquery/public/agents/types.ts b/x-pack/platform/plugins/shared/osquery/public/agents/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/types.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/types.ts diff --git a/x-pack/plugins/osquery/public/agents/use_agent_details.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_agent_details.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_agent_details.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_agent_details.ts diff --git a/x-pack/plugins/osquery/public/agents/use_agent_policy_agent_ids.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_agent_policy_agent_ids.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_agent_policy_agent_ids.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_agent_policy_agent_ids.ts diff --git a/x-pack/plugins/osquery/public/agents/use_agent_status.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_agent_status.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_agent_status.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_agent_status.ts diff --git a/x-pack/plugins/osquery/public/agents/use_all_agents.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_all_agents.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_all_agents.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_all_agents.ts diff --git a/x-pack/plugins/osquery/public/agents/use_osquery_policies.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_osquery_policies.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_osquery_policies.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_osquery_policies.ts diff --git a/x-pack/plugins/osquery/public/application.tsx b/x-pack/platform/plugins/shared/osquery/public/application.tsx similarity index 100% rename from x-pack/plugins/osquery/public/application.tsx rename to x-pack/platform/plugins/shared/osquery/public/application.tsx diff --git a/x-pack/plugins/osquery/public/assets/constants.ts b/x-pack/platform/plugins/shared/osquery/public/assets/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/assets/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/assets/constants.ts diff --git a/x-pack/plugins/osquery/public/assets/use_assets_status.ts b/x-pack/platform/plugins/shared/osquery/public/assets/use_assets_status.ts similarity index 100% rename from x-pack/plugins/osquery/public/assets/use_assets_status.ts rename to x-pack/platform/plugins/shared/osquery/public/assets/use_assets_status.ts diff --git a/x-pack/plugins/osquery/public/assets/use_import_assets.ts b/x-pack/platform/plugins/shared/osquery/public/assets/use_import_assets.ts similarity index 100% rename from x-pack/plugins/osquery/public/assets/use_import_assets.ts rename to x-pack/platform/plugins/shared/osquery/public/assets/use_import_assets.ts diff --git a/x-pack/plugins/osquery/public/cases/add_to_cases.tsx b/x-pack/platform/plugins/shared/osquery/public/cases/add_to_cases.tsx similarity index 100% rename from x-pack/plugins/osquery/public/cases/add_to_cases.tsx rename to x-pack/platform/plugins/shared/osquery/public/cases/add_to_cases.tsx diff --git a/x-pack/plugins/osquery/public/cases/add_to_cases_button.tsx b/x-pack/platform/plugins/shared/osquery/public/cases/add_to_cases_button.tsx similarity index 100% rename from x-pack/plugins/osquery/public/cases/add_to_cases_button.tsx rename to x-pack/platform/plugins/shared/osquery/public/cases/add_to_cases_button.tsx diff --git a/x-pack/plugins/osquery/public/common/contexts.tsx b/x-pack/platform/plugins/shared/osquery/public/common/contexts.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/contexts.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/contexts.tsx diff --git a/x-pack/plugins/osquery/public/common/helpers.ts b/x-pack/platform/plugins/shared/osquery/public/common/helpers.ts similarity index 100% rename from x-pack/plugins/osquery/public/common/helpers.ts rename to x-pack/platform/plugins/shared/osquery/public/common/helpers.ts diff --git a/x-pack/plugins/osquery/public/common/hooks/index.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/index.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_breadcrumbs.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_breadcrumbs.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_breadcrumbs.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_breadcrumbs.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_discover_link.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_discover_link.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_error_toast.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_error_toast.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_error_toast.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_error_toast.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_logs_data_view.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_logs_data_view.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_logs_data_view.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_logs_data_view.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_osquery_integration.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_osquery_integration.tsx diff --git a/x-pack/plugins/osquery/public/common/lib/kibana/index.ts b/x-pack/platform/plugins/shared/osquery/public/common/lib/kibana/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/common/lib/kibana/index.ts rename to x-pack/platform/plugins/shared/osquery/public/common/lib/kibana/index.ts diff --git a/x-pack/plugins/osquery/public/common/lib/kibana/kibana_react.ts b/x-pack/platform/plugins/shared/osquery/public/common/lib/kibana/kibana_react.ts similarity index 100% rename from x-pack/plugins/osquery/public/common/lib/kibana/kibana_react.ts rename to x-pack/platform/plugins/shared/osquery/public/common/lib/kibana/kibana_react.ts diff --git a/x-pack/plugins/osquery/public/common/page_paths.ts b/x-pack/platform/plugins/shared/osquery/public/common/page_paths.ts similarity index 100% rename from x-pack/plugins/osquery/public/common/page_paths.ts rename to x-pack/platform/plugins/shared/osquery/public/common/page_paths.ts diff --git a/x-pack/plugins/osquery/public/common/schemas/ecs/v8.12.0.json b/x-pack/platform/plugins/shared/osquery/public/common/schemas/ecs/v8.12.0.json similarity index 100% rename from x-pack/plugins/osquery/public/common/schemas/ecs/v8.12.0.json rename to x-pack/platform/plugins/shared/osquery/public/common/schemas/ecs/v8.12.0.json diff --git a/x-pack/plugins/osquery/public/common/schemas/osquery/v5.13.1.json b/x-pack/platform/plugins/shared/osquery/public/common/schemas/osquery/v5.13.1.json similarity index 100% rename from x-pack/plugins/osquery/public/common/schemas/osquery/v5.13.1.json rename to x-pack/platform/plugins/shared/osquery/public/common/schemas/osquery/v5.13.1.json diff --git a/x-pack/plugins/osquery/public/components/app.tsx b/x-pack/platform/plugins/shared/osquery/public/components/app.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/app.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/app.tsx diff --git a/x-pack/plugins/osquery/public/components/empty_state.tsx b/x-pack/platform/plugins/shared/osquery/public/components/empty_state.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/empty_state.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/empty_state.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/default.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/default.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/default.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/default.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/header.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/header.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/header.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/header.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/index.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/index.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/with_header.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/with_header.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/with_header.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/with_header.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/without_header.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/without_header.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/without_header.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/without_header.tsx diff --git a/x-pack/plugins/osquery/public/components/main_navigation.tsx b/x-pack/platform/plugins/shared/osquery/public/components/main_navigation.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/main_navigation.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/main_navigation.tsx diff --git a/x-pack/plugins/osquery/public/components/manage_integration_link.tsx b/x-pack/platform/plugins/shared/osquery/public/components/manage_integration_link.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/manage_integration_link.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/manage_integration_link.tsx diff --git a/x-pack/plugins/osquery/public/components/osquery_icon/index.tsx b/x-pack/platform/plugins/shared/osquery/public/components/osquery_icon/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/osquery_icon/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/osquery_icon/index.tsx diff --git a/x-pack/plugins/osquery/public/components/osquery_icon/osquery.svg b/x-pack/platform/plugins/shared/osquery/public/components/osquery_icon/osquery.svg similarity index 100% rename from x-pack/plugins/osquery/public/components/osquery_icon/osquery.svg rename to x-pack/platform/plugins/shared/osquery/public/components/osquery_icon/osquery.svg diff --git a/x-pack/plugins/osquery/public/components/osquery_schema_link.tsx b/x-pack/platform/plugins/shared/osquery/public/components/osquery_schema_link.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/osquery_schema_link.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/osquery_schema_link.tsx diff --git a/x-pack/plugins/osquery/public/discover/pack_view_in_discover.tsx b/x-pack/platform/plugins/shared/osquery/public/discover/pack_view_in_discover.tsx similarity index 100% rename from x-pack/plugins/osquery/public/discover/pack_view_in_discover.tsx rename to x-pack/platform/plugins/shared/osquery/public/discover/pack_view_in_discover.tsx diff --git a/x-pack/plugins/osquery/public/discover/view_results_in_discover.tsx b/x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx similarity index 100% rename from x-pack/plugins/osquery/public/discover/view_results_in_discover.tsx rename to x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx diff --git a/x-pack/plugins/osquery/public/editor/index.tsx b/x-pack/platform/plugins/shared/osquery/public/editor/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/editor/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/editor/index.tsx diff --git a/x-pack/plugins/osquery/public/editor/osquery_highlight_rules.test.ts b/x-pack/platform/plugins/shared/osquery/public/editor/osquery_highlight_rules.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/editor/osquery_highlight_rules.test.ts rename to x-pack/platform/plugins/shared/osquery/public/editor/osquery_highlight_rules.test.ts diff --git a/x-pack/plugins/osquery/public/editor/osquery_highlight_rules.ts b/x-pack/platform/plugins/shared/osquery/public/editor/osquery_highlight_rules.ts similarity index 100% rename from x-pack/plugins/osquery/public/editor/osquery_highlight_rules.ts rename to x-pack/platform/plugins/shared/osquery/public/editor/osquery_highlight_rules.ts diff --git a/x-pack/plugins/osquery/public/editor/osquery_tables.ts b/x-pack/platform/plugins/shared/osquery/public/editor/osquery_tables.ts similarity index 100% rename from x-pack/plugins/osquery/public/editor/osquery_tables.ts rename to x-pack/platform/plugins/shared/osquery/public/editor/osquery_tables.ts diff --git a/x-pack/plugins/osquery/public/fleet_integration/config_uploader.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/config_uploader.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/config_uploader.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/config_uploader.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/disabled_callout.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/disabled_callout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/disabled_callout.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/disabled_callout.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/index.ts b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/index.ts rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/index.ts diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/navigation_buttons.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/navigation_buttons.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/navigation_buttons.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/navigation_buttons.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/use_fetch_status.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/use_fetch_status.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/use_fetch_status.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/use_fetch_status.tsx diff --git a/x-pack/plugins/osquery/public/form/index.ts b/x-pack/platform/plugins/shared/osquery/public/form/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/form/index.ts rename to x-pack/platform/plugins/shared/osquery/public/form/index.ts diff --git a/x-pack/plugins/osquery/public/form/interval_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/interval_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/interval_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/interval_field.tsx diff --git a/x-pack/plugins/osquery/public/form/query_description_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/query_description_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/query_description_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/query_description_field.tsx diff --git a/x-pack/plugins/osquery/public/form/query_id_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/query_id_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/query_id_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/query_id_field.tsx diff --git a/x-pack/plugins/osquery/public/form/results_type_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/results_type_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/results_type_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/results_type_field.tsx diff --git a/x-pack/plugins/osquery/public/form/timeout_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/timeout_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/timeout_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/timeout_field.tsx diff --git a/x-pack/plugins/osquery/public/form/types.ts b/x-pack/platform/plugins/shared/osquery/public/form/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/form/types.ts rename to x-pack/platform/plugins/shared/osquery/public/form/types.ts diff --git a/x-pack/plugins/osquery/public/form/version_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/version_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/version_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/version_field.tsx diff --git a/x-pack/plugins/osquery/public/index.ts b/x-pack/platform/plugins/shared/osquery/public/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/index.ts rename to x-pack/platform/plugins/shared/osquery/public/index.ts diff --git a/x-pack/plugins/osquery/public/lens/pack_view_in_lens.tsx b/x-pack/platform/plugins/shared/osquery/public/lens/pack_view_in_lens.tsx similarity index 100% rename from x-pack/plugins/osquery/public/lens/pack_view_in_lens.tsx rename to x-pack/platform/plugins/shared/osquery/public/lens/pack_view_in_lens.tsx diff --git a/x-pack/plugins/osquery/public/lens/view_results_in_lens.tsx b/x-pack/platform/plugins/shared/osquery/public/lens/view_results_in_lens.tsx similarity index 100% rename from x-pack/plugins/osquery/public/lens/view_results_in_lens.tsx rename to x-pack/platform/plugins/shared/osquery/public/lens/view_results_in_lens.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/agents_table_field.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/agents_table_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/agents_table_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/agents_table_field.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/index.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/index.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/live_query_query_field.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/live_query_query_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/live_query_query_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/live_query_query_field.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/pack_queries_status_table.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_queries_status_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/pack_queries_status_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_queries_status_table.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/pack_results_header.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_results_header.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/pack_results_header.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_results_header.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/packs_combobox_field.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/packs_combobox_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/packs_combobox_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/packs_combobox_field.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/query_details_flyout.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/query_details_flyout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/query_details_flyout.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/query_details_flyout.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/query_pack_selectable.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/query_pack_selectable.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/query_pack_selectable.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/query_pack_selectable.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/index.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/index.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/use_create_live_query_action.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/use_create_live_query_action.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/use_create_live_query_action.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/use_create_live_query_action.tsx diff --git a/x-pack/plugins/osquery/public/packs/active_state_switch.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/active_state_switch.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/active_state_switch.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/active_state_switch.tsx diff --git a/x-pack/plugins/osquery/public/packs/add_pack_button.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/add_pack_button.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/add_pack_button.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/add_pack_button.tsx diff --git a/x-pack/plugins/osquery/public/packs/constants.ts b/x-pack/platform/plugins/shared/osquery/public/packs/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/constants.ts diff --git a/x-pack/plugins/osquery/public/packs/form/confirmation_modal.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/confirmation_modal.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/confirmation_modal.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/confirmation_modal.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/description_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/description_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/description_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/description_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/index.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/index.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/name_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/name_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/name_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/name_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/pack_uploader.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/pack_uploader.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/pack_uploader.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/pack_uploader.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/policy_id_combobox_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/policy_id_combobox_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/policy_id_combobox_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/policy_id_combobox_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/queries_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/queries_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/queries_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/queries_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/pack_shards_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/pack_shards_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/pack_shards_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/pack_shards_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/pack_type_selectable.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/pack_type_selectable.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/pack_type_selectable.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/pack_type_selectable.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/shards_form.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/shards_form.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_form.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/shards_percentage_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_percentage_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/shards_percentage_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_percentage_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/shards_policy_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_policy_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/shards_policy_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_policy_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/translations.ts b/x-pack/platform/plugins/shared/osquery/public/packs/form/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/form/translations.ts diff --git a/x-pack/plugins/osquery/public/packs/form/utils.ts b/x-pack/platform/plugins/shared/osquery/public/packs/form/utils.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/utils.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/form/utils.ts diff --git a/x-pack/plugins/osquery/public/packs/index.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/index.tsx diff --git a/x-pack/plugins/osquery/public/packs/pack_queries_status_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/pack_queries_status_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx diff --git a/x-pack/plugins/osquery/public/packs/pack_queries_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/pack_queries_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_table.tsx diff --git a/x-pack/plugins/osquery/public/packs/packs_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/packs_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/packs_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/packs_table.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/constants.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/constants.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/ecs_field_css.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/ecs_field_css.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/ecs_field_css.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/ecs_field_css.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/ecs_mapping_editor_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/ecs_mapping_editor_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/ecs_mapping_editor_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/ecs_mapping_editor_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/lazy_ecs_mapping_editor_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/lazy_ecs_mapping_editor_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/lazy_ecs_mapping_editor_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/lazy_ecs_mapping_editor_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platform_checkbox_group_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platform_checkbox_group_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platform_checkbox_group_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platform_checkbox_group_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/constants.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/constants.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/helpers.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/helpers.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/helpers.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/helpers.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/index.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/index.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/logos/linux.svg b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/linux.svg similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/logos/linux.svg rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/linux.svg diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/logos/macos.svg b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/macos.svg similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/logos/macos.svg rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/macos.svg diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/logos/windows.svg b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/windows.svg similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/logos/windows.svg rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/windows.svg diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/platform_icon.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/platform_icon.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/platform_icon.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/platform_icon.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/types.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/types.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/types.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/query_flyout.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/query_flyout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/query_flyout.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/query_flyout.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/use_pack_query_form.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/use_pack_query_form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/use_pack_query_form.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/use_pack_query_form.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/validations.test.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/validations.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/validations.test.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/validations.test.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/validations.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/validations.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/validations.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/validations.ts diff --git a/x-pack/plugins/osquery/public/packs/scheduled_query_errors_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/scheduled_query_errors_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/scheduled_query_errors_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/scheduled_query_errors_table.tsx diff --git a/x-pack/plugins/osquery/public/packs/types.ts b/x-pack/platform/plugins/shared/osquery/public/packs/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/types.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/types.ts diff --git a/x-pack/plugins/osquery/public/packs/use_create_pack.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_create_pack.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_create_pack.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_create_pack.ts diff --git a/x-pack/plugins/osquery/public/packs/use_delete_pack.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_delete_pack.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_delete_pack.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_delete_pack.ts diff --git a/x-pack/plugins/osquery/public/packs/use_pack.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_pack.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_pack.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_pack.ts diff --git a/x-pack/plugins/osquery/public/packs/use_pack_query_errors.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_pack_query_errors.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_pack_query_errors.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_pack_query_errors.ts diff --git a/x-pack/plugins/osquery/public/packs/use_pack_query_last_results.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_pack_query_last_results.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_pack_query_last_results.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_pack_query_last_results.ts diff --git a/x-pack/plugins/osquery/public/packs/use_packs.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_packs.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_packs.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_packs.ts diff --git a/x-pack/plugins/osquery/public/packs/use_update_pack.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_update_pack.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_update_pack.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_update_pack.ts diff --git a/x-pack/plugins/osquery/public/packs/utils.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/utils.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/utils.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/utils.tsx diff --git a/x-pack/plugins/osquery/public/plugin.ts b/x-pack/platform/plugins/shared/osquery/public/plugin.ts similarity index 100% rename from x-pack/plugins/osquery/public/plugin.ts rename to x-pack/platform/plugins/shared/osquery/public/plugin.ts diff --git a/x-pack/plugins/osquery/public/query_client.ts b/x-pack/platform/plugins/shared/osquery/public/query_client.ts similarity index 100% rename from x-pack/plugins/osquery/public/query_client.ts rename to x-pack/platform/plugins/shared/osquery/public/query_client.ts diff --git a/x-pack/plugins/osquery/public/results/results_table.tsx b/x-pack/platform/plugins/shared/osquery/public/results/results_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/results/results_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/results/results_table.tsx diff --git a/x-pack/plugins/osquery/public/results/translations.ts b/x-pack/platform/plugins/shared/osquery/public/results/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/results/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/results/translations.ts diff --git a/x-pack/plugins/osquery/public/results/use_all_results.ts b/x-pack/platform/plugins/shared/osquery/public/results/use_all_results.ts similarity index 100% rename from x-pack/plugins/osquery/public/results/use_all_results.ts rename to x-pack/platform/plugins/shared/osquery/public/results/use_all_results.ts diff --git a/x-pack/plugins/osquery/public/routes/components/empty_prompt.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/components/empty_prompt.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/components/empty_prompt.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/components/empty_prompt.tsx diff --git a/x-pack/plugins/osquery/public/routes/components/index.ts b/x-pack/platform/plugins/shared/osquery/public/routes/components/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/routes/components/index.ts rename to x-pack/platform/plugins/shared/osquery/public/routes/components/index.ts diff --git a/x-pack/plugins/osquery/public/routes/components/missing_privileges.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/components/missing_privileges.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/components/missing_privileges.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/components/missing_privileges.tsx diff --git a/x-pack/plugins/osquery/public/routes/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/live_queries/details/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/live_queries/details/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/live_queries/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/live_queries/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/live_queries/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/live_queries/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/live_queries/list/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/live_queries/list/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/live_queries/list/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/live_queries/list/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/live_queries/new/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/live_queries/new/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/add/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/add/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/add/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/add/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/details/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/details/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/details/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/details/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/edit/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/edit/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/edit/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/edit/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/list/empty_state.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/list/empty_state.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/list/empty_state.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/list/empty_state.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/list/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/list/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/list/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/list/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/list/load_integration_assets.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/list/load_integration_assets.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/list/load_integration_assets.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/list/load_integration_assets.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/list/translations.ts b/x-pack/platform/plugins/shared/osquery/public/routes/packs/list/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/list/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/list/translations.ts diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/edit/form.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/edit/form.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/form.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/edit/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/edit/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/edit/tabs.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/tabs.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/edit/tabs.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/tabs.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/list/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/list/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/list/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/list/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/new/form.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/new/form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/new/form.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/new/form.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/new/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/new/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/new/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/new/index.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/constants.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/constants.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/form/code_editor_field.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/form/code_editor_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/form/code_editor_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/form/code_editor_field.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/form/index.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/form/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/form/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/form/index.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/form/playground_flyout.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/form/playground_flyout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/form/playground_flyout.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/form/playground_flyout.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/form/use_saved_query_form.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/form/use_saved_query_form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/form/use_saved_query_form.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/form/use_saved_query_form.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/index.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/index.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/saved_queries_dropdown.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/saved_queries_dropdown.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/saved_queries_dropdown.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/saved_queries_dropdown.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/saved_query_flyout.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/saved_query_flyout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/saved_query_flyout.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/saved_query_flyout.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/use_create_saved_query.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_create_saved_query.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_create_saved_query.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_create_saved_query.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/use_delete_saved_query.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_delete_saved_query.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_delete_saved_query.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_delete_saved_query.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/use_saved_queries.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_saved_queries.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_saved_queries.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_saved_queries.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/use_saved_query.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_saved_query.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_saved_query.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_saved_query.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/use_update_saved_query.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_update_saved_query.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_update_saved_query.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_update_saved_query.ts diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/external_reference.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/external_reference.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/attachments/external_reference.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/external_reference.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/external_references_content.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/external_references_content.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/attachments/external_references_content.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/external_references_content.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/index.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/index.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_live_query_field.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_live_query_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_live_query_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_live_query_field.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_osquery_action.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_osquery_action.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_osquery_action_params_form.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action_params_form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_osquery_action_params_form.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action_params_form.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_osquery_result.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_result.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_osquery_result.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_result.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_osquery_results.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_results.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_osquery_results.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_results.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/index.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/index.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/osquery_action.test.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/osquery_action.test.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/osquery_action.test.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/osquery_action.test.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/translations.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/translations.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/translations.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/translations.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.test.ts b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.test.ts rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.test.ts diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_response_action_type/index.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_response_action_type/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_response_action_type/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_response_action_type/index.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_response_action_type/pack_field_wrapper.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_response_action_type/pack_field_wrapper.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_response_action_type/pack_field_wrapper.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_response_action_type/pack_field_wrapper.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.test.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.test.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.test.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.test.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/test_utils.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/test_utils.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/test_utils.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/test_utils.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/types.ts b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/types.ts rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/types.ts diff --git a/x-pack/plugins/osquery/public/shared_components/prompts.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/prompts.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/prompts.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/prompts.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/services_wrapper.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/services_wrapper.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/use_is_osquery_available.ts b/x-pack/platform/plugins/shared/osquery/public/shared_components/use_is_osquery_available.ts similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/use_is_osquery_available.ts rename to x-pack/platform/plugins/shared/osquery/public/shared_components/use_is_osquery_available.ts diff --git a/x-pack/plugins/osquery/public/shared_imports.ts b/x-pack/platform/plugins/shared/osquery/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/osquery/public/shared_imports.ts rename to x-pack/platform/plugins/shared/osquery/public/shared_imports.ts diff --git a/x-pack/plugins/osquery/public/timelines/add_to_timeline_button.tsx b/x-pack/platform/plugins/shared/osquery/public/timelines/add_to_timeline_button.tsx similarity index 100% rename from x-pack/plugins/osquery/public/timelines/add_to_timeline_button.tsx rename to x-pack/platform/plugins/shared/osquery/public/timelines/add_to_timeline_button.tsx diff --git a/x-pack/plugins/osquery/public/types.ts b/x-pack/platform/plugins/shared/osquery/public/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/types.ts rename to x-pack/platform/plugins/shared/osquery/public/types.ts diff --git a/x-pack/platform/plugins/shared/osquery/scripts/openapi/bundle.js b/x-pack/platform/plugins/shared/osquery/scripts/openapi/bundle.js new file mode 100644 index 0000000000000..d951852cf68b3 --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/scripts/openapi/bundle.js @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../../../../src/setup_node_env'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { bundle } = require('@kbn/openapi-bundler'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { resolve } = require('path'); + +const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); + +(async () => { + await bundle({ + rootDir: ELASTIC_ASSISTANT_ROOT, + sourceGlob: 'common/api/**/*.schema.yaml', + outputFilePath: 'docs/openapi/serverless/osquery_api_{version}.bundled.schema.yaml', + options: { + includeLabels: ['serverless'], + prototypeDocument: { + info: { + title: 'Security Osquery API (Elastic Cloud Serverless)', + description: 'Run live queries, manage packs and saved queries.', + }, + tags: [ + { + name: 'Security Osquery API', + 'x-displayName': 'Security Osquery', + description: 'Run live queries, manage packs and saved queries.', + }, + ], + }, + }, + }); + + await bundle({ + rootDir: ELASTIC_ASSISTANT_ROOT, + sourceGlob: 'common/api/**/*.schema.yaml', + outputFilePath: 'docs/openapi/ess/osquery_api_{version}.bundled.schema.yaml', + options: { + includeLabels: ['ess'], + prototypeDocument: { + info: { + title: 'Security Osquery API (Elastic Cloud and self-hosted)', + description: 'Run live queries, manage packs and saved queries.', + }, + tags: [ + { + name: 'Security Osquery API', + 'x-displayName': 'Security Osquery', + description: 'Run live queries, manage packs and saved queries.', + }, + ], + }, + }, + }); +})(); diff --git a/x-pack/platform/plugins/shared/osquery/scripts/openapi/generate.js b/x-pack/platform/plugins/shared/osquery/scripts/openapi/generate.js new file mode 100644 index 0000000000000..0aec6d9a93fae --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/scripts/openapi/generate.js @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../../../../src/setup_node_env'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { generate } = require('@kbn/openapi-generator'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { REPO_ROOT } = require('@kbn/repo-info'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { join, resolve } = require('path'); + +const OSQUERY_ROOT = resolve(__dirname, '../..'); + +(async () => { + await generate({ + title: 'API route schemas', + rootDir: OSQUERY_ROOT, + sourceGlob: 'common/api/**/*.schema.yaml', + templateName: 'zod_operation_schema', + }); + + await generate({ + title: 'API client for tests', + rootDir: OSQUERY_ROOT, + sourceGlob: 'common/api/**/*.schema.yaml', + templateName: 'api_client_supertest', + skipLinting: true, + bundle: { + outFile: join( + REPO_ROOT, + 'x-pack/test/api_integration/services/security_solution_osquery_api.gen.ts' + ), + }, + }); +})(); diff --git a/x-pack/plugins/osquery/scripts/readme.md b/x-pack/platform/plugins/shared/osquery/scripts/readme.md similarity index 100% rename from x-pack/plugins/osquery/scripts/readme.md rename to x-pack/platform/plugins/shared/osquery/scripts/readme.md diff --git a/x-pack/plugins/osquery/scripts/schema_formatter/ecs.js b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs.js similarity index 84% rename from x-pack/plugins/osquery/scripts/schema_formatter/ecs.js rename to x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs.js index 4628b0d452c37..8b931fc2ce440 100644 --- a/x-pack/plugins/osquery/scripts/schema_formatter/ecs.js +++ b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./ecs_formatter'); diff --git a/x-pack/plugins/osquery/scripts/schema_formatter/ecs_formatter.ts b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs_formatter.ts similarity index 100% rename from x-pack/plugins/osquery/scripts/schema_formatter/ecs_formatter.ts rename to x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs_formatter.ts diff --git a/x-pack/plugins/osquery/scripts/schema_formatter/osquery.js b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery.js similarity index 84% rename from x-pack/plugins/osquery/scripts/schema_formatter/osquery.js rename to x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery.js index bac972aa2b22a..85216597d2a2e 100644 --- a/x-pack/plugins/osquery/scripts/schema_formatter/osquery.js +++ b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./osquery_formatter'); diff --git a/x-pack/plugins/osquery/scripts/schema_formatter/osquery_formatter.ts b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery_formatter.ts similarity index 100% rename from x-pack/plugins/osquery/scripts/schema_formatter/osquery_formatter.ts rename to x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery_formatter.ts diff --git a/x-pack/plugins/osquery/server/common/error.ts b/x-pack/platform/plugins/shared/osquery/server/common/error.ts similarity index 100% rename from x-pack/plugins/osquery/server/common/error.ts rename to x-pack/platform/plugins/shared/osquery/server/common/error.ts diff --git a/x-pack/plugins/osquery/server/common/types.ts b/x-pack/platform/plugins/shared/osquery/server/common/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/common/types.ts rename to x-pack/platform/plugins/shared/osquery/server/common/types.ts diff --git a/x-pack/plugins/osquery/server/create_config.ts b/x-pack/platform/plugins/shared/osquery/server/create_config.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_config.ts rename to x-pack/platform/plugins/shared/osquery/server/create_config.ts diff --git a/x-pack/plugins/osquery/server/create_data_views/index.ts b/x-pack/platform/plugins/shared/osquery/server/create_data_views/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_data_views/index.ts rename to x-pack/platform/plugins/shared/osquery/server/create_data_views/index.ts diff --git a/x-pack/plugins/osquery/server/create_indices/action_responses_mapping.ts b/x-pack/platform/plugins/shared/osquery/server/create_indices/action_responses_mapping.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_indices/action_responses_mapping.ts rename to x-pack/platform/plugins/shared/osquery/server/create_indices/action_responses_mapping.ts diff --git a/x-pack/plugins/osquery/server/create_indices/actions_mapping.ts b/x-pack/platform/plugins/shared/osquery/server/create_indices/actions_mapping.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_indices/actions_mapping.ts rename to x-pack/platform/plugins/shared/osquery/server/create_indices/actions_mapping.ts diff --git a/x-pack/plugins/osquery/server/create_indices/create_transforms_indices.ts b/x-pack/platform/plugins/shared/osquery/server/create_indices/create_transforms_indices.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_indices/create_transforms_indices.ts rename to x-pack/platform/plugins/shared/osquery/server/create_indices/create_transforms_indices.ts diff --git a/x-pack/plugins/osquery/server/create_transforms/action_responses_transform.ts b/x-pack/platform/plugins/shared/osquery/server/create_transforms/action_responses_transform.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_transforms/action_responses_transform.ts rename to x-pack/platform/plugins/shared/osquery/server/create_transforms/action_responses_transform.ts diff --git a/x-pack/plugins/osquery/server/create_transforms/create_transforms.test.ts b/x-pack/platform/plugins/shared/osquery/server/create_transforms/create_transforms.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_transforms/create_transforms.test.ts rename to x-pack/platform/plugins/shared/osquery/server/create_transforms/create_transforms.test.ts diff --git a/x-pack/plugins/osquery/server/create_transforms/create_transforms.ts b/x-pack/platform/plugins/shared/osquery/server/create_transforms/create_transforms.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_transforms/create_transforms.ts rename to x-pack/platform/plugins/shared/osquery/server/create_transforms/create_transforms.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/create_action_handler.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_handler.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/create_action_handler.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_handler.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/create_action_service.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/create_action_service.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/create_queries.test.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_queries.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/create_queries.test.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/create_queries.test.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/create_queries.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_queries.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/create_queries.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/create_queries.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/index.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/index.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/index.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/validate_license.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/validate_license.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/validate_license.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/validate_license.ts diff --git a/x-pack/plugins/osquery/server/handlers/index.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/index.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/index.ts diff --git a/x-pack/plugins/osquery/server/index.ts b/x-pack/platform/plugins/shared/osquery/server/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/index.ts rename to x-pack/platform/plugins/shared/osquery/server/index.ts diff --git a/x-pack/plugins/osquery/server/lib/fleet_integration.ts b/x-pack/platform/plugins/shared/osquery/server/lib/fleet_integration.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/fleet_integration.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/fleet_integration.ts diff --git a/x-pack/plugins/osquery/server/lib/osquery_app_context_services.ts b/x-pack/platform/plugins/shared/osquery/server/lib/osquery_app_context_services.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/osquery_app_context_services.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/osquery_app_context_services.ts diff --git a/x-pack/plugins/osquery/server/lib/parse_agent_groups.test.ts b/x-pack/platform/plugins/shared/osquery/server/lib/parse_agent_groups.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/parse_agent_groups.test.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/parse_agent_groups.test.ts diff --git a/x-pack/plugins/osquery/server/lib/parse_agent_groups.ts b/x-pack/platform/plugins/shared/osquery/server/lib/parse_agent_groups.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/parse_agent_groups.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/parse_agent_groups.ts diff --git a/x-pack/plugins/osquery/server/lib/saved_query/saved_object_mappings.ts b/x-pack/platform/plugins/shared/osquery/server/lib/saved_query/saved_object_mappings.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/saved_query/saved_object_mappings.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/saved_query/saved_object_mappings.ts diff --git a/x-pack/plugins/osquery/server/lib/saved_query/saved_object_model_versions.ts b/x-pack/platform/plugins/shared/osquery/server/lib/saved_query/saved_object_model_versions.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/saved_query/saved_object_model_versions.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/saved_query/saved_object_model_versions.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/__mocks__/index.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/__mocks__/index.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/__mocks__/index.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/constants.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/constants.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/constants.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/constants.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/filters.test.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/filters.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/filters.test.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/filters.test.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/filters.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/filters.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/filters.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/filters.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/helpers.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/helpers.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/helpers.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/helpers.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/receiver.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/receiver.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/receiver.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/receiver.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/sender.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/sender.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/task.test.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/task.test.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task.test.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/task.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/task.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/task_state.test.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task_state.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/task_state.test.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task_state.test.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/task_state.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task_state.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/task_state.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task_state.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/tasks/configs.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/configs.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/tasks/configs.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/configs.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/tasks/index.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/tasks/index.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/index.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/tasks/packs.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/packs.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/tasks/packs.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/packs.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/tasks/saved_queries.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/saved_queries.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/tasks/saved_queries.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/saved_queries.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/types.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/types.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/types.ts diff --git a/x-pack/plugins/osquery/server/lib/update_global_packs.ts b/x-pack/platform/plugins/shared/osquery/server/lib/update_global_packs.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/update_global_packs.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/update_global_packs.ts diff --git a/x-pack/plugins/osquery/server/plugin.ts b/x-pack/platform/plugins/shared/osquery/server/plugin.ts similarity index 100% rename from x-pack/plugins/osquery/server/plugin.ts rename to x-pack/platform/plugins/shared/osquery/server/plugin.ts diff --git a/x-pack/plugins/osquery/server/routes/asset/get_assets_status_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/asset/get_assets_status_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/asset/get_assets_status_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/asset/get_assets_status_route.ts diff --git a/x-pack/plugins/osquery/server/routes/asset/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/asset/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/asset/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/asset/index.ts diff --git a/x-pack/plugins/osquery/server/routes/asset/update_assets_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/asset/update_assets_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/asset/update_assets_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/asset/update_assets_route.ts diff --git a/x-pack/plugins/osquery/server/routes/asset/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/asset/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/asset/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/asset/utils.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_details.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_details.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policies.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policies.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policy.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policy.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agents.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agents.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_package_policies.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_package_policies.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/index.ts diff --git a/x-pack/plugins/osquery/server/routes/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/index.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/create_live_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/create_live_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/find_live_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/find_live_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/find_live_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/find_live_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/get_live_query_details_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_details_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/get_live_query_details_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_details_route.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/get_live_query_results_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_results_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/get_live_query_results_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_results_route.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/index.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/osquery_parser.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/osquery_parser.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/osquery_parser.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/osquery_parser.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/utils.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/create_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/create_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/create_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/create_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/delete_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/delete_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/delete_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/delete_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/find_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/find_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/find_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/find_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/index.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/types.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/types.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/types.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/update_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/update_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/update_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/update_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/utils.test.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/utils.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/utils.test.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/utils.test.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/utils.ts diff --git a/x-pack/plugins/osquery/server/routes/privileges_check/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/privileges_check/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/index.ts diff --git a/x-pack/plugins/osquery/server/routes/privileges_check/privileges_check_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/privileges_check_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/privileges_check/privileges_check_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/privileges_check_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/create_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/create_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/create_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/create_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/delete_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/delete_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/delete_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/delete_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/find_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/find_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/find_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/find_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/index.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/read_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/read_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/read_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/read_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/types.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/types.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/types.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/update_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/update_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/update_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/update_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/utils.ts diff --git a/x-pack/plugins/osquery/server/routes/status/create_status_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/status/create_status_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/status/create_status_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/status/create_status_route.ts diff --git a/x-pack/plugins/osquery/server/routes/status/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/status/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/status/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/status/index.ts diff --git a/x-pack/plugins/osquery/server/routes/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/utils.ts diff --git a/x-pack/plugins/osquery/server/saved_objects.ts b/x-pack/platform/plugins/shared/osquery/server/saved_objects.ts similarity index 100% rename from x-pack/plugins/osquery/server/saved_objects.ts rename to x-pack/platform/plugins/shared/osquery/server/saved_objects.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/all/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/all/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/all/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/all/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/all/query.all_actions.dsl.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/all/query.all_actions.dsl.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/all/query.all_actions.dsl.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/all/query.all_actions.dsl.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/details/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/details/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/details/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/details/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/details/query.action_details.dsl.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/details/query.action_details.dsl.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/details/query.action_details.dsl.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/details/query.action_details.dsl.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/results/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/results/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/results/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/results/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/types.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/types.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/types.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/index.ts diff --git a/x-pack/plugins/osquery/server/types.ts b/x-pack/platform/plugins/shared/osquery/server/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/types.ts rename to x-pack/platform/plugins/shared/osquery/server/types.ts diff --git a/x-pack/plugins/osquery/server/utils/build_query.ts b/x-pack/platform/plugins/shared/osquery/server/utils/build_query.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/build_query.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/build_query.ts diff --git a/x-pack/plugins/osquery/server/utils/build_validation/route_validation.test.ts b/x-pack/platform/plugins/shared/osquery/server/utils/build_validation/route_validation.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/build_validation/route_validation.test.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/build_validation/route_validation.test.ts diff --git a/x-pack/plugins/osquery/server/utils/build_validation/route_validation.ts b/x-pack/platform/plugins/shared/osquery/server/utils/build_validation/route_validation.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/build_validation/route_validation.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/build_validation/route_validation.ts diff --git a/x-pack/plugins/osquery/server/utils/register_features.ts b/x-pack/platform/plugins/shared/osquery/server/utils/register_features.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/register_features.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/register_features.ts diff --git a/x-pack/plugins/osquery/server/utils/runtime_types.ts b/x-pack/platform/plugins/shared/osquery/server/utils/runtime_types.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/runtime_types.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/runtime_types.ts diff --git a/x-pack/plugins/osquery/server/utils/upgrade_integration.ts b/x-pack/platform/plugins/shared/osquery/server/utils/upgrade_integration.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/upgrade_integration.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/upgrade_integration.ts diff --git a/x-pack/platform/plugins/shared/osquery/tsconfig.json b/x-pack/platform/plugins/shared/osquery/tsconfig.json new file mode 100644 index 0000000000000..848f946e38a2c --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/tsconfig.json @@ -0,0 +1,82 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "exclude": ["target/**/*"], + "include": [ + // add all the folders contains files to be compiled + "common/**/*", + "public/**/*", + "scripts/**/*", + "scripts/**/**.json", + "server/**/*", + "../../../../../typings/**/*", + // ECS and Osquery schema files + "public/common/schemas/*/**.json" + ], + "kbn_references": [ + "@kbn/core", + { "path": "../../../../../src/setup_node_env/tsconfig.json" }, + // add references to other TypeScript projects the plugin depends on + + // requiredPlugins from ./kibana.json + "@kbn/data-plugin", + "@kbn/navigation-plugin", + "@kbn/fleet-plugin", + + // optionalPlugins from ./kibana.json + "@kbn/cases-plugin", + + // requiredBundles from ./kibana.json + "@kbn/es-ui-shared-plugin", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + + // packages + "@kbn/config-schema", + "@kbn/es-query", + "@kbn/utility-types", + "@kbn/securitysolution-io-ts-utils", + "@kbn/osquery-io-ts-types", + "@kbn/i18n-react", + "@kbn/discover-plugin", + "@kbn/lens-plugin", + "@kbn/security-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/timelines-plugin", + "@kbn/spaces-plugin", + "@kbn/i18n", + "@kbn/rison", + "@kbn/react-field", + "@kbn/dev-cli-runner", + "@kbn/telemetry-plugin", + "@kbn/actions-plugin", + "@kbn/features-plugin", + "@kbn/task-manager-plugin", + "@kbn/data-views-plugin", + "@kbn/rule-registry-plugin", + "@kbn/securitysolution-es-utils", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/std", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-api-server", + "@kbn/logging", + "@kbn/safer-lodash-set", + "@kbn/shared-ux-router", + "@kbn/licensing-plugin", + "@kbn/core-lifecycle-browser", + "@kbn/core-saved-objects-server", + "@kbn/monaco", + "@kbn/io-ts-utils", + "@kbn/shared-ux-page-kibana-template", + "@kbn/openapi-generator", + "@kbn/code-editor", + "@kbn/search-types", + "@kbn/react-kibana-context-render", + "@kbn/zod-helpers", + "@kbn/openapi-bundler", + "@kbn/repo-info", + "@kbn/zod" + ] +} diff --git a/x-pack/plugins/searchprofiler/README.md b/x-pack/platform/plugins/shared/searchprofiler/README.md similarity index 100% rename from x-pack/plugins/searchprofiler/README.md rename to x-pack/platform/plugins/shared/searchprofiler/README.md diff --git a/x-pack/plugins/searchprofiler/common/constants.ts b/x-pack/platform/plugins/shared/searchprofiler/common/constants.ts similarity index 100% rename from x-pack/plugins/searchprofiler/common/constants.ts rename to x-pack/platform/plugins/shared/searchprofiler/common/constants.ts diff --git a/x-pack/plugins/searchprofiler/common/index.ts b/x-pack/platform/plugins/shared/searchprofiler/common/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/common/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/common/index.ts diff --git a/x-pack/plugins/searchprofiler/common/types.ts b/x-pack/platform/plugins/shared/searchprofiler/common/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/common/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/common/types.ts diff --git a/x-pack/platform/plugins/shared/searchprofiler/jest.config.js b/x-pack/platform/plugins/shared/searchprofiler/jest.config.js new file mode 100644 index 0000000000000..1f362b8d96def --- /dev/null +++ b/x-pack/platform/plugins/shared/searchprofiler/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/shared/searchprofiler'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/shared/searchprofiler', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/searchprofiler/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/searchprofiler/kibana.jsonc b/x-pack/platform/plugins/shared/searchprofiler/kibana.jsonc similarity index 100% rename from x-pack/plugins/searchprofiler/kibana.jsonc rename to x-pack/platform/plugins/shared/searchprofiler/kibana.jsonc diff --git a/x-pack/plugins/searchprofiler/public/application/_app.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/_app.scss similarity index 94% rename from x-pack/plugins/searchprofiler/public/application/_app.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/_app.scss index 617aa21c6777e..22bea38e0ccff 100644 --- a/x-pack/plugins/searchprofiler/public/application/_app.scss +++ b/x-pack/platform/plugins/shared/searchprofiler/public/application/_app.scss @@ -1,4 +1,4 @@ -@import '../../../../../src/core/public/mixins'; +@import '../../../../../../../src/core/public/mixins'; .prfDevTool__page { flex: 1 1 auto; diff --git a/x-pack/plugins/searchprofiler/public/application/_index.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/_index.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/_index.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/_index.scss diff --git a/x-pack/plugins/searchprofiler/public/application/app.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/app.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/app.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/app.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/_index.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/_index.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/_index.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/_index.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/_highlight_details_flyout.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/_highlight_details_flyout.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/_highlight_details_flyout.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/_highlight_details_flyout.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_table.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_table.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_table.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_table.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/_license_warning_notice.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/_license_warning_notice.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/_license_warning_notice.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/_license_warning_notice.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/percentage_badge/_percentage_badge.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/_percentage_badge.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/percentage_badge/_percentage_badge.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/_percentage_badge.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/percentage_badge/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/percentage_badge/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/percentage_badge/percentage_badge.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/percentage_badge.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/percentage_badge/percentage_badge.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/percentage_badge.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/editor.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/editor.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/editor.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/editor.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/editor.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/editor.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/editor.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/editor.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/profile_query_editor.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/profile_query_editor.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/profile_query_editor.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/profile_query_editor.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/breakdown.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/breakdown.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/breakdown.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/breakdown.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_indices.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_indices.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_indices.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_indices.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_times.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_times.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_times.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_times.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/processed_search_response.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/processed_search_response.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/processed_search_response.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/processed_search_response.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/search_response.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/search_response.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/search_response.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/search_response.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/init_data.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/init_data.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/init_data.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/init_data.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/profile_tree.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/profile_tree.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/profile_tree.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/profile_tree.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/unsafe_utils.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/unsafe_utils.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/unsafe_utils.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/unsafe_utils.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/utils.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/utils.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/utils.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/utils.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/_index.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/_index.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/_index.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/_index.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/_profile_tree.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/_profile_tree.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/_profile_tree.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/_profile_tree.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/constants.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/constants.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/constants.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/constants.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/highlight_context.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/highlight_context.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/highlight_context.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/highlight_context.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/index_details.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/index_details.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/index_details.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/index_details.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/init_data.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/init_data.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/init_data.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/init_data.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/profile_tree.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/profile_tree.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/profile_tree.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/profile_tree.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/_shard_details.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/_shard_details.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/_shard_details.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/_shard_details.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/types.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/types.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/use_highlight_tree_node.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/use_highlight_tree_node.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/use_highlight_tree_node.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/use_highlight_tree_node.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/utils.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/utils.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/utils.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/utils.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/contexts/app_context.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/app_context.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/contexts/app_context.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/app_context.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/contexts/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/contexts/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/contexts/profiler_context.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/profiler_context.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/contexts/profiler_context.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/profiler_context.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/hooks/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/hooks/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/hooks/use_has_indices.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/use_has_indices.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/hooks/use_has_indices.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/use_has_indices.ts diff --git a/x-pack/plugins/searchprofiler/public/application/hooks/use_request_profile.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/use_request_profile.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/hooks/use_request_profile.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/use_request_profile.ts diff --git a/x-pack/plugins/searchprofiler/public/application/index.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/index.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/index.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/index.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/check_for_json_errors.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/check_for_json_errors.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/check_for_json_errors.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/check_for_json_errors.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/has_aggregations.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/has_aggregations.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/has_aggregations.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/has_aggregations.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/has_searches.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/has_searches.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/has_searches.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/has_searches.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/ms_to_pretty.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ms_to_pretty.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/ms_to_pretty.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ms_to_pretty.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/ns_to_pretty.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ns_to_pretty.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/ns_to_pretty.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ns_to_pretty.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/ns_to_pretty.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ns_to_pretty.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/ns_to_pretty.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ns_to_pretty.ts diff --git a/x-pack/plugins/searchprofiler/public/application/store/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/store/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/store/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/store/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/store/reducer.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/store/reducer.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/store/reducer.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/store/reducer.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/store/reducer.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/store/reducer.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/store/reducer.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/store/reducer.ts diff --git a/x-pack/plugins/searchprofiler/public/application/store/store.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/store/store.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/store/store.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/store/store.ts diff --git a/x-pack/plugins/searchprofiler/public/application/types.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/types.ts diff --git a/x-pack/plugins/searchprofiler/public/index.scss b/x-pack/platform/plugins/shared/searchprofiler/public/index.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/index.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/index.scss diff --git a/x-pack/plugins/searchprofiler/public/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/index.ts diff --git a/x-pack/plugins/searchprofiler/public/locator.ts b/x-pack/platform/plugins/shared/searchprofiler/public/locator.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/locator.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/locator.ts diff --git a/x-pack/plugins/searchprofiler/public/plugin.ts b/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/plugin.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts diff --git a/x-pack/plugins/searchprofiler/public/shared_imports.ts b/x-pack/platform/plugins/shared/searchprofiler/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/shared_imports.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/shared_imports.ts diff --git a/x-pack/plugins/searchprofiler/public/types.ts b/x-pack/platform/plugins/shared/searchprofiler/public/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/types.ts diff --git a/x-pack/plugins/searchprofiler/server/index.ts b/x-pack/platform/plugins/shared/searchprofiler/server/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/server/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/server/index.ts diff --git a/x-pack/plugins/searchprofiler/server/plugin.ts b/x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts similarity index 100% rename from x-pack/plugins/searchprofiler/server/plugin.ts rename to x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts diff --git a/x-pack/plugins/searchprofiler/server/routes/profile.ts b/x-pack/platform/plugins/shared/searchprofiler/server/routes/profile.ts similarity index 100% rename from x-pack/plugins/searchprofiler/server/routes/profile.ts rename to x-pack/platform/plugins/shared/searchprofiler/server/routes/profile.ts diff --git a/x-pack/plugins/searchprofiler/server/types.ts b/x-pack/platform/plugins/shared/searchprofiler/server/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/server/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/server/types.ts diff --git a/x-pack/platform/plugins/shared/searchprofiler/tsconfig.json b/x-pack/platform/plugins/shared/searchprofiler/tsconfig.json new file mode 100644 index 0000000000000..658512193b1ed --- /dev/null +++ b/x-pack/platform/plugins/shared/searchprofiler/tsconfig.json @@ -0,0 +1,31 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/es-ui-shared-plugin", + "@kbn/dev-tools-plugin", + "@kbn/home-plugin", + "@kbn/licensing-plugin", + "@kbn/i18n", + "@kbn/share-plugin", + "@kbn/utility-types", + "@kbn/expect", + "@kbn/test-jest-helpers", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/react-kibana-context-render", + "@kbn/code-editor", + "@kbn/monaco", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/actions/server/routes/connector/create/create.ts b/x-pack/plugins/actions/server/routes/connector/create/create.ts index cd5073506c03f..d828c7339dc26 100644 --- a/x-pack/plugins/actions/server/routes/connector/create/create.ts +++ b/x-pack/plugins/actions/server/routes/connector/create/create.ts @@ -17,6 +17,7 @@ import { createConnectorRequestBodySchemaV1, } from '../../../../common/routes/connector/apis/create'; import { transformCreateConnectorBodyV1 } from './transforms'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const createConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -25,6 +26,7 @@ export const createConnectorRoute = ( router.post( { path: `${BASE_ACTION_API_PATH}/connector/{id?}`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: 'Create a connector', diff --git a/x-pack/plugins/actions/server/routes/connector/delete/delete.ts b/x-pack/plugins/actions/server/routes/connector/delete/delete.ts index 38f7c41d6037b..acb9b64b754c8 100644 --- a/x-pack/plugins/actions/server/routes/connector/delete/delete.ts +++ b/x-pack/plugins/actions/server/routes/connector/delete/delete.ts @@ -14,6 +14,7 @@ import { deleteConnectorRequestParamsSchemaV1, DeleteConnectorRequestParamsV1, } from '../../../../common/routes/connector/apis/delete'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const deleteConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -22,6 +23,7 @@ export const deleteConnectorRoute = ( router.delete( { path: `${BASE_ACTION_API_PATH}/connector/{id}`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Delete a connector`, diff --git a/x-pack/plugins/actions/server/routes/connector/execute/execute.ts b/x-pack/plugins/actions/server/routes/connector/execute/execute.ts index ab5ed25ff5f78..bbcb4f6a5a39c 100644 --- a/x-pack/plugins/actions/server/routes/connector/execute/execute.ts +++ b/x-pack/plugins/actions/server/routes/connector/execute/execute.ts @@ -20,6 +20,7 @@ import { ExecuteConnectorRequestParamsV1, } from '../../../../common/routes/connector/apis/execute'; import { transformExecuteConnectorResponseV1 } from './transforms'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const executeConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -28,6 +29,7 @@ export const executeConnectorRoute = ( router.post( { path: `${BASE_ACTION_API_PATH}/connector/{id}/_execute`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Run a connector`, diff --git a/x-pack/plugins/actions/server/routes/connector/get/get.ts b/x-pack/plugins/actions/server/routes/connector/get/get.ts index eaab31594ba1b..e5777d6ab08ff 100644 --- a/x-pack/plugins/actions/server/routes/connector/get/get.ts +++ b/x-pack/plugins/actions/server/routes/connector/get/get.ts @@ -16,6 +16,7 @@ import { ILicenseState } from '../../../lib'; import { BASE_ACTION_API_PATH } from '../../../../common'; import { ActionsRequestHandlerContext } from '../../../types'; import { verifyAccessAndContext } from '../../verify_access_and_context'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const getConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -24,6 +25,7 @@ export const getConnectorRoute = ( router.get( { path: `${BASE_ACTION_API_PATH}/connector/{id}`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Get connector information`, diff --git a/x-pack/plugins/actions/server/routes/connector/get_all/get_all.ts b/x-pack/plugins/actions/server/routes/connector/get_all/get_all.ts index 27f43a75eb151..945e878d445bd 100644 --- a/x-pack/plugins/actions/server/routes/connector/get_all/get_all.ts +++ b/x-pack/plugins/actions/server/routes/connector/get_all/get_all.ts @@ -12,6 +12,7 @@ import { ActionsRequestHandlerContext } from '../../../types'; import { BASE_ACTION_API_PATH } from '../../../../common'; import { ILicenseState } from '../../../lib'; import { verifyAccessAndContext } from '../../verify_access_and_context'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const getAllConnectorsRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -20,6 +21,7 @@ export const getAllConnectorsRoute = ( router.get( { path: `${BASE_ACTION_API_PATH}/connectors`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Get all connectors`, diff --git a/x-pack/plugins/actions/server/routes/connector/get_all_system/get_all_system.ts b/x-pack/plugins/actions/server/routes/connector/get_all_system/get_all_system.ts index 747d97e5ba8a3..4259f113a4456 100644 --- a/x-pack/plugins/actions/server/routes/connector/get_all_system/get_all_system.ts +++ b/x-pack/plugins/actions/server/routes/connector/get_all_system/get_all_system.ts @@ -12,6 +12,7 @@ import { INTERNAL_BASE_ACTION_API_PATH } from '../../../../common'; import { ILicenseState } from '../../../lib'; import { verifyAccessAndContext } from '../../verify_access_and_context'; import { transformGetAllConnectorsResponseV1 } from '../get_all/transforms'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const getAllConnectorsIncludingSystemRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -20,6 +21,7 @@ export const getAllConnectorsIncludingSystemRoute = ( router.get( { path: `${INTERNAL_BASE_ACTION_API_PATH}/connectors`, + security: DEFAULT_ACTION_ROUTE_SECURITY, validate: {}, options: { access: 'internal', diff --git a/x-pack/plugins/actions/server/routes/connector/list_types/list_types.ts b/x-pack/plugins/actions/server/routes/connector/list_types/list_types.ts index 20ca0d9343608..3078b9438d875 100644 --- a/x-pack/plugins/actions/server/routes/connector/list_types/list_types.ts +++ b/x-pack/plugins/actions/server/routes/connector/list_types/list_types.ts @@ -24,6 +24,12 @@ export const listTypesRoute = ( router.get( { path: `${BASE_ACTION_API_PATH}/connector_types`, + security: { + authz: { + enabled: false, + reason: 'This API does not require any Kibana feature privileges.', + }, + }, options: { access: 'public', summary: `Get connector types`, diff --git a/x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.ts b/x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.ts index c43912ecbc7e4..892ded96bbded 100644 --- a/x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.ts +++ b/x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.ts @@ -24,6 +24,12 @@ export const listTypesWithSystemRoute = ( router.get( { path: `${INTERNAL_BASE_ACTION_API_PATH}/connector_types`, + security: { + authz: { + enabled: false, + reason: 'This internal API does not require any Kibana feature privileges.', + }, + }, validate: { query: connectorTypesQuerySchemaV1, }, diff --git a/x-pack/plugins/actions/server/routes/connector/update/update.ts b/x-pack/plugins/actions/server/routes/connector/update/update.ts index 888cdee9b0e3a..8686ff2d7efd0 100644 --- a/x-pack/plugins/actions/server/routes/connector/update/update.ts +++ b/x-pack/plugins/actions/server/routes/connector/update/update.ts @@ -18,6 +18,7 @@ import { updateConnectorParamsSchemaV1, } from '../../../../common/routes/connector/apis/update'; import { transformUpdateConnectorResponseV1 } from './transforms'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const updateConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -26,6 +27,7 @@ export const updateConnectorRoute = ( router.put( { path: `${BASE_ACTION_API_PATH}/connector/{id}`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Update a connector`, diff --git a/x-pack/plugins/actions/server/routes/constants.ts b/x-pack/plugins/actions/server/routes/constants.ts new file mode 100644 index 0000000000000..2c71110b92833 --- /dev/null +++ b/x-pack/plugins/actions/server/routes/constants.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RouteSecurity } from '@kbn/core-http-server'; + +/** + * This constant is used as the default value for the security object in routes + * where a reason for opting out needs to be provided. + */ +export const DEFAULT_ACTION_ROUTE_SECURITY: RouteSecurity = { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because actions use their own authorization model inside the actions client.', + }, +}; diff --git a/x-pack/plugins/actions/server/routes/get_global_execution_kpi.ts b/x-pack/plugins/actions/server/routes/get_global_execution_kpi.ts index 93034745584a7..a82cee84082bf 100644 --- a/x-pack/plugins/actions/server/routes/get_global_execution_kpi.ts +++ b/x-pack/plugins/actions/server/routes/get_global_execution_kpi.ts @@ -15,6 +15,7 @@ import { verifyAccessAndContext } from './verify_access_and_context'; import { ActionsRequestHandlerContext } from '../types'; import { ILicenseState } from '../lib'; import { rewriteNamespaces } from './rewrite_namespaces'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from './constants'; const bodySchema = schema.object({ date_start: schema.string(), @@ -42,6 +43,7 @@ export const getGlobalExecutionKPIRoute = ( router.post( { path: `${INTERNAL_BASE_ACTION_API_PATH}/_global_connector_execution_kpi`, + security: DEFAULT_ACTION_ROUTE_SECURITY, validate: { body: bodySchema, }, diff --git a/x-pack/plugins/actions/server/routes/get_global_execution_logs.ts b/x-pack/plugins/actions/server/routes/get_global_execution_logs.ts index d42ce07a814cf..2dc6bffa8f6f0 100644 --- a/x-pack/plugins/actions/server/routes/get_global_execution_logs.ts +++ b/x-pack/plugins/actions/server/routes/get_global_execution_logs.ts @@ -16,6 +16,7 @@ import { } from '../../common'; import { verifyAccessAndContext } from './verify_access_and_context'; import { rewriteNamespaces } from './rewrite_namespaces'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from './constants'; const sortOrderSchema = schema.oneOf([schema.literal('asc'), schema.literal('desc')]); @@ -54,6 +55,7 @@ export const getGlobalExecutionLogRoute = ( router.post( { path: `${INTERNAL_BASE_ACTION_API_PATH}/_global_connector_execution_logs`, + security: DEFAULT_ACTION_ROUTE_SECURITY, validate: { body: bodySchema, }, diff --git a/x-pack/plugins/actions/server/routes/get_oauth_access_token.ts b/x-pack/plugins/actions/server/routes/get_oauth_access_token.ts index b703c0de220f1..0d296fe55070b 100644 --- a/x-pack/plugins/actions/server/routes/get_oauth_access_token.ts +++ b/x-pack/plugins/actions/server/routes/get_oauth_access_token.ts @@ -12,6 +12,7 @@ import { INTERNAL_BASE_ACTION_API_PATH } from '../../common'; import { ActionsRequestHandlerContext } from '../types'; import { verifyAccessAndContext } from './verify_access_and_context'; import { ActionsConfigurationUtilities } from '../actions_config'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from './constants'; const oauthJwtBodySchema = schema.object({ tokenUrl: schema.string(), @@ -63,6 +64,7 @@ export const getOAuthAccessToken = ( router.post( { path: `${INTERNAL_BASE_ACTION_API_PATH}/connector/_oauth_access_token`, + security: DEFAULT_ACTION_ROUTE_SECURITY, validate: { body: bodySchema, }, diff --git a/x-pack/plugins/alerting/docs/openapi/bundled.json b/x-pack/plugins/alerting/docs/openapi/bundled.json index 7d6d85c229202..92e261620bde1 100644 --- a/x-pack/plugins/alerting/docs/openapi/bundled.json +++ b/x-pack/plugins/alerting/docs/openapi/bundled.json @@ -497,1059 +497,6 @@ } } } - }, - "/api/alerts/alert/{alertId}": { - "delete": { - "summary": "Delete an alert", - "operationId": "legaryDeleteAlert", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the delete rule API instead. WARNING: After you delete an alert, you cannot recover it.\n", - "tags": [ - "alerting" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "in": "path", - "name": "alertId", - "description": "The identifier for the alert.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - } - ], - "responses": { - "204": { - "description": "Indicates a successful call." - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - }, - "get": { - "summary": "Get an alert by identifier", - "operationId": "legacyGetAlert", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the get rule API instead.", - "tags": [ - "alerting" - ], - "parameters": [ - { - "in": "path", - "name": "alertId", - "description": "The identifier for the alert.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - } - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/alert_response_properties" - } - } - } - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - }, - "post": { - "summary": "Create an alert", - "operationId": "legacyCreateAlert", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the create rule API instead.", - "tags": [ - "alerting" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "in": "path", - "name": "alertId", - "description": "An UUID v1 or v4 identifier for the alert. If this parameter is omitted, the identifier is randomly generated.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "title": "Legacy create alert request properties", - "type": "object", - "required": [ - "alertTypeId", - "consumer", - "name", - "notifyWhen", - "params", - "schedule" - ], - "properties": { - "actions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "actionTypeId", - "group", - "id", - "params" - ], - "properties": { - "actionTypeId": { - "type": "string", - "description": "The identifier for the action type." - }, - "group": { - "type": "string", - "description": "Grouping actions is recommended for escalations for different types of alert instances. If you don't need this functionality, set it to `default`.\n" - }, - "id": { - "type": "string", - "description": "The ID of the action saved object." - }, - "params": { - "type": "object", - "description": "The map to the `params` that the action type will receive. `params` are handled as Mustache templates and passed a default set of context.\n" - } - } - } - }, - "alertTypeId": { - "type": "string", - "description": "The ID of the alert type that you want to call when the alert is scheduled to run." - }, - "consumer": { - "type": "string", - "description": "The name of the application that owns the alert. This name has to match the Kibana feature name, as that dictates the required role-based access control privileges." - }, - "enabled": { - "type": "boolean", - "description": "Indicates if you want to run the alert on an interval basis after it is created." - }, - "name": { - "type": "string", - "description": "A name to reference and search." - }, - "notifyWhen": { - "type": "string", - "description": "The condition for throttling the notification.", - "enum": [ - "onActionGroupChange", - "onActiveAlert", - "onThrottleInterval" - ] - }, - "params": { - "type": "object", - "description": "The parameters to pass to the alert type executor `params` value. This will also validate against the alert type params validator, if defined." - }, - "schedule": { - "type": "object", - "description": "The schedule specifying when this alert should be run. A schedule is structured such that the key specifies the format you wish to use and its value specifies the schedule.\n", - "properties": { - "interval": { - "type": "string", - "description": "The interval format specifies the interval in seconds, minutes, hours or days at which the alert should run.", - "example": "10s" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A list of keywords to reference and search." - }, - "throttle": { - "type": "string", - "description": "How often this alert should fire the same actions. This will prevent the alert from sending out the same notification over and over. For example, if an alert with a schedule of 1 minute stays in a triggered state for 90 minutes, setting a throttle of `10m` or `1h` will prevent it from sending 90 notifications during this period.\n" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/alert_response_properties" - } - } - } - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - }, - "put": { - "summary": "Update an alert", - "operationId": "legacyUpdateAlert", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the update rule API instead.", - "tags": [ - "alerting" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "in": "path", - "name": "alertId", - "description": "The identifier for the alert.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "title": "Legacy update alert request properties", - "type": "object", - "required": [ - "name", - "notifyWhen", - "params", - "schedule" - ], - "properties": { - "actions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "actionTypeId", - "group", - "id", - "params" - ], - "properties": { - "actionTypeId": { - "type": "string", - "description": "The identifier for the action type." - }, - "group": { - "type": "string", - "description": "Grouping actions is recommended for escalations for different types of alert instances. If you don't need this functionality, set it to `default`.\n" - }, - "id": { - "type": "string", - "description": "The ID of the action saved object." - }, - "params": { - "type": "object", - "description": "The map to the `params` that the action type will receive. `params` are handled as Mustache templates and passed a default set of context.\n" - } - } - } - }, - "name": { - "type": "string", - "description": "A name to reference and search." - }, - "notifyWhen": { - "type": "string", - "description": "The condition for throttling the notification.", - "enum": [ - "onActionGroupChange", - "onActiveAlert", - "onThrottleInterval" - ] - }, - "params": { - "type": "object", - "description": "The parameters to pass to the alert type executor `params` value. This will also validate against the alert type params validator, if defined." - }, - "schedule": { - "type": "object", - "description": "The schedule specifying when this alert should be run. A schedule is structured such that the key specifies the format you wish to use and its value specifies the schedule.\n", - "properties": { - "interval": { - "type": "string", - "description": "The interval format specifies the interval in seconds, minutes, hours or days at which the alert should run.", - "example": "1d" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A list of keywords to reference and search." - }, - "throttle": { - "type": "string", - "description": "How often this alert should fire the same actions. This will prevent the alert from sending out the same notification over and over. For example, if an alert with a schedule of 1 minute stays in a triggered state for 90 minutes, setting a throttle of `10m` or `1h` will prevent it from sending 90 notifications during this period.\n" - } - } - } - } - } - }, - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/alert_response_properties" - } - } - } - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } - }, - "/api/alerts/alert/{alertId}/_disable": { - "post": { - "summary": "Disable an alert", - "operationId": "legacyDisableAlert", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the disable rule API instead.", - "tags": [ - "alerting" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "in": "path", - "name": "alertId", - "description": "The identifier for the alert.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - } - ], - "responses": { - "204": { - "description": "Indicates a successful call." - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } - }, - "/api/alerts/alert/{alertId}/_enable": { - "post": { - "summary": "Enable an alert", - "operationId": "legacyEnableAlert", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the enable rule API instead.", - "tags": [ - "alerting" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "in": "path", - "name": "alertId", - "description": "The identifier for the alert.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - } - ], - "responses": { - "204": { - "description": "Indicates a successful call." - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } - }, - "/api/alerts/alert/{alertId}/_mute_all": { - "post": { - "summary": "Mute all alert instances", - "operationId": "legacyMuteAllAlertInstances", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the mute all alerts API instead.", - "tags": [ - "alerting" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "in": "path", - "name": "alertId", - "description": "The identifier for the alert.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - } - ], - "responses": { - "204": { - "description": "Indicates a successful call." - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } - }, - "/api/alerts/alert/{alertId}/_unmute_all": { - "post": { - "summary": "Unmute all alert instances", - "operationId": "legacyUnmuteAllAlertInstances", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the unmute all alerts API instead.", - "tags": [ - "alerting" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "in": "path", - "name": "alertId", - "description": "The identifier for the alert.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - } - ], - "responses": { - "204": { - "description": "Indicates a successful call." - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } - }, - "/api/alerts/alerts/_find": { - "get": { - "summary": "Get a paginated set of alerts", - "operationId": "legacyFindAlerts", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the find rules API instead. NOTE: Alert `params` are stored as a flattened field type and analyzed as keywords. As alerts change in Kibana, the results on each page of the response also change. Use the find API for traditional paginated results, but avoid using it to export large amounts of data.\n", - "tags": [ - "alerting" - ], - "parameters": [ - { - "name": "default_search_operator", - "in": "query", - "description": "The default operator to use for the `simple_query_string`.", - "schema": { - "type": "string", - "default": "OR" - }, - "example": "OR" - }, - { - "name": "fields", - "in": "query", - "description": "The fields to return in the `attributes` key of the response.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "filter", - "in": "query", - "description": "A KQL string that you filter with an attribute from your saved object. It should look like `savedObjectType.attributes.title: \"myTitle\"`. However, if you used a direct attribute of a saved object, such as `updatedAt`, you must define your filter, for example, `savedObjectType.updatedAt > 2018-12-22`.\n", - "schema": { - "type": "string" - } - }, - { - "name": "has_reference", - "in": "query", - "description": "Filters the rules that have a relation with the reference objects with a specific type and identifier.", - "schema": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - { - "name": "page", - "in": "query", - "description": "The page number to return.", - "schema": { - "type": "integer", - "default": 1 - }, - "example": 1 - }, - { - "name": "per_page", - "in": "query", - "description": "The number of alerts to return per page.", - "schema": { - "type": "integer", - "default": 20 - }, - "example": 20 - }, - { - "name": "search", - "in": "query", - "description": "An Elasticsearch `simple_query_string` query that filters the alerts in the response.", - "schema": { - "type": "string" - } - }, - { - "name": "search_fields", - "in": "query", - "description": "The fields to perform the `simple_query_string` parsed query against.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - } - }, - { - "name": "sort_field", - "in": "query", - "description": "Determines which field is used to sort the results. The field must exist in the `attributes` key of the response.\n", - "schema": { - "type": "string" - } - }, - { - "name": "sort_order", - "in": "query", - "description": "Determines the sort order.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "desc" - }, - "example": "asc" - } - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/alert_response_properties" - } - }, - "page": { - "type": "integer" - }, - "perPage": { - "type": "integer" - }, - "total": { - "type": "integer" - } - } - } - } - } - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } - }, - "/api/alerts/alerts/_health": { - "get": { - "summary": "Get the alerting framework health", - "operationId": "legacyGetAlertingHealth", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the get alerting framework health API instead.", - "tags": [ - "alerting" - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "alertingFrameworkHealth": { - "type": "object", - "description": "Three substates identify the health of the alerting framework: `decryptionHealth`, `executionHealth`, and `readHealth`.\n", - "properties": { - "decryptionHealth": { - "type": "object", - "description": "The timestamp and status of the alert decryption.", - "properties": { - "status": { - "type": "string", - "example": "ok", - "enum": [ - "error", - "ok", - "warn" - ] - }, - "timestamp": { - "type": "string", - "format": "date-time", - "example": "2023-01-13T01:28:00.280Z" - } - } - }, - "executionHealth": { - "type": "object", - "description": "The timestamp and status of the alert execution.", - "properties": { - "status": { - "type": "string", - "example": "ok", - "enum": [ - "error", - "ok", - "warn" - ] - }, - "timestamp": { - "type": "string", - "format": "date-time", - "example": "2023-01-13T01:28:00.280Z" - } - } - }, - "readHealth": { - "type": "object", - "description": "The timestamp and status of the alert reading events.", - "properties": { - "status": { - "type": "string", - "example": "ok", - "enum": [ - "error", - "ok", - "warn" - ] - }, - "timestamp": { - "type": "string", - "format": "date-time", - "example": "2023-01-13T01:28:00.280Z" - } - } - } - } - }, - "hasPermanentEncryptionKey": { - "type": "boolean", - "description": "If `false`, the encrypted saved object plugin does not have a permanent encryption key.", - "example": true - }, - "isSufficientlySecure": { - "type": "boolean", - "description": "If `false`, security is enabled but TLS is not.", - "example": true - } - } - } - } - } - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } - }, - "/api/alerts/alerts/list_alert_types": { - "get": { - "summary": "Get the alert types", - "operationId": "legacyGetAlertTypes", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the get rule types API instead.", - "tags": [ - "alerting" - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object", - "properties": { - "actionGroups": { - "description": "An explicit list of groups for which the alert type can schedule actions, each with the action group's unique ID and human readable name. Alert actions validation uses this configuration to ensure that groups are valid.\n", - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "actionVariables": { - "description": "A list of action variables that the alert type makes available via context and state in action parameter templates, and a short human readable description. The Alert UI will use this information to prompt users for these variables in action parameter editors.\n", - "type": "object", - "properties": { - "context": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "params": { - "type": "array", - "items": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "state": { - "type": "array", - "items": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "authorizedConsumers": { - "description": "The list of the plugins IDs that have access to the alert type.", - "type": "object" - }, - "defaultActionGroupId": { - "description": "The default identifier for the alert type group.", - "type": "string" - }, - "enabledInLicense": { - "description": "Indicates whether the rule type is enabled based on the subscription.", - "type": "boolean" - }, - "id": { - "description": "The unique identifier for the alert type.", - "type": "string" - }, - "isExportable": { - "description": "Indicates whether the alert type is exportable in Saved Objects Management UI.", - "type": "boolean" - }, - "minimumLicenseRequired": { - "description": "The subscriptions required to use the alert type.", - "type": "string" - }, - "name": { - "description": "The descriptive name of the alert type.", - "type": "string" - }, - "producer": { - "description": "An identifier for the application that produces this alert type.", - "type": "string" - }, - "recoveryActionGroup": { - "description": "An action group to use when an alert instance goes from an active state to an inactive one. If it is not specified, the default recovered action group is used.\n", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } - }, - "/api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_mute": { - "post": { - "summary": "Mute an alert instance", - "operationId": "legacyMuteAlertInstance", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the mute alert API instead.", - "tags": [ - "alerting" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "in": "path", - "name": "alertId", - "description": "An identifier for the alert.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - }, - { - "in": "path", - "name": "alertInstanceId", - "description": "An identifier for the alert instance.", - "required": true, - "schema": { - "type": "string", - "example": "dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2" - } - } - ], - "responses": { - "204": { - "description": "Indicates a successful call." - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } - }, - "/api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_unmute": { - "post": { - "summary": "Unmute an alert instance", - "operationId": "legacyUnmuteAlertInstance", - "deprecated": true, - "description": "Deprecated in 7.13.0. Use the unmute alert API instead.", - "tags": [ - "alerting" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "in": "path", - "name": "alertId", - "description": "An identifier for the alert.", - "required": true, - "schema": { - "type": "string", - "example": "41893910-6bca-11eb-9e0d-85d233e3ee35" - } - }, - { - "in": "path", - "name": "alertInstanceId", - "description": "An identifier for the alert instance.", - "required": true, - "schema": { - "type": "string", - "example": "dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2" - } - } - ], - "responses": { - "204": { - "description": "Indicates a successful call." - }, - "401": { - "description": "Authorization information is missing or invalid.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/401_response" - } - } - } - } - } - } } }, "components": { @@ -1978,129 +925,6 @@ "example": "scaled_float" } } - }, - "alert_response_properties": { - "title": "Legacy alert response properties", - "type": "object", - "properties": { - "actions": { - "type": "array", - "items": { - "type": "object" - } - }, - "alertTypeId": { - "type": "string", - "example": ".index-threshold" - }, - "apiKeyOwner": { - "type": "string", - "nullable": true, - "example": "elastic" - }, - "createdAt": { - "type": "string", - "description": "The date and time that the alert was created.", - "format": "date-time", - "example": "2022-12-05T23:36:58.284Z" - }, - "createdBy": { - "type": "string", - "description": "The identifier for the user that created the alert.", - "example": "elastic" - }, - "enabled": { - "type": "boolean", - "description": "Indicates whether the alert is currently enabled.", - "example": true - }, - "executionStatus": { - "type": "object", - "properties": { - "lastExecutionDate": { - "type": "string", - "format": "date-time", - "example": "2022-12-06T00:13:43.890Z" - }, - "status": { - "type": "string", - "example": "ok" - } - } - }, - "id": { - "type": "string", - "description": "The identifier for the alert.", - "example": "b530fed0-74f5-11ed-9801-35303b735aef" - }, - "muteAll": { - "type": "boolean", - "example": false - }, - "mutedInstanceIds": { - "type": "array", - "nullable": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string", - "description": "The name of the alert.", - "example": "my alert" - }, - "notifyWhen": { - "type": "string", - "example": "onActionGroupChange" - }, - "params": { - "type": "object", - "additionalProperties": true - }, - "schedule": { - "type": "object", - "properties": { - "interval": { - "type": "string" - } - } - }, - "scheduledTaskId": { - "type": "string", - "example": "b530fed0-74f5-11ed-9801-35303b735aef" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "throttle": { - "type": "string", - "nullable": true - }, - "updatedAt": { - "type": "string", - "example": "2022-12-05T23:36:58.284Z" - }, - "updatedBy": { - "type": "string", - "description": "The identifier for the user that updated this alert most recently.", - "nullable": true, - "example": "elastic" - } - } - } - }, - "parameters": { - "kbn_xsrf": { - "schema": { - "type": "string" - }, - "in": "header", - "name": "kbn-xsrf", - "description": "Cross-site request forgery protection", - "required": true } } } diff --git a/x-pack/plugins/alerting/docs/openapi/bundled.yaml b/x-pack/plugins/alerting/docs/openapi/bundled.yaml index 87601c463e50e..967d08eadf5fa 100644 --- a/x-pack/plugins/alerting/docs/openapi/bundled.yaml +++ b/x-pack/plugins/alerting/docs/openapi/bundled.yaml @@ -353,724 +353,6 @@ paths: application/json: schema: $ref: '#/components/schemas/401_response' - /api/alerts/alert/{alertId}: - delete: - summary: Delete an alert - operationId: legaryDeleteAlert - deprecated: true - description: | - Deprecated in 7.13.0. Use the delete rule API instead. WARNING: After you delete an alert, you cannot recover it. - tags: - - alerting - parameters: - - $ref: '#/components/parameters/kbn_xsrf' - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - get: - summary: Get an alert by identifier - operationId: legacyGetAlert - deprecated: true - description: Deprecated in 7.13.0. Use the get rule API instead. - tags: - - alerting - parameters: - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - $ref: '#/components/schemas/alert_response_properties' - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - post: - summary: Create an alert - operationId: legacyCreateAlert - deprecated: true - description: Deprecated in 7.13.0. Use the create rule API instead. - tags: - - alerting - parameters: - - $ref: '#/components/parameters/kbn_xsrf' - - in: path - name: alertId - description: An UUID v1 or v4 identifier for the alert. If this parameter is omitted, the identifier is randomly generated. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - requestBody: - required: true - content: - application/json: - schema: - title: Legacy create alert request properties - type: object - required: - - alertTypeId - - consumer - - name - - notifyWhen - - params - - schedule - properties: - actions: - type: array - items: - type: object - required: - - actionTypeId - - group - - id - - params - properties: - actionTypeId: - type: string - description: The identifier for the action type. - group: - type: string - description: | - Grouping actions is recommended for escalations for different types of alert instances. If you don't need this functionality, set it to `default`. - id: - type: string - description: The ID of the action saved object. - params: - type: object - description: | - The map to the `params` that the action type will receive. `params` are handled as Mustache templates and passed a default set of context. - alertTypeId: - type: string - description: The ID of the alert type that you want to call when the alert is scheduled to run. - consumer: - type: string - description: The name of the application that owns the alert. This name has to match the Kibana feature name, as that dictates the required role-based access control privileges. - enabled: - type: boolean - description: Indicates if you want to run the alert on an interval basis after it is created. - name: - type: string - description: A name to reference and search. - notifyWhen: - type: string - description: The condition for throttling the notification. - enum: - - onActionGroupChange - - onActiveAlert - - onThrottleInterval - params: - type: object - description: The parameters to pass to the alert type executor `params` value. This will also validate against the alert type params validator, if defined. - schedule: - type: object - description: | - The schedule specifying when this alert should be run. A schedule is structured such that the key specifies the format you wish to use and its value specifies the schedule. - properties: - interval: - type: string - description: The interval format specifies the interval in seconds, minutes, hours or days at which the alert should run. - example: 10s - tags: - type: array - items: - type: string - description: A list of keywords to reference and search. - throttle: - type: string - description: | - How often this alert should fire the same actions. This will prevent the alert from sending out the same notification over and over. For example, if an alert with a schedule of 1 minute stays in a triggered state for 90 minutes, setting a throttle of `10m` or `1h` will prevent it from sending 90 notifications during this period. - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - $ref: '#/components/schemas/alert_response_properties' - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - put: - summary: Update an alert - operationId: legacyUpdateAlert - deprecated: true - description: Deprecated in 7.13.0. Use the update rule API instead. - tags: - - alerting - parameters: - - $ref: '#/components/parameters/kbn_xsrf' - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - requestBody: - required: true - content: - application/json: - schema: - title: Legacy update alert request properties - type: object - required: - - name - - notifyWhen - - params - - schedule - properties: - actions: - type: array - items: - type: object - required: - - actionTypeId - - group - - id - - params - properties: - actionTypeId: - type: string - description: The identifier for the action type. - group: - type: string - description: | - Grouping actions is recommended for escalations for different types of alert instances. If you don't need this functionality, set it to `default`. - id: - type: string - description: The ID of the action saved object. - params: - type: object - description: | - The map to the `params` that the action type will receive. `params` are handled as Mustache templates and passed a default set of context. - name: - type: string - description: A name to reference and search. - notifyWhen: - type: string - description: The condition for throttling the notification. - enum: - - onActionGroupChange - - onActiveAlert - - onThrottleInterval - params: - type: object - description: The parameters to pass to the alert type executor `params` value. This will also validate against the alert type params validator, if defined. - schedule: - type: object - description: | - The schedule specifying when this alert should be run. A schedule is structured such that the key specifies the format you wish to use and its value specifies the schedule. - properties: - interval: - type: string - description: The interval format specifies the interval in seconds, minutes, hours or days at which the alert should run. - example: 1d - tags: - type: array - items: - type: string - description: A list of keywords to reference and search. - throttle: - type: string - description: | - How often this alert should fire the same actions. This will prevent the alert from sending out the same notification over and over. For example, if an alert with a schedule of 1 minute stays in a triggered state for 90 minutes, setting a throttle of `10m` or `1h` will prevent it from sending 90 notifications during this period. - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - $ref: '#/components/schemas/alert_response_properties' - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - /api/alerts/alert/{alertId}/_disable: - post: - summary: Disable an alert - operationId: legacyDisableAlert - deprecated: true - description: Deprecated in 7.13.0. Use the disable rule API instead. - tags: - - alerting - parameters: - - $ref: '#/components/parameters/kbn_xsrf' - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - /api/alerts/alert/{alertId}/_enable: - post: - summary: Enable an alert - operationId: legacyEnableAlert - deprecated: true - description: Deprecated in 7.13.0. Use the enable rule API instead. - tags: - - alerting - parameters: - - $ref: '#/components/parameters/kbn_xsrf' - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - /api/alerts/alert/{alertId}/_mute_all: - post: - summary: Mute all alert instances - operationId: legacyMuteAllAlertInstances - deprecated: true - description: Deprecated in 7.13.0. Use the mute all alerts API instead. - tags: - - alerting - parameters: - - $ref: '#/components/parameters/kbn_xsrf' - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - /api/alerts/alert/{alertId}/_unmute_all: - post: - summary: Unmute all alert instances - operationId: legacyUnmuteAllAlertInstances - deprecated: true - description: Deprecated in 7.13.0. Use the unmute all alerts API instead. - tags: - - alerting - parameters: - - $ref: '#/components/parameters/kbn_xsrf' - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - /api/alerts/alerts/_find: - get: - summary: Get a paginated set of alerts - operationId: legacyFindAlerts - deprecated: true - description: | - Deprecated in 7.13.0. Use the find rules API instead. NOTE: Alert `params` are stored as a flattened field type and analyzed as keywords. As alerts change in Kibana, the results on each page of the response also change. Use the find API for traditional paginated results, but avoid using it to export large amounts of data. - tags: - - alerting - parameters: - - name: default_search_operator - in: query - description: The default operator to use for the `simple_query_string`. - schema: - type: string - default: OR - example: OR - - name: fields - in: query - description: The fields to return in the `attributes` key of the response. - schema: - type: array - items: - type: string - - name: filter - in: query - description: | - A KQL string that you filter with an attribute from your saved object. It should look like `savedObjectType.attributes.title: "myTitle"`. However, if you used a direct attribute of a saved object, such as `updatedAt`, you must define your filter, for example, `savedObjectType.updatedAt > 2018-12-22`. - schema: - type: string - - name: has_reference - in: query - description: Filters the rules that have a relation with the reference objects with a specific type and identifier. - schema: - type: object - properties: - id: - type: string - type: - type: string - - name: page - in: query - description: The page number to return. - schema: - type: integer - default: 1 - example: 1 - - name: per_page - in: query - description: The number of alerts to return per page. - schema: - type: integer - default: 20 - example: 20 - - name: search - in: query - description: An Elasticsearch `simple_query_string` query that filters the alerts in the response. - schema: - type: string - - name: search_fields - in: query - description: The fields to perform the `simple_query_string` parsed query against. - schema: - oneOf: - - type: string - - type: array - items: - type: string - - name: sort_field - in: query - description: | - Determines which field is used to sort the results. The field must exist in the `attributes` key of the response. - schema: - type: string - - name: sort_order - in: query - description: Determines the sort order. - schema: - type: string - enum: - - asc - - desc - default: desc - example: asc - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/alert_response_properties' - page: - type: integer - perPage: - type: integer - total: - type: integer - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - /api/alerts/alerts/_health: - get: - summary: Get the alerting framework health - operationId: legacyGetAlertingHealth - deprecated: true - description: Deprecated in 7.13.0. Use the get alerting framework health API instead. - tags: - - alerting - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - type: object - properties: - alertingFrameworkHealth: - type: object - description: | - Three substates identify the health of the alerting framework: `decryptionHealth`, `executionHealth`, and `readHealth`. - properties: - decryptionHealth: - type: object - description: The timestamp and status of the alert decryption. - properties: - status: - type: string - example: ok - enum: - - error - - ok - - warn - timestamp: - type: string - format: date-time - example: '2023-01-13T01:28:00.280Z' - executionHealth: - type: object - description: The timestamp and status of the alert execution. - properties: - status: - type: string - example: ok - enum: - - error - - ok - - warn - timestamp: - type: string - format: date-time - example: '2023-01-13T01:28:00.280Z' - readHealth: - type: object - description: The timestamp and status of the alert reading events. - properties: - status: - type: string - example: ok - enum: - - error - - ok - - warn - timestamp: - type: string - format: date-time - example: '2023-01-13T01:28:00.280Z' - hasPermanentEncryptionKey: - type: boolean - description: If `false`, the encrypted saved object plugin does not have a permanent encryption key. - example: true - isSufficientlySecure: - type: boolean - description: If `false`, security is enabled but TLS is not. - example: true - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - /api/alerts/alerts/list_alert_types: - get: - summary: Get the alert types - operationId: legacyGetAlertTypes - deprecated: true - description: Deprecated in 7.13.0. Use the get rule types API instead. - tags: - - alerting - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - type: array - items: - type: object - properties: - actionGroups: - description: | - An explicit list of groups for which the alert type can schedule actions, each with the action group's unique ID and human readable name. Alert actions validation uses this configuration to ensure that groups are valid. - type: array - items: - type: object - properties: - id: - type: string - name: - type: string - actionVariables: - description: | - A list of action variables that the alert type makes available via context and state in action parameter templates, and a short human readable description. The Alert UI will use this information to prompt users for these variables in action parameter editors. - type: object - properties: - context: - type: array - items: - type: object - properties: - name: - type: string - description: - type: string - params: - type: array - items: - type: object - properties: - description: - type: string - name: - type: string - state: - type: array - items: - type: object - properties: - description: - type: string - name: - type: string - authorizedConsumers: - description: The list of the plugins IDs that have access to the alert type. - type: object - defaultActionGroupId: - description: The default identifier for the alert type group. - type: string - enabledInLicense: - description: Indicates whether the rule type is enabled based on the subscription. - type: boolean - id: - description: The unique identifier for the alert type. - type: string - isExportable: - description: Indicates whether the alert type is exportable in Saved Objects Management UI. - type: boolean - minimumLicenseRequired: - description: The subscriptions required to use the alert type. - type: string - name: - description: The descriptive name of the alert type. - type: string - producer: - description: An identifier for the application that produces this alert type. - type: string - recoveryActionGroup: - description: | - An action group to use when an alert instance goes from an active state to an inactive one. If it is not specified, the default recovered action group is used. - type: object - properties: - id: - type: string - name: - type: string - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - /api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_mute: - post: - summary: Mute an alert instance - operationId: legacyMuteAlertInstance - deprecated: true - description: Deprecated in 7.13.0. Use the mute alert API instead. - tags: - - alerting - parameters: - - $ref: '#/components/parameters/kbn_xsrf' - - in: path - name: alertId - description: An identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - - in: path - name: alertInstanceId - description: An identifier for the alert instance. - required: true - schema: - type: string - example: dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' - /api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_unmute: - post: - summary: Unmute an alert instance - operationId: legacyUnmuteAlertInstance - deprecated: true - description: Deprecated in 7.13.0. Use the unmute alert API instead. - tags: - - alerting - parameters: - - $ref: '#/components/parameters/kbn_xsrf' - - in: path - name: alertId - description: An identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - - in: path - name: alertInstanceId - description: An identifier for the alert instance. - required: true - schema: - type: string - example: dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '#/components/schemas/401_response' components: examples: get_health_response: @@ -1370,94 +652,3 @@ components: type: string description: Specifies the data type for the field. example: scaled_float - alert_response_properties: - title: Legacy alert response properties - type: object - properties: - actions: - type: array - items: - type: object - alertTypeId: - type: string - example: .index-threshold - apiKeyOwner: - type: string - nullable: true - example: elastic - createdAt: - type: string - description: The date and time that the alert was created. - format: date-time - example: '2022-12-05T23:36:58.284Z' - createdBy: - type: string - description: The identifier for the user that created the alert. - example: elastic - enabled: - type: boolean - description: Indicates whether the alert is currently enabled. - example: true - executionStatus: - type: object - properties: - lastExecutionDate: - type: string - format: date-time - example: '2022-12-06T00:13:43.890Z' - status: - type: string - example: ok - id: - type: string - description: The identifier for the alert. - example: b530fed0-74f5-11ed-9801-35303b735aef - muteAll: - type: boolean - example: false - mutedInstanceIds: - type: array - nullable: true - items: - type: string - name: - type: string - description: The name of the alert. - example: my alert - notifyWhen: - type: string - example: onActionGroupChange - params: - type: object - additionalProperties: true - schedule: - type: object - properties: - interval: - type: string - scheduledTaskId: - type: string - example: b530fed0-74f5-11ed-9801-35303b735aef - tags: - type: array - items: - type: string - throttle: - type: string - nullable: true - updatedAt: - type: string - example: '2022-12-05T23:36:58.284Z' - updatedBy: - type: string - description: The identifier for the user that updated this alert most recently. - nullable: true - example: elastic - parameters: - kbn_xsrf: - schema: - type: string - in: header - name: kbn-xsrf - description: Cross-site request forgery protection - required: true diff --git a/x-pack/plugins/alerting/docs/openapi/entrypoint.yaml b/x-pack/plugins/alerting/docs/openapi/entrypoint.yaml index 48f7efd53b839..1b169a6c4f760 100644 --- a/x-pack/plugins/alerting/docs/openapi/entrypoint.yaml +++ b/x-pack/plugins/alerting/docs/openapi/entrypoint.yaml @@ -15,24 +15,3 @@ paths: $ref: paths/api@alerting@_health.yaml '/api/alerting/rule_types': $ref: 'paths/api@alerting@rule_types.yaml' -# Deprecated APIs - '/api/alerts/alert/{alertId}': - $ref: 'paths/api@alerts@alert@{alertid}.yaml' - '/api/alerts/alert/{alertId}/_disable': - $ref: 'paths/api@alerts@alert@{alertid}@_disable.yaml' - '/api/alerts/alert/{alertId}/_enable': - $ref: 'paths/api@alerts@alert@{alertid}@_enable.yaml' - '/api/alerts/alert/{alertId}/_mute_all': - $ref: 'paths/api@alerts@alert@{alertid}@_mute_all.yaml' - '/api/alerts/alert/{alertId}/_unmute_all': - $ref: 'paths/api@alerts@alert@{alertid}@_unmute_all.yaml' - '/api/alerts/alerts/_find': - $ref: 'paths/api@alerts@_find.yaml' - '/api/alerts/alerts/_health': - $ref: 'paths/api@alerts@_health.yaml' - '/api/alerts/alerts/list_alert_types': - $ref: 'paths/api@alerts@list_alert_types.yaml' - '/api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_mute': - $ref: 'paths/api@alerts@alert@{alertid}@alert_instance@{alertinstanceid}@_mute.yaml' - '/api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_unmute': - $ref: 'paths/api@alerts@alert@{alertid}@alert_instance@{alertinstanceid}@_unmute.yaml' diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@_find.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@_find.yaml deleted file mode 100644 index 397653acb1c90..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@_find.yaml +++ /dev/null @@ -1,115 +0,0 @@ -get: - summary: Get a paginated set of alerts - operationId: legacyFindAlerts - deprecated: true - description: > - Deprecated in 7.13.0. Use the find rules API instead. - NOTE: Alert `params` are stored as a flattened field type and analyzed as keywords. - As alerts change in Kibana, the results on each page of the response also change. - Use the find API for traditional paginated results, but avoid using it to export large amounts of data. - tags: - - alerting - parameters: - - name: default_search_operator - in: query - description: The default operator to use for the `simple_query_string`. - schema: - type: string - default: OR - example: OR - - name: fields - in: query - description: The fields to return in the `attributes` key of the response. - schema: - type: array - items: - type: string - - name: filter - in: query - description: > - A KQL string that you filter with an attribute from your saved object. - It should look like `savedObjectType.attributes.title: "myTitle"`. - However, if you used a direct attribute of a saved object, such as - `updatedAt`, you must define your filter, for example, - `savedObjectType.updatedAt > 2018-12-22`. - schema: - type: string - - name: has_reference - in: query - description: Filters the rules that have a relation with the reference objects with a specific type and identifier. - schema: - type: object - properties: - id: - type: string - type: - type: string - - name: page - in: query - description: The page number to return. - schema: - type: integer - default: 1 - example: 1 - - name: per_page - in: query - description: The number of alerts to return per page. - schema: - type: integer - default: 20 - example: 20 - - name: search - in: query - description: An Elasticsearch `simple_query_string` query that filters the alerts in the response. - schema: - type: string - - name: search_fields - in: query - description: The fields to perform the `simple_query_string` parsed query against. - schema: - oneOf: - - type: string - - type: array - items: - type: string - - name: sort_field - in: query - description: > - Determines which field is used to sort the results. The field must exist - in the `attributes` key of the response. - schema: - type: string - - name: sort_order - in: query - description: Determines the sort order. - schema: - type: string - enum: - - asc - - desc - default: desc - example: asc - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - type: object - properties: - data: - type: array - items: - $ref: '../components/schemas/alert_response_properties.yaml' - page: - type: integer - perPage: - type: integer - total: - type: integer - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@_health.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@_health.yaml deleted file mode 100644 index b8436a08abf1f..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@_health.yaml +++ /dev/null @@ -1,79 +0,0 @@ -get: - summary: Get the alerting framework health - operationId: legacyGetAlertingHealth - deprecated: true - description: Deprecated in 7.13.0. Use the get alerting framework health API instead. - tags: - - alerting - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - type: object - properties: - alertingFrameworkHealth: - type: object - description: > - Three substates identify the health of the alerting framework: `decryptionHealth`, `executionHealth`, and `readHealth`. - properties: - decryptionHealth: - type: object - description: The timestamp and status of the alert decryption. - properties: - status: - type: string - example: ok - enum: - - error - - ok - - warn - timestamp: - type: string - format: date-time - example: "2023-01-13T01:28:00.280Z" - executionHealth: - type: object - description: The timestamp and status of the alert execution. - properties: - status: - type: string - example: ok - enum: - - error - - ok - - warn - timestamp: - type: string - format: date-time - example: "2023-01-13T01:28:00.280Z" - readHealth: - type: object - description: The timestamp and status of the alert reading events. - properties: - status: - type: string - example: ok - enum: - - error - - ok - - warn - timestamp: - type: string - format: date-time - example: "2023-01-13T01:28:00.280Z" - hasPermanentEncryptionKey: - type: boolean - description: If `false`, the encrypted saved object plugin does not have a permanent encryption key. - example: true - isSufficientlySecure: - type: boolean - description: If `false`, security is enabled but TLS is not. - example: true - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}.yaml deleted file mode 100644 index bf6d69d117450..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}.yaml +++ /dev/null @@ -1,275 +0,0 @@ -delete: - summary: Delete an alert - operationId: legaryDeleteAlert - deprecated: true - description: > - Deprecated in 7.13.0. Use the delete rule API instead. - WARNING: After you delete an alert, you cannot recover it. - tags: - - alerting - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - -get: - summary: Get an alert by identifier - operationId: legacyGetAlert - deprecated: true - description: Deprecated in 7.13.0. Use the get rule API instead. - tags: - - alerting - parameters: - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - $ref: '../components/schemas/alert_response_properties.yaml' - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - -post: - summary: Create an alert - operationId: legacyCreateAlert - deprecated: true - description: Deprecated in 7.13.0. Use the create rule API instead. - tags: - - alerting - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - in: path - name: alertId - description: An UUID v1 or v4 identifier for the alert. If this parameter is omitted, the identifier is randomly generated. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - requestBody: - required: true - content: - application/json: - schema: - title: Legacy create alert request properties - type: object - required: - - alertTypeId - - consumer - - name - - notifyWhen - - params - - schedule - properties: - actions: - type: array - items: - type: object - required: - - actionTypeId - - group - - id - - params - properties: - actionTypeId: - type: string - description: The identifier for the action type. - group: - type: string - description: > - Grouping actions is recommended for escalations for different types of alert instances. - If you don't need this functionality, set it to `default`. - id: - type: string - description: The ID of the action saved object. - params: - type: object - description: > - The map to the `params` that the action type will receive. - `params` are handled as Mustache templates and passed a default set of context. - alertTypeId: - type: string - description: The ID of the alert type that you want to call when the alert is scheduled to run. - consumer: - type: string - description: The name of the application that owns the alert. This name has to match the Kibana feature name, as that dictates the required role-based access control privileges. - enabled: - type: boolean - description: Indicates if you want to run the alert on an interval basis after it is created. - name: - type: string - description: A name to reference and search. - notifyWhen: - type: string - description: The condition for throttling the notification. - enum: - - onActionGroupChange - - onActiveAlert - - onThrottleInterval - params: - type: object - description: The parameters to pass to the alert type executor `params` value. This will also validate against the alert type params validator, if defined. - schedule: - type: object - description: > - The schedule specifying when this alert should be run. - A schedule is structured such that the key specifies the format you wish to use and its value specifies the schedule. - properties: - interval: - type: string - description: The interval format specifies the interval in seconds, minutes, hours or days at which the alert should run. - example: "10s" - tags: - type: array - items: - type: string - description: A list of keywords to reference and search. - throttle: - type: string - description: > - How often this alert should fire the same actions. - This will prevent the alert from sending out the same notification over and over. - For example, if an alert with a schedule of 1 minute stays in a triggered state for 90 minutes, - setting a throttle of `10m` or `1h` will prevent it from sending 90 notifications during this period. - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - $ref: '../components/schemas/alert_response_properties.yaml' - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - -put: - summary: Update an alert - operationId: legacyUpdateAlert - deprecated: true - description: Deprecated in 7.13.0. Use the update rule API instead. - tags: - - alerting - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - requestBody: - required: true - content: - application/json: - schema: - title: Legacy update alert request properties - type: object - required: - - name - - notifyWhen - - params - - schedule - properties: - actions: - type: array - items: - type: object - required: - - actionTypeId - - group - - id - - params - properties: - actionTypeId: - type: string - description: The identifier for the action type. - group: - type: string - description: > - Grouping actions is recommended for escalations for different types of alert instances. - If you don't need this functionality, set it to `default`. - id: - type: string - description: The ID of the action saved object. - params: - type: object - description: > - The map to the `params` that the action type will receive. - `params` are handled as Mustache templates and passed a default set of context. - name: - type: string - description: A name to reference and search. - notifyWhen: - type: string - description: The condition for throttling the notification. - enum: - - onActionGroupChange - - onActiveAlert - - onThrottleInterval - params: - type: object - description: The parameters to pass to the alert type executor `params` value. This will also validate against the alert type params validator, if defined. - schedule: - type: object - description: > - The schedule specifying when this alert should be run. - A schedule is structured such that the key specifies the format you wish to use and its value specifies the schedule. - properties: - interval: - type: string - description: The interval format specifies the interval in seconds, minutes, hours or days at which the alert should run. - example: "1d" - tags: - type: array - items: - type: string - description: A list of keywords to reference and search. - throttle: - type: string - description: > - How often this alert should fire the same actions. - This will prevent the alert from sending out the same notification over and over. - For example, if an alert with a schedule of 1 minute stays in a triggered state for 90 minutes, - setting a throttle of `10m` or `1h` will prevent it from sending 90 notifications during this period. - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - $ref: '../components/schemas/alert_response_properties.yaml' - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_disable.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_disable.yaml deleted file mode 100644 index 70874a8bea396..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_disable.yaml +++ /dev/null @@ -1,25 +0,0 @@ -post: - summary: Disable an alert - operationId: legacyDisableAlert - deprecated: true - description: Deprecated in 7.13.0. Use the disable rule API instead. - tags: - - alerting - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_enable.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_enable.yaml deleted file mode 100644 index 3b79778c26c6c..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_enable.yaml +++ /dev/null @@ -1,25 +0,0 @@ -post: - summary: Enable an alert - operationId: legacyEnableAlert - deprecated: true - description: Deprecated in 7.13.0. Use the enable rule API instead. - tags: - - alerting - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_mute_all.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_mute_all.yaml deleted file mode 100644 index 462e6994d4553..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_mute_all.yaml +++ /dev/null @@ -1,25 +0,0 @@ -post: - summary: Mute all alert instances - operationId: legacyMuteAllAlertInstances - deprecated: true - description: Deprecated in 7.13.0. Use the mute all alerts API instead. - tags: - - alerting - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_unmute_all.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_unmute_all.yaml deleted file mode 100644 index bfdec84525aae..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@_unmute_all.yaml +++ /dev/null @@ -1,25 +0,0 @@ -post: - summary: Unmute all alert instances - operationId: legacyUnmuteAllAlertInstances - deprecated: true - description: Deprecated in 7.13.0. Use the unmute all alerts API instead. - tags: - - alerting - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - in: path - name: alertId - description: The identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@alert_instance@{alertinstanceid}@_mute.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@alert_instance@{alertinstanceid}@_mute.yaml deleted file mode 100644 index 4af89ec42616c..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@alert_instance@{alertinstanceid}@_mute.yaml +++ /dev/null @@ -1,32 +0,0 @@ -post: - summary: Mute an alert instance - operationId: legacyMuteAlertInstance - deprecated: true - description: Deprecated in 7.13.0. Use the mute alert API instead. - tags: - - alerting - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - in: path - name: alertId - description: An identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - - in: path - name: alertInstanceId - description: An identifier for the alert instance. - required: true - schema: - type: string - example: dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@alert_instance@{alertinstanceid}@_unmute.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@alert_instance@{alertinstanceid}@_unmute.yaml deleted file mode 100644 index a939d74c3d1d0..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@alert@{alertid}@alert_instance@{alertinstanceid}@_unmute.yaml +++ /dev/null @@ -1,32 +0,0 @@ -post: - summary: Unmute an alert instance - operationId: legacyUnmuteAlertInstance - deprecated: true - description: Deprecated in 7.13.0. Use the unmute alert API instead. - tags: - - alerting - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - in: path - name: alertId - description: An identifier for the alert. - required: true - schema: - type: string - example: 41893910-6bca-11eb-9e0d-85d233e3ee35 - - in: path - name: alertInstanceId - description: An identifier for the alert instance. - required: true - schema: - type: string - example: dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2 - responses: - '204': - description: Indicates a successful call. - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@list_alert_types.yaml b/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@list_alert_types.yaml deleted file mode 100644 index 14b3cd4e07b9b..0000000000000 --- a/x-pack/plugins/alerting/docs/openapi/paths/api@alerts@list_alert_types.yaml +++ /dev/null @@ -1,107 +0,0 @@ -get: - summary: Get the alert types - operationId: legacyGetAlertTypes - deprecated: true - description: Deprecated in 7.13.0. Use the get rule types API instead. - tags: - - alerting - responses: - '200': - description: Indicates a successful call. - content: - application/json: - schema: - type: array - items: - type: object - properties: - actionGroups: - description: > - An explicit list of groups for which the alert type can - schedule actions, each with the action group's unique ID and - human readable name. Alert actions validation uses this - configuration to ensure that groups are valid. - type: array - items: - type: object - properties: - id: - type: string - name: - type: string - actionVariables: - description: > - A list of action variables that the alert type makes available - via context and state in action parameter templates, and a - short human readable description. The Alert UI will use this - information to prompt users for these variables in action - parameter editors. - type: object - properties: - context: - type: array - items: - type: object - properties: - name: - type: string - description: - type: string - params: - type: array - items: - type: object - properties: - description: - type: string - name: - type: string - state: - type: array - items: - type: object - properties: - description: - type: string - name: - type: string - authorizedConsumers: - description: The list of the plugins IDs that have access to the alert type. - type: object - defaultActionGroupId: - description: The default identifier for the alert type group. - type: string - enabledInLicense: - description: Indicates whether the rule type is enabled based on the subscription. - type: boolean - id: - description: The unique identifier for the alert type. - type: string - isExportable: - description: Indicates whether the alert type is exportable in Saved Objects Management UI. - type: boolean - minimumLicenseRequired: - description: The subscriptions required to use the alert type. - type: string - name: - description: The descriptive name of the alert type. - type: string - producer: - description: An identifier for the application that produces this alert type. - type: string - recoveryActionGroup: - description: > - An action group to use when an alert instance goes from an active state to an inactive one. - If it is not specified, the default recovered action group is used. - type: object - properties: - id: - type: string - name: - type: string - '401': - description: Authorization information is missing or invalid. - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/alerting/public/application/maintenance_windows.tsx b/x-pack/plugins/alerting/public/application/maintenance_windows.tsx index 5f4b81bb716f7..9ac8245cd8288 100644 --- a/x-pack/plugins/alerting/public/application/maintenance_windows.tsx +++ b/x-pack/plugins/alerting/public/application/maintenance_windows.tsx @@ -78,12 +78,11 @@ export const renderApp = ({ kibanaVersion: string; }) => { const { element, history } = mountParams; - const { i18n, theme } = core; const queryClient = new QueryClient(); ReactDOM.render( - <KibanaRenderContextProvider i18n={i18n} theme={theme}> + <KibanaRenderContextProvider {...core}> <KibanaContextProvider services={{ ...core, diff --git a/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts b/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts index 5b32cf507c815..ec78cb5ea9cd7 100644 --- a/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts +++ b/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts @@ -102,6 +102,7 @@ const GetDataStreamResponse: IndicesGetDataStreamResponse = { template: 'ignored', next_generation_managed_by: 'Index Lifecycle Management', prefer_ilm: false, + rollover_on_write: false, }, ], }; diff --git a/x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.ts b/x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.ts index 66d90671ac1bd..0f9b62db62d79 100644 --- a/x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.ts +++ b/x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.ts @@ -12,6 +12,7 @@ import { import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const deleteBackfillRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -20,6 +21,7 @@ export const deleteBackfillRoute = ( router.delete( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/backfill/{id}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.ts b/x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.ts index be1ff25ef5932..bc092b8bf9cc6 100644 --- a/x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.ts +++ b/x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.ts @@ -17,6 +17,7 @@ import { INTERNAL_ALERTING_BACKFILL_FIND_API_PATH, } from '../../../../types'; import { transformRequestV1, transformResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const findBackfillRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -25,6 +26,7 @@ export const findBackfillRoute = ( router.post( { path: `${INTERNAL_ALERTING_BACKFILL_FIND_API_PATH}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, validate: { query: findQuerySchemaV1, }, diff --git a/x-pack/plugins/alerting/server/routes/backfill/apis/get/get_backfill_route.ts b/x-pack/plugins/alerting/server/routes/backfill/apis/get/get_backfill_route.ts index 5758bb6ba805f..8bd306931b867 100644 --- a/x-pack/plugins/alerting/server/routes/backfill/apis/get/get_backfill_route.ts +++ b/x-pack/plugins/alerting/server/routes/backfill/apis/get/get_backfill_route.ts @@ -14,6 +14,7 @@ import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformBackfillToBackfillResponseV1 } from '../../transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const getBackfillRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const getBackfillRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/backfill/{id}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.ts b/x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.ts index 77eb5c9355cfb..e73e0dd83ec8d 100644 --- a/x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.ts +++ b/x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.ts @@ -14,6 +14,7 @@ import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformRequestV1, transformResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const scheduleBackfillRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const scheduleBackfillRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/backfill/_schedule`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: scheduleBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/constants.ts b/x-pack/plugins/alerting/server/routes/constants.ts new file mode 100644 index 0000000000000..4c119f6c1c288 --- /dev/null +++ b/x-pack/plugins/alerting/server/routes/constants.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RouteSecurity } from '@kbn/core-http-server'; + +/** + * This constant is used as the default value for the security object in routes + * where a reason for opting out needs to be provided. + */ +export const DEFAULT_ALERTING_ROUTE_SECURITY: RouteSecurity = { + authz: { + enabled: false, + reason: + "This route is opted out from authorization because alerting uses it's own authorization model inside the alerts client.", + }, +}; diff --git a/x-pack/plugins/alerting/server/routes/framework/apis/health/health.ts b/x-pack/plugins/alerting/server/routes/framework/apis/health/health.ts index 4daf510b6a64f..df926820e2af8 100644 --- a/x-pack/plugins/alerting/server/routes/framework/apis/health/health.ts +++ b/x-pack/plugins/alerting/server/routes/framework/apis/health/health.ts @@ -17,6 +17,7 @@ import { } from '../../../../types'; import { getSecurityHealth } from '../../../../lib/get_security_health'; import { transformHealthBodyResponse } from './transforms/transform_health_response/v1'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const healthRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -26,6 +27,7 @@ export const healthRoute = ( router.get( { path: `${BASE_ALERTING_API_PATH}/_health`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Get the alerting framework health`, diff --git a/x-pack/plugins/alerting/server/routes/get_action_error_log.ts b/x-pack/plugins/alerting/server/routes/get_action_error_log.ts index 7406d07c3fa24..39d10ccab4a63 100644 --- a/x-pack/plugins/alerting/server/routes/get_action_error_log.ts +++ b/x-pack/plugins/alerting/server/routes/get_action_error_log.ts @@ -11,6 +11,7 @@ import { ILicenseState } from '../lib'; import { GetActionErrorLogByIdParams } from '../rules_client'; import { RewriteRequestCase, verifyAccessAndContext } from './lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -59,6 +60,7 @@ export const getActionErrorLogRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_action_error_log`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, validate: { params: paramSchema, query: querySchema, diff --git a/x-pack/plugins/alerting/server/routes/get_global_execution_kpi.ts b/x-pack/plugins/alerting/server/routes/get_global_execution_kpi.ts index 48ea073369d2b..2a0c61617f8eb 100644 --- a/x-pack/plugins/alerting/server/routes/get_global_execution_kpi.ts +++ b/x-pack/plugins/alerting/server/routes/get_global_execution_kpi.ts @@ -10,6 +10,7 @@ import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from ' import { RewriteRequestCase, verifyAccessAndContext, rewriteNamespaces } from './lib'; import { GetGlobalExecutionKPIParams } from '../rules_client'; import { ILicenseState } from '../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const querySchema = schema.object({ date_start: schema.string(), @@ -37,6 +38,7 @@ export const getGlobalExecutionKPIRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/_global_execution_kpi`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_global_execution_logs.ts b/x-pack/plugins/alerting/server/routes/get_global_execution_logs.ts index 13ea133e21a82..a6457185c4bd8 100644 --- a/x-pack/plugins/alerting/server/routes/get_global_execution_logs.ts +++ b/x-pack/plugins/alerting/server/routes/get_global_execution_logs.ts @@ -11,6 +11,7 @@ import { ILicenseState } from '../lib'; import { GetGlobalExecutionLogParams } from '../rules_client'; import { RewriteRequestCase, verifyAccessAndContext, rewriteNamespaces } from './lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const sortOrderSchema = schema.oneOf([schema.literal('asc'), schema.literal('desc')]); @@ -62,6 +63,7 @@ export const getGlobalExecutionLogRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/_global_execution_logs`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_rule_alert_summary.ts b/x-pack/plugins/alerting/server/routes/get_rule_alert_summary.ts index 937db706199e2..fa6222ed80cbc 100644 --- a/x-pack/plugins/alerting/server/routes/get_rule_alert_summary.ts +++ b/x-pack/plugins/alerting/server/routes/get_rule_alert_summary.ts @@ -15,6 +15,7 @@ import { INTERNAL_BASE_ALERTING_API_PATH, AlertSummary, } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -65,6 +66,7 @@ export const getRuleAlertSummaryRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_alert_summary`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_rule_execution_kpi.ts b/x-pack/plugins/alerting/server/routes/get_rule_execution_kpi.ts index 302ac0293a444..9ade33c563e92 100644 --- a/x-pack/plugins/alerting/server/routes/get_rule_execution_kpi.ts +++ b/x-pack/plugins/alerting/server/routes/get_rule_execution_kpi.ts @@ -10,6 +10,7 @@ import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from ' import { RewriteRequestCase, verifyAccessAndContext } from './lib'; import { GetRuleExecutionKPIParams } from '../rules_client'; import { ILicenseState } from '../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -38,6 +39,7 @@ export const getRuleExecutionKPIRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_execution_kpi`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_rule_execution_log.ts b/x-pack/plugins/alerting/server/routes/get_rule_execution_log.ts index 4eccefd171f0e..a81d68f7f4e3d 100644 --- a/x-pack/plugins/alerting/server/routes/get_rule_execution_log.ts +++ b/x-pack/plugins/alerting/server/routes/get_rule_execution_log.ts @@ -11,6 +11,7 @@ import { ILicenseState } from '../lib'; import { GetExecutionLogByIdParams } from '../rules_client'; import { RewriteRequestCase, verifyAccessAndContext } from './lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -63,6 +64,7 @@ export const getRuleExecutionLogRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_execution_log`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_rule_state.ts b/x-pack/plugins/alerting/server/routes/get_rule_state.ts index 1a2b17b8f6747..347b21faf8934 100644 --- a/x-pack/plugins/alerting/server/routes/get_rule_state.ts +++ b/x-pack/plugins/alerting/server/routes/get_rule_state.ts @@ -14,6 +14,7 @@ import { INTERNAL_BASE_ALERTING_API_PATH, RuleTaskState, } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -38,6 +39,7 @@ export const getRuleStateRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/state`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/index.ts b/x-pack/plugins/alerting/server/routes/index.ts index d1fc9989be5e7..58c6cda9f3b12 100644 --- a/x-pack/plugins/alerting/server/routes/index.ts +++ b/x-pack/plugins/alerting/server/routes/index.ts @@ -11,7 +11,6 @@ import { EncryptedSavedObjectsPluginSetup } from '@kbn/encrypted-saved-objects-p import type { ConfigSchema } from '@kbn/unified-search-plugin/server/config'; import { Observable } from 'rxjs'; import { GetAlertIndicesAlias, ILicenseState } from '../lib'; -import { defineLegacyRoutes } from './legacy'; import { AlertingRequestHandlerContext } from '../types'; import { createRuleRoute } from './rule/apis/create'; import { getRuleRoute, getInternalRuleRoute } from './rule/apis/get/get_rule_route'; @@ -94,7 +93,6 @@ export function defineRoutes(opts: RouteOptions) { getAlertIndicesAlias, } = opts; - defineLegacyRoutes(opts); createRuleRoute(opts); getRuleRoute(router, licenseState); getInternalRuleRoute(router, licenseState); @@ -108,17 +106,11 @@ export function defineRoutes(opts: RouteOptions) { findInternalRulesRoute(router, licenseState, usageCounter); getRuleAlertSummaryRoute(router, licenseState); getRuleExecutionLogRoute(router, licenseState); - getGlobalExecutionLogRoute(router, licenseState); - getActionErrorLogRoute(router, licenseState); getRuleExecutionKPIRoute(router, licenseState); - getGlobalExecutionKPIRoute(router, licenseState); getRuleStateRoute(router, licenseState); - healthRoute(router, licenseState, encryptedSavedObjects); ruleTypesRoute(router, licenseState); muteAllRuleRoute(router, licenseState, usageCounter); - muteAlertRoute(router, licenseState); unmuteAllRuleRoute(router, licenseState); - unmuteAlertRoute(router, licenseState); updateRuleApiKeyRoute(router, licenseState); bulkEditInternalRulesRoute(router, licenseState); bulkDeleteRulesRoute({ router, licenseState }); @@ -126,11 +118,18 @@ export function defineRoutes(opts: RouteOptions) { bulkDisableRulesRoute({ router, licenseState }); snoozeRuleRoute(router, licenseState); unsnoozeRuleRoute(router, licenseState); - runSoonRoute(router, licenseState); cloneRuleRoute(router, licenseState); - getFlappingSettingsRoute(router, licenseState); - updateFlappingSettingsRoute(router, licenseState); getRuleTagsRoute(router, licenseState); + registerRulesValueSuggestionsRoute(router, licenseState, config$!); + + // Alert APIs + registerAlertsValueSuggestionsRoute(router, licenseState, config$!, getAlertIndicesAlias); + bulkUntrackAlertsRoute(router, licenseState); + bulkUntrackAlertsByQueryRoute(router, licenseState); + muteAlertRoute(router, licenseState); + unmuteAlertRoute(router, licenseState); + + // Maintenance Window APIs createMaintenanceWindowRoute(router, licenseState); getMaintenanceWindowRoute(router, licenseState); updateMaintenanceWindowRoute(router, licenseState); @@ -139,19 +138,24 @@ export function defineRoutes(opts: RouteOptions) { archiveMaintenanceWindowRoute(router, licenseState); finishMaintenanceWindowRoute(router, licenseState); getActiveMaintenanceWindowsRoute(router, licenseState); - registerAlertsValueSuggestionsRoute(router, licenseState, config$!, getAlertIndicesAlias); - registerRulesValueSuggestionsRoute(router, licenseState, config$!); - registerFieldsRoute(router, licenseState); bulkGetMaintenanceWindowRoute(router, licenseState); - getScheduleFrequencyRoute(router, licenseState); - bulkUntrackAlertsRoute(router, licenseState); - bulkUntrackAlertsByQueryRoute(router, licenseState); - getQueryDelaySettingsRoute(router, licenseState); - updateQueryDelaySettingsRoute(router, licenseState); // backfill APIs scheduleBackfillRoute(router, licenseState); getBackfillRoute(router, licenseState); findBackfillRoute(router, licenseState); deleteBackfillRoute(router, licenseState); + + // Other APIs + registerFieldsRoute(router, licenseState); + getScheduleFrequencyRoute(router, licenseState); + getQueryDelaySettingsRoute(router, licenseState); + updateQueryDelaySettingsRoute(router, licenseState); + getGlobalExecutionLogRoute(router, licenseState); + getActionErrorLogRoute(router, licenseState); + getFlappingSettingsRoute(router, licenseState); + updateFlappingSettingsRoute(router, licenseState); + runSoonRoute(router, licenseState); + healthRoute(router, licenseState, encryptedSavedObjects); + getGlobalExecutionKPIRoute(router, licenseState); } diff --git a/x-pack/plugins/alerting/server/routes/legacy/create.test.ts b/x-pack/plugins/alerting/server/routes/legacy/create.test.ts deleted file mode 100644 index f3df843899f22..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/create.test.ts +++ /dev/null @@ -1,617 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { createAlertRoute } from './create'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { Rule, RuleSystemAction } from '../../../common/rule'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { encryptedSavedObjectsMock } from '@kbn/encrypted-saved-objects-plugin/server/mocks'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); - -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('createAlertRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - const createdAt = new Date(); - const updatedAt = new Date(); - - const mockedAlert = { - alertTypeId: '1', - consumer: 'bar', - name: 'abc', - schedule: { interval: '10s' }, - tags: ['foo'], - params: { - bar: true, - }, - throttle: '30s', - notifyWhen: 'onActionGroupChange', - actions: [ - { - group: 'default', - id: '2', - params: { - foo: true, - }, - }, - ], - }; - - const systemAction: RuleSystemAction = { - actionTypeId: 'test-2', - id: 'system_action-id', - params: { - foo: true, - }, - uuid: '123-456', - }; - - const createResult: Rule<{ bar: boolean }> = { - ...mockedAlert, - enabled: true, - muteAll: false, - createdBy: '', - updatedBy: '', - apiKey: '', - apiKeyOwner: '', - mutedInstanceIds: [], - notifyWhen: 'onActionGroupChange', - createdAt, - updatedAt, - id: '123', - actions: [ - { - ...mockedAlert.actions[0], - actionTypeId: 'test', - }, - ], - executionStatus: { - status: 'unknown', - lastExecutionDate: new Date('2020-08-20T19:23:38Z'), - }, - revision: 0, - }; - - it('creates an alert with proper parameters', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - createAlertRoute({ - router, - licenseState, - encryptedSavedObjects, - usageCounter: mockUsageCounter, - docLinks, - }); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id?}"`); - - expect(config.options?.access).toBe('public'); - - rulesClient.create.mockResolvedValueOnce(createResult); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - body: mockedAlert, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toEqual({ body: createResult }); - - expect(mockUsageCounter.incrementCounter).not.toHaveBeenCalled(); - expect(rulesClient.create).toHaveBeenCalledTimes(1); - expect(rulesClient.create.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "data": Object { - "actions": Array [ - Object { - "group": "default", - "id": "2", - "params": Object { - "foo": true, - }, - }, - ], - "alertTypeId": "1", - "consumer": "bar", - "name": "abc", - "notifyWhen": "onActionGroupChange", - "params": Object { - "bar": true, - }, - "schedule": Object { - "interval": "10s", - }, - "tags": Array [ - "foo", - ], - "throttle": "30s", - }, - "options": Object { - "id": undefined, - }, - }, - ] - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: createResult, - }); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - createAlertRoute({ - router, - licenseState, - encryptedSavedObjects, - usageCounter: mockUsageCounter, - isServerless: true, - docLinks, - }); - - const [config] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id?}"`); - - expect(config.options?.access).toBe('internal'); - }); - - it('allows providing a custom id when space is undefined', async () => { - const expectedResult = { - ...createResult, - id: 'custom-id', - }; - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - createAlertRoute({ - router, - licenseState, - encryptedSavedObjects, - usageCounter: mockUsageCounter, - docLinks, - }); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id?}"`); - - rulesClient.create.mockResolvedValueOnce(expectedResult); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: 'custom-id' }, - body: mockedAlert, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toEqual({ body: expectedResult }); - - expect(mockUsageCounter.incrementCounter).toHaveBeenCalledTimes(1); - expect(rulesClient.create).toHaveBeenCalledTimes(1); - expect(rulesClient.create.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "data": Object { - "actions": Array [ - Object { - "group": "default", - "id": "2", - "params": Object { - "foo": true, - }, - }, - ], - "alertTypeId": "1", - "consumer": "bar", - "name": "abc", - "notifyWhen": "onActionGroupChange", - "params": Object { - "bar": true, - }, - "schedule": Object { - "interval": "10s", - }, - "tags": Array [ - "foo", - ], - "throttle": "30s", - }, - "options": Object { - "id": "custom-id", - }, - }, - ] - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: expectedResult, - }); - }); - - it('allows providing a custom id in default space', async () => { - const expectedResult = { - ...createResult, - id: 'custom-id', - }; - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - createAlertRoute({ - router, - licenseState, - encryptedSavedObjects, - usageCounter: mockUsageCounter, - docLinks, - }); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id?}"`); - - rulesClient.create.mockResolvedValueOnce(expectedResult); - rulesClient.getSpaceId.mockReturnValueOnce('default'); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: 'custom-id' }, - body: mockedAlert, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toEqual({ body: expectedResult }); - - expect(mockUsageCounter.incrementCounter).toHaveBeenCalledTimes(1); - expect(rulesClient.create).toHaveBeenCalledTimes(1); - expect(rulesClient.create.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "data": Object { - "actions": Array [ - Object { - "group": "default", - "id": "2", - "params": Object { - "foo": true, - }, - }, - ], - "alertTypeId": "1", - "consumer": "bar", - "name": "abc", - "notifyWhen": "onActionGroupChange", - "params": Object { - "bar": true, - }, - "schedule": Object { - "interval": "10s", - }, - "tags": Array [ - "foo", - ], - "throttle": "30s", - }, - "options": Object { - "id": "custom-id", - }, - }, - ] - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: expectedResult, - }); - }); - - it('allows providing a custom id in non-default space', async () => { - const expectedResult = { - ...createResult, - id: 'custom-id', - }; - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - createAlertRoute({ - router, - licenseState, - encryptedSavedObjects, - usageCounter: mockUsageCounter, - docLinks, - }); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id?}"`); - - rulesClient.create.mockResolvedValueOnce(expectedResult); - rulesClient.getSpaceId.mockReturnValueOnce('another-space'); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: 'custom-id' }, - body: mockedAlert, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toEqual({ body: expectedResult }); - - expect(mockUsageCounter.incrementCounter).toHaveBeenCalledTimes(2); - expect(rulesClient.create).toHaveBeenCalledTimes(1); - expect(rulesClient.create.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "data": Object { - "actions": Array [ - Object { - "group": "default", - "id": "2", - "params": Object { - "foo": true, - }, - }, - ], - "alertTypeId": "1", - "consumer": "bar", - "name": "abc", - "notifyWhen": "onActionGroupChange", - "params": Object { - "bar": true, - }, - "schedule": Object { - "interval": "10s", - }, - "tags": Array [ - "foo", - ], - "throttle": "30s", - }, - "options": Object { - "id": "custom-id", - }, - }, - ] - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: expectedResult, - }); - }); - - it('ensures the license allows creating alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - - createAlertRoute({ router, licenseState, encryptedSavedObjects, docLinks }); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.create.mockResolvedValueOnce(createResult); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, {}); - - await handler(context, req, res); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('ensures the license check prevents creating alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - - (verifyApiAccess as jest.Mock).mockImplementation(() => { - throw new Error('OMG'); - }); - - createAlertRoute({ router, licenseState, encryptedSavedObjects, docLinks }); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.create.mockResolvedValueOnce(createResult); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, {}); - - await expect(handler(context, req, res)).rejects.toMatchInlineSnapshot(`[Error: OMG]`); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('ensures the alert type gets validated for the license', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - - createAlertRoute({ router, licenseState, encryptedSavedObjects, docLinks }); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.create.mockRejectedValue(new RuleTypeDisabledError('Fail', 'license_invalid')); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, {}, ['ok', 'forbidden']); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ body: { message: 'Fail' } }); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - createAlertRoute({ - router, - licenseState, - encryptedSavedObjects, - usageCounter: mockUsageCounter, - docLinks, - }); - const [, handler] = router.post.mock.calls[0]; - rulesClient.create.mockResolvedValueOnce(createResult); - const [context, req, res] = mockHandlerArguments({ rulesClient }, {}, ['ok']); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('create', mockUsageCounter); - }); - - it('does not return system actions', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - createAlertRoute({ - router, - licenseState, - encryptedSavedObjects, - usageCounter: mockUsageCounter, - docLinks, - }); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id?}"`); - - rulesClient.create.mockResolvedValueOnce({ ...createResult, systemActions: [systemAction] }); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - body: mockedAlert, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toEqual({ body: createResult }); - - expect(mockUsageCounter.incrementCounter).not.toHaveBeenCalled(); - expect(rulesClient.create).toHaveBeenCalledTimes(1); - expect(rulesClient.create.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "data": Object { - "actions": Array [ - Object { - "group": "default", - "id": "2", - "params": Object { - "foo": true, - }, - }, - ], - "alertTypeId": "1", - "consumer": "bar", - "name": "abc", - "notifyWhen": "onActionGroupChange", - "params": Object { - "bar": true, - }, - "schedule": Object { - "interval": "10s", - }, - "tags": Array [ - "foo", - ], - "throttle": "30s", - }, - "options": Object { - "id": undefined, - }, - }, - ] - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: createResult, - }); - }); - - it('should be deprecated', () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - createAlertRoute({ - router, - licenseState, - encryptedSavedObjects, - usageCounter: mockUsageCounter, - docLinks, - }); - - const [config] = router.post.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "POST", - "newApiPath": "/api/alerting/rule/{id?}", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/create.ts b/x-pack/plugins/alerting/server/routes/legacy/create.ts deleted file mode 100644 index 8346ec37edf9c..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/create.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { validateDurationSchema } from '../../lib'; -import { handleDisabledApiKeysError } from '../lib/error_handler'; -import { - SanitizedRule, - RuleNotifyWhenType, - RuleTypeParams, - LEGACY_BASE_ALERT_API_PATH, - validateNotifyWhenType, -} from '../../types'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { RouteOptions } from '..'; -import { countUsageOfPredefinedIds } from '../lib'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -export const bodySchema = schema.object({ - name: schema.string(), - alertTypeId: schema.string(), - enabled: schema.boolean({ defaultValue: true }), - consumer: schema.string(), - tags: schema.arrayOf(schema.string(), { defaultValue: [] }), - throttle: schema.nullable(schema.string({ validate: validateDurationSchema })), - params: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), - schedule: schema.object({ - interval: schema.string({ validate: validateDurationSchema }), - }), - actions: schema.arrayOf( - schema.object({ - group: schema.string(), - id: schema.string(), - actionTypeId: schema.maybe(schema.string()), - params: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), - }), - { defaultValue: [] } - ), - notifyWhen: schema.nullable(schema.string({ validate: validateNotifyWhenType })), -}); - -export const createAlertRoute = ({ - router, - licenseState, - usageCounter, - isServerless, - docLinks, -}: RouteOptions) => { - router.post( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id?}`, - validate: { - params: schema.maybe( - schema.object({ - id: schema.maybe(schema.string()), - }) - ), - body: bodySchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Create an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'POST', - newApiPath: '/api/alerting/rule/{id?}', - }, - }, - }, - }, - handleDisabledApiKeysError( - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const alert = req.body; - const params = req.params; - const notifyWhen = alert?.notifyWhen ? (alert.notifyWhen as RuleNotifyWhenType) : null; - - trackLegacyRouteUsage('create', usageCounter); - - countUsageOfPredefinedIds({ - predefinedId: params?.id, - spaceId: rulesClient.getSpaceId(), - usageCounter, - }); - - try { - const { systemActions, ...alertRes }: SanitizedRule<RuleTypeParams> = - await rulesClient.create<RuleTypeParams>({ - data: { ...alert, notifyWhen }, - options: { id: params?.id }, - }); - return res.ok({ - body: alertRes, - }); - } catch (e) { - if (e instanceof RuleTypeDisabledError) { - return e.sendResponse(res); - } - throw e; - } - }) - ) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/delete.test.ts b/x-pack/plugins/alerting/server/routes/legacy/delete.test.ts deleted file mode 100644 index d8fd0effc50e4..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/delete.test.ts +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { deleteAlertRoute } from './delete'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); - -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('deleteAlertRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('deletes an alert with proper parameters', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - deleteAlertRoute(router, licenseState, docLinks); - - const [config, handler] = router.delete.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}"`); - expect(config.options?.access).toBe('public'); - - rulesClient.delete.mockResolvedValueOnce({}); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - }, - ['noContent'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.delete).toHaveBeenCalledTimes(1); - expect(rulesClient.delete.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "id": "1", - }, - ] - `); - - expect(res.noContent).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - deleteAlertRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.delete.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the license allows deleting alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - deleteAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.delete.mock.calls[0]; - - rulesClient.delete.mockResolvedValueOnce({}); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: '1' }, - } - ); - - await handler(context, req, res); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('ensures the license check prevents deleting alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - (verifyApiAccess as jest.Mock).mockImplementation(() => { - throw new Error('OMG'); - }); - - deleteAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.delete.mock.calls[0]; - - rulesClient.delete.mockResolvedValueOnce({}); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - id: '1', - } - ); - - await expect(handler(context, req, res)).rejects.toMatchInlineSnapshot(`[Error: OMG]`); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - deleteAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.delete.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: { id: '1' } }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('delete', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - deleteAlertRoute(router, licenseState, docLinks); - - const [config] = router.delete.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "DELETE", - "newApiPath": "/api/alerting/rule/{id}", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/delete.ts b/x-pack/plugins/alerting/server/routes/legacy/delete.ts deleted file mode 100644 index 738633c61f745..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/delete.ts +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -export const deleteAlertRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.delete( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Delete an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'DELETE', - newApiPath: '/api/alerting/rule/{id}', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('delete', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - await rulesClient.delete({ id }); - return res.noContent(); - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/disable.test.ts b/x-pack/plugins/alerting/server/routes/legacy/disable.test.ts deleted file mode 100644 index 13fec185429ed..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/disable.test.ts +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { disableAlertRoute } from './disable'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); - -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('disableAlertRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('disables an alert', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - disableAlertRoute(router, licenseState, docLinks); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_disable"`); - expect(config.options?.access).toBe('public'); - - rulesClient.disableRule.mockResolvedValueOnce(); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - }, - ['noContent'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.disableRule).toHaveBeenCalledTimes(1); - expect(rulesClient.disableRule.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "id": "1", - }, - ] - `); - - expect(res.noContent).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - disableAlertRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_disable"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the alert type gets validated for the license', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - disableAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.disableRule.mockRejectedValue(new RuleTypeDisabledError('Fail', 'license_invalid')); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - 'forbidden', - ]); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ body: { message: 'Fail' } }); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - disableAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: { id: '1' } }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('disable', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - disableAlertRoute(router, licenseState, docLinks); - - const [config] = router.post.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "POST", - "newApiPath": "/api/alerting/rule/{id}/_disable", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/disable.ts b/x-pack/plugins/alerting/server/routes/legacy/disable.ts deleted file mode 100644 index e69a176776e0c..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/disable.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -export const disableAlertRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.post( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}/_disable`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Disable an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'POST', - newApiPath: '/api/alerting/rule/{id}/_disable', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('disable', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - try { - await rulesClient.disableRule({ id }); - return res.noContent(); - } catch (e) { - if (e instanceof RuleTypeDisabledError) { - return e.sendResponse(res); - } - throw e; - } - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/enable.test.ts b/x-pack/plugins/alerting/server/routes/legacy/enable.test.ts deleted file mode 100644 index 88df304ea07c0..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/enable.test.ts +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { enableAlertRoute } from './enable'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); - -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('enableAlertRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('enables an alert', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - enableAlertRoute(router, licenseState, docLinks); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_enable"`); - expect(config.options?.access).toBe('public'); - - rulesClient.enableRule.mockResolvedValueOnce(); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - }, - ['noContent'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.enableRule).toHaveBeenCalledTimes(1); - expect(rulesClient.enableRule.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "id": "1", - }, - ] - `); - - expect(res.noContent).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - enableAlertRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_enable"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the alert type gets validated for the license', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - enableAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.enableRule.mockRejectedValue(new RuleTypeDisabledError('Fail', 'license_invalid')); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - 'forbidden', - ]); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ body: { message: 'Fail' } }); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - enableAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: { id: '1' } }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('enable', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - enableAlertRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.post.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "POST", - "newApiPath": "/api/alerting/rule/{id}/_enable", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/enable.ts b/x-pack/plugins/alerting/server/routes/legacy/enable.ts deleted file mode 100644 index 289b4050e059b..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/enable.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { handleDisabledApiKeysError } from '../lib/error_handler'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -export const enableAlertRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.post( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}/_enable`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Enable an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'POST', - newApiPath: '/api/alerting/rule/{id}/_enable', - }, - }, - }, - }, - handleDisabledApiKeysError( - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('enable', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - try { - await rulesClient.enableRule({ id }); - return res.noContent(); - } catch (e) { - if (e instanceof RuleTypeDisabledError) { - return e.sendResponse(res); - } - throw e; - } - }) - ) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/find.test.ts b/x-pack/plugins/alerting/server/routes/legacy/find.test.ts deleted file mode 100644 index 646f18fa072ea..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/find.test.ts +++ /dev/null @@ -1,439 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { omit } from 'lodash'; -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { findAlertRoute } from './find'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { trackLegacyTerminology } from '../lib/track_legacy_terminology'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); - -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -jest.mock('../lib/track_legacy_terminology', () => ({ - trackLegacyTerminology: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('findAlertRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('finds alerts with proper parameters', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - findAlertRoute(router, licenseState, docLinks); - - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/_find"`); - expect(config.options?.access).toBe('public'); - - const findResult = { - page: 1, - perPage: 1, - total: 0, - data: [], - }; - rulesClient.find.mockResolvedValueOnce(findResult); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - query: { - per_page: 1, - page: 1, - default_search_operator: 'OR', - }, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toMatchInlineSnapshot(` - Object { - "body": Object { - "data": Array [], - "page": 1, - "perPage": 1, - "total": 0, - }, - } - `); - - expect(rulesClient.find).toHaveBeenCalledTimes(1); - expect(rulesClient.find.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "excludeFromPublicApi": true, - "options": Object { - "defaultSearchOperator": "OR", - "page": 1, - "perPage": 1, - }, - }, - ] - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: findResult, - }); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - findAlertRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/_find"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the license allows finding alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - findAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.get.mock.calls[0]; - - rulesClient.find.mockResolvedValueOnce({ - page: 1, - perPage: 1, - total: 0, - data: [], - }); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - query: { - per_page: 1, - page: 1, - default_search_operator: 'OR', - }, - } - ); - - await handler(context, req, res); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('ensures the license check prevents finding alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - (verifyApiAccess as jest.Mock).mockImplementation(() => { - throw new Error('OMG'); - }); - - findAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - {}, - { - query: { - per_page: 1, - page: 1, - default_search_operator: 'OR', - }, - }, - ['ok'] - ); - await expect(handler(context, req, res)).rejects.toMatchInlineSnapshot(`[Error: OMG]`); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - findAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.get.mock.calls[0]; - const findResult = { - page: 1, - perPage: 1, - total: 0, - data: [], - }; - rulesClient.find.mockResolvedValueOnce(findResult); - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, query: {} }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('find', mockUsageCounter); - }); - - it('should track calls with deprecated param values', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - findAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.get.mock.calls[0]; - - const findResult = { - page: 1, - perPage: 1, - total: 0, - data: [], - }; - rulesClient.find.mockResolvedValueOnce(findResult); - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: {}, - query: { - search_fields: ['alertTypeId:1', 'message:foo'], - search: 'alertTypeId:2', - sort_field: 'alertTypeId', - }, - }, - ['ok'] - ); - await handler(context, req, res); - expect(trackLegacyTerminology).toHaveBeenCalledTimes(1); - expect((trackLegacyTerminology as jest.Mock).mock.calls[0][0]).toStrictEqual([ - 'alertTypeId:2', - ['alertTypeId:1', 'message:foo'], - 'alertTypeId', - ]); - }); - - it('should track calls to deprecated functionality', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - findAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.get.mock.calls[0]; - const findResult = { - page: 1, - perPage: 1, - total: 0, - data: [], - }; - rulesClient.find.mockResolvedValueOnce(findResult); - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: {}, - query: { - fields: ['foo', 'bar'], - }, - }, - ['ok'] - ); - await handler(context, req, res); - expect(mockUsageCounter.incrementCounter).toHaveBeenCalledWith({ - counterName: `legacyAlertingFieldsUsage`, - counterType: 'alertingFieldsUsage', - incrementBy: 1, - }); - }); - - it('does not return system actions', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - findAlertRoute(router, licenseState, docLinks); - - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/_find"`); - - const findResult = { - page: 1, - perPage: 1, - total: 0, - data: [ - { - id: '3d534c70-582b-11ec-8995-2b1578a3bc5d', - notifyWhen: 'onActiveAlert' as const, - alertTypeId: '.index-threshold', - name: 'stressing index-threshold 37/200', - consumer: 'alerts', - tags: [], - enabled: true, - throttle: null, - apiKey: null, - apiKeyOwner: '2889684073', - createdBy: 'elastic', - updatedBy: '2889684073', - muteAll: false, - mutedInstanceIds: [], - schedule: { - interval: '1s', - }, - actions: [ - { - actionTypeId: '.server-log', - params: { - message: 'alert 37: {{context.message}}', - }, - group: 'threshold met', - id: '3619a0d0-582b-11ec-8995-2b1578a3bc5d', - uuid: '123-456', - }, - ], - systemActions: [ - { actionTypeId: '.test', id: 'system_action-id', params: {}, uuid: '789' }, - ], - params: { x: 42 }, - updatedAt: '2024-03-21T13:15:00.498Z', - createdAt: '2024-03-21T13:15:00.498Z', - scheduledTaskId: '52125fb0-5895-11ec-ae69-bb65d1a71b72', - executionStatus: { - status: 'ok' as const, - lastExecutionDate: '2024-03-21T13:15:00.498Z', - lastDuration: 1194, - }, - revision: 0, - }, - ], - }; - - // @ts-expect-error: TS complains about dates being string and not a Date object - rulesClient.find.mockResolvedValueOnce(findResult); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - query: { - per_page: 1, - page: 1, - default_search_operator: 'OR', - }, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toMatchInlineSnapshot(` - Object { - "body": Object { - "data": Array [ - Object { - "actions": Array [ - Object { - "actionTypeId": ".server-log", - "group": "threshold met", - "id": "3619a0d0-582b-11ec-8995-2b1578a3bc5d", - "params": Object { - "message": "alert 37: {{context.message}}", - }, - "uuid": "123-456", - }, - ], - "alertTypeId": ".index-threshold", - "apiKey": null, - "apiKeyOwner": "2889684073", - "consumer": "alerts", - "createdAt": "2024-03-21T13:15:00.498Z", - "createdBy": "elastic", - "enabled": true, - "executionStatus": Object { - "lastDuration": 1194, - "lastExecutionDate": "2024-03-21T13:15:00.498Z", - "status": "ok", - }, - "id": "3d534c70-582b-11ec-8995-2b1578a3bc5d", - "muteAll": false, - "mutedInstanceIds": Array [], - "name": "stressing index-threshold 37/200", - "notifyWhen": "onActiveAlert", - "params": Object { - "x": 42, - }, - "revision": 0, - "schedule": Object { - "interval": "1s", - }, - "scheduledTaskId": "52125fb0-5895-11ec-ae69-bb65d1a71b72", - "tags": Array [], - "throttle": null, - "updatedAt": "2024-03-21T13:15:00.498Z", - "updatedBy": "2889684073", - }, - ], - "page": 1, - "perPage": 1, - "total": 0, - }, - } - `); - - expect(rulesClient.find).toHaveBeenCalledTimes(1); - expect(rulesClient.find.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "excludeFromPublicApi": true, - "options": Object { - "defaultSearchOperator": "OR", - "page": 1, - "perPage": 1, - }, - }, - ] - `); - - expect(res.ok).toHaveBeenCalledWith({ - body: omit(findResult, 'data[0].systemActions'), - }); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - findAlertRoute(router, licenseState, docLinks); - - const [config] = router.get.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "GET", - "newApiPath": "/api/alerting/rules/_find", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/find.ts b/x-pack/plugins/alerting/server/routes/legacy/find.ts deleted file mode 100644 index de1e5f8c226a1..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/find.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { estypes } from '@elastic/elasticsearch'; -import { KueryNode } from '@kbn/es-query'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; - -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { renameKeys } from '../lib/rename_keys'; -import { IndexType } from '../../rules_client'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { trackLegacyTerminology } from '../lib/track_legacy_terminology'; - -export interface FindOptions extends IndexType { - perPage?: number; - page?: number; - search?: string; - defaultSearchOperator?: 'AND' | 'OR'; - searchFields?: string[]; - sortField?: string; - sortOrder?: estypes.SortOrder; - hasReference?: { - type: string; - id: string; - }; - fields?: string[]; - filter?: string | KueryNode; - filterConsumers?: string[]; -} - -// config definition -const querySchema = schema.object({ - per_page: schema.number({ defaultValue: 10, min: 0 }), - page: schema.number({ defaultValue: 1, min: 1 }), - search: schema.maybe(schema.string()), - default_search_operator: schema.oneOf([schema.literal('OR'), schema.literal('AND')], { - defaultValue: 'OR', - }), - search_fields: schema.maybe(schema.oneOf([schema.arrayOf(schema.string()), schema.string()])), - sort_field: schema.maybe(schema.string()), - sort_order: schema.maybe(schema.oneOf([schema.literal('asc'), schema.literal('desc')])), - has_reference: schema.maybe( - // use nullable as maybe is currently broken - // in config-schema - schema.nullable( - schema.object({ - type: schema.string(), - id: schema.string(), - }) - ) - ), - fields: schema.maybe(schema.arrayOf(schema.string())), - filter: schema.maybe(schema.string()), -}); - -export const findAlertRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.get( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/_find`, - validate: { - query: querySchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Find alerts', - tags: ['oas-tag:alerting'], - description: - 'Gets a paginated set of alerts. Alert `params` are stored as a flattened field type and analyzed as keywords. As alerts change in Kibana, the results on each page of the response also change. Use the find API for traditional paginated results, but avoid using it to export large amounts of data.', - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'GET', - newApiPath: '/api/alerting/rules/_find', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('find', usageCounter); - trackLegacyTerminology( - [req.query.search, req.query.search_fields, req.query.sort_field].filter( - Boolean - ) as string[], - usageCounter - ); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - - const query = req.query; - const renameMap = { - default_search_operator: 'defaultSearchOperator', - fields: 'fields', - has_reference: 'hasReference', - page: 'page', - per_page: 'perPage', - search: 'search', - sort_field: 'sortField', - sort_order: 'sortOrder', - filter: 'filter', - }; - - const options = renameKeys<FindOptions, Record<string, unknown>>(renameMap, query); - - if (query.search_fields) { - options.searchFields = Array.isArray(query.search_fields) - ? query.search_fields - : [query.search_fields]; - } - - if (query.fields) { - usageCounter?.incrementCounter({ - counterName: `legacyAlertingFieldsUsage`, - counterType: 'alertingFieldsUsage', - incrementBy: 1, - }); - } - - const findResult = await rulesClient.find({ options, excludeFromPublicApi: true }); - return res.ok({ - body: { - ...findResult, - data: findResult.data.map(({ systemActions, ...rule }) => rule), - }, - }); - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/get.test.ts b/x-pack/plugins/alerting/server/routes/legacy/get.test.ts deleted file mode 100644 index ca8154fc7adae..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/get.test.ts +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { getAlertRoute } from './get'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { Rule, RuleSystemAction } from '../../../common'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('getAlertRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - const mockedAlert: Rule<{ - bar: true; - }> = { - id: '1', - alertTypeId: '1', - schedule: { interval: '10s' }, - params: { - bar: true, - }, - createdAt: new Date(), - updatedAt: new Date(), - actions: [ - { - group: 'default', - id: '2', - actionTypeId: 'test', - params: { - foo: true, - }, - }, - ], - consumer: 'bar', - name: 'abc', - tags: ['foo'], - enabled: true, - muteAll: false, - notifyWhen: 'onActionGroupChange', - createdBy: '', - updatedBy: '', - apiKey: '', - apiKeyOwner: '', - throttle: '30s', - mutedInstanceIds: [], - executionStatus: { - status: 'unknown', - lastExecutionDate: new Date('2020-08-20T19:23:38Z'), - }, - revision: 0, - }; - - const systemAction: RuleSystemAction = { - actionTypeId: 'test-2', - id: 'system_action-id', - params: { - foo: true, - }, - uuid: '123-456', - }; - - it('gets an alert with proper parameters', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertRoute(router, licenseState, docLinks); - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}"`); - expect(config.options?.access).toBe('public'); - - rulesClient.get.mockResolvedValueOnce(mockedAlert); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: '1' }, - }, - ['ok'] - ); - await handler(context, req, res); - - expect(rulesClient.get).toHaveBeenCalledTimes(1); - expect(rulesClient.get.mock.calls[0][0].id).toEqual('1'); - - expect(res.ok).toHaveBeenCalledWith({ - body: mockedAlert, - }); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertRoute(router, licenseState, docLinks, undefined, true); - const [config] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the license allows getting alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.get.mock.calls[0]; - - rulesClient.get.mockResolvedValueOnce(mockedAlert); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: '1' }, - }, - ['ok'] - ); - - await handler(context, req, res); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('ensures the license check prevents getting alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - (verifyApiAccess as jest.Mock).mockImplementation(() => { - throw new Error('OMG'); - }); - - getAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.get.mock.calls[0]; - - rulesClient.get.mockResolvedValueOnce(mockedAlert); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: '1' }, - }, - ['ok'] - ); - - await expect(handler(context, req, res)).rejects.toMatchInlineSnapshot(`[Error: OMG]`); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - getAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.get.mock.calls[0]; - - rulesClient.get.mockResolvedValueOnce(mockedAlert); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: { id: '1' } }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('get', mockUsageCounter); - }); - - it('does not return system actions', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertRoute(router, licenseState, docLinks); - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}"`); - - rulesClient.get.mockResolvedValueOnce({ ...mockedAlert, systemActions: [systemAction] }); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: '1' }, - }, - ['ok'] - ); - await handler(context, req, res); - - expect(rulesClient.get).toHaveBeenCalledTimes(1); - expect(rulesClient.get.mock.calls[0][0].id).toEqual('1'); - - expect(res.ok).toHaveBeenCalledWith({ - body: mockedAlert, - }); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertRoute(router, licenseState, docLinks); - const [config] = router.get.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "GET", - "newApiPath": "/api/alerting/rule/{id}", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/get.ts b/x-pack/plugins/alerting/server/routes/legacy/get.ts deleted file mode 100644 index 19fc0f7ff49e6..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/get.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import type { AlertingRouter } from '../../types'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -export const getAlertRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.get( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Get an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'GET', - newApiPath: '/api/alerting/rule/{id}', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('get', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - const { systemActions, ...rule } = await rulesClient.get({ id, excludeFromPublicApi: true }); - return res.ok({ - body: rule, - }); - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.test.ts b/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.test.ts deleted file mode 100644 index cc3deaad9af99..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.test.ts +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { getAlertInstanceSummaryRoute } from './get_alert_instance_summary'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { SavedObjectsErrorHelpers } from '@kbn/core/server'; -import { rulesClientMock } from '../../rules_client.mock'; -import { AlertSummary } from '../../types'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { RULE_SAVED_OBJECT_TYPE } from '../../saved_objects'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('getAlertInstanceSummaryRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - const dateString = new Date().toISOString(); - const mockedAlertInstanceSummary: AlertSummary = { - id: '', - name: '', - tags: [], - ruleTypeId: '', - consumer: '', - muteAll: false, - throttle: null, - enabled: false, - statusStartDate: dateString, - statusEndDate: dateString, - status: 'OK', - errorMessages: [], - alerts: {}, - executionDuration: { - average: 0, - valuesWithTimestamp: {}, - }, - revision: 0, - }; - - it('gets alert instance summary', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertInstanceSummaryRoute(router, licenseState, docLinks); - - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_instance_summary"`); - expect(config.options?.access).toBe('public'); - - rulesClient.getAlertSummary.mockResolvedValueOnce(mockedAlertInstanceSummary); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - query: {}, - }, - ['ok'] - ); - - await handler(context, req, res); - - expect(rulesClient.getAlertSummary).toHaveBeenCalledTimes(1); - expect(rulesClient.getAlertSummary.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "dateStart": undefined, - "id": "1", - }, - ] - `); - - expect(res.ok).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertInstanceSummaryRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_instance_summary"`); - expect(config.options?.access).toBe('internal'); - }); - - it('returns NOT-FOUND when alert is not found', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertInstanceSummaryRoute(router, licenseState, docLinks); - - const [, handler] = router.get.mock.calls[0]; - - rulesClient.getAlertSummary = jest - .fn() - .mockResolvedValueOnce( - SavedObjectsErrorHelpers.createGenericNotFoundError(RULE_SAVED_OBJECT_TYPE, '1') - ); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - query: {}, - }, - ['notFound'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - getAlertInstanceSummaryRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.get.mock.calls[0]; - - rulesClient.getAlertSummary.mockResolvedValueOnce(mockedAlertInstanceSummary); - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { params: { id: '1' }, query: {} }, - ['ok'] - ); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('instanceSummary', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertInstanceSummaryRoute(router, licenseState, docLinks); - - const [config] = router.get.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "type": "remove", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.ts b/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.ts deleted file mode 100644 index 0e50601a1fd4d..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { AlertSummary, LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -const querySchema = schema.object({ - dateStart: schema.maybe(schema.string()), -}); - -const rewriteBodyRes = ({ ruleTypeId, alerts, ...rest }: AlertSummary) => ({ - ...rest, - alertTypeId: ruleTypeId, - instances: alerts, -}); - -export const getAlertInstanceSummaryRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.get( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}/_instance_summary`, - validate: { - params: paramSchema, - query: querySchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Get an alert summary', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'remove', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('instanceSummary', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - const { dateStart } = req.query; - const summary = await rulesClient.getAlertSummary({ id, dateStart }); - - return res.ok({ body: rewriteBodyRes(summary) }); - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.test.ts b/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.test.ts deleted file mode 100644 index ca79291b23dbc..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.test.ts +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { getAlertStateRoute } from './get_alert_state'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { SavedObjectsErrorHelpers } from '@kbn/core/server'; -import { rulesClientMock } from '../../rules_client.mock'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { RULE_SAVED_OBJECT_TYPE } from '../../saved_objects'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('getAlertStateRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - const mockedAlertState = { - alertTypeState: { - some: 'value', - }, - alertInstances: { - first_instance: { - state: {}, - meta: { - lastScheduledActions: { - group: 'first_group', - date: new Date().toISOString(), - }, - }, - }, - second_instance: {}, - }, - }; - - it('gets alert state', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertStateRoute(router, licenseState, docLinks); - - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/state"`); - expect(config.options?.access).toBe('public'); - - rulesClient.getAlertState.mockResolvedValueOnce(mockedAlertState); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - }, - ['ok'] - ); - - await handler(context, req, res); - - expect(rulesClient.getAlertState).toHaveBeenCalledTimes(1); - expect(rulesClient.getAlertState.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "id": "1", - }, - ] - `); - - expect(res.ok).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertStateRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/state"`); - expect(config.options?.access).toBe('internal'); - }); - - it('returns NO-CONTENT when alert exists but has no task state yet', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertStateRoute(router, licenseState, docLinks); - - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/state"`); - - rulesClient.getAlertState.mockResolvedValueOnce(undefined); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - }, - ['noContent'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.getAlertState).toHaveBeenCalledTimes(1); - expect(rulesClient.getAlertState.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "id": "1", - }, - ] - `); - - expect(res.noContent).toHaveBeenCalled(); - }); - - it('returns NOT-FOUND when alert is not found', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertStateRoute(router, licenseState, docLinks); - - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/state"`); - - rulesClient.getAlertState = jest - .fn() - .mockResolvedValueOnce( - SavedObjectsErrorHelpers.createGenericNotFoundError(RULE_SAVED_OBJECT_TYPE, '1') - ); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - }, - ['notFound'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.getAlertState).toHaveBeenCalledTimes(1); - expect(rulesClient.getAlertState.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "id": "1", - }, - ] - `); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - getAlertStateRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.get.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: { id: '1' } }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('state', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - getAlertStateRoute(router, licenseState, docLinks); - - const [config] = router.get.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "type": "remove", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.ts b/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.ts deleted file mode 100644 index f9db44c1e9a0c..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -export const getAlertStateRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.get( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}/state`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Get the state of an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'remove', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('state', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - const state = await rulesClient.getAlertState({ id }); - return state ? res.ok({ body: state }) : res.noContent(); - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/health.test.ts b/x-pack/plugins/alerting/server/routes/legacy/health.test.ts deleted file mode 100644 index fea24b831e97d..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/health.test.ts +++ /dev/null @@ -1,473 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { HealthStatus } from '@kbn/alerting-types'; -import { healthRoute } from './health'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { encryptedSavedObjectsMock } from '@kbn/encrypted-saved-objects-plugin/server/mocks'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RecoveredActionGroup } from '../../types'; -import { alertsMock } from '../../mocks'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { RegistryAlertTypeWithAuth } from '../../authorization'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); - -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -const alerting = alertsMock.createStart(); - -const currentDate = new Date().toISOString(); - -const ruleTypes = [ - { - id: '1', - name: 'name', - actionGroups: [ - { - id: 'default', - name: 'Default', - }, - ], - defaultActionGroupId: 'default', - minimumLicenseRequired: 'basic', - isExportable: true, - ruleTaskTimeout: '10m', - recoveryActionGroup: RecoveredActionGroup, - authorizedConsumers: {}, - actionVariables: { - context: [], - state: [], - }, - category: 'test', - producer: 'test', - enabledInLicense: true, - defaultScheduleInterval: '10m', - hasAlertsMappings: false, - hasFieldsForAAD: false, - validLegacyConsumers: [], - } as RegistryAlertTypeWithAuth, -]; - -beforeEach(() => { - jest.resetAllMocks(); - alerting.getFrameworkHealth.mockResolvedValue({ - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }); -}); - -describe('healthRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('registers the route', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce(ruleTypes); - const router = httpServiceMock.createRouter(); - - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - healthRoute(router, licenseState, encryptedSavedObjects, docLinks); - - const [config] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/_health"`); - expect(config.options?.access).toBe('public'); - }); - - it('should have internal access for serverless', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce(ruleTypes); - const router = httpServiceMock.createRouter(); - - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - healthRoute(router, licenseState, encryptedSavedObjects, docLinks, undefined, true); - - const [config] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/_health"`); - expect(config.options?.access).toBe('internal'); - }); - - it('throws error when user does not have any access to any rule types', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce([]); - const router = httpServiceMock.createRouter(); - - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: false }); - healthRoute(router, licenseState, encryptedSavedObjects, docLinks); - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - { - rulesClient, - getFrameworkHealth: alerting.getFrameworkHealth, - areApiKeysEnabled: () => Promise.resolve(true), - }, - {}, - ['ok'] - ); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ - body: { message: `Unauthorized to access alerting framework health` }, - }); - }); - - it('evaluates whether Encrypted Saved Objects is missing encryption key', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce(ruleTypes); - const router = httpServiceMock.createRouter(); - - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: false }); - healthRoute(router, licenseState, encryptedSavedObjects, docLinks); - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - { - rulesClient, - getFrameworkHealth: alerting.getFrameworkHealth, - areApiKeysEnabled: () => Promise.resolve(true), - }, - {}, - ['ok'] - ); - - expect(await handler(context, req, res)).toStrictEqual({ - body: { - alertingFrameworkHeath: { - // Legacy: pre-v8.0 typo - _deprecated: 'This state property has a typo, use "alertingFrameworkHealth" instead.', - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - alertingFrameworkHealth: { - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - hasPermanentEncryptionKey: false, - isSufficientlySecure: true, - }, - }); - }); - - test('when ES security status cannot be determined from license state, isSufficientlySecure should return false', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce(ruleTypes); - const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - licenseState.getIsSecurityEnabled.mockReturnValueOnce(null); - - healthRoute(router, licenseState, encryptedSavedObjects, docLinks); - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - { - rulesClient, - getFrameworkHealth: alerting.getFrameworkHealth, - areApiKeysEnabled: () => Promise.resolve(true), - }, - {}, - ['ok'] - ); - - expect(await handler(context, req, res)).toStrictEqual({ - body: { - alertingFrameworkHeath: { - // Legacy: pre-v8.0 typo - _deprecated: 'This state property has a typo, use "alertingFrameworkHealth" instead.', - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - alertingFrameworkHealth: { - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - hasPermanentEncryptionKey: true, - isSufficientlySecure: false, - }, - }); - }); - - test('when ES security is disabled, isSufficientlySecure should return true', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce(ruleTypes); - const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - licenseState.getIsSecurityEnabled.mockReturnValueOnce(false); - - healthRoute(router, licenseState, encryptedSavedObjects, docLinks); - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - { - rulesClient, - getFrameworkHealth: alerting.getFrameworkHealth, - areApiKeysEnabled: () => Promise.resolve(false), - }, - {}, - ['ok'] - ); - - expect(await handler(context, req, res)).toStrictEqual({ - body: { - alertingFrameworkHeath: { - // Legacy: pre-v8.0 typo - _deprecated: 'This state property has a typo, use "alertingFrameworkHealth" instead.', - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - alertingFrameworkHealth: { - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - hasPermanentEncryptionKey: true, - isSufficientlySecure: true, - }, - }); - }); - - test('when ES security is enabled but user cannot generate api keys, isSufficientlySecure should return false', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce(ruleTypes); - const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - licenseState.getIsSecurityEnabled.mockReturnValueOnce(true); - - healthRoute(router, licenseState, encryptedSavedObjects, docLinks); - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - { - rulesClient, - getFrameworkHealth: alerting.getFrameworkHealth, - areApiKeysEnabled: () => Promise.resolve(false), - }, - {}, - ['ok'] - ); - - expect(await handler(context, req, res)).toStrictEqual({ - body: { - alertingFrameworkHeath: { - // Legacy: pre-v8.0 typo - _deprecated: 'This state property has a typo, use "alertingFrameworkHealth" instead.', - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - alertingFrameworkHealth: { - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - hasPermanentEncryptionKey: true, - isSufficientlySecure: false, - }, - }); - }); - - test('when ES security is enabled and user can generate api keys, isSufficientlySecure should return true', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce(ruleTypes); - const router = httpServiceMock.createRouter(); - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - licenseState.getIsSecurityEnabled.mockReturnValueOnce(true); - - healthRoute(router, licenseState, encryptedSavedObjects, docLinks); - const [, handler] = router.get.mock.calls[0]; - - const [context, req, res] = mockHandlerArguments( - { - rulesClient, - getFrameworkHealth: alerting.getFrameworkHealth, - areApiKeysEnabled: () => Promise.resolve(true), - }, - {}, - ['ok'] - ); - - expect(await handler(context, req, res)).toStrictEqual({ - body: { - alertingFrameworkHeath: { - // Legacy: pre-v8.0 typo - _deprecated: 'This state property has a typo, use "alertingFrameworkHealth" instead.', - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - alertingFrameworkHealth: { - decryptionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - executionHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - readHealth: { - status: HealthStatus.OK, - timestamp: currentDate, - }, - }, - hasPermanentEncryptionKey: true, - isSufficientlySecure: true, - }, - }); - }); - - it('should track every call', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce(ruleTypes); - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - healthRoute(router, licenseState, encryptedSavedObjects, docLinks, mockUsageCounter); - const [, handler] = router.get.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: { id: '1' } }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('health', mockUsageCounter); - }); - - it('should be deprecated', async () => { - rulesClient.listRuleTypes.mockResolvedValueOnce(ruleTypes); - const router = httpServiceMock.createRouter(); - - const licenseState = licenseStateMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createSetup({ canEncrypt: true }); - healthRoute(router, licenseState, encryptedSavedObjects, docLinks); - - const [config] = router.get.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "GET", - "newApiPath": "/api/alerting/rule/_health", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/health.ts b/x-pack/plugins/alerting/server/routes/legacy/health.ts deleted file mode 100644 index b463298837f4e..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/health.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { EncryptedSavedObjectsPluginSetup } from '@kbn/encrypted-saved-objects-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { AlertingFrameworkHealth } from '../../types'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { getSecurityHealth } from '../../lib/get_security_health'; - -export function healthRoute( - router: AlertingRouter, - licenseState: ILicenseState, - encryptedSavedObjects: EncryptedSavedObjectsPluginSetup, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) { - router.get( - { - path: '/api/alerts/_health', - validate: false, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Get the alerting framework health', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'GET', - newApiPath: '/api/alerting/rule/_health', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('health', usageCounter); - try { - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - // Verify that user has access to at least one rule type - const ruleTypes = Array.from(await rulesClient.listRuleTypes()); - if (ruleTypes.length > 0) { - const alertingFrameworkHealth = await alertingContext.getFrameworkHealth(); - - const securityHealth = await getSecurityHealth( - async () => (licenseState ? licenseState.getIsSecurityEnabled() : null), - async () => encryptedSavedObjects.canEncrypt, - alertingContext.areApiKeysEnabled - ); - - const frameworkHealth: AlertingFrameworkHealth = { - ...securityHealth, - alertingFrameworkHealth, - }; - - return res.ok({ - body: { - ...frameworkHealth, - alertingFrameworkHeath: { - // Legacy: pre-v8.0 typo - ...alertingFrameworkHealth, - _deprecated: - 'This state property has a typo, use "alertingFrameworkHealth" instead.', - }, - }, - }); - } else { - return res.forbidden({ - body: { message: `Unauthorized to access alerting framework health` }, - }); - } - } catch (error) { - return res.badRequest({ body: error }); - } - }) - ); -} diff --git a/x-pack/plugins/alerting/server/routes/legacy/index.ts b/x-pack/plugins/alerting/server/routes/legacy/index.ts deleted file mode 100644 index e9551d938e6c1..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { createAlertRoute } from './create'; -import { deleteAlertRoute } from './delete'; -import { findAlertRoute } from './find'; -import { getAlertRoute } from './get'; -import { getAlertStateRoute } from './get_alert_state'; -import { getAlertInstanceSummaryRoute } from './get_alert_instance_summary'; -import { listAlertTypesRoute } from './list_alert_types'; -import { updateAlertRoute } from './update'; -import { enableAlertRoute } from './enable'; -import { disableAlertRoute } from './disable'; -import { updateApiKeyRoute } from './update_api_key'; -import { muteAlertInstanceRoute } from './mute_instance'; -import { unmuteAlertInstanceRoute } from './unmute_instance'; -import { muteAllAlertRoute } from './mute_all'; -import { unmuteAllAlertRoute } from './unmute_all'; -import { healthRoute } from './health'; -import { RouteOptions } from '..'; - -export function defineLegacyRoutes(opts: RouteOptions) { - const { router, licenseState, encryptedSavedObjects, usageCounter, isServerless, docLinks } = - opts; - - createAlertRoute(opts); - deleteAlertRoute(router, licenseState, docLinks, usageCounter, isServerless); - findAlertRoute(router, licenseState, docLinks, usageCounter, isServerless); - getAlertRoute(router, licenseState, docLinks, usageCounter, isServerless); - getAlertStateRoute(router, licenseState, docLinks, usageCounter, isServerless); - getAlertInstanceSummaryRoute(router, licenseState, docLinks, usageCounter, isServerless); - listAlertTypesRoute(router, licenseState, docLinks, usageCounter, isServerless); - updateAlertRoute(router, licenseState, docLinks, usageCounter, isServerless); - enableAlertRoute(router, licenseState, docLinks, usageCounter, isServerless); - disableAlertRoute(router, licenseState, docLinks, usageCounter, isServerless); - updateApiKeyRoute(router, licenseState, docLinks, usageCounter, isServerless); - muteAllAlertRoute(router, licenseState, docLinks, usageCounter, isServerless); - unmuteAllAlertRoute(router, licenseState, docLinks, usageCounter, isServerless); - muteAlertInstanceRoute(router, licenseState, docLinks, usageCounter, isServerless); - unmuteAlertInstanceRoute(router, licenseState, docLinks, usageCounter, isServerless); - healthRoute(router, licenseState, encryptedSavedObjects, docLinks, usageCounter, isServerless); -} diff --git a/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts b/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts deleted file mode 100644 index 27e9d7ce44865..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { listAlertTypesRoute } from './list_alert_types'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RecoveredActionGroup } from '../../../common'; -import { RegistryAlertTypeWithAuth } from '../../authorization'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); - -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('listAlertTypesRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - it('lists alert types with proper parameters', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - listAlertTypesRoute(router, licenseState, docLinks); - - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/list_alert_types"`); - expect(config.options?.access).toBe('public'); - - const listTypes: RegistryAlertTypeWithAuth[] = [ - { - id: '1', - name: 'name', - actionGroups: [ - { - id: 'default', - name: 'Default', - }, - ], - defaultActionGroupId: 'default', - minimumLicenseRequired: 'basic', - isExportable: true, - recoveryActionGroup: RecoveredActionGroup, - authorizedConsumers: {}, - actionVariables: { - context: [], - state: [], - }, - category: 'test', - producer: 'test', - enabledInLicense: true, - hasAlertsMappings: false, - hasFieldsForAAD: false, - validLegacyConsumers: [], - }, - ]; - - rulesClient.listRuleTypes.mockResolvedValueOnce(listTypes); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, {}, ['ok']); - - expect(await handler(context, req, res)).toMatchInlineSnapshot(` - Object { - "body": Array [ - Object { - "actionGroups": Array [ - Object { - "id": "default", - "name": "Default", - }, - ], - "actionVariables": Object { - "context": Array [], - "state": Array [], - }, - "authorizedConsumers": Object {}, - "category": "test", - "defaultActionGroupId": "default", - "enabledInLicense": true, - "hasAlertsMappings": false, - "hasFieldsForAAD": false, - "id": "1", - "isExportable": true, - "minimumLicenseRequired": "basic", - "name": "name", - "producer": "test", - "recoveryActionGroup": Object { - "id": "recovered", - "name": "Recovered", - }, - "validLegacyConsumers": Array [], - }, - ], - } - `); - - expect(rulesClient.listRuleTypes).toHaveBeenCalledTimes(1); - - expect(res.ok).toHaveBeenCalledWith({ - body: listTypes, - }); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - listAlertTypesRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/list_alert_types"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the license allows listing alert types', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - listAlertTypesRoute(router, licenseState, docLinks); - - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/list_alert_types"`); - - const listTypes = [ - { - id: '1', - name: 'name', - actionGroups: [ - { - id: 'default', - name: 'Default', - }, - ], - defaultActionGroupId: 'default', - minimumLicenseRequired: 'basic', - isExportable: true, - recoveryActionGroup: RecoveredActionGroup, - authorizedConsumers: {}, - actionVariables: { - context: [], - state: [], - }, - category: 'test', - producer: 'alerts', - enabledInLicense: true, - hasAlertsMappings: false, - hasFieldsForAAD: false, - validLegacyConsumers: [], - } as RegistryAlertTypeWithAuth, - ]; - - rulesClient.listRuleTypes.mockResolvedValueOnce(listTypes); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: '1' }, - }, - ['ok'] - ); - - await handler(context, req, res); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('ensures the license check prevents listing alert types', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - (verifyApiAccess as jest.Mock).mockImplementation(() => { - throw new Error('OMG'); - }); - - listAlertTypesRoute(router, licenseState, docLinks); - - const [config, handler] = router.get.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/list_alert_types"`); - - const listTypes = [ - { - id: '1', - name: 'name', - actionGroups: [ - { - id: 'default', - name: 'Default', - }, - ], - defaultActionGroupId: 'default', - minimumLicenseRequired: 'basic', - isExportable: true, - recoveryActionGroup: RecoveredActionGroup, - authorizedConsumers: {}, - actionVariables: { - context: [], - state: [], - }, - category: 'test', - producer: 'alerts', - enabledInLicense: true, - hasAlertsMappings: false, - hasFieldsForAAD: false, - validLegacyConsumers: [], - } as RegistryAlertTypeWithAuth, - ]; - - rulesClient.listRuleTypes.mockResolvedValueOnce(listTypes); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { id: '1' }, - }, - ['ok'] - ); - - await expect(handler(context, req, res)).rejects.toMatchInlineSnapshot(`[Error: OMG]`); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - rulesClient.listRuleTypes.mockResolvedValueOnce([]); - - listAlertTypesRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.get.mock.calls[0]; - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { params: { id: '1' }, body: {} }, - ['ok'] - ); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('listAlertTypes', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - listAlertTypesRoute(router, licenseState, docLinks); - - const [config] = router.get.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "GET", - "newApiPath": "/api/alerting/rule_types", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.ts b/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.ts deleted file mode 100644 index f4f2bc7936b3d..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -export const listAlertTypesRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.get( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/list_alert_types`, - validate: {}, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Get the alert types', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'GET', - newApiPath: '/api/alerting/rule_types', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('listAlertTypes', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - - return res.ok({ - body: Array.from(await rulesClient.listRuleTypes()), - }); - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/mute_all.test.ts b/x-pack/plugins/alerting/server/routes/legacy/mute_all.test.ts deleted file mode 100644 index d80cf415283d0..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/mute_all.test.ts +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { muteAllAlertRoute } from './mute_all'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('muteAllAlertRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('mute an alert', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - muteAllAlertRoute(router, licenseState, docLinks); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_mute_all"`); - expect(config.options?.access).toBe('public'); - - rulesClient.muteAll.mockResolvedValueOnce(); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - }, - ['noContent'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.muteAll).toHaveBeenCalledTimes(1); - expect(rulesClient.muteAll.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "id": "1", - }, - ] - `); - - expect(res.noContent).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - muteAllAlertRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_mute_all"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the alert type gets validated for the license', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - muteAllAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.muteAll.mockRejectedValue(new RuleTypeDisabledError('Fail', 'license_invalid')); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - 'forbidden', - ]); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ body: { message: 'Fail' } }); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - muteAllAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('muteAll', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - muteAllAlertRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.post.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "POST", - "newApiPath": "/api/alerting/rule/{id}/_mute_all", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/mute_all.ts b/x-pack/plugins/alerting/server/routes/legacy/mute_all.ts deleted file mode 100644 index 75c860167f21c..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/mute_all.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -export const muteAllAlertRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.post( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}/_mute_all`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Mute all alert instances', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'POST', - newApiPath: '/api/alerting/rule/{id}/_mute_all', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('muteAll', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - try { - await rulesClient.muteAll({ id }); - return res.noContent(); - } catch (e) { - if (e instanceof RuleTypeDisabledError) { - return e.sendResponse(res); - } - throw e; - } - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/mute_instance.test.ts b/x-pack/plugins/alerting/server/routes/legacy/mute_instance.test.ts deleted file mode 100644 index 08e03a6d053ef..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/mute_instance.test.ts +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { muteAlertInstanceRoute } from './mute_instance'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('muteAlertInstanceRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('mutes an alert instance', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - muteAlertInstanceRoute(router, licenseState, docLinks); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot( - `"/api/alerts/alert/{alert_id}/alert_instance/{alert_instance_id}/_mute"` - ); - expect(config.options?.access).toBe('public'); - - rulesClient.muteInstance.mockResolvedValueOnce(); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - alert_id: '1', - alert_instance_id: '2', - }, - }, - ['noContent'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.muteInstance).toHaveBeenCalledTimes(1); - expect(rulesClient.muteInstance.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "alertId": "1", - "alertInstanceId": "2", - }, - ] - `); - - expect(res.noContent).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - muteAlertInstanceRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot( - `"/api/alerts/alert/{alert_id}/alert_instance/{alert_instance_id}/_mute"` - ); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the alert type gets validated for the license', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - muteAlertInstanceRoute(router, licenseState, docLinks); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.muteInstance.mockRejectedValue( - new RuleTypeDisabledError('Fail', 'license_invalid') - ); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - 'forbidden', - ]); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ body: { message: 'Fail' } }); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - muteAlertInstanceRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('muteInstance', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - muteAlertInstanceRoute(router, licenseState, docLinks); - - const [config] = router.post.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "POST", - "newApiPath": "/api/alerting/rule/{rule_id}/alert/{alert_id}/_mute", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/mute_instance.ts b/x-pack/plugins/alerting/server/routes/legacy/mute_instance.ts deleted file mode 100644 index 23225c387ccaa..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/mute_instance.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { renameKeys } from '../lib/rename_keys'; -import { MuteOptions } from '../../rules_client'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - alert_id: schema.string(), - alert_instance_id: schema.string(), -}); - -export const muteAlertInstanceRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.post( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{alert_id}/alert_instance/{alert_instance_id}/_mute`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Mute an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'POST', - newApiPath: '/api/alerting/rule/{rule_id}/alert/{alert_id}/_mute', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - - trackLegacyRouteUsage('muteInstance', usageCounter); - - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - - const renameMap = { - alert_id: 'alertId', - alert_instance_id: 'alertInstanceId', - }; - - const renamedQuery = renameKeys<MuteOptions, Record<string, unknown>>(renameMap, req.params); - try { - await rulesClient.muteInstance(renamedQuery); - return res.noContent(); - } catch (e) { - if (e instanceof RuleTypeDisabledError) { - return e.sendResponse(res); - } - throw e; - } - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/unmute_all.test.ts b/x-pack/plugins/alerting/server/routes/legacy/unmute_all.test.ts deleted file mode 100644 index 5ae337e6a3f51..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/unmute_all.test.ts +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { unmuteAllAlertRoute } from './unmute_all'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('unmuteAllAlertRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('unmutes an alert', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - unmuteAllAlertRoute(router, licenseState, docLinks); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_unmute_all"`); - expect(config.options?.access).toBe('public'); - - rulesClient.unmuteAll.mockResolvedValueOnce(); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - }, - ['noContent'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.unmuteAll).toHaveBeenCalledTimes(1); - expect(rulesClient.unmuteAll.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "id": "1", - }, - ] - `); - - expect(res.noContent).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - unmuteAllAlertRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_unmute_all"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the alert type gets validated for the license', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - unmuteAllAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.unmuteAll.mockRejectedValue(new RuleTypeDisabledError('Fail', 'license_invalid')); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - 'forbidden', - ]); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ body: { message: 'Fail' } }); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - unmuteAllAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('unmuteAll', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - unmuteAllAlertRoute(router, licenseState, docLinks); - - const [config] = router.post.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "POST", - "newApiPath": "/api/alerting/rule/{id}/_unmute_all", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/unmute_all.ts b/x-pack/plugins/alerting/server/routes/legacy/unmute_all.ts deleted file mode 100644 index 2684ea60d7336..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/unmute_all.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -export const unmuteAllAlertRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.post( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}/_unmute_all`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Unmute all alert instances', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'POST', - newApiPath: '/api/alerting/rule/{id}/_unmute_all', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('unmuteAll', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - try { - await rulesClient.unmuteAll({ id }); - return res.noContent(); - } catch (e) { - if (e instanceof RuleTypeDisabledError) { - return e.sendResponse(res); - } - throw e; - } - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.test.ts b/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.test.ts deleted file mode 100644 index b6fba61aaff8a..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.test.ts +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { unmuteAlertInstanceRoute } from './unmute_instance'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('unmuteAlertInstanceRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('unmutes an alert instance', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - unmuteAlertInstanceRoute(router, licenseState, docLinks); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot( - `"/api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_unmute"` - ); - expect(config.options?.access).toBe('public'); - - rulesClient.unmuteInstance.mockResolvedValueOnce(); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - alertId: '1', - alertInstanceId: '2', - }, - }, - ['noContent'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.unmuteInstance).toHaveBeenCalledTimes(1); - expect(rulesClient.unmuteInstance.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "alertId": "1", - "alertInstanceId": "2", - }, - ] - `); - - expect(res.noContent).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - unmuteAlertInstanceRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot( - `"/api/alerts/alert/{alertId}/alert_instance/{alertInstanceId}/_unmute"` - ); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the alert type gets validated for the license', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - unmuteAlertInstanceRoute(router, licenseState, docLinks); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.unmuteInstance.mockRejectedValue( - new RuleTypeDisabledError('Fail', 'license_invalid') - ); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - 'forbidden', - ]); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ body: { message: 'Fail' } }); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - unmuteAlertInstanceRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('unmuteInstance', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - unmuteAlertInstanceRoute(router, licenseState, docLinks); - - const [config] = router.post.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "POST", - "newApiPath": "/api/alerting/rule/{rule_id}/alert/{alert_id}/_unmute", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.ts b/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.ts deleted file mode 100644 index e6122a92509b0..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - alertId: schema.string(), - alertInstanceId: schema.string(), -}); - -export const unmuteAlertInstanceRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.post( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{alertId}/alert_instance/{alertInstanceId}/_unmute`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Unmute an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'POST', - newApiPath: '/api/alerting/rule/{rule_id}/alert/{alert_id}/_unmute', - }, - }, - }, - }, - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('unmuteInstance', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { alertId, alertInstanceId } = req.params; - try { - await rulesClient.unmuteInstance({ alertId, alertInstanceId }); - return res.noContent(); - } catch (e) { - if (e instanceof RuleTypeDisabledError) { - return e.sendResponse(res); - } - throw e; - } - }) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/update.test.ts b/x-pack/plugins/alerting/server/routes/legacy/update.test.ts deleted file mode 100644 index 7aaee90b805c5..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/update.test.ts +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { updateAlertRoute } from './update'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { RuleNotifyWhen, SanitizedRule, RuleSystemAction } from '../../../common'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('updateAlertRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - const mockedResponse = { - id: '1', - alertTypeId: '1', - tags: ['foo'], - schedule: { interval: '12s' }, - params: { - otherField: false, - }, - createdAt: new Date(), - updatedAt: new Date(), - actions: [ - { - group: 'default', - id: '2', - actionTypeId: 'test', - params: { - baz: true, - }, - }, - ], - notifyWhen: RuleNotifyWhen.CHANGE, - }; - - const systemAction: RuleSystemAction = { - actionTypeId: 'test-2', - id: 'system_action-id', - params: { - foo: true, - }, - uuid: '123-456', - }; - - it('updates an alert with proper parameters', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateAlertRoute(router, licenseState, docLinks); - - const [config, handler] = router.put.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}"`); - expect(config.options?.access).toBe('public'); - - rulesClient.update.mockResolvedValueOnce(mockedResponse as unknown as SanitizedRule); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - body: { - throttle: null, - name: 'abc', - tags: ['bar'], - schedule: { interval: '12s' }, - params: { - otherField: false, - }, - actions: [ - { - group: 'default', - id: '2', - params: { - baz: true, - }, - }, - ], - notifyWhen: 'onActionGroupChange', - }, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toEqual({ body: mockedResponse }); - - expect(rulesClient.update).toHaveBeenCalledTimes(1); - expect(rulesClient.update.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "data": Object { - "actions": Array [ - Object { - "group": "default", - "id": "2", - "params": Object { - "baz": true, - }, - }, - ], - "name": "abc", - "notifyWhen": "onActionGroupChange", - "params": Object { - "otherField": false, - }, - "schedule": Object { - "interval": "12s", - }, - "tags": Array [ - "bar", - ], - "throttle": null, - }, - "id": "1", - }, - ] - `); - - expect(res.ok).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateAlertRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.put.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the license allows updating alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.put.mock.calls[0]; - - rulesClient.update.mockResolvedValueOnce(mockedResponse as unknown as SanitizedRule); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - body: { - throttle: null, - name: 'abc', - tags: ['bar'], - schedule: { interval: '12s' }, - params: { - otherField: false, - }, - actions: [ - { - group: 'default', - id: '2', - params: { - baz: true, - }, - }, - ], - }, - }, - ['ok'] - ); - - await handler(context, req, res); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('ensures the license check prevents updating alerts', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - (verifyApiAccess as jest.Mock).mockImplementation(() => { - throw new Error('OMG'); - }); - - updateAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.put.mock.calls[0]; - - rulesClient.update.mockResolvedValueOnce(mockedResponse as unknown as SanitizedRule); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - body: { - throttle: null, - name: 'abc', - tags: ['bar'], - schedule: { interval: '12s' }, - params: { - otherField: false, - }, - actions: [ - { - group: 'default', - id: '2', - params: { - baz: true, - }, - }, - ], - }, - }, - ['ok'] - ); - - await expect(handler(context, req, res)).rejects.toMatchInlineSnapshot(`[Error: OMG]`); - - expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); - }); - - it('ensures the alert type gets validated for the license', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateAlertRoute(router, licenseState, docLinks); - - const [, handler] = router.put.mock.calls[0]; - - rulesClient.update.mockRejectedValue(new RuleTypeDisabledError('Fail', 'license_invalid')); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - 'forbidden', - ]); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ body: { message: 'Fail' } }); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - updateAlertRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.put.mock.calls[0]; - rulesClient.update.mockResolvedValueOnce(mockedResponse as unknown as SanitizedRule); - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('update', mockUsageCounter); - }); - - it('does not return system actions', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateAlertRoute(router, licenseState, docLinks); - - const [config, handler] = router.put.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}"`); - - rulesClient.update.mockResolvedValueOnce({ - ...mockedResponse, - systemActions: [systemAction], - } as unknown as SanitizedRule); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - body: { - throttle: null, - name: 'abc', - tags: ['bar'], - schedule: { interval: '12s' }, - params: { - otherField: false, - }, - actions: [ - { - group: 'default', - id: '2', - params: { - baz: true, - }, - }, - ], - notifyWhen: 'onActionGroupChange', - }, - }, - ['ok'] - ); - - expect(await handler(context, req, res)).toEqual({ body: mockedResponse }); - - expect(rulesClient.update).toHaveBeenCalledTimes(1); - expect(rulesClient.update.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "data": Object { - "actions": Array [ - Object { - "group": "default", - "id": "2", - "params": Object { - "baz": true, - }, - }, - ], - "name": "abc", - "notifyWhen": "onActionGroupChange", - "params": Object { - "otherField": false, - }, - "schedule": Object { - "interval": "12s", - }, - "tags": Array [ - "bar", - ], - "throttle": null, - }, - "id": "1", - }, - ] - `); - - expect(res.ok).toHaveBeenCalled(); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateAlertRoute(router, licenseState, docLinks); - - const [config] = router.put.mock.calls[0]; - - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "PUT", - "newApiPath": "/api/alerting/rule/rule/{id}", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/update.ts b/x-pack/plugins/alerting/server/routes/legacy/update.ts deleted file mode 100644 index 3e3d3b5a480f0..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/update.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { validateDurationSchema } from '../../lib'; -import { handleDisabledApiKeysError } from '../lib/error_handler'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { - RuleNotifyWhenType, - LEGACY_BASE_ALERT_API_PATH, - validateNotifyWhenType, -} from '../../../common'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -const bodySchema = schema.object({ - name: schema.string(), - tags: schema.arrayOf(schema.string(), { defaultValue: [] }), - schedule: schema.object({ - interval: schema.string({ validate: validateDurationSchema }), - }), - throttle: schema.nullable(schema.string({ validate: validateDurationSchema })), - params: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), - actions: schema.arrayOf( - schema.object({ - group: schema.string(), - id: schema.string(), - params: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), - actionTypeId: schema.maybe(schema.string()), - }), - { defaultValue: [] } - ), - notifyWhen: schema.nullable(schema.string({ validate: validateNotifyWhenType })), -}); - -export const updateAlertRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.put( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}`, - validate: { - body: bodySchema, - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Update an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'PUT', - newApiPath: '/api/alerting/rule/rule/{id}', - }, - }, - }, - }, - handleDisabledApiKeysError( - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('update', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - const { name, actions, params, schedule, tags, throttle, notifyWhen } = req.body; - try { - const { systemActions, ...alertRes } = await rulesClient.update({ - id, - data: { - name, - actions, - params, - schedule, - tags, - throttle, - notifyWhen: notifyWhen as RuleNotifyWhenType, - }, - }); - return res.ok({ - body: alertRes, - }); - } catch (e) { - if (e instanceof RuleTypeDisabledError) { - return e.sendResponse(res); - } - throw e; - } - }) - ) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/legacy/update_api_key.test.ts b/x-pack/plugins/alerting/server/routes/legacy/update_api_key.test.ts deleted file mode 100644 index cb2817af2ed58..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/update_api_key.test.ts +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { usageCountersServiceMock } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counters_service.mock'; -import { updateApiKeyRoute } from './update_api_key'; -import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../../lib/license_state.mock'; -import { mockHandlerArguments } from '../_mock_handler_arguments'; -import { rulesClientMock } from '../../rules_client.mock'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; -import { docLinksServiceMock } from '@kbn/core/server/mocks'; - -const rulesClient = rulesClientMock.create(); -jest.mock('../../lib/license_api_access', () => ({ - verifyApiAccess: jest.fn(), -})); - -jest.mock('../../lib/track_legacy_route_usage', () => ({ - trackLegacyRouteUsage: jest.fn(), -})); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -describe('updateApiKeyRoute', () => { - const docLinks = docLinksServiceMock.createSetupContract(); - - it('updates api key for an alert', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateApiKeyRoute(router, licenseState, docLinks); - - const [config, handler] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_update_api_key"`); - expect(config.options?.access).toBe('public'); - - rulesClient.updateRuleApiKey.mockResolvedValueOnce(); - - const [context, req, res] = mockHandlerArguments( - { rulesClient }, - { - params: { - id: '1', - }, - }, - ['noContent'] - ); - - expect(await handler(context, req, res)).toEqual(undefined); - - expect(rulesClient.updateRuleApiKey).toHaveBeenCalledTimes(1); - expect(rulesClient.updateRuleApiKey.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Object { - "id": "1", - }, - ] - `); - - expect(res.noContent).toHaveBeenCalled(); - }); - - it('should have internal access for serverless', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateApiKeyRoute(router, licenseState, docLinks, undefined, true); - - const [config] = router.post.mock.calls[0]; - - expect(config.path).toMatchInlineSnapshot(`"/api/alerts/alert/{id}/_update_api_key"`); - expect(config.options?.access).toBe('internal'); - }); - - it('ensures the alert type gets validated for the license', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateApiKeyRoute(router, licenseState, docLinks); - - const [, handler] = router.post.mock.calls[0]; - - rulesClient.updateRuleApiKey.mockRejectedValue( - new RuleTypeDisabledError('Fail', 'license_invalid') - ); - - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - 'forbidden', - ]); - - await handler(context, req, res); - - expect(res.forbidden).toHaveBeenCalledWith({ body: { message: 'Fail' } }); - }); - - it('should track every call', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract(); - const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test'); - - updateApiKeyRoute(router, licenseState, docLinks, mockUsageCounter); - const [, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments({ rulesClient }, { params: {}, body: {} }, [ - 'ok', - ]); - await handler(context, req, res); - expect(trackLegacyRouteUsage).toHaveBeenCalledWith('updateApiKey', mockUsageCounter); - }); - - it('should be deprecated', async () => { - const licenseState = licenseStateMock.create(); - const router = httpServiceMock.createRouter(); - - updateApiKeyRoute(router, licenseState, docLinks); - - const [config] = router.post.mock.calls[0]; - expect(config.options?.deprecated).toMatchInlineSnapshot( - { - documentationUrl: expect.stringMatching(/#breaking-201550$/), - }, - ` - Object { - "documentationUrl": StringMatching /#breaking-201550\\$/, - "reason": Object { - "newApiMethod": "POST", - "newApiPath": "/api/alerting/rule/{id}/_update_api_key", - "type": "migrate", - }, - "severity": "warning", - } - ` - ); - }); -}); diff --git a/x-pack/plugins/alerting/server/routes/legacy/update_api_key.ts b/x-pack/plugins/alerting/server/routes/legacy/update_api_key.ts deleted file mode 100644 index 603a321768573..0000000000000 --- a/x-pack/plugins/alerting/server/routes/legacy/update_api_key.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; -import { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { DocLinksServiceSetup } from '@kbn/core/server'; -import type { AlertingRouter } from '../../types'; -import { ILicenseState } from '../../lib/license_state'; -import { verifyApiAccess } from '../../lib/license_api_access'; -import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; -import { handleDisabledApiKeysError } from '../lib/error_handler'; -import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; -import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; - -const paramSchema = schema.object({ - id: schema.string(), -}); - -export const updateApiKeyRoute = ( - router: AlertingRouter, - licenseState: ILicenseState, - docLinks: DocLinksServiceSetup, - usageCounter?: UsageCounter, - isServerless?: boolean -) => { - router.post( - { - path: `${LEGACY_BASE_ALERT_API_PATH}/alert/{id}/_update_api_key`, - validate: { - params: paramSchema, - }, - options: { - access: isServerless ? 'internal' : 'public', - summary: 'Update the API key for an alert', - tags: ['oas-tag:alerting'], - deprecated: { - documentationUrl: docLinks.links.alerting.legacyRuleApiDeprecations, - severity: 'warning', - reason: { - type: 'migrate', - newApiMethod: 'POST', - newApiPath: '/api/alerting/rule/{id}/_update_api_key', - }, - }, - }, - }, - handleDisabledApiKeysError( - router.handleLegacyErrors(async function (context, req, res) { - verifyApiAccess(licenseState); - if (!context.alerting) { - return res.badRequest({ body: 'RouteHandlerContext is not registered for alerting' }); - } - trackLegacyRouteUsage('updateApiKey', usageCounter); - const alertingContext = await context.alerting; - const rulesClient = await alertingContext.getRulesClient(); - const { id } = req.params; - try { - await rulesClient.updateRuleApiKey({ id }); - return res.noContent(); - } catch (e) { - if (e instanceof RuleTypeDisabledError) { - return e.sendResponse(res); - } - throw e; - } - }) - ) - ); -}; diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/aggregate/aggregate_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/aggregate/aggregate_rules_route.ts index 05c5fc2167e11..13cc8fb7d816c 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/aggregate/aggregate_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/aggregate/aggregate_rules_route.ts @@ -21,6 +21,7 @@ import { import { formatDefaultAggregationResult } from './transforms'; import { transformAggregateQueryRequestV1, transformAggregateBodyResponseV1 } from './transforms'; import { DefaultRuleAggregationResult } from './types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const aggregateRulesRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -30,6 +31,7 @@ export const aggregateRulesRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_aggregate`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: aggregateRulesRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_delete/bulk_delete_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_delete/bulk_delete_rules_route.ts index 8548464d44812..8dc14d5d7cba0 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_delete/bulk_delete_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_delete/bulk_delete_rules_route.ts @@ -17,6 +17,7 @@ import { import type { RuleParamsV1 } from '../../../../../common/routes/rule/response'; import { transformRuleToRuleResponseV1 } from '../../transforms'; import { Rule } from '../../../../application/rule/types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkDeleteRulesRoute = ({ router, @@ -28,6 +29,7 @@ export const bulkDeleteRulesRoute = ({ router.patch( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_bulk_delete`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkDeleteRulesRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_disable/bulk_disable_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_disable/bulk_disable_rules_route.ts index 315904efa40a7..4a047a120b06b 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_disable/bulk_disable_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_disable/bulk_disable_rules_route.ts @@ -18,6 +18,7 @@ import { import type { RuleParamsV1 } from '../../../../../common/routes/rule/response'; import { Rule } from '../../../../application/rule/types'; import { transformRuleToRuleResponseV1 } from '../../transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkDisableRulesRoute = ({ router, @@ -29,6 +30,7 @@ export const bulkDisableRulesRoute = ({ router.patch( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_bulk_disable`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkDisableRulesRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_edit/bulk_edit_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_edit/bulk_edit_rules_route.ts index f516b63031aad..27c1730ed695e 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_edit/bulk_edit_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_edit/bulk_edit_rules_route.ts @@ -22,6 +22,7 @@ import { Rule } from '../../../../application/rule/types'; import { transformRuleToRuleResponseV1 } from '../../transforms'; import { validateRequiredGroupInDefaultActionsV1 } from '../../validation'; import { transformOperationsV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; interface BuildBulkEditRulesRouteParams { licenseState: ILicenseState; @@ -33,6 +34,7 @@ const buildBulkEditRulesRoute = ({ licenseState, path, router }: BuildBulkEditRu router.post( { path, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkEditRulesRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_enable/bulk_enable_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_enable/bulk_enable_rules_route.ts index 71932cb6d78bb..fe91eafe82b59 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_enable/bulk_enable_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_enable/bulk_enable_rules_route.ts @@ -16,6 +16,7 @@ import { } from '../../../../../common/routes/rule/apis/bulk_enable'; import { RuleParamsV1 } from '../../../../../common/routes/rule/response'; import { transformBulkEnableResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkEnableRulesRoute = ({ router, @@ -27,6 +28,7 @@ export const bulkEnableRulesRoute = ({ router.patch( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_bulk_enable`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkEnableBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack/bulk_untrack_alerts_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack/bulk_untrack_alerts_route.ts index a43cc48d95631..48619a040ebc4 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack/bulk_untrack_alerts_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack/bulk_untrack_alerts_route.ts @@ -13,6 +13,7 @@ import { transformBulkUntrackAlertsBodyV1 } from './transforms'; import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkUntrackAlertsRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const bulkUntrackAlertsRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/alerts/_bulk_untrack`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkUntrackBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack_by_query/bulk_untrack_alerts_by_query_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack_by_query/bulk_untrack_alerts_by_query_route.ts index 735cd75b7f4a9..9f3bdfe959e38 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack_by_query/bulk_untrack_alerts_by_query_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack_by_query/bulk_untrack_alerts_by_query_route.ts @@ -14,6 +14,7 @@ import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformBulkUntrackAlertsByQueryBodyV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkUntrackAlertsByQueryRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const bulkUntrackAlertsByQueryRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/alerts/_bulk_untrack_by_query`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkUntrackByQueryBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/clone/clone_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/clone/clone_rule_route.ts index 0aa23886a9b4a..cf483de6a62c5 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/clone/clone_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/clone/clone_rule_route.ts @@ -17,6 +17,7 @@ import { import type { RuleParamsV1 } from '../../../../../common/routes/rule/response'; import { Rule } from '../../../../application/rule/types'; import { transformRuleToRuleResponseV1 } from '../../transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const cloneRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -25,6 +26,7 @@ export const cloneRuleRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_clone/{newId?}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { params: cloneRuleRequestParamsSchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/create/create_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/create/create_rule_route.ts index 26775ad0f98d4..72b4a4c897f1f 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/create/create_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/create/create_rule_route.ts @@ -19,6 +19,7 @@ import { RuleParamsV1, ruleResponseSchemaV1 } from '../../../../../common/routes import { Rule } from '../../../../application/rule/types'; import { RuleTypeDisabledError } from '../../../../lib'; import { BASE_ALERTING_API_PATH } from '../../../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; import { countUsageOfPredefinedIds, handleDisabledApiKeysError, @@ -32,6 +33,7 @@ export const createRuleRoute = ({ router, licenseState, usageCounter }: RouteOpt router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id?}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Create a rule`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts index e1e09403b309a..9fb4fd05bfb08 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts @@ -13,6 +13,7 @@ import { DeleteRuleRequestParamsV1, } from '../../../../../common/routes/rule/apis/delete'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const deleteRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const deleteRuleRoute = ( router.delete( { path: `${BASE_ALERTING_API_PATH}/rule/{id}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Delete a rule`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/disable/disable_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/disable/disable_rule_route.ts index e364bc130121d..38451802d660f 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/disable/disable_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/disable/disable_rule_route.ts @@ -15,6 +15,7 @@ import { import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; import { verifyAccessAndContext } from '../../../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const disableRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -23,6 +24,7 @@ export const disableRuleRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_disable`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: 'Disable a rule', diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/enable/enable_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/enable/enable_rule_route.ts index e5f0983bf844b..1d68c5b922f22 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/enable/enable_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/enable/enable_rule_route.ts @@ -14,6 +14,7 @@ import { EnableRuleRequestParamsV1, enableRuleRequestParamsSchemaV1, } from '../../../../../common/routes/rule/apis/enable'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const enableRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, licenseState: ILicenseState @@ -21,6 +22,7 @@ export const enableRuleRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_enable`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: 'Enable a rule', diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/find/find_internal_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/find/find_internal_rules_route.ts index 0117d86468f2a..573c6eba399b0 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/find/find_internal_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/find/find_internal_rules_route.ts @@ -21,6 +21,7 @@ import { import { verifyAccessAndContext } from '../../../lib'; import { trackLegacyTerminology } from '../../../lib/track_legacy_terminology'; import { transformFindRulesInternalBodyV1, transformFindRulesResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const findInternalRulesRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -30,6 +31,7 @@ export const findInternalRulesRoute = ( router.post( { path: INTERNAL_ALERTING_API_FIND_RULES_PATH, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: findRulesInternalRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/find/find_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/find/find_rules_route.ts index 37ea13c7983e6..e24e58a63aa7d 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/find/find_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/find/find_rules_route.ts @@ -18,6 +18,7 @@ import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../ import { verifyAccessAndContext } from '../../../lib'; import { trackLegacyTerminology } from '../../../lib/track_legacy_terminology'; import { transformFindRulesBodyV1, transformFindRulesResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const findRulesRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -27,6 +28,7 @@ export const findRulesRoute = ( router.get( { path: `${BASE_ALERTING_API_PATH}/rules/_find`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: 'Get information about rules', diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/get/get_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/get/get_rule_route.ts index 46ccc00e33626..9119eae249db1 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/get/get_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/get/get_rule_route.ts @@ -22,6 +22,7 @@ import type { GetRuleResponseV1, } from '../../../../../common/routes/rule/apis/get'; import { getRuleRequestParamsSchemaV1 } from '../../../../../common/routes/rule/apis/get'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; interface BuildGetRulesRouteParams { licenseState: ILicenseState; @@ -41,6 +42,7 @@ const buildGetRuleRoute = ({ { path, options, + security: DEFAULT_ALERTING_ROUTE_SECURITY, validate: { request: { params: getRuleRequestParamsSchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.test.ts b/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.test.ts index a91a2b2728580..87eb61d320930 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.test.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.test.ts @@ -38,6 +38,12 @@ describe('getScheduleFrequencyRoute', () => { "access": "internal", }, "path": "/internal/alerting/rules/_schedule_frequency", + "security": Object { + "authz": Object { + "enabled": false, + "reason": "This route is opted out from authorization because alerting uses it's own authorization model inside the alerts client.", + }, + }, "validate": Object {}, } `); diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.ts index b91c0841df911..b0831aeee3790 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.ts @@ -11,6 +11,7 @@ import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { GetScheduleFrequencyResponseV1 } from '../../../../../common/routes/rule/apis/get_schedule_frequency'; import { transformGetScheduleFrequencyResultV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const getScheduleFrequencyRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -19,6 +20,7 @@ export const getScheduleFrequencyRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_schedule_frequency`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: {}, }, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/list_types/rule_types.ts b/x-pack/plugins/alerting/server/routes/rule/apis/list_types/rule_types.ts index a49820704d74a..ddc3bf25467ff 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/list_types/rule_types.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/list_types/rule_types.ts @@ -14,6 +14,7 @@ import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; import { transformRuleTypesResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const ruleTypesRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const ruleTypesRoute = ( router.get( { path: `${BASE_ALERTING_API_PATH}/rule_types`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Get the rule types`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/mute_alert/mute_alert.ts b/x-pack/plugins/alerting/server/routes/rule/apis/mute_alert/mute_alert.ts index f9b7fa8bfbf0e..8df34e052ae4a 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/mute_alert/mute_alert.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/mute_alert/mute_alert.ts @@ -13,6 +13,7 @@ import { muteAlertParamsSchemaV1, MuteAlertRequestParamsV1, } from '../../../../../common/routes/rule/apis/mute_alert'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const muteAlertRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const muteAlertRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{rule_id}/alert/{alert_id}/_mute`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Mute an alert`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/mute_all/mute_all_rule.ts b/x-pack/plugins/alerting/server/routes/rule/apis/mute_all/mute_all_rule.ts index 46f108cb3a94e..d34e589188bb2 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/mute_all/mute_all_rule.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/mute_all/mute_all_rule.ts @@ -15,6 +15,7 @@ import { muteAllRuleRequestParamsSchemaV1, MuteAllRuleRequestParamsV1, } from '../../../../../common/routes/rule/apis/mute_all'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const muteAllRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -24,6 +25,7 @@ export const muteAllRuleRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_mute_all`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Mute all alerts`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/resolve/resolve_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/resolve/resolve_rule_route.ts index ad0e846d452e5..bf5eef6add064 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/resolve/resolve_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/resolve/resolve_rule_route.ts @@ -17,6 +17,7 @@ import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformResolveResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export type ResolveRuleRequestParamsV1 = TypeOf<typeof resolveParamsSchemaV1>; @@ -27,6 +28,7 @@ export const resolveRuleRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_resolve`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { params: resolveParamsSchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/snooze/snooze_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/snooze/snooze_rule_route.ts index 3e0e22070d672..d7c93e76b7e3e 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/snooze/snooze_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/snooze/snooze_rule_route.ts @@ -15,6 +15,7 @@ import { ILicenseState, RuleMutedError } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_ALERTING_SNOOZE_RULE } from '../../../../types'; import { transformSnoozeBodyV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export type SnoozeRuleRequestParamsV1 = TypeOf<typeof snoozeParamsSchema>; @@ -25,6 +26,7 @@ export const snoozeRuleRoute = ( router.post( { path: INTERNAL_ALERTING_SNOOZE_RULE, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { params: snoozeParamsSchema, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/tags/get_rule_tags.ts b/x-pack/plugins/alerting/server/routes/rule/apis/tags/get_rule_tags.ts index 05e4433f5e53d..5cebefb96b9fd 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/tags/get_rule_tags.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/tags/get_rule_tags.ts @@ -14,6 +14,7 @@ import { import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const getRuleTagsRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const getRuleTagsRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_tags`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { query: ruleTagsRequestQuerySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/unmute_alert/unmute_alert_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/unmute_alert/unmute_alert_route.ts index 34108b937cc43..0dbd6089e54e4 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/unmute_alert/unmute_alert_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/unmute_alert/unmute_alert_route.ts @@ -14,6 +14,7 @@ import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; import { verifyAccessAndContext } from '../../../lib'; import { transformRequestParamsToApplicationV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const unmuteAlertRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const unmuteAlertRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{rule_id}/alert/{alert_id}/_unmute`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Unmute an alert`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/unmute_all/unmute_all_rule.ts b/x-pack/plugins/alerting/server/routes/rule/apis/unmute_all/unmute_all_rule.ts index bf9d1660d0def..28bb319009946 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/unmute_all/unmute_all_rule.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/unmute_all/unmute_all_rule.ts @@ -13,6 +13,7 @@ import { unmuteAllRuleRequestParamsSchemaV1, UnmuteAllRuleRequestParamsV1, } from '../../../../../common/routes/rule/apis/unmute_all'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const unmuteAllRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const unmuteAllRuleRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_unmute_all`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Unmute all alerts`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/unsnooze/unsnooze_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/unsnooze/unsnooze_rule_route.ts index e5f476cbb2038..e0ac5df1d8dc8 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/unsnooze/unsnooze_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/unsnooze/unsnooze_rule_route.ts @@ -15,6 +15,7 @@ import { ILicenseState, RuleMutedError } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformUnsnoozeBodyV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export type UnsnoozeRuleRequestParamsV1 = TypeOf<typeof unsnoozeParamsSchema>; @@ -25,6 +26,7 @@ export const unsnoozeRuleRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_unsnooze`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { params: unsnoozeParamsSchema, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts index 8fee470cb3bd7..b8181ac9aff3d 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts @@ -23,6 +23,7 @@ import { handleDisabledApiKeysError, verifyAccessAndContext } from '../../../lib import { transformRuleToRuleResponseV1 } from '../../transforms'; import { validateRequiredGroupInDefaultActionsV1 } from '../../validation'; import { transformUpdateBodyV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const updateRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -31,6 +32,7 @@ export const updateRuleRoute = ( router.put( { path: `${BASE_ALERTING_API_PATH}/rule/{id}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Update a rule`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/update_api_key/update_rule_api_key_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/update_api_key/update_rule_api_key_route.ts index 4f16d873dfaa8..f306242ebb9ec 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/update_api_key/update_rule_api_key_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/update_api_key/update_rule_api_key_route.ts @@ -13,6 +13,7 @@ import { import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; import { verifyAccessAndContext } from '../../../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const updateRuleApiKeyRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const updateRuleApiKeyRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_update_api_key`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: 'Update the API key for a rule', diff --git a/x-pack/plugins/alerting/server/routes/run_soon.ts b/x-pack/plugins/alerting/server/routes/run_soon.ts index 1b7fa271c9587..9d0024f090cb6 100644 --- a/x-pack/plugins/alerting/server/routes/run_soon.ts +++ b/x-pack/plugins/alerting/server/routes/run_soon.ts @@ -10,6 +10,7 @@ import { schema } from '@kbn/config-schema'; import { ILicenseState } from '../lib'; import { verifyAccessAndContext } from './lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -22,6 +23,7 @@ export const runSoonRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_run_soon`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/suggestions/fields_rules.ts b/x-pack/plugins/alerting/server/routes/suggestions/fields_rules.ts index f3201d961e684..4b8ffa8e67e66 100644 --- a/x-pack/plugins/alerting/server/routes/suggestions/fields_rules.ts +++ b/x-pack/plugins/alerting/server/routes/suggestions/fields_rules.ts @@ -21,6 +21,7 @@ import { IndexPatternsFetcher } from '@kbn/data-plugin/server'; import { verifyAccessAndContext } from '../lib'; import { ILicenseState } from '../../lib'; import { AlertingRequestHandlerContext } from '../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; export function registerFieldsRoute( router: IRouter<AlertingRequestHandlerContext>, @@ -30,6 +31,7 @@ export function registerFieldsRoute( router.post( { path: '/internal/rules/saved_objects/fields', + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: schema.nullable( diff --git a/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.ts b/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.ts index 25dc8add03abf..5ad7e7a8ac437 100644 --- a/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.ts +++ b/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.ts @@ -25,6 +25,7 @@ import { } from '../../authorization'; import { AlertingRequestHandlerContext } from '../../types'; import { GetAlertIndicesAlias, ILicenseState } from '../../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const alertingAuthorizationFilterOpts: AlertingAuthorizationFilterOpts = { type: AlertingAuthorizationFilterType.ESDSL, @@ -49,6 +50,7 @@ export function registerAlertsValueSuggestionsRoute( router.post( { path: '/internal/alerts/suggestions/values', + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: AlertsSuggestionsSchema, }, diff --git a/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.ts b/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.ts index 420d6473988fa..1f33cba025396 100644 --- a/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.ts +++ b/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.ts @@ -25,6 +25,7 @@ import { AlertingAuthorizationFilterType, } from '../../authorization'; import { RuleAuditAction, ruleAuditEvent } from '../../rules_client/common/audit_events'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const alertingAuthorizationFilterOpts: AlertingAuthorizationFilterOpts = { type: AlertingAuthorizationFilterType.ESDSL, @@ -49,6 +50,7 @@ export function registerRulesValueSuggestionsRoute( router.post( { path: '/internal/rules/suggestions/values', + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: RulesSuggestionsSchema, }, diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts index bbe927833afd0..4fc02d24fff47 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts @@ -2492,85 +2492,6 @@ describe('Task Runner', () => { expect(mockUsageCounter.incrementCounter).not.toHaveBeenCalled(); }); - test('successfully executes the task with ephemeral tasks enabled', async () => { - const taskRunner = new TaskRunner({ - ruleType, - internalSavedObjectsRepository, - taskInstance: { - ...mockedTaskInstance, - state: { - ...mockedTaskInstance.state, - previousStartedAt: new Date(Date.now() - 5 * 60 * 1000).toISOString(), - }, - }, - context: { - ...taskRunnerFactoryInitializerParams, - }, - inMemoryMetrics, - }); - expect(AlertingEventLogger).toHaveBeenCalled(); - - mockGetAlertFromRaw.mockReturnValue(mockedRuleTypeSavedObject as Rule); - encryptedSavedObjectsClient.getDecryptedAsInternalUser.mockResolvedValue(mockedRawRuleSO); - const runnerResult = await taskRunner.run(); - expect(runnerResult).toEqual(generateRunnerResult({ state: true, history: [true] })); - expect(ruleType.executor).toHaveBeenCalledTimes(1); - const call = ruleType.executor.mock.calls[0][0]; - expect(call.params).toEqual({ bar: true }); - expect(call.startedAt).toEqual(new Date(DATE_1970)); - expect(call.previousStartedAt).toEqual(new Date(DATE_1970_5_MIN)); - expect(call.state).toEqual({}); - expect(call.rule).not.toBe(null); - expect(call.rule.id).toBe('1'); - expect(call.rule.name).toBe(RULE_NAME); - expect(call.rule.tags).toEqual(['rule-', '-tags']); - expect(call.rule.consumer).toBe('bar'); - expect(call.rule.enabled).toBe(true); - expect(call.rule.schedule).toEqual({ interval: '10s' }); - expect(call.rule.createdBy).toBe('rule-creator'); - expect(call.rule.updatedBy).toBe('rule-updater'); - expect(call.rule.createdAt).toBe(mockDate); - expect(call.rule.updatedAt).toBe(mockDate); - expect(call.rule.notifyWhen).toBe('onActiveAlert'); - expect(call.rule.throttle).toBe(null); - expect(call.rule.producer).toBe('alerts'); - expect(call.rule.ruleTypeId).toBe('test'); - expect(call.rule.ruleTypeName).toBe('My test rule'); - expect(call.rule.actions).toEqual(RULE_ACTIONS); - expect(call.services.alertFactory.create).toBeTruthy(); - expect(call.services.scopedClusterClient).toBeTruthy(); - expect(call.services).toBeTruthy(); - - expect(logger.debug).toHaveBeenCalledTimes(5); - expect(logger.debug).nthCalledWith(1, 'executing rule test:1 at 1970-01-01T00:00:00.000Z', { - tags: ['1', 'test'], - }); - expect(logger.debug).nthCalledWith( - 2, - 'deprecated ruleRunStatus for test:1: {"lastExecutionDate":"1970-01-01T00:00:00.000Z","status":"ok"}', - { tags: ['1', 'test'] } - ); - expect(logger.debug).nthCalledWith( - 3, - 'ruleRunStatus for test:1: {"outcome":"succeeded","outcomeOrder":0,"outcomeMsg":null,"warning":null,"alertsCount":{"active":0,"new":0,"recovered":0,"ignored":0}}', - { tags: ['1', 'test'] } - ); - expect(logger.debug).nthCalledWith( - 4, - 'ruleRunMetrics for test:1: {"numSearches":3,"totalSearchDurationMs":23423,"esSearchDurationMs":33,"numberOfTriggeredActions":0,"numberOfGeneratedActions":0,"numberOfActiveAlerts":0,"numberOfRecoveredAlerts":0,"numberOfNewAlerts":0,"numberOfDelayedAlerts":0,"hasReachedAlertLimit":false,"hasReachedQueuedActionsLimit":false,"triggeredActionsStatus":"complete"}', - { tags: ['1', 'test'] } - ); - - testAlertingEventLogCalls({ - status: 'ok', - }); - - expect(elasticsearchService.client.asInternalUser.update).toHaveBeenCalledWith( - ...generateRuleUpdateParams({}) - ); - expect(mockUsageCounter.incrementCounter).not.toHaveBeenCalled(); - }); - test('successfully stores successful runs', async () => { const taskRunner = new TaskRunner({ ruleType, diff --git a/x-pack/plugins/asset_inventory/tsconfig.json b/x-pack/plugins/asset_inventory/tsconfig.json deleted file mode 100644 index dc669eb3a6943..0000000000000 --- a/x-pack/plugins/asset_inventory/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*.ts", - "common/**/*.json", - "public/**/*.ts", - "public/**/*.tsx", - "public/**/*.json", - "server/**/*.ts", - "server/**/*.json", - "../../../typings/**/*" - ], - "exclude": ["target/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/i18n-react", - "@kbn/shared-ux-router", - "@kbn/securitysolution-es-utils" - ] -} diff --git a/x-pack/plugins/cases/public/common/lib/kibana/services.ts b/x-pack/plugins/cases/public/common/lib/kibana/services.ts index 1d2149bae811c..d10f8a83cd59d 100644 --- a/x-pack/plugins/cases/public/common/lib/kibana/services.ts +++ b/x-pack/plugins/cases/public/common/lib/kibana/services.ts @@ -9,7 +9,7 @@ import type { CoreStart } from '@kbn/core/public'; import type { CasesUiConfigType } from '../../../../common/ui/types'; import type { CasesPublicStartDependencies } from '../../../types'; -type GlobalServices = Pick<CoreStart, 'application' | 'http' | 'theme'> & +type GlobalServices = Pick<CoreStart, 'application' | 'http' | 'theme' | 'userProfile'> & Pick<CasesPublicStartDependencies, 'serverless'>; export class KibanaServices { @@ -23,12 +23,12 @@ export class KibanaServices { http, serverless, kibanaVersion, - theme, + ...startServices }: GlobalServices & { kibanaVersion: string; config: CasesUiConfigType; }) { - this.services = { application, http, theme, serverless }; + this.services = { application, http, serverless, ...startServices }; this.kibanaVersion = kibanaVersion; this.config = config; } diff --git a/x-pack/plugins/cases/public/common/mock/test_providers.tsx b/x-pack/plugins/cases/public/common/mock/test_providers.tsx index 257ac4b1f8293..2e96f1e3633cb 100644 --- a/x-pack/plugins/cases/public/common/mock/test_providers.tsx +++ b/x-pack/plugins/cases/public/common/mock/test_providers.tsx @@ -99,7 +99,7 @@ const TestProvidersComponent: React.FC<TestProviderProps> = ({ }; return ( - <KibanaRenderContextProvider i18n={coreStart.i18n} theme={coreStart.theme}> + <KibanaRenderContextProvider {...coreStart}> <KibanaContextProvider services={services}> <MemoryRouter> <CasesProvider value={casesProviderValue} queryClient={queryClient}> @@ -178,7 +178,7 @@ export const createAppMockRenderer = ({ getFilesClient, }; const AppWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => ( - <KibanaRenderContextProvider i18n={coreStart.i18n} theme={coreStart.theme}> + <KibanaRenderContextProvider {...coreStart}> <KibanaContextProvider services={services}> <MemoryRouter> <CasesProvider value={casesProviderValue} queryClient={queryClient}> diff --git a/x-pack/plugins/cases/public/common/use_cases_toast.tsx b/x-pack/plugins/cases/public/common/use_cases_toast.tsx index 71a9e3add1ae4..05c8e2f186a8b 100644 --- a/x-pack/plugins/cases/public/common/use_cases_toast.tsx +++ b/x-pack/plugins/cases/public/common/use_cases_toast.tsx @@ -106,7 +106,7 @@ const getErrorMessage = (error: Error | ServerError): string => { export const useCasesToast = () => { const { appId } = useApplication(); - const { application, i18n, theme } = useKibana().services; + const { application, i18n, theme, userProfile } = useKibana().services; const { getUrlForApp, navigateToUrl } = application; const toasts = useToasts(); @@ -148,13 +148,13 @@ export const useCasesToast = () => { return toasts.addSuccess({ color: 'success', iconType: 'check', - title: toMountPoint(<TruncatedText text={renderTitle} />, { i18n, theme }), + title: toMountPoint(<TruncatedText text={renderTitle} />, { i18n, theme, userProfile }), text: toMountPoint( <CaseToastSuccessContent content={renderContent} onViewCaseClick={url != null ? onViewCaseClick : undefined} />, - { i18n, theme } + { i18n, theme, userProfile } ), }); }, @@ -177,7 +177,7 @@ export const useCasesToast = () => { }); }, }), - [i18n, theme, appId, getUrlForApp, navigateToUrl, toasts] + [i18n, theme, userProfile, appId, getUrlForApp, navigateToUrl, toasts] ); }; diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx index add06a7badb22..e5f931492dabd 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx @@ -29,7 +29,7 @@ const ActionWrapperWithContext: React.FC<PropsWithChildren<Props>> = ({ casesActionContextProps, currentAppId, }) => { - const { application, i18n, theme } = useKibana().services; + const { application, ...startServices } = useKibana().services; const owner = getCaseOwnerByAppId(currentAppId); const casePermissions = canUseCases(application.capabilities)(owner ? [owner] : undefined); @@ -37,7 +37,7 @@ const ActionWrapperWithContext: React.FC<PropsWithChildren<Props>> = ({ const syncAlerts = owner === SECURITY_SOLUTION_OWNER; return ( - <KibanaRenderContextProvider i18n={i18n} theme={theme}> + <KibanaRenderContextProvider {...startServices}> <CasesProvider value={{ ...casesActionContextProps, diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.test.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.test.tsx index e8fc0b6f16951..d701635cbbbec 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.test.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.test.tsx @@ -113,7 +113,7 @@ describe('openModal', () => { }); }); - it('should have correct onClose handler - when close modal clicked', () => { + it('should have correct onClose handler - when close modal clicked', async () => { openModal( getMockLensApi(), 'myAppId', @@ -121,12 +121,14 @@ describe('openModal', () => { getMockServices() ); - const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; - onClose(); - expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + await waitFor(() => { + const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; + onClose(); + expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + }); }); - it('should have correct onClose handler - when case selected', () => { + it('should have correct onClose handler - when case selected', async () => { openModal( getMockLensApi(), 'myAppId', @@ -134,12 +136,14 @@ describe('openModal', () => { getMockServices() ); - const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; - onClose({ id: 'case-id', title: 'case-title' }); - expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + await waitFor(() => { + const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; + onClose({ id: 'case-id', title: 'case-title' }); + expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + }); }); - it('should have correct onClose handler - when case created', () => { + it('should have correct onClose handler - when case created', async () => { openModal( getMockLensApi(), 'myAppId', @@ -147,12 +151,14 @@ describe('openModal', () => { getMockServices() ); - const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; - onClose(null, true); - expect(unmountComponentAtNode as jest.Mock).not.toHaveBeenCalled(); + await waitFor(() => { + const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; + onClose(null, true); + expect(unmountComponentAtNode as jest.Mock).not.toHaveBeenCalled(); + }); }); - it('should have correct onSuccess handler', () => { + it('should have correct onSuccess handler', async () => { openModal( getMockLensApi(), 'myAppId', @@ -160,9 +166,11 @@ describe('openModal', () => { getMockServices() ); - const onSuccess = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onSuccess; - onSuccess(); - expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + await waitFor(() => { + const onSuccess = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onSuccess; + onSuccess(); + expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + }); }); it('should open modal with an attachment with the time range in absolute values', async () => { diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.tsx index c781098b44b57..13ccbd28333ea 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.tsx @@ -88,7 +88,7 @@ export function openModal( > <AddExistingCaseModalWrapper lensApi={lensApi} onClose={onClose} onSuccess={onSuccess} /> </ActionWrapper>, - { i18n: services.core.i18n, theme: services.core.theme } + services.core ); mount(targetDomElement); diff --git a/x-pack/plugins/cases/server/routes/api/configure/get_connectors.ts b/x-pack/plugins/cases/server/routes/api/configure/get_connectors.ts index a11af001480e6..41484a60a4f5b 100644 --- a/x-pack/plugins/cases/server/routes/api/configure/get_connectors.ts +++ b/x-pack/plugins/cases/server/routes/api/configure/get_connectors.ts @@ -5,7 +5,10 @@ * 2.0. */ -import { CASE_CONFIGURE_CONNECTORS_URL } from '../../../../common/constants'; +import { + CASE_CONFIGURE_CONNECTORS_URL, + GET_CONNECTORS_CONFIGURE_API_TAG, +} from '../../../../common/constants'; import { createCaseError } from '../../../common/error'; import { createCasesRoute } from '../create_cases_route'; @@ -15,8 +18,13 @@ import { createCasesRoute } from '../create_cases_route'; export const getConnectorsRoute = createCasesRoute({ method: 'get', path: `${CASE_CONFIGURE_CONNECTORS_URL}/_find`, + security: { + authz: { + requiredPrivileges: [GET_CONNECTORS_CONFIGURE_API_TAG], + }, + }, routerOptions: { - tags: ['access:casesGetConnectorsConfigure', 'oas-tag:cases'], + tags: ['oas-tag:cases'], access: 'public', summary: 'Get case connectors', description: 'Retrieves information about connectors that are supported for use in cases.', diff --git a/x-pack/plugins/cases/server/routes/api/internal/suggest_user_profiles.ts b/x-pack/plugins/cases/server/routes/api/internal/suggest_user_profiles.ts index 79a3b4588d6a5..36e533274de36 100644 --- a/x-pack/plugins/cases/server/routes/api/internal/suggest_user_profiles.ts +++ b/x-pack/plugins/cases/server/routes/api/internal/suggest_user_profiles.ts @@ -7,7 +7,10 @@ import type { KibanaRequest } from '@kbn/core-http-server'; import type { UserProfileService } from '../../../services'; -import { INTERNAL_SUGGEST_USER_PROFILES_URL } from '../../../../common/constants'; +import { + INTERNAL_SUGGEST_USER_PROFILES_URL, + SUGGEST_USER_PROFILES_API_TAG, +} from '../../../../common/constants'; import { createCaseError } from '../../../common/error'; import { createCasesRoute } from '../create_cases_route'; import { escapeHatch } from '../utils'; @@ -17,8 +20,12 @@ export const suggestUserProfilesRoute = (userProfileService: UserProfileService) createCasesRoute({ method: 'post', path: INTERNAL_SUGGEST_USER_PROFILES_URL, + security: { + authz: { + requiredPrivileges: [SUGGEST_USER_PROFILES_API_TAG], + }, + }, routerOptions: { - tags: ['access:casesSuggestUserProfiles'], access: 'internal', }, params: { diff --git a/x-pack/plugins/cloud_defend/README.md b/x-pack/plugins/cloud_defend/README.md deleted file mode 100755 index 9df1a13d328d2..0000000000000 --- a/x-pack/plugins/cloud_defend/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# Cloud Defend (for containers) - -This plugin currently only exists to provide custom fleet policy UX for a set of new BPF LSM features. The first feature being container "drift prevention". - -Drift prevention is a way to block when executables are created or modified. Our agent service detects these events, and applies a set of selectors and responses configured to either block, alert or both. - -## Example configuration -``` -selectors: - # default selector (user can modify or remove if they want) - - name: default - operation: [createExecutable, modifyExecutable, execMemFd] - - # example custom selector - - name: nginxOnly - containerImageName: - - nginx - - # example selector used for exclude - - name: excludeCustomNginxBuild - containerImageTag: - - staging - -# responses are evaluated from top to bottom -# only the first response with a match will run its actions -responses: - - match: [nginxOnly] - exclude: [excludeCustomNginxBuild] - actions: [alert, block] - - # default response - # delete this if no default response needed - - match: [default] - actions: [alert] -``` - ---- - -## Development - -## pre commit checks - -``` -node scripts/type_check.js --project x-pack/plugins/cloud_defend/tsconfig.json -node scripts/eslint.js x-pack/plugins/cloud_defend -yarn test:jest x-pack/plugins/cloud_defend -``` - -See the [kibana contributing guide](https://github.com/elastic/kibana/blob/main/CONTRIBUTING.md) for instructions setting up your development environment. diff --git a/x-pack/plugins/cloud_defend/jest.config.js b/x-pack/plugins/cloud_defend/jest.config.js deleted file mode 100644 index 144b2f1ad9e19..0000000000000 --- a/x-pack/plugins/cloud_defend/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/** @type {import('@jest/types').Config.InitialOptions} */ -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/cloud_defend'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/cloud_defend', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/cloud_defend/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/cloud_defend/public/common/navigation/types.ts b/x-pack/plugins/cloud_defend/public/common/navigation/types.ts deleted file mode 100644 index 38906f645536f..0000000000000 --- a/x-pack/plugins/cloud_defend/public/common/navigation/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -export interface CloudDefendNavigationItem { - readonly name: string; - readonly path: string; - readonly disabled?: boolean; -} - -export interface CloudDefendPageNavigationItem extends CloudDefendNavigationItem { - id: CloudDefendPageId; -} - -export type CloudDefendPage = 'policies' | 'dashboard'; - -/** - * All the IDs for the cloud defend pages. - * This needs to match the cloud defend page entries in `SecurityPageName` in `x-pack/plugins/security_solution/common/constants.ts`. - */ -export type CloudDefendPageId = 'cloud_defend-policies' | 'kubernetes_security-dashboard'; diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view_response/index.tsx b/x-pack/plugins/cloud_defend/public/components/control_general_view_response/index.tsx deleted file mode 100644 index 1c782973dd0ed..0000000000000 --- a/x-pack/plugins/cloud_defend/public/components/control_general_view_response/index.tsx +++ /dev/null @@ -1,421 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React, { useMemo, useState, useCallback, ChangeEvent, useEffect } from 'react'; -import { - EuiCallOut, - EuiIcon, - EuiToolTip, - EuiText, - EuiBadge, - EuiAccordion, - EuiFlexGroup, - EuiFlexItem, - EuiButtonIcon, - EuiButtonEmpty, - EuiPopover, - EuiContextMenuPanel, - EuiContextMenuItem, - EuiForm, - EuiFormRow, - EuiComboBox, - EuiCheckbox, - EuiComboBoxOptionOption, - EuiSpacer, - euiPaletteColorBlindBehindText, - useEuiTheme, -} from '@elastic/eui'; -import { useStyles } from './styles'; -import { useStyles as useSelectorStyles } from '../control_general_view_selector/styles'; -import { ControlGeneralViewResponseDeps, ControlFormErrorMap } from '../../types'; -import { Response, ResponseAction } from '../../../common'; -import * as i18n from '../control_general_view/translations'; -import { - getSelectorTypeIcon, - validateBlockRestrictions, - selectorsIncludeConditionsForFIMOperationsUsingSlashStarStar, -} from '../../common/utils'; - -// max number of names to show in title (in collapsed state) -// selectorA, selectorB, selectorC, selectorD [+5] -const titleThreshold = 4; -const titleThresholdCollapsed = 2; - -const ACTION_ID_REGEX = /response_\d+_(.*)/; - -export const ControlGeneralViewResponse = ({ - response, - selectors, - responses, - index, - onRemove, - onDuplicate, - onChange, -}: ControlGeneralViewResponseDeps) => { - const { - euiTheme: { colors }, - } = useEuiTheme(); - const [isPopoverOpen, setPopoverOpen] = useState(false); - const styles = useStyles(); - const selectorStyles = useSelectorStyles(); - const visColorsBehindText = euiPaletteColorBlindBehindText(); - const [accordionState, setAccordionState] = useState<'open' | 'closed'>( - responses.length - 1 === index ? 'open' : 'closed' - ); - - const logSelected = response.actions?.includes('log'); - const alertSelected = response.actions?.includes('alert'); - const blockSelected = response.actions?.includes('block'); - - const warnFIMUsingSlashStarStar = useMemo( - () => - blockSelected && - selectorsIncludeConditionsForFIMOperationsUsingSlashStarStar(selectors, response.match), - [blockSelected, response.match, selectors] - ); - - const errors = useMemo(() => { - const errs: ControlFormErrorMap = {}; - - if (response.match.length === 0) { - errs.match = [i18n.errorValueRequired]; - } - - if (response.actions?.length === 0) { - errs.actions = [i18n.errorActionRequired]; - } - - if (blockSelected) { - const blockErrors = validateBlockRestrictions(selectors, [response]); - if (blockErrors.length > 0) { - errs.response = blockErrors; - } - } - - return errs; - }, [response, selectors, blockSelected]); - - const errorList = useMemo(() => Object.values(errors), [errors]); - - const onResponseChange = useCallback( - (resp: Response, i: number) => { - if (errorList.length) { - resp.hasErrors = true; - } - - onChange(resp, i); - }, - [errorList.length, onChange] - ); - - useEffect(() => { - const hasErrors = errorList.length > 0; - const changed = (hasErrors && !response.hasErrors) || (!hasErrors && response.hasErrors); - if (changed) { - response.hasErrors = hasErrors; - onChange(response, index); - } - }, [errorList.length, index, onChange, response]); - - const onTogglePopover = useCallback(() => { - setPopoverOpen(!isPopoverOpen); - }, [isPopoverOpen]); - - const closePopover = useCallback(() => { - setPopoverOpen(false); - }, []); - - const onRemoveClicked = useCallback(() => { - onRemove(index); - closePopover(); - }, [closePopover, index, onRemove]); - - const onDuplicateClicked = useCallback(() => { - onDuplicate(response); - closePopover(); - }, [closePopover, onDuplicate, response]); - - const onChangeMatches = useCallback( - (options: any) => { - response.match = options.map((option: EuiComboBoxOptionOption) => option.value); - - onResponseChange(response, index); - }, - [index, onResponseChange, response] - ); - - const onChangeExcludes = useCallback( - (options: any) => { - response.exclude = options.map((option: EuiComboBoxOptionOption) => option.value); - - if (response.exclude?.length === 0) { - delete response.exclude; - } - - onResponseChange(response, index); - }, - [index, onResponseChange, response] - ); - - const selectorOptions = useMemo(() => { - return selectors - .filter( - (selector) => - !( - selector.type !== response.type || - response.match.includes(selector.name) || - response.exclude?.includes(selector.name) - ) - ) - .map((selector) => ({ label: selector.name, value: selector.name })); - }, [response.exclude, response.match, response.type, selectors]); - - const selectedMatches = useMemo( - () => - response.match.map((selector) => ({ - label: selector as unknown as string, - value: selector as unknown as string, - color: visColorsBehindText[0], - })), - [response.match, visColorsBehindText] - ); - - const selectedExcludes = useMemo( - () => - response.exclude && - response.exclude.map((selector) => ({ - label: selector as unknown as string, - value: selector as unknown as string, - color: visColorsBehindText[5], - })), - [response.exclude, visColorsBehindText] - ); - - const onShowExclude = useCallback(() => { - const updatedResponse = { ...response }; - updatedResponse.exclude = []; - onResponseChange(updatedResponse, index); - }, [index, onResponseChange, response]); - - const onToggleAction = useCallback( - (e: ChangeEvent) => { - const action = e.currentTarget?.id?.match(ACTION_ID_REGEX)?.[1] as ResponseAction; - const updatedResponse = JSON.parse(JSON.stringify(response)); - const actionIndex = updatedResponse.actions.indexOf(action); - - if (actionIndex === -1) { - updatedResponse.actions.push(action); - } else { - // if alert action gets disabled, disable block action - if (action === 'alert') { - const blockIndex = updatedResponse.actions.indexOf('block'); - - if (blockIndex !== -1) { - updatedResponse.actions.splice(blockIndex, 1); - } - } - - updatedResponse.actions.splice(actionIndex, 1); - } - - onResponseChange(updatedResponse, index); - }, - [index, onResponseChange, response] - ); - - const onToggleAccordion = useCallback((isOpen: boolean) => { - setAccordionState(isOpen ? 'open' : 'closed'); - }, []); - - const { title, plusCount, remainingNames } = useMemo(() => { - if (accordionState === 'open') { - return { - title: response.match.slice(0, titleThreshold).join(', '), - plusCount: response.match.length - titleThreshold, - remainingNames: response.match.slice(titleThreshold).join(','), - }; - } - - return { - title: response.match.slice(0, titleThresholdCollapsed).join(', '), - plusCount: response.match.length - titleThresholdCollapsed, - remainingNames: response.match.slice(titleThresholdCollapsed).join(','), - }; - }, [accordionState, response.match]); - - return ( - <EuiAccordion - id={'response_' + index} - forceState={accordionState} - onToggle={onToggleAccordion} - data-test-subj={`cloud-defend-${response.type}-response`} - paddingSize="m" - buttonContent={ - <EuiFlexGroup alignItems="center" gutterSize="s"> - <EuiFlexItem grow={false}> - <EuiToolTip content={i18n.getResponseIconTooltip(response.type)}> - <EuiIcon color="primary" type={getSelectorTypeIcon(response.type)} /> - </EuiToolTip> - </EuiFlexItem> - <EuiFlexItem> - <EuiText size="s" css={styles.accordionHeader}> - <b>{title}</b> - {plusCount > 0 && <EuiBadge title={remainingNames}>+{plusCount}</EuiBadge>} - </EuiText> - </EuiFlexItem> - </EuiFlexGroup> - } - css={styles.accordion} - initialIsOpen={index === 0} - extraAction={ - <EuiFlexGroup alignItems="center" gutterSize="none" wrap={false}> - {accordionState === 'closed' && ( - <EuiText color="subdued" css={selectorStyles.conditionsBadge} size="xs"> - {response?.exclude?.length && ( - <> - <b>{i18n.exclude}: </b> - <EuiBadge title={response.exclude.join(',')} color="hollow"> - {response.exclude.length} - </EuiBadge> - <div css={selectorStyles.verticalDivider} /> - </> - )} - <b>{i18n.actions}: </b> - {response.actions?.map((action, i) => ( - <span key={action}> - <b style={{ color: action === 'block' ? colors.danger : colors.ink }}> - {action[0].toUpperCase() + action.slice(1)} - </b> - {i !== (response.actions?.length || 0) - 1 && ', '} - </span> - ))} - <div css={selectorStyles.verticalDivider} /> - </EuiText> - )} - <EuiFlexItem> - <EuiPopover - button={ - <EuiButtonIcon - iconType="boxesHorizontal" - onClick={onTogglePopover} - aria-label="Response options" - data-test-subj="cloud-defend-btnresponsepopover" - /> - } - isOpen={isPopoverOpen} - closePopover={closePopover} - panelPaddingSize="none" - anchorPosition="downLeft" - > - <EuiContextMenuPanel - size="s" - items={[ - <EuiContextMenuItem - key="duplicate" - icon="copy" - onClick={onDuplicateClicked} - data-test-subj="cloud-defend-btnduplicateresponse" - > - {i18n.duplicate} - </EuiContextMenuItem>, - <EuiContextMenuItem - key="remove" - icon="trash" - disabled={responses.length < 2} - onClick={onRemoveClicked} - data-test-subj="cloud-defend-btndeleteresponse" - > - {i18n.remove} - </EuiContextMenuItem>, - ]} - /> - </EuiPopover> - </EuiFlexItem> - </EuiFlexGroup> - } - > - <EuiForm component="form" fullWidth error={errorList} isInvalid={errorList.length > 0}> - {warnFIMUsingSlashStarStar && ( - <EuiFormRow fullWidth> - <EuiCallOut color="warning" title={i18n.warningFIMUsingSlashStarStarTitle}> - <p>{i18n.warningFIMUsingSlashStarStarText}</p> - </EuiCallOut> - </EuiFormRow> - )} - <EuiFormRow label={i18n.matchSelectors} fullWidth isInvalid={!!errors.match}> - <EuiComboBox - aria-label={i18n.matchSelectors} - fullWidth - selectedOptions={selectedMatches} - options={selectorOptions} - isClearable={true} - onChange={onChangeMatches} - data-test-subj="cloud-defend-responsematch" - /> - </EuiFormRow> - {response.exclude && ( - <EuiFormRow label={i18n.excludeSelectors} fullWidth> - <EuiComboBox - aria-label={i18n.excludeSelectors} - fullWidth - selectedOptions={selectedExcludes} - options={selectorOptions} - onChange={onChangeExcludes} - isClearable={true} - data-test-subj="cloud-defend-responseexclude" - /> - </EuiFormRow> - )} - <EuiSpacer size="s" /> - {!response.exclude && ( - <EuiButtonEmpty - iconType="plusInCircle" - onClick={onShowExclude} - size="xs" - data-test-subj="cloud-defend-btnshowexclude" - > - {i18n.excludeSelectors} - </EuiButtonEmpty> - )} - <EuiSpacer size="m" /> - <EuiFormRow label={i18n.actions} fullWidth isInvalid={!!errors.actions}> - <EuiFlexGroup direction="row" gutterSize="l"> - <EuiFlexItem grow={false}> - <EuiCheckbox - id={`response_${index}_log`} - data-test-subj="cloud-defend-chklogaction" - label={i18n.actionLog} - checked={logSelected} - onChange={onToggleAction} - /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiCheckbox - id={`response_${index}_alert`} - data-test-subj="cloud-defend-chkalertaction" - label={i18n.actionAlert} - checked={alertSelected} - onChange={onToggleAction} - /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiToolTip content={i18n.actionBlockHelp}> - <EuiCheckbox - id={`response_${index}_block`} - data-test-subj="cloud-defend-chkblockaction" - label={i18n.actionBlock} - checked={blockSelected} - onChange={onToggleAction} - disabled={!alertSelected} - /> - </EuiToolTip> - </EuiFlexItem> - </EuiFlexGroup> - </EuiFormRow> - </EuiForm> - </EuiAccordion> - ); -}; diff --git a/x-pack/plugins/cloud_defend/public/pages/policies/index.tsx b/x-pack/plugins/cloud_defend/public/pages/policies/index.tsx deleted file mode 100644 index c732be5421a17..0000000000000 --- a/x-pack/plugins/cloud_defend/public/pages/policies/index.tsx +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useState } from 'react'; -import { - EuiButton, - EuiFieldSearch, - EuiFieldSearchProps, - EuiFlexGroup, - EuiFlexItem, - EuiPageHeader, - EuiSpacer, - EuiText, - EuiTextColor, -} from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n-react'; -import useDebounce from 'react-use/lib/useDebounce'; -import { i18n } from '@kbn/i18n'; -import { CloudDefendPageTitle } from '../../components/cloud_defend_page_title'; -import { CloudDefendPage } from '../../components/cloud_defend_page'; -import { PoliciesTable } from '../../components/policies_table'; -import { useCloudDefendPolicies, UseCloudDefendPoliciesProps } from './use_cloud_defend_policies'; -import { extractErrorMessage } from '../../../common/utils/helpers'; -import * as TEST_SUBJ from './test_subjects'; -import { LOCAL_STORAGE_PAGE_SIZE } from '../../common/constants'; -import { usePageSize } from '../../common/hooks/use_page_size'; -import { useCloudDefendIntegrationLinks } from '../../common/navigation/use_cloud_defend_integration_links'; - -const SEARCH_DEBOUNCE_MS = 300; - -const AddIntegrationButton = () => { - const { addIntegrationLink } = useCloudDefendIntegrationLinks(); - - return ( - <EuiButton - data-test-subj={TEST_SUBJ.ADD_INTEGRATION_TEST_SUBJ} - fill - iconType="plusInCircle" - href={addIntegrationLink} - > - <FormattedMessage - id="xpack.cloudDefend.policies.policiesPageHeader.addIntegrationButtonLabel" - defaultMessage="Add Integration" - /> - </EuiButton> - ); -}; - -const EmptyState = ({ name }: { name: string }) => ( - <div> - <EuiSpacer size="l" /> - { - <EuiText> - <strong> - <FormattedMessage - id="xpack.cloudDefend.policies.policyEmptyState.integrationsNotFoundTitle" - defaultMessage="No policies found" - /> - {name && ( - <FormattedMessage - id="xpack.cloudDefend.policies.policyEmptyState.integrationsNotFoundForNameTitle" - defaultMessage=' for "{name}"' - values={{ name }} - /> - )} - </strong> - </EuiText> - } - <EuiSpacer size="s" /> - <EuiText> - <EuiTextColor color="subdued"> - <FormattedMessage - id="xpack.cloudDefend.policies.policyEmptyState.integrationsNotFoundWithFiltersTitle" - defaultMessage="We weren't able to find any policies with the above filters." - /> - </EuiTextColor> - </EuiText> - <EuiSpacer size="l" /> - </div> -); - -const TotalIntegrationsCount = ({ - pageCount, - totalCount, -}: Record<'pageCount' | 'totalCount', number>) => ( - <EuiText size="xs" style={{ marginLeft: 8 }}> - <EuiTextColor color="subdued"> - <FormattedMessage - id="xpack.cloudDefend.policies.totalIntegrationsCountMessage" - defaultMessage="Showing {pageCount} of {totalCount, plural, one {# integration} other {# integrations}}" - values={{ pageCount, totalCount }} - /> - </EuiTextColor> - </EuiText> -); - -const SearchField = ({ - onSearch, - isLoading, -}: Required<Pick<EuiFieldSearchProps, 'isLoading' | 'onSearch'>>) => { - const [localValue, setLocalValue] = useState(''); - - useDebounce(() => onSearch(localValue), SEARCH_DEBOUNCE_MS, [localValue]); - - return ( - <EuiFlexGroup> - <EuiFlexItem grow={true} style={{ alignItems: 'flex-end' }}> - <EuiFieldSearch - fullWidth - onSearch={setLocalValue} - isLoading={isLoading} - placeholder={i18n.translate( - 'xpack.cloudDefend.policies.policySearchField.searchPlaceholder', - { defaultMessage: 'Search integration name' } - )} - incremental - /> - </EuiFlexItem> - </EuiFlexGroup> - ); -}; - -export const Policies = () => { - const { pageSize, setPageSize } = usePageSize(LOCAL_STORAGE_PAGE_SIZE); - const [query, setQuery] = useState<UseCloudDefendPoliciesProps>({ - name: '', - page: 1, - perPage: pageSize, - sortField: 'package_policy.name', - sortOrder: 'asc', - }); - - const queryResult = useCloudDefendPolicies(query); - const totalItemCount = queryResult.data?.total || 0; - - return ( - <CloudDefendPage> - <EuiPageHeader - data-test-subj={TEST_SUBJ.POLICIES_PAGE_HEADER} - pageTitle={ - <CloudDefendPageTitle - title={i18n.translate('xpack.cloudDefend.policies.policiesPageHeader', { - defaultMessage: 'Defend for containers (D4C)', - })} - /> - } - rightSideItems={[<AddIntegrationButton />]} - bottomBorder - /> - <EuiSpacer /> - <SearchField - isLoading={queryResult.isFetching} - onSearch={(name) => setQuery((current) => ({ ...current, name }))} - /> - <EuiSpacer /> - <TotalIntegrationsCount - pageCount={(queryResult.data?.items || []).length} - totalCount={totalItemCount} - /> - <EuiSpacer size="s" /> - <PoliciesTable - policies={queryResult.data?.items || []} - data-test-subj={TEST_SUBJ.POLICIES_TABLE_DATA_TEST_SUBJ} - error={queryResult.error ? extractErrorMessage(queryResult.error) : undefined} - loading={queryResult.isFetching} - pageIndex={query.page} - pageSize={pageSize || query.perPage} - sorting={{ - // @ts-expect-error - EUI types currently do not support sorting by nested fields - sort: { field: query.sortField, direction: query.sortOrder }, - allowNeutralSort: false, - }} - totalItemCount={totalItemCount} - setQuery={({ page, sort }) => { - setPageSize(page.size); - setQuery((current) => ({ - ...current, - page: page.index, - perPage: page.size, - sortField: - (sort?.field as UseCloudDefendPoliciesProps['sortField']) || current.sortField, - sortOrder: sort?.direction || current.sortOrder, - })); - }} - noItemsMessage={ - queryResult.isSuccess && !queryResult.data.total ? ( - <EmptyState name={query.name} /> - ) : undefined - } - /> - </CloudDefendPage> - ); -}; diff --git a/x-pack/plugins/cloud_defend/public/plugin.tsx b/x-pack/plugins/cloud_defend/public/plugin.tsx deleted file mode 100755 index 106ad3e47de78..0000000000000 --- a/x-pack/plugins/cloud_defend/public/plugin.tsx +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; -import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; -import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; -import React, { lazy, Suspense } from 'react'; -import type { CloudDefendRouterProps } from './application/router'; -import { - CloudDefendPluginSetup, - CloudDefendPluginStart, - CloudDefendPluginStartDeps, - CloudDefendPluginSetupDeps, -} from './types'; -import { INTEGRATION_PACKAGE_NAME } from '../common/constants'; -import { LoadingState } from './components/loading_state'; -import { SetupContext } from './application/setup_context'; - -const LazyPolicyReplaceDefineStepExtension = lazy( - () => import('./components/fleet_extensions/package_policy_replace_define_step_extension') -); - -const LazyCustomAssets = lazy( - () => import('./components/fleet_extensions/custom_assets_extension') -); - -const RouterLazy = lazy(() => import('./application/router')); -const Router = (props: CloudDefendRouterProps) => ( - <Suspense fallback={<LoadingState />}> - <RouterLazy {...props} /> - </Suspense> -); - -export class CloudDefendPlugin - implements - Plugin< - CloudDefendPluginSetup, - CloudDefendPluginStart, - CloudDefendPluginSetupDeps, - CloudDefendPluginStartDeps - > -{ - private isCloudEnabled?: boolean; - - public setup( - core: CoreSetup<CloudDefendPluginStartDeps, CloudDefendPluginStart>, - plugins: CloudDefendPluginSetupDeps - ): CloudDefendPluginSetup { - this.isCloudEnabled = plugins.cloud.isCloudEnabled; - - // Return methods that should be available to other plugins - return {}; - } - - public start(core: CoreStart, plugins: CloudDefendPluginStartDeps): CloudDefendPluginStart { - plugins.fleet.registerExtension({ - package: INTEGRATION_PACKAGE_NAME, - view: 'package-policy-replace-define-step', - Component: LazyPolicyReplaceDefineStepExtension, - }); - - plugins.fleet.registerExtension({ - package: INTEGRATION_PACKAGE_NAME, - view: 'package-detail-assets', - Component: LazyCustomAssets, - }); - - const CloudDefendRouter = (props: CloudDefendRouterProps) => ( - <KibanaContextProvider services={{ ...core, ...plugins }}> - <RedirectAppLinks coreStart={core}> - <div style={{ width: '100%', height: '100%' }}> - <SetupContext.Provider value={{ isCloudEnabled: this.isCloudEnabled }}> - <Router {...props} /> - </SetupContext.Provider> - </div> - </RedirectAppLinks> - </KibanaContextProvider> - ); - - return { - getCloudDefendRouter: () => CloudDefendRouter, - }; - } - - public stop() {} -} diff --git a/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/types.ts b/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/types.ts deleted file mode 100644 index 32de2548cf7c2..0000000000000 --- a/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/types.ts +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -// for some reason we can't reference common/index.ts because -// the `node scripts/check_telemetry.js --fix` command fails with the error -// ERROR Error: Error extracting collector in x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/register.ts -// Error: Unable to find identifier in source Selector -// at createFailError (dev_cli_errors.ts:27:24) -// at parseUsageCollection (ts_parser.ts:226:32) -// at parseUsageCollection.next (<anonymous>) -// at extractCollectors (extract_collectors.ts:58:32) -// at extractCollectors.next (<anonymous>) -// at Task.task (extract_collectors_task.ts:43:53) -// at runMicrotasks (<anonymous>) -// at processTicksAndRejections (node:internal/process/task_queues:96:5) -// -// I guess the intermediate import/export is causing problems -// for now we will just point to the current version (v1) -import type { - Selector, - Response, - SelectorType, - SelectorCondition, - ResponseAction, -} from '../../../../common/v1'; - -export interface CloudDefendUsage { - indices: CloudDefendIndicesStats; - pods_stats: CloudDefendPodsStats[]; - accounts_stats: CloudDefendAccountsStats[]; - installation_stats: CloudDefendInstallationStats[]; -} - -export interface PackageSetupStatus { - status: string; - installedPackagePolicies: number; - healthyAgents: number; -} - -export interface CloudDefendIndicesStats { - alerts: IndexStats | {}; - file: IndexStats | {}; - process: IndexStats | {}; - latestPackageVersion: string; - packageStatus: PackageSetupStatus; -} - -export interface IndexStats { - doc_count: number; - deleted: number; - size_in_bytes: number; - last_doc_timestamp: string | null; -} - -export interface CloudDefendPodsStats { - account_id: string; - pod_name: string; - container_image_name: string; - container_image_tag: string; - total_doc_count: number; - file_doc_count: number; - process_doc_count: number; - alert_doc_count: number; -} - -export interface CloudDefendAccountsStats { - account_id: string; - total_doc_count: number; - cloud_provider: string; - kubernetes_version: string | null; - file_doc_count: number; - process_doc_count: number; - alert_doc_count: number; - agents_count: number; - nodes_count: number; - pods_count: number; -} - -export type CloudDefendSelectorTypeCounts = { - [key in SelectorType]: number; -}; - -export type CloudDefendResponseTypeCounts = { - [key in SelectorType]: number; -}; - -export type CloudDefendConditionsCounts = { - [key in SelectorCondition]?: number; -}; - -export type CloudDefendActionCounts = { - [key in ResponseAction]?: number; -}; - -export interface CloudDefendPolicyYamlStats { - policy_yaml: string; - policy_json: string; // to be used for further digging in BigQuery - selector_counts: CloudDefendSelectorTypeCounts; - response_counts: CloudDefendResponseTypeCounts; - selector_conditions_counts: CloudDefendConditionsCounts; - response_actions_counts: CloudDefendActionCounts; - response_match_names: string[]; - response_exclude_names: string[]; -} - -type CloudDefendSelector = Omit<Selector, 'hasErrors'>; -type CloudDefendResponse = Omit<Response, 'hasErrors'>; - -export interface CloudDefendInstallationStats { - package_policy_id: string; - package_version: string; - agent_policy_id: string; - created_at: string; - agent_count: number; - policy_yaml: string; - selectors: CloudDefendSelector[]; - responses: CloudDefendResponse[]; -} diff --git a/x-pack/plugins/cloud_defend/tsconfig.json b/x-pack/plugins/cloud_defend/tsconfig.json deleted file mode 100755 index 9b87f53f7c7b6..0000000000000 --- a/x-pack/plugins/cloud_defend/tsconfig.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*", - "public/**/*.json", - "server/**/*.json" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/data-plugin", - "@kbn/security-plugin", - "@kbn/fleet-plugin", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/licensing-plugin", - "@kbn/data-plugin", - "@kbn/kibana-react-plugin", - "@kbn/monaco", - "@kbn/i18n", - "@kbn/usage-collection-plugin", - "@kbn/cloud-plugin", - "@kbn/shared-ux-router", - "@kbn/shared-ux-link-redirect-app", - "@kbn/core-logging-server-mocks", - "@kbn/securitysolution-es-utils", - "@kbn/es-types", - "@kbn/data-views-plugin", - "@kbn/utility-types", - "@kbn/kubernetes-security-plugin", - "@kbn/core-http-router-server-mocks", - "@kbn/core-elasticsearch-server", - "@kbn/code-editor", - "@kbn/code-editor-mock", - "@kbn/core-security-common" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/jest.config.js b/x-pack/plugins/cloud_integrations/cloud_data_migration/jest.config.js deleted file mode 100644 index bd69c12576b57..0000000000000 --- a/x-pack/plugins/cloud_integrations/cloud_data_migration/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../', - roots: ['<rootDir>/x-pack/plugins/cloud_integrations/cloud_data_migration'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/cloud_integrations/cloud_data_migration', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/cloud_integrations/cloud_data_migration/{common,public}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/tsconfig.json b/x-pack/plugins/cloud_integrations/cloud_data_migration/tsconfig.json deleted file mode 100644 index 9b19d2a32b988..0000000000000 --- a/x-pack/plugins/cloud_integrations/cloud_data_migration/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "../../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/cloud-plugin", - "@kbn/management-plugin", - "@kbn/features-plugin", - // required bundles - "@kbn/kibana-react-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/core-plugins-server", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/cloud_security_posture/README.md b/x-pack/plugins/cloud_security_posture/README.md deleted file mode 100755 index f608a614fca1c..0000000000000 --- a/x-pack/plugins/cloud_security_posture/README.md +++ /dev/null @@ -1,147 +0,0 @@ -# Cloud Security Posture Kibana Plugin - -Cloud Posture automates the identification and remediation of risks across cloud infrastructures - ---- - -## Development - -Read [Kibana Contributing Guide](https://github.com/elastic/kibana/blob/main/CONTRIBUTING.md) for more details - -## Testing - -For general guidelines, read [Kibana Testing Guide](https://www.elastic.co/guide/en/kibana/current/development-tests.html) for more details - -### Tests - -1. Unit Tests (Jest) - located in sibling files to the source code -1. [API Integration Tests](../../test/api_integration/apis/cloud_security_posture/config.ts) -1. [Telemetry Integration Tests](../../test/cloud_security_posture_api/config.ts) -1. [End-to-End Tests](../../test/cloud_security_posture_functional/config.ts) -1. [Serverless API Integration tests](../../test_serverless/api_integration/test_suites/security/config.ts) -1. [Serverless End-to-End Tests](../../test_serverless/functional/test_suites/security/config.ts) -1. [Cypress End-to-End Tests](../../test/security_solution_cypress/cypress/e2e/cloud_security_posture) - - -### Tools - -Run **TypeScript**: - -```bash -node scripts/type_check.js --project=x-pack/plugins/cloud_security_posture/tsconfig.json -``` - -Run **ESLint**: - -```bash -yarn lint:es x-pack/plugins/cloud_security_posture -``` - -Run **i18n check**: -```bash -node scripts/i18n_check.js -``` - -> **Note** -> -> i18n should run on project scope as it checks translations files outside of our plugin. -> -> Fixes can be applied using the --fix flag - -Run [**Unit Tests**](https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing): - -```bash -yarn test:jest --config x-pack/plugins/cloud_security_posture/jest.config.js -``` - -> **Note** -> -> for a coverage report, add the `--coverage` flag, and run `open target/kibana-coverage/jest/x-pack/plugins/cloud_security_posture/index.html` - -Run [**Integration Tests**](https://docs.elastic.dev/kibana-dev-docs/tutorials/testing-plugins#): - -```bash -yarn test:ftr --config x-pack/test/api_integration/config.ts -``` - -Run [**End-to-End Tests**](https://www.elastic.co/guide/en/kibana/current/development-tests.html#_running_functional_tests): - -```bash -yarn test:ftr --config x-pack/test/cloud_security_posture_functional/config.ts -yarn test:ftr --config x-pack/test/api_integration/apis/cloud_security_posture/config.ts -yarn test:ftr --config x-pack/test/cloud_security_posture_api/config.ts -yarn test:ftr --config x-pack/test_serverless/api_integration/test_suites/security/config.ts --include-tag=cloud_security_posture -yarn test:ftr --config x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.ts -``` - -Run [**End-to-End Cypress Tests**](https://github.com/elastic/kibana/tree/main/x-pack/test/security_solution_cypress/cypress): -> **Note** -> -> Run this from security_solution_cypress folder -```bash -yarn cypress:open:serverless -yarn cypress:open:ess -yarn cypress:cloud_security_posture:run:serverless -yarn cypress:cloud_security_posture:run:ess -``` - -#### Run **FTR tests (integration or e2e) for development** - -Functional test runner (FTR) can be used separately with `ftr:runner` and `ftr:server`. This is convenient while developing tests. - -For example, - -run ESS (stateful) api integration tests: -```bash -yarn test:ftr:server --config x-pack/test/api_integration/config.ts -yarn test:ftr:runner --config x-pack/test/api_integration/apis/cloud_security_posture/config.ts -``` - -run ESS (stateful) telemetry integration tests: -```bash -yarn test:ftr:server --config x-pack/test/cloud_security_posture_api/config.ts -yarn test:ftr:runner --config x-pack/test/cloud_security_posture_api/config.ts -``` - -run ESS (stateful) e2e tests: -```bash -yarn test:ftr:server --config x-pack/test/cloud_security_posture_functional/config.ts -yarn test:ftr:runner --config x-pack/test/cloud_security_posture_functional/config.ts -``` - -run serverless api integration tests: -```bash -yarn test:ftr:server --config x-pack/test_serverless/api_integration/test_suites/security/config.ts -yarn test:ftr:runner --config x-pack/test_serverless/api_integration/test_suites/security/config.ts --include-tag=cloud_security_posture -``` - -run serverless e2e tests: -```bash -yarn test:ftr:server --config x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.ts -yarn test:ftr:runner ---config x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.ts -``` - -#### Run **Cypress tests (e2e) for development** -When developing feature outside our plugin folder, instead of using FTRs for e2e test, we may use Cypress. Before running cypress, make sure you have installed it first. Like FTRs, we can run cypress in different environment, for example: - -run ess e2e tests: -```bash -yarn cypress:open:ess -``` - -run ess Cloud Security Posture e2e tests: -```bash -yarn cypress:cloud_security_posture:run:ess -``` - -run serverless e2e tests: -```bash -yarn cypress:open:serverless -``` - -run serverless Cloud Security Posture e2e tests: -```bash -yarn cypress:cloud_security_posture:run:serverless -``` - -Unlike FTR where we have to set server and runner separately, Cypress handles everything in 1 go, so just running the above the script is enough to get it running \ No newline at end of file diff --git a/x-pack/plugins/cloud_security_posture/common/dev_docs/__auto_generated_csp_requirements_test_coverage.md b/x-pack/plugins/cloud_security_posture/common/dev_docs/__auto_generated_csp_requirements_test_coverage.md deleted file mode 100644 index 495400272ac43..0000000000000 --- a/x-pack/plugins/cloud_security_posture/common/dev_docs/__auto_generated_csp_requirements_test_coverage.md +++ /dev/null @@ -1,993 +0,0 @@ -# Cloud Security Posture - Requirements Test Coverage - -<!-- This file is auto-generated. Any changes will be overwritten. -->This document provides a summary of the requirements test coverage for Cloud Security Posture. - -You can also check out the dedicated app view, which enables easier search and filter functionalities. -[Requirement test coverage app](https://vxgs2c.csb.app/) - -## Directory: x-pack/packages/kbn-cloud-security-posture - -**Total Tests:** 10 | **Skipped:** 0 (0.00%) | **Todo:** 0 (0.00%) - -![](https://img.shields.io/badge/KBN-PACKAGE-blueviolet) - -<details> -<summary>Test Details</summary> - -| Test Label | Type | Skipped | Todo | -|------------|------|---------|------| -| [test helper methods](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | describe | | | -| [extractErrorMessage Test](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | describe | | | -| [should return error message if input is instance of Error](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | -| [should return string if input is string](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | -| [should return fallbackMessage is input is not string nor instance of Error](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | -| [should return default message when input is not string nor instance of Error and fallbackMessage is not provided](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | -| [buildMutedRulesFilter Test](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | describe | | | -| [should return an empty array if no rules are muted](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | -| [should return the correct query for a single muted rule](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | -| [should return the correct queries for multiple muted rules](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | -</details> - -## Directory: x-pack/plugins/cloud_security_posture - -**Total Tests:** 463 | **Skipped:** 7 (1.51%) | **Todo:** 0 (0.00%) - -![](https://img.shields.io/badge/UT-brightgreen) ![](https://img.shields.io/badge/HAS-SKIP-yellow) - -<details> -<summary>Test Details</summary> - -| Test Label | Type | Skipped | Todo | -|------------|------|---------|------| -| [Detection rules utils](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | describe | | | -| [should convert tags to KQL format with AND operator](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [Should convert tags to KQL format with AND Operator (empty array)](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [should convert tags to KQL format with OR Operator](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [Should convert tags to KQL format with OR Operator (empty array)](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [Should generate search tags for a CSP benchmark rule](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [Should handle undefined benchmark object gracefully](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [Should handle undefined rule number gracefully](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [Should generate search tags for a CSP benchmark rule given an array of Benchmarks](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [Should handle undefined benchmark object gracefully given an array of empty benchmark](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [Should generate tags for a CSPM benchmark rule](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [Should generate tags for a KSPM benchmark rule](x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | -| [test helper methods](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | describe | | | -| [get default integration type from inputs with multiple enabled types](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [get default integration type from inputs without any enabled types](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [get EKS integration type](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [get Vanilla K8S integration type](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [get benchmark type filter based on a benchmark id](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [should return a string with the correct filter when given a benchmark type and section](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [get benchmark filter query based on a benchmark Id, version](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [get benchmark filter query based on a benchmark Id, version and multiple sections and rule numbers](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [get benchmark filter query based on a benchmark Id, version and just sections](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [get benchmark filter query based on a benchmark Id, version and just rule numbers](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [cleanupCredentials](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | describe | | | -| [cleans unused aws credential methods, except role_arn when using assume_role](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [cleans unused aws credential methods, when using cloud formation](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [cleans unused aws credential methods, when using direct_access_keys method ](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [when aws credential type is undefined, return unchanged policy](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [cleans unused gcp credential methods, when using credentials-file method ](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [when gcp credential type is undefined, return unchanged policy](x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | -| [isSubscriptionAllowed](x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts) | describe | | | -| [should allow any cloud subscription](x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts) | it | | | -| [should allow enterprise and trial licenses for on-prem](x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts) | it | | | -| [should not allow enterprise and trial licenses for on-prem](x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts) | it | | | -| [CspRouter](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | describe | | | -| [happy path](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | describe | | | -| [should render Findings](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | -| [should render Dashboards](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | -| [should render the Vulnerability Dashboard](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | -| [should render Benchmarks](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | -| [should render Rules](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | -| [unhappy path](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | describe | | | -| [should redirect base path to dashboard](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | -| [CspRoute](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | describe | | | -| [should not render disabled path](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | -| [should render SpyRoute for static paths](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | -| [should not render SpyRoute for dynamic paths](x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | -| [useBenchmarkDynamicValues](x-pack/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts) | describe | | | -| [should return the correct dynamic benchmark values for each provided benchmark ID](x-pack/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts) | it | | | -| [should return the correct resource plurals based on the provided resource count](x-pack/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts) | it | | | -| [useNavigateFindings](x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts) | describe | | | -| [creates a URL to findings page with correct path, filter and dataViewId](x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts) | it | | | -| [creates a URL to findings page with correct path and negated filter](x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts) | it | | | -| [creates a URL to vulnerabilities page with correct path, filter and dataViewId](x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts) | it | | | -| [useUrlQuery](x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts) | describe | | | -| [uses default query when no query is provided](x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts) | it | | | -| [merges default query, partial first query and partial second query](x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts) | it | | | -| [getSecuritySolutionLink](x-pack/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts) | describe | | | -| [gets the correct link properties](x-pack/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts) | it | | | -| [getAbbreviatedNumber](x-pack/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts) | describe | | | -| [should return the same value if it is less than 1000](x-pack/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts) | it | | | -| [should use numeral to format the value if it is greater than or equal to 1000](x-pack/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts) | it | | | -| [should return 0 if the value is NaN](x-pack/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts) | it | | | -| [getCvsScoreColor](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | describe | | | -| [returns correct color for low severity score](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [returns correct color for medium severity score](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [returns correct color for high severity score](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [returns correct color for critical severity score](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [returns correct color for low severity score for undefined value](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [getSeverityStatusColor](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | describe | | | -| [should return the correct color for LOW severity](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [should return the correct color for MEDIUM severity](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [should return the correct color for HIGH severity](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [should return the correct color for CRITICAL severity](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [should return #aaa for an unknown severity](x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | -| [AccountsEvaluatedWidget](x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx) | describe | | | -| [renders the component with benchmark data correctly](x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx) | it | | | -| [calls navToFindingsByCloudProvider when a benchmark with provider is clicked](x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx) | it | | | -| [calls navToFindingsByCisBenchmark when a benchmark with benchmarkId is clicked](x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx) | it | | | -| [<ChartPanel />](x-pack/plugins/cloud_security_posture/public/components/chart_panel.test.tsx) | describe | | | -| [renders loading state](x-pack/plugins/cloud_security_posture/public/components/chart_panel.test.tsx) | it | | | -| [renders error state](x-pack/plugins/cloud_security_posture/public/components/chart_panel.test.tsx) | it | | | -| [renders chart component](x-pack/plugins/cloud_security_posture/public/components/chart_panel.test.tsx) | it | | | -| [<CloudPosturePage />](x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | describe | | | -| [renders children if setup status is indexed](x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | -| [renders default loading text when query isLoading](x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | -| [renders default loading text when query is idle](x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | -| [renders default error texts when query isError](x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | -| [prefers custom error render](x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | -| [prefers custom loading render](x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | -| [renders no data prompt when query data is undefined](x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | -| [prefers custom no data prompt](x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | -| [CloudSecurityDataTable](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | describe | | | -| [renders loading state](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | -| [renders empty state when no rows are present](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | -| [renders data table with rows](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | -| [renders data table with actions button](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | -| [renders data table without actions button](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | -| [FieldsSelectorTable](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | describe | | | -| [renders the table with data correctly](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [calls onAddColumn when a checkbox is checked](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [calls onRemoveColumn when a checkbox is unchecked](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [View selected](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | describe | | | -| [should show "view all" option by default](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [should render "view selected" option when previous selection was "view selected"](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [should show "view all" option after the "view all" is selected](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [should show only selected columns after the "view selected" option is selected](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [should show all columns available after the "view all" option is selected](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [should open the view selector with button click](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [Searching columns](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | describe | | | -| [should find all columns match the search term](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [should find all columns match the search term and are selected](x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | -| [firstNonNullValue](x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | describe | | | -| [returns the value itself for non-null single value](x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | -| [returns undefined for a null single value](x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | -| [returns undefined for an array of all null values](x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | -| [returns the first non-null value in an array of mixed values](x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | -| [returns the first value in an array of all non-null values](x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | -| [returns undefined for an empty array](x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | -| [DetectionRuleCounter](x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | describe | | | -| [should render loading skeleton when both rules and alerts are loading](x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | it | | | -| [should render create rule link when no rules exist](x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | it | | | -| [should render alert and rule count when rules exist](x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | it | | | -| [should show loading spinner when creating a rule](x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | it | | | -| [<CspPolicyTemplateForm />](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | -| [shows license block if subscription is not allowed](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [license block renders with license url locator](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [license block renders without license url locator](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates package policy namespace to default when it changes](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders and updates name field](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders and updates description field](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders KSPM input selector](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates selected KSPM input](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders CSPM input selector](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders disabled KSPM input when editing](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders disabled CSPM input when editing](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [selects default KSPM input selector](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [selects default VULN_MGMT input selector](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [selects default CSPM input selector](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [K8S](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | -| [K8S or KSPM Vanilla should not render any Setup Access option](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [EKS Credentials input fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | -| [documentation Hyperlink should have correct URL to redirect users to AWS page](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_EKS} Assume Role fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_EKS} Assume Role fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_EKS} Direct Access Keys fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_EKS} Direct Access Keys fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_EKS} Temporary Keys fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_EKS} Temporary Keys fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_EKS} Shared Credentials fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_EKS} Shared Credentials fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [AWS Credentials input fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | -| [renders ${CLOUDBEAT_AWS} Account Type field, AWS Organization is enabled for supported versions](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [${CLOUDBEAT_AWS} form displays upgrade message for unsupported versions and aws organization option is disabled](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [${CLOUDBEAT_AWS} form do not displays upgrade message for supported versions and aws organization option is enabled](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [Getting started Hyperlink should have correct URL to redirect users to elastic page](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [documentation Hyperlink should have correct URL to redirect users to elastic page if user chose Manual](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [documentation Hyperlink should have correct URL to redirect users to AWS page if user chose Cloudformation](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_AWS} Assume Role fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_AWS} Assume Role fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_AWS} Direct Access Keys fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_AWS} Direct Access Keys fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_AWS} Temporary Keys fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_AWS} Temporary Keys fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_AWS} Shared Credentials fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_AWS} Shared Credentials fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [Vuln Mgmt](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | -| [Update Agent Policy CloudFormation template from vars](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [Additional Charge Callout message should be rendered](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [GCP Credentials input fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | -| [renders ${CLOUDBEAT_GCP} Not supported when version is not at least version 1.5.2](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [documentation Hyperlink should have correct URL to redirect users to elastic page](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders Google Cloud Shell forms when Setup Access is set to Google Cloud Shell](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_GCP} Credentials File fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_GCP} Credentials File fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [${CLOUDBEAT_GCP} form do not displays upgrade message for supported versions and gcp organization option is enabled](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_GCP} Organization fields when account type is Organization and Setup Access is Google Cloud Shell](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_GCP} Organization fields when account type is Organization and Setup Access is manual](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [Should not render ${CLOUDBEAT_GCP} Organization fields when account type is Single](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_GCP} organization id](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [Azure Credentials input fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | -| [renders ${CLOUDBEAT_AZURE} Not supported when version is not at least version 1.6.0](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [doesnt render ${CLOUDBEAT_AZURE} Manual fields when version is not at least version 1.7.0](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [selects default ${CLOUDBEAT_AZURE} fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders ${CLOUDBEAT_AZURE} Service Principal with Client Secret fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates ${CLOUDBEAT_AZURE} Service Principal with Client Secret fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [Agentless](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | -| [should not render setup technology selector if agentless is not available and CSPM integration supports agentless](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [should render setup technology selector for AWS and allow to select agentless](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [should render setup technology selector for GCP for organisation account type](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [should render setup technology selector for GCP for single-account](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [should render setup technology selector for Azure for Organisation type](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [should render setup technology selector for Azure for Single Subscription type](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [should not render setup technology selector for KSPM](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [should not render setup technology selector for CNVM](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders Service principal with Client Certificate fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [updates Service principal with Client Certificate fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [should not render Service principal with Client Username and Password option](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | -| [renders Service principal with Client Username and Password fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [updates Service principal with Client Username and Password fields](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [useSetupTechnology](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | describe | | | -| [create page flow](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | describe | | | -| [initializes with AGENT_BASED technology](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [sets to AGENT-BASED when agentless is available and AWS cloud](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [sets to AGENT-BASED when agentless is available and GCP cloud](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [sets to AGENT-BASED when agentless is available and Azure cloud](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [sets to AGENT_BASED when agentless is available but input is not supported for agentless](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [sets to AGENT_BASED when isAgentlessEnabled is false](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [calls handleSetupTechnologyChange when setupTechnology changes](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [edit page flow](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | describe | | | -| [initializes with AGENT_BASED technology](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [initializes with agentless when is in edit mode and is agentless selected](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [should not call handleSetupTechnologyChange when setupTechnology changes](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [should not update setupTechnology when agentlessPolicyId becomes available](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | -| [getPosturePolicy](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | describe | | | -| [updates package policy with hidden vars for ${name}](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [updates package policy required vars (posture/deployment)](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [updates package policy with a single enabled input](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should correctly increment cspm package name](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return correctly increment vuln_mgmt package name](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return correctly increment kspm package name](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return package name with -1 when no matching package policies are found](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return empty string when policy_templates is missing](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return empty string when policy_templates.name is not cspm](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return empty string when policy_templates.inputs is missing](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return empty string when policy_templates.inputs is empty](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return empty string when policy_templates.inputs is undefined](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return empty string when policy_templates.inputs.vars does not have cloud_shell_url](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return empty string when policy_templates.inputs.varshave cloud_shell_url but no default](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should cloud shell url when policy_templates.inputs.vars have cloud_shell_url](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return "direct_access_key" for agentless](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return "assume_role" for agent-based, when cloudformation is not available](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return "cloud_formation" for agent-based, when cloudformation is available](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return "service_principal_with_client_secret" for agentless](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [shold return "arm_template" for agent-based, when arm_template is available](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return "managed_identity" for agent-based, when arm_template is not available](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return manual credentials-json credentials type for agentless](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return google_cloud_shell setup access for agent-based if cloud_shell_url is available](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [should return manual setup access for agent-based if cloud_shell_url is not available](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [Should return var item when key exist](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [Should return undefined when key is invalid](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [Should return undefined when datastream is undefined](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [Should return undefined when stream is undefined](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [Should return undefined when stream.var is invalid](x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | -| [NoFindingsStates](x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | describe | | | -| [shows integrations installation prompt with installation links when integration is not-installed](x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | -| [shows install agent prompt with install agent link when status is not-deployed](x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | -| [shows install agent prompt with install agent link when status is not-deployed and postureType is KSPM](x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | -| [shows indexing message when status is indexing](x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | -| [shows timeout message when status is index-timeout](x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | -| [shows unprivileged message when status is unprivileged](x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | -| [renders empty container when the status does not match a no finding status](x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | -| [<BenchmarksTable />](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | describe | | | -| [renders cis integration name](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | -| [renders benchmark version](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | -| [renders applicable to](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | -| [renders evaluated](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | -| [renders compliance](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | -| [<Benchmarks />](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | describe | | | -| [renders the page header](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | it | | | -| [renders the "add integration" button](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | it | | | -| [renders error state while there is an error](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | it | | | -| [renders the benchmarks table](x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | it | | | -| [getTopRisks](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts) | describe | | | -| [returns sorted by posture score](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts) | it | | | -| [return sorted array with the correct number of elements](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts) | it | | | -| [<ComplianceDashboard />](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | describe | | | -| [shows package not installed page instead of tabs](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [no findings state: not-deployed - shows NotDeployed instead of dashboard](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [no findings state: indexing - shows Indexing instead of dashboard](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [no findings state: indexing - shows Indexing instead of dashboard when waiting_for_results](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [no findings state: index-timeout - shows IndexTimeout instead of dashboard](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [no findings state: unprivileged - shows Unprivileged instead of dashboard](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [shows dashboard when there are findings in latest findings index](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [Show Kubernetes dashboard if there are KSPM findings](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [Show Cloud dashboard if there are CSPM findings](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [Show Cloud dashboard "no findings prompt" if the CSPM integration is installed without findings](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [Show Kubernetes dashboard "no findings prompt" if the KSPM integration is installed without findings](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [Prefer Cloud dashboard if both integration are installed](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [Prefer Cloud dashboard if both integration have findings](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [Show CSPM installation prompt if CSPM is not installed and KSPM is installed ,NO AGENT](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [Show KSPM installation prompt if KSPM is not installed and CSPM is installed , NO AGENT](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [getDefaultTab](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | describe | | | -| [returns CSPM tab if only CSPM has findings](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [returns CSPM tab if both CSPM and KSPM has findings](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [returns KSPM tab if only KSPM has findings](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [when no findings preffers CSPM tab unless not-installed or unprivileged](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [should returns undefined when plugin status and cspm stats is not provided](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [should return undefined is plugin status and csp status is not provided ](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [should return undefined when plugins status or cspm stats data is not provided](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | -| [<BenchmarksSection />](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx) | describe | | | -| [Sorting](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx) | describe | | | -| [sorts by ascending order of compliance scores](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx) | it | | | -| [toggles sort order when clicking Posture Score](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx) | it | | | -| [<CloudSummarySection />](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx) | describe | | | -| [renders all counter cards](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx) | it | | | -| [renders counters content according to mock](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx) | it | | | -| [renders counters value in compact abbreviation if its above one million](x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx) | it | | | -| [<Findings />](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | describe | | | -| [renders integrations installation prompt if integration is not installed and there are no findings](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | -| [SearchBar](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | describe | | | -| [set search query](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | -| [renders no results message and reset button when search query does not match](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | -| [add filter](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | -| [remove filter](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | -| [DistributionBar](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | describe | | | -| [renders the distribution bar](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | -| [filters by passed findings when clicking on the passed findings button](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | -| [filters by failed findings when clicking on the failed findings button](x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | -| [<FindingsFlyout/>](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | -| [Overview Tab](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | -| [details and remediation accordions are open](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [displays text details summary info](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [displays missing info callout when data source is not CSP](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [does not display missing info callout when data source is CSP](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [Rule Tab](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | -| [displays rule text details](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [displays missing info callout when data source is not CSP](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [does not display missing info callout when data source is CSP](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [Table Tab](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | -| [displays resource name and id](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [does not display missing info callout for 3Ps](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [JSON Tab](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | -| [does not display missing info callout for 3Ps](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [should allow pagination with next](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [should allow pagination with previous](x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | -| [Get Filters](x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts) | describe | | | -| [negate an existing filter](x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts) | it | | | -| [<RulesContainer />](x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx) | describe | | | -| [displays rules with their initial state](x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx) | it | | | -| [<Rules />](x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx) | describe | | | -| [calls Benchmark API](x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx) | it | | | -| [Display success state when result request is resolved](x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx) | it | | | -| [use_change_csp_rule_state](x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | describe | | | -| [should call http.post with the correct parameters](x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | -| [should cancel queries and update query data onMutate](x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | -| [should invalidate queries onSettled](x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | -| [should restore previous query data onError](x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | -| [creates the new set of cache rules in a muted state when calling createRulesWithUpdatedState](x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | -| [creates the new cache with rules in a unmute state](x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | -| [<VulnerabilityFindingFlyout/>](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | | | -| [Header Info](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | | | -| [displays text details flyout header info](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | | | -| [JSON Tab](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | | | -| [show display Vulnerability JSON Tab](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | | | -| [Overview Summary Details Tab](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | | | -| [show display Vulnerability details in a Overview Tab](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | | | -| [show empty state for no fixes](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | | | -| [Flyout Pagination](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [should allow pagination with next](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [should allow pagination with previous](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [<Vulnerabilities />](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | describe | | | -| [No vulnerabilities state: not-deployed - shows NotDeployed instead of vulnerabilities ](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | -| [No vulnerabilities state: indexing - shows Indexing instead of vulnerabilities ](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | -| [No vulnerabilities state: index-timeout - shows IndexTimeout instead of vulnerabilities ](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | -| [No vulnerabilities state: unprivileged - shows Unprivileged instead of vulnerabilities ](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | -| [renders vuln_mgmt integrations installation prompt if vuln_mgmt integration is not installed](x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | -| [<VulnerabilityDashboard />](x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | describe | | | -| [renders vuln_mgmt integrations installation prompt if vuln_mgmt integration is not installed](x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | -| [No vulnerabilities state: not-deployed - shows NotDeployed instead of vulnerabilities ](x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | -| [No vulnerabilities state: indexing - shows Indexing instead of vulnerabilities ](x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | -| [No vulnerabilities state: index-timeout - shows IndexTimeout instead of vulnerabilities ](x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | -| [No vulnerabilities state: unprivileged - shows Unprivileged instead of vulnerabilities ](x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | -| [Vulnerabilities state: indexed - renders dashboard container on indexed state ](x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | -| [createBenchmarkScoreIndex](x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | describe | | | -| [should delete old index template from prev verions first](x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | -| [should create index template with the correct index pattern, index name and default ingest pipeline](x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | -| [should create index template the correct index patter, index name and default ingest pipeline but without lifecycle in serverless](x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | -| [should create index if does not exist](x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | -| [should updat index mapping if index exists](x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | -| [createTransformIfNotExist](x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | describe | | | -| [expect not to create if already exists](x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | -| [expect to create if does not already exist](x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | -| [expect not to create if get error is not 404](x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | -| [startTransformIfNotStarted](x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | describe | | | -| [expect not to start if state is ${state}](x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | -| [expect not to start if transform not found](x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | -| [expect to start if state is stopped](x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | -| [expect to attempt restart if state is failed](x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | -| [Benchmark Field Key Functions](x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | describe | | | -| [toBenchmarkDocFieldKey should keep the same benchmark id and version key for benchmark document](x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | -| [toBenchmarkDocFieldKey should convert benchmark version with . delimiter correctly](x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | -| [toBenchmarkMappingFieldKey should convert benchmark version with _ delimiter correctly](x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | -| [toBenchmarkMappingFieldKey should handle benchmark version with dots correctly](x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | -| [MAPPING_VERSION_DELIMITER should be an underscore](x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | -| [Cloud Security Posture Plugin](x-pack/plugins/cloud_security_posture/server/plugin.test.ts) | describe | | | -| [start()](x-pack/plugins/cloud_security_posture/server/plugin.test.ts) | describe | | | -| [should initialize when package installed](x-pack/plugins/cloud_security_posture/server/plugin.test.ts) | it | | | -| [should not initialize when package is not installed](x-pack/plugins/cloud_security_posture/server/plugin.test.ts) | it | | | -| [should not initialize when other package is created](x-pack/plugins/cloud_security_posture/server/plugin.test.ts) | it | | | -| [packagePolicyPostCreate should return the same received policy](x-pack/plugins/cloud_security_posture/server/plugin.test.ts) | it | | | -| [getSortedCspBenchmarkRules](x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | describe | | | -| [sorts by metadata.benchmark.rule_number, invalid semantic version still should still get sorted and empty values should be sorted last](x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | -| [edge case - returns empty array if input is empty](x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | -| [edge case - returns sorted array even if input only has one element](x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | -| [returns sorted array even with undefined or null properties](x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | -| [returns sorted array with invalid semantic versions](x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | -| [benchmarks API](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | -| [validate the API route path](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should accept to a user with fleet.all privilege](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should reject to a user without fleet.all privilege](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [test input schema](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | -| [expect to find default values](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [expect to find package_policy_name](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should throw when page field is not a positive integer](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should throw when per_page field is not a positive integer](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should throw when sort_field is not string](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should not throw when sort_field is a string](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should throw when sort_order is not ](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should not throw when ](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should not throw when ](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should not throw when fields is a known string literal](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [test benchmarks utils](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | -| [test getAgentPolicies](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | -| [should return one agent policy id when there is duplication](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [should return full policy ids list when there is no id duplication](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [test addPackagePolicyCspBenchmarkRule](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | -| [should retrieve the rules count by the filtered benchmark type](x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | -| [compliance dashboard permissions API](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.test.ts) | describe | | | -| [should accept to a user with fleet.all privilege](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.test.ts) | it | | | -| [should reject to a user without fleet.all privilege](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.test.ts) | it | | | -| [getBenchmarksFromAggs](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts) | describe | | | -| [should return value matching ComplianceDashboardDataV2["benchmarks"]](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts) | it | | | -| [getClustersFromAggs](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts) | describe | | | -| [should return value matching ComplianceDashboardData["clusters"]](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts) | it | | | -| [getPostureStatsFromAggs](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts) | describe | | | -| [should return value matching ComplianceDashboardData["resourcesTypes"]](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts) | it | | | -| [roundScore](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | describe | | | -| [should return decimal values with one fraction digit](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | -| [calculatePostureScore](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | describe | | | -| [should return calculated posture score](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | -| [getStatsFromFindingsEvaluationsAggs](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | describe | | | -| [should throw error in case no findings were found](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | -| [should return value matching ComplianceDashboardData["stats"]](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | -| [checks for stability in case one of the values is zero](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | -| [should return zero on all stats if there are no failed or passed findings](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | -| [getTrendsFromQueryResult](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts) | describe | | | -| [should return value matching Trends type definition, in descending order, and with postureScore](x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts) | it | | | -| [calculateIntegrationStatus for cspm](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | describe | | | -| [Verify status when CSP package is not installed](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are no permission for cspm](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are no findings, no healthy agents and no installed policy templates](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are findings and installed policies but no healthy agents](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are findings ,installed policies and healthy agents](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are no findings ,installed policies and no healthy agents](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are installed policies, healthy agents and no findings](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are installed policies, healthy agents and no findings and been more than 10 minutes](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are installed policies, healthy agents past findings but no recent findings](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [calculateIntegrationStatus for vul_mgmt](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | describe | | | -| [Verify status when there are no permission for vul_mgmt](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are no vul_mgmt findings, no healthy agents and no installed policy templates](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are vul_mgmt findings and installed policies but no healthy agents](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are vul_mgmt findings ,installed policies and healthy agents](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are no vul_mgmt findings ,installed policies and no healthy agents](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are installed policies, healthy agents and no vul_mgmt findings](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are installed policies, healthy agents and no vul_mgmt findings and been more than 10 minutes](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are installed policies, healthy agents and no vul_mgmt findings and been more than 1 hour](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [Verify status when there are installed policies, healthy agents past vul_mgmt findings but no recent findings](x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | -| [finding stats task state](x-pack/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | describe | | | -| [v1](x-pack/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | describe | | | -| [should work on empty object when running the up migration](x-pack/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | it | | | -| [shouldn](x-pack/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | it | | | -| [should drop unknown properties when running the up migration](x-pack/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | it | | | -</details> - -## Directory: x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture - -**Total Tests:** 43 | **Skipped:** 6 (13.95%) | **Todo:** 0 (0.00%) - -![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/SERVERLESS-pink) ![](https://img.shields.io/badge/API-INTEGRATION-purple) ![](https://img.shields.io/badge/HAS-SKIP-yellow) - -<details> -<summary>Test Details</summary> - -| Test Label | Type | Skipped | Todo | -|------------|------|---------|------| -| [GET /internal/cloud_security_posture/benchmark](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | describe | | | -| [Should return non-empty array filled with Rules if user has CSP integrations](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | it | | | -| [Should return array size 2 when we set per page to be only 2 (total element is still 3)](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | it | | | -| [Should return array size 2 when we set per page to be only 2 (total element is still 3)](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | it | | | -| [Should return empty array when we set page to be above the last page number](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | it | | | -| [GET /internal/cloud_security_posture/benchmark](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v2.ts) | describe | | | -| [Should return all benchmarks if user has CSP integrations](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v2.ts) | it | | | -| [GET internal/cloud_security_posture/rules/_find](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | describe | | | -| [Should return 500 error code when not provide package policy id or benchmark id](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 500 error code when provide both package policy id and benchmark id](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 404 status code when the package policy ID does not exist](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 200 status code and filter rules by benchmarkId](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 200 status code, and only requested fields in the response](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 200 status code, items sorted by metadata.section field](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 200 status code and paginate rules with a limit of PerPage](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [cloud_security_posture](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/index.ts) | describe | | | -| [Intercept the usage API request sent by the metering background task manager](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Should intercept usage API request for CSPM](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Should intercept usage API request for KSPM](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Should intercept usage API request for CNVM](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Should intercept usage API request for Defend for Containers](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Should intercept usage API request with all integrations usage records](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [GET /internal/cloud_security_posture/status](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | describe | | | -| [STATUS = INDEXED TEST](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | describe | | | -| [Return kspm status indexed when logs-cloud_security_posture.findings_latest-default contains new kspm documents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | it | | | -| [Return cspm status indexed when logs-cloud_security_posture.findings_latest-default contains new cspm documents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | it | | | -| [Return vuln status indexed when logs-cloud_security_posture.vulnerabilities_latest-default contains new documents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | it | | | -| [GET /internal/cloud_security_posture/status](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | describe | | | -| [STATUS = INDEXING TEST](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | describe | | | -| [Return kspm status indexing when logs-cloud_security_posture.findings_latest-default doesn](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | it | | | -| [Return cspm status indexing when logs-cloud_security_posture.findings_latest-default doesn](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | it | | | -| [Return vuln status indexing when logs-cloud_security_posture.vulnerabilities_latest-default doesn](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | it | | | -| [GET /internal/cloud_security_posture/status](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | describe | | | -| [STATUS = NOT-DEPLOYED and STATUS = NOT-INSTALLED TEST](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | describe | | | -| [Should return not-deployed when installed kspm, no findings on either indices and no healthy agents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | -| [Should return not-deployed when installed cspm, no findings on either indices and no healthy agents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | -| [Should return not-deployed when installed cnvm, no findings on either indices and no healthy agents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | -| [Verify cloud_security_posture telemetry payloads](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | describe | | | -| [includes only KSPM findings](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | -| [includes only CSPM findings](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | -| [includes CSPM and KSPM findings](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | -| [](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | -| [includes KSPM findings without posture_type and CSPM findings as well](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | -</details> - -## Directory: x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture - -**Total Tests:** 33 | **Skipped:** 3 (9.09%) | **Todo:** 0 (0.00%) - -![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/SERVERLESS-pink) ![](https://img.shields.io/badge/HAS-SKIP-yellow) - -<details> -<summary>Test Details</summary> - -| Test Label | Type | Skipped | Todo | -|------------|------|---------|------| -| [Agentless API Serverless](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/create_agent.ts) | describe | | | -| [should create agentless-agent](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/create_agent.ts) | it | | | -| [should create default agent-based agent](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/create_agent.ts) | it | | | -| [cloud_security_posture](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/index.ts) | describe | | | -| [Serverless - Agentless CIS Integration Page](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | | | -| [Serverless - Agentless CIS_AWS Single Account Launch Cloud formation](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | | | -| [should show CIS_AWS Launch Cloud formation button when credentials selector is direct access keys and package version is ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | | | -| [should hide CIS_AWS Launch Cloud formation button when credentials selector is temporary keys and package version is less than ${previousPackageVersion}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | | | -| [Serverless - Agentless CIS_AWS ORG Account Launch Cloud formation](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | | | -| [should show CIS_AWS Launch Cloud formation button when credentials selector is direct access keys and package version is ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [should hide CIS_AWS Launch Cloud formation button when credentials selector is temporary keys and package version is less than ${previousPackageVersion}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | | | -| [Serverless - Agentless CIS_AWS edit flow](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | | | -| [user should save and edit agentless integration policy](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | | | -| [Serverless - Agentless CIS_AWS Create flow](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [user should save agentless integration policy when there are no api or validation errors and button is not disabled](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Agentless CIS Integration Page](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | describe | | | -| [Agentless CIS_GCP Single Account Launch Cloud shell](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | describe | | | -| [should show CIS_GCP Launch Cloud Shell button when package version is ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | -| [should hide CIS_GCP Launch Cloud Shell button when package version is less than ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | -| [Agentless CIS_GCP ORG Account Launch Cloud Shell](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | describe | | | -| [should show CIS_GCP Launch Cloud Shell button when package version is ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | -| [should hide CIS_GCP Launch Cloud shell button when package version is ${previousPackageVersion}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | -| [Serverless - Agentless CIS_GCP edit flow](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | describe | | | -| [user should save and edit agentless integration policy](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | -| [cloud_security_posture](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/index.ts) | describe | | | -| [Cloud Posture Dashboard Page](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts) | describe | | | -| [Kubernetes Dashboard](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts) | describe | | | -| [displays accurate summary compliance score](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts) | it | | | -| [[Essentials PLI] Test Cloud Security Posture Integrations on Serverless](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/csp_integrations_form.essentials.ts) | describe | | | -| [[Essentials PLI] Integration installation form should be available with Essentials or Complete PLI](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/csp_integrations_form.essentials.ts) | it | | | -| [Test Cloud Security Posture Integrations on Serverless](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/csp_integrations_form.ts) | describe | | | -| [Integration installation form should not be available without required PLI](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/csp_integrations_form.ts) | it | | | -| [cloud_security_posture](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/index.ts) | describe | | | -</details> - -## Directory: x-pack/test/api_integration/apis/cloud_security_posture - -**Total Tests:** 65 | **Skipped:** 0 (0.00%) | **Todo:** 0 (0.00%) - -![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/API-INTEGRATION-purple) - -<details> -<summary>Test Details</summary> - -| Test Label | Type | Skipped | Todo | -|------------|------|---------|------| -| [GET /internal/cloud_security_posture/benchmark](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | describe | | | -| [Should return non-empty array filled with Rules if user has CSP integrations](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | it | | | -| [Should return array size 2 when we set per page to be only 2 (total element is still 3)](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | it | | | -| [Should return array size 2 when we set per page to be only 2 (total element is still 3)](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | it | | | -| [Should return empty array when we set page to be above the last page number](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | it | | | -| [GET /internal/cloud_security_posture/benchmark](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v2.ts) | describe | | | -| [Should return all benchmarks if user has CSP integrations](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v2.ts) | it | | | -| [GET internal/cloud_security_posture/rules/_find](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | describe | | | -| [Should return 500 error code when not provide package policy id or benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 500 error code when provide both package policy id and benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 404 status code when the package policy ID does not exist](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 200 status code and filter rules by benchmarkId](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 200 status code, and only requested fields in the response](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 200 status code, items sorted by metadata.section field](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [Should return 200 status code and paginate rules with a limit of PerPage](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | -| [cloud_security_posture](x-pack/test/api_integration/apis/cloud_security_posture/index.ts) | describe | | | -| [GET internal/cloud_security_posture/rules/_find](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | describe | | | -| [Should return 500 error code when not provide package policy id or benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | -| [Should return 500 error code when provide both package policy id and benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | -| [Should return 404 status code when the package policy ID does not exist](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | -| [Should return 200 status code and filter rules by benchmarkId](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | -| [Should return 200 status code, and only requested fields in the response](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | -| [Should return 200 status code, items sorted by metadata.section field](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | -| [Should return 200 status code and paginate rules with a limit of PerPage](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | -| [GET internal/cloud_security_posture/rules/_find](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | describe | | | -| [Should return 500 error code when not provide benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | -| [Should return 200 status code and filter rules by benchmarkId and benchmarkVersion](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | -| [Should return 200 status code, and only requested fields in the response](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | -| [Should return 200 status code, items sorted by metadata.section field](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | -| [Should return 200 status code and paginate rules with a limit of PerPage](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | -| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | describe | | | -| [STATUS = INDEX_TIMEOUT TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | describe | | | -| [Should return index-timeout when installed kspm, has findings only on logs-cloud_security_posture.findings-default* and it has been more than 10 minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | it | | | -| [Should return index-timeout when installed cspm, has findings only on logs-cloud_security_posture.findings-default* and it has been more than 10 minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | it | | | -| [Should return index-timeout when installed cnvm, has findings only on logs-cloud_security_posture.vulnerabilities-default* and it has been more than 4 hours minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | it | | | -| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | describe | | | -| [STATUS = INDEXED TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | describe | | | -| [Return hasMisconfigurationsFindings true when there are latest findings but no installed integrations](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | -| [Return hasMisconfigurationsFindings true when there are only findings in third party index](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | -| [Return hasMisconfigurationsFindings false when there are no findings](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | -| [Return kspm status indexed when logs-cloud_security_posture.findings_latest-default contains new kspm documents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | -| [Return cspm status indexed when logs-cloud_security_posture.findings_latest-default contains new cspm documents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | -| [Return vuln status indexed when logs-cloud_security_posture.vulnerabilities_latest-default contains new documents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | -| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | describe | | | -| [STATUS = INDEXING TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | describe | | | -| [Return kspm status indexing when logs-cloud_security_posture.findings_latest-default doesn](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | it | | | -| [Return cspm status indexing when logs-cloud_security_posture.findings_latest-default doesn](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | it | | | -| [Return vuln status indexing when logs-cloud_security_posture.vulnerabilities_latest-default doesn](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | it | | | -| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | describe | | | -| [STATUS = NOT-DEPLOYED and STATUS = NOT-INSTALLED TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | describe | | | -| [Should return not-deployed when installed kspm, no findings on either indices and no healthy agents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | -| [Should return not-deployed when installed cspm, no findings on either indices and no healthy agents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | -| [Should return not-deployed when installed cnvm, no findings on either indices and no healthy agents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | -| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | describe | | | -| [STATUS = UNPRIVILEGED TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | describe | | | -| [Return unprivileged for cspm, kspm, vuln_mgmt when users don](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | it | | | -| [status = unprivileged test indices](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | describe | | | -| [Return unprivileged when missing access to findings_latest index](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | it | | | -| [Return unprivileged when missing access to score index](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | it | | | -| [Return unprivileged when missing access to vulnerabilities_latest index](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | it | | | -| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | describe | | | -| [STATUS = WAITING_FOR_RESULT TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | describe | | | -| [Should return waiting_for_result when installed kspm, has no findings and it has been less than 10 minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | it | | | -| [Should return waiting_for_result when installed cspm, has no findings and it has been less than 10 minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | it | | | -| [Should return waiting_for_result when installed cnvm, has no findings and it has been less than 4 hours minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | it | | | -</details> - -## Directory: x-pack/test/cloud_security_posture_api - -**Total Tests:** 58 | **Skipped:** 2 (3.45%) | **Todo:** 0 (0.00%) - -![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/API-INTEGRATION-purple) ![](https://img.shields.io/badge/HAS-SKIP-yellow) - -<details> -<summary>Test Details</summary> - -| Test Label | Type | Skipped | Todo | -|------------|------|---------|------| -| [GET /internal/cloud_security_posture/benchmarks](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | describe | | | -| [Get Benchmark API](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | describe | | | -| [Verify cspm benchmark score is updated when muting rules](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | it | | | -| [Verify kspm benchmark score is updated when muting rules](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | it | | | -| [Get Benchmark API](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | describe | | | -| [Calling Benchmark API as User with no read access to Security](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | it | | | -| [Calling Benchmark API as User with read access to Security](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Verify update csp rules states API](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | describe | | | -| [mute benchmark rules successfully](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | -| [unmute rules successfully](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | -| [verify new rules are added and existing rules are set.](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | -| [mute detection rule successfully](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | -| [Expect to mute two benchmark rules and one detection rule](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | -| [Expect to save rules states when requesting to update empty object](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | -| [set wrong action input](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | -| [users without read privileges on cloud security should not be able to mute](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | -| [users with all privileges on cloud security should be able to mute](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | -| [Tests get rules states API](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | describe | | | -| [get rules states successfully](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | it | | | -| [get empty object when rules states not exists](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | it | | | -| [GET rules states API with user with read access](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [GET rules states API API with user without read access](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | it | | | -| [/internal/cloud_security_posture/detection_engine_rules/alerts/_status](x-pack/test/cloud_security_posture_api/routes/get_detection_engine_alerts_count_by_rule_tags.ts) | describe | | | -| [GET detection_engine_rules API with user that has specific access](x-pack/test/cloud_security_posture_api/routes/get_detection_engine_alerts_count_by_rule_tags.ts) | describe | | | -| [GET detection_engine_rules API with user with read access](x-pack/test/cloud_security_posture_api/routes/get_detection_engine_alerts_count_by_rule_tags.ts) | it | | | -| [GET detection_engine_rules API with user without read access](x-pack/test/cloud_security_posture_api/routes/get_detection_engine_alerts_count_by_rule_tags.ts) | it | | | -| [Cloud Security Posture](x-pack/test/cloud_security_posture_api/routes/index.ts) | describe | | | -| [GET /internal/cloud_security_posture/stats](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | -| [CSPM Compliance Dashboard Stats API](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | -| [should return CSPM cluster V1 ](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [should return CSPM benchmarks V2 ](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [KSPM Compliance Dashboard Stats API](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | -| [should return KSPM clusters V1 ](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [should return KSPM benchmarks V2](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [should return KSPM benchmarks V2](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [Compliance dashboard based on enabled rules](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | -| [should calculate cspm benchmarks posture score based only on enabled rules](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [should calculate kspm benchmarks posture score based only on enabled rules](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [GET stats API with user that has specific access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | -| [GET stats API V1 with user with read access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [GET stats API V1 with user with read access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [GET stats API V2 with user with read access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [GET stats API V2 with user without read access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | -| [GET /internal/cloud_security_posture/status](x-pack/test/cloud_security_posture_api/routes/status.ts) | describe | | | -| [GET status API with user that has specific access](x-pack/test/cloud_security_posture_api/routes/status.ts) | describe | | | -| [GET stats API with user with read access](x-pack/test/cloud_security_posture_api/routes/status.ts) | it | | | -| [GET status API with user without read access](x-pack/test/cloud_security_posture_api/routes/status.ts) | it | | | -| [Vulnerability Dashboard API](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | describe | | | -| [responds with a 200 status code and matching data mock](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | it | | | -| [returns a 400 error when necessary indices are nonexistent](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | it | | | -| [GET vulnerabilities dashboard API with users with read access to cloud security posture](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | it | | | -| [GET vulnerabilities dashboard API with users without read access to cloud security posture](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | it | | | -| [Verify cloud_security_posture telemetry payloads](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | describe | | | -| [includes only KSPM findings](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | -| [includes only CSPM findings](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | -| [includes CSPM and KSPM findings](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | -| [](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | -| [includes KSPM findings without posture_type and CSPM findings as well](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | -</details> - -## Directory: x-pack/test/cloud_security_posture_functional - -**Total Tests:** 223 | **Skipped:** 69 (30.94%) | **Todo:** 3 (1.35%) - -![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/HAS-SKIP-yellow) ![](https://img.shields.io/badge/HAS-TODO-green) - -<details> -<summary>Test Details</summary> - -| Test Label | Type | Skipped | Todo | -|------------|------|---------|------| -| [Agentless cloud](x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts) | describe | | | -| [should create agentless-agent](x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts) | it | | | -| [should create default agent-based agent](x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts) | it | | | -| [Benchmark Page - Sanity Tests](x-pack/test/cloud_security_posture_functional/cloud_tests/benchmark_sanity.ts) | describe | | | -| [Benchmark table exists](x-pack/test/cloud_security_posture_functional/cloud_tests/benchmark_sanity.ts) | it | | | -| [Benchmarks count is more than 0](x-pack/test/cloud_security_posture_functional/cloud_tests/benchmark_sanity.ts) | it | | | -| [For each benchmark, evaluation and complience are not empty](x-pack/test/cloud_security_posture_functional/cloud_tests/benchmark_sanity.ts) | it | | | -| [Cloud Posture Dashboard Page - Sanity Tests](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | describe | | | -| [Cloud Dashboard](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | describe | | | -| [displays compliance score greater than 40](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | -| [displays all compliance scores](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | -| [displays a number of resources evaluated greater than 1500](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | -| [Compliance By CIS sections have non empty values](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | -| [Navigation to Findings page](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | -| [Kubernetes Dashboard](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | describe | | | -| [displays compliance score greater than 80](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | -| [displays a number of resources evaluated greater than 150](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | -| [Compliance By CIS sections have non empty values](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | -| [Navigation to Findings page](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | -| [Findings Page - Sanity Tests](x-pack/test/cloud_security_posture_functional/cloud_tests/findings_sanity.ts) | describe | | | -| [Findings - Querying data](x-pack/test/cloud_security_posture_functional/cloud_tests/findings_sanity.ts) | describe | | | -| [Querying ${provider} provider data](x-pack/test/cloud_security_posture_functional/cloud_tests/findings_sanity.ts) | it | | | -| [Paginating and sorting data](x-pack/test/cloud_security_posture_functional/cloud_tests/findings_sanity.ts) | it | | | -| [Cloud Security Posture](x-pack/test/cloud_security_posture_functional/cloud_tests/index.ts) | describe | | | -| [Data Views](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Verify data view is created once user reach the findings page - default space](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Verify data view is created once user reach the dashboard page - default space](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Verify data view is created once user reach the findings page - non default space](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Verify data view is created once user reach the dashboard page - non default space](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Verify data view is created once user with read permissions reach the dashboard page](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Cloud Security Posture](x-pack/test/cloud_security_posture_functional/data_views/index.ts) | describe | | | -| [Access with custom roles](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | describe | | | -| [Access with valid user role](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Access with invalid user role](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Access with custom roles - rule page](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | describe | | | -| [Access with valid user role](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | it | | | -| [Access with invalid user role](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Test adding Cloud Security Posture Integrations CNVM](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | describe | | | -| [CNVM AWS](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | describe | | | -| [Hyperlink on PostInstallation Modal should have the correct URL](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | it | | | -| [On Add Agent modal there should be modal that has Cloud Formation details as well as button that redirects user to Cloud formation page on AWS upon clicking them ](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | it | | | -| [Clicking on Launch CloudFormation on post intall modal should lead user to Cloud Formation page](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Test adding Cloud Security Posture Integrations CSPM AWS](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [CIS_AWS Organization Cloud Formation](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [Initial form state, AWS Org account, and CloudFormation should be selected by default](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [Hyperlink on PostInstallation Modal should have the correct URL](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [On Add Agent modal there should be modal that has Cloud Formation details as well as button that redirects user to Cloud formation page on AWS upon clicking them ](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [Clicking on Launch CloudFormation on post intall modal should lead user to Cloud Formation page](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [CIS_AWS Organization Manual Assume Role](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [CIS_AWS Organization Manual Assume Role Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [CIS_AWS Organization Manual Direct Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [CIS_AWS Organization Manual Direct Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [CIS_AWS Organization Manual Temporary Keys](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [CIS_AWS Organization Manual Temporary Keys Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [CIS_AWS Organization Manual Shared Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [CIS_AWS Organization Manual Shared Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [CIS_AWS Single Cloud Formation](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [CIS_AWS Single Cloud Formation workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [CIS_AWS Single Manual Assume Role](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [CIS_AWS Single Manual Assume Role Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [CIS_AWS Single Manual Direct Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [CIS_AWS Single Manual Direct Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [CIS_AWS Single Manual Temporary Keys](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [CIS_AWS Single Manual Temporary Keys Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [CIS_AWS Single Manual Shared Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | -| [CIS_AWS Single Manual Shared Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | -| [Test adding Cloud Security Posture Integrations CSPM AZURE](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | -| [Azure Organization ARM Template](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | -| [Azure Organization ARM Template Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | -| [Azure Organization Manual Managed Identity](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | -| [Azure Organization Manual Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | -| [Azure Organization Manual Service Principle with Client Secret](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | -| [Azure Organization Manual Service Principle with Client Secret Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | -| [Azure Organization Manual Service Principle with Client Certificate](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | -| [Azure Organization Manual Service Principle with Client Certificate Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | -| [Azure Single ARM Template](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | -| [Azure Single ARM Template Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | -| [Azure Single Manual Managed Identity](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | -| [Azure Single Manual Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | -| [Azure Single Manual Service Principle with Client Secret](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | -| [Azure Single Manual Service Principle with Client Secret Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | -| [Azure Single Manual Service Principle with Client Certificate](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | -| [Azure Single Manual Service Principle with Client Certificate Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | -| [Test adding Cloud Security Posture Integrations CSPM GCP](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | | | -| [CIS_GCP Organization](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Switch between Manual and Google cloud shell](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are no Project ID or Organization ID provided, it should use default value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID or Organization ID provided, it should use that value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Add Agent FLyout - Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID or Organization ID provided, it should use that value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Organization ID field on cloud shell command should only be shown if user chose Google Cloud Shell, if user chose Single Account it shouldn not show up](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Hyperlink on PostInstallation Modal should have the correct URL](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Clicking on Launch CloudShell on post intall modal should lead user to CloudShell page](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [CIS_GCP Organization Credentials File](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [CIS_GCP Organization Credentials File workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [CIS_GCP Organization Credentials JSON](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | | | -| [CIS_GCP Organization Credentials JSON workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | | | -| [CIS_GCP Single](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are no Project ID, it should use default value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID, it should use that value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Add Agent FLyout - Organization ID field on cloud shell command should only be shown if user chose Google Cloud Shell, if user chose Single Account it shouldn not show up](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [On add agent modal, if user chose Google Cloud Shell as their setup access; a google cloud shell modal should show up and clicking on the launch button will redirect user to Google cloud shell page](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Users are able to add CIS_GCP Integration with Manual settings using Credentials File](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Users are able to switch credentials_type from/to Credential JSON fields ](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Users are able to add CIS_GCP Integration with Manual settings using Credentials JSON](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Users are able to switch credentials_type from/to Credential File fields ](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Test adding Cloud Security Posture Integrations KSPM EKS](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | -| [KSPM EKS Assume Role](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | -| [KSPM EKS Assume Role workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | it | | | -| [KSPM EKS Direct Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | -| [KSPM EKS Direct Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | it | | | -| [KSPM EKS Temporary Keys](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | -| [KSPM EKS Temporary Keys Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | it | | | -| [KSPM EKS Shared Credentials](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | -| [KSPM EKS Shared Credentials Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | it | | | -| [Test adding Cloud Security Posture Integrations KSPM K8S](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts) | describe | | | -| [KSPM K8S](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts) | describe | | | -| [KSPM K8S Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts) | it | | | -| [Cloud Posture Dashboard Page](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | describe | | | -| [Kubernetes Dashboard](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | describe | | | -| [displays accurate summary compliance score](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | it | | | -| [TODO - Cloud Dashboard](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | describe | | ![](https://img.shields.io/badge/todo-green) | -| [todo - displays accurate summary compliance score](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | it | | ![](https://img.shields.io/badge/todo-green) | -| [Access with custom roles](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | describe | | | -| [Access with valid user role](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | it | | | -| [todo - Access with invalid user role](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | ![](https://img.shields.io/badge/todo-green) | -| [Findings Page - Alerts](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Create detection rule](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Creates a detection rule from the Take Action button and navigates to rule page](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Creates a detection rule from the Alerts section and navigates to rule page](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Rule details](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [The rule page contains the expected matching data](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Navigation](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Clicking on count of Rules should navigate to the rules page with benchmark tags as a filter](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Clicking on count of Alerts should navigate to the alerts page](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Findings Page - Grouping](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | -| [Default Grouping](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | -| [groups findings by resource and sort by compliance score desc](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | -| [groups findings by rule name and sort by compliance score desc](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | -| [groups findings by cloud account and sort by compliance score desc](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | -| [groups findings by Kubernetes cluster and sort by compliance score desc](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | -| [SearchBar](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | -| [add filter](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | -| [remove filter](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | -| [set search query](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | -| [Group table](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | -| [shows findings table when expanding](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | -| [Default Grouping - support muting rules](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | -| [groups findings by resource after muting rule](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | -| [Old Data](x-pack/test/cloud_security_posture_functional/pages/findings_old_data.ts) | describe | | | -| [Findings page with old data](x-pack/test/cloud_security_posture_functional/pages/findings_old_data.ts) | describe | | | -| [returns no Findings KSPM](x-pack/test/cloud_security_posture_functional/pages/findings_old_data.ts) | it | | | -| [returns no Findings CSPM](x-pack/test/cloud_security_posture_functional/pages/findings_old_data.ts) | it | | | -| [Findings Page onboarding](x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts) | describe | | | -| [clicking on the ](x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts) | it | | | -| [clicking on the ](x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts) | it | | | -| [clicking on the ](x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts) | it | | | -| [Findings Page - DataTable](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | -| [Table Sort](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | -| [sorts by a column, should be case sensitive/insensitive depending on the column](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | -| [Findings - Fields selector](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | -| [Add fields to the Findings DataTable](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | -| [Remove fields from the Findings DataTable](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | -| [Reset fields to default](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | -| [Findings Page - support muting rules](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | -| [verify only enabled rules appears](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | -| [Access with custom roles](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | -| [Access with valid user role](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | -| [Access with invalid user role](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | -| [Cloud Security Posture](x-pack/test/cloud_security_posture_functional/pages/index.ts) | describe | | | -| [Cloud Posture Rules Page](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Rules Page - Rules Counters](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Shows posture score when there are findings](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Clicking the posture score button leads to the dashboard](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Shows integrations count when there are findings](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Clicking the integrations counter button leads to the integration page](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Shows the failed findings counter when there are findings](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Clicking the failed findings button leads to the findings page](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Shows the disabled rules count](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Clicking the disabled rules button shows enables the disabled filter](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Shows empty state when there are no findings](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Rules Page - Bulk Action buttons](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [It should disable Enable option when there are all rules selected are already enabled ](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [It should disable both Enable and Disable options when there are no rules selected](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [It should disable Disable option when there are all rules selected are already Disabled](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Both option should not be disabled if selected rules contains both enabled and disabled rules](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Rules Page - Enable Rules and Disabled Rules Filter Toggle](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Should only display Enabled rules when Enabled Rules filter is ON](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Should only display Disabled rules when Disabled Rules filter is ON](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Rules Page - CIS Section & Rule Number filters](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Table should only show result that has the same section as in the Section filter](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Table should only show result that has the same section as in the Rule number filter](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Table should only show result that passes both Section and Rule number filter](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Rules Page - Flyout](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Users are able to Enable/Disable Rule from Switch on Rule Flyout](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Alerts section of Rules Flyout shows Disabled text when Rules are disabled](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Users are able to Enable/Disable Rule from Take Action on Rule Flyout](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Alerts section of Rules Flyout shows Detection Rule Counter component when Rules are enabled](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | -| [Vulnerabilities Page - Grouping](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | describe | | | -| [Default Grouping](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | describe | | | -| [groups vulnerabilities by cloud account and sort by number of vulnerabilities desc](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | -| [groups vulnerabilities by CVE and sort by number of vulnerabilities desc](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | -| [groups vulnerabilities by resource and sort by number of vulnerabilities desc](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | -| [SearchBar](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | describe | | | -| [add filter](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | -| [remove filter](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | -| [set search query](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | -| [Group table](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | describe | | | -| [shows vulnerabilities table when expanding](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | -| [Vulnerabilities Page - DataTable](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | describe | | | -| [SearchBar](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | describe | | | -| [add filter](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | -| [remove filter](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | -| [set search query](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | -| [Vulnerabilities - Fields selector](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | describe | | | -| [Add fields to the Vulnerabilities DataTable](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | -| [Remove fields from the Vulnerabilities DataTable](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | -| [Reset fields to default](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | -| [Vulnerability Dashboard Page](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | describe | | | -| [Vulnerability Dashboard](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | describe | | | -| [Page Header renders on startup](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | it | | | -| [Stats render accurate output](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | it | | | -| [should navigate to vulnerability findings page with high severity filter](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | it | | | -| [should navigate to vulnerability findings page with critical severity filter and no high severity filter](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | it | | | -</details> - diff --git a/x-pack/plugins/cloud_security_posture/jest.config.js b/x-pack/plugins/cloud_security_posture/jest.config.js deleted file mode 100644 index 82ecbd0c85592..0000000000000 --- a/x-pack/plugins/cloud_security_posture/jest.config.js +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/** @type {import('@jest/types').Config.InitialOptions} */ -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/cloud_security_posture'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/cloud_security_posture', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/cloud_security_posture/{common,public,server}/**/*.{ts,tsx}', - ], - // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - transformIgnorePatterns: [ - // ignore all node_modules except the modules below (monaco-editor, monaco-yaml, react-monaco-editor, etc) which requires babel transforms to handle dynamic import() - // since ESM modules are not natively supported in Jest yet (https://github.com/facebook/jest/issues/4842) - '[/\\\\]node_modules(?![\\/\\\\](byte-size|monaco-editor|monaco-yaml|monaco-languageserver-types|monaco-marker-data-provider|monaco-worker-manager|vscode-languageserver-types|react-monaco-editor|d3-interpolate|d3-color|langchain|langsmith|@cfworker|gpt-tokenizer|flat|@langchain|msw|@bundled-es-modules))[/\\\\].+\\.js$', - 'packages/kbn-pm/dist/index.js', - '[/\\\\]node_modules(?![\\/\\\\](langchain|langsmith|@langchain))/dist/[/\\\\].+\\.js$', - '[/\\\\]node_modules(?![\\/\\\\](langchain|langsmith|@langchain))/dist/util/[/\\\\].+\\.js$', - ], -}; diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/types.ts b/x-pack/plugins/cloud_security_posture/public/common/navigation/types.ts deleted file mode 100644 index f436558e085d9..0000000000000 --- a/x-pack/plugins/cloud_security_posture/public/common/navigation/types.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -export interface CspNavigationItem { - readonly name: string; - readonly path: string; - readonly disabled?: boolean; -} - -export interface CspPageNavigationItem extends CspNavigationItem { - id: CloudSecurityPosturePageId; -} - -export type CspPage = - | 'dashboard' - | 'cspm_dashboard' - | 'kspm_dashboard' - | 'vulnerability_dashboard' - | 'findings' - | 'benchmarks'; -export type CspBenchmarksPage = 'rules'; - -/** - * All the IDs for the cloud security posture pages. - * This needs to match the cloud security posture page entries in `SecurityPageName` in `x-pack/plugins/security_solution/common/constants.ts`. - */ -export type CloudSecurityPosturePageId = - | 'cloud_security_posture-dashboard' - | 'cloud_security_posture-cspm-dashboard' - | 'cloud_security_posture-kspm-dashboard' - | 'cloud_security_posture-vulnerability_dashboard' - | 'cloud_security_posture-findings' - | 'cloud_security_posture-benchmarks' - | 'cloud_security_posture-benchmarks-rules'; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/graph/route.ts b/x-pack/plugins/cloud_security_posture/server/routes/graph/route.ts deleted file mode 100644 index 9fb817b275a0d..0000000000000 --- a/x-pack/plugins/cloud_security_posture/server/routes/graph/route.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - graphRequestSchema, - graphResponseSchema, -} from '@kbn/cloud-security-posture-common/schema/graph/latest'; -import { transformError } from '@kbn/securitysolution-es-utils'; -import type { GraphRequest } from '@kbn/cloud-security-posture-common/types/graph/v1'; -import { GRAPH_ROUTE_PATH } from '../../../common/constants'; -import { CspRouter } from '../../types'; -import { getGraph as getGraphV1 } from './v1'; - -export const defineGraphRoute = (router: CspRouter) => - router.versioned - .post({ - access: 'internal', - enableQueryVersion: true, - path: GRAPH_ROUTE_PATH, - security: { - authz: { - requiredPrivileges: ['cloud-security-posture-read'], - }, - }, - }) - .addVersion( - { - version: '1', - validate: { - request: { - body: graphRequestSchema, - }, - response: { - 200: { body: graphResponseSchema }, - }, - }, - }, - async (context, request, response) => { - const { nodesLimit, showUnknownTarget = false } = request.body; - const { eventIds, start, end, esQuery } = request.body.query as GraphRequest['query']; - const cspContext = await context.csp; - const spaceId = (await cspContext.spaces?.spacesService?.getActiveSpace(request))?.id; - - try { - const resp = await getGraphV1({ - services: { - logger: cspContext.logger, - esClient: cspContext.esClient, - }, - query: { - eventIds, - spaceId, - start, - end, - esQuery, - }, - showUnknownTarget, - nodesLimit, - }); - - return response.ok({ body: resp }); - } catch (err) { - const error = transformError(err); - cspContext.logger.error(`Failed to fetch graph ${err}`); - cspContext.logger.error(err); - return response.customError({ - body: { message: error.message }, - statusCode: error.statusCode, - }); - } - } - ); diff --git a/x-pack/plugins/cloud_security_posture/server/types.ts b/x-pack/plugins/cloud_security_posture/server/types.ts deleted file mode 100644 index df812fe534722..0000000000000 --- a/x-pack/plugins/cloud_security_posture/server/types.ts +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { CloudSetup } from '@kbn/cloud-plugin/server'; -import type { - PluginSetup as DataPluginSetup, - PluginStart as DataPluginStart, -} from '@kbn/data-plugin/server'; -import type { LicensingPluginStart } from '@kbn/licensing-plugin/server'; -import { PluginStart as DataViewsPluginStart } from '@kbn/data-views-plugin/server'; -import { - TaskManagerSetupContract, - TaskManagerStartContract, -} from '@kbn/task-manager-plugin/server'; -import type { - IRouter, - CoreStart, - CustomRequestHandlerContext, - Logger, - SavedObjectsClientContract, - IScopedClusterClient, -} from '@kbn/core/server'; -import type { - AgentService, - PackageService, - AgentPolicyServiceInterface, - PackagePolicyClient, -} from '@kbn/fleet-plugin/server'; -import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; -import type { CspStatusCode, IndexDetails } from '@kbn/cloud-security-posture-common'; -import type { FleetStartContract, FleetRequestHandlerContext } from '@kbn/fleet-plugin/server'; -import { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; -import type { AlertingApiRequestHandlerContext } from '@kbn/alerting-plugin/server'; -import type { AlertingPluginSetup } from '@kbn/alerting-plugin/public/plugin'; -import { SpacesPluginStart } from '@kbn/spaces-plugin/server'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface CspServerPluginSetup {} - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface CspServerPluginStart {} - -export interface CspServerPluginSetupDeps { - // required - data: DataPluginSetup; - taskManager: TaskManagerSetupContract; - security: SecurityPluginSetup; - cloud: CloudSetup; - alerting: AlertingPluginSetup; - // optional - usageCollection?: UsageCollectionSetup; -} - -export interface CspServerPluginStartDeps { - // required - data: DataPluginStart; - fleet: FleetStartContract; - taskManager: TaskManagerStartContract; - security: SecurityPluginStart; - licensing: LicensingPluginStart; - dataViews: DataViewsPluginStart; - spaces?: SpacesPluginStart; -} - -export type CspServerPluginStartServices = Promise< - [CoreStart, CspServerPluginStartDeps, CspServerPluginStart] ->; - -export interface CspApiRequestHandlerContext { - user: ReturnType<SecurityPluginStart['authc']['getCurrentUser']>; - logger: Logger; - esClient: IScopedClusterClient; - soClient: SavedObjectsClientContract; - encryptedSavedObjects: SavedObjectsClientContract; - agentPolicyService: AgentPolicyServiceInterface; - agentService: AgentService; - packagePolicyService: PackagePolicyClient; - packageService: PackageService; - spaces?: SpacesPluginStart; - - isPluginInitialized(): boolean; -} - -export type CspRequestHandlerContext = CustomRequestHandlerContext<{ - csp: CspApiRequestHandlerContext; - fleet: FleetRequestHandlerContext['fleet']; - alerting: AlertingApiRequestHandlerContext; -}>; - -/** - * Convenience type for routers in Csp that includes the CspRequestHandlerContext type - * @internal - */ -export type CspRouter = IRouter<CspRequestHandlerContext>; - -export interface StatusResponseInfo { - statusCspm: CspStatusCode; - statusKspm: CspStatusCode; - statusVulnMgmt: CspStatusCode; - healthyAgentsCspm: number; - healthyAgentsKspm: number; - healthyAgentsVulMgmt: number; - installedPackagePoliciesTotalKspm: number; - installedPackagePoliciesTotalCspm: number; - installedPackagePoliciesTotalVulnMgmt: number; - indicesDetails: IndexDetails[]; - latestCspPackageVersion: string; - isPluginInitialized: boolean; -} diff --git a/x-pack/plugins/cloud_security_posture/tsconfig.json b/x-pack/plugins/cloud_security_posture/tsconfig.json deleted file mode 100755 index f3883e0fc43c6..0000000000000 --- a/x-pack/plugins/cloud_security_posture/tsconfig.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "scripts/**/*", - // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 - "server/**/*.json", - "public/**/*.json", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/data-plugin", - "@kbn/fleet-plugin", - "@kbn/fleet-plugin", - "@kbn/task-manager-plugin", - "@kbn/security-plugin", - "@kbn/config-schema", - "@kbn/licensing-plugin", - "@kbn/kibana-react-plugin", - "@kbn/shared-ux-link-redirect-app", - "@kbn/usage-collection-plugin", - "@kbn/cloud-plugin", - "@kbn/unified-search-plugin", - "@kbn/charts-plugin", - "@kbn/discover-plugin", - "@kbn/i18n", - "@kbn/ui-theme", - "@kbn/i18n-react", - "@kbn/es-query", - "@kbn/data-views-plugin", - "@kbn/std", - "@kbn/monaco", - "@kbn/utility-types", - "@kbn/core-logging-server-mocks", - "@kbn/securitysolution-es-utils", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/core-elasticsearch-server", - "@kbn/core-saved-objects-api-server", - "@kbn/shared-ux-router", - "@kbn/core-saved-objects-server", - "@kbn/share-plugin", - "@kbn/core-http-server", - "@kbn/core-http-browser", - "@kbn/discover-utils", - "@kbn/unified-data-table", - "@kbn/cell-actions", - "@kbn/unified-field-list", - "@kbn/unified-doc-viewer", - "@kbn/kibana-utils-plugin", - "@kbn/ui-actions-plugin", - "@kbn/core-http-server-mocks", - "@kbn/data-view-field-editor-plugin", - "@kbn/grouping", - "@kbn/alerting-plugin", - "@kbn/code-editor", - "@kbn/code-editor-mock", - "@kbn/search-types", - "@kbn/react-kibana-mount", - "@kbn/spaces-plugin", - "@kbn/cloud-security-posture-common", - "@kbn/cloud-security-posture", - "@kbn/analytics", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/cross_cluster_replication/jest.config.js b/x-pack/plugins/cross_cluster_replication/jest.config.js deleted file mode 100644 index 87d557b57a6a7..0000000000000 --- a/x-pack/plugins/cross_cluster_replication/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/cross_cluster_replication'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/cross_cluster_replication', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/cross_cluster_replication/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/cross_cluster_replication/tsconfig.json b/x-pack/plugins/cross_cluster_replication/tsconfig.json deleted file mode 100644 index bd442a71a86a4..0000000000000 --- a/x-pack/plugins/cross_cluster_replication/tsconfig.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/licensing-plugin", - "@kbn/management-plugin", - "@kbn/remote-clusters-plugin", - "@kbn/index-management-plugin", - "@kbn/features-plugin", - // optional plugins - "@kbn/usage-collection-plugin", - // required bundles - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/data-plugin", - "@kbn/license-api-guard-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/analytics", - "@kbn/test-jest-helpers", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/data_usage/common/utils.test.ts b/x-pack/plugins/data_usage/common/utils.test.ts deleted file mode 100644 index fc6b158c1caa0..0000000000000 --- a/x-pack/plugins/data_usage/common/utils.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { isDateRangeValid } from './utils'; - -describe('isDateRangeValid', () => { - describe('Valid ranges', () => { - it.each([ - ['both start and end date is `now`', { start: 'now', end: 'now' }], - ['start date is `now-10s` and end date is `now`', { start: 'now-10s', end: 'now' }], - ['bounded within the min and max date range', { start: 'now-8d', end: 'now-4s' }], - ])('should return true if %s', (_, { start, end }) => { - expect(isDateRangeValid({ start, end })).toBe(true); - }); - }); - - describe('Invalid ranges', () => { - it.each([ - ['starts before the min date', { start: 'now-11d', end: 'now-5s' }], - ['ends after the max date', { start: 'now-9d', end: 'now+2s' }], - [ - 'end date is before the start date even when both are within min and max date range', - { start: 'now-3s', end: 'now-10s' }, - ], - ])('should return false if the date range %s', (_, { start, end }) => { - expect(isDateRangeValid({ start, end })).toBe(false); - }); - }); -}); diff --git a/x-pack/plugins/data_usage/common/utils.ts b/x-pack/plugins/data_usage/common/utils.ts deleted file mode 100644 index 3fd7240153d4d..0000000000000 --- a/x-pack/plugins/data_usage/common/utils.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import dateMath from '@kbn/datemath'; - -export const DEFAULT_DATE_RANGE_OPTIONS = Object.freeze({ - autoRefreshOptions: { - enabled: false, - duration: 10000, - }, - startDate: 'now-24h/h', - endDate: 'now', - maxDate: 'now+1s', - minDate: 'now-9d', - recentlyUsedDateRanges: [], -}); - -export const momentDateParser = (date: string) => dateMath.parse(date); -export const transformToUTCtime = ({ - start, - end, - isISOString = false, -}: { - start: string; - end: string; - isISOString?: boolean; -}) => { - const utcOffset = momentDateParser(start)?.utcOffset() ?? 0; - const utcStart = momentDateParser(start)?.utc().add(utcOffset, 'm'); - const utcEnd = momentDateParser(end)?.utc().add(utcOffset, 'm'); - return { - start: isISOString ? utcStart?.toISOString() : momentDateParser(start), - end: isISOString ? utcEnd?.toISOString() : momentDateParser(end), - }; -}; - -export const isDateRangeValid = ({ start, end }: { start: string; end: string }): boolean => { - const startDate = momentDateParser(start); - const endDate = momentDateParser(end); - - if (!startDate || !endDate) { - return false; - } - const minDate = momentDateParser(DEFAULT_DATE_RANGE_OPTIONS.minDate); - const maxDate = momentDateParser(DEFAULT_DATE_RANGE_OPTIONS.maxDate); - return ( - startDate.isSameOrAfter(minDate, 's') && - endDate.isSameOrBefore(maxDate, 's') && - startDate <= endDate - ); -}; diff --git a/x-pack/plugins/data_usage/jest.config.js b/x-pack/plugins/data_usage/jest.config.js deleted file mode 100644 index f73ddf7ec31ee..0000000000000 --- a/x-pack/plugins/data_usage/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/data_usage'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/data_usage', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/datas_usage/{common,public}/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/data_usage/public/app/components/filters/charts_filters.tsx b/x-pack/plugins/data_usage/public/app/components/filters/charts_filters.tsx deleted file mode 100644 index 52561aa9f26f0..0000000000000 --- a/x-pack/plugins/data_usage/public/app/components/filters/charts_filters.tsx +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { memo, useCallback, useMemo } from 'react'; -import { EuiFilterGroup, EuiFlexGroup, EuiFlexItem, EuiSuperUpdateButton } from '@elastic/eui'; -import type { - DurationRange, - OnRefreshChangeProps, -} from '@elastic/eui/src/components/date_picker/types'; -import { useTestIdGenerator } from '../../../hooks/use_test_id_generator'; -import { useGetDataUsageMetrics } from '../../../hooks/use_get_usage_metrics'; -import { DateRangePickerValues, UsageMetricsDateRangePicker } from './date_picker'; -import { ChartsFilter, ChartsFilterProps } from './charts_filter'; -import { FilterName } from '../../hooks'; - -export interface ChartFiltersProps { - dateRangePickerState: DateRangePickerValues; - isDataLoading: boolean; - isUpdateDisabled: boolean; - filterOptions: Record<FilterName, ChartsFilterProps['filterOptions']>; - onRefresh: () => void; - onRefreshChange: (evt: OnRefreshChangeProps) => void; - onTimeChange: ({ start, end }: DurationRange) => void; - onClick: ReturnType<typeof useGetDataUsageMetrics>['refetch']; - showMetricsTypesFilter?: boolean; - 'data-test-subj'?: string; -} - -export const ChartFilters = memo<ChartFiltersProps>( - ({ - dateRangePickerState, - isDataLoading, - isUpdateDisabled, - filterOptions, - onClick, - onRefresh, - onRefreshChange, - onTimeChange, - showMetricsTypesFilter = false, - 'data-test-subj': dataTestSubj, - }) => { - const getTestId = useTestIdGenerator(dataTestSubj); - - const filters = useMemo(() => { - return ( - <> - {showMetricsTypesFilter && ( - <ChartsFilter filterOptions={filterOptions.metricTypes} data-test-subj={dataTestSubj} /> - )} - {!filterOptions.dataStreams.isFilterLoading && ( - <ChartsFilter filterOptions={filterOptions.dataStreams} data-test-subj={dataTestSubj} /> - )} - </> - ); - }, [dataTestSubj, filterOptions, showMetricsTypesFilter]); - - const onClickRefreshButton = useCallback(() => onClick(), [onClick]); - - return ( - <EuiFlexGroup responsive gutterSize="m" alignItems="center" justifyContent="flexEnd"> - <EuiFlexItem grow={2} /> - <EuiFlexItem grow={1}> - <EuiFilterGroup>{filters}</EuiFilterGroup> - </EuiFlexItem> - <EuiFlexItem grow={2}> - <UsageMetricsDateRangePicker - dateRangePickerState={dateRangePickerState} - isDataLoading={isDataLoading} - onRefresh={onRefresh} - onRefreshChange={onRefreshChange} - onTimeChange={onTimeChange} - data-test-subj={dataTestSubj} - /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiSuperUpdateButton - data-test-subj={getTestId('super-refresh-button')} - fill={false} - isLoading={isDataLoading} - isDisabled={isUpdateDisabled} - onClick={onClickRefreshButton} - /> - </EuiFlexItem> - </EuiFlexGroup> - ); - } -); - -ChartFilters.displayName = 'ChartFilters'; diff --git a/x-pack/plugins/data_usage/public/app/components/legend_action_item.tsx b/x-pack/plugins/data_usage/public/app/components/legend_action_item.tsx deleted file mode 100644 index 3b4f0d9f698f7..0000000000000 --- a/x-pack/plugins/data_usage/public/app/components/legend_action_item.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { memo } from 'react'; -import { EuiListGroupItem } from '@elastic/eui'; - -export const LegendActionItem = memo( - ({ label, onClick }: { label: string; onClick: () => Promise<void> | void }) => ( - <EuiListGroupItem label={label} onClick={onClick} size="s" /> - ) -); - -LegendActionItem.displayName = 'LegendActionItem'; diff --git a/x-pack/plugins/data_usage/public/app/components/page.tsx b/x-pack/plugins/data_usage/public/app/components/page.tsx deleted file mode 100644 index d7ff20f5e933f..0000000000000 --- a/x-pack/plugins/data_usage/public/app/components/page.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { PropsWithChildren } from 'react'; -import React, { memo, useMemo } from 'react'; -import type { CommonProps } from '@elastic/eui'; -import { - EuiPageHeader, - EuiPageSection, - EuiFlexGroup, - EuiFlexItem, - EuiTitle, - EuiSpacer, -} from '@elastic/eui'; - -interface DataUsagePageProps { - title: React.ReactNode; - subtitle?: React.ReactNode; - actions?: React.ReactNode; - restrictWidth?: boolean | number; - hasBottomBorder?: boolean; - hideHeader?: boolean; -} - -export const DataUsagePage = memo<PropsWithChildren<DataUsagePageProps & CommonProps>>( - ({ title, subtitle, children, restrictWidth = false, hasBottomBorder = true, ...otherProps }) => { - const header = useMemo(() => { - return ( - <EuiFlexGroup direction="column" gutterSize="none" alignItems="flexStart"> - <EuiFlexItem grow={false}> - <EuiTitle size="l"> - <span data-test-subj="dataUsage-page-title">{title}</span> - </EuiTitle> - </EuiFlexItem> - </EuiFlexGroup> - ); - }, [, title]); - - const description = useMemo(() => { - return subtitle ? ( - <span data-test-subj="dataUsage-page-description">{subtitle}</span> - ) : undefined; - }, [subtitle]); - - return ( - <div {...otherProps}> - <> - <EuiPageHeader - pageTitle={header} - description={description} - bottomBorder={hasBottomBorder} - restrictWidth={restrictWidth} - data-test-subj={'dataUsage-page-header'} - /> - <EuiSpacer size="l" /> - </> - <EuiPageSection paddingSize="none" color="transparent" restrictWidth={restrictWidth}> - {children} - </EuiPageSection> - </div> - ); - } -); - -DataUsagePage.displayName = 'DataUsagePage'; diff --git a/x-pack/plugins/data_usage/public/app/data_usage_metrics_page.tsx b/x-pack/plugins/data_usage/public/app/data_usage_metrics_page.tsx deleted file mode 100644 index adc53e12b5749..0000000000000 --- a/x-pack/plugins/data_usage/public/app/data_usage_metrics_page.tsx +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { DataUsagePage } from './components/page'; -import { DATA_USAGE_PAGE } from '../translations'; -import { DataUsageMetrics } from './components/data_usage_metrics'; - -export const DataUsageMetricsPage = () => { - return ( - <DataUsagePage - data-test-subj="DataUsagePage" - title={DATA_USAGE_PAGE.title} - subtitle={DATA_USAGE_PAGE.subTitle} - > - <DataUsageMetrics /> - </DataUsagePage> - ); -}; - -DataUsageMetricsPage.displayName = 'DataUsageMetricsPage'; diff --git a/x-pack/plugins/data_usage/public/app/hooks/use_charts_filter.tsx b/x-pack/plugins/data_usage/public/app/hooks/use_charts_filter.tsx deleted file mode 100644 index 012a6027aadb2..0000000000000 --- a/x-pack/plugins/data_usage/public/app/hooks/use_charts_filter.tsx +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useState, useEffect, useMemo } from 'react'; -import { DEFAULT_SELECTED_OPTIONS } from '../../../common'; -import { - METRIC_TYPE_VALUES, - METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP, - isDefaultMetricType, -} from '../../../common/rest_types'; -import { FILTER_NAMES } from '../../translations'; -import { useDataUsageMetricsUrlParams } from './use_charts_url_params'; -import { formatBytes } from '../../utils/format_bytes'; -import { ChartsFilterProps } from '../components/filters/charts_filter'; - -export type FilterName = keyof typeof FILTER_NAMES; - -export type FilterItems = Array<{ - key?: string; - label: string; - isGroupLabel?: boolean; - checked?: 'on' | undefined; - 'data-test-subj'?: string; -}>; - -export const useChartsFilter = ({ - filterOptions, -}: { - filterOptions: ChartsFilterProps['filterOptions']; -}): { - areDataStreamsSelectedOnMount: boolean; - items: FilterItems; - setItems: React.Dispatch<React.SetStateAction<FilterItems>>; - hasActiveFilters: boolean; - numActiveFilters: number; - numFilters: number; - setAreDataStreamsSelectedOnMount: (value: React.SetStateAction<boolean>) => void; - setUrlDataStreamsFilter: ReturnType< - typeof useDataUsageMetricsUrlParams - >['setUrlDataStreamsFilter']; - setUrlMetricTypesFilter: ReturnType< - typeof useDataUsageMetricsUrlParams - >['setUrlMetricTypesFilter']; -} => { - const { - dataStreams: selectedDataStreamsFromUrl, - metricTypes: selectedMetricTypesFromUrl, - setUrlMetricTypesFilter, - setUrlDataStreamsFilter, - } = useDataUsageMetricsUrlParams(); - const isMetricTypesFilter = filterOptions.filterName === 'metricTypes'; - const isDataStreamsFilter = filterOptions.filterName === 'dataStreams'; - - // track the state of selected data streams via URL - // when the page is loaded via selected data streams on URL - const [areDataStreamsSelectedOnMount, setAreDataStreamsSelectedOnMount] = - useState<boolean>(false); - - useEffect(() => { - if (selectedDataStreamsFromUrl && selectedDataStreamsFromUrl.length > 0) { - setAreDataStreamsSelectedOnMount(true); - } - // don't sync with changes to further selectedDataStreamsFromUrl - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - // filter options - const [items, setItems] = useState<FilterItems>( - isMetricTypesFilter - ? METRIC_TYPE_VALUES.map((metricType) => ({ - key: metricType, - label: METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP[metricType], - checked: selectedMetricTypesFromUrl - ? selectedMetricTypesFromUrl.includes(metricType) - ? 'on' - : undefined - : isDefaultMetricType(metricType) // default metrics are selected by default - ? 'on' - : undefined, - 'data-test-subj': `${filterOptions.filterName}-filter-option`, - })) - : isDataStreamsFilter && !!filterOptions.options.length - ? filterOptions.options?.map((filterOption, i) => ({ - key: filterOption, - label: filterOption, - append: formatBytes(filterOptions.appendOptions?.[filterOption] ?? 0), - checked: selectedDataStreamsFromUrl - ? selectedDataStreamsFromUrl.includes(filterOption) - ? 'on' - : undefined - : i < DEFAULT_SELECTED_OPTIONS - ? 'on' - : undefined, - 'data-test-subj': `${filterOptions.filterName}-filter-option`, - })) - : [] - ); - - const hasActiveFilters = useMemo(() => !!items.find((item) => item.checked === 'on'), [items]); - const numActiveFilters = useMemo( - () => items.filter((item) => item.checked === 'on').length, - [items] - ); - const numFilters = useMemo( - () => items.filter((item) => item.key && item.checked !== 'on').length, - [items] - ); - - return { - areDataStreamsSelectedOnMount, - items, - setItems, - hasActiveFilters, - numActiveFilters, - numFilters, - setAreDataStreamsSelectedOnMount, - setUrlMetricTypesFilter, - setUrlDataStreamsFilter, - }; -}; diff --git a/x-pack/plugins/data_usage/public/hooks/use_get_data_streams.ts b/x-pack/plugins/data_usage/public/hooks/use_get_data_streams.ts deleted file mode 100644 index d43c3fff139fb..0000000000000 --- a/x-pack/plugins/data_usage/public/hooks/use_get_data_streams.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query'; -import { useQuery } from '@tanstack/react-query'; -import type { IHttpFetchError } from '@kbn/core-http-browser'; -import { DATA_USAGE_DATA_STREAMS_API_ROUTE, DEFAULT_SELECTED_OPTIONS } from '../../common'; -import { useKibanaContextForPlugin } from '../utils/use_kibana'; - -type GetDataUsageDataStreamsResponse = Array<{ - name: string; - storageSizeBytes: number; - selected: boolean; -}>; - -export const useGetDataUsageDataStreams = ({ - selectedDataStreams, - options = { - enabled: false, - }, -}: { - selectedDataStreams?: string[]; - options?: UseQueryOptions<GetDataUsageDataStreamsResponse, IHttpFetchError>; -}): UseQueryResult<GetDataUsageDataStreamsResponse, IHttpFetchError> => { - const { http } = useKibanaContextForPlugin().services; - - return useQuery<GetDataUsageDataStreamsResponse, IHttpFetchError>({ - queryKey: ['get-data-usage-data-streams'], - ...options, - keepPreviousData: true, - queryFn: async ({ signal }) => { - const dataStreamsResponse = await http - .get<GetDataUsageDataStreamsResponse>(DATA_USAGE_DATA_STREAMS_API_ROUTE, { - signal, - version: '1', - }) - .catch((error) => { - throw error.body; - }); - - const augmentedDataStreamsBasedOnSelectedItems = dataStreamsResponse.reduce<{ - selected: GetDataUsageDataStreamsResponse; - rest: GetDataUsageDataStreamsResponse; - }>( - (acc, ds, i) => { - const item = { - name: ds.name, - storageSizeBytes: ds.storageSizeBytes, - selected: ds.selected, - }; - - if (selectedDataStreams?.includes(ds.name) && i < DEFAULT_SELECTED_OPTIONS) { - acc.selected.push({ ...item, selected: true }); - } else { - acc.rest.push({ ...item, selected: false }); - } - - return acc; - }, - { selected: [], rest: [] } - ); - - return [ - ...augmentedDataStreamsBasedOnSelectedItems.selected, - ...augmentedDataStreamsBasedOnSelectedItems.rest, - ]; - }, - }); -}; diff --git a/x-pack/plugins/data_usage/public/translations.tsx b/x-pack/plugins/data_usage/public/translations.tsx deleted file mode 100644 index 0996ec2bb6d50..0000000000000 --- a/x-pack/plugins/data_usage/public/translations.tsx +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const PLUGIN_NAME = i18n.translate('xpack.dataUsage.name', { - defaultMessage: 'Data Usage', -}); - -export const FILTER_NAMES = Object.freeze({ - metricTypes: i18n.translate('xpack.dataUsage.metrics.filter.metricTypes', { - defaultMessage: 'Metric types', - }), - dataStreams: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams', { - defaultMessage: 'Data streams', - }), -}); - -export const CHART_TITLES = Object.freeze({ - ingest_rate: i18n.translate('xpack.dataUsage.charts.ingestedMax', { - defaultMessage: 'Data Ingested', - }), - storage_retained: i18n.translate('xpack.dataUsage.charts.retainedMax', { - defaultMessage: 'Data Retained in Storage', - }), -}); - -export const DATA_USAGE_PAGE = Object.freeze({ - title: i18n.translate('xpack.dataUsage.name', { - defaultMessage: 'Data Usage', - }), - subTitle: i18n.translate('xpack.dataUsage.pageSubtitle', { - defaultMessage: 'Monitor data ingested and retained by data streams.', - }), -}); - -export const UX_LABELS = Object.freeze({ - filterSelectAll: i18n.translate('xpack.dataUsage.metrics.filter.selectAll', { - defaultMessage: 'Select all', - }), - filterClearAll: i18n.translate('xpack.dataUsage.metrics.filter.clearAll', { - defaultMessage: 'Clear all', - }), - filterSearchPlaceholder: (filterName: string) => - i18n.translate('xpack.dataUsage.metrics.filter.searchPlaceholder', { - defaultMessage: 'Search {filterName}', - values: { filterName }, - }), - filterEmptyMessage: (filterName: string) => - i18n.translate('xpack.dataUsage.metrics.filter.emptyMessage', { - defaultMessage: 'No {filterName} available', - values: { filterName }, - }), - dataQualityPopup: { - open: i18n.translate('xpack.dataUsage.metrics.dataQuality.open.actions', { - defaultMessage: 'Open data stream actions', - }), - copy: i18n.translate('xpack.dataUsage.metrics.dataQuality.copy.dataStream', { - defaultMessage: 'Copy data stream name', - }), - manage: i18n.translate('xpack.dataUsage.metrics.dataQuality.manage.dataStream', { - defaultMessage: 'Manage data stream', - }), - view: i18n.translate('xpack.dataUsage.metrics.dataQuality.view', { - defaultMessage: 'View data quality', - }), - }, -}); diff --git a/x-pack/plugins/data_usage/server/routes/internal/data_streams_handler.ts b/x-pack/plugins/data_usage/server/routes/internal/data_streams_handler.ts deleted file mode 100644 index 28967b9a0ee4a..0000000000000 --- a/x-pack/plugins/data_usage/server/routes/internal/data_streams_handler.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { RequestHandler } from '@kbn/core/server'; -import { DataUsageContext, DataUsageRequestHandlerContext } from '../../types'; -import { errorHandler } from '../error_handler'; -import { getMeteringStats } from '../../utils/get_metering_stats'; -import { DataStreamsRequestQuery } from '../../../common/rest_types/data_streams'; -import { NoIndicesMeteringError, NoPrivilegeMeteringError } from '../../errors'; - -export const getDataStreamsHandler = ( - dataUsageContext: DataUsageContext -): RequestHandler<never, DataStreamsRequestQuery, unknown, DataUsageRequestHandlerContext> => { - const logger = dataUsageContext.logFactory.get('dataStreamsRoute'); - return async (context, request, response) => { - const { includeZeroStorage } = request.query; - - logger.debug('Retrieving user data streams'); - - try { - const core = await context.core; - const { datastreams: meteringStats } = await getMeteringStats( - core.elasticsearch.client.asSecondaryAuthUser - ); - - const body = - meteringStats && !!meteringStats.length - ? meteringStats - .sort((a, b) => b.size_in_bytes - a.size_in_bytes) - .reduce<Array<{ name: string; storageSizeBytes: number }>>((acc, stat) => { - if (includeZeroStorage || stat.size_in_bytes > 0) { - acc.push({ - name: stat.name, - storageSizeBytes: stat.size_in_bytes ?? 0, - }); - } - return acc; - }, []) - : []; - - return response.ok({ - body, - }); - } catch (error) { - if (error.message.includes('security_exception')) { - return errorHandler(logger, response, new NoPrivilegeMeteringError()); - } else if (error.message.includes('index_not_found_exception')) { - return errorHandler(logger, response, new NoIndicesMeteringError()); - } - - return errorHandler(logger, response, error); - } - }; -}; diff --git a/x-pack/plugins/data_usage/tsconfig.json b/x-pack/plugins/data_usage/tsconfig.json deleted file mode 100644 index 8647f7957451a..0000000000000 --- a/x-pack/plugins/data_usage/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "index.ts", - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/i18n", - "@kbn/data-plugin", - "@kbn/kibana-react-plugin", - "@kbn/management-plugin", - "@kbn/react-kibana-context-render", - "@kbn/shared-ux-router", - "@kbn/ebt-tools", - "@kbn/share-plugin", - "@kbn/config-schema", - "@kbn/logging", - "@kbn/deeplinks-observability", - "@kbn/unified-search-plugin", - "@kbn/core-http-browser", - "@kbn/core-chrome-browser", - "@kbn/features-plugin", - "@kbn/index-management-shared-types", - "@kbn/repo-info", - "@kbn/cloud-plugin", - "@kbn/server-http-tools", - "@kbn/utility-types-jest", - "@kbn/datemath", - "@kbn/ui-theme", - "@kbn/i18n-react", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts b/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts index 0f5a12d862d7e..c8e775ab4db6c 100644 --- a/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts +++ b/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts @@ -7,15 +7,10 @@ import { coreMock } from '@kbn/core/public/mocks'; import { DataView } from '@kbn/data-views-plugin/common'; import { DiscoverAppLocator } from '@kbn/discover-plugin/common'; -import { ViewMode } from '@kbn/embeddable-plugin/public'; import type { Filter, RangeFilter } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; -import { ViewMode as ViewModeType } from '@kbn/presentation-publishing'; +import { ViewMode } from '@kbn/presentation-publishing'; import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; -import { - VisualizeEmbeddableContract, - VISUALIZE_EMBEDDABLE_TYPE, -} from '@kbn/visualizations-plugin/public'; import { BehaviorSubject } from 'rxjs'; import { Params, PluginDeps } from './abstract_explore_data_action'; import { ExploreDataChartAction, ExploreDataChartActionContext } from './explore_data_chart_action'; @@ -70,18 +65,18 @@ const setup = ( }; const action = new ExploreDataChartAction(params); - const embeddable: VisualizeEmbeddableContract = { - type: VISUALIZE_EMBEDDABLE_TYPE, - dataViews: new BehaviorSubject([ + const embeddable = { + type: 'anyEmbeddable', + dataViews: new BehaviorSubject<undefined | DataView[]>([ { id: 'index-ptr-foo', - }, + } as DataView, ]), - filters$: new BehaviorSubject([]), + filters$: new BehaviorSubject<Filter[]>([]), parentApi: { - viewMode: new BehaviorSubject(ViewMode.VIEW), + viewMode: new BehaviorSubject<ViewMode>('view'), }, - } as unknown as VisualizeEmbeddableContract; + }; const context = { filters, @@ -138,11 +133,11 @@ describe('"Explore underlying data" panel action', () => { embeddable.dataViews = new BehaviorSubject<undefined | DataView[]>([ { id: 'index-ptr-foo', - }, + } as DataView, { id: 'index-ptr-bar', - }, - ] as any as DataView[]); + } as DataView, + ]); const isCompatible = await action.isCompatible(context); @@ -171,7 +166,7 @@ describe('"Explore underlying data" panel action', () => { test('returns false if dashboard is in edit mode', async () => { const { action, embeddable, context } = setup(); if (embeddable.parentApi) { - embeddable.parentApi.viewMode = new BehaviorSubject<ViewModeType>(ViewMode.EDIT); + embeddable.parentApi.viewMode = new BehaviorSubject<ViewMode>('edit'); } const isCompatible = await action.isCompatible(context); diff --git a/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts b/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts index d2b84b6ddb7bf..abe0776d57f5f 100644 --- a/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts +++ b/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts @@ -8,14 +8,9 @@ import { coreMock } from '@kbn/core/public/mocks'; import { DataView } from '@kbn/data-views-plugin/common'; import { DiscoverAppLocator } from '@kbn/discover-plugin/common'; -import { ViewMode } from '@kbn/embeddable-plugin/public'; import { i18n } from '@kbn/i18n'; -import { ViewMode as ViewModeType } from '@kbn/presentation-publishing'; +import { ViewMode } from '@kbn/presentation-publishing'; import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; -import { - VisualizeEmbeddableContract, - VISUALIZE_EMBEDDABLE_TYPE, -} from '@kbn/visualizations-plugin/public'; import { BehaviorSubject } from 'rxjs'; import { Params, PluginDeps } from './abstract_explore_data_action'; import { ExploreDataContextMenuAction } from './explore_data_context_menu_action'; @@ -60,18 +55,17 @@ const setup = () => { }; const action = new ExploreDataContextMenuAction(params); - const embeddable: VisualizeEmbeddableContract = { - type: VISUALIZE_EMBEDDABLE_TYPE, - dataViews: new BehaviorSubject([ + const embeddable = { + type: 'anyEmbeddable', + dataViews: new BehaviorSubject<undefined | DataView[]>([ { id: 'index-ptr-foo', - }, + } as DataView, ]), parentApi: { - viewMode: new BehaviorSubject(ViewMode.VIEW), - localFilters: new BehaviorSubject([]), + viewMode: new BehaviorSubject<ViewMode>('view'), }, - } as unknown as VisualizeEmbeddableContract; + }; const context = { embeddable, @@ -126,11 +120,11 @@ describe('"Explore underlying data" panel action', () => { embeddable.dataViews = new BehaviorSubject<undefined | DataView[]>([ { id: 'index-ptr-foo', - }, + } as DataView, { id: 'index-ptr-bar', - }, - ] as any as DataView[]); + } as DataView, + ]); const isCompatible = await action.isCompatible(context); @@ -159,7 +153,7 @@ describe('"Explore underlying data" panel action', () => { test('returns false if dashboard is in edit mode', async () => { const { action, embeddable, context } = setup(); if (embeddable.parentApi) { - embeddable.parentApi.viewMode = new BehaviorSubject<ViewModeType>(ViewMode.EDIT); + embeddable.parentApi.viewMode = new BehaviorSubject<ViewMode>('edit'); } const isCompatible = await action.isCompatible(context); diff --git a/x-pack/plugins/discover_enhanced/tsconfig.json b/x-pack/plugins/discover_enhanced/tsconfig.json index 6839f4c2c18e1..79dad79381e97 100644 --- a/x-pack/plugins/discover_enhanced/tsconfig.json +++ b/x-pack/plugins/discover_enhanced/tsconfig.json @@ -13,7 +13,6 @@ "@kbn/lens-plugin", "@kbn/usage-collection-plugin", "@kbn/embeddable-plugin", - "@kbn/visualizations-plugin", "@kbn/ui-actions-plugin", "@kbn/i18n", "@kbn/es-query", diff --git a/x-pack/plugins/discover_enhanced/ui_tests/README.md b/x-pack/plugins/discover_enhanced/ui_tests/README.md index e6c5943e1533f..5de090d2145d4 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/README.md +++ b/x-pack/plugins/discover_enhanced/ui_tests/README.md @@ -3,9 +3,10 @@ First start the servers with ```bash // ESS -node scripts/scout_start_servers.js --stateful +node scripts/scout.js start-server --stateful + // Serverless -node scripts/scout_start_servers.js --serverless=es +node scripts/scout.js start-server --serverless=[es|oblt|security] ``` Then you can run the tests multiple times in another terminal with: @@ -13,8 +14,11 @@ Then you can run the tests multiple times in another terminal with: ```bash // ESS npx playwright test --config x-pack/plugins/discover_enhanced/ui_tests/playwright.config.ts --grep @ess + // Serverless -npx playwright test --config x-pack/plugins/discover_enhanced/ui_tests/playwright.config.ts --grep @svlSearch // @svlOblt, @svlSecurity +npx playwright test --config x-pack/plugins/discover_enhanced/ui_tests/playwright.config.ts --grep @svlSearch + +// @svlOblt, @svlSecurity ``` Test results are available in `x-pack/plugins/discover_enhanced/ui_tests/output` diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/error_handling.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/error_handling.spec.ts index 914558fbdc97f..82c45b52ad567 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/error_handling.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/error_handling.spec.ts @@ -5,10 +5,10 @@ * 2.0. */ -import { expect } from '@kbn/scout'; +import { expect, tags } from '@kbn/scout'; import { test, testData } from '../fixtures'; -test.describe('Discover app - errors', { tag: ['@ess'] }, () => { +test.describe('Discover app - errors', { tag: tags.ESS_ONLY }, () => { test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { await kbnClient.savedObjects.clean({ types: ['search', 'index-pattern'] }); await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_search_embeddable.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_search_embeddable.spec.ts index 7103f2b25e633..6c37611dbc202 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_search_embeddable.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_search_embeddable.spec.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ScoutWorkerFixtures, expect } from '@kbn/scout'; +import { ScoutWorkerFixtures, expect, tags } from '@kbn/scout'; import { test, testData } from '../fixtures'; const createSavedSearch = async ( @@ -37,66 +37,62 @@ const createSavedSearch = async ( ], }); -test.describe( - 'Discover app - saved search embeddable', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, - () => { - const SAVED_SEARCH_TITLE = 'TempSearch'; - const SAVED_SEARCH_ID = '90943e30-9a47-11e8-b64d-95841ca0b247'; - test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { - await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); - await kbnClient.importExport.load(testData.KBN_ARCHIVES.DASHBOARD_DRILLDOWNS); - await uiSettings.set({ - defaultIndex: testData.DATA_VIEW_ID.LOGSTASH, // TODO: investigate why it is required for `node scripts/playwright_test.js` run - 'timepicker:timeDefaults': `{ "from": "${testData.LOGSTASH_DEFAULT_START_TIME}", "to": "${testData.LOGSTASH_DEFAULT_END_TIME}"}`, - }); +test.describe('Discover app - saved search embeddable', { tag: tags.DEPLOYMENT_AGNOSTIC }, () => { + const SAVED_SEARCH_TITLE = 'TempSearch'; + const SAVED_SEARCH_ID = '90943e30-9a47-11e8-b64d-95841ca0b247'; + test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { + await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); + await kbnClient.importExport.load(testData.KBN_ARCHIVES.DASHBOARD_DRILLDOWNS); + await uiSettings.set({ + defaultIndex: testData.DATA_VIEW_ID.LOGSTASH, // TODO: investigate why it is required for `node scripts/playwright_test.js` run + 'timepicker:timeDefaults': `{ "from": "${testData.LOGSTASH_DEFAULT_START_TIME}", "to": "${testData.LOGSTASH_DEFAULT_END_TIME}"}`, }); + }); - test.afterAll(async ({ kbnClient, uiSettings }) => { - await uiSettings.unset('defaultIndex', 'timepicker:timeDefaults'); - await kbnClient.savedObjects.cleanStandardList(); - }); + test.afterAll(async ({ kbnClient, uiSettings }) => { + await uiSettings.unset('defaultIndex', 'timepicker:timeDefaults'); + await kbnClient.savedObjects.cleanStandardList(); + }); - test.beforeEach(async ({ browserAuth, pageObjects }) => { - await browserAuth.loginAsPrivilegedUser(); - await pageObjects.dashboard.goto(); - }); + test.beforeEach(async ({ browserAuth, pageObjects }) => { + await browserAuth.loginAsPrivilegedUser(); + await pageObjects.dashboard.goto(); + }); - test('should allow removing the dashboard panel after the underlying saved search has been deleted', async ({ + test('should allow removing the dashboard panel after the underlying saved search has been deleted', async ({ + kbnClient, + page, + pageObjects, + }) => { + await pageObjects.dashboard.openNewDashboard(); + await createSavedSearch( kbnClient, - page, - pageObjects, - }) => { - await pageObjects.dashboard.openNewDashboard(); - await createSavedSearch( - kbnClient, - SAVED_SEARCH_ID, - SAVED_SEARCH_TITLE, - testData.DATA_VIEW_ID.LOGSTASH - ); - await pageObjects.dashboard.addPanelFromLibrary(SAVED_SEARCH_TITLE); - await page.testSubj.locator('savedSearchTotalDocuments').waitFor({ - state: 'visible', - }); + SAVED_SEARCH_ID, + SAVED_SEARCH_TITLE, + testData.DATA_VIEW_ID.LOGSTASH + ); + await pageObjects.dashboard.addPanelFromLibrary(SAVED_SEARCH_TITLE); + await page.testSubj.locator('savedSearchTotalDocuments').waitFor({ + state: 'visible', + }); - await pageObjects.dashboard.saveDashboard('Dashboard with deleted saved search'); - await kbnClient.savedObjects.delete({ - type: 'search', - id: SAVED_SEARCH_ID, - }); + await pageObjects.dashboard.saveDashboard('Dashboard with deleted saved search'); + await kbnClient.savedObjects.delete({ + type: 'search', + id: SAVED_SEARCH_ID, + }); - await page.reload(); - await page.waitForLoadingIndicatorHidden(); - await expect( - page.testSubj.locator('embeddableError'), - 'Embeddable error should be displayed' - ).toBeVisible(); + await page.reload(); + await page.waitForLoadingIndicatorHidden(); + await expect( + page.testSubj.locator('embeddableError'), + 'Embeddable error should be displayed' + ).toBeVisible(); - await pageObjects.dashboard.removePanel('embeddableError'); - await expect( - page.testSubj.locator('embeddableError'), - 'Embeddable error should not be displayed' - ).toBeHidden(); - }); - } -); + await pageObjects.dashboard.removePanel('embeddableError'); + await expect( + page.testSubj.locator('embeddableError'), + 'Embeddable error should not be displayed' + ).toBeHidden(); + }); +}); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_searches.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_searches.spec.ts index 1398f5f24ab27..94a0d6b7b0638 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_searches.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_searches.spec.ts @@ -31,98 +31,93 @@ const assertDataViewIsSelected = async (page: ExtendedScoutTestFixtures['page'], 'Incorrect data view is selected' ).toHaveText(name); -test.describe( - 'Discover app - saved searches', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, - () => { - const START_TIME = '2019-04-27T23:56:51.374Z'; - const END_TIME = '2019-08-23T16:18:51.821Z'; - const PANEL_NAME = 'Ecommerce Data'; - const SEARCH_QUERY = 'customer_gender:MALE'; - const SAVED_SEARCH_NAME = 'test-unselect-saved-search'; - const filterFieldAndValue = { - field: 'category', - value: `Men's Shoes`, - }; - - test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { - await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.ECOMMERCE); - await kbnClient.importExport.load(testData.KBN_ARCHIVES.DISCOVER); - await kbnClient.importExport.load(testData.KBN_ARCHIVES.ECOMMERCE); - await uiSettings.set({ - defaultIndex: testData.DATA_VIEW_ID.ECOMMERCE, - 'timepicker:timeDefaults': `{ "from": "${START_TIME}", "to": "${END_TIME}"}`, - }); +test.describe('Discover app - saved searches', { tag: ['@ess', '@svlSearch', '@svlOblt'] }, () => { + // TODO: Update to use an ES archive with an index accessible to 'viewer' + // for running this test against the Security serverless project. + const START_TIME = '2019-04-27T23:56:51.374Z'; + const END_TIME = '2019-08-23T16:18:51.821Z'; + const PANEL_NAME = 'Ecommerce Data'; + const SEARCH_QUERY = 'customer_gender:MALE'; + const SAVED_SEARCH_NAME = 'test-unselect-saved-search'; + const filterFieldAndValue = { + field: 'category', + value: `Men's Shoes`, + }; + + test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { + await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.ECOMMERCE); + await kbnClient.importExport.load(testData.KBN_ARCHIVES.DISCOVER); + await kbnClient.importExport.load(testData.KBN_ARCHIVES.ECOMMERCE); + await uiSettings.set({ + defaultIndex: testData.DATA_VIEW_ID.ECOMMERCE, + 'timepicker:timeDefaults': `{ "from": "${START_TIME}", "to": "${END_TIME}"}`, }); - - test.afterAll(async ({ kbnClient, uiSettings }) => { - await uiSettings.unset('defaultIndex', 'timepicker:timeDefaults'); - await kbnClient.savedObjects.cleanStandardList(); + }); + + test.afterAll(async ({ kbnClient, uiSettings }) => { + await uiSettings.unset('defaultIndex', 'timepicker:timeDefaults'); + await kbnClient.savedObjects.cleanStandardList(); + }); + + test.beforeEach(async ({ browserAuth }) => { + await browserAuth.loginAsPrivilegedUser(); + }); + + test('should customize time range on dashboards', async ({ pageObjects, page }) => { + await pageObjects.dashboard.goto(); + await pageObjects.dashboard.openNewDashboard(); + await pageObjects.dashboard.addPanelFromLibrary(PANEL_NAME); + await page.testSubj.locator('savedSearchTotalDocuments').waitFor({ + state: 'visible', }); - test.beforeEach(async ({ browserAuth }) => { - await browserAuth.loginAsPrivilegedUser(); + await pageObjects.dashboard.customizePanel({ + name: PANEL_NAME, + customTimeRageCommonlyUsed: { value: 'Last_90 days' }, }); - - test('should customize time range on dashboards', async ({ pageObjects, page }) => { - await pageObjects.dashboard.goto(); - await pageObjects.dashboard.openNewDashboard(); - await pageObjects.dashboard.addPanelFromLibrary(PANEL_NAME); - await page.testSubj.locator('savedSearchTotalDocuments').waitFor({ - state: 'visible', - }); - - await pageObjects.dashboard.customizePanel({ - name: PANEL_NAME, - customTimeRageCommonlyUsed: { value: 'Last_90 days' }, - }); - await expect( - page.testSubj.locator('embeddedSavedSearchDocTable').locator('.euiDataGrid__noResults'), - 'No results message in Saved Search panel should be visible' - ).toBeVisible(); + await expect( + page.testSubj.locator('embeddedSavedSearchDocTable').locator('.euiDataGrid__noResults'), + 'No results message in Saved Search panel should be visible' + ).toBeVisible(); + }); + + test(`should unselect saved search when navigating to a 'new'`, async ({ pageObjects, page }) => { + await pageObjects.discover.goto(); + await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); + await pageObjects.filterBar.addFilter({ + ...filterFieldAndValue, + operator: 'is', }); + await page.testSubj.fill('queryInput', SEARCH_QUERY); + await page.testSubj.click('querySubmitButton'); + await pageObjects.discover.waitForHistogramRendered(); - test(`should unselect saved search when navigating to a 'new'`, async ({ - pageObjects, - page, - }) => { - await pageObjects.discover.goto(); - await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); - await pageObjects.filterBar.addFilter({ + await pageObjects.discover.saveSearch(SAVED_SEARCH_NAME); + await pageObjects.discover.waitForHistogramRendered(); + + expect( + await pageObjects.filterBar.hasFilter({ ...filterFieldAndValue, - operator: 'is', - }); - await page.testSubj.fill('queryInput', SEARCH_QUERY); - await page.testSubj.click('querySubmitButton'); - await pageObjects.discover.waitForHistogramRendered(); - - await pageObjects.discover.saveSearch(SAVED_SEARCH_NAME); - await pageObjects.discover.waitForHistogramRendered(); - - expect( - await pageObjects.filterBar.hasFilter({ - ...filterFieldAndValue, - enabled: true, // Filter is enabled by default - }) - ).toBe(true); - await expect(page.testSubj.locator('queryInput')).toHaveText(SEARCH_QUERY); - - // create new search - await pageObjects.discover.clickNewSearch(); - await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); - await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); - - // change data view - await pageObjects.discover.selectDataView(testData.DATA_VIEW.LOGSTASH); - await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); - - // change data view again - await pageObjects.discover.selectDataView(testData.DATA_VIEW.ECOMMERCE); - await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); - - // create new search again - await pageObjects.discover.clickNewSearch(); - await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); - }); - } -); + enabled: true, // Filter is enabled by default + }) + ).toBe(true); + await expect(page.testSubj.locator('queryInput')).toHaveText(SEARCH_QUERY); + + // create new search + await pageObjects.discover.clickNewSearch(); + await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); + await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); + + // change data view + await pageObjects.discover.selectDataView(testData.DATA_VIEW.LOGSTASH); + await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); + + // change data view again + await pageObjects.discover.selectDataView(testData.DATA_VIEW.ECOMMERCE); + await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); + + // create new search again + await pageObjects.discover.clickNewSearch(); + await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); + }); +}); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions.spec.ts index 04836afb99b5b..40b07726b31e4 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions.spec.ts @@ -5,12 +5,12 @@ * 2.0. */ -import { expect } from '@kbn/scout'; +import { expect, tags } from '@kbn/scout'; import { test, testData, assertionMessages } from '../fixtures'; test.describe( 'Discover app - value suggestions: useTimeRange enabled', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, + { tag: tags.DEPLOYMENT_AGNOSTIC }, () => { test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_non_time_based.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_non_time_based.spec.ts index 319d8af3e93c9..d8035597fa0e4 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_non_time_based.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_non_time_based.spec.ts @@ -10,7 +10,9 @@ import { test, testData, assertionMessages } from '../fixtures'; test.describe( 'Discover app - value suggestions non-time based', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, + { tag: ['@ess', '@svlSearch', '@svlOblt'] }, + // TODO: Update to use an ES archive with an index accessible to 'viewer' + // for running this test against the Security serverless project. () => { test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.NO_TIME_FIELD); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_use_time_range_disabled.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_use_time_range_disabled.spec.ts index 857709b091940..cce172ad8494c 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_use_time_range_disabled.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_use_time_range_disabled.spec.ts @@ -5,12 +5,12 @@ * 2.0. */ -import { expect } from '@kbn/scout'; +import { expect, tags } from '@kbn/scout'; import { test, testData, assertionMessages } from '../fixtures'; test.describe( 'Discover app - value suggestions: useTimeRange disabled', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, + { tag: tags.DEPLOYMENT_AGNOSTIC }, () => { test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); diff --git a/x-pack/plugins/ecs_data_quality_dashboard/jest.config.js b/x-pack/plugins/ecs_data_quality_dashboard/jest.config.js deleted file mode 100644 index cc9c79fe6d1e5..0000000000000 --- a/x-pack/plugins/ecs_data_quality_dashboard/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/ecs_data_quality_dashboard/{common,lib,server}/**/*.{ts,tsx}', - ], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/ecs_data_quality_dashboard', - coverageReporters: ['text', 'html'], - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/ecs_data_quality_dashboard'], - preset: '@kbn/test', -}; diff --git a/x-pack/plugins/ecs_data_quality_dashboard/tsconfig.json b/x-pack/plugins/ecs_data_quality_dashboard/tsconfig.json deleted file mode 100644 index cf31d7461b509..0000000000000 --- a/x-pack/plugins/ecs_data_quality_dashboard/tsconfig.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "server/lib/**/*", - "server/**/*", - // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 - "server/**/*.json", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/core-http-server", - "@kbn/licensing-plugin", - "@kbn/core-http-request-handler-context-server", - "@kbn/securitysolution-io-ts-utils", - "@kbn/securitysolution-io-ts-types", - "@kbn/i18n", - "@kbn/core-http-router-server-mocks", - "@kbn/logging-mocks", - "@kbn/data-stream-adapter", - "@kbn/spaces-plugin", - "@kbn/core-elasticsearch-server-mocks", - "@kbn/core-elasticsearch-server", - "@kbn/core-security-common", - "@kbn/datemath", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/elastic_assistant/README.md b/x-pack/plugins/elastic_assistant/README.md deleted file mode 100755 index 8cf2c0b8903dd..0000000000000 --- a/x-pack/plugins/elastic_assistant/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Elastic AI Assistant - -This plugin implements (only) server APIs for the `Elastic AI Assistant`. - -This plugin does NOT contain UI components. See `x-pack/packages/kbn-elastic-assistant` for React components. - -## Maintainers - -Maintained by the Security Solution team - -## Graph structure - -### Default Assistant graph - -![DefaultAssistantGraph](./docs/img/default_assistant_graph.png) - -### Default Attack discovery graph - -![DefaultAttackDiscoveryGraph](./docs/img/default_attack_discovery_graph.png) - -## Development - -### Generate graph structure - -To generate the graph structure, run `yarn draw-graph` from the plugin directory. -The graphs will be generated in the `docs/img` directory of the plugin. - -### Testing - -To run the tests for this plugin, run `node scripts/jest --watch x-pack/plugins/elastic_assistant/jest.config.js --coverage` from the Kibana root directory. diff --git a/x-pack/plugins/elastic_assistant/jest.config.js b/x-pack/plugins/elastic_assistant/jest.config.js deleted file mode 100644 index 7bbeb3b1c89d2..0000000000000 --- a/x-pack/plugins/elastic_assistant/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/elastic_assistant/{common,lib,server}/**/*.{ts,tsx}', - ], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/elastic_assistant', - coverageReporters: ['text', 'html'], - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/elastic_assistant'], - preset: '@kbn/test', -}; diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts b/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts deleted file mode 100644 index 706e4444488d9..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { AuthenticatedUser, ElasticsearchClient, Logger } from '@kbn/core/server'; - -import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; -import { ESSearchRequest, ESSearchResponse } from '@kbn/es-types'; -import { estypes } from '@elastic/elasticsearch'; -import { IIndexPatternString } from '../types'; -import { getIndexTemplateAndPattern } from '../lib/data_stream/helpers'; -import { DocumentsDataWriter } from '../lib/data_stream/documents_data_writer'; -import { FindResponse, findDocuments } from './find'; - -export interface AIAssistantDataClientParams { - elasticsearchClientPromise: Promise<ElasticsearchClient>; - kibanaVersion: string; - spaceId: string; - logger: Logger; - indexPatternsResourceName: string; - currentUser: AuthenticatedUser | null; -} - -export class AIAssistantDataClient { - /** Kibana space id the document index are part of */ - public readonly spaceId: string; - - /** User creating, modifying, deleting, or updating a document */ - private readonly currentUser: AuthenticatedUser | null; - - private writerCache: Map<string, DocumentsDataWriter> = new Map(); - - public indexTemplateAndPattern: IIndexPatternString; - - constructor(public readonly options: AIAssistantDataClientParams) { - this.indexTemplateAndPattern = getIndexTemplateAndPattern( - this.options.indexPatternsResourceName, - this.options.spaceId ?? DEFAULT_NAMESPACE_STRING - ); - this.currentUser = this.options.currentUser; - this.spaceId = this.options.spaceId; - } - - public getWriter = async (): Promise<DocumentsDataWriter> => { - const spaceId = this.spaceId; - if (this.writerCache.get(spaceId)) { - return this.writerCache.get(spaceId) as DocumentsDataWriter; - } - await this.initializeWriter(spaceId, this.indexTemplateAndPattern.alias); - return this.writerCache.get(spaceId) as DocumentsDataWriter; - }; - - private async initializeWriter(spaceId: string, index: string): Promise<DocumentsDataWriter> { - const esClient = await this.options.elasticsearchClientPromise; - const writer = new DocumentsDataWriter({ - esClient, - spaceId, - index, - logger: this.options.logger, - user: { id: this.currentUser?.profile_uid, name: this.currentUser?.username }, - }); - - this.writerCache.set(spaceId, writer); - return writer; - } - - public getReader = async <TResponse>() => { - const indexPatterns = this.indexTemplateAndPattern.alias; - - return { - search: async <TSearchRequest extends ESSearchRequest, TDoc = Partial<TResponse>>( - request: TSearchRequest - ): Promise<ESSearchResponse<TDoc, TSearchRequest>> => { - try { - const esClient = await this.options.elasticsearchClientPromise; - return (await esClient.search({ - ...request, - index: indexPatterns, - ignore_unavailable: true, - seq_no_primary_term: true, - })) as unknown as ESSearchResponse<TDoc, TSearchRequest>; - } catch (err) { - this.options.logger.error( - `Error performing search in AIAssistantDataClient - ${err.message}` - ); - throw err; - } - }, - }; - }; - - public findDocuments = async <TSearchSchema>({ - perPage, - page, - sortField, - sortOrder, - filter, - fields, - aggs, - mSearch, - }: { - perPage: number; - page: number; - sortField?: string; - sortOrder?: string; - filter?: string; - fields?: string[]; - aggs?: Record<string, estypes.AggregationsAggregationContainer>; - mSearch?: { - filter: string; - perPage: number; - }; - }): Promise<Promise<FindResponse<TSearchSchema>>> => { - const esClient = await this.options.elasticsearchClientPromise; - return findDocuments<TSearchSchema>({ - esClient, - fields, - page, - perPage, - filter, - sortField, - index: this.indexTemplateAndPattern.alias, - sortOrder: sortOrder as estypes.SortOrder, - logger: this.options.logger, - aggs, - mSearch, - }); - }; -} diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts b/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts deleted file mode 100644 index c3ce7fb1a43a0..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts +++ /dev/null @@ -1,692 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - MlTrainedModelDeploymentNodesStats, - MlTrainedModelStats, - SearchTotalHits, -} from '@elastic/elasticsearch/lib/api/types'; -import type { MlPluginSetup } from '@kbn/ml-plugin/server'; -import type { KibanaRequest } from '@kbn/core-http-server'; -import { Document } from 'langchain/document'; -import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; -import { - DocumentEntryType, - DocumentEntry, - IndexEntry, - KnowledgeBaseEntryCreateProps, - KnowledgeBaseEntryResponse, - Metadata, -} from '@kbn/elastic-assistant-common'; -import pRetry from 'p-retry'; -import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { StructuredTool } from '@langchain/core/tools'; -import { AnalyticsServiceSetup, ElasticsearchClient } from '@kbn/core/server'; -import { IndexPatternsFetcher } from '@kbn/data-views-plugin/server'; -import { map } from 'lodash'; -import { AIAssistantDataClient, AIAssistantDataClientParams } from '..'; -import { GetElser } from '../../types'; -import { createKnowledgeBaseEntry, transformToCreateSchema } from './create_knowledge_base_entry'; -import { EsDocumentEntry, EsIndexEntry, EsKnowledgeBaseEntrySchema } from './types'; -import { transformESSearchToKnowledgeBaseEntry } from './transforms'; -import { SECURITY_LABS_RESOURCE, USER_RESOURCE } from '../../routes/knowledge_base/constants'; -import { - getKBVectorSearchQuery, - getStructuredToolForIndexEntry, - isModelAlreadyExistsError, -} from './helpers'; -import { getKBUserFilter } from '../../routes/knowledge_base/entries/utils'; -import { - loadSecurityLabs, - getSecurityLabsDocsCount, -} from '../../lib/langchain/content_loaders/security_labs_loader'; -import { ASSISTANT_ELSER_INFERENCE_ID } from './field_maps_configuration'; - -/** - * Params for when creating KbDataClient in Request Context Factory. Useful if needing to modify - * configuration after initial plugin start - */ -export interface GetAIAssistantKnowledgeBaseDataClientParams { - modelIdOverride?: string; - manageGlobalKnowledgeBaseAIAssistant?: boolean; -} - -export interface KnowledgeBaseDataClientParams extends AIAssistantDataClientParams { - ml: MlPluginSetup; - getElserId: GetElser; - getIsKBSetupInProgress: () => boolean; - ingestPipelineResourceName: string; - setIsKBSetupInProgress: (isInProgress: boolean) => void; - manageGlobalKnowledgeBaseAIAssistant: boolean; -} -export class AIAssistantKnowledgeBaseDataClient extends AIAssistantDataClient { - constructor(public readonly options: KnowledgeBaseDataClientParams) { - super(options); - } - - public get isSetupInProgress() { - return this.options.getIsKBSetupInProgress(); - } - /** - * Returns whether setup of the Knowledge Base can be performed (essentially an ML features check) - * - */ - public isSetupAvailable = async () => { - // ML plugin requires request to retrieve capabilities, which are in turn scoped to the user from the request, - // so we just test the API for a 404 instead to determine if ML is 'available' - // TODO: expand to include memory check, see https://github.com/elastic/ml-team/issues/1208#issuecomment-2115770318 - try { - const esClient = await this.options.elasticsearchClientPromise; - await esClient.ml.getMemoryStats({ human: true }); - } catch (error) { - return false; - } - return true; - }; - - /** - * Downloads and installs ELSER model if not already installed - * - * @param soClient SavedObjectsClientContract for installing ELSER so that ML SO's are in sync - */ - private installModel = async ({ soClient }: { soClient: SavedObjectsClientContract }) => { - const elserId = await this.options.getElserId(); - this.options.logger.debug(`Installing ELSER model '${elserId}'...`); - - try { - await this.options.ml - // TODO: Potentially plumb soClient through DataClient from pluginStart - .trainedModelsProvider({} as KibanaRequest, soClient) - .installElasticModel(elserId); - } catch (error) { - this.options.logger.error(`Error installing ELSER model '${elserId}':\n${error}`); - } - }; - - /** - * Returns whether ELSER is installed/ready to deploy - * - * @returns Promise<boolean> indicating whether the model is installed - */ - public isModelInstalled = async (): Promise<boolean> => { - const elserId = await this.options.getElserId(); - this.options.logger.debug(`Checking if ELSER model '${elserId}' is installed...`); - - try { - const esClient = await this.options.elasticsearchClientPromise; - const getResponse = await esClient.ml.getTrainedModels({ - model_id: elserId, - include: 'definition_status', - }); - return Boolean(getResponse.trained_model_configs[0]?.fully_defined); - } catch (error) { - if (!isModelAlreadyExistsError(error)) { - this.options.logger.error( - `Error checking if ELSER model '${elserId}' is installed:\n${error}` - ); - } - return false; - } - }; - - /** - * Checks if the inference endpoint is deployed and allocated in Elasticsearch - * - * @returns Promise<boolean> indicating whether the model is deployed - */ - public isInferenceEndpointExists = async (): Promise<boolean> => { - try { - const esClient = await this.options.elasticsearchClientPromise; - - const inferenceExists = !!(await esClient.inference.get({ - inference_id: ASSISTANT_ELSER_INFERENCE_ID, - task_type: 'sparse_embedding', - })); - if (!inferenceExists) { - return false; - } - const elserId = await this.options.getElserId(); - const getResponse = await esClient.ml.getTrainedModelsStats({ - model_id: elserId, - }); - - // For standardized way of checking deployment status see: https://github.com/elastic/elasticsearch/issues/106986 - const isReadyESS = (stats: MlTrainedModelStats) => - stats.deployment_stats?.state === 'started' && - stats.deployment_stats?.allocation_status.state === 'fully_allocated'; - - const isReadyServerless = (stats: MlTrainedModelStats) => - (stats.deployment_stats?.nodes as unknown as MlTrainedModelDeploymentNodesStats[])?.some( - (node) => node.routing_state.routing_state === 'started' - ); - - return getResponse.trained_model_stats?.some( - (stats) => isReadyESS(stats) || isReadyServerless(stats) - ); - } catch (error) { - this.options.logger.debug( - `Error checking if Inference endpoint ${ASSISTANT_ELSER_INFERENCE_ID} exists: ${error}` - ); - return false; - } - }; - - public createInferenceEndpoint = async () => { - const elserId = await this.options.getElserId(); - this.options.logger.debug(`Deploying ELSER model '${elserId}'...`); - const esClient = await this.options.elasticsearchClientPromise; - - try { - await esClient.inference.delete({ - inference_id: ASSISTANT_ELSER_INFERENCE_ID, - // it's being used in the mapping so we need to force delete - force: true, - }); - this.options.logger.debug(`Deleted existing inference endpoint for ELSER model '${elserId}'`); - } catch (error) { - this.options.logger.error( - `Error deleting inference endpoint for ELSER model '${elserId}':\n${error}` - ); - } - - try { - await esClient.inference.put({ - task_type: 'sparse_embedding', - inference_id: ASSISTANT_ELSER_INFERENCE_ID, - inference_config: { - service: 'elasticsearch', - service_settings: { - adaptive_allocations: { - enabled: true, - min_number_of_allocations: 0, - max_number_of_allocations: 8, - }, - num_threads: 1, - model_id: elserId, - }, - task_settings: {}, - }, - }); - - // await for the model to be deployed - await this.isInferenceEndpointExists(); - } catch (error) { - this.options.logger.error( - `Error creating inference endpoint for ELSER model '${elserId}':\n${error}` - ); - throw new Error(`Error creating inference endpoint for ELSER model '${elserId}':\n${error}`); - } - }; - - /** - * Downloads and deploys recommended ELSER (if not already), then loads ES|QL docs - * - * NOTE: Before automatically installing ELSER in the background, we should perform deployment resource checks - * Only necessary for ESS, as Serverless can always auto-install if `productTier === complete` - * See ml-team issue for providing 'dry run' flag to perform these checks: https://github.com/elastic/ml-team/issues/1208 - * - * @param options - * @param options.soClient SavedObjectsClientContract for installing ELSER so that ML SO's are in sync - * - * @returns Promise<void> - */ - public setupKnowledgeBase = async ({ - soClient, - ignoreSecurityLabs = false, - }: { - soClient: SavedObjectsClientContract; - ignoreSecurityLabs?: boolean; - }): Promise<void> => { - if (this.options.getIsKBSetupInProgress()) { - this.options.logger.debug('Knowledge Base setup already in progress'); - return; - } - - this.options.logger.debug('Starting Knowledge Base setup...'); - this.options.setIsKBSetupInProgress(true); - const elserId = await this.options.getElserId(); - - // Delete legacy ESQL knowledge base docs if they exist, and silence the error if they do not - try { - const esClient = await this.options.elasticsearchClientPromise; - const legacyESQL = await esClient.deleteByQuery({ - index: this.indexTemplateAndPattern.alias, - query: { - bool: { - must: [{ terms: { 'metadata.kbResource': ['esql', 'unknown'] } }], - }, - }, - }); - if (legacyESQL?.total != null && legacyESQL?.total > 0) { - this.options.logger.info( - `Removed ${legacyESQL?.total} ESQL knowledge base docs from knowledge base data stream: ${this.indexTemplateAndPattern.alias}.` - ); - } - // Delete any existing Security Labs content - const securityLabsDocs = await esClient.deleteByQuery({ - index: this.indexTemplateAndPattern.alias, - query: { - bool: { - must: [{ terms: { kb_resource: [SECURITY_LABS_RESOURCE] } }], - }, - }, - }); - if (securityLabsDocs?.total) { - this.options.logger.info( - `Removed ${securityLabsDocs?.total} Security Labs knowledge base docs from knowledge base data stream: ${this.indexTemplateAndPattern.alias}.` - ); - } - } catch (e) { - this.options.logger.info('No legacy ESQL or Security Labs knowledge base docs to delete'); - } - - try { - const isInstalled = await this.isModelInstalled(); - if (!isInstalled) { - await this.installModel({ soClient }); - await pRetry( - async () => - (await this.isModelInstalled()) - ? Promise.resolve() - : Promise.reject(new Error('Model not installed')), - { minTimeout: 10000, maxTimeout: 10000, retries: 10 } - ); - this.options.logger.debug(`ELSER model '${elserId}' successfully installed!`); - } else { - this.options.logger.debug(`ELSER model '${elserId}' is already installed`); - } - - const inferenceExists = await this.isInferenceEndpointExists(); - if (!inferenceExists) { - await this.createInferenceEndpoint(); - - this.options.logger.debug( - `Inference endpoint for ELSER model '${elserId}' successfully deployed!` - ); - } else { - this.options.logger.debug( - `Inference endpoint for ELSER model '${elserId}' is already deployed` - ); - } - - this.options.logger.debug(`Checking if Knowledge Base docs have been loaded...`); - - if (!ignoreSecurityLabs) { - const labsDocsLoaded = await this.isSecurityLabsDocsLoaded(); - if (!labsDocsLoaded) { - this.options.logger.debug(`Loading Security Labs KB docs...`); - await loadSecurityLabs(this, this.options.logger); - } else { - this.options.logger.debug(`Security Labs Knowledge Base docs already loaded!`); - } - } - } catch (e) { - this.options.setIsKBSetupInProgress(false); - this.options.logger.error(`Error setting up Knowledge Base: ${e.message}`); - throw new Error(`Error setting up Knowledge Base: ${e.message}`); - } finally { - this.options.setIsKBSetupInProgress(false); - } - }; - - /** - * Adds LangChain Documents to the knowledge base - * - * @param {Array<Document<Metadata>>} documents - LangChain Documents to add to the knowledge base - * @param global whether these entries should be added globally, i.e. empty users[] - */ - public addKnowledgeBaseDocuments = async ({ - documents, - global = false, - }: { - documents: Array<Document<Metadata>>; - global?: boolean; - }): Promise<KnowledgeBaseEntryResponse[]> => { - const writer = await this.getWriter(); - const changedAt = new Date().toISOString(); - const authenticatedUser = this.options.currentUser; - if (authenticatedUser == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - if (global && !this.options.manageGlobalKnowledgeBaseAIAssistant) { - throw new Error('User lacks privileges to create global knowledge base entries'); - } - - const { errors, docs_created: docsCreated } = await writer.bulk({ - documentsToCreate: documents.map((doc) => { - // v1 schema has metadata nested in a `metadata` object - return transformToCreateSchema({ - createdAt: changedAt, - spaceId: this.spaceId, - user: authenticatedUser, - entry: { - type: DocumentEntryType.value, - name: 'unknown', - text: doc.pageContent, - kbResource: doc.metadata.kbResource ?? 'unknown', - required: doc.metadata.required ?? false, - source: doc.metadata.source ?? 'unknown', - }, - global, - }); - }), - authenticatedUser, - }); - const created = - docsCreated.length > 0 - ? await this.findDocuments<EsKnowledgeBaseEntrySchema>({ - page: 1, - perPage: 10000, - filter: docsCreated.map((c) => `_id:${c}`).join(' OR '), - }) - : undefined; - // Intentionally no telemetry here - this path only used to install security docs - // Plans to make this function private in a different PR so no user entry ever is created in this path - this.options.logger.debug(`created: ${created?.data.hits.hits.length ?? '0'}`); - this.options.logger.debug(() => `errors: ${JSON.stringify(errors, null, 2)}`); - - return created?.data ? transformESSearchToKnowledgeBaseEntry(created?.data) : []; - }; - - /** - * Returns if user's KB docs exists - */ - - public isUserDataExists = async (): Promise<boolean> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - const esClient = await this.options.elasticsearchClientPromise; - - try { - const vectorSearchQuery = getKBVectorSearchQuery({ - kbResource: USER_RESOURCE, - required: false, - user, - }); - - const result = await esClient.search<EsDocumentEntry>({ - index: this.indexTemplateAndPattern.alias, - size: 0, - query: vectorSearchQuery, - track_total_hits: true, - }); - - return !!(result.hits?.total as SearchTotalHits).value; - } catch (e) { - this.options.logger.debug(`Error checking if user's KB docs exist: ${e.message}`); - return false; - } - }; - - /** - * Returns if allSecurity Labs KB docs have been loaded - */ - public isSecurityLabsDocsLoaded = async (): Promise<boolean> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - const expectedDocsCount = await getSecurityLabsDocsCount({ logger: this.options.logger }); - - const esClient = await this.options.elasticsearchClientPromise; - - try { - const vectorSearchQuery = getKBVectorSearchQuery({ - kbResource: SECURITY_LABS_RESOURCE, - required: false, - user, - }); - - const result = await esClient.search<EsDocumentEntry>({ - index: this.indexTemplateAndPattern.alias, - size: 0, - query: vectorSearchQuery, - track_total_hits: true, - }); - - const existingDocs = (result.hits?.total as SearchTotalHits).value; - - if (existingDocs !== expectedDocsCount) { - this.options.logger.debug( - `Security Labs docs are not loaded, existing docs: ${existingDocs}, expected docs: ${expectedDocsCount}` - ); - } - return existingDocs === expectedDocsCount; - } catch (e) { - this.options.logger.info(`Error checking if Security Labs docs are loaded: ${e.message}`); - return false; - } - }; - - /** - * Performs similarity search to retrieve LangChain Documents from the knowledge base - */ - public getKnowledgeBaseDocumentEntries = async ({ - filter, - kbResource, - query, - required, - }: { - filter?: QueryDslQueryContainer; - kbResource?: string; - query: string; - required?: boolean; - }): Promise<Document[]> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - const esClient = await this.options.elasticsearchClientPromise; - - const vectorSearchQuery = getKBVectorSearchQuery({ - filter, - kbResource, - query, - required, - user, - }); - - try { - const result = await esClient.search<EsDocumentEntry>({ - index: this.indexTemplateAndPattern.alias, - size: 10, - query: vectorSearchQuery, - }); - - const results = result.hits.hits.map((hit) => { - const metadata = { - source: hit?._source?.source, - required: hit?._source?.required, - kbResource: hit?._source?.kb_resource, - }; - return new Document({ - pageContent: hit?._source?.text ?? '', - metadata, - }); - }); - - this.options.logger.debug( - () => - `getKnowledgeBaseDocuments() - Similarity Search Query:\n ${JSON.stringify( - vectorSearchQuery - )}` - ); - this.options.logger.debug( - () => - `getKnowledgeBaseDocuments() - Similarity Search returned [${JSON.stringify( - results.length - )}] results` - ); - - return results; - } catch (e) { - this.options.logger.error(`Error performing KB Similarity Search: ${e.message}`); - return []; - } - }; - - /** - * Returns all global and current user's private `required` document entries. - */ - public getRequiredKnowledgeBaseDocumentEntries = async (): Promise<DocumentEntry[]> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - try { - const userFilter = getKBUserFilter(user); - const results = await this.findDocuments<EsIndexEntry>({ - // Note: This is a magic number to set some upward bound as to not blow the context with too - // many historical KB entries. Ideally we'd query for all and token trim. - perPage: 100, - page: 1, - sortField: 'created_at', - sortOrder: 'asc', - filter: `${userFilter} AND type:document AND kb_resource:user AND required:true`, - }); - this.options.logger.debug( - `kbDataClient.getRequiredKnowledgeBaseDocumentEntries() - results:\n${JSON.stringify( - results - )}` - ); - - if (results) { - return transformESSearchToKnowledgeBaseEntry(results.data) as DocumentEntry[]; - } - } catch (e) { - this.options.logger.error( - `kbDataClient.getRequiredKnowledgeBaseDocumentEntries() - Failed to fetch DocumentEntries` - ); - return []; - } - - return []; - }; - - /** - * Creates a new Knowledge Base Entry. - * - * @param knowledgeBaseEntry - * @param global - */ - public createKnowledgeBaseEntry = async ({ - knowledgeBaseEntry, - telemetry, - global = false, - }: { - knowledgeBaseEntry: KnowledgeBaseEntryCreateProps; - global?: boolean; - telemetry: AnalyticsServiceSetup; - }): Promise<KnowledgeBaseEntryResponse | null> => { - const authenticatedUser = this.options.currentUser; - - if (authenticatedUser == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - if (global && !this.options.manageGlobalKnowledgeBaseAIAssistant) { - throw new Error('User lacks privileges to create global knowledge base entries'); - } - - this.options.logger.debug( - () => `Creating Knowledge Base Entry:\n ${JSON.stringify(knowledgeBaseEntry, null, 2)}` - ); - this.options.logger.debug(`kbIndex: ${this.indexTemplateAndPattern.alias}`); - const esClient = await this.options.elasticsearchClientPromise; - return createKnowledgeBaseEntry({ - esClient, - knowledgeBaseIndex: this.indexTemplateAndPattern.alias, - logger: this.options.logger, - spaceId: this.spaceId, - user: authenticatedUser, - knowledgeBaseEntry, - global, - telemetry, - }); - }; - - /** - * Returns AssistantTools for any 'relevant' KB IndexEntries that exist in the knowledge base. - * - * Note: Accepts esClient so retrieval can be scoped to the current user as esClient on kbDataClient - * is scoped to system user. - */ - public getAssistantTools = async ({ - esClient, - }: { - esClient: ElasticsearchClient; - }): Promise<StructuredTool[]> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - try { - const elserId = ASSISTANT_ELSER_INFERENCE_ID; - const userFilter = getKBUserFilter(user); - const results = await this.findDocuments<EsIndexEntry>({ - // Note: This is a magic number to set some upward bound as to not blow the context with too - // many registered tools. As discussed in review, this will initially be mitigated by caps on - // the IndexEntries field lengths, context trimming at the graph layer (before compilation), - // and eventually some sort of tool discovery sub-graph or generic retriever to scale tool usage. - perPage: 23, - page: 1, - sortField: 'created_at', - sortOrder: 'asc', - filter: `${userFilter} AND type:index`, - }); - this.options.logger.debug( - `kbDataClient.getAssistantTools() - results:\n${JSON.stringify(results, null, 2)}` - ); - - if (results) { - const entries = transformESSearchToKnowledgeBaseEntry(results.data) as IndexEntry[]; - const indexPatternFetcher = new IndexPatternsFetcher(esClient); - const existingIndices = await indexPatternFetcher.getExistingIndices(map(entries, 'index')); - return ( - entries - // Filter out any IndexEntries that don't have an existing index - .filter((entry) => existingIndices.includes(entry.index)) - .map((indexEntry) => { - return getStructuredToolForIndexEntry({ - indexEntry, - esClient, - logger: this.options.logger, - elserId, - }); - }) - ); - } - } catch (e) { - this.options.logger.error(`kbDataClient.getAssistantTools() - Failed to fetch IndexEntries`); - return []; - } - - return []; - }; -} diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts b/x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts deleted file mode 100644 index c60fe9a220482..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts +++ /dev/null @@ -1,785 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; -import { IndicesGetDataStreamResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { errors as EsErrors } from '@elastic/elasticsearch'; -import { ReplaySubject, Subject } from 'rxjs'; -import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; -import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; -import { conversationsDataClientMock } from '../__mocks__/data_clients.mock'; -import { authenticatedUser } from '../__mocks__/user'; -import { AIAssistantConversationsDataClient } from '../ai_assistant_data_clients/conversations'; -import { AIAssistantService, AIAssistantServiceOpts } from '.'; -import { retryUntil } from './create_resource_installation_helper.test'; -import { mlPluginMock } from '@kbn/ml-plugin/public/mocks'; -import type { MlPluginSetup } from '@kbn/ml-plugin/server'; -import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; - -jest.mock('../ai_assistant_data_clients/conversations', () => ({ - AIAssistantConversationsDataClient: jest.fn(), -})); - -const licensing = Promise.resolve( - licensingMock.createRequestHandlerContext({ - license: { type: 'enterprise' }, - }) -); -let logger: ReturnType<(typeof loggingSystemMock)['createLogger']>; -const clusterClient = elasticsearchServiceMock.createClusterClient().asInternalUser; - -const SimulateTemplateResponse = { - template: { - aliases: { - alias_name_1: { - is_hidden: true, - }, - alias_name_2: { - is_hidden: true, - }, - }, - mappings: { enabled: false }, - settings: {}, - }, -}; - -const GetAliasResponse = { - '.kibana-elastic-ai-assistant-conversations-default-000001': { - aliases: { - alias_1: { - is_hidden: true, - }, - alias_2: { - is_hidden: true, - }, - }, - }, -}; - -const GetDataStreamResponse: IndicesGetDataStreamResponse = { - data_streams: [ - { - name: 'ignored', - generation: 1, - timestamp_field: { name: 'ignored' }, - hidden: true, - indices: [ - { - index_name: 'ignored', - index_uuid: 'ignored', - managed_by: 'Data stream lifecycle', - prefer_ilm: false, - }, - ], - status: 'green', - template: 'ignored', - next_generation_managed_by: 'Data stream lifecycle', - prefer_ilm: false, - }, - ], -}; - -const getSpaceResourcesInitialized = async ( - assistantService: AIAssistantService, - namespace: string = DEFAULT_NAMESPACE_STRING -) => { - const { result } = await assistantService.getSpaceResourcesInitializationPromise(namespace); - return result; -}; - -const conversationsDataClient = conversationsDataClientMock.create(); - -const mockUser1 = authenticatedUser; - -describe('AI Assistant Service', () => { - let pluginStop$: Subject<void>; - let assistantServiceOpts: AIAssistantServiceOpts; - let ml: MlPluginSetup; - - beforeEach(() => { - jest.resetAllMocks(); - logger = loggingSystemMock.createLogger(); - pluginStop$ = new ReplaySubject(1); - jest.spyOn(global.Math, 'random').mockReturnValue(0.01); - clusterClient.indices.simulateTemplate.mockImplementation(async () => SimulateTemplateResponse); - clusterClient.indices.simulateIndexTemplate.mockImplementation( - async () => SimulateTemplateResponse - ); - clusterClient.indices.getAlias.mockImplementation(async () => GetAliasResponse); - clusterClient.indices.getDataStream.mockImplementation(async () => GetDataStreamResponse); - ml = mlPluginMock.createSetupContract() as unknown as MlPluginSetup; // Missing SharedServices mock, so manually mocking trainedModelsProvider - ml.trainedModelsProvider = jest.fn().mockImplementation(() => ({ - getELSER: jest.fn().mockImplementation(() => '.elser_model_2'), - })); - assistantServiceOpts = { - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - pluginStop$, - kibanaVersion: '8.8.0', - ml, - taskManager: taskManagerMock.createSetup(), - productDocManager: Promise.resolve({ - getStatus: jest.fn(), - install: jest.fn(), - update: jest.fn(), - uninstall: jest.fn(), - }), - }; - }); - - afterEach(() => { - pluginStop$.next(); - pluginStop$.complete(); - }); - - describe('AIAssistantService()', () => { - test('should correctly initialize common resources', async () => { - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => (await assistantService.isInitialized()) === true - ); - - expect(assistantService.isInitialized()).toEqual(true); - - expect(clusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(6); - - const expectedTemplates = [ - '.kibana-elastic-ai-assistant-component-template-conversations', - '.kibana-elastic-ai-assistant-component-template-knowledge-base', - '.kibana-elastic-ai-assistant-component-template-prompts', - '.kibana-elastic-ai-assistant-component-template-anonymization-fields', - '.kibana-elastic-ai-assistant-component-template-attack-discovery', - '.kibana-elastic-ai-assistant-component-template-defend-insights', - ]; - expectedTemplates.forEach((t, i) => { - expect(clusterClient.cluster.putComponentTemplate.mock.calls[i][0].name).toEqual(t); - }); - }); - - test('should log error and set initialized to false if creating/updating common component template throws error', async () => { - clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); - - expect(assistantService.isInitialized()).toEqual(false); - expect(logger.error).toHaveBeenCalledWith( - `Error installing component template .kibana-elastic-ai-assistant-component-template-conversations - fail` - ); - }); - }); - - describe('createAIAssistantConversationsDataClient()', () => { - let assistantService: AIAssistantService; - beforeEach(() => { - (AIAssistantConversationsDataClient as jest.Mock).mockImplementation( - () => conversationsDataClient - ); - (clusterClient.search as unknown as jest.Mock).mockResolvedValue({ - hits: { hits: [], total: { value: 0 } }, - }); - }); - - test('should create new AIAssistantConversationsDataClient', async () => { - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - }); - }); - - test('should retry initializing common resources if common resource initialization failed', async () => { - clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); - - expect(assistantService.isInitialized()).toEqual(false); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - - expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).toHaveBeenCalled(); - - expect(clusterClient.indices.createDataStream).not.toHaveBeenCalled(); - expect(clusterClient.indices.getDataStream).toHaveBeenCalled(); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - }); - - expect(result).not.toBe(null); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); - }); - - test('should not retry initializing common resources if common resource initialization is in progress', async () => { - // this is the initial call that fails - clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); - - // this is the retry call that we'll artificially inflate the duration of - clusterClient.cluster.putComponentTemplate.mockImplementationOnce(async () => { - await new Promise((r) => setTimeout(r, 1000)); - return { acknowledged: true }; - }); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); - - expect(assistantService.isInitialized()).toEqual(false); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - // call createAIAssistantConversationsDataClient at the same time which will trigger the retries - const result = await Promise.all([ - assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }), - assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }), - ]); - - expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).toHaveBeenCalled(); - - expect(clusterClient.indices.createDataStream).not.toHaveBeenCalled(); - expect(clusterClient.indices.getDataStream).toHaveBeenCalled(); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - logger, - }); - - expect(result[0]).not.toBe(null); - expect(result[1]).not.toBe(null); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); - expect(logger.info).toHaveBeenCalledWith( - `Resource installation for "default" succeeded after retry` - ); - expect(logger.info).toHaveBeenCalledWith( - `Skipped retrying common resource initialization because it is already being retried.` - ); - }); - - test('should retry initializing space specific resources if space specific resource initialization failed', async () => { - clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - clusterClient.indices.simulateIndexTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - logger, - }); - - expect(result).not.toBe(null); - - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); - expect(logger.info).toHaveBeenCalledWith( - `Resource installation for "default" succeeded after retry` - ); - }); - - test('should not retry initializing context specific resources if context specific resource initialization is in progress', async () => { - // this is the initial call that fails - clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - clusterClient.indices.simulateIndexTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - // this is the retry call that we'll artificially inflate the duration of - clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => { - await new Promise((r) => setTimeout(r, 1000)); - return SimulateTemplateResponse; - }); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - const createAIAssistantDatastreamClientWithDelay = async (delayMs: number | null) => { - if (delayMs) { - await new Promise((r) => setTimeout(r, delayMs)); - } - - return assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - }; - - const result = await Promise.all([ - createAIAssistantDatastreamClientWithDelay(null), - createAIAssistantDatastreamClientWithDelay(1), - ]); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledTimes(2); - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - logger, - }); - - expect(result[0]).not.toBe(null); - expect(result[1]).not.toBe(null); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - - // Should only log the retry once because the second call should - // leverage the outcome of the first retry - expect( - logger.info.mock.calls.filter( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (calls: any[]) => calls[0] === `Retrying resource initialization for "default"` - ).length - ).toEqual(1); - expect( - logger.info.mock.calls.filter( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (calls: any[]) => calls[0] === `Resource installation for "default" succeeded after retry` - ).length - ).toEqual(1); - }); - - test('should throttle retries of initializing context specific resources', async () => { - // this is the initial call that fails - clusterClient.indices.simulateTemplate.mockImplementation(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - clusterClient.indices.simulateIndexTemplate.mockImplementation(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - const createAIAssistantDatastreamClientWithDelay = async (delayMs: number | null) => { - if (delayMs) { - await new Promise((r) => setTimeout(r, delayMs)); - } - - return assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - }; - - await Promise.all([ - createAIAssistantDatastreamClientWithDelay(null), - createAIAssistantDatastreamClientWithDelay(1), - createAIAssistantDatastreamClientWithDelay(2), - ]); - - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - - // Should only log the retry once because the second and third retries should be throttled - expect( - logger.info.mock.calls.filter( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (calls: any[]) => calls[0] === `Retrying resource initialization for "default"` - ).length - ).toEqual(1); - }); - - test('should return null if retrying common resources initialization fails again', async () => { - let failCount = 0; - clusterClient.cluster.putComponentTemplate.mockImplementation(() => { - throw new Error(`fail ${++failCount}`); - }); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0, 1); - - expect(assistantService.isInitialized()).toEqual(false); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'test', - currentUser: mockUser1, - licensing, - }); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - expect(result).toBe(null); - expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "test"`); - - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId "test" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-component-template-conversations component template. fail 1` - ); - }); - - test('should return null if retrying common resources initialization fails again with same error', async () => { - clusterClient.cluster.putComponentTemplate.mockRejectedValue(new Error('fail')); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); - - expect(assistantService.isInitialized()).toEqual(false); - - // Installing component template failed so no calls to install context-specific resources - // should be made - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'test', - currentUser: mockUser1, - licensing, - }); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - expect(result).toBe(null); - expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "test"`); - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId "test" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-component-template-conversations component template. fail` - ); - }); - - test('should return null if retrying space specific initialization fails again', async () => { - clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - clusterClient.indices.putIndexTemplate.mockRejectedValue(new Error('fail index template')); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'test', - currentUser: mockUser1, - licensing, - }); - - expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); - expect(result).toBe(null); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId \"test\" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-index-template-conversations index template. No mappings would be generated for .kibana-elastic-ai-assistant-index-template-conversations, possibly due to failed/misconfigured bootstrapping` - ); - }); - }); - - describe('retries', () => { - test('should retry adding component template for transient ES errors', async () => { - clusterClient.cluster.putComponentTemplate - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - expect(clusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(8); - - const expectedTemplates = [ - '.kibana-elastic-ai-assistant-component-template-conversations', - '.kibana-elastic-ai-assistant-component-template-conversations', - '.kibana-elastic-ai-assistant-component-template-conversations', - '.kibana-elastic-ai-assistant-component-template-knowledge-base', - '.kibana-elastic-ai-assistant-component-template-prompts', - '.kibana-elastic-ai-assistant-component-template-anonymization-fields', - '.kibana-elastic-ai-assistant-component-template-attack-discovery', - '.kibana-elastic-ai-assistant-component-template-defend-insights', - ]; - expectedTemplates.forEach((t, i) => { - expect(clusterClient.cluster.putComponentTemplate.mock.calls[i][0].name).toEqual(t); - }); - }); - - test('should retry updating index template for transient ES errors', async () => { - clusterClient.indices.putIndexTemplate - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - expect(assistantService.isInitialized()).toEqual(true); - - await retryUntil( - 'space resources initialized', - async () => (await getSpaceResourcesInitialized(assistantService)) === true - ); - - expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(8); - const expectedTemplates = [ - '.kibana-elastic-ai-assistant-index-template-conversations', - '.kibana-elastic-ai-assistant-index-template-conversations', - '.kibana-elastic-ai-assistant-index-template-conversations', - '.kibana-elastic-ai-assistant-index-template-knowledge-base', - '.kibana-elastic-ai-assistant-index-template-prompts', - '.kibana-elastic-ai-assistant-index-template-anonymization-fields', - '.kibana-elastic-ai-assistant-index-template-attack-discovery', - '.kibana-elastic-ai-assistant-index-template-defend-insights', - ]; - expectedTemplates.forEach((t, i) => { - expect(clusterClient.indices.putIndexTemplate.mock.calls[i][0].name).toEqual(t); - }); - }); - - test('should retry updating index settings for existing indices for transient ES errors', async () => { - clusterClient.indices.putSettings - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - await retryUntil( - 'space resources initialized', - async () => (await getSpaceResourcesInitialized(assistantService)) === true - ); - - expect(clusterClient.indices.putSettings).toHaveBeenCalledTimes(8); - }); - - test('should retry updating index mappings for existing indices for transient ES errors', async () => { - clusterClient.indices.putMapping - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - await retryUntil( - 'space resources initialized', - async () => (await getSpaceResourcesInitialized(assistantService)) === true - ); - - expect(clusterClient.indices.putMapping).toHaveBeenCalledTimes(8); - }); - - test('should retry creating concrete index for transient ES errors', async () => { - clusterClient.indices.getDataStream.mockImplementation(async () => ({ - data_streams: [], - })); - clusterClient.indices.createDataStream - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - (clusterClient.search as unknown as jest.Mock).mockResolvedValue({ - hits: { hits: [], total: { value: 0 } }, - }); - - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - - await retryUntil( - 'space resources initialized', - async () => (await getSpaceResourcesInitialized(assistantService)) === true - ); - - expect(clusterClient.indices.createDataStream).toHaveBeenCalledTimes(6); - }); - }); -}); diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts b/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts deleted file mode 100644 index b2c90636ef523..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { ElasticsearchClient, Logger } from '@kbn/core/server'; -import { Replacements } from '@kbn/elastic-assistant-common'; -import { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; -import type { ActionsClientLlm } from '@kbn/langchain/server'; -import type { CompiledStateGraph } from '@langchain/langgraph'; -import { END, START, StateGraph } from '@langchain/langgraph'; - -import { NodeType } from './constants'; -import { getGenerateOrEndEdge } from './edges/generate_or_end'; -import { getGenerateOrRefineOrEndEdge } from './edges/generate_or_refine_or_end'; -import { getRefineOrEndEdge } from './edges/refine_or_end'; -import { getRetrieveAnonymizedAlertsOrGenerateEdge } from './edges/retrieve_anonymized_alerts_or_generate'; -import { getDefaultGraphState } from './state'; -import { getGenerateNode } from './nodes/generate'; -import { getRefineNode } from './nodes/refine'; -import { getRetrieveAnonymizedAlertsNode } from './nodes/retriever'; -import type { GraphState } from './types'; - -export interface GetDefaultAttackDiscoveryGraphParams { - alertsIndexPattern?: string; - anonymizationFields: AnonymizationFieldResponse[]; - esClient: ElasticsearchClient; - llm: ActionsClientLlm; - logger?: Logger; - onNewReplacements?: (replacements: Replacements) => void; - replacements?: Replacements; - size: number; -} - -export type DefaultAttackDiscoveryGraph = ReturnType<typeof getDefaultAttackDiscoveryGraph>; - -/** - * This function returns a compiled state graph that represents the default - * Attack discovery graph. - * - * Refer to the following diagram for this graph: - * x-pack/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png - */ -export const getDefaultAttackDiscoveryGraph = ({ - alertsIndexPattern, - anonymizationFields, - esClient, - llm, - logger, - onNewReplacements, - replacements, - size, -}: GetDefaultAttackDiscoveryGraphParams): CompiledStateGraph< - GraphState, - Partial<GraphState>, - 'generate' | 'refine' | 'retrieve_anonymized_alerts' | '__start__' -> => { - try { - const graphState = getDefaultGraphState(); - - // get nodes: - const retrieveAnonymizedAlertsNode = getRetrieveAnonymizedAlertsNode({ - alertsIndexPattern, - anonymizationFields, - esClient, - logger, - onNewReplacements, - replacements, - size, - }); - - const generateNode = getGenerateNode({ - llm, - logger, - }); - - const refineNode = getRefineNode({ - llm, - logger, - }); - - // get edges: - const generateOrEndEdge = getGenerateOrEndEdge(logger); - - const generatOrRefineOrEndEdge = getGenerateOrRefineOrEndEdge(logger); - - const refineOrEndEdge = getRefineOrEndEdge(logger); - - const retrieveAnonymizedAlertsOrGenerateEdge = - getRetrieveAnonymizedAlertsOrGenerateEdge(logger); - - // create the graph: - const graph = new StateGraph<GraphState>({ channels: graphState }) - .addNode(NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, retrieveAnonymizedAlertsNode) - .addNode(NodeType.GENERATE_NODE, generateNode) - .addNode(NodeType.REFINE_NODE, refineNode) - .addConditionalEdges(START, retrieveAnonymizedAlertsOrGenerateEdge, { - generate: NodeType.GENERATE_NODE, - retrieve_anonymized_alerts: NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, - }) - .addConditionalEdges(NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, generateOrEndEdge, { - end: END, - generate: NodeType.GENERATE_NODE, - }) - .addConditionalEdges(NodeType.GENERATE_NODE, generatOrRefineOrEndEdge, { - end: END, - generate: NodeType.GENERATE_NODE, - refine: NodeType.REFINE_NODE, - }) - .addConditionalEdges(NodeType.REFINE_NODE, refineOrEndEdge, { - end: END, - refine: NodeType.REFINE_NODE, - }); - - // compile the graph: - return graph.compile(); - } catch (e) { - throw new Error(`Unable to compile AttackDiscoveryGraph\n${e}`); - } -}; diff --git a/x-pack/plugins/elastic_assistant/server/types.ts b/x-pack/plugins/elastic_assistant/server/types.ts deleted file mode 100755 index 6158acde679ff..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/types.ts +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { - PluginSetupContract as ActionsPluginSetup, - PluginStartContract as ActionsPluginStart, -} from '@kbn/actions-plugin/server'; -import type { - AuthenticatedUser, - CoreRequestHandlerContext, - CoreSetup, - AnalyticsServiceSetup, - CustomRequestHandlerContext, - IRouter, - KibanaRequest, - Logger, - SecurityServiceStart, -} from '@kbn/core/server'; -import type { LlmTasksPluginStart } from '@kbn/llm-tasks-plugin/server'; -import { type MlPluginSetup } from '@kbn/ml-plugin/server'; -import { DynamicStructuredTool, Tool } from '@langchain/core/tools'; -import { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; -import { TaskManagerSetupContract } from '@kbn/task-manager-plugin/server'; -import { ElasticsearchClient } from '@kbn/core/server'; -import { - AttackDiscoveryPostRequestBody, - DefendInsightsPostRequestBody, - AssistantFeatures, - ExecuteConnectorRequestBody, - Replacements, -} from '@kbn/elastic-assistant-common'; -import { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; -import { - LicensingApiRequestHandlerContext, - LicensingPluginStart, -} from '@kbn/licensing-plugin/server'; -import { - ActionsClientChatBedrockConverse, - ActionsClientChatOpenAI, - ActionsClientChatVertexAI, - ActionsClientGeminiChatModel, - ActionsClientLlm, -} from '@kbn/langchain/server'; -import type { InferenceServerStart } from '@kbn/inference-plugin/server'; - -import { ProductDocBaseStartContract } from '@kbn/product-doc-base-plugin/server'; -import type { GetAIAssistantKnowledgeBaseDataClientParams } from './ai_assistant_data_clients/knowledge_base'; -import { AttackDiscoveryDataClient } from './lib/attack_discovery/persistence'; -import { AIAssistantConversationsDataClient } from './ai_assistant_data_clients/conversations'; -import type { GetRegisteredFeatures, GetRegisteredTools } from './services/app_context'; -import { AIAssistantDataClient } from './ai_assistant_data_clients'; -import { AIAssistantKnowledgeBaseDataClient } from './ai_assistant_data_clients/knowledge_base'; -import type { DefendInsightsDataClient } from './ai_assistant_data_clients/defend_insights'; - -export const PLUGIN_ID = 'elasticAssistant' as const; - -/** The plugin setup interface */ -export interface ElasticAssistantPluginSetup { - actions: ActionsPluginSetup; -} - -/** The plugin start interface */ -export interface ElasticAssistantPluginStart { - /** - * Actions plugin start contract. - */ - actions: ActionsPluginStart; - /** - * Inference plugin start contract. - */ - inference: InferenceServerStart; - /** - * Register features to be used by the elastic assistant. - * - * Note: Be sure to use the pluginName that is sent in the request headers by your plugin to ensure it is extracted - * and the correct features are available. See {@link getPluginNameFromRequest} for more details. - * - * @param pluginName Name of the plugin the features should be registered to - * @param features Partial<AssistantFeatures> to be registered with for the given plugin - */ - registerFeatures: (pluginName: string, features: Partial<AssistantFeatures>) => void; - /** - * Get the registered features for a given plugin name. - * @param pluginName Name of the plugin to get the features for - */ - getRegisteredFeatures: GetRegisteredFeatures; - /** - * Register tools to be used by the elastic assistant. - * - * Note: Be sure to use the pluginName that is sent in the request headers by your plugin to ensure it is extracted - * and the correct tools are selected. See {@link getPluginNameFromRequest} for more details. - * - * @param pluginName Name of the plugin the tool should be registered to - * @param tools AssistantTools to be registered with for the given plugin - */ - registerTools: (pluginName: string, tools: AssistantTool[]) => void; - /** - * Get the registered tools for a given plugin name. - * @param pluginName Name of the plugin to get the tools for - */ - getRegisteredTools: GetRegisteredTools; -} - -export interface ElasticAssistantPluginSetupDependencies { - actions: ActionsPluginSetup; - ml: MlPluginSetup; - taskManager: TaskManagerSetupContract; - spaces?: SpacesPluginSetup; -} -export interface ElasticAssistantPluginStartDependencies { - actions: ActionsPluginStart; - llmTasks: LlmTasksPluginStart; - inference: InferenceServerStart; - spaces?: SpacesPluginStart; - security: SecurityServiceStart; - licensing: LicensingPluginStart; - productDocBase: ProductDocBaseStartContract; -} - -export interface ElasticAssistantApiRequestHandlerContext { - core: CoreRequestHandlerContext; - actions: ActionsPluginStart; - getRegisteredFeatures: GetRegisteredFeatures; - getRegisteredTools: GetRegisteredTools; - logger: Logger; - getServerBasePath: () => string; - getSpaceId: () => string; - getCurrentUser: () => AuthenticatedUser | null; - getAIAssistantConversationsDataClient: () => Promise<AIAssistantConversationsDataClient | null>; - getAIAssistantKnowledgeBaseDataClient: ( - params?: GetAIAssistantKnowledgeBaseDataClientParams - ) => Promise<AIAssistantKnowledgeBaseDataClient | null>; - getAttackDiscoveryDataClient: () => Promise<AttackDiscoveryDataClient | null>; - getDefendInsightsDataClient: () => Promise<DefendInsightsDataClient | null>; - getAIAssistantPromptsDataClient: () => Promise<AIAssistantDataClient | null>; - getAIAssistantAnonymizationFieldsDataClient: () => Promise<AIAssistantDataClient | null>; - llmTasks: LlmTasksPluginStart; - inference: InferenceServerStart; - telemetry: AnalyticsServiceSetup; -} -/** - * @internal - */ -export type ElasticAssistantRequestHandlerContext = CustomRequestHandlerContext<{ - elasticAssistant: ElasticAssistantApiRequestHandlerContext; - licensing: LicensingApiRequestHandlerContext; -}>; - -export type ElasticAssistantPluginRouter = IRouter<ElasticAssistantRequestHandlerContext>; - -export type ElasticAssistantPluginCoreSetupDependencies = CoreSetup< - ElasticAssistantPluginStartDependencies, - ElasticAssistantPluginStart ->; - -export type GetElser = () => Promise<string> | never; - -export interface AssistantResourceNames { - componentTemplate: { - conversations: string; - knowledgeBase: string; - prompts: string; - anonymizationFields: string; - attackDiscovery: string; - defendInsights: string; - }; - indexTemplate: { - conversations: string; - knowledgeBase: string; - prompts: string; - anonymizationFields: string; - attackDiscovery: string; - defendInsights: string; - }; - aliases: { - conversations: string; - knowledgeBase: string; - prompts: string; - anonymizationFields: string; - attackDiscovery: string; - defendInsights: string; - }; - indexPatterns: { - conversations: string; - knowledgeBase: string; - prompts: string; - anonymizationFields: string; - attackDiscovery: string; - defendInsights: string; - }; - pipelines: { - knowledgeBase: string; - }; -} - -export interface IIndexPatternString { - pattern: string; - alias: string; - name: string; - basePattern: string; - validPrefixes?: string[]; - secondaryAlias?: string; -} - -/** - * Interfaces for registering tools to be used by the elastic assistant - */ - -export interface AssistantTool { - id: string; - name: string; - description: string; - sourceRegister: string; - isSupported: (params: AssistantToolParams) => boolean; - getTool: (params: AssistantToolParams) => Tool | DynamicStructuredTool | null; -} - -export type AssistantToolLlm = - | ActionsClientChatBedrockConverse - | ActionsClientChatOpenAI - | ActionsClientGeminiChatModel - | ActionsClientChatVertexAI; - -export interface AssistantToolParams { - alertsIndexPattern?: string; - anonymizationFields?: AnonymizationFieldResponse[]; - inference?: InferenceServerStart; - isEnabledKnowledgeBase: boolean; - connectorId?: string; - esClient: ElasticsearchClient; - kbDataClient?: AIAssistantKnowledgeBaseDataClient; - langChainTimeout?: number; - llm?: ActionsClientLlm | AssistantToolLlm; - llmTasks?: LlmTasksPluginStart; - isOssModel?: boolean; - logger: Logger; - onNewReplacements?: (newReplacements: Replacements) => void; - replacements?: Replacements; - request: KibanaRequest< - unknown, - unknown, - ExecuteConnectorRequestBody | AttackDiscoveryPostRequestBody | DefendInsightsPostRequestBody - >; - size?: number; - telemetry?: AnalyticsServiceSetup; -} diff --git a/x-pack/plugins/elastic_assistant/tsconfig.json b/x-pack/plugins/elastic_assistant/tsconfig.json deleted file mode 100644 index 5b9a7cb3466db..0000000000000 --- a/x-pack/plugins/elastic_assistant/tsconfig.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "server/lib/**/*", - "server/**/*", - "scripts/**/*.ts", - // must declare *.json explicitly per https://github.com/microsoft/TypeScript/issues/25636 - "server/**/*.json", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/core-http-server", - "@kbn/licensing-plugin", - "@kbn/securitysolution-es-utils", - "@kbn/actions-plugin", - "@kbn/logging-mocks", - "@kbn/core-elasticsearch-server-mocks", - "@kbn/core-logging-server-mocks", - "@kbn/utility-types-jest", - "@kbn/utility-types", - "@kbn/tooling-log", - "@kbn/core-elasticsearch-server", - "@kbn/logging", - "@kbn/ml-plugin", - "@kbn/elastic-assistant-common", - "@kbn/core-http-router-server-mocks", - "@kbn/data-stream-adapter", - "@kbn/core-saved-objects-utils-server", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/task-manager-plugin", - "@kbn/es-query", - "@kbn/es-types", - "@kbn/config-schema", - "@kbn/spaces-plugin", - "@kbn/ml-response-stream", - "@kbn/data-plugin", - "@kbn/i18n", - "@kbn/core-security-common", - "@kbn/core-saved-objects-api-server", - "@kbn/langchain", - "@kbn/stack-connectors-plugin", - "@kbn/security-plugin", - "@kbn/apm-utils", - "@kbn/std", - "@kbn/zod", - "@kbn/inference-plugin", - "@kbn/data-views-plugin", - "@kbn/core-analytics-server", - "@kbn/llm-tasks-plugin", - "@kbn/product-doc-base-plugin" - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/embeddable_enhanced/public/actions/drilldown_grouping.ts b/x-pack/plugins/embeddable_enhanced/public/actions/drilldown_grouping.ts deleted file mode 100644 index 1e896817b3242..0000000000000 --- a/x-pack/plugins/embeddable_enhanced/public/actions/drilldown_grouping.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; -import { UiActionsPresentableGrouping as PresentableGrouping } from '@kbn/ui-actions-plugin/public'; - -export const drilldownGrouping: PresentableGrouping = [ - { - id: 'drilldowns', - getDisplayName: () => - i18n.translate('xpack.embeddableEnhanced.Drilldowns', { - defaultMessage: 'Drilldowns', - }), - getIconType: () => 'symlink', - order: 25, - }, -]; diff --git a/x-pack/plugins/embeddable_enhanced/public/actions/index.ts b/x-pack/plugins/embeddable_enhanced/public/actions/index.ts deleted file mode 100644 index c351935bbf8bb..0000000000000 --- a/x-pack/plugins/embeddable_enhanced/public/actions/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './drilldown_grouping'; diff --git a/x-pack/plugins/embeddable_enhanced/public/index.ts b/x-pack/plugins/embeddable_enhanced/public/index.ts index e14c8629ced9b..c0242fecc0948 100644 --- a/x-pack/plugins/embeddable_enhanced/public/index.ts +++ b/x-pack/plugins/embeddable_enhanced/public/index.ts @@ -19,9 +19,7 @@ export function plugin(context: PluginInitializerContext) { return new EmbeddableEnhancedPlugin(context); } -export type { EnhancedEmbeddable, EnhancedEmbeddableContext } from './types'; export { type HasDynamicActions, apiHasDynamicActions, } from './embeddables/interfaces/has_dynamic_actions'; -export { drilldownGrouping as embeddableEnhancedDrilldownGrouping } from './actions'; diff --git a/x-pack/plugins/embeddable_enhanced/public/plugin.ts b/x-pack/plugins/embeddable_enhanced/public/plugin.ts index a76f33f095951..0e374070c00d1 100644 --- a/x-pack/plugins/embeddable_enhanced/public/plugin.ts +++ b/x-pack/plugins/embeddable_enhanced/public/plugin.ts @@ -6,23 +6,12 @@ */ import { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from '@kbn/core/public'; -import { - defaultEmbeddableFactoryProvider, - EmbeddableContext, - EmbeddableFactory, - EmbeddableFactoryDefinition, - EmbeddableInput, - EmbeddableOutput, - EmbeddableSetup, - EmbeddableStart, - IEmbeddable, -} from '@kbn/embeddable-plugin/public'; +import { EmbeddableSetup, EmbeddableStart } from '@kbn/embeddable-plugin/public'; import { apiHasUniqueId, EmbeddableApiContext, StateComparators, } from '@kbn/presentation-publishing'; -import type { FinderAttributes } from '@kbn/saved-objects-finder-plugin/common'; import { AdvancedUiActionsSetup, AdvancedUiActionsStart, @@ -30,13 +19,12 @@ import { UiActionsEnhancedDynamicActionManager as DynamicActionManager, } from '@kbn/ui-actions-enhanced-plugin/public'; import deepEqual from 'react-fast-compare'; -import { BehaviorSubject, distinctUntilChanged } from 'rxjs'; +import { BehaviorSubject } from 'rxjs'; import { DynamicActionStorage, type DynamicActionStorageApi, } from './embeddables/dynamic_action_storage'; import { HasDynamicActions } from './embeddables/interfaces/has_dynamic_actions'; -import { EnhancedEmbeddable } from './types'; import { getDynamicActionsState } from './get_dynamic_actions_state'; export interface SetupDependencies { @@ -79,8 +67,6 @@ export class EmbeddableEnhancedPlugin private uiActions?: StartDependencies['uiActionsEnhanced']; public setup(core: CoreSetup<StartDependencies>, plugins: SetupDependencies): SetupContract { - this.setCustomEmbeddableFactoryProvider(plugins); - return {}; } @@ -94,45 +80,6 @@ export class EmbeddableEnhancedPlugin public stop() {} - private setCustomEmbeddableFactoryProvider(plugins: SetupDependencies) { - plugins.embeddable.setCustomEmbeddableFactoryProvider( - < - I extends EmbeddableInput = EmbeddableInput, - O extends EmbeddableOutput = EmbeddableOutput, - E extends IEmbeddable<I, O> = IEmbeddable<I, O>, - T extends FinderAttributes = {} - >( - def: EmbeddableFactoryDefinition<I, O, E, T> - ): EmbeddableFactory<I, O, E, T> => { - const factory: EmbeddableFactory<I, O, E, T> = defaultEmbeddableFactoryProvider<I, O, E, T>( - def - ); - return { - ...factory, - create: async (...args) => { - const embeddable = await factory.create(...args); - if (!embeddable) return embeddable; - return this.enhanceEmbeddableWithDynamicActions(embeddable); - }, - createFromSavedObject: async (...args) => { - const embeddable = await factory.createFromSavedObject(...args); - if (!embeddable) return embeddable; - return this.enhanceEmbeddableWithDynamicActions(embeddable); - }, - }; - } - ); - } - - private readonly isEmbeddableContext = (context: unknown): context is EmbeddableContext => { - if (!(context as EmbeddableContext)?.embeddable) { - // eslint-disable-next-line no-console - console.warn('For drilldowns to work action context should contain .embeddable field.'); - return false; - } - return true; - }; - private initializeDynamicActions( uuid: string, getTitle: () => string | undefined, @@ -183,77 +130,6 @@ export class EmbeddableEnhancedPlugin }; } - /** - * TODO: Remove this entire enhanceEmbeddableWithDynamicActions method once the embeddable refactor work is complete - */ - private enhanceEmbeddableWithDynamicActions<E extends IEmbeddable>( - embeddable: E - ): EnhancedEmbeddable<E> { - const enhancedEmbeddable = embeddable as EnhancedEmbeddable<E>; - - const dynamicActionsState$ = new BehaviorSubject<DynamicActionsSerializedState['enhancements']>( - { - dynamicActions: { events: [] }, - ...(embeddable.getInput().enhancements ?? {}), - } - ); - const api = { - dynamicActionsState$, - setDynamicActions: (newState: DynamicActionsSerializedState['enhancements']) => { - embeddable.updateInput({ enhancements: newState }); - }, - }; - - /** - * Keep the dynamicActionsState$ publishing subject in sync with changes to the embeddable's input. - */ - embeddable - .getInput$() - .pipe( - distinctUntilChanged(({ enhancements: old }, { enhancements: updated }) => - deepEqual(old, updated) - ) - ) - .subscribe((input) => { - dynamicActionsState$.next({ - dynamicActions: { events: [] }, - ...(input.enhancements ?? {}), - } as DynamicActionsSerializedState['enhancements']); - }); - - const storage = new DynamicActionStorage( - String(embeddable.runtimeId), - embeddable.getTitle, - api - ); - const dynamicActions = new DynamicActionManager({ - isCompatible: async (context: unknown) => { - if (!this.isEmbeddableContext(context)) return false; - return context.embeddable.runtimeId === embeddable.runtimeId; - }, - storage, - uiActions: this.uiActions!, - }); - - const stop = this.startDynamicActions(dynamicActions); - embeddable.getInput$().subscribe({ - next: () => { - storage.reload$.next(); - }, - error: stop, - complete: stop, - }); - - enhancedEmbeddable.enhancements = { - ...enhancedEmbeddable.enhancements, - dynamicActions, - }; - enhancedEmbeddable.dynamicActionsState$ = api.dynamicActionsState$; - enhancedEmbeddable.setDynamicActions = api.setDynamicActions; - - return enhancedEmbeddable; - } - private startDynamicActions(dynamicActions: DynamicActionManager) { dynamicActions.start().catch((error) => { /* eslint-disable no-console */ diff --git a/x-pack/plugins/embeddable_enhanced/public/types.ts b/x-pack/plugins/embeddable_enhanced/public/types.ts deleted file mode 100644 index c065e3b89060e..0000000000000 --- a/x-pack/plugins/embeddable_enhanced/public/types.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { IEmbeddable } from '@kbn/embeddable-plugin/public'; -import { HasDynamicActions } from './embeddables/interfaces/has_dynamic_actions'; - -export type EnhancedEmbeddable<E extends IEmbeddable = IEmbeddable> = E & HasDynamicActions; - -/** - * @deprecated use `EmbeddableApiContext` from `@kbn/presentation-publishing` - */ -export interface EnhancedEmbeddableContext { - embeddable: EnhancedEmbeddable; -} diff --git a/x-pack/plugins/embeddable_enhanced/tsconfig.json b/x-pack/plugins/embeddable_enhanced/tsconfig.json index 7aa9a6a2f42a6..a065672b9162a 100644 --- a/x-pack/plugins/embeddable_enhanced/tsconfig.json +++ b/x-pack/plugins/embeddable_enhanced/tsconfig.json @@ -9,12 +9,9 @@ "kbn_references": [ "@kbn/core", "@kbn/embeddable-plugin", - "@kbn/ui-actions-plugin", "@kbn/ui-actions-enhanced-plugin", - "@kbn/i18n", "@kbn/kibana-utils-plugin", "@kbn/data-plugin", - "@kbn/saved-objects-finder-plugin", "@kbn/presentation-publishing", ], "exclude": [ diff --git a/x-pack/plugins/enterprise_search/common/types/index.ts b/x-pack/plugins/enterprise_search/common/types/index.ts index 1d9fb9b2cb0c1..364008ef18b49 100644 --- a/x-pack/plugins/enterprise_search/common/types/index.ts +++ b/x-pack/plugins/enterprise_search/common/types/index.ts @@ -62,7 +62,6 @@ export interface Meta { } export interface ClientConfigType { - canDeployEntSearch: boolean; host?: string; ui: { enabled: boolean; diff --git a/x-pack/plugins/enterprise_search/kibana.jsonc b/x-pack/plugins/enterprise_search/kibana.jsonc index 42e4db528a759..a484cf625c0ae 100644 --- a/x-pack/plugins/enterprise_search/kibana.jsonc +++ b/x-pack/plugins/enterprise_search/kibana.jsonc @@ -3,7 +3,7 @@ "id": "@kbn/enterprise-search-plugin", "owner": "@elastic/search-kibana", // TODO this is currently used from Observability too, must be refactored before solution-specific builds - // see x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx + // see x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx // cc sphilipse "group": "search", "visibility": "private", @@ -21,6 +21,7 @@ "logsDataAccess", "esUiShared", "navigation", + "uiActions" ], "optionalPlugins": [ "customIntegrations", diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/components/add_analytics_collections/add_analytics_collection_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/analytics/components/add_analytics_collections/add_analytics_collection_modal.tsx index a13fd20760c11..6008c391239ba 100644 --- a/x-pack/plugins/enterprise_search/public/applications/analytics/components/add_analytics_collections/add_analytics_collection_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/components/add_analytics_collections/add_analytics_collection_modal.tsx @@ -41,6 +41,7 @@ export const AddAnalyticsCollectionModal: React.FC<AddAnalyticsCollectionModalPr }) => { const { isLoading, isSuccess, isSystemError, canSubmit } = useValues(AddAnalyticsCollectionLogic); const modalFormId = useGeneratedHtmlId({ prefix: 'createAnalyticsCollection' }); + const modalTitleId = useGeneratedHtmlId({ prefix: 'modalTitleId' }); useEffect(() => { if (isSuccess || isSystemError) { @@ -52,11 +53,12 @@ export const AddAnalyticsCollectionModal: React.FC<AddAnalyticsCollectionModalPr <EuiModal onClose={onClose} maxWidth={minModalWidth} + aria-labelledby={modalTitleId} initialFocus={`[name=${collectionNameField}]`} > <EuiModalHeader> <EuiFlexItem> - <EuiModalHeaderTitle> + <EuiModalHeaderTitle id={modalTitleId}> {i18n.translate('xpack.enterpriseSearch.analytics.collectionsCreate.form.title', { defaultMessage: 'Name your Collection', })} @@ -81,13 +83,17 @@ export const AddAnalyticsCollectionModal: React.FC<AddAnalyticsCollectionModalPr </EuiModalBody> <EuiModalFooter> - <EuiButtonEmpty onClick={onClose}> + <EuiButtonEmpty + data-test-subj="enterpriseSearchAddAnalyticsCollectionModalCancelButton" + onClick={onClose} + > {i18n.translate('xpack.enterpriseSearch.analytics.collectionsCreate.form.cancelButton', { defaultMessage: 'Cancel', })} </EuiButtonEmpty> <EuiButton + data-test-subj="enterpriseSearchAddAnalyticsCollectionModalCreateButton" fill type="submit" form={modalFormId} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/nav.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/nav.tsx index c70971ebc6ece..20bbfe38e5f39 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/nav.tsx @@ -65,20 +65,3 @@ export const useAppSearchNav = () => { // to cause all our navItems to properly render as nav links. return [{ id: '', name: '', items: navItems }]; }; - -// Process App Search side nav items for use in the new Solution Nav -export const cleanAppSearchNavItems = ( - items: Array<EuiSideNavItemType<unknown>> -): Array<EuiSideNavItemType<unknown>> => { - const enginesItem = items.find((item) => item.id === 'engines'); - if (enginesItem && enginesItem.items && enginesItem.items.length > 0) { - const engineChildren = enginesItem.items; - const engineNameItem = engineChildren.find((item) => item.id === 'engineName'); - if (engineNameItem && engineNameItem.renderItem) { - delete engineNameItem.renderItem; - engineNameItem.items = engineChildren.filter((item) => item.id !== 'engineName'); - enginesItem.items = [engineNameItem]; - } - } - return items; -}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/page_template.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/page_template.tsx index 35792e2d0cbf9..5168a05c8a376 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/page_template.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/page_template.tsx @@ -16,26 +16,15 @@ import { SetAppSearchChrome } from '../../../shared/kibana_chrome'; import { EnterpriseSearchPageTemplateWrapper, PageTemplateProps } from '../../../shared/layout'; import { SendAppSearchTelemetry } from '../../../shared/telemetry'; -import { useAppSearchNav, cleanAppSearchNavItems } from './nav'; +import { useAppSearchNav } from './nav'; export const AppSearchPageTemplate: React.FC< Omit<PageTemplateProps, 'useEndpointHeaderActions'> > = ({ children, pageChrome, pageViewTelemetry, ...pageTemplateProps }) => { const navItems = useAppSearchNav(); - const { getChromeStyle$, updateSideNavDefinition } = useValues(KibanaLogic); + const { getChromeStyle$ } = useValues(KibanaLogic); const chromeStyle = useObservable(getChromeStyle$(), 'classic'); - React.useEffect(() => { - if (chromeStyle === 'classic') return; - const appSearch = cleanAppSearchNavItems(navItems?.[0]?.items); - // We update the new side nav definition with the selected app items - updateSideNavDefinition({ appSearch }); - - return () => { - updateSideNavDefinition({ appSearch: undefined }); - }; - }, [chromeStyle, navItems, updateSideNavDefinition]); - return ( <EnterpriseSearchPageTemplateWrapper {...pageTemplateProps} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/components/synonym_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/components/synonym_modal.tsx index 93dbc9cea4447..ed3274112db9e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/components/synonym_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/components/synonym_modal.tsx @@ -19,6 +19,7 @@ import { EuiFlexItem, EuiButton, EuiButtonEmpty, + useGeneratedHtmlId, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -37,6 +38,7 @@ export const SynonymModal: React.FC = () => { const { isModalOpen, modalLoading, activeSynonymSet } = useValues(SynonymsLogic); const { closeModal, createSynonymSet, updateSynonymSet, deleteSynonymSet } = useActions(SynonymsLogic); + const modalTitleId = useGeneratedHtmlId(); const modalTitle = activeSynonymSet ? SYNONYM_UPDATE_TITLE : SYNONYM_CREATE_TITLE; const id = activeSynonymSet?.id || 'createNewSynonymSet'; @@ -46,9 +48,9 @@ export const SynonymModal: React.FC = () => { : (newSynonyms: string[]) => createSynonymSet(newSynonyms); return isModalOpen ? ( - <EuiModal onClose={closeModal}> + <EuiModal onClose={closeModal} aria-labelledby={modalTitleId}> <EuiModalHeader> - <EuiModalHeaderTitle>{modalTitle}</EuiModalHeaderTitle> + <EuiModalHeaderTitle id={modalTitleId}>{modalTitle}</EuiModalHeaderTitle> </EuiModalHeader> <FlashMessages /> <EuiModalBody> @@ -82,7 +84,12 @@ export const SynonymModal: React.FC = () => { )} </EuiFlexItem> <EuiFlexItem grow={false}> - <EuiButtonEmpty onClick={closeModal}>{CANCEL_BUTTON_LABEL}</EuiButtonEmpty> + <EuiButtonEmpty + data-test-subj="enterpriseSearchSynonymModalButton" + onClick={closeModal} + > + {CANCEL_BUTTON_LABEL} + </EuiButtonEmpty> </EuiFlexItem> <EuiFlexItem grow={false}> <EuiButton diff --git a/x-pack/plugins/enterprise_search/public/applications/applications/components/search_application/docs_explorer/document_context.test.tsx b/x-pack/plugins/enterprise_search/public/applications/applications/components/search_application/docs_explorer/document_context.test.tsx index 76a65da6d3d6c..9e6607c278f4f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/applications/components/search_application/docs_explorer/document_context.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/applications/components/search_application/docs_explorer/document_context.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { DocumentProvider, useSelectedDocument } from './document_context'; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/delete_connector_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/delete_connector_api_logic.ts index a427b634c3b6e..80af793a42f80 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/delete_connector_api_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/connector/delete_connector_api_logic.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { i18n } from '@kbn/i18n'; import { DeleteConnectorResponse } from '../../../../../common/types/connectors'; @@ -12,30 +13,42 @@ import { HttpLogic } from '../../../shared/http'; export interface DeleteConnectorApiLogicArgs { connectorId: string; + connectorName: string; shouldDeleteIndex: boolean; } export interface DeleteConnectorApiLogicResponse { - acknowledged: boolean; + connectorName: string; } export const deleteConnector = async ({ connectorId, + connectorName, shouldDeleteIndex = false, -}: DeleteConnectorApiLogicArgs) => { - return await HttpLogic.values.http.delete( - `/internal/enterprise_search/connectors/${connectorId}`, - { - query: { - shouldDeleteIndex, - }, - } - ); +}: DeleteConnectorApiLogicArgs): Promise<DeleteConnectorApiLogicResponse> => { + await HttpLogic.values.http.delete(`/internal/enterprise_search/connectors/${connectorId}`, { + query: { + shouldDeleteIndex, + }, + }); + return { connectorName }; }; export const DeleteConnectorApiLogic = createApiLogic( ['delete_connector_api_logic'], - deleteConnector + deleteConnector, + { + showSuccessFlashFn: ({ connectorName }) => + i18n.translate( + 'xpack.enterpriseSearch.content.connectors.deleteConnector.successToast.title', + { + defaultMessage: 'The connector {connectorName} was successfully deleted', + values: { + connectorName, + }, + } + ), + } ); export type DeleteConnectorApiLogicActions = Actions< diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/delete_connector_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/delete_connector_modal.tsx index a047b8ab8219b..65f3e38916faf 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/delete_connector_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/delete_connector_modal.tsx @@ -46,7 +46,7 @@ export const DeleteConnectorModal: React.FC<DeleteConnectorModalProps> = ({ isCr isDeleteModalVisible, } = useValues(ConnectorsLogic); - const connectorName = isCrawler ? deleteModalIndexName : deleteModalConnectorName; + const connectorName = (isCrawler ? deleteModalIndexName : deleteModalConnectorName) || ''; const [inputConnectorName, setInputConnectorName] = useState(''); const [shouldDeleteIndex, setShouldDeleteIndex] = useState(false); @@ -80,6 +80,7 @@ export const DeleteConnectorModal: React.FC<DeleteConnectorModalProps> = ({ isCr } else { deleteConnector({ connectorId, + connectorName, shouldDeleteIndex, }); setConnectorUiOptions(omit(connectorUiOptions, connectorId)); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts index df02a53fe0ab0..bacde5895073e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts @@ -138,7 +138,10 @@ describe('PipelinesLogic', () => { describe('apiSuccess', () => { it('should call flashSuccessToast', () => { PipelinesLogic.actions.apiSuccess({ connectorId: 'a', pipeline: newPipeline }); - expect(flashSuccessToast).toHaveBeenCalledWith('Pipelines updated'); + expect(flashSuccessToast).toHaveBeenCalledWith('Pipelines updated', { + 'aria-live': 'assertive', + role: 'alert', + }); }); }); describe('createCustomPipelineError', () => { @@ -154,7 +157,10 @@ describe('PipelinesLogic', () => { PipelinesLogic.actions.fetchCustomPipeline = jest.fn(); PipelinesLogic.actions.fetchIndexApiSuccess(connectorIndex); PipelinesLogic.actions.createCustomPipelineSuccess({ [connectorIndex.name]: {} }); - expect(flashSuccessToast).toHaveBeenCalledWith('Custom pipeline created'); + expect(flashSuccessToast).toHaveBeenCalledWith('Custom pipeline created', { + 'aria-live': 'assertive', + role: 'alert', + }); expect(PipelinesLogic.actions.setPipelineState).toHaveBeenCalledWith({ ...PipelinesLogic.values.pipelineState, name: connectorIndex.name, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/header_actions/syncs_context_menu.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/header_actions/syncs_context_menu.tsx index bdae6e0e2853c..b0c887a4c2228 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/header_actions/syncs_context_menu.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/shared/header_actions/syncs_context_menu.tsx @@ -80,9 +80,7 @@ export const SyncsContextMenu: React.FC<SyncsContextMenuProps> = ({ disabled = f const shouldShowIncrementalSync = productFeatures.hasIncrementalSyncEnabled && hasIncrementalSyncFeature; - const isEnterpriseSearchNotAvailable = Boolean( - config.host && config.canDeployEntSearch && errorConnectingMessage - ); + const isEnterpriseSearchNotAvailable = Boolean(config.host && errorConnectingMessage); const isSyncsDisabled = (connector?.is_native && isEnterpriseSearchNotAvailable) || ingestionStatus === IngestionStatus.INCOMPLETE || diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/index.test.tsx index a32062256eec5..dbbc6a746ee51 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/index.test.tsx @@ -29,20 +29,13 @@ describe('EnterpriseSearchContent', () => { it('renders EnterpriseSearchContentConfigured when config.host is set & available', () => { setMockValues({ - config: { canDeployEntSearch: true, host: 'some.url' }, + config: { host: 'some.url' }, errorConnectingMessage: '', }); const wrapper = shallow(<EnterpriseSearchContent />); expect(wrapper.find(EnterpriseSearchContentConfigured)).toHaveLength(1); }); - - it('renders EnterpriseSearchContentConfigured when config.host is not set & Ent Search cannot be deployed', () => { - setMockValues({ config: { canDeployEntSearch: false, host: '' }, errorConnectingMessage: '' }); - const wrapper = shallow(<EnterpriseSearchContent />); - - expect(wrapper.find(EnterpriseSearchContentConfigured)).toHaveLength(1); - }); }); describe('EnterpriseSearchContentConfigured', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.test.tsx index 74be43ab32253..b1c0394e80235 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.test.tsx @@ -17,7 +17,7 @@ import { WorkplaceSearchProductCard } from './workplace_search_product_card'; describe('EnterpriseSearchProductCard', () => { beforeEach(() => { - setMockValues({ config: { canDeployEntSearch: true, host: 'localhost' } }); + setMockValues({ config: { host: 'localhost' } }); }); it('renders both services with access', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.test.tsx index 3718a495cd17b..b8f7ba1d354d5 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.test.tsx @@ -19,14 +19,14 @@ import { ProductSelector } from '.'; describe('ProductSelector', () => { it('renders the overview page, product cards, & setup guide CTAs with no host set', () => { - setMockValues({ config: { canDeployEntSearch: true, host: '' } }); + setMockValues({ config: { host: '' } }); const wrapper = shallow(<ProductSelector />); expect(wrapper.find(ElasticsearchProductCard)).toHaveLength(1); }); it('renders the trial callout', () => { - setMockValues({ config: { canDeployEntSearch: true, host: 'localhost' } }); + setMockValues({ config: { host: 'localhost' } }); const wrapper = shallow(<ProductSelector />); expect(wrapper.find(TrialCallout)).toHaveLength(1); @@ -34,7 +34,7 @@ describe('ProductSelector', () => { describe('access checks when host is set', () => { beforeEach(() => { - setMockValues({ config: { canDeployEntSearch: true, host: 'localhost' } }); + setMockValues({ config: { host: 'localhost' } }); }); it('does not render the Setup CTA when there is a host', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/index.test.tsx index 1866d568af62f..81827172acc6d 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.test.tsx @@ -26,6 +26,7 @@ import { mlPluginMock } from '@kbn/ml-plugin/public/mocks'; import { navigationPluginMock } from '@kbn/navigation-plugin/public/mocks'; import { securityMock } from '@kbn/security-plugin/public/mocks'; import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; +import { uiActionsPluginMock } from '@kbn/ui-actions-plugin/public/mocks'; import { AppSearch } from './app_search'; import { EnterpriseSearchOverview } from './enterprise_search_overview'; @@ -52,6 +53,7 @@ describe('renderApp', () => { security: securityMock.createStart(), share: sharePluginMock.createStartContract(), ml: mlPluginMock.createStartContract(), + uiActions: uiActionsPluginMock.createStartContract(), user: {}, }, updateSideNavDefinition: jest.fn(), diff --git a/x-pack/plugins/enterprise_search/public/applications/index.tsx b/x-pack/plugins/enterprise_search/public/applications/index.tsx index d934932dd163f..273bf1726cc51 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.tsx @@ -14,8 +14,11 @@ import { Store } from 'redux'; import { of } from 'rxjs'; +import { CellActionsProvider } from '@kbn/cell-actions'; + import { AppMountParameters, CoreStart } from '@kbn/core/public'; import { I18nProvider } from '@kbn/i18n-react'; +import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; @@ -146,34 +149,41 @@ export const renderApp = ( http, readOnlyMode, }); + const unmountFlashMessagesLogic = mountFlashMessagesLogic({ notifications }); ReactDOM.render( <I18nProvider> <KibanaThemeProvider theme={{ theme$: params.theme$ }}> - <KibanaContextProvider - services={{ - ...core, - ...plugins, - }} - > - <CloudContext> - <Provider store={store}> - <Router history={params.history}> - <App - access={productAccess} - appSearch={appSearch} - configuredLimits={configuredLimits} - enterpriseSearchVersion={enterpriseSearchVersion} - features={features} - kibanaVersion={kibanaVersion} - readOnlyMode={readOnlyMode} - searchOAuth={searchOAuth} - workplaceSearch={workplaceSearch} - /> - </Router> - </Provider> - </CloudContext> - </KibanaContextProvider> + <EuiThemeProvider darkMode={core.theme.getTheme().darkMode}> + <KibanaContextProvider + services={{ + ...core, + ...plugins, + }} + > + <CellActionsProvider + getTriggerCompatibleActions={plugins.uiActions.getTriggerCompatibleActions} + > + <CloudContext> + <Provider store={store}> + <Router history={params.history}> + <App + access={productAccess} + appSearch={appSearch} + configuredLimits={configuredLimits} + enterpriseSearchVersion={enterpriseSearchVersion} + features={features} + kibanaVersion={kibanaVersion} + readOnlyMode={readOnlyMode} + searchOAuth={searchOAuth} + workplaceSearch={workplaceSearch} + /> + </Router> + </Provider> + </CloudContext> + </CellActionsProvider> + </KibanaContextProvider> + </EuiThemeProvider> </KibanaThemeProvider> </I18nProvider>, params.element diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.test.ts index ced4a7c5004b5..5598510567684 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.test.ts @@ -91,7 +91,10 @@ describe('CreateApiLogic', () => { const { mount: messageMount } = messageLogic; messageMount(); messageLogic.actions.apiSuccess({}); - expect(flashSuccessToast).toHaveBeenCalledWith('test message'); + expect(flashSuccessToast).toHaveBeenCalledWith('test message', { + 'aria-live': 'assertive', + role: 'alert', + }); }); }); describe('apiError', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.ts index 65e0b5f052e33..a32f479dcda82 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.ts @@ -59,7 +59,10 @@ export const createApiLogic = <Result, Args>( }, apiSuccess: (result) => { if (options.showSuccessFlashFn) { - flashSuccessToast(options.showSuccessFlashFn(result)); + flashSuccessToast(options.showSuccessFlashFn(result), { + 'aria-live': 'assertive', + role: 'alert', + }); } }, makeRequest: async (args, breakpoint) => { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.test.ts index d7cea1fe1b26d..6c7012bb1a061 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.test.ts @@ -103,9 +103,18 @@ describe('toastAPIErrors', () => { it('converts API errors into flash messages', () => { toastAPIErrors(mockHttpError); - expect(flashErrorToast).toHaveBeenNthCalledWith(1, 'Could not find X'); - expect(flashErrorToast).toHaveBeenNthCalledWith(2, 'Could not find Y'); - expect(flashErrorToast).toHaveBeenNthCalledWith(3, 'Something else bad happened'); + expect(flashErrorToast).toHaveBeenNthCalledWith(1, 'Could not find X', { + 'aria-live': 'assertive', + role: 'alert', + }); + expect(flashErrorToast).toHaveBeenNthCalledWith(2, 'Could not find Y', { + 'aria-live': 'assertive', + role: 'alert', + }); + expect(flashErrorToast).toHaveBeenNthCalledWith(3, 'Something else bad happened', { + 'aria-live': 'assertive', + role: 'alert', + }); }); it('falls back to the basic message for http responses without an errors array', () => { @@ -117,7 +126,10 @@ describe('toastAPIErrors', () => { }, } as any); - expect(flashErrorToast).toHaveBeenCalledWith('Not Found'); + expect(flashErrorToast).toHaveBeenCalledWith('Not Found', { + 'aria-live': 'assertive', + role: 'alert', + }); }); it('displays a generic error message and re-throws non-API errors', () => { @@ -127,7 +139,10 @@ describe('toastAPIErrors', () => { toastAPIErrors(error as any); }).toThrowError(error); - expect(flashErrorToast).toHaveBeenCalledWith(expect.any(String)); + expect(flashErrorToast).toHaveBeenCalledWith(expect.any(String), { + 'aria-live': 'assertive', + role: 'alert', + }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.ts index 9e74d90605dc0..e08178f730d27 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.ts @@ -74,7 +74,10 @@ export const toastAPIErrors = (response: HttpResponse<ErrorResponse>) => { const messages = getErrorsFromHttpResponse(response); for (const message of messages) { - flashErrorToast(message); + flashErrorToast(message, { + 'aria-live': 'assertive', + role: 'alert', + }); } // If this was a programming error or a failed request (such as a CORS) error, // we rethrow the error so it shows up in the developer console diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/types.ts index 47040fb76cbc4..48a883e8ed28c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/types.ts @@ -19,7 +19,9 @@ export interface IFlashMessage { // @see EuiGlobalToastListToast for more props export interface ToastOptions { + 'aria-live'?: 'assertive' | 'polite'; // Defaults to 'polite' iconType?: string; + role?: string; // Defaults to the log role. The alert role can be considered only if all toasts in this list will require immediate user attention. text?: string; // Additional text below the message/title, same as EuiToast['text'] toastLifeTimeMs?: number; // Allows customizing per-toast timeout } diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/base_nav.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/base_nav.tsx index b2e3fdc01be03..7fe1ba1e017c6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/base_nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/base_nav.tsx @@ -19,13 +19,9 @@ import { import { i18n } from '@kbn/i18n'; import type { ClassicNavItem } from '@kbn/search-navigation/public'; -import { GETTING_STARTED_TITLE, APP_SEARCH_PLUGIN } from '../../../../common/constants'; +import { GETTING_STARTED_TITLE } from '../../../../common/constants'; -import { BuildClassicNavParameters } from '../types'; - -export const buildBaseClassicNavItems = ({ - productAccess, -}: BuildClassicNavParameters): ClassicNavItem[] => { +export const buildBaseClassicNavItems = (): ClassicNavItem[] => { const navItems: ClassicNavItem[] = []; // Home @@ -168,36 +164,5 @@ export const buildBaseClassicNavItems = ({ name: GETTING_STARTED_TITLE, }); - if (productAccess.hasAppSearchAccess || productAccess.hasWorkplaceSearchAccess) { - const entSearchItems: ClassicNavItem[] = []; - if (productAccess.hasAppSearchAccess) { - entSearchItems.push({ - 'data-test-subj': 'searchSideNav-AppSearch', - deepLink: { - link: 'appSearch:engines', - }, - name: APP_SEARCH_PLUGIN.NAME, - id: 'app_search', - }); - } - if (productAccess.hasWorkplaceSearchAccess) { - entSearchItems.push({ - 'data-test-subj': 'searchSideNav-WorkplaceSearch', - deepLink: { - link: 'workplaceSearch', - }, - id: 'workplace_search', - }); - } - navItems.push({ - 'data-test-subj': 'searchSideNav-EnterpriseSearch', - id: 'enterpriseSearch', - items: entSearchItems, - name: i18n.translate('xpack.enterpriseSearch.nav.title', { - defaultMessage: 'Enterprise Search', - }), - }); - } - return navItems; }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx index 36bd081021cf3..19a0fea68969b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx @@ -15,7 +15,7 @@ jest.mock('../../enterprise_search_content/components/search_index/indices/indic import { setMockValues, mockKibanaValues } from '../../__mocks__/kea_logic'; -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { EuiSideNavItemType } from '@elastic/eui'; @@ -144,27 +144,6 @@ const baseNavItems = [ ], name: 'Getting started', }, - { - 'data-test-subj': 'searchSideNav-EnterpriseSearch', - id: 'enterpriseSearch', - items: [ - { - 'data-test-subj': 'searchSideNav-AppSearch', - href: '/app/enterprise_search/app_search', - id: 'app_search', - items: undefined, - name: 'App Search', - }, - { - 'data-test-subj': 'searchSideNav-WorkplaceSearch', - href: '/app/enterprise_search/workplace_search', - id: 'workplace_search', - items: undefined, - name: 'Workplace Search', - }, - ], - name: 'Enterprise Search', - }, ]; const mockNavLinks = [ @@ -264,86 +243,6 @@ describe('useEnterpriseSearchContentNav', () => { expect(result.current).toEqual(baseNavItems); }); - - it('excludes legacy products when the user has no access to them', () => { - const noProductAccess: ProductAccess = { - ...DEFAULT_PRODUCT_ACCESS, - hasAppSearchAccess: false, - hasWorkplaceSearchAccess: false, - }; - - setMockValues({ - ...defaultMockValues, - productAccess: noProductAccess, - }); - mockKibanaValues.uiSettings.get.mockReturnValue(false); - - const { result } = renderHook(() => useEnterpriseSearchNav()); - const esNav = result.current; - const legacyESNav = esNav?.find((item) => item.id === 'enterpriseSearch'); - expect(legacyESNav).toBeUndefined(); - }); - - it('excludes App Search when the user has no access to it', () => { - const workplaceSearchProductAccess: ProductAccess = { - ...DEFAULT_PRODUCT_ACCESS, - hasAppSearchAccess: false, - hasWorkplaceSearchAccess: true, - }; - - setMockValues({ - ...defaultMockValues, - productAccess: workplaceSearchProductAccess, - }); - - const { result } = renderHook(() => useEnterpriseSearchNav()); - const esNav = result.current; - const legacyESNav = esNav?.find((item) => item.id === 'enterpriseSearch'); - expect(legacyESNav).not.toBeUndefined(); - expect(legacyESNav).toEqual({ - 'data-test-subj': 'searchSideNav-EnterpriseSearch', - id: 'enterpriseSearch', - items: [ - { - 'data-test-subj': 'searchSideNav-WorkplaceSearch', - href: '/app/enterprise_search/workplace_search', - id: 'workplace_search', - name: 'Workplace Search', - }, - ], - name: 'Enterprise Search', - }); - }); - - it('excludes Workplace Search when the user has no access to it', () => { - const appSearchProductAccess: ProductAccess = { - ...DEFAULT_PRODUCT_ACCESS, - hasWorkplaceSearchAccess: false, - }; - - setMockValues({ - ...defaultMockValues, - productAccess: appSearchProductAccess, - }); - - const { result } = renderHook(() => useEnterpriseSearchNav()); - const esNav = result.current; - const legacyESNav = esNav?.find((item) => item.id === 'enterpriseSearch'); - expect(legacyESNav).not.toBeUndefined(); - expect(legacyESNav).toEqual({ - 'data-test-subj': 'searchSideNav-EnterpriseSearch', - id: 'enterpriseSearch', - items: [ - { - 'data-test-subj': 'searchSideNav-AppSearch', - href: '/app/enterprise_search/app_search', - id: 'app_search', - name: 'App Search', - }, - ], - name: 'Enterprise Search', - }); - }); }); describe('useEnterpriseSearchApplicationNav', () => { @@ -370,7 +269,6 @@ describe('useEnterpriseSearchApplicationNav', () => { 'Build', 'Relevance', 'Getting started', - 'Enterprise Search', ]); const searchItem = navItems?.find((ni) => ni.id === 'build'); expect(searchItem).not.toBeUndefined(); @@ -432,7 +330,6 @@ describe('useEnterpriseSearchApplicationNav', () => { 'Build', 'Relevance', 'Getting started', - 'Enterprise Search', ]); const searchItem = navItems?.find((ni) => ni.id === 'build'); expect(searchItem).not.toBeUndefined(); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx index 8f83b6c73402e..d122cf788fd4f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx @@ -30,19 +30,19 @@ import { generateNavLink } from './nav_link_helpers'; * @returns The Enterprise Search navigation items */ export const useEnterpriseSearchNav = (alwaysReturn = false) => { - const { isSidebarEnabled, productAccess, getNavLinks } = useValues(KibanaLogic); + const { isSidebarEnabled, getNavLinks } = useValues(KibanaLogic); const indicesNavItems = useIndicesNav(); const navItems: Array<EuiSideNavItemTypeEnhanced<unknown>> = useMemo(() => { - const baseNavItems = buildBaseClassicNavItems({ productAccess }); + const baseNavItems = buildBaseClassicNavItems(); const deepLinks = getNavLinks().reduce((links, link) => { links[link.id] = link; return links; }, {} as Record<string, ChromeNavLink | undefined>); return generateSideNavItems(baseNavItems, deepLinks, { search_indices: indicesNavItems }); - }, [productAccess, indicesNavItems]); + }, [indicesNavItems]); if (!isSidebarEnabled && !alwaysReturn) return undefined; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/types.ts index 25fce6c62d05d..83148acd05cc6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/types.ts @@ -8,7 +8,6 @@ import type { AppDeepLinkId, EuiSideNavItemTypeEnhanced } from '@kbn/core-chrome-browser'; import { APP_SEARCH_PLUGIN, WORKPLACE_SEARCH_PLUGIN } from '../../../common/constants'; -import type { ProductAccess } from '../../../common/types'; import { ADD, UPDATE } from './constants/operations'; @@ -81,7 +80,3 @@ export interface GenerateNavLinkFromDeepLinkParameters { link: AppDeepLinkId; shouldShowActiveForSubroutes?: boolean; } - -export interface BuildClassicNavParameters { - productAccess: ProductAccess; -} diff --git a/x-pack/plugins/enterprise_search/public/applications/test_helpers/test_utils.test_helper.tsx b/x-pack/plugins/enterprise_search/public/applications/test_helpers/test_utils.test_helper.tsx index e046bfa904e55..13694a3f7db64 100644 --- a/x-pack/plugins/enterprise_search/public/applications/test_helpers/test_utils.test_helper.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/test_helpers/test_utils.test_helper.tsx @@ -44,7 +44,6 @@ export const mockKibanaProps: KibanaLogicProps = { isCloudEnabled: false, }, config: { - canDeployEntSearch: true, host: 'http://localhost:3002', ui: { enabled: true, diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/page_template.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/page_template.tsx index ed352cd42aa8f..87c70d19351d6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/page_template.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/page_template.tsx @@ -25,20 +25,9 @@ export const WorkplaceSearchPageTemplate: React.FC<PageTemplateProps> = ({ ...pageTemplateProps }) => { const navItems = useWorkplaceSearchNav(); - const { getChromeStyle$, updateSideNavDefinition } = useValues(KibanaLogic); + const { getChromeStyle$ } = useValues(KibanaLogic); const chromeStyle = useObservable(getChromeStyle$(), 'classic'); - React.useEffect(() => { - if (chromeStyle === 'classic') return; - // We update the new side nav definition with the selected app items - updateSideNavDefinition({ workplaceSearch: navItems?.[0]?.items }); - }, [chromeStyle, navItems, updateSideNavDefinition]); - React.useEffect(() => { - return () => { - updateSideNavDefinition({ workplaceSearch: undefined }); - }; - }, [updateSideNavDefinition]); - return ( <EnterpriseSearchPageTemplateWrapper restrictWidth diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_key_flyout.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_key_flyout.tsx index 150778ad7fdbc..18bb73d8d5fd6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_key_flyout.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_key_flyout.tsx @@ -23,6 +23,7 @@ import { EuiButton, EuiForm, EuiTitle, + useGeneratedHtmlId, } from '@elastic/eui'; import { CLOSE_BUTTON_LABEL, SAVE_BUTTON_LABEL } from '../../../../shared/constants'; @@ -44,12 +45,20 @@ export const ApiKeyFlyout: React.FC = () => { activeApiTokenRawName: rawName, } = useValues(ApiKeysLogic); + const flyoutTitleId = useGeneratedHtmlId(); + return ( <EuiPortal> - <EuiFlyout onClose={hideApiKeyForm} hideCloseButton ownFocus size="s"> + <EuiFlyout + onClose={hideApiKeyForm} + hideCloseButton + ownFocus + size="s" + aria-labelledby={flyoutTitleId} + > <EuiFlyoutHeader hasBorder> <EuiTitle size="m"> - <h2>{API_KEY_FLYOUT_TITLE}</h2> + <h2 id={flyoutTitleId}>{API_KEY_FLYOUT_TITLE}</h2> </EuiTitle> </EuiFlyoutHeader> <EuiFlyoutBody> @@ -86,7 +95,11 @@ export const ApiKeyFlyout: React.FC = () => { <EuiFlyoutFooter> <EuiFlexGroup justifyContent="spaceBetween"> <EuiFlexItem grow={false}> - <EuiButtonEmpty iconType="cross" onClick={hideApiKeyForm}> + <EuiButtonEmpty + data-test-subj="enterpriseSearchApiKeyFlyoutButton" + iconType="cross" + onClick={hideApiKeyForm} + > {CLOSE_BUTTON_LABEL} </EuiButtonEmpty> </EuiFlexItem> diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_keys_list.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_keys_list.tsx index 016ab78b3abb4..10f1ca12a6130 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_keys_list.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_keys_list.tsx @@ -9,7 +9,13 @@ import React from 'react'; import { useActions, useValues } from 'kea'; -import { EuiBasicTable, EuiBasicTableColumn, EuiCopy, EuiConfirmModal } from '@elastic/eui'; +import { + EuiBasicTable, + EuiBasicTableColumn, + EuiCopy, + EuiConfirmModal, + useGeneratedHtmlId, +} from '@elastic/eui'; import { DELETE_BUTTON_LABEL, CANCEL_BUTTON_LABEL } from '../../../../shared/constants'; import { HiddenText } from '../../../../shared/hidden_text'; @@ -32,16 +38,19 @@ export const ApiKeysList: React.FC = () => { const { deleteApiKey, onPaginate, stageTokenNameForDeletion, hideDeleteModal } = useActions(ApiKeysLogic); const { apiTokens, meta, dataLoading, deleteModalVisible } = useValues(ApiKeysLogic); + const modalTitleId = useGeneratedHtmlId(); const deleteModal = ( <EuiConfirmModal title={API_KEYS_CONFIRM_DELETE_TITLE} + titleProps={{ id: modalTitleId }} onCancel={hideDeleteModal} onConfirm={deleteApiKey} cancelButtonText={CANCEL_BUTTON_LABEL} confirmButtonText={DELETE_BUTTON_LABEL} buttonColor="danger" defaultFocusedButton="confirm" + aria-labelledby={modalTitleId} > <p>{API_KEYS_CONFIRM_DELETE_LABEL}</p> </EuiConfirmModal> diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx index 30b450df91c17..33efd2d842220 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx @@ -16,6 +16,7 @@ import { EuiFilePicker, EuiText, EuiSpacer, + useGeneratedHtmlId, } from '@elastic/eui'; import { @@ -71,6 +72,7 @@ export const BrandingSection: React.FC<Props> = ({ const isLogo = imageType === 'logo'; const imageText = isLogo ? LOGO_TEXT : ICON_TEXT; const defaultImage = isLogo ? defaultLogo : defaultIcon; + const confirmationTitleId = useGeneratedHtmlId(); const handleUpload = async (files: FileList | null) => { if (!files || files.length < 1) { @@ -84,6 +86,7 @@ export const BrandingSection: React.FC<Props> = ({ const resetConfirmModal = ( <EuiConfirmModal title={RESET_IMAGE_TITLE} + titleProps={{ id: confirmationTitleId }} onCancel={closeDeleteModal} onConfirm={() => { resetImage(); @@ -93,6 +96,7 @@ export const BrandingSection: React.FC<Props> = ({ confirmButtonText={RESET_DEFAULT_BUTTON_LABEL} buttonColor="danger" defaultFocusedButton="confirm" + aria-labelledby={confirmationTitleId} > <> <p>{isLogo ? RESET_LOGO_DESCRIPTION : RESET_ICON_DESCRIPTION}</p> @@ -137,6 +141,7 @@ export const BrandingSection: React.FC<Props> = ({ <EuiFlexGroup> <EuiFlexItem grow={false}> <EuiButton + data-test-subj="enterpriseSearchBrandingSectionButton" isLoading={buttonLoading} disabled={!stagedImage} color="primary" diff --git a/x-pack/plugins/enterprise_search/public/navigation_tree.ts b/x-pack/plugins/enterprise_search/public/navigation_tree.ts index e235876e11b0a..1485ecd8536f3 100644 --- a/x-pack/plugins/enterprise_search/public/navigation_tree.ts +++ b/x-pack/plugins/enterprise_search/public/navigation_tree.ts @@ -21,11 +21,9 @@ import { SEARCH_APPLICATIONS_PATH } from './applications/applications/routes'; import { SEARCH_INDICES_PATH } from './applications/enterprise_search_content/routes'; export interface DynamicSideNavItems { - appSearch?: Array<EuiSideNavItemType<unknown>>; collections?: Array<EuiSideNavItemType<unknown>>; indices?: Array<EuiSideNavItemType<unknown>>; searchApps?: Array<EuiSideNavItemType<unknown>>; - workplaceSearch?: Array<EuiSideNavItemType<unknown>>; } const title = i18n.translate( @@ -79,7 +77,7 @@ export const getNavigationTreeDefinition = ({ id: 'es', navigationTree$: dynamicItems$.pipe( debounceTime(10), - map(({ appSearch, indices, searchApps, collections, workplaceSearch }) => { + map(({ indices, searchApps, collections }) => { const navTree: NavigationTreeDefinition = { body: [ { @@ -215,50 +213,6 @@ export const getNavigationTreeDefinition = ({ defaultMessage: 'Relevance', }), }, - { - children: [ - { - getIsActive: ({ pathNameSerialized, prepend }) => { - return pathNameSerialized.startsWith( - prepend('/app/enterprise_search/app_search') - ); - }, - link: 'appSearch:engines', - title: i18n.translate( - 'xpack.enterpriseSearch.searchNav.entsearch.appSearch', - { - defaultMessage: 'App Search', - } - ), - ...(appSearch - ? { - children: appSearch.map(euiItemTypeToNodeDefinition), - isCollapsible: false, - renderAs: 'accordion', - } - : {}), - }, - { - getIsActive: ({ pathNameSerialized, prepend }) => { - return pathNameSerialized.startsWith( - prepend('/app/enterprise_search/workplace_search') - ); - }, - link: 'workplaceSearch', - ...(workplaceSearch - ? { - children: workplaceSearch.map(euiItemTypeToNodeDefinition), - isCollapsible: false, - renderAs: 'accordion', - } - : {}), - }, - ], - id: 'entsearch', - title: i18n.translate('xpack.enterpriseSearch.searchNav.entsearch', { - defaultMessage: 'Enterprise Search', - }), - }, { children: [{ link: 'maps' }, { link: 'canvas' }, { link: 'graph' }], id: 'otherTools', diff --git a/x-pack/plugins/enterprise_search/public/plugin.ts b/x-pack/plugins/enterprise_search/public/plugin.ts index b483796540ad1..0a472cd2aa564 100644 --- a/x-pack/plugins/enterprise_search/public/plugin.ts +++ b/x-pack/plugins/enterprise_search/public/plugin.ts @@ -23,7 +23,6 @@ import { AppStatus, } from '@kbn/core/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; - import { GuidedOnboardingPluginStart } from '@kbn/guided-onboarding-plugin/public'; import type { HomePublicPluginSetup } from '@kbn/home-plugin/public'; import { i18n } from '@kbn/i18n'; @@ -38,6 +37,7 @@ import type { SearchNavigationPluginStart } from '@kbn/search-navigation/public' import { SearchPlaygroundPluginStart } from '@kbn/search-playground/public'; import { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/public'; import { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; +import { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; import { ANALYTICS_PLUGIN, @@ -54,7 +54,7 @@ import { SEMANTIC_SEARCH_PLUGIN, } from '../common/constants'; import { registerLocators } from '../common/locators'; -import { ClientConfigType, InitialAppData, ProductAccess } from '../common/types'; +import { ClientConfigType, InitialAppData } from '../common/types'; import { hasEnterpriseLicense } from '../common/utils/licensing'; import { ENGINES_PATH } from './applications/app_search/routes'; @@ -82,6 +82,7 @@ interface PluginsSetup { licensing: LicensingPluginStart; security?: SecurityPluginSetup; share?: SharePluginSetup; + uiActions: UiActionsSetup; } export interface PluginsStart { @@ -100,6 +101,7 @@ export interface PluginsStart { searchPlayground?: SearchPlaygroundPluginStart; security?: SecurityPluginStart; share?: SharePluginStart; + uiActions: UiActionsStart; } export interface ESConfig { @@ -439,55 +441,53 @@ export class EnterpriseSearchPlugin implements Plugin { registerLocators(share!); - if (config.canDeployEntSearch) { - core.application.register({ - appRoute: APP_SEARCH_PLUGIN.URL, - category: DEFAULT_APP_CATEGORIES.enterpriseSearch, - deepLinks: appSearchLinks, - euiIconType: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.LOGO, - id: APP_SEARCH_PLUGIN.ID, - mount: async (params: AppMountParameters) => { - const kibanaDeps = await this.getKibanaDeps(core, params, cloud); - const { chrome, http } = kibanaDeps.core; - chrome.docTitle.change(APP_SEARCH_PLUGIN.NAME); + core.application.register({ + appRoute: APP_SEARCH_PLUGIN.URL, + category: DEFAULT_APP_CATEGORIES.enterpriseSearch, + deepLinks: appSearchLinks, + euiIconType: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.LOGO, + id: APP_SEARCH_PLUGIN.ID, + mount: async (params: AppMountParameters) => { + const kibanaDeps = await this.getKibanaDeps(core, params, cloud); + const { chrome, http } = kibanaDeps.core; + chrome.docTitle.change(APP_SEARCH_PLUGIN.NAME); - await this.getInitialData(http); - const pluginData = this.getPluginData(); + await this.getInitialData(http); + const pluginData = this.getPluginData(); - const { renderApp } = await import('./applications'); - const { AppSearch } = await import('./applications/app_search'); + const { renderApp } = await import('./applications'); + const { AppSearch } = await import('./applications/app_search'); - return renderApp(AppSearch, kibanaDeps, pluginData); - }, - title: APP_SEARCH_PLUGIN.NAME, - visibleIn: [], - }); + return renderApp(AppSearch, kibanaDeps, pluginData); + }, + title: APP_SEARCH_PLUGIN.NAME, + visibleIn: [], + }); - core.application.register({ - appRoute: WORKPLACE_SEARCH_PLUGIN.URL, - category: DEFAULT_APP_CATEGORIES.enterpriseSearch, - euiIconType: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.LOGO, - id: WORKPLACE_SEARCH_PLUGIN.ID, - mount: async (params: AppMountParameters) => { - const kibanaDeps = await this.getKibanaDeps(core, params, cloud); - const { chrome, http } = kibanaDeps.core; - chrome.docTitle.change(WORKPLACE_SEARCH_PLUGIN.NAME); - - // The Workplace Search Personal dashboard needs the chrome hidden. We hide it globally - // here first to prevent a flash of chrome on the Personal dashboard and unhide it for admin routes. - if (this.config.host) chrome.setIsVisible(false); - await this.getInitialData(http); - const pluginData = this.getPluginData(); - - const { renderApp } = await import('./applications'); - const { WorkplaceSearch } = await import('./applications/workplace_search'); - - return renderApp(WorkplaceSearch, kibanaDeps, pluginData); - }, - title: WORKPLACE_SEARCH_PLUGIN.NAME, - visibleIn: [], - }); - } + core.application.register({ + appRoute: WORKPLACE_SEARCH_PLUGIN.URL, + category: DEFAULT_APP_CATEGORIES.enterpriseSearch, + euiIconType: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.LOGO, + id: WORKPLACE_SEARCH_PLUGIN.ID, + mount: async (params: AppMountParameters) => { + const kibanaDeps = await this.getKibanaDeps(core, params, cloud); + const { chrome, http } = kibanaDeps.core; + chrome.docTitle.change(WORKPLACE_SEARCH_PLUGIN.NAME); + + // The Workplace Search Personal dashboard needs the chrome hidden. We hide it globally + // here first to prevent a flash of chrome on the Personal dashboard and unhide it for admin routes. + if (this.config.host) chrome.setIsVisible(false); + await this.getInitialData(http); + const pluginData = this.getPluginData(); + + const { renderApp } = await import('./applications'); + const { WorkplaceSearch } = await import('./applications/workplace_search'); + + return renderApp(WorkplaceSearch, kibanaDeps, pluginData); + }, + title: WORKPLACE_SEARCH_PLUGIN.NAME, + visibleIn: [], + }); if (plugins.home) { plugins.home.featureCatalogue.registerSolution({ @@ -509,27 +509,25 @@ export class EnterpriseSearchPlugin implements Plugin { title: ANALYTICS_PLUGIN.NAME, }); - if (config.canDeployEntSearch) { - plugins.home.featureCatalogue.register({ - category: 'data', - description: APP_SEARCH_PLUGIN.DESCRIPTION, - icon: 'appSearchApp', - id: APP_SEARCH_PLUGIN.ID, - path: APP_SEARCH_PLUGIN.URL, - showOnHomePage: false, - title: APP_SEARCH_PLUGIN.NAME, - }); + plugins.home.featureCatalogue.register({ + category: 'data', + description: APP_SEARCH_PLUGIN.DESCRIPTION, + icon: 'appSearchApp', + id: APP_SEARCH_PLUGIN.ID, + path: APP_SEARCH_PLUGIN.URL, + showOnHomePage: false, + title: APP_SEARCH_PLUGIN.NAME, + }); - plugins.home.featureCatalogue.register({ - category: 'data', - description: WORKPLACE_SEARCH_PLUGIN.DESCRIPTION, - icon: 'workplaceSearchApp', - id: WORKPLACE_SEARCH_PLUGIN.ID, - path: WORKPLACE_SEARCH_PLUGIN.URL, - showOnHomePage: false, - title: WORKPLACE_SEARCH_PLUGIN.NAME, - }); - } + plugins.home.featureCatalogue.register({ + category: 'data', + description: WORKPLACE_SEARCH_PLUGIN.DESCRIPTION, + icon: 'workplaceSearchApp', + id: WORKPLACE_SEARCH_PLUGIN.ID, + path: WORKPLACE_SEARCH_PLUGIN.URL, + showOnHomePage: false, + title: WORKPLACE_SEARCH_PLUGIN.NAME, + }); plugins.home.featureCatalogue.register({ category: 'data', @@ -575,12 +573,7 @@ export class EnterpriseSearchPlugin implements Plugin { // to the base set of classic side nav items to the search-navigation plugin. import('./applications/shared/layout/base_nav').then(({ buildBaseClassicNavItems }) => { plugins.searchNavigation?.setGetBaseClassicNavItems(() => { - const productAccess: ProductAccess = this.data?.access ?? { - hasAppSearchAccess: false, - hasWorkplaceSearchAccess: false, - }; - - return buildBaseClassicNavItems({ productAccess }); + return buildBaseClassicNavItems(); }); }); diff --git a/x-pack/plugins/enterprise_search/server/index.ts b/x-pack/plugins/enterprise_search/server/index.ts index 53d8cbca7f540..9efaa123ea996 100644 --- a/x-pack/plugins/enterprise_search/server/index.ts +++ b/x-pack/plugins/enterprise_search/server/index.ts @@ -16,7 +16,6 @@ export const plugin = async (initializerContext: PluginInitializerContext) => { export const configSchema = schema.object({ accessCheckTimeout: schema.number({ defaultValue: 5000 }), accessCheckTimeoutWarning: schema.number({ defaultValue: 300 }), - canDeployEntSearch: schema.boolean({ defaultValue: true }), customHeaders: schema.maybe(schema.object({}, { unknowns: 'allow' })), enabled: schema.boolean({ defaultValue: true }), hasConnectors: schema.boolean({ defaultValue: true }), @@ -44,8 +43,8 @@ export const configSchema = schema.object({ export type ConfigType = TypeOf<typeof configSchema>; export const config: PluginConfigDescriptor<ConfigType> = { + deprecations: ({ unused }) => [unused('canDeployEntSearch', { level: 'warning' })], exposeToBrowser: { - canDeployEntSearch: true, host: true, ui: true, }, diff --git a/x-pack/plugins/enterprise_search/server/lib/check_access.test.ts b/x-pack/plugins/enterprise_search/server/lib/check_access.test.ts index ab4b27ed1f1c2..ef956ae85f689 100644 --- a/x-pack/plugins/enterprise_search/server/lib/check_access.test.ts +++ b/x-pack/plugins/enterprise_search/server/lib/check_access.test.ts @@ -50,7 +50,6 @@ describe('checkAccess', () => { const mockDependencies = { request: { auth: { isAuthenticated: true } }, config: { - canDeployEntSearch: true, host: 'http://localhost:3002', }, globalConfigService: new GlobalConfigService(), diff --git a/x-pack/plugins/enterprise_search/server/plugin.ts b/x-pack/plugins/enterprise_search/server/plugin.ts index 9120db1b93ac1..1d4ba5e6dfd1f 100644 --- a/x-pack/plugins/enterprise_search/server/plugin.ts +++ b/x-pack/plugins/enterprise_search/server/plugin.ts @@ -58,10 +58,19 @@ import { databaseSearchGuideConfig, } from '../common/guided_onboarding/search_guide_config'; -import { registerTelemetryUsageCollector as registerASTelemetryUsageCollector } from './collectors/app_search/telemetry'; +import { + AS_TELEMETRY_NAME, + registerTelemetryUsageCollector as registerASTelemetryUsageCollector, +} from './collectors/app_search/telemetry'; import { registerTelemetryUsageCollector as registerCNTelemetryUsageCollector } from './collectors/connectors/telemetry'; -import { registerTelemetryUsageCollector as registerESTelemetryUsageCollector } from './collectors/enterprise_search/telemetry'; -import { registerTelemetryUsageCollector as registerWSTelemetryUsageCollector } from './collectors/workplace_search/telemetry'; +import { + ES_TELEMETRY_NAME, + registerTelemetryUsageCollector as registerESTelemetryUsageCollector, +} from './collectors/enterprise_search/telemetry'; +import { + WS_TELEMETRY_NAME, + registerTelemetryUsageCollector as registerWSTelemetryUsageCollector, +} from './collectors/workplace_search/telemetry'; import { registerEnterpriseSearchIntegrations } from './integrations'; import { entSearchHttpAgent } from './lib/enterprise_search_http_agent'; @@ -160,7 +169,8 @@ export class EnterpriseSearchPlugin implements Plugin { ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.ID, ENTERPRISE_SEARCH_CONTENT_PLUGIN.ID, ELASTICSEARCH_PLUGIN.ID, - ...(config.canDeployEntSearch ? [APP_SEARCH_PLUGIN.ID, WORKPLACE_SEARCH_PLUGIN.ID] : []), + APP_SEARCH_PLUGIN.ID, + WORKPLACE_SEARCH_PLUGIN.ID, SEARCH_EXPERIENCES_PLUGIN.ID, VECTOR_SEARCH_PLUGIN.ID, SEMANTIC_SEARCH_PLUGIN.ID, @@ -194,8 +204,8 @@ export class EnterpriseSearchPlugin implements Plugin { api: [], catalogue: PLUGIN_IDS, savedObject: { - all: [], - read: [], + all: [ES_TELEMETRY_NAME, AS_TELEMETRY_NAME, WS_TELEMETRY_NAME], + read: [ES_TELEMETRY_NAME, AS_TELEMETRY_NAME, WS_TELEMETRY_NAME], }, ui: [], }, @@ -291,9 +301,9 @@ export class EnterpriseSearchPlugin implements Plugin { }; registerConfigDataRoute(dependencies); - if (config.canDeployEntSearch) registerAppSearchRoutes(dependencies); + registerAppSearchRoutes(dependencies); registerEnterpriseSearchRoutes(dependencies); - if (config.canDeployEntSearch) registerWorkplaceSearchRoutes(dependencies); + registerWorkplaceSearchRoutes(dependencies); // Enterprise Search Routes if (config.hasConnectors) registerConnectorRoutes(dependencies); if (config.hasWebCrawler) registerCrawlerRoutes(dependencies); @@ -310,10 +320,8 @@ export class EnterpriseSearchPlugin implements Plugin { * Bootstrap the routes, saved objects, and collector for telemetry */ savedObjects.registerType(enterpriseSearchTelemetryType); - if (config.canDeployEntSearch) { - savedObjects.registerType(appSearchTelemetryType); - savedObjects.registerType(workplaceSearchTelemetryType); - } + savedObjects.registerType(appSearchTelemetryType); + savedObjects.registerType(workplaceSearchTelemetryType); let savedObjectsStarted: SavedObjectsServiceStart; void getStartServices().then(([coreStart]) => { @@ -322,10 +330,8 @@ export class EnterpriseSearchPlugin implements Plugin { if (usageCollection) { registerESTelemetryUsageCollector(usageCollection, savedObjectsStarted, this.logger); registerCNTelemetryUsageCollector(usageCollection, this.logger); - if (config.canDeployEntSearch) { - registerASTelemetryUsageCollector(usageCollection, savedObjectsStarted, this.logger); - registerWSTelemetryUsageCollector(usageCollection, savedObjectsStarted, this.logger); - } + registerASTelemetryUsageCollector(usageCollection, savedObjectsStarted, this.logger); + registerWSTelemetryUsageCollector(usageCollection, savedObjectsStarted, this.logger); } }); registerTelemetryRoute({ ...dependencies, getSavedObjectsService: () => savedObjectsStarted }); @@ -361,9 +367,7 @@ export class EnterpriseSearchPlugin implements Plugin { /** * Register a config for the search guide */ - if (config.canDeployEntSearch) { - guidedOnboarding?.registerGuideConfig(appSearchGuideId, appSearchGuideConfig); - } + guidedOnboarding?.registerGuideConfig(appSearchGuideId, appSearchGuideConfig); if (config.hasWebCrawler) { guidedOnboarding?.registerGuideConfig(websiteSearchGuideId, websiteSearchGuideConfig); } diff --git a/x-pack/plugins/enterprise_search/server/utils/search_result_provider.test.ts b/x-pack/plugins/enterprise_search/server/utils/search_result_provider.test.ts index 3e7a0777dad23..b3709df9ef5bd 100644 --- a/x-pack/plugins/enterprise_search/server/utils/search_result_provider.test.ts +++ b/x-pack/plugins/enterprise_search/server/utils/search_result_provider.test.ts @@ -292,7 +292,6 @@ describe('Search search provider', () => { it('does not return results for legacy app search', () => { const searchProvider = getSearchResultProvider( { - canDeployEntSearch: true, hasConnectors: false, hasWebCrawler: false, } as any, @@ -315,7 +314,6 @@ describe('Search search provider', () => { it('does not return results for legacy workplace search', () => { const searchProvider = getSearchResultProvider( { - canDeployEntSearch: true, hasConnectors: false, hasWebCrawler: false, } as any, diff --git a/x-pack/plugins/enterprise_search/tsconfig.json b/x-pack/plugins/enterprise_search/tsconfig.json index bd716c8ac169f..f06262024ce68 100644 --- a/x-pack/plugins/enterprise_search/tsconfig.json +++ b/x-pack/plugins/enterprise_search/tsconfig.json @@ -84,5 +84,7 @@ "@kbn/core-security-server-mocks", "@kbn/unsaved-changes-prompt", "@kbn/search-navigation", + "@kbn/cell-actions", + "@kbn/ui-actions-plugin", ] } diff --git a/x-pack/plugins/event_log/server/es/cluster_client_adapter.test.ts b/x-pack/plugins/event_log/server/es/cluster_client_adapter.test.ts index eb76b90f0556a..4e8e43352f454 100644 --- a/x-pack/plugins/event_log/server/es/cluster_client_adapter.test.ts +++ b/x-pack/plugins/event_log/server/es/cluster_client_adapter.test.ts @@ -569,6 +569,7 @@ export const GetDataStreamsResponse: estypes.IndicesGetDataStreamResponse = { template: '', hidden: true, prefer_ilm: false, + rollover_on_write: true, next_generation_managed_by: 'Index Lifecycle Management', }, ], diff --git a/x-pack/plugins/features/server/feature_registry.test.ts b/x-pack/plugins/features/server/feature_registry.test.ts index 9ed7a207560b0..15988d213b315 100644 --- a/x-pack/plugins/features/server/feature_registry.test.ts +++ b/x-pack/plugins/features/server/feature_registry.test.ts @@ -57,7 +57,7 @@ describe('FeatureRegistry', () => { app: ['app1'], savedObject: { all: ['space', 'etc', 'telemetry'], - read: ['canvas', 'config', 'config-global', 'url'], + read: ['canvas', 'config', 'config-global', 'url', 'tag'], }, api: ['someApiEndpointTag', 'anotherEndpointTag'], ui: ['allowsFoo', 'showBar', 'showBaz'], @@ -65,7 +65,7 @@ describe('FeatureRegistry', () => { read: { savedObject: { all: [], - read: ['config', 'config-global', 'url', 'telemetry'], + read: ['config', 'config-global', 'url', 'telemetry', 'tag'], }, ui: [], }, @@ -130,7 +130,7 @@ describe('FeatureRegistry', () => { app: ['app1'], savedObject: { all: ['space', 'etc', 'telemetry'], - read: ['canvas', 'config', 'config-global', 'url'], + read: ['canvas', 'config', 'config-global', 'url', 'tag'], }, api: ['someApiEndpointTag', 'anotherEndpointTag'], ui: ['allowsFoo', 'showBar', 'showBaz'], @@ -314,7 +314,7 @@ describe('FeatureRegistry', () => { expect(allPrivilege?.savedObject.all).toEqual(['telemetry']); }); - it(`automatically grants access to config, config-global, url, and telemetry saved objects`, () => { + it(`automatically grants access to config, config-global, url, telemetry and tag saved objects`, () => { const feature: KibanaFeatureConfig = { id: 'test-feature', name: 'Test Feature', @@ -348,16 +348,17 @@ describe('FeatureRegistry', () => { const allPrivilege = result[0].privileges?.all; const readPrivilege = result[0].privileges?.read; - expect(allPrivilege?.savedObject.read).toEqual(['config', 'config-global', 'url']); + expect(allPrivilege?.savedObject.read).toEqual(['config', 'config-global', 'url', 'tag']); expect(readPrivilege?.savedObject.read).toEqual([ 'config', 'config-global', 'telemetry', 'url', + 'tag', ]); }); - it(`automatically grants 'all' access to telemetry and 'read' to [config, config-global, url] saved objects for the reserved privilege`, () => { + it(`automatically grants 'all' access to telemetry and 'read' to [config, config-global, url, tag] saved objects for the reserved privilege`, () => { const feature: KibanaFeatureConfig = { id: 'test-feature', name: 'Test Feature', @@ -388,7 +389,7 @@ describe('FeatureRegistry', () => { const reservedPrivilege = result[0]!.reserved!.privileges[0].privilege; expect(reservedPrivilege.savedObject.all).toEqual(['telemetry']); - expect(reservedPrivilege.savedObject.read).toEqual(['config', 'config-global', 'url']); + expect(reservedPrivilege.savedObject.read).toEqual(['config', 'config-global', 'url', 'tag']); }); it(`does not duplicate the automatic grants if specified on the incoming feature`, () => { @@ -402,14 +403,14 @@ describe('FeatureRegistry', () => { ui: [], savedObject: { all: ['telemetry'], - read: ['config', 'config-global', 'url'], + read: ['config', 'config-global', 'url', 'tag'], }, }, read: { ui: [], savedObject: { all: [], - read: ['config', 'config-global', 'url'], + read: ['config', 'config-global', 'url', 'tag'], }, }, }, @@ -426,11 +427,12 @@ describe('FeatureRegistry', () => { const allPrivilege = result[0].privileges!.all; const readPrivilege = result[0].privileges!.read; expect(allPrivilege?.savedObject.all).toEqual(['telemetry']); - expect(allPrivilege?.savedObject.read).toEqual(['config', 'config-global', 'url']); + expect(allPrivilege?.savedObject.read).toEqual(['config', 'config-global', 'url', 'tag']); expect(readPrivilege?.savedObject.read).toEqual([ 'config', 'config-global', 'url', + 'tag', 'telemetry', ]); }); @@ -518,7 +520,7 @@ describe('FeatureRegistry', () => { name: 'Foo', app: ['app1', 'app2'], savedObject: { - all: ['config', 'config-global', 'space', 'etc'], + all: ['config', 'config-global', 'space', 'tag', 'etc'], read: ['canvas'], }, api: ['someApiEndpointTag', 'anotherEndpointTag'], @@ -2455,7 +2457,7 @@ describe('FeatureRegistry', () => { expect(featureA.privileges).toEqual({ all: { ui: [], - savedObject: { all: ['telemetry'], read: ['config', 'config-global', 'url'] }, + savedObject: { all: ['telemetry'], read: ['config', 'config-global', 'url', 'tag'] }, composedOf: [ { feature: 'featureC', privileges: ['subFeatureCOne'] }, { feature: 'featureD', privileges: ['all'] }, @@ -2463,7 +2465,7 @@ describe('FeatureRegistry', () => { }, read: { ui: [], - savedObject: { all: [], read: ['config', 'config-global', 'telemetry', 'url'] }, + savedObject: { all: [], read: ['config', 'config-global', 'telemetry', 'url', 'tag'] }, composedOf: [{ feature: 'featureD', privileges: ['read'] }], }, }); @@ -2483,12 +2485,12 @@ describe('FeatureRegistry', () => { expect(featureA.privileges).toEqual({ all: { ui: [], - savedObject: { all: ['telemetry'], read: ['config', 'config-global', 'url'] }, + savedObject: { all: ['telemetry'], read: ['config', 'config-global', 'url', 'tag'] }, composedOf: [{ feature: 'featureE', privileges: ['all'] }], }, read: { ui: [], - savedObject: { all: [], read: ['config', 'config-global', 'telemetry', 'url'] }, + savedObject: { all: [], read: ['config', 'config-global', 'telemetry', 'url', 'tag'] }, }, }); }); diff --git a/x-pack/plugins/features/server/feature_registry.ts b/x-pack/plugins/features/server/feature_registry.ts index adeb0f4cc9dab..df01f4d773bcb 100644 --- a/x-pack/plugins/features/server/feature_registry.ts +++ b/x-pack/plugins/features/server/feature_registry.ts @@ -340,6 +340,7 @@ function applyAutomaticAllPrivilegeGrants( 'config', 'config-global', 'url', + 'tag', ]); } }); @@ -356,6 +357,7 @@ function applyAutomaticReadPrivilegeGrants( 'config-global', 'telemetry', 'url', + 'tag', ]); } }); diff --git a/x-pack/plugins/features/server/plugin.test.ts b/x-pack/plugins/features/server/plugin.test.ts index 96062085e577e..b06f9282c5739 100644 --- a/x-pack/plugins/features/server/plugin.test.ts +++ b/x-pack/plugins/features/server/plugin.test.ts @@ -168,6 +168,7 @@ describe('Features Plugin', () => { "config", "config-global", "url", + "tag", ], }, "ui": Array [], @@ -183,6 +184,7 @@ describe('Features Plugin', () => { "config-global", "telemetry", "url", + "tag", ], }, "ui": Array [], diff --git a/x-pack/plugins/fleet/common/constants/plugin.ts b/x-pack/plugins/fleet/common/constants/plugin.ts index f9f71fb1608fa..2efb4ab11b949 100644 --- a/x-pack/plugins/fleet/common/constants/plugin.ts +++ b/x-pack/plugins/fleet/common/constants/plugin.ts @@ -8,3 +8,4 @@ export const PLUGIN_ID = 'fleet' as const; export const INTEGRATIONS_PLUGIN_ID = 'integrations' as const; export const TRANSFORM_PLUGIN_ID = 'transform' as const; +export const ELASTICSEARCH_PLUGIN_ID = 'elasticsearch' as const; diff --git a/x-pack/plugins/fleet/common/types/models/epm.ts b/x-pack/plugins/fleet/common/types/models/epm.ts index 36a83c1c0a09e..bcae5230aab52 100644 --- a/x-pack/plugins/fleet/common/types/models/epm.ts +++ b/x-pack/plugins/fleet/common/types/models/epm.ts @@ -207,6 +207,15 @@ export interface DeploymentsModes { default?: DeploymentsModesDefault; } +type Action = 'action'; +type NextStep = 'next_step'; +export interface ConfigurationLink { + title: string; + url: string; + type: Action | NextStep; + content?: string; +} + export enum RegistryPolicyTemplateKeys { categories = 'categories', data_streams = 'data_streams', @@ -223,6 +232,7 @@ export enum RegistryPolicyTemplateKeys { icons = 'icons', screenshots = 'screenshots', deployment_modes = 'deployment_modes', + configuration_links = 'configuration_links', } interface BaseTemplate { [RegistryPolicyTemplateKeys.name]: string; @@ -232,6 +242,7 @@ interface BaseTemplate { [RegistryPolicyTemplateKeys.screenshots]?: RegistryImage[]; [RegistryPolicyTemplateKeys.multiple]?: boolean; [RegistryPolicyTemplateKeys.deployment_modes]?: DeploymentsModes; + [RegistryPolicyTemplateKeys.configuration_links]?: ConfigurationLink[]; } export interface RegistryPolicyIntegrationTemplate extends BaseTemplate { [RegistryPolicyTemplateKeys.categories]?: Array<PackageSpecCategory | undefined>; diff --git a/x-pack/plugins/fleet/cypress/e2e/integrations_automatic_import.cy.ts b/x-pack/plugins/fleet/cypress/e2e/integrations_automatic_import.cy.ts index e2454cb1dcf77..74050d9244e0b 100644 --- a/x-pack/plugins/fleet/cypress/e2e/integrations_automatic_import.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/integrations_automatic_import.cy.ts @@ -45,19 +45,19 @@ describe('Add Integration - Automatic Import', () => { deleteConnectors(); createBedrockConnector(); // Mock API Responses - cy.intercept('POST', '/api/integration_assistant/ecs', { + cy.intercept('POST', '/internal/automatic_import/ecs', { statusCode: 200, body: { results: ecsResultsForJson, }, }); - cy.intercept('POST', '/api/integration_assistant/categorization', { + cy.intercept('POST', '/internal/automatic_import/categorization', { statusCode: 200, body: { results: categorizationResultsForJson, }, }); - cy.intercept('POST', '/api/integration_assistant/related', { + cy.intercept('POST', '/internal/automatic_import/related', { statusCode: 200, body: { results: relatedResultsForJson, diff --git a/x-pack/plugins/fleet/dev_docs/fleet_ui_extensions.md b/x-pack/plugins/fleet/dev_docs/fleet_ui_extensions.md index 46788ecac5da0..d361a425450d6 100644 --- a/x-pack/plugins/fleet/dev_docs/fleet_ui_extensions.md +++ b/x-pack/plugins/fleet/dev_docs/fleet_ui_extensions.md @@ -61,7 +61,7 @@ export class Plugin { } ``` -> The code above lives in `x-pack/plugins/security_solution/public/plugin.tsx` +> The code above lives in `x-pack/solutions/security/plugins/security_solution/public/plugin.tsx` For a list of supported Fleet UI extensions, see the `UIExtensionPoint` and associated Union types defined here: `x-pack/plugins/fleet/public/types/ui_extensions.ts`. diff --git a/x-pack/plugins/fleet/package.json b/x-pack/plugins/fleet/package.json index dc0bc6a6bcacb..0dfbd1f0ded73 100644 --- a/x-pack/plugins/fleet/package.json +++ b/x-pack/plugins/fleet/package.json @@ -5,17 +5,17 @@ "private": true, "license": "Elastic License 2.0", "scripts": { - "cypress_space_awareness": "NODE_OPTIONS=--openssl-legacy-provider node ../security_solution/scripts/start_cypress_parallel --config-file ../fleet/cypress.config.space_awareness.ts --ftr-config-file ../../../x-pack/test/fleet_cypress/cli_config.space_awareness", + "cypress_space_awareness": "NODE_OPTIONS=--openssl-legacy-provider node ../../solutions/security/plugins/security_solution/scripts/start_cypress_parallel --config-file ../../plugins/fleet/cypress.config.space_awareness.ts --ftr-config-file ../../../x-pack/test/fleet_cypress/cli_config.space_awareness", "cypress_space_awareness:open": "yarn cypress_space_awareness open", "cypress_space_awareness:run": "yarn cypress_space_awareness run", - "cypress_space_awareness:run:reporter": "yarn cypress_space_awareness run --reporter ../../../node_modules/cypress-multi-reporters --reporter-options configFile=../fleet/cypress/reporter_config.json", - "cypress": "NODE_OPTIONS=--openssl-legacy-provider node ../security_solution/scripts/start_cypress_parallel --config-file ../fleet/cypress.config.ts --ftr-config-file ../../../x-pack/test/fleet_cypress/cli_config", + "cypress_space_awareness:run:reporter": "yarn cypress_space_awareness run --reporter ../../../node_modules/cypress-multi-reporters --reporter-options configFile=cypress/reporter_config.json", + "cypress": "NODE_OPTIONS=--openssl-legacy-provider node ../../solutions/security/plugins/security_solution/scripts/start_cypress_parallel --config-file ../../plugins/fleet/cypress.config.ts --ftr-config-file ../../../x-pack/test/fleet_cypress/cli_config", "cypress:open": "yarn cypress open", "cypress:run": "yarn cypress run", - "cypress:run:reporter": "yarn cypress run --reporter ../../../node_modules/cypress-multi-reporters --reporter-options configFile=../fleet/cypress/reporter_config.json", + "cypress:run:reporter": "yarn cypress run --reporter ../../../node_modules/cypress-multi-reporters --reporter-options configFile=cypress/reporter_config.json", "junit:merge": "../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-fleet/cypress/results/mochawesome*.json > ../../../target/kibana-fleet/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-fleet/cypress/results/output.json --reportDir ../../../target/kibana-fleet/cypress/results && mkdir -p ../../../target/junit && cp ../../../target/kibana-fleet/cypress/results/*.xml ../../../target/junit/", "openapi:build": "npx @redocly/openapi-cli bundle --ext yaml --output ./common/openapi/bundled.yaml ./common/openapi/entrypoint.yaml && npx @redocly/openapi-cli bundle --ext json --output ./common/openapi/bundled.json ./common/openapi/entrypoint.yaml", "openapi:lint": "npx @redocly/cli lint ./common/openapi/bundled.yaml", "openapi:speccy": "npx speccy lint ./common/openapi/bundled.yaml" } -} +} \ No newline at end of file diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx index 94bcf380f7086..8ddc2e80b0aa8 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { fireEvent, act, waitFor } from '@testing-library/react'; +import { fireEvent, waitFor } from '@testing-library/react'; import type { TestRenderer } from '../../../../../mock'; import { createFleetTestRendererMock } from '../../../../../mock'; @@ -291,23 +291,21 @@ describe('edit package policy page', () => { expect(renderResult.getByDisplayValue('Nginx description')).toBeInTheDocument(); }); - await act(async () => { - fireEvent.click(renderResult.getByText('Change defaults')); - }); + fireEvent.click(renderResult.getByText('Change defaults')); - await act(async () => { - fireEvent.change(renderResult.getByDisplayValue('/var/log/nginx/access.log*'), { - target: { value: '' }, - }); + fireEvent.change(renderResult.getByDisplayValue('/var/log/nginx/access.log*'), { + target: { value: '' }, }); - expect( - renderResult.getByText('Your integration policy has errors. Please fix them before saving.') - ).toBeInTheDocument(); - expect(renderResult.getByText(/Save integration/).closest('button')!).toBeDisabled(); + await waitFor(() => { + expect( + renderResult.getByText('Your integration policy has errors. Please fix them before saving.') + ).toBeInTheDocument(); + expect(renderResult.getByText(/Save integration/).closest('button')!).toBeDisabled(); - renderResult.getAllByRole('link', { name: 'Cancel' }).forEach((btn) => { - expect(btn).toHaveAttribute('href', '/navigate/path'); + renderResult.getAllByRole('link', { name: 'Cancel' }).forEach((btn) => { + expect(btn).toHaveAttribute('href', '/navigate/path'); + }); }); }); @@ -317,32 +315,31 @@ describe('edit package policy page', () => { await waitFor(() => { expect(renderResult.getByText('Collect logs from Nginx instances')).toBeInTheDocument(); }); - act(() => { - fireEvent.click(renderResult.getByRole('switch')); - }); - await act(async () => { - fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - }); + fireEvent.click(renderResult.getByRole('switch')); - const { id, ...restProps } = mockPackagePolicy; - expect(sendUpdatePackagePolicy).toHaveBeenCalledWith('nginx-1', { - ...restProps, - vars: {}, - inputs: [ - { - ...mockPackagePolicy.inputs[0], - enabled: false, - streams: [ - { - ...mockPackagePolicy.inputs[0].streams[0], - enabled: false, - }, - ], - }, - ], + fireEvent.click(renderResult.getByText('Save integration').closest('button')!); + + await waitFor(() => { + const { id, ...restProps } = mockPackagePolicy; + expect(sendUpdatePackagePolicy).toHaveBeenCalledWith('nginx-1', { + ...restProps, + vars: {}, + inputs: [ + { + ...mockPackagePolicy.inputs[0], + enabled: false, + streams: [ + { + ...mockPackagePolicy.inputs[0].streams[0], + enabled: false, + }, + ], + }, + ], + }); + expect(useStartServices().application.navigateToUrl).toHaveBeenCalledWith('/navigate/path'); }); - expect(useStartServices().application.navigateToUrl).toHaveBeenCalledWith('/navigate/path'); }); it('should show out of date error on 409 statusCode on submit', async () => { @@ -353,23 +350,21 @@ describe('edit package policy page', () => { await waitFor(() => { expect(renderResult.getByText('Collect logs from Nginx instances')).toBeInTheDocument(); }); - act(() => { - fireEvent.click(renderResult.getByRole('switch')); - }); + fireEvent.click(renderResult.getByRole('switch')); - await act(async () => { - fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - }); + fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - expect(useStartServices().notifications.toasts.addError).toHaveBeenCalledWith( - { statusCode: 409 }, - { - title: "Error updating 'nginx-1'", - toastMessage: 'Data is out of date. Refresh the page to get the latest policy.', - } - ); + await waitFor(() => { + expect(useStartServices().notifications.toasts.addError).toHaveBeenCalledWith( + { statusCode: 409 }, + { + title: "Error updating 'nginx-1'", + toastMessage: 'Data is out of date. Refresh the page to get the latest policy.', + } + ); - expect(useStartServices().application.navigateToUrl).not.toHaveBeenCalled(); + expect(useStartServices().application.navigateToUrl).not.toHaveBeenCalled(); + }); }); it('should show generic error on other statusCode on submit', async () => { @@ -380,20 +375,19 @@ describe('edit package policy page', () => { await waitFor(() => { expect(renderResult.getByText('Collect logs from Nginx instances')).toBeInTheDocument(); }); - act(() => { - fireEvent.click(renderResult.getByRole('switch')); - }); - await act(async () => { - fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - }); + fireEvent.click(renderResult.getByRole('switch')); + + fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - expect(useStartServices().notifications.toasts.addError).toHaveBeenCalledWith( - { statusCode: 500 }, - { title: "Error updating 'nginx-1'" } - ); + await waitFor(() => { + expect(useStartServices().notifications.toasts.addError).toHaveBeenCalledWith( + { statusCode: 500 }, + { title: "Error updating 'nginx-1'" } + ); - expect(useStartServices().application.navigateToUrl).not.toHaveBeenCalled(); + expect(useStartServices().application.navigateToUrl).not.toHaveBeenCalled(); + }); }); it("throws when both 'package-policy-edit' and 'package-policy-replace-define-step' are defined", async () => { @@ -510,15 +504,12 @@ describe('edit package policy page', () => { await waitFor(() => { expect(renderResult.getByText('Collect logs from Nginx instances')).toBeInTheDocument(); }); - act(() => { - fireEvent.click(renderResult.getByRole('switch')); - }); - await act(async () => { - fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - }); + fireEvent.click(renderResult.getByRole('switch')); - expect(sendUpdatePackagePolicy).toHaveBeenCalled(); + fireEvent.click(renderResult.getByText('Save integration').closest('button')!); + + await waitFor(() => expect(sendUpdatePackagePolicy).toHaveBeenCalled()); }); it('should hide the multiselect agent policies when agent policy is agentless', async () => { @@ -529,9 +520,8 @@ describe('edit package policy page', () => { isLoading: false, }); - await act(async () => { - render(); - }); + render(); + expect(renderResult.queryByTestId('agentPolicyMultiSelect')).not.toBeInTheDocument(); }); @@ -546,9 +536,7 @@ describe('edit package policy page', () => { }); it('should create agent policy with sys monitoring when new agent policy button is clicked', async () => { - await act(async () => { - render(); - }); + render(); await waitFor(() => { expect(renderResult.getByTestId('agentPolicyMultiItem')).toHaveAttribute( @@ -557,35 +545,32 @@ describe('edit package policy page', () => { ); }); - await act(async () => { - fireEvent.click(renderResult.getByTestId('createNewAgentPolicyButton')); - }); + fireEvent.click(renderResult.getByTestId('createNewAgentPolicyButton')); - await act(async () => { - fireEvent.click(renderResult.getByText(/Save integration/).closest('button')!); - }); + fireEvent.click(renderResult.getByText(/Save integration/).closest('button')!); + + fireEvent.click(renderResult.getAllByText(/Save and deploy changes/)[1].closest('button')!); - await act(async () => { - fireEvent.click(renderResult.getAllByText(/Save and deploy changes/)[1].closest('button')!); + await waitFor(() => { + expect(sendCreateAgentPolicy as jest.MockedFunction<any>).toHaveBeenCalledWith( + { + description: '', + monitoring_enabled: ['logs', 'metrics', 'traces'], + name: 'Agent policy 2', + namespace: 'default', + inactivity_timeout: 1209600, + is_protected: false, + }, + { withSysMonitoring: true } + ); + expect(sendUpdatePackagePolicy).toHaveBeenCalledWith( + 'nginx-1', + expect.objectContaining({ + policy_ids: ['agent-policy-1', 'agent-policy-2'], + }) + ); + expect(sendGetAgentStatus).toHaveBeenCalledTimes(1); }); - expect(sendCreateAgentPolicy as jest.MockedFunction<any>).toHaveBeenCalledWith( - { - description: '', - monitoring_enabled: ['logs', 'metrics', 'traces'], - name: 'Agent policy 2', - namespace: 'default', - inactivity_timeout: 1209600, - is_protected: false, - }, - { withSysMonitoring: true } - ); - expect(sendUpdatePackagePolicy).toHaveBeenCalledWith( - 'nginx-1', - expect.objectContaining({ - policy_ids: ['agent-policy-1', 'agent-policy-2'], - }) - ); - expect(sendGetAgentStatus).toHaveBeenCalledTimes(1); }); it('should not remove managed policy when policies are modified', async () => { @@ -613,33 +598,31 @@ describe('edit package policy page', () => { isLoading: false, }); - await act(async () => { - render(); - }); - expect(renderResult.getByTestId('agentPolicyMultiSelect')).toBeInTheDocument(); + render(); - await act(async () => { - renderResult.getByTestId('comboBoxToggleListButton').click(); + await waitFor(() => { + expect(renderResult.getByTestId('agentPolicyMultiSelect')).toBeInTheDocument(); }); - expect(renderResult.queryByText('Agent policy 1')).toBeNull(); + fireEvent.click(renderResult.getByTestId('comboBoxToggleListButton')); - await act(async () => { - fireEvent.click(renderResult.getByText('Fleet Server Policy')); - }); + await waitFor(() => expect(renderResult.queryByText('Agent policy 1')).toBeNull()); - await act(async () => { - fireEvent.click(renderResult.getByText(/Save integration/).closest('button')!); - }); - await act(async () => { - fireEvent.click(renderResult.getAllByText(/Save and deploy changes/)[1].closest('button')!); - }); + fireEvent.click(renderResult.getByText('Fleet Server Policy')); - expect(sendUpdatePackagePolicy).toHaveBeenCalledWith( - 'nginx-1', - expect.objectContaining({ - policy_ids: ['agent-policy-1', 'fleet-server-policy'], - }) + await waitFor(() => Promise.resolve(null)); + + fireEvent.click(renderResult.getByText(/Save integration/).closest('button')!); + + fireEvent.click(renderResult.getAllByText(/Save and deploy changes/)[1].closest('button')!); + + await waitFor(() => + expect(sendUpdatePackagePolicy).toHaveBeenCalledWith( + 'nginx-1', + expect.objectContaining({ + policy_ids: ['agent-policy-1', 'fleet-server-policy'], + }) + ) ); }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_export_csv_tour.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_export_csv_tour.tsx new file mode 100644 index 0000000000000..c0e9e4f5427bb --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_export_csv_tour.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiText, EuiTourStep } from '@elastic/eui'; +import React, { useState } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import type { TOUR_STORAGE_CONFIG } from '../../../../constants'; +import { TOUR_STORAGE_KEYS } from '../../../../constants'; +import { useStartServices } from '../../../../hooks'; + +export const AgentExportCSVTour: React.FC<{}> = () => { + const { storage, uiSettings } = useStartServices(); + + const [tourState, setTourState] = useState({ isOpen: true }); + + const isTourHidden = + uiSettings.get('hideAnnouncements', false) || + ( + storage.get(TOUR_STORAGE_KEYS.AGENT_EXPORT_CSV) as + | TOUR_STORAGE_CONFIG['AGENT_EXPORT_CSV'] + | undefined + )?.active === false; + + const setTourAsHidden = () => { + storage.set(TOUR_STORAGE_KEYS.AGENT_EXPORT_CSV, { + active: false, + } as TOUR_STORAGE_CONFIG['AGENT_EXPORT_CSV']); + }; + + const onFinish = () => { + setTourState({ isOpen: false }); + setTourAsHidden(); + }; + + return ( + <> + <EuiTourStep + content={ + <EuiText> + <FormattedMessage + id="xpack.fleet.agentExportCSVTour.tourContent" + defaultMessage="Once you have selected the agents, click the action menu to download the CSV file." + /> + </EuiText> + } + isStepOpen={!isTourHidden && tourState.isOpen} + onFinish={onFinish} + minWidth={360} + maxWidth={360} + step={1} + stepsTotal={1} + title={ + <FormattedMessage + id="xpack.fleet.agentExportCSVTour.tourTitle" + defaultMessage="Download CSV file" + /> + } + anchorPosition="upLeft" + anchor="#agentListSelectionText" + /> + </> + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agents_selection_status.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agents_selection_status.tsx index 618a7a6b8e112..160e29737bf78 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agents_selection_status.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agents_selection_status.tsx @@ -14,6 +14,7 @@ import { SO_SEARCH_LIMIT } from '../../../../constants'; import type { Agent } from '../../../../types'; import type { SelectionMode } from './types'; +import { AgentExportCSVTour } from './agent_export_csv_tour'; const Divider = styled.div` width: 0; @@ -62,7 +63,7 @@ export const AgentsSelectionStatus: React.FunctionComponent<{ <> <EuiFlexGroup gutterSize="s" alignItems="center"> <EuiFlexItem grow={false}> - <EuiText size="xs" color="subdued"> + <EuiText size="xs" color="subdued" id="agentListSelectionText"> {totalAgents > SO_SEARCH_LIMIT ? ( <FormattedMessage id="xpack.fleet.agentBulkActions.totalAgentsWithLimit" @@ -97,6 +98,7 @@ export const AgentsSelectionStatus: React.FunctionComponent<{ </> )} </EuiText> + <AgentExportCSVTour /> </EuiFlexItem> {showSelectionInfoAndOptions ? ( <> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/status_badges.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/status_badges.tsx index 44363d12088d1..21ff0e22505bf 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/status_badges.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/status_badges.tsx @@ -5,7 +5,13 @@ * 2.0. */ -import { EuiFlexGroup, EuiHealth, EuiNotificationBadge, EuiFlexItem } from '@elastic/eui'; +import { + EuiFlexGroup, + EuiHealth, + EuiNotificationBadge, + EuiFlexItem, + useEuiTheme, +} from '@elastic/eui'; import React, { memo } from 'react'; import { @@ -31,9 +37,10 @@ export const AgentStatusBadges: React.FC<{ const AgentStatusBadge: React.FC<{ status: SimplifiedAgentStatus; count: number }> = memo( ({ status, count }) => { + const { euiTheme } = useEuiTheme(); return ( <> - <EuiHealth color={getColorForAgentStatus(status)}> + <EuiHealth color={getColorForAgentStatus(status, euiTheme)}> <EuiFlexGroup alignItems="center" gutterSize="s"> <EuiFlexItem grow={false}>{getLabelForAgentStatus(status)}</EuiFlexItem> <EuiFlexItem grow={false}> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/status_bar.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/status_bar.tsx index f4fc01204267b..429702e6b7dc6 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/status_bar.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/status_bar.tsx @@ -6,7 +6,7 @@ */ import styled from 'styled-components'; -import { EuiColorPaletteDisplay, EuiSpacer } from '@elastic/eui'; +import { EuiColorPaletteDisplay, EuiSpacer, useEuiTheme } from '@elastic/eui'; import React, { useMemo } from 'react'; import { AGENT_STATUSES, getColorForAgentStatus } from '../../services/agent_status'; @@ -25,16 +25,17 @@ const StyledEuiColorPaletteDisplay = styled(EuiColorPaletteDisplay)` export const AgentStatusBar: React.FC<{ agentStatus: { [k in SimplifiedAgentStatus]: number }; }> = ({ agentStatus }) => { + const { euiTheme } = useEuiTheme(); const palette = useMemo(() => { return AGENT_STATUSES.reduce((acc, status) => { const previousStop = acc.length > 0 ? acc[acc.length - 1].stop : 0; acc.push({ stop: previousStop + (agentStatus[status] || 0), - color: getColorForAgentStatus(status), + color: getColorForAgentStatus(status, euiTheme), }); return acc; }, [] as Array<{ stop: number; color: string }>); - }, [agentStatus]); + }, [agentStatus, euiTheme]); const hasNoAgent = palette[palette.length - 1].stop === 0; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.test.tsx index 985e709ba22d0..319c2ee5455d8 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.test.tsx @@ -69,6 +69,12 @@ jest.mock('../../../hooks', () => ({ cloud: {}, data: { dataViews: { getFieldsForWildcard: jest.fn() } }, docLinks: { links: { kibana: { secureSavedObject: 'my-link' } } }, + uiSettings: { + get: jest.fn(), + }, + storage: { + get: jest.fn(), + }, }), useBreadcrumbs: jest.fn(), useLink: jest.fn().mockReturnValue({ getHref: jest.fn() }), diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_export_csv_modal/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_export_csv_modal/index.tsx index 901a90d5dea68..e289f660eb007 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_export_csv_modal/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_export_csv_modal/index.tsx @@ -6,7 +6,7 @@ */ import React, { useState } from 'react'; -import type { EuiBasicTableColumn, EuiSearchBarProps, EuiTableSelectionType } from '@elastic/eui'; +import type { EuiBasicTableColumn, EuiTableSelectionType } from '@elastic/eui'; import { EuiConfirmModal, EuiFlexGroup, @@ -67,12 +67,6 @@ export const AgentExportCSVModal: React.FunctionComponent<Props> = ({ initialSelected: INITIAL_AGENT_FIELDS_TO_EXPORT, }; - const search: EuiSearchBarProps = { - box: { - incremental: true, - }, - }; - return ( <EuiConfirmModal data-test-subj="agentExportCSVModal" @@ -129,7 +123,6 @@ export const AgentExportCSVModal: React.FunctionComponent<Props> = ({ items={items} itemId="field" columns={columns} - search={search} selection={selectionValue} /> </EuiFlexItem> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/tags.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/tags.test.tsx index a7d70a3b4e7ef..02884d8528c65 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/tags.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/tags.test.tsx @@ -10,7 +10,8 @@ import { render, screen, fireEvent, waitFor } from '@testing-library/react'; import { Tags } from './tags'; -describe('Tags', () => { +// FLAKY: https://github.com/elastic/kibana/issues/204465 +describe.skip('Tags', () => { describe('when list is short', () => { it('renders a comma-separated list of tags', () => { const tags = ['tag1', 'tag2']; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/hooks/use_fleet_server_unhealthy.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/hooks/use_fleet_server_unhealthy.test.tsx index c4caa7e47c07b..830582d1aeb22 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/hooks/use_fleet_server_unhealthy.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/hooks/use_fleet_server_unhealthy.test.tsx @@ -19,7 +19,8 @@ jest.mock('../../../../../hooks/use_authz', () => ({ }), })); -describe('useFleetServerUnhealthy', () => { +// FLAKY: https://github.com/elastic/kibana/issues/202359 +describe.skip('useFleetServerUnhealthy', () => { const testRenderer = createFleetTestRendererMock(); it('should return isUnHealthy:false with an online fleet server', async () => { diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/services/agent_status.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/services/agent_status.tsx index b69da08105759..6b12331d7034c 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/services/agent_status.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/services/agent_status.tsx @@ -5,24 +5,11 @@ * 2.0. */ -import { euiPaletteColorBlindBehindText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { euiLightVars } from '@kbn/ui-theme'; -import type { SimplifiedAgentStatus } from '../../../types'; +import type { EuiThemeComputed } from '@elastic/eui-theme-common'; -const visColors = euiPaletteColorBlindBehindText(); -const colorToHexMap = { - // using variables as mentioned here https://elastic.github.io/eui/#/guidelines/getting-started - default: euiLightVars.euiColorLightShade, - primary: visColors[1], - success: visColors[0], - accent: visColors[2], - warning: visColors[5], - danger: visColors[9], - inactive: euiLightVars.euiColorDarkShade, - lightest: euiLightVars.euiColorDisabled, -}; +import type { SimplifiedAgentStatus } from '../../../types'; export const AGENT_STATUSES: SimplifiedAgentStatus[] = [ 'healthy', @@ -33,20 +20,23 @@ export const AGENT_STATUSES: SimplifiedAgentStatus[] = [ 'unenrolled', ]; -export function getColorForAgentStatus(agentStatus: SimplifiedAgentStatus): string { +export function getColorForAgentStatus( + agentStatus: SimplifiedAgentStatus, + euiTheme: EuiThemeComputed<{}> +): string { switch (agentStatus) { case 'healthy': - return colorToHexMap.success; + return euiTheme.colors.backgroundFilledSuccess; case 'offline': - return colorToHexMap.default; + return euiTheme.colors.lightShade; case 'inactive': - return colorToHexMap.inactive; + return euiTheme.colors.darkShade; case 'unhealthy': - return colorToHexMap.warning; + return euiTheme.colors.backgroundFilledWarning; case 'updating': - return colorToHexMap.primary; + return euiTheme.colors.backgroundFilledPrimary; case 'unenrolled': - return colorToHexMap.lightest; + return euiTheme.colors.backgroundBaseDisabled; default: throw new Error(`Unsupported Agent status ${agentStatus}`); } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/multi_row_input/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/multi_row_input/index.test.tsx index bfd9028f5d0ce..b5396fa54c7f3 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/multi_row_input/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/multi_row_input/index.test.tsx @@ -33,7 +33,8 @@ function renderInput( return { utils, mockOnChange }; } -test('it should allow to add a new host', async () => { +// FLAKY: https://github.com/elastic/kibana/issues/202504 +test.skip('it should allow to add a new host', async () => { const { utils, mockOnChange } = renderInput(); const addRowEl = await utils.findByText('Add row'); diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agent_based_table.test.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agent_based_table.test.tsx index 77ce5720b294d..2926caae9e7fb 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agent_based_table.test.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agent_based_table.test.tsx @@ -55,7 +55,8 @@ const mockPagination = { pageSizeOptions: [10, 20, 50], }; -describe('AgentBasedPackagePoliciesTable', () => { +// FLAKY: https://github.com/elastic/kibana/issues/201837 +describe.skip('AgentBasedPackagePoliciesTable', () => { it('renders the table with package policies', async () => { const renderer = createIntegrationsTestRendererMock(); const result = renderer.render( diff --git a/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/index.tsx b/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/index.tsx index 0fbf8d278fab8..da08a8ea0d749 100644 --- a/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/index.tsx +++ b/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/index.tsx @@ -185,6 +185,7 @@ export const AgentlessEnrollmentFlyout = ({ <AgentlessStepConfirmData agent={agentData} packagePolicy={packagePolicy} + policyTemplates={packageInfoData?.item.policy_templates} setConfirmDataStatus={setConfirmDataStatus} /> ) : ( diff --git a/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/next_steps.tsx b/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/next_steps.tsx new file mode 100644 index 0000000000000..e068dc5311ea7 --- /dev/null +++ b/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/next_steps.tsx @@ -0,0 +1,150 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; +import { + EuiSpacer, + EuiFlexItem, + EuiCard, + EuiFlexGroup, + EuiButton, + EuiHorizontalRule, +} from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { useStartServices } from '../../hooks'; +import type { PackagePolicy, RegistryPolicyTemplate } from '../../types'; +import { ELASTICSEARCH_PLUGIN_ID } from '../../../common/constants/plugin'; + +export const NextSteps = ({ + packagePolicy, + policyTemplates, +}: { + packagePolicy: PackagePolicy; + policyTemplates?: RegistryPolicyTemplate[]; +}) => { + const { application } = useStartServices(); + + const configurationLinks = useMemo(() => { + if (policyTemplates) { + return policyTemplates + ?.filter( + (template) => template?.configuration_links && template.configuration_links.length > 0 + ) + .flatMap((template) => template.configuration_links); + } + return []; + }, [policyTemplates]); + + const parseKbnLink = (url: string) => { + // matching strings with format kbn:/app/appId/path/optionalsubpath + const matches = url.match(/kbn:\/app\/(\w*)\/(\w*\/*)*/); + if (matches && matches.length > 0) { + const appId = matches[1]; + const path = matches[2]; + return { appId, path }; + } + return undefined; + }; + + const isExternal = (url: string) => url.startsWith('http') || url.startsWith('https'); + const onClickLink = useCallback( + (url?: string) => { + if (!url) return undefined; + + if (isExternal(url)) { + application.navigateToUrl(`${url}`); + } else if (url.startsWith('kbn:/')) { + const parsedLink = parseKbnLink(url); + if (parsedLink) { + const { appId, path } = parsedLink; + application.navigateToApp(appId, { + path, + }); + } + } + }, + [application] + ); + + const nextStepsCards = configurationLinks + .filter((link) => link?.type === 'next_step') + .map((link, index) => { + return ( + <EuiFlexItem key={index}> + <EuiCard + data-test-subj={`agentlessStepConfirmData.connectorCard.${link?.title}`} + title={`${link?.title}`} + description={`${link?.content}`} + onClick={() => onClickLink(link?.url)} + /> + </EuiFlexItem> + ); + }); + + const connectorCards = packagePolicy.inputs + .filter((input) => !!input?.vars?.connector_id.value || !!input?.vars?.connector_name.value) + .map((input, index) => { + return ( + <EuiFlexItem key={index}> + <EuiCard + data-test-subj={`agentlessStepConfirmData.connectorCard.${input?.vars?.connector_name.value}`} + title={`${input?.vars?.connector_name.value}`} + description={i18n.translate( + 'xpack.fleet.agentlessStepConfirmData.connectorCard.description', + { + defaultMessage: 'Configure Connector', + } + )} + onClick={() => { + application.navigateToApp(ELASTICSEARCH_PLUGIN_ID, { + path: input?.vars?.connector_id.value + ? `content/connectors/${input?.vars?.connector_id.value}` + : `content/connectors`, + }); + }} + /> + </EuiFlexItem> + ); + }); + + const actionButtons = configurationLinks + .filter((link) => !!link && link?.type === 'action') + .map((link, index) => { + return ( + <EuiFlexItem key={index} grow={false}> + <EuiButton + data-test-subj={`agentlessStepConfirmData.connectorCard.${link?.title}`} + iconType="link" + onClick={() => onClickLink(link?.url)} + > + {link?.title} + </EuiButton> + </EuiFlexItem> + ); + }); + + return ( + <> + <EuiSpacer size="m" /> + {nextStepsCards.length > 0 && ( + <EuiFlexGroup alignItems="center" direction="row" wrap={true}> + {nextStepsCards} + {connectorCards} + </EuiFlexGroup> + )} + <EuiSpacer size="m" /> + <EuiHorizontalRule /> + {actionButtons.length > 0 && ( + <EuiFlexGroup alignItems="center" direction="row" wrap={true}> + {actionButtons} + </EuiFlexGroup> + )} + </> + ); +}; diff --git a/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/step_confirm_data.tsx b/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/step_confirm_data.tsx index 34e69d8ef839a..0775716eefd1b 100644 --- a/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/step_confirm_data.tsx +++ b/x-pack/plugins/fleet/public/components/agentless_enrollment_flyout/step_confirm_data.tsx @@ -12,20 +12,24 @@ import type { EuiStepStatus } from '@elastic/eui'; import { EuiText, EuiLink, EuiSpacer, EuiCallOut } from '@elastic/eui'; import { useStartServices } from '../../hooks'; -import type { Agent, PackagePolicy } from '../../types'; +import type { Agent, PackagePolicy, RegistryPolicyTemplate } from '../../types'; import { usePollingIncomingData, POLLING_TIMEOUT_MS, } from '../agent_enrollment_flyout/use_get_agent_incoming_data'; +import { NextSteps } from './next_steps'; + export const AgentlessStepConfirmData = ({ agent, packagePolicy, setConfirmDataStatus, + policyTemplates, }: { agent: Agent; packagePolicy: PackagePolicy; setConfirmDataStatus: (status: EuiStepStatus) => void; + policyTemplates?: RegistryPolicyTemplate[]; }) => { const { docLinks } = useStartServices(); const [overallState, setOverallState] = useState<'pending' | 'success' | 'failure'>('pending'); @@ -53,13 +57,17 @@ export const AgentlessStepConfirmData = ({ if (overallState === 'success') { return ( - <EuiCallOut - color="success" - title={i18n.translate('xpack.fleet.agentlessEnrollmentFlyout.confirmData.successText', { - defaultMessage: 'Incoming data received from agentless integration', - })} - iconType="check" - /> + <> + <EuiCallOut + color="success" + title={i18n.translate('xpack.fleet.agentlessEnrollmentFlyout.confirmData.successText', { + defaultMessage: 'Incoming data received from agentless integration', + })} + iconType="check" + /> + <EuiSpacer size="m" /> + <NextSteps packagePolicy={packagePolicy} policyTemplates={policyTemplates} /> + </> ); } else if (overallState === 'failure') { return ( diff --git a/x-pack/plugins/fleet/public/components/multiple_agent_policy_summary_line.test.tsx b/x-pack/plugins/fleet/public/components/multiple_agent_policy_summary_line.test.tsx index 22efe3f84d435..dca3da4a012d9 100644 --- a/x-pack/plugins/fleet/public/components/multiple_agent_policy_summary_line.test.tsx +++ b/x-pack/plugins/fleet/public/components/multiple_agent_policy_summary_line.test.tsx @@ -15,7 +15,8 @@ import type { AgentPolicy } from '../types'; import { MultipleAgentPoliciesSummaryLine } from './multiple_agent_policy_summary_line'; -describe('MultipleAgentPolicySummaryLine', () => { +// FLAKY: https://github.com/elastic/kibana/issues/200786 +describe.skip('MultipleAgentPolicySummaryLine', () => { let testRenderer: TestRenderer; const render = (agentPolicies: AgentPolicy[]) => diff --git a/x-pack/plugins/fleet/public/constants/index.ts b/x-pack/plugins/fleet/public/constants/index.ts index 4fbe799aa7337..059bae6ea7bff 100644 --- a/x-pack/plugins/fleet/public/constants/index.ts +++ b/x-pack/plugins/fleet/public/constants/index.ts @@ -54,6 +54,7 @@ export const TOUR_STORAGE_KEYS = { ADD_AGENT_POPOVER: 'fleet.addAgentPopoverTour', INACTIVE_AGENTS: 'fleet.inactiveAgentsTour', GRANULAR_PRIVILEGES: 'fleet.granularPrivileges', + AGENT_EXPORT_CSV: 'fleet.agentExportCSVTour', }; export interface TourConfig { diff --git a/x-pack/plugins/fleet/server/errors/index.ts b/x-pack/plugins/fleet/server/errors/index.ts index ac6eca6b3b97d..af0770b61f180 100644 --- a/x-pack/plugins/fleet/server/errors/index.ts +++ b/x-pack/plugins/fleet/server/errors/index.ts @@ -125,6 +125,8 @@ export class SigningServiceNotFoundError extends FleetNotFoundError {} export class InputNotFoundError extends FleetNotFoundError {} export class OutputNotFoundError extends FleetNotFoundError {} export class PackageNotFoundError extends FleetNotFoundError {} +export class ArchiveNotFoundError extends FleetNotFoundError {} + export class PackagePolicyNotFoundError extends FleetNotFoundError<{ /** The package policy ID that was not found */ packagePolicyId: string; diff --git a/x-pack/plugins/fleet/server/routes/epm/file_handler.ts b/x-pack/plugins/fleet/server/routes/epm/file_handler.ts index 701915d384f47..8ae344cfc6264 100644 --- a/x-pack/plugins/fleet/server/routes/epm/file_handler.ts +++ b/x-pack/plugins/fleet/server/routes/epm/file_handler.ts @@ -105,10 +105,17 @@ export const getFileHandler: FleetRequestHandler< }); } else { const registryResponse = await getFile(pkgName, pkgVersion, filePath); + if (!registryResponse) + return response.custom({ + body: {}, + statusCode: 400, + }); + const headersToProxy: KnownHeaders[] = ['content-type']; const proxiedHeaders = headersToProxy.reduce((headers, knownHeader) => { - const value = registryResponse.headers.get(knownHeader); - if (value !== null) { + const value = registryResponse?.headers.get(knownHeader); + + if (!!value) { headers[knownHeader] = value; } return headers; diff --git a/x-pack/plugins/fleet/server/services/agents/status.ts b/x-pack/plugins/fleet/server/services/agents/status.ts index e960a7b955fea..384c7b1252554 100644 --- a/x-pack/plugins/fleet/server/services/agents/status.ts +++ b/x-pack/plugins/fleet/server/services/agents/status.ts @@ -271,7 +271,7 @@ export async function getIncomingDataByAgentsId({ } catch (error) { logger.debug(`Error getting incoming data for agents: ${error}`); throw new FleetError( - `Unable to retrive incoming data for agents due to error: ${error.message}` + `Unable to retrieve incoming data for agents due to error: ${error.message}` ); } } diff --git a/x-pack/plugins/fleet/server/services/backfill_agentless.test.ts b/x-pack/plugins/fleet/server/services/backfill_agentless.test.ts new file mode 100644 index 0000000000000..b0fd41fe83295 --- /dev/null +++ b/x-pack/plugins/fleet/server/services/backfill_agentless.test.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { backfillPackagePolicySupportsAgentless } from './backfill_agentless'; +import { packagePolicyService } from './package_policy'; + +jest.mock('.', () => ({ + appContextService: { + getLogger: () => ({ + debug: jest.fn(), + }), + getInternalUserSOClientForSpaceId: jest.fn(), + getInternalUserSOClientWithoutSpaceExtension: () => ({ + find: jest.fn().mockImplementation((options) => { + if (options.type === 'ingest-agent-policies') { + return { + saved_objects: [{ id: 'agent_policy_1' }, { id: 'agent_policy_2' }], + }; + } else { + return { + saved_objects: [ + { + id: 'package_policy_1', + attributes: { + inputs: [], + policy_ids: ['agent_policy_1'], + supports_agentless: false, + }, + }, + ], + }; + } + }), + }), + }, +})); + +jest.mock('./package_policy', () => ({ + packagePolicyService: { + update: jest.fn(), + }, + getPackagePolicySavedObjectType: jest.fn().mockResolvedValue('ingest-package-policies'), +})); + +describe('backfill agentless package policies', () => { + it('should backfill package policies missing supports_agentless', async () => { + await backfillPackagePolicySupportsAgentless(undefined as any); + + expect(packagePolicyService.update).toHaveBeenCalledWith( + undefined, + undefined, + 'package_policy_1', + { + enabled: undefined, + inputs: [], + name: undefined, + policy_ids: ['agent_policy_1'], + supports_agentless: true, + } + ); + }); +}); diff --git a/x-pack/plugins/fleet/server/services/backfill_agentless.ts b/x-pack/plugins/fleet/server/services/backfill_agentless.ts new file mode 100644 index 0000000000000..b61265bd53c30 --- /dev/null +++ b/x-pack/plugins/fleet/server/services/backfill_agentless.ts @@ -0,0 +1,99 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ElasticsearchClient } from '@kbn/core/server'; + +import pMap from 'p-map'; + +import { MAX_CONCURRENT_AGENT_POLICIES_OPERATIONS, SO_SEARCH_LIMIT } from '../constants'; + +import type { AgentPolicySOAttributes, PackagePolicy, PackagePolicySOAttributes } from '../types'; + +import { getAgentPolicySavedObjectType } from './agent_policy'; + +import { appContextService } from '.'; +import { getPackagePolicySavedObjectType, packagePolicyService } from './package_policy'; +import { mapPackagePolicySavedObjectToPackagePolicy } from './package_policies'; + +export async function backfillPackagePolicySupportsAgentless(esClient: ElasticsearchClient) { + const apSavedObjectType = await getAgentPolicySavedObjectType(); + const internalSoClientWithoutSpaceExtension = + appContextService.getInternalUserSOClientWithoutSpaceExtension(); + const findRes = await internalSoClientWithoutSpaceExtension.find<AgentPolicySOAttributes>({ + type: apSavedObjectType, + page: 1, + perPage: SO_SEARCH_LIMIT, + filter: `${apSavedObjectType}.attributes.supports_agentless:true`, + fields: [`id`], + namespaces: ['*'], + }); + + const agentPolicyIds = findRes.saved_objects.map((so) => so.id); + + if (agentPolicyIds.length === 0) { + return; + } + + const savedObjectType = await getPackagePolicySavedObjectType(); + const packagePoliciesToUpdate = ( + await appContextService + .getInternalUserSOClientWithoutSpaceExtension() + .find<PackagePolicySOAttributes>({ + type: savedObjectType, + fields: [ + 'name', + 'policy_ids', + 'supports_agentless', + 'enabled', + 'policy_ids', + 'inputs', + 'package', + ], + filter: `${savedObjectType}.attributes.package.name:cloud_security_posture AND (NOT ${savedObjectType}.attributes.supports_agentless:true) AND ${savedObjectType}.attributes.policy_ids:(${agentPolicyIds.join( + ' OR ' + )})`, + perPage: SO_SEARCH_LIMIT, + namespaces: ['*'], + }) + ).saved_objects.map((so) => mapPackagePolicySavedObjectToPackagePolicy(so, so.namespaces)); + + appContextService + .getLogger() + .debug( + `Backfilling supports_agentless on package policies: ${packagePoliciesToUpdate.map( + (policy) => policy.id + )}` + ); + + if (packagePoliciesToUpdate.length > 0) { + const getPackagePolicyUpdate = (packagePolicy: PackagePolicy) => ({ + name: packagePolicy.name, + enabled: packagePolicy.enabled, + policy_ids: packagePolicy.policy_ids, + inputs: packagePolicy.inputs, + supports_agentless: true, + }); + + await pMap( + packagePoliciesToUpdate, + (packagePolicy) => { + const soClient = appContextService.getInternalUserSOClientForSpaceId( + packagePolicy.spaceIds?.[0] + ); + return packagePolicyService.update( + soClient, + esClient, + packagePolicy.id, + getPackagePolicyUpdate(packagePolicy) + ); + }, + { + concurrency: MAX_CONCURRENT_AGENT_POLICIES_OPERATIONS, + } + ); + } +} diff --git a/x-pack/plugins/fleet/server/services/epm/airgapped.ts b/x-pack/plugins/fleet/server/services/epm/airgapped.ts new file mode 100644 index 0000000000000..4507de3ea15eb --- /dev/null +++ b/x-pack/plugins/fleet/server/services/epm/airgapped.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { appContextService } from '..'; + +export const airGappedUtils = () => { + const config = appContextService.getConfig(); + const hasRegistryUrls = config?.registryUrl || config?.registryProxyUrl; + const isAirGapped = config?.isAirGapped; + + const shouldSkipRegistryRequests = isAirGapped && !hasRegistryUrls; + + return { hasRegistryUrls, isAirGapped, shouldSkipRegistryRequests }; +}; diff --git a/x-pack/plugins/fleet/server/services/epm/archive/parse.ts b/x-pack/plugins/fleet/server/services/epm/archive/parse.ts index 8cccfe9982457..136bceb9355aa 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/parse.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/parse.ts @@ -59,7 +59,7 @@ const DEFAULT_INGEST_PIPELINE_VALUE = 'default'; const DEFAULT_INGEST_PIPELINE_FILE_NAME_YML = 'default.yml'; const DEFAULT_INGEST_PIPELINE_FILE_NAME_JSON = 'default.json'; -// Borrowed from https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/utils/expand_dotted.ts +// Borrowed from https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/utils/expand_dotted.ts // with some alterations around non-object values. The package registry service expands some dotted fields from manifest files, // so we need to do the same here. const expandDottedField = (dottedFieldName: string, val: unknown): object => { diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.test.ts index 9fc5383902ff3..e42c92b7f0cd4 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.test.ts @@ -816,6 +816,84 @@ describe('EPM template', () => { expect(mappings).toEqual(objectFieldWithPropertyReversedMapping); }); + it('tests processing object field with more specific properties without wildcard', () => { + const objectFieldWithPropertyReversedLiteralYml = ` +- name: labels + type: object + object_type: keyword + object_type_mapping_type: '*' +- name: labels.count + type: long +`; + const objectFieldWithPropertyReversedMapping = { + dynamic_templates: [ + { + labels: { + path_match: 'labels.*', + match_mapping_type: '*', + mapping: { + type: 'keyword', + }, + }, + }, + ], + properties: { + labels: { + dynamic: true, + type: 'object', + properties: { + count: { + type: 'long', + }, + }, + }, + }, + }; + const fields: Field[] = load(objectFieldWithPropertyReversedLiteralYml); + const processedFields = processFields(fields); + const mappings = generateMappings(processedFields); + expect(mappings).toEqual(objectFieldWithPropertyReversedMapping); + }); + + it('tests processing object field with more specific properties with wildcard', () => { + const objectFieldWithPropertyReversedLiteralYml = ` +- name: labels.* + type: object + object_type: keyword + object_type_mapping_type: '*' +- name: labels.count + type: long +`; + const objectFieldWithPropertyReversedMapping = { + dynamic_templates: [ + { + 'labels.*': { + path_match: 'labels.*', + match_mapping_type: '*', + mapping: { + type: 'keyword', + }, + }, + }, + ], + properties: { + labels: { + dynamic: true, + type: 'object', + properties: { + count: { + type: 'long', + }, + }, + }, + }, + }; + const fields: Field[] = load(objectFieldWithPropertyReversedLiteralYml); + const processedFields = processFields(fields); + const mappings = generateMappings(processedFields); + expect(mappings).toEqual(objectFieldWithPropertyReversedMapping); + }); + it('tests processing object field with subobjects set to false (case B)', () => { const objectFieldWithPropertyReversedLiteralYml = ` - name: b.labels.* diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.ts index d44cd57a2c5ba..93695c68add0a 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.ts @@ -310,6 +310,124 @@ function _generateMappings( } } + function addObjectAsDynamicMapping(field: Field) { + const path = ctx.groupFieldName ? `${ctx.groupFieldName}.${field.name}` : field.name; + const pathMatch = path.includes('*') ? path : `${path}.*`; + + let dynProperties: Properties = getDefaultProperties(field); + let matchingType: string | undefined; + switch (field.object_type) { + case 'histogram': + dynProperties = histogram(field); + matchingType = field.object_type_mapping_type ?? '*'; + break; + case 'ip': + case 'keyword': + case 'match_only_text': + case 'text': + case 'wildcard': + dynProperties.type = field.object_type; + matchingType = field.object_type_mapping_type ?? 'string'; + break; + case 'scaled_float': + dynProperties = scaledFloat(field); + matchingType = field.object_type_mapping_type ?? '*'; + break; + case 'aggregate_metric_double': + dynProperties.type = field.object_type; + dynProperties.metrics = field.metrics; + dynProperties.default_metric = field.default_metric; + matchingType = field.object_type_mapping_type ?? '*'; + break; + case 'double': + case 'float': + case 'half_float': + dynProperties.type = field.object_type; + if (isIndexModeTimeSeries) { + dynProperties.time_series_metric = field.metric_type; + } + matchingType = field.object_type_mapping_type ?? 'double'; + break; + case 'byte': + case 'long': + case 'short': + case 'unsigned_long': + dynProperties.type = field.object_type; + if (isIndexModeTimeSeries) { + dynProperties.time_series_metric = field.metric_type; + } + matchingType = field.object_type_mapping_type ?? 'long'; + break; + case 'integer': + // Map integers as long, as in other cases. + dynProperties.type = 'long'; + if (isIndexModeTimeSeries) { + dynProperties.time_series_metric = field.metric_type; + } + matchingType = field.object_type_mapping_type ?? 'long'; + break; + case 'boolean': + dynProperties.type = field.object_type; + if (isIndexModeTimeSeries) { + dynProperties.time_series_metric = field.metric_type; + } + matchingType = field.object_type_mapping_type ?? field.object_type; + break; + case 'group': + if (!field?.fields) { + break; + } + const subFields = field.fields.map((subField) => ({ + ...subField, + type: 'object', + object_type: subField.object_type ?? subField.type, + })); + const mappings = _generateMappings( + subFields, + { + ...ctx, + groupFieldName: ctx.groupFieldName ? `${ctx.groupFieldName}.${field.name}` : field.name, + }, + isIndexModeTimeSeries + ); + if (mappings.hasDynamicTemplateMappings) { + hasDynamicTemplateMappings = true; + } + break; + case 'flattened': + dynProperties.type = field.object_type; + matchingType = field.object_type_mapping_type ?? 'object'; + break; + default: + throw new PackageInvalidArchiveError( + `No dynamic mapping generated for field ${path} of type ${field.object_type}` + ); + } + + if (field.dimension && isIndexModeTimeSeries) { + dynProperties.time_series_dimension = field.dimension; + } + + // When a wildcard field specifies the subobjects setting, + // the parent intermediate object should set the subobjects + // setting. + // + // For example, if a wildcard field `foo.*` has subobjects, + // we should set subobjects on the intermediate object `foo`. + // + if (field.subobjects !== undefined && path.includes('*')) { + subobjects = field.subobjects; + } + + if (dynProperties && matchingType) { + addDynamicMappingWithIntermediateObjects(path, pathMatch, matchingType, dynProperties); + + // Add the parent object as static property, this is needed for + // index templates not using `"dynamic": true`. + addParentObjectAsStaticProperty(field); + } + } + // TODO: this can happen when the fields property in fields.yml is present but empty // Maybe validation should be moved to fields/field.ts if (fields) { @@ -371,123 +489,7 @@ function _generateMappings( } if (type === 'object' && field.object_type) { - const path = ctx.groupFieldName ? `${ctx.groupFieldName}.${field.name}` : field.name; - const pathMatch = path.includes('*') ? path : `${path}.*`; - - let dynProperties: Properties = getDefaultProperties(field); - let matchingType: string | undefined; - switch (field.object_type) { - case 'histogram': - dynProperties = histogram(field); - matchingType = field.object_type_mapping_type ?? '*'; - break; - case 'ip': - case 'keyword': - case 'match_only_text': - case 'text': - case 'wildcard': - dynProperties.type = field.object_type; - matchingType = field.object_type_mapping_type ?? 'string'; - break; - case 'scaled_float': - dynProperties = scaledFloat(field); - matchingType = field.object_type_mapping_type ?? '*'; - break; - case 'aggregate_metric_double': - dynProperties.type = field.object_type; - dynProperties.metrics = field.metrics; - dynProperties.default_metric = field.default_metric; - matchingType = field.object_type_mapping_type ?? '*'; - break; - case 'double': - case 'float': - case 'half_float': - dynProperties.type = field.object_type; - if (isIndexModeTimeSeries) { - dynProperties.time_series_metric = field.metric_type; - } - matchingType = field.object_type_mapping_type ?? 'double'; - break; - case 'byte': - case 'long': - case 'short': - case 'unsigned_long': - dynProperties.type = field.object_type; - if (isIndexModeTimeSeries) { - dynProperties.time_series_metric = field.metric_type; - } - matchingType = field.object_type_mapping_type ?? 'long'; - break; - case 'integer': - // Map integers as long, as in other cases. - dynProperties.type = 'long'; - if (isIndexModeTimeSeries) { - dynProperties.time_series_metric = field.metric_type; - } - matchingType = field.object_type_mapping_type ?? 'long'; - break; - case 'boolean': - dynProperties.type = field.object_type; - if (isIndexModeTimeSeries) { - dynProperties.time_series_metric = field.metric_type; - } - matchingType = field.object_type_mapping_type ?? field.object_type; - break; - case 'group': - if (!field?.fields) { - break; - } - const subFields = field.fields.map((subField) => ({ - ...subField, - type: 'object', - object_type: subField.object_type ?? subField.type, - })); - const mappings = _generateMappings( - subFields, - { - ...ctx, - groupFieldName: ctx.groupFieldName - ? `${ctx.groupFieldName}.${field.name}` - : field.name, - }, - isIndexModeTimeSeries - ); - if (mappings.hasDynamicTemplateMappings) { - hasDynamicTemplateMappings = true; - } - break; - case 'flattened': - dynProperties.type = field.object_type; - matchingType = field.object_type_mapping_type ?? 'object'; - break; - default: - throw new PackageInvalidArchiveError( - `No dynamic mapping generated for field ${path} of type ${field.object_type}` - ); - } - - if (field.dimension && isIndexModeTimeSeries) { - dynProperties.time_series_dimension = field.dimension; - } - - // When a wildcard field specifies the subobjects setting, - // the parent intermediate object should set the subobjects - // setting. - // - // For example, if a wildcard field `foo.*` has subobjects, - // we should set subobjects on the intermediate object `foo`. - // - if (field.subobjects !== undefined && path.includes('*')) { - subobjects = field.subobjects; - } - - if (dynProperties && matchingType) { - addDynamicMappingWithIntermediateObjects(path, pathMatch, matchingType, dynProperties); - - // Add the parent object as static property, this is needed for - // index templates not using `"dynamic": true`. - addParentObjectAsStaticProperty(field); - } + addObjectAsDynamicMapping(field); } else { let fieldProps = getDefaultProperties(field); @@ -503,6 +505,12 @@ function _generateMappings( }, isIndexModeTimeSeries ); + if (field.object_type) { + // A group can have an object_type if it has been merged with an object during deduplication, + // generate also the dynamic mapping for the object. + addObjectAsDynamicMapping(field); + mappings.hasDynamicTemplateMappings = true; + } if (mappings.hasNonDynamicTemplateMappings) { fieldProps = { properties: diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts index 5711c8fcccaf4..c3b0eee26cb5c 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts @@ -925,6 +925,32 @@ owner: elastic`, }); }); + it('should avoid loading archive when isAirGapped == true', async () => { + const mockContract = createAppContextStartContractMock({ isAirGapped: true }); + appContextService.start(mockContract); + + const soClient = savedObjectsClientMock.create(); + soClient.get.mockRejectedValue(SavedObjectsErrorHelpers.createGenericNotFoundError()); + MockRegistry.fetchInfo.mockResolvedValue({ + name: 'my-package', + version: '1.0.0', + assets: [], + } as unknown as RegistryPackage); + + await expect( + getPackageInfo({ + savedObjectsClient: soClient, + pkgName: 'my-package', + pkgVersion: '1.0.0', + }) + ).resolves.toMatchObject({ + latestVersion: '1.0.0', + status: 'not_installed', + }); + + expect(MockRegistry.getPackage).not.toHaveBeenCalled(); + }); + describe('installation status', () => { it('should be not_installed when no package SO exists', async () => { const soClient = savedObjectsClientMock.create(); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.ts index 5b0e3df279cdc..824d3f4b30f72 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.ts @@ -68,6 +68,8 @@ import { auditLoggingService } from '../../audit_logging'; import { getFilteredSearchPackages } from '../filtered_packages'; +import { airGappedUtils } from '../airgapped'; + import { createInstallableFrom } from '.'; import { getPackageAssetsMapCache, @@ -478,7 +480,11 @@ export async function getPackageInfo({ let packageInfo; // We need to get input only packages from source to get all fields // see https://github.com/elastic/package-registry/issues/864 - if (registryInfo && skipArchive && registryInfo.type !== 'input') { + if ( + registryInfo && + (skipArchive || airGappedUtils().shouldSkipRegistryRequests) && + registryInfo.type !== 'input' + ) { packageInfo = registryInfo; // Fix the paths paths = @@ -629,6 +635,7 @@ export async function getPackageFromSource(options: { } catch (err) { if (err instanceof RegistryResponseError && err.status === 404) { res = await Registry.getBundledArchive(pkgName, pkgVersion); + logger.debug(`retrieved bundled package ${pkgName}-${pkgVersion}`); } else { throw err; } @@ -763,7 +770,7 @@ export async function getPackageAssetsMap({ packageInfo: PackageInfo; logger: Logger; ignoreUnverified?: boolean; -}) { +}): Promise<AssetsMap> { const cache = getPackageAssetsMapCache(packageInfo.name, packageInfo.version); if (cache) { return cache; @@ -774,17 +781,22 @@ export async function getPackageAssetsMap({ logger, }); - let assetsMap: AssetsMap | undefined; - if (installedPackageWithAssets?.installation.version !== packageInfo.version) { - // Try to get from registry - const pkg = await Registry.getPackage(packageInfo.name, packageInfo.version, { - ignoreUnverified, - }); - assetsMap = pkg.assetsMap; - } else { - assetsMap = installedPackageWithAssets.assetsMap; - } - setPackageAssetsMapCache(packageInfo.name, packageInfo.version, assetsMap); + try { + let assetsMap: AssetsMap | undefined; + if (installedPackageWithAssets?.installation.version !== packageInfo.version) { + // Try to get from registry + const pkg = await Registry.getPackage(packageInfo.name, packageInfo.version, { + ignoreUnverified, + }); + assetsMap = pkg.assetsMap; + } else { + assetsMap = installedPackageWithAssets.assetsMap; + } + setPackageAssetsMapCache(packageInfo.name, packageInfo.version, assetsMap); - return assetsMap; + return assetsMap; + } catch (error) { + logger.warn(`getPackageAssetsMap error: ${error}`); + throw error; + } } diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.ts index ebe5acc35178d..07d7392971d74 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.ts @@ -1354,44 +1354,48 @@ export async function installAssetsForInputPackagePolicy(opts: { `Error while creating index templates: unable to find installed package ${pkgInfo.name}` ); } - if (installedPkgWithAssets.installation.version !== pkgInfo.version) { - const pkg = await Registry.getPackage(pkgInfo.name, pkgInfo.version, { - ignoreUnverified: force, - }); + try { + if (installedPkgWithAssets.installation.version !== pkgInfo.version) { + const pkg = await Registry.getPackage(pkgInfo.name, pkgInfo.version, { + ignoreUnverified: force, + }); - const archiveIterator = createArchiveIteratorFromMap(pkg.assetsMap); - packageInstallContext = { - assetsMap: pkg.assetsMap, - packageInfo: pkg.packageInfo, - paths: pkg.paths, - archiveIterator, - }; - } else { - const archiveIterator = createArchiveIteratorFromMap(installedPkgWithAssets.assetsMap); - packageInstallContext = { - assetsMap: installedPkgWithAssets.assetsMap, - packageInfo: installedPkgWithAssets.packageInfo, - paths: installedPkgWithAssets.paths, - archiveIterator, - }; - } + const archiveIterator = createArchiveIteratorFromMap(pkg.assetsMap); + packageInstallContext = { + assetsMap: pkg.assetsMap, + packageInfo: pkg.packageInfo, + paths: pkg.paths, + archiveIterator, + }; + } else { + const archiveIterator = createArchiveIteratorFromMap(installedPkgWithAssets.assetsMap); + packageInstallContext = { + assetsMap: installedPkgWithAssets.assetsMap, + packageInfo: installedPkgWithAssets.packageInfo, + paths: installedPkgWithAssets.paths, + archiveIterator, + }; + } - await installIndexTemplatesAndPipelines({ - installedPkg: installedPkgWithAssets.installation, - packageInstallContext, - esReferences: installedPkgWithAssets.installation.installed_es || [], - savedObjectsClient: soClient, - esClient, - logger, - onlyForDataStreams: [dataStream], - }); - // Upate ES index patterns - await optimisticallyAddEsAssetReferences( - soClient, - installedPkgWithAssets.installation.name, - [], - generateESIndexPatterns([dataStream]) - ); + await installIndexTemplatesAndPipelines({ + installedPkg: installedPkgWithAssets.installation, + packageInstallContext, + esReferences: installedPkgWithAssets.installation.installed_es || [], + savedObjectsClient: soClient, + esClient, + logger, + onlyForDataStreams: [dataStream], + }); + // Upate ES index patterns + await optimisticallyAddEsAssetReferences( + soClient, + installedPkgWithAssets.installation.name, + [], + generateESIndexPatterns([dataStream]) + ); + } catch (error) { + logger.warn(`installAssetsForInputPackagePolicy error: ${error}`); + } } interface NoPkgArgs { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/package_verification.ts b/x-pack/plugins/fleet/server/services/epm/packages/package_verification.ts index 92068dfcd424d..d95d387322120 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/package_verification.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/package_verification.ts @@ -75,7 +75,7 @@ export async function verifyPackageArchiveSignature({ }: { pkgName: string; pkgVersion: string; - pkgArchiveBuffer: Buffer; + pkgArchiveBuffer: Buffer | undefined; logger: Logger; }): Promise<PackageVerificationResult> { const verificationKey = await getGpgKeyOrUndefined(); @@ -97,6 +97,11 @@ export async function verifyPackageArchiveSignature({ return result; } + if (!pkgArchiveBuffer) { + logger.warn(`Archive not found for package ${pkgName}-${pkgVersion}. Skipping verification.`); + return result; + } + const { isVerified, keyId } = await _verifyPackageSignature({ pkgArchiveBuffer, pkgArchiveSignature, diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts index 6de0577e33238..34a474c0900e8 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts @@ -84,6 +84,7 @@ describe('splitPkgKey', () => { describe('fetch package', () => { afterEach(() => { mockFetchUrl.mockReset(); + mockGetConfig.mockReset(); mockGetBundledPackageByName.mockReset(); }); @@ -100,6 +101,22 @@ describe('fetch package', () => { expect(result).toEqual(registryPackage); }); + it('Should return bundled package when isAirGapped = true', async () => { + mockGetConfig.mockReturnValue({ + isAirGapped: true, + enabled: true, + agents: { enabled: true, elasticsearch: {} }, + }); + const bundledPackage = { name: 'testpkg', version: '1.0.0' }; + const registryPackage = { name: 'testpkg', version: '1.0.1' }; + + mockFetchUrl.mockResolvedValue(JSON.stringify([registryPackage])); + + mockGetBundledPackageByName.mockResolvedValue(bundledPackage); + const result = await fetchMethodToTest('testpkg'); + expect(result).toEqual(bundledPackage); + }); + it('Should return bundled package if bundled package is newer version', async () => { const bundledPackage = { name: 'testpkg', version: '1.0.1' }; const registryPackage = { name: 'testpkg', version: '1.0.0' }; @@ -220,6 +237,15 @@ describe('fetchInfo', () => { expect(e).toBeInstanceOf(PackageNotFoundError); } }); + + it('falls back to bundled package when isAirGapped config == true', async () => { + mockGetConfig.mockReturnValue({ + isAirGapped: true, + }); + + const fetchedInfo = await fetchInfo('test-package', '1.0.0'); + expect(fetchedInfo).toBeTruthy(); + }); }); describe('fetchCategories', () => { @@ -317,6 +343,13 @@ describe('fetchList', () => { expect(callUrl.searchParams.get('capabilities')).toBeNull(); }); + it('does not call registry if isAirGapped == true', async () => { + mockGetConfig.mockReturnValue({ isAirGapped: true }); + mockFetchUrl.mockResolvedValue(JSON.stringify([])); + await fetchList(); + expect(mockFetchUrl).toBeCalledTimes(0); + }); + it('does call registry with kibana.version if not explictly disabled', async () => { mockGetConfig.mockReturnValue({ internal: { diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.ts index 75b9869d0a7c6..3fd0e09578ca7 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.ts @@ -46,6 +46,7 @@ import { RegistryResponseError, PackageFailedVerificationError, PackageUnsupportedMediaTypeError, + ArchiveNotFoundError, } from '../../../errors'; import { getBundledPackageByName } from '../packages/bundled_packages'; @@ -56,6 +57,8 @@ import { verifyPackageArchiveSignature } from '../packages/package_verification' import type { ArchiveIterator } from '../../../../common/types'; +import { airGappedUtils } from '../airgapped'; + import { fetchUrl, getResponse, getResponseStream } from './requests'; import { getRegistryUrl } from './registry_url'; @@ -67,6 +70,15 @@ export const pkgToPkgKey = ({ name, version }: { name: string; version: string } export async function fetchList( params?: GetPackagesRequest['query'] ): Promise<RegistrySearchResults> { + if (airGappedUtils().shouldSkipRegistryRequests) { + appContextService + .getLogger() + .debug( + 'fetchList: isAirGapped enabled and no registryUrl or RegistryProxyUrl configured, skipping registry requests' + ); + return []; + } + const registryUrl = getRegistryUrl(); const url = new URL(`${registryUrl}/search`); if (params) { @@ -106,16 +118,24 @@ async function _fetchFindLatestPackage( } try { - const res = await fetchUrl(url.toString(), 1); - const searchResults: RegistryPackage[] = JSON.parse(res); - - const latestPackageFromRegistry = searchResults[0] ?? null; - - if (bundledPackage && semverGte(bundledPackage.version, latestPackageFromRegistry.version)) { + if (!airGappedUtils().shouldSkipRegistryRequests) { + const res = await fetchUrl(url.toString(), 1); + const searchResults: RegistryPackage[] = JSON.parse(res); + + const latestPackageFromRegistry = searchResults[0] ?? null; + + if ( + bundledPackage && + semverGte(bundledPackage.version, latestPackageFromRegistry.version) + ) { + return bundledPackage; + } + return latestPackageFromRegistry; + } else if (airGappedUtils().shouldSkipRegistryRequests && bundledPackage) { return bundledPackage; + } else { + return null; } - - return latestPackageFromRegistry; } catch (error) { logger.error( `Failed to fetch latest version of ${packageName} from registry: ${error.message}` @@ -169,6 +189,13 @@ export async function fetchInfo( pkgVersion: string ): Promise<RegistryPackage | ArchivePackage> { const registryUrl = getRegistryUrl(); + // if isAirGapped config enabled and bundled package, use the bundled version + if (airGappedUtils().shouldSkipRegistryRequests) { + const archivePackage = await getBundledArchive(pkgName, pkgVersion); + if (archivePackage) { + return archivePackage.packageInfo; + } + } try { // Trailing slash avoids 301 redirect / extra hop const res = await fetchUrl(`${registryUrl}/package/${pkgName}/${pkgVersion}/`).then(JSON.parse); @@ -208,12 +235,20 @@ export async function getFile( pkgName: string, pkgVersion: string, relPath: string -): Promise<Response> { +): Promise<Response | null> { const filePath = `/package/${pkgName}/${pkgVersion}/${relPath}`; return fetchFile(filePath); } -export async function fetchFile(filePath: string): Promise<Response> { +export async function fetchFile(filePath: string): Promise<Response | null> { + if (airGappedUtils().shouldSkipRegistryRequests) { + appContextService + .getLogger() + .debug( + 'fetchFile: isAirGapped enabled and no registryUrl or RegistryProxyUrl configured, skipping registry requests' + ); + return null; + } const registryUrl = getRegistryUrl(); return getResponse(`${registryUrl}${filePath}`); } @@ -264,6 +299,15 @@ function setConstraints(url: URL) { export async function fetchCategories( params?: GetCategoriesRequest['query'] ): Promise<CategorySummaryList> { + if (airGappedUtils().shouldSkipRegistryRequests) { + appContextService + .getLogger() + .debug( + 'fetchCategories: isAirGapped enabled and no registryUrl or RegistryProxyUrl configured, skipping registry requests' + ); + return []; + } + const registryUrl = getRegistryUrl(); const url = new URL(`${registryUrl}/categories`); if (params) { @@ -319,42 +363,52 @@ export async function getPackage( archiveIterator: ArchiveIterator; verificationResult?: PackageVerificationResult; }> { + const logger = appContextService.getLogger(); const verifyPackage = appContextService.getExperimentalFeatures().packageVerification; let packageInfo: ArchivePackage | undefined = getPackageInfo({ name, version }); let verificationResult: PackageVerificationResult | undefined = verifyPackage ? getVerificationResult({ name, version }) : undefined; + try { + const { + archiveBuffer, + archivePath, + verificationResult: latestVerificationResult, + } = await withPackageSpan('Fetch package archive from archive buffer', () => + fetchArchiveBuffer({ + pkgName: name, + pkgVersion: version, + shouldVerify: verifyPackage, + ignoreUnverified: options?.ignoreUnverified, + }) + ); - const { - archiveBuffer, - archivePath, - verificationResult: latestVerificationResult, - } = await withPackageSpan('Fetch package archive from archive buffer', () => - fetchArchiveBuffer({ - pkgName: name, - pkgVersion: version, - shouldVerify: verifyPackage, - ignoreUnverified: options?.ignoreUnverified, - }) - ); - - if (latestVerificationResult) { - verificationResult = latestVerificationResult; - setVerificationResult({ name, version }, latestVerificationResult); - } + if (latestVerificationResult) { + verificationResult = latestVerificationResult; + setVerificationResult({ name, version }, latestVerificationResult); + } - const contentType = ensureContentType(archivePath); - const { paths, assetsMap, archiveIterator } = await unpackBufferToAssetsMap({ - archiveBuffer, - contentType, - useStreaming: options?.useStreaming, - }); + const contentType = ensureContentType(archivePath); + const { paths, assetsMap, archiveIterator } = await unpackBufferToAssetsMap({ + archiveBuffer, + contentType, + useStreaming: options?.useStreaming, + }); - if (!packageInfo) { - packageInfo = await getPackageInfoFromArchiveOrCache(name, version, archiveBuffer, archivePath); - } + if (!packageInfo) { + packageInfo = await getPackageInfoFromArchiveOrCache( + name, + version, + archiveBuffer, + archivePath + ); + } - return { paths, packageInfo, assetsMap, archiveIterator, verificationResult }; + return { paths, packageInfo, assetsMap, archiveIterator, verificationResult }; + } catch (error) { + logger.warn(`getPackage failed with error: ${error}`); + throw error; + } } export async function getPackageFieldsMetadata( @@ -367,36 +421,40 @@ export async function getPackageFieldsMetadata( // Attempt retrieving latest package name and version const latestPackage = await fetchFindLatestPackageOrThrow(packageName); const { name, version } = latestPackage; - - // Attempt retrieving latest package - const resolvedPackage = await getPackage(name, version); - - // We need to collect all the available data streams for the package. - // In case a dataset is specified from the parameter, it will load the fields only for that specific dataset. - // As a fallback case, we'll try to read the fields for all the data streams in the package. - const dataStreamsMap = resolveDataStreamsMap(resolvedPackage.packageInfo.data_streams); - - const { assetsMap } = resolvedPackage; - - const dataStream = datasetName ? dataStreamsMap.get(datasetName) : null; - - if (dataStream) { - // Resolve a single data stream fields when the `datasetName` parameter is specified - return resolveDataStreamFields({ dataStream, assetsMap, excludedFieldsAssets }); - } else { - // Resolve and merge all the integration data streams fields otherwise - return [...dataStreamsMap.values()].reduce( - (packageDataStreamsFields, currentDataStream) => - Object.assign( - packageDataStreamsFields, - resolveDataStreamFields({ - dataStream: currentDataStream, - assetsMap, - excludedFieldsAssets, - }) - ), - {} - ); + try { + // Attempt retrieving latest package + const resolvedPackage = await getPackage(name, version); + + // We need to collect all the available data streams for the package. + // In case a dataset is specified from the parameter, it will load the fields only for that specific dataset. + // As a fallback case, we'll try to read the fields for all the data streams in the package. + const dataStreamsMap = resolveDataStreamsMap(resolvedPackage.packageInfo.data_streams); + + const assetsMap = resolvedPackage.assetsMap; + + const dataStream = datasetName ? dataStreamsMap.get(datasetName) : null; + + if (dataStream) { + // Resolve a single data stream fields when the `datasetName` parameter is specified + return resolveDataStreamFields({ dataStream, assetsMap, excludedFieldsAssets }); + } else { + // Resolve and merge all the integration data streams fields otherwise + return [...dataStreamsMap.values()].reduce( + (packageDataStreamsFields, currentDataStream) => + Object.assign( + packageDataStreamsFields, + resolveDataStreamFields({ + dataStream: currentDataStream, + assetsMap, + excludedFieldsAssets, + }) + ), + {} + ); + } + } catch (error) { + appContextService.getLogger().warn(`getPackageFieldsMetadata error: ${error}`); + throw error; } } @@ -436,22 +494,31 @@ export async function fetchArchiveBuffer({ } const registryUrl = getRegistryUrl(); const archiveUrl = `${registryUrl}${archivePath}`; - const archiveBuffer = await getResponseStream(archiveUrl).then(streamToBuffer); - - if (shouldVerify) { - const verificationResult = await verifyPackageArchiveSignature({ - pkgName, - pkgVersion, - pkgArchiveBuffer: archiveBuffer, - logger, - }); + try { + const archiveBuffer = await getResponseStream(archiveUrl).then(streamToBuffer); + if (!archiveBuffer) { + logger.warn(`Archive Buffer not found`); + throw new ArchiveNotFoundError('Archive Buffer not found'); + } + + if (shouldVerify) { + const verificationResult = await verifyPackageArchiveSignature({ + pkgName, + pkgVersion, + pkgArchiveBuffer: archiveBuffer, + logger, + }); - if (verificationResult.verificationStatus === 'unverified' && !ignoreUnverified) { - throw new PackageFailedVerificationError(pkgName, pkgVersion); + if (verificationResult.verificationStatus === 'unverified' && !ignoreUnverified) { + throw new PackageFailedVerificationError(pkgName, pkgVersion); + } + return { archiveBuffer, archivePath, verificationResult }; } - return { archiveBuffer, archivePath, verificationResult }; + return { archiveBuffer, archivePath }; + } catch (error) { + logger.warn(`fetchArchiveBuffer failed with error: ${error}`); + throw error; } - return { archiveBuffer, archivePath }; } export async function getPackageArchiveSignatureOrUndefined({ @@ -473,9 +540,10 @@ export async function getPackageArchiveSignatureOrUndefined({ } try { - const { body } = await fetchFile(signaturePath); + const res = await fetchFile(signaturePath); - return streamToString(body); + if (res?.body) return streamToString(res.body); + return undefined; } catch (e) { logger.error(`Error retrieving package signature at '${signaturePath}' : ${e}`); return undefined; diff --git a/x-pack/plugins/fleet/server/services/epm/registry/requests.test.ts b/x-pack/plugins/fleet/server/services/epm/registry/requests.test.ts index e4e34d25671f6..367f68f50acd2 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/requests.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/requests.test.ts @@ -5,11 +5,17 @@ * 2.0. */ +import { securityMock } from '@kbn/security-plugin/server/mocks'; +import { loggerMock } from '@kbn/logging-mocks'; + +import type { Logger } from '@kbn/core/server'; + import { RegistryError, RegistryConnectionError, RegistryResponseError } from '../../../errors'; import { appContextService } from '../../app_context'; import { fetchUrl, getResponse } from './requests'; jest.mock('node-fetch'); +jest.mock('../../app_context'); let mockRegistryProxyUrl: string | undefined; jest.mock('./proxy', () => ({ @@ -17,11 +23,9 @@ jest.mock('./proxy', () => ({ getRegistryProxyUrl: () => mockRegistryProxyUrl, })); -jest.mock('../../app_context', () => ({ - appContextService: { - getKibanaVersion: jest.fn(), - getLogger: jest.fn().mockReturnValue({ debug: jest.fn() }), - }, +const mockedAppContextService = appContextService as jest.Mocked<typeof appContextService>; +mockedAppContextService.getSecuritySetup.mockImplementation(() => ({ + ...securityMock.createSetup(), })); const { Response, FetchError } = jest.requireActual('node-fetch'); @@ -29,18 +33,23 @@ const { Response, FetchError } = jest.requireActual('node-fetch'); const fetchMock = require('node-fetch') as jest.Mock; jest.setTimeout(120 * 1000); -describe('Registry request', () => { + +describe('Registry requests', () => { beforeEach(async () => {}); afterEach(async () => { jest.clearAllMocks(); }); + let mockedLogger: jest.Mocked<Logger>; describe('fetch options', () => { beforeEach(() => { fetchMock.mockImplementationOnce(() => Promise.resolve(new Response(''))); - (appContextService.getKibanaVersion as jest.Mock).mockReturnValue('8.0.0'); + mockedAppContextService.getKibanaVersion.mockReturnValue('8.0.0'); + mockedLogger = loggerMock.create(); + mockedAppContextService.getLogger.mockReturnValue(mockedLogger); }); + it('should set User-Agent header including kibana version', async () => { await getResponse(''); @@ -219,5 +228,32 @@ describe('Registry request', () => { expect(fetchMock).toHaveBeenCalledTimes(1); }); }); + + describe('with config.isAirGapped == true', () => { + beforeEach(() => { + mockedLogger = loggerMock.create(); + mockedAppContextService.getLogger.mockReturnValue(mockedLogger); + mockedAppContextService.getConfig.mockReturnValue({ + isAirGapped: true, + enabled: true, + agents: { enabled: true, elasticsearch: {} }, + }); + }); + + it('should not call fetch', async () => { + await getResponse(''); + + expect(fetchMock).toHaveBeenCalledTimes(0); + }); + + it('fetchUrl throws error', async () => { + fetchMock.mockImplementationOnce(() => { + throw new Error('mocked'); + }); + const promise = fetchUrl(''); + await expect(promise).rejects.toThrow(RegistryResponseError); + expect(fetchMock).toHaveBeenCalledTimes(0); + }); + }); }); }); diff --git a/x-pack/plugins/fleet/server/services/epm/registry/requests.ts b/x-pack/plugins/fleet/server/services/epm/registry/requests.ts index 47084b601a27e..a67e01408a1e9 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/requests.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/requests.ts @@ -13,6 +13,8 @@ import { streamToString } from '../streams'; import { appContextService } from '../../app_context'; import { RegistryError, RegistryConnectionError, RegistryResponseError } from '../../../errors'; +import { airGappedUtils } from '../airgapped'; + import { getProxyAgent, getRegistryProxyUrl } from './proxy'; type FailedAttemptErrors = pRetry.FailedAttemptError | FetchError | Error; @@ -20,6 +22,7 @@ type FailedAttemptErrors = pRetry.FailedAttemptError | FetchError | Error; // not sure what to call this function, but we're not exporting it async function registryFetch(url: string) { const response = await fetch(url, getFetchOptions(url)); + if (response.ok) { return response; } else { @@ -34,7 +37,16 @@ async function registryFetch(url: string) { } } -export async function getResponse(url: string, retries: number = 5): Promise<Response> { +export async function getResponse(url: string, retries: number = 5): Promise<Response | null> { + const logger = appContextService.getLogger(); + + if (airGappedUtils().shouldSkipRegistryRequests) { + logger.debug( + 'getResponse: isAirGapped enabled and no registryUrl or RegistryProxyUrl configured, skipping registry requests' + ); + return null; + } + try { // we only want to retry certain failures like network issues // the rest should only try the one time then fail as they do now @@ -72,11 +84,20 @@ export async function getResponseStream( retries?: number ): Promise<NodeJS.ReadableStream> { const res = await getResponse(url, retries); - return res.body; + if (res) { + return res?.body; + } + throw new RegistryResponseError('isAirGapped config enabled, registry not reacheable'); } export async function fetchUrl(url: string, retries?: number): Promise<string> { - return getResponseStream(url, retries).then(streamToString); + const logger = appContextService.getLogger(); + try { + return getResponseStream(url, retries).then(streamToString); + } catch (error) { + logger.warn(`getResponseStream failed with error: ${error}`); + throw error; + } } // node-fetch throws a FetchError for those types of errors and diff --git a/x-pack/plugins/fleet/server/services/register_fields_metadata_extractors.ts b/x-pack/plugins/fleet/server/services/register_fields_metadata_extractors.ts index 9a53c235622bf..a468c20137b38 100644 --- a/x-pack/plugins/fleet/server/services/register_fields_metadata_extractors.ts +++ b/x-pack/plugins/fleet/server/services/register_fields_metadata_extractors.ts @@ -10,6 +10,8 @@ import type { FieldsMetadataServerSetup } from '@kbn/fields-metadata-plugin/serv import type { FleetStartContract, FleetStartDeps } from '../plugin'; +import { appContextService } from '.'; + interface RegistrationDeps { core: CoreSetup<FleetStartDeps, FleetStartContract>; fieldsMetadata: FieldsMetadataServerSetup; @@ -17,12 +19,17 @@ interface RegistrationDeps { export const registerFieldsMetadataExtractors = ({ core, fieldsMetadata }: RegistrationDeps) => { fieldsMetadata.registerIntegrationFieldsExtractor(async ({ integration, dataset }) => { - const [_core, _startDeps, { packageService }] = await core.getStartServices(); + try { + const [_core, _startDeps, { packageService }] = await core.getStartServices(); - return packageService.asInternalUser.getPackageFieldsMetadata({ - packageName: integration, - datasetName: dataset, - }); + return packageService.asInternalUser.getPackageFieldsMetadata({ + packageName: integration, + datasetName: dataset, + }); + } catch (error) { + appContextService.getLogger().warn(`registerIntegrationFieldsExtractor error: ${error}`); + throw error; + } }); fieldsMetadata.registerIntegrationListExtractor(async () => { diff --git a/x-pack/plugins/fleet/server/services/setup.test.ts b/x-pack/plugins/fleet/server/services/setup.test.ts index 8add6942e9da7..d145f264ec3e8 100644 --- a/x-pack/plugins/fleet/server/services/setup.test.ts +++ b/x-pack/plugins/fleet/server/services/setup.test.ts @@ -33,6 +33,7 @@ jest.mock('./epm/elasticsearch/template/install', () => { ...jest.requireActual('./epm/elasticsearch/template/install'), }; }); +jest.mock('./backfill_agentless'); const mockedMethodThrowsError = (mockFn: jest.Mock) => mockFn.mockImplementation(() => { diff --git a/x-pack/plugins/fleet/server/services/setup.ts b/x-pack/plugins/fleet/server/services/setup.ts index 24d655a4cae16..e17d8222cfd0a 100644 --- a/x-pack/plugins/fleet/server/services/setup.ts +++ b/x-pack/plugins/fleet/server/services/setup.ts @@ -62,6 +62,7 @@ import { ensureDeleteUnenrolledAgentsSetting, getPreconfiguredDeleteUnenrolledAgentsSettingFromConfig, } from './preconfiguration/delete_unenrolled_agent_setting'; +import { backfillPackagePolicySupportsAgentless } from './backfill_agentless'; export interface SetupStatus { isInitialized: boolean; @@ -305,6 +306,9 @@ async function createSetupSideEffects( await ensureAgentPoliciesFleetServerKeysAndPolicies({ soClient, esClient, logger }); stepSpan?.end(); + logger.debug('Backfilling package policy supports_agentless field'); + await backfillPackagePolicySupportsAgentless(esClient); + const nonFatalErrors = [ ...preconfiguredPackagesNonFatalErrors, ...(messageSigningServiceNonFatalError ? [messageSigningServiceNonFatalError] : []), diff --git a/x-pack/plugins/fleet/server/services/spaces/agent_policy.test.ts b/x-pack/plugins/fleet/server/services/spaces/agent_policy.test.ts index 079148a6ae041..6b2c63aae9126 100644 --- a/x-pack/plugins/fleet/server/services/spaces/agent_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/spaces/agent_policy.test.ts @@ -7,6 +7,7 @@ import { createAppContextStartContractMock } from '../../mocks'; import { agentPolicyService } from '../agent_policy'; +import { getAgentsByKuery } from '../agents'; import { appContextService } from '../app_context'; import { packagePolicyService } from '../package_policy'; @@ -16,6 +17,7 @@ import { isSpaceAwarenessEnabled } from './helpers'; jest.mock('./helpers'); jest.mock('../agent_policy'); jest.mock('../package_policy'); +jest.mock('../agents'); describe('updateAgentPolicySpaces', () => { beforeEach(() => { @@ -55,6 +57,10 @@ describe('updateAgentPolicySpaces', () => { } as any, ], }); + + jest.mocked(getAgentsByKuery).mockResolvedValue({ + agents: [], + } as any); }); it('does nothings if agent policy already in correct space', async () => { diff --git a/x-pack/plugins/fleet/server/services/spaces/agent_policy.ts b/x-pack/plugins/fleet/server/services/spaces/agent_policy.ts index 50f20443c3262..dce40f4cc3ff4 100644 --- a/x-pack/plugins/fleet/server/services/spaces/agent_policy.ts +++ b/x-pack/plugins/fleet/server/services/spaces/agent_policy.ts @@ -6,27 +6,29 @@ */ import deepEqual from 'fast-deep-equal'; - import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; +import type { SortResults } from '@elastic/elasticsearch/lib/api/types'; import { AGENTS_INDEX, + AGENT_ACTIONS_INDEX, AGENT_POLICY_SAVED_OBJECT_TYPE, PACKAGE_POLICY_SAVED_OBJECT_TYPE, SO_SEARCH_LIMIT, UNINSTALL_TOKENS_SAVED_OBJECT_TYPE, } from '../../../common/constants'; - import { appContextService } from '../app_context'; import { agentPolicyService } from '../agent_policy'; import { ENROLLMENT_API_KEYS_INDEX } from '../../constants'; import { packagePolicyService } from '../package_policy'; import { FleetError, HostedAgentPolicyRestrictionRelatedError } from '../../errors'; - import type { UninstallTokenSOAttributes } from '../security/uninstall_token_service'; +import { closePointInTime, getAgentsByKuery, openPointInTime } from '../agents'; import { isSpaceAwarenessEnabled } from './helpers'; +const UPDATE_AGENT_BATCH_SIZE = 1000; + export async function updateAgentPolicySpaces({ agentPolicyId, currentSpaceId, @@ -49,6 +51,7 @@ export async function updateAgentPolicySpaces({ const soClient = appContextService.getInternalUserSOClientWithoutSpaceExtension(); const currentSpaceSoClient = appContextService.getInternalUserSOClientForSpaceId(currentSpaceId); + const newSpaceSoClient = appContextService.getInternalUserSOClientForSpaceId(newSpaceIds[0]); const existingPolicy = await agentPolicyService.get(currentSpaceSoClient, agentPolicyId); const existingPackagePolicies = await packagePolicyService.findAllForAgentPolicy( @@ -166,4 +169,55 @@ export async function updateAgentPolicySpaces({ ignore_unavailable: true, refresh: true, }); + + const agentIndexExists = await esClient.indices.exists({ + index: AGENTS_INDEX, + }); + + // Update agent actions + if (agentIndexExists) { + const pitId = await openPointInTime(esClient); + + try { + let hasMore = true; + let searchAfter: SortResults | undefined; + while (hasMore) { + const { agents } = await getAgentsByKuery(esClient, newSpaceSoClient, { + kuery: `policy_id:"${agentPolicyId}"`, + showInactive: true, + perPage: UPDATE_AGENT_BATCH_SIZE, + pitId, + searchAfter, + }); + + if (agents.length === 0) { + hasMore = false; + break; + } + + const lastAgent = agents[agents.length - 1]; + searchAfter = lastAgent.sort; + + await esClient.updateByQuery({ + index: AGENT_ACTIONS_INDEX, + query: { + bool: { + must: { + terms: { + agents: agents.map(({ id }) => id), + }, + }, + }, + }, + script: `ctx._source.namespaces = [${newSpaceIds + .map((spaceId) => `"${spaceId}"`) + .join(',')}]`, + ignore_unavailable: true, + refresh: true, + }); + } + } finally { + await closePointInTime(esClient, pitId); + } + } } diff --git a/x-pack/plugins/fleet/server/telemetry/sender.ts b/x-pack/plugins/fleet/server/telemetry/sender.ts index 8fb71683b2c9c..0823fbe5c36f1 100644 --- a/x-pack/plugins/fleet/server/telemetry/sender.ts +++ b/x-pack/plugins/fleet/server/telemetry/sender.ts @@ -14,16 +14,16 @@ import axios from 'axios'; import type { InfoResponse, LicenseGetResponse } from '@elastic/elasticsearch/lib/api/types'; -import { appContextService } from '../services'; - import { exhaustMap, Subject, takeUntil, timer } from 'rxjs'; +import { appContextService } from '../services'; + import { TelemetryQueue } from './queue'; import type { FleetTelemetryChannel, FleetTelemetryChannelEvents } from './types'; /** - * Simplified version of https://github.com/elastic/kibana/blob/master/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts + * Simplified version of https://github.com/elastic/kibana/blob/master/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender.ts * Sends batched events to telemetry v3 api */ export class TelemetryEventsSender { diff --git a/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx b/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx index f4dc33f73176c..0473f23643026 100644 --- a/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx +++ b/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx @@ -165,7 +165,7 @@ export const WorkspaceTopNavMenu = (props: WorkspaceTopNavMenuProps) => { <Provider store={store}> <Settings observable={settingsObservable} /> </Provider>, - { theme: props.coreStart.theme, i18n: props.coreStart.i18n } + props.coreStart ), { size: 'm', diff --git a/x-pack/plugins/graph/public/helpers/saved_objects_utils/check_for_duplicate_title.ts b/x-pack/plugins/graph/public/helpers/saved_objects_utils/check_for_duplicate_title.ts index c4ea22344a459..0524c0bc5c1b3 100644 --- a/x-pack/plugins/graph/public/helpers/saved_objects_utils/check_for_duplicate_title.ts +++ b/x-pack/plugins/graph/public/helpers/saved_objects_utils/check_for_duplicate_title.ts @@ -27,7 +27,7 @@ export async function checkForDuplicateTitle( onTitleDuplicate: (() => void) | undefined, services: { contentClient: ContentClient; - } & Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> + } & Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> ): Promise<boolean> { const { contentClient, ...startServices } = services; // Don't check for duplicates if user has already confirmed save with duplicate title diff --git a/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx b/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx index c1d8899c34076..7e7464754fd4d 100644 --- a/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx +++ b/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx @@ -15,7 +15,7 @@ export function confirmModalPromise( message = '', title = '', confirmBtnText = '', - startServices: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> + startServices: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> ): Promise<boolean> { return new Promise((resolve, reject) => { const cancelButtonText = i18n.translate('xpack.graph.confirmModal.cancelButtonLabel', { diff --git a/x-pack/plugins/graph/public/helpers/saved_objects_utils/display_duplicate_title_confirm_modal.ts b/x-pack/plugins/graph/public/helpers/saved_objects_utils/display_duplicate_title_confirm_modal.ts index 4256d3bc0267d..eec216fceb15f 100644 --- a/x-pack/plugins/graph/public/helpers/saved_objects_utils/display_duplicate_title_confirm_modal.ts +++ b/x-pack/plugins/graph/public/helpers/saved_objects_utils/display_duplicate_title_confirm_modal.ts @@ -13,7 +13,7 @@ import { confirmModalPromise } from './confirm_modal_promise'; export function displayDuplicateTitleConfirmModal( savedObject: Pick<GraphWorkspaceSavedObject, 'title'>, - startServices: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> + startServices: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> ): Promise<boolean> { const confirmTitle = i18n.translate('xpack.graph.confirmModal.saveDuplicateConfirmationTitle', { defaultMessage: `This visualization already exists`, diff --git a/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts b/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts index 75b846ca076a3..a9b85e544834f 100644 --- a/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts +++ b/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts @@ -34,7 +34,7 @@ export async function saveWithConfirmation( options: SavedObjectsCreateOptions, services: { contentClient: ContentClient } & Pick< CoreStart, - 'overlays' | 'analytics' | 'i18n' | 'theme' + 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile' > ): Promise<{ item: GraphSavedObject }> { const { contentClient, ...startServices } = services; diff --git a/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts b/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts index 5a2546d122e58..566d9f26be301 100644 --- a/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts +++ b/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts @@ -167,7 +167,7 @@ export async function saveSavedWorkspace( }: SavedObjectSaveOpts = {}, services: { contentClient: ContentClient; - } & Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> + } & Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> ) { let attributes: SavedObjectAttributes = {}; diff --git a/x-pack/plugins/graph/public/services/save_modal.tsx b/x-pack/plugins/graph/public/services/save_modal.tsx index baf6a96405164..e05800ec20ddb 100644 --- a/x-pack/plugins/graph/public/services/save_modal.tsx +++ b/x-pack/plugins/graph/public/services/save_modal.tsx @@ -14,7 +14,7 @@ import { GraphWorkspaceSavedObject, GraphSavePolicy } from '../types'; import { SaveModal, OnSaveGraphProps } from '../components/save_modal'; export interface SaveWorkspaceServices - extends Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> { + extends Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> { contentClient: ContentClient; } diff --git a/x-pack/plugins/graph/public/state_management/store.ts b/x-pack/plugins/graph/public/state_management/store.ts index 60b44ed234e02..a150ad59336ea 100644 --- a/x-pack/plugins/graph/public/state_management/store.ts +++ b/x-pack/plugins/graph/public/state_management/store.ts @@ -40,7 +40,7 @@ export interface GraphState { } export interface GraphStoreDependencies - extends Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> { + extends Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> { addBasePath: (url: string) => string; indexPatternProvider: IndexPatternProvider; createWorkspace: (index: string, advancedSettings: AdvancedSettings) => Workspace; diff --git a/x-pack/plugins/graph/server/routes/explore.ts b/x-pack/plugins/graph/server/routes/explore.ts index b97f3fe882c35..918e0addd68b7 100644 --- a/x-pack/plugins/graph/server/routes/explore.ts +++ b/x-pack/plugins/graph/server/routes/explore.ts @@ -27,6 +27,12 @@ export function registerExploreRoute({ router.post( { path: '/internal/graph/graphExplore', + security: { + authz: { + enabled: false, + reason: 'This route delegates authorization to the scoped ES client.', + }, + }, validate: { body: schema.object({ index: schema.string(), diff --git a/x-pack/plugins/graph/server/routes/search.ts b/x-pack/plugins/graph/server/routes/search.ts index 822b22648c7cc..0c0a83257a69e 100644 --- a/x-pack/plugins/graph/server/routes/search.ts +++ b/x-pack/plugins/graph/server/routes/search.ts @@ -20,6 +20,12 @@ export function registerSearchRoute({ router.post( { path: '/internal/graph/searchProxy', + security: { + authz: { + enabled: false, + reason: 'This route delegates authorization to the scoped ES client.', + }, + }, validate: { body: schema.object({ index: schema.string(), diff --git a/x-pack/plugins/grokdebugger/jest.config.js b/x-pack/plugins/grokdebugger/jest.config.js deleted file mode 100644 index 56cd0339a7afd..0000000000000 --- a/x-pack/plugins/grokdebugger/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/grokdebugger'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/grokdebugger', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/grokdebugger/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/grokdebugger/tsconfig.json b/x-pack/plugins/grokdebugger/tsconfig.json deleted file mode 100644 index f2df02467d71c..0000000000000 --- a/x-pack/plugins/grokdebugger/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/licensing-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/code-editor", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/README.md b/x-pack/plugins/index_lifecycle_management/integration_tests/README.md deleted file mode 100644 index 5e4bf4360cb72..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/integration_tests/README.md +++ /dev/null @@ -1,14 +0,0 @@ -Most plugins of the deployment management team follow -the similar testing infrastructure where integration tests are located in `__jest__` and run as unit tests. - -The `index_lifecycle_management` tests [were refactored](https://github.com/elastic/kibana/pull/141750) to be run as integration tests because they [became flaky hitting the 5 seconds timeout](https://github.com/elastic/kibana/issues/115307#issuecomment-1238417474) for a jest unit test. - -Jest integration tests are just sit in a different directory and have two main differences: -- They never use parallelism, this allows them to access file system resources, launch services, etc. without needing to worry about conflicts with other tests -- They are allowed to take their sweet time, the default timeout is currently 10 minutes. - -To run these tests use: - -``` -node scripts/jest_integration x-pack/plugins/index_lifecycle_management/ -``` \ No newline at end of file diff --git a/x-pack/plugins/index_lifecycle_management/jest.config.js b/x-pack/plugins/index_lifecycle_management/jest.config.js deleted file mode 100644 index ec594e214106d..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/index_lifecycle_management'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/index_lifecycle_management', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/index_lifecycle_management/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/index_lifecycle_management/jest.integration.config.js b/x-pack/plugins/index_lifecycle_management/jest.integration.config.js deleted file mode 100644 index 6d1ac5ec2fd8a..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/jest.integration.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test/jest_integration', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/index_lifecycle_management'], - testMatch: ['/**/integration_tests/**/*.test.{js,mjs,ts,tsx}'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/index_lifecycle_management', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/index_lifecycle_management/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/index_lifecycle_management/tsconfig.json b/x-pack/plugins/index_lifecycle_management/tsconfig.json deleted file mode 100644 index 08346dcdc2d35..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/tsconfig.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__jest__/**/*", - "integration_tests/**/*", - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/licensing-plugin", - "@kbn/management-plugin", - "@kbn/features-plugin", - "@kbn/share-plugin", - // optional plugins - "@kbn/cloud-plugin", - "@kbn/usage-collection-plugin", - "@kbn/index-management-plugin", - "@kbn/home-plugin", - // required bundles - "@kbn/kibana-react-plugin", - "@kbn/test-jest-helpers", - "@kbn/core-http-browser-mocks", - "@kbn/i18n", - "@kbn/utility-types", - "@kbn/analytics", - "@kbn/es-ui-shared-plugin", - "@kbn/i18n-react", - "@kbn/core-http-browser", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/ui-theme", - "@kbn/shared-ux-link-redirect-app", - "@kbn/index-management-shared-types", - "@kbn/react-kibana-context-render", - "@kbn/unsaved-changes-prompt", - "@kbn/shared-ux-table-persist", - "@kbn/index-lifecycle-management-common-shared", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/index_management/README.md b/x-pack/plugins/index_management/README.md index 970b86c4ed37c..bc7047888d2ab 100644 --- a/x-pack/plugins/index_management/README.md +++ b/x-pack/plugins/index_management/README.md @@ -43,7 +43,7 @@ interface IndexDetailsTab { } ``` -An example of adding an ILM tab can be found in [this file](https://github.com/elastic/kibana/blob/main/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx#L250). +An example of adding an ILM tab can be found in [this file](https://github.com/elastic/kibana/blob/main/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx#L250). - `setIndexOverviewContent(content: IndexContent)`: replaces the default content in the overview tab (code block describing adding documents to the index) with the custom content. The custom content has the following interface: ```ts diff --git a/x-pack/plugins/index_management/common/types/data_streams.ts b/x-pack/plugins/index_management/common/types/data_streams.ts index 993d32f32bee1..b6c3e46966dfa 100644 --- a/x-pack/plugins/index_management/common/types/data_streams.ts +++ b/x-pack/plugins/index_management/common/types/data_streams.ts @@ -81,7 +81,7 @@ export interface DataStreamIndex { name: string; uuid: string; preferILM: boolean; - managedBy: string; + managedBy?: string; } export interface DataRetention { diff --git a/x-pack/plugins/index_management/public/application/lib/data_streams.tsx b/x-pack/plugins/index_management/public/application/lib/data_streams.tsx index 6747e84df751d..138a91e86df67 100644 --- a/x-pack/plugins/index_management/public/application/lib/data_streams.tsx +++ b/x-pack/plugins/index_management/public/application/lib/data_streams.tsx @@ -87,7 +87,7 @@ export const isDataStreamFullyManagedByILM = (dataStream?: DataStream | null) => return ( dataStream?.nextGenerationManagedBy?.toLowerCase() === 'index lifecycle management' && dataStream?.indices?.every( - (index) => index.managedBy.toLowerCase() === 'index lifecycle management' + (index) => index.managedBy?.toLowerCase() === 'index lifecycle management' ) ); }; @@ -95,20 +95,22 @@ export const isDataStreamFullyManagedByILM = (dataStream?: DataStream | null) => export const isDataStreamFullyManagedByDSL = (dataStream?: DataStream | null) => { return ( dataStream?.nextGenerationManagedBy?.toLowerCase() === 'data stream lifecycle' && - dataStream?.indices?.every((index) => index.managedBy.toLowerCase() === 'data stream lifecycle') + dataStream?.indices?.every( + (index) => index.managedBy?.toLowerCase() === 'data stream lifecycle' + ) ); }; export const isDSLWithILMIndices = (dataStream?: DataStream | null) => { if (dataStream?.nextGenerationManagedBy?.toLowerCase() === 'data stream lifecycle') { const ilmIndices = dataStream?.indices?.filter( - (index) => index.managedBy.toLowerCase() === 'index lifecycle management' + (index) => index.managedBy?.toLowerCase() === 'index lifecycle management' ); const dslIndices = dataStream?.indices?.filter( - (index) => index.managedBy.toLowerCase() === 'data stream lifecycle' + (index) => index.managedBy?.toLowerCase() === 'data stream lifecycle' ); - // When there arent any ILM indices, there's no need to show anything. + // When there aren't any ILM indices, there's no need to show anything. if (!ilmIndices?.length) { return; } diff --git a/x-pack/plugins/index_management/server/lib/data_stream_serialization.ts b/x-pack/plugins/index_management/server/lib/data_stream_serialization.ts index 31c0baa6c6b8c..2556fab947665 100644 --- a/x-pack/plugins/index_management/server/lib/data_stream_serialization.ts +++ b/x-pack/plugins/index_management/server/lib/data_stream_serialization.ts @@ -43,13 +43,13 @@ export function deserializeDataStream(dataStreamFromEs: EnhancedDataStreamFromEs ({ index_name: indexName, index_uuid: indexUuid, - prefer_ilm: preferILM, + prefer_ilm: preferILM = false, managed_by: managedBy, }: { index_name: string; index_uuid: string; - prefer_ilm: boolean; - managed_by: string; + prefer_ilm?: boolean; + managed_by?: string; }) => ({ name: indexName, uuid: indexUuid, diff --git a/x-pack/plugins/ingest_pipelines/jest.config.js b/x-pack/plugins/ingest_pipelines/jest.config.js deleted file mode 100644 index e3e76e54a610d..0000000000000 --- a/x-pack/plugins/ingest_pipelines/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/ingest_pipelines'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/ingest_pipelines', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/ingest_pipelines/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/ingest_pipelines/tsconfig.json b/x-pack/plugins/ingest_pipelines/tsconfig.json deleted file mode 100644 index 5792ac1b9fda1..0000000000000 --- a/x-pack/plugins/ingest_pipelines/tsconfig.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "__jest__/**/*", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/licensing-plugin", - "@kbn/features-plugin", - "@kbn/security-plugin", - "@kbn/file-upload-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/kibana-react-plugin", - "@kbn/management-plugin", - "@kbn/share-plugin", - "@kbn/usage-collection-plugin", - "@kbn/utility-types", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/analytics", - "@kbn/monaco", - "@kbn/test-jest-helpers", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/core-ui-settings-browser", - "@kbn/code-editor", - "@kbn/react-kibana-context-render", - "@kbn/console-plugin", - "@kbn/react-kibana-context-theme", - "@kbn/unsaved-changes-prompt", - "@kbn/core-http-browser-mocks", - "@kbn/shared-ux-table-persist", - "@kbn/core-http-browser", - "@kbn/core-plugins-server" - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/integration_assistant/README.md b/x-pack/plugins/integration_assistant/README.md deleted file mode 100644 index be238aacd174a..0000000000000 --- a/x-pack/plugins/integration_assistant/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# Integration Assistant - -## Overview - -Team owner: Security Integrations Scalability - -This is a new Kibana plugin created to help users with automatically generating integration packages based on provided log samples and relevant information - -## Features - -Exposes 4 API's that can be consumed by any frontend plugin, which are: - -- ECS Mapping API -- Categorization API -- Related Fields API -- Build Integration API -- Optional Test Pipeline API (Used to update pipeline results if the ingest pipeline is changed by a user in the UI). - -## Development - -### Backend - -#### Overview - -The backend part of the plugin utilizes langraph extensively to parse the provided log samples and generate the integration package. - -One instance of langraph is created that will include one or more `nodes` in which each node represents a step in the integration package generation process. - -Each node links to a specific function, usually a `handler` specified in its own file under each graph folder that will be executed when the node is reached. - -#### Structure - -**Graphs** - -The graph components are split into logical parts and are placed in separate folders for each graph under the `./server/graphs` directory. - -Each graph folder needs to contains at least one `graph.ts`, which exports a function that returns the compiled graph object. - -Each exported graph function is then linked up to one or more API routes. - -**Routes** - -All routes are defined under `./server/routes` in its own file, and then included in the `./server/routes/register_routes.ts` file. - -**Integration Builder** - -The integration builder is the last step in the expected API flow (ECS Mapping -> Categorization -> Related Fields -> Integration Builder). -With the provided package and data stream details, an optional logo and a list of sample logs, the API will build out the entire folder structure and files required for the integration package, archive it and return it as a `Buffer`. - -**Templates** - -Currently the templates are stored as `nunjucks` files as they were converted from `jinja2` templates, which use the exact same format. Longer term this will most likely be switched to the Kibana forked Handlebars templating engine. - -The templates are stored in the `./server/templates` directory and are used to generate the integration package files while running the Integration Builder API. - -One template (pipeline.yml.njk) is used by the ECS Mapping API to generate the boilerplate ingest pipeline structure we want to use for all generated integrations. - -#### Flows - -Generated by running `yarn draw-graphs` inside the root of the plugin folder. - -**First graph:** -**Log Format Detection:** -![!LogFormatDetectionGraph](./docs/img/log_detection_graph.png) - -**Second graph, main:** -**ECS Main:** -![ECSMappingGraph](./docs/img/ecs_graph.png) - -**Second graph, sub:** -**ECS Sub:** -![ECSMappingSubGraph](./docs/img/ecs_subgraph.png) - -**Third graph:** -**Categorization:** -![CategorizationGraph](./docs/img/categorization_graph.png) - -**Fourth graph:** -**Related:** -![RelatedGraph](./docs/img/related_graph.png) - -## Tests - -All mocks/fixtures are placed in the top `./__jest__` directory of the plugin. If many mocks/fixtures are required, try to split them up into separate file(s). - -Tests can be run with: - -```bash -node scripts/jest x-pack/plugins/integration_assistant/ --coverage -``` diff --git a/x-pack/plugins/integration_assistant/common/constants.ts b/x-pack/plugins/integration_assistant/common/constants.ts deleted file mode 100644 index 3026101ebf54d..0000000000000 --- a/x-pack/plugins/integration_assistant/common/constants.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { LicenseType } from '@kbn/licensing-plugin/common/types'; - -// Plugin information -export const PLUGIN_ID = 'integrationAssistant'; - -// Public App Routes -export const INTEGRATION_ASSISTANT_APP_ROUTE = '/app/integration_assistant'; - -// Server API Routes -export const INTEGRATION_ASSISTANT_BASE_PATH = '/api/integration_assistant'; - -export const ECS_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/ecs`; -export const CATEGORIZATION_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/categorization`; -export const ANALYZE_LOGS_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/analyzelogs`; -export const RELATED_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/related`; -export const CEL_INPUT_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/cel`; -export const CHECK_PIPELINE_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/pipeline`; -export const INTEGRATION_BUILDER_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/build`; -export const FLEET_PACKAGES_PATH = `/api/fleet/epm/packages`; - -// License -export const MINIMUM_LICENSE_TYPE: LicenseType = 'enterprise'; - -// ErrorCodes - -export enum GenerationErrorCode { - RECURSION_LIMIT = 'recursion-limit', - RECURSION_LIMIT_ANALYZE_LOGS = 'recursion-limit-analyze-logs', - UNSUPPORTED_LOG_SAMPLES_FORMAT = 'unsupported-log-samples-format', - UNPARSEABLE_CSV_DATA = 'unparseable-csv-data', - CEF_ERROR = 'cef-not-supported', -} - -// Size limits -export const FRONTEND_SAMPLE_ROWS = 100; -export const LOG_FORMAT_DETECTION_SAMPLE_ROWS = 5; -export const CATEGORIZATION_INITIAL_BATCH_SIZE = 60; -export const CATEROGIZATION_REVIEW_BATCH_SIZE = 40; -export const CATEGORIZATION_REVIEW_MAX_CYCLES = 5; -export const CATEGORIZATION_RECURSION_LIMIT = 50; diff --git a/x-pack/plugins/integration_assistant/jest.config.js b/x-pack/plugins/integration_assistant/jest.config.js deleted file mode 100644 index 5712a959c461f..0000000000000 --- a/x-pack/plugins/integration_assistant/jest.config.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/integration_assistant'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/integration_assistant', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/integration_assistant/{common,server,public}/**/*.{ts,tsx}', - '!<rootDir>/x-pack/plugins/integration_assistant/{__jest__}/**/*', - '!<rootDir>/x-pack/plugins/integration_assistant/**/*.test.{ts,tsx}', - '!<rootDir>/x-pack/plugins/integration_assistant/**/*.config.ts', - ], - setupFiles: ['jest-canvas-mock'], -}; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx deleted file mode 100644 index ca4d50958005d..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { TestProvider } from '../../../mocks/test_provider'; -import { CreateIntegrationAssistant } from './create_integration_assistant'; -import type { State } from './state'; -import { ExperimentalFeaturesService } from '../../../services'; - -export const defaultInitialState: State = { - step: 1, - connector: undefined, - integrationSettings: undefined, - isGenerating: false, - hasCelInput: false, - result: undefined, -}; -const mockInitialState = jest.fn((): State => defaultInitialState); -jest.mock('./state', () => ({ - ...jest.requireActual('./state'), - get initialState() { - return mockInitialState(); - }, -})); - -jest.mock('../../../services'); -const mockedExperimentalFeaturesService = jest.mocked(ExperimentalFeaturesService); - -const mockConnectorStep = jest.fn(() => <div data-test-subj="connectorStepMock" />); -const mockIntegrationStep = jest.fn(() => <div data-test-subj="integrationStepMock" />); -const mockDataStreamStep = jest.fn(() => <div data-test-subj="dataStreamStepMock" />); -const mockReviewStep = jest.fn(() => <div data-test-subj="reviewStepMock" />); -const mockCelInputStep = jest.fn(() => <div data-test-subj="celInputStepMock" />); -const mockReviewCelStep = jest.fn(() => <div data-test-subj="reviewCelStepMock" />); -const mockDeployStep = jest.fn(() => <div data-test-subj="deployStepMock" />); - -const mockIsConnectorStepReady = jest.fn(); -const mockIsIntegrationStepReady = jest.fn(); -const mockIsDataStreamStepReady = jest.fn(); -const mockIsReviewStepReady = jest.fn(); -const mockIsCelInputStepReady = jest.fn(); -const mockIsCelReviewStepReady = jest.fn(); - -jest.mock('./steps/connector_step', () => ({ - ConnectorStep: () => mockConnectorStep(), - isConnectorStepReady: () => mockIsConnectorStepReady(), -})); -jest.mock('./steps/integration_step', () => ({ - IntegrationStep: () => mockIntegrationStep(), - isIntegrationStepReady: () => mockIsIntegrationStepReady(), -})); -jest.mock('./steps/data_stream_step', () => ({ - DataStreamStep: () => mockDataStreamStep(), - isDataStreamStepReady: () => mockIsDataStreamStepReady(), -})); -jest.mock('./steps/review_step', () => ({ - ReviewStep: () => mockReviewStep(), - isReviewStepReady: () => mockIsReviewStepReady(), -})); -jest.mock('./steps/cel_input_step', () => ({ - CelInputStep: () => mockCelInputStep(), - isCelInputStepReady: () => mockIsCelInputStepReady(), -})); -jest.mock('./steps/review_cel_step', () => ({ - ReviewCelStep: () => mockReviewCelStep(), - isCelReviewStepReady: () => mockIsCelReviewStepReady(), -})); -jest.mock('./steps/deploy_step', () => ({ DeployStep: () => mockDeployStep() })); - -const renderIntegrationAssistant = () => - render(<CreateIntegrationAssistant />, { wrapper: TestProvider }); - -describe('CreateIntegration', () => { - beforeEach(() => { - jest.clearAllMocks(); - - mockedExperimentalFeaturesService.get.mockReturnValue({ - generateCel: false, - } as never); - }); - - describe('when step is 1', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 1 }); - }); - - it('should render connector', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('connectorStepMock')).toBeInTheDocument(); - }); - - it('should call isConnectorStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsConnectorStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 2', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 2 }); - }); - - it('should render integration', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('integrationStepMock')).toBeInTheDocument(); - }); - - it('should call isIntegrationStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsIntegrationStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 3', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 3 }); - }); - - it('should render data stream', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('dataStreamStepMock')).toBeInTheDocument(); - }); - - it('should call isDataStreamStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsDataStreamStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 4', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 4 }); - }); - - it('should render review', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('reviewStepMock')).toBeInTheDocument(); - }); - - it('should call isReviewStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsReviewStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 5', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5 }); - }); - - it('should render deploy', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); - }); - }); -}); - -describe('CreateIntegration with generateCel enabled', () => { - beforeEach(() => { - jest.clearAllMocks(); - - mockedExperimentalFeaturesService.get.mockReturnValue({ - generateCel: true, - } as never); - }); - - describe('when step is 5 and has celInput', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5, hasCelInput: true }); - }); - - it('should render cel input', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('celInputStepMock')).toBeInTheDocument(); - }); - - it('should call isCelInputStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsCelInputStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 5 and does not have celInput', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5 }); - }); - - it('should render deploy', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); - }); - }); - - describe('when step is 6', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ - ...defaultInitialState, - step: 6, - celInputResult: { program: 'program', stateSettings: {}, redactVars: [] }, - }); - }); - - it('should render review', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('reviewCelStepMock')).toBeInTheDocument(); - }); - - it('should call isReviewCelStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsCelReviewStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 7', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 7 }); - }); - - it('should render deploy', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); - }); - }); -}); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx deleted file mode 100644 index 72e085e19920a..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useReducer, useMemo, useEffect } from 'react'; -import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; -import { Header } from './header'; -import { Footer } from './footer'; -import { ConnectorStep, isConnectorStepReady } from './steps/connector_step'; -import { IntegrationStep, isIntegrationStepReady } from './steps/integration_step'; -import { DataStreamStep, isDataStreamStepReady } from './steps/data_stream_step'; -import { ReviewStep, isReviewStepReady } from './steps/review_step'; -import { CelInputStep, isCelInputStepReady } from './steps/cel_input_step'; -import { ReviewCelStep, isCelReviewStepReady } from './steps/review_cel_step'; -import { DeployStep } from './steps/deploy_step'; -import { reducer, initialState, ActionsProvider, type Actions } from './state'; -import { useTelemetry } from '../telemetry'; -import { ExperimentalFeaturesService } from '../../../services'; - -export const CreateIntegrationAssistant = React.memo(() => { - const [state, dispatch] = useReducer(reducer, initialState); - - const { generateCel: isGenerateCelEnabled } = ExperimentalFeaturesService.get(); - - const telemetry = useTelemetry(); - useEffect(() => { - telemetry.reportAssistantOpen(); - }, [telemetry]); - - const actions = useMemo<Actions>( - () => ({ - setStep: (payload) => { - dispatch({ type: 'SET_STEP', payload }); - }, - setConnector: (payload) => { - dispatch({ type: 'SET_CONNECTOR', payload }); - }, - setIntegrationSettings: (payload) => { - dispatch({ type: 'SET_INTEGRATION_SETTINGS', payload }); - }, - setIsGenerating: (payload) => { - dispatch({ type: 'SET_IS_GENERATING', payload }); - }, - setHasCelInput: (payload) => { - dispatch({ type: 'SET_HAS_CEL_INPUT', payload }); - }, - setResult: (payload) => { - dispatch({ type: 'SET_GENERATED_RESULT', payload }); - }, - setCelInputResult: (payload) => { - dispatch({ type: 'SET_CEL_INPUT_RESULT', payload }); - }, - }), - [] - ); - - const isNextStepEnabled = useMemo(() => { - if (state.step === 1) { - return isConnectorStepReady(state); - } else if (state.step === 2) { - return isIntegrationStepReady(state); - } else if (state.step === 3) { - return isDataStreamStepReady(state); - } else if (state.step === 4) { - return isReviewStepReady(state); - } else if (isGenerateCelEnabled && state.step === 5) { - return isCelInputStepReady(state); - } else if (isGenerateCelEnabled && state.step === 6) { - return isCelReviewStepReady(state); - } - return false; - }, [state, isGenerateCelEnabled]); - - return ( - <ActionsProvider value={actions}> - <KibanaPageTemplate> - <Header currentStep={state.step} isGenerating={state.isGenerating} /> - <KibanaPageTemplate.Section grow paddingSize="l"> - {state.step === 1 && <ConnectorStep connector={state.connector} />} - {state.step === 2 && <IntegrationStep integrationSettings={state.integrationSettings} />} - {state.step === 3 && ( - <DataStreamStep - integrationSettings={state.integrationSettings} - connector={state.connector} - isGenerating={state.isGenerating} - /> - )} - {state.step === 4 && ( - <ReviewStep - integrationSettings={state.integrationSettings} - isGenerating={state.isGenerating} - result={state.result} - /> - )} - {state.step === 5 && - (isGenerateCelEnabled && state.hasCelInput ? ( - <CelInputStep - integrationSettings={state.integrationSettings} - connector={state.connector} - isGenerating={state.isGenerating} - /> - ) : ( - <DeployStep - integrationSettings={state.integrationSettings} - result={state.result} - connector={state.connector} - /> - ))} - - {isGenerateCelEnabled && state.celInputResult && state.step === 6 && ( - <ReviewCelStep - isGenerating={state.isGenerating} - celInputResult={state.celInputResult} - /> - )} - {isGenerateCelEnabled && state.step === 7 && ( - <DeployStep - integrationSettings={state.integrationSettings} - result={state.result} - celInputResult={state.celInputResult} - connector={state.connector} - /> - )} - </KibanaPageTemplate.Section> - <Footer - currentStep={state.step} - isGenerating={state.isGenerating} - hasCelInput={state.hasCelInput} - isNextStepEnabled={isNextStepEnabled} - /> - </KibanaPageTemplate> - </ActionsProvider> - ); -}); -CreateIntegrationAssistant.displayName = 'CreateIntegrationAssistant'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx deleted file mode 100644 index 1ca79210bb19f..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { render, act, type RenderResult } from '@testing-library/react'; -import { TestProvider } from '../../../../mocks/test_provider'; -import { Footer } from './footer'; -import { ActionsProvider } from '../state'; -import { mockActions } from '../mocks/state'; -import { mockReportEvent } from '../../../../services/telemetry/mocks/service'; -import { TelemetryEventType } from '../../../../services/telemetry/types'; -import { ExperimentalFeaturesService } from '../../../../services'; - -const mockNavigate = jest.fn(); -jest.mock('../../../../common/hooks/use_navigate', () => ({ - ...jest.requireActual('../../../../common/hooks/use_navigate'), - useNavigate: () => mockNavigate, -})); - -jest.mock('../../../../services'); -const mockedExperimentalFeaturesService = jest.mocked(ExperimentalFeaturesService); - -const wrapper: React.FC<React.PropsWithChildren<{}>> = ({ children }) => ( - <TestProvider> - <ActionsProvider value={mockActions}>{children}</ActionsProvider> - </TestProvider> -); - -describe('Footer', () => { - beforeEach(() => { - jest.clearAllMocks(); - - mockedExperimentalFeaturesService.get.mockReturnValue({ - generateCel: false, - } as never); - }); - - describe('when rendered', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={1} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - it('should render footer buttons component', () => { - expect(result.queryByTestId('buttonsFooter')).toBeInTheDocument(); - }); - - it('should render cancel button', () => { - expect(result.queryByTestId('buttonsFooter-cancelButton')).toBeInTheDocument(); - }); - - it('should render back button', () => { - expect(result.queryByTestId('buttonsFooter-backButton')).toBeInTheDocument(); - }); - - it('should render next button', () => { - expect(result.queryByTestId('buttonsFooter-nextButton')).toBeInTheDocument(); - }); - }); - - describe('when step is 1', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={1} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - describe('when next button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-nextButton').click(); - }); - }); - - it('should set step 2', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(2); - }); - - it('should report telemetry', () => { - expect(mockReportEvent).toHaveBeenCalledWith( - TelemetryEventType.IntegrationAssistantStepComplete, - { - sessionId: expect.any(String), - step: 1, - stepName: 'Connector Step', - durationMs: expect.any(Number), - sessionElapsedTime: expect.any(Number), - } - ); - }); - }); - - describe('when back button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-backButton').click(); - }); - }); - - it('should navigate to landing', () => { - expect(mockNavigate).toHaveBeenCalledWith('landing'); - }); - }); - }); - - describe('when step is 2', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={2} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - describe('when next button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-nextButton').click(); - }); - }); - - it('should set step 3', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(3); - }); - - it('should report telemetry', () => { - expect(mockReportEvent).toHaveBeenCalledWith( - TelemetryEventType.IntegrationAssistantStepComplete, - { - sessionId: expect.any(String), - step: 2, - stepName: 'Integration Step', - durationMs: expect.any(Number), - sessionElapsedTime: expect.any(Number), - } - ); - }); - }); - - describe('when back button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-backButton').click(); - }); - }); - - it('should set step 1', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(1); - }); - }); - }); - - describe('when step is 3', () => { - describe('when it is not generating', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={3} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - describe('when next button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-nextButton').click(); - }); - }); - - it('should set step 4', () => { - expect(mockActions.setIsGenerating).toHaveBeenCalledWith(true); - }); - - it('should report telemetry', () => { - expect(mockReportEvent).toHaveBeenCalledWith( - TelemetryEventType.IntegrationAssistantStepComplete, - { - sessionId: expect.any(String), - step: 3, - stepName: 'DataStream Step', - durationMs: expect.any(Number), - sessionElapsedTime: expect.any(Number), - } - ); - }); - }); - - describe('when back button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-backButton').click(); - }); - }); - - it('should set step 2', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(2); - }); - }); - }); - - describe('when it is generating', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={3} isGenerating={true} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - it('should render the loader', () => { - expect(result.queryByTestId('generatingLoader')).toBeInTheDocument(); - }); - }); - }); - - describe('when step is 4', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={4} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - describe('when next button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-nextButton').click(); - }); - }); - - it('should set step 5', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(5); - }); - - it('should report telemetry', () => { - expect(mockReportEvent).toHaveBeenCalledWith( - TelemetryEventType.IntegrationAssistantStepComplete, - { - sessionId: expect.any(String), - step: 4, - stepName: 'Review Step', - durationMs: expect.any(Number), - sessionElapsedTime: expect.any(Number), - } - ); - }); - }); - - describe('when back button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-backButton').click(); - }); - }); - - it('should set step 3', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(3); - }); - }); - }); - - describe('when next step is disabled', () => { - let result: RenderResult; - beforeEach(() => { - result = render(<Footer currentStep={1} isGenerating={false} hasCelInput={false} />, { - wrapper, - }); - }); - it('should render next button disabled', () => { - expect(result.queryByTestId('buttonsFooter-nextButton')).toBeDisabled(); - }); - }); -}); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx deleted file mode 100644 index 839d751e6f380..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiLoadingSpinner } from '@elastic/eui'; -import React, { useCallback, useMemo } from 'react'; -import { ButtonsFooter } from '../../../../common/components/buttons_footer'; -import { useNavigate, Page } from '../../../../common/hooks/use_navigate'; -import { useTelemetry } from '../../telemetry'; -import { useActions, type State } from '../state'; -import * as i18n from './translations'; -import { ExperimentalFeaturesService } from '../../../../services'; - -// Generation button for Step 3 -const AnalyzeButtonText = React.memo<{ isGenerating: boolean }>(({ isGenerating }) => { - if (!isGenerating) { - return <>{i18n.ANALYZE_LOGS}</>; - } - return ( - <> - <EuiLoadingSpinner size="s" data-test-subj="generatingLoader" /> - {i18n.LOADING} - </> - ); -}); -AnalyzeButtonText.displayName = 'AnalyzeButtonText'; - -// Generation button for Step 5 -const AnalyzeCelButtonText = React.memo<{ isGenerating: boolean }>(({ isGenerating }) => { - if (!isGenerating) { - return <>{i18n.ANALYZE_CEL}</>; - } - return ( - <> - <EuiLoadingSpinner size="s" data-test-subj="generatingLoader" /> - {i18n.LOADING} - </> - ); -}); -AnalyzeCelButtonText.displayName = 'AnalyzeCelButtonText'; - -interface FooterProps { - currentStep: State['step']; - isGenerating: State['isGenerating']; - hasCelInput: State['hasCelInput']; - isNextStepEnabled?: boolean; -} - -export const Footer = React.memo<FooterProps>( - ({ currentStep, isGenerating, hasCelInput, isNextStepEnabled = false }) => { - const telemetry = useTelemetry(); - const { setStep, setIsGenerating } = useActions(); - const navigate = useNavigate(); - - const { generateCel: isGenerateCelEnabled } = ExperimentalFeaturesService.get(); - - const onBack = useCallback(() => { - if (currentStep === 1) { - navigate(Page.landing); - } else { - setStep(currentStep - 1); - } - }, [currentStep, navigate, setStep]); - - const onNext = useCallback(() => { - telemetry.reportAssistantStepComplete({ step: currentStep }); - if (currentStep === 3 || currentStep === 5) { - setIsGenerating(true); - } else { - setStep(currentStep + 1); - } - }, [currentStep, setIsGenerating, setStep, telemetry]); - - const nextButtonText = useMemo(() => { - if (currentStep === 3) { - return <AnalyzeButtonText isGenerating={isGenerating} />; - } - if (currentStep === 4 && (!isGenerateCelEnabled || !hasCelInput)) { - return i18n.ADD_TO_ELASTIC; - } - if (currentStep === 5 && isGenerateCelEnabled && hasCelInput) { - return <AnalyzeCelButtonText isGenerating={isGenerating} />; - } - if (currentStep === 6 && isGenerateCelEnabled) { - return i18n.ADD_TO_ELASTIC; - } - }, [currentStep, isGenerating, hasCelInput, isGenerateCelEnabled]); - - if (currentStep === 7 || (currentStep === 5 && (!isGenerateCelEnabled || !hasCelInput))) { - return <ButtonsFooter cancelButtonText={i18n.CLOSE} />; - } - return ( - <ButtonsFooter - isNextDisabled={!isNextStepEnabled || isGenerating} - onBack={onBack} - onNext={onNext} - nextButtonText={nextButtonText} - /> - ); - } -); -Footer.displayName = 'Footer'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts deleted file mode 100644 index c25a78a35416e..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts +++ /dev/null @@ -1,438 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Pipeline, Docs, SamplesFormat } from '../../../../../common'; -import type { Actions, State } from '../state'; -import type { AIConnector } from '../types'; - -const result: { pipeline: Pipeline; docs: Docs; samplesFormat: SamplesFormat } = { - pipeline: { - description: 'Pipeline to process my_integration my_data_stream_title logs', - processors: [ - { - set: { - field: 'ecs.version', - tag: 'set_ecs_version', - value: '8.11.0', - }, - }, - { - rename: { - field: 'message', - target_field: 'event.original', - tag: 'rename_message', - ignore_missing: true, - if: 'ctx.event?.original == null', - }, - }, - { - remove: { - field: 'message', - ignore_missing: true, - tag: 'remove_message', - if: 'ctx.event?.original != null', - }, - }, - { - json: { - field: 'event.original', - tag: 'json_original', - target_field: 'my_integration.my_data_stream_title', - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.event', - target_field: 'event.action', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.uid', - target_field: 'event.id', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.code', - target_field: 'event.code', - ignore_missing: true, - }, - }, - { - date: { - field: 'my_integration.my_data_stream_title.time', - target_field: '@timestamp', - formats: ['ISO8601'], - if: 'ctx.my_integration?.my_data_stream_title?.time != null', - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.user', - target_field: 'user.name', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.user_agent', - target_field: 'user_agent.original', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.addr.remote', - target_field: 'source.address', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.server_hostname', - target_field: 'destination.domain', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.proto', - target_field: 'network.transport', - ignore_missing: true, - }, - }, - { - script: { - description: 'Drops null/empty values recursively.', - tag: 'script_drop_null_empty_values', - lang: 'painless', - source: - 'boolean dropEmptyFields(Object object) {\n if (object == null || object == "") {\n return true;\n } else if (object instanceof Map) {\n ((Map) object).values().removeIf(value -> dropEmptyFields(value));\n return (((Map) object).size() == 0);\n } else if (object instanceof List) {\n ((List) object).removeIf(value -> dropEmptyFields(value));\n return (((List) object).length == 0);\n }\n return false;\n}\ndropEmptyFields(ctx);\n', - }, - }, - { - geoip: { - field: 'source.ip', - tag: 'geoip_source_ip', - target_field: 'source.geo', - ignore_missing: true, - }, - }, - { - geoip: { - ignore_missing: true, - database_file: 'GeoLite2-ASN.mmdb', - field: 'source.ip', - tag: 'geoip_source_asn', - target_field: 'source.as', - properties: ['asn', 'organization_name'], - }, - }, - { - rename: { - field: 'source.as.asn', - tag: 'rename_source_as_asn', - target_field: 'source.as.number', - ignore_missing: true, - }, - }, - { - rename: { - field: 'source.as.organization_name', - tag: 'rename_source_as_organization_name', - target_field: 'source.as.organization.name', - ignore_missing: true, - }, - }, - { - geoip: { - field: 'destination.ip', - tag: 'geoip_destination_ip', - target_field: 'destination.geo', - ignore_missing: true, - }, - }, - { - geoip: { - database_file: 'GeoLite2-ASN.mmdb', - field: 'destination.ip', - tag: 'geoip_destination_asn', - target_field: 'destination.as', - properties: ['asn', 'organization_name'], - ignore_missing: true, - }, - }, - { - rename: { - field: 'destination.as.asn', - tag: 'rename_destination_as_asn', - target_field: 'destination.as.number', - ignore_missing: true, - }, - }, - { - append: { - field: 'event.type', - value: ['start'], - allow_duplicates: false, - if: "ctx.event?.action == 'user.login'", - }, - }, - { - append: { - field: 'event.category', - value: ['authentication'], - allow_duplicates: false, - if: "ctx.event?.action == 'user.login'", - }, - }, - { - append: { - field: 'event.type', - value: ['start'], - allow_duplicates: false, - if: "ctx.event?.action == 'session.start'", - }, - }, - { - append: { - field: 'event.category', - value: ['session'], - allow_duplicates: false, - if: "ctx.event?.action == 'session.start'", - }, - }, - { - append: { - field: 'event.type', - value: ['info'], - allow_duplicates: false, - if: 'ctx.my_integration?.my_data_stream_title?.mfa_device != null', - }, - }, - { - append: { - field: 'event.category', - value: ['authentication'], - allow_duplicates: false, - if: 'ctx.my_integration?.my_data_stream_title?.mfa_device != null', - }, - }, - { - append: { - field: 'related.ip', - value: ['{{{my_integration.my_data_stream_title.addr.remote}}}'], - if: 'ctx?.my_integration?.my_data_stream_title?.addr?.remote != null', - allow_duplicates: false, - }, - }, - { - append: { - field: 'related.user', - value: ['{{{user.name}}}'], - allow_duplicates: false, - }, - }, - { - append: { - field: 'related.hosts', - value: ['{{{destination.domain}}}'], - if: 'ctx?.destination?.domain != null', - allow_duplicates: false, - }, - }, - { - append: { - field: 'related.hosts', - value: ['{{{my_integration.my_data_stream_title.server_labels.hostname}}}'], - if: 'ctx?.my_integration?.my_data_stream_title?.server_labels?.hostname != null', - allow_duplicates: false, - }, - }, - { - rename: { - field: 'destination.as.organization_name', - tag: 'rename_destination_as_organization_name', - target_field: 'destination.as.organization.name', - ignore_missing: true, - }, - }, - { - remove: { - field: 'event.original', - tag: 'remove_original_event', - if: 'ctx?.tags == null || !(ctx.tags.contains("preserve_original_event"))', - ignore_failure: true, - ignore_missing: true, - }, - }, - ], - on_failure: [ - { - append: { - field: 'error.message', - value: - 'Processor {{{_ingest.on_failure_processor_type}}} with tag {{{_ingest.on_failure_processor_tag}}} in pipeline {{{_ingest.on_failure_pipeline}}} failed with message: {{{_ingest.on_failure_message}}}', - }, - }, - { - set: { - field: 'event.kind', - value: 'pipeline_error', - }, - }, - ], - }, - docs: [ - { - '@timestamp': '2024-02-23T18:56:50.628Z', - ecs: { - version: '8.11.0', - }, - my_integration: { - my_data_stream_title: { - cluster_name: 'teleport.ericbeahan.com', - 'addr.remote': '136.61.214.196:50332', - ei: 0, - method: 'local', - required_private_key_policy: 'none', - success: true, - time: '2024-02-23T18:56:50.628Z', - mfa_device: { - mfa_device_type: 'TOTP', - mfa_device_uuid: 'd07bf388-af49-4ec2-b8a4-c8a9e785b70b', - mfa_device_name: 'otp-device', - }, - }, - }, - related: { - user: ['teleport-admin'], - }, - event: { - action: 'user.login', - code: 'T1000I', - id: 'b675d102-fc25-4f7a-bf5d-96468cc176ea', - type: ['start', 'info'], - category: ['authentication'], - }, - user: { - name: 'teleport-admin', - }, - user_agent: { - original: - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36', - }, - tags: [ - '_geoip_database_unavailable_GeoLite2-City.mmdb', - '_geoip_database_unavailable_GeoLite2-ASN.mmdb', - '_geoip_database_unavailable_GeoLite2-City.mmdb', - '_geoip_database_unavailable_GeoLite2-ASN.mmdb', - ], - }, - { - '@timestamp': '2024-02-23T18:56:57.199Z', - ecs: { - version: '8.11.0', - }, - my_integration: { - my_data_stream_title: { - cluster_name: 'teleport.ericbeahan.com', - 'addr.remote': '136.61.214.196:50339', - ei: 0, - private_key_policy: 'none', - login: 'ec2-user', - server_id: 'face0091-2bf1-43fd-a16a-f1514b4119f4', - sid: '293fda2d-2266-4d4d-b9d1-bd5ea9dd9fc3', - user_kind: 1, - server_labels: { - 'teleport.internal/resource-id': 'dccb2999-9fb8-4169-aded-ec7a1c0a26de', - hostname: 'ip-172-31-8-163.us-east-2.compute.internal', - }, - size: '80:25', - namespace: 'default', - session_recording: 'node', - time: '2024-02-23T18:56:57.199Z', - }, - }, - related: { - user: ['teleport-admin'], - hosts: ['ip-172-31-8-163.us-east-2.compute.internal'], - }, - destination: { - domain: 'ip-172-31-8-163.us-east-2.compute.internal', - }, - event: { - action: 'session.start', - code: 'T2000I', - id: 'fff30583-13be-49e8-b159-32952c6ea34f', - type: ['start'], - category: ['session'], - }, - user: { - name: 'teleport-admin', - }, - network: { - transport: 'ssh', - }, - tags: [ - '_geoip_database_unavailable_GeoLite2-City.mmdb', - '_geoip_database_unavailable_GeoLite2-ASN.mmdb', - '_geoip_database_unavailable_GeoLite2-City.mmdb', - '_geoip_database_unavailable_GeoLite2-ASN.mmdb', - ], - }, - ], - samplesFormat: { name: 'json' }, -}; - -const rawSamples = [ - '{"ei":0,"event":"user.login","uid":"b675d102-fc25-4f7a-bf5d-96468cc176ea","code":"T1000I","time":"2024-02-23T18:56:50.628Z","cluster_name":"teleport.ericbeahan.com","user":"teleport-admin","required_private_key_policy":"none","success":true,"method":"local","mfa_device.mfa_device_name":"otp-device","mfa_device.mfa_device_uuid":"d07bf388-af49-4ec2-b8a4-c8a9e785b70b","mfa_device.mfa_device_type":"TOTP","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36","addr.remote":"136.61.214.196:50332"}', - '{"ei":0,"event":"cert.create","uid":"efd326fc-dd13-4df8-acef-3102c2d717d3","code":"TC000I","time":"2024-02-23T18:56:50.653Z","cluster_name":"teleport.ericbeahan.com","cert_type":"user","identity.user":"teleport-admin","identity.roles":["access","editor"],"identity.logins":["root","ubuntu","ec2-user","-teleport-internal-join"],"identity.expires":"2024-02-24T06:56:50.648137154Z","identity.route_to_cluster":"teleport.ericbeahan.com","identity.traits.aws_role_arns":null,"identity.traits.azure_identities":null,"identity.traits.db_names":null,"identity.traits.db_roles":null,"identity.traits.db_users":null,"identity.traits.gcp_service_accounts":null,"identity.traits.host_user_gid":[""],"identity.traits.host_user_uid":[""],"identity.traits.kubernetes_groups":null,"identity.traits.kubernetes_users":null,"identity.traits.logins":["root","ubuntu","ec2-user"],"identity.traits.windows_logins":null,"identity.teleport_cluster":"teleport.ericbeahan.com","identity.client_ip":"136.61.214.196","identity.prev_identity_expires":"0001-01-01T00:00:00Z","identity.private_key_policy":"none"}', - '{"ei":0,"event":"session.start","uid":"fff30583-13be-49e8-b159-32952c6ea34f","code":"T2000I","time":"2024-02-23T18:56:57.199Z","cluster_name":"teleport.ericbeahan.com","user":"teleport-admin","login":"ec2-user","user_kind":1,"sid":"293fda2d-2266-4d4d-b9d1-bd5ea9dd9fc3","private_key_policy":"none","namespace":"default","server_id":"face0091-2bf1-43fd-a16a-f1514b4119f4","server_hostname":"ip-172-31-8-163.us-east-2.compute.internal","server_labels.hostname":"ip-172-31-8-163.us-east-2.compute.internal","server_labels.teleport.internal/resource-id":"dccb2999-9fb8-4169-aded-ec7a1c0a26de","addr.remote":"136.61.214.196:50339","proto":"ssh","size":"80:25","initial_command":[""],"session_recording":"node"}', -]; -const logo = - 'PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzMyNjlfMjExOTMpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC41IDExLjk5OTdMNC40MDQgMS42ODQyMUMzLjM4Nzc1IC0wLjAzNzA0MDIgMC43NSAwLjY4NDQ2IDAuNzUgMi42ODMyMVYyMS4zMTYyQzAuNzUgMjMuMzE1IDMuMzg3NzUgMjQuMDM2NSA0LjQwNCAyMi4zMTUyTDEwLjUgMTEuOTk5N1oiIGZpbGw9IiNGMDRFOTgiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy4xMTMzIDEyTDEyLjQzNzYgMTMuMTQ0NUw2LjM0MTU2IDIzLjQ2QzYuMjI2ODEgMjMuNjUzNSA2LjA5NzA2IDIzLjgzMDUgNS45NTgzMSAyNEgxMi44NDAzQzE0LjY1MDggMjQgMTYuMzMzMSAyMy4wNjc3IDE3LjI5MjMgMjEuNTMyNUwyMy4yNTAzIDEySDEzLjExMzNaIiBmaWxsPSIjRkE3NDRFIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMjkyNCAyLjQ2NzVDMTYuMzMzMiAwLjkzMjI1IDE0LjY1MDkgMCAxMi44Mzk3IDBINS45NTg0NEM2LjA5NjQ0IDAuMTY5NSA2LjIyNjk0IDAuMzQ2NSA2LjM0MDk0IDAuNTRMMTIuNDM2OSAxMC44NTU1TDEzLjExMzQgMTJIMjMuMjQ5N0wxNy4yOTI0IDIuNDY3NVoiIGZpbGw9IiMzNDM3NDEiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8zMjY5XzIxMTkzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo='; - -export const mockState: State = { - step: 4, - connector: { - id: 'claudeV3OpusUsWest2', - name: 'Claude 3 Opus US-WEST-2', - actionTypeId: '.bedrock', - config: { - apiUrl: 'https://bedrock-runtime.us-west-2.amazonaws.com', - defaultModel: 'anthropic.claude-3-opus-20240229-v1:0', - }, - } as AIConnector, - integrationSettings: { - title: 'Mocked Integration title', - name: 'mocked_integration', - logo, - description: 'Mocked Integration description', - dataStreamTitle: 'Mocked Data Stream Title', - dataStreamName: 'mocked_datastream_name', - dataStreamDescription: 'Mocked Data Stream Description', - inputTypes: ['filestream'], - logSamples: rawSamples, - }, - isGenerating: false, - hasCelInput: false, - result, -}; - -export const mockActions: Actions = { - setStep: jest.fn(), - setConnector: jest.fn(), - setIntegrationSettings: jest.fn(), - setIsGenerating: jest.fn(), - setHasCelInput: jest.fn(), - setResult: jest.fn(), - setCelInputResult: jest.fn(), -}; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts deleted file mode 100644 index 1e7b22128843b..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { createContext, useContext } from 'react'; -import type { Pipeline, Docs, SamplesFormat, CelInput } from '../../../../common'; -import type { AIConnector, IntegrationSettings } from './types'; - -export interface State { - step: number; - connector?: AIConnector; - integrationSettings?: IntegrationSettings; - isGenerating: boolean; - hasCelInput: boolean; - result?: { - pipeline: Pipeline; - docs: Docs; - samplesFormat?: SamplesFormat; - }; - celInputResult?: CelInput; -} - -export const initialState: State = { - step: 1, - connector: undefined, - integrationSettings: undefined, - isGenerating: false, - hasCelInput: false, - result: undefined, -}; - -type Action = - | { type: 'SET_STEP'; payload: State['step'] } - | { type: 'SET_CONNECTOR'; payload: State['connector'] } - | { type: 'SET_INTEGRATION_SETTINGS'; payload: State['integrationSettings'] } - | { type: 'SET_IS_GENERATING'; payload: State['isGenerating'] } - | { type: 'SET_HAS_CEL_INPUT'; payload: State['hasCelInput'] } - | { type: 'SET_GENERATED_RESULT'; payload: State['result'] } - | { type: 'SET_CEL_INPUT_RESULT'; payload: State['celInputResult'] }; - -export const reducer = (state: State, action: Action): State => { - switch (action.type) { - case 'SET_STEP': - return { - ...state, - step: action.payload, - isGenerating: false, - ...(action.payload < state.step && { result: undefined }), // reset the result when we go back - }; - case 'SET_CONNECTOR': - return { ...state, connector: action.payload }; - case 'SET_INTEGRATION_SETTINGS': - return { ...state, integrationSettings: action.payload }; - case 'SET_IS_GENERATING': - return { ...state, isGenerating: action.payload }; - case 'SET_HAS_CEL_INPUT': - return { ...state, hasCelInput: action.payload }; - case 'SET_GENERATED_RESULT': - return { - ...state, - // keep original result as the samplesFormat is not always included in the payload - result: state.result ? { ...state.result, ...action.payload } : action.payload, - }; - case 'SET_CEL_INPUT_RESULT': - return { ...state, celInputResult: action.payload }; - default: - return state; - } -}; - -export interface Actions { - setStep: (payload: State['step']) => void; - setConnector: (payload: State['connector']) => void; - setIntegrationSettings: (payload: State['integrationSettings']) => void; - setIsGenerating: (payload: State['isGenerating']) => void; - setHasCelInput: (payload: State['hasCelInput']) => void; - setResult: (payload: State['result']) => void; - setCelInputResult: (payload: State['celInputResult']) => void; -} - -const ActionsContext = createContext<Actions | undefined>(undefined); -export const ActionsProvider = ActionsContext.Provider; -export const useActions = () => { - const actions = useContext(ActionsContext); - if (!actions) { - throw new Error('useActions must be used within a ActionsProvider'); - } - return actions; -}; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts deleted file mode 100644 index 594f4230164ce..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { State } from '../../state'; - -export const isCelInputStepReady = ({ integrationSettings }: State) => - Boolean( - integrationSettings?.name && - integrationSettings?.dataStreamTitle && - integrationSettings?.dataStreamDescription && - integrationSettings?.dataStreamName && - integrationSettings?.apiDefinition - ); -// TODO add support for not uploading a spec file diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx deleted file mode 100644 index 4ea33cc8668e3..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { useEuiTheme, EuiBadge, EuiFlexGroup, EuiFlexItem, EuiPanel, EuiRadio } from '@elastic/eui'; -import { noop } from 'lodash/fp'; -import { css } from '@emotion/react'; -import { useKibana } from '../../../../../common/hooks/use_kibana'; -import type { AIConnector } from '../../types'; -import { useActions } from '../../state'; - -const useRowCss = () => { - const { euiTheme } = useEuiTheme(); - return css` - &.euiPanel:hover, - &.euiPanel:focus { - box-shadow: none; - transform: none; - } - &.euiPanel:hover { - background-color: ${euiTheme.colors.lightestShade}; - } - .euiRadio { - color: ${euiTheme.colors.primaryText}; - label.euiRadio__label { - padding-left: ${euiTheme.size.xl} !important; - } - } - `; -}; - -interface ConnectorSelectorProps { - connectors: AIConnector[]; - selectedConnectorId: string | undefined; -} -export const ConnectorSelector = React.memo<ConnectorSelectorProps>( - ({ connectors, selectedConnectorId }) => { - const { - triggersActionsUi: { actionTypeRegistry }, - } = useKibana().services; - const { setConnector } = useActions(); - const rowCss = useRowCss(); - return ( - <EuiFlexGroup - alignItems="stretch" - direction="column" - gutterSize="s" - data-test-subj="connectorSelector" - > - {connectors.map((connector) => ( - <EuiFlexItem key={connector.id}> - <EuiPanel - key={connector.id} - onClick={() => setConnector(connector)} - hasShadow={false} - hasBorder - paddingSize="l" - css={rowCss} - data-test-subj={`connectorSelector-${connector.id}`} - > - <EuiFlexGroup direction="row" alignItems="center" justifyContent="spaceBetween"> - <EuiFlexItem> - <EuiRadio - label={connector.name} - id={connector.id} - checked={selectedConnectorId === connector.id} - onChange={noop} - data-test-subj={`connectorSelectorRadio-${connector.id}${ - selectedConnectorId === connector.id ? '-selected' : '' - }`} - /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiBadge color="hollow"> - {actionTypeRegistry.get(connector.actionTypeId).actionTypeTitle} - </EuiBadge> - </EuiFlexItem> - </EuiFlexGroup> - </EuiPanel> - </EuiFlexItem> - ))} - </EuiFlexGroup> - ); - } -); -ConnectorSelector.displayName = 'ConnectorSelector'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx deleted file mode 100644 index c2643ffa9e92c..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback, useEffect, useState } from 'react'; -import { useLoadConnectors } from '@kbn/elastic-assistant'; -import { - EuiFlexGroup, - EuiFlexItem, - EuiLoadingSpinner, - EuiPopover, - EuiLink, - EuiSpacer, - EuiText, - EuiIcon, - useEuiTheme, -} from '@elastic/eui'; -import { - AuthorizationWrapper, - MissingPrivilegesTooltip, -} from '../../../../../common/components/authorization'; -import { useAuthorization } from '../../../../../common/hooks/use_authorization'; -import { useKibana } from '../../../../../common/hooks/use_kibana'; -import { StepContentWrapper } from '../step_content_wrapper'; -import { ConnectorSelector } from './connector_selector'; -import { ConnectorSetup } from './connector_setup'; -import type { AIConnector } from '../../types'; -import { useActions } from '../../state'; -import * as i18n from './translations'; - -/** - * List of allowed action type IDs for the integrations assistant. - */ -const AllowedActionTypeIds = ['.bedrock', '.gen-ai', '.gemini']; - -interface ConnectorStepProps { - connector: AIConnector | undefined; -} -export const ConnectorStep = React.memo<ConnectorStepProps>(({ connector }) => { - const { euiTheme } = useEuiTheme(); - const { http, notifications } = useKibana().services; - const { setConnector } = useActions(); - const [connectors, setConnectors] = useState<AIConnector[]>(); - const { - isLoading, - data: aiConnectors, - refetch: refetchConnectors, - } = useLoadConnectors({ http, toasts: notifications.toasts }); - - useEffect(() => { - if (aiConnectors != null) { - // filter out connectors, this is temporary until we add support for more models - const filteredAiConnectors = aiConnectors.filter(({ actionTypeId }) => - AllowedActionTypeIds.includes(actionTypeId) - ); - setConnectors(filteredAiConnectors); - if (filteredAiConnectors && filteredAiConnectors.length === 1) { - // pre-select the connector if there is only one - setConnector(filteredAiConnectors[0]); - } - } - }, [aiConnectors, setConnector]); - - const onConnectorSaved = useCallback(() => refetchConnectors(), [refetchConnectors]); - - const hasConnectors = !isLoading && connectors?.length; - - return ( - <StepContentWrapper - title={i18n.TITLE} - subtitle={i18n.DESCRIPTION} - right={hasConnectors ? <CreateConnectorPopover onConnectorSaved={onConnectorSaved} /> : null} - > - <EuiFlexGroup direction="column" alignItems="stretch"> - <EuiFlexItem> - {isLoading ? ( - <EuiLoadingSpinner /> - ) : ( - <> - {hasConnectors ? ( - <ConnectorSelector connectors={connectors} selectedConnectorId={connector?.id} /> - ) : ( - <AuthorizationWrapper canCreateConnectors> - <ConnectorSetup - actionTypeIds={AllowedActionTypeIds} - onConnectorSaved={onConnectorSaved} - /> - </AuthorizationWrapper> - )} - </> - )} - </EuiFlexItem> - </EuiFlexGroup> - <EuiSpacer size="m" /> - <EuiText size="s" color="subdued"> - <EuiFlexGroup direction="row" gutterSize="xs" alignItems="flexStart"> - <EuiFlexItem grow={false} css={{ margin: euiTheme.size.xxs }}> - <EuiIcon type="iInCircle" /> - </EuiFlexItem> - <EuiFlexItem>{i18n.SUPPORTED_MODELS_INFO}</EuiFlexItem> - </EuiFlexGroup> - </EuiText> - </StepContentWrapper> - ); -}); -ConnectorStep.displayName = 'ConnectorStep'; - -interface CreateConnectorPopoverProps { - onConnectorSaved: () => void; -} -const CreateConnectorPopover = React.memo<CreateConnectorPopoverProps>(({ onConnectorSaved }) => { - const { canCreateConnectors } = useAuthorization(); - const [isOpen, setIsPopoverOpen] = useState(false); - const openPopover = useCallback(() => setIsPopoverOpen(true), []); - const closePopover = useCallback(() => setIsPopoverOpen(false), []); - - const onConnectorSavedAndClose = useCallback(() => { - onConnectorSaved(); - closePopover(); - }, [onConnectorSaved, closePopover]); - - if (!canCreateConnectors) { - return ( - <MissingPrivilegesTooltip canCreateConnectors> - <EuiLink data-test-subj="createConnectorPopoverButtonDisabled" disabled> - {i18n.CREATE_CONNECTOR} - </EuiLink> - </MissingPrivilegesTooltip> - ); - } - return ( - <EuiPopover - button={ - <EuiText size="s"> - <EuiLink data-test-subj="createConnectorPopoverButton" onClick={openPopover}> - {i18n.CREATE_CONNECTOR} - </EuiLink> - </EuiText> - } - isOpen={isOpen} - closePopover={closePopover} - data-test-subj="createConnectorPopover" - > - <ConnectorSetup - actionTypeIds={AllowedActionTypeIds} - onConnectorSaved={onConnectorSavedAndClose} - onClose={closePopover} - compressed - /> - </EuiPopover> - ); -}); -CreateConnectorPopover.displayName = 'CreateConnectorPopover'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts deleted file mode 100644 index 5b425b0940094..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { State } from '../../state'; - -export const isConnectorStepReady = ({ connector }: State) => connector != null; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts deleted file mode 100644 index 4a40334a72ab2..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { State } from '../../state'; - -export const isDataStreamStepReady = ({ integrationSettings }: State) => - Boolean( - integrationSettings?.name && - integrationSettings?.dataStreamTitle && - integrationSettings?.dataStreamDescription && - integrationSettings?.dataStreamName && - integrationSettings?.logSamples - ); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts deleted file mode 100644 index 80ef605c981b0..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { State } from '../../state'; - -export const isIntegrationStepReady = ({ integrationSettings }: State) => - Boolean(integrationSettings?.title && integrationSettings?.description); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts deleted file mode 100644 index 166c40e8e2614..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { State } from '../../state'; - -export const isCelReviewStepReady = ({ isGenerating, celInputResult }: State) => - isGenerating === false && celInputResult != null; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx deleted file mode 100644 index a40fec082894e..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { EuiLoadingSpinner, EuiPanel } from '@elastic/eui'; -import React from 'react'; -import type { State } from '../../state'; -import { StepContentWrapper } from '../step_content_wrapper'; -import * as i18n from './translations'; -import { CelConfigResults } from './cel_config_results'; - -interface ReviewCelStepProps { - celInputResult: State['celInputResult']; - isGenerating: State['isGenerating']; -} - -export const ReviewCelStep = React.memo<ReviewCelStepProps>(({ isGenerating, celInputResult }) => { - return ( - <StepContentWrapper title={i18n.TITLE} subtitle={i18n.DESCRIPTION}> - <EuiPanel hasShadow={false} hasBorder data-test-subj="reviewCelStep"> - {isGenerating ? ( - <EuiLoadingSpinner size="l" /> - ) : ( - <> - <CelConfigResults celInputResult={celInputResult} /> - </> - )} - </EuiPanel> - </StepContentWrapper> - ); -}); -ReviewCelStep.displayName = 'ReviewCelStep'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts deleted file mode 100644 index b03215c5e8255..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { State } from '../../state'; - -export const isReviewStepReady = ({ isGenerating, result }: State) => - isGenerating === false && result != null; diff --git a/x-pack/plugins/integration_assistant/scripts/draw_graphs.js b/x-pack/plugins/integration_assistant/scripts/draw_graphs.js deleted file mode 100644 index be6fa41e29ac5..0000000000000 --- a/x-pack/plugins/integration_assistant/scripts/draw_graphs.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -require('../../../../src/setup_node_env'); -require('./draw_graphs_script').drawGraphs(); diff --git a/x-pack/plugins/integration_assistant/server/config.ts b/x-pack/plugins/integration_assistant/server/config.ts deleted file mode 100644 index 04ad9f96b517b..0000000000000 --- a/x-pack/plugins/integration_assistant/server/config.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema, type TypeOf } from '@kbn/config-schema'; -import type { PluginConfigDescriptor } from '@kbn/core/server'; - -export const configSchema = schema.object({ - enabled: schema.boolean({ defaultValue: true }), - /** - * For internal use. A list of string values (comma delimited) that will enable experimental - * type of functionality that is not yet released. Valid values for this settings need to - * be defined in: - * `x-pack/plugins/integration_assistant/common/experimental_features.ts` - * under the `allowedExperimentalValues` object - * - * @example - * xpack.integration_assistant.enableExperimental: - * - someCrazyFeature - * - someEvenCrazierFeature - */ - enableExperimental: schema.arrayOf(schema.string(), { - defaultValue: () => [], - }), -}); -export type IntegrationAssistantConfigType = TypeOf<typeof configSchema>; - -export const config: PluginConfigDescriptor<IntegrationAssistantConfigType> = { - exposeToBrowser: { - enableExperimental: true, - }, - schema: configSchema, -}; diff --git a/x-pack/plugins/integration_assistant/server/constants.ts b/x-pack/plugins/integration_assistant/server/constants.ts deleted file mode 100644 index 83577961095d7..0000000000000 --- a/x-pack/plugins/integration_assistant/server/constants.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export const ROUTE_HANDLER_TIMEOUT = 10 * 60 * 1000; // 10 * 60 seconds = 10 minutes -export const LANG_CHAIN_TIMEOUT = ROUTE_HANDLER_TIMEOUT - 10_000; // 9 minutes 50 seconds -export const CONNECTOR_TIMEOUT = LANG_CHAIN_TIMEOUT - 10_000; // 9 minutes 40 seconds -export enum LogFormat { - JSON = 'json', - NDJSON = 'ndjson', - CSV = 'csv', - STRUCTURED = 'structured', - UNSTRUCTURED = 'unstructured', -} diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/build_integration.test.ts b/x-pack/plugins/integration_assistant/server/integration_builder/build_integration.test.ts deleted file mode 100644 index eaa50e87d41b4..0000000000000 --- a/x-pack/plugins/integration_assistant/server/integration_builder/build_integration.test.ts +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { buildPackage, renderPackageManifestYAML } from './build_integration'; -import { testIntegration } from '../../__jest__/fixtures/build_integration'; -import { generateUniqueId, ensureDirSync, createSync } from '../util'; -import { createDataStream } from './data_stream'; -import { createFieldMapping } from './fields'; -import { createAgentInput } from './agent'; -import { createPipeline } from './pipeline'; -import { DataStream, Docs, InputType, Pipeline, Integration } from '../../common'; -import yaml from 'js-yaml'; -import { createReadme } from './readme_files'; - -const mockedDataPath = 'path'; -const mockedId = 123; - -jest.mock('../util'); -jest.mock('./data_stream'); -jest.mock('./fields'); -jest.mock('./agent'); -jest.mock('./pipeline'); -jest.mock('./readme_files'); - -(createFieldMapping as jest.Mock).mockReturnValue([]); -(createDataStream as jest.Mock).mockReturnValue([]); - -(generateUniqueId as jest.Mock).mockReturnValue(mockedId); - -jest.mock('@kbn/utils', () => ({ - getDataPath: jest.fn(() => mockedDataPath), -})); - -jest.mock('adm-zip', () => { - return jest.fn().mockImplementation(() => ({ - addLocalFolder: jest.fn(), - toBuffer: jest.fn(), - })); -}); - -describe('buildPackage', () => { - const packagePath = `${mockedDataPath}/integration-assistant-${mockedId}`; - const integrationPath = `${packagePath}/integration-1.0.0`; - - const firstDatastreamName = 'datastream_1'; - const secondDatastreamName = 'datastream_2'; - - const firstDataStreamInputTypes: InputType[] = ['filestream', 'kafka']; - const secondDataStreamInputTypes: InputType[] = ['kafka']; - - const firstDataStreamDocs: Docs = [ - { - key: 'foo', - anotherKey: 'bar', - }, - ]; - const secondDataStreamDocs: Docs = [{}]; - - const firstDataStreamPipeline: Pipeline = { - processors: [ - { - set: { - field: 'ecs.version', - value: '8.11.0', - }, - }, - ], - }; - const secondDataStreamPipeline: Pipeline = { processors: [] }; - - const firstDataStream: DataStream = { - name: firstDatastreamName, - title: 'Datastream_1', - description: 'Datastream_1 description', - inputTypes: firstDataStreamInputTypes, - docs: firstDataStreamDocs, - rawSamples: ['{"test1": "test1"}'], - pipeline: firstDataStreamPipeline, - samplesFormat: { name: 'ndjson', multiline: false }, - }; - - const secondDataStream: DataStream = { - name: secondDatastreamName, - title: 'Datastream_2', - description: 'Datastream_2 description', - inputTypes: secondDataStreamInputTypes, - docs: secondDataStreamDocs, - rawSamples: ['{"test1": "test1"}'], - pipeline: secondDataStreamPipeline, - samplesFormat: { name: 'ndjson', multiline: false }, - }; - - const firstDatastreamPath = `${integrationPath}/data_stream/${firstDatastreamName}`; - const secondDatastreamPath = `${integrationPath}/data_stream/${secondDatastreamName}`; - - testIntegration.dataStreams = [firstDataStream, secondDataStream]; - - beforeEach(async () => { - jest.clearAllMocks(); - await buildPackage(testIntegration); - }); - - it('Should create expected directories and files', async () => { - // Package & integration folders - expect(ensureDirSync).toHaveBeenCalledWith(packagePath); - expect(ensureDirSync).toHaveBeenCalledWith(integrationPath); - - // _dev files - expect(ensureDirSync).toHaveBeenCalledWith(`${integrationPath}/_dev/build`); - expect(createSync).toHaveBeenCalledWith( - `${integrationPath}/_dev/build/build.yml`, - expect.any(String) - ); - - // Changelog file - expect(createSync).toHaveBeenCalledWith(`${integrationPath}/changelog.yml`, expect.any(String)); - - // Manifest files - expect(createSync).toHaveBeenCalledWith(`${integrationPath}/manifest.yml`, expect.any(String)); - }); - - it('Should create logo files if info is present in the integration', async () => { - testIntegration.logo = 'logo'; - - await buildPackage(testIntegration); - - expect(ensureDirSync).toHaveBeenCalledWith(`${integrationPath}/img`); - expect(createSync).toHaveBeenCalledWith(`${integrationPath}/img/logo.svg`, expect.any(Buffer)); - }); - - it('Should not create logo files if info is not present in the integration', async () => { - jest.clearAllMocks(); - testIntegration.logo = undefined; - - await buildPackage(testIntegration); - - expect(ensureDirSync).not.toHaveBeenCalledWith(`${integrationPath}/img`); - expect(createSync).not.toHaveBeenCalledWith( - `${integrationPath}/img/logo.svg`, - expect.any(Buffer) - ); - }); - - it('Should call createDataStream for each datastream', async () => { - expect(createDataStream).toHaveBeenCalledWith( - 'integration', - firstDatastreamPath, - firstDataStream - ); - expect(createDataStream).toHaveBeenCalledWith( - 'integration', - secondDatastreamPath, - secondDataStream - ); - }); - - it('Should call createAgentInput for each datastream', async () => { - expect(createAgentInput).toHaveBeenCalledWith(firstDatastreamPath, firstDataStreamInputTypes); - expect(createAgentInput).toHaveBeenCalledWith(secondDatastreamPath, secondDataStreamInputTypes); - }); - - it('Should call createPipeline for each datastream', async () => { - expect(createPipeline).toHaveBeenCalledWith(firstDatastreamPath, firstDataStreamPipeline); - expect(createPipeline).toHaveBeenCalledWith(secondDatastreamPath, secondDataStreamPipeline); - }); - - it('Should call createFieldMapping for each datastream', async () => { - expect(createFieldMapping).toHaveBeenCalledWith( - 'integration', - firstDatastreamName, - firstDatastreamPath, - firstDataStreamDocs - ); - expect(createFieldMapping).toHaveBeenCalledWith( - 'integration', - secondDatastreamName, - secondDatastreamPath, - secondDataStreamDocs - ); - }); - - it('Should call createReadme once with sorted fields', async () => { - jest.clearAllMocks(); - - const firstDSFieldsMapping = [{ name: 'name a', description: 'description 1', type: 'type 1' }]; - - const firstDataStreamFields = [ - { name: 'name b', description: 'description 1', type: 'type 1' }, - ]; - - const secondDSFieldsMapping = [ - { name: 'name c', description: 'description 2', type: 'type 2' }, - { name: 'name e', description: 'description 3', type: 'type 3' }, - ]; - - const secondDataStreamFields = [ - { name: 'name d', description: 'description 2', type: 'type 2' }, - ]; - - (createFieldMapping as jest.Mock).mockReturnValueOnce(firstDSFieldsMapping); - (createDataStream as jest.Mock).mockReturnValueOnce(firstDataStreamFields); - - (createFieldMapping as jest.Mock).mockReturnValueOnce(secondDSFieldsMapping); - (createDataStream as jest.Mock).mockReturnValueOnce(secondDataStreamFields); - - await buildPackage(testIntegration); - - expect(createReadme).toHaveBeenCalledWith( - integrationPath, - testIntegration.name, - testIntegration.dataStreams, - [ - { - datastream: firstDatastreamName, - fields: [ - { name: 'name a', description: 'description 1', type: 'type 1' }, - - { name: 'name b', description: 'description 1', type: 'type 1' }, - ], - }, - { - datastream: secondDatastreamName, - fields: [ - { name: 'name c', description: 'description 2', type: 'type 2' }, - { name: 'name d', description: 'description 2', type: 'type 2' }, - { name: 'name e', description: 'description 3', type: 'type 3' }, - ], - }, - ] - ); - }); -}); - -describe('renderPackageManifestYAML', () => { - test('generates the package manifest correctly', () => { - const integration: Integration = { - title: 'Sample Integration', - name: 'sample-integration', - description: - ' This is a sample integration\n\nWith multiple lines and weird spacing. \n\n And more lines ', - logo: 'some-logo.png', - dataStreams: [ - { - name: 'data-stream-1', - title: 'Data Stream 1', - description: 'This is data stream 1', - inputTypes: ['filestream'], - rawSamples: ['{field: "value"}'], - pipeline: { - processors: [], - }, - docs: [], - samplesFormat: { name: 'ndjson', multiline: false }, - }, - { - name: 'data-stream-2', - title: 'Data Stream 2', - description: - 'This is data stream 2\nWith multiple lines of description\nBut otherwise, nothing special', - inputTypes: ['aws-cloudwatch'], - pipeline: { - processors: [], - }, - rawSamples: ['field="value"'], - docs: [], - samplesFormat: { name: 'structured' }, - }, - ], - }; - - const manifestContent = renderPackageManifestYAML(integration); - - // The manifest content must be parseable as YAML. - const manifest = yaml.load(manifestContent) as Record<string, unknown>; - - expect(manifest).toBeDefined(); - expect(manifest.title).toBe(integration.title); - expect(manifest.name).toBe(integration.name); - expect(manifest.type).toBe('integration'); - expect(manifest.description).toBe(integration.description); - expect(Array.isArray(manifest.icons)).toBe(true); - expect((manifest.icons as object[]).length).toBe(1); - expect((manifest.icons as object[])[0]).toEqual({ - src: '/img/logo.svg', - title: 'Sample Integration Logo', - size: '32x32', - type: 'image/svg+xml', - }); - }); -}); diff --git a/x-pack/plugins/integration_assistant/tsconfig.json b/x-pack/plugins/integration_assistant/tsconfig.json deleted file mode 100644 index 9bd6ddaae8415..0000000000000 --- a/x-pack/plugins/integration_assistant/tsconfig.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "index.ts", - "public/**/*", - "server/**/*.ts", - "common/**/*.ts", - "scripts/**/*.ts", - "__jest__/**/*", - "../../typings/**/*" - ], - "exclude": ["target/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/config-schema", - "@kbn/langchain", - "@kbn/core-elasticsearch-server", - "@kbn/actions-plugin", - "@kbn/data-plugin", - "@kbn/i18n-react", - "@kbn/shared-ux-page-kibana-template", - "@kbn/i18n", - "@kbn/core-http-browser", - "@kbn/elastic-assistant", - "@kbn/kibana-react-plugin", - "@kbn/code-editor", - "@kbn/monaco", - "@kbn/triggers-actions-ui-plugin", - "@kbn/shared-ux-router", - "@kbn/zod-helpers", - "@kbn/stack-connectors-plugin", - "@kbn/core-analytics-browser", - "@kbn/logging-mocks", - "@kbn/licensing-plugin", - "@kbn/core-http-request-handler-context-server", - "@kbn/core-http-router-server-mocks", - "@kbn/core-http-server", - "@kbn/kibana-utils-plugin", - "@kbn/utils", - "@kbn/zod", - "@kbn/tooling-log" - ] -} diff --git a/x-pack/plugins/kubernetes_security/jest.config.js b/x-pack/plugins/kubernetes_security/jest.config.js deleted file mode 100644 index d42855eeab9de..0000000000000 --- a/x-pack/plugins/kubernetes_security/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/kubernetes_security'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/kubernetes_security', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/kubernetes_security/{common,public,server}/**/*.{ts,tsx}', - ], - setupFiles: ['jest-canvas-mock'], -}; diff --git a/x-pack/plugins/kubernetes_security/package.json b/x-pack/plugins/kubernetes_security/package.json deleted file mode 100644 index 0f322f0649f66..0000000000000 --- a/x-pack/plugins/kubernetes_security/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "author": "Elastic", - "name": "@kbn/kubernetes-security-plugin", - "version": "1.0.0", - "private": true, - "license": "Elastic License 2.0", - "scripts": { - "test:jest": "node ../../scripts/jest", - "test:coverage": "node ../../scripts/jest --coverage" - } -} diff --git a/x-pack/plugins/kubernetes_security/tsconfig.json b/x-pack/plugins/kubernetes_security/tsconfig.json deleted file mode 100644 index cf3d895eb40b9..0000000000000 --- a/x-pack/plugins/kubernetes_security/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - // add all the folders containg files to be compiled - "common/**/*", - "public/**/*", - "server/**/*", - "server/**/*.json", - "scripts/**/*", - "package.json", - "storybook/**/*", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - // add references to other TypeScript projects the plugin depends on - - // requiredPlugins from ./kibana.json - "@kbn/data-plugin", - - // optionalPlugins from ./kibana.json - - // requiredBundles from ./kibana.json - "@kbn/kibana-react-plugin", - "@kbn/rule-registry-plugin", - "@kbn/session-view-plugin", - "@kbn/i18n", - "@kbn/timelines-plugin", - "@kbn/es-query", - "@kbn/ui-theme", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/securitysolution-es-utils", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx b/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx index f1ccacc37db53..f287e4426eaaa 100644 --- a/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx +++ b/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx @@ -52,6 +52,7 @@ export type SaveModalContainerProps = { | 'analytics' | 'i18n' | 'theme' + | 'userProfile' | 'stateTransfer' | 'savedObjectStore' >; @@ -238,6 +239,7 @@ export type SaveVisualizationProps = Simplify< | 'analytics' | 'i18n' | 'theme' + | 'userProfile' | 'notifications' | 'stateTransfer' | 'attributeService' diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/layer_actions.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/layer_actions.tsx index 2ab2c8e78890c..9140c90f67d60 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/layer_actions.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/layer_actions.tsx @@ -59,7 +59,7 @@ export const getSharedActions = ({ isTextBasedLanguage?: boolean; hasLayerSettings: boolean; openLayerSettings: () => void; - core: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'>; + core: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'>; customRemoveModalText?: { title?: string; description?: string }; }) => [ getOpenLayerSettingsAction({ diff --git a/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.test.ts b/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.test.ts index 8719c54f6f1dd..d677e052ae451 100644 --- a/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.test.ts +++ b/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.test.ts @@ -8,11 +8,10 @@ import { getColorMappingTelemetryEvents } from './color_telemetry_helpers'; import { ColorMapping, - EUIAmsterdamColorBlindPalette, - ElasticBrandPalette, DEFAULT_COLOR_MAPPING_CONFIG, DEFAULT_OTHER_ASSIGNMENT_INDEX, } from '@kbn/coloring'; +import { KbnPalette } from '@kbn/palettes'; import { faker } from '@faker-js/faker'; const exampleAssignment = ( @@ -24,7 +23,7 @@ const exampleAssignment = ( type === 'categorical' ? { type: 'categorical', - paletteId: ElasticBrandPalette.id, + paletteId: KbnPalette.ElasticClassic, colorIndex: 0, } : { @@ -57,13 +56,13 @@ const MANUAL_COLOR_MAPPING_CONFIG: ColorMapping.Config = { }, color: { type: 'categorical', - paletteId: ElasticBrandPalette.id, + paletteId: KbnPalette.ElasticClassic, colorIndex: 2, }, touched: true, }, ], - paletteId: ElasticBrandPalette.id, + paletteId: KbnPalette.ElasticClassic, colorMode: { type: 'categorical', }, @@ -74,7 +73,7 @@ const specialAssignmentsPalette: ColorMapping.Config['specialAssignments'] = [ ...DEFAULT_COLOR_MAPPING_CONFIG.specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX], color: { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Kibana7, colorIndex: 0, }, }, @@ -112,7 +111,7 @@ describe('color_telemetry_helpers', () => { }); it('settings (default): unassigned terms loop, default palette returns correct events', () => { expect(getColorMappingTelemetryEvents(DEFAULT_COLOR_MAPPING_CONFIG)).toEqual([ - 'color_mapping_palette_eui_amsterdam_color_blind', + 'color_mapping_palette_default', 'color_mapping_unassigned_terms_loop', ]); }); @@ -126,7 +125,7 @@ describe('color_telemetry_helpers', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Kibana7, colorIndex: 0, touched: false, }, diff --git a/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.ts b/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.ts index 049caea8fb12e..4f956e54c47f6 100644 --- a/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.ts +++ b/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.ts @@ -5,8 +5,9 @@ * 2.0. */ -import { ColorMapping, NeutralPalette, DEFAULT_OTHER_ASSIGNMENT_INDEX } from '@kbn/coloring'; +import { ColorMapping, DEFAULT_OTHER_ASSIGNMENT_INDEX } from '@kbn/coloring'; import { isEqual } from 'lodash'; +import { KbnPalette } from '@kbn/palettes'; import { nonNullable } from '../utils'; const COLOR_MAPPING_PREFIX = 'color_mapping_'; @@ -83,8 +84,8 @@ const getUnassignedTermsType = ( : specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX]?.color.type === 'loop' ? 'loop' : specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX]?.color.paletteId === - NeutralPalette.id - ? NeutralPalette.id + KbnPalette.Neutral + ? KbnPalette.Neutral : 'palette' }` : undefined; diff --git a/x-pack/plugins/lens/public/react_embeddable/data_loader.ts b/x-pack/plugins/lens/public/react_embeddable/data_loader.ts index 64b7ca4501b08..ac69b79b42230 100644 --- a/x-pack/plugins/lens/public/react_embeddable/data_loader.ts +++ b/x-pack/plugins/lens/public/react_embeddable/data_loader.ts @@ -6,8 +6,7 @@ */ import type { DefaultInspectorAdapters } from '@kbn/expressions-plugin/common'; -import { fetch$, type FetchContext } from '@kbn/presentation-publishing'; -import { apiPublishesSearchSession } from '@kbn/presentation-publishing/interfaces/fetch/publishes_search_session'; +import { apiPublishesUnifiedSearch, fetch$ } from '@kbn/presentation-publishing'; import { type KibanaExecutionContext } from '@kbn/core/public'; import { BehaviorSubject, @@ -21,6 +20,7 @@ import { map, } from 'rxjs'; import fastIsEqual from 'fast-deep-equal'; +import { pick } from 'lodash'; import { getEditPath } from '../../common/constants'; import type { GetStateType, @@ -54,6 +54,24 @@ type ReloadReason = | 'viewMode' | 'searchContext'; +function getSearchContext(parentApi: unknown) { + const unifiedSearch$ = apiPublishesUnifiedSearch(parentApi) + ? pick(parentApi, 'filters$', 'query$', 'timeslice$', 'timeRange$') + : { + filters$: new BehaviorSubject(undefined), + query$: new BehaviorSubject(undefined), + timeslice$: new BehaviorSubject(undefined), + timeRange$: new BehaviorSubject(undefined), + }; + + return { + filters: unifiedSearch$.filters$.getValue(), + query: unifiedSearch$.query$.getValue(), + timeRange: unifiedSearch$.timeRange$.getValue(), + timeslice: unifiedSearch$.timeslice$?.getValue(), + }; +} + /** * The function computes the expression used to render the panel and produces the necessary props * for the ExpressionWrapper component, binding any outer context to them. @@ -112,16 +130,6 @@ export function loadEmbeddableData( } }; - const unifiedSearch$ = new BehaviorSubject< - Pick<FetchContext, 'query' | 'filters' | 'timeRange' | 'timeslice' | 'searchSessionId'> - >({ - query: undefined, - filters: undefined, - timeRange: undefined, - timeslice: undefined, - searchSessionId: undefined, - }); - async function reload( // make reload easier to debug sourceId: ReloadReason @@ -142,8 +150,6 @@ export function loadEmbeddableData( const currentState = getState(); - const { searchSessionId, ...unifiedSearch } = unifiedSearch$.getValue(); - const getExecutionContext = () => { const parentContext = getParentContext(parentApi); const lastState = getState(); @@ -198,7 +204,7 @@ export function loadEmbeddableData( const searchContext = getMergedSearchContext( currentState, - unifiedSearch, + getSearchContext(parentApi), api.timeRange$, parentApi, services @@ -216,7 +222,7 @@ export function loadEmbeddableData( }, renderMode: getRenderMode(parentApi), services, - searchSessionId, + searchSessionId: api.searchSessionId$.getValue(), abortController: internalApi.expressionAbortController$.getValue(), getExecutionContext, logError: getLogError(getExecutionContext), @@ -259,20 +265,8 @@ export function loadEmbeddableData( } const mergedSubscriptions = merge( - // on data change from the parentApi, reload - fetch$(api).pipe( - tap((data) => { - const searchSessionId = apiPublishesSearchSession(parentApi) ? data.searchSessionId : ''; - unifiedSearch$.next({ - query: data.query, - filters: data.filters, - timeRange: data.timeRange, - timeslice: data.timeslice, - searchSessionId, - }); - }), - map(() => 'searchContext' as ReloadReason) - ), + // on search context change, reload + fetch$(api).pipe(map(() => 'searchContext' as ReloadReason)), // On state change, reload // this is used to refresh the chart on inline editing // just make sure to avoid to rerender if there's no substantial change diff --git a/x-pack/plugins/lens/public/react_embeddable/mocks/index.tsx b/x-pack/plugins/lens/public/react_embeddable/mocks/index.tsx index ca8f489a711aa..30a0920f9557d 100644 --- a/x-pack/plugins/lens/public/react_embeddable/mocks/index.tsx +++ b/x-pack/plugins/lens/public/react_embeddable/mocks/index.tsx @@ -116,6 +116,7 @@ const LensApiMock: LensApi = { disabledActionIds: new BehaviorSubject<string[] | undefined>(undefined), setDisabledActionIds: jest.fn(), rendered$: new BehaviorSubject<boolean>(false), + searchSessionId$: new BehaviorSubject<string | undefined>(undefined), }; const LensSerializedStateMock: LensSerializedState = createEmptyLensState( diff --git a/x-pack/plugins/lens/public/react_embeddable/renderer/lens_custom_renderer_component.tsx b/x-pack/plugins/lens/public/react_embeddable/renderer/lens_custom_renderer_component.tsx index eab54a7fa9f9d..70d59fc7486b2 100644 --- a/x-pack/plugins/lens/public/react_embeddable/renderer/lens_custom_renderer_component.tsx +++ b/x-pack/plugins/lens/public/react_embeddable/renderer/lens_custom_renderer_component.tsx @@ -59,6 +59,7 @@ export function LensRenderer({ filters, timeRange, disabledActions, + searchSessionId, hidePanelTitles, ...props }: LensRendererProps) { @@ -72,6 +73,7 @@ export function LensRenderer({ }, []); const disabledActionIds$ = useObservableVariable(disabledActions); const viewMode$ = useObservableVariable(viewMode); + const searchSessionId$ = useObservableVariable(searchSessionId); const hidePanelTitles$ = useObservableVariable(hidePanelTitles); // Lens API will be set once, but when set trigger a reflow to adopt the latest attributes @@ -136,6 +138,7 @@ export function LensRenderer({ ...props, // forward the unified search context ...searchApi, + searchSessionId$, disabledActionIds: disabledActionIds$, setDisabledActionIds: (ids: string[] | undefined) => disabledActionIds$.next(ids), viewMode: viewMode$, diff --git a/x-pack/plugins/lens/public/react_embeddable/types.ts b/x-pack/plugins/lens/public/react_embeddable/types.ts index c860c543570c1..1a4bf45b11f17 100644 --- a/x-pack/plugins/lens/public/react_embeddable/types.ts +++ b/x-pack/plugins/lens/public/react_embeddable/types.ts @@ -65,6 +65,7 @@ import type { AllowedPartitionOverrides } from '@kbn/expression-partition-vis-pl import type { AllowedXYOverrides } from '@kbn/expression-xy-plugin/common'; import type { Action } from '@kbn/ui-actions-plugin/public'; import { PresentationContainer } from '@kbn/presentation-containers'; +import { PublishesSearchSession } from '@kbn/presentation-publishing/interfaces/fetch/publishes_search_session'; import type { LegacyMetricState } from '../../common'; import type { LensDocument } from '../persistence'; import type { LensInspector } from '../lens_inspector_service'; @@ -364,6 +365,8 @@ export type LensApi = Simplify< PublishesBlockingError & // This is used by dashboard/container to show filters/queries on the panel PublishesUnifiedSearch & + // Forward the search session id + PublishesSearchSession & // Let the container know the loading state PublishesDataLoading & // Let the container know when the rendering has completed rendering diff --git a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.test.ts b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.test.ts index 139c6ced456bc..6ddbaff8d7b60 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.test.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.test.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { getKbnPalettes } from '@kbn/palettes'; import { getColorAccessorFn } from './color_mapping_accessor'; jest.mock('@kbn/coloring', () => ({ @@ -15,8 +16,10 @@ jest.mock('@kbn/coloring', () => ({ })); describe('getColorAccessorFn', () => { + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any - const getColorAccessor = getColorAccessorFn('{}', {} as any, false); + const getColorAccessor = getColorAccessorFn(palettes, '{}', {} as any, false); it('should return null for null values', () => { expect(getColorAccessor(null)).toBe(null); diff --git a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.ts b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.ts index 116b21bb2245d..7e3d076744d64 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.ts @@ -5,29 +5,20 @@ * 2.0. */ -import { - AVAILABLE_PALETTES, - getColorFactory, - getPalette, - NeutralPalette, - ColorMappingInputCategoricalData, -} from '@kbn/coloring'; +import { getColorFactory, ColorMappingInputCategoricalData } from '@kbn/coloring'; +import { KbnPalettes } from '@kbn/palettes'; import { CellColorFn } from './get_cell_color_fn'; /** * Return a color accessor function for XY charts depending on the split accessors received. */ export function getColorAccessorFn( + palettes: KbnPalettes, colorMapping: string, data: ColorMappingInputCategoricalData, isDarkMode: boolean ): CellColorFn { - const getColor = getColorFactory( - JSON.parse(colorMapping), - getPalette(AVAILABLE_PALETTES, NeutralPalette), - isDarkMode, - data - ); + const getColor = getColorFactory(JSON.parse(colorMapping), palettes, isDarkMode, data); return (value) => { if (value === undefined || value === null) return null; diff --git a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_terms.tsx b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_terms.tsx index 1eec5a4093275..ffc23d68bc54a 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_terms.tsx +++ b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_terms.tsx @@ -21,21 +21,22 @@ import { DEFAULT_COLOR_MAPPING_CONFIG, CategoricalColorMapping, SPECIAL_TOKENS_STRING_CONVERSION, - AVAILABLE_PALETTES, PaletteOutput, PaletteRegistry, CustomPaletteParams, } from '@kbn/coloring'; import { i18n } from '@kbn/i18n'; +import { KbnPalettes } from '@kbn/palettes'; import { trackUiCounterEvents } from '../../lens_ui_telemetry'; import { PalettePicker } from '../palette_picker'; import { PalettePanelContainer } from './palette_panel_container'; -import { getColorStops } from './utils'; +import { getPaletteDisplayColors } from './utils'; interface ColorMappingByTermsProps { isDarkMode: boolean; colorMapping?: ColorMapping.Config; palette?: PaletteOutput<CustomPaletteParams>; + palettes: KbnPalettes; isInlineEditing?: boolean; setPalette: (palette: PaletteOutput) => void; setColorMapping: (colorMapping?: ColorMapping.Config) => void; @@ -48,6 +49,7 @@ export function ColorMappingByTerms({ isDarkMode, colorMapping, palette, + palettes, isInlineEditing, setPalette, setColorMapping, @@ -67,7 +69,13 @@ export function ColorMappingByTerms({ fullWidth > <PalettePanelContainer - palette={getColorStops(paletteService, isDarkMode, palette, colorMapping)} + palette={getPaletteDisplayColors( + paletteService, + palettes, + isDarkMode, + palette, + colorMapping + )} siblingRef={panelRef} title={ useNewColorMapping @@ -119,7 +127,7 @@ export function ColorMappingByTerms({ model={colorMapping ?? { ...DEFAULT_COLOR_MAPPING_CONFIG }} onModelUpdate={setColorMapping} specialTokens={SPECIAL_TOKENS_STRING_CONVERSION} - palettes={AVAILABLE_PALETTES} + palettes={palettes} data={{ type: 'categories', categories, diff --git a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_values.tsx b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_values.tsx index 9e18f6ae149a8..d599062204794 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_values.tsx +++ b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_values.tsx @@ -24,7 +24,7 @@ interface ColorMappingByValuesProps { setPalette: (palette: PaletteOutput<CustomPaletteParams>) => void; paletteService: PaletteRegistry; panelRef: MutableRefObject<HTMLDivElement | null>; - dataBounds?: DataBounds; + dataBounds: DataBounds; } export function ColorMappingByValues<T>({ diff --git a/x-pack/plugins/lens/public/shared_components/coloring/get_cell_color_fn.ts b/x-pack/plugins/lens/public/shared_components/coloring/get_cell_color_fn.ts index bb7e25220f793..f2db77f41b103 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/get_cell_color_fn.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/get_cell_color_fn.ts @@ -12,12 +12,14 @@ import { getSpecialString, } from '@kbn/coloring'; import { CustomPaletteState } from '@kbn/charts-plugin/common'; +import { KbnPalettes } from '@kbn/palettes'; import { getColorAccessorFn } from './color_mapping_accessor'; export type CellColorFn = (value?: number | string | null) => string | null; export function getCellColorFn( paletteService: PaletteRegistry, + palettes: KbnPalettes, data: ColorMappingInputData, colorByTerms: boolean, isDarkMode: boolean, @@ -37,7 +39,7 @@ export function getCellColorFn( if (colorByTerms && data.type === 'categories') { if (colorMapping) { - return getColorAccessorFn(colorMapping, data, isDarkMode); + return getColorAccessorFn(palettes, colorMapping, data, isDarkMode); } else if (palette) { return (category) => { if (category === undefined || category === null) return null; diff --git a/x-pack/plugins/lens/public/shared_components/coloring/utils.test.ts b/x-pack/plugins/lens/public/shared_components/coloring/utils.test.ts index cc6044fc0f624..27f17f3c72c66 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/utils.test.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/utils.test.ts @@ -5,53 +5,7 @@ * 2.0. */ -import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; -import { - applyPaletteParams, - findMinMaxByColumnId, - getContrastColor, - shouldColorByTerms, -} from './utils'; - -describe('applyPaletteParams', () => { - const paletteRegistry = chartPluginMock.createPaletteRegistry(); - it('should return a palette stops array only by the name', () => { - expect( - applyPaletteParams( - paletteRegistry, - { name: 'default', type: 'palette', params: { name: 'default' } }, - { min: 0, max: 100 } - ) - ).toEqual([ - // stops are 0 and 50 by with a 20 offset (100 divided by 5 steps) for display - // the mock palette service has only 2 colors so tests are a bit off by that - { color: 'red', stop: 20 }, - { color: 'black', stop: 70 }, - ]); - }); - - it('should return a palette stops array reversed', () => { - expect( - applyPaletteParams( - paletteRegistry, - { name: 'default', type: 'palette', params: { name: 'default', reverse: true } }, - { min: 0, max: 100 } - ) - ).toEqual([ - { color: 'black', stop: 20 }, - { color: 'red', stop: 70 }, - ]); - }); - - it('should pick the default palette from the activePalette object when passed', () => { - expect( - applyPaletteParams(paletteRegistry, { name: 'mocked', type: 'palette' }, { min: 0, max: 100 }) - ).toEqual([ - { color: 'blue', stop: 20 }, - { color: 'yellow', stop: 70 }, - ]); - }); -}); +import { findMinMaxByColumnId, getContrastColor, shouldColorByTerms } from './utils'; describe('getContrastColor', () => { it('should pick the light color when the passed one is dark', () => { diff --git a/x-pack/plugins/lens/public/shared_components/coloring/utils.ts b/x-pack/plugins/lens/public/shared_components/coloring/utils.ts index ae797c1daa6c6..711342c8e5d65 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/utils.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/utils.ts @@ -23,24 +23,26 @@ import { } from '@kbn/coloring'; import { getOriginalId } from '@kbn/transpose-utils'; import { Datatable, DatatableColumnType } from '@kbn/expressions-plugin/common'; +import { KbnPalettes } from '@kbn/palettes'; import { DataType } from '../../types'; /** * Returns array of colors for provided palette or colorMapping */ -export function getColorStops( +export function getPaletteDisplayColors( paletteService: PaletteRegistry, + palettes: KbnPalettes, isDarkMode: boolean, palette?: PaletteOutput<CustomPaletteParams>, colorMapping?: ColorMapping.Config ): string[] { return colorMapping - ? getColorsFromMapping(isDarkMode, colorMapping) + ? getColorsFromMapping(palettes, isDarkMode, colorMapping) : palette?.name === CUSTOM_PALETTE ? palette?.params?.stops?.map(({ color }) => color) ?? [] : paletteService .get(palette?.name || DEFAULT_FALLBACK_PALETTE) - .getCategoricalColors(10, palette); + .getCategoricalColors(palette?.params?.steps || 10, palette); } /** diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index d6dbccc492a6b..f6d4edc02e16d 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -73,6 +73,7 @@ export type StartServices = Pick< | 'analytics' | 'i18n' | 'theme' + | 'userProfile' >; export interface IndexPatternRef { @@ -662,6 +663,7 @@ export type DatasourceDimensionEditorProps<T = unknown> = DatasourceDimensionPro | 'analytics' | 'i18n' | 'theme' + | 'userProfile' | 'docLinks' >; dateRange: DateRange; diff --git a/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.test.tsx b/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.test.tsx index 738f7edab2a6e..ee8566df52ff0 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.test.tsx @@ -20,6 +20,7 @@ import { ColumnState } from '../../../../common/expressions'; import { capitalize } from 'lodash'; import { I18nProvider } from '@kbn/i18n-react'; import { DatatableColumnType } from '@kbn/expressions-plugin/common'; +import { getKbnPalettes } from '@kbn/palettes'; describe('data table dimension editor', () => { let user: UserEvent; @@ -89,6 +90,7 @@ describe('data table dimension editor', () => { setState: jest.fn(), isDarkMode: false, paletteService: chartPluginMock.createPaletteRegistry(), + palettes: getKbnPalettes({ name: 'amsterdam', darkMode: false }), panelRef: React.createRef(), addLayer: jest.fn(), removeLayer: jest.fn(), diff --git a/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.tsx index c67cf3cdb9b1a..90c644555d6f6 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.tsx @@ -8,15 +8,22 @@ import React, { useCallback } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiFormRow, EuiSwitch, EuiButtonGroup, htmlIdGenerator } from '@elastic/eui'; -import { PaletteRegistry, getFallbackDataBounds } from '@kbn/coloring'; +import { + CUSTOM_PALETTE, + CustomPaletteParams, + PaletteOutput, + PaletteRegistry, + applyPaletteParams, + getFallbackDataBounds, +} from '@kbn/coloring'; import { getColorCategories } from '@kbn/chart-expressions-common'; import { useDebouncedValue } from '@kbn/visualization-utils'; import { getOriginalId } from '@kbn/transpose-utils'; +import { KbnPalettes } from '@kbn/palettes'; import type { VisualizationDimensionEditorProps } from '../../../types'; import type { DatatableVisualizationState } from '../visualization'; import { - applyPaletteParams, defaultPaletteParams, findMinMaxByColumnId, shouldColorByTerms, @@ -54,6 +61,7 @@ function updateColumn( export type TableDimensionEditorProps = VisualizationDimensionEditorProps<DatatableVisualizationState> & { paletteService: PaletteRegistry; + palettes: KbnPalettes; isDarkMode: boolean; }; @@ -99,14 +107,24 @@ export function TableDimensionEditor(props: TableDimensionEditorProps) { const minMaxByColumnId = findMinMaxByColumnId(columnsToCheck, currentData); const currentMinMax = minMaxByColumnId.get(accessor) ?? getFallbackDataBounds(); - const activePalette = column?.palette ?? { + const activePalette: PaletteOutput<CustomPaletteParams> = { type: 'palette', name: showColorByTerms ? 'default' : defaultPaletteParams.name, + ...column?.palette, + params: { ...column?.palette?.params }, }; // need to tell the helper that the colorStops are required to display const displayStops = applyPaletteParams(props.paletteService, activePalette, currentMinMax); const categories = getColorCategories(currentData?.rows ?? [], accessor, false, [null]); + if (activePalette.name !== CUSTOM_PALETTE && activePalette.params?.stops) { + activePalette.params.stops = applyPaletteParams( + props.paletteService, + activePalette, + currentMinMax + ); + } + return ( <> <EuiFormRow @@ -225,6 +243,7 @@ export function TableDimensionEditor(props: TableDimensionEditorProps) { isDarkMode={isDarkMode} colorMapping={column.colorMapping} palette={activePalette} + palettes={props.palettes} isInlineEditing={isInlineEditing} setPalette={(palette) => { updateColumnState(accessor, { palette }); diff --git a/x-pack/plugins/lens/public/visualizations/datatable/components/table_basic.tsx b/x-pack/plugins/lens/public/visualizations/datatable/components/table_basic.tsx index f30686a44a6ad..dc6f818eb3519 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/components/table_basic.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/components/table_basic.tsx @@ -33,6 +33,8 @@ import { IconChartDatatable } from '@kbn/chart-icons'; import useObservable from 'react-use/lib/useObservable'; import { getColorCategories } from '@kbn/chart-expressions-common'; import { getOriginalId, isTransposeId } from '@kbn/transpose-utils'; +import { CoreTheme } from '@kbn/core/public'; +import { getKbnPalettes } from '@kbn/palettes'; import type { LensTableRowContextMenuEvent } from '../../../types'; import type { FormatFactory } from '../../../../common/types'; import { RowHeightMode } from '../../../../common/types'; @@ -81,10 +83,11 @@ export const DatatableComponent = (props: DatatableRenderProps) => { const dataGridRef = useRef<EuiDataGridRefProps>(null); const isInteractive = props.interactive; - const isDarkMode = useObservable(props.theme.theme$, { + const theme = useObservable<CoreTheme>(props.theme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; + }); + const palettes = getKbnPalettes(theme); const [columnConfig, setColumnConfig] = useState({ columns: props.args.columns, @@ -420,9 +423,10 @@ export const DatatableComponent = (props: DatatableRenderProps) => { }; const colorFn = getCellColorFn( props.paletteService, + palettes, data, colorByTerms, - isDarkMode, + theme.darkMode, syncColors, palette, colorMapping @@ -436,16 +440,17 @@ export const DatatableComponent = (props: DatatableRenderProps) => { formatters, columnConfig, DataContext, - isDarkMode, + theme.darkMode, getCellColor, props.args.fitRowToContent ); }, [ formatters, columnConfig, - isDarkMode, + theme.darkMode, props.args.fitRowToContent, props.paletteService, + palettes, firstLocalTable, bucketedColumns, minMaxByColumnId, diff --git a/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx b/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx index 9a94e458c667c..218aa875a3756 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx @@ -27,13 +27,13 @@ import { DatatableColumnFn, DatatableExpressionFunction, } from '../../../common/expressions'; -import { getColorStops } from '../../shared_components/coloring'; +import { getPaletteDisplayColors } from '../../shared_components/coloring'; import { fieldFormatsServiceMock } from '@kbn/field-formats-plugin/public/mocks'; jest.mock('../../shared_components/coloring', () => { return { ...jest.requireActual('../../shared_components/coloring'), - getColorStops: jest.fn().mockReturnValue([]), + getPaletteDisplayColors: jest.fn().mockReturnValue([]), }; }); @@ -438,7 +438,7 @@ describe('Datatable Visualization', () => { let params: VisualizationConfigProps<DatatableVisualizationState>; beforeEach(() => { - (getColorStops as jest.Mock).mockReturnValue(mockStops); + (getPaletteDisplayColors as jest.Mock).mockReturnValue(mockStops); }); describe('rows', () => { @@ -483,7 +483,7 @@ describe('Datatable Visualization', () => { it.each<ColumnState['colorMode']>(['cell', 'text'])( 'should not include palette if colorMode is %s but stops is empty', (colorMode) => { - (getColorStops as jest.Mock).mockReturnValue([]); + (getPaletteDisplayColors as jest.Mock).mockReturnValue([]); params.state.columns[0].colorMode = colorMode; expect(datatableVisualization.getConfiguration(params).groups[0].accessors).toEqual([ { columnId: 'b' }, @@ -532,7 +532,7 @@ describe('Datatable Visualization', () => { it.each<ColumnState['colorMode']>(['cell', 'text'])( 'should not include palette if colorMode is %s but stops is empty', (colorMode) => { - (getColorStops as jest.Mock).mockReturnValue([]); + (getPaletteDisplayColors as jest.Mock).mockReturnValue([]); params.state.columns[0].colorMode = colorMode; expect(datatableVisualization.getConfiguration(params).groups[2].accessors).toEqual([ { columnId: 'b' }, diff --git a/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx b/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx index efe5a39458eed..23d8d432ce2d6 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx @@ -8,8 +8,15 @@ import React from 'react'; import { Ast } from '@kbn/interpreter'; import { i18n } from '@kbn/i18n'; -import { PaletteRegistry, CUSTOM_PALETTE, PaletteOutput, CustomPaletteParams } from '@kbn/coloring'; -import { ThemeServiceStart } from '@kbn/core/public'; +import { CoreTheme, ThemeServiceStart } from '@kbn/core/public'; +import { + PaletteRegistry, + CUSTOM_PALETTE, + PaletteOutput, + CustomPaletteParams, + applyPaletteParams, + getOverridePaletteStops, +} from '@kbn/coloring'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { IconChartDatatable } from '@kbn/chart-icons'; import { getOriginalId } from '@kbn/transpose-utils'; @@ -17,6 +24,7 @@ import { LayerTypes } from '@kbn/expression-xy-plugin/public'; import { buildExpression, buildExpressionFunction } from '@kbn/expressions-plugin/common'; import useObservable from 'react-use/lib/useObservable'; import { getSortingCriteria } from '@kbn/sort-predicates'; +import { getKbnPalettes } from '@kbn/palettes'; import type { FormBasedPersistedState } from '../../datasources/form_based/types'; import type { SuggestionRequest, @@ -45,10 +53,9 @@ import { DEFAULT_ROW_HEIGHT, } from './components/constants'; import { - applyPaletteParams, defaultPaletteParams, findMinMaxByColumnId, - getColorStops, + getPaletteDisplayColors, shouldColorByTerms, } from '../../shared_components'; import { getColorMappingTelemetryEvents } from '../../lens_ui_telemetry/color_telemetry_helpers'; @@ -268,7 +275,9 @@ export const getDatatableVisualization = ({ on the Metric dimension in cases where there are no numeric columns **/ getConfiguration({ state, frame }) { - const isDarkMode = kibanaTheme.getTheme().darkMode; + const theme = kibanaTheme.getTheme(); + const palettes = getKbnPalettes(theme); + const { sortedColumns, datasource } = getDatasourceAndSortedColumns( state, frame.datasourceLayers @@ -320,7 +329,13 @@ export const getDatatableVisualization = ({ hidden, collapseFn, } = columnMap[accessor] ?? {}; - const stops = getColorStops(paletteService, isDarkMode, palette, colorMapping); + const stops = getPaletteDisplayColors( + paletteService, + palettes, + theme.darkMode, + palette, + colorMapping + ); const hasColoring = colorMode !== 'none' && stops.length > 0; return { @@ -407,7 +422,13 @@ export const getDatatableVisualization = ({ colorMapping, hidden, } = columnMap[accessor] ?? {}; - const stops = getColorStops(paletteService, isDarkMode, palette, colorMapping); + const stops = getPaletteDisplayColors( + paletteService, + palettes, + theme.darkMode, + palette, + colorMapping + ); const hasColoring = colorMode !== 'none' && stops.length > 0; return { @@ -465,13 +486,19 @@ export const getDatatableVisualization = ({ }; }, DimensionEditorComponent(props) { - const isDarkMode = useObservable(kibanaTheme.theme$, { + const theme = useObservable<CoreTheme>(kibanaTheme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; + }); + const palettes = getKbnPalettes(theme); return ( - <TableDimensionEditor {...props} isDarkMode={isDarkMode} paletteService={paletteService} /> + <TableDimensionEditor + {...props} + isDarkMode={theme.darkMode} + palettes={palettes} + paletteService={paletteService} + /> ); }, @@ -556,13 +583,14 @@ export const getDatatableVisualization = ({ columns: columns .filter((c) => !c.collapseFn) .map((column) => { + const stops = getOverridePaletteStops(paletteService, column.palette); const paletteParams = { ...column.palette?.params, // rewrite colors and stops as two distinct arguments - colors: (column.palette?.params?.stops || []).map(({ color }) => color), + colors: stops?.map(({ color }) => color), stops: column.palette?.params?.name === RowHeightMode.custom - ? (column.palette?.params?.stops || []).map(({ stop }) => stop) + ? stops?.map(({ stop }) => stop) : [], reverse: false, // managed at UI level }; diff --git a/x-pack/plugins/lens/public/visualizations/gauge/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/gauge/dimension_editor.tsx index fdbe6913d21c9..8c1d3bd96f2d3 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/gauge/dimension_editor.tsx @@ -8,12 +8,17 @@ import { EuiFormRow, EuiSwitchEvent, EuiSwitch, EuiIcon } from '@elastic/eui'; import React from 'react'; import { i18n } from '@kbn/i18n'; -import { PaletteRegistry, CustomizablePalette, CUSTOM_PALETTE } from '@kbn/coloring'; +import { + PaletteRegistry, + CustomizablePalette, + CUSTOM_PALETTE, + applyPaletteParams, +} from '@kbn/coloring'; import { GaugeTicksPositions, GaugeColorModes } from '@kbn/expression-gauge-plugin/common'; import { getMaxValue, getMinValue } from '@kbn/expression-gauge-plugin/public'; import { TooltipWrapper } from '@kbn/visualization-utils'; import { isNumericFieldForDatatable } from '../../../common/expressions/datatable/utils'; -import { applyPaletteParams, PalettePanelContainer } from '../../shared_components'; +import { PalettePanelContainer } from '../../shared_components'; import type { VisualizationDimensionEditorProps } from '../../types'; import type { GaugeVisualizationState } from './constants'; import { defaultPaletteParams } from './palette_config'; diff --git a/x-pack/plugins/lens/public/visualizations/gauge/index.ts b/x-pack/plugins/lens/public/visualizations/gauge/index.ts index 870b4f3b6b586..a08d6d43097e7 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/index.ts +++ b/x-pack/plugins/lens/public/visualizations/gauge/index.ts @@ -8,7 +8,6 @@ import type { CoreSetup } from '@kbn/core/public'; import type { ChartsPluginSetup } from '@kbn/charts-plugin/public'; import type { EditorFrameSetup } from '../../types'; -import { transparentizePalettes } from './palette_config'; export interface GaugeVisualizationPluginSetupPlugins { editorFrame: EditorFrameSetup; @@ -19,8 +18,8 @@ export class GaugeVisualization { setup(core: CoreSetup, { editorFrame, charts }: GaugeVisualizationPluginSetupPlugins) { editorFrame.registerVisualization(async () => { const { getGaugeVisualization } = await import('../../async_services'); - const palettes = transparentizePalettes(await charts.palettes.getPalettes()); - return getGaugeVisualization({ paletteService: palettes, theme: core.theme }); + const palettes = await charts.palettes.getPalettes(); + return getGaugeVisualization({ paletteService: palettes }); }); } } diff --git a/x-pack/plugins/lens/public/visualizations/gauge/palette_config.test.ts b/x-pack/plugins/lens/public/visualizations/gauge/palette_config.test.ts deleted file mode 100644 index f144a2f9f87f4..0000000000000 --- a/x-pack/plugins/lens/public/visualizations/gauge/palette_config.test.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { transparentizePalettes } from './palette_config'; -import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; - -const paletteServiceMock = chartPluginMock.createPaletteRegistry(); - -describe('transparentizePalettes', () => { - it('converts all colors to half-transparent', () => { - const newPalettes = transparentizePalettes(paletteServiceMock); - - const singlePalette = newPalettes.get('mocked'); - expect(singlePalette.getCategoricalColors(2)).toEqual(['#0000FF80', '#FFFF0080']); - expect( - singlePalette.getCategoricalColor([ - { - name: 'abc', - rankAtDepth: 0, - totalSeriesAtDepth: 5, - }, - ]) - ).toEqual('#0000FF80'); - - const firstPalette = newPalettes.getAll()[0]; - expect(firstPalette.getCategoricalColors(2)).toEqual(['#FF000080', '#00000080']); - expect( - firstPalette.getCategoricalColor([ - { - name: 'abc', - rankAtDepth: 0, - totalSeriesAtDepth: 5, - }, - ]) - ).toEqual('#00000080'); - }); -}); diff --git a/x-pack/plugins/lens/public/visualizations/gauge/palette_config.tsx b/x-pack/plugins/lens/public/visualizations/gauge/palette_config.tsx index a2399c897b39b..3d6bd9c94f01b 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/palette_config.tsx +++ b/x-pack/plugins/lens/public/visualizations/gauge/palette_config.tsx @@ -5,15 +5,8 @@ * 2.0. */ -import { - ChartColorConfiguration, - PaletteDefinition, - PaletteRegistry, - SeriesLayer, - RequiredPaletteParamTypes, -} from '@kbn/coloring'; +import { RequiredPaletteParamTypes } from '@kbn/coloring'; -import chroma from 'chroma-js'; import { defaultPaletteParams as sharedDefaultParams } from '../../shared_components'; export const DEFAULT_PALETTE_NAME = 'temperature'; @@ -29,23 +22,3 @@ export const defaultPaletteParams: RequiredPaletteParamTypes = { steps: DEFAULT_COLOR_STEPS, maxSteps: 5, }; - -export const transparentizePalettes = (palettes: PaletteRegistry) => { - const addAlpha = (c: string | null) => (c ? chroma(c).hex() + `80` : `000000`).toUpperCase(); - const transparentizePalette = (palette: PaletteDefinition<unknown>) => ({ - ...palette, - getCategoricalColor: ( - series: SeriesLayer[], - chartConfiguration?: ChartColorConfiguration, - state?: unknown - ) => addAlpha(palette.getCategoricalColor(series, chartConfiguration, state)), - getCategoricalColors: (size: number, state?: unknown): string[] => - palette.getCategoricalColors(size, state).map(addAlpha), - }); - - return { - ...palettes, - get: (name: string) => transparentizePalette(palettes.get(name)), - getAll: () => palettes.getAll().map((singlePalette) => transparentizePalette(singlePalette)), - }; -}; diff --git a/x-pack/plugins/lens/public/visualizations/gauge/visualization.test.ts b/x-pack/plugins/lens/public/visualizations/gauge/visualization.test.ts index e5b908a6f4c76..e240b5ef8a51d 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/visualization.test.ts +++ b/x-pack/plugins/lens/public/visualizations/gauge/visualization.test.ts @@ -13,7 +13,6 @@ import type { DatasourceLayers, OperationDescriptor } from '../../types'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; import type { GaugeVisualizationState } from './constants'; -import { themeServiceMock } from '@kbn/core/public/mocks'; function exampleState(): GaugeVisualizationState { return { @@ -25,8 +24,9 @@ function exampleState(): GaugeVisualizationState { }; } -const paletteService = chartPluginMock.createPaletteRegistry(); -const theme = themeServiceMock.createStartContract(); +const deps = { + paletteService: chartPluginMock.createPaletteRegistry(), +}; describe('gauge', () => { let frame: ReturnType<typeof createMockFramePublicAPI>; @@ -37,7 +37,7 @@ describe('gauge', () => { describe('#intialize', () => { test('returns a default state', () => { - expect(getGaugeVisualization({ paletteService, theme }).initialize(() => 'l1')).toEqual({ + expect(getGaugeVisualization(deps).initialize(() => 'l1')).toEqual({ layerId: 'l1', layerType: LayerTypes.DATA, shape: 'horizontalBullet', @@ -47,12 +47,9 @@ describe('gauge', () => { }); test('returns persisted state', () => { - expect( - getGaugeVisualization({ paletteService, theme }).initialize( - () => 'test-layer', - exampleState() - ) - ).toEqual(exampleState()); + expect(getGaugeVisualization(deps).initialize(() => 'test-layer', exampleState())).toEqual( + exampleState() + ); }); }); @@ -89,10 +86,7 @@ describe('gauge', () => { }; expect( - getGaugeVisualization({ - paletteService, - theme, - }).getConfiguration({ state, frame, layerId: 'first' }) + getGaugeVisualization(deps).getConfiguration({ state, frame, layerId: 'first' }) ).toEqual({ groups: [ { @@ -175,10 +169,7 @@ describe('gauge', () => { minAccessor: 'min-accessor', }; expect( - getGaugeVisualization({ - paletteService, - theme, - }).getConfiguration({ state, frame, layerId: 'first' }) + getGaugeVisualization(deps).getConfiguration({ state, frame, layerId: 'first' }) ).toEqual({ groups: [ { @@ -267,10 +258,7 @@ describe('gauge', () => { frame.activeData = undefined; expect( - getGaugeVisualization({ - paletteService, - theme, - }).getConfiguration({ state, frame, layerId: 'first' }) + getGaugeVisualization(deps).getConfiguration({ state, frame, layerId: 'first' }) ).toEqual({ groups: [ { @@ -355,10 +343,7 @@ describe('gauge', () => { maxAccessor: 'max-accessor', }; expect( - getGaugeVisualization({ - paletteService, - theme, - }).setDimension({ + getGaugeVisualization(deps).setDimension({ prevState, layerId: 'first', columnId: 'new-min-accessor', @@ -383,10 +368,7 @@ describe('gauge', () => { }; test('removes metric correctly', () => { expect( - getGaugeVisualization({ - paletteService, - theme, - }).removeDimension({ + getGaugeVisualization(deps).removeDimension({ prevState, layerId: 'first', columnId: 'metric-accessor', @@ -399,10 +381,7 @@ describe('gauge', () => { }); test('removes min correctly', () => { expect( - getGaugeVisualization({ - paletteService, - theme, - }).removeDimension({ + getGaugeVisualization(deps).removeDimension({ prevState, layerId: 'first', columnId: 'min-accessor', @@ -419,12 +398,7 @@ describe('gauge', () => { }); describe('#getSupportedLayers', () => { it('should return a single layer type', () => { - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getSupportedLayers() - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getSupportedLayers()).toHaveLength(1); }); }); describe('#getLayerType', () => { @@ -434,10 +408,7 @@ describe('gauge', () => { minAccessor: 'min-accessor', goalAccessor: 'value-accessor', }; - const instance = getGaugeVisualization({ - paletteService, - theme, - }); + const instance = getGaugeVisualization(deps); expect(instance.getLayerType('test-layer', state)).toEqual(LayerTypes.DATA); expect(instance.getLayerType('foo', state)).toBeUndefined(); }); @@ -465,12 +436,7 @@ describe('gauge', () => { maxAccessor: 'max-accessor', labelMinor: 'Subtitle', }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).toExpression(state, datasourceLayers) - ).toEqual({ + expect(getGaugeVisualization(deps).toExpression(state, datasourceLayers)).toEqual({ type: 'expression', chain: [ { @@ -497,12 +463,7 @@ describe('gauge', () => { layerId: 'first', minAccessor: 'min-accessor', }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).toExpression(state, datasourceLayers) - ).toEqual(null); + expect(getGaugeVisualization(deps).toExpression(state, datasourceLayers)).toEqual(null); }); }); @@ -543,12 +504,8 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(localState, { frame }) - ).toMatchInlineSnapshot(` + expect(getGaugeVisualization(deps).getUserMessages!(localState, { frame })) + .toMatchInlineSnapshot(` Array [ Object { "displayLocations": Array [ @@ -587,12 +544,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(0); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(0); }); it('should warn when minimum value is greater than metric value', () => { frame.activeData = { @@ -610,12 +562,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(1); }); it('should warn when metric value is greater than maximum value', () => { @@ -633,12 +580,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(1); }); it('should warn when goal value is greater than maximum value', () => { frame.activeData = { @@ -656,12 +598,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(1); }); it('should warn when minimum value is greater than goal value', () => { frame.activeData = { @@ -679,12 +616,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(1); }); }); }); diff --git a/x-pack/plugins/lens/public/visualizations/gauge/visualization.tsx b/x-pack/plugins/lens/public/visualizations/gauge/visualization.tsx index e1ef2b03e4264..957c1b16cf2b4 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/gauge/visualization.tsx @@ -7,11 +7,17 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { ThemeServiceStart } from '@kbn/core/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { Ast } from '@kbn/interpreter'; import { buildExpressionFunction, DatatableRow } from '@kbn/expressions-plugin/common'; -import { PaletteRegistry, CustomPaletteParams, CUSTOM_PALETTE } from '@kbn/coloring'; +import { + PaletteRegistry, + CustomPaletteParams, + CUSTOM_PALETTE, + applyPaletteParams, + getOverridePaletteStops, + PaletteOutput, +} from '@kbn/coloring'; import type { GaugeExpressionFunctionDefinition, GaugeShape, @@ -37,7 +43,6 @@ import type { import { getSuggestions } from './suggestions'; import { GROUP_ID, LENS_GAUGE_ID, GaugeVisualizationState } from './constants'; import { GaugeToolbar } from './toolbar_component'; -import { applyPaletteParams } from '../../shared_components'; import { GaugeDimensionEditor } from './dimension_editor'; import { generateId } from '../../id_generator'; import { getAccessorsFromState } from './utils'; @@ -52,7 +57,6 @@ import { interface GaugeVisualizationDeps { paletteService: PaletteRegistry; - theme: ThemeServiceStart; } export const isNumericMetric = (op: OperationMetadata) => @@ -61,12 +65,17 @@ export const isNumericMetric = (op: OperationMetadata) => export const isNumericDynamicMetric = (op: OperationMetadata) => isNumericMetric(op) && !op.isStaticValue; -function computePaletteParams(params: CustomPaletteParams) { +function computePaletteParams( + paletteService: PaletteRegistry, + palette: PaletteOutput<CustomPaletteParams> +) { + const stops = getOverridePaletteStops(paletteService, palette); + return { - ...params, + ...palette.params, // rewrite colors and stops as two distinct arguments - colors: (params?.stops || []).map(({ color }) => color), - stops: params?.name === 'custom' ? (params?.stops || []).map(({ stop }) => stop) : [], + colors: stops?.map(({ color }) => color), + stops: palette.params?.name === 'custom' ? stops?.map(({ stop }) => stop) : [], reverse: false, // managed at UI level }; } @@ -144,7 +153,9 @@ const toExpression = ( shape: state.shape ?? GaugeShapes.HORIZONTAL_BULLET, colorMode: state?.colorMode ?? 'none', palette: state.palette?.params - ? paletteService.get(CUSTOM_PALETTE).toExpression(computePaletteParams(state.palette.params)) + ? paletteService + .get(CUSTOM_PALETTE) + .toExpression(computePaletteParams(paletteService, state.palette)) : undefined, ticksPosition: state.ticksPosition ?? 'auto', labelMinor: state.labelMinor, diff --git a/x-pack/plugins/lens/public/visualizations/heatmap/utils.ts b/x-pack/plugins/lens/public/visualizations/heatmap/utils.ts index fe942dd40427c..66b2a10295016 100644 --- a/x-pack/plugins/lens/public/visualizations/heatmap/utils.ts +++ b/x-pack/plugins/lens/public/visualizations/heatmap/utils.ts @@ -5,9 +5,9 @@ * 2.0. */ -import type { PaletteRegistry } from '@kbn/coloring'; +import { applyPaletteParams, type PaletteRegistry } from '@kbn/coloring'; import type { Datatable } from '@kbn/expressions-plugin/common'; -import { applyPaletteParams, findMinMaxByColumnId } from '../../shared_components'; +import { findMinMaxByColumnId } from '../../shared_components'; import { DEFAULT_PALETTE_NAME } from './constants'; import type { HeatmapVisualizationState, Palette } from './types'; diff --git a/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx b/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx index 1fb747427a05d..4dfb17241866f 100644 --- a/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx @@ -11,7 +11,13 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { Ast } from '@kbn/interpreter'; import { Position } from '@elastic/charts'; import { IconChartHeatmap } from '@kbn/chart-icons'; -import { CUSTOM_PALETTE, PaletteRegistry, CustomPaletteParams } from '@kbn/coloring'; +import { + CUSTOM_PALETTE, + PaletteRegistry, + CustomPaletteParams, + PaletteOutput, + getOverridePaletteStops, +} from '@kbn/coloring'; import { ThemeServiceStart } from '@kbn/core/public'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; @@ -88,12 +94,17 @@ function getInitialState(): Omit<HeatmapVisualizationState, 'layerId' | 'layerTy }; } -function computePaletteParams(params: CustomPaletteParams) { +function computePaletteParams( + paletteService: PaletteRegistry, + palette: PaletteOutput<CustomPaletteParams> +) { + const stops = getOverridePaletteStops(paletteService, palette); + return { - ...params, + ...palette.params, // rewrite colors and stops as two distinct arguments - colors: (params?.stops || []).map(({ color }) => color), - stops: params?.name === 'custom' ? (params?.stops || []).map(({ stop }) => stop) : [], + colors: stops?.map(({ color }) => color), + stops: palette.params?.name === 'custom' ? stops?.map(({ stop }) => stop) : [], reverse: false, // managed at UI level }; } @@ -349,7 +360,7 @@ export const getHeatmapVisualization = ({ palette: state.palette?.params ? paletteService .get(CUSTOM_PALETTE) - .toExpression(computePaletteParams(state.palette?.params)) + .toExpression(computePaletteParams(paletteService, state.palette)) : paletteService.get(DEFAULT_PALETTE_NAME).toExpression(), legend: buildExpression([legendFn]), gridConfig: buildExpression([gridConfigFn]), @@ -407,7 +418,7 @@ export const getHeatmapVisualization = ({ palette: state.palette?.params ? paletteService .get(CUSTOM_PALETTE) - .toExpression(computePaletteParams(state.palette?.params)) + .toExpression(computePaletteParams(paletteService, state.palette)) : paletteService.get(DEFAULT_PALETTE_NAME).toExpression(), }); diff --git a/x-pack/plugins/lens/public/visualizations/legacy_metric/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/legacy_metric/dimension_editor.tsx index c6eccd9a70727..552b5f0a52a3f 100644 --- a/x-pack/plugins/lens/public/visualizations/legacy_metric/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/legacy_metric/dimension_editor.tsx @@ -5,13 +5,18 @@ * 2.0. */ import { EuiButtonGroup, EuiFormRow, htmlIdGenerator } from '@elastic/eui'; -import { PaletteRegistry, CustomizablePalette, CUSTOM_PALETTE } from '@kbn/coloring'; +import { + PaletteRegistry, + CustomizablePalette, + CUSTOM_PALETTE, + applyPaletteParams, +} from '@kbn/coloring'; import { i18n } from '@kbn/i18n'; import React from 'react'; import { ColorMode } from '@kbn/charts-plugin/common'; import type { LegacyMetricState } from '../../../common/types'; import { isNumericFieldForDatatable } from '../../../common/expressions/datatable/utils'; -import { applyPaletteParams, PalettePanelContainer } from '../../shared_components'; +import { PalettePanelContainer } from '../../shared_components'; import type { VisualizationDimensionEditorProps } from '../../types'; import { defaultPaletteParams } from './palette_config'; @@ -54,7 +59,7 @@ export function MetricDimensionEditor( }; // need to tell the helper that the colorStops are required to display - const displayStops = applyPaletteParams(props.paletteService, activePalette, currentMinMax); + const stops = applyPaletteParams(props.paletteService, activePalette, currentMinMax); return ( <> @@ -109,7 +114,7 @@ export function MetricDimensionEditor( // align this initial computation with same format for default // palettes in the panel. This to avoid custom computation issue with metric // fake data range - stops: displayStops.map((v, i, array) => ({ + stops: stops.map((v, i, array) => ({ ...v, stop: currentMinMax.min + (i === 0 ? 0 : array[i - 1].stop), })), @@ -137,7 +142,7 @@ export function MetricDimensionEditor( })} > <PalettePanelContainer - palette={displayStops.map(({ color }) => color)} + palette={stops.map(({ color }) => color)} siblingRef={props.panelRef} isInlineEditing={isInlineEditing} title={i18n.translate('xpack.lens.paletteMetricGradient.label', { diff --git a/x-pack/plugins/lens/public/visualizations/legacy_metric/index.ts b/x-pack/plugins/lens/public/visualizations/legacy_metric/index.ts index 933bf4dab6ae8..a624172264442 100644 --- a/x-pack/plugins/lens/public/visualizations/legacy_metric/index.ts +++ b/x-pack/plugins/lens/public/visualizations/legacy_metric/index.ts @@ -20,9 +20,9 @@ export class LegacyMetricVisualization { const { getLegacyMetricVisualization: getMetricVisualization } = await import( '../../async_services' ); - const palettes = await charts.palettes.getPalettes(); + const paletteService = await charts.palettes.getPalettes(); - return getMetricVisualization({ paletteService: palettes, theme: core.theme }); + return getMetricVisualization({ paletteService }); }); } } diff --git a/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.test.ts b/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.test.ts index d6a70ddbe7114..faf50074ee8f3 100644 --- a/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.test.ts +++ b/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.test.ts @@ -13,7 +13,7 @@ import { generateId } from '../../id_generator'; import { DatasourcePublicAPI, FramePublicAPI } from '../../types'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { ColorMode } from '@kbn/charts-plugin/common'; -import { themeServiceMock } from '@kbn/core/public/mocks'; +import { CUSTOM_PALETTE } from '@kbn/coloring'; jest.mock('../../id_generator'); @@ -37,7 +37,6 @@ function mockFrame(): FramePublicAPI { const metricVisualization = getLegacyMetricVisualization({ paletteService: chartPluginMock.createPaletteRegistry(), - theme: themeServiceMock.createStartContract(), }); describe('metric_visualization', () => { @@ -128,7 +127,13 @@ describe('metric_visualization', () => { layerType: LayerTypes.DATA, palette: { type: 'palette', - name: 'status', + name: CUSTOM_PALETTE, + params: { + stops: [ + { color: 'blue', stop: 0 }, + { color: 'yellow', stop: 100 }, + ], + }, }, }, layerId: 'l1', @@ -138,7 +143,7 @@ describe('metric_visualization', () => { groups: [ expect.objectContaining({ accessors: expect.arrayContaining([ - { columnId: 'a', triggerIconType: 'colorBy', palette: [] }, + { columnId: 'a', triggerIconType: 'colorBy', palette: ['blue', 'yellow'] }, ]), }), ], diff --git a/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.tsx b/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.tsx index 35983e52f80da..74f1642cb0965 100644 --- a/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.tsx @@ -7,8 +7,13 @@ import { i18n } from '@kbn/i18n'; import { euiThemeVars } from '@kbn/ui-theme'; import { Ast } from '@kbn/interpreter'; -import { PaletteOutput, PaletteRegistry, CUSTOM_PALETTE, shiftPalette } from '@kbn/coloring'; -import { ThemeServiceStart } from '@kbn/core/public'; +import { + PaletteOutput, + PaletteRegistry, + CUSTOM_PALETTE, + shiftPalette, + getOverridePaletteStops, +} from '@kbn/coloring'; import { ColorMode, CustomPaletteState } from '@kbn/charts-plugin/common'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { IconChartMetric } from '@kbn/chart-icons'; @@ -65,7 +70,7 @@ const toExpression = ( const datasourceExpression = datasourceExpressionsByLayers[state.layerId]; const operation = datasource && datasource.getOperationForColumnId(state.accessor); - const stops = state.palette?.params?.stops || []; + const stops = getOverridePaletteStops(paletteService, state.palette) ?? []; const isCustomPalette = state.palette?.params?.name === CUSTOM_PALETTE; const canColor = operation?.dataType === 'number'; @@ -150,10 +155,8 @@ const toExpression = ( export const getLegacyMetricVisualization = ({ paletteService, - theme, }: { paletteService: PaletteRegistry; - theme: ThemeServiceStart; }): Visualization<LegacyMetricState> => ({ id: 'lnsLegacyMetric', @@ -215,7 +218,8 @@ export const getLegacyMetricVisualization = ({ getConfiguration(props) { const hasColoring = props.state.palette != null; - const stops = props.state.palette?.params?.stops || []; + const stops = getOverridePaletteStops(paletteService, props.state.palette); + return { groups: [ { @@ -236,7 +240,7 @@ export const getLegacyMetricVisualization = ({ { columnId: props.state.accessor, triggerIconType: hasColoring ? 'colorBy' : undefined, - palette: hasColoring ? stops.map(({ color }) => color) : undefined, + palette: hasColoring ? stops?.map(({ color }) => color) : undefined, }, ] : [], @@ -314,7 +318,7 @@ export const getLegacyMetricVisualization = ({ } const hasColoring = state.palette != null; - const stops = state.palette?.params?.stops || []; + const stops = getOverridePaletteStops(paletteService, state.palette); return { layers: [ @@ -324,7 +328,7 @@ export const getLegacyMetricVisualization = ({ chartType: 'metric', ...this.getDescription(state), dimensions, - palette: hasColoring ? stops.map(({ color }) => color) : undefined, + palette: hasColoring ? stops?.map(({ color }) => color) : undefined, }, ], }; diff --git a/x-pack/plugins/lens/public/visualizations/metric/__snapshots__/visualization.test.ts.snap b/x-pack/plugins/lens/public/visualizations/metric/__snapshots__/visualization.test.ts.snap index 2490904751e8c..6306758e256f0 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/__snapshots__/visualization.test.ts.snap +++ b/x-pack/plugins/lens/public/visualizations/metric/__snapshots__/visualization.test.ts.snap @@ -7,7 +7,10 @@ Object { "accessors": Array [ Object { "columnId": "metric-col-id", - "palette": Array [], + "palette": Array [ + "blue", + "yellow", + ], "triggerIconType": "colorBy", }, ], diff --git a/x-pack/plugins/lens/public/visualizations/metric/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/metric/dimension_editor.tsx index 78fcd67f36431..5d98be54e23ed 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/metric/dimension_editor.tsx @@ -24,6 +24,7 @@ import { CustomizablePalette, DEFAULT_MAX_STOP, DEFAULT_MIN_STOP, + applyPaletteParams, } from '@kbn/coloring'; import { getDataBoundsForPalette } from '@kbn/expression-metric-vis-plugin/public'; import { getColumnByAccessor } from '@kbn/visualizations-plugin/common/utils'; @@ -31,7 +32,7 @@ import { css } from '@emotion/react'; import { DebouncedInput, IconSelect } from '@kbn/visualization-ui-components'; import { useDebouncedValue } from '@kbn/visualization-utils'; import { isNumericFieldForDatatable } from '../../../common/expressions/datatable/utils'; -import { applyPaletteParams, PalettePanelContainer } from '../../shared_components'; +import { PalettePanelContainer } from '../../shared_components'; import type { VisualizationDimensionEditorProps } from '../../types'; import { defaultNumberPaletteParams, defaultPercentagePaletteParams } from './palette_config'; import { DEFAULT_MAX_COLUMNS, getDefaultColor, showingBar } from './visualization'; diff --git a/x-pack/plugins/lens/public/visualizations/metric/to_expression.ts b/x-pack/plugins/lens/public/visualizations/metric/to_expression.ts index 02292a4ddce0a..09e1de6192472 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/to_expression.ts +++ b/x-pack/plugins/lens/public/visualizations/metric/to_expression.ts @@ -5,7 +5,13 @@ * 2.0. */ -import { CustomPaletteParams, CUSTOM_PALETTE, PaletteRegistry } from '@kbn/coloring'; +import { + CustomPaletteParams, + CUSTOM_PALETTE, + PaletteRegistry, + PaletteOutput, + getOverridePaletteStops, +} from '@kbn/coloring'; import type { TrendlineExpressionFunctionDefinition, MetricVisExpressionFunctionDefinition, @@ -23,12 +29,17 @@ import { MetricVisualizationState } from './types'; import { metricStateDefaults } from './constants'; // TODO - deduplicate with gauges? -function computePaletteParams(params: CustomPaletteParams) { +function computePaletteParams( + paletteService: PaletteRegistry, + palette: PaletteOutput<CustomPaletteParams> +) { + const stops = getOverridePaletteStops(paletteService, palette); + return { - ...params, + ...palette.params, // rewrite colors and stops as two distinct arguments - colors: (params?.stops || []).map(({ color }) => color), - stops: params?.name === 'custom' ? (params?.stops || []).map(({ stop }) => stop) : [], + colors: stops?.map(({ color }) => color), + stops: palette.params?.name === 'custom' ? stops?.map(({ stop }) => stop) : [], reverse: false, // managed at UI level }; } @@ -162,7 +173,7 @@ export const toExpression = ( ? [ paletteService .get(CUSTOM_PALETTE) - .toExpression(computePaletteParams(state.palette.params as CustomPaletteParams)), + .toExpression(computePaletteParams(paletteService, state.palette)), ] : [], maxCols: state.maxCols ?? DEFAULT_MAX_COLUMNS, diff --git a/x-pack/plugins/lens/public/visualizations/metric/visualization.test.ts b/x-pack/plugins/lens/public/visualizations/metric/visualization.test.ts index e4011ca8431a3..a696ab47a4871 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/visualization.test.ts +++ b/x-pack/plugins/lens/public/visualizations/metric/visualization.test.ts @@ -6,7 +6,7 @@ */ import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; -import { CustomPaletteParams, PaletteOutput } from '@kbn/coloring'; +import { CUSTOM_PALETTE, CustomPaletteParams, PaletteOutput } from '@kbn/coloring'; import { ExpressionAstExpression, ExpressionAstFunction } from '@kbn/expressions-plugin/common'; import { euiLightVars, euiThemeVars } from '@kbn/ui-theme'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; @@ -36,9 +36,13 @@ describe('metric visualization', () => { const palette: PaletteOutput<CustomPaletteParams> = { type: 'palette', - name: 'foo', + name: CUSTOM_PALETTE, params: { rangeType: 'percent', + stops: [ + { color: 'blue', stop: 0 }, + { color: 'yellow', stop: 100 }, + ], }, }; @@ -133,7 +137,10 @@ describe('metric visualization', () => { Array [ Object { "columnId": "metric-col-id", - "palette": Array [], + "palette": Array [ + "blue", + "yellow", + ], "triggerIconType": "colorBy", }, ] @@ -183,7 +190,10 @@ describe('metric visualization', () => { Array [ Object { "columnId": "metric-col-id", - "palette": Array [], + "palette": Array [ + "blue", + "yellow", + ], "triggerIconType": "colorBy", }, ] diff --git a/x-pack/plugins/lens/public/visualizations/metric/visualization.tsx b/x-pack/plugins/lens/public/visualizations/metric/visualization.tsx index 6d3bd42f26cfa..eb16bd36e683e 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/metric/visualization.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { PaletteRegistry } from '@kbn/coloring'; +import { PaletteRegistry, getOverridePaletteStops } from '@kbn/coloring'; import { ThemeServiceStart } from '@kbn/core/public'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { euiLightVars, euiThemeVars } from '@kbn/ui-theme'; @@ -60,6 +60,7 @@ export const metricLabel = i18n.translate('xpack.lens.metric.label', { }); const getMetricLayerConfiguration = ( + paletteService: PaletteRegistry, props: VisualizationConfigProps<MetricVisualizationState> ): { groups: VisualizationDimensionGroupConfig[]; @@ -73,17 +74,20 @@ const getMetricLayerConfiguration = ( const getPrimaryAccessorDisplayConfig = (): Partial<AccessorConfig> => { const hasDynamicColoring = Boolean(isMetricNumeric && props.state.palette); - const stops = props.state.palette?.params?.stops || []; - return hasDynamicColoring - ? { - triggerIconType: 'colorBy', - palette: stops.map(({ color }) => color), - } - : { - triggerIconType: 'color', - color: props.state.color ?? getDefaultColor(props.state, isMetricNumeric), - }; + if (hasDynamicColoring) { + const stops = getOverridePaletteStops(paletteService, props.state.palette); + + return { + triggerIconType: 'colorBy', + palette: stops?.map(({ color }) => color), + }; + } + + return { + triggerIconType: 'color', + color: props.state.color ?? getDefaultColor(props.state, isMetricNumeric), + }; }; const isBucketed = (op: OperationMetadata) => op.isBucketed; @@ -354,7 +358,7 @@ export const getMetricVisualization = ({ getConfiguration(props) { return props.layerId === props.state.layerId - ? getMetricLayerConfiguration(props) + ? getMetricLayerConfiguration(paletteService, props) : getTrendlineLayerConfiguration(props); }, diff --git a/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx index 32f8f2e4c972a..21cd550d4f53d 100644 --- a/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx @@ -14,17 +14,20 @@ import { PaletteRegistry, ColorMapping, SPECIAL_TOKENS_STRING_CONVERSION, - AVAILABLE_PALETTES, - getColorsFromMapping, } from '@kbn/coloring'; import { ColorPicker } from '@kbn/visualization-ui-components'; import { useDebouncedValue } from '@kbn/visualization-utils'; import { EuiFormRow, EuiFlexGroup, EuiFlexItem, EuiSwitch, EuiText, EuiBadge } from '@elastic/eui'; import { useState, useCallback } from 'react'; import { getColorCategories } from '@kbn/chart-expressions-common'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import { PieVisualizationState } from '../../../common/types'; import { VisualizationDimensionEditorProps } from '../../types'; -import { PalettePanelContainer, PalettePicker } from '../../shared_components'; +import { + PalettePanelContainer, + PalettePicker, + getPaletteDisplayColors, +} from '../../shared_components'; import { CollapseSetting } from '../../shared_components/collapse_setting'; import { getDefaultColorForMultiMetricDimension, @@ -35,6 +38,7 @@ import { trackUiCounterEvents } from '../../lens_ui_telemetry'; type DimensionEditorProps = VisualizationDimensionEditorProps<PieVisualizationState> & { paletteService: PaletteRegistry; + palettes: KbnPalettes; isDarkMode: boolean; }; @@ -118,7 +122,13 @@ export function DimensionEditor(props: DimensionEditorProps) { }) : undefined; - const colors = getColorsFromMapping(props.isDarkMode, currentLayer.colorMapping); + const colors = getPaletteDisplayColors( + props.paletteService, + props.palettes, + props.isDarkMode, + props.state.palette, + currentLayer.colorMapping + ); const table = props.frame.activeData?.[currentLayer.layerId]; const splitCategories = getColorCategories(table?.rows ?? [], props.accessor); @@ -183,7 +193,7 @@ export function DimensionEditor(props: DimensionEditorProps) { isDarkMode={props.isDarkMode} model={currentLayer.colorMapping ?? { ...DEFAULT_COLOR_MAPPING_CONFIG }} onModelUpdate={(model: ColorMapping.Config) => setColorMapping(model)} - palettes={AVAILABLE_PALETTES} + palettes={props.palettes} data={{ type: 'categories', categories: splitCategories, @@ -209,6 +219,7 @@ export function DimensionEditor(props: DimensionEditorProps) { {showColorPicker && ( <ColorPicker {...props} + swatches={props.palettes.get(KbnPalette.Default).colors(10)} overwriteColor={currentLayer.colorsByDimension?.[props.accessor]} defaultColor={getDefaultColorForMultiMetricDimension({ layer: currentLayer, diff --git a/x-pack/plugins/lens/public/visualizations/partition/visualization.tsx b/x-pack/plugins/lens/public/visualizations/partition/visualization.tsx index 8d44fec4e96e4..b564f6dbd7d4d 100644 --- a/x-pack/plugins/lens/public/visualizations/partition/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/partition/visualization.tsx @@ -14,13 +14,14 @@ import { PaletteRegistry, getColorsFromMapping, } from '@kbn/coloring'; -import { ThemeServiceStart } from '@kbn/core/public'; +import { CoreTheme, ThemeServiceStart } from '@kbn/core/public'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { EuiSpacer } from '@elastic/eui'; import { PartitionVisConfiguration } from '@kbn/visualizations-plugin/common/convert_to_lens'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; import { AccessorConfig } from '@kbn/visualization-ui-components'; import useObservable from 'react-use/lib/useObservable'; +import { getKbnPalettes } from '@kbn/palettes'; import type { FormBasedPersistedState } from '../../datasources/form_based/types'; import type { Visualization, @@ -201,8 +202,10 @@ export const getPieVisualization = ({ kibanaTheme.theme$ .subscribe({ next(theme) { + const palettes = getKbnPalettes(theme); + colors = state.layers[0]?.colorMapping - ? getColorsFromMapping(theme.darkMode, state.layers[0].colorMapping) + ? getColorsFromMapping(palettes, theme.darkMode, state.layers[0].colorMapping) : paletteService .get(state.palette?.name || 'default') .getCategoricalColors(10, state.palette?.params); @@ -494,11 +497,19 @@ export const getPieVisualization = ({ }; }, DimensionEditorComponent(props) { - const isDarkMode = useObservable(kibanaTheme.theme$, { + const theme = useObservable<CoreTheme>(kibanaTheme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; - return <DimensionEditor {...props} paletteService={paletteService} isDarkMode={isDarkMode} />; + }); + const palettes = getKbnPalettes(theme); + return ( + <DimensionEditor + {...props} + paletteService={paletteService} + palettes={palettes} + isDarkMode={theme.darkMode} + /> + ); }, DimensionEditorDataExtraComponent(props) { return <DimensionDataExtraEditor {...props} paletteService={paletteService} />; diff --git a/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx b/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx index b457926fe373d..16ba1ecf61b75 100644 --- a/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { ThemeServiceStart } from '@kbn/core/public'; +import { CoreTheme, ThemeServiceStart } from '@kbn/core/public'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import type { ExpressionTagcloudFunctionDefinition } from '@kbn/expression-tagcloud-plugin/common'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; @@ -20,6 +20,7 @@ import { PaletteRegistry, getColorsFromMapping } from '@kbn/coloring'; import { IconChartTagcloud } from '@kbn/chart-icons'; import { SystemPaletteExpressionFunctionDefinition } from '@kbn/charts-plugin/common'; import useObservable from 'react-use/lib/useObservable'; +import { getKbnPalettes } from '@kbn/palettes'; import type { OperationMetadata, Visualization } from '../..'; import { getColorMappingDefaults } from '../../utils'; import type { TagcloudState } from './types'; @@ -122,7 +123,8 @@ export const getTagcloudVisualization = ({ kibanaTheme.theme$ .subscribe({ next(theme) { - colors = getColorsFromMapping(theme.darkMode, state.colorMapping); + const palettes = getKbnPalettes(theme); + colors = getColorsFromMapping(palettes, theme.darkMode, state.colorMapping); }, }) .unsubscribe(); @@ -294,15 +296,18 @@ export const getTagcloudVisualization = ({ }, DimensionEditorComponent(props) { - const isDarkMode: boolean = useObservable(kibanaTheme.theme$, { + const theme = useObservable<CoreTheme>(kibanaTheme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; + }); + const palettes = getKbnPalettes(theme); + if (props.groupId === TAG_GROUP_ID) { return ( <TagsDimensionEditor - isDarkMode={isDarkMode} + isDarkMode={theme.darkMode} paletteService={paletteService} + palettes={palettes} state={props.state} setState={props.setState} frame={props.frame} diff --git a/x-pack/plugins/lens/public/visualizations/tagcloud/tags_dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/tagcloud/tags_dimension_editor.tsx index 4e28701fd677a..5dea1057c3712 100644 --- a/x-pack/plugins/lens/public/visualizations/tagcloud/tags_dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/tagcloud/tags_dimension_editor.tsx @@ -13,21 +13,25 @@ import { ColorMapping, SPECIAL_TOKENS_STRING_CONVERSION, PaletteOutput, - AVAILABLE_PALETTES, - getColorsFromMapping, } from '@kbn/coloring'; import { i18n } from '@kbn/i18n'; import { EuiFlexGroup, EuiFlexItem, EuiSwitch, EuiFormRow, EuiText, EuiBadge } from '@elastic/eui'; import { useState, MutableRefObject, useCallback } from 'react'; import { useDebouncedValue } from '@kbn/visualization-utils'; import { getColorCategories } from '@kbn/chart-expressions-common'; +import { KbnPalettes } from '@kbn/palettes'; import type { TagcloudState } from './types'; -import { PalettePanelContainer, PalettePicker } from '../../shared_components'; +import { + PalettePanelContainer, + PalettePicker, + getPaletteDisplayColors, +} from '../../shared_components'; import { FramePublicAPI } from '../../types'; import { trackUiCounterEvents } from '../../lens_ui_telemetry'; interface Props { paletteService: PaletteRegistry; + palettes: KbnPalettes; state: TagcloudState; setState: (state: TagcloudState) => void; frame: FramePublicAPI; @@ -42,6 +46,7 @@ export function TagsDimensionEditor({ setState, panelRef, isDarkMode, + palettes, paletteService, isInlineEditing, }: Props) { @@ -52,7 +57,13 @@ export function TagsDimensionEditor({ }); const [useNewColorMapping, setUseNewColorMapping] = useState(state.colorMapping ? true : false); - const colors = getColorsFromMapping(isDarkMode, state.colorMapping); + const colors = getPaletteDisplayColors( + paletteService, + palettes, + isDarkMode, + state.palette, + state.colorMapping + ); const table = frame.activeData?.[state.layerId]; const splitCategories = getColorCategories(table?.rows ?? [], state.tagAccessor); @@ -136,7 +147,7 @@ export function TagsDimensionEditor({ isDarkMode={isDarkMode} model={state.colorMapping ?? { ...DEFAULT_COLOR_MAPPING_CONFIG }} onModelUpdate={(model: ColorMapping.Config) => setColorMapping(model)} - palettes={AVAILABLE_PALETTES} + palettes={palettes} data={{ type: 'categories', categories: splitCategories, diff --git a/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx b/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx index 7593374ca83c5..61408286af1db 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx @@ -36,7 +36,10 @@ export const getRevertChangesAction = ({ state: XYState; layer: XYByReferenceAnnotationLayerConfig; setState: StateSetter<XYState, unknown>; - core: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'notifications'>; + core: Pick< + CoreStart, + 'overlays' | 'analytics' | 'i18n' | 'theme' | 'notifications' | 'userProfile' + >; }): LayerAction => { return { displayName: i18n.translate('xpack.lens.xyChart.annotations.revertChanges', { diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx index e2c6ce25bd2e3..ecb3c16fb6dda 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx @@ -224,7 +224,7 @@ describe('xy_visualization', () => { "colorMode": Object { "type": "categorical", }, - "paletteId": "eui_amsterdam_color_blind", + "paletteId": "default", "specialAssignments": Array [ Object { "color": Object { diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx b/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx index a01c26ece9c13..ceba71c4d4f35 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx @@ -12,7 +12,7 @@ import { i18n } from '@kbn/i18n'; import type { PaletteRegistry } from '@kbn/coloring'; import { IconChartBarReferenceLine, IconChartBarAnnotations } from '@kbn/chart-icons'; import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; -import { CoreStart, SavedObjectReference, ThemeServiceStart } from '@kbn/core/public'; +import { CoreStart, CoreTheme, SavedObjectReference, ThemeServiceStart } from '@kbn/core/public'; import { EventAnnotationServiceType } from '@kbn/event-annotation-plugin/public'; import { getAnnotationAccessor } from '@kbn/event-annotation-components'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; @@ -29,6 +29,7 @@ import { getColorsFromMapping } from '@kbn/coloring'; import useObservable from 'react-use/lib/useObservable'; import { EuiPopover, EuiSelectable } from '@elastic/eui'; import { ToolbarButton } from '@kbn/shared-ux-button-toolbar'; +import { getKbnPalettes } from '@kbn/palettes'; import { generateId } from '../../id_generator'; import { isDraggedDataViewField, @@ -466,14 +467,14 @@ export const getXyVisualization = ({ kibanaTheme.theme$ .subscribe({ next(theme) { - colors = getColorsFromMapping(theme.darkMode, layer.colorMapping); + const palettes = getKbnPalettes(theme); + colors = getColorsFromMapping(palettes, theme.darkMode, layer.colorMapping); }, }) .unsubscribe(); } else { - colors = paletteService - .get(dataLayer.palette?.name || 'default') - .getCategoricalColors(10, dataLayer.palette?.params); + const palette = paletteService.get(dataLayer.palette?.name || 'default'); + colors = palette.getCategoricalColors(10, dataLayer.palette?.params); } return { @@ -742,17 +743,18 @@ export const getXyVisualization = ({ paletteService, }; - const isDarkMode: boolean = useObservable(kibanaTheme.theme$, { + const theme = useObservable<CoreTheme>(kibanaTheme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; + }); + const palettes = getKbnPalettes(theme); const layer = props.state.layers.find((l) => l.layerId === props.layerId)!; const dimensionEditor = isReferenceLayer(layer) ? ( - <ReferenceLinePanel {...allProps} /> + <ReferenceLinePanel {...allProps} palettes={palettes} /> ) : isAnnotationsLayer(layer) ? ( <AnnotationsPanel {...allProps} dataViewsService={dataViewsService} /> ) : ( - <DataDimensionEditor {...allProps} isDarkMode={isDarkMode} /> + <DataDimensionEditor {...allProps} palettes={palettes} isDarkMode={theme.darkMode} /> ); return dimensionEditor; diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.test.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.test.tsx index 08a83ef7e0176..42224fa5f0506 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.test.tsx @@ -18,6 +18,7 @@ import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { EuiColorPicker } from '@elastic/eui'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; import { act } from 'react-dom/test-utils'; +import { getKbnPalettes } from '@kbn/palettes'; describe('XY Config panels', () => { let frame: FramePublicAPI; @@ -63,6 +64,7 @@ describe('XY Config panels', () => { }} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -91,6 +93,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -140,6 +143,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -186,6 +190,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -239,6 +244,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -292,6 +298,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.tsx index f06f2d861d865..994e254bea954 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.tsx @@ -14,6 +14,7 @@ import { EuiButtonGroup, EuiFormRow, htmlIdGenerator } from '@elastic/eui'; import { PaletteRegistry, ColorMapping, PaletteOutput } from '@kbn/coloring'; import { getColorCategories } from '@kbn/chart-expressions-common'; import type { ValuesType } from 'utility-types'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import type { VisualizationDimensionEditorProps } from '../../../types'; import { State, XYState, XYDataLayerConfig, YConfig, YAxisMode } from '../types'; import { FormatFactory } from '../../../../common/types'; @@ -45,6 +46,7 @@ export function DataDimensionEditor( props: VisualizationDimensionEditorProps<State> & { formatFactory: FormatFactory; paletteService: PaletteRegistry; + palettes: KbnPalettes; isDarkMode: boolean; } ) { @@ -144,6 +146,7 @@ export function DataDimensionEditor( setPalette={setPalette} setColorMapping={setColorMapping} paletteService={props.paletteService} + palettes={props.palettes} panelRef={props.panelRef} categories={splitCategories} /> @@ -165,6 +168,7 @@ export function DataDimensionEditor( overwriteColor={overwriteColor} defaultColor={assignedColor} disabledMessage={disabledMessage} + swatches={props.palettes.get(KbnPalette.Default).colors(10)} setConfig={setConfig} /> diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx index cd9bb66443998..e36e19dd80c20 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx @@ -17,6 +17,7 @@ import { TextDecorationSetting, } from '@kbn/visualization-ui-components'; import { useDebouncedValue } from '@kbn/visualization-utils'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import { referenceLineIconsSet } from '../../../../shared_components/icon_set'; import type { VisualizationDimensionEditorProps } from '../../../../types'; import { State, XYState, XYReferenceLineLayerConfig, YConfig } from '../../types'; @@ -32,6 +33,7 @@ export const ReferenceLinePanel = ( props: VisualizationDimensionEditorProps<State> & { formatFactory: FormatFactory; paletteService: PaletteRegistry; + palettes: KbnPalettes; } ) => { const { state, setState, layerId, accessor } = props; @@ -98,6 +100,7 @@ export const ReferenceLinePanel = ( defaultColor={defaultReferenceLineColor} setConfig={setConfig} disableHelpTooltip + swatches={props.palettes.get(KbnPalette.Default).colors(10)} label={i18n.translate('xpack.lens.xyChart.lineColor.label', { defaultMessage: 'Color', })} diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/visual_options_popover/missing_values_option.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/visual_options_popover/missing_values_option.tsx index d39a1a410d6aa..c3275a5e643f0 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/visual_options_popover/missing_values_option.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/visual_options_popover/missing_values_option.tsx @@ -88,6 +88,7 @@ export const MissingValuesOptions: React.FC<MissingValuesOptionProps> = ({ {fittingFunction && fittingFunction !== FittingFunctions.NONE && ( <> <EuiFormRow + fullWidth display="columnCompressed" label={i18n.translate('xpack.lens.xyChart.endValuesLabel', { defaultMessage: 'End values', @@ -117,6 +118,7 @@ export const MissingValuesOptions: React.FC<MissingValuesOptionProps> = ({ /> </EuiFormRow> <EuiFormRow + fullWidth label={i18n.translate('xpack.lens.xyChart.missingValuesStyle', { defaultMessage: 'Show as dotted line', })} diff --git a/x-pack/plugins/lens/tsconfig.json b/x-pack/plugins/lens/tsconfig.json index 39ec693856441..ca1a9b8fd0b16 100644 --- a/x-pack/plugins/lens/tsconfig.json +++ b/x-pack/plugins/lens/tsconfig.json @@ -114,6 +114,7 @@ "@kbn/es-types", "@kbn/esql-datagrid", "@kbn/transpose-utils", + "@kbn/palettes", "@kbn/core-application-browser", "@kbn/core-chrome-browser", "@kbn/core-capabilities-common", diff --git a/x-pack/plugins/license_api_guard/jest.config.js b/x-pack/plugins/license_api_guard/jest.config.js deleted file mode 100644 index c6c1bc1bd501a..0000000000000 --- a/x-pack/plugins/license_api_guard/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/license_api_guard'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/license_api_guard', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/license_api_guard/server/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/license_api_guard/tsconfig.json b/x-pack/plugins/license_api_guard/tsconfig.json deleted file mode 100644 index e5c87114bd54d..0000000000000 --- a/x-pack/plugins/license_api_guard/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "server/**/*" - ], - "kbn_references": [ - "@kbn/licensing-plugin", - "@kbn/core", - "@kbn/i18n", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/license_management/jest.config.js b/x-pack/plugins/license_management/jest.config.js deleted file mode 100644 index 59634448ee26c..0000000000000 --- a/x-pack/plugins/license_management/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/license_management'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/license_management', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/license_management/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/license_management/tsconfig.json b/x-pack/plugins/license_management/tsconfig.json deleted file mode 100644 index eaa0cee9f90c7..0000000000000 --- a/x-pack/plugins/license_management/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "public/**/*", - "server/**/*", - "common/**/*", - "__jest__/**/*", - "__mocks__/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/kibana-react-plugin", - "@kbn/telemetry-management-section-plugin", - "@kbn/management-plugin", - "@kbn/telemetry-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/licensing-plugin", - "@kbn/features-plugin", - "@kbn/security-plugin", - "@kbn/i18n-react", - "@kbn/i18n", - "@kbn/config-schema", - "@kbn/test-jest-helpers", - "@kbn/shared-ux-router", - "@kbn/utility-types", - "@kbn/share-plugin", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_item.test.ts b/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_item.test.ts index 7cb2311c5e10a..95ca6285f0d74 100644 --- a/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_item.test.ts +++ b/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_item.test.ts @@ -5,14 +5,10 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; -import * as api from '@kbn/securitysolution-list-api'; -import { PersistHookProps } from '@kbn/securitysolution-io-ts-list-types'; -import { - ReturnPersistExceptionItem, - usePersistExceptionItem, -} from '@kbn/securitysolution-list-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { coreMock } from '@kbn/core/public/mocks'; +import { usePersistExceptionItem } from '@kbn/securitysolution-list-hooks'; +import * as api from '@kbn/securitysolution-list-api/src/api'; import { ENTRIES_WITH_IDS } from '../../../common/constants.mock'; import { getCreateExceptionListItemSchemaMock } from '../../../common/schemas/request/create_exception_list_item_schema.mock'; @@ -20,16 +16,22 @@ import { getUpdateExceptionListItemSchemaMock } from '../../../common/schemas/re import { getExceptionListItemSchemaMock } from '../../../common/schemas/response/exception_list_item_schema.mock'; const mockKibanaHttpService = coreMock.createStart().http; -jest.mock('@kbn/securitysolution-list-api'); // TODO: Port this test over to packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.test.ts once the other mocks are added to the kbn package system describe('usePersistExceptionItem', () => { + let addExceptionListItemSpy: jest.SpyInstance<ReturnType<typeof api.addEndpointExceptionList>>; + let updateExceptionListItemSpy: jest.SpyInstance<ReturnType<typeof api.updateExceptionListItem>>; const onError = jest.fn(); + beforeAll(() => { + addExceptionListItemSpy = jest.spyOn(api, 'addExceptionListItem'); + updateExceptionListItemSpy = jest.spyOn(api, 'updateExceptionListItem'); + }); + beforeEach(() => { - jest.spyOn(api, 'addExceptionListItem').mockResolvedValue(getExceptionListItemSchemaMock()); - jest.spyOn(api, 'updateExceptionListItem').mockResolvedValue(getExceptionListItemSchemaMock()); + addExceptionListItemSpy.mockResolvedValue(getExceptionListItemSchemaMock()); + updateExceptionListItemSpy.mockResolvedValue(getExceptionListItemSchemaMock()); }); afterEach(() => { @@ -37,7 +39,7 @@ describe('usePersistExceptionItem', () => { }); test('initializes hook', async () => { - const { result } = renderHook<PersistHookProps, ReturnPersistExceptionItem>(() => + const { result } = renderHook(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError }) ); @@ -45,101 +47,106 @@ describe('usePersistExceptionItem', () => { }); test('"isLoading" is "true" when exception item is being saved', async () => { - await act(async () => { - const { result, rerender, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); - await waitForNextUpdate(); + await waitFor(() => + expect(result.current).toEqual([{ isLoading: false, isSaved: false }, result.current[1]]) + ); + + act(() => { result.current[1](getCreateExceptionListItemSchemaMock()); - rerender(); + }); - expect(result.current).toEqual([{ isLoading: true, isSaved: false }, result.current[1]]); + expect(result.current).toEqual([{ isLoading: true, isSaved: false }, result.current[1]]); + + await waitFor(() => { + expect(addExceptionListItemSpy).toHaveBeenCalled(); + expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); }); }); test('"isSaved" is "true" when exception item saved successfully', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); - await waitForNextUpdate(); + act(() => { result.current[1](getCreateExceptionListItemSchemaMock()); - await waitForNextUpdate(); - - expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); }); + + await waitFor(() => + expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]) + ); }); test('it invokes "updateExceptionListItem" when payload has "id"', async () => { - const addExceptionListItem = jest.spyOn(api, 'addExceptionListItem'); - const updateExceptionListItem = jest.spyOn(api, 'updateExceptionListItem'); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); - - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + act(() => { // NOTE: Take note here passing in an exception item where it's // entries have been enriched with ids to ensure that they get stripped // before the call goes through result.current[1]({ ...getUpdateExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }); - await waitForNextUpdate(); + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); - expect(addExceptionListItem).not.toHaveBeenCalled(); - expect(updateExceptionListItem).toHaveBeenCalledWith({ - http: mockKibanaHttpService, - listItem: getUpdateExceptionListItemSchemaMock(), - signal: new AbortController().signal, - }); + }); + + expect(addExceptionListItemSpy).not.toHaveBeenCalled(); + expect(updateExceptionListItemSpy).toHaveBeenCalledWith({ + http: mockKibanaHttpService, + listItem: getUpdateExceptionListItemSchemaMock(), + signal: expect.any(AbortSignal), }); }); test('it invokes "addExceptionListItem" when payload does not have "id"', async () => { - const updateExceptionListItem = jest.spyOn(api, 'updateExceptionListItem'); - const addExceptionListItem = jest.spyOn(api, 'addExceptionListItem'); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); - - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + act(() => { // NOTE: Take note here passing in an exception item where it's // entries have been enriched with ids to ensure that they get stripped // before the call goes through result.current[1]({ ...getCreateExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }); - await waitForNextUpdate(); + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); - expect(updateExceptionListItem).not.toHaveBeenCalled(); - expect(addExceptionListItem).toHaveBeenCalledWith({ - http: mockKibanaHttpService, - listItem: getCreateExceptionListItemSchemaMock(), - signal: new AbortController().signal, - }); + }); + + expect(updateExceptionListItemSpy).not.toHaveBeenCalled(); + expect(addExceptionListItemSpy).toHaveBeenCalledWith({ + http: mockKibanaHttpService, + listItem: getCreateExceptionListItemSchemaMock(), + signal: expect.any(AbortSignal), }); }); test('"onError" callback is invoked and "isSaved" is "false" when api call fails', async () => { const error = new Error('persist rule failed'); - jest.spyOn(api, 'addExceptionListItem').mockRejectedValue(error); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); + addExceptionListItemSpy.mockRejectedValue(error); - await waitForNextUpdate(); - result.current[1](getCreateExceptionListItemSchemaMock()); - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + act(() => { + result.current[1](getCreateExceptionListItemSchemaMock()); + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: false }, result.current[1]]); expect(onError).toHaveBeenCalledWith(error); }); diff --git a/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_list.test.ts b/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_list.test.ts index 09257c489a895..c27888b6d8cc6 100644 --- a/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_list.test.ts +++ b/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_list.test.ts @@ -5,13 +5,9 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import * as api from '@kbn/securitysolution-list-api'; -import { PersistHookProps } from '@kbn/securitysolution-io-ts-list-types'; -import { - ReturnPersistExceptionList, - usePersistExceptionList, -} from '@kbn/securitysolution-list-hooks'; +import { usePersistExceptionList } from '@kbn/securitysolution-list-hooks'; import { coreMock } from '@kbn/core/public/mocks'; import { getCreateExceptionListSchemaMock } from '../../../common/schemas/request/create_exception_list_schema.mock'; @@ -37,7 +33,7 @@ describe('usePersistExceptionList', () => { }); test('initializes hook', async () => { - const { result } = renderHook<PersistHookProps, ReturnPersistExceptionList>(() => + const { result } = renderHook(() => usePersistExceptionList({ http: mockKibanaHttpService, onError }) ); @@ -45,46 +41,48 @@ describe('usePersistExceptionList', () => { }); test('"isLoading" is "true" when exception item is being saved', async () => { - await act(async () => { - const { result, rerender, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionList - >(() => usePersistExceptionList({ http: mockKibanaHttpService, onError })); - await waitForNextUpdate(); + const { result, rerender } = renderHook(() => + usePersistExceptionList({ http: mockKibanaHttpService, onError }) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + act(() => { result.current[1](getCreateExceptionListSchemaMock()); - rerender(); - - expect(result.current).toEqual([{ isLoading: true, isSaved: false }, result.current[1]]); }); + rerender(); + + expect(result.current).toEqual([{ isLoading: true, isSaved: false }, result.current[1]]); }); test('"isSaved" is "true" when exception item saved successfully', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionList - >(() => usePersistExceptionList({ http: mockKibanaHttpService, onError })); - await waitForNextUpdate(); - result.current[1](getCreateExceptionListSchemaMock()); - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionList({ http: mockKibanaHttpService, onError }) + ); - expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); + await waitFor(() => new Promise((resolve) => resolve(null))); + + act(() => { + result.current[1](getCreateExceptionListSchemaMock()); }); + + await waitFor(() => + expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]) + ); }); test('it invokes "updateExceptionList" when payload has "id"', async () => { const addException = jest.spyOn(api, 'addExceptionList'); const updateException = jest.spyOn(api, 'updateExceptionList'); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionList - >(() => usePersistExceptionList({ http: mockKibanaHttpService, onError })); + const { result } = renderHook(() => + usePersistExceptionList({ http: mockKibanaHttpService, onError }) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); - await waitForNextUpdate(); + act(() => { result.current[1](getUpdateExceptionListSchemaMock()); - await waitForNextUpdate(); + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); expect(addException).not.toHaveBeenCalled(); expect(updateException).toHaveBeenCalled(); @@ -95,15 +93,14 @@ describe('usePersistExceptionList', () => { const error = new Error('persist rule failed'); jest.spyOn(api, 'addExceptionList').mockRejectedValue(error); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionList - >(() => usePersistExceptionList({ http: mockKibanaHttpService, onError })); - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionList({ http: mockKibanaHttpService, onError }) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + act(() => { result.current[1](getCreateExceptionListSchemaMock()); - await waitForNextUpdate(); - + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: false }, result.current[1]]); expect(onError).toHaveBeenCalledWith(error); }); diff --git a/x-pack/plugins/lists/public/exceptions/hooks/use_api.test.ts b/x-pack/plugins/lists/public/exceptions/hooks/use_api.test.ts index 55c8ebde7cebd..a980261ba5f86 100644 --- a/x-pack/plugins/lists/public/exceptions/hooks/use_api.test.ts +++ b/x-pack/plugins/lists/public/exceptions/hooks/use_api.test.ts @@ -5,9 +5,9 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import * as api from '@kbn/securitysolution-list-api'; -import { ExceptionsApi, useApi } from '@kbn/securitysolution-list-hooks'; +import { useApi } from '@kbn/securitysolution-list-hooks'; import type { AddExceptionListItemProps, ApiCallByIdProps, @@ -16,7 +16,6 @@ import type { UpdateExceptionListItemProps, } from '@kbn/securitysolution-io-ts-list-types'; import { coreMock } from '@kbn/core/public/mocks'; -import { HttpStart } from '@kbn/core/public'; import { ENTRIES_WITH_IDS } from '../../../common/constants.mock'; import { getUpdateExceptionListItemSchemaMock } from '../../../common/schemas/request/update_exception_list_item_schema.mock'; @@ -51,54 +50,50 @@ describe('useApi', () => { .spyOn(api, 'deleteExceptionListItemById') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = payload; + const { id, namespace_type: namespaceType } = payload; + await act(async () => { await result.current.deleteExceptionItem({ id, namespaceType, onError: jest.fn(), onSuccess: onSuccessMock, }); + }); - const expected: ApiCallByIdProps = { - http: mockKibanaHttpService, - id, - namespaceType, - signal: new AbortController().signal, - }; + const expected: ApiCallByIdProps = { + http: mockKibanaHttpService, + id, + namespaceType, + signal: new AbortController().signal, + }; - expect(spyOnDeleteExceptionListItemById).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalled(); - }); + expect(spyOnDeleteExceptionListItemById).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalled(); }); test('invokes "onError" callback if "deleteExceptionListItemById" fails', async () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'deleteExceptionListItemById').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = getExceptionListItemSchemaMock(); + const { id, namespace_type: namespaceType } = getExceptionListItemSchemaMock(); + await act(async () => { await result.current.deleteExceptionItem({ id, namespaceType, onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -110,54 +105,50 @@ describe('useApi', () => { .spyOn(api, 'deleteExceptionListById') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = payload; + const { id, namespace_type: namespaceType } = payload; + await act(async () => { await result.current.deleteExceptionList({ id, namespaceType, onError: jest.fn(), onSuccess: onSuccessMock, }); + }); - const expected: ApiCallByIdProps = { - http: mockKibanaHttpService, - id, - namespaceType, - signal: new AbortController().signal, - }; + const expected: ApiCallByIdProps = { + http: mockKibanaHttpService, + id, + namespaceType, + signal: new AbortController().signal, + }; - expect(spyOnDeleteExceptionListById).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalled(); - }); + expect(spyOnDeleteExceptionListById).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalled(); }); test('invokes "onError" callback if "deleteExceptionListById" fails', async () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'deleteExceptionListById').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + await act(async () => { await result.current.deleteExceptionList({ id, namespaceType, onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -169,58 +160,54 @@ describe('useApi', () => { .spyOn(api, 'fetchExceptionListItemById') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = payload; + const { id, namespace_type: namespaceType } = payload; + await act(async () => { await result.current.getExceptionItem({ id, namespaceType, onError: jest.fn(), onSuccess: onSuccessMock, }); - - const expected: ApiCallByIdProps = { - http: mockKibanaHttpService, - id, - namespaceType, - signal: new AbortController().signal, - }; - const expectedExceptionListItem = { - ...getExceptionListItemSchemaMock(), - entries: ENTRIES_WITH_IDS, - }; - - expect(spyOnFetchExceptionListItemById).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalledWith(expectedExceptionListItem); }); + + const expected: ApiCallByIdProps = { + http: mockKibanaHttpService, + id, + namespaceType, + signal: new AbortController().signal, + }; + const expectedExceptionListItem = { + ...getExceptionListItemSchemaMock(), + entries: ENTRIES_WITH_IDS, + }; + + expect(spyOnFetchExceptionListItemById).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalledWith(expectedExceptionListItem); }); test('invokes "onError" callback if "fetchExceptionListItemById" fails', async () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'fetchExceptionListItemById').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + await act(async () => { await result.current.getExceptionItem({ id, namespaceType, onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -232,54 +219,50 @@ describe('useApi', () => { .spyOn(api, 'fetchExceptionListById') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = payload; + const { id, namespace_type: namespaceType } = payload; + await act(async () => { await result.current.getExceptionList({ id, namespaceType, onError: jest.fn(), onSuccess: onSuccessMock, }); + }); - const expected: ApiCallByIdProps = { - http: mockKibanaHttpService, - id, - namespaceType, - signal: new AbortController().signal, - }; + const expected: ApiCallByIdProps = { + http: mockKibanaHttpService, + id, + namespaceType, + signal: new AbortController().signal, + }; - expect(spyOnFetchExceptionListById).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalled(); - }); + expect(spyOnFetchExceptionListById).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalled(); }); test('invokes "onError" callback if "fetchExceptionListById" fails', async () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'fetchExceptionListById').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + await act(async () => { await result.current.getExceptionList({ id, namespaceType, onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -291,12 +274,10 @@ describe('useApi', () => { .spyOn(api, 'fetchExceptionListsItemsByListIds') .mockResolvedValue(output); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.getExceptionListsItems({ lists: [ { id: 'myListId', listId: 'list_id', namespaceType: 'single', type: 'detection' }, @@ -311,28 +292,28 @@ describe('useApi', () => { showDetectionsListsOnly: false, showEndpointListsOnly: false, }); + }); - const expected: ApiCallByListIdProps = { - http: mockKibanaHttpService, - listIds: ['list_id'], - namespaceTypes: ['single'], - pagination: { - page: 1, - perPage: 1, - total: 0, - }, - signal: new AbortController().signal, - }; - - expect(spyOnFetchExceptionListsItemsByListIds).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalledWith({ - exceptions: [{ ...getExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }], - pagination: { - page: 1, - perPage: 1, - total: 1, - }, - }); + const expected: ApiCallByListIdProps = { + http: mockKibanaHttpService, + listIds: ['list_id'], + namespaceTypes: ['single'], + pagination: { + page: 1, + perPage: 1, + total: 0, + }, + signal: new AbortController().signal, + }; + + expect(spyOnFetchExceptionListsItemsByListIds).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalledWith({ + exceptions: [{ ...getExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }], + pagination: { + page: 1, + perPage: 1, + total: 1, + }, }); }); @@ -343,12 +324,10 @@ describe('useApi', () => { .spyOn(api, 'fetchExceptionListsItemsByListIds') .mockResolvedValue(output); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.getExceptionListsItems({ lists: [ { id: 'myListId', listId: 'list_id', namespaceType: 'single', type: 'detection' }, @@ -363,16 +342,16 @@ describe('useApi', () => { showDetectionsListsOnly: false, showEndpointListsOnly: true, }); + }); - expect(spyOnFetchExceptionListsItemsByListIds).not.toHaveBeenCalled(); - expect(onSuccessMock).toHaveBeenCalledWith({ - exceptions: [], - pagination: { - page: 0, - perPage: 20, - total: 0, - }, - }); + expect(spyOnFetchExceptionListsItemsByListIds).not.toHaveBeenCalled(); + expect(onSuccessMock).toHaveBeenCalledWith({ + exceptions: [], + pagination: { + page: 0, + perPage: 20, + total: 0, + }, }); }); @@ -380,12 +359,10 @@ describe('useApi', () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'fetchExceptionListsItemsByListIds').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.getExceptionListsItems({ lists: [ { id: 'myListId', listId: 'list_id', namespaceType: 'single', type: 'detection' }, @@ -400,9 +377,9 @@ describe('useApi', () => { showDetectionsListsOnly: false, showEndpointListsOnly: false, }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -414,24 +391,22 @@ describe('useApi', () => { .spyOn(api, 'addExceptionListItem') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.addExceptionListItem({ listItem: itemToCreate, }); + }); - const expected: AddExceptionListItemProps = { - http: mockKibanaHttpService, - listItem: getCreateExceptionListItemSchemaMock(), - signal: new AbortController().signal, - }; + const expected: AddExceptionListItemProps = { + http: mockKibanaHttpService, + listItem: getCreateExceptionListItemSchemaMock(), + signal: new AbortController().signal, + }; - expect(spyOnFetchExceptionListItemById).toHaveBeenCalledWith(expected); - }); + expect(spyOnFetchExceptionListItemById).toHaveBeenCalledWith(expected); }); }); @@ -443,24 +418,22 @@ describe('useApi', () => { .spyOn(api, 'updateExceptionListItem') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.updateExceptionListItem({ listItem: itemToUpdate, }); + }); - const expected: UpdateExceptionListItemProps = { - http: mockKibanaHttpService, - listItem: getUpdateExceptionListItemSchemaMock(), - signal: new AbortController().signal, - }; + const expected: UpdateExceptionListItemProps = { + http: mockKibanaHttpService, + listItem: getUpdateExceptionListItemSchemaMock(), + signal: new AbortController().signal, + }; - expect(spyOnUpdateExceptionListItem).toHaveBeenCalledWith(expected); - }); + expect(spyOnUpdateExceptionListItem).toHaveBeenCalledWith(expected); }); }); @@ -471,12 +444,10 @@ describe('useApi', () => { .spyOn(api, 'duplicateExceptionList') .mockResolvedValue(getExceptionListSchemaMock()); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.duplicateExceptionList({ includeExpiredExceptions: false, listId: 'my_list', @@ -484,30 +455,28 @@ describe('useApi', () => { onError: jest.fn(), onSuccess: onSuccessMock, }); + }); - const expected: DuplicateExceptionListProps = { - http: mockKibanaHttpService, - includeExpiredExceptions: false, - listId: 'my_list', - namespaceType: 'single', - signal: new AbortController().signal, - }; + const expected: DuplicateExceptionListProps = { + http: mockKibanaHttpService, + includeExpiredExceptions: false, + listId: 'my_list', + namespaceType: 'single', + signal: new AbortController().signal, + }; - expect(spyOnDuplicateExceptionList).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalled(); - }); + expect(spyOnDuplicateExceptionList).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalled(); }); test('invokes "onError" callback if "duplicateExceptionList" fails', async () => { const mockError = new Error('failed to duplicate item'); jest.spyOn(api, 'duplicateExceptionList').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.duplicateExceptionList({ includeExpiredExceptions: false, listId: 'my_list', @@ -515,9 +484,9 @@ describe('useApi', () => { onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); }); diff --git a/x-pack/plugins/lists/public/exceptions/hooks/use_exception_lists.test.ts b/x-pack/plugins/lists/public/exceptions/hooks/use_exception_lists.test.ts index 0148feff83d58..6c684d199e538 100644 --- a/x-pack/plugins/lists/public/exceptions/hooks/use_exception_lists.test.ts +++ b/x-pack/plugins/lists/public/exceptions/hooks/use_exception_lists.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, waitFor } from '@testing-library/react'; import type { ExceptionListSchema, UseExceptionListsProps, @@ -32,66 +32,53 @@ describe('useExceptionLists', () => { }); test('initializes hook', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseExceptionListsProps, - ReturnExceptionLists - >(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - await waitForNextUpdate(); - - expect(result.current).toEqual([ - true, - [], - { + const { result } = renderHook<ReturnExceptionLists, UseExceptionListsProps>(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { page: 1, perPage: 20, total: 0, }, - expect.any(Function), - expect.any(Function), - { field: 'created_at', order: 'desc' }, - expect.any(Function), - ]); - }); + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + + expect(result.current).toEqual([ + true, + [], + { + page: 1, + perPage: 20, + total: 0, + }, + expect.any(Function), + expect.any(Function), + { field: 'created_at', order: 'desc' }, + expect.any(Function), + ]); }); test('fetches exception lists', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseExceptionListsProps, - ReturnExceptionLists - >(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + const { result } = renderHook(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + await waitFor(() => { const expectedListItemsResult: ExceptionListSchema[] = getFoundExceptionListSchemaMock().data; expect(result.current).toEqual([ @@ -113,27 +100,23 @@ describe('useExceptionLists', () => { test('does not fetch specific list id if it is added to the hideLists array', async () => { const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); - await act(async () => { - const { waitForNextUpdate } = renderHook<UseExceptionListsProps, ReturnExceptionLists>(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - hideLists: ['listId-1'], - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + renderHook(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: {}, + hideLists: ['listId-1'], + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + await waitFor(() => expect(spyOnfetchExceptionLists).toHaveBeenCalledWith({ filters: '(not exception-list.attributes.list_id: listId-1* AND not exception-list-agnostic.attributes.list_id: listId-1*)', @@ -142,37 +125,33 @@ describe('useExceptionLists', () => { pagination: { page: 1, perPage: 20 }, signal: new AbortController().signal, sort: { field: 'created_at', order: 'desc' }, - }); - }); + }) + ); }); test('applies filters to query', async () => { const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); - await act(async () => { - const { waitForNextUpdate } = renderHook<UseExceptionListsProps, ReturnExceptionLists>(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: { - created_by: 'Moi', - name: 'Sample Endpoint', - }, - hideLists: ['listId-1'], - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + renderHook(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: { + created_by: 'Moi', + name: 'Sample Endpoint', + }, + hideLists: ['listId-1'], + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + await waitFor(() => expect(spyOnfetchExceptionLists).toHaveBeenCalledWith({ filters: '(exception-list.attributes.created_by:Moi OR exception-list-agnostic.attributes.created_by:Moi) AND (exception-list.attributes.name.text:Sample Endpoint OR exception-list-agnostic.attributes.name.text:Sample Endpoint) AND (not exception-list.attributes.list_id: listId-1* AND not exception-list-agnostic.attributes.list_id: listId-1*)', @@ -184,47 +163,60 @@ describe('useExceptionLists', () => { field: 'created_at', order: 'desc', }, - }); - }); + }) + ); }); test('fetches a new exception list and its items when props change', async () => { const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); - await act(async () => { - const { rerender, waitForNextUpdate } = renderHook< - UseExceptionListsProps, - ReturnExceptionLists - >( - ({ errorMessage, filterOptions, http, initialPagination, namespaceTypes, notifications }) => - useExceptionLists({ - errorMessage, - filterOptions, - http, - initialPagination, - namespaceTypes, - notifications, - }), - { - initialProps: { - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single'], - notifications: mockKibanaNotificationsService, + const { rerender } = renderHook<ReturnExceptionLists, UseExceptionListsProps>( + ({ errorMessage, filterOptions, http, initialPagination, namespaceTypes, notifications }) => + useExceptionLists({ + errorMessage, + filterOptions, + http, + initialPagination, + namespaceTypes, + notifications, + }), + { + initialProps: { + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, }, - } - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + namespaceTypes: ['single' as const], + notifications: mockKibanaNotificationsService, + }, + } + ); - rerender({ + await waitFor(() => new Promise((resolve) => resolve(null))); + + rerender({ + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single' as const, 'agnostic' as const], + notifications: mockKibanaNotificationsService, + }); + + await waitFor(() => expect(spyOnfetchExceptionLists).toHaveBeenCalledTimes(2)); + }); + + test('fetches list when refreshExceptionList callback invoked', async () => { + const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); + const { result } = renderHook<ReturnExceptionLists, UseExceptionListsProps>(() => + useExceptionLists({ errorMessage: 'Uh oh', filterOptions: {}, http: mockKibanaHttpService, @@ -235,49 +227,18 @@ describe('useExceptionLists', () => { }, namespaceTypes: ['single', 'agnostic'], notifications: mockKibanaNotificationsService, - }); - // NOTE: Only need one call here because hook already initilaized - await waitForNextUpdate(); + }) + ); - expect(spyOnfetchExceptionLists).toHaveBeenCalledTimes(2); - }); - }); - - test('fetches list when refreshExceptionList callback invoked', async () => { - const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseExceptionListsProps, - ReturnExceptionLists - >(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); - expect(typeof result.current[3]).toEqual('function'); + expect(typeof result.current[3]).toEqual('function'); - if (result.current[4] != null) { - result.current[4](); - } - // NOTE: Only need one call here because hook already initilaized - await waitForNextUpdate(); + if (result.current[4] != null) { + result.current[4](); + } - expect(spyOnfetchExceptionLists).toHaveBeenCalledTimes(2); - }); + await waitFor(() => expect(spyOnfetchExceptionLists).toHaveBeenCalledTimes(2)); }); test('invokes notifications service if "fetchExceptionLists" fails', async () => { @@ -285,26 +246,22 @@ describe('useExceptionLists', () => { const spyOnfetchExceptionLists = jest .spyOn(api, 'fetchExceptionLists') .mockRejectedValue(mockError); - await act(async () => { - const { waitForNextUpdate } = renderHook<UseExceptionListsProps, ReturnExceptionLists>(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + renderHook(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + await waitFor(() => { expect(mockKibanaNotificationsService.toasts.addError).toHaveBeenCalledWith(mockError, { title: 'Uh oh', }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_create_list_index.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_create_list_index.test.ts index 3e91e9b269830..7021d49940f26 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_create_list_index.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_create_list_index.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { useCreateListIndex } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -28,52 +28,49 @@ describe('useCreateListIndex', () => { }); it('should call Api.createListIndex when start() executes', async () => { - const { result, waitForNextUpdate } = renderHook(() => useCreateListIndex({ http: httpMock }), { + const { result } = renderHook(() => useCreateListIndex({ http: httpMock }), { wrapper: queryWrapper, }); act(() => { result.current.start(); }); - await waitForNextUpdate(); - - expect(Api.createListIndex).toHaveBeenCalledWith(expect.objectContaining({ http: httpMock })); + await waitFor(() => + expect(Api.createListIndex).toHaveBeenCalledWith(expect.objectContaining({ http: httpMock })) + ); }); it('should call onError callback when Api.createListIndex fails', async () => { const onError = jest.fn(); jest.spyOn(Api, 'createListIndex').mockRejectedValue(new Error('Mocked error')); - const { result, waitForNextUpdate } = renderHook( - () => useCreateListIndex({ http: httpMock, onError }), - { wrapper: queryWrapper } - ); + const { result } = renderHook(() => useCreateListIndex({ http: httpMock, onError }), { + wrapper: queryWrapper, + }); act(() => { result.current.start(); }); - await waitForNextUpdate(); - - expect(onError).toHaveBeenCalledWith(new Error('Mocked error'), undefined, undefined); + await waitFor(() => + expect(onError).toHaveBeenCalledWith(new Error('Mocked error'), undefined, undefined) + ); }); it('should not invalidate read index query on failure', async () => { jest.spyOn(Api, 'createListIndex').mockRejectedValue(new Error('Mocked error')); const invalidateQueriesSpy = jest.spyOn(queryClient, 'invalidateQueries'); - const { result, waitForNextUpdate } = renderHook(() => useCreateListIndex({ http: httpMock }), { + const { result } = renderHook(() => useCreateListIndex({ http: httpMock }), { wrapper: queryWrapper, }); act(() => { result.current.start(); }); - await waitForNextUpdate(); - - expect(invalidateQueriesSpy).not.toHaveBeenCalled(); + await waitFor(() => expect(invalidateQueriesSpy).not.toHaveBeenCalled()); }); it('should invalidate read index query on success', async () => { - const { result, waitForNextUpdate } = renderHook(() => useCreateListIndex({ http: httpMock }), { + const { result } = renderHook(() => useCreateListIndex({ http: httpMock }), { wrapper: queryWrapper, }); const invalidateQueriesSpy = jest.spyOn(queryClient, 'invalidateQueries'); @@ -81,8 +78,8 @@ describe('useCreateListIndex', () => { act(() => { result.current.start(); }); - await waitForNextUpdate(); - - expect(invalidateQueriesSpy).toHaveBeenCalledWith(['detectionEngine', 'listIndex']); + await waitFor(() => + expect(invalidateQueriesSpy).toHaveBeenCalledWith(['detectionEngine', 'listIndex']) + ); }); }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_delete_list.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_delete_list.test.ts index aac604a89bc8a..7a339f3e12a4a 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_delete_list.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_delete_list.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { useDeleteList } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -25,14 +25,14 @@ describe('useDeleteList', () => { }); it('invokes Api.deleteList', async () => { - const { result, waitForNextUpdate } = renderHook(() => useDeleteList()); + const { result } = renderHook(() => useDeleteList()); act(() => { result.current.start({ http: httpMock, id: 'list' }); }); - await waitForNextUpdate(); - - expect(Api.deleteList).toHaveBeenCalledWith( - expect.objectContaining({ http: httpMock, id: 'list' }) + await waitFor(() => + expect(Api.deleteList).toHaveBeenCalledWith( + expect.objectContaining({ http: httpMock, id: 'list' }) + ) ); }); }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_export_list.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_export_list.test.ts index 4977d585fe43b..8f08ad5c8bd03 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_export_list.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_export_list.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { useExportList } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -23,14 +23,14 @@ describe('useExportList', () => { }); it('invokes Api.exportList', async () => { - const { result, waitForNextUpdate } = renderHook(() => useExportList()); + const { result } = renderHook(() => useExportList()); act(() => { result.current.start({ http: httpMock, listId: 'list' }); }); - await waitForNextUpdate(); - - expect(Api.exportList).toHaveBeenCalledWith( - expect.objectContaining({ http: httpMock, listId: 'list' }) + await waitFor(() => + expect(Api.exportList).toHaveBeenCalledWith( + expect.objectContaining({ http: httpMock, listId: 'list' }) + ) ); }); }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_import_list.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_import_list.test.ts index 4a1557e94fe79..d56478a0321be 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_import_list.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_import_list.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { useImportList } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -32,7 +32,7 @@ describe('useImportList', () => { it('invokes Api.importList', async () => { const fileMock = 'my file' as unknown as File; - const { result, waitForNextUpdate } = renderHook(() => useImportList()); + const { result } = renderHook(() => useImportList()); act(() => { result.current.start({ @@ -42,21 +42,21 @@ describe('useImportList', () => { type: 'keyword', }); }); - await waitForNextUpdate(); - - expect(Api.importList).toHaveBeenCalledWith( - expect.objectContaining({ - file: fileMock, - listId: 'my_list_id', - type: 'keyword', - }) + await waitFor(() => + expect(Api.importList).toHaveBeenCalledWith( + expect.objectContaining({ + file: fileMock, + listId: 'my_list_id', + type: 'keyword', + }) + ) ); }); it('populates result with the response of Api.importList', async () => { const fileMock = 'my file' as unknown as File; - const { result, waitForNextUpdate } = renderHook(() => useImportList()); + const { result } = renderHook(() => useImportList()); act(() => { result.current.start({ @@ -66,15 +66,13 @@ describe('useImportList', () => { type: 'keyword', }); }); - await waitForNextUpdate(); - - expect(result.current.result).toEqual(getListResponseMock()); + await waitFor(() => expect(result.current.result).toEqual(getListResponseMock())); }); it('error is populated if importList rejects', async () => { const fileMock = 'my file' as unknown as File; (Api.importList as jest.Mock).mockRejectedValue(new Error('whoops')); - const { result, waitForNextUpdate } = renderHook(() => useImportList()); + const { result } = renderHook(() => useImportList()); act(() => { result.current.start({ @@ -85,9 +83,9 @@ describe('useImportList', () => { }); }); - await waitForNextUpdate(); - - expect(result.current.result).toBeUndefined(); - expect(result.current.error).toEqual(new Error('whoops')); + await waitFor(() => { + expect(result.current.result).toBeUndefined(); + expect(result.current.error).toEqual(new Error('whoops')); + }); }); }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_read_list_index.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_read_list_index.test.ts index dc57825d9acfa..643ac2df5b05b 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_read_list_index.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_read_list_index.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook, waitFor } from '@testing-library/react'; import { useReadListIndex } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -30,16 +30,11 @@ describe.skip('useReadListIndex', () => { }); it('should call Api.readListIndex when is enabled', async () => { - const { waitForNextUpdate } = renderHook( - () => useReadListIndex({ http: httpMock, isEnabled: true }), - { - wrapper: queryWrapper, - } - ); - - await waitForNextUpdate(); + renderHook(() => useReadListIndex({ http: httpMock, isEnabled: true }), { + wrapper: queryWrapper, + }); - expect(Api.readListIndex).toHaveBeenCalled(); + await waitFor(() => expect(Api.readListIndex).toHaveBeenCalled()); }); it('should not call Api.readListIndex when is not enabled', async () => { @@ -54,15 +49,10 @@ describe.skip('useReadListIndex', () => { const onError = jest.fn(); jest.spyOn(Api, 'readListIndex').mockRejectedValue(new Error('Mocked error')); - const { waitForNextUpdate } = renderHook( - () => useReadListIndex({ http: httpMock, isEnabled: true, onError }), - { - wrapper: queryWrapper, - } - ); - - await waitForNextUpdate(); + renderHook(() => useReadListIndex({ http: httpMock, isEnabled: true, onError }), { + wrapper: queryWrapper, + }); - expect(onError).toHaveBeenCalledWith(new Error('Mocked error')); + await waitFor(() => expect(onError).toHaveBeenCalledWith(new Error('Mocked error'))); }); }); diff --git a/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts b/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts index f4baa8779201f..dbf15b1faa5f4 100644 --- a/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts +++ b/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts @@ -13,7 +13,7 @@ import { } from '@kbn/core/server'; /** - * Copied from x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts + * Copied from x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/utils.ts * We cannot put this in kbn package just yet as the types from 'src/core/server' aren't a kbn package yet and this would pull in a lot of copied things. * TODO: Once more types are moved into kbn package we can move this into a kbn package. */ @@ -46,7 +46,7 @@ const statusToErrorMessage = ( }; /** - * Copied from x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts + * Copied from x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/utils.ts * We cannot put this in kbn package just yet as the types from 'src/core/server' aren't a kbn package yet and this would pull in a lot of copied things. * TODO: Once more types are moved into kbn package we can move this into a kbn package. */ @@ -87,7 +87,7 @@ export class SiemResponseFactory { } /** - * Copied from x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts + * Copied from x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/utils.ts * We cannot put this in kbn package just yet as the types from 'src/core/server' aren't a kbn package yet and this would pull in a lot of copied things. * TODO: Once more types are moved into kbn package we can move this into a kbn package. */ diff --git a/x-pack/plugins/lists/server/routes/utils/route_validation.test.ts b/x-pack/plugins/lists/server/routes/utils/route_validation.test.ts index aeb5447285939..e7b9d936f4a6d 100644 --- a/x-pack/plugins/lists/server/routes/utils/route_validation.test.ts +++ b/x-pack/plugins/lists/server/routes/utils/route_validation.test.ts @@ -11,7 +11,7 @@ import { RouteValidationResultFactory } from '@kbn/core/server'; import { buildRouteValidation } from './route_validation'; /** - * Copied from x-pack/plugins/security_solution/server/utils/build_validation/route_validation.test.ts + * Copied from x-pack/solutions/security/plugins/security_solution/server/utils/build_validation/route_validation.test.ts * TODO: Once we can move this into a kbn package because the types such as RouteValidationResultFactory are in packages, then please do. */ describe('Route Validation with ', () => { diff --git a/x-pack/plugins/lists/server/routes/utils/route_validation.ts b/x-pack/plugins/lists/server/routes/utils/route_validation.ts index ceeb63c002653..e88629955fa9d 100644 --- a/x-pack/plugins/lists/server/routes/utils/route_validation.ts +++ b/x-pack/plugins/lists/server/routes/utils/route_validation.ts @@ -32,7 +32,7 @@ type RequestValidationResult<T> = }; /** - * Copied from x-pack/plugins/security_solution/server/utils/build_validation/route_validation.ts + * Copied from x-pack/solutions/security/plugins/security_solution/server/utils/build_validation/route_validation.ts * This really should be in @kbn/securitysolution-io-ts-utils rather than copied yet again, however, this has types * from a lot of places such as RouteValidationResultFactory from core/server which in turn can pull in @kbn/schema * which cannot work on the front end and @kbn/securitysolution-io-ts-utils works on both front and backend. diff --git a/x-pack/plugins/logstash/kibana.jsonc b/x-pack/plugins/logstash/kibana.jsonc index 83665c1ed344e..2242e6254fffc 100644 --- a/x-pack/plugins/logstash/kibana.jsonc +++ b/x-pack/plugins/logstash/kibana.jsonc @@ -4,7 +4,7 @@ "owner": [ "@elastic/logstash" ], - "group": "observability", + "group": "platform", "visibility": "private", "plugin": { "id": "logstash", diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx index 3e09a7e0fd81d..0bc116f254e98 100644 --- a/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx @@ -12,7 +12,7 @@ import { dynamic } from '@kbn/shared-ux-utility'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import type { RegionMapVisRenderValue } from './region_map_fn'; import { REGION_MAP_RENDER } from './types'; -import { getAnalytics, getCoreI18n, getTheme } from '../../kibana_services'; +import { getCore } from '../../kibana_services'; const Component = dynamic(async () => { const { RegionMapVisualization } = await import('./region_map_visualization'); @@ -40,11 +40,7 @@ export const regionMapRenderer = { }; render( - <KibanaRenderContextProvider - analytics={getAnalytics()} - i18n={getCoreI18n()} - theme={getTheme()} - > + <KibanaRenderContextProvider {...getCore()}> <Component {...props} /> </KibanaRenderContextProvider>, domNode diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx index 9bc828e617bb6..f3079825df3e9 100644 --- a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx @@ -12,7 +12,7 @@ import { dynamic } from '@kbn/shared-ux-utility'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import type { TileMapVisRenderValue } from './tile_map_fn'; import { TILE_MAP_RENDER } from './types'; -import { getAnalytics, getCoreI18n, getTheme } from '../../kibana_services'; +import { getCore } from '../../kibana_services'; const Component = dynamic(async () => { const { TileMapVisualization } = await import('./tile_map_visualization'); @@ -40,11 +40,7 @@ export const tileMapRenderer = { }; render( - <KibanaRenderContextProvider - analytics={getAnalytics()} - i18n={getCoreI18n()} - theme={getTheme()} - > + <KibanaRenderContextProvider {...getCore()}> <Component {...props} /> </KibanaRenderContextProvider>, domNode diff --git a/x-pack/plugins/maps/public/lens/choropleth_chart/expression_renderer.tsx b/x-pack/plugins/maps/public/lens/choropleth_chart/expression_renderer.tsx index 6e7e9a2da4222..988affb8fa7e9 100644 --- a/x-pack/plugins/maps/public/lens/choropleth_chart/expression_renderer.tsx +++ b/x-pack/plugins/maps/public/lens/choropleth_chart/expression_renderer.tsx @@ -15,7 +15,7 @@ import type { KibanaExecutionContext } from '@kbn/core-execution-context-common' import { ChartSizeEvent } from '@kbn/chart-expressions-common'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import type { MapsPluginStartDependencies } from '../../plugin'; -import { getAnalytics, getCoreI18n, getTheme } from '../../kibana_services'; +import { getCore } from '../../kibana_services'; import type { ChoroplethChartProps } from './types'; export const RENDERER_ID = 'lens_choropleth_chart_renderer'; @@ -99,11 +99,7 @@ export function getExpressionRenderer(coreSetup: CoreSetup<MapsPluginStartDepend handlers.event(chartSizeEvent); ReactDOM.render( - <KibanaRenderContextProvider - analytics={getAnalytics()} - i18n={getCoreI18n()} - theme={getTheme()} - > + <KibanaRenderContextProvider {...getCore()}> <ChoroplethChart {...config} formatFactory={plugins.fieldFormats.deserialize} diff --git a/x-pack/plugins/maps/public/render_app.tsx b/x-pack/plugins/maps/public/render_app.tsx index 71caec5db8c49..a1bf84746a76f 100644 --- a/x-pack/plugins/maps/public/render_app.tsx +++ b/x-pack/plugins/maps/public/render_app.tsx @@ -18,9 +18,6 @@ import type { SavedObjectTaggingPluginStart } from '@kbn/saved-objects-tagging-p import { TableListViewKibanaProvider } from '@kbn/content-management-table-list-view-table'; import { getCoreChrome, - getAnalytics, - getCoreI18n, - getTheme, getMapsCapabilities, getEmbeddableService, getDocLinks, @@ -110,7 +107,7 @@ export async function renderApp( } render( - <KibanaRenderContextProvider analytics={getAnalytics()} i18n={getCoreI18n()} theme={getTheme()}> + <KibanaRenderContextProvider {...getCore()}> <AppUsageTracker> <TableListViewKibanaProvider {...{ diff --git a/x-pack/plugins/monitoring/kibana.jsonc b/x-pack/plugins/monitoring/kibana.jsonc index 5ba71cdc96ee3..31c4d9f4e10d9 100644 --- a/x-pack/plugins/monitoring/kibana.jsonc +++ b/x-pack/plugins/monitoring/kibana.jsonc @@ -4,7 +4,7 @@ "owner": [ "@elastic/stack-monitoring" ], - "group": "observability", + "group": "platform", "visibility": "private", "plugin": { "id": "monitoring", @@ -23,7 +23,6 @@ "share" ], "optionalPlugins": [ - "infra", "usageCollection", "home", "cloud", diff --git a/x-pack/plugins/monitoring/public/application/contexts/external_config_context.tsx b/x-pack/plugins/monitoring/public/application/contexts/external_config_context.tsx index e86262defb65e..45791507fa726 100644 --- a/x-pack/plugins/monitoring/public/application/contexts/external_config_context.tsx +++ b/x-pack/plugins/monitoring/public/application/contexts/external_config_context.tsx @@ -14,6 +14,7 @@ export interface ExternalConfig { renderReactApp: boolean; staleStatusThresholdSeconds: number; isCcsEnabled: boolean; + logsIndices: string; } export const ExternalConfigContext = createContext({} as ExternalConfig); diff --git a/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.js.snap b/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.js.snap deleted file mode 100644 index 91b3dea5ab049..0000000000000 --- a/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.js.snap +++ /dev/null @@ -1,296 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Logs should render a link to filter by cluster uuid 1`] = ` -<EuiCallOut - iconType="logsApp" - size="m" - title="Want to see more log entries?" -> - <RedirectAppLinks> - <MemoizedFormattedMessage - defaultMessage="Visit {link} to dive deeper." - id="xpack.monitoring.logs.listing.linkText" - values={ - Object { - "link": <EuiLink> - Discover - </EuiLink>, - } - } - /> - </RedirectAppLinks> -</EuiCallOut> -`; - -exports[`Logs should render a link to filter by cluster uuid and index uuid 1`] = ` -<EuiCallOut - iconType="logsApp" - size="m" - title="Want to see more log entries?" -> - <RedirectAppLinks> - <MemoizedFormattedMessage - defaultMessage="Visit {link} to dive deeper." - id="xpack.monitoring.logs.listing.linkText" - values={ - Object { - "link": <EuiLink> - Discover - </EuiLink>, - } - } - /> - </RedirectAppLinks> -</EuiCallOut> -`; - -exports[`Logs should render a link to filter by cluster uuid and node uuid 1`] = ` -<EuiCallOut - iconType="logsApp" - size="m" - title="Want to see more log entries?" -> - <RedirectAppLinks> - <MemoizedFormattedMessage - defaultMessage="Visit {link} to dive deeper." - id="xpack.monitoring.logs.listing.linkText" - values={ - Object { - "link": <EuiLink> - Discover - </EuiLink>, - } - } - /> - </RedirectAppLinks> -</EuiCallOut> -`; - -exports[`Logs should render a reason if the logs are disabled 1`] = ` -<div> - <EuiTitle> - <h1> - Recent Log Entries - </h1> - </EuiTitle> - <EuiText - size="s" - > - <p> - Showing the most recent log entries for this cluster, up to 15 total log entries. - </p> - </EuiText> - <EuiSpacer - size="m" - /> - <Reason - reason={Object {}} - /> - <EuiSpacer - size="m" - /> -</div> -`; - -exports[`Logs should render fewer columns for node or index view 1`] = ` -Array [ - Object { - "field": "timestamp", - "name": "Timestamp", - "render": [Function], - "width": "12%", - }, - Object { - "field": "level", - "name": "Level", - "width": "5%", - }, - Object { - "field": "type", - "name": "Type", - "render": [Function], - "width": "10%", - }, - Object { - "field": "message", - "name": "Message", - "width": "55%", - }, - Object { - "field": "component", - "name": "Component", - "width": "18%", - }, -] -`; - -exports[`Logs should render normally 1`] = ` -<div> - <EuiTitle> - <h1> - Recent Log Entries - </h1> - </EuiTitle> - <EuiText - size="s" - > - <p> - Showing the most recent log entries for this cluster, up to 10 total log entries. - </p> - </EuiText> - <EuiSpacer - size="m" - /> - <EuiBasicTable - columns={ - Array [ - Object { - "field": "timestamp", - "name": "Timestamp", - "render": [Function], - "width": "12%", - }, - Object { - "field": "level", - "name": "Level", - "width": "5%", - }, - Object { - "field": "type", - "name": "Type", - "render": [Function], - "width": "10%", - }, - Object { - "field": "message", - "name": "Message", - "width": "45%", - }, - Object { - "field": "component", - "name": "Component", - "width": "15%", - }, - Object { - "field": "node", - "name": "Node", - "width": "13%", - }, - ] - } - items={ - Array [ - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:49:33.783Z", - "type": "deprecation", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:49:26.781Z", - "type": "deprecation", - }, - Object { - "component": "o.e.c.r.a.DiskThresholdMonitor", - "level": "WARN", - "message": "high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.5gb[6.3%], shards will be relocated away from this node", - "node": "foobar2", - "timestamp": "2019-03-18T12:49:24.414Z", - "type": "server", - }, - Object { - "component": "o.e.c.r.a.DiskThresholdMonitor", - "level": "INFO", - "message": "rerouting shards: [high disk watermark exceeded on one or more nodes]", - "node": "foobar", - "timestamp": "2019-03-18T12:49:24.414Z", - "type": "server", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:49:11.776Z", - "type": "deprecation", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:49:08.770Z", - "type": "deprecation", - }, - Object { - "component": "o.e.c.r.a.DiskThresholdMonitor", - "level": "WARN", - "message": "high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.3gb[6.2%], shards will be relocated away from this node", - "node": "foobar", - "timestamp": "2019-03-18T12:48:59.409Z", - "type": "server", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:48:53.753Z", - "type": "deprecation", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:48:53.753Z", - "type": "deprecation", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar2", - "timestamp": "2019-03-18T12:48:46.745Z", - "type": "deprecation", - }, - ] - } - noItemsMessage={ - <EuiI18n - default="No items found" - token="euiBasicTable.noItemsMessage" - /> - } - tableLayout="fixed" - /> - <EuiSpacer - size="m" - /> - <EuiCallOut - iconType="logsApp" - size="m" - title="Want to see more log entries?" - > - <RedirectAppLinks> - <MemoizedFormattedMessage - defaultMessage="Visit {link} to dive deeper." - id="xpack.monitoring.logs.listing.linkText" - values={ - Object { - "link": <EuiLink> - Discover - </EuiLink>, - } - } - /> - </RedirectAppLinks> - </EuiCallOut> -</div> -`; diff --git a/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.tsx.snap b/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.tsx.snap new file mode 100644 index 0000000000000..36ebe98fb014d --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.tsx.snap @@ -0,0 +1,304 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Logs should render a link to filter by cluster uuid 1`] = ` +<EuiCallOut + iconType="logsApp" + size="m" + title="Want to see more log entries?" +> + <RedirectAppLinks> + <MemoizedFormattedMessage + defaultMessage="Visit {link} to dive deeper." + id="xpack.monitoring.logs.listing.linkText" + values={ + Object { + "link": <EuiLink + href="http://localhost:5601/app/discover" + > + Discover + </EuiLink>, + } + } + /> + </RedirectAppLinks> +</EuiCallOut> +`; + +exports[`Logs should render a link to filter by cluster uuid and index uuid 1`] = ` +<EuiCallOut + iconType="logsApp" + size="m" + title="Want to see more log entries?" +> + <RedirectAppLinks> + <MemoizedFormattedMessage + defaultMessage="Visit {link} to dive deeper." + id="xpack.monitoring.logs.listing.linkText" + values={ + Object { + "link": <EuiLink + href="http://localhost:5601/app/discover" + > + Discover + </EuiLink>, + } + } + /> + </RedirectAppLinks> +</EuiCallOut> +`; + +exports[`Logs should render a link to filter by cluster uuid and node uuid 1`] = ` +<EuiCallOut + iconType="logsApp" + size="m" + title="Want to see more log entries?" +> + <RedirectAppLinks> + <MemoizedFormattedMessage + defaultMessage="Visit {link} to dive deeper." + id="xpack.monitoring.logs.listing.linkText" + values={ + Object { + "link": <EuiLink + href="http://localhost:5601/app/discover" + > + Discover + </EuiLink>, + } + } + /> + </RedirectAppLinks> +</EuiCallOut> +`; + +exports[`Logs should render a reason if the logs are disabled 1`] = ` +<div> + <EuiTitle> + <h1> + Recent Log Entries + </h1> + </EuiTitle> + <EuiText + size="s" + > + <p> + Showing the most recent log entries for this cluster, up to 15 total log entries. + </p> + </EuiText> + <EuiSpacer + size="m" + /> + <Reason + reason={Object {}} + /> + <EuiSpacer + size="m" + /> +</div> +`; + +exports[`Logs should render fewer columns for node or index view 1`] = ` +Array [ + Object { + "field": "timestamp", + "name": "Timestamp", + "render": [Function], + "width": "12%", + }, + Object { + "field": "level", + "name": "Level", + "width": "5%", + }, + Object { + "field": "type", + "name": "Type", + "render": [Function], + "width": "10%", + }, + Object { + "field": "message", + "name": "Message", + "width": "55%", + }, + Object { + "field": "component", + "name": "Component", + "width": "18%", + }, +] +`; + +exports[`Logs should render normally 1`] = ` +<div> + <EuiTitle> + <h1> + Recent Log Entries + </h1> + </EuiTitle> + <EuiText + size="s" + > + <p> + Showing the most recent log entries for this cluster, up to 10 total log entries. + </p> + </EuiText> + <EuiSpacer + size="m" + /> + <EuiBasicTable + columns={ + Array [ + Object { + "field": "timestamp", + "name": "Timestamp", + "render": [Function], + "width": "12%", + }, + Object { + "field": "level", + "name": "Level", + "width": "5%", + }, + Object { + "field": "type", + "name": "Type", + "render": [Function], + "width": "10%", + }, + Object { + "field": "message", + "name": "Message", + "width": "45%", + }, + Object { + "field": "component", + "name": "Component", + "width": "15%", + }, + Object { + "field": "node", + "name": "Node", + "width": "13%", + }, + ] + } + items={ + Array [ + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:49:33.783Z", + "type": "deprecation", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:49:26.781Z", + "type": "deprecation", + }, + Object { + "component": "o.e.c.r.a.DiskThresholdMonitor", + "level": "WARN", + "message": "high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.5gb[6.3%], shards will be relocated away from this node", + "node": "foobar2", + "timestamp": "2019-03-18T12:49:24.414Z", + "type": "server", + }, + Object { + "component": "o.e.c.r.a.DiskThresholdMonitor", + "level": "INFO", + "message": "rerouting shards: [high disk watermark exceeded on one or more nodes]", + "node": "foobar", + "timestamp": "2019-03-18T12:49:24.414Z", + "type": "server", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:49:11.776Z", + "type": "deprecation", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:49:08.770Z", + "type": "deprecation", + }, + Object { + "component": "o.e.c.r.a.DiskThresholdMonitor", + "level": "WARN", + "message": "high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.3gb[6.2%], shards will be relocated away from this node", + "node": "foobar", + "timestamp": "2019-03-18T12:48:59.409Z", + "type": "server", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:48:53.753Z", + "type": "deprecation", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:48:53.753Z", + "type": "deprecation", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar2", + "timestamp": "2019-03-18T12:48:46.745Z", + "type": "deprecation", + }, + ] + } + noItemsMessage={ + <EuiI18n + default="No items found" + token="euiBasicTable.noItemsMessage" + /> + } + tableLayout="fixed" + /> + <EuiSpacer + size="m" + /> + <EuiCallOut + iconType="logsApp" + size="m" + title="Want to see more log entries?" + > + <RedirectAppLinks> + <MemoizedFormattedMessage + defaultMessage="Visit {link} to dive deeper." + id="xpack.monitoring.logs.listing.linkText" + values={ + Object { + "link": <EuiLink + href="http://localhost:5601/app/discover" + > + Discover + </EuiLink>, + } + } + /> + </RedirectAppLinks> + </EuiCallOut> +</div> +`; diff --git a/x-pack/plugins/monitoring/public/components/logs/__snapshots__/reason.test.js.snap b/x-pack/plugins/monitoring/public/components/logs/__snapshots__/reason.test.tsx.snap similarity index 100% rename from x-pack/plugins/monitoring/public/components/logs/__snapshots__/reason.test.js.snap rename to x-pack/plugins/monitoring/public/components/logs/__snapshots__/reason.test.tsx.snap diff --git a/x-pack/plugins/monitoring/public/components/logs/index.js b/x-pack/plugins/monitoring/public/components/logs/index.tsx similarity index 100% rename from x-pack/plugins/monitoring/public/components/logs/index.js rename to x-pack/plugins/monitoring/public/components/logs/index.tsx diff --git a/x-pack/plugins/monitoring/public/components/logs/logs.js b/x-pack/plugins/monitoring/public/components/logs/logs.js deleted file mode 100644 index 82fdac6ea1f0d..0000000000000 --- a/x-pack/plugins/monitoring/public/components/logs/logs.js +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { PureComponent, useContext } from 'react'; -import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; -import { upperFirst } from 'lodash'; -import { Legacy } from '../../legacy_shims'; -import { EuiBasicTable, EuiTitle, EuiSpacer, EuiText, EuiCallOut, EuiLink } from '@elastic/eui'; -import { formatDateTimeLocal } from '../../../common/formatting'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { Reason } from './reason'; -import { useKibana } from '@kbn/kibana-react-plugin/public'; -import { ExternalConfigContext } from '../../application/contexts/external_config_context'; - -const getFormattedDateTimeLocal = (timestamp) => { - const timezone = Legacy.shims.uiSettings?.get('dateFormat:tz'); - return formatDateTimeLocal(timestamp, timezone); -}; - -const columnTimestampTitle = i18n.translate('xpack.monitoring.logs.listing.timestampTitle', { - defaultMessage: 'Timestamp', -}); - -const columnLevelTitle = i18n.translate('xpack.monitoring.logs.listing.levelTitle', { - defaultMessage: 'Level', -}); - -const columnTypeTitle = i18n.translate('xpack.monitoring.logs.listing.typeTitle', { - defaultMessage: 'Type', -}); - -const columnMessageTitle = i18n.translate('xpack.monitoring.logs.listing.messageTitle', { - defaultMessage: 'Message', -}); - -const columnComponentTitle = i18n.translate('xpack.monitoring.logs.listing.componentTitle', { - defaultMessage: 'Component', -}); - -const columnNodeTitle = i18n.translate('xpack.monitoring.logs.listing.nodeTitle', { - defaultMessage: 'Node', -}); - -const columns = [ - { - field: 'timestamp', - name: columnTimestampTitle, - width: '12%', - render: (timestamp) => getFormattedDateTimeLocal(timestamp), - }, - { - field: 'level', - name: columnLevelTitle, - width: '5%', - }, - { - field: 'type', - name: columnTypeTitle, - width: '10%', - render: (type) => upperFirst(type), - }, - { - field: 'message', - name: columnMessageTitle, - width: '55%', - }, - { - field: 'component', - name: columnComponentTitle, - width: '18%', - }, -]; - -const clusterColumns = [ - { - field: 'timestamp', - name: columnTimestampTitle, - width: '12%', - render: (timestamp) => getFormattedDateTimeLocal(timestamp), - }, - { - field: 'level', - name: columnLevelTitle, - width: '5%', - }, - { - field: 'type', - name: columnTypeTitle, - width: '10%', - render: (type) => upperFirst(type), - }, - { - field: 'message', - name: columnMessageTitle, - width: '45%', - }, - { - field: 'component', - name: columnComponentTitle, - width: '15%', - }, - { - field: 'node', - name: columnNodeTitle, - width: '13%', - }, -]; - -function getLogsUiLink(clusterUuid, nodeId, indexUuid, sharePlugin, logsIndices) { - const params = []; - if (clusterUuid) { - params.push(`elasticsearch.cluster.uuid:${clusterUuid}`); - } - if (nodeId) { - params.push(`elasticsearch.node.id:${nodeId}`); - } - if (indexUuid) { - params.push(`elasticsearch.index.name:${indexUuid}`); - } - - const filter = params.join(' and '); - const discoverLocator = sharePlugin.url.locators.get('DISCOVER_APP_LOCATOR'); - - const base = discoverLocator.getRedirectUrl({ - dataViewSpec: { - id: logsIndices, - title: logsIndices, - }, - query: { - language: 'kuery', - query: filter, - }, - }); - - return base; -} - -export const Logs = (props) => { - const { - services: { share }, - } = useKibana(); - const externalConfig = useContext(ExternalConfigContext); - return <LogsContent sharePlugin={share} logsIndices={externalConfig.logsIndices} {...props} />; -}; -export class LogsContent extends PureComponent { - renderLogs() { - const { - logs: { enabled, logs }, - nodeId, - indexUuid, - } = this.props; - if (!enabled) { - return null; - } - - return ( - <EuiBasicTable items={logs || []} columns={nodeId || indexUuid ? columns : clusterColumns} /> - ); - } - - renderNoLogs() { - const { - logs: { enabled, reason }, - } = this.props; - if (enabled) { - return null; - } - - return <Reason reason={reason} />; - } - - renderCallout() { - const { capabilities: uiCapabilities, infra, kibanaServices } = Legacy.shims; - const show = uiCapabilities.discover && uiCapabilities.discover.show; - - const { - logs: { enabled }, - nodeId, - clusterUuid, - indexUuid, - sharePlugin, - logsIndices, - } = this.props; - - if (!enabled || !show) { - return null; - } - - return infra ? ( - <EuiCallOut - size="m" - title={i18n.translate('xpack.monitoring.logs.listing.calloutTitle', { - defaultMessage: 'Want to see more log entries?', - })} - iconType="logsApp" - > - <RedirectAppLinks coreStart={kibanaServices}> - <FormattedMessage - id="xpack.monitoring.logs.listing.linkText" - defaultMessage="Visit {link} to dive deeper." - values={{ - link: ( - <EuiLink - href={getLogsUiLink(clusterUuid, nodeId, indexUuid, sharePlugin, logsIndices)} - > - {i18n.translate('xpack.monitoring.logs.listing.calloutLinkText', { - defaultMessage: 'Discover', - })} - </EuiLink> - ), - }} - /> - </RedirectAppLinks> - </EuiCallOut> - ) : null; - } - - render() { - const { - nodeId, - indexUuid, - logs: { limit }, - } = this.props; - - let description; - - if (nodeId) { - description = i18n.translate('xpack.monitoring.logs.listing.nodePageDescription', { - defaultMessage: - 'Showing the most recent log entries for this node, up to {limit} total log entries.', - values: { - limit, - }, - }); - } else if (indexUuid) { - description = i18n.translate('xpack.monitoring.logs.listing.indexPageDescription', { - defaultMessage: - 'Showing the most recent log entries for this index, up to {limit} total log entries.', - values: { - limit, - }, - }); - } else { - description = i18n.translate('xpack.monitoring.logs.listing.clusterPageDescription', { - defaultMessage: - 'Showing the most recent log entries for this cluster, up to {limit} total log entries.', - values: { - limit, - }, - }); - } - - return ( - <div> - <EuiTitle> - <h1> - {i18n.translate('xpack.monitoring.logs.listing.pageTitle', { - defaultMessage: 'Recent Log Entries', - })} - </h1> - </EuiTitle> - <EuiText size="s"> - <p>{description}</p> - </EuiText> - <EuiSpacer size="m" /> - {this.renderLogs()} - {this.renderNoLogs()} - <EuiSpacer size="m" /> - {this.renderCallout()} - </div> - ); - } -} diff --git a/x-pack/plugins/monitoring/public/components/logs/logs.test.js b/x-pack/plugins/monitoring/public/components/logs/logs.test.js deleted file mode 100644 index 9d3f68c854505..0000000000000 --- a/x-pack/plugins/monitoring/public/components/logs/logs.test.js +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { shallow } from 'enzyme'; -import { LogsContent } from './logs'; -import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; - -jest.mock('../../legacy_shims', () => ({ - Legacy: { - shims: { - getBasePath: () => '', - capabilities: { discover: { show: true } }, - infra: {}, - }, - }, -})); - -const sharePlugin = { - url: { - locators: { - get: () => { - return sharePluginMock.createLocator(); - }, - }, - }, -}; - -const logs = { - enabled: true, - limit: 10, - logs: [ - { - timestamp: '2019-03-18T12:49:33.783Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:49:26.781Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:49:24.414Z', - component: 'o.e.c.r.a.DiskThresholdMonitor', - level: 'WARN', - type: 'server', - node: 'foobar2', - message: - 'high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.5gb[6.3%], shards will be relocated away from this node', - }, - { - timestamp: '2019-03-18T12:49:24.414Z', - component: 'o.e.c.r.a.DiskThresholdMonitor', - level: 'INFO', - type: 'server', - node: 'foobar', - message: 'rerouting shards: [high disk watermark exceeded on one or more nodes]', - }, - { - timestamp: '2019-03-18T12:49:11.776Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:49:08.770Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:48:59.409Z', - component: 'o.e.c.r.a.DiskThresholdMonitor', - level: 'WARN', - type: 'server', - node: 'foobar', - message: - 'high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.3gb[6.2%], shards will be relocated away from this node', - }, - { - timestamp: '2019-03-18T12:48:53.753Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:48:53.753Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:48:46.745Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar2', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - ], -}; - -describe('Logs', () => { - it('should render normally', () => { - const component = shallow( - <LogsContent sharePlugin={sharePlugin} logsIndices={'logs-*,*:logs-*'} logs={logs} /> - ); - expect(component).toMatchSnapshot(); - }); - - it('should render fewer columns for node or index view', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={logs} - nodeId="12345" - /> - ); - expect(component.find('EuiBasicTable').prop('columns')).toMatchSnapshot(); - }); - - it('should render a link to filter by cluster uuid', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={logs} - clusterUuid="12345" - /> - ); - expect(component.find('EuiCallOut')).toMatchSnapshot(); - }); - - it('should render a link to filter by cluster uuid and node uuid', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={logs} - clusterUuid="12345" - nodeId="6789" - /> - ); - expect(component.find('EuiCallOut')).toMatchSnapshot(); - }); - - it('should render a link to filter by cluster uuid and index uuid', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={logs} - clusterUuid="12345" - indexUuid="6789" - /> - ); - expect(component.find('EuiCallOut')).toMatchSnapshot(); - }); - - it('should render a reason if the logs are disabled', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={{ enabled: false, limit: 15, reason: {} }} - /> - ); - expect(component).toMatchSnapshot(); - }); -}); diff --git a/x-pack/plugins/monitoring/public/components/logs/logs.test.tsx b/x-pack/plugins/monitoring/public/components/logs/logs.test.tsx new file mode 100644 index 0000000000000..f103288a24980 --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/logs/logs.test.tsx @@ -0,0 +1,198 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; +import { LogsContent } from './logs'; +import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; + +jest.mock('../../legacy_shims', () => ({ + Legacy: { + shims: { + getBasePath: () => '', + capabilities: { discover: { show: true } }, + }, + }, +})); + +const sharePlugin = { + url: { + locators: { + get: () => { + const locatorMock = sharePluginMock.createLocator(); + locatorMock.getRedirectUrl.mockReturnValue('http://localhost:5601/app/discover'); + return locatorMock; + }, + }, + }, +} as unknown as ReturnType<typeof sharePluginMock.createStartContract>; + +const logs = { + enabled: true, + limit: 10, + logs: [ + { + timestamp: '2019-03-18T12:49:33.783Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:49:26.781Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:49:24.414Z', + component: 'o.e.c.r.a.DiskThresholdMonitor', + level: 'WARN', + type: 'server', + node: 'foobar2', + message: + 'high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.5gb[6.3%], shards will be relocated away from this node', + }, + { + timestamp: '2019-03-18T12:49:24.414Z', + component: 'o.e.c.r.a.DiskThresholdMonitor', + level: 'INFO', + type: 'server', + node: 'foobar', + message: 'rerouting shards: [high disk watermark exceeded on one or more nodes]', + }, + { + timestamp: '2019-03-18T12:49:11.776Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:49:08.770Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:48:59.409Z', + component: 'o.e.c.r.a.DiskThresholdMonitor', + level: 'WARN', + type: 'server', + node: 'foobar', + message: + 'high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.3gb[6.2%], shards will be relocated away from this node', + }, + { + timestamp: '2019-03-18T12:48:53.753Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:48:53.753Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:48:46.745Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar2', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + ], +}; + +describe('Logs', () => { + it('should render normally', () => { + const component = shallow( + <LogsContent sharePlugin={sharePlugin} logsIndices={'logs-*,*:logs-*'} logs={logs} /> + ); + expect(component).toMatchSnapshot(); + }); + + it('should render fewer columns for node or index view', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={logs} + nodeId="12345" + /> + ); + expect(component.find('EuiBasicTable').prop('columns')).toMatchSnapshot(); + }); + + it('should render a link to filter by cluster uuid', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={logs} + clusterUuid="12345" + /> + ); + expect(component.find('EuiCallOut')).toMatchSnapshot(); + }); + + it('should render a link to filter by cluster uuid and node uuid', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={logs} + clusterUuid="12345" + nodeId="6789" + /> + ); + expect(component.find('EuiCallOut')).toMatchSnapshot(); + }); + + it('should render a link to filter by cluster uuid and index uuid', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={logs} + clusterUuid="12345" + indexUuid="6789" + /> + ); + expect(component.find('EuiCallOut')).toMatchSnapshot(); + }); + + it('should render a reason if the logs are disabled', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={{ enabled: false, limit: 15, reason: {} }} + /> + ); + expect(component).toMatchSnapshot(); + }); +}); diff --git a/x-pack/plugins/monitoring/public/components/logs/logs.tsx b/x-pack/plugins/monitoring/public/components/logs/logs.tsx new file mode 100644 index 0000000000000..b17129d90eac0 --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/logs/logs.tsx @@ -0,0 +1,310 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { PureComponent, useContext } from 'react'; +import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; +import { upperFirst } from 'lodash'; +import { EuiBasicTable, EuiTitle, EuiSpacer, EuiText, EuiCallOut, EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { SharePluginStart } from '@kbn/share-plugin/public'; +import { Reason, type IReason } from './reason'; +import { formatDateTimeLocal } from '../../../common/formatting'; +import { Legacy } from '../../legacy_shims'; +import { ExternalConfigContext } from '../../application/contexts/external_config_context'; +import { MonitoringStartServices } from '../../types'; + +interface LogsProps { + logs: { + logs?: Array<{ + timestamp: string; + component: string; + level: string; + type: string; + node: string; + message: string; + }>; + enabled: boolean; + limit: number; + reason?: IReason; + }; + nodeId?: string; + indexUuid?: string; + clusterUuid?: string; +} + +interface LogsContentProps extends LogsProps { + sharePlugin: SharePluginStart; + logsIndices: string; +} + +const getFormattedDateTimeLocal = (timestamp: number | Date) => { + const timezone = Legacy.shims.uiSettings?.get('dateFormat:tz'); + return formatDateTimeLocal(timestamp, timezone); +}; + +const columnTimestampTitle = i18n.translate('xpack.monitoring.logs.listing.timestampTitle', { + defaultMessage: 'Timestamp', +}); + +const columnLevelTitle = i18n.translate('xpack.monitoring.logs.listing.levelTitle', { + defaultMessage: 'Level', +}); + +const columnTypeTitle = i18n.translate('xpack.monitoring.logs.listing.typeTitle', { + defaultMessage: 'Type', +}); + +const columnMessageTitle = i18n.translate('xpack.monitoring.logs.listing.messageTitle', { + defaultMessage: 'Message', +}); + +const columnComponentTitle = i18n.translate('xpack.monitoring.logs.listing.componentTitle', { + defaultMessage: 'Component', +}); + +const columnNodeTitle = i18n.translate('xpack.monitoring.logs.listing.nodeTitle', { + defaultMessage: 'Node', +}); + +const columns = [ + { + field: 'timestamp', + name: columnTimestampTitle, + width: '12%', + render: (timestamp: number | Date) => getFormattedDateTimeLocal(timestamp), + }, + { + field: 'level', + name: columnLevelTitle, + width: '5%', + }, + { + field: 'type', + name: columnTypeTitle, + width: '10%', + render: (type: string) => upperFirst(type), + }, + { + field: 'message', + name: columnMessageTitle, + width: '55%', + }, + { + field: 'component', + name: columnComponentTitle, + width: '18%', + }, +]; + +const clusterColumns = [ + { + field: 'timestamp', + name: columnTimestampTitle, + width: '12%', + render: (timestamp: number | Date) => getFormattedDateTimeLocal(timestamp), + }, + { + field: 'level', + name: columnLevelTitle, + width: '5%', + }, + { + field: 'type', + name: columnTypeTitle, + width: '10%', + render: (type: string) => upperFirst(type), + }, + { + field: 'message', + name: columnMessageTitle, + width: '45%', + }, + { + field: 'component', + name: columnComponentTitle, + width: '15%', + }, + { + field: 'node', + name: columnNodeTitle, + width: '13%', + }, +]; + +function getDiscoverLink( + clusterUuid?: string, + nodeId?: string, + indexUuid?: string, + sharePlugin?: SharePluginStart, + logsIndices?: string +) { + const params = []; + if (clusterUuid) { + params.push(`elasticsearch.cluster.uuid:${clusterUuid}`); + } + if (nodeId) { + params.push(`elasticsearch.node.id:${nodeId}`); + } + if (indexUuid) { + params.push(`elasticsearch.index.name:${indexUuid}`); + } + + const filter = params.join(' and '); + const discoverLocator = sharePlugin?.url.locators.get('DISCOVER_APP_LOCATOR'); + + const base = discoverLocator?.getRedirectUrl({ + dataViewSpec: { + id: logsIndices, + title: logsIndices, + }, + query: { + language: 'kuery', + query: filter, + }, + }); + + return base; +} + +export const Logs = (props: LogsProps) => { + const { + services: { share }, + } = useKibana<MonitoringStartServices>(); + const externalConfig = useContext(ExternalConfigContext); + return <LogsContent sharePlugin={share} logsIndices={externalConfig.logsIndices} {...props} />; +}; + +export class LogsContent extends PureComponent<LogsContentProps> { + renderLogs() { + const { + logs: { enabled, logs }, + nodeId, + indexUuid, + } = this.props; + if (!enabled) { + return null; + } + + return ( + <EuiBasicTable items={logs || []} columns={nodeId || indexUuid ? columns : clusterColumns} /> + ); + } + + renderNoLogs() { + const { + logs: { enabled, reason }, + } = this.props; + if (enabled) { + return null; + } + + return <Reason reason={reason} />; + } + + renderCallout() { + const { capabilities: uiCapabilities, kibanaServices } = Legacy.shims; + const show = uiCapabilities.discover && uiCapabilities.discover.show; + + const { + logs: { enabled }, + nodeId, + clusterUuid, + indexUuid, + sharePlugin, + logsIndices, + } = this.props; + + if (!enabled || !show) { + return null; + } + const discoverLink = getDiscoverLink(clusterUuid, nodeId, indexUuid, sharePlugin, logsIndices); + + return discoverLink ? ( + <EuiCallOut + size="m" + title={i18n.translate('xpack.monitoring.logs.listing.calloutTitle', { + defaultMessage: 'Want to see more log entries?', + })} + iconType="logsApp" + > + <RedirectAppLinks coreStart={kibanaServices}> + <FormattedMessage + id="xpack.monitoring.logs.listing.linkText" + defaultMessage="Visit {link} to dive deeper." + values={{ + link: ( + <EuiLink href={discoverLink}> + {i18n.translate('xpack.monitoring.logs.listing.calloutLinkText', { + defaultMessage: 'Discover', + })} + </EuiLink> + ), + }} + /> + </RedirectAppLinks> + </EuiCallOut> + ) : null; + } + + render() { + const { + nodeId, + indexUuid, + logs: { limit }, + } = this.props; + + let description; + + if (nodeId) { + description = i18n.translate('xpack.monitoring.logs.listing.nodePageDescription', { + defaultMessage: + 'Showing the most recent log entries for this node, up to {limit} total log entries.', + values: { + limit, + }, + }); + } else if (indexUuid) { + description = i18n.translate('xpack.monitoring.logs.listing.indexPageDescription', { + defaultMessage: + 'Showing the most recent log entries for this index, up to {limit} total log entries.', + values: { + limit, + }, + }); + } else { + description = i18n.translate('xpack.monitoring.logs.listing.clusterPageDescription', { + defaultMessage: + 'Showing the most recent log entries for this cluster, up to {limit} total log entries.', + values: { + limit, + }, + }); + } + + return ( + <div> + <EuiTitle> + <h1> + {i18n.translate('xpack.monitoring.logs.listing.pageTitle', { + defaultMessage: 'Recent Log Entries', + })} + </h1> + </EuiTitle> + <EuiText size="s"> + <p>{description}</p> + </EuiText> + <EuiSpacer size="m" /> + {this.renderLogs()} + {this.renderNoLogs()} + <EuiSpacer size="m" /> + {this.renderCallout()} + </div> + ); + } +} diff --git a/x-pack/plugins/monitoring/public/components/logs/reason.js b/x-pack/plugins/monitoring/public/components/logs/reason.js deleted file mode 100644 index 4444c818d5cce..0000000000000 --- a/x-pack/plugins/monitoring/public/components/logs/reason.js +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiCallOut, EuiLink } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { Legacy } from '../../legacy_shims'; -import { Monospace } from '../metricbeat_migration/instruction_steps/components/monospace/monospace'; - -export const Reason = ({ reason }) => { - const filebeatUrl = Legacy.shims.docLinks.links.filebeat.installation; - const elasticsearchUrl = Legacy.shims.docLinks.links.filebeat.elasticsearchModule; - const troubleshootUrl = Legacy.shims.docLinks.links.monitoring.troubleshootKibana; - let title = i18n.translate('xpack.monitoring.logs.reason.defaultTitle', { - defaultMessage: 'No log data found', - }); - let message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.defaultMessage" - defaultMessage="We did not find any log data and we are unable to diagnose why. {link}" - values={{ - link: ( - <EuiLink target="_blank" href={filebeatUrl}> - <FormattedMessage - id="xpack.monitoring.logs.reason.defaultMessageLink" - defaultMessage="Please verify your setup is correct." - /> - </EuiLink> - ), - }} - /> - ); - - if (false === reason.indexPatternExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noIndexPatternTitle', { - defaultMessage: 'No log data found', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noIndexPatternMessage" - defaultMessage="Set up {link}, then configure your Elasticsearch output to your monitoring cluster." - values={{ - link: ( - <EuiLink target="_blank" href={filebeatUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noIndexPatternLink', { - defaultMessage: 'Filebeat', - })} - </EuiLink> - ), - }} - /> - ); - } else if ( - false === reason.indexPatternInTimeRangeExists || - (false === reason.typeExists && reason.typeExistsAtAnyTime) - ) { - title = i18n.translate('xpack.monitoring.logs.reason.noIndexPatternInTimePeriodTitle', { - defaultMessage: 'No logs for the selected time', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noIndexPatternInTimePeriodMessage" - defaultMessage="Use the time filter to adjust your timeframe." - /> - ); - } else if (false === reason.typeExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noTypeTitle', { - defaultMessage: 'No logs for Elasticsearch', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noTypeMessage" - defaultMessage="Follow {link} to set up Elasticsearch." - values={{ - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noTypeLink', { - defaultMessage: 'these directions', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.usingStructuredLogs) { - title = i18n.translate('xpack.monitoring.logs.reason.notUsingStructuredLogsTitle', { - defaultMessage: 'No structured logs found', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.notUsingStructuredLogsMessage" - defaultMessage="Check if the {varPaths} setting {link}." - values={{ - varPaths: <Monospace>var.paths</Monospace>, - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.notUsingStructuredLogsLink', { - defaultMessage: 'points to JSON logs', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.clusterExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noClusterTitle', { - defaultMessage: 'No logs for this cluster', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noClusterMessage" - defaultMessage="Check that your {link} is correct." - values={{ - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noClusterLink', { - defaultMessage: 'setup', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.nodeExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noNodeTitle', { - defaultMessage: 'No logs for this Elasticsearch node', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noNodeMessage" - defaultMessage="Check that your {link} is correct." - values={{ - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noNodeLink', { - defaultMessage: 'setup', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.indexExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noIndexTitle', { - defaultMessage: 'No logs for this index', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noIndexMessage" - defaultMessage="We found logs, but none for this index. If this problem continues, check that your {link} is correct." - values={{ - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noIndexLink', { - defaultMessage: 'setup', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.correctIndexName) { - title = i18n.translate('xpack.monitoring.logs.reason.correctIndexNameTitle', { - defaultMessage: 'Corrupted filebeat index', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.correctIndexNameMessage" - defaultMessage="There is an issue reading from your filebeat indices. {link}." - values={{ - link: ( - <EuiLink target="_blank" href={troubleshootUrl}> - {i18n.translate('xpack.monitoring.logs.reason.correctIndexNameLink', { - defaultMessage: 'Click here for more information', - })} - </EuiLink> - ), - }} - /> - ); - } - - return ( - <EuiCallOut title={title} color="warning" iconType="help"> - <p>{message}</p> - </EuiCallOut> - ); -}; diff --git a/x-pack/plugins/monitoring/public/components/logs/reason.test.js b/x-pack/plugins/monitoring/public/components/logs/reason.test.tsx similarity index 100% rename from x-pack/plugins/monitoring/public/components/logs/reason.test.js rename to x-pack/plugins/monitoring/public/components/logs/reason.test.tsx diff --git a/x-pack/plugins/monitoring/public/components/logs/reason.tsx b/x-pack/plugins/monitoring/public/components/logs/reason.tsx new file mode 100644 index 0000000000000..82a4f788df98b --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/logs/reason.tsx @@ -0,0 +1,205 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiCallOut, EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { Legacy } from '../../legacy_shims'; +import { Monospace } from '../metricbeat_migration/instruction_steps/components/monospace/monospace'; + +export interface IReason { + indexPatternExists?: boolean; + indexPatternInTimeRangeExists?: boolean; + typeExists?: boolean; + typeExistsAtAnyTime?: boolean; + usingStructuredLogs?: boolean; + clusterExists?: boolean; + nodeExists?: boolean | null; + indexExists?: boolean; + correctIndexName?: boolean; +} + +export const Reason = ({ reason }: { reason?: IReason }) => { + const filebeatUrl = Legacy.shims.docLinks.links.filebeat.installation; + const elasticsearchUrl = Legacy.shims.docLinks.links.filebeat.elasticsearchModule; + const troubleshootUrl = Legacy.shims.docLinks.links.monitoring.troubleshootKibana; + let title = i18n.translate('xpack.monitoring.logs.reason.defaultTitle', { + defaultMessage: 'No log data found', + }); + let message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.defaultMessage" + defaultMessage="We did not find any log data and we are unable to diagnose why. {link}" + values={{ + link: ( + <EuiLink target="_blank" href={filebeatUrl}> + <FormattedMessage + id="xpack.monitoring.logs.reason.defaultMessageLink" + defaultMessage="Please verify your setup is correct." + /> + </EuiLink> + ), + }} + /> + ); + + if (false === reason?.indexPatternExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noIndexPatternTitle', { + defaultMessage: 'No log data found', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noIndexPatternMessage" + defaultMessage="Set up {link}, then configure your Elasticsearch output to your monitoring cluster." + values={{ + link: ( + <EuiLink target="_blank" href={filebeatUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noIndexPatternLink', { + defaultMessage: 'Filebeat', + })} + </EuiLink> + ), + }} + /> + ); + } else if ( + false === reason?.indexPatternInTimeRangeExists || + (false === reason?.typeExists && reason.typeExistsAtAnyTime) + ) { + title = i18n.translate('xpack.monitoring.logs.reason.noIndexPatternInTimePeriodTitle', { + defaultMessage: 'No logs for the selected time', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noIndexPatternInTimePeriodMessage" + defaultMessage="Use the time filter to adjust your timeframe." + /> + ); + } else if (false === reason?.typeExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noTypeTitle', { + defaultMessage: 'No logs for Elasticsearch', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noTypeMessage" + defaultMessage="Follow {link} to set up Elasticsearch." + values={{ + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noTypeLink', { + defaultMessage: 'these directions', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.usingStructuredLogs) { + title = i18n.translate('xpack.monitoring.logs.reason.notUsingStructuredLogsTitle', { + defaultMessage: 'No structured logs found', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.notUsingStructuredLogsMessage" + defaultMessage="Check if the {varPaths} setting {link}." + values={{ + varPaths: <Monospace>var.paths</Monospace>, + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.notUsingStructuredLogsLink', { + defaultMessage: 'points to JSON logs', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.clusterExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noClusterTitle', { + defaultMessage: 'No logs for this cluster', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noClusterMessage" + defaultMessage="Check that your {link} is correct." + values={{ + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noClusterLink', { + defaultMessage: 'setup', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.nodeExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noNodeTitle', { + defaultMessage: 'No logs for this Elasticsearch node', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noNodeMessage" + defaultMessage="Check that your {link} is correct." + values={{ + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noNodeLink', { + defaultMessage: 'setup', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.indexExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noIndexTitle', { + defaultMessage: 'No logs for this index', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noIndexMessage" + defaultMessage="We found logs, but none for this index. If this problem continues, check that your {link} is correct." + values={{ + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noIndexLink', { + defaultMessage: 'setup', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.correctIndexName) { + title = i18n.translate('xpack.monitoring.logs.reason.correctIndexNameTitle', { + defaultMessage: 'Corrupted filebeat index', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.correctIndexNameMessage" + defaultMessage="There is an issue reading from your filebeat indices. {link}." + values={{ + link: ( + <EuiLink target="_blank" href={troubleshootUrl}> + {i18n.translate('xpack.monitoring.logs.reason.correctIndexNameLink', { + defaultMessage: 'Click here for more information', + })} + </EuiLink> + ), + }} + /> + ); + } + + return ( + <EuiCallOut title={title} color="warning" iconType="help"> + <p>{message}</p> + </EuiCallOut> + ); +}; diff --git a/x-pack/plugins/monitoring/public/legacy_shims.ts b/x-pack/plugins/monitoring/public/legacy_shims.ts index 32322a2b4f7ac..b2b5cafedfb69 100644 --- a/x-pack/plugins/monitoring/public/legacy_shims.ts +++ b/x-pack/plugins/monitoring/public/legacy_shims.ts @@ -22,7 +22,6 @@ import { TriggersAndActionsUIPublicPluginStart } from '@kbn/triggers-actions-ui- import { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; import { ActionTypeModel, RuleTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; -import type { InfraClientStartExports } from '@kbn/infra-plugin/public'; import { MonitoringStartPluginDependencies, LegacyMonitoringStartPluginDependencies, @@ -74,7 +73,6 @@ export interface IShims { usageCollection: UsageCollectionSetup; kibanaServices: CoreStart & { usageCollection: UsageCollectionSetup }; appMountParameters: AppMountParameters; - infra?: InfraClientStartExports; } export class Legacy { @@ -87,7 +85,6 @@ export class Legacy { triggersActionsUi, usageCollection, appMountParameters, - infra, }: LegacyMonitoringStartPluginDependencies) { this._shims = { toastNotifications: core.notifications.toasts, @@ -146,7 +143,6 @@ export class Legacy { usageCollection, }, appMountParameters, - infra, }; } diff --git a/x-pack/plugins/monitoring/public/plugin.ts b/x-pack/plugins/monitoring/public/plugin.ts index 02033d839e1ae..b526a37ceb6de 100644 --- a/x-pack/plugins/monitoring/public/plugin.ts +++ b/x-pack/plugins/monitoring/public/plugin.ts @@ -111,7 +111,6 @@ export class MonitoringPlugin usageCollection: plugins.usageCollection, appMountParameters: params, dataViews: pluginsStart.dataViews, - infra: pluginsStart.infra, }; Legacy.init({ @@ -126,7 +125,6 @@ export class MonitoringPlugin usageCollection: deps.usageCollection, appMountParameters: deps.appMountParameters, dataViews: deps.dataViews, - infra: deps.infra, share: deps.share, }); diff --git a/x-pack/plugins/monitoring/public/types.ts b/x-pack/plugins/monitoring/public/types.ts index 1df9894ca9327..93598557ee58f 100644 --- a/x-pack/plugins/monitoring/public/types.ts +++ b/x-pack/plugins/monitoring/public/types.ts @@ -15,7 +15,6 @@ export type { MLJobs } from '../server/lib/elasticsearch/get_ml_jobs'; import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import { DashboardStart } from '@kbn/dashboard-plugin/public'; import { FleetStart } from '@kbn/fleet-plugin/public'; -import type { InfraClientStartExports } from '@kbn/infra-plugin/public'; import { SharePluginStart } from '@kbn/share-plugin/public'; import { ReactNode } from 'react'; @@ -27,7 +26,6 @@ export interface MonitoringStartPluginDependencies { dataViews: DataViewsPublicPluginStart; dashboard?: DashboardStart; fleet?: FleetStart; - infra?: InfraClientStartExports; share: SharePluginStart; } diff --git a/x-pack/plugins/monitoring/server/lib/setup/collection/get_collection_status.test.ts b/x-pack/plugins/monitoring/server/lib/setup/collection/get_collection_status.test.ts index ce03cc5aecf3b..efdcde6d1f937 100644 --- a/x-pack/plugins/monitoring/server/lib/setup/collection/get_collection_status.test.ts +++ b/x-pack/plugins/monitoring/server/lib/setup/collection/get_collection_status.test.ts @@ -6,7 +6,6 @@ */ import { featuresPluginMock } from '@kbn/features-plugin/server/mocks'; -import { infraPluginMock } from '@kbn/infra-plugin/server/mocks'; import { loggerMock } from '@kbn/logging-mocks'; import { usageCollectionPluginMock } from '@kbn/usage-collection-plugin/server/mocks'; import { configSchema, createConfig } from '../../../config'; @@ -37,7 +36,6 @@ const mockReq = ( plugins: { usageCollection: usageCollectionSetup, features: featuresPluginMock.createSetup(), - infra: infraPluginMock.createSetupContract(), }, }, }, diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts b/x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts index 593f3c9b2b4ab..61253d93dbebf 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts +++ b/x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts @@ -26,7 +26,6 @@ export function enableAlertsRoute(server: MonitoringCore, npRoute: RouteDependen async (context, request, response) => { try { const alertingContext = await context.alerting; - const infraContext = await context.infra; const actionContext = await context.actions; const alerts = RulesFactory.getAll(); @@ -39,7 +38,7 @@ export function enableAlertsRoute(server: MonitoringCore, npRoute: RouteDependen if (!isSufficientlySecure || !hasPermanentEncryptionKey) { server.log.info( - `Skipping rule creation for "${infraContext.spaceId}" space; Stack Monitoring rules require API keys to be enabled and an encryption key to be configured.` + `Skipping rule creation; Stack Monitoring rules require API keys to be enabled and an encryption key to be configured.` ); return response.ok({ body: { @@ -90,9 +89,7 @@ export function enableAlertsRoute(server: MonitoringCore, npRoute: RouteDependen alerts.map((alert) => alert.createIfDoesNotExist(rulesClient, actionsClient, actions)) ); - server.log.info( - `Created ${createdAlerts.length} alerts for "${infraContext.spaceId}" space` - ); + server.log.info(`Created ${createdAlerts.length} alerts`); return response.ok({ body: { createdAlerts } }); } catch (err) { diff --git a/x-pack/plugins/monitoring/server/types.ts b/x-pack/plugins/monitoring/server/types.ts index 14ef949b93949..ea15ce98117e5 100644 --- a/x-pack/plugins/monitoring/server/types.ts +++ b/x-pack/plugins/monitoring/server/types.ts @@ -25,7 +25,6 @@ import type { import type { AlertingApiRequestHandlerContext } from '@kbn/alerting-plugin/server'; import type { RacApiRequestHandlerContext } from '@kbn/rule-registry-plugin/server'; import { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; -import { InfraPluginSetup, InfraRequestHandlerContext } from '@kbn/infra-plugin/server'; import { LicensingPluginStart } from '@kbn/licensing-plugin/server'; import { FeaturesPluginSetup } from '@kbn/features-plugin/server'; import { EncryptedSavedObjectsPluginSetup } from '@kbn/encrypted-saved-objects-plugin/server'; @@ -51,14 +50,12 @@ export interface PluginsSetup { usageCollection?: UsageCollectionSetup; features: FeaturesPluginSetup; alerting?: AlertingServerSetup; - infra: InfraPluginSetup; cloud?: CloudSetup; } export type RequestHandlerContextMonitoringPlugin = CustomRequestHandlerContext<{ actions?: ActionsApiRequestHandlerContext; alerting?: AlertingApiRequestHandlerContext; - infra: InfraRequestHandlerContext; ruleRegistry?: RacApiRequestHandlerContext; }>; diff --git a/x-pack/plugins/monitoring/tsconfig.json b/x-pack/plugins/monitoring/tsconfig.json index 56063b3e06ceb..75676ed06e3c4 100644 --- a/x-pack/plugins/monitoring/tsconfig.json +++ b/x-pack/plugins/monitoring/tsconfig.json @@ -17,7 +17,6 @@ "@kbn/cloud-plugin", "@kbn/encrypted-saved-objects-plugin", "@kbn/features-plugin", - "@kbn/infra-plugin", "@kbn/licensing-plugin", "@kbn/triggers-actions-ui-plugin", "@kbn/expect", diff --git a/x-pack/plugins/observability_solution/apm/common/service_groups.ts b/x-pack/plugins/observability_solution/apm/common/service_groups.ts index 035aa06c83d32..a393399bbb4a8 100644 --- a/x-pack/plugins/observability_solution/apm/common/service_groups.ts +++ b/x-pack/plugins/observability_solution/apm/common/service_groups.ts @@ -17,7 +17,6 @@ import { export const LABELS = 'labels'; // implies labels.* wildcard export const APM_SERVICE_GROUP_SAVED_OBJECT_TYPE = 'apm-service-group'; -export const SERVICE_GROUP_COLOR_DEFAULT = '#D1DAE7'; export const MAX_NUMBER_OF_SERVICE_GROUPS = 500; export interface ServiceGroup { diff --git a/x-pack/plugins/observability_solution/apm/kibana.jsonc b/x-pack/plugins/observability_solution/apm/kibana.jsonc index bcb0801fc6394..0b8e8bd70a9a6 100644 --- a/x-pack/plugins/observability_solution/apm/kibana.jsonc +++ b/x-pack/plugins/observability_solution/apm/kibana.jsonc @@ -39,6 +39,7 @@ "uiActions", "logsDataAccess", "savedSearch", + "entityManager" ], "optionalPlugins": [ "actions", diff --git a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/constants.ts b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/constants.ts index 806a5d1dd1c28..bd333b40e5a69 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/constants.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/constants.ts @@ -8,7 +8,6 @@ import { SettingsSpec } from '@elastic/charts'; export const DEFAULT_DATE_FORMAT = 'HH:mm:ss'; -export const CHART_ANNOTATION_RED_COLOR = '#BD271E'; export const CHART_SETTINGS: Partial<SettingsSpec> = { showLegend: false, }; diff --git a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/failed_transaction_chart.tsx b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/failed_transaction_chart.tsx index f5031282ad7ad..b917d6226465c 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/failed_transaction_chart.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/failed_transaction_chart.tsx @@ -7,7 +7,6 @@ /* Error Rate */ import React from 'react'; -import chroma from 'chroma-js'; import { EuiFlexItem, EuiPanel, @@ -155,7 +154,7 @@ function FailedTransactionChart({ <AlertActiveTimeRangeAnnotation alertStart={alertStart} alertEnd={alertEnd} - color={chroma(transparentize('#F04E981A', 0.2)).hex().toUpperCase()} + color={transparentize(euiTheme.colors.danger, 0.2)} id={'alertActiveRect'} key={'alertActiveRect'} />, diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/entities/entity_link/entity_link.test.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/entities/entity_link/entity_link.test.tsx index cdf6f23eb53d9..4515c2cdd5714 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/entities/entity_link/entity_link.test.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/entities/entity_link/entity_link.test.tsx @@ -173,7 +173,9 @@ describe('Entity link', () => { renderEntityLink({ isEntityCentricExperienceEnabled: true, serviceEntitySummaryMockReturnValue: { - serviceEntitySummary: { dataStreamTypes: ['metrics'] } as unknown as ServiceEntitySummary, + serviceEntitySummary: { + ['data_stream.type']: ['metrics'], + } as unknown as ServiceEntitySummary, serviceEntitySummaryStatus: FETCH_STATUS.SUCCESS, }, hasApmDataFetcherMockReturnValue: { @@ -200,7 +202,9 @@ describe('Entity link', () => { renderEntityLink({ isEntityCentricExperienceEnabled: true, serviceEntitySummaryMockReturnValue: { - serviceEntitySummary: { dataStreamTypes: ['metrics'] } as unknown as ServiceEntitySummary, + serviceEntitySummary: { + ['data_stream.type']: ['metrics'], + } as unknown as ServiceEntitySummary, serviceEntitySummaryStatus: FETCH_STATUS.SUCCESS, }, hasApmDataFetcherMockReturnValue: { diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx index 1d8c39b1aa98e..c75c8985f3a17 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx @@ -13,6 +13,7 @@ import type { Filter } from '@kbn/es-query'; import { ApmPluginStartDeps } from '../../../../../plugin'; import { getLayerList } from './map_layers/get_layer_list'; import { MapTypes } from '../../../../../../common/mobile/constants'; +import { StyleColorParams } from './map_layers/style_color_params'; function EmbeddedMapComponent({ selectedMap, @@ -21,6 +22,11 @@ function EmbeddedMapComponent({ kuery = '', filters, dataView, + styleColors = { + lineColor: '', + labelColor: '', + labelOutlineColor: '', + }, }: { selectedMap: MapTypes; start: string; @@ -28,6 +34,7 @@ function EmbeddedMapComponent({ kuery?: string; filters: Filter[]; dataView?: DataView; + styleColors?: StyleColorParams; }) { const { maps } = useKibana<ApmPluginStartDeps>().services; @@ -37,9 +44,10 @@ function EmbeddedMapComponent({ selectedMap, maps, dataViewId: dataView?.id, + styleColors, }) : []; - }, [selectedMap, maps, dataView?.id]); + }, [selectedMap, maps, dataView?.id, styleColors]); return ( <div diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/index.tsx index ed49a521b9d02..3afaa9ce429b7 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/index.tsx @@ -9,9 +9,11 @@ import React, { useState } from 'react'; import { DataView } from '@kbn/data-views-plugin/common'; import { EuiSpacer } from '@elastic/eui'; import type { Filter } from '@kbn/es-query'; +import { useEuiTheme } from '@elastic/eui'; import { EmbeddedMap } from './embedded_map'; import { MapTypes } from '../../../../../../common/mobile/constants'; import { EmbeddedMapSelect } from './embedded_map_select'; +import { StyleColorParams } from './map_layers/style_color_params'; export function GeoMap({ start, @@ -27,7 +29,13 @@ export function GeoMap({ dataView?: DataView; }) { const [selectedMap, selectMap] = useState(MapTypes.Http); + const { euiTheme } = useEuiTheme(); + const styleColors = { + lineColor: euiTheme.colors.textParagraph, + labelColor: euiTheme.colors.textParagraph, + labelOutlineColor: euiTheme.colors.backgroundBasePlain, + } as StyleColorParams; return ( <> <EmbeddedMapSelect selectedMap={selectedMap} onChange={selectMap} /> @@ -44,6 +52,7 @@ export function GeoMap({ kuery={kuery} filters={filters} dataView={dataView} + styleColors={styleColors} /> </div> </> diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_http_requests_map_layer_list.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_http_requests_map_layer_list.ts index 0aff60d6e155c..98adacc76953d 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_http_requests_map_layer_list.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_http_requests_map_layer_list.ts @@ -26,6 +26,7 @@ import { } from '../../../../../../../common/es_fields/apm'; import { getLayerStyle, PalleteColors } from './get_map_layer_style'; import { MobileSpanSubtype, MobileSpanType } from '../../../../../../../common/mobile/constants'; +import { StyleColorParams } from './style_color_params'; interface VectorLayerDescriptor extends BaseVectorLayerDescriptor { sourceDescriptor: EMSFileSourceDescriptor; @@ -41,7 +42,11 @@ const label = i18n.translate('xpack.apm.serviceOverview.embeddedMap.httpRequests defaultMessage: 'HTTP requests', }); -export function getHttpRequestsLayerList(maps: MapsStartApi | undefined, dataViewId: string) { +export function getHttpRequestsLayerList( + maps: MapsStartApi | undefined, + dataViewId: string, + styleColors: StyleColorParams +) { const whereQuery = { language: 'kuery', query: `${PROCESSOR_EVENT}:${ProcessorEvent.span} and ${SPAN_SUBTYPE}:${MobileSpanSubtype.Http} and ${SPAN_TYPE}:${MobileSpanType.External}`, @@ -74,7 +79,7 @@ export function getHttpRequestsLayerList(maps: MapsStartApi | undefined, dataVie id: 'world_countries', tooltipProperties: [COUNTRY_NAME], }, - style: getLayerStyle(HTTP_REQUEST_PER_COUNTRY, PalleteColors.BluetoRed), + style: getLayerStyle(HTTP_REQUEST_PER_COUNTRY, PalleteColors.BluetoRed, styleColors), id: uuidv4(), label: i18n.translate('xpack.apm.serviceOverview.embeddedMap.httpRequests.country.label', { defaultMessage: 'HTTP requests per country', @@ -113,7 +118,7 @@ export function getHttpRequestsLayerList(maps: MapsStartApi | undefined, dataVie id: 'administrative_regions_lvl2', tooltipProperties: ['region_iso_code'], }, - style: getLayerStyle(HTTP_REQUESTS_PER_REGION, PalleteColors.YellowtoRed), + style: getLayerStyle(HTTP_REQUESTS_PER_REGION, PalleteColors.YellowtoRed, styleColors), id: uuidv4(), label: i18n.translate('xpack.apm.serviceOverview.embeddedMap.httpRequests.region.label', { defaultMessage: 'HTTP requests per region', diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_layer_list.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_layer_list.ts index 0b6d736ad2551..848991d79f0bd 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_layer_list.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_layer_list.ts @@ -8,23 +8,26 @@ import type { MapsStartApi } from '@kbn/maps-plugin/public'; import { LayerDescriptor } from '@kbn/maps-plugin/common'; import { getHttpRequestsLayerList } from './get_http_requests_map_layer_list'; import { getSessionMapLayerList } from './get_session_map_layer_list'; +import { StyleColorParams } from './style_color_params'; import { MapTypes } from '../../../../../../../common/mobile/constants'; export function getLayerList({ selectedMap, maps, dataViewId, + styleColors, }: { selectedMap: MapTypes; maps: MapsStartApi | undefined; dataViewId: string; + styleColors: StyleColorParams; }): LayerDescriptor[] { switch (selectedMap) { case MapTypes.Http: - return getHttpRequestsLayerList(maps, dataViewId); + return getHttpRequestsLayerList(maps, dataViewId, styleColors); case MapTypes.Session: - return getSessionMapLayerList(maps, dataViewId); + return getSessionMapLayerList(maps, dataViewId, styleColors); default: - return getHttpRequestsLayerList(maps, dataViewId); + return getHttpRequestsLayerList(maps, dataViewId, styleColors); } } diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_map_layer_style.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_map_layer_style.ts index 05581765a0aa6..392ccc31ce0b1 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_map_layer_style.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_map_layer_style.ts @@ -15,12 +15,19 @@ import { SYMBOLIZE_AS_TYPES, } from '@kbn/maps-plugin/common'; +import { StyleColorParams } from './style_color_params'; + export enum PalleteColors { BluetoRed = 'Blue to Red', YellowtoRed = 'Yellow to Red', } -export function getLayerStyle(fieldName: string, color: PalleteColors): VectorStyleDescriptor { +export function getLayerStyle( + fieldName: string, + color: PalleteColors, + styleColors: StyleColorParams +): VectorStyleDescriptor { + const { lineColor, labelColor, labelOutlineColor } = styleColors; return { type: 'VECTOR', properties: { @@ -41,7 +48,7 @@ export function getLayerStyle(fieldName: string, color: PalleteColors): VectorSt }, lineColor: { type: STYLE_TYPE.DYNAMIC, - options: { color: '#3d3d3d', fieldMetaOptions: { isEnabled: true } }, + options: { color: lineColor, fieldMetaOptions: { isEnabled: true } }, }, lineWidth: { type: STYLE_TYPE.STATIC, options: { size: 1 } }, iconSize: { type: STYLE_TYPE.STATIC, options: { size: 6 } }, @@ -72,12 +79,12 @@ export function getLayerStyle(fieldName: string, color: PalleteColors): VectorSt }, labelColor: { type: STYLE_TYPE.STATIC, - options: { color: '#3d3d3d' }, + options: { color: labelColor }, }, labelSize: { type: STYLE_TYPE.STATIC, options: { size: 14 } }, labelBorderColor: { type: STYLE_TYPE.STATIC, - options: { color: '#FFFFFF' }, + options: { color: labelOutlineColor }, }, symbolizeAs: { options: { value: SYMBOLIZE_AS_TYPES.CIRCLE } }, labelBorderSize: { options: { size: LABEL_BORDER_SIZES.SMALL } }, diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_session_map_layer_list.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_session_map_layer_list.ts index 4a6e858085dac..b71d3bd316b65 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_session_map_layer_list.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_session_map_layer_list.ts @@ -22,6 +22,7 @@ import { SESSION_ID, } from '../../../../../../../common/es_fields/apm'; import { getLayerStyle, PalleteColors } from './get_map_layer_style'; +import { StyleColorParams } from './style_color_params'; interface VectorLayerDescriptor extends BaseVectorLayerDescriptor { sourceDescriptor: EMSFileSourceDescriptor; @@ -36,7 +37,11 @@ const SESSION_PER_REGION = `__kbnjoin__cardinality_of_session.id__${PER_REGION_L const label = i18n.translate('xpack.apm.serviceOverview.embeddedMap.session.metric.label', { defaultMessage: 'Sessions', }); -export function getSessionMapLayerList(maps: MapsStartApi | undefined, dataViewId: string) { +export function getSessionMapLayerList( + maps: MapsStartApi | undefined, + dataViewId: string, + styleColors: StyleColorParams +) { const sessionsByCountryLayer: VectorLayerDescriptor = { joins: [ { @@ -64,7 +69,7 @@ export function getSessionMapLayerList(maps: MapsStartApi | undefined, dataViewI id: 'world_countries', tooltipProperties: [COUNTRY_NAME], }, - style: getLayerStyle(SESSION_PER_COUNTRY, PalleteColors.BluetoRed), + style: getLayerStyle(SESSION_PER_COUNTRY, PalleteColors.BluetoRed, styleColors), id: uuidv4(), label: i18n.translate('xpack.apm.serviceOverview.embeddedMap.sessionCountry.metric.label', { defaultMessage: 'Sessions per country', @@ -103,7 +108,7 @@ export function getSessionMapLayerList(maps: MapsStartApi | undefined, dataViewI id: 'administrative_regions_lvl2', tooltipProperties: ['region_iso_code'], }, - style: getLayerStyle(SESSION_PER_REGION, PalleteColors.YellowtoRed), + style: getLayerStyle(SESSION_PER_REGION, PalleteColors.YellowtoRed, styleColors), id: uuidv4(), label: i18n.translate('xpack.apm.serviceOverview.embeddedMap.sessionRegion.metric.label', { defaultMessage: 'Sessions per region', diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/style_color_params.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/style_color_params.ts new file mode 100644 index 0000000000000..2934b7055a74f --- /dev/null +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/style_color_params.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export interface StyleColorParams { + lineColor: string; + labelColor: string; + labelOutlineColor: string; +} diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_group_save/group_details.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_group_save/group_details.tsx index 5e82ab290e07d..9d763a213863d 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_group_save/group_details.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_group_save/group_details.tsx @@ -19,6 +19,7 @@ import { useColorPickerState, EuiText, isValidHex, + useEuiTheme, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useEffect, useState } from 'react'; @@ -43,7 +44,8 @@ export function GroupDetails({ isLoading, titleId, }: Props) { - const initialColor = serviceGroup?.color || '#5094C4'; + const { euiTheme } = useEuiTheme(); + const initialColor = serviceGroup?.color || euiTheme.colors.backgroundFilledPrimary; const [name, setName] = useState(serviceGroup?.groupName); const [color, setColor, colorPickerErrors] = useColorPickerState(initialColor); const [description, setDescription] = useState<string | undefined>(serviceGroup?.description); diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_groups_list/service_group_card.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_groups_list/service_group_card.tsx index ecf8cf89452f0..4972bf4582813 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_groups_list/service_group_card.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_groups_list/service_group_card.tsx @@ -14,10 +14,11 @@ import { EuiFlexItem, EuiText, useIsWithinBreakpoints, + useEuiTheme, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { ServiceGroup, SERVICE_GROUP_COLOR_DEFAULT } from '../../../../../common/service_groups'; +import { ServiceGroup } from '../../../../../common/service_groups'; import { useObservabilityActiveAlertsHref } from '../../../shared/links/kibana'; import { ServiceStat } from './service_stat'; @@ -30,7 +31,7 @@ interface Props { export function ServiceGroupsCard({ serviceGroup, href, serviceGroupCounts, isLoading }: Props) { const isMobile = useIsWithinBreakpoints(['xs', 's']); - + const { euiTheme } = useEuiTheme(); const activeAlertsHref = useObservabilityActiveAlertsHref(serviceGroup.kuery); const cardProps: EuiCardProps = { style: { width: isMobile ? '100%' : 286 }, @@ -38,7 +39,7 @@ export function ServiceGroupsCard({ serviceGroup, href, serviceGroupCounts, isLo <> <EuiAvatar name={serviceGroup.groupName} - color={serviceGroup.color || SERVICE_GROUP_COLOR_DEFAULT} + color={serviceGroup.color || euiTheme.colors.backgroundFilledPrimary} size="l" /> </> diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx index e3e9601c72978..7a9d6be1316c2 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx @@ -180,6 +180,9 @@ export function ServiceInventory() { const [renderedItems, setRenderedItems] = useState<ServiceListItem[]>([]); const mainStatisticsFetch = useServicesMainStatisticsFetcher(debouncedSearchQuery); const { mainStatisticsData, mainStatisticsStatus } = mainStatisticsFetch; + const { + query: { rangeFrom, rangeTo }, + } = useApmParams('/services'); const displayHealthStatus = mainStatisticsData.items.some((item) => 'healthStatus' in item); @@ -285,9 +288,11 @@ export function ServiceInventory() { mainStatisticsStatus === FETCH_STATUS.SUCCESS && comparisonFetch.status === FETCH_STATUS.SUCCESS ) { - onPageReady(); + onPageReady({ + meta: { rangeFrom, rangeTo }, + }); } - }, [mainStatisticsStatus, comparisonFetch.status, onPageReady]); + }, [mainStatisticsStatus, comparisonFetch.status, onPageReady, rangeFrom, rangeTo]); return ( <> diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/apm_services_table.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/apm_services_table.tsx index 930fa2829c424..8b1d3ad19bd7f 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/apm_services_table.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/apm_services_table.tsx @@ -115,6 +115,7 @@ export function getServiceColumns({ )} > <EuiBadge + data-test-subj="serviceInventoryAlertsBadgeLink" iconType="warning" color="danger" href={link('/services/{serviceName}/alerts', { diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx index 4536406a21bd5..113be5407c070 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx @@ -186,7 +186,9 @@ export function ServiceMap({ } if (status === FETCH_STATUS.SUCCESS) { - onPageReady(); + onPageReady({ + meta: { rangeFrom: start, rangeTo: end }, + }); } return ( diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx index d509685ae35a5..9b3d54d4efad5 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx @@ -135,15 +135,20 @@ export function TraceList({ response }: Props) { const { data: { items } = { items: [] }, status } = response; const { onPageReady } = usePerformanceContext(); - const { query } = useApmParams('/traces'); + const { + query, + query: { rangeFrom, rangeTo }, + } = useApmParams('/traces'); const traceListColumns = useMemo(() => getTraceListColumns({ query }), [query]); useEffect(() => { if (status === FETCH_STATUS.SUCCESS) { - onPageReady(); + onPageReady({ + meta: { rangeFrom, rangeTo }, + }); } - }, [status, onPageReady]); + }, [status, onPageReady, rangeFrom, rangeTo]); return ( <ManagedTable diff --git a/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/http_status_badge.test.tsx b/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/http_status_badge.test.tsx index 423cfa3e6163e..e7d1d388a9579 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/http_status_badge.test.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/http_status_badge.test.tsx @@ -8,52 +8,58 @@ import React from 'react'; import { mount } from 'enzyme'; import { HttpStatusBadge } from '.'; -import { - successColor, - neutralColor, - warningColor, - errorColor, -} from '../../../../utils/http_status_code_to_color'; +import { renderHook } from '@testing-library/react-hooks'; +import { useEuiTheme } from '@elastic/eui'; describe('HttpStatusBadge', () => { describe('render', () => { describe('with status code 100', () => { it('renders with neutral color', () => { const wrapper = mount(<HttpStatusBadge status={100} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(neutralColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisGrey0 + ); }); }); describe('with status code 200', () => { it('renders with success color', () => { const wrapper = mount(<HttpStatusBadge status={200} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(successColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisSuccess0 + ); }); }); describe('with status code 301', () => { it('renders with neutral color', () => { const wrapper = mount(<HttpStatusBadge status={301} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(neutralColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisGrey0 + ); }); }); describe('with status code 404', () => { it('renders with warning color', () => { const wrapper = mount(<HttpStatusBadge status={404} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(warningColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisWarning0 + ); }); }); describe('with status code 502', () => { it('renders with error color', () => { const wrapper = mount(<HttpStatusBadge status={502} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(errorColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisDanger0 + ); }); }); diff --git a/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/index.tsx index 48866619a6543..e3f7f623642db 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/index.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiToolTip, EuiBadge } from '@elastic/eui'; import { statusCodes } from './status_codes'; -import { httpStatusCodeToColor } from '../../../../utils/http_status_code_to_color'; +import { useGetStatusColor } from '../../../../utils/http_status_code_to_color'; interface HttpStatusBadgeProps { status: number; @@ -18,10 +18,9 @@ export function HttpStatusBadge({ status }: HttpStatusBadgeProps) { const label = i18n.translate('xpack.apm.transactionDetails.statusCode', { defaultMessage: 'Status code', }); - return ( <EuiToolTip content={label}> - <EuiBadge color={httpStatusCodeToColor(status) || 'default'}> + <EuiBadge color={useGetStatusColor(status) || 'default'}> {status} {statusCodes[status.toString()]} </EuiBadge> </EuiToolTip> diff --git a/x-pack/plugins/observability_solution/apm/public/utils/http_status_code_to_color.ts b/x-pack/plugins/observability_solution/apm/public/utils/http_status_code_to_color.ts index 4caa3bd7701f0..3c2d1bb41051c 100644 --- a/x-pack/plugins/observability_solution/apm/public/utils/http_status_code_to_color.ts +++ b/x-pack/plugins/observability_solution/apm/public/utils/http_status_code_to_color.ts @@ -5,35 +5,17 @@ * 2.0. */ -import { euiLightVars as theme } from '@kbn/ui-theme'; -const { euiColorDarkShade, euiColorWarning } = theme; +import { useEuiTheme } from '@elastic/eui'; -export const errorColor = '#c23c2b'; -export const neutralColor = euiColorDarkShade; -export const successColor = '#327a42'; -export const warningColor = euiColorWarning; - -const httpStatusCodeColors: Record<string, string> = { - 1: neutralColor, - 2: successColor, - 3: neutralColor, - 4: warningColor, - 5: errorColor, +export const useGetStatusColor = (status: string | number) => { + const { euiTheme } = useEuiTheme(); + const httpStatusCodeColors: Record<string, string> = { + 1: euiTheme.colors.vis.euiColorVisGrey0, + 2: euiTheme.colors.vis.euiColorVisSuccess0, + 3: euiTheme.colors.vis.euiColorVisGrey0, + 4: euiTheme.colors.vis.euiColorVisWarning0, + 5: euiTheme.colors.vis.euiColorVisDanger0, + }; + const intStatus = typeof status === 'string' ? parseInt(status.replace(/\D/g, ''), 10) : status; + return httpStatusCodeColors[intStatus.toString().substring(0, 1)]; }; - -function getStatusColor(status: number) { - return httpStatusCodeColors[status.toString().substr(0, 1)]; -} - -/** - * Convert an HTTP status code to a color. - * - * If passed a string, it will remove all non-numeric characters - */ -export function httpStatusCodeToColor(status: string | number) { - if (typeof status === 'string') { - return getStatusColor(parseInt(status.replace(/\D/g, ''), 10)); - } else { - return getStatusColor(status); - } -} diff --git a/x-pack/plugins/observability_solution/apm/server/lib/apm_telemetry/collect_data_telemetry/index.ts b/x-pack/plugins/observability_solution/apm/server/lib/apm_telemetry/collect_data_telemetry/index.ts index 2da87653c0707..b0e2d99fefd5b 100644 --- a/x-pack/plugins/observability_solution/apm/server/lib/apm_telemetry/collect_data_telemetry/index.ts +++ b/x-pack/plugins/observability_solution/apm/server/lib/apm_telemetry/collect_data_telemetry/index.ts @@ -46,8 +46,8 @@ export function collectDataTelemetry({ } catch (err) { // catch error and log as debug in production env and warn in dev env const logLevel = isProd ? logger.debug : logger.warn; - logLevel(`Failed executing the APM telemetry task: "${task.name}"`); - logLevel(err); + logLevel.call(logger, `Failed executing the APM telemetry task: "${task.name}"`); + logLevel.call(logger, err); return data; } }); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/agent_explorer/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/agent_explorer/route.ts index d560b25dd5f10..870d6a3de11f2 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/agent_explorer/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/agent_explorer/route.ts @@ -19,7 +19,7 @@ import { const agentExplorerRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/get_agents_per_service', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([ environmentRt, @@ -60,7 +60,7 @@ const agentExplorerRoute = createApmServerRoute({ const latestAgentVersionsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/get_latest_agent_versions', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources): Promise<AgentLatestVersionsResponse> { const { logger, config } = resources; @@ -70,7 +70,7 @@ const latestAgentVersionsRoute = createApmServerRoute({ const agentExplorerInstanceRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/services/{serviceName}/agent_instances', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ path: t.type({ serviceName: t.string }), query: t.intersection([environmentRt, kueryRt, rangeRt, probabilityRt]), diff --git a/x-pack/plugins/observability_solution/apm/server/routes/agent_keys/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/agent_keys/route.ts index 5defc5ca9027f..77fe8d6f50182 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/agent_keys/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/agent_keys/route.ts @@ -15,7 +15,7 @@ import { privilegesTypeRt } from '../../../common/privilege_type'; const agentKeysRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/agent_keys', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<AgentKeysResponse> => { const { context } = resources; @@ -29,8 +29,7 @@ const agentKeysRoute = createApmServerRoute({ const agentKeysPrivilegesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/agent_keys/privileges', - options: { tags: ['access:apm'] }, - + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<AgentKeysPrivilegesResponse> => { const { context, core } = resources; @@ -46,7 +45,11 @@ const agentKeysPrivilegesRoute = createApmServerRoute({ const invalidateAgentKeyRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/api_key/invalidate', - options: { tags: ['access:apm', 'access:apm_settings_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, + }, params: t.type({ body: t.type({ id: t.string }), }), @@ -74,7 +77,12 @@ const invalidateAgentKeyRoute = createApmServerRoute({ const createAgentKeyRoute = createApmServerRoute({ endpoint: 'POST /api/apm/agent_keys 2023-10-31', - options: { tags: ['access:apm', 'access:apm_settings_write', 'oas-tag:APM agent keys'] }, + options: { tags: ['oas-tag:APM agent keys'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, + }, params: t.type({ body: t.type({ name: t.string, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/alerts/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/alerts/route.ts index 3343b7f78f0af..ca74e8c27e38f 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/alerts/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/alerts/route.ts @@ -61,7 +61,7 @@ export type AlertParams = t.TypeOf<typeof alertParamsRt>; const transactionErrorRateChartPreview = createApmServerRoute({ endpoint: 'GET /internal/apm/rule_types/transaction_error_rate/chart_preview', params: t.type({ query: alertParamsRt }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -84,7 +84,7 @@ const transactionErrorRateChartPreview = createApmServerRoute({ const transactionErrorCountChartPreview = createApmServerRoute({ endpoint: 'GET /internal/apm/rule_types/error_count/chart_preview', params: t.type({ query: alertParamsRt }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -107,7 +107,7 @@ const transactionErrorCountChartPreview = createApmServerRoute({ const transactionDurationChartPreview = createApmServerRoute({ endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', params: t.type({ query: alertParamsRt }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/apm_routes/register_apm_server_routes.test.ts b/x-pack/plugins/observability_solution/apm/server/routes/apm_routes/register_apm_server_routes.test.ts index 3475830146634..aae197e5ade5d 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/apm_routes/register_apm_server_routes.test.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/apm_routes/register_apm_server_routes.test.ts @@ -69,7 +69,13 @@ const getRegisterRouteDependencies = () => { const initApi = ( routes: Array< - ServerRoute<any, t.Any | undefined, APMRouteHandlerResources, any, APMRouteCreateOptions> + ServerRoute< + any, + t.Any | undefined, + APMRouteHandlerResources, + any, + APMRouteCreateOptions | undefined + > > ) => { const { mocks, dependencies } = getRegisterRouteDependencies(); @@ -134,7 +140,7 @@ describe('createApi', () => { } = initApi([ { endpoint: 'GET /foo', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async () => ({}), }, { @@ -142,28 +148,22 @@ describe('createApi', () => { params: t.type({ body: t.string, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async () => ({}), }, { endpoint: 'PUT /baz', - options: { - tags: ['access:apm', 'access:apm_write'], - }, + security: { authz: { requiredPrivileges: ['apm', 'apm_write'] } }, handler: async () => ({}), }, { endpoint: 'GET /qux', - options: { - tags: ['access:apm', 'access:apm_write'], - }, + security: { authz: { requiredPrivileges: ['apm', 'apm_write'] } }, handler: async () => ({}), }, { endpoint: 'GET /fez', - options: { - tags: ['access:apm', 'access:apm_settings_write'], - }, + security: { authz: { requiredPrivileges: ['apm', 'apm_settings_write'] } }, handler: async () => ({}), }, ]); @@ -175,41 +175,36 @@ describe('createApi', () => { expect(put).toHaveBeenCalledTimes(1); expect(get.mock.calls[0][0]).toEqual({ - options: { - tags: ['access:apm'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm'] } }, path: '/foo', validate: expect.anything(), }); expect(get.mock.calls[1][0]).toEqual({ - options: { - tags: ['access:apm', 'access:apm_write'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm', 'apm_write'] } }, path: '/qux', validate: expect.anything(), }); expect(get.mock.calls[2][0]).toEqual({ - options: { - tags: ['access:apm', 'access:apm_settings_write'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm', 'apm_settings_write'] } }, path: '/fez', validate: expect.anything(), }); expect(post.mock.calls[0][0]).toEqual({ - options: { - tags: ['access:apm'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm'] } }, path: '/bar', validate: expect.anything(), }); expect(put.mock.calls[0][0]).toEqual({ - options: { - tags: ['access:apm', 'access:apm_write'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm', 'apm_write'] } }, path: '/baz', validate: expect.anything(), }); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/route.ts index 7c6572169b037..22cd7e3575b80 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/route.ts @@ -19,8 +19,10 @@ import { getApmTimeseries, getApmTimeseriesRt, type ApmTimeseries } from './get_ const getApmTimeSeriesRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/assistant/get_apm_timeseries', - options: { - tags: ['access:apm', 'access:ai_assistant'], + security: { + authz: { + requiredPrivileges: ['apm', 'ai_assistant'], + }, }, params: t.type({ body: getApmTimeseriesRt, @@ -51,9 +53,7 @@ const getDownstreamDependenciesRoute = createApmServerRoute({ params: t.type({ query: downstreamDependenciesRouteRt, }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ content: APMDownstreamDependency[] }> => { const { params, request, core } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/correlations/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/correlations/route.ts index 06ba8b33d1bb0..658ad91bca835 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/correlations/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/correlations/route.ts @@ -51,7 +51,7 @@ const fieldCandidatesTransactionsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<DurationFieldCandidatesResponse> => { const { context } = resources; const { license } = await context.licensing; @@ -104,7 +104,7 @@ const fieldValueStatsTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopValuesStats> => { const { context } = resources; const { license } = await context.licensing; @@ -172,7 +172,7 @@ const fieldValuePairsTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<FieldValuePairsResponse> => { const { context } = resources; const { license } = await context.licensing; @@ -240,7 +240,7 @@ const significantCorrelationsTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<SignificantCorrelationsResponse> => { const apmEventClient = await getApmEventClient(resources); const { @@ -299,7 +299,7 @@ const pValuesTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<PValuesResponse> => { const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/custom_dashboards/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/custom_dashboards/route.ts index 750bacb4ba455..7d062d58f0b1a 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/custom_dashboards/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/custom_dashboards/route.ts @@ -33,7 +33,11 @@ const serviceDashboardSaveRoute = createApmServerRoute({ serviceEnvironmentFilterEnabled: t.boolean, }), }), - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async (resources): Promise<SavedApmCustomDashboard> => { const { context, params } = resources; const { customDashboardId } = params.query; @@ -62,9 +66,7 @@ const serviceDashboardsRoute = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ serviceDashboards: SavedApmCustomDashboard[] }> => { const { context, params, request } = resources; const coreContext = await context.core; @@ -116,7 +118,11 @@ const serviceDashboardDeleteRoute = createApmServerRoute({ customDashboardId: t.string, }), }), - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async (resources): Promise<void> => { const { context, params } = resources; const { customDashboardId } = params.query; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/data_view/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/data_view/route.ts index d4e6b0a7492e9..23318949b0811 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/data_view/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/data_view/route.ts @@ -13,7 +13,7 @@ import { getApmEventClient } from '../../lib/helpers/get_apm_event_client'; const staticDataViewRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/data_view/static', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): CreateDataViewResponse => { const { context, plugins, request, logger } = resources; const apmEventClient = await getApmEventClient(resources); @@ -49,7 +49,7 @@ const staticDataViewRoute = createApmServerRoute({ const dataViewTitleRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/data_view/index_pattern', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ({ getApmIndices }): Promise<{ apmDataViewIndexPattern: string }> => { const apmIndicies = await getApmIndices(); const apmDataViewIndexPattern = getApmDataViewIndexPattern(apmIndicies); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/debug_telemetry/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/debug_telemetry/route.ts index c3ab67150f39c..3e4e1889321ba 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/debug_telemetry/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/debug_telemetry/route.ts @@ -14,8 +14,10 @@ import { } from '../../../common/apm_saved_object_constants'; export const debugTelemetryRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/debug-telemetry', - options: { - tags: ['access:apm', 'access:apm_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, }, handler: async (resources): Promise<APMTelemetry> => { const { plugins, context } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/dependencies/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/dependencies/route.ts index 39b62b0f4f610..5a744759a865e 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/dependencies/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/dependencies/route.ts @@ -47,9 +47,7 @@ const topDependenciesRoute = createApmServerRoute({ query: offsetRt, }), ]), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopDependenciesResponse> => { const { request, core } = resources; @@ -87,9 +85,7 @@ const upstreamServicesForDependencyRoute = createApmServerRoute({ query: t.intersection([environmentRt, offsetRt, kueryRt]), }), ]), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<UpstreamServicesForDependencyResponse> => { const { request, core } = resources; @@ -122,9 +118,7 @@ const dependencyMetadataRoute = createApmServerRoute({ params: t.type({ query: t.intersection([t.type({ dependencyName: t.string }), rangeRt]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -161,9 +155,7 @@ const dependencyLatencyChartsRoute = createApmServerRoute({ offsetRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<LatencyChartsDependencyResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -207,9 +199,7 @@ const dependencyThroughputChartsRoute = createApmServerRoute({ offsetRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ThroughputChartsForDependencyResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -253,9 +243,7 @@ const dependencyFailedTransactionRateChartsRoute = createApmServerRoute({ offsetRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -291,9 +279,7 @@ const dependencyFailedTransactionRateChartsRoute = createApmServerRoute({ const dependencyOperationsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/dependencies/operations', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([ rangeRt, @@ -350,9 +336,7 @@ const dependencyLatencyDistributionChartsRoute = createApmServerRoute({ environmentRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<DependencyLatencyDistributionResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -374,9 +358,7 @@ const dependencyLatencyDistributionChartsRoute = createApmServerRoute({ const topDependencySpansRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/dependencies/operations/spans', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([ rangeRt, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/diagnostics/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/diagnostics/route.ts index fcd41df55afc7..fdeba801f8a6d 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/diagnostics/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/diagnostics/route.ts @@ -80,7 +80,7 @@ export type DiagnosticsBundle = Promise<{ const getDiagnosticsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/diagnostics', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.partial({ query: t.partial({ kuery: t.string, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/entities/get_entities.ts b/x-pack/plugins/observability_solution/apm/server/routes/entities/get_entities.ts deleted file mode 100644 index 6cedb09efa7c2..0000000000000 --- a/x-pack/plugins/observability_solution/apm/server/routes/entities/get_entities.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { - ENTITY_FIRST_SEEN, - ENTITY_LAST_SEEN, -} from '@kbn/observability-shared-plugin/common/field_names/elasticsearch'; -import type { EntitiesESClient } from '../../lib/helpers/create_es_client/create_entities_es_client/create_entities_es_client'; -import { getEntityLatestServices } from './get_entity_latest_services'; -import type { EntityLatestServiceRaw } from './types'; - -export function entitiesRangeQuery(start?: number, end?: number): QueryDslQueryContainer[] { - if (!start || !end) { - return []; - } - - return [ - { - range: { - [ENTITY_LAST_SEEN]: { - gte: start, - }, - }, - }, - { - range: { - [ENTITY_FIRST_SEEN]: { - lte: end, - }, - }, - }, - ]; -} - -export async function getEntities({ - entitiesESClient, - start, - end, - environment, - kuery, - size, - serviceName, -}: { - entitiesESClient: EntitiesESClient; - start: number; - end: number; - environment: string; - kuery?: string; - size: number; - serviceName?: string; -}): Promise<EntityLatestServiceRaw[]> { - const entityLatestServices = await getEntityLatestServices({ - entitiesESClient, - start, - end, - environment, - kuery, - size, - serviceName, - }); - - return entityLatestServices; -} diff --git a/x-pack/plugins/observability_solution/apm/server/routes/entities/get_entity_latest_services.ts b/x-pack/plugins/observability_solution/apm/server/routes/entities/get_entity_latest_services.ts deleted file mode 100644 index e08be75072b6f..0000000000000 --- a/x-pack/plugins/observability_solution/apm/server/routes/entities/get_entity_latest_services.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { kqlQuery, termQuery } from '@kbn/observability-plugin/server'; -import { - ENTITY, - ENTITY_TYPE, - SOURCE_DATA_STREAM_TYPE, -} from '@kbn/observability-shared-plugin/common/field_names/elasticsearch'; -import { AGENT_NAME, SERVICE_ENVIRONMENT, SERVICE_NAME } from '../../../common/es_fields/apm'; -import { environmentQuery } from '../../../common/utils/environment_query'; -import { EntitiesESClient } from '../../lib/helpers/create_es_client/create_entities_es_client/create_entities_es_client'; -import { entitiesRangeQuery } from './get_entities'; -import { EntityLatestServiceRaw, EntityType } from './types'; - -export async function getEntityLatestServices({ - entitiesESClient, - start, - end, - environment, - kuery, - size, - serviceName, -}: { - entitiesESClient: EntitiesESClient; - start?: number; - end?: number; - environment: string; - kuery?: string; - size: number; - serviceName?: string; -}): Promise<EntityLatestServiceRaw[]> { - const latestEntityServices = ( - await entitiesESClient.searchLatest<EntityLatestServiceRaw>(`get_entity_latest_services`, { - body: { - size, - track_total_hits: false, - _source: [AGENT_NAME, ENTITY, SOURCE_DATA_STREAM_TYPE, SERVICE_NAME, SERVICE_ENVIRONMENT], - query: { - bool: { - filter: [ - ...kqlQuery(kuery), - ...environmentQuery(environment, SERVICE_ENVIRONMENT), - ...entitiesRangeQuery(start, end), - ...termQuery(ENTITY_TYPE, EntityType.SERVICE), - ...termQuery(SERVICE_NAME, serviceName), - ], - }, - }, - }, - }) - ).hits.hits.map((hit) => hit._source); - - return latestEntityServices; -} diff --git a/x-pack/plugins/observability_solution/apm/server/routes/entities/services/get_service_entities.ts b/x-pack/plugins/observability_solution/apm/server/routes/entities/services/get_service_entities.ts deleted file mode 100644 index 9e6bb34bceafe..0000000000000 --- a/x-pack/plugins/observability_solution/apm/server/routes/entities/services/get_service_entities.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { errors } from '@elastic/elasticsearch'; -import { Logger } from '@kbn/core/server'; -import { WrappedElasticsearchClientError } from '@kbn/observability-plugin/server'; -import { EntitiesESClient } from '../../../lib/helpers/create_es_client/create_entities_es_client/create_entities_es_client'; -import { withApmSpan } from '../../../utils/with_apm_span'; -import { getEntities } from '../get_entities'; -import { mergeEntities } from '../utils/merge_entities'; - -export const MAX_NUMBER_OF_SERVICES = 1_000; - -export async function getServiceEntities({ - entitiesESClient, - start, - end, - kuery, - environment, - logger, -}: { - entitiesESClient: EntitiesESClient; - start: number; - end: number; - kuery: string; - environment: string; - logger: Logger; -}) { - return withApmSpan('get_service_entities', async () => { - try { - const entities = await getEntities({ - entitiesESClient, - start, - end, - kuery, - environment, - size: MAX_NUMBER_OF_SERVICES, - }); - - return mergeEntities({ entities }); - } catch (error) { - // If the index does not exist, handle it gracefully - if ( - error instanceof WrappedElasticsearchClientError && - error.originalError instanceof errors.ResponseError - ) { - const type = error.originalError.body.error.type; - - if (type === 'index_not_found_exception') { - logger.error(`Entities index does not exist. Unable to fetch services.`); - return []; - } - } - - throw error; - } - }); -} diff --git a/x-pack/plugins/observability_solution/apm/server/routes/entities/services/get_service_entity_summary.ts b/x-pack/plugins/observability_solution/apm/server/routes/entities/services/get_service_entity_summary.ts index 3ab3b907f5be2..90a44a9b609e6 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/entities/services/get_service_entity_summary.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/entities/services/get_service_entity_summary.ts @@ -5,28 +5,31 @@ * 2.0. */ -import type { EntitiesESClient } from '../../../lib/helpers/create_es_client/create_entities_es_client/create_entities_es_client'; +import { SERVICE_NAME, AGENT_NAME, SERVICE_ENVIRONMENT } from '@kbn/apm-types'; +import { BUILT_IN_ENTITY_TYPES, DATA_STREAM_TYPE } from '@kbn/observability-shared-plugin/common'; +import moment from 'moment'; +import type { EntityClient } from '@kbn/entityManager-plugin/server/lib/entity_client'; import { withApmSpan } from '../../../utils/with_apm_span'; -import { getEntityLatestServices } from '../get_entity_latest_services'; import { mergeEntities } from '../utils/merge_entities'; -import { MAX_NUMBER_OF_SERVICES } from './get_service_entities'; interface Params { - entitiesESClient: EntitiesESClient; + entityManagerClient: EntityClient; serviceName: string; environment: string; } -export function getServiceEntitySummary({ entitiesESClient, environment, serviceName }: Params) { +export function getServiceEntitySummary({ entityManagerClient, environment, serviceName }: Params) { return withApmSpan('get_service_entity_summary', async () => { - const entityLatestServices = await getEntityLatestServices({ - entitiesESClient, - environment, - size: MAX_NUMBER_OF_SERVICES, - serviceName, + const serviceEntitySummary = await entityManagerClient.v2.searchEntities({ + start: moment().subtract(15, 'm').toISOString(), + end: moment().toISOString(), + type: BUILT_IN_ENTITY_TYPES.SERVICE_V2, + filters: [`${SERVICE_NAME}: "${serviceName}"`], + limit: 1, + metadata_fields: [DATA_STREAM_TYPE, AGENT_NAME, SERVICE_ENVIRONMENT], }); - const serviceEntity = mergeEntities({ entities: entityLatestServices }); + const serviceEntity = mergeEntities({ entities: serviceEntitySummary?.entities }); return serviceEntity[0]; }); } diff --git a/x-pack/plugins/observability_solution/apm/server/routes/entities/services/routes.ts b/x-pack/plugins/observability_solution/apm/server/routes/entities/services/routes.ts index 218de180cbc00..e3d44645ad394 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/entities/services/routes.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/entities/services/routes.ts @@ -6,10 +6,8 @@ */ import * as t from 'io-ts'; import { environmentQuery } from '../../../../common/utils/environment_query'; -import { createEntitiesESClient } from '../../../lib/helpers/create_es_client/create_entities_es_client/create_entities_es_client'; import { createApmServerRoute } from '../../apm_routes/create_apm_server_route'; import { environmentRt, kueryRt, rangeRt } from '../../default_api_types'; -import { getServiceEntities } from './get_service_entities'; import { getServiceEntitySummary } from './get_service_entity_summary'; const serviceEntitiesSummaryRoute = createApmServerRoute({ @@ -18,54 +16,22 @@ const serviceEntitiesSummaryRoute = createApmServerRoute({ path: t.type({ serviceName: t.string }), query: environmentRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources) { - const { context, params, request } = resources; - const coreContext = await context.core; - - const entitiesESClient = await createEntitiesESClient({ - request, - esClient: coreContext.elasticsearch.client.asCurrentUser, - }); + const { params, request, plugins } = resources; + const entityManagerStart = await plugins.entityManager.start(); + const entityManagerClient = await entityManagerStart.getScopedClient({ request }); const { serviceName } = params.path; const { environment } = params.query; - return getServiceEntitySummary({ - entitiesESClient, + const serviceEntitySummary = await getServiceEntitySummary({ + entityManagerClient, serviceName, environment, }); - }, -}); - -const servicesEntitiesRoute = createApmServerRoute({ - endpoint: 'GET /internal/apm/entities/services', - params: t.type({ - query: t.intersection([environmentRt, kueryRt, rangeRt]), - }), - options: { tags: ['access:apm'] }, - async handler(resources) { - const { context, params, request } = resources; - const coreContext = await context.core; - - const entitiesESClient = await createEntitiesESClient({ - request, - esClient: coreContext.elasticsearch.client.asCurrentUser, - }); - - const { start, end, kuery, environment } = params.query; - - const services = await getServiceEntities({ - entitiesESClient, - start, - end, - kuery, - environment, - logger: resources.logger, - }); - return { services }; + return serviceEntitySummary; }, }); @@ -77,7 +43,7 @@ const serviceLogRateTimeseriesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources) { const { context, params, plugins } = resources; const [coreContext, logsDataAccessStart] = await Promise.all([ @@ -111,7 +77,7 @@ const serviceLogErrorRateTimeseriesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources) { const { context, params, plugins } = resources; const [coreContext, logsDataAccessStart] = await Promise.all([ @@ -137,7 +103,6 @@ const serviceLogErrorRateTimeseriesRoute = createApmServerRoute({ }); export const servicesEntitiesRoutesRepository = { - ...servicesEntitiesRoute, ...serviceLogRateTimeseriesRoute, ...serviceLogErrorRateTimeseriesRoute, ...serviceEntitiesSummaryRoute, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/entities/types.ts b/x-pack/plugins/observability_solution/apm/server/routes/entities/types.ts index 833e565ec00ef..c65af1a05a26a 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/entities/types.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/entities/types.ts @@ -4,28 +4,10 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { AgentName } from '../../../typings/es_schemas/ui/fields/agent'; +import type { EntityMetadata, EntityV2 } from '@kbn/entities-schema'; export enum EntityType { SERVICE = 'service', } -export interface EntityLatestServiceRaw { - agent: { - name: AgentName[]; - }; - source_data_stream: { - type: string[]; - }; - service: { - name: string; - environment?: string; - }; - entity: Entity; -} - -interface Entity { - id: string; - last_seen_timestamp: string; - identity_fields: string[]; -} +export type EntityLatestServiceRaw = EntityV2 & EntityMetadata; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/entities/utils/merge_entities.test.ts b/x-pack/plugins/observability_solution/apm/server/routes/entities/utils/merge_entities.test.ts index e3dd0ef5e0d4e..91f1eff244def 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/entities/utils/merge_entities.test.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/entities/utils/merge_entities.test.ts @@ -13,17 +13,14 @@ describe('mergeEntities', () => { it('modifies one service', () => { const entities: EntityLatestServiceRaw[] = [ { - service: { - name: 'service-1', - environment: 'test', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: ['metrics', 'logs'] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name', 'service.environment'], - id: 'service-1:test', - }, + 'data_stream.type': ['metrics', 'logs'], + 'agent.name': 'nodejs', + 'service.environment': 'test', + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1', + 'entity.display_name': 'service-1', }, ]; const result = mergeEntities({ entities }); @@ -32,7 +29,7 @@ describe('mergeEntities', () => { agentName: 'nodejs' as AgentName, dataStreamTypes: ['metrics', 'logs'], environments: ['test'], - lastSeenTimestamp: '2024-06-05T10:34:40.810Z', + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', serviceName: 'service-1', }, ]); @@ -41,56 +38,44 @@ describe('mergeEntities', () => { it('joins two service with the same name ', () => { const entities: EntityLatestServiceRaw[] = [ { - service: { - name: 'service-1', - environment: 'env-service-1', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: ['foo'] }, - entity: { - last_seen_timestamp: '2024-03-05T10:34:40.810Z', - identity_fields: ['service.name', 'service.environment'], - id: 'service-1:env-service-1', - }, + 'data_stream.type': ['foo'], + 'agent.name': 'nodejs', + 'service.environment': 'env-service-1', + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:env-service-1', + 'entity.display_name': 'service-1', }, { - service: { - name: 'service-1', - environment: 'env-service-2', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: ['bar'] }, - entity: { - last_seen_timestamp: '2024-03-05T10:34:40.810Z', - identity_fields: ['service.name', 'service.environment'], - id: 'apm-only-1:synthtrace-env-2', - }, + 'data_stream.type': ['bar'], + 'agent.name': 'nodejs', + 'service.environment': 'env-service-2', + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:env-service-2', + 'entity.display_name': 'service-1', }, { - service: { - name: 'service-2', - environment: 'env-service-3', - }, - agent: { name: ['java'] }, - source_data_stream: { type: ['baz'] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name', 'service.environment'], - id: 'service-2:env-service-3', - }, + 'data_stream.type': ['baz'], + 'agent.name': 'java', + 'service.environment': 'env-service-3', + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-2', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-2:env-service-3', + 'entity.display_name': 'service-2', }, { - service: { - name: 'service-2', - environment: 'env-service-4', - }, - agent: { name: ['java'] }, - source_data_stream: { type: ['baz'] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name', 'service.environment'], - id: 'service-2:env-service-3', - }, + 'data_stream.type': ['baz'], + 'agent.name': ['java'], + 'service.environment': 'env-service-4', + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-2', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-2:env-service-4', + 'entity.display_name': 'service-2', }, ]; @@ -100,14 +85,14 @@ describe('mergeEntities', () => { agentName: 'nodejs' as AgentName, dataStreamTypes: ['foo', 'bar'], environments: ['env-service-1', 'env-service-2'], - lastSeenTimestamp: '2024-03-05T10:34:40.810Z', + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', serviceName: 'service-1', }, { agentName: 'java' as AgentName, dataStreamTypes: ['baz'], environments: ['env-service-3', 'env-service-4'], - lastSeenTimestamp: '2024-06-05T10:34:40.810Z', + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', serviceName: 'service-2', }, ]); @@ -115,43 +100,34 @@ describe('mergeEntities', () => { it('handles duplicate environments and data streams', () => { const entities: EntityLatestServiceRaw[] = [ { - service: { - name: 'service-1', - environment: 'test', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: ['metrics', 'logs'] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name', 'service.environment'], - id: 'service-1:test', - }, + 'data_stream.type': ['metrics', 'logs'], + 'agent.name': ['nodejs'], + 'service.environment': 'test', + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', }, { - service: { - name: 'service-1', - environment: 'test', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: ['metrics', 'logs'] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name', 'service.environment'], - id: 'service-1:test', - }, + 'data_stream.type': ['metrics', 'logs'], + 'agent.name': ['nodejs'], + 'service.environment': 'test', + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', }, { - service: { - name: 'service-1', - environment: 'prod', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: ['foo'] }, - entity: { - last_seen_timestamp: '2024-23-05T10:34:40.810Z', - identity_fields: ['service.name', 'service.environment'], - id: 'service-1:prod', - }, + 'data_stream.type': ['foo'], + 'agent.name': ['nodejs'], + 'service.environment': 'prod', + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:prod', + 'entity.display_name': 'service-1', }, ]; const result = mergeEntities({ entities }); @@ -160,7 +136,7 @@ describe('mergeEntities', () => { agentName: 'nodejs' as AgentName, dataStreamTypes: ['metrics', 'logs', 'foo'], environments: ['test', 'prod'], - lastSeenTimestamp: '2024-23-05T10:34:40.810Z', + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', serviceName: 'service-1', }, ]); @@ -168,17 +144,14 @@ describe('mergeEntities', () => { it('handles null environment', () => { const entity: EntityLatestServiceRaw[] = [ { - service: { - name: 'service-1', - environment: undefined, - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: [] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name'], - id: 'service-1:test', - }, + 'data_stream.type': [], + 'agent.name': ['nodejs'], + 'service.environment': null, + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', }, ]; const entityResult = mergeEntities({ entities: entity }); @@ -187,35 +160,31 @@ describe('mergeEntities', () => { agentName: 'nodejs' as AgentName, dataStreamTypes: [], environments: [], - lastSeenTimestamp: '2024-06-05T10:34:40.810Z', + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', serviceName: 'service-1', }, ]); const entities: EntityLatestServiceRaw[] = [ { - service: { - name: 'service-1', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: [] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name'], - id: 'service-1:test', - }, + 'data_stream.type': [], + 'agent.name': ['nodejs'], + 'service.environment': null, + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', }, { - service: { - name: 'service-1', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: [] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name'], - id: 'service-1:test', - }, + 'data_stream.type': [], + 'agent.name': ['nodejs'], + 'service.environment': null, + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', }, ]; const result = mergeEntities({ entities }); @@ -224,7 +193,7 @@ describe('mergeEntities', () => { agentName: 'nodejs' as AgentName, dataStreamTypes: [], environments: [], - lastSeenTimestamp: '2024-06-05T10:34:40.810Z', + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', serviceName: 'service-1', }, ]); @@ -233,16 +202,13 @@ describe('mergeEntities', () => { it('handles undefined environment', () => { const entity: EntityLatestServiceRaw[] = [ { - service: { - name: 'service-1', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: [] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name'], - id: 'service-1:test', - }, + 'data_stream.type': [], + 'agent.name': ['nodejs'], + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', }, ]; const entityResult = mergeEntities({ entities: entity }); @@ -251,35 +217,29 @@ describe('mergeEntities', () => { agentName: 'nodejs', dataStreamTypes: [], environments: [], - lastSeenTimestamp: '2024-06-05T10:34:40.810Z', + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', serviceName: 'service-1', }, ]); const entities: EntityLatestServiceRaw[] = [ { - service: { - name: 'service-1', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: [] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name'], - id: 'service-1:test', - }, + 'data_stream.type': [], + 'agent.name': ['nodejs'], + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', }, { - service: { - name: 'service-1', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: [] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name'], - id: 'service-1:test', - }, + 'data_stream.type': [], + 'agent.name': ['nodejs'], + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', }, ]; const result = mergeEntities({ entities }); @@ -288,7 +248,7 @@ describe('mergeEntities', () => { agentName: 'nodejs', dataStreamTypes: [], environments: [], - lastSeenTimestamp: '2024-06-05T10:34:40.810Z', + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', serviceName: 'service-1', }, ]); @@ -297,17 +257,14 @@ describe('mergeEntities', () => { it('has no logs when log rate is not returned', () => { const entities: EntityLatestServiceRaw[] = [ { - service: { - name: 'service-1', - environment: 'test', - }, - agent: { name: ['nodejs'] }, - source_data_stream: { type: ['metrics'] }, - entity: { - last_seen_timestamp: '2024-06-05T10:34:40.810Z', - identity_fields: ['service.name', 'service.environment'], - id: 'service-1:test', - }, + 'data_stream.type': ['metrics'], + 'agent.name': ['nodejs'], + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'service.environment': 'test', + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', }, ]; const result = mergeEntities({ entities }); @@ -316,7 +273,31 @@ describe('mergeEntities', () => { agentName: 'nodejs' as AgentName, dataStreamTypes: ['metrics'], environments: ['test'], - lastSeenTimestamp: '2024-06-05T10:34:40.810Z', + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', + serviceName: 'service-1', + }, + ]); + }); + it('has multiple duplicate environments and data stream types', () => { + const entities: EntityLatestServiceRaw[] = [ + { + 'data_stream.type': ['metrics', 'metrics', 'logs', 'logs'], + 'agent.name': ['nodejs', 'nodejs'], + 'entity.last_seen_timestamp': '2024-12-13T14:52:35.461Z', + 'service.name': 'service-1', + 'service.environment': ['test', 'test', 'test'], + 'entity.type': 'built_in_services_from_ecs_data', + 'entity.id': 'service-1:test', + 'entity.display_name': 'service-1', + }, + ]; + const result = mergeEntities({ entities }); + expect(result).toEqual([ + { + agentName: 'nodejs' as AgentName, + dataStreamTypes: ['metrics', 'logs'], + environments: ['test'], + lastSeenTimestamp: '2024-12-13T14:52:35.461Z', serviceName: 'service-1', }, ]); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/entities/utils/merge_entities.ts b/x-pack/plugins/observability_solution/apm/server/routes/entities/utils/merge_entities.ts index 2f33c4728bd1a..1e95656cb1f8e 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/entities/utils/merge_entities.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/entities/utils/merge_entities.ts @@ -23,7 +23,7 @@ export function mergeEntities({ entities: EntityLatestServiceRaw[]; }): MergedServiceEntity[] { const mergedEntities = entities.reduce((map, current) => { - const key = current.service.name; + const key = current['service.name']; if (map.has(key)) { const existingEntity = map.get(key); map.set(key, mergeFunc(current, existingEntity)); @@ -33,28 +33,37 @@ export function mergeEntities({ return map; }, new Map()); - return [...mergedEntities.values()]; + return [...new Set(mergedEntities.values())]; } function mergeFunc(entity: EntityLatestServiceRaw, existingEntity?: MergedServiceEntity) { const commonEntityFields = { - serviceName: entity.service.name, - agentName: entity.agent.name[0], - lastSeenTimestamp: entity.entity.last_seen_timestamp, + serviceName: entity['service.name'], + agentName: + Array.isArray(entity['agent.name']) && entity['agent.name'].length > 0 + ? entity['agent.name'][0] + : entity['agent.name'], + lastSeenTimestamp: entity['entity.last_seen_timestamp'], }; if (!existingEntity) { return { ...commonEntityFields, - dataStreamTypes: entity.source_data_stream.type, - environments: compact([entity?.service.environment]), + dataStreamTypes: uniq(entity['data_stream.type']), + environments: uniq( + compact( + Array.isArray(entity['service.environment']) + ? entity['service.environment'] + : [entity['service.environment']] + ) + ), }; } return { ...commonEntityFields, dataStreamTypes: uniq( - compact([...(existingEntity?.dataStreamTypes ?? []), ...entity.source_data_stream.type]) + compact([...(existingEntity?.dataStreamTypes ?? []), ...entity['data_stream.type']]) ), - environments: uniq(compact([...existingEntity?.environments, entity?.service.environment])), + environments: uniq(compact([...existingEntity?.environments, entity['service.environment']])), }; } diff --git a/x-pack/plugins/observability_solution/apm/server/routes/environments/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/environments/route.ts index 6eafe5c7b62fe..23d9b03e9c48e 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/environments/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/environments/route.ts @@ -24,7 +24,7 @@ const environmentsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/errors/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/errors/route.ts index 62d9d883ba896..95a5f68f9cce6 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/errors/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/errors/route.ts @@ -51,7 +51,7 @@ const errorsMainStatisticsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorGroupMainStatisticsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -90,7 +90,7 @@ const errorsMainStatisticsByTransactionNameRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorGroupMainStatisticsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -136,7 +136,7 @@ const errorsDetailedStatisticsRoute = createApmServerRoute({ ]), body: t.type({ groupIds: jsonRt.pipe(t.array(t.string)) }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorGroupPeriodsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -170,7 +170,7 @@ const errorGroupsSamplesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorGroupSampleIdsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -199,7 +199,7 @@ const errorGroupSampleDetailsRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorSampleDetailsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -240,7 +240,7 @@ const errorDistributionRoute = createApmServerRoute({ offsetRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorDistributionResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -276,7 +276,7 @@ const topErroneousTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopErroneousTransactionsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/event_metadata/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/event_metadata/route.ts index cb1ff01654c30..0ded2b3824542 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/event_metadata/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/event_metadata/route.ts @@ -14,7 +14,7 @@ import { rangeRt } from '../default_api_types'; const eventMetadataRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/event_metadata/{processorEvent}/{id}', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ path: t.type({ processorEvent: processorEventRt, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/fallback_to_transactions/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/fallback_to_transactions/route.ts index d7e20e847753d..ec94240f82df5 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/fallback_to_transactions/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/fallback_to_transactions/route.ts @@ -16,7 +16,7 @@ const fallbackToTransactionsRoute = createApmServerRoute({ params: t.partial({ query: t.intersection([kueryRt, t.partial(rangeRt.props)]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ fallbackToTransactions: boolean }> => { const apmEventClient = await getApmEventClient(resources); const { diff --git a/x-pack/plugins/observability_solution/apm/server/routes/fleet/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/fleet/route.ts index c44d283a5a3d5..ab74a48887f6a 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/fleet/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/fleet/route.ts @@ -65,7 +65,11 @@ const fleetAgentsRoute = createApmServerRoute({ const saveApmServerSchemaRoute = createApmServerRoute({ endpoint: 'POST /api/apm/fleet/apm_server_schema 2023-10-31', - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, params: t.type({ body: t.type({ schema: t.record(t.string, t.unknown), @@ -88,7 +92,7 @@ const saveApmServerSchemaRoute = createApmServerRoute({ const getUnsupportedApmServerSchemaRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/fleet/apm_server_schema/unsupported', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ unsupported: UnsupportedApmServerSchema }> => { throwNotFoundIfFleetMigrationNotAvailable(resources.featureFlags); const { context } = resources; @@ -101,7 +105,7 @@ const getUnsupportedApmServerSchemaRoute = createApmServerRoute({ const getMigrationCheckRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/fleet/migration_check', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<RunMigrationCheckResponse> => { const { core, plugins, context, config, request } = resources; throwNotFoundIfFleetMigrationNotAvailable(resources.featureFlags); @@ -128,7 +132,11 @@ const getMigrationCheckRoute = createApmServerRoute({ const createCloudApmPackagePolicyRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/fleet/cloud_apm_package_policy', - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/historical_data/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/historical_data/route.ts index 94b7d40b84c2d..0348a6a32f0eb 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/historical_data/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/historical_data/route.ts @@ -13,7 +13,7 @@ import { hasEntitiesData } from './has_historical_entities_data'; const hasDataRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/has_data', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ hasData: boolean }> => { const apmEventClient = await getApmEventClient(resources); const hasData = await hasHistoricalAgentData(apmEventClient); @@ -23,7 +23,7 @@ const hasDataRoute = createApmServerRoute({ const hasEntitiesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/has_entities', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ hasData: boolean }> => { const { context, request, logger } = resources; const coreContext = await context.core; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/infrastructure/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/infrastructure/route.ts index bcb818a329e85..3a0f4efeab42c 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/infrastructure/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/infrastructure/route.ts @@ -20,7 +20,7 @@ const infrastructureRoute = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt, environmentRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/latency_distribution/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/latency_distribution/route.ts index c489301aebd81..704eaf393702e 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/latency_distribution/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/latency_distribution/route.ts @@ -47,7 +47,7 @@ const latencyOverallTransactionDistributionRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<OverallLatencyDistributionResponse> => { const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/metrics/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/metrics/route.ts index 950c5c18a4302..63fcd8ad87e67 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/metrics/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/metrics/route.ts @@ -32,7 +32,7 @@ const metricsChartsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -67,7 +67,7 @@ const serviceMetricsJvm = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt, environmentRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ serviceNodes: ServiceNodesResponse }> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/metrics/serverless/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/metrics/serverless/route.ts index ba57e09869000..0432409344fe4 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/metrics/serverless/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/metrics/serverless/route.ts @@ -46,7 +46,7 @@ const serverlessMetricsChartsRoute = createApmServerRoute({ t.intersection([transactionDataSourceRt, t.type({ bucketSizeInSeconds: toNumberRt })]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -93,7 +93,7 @@ const serverlessMetricsActiveInstancesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt, t.partial({ serverlessId: t.string })]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -132,7 +132,7 @@ const serverlessMetricsFunctionsOverviewRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -164,7 +164,7 @@ const serverlessMetricsSummaryRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt, t.partial({ serverlessId: t.string })]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServerlessSummaryResponse> => { const { params, context } = resources; const { diff --git a/x-pack/plugins/observability_solution/apm/server/routes/mobile/crashes/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/mobile/crashes/route.ts index 7a474585da9d1..a8dbc788836c6 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/mobile/crashes/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/mobile/crashes/route.ts @@ -36,7 +36,7 @@ const mobileCrashDistributionRoute = createApmServerRoute({ offsetRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<CrashDistributionResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -71,7 +71,7 @@ const mobileCrashMainStatisticsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ errorGroups: MobileCrashGroupMainStatisticsResponse }> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -110,7 +110,7 @@ const mobileCrashDetailedStatisticsRoute = createApmServerRoute({ ]), body: t.type({ groupIds: jsonRt.pipe(t.array(t.string)) }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileCrashesGroupPeriodsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/mobile/errors/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/mobile/errors/route.ts index b00ad9c69fa42..e6d5628a0c0ed 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/mobile/errors/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/mobile/errors/route.ts @@ -39,7 +39,7 @@ const mobileMobileHttpRatesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt, offsetRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileHttpErrorsTimeseries> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -76,7 +76,7 @@ const mobileErrorsDetailedStatisticsRoute = createApmServerRoute({ ]), body: t.type({ groupIds: jsonRt.pipe(t.array(t.string)) }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileErrorGroupPeriodsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -117,7 +117,7 @@ const mobileErrorTermsByFieldRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -158,7 +158,7 @@ const mobileErrorsMainStatisticsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ errorGroups: MobileErrorGroupMainStatisticsResponse }> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/mobile/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/mobile/route.ts index 39b527e6a81eb..d1c964e8a2f6d 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/mobile/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/mobile/route.ts @@ -48,7 +48,7 @@ const mobileFiltersRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -87,7 +87,7 @@ const mobileChartsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -131,7 +131,7 @@ const mobileStatsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobilePeriodStats> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -168,7 +168,7 @@ const mobileLocationStatsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileLocationStats> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -207,7 +207,7 @@ const sessionsChartRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<SessionsTimeseries> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -246,7 +246,7 @@ const httpRequestsChartRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<HttpRequestsTimeseries> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -284,7 +284,7 @@ const mobileTermsByFieldRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -324,9 +324,7 @@ const mobileMainStatisticsByField = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileMainStatisticsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -362,9 +360,7 @@ const mobileDetailedStatisticsByField = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileDetailedStatisticsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/observability_overview/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/observability_overview/route.ts index 3858fafe7dcdd..9d61c885a6361 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/observability_overview/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/observability_overview/route.ts @@ -19,7 +19,7 @@ import { getHasData, HasDataResponse } from './has_data'; const observabilityOverviewHasDataRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/observability_overview/has_data', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<HasDataResponse> => { const apmEventClient = await getApmEventClient(resources); return await getHasData({ @@ -34,7 +34,7 @@ const observabilityOverviewRoute = createApmServerRoute({ params: t.type({ query: t.intersection([rangeRt, t.type({ bucketSize: toNumberRt, intervalString: t.string })]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ObservabilityOverviewResponse> => { const apmEventClient = await getApmEventClient(resources); const { bucketSize, intervalString, start, end } = resources.params.query; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/profiling/hosts/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/profiling/hosts/route.ts index 3ddd2782f1085..c9e14198a42d6 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/profiling/hosts/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/profiling/hosts/route.ts @@ -28,7 +28,7 @@ const profilingHostsFlamegraphRoute = createApmServerRoute({ path: t.type({ serviceName: t.string }), query: t.intersection([rangeRt, environmentRt, serviceTransactionDataSourceRt, kueryRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise< @@ -92,7 +92,7 @@ const profilingHostsFunctionsRoute = createApmServerRoute({ kueryRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise< diff --git a/x-pack/plugins/observability_solution/apm/server/routes/profiling/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/profiling/route.ts index 0f9475f663742..677db02c8f747 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/profiling/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/profiling/route.ts @@ -33,7 +33,7 @@ const servicesFlamegraphRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<BaseFlameGraph | undefined> => { const { context, plugins, params } = resources; const core = await context.core; @@ -87,7 +87,7 @@ const servicesFunctionsRoute = createApmServerRoute({ kueryRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopNFunctions | undefined> => { const { context, plugins, params } = resources; const core = await context.core; @@ -136,7 +136,7 @@ const servicesFunctionsRoute = createApmServerRoute({ const profilingStatusRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/profiling/status', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ initialized: boolean }> => { const { context, plugins, logger } = resources; const [esClient, profilingDataAccessStart] = await Promise.all([ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/service_groups/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/service_groups/route.ts index 3711eb809e936..9ffc365bb4d86 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/service_groups/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/service_groups/route.ts @@ -25,9 +25,7 @@ import { getApmAlertsClient } from '../../lib/helpers/get_apm_alerts_client'; const serviceGroupsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/service-groups', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ serviceGroups: SavedServiceGroup[] }> => { const { context } = resources; const { @@ -47,9 +45,7 @@ const serviceGroupRoute = createApmServerRoute({ serviceGroup: t.string, }), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ serviceGroup: SavedServiceGroup }> => { const { context, params } = resources; const { @@ -79,7 +75,11 @@ const serviceGroupSaveRoute = createApmServerRoute({ color: t.union([t.string, t.undefined]), }), }), - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async (resources): Promise<SavedServiceGroup> => { const { context, params } = resources; const { serviceGroupId } = params.query; @@ -106,7 +106,11 @@ const serviceGroupDeleteRoute = createApmServerRoute({ serviceGroupId: t.string, }), }), - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async (resources): Promise<void> => { const { context, params } = resources; const { serviceGroupId } = params.query; @@ -123,9 +127,7 @@ const serviceGroupServicesRoute = createApmServerRoute({ params: t.type({ query: t.intersection([rangeRt, t.partial(kueryRt.props)]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ items: LookupServicesResponse }> => { const { params, context } = resources; const { kuery = '', start, end } = params.query; @@ -149,9 +151,7 @@ const serviceGroupServicesRoute = createApmServerRoute({ type ServiceGroupCounts = Record<string, { services: number; alerts: number }>; const serviceGroupCountsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/service-group/counts', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceGroupCounts> => { const { context, logger, plugins, request } = resources; const { diff --git a/x-pack/plugins/observability_solution/apm/server/routes/service_map/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/service_map/route.ts index 2524e7a23f9b7..3436874ac5bdc 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/service_map/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/service_map/route.ts @@ -42,7 +42,7 @@ const serviceMapRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TransformServiceMapResponse> => { const { config, context, params, logger } = resources; if (!config.serviceMapEnabled) { @@ -111,7 +111,7 @@ const serviceMapServiceNodeRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, rangeRt, offsetRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceMapServiceNodeInfoResponse> => { const { config, context, params } = resources; @@ -154,7 +154,7 @@ const serviceMapDependencyNodeRoute = createApmServerRoute({ params: t.type({ query: t.intersection([t.type({ dependencyName: t.string }), environmentRt, rangeRt, offsetRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceMapServiceDependencyInfoResponse> => { const { config, context, params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/services/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/services/route.ts index eb6005dc2c1a8..664706b8489b1 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/services/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/services/route.ts @@ -80,7 +80,6 @@ import { import { getThroughput, ServiceThroughputResponse } from './get_throughput'; import { getServiceEntitySummary } from '../entities/services/get_service_entity_summary'; import { ENVIRONMENT_ALL } from '../../../common/environment_filter_values'; -import { createEntitiesESClient } from '../../lib/helpers/create_es_client/create_entities_es_client/create_entities_es_client'; const servicesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/services', @@ -104,7 +103,7 @@ const servicesRoute = createApmServerRoute({ ]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources): Promise<ServicesItemsResponse> { const { context, params, logger, request, core } = resources; @@ -167,7 +166,7 @@ const servicesDetailedStatisticsRoute = createApmServerRoute({ ]), body: t.type({ serviceNames: jsonRt.pipe(t.array(t.string)) }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceTransactionDetailedStatPeriodsResponse> => { const { params, request, core } = resources; @@ -217,7 +216,7 @@ const serviceMetadataDetailsRoute = createApmServerRoute({ path: t.type({ serviceName: t.string }), query: t.intersection([rangeRt, environmentRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceMetadataDetails> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -254,7 +253,7 @@ const serviceMetadataIconsRoute = createApmServerRoute({ path: t.type({ serviceName: t.string }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceMetadataIcons> => { const apmEventClient = await getApmEventClient(resources); const { params, config } = resources; @@ -287,18 +286,13 @@ const serviceAgentRoute = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceAgentResponse> => { - const { context, request } = resources; - const coreContext = await context.core; + const { request, plugins } = resources; + const entityManagerStart = await plugins.entityManager.start(); - const [apmEventClient, entitiesESClient] = await Promise.all([ - getApmEventClient(resources), - createEntitiesESClient({ - request, - esClient: coreContext.elasticsearch.client.asCurrentUser, - }), - ]); + const apmEventClient = await getApmEventClient(resources); + const entityManagerClient = await entityManagerStart.getScopedClient({ request }); const { params } = resources; const { serviceName } = params.path; const { start, end } = params.query; @@ -312,7 +306,7 @@ const serviceAgentRoute = createApmServerRoute({ }), getServiceEntitySummary({ serviceName, - entitiesESClient, + entityManagerClient, environment: ENVIRONMENT_ALL.value, }), ]); @@ -331,7 +325,7 @@ const serviceTransactionTypesRoute = createApmServerRoute({ }), query: t.intersection([rangeRt, serviceTransactionDataSourceRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceTransactionTypesResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -358,7 +352,7 @@ const serviceNodeMetadataRoute = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt, environmentRt, serviceTransactionDataSourceRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceNodeMetadataResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -387,7 +381,12 @@ const serviceAnnotationsRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, rangeRt]), }), - options: { tags: ['access:apm', 'oas-tag:APM annotations'] }, + options: { tags: ['oas-tag:APM annotations'] }, + security: { + authz: { + requiredPrivileges: ['apm'], + }, + }, handler: async (resources): Promise<ServiceAnnotationResponse> => { const apmEventClient = await getApmEventClient(resources); const { params, plugins, context, request, logger, config } = resources; @@ -431,7 +430,12 @@ const serviceAnnotationsRoute = createApmServerRoute({ const serviceAnnotationsCreateRoute = createApmServerRoute({ endpoint: 'POST /api/apm/services/{serviceName}/annotation 2023-10-31', options: { - tags: ['access:apm', 'access:apm_write', 'oas-tag:APM annotations'], + tags: ['oas-tag:APM annotations'], + }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, }, params: t.type({ path: t.type({ @@ -515,7 +519,7 @@ const serviceThroughputRoute = createApmServerRoute({ t.intersection([environmentRt, kueryRt, rangeRt, offsetRt, serviceTransactionDataSourceRt]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -597,7 +601,7 @@ const serviceInstancesMainStatisticsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -670,7 +674,7 @@ const serviceInstancesDetailedStatisticsRoute = createApmServerRoute({ offsetRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceInstancesDetailedStatisticsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params, config } = resources; @@ -722,7 +726,7 @@ export const serviceInstancesMetadataDetails = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise< @@ -772,9 +776,7 @@ export const serviceDependenciesRoute = createApmServerRoute({ offsetRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources): Promise<{ serviceDependencies: ServiceDependenciesResponse }> { const { params, request, core } = resources; @@ -810,9 +812,7 @@ export const serviceDependenciesBreakdownRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, rangeRt, kueryRt]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -853,9 +853,7 @@ const serviceAnomalyChartsRoute = createApmServerRoute({ }), query: t.intersection([rangeRt, environmentRt, t.type({ transactionType: t.string })]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -907,7 +905,7 @@ const serviceAlertsRoute = createApmServerRoute({ }), query: t.intersection([rangeRt, environmentRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceAlertsResponse[number]> => { const { params } = resources; const { diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/agent_configuration/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/agent_configuration/route.ts index aaf8fb2c48681..bda0f5aba15a9 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/agent_configuration/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/agent_configuration/route.ts @@ -39,7 +39,7 @@ function throwNotFoundIfAgentConfigNotAvailable(featureFlags: ApmFeatureFlags): // get list of configurations const agentConfigurationRoute = createApmServerRoute({ endpoint: 'GET /api/apm/settings/agent-configuration 2023-10-31', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -68,7 +68,7 @@ const getSingleAgentConfigurationRoute = createApmServerRoute({ params: t.partial({ query: serviceRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<AgentConfiguration> => { throwNotFoundIfAgentConfigNotAvailable(resources.featureFlags); @@ -98,8 +98,10 @@ const getSingleAgentConfigurationRoute = createApmServerRoute({ // delete configuration const deleteAgentConfigurationRoute = createApmServerRoute({ endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-10-31', - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, params: t.type({ body: t.type({ @@ -154,8 +156,10 @@ const deleteAgentConfigurationRoute = createApmServerRoute({ // create/update configuration const createOrUpdateAgentConfigurationRoute = createApmServerRoute({ endpoint: 'PUT /api/apm/settings/agent-configuration 2023-10-31', - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, params: t.intersection([ t.partial({ query: t.partial({ overwrite: toBooleanRt }) }), @@ -224,7 +228,12 @@ const agentConfigurationSearchRoute = createApmServerRoute({ params: t.type({ body: searchParamsRt, }), - options: { tags: ['access:apm'], disableTelemetry: true }, + options: { disableTelemetry: true }, + security: { + authz: { + requiredPrivileges: ['apm'], + }, + }, handler: async ( resources ): Promise<SearchHit<AgentConfiguration, undefined, undefined> | null> => { @@ -286,7 +295,7 @@ const listAgentConfigurationEnvironmentsRoute = createApmServerRoute({ params: t.partial({ query: t.partial({ serviceName: t.string }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -327,7 +336,7 @@ const agentConfigurationAgentNameRoute = createApmServerRoute({ params: t.type({ query: t.type({ serviceName: t.string }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ agentName: string | undefined }> => { throwNotFoundIfAgentConfigNotAvailable(resources.featureFlags); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/anomaly_detection/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/anomaly_detection/route.ts index 00ceee9451f46..921b86bc57f16 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/anomaly_detection/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/anomaly_detection/route.ts @@ -26,8 +26,10 @@ import { ApmMlJob } from '../../../../common/anomaly_detection/apm_ml_job'; // get ML anomaly detection jobs for each environment const anomalyDetectionJobsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/anomaly-detection/jobs', - options: { - tags: ['access:apm', 'access:ml:canGetJobs'], + security: { + authz: { + requiredPrivileges: ['apm', 'ml:canGetJobs'], + }, }, handler: async ( resources @@ -59,8 +61,10 @@ const anomalyDetectionJobsRoute = createApmServerRoute({ // create new ML anomaly detection jobs for each given environment const createAnomalyDetectionJobsRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/settings/anomaly-detection/jobs', - options: { - tags: ['access:apm', 'access:apm_settings_write', 'access:ml:canCreateJob'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write', 'ml:canCreateJob'], + }, }, params: t.type({ body: t.type({ @@ -102,7 +106,7 @@ const createAnomalyDetectionJobsRoute = createApmServerRoute({ // get all available environments to create anomaly detection jobs for const anomalyDetectionEnvironmentsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/anomaly-detection/environments', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ environments: string[] }> => { const apmEventClient = await getApmEventClient(resources); const coreContext = await resources.context.core; @@ -126,14 +130,16 @@ const anomalyDetectionEnvironmentsRoute = createApmServerRoute({ const anomalyDetectionUpdateToV3Route = createApmServerRoute({ endpoint: 'POST /internal/apm/settings/anomaly-detection/update_to_v3', - options: { - tags: [ - 'access:apm', - 'access:apm_settings_write', - 'access:ml:canCreateJob', - 'access:ml:canGetJobs', - 'access:ml:canCloseJob', - ], + security: { + authz: { + requiredPrivileges: [ + 'apm', + 'apm_settings_write', + 'ml:canCreateJob', + 'ml:canGetJobs', + 'ml:canCloseJob', + ], + }, }, handler: async (resources): Promise<{ update: boolean }> => { const { getApmIndices } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/apm_indices/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/apm_indices/route.ts index 5d8ac9f04e740..63bf2a145d6a0 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/apm_indices/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/apm_indices/route.ts @@ -15,7 +15,7 @@ import { getApmIndexSettings, ApmIndexSettingsResponse } from './get_apm_indices // get list of apm indices and values const apmIndexSettingsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/apm-index-settings', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -29,7 +29,7 @@ const apmIndexSettingsRoute = createApmServerRoute({ // get apm indices configuration object const apmIndicesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/apm-indices', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<APMIndices> => { return await resources.getApmIndices(); }, @@ -42,8 +42,10 @@ type SaveApmIndicesBodySchema = { // save ui indices const saveApmIndicesRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/settings/apm-indices/save', - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, params: t.type({ body: t.partial({ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/custom_link/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/custom_link/route.ts index 306e23a679765..20bdd11b3f45c 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/custom_link/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/custom_link/route.ts @@ -25,7 +25,7 @@ import { CustomLink } from '../../../../common/custom_link/custom_link_types'; const customLinkTransactionRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/custom_links/transaction', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.partial({ query: filterOptionsRt, }), @@ -41,7 +41,7 @@ const customLinkTransactionRoute = createApmServerRoute({ const listCustomLinksRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/custom_links', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.partial({ query: filterOptionsRt, }), @@ -75,7 +75,11 @@ const createCustomLinkRoute = createApmServerRoute({ params: t.type({ body: payloadRt, }), - options: { tags: ['access:apm', 'access:apm_settings_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, + }, handler: async (resources): Promise<void> => { const { context, params } = resources; const licensingContext = await context.licensing; @@ -104,8 +108,10 @@ const updateCustomLinkRoute = createApmServerRoute({ }), body: payloadRt, }), - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, handler: async (resources): Promise<void> => { const { params, context } = resources; @@ -135,8 +141,10 @@ const deleteCustomLinkRoute = createApmServerRoute({ id: t.string, }), }), - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, handler: async (resources): Promise<{ result: string }> => { const { context, params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/labs/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/labs/route.ts index 608fe27106cac..28e8e5ef7eceb 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/labs/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/labs/route.ts @@ -10,7 +10,7 @@ import { createApmServerRoute } from '../../apm_routes/create_apm_server_route'; const getLabsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/labs', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (): Promise<{ labsItems: string[] }> => { const labsItems = Object.entries(uiSettings) .filter(([key, value]): boolean | undefined => value.showInLabs) diff --git a/x-pack/plugins/observability_solution/apm/server/routes/source_maps/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/source_maps/route.ts index bc92c06416204..6e51002dfc81a 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/source_maps/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/source_maps/route.ts @@ -49,7 +49,7 @@ function throwNotImplementedIfSourceMapNotAvailable(featureFlags: ApmFeatureFlag const listSourceMapRoute = createApmServerRoute({ endpoint: 'GET /api/apm/sourcemaps 2023-10-31', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.partial({ query: t.partial({ page: toNumberRt, @@ -85,9 +85,13 @@ const listSourceMapRoute = createApmServerRoute({ const uploadSourceMapRoute = createApmServerRoute({ endpoint: 'POST /api/apm/sourcemaps 2023-10-31', options: { - tags: ['access:apm', 'access:apm_write'], body: { accepts: ['multipart/form-data'] }, }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, params: t.type({ body: t.type({ service_name: t.string, @@ -159,7 +163,11 @@ const uploadSourceMapRoute = createApmServerRoute({ const deleteSourceMapRoute = createApmServerRoute({ endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-10-31', - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, params: t.type({ path: t.type({ id: t.string, @@ -192,7 +200,11 @@ const deleteSourceMapRoute = createApmServerRoute({ const migrateFleetArtifactsSourceMapRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/sourcemaps/migrate_fleet_artifacts', - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async ({ plugins, core, logger, featureFlags }): Promise<void> => { throwNotImplementedIfSourceMapNotAvailable(featureFlags); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/span_links/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/span_links/route.ts index 95e038f8b0184..6a3531e4fa443 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/span_links/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/span_links/route.ts @@ -23,7 +23,7 @@ const linkedParentsRoute = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt, t.type({ processorEvent: processorEventRt })]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -63,7 +63,7 @@ const linkedChildrenRoute = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/storage_explorer/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/storage_explorer/route.ts index d2255fdd13835..dfaf5dd8185ce 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/storage_explorer/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/storage_explorer/route.ts @@ -34,7 +34,7 @@ import { isCrossClusterSearch } from './is_cross_cluster_search'; const storageExplorerRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([indexLifecyclePhaseRt, probabilityRt, environmentRt, kueryRt, rangeRt]), }), @@ -81,7 +81,7 @@ const storageExplorerRoute = createApmServerRoute({ const storageExplorerServiceDetailsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/services/{serviceName}/storage_details', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ path: t.type({ serviceName: t.string, @@ -118,7 +118,7 @@ const storageExplorerServiceDetailsRoute = createApmServerRoute({ const storageChartRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_chart', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([indexLifecyclePhaseRt, probabilityRt, environmentRt, kueryRt, rangeRt]), }), @@ -163,7 +163,7 @@ const storageChartRoute = createApmServerRoute({ const storageExplorerPrivilegesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer/privileges', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ hasPrivileges: boolean }> => { const { @@ -187,7 +187,7 @@ const storageExplorerPrivilegesRoute = createApmServerRoute({ const storageExplorerSummaryStatsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer_summary_stats', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([indexLifecyclePhaseRt, probabilityRt, environmentRt, kueryRt, rangeRt]), }), @@ -226,7 +226,7 @@ const storageExplorerSummaryStatsRoute = createApmServerRoute({ const storageExplorerIsCrossClusterSearchRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer/is_cross_cluster_search', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ isCrossClusterSearch: boolean }> => { const apmEventClient = await getApmEventClient(resources); return { isCrossClusterSearch: isCrossClusterSearch(apmEventClient) }; @@ -235,9 +235,7 @@ const storageExplorerIsCrossClusterSearchRoute = createApmServerRoute({ const storageExplorerGetServices = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer/get_services', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([indexLifecyclePhaseRt, environmentRt, kueryRt, rangeRt]), }), diff --git a/x-pack/plugins/observability_solution/apm/server/routes/suggestions/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/suggestions/route.ts index 40b49390bd8ff..0ab43cab30826 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/suggestions/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/suggestions/route.ts @@ -26,7 +26,7 @@ const suggestionsRoute = createApmServerRoute({ t.partial({ serviceName: t.string }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ terms: string[] }> => { const apmEventClient = await getApmEventClient(resources); const { context, params, config } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/time_range_metadata/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/time_range_metadata/route.ts index bf91af259249e..dcd5fa39e97f2 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/time_range_metadata/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/time_range_metadata/route.ts @@ -26,9 +26,7 @@ export const timeRangeMetadataRoute = createApmServerRoute({ rangeRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TimeRangeMetadata> => { const apmEventClient = await getApmEventClient(resources); const apmDataAccessServices = await getApmDataAccessServices({ apmEventClient, ...resources }); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/traces/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/traces/route.ts index 018cc1acc10fb..f1a5dfdb25160 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/traces/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/traces/route.ts @@ -35,7 +35,7 @@ const tracesRoute = createApmServerRoute({ params: t.type({ query: t.intersection([environmentRt, kueryRt, rangeRt, probabilityRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopTracesPrimaryStatsResponse> => { const { config, params, request, core } = resources; @@ -79,7 +79,7 @@ const tracesByIdRoute = createApmServerRoute({ t.partial({ maxTraceItems: toNumberRt }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -123,7 +123,7 @@ const rootTransactionByTraceIdRoute = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -150,7 +150,7 @@ const transactionByIdRoute = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -186,7 +186,7 @@ const transactionByNameRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -223,9 +223,7 @@ const findTracesRoute = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -260,9 +258,7 @@ const aggregatedCriticalPathRoute = createApmServerRoute({ rangeRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ criticalPath: CriticalPathResponse | null }> => { const { params: { @@ -293,7 +289,7 @@ const transactionFromTraceByIdRoute = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<Transaction | undefined> => { const { params } = resources; const { @@ -324,7 +320,7 @@ const spanFromTraceByIdRoute = createApmServerRoute({ t.union([t.partial({ parentTransactionId: t.string }), t.undefined]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/transactions/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/transactions/route.ts index 816879d7cb40a..51ada72e38588 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/transactions/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/transactions/route.ts @@ -75,9 +75,7 @@ const transactionGroupsMainStatisticsRoute = createApmServerRoute({ transactionDataSourceRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MergedServiceTransactionGroupsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -164,9 +162,7 @@ const transactionGroupsDetailedStatisticsRoute = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceTransactionGroupDetailedStatisticsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -226,7 +222,7 @@ const transactionLatencyChartsRoute = createApmServerRoute({ serviceTransactionDataSourceRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TransactionLatencyResponse> => { const apmEventClient = await getApmEventClient(resources); const { params, logger } = resources; @@ -295,7 +291,7 @@ const transactionTraceSamplesRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TransactionTraceSamplesResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -344,7 +340,7 @@ const transactionChartsBreakdownRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TransactionBreakdownResponse> => { const apmEventClient = await getApmEventClient(resources); const { params, config } = resources; @@ -378,7 +374,7 @@ const transactionChartsErrorRateRoute = createApmServerRoute({ t.intersection([environmentRt, kueryRt, rangeRt, offsetRt, serviceTransactionDataSourceRt]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<FailedTransactionRateResponse> => { const apmEventClient = await getApmEventClient(resources); @@ -427,7 +423,7 @@ const transactionChartsColdstartRateRoute = createApmServerRoute({ t.intersection([environmentRt, kueryRt, rangeRt, offsetRt]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ColdstartRateResponse> => { const apmEventClient = await getApmEventClient(resources); @@ -469,7 +465,7 @@ const transactionChartsColdstartRateByTransactionNameRoute = createApmServerRout t.intersection([environmentRt, kueryRt, rangeRt, offsetRt]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ColdstartRateResponse> => { const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/typings.ts b/x-pack/plugins/observability_solution/apm/server/routes/typings.ts index de5aeb6031d1c..830810af60cb5 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/typings.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/typings.ts @@ -45,17 +45,7 @@ export type MinimalApmPluginRequestHandlerContext = Omit< }; export interface APMRouteCreateOptions { - tags: Array< - | 'access:apm' - | 'access:apm_write' - | 'access:apm_settings_write' - | 'access:ml:canGetJobs' - | 'access:ml:canCreateJob' - | 'access:ml:canCloseJob' - | 'access:ai_assistant' - | 'oas-tag:APM agent keys' - | 'oas-tag:APM annotations' - >; + tags?: Array<'oas-tag:APM agent keys' | 'oas-tag:APM annotations'>; disableTelemetry?: boolean; } diff --git a/x-pack/plugins/observability_solution/apm/server/types.ts b/x-pack/plugins/observability_solution/apm/server/types.ts index e99860b9d441f..ba1d17d6af6b9 100644 --- a/x-pack/plugins/observability_solution/apm/server/types.ts +++ b/x-pack/plugins/observability_solution/apm/server/types.ts @@ -5,52 +5,50 @@ * 2.0. */ -import { SharePluginSetup } from '@kbn/share-plugin/server'; -import { Observable } from 'rxjs'; -import { - RuleRegistryPluginSetupContract, - RuleRegistryPluginStartContract, -} from '@kbn/rule-registry-plugin/server'; -import { - PluginSetup as DataPluginSetup, - PluginStart as DataPluginStart, -} from '@kbn/data-plugin/server'; -import { +import type { ApmDataAccessPluginSetup, ApmDataAccessPluginStart, } from '@kbn/apm-data-access-plugin/server'; - -import { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; +import type { + PluginSetup as DataPluginSetup, + PluginStart as DataPluginStart, +} from '@kbn/data-plugin/server'; +import type { + RuleRegistryPluginSetupContract, + RuleRegistryPluginStartContract, +} from '@kbn/rule-registry-plugin/server'; +import type { SharePluginSetup } from '@kbn/share-plugin/server'; +import type { Observable } from 'rxjs'; +import type { ActionsPlugin } from '@kbn/actions-plugin/server'; +import type { CloudSetup } from '@kbn/cloud-plugin/server'; +import type { DataViewsServerPluginStart } from '@kbn/data-views-plugin/server'; +import type { FeaturesPluginSetup, FeaturesPluginStart } from '@kbn/features-plugin/server'; import { HomeServerPluginSetup, HomeServerPluginStart } from '@kbn/home-plugin/server'; import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; -import { ActionsPlugin } from '@kbn/actions-plugin/server'; import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; -import { CloudSetup } from '@kbn/cloud-plugin/server'; -import { FeaturesPluginSetup, FeaturesPluginStart } from '@kbn/features-plugin/server'; import { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; import { MlPluginSetup, MlPluginStart } from '@kbn/ml-plugin/server'; import { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; import { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; -import { - TaskManagerSetupContract, - TaskManagerStartContract, -} from '@kbn/task-manager-plugin/server'; import { FleetSetupContract as FleetPluginSetup, FleetStartContract as FleetPluginStart, } from '@kbn/fleet-plugin/server'; -import { MetricsDataPluginSetup } from '@kbn/metrics-data-access-plugin/server'; -import { DataViewsServerPluginStart } from '@kbn/data-views-plugin/server'; - -import { +import type { MetricsDataPluginSetup } from '@kbn/metrics-data-access-plugin/server'; +import type { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; +import type { + TaskManagerSetupContract, + TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server'; +import type { CustomIntegrationsPluginSetup, CustomIntegrationsPluginStart, } from '@kbn/custom-integrations-plugin/server'; -import { - ProfilingDataAccessPluginSetup, - ProfilingDataAccessPluginStart, -} from '@kbn/profiling-data-access-plugin/server'; -import { +import type { + EntityManagerServerPluginSetup, + EntityManagerServerPluginStart, +} from '@kbn/entityManager-plugin/server'; +import type { LogsDataAccessPluginSetup, LogsDataAccessPluginStart, } from '@kbn/logs-data-access-plugin/server'; @@ -58,6 +56,10 @@ import type { ObservabilityAIAssistantServerSetup, ObservabilityAIAssistantServerStart, } from '@kbn/observability-ai-assistant-plugin/server'; +import type { + ProfilingDataAccessPluginSetup, + ProfilingDataAccessPluginStart, +} from '@kbn/profiling-data-access-plugin/server'; import { APMConfig } from '.'; export interface APMPluginSetup { @@ -75,8 +77,10 @@ export interface APMPluginSetupDependencies { metricsDataAccess: MetricsDataPluginSetup; dataViews: {}; share: SharePluginSetup; - observabilityAIAssistant?: ObservabilityAIAssistantServerSetup; + logsDataAccess: LogsDataAccessPluginSetup; + entityManager: EntityManagerServerPluginSetup; // optional dependencies + observabilityAIAssistant?: ObservabilityAIAssistantServerSetup; actions?: ActionsPlugin['setup']; alerting?: AlertingServerSetup; cloud?: CloudSetup; @@ -89,7 +93,6 @@ export interface APMPluginSetupDependencies { usageCollection?: UsageCollectionSetup; customIntegrations?: CustomIntegrationsPluginSetup; profilingDataAccess?: ProfilingDataAccessPluginSetup; - logsDataAccess: LogsDataAccessPluginSetup; } export interface APMPluginStartDependencies { // required dependencies @@ -102,8 +105,10 @@ export interface APMPluginStartDependencies { metricsDataAccess: MetricsDataPluginSetup; dataViews: DataViewsServerPluginStart; share: undefined; - observabilityAIAssistant?: ObservabilityAIAssistantServerStart; + logsDataAccess: LogsDataAccessPluginStart; + entityManager: EntityManagerServerPluginStart; // optional dependencies + observabilityAIAssistant?: ObservabilityAIAssistantServerStart; actions?: ActionsPlugin['start']; alerting?: AlertingServerStart; cloud?: undefined; @@ -116,5 +121,4 @@ export interface APMPluginStartDependencies { usageCollection?: undefined; customIntegrations?: CustomIntegrationsPluginStart; profilingDataAccess?: ProfilingDataAccessPluginStart; - logsDataAccess: LogsDataAccessPluginStart; } diff --git a/x-pack/plugins/observability_solution/apm/tsconfig.json b/x-pack/plugins/observability_solution/apm/tsconfig.json index b2fda13c3f76f..82dd827086033 100644 --- a/x-pack/plugins/observability_solution/apm/tsconfig.json +++ b/x-pack/plugins/observability_solution/apm/tsconfig.json @@ -129,6 +129,7 @@ "@kbn/alerting-comparators", "@kbn/saved-search-component", "@kbn/saved-search-plugin", + "@kbn/entityManager-plugin", ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/observability_solution/apm_data_access/server/lib/helpers/create_es_client/create_apm_event_client/index.test.ts b/x-pack/plugins/observability_solution/apm_data_access/server/lib/helpers/create_es_client/create_apm_event_client/index.test.ts index a349c7c48f687..79084daeb22e6 100644 --- a/x-pack/plugins/observability_solution/apm_data_access/server/lib/helpers/create_es_client/create_apm_event_client/index.test.ts +++ b/x-pack/plugins/observability_solution/apm_data_access/server/lib/helpers/create_es_client/create_apm_event_client/index.test.ts @@ -47,34 +47,46 @@ describe('APMEventClient', () => { const router = createRouter('/'); let abortSignal: AbortSignal | undefined; - router.get({ path: '/', validate: false }, async (context, request, res) => { - const eventClient = new APMEventClient({ - esClient: { - search: async (params: any, { signal }: { signal: AbortSignal }) => { - abortSignal = signal; - await setTimeoutPromise(3_000, undefined, { - signal: abortSignal, - }); - return {}; + router.get( + { + path: '/', + security: { + authz: { + enabled: false, + reason: 'This route is opted out from authorization', }, - } as any, - debug: false, - request, - indices: {} as APMIndices, - options: { - includeFrozen: false, }, - }); + validate: false, + }, + async (context, request, res) => { + const eventClient = new APMEventClient({ + esClient: { + search: async (params: any, { signal }: { signal: AbortSignal }) => { + abortSignal = signal; + await setTimeoutPromise(3_000, undefined, { + signal: abortSignal, + }); + return {}; + }, + } as any, + debug: false, + request, + indices: {} as APMIndices, + options: { + includeFrozen: false, + }, + }); - await eventClient.search('foo', { - apm: { - events: [], - }, - body: { size: 0, track_total_hits: false }, - }); + await eventClient.search('foo', { + apm: { + events: [], + }, + body: { size: 0, track_total_hits: false }, + }); - return res.ok({ body: 'ok' }); - }); + return res.ok({ body: 'ok' }); + } + ); await server.start(); diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/common/vertical_rule.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/common/vertical_rule.tsx new file mode 100644 index 0000000000000..4fc6ae6cb4933 --- /dev/null +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/common/vertical_rule.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; +import React from 'react'; + +export const VerticalRule = (props: React.ComponentProps<'span'>) => { + const { euiTheme } = useEuiTheme(); + + return ( + <span + css={css` + width: ${euiTheme.border.width.thin}; + height: 63px; + background-color: ${euiTheme.colors.borderBaseSubdued}; + `} + {...props} + /> + ); +}; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_quality_indicators.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_quality_indicators.tsx index b186c16c0c0f8..3f883228195fc 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_quality_indicators.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_quality_indicators.tsx @@ -6,9 +6,6 @@ */ import React from 'react'; -import { euiThemeVars } from '@kbn/ui-theme'; -import { css } from '@emotion/react'; - import { EuiFlexGroup, EuiPanel, @@ -30,9 +27,12 @@ import { summaryPanelQualityTooltipText, } from '../../../../common/translations'; import { mapPercentagesToQualityCounts } from '../../quality_indicator'; +import { useDatasetQualityFilters } from '../../../hooks/use_dataset_quality_filters'; +import { VerticalRule } from '../../common/vertical_rule'; export function DatasetsQualityIndicators() { const { onPageReady } = usePerformanceContext(); + const { timeRange } = useDatasetQualityFilters(); const { datasetsQuality, isDatasetsQualityLoading, @@ -46,10 +46,16 @@ export function DatasetsQualityIndicators() { if (!isDatasetsQualityLoading && (numberOfDatasets || numberOfDocuments)) { onPageReady({ - key1: 'datasets', - value1: numberOfDatasets, - key2: 'documents', - value2: numberOfDocuments, + customMetrics: { + key1: 'datasets', + value1: numberOfDatasets, + key2: 'documents', + value2: numberOfDocuments, + }, + meta: { + rangeFrom: timeRange.from, + rangeTo: timeRange.to, + }, }); } @@ -71,14 +77,14 @@ export function DatasetsQualityIndicators() { description={summaryPanelQualityPoorText} isLoading={isDatasetsQualityLoading} /> - <span css={verticalRule} /> + <VerticalRule /> <QualityIndicator value={qualityCounts.degraded} quality="warning" description={summaryPanelQualityDegradedText} isLoading={isDatasetsQualityLoading} /> - <span css={verticalRule} /> + <VerticalRule /> <QualityIndicator value={qualityCounts.good + datasetsWithoutIgnoredField} quality="success" @@ -125,9 +131,3 @@ const QualityIndicator = ({ </EuiFlexGroup> ); }; - -const verticalRule = css` - width: 1px; - height: 63px; - background-color: ${euiThemeVars.euiColorLightShade}; -`; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/degraded_field_flyout/field_info.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/degraded_field_flyout/field_info.tsx index 3bcee0bbc89b3..12733e62c9cfb 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/degraded_field_flyout/field_info.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/degraded_field_flyout/field_info.tsx @@ -16,6 +16,7 @@ import { EuiTitle, EuiToolTip, formatNumber, + useEuiTheme, } from '@elastic/eui'; import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '@kbn/field-types'; @@ -33,6 +34,8 @@ import { SparkPlot } from '../../common/spark_plot'; import { DegradedField } from '../../../../common/api_types'; export const DegradedFieldInfo = ({ fieldList }: { fieldList?: DegradedField }) => { + const { euiTheme } = useEuiTheme(); + const { fieldFormats, degradedFieldValues, @@ -164,7 +167,7 @@ export const DegradedFieldInfo = ({ fieldList }: { fieldList?: DegradedField }) <EuiBadgeGroup gutterSize="s"> {degradedFieldValues?.values.map((value, idx) => ( <EuiBadge color="hollow" key={idx}> - <EuiTextColor color="#765B96"> + <EuiTextColor color={euiTheme.colors.vis.euiColorVis3}> <strong>{value}</strong> </EuiTextColor> </EuiBadge> diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/overview/summary/panel.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/overview/summary/panel.tsx index e03e0957b5a52..dfcd95fae704a 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/overview/summary/panel.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/overview/summary/panel.tsx @@ -7,22 +7,9 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSkeletonTitle, EuiText } from '@elastic/eui'; -import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { PrivilegesWarningIconWrapper } from '../../../common'; import { notAvailableLabel } from '../../../../../common/translations'; - -const verticalRule = css` - width: 1px; - height: 65px; - background-color: ${euiThemeVars.euiColorLightShade}; -`; - -const verticalRuleHidden = css` - width: 1px; - height: 65px; - visibility: hidden; -`; +import { VerticalRule } from '../../../common/vertical_rule'; export function Panel({ title, @@ -38,14 +25,14 @@ export function Panel({ return panelChildren.map((panelChild, index) => ( <React.Fragment key={index}> {panelChild} - {index < panelChildren.length - 1 && <span css={verticalRule} />} + {index < panelChildren.length - 1 && <VerticalRule />} </React.Fragment> )); } return ( <> {panelChildren} - <span css={verticalRuleHidden} /> + <VerticalRule style={{ visibility: 'hidden' }} /> </> ); }; diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/services/data_stream.ts b/x-pack/plugins/observability_solution/dataset_quality/server/services/data_stream.ts index 1157b40936a6d..e54f0f33f375a 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/server/services/data_stream.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/server/services/data_stream.ts @@ -20,7 +20,6 @@ class DataStreamService { try { const { data_streams: dataStreamsInfo } = await esClient.indices.getDataStream({ name: datasetName, - // @ts-expect-error verbose: true, }); diff --git a/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json b/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json index 57b159cdbd295..9c515d8112088 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json +++ b/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json @@ -29,7 +29,6 @@ "@kbn/router-utils", "@kbn/xstate-utils", "@kbn/shared-ux-utility", - "@kbn/ui-theme", "@kbn/data-service", "@kbn/observability-shared-plugin", "@kbn/data-plugin", diff --git a/x-pack/plugins/observability_solution/exploratory_view/README.md b/x-pack/plugins/observability_solution/exploratory_view/README.md deleted file mode 100644 index 67a73639cdf87..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Exploratory View plugin - -A shared component for visualizing observability data types via lens embeddable. [For further details.](./public/components/exploratory_view/README.md) - -## Unit testing - -Note: Run the following commands from `kibana/x-pack/plugins/observability_solution/exploratory_view`. - -### Run unit tests - -```bash -npx jest --watch -``` - -### Update snapshots - -```bash -npx jest --updateSnapshot -``` - -### Coverage - -HTML coverage report can be found in target/coverage/jest after tests have run. - -```bash -open target/coverage/jest/index.html -``` diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/README.md b/x-pack/plugins/observability_solution/exploratory_view/e2e/README.md deleted file mode 100644 index 00c7eaa80b88c..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/README.md +++ /dev/null @@ -1,15 +0,0 @@ -## How to run these tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/exploratory_view/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From this directory, `~/x-pack/plugins/observability_solution/exploratory_view/e2e`, you can now run `node ../../../../scripts/functional_test_runner --config synthetics_run.ts`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/step_duration.journey.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/step_duration.journey.ts deleted file mode 100644 index 86291929afcc3..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/step_duration.journey.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { journey, step } from '@elastic/synthetics'; -import moment from 'moment'; -import { recordVideo } from '../record_video'; -import { createExploratoryViewUrl } from '../../public/components/shared/exploratory_view/configurations/exploratory_view_url'; -import { byTestId, loginToKibana, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../utils'; - -journey('Step Duration series', async ({ page, params }) => { - recordVideo(page); - - page.setDefaultTimeout(TIMEOUT_60_SEC.timeout); - - const expUrl = createExploratoryViewUrl({ - reportType: 'kpi-over-time', - allSeries: [ - { - dataType: 'uptime', - time: { - from: moment().subtract(10, 'y').toISOString(), - to: moment().toISOString(), - }, - name: 'synthetics-series-1', - breakdown: 'monitor.type', - selectedMetricField: 'monitor.duration.us', - reportDefinitions: { - 'url.full': ['ALL_VALUES'], - }, - }, - ], - }); - - const baseUrl = `${params.kibanaUrl}${expUrl}`; - - step('Go to Exploratory view', async () => { - await page.goto(baseUrl, { - waitUntil: 'networkidle', - }); - await loginToKibana({ - page, - user: { username: 'elastic', password: 'changeme' }, - }); - }); - - step('build series with monitor duration', async () => { - await page.waitForNavigation(TIMEOUT_60_SEC); - - await waitForLoadingToFinish({ page }); - await page.click('text=browser'); - await page.click('text=http'); - await page.click('[aria-label="Remove report metric"]'); - await page.click('button:has-text("Select report metric")'); - await page.click('button:has-text("Step duration")'); - await page.click(byTestId('seriesBreakdown')); - await page.click('button[role="option"]:has-text("Step name")'); - await page.click('.euiComboBox__inputWrap'); - await page.click('[role="combobox"][placeholder="Search Monitor name"]'); - await page.click('button[role="option"]:has-text("test-monitor - inline")'); - await page.click('button:has-text("Apply changes")'); - }); - - step('Verify that changes are applied', async () => { - await waitForLoadingToFinish({ page }); - - await page.click('[aria-label="series color: #54b399"]'); - await page.click('[aria-label="series color: #6092c0"]'); - await page.click('[aria-label="series color: #d36086"] path'); - await page.click('[aria-label="series color: #9170b8"]'); - await page.click('[aria-label="series color: #ca8eae"]'); - await page.click('[aria-label="series color: #d6bf57"]'); - await page.click('text=load homepage'); - await page.click('text=load homepage'); - await page.click('text=load github'); - await page.click('text=load github'); - await page.click('text=load google'); - await page.click('text=load google'); - await page.click('text=hover over products menu'); - await page.click('text=hover over products menu'); - await page.click('text=load homepage 1'); - await page.click('text=load homepage 1'); - await page.click('text=load homepage 2'); - await page.click('text=load homepage 2'); - }); -}); diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/parse_args_params.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/parse_args_params.ts deleted file mode 100644 index 41100ba2ec295..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/parse_args_params.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import yargs from 'yargs'; - -const { argv } = yargs(process.argv.slice(2)) - .option('headless', { - default: true, - type: 'boolean', - description: 'Start in headless mode', - }) - .option('bail', { - default: false, - type: 'boolean', - description: 'Pause on error', - }) - .option('watch', { - default: false, - type: 'boolean', - description: 'Runs the server in watch mode, restarting on changes', - }) - .option('grep', { - default: undefined, - type: 'string', - description: 'run only journeys with a name or tags that matches the glob', - }) - .help(); - -export { argv }; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/record_video.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/record_video.ts deleted file mode 100644 index 23bcdfb643e72..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/record_video.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import fs from 'fs'; -import Runner from '@elastic/synthetics/dist/core/runner'; -import { after, Page } from '@elastic/synthetics'; - -const SYNTHETICS_RUNNER = Symbol.for('SYNTHETICS_RUNNER'); - -// @ts-ignore -export const runner: Runner = global[SYNTHETICS_RUNNER]; - -export const recordVideo = (page: Page, postfix = '') => { - after(async () => { - try { - const videoFilePath = await page.video()?.path(); - const pathToVideo = videoFilePath?.replace('.journeys/videos/', '').replace('.webm', ''); - const newVideoPath = videoFilePath?.replace( - pathToVideo!, - postfix ? runner.currentJourney!.name + `-${postfix}` : runner.currentJourney!.name - ); - fs.renameSync(videoFilePath!, newVideoPath!); - } catch (e) { - // eslint-disable-next-line no-console - console.log('Error while renaming video file', e); - } - }); -}; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_run.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_run.ts deleted file mode 100644 index 70a290ce9900a..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_run.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { FtrConfigProviderContext } from '@kbn/test'; -import path from 'path'; -import { SyntheticsRunner } from './synthetics_runner'; -import { argv } from './parse_args_params'; - -const { headless, grep, bail: pauseOnError } = argv; - -async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); - - return { - ...kibanaConfig.getAll(), - testRunner: async ({ getService }: any) => { - const syntheticsRunner = new SyntheticsRunner(getService, { - headless, - match: grep, - pauseOnError, - }); - - await syntheticsRunner.setup(); - - await syntheticsRunner.loadTestData(path.join(__dirname, '../../ux/e2e/fixtures/'), [ - 'rum_8.0.0', - 'rum_test_data', - ]); - await syntheticsRunner.loadTestData( - path.join(__dirname, '../../synthetics/e2e/fixtures/es_archiver/'), - ['full_heartbeat', 'browser'] - ); - await syntheticsRunner.loadTestFiles(async () => { - require(path.join(__dirname, './journeys')); - }); - await syntheticsRunner.run(); - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default runE2ETests; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_runner.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_runner.ts deleted file mode 100644 index bc6222774f055..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_runner.ts +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* eslint-disable no-console */ - -import Url from 'url'; -import { run as syntheticsRun } from '@elastic/synthetics'; -import { PromiseType } from 'utility-types'; -import { createApmUsers } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/create_apm_users'; - -import { EsArchiver } from '@kbn/es-archiver'; -import { esArchiverUnload } from './tasks/es_archiver'; -import { TestReporter } from './test_reporter'; - -export interface ArgParams { - headless: boolean; - match?: string; - pauseOnError: boolean; -} - -export class SyntheticsRunner { - public getService: any; - public kibanaUrl: string; - private elasticsearchUrl: string; - - public testFilesLoaded: boolean = false; - - public params: ArgParams; - - private loadTestFilesCallback?: (reload?: boolean) => Promise<void>; - - constructor(getService: any, params: ArgParams) { - this.getService = getService; - this.kibanaUrl = this.getKibanaUrl(); - this.elasticsearchUrl = this.getElasticsearchUrl(); - this.params = params; - } - - async setup() { - await this.createTestUsers(); - } - - async createTestUsers() { - await createApmUsers({ - elasticsearch: { node: this.elasticsearchUrl, username: 'elastic', password: 'changeme' }, - kibana: { hostname: this.kibanaUrl }, - }); - } - - async loadTestFiles(callback: (reload?: boolean) => Promise<void>, reload = false) { - console.log('Loading test files'); - await callback(reload); - this.loadTestFilesCallback = callback; - this.testFilesLoaded = true; - console.log('Successfully loaded test files'); - } - - async loadTestData(e2eDir: string, dataArchives: string[]) { - try { - console.log('Loading esArchiver...'); - - const esArchiver: EsArchiver = this.getService('esArchiver'); - - const promises = dataArchives.map((archive) => { - if (archive === 'synthetics_data') { - return esArchiver.load(e2eDir + archive, { - docsOnly: true, - skipExisting: true, - }); - } - return esArchiver.load(e2eDir + archive, { skipExisting: true }); - }); - - await Promise.all([...promises]); - } catch (e) { - console.log(e); - } - } - - getKibanaUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.kibana.protocol'), - hostname: config.get('servers.kibana.hostname'), - port: config.get('servers.kibana.port'), - }); - } - - getElasticsearchUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.elasticsearch.protocol'), - hostname: config.get('servers.elasticsearch.hostname'), - port: config.get('servers.elasticsearch.port'), - }); - } - - async run() { - if (!this.testFilesLoaded) { - throw new Error('Test files not loaded'); - } - const { headless, match, pauseOnError } = this.params; - const noOfRuns = process.env.NO_OF_RUNS ? Number(process.env.NO_OF_RUNS) : 1; - console.log(`Running ${noOfRuns} times`); - let results: PromiseType<ReturnType<typeof syntheticsRun>> = {}; - for (let i = 0; i < noOfRuns; i++) { - results = await syntheticsRun({ - params: { kibanaUrl: this.kibanaUrl, getService: this.getService }, - playwrightOptions: { - headless, - chromiumSandbox: false, - timeout: 60 * 1000, - viewport: { - height: 900, - width: 1600, - }, - recordVideo: { - dir: '.journeys/videos', - }, - }, - grepOpts: { match: match === 'undefined' ? '' : match }, - pauseOnError, - screenshots: 'only-on-failure', - reporter: TestReporter, - }); - if (noOfRuns > 1) { - // need to reload again since runner resets the journeys - await this.loadTestFiles(this.loadTestFilesCallback!, true); - } - } - - await this.assertResults(results); - } - - assertResults(results: PromiseType<ReturnType<typeof syntheticsRun>>) { - Object.entries(results).forEach(([_journey, result]) => { - if (result.status !== 'succeeded') { - process.exitCode = 1; - process.exit(); - } - }); - } - - cleanUp() { - console.log('Removing esArchiver...'); - esArchiverUnload('full_heartbeat'); - esArchiverUnload('browser'); - } -} diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/tasks/es_archiver.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/tasks/es_archiver.ts deleted file mode 100644 index bbb66b19f5a5e..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/tasks/es_archiver.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import Path from 'path'; -import { execSync } from 'child_process'; - -const ES_ARCHIVE_DIR = './fixtures/es_archiver'; - -// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https -const NODE_TLS_REJECT_UNAUTHORIZED = '1'; - -export const esArchiverLoad = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../scripts/es_archiver load "${path}" --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverUnload = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../scripts/es_archiver unload "${path}" --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverResetKibana = () => { - execSync( - `node ../../../../scripts/es_archiver empty-kibana-index --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/tsconfig.json b/x-pack/plugins/observability_solution/exploratory_view/e2e/tsconfig.json deleted file mode 100644 index 93a315a3e7a6b..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "exclude": ["tmp", "target/**/*"], - "include": ["./**/*"], - "compilerOptions": { - "outDir": "target/types", - "types": ["node"] - }, - "kbn_references": ["@kbn/test", "@kbn/apm-plugin", "@kbn/es-archiver"] -} diff --git a/x-pack/plugins/observability_solution/exploratory_view/jest.config.js b/x-pack/plugins/observability_solution/exploratory_view/jest.config.js deleted file mode 100644 index 089c3b9ed3ce4..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/jest.config.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/exploratory_view'], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/exploratory_view/.storybook/jest_setup.js', - ], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/observability_solution/exploratory_view', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/exploratory_view/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/README.md b/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/README.md deleted file mode 100644 index 6aea217a1aaa8..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/README.md +++ /dev/null @@ -1,161 +0,0 @@ -# Exploratory view component - -This component is used in observability plugin to show lens embeddable based observability visualizations. -The view is populated using configs stored as json within the view for each data type. - -This readme file contains few of the concepts being used in the component. - -Basic workflow for how exploratory view works, it looks like this - - -![Exploratory view workflow](https://i.imgur.com/Kgyfd29.png) - - -## Report Type - -The exploratory view report type controls how the data is visualized in the lens embeddable. The report type defines a set of constraints over the x and y axis. For example, the `kpi-over-time` report type is a time series chart type that plots key performance indicators over time, while the `data-distribution` chart plots the percentage of documents over key performance indicators. Current available data types can be found at `exploratory_view/configurations/constants`. - -Each report type has one or more available visualizations to plot data from one or more data types. - -## Data Types - -Each available visualization is backed by a data type. A data type consists of a set of configuration for displaying domain-specific visualizations for observability data. Some example data types include apm, metrics, and logs. - -For each respective data type, we fetch index pattern string from the app plugin contract, leveraging existing hasData API we have to return the index pattern string as well as a `hasData` boolean from each plugin. - -In most cases, there will be a 1-1 relation between apps and data types. - -### Observability `dataViews` - -Once we have index pattern string for each data type, a respective `dataView` is created. If there is an existing dataView for an index pattern, we will fetch and reuse it. - -After the dataView is created we also set field formats to promote human-readability. For example, we set format for monitor duration field, which is monitor.duration.us, from microseconds to seconds for browser monitors. - -### Visualization Configuration - -Each data type may have one or more visualization configurations. The data type to visualization configuration can be found in [`exploratory_view/obs_exploratory_view`](https://github.com/elastic/kibana/blob/main/x-pack/plugins/observability/public/components/shared/exploratory_view/obsv_exploratory_view.tsx#L86) - -Each visualization configuration is mapped to a single report type. - -Visualization configurations are used to define the UI we display for each report type and data type combination in the series builder. -Visualization configuration define UI options and display, including available `metrics`, available `filters`, available `breakdown` options, definitions for human-readable `labels`, and more. -The configuration also defines any custom base filters, which usually get pushed to a query, but are not displayed on the UI. You can also set more custom options on the configuration like colors which get used while rendering the chart. - -Visualization configuration can be found at [`exploratory_view/configurations`](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations), where each data type typically has a folder that holds one or more visualization configurations. - -The configuration defined ultimately influences the lens embeddable attributes which get pushed to lens embeddable, rendering the chart. - -Some options in configuration are: - -#### Definition fields -They are also filters, but usually main filters, around which usually app UI is based. -For apm, it could be service name and for uptime, monitor name. - -#### Filters -You can define base filters in kql form or data plugin filter format, filters are strongly typed. - -#### Breakdown fields -List of fields from an index pattern, UI will use this to populate breakdown option select. - -#### Labels -You can set key/value map for your field labels. UI will use these to set labels for data view fields. - -Sample config -``` -{ - reportType: ReportTypes.KPI, - defaultSeriesType: 'bar_stacked', - xAxisColumn: { - sourceField: '@timestamp', - }, - yAxisColumns: [ - { - sourceField: REPORT_METRIC_FIELD, - operationType: 'median', - }, - ], - hasOperationType: false, - filterFields: ['observer.geo.name', 'monitor.type', 'tags'], // these fields get's resolved from relevant dataView - breakdownFields: [ - 'observer.geo.name', - 'monitor.type', - 'monitor.name', - PERCENTILE, - ], // these fields get's resolved from relevant dataView - baseFilters: [], - palette: { type: 'palette', name: 'status' }, - definitionFields: [ - { field: 'monitor.name', nested: SYNTHETICS_STEP_NAME, singleSelection: true }, - { field: 'url.full', filters: buildExistsFilter('summary.up', dataView) }, - ], - metricOptions: [ - { - label: MONITORS_DURATION_LABEL, - field: 'monitor.duration.us', - columnType: OPERATION_COLUMN, - } - ], - labels: { ...FieldLabels, [SUMMARY_UP]: UP_LABEL, [SUMMARY_DOWN]: DOWN_LABEL }, - } -``` - - - -## Lens Embeddable - -Lens embeddable is what actually renders the chart in exploratory view. - -Exploratory view generates the lens embeddable attributes as json and pass it to the component. - -Based on configuration, exploratory view generates layers and columns. - -Add a link to lens embeddable readme - -#### Example -A simple usage of lens embeddable example and playground options -[embedded_lens_example](../../../../../../examples/embedded_lens_example) - -## Exploratory view Embeddable - -The primary purpose of the exploratory view is to embed it in observability solutions like uptime to replace -existing static visualizations, - -For that purpose, all the configuration options we define in the exploratory view can be used as an embeddable -via a component that is exposed using observability plugin contract, -usage looks like this - -`const ExploratoryViewComponent = props.plugins.observability.ExploratoryViewEmbeddable; -` - -``` - <ExploratoryViewComponent - attributes={[ - { - name: 'Monitors response duration', - time: { - from: 'now-5d', - to: 'now', - }, - reportDefinitions: { - 'monitor.id': ['test-id'], - }, - breakdown: 'monitor.type', - operationType: 'average', - dataType: 'synthetics', - seriesType: 'line', - selectedMetricField: 'monitor.duration.us', - }, - ]} - reportType="kpi-over-time" - title={'Monitor response duration'} - withActions={['save', 'explore']} - /> -``` - -there is an example in kibana example which you can view using -`yarn start --run-examples` and view the code at [Exploratory view embeddable](../../../../../../examples/exploratory_view_example) - -#### Example -A simple usage of lens embeddable example and playground options, run kibana with -`yarn start --run-example` to see this example in action -source code is defined at [embedded_lens_example](../../../../../../examples/embedded_lens_example) \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/exploratory_view/tsconfig.json b/x-pack/plugins/observability_solution/exploratory_view/tsconfig.json deleted file mode 100644 index 3aca08a23f4ef..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/tsconfig.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": ["common/**/*", "public/**/*", "public/**/*.json", "../../../../typings/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/data-plugin", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/usage-collection-plugin", - "@kbn/licensing-plugin", - "@kbn/cases-plugin", - "@kbn/lens-plugin", - "@kbn/spaces-plugin", - "@kbn/unified-search-plugin", - "@kbn/discover-plugin", - "@kbn/i18n", - "@kbn/data-views-plugin", - "@kbn/embeddable-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/security-plugin", - "@kbn/navigation-plugin", - "@kbn/i18n-react", - "@kbn/es-types", - "@kbn/rison", - "@kbn/datemath", - "@kbn/es-query", - "@kbn/field-formats-plugin", - "@kbn/coloring", - "@kbn/ui-actions-plugin", - "@kbn/visualizations-plugin", - "@kbn/core-http-browser", - "@kbn/share-plugin", - "@kbn/charts-plugin", - "@kbn/shared-ux-router", - "@kbn/observability-shared-plugin", - "@kbn/core-ui-settings-browser-mocks", - "@kbn/observability-ai-assistant-plugin", - "@kbn/shared-ux-link-redirect-app", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-mount", - "@kbn/core-analytics-browser", - "@kbn/expressions-plugin", - "@kbn/ebt-tools" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/infra/public/alerting/log_threshold/components/alert_details_app_section/components/alert_annotation.tsx b/x-pack/plugins/observability_solution/infra/public/alerting/log_threshold/components/alert_details_app_section/components/alert_annotation.tsx index 73f458c3aa6fb..3c83d0673b9b5 100644 --- a/x-pack/plugins/observability_solution/infra/public/alerting/log_threshold/components/alert_details_app_section/components/alert_annotation.tsx +++ b/x-pack/plugins/observability_solution/infra/public/alerting/log_threshold/components/alert_details_app_section/components/alert_annotation.tsx @@ -14,8 +14,8 @@ import { UI_SETTINGS } from '@kbn/data-plugin/public'; import { useKibanaContextForPlugin } from '../../../../../hooks/use_kibana'; export function AlertAnnotation({ alertStarted }: { alertStarted: number }) { - const { uiSettings } = useKibanaContextForPlugin().services; const { euiTheme } = useEuiTheme(); + const { uiSettings } = useKibanaContextForPlugin().services; return ( <LineAnnotation @@ -33,7 +33,7 @@ export function AlertAnnotation({ alertStarted }: { alertStarted: number }) { style={{ line: { strokeWidth: 3, - stroke: euiTheme.colors.textDanger, + stroke: euiTheme.colors.borderStrongDanger, opacity: 1, }, }} diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_date_picker.ts b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_date_picker.ts index e6b69c1ddca8f..4cb20bfc4f3d5 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_date_picker.ts +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_date_picker.ts @@ -52,8 +52,9 @@ export function useDatePicker({ (newDateRange: TimeRange) => { setUrlState({ dateRange: newDateRange }); setParsedDateRange(parseDateRange(newDateRange)); + updateSearchSessionId(); }, - [setUrlState] + [setUrlState, updateSearchSessionId] ); const onRefresh = useCallback( @@ -62,12 +63,10 @@ export function useDatePicker({ if (autoRefreshEnabled) { autoRefreshTick$.next(null); } else { - updateSearchSessionId(); + setDateRange(newDateRange); } - - setDateRange(newDateRange); }, - [autoRefreshEnabled, autoRefreshTick$, setDateRange, updateSearchSessionId] + [autoRefreshEnabled, autoRefreshTick$, setDateRange] ); const setAutoRefresh = useCallback( diff --git a/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx b/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx index 8b841c30f1533..43382cf37203b 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx @@ -111,8 +111,8 @@ const SAVED_SEARCH_DOCS_URL = 'https://www.elastic.co/guide/en/kibana/current/save-open-search.html'; const DeprecationCallout = () => { - const [isDismissed, setDismissed] = useLocalStorage(DISMISSAL_STORAGE_KEY, false); const { euiTheme } = useEuiTheme(); + const [isDismissed, setDismissed] = useLocalStorage(DISMISSAL_STORAGE_KEY, false); if (isDismissed) { return null; diff --git a/x-pack/plugins/observability_solution/infra/public/components/logs_deprecation_callout.tsx b/x-pack/plugins/observability_solution/infra/public/components/logs_deprecation_callout.tsx index 756c42214d7c0..a9b14688888c3 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/logs_deprecation_callout.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/logs_deprecation_callout.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { EuiButton } from '@elastic/eui'; import { getRouterLinkProps } from '@kbn/router-utils'; import useLocalStorage from 'react-use/lib/useLocalStorage'; -import { css } from '@emotion/css'; +import { css } from '@emotion/react'; import { LocatorPublic } from '@kbn/share-plugin/common'; import { DISCOVER_APP_LOCATOR, DiscoverAppLocatorParams } from '@kbn/discover-plugin/common'; import { useKibanaContextForPlugin } from '../hooks/use_kibana'; @@ -38,6 +38,7 @@ interface LogsDeprecationCalloutProps { } export const LogsDeprecationCallout = ({ page }: LogsDeprecationCalloutProps) => { + const { euiTheme } = useEuiTheme(); const { services: { share, @@ -47,8 +48,6 @@ export const LogsDeprecationCallout = ({ page }: LogsDeprecationCalloutProps) => }, } = useKibanaContextForPlugin(); - const { euiTheme } = useEuiTheme(); - const { dismissalStorageKey, message } = pageConfigurations[page]; const [isDismissed, setDismissed] = useLocalStorage(dismissalStorageKey, false); @@ -68,7 +67,7 @@ export const LogsDeprecationCallout = ({ page }: LogsDeprecationCalloutProps) => iconType="iInCircle" heading="h2" onDismiss={() => setDismissed(true)} - className={css` + css={css` margin-bottom: ${euiTheme.size.l}; `} > diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx index dece3437e3e1d..95f951fd82ff3 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx @@ -277,6 +277,7 @@ export const useHostsTable = () => { <EuiToolTip position="top" content={TABLE_CONTENT_LABEL.activeAlerts}> <EuiBadge iconType="warning" + data-test-subj="hostInventoryAlertsBadgeLink" color="danger" onClick={() => { setProperties({ detailsItemId: row.id === detailsItemId ? null : row.id }); diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts index 6feefd399a829..291f95554e89c 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts @@ -53,7 +53,11 @@ export const useUnifiedSearch = () => { const { data: { - query: { filterManager: filterManagerService, queryString: queryStringService }, + query: { + filterManager: filterManagerService, + queryString: queryStringService, + timefilter: timeFilterService, + }, }, telemetry, } = services; @@ -68,29 +72,33 @@ export const useUnifiedSearch = () => { const onFiltersChange = useCallback( (filters: Filter[]) => { setSearch({ type: 'SET_FILTERS', filters }); + updateSearchSessionId(); }, - [setSearch] + [setSearch, updateSearchSessionId] ); const onPanelFiltersChange = useCallback( (panelFilters: Filter[]) => { setSearch({ type: 'SET_PANEL_FILTERS', panelFilters }); + updateSearchSessionId(); }, - [setSearch] + [setSearch, updateSearchSessionId] ); const onLimitChange = useCallback( (limit: number) => { setSearch({ type: 'SET_LIMIT', limit }); + updateSearchSessionId(); }, - [setSearch] + [setSearch, updateSearchSessionId] ); const onDateRangeChange = useCallback( (dateRange: StringDateRange) => { setSearch({ type: 'SET_DATE_RANGE', dateRange }); + updateSearchSessionId(); }, - [setSearch] + [setSearch, updateSearchSessionId] ); const onQueryChange = useCallback( @@ -99,19 +107,19 @@ export const useUnifiedSearch = () => { setError(null); validateQuery(query); setSearch({ type: 'SET_QUERY', query }); + updateSearchSessionId(); } catch (err) { setError(err); } }, - [validateQuery, setSearch] + [validateQuery, setSearch, updateSearchSessionId] ); const onSubmit = useCallback( ({ dateRange }: { dateRange: TimeRange }) => { onDateRangeChange(dateRange); - updateSearchSessionId(); }, - [onDateRangeChange, updateSearchSessionId] + [onDateRangeChange] ); const getDateRangeAsTimestamp = useCallback(() => { @@ -168,6 +176,16 @@ export const useUnifiedSearch = () => { .subscribe() ); + subscription.add( + timeFilterService.timefilter + .getTimeUpdate$() + .pipe( + map(() => timeFilterService.timefilter.getTime()), + tap((dateRange) => onDateRangeChange(dateRange)) + ) + .subscribe() + ); + subscription.add( queryStringService .getUpdates$() @@ -181,7 +199,14 @@ export const useUnifiedSearch = () => { return () => { subscription.unsubscribe(); }; - }, [filterManagerService, queryStringService, onQueryChange, onFiltersChange]); + }, [ + filterManagerService, + queryStringService, + onQueryChange, + onFiltersChange, + timeFilterService.timefilter, + onDateRangeChange, + ]); // Track telemetry event on query/filter/date changes useEffect(() => { diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_square.tsx b/x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_square.tsx index 977bf6b8b16cd..219200f85ded3 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_square.tsx +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_square.tsx @@ -66,6 +66,7 @@ const NodeContainerSmall = ({ children, ...props }: NodeProps & { color: string ); const ValueInner = ({ children, ...props }: NodeProps) => { const { euiTheme } = useEuiTheme(); + return ( <div css={css` diff --git a/x-pack/plugins/observability_solution/infra/public/plugin.ts b/x-pack/plugins/observability_solution/infra/public/plugin.ts index c8217794acf70..524ca1841be9b 100644 --- a/x-pack/plugins/observability_solution/infra/public/plugin.ts +++ b/x-pack/plugins/observability_solution/infra/public/plugin.ts @@ -19,7 +19,6 @@ import { i18n } from '@kbn/i18n'; import { METRICS_EXPLORER_LOCATOR_ID, MetricsExplorerLocatorParams, - ObservabilityTriggerId, } from '@kbn/observability-shared-plugin/common'; import { BehaviorSubject, @@ -101,10 +100,6 @@ export class Plugin implements InfraClientPluginClass { registerFeatures(pluginsSetup.home); } - pluginsSetup.uiActions.registerTrigger({ - id: ObservabilityTriggerId.LogEntryContextMenu, - }); - const assetDetailsLocator = pluginsSetup.share.url.locators.get<AssetDetailsLocatorParams>(ASSET_DETAILS_LOCATOR_ID); const inventoryLocator = diff --git a/x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts b/x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts index f245214cfa37a..ad6a6bbcbcc27 100644 --- a/x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts +++ b/x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts @@ -52,9 +52,8 @@ export class KibanaFramework { config: InfraRouteConfig<Params, Query, Body, Method>, handler: RequestHandler<Params, Query, Body, InfraPluginRequestHandlerContext> ) { - const defaultOptions = { - tags: ['access:infra'], - }; + const defaultSecurity = { authz: { requiredPrivileges: ['infra'] } }; + const routeConfig = { path: config.path, validate: config.validate, @@ -65,7 +64,8 @@ export class KibanaFramework { * using `as ...` below to ensure the route config has * the correct options type. */ - options: { ...config.options, ...defaultOptions }, + options: { ...config.options }, + security: defaultSecurity, }; switch (config.method) { case 'get': @@ -89,15 +89,12 @@ export class KibanaFramework { public registerVersionedRoute<Method extends RouteMethod = any>( config: InfraVersionedRouteConfig<Method> ) { - const defaultOptions = { - tags: ['access:infra'], - }; + const defaultSecurity = { authz: { requiredPrivileges: ['infra'] } }; + const routeConfig = { access: config.access, path: config.path, - // Currently we have no use of custom options beyond tags, this can be extended - // beyond defaultOptions if it's needed. - options: defaultOptions, + security: defaultSecurity, }; switch (config.method) { case 'get': diff --git a/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/alert_count.cy.ts b/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/alert_count.cy.ts new file mode 100644 index 0000000000000..ac5fa17ecb08a --- /dev/null +++ b/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/alert_count.cy.ts @@ -0,0 +1,199 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { apmSynthtrace, entitiesSynthtrace, infraSynthtrace } from '../../../synthtrace'; +import { + CONTAINER_ID, + HOST_NAME, + SERVICE_NAME, + generateEntityAlerts, + cleanEntityAlerts, + generateEntities, + generateHosts, + generateTraces, +} from './generate_data'; + +const start = new Date(Date.now() - 5 * 60000).toISOString(); +const end = new Date().toISOString(); + +const getNumber = (text: string) => text.replace(/\D/g, ''); + +const verifyNumber = (element: Cypress.Chainable<JQuery<Element>>, alertsCount: string) => { + element.invoke('text').then((testSubjElementCount) => { + expect(getNumber(testSubjElementCount)).to.equal(alertsCount); + }); +}; + +const verifyAlertsTableCount = (alertsCount: string) => { + verifyNumber(cy.getByTestSubj('activeAlertCount'), alertsCount); + verifyNumber(cy.getByTestSubj('toolbar-alerts-count'), alertsCount); +}; + +describe('Alert count', () => { + beforeEach(() => { + cy.loginAsSuperUser(); + + cy.intercept('GET', '/internal/entities/managed/enablement', { + fixture: 'eem_enabled.json', + }).as('getEEMStatus'); + + entitiesSynthtrace.index( + generateEntities({ from: new Date(start).getTime(), to: new Date(end).getTime() }) + ); + + generateEntityAlerts(start); + }); + + afterEach(() => { + entitiesSynthtrace.clean(); + cleanEntityAlerts(); + }); + + describe('When there is entities and signal data', () => { + describe('Service', () => { + before(() => { + apmSynthtrace.index( + generateTraces({ from: new Date(start).getTime(), to: new Date(end).getTime() }) + ); + }); + + after(() => { + apmSynthtrace.clean(); + }); + + beforeEach(() => { + cy.visitKibana('/app/inventory'); + cy.wait('@getEEMStatus'); + cy.contains('service').click(); + }); + + it('Should display the correct alert count in the entity detail views', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.contains(SERVICE_NAME).click(); + cy.url().should('include', `/app/apm/services/${SERVICE_NAME}/overview`); + + verifyNumber( + cy.getByTestSubj('alertsTab').get('.euiBadge'), + inventoryAlertsBadgeLinkCount + ); + cy.getByTestSubj('alertsTab').click(); + cy.url().should('include', `/app/apm/services/${SERVICE_NAME}/alerts`); + cy.getByTestSubj('alert-status-filter-active-button').click(); + verifyNumber(cy.getByTestSubj('toolbar-alerts-count'), inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the alerts app', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.getByTestSubj('inventoryAlertsBadgeLink').click(); + cy.url().should('include', `/app/observability/alerts`); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the services inventory', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.visitKibana(`/app/apm/services?rangeFrom=${start}&rangeTo=${end}`); + verifyNumber( + cy.getByTestSubj('serviceInventoryAlertsBadgeLink'), + inventoryAlertsBadgeLinkCount + ); + }); + }); + }); + + describe('Host', () => { + before(() => { + infraSynthtrace.index( + generateHosts({ + from: start, + to: end, + }) + ); + }); + + after(() => { + infraSynthtrace.clean(); + }); + + beforeEach(() => { + cy.visitKibana('/app/inventory'); + cy.wait('@getEEMStatus'); + cy.contains('host').click(); + }); + + it('Should display the correct alert count in the entity detail views', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.contains(HOST_NAME).click(); + cy.url().should('include', `/app/metrics/detail/host/${HOST_NAME}`); + cy.getByTestSubj('hostsView-alert-status-filter-active-button').click(); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the alerts app', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.getByTestSubj('inventoryAlertsBadgeLink').click(); + cy.url().should('include', `/app/observability/alerts`); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the hosts inventory', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.visitKibana('/app/metrics/hosts'); + + verifyNumber( + cy.getByTestSubj('hostInventoryAlertsBadgeLink'), + inventoryAlertsBadgeLinkCount + ); + }); + }); + }); + + describe('Container', () => { + beforeEach(() => { + cy.visitKibana('/app/inventory'); + cy.wait('@getEEMStatus'); + cy.contains('container').click(); + }); + + it('Should display the correct alert count in the entity detail views', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.contains(CONTAINER_ID).click(); + cy.url().should('include', `/app/metrics/detail/container/${CONTAINER_ID}`); + cy.getByTestSubj('hostsView-alert-status-filter-active-button').click(); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the alerts app', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.getByTestSubj('inventoryAlertsBadgeLink').click(); + cy.url().should('include', `/app/observability/alerts`); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/generate_data.ts b/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/generate_data.ts new file mode 100644 index 0000000000000..70a1ab1a97817 --- /dev/null +++ b/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/generate_data.ts @@ -0,0 +1,206 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { entities, apm, timerange, infra } from '@kbn/apm-synthtrace-client'; +import { generateLongIdWithSeed } from '@kbn/apm-synthtrace-client/src/lib/utils/generate_id'; + +const SERVICE_ENTITY_ID = generateLongIdWithSeed('service'); +const HOST_ENTITY_ID = generateLongIdWithSeed('host'); +const CONTAINER_ENTITY_ID = generateLongIdWithSeed('container'); + +export const SERVICE_NAME = 'service-entity'; +export const HOST_NAME = 'host-entity'; +export const CONTAINER_ID = 'container-entity'; + +const AGENT_NAME = 'agentName'; +const ENVIRONMENT = 'ENVIRONMENT_ALL'; + +export function generateEntities({ from, to }: { from: number; to: number }) { + const service = entities.serviceEntity({ + serviceName: SERVICE_NAME, + agentName: [AGENT_NAME], + dataStreamType: ['logs'], + entityId: SERVICE_ENTITY_ID, + }); + + const host = entities.hostEntity({ + hostName: HOST_NAME, + agentName: [AGENT_NAME], + dataStreamType: ['metrics'], + entityId: HOST_ENTITY_ID, + }); + + const container = entities.containerEntity({ + containerId: CONTAINER_ID, + agentName: [AGENT_NAME], + dataStreamType: ['metrics'], + entityId: CONTAINER_ENTITY_ID, + }); + + const range = timerange(from, to); + + return range + .interval('1m') + .rate(1) + .generator((timestamp) => { + return [ + service.timestamp(timestamp), + host.timestamp(timestamp), + container.timestamp(timestamp), + ]; + }); +} + +export function generateTraces({ from, to }: { from: number; to: number }) { + const synthNodeTraceLogs = apm + .service({ + name: SERVICE_NAME, + environment: ENVIRONMENT, + agentName: AGENT_NAME, + }) + .instance(HOST_NAME); + + const range = timerange(from, to); + return range + .interval('1m') + .rate(1) + .generator((timestamp) => { + return [ + synthNodeTraceLogs + .transaction({ transactionName: 't1' }) + .timestamp(timestamp) + .duration(1000) + .success(), + ]; + }); +} + +export function generateHosts({ from, to }: { from: string; to: string }) { + const range = timerange(from, to); + + const hosts: Array<{ hostName: string; cpuValue?: number }> = [ + { + hostName: HOST_NAME, + cpuValue: 0.5, + }, + ]; + + return range + .interval('30s') + .rate(1) + .generator((timestamp) => + hosts.flatMap(({ hostName, cpuValue }) => [ + infra.host(hostName).cpu({ cpuTotalValue: cpuValue }).timestamp(timestamp), + infra.host(hostName).memory().timestamp(timestamp), + infra.host(hostName).network().timestamp(timestamp), + infra.host(hostName).load().timestamp(timestamp), + infra.host(hostName).filesystem().timestamp(timestamp), + infra.host(hostName).diskio().timestamp(timestamp), + infra.host(hostName).core().timestamp(timestamp), + ]) + ); +} + +const alertIndexes = [ + '.alerts-observability.apm.alerts-default', + '.alerts-observability.uptime.alerts-default', + '.alerts-observability.metrics.alerts-default', + '.alerts-default.alerts-default', + '.alerts-observability.logs.alerts-default', + '.alerts-observability.slo.alerts-default', + '.alerts-observability.threshold.alerts-default', +]; + +const entityIdentityFields = [ + { + 'service.name': SERVICE_NAME, + }, + { + 'host.name': HOST_NAME, + }, + { + 'container.id': CONTAINER_ID, + }, +]; + +export const cleanEntityAlerts = () => { + entityIdentityFields.forEach((entityIdentityField) => { + alertIndexes.forEach((index) => { + cy.request({ + url: `/api/console/proxy?path=${index}%2F_delete_by_query&method=POST`, + method: 'POST', + body: { + query: { + match: { + ...entityIdentityField, + }, + }, + }, + headers: { 'kbn-xsrf': true }, + }); + }); + }); +}; + +export const generateEntityAlerts = (start: string) => { + entityIdentityFields.forEach((entityIdentityField) => { + alertIndexes.forEach((index) => { + cy.request({ + url: `/api/console/proxy?path=${index}%2F_doc&method=POST`, + method: 'POST', + body: alert({ entityIdentityField, start, index }), + headers: { 'kbn-xsrf': true }, + }); + }); + }); +}; + +const alert = ({ entityIdentityField, start, index }: any) => { + return { + 'processor.event': 'transaction', + 'kibana.alert.evaluation.value': 1, + 'kibana.alert.evaluation.threshold': 10, + 'kibana.alert.reason': 'Test alert reason', + 'service.environment': 'ENVIRONMENT', + ...entityIdentityField, + 'transaction.type': 'request', + 'kibana.alert.rule.category': 'Test rule category', + 'kibana.alert.rule.consumer': 'apm', + 'kibana.alert.rule.name': 'Test rule name', + 'kibana.alert.rule.parameters': { + environment: 'ENVIRONMENT', + threshold: 10, + windowSize: 5, + windowUnit: 'm', + }, + 'kibana.alert.rule.producer': 'apm', + 'kibana.alert.rule.revision': 0, + 'kibana.alert.rule.rule_type_id': 'apm.transaction_error_rate', + 'kibana.alert.rule.tags': ['apm'], + 'kibana.alert.rule.uuid': index, + 'kibana.space_ids': ['default'], + '@timestamp': start, + 'event.action': 'active', + 'event.kind': 'signal', + 'kibana.alert.rule.execution.timestamp': start, + 'kibana.alert.action_group': 'threshold_met', + 'kibana.alert.flapping': true, + 'kibana.alert.flapping_history': [], + 'kibana.alert.maintenance_window_ids': [], + 'kibana.alert.consecutive_matches': 1, + 'kibana.alert.status': 'active', + 'kibana.alert.uuid': index, + 'kibana.alert.workflow_status': 'open', + 'kibana.alert.duration.us': 3298850000, + 'kibana.alert.start': start, + 'kibana.alert.time_range': { + gte: start, + }, + tags: ['apm'], + 'kibana.alert.previous_action_group': 'threshold_met', + }; +}; diff --git a/x-pack/plugins/observability_solution/inventory/e2e/setup_cypress_node_events.ts b/x-pack/plugins/observability_solution/inventory/e2e/setup_cypress_node_events.ts index a47e6f5e7d578..465adcda19e3a 100644 --- a/x-pack/plugins/observability_solution/inventory/e2e/setup_cypress_node_events.ts +++ b/x-pack/plugins/observability_solution/inventory/e2e/setup_cypress_node_events.ts @@ -8,8 +8,9 @@ import { ApmSynthtraceEsClient, EntitiesSynthtraceEsClient, LogLevel, - LogsSynthtraceEsClient, createLogger, + InfraSynthtraceEsClient, + LogsSynthtraceEsClient, } from '@kbn/apm-synthtrace'; import { createEsClientForTesting } from '@kbn/test'; // eslint-disable-next-line @kbn/imports/no_unresolvable_imports @@ -46,6 +47,12 @@ export function setupNodeEvents(on: Cypress.PluginEvents, config: Cypress.Plugin refreshAfterIndex: true, }); + const infraSynthtraceEsClient = new InfraSynthtraceEsClient({ + client, + logger, + refreshAfterIndex: true, + }); + entitiesSynthtraceEsClient.pipeline( entitiesSynthtraceEsClient.getDefaultPipeline({ includeSerialization: false }) ); @@ -58,6 +65,10 @@ export function setupNodeEvents(on: Cypress.PluginEvents, config: Cypress.Plugin logsSynthtraceEsClient.getDefaultPipeline({ includeSerialization: false }) ); + infraSynthtraceEsClient.pipeline( + infraSynthtraceEsClient.getDefaultPipeline({ includeSerialization: false }) + ); + initPlugin(on, config); on('task', { @@ -94,6 +105,14 @@ export function setupNodeEvents(on: Cypress.PluginEvents, config: Cypress.Plugin await logsSynthtraceEsClient.clean(); return null; }, + async 'infraSynthtrace:index'(events: Array<Record<string, any>>) { + await infraSynthtraceEsClient.index(Readable.from(events)); + return null; + }, + async 'infraSynthtrace:clean'() { + await infraSynthtraceEsClient.clean(); + return null; + }, }); on('after:spec', (spec, results) => { diff --git a/x-pack/plugins/observability_solution/inventory/e2e/synthtrace.ts b/x-pack/plugins/observability_solution/inventory/e2e/synthtrace.ts index 5625bb577bd42..95f2e8fbb65c2 100644 --- a/x-pack/plugins/observability_solution/inventory/e2e/synthtrace.ts +++ b/x-pack/plugins/observability_solution/inventory/e2e/synthtrace.ts @@ -9,6 +9,7 @@ import type { SynthtraceGenerator, EntityFields, ApmFields, + InfraDocument, } from '@kbn/apm-synthtrace-client'; export const entitiesSynthtrace = { @@ -37,3 +38,13 @@ export const logsSynthtrace = { ), clean: () => cy.task('logsSynthtrace:clean'), }; + +export const infraSynthtrace = { + index: (events: SynthtraceGenerator<InfraDocument>) => { + return cy.task( + 'infraSynthtrace:index', + Array.from(events).flatMap((event) => event.serialize()) + ); + }, + clean: () => cy.task('infraSynthtrace:clean'), +}; diff --git a/x-pack/plugins/observability_solution/inventory/server/routes/entities/route.ts b/x-pack/plugins/observability_solution/inventory/server/routes/entities/route.ts index c4a0a21f50eb2..6e4c10bc01035 100644 --- a/x-pack/plugins/observability_solution/inventory/server/routes/entities/route.ts +++ b/x-pack/plugins/observability_solution/inventory/server/routes/entities/route.ts @@ -22,8 +22,10 @@ import { getLatestEntitiesAlerts } from './get_latest_entities_alerts'; export const getEntityTypesRoute = createInventoryServerRoute({ endpoint: 'GET /internal/inventory/entities/types', - options: { - tags: ['access:inventory'], + security: { + authz: { + requiredPrivileges: ['inventory'], + }, }, handler: async ({ context, logger }) => { const coreContext = await context.core; @@ -52,8 +54,10 @@ export const listLatestEntitiesRoute = createInventoryServerRoute({ }), ]), }), - options: { - tags: ['access:inventory'], + security: { + authz: { + requiredPrivileges: ['inventory'], + }, }, handler: async ({ params, @@ -119,8 +123,10 @@ export const groupEntitiesByRoute = createInventoryServerRoute({ }), }), ]), - options: { - tags: ['access:inventory'], + security: { + authz: { + requiredPrivileges: ['inventory'], + }, }, handler: async ({ params, context, logger }) => { const coreContext = await context.core; diff --git a/x-pack/plugins/observability_solution/inventory/server/routes/has_data/route.ts b/x-pack/plugins/observability_solution/inventory/server/routes/has_data/route.ts index f0e582b396177..4f4e4e81f6225 100644 --- a/x-pack/plugins/observability_solution/inventory/server/routes/has_data/route.ts +++ b/x-pack/plugins/observability_solution/inventory/server/routes/has_data/route.ts @@ -11,8 +11,10 @@ import { getHasData } from './get_has_data'; export const hasDataRoute = createInventoryServerRoute({ endpoint: 'GET /internal/inventory/has_data', - options: { - tags: ['access:inventory'], + security: { + authz: { + requiredPrivileges: ['inventory'], + }, }, handler: async ({ context, logger }) => { const coreContext = await context.core; diff --git a/x-pack/plugins/observability_solution/inventory/server/routes/types.ts b/x-pack/plugins/observability_solution/inventory/server/routes/types.ts index 646d34888ae91..5044f53bd201a 100644 --- a/x-pack/plugins/observability_solution/inventory/server/routes/types.ts +++ b/x-pack/plugins/observability_solution/inventory/server/routes/types.ts @@ -33,5 +33,4 @@ export interface InventoryRouteCreateOptions { timeout?: { idleSocket?: number; }; - tags: Array<'access:inventory'>; } diff --git a/x-pack/plugins/observability_solution/inventory/tsconfig.json b/x-pack/plugins/observability_solution/inventory/tsconfig.json index 561ca62eaf97e..54b6336ab3be2 100644 --- a/x-pack/plugins/observability_solution/inventory/tsconfig.json +++ b/x-pack/plugins/observability_solution/inventory/tsconfig.json @@ -51,6 +51,9 @@ "@kbn/rule-data-utils", "@kbn/spaces-plugin", "@kbn/cloud-plugin", + "@kbn/observability-utils-browser", + "@kbn/observability-utils-server", + "@kbn/observability-utils-common", "@kbn/storybook", "@kbn/dashboard-plugin", "@kbn/deeplinks-analytics", diff --git a/x-pack/plugins/observability_solution/investigate/jest.config.js b/x-pack/plugins/observability_solution/investigate/jest.config.js deleted file mode 100644 index bba3a2285005e..0000000000000 --- a/x-pack/plugins/observability_solution/investigate/jest.config.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate/public', - '<rootDir>/x-pack/plugins/observability_solution/investigate/common', - '<rootDir>/x-pack/plugins/observability_solution/investigate/server', - ], - setupFiles: [], - collectCoverage: true, - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate/{common,public,server}/**/*.{js,ts,tsx}', - ], - - coverageReporters: ['html'], -}; diff --git a/x-pack/plugins/observability_solution/investigate/tsconfig.json b/x-pack/plugins/observability_solution/investigate/tsconfig.json deleted file mode 100644 index e2e39f527c2e1..0000000000000 --- a/x-pack/plugins/observability_solution/investigate/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../typings/**/*", - "common/**/*", - "public/**/*", - "typings/**/*", - "public/**/*.json", - "server/**/*", ], - "kbn_references": [ - "@kbn/core", - "@kbn/logging", - "@kbn/config-schema", - "@kbn/es-query", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/investigate_app/jest.config.js b/x-pack/plugins/observability_solution/investigate_app/jest.config.js deleted file mode 100644 index b37e5c69d4635..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/jest.config.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate_app/public', - '<rootDir>/x-pack/plugins/observability_solution/investigate_app/server', - ], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate_app/.storybook/jest_setup.js', - ], - collectCoverage: true, - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate_app/{public,server}/**/*.{js,ts,tsx}', - ], - - coverageReporters: ['html'], -}; diff --git a/x-pack/plugins/observability_solution/investigate_app/kibana.jsonc b/x-pack/plugins/observability_solution/investigate_app/kibana.jsonc deleted file mode 100644 index e105cacf75d05..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/kibana.jsonc +++ /dev/null @@ -1,37 +0,0 @@ -{ - "type": "plugin", - "id": "@kbn/investigate-app-plugin", - "owner": "@elastic/obs-ux-management-team", - "group": "observability", - "visibility": "private", - "plugin": { - "id": "investigateApp", - "server": true, - "browser": true, - "configPath": ["xpack", "investigateApp"], - "requiredPlugins": [ - "investigate", - "observabilityShared", - "lens", - "charts", - "dataViews", - "data", - "embeddable", - "contentManagement", - "datasetQuality", - "unifiedSearch", - "security", - "observability", - "licensing", - "ruleRegistry", - "usageCollection" - ], - "requiredBundles": [ - "esql", - "kibanaReact", - "kibanaUtils" - ], - "optionalPlugins": ["observabilityAIAssistant"], - "extraPublicDirs": [] - } -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/api/index.ts b/x-pack/plugins/observability_solution/investigate_app/public/api/index.ts deleted file mode 100644 index af02f4a15e740..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/api/index.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { CoreSetup, CoreStart, HttpFetchOptions } from '@kbn/core/public'; -import type { - ClientRequestParamsOf, - ReturnOf, - RouteRepositoryClient, -} from '@kbn/server-route-repository'; -import { formatRequest } from '@kbn/server-route-repository-utils/src/format_request'; -import type { InvestigateAppServerRouteRepository } from '../../server'; - -type FetchOptions = Omit<HttpFetchOptions, 'body'> & { - body?: any; -}; - -export type InvestigateAppAPIClientOptions = Omit< - FetchOptions, - 'query' | 'body' | 'pathname' | 'signal' -> & { - signal: AbortSignal | null; -}; - -export type InvestigateAppAPIClient = RouteRepositoryClient< - InvestigateAppServerRouteRepository, - InvestigateAppAPIClientOptions ->['fetch']; - -export type AutoAbortedInvestigateAppAPIClient = RouteRepositoryClient< - InvestigateAppServerRouteRepository, - Omit<InvestigateAppAPIClientOptions, 'signal'> ->['fetch']; - -export type InvestigateAppAPIEndpoint = keyof InvestigateAppServerRouteRepository; - -export type APIReturnType<TEndpoint extends InvestigateAppAPIEndpoint> = ReturnOf< - InvestigateAppServerRouteRepository, - TEndpoint ->; - -export type InvestigateAppAPIClientRequestParamsOf<TEndpoint extends InvestigateAppAPIEndpoint> = - ClientRequestParamsOf<InvestigateAppServerRouteRepository, TEndpoint>; - -export function createCallInvestigateAppAPI(core: CoreStart | CoreSetup) { - return ((endpoint, options) => { - const { params } = options as unknown as { - params?: Partial<Record<string, any>>; - }; - - const { method, pathname, version } = formatRequest(endpoint, params?.path); - - return core.http[method](pathname, { - ...options, - body: params && params.body ? JSON.stringify(params.body) : undefined, - query: params?.query, - version, - }); - }) as InvestigateAppAPIClient; -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx deleted file mode 100644 index f63cbb9c01618..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import dedent from 'dedent'; -import { - ALERT_RULE_PARAMETERS, - ALERT_START, - ALERT_RULE_CATEGORY, - ALERT_REASON, -} from '@kbn/rule-data-utils'; -import { i18n } from '@kbn/i18n'; -import { EntityWithSource } from '@kbn/investigation-shared'; -import React, { useCallback } from 'react'; -import { useKibana } from '../../../../hooks/use_kibana'; -import { useInvestigation } from '../../contexts/investigation_context'; -import { useFetchEntities } from '../../../../hooks/use_fetch_entities'; - -export interface InvestigationContextualInsight { - key: string; - description: string; - data: unknown; -} - -export function AssistantHypothesis({ investigationId }: { investigationId: string }) { - const { alert } = useInvestigation(); - const { - dependencies: { - start: { - observabilityAIAssistant: { - ObservabilityAIAssistantContextualInsight, - getContextualInsightMessages, - }, - }, - }, - } = useKibana(); - const { data: entitiesData } = useFetchEntities({ - investigationId, - serviceName: alert?.['service.name'] ? `${alert?.['service.name']}` : undefined, - serviceEnvironment: alert?.['service.environment'] - ? `${alert?.['service.environment']}` - : undefined, - hostName: alert?.['host.name'] ? `${alert?.['host.name']}` : undefined, - containerId: alert?.['container.id'] ? `${alert?.['container.id']}` : undefined, - }); - - const getAlertContextMessages = useCallback(async () => { - if (!getContextualInsightMessages || !alert) { - return []; - } - - const entities = entitiesData?.entities ?? []; - - const entityContext = entities?.length - ? ` - Alerts can optionally be associated with entities. Entities can be services, hosts, containers, or other resources. Entities can have metrics associated with them. - - The alert that triggered this investigation is associated with the following entities: ${entities - .map((entity, index) => { - return dedent(` - ## Entity ${index + 1}: - ${formatEntityMetrics(entity)}; - `); - }) - .join('/n/n')}` - : ''; - - return getContextualInsightMessages({ - message: `I am investigating a failure in my system. I was made aware of the failure by an alert and I am trying to understand the root cause of the issue.`, - instructions: dedent( - `I'm an SRE. I am investigating a failure in my system. I was made aware of the failure via an alert. Your current task is to help me identify the root cause of the failure in my system. - - The rule that triggered the alert is a ${ - alert[ALERT_RULE_CATEGORY] - } rule. The alert started at ${alert[ALERT_START]}. The alert reason is ${ - alert[ALERT_REASON] - }. The rule parameters are ${JSON.stringify(ALERT_RULE_PARAMETERS)}. - - ${entityContext} - - Based on the alert details, suggest a root cause and next steps to mitigate the issue. - - I do not have the alert details or entity details in front of me, so be sure to repeat the alert reason (${ - alert[ALERT_REASON] - }), when the alert was triggered (${ - alert[ALERT_START] - }), and the entity metrics in your response. - - When displaying the entity metrics, please convert the metrics to a human-readable format. For example, convert "logRate" to "Log Rate" and "errorRate" to "Error Rate". - ` - ), - }); - }, [alert, getContextualInsightMessages, entitiesData?.entities]); - - if (!ObservabilityAIAssistantContextualInsight) { - return null; - } - - return alert && entitiesData ? ( - <ObservabilityAIAssistantContextualInsight - title={i18n.translate( - 'xpack.investigateApp.assistantHypothesis.observabilityAIAssistantContextualInsight.helpMeInvestigateThisLabel', - { defaultMessage: 'Help me investigate this failure' } - )} - messages={getAlertContextMessages} - /> - ) : null; -} -const formatEntityMetrics = (entity: EntityWithSource): string => { - const entityMetrics = Object.entries(entity.metrics) - .map(([key, value]) => `${key}: ${value}`) - .join(', '); - const entitySources = entity.sources.map((source) => source.dataStream).join(', '); - return dedent(` - Entity name: ${entity.display_name}; - Entity type: ${entity.type}; - Entity metrics: ${entityMetrics}; - Entity data streams: ${entitySources} - `); -}; diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/events_timeline.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/events_timeline.tsx deleted file mode 100644 index 45b245f68b4b0..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/events_timeline.tsx +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React, { useMemo, useRef } from 'react'; -import moment from 'moment'; - -import { Chart, Axis, AreaSeries, Position, ScaleType, Settings } from '@elastic/charts'; -import { useActiveCursor } from '@kbn/charts-plugin/public'; -import { EuiSkeletonText } from '@elastic/eui'; -import { getBrushData } from '@kbn/observability-utils-browser/chart/utils'; -import { AnnotationEvent } from './annotation_event'; -import { TIME_LINE_THEME } from './timeline_theme'; -import { useFetchEvents } from '../../../../hooks/use_fetch_events'; -import { useInvestigation } from '../../contexts/investigation_context'; -import { useKibana } from '../../../../hooks/use_kibana'; -import { AlertEvent } from './alert_event'; - -export const EventsTimeLine = () => { - const { dependencies } = useKibana(); - - const baseTheme = dependencies.start.charts.theme.useChartsBaseTheme(); - - const { globalParams, updateInvestigationParams } = useInvestigation(); - - const { data: events, isLoading } = useFetchEvents({ - rangeFrom: globalParams.timeRange.from, - rangeTo: globalParams.timeRange.to, - }); - - const chartRef = useRef(null); - const handleCursorUpdate = useActiveCursor(dependencies.start.charts.activeCursor, chartRef, { - isDateHistogram: true, - }); - - const data = useMemo(() => { - const points = [ - { x: moment(globalParams.timeRange.from).valueOf(), y: 0 }, - { x: moment(globalParams.timeRange.to).valueOf(), y: 0 }, - ]; - - // adding 100 fake points to the chart so the chart shows cursor on hover - for (let i = 0; i < 100; i++) { - const diff = - moment(globalParams.timeRange.to).valueOf() - moment(globalParams.timeRange.from).valueOf(); - points.push({ x: moment(globalParams.timeRange.from).valueOf() + (diff / 100) * i, y: 0 }); - } - return points; - }, [globalParams.timeRange.from, globalParams.timeRange.to]); - - if (isLoading) { - return <EuiSkeletonText />; - } - - const alertEvents = events?.filter((evt) => evt.eventType === 'alert'); - const annotations = events?.filter((evt) => evt.eventType === 'annotation'); - - return ( - <> - <Chart size={['100%', 100]} ref={chartRef}> - <Settings - xDomain={{ - min: moment(globalParams.timeRange.from).valueOf(), - max: moment(globalParams.timeRange.to).valueOf(), - }} - theme={TIME_LINE_THEME} - baseTheme={baseTheme} - onPointerUpdate={handleCursorUpdate} - externalPointerEvents={{ - tooltip: { visible: true }, - }} - onBrushEnd={(brush) => { - const { from, to } = getBrushData(brush); - updateInvestigationParams({ - timeRange: { from, to }, - }); - }} - /> - <Axis id="y" position={Position.Left} hide /> - <Axis - id="x" - position={Position.Bottom} - tickFormat={(d) => moment(d).format('LTS')} - style={{ - tickLine: { - visible: true, - strokeWidth: 1, - stroke: '#98A2B3', - }, - }} - /> - - {alertEvents?.map((event) => ( - <AlertEvent key={event.id} event={event} /> - ))} - - {annotations?.map((annotation) => ( - <AnnotationEvent key={annotation.id} event={annotation} /> - ))} - - <AreaSeries - id="Time" - xScaleType={ScaleType.Time} - xAccessor="x" - yAccessors={['y']} - data={data} - filterSeriesInTooltip={() => false} - /> - </Chart> - </> - ); -}; diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.tsx deleted file mode 100644 index c43ae1ffaa04f..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.tsx +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiText } from '@elastic/eui'; -import { css } from '@emotion/css'; -import React from 'react'; -import { useTheme } from '../../../../hooks/use_theme'; -import { InvestigateTextButton } from '../../../../components/investigate_text_button'; - -export const GRID_ITEM_HEADER_HEIGHT = 40; - -interface GridItemProps { - id: string; - title: string; - children: React.ReactNode; - onCopy: () => void; - onDelete: () => void; - loading: boolean; -} - -const editTitleButtonClassName = `investigateGridItemTitleEditButton`; - -const titleContainerClassName = css` - overflow: hidden; -`; -const titleItemClassName = css` - max-width: 100%; - .euiText { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -`; - -const panelContainerClassName = css` - overflow: clip; - overflow-clip-margin: 20px; -`; - -const panelClassName = css` - overflow-y: auto; -`; - -const panelContentClassName = css` - overflow-y: auto; - height: 100%; - > [data-shared-item] { - height: 100%; - } -`; - -export function GridItem({ id, title, children, onDelete, onCopy, loading }: GridItemProps) { - const theme = useTheme(); - - const headerClassName = css` - padding: 0 ${theme.size.s} 0 ${theme.size.s}}; -`; - - const containerClassName = css` - height: 100%; - max-width: 100%; - transition: opacity ${theme.animation.normal} ${theme.animation.resistance}; - overflow: auto; - - &:not(:hover) .${editTitleButtonClassName} { - opacity: 0; - } - `; - - return ( - <EuiPanel hasBorder hasShadow={false} className={panelClassName} paddingSize="none"> - <EuiFlexGroup - direction="column" - gutterSize="none" - className={containerClassName} - alignItems="stretch" - > - <EuiFlexItem grow={false}> - <EuiFlexGroup - direction="row" - gutterSize="none" - alignItems="center" - className={headerClassName} - > - <EuiFlexItem className={titleContainerClassName}> - <EuiText size="s" className={titleItemClassName}> - <h5>{title}</h5> - </EuiText> - </EuiFlexItem> - <EuiFlexItem grow={false} className="gridItemControls"> - <EuiFlexGroup - direction="row" - gutterSize="none" - alignItems="center" - justifyContent="flexEnd" - > - <EuiFlexItem grow={false}> - <InvestigateTextButton - iconType="copy" - onClick={() => { - onCopy(); - }} - disabled={loading} - /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <InvestigateTextButton - iconType="trash" - onClick={() => { - onDelete(); - }} - disabled={loading} - /> - </EuiFlexItem> - </EuiFlexGroup> - </EuiFlexItem> - </EuiFlexGroup> - </EuiFlexItem> - <EuiFlexItem grow className={panelContainerClassName}> - <div className={panelContentClassName}>{children}</div> - </EuiFlexItem> - </EuiFlexGroup> - </EuiPanel> - ); -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx deleted file mode 100644 index bd03324a994ac..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import datemath from '@elastic/datemath'; -import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; -import React from 'react'; -import { EventsTimeLine } from '../events_timeline/events_timeline'; -import { useInvestigation } from '../../contexts/investigation_context'; -import { AddInvestigationItem } from '../add_investigation_item/add_investigation_item'; -import { InvestigationItemsList } from '../investigation_items_list/investigation_items_list'; -import { InvestigationSearchBar } from '../investigation_search_bar/investigation_search_bar'; -import { AssistantHypothesis } from '../assistant_hypothesis/assistant_hypothesis'; - -export function InvestigationItems() { - const { globalParams, updateInvestigationParams, investigation } = useInvestigation(); - - return ( - <> - <EuiFlexGroup direction="column" gutterSize="s"> - <InvestigationSearchBar - dateRangeFrom={globalParams.timeRange.from} - dateRangeTo={globalParams.timeRange.to} - onQuerySubmit={async ({ dateRange }) => { - const nextTimeRange = { - from: datemath.parse(dateRange.from)!.toISOString(), - to: datemath.parse(dateRange.to)!.toISOString(), - }; - - updateInvestigationParams({ timeRange: nextTimeRange }); - }} - /> - - <EuiFlexItem grow={false}> - <EventsTimeLine /> - </EuiFlexItem> - - {investigation?.id && ( - <EuiFlexItem grow={false}> - <AssistantHypothesis investigationId={investigation.id} /> - </EuiFlexItem> - )} - <EuiFlexItem grow={false}> - <InvestigationItemsList /> - </EuiFlexItem> - </EuiFlexGroup> - - <EuiSpacer size="m" /> - - <AddInvestigationItem /> - </> - ); -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/note.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/note.tsx deleted file mode 100644 index 8bd0f14c9d892..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/note.tsx +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { - EuiButtonEmpty, - EuiFlexGroup, - EuiFlexItem, - EuiLoadingSpinner, - EuiMarkdownFormat, - EuiText, -} from '@elastic/eui'; -import { css } from '@emotion/css'; -import { InvestigationNoteResponse } from '@kbn/investigation-shared'; -import { UserProfile } from '@kbn/security-plugin/common'; -// eslint-disable-next-line import/no-extraneous-dependencies -import { formatDistance } from 'date-fns'; -import React, { useState } from 'react'; -import { useTheme } from '../../../../hooks/use_theme'; -import { useInvestigation } from '../../contexts/investigation_context'; -import { EditNoteForm } from './edit_note_form'; - -const textContainerClassName = css` - padding-top: 2px; -`; - -interface Props { - note: InvestigationNoteResponse; - isOwner: boolean; - userProfile?: UserProfile; - userProfileLoading: boolean; -} - -export function Note({ note, isOwner, userProfile, userProfileLoading }: Props) { - const theme = useTheme(); - const [isEditing, setIsEditing] = useState(false); - const { deleteNote, isDeletingNote } = useInvestigation(); - - const timelineContainerClassName = css` - padding-bottom: 16px; - border-bottom: 1px solid ${theme.colors.lightShade}; - :last-child { - border-bottom: 0px; - } - `; - - const actionButtonClassname = css` - color: ${theme.colors.mediumShade}; - :hover { - color: ${theme.colors.darkShade}; - } - `; - - const timestampClassName = css` - color: ${theme.colors.darkShade}; - `; - - return ( - <EuiFlexGroup direction="column" gutterSize="s" className={timelineContainerClassName}> - <EuiFlexGroup direction="row" justifyContent="spaceBetween"> - <EuiFlexGroup direction="column" gutterSize="xs"> - <EuiFlexItem grow={false}> - {userProfileLoading ? ( - <EuiLoadingSpinner size="s" /> - ) : ( - <EuiText size="s"> - {userProfile?.user.full_name ?? userProfile?.user.username ?? note?.createdBy} - </EuiText> - )} - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiText size="xs" className={timestampClassName}> - {formatDistance(new Date(note.createdAt), new Date(), { addSuffix: true })} - </EuiText> - </EuiFlexItem> - </EuiFlexGroup> - - {isOwner && ( - <EuiFlexGroup direction="row" justifyContent="flexEnd" gutterSize="none"> - <EuiFlexItem grow={false}> - <EuiButtonEmpty - data-test-subj="editInvestigationNoteButton" - size="s" - iconSize="s" - iconType="pencil" - disabled={isDeletingNote} - onClick={() => { - setIsEditing(!isEditing); - }} - className={actionButtonClassname} - /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiButtonEmpty - size="s" - iconSize="s" - iconType="trash" - disabled={isDeletingNote} - onClick={async () => await deleteNote(note.id)} - data-test-subj="deleteInvestigationNoteButton" - className={actionButtonClassname} - /> - </EuiFlexItem> - </EuiFlexGroup> - )} - </EuiFlexGroup> - <EuiFlexItem className={textContainerClassName}> - {isEditing ? ( - <EditNoteForm note={note} onClose={() => setIsEditing(false)} /> - ) : ( - <EuiText size="s"> - <EuiMarkdownFormat textSize="s">{note.content}</EuiMarkdownFormat> - </EuiText> - )} - </EuiFlexItem> - </EuiFlexGroup> - ); -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_search_bar/investigation_search_bar.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_search_bar/investigation_search_bar.tsx deleted file mode 100644 index a6ad73bc67d0d..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_search_bar/investigation_search_bar.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { css } from '@emotion/css'; -import type { TimeRange } from '@kbn/es-query'; -import { SearchBar } from '@kbn/unified-search-plugin/public'; -import React from 'react'; -import { useKibana } from '../../../../hooks/use_kibana'; - -const parentClassName = css` - width: 100%; -`; - -interface Props { - dateRangeFrom?: string; - dateRangeTo?: string; - onQuerySubmit: (payload: { dateRange: TimeRange }, isUpdate?: boolean) => void; - onRefresh?: Required<React.ComponentProps<typeof SearchBar>>['onRefresh']; -} - -export function InvestigationSearchBar({ - dateRangeFrom, - dateRangeTo, - onQuerySubmit, - onRefresh, -}: Props) { - const { - dependencies: { - start: { unifiedSearch }, - }, - } = useKibana(); - - return ( - <div className={parentClassName}> - <unifiedSearch.ui.SearchBar - appName="investigate" - onQuerySubmit={({ dateRange }) => { - onQuerySubmit({ dateRange }); - }} - showQueryInput={false} - showFilterBar={false} - showQueryMenu={false} - showDatePicker - showSubmitButton={true} - dateRangeFrom={dateRangeFrom} - dateRangeTo={dateRangeTo} - onRefresh={onRefresh} - displayStyle="inPage" - disableQueryLanguageSwitcher - /> - </div> - ); -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/plugin.tsx b/x-pack/plugins/observability_solution/investigate_app/public/plugin.tsx deleted file mode 100644 index 5ec88f9d72468..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/plugin.tsx +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { - AppMountParameters, - AppStatus, - CoreSetup, - CoreStart, - DEFAULT_APP_CATEGORIES, - Plugin, - PluginInitializerContext, -} from '@kbn/core/public'; -import { INVESTIGATE_APP_ID } from '@kbn/deeplinks-observability/constants'; -import { i18n } from '@kbn/i18n'; -import type { Logger } from '@kbn/logging'; -import { once } from 'lodash'; -import React from 'react'; -import ReactDOM from 'react-dom'; -import type { InvestigateAppServices } from './services/types'; -import type { - ConfigSchema, - InvestigateAppPublicSetup, - InvestigateAppPublicStart, - InvestigateAppSetupDependencies, - InvestigateAppStartDependencies, -} from './types'; - -const getCreateEsqlService = once(() => import('./services/esql').then((m) => m.createEsqlService)); - -export class InvestigateAppPlugin - implements - Plugin< - InvestigateAppPublicSetup, - InvestigateAppPublicStart, - InvestigateAppSetupDependencies, - InvestigateAppStartDependencies - > -{ - logger: Logger; - config: ConfigSchema; - - constructor(context: PluginInitializerContext<ConfigSchema>) { - this.logger = context.logger.get(); - this.config = context.config.get(); - } - - setup( - coreSetup: CoreSetup<InvestigateAppStartDependencies, InvestigateAppPublicStart>, - pluginsSetup: InvestigateAppSetupDependencies - ): InvestigateAppPublicSetup { - coreSetup.application.register({ - id: INVESTIGATE_APP_ID, - title: i18n.translate('xpack.investigateApp.appTitle', { - defaultMessage: 'Investigations', - }), - euiIconType: 'logoObservability', - appRoute: '/app/investigations', - category: DEFAULT_APP_CATEGORIES.observability, - status: this.config.enabled ? AppStatus.accessible : AppStatus.inaccessible, - visibleIn: [], - deepLinks: [ - { - id: 'investigations', - title: i18n.translate('xpack.investigateApp.investigationsDeepLinkTitle', { - defaultMessage: 'All investigations', - }), - path: '/', - }, - { - id: 'investigationDetails', - title: i18n.translate('xpack.investigateApp.newInvestigateDeepLinkTitle', { - defaultMessage: 'New investigation', - }), - path: '/new', - }, - ], - mount: async (appMountParameters: AppMountParameters<unknown>) => { - // Load application bundle and Get start services - const [{ Application }, [coreStart, pluginsStart], createEsqlService] = await Promise.all([ - import('./application'), - coreSetup.getStartServices(), - getCreateEsqlService(), - ]); - - const services: InvestigateAppServices = { - ...coreStart, - esql: createEsqlService({ - data: pluginsStart.data, - dataViews: pluginsStart.dataViews, - lens: pluginsStart.lens, - }), - charts: pluginsStart.charts, - }; - - ReactDOM.render( - <Application - coreStart={coreStart} - history={appMountParameters.history} - pluginsStart={pluginsStart} - theme$={appMountParameters.theme$} - services={services} - />, - appMountParameters.element - ); - - return () => { - ReactDOM.unmountComponentAtNode(appMountParameters.element); - }; - }, - }); - - const pluginsStartPromise = coreSetup - .getStartServices() - .then(([, pluginsStart]) => pluginsStart); - - Promise.all([ - pluginsStartPromise, - import('./items/register_items').then((m) => m.registerItems), - getCreateEsqlService(), - ]).then(([pluginsStart, registerItems, createEsqlService]) => { - registerItems({ - dependencies: { - setup: pluginsSetup, - start: pluginsStart, - }, - services: { - esql: createEsqlService({ - data: pluginsStart.data, - dataViews: pluginsStart.dataViews, - lens: pluginsStart.lens, - }), - charts: pluginsStart.charts, - }, - }); - }); - - return {}; - } - - start( - coreStart: CoreStart, - pluginsStart: InvestigateAppStartDependencies - ): InvestigateAppPublicStart { - return {}; - } -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/services/types.ts b/x-pack/plugins/observability_solution/investigate_app/public/services/types.ts deleted file mode 100644 index 257ed5a7aeaca..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/services/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ChartsPluginStart } from '@kbn/charts-plugin/public'; -import type { EsqlService } from './esql'; - -export interface InvestigateAppServices { - esql: EsqlService; - charts: ChartsPluginStart; -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/types.ts b/x-pack/plugins/observability_solution/investigate_app/public/types.ts deleted file mode 100644 index a2d7b5227a201..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/types.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { - ObservabilityAIAssistantPublicSetup, - ObservabilityAIAssistantPublicStart, -} from '@kbn/observability-ai-assistant-plugin/public'; -import { ChartsPluginStart } from '@kbn/charts-plugin/public'; -import type { ContentManagementPublicStart } from '@kbn/content-management-plugin/public'; -import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; -import type { - DataViewsPublicPluginSetup, - DataViewsPublicPluginStart, -} from '@kbn/data-views-plugin/public'; -import type { - DatasetQualityPluginSetup, - DatasetQualityPluginStart, -} from '@kbn/dataset-quality-plugin/public'; -import type { EmbeddableSetup, EmbeddableStart } from '@kbn/embeddable-plugin/public'; -import type { - InvestigatePublicSetup, - InvestigatePublicStart, -} from '@kbn/investigate-plugin/public'; -import type { LensPublicSetup, LensPublicStart } from '@kbn/lens-plugin/public'; -import type { - ObservabilitySharedPluginSetup, - ObservabilitySharedPluginStart, -} from '@kbn/observability-shared-plugin/public'; -import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/public'; -import type { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; - -/* eslint-disable @typescript-eslint/no-empty-interface*/ - -export interface ConfigSchema { - enabled: boolean; -} - -export interface InvestigateAppSetupDependencies { - investigate: InvestigatePublicSetup; - observabilityShared: ObservabilitySharedPluginSetup; - observabilityAIAssistant: ObservabilityAIAssistantPublicSetup; - lens: LensPublicSetup; - dataViews: DataViewsPublicPluginSetup; - data: DataPublicPluginSetup; - embeddable: EmbeddableSetup; - contentManagement: {}; - datasetQuality: DatasetQualityPluginSetup; - unifiedSearch: {}; - uiActions: UiActionsSetup; - security: SecurityPluginSetup; -} - -export interface InvestigateAppStartDependencies { - investigate: InvestigatePublicStart; - observabilityShared: ObservabilitySharedPluginStart; - observabilityAIAssistant: ObservabilityAIAssistantPublicStart; - lens: LensPublicStart; - dataViews: DataViewsPublicPluginStart; - data: DataPublicPluginStart; - embeddable: EmbeddableStart; - contentManagement: ContentManagementPublicStart; - datasetQuality: DatasetQualityPluginStart; - unifiedSearch: UnifiedSearchPublicPluginStart; - uiActions: UiActionsStart; - security: SecurityPluginStart; - charts: ChartsPluginStart; -} - -export interface InvestigateAppPublicSetup {} - -export interface InvestigateAppPublicStart {} diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_events.ts b/x-pack/plugins/observability_solution/investigate_app/server/services/get_events.ts deleted file mode 100644 index 53f42f4c6c057..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/server/services/get_events.ts +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import datemath from '@elastic/datemath'; -import { - GetEventsParams, - GetEventsResponse, - getEventsResponseSchema, -} from '@kbn/investigation-shared'; -import { ScopedAnnotationsClient } from '@kbn/observability-plugin/server'; -import { - ALERT_REASON, - ALERT_RULE_CATEGORY, - ALERT_START, - ALERT_STATUS, - ALERT_UUID, -} from '@kbn/rule-data-utils'; -import { AlertsClient } from './get_alerts_client'; -import { rangeQuery } from '../lib/queries'; - -export async function getAnnotationEvents( - params: GetEventsParams, - annotationsClient: ScopedAnnotationsClient -): Promise<GetEventsResponse> { - const response = await annotationsClient.find({ - start: params?.rangeFrom, - end: params?.rangeTo, - filter: params?.filter, - size: 100, - }); - - // we will return only "point_in_time" annotations - const events = response.items - .filter((item) => !item.event?.end) - .map((item) => { - const hostName = item.host?.name; - const serviceName = item.service?.name; - const serviceVersion = item.service?.version; - const sloId = item.slo?.id; - const sloInstanceId = item.slo?.instanceId; - - return { - id: item.id, - title: item.annotation.title, - description: item.message, - timestamp: new Date(item['@timestamp']).getTime(), - eventType: 'annotation', - annotationType: item.annotation.type, - source: { - ...(hostName ? { 'host.name': hostName } : undefined), - ...(serviceName ? { 'service.name': serviceName } : undefined), - ...(serviceVersion ? { 'service.version': serviceVersion } : undefined), - ...(sloId ? { 'slo.id': sloId } : undefined), - ...(sloInstanceId ? { 'slo.instanceId': sloInstanceId } : undefined), - }, - }; - }); - - return getEventsResponseSchema.parse(events); -} - -export async function getAlertEvents( - params: GetEventsParams, - alertsClient: AlertsClient -): Promise<GetEventsResponse> { - const startInMs = datemath.parse(params?.rangeFrom ?? 'now-15m')!.valueOf(); - const endInMs = datemath.parse(params?.rangeTo ?? 'now')!.valueOf(); - const filterJSON = params?.filter ? JSON.parse(params.filter) : {}; - - const body = { - size: 100, - track_total_hits: false, - query: { - bool: { - filter: [ - ...rangeQuery(startInMs, endInMs, ALERT_START), - ...Object.keys(filterJSON).map((filterKey) => ({ - term: { [filterKey]: filterJSON[filterKey] }, - })), - ], - }, - }, - }; - - const response = await alertsClient.search(body); - - const events = response.hits.hits.map((hit) => { - const _source = hit._source; - - return { - id: _source[ALERT_UUID], - title: `${_source[ALERT_RULE_CATEGORY]} breached`, - description: _source[ALERT_REASON], - timestamp: new Date(_source[ALERT_START] as string).getTime(), - eventType: 'alert', - alertStatus: _source[ALERT_STATUS], - }; - }); - - return getEventsResponseSchema.parse(events); -} diff --git a/x-pack/plugins/observability_solution/investigate_app/server/types.ts b/x-pack/plugins/observability_solution/investigate_app/server/types.ts deleted file mode 100644 index 8803221000d5b..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/server/types.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; -import { - RuleRegistryPluginSetupContract, - RuleRegistryPluginStartContract, -} from '@kbn/rule-registry-plugin/server'; -import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; - -/* eslint-disable @typescript-eslint/no-empty-interface*/ - -export interface ConfigSchema {} - -export interface InvestigateAppSetupDependencies { - observability: ObservabilityPluginSetup; - ruleRegistry: RuleRegistryPluginSetupContract; - usageCollection: UsageCollectionSetup; -} - -export interface InvestigateAppStartDependencies { - ruleRegistry: RuleRegistryPluginStartContract; -} - -export interface InvestigateAppServerSetup {} - -export interface InvestigateAppServerStart {} diff --git a/x-pack/plugins/observability_solution/investigate_app/tsconfig.json b/x-pack/plugins/observability_solution/investigate_app/tsconfig.json deleted file mode 100644 index bc67b591a57b8..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/tsconfig.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../typings/**/*", - "common/**/*", - "public/**/*", - "typings/**/*", - "public/**/*.json", - "server/**/*", - ".storybook/**/*" - ], - "exclude": [ - "target/**/*", - ".storybook/**/*.js" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/react-kibana-context-theme", - "@kbn/shared-ux-link-redirect-app", - "@kbn/kibana-react-plugin", - "@kbn/i18n", - "@kbn/embeddable-plugin", - "@kbn/observability-ai-assistant-plugin", - "@kbn/lens-plugin", - "@kbn/esql", - "@kbn/esql-utils", - "@kbn/data-plugin", - "@kbn/es-types", - "@kbn/field-types", - "@kbn/expressions-plugin", - "@kbn/deeplinks-observability", - "@kbn/logging", - "@kbn/data-views-plugin", - "@kbn/observability-shared-plugin", - "@kbn/config-schema", - "@kbn/investigate-plugin", - "@kbn/dataset-quality-plugin", - "@kbn/utility-types-jest", - "@kbn/content-management-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/visualization-utils", - "@kbn/unified-search-plugin", - "@kbn/es-query", - "@kbn/server-route-repository", - "@kbn/security-plugin", - "@kbn/ui-actions-plugin", - "@kbn/server-route-repository-utils", - "@kbn/core-saved-objects-server", - "@kbn/rule-registry-plugin", - "@kbn/shared-ux-router", - "@kbn/investigation-shared", - "@kbn/core-security-common", - "@kbn/saved-objects-finder-plugin", - "@kbn/presentation-containers", - "@kbn/lens-embeddable-utils", - "@kbn/i18n-react", - "@kbn/zod", - "@kbn/observability-plugin", - "@kbn/licensing-plugin", - "@kbn/rule-data-utils", - "@kbn/entities-schema", - "@kbn/core-elasticsearch-server", - "@kbn/calculate-auto", - "@kbn/ml-random-sampler-utils", - "@kbn/charts-plugin", - "@kbn/observability-utils-browser", - "@kbn/usage-collection-plugin", - "@kbn/inference-common", - ], -} diff --git a/x-pack/plugins/observability_solution/logs_data_access/kibana.jsonc b/x-pack/plugins/observability_solution/logs_data_access/kibana.jsonc index 02fcff85404a0..f3eccc1c0c154 100644 --- a/x-pack/plugins/observability_solution/logs_data_access/kibana.jsonc +++ b/x-pack/plugins/observability_solution/logs_data_access/kibana.jsonc @@ -1,13 +1,17 @@ { "type": "plugin", "id": "@kbn/logs-data-access-plugin", - "owner": ["@elastic/obs-ux-logs-team"], + "owner": [ + "@elastic/obs-ux-logs-team" + ], + "group": "platform", + "visibility": "shared", "plugin": { "id": "logsDataAccess", "server": true, "browser": true, "requiredPlugins": [ - "data", + "data", "dataViews" ], "optionalPlugins": [], diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/data_view_menu_item.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/data_view_menu_item.tsx index 6c16ec511eb52..ec5c1aab89185 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/data_view_menu_item.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/data_view_menu_item.tsx @@ -6,9 +6,8 @@ */ import React from 'react'; -import { EuiIcon, EuiToolTip } from '@elastic/eui'; +import { EuiIcon, EuiToolTip, useEuiTheme } from '@elastic/eui'; import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { DataViewDescriptor } from '../../../../common/data_views/models/data_view_descriptor'; import { openDiscoverLabel } from '../constants'; @@ -17,18 +16,22 @@ interface DataViewMenuItemProps { isAvailable: boolean; } -const rightSpacing = css` - margin-right: ${euiThemeVars.euiSizeS}; -`; - export const DataViewMenuItem = ({ dataView, isAvailable }: DataViewMenuItemProps) => { + const { euiTheme } = useEuiTheme(); + if (isAvailable) { return <span>{dataView.name}</span>; } return ( <> - <span css={rightSpacing}>{dataView.name}</span> + <span + css={css` + margin-right: ${euiTheme.size.s}; + `} + > + {dataView.name} + </span> <EuiToolTip content={openDiscoverLabel}> <EuiIcon type="popout" color="subdued" /> </EuiToolTip> diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/selector_footer.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/selector_footer.tsx index fd1ae95770506..40c88a7453feb 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/selector_footer.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/selector_footer.tsx @@ -57,7 +57,7 @@ export const ESQLButton = (props: DiscoverEsqlUrlProps) => { return ( <EuiFlexItem grow={false}> - <EuiButton {...linkProps} color="success" size="s" data-test-subj="esqlLink"> + <EuiButton {...linkProps} color="text" size="s" data-test-subj="esqlLink"> {tryEsql} </EuiButton> </EuiFlexItem> diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/column_tooltips/field_with_token.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/column_tooltips/field_with_token.tsx index 045dbc1205680..4b2fc981aeff8 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/column_tooltips/field_with_token.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/column_tooltips/field_with_token.tsx @@ -5,14 +5,9 @@ * 2.0. */ -import { EuiFlexGroup, EuiFlexItem, EuiText, EuiToken } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiText, EuiToken, useEuiTheme } from '@elastic/eui'; import React from 'react'; import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; - -const spacingXsCss = css` - margin-bottom: ${euiThemeVars.euiSizeXS}; -`; export const FieldWithToken = ({ field, @@ -21,8 +16,14 @@ export const FieldWithToken = ({ field: string; iconType?: string; }) => { + const { euiTheme } = useEuiTheme(); + return ( - <div css={spacingXsCss}> + <div + css={css` + margin-bottom: ${euiTheme.size.xs}; + `} + > <EuiFlexGroup responsive={false} alignItems="center" diff --git a/x-pack/plugins/observability_solution/logs_explorer/tsconfig.json b/x-pack/plugins/observability_solution/logs_explorer/tsconfig.json index 2274d2c533d35..b4376d2463c5c 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/tsconfig.json +++ b/x-pack/plugins/observability_solution/logs_explorer/tsconfig.json @@ -37,7 +37,6 @@ "@kbn/router-utils", "@kbn/share-plugin", "@kbn/shared-ux-utility", - "@kbn/ui-theme", "@kbn/unified-data-table", "@kbn/unified-field-list", "@kbn/unified-search-plugin", diff --git a/x-pack/plugins/observability_solution/slo/emotion.d.ts b/x-pack/plugins/observability_solution/logs_shared/emotion.d.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/emotion.d.ts rename to x-pack/plugins/observability_solution/logs_shared/emotion.d.ts diff --git a/x-pack/plugins/observability_solution/logs_shared/kibana.jsonc b/x-pack/plugins/observability_solution/logs_shared/kibana.jsonc index 69539098f2463..46aa8f451260d 100644 --- a/x-pack/plugins/observability_solution/logs_shared/kibana.jsonc +++ b/x-pack/plugins/observability_solution/logs_shared/kibana.jsonc @@ -2,29 +2,39 @@ "type": "plugin", "id": "@kbn/logs-shared-plugin", "owner": "@elastic/obs-ux-logs-team", + "group": "platform", + "visibility": "shared", "description": "Exposes the shared components and APIs to access and visualize logs.", "plugin": { "id": "logsShared", "server": true, "browser": true, - "configPath": ["xpack", "logs_shared"], + "configPath": [ + "xpack", + "logs_shared" + ], "requiredPlugins": [ "charts", "data", - "fieldFormats", + "fieldFormats", "dataViews", "discoverShared", "logsDataAccess", - "observabilityShared", "share", + "spaces", + "uiActions", "usageCollection", "embeddable", ], "optionalPlugins": [ "observabilityAIAssistant", ], - "requiredBundles": ["kibanaUtils", "kibanaReact"], - "extraPublicDirs": ["common"] + "requiredBundles": [ + "kibanaUtils", + "kibanaReact" + ], + "extraPublicDirs": [ + "common" + ] } } - \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/log_stream/log_stream.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/log_stream/log_stream.tsx index f82e9436fe5cd..8d33fe4b5d343 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/log_stream/log_stream.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/log_stream/log_stream.tsx @@ -10,19 +10,19 @@ import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { buildEsQuery, Filter, Query } from '@kbn/es-query'; import { euiStyled } from '@kbn/kibana-react-plugin/common'; import { useKibana } from '@kbn/kibana-react-plugin/public'; +import type { LogsDataAccessPluginStart } from '@kbn/logs-data-access-plugin/public'; import type { SharePluginStart } from '@kbn/share-plugin/public'; import { JsonValue } from '@kbn/utility-types'; import { noop } from 'lodash'; import React, { useCallback, useEffect, useMemo } from 'react'; import usePrevious from 'react-use/lib/usePrevious'; -import type { LogsDataAccessPluginStart } from '@kbn/logs-data-access-plugin/public'; -import { useKibanaQuerySettings } from '@kbn/observability-shared-plugin/public'; import { LogEntryCursor } from '../../../common/log_entry'; import { defaultLogViewsStaticConfig, LogViewReference } from '../../../common/log_views'; import { BuiltEsQuery, useLogStream } from '../../containers/logs/log_stream'; import { useLogView } from '../../hooks/use_log_view'; import { LogViewsClient } from '../../services/log_views'; import { LogColumnRenderConfiguration } from '../../utils/log_column_render_configuration'; +import { useKibanaQuerySettings } from '../../utils/use_kibana_query_settings'; import { useLogEntryFlyout } from '../logging/log_entry_flyout'; import { ScrollableLogTextStreamView, VisibleInterval } from '../logging/log_text_stream'; import { LogStreamErrorBoundary } from './log_stream_error_boundary'; diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx index ad989f8460016..05906b2794c9f 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.test.tsx @@ -7,6 +7,8 @@ import { coreMock } from '@kbn/core/public/mocks'; import { + TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR, + TransactionDetailsByTraceIdLocatorParams, uptimeOverviewLocatorID, UptimeOverviewLocatorInfraParams, UptimeOverviewLocatorParams, @@ -26,10 +28,10 @@ coreStartMock.application.getUrlForApp.mockImplementation((app, options) => { }); const emptyUrlService = new MockUrlService(); -const urlServiceWithUptimeLocator = new MockUrlService(); +const urlServiceWithMockLocators = new MockUrlService(); // we can't use the actual locator here because its import would create a // forbidden ts project reference cycle -urlServiceWithUptimeLocator.locators.create< +urlServiceWithMockLocators.locators.create< UptimeOverviewLocatorInfraParams | UptimeOverviewLocatorParams >({ id: uptimeOverviewLocatorID, @@ -37,6 +39,12 @@ urlServiceWithUptimeLocator.locators.create< return { app: 'uptime', path: '/overview', state: {} }; }, }); +urlServiceWithMockLocators.locators.create<TransactionDetailsByTraceIdLocatorParams>({ + id: TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR, + getLocation: async (params) => { + return { app: 'apm', path: '/trace-id', state: {} }; + }, +}); const ProviderWrapper: FC<React.PropsWithChildren<{ urlService?: UrlService }>> = ({ children, @@ -90,7 +98,7 @@ describe('LogEntryActionsMenu component', () => { describe('uptime link with legacy uptime enabled', () => { it('renders as enabled when a host ip is present in the log entry', () => { const elementWrapper = mount( - <ProviderWrapper urlService={urlServiceWithUptimeLocator}> + <ProviderWrapper urlService={urlServiceWithMockLocators}> <LogEntryActionsMenu logEntry={{ fields: [{ field: 'host.ip', value: ['HOST_IP'] }], @@ -120,7 +128,7 @@ describe('LogEntryActionsMenu component', () => { it('renders as enabled when a container id is present in the log entry', () => { const elementWrapper = mount( - <ProviderWrapper urlService={urlServiceWithUptimeLocator}> + <ProviderWrapper urlService={urlServiceWithMockLocators}> <LogEntryActionsMenu logEntry={{ fields: [{ field: 'container.id', value: ['CONTAINER_ID'] }], @@ -150,7 +158,7 @@ describe('LogEntryActionsMenu component', () => { it('renders as enabled when a pod uid is present in the log entry', () => { const elementWrapper = mount( - <ProviderWrapper urlService={urlServiceWithUptimeLocator}> + <ProviderWrapper urlService={urlServiceWithMockLocators}> <LogEntryActionsMenu logEntry={{ fields: [{ field: 'kubernetes.pod.uid', value: ['POD_UID'] }], @@ -180,7 +188,7 @@ describe('LogEntryActionsMenu component', () => { it('renders as disabled when no supported field is present in the log entry', () => { const elementWrapper = mount( - <ProviderWrapper urlService={urlServiceWithUptimeLocator}> + <ProviderWrapper urlService={urlServiceWithMockLocators}> <LogEntryActionsMenu logEntry={{ fields: [], @@ -215,7 +223,7 @@ describe('LogEntryActionsMenu component', () => { describe('apm link', () => { it('renders with a trace id filter when present in log entry', () => { const elementWrapper = mount( - <ProviderWrapper> + <ProviderWrapper urlService={urlServiceWithMockLocators}> <LogEntryActionsMenu logEntry={{ fields: [{ field: 'trace.id', value: ['1234567'] }], @@ -246,7 +254,7 @@ describe('LogEntryActionsMenu component', () => { it('renders with a trace id filter and timestamp when present in log entry', () => { const timestamp = '2019-06-27T17:44:08.693Z'; const elementWrapper = mount( - <ProviderWrapper> + <ProviderWrapper urlService={urlServiceWithMockLocators}> <LogEntryActionsMenu logEntry={{ fields: [ @@ -279,7 +287,7 @@ describe('LogEntryActionsMenu component', () => { it('renders as disabled when no supported field is present in log entry', () => { const elementWrapper = mount( - <ProviderWrapper> + <ProviderWrapper urlService={urlServiceWithMockLocators}> <LogEntryActionsMenu logEntry={{ fields: [], @@ -303,7 +311,10 @@ describe('LogEntryActionsMenu component', () => { elementWrapper.update(); expect( - elementWrapper.find(`button${testSubject('~apmLogEntryActionsMenuItem')}`).prop('disabled') + elementWrapper + .find(`${testSubject('~apmLogEntryActionsMenuItem')}`) + .first() + .prop('disabled') ).toEqual(true); }); }); diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.tsx index 4f16d34a489ac..404f6c37bffaa 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_actions_menu.tsx @@ -7,13 +7,14 @@ import { EuiButton, EuiContextMenuItem, EuiContextMenuPanel, EuiPopover } from '@elastic/eui'; import { + TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR, uptimeOverviewLocatorID, + type TransactionDetailsByTraceIdLocatorParams, type UptimeOverviewLocatorInfraParams, } from '@kbn/deeplinks-observability'; import { FormattedMessage } from '@kbn/i18n-react'; -import { LinkDescriptor, useLinkProps } from '@kbn/observability-shared-plugin/public'; import { getRouterLinkProps } from '@kbn/router-utils'; -import { ILocatorClient } from '@kbn/share-plugin/common/url_service'; +import { BrowserUrlService } from '@kbn/share-plugin/public'; import React, { useMemo } from 'react'; import { LogEntry } from '../../../../common/search_strategies/log_entries/log_entry'; import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; @@ -33,14 +34,11 @@ export const LogEntryActionsMenu = ({ logEntry }: LogEntryActionsMenuProps) => { } = useKibanaContextForPlugin(); const { hide, isVisible, toggle } = useVisibilityState(false); - const apmLinkDescriptor = useMemo(() => getAPMLink(logEntry), [logEntry]); - - const uptimeLinkProps = getUptimeLink({ locators })(logEntry); - - const apmLinkProps = useLinkProps({ - app: 'apm', - ...(apmLinkDescriptor ? apmLinkDescriptor : {}), - }); + const apmLinkProps = useMemo(() => getAPMLink({ locators })(logEntry), [locators, logEntry]); + const uptimeLinkProps = useMemo( + () => getUptimeLink({ locators })(logEntry), + [locators, logEntry] + ); const menuItems = useMemo( () => [ @@ -58,7 +56,7 @@ export const LogEntryActionsMenu = ({ logEntry }: LogEntryActionsMenuProps) => { </EuiContextMenuItem>, <EuiContextMenuItem data-test-subj="logEntryActionsMenuItem apmLogEntryActionsMenuItem" - disabled={!apmLinkDescriptor} + disabled={!apmLinkProps} icon="apmApp" key="apmLink" {...apmLinkProps} @@ -69,7 +67,7 @@ export const LogEntryActionsMenu = ({ logEntry }: LogEntryActionsMenuProps) => { /> </EuiContextMenuItem>, ], - [apmLinkDescriptor, apmLinkProps, uptimeLinkProps] + [apmLinkProps, uptimeLinkProps] ); const hasMenuItems = useMemo(() => menuItems.length > 0, [menuItems]); @@ -101,8 +99,8 @@ export const LogEntryActionsMenu = ({ logEntry }: LogEntryActionsMenuProps) => { }; const getUptimeLink = - ({ locators }: { locators: ILocatorClient }) => - (logEntry: LogEntry): ContextRouterLinkProps | undefined => { + ({ locators }: { locators: BrowserUrlService['locators'] }) => + (logEntry: LogEntry) => { const uptimeLocator = locators.get<UptimeOverviewLocatorInfraParams>(uptimeOverviewLocatorID); if (!uptimeLocator) { @@ -135,47 +133,49 @@ const getUptimeLink = }) as ContextRouterLinkProps; }; -const getAPMLink = (logEntry: LogEntry): LinkDescriptor | undefined => { - const traceId = logEntry.fields.find( - ({ field, value }) => typeof value[0] === 'string' && field === 'trace.id' - )?.value?.[0]; - - if (typeof traceId !== 'string') { - return undefined; - } - - const timestampField = logEntry.fields.find(({ field }) => field === '@timestamp'); - const timestamp = timestampField ? timestampField.value[0] : null; - const { rangeFrom, rangeTo } = - typeof timestamp === 'number' - ? (() => { - const from = new Date(timestamp); - const to = new Date(timestamp); - - from.setMinutes(from.getMinutes() - 10); - to.setMinutes(to.getMinutes() + 10); - - return { rangeFrom: from.toISOString(), rangeTo: to.toISOString() }; - })() - : { rangeFrom: 'now-1y', rangeTo: 'now' }; - - return { - app: 'apm', - pathname: getApmTraceUrl({ traceId, rangeFrom, rangeTo }), - }; -}; +const getAPMLink = + ({ locators }: { locators: BrowserUrlService['locators'] }) => + (logEntry: LogEntry) => { + const traceId = logEntry.fields.find( + ({ field, value }) => typeof value[0] === 'string' && field === 'trace.id' + )?.value?.[0]; -function getApmTraceUrl({ - traceId, - rangeFrom, - rangeTo, -}: { - traceId: string; - rangeFrom: string; - rangeTo: string; -}) { - return `/link-to/trace/${traceId}?` + new URLSearchParams({ rangeFrom, rangeTo }).toString(); -} + if (typeof traceId !== 'string') { + return undefined; + } + + const apmLocator = locators.get<TransactionDetailsByTraceIdLocatorParams>( + TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR + ); + + if (!apmLocator) { + return undefined; + } + + const timestampField = logEntry.fields.find(({ field }) => field === '@timestamp'); + const timestamp = timestampField ? timestampField.value[0] : null; + const { rangeFrom, rangeTo } = + typeof timestamp === 'number' || typeof timestamp === 'string' + ? (() => { + const from = new Date(timestamp); + const to = new Date(timestamp); + + from.setMinutes(from.getMinutes() - 10); + to.setMinutes(to.getMinutes() + 10); + + return { rangeFrom: from.toISOString(), rangeTo: to.toISOString() }; + })() + : { rangeFrom: 'now-1y', rangeTo: 'now' }; + + const apmLocatorParams = { traceId, rangeFrom, rangeTo }; + + // Coercing the return value to ContextRouterLinkProps because + // EuiContextMenuItem defines a too broad type for onClick + return getRouterLinkProps({ + href: apmLocator.getRedirectUrl(apmLocatorParams), + onClick: () => apmLocator.navigate(apmLocatorParams), + }) as ContextRouterLinkProps; + }; export interface ContextRouterLinkProps { href: string | undefined; diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx index 952ee959e4a72..a66cb1790525a 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx @@ -28,7 +28,6 @@ import { useLogEntry } from '../../../containers/logs/log_entry'; import { CenteredEuiFlyoutBody } from '../../centered_flyout_body'; import { DataSearchErrorCallout } from '../../data_search_error_callout'; import { DataSearchProgress } from '../../data_search_progress'; -import LogAIAssistant from '../../log_ai_assistant/log_ai_assistant'; import { LogEntryActionsMenu } from './log_entry_actions_menu'; import { LogEntryFieldsTable } from './log_entry_fields_table'; @@ -42,7 +41,7 @@ export interface LogEntryFlyoutProps { export const useLogEntryFlyout = (logViewReference: LogViewReference) => { const flyoutRef = useRef<OverlayRef>(); const { - services: { http, data, share, uiSettings, application, observabilityAIAssistant }, + services: { http, data, share, uiSettings, application, logsShared }, overlays: { openFlyout }, } = useKibanaContextForPlugin(); @@ -58,7 +57,7 @@ export const useLogEntryFlyout = (logViewReference: LogViewReference) => { share, uiSettings, application, - observabilityAIAssistant, + logsShared, }); flyoutRef.current = openFlyout( @@ -72,12 +71,12 @@ export const useLogEntryFlyout = (logViewReference: LogViewReference) => { ); }, [ + logsShared, application, closeLogEntryFlyout, data, http, logViewReference, - observabilityAIAssistant, openFlyout, share, uiSettings, @@ -115,7 +114,11 @@ export const LogEntryFlyout = ({ logEntryId, }); - const { observabilityAIAssistant } = useKibanaContextForPlugin().services; + const { + services: { + logsShared: { LogAIAssistant }, + }, + } = useKibanaContextForPlugin(); useEffect(() => { if (logViewReference && logEntryId) { @@ -183,12 +186,9 @@ export const LogEntryFlyout = ({ } > <EuiFlexGroup direction="column" gutterSize="m"> - {observabilityAIAssistant && ( + {LogAIAssistant && ( <EuiFlexItem grow={false}> - <LogAIAssistant - observabilityAIAssistant={observabilityAIAssistant} - doc={logEntry} - /> + <LogAIAssistant doc={logEntry} /> </EuiFlexItem> )} <EuiFlexItem grow={false}> diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/column_headers_wrapper.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/column_headers_wrapper.tsx index f3922abff9b5c..4d7ec0ac92ddc 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/column_headers_wrapper.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/column_headers_wrapper.tsx @@ -5,26 +5,33 @@ * 2.0. */ -import { euiStyled } from '@kbn/kibana-react-plugin/common'; -import { transparentize } from 'polished'; +import { css } from '@emotion/react'; +import { useEuiTheme } from '@elastic/eui'; +import React from 'react'; import { ASSUMED_SCROLLBAR_WIDTH } from './vertical_scroll_panel'; -export const LogColumnHeadersWrapper = euiStyled.div.attrs((props) => ({ - role: props.role ?? 'row', -}))` - align-items: stretch; - display: flex; - flex-direction: row; - flex-wrap: nowrap; - justify-content: flex-start; - overflow: hidden; - padding-right: ${ASSUMED_SCROLLBAR_WIDTH}px; - border-bottom: ${(props) => props.theme.eui.euiBorderThin}; - box-shadow: 0 2px 2px -1px ${(props) => - transparentize(0.3, props.theme.eui.euiColorLightShade)}; - position: relative; - z-index: 1; - `; +export const LogColumnHeadersWrapper = ({ role = 'row', ...props }) => { + const { euiTheme } = useEuiTheme(); + return ( + <div + role={role} + css={css` + align-items: stretch; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + overflow: hidden; + padding-right: ${ASSUMED_SCROLLBAR_WIDTH}px; + border-bottom: ${euiTheme.border.thin}; + box-shadow: 0 2px 2px -1px ${euiTheme.colors.borderBaseSubdued}; + position: relative; + z-index: 1; + `} + {...props} + /> + ); +}; // eslint-disable-next-line import/no-default-export export default LogColumnHeadersWrapper; diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/highlighting.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/highlighting.tsx index e8ddd350927db..a9e3b1d0511ed 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/highlighting.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/highlighting.tsx @@ -7,33 +7,20 @@ import React from 'react'; -import { euiStyled } from '@kbn/kibana-react-plugin/common'; -import { chooseLightOrDarkColor, tintOrShade } from '../../../utils/styles'; +import styled from '@emotion/styled'; -export const ActiveHighlightMarker = euiStyled.mark` - color: ${(props) => - chooseLightOrDarkColor( - props.theme.eui.euiColorAccent, - props.theme.eui.euiColorEmptyShade, - props.theme.eui.euiColorDarkestShade - )}; - background-color: ${(props) => props.theme.eui.euiColorAccent}; - outline: 1px solid ${(props) => props.theme.eui.euiColorAccent}; - }; +export const ActiveHighlightMarker = styled.mark` + color: ${({ theme }) => theme.euiTheme.colors.textParagraph}; + background-color: ${({ theme }) => theme.euiTheme.colors.backgroundFilledAccent}; + outline: ${({ theme }) => + `${theme.euiTheme.border.width.thin} solid ${theme.euiTheme.colors.backgroundFilledAccent}`}; `; -export const HighlightMarker = euiStyled.mark` - color: ${(props) => - chooseLightOrDarkColor( - tintOrShade(props.theme.eui.euiTextColor, props.theme.eui.euiColorAccent, 0.7, 0.5), - props.theme.eui.euiColorEmptyShade, - props.theme.eui.euiColorDarkestShade - )}; - background-color: ${(props) => - tintOrShade(props.theme.eui.euiTextColor, props.theme.eui.euiColorAccent, 0.7, 0.5)}; - outline: 1px solid ${(props) => - tintOrShade(props.theme.eui.euiTextColor, props.theme.eui.euiColorAccent, 0.7, 0.5)}; - }; +export const HighlightMarker = styled.mark` + color: ${({ theme }) => theme.euiTheme.colors.textParagraph}; + background-color: ${({ theme }) => theme.euiTheme.colors.backgroundLightAccent}; + outline: ${({ theme }) => + `${theme.euiTheme.border.width.thin} solid ${theme.euiTheme.colors.backgroundLightAccent}`}; `; export const highlightFieldValue = ( diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/index.ts b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/index.ts index 6468ea3d94d22..be32a2be6dc58 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/index.ts +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/index.ts @@ -5,12 +5,11 @@ * 2.0. */ -export type { LogEntryStreamItem } from './item'; -export type { LogEntryColumnWidths } from './log_entry_column'; - export { LogColumnHeader } from './column_headers'; export { LogColumnHeadersWrapper } from './column_headers_wrapper'; -export { iconColumnId, LogEntryColumn, useColumnWidths } from './log_entry_column'; +export type { LogEntryStreamItem } from './item'; +export { LogEntryColumn, iconColumnId, useColumnWidths } from './log_entry_column'; +export type { LogEntryColumnWidths } from './log_entry_column'; export { LogEntryContextMenu } from './log_entry_context_menu'; export { LogEntryFieldColumn } from './log_entry_field_column'; export { LogEntryMessageColumn } from './log_entry_message_column'; diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/log_entry_row.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/log_entry_row.tsx index b73da833032f4..411b5d0731380 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/log_entry_row.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/log_entry_row.tsx @@ -6,25 +6,19 @@ */ import { i18n } from '@kbn/i18n'; -import { ObservabilityTriggerId } from '@kbn/observability-shared-plugin/common'; -import { - useUiTracker, - getContextMenuItemsFromActions, -} from '@kbn/observability-shared-plugin/public'; import { isEmpty } from 'lodash'; import React, { memo, useCallback, useMemo, useState } from 'react'; -import useAsync from 'react-use/lib/useAsync'; import { LogColumn, LogEntry } from '../../../../common/log_entry'; import { TextScale } from '../../../../common/log_text_scale'; -import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; import { + LogColumnRenderConfiguration, isFieldColumnRenderConfiguration, isMessageColumnRenderConfiguration, isTimestampColumnRenderConfiguration, - LogColumnRenderConfiguration, } from '../../../utils/log_column_render_configuration'; import { isTimestampColumn } from '../../../utils/log_entry'; -import { iconColumnId, LogEntryColumn, LogEntryColumnWidths } from './log_entry_column'; +import { useUiTracker } from '../../../utils/use_ui_tracker'; +import { LogEntryColumn, LogEntryColumnWidths, iconColumnId } from './log_entry_column'; import { LogEntryContextMenu } from './log_entry_context_menu'; import { LogEntryFieldColumn } from './log_entry_field_column'; import { LogEntryMessageColumn } from './log_entry_message_column'; @@ -74,7 +68,7 @@ export const LogEntryRow = memo( scale, wrap, }: LogEntryRowProps) => { - const trackMetric = useUiTracker({ app: 'infra_logs' }); + const trackMetric = useUiTracker(); const [isHovered, setIsHovered] = useState(false); const [isMenuOpen, setIsMenuOpen] = useState(false); @@ -99,16 +93,6 @@ export const LogEntryRow = memo( const hasActionViewLogInContext = hasContext && openViewLogInContext !== undefined; const hasActionsMenu = hasActionFlyoutWithItem || hasActionViewLogInContext; - const uiActions = useKibanaContextForPlugin().services.uiActions; - - const externalContextMenuItems = useAsync(() => { - return getContextMenuItemsFromActions({ - uiActions, - triggerId: ObservabilityTriggerId.LogEntryContextMenu, - context: logEntry, - }); - }, [uiActions, logEntry]); - const menuItems = useMemo(() => { const items = []; if (hasActionFlyoutWithItem) { @@ -251,7 +235,6 @@ export const LogEntryRow = memo( onOpen={openMenu} onClose={closeMenu} items={menuItems} - externalItems={externalContextMenuItems.value} /> ) : null} </LogEntryColumn> diff --git a/x-pack/plugins/observability_solution/logs_shared/public/hooks/use_kibana.tsx b/x-pack/plugins/observability_solution/logs_shared/public/hooks/use_kibana.tsx index 09032b4b644a2..af55accdd66b5 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/hooks/use_kibana.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/hooks/use_kibana.tsx @@ -20,8 +20,7 @@ import { } from '../types'; export type PluginKibanaContextValue = CoreStart & - LogsSharedClientStartDeps & - LogsSharedClientStartExports; + LogsSharedClientStartDeps & { logsShared: LogsSharedClientStartExports }; export const createKibanaContextForPlugin = ( core: CoreStart, @@ -31,7 +30,7 @@ export const createKibanaContextForPlugin = ( createKibanaReactContext<PluginKibanaContextValue>({ ...core, ...plugins, - ...pluginStart, + logsShared: pluginStart, }); export const useKibanaContextForPlugin = diff --git a/x-pack/plugins/observability_solution/logs_shared/public/utils/styles.ts b/x-pack/plugins/observability_solution/logs_shared/public/utils/styles.ts deleted file mode 100644 index d0949b58bd575..0000000000000 --- a/x-pack/plugins/observability_solution/logs_shared/public/utils/styles.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { get } from 'lodash'; -import { getLuminance, parseToHsl, parseToRgb, rgba, shade, tint } from 'polished'; - -type PropReader = <Prop, Default = any>(props: object, defaultValue?: Default) => Prop; - -const asPropReader = (reader: string | string[] | PropReader) => - typeof reader === 'function' - ? reader - : <Props extends object, Prop extends keyof Props, Default>( - props: Props, - defaultValue?: Default - ) => get(props, reader as Prop, defaultValue); - -export const switchProp = Object.assign( - (propName: string | string[] | PropReader, options: Map<any, any> | object) => - (props: object) => { - const propValue = asPropReader(propName)(props, switchProp.default); - if (typeof propValue === 'undefined') { - return; - } - return options instanceof Map ? options.get(propValue) : get(options, propValue); - }, - { - default: Symbol('default'), - } -); - -export const ifProp = - <Pass, Fail>(propName: string | string[] | PropReader, pass: Pass, fail: Fail) => - (props: object) => - asPropReader(propName)(props) ? pass : fail; - -export const tintOrShade = ( - textColor: string, - color: string, - tintFraction: number, - shadeFraction: number -) => { - if (parseToHsl(textColor).lightness > 0.5) { - return shade(1 - shadeFraction, color); - } else { - return tint(1 - tintFraction, color); - } -}; - -export const getContrast = (color1: string, color2: string): number => { - const luminance1 = getLuminance(color1); - const luminance2 = getLuminance(color2); - - return parseFloat( - (luminance1 > luminance2 - ? (luminance1 + 0.05) / (luminance2 + 0.05) - : (luminance2 + 0.05) / (luminance1 + 0.05) - ).toFixed(2) - ); -}; - -export const chooseLightOrDarkColor = ( - backgroundColor: string, - lightColor: string, - darkColor: string -) => { - if (getContrast(backgroundColor, lightColor) > getContrast(backgroundColor, darkColor)) { - return lightColor; - } else { - return darkColor; - } -}; - -export const transparentize = (amount: number, color: string): string => { - if (color === 'transparent') { - return color; - } - - const parsedColor = parseToRgb(color); - const alpha: number = - 'alpha' in parsedColor && typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1; - const colorWithAlpha = { - ...parsedColor, - alpha: clampValue((alpha * 100 - amount * 100) / 100, 0, 1), - }; - - return rgba(colorWithAlpha); -}; - -export const clampValue = (value: number, minValue: number, maxValue: number) => - Math.max(minValue, Math.min(maxValue, value)); diff --git a/x-pack/plugins/observability_solution/logs_shared/public/utils/use_kibana_query_settings.ts b/x-pack/plugins/observability_solution/logs_shared/public/utils/use_kibana_query_settings.ts new file mode 100644 index 0000000000000..521cd0142303b --- /dev/null +++ b/x-pack/plugins/observability_solution/logs_shared/public/utils/use_kibana_query_settings.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { EsQueryConfig } from '@kbn/es-query'; +import { SerializableRecord } from '@kbn/utility-types'; +import { useMemo } from 'react'; +import { UI_SETTINGS } from '@kbn/data-plugin/public'; +import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; + +export const useKibanaQuerySettings = (): EsQueryConfig => { + const [allowLeadingWildcards] = useUiSetting$<boolean>(UI_SETTINGS.QUERY_ALLOW_LEADING_WILDCARDS); + const [queryStringOptions] = useUiSetting$<SerializableRecord>(UI_SETTINGS.QUERY_STRING_OPTIONS); + const [dateFormatTZ] = useUiSetting$<string>(UI_SETTINGS.DATEFORMAT_TZ); + const [ignoreFilterIfFieldNotInIndex] = useUiSetting$<boolean>( + UI_SETTINGS.COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX + ); + + return useMemo( + () => ({ + allowLeadingWildcards, + queryStringOptions, + dateFormatTZ, + ignoreFilterIfFieldNotInIndex, + }), + [allowLeadingWildcards, dateFormatTZ, ignoreFilterIfFieldNotInIndex, queryStringOptions] + ); +}; diff --git a/x-pack/plugins/observability_solution/logs_shared/public/utils/use_ui_tracker.ts b/x-pack/plugins/observability_solution/logs_shared/public/utils/use_ui_tracker.ts new file mode 100644 index 0000000000000..bc7e3696b993e --- /dev/null +++ b/x-pack/plugins/observability_solution/logs_shared/public/utils/use_ui_tracker.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { METRIC_TYPE, UiCounterMetricType } from '@kbn/analytics'; +import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; + +/** + * Note: The usage_collection plugin will take care of sending this data to the telemetry server. + * You can find the metrics that are collected by these hooks in Stack Telemetry. + * Search the index `kibana-ui-counter`. You can filter for `eventName` and/or `appName`. + */ + +interface TrackOptions { + metricType?: UiCounterMetricType; + delay?: number; // in ms +} + +interface ServiceDeps { + usageCollection: UsageCollectionSetup; // TODO: This should really be start. Looking into it. +} + +export type TrackMetricOptions = TrackOptions & { metric: string }; +export type UiTracker = ReturnType<typeof useUiTracker>; +export type TrackEvent = (options: TrackMetricOptions) => void; + +export { METRIC_TYPE }; + +export function useUiTracker<Services extends ServiceDeps>(): TrackEvent { + const reportUiCounter = useKibana<Services>().services?.usageCollection?.reportUiCounter; + const trackEvent = useMemo(() => { + return ({ metric, metricType = METRIC_TYPE.COUNT }: TrackMetricOptions) => { + if (reportUiCounter) { + reportUiCounter('infra_logs', metricType, metric); + } + }; + }, [reportUiCounter]); + return trackEvent; +} diff --git a/x-pack/plugins/observability_solution/logs_shared/server/deprecations/constants.ts b/x-pack/plugins/observability_solution/logs_shared/server/deprecations/constants.ts new file mode 100644 index 0000000000000..315be28d67510 --- /dev/null +++ b/x-pack/plugins/observability_solution/logs_shared/server/deprecations/constants.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Number of spaces to address concurrently. + * We don't want to loop through all the spaces concurrently to avoid putting too much pressure on the memory in case that there are too many spaces. + */ +export const CONCURRENT_SPACES_TO_CHECK = 500; diff --git a/x-pack/plugins/observability_solution/logs_shared/server/deprecations/log_sources_setting.ts b/x-pack/plugins/observability_solution/logs_shared/server/deprecations/log_sources_setting.ts index c3e891edf74c9..0bccc83682382 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/deprecations/log_sources_setting.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/deprecations/log_sources_setting.ts @@ -6,39 +6,50 @@ */ import { DeprecationsDetails } from '@kbn/core-deprecations-common'; import { GetDeprecationsContext } from '@kbn/core-deprecations-server'; +import pMap from 'p-map'; +import type { Space } from '@kbn/spaces-plugin/common'; import { i18n } from '@kbn/i18n'; -import { defaultLogViewId } from '../../common/log_views'; import { MIGRATE_LOG_VIEW_SETTINGS_URL } from '../../common/http_api/deprecations'; +import { CONCURRENT_SPACES_TO_CHECK } from './constants'; +import { defaultLogViewId } from '../../common/log_views'; import { logSourcesKibanaAdvancedSettingRT } from '../../common'; import { LogsSharedPluginStartServicesAccessor } from '../types'; -export const getLogSourcesSettingDeprecationInfo = async ({ - getStartServices, - context, -}: { +export interface LogSourcesSettingDeprecationParams { context: GetDeprecationsContext; getStartServices: LogsSharedPluginStartServicesAccessor; -}): Promise<DeprecationsDetails[]> => { - const [_, pluginStartDeps, pluginStart] = await getStartServices(); - const logSourcesService = - pluginStartDeps.logsDataAccess.services.logSourcesServiceFactory.getLogSourcesService( - context.savedObjectsClient - ); - const logViewsClient = pluginStart.logViews.getClient( - context.savedObjectsClient, - context.esClient.asCurrentUser, - logSourcesService - ); +} + +export const getLogSourcesSettingDeprecationInfo = async ( + params: LogSourcesSettingDeprecationParams +): Promise<DeprecationsDetails[]> => { + const [_, pluginStartDeps] = await params.getStartServices(); + + const allAvailableSpaces = await pluginStartDeps.spaces.spacesService + .createSpacesClient(params.context.request) + .getAll({ purpose: 'any' }); + + const deprecationPerSpaceFactory = getLogSourcesSettingDeprecationInfoForSpaceFactory(params); + + const results = await pMap(allAvailableSpaces, deprecationPerSpaceFactory, { + concurrency: CONCURRENT_SPACES_TO_CHECK, // limit the number of spaces handled concurrently to make sure that we cover large deployments + }); - const logView = await logViewsClient.getLogView(defaultLogViewId); + const offendingSpaces = results.filter(Boolean) as string[]; - if (logView && !logSourcesKibanaAdvancedSettingRT.is(logView.attributes.logIndices)) { + if (offendingSpaces.length) { + const shortList = + offendingSpaces.length < 4 + ? offendingSpaces.join(', ') + : `${offendingSpaces.slice(0, 3).join(', ')}, ...`; + const fullList = offendingSpaces.join(', '); return [ { title: i18n.translate( 'xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.title', { - defaultMessage: 'Log sources setting', + defaultMessage: 'Log sources setting in {count} spaces: {shortList}', + values: { count: offendingSpaces.length, shortList }, } ), level: 'warning', @@ -47,19 +58,21 @@ export const getLogSourcesSettingDeprecationInfo = async ({ 'xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.message', { defaultMessage: - 'Indices and Data view options previously provided via the Logs UI settings page are now deprecated. Please migrate to using the Kibana log sources advanced setting.', + 'Indices and Data view options previously provided via the Logs UI settings page are now deprecated. Please migrate to using the Kibana log sources advanced setting in each of the following spaces: {fullList}.', + values: { fullList }, } ), correctiveActions: { - manualSteps: [ + manualSteps: offendingSpaces.map((spaceName) => i18n.translate( 'xpack.logsShared.deprecations.migrateLogViewSettingsToLogSourcesSetting.message.manualStepMessage', { defaultMessage: - 'Update the Log sources Kibana advanced setting (via Management > Advanced Settings) to match the setting previously provided via the Logs UI settings page. Then via the Logs UI settings page use the Kibana log sources advanced setting option.', + 'While in the space "{spaceName}" update the Log sources Kibana advanced setting (via Management > Advanced Settings) to match the setting previously provided via the Logs UI settings page. Then via the Logs UI settings page use the Kibana log sources advanced setting option.', + values: { spaceName }, } - ), - ], + ) + ), api: { method: 'PUT', path: MIGRATE_LOG_VIEW_SETTINGS_URL, @@ -71,3 +84,31 @@ export const getLogSourcesSettingDeprecationInfo = async ({ return []; } }; + +export const getLogSourcesSettingDeprecationInfoForSpaceFactory = ({ + getStartServices, + context, +}: LogSourcesSettingDeprecationParams): ((space: Space) => Promise<string | undefined>) => { + return async (space) => { + const [_, pluginStartDeps, pluginStart] = await getStartServices(); + + // Get a new Saved Object Client scoped to the space.id + const spaceScopedSavedObjectsClient = context.savedObjectsClient.asScopedToNamespace(space.id); + + const logSourcesService = + pluginStartDeps.logsDataAccess.services.logSourcesServiceFactory.getLogSourcesService( + spaceScopedSavedObjectsClient + ); + const logViewsClient = pluginStart.logViews.getClient( + spaceScopedSavedObjectsClient, + context.esClient.asCurrentUser, + logSourcesService + ); + + const logView = await logViewsClient.getLogView(defaultLogViewId); + + if (logView && !logSourcesKibanaAdvancedSettingRT.is(logView.attributes.logIndices)) { + return space.name; + } + }; +}; diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/deprecations/migrate_log_view_settings.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/deprecations/migrate_log_view_settings.ts index f3e9db4f1a765..d6284a63e8461 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/deprecations/migrate_log_view_settings.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/deprecations/migrate_log_view_settings.ts @@ -5,6 +5,8 @@ * 2.0. */ +import pMap from 'p-map'; +import { CONCURRENT_SPACES_TO_CHECK } from '../../deprecations/constants'; import { defaultLogViewId } from '../../../common/log_views'; import { MIGRATE_LOG_VIEW_SETTINGS_URL } from '../../../common/http_api/deprecations'; import { logSourcesKibanaAdvancedSettingRT } from '../../../common'; @@ -23,17 +25,54 @@ export const initMigrateLogViewSettingsRoute = ({ { path: MIGRATE_LOG_VIEW_SETTINGS_URL, validate: false }, async (context, request, response) => { try { + const { elasticsearch, savedObjects } = await context.core; const [_, pluginStartDeps, pluginStart] = await getStartServices(); - const logSourcesService = - await pluginStartDeps.logsDataAccess.services.logSourcesServiceFactory.getScopedLogSourcesService( - request - ); - const logViewsClient = pluginStart.logViews.getScopedClient(request); + const allAvailableSpaces = await pluginStartDeps.spaces.spacesService + .createSpacesClient(request) + .getAll({ purpose: 'any' }); - const logView = await logViewsClient.getLogView(defaultLogViewId); + const updated = await pMap( + allAvailableSpaces, + async (space) => { + const spaceScopedSavedObjectsClient = savedObjects.client.asScopedToNamespace(space.id); - if (!logView || logSourcesKibanaAdvancedSettingRT.is(logView.attributes.logIndices)) { + const logSourcesServicePromise = + pluginStartDeps.logsDataAccess.services.logSourcesServiceFactory.getLogSourcesService( + spaceScopedSavedObjectsClient + ); + const logViewsClient = pluginStart.logViews.getClient( + spaceScopedSavedObjectsClient, + elasticsearch.client.asCurrentUser, + logSourcesServicePromise + ); + + const logView = await logViewsClient.getLogView(defaultLogViewId); + + if (!logView || logSourcesKibanaAdvancedSettingRT.is(logView.attributes.logIndices)) { + return false; + } + + const indices = ( + await logViewsClient.getResolvedLogView({ + type: 'log-view-reference', + logViewId: defaultLogViewId, + }) + ).indices; + + const logSourcesService = await logSourcesServicePromise; + await logSourcesService.setLogSources([{ indexPattern: indices }]); + await logViewsClient.putLogView(defaultLogViewId, { + logIndices: { type: 'kibana_advanced_setting' }, + }); + + return true; + }, + { concurrency: CONCURRENT_SPACES_TO_CHECK } + ); + + if (!updated.includes(true)) { + // Only throw if none of the spaces was able to migrate return response.customError({ body: new Error( "Unable to migrate log view settings. A log view either doesn't exist or is already using the Kibana advanced setting." @@ -42,17 +81,6 @@ export const initMigrateLogViewSettingsRoute = ({ }); } - const indices = ( - await logViewsClient.getResolvedLogView({ - type: 'log-view-reference', - logViewId: defaultLogViewId, - }) - ).indices; - - await logSourcesService.setLogSources([{ indexPattern: indices }]); - await logViewsClient.putLogView(defaultLogViewId, { - logIndices: { type: 'kibana_advanced_setting' }, - }); return response.ok(); } catch (error) { throw error; diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/highlights.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/highlights.ts index e8019c58d6000..dedf3ced27f28 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/highlights.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/highlights.ts @@ -12,6 +12,7 @@ import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { schema } from '@kbn/config-schema'; +import { i18n } from '@kbn/i18n'; import { logEntriesV1 } from '../../../common/http_api'; import { throwErrors } from '../../../common/runtime_types'; @@ -33,6 +34,20 @@ export const initLogEntriesHighlightsRoute = ({ framework, logEntries }: LogsSha { version: '1', validate: { request: { body: escapeHatch } }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate( + 'xpack.logsShared.deprecations.postLogEntriesHighlightsRoute.message', + { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana.', + } + ), + reason: { type: 'deprecate' }, + }, + }, }, async (requestContext, request, response) => { const payload = pipe( diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary.ts index 2ac889ab9ffdf..68c9d5ea0e166 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary.ts @@ -12,6 +12,7 @@ import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { schema } from '@kbn/config-schema'; +import { i18n } from '@kbn/i18n'; import { logEntriesV1 } from '../../../common/http_api'; import { throwErrors } from '../../../common/runtime_types'; @@ -36,6 +37,20 @@ export const initLogEntriesSummaryRoute = ({ { version: '1', validate: { request: { body: escapeHatch } }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate( + 'xpack.logsShared.deprecations.postLogEntriesSummaryRoute.message', + { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana.', + } + ), + reason: { type: 'deprecate' }, + }, + }, }, async (requestContext, request, response) => { const payload = pipe( diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary_highlights.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary_highlights.ts index b4093f1d6543b..b8f030b91b715 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary_highlights.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary_highlights.ts @@ -12,6 +12,7 @@ import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { schema } from '@kbn/config-schema'; +import { i18n } from '@kbn/i18n'; import { logEntriesV1 } from '../../../common/http_api'; import { throwErrors } from '../../../common/runtime_types'; @@ -35,6 +36,20 @@ export const initLogEntriesSummaryHighlightsRoute = ({ { version: '1', validate: { request: { body: escapeHatch } }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate( + 'xpack.logsShared.deprecations.postLogEntriesSummaryHighlightsRoute.message', + { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana.', + } + ), + reason: { type: 'deprecate' }, + }, + }, }, async (requestContext, request, response) => { const payload = pipe( diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts index 9370c18243b51..16ca40ac2d6d8 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { i18n } from '@kbn/i18n'; import { logViewsV1 } from '../../../common/http_api'; import { LOG_VIEW_URL } from '../../../common/http_api/log_views'; import { createValidationFunction } from '../../../common/runtime_types'; @@ -30,6 +31,17 @@ export const initGetLogViewRoute = ({ params: createValidationFunction(logViewsV1.getLogViewRequestParamsRT), }, }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate('xpack.logsShared.deprecations.getLogViewRoute.message', { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not have any effect configuring upcoming versions of Kibana.', + }), + reason: { type: 'deprecate' }, + }, + }, }, async (_requestContext, request, response) => { const { logViewId } = request.params; diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/put_log_view.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/put_log_view.ts index 95e37bff52f87..c2ba33867d067 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/put_log_view.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/put_log_view.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { i18n } from '@kbn/i18n'; import { logViewsV1 } from '../../../common/http_api'; import { LOG_VIEW_URL } from '../../../common/http_api/log_views'; import { createValidationFunction } from '../../../common/runtime_types'; @@ -26,6 +27,17 @@ export const initPutLogViewRoute = ({ framework, getStartServices }: LogsSharedB body: createValidationFunction(logViewsV1.putLogViewRequestPayloadRT), }, }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate('xpack.logsShared.deprecations.putLogViewRoute.message', { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not have any effect configuring upcoming versions of Kibana.', + }), + reason: { type: 'deprecate' }, + }, + }, }, async (_requestContext, request, response) => { const { logViewId } = request.params; diff --git a/x-pack/plugins/observability_solution/logs_shared/server/services/log_entries/log_entries_service.ts b/x-pack/plugins/observability_solution/logs_shared/server/services/log_entries/log_entries_service.ts index 61810c47ff8d2..a1cfab1c24eb1 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/services/log_entries/log_entries_service.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/services/log_entries/log_entries_service.ts @@ -22,10 +22,20 @@ export class LogEntriesService { setupDeps: LogEntriesServiceSetupDeps ) { void core.getStartServices().then(([, startDeps, selfStartDeps]) => { + /** + * @deprecated + * + * Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana. + */ setupDeps.data.search.registerSearchStrategy( LOG_ENTRIES_SEARCH_STRATEGY, logEntriesSearchStrategyProvider({ ...setupDeps, ...startDeps, ...selfStartDeps }) ); + /** + * @deprecated + * + * Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana. + */ setupDeps.data.search.registerSearchStrategy( LOG_ENTRY_SEARCH_STRATEGY, logEntrySearchStrategyProvider({ ...setupDeps, ...startDeps, ...selfStartDeps }) diff --git a/x-pack/plugins/observability_solution/logs_shared/server/types.ts b/x-pack/plugins/observability_solution/logs_shared/server/types.ts index 73365ece21a14..770229ec035d8 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/types.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/types.ts @@ -12,6 +12,7 @@ import { } from '@kbn/data-plugin/server'; import { PluginStart as DataViewsPluginStart } from '@kbn/data-views-plugin/server'; import { LogsDataAccessPluginStart } from '@kbn/logs-data-access-plugin/server'; +import type { SpacesPluginStart } from '@kbn/spaces-plugin/server'; import { LogsSharedDomainLibs } from './lib/logs_shared_types'; import { LogViewsServiceSetup, LogViewsServiceStart } from './services/log_views/types'; @@ -38,6 +39,7 @@ export interface LogsSharedServerPluginStartDeps { data: DataPluginStart; dataViews: DataViewsPluginStart; logsDataAccess: LogsDataAccessPluginStart; + spaces: SpacesPluginStart; } export interface UsageCollector { diff --git a/x-pack/plugins/observability_solution/logs_shared/tsconfig.json b/x-pack/plugins/observability_solution/logs_shared/tsconfig.json index acaed5073a176..1892e6b4e2dca 100644 --- a/x-pack/plugins/observability_solution/logs_shared/tsconfig.json +++ b/x-pack/plugins/observability_solution/logs_shared/tsconfig.json @@ -8,9 +8,12 @@ "common/**/*", "public/**/*", "server/**/*", - "types/**/*" + "types/**/*", + "emotion.d.ts" + ], + "exclude": [ + "target/**/*" ], - "exclude": ["target/**/*"], "kbn_references": [ "@kbn/core", "@kbn/i18n", @@ -28,7 +31,6 @@ "@kbn/logging-mocks", "@kbn/kibana-react-plugin", "@kbn/test-subj-selector", - "@kbn/observability-shared-plugin", "@kbn/datemath", "@kbn/core-http-browser", "@kbn/ui-actions-plugin", @@ -51,5 +53,8 @@ "@kbn/field-formats-plugin", "@kbn/embeddable-plugin", "@kbn/saved-search-plugin", + "@kbn/spaces-plugin", + "@kbn/analytics", + "@kbn/usage-collection-plugin", ] } diff --git a/x-pack/plugins/observability_solution/metrics_data_access/server/routes/metric_indices/index.ts b/x-pack/plugins/observability_solution/metrics_data_access/server/routes/metric_indices/index.ts index ebd4ed1943f20..465a7fdf69f22 100644 --- a/x-pack/plugins/observability_solution/metrics_data_access/server/routes/metric_indices/index.ts +++ b/x-pack/plugins/observability_solution/metrics_data_access/server/routes/metric_indices/index.ts @@ -50,6 +50,12 @@ export function initMetricIndicesRoute<T extends RequestHandlerContext>({ router.get<unknown, unknown, MetricIndicesAPIResponse>( { path: `/api/metrics/indices`, + security: { + authz: { + enabled: false, + reason: 'This route is opted out from authorization', + }, + }, validate: false, }, async (context, _req, res) => { diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/feature_flags.md b/x-pack/plugins/observability_solution/observability/dev_docs/feature_flags.md deleted file mode 100644 index 56c0e46813827..0000000000000 --- a/x-pack/plugins/observability_solution/observability/dev_docs/feature_flags.md +++ /dev/null @@ -1,16 +0,0 @@ -## Feature flags and advanced settings - -To set up a flagged feature or other advanced setting, add the name of the feature key (`observability:myFeature`) to [common/ui_settings_keys.ts](../common/ui_settings_keys.ts) and the feature parameters to [server/ui_settings.ts](../server/ui_settings.ts). - -Test for the feature like: - -```js -import { myFeatureEnabled } from '../ui_settings_keys'; -if (core.uiSettings.get(myFeatureEnabled)) { - doStuff(); -} -``` - -In order for telemetry to be collected, the keys and types need to be added in [src/plugins/kibana_usage_collection/server/collectors/management/schema.ts](../../../../src/plugins/kibana_usage_collection/server/collectors/management/schema.ts) and [src/plugins/kibana_usage_collection/server/collectors/management/types.ts](../../../../src/plugins/kibana_usage_collection/server/collectors/management/types.ts). - -Settings can be managed in Kibana under Stack Management > Advanced Settings > Observability. diff --git a/x-pack/plugins/observability_solution/observability/jest.config.js b/x-pack/plugins/observability_solution/observability/jest.config.js deleted file mode 100644 index 77d49b80d8bf5..0000000000000 --- a/x-pack/plugins/observability_solution/observability/jest.config.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/observability'], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/observability/.storybook/jest_setup.js', - ], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/observability_solution/observability', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/observability/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/observability/public/index.ts b/x-pack/plugins/observability_solution/observability/public/index.ts deleted file mode 100644 index 6230f5411b543..0000000000000 --- a/x-pack/plugins/observability_solution/observability/public/index.ts +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -// TODO: https://github.com/elastic/kibana/issues/110905 -/* eslint-disable @kbn/eslint/no_export_all */ - -import { PluginInitializer, PluginInitializerContext } from '@kbn/core/public'; -import { lazy } from 'react'; -import { - Plugin, - ObservabilityPublicPluginsStart, - ObservabilityPublicPluginsSetup, - ObservabilityPublicStart, - ObservabilityPublicSetup, -} from './plugin'; -export type { - ObservabilityPublicSetup, - ObservabilityPublicStart, - ObservabilityPublicPluginsSetup, - ObservabilityPublicPluginsStart, -}; -export const plugin: PluginInitializer< - ObservabilityPublicSetup, - ObservabilityPublicStart, - ObservabilityPublicPluginsSetup, - ObservabilityPublicPluginsStart -> = (initializerContext: PluginInitializerContext) => { - return new Plugin(initializerContext); -}; - -export type { ConfigSchema } from './plugin'; - -export { - enableLegacyUptimeApp, - syntheticsThrottlingEnabled, - enableInspectEsQueries, - enableComparisonByDefault, - apmServiceGroupMaxNumberOfServices, - enableAgentExplorerView, - apmEnableTableSearchBar, -} from '../common/ui_settings_keys'; -export { - alertsLocatorID, - ruleDetailsLocatorID, - rulesLocatorID, - sloDetailsLocatorID, - sloEditLocatorID, - uptimeOverviewLocatorID, -} from '../common'; - -export type { RulesParams } from './locators/rules'; -export { getCoreVitalsComponent } from './pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy'; -export { ObservabilityAlertSearchBar } from './components/alert_search_bar/get_alert_search_bar_lazy'; -export { DatePicker } from './pages/overview/components/date_picker'; - -export const LazyAlertsFlyout = lazy(() => import('./components/alerts_flyout/alerts_flyout')); - -export * from './typings'; -import { TopAlert } from './typings/alerts'; -export type { TopAlert }; -import type { AlertDetailsAppSectionProps } from './pages/alert_details/types'; -export type { AlertDetailsAppSectionProps }; - -export { observabilityFeatureId, observabilityAppId } from '../common'; - -export { useFetchDataViews } from './hooks/use_fetch_data_views'; -export { useTimeBuckets } from './hooks/use_time_buckets'; -export { createUseRulesLink } from './hooks/create_use_rules_link'; -export { useSummaryTimeRange } from './hooks/use_summary_time_range'; - -export { getApmTraceUrl } from './utils/get_apm_trace_url'; -export { buildEsQuery } from './utils/build_es_query'; - -export type { - ObservabilityRuleTypeFormatter, - ObservabilityRuleTypeModel, - ObservabilityRuleTypeRegistry, -} from './rules/create_observability_rule_type_registry'; -export { createObservabilityRuleTypeRegistryMock } from './rules/observability_rule_type_registry_mock'; - -export { DatePickerContextProvider } from './context/date_picker_context/date_picker_context'; - -export { fromQuery, toQuery } from './utils/url'; -export { getAlertSummaryTimeRange } from './utils/alert_summary_widget'; -export { calculateTimeRangeBucketSize } from './pages/overview/helpers/calculate_bucket_size'; -export type { render } from './utils/test_helper'; - -export { convertTo } from '../common/utils/formatters/duration'; -export { formatAlertEvaluationValue } from './utils/format_alert_evaluation_value'; -export { - RuleFlyoutKueryBar, - AutocompleteField, - WithKueryAutocompletion, -} from './components/rule_kql_filter'; -export { useAnnotations } from './components/annotations/use_annotations'; -export { RuleConditionChart } from './components/rule_condition_chart'; -export { getGroupFilters } from '../common/custom_threshold_rule/helpers/get_group'; -export type { GenericAggType } from './components/rule_condition_chart/rule_condition_chart'; -export { Threshold } from './components/custom_threshold/components/threshold'; diff --git a/x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx b/x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx deleted file mode 100644 index 16184c5621594..0000000000000 --- a/x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { merge } from 'lodash'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { render as testLibRender } from '@testing-library/react'; -import { AppMountParameters } from '@kbn/core/public'; -import { coreMock } from '@kbn/core/public/mocks'; -import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; -import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; -import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; -import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; -import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; - -import { PluginContext } from '../context/plugin_context/plugin_context'; -import { createObservabilityRuleTypeRegistryMock } from '../rules/observability_rule_type_registry_mock'; -import { ConfigSchema } from '../plugin'; -import { Subset } from '../typings'; - -const appMountParameters = { setHeaderActionMenu: () => {} } as unknown as AppMountParameters; -const observabilityRuleTypeRegistry = createObservabilityRuleTypeRegistryMock(); - -export const core = coreMock.createStart(); -export const data = dataPluginMock.createStartContract(); - -const defaultConfig: ConfigSchema = { - unsafe: { - alertDetails: { - uptime: { enabled: false }, - }, - }, -}; - -const queryClient = new QueryClient({ - defaultOptions: { - queries: { - retry: false, - }, - }, - logger: { - log: console.log, - warn: console.warn, - error: () => {}, - }, -}); - -export const render = (component: React.ReactNode, config: Subset<ConfigSchema> = {}) => { - return testLibRender( - <IntlProvider locale="en-US"> - <KibanaContextProvider - services={{ - ...core, - data, - exploratoryView: { - createExploratoryViewUrl: jest.fn(), - getAppDataView: jest.fn(), - // eslint-disable-next-line @kbn/i18n/strings_should_be_translated_with_i18n - ExploratoryViewEmbeddable: () => <div>Embeddable exploratory view</div>, - }, - }} - > - <PluginContext.Provider - value={{ - appMountParameters, - config: merge(defaultConfig, config), - observabilityRuleTypeRegistry, - ObservabilityPageTemplate: KibanaPageTemplate, - }} - > - <QueryClientProvider client={queryClient}> - <EuiThemeProvider>{component}</EuiThemeProvider> - </QueryClientProvider> - </PluginContext.Provider> - </KibanaContextProvider> - </IntlProvider> - ); -}; diff --git a/x-pack/plugins/observability_solution/observability/server/index.ts b/x-pack/plugins/observability_solution/observability/server/index.ts deleted file mode 100644 index ace13ca5ed66a..0000000000000 --- a/x-pack/plugins/observability_solution/observability/server/index.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -// TODO: https://github.com/elastic/kibana/issues/110905 -/* eslint-disable @kbn/eslint/no_export_all */ - -import { offeringBasedSchema, schema, TypeOf } from '@kbn/config-schema'; -import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; -import { DEFAULT_ANNOTATION_INDEX } from '../common/annotations'; -import type { ObservabilityPluginSetup } from './plugin'; -import { createOrUpdateIndex, Mappings } from './utils/create_or_update_index'; -import { createOrUpdateIndexTemplate } from './utils/create_or_update_index_template'; -import { ScopedAnnotationsClient } from './lib/annotations/bootstrap_annotations'; -import { CustomThresholdLocators } from './lib/rules/custom_threshold/custom_threshold_executor'; -import { - unwrapEsResponse, - WrappedElasticsearchClientError, -} from '../common/utils/unwrap_es_response'; - -export { - rangeQuery, - kqlQuery, - termQuery, - termsQuery, - wildcardQuery, - existsQuery, -} from './utils/queries'; -export { getParsedFilterQuery } from './utils/get_parsed_filtered_query'; -export { getInspectResponse } from '../common/utils/get_inspect_response'; - -export * from './types'; - -const configSchema = schema.object({ - annotations: schema.object({ - enabled: schema.boolean({ defaultValue: true }), - index: schema.string({ defaultValue: DEFAULT_ANNOTATION_INDEX }), - }), - unsafe: schema.object({ - alertDetails: schema.object({ - metrics: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - logs: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - uptime: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - observability: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - }), - thresholdRule: schema.object({ - enabled: offeringBasedSchema({ - serverless: schema.boolean({ defaultValue: false }), - traditional: schema.boolean({ defaultValue: false }), - }), - }), - ruleFormV2: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - }), - customThresholdRule: schema.object({ - groupByPageSize: schema.number({ defaultValue: 10_000 }), - }), - enabled: schema.boolean({ defaultValue: true }), - createO11yGenericFeatureId: schema.boolean({ defaultValue: false }), -}); - -export const config: PluginConfigDescriptor = { - exposeToBrowser: { - unsafe: true, - aiAssistant: { - enabled: true, - feedback: { - enabled: true, - }, - }, - }, - schema: configSchema, - deprecations: ({ unused }) => [ - unused('unsafe.thresholdRule.enabled', { level: 'warning' }), - unused('unsafe.alertDetails.logs.enabled', { level: 'warning' }), - unused('unsafe.alertDetails.metrics.enabled', { level: 'warning' }), - unused('unsafe.alertDetails.observability.enabled', { level: 'warning' }), - ], -}; - -export type ObservabilityConfig = TypeOf<typeof configSchema>; - -export const plugin = async (initContext: PluginInitializerContext) => { - const { ObservabilityPlugin } = await import('./plugin'); - return new ObservabilityPlugin(initContext); -}; - -export type { - Mappings, - ObservabilityPluginSetup, - ScopedAnnotationsClient, - CustomThresholdLocators, -}; -export { - createOrUpdateIndex, - createOrUpdateIndexTemplate, - unwrapEsResponse, - WrappedElasticsearchClientError, -}; - -export { uiSettings } from './ui_settings'; diff --git a/x-pack/plugins/observability_solution/observability/server/routes/rules/route.ts b/x-pack/plugins/observability_solution/observability/server/routes/rules/route.ts deleted file mode 100644 index 909b11cb713a9..0000000000000 --- a/x-pack/plugins/observability_solution/observability/server/routes/rules/route.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Dataset } from '@kbn/rule-registry-plugin/server'; -import { createObservabilityServerRoute } from '../create_observability_server_route'; - -const alertsDynamicIndexPatternRoute = createObservabilityServerRoute({ - endpoint: 'GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31', - options: { - tags: [], - access: 'public', - }, - params: t.type({ - query: t.type({ - registrationContexts: t.array(t.string), - namespace: t.string, - }), - }), - handler: async ({ dependencies, params }) => { - const { namespace, registrationContexts } = params.query; - const { ruleDataService } = dependencies; - const indexNames = registrationContexts.flatMap((registrationContext) => { - const indexName = ruleDataService - .findIndexByName(registrationContext, Dataset.alerts) - ?.getPrimaryAlias(namespace); - - if (indexName != null) { - return [indexName]; - } else { - return []; - } - }); - - return indexNames; - }, -}); - -export const rulesRouteRepository = alertsDynamicIndexPatternRoute; diff --git a/x-pack/plugins/observability_solution/observability/tsconfig.json b/x-pack/plugins/observability_solution/observability/tsconfig.json deleted file mode 100644 index 1d88901626da2..0000000000000 --- a/x-pack/plugins/observability_solution/observability/tsconfig.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "public/**/*.json", - "server/**/*", - "typings/**/*", - "../../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/rule-data-utils", - "@kbn/triggers-actions-ui-plugin", - "@kbn/i18n", - "@kbn/deeplinks-observability", - "@kbn/es-query", - "@kbn/observability-get-padded-alert-time-range-util", - "@kbn/share-plugin", - "@kbn/data-plugin", - "@kbn/alerting-comparators", - "@kbn/guided-onboarding", - "@kbn/rison", - "@kbn/kibana-utils-plugin", - "@kbn/spaces-plugin", - "@kbn/utility-types", - "@kbn/core-http-server", - "@kbn/core", - "@kbn/inspector-plugin", - "@kbn/shared-ux-page-kibana-template", - "@kbn/observability-ai-assistant-plugin", - "@kbn/shared-ux-router", - "@kbn/kibana-react-plugin", - "@kbn/react-kibana-context-render", - "@kbn/observability-shared-plugin", - "@kbn/react-kibana-context-theme", - "@kbn/shared-ux-link-redirect-app", - "@kbn/usage-collection-plugin", - "@kbn/cases-components", - "@kbn/cases-plugin", - "@kbn/stack-alerts-plugin", - "@kbn/core-ui-settings-browser-mocks", - "@kbn/alerts-ui-shared", - "@kbn/core-notifications-browser", - "@kbn/core-ui-settings-browser", - "@kbn/rule-registry-plugin", - "@kbn/alerts-grouping", - "@kbn/grouping", - "@kbn/data-views-plugin", - "@kbn/core-http-browser", - "@kbn/visualization-ui-components", - "@kbn/event-annotation-components", - "@kbn/slo-schema", - "@kbn/event-annotation-common", - "@kbn/react-kibana-mount", - "@kbn/i18n-react", - "@kbn/expression-metric-vis-plugin", - "@kbn/charts-plugin", - "@kbn/alerting-plugin", - "@kbn/aiops-log-rate-analysis", - "@kbn/aiops-plugin", - "@kbn/field-types", - "@kbn/test-jest-helpers", - "@kbn/discover-plugin", - "@kbn/embeddable-plugin", - "@kbn/lens-plugin", - "@kbn/ui-actions-plugin", - "@kbn/unified-search-plugin", - "@kbn/lens-embeddable-utils", - "@kbn/std", - "@kbn/actions-plugin", - "@kbn/licensing-plugin", - "@kbn/core-chrome-browser", - "@kbn/navigation-plugin", - "@kbn/observability-alert-details", - "@kbn/investigation-shared", - "@kbn/observability-alerting-rule-utils", - "@kbn/ui-theme", - "@kbn/core-application-common", - "@kbn/securitysolution-ecs", - "@kbn/alerts-as-data-utils", - "@kbn/datemath", - "@kbn/logs-shared-plugin", - "@kbn/exploratory-view-plugin", - "@kbn/core-capabilities-common", - "@kbn/content-management-plugin", - "@kbn/cloud-plugin", - "@kbn/data-view-editor-plugin", - "@kbn/field-formats-plugin", - "@kbn/home-plugin", - "@kbn/data-view-field-editor-plugin", - "@kbn/guided-onboarding-plugin", - "@kbn/investigate-plugin", - "@kbn/license-management-plugin", - "@kbn/presentation-util-plugin", - "@kbn/security-plugin", - "@kbn/serverless", - "@kbn/core-application-browser", - "@kbn/core-theme-browser", - "@kbn/config-schema", - "@kbn/securitysolution-io-ts-utils", - "@kbn/core-elasticsearch-server", - "@kbn/logging", - "@kbn/safer-lodash-set", - "@kbn/features-plugin", - "@kbn/files-plugin", - "@kbn/server-route-repository", - "@kbn/io-ts-utils", - "@kbn/core-ui-settings-server-mocks", - "@kbn/es-types", - "@kbn/logging-mocks", - "@kbn/response-ops-rule-form", - "@kbn/streams-plugin" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/jest.config.js b/x-pack/plugins/observability_solution/observability_ai_assistant/jest.config.js deleted file mode 100644 index b684a6126e537..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/jest.config.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/public', - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/common', - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/server', - ], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/jest_setup.js', - ], - collectCoverage: true, - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/{common,public,server}/**/*.{js,ts,tsx}', - ], - - coverageReporters: ['html'], -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.stories.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.stories.tsx deleted file mode 100644 index 3d1d770488491..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.stories.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { ComponentStory } from '@storybook/react'; - -import { AssistantAvatar as Component, AssistantAvatarProps } from './assistant_avatar'; - -export default { - component: Component, - title: 'app/Atoms/AssistantAvatar', - argTypes: { - size: { - options: ['xs', 's', 'm', 'l', 'xl'], - control: { type: 'radio' }, - }, - }, -}; - -const Template: ComponentStory<typeof Component> = (props: AssistantAvatarProps) => ( - <Component {...props} /> -); - -const defaultProps = { - size: 'm' as const, -}; - -export const AssistantAvatar = Template.bind({}); -AssistantAvatar.args = defaultProps; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx deleted file mode 100644 index 1ad8cd4d476c3..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { useEuiTheme } from '@elastic/eui'; -import React, { ReactNode } from 'react'; - -export interface AssistantAvatarProps { - size?: keyof typeof sizeMap; - children?: ReactNode; - css?: React.SVGProps<SVGElement>['css']; - className?: string; -} - -export const sizeMap = { - xl: 64, - l: 48, - m: 32, - s: 24, - xs: 16, -}; - -export function AssistantAvatar({ size = 's', css, className }: AssistantAvatarProps) { - const { euiTheme } = useEuiTheme(); - const sizePx = sizeMap[size]; - - return ( - <svg - xmlns="http://www.w3.org/2000/svg" - width={sizePx} - height={sizePx} - viewBox="0 0 64 64" - fill="none" - css={css} - className={className} - > - <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> - <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> - <path - fill={euiTheme.colors.textParagraph} - d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" - /> - <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> - </svg> - ); -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/index.ts deleted file mode 100644 index ce4c8e59fbae2..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/index.ts +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import dedent from 'dedent'; -import { CONTEXT_FUNCTION_NAME, registerContextFunction } from './context'; -import { registerSummarizationFunction, SUMMARIZE_FUNCTION_NAME } from './summarize'; -import type { RegistrationCallback } from '../service/types'; -import { registerElasticsearchFunction } from './elasticsearch'; -import { GET_DATASET_INFO_FUNCTION_NAME, registerGetDatasetInfoFunction } from './get_dataset_info'; -import { registerKibanaFunction } from './kibana'; -import { registerExecuteConnectorFunction } from './execute_connector'; -import { GET_DATA_ON_SCREEN_FUNCTION_NAME } from '../service/chat_function_client'; - -// cannot be imported from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts due to circular dependency -export const QUERY_FUNCTION_NAME = 'query'; - -export type FunctionRegistrationParameters = Omit< - Parameters<RegistrationCallback>[0], - 'registerContext' | 'hasFunction' ->; - -export const registerFunctions: RegistrationCallback = async ({ - client, - functions, - resources, - signal, - scopes, -}) => { - const registrationParameters: FunctionRegistrationParameters = { - client, - functions, - resources, - signal, - scopes, - }; - - const isServerless = !!resources.plugins.serverless; - if (scopes.includes('observability')) { - functions.registerInstruction(`You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems. You can help them visualise and analyze data, investigate their systems, perform root cause analysis or identify optimisation opportunities. - - It's very important to not assume what the user is meaning. Ask them for clarification if needed. - - If you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation. - - In KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: ':()\\\ - /\". Always put a field value in double quotes. Best: service.name:\"opbeans-go\". Wrong: service.name:opbeans-go. This is very important! - - You can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response. - - Note that ES|QL (the Elasticsearch Query Language which is a new piped language) is the preferred query language. - - If you want to call a function or tool, only call it a single time per message. Wait until the function has been executed and its results - returned to you, before executing the same tool or another tool again if needed. - - DO NOT UNDER ANY CIRCUMSTANCES USE ES|QL syntax (\`service.name == "foo"\`) with "kqlFilter" (\`service.name:"foo"\`). - - The user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability and Search, which can be found in the ${ - isServerless ? `Project settings.` : `Stack Management app under the option AI Assistants` - }. - If the user asks how to change the language, reply in the same language the user asked in.`); - } - - if (scopes.length === 0 || (scopes.length === 1 && scopes[0] === 'all')) { - functions.registerInstruction( - `You are a helpful assistant for Elasticsearch. Your goal is to help Elasticsearch users accomplish tasks using Kibana and Elasticsearch. You can help them construct queries, index data, search data, use Elasticsearch APIs, generate sample data, visualise and analyze data. - - It's very important to not assume what the user means. Ask them for clarification if needed. - - If you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation. - - In KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: ':()\\\ - /\". Always put a field value in double quotes. Best: service.name:\"opbeans-go\". Wrong: service.name:opbeans-go. This is very important! - - You can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response. - - If you want to call a function or tool, only call it a single time per message. Wait until the function has been executed and its results - returned to you, before executing the same tool or another tool again if needed. - - The user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability and Search, which can be found in the ${ - isServerless ? `Project settings.` : `Stack Management app under the option AI Assistants` - }. - If the user asks how to change the language, reply in the same language the user asked in.` - ); - } - - const { ready: isKnowledgeBaseReady } = await client.getKnowledgeBaseStatus(); - - functions.registerInstruction(({ availableFunctionNames }) => { - const instructions: string[] = []; - - if ( - availableFunctionNames.includes(QUERY_FUNCTION_NAME) && - availableFunctionNames.includes(GET_DATASET_INFO_FUNCTION_NAME) - ) { - instructions.push(`You MUST use the "${GET_DATASET_INFO_FUNCTION_NAME}" ${ - functions.hasFunction('get_apm_dataset_info') ? 'or the get_apm_dataset_info' : '' - } function before calling the "${QUERY_FUNCTION_NAME}" or the "changes" functions. - - If a function requires an index, you MUST use the results from the dataset info functions.`); - } - - if (availableFunctionNames.includes(GET_DATA_ON_SCREEN_FUNCTION_NAME)) { - instructions.push(`You have access to data on the screen by calling the "${GET_DATA_ON_SCREEN_FUNCTION_NAME}" function. - Use it to help the user understand what they are looking at. A short summary of what they are looking at is available in the return of the "${CONTEXT_FUNCTION_NAME}" function. - Data that is compact enough automatically gets included in the response for the "${CONTEXT_FUNCTION_NAME}" function.`); - } - - if (isKnowledgeBaseReady) { - if (availableFunctionNames.includes(SUMMARIZE_FUNCTION_NAME)) { - instructions.push(`You can use the "${SUMMARIZE_FUNCTION_NAME}" function to store new information you have learned in a knowledge database. - Only use this function when the user asks for it. - All summaries MUST be created in English, even if the conversation was carried out in a different language.`); - } - - if (availableFunctionNames.includes(CONTEXT_FUNCTION_NAME)) { - instructions.push( - `Additionally, you can use the "${CONTEXT_FUNCTION_NAME}" function to retrieve relevant information from the knowledge database.` - ); - } - } else { - instructions.push( - `You do not have a working memory. If the user expects you to remember the previous conversations, tell them they can set up the knowledge base.` - ); - } - return instructions.map((instruction) => dedent(instruction)); - }); - - if (isKnowledgeBaseReady) { - registerSummarizationFunction(registrationParameters); - } - - registerContextFunction({ ...registrationParameters, isKnowledgeBaseReady }); - - registerElasticsearchFunction(registrationParameters); - const request = registrationParameters.resources.request; - - if ('id' in request) { - registerKibanaFunction({ - ...registrationParameters, - resources: { - ...registrationParameters.resources, - request, - }, - }); - } - registerGetDatasetInfoFunction(registrationParameters); - - registerExecuteConnectorFunction(registrationParameters); -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/index.ts deleted file mode 100644 index 0ad41969cedc2..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/index.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; - -import type { ObservabilityAIAssistantConfig } from './config'; - -export type { ObservabilityAIAssistantServerRouteRepository } from './routes/get_global_observability_ai_assistant_route_repository'; - -import { config as configSchema } from './config'; -export type { RegistrationCallback } from './service/types'; -export type { - ObservabilityAIAssistantServerStart, - ObservabilityAIAssistantServerSetup, -} from './types'; - -export { - aiAssistantLogsIndexPattern, - aiAssistantSimulatedFunctionCalling, - aiAssistantSearchConnectorIndexPattern, -} from '../common'; - -export { streamIntoObservable } from './service/util/stream_into_observable'; - -export const config: PluginConfigDescriptor<ObservabilityAIAssistantConfig> = { - deprecations: ({ unusedFromRoot }) => [ - unusedFromRoot('xpack.observability.aiAssistant.enabled', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.deploymentId', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.resourceName', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.apiKey', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.openAI.apiKey', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.openAI.model', { - level: 'warning', - }), - ], - exposeToBrowser: { scope: true }, - schema: configSchema, -}; - -export const plugin = async (ctx: PluginInitializerContext<ObservabilityAIAssistantConfig>) => { - const { ObservabilityAIAssistantPlugin } = await import('./plugin'); - return new ObservabilityAIAssistantPlugin(ctx); -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts deleted file mode 100644 index 4ff94393bc525..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import pLimit from 'p-limit'; -import { notImplemented } from '@hapi/boom'; -import { nonEmptyStringRt, toBooleanRt } from '@kbn/io-ts-utils'; -import * as t from 'io-ts'; -import { - InferenceInferenceEndpointInfo, - MlDeploymentAllocationState, - MlDeploymentState, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import moment from 'moment'; -import { createObservabilityAIAssistantServerRoute } from '../create_observability_ai_assistant_server_route'; -import { Instruction, KnowledgeBaseEntry, KnowledgeBaseEntryRole } from '../../../common/types'; - -const getKnowledgeBaseStatus = createObservabilityAIAssistantServerRoute({ - endpoint: 'GET /internal/observability_ai_assistant/kb/status', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async ({ - service, - request, - }): Promise<{ - errorMessage?: string; - ready: boolean; - enabled: boolean; - endpoint?: Partial<InferenceInferenceEndpointInfo>; - model_stats?: { - deployment_state: MlDeploymentState | undefined; - allocation_state: MlDeploymentAllocationState | undefined; - }; - }> => { - const client = await service.getClient({ request }); - - if (!client) { - throw notImplemented(); - } - - return client.getKnowledgeBaseStatus(); - }, -}); - -const setupKnowledgeBase = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/setup', - params: t.partial({ - query: t.partial({ - model_id: t.string, - }), - }), - options: { - timeout: { - idleSocket: moment.duration(20, 'minutes').asMilliseconds(), - }, - }, - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<InferenceInferenceEndpointInfo> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const { model_id: modelId } = resources.params?.query ?? {}; - - return await client.setupKnowledgeBase(modelId); - }, -}); - -const resetKnowledgeBase = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/reset', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<{ result: string }> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - await client.resetKnowledgeBase(); - - return { result: 'success' }; - }, -}); - -const semanticTextMigrationKnowledgeBase = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/semantic_text_migration', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - return client.migrateKnowledgeBaseToSemanticText(); - }, -}); - -const getKnowledgeBaseUserInstructions = createObservabilityAIAssistantServerRoute({ - endpoint: 'GET /internal/observability_ai_assistant/kb/user_instructions', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async ( - resources - ): Promise<{ - userInstructions: Array<Instruction & { public?: boolean }>; - }> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - return { - userInstructions: await client.getKnowledgeBaseUserInstructions(), - }; - }, -}); - -const saveKnowledgeBaseUserInstruction = createObservabilityAIAssistantServerRoute({ - endpoint: 'PUT /internal/observability_ai_assistant/kb/user_instructions', - params: t.type({ - body: t.type({ - id: t.string, - text: t.string, - public: toBooleanRt, - }), - }), - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const { id, text, public: isPublic } = resources.params.body; - return client.addUserInstruction({ - entry: { id, text, public: isPublic }, - }); - }, -}); - -const getKnowledgeBaseEntries = createObservabilityAIAssistantServerRoute({ - endpoint: 'GET /internal/observability_ai_assistant/kb/entries', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - params: t.type({ - query: t.type({ - query: t.string, - sortBy: t.string, - sortDirection: t.union([t.literal('asc'), t.literal('desc')]), - }), - }), - handler: async ( - resources - ): Promise<{ - entries: KnowledgeBaseEntry[]; - }> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const { query, sortBy, sortDirection } = resources.params.query; - - return await client.getKnowledgeBaseEntries({ query, sortBy, sortDirection }); - }, -}); - -const knowledgeBaseEntryRt = t.intersection([ - t.type({ - id: t.string, - title: t.string, - text: nonEmptyStringRt, - }), - t.partial({ - confidence: t.union([t.literal('low'), t.literal('medium'), t.literal('high')]), - is_correction: toBooleanRt, - public: toBooleanRt, - labels: t.record(t.string, t.string), - role: t.union([ - t.literal(KnowledgeBaseEntryRole.AssistantSummarization), - t.literal(KnowledgeBaseEntryRole.UserEntry), - t.literal(KnowledgeBaseEntryRole.Elastic), - ]), - }), -]); - -const saveKnowledgeBaseEntry = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/entries/save', - params: t.type({ - body: knowledgeBaseEntryRt, - }), - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const entry = resources.params.body; - return client.addKnowledgeBaseEntry({ - entry: { - confidence: 'high', - is_correction: false, - public: true, - labels: {}, - role: KnowledgeBaseEntryRole.UserEntry, - ...entry, - }, - }); - }, -}); - -const deleteKnowledgeBaseEntry = createObservabilityAIAssistantServerRoute({ - endpoint: 'DELETE /internal/observability_ai_assistant/kb/entries/{entryId}', - params: t.type({ - path: t.type({ - entryId: t.string, - }), - }), - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - return client.deleteKnowledgeBaseEntry(resources.params.path.entryId); - }, -}); - -const importKnowledgeBaseEntries = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/entries/import', - params: t.type({ - body: t.type({ - entries: t.array(knowledgeBaseEntryRt), - }), - }), - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const { ready } = await client.getKnowledgeBaseStatus(); - if (!ready) { - throw new Error('Knowledge base is not ready'); - } - - const limiter = pLimit(5); - - const promises = resources.params.body.entries.map(async (entry) => { - return limiter(async () => { - return client.addKnowledgeBaseEntry({ - entry: { - confidence: 'high', - is_correction: false, - public: true, - labels: {}, - role: KnowledgeBaseEntryRole.UserEntry, - ...entry, - }, - }); - }); - }); - - await Promise.all(promises); - }, -}); - -export const knowledgeBaseRoutes = { - ...semanticTextMigrationKnowledgeBase, - ...setupKnowledgeBase, - ...resetKnowledgeBase, - ...getKnowledgeBaseStatus, - ...getKnowledgeBaseEntries, - ...saveKnowledgeBaseUserInstruction, - ...importKnowledgeBaseEntries, - ...getKnowledgeBaseUserInstructions, - ...saveKnowledgeBaseEntry, - ...deleteKnowledgeBaseEntry, -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts deleted file mode 100644 index 89e7aa4cbb4de..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts +++ /dev/null @@ -1,1684 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { ActionsClient } from '@kbn/actions-plugin/server/actions_client'; -import type { CoreSetup, ElasticsearchClient, IUiSettingsClient, Logger } from '@kbn/core/server'; -import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; -import { waitFor } from '@testing-library/react'; -import { last, merge, repeat } from 'lodash'; -import { Subject, Observable } from 'rxjs'; -import { EventEmitter, type Readable } from 'stream'; -import { finished } from 'stream/promises'; -import type { InferenceClient } from '@kbn/inference-plugin/server'; -import { ChatCompletionEventType as InferenceChatCompletionEventType } from '@kbn/inference-common'; -import { ObservabilityAIAssistantClient } from '.'; -import { MessageRole, type Message } from '../../../common'; -import { - ChatCompletionChunkEvent, - MessageAddEvent, - StreamingChatResponseEventType, -} from '../../../common/conversation_complete'; -import { createFunctionResponseMessage } from '../../../common/utils/create_function_response_message'; -import { CONTEXT_FUNCTION_NAME } from '../../functions/context'; -import { ChatFunctionClient } from '../chat_function_client'; -import type { KnowledgeBaseService } from '../knowledge_base_service'; -import { observableIntoStream } from '../util/observable_into_stream'; -import type { ObservabilityAIAssistantConfig } from '../../config'; -import type { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; - -interface ChunkDelta { - content?: string | undefined; - function_call?: - | { - name?: string | undefined; - arguments?: string | undefined; - } - | undefined; -} - -type LlmSimulator = ReturnType<typeof createLlmSimulator>; - -const EXPECTED_STORED_SYSTEM_MESSAGE = `system`; - -const nextTick = () => { - return new Promise(process.nextTick); -}; - -const waitForNextWrite = async (stream: Readable): Promise<any> => { - // this will fire before the client's internal write() promise is - // resolved - const response = await new Promise((resolve) => stream.once('data', resolve)); - // so we wait another tick to let the client move to the next step - await nextTick(); - - return response; -}; - -function createLlmSimulator(subscriber: any) { - return { - next: async (msg: ChunkDelta) => { - subscriber.next({ - type: InferenceChatCompletionEventType.ChatCompletionMessage, - content: msg.content, - toolCalls: msg.function_call ? [{ function: msg.function_call }] : [], - }); - }, - tokenCount: async ({ - completion, - prompt, - total, - }: { - completion: number; - prompt: number; - total: number; - }) => { - subscriber.next({ - type: InferenceChatCompletionEventType.ChatCompletionTokenCount, - tokens: { completion, prompt, total }, - }); - subscriber.complete(); - }, - chunk: async (msg: ChunkDelta) => { - subscriber.next({ - type: InferenceChatCompletionEventType.ChatCompletionChunk, - content: msg.content, - tool_calls: msg.function_call ? [{ function: msg.function_call }] : [], - }); - }, - complete: async () => { - subscriber.complete(); - }, - error: (error: Error) => { - subscriber.error(error); - }, - }; -} - -describe('Observability AI Assistant client', () => { - let client: ObservabilityAIAssistantClient; - - const actionsClientMock: DeeplyMockedKeys<ActionsClient> = { - execute: jest.fn(), - get: jest.fn(), - } as any; - - const inferenceClientMock: DeeplyMockedKeys<InferenceClient> = { - chatComplete: jest.fn(), - } as any; - - const uiSettingsClientMock: DeeplyMockedKeys<IUiSettingsClient> = { - get: jest.fn(), - } as any; - - const internalUserEsClientMock: DeeplyMockedKeys<ElasticsearchClient> = { - search: jest.fn(), - index: jest.fn(), - update: jest.fn(), - } as any; - - const currentUserEsClientMock: DeeplyMockedKeys<ElasticsearchClient> = { - search: jest.fn(), - fieldCaps: jest.fn(), - } as any; - - const knowledgeBaseServiceMock: DeeplyMockedKeys<KnowledgeBaseService> = { - recall: jest.fn(), - getUserInstructions: jest.fn(), - } as any; - - let loggerMock: DeeplyMockedKeys<Logger> = {} as any; - - const functionClientMock: DeeplyMockedKeys<ChatFunctionClient> = { - executeFunction: jest.fn(), - getFunctions: jest.fn(), - hasFunction: jest.fn(), - hasAction: jest.fn(), - getActions: jest.fn(), - validate: jest.fn(), - getInstructions: jest.fn(), - getAdhocInstructions: jest.fn(), - } as any; - - let llmSimulator: LlmSimulator; - - function createClient() { - jest.resetAllMocks(); - - // uncomment this line for debugging - // const consoleOrPassThrough = console.log.bind(console); - const consoleOrPassThrough = () => {}; - - loggerMock = { - log: jest.fn().mockImplementation(consoleOrPassThrough), - error: jest.fn().mockImplementation(consoleOrPassThrough), - debug: jest.fn().mockImplementation(consoleOrPassThrough), - trace: jest.fn().mockImplementation(consoleOrPassThrough), - isLevelEnabled: jest.fn().mockReturnValue(true), - } as any; - - functionClientMock.getFunctions.mockReturnValue([]); - functionClientMock.hasFunction.mockImplementation((name) => { - return name !== CONTEXT_FUNCTION_NAME; - }); - - functionClientMock.hasAction.mockReturnValue(false); - functionClientMock.getActions.mockReturnValue([]); - - currentUserEsClientMock.search.mockResolvedValue({ - hits: { - hits: [], - }, - } as any); - - currentUserEsClientMock.fieldCaps.mockResolvedValue({ - fields: [], - } as any); - - knowledgeBaseServiceMock.getUserInstructions.mockResolvedValue([]); - - functionClientMock.getInstructions.mockReturnValue(['system']); - functionClientMock.getAdhocInstructions.mockReturnValue([]); - - return new ObservabilityAIAssistantClient({ - config: {} as ObservabilityAIAssistantConfig, - core: {} as CoreSetup<ObservabilityAIAssistantPluginStartDependencies>, - actionsClient: actionsClientMock, - uiSettingsClient: uiSettingsClientMock, - esClient: { - asInternalUser: internalUserEsClientMock, - asCurrentUser: currentUserEsClientMock, - }, - inferenceClient: inferenceClientMock, - knowledgeBaseService: knowledgeBaseServiceMock, - logger: loggerMock, - namespace: 'default', - user: { - name: 'johndoe', - }, - scopes: ['all'], - }); - } - - function system(content: string | Omit<Message['message'], 'role'>): Message { - return merge( - { - '@timestamp': new Date().toString(), - message: { - role: MessageRole.System, - }, - }, - typeof content === 'string' ? { message: { content } } : content - ); - } - - function user(content: string | Omit<Message['message'], 'role'>): Message { - return merge( - { - '@timestamp': new Date().toString(), - message: { - role: MessageRole.User, - }, - }, - typeof content === 'string' ? { message: { content } } : content - ); - } - - beforeEach(() => { - jest.clearAllMocks(); - }); - - describe('when completing a conversation without an initial conversation id', () => { - let stream: Readable; - - let titleLlmPromiseResolve: (title: string) => void; - let titleLlmPromiseReject: Function; - - beforeEach(async () => { - client = createClient(); - - inferenceClientMock.chatComplete - .mockImplementationOnce(() => { - return new Observable((subscriber) => { - titleLlmPromiseResolve = (title: string) => { - const titleLlmSimulator = createLlmSimulator(subscriber); - titleLlmSimulator - .chunk({ content: title }) - .then(() => titleLlmSimulator.next({ content: title })) - .then(() => titleLlmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 })) - .then(() => titleLlmSimulator.complete()) - .catch((error) => titleLlmSimulator.error(error)); - }; - titleLlmPromiseReject = (error: Error) => { - subscriber.error(error); - }; - }); - }) - .mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - stream = observableIntoStream( - client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - persist: true, - }) - ); - }); - - describe('when streaming the response from the LLM', () => { - let dataHandler: jest.Mock; - - beforeEach(async () => { - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await llmSimulator.chunk({ content: 'Hello' }); - await llmSimulator.next({ content: 'Hello' }); - - await nextTick(); - }); - - it('calls the llm to generate a new title', () => { - expect(inferenceClientMock.chatComplete.mock.calls[0]).toEqual([ - expect.objectContaining({ - connectorId: 'foo', - stream: true, - functionCalling: 'native', - toolChoice: expect.objectContaining({ - function: 'title_conversation', - }), - tools: expect.objectContaining({ - title_conversation: { - description: - 'Use this function to title the conversation. Do not wrap the title in quotes', - schema: { - type: 'object', - properties: { - title: { type: 'string' }, - }, - required: ['title'], - }, - }, - }), - messages: expect.arrayContaining([ - { - role: 'user', - content: - 'Generate a title, using the title_conversation_function, based on the following conversation:\n\n user: How many alerts do I have?', - }, - ]), - }), - ]); - }); - - it('calls the llm again with the messages', () => { - expect(inferenceClientMock.chatComplete.mock.calls[1]).toEqual([ - { - connectorId: 'foo', - stream: true, - messages: expect.arrayContaining([ - { role: 'user', content: 'How many alerts do I have?' }, - ]), - functionCalling: 'native', - toolChoice: 'auto', - tools: {}, - }, - ]); - }); - - it('incrementally streams the response to the client', async () => { - expect(dataHandler).toHaveBeenCalledTimes(2); - - await new Promise((resolve) => setTimeout(resolve, 1000)); - - expect(JSON.parse(dataHandler.mock.calls[0])).toEqual({ - id: expect.any(String), - message: { - content: 'Hello', - }, - type: StreamingChatResponseEventType.ChatCompletionChunk, - }); - }); - - describe('after the LLM errors out', () => { - beforeEach(async () => { - await llmSimulator.next({ content: ' again' }); - - llmSimulator.error(new Error('Unexpected error')); - - await finished(stream); - }); - - it('adds an error to the stream and closes it', () => { - expect(dataHandler).toHaveBeenCalledTimes(4); - - expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ - error: { - message: 'Unexpected error', - stack: expect.any(String), - }, - type: StreamingChatResponseEventType.ChatCompletionError, - }); - }); - }); - - describe('when generating a title fails', () => { - beforeEach(async () => { - titleLlmPromiseReject(new Error('Failed generating title')); - - await nextTick(); - await llmSimulator.tokenCount({ completion: 1, prompt: 33, total: 34 }); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('falls back to the default title', () => { - expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ - conversation: { - title: 'New conversation', - id: expect.any(String), - last_updated: expect.any(String), - token_count: { - completion: 1, - prompt: 33, - total: 34, - }, - }, - type: StreamingChatResponseEventType.ConversationCreate, - }); - - expect(loggerMock.error).toHaveBeenCalled(); - }); - }); - - describe('after completing the response from the LLM', () => { - beforeEach(async () => { - await llmSimulator.chunk({ content: ' again' }); - - titleLlmPromiseResolve('An auto-generated title'); - await llmSimulator.tokenCount({ completion: 6, prompt: 210, total: 216 }); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('adds the completed message to the stream', () => { - expect(JSON.parse(dataHandler.mock.calls[2])).toEqual({ - id: expect.any(String), - message: { - content: ' again', - }, - type: StreamingChatResponseEventType.ChatCompletionChunk, - }); - - expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: 'Hello again', - role: MessageRole.Assistant, - function_call: { - arguments: '', - name: '', - trigger: MessageRole.Assistant, - }, - }, - }, - type: StreamingChatResponseEventType.MessageAdd, - }); - }); - - it('creates a new conversation with the automatically generated title', () => { - expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ - conversation: { - title: 'An auto-generated title', - id: expect.any(String), - last_updated: expect.any(String), - token_count: { - completion: 6, - prompt: 210, - total: 216, - }, - }, - type: StreamingChatResponseEventType.ConversationCreate, - }); - - expect(internalUserEsClientMock.index).toHaveBeenCalledWith({ - index: '.kibana-observability-ai-assistant-conversations', - refresh: true, - document: { - '@timestamp': expect.any(String), - conversation: { - id: expect.any(String), - last_updated: expect.any(String), - title: 'An auto-generated title', - token_count: { - completion: 6, - prompt: 210, - total: 216, - }, - }, - labels: {}, - numeric_labels: {}, - public: false, - namespace: 'default', - user: { - name: 'johndoe', - }, - messages: [ - { - '@timestamp': expect.any(String), - message: { - content: EXPECTED_STORED_SYSTEM_MESSAGE, - role: MessageRole.System, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'How many alerts do I have?', - role: MessageRole.User, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'Hello again', - role: MessageRole.Assistant, - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - }, - }, - ], - }, - }); - }); - }); - }); - }); - - describe('when completing a conversation with an initial conversation id', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - internalUserEsClientMock.search.mockImplementation(async () => { - return { - hits: { - hits: [ - { - _id: 'my-es-document-id', - _index: '.kibana-observability-ai-assistant-conversations', - _source: { - '@timestamp': new Date().toISOString(), - conversation: { - id: 'my-conversation-id', - title: 'My stored conversation', - last_updated: new Date().toISOString(), - token_count: { - completion: 1, - prompt: 78, - total: 79, - }, - }, - labels: {}, - numeric_labels: {}, - public: false, - messages: [ - system('This is a system message'), - user('How many alerts do I have?'), - ], - }, - }, - ], - }, - } as any; - }); - - internalUserEsClientMock.update.mockImplementationOnce(async () => { - return {} as any; - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - conversationId: 'my-conversation-id', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await nextTick(); - - await llmSimulator.chunk({ content: 'Hello' }); - await llmSimulator.next({ content: 'Hello' }); - await llmSimulator.tokenCount({ completion: 1, prompt: 33, total: 34 }); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('updates the conversation', () => { - expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ - conversation: { - title: 'My stored conversation', - id: expect.any(String), - last_updated: expect.any(String), - token_count: { - completion: 2, - prompt: 111, - total: 113, - }, - }, - type: StreamingChatResponseEventType.ConversationUpdate, - }); - - expect(internalUserEsClientMock.update).toHaveBeenCalledWith({ - refresh: true, - index: '.kibana-observability-ai-assistant-conversations', - id: 'my-es-document-id', - doc: { - '@timestamp': expect.any(String), - conversation: { - id: expect.any(String), - last_updated: expect.any(String), - title: 'My stored conversation', - token_count: { - completion: 2, - prompt: 111, - total: 113, - }, - }, - labels: {}, - numeric_labels: {}, - public: false, - namespace: 'default', - user: { - name: 'johndoe', - }, - messages: [ - { - '@timestamp': expect.any(String), - message: { - content: EXPECTED_STORED_SYSTEM_MESSAGE, - role: MessageRole.System, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'How many alerts do I have?', - role: MessageRole.User, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'Hello', - role: MessageRole.Assistant, - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - }, - }, - ], - }, - }); - }); - }); - - describe('when the LLM response fails', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await nextTick(); - - await llmSimulator.chunk({ content: 'Hello' }); - await llmSimulator.error(new Error('Connection unexpectedly closed')); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('ends the stream and writes an error', async () => { - expect(JSON.parse(dataHandler.mock.calls[1])).toEqual({ - error: { - message: 'Connection unexpectedly closed', - stack: expect.any(String), - }, - type: StreamingChatResponseEventType.ChatCompletionError, - }); - }); - - it('does not create or update the conversation', async () => { - expect(internalUserEsClientMock.index).not.toHaveBeenCalled(); - expect(internalUserEsClientMock.update).not.toHaveBeenCalled(); - }); - }); - - describe('when the assistant answers with a function request', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - - let respondFn: jest.Mock; - - let fnResponseResolve: (data: unknown) => void; - - let fnResponseReject: (error: Error) => void; - - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - respondFn = jest.fn(); - - functionClientMock.getFunctions.mockImplementation(() => [ - { - definition: { - name: 'myFunction', - contexts: ['core'], - description: 'my-description', - descriptionForUser: '', - parameters: { - type: 'object', - properties: { - foo: { - type: 'string', - enum: ['bar'], - }, - }, - required: ['foo'], - }, - }, - respond: respondFn, - }, - ]); - - functionClientMock.executeFunction.mockImplementationOnce(() => { - return new Promise<any>((resolve, reject) => { - fnResponseResolve = resolve; - fnResponseReject = reject; - }); - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await nextTick(); - - await llmSimulator.next({ content: 'Hello' }); - await llmSimulator.chunk({ - content: 'Hello', - function_call: { name: 'myFunction', arguments: JSON.stringify({ foo: 'bar' }) }, - }); - - const prevLlmSimulator = llmSimulator; - - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - await prevLlmSimulator.complete(); - - await waitForNextWrite(stream); - }); - - describe('while the function call is pending', () => { - it('appends the request message', async () => { - expect(JSON.parse(dataHandler.mock.calls[2])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: 'Hello', - role: MessageRole.Assistant, - function_call: { - name: 'myFunction', - arguments: JSON.stringify({ foo: 'bar' }), - trigger: MessageRole.Assistant, - }, - }, - }, - }); - }); - - it('executes the function', () => { - expect(functionClientMock.executeFunction).toHaveBeenCalledWith({ - name: 'myFunction', - chat: expect.any(Function), - args: JSON.stringify({ foo: 'bar' }), - signal: expect.any(AbortSignal), - connectorId: 'foo', - messages: [ - { - '@timestamp': expect.any(String), - message: { - role: MessageRole.System, - content: EXPECTED_STORED_SYSTEM_MESSAGE, - }, - }, - { - '@timestamp': expect.any(String), - message: { - role: MessageRole.User, - content: 'How many alerts do I have?', - }, - }, - { - '@timestamp': expect.any(String), - message: { - role: MessageRole.Assistant, - content: 'Hello', - function_call: { - name: 'myFunction', - arguments: JSON.stringify({ foo: 'bar' }), - trigger: MessageRole.Assistant, - }, - }, - }, - ], - useSimulatedFunctionCalling: false, - }); - }); - - afterEach(async () => { - fnResponseResolve({ content: { my: 'content' } }); - - await waitForNextWrite(stream); - - await llmSimulator.complete(); - await finished(stream); - }); - }); - - describe('and the function succeeds', () => { - beforeEach(async () => { - fnResponseResolve({ content: { my: 'content' } }); - // await waitForNextWrite(stream); - }); - - it('appends the function response', () => { - expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.User, - name: 'myFunction', - content: JSON.stringify({ - my: 'content', - }), - }, - }, - }); - }); - - it('sends the function response back to the llm', () => { - expect(inferenceClientMock.chatComplete).toHaveBeenCalledTimes(2); - - expect(inferenceClientMock.chatComplete.mock.lastCall!).toEqual([ - { - connectorId: 'foo', - stream: true, - messages: expect.arrayContaining([ - { role: 'user', content: 'How many alerts do I have?' }, - ]), - functionCalling: 'native', - toolChoice: 'auto', - tools: expect.any(Object), - }, - ]); - }); - - describe('and the assistant replies without a function request', () => { - beforeEach(async () => { - await llmSimulator.chunk({ content: 'I am done here' }); - await llmSimulator.next({ content: 'I am done here' }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - await llmSimulator.complete(); - await waitForNextWrite(stream); - - await finished(stream); - }); - - it('appends the assistant reply', () => { - expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - id: expect.any(String), - message: { - content: 'I am done here', - }, - }); - expect(JSON.parse(dataHandler.mock.calls[6])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.Assistant, - content: 'I am done here', - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - }, - }, - }); - }); - - it('stores the conversation', () => { - expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ - type: StreamingChatResponseEventType.ConversationCreate, - conversation: { - id: expect.any(String), - last_updated: expect.any(String), - title: 'My predefined title', - token_count: { - completion: expect.any(Number), - prompt: expect.any(Number), - total: expect.any(Number), - }, - }, - }); - - expect(internalUserEsClientMock.index).toHaveBeenCalled(); - - expect( - (internalUserEsClientMock.index.mock.lastCall![0] as any).document.messages - ).toEqual([ - { - '@timestamp': expect.any(String), - message: { - content: EXPECTED_STORED_SYSTEM_MESSAGE, - role: MessageRole.System, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'How many alerts do I have?', - role: MessageRole.User, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'Hello', - role: MessageRole.Assistant, - function_call: { - name: 'myFunction', - arguments: JSON.stringify({ foo: 'bar' }), - trigger: MessageRole.Assistant, - }, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: JSON.stringify({ - my: 'content', - }), - name: 'myFunction', - role: MessageRole.User, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'I am done here', - role: MessageRole.Assistant, - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - }, - }, - ]); - }); - }); - }); - - describe('and the function fails', () => { - beforeEach(async () => { - fnResponseReject(new Error('Function failed')); - await waitForNextWrite(stream); - }); - - it('appends the function response', () => { - const parsed = JSON.parse(dataHandler.mock.lastCall!); - - parsed.message.message.content = JSON.parse(parsed.message.message.content); - parsed.message.message.data = JSON.parse(parsed.message.message.data); - - expect(parsed).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.User, - name: 'myFunction', - content: { - message: 'Function failed', - error: { - name: 'Error', - message: 'Function failed', - }, - }, - data: { - stack: expect.any(String), - }, - }, - }, - }); - }); - - it('sends the function response back to the llm', () => { - expect(inferenceClientMock.chatComplete).toHaveBeenCalledTimes(2); - expect(inferenceClientMock.chatComplete.mock.lastCall!).toEqual([ - { - connectorId: 'foo', - stream: true, - messages: expect.arrayContaining([ - { role: 'user', content: 'How many alerts do I have?' }, - ]), - functionCalling: 'native', - toolChoice: 'auto', - tools: expect.any(Object), - }, - ]); - }); - }); - - describe('and the function responds with an observable', () => { - let response$: Subject<ChatCompletionChunkEvent | MessageAddEvent>; - beforeEach(async () => { - response$ = new Subject(); - fnResponseResolve(response$); - - await nextTick(); - - response$.next(createFunctionResponseMessage({ name: 'myFunction', content: {} })); - }); - - it('appends the function response', async () => { - expect(JSON.parse(dataHandler.mock.calls[3]!)).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.User, - name: 'myFunction', - content: '{}', - }, - }, - }); - }); - - describe('if the observable completes', () => { - beforeEach(async () => { - response$.next({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - message: { - content: 'Hello', - }, - id: 'my-id', - }); - - response$.next({ - type: StreamingChatResponseEventType.MessageAdd, - message: { - '@timestamp': new Date().toString(), - message: { - role: MessageRole.Assistant, - content: 'Hello', - }, - }, - id: 'my-id', - }); - - response$.complete(); - - await finished(stream); - }); - - it('emits a completion chunk', () => { - expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - id: expect.any(String), - message: { - content: 'Hello', - }, - }); - }); - - it('appends the observable response', () => { - expect(JSON.parse(dataHandler.mock.calls[5])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.Assistant, - content: 'Hello', - }, - }, - }); - }); - }); - - describe('if the observable errors out', () => { - beforeEach(async () => { - response$.next({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - message: { - content: 'Hello', - }, - id: 'my-id', - }); - response$.error(new Error('Unexpected error')); - - await finished(stream); - }); - - it('appends an error', () => { - expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ - type: StreamingChatResponseEventType.ChatCompletionError, - error: { - message: 'Unexpected error', - stack: expect.any(String), - }, - }); - }); - }); - }); - }); - - describe('when context is available', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - functionClientMock.hasFunction.mockReturnValue(true); - - functionClientMock.executeFunction.mockImplementationOnce(async (body) => { - return { - content: [ - { - id: 'my_document', - text: 'My document', - }, - ], - }; - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - persist: false, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await waitForNextWrite(stream); - - await llmSimulator.chunk({ content: 'Hello' }); - await llmSimulator.next({ content: 'Hello' }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('appends the context request message', () => { - expect(JSON.parse(dataHandler.mock.calls[0]!)).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: '', - role: MessageRole.Assistant, - function_call: { - name: CONTEXT_FUNCTION_NAME, - trigger: MessageRole.Assistant, - }, - }, - }, - }); - }); - - it('appends the context response', () => { - expect(JSON.parse(dataHandler.mock.calls[1]!)).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: JSON.stringify([{ id: 'my_document', text: 'My document' }]), - role: MessageRole.User, - name: CONTEXT_FUNCTION_NAME, - }, - }, - }); - }); - - it('appends the response from the LLM', () => { - expect(JSON.parse(dataHandler.mock.calls[2]!)).toEqual({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - id: expect.any(String), - message: { - content: 'Hello', - }, - }); - - expect(JSON.parse(dataHandler.mock.calls[4]!)).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: 'Hello', - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - role: MessageRole.Assistant, - }, - }, - }); - }); - }); - - describe('when the LLM keeps on calling a function and the limit has been exceeded', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - const maxFunctionCalls = 8; - - beforeEach(async () => { - client = createClient(); - - const onLlmCall = new EventEmitter(); - - function waitForNextLlmCall() { - return new Promise<void>((resolve) => onLlmCall.addListener('next', resolve)); - } - - inferenceClientMock.chatComplete.mockImplementation(() => { - return new Observable((subscriber) => { - onLlmCall.emit('next'); - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - functionClientMock.getFunctions.mockImplementation(() => [ - { - definition: { - name: 'get_top_alerts', - contexts: ['core'], - description: '', - }, - respond: async () => { - return { content: 'Call this function again' }; - }, - }, - ]); - - functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); - functionClientMock.executeFunction.mockImplementation(async () => ({ - content: 'Call this function again', - })); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - async function requestAlertsFunctionCall() { - const body = inferenceClientMock.chatComplete.mock.lastCall![0]; - let nextLlmCallPromise: Promise<void>; - - if (Object.keys(body.tools ?? {}).length) { - nextLlmCallPromise = waitForNextLlmCall(); - await llmSimulator.chunk({ function_call: { name: 'get_top_alerts', arguments: '{}' } }); - } else { - nextLlmCallPromise = Promise.resolve(); - await llmSimulator.chunk({ content: 'Looks like we are done here' }); - } - - await llmSimulator.complete(); - await nextLlmCallPromise; - } - - await nextTick(); - - for (let i = 0; i <= maxFunctionCalls; i++) { - await requestAlertsFunctionCall(); - } - - await llmSimulator.complete(); - await finished(stream); - }); - - it(`executed the function no more than ${maxFunctionCalls} times`, () => { - expect(functionClientMock.executeFunction).toHaveBeenCalledTimes(maxFunctionCalls); - }); - - it('asks the LLM to suggest next steps', () => { - const firstBody = inferenceClientMock.chatComplete.mock.calls[0][0] as any; - const body = inferenceClientMock.chatComplete.mock.lastCall![0] as any; - - expect(Object.keys(firstBody.tools ?? {}).length).toEqual(1); - - expect(body.tools).toEqual({}); - }); - }); - - describe('when context has not been injected since last user message', () => { - let dataHandler: jest.Mock; - - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - functionClientMock.hasFunction.mockReturnValue(true); - functionClientMock.executeFunction.mockImplementationOnce(async () => { - return { - content: [ - { - id: 'my_document', - text: 'My document', - }, - ], - }; - }); - - const stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - persist: false, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await waitForNextWrite(stream); - - await llmSimulator.next({ - content: 'Hello', - }); - - await llmSimulator.complete(); - - await finished(stream); - }); - - it('executes the context function', async () => { - expect(functionClientMock.executeFunction).toHaveBeenCalledWith( - expect.objectContaining({ name: CONTEXT_FUNCTION_NAME }) - ); - }); - - it('appends the context request message', async () => { - expect(JSON.parse(dataHandler.mock.calls[0])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: '', - role: MessageRole.Assistant, - function_call: { - name: CONTEXT_FUNCTION_NAME, - trigger: MessageRole.Assistant, - }, - }, - }, - }); - }); - }); - - describe('when the function response exceeds the max no of tokens for one', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - - beforeEach(async () => { - client = createClient(); - - let functionResponsePromiseResolve: Function | undefined; - - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - functionClientMock.getFunctions.mockImplementation(() => [ - { - definition: { - name: 'get_top_alerts', - contexts: ['core'], - description: '', - parameters: {}, - }, - respond: async () => { - return { content: '' }; - }, - }, - ]); - - functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); - - functionClientMock.executeFunction.mockImplementation(() => { - return new Promise((resolve) => { - functionResponsePromiseResolve = resolve; - }); - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await nextTick(); - - await llmSimulator.chunk({ function_call: { name: 'get_top_alerts' } }); - await llmSimulator.next({ content: 'done' }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - await llmSimulator.complete(); - - await waitFor(() => functionResponsePromiseResolve !== undefined); - - functionResponsePromiseResolve!({ - content: repeat('word ', 10000), - }); - - await waitFor(() => inferenceClientMock.chatComplete.mock.calls.length > 1); - - await llmSimulator.next({ content: 'Looks like this was truncated' }); - - await llmSimulator.complete(); - - await finished(stream); - }); - - it('truncates the message', () => { - const body = inferenceClientMock.chatComplete.mock.lastCall![0]; - const parsed = last(body.messages); - - expect(parsed).toEqual({ - role: 'tool', - response: { - message: 'Function response exceeded the maximum length allowed and was truncated', - truncated: expect.any(String), - }, - toolCallId: expect.any(String), - }); - - expect((parsed as any).response.truncated.includes('word ')).toBe(true); - }); - }); - - it('Adds the default language to the system prompt', async () => { - client = createClient(); - const chatSpy = jest.spyOn(client, 'chat'); - - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - client - .complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('A user message to cause completion')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: false, - }) - .subscribe(() => {}); // To trigger call to chat - await nextTick(); - - expect(chatSpy.mock.calls[0][1].messages[0].message.content).toEqual( - EXPECTED_STORED_SYSTEM_MESSAGE - ); - }); - - describe('when executing an action', () => { - let completePromise: Promise<Message[]>; - - beforeEach(async () => { - client = createClient(); - - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - const complete$ = await client.complete({ - connectorId: 'foo', - messages: [ - system('This is a system message'), - user('Can you call the my_action function?'), - ], - functionClient: new ChatFunctionClient([ - { - actions: [ - { - name: 'my_action', - description: 'My action description', - parameters: { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - required: ['foo'], - }, - }, - ], - }, - ]), - signal: new AbortController().signal, - title: 'My predefined title', - persist: false, - }); - - const messages: Message[] = []; - - completePromise = new Promise<Message[]>((resolve, reject) => { - complete$.subscribe({ - next: (event) => { - if (event.type === StreamingChatResponseEventType.MessageAdd) { - messages.push(event.message); - } - }, - complete: () => resolve(messages), - }); - }); - }); - - describe('and validation succeeds', () => { - beforeEach(async () => { - await llmSimulator.chunk({ - function_call: { name: 'my_action', arguments: JSON.stringify({ foo: 'bar' }) }, - }); - await llmSimulator.next({ content: 'content' }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - await llmSimulator.complete(); - }); - - it('completes the observable function request being the last event', async () => { - const messages = await completePromise; - expect(messages.length).toBe(1); - - expect(messages[0].message.function_call).toEqual({ - name: 'my_action', - arguments: JSON.stringify({ foo: 'bar' }), - trigger: MessageRole.Assistant, - }); - }); - }); - - describe.skip('and validation fails', () => { - beforeEach(async () => { - await llmSimulator.chunk({ - function_call: { name: 'my_action', arguments: JSON.stringify({ bar: 'foo' }) }, - }); - - await waitFor(() => - inferenceClientMock.chatComplete.mock.calls.length === 3 - ? Promise.resolve() - : llmSimulator.error(new Error('Waiting until execute is called again')) - ); - - await llmSimulator.next({ - content: 'Looks like the function call failed', - }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - - await llmSimulator.complete(); - }); - - it('appends a function response error and sends it back to the LLM', async () => { - const messages = await completePromise; - expect(messages.length).toBe(2); - - expect(messages[0].message.function_call?.name).toBe('my_action'); - - expect(messages[1].message.name).toBe('my_action'); - - expect(JSON.parse(messages[1].message.content ?? '{}')).toHaveProperty('error'); - - expect(messages[2].message.content).toBe('Looks like the function call failed'); - }); - }); - }); -}); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts deleted file mode 100644 index 688bd7a2ec860..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts +++ /dev/null @@ -1,755 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { SearchHit } from '@elastic/elasticsearch/lib/api/types'; -import { notFound } from '@hapi/boom'; -import type { ActionsClient } from '@kbn/actions-plugin/server'; -import type { CoreSetup, ElasticsearchClient, IUiSettingsClient } from '@kbn/core/server'; -import type { Logger } from '@kbn/logging'; -import type { PublicMethodsOf } from '@kbn/utility-types'; -import { context } from '@opentelemetry/api'; -import { last, merge, omit } from 'lodash'; -import { - catchError, - combineLatest, - defer, - filter, - forkJoin, - from, - map, - merge as mergeOperator, - Observable, - of, - shareReplay, - switchMap, - tap, - throwError, -} from 'rxjs'; -import { v4 } from 'uuid'; -import type { AssistantScope } from '@kbn/ai-assistant-common'; -import type { InferenceClient } from '@kbn/inference-plugin/server'; -import { ToolChoiceType } from '@kbn/inference-common'; - -import { resourceNames } from '..'; -import { - ChatCompletionChunkEvent, - ChatCompletionMessageEvent, - ChatCompletionErrorEvent, - ConversationCreateEvent, - ConversationUpdateEvent, - createConversationNotFoundError, - StreamingChatResponseEventType, - TokenCountEvent, - type StreamingChatResponseEvent, -} from '../../../common/conversation_complete'; -import { convertMessagesForInference } from '../../../common/convert_messages_for_inference'; -import { CompatibleJSONSchema } from '../../../common/functions/types'; -import { - type AdHocInstruction, - type Conversation, - type ConversationCreateRequest, - type ConversationUpdateRequest, - type KnowledgeBaseEntry, - type Message, - KnowledgeBaseType, - KnowledgeBaseEntryRole, - MessageRole, -} from '../../../common/types'; -import { withoutTokenCountEvents } from '../../../common/utils/without_token_count_events'; -import { CONTEXT_FUNCTION_NAME } from '../../functions/context'; -import type { ChatFunctionClient } from '../chat_function_client'; -import { KnowledgeBaseService, RecalledEntry } from '../knowledge_base_service'; -import { getAccessQuery } from '../util/get_access_query'; -import { getSystemMessageFromInstructions } from '../util/get_system_message_from_instructions'; -import { replaceSystemMessage } from '../util/replace_system_message'; -import { failOnNonExistingFunctionCall } from './operators/fail_on_non_existing_function_call'; -import { getContextFunctionRequestIfNeeded } from './get_context_function_request_if_needed'; -import { LangTracer } from './instrumentation/lang_tracer'; -import { continueConversation } from './operators/continue_conversation'; -import { convertInferenceEventsToStreamingEvents } from './operators/convert_inference_events_to_streaming_events'; -import { extractMessages } from './operators/extract_messages'; -import { extractTokenCount } from './operators/extract_token_count'; -import { getGeneratedTitle } from './operators/get_generated_title'; -import { instrumentAndCountTokens } from './operators/instrument_and_count_tokens'; -import { - runSemanticTextKnowledgeBaseMigration, - scheduleSemanticTextMigration, -} from '../task_manager_definitions/register_migrate_knowledge_base_entries_task'; -import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; -import { ObservabilityAIAssistantConfig } from '../../config'; - -const MAX_FUNCTION_CALLS = 8; - -export class ObservabilityAIAssistantClient { - constructor( - private readonly dependencies: { - config: ObservabilityAIAssistantConfig; - core: CoreSetup<ObservabilityAIAssistantPluginStartDependencies>; - actionsClient: PublicMethodsOf<ActionsClient>; - uiSettingsClient: IUiSettingsClient; - namespace: string; - esClient: { - asInternalUser: ElasticsearchClient; - asCurrentUser: ElasticsearchClient; - }; - inferenceClient: InferenceClient; - logger: Logger; - user?: { - id?: string; - name: string; - }; - knowledgeBaseService: KnowledgeBaseService; - scopes: AssistantScope[]; - } - ) {} - - private getConversationWithMetaFields = async ( - conversationId: string - ): Promise<SearchHit<Conversation> | undefined> => { - const response = await this.dependencies.esClient.asInternalUser.search<Conversation>({ - index: resourceNames.aliases.conversations, - query: { - bool: { - filter: [ - ...getAccessQuery({ - user: this.dependencies.user, - namespace: this.dependencies.namespace, - }), - { term: { 'conversation.id': conversationId } }, - ], - }, - }, - size: 1, - terminate_after: 1, - }); - - return response.hits.hits[0]; - }; - - private getConversationUpdateValues = (lastUpdated: string) => { - return { - conversation: { - last_updated: lastUpdated, - }, - user: this.dependencies.user, - namespace: this.dependencies.namespace, - }; - }; - - get = async (conversationId: string): Promise<Conversation> => { - const conversation = await this.getConversationWithMetaFields(conversationId); - - if (!conversation) { - throw notFound(); - } - return conversation._source!; - }; - - delete = async (conversationId: string): Promise<void> => { - const conversation = await this.getConversationWithMetaFields(conversationId); - - if (!conversation) { - throw notFound(); - } - - await this.dependencies.esClient.asInternalUser.delete({ - id: conversation._id!, - index: conversation._index, - refresh: true, - }); - }; - - complete = ({ - functionClient, - connectorId, - simulateFunctionCalling = false, - instructions: adHocInstructions = [], - messages: initialMessages, - signal, - persist, - kibanaPublicUrl, - isPublic, - title: predefinedTitle, - conversationId: predefinedConversationId, - disableFunctions = false, - }: { - messages: Message[]; - connectorId: string; - signal: AbortSignal; - functionClient: ChatFunctionClient; - persist: boolean; - conversationId?: string; - title?: string; - isPublic?: boolean; - kibanaPublicUrl?: string; - instructions?: AdHocInstruction[]; - simulateFunctionCalling?: boolean; - disableFunctions?: - | boolean - | { - except: string[]; - }; - }): Observable<Exclude<StreamingChatResponseEvent, ChatCompletionErrorEvent>> => { - return new LangTracer(context.active()).startActiveSpan( - 'complete', - ({ tracer: completeTracer }) => { - const isConversationUpdate = persist && !!predefinedConversationId; - - const conversationId = persist ? predefinedConversationId || v4() : ''; - - if (persist && !isConversationUpdate && kibanaPublicUrl) { - adHocInstructions.push({ - instruction_type: 'application_instruction', - text: `This conversation will be persisted in Kibana and available at this url: ${ - kibanaPublicUrl + `/app/observabilityAIAssistant/conversations/${conversationId}` - }.`, - }); - } - - const userInstructions$ = from(this.getKnowledgeBaseUserInstructions()).pipe(shareReplay()); - - const registeredAdhocInstructions = functionClient.getAdhocInstructions(); - const allAdHocInstructions = adHocInstructions.concat(registeredAdhocInstructions); - - // from the initial messages, override any system message with - // the one that is based on the instructions (registered, request, kb) - const messagesWithUpdatedSystemMessage$ = userInstructions$.pipe( - map((userInstructions) => { - // this is what we eventually store in the conversation - const messagesWithUpdatedSystemMessage = replaceSystemMessage( - getSystemMessageFromInstructions({ - applicationInstructions: functionClient.getInstructions(), - userInstructions, - adHocInstructions: allAdHocInstructions, - availableFunctionNames: functionClient - .getFunctions() - .map((fn) => fn.definition.name), - }), - initialMessages - ); - - return messagesWithUpdatedSystemMessage; - }), - shareReplay() - ); - - // if it is: - // - a new conversation - // - no predefined title is given - // - we need to store the conversation - // we generate a title - // if not, we complete with an empty string - const title$ = - predefinedTitle || isConversationUpdate || !persist - ? of(predefinedTitle || '').pipe(shareReplay()) - : messagesWithUpdatedSystemMessage$.pipe( - switchMap((messages) => - getGeneratedTitle({ - messages, - logger: this.dependencies.logger, - chat: (name, chatParams) => { - return this.chat(name, { - ...chatParams, - simulateFunctionCalling, - connectorId, - signal, - }); - }, - tracer: completeTracer, - }) - ), - shareReplay() - ); - - // we continue the conversation here, after resolving both the materialized - // messages and the knowledge base instructions - const nextEvents$ = combineLatest([ - messagesWithUpdatedSystemMessage$, - userInstructions$, - ]).pipe( - switchMap(([messagesWithUpdatedSystemMessage, userInstructions]) => { - // if needed, inject a context function request here - const contextRequest = functionClient.hasFunction(CONTEXT_FUNCTION_NAME) - ? getContextFunctionRequestIfNeeded(messagesWithUpdatedSystemMessage) - : undefined; - - return mergeOperator( - // if we have added a context function request, also emit - // the messageAdd event for it, so we can notify the consumer - // and add it to the conversation - ...(contextRequest ? [of(contextRequest)] : []), - continueConversation({ - messages: [ - ...messagesWithUpdatedSystemMessage, - ...(contextRequest ? [contextRequest.message] : []), - ], - chat: (name, chatParams) => { - // inject a chat function with predefined parameters - return this.chat(name, { - ...chatParams, - signal, - simulateFunctionCalling, - connectorId, - }); - }, - // start out with the max number of function calls - functionCallsLeft: MAX_FUNCTION_CALLS, - functionClient, - userInstructions, - adHocInstructions, - signal, - logger: this.dependencies.logger, - disableFunctions, - tracer: completeTracer, - connectorId, - useSimulatedFunctionCalling: simulateFunctionCalling === true, - }) - ); - }), - shareReplay() - ); - - const output$ = mergeOperator( - // get all the events from continuing the conversation - nextEvents$, - // wait until all dependencies have completed - forkJoin([ - messagesWithUpdatedSystemMessage$, - // get just the new messages - nextEvents$.pipe(withoutTokenCountEvents(), extractMessages()), - // count all the token count events emitted during completion - mergeOperator( - nextEvents$, - title$.pipe(filter((value): value is TokenCountEvent => typeof value !== 'string')) - ).pipe(extractTokenCount()), - // get just the title, and drop the token count events - title$.pipe(filter((value): value is string => typeof value === 'string')), - ]).pipe( - switchMap( - ([messagesWithUpdatedSystemMessage, addedMessages, tokenCountResult, title]) => { - const initialMessagesWithAddedMessages = - messagesWithUpdatedSystemMessage.concat(addedMessages); - - const lastMessage = last(initialMessagesWithAddedMessages); - - // if a function request is at the very end, close the stream to consumer - // without persisting or updating the conversation. we need to wait - // on the function response to have a valid conversation - const isFunctionRequest = !!lastMessage?.message.function_call?.name; - - if (!persist || isFunctionRequest) { - return of(); - } - - if (isConversationUpdate) { - return from(this.getConversationWithMetaFields(conversationId)) - .pipe( - switchMap((conversation) => { - if (!conversation) { - return throwError(() => createConversationNotFoundError()); - } - - const persistedTokenCount = conversation._source?.conversation - .token_count ?? { - prompt: 0, - completion: 0, - total: 0, - }; - - return from( - this.update( - conversationId, - - merge( - {}, - - // base conversation without messages - omit(conversation._source, 'messages'), - - // update messages - { messages: initialMessagesWithAddedMessages }, - - // update token count - { - conversation: { - title: title || conversation._source?.conversation.title, - token_count: { - prompt: persistedTokenCount.prompt + tokenCountResult.prompt, - completion: - persistedTokenCount.completion + tokenCountResult.completion, - total: persistedTokenCount.total + tokenCountResult.total, - }, - }, - } - ) - ) - ); - }) - ) - .pipe( - map((conversation): ConversationUpdateEvent => { - return { - conversation: conversation.conversation, - type: StreamingChatResponseEventType.ConversationUpdate, - }; - }) - ); - } - - return from( - this.create({ - '@timestamp': new Date().toISOString(), - conversation: { - title, - id: conversationId, - token_count: tokenCountResult, - }, - public: !!isPublic, - labels: {}, - numeric_labels: {}, - messages: initialMessagesWithAddedMessages, - }) - ).pipe( - map((conversation): ConversationCreateEvent => { - return { - conversation: conversation.conversation, - type: StreamingChatResponseEventType.ConversationCreate, - }; - }) - ); - } - ) - ) - ); - - return output$.pipe( - instrumentAndCountTokens('complete'), - withoutTokenCountEvents(), - catchError((error) => { - this.dependencies.logger.error(error); - return throwError(() => error); - }), - tap((event) => { - if (this.dependencies.logger.isLevelEnabled('debug')) { - switch (event.type) { - case StreamingChatResponseEventType.MessageAdd: - this.dependencies.logger.debug( - () => `Added message: ${JSON.stringify(event.message)}` - ); - break; - - case StreamingChatResponseEventType.ConversationCreate: - this.dependencies.logger.debug( - () => `Created conversation: ${JSON.stringify(event.conversation)}` - ); - break; - - case StreamingChatResponseEventType.ConversationUpdate: - this.dependencies.logger.debug( - () => `Updated conversation: ${JSON.stringify(event.conversation)}` - ); - break; - } - } - }), - shareReplay() - ); - } - ); - }; - - chat = ( - name: string, - { - messages, - connectorId, - functions, - functionCall, - signal, - simulateFunctionCalling, - tracer, - }: { - messages: Message[]; - connectorId: string; - functions?: Array<{ name: string; description: string; parameters?: CompatibleJSONSchema }>; - functionCall?: string; - signal: AbortSignal; - simulateFunctionCalling?: boolean; - tracer: LangTracer; - } - ): Observable<ChatCompletionChunkEvent | TokenCountEvent | ChatCompletionMessageEvent> => { - const tools = functions?.reduce((acc, fn) => { - acc[fn.name] = { - description: fn.description, - schema: fn.parameters, - }; - return acc; - }, {} as Record<string, { description: string; schema: any }>); - - const chatComplete$ = defer(() => - this.dependencies.inferenceClient.chatComplete({ - connectorId, - stream: true, - messages: convertMessagesForInference( - messages.filter((message) => message.message.role !== MessageRole.System) - ), - functionCalling: simulateFunctionCalling ? 'simulated' : 'native', - toolChoice: functionCall - ? { - function: functionCall, - } - : ToolChoiceType.auto, - tools, - }) - ).pipe( - convertInferenceEventsToStreamingEvents(), - instrumentAndCountTokens(name), - failOnNonExistingFunctionCall({ functions }), - tap((event) => { - if ( - event.type === StreamingChatResponseEventType.ChatCompletionChunk && - this.dependencies.logger.isLevelEnabled('trace') - ) { - this.dependencies.logger.trace(`Received chunk: ${JSON.stringify(event.message)}`); - } - }), - shareReplay() - ); - - return chatComplete$; - }; - - find = async (options?: { query?: string }): Promise<{ conversations: Conversation[] }> => { - const response = await this.dependencies.esClient.asInternalUser.search<Conversation>({ - index: resourceNames.aliases.conversations, - allow_no_indices: true, - query: { - bool: { - filter: [ - ...getAccessQuery({ - user: this.dependencies.user, - namespace: this.dependencies.namespace, - }), - ], - }, - }, - sort: { - '@timestamp': 'desc', - }, - size: 100, - }); - - return { - conversations: response.hits.hits.map((hit) => hit._source!), - }; - }; - - update = async ( - conversationId: string, - conversation: ConversationUpdateRequest - ): Promise<Conversation> => { - const persistedConversation = await this.getConversationWithMetaFields(conversationId); - - if (!persistedConversation) { - throw notFound(); - } - - const updatedConversation: Conversation = merge( - {}, - conversation, - this.getConversationUpdateValues(new Date().toISOString()) - ); - - await this.dependencies.esClient.asInternalUser.update({ - id: persistedConversation._id!, - index: persistedConversation._index, - doc: updatedConversation, - refresh: true, - }); - - return updatedConversation; - }; - - setTitle = async ({ conversationId, title }: { conversationId: string; title: string }) => { - const document = await this.getConversationWithMetaFields(conversationId); - if (!document) { - throw notFound(); - } - - const conversation = await this.get(conversationId); - - if (!conversation) { - throw notFound(); - } - - const updatedConversation: Conversation = merge( - {}, - conversation, - { conversation: { title } }, - this.getConversationUpdateValues(new Date().toISOString()) - ); - - await this.dependencies.esClient.asInternalUser.update({ - id: document._id!, - index: document._index, - doc: { conversation: { title } }, - refresh: true, - }); - - return updatedConversation; - }; - - create = async (conversation: ConversationCreateRequest): Promise<Conversation> => { - const now = new Date().toISOString(); - - const createdConversation: Conversation = merge( - {}, - conversation, - { - '@timestamp': now, - conversation: { id: conversation.conversation.id || v4() }, - }, - this.getConversationUpdateValues(now) - ); - - await this.dependencies.esClient.asInternalUser.index({ - index: resourceNames.aliases.conversations, - document: createdConversation, - refresh: true, - }); - - return createdConversation; - }; - - recall = async ({ - queries, - categories, - }: { - queries: Array<{ text: string; boost?: number }>; - categories?: string[]; - }): Promise<RecalledEntry[]> => { - return ( - this.dependencies.knowledgeBaseService?.recall({ - namespace: this.dependencies.namespace, - user: this.dependencies.user, - queries, - categories, - esClient: this.dependencies.esClient, - uiSettingsClient: this.dependencies.uiSettingsClient, - }) || [] - ); - }; - - getKnowledgeBaseStatus = () => { - return this.dependencies.knowledgeBaseService.getStatus(); - }; - - setupKnowledgeBase = async (modelId: string | undefined) => { - const { esClient, core, logger, knowledgeBaseService } = this.dependencies; - - // setup the knowledge base - const res = await knowledgeBaseService.setup(esClient, modelId); - - core - .getStartServices() - .then(([_, pluginsStart]) => { - logger.debug('Schedule semantic text migration task'); - return scheduleSemanticTextMigration(pluginsStart); - }) - .catch((error) => { - logger.error(`Failed to run semantic text migration task: ${error}`); - }); - - return res; - }; - - resetKnowledgeBase = () => { - const { esClient } = this.dependencies; - return this.dependencies.knowledgeBaseService.reset(esClient); - }; - - migrateKnowledgeBaseToSemanticText = () => { - return runSemanticTextKnowledgeBaseMigration({ - esClient: this.dependencies.esClient, - logger: this.dependencies.logger, - config: this.dependencies.config, - }); - }; - - addUserInstruction = async ({ - entry, - }: { - entry: Omit< - KnowledgeBaseEntry, - '@timestamp' | 'confidence' | 'is_correction' | 'type' | 'role' - >; - }): Promise<void> => { - // for now we want to limit the number of user instructions to 1 per user - // if a user instruction already exists for the user, we get the id and update it - this.dependencies.logger.debug('Adding user instruction entry'); - const existingId = await this.dependencies.knowledgeBaseService.getPersonalUserInstructionId({ - isPublic: entry.public, - namespace: this.dependencies.namespace, - user: this.dependencies.user, - }); - - if (existingId) { - entry.id = existingId; - this.dependencies.logger.debug(`Updating user instruction with id "${existingId}"`); - } - - return this.dependencies.knowledgeBaseService.addEntry({ - namespace: this.dependencies.namespace, - user: this.dependencies.user, - entry: { - ...entry, - confidence: 'high', - is_correction: false, - type: KnowledgeBaseType.UserInstruction, - labels: {}, - role: KnowledgeBaseEntryRole.UserEntry, - }, - }); - }; - - addKnowledgeBaseEntry = async ({ - entry, - }: { - entry: Omit<KnowledgeBaseEntry, '@timestamp' | 'type'>; - }): Promise<void> => { - return this.dependencies.knowledgeBaseService.addEntry({ - namespace: this.dependencies.namespace, - user: this.dependencies.user, - entry: { - ...entry, - type: KnowledgeBaseType.Contextual, - }, - }); - }; - - getKnowledgeBaseEntries = async ({ - query, - sortBy, - sortDirection, - }: { - query: string; - sortBy: string; - sortDirection: 'asc' | 'desc'; - }) => { - return this.dependencies.knowledgeBaseService.getEntries({ query, sortBy, sortDirection }); - }; - - deleteKnowledgeBaseEntry = async (id: string) => { - return this.dependencies.knowledgeBaseService.deleteEntry({ id }); - }; - - getKnowledgeBaseUserInstructions = async () => { - return this.dependencies.knowledgeBaseService.getUserInstructions( - this.dependencies.namespace, - this.dependencies.user - ); - }; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts deleted file mode 100644 index 1cf1cdc326fdf..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts +++ /dev/null @@ -1,445 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { serverUnavailable } from '@hapi/boom'; -import type { CoreSetup, ElasticsearchClient, IUiSettingsClient } from '@kbn/core/server'; -import type { Logger } from '@kbn/logging'; -import { orderBy } from 'lodash'; -import { encode } from 'gpt-tokenizer'; -import { resourceNames } from '..'; -import { - Instruction, - KnowledgeBaseEntry, - KnowledgeBaseEntryRole, - KnowledgeBaseType, -} from '../../../common/types'; -import { getAccessQuery } from '../util/get_access_query'; -import { getCategoryQuery } from '../util/get_category_query'; -import { - createInferenceEndpoint, - deleteInferenceEndpoint, - getElserModelStatus, - isInferenceEndpointMissingOrUnavailable, -} from '../inference_endpoint'; -import { recallFromSearchConnectors } from './recall_from_search_connectors'; -import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; -import { ObservabilityAIAssistantConfig } from '../../config'; - -interface Dependencies { - core: CoreSetup<ObservabilityAIAssistantPluginStartDependencies>; - esClient: { - asInternalUser: ElasticsearchClient; - }; - logger: Logger; - config: ObservabilityAIAssistantConfig; -} - -export interface RecalledEntry { - id: string; - text: string; - score: number | null; - is_correction?: boolean; - labels?: Record<string, string>; -} - -function throwKnowledgeBaseNotReady(body: any) { - throw serverUnavailable(`Knowledge base is not ready yet`, body); -} - -export class KnowledgeBaseService { - constructor(private readonly dependencies: Dependencies) {} - - async setup( - esClient: { - asCurrentUser: ElasticsearchClient; - asInternalUser: ElasticsearchClient; - }, - modelId: string | undefined - ) { - await deleteInferenceEndpoint({ esClient }).catch((e) => {}); // ensure existing inference endpoint is deleted - return createInferenceEndpoint({ esClient, logger: this.dependencies.logger, modelId }); - } - - async reset(esClient: { asCurrentUser: ElasticsearchClient }) { - try { - await deleteInferenceEndpoint({ esClient }); - } catch (error) { - if (isInferenceEndpointMissingOrUnavailable(error)) { - return; - } - throw error; - } - } - - private async recallFromKnowledgeBase({ - queries, - categories, - namespace, - user, - }: { - queries: Array<{ text: string; boost?: number }>; - categories?: string[]; - namespace: string; - user?: { name: string }; - }): Promise<RecalledEntry[]> { - const response = await this.dependencies.esClient.asInternalUser.search< - Pick<KnowledgeBaseEntry, 'text' | 'is_correction' | 'labels' | 'title'> & { doc_id?: string } - >({ - index: [resourceNames.aliases.kb], - query: { - bool: { - should: queries.map(({ text, boost = 1 }) => ({ - semantic: { - field: 'semantic_text', - query: text, - boost, - }, - })), - filter: [ - ...getAccessQuery({ - user, - namespace, - }), - ...getCategoryQuery({ categories }), - - // exclude user instructions - { bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } } }, - ], - }, - }, - size: 20, - _source: { - includes: ['text', 'is_correction', 'labels', 'doc_id', 'title'], - }, - }); - - return response.hits.hits.map((hit) => ({ - text: hit._source?.text!, - is_correction: hit._source?.is_correction, - labels: hit._source?.labels, - title: hit._source?.title ?? hit._source?.doc_id, // use `doc_id` as fallback title for backwards compatibility - score: hit._score!, - id: hit._id!, - })); - } - - recall = async ({ - user, - queries, - categories, - namespace, - esClient, - uiSettingsClient, - }: { - queries: Array<{ text: string; boost?: number }>; - categories?: string[]; - user?: { name: string }; - namespace: string; - esClient: { asCurrentUser: ElasticsearchClient; asInternalUser: ElasticsearchClient }; - uiSettingsClient: IUiSettingsClient; - }): Promise<RecalledEntry[]> => { - if (!this.dependencies.config.enableKnowledgeBase) { - return []; - } - - this.dependencies.logger.debug( - () => `Recalling entries from KB for queries: "${JSON.stringify(queries)}"` - ); - - const [documentsFromKb, documentsFromConnectors] = await Promise.all([ - this.recallFromKnowledgeBase({ - user, - queries, - categories, - namespace, - }).catch((error) => { - if (isInferenceEndpointMissingOrUnavailable(error)) { - throwKnowledgeBaseNotReady(error.body); - } - throw error; - }), - recallFromSearchConnectors({ - esClient, - uiSettingsClient, - queries, - core: this.dependencies.core, - logger: this.dependencies.logger, - }).catch((error) => { - this.dependencies.logger.debug('Error getting data from search indices'); - this.dependencies.logger.debug(error); - return []; - }), - ]); - - this.dependencies.logger.debug( - `documentsFromKb: ${JSON.stringify(documentsFromKb.slice(0, 5), null, 2)}` - ); - this.dependencies.logger.debug( - `documentsFromConnectors: ${JSON.stringify(documentsFromConnectors.slice(0, 5), null, 2)}` - ); - - const sortedEntries = orderBy( - documentsFromKb.concat(documentsFromConnectors), - 'score', - 'desc' - ).slice(0, 20); - - const MAX_TOKENS = 4000; - - let tokenCount = 0; - - const returnedEntries: RecalledEntry[] = []; - - for (const entry of sortedEntries) { - returnedEntries.push(entry); - tokenCount += encode(entry.text).length; - if (tokenCount >= MAX_TOKENS) { - break; - } - } - - const droppedEntries = sortedEntries.length - returnedEntries.length; - if (droppedEntries > 0) { - this.dependencies.logger.info(`Dropped ${droppedEntries} entries because of token limit`); - } - - return returnedEntries; - }; - - getUserInstructions = async ( - namespace: string, - user?: { name: string } - ): Promise<Array<Instruction & { public?: boolean }>> => { - if (!this.dependencies.config.enableKnowledgeBase) { - return []; - } - try { - const response = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ - index: resourceNames.aliases.kb, - query: { - bool: { - filter: [ - { - term: { - type: KnowledgeBaseType.UserInstruction, - }, - }, - ...getAccessQuery({ user, namespace }), - ], - }, - }, - size: 500, - _source: ['id', 'text', 'public'], - }); - - return response.hits.hits.map((hit) => ({ - id: hit._id!, - text: hit._source?.text ?? '', - public: hit._source?.public, - })); - } catch (error) { - this.dependencies.logger.error('Failed to load instructions from knowledge base'); - this.dependencies.logger.error(error); - return []; - } - }; - - getEntries = async ({ - query, - sortBy, - sortDirection, - }: { - query?: string; - sortBy?: string; - sortDirection?: 'asc' | 'desc'; - }): Promise<{ entries: KnowledgeBaseEntry[] }> => { - if (!this.dependencies.config.enableKnowledgeBase) { - return { entries: [] }; - } - try { - const response = await this.dependencies.esClient.asInternalUser.search< - KnowledgeBaseEntry & { doc_id?: string } - >({ - index: resourceNames.aliases.kb, - query: { - bool: { - filter: [ - // filter by search query - ...(query - ? [{ query_string: { query: `${query}*`, fields: ['doc_id', 'title'] } }] - : []), - { - // exclude user instructions - bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } }, - }, - ], - }, - }, - sort: - sortBy === 'title' - ? [ - { ['title.keyword']: { order: sortDirection } }, - { doc_id: { order: sortDirection } }, // sort by doc_id for backwards compatibility - ] - : [{ [String(sortBy)]: { order: sortDirection } }], - size: 500, - _source: { - includes: [ - 'title', - 'doc_id', - 'text', - 'is_correction', - 'labels', - 'confidence', - 'public', - '@timestamp', - 'role', - 'user.name', - 'type', - ], - }, - }); - - return { - entries: response.hits.hits.map((hit) => ({ - ...hit._source!, - title: hit._source!.title ?? hit._source!.doc_id, // use `doc_id` as fallback title for backwards compatibility - role: hit._source!.role ?? KnowledgeBaseEntryRole.UserEntry, - score: hit._score, - id: hit._id!, - })), - }; - } catch (error) { - if (isInferenceEndpointMissingOrUnavailable(error)) { - throwKnowledgeBaseNotReady(error.body); - } - throw error; - } - }; - - getPersonalUserInstructionId = async ({ - isPublic, - user, - namespace, - }: { - isPublic: boolean; - user?: { name: string; id?: string }; - namespace?: string; - }) => { - if (!this.dependencies.config.enableKnowledgeBase) { - return null; - } - const res = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ - index: resourceNames.aliases.kb, - query: { - bool: { - filter: [ - { term: { type: KnowledgeBaseType.UserInstruction } }, - { term: { public: isPublic } }, - ...getAccessQuery({ user, namespace }), - ], - }, - }, - size: 1, - _source: false, - }); - - return res.hits.hits[0]?._id; - }; - - getUuidFromDocId = async ({ - docId, - user, - namespace, - }: { - docId: string; - user?: { name: string; id?: string }; - namespace?: string; - }) => { - const query = { - bool: { - filter: [ - { term: { doc_id: docId } }, - - // exclude user instructions - { bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } } }, - - // restrict access to user's own entries - ...getAccessQuery({ user, namespace }), - ], - }, - }; - - const response = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ - size: 1, - index: resourceNames.aliases.kb, - query, - _source: false, - }); - - return response.hits.hits[0]?._id; - }; - - addEntry = async ({ - entry: { id, ...doc }, - user, - namespace, - }: { - entry: Omit<KnowledgeBaseEntry, '@timestamp'>; - user?: { name: string; id?: string }; - namespace?: string; - }): Promise<void> => { - if (!this.dependencies.config.enableKnowledgeBase) { - return; - } - - try { - await this.dependencies.esClient.asInternalUser.index({ - index: resourceNames.aliases.kb, - id, - document: { - '@timestamp': new Date().toISOString(), - ...doc, - ...(doc.text ? { semantic_text: doc.text } : {}), - user, - namespace, - }, - refresh: 'wait_for', - }); - } catch (error) { - if (isInferenceEndpointMissingOrUnavailable(error)) { - throwKnowledgeBaseNotReady(error.body); - } - throw error; - } - }; - - deleteEntry = async ({ id }: { id: string }): Promise<void> => { - try { - await this.dependencies.esClient.asInternalUser.delete({ - index: resourceNames.aliases.kb, - id, - refresh: 'wait_for', - }); - - return Promise.resolve(); - } catch (error) { - if (isInferenceEndpointMissingOrUnavailable(error)) { - throwKnowledgeBaseNotReady(error.body); - } - throw error; - } - }; - - getStatus = async () => { - return getElserModelStatus({ - esClient: this.dependencies.esClient, - logger: this.dependencies.logger, - config: this.dependencies.config, - }); - }; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts deleted file mode 100644 index ece417d968a13..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { FeaturesPluginStart, FeaturesPluginSetup } from '@kbn/features-plugin/server'; -import type { - PluginSetupContract as ActionsPluginSetup, - PluginStartContract as ActionsPluginStart, -} from '@kbn/actions-plugin/server'; -import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; -import type { - TaskManagerSetupContract, - TaskManagerStartContract, -} from '@kbn/task-manager-plugin/server'; -import type { - DataViewsServerPluginSetup, - DataViewsServerPluginStart, -} from '@kbn/data-views-plugin/server'; -import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; -import type { CloudSetup, CloudStart } from '@kbn/cloud-plugin/server'; -import type { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/server'; -import type { RuleRegistryPluginStartContract } from '@kbn/rule-registry-plugin/server'; -import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; -import type { InferenceServerStart } from '@kbn/inference-plugin/server'; -import type { ObservabilityAIAssistantService } from './service'; - -export interface ObservabilityAIAssistantServerSetup { - /** - * Returns a Observability AI Assistant service instance - */ - service: ObservabilityAIAssistantService; -} - -export interface ObservabilityAIAssistantServerStart { - /** - * Returns a Observability AI Assistant service instance - */ - service: ObservabilityAIAssistantService; -} - -export interface ObservabilityAIAssistantPluginSetupDependencies { - actions: ActionsPluginSetup; - security: SecurityPluginSetup; - features: FeaturesPluginSetup; - taskManager: TaskManagerSetupContract; - dataViews: DataViewsServerPluginSetup; - licensing: LicensingPluginSetup; - cloud?: CloudSetup; - serverless?: ServerlessPluginSetup; - alerting: AlertingServerSetup; -} - -export interface ObservabilityAIAssistantPluginStartDependencies { - actions: ActionsPluginStart; - security: SecurityPluginStart; - features: FeaturesPluginStart; - taskManager: TaskManagerStartContract; - dataViews: DataViewsServerPluginStart; - licensing: LicensingPluginStart; - ruleRegistry: RuleRegistryPluginStartContract; - cloud?: CloudStart; - serverless?: ServerlessPluginStart; - alerting: AlertingServerStart; - inference: InferenceServerStart; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/tsconfig.json b/x-pack/plugins/observability_solution/observability_ai_assistant/tsconfig.json deleted file mode 100644 index 77b81c9c72882..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/tsconfig.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../typings/**/*", - "common/**/*", - "public/**/*", - "scripts/**/*", - "typings/**/*", - "public/**/*.json", - "server/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/logging", - "@kbn/kibana-utils-plugin", - "@kbn/core-analytics-browser", - "@kbn/core", - "@kbn/server-route-repository", - "@kbn/server-route-repository-client", - "@kbn/actions-plugin", - "@kbn/licensing-plugin", - "@kbn/std", - "@kbn/utility-types-jest", - "@kbn/kibana-react-plugin", - "@kbn/shared-ux-utility", - "@kbn/security-plugin", - "@kbn/config-schema", - "@kbn/utility-types", - "@kbn/data-views-plugin", - "@kbn/io-ts-utils", - "@kbn/rule-registry-plugin", - "@kbn/alerting-plugin", - "@kbn/spaces-plugin", - "@kbn/task-manager-plugin", - "@kbn/core-elasticsearch-server", - "@kbn/core-ui-settings-server", - "@kbn/apm-utils", - "@kbn/features-plugin", - "@kbn/cloud-plugin", - "@kbn/serverless", - "@kbn/core-elasticsearch-server", - "@kbn/core-ui-settings-server", - "@kbn/management-settings-ids", - "@kbn/ai-assistant-common", - "@kbn/inference-common", - "@kbn/core-lifecycle-server", - "@kbn/server-route-repository-utils", - "@kbn/inference-plugin" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/jest.config.js b/x-pack/plugins/observability_solution/observability_ai_assistant_app/jest.config.js deleted file mode 100644 index 7e3fb9e750448..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/jest.config.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/public', - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/common', - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/server', - ], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/jest_setup.js', - ], - collectCoverage: true, - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/{common,public,server}/**/*.{js,ts,tsx}', - ], - - coverageReporters: ['html'], -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/kibana.jsonc b/x-pack/plugins/observability_solution/observability_ai_assistant_app/kibana.jsonc deleted file mode 100644 index 957ca0272c087..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/kibana.jsonc +++ /dev/null @@ -1,47 +0,0 @@ -{ - "type": "plugin", - "id": "@kbn/observability-ai-assistant-app-plugin", - "owner": [ - "@elastic/obs-ai-assistant" - ], - "group": "observability", - "visibility": "private", - "plugin": { - "id": "observabilityAIAssistantApp", - "browser": true, - "server": true, - "configPath": [ - "xpack", - "observabilityAIAssistantApp" - ], - "requiredPlugins": [ - "aiAssistantManagementSelection", - "observabilityAIAssistant", - "observabilityShared", - "observability", - "actions", - "data", - "dataViews", - "lens", - "ruleRegistry", - "uiActions", - "triggersActionsUi", - "share", - "licensing", - "ml", - "alerting", - "features", - "inference", - "logsDataAccess", - "llmTasks" - ], - "optionalPlugins": [ - "cloud" - ], - "requiredBundles": [ - "kibanaReact", - "esqlDataGrid" - ], - "extraPublicDirs": [] - } -} \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/charts/spark_plot.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/charts/spark_plot.tsx deleted file mode 100644 index ddb57a127fe19..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/charts/spark_plot.tsx +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { - BarSeries, - Chart, - CurveType, - LineSeries, - PartialTheme, - ScaleType, - Settings, - Tooltip, - LineAnnotation, - AnnotationDomainType, - Position, -} from '@elastic/charts'; -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { useChartTheme } from '../../hooks/use_chart_theme'; - -export function SparkPlot({ - type, - timeseries, - annotations, -}: { - type: 'line' | 'bar'; - timeseries: Array<{ x: number; y: number | null }>; - annotations?: Array<{ - id: string; - x: number; - color: string; - icon: React.ReactNode; - label: string; - }>; -}) { - const defaultChartTheme = useChartTheme(); - - const sparkplotChartTheme: PartialTheme = { - chartMargins: { left: 0, right: 0, top: 0, bottom: 0 }, - chartPaddings: { - top: 12, - bottom: 12, - }, - lineSeriesStyle: { - point: { opacity: 0 }, - }, - areaSeriesStyle: { - point: { opacity: 0 }, - }, - }; - - return ( - <Chart - size={{ - width: 128, - height: 64, - }} - > - <Settings - theme={[sparkplotChartTheme, ...defaultChartTheme.theme]} - baseTheme={defaultChartTheme.baseTheme} - showLegend={false} - locale={i18n.getLocale()} - /> - <Tooltip type="none" /> - {type && type === 'bar' ? ( - <BarSeries - id="Sparkbar" - xScaleType={ScaleType.Linear} - yScaleType={ScaleType.Linear} - xAccessor="x" - yAccessors={['y']} - data={timeseries} - /> - ) : ( - <LineSeries - id="Sparkline" - xScaleType={ScaleType.Time} - yScaleType={ScaleType.Linear} - xAccessor={'x'} - yAccessors={['y']} - data={timeseries} - curve={CurveType.CURVE_MONOTONE_X} - /> - )} - {annotations?.map((annotation) => { - return ( - <LineAnnotation - id={annotation.id} - dataValues={[{ dataValue: annotation.x, header: annotation.label }]} - domainType={AnnotationDomainType.XDomain} - marker={annotation.icon} - markerPosition={Position.Bottom} - style={{ - line: { - strokeWidth: 2, - stroke: annotation.color, - }, - }} - /> - ); - })} - </Chart> - ); -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx deleted file mode 100644 index fd198c42fda08..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React, { useEffect, useRef, useState } from 'react'; -import { AssistantAvatar, useAbortableAsync } from '@kbn/observability-ai-assistant-plugin/public'; -import { EuiButton, EuiButtonEmpty, EuiLoadingSpinner, EuiToolTip } from '@elastic/eui'; -import { css } from '@emotion/react'; -import { v4 } from 'uuid'; -import useObservable from 'react-use/lib/useObservable'; -import { i18n } from '@kbn/i18n'; -import { CoreStart } from '@kbn/core-lifecycle-browser'; -import { AIAssistantAppService, useAIAssistantAppService, ChatFlyout } from '@kbn/ai-assistant'; -import { useKibana } from '../../hooks/use_kibana'; -import { useTheme } from '../../hooks/use_theme'; -import { useNavControlScreenContext } from '../../hooks/use_nav_control_screen_context'; -import { SharedProviders } from '../../utils/shared_providers'; -import { ObservabilityAIAssistantAppPluginStartDependencies } from '../../types'; -import { useNavControlScope } from '../../hooks/use_nav_control_scope'; - -interface NavControlWithProviderDeps { - appService: AIAssistantAppService; - coreStart: CoreStart; - pluginsStart: ObservabilityAIAssistantAppPluginStartDependencies; - isServerless?: boolean; -} - -export const NavControlWithProvider = ({ - appService, - coreStart, - pluginsStart, - isServerless, -}: NavControlWithProviderDeps) => { - return ( - <SharedProviders - coreStart={coreStart} - pluginsStart={pluginsStart} - service={appService} - theme$={coreStart.theme.theme$} - > - <NavControl isServerless={isServerless} /> - </SharedProviders> - ); -}; - -export function NavControl({ isServerless }: { isServerless?: boolean }) { - const service = useAIAssistantAppService(); - - const { - services: { - application, - http, - notifications, - plugins: { - start: { - observabilityAIAssistant: { ObservabilityAIAssistantChatServiceContext }, - }, - }, - }, - } = useKibana(); - - const [hasBeenOpened, setHasBeenOpened] = useState(false); - - useNavControlScreenContext(); - useNavControlScope(); - - const chatService = useAbortableAsync( - ({ signal }) => { - return hasBeenOpened - ? service.start({ signal }).catch((error) => { - notifications.toasts.addError(error, { - title: i18n.translate( - 'xpack.observabilityAiAssistant.navControl.initFailureErrorTitle', - { - defaultMessage: 'Failed to initialize Observability AI Assistant', - } - ), - }); - - setHasBeenOpened(false); - setIsOpen(false); - - throw error; - }) - : undefined; - }, - [service, hasBeenOpened, notifications.toasts] - ); - - const [isOpen, setIsOpen] = useState(false); - - const keyRef = useRef(v4()); - - useEffect(() => { - const conversationSubscription = service.conversations.predefinedConversation$.subscribe(() => { - keyRef.current = v4(); - setHasBeenOpened(true); - setIsOpen(true); - }); - - return () => { - conversationSubscription.unsubscribe(); - }; - }, [service.conversations.predefinedConversation$]); - - const { messages, title, hideConversationList } = useObservable( - service.conversations.predefinedConversation$ - ) ?? { - messages: [], - title: undefined, - hideConversationList: false, - }; - - const theme = useTheme(); - - const buttonCss = css` - padding: 0px 8px; - - svg path { - fill: ${theme.colors.darkestShade}; - } - `; - - useEffect(() => { - const keyboardListener = (event: KeyboardEvent) => { - if (event.ctrlKey && event.code === 'Semicolon') { - service.conversations.openNewConversation({ - messages: [], - }); - } - }; - - window.addEventListener('keypress', keyboardListener); - - return () => { - window.removeEventListener('keypress', keyboardListener); - }; - }, [service.conversations]); - - return ( - <> - <EuiToolTip content={buttonLabel}> - {isServerless ? ( - <EuiButtonEmpty - aria-label={buttonLabel} - data-test-subj="observabilityAiAssistantAppNavControlButton" - css={css` - padding: 0px 8px; - `} - onClick={() => { - service.conversations.openNewConversation({ - messages: [], - }); - }} - color="primary" - size="s" - > - {chatService.loading ? <EuiLoadingSpinner size="s" /> : <AssistantAvatar size="xs" />} - </EuiButtonEmpty> - ) : ( - <EuiButton - aria-label={buttonLabel} - data-test-subj="observabilityAiAssistantAppNavControlButton" - css={buttonCss} - onClick={() => { - service.conversations.openNewConversation({ - messages: [], - }); - }} - color="primary" - size="s" - fullWidth={false} - minWidth={0} - > - {chatService.loading ? <EuiLoadingSpinner size="s" /> : <AssistantAvatar size="xs" />} - </EuiButton> - )} - </EuiToolTip> - {chatService.value ? ( - <ObservabilityAIAssistantChatServiceContext.Provider value={chatService.value}> - <ChatFlyout - key={keyRef.current} - isOpen={isOpen} - initialMessages={messages} - initialTitle={title ?? ''} - onClose={() => { - setIsOpen(false); - }} - navigateToConversation={(conversationId?: string) => { - application.navigateToUrl( - http.basePath.prepend( - `/app/observabilityAIAssistant/conversations/${conversationId || ''}` - ) - ); - }} - hideConversationList={hideConversationList} - /> - </ObservabilityAIAssistantChatServiceContext.Provider> - ) : undefined} - </> - ); -} - -const buttonLabel = i18n.translate( - 'xpack.observabilityAiAssistant.navControl.openTheAIAssistantPopoverLabel', - { defaultMessage: 'Open the AI Assistant' } -); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/index.ts deleted file mode 100644 index 5de1c30de7c4c..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { PluginInitializer, PluginInitializerContext } from '@kbn/core/public'; -import { ConfigSchema, ObservabilityAIAssistantAppPlugin } from './plugin'; -import type { - ObservabilityAIAssistantAppPluginSetupDependencies, - ObservabilityAIAssistantAppPluginStartDependencies, - ObservabilityAIAssistantAppPublicSetup, - ObservabilityAIAssistantAppPublicStart, -} from './types'; - -export const plugin: PluginInitializer< - ObservabilityAIAssistantAppPublicSetup, - ObservabilityAIAssistantAppPublicStart, - ObservabilityAIAssistantAppPluginSetupDependencies, - ObservabilityAIAssistantAppPluginStartDependencies -> = (pluginInitializerContext: PluginInitializerContext<ConfigSchema>) => - new ObservabilityAIAssistantAppPlugin(pluginInitializerContext); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/plugin.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/plugin.tsx deleted file mode 100644 index cd1285b0017ce..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/plugin.tsx +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React from 'react'; -import ReactDOM from 'react-dom'; -import { - type AppMountParameters, - DEFAULT_APP_CATEGORIES, - type CoreSetup, - type CoreStart, - type Plugin, - type PluginInitializerContext, -} from '@kbn/core/public'; -import type { Logger } from '@kbn/logging'; -import { i18n } from '@kbn/i18n'; -import { AI_ASSISTANT_APP_ID } from '@kbn/deeplinks-observability'; -import { createAppService, AIAssistantAppService } from '@kbn/ai-assistant'; -import type { - ObservabilityAIAssistantAppPluginSetupDependencies, - ObservabilityAIAssistantAppPluginStartDependencies, - ObservabilityAIAssistantAppPublicSetup, - ObservabilityAIAssistantAppPublicStart, -} from './types'; -import { getObsAIAssistantConnectorType } from './rule_connector'; -import { NavControlInitiator } from './components/nav_control/lazy_nav_control'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ConfigSchema {} - -export class ObservabilityAIAssistantAppPlugin - implements - Plugin< - ObservabilityAIAssistantAppPublicSetup, - ObservabilityAIAssistantAppPublicStart, - ObservabilityAIAssistantAppPluginSetupDependencies, - ObservabilityAIAssistantAppPluginStartDependencies - > -{ - logger: Logger; - appService: AIAssistantAppService | undefined; - isServerless: boolean; - - constructor(context: PluginInitializerContext<ConfigSchema>) { - this.logger = context.logger.get(); - this.isServerless = context.env.packageInfo.buildFlavor === 'serverless'; - } - - setup( - coreSetup: CoreSetup, - _: ObservabilityAIAssistantAppPluginSetupDependencies - ): ObservabilityAIAssistantAppPublicSetup { - coreSetup.application.register({ - id: AI_ASSISTANT_APP_ID, - title: i18n.translate('xpack.observabilityAiAssistant.appTitle', { - defaultMessage: 'Observability AI Assistant', - }), - euiIconType: 'logoObservability', - appRoute: '/app/observabilityAIAssistant', - category: DEFAULT_APP_CATEGORIES.observability, - visibleIn: [], - deepLinks: [ - { - id: 'conversations', - title: i18n.translate('xpack.observabilityAiAssistant.conversationsDeepLinkTitle', { - defaultMessage: 'Conversations', - }), - path: '/conversations/new', - }, - ], - mount: async (appMountParameters: AppMountParameters<unknown>) => { - // Load application bundle and Get start services - const [{ Application }, [coreStart, pluginsStart]] = await Promise.all([ - import('./application'), - coreSetup.getStartServices() as Promise< - [CoreStart, ObservabilityAIAssistantAppPluginStartDependencies, unknown] - >, - ]); - - ReactDOM.render( - <Application - {...appMountParameters} - service={this.appService!} - coreStart={coreStart} - pluginsStart={pluginsStart as ObservabilityAIAssistantAppPluginStartDependencies} - />, - appMountParameters.element - ); - - return () => { - ReactDOM.unmountComponentAtNode(appMountParameters.element); - }; - }, - }); - - return {}; - } - - start( - coreStart: CoreStart, - pluginsStart: ObservabilityAIAssistantAppPluginStartDependencies - ): ObservabilityAIAssistantAppPublicStart { - const appService = (this.appService = createAppService({ - pluginsStart, - })); - const isEnabled = appService.isEnabled(); - if (isEnabled) { - coreStart.chrome.navControls.registerRight({ - mount: (element) => { - ReactDOM.render( - <NavControlInitiator - appService={appService} - coreStart={coreStart} - pluginsStart={pluginsStart} - isServerless={this.isServerless} - />, - element, - () => {} - ); - - return () => {}; - }, - // right before the user profile - order: 1001, - }); - } - - const service = pluginsStart.observabilityAIAssistant.service; - - service.register(async ({ registerRenderFunction }) => { - const { registerFunctions } = await import('./functions'); - - await registerFunctions({ pluginsStart, registerRenderFunction }); - }); - - pluginsStart.triggersActionsUi.actionTypeRegistry.register( - getObsAIAssistantConnectorType(service) - ); - return {}; - } -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/types.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/types.ts deleted file mode 100644 index 398ef5f3afe4c..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/types.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { LensPublicSetup, LensPublicStart } from '@kbn/lens-plugin/public'; -import type { - DataViewsPublicPluginSetup, - DataViewsPublicPluginStart, -} from '@kbn/data-views-plugin/public'; -import type { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import type { - ObservabilityAIAssistantPublicSetup, - ObservabilityAIAssistantPublicStart, -} from '@kbn/observability-ai-assistant-plugin/public'; -import type { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; -import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/public'; -import type { - ObservabilitySharedPluginSetup, - ObservabilitySharedPluginStart, -} from '@kbn/observability-shared-plugin/public'; -import type { MlPluginSetup, MlPluginStart } from '@kbn/ml-plugin/public'; -import type { - TriggersAndActionsUIPublicPluginSetup, - TriggersAndActionsUIPublicPluginStart, -} from '@kbn/triggers-actions-ui-plugin/public'; -import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; -import type { - AIAssistantManagementSelectionPluginPublicStart, - AIAssistantManagementSelectionPluginPublicSetup, -} from '@kbn/ai-assistant-management-plugin/public'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ObservabilityAIAssistantAppPublicStart {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ObservabilityAIAssistantAppPublicSetup {} - -export interface ObservabilityAIAssistantAppPluginStartDependencies { - licensing: LicensingPluginStart; - share: SharePluginStart; - lens: LensPublicStart; - dataViews: DataViewsPublicPluginStart; - uiActions: UiActionsStart; - observabilityAIAssistant: ObservabilityAIAssistantPublicStart; - observabilityShared: ObservabilitySharedPluginStart; - ml: MlPluginStart; - triggersActionsUi: TriggersAndActionsUIPublicPluginStart; - data: DataPublicPluginStart; - aiAssistantManagementSelection: AIAssistantManagementSelectionPluginPublicStart; -} - -export interface ObservabilityAIAssistantAppPluginSetupDependencies { - licensing: LicensingPluginSetup; - share: SharePluginSetup; - lens: LensPublicSetup; - dataViews: DataViewsPublicPluginSetup; - uiActions: UiActionsSetup; - observabilityAIAssistant: ObservabilityAIAssistantPublicSetup; - observabilityShared: ObservabilitySharedPluginSetup; - ml: MlPluginSetup; - triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; - aiAssistantManagementSelection: AIAssistantManagementSelectionPluginPublicSetup; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/README.md b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/README.md deleted file mode 100644 index 0e5bc22fe7c75..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Observability AI Assistant Evaluation Framework - -## Overview - -This tool is developed for our team working on the Elastic Observability platform, specifically focusing on evaluating the Observability AI Assistant. It simplifies scripting and evaluating various scenarios with the Large Language Model (LLM) integration. - -## Setup requirements - -- An Elasticsearch instance -- A Kibana instance -- At least one .gen-ai connector set up - -## Running evaluations - -Run the tool using: - -`$ node x-pack/plugins/observability_solution/observability_ai_assistant/scripts/evaluation/index.js` - -This will evaluate all existing scenarios, and write the evaluation results to the terminal. - -### Configuration - -#### Kibana and Elasticsearch - -By default, the tool will look for a Kibana instance running locally (at `http://localhost:5601`, which is the default address for running Kibana in development mode). It will also attempt to read the Kibana config file for the Elasticsearch address & credentials. If you want to override these settings, use `--kibana` and `--es`. Only basic auth is supported, e.g. `--kibana http://username:password@localhost:5601`. If you want to use a specific space, use `--spaceId` - -#### Connector - -Use `--connectorId` to specify a `.gen-ai` or `.bedrock` connector to use. If none are given, it will prompt you to select a connector based on the ones that are available. If only a single supported connector is found, it will be used without prompting. - -#### Persisting conversations - -By default, completed conversations are not persisted. If you do want to persist them, for instance for reviewing purposes, set the `--persist` flag to store them. This will also generate a clickable link in the output of the evaluation that takes you to the conversation. - -If you want to clear conversations on startup, use the `--clear` flag. This only works when `--persist` is enabled. If `--spaceId` is set, only conversations for the current space will be cleared. - -When storing conversations, the name of the scenario is used as a title. Set the `--autoTitle` flag to have the LLM generate a title for you. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts deleted file mode 100644 index fca94a8d57d05..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import path from 'path'; -import fs from 'fs'; -import yaml from 'js-yaml'; -import { identity, pickBy } from 'lodash'; - -export type KibanaConfig = ReturnType<typeof readKibanaConfig>; - -export const readKibanaConfig = () => { - const kibanaConfigDir = path.join(__filename, '../../../../../../../config'); - const kibanaDevConfig = path.join(kibanaConfigDir, 'kibana.dev.yml'); - const kibanaConfig = path.join(kibanaConfigDir, 'kibana.yml'); - - const loadedKibanaConfig = (yaml.load( - fs.readFileSync(fs.existsSync(kibanaDevConfig) ? kibanaDevConfig : kibanaConfig, 'utf8') - ) || {}) as {}; - - const cliEsCredentials = pickBy( - { - 'elasticsearch.username': process.env.ELASTICSEARCH_USERNAME, - 'elasticsearch.password': process.env.ELASTICSEARCH_PASSWORD, - 'elasticsearch.hosts': process.env.ELASTICSEARCH_HOST, - }, - identity - ) as { - 'elasticsearch.username'?: string; - 'elasticsearch.password'?: string; - 'elasticsearch.hosts'?: string; - }; - - return { - 'elasticsearch.hosts': 'http://localhost:9200', - 'elasticsearch.username': 'elastic', - 'elasticsearch.password': 'changeme', - ...loadedKibanaConfig, - ...cliEsCredentials, - }; -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts deleted file mode 100644 index 0a3fc6d9dc12d..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { - PluginSetupContract as ActionsPluginSetup, - PluginStartContract as ActionsPluginStart, -} from '@kbn/actions-plugin/server'; -import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; -import type { - DataViewsServerPluginSetup, - DataViewsServerPluginStart, -} from '@kbn/data-views-plugin/server'; -import type { FeaturesPluginStart, FeaturesPluginSetup } from '@kbn/features-plugin/server'; -import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; -import type { - ObservabilityAIAssistantServerSetup, - ObservabilityAIAssistantServerStart, -} from '@kbn/observability-ai-assistant-plugin/server'; -import type { - RuleRegistryPluginSetupContract, - RuleRegistryPluginStartContract, -} from '@kbn/rule-registry-plugin/server'; -import type { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/server'; -import type { - TaskManagerSetupContract, - TaskManagerStartContract, -} from '@kbn/task-manager-plugin/server'; -import type { CloudSetup, CloudStart } from '@kbn/cloud-plugin/server'; -import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; -import type { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; -import type { InferenceServerStart, InferenceServerSetup } from '@kbn/inference-plugin/server'; -import type { LogsDataAccessPluginStart } from '@kbn/logs-data-access-plugin/server'; -import type { LlmTasksPluginStart } from '@kbn/llm-tasks-plugin/server'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ObservabilityAIAssistantAppServerStart {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ObservabilityAIAssistantAppServerSetup {} - -export interface ObservabilityAIAssistantAppPluginStartDependencies { - observabilityAIAssistant: ObservabilityAIAssistantServerStart; - ruleRegistry: RuleRegistryPluginStartContract; - alerting: AlertingServerStart; - licensing: LicensingPluginStart; - actions: ActionsPluginStart; - security: SecurityPluginStart; - features: FeaturesPluginStart; - taskManager: TaskManagerStartContract; - dataViews: DataViewsServerPluginStart; - cloud?: CloudStart; - serverless?: ServerlessPluginStart; - inference: InferenceServerStart; - logsDataAccess: LogsDataAccessPluginStart; - llmTasks: LlmTasksPluginStart; -} - -export interface ObservabilityAIAssistantAppPluginSetupDependencies { - observabilityAIAssistant: ObservabilityAIAssistantServerSetup; - ruleRegistry: RuleRegistryPluginSetupContract; - alerting: AlertingServerSetup; - licensing: LicensingPluginSetup; - actions: ActionsPluginSetup; - security: SecurityPluginSetup; - features: FeaturesPluginSetup; - taskManager: TaskManagerSetupContract; - dataViews: DataViewsServerPluginSetup; - observability: ObservabilityPluginSetup; - cloud?: CloudSetup; - serverless?: ServerlessPluginSetup; - inference: InferenceServerSetup; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/tsconfig.json b/x-pack/plugins/observability_solution/observability_ai_assistant_app/tsconfig.json deleted file mode 100644 index e0a520fb574c7..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/tsconfig.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../typings/**/*", - "common/**/*", - "public/**/*", - "scripts/**/*", - "typings/**/*", - "public/**/*.json", - "server/**/*" - ], - "kbn_references": [ - "@kbn/es-types", - "@kbn/observability-ai-assistant-plugin", - "@kbn/field-formats-plugin", - "@kbn/core", - "@kbn/typed-react-router-config", - "@kbn/i18n", - "@kbn/management-settings-ids", - "@kbn/triggers-actions-ui-plugin", - "@kbn/shared-ux-utility", - "@kbn/data-views-plugin", - "@kbn/lens-embeddable-utils", - "@kbn/lens-plugin", - "@kbn/expressions-plugin", - "@kbn/ui-actions-plugin", - "@kbn/esql-utils", - "@kbn/visualization-utils", - "@kbn/ai-assistant-management-plugin", - "@kbn/kibana-react-plugin", - "@kbn/licensing-plugin", - "@kbn/logging", - "@kbn/deeplinks-observability", - "@kbn/share-plugin", - "@kbn/observability-shared-plugin", - "@kbn/ml-plugin", - "@kbn/data-plugin", - "@kbn/react-kibana-context-theme", - "@kbn/shared-ux-link-redirect-app", - "@kbn/dev-cli-runner", - "@kbn/tooling-log", - "@kbn/babel-register", - "@kbn/expect", - "@kbn/apm-synthtrace-client", - "@kbn/alerting-plugin", - "@kbn/apm-synthtrace", - "@kbn/esql-datagrid", - "@kbn/alerting-comparators", - "@kbn/core-lifecycle-browser", - "@kbn/inference-plugin", - "@kbn/ai-assistant", - "@kbn/apm-utils", - "@kbn/config-schema", - "@kbn/es-query", - "@kbn/rule-registry-plugin", - "@kbn/esql-validation-autocomplete", - "@kbn/esql-ast", - "@kbn/field-types", - "@kbn/security-plugin", - "@kbn/observability-plugin", - "@kbn/actions-plugin", - "@kbn/stack-connectors-plugin", - "@kbn/features-plugin", - "@kbn/serverless", - "@kbn/task-manager-plugin", - "@kbn/cloud-plugin", - "@kbn/logs-data-access-plugin", - "@kbn/ai-assistant-common", - "@kbn/inference-common", - "@kbn/llm-tasks-plugin", - "@kbn/product-doc-common", - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/jest.config.js b/x-pack/plugins/observability_solution/observability_ai_assistant_management/jest.config.js deleted file mode 100644 index bbe2bd0b6266e..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_management/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_management'], - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_management/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/tsconfig.json b/x-pack/plugins/observability_solution/observability_ai_assistant_management/tsconfig.json deleted file mode 100644 index 7b78d52c64806..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_management/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/management-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/typed-react-router-config", - "@kbn/core-chrome-browser", - "@kbn/observability-ai-assistant-plugin", - "@kbn/serverless", - "@kbn/management-settings-components-field-row", - "@kbn/observability-shared-plugin", - "@kbn/config-schema", - "@kbn/core-ui-settings-common", - "@kbn/logs-data-access-plugin", - "@kbn/core-plugins-browser", - "@kbn/ai-assistant", - "@kbn/core-plugins-server", - "@kbn/product-doc-base-plugin" - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/emotion.d.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/emotion.d.ts new file mode 100644 index 0000000000000..213178080e536 --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/emotion.d.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import '@emotion/react'; +import type { UseEuiTheme } from '@elastic/eui'; + +declare module '@emotion/react' { + // eslint-disable-next-line @typescript-eslint/no-empty-interface + export interface Theme extends UseEuiTheme {} +} diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx b/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx index 0020df30b8708..0d0adc23f77c8 100644 --- a/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx @@ -11,12 +11,12 @@ import { EuiHeaderLinks, EuiHeaderSection, EuiHeaderSectionItem, + useEuiTheme, } from '@elastic/eui'; import { css } from '@emotion/react'; import styled from '@emotion/styled'; import { HeaderMenuPortal } from '@kbn/observability-shared-plugin/public'; import { toMountPoint } from '@kbn/react-kibana-mount'; -import { euiThemeVars } from '@kbn/ui-theme'; import { LogsExplorerTabs } from '@kbn/discover-plugin/public'; import React, { useEffect, useState } from 'react'; import useObservable from 'react-use/lib/useObservable'; @@ -44,12 +44,13 @@ export const LogsExplorerTopNavMenu = () => { }; const ProjectTopNav = () => { + const { euiTheme } = useEuiTheme(); const { services } = useKibanaContextForPlugin(); return ( <EuiHeader data-test-subj="logsExplorerHeaderMenu" - css={{ boxShadow: 'none', backgroundColor: euiThemeVars.euiPageBackgroundColor }} + css={{ boxShadow: 'none', backgroundColor: euiTheme.colors.backgroundBasePlain }} > <EuiHeaderSection> <EuiHeaderSectionItem> @@ -59,7 +60,7 @@ const ProjectTopNav = () => { <EuiHeaderSection side="right" css={css` - gap: ${euiThemeVars.euiSizeM}; + gap: ${euiTheme.size.m}; `} > <EuiHeaderSectionItem> @@ -85,6 +86,7 @@ const ProjectTopNav = () => { }; const ClassicTopNav = () => { + const { euiTheme } = useEuiTheme(); const { services: { appParams: { setHeaderActionMenu }, @@ -110,7 +112,7 @@ const ClassicTopNav = () => { <EuiHeaderSection data-test-subj="logsExplorerHeaderMenu" css={css` - margin-left: ${euiThemeVars.euiSizeM}; + margin-left: ${euiTheme.size.m}; `} > <EuiHeaderSectionItem> @@ -127,7 +129,7 @@ const ClassicTopNav = () => { chrome.setBreadcrumbsAppendExtension(previousAppendExtension); } }; - }, [chrome, i18nStart, previousAppendExtension, theme]); + }, [chrome, i18nStart, previousAppendExtension, theme, euiTheme]); return ( <HeaderMenuPortal setHeaderActionMenu={setHeaderActionMenu} theme$={theme.theme$}> @@ -151,9 +153,9 @@ const ClassicTopNav = () => { }; const VerticalRule = styled.span` - width: 1px; + width: ${(props) => props.theme.euiTheme.border.width.thin}; height: 20px; - background-color: ${euiThemeVars.euiColorLightShade}; + background-color: ${(props) => props.theme.euiTheme.colors.borderBaseSubdued}; `; const ConditionalVerticalRule = ({ Component }: { Component: JSX.Element | null }) => diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/tsconfig.json b/x-pack/plugins/observability_solution/observability_logs_explorer/tsconfig.json index 443d4ef8f0de7..7b786ae5bc7ed 100644 --- a/x-pack/plugins/observability_solution/observability_logs_explorer/tsconfig.json +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/tsconfig.json @@ -8,7 +8,8 @@ "common/**/*", "public/**/*", "server/**/*", - ".storybook/**/*.tsx" + ".storybook/**/*.tsx", + "emotion.d.ts", ], "kbn_references": [ "@kbn/config-schema", @@ -31,7 +32,6 @@ "@kbn/share-plugin", "@kbn/shared-ux-router", "@kbn/shared-ux-utility", - "@kbn/ui-theme", "@kbn/xstate-utils", "@kbn/router-utils", "@kbn/observability-ai-assistant-plugin", diff --git a/x-pack/plugins/observability_solution/observability_onboarding/e2e/kibana.jsonc b/x-pack/plugins/observability_solution/observability_onboarding/e2e/kibana.jsonc index 655ccc396d3fe..033d72a02427f 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/e2e/kibana.jsonc +++ b/x-pack/plugins/observability_solution/observability_onboarding/e2e/kibana.jsonc @@ -1,10 +1,7 @@ { "type": "test-helper", "id": "@kbn/observability-onboarding-e2e", - "owner": [ - "@elastic/obs-ux-logs-team", - "@elastic/obs-ux-onboarding-team" - ], + "owner": ["@elastic/obs-ux-logs-team"], "group": "observability", "visibility": "private", "devOnly": true diff --git a/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc b/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc index 8c24f5376a4bb..b1c3856839f99 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc +++ b/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc @@ -1,10 +1,7 @@ { "type": "plugin", "id": "@kbn/observability-onboarding-plugin", - "owner": [ - "@elastic/obs-ux-logs-team", - "@elastic/obs-ux-onboarding-team" - ], + "owner": ["@elastic/obs-ux-logs-team"], "group": "observability", "visibility": "private", "plugin": { diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/api_key_banner.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/api_key_banner.tsx index 7c5cf36a46b30..bbcf20935b21a 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/api_key_banner.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/api_key_banner.tsx @@ -83,7 +83,7 @@ export function ApiKeyBanner({ data-test-subj="observabilityOnboardingApiKeySuccessCalloutButton" iconType="copyClipboard" onClick={copy} - color="success" + color="primary" css={{ '> svg.euiIcon': { borderRadius: '0 !important', diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/configure_logs.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/configure_logs.tsx index 715116a00b28e..1c5045c893bef 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/configure_logs.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/configure_logs.tsx @@ -284,7 +284,7 @@ export function ConfigureLogsContent() { id="advancedSettingsAccordion" css={{ '.euiAccordion__buttonContent': { - color: euiTheme.colors.primaryText, + color: euiTheme.colors.textPrimary, fontSize: xsFontSize, }, '.euiAccordion__arrow svg': { diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx index bb44d3ec38458..51101ead8c339 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx @@ -220,7 +220,7 @@ export function InstallElasticAgent() { panelFooter={[ <EuiButton data-test-subj="obltOnboardingExploreLogs" - color="success" + color="primary" fill iconType="magnifyWithPlus" onClick={onContinue} diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/optional_form_row.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/optional_form_row.tsx index ca92e441a2725..83efba6aa688b 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/optional_form_row.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/optional_form_row.tsx @@ -23,7 +23,7 @@ export function OptionalFormRow(props: OptionalFormRowProps) { }, '.euiFormLabel > .euiFlexGroup > div:last-of-type': { fontWeight: 'normal', - color: euiTheme.colors.subduedText, + color: euiTheme.colors.textSubdued, }, }} label={ diff --git a/x-pack/plugins/observability_solution/observability_shared/common/entity/entity_types.ts b/x-pack/plugins/observability_solution/observability_shared/common/entity/entity_types.ts index db3e91fbf493a..222780a1fc31a 100644 --- a/x-pack/plugins/observability_solution/observability_shared/common/entity/entity_types.ts +++ b/x-pack/plugins/observability_solution/observability_shared/common/entity/entity_types.ts @@ -14,6 +14,7 @@ export const BUILT_IN_ENTITY_TYPES = { HOST: 'host', CONTAINER: 'container', SERVICE: 'service', + SERVICE_V2: 'built_in_services_from_ecs_data', KUBERNETES: { CLUSTER: createKubernetesEntity('cluster'), CONTAINER: createKubernetesEntity('container'), diff --git a/x-pack/plugins/observability_solution/observability_shared/common/field_names/elasticsearch.ts b/x-pack/plugins/observability_solution/observability_shared/common/field_names/elasticsearch.ts index e703cd487259c..5569dac69b8be 100644 --- a/x-pack/plugins/observability_solution/observability_shared/common/field_names/elasticsearch.ts +++ b/x-pack/plugins/observability_solution/observability_shared/common/field_names/elasticsearch.ts @@ -146,6 +146,8 @@ export const PROFILE_ALLOC_SPACE = 'profile.alloc_space.bytes'; export const PROFILE_INUSE_OBJECTS = 'profile.inuse_objects.count'; export const PROFILE_INUSE_SPACE = 'profile.inuse_space.bytes'; +export const DATA_STREAM_TYPE = 'data_stream.type'; + export const ENTITY = 'entity'; export const ENTITY_ID = 'entity.id'; export const ENTITY_TYPE = 'entity.type'; diff --git a/x-pack/plugins/observability_solution/observability_shared/common/index.ts b/x-pack/plugins/observability_solution/observability_shared/common/index.ts index a8e26366ab4b3..24d12362d7cfa 100644 --- a/x-pack/plugins/observability_solution/observability_shared/common/index.ts +++ b/x-pack/plugins/observability_solution/observability_shared/common/index.ts @@ -128,15 +128,16 @@ export { PROFILE_ALLOC_SPACE, PROFILE_INUSE_OBJECTS, PROFILE_INUSE_SPACE, + DATA_STREAM_TYPE, ENTITY, - ENTITY_DEFINITION_ID, - ENTITY_DISPLAY_NAME, - ENTITY_FIRST_SEEN, ENTITY_ID, - ENTITY_LAST_SEEN, ENTITY_TYPE, - SOURCE_DATA_STREAM_TYPE, + ENTITY_LAST_SEEN, + ENTITY_FIRST_SEEN, + ENTITY_DISPLAY_NAME, + ENTITY_DEFINITION_ID, ENTITY_IDENTITY_FIELDS, + SOURCE_DATA_STREAM_TYPE, } from './field_names/elasticsearch'; export { diff --git a/x-pack/plugins/observability_solution/observability_shared/common/locators/apm/transaction_details_by_trace_id_locator.ts b/x-pack/plugins/observability_solution/observability_shared/common/locators/apm/transaction_details_by_trace_id_locator.ts index 2e461bc4f9d55..94fa1176c3ee0 100644 --- a/x-pack/plugins/observability_solution/observability_shared/common/locators/apm/transaction_details_by_trace_id_locator.ts +++ b/x-pack/plugins/observability_solution/observability_shared/common/locators/apm/transaction_details_by_trace_id_locator.ts @@ -4,14 +4,14 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import qs from 'query-string'; import type { LocatorDefinition, LocatorPublic } from '@kbn/share-plugin/public'; -import type { SerializableRecord } from '@kbn/utility-types'; +import { + TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR, + type TransactionDetailsByTraceIdLocatorParams, +} from '@kbn/deeplinks-observability'; -export const TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR = 'TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR'; - -export interface TransactionDetailsByTraceIdLocatorParams extends SerializableRecord { - traceId: string; -} +export { TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR, type TransactionDetailsByTraceIdLocatorParams }; export type TransactionDetailsByTraceIdLocator = LocatorPublic<TransactionDetailsByTraceIdLocatorParams>; @@ -21,10 +21,15 @@ export class TransactionDetailsByTraceIdLocatorDefinition { public readonly id = TRANSACTION_DETAILS_BY_TRACE_ID_LOCATOR; - public readonly getLocation = async ({ traceId }: TransactionDetailsByTraceIdLocatorParams) => { + public readonly getLocation = async ({ + rangeFrom, + rangeTo, + traceId, + }: TransactionDetailsByTraceIdLocatorParams) => { + const params = { rangeFrom, rangeTo }; return { app: 'apm', - path: `/link-to/trace/${encodeURIComponent(traceId)}`, + path: `/link-to/trace/${encodeURIComponent(traceId)}?${qs.stringify(params)}`, state: {}, }; }; diff --git a/x-pack/plugins/observability_solution/observability_shared/common/trigger_ids.ts b/x-pack/plugins/observability_solution/observability_shared/common/trigger_ids.ts index 404aaab8781b1..8a75472e0546b 100644 --- a/x-pack/plugins/observability_solution/observability_shared/common/trigger_ids.ts +++ b/x-pack/plugins/observability_solution/observability_shared/common/trigger_ids.ts @@ -6,7 +6,6 @@ */ export enum ObservabilityTriggerId { - LogEntryContextMenu = 'logEntryContextMenu', ApmTransactionContextMenu = 'apmTransactionContextMenu', ApmErrorContextMenu = 'apmErrorContextMenu', } diff --git a/x-pack/plugins/observability_solution/observability_shared/tsconfig.json b/x-pack/plugins/observability_solution/observability_shared/tsconfig.json index f7b8a7ff6c573..15ae8d34c7f55 100644 --- a/x-pack/plugins/observability_solution/observability_shared/tsconfig.json +++ b/x-pack/plugins/observability_solution/observability_shared/tsconfig.json @@ -46,6 +46,7 @@ "@kbn/es-query", "@kbn/serverless", "@kbn/data-views-plugin", + "@kbn/deeplinks-observability", ], "exclude": ["target/**/*", ".storybook/**/*.js"] } diff --git a/x-pack/plugins/observability_solution/profiling/public/index.tsx b/x-pack/plugins/observability_solution/profiling/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/profiling/public/index.tsx rename to x-pack/plugins/observability_solution/profiling/public/index.ts diff --git a/x-pack/plugins/observability_solution/profiling/public/plugin.ts b/x-pack/plugins/observability_solution/profiling/public/plugin.ts new file mode 100644 index 0000000000000..752b9c92a2195 --- /dev/null +++ b/x-pack/plugins/observability_solution/profiling/public/plugin.ts @@ -0,0 +1,185 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + AppMountParameters, + AppUpdater, + CoreSetup, + CoreStart, + DEFAULT_APP_CATEGORIES, + Plugin, +} from '@kbn/core/public'; +import { i18n } from '@kbn/i18n'; +import { NavigationSection } from '@kbn/observability-shared-plugin/public'; +import type { Location } from 'history'; +import { BehaviorSubject, combineLatest, from, map, take } from 'rxjs'; +import { OBLT_PROFILING_APP_ID } from '@kbn/deeplinks-observability'; +import { registerEmbeddables } from './embeddables/register_embeddables'; +import { getServices } from './services'; +import type { ProfilingPluginPublicSetupDeps, ProfilingPluginPublicStartDeps } from './types'; +import { ProfilingEmbeddablesDependencies } from './embeddables/profiling_embeddable_provider'; + +export type ProfilingPluginSetup = void; +export type ProfilingPluginStart = void; + +export class ProfilingPlugin + implements + Plugin< + ProfilingPluginSetup, + ProfilingPluginStart, + ProfilingPluginPublicSetupDeps, + ProfilingPluginPublicStartDeps + > +{ + public setup( + coreSetup: CoreSetup<ProfilingPluginPublicStartDeps>, + pluginsSetup: ProfilingPluginPublicSetupDeps + ) { + // Register an application into the side navigation menu + const links = [ + { + id: 'stacktraces', + title: i18n.translate('xpack.profiling.navigation.stacktracesLinkLabel', { + defaultMessage: 'Stacktraces', + }), + path: '/stacktraces', + }, + { + id: 'flamegraphs', + title: i18n.translate('xpack.profiling.navigation.flameGraphsLinkLabel', { + defaultMessage: 'Flamegraphs', + }), + path: '/flamegraphs', + }, + { + id: 'functions', + title: i18n.translate('xpack.profiling.navigation.functionsLinkLabel', { + defaultMessage: 'Functions', + }), + path: '/functions', + }, + ]; + + const kuerySubject = new BehaviorSubject<string>(''); + const appUpdater$ = new BehaviorSubject<AppUpdater>(() => ({})); + + const section$ = combineLatest([from(coreSetup.getStartServices()), kuerySubject]).pipe( + map(([[coreStart], kuery]) => { + if (coreStart.application.capabilities.profiling.show) { + let isSidebarEnabled = true; + coreStart.chrome + .getChromeStyle$() + .pipe(take(1)) + .subscribe((style) => (isSidebarEnabled = style === 'classic')); + + if (isSidebarEnabled) { + // classic navigation + const sections: NavigationSection[] = [ + { + label: i18n.translate('xpack.profiling.navigation.sectionLabel', { + defaultMessage: 'Universal Profiling', + }), + entries: links.map((link) => { + return { + app: OBLT_PROFILING_APP_ID, + label: link.title, + path: kuery ? `${link.path}?kuery=${kuery}` : link.path, + matchPath: (path) => { + return path.startsWith(link.path); + }, + }; + }), + sortKey: 700, + }, + ]; + return sections; + } else { + // solution navigation + appUpdater$.next(() => ({ + deepLinks: links.map((link) => ({ + ...link, + path: kuery ? `${link.path}?kuery=${encodeURIComponent(kuery)}` : link.path, + })), + })); + } + } + return []; + }) + ); + + pluginsSetup.observabilityShared.navigation.registerSections(section$); + + const profilingFetchServices = getServices(); + + coreSetup.application.register({ + id: OBLT_PROFILING_APP_ID, + title: 'Universal Profiling', + euiIconType: 'logoObservability', + appRoute: '/app/profiling', + category: DEFAULT_APP_CATEGORIES.observability, + deepLinks: links, + updater$: appUpdater$, + async mount({ element, history, theme$, setHeaderActionMenu }: AppMountParameters) { + const [coreStart, pluginsStart] = await coreSetup.getStartServices(); + + const { renderApp } = await import('./app'); + + function pushKueryToSubject(location: Location) { + const query = new URLSearchParams(location.search); + kuerySubject.next(query.get('kuery') ?? ''); + } + + pushKueryToSubject(history.location); + + history.listen(pushKueryToSubject); + + const unmount = renderApp( + { + profilingFetchServices, + coreStart, + coreSetup, + pluginsStart, + pluginsSetup, + history, + theme$, + setHeaderActionMenu, + }, + element + ); + + return () => { + unmount(); + kuerySubject.next(''); + }; + }, + }); + + const getProfilingEmbeddableDependencies = + async (): Promise<ProfilingEmbeddablesDependencies> => { + const [coreStart, pluginsStart] = await coreSetup.getStartServices(); + return { + coreStart, + coreSetup, + pluginsStart, + pluginsSetup, + profilingFetchServices, + }; + }; + + getProfilingEmbeddableDependencies().then((deps) => { + registerEmbeddables(deps); + }); + + return {}; + } + + public start(core: CoreStart) { + return {}; + } + + public stop() {} +} diff --git a/x-pack/plugins/observability_solution/profiling/public/plugin.tsx b/x-pack/plugins/observability_solution/profiling/public/plugin.tsx deleted file mode 100644 index fca4f8dcb4c6b..0000000000000 --- a/x-pack/plugins/observability_solution/profiling/public/plugin.tsx +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - AppMountParameters, - CoreSetup, - CoreStart, - DEFAULT_APP_CATEGORIES, - Plugin, -} from '@kbn/core/public'; -import { i18n } from '@kbn/i18n'; -import { NavigationSection } from '@kbn/observability-shared-plugin/public'; -import type { Location } from 'history'; -import { BehaviorSubject, combineLatest, from, map } from 'rxjs'; -import { OBLT_PROFILING_APP_ID } from '@kbn/deeplinks-observability'; -import { registerEmbeddables } from './embeddables/register_embeddables'; -import { getServices } from './services'; -import type { ProfilingPluginPublicSetupDeps, ProfilingPluginPublicStartDeps } from './types'; -import { ProfilingEmbeddablesDependencies } from './embeddables/profiling_embeddable_provider'; - -export type ProfilingPluginSetup = void; -export type ProfilingPluginStart = void; - -export class ProfilingPlugin - implements - Plugin< - ProfilingPluginSetup, - ProfilingPluginStart, - ProfilingPluginPublicSetupDeps, - ProfilingPluginPublicStartDeps - > -{ - public setup( - coreSetup: CoreSetup<ProfilingPluginPublicStartDeps>, - pluginsSetup: ProfilingPluginPublicSetupDeps - ) { - // Register an application into the side navigation menu - const links = [ - { - id: 'stacktraces', - title: i18n.translate('xpack.profiling.navigation.stacktracesLinkLabel', { - defaultMessage: 'Stacktraces', - }), - path: '/stacktraces', - }, - { - id: 'flamegraphs', - title: i18n.translate('xpack.profiling.navigation.flameGraphsLinkLabel', { - defaultMessage: 'Flamegraphs', - }), - path: '/flamegraphs', - }, - { - id: 'functions', - title: i18n.translate('xpack.profiling.navigation.functionsLinkLabel', { - defaultMessage: 'Functions', - }), - path: '/functions', - }, - ]; - - const kuerySubject = new BehaviorSubject<string>(''); - - const section$ = combineLatest([from(coreSetup.getStartServices()), kuerySubject]).pipe( - map(([[coreStart], kuery]) => { - if (coreStart.application.capabilities.profiling.show) { - const sections: NavigationSection[] = [ - { - label: i18n.translate('xpack.profiling.navigation.sectionLabel', { - defaultMessage: 'Universal Profiling', - }), - entries: links.map((link) => { - return { - app: OBLT_PROFILING_APP_ID, - label: link.title, - path: `${link.path}?kuery=${kuery ?? ''}`, - matchPath: (path) => { - return path.startsWith(link.path); - }, - }; - }), - sortKey: 700, - }, - ]; - return sections; - } - return []; - }) - ); - - pluginsSetup.observabilityShared.navigation.registerSections(section$); - - const profilingFetchServices = getServices(); - - coreSetup.application.register({ - id: OBLT_PROFILING_APP_ID, - title: 'Universal Profiling', - euiIconType: 'logoObservability', - appRoute: '/app/profiling', - category: DEFAULT_APP_CATEGORIES.observability, - deepLinks: links, - async mount({ element, history, theme$, setHeaderActionMenu }: AppMountParameters) { - const [coreStart, pluginsStart] = await coreSetup.getStartServices(); - - const { renderApp } = await import('./app'); - - function pushKueryToSubject(location: Location) { - const query = new URLSearchParams(location.search); - kuerySubject.next(query.get('kuery') ?? ''); - } - - pushKueryToSubject(history.location); - - history.listen(pushKueryToSubject); - - const unmount = renderApp( - { - profilingFetchServices, - coreStart, - coreSetup, - pluginsStart, - pluginsSetup, - history, - theme$, - setHeaderActionMenu, - }, - element - ); - - return () => { - unmount(); - kuerySubject.next(''); - }; - }, - }); - - const getProfilingEmbeddableDependencies = - async (): Promise<ProfilingEmbeddablesDependencies> => { - const [coreStart, pluginsStart] = await coreSetup.getStartServices(); - return { - coreStart, - coreSetup, - pluginsStart, - pluginsSetup, - profilingFetchServices, - }; - }; - - getProfilingEmbeddableDependencies().then((deps) => { - registerEmbeddables(deps); - }); - - return {}; - } - - public start(core: CoreStart) { - return {}; - } - - public stop() {} -} diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/README.md b/x-pack/plugins/observability_solution/slo/docs/openapi/slo/README.md deleted file mode 100644 index f6a80b82c9754..0000000000000 --- a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# OpenAPI (Experimental) - -The current self-contained spec file is [as YAML](https://raw.githubusercontent.com/elastic/kibana/master/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml) and can be used for online tools like those found at <https://openapi.tools/>. -This spec is experimental and may be incomplete or change later. - -A guide about the OpenApi specification can be found at [https://swagger.io/docs/specification/about/](https://swagger.io/docs/specification/about/). - -## The `openapi/slo` folder - -- `entrypoint.yaml` is the overview file which pulls together all the paths and components. -- [Paths](paths/README.md): this defines each endpoint. A path can have one operation per http method. -- [Components](components/README.md): Reusable components - -## Tools - -It is possible to manually validate the docs before bundling them with the following -command in the `x-pack/plugins/observability_solution/slo/docs/openapi/slo` folder: - -```bash -make validate -``` - -Then you can generate the `bundled` files by running the following command- this target will automatically validate inputs and lint the result: - -```bash -make bundle -``` - -To lint the generated bundle manually, run: - -```bash -make lint -``` - -To join these files with the rest of the Kibana APIs, refer to `oas_docs/README.md` diff --git a/x-pack/plugins/observability_solution/slo/e2e/synthetics_run.ts b/x-pack/plugins/observability_solution/slo/e2e/synthetics_run.ts deleted file mode 100644 index 642b7ef4cff23..0000000000000 --- a/x-pack/plugins/observability_solution/slo/e2e/synthetics_run.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { FtrConfigProviderContext } from '@kbn/test'; -import { SyntheticsRunner, argv } from '@kbn/synthetics-e2e'; - -const { headless, grep, bail: pauseOnError } = argv; - -async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); - return { - ...kibanaConfig.getAll(), - testRunner: async ({ getService }: any) => { - const syntheticsRunner = new SyntheticsRunner(getService, { - headless, - match: grep, - pauseOnError, - }); - - await syntheticsRunner.setup(); - - await syntheticsRunner.loadTestFiles(async () => { - require('./journeys'); - }); - - await syntheticsRunner.run(); - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default runE2ETests; diff --git a/x-pack/plugins/observability_solution/slo/e2e/tsconfig.json b/x-pack/plugins/observability_solution/slo/e2e/tsconfig.json deleted file mode 100644 index 6c4be7e101a02..0000000000000 --- a/x-pack/plugins/observability_solution/slo/e2e/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "exclude": ["tmp", "target/**/*"], - "include": ["**/*"], - "compilerOptions": { - "outDir": "target/types", - "types": [ "node"], - "isolatedModules": false, - }, - "kbn_references": [ - "@kbn/test", - "@kbn/ftr-common-functional-services", - "@kbn/data-forge", - "@kbn/synthetics-e2e", - ] -} diff --git a/x-pack/plugins/observability_solution/slo/jest.config.js b/x-pack/plugins/observability_solution/slo/jest.config.js deleted file mode 100644 index fa7ff9c84deca..0000000000000 --- a/x-pack/plugins/observability_solution/slo/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/slo'], - setupFiles: ['<rootDir>/x-pack/plugins/observability_solution/slo/.storybook/jest_setup.js'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/observability_solution/slo', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/slo/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/slo/public/utils/test_helper.tsx b/x-pack/plugins/observability_solution/slo/public/utils/test_helper.tsx deleted file mode 100644 index 44cd0abceded4..0000000000000 --- a/x-pack/plugins/observability_solution/slo/public/utils/test_helper.tsx +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { AppMountParameters } from '@kbn/core/public'; -import { coreMock } from '@kbn/core/public/mocks'; -import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; -import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; -import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; -import { createObservabilityRuleTypeRegistryMock } from '@kbn/observability-plugin/public'; -import { DefaultClientOptions, createRepositoryClient } from '@kbn/server-route-repository-client'; -import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { render as testLibRender } from '@testing-library/react'; -import React from 'react'; -import type { SLORouteRepository } from '../../server/routes/get_slo_server_route_repository'; -import { PluginContext } from '../context/plugin_context'; - -const appMountParameters = { setHeaderActionMenu: () => {} } as unknown as AppMountParameters; -const observabilityRuleTypeRegistry = createObservabilityRuleTypeRegistryMock(); - -export const core = coreMock.createStart(); -export const data = dataPluginMock.createStartContract(); - -const queryClient = new QueryClient({ - defaultOptions: { - queries: { - retry: false, - }, - }, - logger: { - // eslint-disable-next-line no-console - log: console.log, - // eslint-disable-next-line no-console - warn: console.warn, - error: () => {}, - }, -}); - -const sloClient = createRepositoryClient<SLORouteRepository, DefaultClientOptions>(core); - -export const render = (component: React.ReactNode) => { - return testLibRender( - // @ts-ignore - <IntlProvider locale="en-US"> - <KibanaContextProvider - services={{ - ...core, - data, - exploratoryView: { - createExploratoryViewUrl: jest.fn(), - getAppDataView: jest.fn(), - // eslint-disable-next-line @kbn/i18n/strings_should_be_translated_with_i18n - ExploratoryViewEmbeddable: () => <div>Embeddable exploratory view</div>, - }, - }} - > - <PluginContext.Provider - value={{ - appMountParameters, - observabilityRuleTypeRegistry, - ObservabilityPageTemplate: KibanaPageTemplate, - sloClient, - }} - > - <QueryClientProvider client={queryClient}>{component}</QueryClientProvider> - </PluginContext.Provider> - </KibanaContextProvider> - </IntlProvider> - ); -}; diff --git a/x-pack/plugins/observability_solution/slo/server/index.ts b/x-pack/plugins/observability_solution/slo/server/index.ts deleted file mode 100644 index 76806ac4d16cd..0000000000000 --- a/x-pack/plugins/observability_solution/slo/server/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; -import { SLOConfig, configSchema } from '../common/config'; - -// This exports static code and TypeScript types, -// as well as, Kibana Platform `plugin()` initializer. - -export async function plugin(ctx: PluginInitializerContext<SLOConfig>) { - const { SLOPlugin } = await import('./plugin'); - return new SLOPlugin(ctx); -} - -export const config: PluginConfigDescriptor<SLOConfig> = { - schema: configSchema, - exposeToBrowser: { - experimental: true, - }, -}; diff --git a/x-pack/plugins/observability_solution/slo/server/plugin.ts b/x-pack/plugins/observability_solution/slo/server/plugin.ts deleted file mode 100644 index 99cd4a2230a94..0000000000000 --- a/x-pack/plugins/observability_solution/slo/server/plugin.ts +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - CoreSetup, - CoreStart, - DEFAULT_APP_CATEGORIES, - Logger, - Plugin, - PluginInitializerContext, - SavedObjectsClient, -} from '@kbn/core/server'; -import { AlertsLocatorDefinition, sloFeatureId } from '@kbn/observability-plugin/common'; -import { SLO_BURN_RATE_RULE_TYPE_ID } from '@kbn/rule-data-utils'; -import { ALERTING_FEATURE_ID } from '@kbn/alerting-plugin/common'; -import { KibanaFeatureScope } from '@kbn/features-plugin/common'; -import { i18n } from '@kbn/i18n'; -import { mapValues } from 'lodash'; -import { registerSloUsageCollector } from './lib/collectors/register'; -import { registerBurnRateRule } from './lib/rules/register_burn_rate_rule'; -import { getSloServerRouteRepository } from './routes/get_slo_server_route_repository'; -import { registerServerRoutes } from './routes/register_routes'; -import { SLORoutesDependencies } from './routes/types'; -import { SO_SLO_TYPE, slo } from './saved_objects'; -import { SO_SLO_SETTINGS_TYPE, sloSettings } from './saved_objects/slo_settings'; -import { DefaultResourceInstaller, DefaultSLOInstaller } from './services'; -import { SloOrphanSummaryCleanupTask } from './services/tasks/orphan_summary_cleanup_task'; -import type { - SLOConfig, - SLOPluginSetupDependencies, - SLOPluginStartDependencies, - SLOServerSetup, - SLOServerStart, -} from './types'; - -const sloRuleTypes = [SLO_BURN_RATE_RULE_TYPE_ID]; - -export class SLOPlugin - implements - Plugin<SLOServerSetup, SLOServerStart, SLOPluginSetupDependencies, SLOPluginStartDependencies> -{ - private readonly logger: Logger; - private readonly config: SLOConfig; - private readonly isServerless: boolean; - private sloOrphanCleanupTask?: SloOrphanSummaryCleanupTask; - - constructor(private readonly initContext: PluginInitializerContext) { - this.logger = this.initContext.logger.get(); - this.config = this.initContext.config.get<SLOConfig>(); - this.isServerless = this.initContext.env.packageInfo.buildFlavor === 'serverless'; - } - - public setup( - core: CoreSetup<SLOPluginStartDependencies, SLOServerStart>, - plugins: SLOPluginSetupDependencies - ): SLOServerSetup { - const alertsLocator = plugins.share.url.locators.create(new AlertsLocatorDefinition()); - - const savedObjectTypes = [SO_SLO_TYPE, SO_SLO_SETTINGS_TYPE]; - - const alertingFeatures = sloRuleTypes.map((ruleTypeId) => ({ - ruleTypeId, - consumers: [sloFeatureId, ALERTING_FEATURE_ID], - })); - - plugins.features.registerKibanaFeature({ - id: sloFeatureId, - name: i18n.translate('xpack.slo.featureRegistry.linkSloTitle', { - defaultMessage: 'SLOs', - }), - order: 1200, - category: DEFAULT_APP_CATEGORIES.observability, - scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], - app: [sloFeatureId, 'kibana'], - catalogue: [sloFeatureId, 'observability'], - alerting: alertingFeatures, - privileges: { - all: { - app: [sloFeatureId, 'kibana'], - catalogue: [sloFeatureId, 'observability'], - api: ['slo_write', 'slo_read', 'rac'], - savedObject: { - all: savedObjectTypes, - read: [], - }, - alerting: { - rule: { - all: alertingFeatures, - }, - alert: { - all: alertingFeatures, - }, - }, - ui: ['read', 'write'], - }, - read: { - app: [sloFeatureId, 'kibana'], - catalogue: [sloFeatureId, 'observability'], - api: ['slo_read', 'rac'], - savedObject: { - all: [], - read: savedObjectTypes, - }, - alerting: { - rule: { - read: alertingFeatures, - }, - alert: { - read: alertingFeatures, - }, - }, - ui: ['read'], - }, - }, - }); - - const { ruleDataService } = plugins.ruleRegistry; - - core.savedObjects.registerType(slo); - core.savedObjects.registerType(sloSettings); - - registerBurnRateRule(plugins.alerting, core.http.basePath, this.logger, ruleDataService, { - alertsLocator, - }); - - registerSloUsageCollector(plugins.usageCollection); - - const routeHandlerPlugins = mapValues(plugins, (value, key) => { - return { - setup: value, - start: () => - core.getStartServices().then(([, pluginStart]) => { - return pluginStart[key as keyof SLOPluginStartDependencies]; - }), - }; - }) as SLORoutesDependencies['plugins']; - - registerServerRoutes({ - core, - dependencies: { - corePlugins: core, - plugins: routeHandlerPlugins, - }, - logger: this.logger, - repository: getSloServerRouteRepository({ isServerless: this.isServerless }), - isServerless: this.isServerless, - }); - - core - .getStartServices() - .then(async ([coreStart, pluginStart]) => { - const esInternalClient = coreStart.elasticsearch.client.asInternalUser; - const sloResourceInstaller = new DefaultResourceInstaller(esInternalClient, this.logger); - const sloInstaller = new DefaultSLOInstaller(sloResourceInstaller, this.logger); - await sloInstaller.install(); - }) - .catch((error) => { - this.logger.error(`Failed to install the default SLOs: ${error}`); - }); - - this.sloOrphanCleanupTask = new SloOrphanSummaryCleanupTask( - plugins.taskManager, - this.logger, - this.config - ); - - return {}; - } - - public start(core: CoreStart, plugins: SLOPluginStartDependencies): SLOServerStart { - const internalSoClient = new SavedObjectsClient(core.savedObjects.createInternalRepository()); - const internalEsClient = core.elasticsearch.client.asInternalUser; - - this.sloOrphanCleanupTask - ?.start(plugins.taskManager, internalSoClient, internalEsClient) - .catch(() => {}); - - return {}; - } -} diff --git a/x-pack/plugins/observability_solution/slo/server/types.ts b/x-pack/plugins/observability_solution/slo/server/types.ts deleted file mode 100644 index 9a40547820182..0000000000000 --- a/x-pack/plugins/observability_solution/slo/server/types.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; -import { CloudSetup } from '@kbn/cloud-plugin/server'; -import { DataViewsServerPluginStart } from '@kbn/data-views-plugin/server'; -import { FeaturesPluginSetup } from '@kbn/features-plugin/server'; -import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; -import { - RuleRegistryPluginSetupContract, - RuleRegistryPluginStartContract, -} from '@kbn/rule-registry-plugin/server'; -import { SharePluginSetup } from '@kbn/share-plugin/server'; -import { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; -import { - TaskManagerSetupContract, - TaskManagerStartContract, -} from '@kbn/task-manager-plugin/server'; -import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; - -export type { SLOConfig } from '../common/config'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface SLOServerSetup {} - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface SLOServerStart {} - -export interface SLOPluginSetupDependencies { - alerting: AlertingServerSetup; - ruleRegistry: RuleRegistryPluginSetupContract; - share: SharePluginSetup; - features: FeaturesPluginSetup; - taskManager: TaskManagerSetupContract; - spaces: SpacesPluginSetup; - cloud?: CloudSetup; - usageCollection: UsageCollectionSetup; - licensing: LicensingPluginSetup; - dataViews: DataViewsServerPluginStart; -} - -export interface SLOPluginStartDependencies { - alerting: AlertingServerStart; - taskManager: TaskManagerStartContract; - spaces?: SpacesPluginStart; - ruleRegistry: RuleRegistryPluginStartContract; - dataViews: DataViewsServerPluginStart; - licensing: LicensingPluginStart; -} diff --git a/x-pack/plugins/observability_solution/slo/tsconfig.json b/x-pack/plugins/observability_solution/slo/tsconfig.json deleted file mode 100644 index 125a8463be595..0000000000000 --- a/x-pack/plugins/observability_solution/slo/tsconfig.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*", - // Emotion theme typing - "./emotion.d.ts" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/shared-ux-router", - "@kbn/core", - "@kbn/rule-data-utils", - "@kbn/triggers-actions-ui-plugin", - "@kbn/observability-plugin", - "@kbn/observability-shared-plugin", - "@kbn/kibana-react-plugin", - "@kbn/shared-ux-link-redirect-app", - "@kbn/kibana-utils-plugin", - "@kbn/slo-schema", - "@kbn/alerting-plugin", - "@kbn/rison", - "@kbn/embeddable-plugin", - "@kbn/embeddable-enhanced-plugin", - "@kbn/lens-plugin", - "@kbn/ui-theme", - "@kbn/es-query", - "@kbn/react-kibana-mount", - "@kbn/cases-plugin", - "@kbn/data-plugin", - "@kbn/core-ui-settings-browser", - "@kbn/charts-plugin", - "@kbn/ui-actions-plugin", - "@kbn/serverless", - "@kbn/data-views-plugin", - "@kbn/rule-registry-plugin", - "@kbn/licensing-plugin", - "@kbn/utility-types", - "@kbn/share-plugin", - "@kbn/presentation-util-plugin", - "@kbn/observability-ai-assistant-plugin", - "@kbn/core-http-browser", - "@kbn/core-chrome-browser", - "@kbn/ingest-pipelines-plugin", - "@kbn/unified-search-plugin", - "@kbn/std", - "@kbn/core-lifecycle-browser", - "@kbn/controls-plugin", - "@kbn/cloud-plugin", - "@kbn/spaces-plugin", - "@kbn/data-view-editor-plugin", - "@kbn/shared-ux-page-kibana-template", - "@kbn/config-schema", - "@kbn/usage-collection-plugin", - "@kbn/alerts-as-data-utils", - "@kbn/logging-mocks", - "@kbn/server-route-repository", - "@kbn/features-plugin", - "@kbn/task-manager-plugin", - "@kbn/core-saved-objects-server", - "@kbn/core-elasticsearch-server", - "@kbn/core-saved-objects-api-server", - "@kbn/calculate-auto", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/core-saved-objects-api-server-mocks", - "@kbn/es-types", - "@kbn/logging", - "@kbn/unified-data-table", - "@kbn/cell-actions", - "@kbn/discover-utils", - "@kbn/unified-field-list", - "@kbn/data-view-field-editor-plugin", - "@kbn/discover-plugin", - "@kbn/field-formats-plugin", - "@kbn/core-http-server", - "@kbn/aiops-plugin", - "@kbn/presentation-publishing", - "@kbn/aiops-log-rate-analysis", - "@kbn/data-view-field-editor-plugin", - "@kbn/securitysolution-io-ts-utils", - "@kbn/core-elasticsearch-server-mocks", - "@kbn/datemath", - "@kbn/presentation-containers", - "@kbn/dashboard-plugin", - "@kbn/monaco", - "@kbn/code-editor", - "@kbn/react-kibana-context-render", - "@kbn/core-application-browser", - "@kbn/core-theme-browser", - "@kbn/ebt-tools", - "@kbn/observability-alerting-rule-utils", - "@kbn/discover-shared-plugin", - "@kbn/server-route-repository-client", - "@kbn/security-plugin-types-public", - ] -} diff --git a/x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.sh b/x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.sh deleted file mode 100755 index 58c2c88a8d836..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -UUID="$(cat /proc/sys/kernel/random/uuid)" -export UUID - -node x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/plugins/observability_solution/synthetics/README.md b/x-pack/plugins/observability_solution/synthetics/README.md deleted file mode 100644 index bdc078e8607d7..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Uptime Monitoring - -## Purpose - -The purpose of this plugin is to provide users of Heartbeat more visibility of what's happening -in their infrastructure. - -## Layout - -There are three sections to the app, `common`, `public`, and `server`. - -### common - -Contains runtime types types, constants and a few other files. - -Notably, we use `io-ts`/`fp-ts` functions and types to help provide -additional runtime safety for our API requests/responses. - -### public - -We use Redux and associated tools for managing our app state. Components come in the usual `connect`ed and -presentational varieties. - -The `lib` directory controls bootstrapping code and adapter types. - -There is a `pages` directory; each view gets its own page component. - -The principal structure of the app is stored in `uptime_app.tsx`. - -### server - -The `lib` directory contains `adapters`, which are connections to external resources like Kibana -Server, Elasticsearch, etc. In addition, it contains domains, which are libraries that provide -functionality via adapters. - -The `requests` directory contains functions responsible for querying Elasticsearch and parsing its -responses. - -There's also a `rest_api` folder that defines the structure of the RESTful API endpoints. - -## Testing - -### Unit tests - -Documentation: https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing - -``` -yarn test:jest x-pack/plugins/observability_solution/synthetics -``` - -### Functional tests - -In one shell, from **~/kibana/x-pack**: -`node scripts/functional_tests_server.js` - -In another shell, from **~kibana/x-pack**: -`node ../scripts/functional_test_runner.js --grep="{TEST_NAME}"`. - -#### API tests - -If instead you need to run API tests, start up the test server and then in another shell, from **~kibana/x-pack**: -`node ../scripts/functional_test_runner.js --config test/api_integration/config.ts --grep="{TEST_NAME}"`. - -You can update snapshots by prefixing the runner command with `env UPDATE_UPTIME_FIXTURES=1` - -You can access the functional test server's Kibana at `http://localhost:5620/`. - -You can login with username `elastic` and password `changeme` by default. - -If you want to freeze a UI or API test you can include an async call like `await new Promise(r => setTimeout(r, 1000 * 60))` -to freeze the execution for 60 seconds if you need to click around or check things in the state that is loaded. - -#### Running --ssl tests - -Some of our tests require there to be an SSL connection between Kibana and Elasticsearch. - -We can run these tests like described above, but with some special config. - -`node scripts/functional_tests_server.js --config=test/functional_with_es_ssl/config.ts` - -`node scripts/functional_test_runner.js --config=test/functional_with_es_ssl/config.ts` - -#### Running accessibility tests - -We maintain a suite of Accessibility tests (you may see them referred to elsewhere as `a11y` tests). - -These tests render each of our pages and ensure that the inputs and other elements contain the -attributes necessary to ensure all users are able to make use of Kibana (for example, users relying -on screen readers). - -The commands for running these tests are very similar to the other functional tests described above. - -From the `~/x-pack` directory: - -Start the server: `node scripts/functional_tests_server --config test/accessibility/config.ts` - -Run the uptime `a11y` tests: `node scripts/functional_test_runner.js --config test/accessibility/config.ts --grep=uptime` diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/README.md b/x-pack/plugins/observability_solution/synthetics/e2e/README.md deleted file mode 100644 index e8bf7414b70d3..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## How to run these tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/synthetics/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From the same directory you can now run `node e2e.js --runner`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. - - -## Uptime App Tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/synthetics/scripts`, run `node uptime_e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From the same directory you can now run `node node uptime_e2e.js --runner`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/config.ts b/x-pack/plugins/observability_solution/synthetics/e2e/config.ts deleted file mode 100644 index 8e1e97e5c1d37..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/config.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrConfigProviderContext } from '@kbn/test'; -import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { get } from 'lodash'; -import { commonFunctionalServices } from '@kbn/ftr-common-functional-services'; -import { commonFunctionalUIServices } from '@kbn/ftr-common-functional-ui-services'; - -import { readKibanaConfig } from './tasks/read_kibana_config'; -const MANIFEST_KEY = 'xpack.uptime.service.manifestUrl'; -const SERVICE_PASSWORD = 'xpack.uptime.service.password'; -const SERVICE_USERNAME = 'xpack.uptime.service.username'; - -async function config({ readConfigFile }: FtrConfigProviderContext) { - const kibanaCommonTestsConfig = await readConfigFile( - require.resolve('@kbn/test-suites-src/common/config') - ); - const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('@kbn/test-suites-xpack/functional/config.base') - ); - - const kibanaConfig = readKibanaConfig(); - - const manifestUrl = process.env.SYNTHETICS_SERVICE_MANIFEST ?? get(kibanaConfig, MANIFEST_KEY); - const serviceUsername = - process.env.SYNTHETICS_SERVICE_USERNAME ?? get(kibanaConfig, SERVICE_USERNAME); - const servicePassword = - process.env.SYNTHETICS_SERVICE_PASSWORD ?? get(kibanaConfig, SERVICE_PASSWORD); - - return { - ...kibanaCommonTestsConfig.getAll(), - - services: { - ...commonFunctionalServices, - ...commonFunctionalUIServices, - }, - - esTestCluster: { - ...xpackFunctionalTestsConfig.get('esTestCluster'), - serverArgs: [ - ...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'), - // define custom es server here - // API Keys is enabled at the top level - 'xpack.security.enabled=true', - 'xpack.ml.enabled=false', - ], - }, - - kbnTestServer: { - ...xpackFunctionalTestsConfig.get('kbnTestServer'), - sourceArgs: process.env.WATCH_ENABLED - ? [] - : [...xpackFunctionalTestsConfig.get('kbnTestServer.sourceArgs'), '--no-watch'], - serverArgs: [ - ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), - '--csp.strict=false', - '--home.disableWelcomeScreen=true', - '--csp.warnLegacyBrowsers=false', - // define custom kibana server args here - `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, - // `--elasticsearch.ignoreVersionMismatch=${process.env.CI ? 'false' : 'true'}`, - `--elasticsearch.username=kibana_system`, - `--elasticsearch.password=changeme`, - '--xpack.reporting.enabled=false', - `--xpack.uptime.service.manifestUrl=${manifestUrl}`, - `--xpack.uptime.service.username=${ - process.env.SYNTHETICS_REMOTE_ENABLED - ? serviceUsername - : 'localKibanaIntegrationTestsUser' - }`, - `--xpack.uptime.service.password=${servicePassword}`, - '--uiSettings.overrides.observability:enableLegacyUptimeApp=true', - ], - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default config; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/test_reporter.ts b/x-pack/plugins/observability_solution/synthetics/e2e/helpers/test_reporter.ts deleted file mode 100644 index 198a038ec027f..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/test_reporter.ts +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Journey, Step } from '@elastic/synthetics/dist/dsl'; -import { Reporter, ReporterOptions } from '@elastic/synthetics'; -import { - JourneyEndResult, - JourneyStartResult, - StepEndResult, -} from '@elastic/synthetics/dist/common_types'; - -import { yellow, green, cyan, red, bold } from 'chalk'; - -// eslint-disable-next-line no-console -const log = console.log; - -import { performance } from 'perf_hooks'; -import * as fs from 'fs'; -import { gatherScreenshots } from '@elastic/synthetics/dist/reporters/json'; -import { CACHE_PATH } from '@elastic/synthetics/dist/helpers'; -import { join } from 'path'; - -function renderError(error: any) { - let output = ''; - const outer = indent(''); - const inner = indent(outer); - const container = outer + '---\n'; - output += container; - let stack = error.stack; - if (stack) { - output += inner + 'stack: |-\n'; - stack = rewriteErrorStack(stack, findPWLogsIndexes(stack)); - const lines = String(stack).split('\n'); - for (const line of lines) { - output += inner + ' ' + line + '\n'; - } - } - output += container; - return red(output); -} - -function renderDuration(durationMs: number) { - return Number(durationMs).toFixed(0); -} - -export class TestReporter implements Reporter { - metrics = { - succeeded: 0, - failed: 0, - skipped: 0, - }; - - journeys: Map<string, Array<StepEndResult & { name: string }>> = new Map(); - - constructor(options: ReporterOptions = {}) {} - - onJourneyStart(journey: Journey, {}: JourneyStartResult) { - if (process.env.CI) { - this.write(`\n--- Journey: ${journey.name}`); - } else { - this.write(bold(`\n Journey: ${journey.name}`)); - } - } - - onStepEnd(journey: Journey, step: Step, result: StepEndResult) { - const { status, end, start, error } = result; - const message = `${symbols[status]} Step: '${step.name}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - this.metrics[status]++; - if (!this.journeys.has(journey.name)) { - this.journeys.set(journey.name, []); - } - this.journeys.get(journey.name)?.push({ name: step.name, ...result }); - } - - async onJourneyEnd(journey: Journey, { error, start, end, status }: JourneyEndResult) { - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - if (total === 0 && error) { - this.write(renderError(error)); - } - const message = `${symbols[status]} Took (${renderDuration(end - start)} seconds)`; - this.write(message); - - await fs.promises.mkdir('.journeys/failed_steps', { recursive: true }); - - await gatherScreenshots(join(CACHE_PATH, 'screenshots'), async (screenshot) => { - const { data, step } = screenshot; - - if (status === 'failed') { - await (async () => { - await fs.promises.writeFile(join('.journeys/failed_steps/', `${step.name}.jpg`), data, { - encoding: 'base64', - }); - })(); - } - }); - } - - onEnd() { - const failedJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.some((step) => step.status === 'failed') - ); - - if (failedJourneys.length > 0) { - failedJourneys.forEach(([journeyName, steps]) => { - if (process.env.CI) { - const name = red(`Journey: ${journeyName} 🥵`); - this.write(`\n+++ ${name}`); - steps.forEach((stepResult) => { - const { status, end, start, error, name: stepName } = stepResult; - const message = `${symbols[status]} Step: '${stepName}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - }); - } - }); - } - - const successfulJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.every((step) => step.status === 'succeeded') - ); - - successfulJourneys.forEach(([journeyName, steps]) => { - try { - fs.unlinkSync('.journeys/videos/' + journeyName + '.webm'); - } catch (e) { - // eslint-disable-next-line no-console - console.log( - 'Failed to delete video file for path ' + '.journeys/videos/' + journeyName + '.webm' - ); - } - }); - - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - - let message = '\n'; - if (total === 0) { - message = 'No tests found!'; - message += ` (${renderDuration(now())} ms) \n`; - this.write(message); - return; - } - - message += succeeded > 0 ? green(` ${succeeded} passed`) : ''; - message += failed > 0 ? red(` ${failed} failed`) : ''; - message += skipped > 0 ? cyan(` ${skipped} skipped`) : ''; - message += ` (${renderDuration(now() / 1000)} seconds) \n`; - this.write(message); - } - - write(message: any) { - if (typeof message === 'object') { - message = JSON.stringify(message); - } - log(message + '\n'); - } -} - -const SEPARATOR = '\n'; - -function indent(lines: string, tab = ' ') { - return lines.replace(/^/gm, tab); -} - -const NO_UTF8_SUPPORT = process.platform === 'win32'; -const symbols = { - warning: yellow(NO_UTF8_SUPPORT ? '!' : '⚠'), - skipped: cyan('-'), - progress: cyan('>'), - succeeded: green(NO_UTF8_SUPPORT ? 'ok' : '✓'), - failed: red(NO_UTF8_SUPPORT ? 'x' : '✖'), -}; - -function now() { - return performance.now(); -} - -function findPWLogsIndexes(msgOrStack: string): [number, number] { - let startIndex = 0; - let endIndex = 0; - if (!msgOrStack) { - return [startIndex, endIndex]; - } - const lines = String(msgOrStack).split(SEPARATOR); - const logStart = /[=]{3,} logs [=]{3,}/; - const logEnd = /[=]{10,}/; - lines.forEach((line, index) => { - if (logStart.test(line)) { - startIndex = index; - } else if (logEnd.test(line)) { - endIndex = index; - } - }); - return [startIndex, endIndex]; -} - -function rewriteErrorStack(stack: string, indexes: [number, number]) { - const [start, end] = indexes; - /** - * Do not rewrite if its not a playwright error - */ - if (start === 0 && end === 0) { - return stack; - } - const linesToKeep = start + 3; - if (start > 0 && linesToKeep < end) { - const lines = stack.split(SEPARATOR); - return lines - .slice(0, linesToKeep) - .concat(...lines.slice(end)) - .join(SEPARATOR); - } - return stack; -} diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/index.ts b/x-pack/plugins/observability_solution/synthetics/e2e/index.ts deleted file mode 100644 index f0e9b5e8b760c..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { SyntheticsRunner } from './helpers/synthetics_runner'; -export { argv } from './helpers/parse_args_params'; -export { loginPageProvider } from './page_objects/login'; -export { utilsPageProvider } from './page_objects/utils'; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/synthetics_run.ts b/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/synthetics_run.ts deleted file mode 100644 index 3624c03c5f1f0..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/synthetics_run.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { FtrConfigProviderContext } from '@kbn/test'; -import path from 'path'; -import { argv } from '../helpers/parse_args_params'; -import { SyntheticsRunner } from '../helpers/synthetics_runner'; - -const { headless, grep, bail: pauseOnError } = argv; - -async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('../config.ts')); - return { - ...kibanaConfig.getAll(), - testRunner: async ({ getService }: any) => { - const syntheticsRunner = new SyntheticsRunner(getService, { - headless, - match: grep, - pauseOnError, - }); - - await syntheticsRunner.setup(); - const fixturesDir = path.join(__dirname, '../fixtures/es_archiver/'); - - await syntheticsRunner.loadTestData(fixturesDir, [ - 'synthetics_data', - 'full_heartbeat', - 'browser', - ]); - - await syntheticsRunner.loadTestFiles(async () => { - require('./journeys'); - }); - - await syntheticsRunner.run(); - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default runE2ETests; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/tasks/es_archiver.ts b/x-pack/plugins/observability_solution/synthetics/e2e/tasks/es_archiver.ts deleted file mode 100644 index bbb66b19f5a5e..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/tasks/es_archiver.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import Path from 'path'; -import { execSync } from 'child_process'; - -const ES_ARCHIVE_DIR = './fixtures/es_archiver'; - -// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https -const NODE_TLS_REJECT_UNAUTHORIZED = '1'; - -export const esArchiverLoad = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../scripts/es_archiver load "${path}" --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverUnload = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../scripts/es_archiver unload "${path}" --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverResetKibana = () => { - execSync( - `node ../../../../scripts/es_archiver empty-kibana-index --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/tsconfig.json b/x-pack/plugins/observability_solution/synthetics/e2e/tsconfig.json deleted file mode 100644 index 7584c000a76fa..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "exclude": ["tmp", "target/**/*"], - "include": ["**/*"], - "compilerOptions": { - "outDir": "target/types", - "types": ["node"], - "isolatedModules": false - }, - "kbn_references": [ - "@kbn/test", - "@kbn/dev-utils", - "@kbn/ux-plugin/e2e", - "@kbn/ftr-common-functional-services", - "@kbn/apm-plugin", - "@kbn/es-archiver", - "@kbn/synthetics-plugin", - "@kbn/repo-info", - "@kbn/observability-synthetics-test-data", - "@kbn/ftr-common-functional-ui-services" - ] -} diff --git a/x-pack/plugins/observability_solution/synthetics/jest.config.js b/x-pack/plugins/observability_solution/synthetics/jest.config.js deleted file mode 100644 index 1ae53b847be24..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/synthetics'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/observability_solution/synthetics', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/synthetics/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/query_monitor_status.ts b/x-pack/plugins/observability_solution/synthetics/server/queries/query_monitor_status.ts deleted file mode 100644 index 5ccb33fb491fd..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/queries/query_monitor_status.ts +++ /dev/null @@ -1,300 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import times from 'lodash/times'; -import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { cloneDeep, intersection } from 'lodash'; -import { SavedObjectsFindResult } from '@kbn/core-saved-objects-api-server'; -import { MsearchMultisearchBody } from '@elastic/elasticsearch/lib/api/types'; - -import { isStatusEnabled } from '../../common/runtime_types/monitor_management/alert_config'; -import { FINAL_SUMMARY_FILTER } from '../../common/constants/client_defaults'; -import { - ConfigKey, - EncryptedSyntheticsMonitorAttributes, - OverviewPing, - OverviewStatus, - OverviewStatusMetaData, -} from '../../common/runtime_types'; -import { createEsParams, SyntheticsEsClient } from '../lib'; - -const DEFAULT_MAX_ES_BUCKET_SIZE = 10000; - -const fields = [ - '@timestamp', - 'summary', - 'monitor', - 'observer', - 'config_id', - 'error', - 'agent', - 'url', - 'state', - 'tags', -]; - -const getStatusQuery = ({ - idSize, - idsToQuery, - range, - monitorLocationIds, -}: { - idSize: number; - monitorLocationIds: string[]; - range: { from: string; to: string }; - idsToQuery: string[]; -}) => { - const params = createEsParams({ - body: { - size: 0, - query: { - bool: { - filter: [ - FINAL_SUMMARY_FILTER, - { - range: { - '@timestamp': { - gte: range.from, - lte: range.to, - }, - }, - }, - { - terms: { - 'monitor.id': idsToQuery, - }, - }, - ] as QueryDslQueryContainer[], - }, - }, - aggs: { - id: { - terms: { - field: 'monitor.id', - size: idSize, - }, - aggs: { - location: { - terms: { - field: 'observer.name', - size: monitorLocationIds.length || 100, - }, - aggs: { - status: { - top_hits: { - size: 1, - sort: [ - { - '@timestamp': { - order: 'desc', - }, - }, - ], - _source: { - includes: fields, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }); - - if (monitorLocationIds.length > 0) { - params.body.query?.bool?.filter.push({ - terms: { - 'observer.name': monitorLocationIds, - }, - }); - } - return params; -}; - -type StatusQueryParams = ReturnType<typeof getStatusQuery>; -type OverviewStatusResponse = Omit< - OverviewStatus, - | 'disabledCount' - | 'allMonitorsCount' - | 'disabledMonitorsCount' - | 'projectMonitorsCount' - | 'disabledMonitorQueryIds' - | 'allIds' ->; - -export async function queryMonitorStatus({ - esClient, - monitorLocationIds, - range, - monitorQueryIds, - monitorLocationsMap, - monitorQueryIdToConfigIdMap, - monitors, -}: { - esClient: SyntheticsEsClient; - monitorLocationIds: string[]; - range: { from: string; to: string }; - monitorQueryIds: string[]; - monitorLocationsMap: Record<string, string[]>; - monitorQueryIdToConfigIdMap: Record<string, string>; - monitors: Array<SavedObjectsFindResult<EncryptedSyntheticsMonitorAttributes>>; -}): Promise<OverviewStatusResponse> { - const idSize = Math.trunc(DEFAULT_MAX_ES_BUCKET_SIZE / monitorLocationIds.length || 1); - const pageCount = Math.ceil(monitorQueryIds.length / idSize); - let up = 0; - let down = 0; - const upConfigs: Record<string, OverviewStatusMetaData> = {}; - const downConfigs: Record<string, OverviewStatusMetaData> = {}; - const monitorsWithoutData = new Map(Object.entries(cloneDeep(monitorLocationsMap))); - const pendingConfigs: Record<string, OverviewStatusMetaData> = {}; - const disabledConfigs: Record<string, OverviewStatusMetaData> = {}; - - monitors - .filter((monitor) => !monitor.attributes[ConfigKey.ENABLED]) - .forEach((monitor) => { - const monitorQueryId = monitor.attributes[ConfigKey.MONITOR_QUERY_ID]; - monitor.attributes[ConfigKey.LOCATIONS]?.forEach((location) => { - disabledConfigs[`${monitorQueryIdToConfigIdMap[monitorQueryId]}-${location.id}`] = { - configId: `${monitorQueryIdToConfigIdMap[monitorQueryId]}`, - monitorQueryId, - status: 'disabled', - locationId: location.id, - locationLabel: location.label, - ...getMonitorMeta(monitor), - }; - }); - }); - - const queries: MsearchMultisearchBody[] = times(pageCount).map((i) => { - const idsToQuery = (monitorQueryIds as string[]).slice(i * idSize, i * idSize + idSize); - return getStatusQuery({ - idSize, - monitorLocationIds, - range, - idsToQuery, - }).body; - }); - - if (queries.length) { - const { responses } = await esClient.msearch<StatusQueryParams, OverviewPing>( - queries, - 'getCurrentStatusOverview' - ); - - responses.forEach((result) => { - result.aggregations?.id.buckets.forEach(({ location, key: queryId }) => { - const locationSummaries = location.buckets.map(({ status, key: locationName }) => { - const ping = status.hits.hits[0]._source; - return { location: locationName, ping }; - }); - - const monitor = monitors.find((m) => m.attributes[ConfigKey.MONITOR_QUERY_ID] === queryId)!; - - // discard any locations that are not in the monitorLocationsMap for the given monitor as well as those which are - // in monitorLocationsMap but not in listOfLocations - const monLocations = monitorLocationsMap?.[queryId]; - const monQueriedLocations = intersection(monLocations, monitorLocationIds); - monQueriedLocations?.forEach((monLocation) => { - const locationSummary = locationSummaries.find( - (summary) => summary.location === monLocation - ); - - if (locationSummary) { - const { ping } = locationSummary; - const downCount = ping.summary?.down ?? 0; - const upCount = ping.summary?.up ?? 0; - const configId = ping.config_id; - const monitorQueryId = ping.monitor.id; - - const meta = { - ping, - configId, - monitorQueryId, - locationId: monLocation, - timestamp: ping['@timestamp'], - locationLabel: ping.observer.geo!.name!, - ...getMonitorMeta(monitor), - }; - - if (downCount > 0) { - down += 1; - downConfigs[`${configId}-${monLocation}`] = { - ...meta, - status: 'down', - }; - } else if (upCount > 0) { - up += 1; - upConfigs[`${configId}-${monLocation}`] = { - ...meta, - status: 'up', - }; - } - const monitorsMissingData = monitorsWithoutData.get(monitorQueryId) || []; - monitorsWithoutData.set( - monitorQueryId, - monitorsMissingData?.filter((loc) => loc !== monLocation) - ); - if (!monitorsWithoutData.get(monitorQueryId)?.length) { - monitorsWithoutData.delete(monitorQueryId); - } - } - }); - }); - }); - } - - // identify the remaining monitors without data, to determine pending monitors - for (const [queryId, locs] of monitorsWithoutData) { - const monitor = monitors.find((m) => m.attributes[ConfigKey.MONITOR_QUERY_ID] === queryId)!; - locs.forEach((loc) => { - pendingConfigs[`${monitorQueryIdToConfigIdMap[queryId]}-${loc}`] = { - configId: `${monitorQueryIdToConfigIdMap[queryId]}`, - monitorQueryId: queryId, - status: 'unknown', - locationId: loc, - locationLabel: monitor.attributes[ConfigKey.LOCATIONS]?.find( - (location) => location.id === loc - )?.label!, - name: monitor.attributes[ConfigKey.NAME], - schedule: monitor.attributes[ConfigKey.SCHEDULE].number, - tags: monitor.attributes[ConfigKey.TAGS], - isEnabled: monitor.attributes[ConfigKey.ENABLED], - type: monitor.attributes[ConfigKey.MONITOR_TYPE], - projectId: monitor.attributes[ConfigKey.PROJECT_ID], - isStatusAlertEnabled: isStatusEnabled(monitor.attributes[ConfigKey.ALERT_CONFIG]), - updated_at: monitor.updated_at, - }; - }); - } - - return { - up, - down, - pending: Object.values(pendingConfigs).length, - upConfigs, - downConfigs, - pendingConfigs, - enabledMonitorQueryIds: monitorQueryIds, - disabledConfigs, - }; -} - -const getMonitorMeta = (monitor: SavedObjectsFindResult<EncryptedSyntheticsMonitorAttributes>) => { - return { - name: monitor.attributes[ConfigKey.NAME], - schedule: monitor.attributes[ConfigKey.SCHEDULE].number, - tags: monitor.attributes[ConfigKey.TAGS], - isEnabled: monitor.attributes[ConfigKey.ENABLED], - type: monitor.attributes[ConfigKey.MONITOR_TYPE], - projectId: monitor.attributes[ConfigKey.PROJECT_ID], - isStatusAlertEnabled: isStatusEnabled(monitor.attributes[ConfigKey.ALERT_CONFIG]), - updated_at: monitor.updated_at, - spaceId: monitor.namespaces?.[0], - }; -}; diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.test.ts b/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.test.ts deleted file mode 100644 index a3ddc0079d460..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.test.ts +++ /dev/null @@ -1,1291 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { SavedObjectsFindResult } from '@kbn/core-saved-objects-api-server'; -import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; -import { periodToMs } from './overview_status'; -import { queryMonitorStatus } from '../../queries/query_monitor_status'; -import { getStatus } from './overview_status'; -import times from 'lodash/times'; -import * as monitorsFns from '../../saved_objects/synthetics_monitor/get_all_monitors'; -import { EncryptedSyntheticsMonitorAttributes } from '../../../common/runtime_types'; -import { RouteContext } from '../types'; -import { getUptimeESMockClient } from '../../queries/test_helpers'; - -import * as commonLibs from '../common'; -import { SyntheticsServerSetup } from '../../types'; -import { mockEncryptedSO } from '../../synthetics_service/utils/mocks'; -import { savedObjectsServiceMock } from '@kbn/core-saved-objects-server-mocks'; -import { loggerMock } from '@kbn/logging-mocks'; -import * as allLocationsFn from '../../synthetics_service/get_all_locations'; -const allLocations: any = [ - { - id: 'us_central_qa', - label: 'US Central QA', - }, - { - id: 'us_central', - label: 'North America - US Central', - }, -]; -jest.spyOn(allLocationsFn, 'getAllLocations').mockResolvedValue({ - publicLocations: allLocations, - privateLocations: [], - allLocations, -}); - -jest.mock('../../saved_objects/synthetics_monitor/get_all_monitors', () => ({ - ...jest.requireActual('../../saved_objects/synthetics_monitor/get_all_monitors'), - getAllMonitors: jest.fn(), -})); - -jest.spyOn(commonLibs, 'getMonitors').mockResolvedValue({ - per_page: 10, - saved_objects: [ - { - id: 'mon-1', - attributes: { - enabled: false, - locations: [{ id: 'us-east1' }, { id: 'us-west1' }, { id: 'japan' }], - }, - }, - { - id: 'mon-2', - attributes: { - enabled: true, - locations: [{ id: 'us-east1' }, { id: 'us-west1' }, { id: 'japan' }], - schedule: { - number: '10', - unit: 'm', - }, - }, - }, - ], -} as any); - -describe('current status route', () => { - const logger = loggerMock.create(); - - const serverMock: SyntheticsServerSetup = { - logger, - config: { - service: { - username: 'dev', - password: '12345', - manifestUrl: 'http://localhost:8080/api/manifest', - }, - }, - spaces: { - spacesService: { - getSpaceId: jest.fn().mockReturnValue('test-space'), - }, - }, - encryptedSavedObjects: mockEncryptedSO(), - coreStart: { - savedObjects: savedObjectsServiceMock.createStartContract(), - }, - } as unknown as SyntheticsServerSetup; - - describe('periodToMs', () => { - it('returns 0 for unsupported unit type', () => { - // @ts-expect-error Providing invalid value to test handler in function - expect(periodToMs({ number: '10', unit: 'rad' })).toEqual(0); - }); - it('converts seconds', () => { - expect(periodToMs({ number: '10', unit: 's' })).toEqual(10_000); - }); - it('converts minutes', () => { - expect(periodToMs({ number: '1', unit: 'm' })).toEqual(60_000); - }); - it('converts hours', () => { - expect(periodToMs({ number: '1', unit: 'h' })).toEqual(3_600_000); - }); - }); - - const testMonitors = [ - { - attributes: { - id: 'id1', - type: 'browser', - enabled: true, - name: 'test monitor 1', - project_id: 'project-id', - tags: ['tag-1', 'tag-2'], - schedule: { - number: '1', - unit: 'm', - }, - }, - }, - { - attributes: { - id: 'id2', - enabled: true, - type: 'browser', - name: 'test monitor 2', - project_id: 'project-id', - tags: ['tag-1', 'tag-2'], - schedule: { - number: '1', - unit: 'm', - }, - }, - }, - ]; - - describe('queryMonitorStatus', () => { - it('parses expected agg fields', async () => { - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ - responses: [ - getEsResponse([ - { - key: 'id1', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:08:16.724Z', - monitor: { - status: 'up', - id: 'id1', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id1', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - { - key: 'id2', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:09:16.724Z', - monitor: { - status: 'up', - id: 'id2', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - { - key: 'Europe - Germany', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:19:16.724Z', - monitor: { - status: 'down', - id: 'id2', - }, - summary: { - down: 1, - up: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Europe - Germany', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - ]), - ], - took: 605, - }); - expect( - await queryMonitorStatus({ - esClient: syntheticsEsClient, - monitorLocationIds: ['Europe - Germany', 'Asia/Pacific - Japan'], - range: { from: 'now-1d', to: 'now' }, - monitorQueryIds: ['id1', 'id2'], - monitorLocationsMap: { - id1: ['Asia/Pacific - Japan'], - id2: ['Europe - Germany', 'Asia/Pacific - Japan'], - }, - monitorQueryIdToConfigIdMap: { - id1: 'id1', - id2: 'id2', - }, - monitors: testMonitors as any, - }) - ).toMatchInlineSnapshot(` - Object { - "disabledConfigs": Object {}, - "down": 1, - "downConfigs": Object { - "id2-Europe - Germany": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": "Europe - Germany", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:19:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "down", - }, - "observer": Object { - "geo": Object { - "name": "Europe - Germany", - }, - }, - "summary": Object { - "down": 1, - "up": 0, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "down", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:19:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - "enabledMonitorQueryIds": Array [ - "id1", - "id2", - ], - "pending": 0, - "pendingConfigs": Object {}, - "up": 2, - "upConfigs": Object { - "id1-Asia/Pacific - Japan": Object { - "configId": "id1", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id1", - "name": "test monitor 1", - "ping": Object { - "@timestamp": "2022-09-15T16:08:16.724Z", - "config_id": "id1", - "monitor": Object { - "id": "id1", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:08:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - "id2-Asia/Pacific - Japan": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:09:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:09:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - } - `); - }); - - it('handles limits with multiple requests', async () => { - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ - responses: [ - getEsResponse([ - { - key: 'id1', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:08:16.724Z', - monitor: { - status: 'up', - id: 'id1', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id1', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - { - key: 'id2', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:09:16.724Z', - monitor: { - status: 'up', - id: 'id2', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - { - key: 'Europe - Germany', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:19:16.724Z', - monitor: { - status: 'down', - id: 'id2', - }, - summary: { - up: 0, - down: 1, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Europe - Germany', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - ]), - ], - took: 605, - }); - - /** - * By passing the function a location count of 10k, it forces the query to paginate once, - * so we are able to test that the function properly iterates through a "large" list of IDs/locations. - * - * The expectation here is we will send the test client two separate "requests", one for each of the two IDs. - */ - const concernedLocations = [ - 'Asia/Pacific - Japan', - 'Europe - Germany', - 'Asia/Pacific - Japan', - ]; - expect( - await queryMonitorStatus({ - esClient: syntheticsEsClient, - monitorLocationIds: [ - ...concernedLocations, - ...times(9997).map((n) => 'Europe - Germany' + n), - ], - - range: { from: 'now-24h', to: 'now' }, - monitorQueryIds: ['id1', 'id2'], - monitorLocationsMap: { - id1: [concernedLocations[0]], - id2: [concernedLocations[1], concernedLocations[2]], - }, - monitorQueryIdToConfigIdMap: { - id1: 'id1', - id2: 'id2', - }, - monitors: testMonitors as any, - }) - ).toMatchInlineSnapshot(` - Object { - "disabledConfigs": Object {}, - "down": 1, - "downConfigs": Object { - "id2-Europe - Germany": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": "Europe - Germany", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:19:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "down", - }, - "observer": Object { - "geo": Object { - "name": "Europe - Germany", - }, - }, - "summary": Object { - "down": 1, - "up": 0, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "down", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:19:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - "enabledMonitorQueryIds": Array [ - "id1", - "id2", - ], - "pending": 0, - "pendingConfigs": Object {}, - "up": 2, - "upConfigs": Object { - "id1-Asia/Pacific - Japan": Object { - "configId": "id1", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id1", - "name": "test monitor 1", - "ping": Object { - "@timestamp": "2022-09-15T16:08:16.724Z", - "config_id": "id1", - "monitor": Object { - "id": "id1", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:08:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - "id2-Asia/Pacific - Japan": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:09:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:09:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - } - `); - expect(esClient.msearch).toHaveBeenCalledTimes(1); - // These assertions are to ensure that we are paginating through the IDs we use for filtering - expect( - // @ts-expect-error mock search is not lining up with expected type - esClient.msearch.mock.calls[0][0].searches[1].query.bool.filter[2].terms['monitor.id'] - ).toEqual(['id1']); - expect( - // @ts-expect-error mock search is not lining up with expected type - esClient.msearch.mock.calls[0][0].searches[3].query.bool.filter[2].terms['monitor.id'] - ).toEqual(['id2']); - }); - - it('handles pending configs', async () => { - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ - responses: [ - getEsResponse([ - { - key: 'id1', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:08:16.724Z', - monitor: { - status: 'up', - id: 'id1', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id1', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - { - key: 'id2', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:09:16.724Z', - monitor: { - status: 'up', - id: 'id2', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - { - key: 'Europe - Germany', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:19:16.724Z', - monitor: { - status: 'down', - id: 'id2', - }, - summary: { - down: 1, - up: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Europe - Germany', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - ]), - ], - took: 605, - }); - expect( - await queryMonitorStatus({ - esClient: syntheticsEsClient, - monitorLocationIds: ['Europe - Germany', 'Asia/Pacific - Japan'], - range: { from: 'now-12h', to: 'now' }, - monitorQueryIds: ['id1', 'id2', 'project-monitor-id', 'id4'], - monitorLocationsMap: { - id1: ['Asia/Pacific - Japan'], - id2: ['Europe - Germany', 'Asia/Pacific - Japan'], - 'project-monitor-id': ['Europe - Germany', 'Asia/Pacific - Japan'], - id4: ['Europe - Germany', 'Asia/Pacific - Japan'], - }, - monitorQueryIdToConfigIdMap: { - id1: 'id1', - id2: 'id2', - 'project-monitor-id': 'id3', - id4: 'id4', - }, - monitors: [ - ...testMonitors, - { - attributes: { - id: 'id4', - enabled: true, - type: 'browser', - name: 'test monitor 4', - project_id: 'project-id', - tags: ['tag-1', 'tag-2'], - schedule: { - number: '1', - unit: 'm', - }, - }, - }, - { - attributes: { - id: 'project-monitor-id', - enabled: true, - type: 'browser', - name: 'test monitor 3', - project_id: 'project-id', - tags: ['tag-1', 'tag-2'], - schedule: { - number: '1', - unit: 'm', - }, - }, - }, - ] as any, - }) - ).toMatchInlineSnapshot(` - Object { - "disabledConfigs": Object {}, - "down": 1, - "downConfigs": Object { - "id2-Europe - Germany": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": "Europe - Germany", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:19:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "down", - }, - "observer": Object { - "geo": Object { - "name": "Europe - Germany", - }, - }, - "summary": Object { - "down": 1, - "up": 0, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "down", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:19:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - "enabledMonitorQueryIds": Array [ - "id1", - "id2", - "project-monitor-id", - "id4", - ], - "pending": 4, - "pendingConfigs": Object { - "id3-Asia/Pacific - Japan": Object { - "configId": "id3", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": undefined, - "monitorQueryId": "project-monitor-id", - "name": "test monitor 3", - "projectId": "project-id", - "schedule": "1", - "status": "unknown", - "tags": Array [ - "tag-1", - "tag-2", - ], - "type": "browser", - "updated_at": undefined, - }, - "id3-Europe - Germany": Object { - "configId": "id3", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": undefined, - "monitorQueryId": "project-monitor-id", - "name": "test monitor 3", - "projectId": "project-id", - "schedule": "1", - "status": "unknown", - "tags": Array [ - "tag-1", - "tag-2", - ], - "type": "browser", - "updated_at": undefined, - }, - "id4-Asia/Pacific - Japan": Object { - "configId": "id4", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": undefined, - "monitorQueryId": "id4", - "name": "test monitor 4", - "projectId": "project-id", - "schedule": "1", - "status": "unknown", - "tags": Array [ - "tag-1", - "tag-2", - ], - "type": "browser", - "updated_at": undefined, - }, - "id4-Europe - Germany": Object { - "configId": "id4", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": undefined, - "monitorQueryId": "id4", - "name": "test monitor 4", - "projectId": "project-id", - "schedule": "1", - "status": "unknown", - "tags": Array [ - "tag-1", - "tag-2", - ], - "type": "browser", - "updated_at": undefined, - }, - }, - "up": 2, - "upConfigs": Object { - "id1-Asia/Pacific - Japan": Object { - "configId": "id1", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id1", - "name": "test monitor 1", - "ping": Object { - "@timestamp": "2022-09-15T16:08:16.724Z", - "config_id": "id1", - "monitor": Object { - "id": "id1", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:08:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - "id2-Asia/Pacific - Japan": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:09:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:09:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - } - `); - }); - }); - - describe('getStatus', () => { - it.each([ - [['US Central QA'], 1], - [['North America - US Central'], 1], - [['North America - US Central', 'US Central QA'], 2], - [undefined, 2], - ])('handles disabled count when using location filters', async (locations, disabledCount) => { - jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ - { - type: 'synthetics-monitor', - id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', - attributes: { - enabled: false, - schedule: { - number: '3', - unit: 'm', - }, - config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', - locations: [ - { - color: 'default', - isServiceManaged: true, - label: 'US Central QA', - id: 'us_central_qa', - }, - { - isServiceManaged: true, - label: 'North America - US Central', - id: 'us_central', - }, - ], - origin: 'project', - id: 'a-test2-default', - }, - references: [], - migrationVersion: { - 'synthetics-monitor': '8.6.0', - }, - coreMigrationVersion: '8.0.0', - updated_at: '2023-02-28T14:31:37.641Z', - created_at: '2023-02-28T14:31:37.641Z', - version: 'Wzg0MzkzLDVd', - namespaces: ['default'], - score: null, - sort: ['a', 3013], - } as unknown as SavedObjectsFindResult<EncryptedSyntheticsMonitorAttributes>, - ]); - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ - responses: [ - getEsResponse([ - { - key: 'id1', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:08:16.724Z', - monitor: { - status: 'up', - id: 'id1', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id1', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - { - key: 'id2', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:09:16.724Z', - monitor: { - status: 'up', - id: 'id2', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - { - key: 'Europe - Germany', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:19:16.724Z', - monitor: { - status: 'down', - id: 'id2', - }, - summary: { - down: 1, - up: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Europe - Germany', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - ]), - ], - took: 605, - }); - const result = await getStatus( - { - syntheticsEsClient, - savedObjectsClient: savedObjectsClientMock.create(), - server: serverMock, - } as unknown as RouteContext, - { - locations, - } - ); - expect(result).toEqual( - expect.objectContaining({ - disabledCount, - }) - ); - }); - - it.each([ - [['US Central QA'], 1], - [['North America - US Central'], 1], - [['North America - US Central', 'US Central QA'], 2], - [undefined, 2], - ])('handles pending count when using location filters', async (locations, pending) => { - jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ - { - type: 'synthetics-monitor', - id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', - attributes: { - enabled: true, - schedule: { - number: '3', - unit: 'm', - }, - config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', - locations: [ - { - color: 'default', - isServiceManaged: true, - label: 'US Central QA', - id: 'us_central_qa', - }, - { - isServiceManaged: true, - label: 'North America - US Central', - id: 'us_central', - }, - ], - origin: 'project', - id: 'a-test2-default', - }, - references: [], - migrationVersion: { - 'synthetics-monitor': '8.6.0', - }, - coreMigrationVersion: '8.0.0', - updated_at: '2023-02-28T14:31:37.641Z', - created_at: '2023-02-28T14:31:37.641Z', - version: 'Wzg0MzkzLDVd', - namespaces: ['default'], - score: null, - sort: ['a', 3013], - } as unknown as SavedObjectsFindResult<EncryptedSyntheticsMonitorAttributes>, - ]); - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ responses: [getEsResponse([])], took: 605 }); - expect( - await getStatus( - { - syntheticsEsClient, - savedObjectsClient: savedObjectsClientMock.create(), - } as unknown as RouteContext, - { - locations, - } - ) - ).toEqual( - expect.objectContaining({ - pending, - }) - ); - }); - }); -}); - -function getEsResponse(buckets: any[]) { - return { - took: 605, - timed_out: false, - _shards: { - total: 3, - successful: 3, - skipped: 0, - failed: 0, - }, - hits: { - hits: [], - }, - aggregations: { - id: { - buckets, - }, - }, - }; -} diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.ts b/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.ts deleted file mode 100644 index 8fa52f98592cb..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.ts +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { intersection } from 'lodash'; -import datemath, { Unit } from '@kbn/datemath'; -import moment from 'moment'; -import { RouteContext, SyntheticsRestApiRouteFactory } from '../types'; -import { ConfigKey, OverviewStatusState } from '../../../common/runtime_types'; -import { - getAllMonitors, - processMonitors, -} from '../../saved_objects/synthetics_monitor/get_all_monitors'; -import { queryMonitorStatus } from '../../queries/query_monitor_status'; -import { SYNTHETICS_API_URLS } from '../../../common/constants'; -import { getMonitorFilters, OverviewStatusSchema, OverviewStatusQuery } from '../common'; - -/** - * Helper function that converts a monitor's schedule to a value to use to generate - * an appropriate look-back window for snapshot count. - * @param schedule a number/unit pair that represents how often a configured monitor runs - * @returns schedule interval in ms - */ -export function periodToMs(schedule: { number: string; unit: Unit }) { - if (Object.keys(datemath.unitsMap).indexOf(schedule.unit) === -1) return 0; - - return parseInt(schedule.number, 10) * datemath.unitsMap[schedule.unit].base; -} - -/** - * Multi-stage function that first queries all the user's saved object monitor configs. - * - * Subsequently, fetch the status for each monitor per location in the data streams. - * @returns The counts of up/down/disabled monitor by location, and a map of each monitor:location status. - */ -export async function getStatus(context: RouteContext, params: OverviewStatusQuery) { - const { syntheticsEsClient, savedObjectsClient } = context; - - const { query, scopeStatusByLocation = true, showFromAllSpaces } = params; - - /** - * Walk through all monitor saved objects, bucket IDs by disabled/enabled status. - * - * Track max period to make sure the snapshot query should reach back far enough to catch - * latest ping for all enabled monitors. - */ - - const { filtersStr, locationFilter: queryLocations } = await getMonitorFilters({ - ...params, - context, - }); - - const allMonitors = await getAllMonitors({ - soClient: savedObjectsClient, - showFromAllSpaces, - search: query ? `${query}*` : undefined, - filter: filtersStr, - fields: [ - ConfigKey.ENABLED, - ConfigKey.LOCATIONS, - ConfigKey.MONITOR_QUERY_ID, - ConfigKey.CONFIG_ID, - ConfigKey.SCHEDULE, - ConfigKey.MONITOR_SOURCE_TYPE, - ConfigKey.MONITOR_TYPE, - ConfigKey.NAME, - ConfigKey.TAGS, - ConfigKey.PROJECT_ID, - ConfigKey.ALERT_CONFIG, - ], - }); - - const { - enabledMonitorQueryIds, - disabledMonitorQueryIds, - allIds, - disabledCount, - maxPeriod, - monitorLocationIds, - monitorLocationsMap, - disabledMonitorsCount, - projectMonitorsCount, - monitorQueryIdToConfigIdMap, - } = processMonitors(allMonitors, queryLocations); - - // Account for locations filter - const listOfLocationAfterFilter = - queryLocations && scopeStatusByLocation - ? intersection(monitorLocationIds, queryLocations) - : monitorLocationIds; - - const range = { - from: moment().subtract(maxPeriod, 'milliseconds').subtract(20, 'minutes').toISOString(), - to: 'now', - }; - - const { up, down, pending, upConfigs, downConfigs, pendingConfigs, disabledConfigs } = - await queryMonitorStatus({ - range, - monitors: allMonitors, - monitorLocationsMap, - monitorQueryIdToConfigIdMap, - esClient: syntheticsEsClient, - monitorLocationIds: listOfLocationAfterFilter, - monitorQueryIds: enabledMonitorQueryIds, - }); - - return { - allIds, - allMonitorsCount: allMonitors.length, - disabledMonitorsCount, - projectMonitorsCount, - enabledMonitorQueryIds, - disabledMonitorQueryIds, - disabledCount, - up, - down, - pending, - upConfigs, - downConfigs, - pendingConfigs, - disabledConfigs, - }; -} - -export const createGetCurrentStatusRoute: SyntheticsRestApiRouteFactory = () => ({ - method: 'GET', - path: SYNTHETICS_API_URLS.OVERVIEW_STATUS, - validate: { - query: OverviewStatusSchema, - }, - handler: async (routeContext): Promise<OverviewStatusState> => { - const { request } = routeContext; - - const params = request.query as OverviewStatusQuery; - return await getStatus(routeContext, params); - }, -}); diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_route_wrapper.ts b/x-pack/plugins/observability_solution/synthetics/server/synthetics_route_wrapper.ts deleted file mode 100644 index da3887ac94d56..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/synthetics_route_wrapper.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; -import { isEmpty } from 'lodash'; -import { isKibanaResponse } from '@kbn/core-http-server'; -import { isTestUser, SyntheticsEsClient } from './lib'; -import { checkIndicesReadPrivileges } from './synthetics_service/authentication/check_has_privilege'; -import { SYNTHETICS_INDEX_PATTERN } from '../common/constants'; -import { syntheticsServiceApiKey } from './saved_objects/service_api_key'; -import { SyntheticsRouteWrapper } from './routes/types'; - -export const syntheticsRouteWrapper: SyntheticsRouteWrapper = ( - uptimeRoute, - server, - syntheticsMonitorClient -) => ({ - ...uptimeRoute, - options: { - ...(uptimeRoute.options ?? {}), - }, - security: { - authz: { - requiredPrivileges: [ - 'uptime-read', - ...(uptimeRoute.requiredPrivileges ?? []), - ...(uptimeRoute?.writeAccess ? ['uptime-write'] : []), - ], - }, - }, - handler: async (context, request, response) => { - const { elasticsearch, savedObjects, uiSettings } = await context.core; - - const { client: esClient } = elasticsearch; - const savedObjectsClient = savedObjects.getClient({ - includedHiddenTypes: [syntheticsServiceApiKey.name], - }); - - // specifically needed for the synthetics service api key generation - server.authSavedObjectsClient = savedObjectsClient; - - const syntheticsEsClient = new SyntheticsEsClient(savedObjectsClient, esClient.asCurrentUser, { - request, - uiSettings, - isDev: Boolean(server.isDev) && !isTestUser(server), - heartbeatIndices: SYNTHETICS_INDEX_PATTERN, - }); - - server.syntheticsEsClient = syntheticsEsClient; - - const spaceId = server.spaces?.spacesService.getSpaceId(request) ?? DEFAULT_SPACE_ID; - - try { - const res = await uptimeRoute.handler({ - syntheticsEsClient, - savedObjectsClient, - context, - request, - response, - server, - spaceId, - syntheticsMonitorClient, - }); - if (isKibanaResponse(res)) { - return res; - } - - const inspectData = await syntheticsEsClient.getInspectData(uptimeRoute.path); - - if (Array.isArray(res)) { - if (isEmpty(inspectData)) { - return response.ok({ - body: res, - }); - } else { - return response.ok({ - body: { - result: res, - ...inspectData, - }, - }); - } - } - - return response.ok({ - body: { - ...res, - ...(await syntheticsEsClient.getInspectData(uptimeRoute.path)), - }, - }); - } catch (e) { - if (e.statusCode === 403) { - const privileges = await checkIndicesReadPrivileges(syntheticsEsClient); - if (!privileges.has_all_requested) { - return response.forbidden({ - body: { - message: - 'MissingIndicesPrivileges: You do not have permission to read from the synthetics-* indices. Please contact your administrator.', - }, - }); - } - } - server.logger.error(e); - throw e; - } - }, -}); diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.ts b/x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.ts deleted file mode 100644 index be60d3ca2a127..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.ts +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { exhaustMap, Subject, takeUntil, timer } from 'rxjs'; -import type { CoreStart, ElasticsearchClient, Logger } from '@kbn/core/server'; -import type { TelemetryPluginStart, TelemetryPluginSetup } from '@kbn/telemetry-plugin/server'; - -import { cloneDeep } from 'lodash'; - -import axios from 'axios'; - -import type { InfoResponse, LicenseGetResponse } from '@elastic/elasticsearch/lib/api/types'; - -import { TelemetryQueue } from './queue'; - -import type { MonitorUpdateTelemetryChannel, MonitorUpdateTelemetryChannelEvents } from './types'; - -/** - * Simplified version of https://github.com/elastic/kibana/blob/master/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts - * Sends batched events to telemetry v3 api - */ -export class TelemetryEventsSender { - private readonly initialCheckDelayMs = 10 * 1000; - private readonly checkIntervalMs = 30 * 1000; - private readonly logger: Logger; - private readonly stop$ = new Subject<void>(); - - private telemetryStart?: TelemetryPluginStart; - private telemetrySetup?: TelemetryPluginSetup; - private isSending = false; - private queuesPerChannel: { [channel: string]: TelemetryQueue<any> } = {}; - private isOptedIn?: boolean = true; // Assume true until the first check - private esClient?: ElasticsearchClient; - private clusterInfo?: InfoResponse; - private licenseInfo?: LicenseGetResponse; - - constructor(logger: Logger) { - this.logger = logger; - } - - public setup(telemetrySetup?: TelemetryPluginSetup) { - this.telemetrySetup = telemetrySetup; - } - - public async start(telemetryStart?: TelemetryPluginStart, core?: CoreStart) { - this.telemetryStart = telemetryStart; - this.esClient = core?.elasticsearch.client.asInternalUser; - this.clusterInfo = await this.fetchClusterInfo(); - this.licenseInfo = await this.fetchLicenseInfo(); - - this.logger.debug(`Starting local task`); - timer(this.initialCheckDelayMs, this.checkIntervalMs) - .pipe( - takeUntil(this.stop$), - exhaustMap(() => this.sendIfDue()) - ) - .subscribe(); - } - - public stop() { - this.stop$.next(); - } - - public queueTelemetryEvents<T extends MonitorUpdateTelemetryChannel>( - channel: T, - events: Array<MonitorUpdateTelemetryChannelEvents[T]> - ) { - if (!this.queuesPerChannel[channel]) { - this.queuesPerChannel[channel] = new TelemetryQueue<MonitorUpdateTelemetryChannelEvents[T]>(); - } - this.queuesPerChannel[channel].addEvents(cloneDeep(events)); - } - - public async isTelemetryOptedIn() { - this.isOptedIn = await this.telemetryStart?.getIsOptedIn(); - return this.isOptedIn === true; - } - - private async sendIfDue() { - if (this.isSending) { - return; - } - - this.isSending = true; - - this.isOptedIn = await this.isTelemetryOptedIn(); - if (!this.isOptedIn) { - this.logger.debug(`Telemetry is not opted-in.`); - for (const channel of Object.keys(this.queuesPerChannel)) { - this.queuesPerChannel[channel].clearEvents(); - } - this.isSending = false; - return; - } - - for (const channel of Object.keys(this.queuesPerChannel)) { - await this.sendEvents(await this.fetchTelemetryUrl(channel), this.queuesPerChannel[channel]); - } - - this.isSending = false; - } - - private async fetchClusterInfo(): Promise<InfoResponse | undefined> { - if (this.esClient === undefined || this.esClient === null) { - throw Error('elasticsearch client is unavailable: cannot retrieve cluster information'); - } - - try { - return await this.esClient.info(); - } catch (e) { - this.logger.debug(`Error fetching cluster information: ${e}`); - } - } - - private async fetchLicenseInfo() { - if (this.esClient === undefined || this.esClient === null) { - throw Error('elasticsearch client is unavailable: cannot retrieve license information'); - } - try { - return await this.esClient.license.get(); - } catch (e) { - this.logger.debug(`Error fetching license information: ${e}`); - } - } - - public async sendEvents(telemetryUrl: string, queue: TelemetryQueue<any>) { - let events = queue.getEvents(); - if (events.length === 0) { - return; - } - - events = events.map((event) => ({ ...event, license: this.licenseInfo?.license })); - - try { - this.logger.debug(`Telemetry URL: ${telemetryUrl}`); - - queue.clearEvents(); - - this.logger.debug(() => JSON.stringify(events)); - - await this.send(events, telemetryUrl); - } catch (err) { - this.logger.debug(`Error sending telemetry events data: ${err}`); - queue.clearEvents(); - } - } - - // Forms URLs like: - // https://telemetry.elastic.co/v3/send/my-channel-name or - // https://telemetry-staging.elastic.co/v3/send/my-channel-name - private async fetchTelemetryUrl(channel: string): Promise<string> { - const telemetryUrl = await this.telemetrySetup?.getTelemetryUrl(); - if (!telemetryUrl) { - throw Error("Couldn't get telemetry URL"); - } - if (!telemetryUrl.hostname.includes('staging')) { - telemetryUrl.pathname = `/v3/send/${channel}`; - } else { - telemetryUrl.pathname = `/v3-dev/send/${channel}`; - } - return telemetryUrl.toString(); - } - - private async send(events: unknown[], telemetryUrl: string) { - const { - cluster_name: clusterName, - cluster_uuid: clusterUuid, - version: clusterVersion, - } = this.clusterInfo ?? {}; - - // using ndjson so that each line will be wrapped in json envelope on server side - // see https://github.com/elastic/infra/blob/master/docs/telemetry/telemetry-next-dataflow.md#json-envelope - const ndjson = this.transformDataToNdjson(events); - - try { - const resp = await axios.post(telemetryUrl, ndjson, { - headers: { - 'Content-Type': 'application/x-ndjson', - ...(clusterUuid ? { 'X-Elastic-Cluster-ID': clusterUuid } : undefined), - ...(clusterName ? { 'X-Elastic-Cluster-Name': clusterName } : undefined), - 'X-Elastic-Stack-Version': clusterVersion?.number ? clusterVersion.number : '8.2.0', - }, - timeout: 5000, - }); - this.logger.debug( - () => `Events sent!. Response: ${resp.status} ${JSON.stringify(resp.data)}` - ); - } catch (err) { - this.logger.debug( - () => `Error sending events: ${err.response.status} ${JSON.stringify(err.response.data)}` - ); - } - } - - private transformDataToNdjson = (data: unknown[]): string => { - if (data.length !== 0) { - const dataString = data.map((dataItem) => JSON.stringify(dataItem)).join('\n'); - return `${dataString}\n`; - } else { - return ''; - } - }; -} diff --git a/x-pack/plugins/observability_solution/synthetics/tsconfig.json b/x-pack/plugins/observability_solution/synthetics/tsconfig.json deleted file mode 100644 index c82f6a5c3036a..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/tsconfig.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "__mocks__/**/*", - "common/**/*", - "scripts/**/*", - "public/**/*", - "server/**/*", - "../../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/alerting-plugin", - "@kbn/ml-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/observability-plugin", - "@kbn/fleet-plugin", - "@kbn/unified-search-plugin", - "@kbn/i18n", - "@kbn/core", - "@kbn/config-schema", - "@kbn/server-http-tools", - "@kbn/datemath", - "@kbn/share-plugin", - "@kbn/discover-plugin", - "@kbn/home-plugin", - "@kbn/embeddable-plugin", - "@kbn/data-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/inspector-plugin", - "@kbn/cases-plugin", - "@kbn/cloud-plugin", - "@kbn/data-views-plugin", - "@kbn/spaces-plugin", - "@kbn/core-doc-links-browser", - "@kbn/usage-collection-plugin", - "@kbn/kibana-react-plugin", - "@kbn/i18n-react", - "@kbn/securitysolution-io-ts-utils", - "@kbn/es-query", - "@kbn/stack-connectors-plugin", - "@kbn/rule-data-utils", - "@kbn/core-http-browser", - "@kbn/core-notifications-browser", - "@kbn/rison", - "@kbn/licensing-plugin", - "@kbn/rule-registry-plugin", - "@kbn/encrypted-saved-objects-plugin", - "@kbn/security-plugin", - "@kbn/logging-mocks", - "@kbn/task-manager-plugin", - "@kbn/es-types", - "@kbn/core-http-server-mocks", - "@kbn/utility-types", - "@kbn/telemetry-plugin", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/core-saved-objects-api-server", - "@kbn/core-saved-objects-common", - "@kbn/features-plugin", - "@kbn/bfetch-plugin", - "@kbn/actions-plugin", - "@kbn/core-elasticsearch-server", - "@kbn/core-saved-objects-api-server-mocks", - "@kbn/core-saved-objects-server", - "@kbn/shared-ux-prompt-not-found", - "@kbn/logging", - "@kbn/shared-ux-router", - "@kbn/alerts-as-data-utils", - "@kbn/exploratory-view-plugin", - "@kbn/observability-shared-plugin", - "@kbn/core-http-server", - "@kbn/std", - "@kbn/core-saved-objects-server-mocks", - "@kbn/shared-ux-page-kibana-template", - "@kbn/observability-ai-assistant-plugin", - "@kbn/unified-doc-viewer-plugin", - "@kbn/code-editor", - "@kbn/code-editor-mock", - "@kbn/securitysolution-io-ts-types", - "@kbn/shared-ux-link-redirect-app", - "@kbn/serverless", - "@kbn/repo-info", - "@kbn/index-management-plugin", - "@kbn/license-management-plugin", - "@kbn/react-kibana-mount", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-context-theme", - "@kbn/search-types", - "@kbn/core-lifecycle-browser", - "@kbn/ui-actions-browser", - "@kbn/presentation-publishing", - "@kbn/presentation-containers", - "@kbn/ui-actions-plugin", - "@kbn/presentation-util-plugin", - "@kbn/core-application-browser", - "@kbn/dashboard-plugin", - "@kbn/search-types", - "@kbn/slo-schema", - "@kbn/alerting-types", - "@kbn/babel-register", - "@kbn/slo-plugin", - "@kbn/ebt-tools", - "@kbn/alerting-types", - "@kbn/core-chrome-browser", - "@kbn/core-rendering-browser", - "@kbn/index-lifecycle-management-common-shared", - "@kbn/core-http-server-utils" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.sh b/x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.sh deleted file mode 100755 index 58c2c88a8d836..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -UUID="$(cat /proc/sys/kernel/random/uuid)" -export UUID - -node x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/plugins/observability_solution/uptime/README.md b/x-pack/plugins/observability_solution/uptime/README.md deleted file mode 100644 index bdc078e8607d7..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Uptime Monitoring - -## Purpose - -The purpose of this plugin is to provide users of Heartbeat more visibility of what's happening -in their infrastructure. - -## Layout - -There are three sections to the app, `common`, `public`, and `server`. - -### common - -Contains runtime types types, constants and a few other files. - -Notably, we use `io-ts`/`fp-ts` functions and types to help provide -additional runtime safety for our API requests/responses. - -### public - -We use Redux and associated tools for managing our app state. Components come in the usual `connect`ed and -presentational varieties. - -The `lib` directory controls bootstrapping code and adapter types. - -There is a `pages` directory; each view gets its own page component. - -The principal structure of the app is stored in `uptime_app.tsx`. - -### server - -The `lib` directory contains `adapters`, which are connections to external resources like Kibana -Server, Elasticsearch, etc. In addition, it contains domains, which are libraries that provide -functionality via adapters. - -The `requests` directory contains functions responsible for querying Elasticsearch and parsing its -responses. - -There's also a `rest_api` folder that defines the structure of the RESTful API endpoints. - -## Testing - -### Unit tests - -Documentation: https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing - -``` -yarn test:jest x-pack/plugins/observability_solution/synthetics -``` - -### Functional tests - -In one shell, from **~/kibana/x-pack**: -`node scripts/functional_tests_server.js` - -In another shell, from **~kibana/x-pack**: -`node ../scripts/functional_test_runner.js --grep="{TEST_NAME}"`. - -#### API tests - -If instead you need to run API tests, start up the test server and then in another shell, from **~kibana/x-pack**: -`node ../scripts/functional_test_runner.js --config test/api_integration/config.ts --grep="{TEST_NAME}"`. - -You can update snapshots by prefixing the runner command with `env UPDATE_UPTIME_FIXTURES=1` - -You can access the functional test server's Kibana at `http://localhost:5620/`. - -You can login with username `elastic` and password `changeme` by default. - -If you want to freeze a UI or API test you can include an async call like `await new Promise(r => setTimeout(r, 1000 * 60))` -to freeze the execution for 60 seconds if you need to click around or check things in the state that is loaded. - -#### Running --ssl tests - -Some of our tests require there to be an SSL connection between Kibana and Elasticsearch. - -We can run these tests like described above, but with some special config. - -`node scripts/functional_tests_server.js --config=test/functional_with_es_ssl/config.ts` - -`node scripts/functional_test_runner.js --config=test/functional_with_es_ssl/config.ts` - -#### Running accessibility tests - -We maintain a suite of Accessibility tests (you may see them referred to elsewhere as `a11y` tests). - -These tests render each of our pages and ensure that the inputs and other elements contain the -attributes necessary to ensure all users are able to make use of Kibana (for example, users relying -on screen readers). - -The commands for running these tests are very similar to the other functional tests described above. - -From the `~/x-pack` directory: - -Start the server: `node scripts/functional_tests_server --config test/accessibility/config.ts` - -Run the uptime `a11y` tests: `node scripts/functional_test_runner.js --config test/accessibility/config.ts --grep=uptime` diff --git a/x-pack/plugins/observability_solution/uptime/e2e/README.md b/x-pack/plugins/observability_solution/uptime/e2e/README.md deleted file mode 100644 index eaca49c558375..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## How to run these tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/synthetics/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From the same directory you can now run `node e2e.js --runner`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. - - -## Uptime App Tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/uptime/scripts`, run `node uptime_e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From the same directory you can now run `node uptime_e2e.js --runner`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/uptime/e2e/config.ts b/x-pack/plugins/observability_solution/uptime/e2e/config.ts deleted file mode 100644 index 4f3e86eeb35ea..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/config.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrConfigProviderContext } from '@kbn/test'; -import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { commonFunctionalServices } from '@kbn/ftr-common-functional-services'; -import { commonFunctionalUIServices } from '@kbn/ftr-common-functional-ui-services'; -import { readKibanaConfig } from './tasks/read_kibana_config'; -const MANIFEST_KEY = 'xpack.uptime.service.manifestUrl'; -const SERVICE_PASSWORD = 'xpack.uptime.service.password'; -const SERVICE_USERNAME = 'xpack.uptime.service.username'; - -async function config({ readConfigFile }: FtrConfigProviderContext) { - const kibanaCommonTestsConfig = await readConfigFile( - require.resolve('@kbn/test-suites-src/common/config') - ); - const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('@kbn/test-suites-xpack/functional/config.base') - ); - - const kibanaConfig = readKibanaConfig(); - - const manifestUrl = process.env.SYNTHETICS_SERVICE_MANIFEST ?? kibanaConfig[MANIFEST_KEY]; - const serviceUsername = process.env.SYNTHETICS_SERVICE_USERNAME ?? kibanaConfig[SERVICE_USERNAME]; - const servicePassword = process.env.SYNTHETICS_SERVICE_PASSWORD ?? kibanaConfig[SERVICE_PASSWORD]; - - return { - ...kibanaCommonTestsConfig.getAll(), - - services: { - ...commonFunctionalServices, - ...commonFunctionalUIServices, - }, - - esTestCluster: { - ...xpackFunctionalTestsConfig.get('esTestCluster'), - serverArgs: [ - ...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'), - // define custom es server here - // API Keys is enabled at the top level - 'xpack.security.enabled=true', - ], - }, - - kbnTestServer: { - ...xpackFunctionalTestsConfig.get('kbnTestServer'), - sourceArgs: process.env.WATCH_ENABLED - ? [] - : [...xpackFunctionalTestsConfig.get('kbnTestServer.sourceArgs'), '--no-watch'], - serverArgs: [ - ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), - '--csp.strict=false', - '--home.disableWelcomeScreen=true', - '--csp.warnLegacyBrowsers=false', - // define custom kibana server args here - `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, - // `--elasticsearch.ignoreVersionMismatch=${process.env.CI ? 'false' : 'true'}`, - `--elasticsearch.username=kibana_system`, - `--elasticsearch.password=changeme`, - '--xpack.reporting.enabled=false', - `--xpack.uptime.service.manifestUrl=${manifestUrl}`, - `--xpack.uptime.service.username=${ - process.env.SYNTHETICS_REMOTE_ENABLED - ? serviceUsername - : 'localKibanaIntegrationTestsUser' - }`, - `--xpack.uptime.service.password=${servicePassword}`, - '--uiSettings.overrides.observability:enableLegacyUptimeApp=true', - ], - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default config; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/parse_args_params.ts b/x-pack/plugins/observability_solution/uptime/e2e/helpers/parse_args_params.ts deleted file mode 100644 index a69cae912dfee..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/helpers/parse_args_params.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import yargs from 'yargs'; - -const { argv } = yargs(process.argv.slice(2)) - .option('headless', { - default: true, - type: 'boolean', - description: 'Start in headless mode', - }) - .option('bail', { - default: false, - type: 'boolean', - description: 'Pause on error', - }) - .option('grep', { - default: undefined, - type: 'string', - description: 'run only journeys with a name or tags that matches the glob', - }) - .help(); - -export { argv }; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/record_video.ts b/x-pack/plugins/observability_solution/uptime/e2e/helpers/record_video.ts deleted file mode 100644 index 23bcdfb643e72..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/helpers/record_video.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import fs from 'fs'; -import Runner from '@elastic/synthetics/dist/core/runner'; -import { after, Page } from '@elastic/synthetics'; - -const SYNTHETICS_RUNNER = Symbol.for('SYNTHETICS_RUNNER'); - -// @ts-ignore -export const runner: Runner = global[SYNTHETICS_RUNNER]; - -export const recordVideo = (page: Page, postfix = '') => { - after(async () => { - try { - const videoFilePath = await page.video()?.path(); - const pathToVideo = videoFilePath?.replace('.journeys/videos/', '').replace('.webm', ''); - const newVideoPath = videoFilePath?.replace( - pathToVideo!, - postfix ? runner.currentJourney!.name + `-${postfix}` : runner.currentJourney!.name - ); - fs.renameSync(videoFilePath!, newVideoPath!); - } catch (e) { - // eslint-disable-next-line no-console - console.log('Error while renaming video file', e); - } - }); -}; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/synthetics_runner.ts b/x-pack/plugins/observability_solution/uptime/e2e/helpers/synthetics_runner.ts deleted file mode 100644 index c9d1f485afbf2..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/helpers/synthetics_runner.ts +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* eslint-disable no-console */ - -import Url from 'url'; -import { run as syntheticsRun } from '@elastic/synthetics'; -import { PromiseType } from 'utility-types'; -import { createApmUsers } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/create_apm_users'; - -import { EsArchiver } from '@kbn/es-archiver'; -import { esArchiverUnload } from '../tasks/es_archiver'; -import { TestReporter } from './test_reporter'; - -export interface ArgParams { - headless: boolean; - match?: string; - pauseOnError: boolean; -} - -export class SyntheticsRunner { - public getService: any; - public kibanaUrl: string; - private elasticsearchUrl: string; - - public testFilesLoaded: boolean = false; - - public params: ArgParams; - - private loadTestFilesCallback?: (reload?: boolean) => Promise<void>; - - constructor(getService: any, params: ArgParams) { - this.getService = getService; - this.kibanaUrl = this.getKibanaUrl(); - this.elasticsearchUrl = this.getElasticsearchUrl(); - this.params = params; - } - - async setup() { - await this.createTestUsers(); - } - - async createTestUsers() { - await createApmUsers({ - elasticsearch: { node: this.elasticsearchUrl, username: 'elastic', password: 'changeme' }, - kibana: { hostname: this.kibanaUrl }, - }); - } - - async loadTestFiles(callback: (reload?: boolean) => Promise<void>, reload = false) { - console.log('Loading test files'); - await callback(reload); - this.loadTestFilesCallback = callback; - this.testFilesLoaded = true; - console.log('Successfully loaded test files'); - } - - async loadTestData(e2eDir: string, dataArchives: string[]) { - try { - console.log('Loading esArchiver...'); - - const esArchiver: EsArchiver = this.getService('esArchiver'); - - const promises = dataArchives.map((archive) => { - if (archive === 'synthetics_data') { - return esArchiver.load(e2eDir + archive, { - docsOnly: true, - skipExisting: true, - }); - } - return esArchiver.load(e2eDir + archive, { skipExisting: true }); - }); - - await Promise.all([...promises]); - } catch (e) { - console.log(e); - } - } - - getKibanaUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.kibana.protocol'), - hostname: config.get('servers.kibana.hostname'), - port: config.get('servers.kibana.port'), - }); - } - - getElasticsearchUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.elasticsearch.protocol'), - hostname: config.get('servers.elasticsearch.hostname'), - port: config.get('servers.elasticsearch.port'), - }); - } - - async run() { - if (!this.testFilesLoaded) { - throw new Error('Test files not loaded'); - } - const { headless, match, pauseOnError } = this.params; - const noOfRuns = process.env.NO_OF_RUNS ? Number(process.env.NO_OF_RUNS) : 1; - console.log(`Running ${noOfRuns} times`); - let results: PromiseType<ReturnType<typeof syntheticsRun>> = {}; - for (let i = 0; i < noOfRuns; i++) { - results = await syntheticsRun({ - params: { kibanaUrl: this.kibanaUrl, getService: this.getService }, - playwrightOptions: { - headless, - chromiumSandbox: false, - timeout: 60 * 1000, - viewport: { - height: 900, - width: 1600, - }, - recordVideo: { - dir: '.journeys/videos', - }, - }, - grepOpts: { match: match === 'undefined' ? '' : match }, - pauseOnError, - screenshots: 'only-on-failure', - reporter: TestReporter, - }); - if (noOfRuns > 1) { - // need to reload again since runner resets the journeys - await this.loadTestFiles(this.loadTestFilesCallback!, true); - } - } - - await this.assertResults(results); - } - - assertResults(results: PromiseType<ReturnType<typeof syntheticsRun>>) { - Object.entries(results).forEach(([_journey, result]) => { - if (result.status !== 'succeeded') { - process.exitCode = 1; - process.exit(); - } - }); - } - - cleanUp() { - console.log('Removing esArchiver...'); - esArchiverUnload('full_heartbeat'); - esArchiverUnload('browser'); - } -} diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/test_reporter.ts b/x-pack/plugins/observability_solution/uptime/e2e/helpers/test_reporter.ts deleted file mode 100644 index 198a038ec027f..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/helpers/test_reporter.ts +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Journey, Step } from '@elastic/synthetics/dist/dsl'; -import { Reporter, ReporterOptions } from '@elastic/synthetics'; -import { - JourneyEndResult, - JourneyStartResult, - StepEndResult, -} from '@elastic/synthetics/dist/common_types'; - -import { yellow, green, cyan, red, bold } from 'chalk'; - -// eslint-disable-next-line no-console -const log = console.log; - -import { performance } from 'perf_hooks'; -import * as fs from 'fs'; -import { gatherScreenshots } from '@elastic/synthetics/dist/reporters/json'; -import { CACHE_PATH } from '@elastic/synthetics/dist/helpers'; -import { join } from 'path'; - -function renderError(error: any) { - let output = ''; - const outer = indent(''); - const inner = indent(outer); - const container = outer + '---\n'; - output += container; - let stack = error.stack; - if (stack) { - output += inner + 'stack: |-\n'; - stack = rewriteErrorStack(stack, findPWLogsIndexes(stack)); - const lines = String(stack).split('\n'); - for (const line of lines) { - output += inner + ' ' + line + '\n'; - } - } - output += container; - return red(output); -} - -function renderDuration(durationMs: number) { - return Number(durationMs).toFixed(0); -} - -export class TestReporter implements Reporter { - metrics = { - succeeded: 0, - failed: 0, - skipped: 0, - }; - - journeys: Map<string, Array<StepEndResult & { name: string }>> = new Map(); - - constructor(options: ReporterOptions = {}) {} - - onJourneyStart(journey: Journey, {}: JourneyStartResult) { - if (process.env.CI) { - this.write(`\n--- Journey: ${journey.name}`); - } else { - this.write(bold(`\n Journey: ${journey.name}`)); - } - } - - onStepEnd(journey: Journey, step: Step, result: StepEndResult) { - const { status, end, start, error } = result; - const message = `${symbols[status]} Step: '${step.name}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - this.metrics[status]++; - if (!this.journeys.has(journey.name)) { - this.journeys.set(journey.name, []); - } - this.journeys.get(journey.name)?.push({ name: step.name, ...result }); - } - - async onJourneyEnd(journey: Journey, { error, start, end, status }: JourneyEndResult) { - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - if (total === 0 && error) { - this.write(renderError(error)); - } - const message = `${symbols[status]} Took (${renderDuration(end - start)} seconds)`; - this.write(message); - - await fs.promises.mkdir('.journeys/failed_steps', { recursive: true }); - - await gatherScreenshots(join(CACHE_PATH, 'screenshots'), async (screenshot) => { - const { data, step } = screenshot; - - if (status === 'failed') { - await (async () => { - await fs.promises.writeFile(join('.journeys/failed_steps/', `${step.name}.jpg`), data, { - encoding: 'base64', - }); - })(); - } - }); - } - - onEnd() { - const failedJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.some((step) => step.status === 'failed') - ); - - if (failedJourneys.length > 0) { - failedJourneys.forEach(([journeyName, steps]) => { - if (process.env.CI) { - const name = red(`Journey: ${journeyName} 🥵`); - this.write(`\n+++ ${name}`); - steps.forEach((stepResult) => { - const { status, end, start, error, name: stepName } = stepResult; - const message = `${symbols[status]} Step: '${stepName}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - }); - } - }); - } - - const successfulJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.every((step) => step.status === 'succeeded') - ); - - successfulJourneys.forEach(([journeyName, steps]) => { - try { - fs.unlinkSync('.journeys/videos/' + journeyName + '.webm'); - } catch (e) { - // eslint-disable-next-line no-console - console.log( - 'Failed to delete video file for path ' + '.journeys/videos/' + journeyName + '.webm' - ); - } - }); - - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - - let message = '\n'; - if (total === 0) { - message = 'No tests found!'; - message += ` (${renderDuration(now())} ms) \n`; - this.write(message); - return; - } - - message += succeeded > 0 ? green(` ${succeeded} passed`) : ''; - message += failed > 0 ? red(` ${failed} failed`) : ''; - message += skipped > 0 ? cyan(` ${skipped} skipped`) : ''; - message += ` (${renderDuration(now() / 1000)} seconds) \n`; - this.write(message); - } - - write(message: any) { - if (typeof message === 'object') { - message = JSON.stringify(message); - } - log(message + '\n'); - } -} - -const SEPARATOR = '\n'; - -function indent(lines: string, tab = ' ') { - return lines.replace(/^/gm, tab); -} - -const NO_UTF8_SUPPORT = process.platform === 'win32'; -const symbols = { - warning: yellow(NO_UTF8_SUPPORT ? '!' : '⚠'), - skipped: cyan('-'), - progress: cyan('>'), - succeeded: green(NO_UTF8_SUPPORT ? 'ok' : '✓'), - failed: red(NO_UTF8_SUPPORT ? 'x' : '✖'), -}; - -function now() { - return performance.now(); -} - -function findPWLogsIndexes(msgOrStack: string): [number, number] { - let startIndex = 0; - let endIndex = 0; - if (!msgOrStack) { - return [startIndex, endIndex]; - } - const lines = String(msgOrStack).split(SEPARATOR); - const logStart = /[=]{3,} logs [=]{3,}/; - const logEnd = /[=]{10,}/; - lines.forEach((line, index) => { - if (logStart.test(line)) { - startIndex = index; - } else if (logEnd.test(line)) { - endIndex = index; - } - }); - return [startIndex, endIndex]; -} - -function rewriteErrorStack(stack: string, indexes: [number, number]) { - const [start, end] = indexes; - /** - * Do not rewrite if its not a playwright error - */ - if (start === 0 && end === 0) { - return stack; - } - const linesToKeep = start + 3; - if (start > 0 && linesToKeep < end) { - const lines = stack.split(SEPARATOR); - return lines - .slice(0, linesToKeep) - .concat(...lines.slice(end)) - .join(SEPARATOR); - } - return stack; -} diff --git a/x-pack/plugins/observability_solution/uptime/e2e/tasks/es_archiver.ts b/x-pack/plugins/observability_solution/uptime/e2e/tasks/es_archiver.ts deleted file mode 100644 index 8415de3a385bd..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/tasks/es_archiver.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import Path from 'path'; -import { execSync } from 'child_process'; - -const ES_ARCHIVE_DIR = './fixtures/es_archiver'; - -// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https -const NODE_TLS_REJECT_UNAUTHORIZED = '1'; - -export const esArchiverLoad = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../../scripts/es_archiver load "${path}" --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverUnload = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../../scripts/es_archiver unload "${path}" --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverResetKibana = () => { - execSync( - `node ../../../../../scripts/es_archiver empty-kibana-index --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/tasks/read_kibana_config.ts b/x-pack/plugins/observability_solution/uptime/e2e/tasks/read_kibana_config.ts deleted file mode 100644 index b892454b12c97..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/tasks/read_kibana_config.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import path from 'path'; -import fs from 'fs'; -import yaml from 'js-yaml'; - -export type KibanaConfig = ReturnType<typeof readKibanaConfig>; - -export const readKibanaConfig = () => { - const kibanaConfigDir = path.join(__filename, '../../../../../../../config'); - const kibanaDevConfig = path.join(kibanaConfigDir, 'kibana.dev.yml'); - const kibanaConfig = path.join(kibanaConfigDir, 'kibana.yml'); - - return (yaml.load( - fs.readFileSync(fs.existsSync(kibanaDevConfig) ? kibanaDevConfig : kibanaConfig, 'utf8') - ) || {}) as Record<string, string>; -}; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/tsconfig.json b/x-pack/plugins/observability_solution/uptime/e2e/tsconfig.json deleted file mode 100644 index 2ad789f1e88d9..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "exclude": ["tmp", "target/**/*"], - "include": ["**/*"], - "compilerOptions": { - "outDir": "target/types", - "types": ["node"], - "isolatedModules": false - }, - "kbn_references": [ - "@kbn/test", - "@kbn/dev-utils", - "@kbn/ux-plugin/e2e", - "@kbn/ftr-common-functional-services", - "@kbn/apm-plugin", - "@kbn/es-archiver", - "@kbn/ftr-common-functional-ui-services" - ] -} diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/step_duration.journey.ts b/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/step_duration.journey.ts deleted file mode 100644 index 2dc781fcbf90f..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/step_duration.journey.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { journey, step, expect } from '@elastic/synthetics'; -import { RetryService } from '@kbn/ftr-common-functional-services'; -import { recordVideo } from '../../helpers/record_video'; -import { loginPageProvider } from '../../page_objects/login'; - -journey('StepsDuration', async ({ page, params }) => { - recordVideo(page); - - const retry: RetryService = params.getService('retry'); - - const login = loginPageProvider({ page }); - - const queryParams = new URLSearchParams({ - dateRangeStart: '2021-11-21T22:06:06.502Z', - dateRangeEnd: '2021-11-21T22:10:08.203Z', - }).toString(); - - const baseUrl = `${params.kibanaUrl}/app/uptime`; - - step('Go to uptime', async () => { - await page.goto(`${baseUrl}?${queryParams}`, { - waitUntil: 'networkidle', - }); - await login.loginToKibana(); - }); - - step('Go to monitor details', async () => { - await page.click('text="test-monitor - inline"'); - expect(page.url()).toBe(`${baseUrl}/monitor/dGVzdC1tb25pdG9yLWlubGluZQ==/?${queryParams}`); - }); - - step('Go to journey details', async () => { - await page.click('text=18 seconds'); - expect(page.url()).toBe(`${baseUrl}/journey/9f217c22-4b17-11ec-b976-aa665a54da40/steps`); - }); - - step('Check for monitor duration', async () => { - await retry.tryForTime(90 * 1000, async () => { - await page.click('text="6 Steps - 3 succeeded"'); - await page.waitForTimeout(2 * 1000); - await page.hover('text=8.9 sec'); - await page.waitForSelector('text=Explore'); - expect(await page.$('text=Explore')).toBeTruthy(); - await page.waitForSelector('text=area chart'); - expect(await page.$('text=area chart')).toBeTruthy(); - }); - }); -}); diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/synthetics_run.ts b/x-pack/plugins/observability_solution/uptime/e2e/uptime/synthetics_run.ts deleted file mode 100644 index b457a5b1e104f..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/synthetics_run.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { FtrConfigProviderContext } from '@kbn/test'; -import path from 'path'; -import { argv } from '../helpers/parse_args_params'; -import { SyntheticsRunner } from '../helpers/synthetics_runner'; - -const { headless, grep, bail: pauseOnError } = argv; - -async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('../config.ts')); - return { - ...kibanaConfig.getAll(), - testRunner: async ({ getService }: any) => { - const syntheticsRunner = new SyntheticsRunner(getService, { - headless, - match: grep, - pauseOnError, - }); - - await syntheticsRunner.setup(); - const fixturesDir = path.join(__dirname, '../fixtures/es_archiver/'); - - await syntheticsRunner.loadTestData(fixturesDir, [ - 'synthetics_data', - 'full_heartbeat', - 'browser', - ]); - - await syntheticsRunner.loadTestFiles(async (reload) => { - if (reload) { - const dirPath = require.resolve('./journeys').replace('index.ts', ''); - Object.keys(require.cache).forEach(function (key) { - if (key.startsWith(dirPath)) { - delete require.cache[key]; - } - }); - } - require(path.join(__dirname, './journeys')); - }); - - await syntheticsRunner.run(); - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default runE2ETests; diff --git a/x-pack/plugins/observability_solution/uptime/jest.config.js b/x-pack/plugins/observability_solution/uptime/jest.config.js deleted file mode 100644 index 639e286793557..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/uptime'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/observability_solution/uptime', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/uptime/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts deleted file mode 100644 index b6d250a2cb70f..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useFetcher } from '@kbn/observability-shared-plugin/public'; -import { useGenerateUpdatedKueryString } from '../../../../hooks'; -import { fetchSnapshotCount } from '../../../../state/api'; - -export const useSnapShotCount = ({ query, filters }: { query: string; filters?: [] | string }) => { - const parsedFilters = - filters === undefined || typeof filters === 'string' - ? '' - : JSON.stringify(Array.from(Object.entries(filters))); - - const [esKuery, error] = useGenerateUpdatedKueryString(query, parsedFilters, undefined, true); - - const { data, loading } = useFetcher( - () => - fetchSnapshotCount({ - dateRangeStart: 'now-24h', - dateRangeEnd: 'now', - filters: error ? undefined : esKuery, - }), - // FIXME: Dario thinks there is a better way to do this but - // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps - [esKuery, query] - ); - - return { count: data || { total: 0, up: 0, down: 0 }, loading }; -}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx deleted file mode 100644 index ac7e20db41b17..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useState, useEffect } from 'react'; -import { EuiSpacer } from '@elastic/eui'; -import { useFetcher } from '@kbn/observability-shared-plugin/public'; -import { useSelector } from 'react-redux'; -import { getHasIntegrationMonitors } from '../../../state/api/has_integration_monitors'; -import { monitorListSelector } from '../../../state/selectors'; -import { IntegrationDeprecationCallout } from './integration_deprecation_callout'; - -export const INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY = - 'SYNTHETICS_INTEGRATION_DEPRECATION_HAS_BEEN_DISMISSED'; - -export const IntegrationDeprecation = () => { - const monitorList = useSelector(monitorListSelector); - const noticeHasBeenDismissed = - window.sessionStorage.getItem(INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY) === 'true'; - const { data, loading } = useFetcher(() => { - // load it when list is loaded - if (!noticeHasBeenDismissed && monitorList.isLoaded) { - return getHasIntegrationMonitors(); - } - return undefined; - // FIXME: Dario thinks there is a better way to do this but - // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [monitorList.isLoaded]); - const hasIntegrationMonitors = !loading && data && data.hasIntegrationMonitors; - const [shouldShowNotice, setShouldShowNotice] = useState( - Boolean(hasIntegrationMonitors && !noticeHasBeenDismissed) - ); - - const handleDismissDeprecationNotice = () => { - window.sessionStorage.setItem(INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY, 'true'); - setShouldShowNotice(false); - }; - - useEffect(() => { - setShouldShowNotice(Boolean(hasIntegrationMonitors && !noticeHasBeenDismissed)); - }, [hasIntegrationMonitors, noticeHasBeenDismissed]); - - return shouldShowNotice ? ( - <> - <IntegrationDeprecationCallout - handleDismissDeprecationNotice={handleDismissDeprecationNotice} - /> - <EuiSpacer size="s" /> - </> - ) : null; -}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts deleted file mode 100644 index 15ffd98c739c3..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useContext } from 'react'; -import { useSelector } from 'react-redux'; -import { useFetcher } from '@kbn/observability-shared-plugin/public'; -import { useGetUrlParams } from '../../../hooks'; -import { esKuerySelector } from '../../../state/selectors'; -import { UptimeRefreshContext } from '../../../contexts'; -import { fetchSnapshotCount } from '../../../state/api'; - -export const useSnapShotCount = () => { - const { dateRangeStart, dateRangeEnd, query } = useGetUrlParams(); - - const { lastRefresh } = useContext(UptimeRefreshContext); - - const esKuery = useSelector(esKuerySelector); - - const { data, loading } = useFetcher( - () => fetchSnapshotCount({ query, dateRangeStart, dateRangeEnd, filters: esKuery }), - // FIXME: Dario thinks there is a better way to do this but - // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps - [dateRangeStart, dateRangeEnd, esKuery, lastRefresh, query] - ); - - return { count: data || { total: 0, up: 0, down: 0 }, loading }; -}; diff --git a/x-pack/plugins/observability_solution/uptime/tsconfig.json b/x-pack/plugins/observability_solution/uptime/tsconfig.json deleted file mode 100644 index 1d60bc456170e..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/tsconfig.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "scripts/**/*", - "public/**/*", - "public/legacy_uptime/components/monitor/status_details/location_map/embeddables/low_poly_layer.json", - "server/**/*", - "server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json", - "../../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/config-schema", - "@kbn/i18n", - "@kbn/fleet-plugin", - "@kbn/alerting-plugin", - "@kbn/datemath", - "@kbn/stack-connectors-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/kibana-react-plugin", - "@kbn/observability-shared-plugin", - "@kbn/observability-plugin", - "@kbn/i18n-react", - "@kbn/shared-ux-page-kibana-template", - "@kbn/test-jest-helpers", - "@kbn/ml-anomaly-utils", - "@kbn/exploratory-view-plugin", - "@kbn/ml-plugin", - "@kbn/rison", - "@kbn/shared-ux-router", - "@kbn/unified-search-plugin", - "@kbn/core-http-browser", - "@kbn/es-query", - "@kbn/data-views-plugin", - "@kbn/ui-theme", - "@kbn/rule-data-utils", - "@kbn/kibana-utils-plugin", - "@kbn/data-plugin", - "@kbn/ml-error-utils", - "@kbn/core-http-browser-mocks", - "@kbn/securitysolution-io-ts-utils", - "@kbn/share-plugin", - "@kbn/discover-plugin", - "@kbn/home-plugin", - "@kbn/embeddable-plugin", - "@kbn/inspector-plugin", - "@kbn/cases-plugin", - "@kbn/cloud-plugin", - "@kbn/spaces-plugin", - "@kbn/core-doc-links-browser", - "@kbn/usage-collection-plugin", - "@kbn/core-application-browser", - "@kbn/encrypted-saved-objects-plugin", - "@kbn/task-manager-plugin", - "@kbn/features-plugin", - "@kbn/rule-registry-plugin", - "@kbn/security-plugin", - "@kbn/bfetch-plugin", - "@kbn/alerts-as-data-utils", - "@kbn/std", - "@kbn/utility-types", - "@kbn/licensing-plugin", - "@kbn/es-types", - "@kbn/safer-lodash-set", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/core-http-server", - "@kbn/actions-plugin", - "@kbn/core-saved-objects-server", - "@kbn/observability-ai-assistant-plugin", - "@kbn/shared-ux-link-redirect-app", - "@kbn/repo-info", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-context-theme", - "@kbn/react-kibana-mount", - "@kbn/deeplinks-observability", - "@kbn/ebt-tools", - "@kbn/core-rendering-browser", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.sh b/x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.sh deleted file mode 100644 index f358969a3ff8a..0000000000000 --- a/x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -UUID="$(cat /proc/sys/kernel/random/uuid)" -export UUID - -node x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/plugins/observability_solution/ux/e2e/README.md b/x-pack/plugins/observability_solution/ux/e2e/README.md deleted file mode 100644 index 60c6d2f643b77..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/README.md +++ /dev/null @@ -1,15 +0,0 @@ -## How to run these tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/ux/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From this directory, `~/x-pack/plugins/observability_solution/ux/e2e`, you can now run `node ../../../../../scripts/functional_test_runner --config synthetics_run.ts`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/ux/e2e/helpers/parse_args_params.ts b/x-pack/plugins/observability_solution/ux/e2e/helpers/parse_args_params.ts deleted file mode 100644 index 41100ba2ec295..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/helpers/parse_args_params.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import yargs from 'yargs'; - -const { argv } = yargs(process.argv.slice(2)) - .option('headless', { - default: true, - type: 'boolean', - description: 'Start in headless mode', - }) - .option('bail', { - default: false, - type: 'boolean', - description: 'Pause on error', - }) - .option('watch', { - default: false, - type: 'boolean', - description: 'Runs the server in watch mode, restarting on changes', - }) - .option('grep', { - default: undefined, - type: 'string', - description: 'run only journeys with a name or tags that matches the glob', - }) - .help(); - -export { argv }; diff --git a/x-pack/plugins/observability_solution/ux/e2e/helpers/record_video.ts b/x-pack/plugins/observability_solution/ux/e2e/helpers/record_video.ts deleted file mode 100644 index 23bcdfb643e72..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/helpers/record_video.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import fs from 'fs'; -import Runner from '@elastic/synthetics/dist/core/runner'; -import { after, Page } from '@elastic/synthetics'; - -const SYNTHETICS_RUNNER = Symbol.for('SYNTHETICS_RUNNER'); - -// @ts-ignore -export const runner: Runner = global[SYNTHETICS_RUNNER]; - -export const recordVideo = (page: Page, postfix = '') => { - after(async () => { - try { - const videoFilePath = await page.video()?.path(); - const pathToVideo = videoFilePath?.replace('.journeys/videos/', '').replace('.webm', ''); - const newVideoPath = videoFilePath?.replace( - pathToVideo!, - postfix ? runner.currentJourney!.name + `-${postfix}` : runner.currentJourney!.name - ); - fs.renameSync(videoFilePath!, newVideoPath!); - } catch (e) { - // eslint-disable-next-line no-console - console.log('Error while renaming video file', e); - } - }); -}; diff --git a/x-pack/plugins/observability_solution/ux/e2e/helpers/synthetics_runner.ts b/x-pack/plugins/observability_solution/ux/e2e/helpers/synthetics_runner.ts deleted file mode 100644 index e191d5fc101f7..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/helpers/synthetics_runner.ts +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* eslint-disable no-console */ - -import Url from 'url'; -import { run as syntheticsRun } from '@elastic/synthetics'; -import { PromiseType } from 'utility-types'; -import { createApmUsers } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/create_apm_users'; - -import { EsArchiver } from '@kbn/es-archiver'; -import { esArchiverUnload } from '../tasks/es_archiver'; -import { TestReporter } from './test_reporter'; - -export interface ArgParams { - headless: boolean; - match?: string; - pauseOnError: boolean; -} - -export class SyntheticsRunner { - public getService: any; - public kibanaUrl: string; - private elasticsearchUrl: string; - - public testFilesLoaded: boolean = false; - - public params: ArgParams; - - private loadTestFilesCallback?: (reload?: boolean) => Promise<void>; - - constructor(getService: any, params: ArgParams) { - this.getService = getService; - this.kibanaUrl = this.getKibanaUrl(); - this.elasticsearchUrl = this.getElasticsearchUrl(); - this.params = params; - } - - async setup() { - await this.createTestUsers(); - } - - async createTestUsers() { - await createApmUsers({ - elasticsearch: { - node: this.elasticsearchUrl, - username: 'elastic', - password: 'changeme', - }, - kibana: { hostname: this.kibanaUrl }, - }); - } - - async loadTestFiles(callback: (reload?: boolean) => Promise<void>, reload = false) { - console.log('Loading test files'); - await callback(reload); - this.loadTestFilesCallback = callback; - this.testFilesLoaded = true; - console.log('Successfully loaded test files'); - } - - async loadTestData(e2eDir: string, dataArchives: string[]) { - try { - console.log('Loading esArchiver...'); - - const esArchiver: EsArchiver = this.getService('esArchiver'); - - const promises = dataArchives.map((archive) => { - if (archive === 'synthetics_data') { - return esArchiver.load(e2eDir + archive, { - docsOnly: true, - skipExisting: true, - }); - } - return esArchiver.load(e2eDir + archive, { skipExisting: true }); - }); - - await Promise.all([...promises]); - } catch (e) { - console.log(e); - } - } - - getKibanaUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.kibana.protocol'), - hostname: config.get('servers.kibana.hostname'), - port: config.get('servers.kibana.port'), - }); - } - - getElasticsearchUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.elasticsearch.protocol'), - hostname: config.get('servers.elasticsearch.hostname'), - port: config.get('servers.elasticsearch.port'), - }); - } - - async run() { - if (!this.testFilesLoaded) { - throw new Error('Test files not loaded'); - } - const { headless, match, pauseOnError } = this.params; - const noOfRuns = process.env.NO_OF_RUNS ? Number(process.env.NO_OF_RUNS) : 1; - console.log(`Running ${noOfRuns} times`); - let results: PromiseType<ReturnType<typeof syntheticsRun>> = {}; - for (let i = 0; i < noOfRuns; i++) { - results = await syntheticsRun({ - params: { kibanaUrl: this.kibanaUrl, getService: this.getService }, - playwrightOptions: { - headless, - chromiumSandbox: false, - timeout: 60 * 1000, - viewport: { - height: 900, - width: 1600, - }, - recordVideo: { - dir: '.journeys/videos', - }, - }, - grepOpts: { match: match === 'undefined' ? '' : match }, - pauseOnError, - screenshots: 'only-on-failure', - reporter: TestReporter, - }); - if (noOfRuns > 1) { - // need to reload again since runner resets the journeys - await this.loadTestFiles(this.loadTestFilesCallback!, true); - } - } - - await this.assertResults(results); - } - - assertResults(results: PromiseType<ReturnType<typeof syntheticsRun>>) { - Object.entries(results).forEach(([_journey, result]) => { - if (result.status !== 'succeeded') { - process.exitCode = 1; - process.exit(); - } - }); - } - - cleanUp() { - console.log('Removing esArchiver...'); - esArchiverUnload('full_heartbeat'); - esArchiverUnload('browser'); - } -} diff --git a/x-pack/plugins/observability_solution/ux/e2e/helpers/test_reporter.ts b/x-pack/plugins/observability_solution/ux/e2e/helpers/test_reporter.ts deleted file mode 100644 index 198a038ec027f..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/helpers/test_reporter.ts +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Journey, Step } from '@elastic/synthetics/dist/dsl'; -import { Reporter, ReporterOptions } from '@elastic/synthetics'; -import { - JourneyEndResult, - JourneyStartResult, - StepEndResult, -} from '@elastic/synthetics/dist/common_types'; - -import { yellow, green, cyan, red, bold } from 'chalk'; - -// eslint-disable-next-line no-console -const log = console.log; - -import { performance } from 'perf_hooks'; -import * as fs from 'fs'; -import { gatherScreenshots } from '@elastic/synthetics/dist/reporters/json'; -import { CACHE_PATH } from '@elastic/synthetics/dist/helpers'; -import { join } from 'path'; - -function renderError(error: any) { - let output = ''; - const outer = indent(''); - const inner = indent(outer); - const container = outer + '---\n'; - output += container; - let stack = error.stack; - if (stack) { - output += inner + 'stack: |-\n'; - stack = rewriteErrorStack(stack, findPWLogsIndexes(stack)); - const lines = String(stack).split('\n'); - for (const line of lines) { - output += inner + ' ' + line + '\n'; - } - } - output += container; - return red(output); -} - -function renderDuration(durationMs: number) { - return Number(durationMs).toFixed(0); -} - -export class TestReporter implements Reporter { - metrics = { - succeeded: 0, - failed: 0, - skipped: 0, - }; - - journeys: Map<string, Array<StepEndResult & { name: string }>> = new Map(); - - constructor(options: ReporterOptions = {}) {} - - onJourneyStart(journey: Journey, {}: JourneyStartResult) { - if (process.env.CI) { - this.write(`\n--- Journey: ${journey.name}`); - } else { - this.write(bold(`\n Journey: ${journey.name}`)); - } - } - - onStepEnd(journey: Journey, step: Step, result: StepEndResult) { - const { status, end, start, error } = result; - const message = `${symbols[status]} Step: '${step.name}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - this.metrics[status]++; - if (!this.journeys.has(journey.name)) { - this.journeys.set(journey.name, []); - } - this.journeys.get(journey.name)?.push({ name: step.name, ...result }); - } - - async onJourneyEnd(journey: Journey, { error, start, end, status }: JourneyEndResult) { - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - if (total === 0 && error) { - this.write(renderError(error)); - } - const message = `${symbols[status]} Took (${renderDuration(end - start)} seconds)`; - this.write(message); - - await fs.promises.mkdir('.journeys/failed_steps', { recursive: true }); - - await gatherScreenshots(join(CACHE_PATH, 'screenshots'), async (screenshot) => { - const { data, step } = screenshot; - - if (status === 'failed') { - await (async () => { - await fs.promises.writeFile(join('.journeys/failed_steps/', `${step.name}.jpg`), data, { - encoding: 'base64', - }); - })(); - } - }); - } - - onEnd() { - const failedJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.some((step) => step.status === 'failed') - ); - - if (failedJourneys.length > 0) { - failedJourneys.forEach(([journeyName, steps]) => { - if (process.env.CI) { - const name = red(`Journey: ${journeyName} 🥵`); - this.write(`\n+++ ${name}`); - steps.forEach((stepResult) => { - const { status, end, start, error, name: stepName } = stepResult; - const message = `${symbols[status]} Step: '${stepName}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - }); - } - }); - } - - const successfulJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.every((step) => step.status === 'succeeded') - ); - - successfulJourneys.forEach(([journeyName, steps]) => { - try { - fs.unlinkSync('.journeys/videos/' + journeyName + '.webm'); - } catch (e) { - // eslint-disable-next-line no-console - console.log( - 'Failed to delete video file for path ' + '.journeys/videos/' + journeyName + '.webm' - ); - } - }); - - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - - let message = '\n'; - if (total === 0) { - message = 'No tests found!'; - message += ` (${renderDuration(now())} ms) \n`; - this.write(message); - return; - } - - message += succeeded > 0 ? green(` ${succeeded} passed`) : ''; - message += failed > 0 ? red(` ${failed} failed`) : ''; - message += skipped > 0 ? cyan(` ${skipped} skipped`) : ''; - message += ` (${renderDuration(now() / 1000)} seconds) \n`; - this.write(message); - } - - write(message: any) { - if (typeof message === 'object') { - message = JSON.stringify(message); - } - log(message + '\n'); - } -} - -const SEPARATOR = '\n'; - -function indent(lines: string, tab = ' ') { - return lines.replace(/^/gm, tab); -} - -const NO_UTF8_SUPPORT = process.platform === 'win32'; -const symbols = { - warning: yellow(NO_UTF8_SUPPORT ? '!' : '⚠'), - skipped: cyan('-'), - progress: cyan('>'), - succeeded: green(NO_UTF8_SUPPORT ? 'ok' : '✓'), - failed: red(NO_UTF8_SUPPORT ? 'x' : '✖'), -}; - -function now() { - return performance.now(); -} - -function findPWLogsIndexes(msgOrStack: string): [number, number] { - let startIndex = 0; - let endIndex = 0; - if (!msgOrStack) { - return [startIndex, endIndex]; - } - const lines = String(msgOrStack).split(SEPARATOR); - const logStart = /[=]{3,} logs [=]{3,}/; - const logEnd = /[=]{10,}/; - lines.forEach((line, index) => { - if (logStart.test(line)) { - startIndex = index; - } else if (logEnd.test(line)) { - endIndex = index; - } - }); - return [startIndex, endIndex]; -} - -function rewriteErrorStack(stack: string, indexes: [number, number]) { - const [start, end] = indexes; - /** - * Do not rewrite if its not a playwright error - */ - if (start === 0 && end === 0) { - return stack; - } - const linesToKeep = start + 3; - if (start > 0 && linesToKeep < end) { - const lines = stack.split(SEPARATOR); - return lines - .slice(0, linesToKeep) - .concat(...lines.slice(end)) - .join(SEPARATOR); - } - return stack; -} diff --git a/x-pack/plugins/observability_solution/ux/e2e/synthetics_run.ts b/x-pack/plugins/observability_solution/ux/e2e/synthetics_run.ts deleted file mode 100644 index 7c7581b10e6a6..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/synthetics_run.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { FtrConfigProviderContext } from '@kbn/test'; -import path from 'path'; -import { argv } from './helpers/parse_args_params'; -import { SyntheticsRunner } from './helpers/synthetics_runner'; - -const { headless, grep, bail: pauseOnError } = argv; - -async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); - - return { - ...kibanaConfig.getAll(), - testRunner: async ({ getService }: any) => { - const syntheticsRunner = new SyntheticsRunner(getService, { - headless, - match: grep, - pauseOnError, - }); - - await syntheticsRunner.setup(); - - const fixturesDir = path.join(__dirname, '../e2e/fixtures/'); - - await syntheticsRunner.loadTestData(fixturesDir, ['rum_8.0.0', 'rum_test_data']); - await syntheticsRunner.loadTestFiles(async () => { - require('./journeys'); - }); - await syntheticsRunner.run(); - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default runE2ETests; diff --git a/x-pack/plugins/observability_solution/ux/e2e/tasks/es_archiver.ts b/x-pack/plugins/observability_solution/ux/e2e/tasks/es_archiver.ts deleted file mode 100644 index 8415de3a385bd..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/tasks/es_archiver.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import Path from 'path'; -import { execSync } from 'child_process'; - -const ES_ARCHIVE_DIR = './fixtures/es_archiver'; - -// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https -const NODE_TLS_REJECT_UNAUTHORIZED = '1'; - -export const esArchiverLoad = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../../scripts/es_archiver load "${path}" --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverUnload = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../../scripts/es_archiver unload "${path}" --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverResetKibana = () => { - execSync( - `node ../../../../../scripts/es_archiver empty-kibana-index --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; diff --git a/x-pack/plugins/observability_solution/ux/e2e/tsconfig.json b/x-pack/plugins/observability_solution/ux/e2e/tsconfig.json deleted file mode 100644 index 93a315a3e7a6b..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "exclude": ["tmp", "target/**/*"], - "include": ["./**/*"], - "compilerOptions": { - "outDir": "target/types", - "types": ["node"] - }, - "kbn_references": ["@kbn/test", "@kbn/apm-plugin", "@kbn/es-archiver"] -} diff --git a/x-pack/plugins/observability_solution/ux/jest.config.js b/x-pack/plugins/observability_solution/ux/jest.config.js deleted file mode 100644 index b83d3a7ba5455..0000000000000 --- a/x-pack/plugins/observability_solution/ux/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -const path = require('path'); - -module.exports = { - preset: '@kbn/test', - rootDir: path.resolve(__dirname, '../../../..'), - roots: ['<rootDir>/x-pack/plugins/observability_solution/ux'], -}; diff --git a/x-pack/plugins/observability_solution/ux/kibana.jsonc b/x-pack/plugins/observability_solution/ux/kibana.jsonc deleted file mode 100644 index f2770a896d89b..0000000000000 --- a/x-pack/plugins/observability_solution/ux/kibana.jsonc +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "plugin", - "id": "@kbn/ux-plugin", - "owner": [ - "@elastic/obs-ux-infra_services-team" - ], - "group": "observability", - "visibility": "private", - "plugin": { - "id": "ux", - "browser": true, - "server": true, - "configPath": [ - "xpack", - "ux" - ], - "requiredPlugins": [ - "features", - "data", - "dataViews", - "exploratoryView", - "licensing", - "triggersActionsUi", - "observabilityShared", - "embeddable", - "inspector", - "apm" - ], - "optionalPlugins": [ - "cloud", - "usageCollection", - "taskManager", - "actions", - "alerts", - "observability", - "security", - "maps", - "lens", - "observabilityAIAssistant", - "spaces" - ], - "requiredBundles": [ - "kibanaReact", - "exploratoryView", - "observability", - "maps" - ] - } -} \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/ux/readme.md b/x-pack/plugins/observability_solution/ux/readme.md deleted file mode 100644 index e03da5df05eea..0000000000000 --- a/x-pack/plugins/observability_solution/ux/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -# Documentation for UX UI developers - -https://docs.elastic.dev/kibana-dev-docs/welcome - -## Running E2E Tests - -The tests are managed via the `scripts/e2e.js` file. This script accepts numerous options. - -From the Kibana root you can run `node x-pack/plugins/observability_solution/ux/scripts/e2e.js` to simply stand up the stack, load data, and run the tests. - -If you are developing a new test, it is better to stand up the stack in one shell and load data/run tests in a second session. You can do this by running: - -- `node ./x-pack/plugins/observability_solution/ux/scripts/e2e.js --server` -- `node ./x-pack/plugins/observability_solution/ux/scripts/e2e.js --runner`, you can also specify `--grep "{TEST_NAME}"` to run a specific series of tests diff --git a/x-pack/plugins/observability_solution/ux/tsconfig.json b/x-pack/plugins/observability_solution/ux/tsconfig.json deleted file mode 100644 index b27a700aa9b1f..0000000000000 --- a/x-pack/plugins/observability_solution/ux/tsconfig.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../../typings/**/*", - "common/**/*", - "public/**/*", - "server/**/*", - "typings/**/*", - "public/**/*.json" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/data-plugin", - "@kbn/embeddable-plugin", - "@kbn/home-plugin", - "@kbn/inspector-plugin", - "@kbn/kibana-react-plugin", - "@kbn/apm-plugin", - "@kbn/features-plugin", - "@kbn/licensing-plugin", - "@kbn/maps-plugin", - "@kbn/observability-plugin", - "@kbn/lens-plugin", - "@kbn/i18n", - "@kbn/io-ts-utils", - "@kbn/data-views-plugin", - "@kbn/core-http-browser", - "@kbn/datemath", - "@kbn/ui-theme", - "@kbn/typed-react-router-config", - "@kbn/utility-types", - "@kbn/server-route-repository", - "@kbn/es-types", - "@kbn/shared-ux-page-kibana-template", - "@kbn/i18n-react", - "@kbn/es-query", - "@kbn/exploratory-view-plugin", - "@kbn/observability-shared-plugin", - "@kbn/shared-ux-router", - "@kbn/observability-ai-assistant-plugin", - "@kbn/config-schema", - "@kbn/shared-ux-link-redirect-app", - "@kbn/apm-data-view", - "@kbn/spaces-plugin", - "@kbn/deeplinks-observability", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-context-theme", - "@kbn/search-types", - "@kbn/server-route-repository-utils", - "@kbn/core-chrome-browser" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/osquery/cypress/README.md b/x-pack/plugins/osquery/cypress/README.md deleted file mode 100644 index 6d72c6aa82b9d..0000000000000 --- a/x-pack/plugins/osquery/cypress/README.md +++ /dev/null @@ -1,138 +0,0 @@ -# Cypress Tests - -The `osquery/cypress` directory contains functional UI tests that execute using [Cypress](https://www.cypress.io/). - -## Running the tests - -There are currently three ways to run the tests, comprised of two execution modes and two target environments, which will be detailed below. - -### Execution modes - -#### Interactive mode - -When you run Cypress in interactive mode, an interactive runner is displayed that allows you to see commands as they execute while also viewing the application under test. For more information, please see [cypress documentation](https://docs.cypress.io/guides/core-concepts/test-runner.html#Overview). - -#### Headless mode - -A headless browser is a browser simulation program that does not have a user interface. These programs operate like any other browser, but do not display any UI. This is why meanwhile you are executing the tests on this mode you are not going to see the application under test. Just the output of the test is displayed on the terminal once the execution is finished. - -### Target environments - -#### FTR (CI) - -This is the configuration used by CI. It uses the FTR to spawn both a Kibana instance (http://localhost:5620) and an Elasticsearch instance (http://localhost:9220) with a preloaded minimum set of data (see preceding "Test data" section), and then executes cypress against this stack. You can find this configuration in `x-pack/test/osquery_cypress` - -### Test Execution: Examples - -#### FTR + Headless (Chrome) - -Since this is how tests are run on CI, this will likely be the configuration you want to reproduce failures locally, etc. - -```shell -# bootstrap kibana from the project root -yarn kbn bootstrap - -# build the plugins/assets that cypress will execute against -node scripts/build_kibana_platform_plugins - -# launch the cypress test runner -cd x-pack/plugins/osquery -yarn cypress:run-as-ci -``` -#### FTR + Interactive - -This is the preferred mode for developing new tests. - -```shell -# bootstrap kibana from the project root -yarn kbn bootstrap - -# build the plugins/assets that cypress will execute against -node scripts/build_kibana_platform_plugins - -# launch the cypress test runner -cd x-pack/plugins/osquery -yarn cypress:open-as-ci -``` - -Note that you can select the browser you want to use on the top right side of the interactive runner. - -## Folder Structure - -### integration/ - -Cypress convention. Contains the specs that are going to be executed. - -### fixtures/ - -Cypress convention. Fixtures are used as external pieces of static data when we stub responses. - -### plugins/ - -Cypress convention. As a convenience, by default Cypress will automatically include the plugins file cypress/plugins/index.js before every single spec file it runs. - -### screens/ - -Contains the elements we want to interact with in our tests. - -Each file inside the screens folder represents a screen in our application. - -### tasks/ - -_Tasks_ are functions that may be reused across tests. - -Each file inside the tasks folder represents a screen of our application. - -## Test data - -The data the tests need: - -- Is generated on the fly using our application APIs (preferred way) -- Is ingested on the ELS instance using the `es_archive` utility - -### How to generate a new archive - -**Note:** As mentioned above, archives are only meant to contain external data, e.g. beats data. Due to the tendency for archived domain objects (rules, signals) to quickly become out of date, it is strongly suggested that you generate this data within the test, through interaction with either the UI or the API. - -We use es_archiver to manage the data that our Cypress tests need. - -1. Set up a clean instance of kibana and elasticsearch (if this is not possible, try to clean/minimize the data that you are going to archive). -2. With the kibana and elasticsearch instance up and running, create the data that you need for your test. -3. When you are sure that you have all the data you need run the following command from: `x-pack/plugins/osquery` - -```sh -node ../../../scripts/es_archiver save <nameOfTheFolderWhereDataIsSaved> <indexPatternsToBeSaved> --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://<elasticsearchUsername>:<elasticsearchPassword>@<elasticsearchHost>:<elasticsearchPort> -``` - -Example: - -```sh -node ../../../scripts/es_archiver save custom_rules ".kibana",".siem-signal*" --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://elastic:changeme@localhost:9220 -``` - -Note that the command will create the folder if it does not exist. - -## Development Best Practices - -### Clean up the state - -Remember to clean up the state of the test after its execution, typically with the `cleanKibana` function. Be mindful of failure scenarios, as well: if your test fails, will it leave the environment in a recoverable state? - -### Minimize the use of es_archive - -When possible, create all the data that you need for executing the tests using the application APIS or the UI. - -### Speed up test execution time - -Loading the web page takes a big amount of time, in order to minimize that impact, the following points should be -taken into consideration until another solution is implemented: - -- Group the tests that are similar in different contexts. -- For every context login only once, clean the state between tests if needed without re-loading the page. -- All tests in a spec file must be order-independent. - -Remember that minimizing the number of times the web page is loaded, we minimize as well the execution time. - -## Linting - -Optional linting rules for Cypress and linting setup can be found [here](https://github.com/cypress-io/eslint-plugin-cypress#usage) diff --git a/x-pack/plugins/osquery/cypress/cypress_base.config.ts b/x-pack/plugins/osquery/cypress/cypress_base.config.ts deleted file mode 100644 index cea74dcd9ee60..0000000000000 --- a/x-pack/plugins/osquery/cypress/cypress_base.config.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { merge } from 'lodash'; -import path from 'path'; -import { load as loadYaml } from 'js-yaml'; -import { readFileSync } from 'fs'; -import type { YamlRoleDefinitions } from '@kbn/test-suites-serverless/shared/lib'; -import { samlAuthentication } from '@kbn/security-solution-plugin/public/management/cypress/support/saml_authentication'; -import { setupUserDataLoader } from './support/setup_data_loader_tasks'; -import { getFailedSpecVideos } from './support/filter_videos'; - -const ROLES_YAML_FILE_PATH = path.join( - `${__dirname}/support`, - 'project_controller_osquery_roles.yml' -); -const roleDefinitions = loadYaml(readFileSync(ROLES_YAML_FILE_PATH, 'utf8')) as YamlRoleDefinitions; - -export const getCypressBaseConfig = ( - overrides: Cypress.ConfigOptions = {} -): Cypress.ConfigOptions => - merge( - { - reporter: '../../../node_modules/cypress-multi-reporters', - reporterOptions: { - configFile: './cypress/reporter_config.json', - }, - - defaultCommandTimeout: 60000, - execTimeout: 120000, - pageLoadTimeout: 12000, - screenshotsFolder: '../../../target/kibana-osquery/cypress/screenshots', - trashAssetsBeforeRuns: false, - video: true, - videosFolder: '../../../target/kibana-osquery/cypress/videos', - - retries: { - runMode: 1, - openMode: 0, - }, - videoCompression: 15, - viewportHeight: 900, - viewportWidth: 1440, - experimentalStudio: true, - - env: { - grepFilterSpecs: true, - grepOmitFiltered: true, - }, - - e2e: { - specPattern: './cypress/e2e/**/*.cy.ts', - experimentalRunAllSpecs: true, - experimentalMemoryManagement: true, - numTestsKeptInMemory: 3, - setupNodeEvents(on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions) { - setupUserDataLoader(on, config, { roleDefinitions, additionalRoleName: 'viewer' }); - samlAuthentication(on, config); - on('after:spec', getFailedSpecVideos); - - return config; - }, - }, - }, - overrides - ); diff --git a/x-pack/plugins/osquery/cypress/reporter_config.json b/x-pack/plugins/osquery/cypress/reporter_config.json deleted file mode 100644 index c472bd0bb643e..0000000000000 --- a/x-pack/plugins/osquery/cypress/reporter_config.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "reporterEnabled": "mochawesome, mocha-junit-reporter", - "reporterOptions": { - "html": false, - "json": true, - "mochaFile": "../../../target/kibana-osquery/cypress/results/TEST-osquery-cypress-[hash].xml", - "overwrite": false, - "reportDir": "../../../target/kibana-osquery/cypress/results" - } -} diff --git a/x-pack/plugins/osquery/cypress/tasks/archiver.ts b/x-pack/plugins/osquery/cypress/tasks/archiver.ts deleted file mode 100644 index 8f2c179a3abdd..0000000000000 --- a/x-pack/plugins/osquery/cypress/tasks/archiver.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export enum ArchiverMethod { - SAVE = 'save', - LOAD = 'load', - UNLOAD = 'unload', -} - -export const runKbnArchiverScript = ( - method: ArchiverMethod, - fileName: string, - space = 'default' -) => { - const { - ELASTICSEARCH_USERNAME, - ELASTICSEARCH_PASSWORD, - hostname: HOSTNAME, - configport: PORT, - } = Cypress.env(); - const script = `node ../../../scripts/kbn_archiver.js --space ${space} --kibana-url http://${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}@${HOSTNAME}:${PORT} ${method} ./cypress/fixtures/saved_objects/${fileName}.ndjson`; - - cy.exec(script, { env: { NODE_TLS_REJECT_UNAUTHORIZED: 1 } }); -}; diff --git a/x-pack/plugins/osquery/cypress/tsconfig.json b/x-pack/plugins/osquery/cypress/tsconfig.json deleted file mode 100644 index eedf7db6e8528..0000000000000 --- a/x-pack/plugins/osquery/cypress/tsconfig.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "include": [ - "**/*", - "./cypress.config.ts", - "./serverless_cypress.config.ts", - "./serverless_cypress_qa.config.ts", - "../../../test_serverless/shared/lib", - ], - "exclude": [ - "target/**/*", - "../../../test_serverless/shared/lib/security/default_http_headers.ts" - ], - "compilerOptions": { - "outDir": "target/types", - "types": [ - "cypress", - "node", - ], - "resolveJsonModule": true, - }, - "kbn_references": [ - "@kbn/test-suites-serverless", - { - "path": "../../../test/security_solution_cypress/cypress/tsconfig.json" - }, - "@kbn/cypress-config", - // cypress projects that are nested inside of other ts project use code - // from the parent ts project in ways that can't be automatically deteceted - // at this time so we have to force the inclusion of this reference - { - "path": "../tsconfig.json", - "force": true - }, - "@kbn/security-solution-plugin", - "@kbn/fleet-plugin", - "@kbn/cases-plugin", - "@kbn/security-solution-plugin/public/management/cypress", - "@kbn/test-suites-xpack/security_solution_cypress/cypress", - ] -} diff --git a/x-pack/plugins/osquery/jest.config.js b/x-pack/plugins/osquery/jest.config.js deleted file mode 100644 index ea070e615b6bc..0000000000000 --- a/x-pack/plugins/osquery/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/osquery'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/osquery', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/osquery/{common,public,server}/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/osquery/package.json b/x-pack/plugins/osquery/package.json deleted file mode 100644 index f6dac0fd15c02..0000000000000 --- a/x-pack/plugins/osquery/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "author": "Elastic", - "name": "@kbn/osquery-plugin", - "version": "1.0.0", - "private": true, - "license": "Elastic License 2.0", - "scripts": { - "cypress:burn": "yarn cypress:run --env burn=2 --headed", - "cypress:changed-specs-only": "yarn cypress:run --changed-specs-only --env burn=2", - "cypress": "NODE_OPTIONS=--openssl-legacy-provider node ../security_solution/scripts/start_cypress_parallel --config-file ../osquery/cypress/cypress.config.ts --ftr-config-file ../../../x-pack/test/osquery_cypress/cli_config", - "cypress:open": "yarn cypress open", - "cypress:run": "yarn cypress run", - "cypress:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ../security_solution/scripts/start_cypress_parallel --config-file ../osquery/cypress/serverless_cypress.config.ts --ftr-config-file ../../../x-pack/test/osquery_cypress/serverless_cli_config", - "cypress:serverless:open": "yarn cypress:serverless open", - "cypress:serverless:run": "yarn cypress:serverless run", - "cypress:qa:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ../security_solution/scripts/start_cypress_parallel_serverless --config-file ../osquery/cypress/serverless_cypress_qa.config.ts --onBeforeHook ../../test/osquery_cypress/runner_qa.ts", - "cypress:qa:serverless:run": "yarn cypress:qa:serverless run", - "nyc": "../../../node_modules/.bin/nyc report --reporter=text-summary", - "junit:merge": "../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-osquery/cypress/results/mochawesome*.json > ../../../target/kibana-osquery/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-osquery/cypress/results/output.json --reportDir ../../../target/kibana-osquery/cypress/results && yarn junit:transform && mkdir -p ../../../target/junit && cp ../../../target/kibana-osquery/cypress/results/*.xml ../../../target/junit/", - "junit:transform": "node ../security_solution/scripts/junit_transformer --pathPattern '../../../target/kibana-osquery/cypress/results/*.xml' --rootDirectory ../../../ --reportName 'Osquery Cypress' --writeInPlace", - "openapi:generate": "node scripts/openapi/generate", - "openapi:bundle": "node scripts/openapi/bundle" - } -} diff --git a/x-pack/plugins/osquery/scripts/openapi/bundle.js b/x-pack/plugins/osquery/scripts/openapi/bundle.js deleted file mode 100644 index 49594c2fa5ce2..0000000000000 --- a/x-pack/plugins/osquery/scripts/openapi/bundle.js +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -require('../../../../../src/setup_node_env'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { bundle } = require('@kbn/openapi-bundler'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { resolve } = require('path'); - -const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); - -(async () => { - await bundle({ - rootDir: ELASTIC_ASSISTANT_ROOT, - sourceGlob: 'common/api/**/*.schema.yaml', - outputFilePath: 'docs/openapi/serverless/osquery_api_{version}.bundled.schema.yaml', - options: { - includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security Osquery API (Elastic Cloud Serverless)', - description: 'Run live queries, manage packs and saved queries.', - }, - tags: [ - { - name: 'Security Osquery API', - 'x-displayName': 'Security Osquery', - description: 'Run live queries, manage packs and saved queries.', - }, - ], - }, - }, - }); - - await bundle({ - rootDir: ELASTIC_ASSISTANT_ROOT, - sourceGlob: 'common/api/**/*.schema.yaml', - outputFilePath: 'docs/openapi/ess/osquery_api_{version}.bundled.schema.yaml', - options: { - includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security Osquery API (Elastic Cloud and self-hosted)', - description: 'Run live queries, manage packs and saved queries.', - }, - tags: [ - { - name: 'Security Osquery API', - 'x-displayName': 'Security Osquery', - description: 'Run live queries, manage packs and saved queries.', - }, - ], - }, - }, - }); -})(); diff --git a/x-pack/plugins/osquery/scripts/openapi/generate.js b/x-pack/plugins/osquery/scripts/openapi/generate.js deleted file mode 100644 index 418b978973fa6..0000000000000 --- a/x-pack/plugins/osquery/scripts/openapi/generate.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -require('../../../../../src/setup_node_env'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { generate } = require('@kbn/openapi-generator'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { REPO_ROOT } = require('@kbn/repo-info'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { join, resolve } = require('path'); - -const OSQUERY_ROOT = resolve(__dirname, '../..'); - -(async () => { - await generate({ - title: 'API route schemas', - rootDir: OSQUERY_ROOT, - sourceGlob: 'common/api/**/*.schema.yaml', - templateName: 'zod_operation_schema', - }); - - await generate({ - title: 'API client for tests', - rootDir: OSQUERY_ROOT, - sourceGlob: 'common/api/**/*.schema.yaml', - templateName: 'api_client_supertest', - skipLinting: true, - bundle: { - outFile: join( - REPO_ROOT, - 'x-pack/test/api_integration/services/security_solution_osquery_api.gen.ts' - ), - }, - }); -})(); diff --git a/x-pack/plugins/osquery/tsconfig.json b/x-pack/plugins/osquery/tsconfig.json deleted file mode 100644 index 141683d7e500f..0000000000000 --- a/x-pack/plugins/osquery/tsconfig.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "exclude": ["target/**/*"], - "include": [ - // add all the folders contains files to be compiled - "common/**/*", - "public/**/*", - "scripts/**/*", - "scripts/**/**.json", - "server/**/*", - "../../../typings/**/*", - // ECS and Osquery schema files - "public/common/schemas/*/**.json" - ], - "kbn_references": [ - "@kbn/core", - { "path": "../../../src/setup_node_env/tsconfig.json" }, - // add references to other TypeScript projects the plugin depends on - - // requiredPlugins from ./kibana.json - "@kbn/data-plugin", - "@kbn/navigation-plugin", - "@kbn/fleet-plugin", - - // optionalPlugins from ./kibana.json - "@kbn/cases-plugin", - - // requiredBundles from ./kibana.json - "@kbn/es-ui-shared-plugin", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - - // packages - "@kbn/config-schema", - "@kbn/es-query", - "@kbn/utility-types", - "@kbn/securitysolution-io-ts-utils", - "@kbn/osquery-io-ts-types", - "@kbn/i18n-react", - "@kbn/discover-plugin", - "@kbn/lens-plugin", - "@kbn/security-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/timelines-plugin", - "@kbn/spaces-plugin", - "@kbn/i18n", - "@kbn/rison", - "@kbn/react-field", - "@kbn/dev-cli-runner", - "@kbn/telemetry-plugin", - "@kbn/actions-plugin", - "@kbn/features-plugin", - "@kbn/task-manager-plugin", - "@kbn/data-views-plugin", - "@kbn/rule-registry-plugin", - "@kbn/securitysolution-es-utils", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/std", - "@kbn/core-elasticsearch-server", - "@kbn/core-saved-objects-api-server", - "@kbn/logging", - "@kbn/safer-lodash-set", - "@kbn/shared-ux-router", - "@kbn/licensing-plugin", - "@kbn/core-lifecycle-browser", - "@kbn/core-saved-objects-server", - "@kbn/monaco", - "@kbn/io-ts-utils", - "@kbn/shared-ux-page-kibana-template", - "@kbn/openapi-generator", - "@kbn/code-editor", - "@kbn/search-types", - "@kbn/react-kibana-context-render", - "@kbn/zod-helpers", - "@kbn/openapi-bundler", - "@kbn/repo-info", - "@kbn/zod" - ] -} diff --git a/x-pack/plugins/painless_lab/jest.config.js b/x-pack/plugins/painless_lab/jest.config.js deleted file mode 100644 index 364e9e5a08fa4..0000000000000 --- a/x-pack/plugins/painless_lab/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/painless_lab'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/painless_lab', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/painless_lab/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/painless_lab/public/styles/_index.scss b/x-pack/plugins/painless_lab/public/styles/_index.scss deleted file mode 100644 index 801f655fa7f4c..0000000000000 --- a/x-pack/plugins/painless_lab/public/styles/_index.scss +++ /dev/null @@ -1,47 +0,0 @@ -@import '../../../../../src/core/public/mixins'; - -/** - * This is a very brittle way of preventing the editor and other content from disappearing - * behind the bottom bar. - */ -$bottomBarHeight: $euiSize * 3; - -.painlessLabBottomBarPlaceholder { - height: $bottomBarHeight; -} - -.painlessLabLeftPane { - padding-top: $euiSizeM; - background-color: $euiFormBackgroundColor; -} - -.painlessLabRightPane { - background-color: $euiColorEmptyShade; - padding: $euiSizeS; - border-left: $euiBorderThin; - height: 100%; -} - -.painlessLabRightPane__tabs { - display: flex; - flex-direction: column; - height: 100%; - - [role='tabpanel'] { - height: 100%; - overflow-y: auto; - } -} - -// adding dev tool top bar + bottom bar height to the body offset -// (they're both the same height, hence the x2) -$bodyOffset: $bottomBarHeight * 2; - -.painlessLabMainContainer { - @include kibanaFullBodyHeight($bodyOffset); -} - -.painlessLabPanelsContainer { - // The panels container should adopt the height of the main container - height: 100%; -} diff --git a/x-pack/plugins/painless_lab/tsconfig.json b/x-pack/plugins/painless_lab/tsconfig.json deleted file mode 100644 index 857711e8da847..0000000000000 --- a/x-pack/plugins/painless_lab/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/dev-tools-plugin", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/licensing-plugin", - "@kbn/i18n", - "@kbn/monaco", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/code-editor", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/remote_clusters/jest.config.js b/x-pack/plugins/remote_clusters/jest.config.js deleted file mode 100644 index 3467ea1d5b405..0000000000000 --- a/x-pack/plugins/remote_clusters/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/remote_clusters'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/remote_clusters', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/remote_clusters/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/remote_clusters/tsconfig.json b/x-pack/plugins/remote_clusters/tsconfig.json deleted file mode 100644 index 37add085af751..0000000000000 --- a/x-pack/plugins/remote_clusters/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__jest__/**/*", - "common/**/*", - "fixtures/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/licensing-plugin", - "@kbn/management-plugin", - "@kbn/features-plugin", - // optional plugins - "@kbn/usage-collection-plugin", - "@kbn/cloud-plugin", - // required bundles - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/test-jest-helpers", - "@kbn/core-execution-context-browser-mocks", - "@kbn/i18n", - "@kbn/utility-types", - "@kbn/share-plugin", - "@kbn/core-http-browser", - "@kbn/analytics", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/expect", - "@kbn/shared-ux-router", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/reporting/server/deprecations/migrate_existing_indices_ilm_policy.test.ts b/x-pack/plugins/reporting/server/deprecations/migrate_existing_indices_ilm_policy.test.ts index 420809aba646e..0e421063d51a8 100644 --- a/x-pack/plugins/reporting/server/deprecations/migrate_existing_indices_ilm_policy.test.ts +++ b/x-pack/plugins/reporting/server/deprecations/migrate_existing_indices_ilm_policy.test.ts @@ -6,7 +6,11 @@ */ import type { GetDeprecationsContext } from '@kbn/core/server'; -import { elasticsearchServiceMock, savedObjectsClientMock } from '@kbn/core/server/mocks'; +import { + elasticsearchServiceMock, + httpServerMock, + savedObjectsClientMock, +} from '@kbn/core/server/mocks'; import { getDeprecationsInfo } from './migrate_existing_indices_ilm_policy'; @@ -20,7 +24,11 @@ describe("Migrate existing indices' ILM policy deprecations", () => { beforeEach(async () => { esClient = elasticsearchServiceMock.createScopedClusterClient(); - deprecationsCtx = { esClient, savedObjectsClient: savedObjectsClientMock.create() }; + deprecationsCtx = { + esClient, + savedObjectsClient: savedObjectsClientMock.create(), + request: httpServerMock.createKibanaRequest(), + }; }); const createIndexSettings = (lifecycleName: string) => ({ diff --git a/x-pack/plugins/rollup/jest.config.js b/x-pack/plugins/rollup/jest.config.js deleted file mode 100644 index 937ff3524f9d6..0000000000000 --- a/x-pack/plugins/rollup/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/rollup'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/rollup', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/rollup/{common,public,server}/**/*.{js,ts,tsx}'], -}; diff --git a/x-pack/plugins/rollup/tsconfig.json b/x-pack/plugins/rollup/tsconfig.json deleted file mode 100644 index a74f689515de1..0000000000000 --- a/x-pack/plugins/rollup/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "fixtures/**/*", - "public/**/*", - "server/**/*", - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/management-plugin", - "@kbn/licensing-plugin", - "@kbn/features-plugin", - // optional plugins - "@kbn/home-plugin", - "@kbn/index-management-plugin", - "@kbn/usage-collection-plugin", - // required bundles - "@kbn/kibana-utils-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/data-plugin", - "@kbn/test-jest-helpers", - "@kbn/analytics", - "@kbn/i18n", - "@kbn/core-http-browser", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/data-views-plugin", - "@kbn/react-kibana-context-render", - "@kbn/rollup", - - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/rule_registry/common/schemas/README.md b/x-pack/plugins/rule_registry/common/schemas/README.md index 7995cd8aab0e7..488b3dc20de4b 100644 --- a/x-pack/plugins/rule_registry/common/schemas/README.md +++ b/x-pack/plugins/rule_registry/common/schemas/README.md @@ -1 +1 @@ -See x-pack/plugins/security_solution/common/detection_engine/schemas/alerts/README.md for full description of versioned alert schema strategy and how it's used in the Security Solution's Detection Engine. +See x-pack/solutions/security/plugins/security_solution/common/detection_engine/schemas/alerts/README.md for full description of versioned alert schema strategy and how it's used in the Security Solution's Detection Engine. diff --git a/x-pack/plugins/rule_registry/server/routes/utils/route_validation.ts b/x-pack/plugins/rule_registry/server/routes/utils/route_validation.ts index 910d712a75d75..37c6ae217cb30 100644 --- a/x-pack/plugins/rule_registry/server/routes/utils/route_validation.ts +++ b/x-pack/plugins/rule_registry/server/routes/utils/route_validation.ts @@ -33,7 +33,7 @@ type RequestValidationResult<T> = }; /** - * Copied from x-pack/plugins/security_solution/server/utils/build_validation/route_validation.ts + * Copied from x-pack/solutions/security/plugins/security_solution/server/utils/build_validation/route_validation.ts * This really should be in @kbn/securitysolution-io-ts-utils rather than copied yet again, however, this has types * from a lot of places such as RouteValidationResultFactory from core/server which in turn can pull in @kbn/schema * which cannot work on the front end and @kbn/securitysolution-io-ts-utils works on both front and backend. diff --git a/x-pack/plugins/runtime_fields/README.md b/x-pack/plugins/runtime_fields/README.md deleted file mode 100644 index 9c0e0e03f2fe5..0000000000000 --- a/x-pack/plugins/runtime_fields/README.md +++ /dev/null @@ -1,239 +0,0 @@ -# Runtime fields - -Welcome to the home of the runtime field editor and everything related to runtime fields! - -## The runtime field editor - -### Integration - -The recommended way to integrate the runtime fields editor is by adding a plugin dependency to the `"runtimeFields"` x-pack plugin. This way you will be able to lazy load the editor when it is required and it will not increment the bundle size of your plugin. - -```js -// 1. Add the plugin as a dependency in your kibana.json -{ - ... - "requiredBundles": [ - "runtimeFields", - ... - ] -} - -// 2. Access it in your plugin setup() -export class MyPlugin { - setup(core, { runtimeFields }) { - // logic to provide it to your app, probably through context - } -} - -// 3. Load the editor and open it anywhere in your app -const MyComponent = () => { - // Access the plugin through context - const { runtimeFields } = useAppPlugins(); - - // Ref of the handler to close the editor - const closeRuntimeFieldEditor = useRef(() => {}); - - const saveRuntimeField = (field: RuntimeField) => { - // Do something with the field - // See interface returned in @returns section below - }; - - const openRuntimeFieldsEditor = async() => { - // Lazy load the editor - const { openEditor } = await runtimeFields.loadEditor(); - - closeRuntimeFieldEditor.current = openEditor({ - onSave: saveRuntimeField, - /* defaultValue: optional field to edit */ - /* ctx: Context -- see section below */ - }); - }; - - useEffect(() => { - return () => { - // Make sure to remove the editor when the component unmounts - closeRuntimeFieldEditor.current(); - }; - }, []); - - return ( - <button onClick={openRuntimeFieldsEditor}>Add field</button> - ) -} -``` - -#### `@returns` - -You get back a `RuntimeField` object with the following interface - -```ts -interface RuntimeField { - name: string; - type: RuntimeType; // 'long' | 'boolean' ... - script: { - source: string; - }; -} -``` - -#### Context object - -You can provide a context object to the runtime field editor. It has the following interface - -```ts -interface Context { - /** An array of field name not allowed. You would probably provide an array of existing runtime fields - * to prevent the user creating a field with the same name. - */ - namesNotAllowed?: string[]; - /** - * An array of existing concrete fields. If the user gives a name to the runtime - * field that matches one of the concrete fields, a callout will be displayed - * to indicate that this runtime field will shadow the concrete field. - * This array is also used to provide the list of field autocomplete suggestions to the code editor - */ - existingConcreteFields?: Array<{ - name: string; - type: string; - }>; -} -``` - -#### Other type of integration - -The runtime field editor is also exported as static React component that you can import into your components. The editor is exported in 2 flavours: - -- As the content of a `<EuiFlyout />` (it contains a flyout header and footer) -- As a standalone component that you can inline anywhere - -**Note:** The runtime field editor uses the `<CodeEditor />` that has a dependency on the `Provider` from the `"kibana_react"` plugin. If your app is not already wrapped by this provider you will need to add it at least around the runtime field editor. You can see an example in the ["Using the core.overlays.openFlyout()"](#using-the-coreoverlaysopenflyout) example below. - -### Content of a `<EuiFlyout />` - -```js -import React, { useState } from 'react'; -import { EuiFlyoutBody, EuiButton } from '@elastic/eui'; -import { RuntimeFieldEditorFlyoutContent, RuntimeField } from '../runtime_fields/public'; - -const MyComponent = () => { - const { docLinksStart } = useCoreContext(); // access the core start service - const [isFlyoutVisilbe, setIsFlyoutVisible] = useState(false); - - const saveRuntimeField = useCallback((field: RuntimeField) => { - // Do something with the field - }, []); - - return ( - <> - <EuiButton onClick={() => setIsFlyoutVisible(true)}>Create field</EuiButton> - - {isFlyoutVisible && ( - <EuiFlyout onClose={() => setIsFlyoutVisible(false)}> - <RuntimeFieldEditorFlyoutContent - onSave={saveRuntimeField} - onCancel={() => setIsFlyoutVisible(false)} - docLinks={docLinksStart} - defaultValue={/*optional runtime field to edit*/} - ctx={/*optional context object -- see section above*/} - /> - </EuiFlyout> - )} - </> - ) -} -``` - -#### Using the `core.overlays.openFlyout()` - -As an alternative you can open the flyout with the `openFlyout()` helper from core. - -```js -import React, { useRef } from 'react'; -import { EuiButton } from '@elastic/eui'; -import { OverlayRef } from 'src/core/public'; - -import { createKibanaReactContext, toMountPoint } from '../../src/plugins/kibana_react/public'; -import { RuntimeFieldEditorFlyoutContent, RuntimeField } from '../runtime_fields/public'; - -const MyComponent = () => { - // Access the core start service - const { docLinksStart, theme, overlays, uiSettings } = useCoreContext(); - const flyoutEditor = useRef<OverlayRef | null>(null); - - const { openFlyout } = overlays; - - const saveRuntimeField = useCallback((field: RuntimeField) => { - // Do something with the field - }, []); - - const openRuntimeFieldEditor = useCallback(() => { - const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ uiSettings }); - - flyoutEditor.current = openFlyout( - toMountPoint( - <KibanaReactContextProvider> - <RuntimeFieldEditorFlyoutContent - onSave={saveRuntimeField} - onCancel={() => flyoutEditor.current?.close()} - docLinks={docLinksStart} - defaultValue={defaultRuntimeField} - ctx={/*optional context object -- see section above*/} - /> - </KibanaReactContextProvider>, - { theme$: theme.theme$ } - ) - ); - }, [openFlyout, saveRuntimeField, uiSettings]); - - return ( - <> - <EuiButton onClick={openRuntimeFieldEditor}>Create field</EuiButton> - </> - ) -} -``` - -### Standalone component - -```js -import React, { useState } from 'react'; -import { EuiButton, EuiSpacer } from '@elastic/eui'; -import { RuntimeFieldEditor, RuntimeField, RuntimeFieldFormState } from '../runtime_fields/public'; - -const MyComponent = () => { - const { docLinksStart } = useCoreContext(); // access the core start service - const [runtimeFieldFormState, setRuntimeFieldFormState] = useState<RuntimeFieldFormState>({ - isSubmitted: false, - isValid: undefined, - submit: async() => Promise.resolve({ isValid: false, data: {} as RuntimeField }) - }); - - const { submit, isValid: isFormValid, isSubmitted } = runtimeFieldFormState; - - const saveRuntimeField = useCallback(async () => { - const { isValid, data } = await submit(); - if (isValid) { - // Do something with the field (data) - } - }, [submit]); - - return ( - <> - <RuntimeFieldEditor - onChange={setRuntimeFieldFormState} - docLinks={docLinksStart} - defaultValue={/*optional runtime field to edit*/} - ctx={/*optional context object -- see section above*/} - /> - - <EuiSpacer /> - - <EuiButton - onClick={saveRuntimeField} - disabled={isSubmitted && !isFormValid}> - Save field - </EuiButton> - </> - ) -} -``` diff --git a/x-pack/plugins/runtime_fields/jest.config.js b/x-pack/plugins/runtime_fields/jest.config.js deleted file mode 100644 index 3af90818280cf..0000000000000 --- a/x-pack/plugins/runtime_fields/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/runtime_fields'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/runtime_fields', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/runtime_fields/public/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/runtime_fields/tsconfig.json b/x-pack/plugins/runtime_fields/tsconfig.json deleted file mode 100644 index f2f2a6e27e6c1..0000000000000 --- a/x-pack/plugins/runtime_fields/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "public/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/es-ui-shared-plugin", - "@kbn/kibana-react-plugin", - "@kbn/test-jest-helpers", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/monaco", - "@kbn/code-editor", - "@kbn/code-editor-mock", - "@kbn/react-kibana-mount", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/saved_objects_tagging/public/management/components/table.tsx b/x-pack/plugins/saved_objects_tagging/public/management/components/table.tsx index cde4049a3a82b..4da2bc4841053 100644 --- a/x-pack/plugins/saved_objects_tagging/public/management/components/table.tsx +++ b/x-pack/plugins/saved_objects_tagging/public/management/components/table.tsx @@ -6,10 +6,16 @@ */ import React, { FC, ReactNode } from 'react'; -import { EuiInMemoryTable, EuiBasicTableColumn, EuiLink, Query, EuiIconTip } from '@elastic/eui'; +import { + EuiInMemoryTable, + EuiBasicTableColumn, + EuiLink, + Query, + EuiIconTip, + useEuiTheme, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { TagsCapabilities } from '../../../common'; import type { TagWithRelations } from '../../../common/types'; import { TagBadge } from '../../components'; @@ -59,6 +65,7 @@ export const TagTable: FC<TagTableProps> = ({ actionBar, actions, }) => { + const { euiTheme } = useEuiTheme(); const columns: Array<EuiBasicTableColumn<TagWithRelations>> = [ { field: 'name', @@ -72,7 +79,7 @@ export const TagTable: FC<TagTableProps> = ({ <> <TagBadge tag={tag} /> {tag.managed && ( - <div css={{ marginLeft: euiThemeVars.euiSizeS }}> + <div css={{ marginLeft: euiTheme.size.s }}> <EuiIconTip type="lock" content="This tag is managed by Elastic and cannot be deleted, edited, or assigned to objects." diff --git a/x-pack/plugins/saved_objects_tagging/tsconfig.json b/x-pack/plugins/saved_objects_tagging/tsconfig.json index b5202917aa4ef..b40ffe7f3fa81 100644 --- a/x-pack/plugins/saved_objects_tagging/tsconfig.json +++ b/x-pack/plugins/saved_objects_tagging/tsconfig.json @@ -22,7 +22,6 @@ "@kbn/config-schema", "@kbn/ebt-tools", "@kbn/core-notifications-browser", - "@kbn/ui-theme", "@kbn/react-kibana-context-render", "@kbn/react-kibana-mount", "@kbn/core-lifecycle-browser", diff --git a/x-pack/plugins/search_assistant/kibana.jsonc b/x-pack/plugins/search_assistant/kibana.jsonc index d84d928b7a8b7..3c20e59ccc9a6 100644 --- a/x-pack/plugins/search_assistant/kibana.jsonc +++ b/x-pack/plugins/search_assistant/kibana.jsonc @@ -16,6 +16,7 @@ "requiredPlugins": [ "actions", "licensing", + "ml", // necessary for assistant's use of knowledge base in assistant package "observabilityAIAssistant", "triggersActionsUi", "share" diff --git a/x-pack/plugins/search_connectors/kibana.jsonc b/x-pack/plugins/search_connectors/kibana.jsonc index 6290b9692b384..45ae79ec2cb5c 100644 --- a/x-pack/plugins/search_connectors/kibana.jsonc +++ b/x-pack/plugins/search_connectors/kibana.jsonc @@ -3,7 +3,7 @@ "id": "@kbn/search-connectors-plugin", "owner": "@elastic/search-kibana", // TODO this is currently used from Observability too, must be refactored before solution-specific builds - // see x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx + // see x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx // cc sphilipse "group": "search", "visibility": "private", diff --git a/x-pack/plugins/search_inference_endpoints/public/hooks/use_delete_endpoint.test.tsx b/x-pack/plugins/search_inference_endpoints/public/hooks/use_delete_endpoint.test.tsx index 7f2c2157a3609..553b648013600 100644 --- a/x-pack/plugins/search_inference_endpoints/public/hooks/use_delete_endpoint.test.tsx +++ b/x-pack/plugins/search_inference_endpoints/public/hooks/use_delete_endpoint.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { useKibana } from './use_kibana'; import { useDeleteEndpoint } from './use_delete_endpoint'; @@ -43,7 +43,7 @@ describe('useDeleteEndpoint', () => { }; it('should call delete endpoint and show success toast on success', async () => { - const { result, waitFor } = renderHook(() => useDeleteEndpoint(), { wrapper }); + const { result } = renderHook(() => useDeleteEndpoint(), { wrapper }); result.current.mutate({ type: 'text_embedding', id: 'in-1' }); @@ -60,7 +60,7 @@ describe('useDeleteEndpoint', () => { it('should show error toast on failure', async () => { const error = { body: { message: 'error' } }; mockDelete.mockRejectedValue(error); - const { result, waitFor } = renderHook(() => useDeleteEndpoint(), { wrapper }); + const { result } = renderHook(() => useDeleteEndpoint(), { wrapper }); result.current.mutate({ type: 'model', id: '123' }); diff --git a/x-pack/plugins/search_inference_endpoints/public/hooks/use_scan_usage.test.tsx b/x-pack/plugins/search_inference_endpoints/public/hooks/use_scan_usage.test.tsx index 5f1766b7a6fa4..f243f5f7a20d0 100644 --- a/x-pack/plugins/search_inference_endpoints/public/hooks/use_scan_usage.test.tsx +++ b/x-pack/plugins/search_inference_endpoints/public/hooks/use_scan_usage.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { useScanUsage } from './use_scan_usage'; import { useKibana } from './use_kibana'; @@ -43,7 +43,7 @@ describe('useScanUsage', () => { }); test('should call API endpoint with the correct parameters and return response', async () => { - const { result, waitForNextUpdate } = renderHook( + const { result } = renderHook( () => useScanUsage({ type: 'text_embedding', @@ -52,18 +52,18 @@ describe('useScanUsage', () => { { wrapper } ); - await waitForNextUpdate(); + await waitFor(() => { + expect(mockDelete).toHaveBeenCalledWith( + '/internal/inference_endpoint/endpoints/text_embedding/in-1', + { query: { scanUsage: true } } + ); - expect(mockDelete).toHaveBeenCalledWith( - '/internal/inference_endpoint/endpoints/text_embedding/in-1', - { query: { scanUsage: true } } - ); - - expect(result.current.data).toEqual({ - acknowledge: true, - error_message: 'inference id is being used', - indexes: ['index1', 'index2'], - pipelines: ['pipeline1', 'pipeline2'], + expect(result.current.data).toEqual({ + acknowledge: true, + error_message: 'inference id is being used', + indexes: ['index1', 'index2'], + pipelines: ['pipeline1', 'pipeline2'], + }); }); }); }); diff --git a/x-pack/plugins/search_inference_endpoints/public/hooks/use_table_data.test.tsx b/x-pack/plugins/search_inference_endpoints/public/hooks/use_table_data.test.tsx index b16fb5f7675cb..c5d3cf15f1407 100644 --- a/x-pack/plugins/search_inference_endpoints/public/hooks/use_table_data.test.tsx +++ b/x-pack/plugins/search_inference_endpoints/public/hooks/use_table_data.test.tsx @@ -6,7 +6,7 @@ */ import { InferenceAPIConfigResponse } from '@kbn/ml-trained-models-utils'; -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { QueryParams } from '../components/all_inference_endpoints/types'; import { useTableData } from './use_table_data'; import { INFERENCE_ENDPOINTS_TABLE_PER_PAGE_VALUES } from '../components/all_inference_endpoints/types'; diff --git a/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts b/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts index c529a9d4b9aa6..be215e0f9e15a 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts +++ b/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useLoadConnectors } from './use_load_connectors'; import { useLLMsModels } from './use_llms_models'; import { LLMs } from '../types'; diff --git a/x-pack/plugins/search_playground/public/hooks/use_load_connectors.test.ts b/x-pack/plugins/search_playground/public/hooks/use_load_connectors.test.ts index eb2f36eb62e5f..57020cbcd6d3c 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_load_connectors.test.ts +++ b/x-pack/plugins/search_playground/public/hooks/use_load_connectors.test.ts @@ -8,7 +8,7 @@ import { loadAllActions as loadConnectors } from '@kbn/triggers-actions-ui-plugin/public/common/constants'; import { useLoadConnectors } from './use_load_connectors'; import { useKibana } from './use_kibana'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { OpenAiProviderType } from '@kbn/stack-connectors-plugin/common/openai/constants'; const mockedLoadConnectors = loadConnectors as jest.Mock; @@ -80,11 +80,9 @@ describe('useLoadConnectors', () => { ]; mockedLoadConnectors.mockResolvedValue(connectors); - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useLoadConnectors()); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual([ + const { result } = renderHook(() => useLoadConnectors()); + await waitFor(() => + expect(result.current).resolves.toStrictEqual([ { actionTypeId: '.gen-ai', config: { @@ -122,8 +120,8 @@ describe('useLoadConnectors', () => { title: 'OpenAI Other', type: 'openai_other', }, - ]); - }); + ]) + ); }); it('handles pre-configured connectors', async () => { @@ -149,11 +147,9 @@ describe('useLoadConnectors', () => { ]; mockedLoadConnectors.mockResolvedValue(connectors); - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useLoadConnectors()); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual([ + const { result } = renderHook(() => useLoadConnectors()); + await waitFor(() => + expect(result.current).resolves.toStrictEqual([ { actionTypeId: '.gen-ai', id: '1', @@ -171,22 +167,20 @@ describe('useLoadConnectors', () => { title: 'OpenAI Azure', type: 'openai_azure', }, - ]); - }); + ]) + ); }); it('handles errors correctly', async () => { const error = new Error('Test Error'); mockedLoadConnectors.mockRejectedValue(error); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useLoadConnectors()); - await waitForNextUpdate(); - + renderHook(() => useLoadConnectors()); + await waitFor(() => expect(mockedUseKibana().services.notifications.toasts.addError).toHaveBeenCalledWith( error, expect.any(Object) - ); - }); + ) + ); }); }); diff --git a/x-pack/plugins/search_playground/public/hooks/use_load_fields_by_indices.test.ts b/x-pack/plugins/search_playground/public/hooks/use_load_fields_by_indices.test.ts index 62f6a1acb6f64..c5c70cbdfc9d9 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_load_fields_by_indices.test.ts +++ b/x-pack/plugins/search_playground/public/hooks/use_load_fields_by_indices.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useLoadFieldsByIndices } from './use_load_fields_by_indices'; import { useUsageTracker } from './use_usage_tracker'; import { useIndicesFields } from './use_indices_fields'; diff --git a/x-pack/plugins/search_playground/public/hooks/use_management_link.test.ts b/x-pack/plugins/search_playground/public/hooks/use_management_link.test.ts index ed566bbaee9f5..8093dfcea061a 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_management_link.test.ts +++ b/x-pack/plugins/search_playground/public/hooks/use_management_link.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { useManagementLink } from './use_management_link'; import { useKibana } from './use_kibana'; @@ -41,13 +41,13 @@ describe('useManagementLink Hook', () => { 'http://localhost:5601/app/management/insightsAndAlerting/triggersActionsConnectors'; mockGetUrl.mockResolvedValue(expectedUrl); const connectorId = 'test-connector-id'; - const { result, waitForNextUpdate } = renderHook(() => useManagementLink(connectorId)); - await waitForNextUpdate(); - - expect(result.current).toBe(expectedUrl); - expect(mockGetUrl).toHaveBeenCalledWith({ - sectionId: 'insightsAndAlerting', - appId: 'triggersActionsConnectors/connectors/test-connector-id', + const { result } = renderHook(() => useManagementLink(connectorId)); + await waitFor(() => { + expect(result.current).toBe(expectedUrl); + expect(mockGetUrl).toHaveBeenCalledWith({ + sectionId: 'insightsAndAlerting', + appId: 'triggersActionsConnectors/connectors/test-connector-id', + }); }); }); diff --git a/x-pack/plugins/search_playground/public/hooks/use_query_indices.test.ts b/x-pack/plugins/search_playground/public/hooks/use_query_indices.test.ts index f94bccba2bcbd..9e38efcf696b6 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_query_indices.test.ts +++ b/x-pack/plugins/search_playground/public/hooks/use_query_indices.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useQueryIndices } from './use_query_indices'; jest.mock('./use_kibana', () => ({ diff --git a/x-pack/plugins/search_playground/public/hooks/use_source_indices_fields.test.tsx b/x-pack/plugins/search_playground/public/hooks/use_source_indices_fields.test.tsx index 4adf3d18ea92b..1ae008fe39bec 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_source_indices_fields.test.tsx +++ b/x-pack/plugins/search_playground/public/hooks/use_source_indices_fields.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { useUsageTracker } from './use_usage_tracker'; import { useController } from 'react-hook-form'; import { useIndicesFields } from './use_indices_fields'; diff --git a/x-pack/plugins/search_playground/public/hooks/use_usage_tracker.test.ts b/x-pack/plugins/search_playground/public/hooks/use_usage_tracker.test.ts index 9fb74674504f8..7f0202a820894 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_usage_tracker.test.ts +++ b/x-pack/plugins/search_playground/public/hooks/use_usage_tracker.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useKibana } from './use_kibana'; import { useUsageTracker } from './use_usage_tracker'; diff --git a/x-pack/plugins/searchprofiler/jest.config.js b/x-pack/plugins/searchprofiler/jest.config.js deleted file mode 100644 index 3071f75c18d96..0000000000000 --- a/x-pack/plugins/searchprofiler/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/searchprofiler'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/searchprofiler', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/searchprofiler/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/searchprofiler/tsconfig.json b/x-pack/plugins/searchprofiler/tsconfig.json deleted file mode 100644 index 063b7dfa63ce6..0000000000000 --- a/x-pack/plugins/searchprofiler/tsconfig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/es-ui-shared-plugin", - "@kbn/dev-tools-plugin", - "@kbn/home-plugin", - "@kbn/licensing-plugin", - "@kbn/i18n", - "@kbn/share-plugin", - "@kbn/utility-types", - "@kbn/expect", - "@kbn/test-jest-helpers", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/react-kibana-context-render", - "@kbn/code-editor", - "@kbn/monaco", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx b/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx index ec0c12aa3bc16..7a20eaf3eff1c 100644 --- a/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx +++ b/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx @@ -414,14 +414,14 @@ describe('useUserProfileForm', () => { expect(testWrapper.exists('EuiBadgeGroup[data-test-subj="remainingRoles"]')).toBeFalsy(); }); - it('should display a popover for users with more than one role', () => { + it('should display a popover for users with more than three roles', () => { const data: UserProfileData = {}; const nonCloudUser = mockAuthenticatedUser({ elastic_cloud_user: false }); coreStart.settings.client.get.mockReturnValue(false); coreStart.settings.client.isOverridden.mockReturnValue(true); - nonCloudUser.roles = [...nonCloudUser.roles, 'user-role-1', 'user-role-2']; + nonCloudUser.roles = [...nonCloudUser.roles, 'user-role-1', 'user-role-2', 'user-role-3']; const testWrapper = mount( <Providers services={coreStart} @@ -436,7 +436,7 @@ describe('useUserProfileForm', () => { </Providers> ); - const extraRoles = nonCloudUser.roles.splice(1); + const extraRoles = nonCloudUser.roles.splice(3); const userRolesExpandButton = testWrapper.find( 'EuiButtonEmpty[data-test-subj="userRolesExpand"]' diff --git a/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx b/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx index 30102964b3438..a68cffaf439af 100644 --- a/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx +++ b/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx @@ -22,9 +22,12 @@ import { EuiIconTip, EuiKeyPadMenu, EuiKeyPadMenuItem, + EuiPageHeaderSection, EuiPopover, EuiSpacer, EuiText, + EuiTextTruncate, + EuiTitle, EuiToolTip, useEuiTheme, useGeneratedHtmlId, @@ -72,6 +75,28 @@ const formRowCSS = css` } `; +const pageHeaderCSS = css` + max-width: 1248px; + margin: auto; + border-bottom: none; +`; + +const pageTitleCSS = css` + min-width: 120px; +`; + +const rightSideItemsCSS = css` + justify-content: flex-start; + + @include euiBreakpoint('m') { + justify-content: flex-end; + } +`; + +const rightSideItemCSS = css` + min-width: 160px; +`; + export interface UserProfileProps { user: AuthenticatedUser; data?: UserProfileData; @@ -607,14 +632,13 @@ function UserPasswordEditor({ } const UserRoles: FunctionComponent<UserRoleProps> = ({ user }) => { - const { euiTheme } = useEuiTheme(); const [isPopoverOpen, setIsPopoverOpen] = useState(false); const onButtonClick = () => setIsPopoverOpen((isOpen) => !isOpen); const closePopover = () => setIsPopoverOpen(false); - const [firstRole] = user.roles; - const remainingRoles = user.roles.slice(1); + const firstThreeRoles = user.roles.slice(0, 3); + const remainingRoles = user.roles.slice(3); const renderMoreRoles = () => { const button = ( @@ -653,16 +677,13 @@ const UserRoles: FunctionComponent<UserRoleProps> = ({ user }) => { return ( <> - <div - style={{ - maxWidth: euiTheme.breakpoint.m / 6, - display: 'inline-block', - }} - > - <EuiBadge key={firstRole} color="hollow" data-test-subj={`role${firstRole}`}> - {firstRole} - </EuiBadge> - </div> + <EuiBadgeGroup gutterSize="xs" data-test-subj="displayedRoles"> + {firstThreeRoles.map((role) => ( + <EuiBadge key={role} color="hollow" data-test-subj={`role${role}`}> + {role} + </EuiBadge> + ))} + </EuiBadgeGroup> {remainingRoles.length ? renderMoreRoles() : null} </> ); @@ -693,7 +714,9 @@ export const UserProfile: FunctionComponent<UserProfileProps> = ({ user, data }) defaultMessage="Username" /> ), - description: user.username as string | undefined | JSX.Element, + description: + user.username && + ((<EuiTextTruncate text={user.username} />) as string | undefined | JSX.Element), helpText: ( <FormattedMessage id="xpack.security.accountManagement.userProfile.usernameHelpText" @@ -712,7 +735,7 @@ export const UserProfile: FunctionComponent<UserProfileProps> = ({ user, data }) defaultMessage="Full name" /> ), - description: user.full_name, + description: user.full_name && <EuiTextTruncate text={user.full_name} />, helpText: ( <FormattedMessage id="xpack.security.accountManagement.userProfile.fullNameHelpText" @@ -729,7 +752,7 @@ export const UserProfile: FunctionComponent<UserProfileProps> = ({ user, data }) defaultMessage="Email address" /> ), - description: user.email, + description: user.email && <EuiTextTruncate text={user.email} />, helpText: ( <FormattedMessage id="xpack.security.accountManagement.userProfile.emailHelpText" @@ -778,48 +801,61 @@ export const UserProfile: FunctionComponent<UserProfileProps> = ({ user, data }) /> ) : null} - <KibanaPageTemplate className="eui-fullHeight" restrictWidth={1000}> - <KibanaPageTemplate.Header - pageTitle={ - <FormattedMessage - id="xpack.security.accountManagement.userProfile.title" - defaultMessage="Profile" - /> - } - id={titleId} - rightSideItems={rightSideItems.reverse().map((item) => ( - <EuiDescriptionList - textStyle="reverse" - listItems={[ - { - title: ( - <EuiText color={euiTheme.colors.darkestShade} size="s"> - <EuiFlexGroup responsive={false} alignItems="center" gutterSize="none"> - <EuiFlexItem grow={false}>{item.title}</EuiFlexItem> - <EuiFlexItem grow={false} style={{ marginLeft: '0.33em' }}> - <EuiIconTip type="questionInCircle" content={item.helpText} /> - </EuiFlexItem> - </EuiFlexGroup> - </EuiText> - ), - description: ( - <span data-test-subj={item.testSubj}> - {item.description || ( - <EuiText color={euiTheme.colors.disabledText} size="s"> - <FormattedMessage - id="xpack.security.accountManagement.userProfile.noneProvided" - defaultMessage="None provided" - /> + <KibanaPageTemplate className="eui-fullHeight" restrictWidth={true}> + <KibanaPageTemplate.Header id={titleId} css={pageHeaderCSS}> + <EuiPageHeaderSection> + <EuiTitle size="l" css={pageTitleCSS}> + <h1> + <FormattedMessage + id="xpack.security.accountManagement.userProfile.title" + defaultMessage="Profile" + /> + </h1> + </EuiTitle> + </EuiPageHeaderSection> + <EuiPageHeaderSection> + <EuiFlexGroup alignItems="flexStart" css={rightSideItemsCSS}> + {rightSideItems.map((item) => ( + <EuiDescriptionList + key={item.testSubj} + textStyle="reverse" + css={rightSideItemCSS} + listItems={[ + { + title: ( + <EuiText color={euiTheme.colors.darkestShade} size="s"> + <EuiFlexGroup + responsive={false} + alignItems="center" + gutterSize="none" + > + <EuiFlexItem grow={false}>{item.title}</EuiFlexItem> + <EuiFlexItem grow={false}> + <EuiIconTip type="questionInCircle" content={item.helpText} /> + </EuiFlexItem> + </EuiFlexGroup> </EuiText> - )} - </span> - ), - }, - ]} - compressed - /> - ))} - /> + ), + description: ( + <span data-test-subj={item.testSubj}> + {item.description || ( + <EuiText color={euiTheme.colors.textDisabled} size="s"> + <FormattedMessage + id="xpack.security.accountManagement.userProfile.noneProvided" + defaultMessage="None provided" + /> + </EuiText> + )} + </span> + ), + }, + ]} + compressed + /> + ))} + </EuiFlexGroup> + </EuiPageHeaderSection> + </KibanaPageTemplate.Header> <KibanaPageTemplate.Section> <Form aria-labelledby={titleId}> <UserDetailsEditor user={user} /> @@ -1009,7 +1045,7 @@ export const SaveChangesBottomBar: FunctionComponent = () => { data-test-subj="saveProfileChangesButton" isLoading={formik.isSubmitting} isDisabled={formik.submitCount > 0 && !formik.isValid} - color="success" + color="primary" iconType="save" fill > diff --git a/x-pack/plugins/security/server/authorization/api_authorization.test.ts b/x-pack/plugins/security/server/authorization/api_authorization.test.ts index 0181c98d6f1b1..d2db2a535b1d1 100644 --- a/x-pack/plugins/security/server/authorization/api_authorization.test.ts +++ b/x-pack/plugins/security/server/authorization/api_authorization.test.ts @@ -20,7 +20,11 @@ import { authorizationMock } from './index.mock'; describe('initAPIAuthorization', () => { test(`protected route when "mode.useRbacForRequest()" returns false continues`, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create(); + const mockAuthz = { + ...authorizationMock.create(), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -44,7 +48,11 @@ describe('initAPIAuthorization', () => { test(`unprotected route when "mode.useRbacForRequest()" returns true continues`, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create(); + const mockAuthz = { + ...authorizationMock.create(), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -68,7 +76,11 @@ describe('initAPIAuthorization', () => { test(`protected route when "mode.useRbacForRequest()" returns true and user is authorized continues`, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create({ version: '1.0.0-zeta1' }); + const mockAuthz = { + ...authorizationMock.create({ version: '1.0.0-zeta1' }), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -105,7 +117,11 @@ describe('initAPIAuthorization', () => { test(`protected route when "mode.useRbacForRequest()" returns true and user isn't authorized responds with a 403`, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create({ version: '1.0.0-zeta1' }); + const mockAuthz = { + ...authorizationMock.create({ version: '1.0.0-zeta1' }), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -146,8 +162,10 @@ describe('initAPIAuthorization', () => { { security, kibanaPrivilegesResponse, + kibanaCurrentUserResponse, kibanaPrivilegesRequestActions, asserts, + esXpackSecurityUsageResponse, }: { security?: RouteSecurity; kibanaPrivilegesResponse?: { @@ -155,6 +173,10 @@ describe('initAPIAuthorization', () => { hasAllRequested?: boolean; }; kibanaPrivilegesRequestActions?: string[]; + kibanaCurrentUserResponse?: { operator: boolean }; + esXpackSecurityUsageResponse?: { + operator_privileges: { enabled: boolean; available: boolean }; + }; asserts: { forbidden?: boolean; authzResult?: Record<string, boolean>; @@ -164,7 +186,11 @@ describe('initAPIAuthorization', () => { ) => { test(description, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create({ version: '1.0.0-zeta1' }); + const mockAuthz = { + ...authorizationMock.create({ version: '1.0.0-zeta1' }), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -185,6 +211,8 @@ describe('initAPIAuthorization', () => { const mockPostAuthToolkit = httpServiceMock.createOnPostAuthToolkit(); const mockCheckPrivileges = jest.fn().mockReturnValue(kibanaPrivilegesResponse); + mockAuthz.getCurrentUser.mockReturnValue(kibanaCurrentUserResponse); + mockAuthz.getSecurityConfig.mockResolvedValue(esXpackSecurityUsageResponse); mockAuthz.mode.useRbacForRequest.mockReturnValue(true); mockAuthz.checkPrivilegesDynamicallyWithRequest.mockImplementation((request) => { // hapi conceals the actual "request" from us, so we make sure that the headers are passed to @@ -356,28 +384,77 @@ describe('initAPIAuthorization', () => { ); testSecurityConfig( - `protected route returns forbidden if user has allRequired AND NONE of anyRequired privileges requested`, + `protected route returns "authzResult" if user has operator privileges requested and user is operator`, { security: { authz: { - requiredPrivileges: [ - { - allRequired: ['privilege1'], - anyRequired: ['privilege2', 'privilege3'], - }, - ], + requiredPrivileges: [ReservedPrivilegesSet.operator], + }, + }, + kibanaCurrentUserResponse: { operator: true }, + esXpackSecurityUsageResponse: { operator_privileges: { enabled: true, available: true } }, + asserts: { + authzResult: { + operator: true, + }, + }, + } + ); + + testSecurityConfig( + `protected route returns "authzResult" if user has requested operator privileges and operator privileges are disabled`, + { + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator, 'privilege1'], }, }, - kibanaPrivilegesRequestActions: ['privilege1', 'privilege2', 'privilege3'], kibanaPrivilegesResponse: { privileges: { - kibana: [ - { privilege: 'api:privilege1', authorized: true }, - { privilege: 'api:privilege2', authorized: false }, - { privilege: 'api:privilege3', authorized: false }, - ], + kibana: [{ privilege: 'api:privilege1', authorized: true }], + }, + }, + kibanaCurrentUserResponse: { operator: false }, + esXpackSecurityUsageResponse: { operator_privileges: { enabled: false, available: false } }, + asserts: { + authzResult: { + privilege1: true, + }, + }, + } + ); + + testSecurityConfig( + `protected route returns forbidden if user operator privileges are disabled and user doesn't have additional privileges granted`, + { + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator, 'privilege1'], + }, + }, + kibanaPrivilegesResponse: { + privileges: { + kibana: [{ privilege: 'api:privilege1', authorized: false }], + }, + }, + kibanaCurrentUserResponse: { operator: false }, + esXpackSecurityUsageResponse: { operator_privileges: { enabled: false, available: false } }, + asserts: { + forbidden: true, + }, + } + ); + + testSecurityConfig( + `protected route returns forbidden if user has operator privileges requested and user is not operator`, + { + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator], }, }, + esXpackSecurityUsageResponse: { operator_privileges: { enabled: true, available: true } }, + kibanaCurrentUserResponse: { operator: false }, asserts: { forbidden: true, }, diff --git a/x-pack/plugins/security/server/authorization/api_authorization.ts b/x-pack/plugins/security/server/authorization/api_authorization.ts index 888d74e7d7bb2..dbfc8d03000e4 100644 --- a/x-pack/plugins/security/server/authorization/api_authorization.ts +++ b/x-pack/plugins/security/server/authorization/api_authorization.ts @@ -5,17 +5,22 @@ * 2.0. */ +import { ReservedPrivilegesSet } from '@kbn/core/server'; import type { AuthzDisabled, AuthzEnabled, HttpServiceSetup, + KibanaRequest, Logger, Privilege, PrivilegeSet, RouteAuthz, } from '@kbn/core/server'; -import { ReservedPrivilegesSet } from '@kbn/core/server'; -import type { AuthorizationServiceSetup } from '@kbn/security-plugin-types-server'; +import type { AuthenticatedUser } from '@kbn/security-plugin-types-common'; +import type { + AuthorizationServiceSetup, + EsSecurityConfig, +} from '@kbn/security-plugin-types-server'; import type { RecursiveReadonly } from '@kbn/utility-types'; import { API_OPERATION_PREFIX, SUPERUSER_PRIVILEGES } from '../../common/constants'; @@ -28,6 +33,11 @@ const isReservedPrivilegeSet = (privilege: string): privilege is ReservedPrivile return Object.hasOwn(ReservedPrivilegesSet, privilege); }; +interface InitApiAuthorization extends AuthorizationServiceSetup { + getCurrentUser: (request: KibanaRequest) => AuthenticatedUser | null; + getSecurityConfig: () => Promise<EsSecurityConfig>; +} + export function initAPIAuthorization( http: HttpServiceSetup, { @@ -35,7 +45,9 @@ export function initAPIAuthorization( checkPrivilegesDynamicallyWithRequest, checkPrivilegesWithRequest, mode, - }: AuthorizationServiceSetup, + getCurrentUser, + getSecurityConfig, + }: InitApiAuthorization, logger: Logger ) { http.registerOnPostAuth(async (request, response, toolkit) => { @@ -52,8 +64,55 @@ export function initAPIAuthorization( } const authz = security.authz as AuthzEnabled; + const normalizeRequiredPrivileges = async ( + privileges: AuthzEnabled['requiredPrivileges'] + ) => { + const hasOperatorPrivileges = privileges.some( + (privilege) => + privilege === ReservedPrivilegesSet.operator || + (typeof privilege === 'object' && + privilege.allRequired?.includes(ReservedPrivilegesSet.operator)) + ); + + // nothing to normalize + if (!hasOperatorPrivileges) { + return privileges; + } + + const securityConfig = await getSecurityConfig(); - const { requestedPrivileges, requestedReservedPrivileges } = authz.requiredPrivileges.reduce( + // nothing to normalize + if (securityConfig.operator_privileges.enabled) { + return privileges; + } + + return privileges.reduce<AuthzEnabled['requiredPrivileges']>((acc, privilege) => { + if (typeof privilege === 'object') { + const operatorPrivilegeIndex = + privilege.allRequired?.findIndex((p) => p === ReservedPrivilegesSet.operator) ?? -1; + + acc.push( + operatorPrivilegeIndex !== -1 + ? { + ...privilege, + // @ts-ignore wrong types for `toSpliced` + allRequired: privilege.allRequired?.toSpliced(operatorPrivilegeIndex, 1), + } + : privilege + ); + } else if (privilege !== ReservedPrivilegesSet.operator) { + acc.push(privilege); + } + + return acc; + }, []); + }; + + // We need to normalize privileges to drop unintended privilege checks. + // Operator privileges check should be only performed if the `operator_privileges` are enabled in config. + const requiredPrivileges = await normalizeRequiredPrivileges(authz.requiredPrivileges); + + const { requestedPrivileges, requestedReservedPrivileges } = requiredPrivileges.reduce( (acc, privilegeEntry) => { const privileges = typeof privilegeEntry === 'object' @@ -97,10 +156,15 @@ export function initAPIAuthorization( const checkSuperuserPrivilegesResponse = await checkPrivilegesWithRequest( request ).globally(SUPERUSER_PRIVILEGES); - kibanaPrivileges[ReservedPrivilegesSet.superuser] = checkSuperuserPrivilegesResponse.hasAllRequested; } + + if (reservedPrivilege === ReservedPrivilegesSet.operator) { + const currentUser = getCurrentUser(request); + + kibanaPrivileges[ReservedPrivilegesSet.operator] = currentUser?.operator ?? false; + } } const hasRequestedPrivilege = (kbPrivilege: Privilege | PrivilegeSet) => { @@ -118,8 +182,8 @@ export function initAPIAuthorization( return kibanaPrivileges[kbPrivilege]; }; - for (const requiredPrivilege of authz.requiredPrivileges) { - if (!hasRequestedPrivilege(requiredPrivilege)) { + for (const privilege of requiredPrivileges) { + if (!hasRequestedPrivilege(privilege)) { const missingPrivileges = Object.keys(kibanaPrivileges).filter( (key) => !kibanaPrivileges[key] ); diff --git a/x-pack/plugins/security/server/authorization/authorization_service.test.ts b/x-pack/plugins/security/server/authorization/authorization_service.test.ts index de3646166d8f9..3317fff03bd64 100644 --- a/x-pack/plugins/security/server/authorization/authorization_service.test.ts +++ b/x-pack/plugins/security/server/authorization/authorization_service.test.ts @@ -15,6 +15,7 @@ import { mockRegisterPrivilegesWithCluster, } from './service.test.mocks'; +import type { Client } from '@elastic/elasticsearch'; import { Subject } from 'rxjs'; import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; @@ -38,6 +39,9 @@ const mockCheckPrivilegesDynamicallyWithRequest = Symbol(); const mockCheckSavedObjectsPrivilegesWithRequest = Symbol(); const mockPrivilegesService = Symbol(); const mockAuthorizationMode = Symbol(); +const mockEsSecurityResponse = { + security: { operator_privileges: { enabled: false, available: false } }, +}; beforeEach(() => { mockCheckPrivilegesFactory.mockReturnValue({ checkPrivilegesWithRequest: mockCheckPrivilegesWithRequest, @@ -59,6 +63,9 @@ afterEach(() => { it(`#setup returns exposed services`, () => { const mockClusterClient = elasticsearchServiceMock.createClusterClient(); + mockClusterClient.asInternalUser.xpack.usage.mockResolvedValue( + mockEsSecurityResponse as Awaited<ReturnType<Client['xpack']['usage']>> + ); const mockGetSpacesService = jest .fn() .mockReturnValue({ getSpaceId: jest.fn(), namespaceToSpaceId: jest.fn() }); @@ -126,6 +133,9 @@ describe('#start', () => { statusSubject = new Subject<OnlineStatusRetryScheduler>(); const mockClusterClient = elasticsearchServiceMock.createClusterClient(); + mockClusterClient.asInternalUser.xpack.usage.mockResolvedValue( + mockEsSecurityResponse as Awaited<ReturnType<Client['xpack']['usage']>> + ); const mockCoreSetup = coreMock.createSetup(); const authorizationService = new AuthorizationService(); @@ -194,6 +204,9 @@ describe('#start', () => { it('#stop unsubscribes from license and ES updates.', async () => { const mockClusterClient = elasticsearchServiceMock.createClusterClient(); + mockClusterClient.asInternalUser.xpack.usage.mockResolvedValue( + mockEsSecurityResponse as Awaited<ReturnType<Client['xpack']['usage']>> + ); const statusSubject = new Subject<OnlineStatusRetryScheduler>(); const mockCoreSetup = coreMock.createSetup(); diff --git a/x-pack/plugins/security/server/authorization/authorization_service.tsx b/x-pack/plugins/security/server/authorization/authorization_service.tsx index c8e036b07679c..d58e24d3b84f6 100644 --- a/x-pack/plugins/security/server/authorization/authorization_service.tsx +++ b/x-pack/plugins/security/server/authorization/authorization_service.tsx @@ -123,6 +123,14 @@ export class AuthorizationService { this.applicationName ); + const esSecurityConfig = getClusterClient() + .then((client) => + client.asInternalUser.xpack.usage({ + filter_path: 'security.operator_privileges', + }) + ) + .then(({ security }) => security); + const authz = { actions, applicationName: this.applicationName, @@ -168,7 +176,11 @@ export class AuthorizationService { } ); - initAPIAuthorization(http, authz, loggers.get('api-authorization')); + initAPIAuthorization( + http, + { ...authz, getCurrentUser, getSecurityConfig: () => esSecurityConfig }, + loggers.get('api-authorization') + ); initAppAuthorization(http, authz, loggers.get('app-authorization'), features); http.registerOnPreResponse(async (request, preResponse, toolkit) => { diff --git a/x-pack/plugins/security/server/deprecations/kibana_user_role.test.ts b/x-pack/plugins/security/server/deprecations/kibana_user_role.test.ts index c0b1c31a91aa9..4f9d9f29253db 100644 --- a/x-pack/plugins/security/server/deprecations/kibana_user_role.test.ts +++ b/x-pack/plugins/security/server/deprecations/kibana_user_role.test.ts @@ -12,6 +12,7 @@ import type { PackageInfo, RegisterDeprecationsConfig } from '@kbn/core/server'; import { deprecationsServiceMock, elasticsearchServiceMock, + httpServerMock, loggingSystemMock, savedObjectsClientMock, } from '@kbn/core/server/mocks'; @@ -39,6 +40,7 @@ function getContextMock() { return { esClient: elasticsearchServiceMock.createScopedClusterClient(), savedObjectsClient: savedObjectsClientMock.create(), + request: httpServerMock.createKibanaRequest(), }; } diff --git a/x-pack/plugins/security/server/plugin.test.ts b/x-pack/plugins/security/server/plugin.test.ts index 4b9479f51a0f3..958e22a3f2dd9 100644 --- a/x-pack/plugins/security/server/plugin.test.ts +++ b/x-pack/plugins/security/server/plugin.test.ts @@ -5,6 +5,7 @@ * 2.0. */ +import type { Client } from '@elastic/elasticsearch'; import { of } from 'rxjs'; import { ByteSizeValue } from '@kbn/config-schema'; @@ -46,6 +47,13 @@ describe('Security Plugin', () => { mockCoreSetup = coreMock.createSetup({ pluginStartContract: { userProfiles: userProfileServiceMock.createStart() }, }); + + const core = coreMock.createRequestHandlerContext(); + + core.elasticsearch.client.asInternalUser.xpack.usage.mockResolvedValue({ + security: { operator_privileges: { enabled: false, available: false } }, + } as Awaited<ReturnType<Client['xpack']['usage']>>); + mockCoreSetup.http.getServerInfo.mockReturnValue({ hostname: 'localhost', name: 'kibana', @@ -64,6 +72,12 @@ describe('Security Plugin', () => { mockCoreStart = coreMock.createStart(); + mockCoreSetup.getStartServices.mockResolvedValue([ + // @ts-expect-error only mocking the client we use + { elasticsearch: core.elasticsearch }, + mockSetupDependencies.features, + ]); + mockStartDependencies = { features: featuresPluginMock.createStart(), licensing: licensingMock.createStart(), diff --git a/x-pack/plugins/security/server/plugin.ts b/x-pack/plugins/security/server/plugin.ts index afd21a83712ae..f0a218b8424b5 100644 --- a/x-pack/plugins/security/server/plugin.ts +++ b/x-pack/plugins/security/server/plugin.ts @@ -344,7 +344,7 @@ export class SecurityPlugin return Object.freeze<SecurityPluginSetup>({ audit: this.auditSetup, authc: { - getCurrentUser: (request) => this.getAuthentication().getCurrentUser(request), + getCurrentUser, }, authz: { actions: this.authorizationSetup.actions, diff --git a/x-pack/plugins/security_solution/README.md b/x-pack/plugins/security_solution/README.md deleted file mode 100644 index 1bca44e88e721..0000000000000 --- a/x-pack/plugins/security_solution/README.md +++ /dev/null @@ -1,144 +0,0 @@ -# Security Solution - -Welcome to the Kibana Security Solution plugin! This README will go over getting started with development and testing. - -## Development - -## Tests - -The endpoint specific tests leverage the ingest manager to install the endpoint package. Before the api integration -and functional tests are run the ingest manager is initialized. This initialization process includes reaching out to -a package registry service to install the endpoint package. The endpoint tests support three different ways to run -the tests given the constraint on an available package registry. - -1. Using Docker -2. Running your own local package registry -3. Using the default external package registry - -These scenarios will be outlined the sections below. - -### Endpoint API Integration Tests Location - -The endpoint api integration tests are located [here](../../test/security_solution_endpoint_api_int) - -### Endpoint Functional Tests Location - -The endpoint functional tests are located [here](../../test/security_solution_endpoint) - -### Using Docker - -To run the tests using the recommended docker image version you must have `docker` installed. The testing infrastructure -will stand up a docker container using the image defined [here](../../test/fleet_api_integration/config.ts#L15) - -Make sure you're in the Kibana root directory. - -#### Endpoint API Integration Tests - -In one terminal, run: - -```bash -FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:server --config x-pack/test/security_solution_endpoint_api_int/config.ts -``` - -In another terminal, run: - -```bash -FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:runner --config x-pack/test/security_solution_endpoint_api_int/config.ts -``` - -#### Endpoint Functional Tests - -In one terminal, run: - -```bash -FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:server --config x-pack/test/security_solution_endpoint/config.ts -``` - -In another terminal, run: - -```bash -FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:runner --config x-pack/test/security_solution_endpoint/config.ts -``` - -### Running your own package registry - -If you are doing endpoint package development it will be useful to run your own package registry to serve the latest package you're building. -To do this use the following commands: - -Make sure you're in the Kibana root directory. - -#### Endpoint API Integration Tests - -In one terminal, run: - -```bash -PACKAGE_REGISTRY_URL_OVERRIDE=<url to your package registry like http://localhost:8080> yarn test:ftr:server --config x-pack/test/security_solution_endpoint_api_int/config.ts -``` - -In another terminal, run: - -```bash -PACKAGE_REGISTRY_URL_OVERRIDE=<url to your package registry like http://localhost:8080> yarn test:ftr:runner --config x-pack/test/security_solution_endpoint_api_int/config.ts -``` - -#### Endpoint Functional Tests - -In one terminal, run: - -```bash -PACKAGE_REGISTRY_URL_OVERRIDE=<url to your package registry like http://localhost:8080> yarn test:ftr:server --config x-pack/test/security_solution_endpoint/config.ts -``` - -In another terminal, run: - -```bash -PACKAGE_REGISTRY_URL_OVERRIDE=<url to your package registry like http://localhost:8080> yarn test:ftr:runner --config x-pack/test/security_solution_endpoint/config.ts -``` - -### Using the default public registry - -If you don't have docker installed and don't want to run your own registry, you can run the tests using the ingest manager's default public package registry. The actual package registry used is [here](../../plugins/fleet/common/constants/epm.ts#L9) - -Make sure you're in the Kibana root directory. - -#### Endpoint API Integration Tests - -In one terminal, run: - -```bash -yarn test:ftr:server --config x-pack/test/security_solution_endpoint_api_int/config.ts -``` - -In another terminal, run: - -```bash -yarn test:ftr:runner --config x-pack/test/security_solution_endpoint_api_int/config.ts -``` - -#### Endpoint Functional Tests - -In one terminal, run: - -```bash -yarn test:ftr:server --config x-pack/test/security_solution_endpoint/config.ts -``` - -In another terminal, run: - -```bash -yarn test:ftr:runner --config x-pack/test/security_solution_endpoint/config.ts -``` - -#### Generate huge amount of indices with huge amount of fields - -The result of this operation will be 10 separate bucket folders within `mappings_folder`. Each bucket folder will contain a `mappings.json` file describing 50 indices. - -```bash -yarn mappings:generate --fieldsCount=10000 --indexCount=500 --indexPrefix='.ds-huge' --unmappedRate=.2 --buckets=10 --outputDirectory='mappings_folder' -``` - -#### Load generated mappings - -```bash -yarn mappings:load --mappings-dir='mappings_folder' --es-url=http://username:password@localhost:9200 --kibana-url=http://username:password@localhost:5601/app -``` diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/README.md b/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/README.md deleted file mode 100644 index 481fb04e5d3f7..0000000000000 --- a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# Summary - -Original PR: https://github.com/elastic/kibana/pull/127218 -The goal here is to create a system of schemas that are: - -- Easy to read -- Usable historical records of alert schemas from previous Kibana versions -- Accurate for every field -- Usable on both server and client side - -# Motivation - Development speed and quality - -We have already run into one bug (https://github.com/elastic/kibana/issues/125885) where a required field was not populated in some alert documents. Once a bug ships that creates documents incorrectly, any fix requires user action to initiate a re-index of the alerts in addition to the developer time to create and validate the fix. The changes proposed here would catch this bug at compile time. These sorts of bugs become harder to catch as the schema evolves over time and fields get added, removed, and changed. Keeping the schemas separated by version will help reduce the risk of repeated schema changes over time causing fields to be incorrectly included in or omitted from alert documents. - -We are also spending more time than necessary communicating details of the alerts schema over Slack and Zoom. It will be far more efficient for the code to clearly communicate more details about the alert schema. With a more comprehensive static schema, the knowledge will transfer to new developers more efficiently. - -Static types are a powerful tool for ensuring code correctness. However, each deviation of the static type from the actual runtime structure adds places where developers may need to cast, assert, or use conditional logic to satisfy the compiler. The current static types require frequent workarounds when the static types don't match what developers know or believe is true about the runtime type of the alert documents. These runtime workarounds establish patterns that evade the type system - costing developer time to create and maintain in addition to increasing the risk of bugs due to the additional complexity. Accurate static types are excellent documentation of the data structures we use but it's crucial that the static types are comprehensive to minimize cases where runtime checks are needed. - -# Structure - Common Alert Schema Directory - -The schemas in this directory have 2 primary purposes: (1) separate the alert document schemas from the FieldMaps, and (2) set up a code structure that enables easy versioning of alert schemas. During the Detection Engine migration to the rule registry we used the FieldMaps to define the alert schema, but ended up with numerous type casts and some bugs in the process. This common directory stores the various alert schemas by Kibana version. - -x-pack/plugins/security_solution/common/api/detection_engine/model/alerts initially contains index.ts and one folder, 8.0.0. index.ts imports the schemas from 8.0.0 and re-exports them as ...Latest, denoting that those are the "write" schemas. The reason for this is that as we add new schemas, there are many places server side where we want to ensure that we're writing the latest alert schema. By having index.ts re-export 8.0.0 schemas, when we add make a new alert schema in the future (e.g. adding an additional field in 8.x) we can simply update index.ts to re-export the new schema instead of the previous schema. index.ts also exports a DetectionAlert which is the "read" schema - this type will be maintained as a union of all versioned alert schemas, which is needed to accurately type alerts that are read from the alerts index. - -## Reading vs writing alerts - -When writing code that deals with creating a new alert document, always use the schema from alerts/index.ts, not from a specific version folder. This way when the schema is updated in the future, your code will automatically use the latest alert schema and the static type system will tell us if code is writing alerts that don't conform to the new schema. - -When writing code that deals with reading alerts, it must be able to handle alerts from any schema version. The "read schema" in index.ts DetectionAlert is a union of all of the versioned alert schemas since a valid alert from the .alerts index could be from any version. Initially there is only one versioned schema, so DetectionAlert is identical to DetectionAlert800. - -Generally, Solution code should not be directly importing alert schemas from a specific version. Alert writing code should use the latest schema, and alert reading code should use the union of all schemas. - -## Adding new schemas - -In the future, when we want to add new fields, we should create a new folder named with the version the field is being added in, create the updated schema in the new folder, and update index.ts to re-export the schemas for the new version instead of the previous version. Also, update the "read schema" DetectionAlert type in index.ts to include the new schema in addition to the previous schemas. The schema in the new version folder can either build on the previous version, e.g. 8.4.0 could import the schema from 8.0.0 and simply add a few new fields, or for larger changes the new version could build the schema from scratch. Old schemas should not change when new fields are added! - -## Changing existing schemas - -The schema in the 8.0.0 folder, and any future versioned folders after the version is released, should not be updated with new fields. Old schemas should only be updated if a bug is discovered and it is determined that the schema does not accurately represent the alert documents that were actually written by that version, e.g. if a field is typed as string in the schema but was actually written as string[]. The goal of these schemas is to represent documents accurately as they were written and since we aren't changing the documents that already exist, the schema should generally not change. - -## No changes - -If a version of Kibana makes no changes to the schema, a new folder for that version is not needed. - -# Design decisions - -- Why not combine the FieldMaps and alert schema, creating a single structure that can define both? - FieldMaps are integrated tightly with Elasticsearch mappings already, with minimal support for accurate TypeScript types of the fields. We want to avoid adding tons of extra information in to the FieldMaps that would not be used for the Elasticsearch mappings. Instead later we can write a bit of code to ensure that the alert schemas are compatible with the FieldMap schemas, essentially ensuring that the alert schemas extend the FieldMap schemas. - -- Why is | undefined used in field definitions instead of making fields optional? - Making all fields required, but some | undefined in the type, helps ensure that we don't forget to copy over fields that may be undefined. If the field is optional, e.g. [ALERT_RULE_NOTE]?: string, then the compiler won't complain if the field is completely left out when we build the alert document. However, when it's defined as [ALERT_RULE_NOTE]: string | undefined instead, the field must be explicitly provided when creating an object literal of the alert type - even if the value is undefined. This makes it harder to forget to populate all of the fields. This can be seen in build_alert.ts where removing one of the optional fields from the return value results in a compiler error. - -- Why do we need to version the schemas instead of adding all new fields as | undefined? - Adding new fields as | undefined when they're actually required reduces the accuracy of the schema, which makes it less useful and harder to work with. If we decide to add a new field and always populate it going forward then accurately representing that in the static type makes it easier to work with alerts during the alert creation process. When a field is typed as | undefined but a developer knows that it should always exist, it encourages patterns that fight the type system through type-casting, assertions, using ?? <some default value>, etc. This makes the code harder to read, harder to reason about, and thus harder to maintain because the knowledge of "this field is typed as | undefined but actually always exists here" is not represented in the code and only lives in developers minds. Versioned alert schemas aim to turn the static types into an asset that precisely documents what the alert document structure is. diff --git a/x-pack/plugins/security_solution/common/api/endpoint/README.md b/x-pack/plugins/security_solution/common/api/endpoint/README.md deleted file mode 100644 index d03b376b4d6bc..0000000000000 --- a/x-pack/plugins/security_solution/common/api/endpoint/README.md +++ /dev/null @@ -1,63 +0,0 @@ -## Elastic Defend related APIs developer reference - - -### Directory structure and files - -- All the OpenAPI schemas are located under this directory and organized by sub-directories that reflect the API domain. -- Note that the sub-directory names for individual APIs are defined using snake_case to match the associated API path. -- The `model/` directory stores common schemas for re-use across multiple APIs. - -- Each API has at least the following set of files: - -``` -index.ts -<api_route_name>.ts -<api_route_name>.gen.ts -<api_route_name>.schema.yaml -``` - -#### `index.ts` file - -The `index.ts` file found under each API directory exports both the generated and the kibana config schemas. - - -#### `<api_route_name>.ts` file - -This file contains the Kibana `schema` definition that is used on the server side when the route is registered. This file is manually updated whenever needed. - - -#### `<api_route_name>.schema.yaml` file - -This file defines and describes the API using the OpenAPI standard. - - -#### `<api_route_name>.gen.ts` file - -This is a generated file and should not be updated manually. It contains schema validation code generated using the [Zod library](https://github.com/colinhacks/zod). - - - - - -### Making changes - -1. Update the OpenAPI schema YML file and/or the Kibana schema file (see References below for help with OpenAPI YAML format) -2. Generate/re-generate the Zod schema validation modules: -```shell -yarn --cwd x-pack/plugins/security_solution openapi:generate -``` -3. Create a new bundle with the updated APIs: -```shell -yarn --cwd x-pack/plugins/security_solution openapi:bundle:endpoint-management -``` -4. Ensure that the newly generated files are commited to source - - - -### References - -- [Kibana OpenAPI generator Usage Guide](https://github.com/elastic/kibana/blob/main/packages/kbn-openapi-generator/docs/USAGE_GUIDE.md) -- [Open API documentation](https://spec.openapis.org/oas/v3.0.3#document-structure) -- [Swagger documentation](https://swagger.io/docs/specification/basic-structure/) - - diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts deleted file mode 100644 index 21dc89544c8d8..0000000000000 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './engine_settings_route.gen'; -export * from './engine_status_route.gen'; -export * from './engine_init_route.gen'; -export * from './engine_disable_route.gen'; -export * from './engine_enable_route.gen'; -export * from './engine_status_route.gen'; -export * from './calculation_route.gen'; -export * from './preview_route.gen'; -export * from './entity_calculation_route.gen'; -export * from './get_risk_engine_privileges.gen'; -export * from './engine_cleanup_route.gen'; diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts deleted file mode 100644 index 265af5a47e1fe..0000000000000 --- a/x-pack/plugins/security_solution/common/constants.ts +++ /dev/null @@ -1,521 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { RuleNotifyWhen } from '@kbn/alerting-plugin/common'; -import type { FilterControlConfig } from '@kbn/alerts-ui-shared'; -import * as i18n from './translations'; - -export { SecurityPageName } from '@kbn/security-solution-navigation'; -/** - * as const - * - * The const assertion ensures that type widening does not occur - * https://mariusschulz.com/blog/literal-type-widening-in-typescript - * Please follow this convention when adding to this file - */ -export const APP_ID = 'securitySolution' as const; -export const APP_UI_ID = 'securitySolutionUI' as const; -export const ASSISTANT_FEATURE_ID = 'securitySolutionAssistant' as const; -export const ATTACK_DISCOVERY_FEATURE_ID = 'securitySolutionAttackDiscovery' as const; -export const CASES_FEATURE_ID = 'securitySolutionCasesV2' as const; -export const SERVER_APP_ID = 'siem' as const; -export const APP_NAME = 'Security' as const; -export const APP_ICON = 'securityAnalyticsApp' as const; -export const APP_ICON_SOLUTION = 'logoSecurity' as const; -export const APP_PATH = `/app/security` as const; -export const APP_INTEGRATIONS_PATH = `/app/integrations` as const; -export const ADD_DATA_PATH = `${APP_INTEGRATIONS_PATH}/browse/security`; -export const ADD_THREAT_INTELLIGENCE_DATA_PATH = `${APP_INTEGRATIONS_PATH}/browse/threat_intel`; -export const DEFAULT_BYTES_FORMAT = 'format:bytes:defaultPattern' as const; -export const DEFAULT_DATE_FORMAT = 'dateFormat' as const; -export const DEFAULT_DATE_FORMAT_TZ = 'dateFormat:tz' as const; -export const DEFAULT_INDEX_KEY = 'securitySolution:defaultIndex' as const; -export const DEFAULT_NUMBER_FORMAT = 'format:number:defaultPattern' as const; -export const DEFAULT_DATA_VIEW_ID = 'security-solution' as const; -export const DEFAULT_TIME_FIELD = '@timestamp' as const; -export const DEFAULT_TIME_RANGE = 'timepicker:timeDefaults' as const; -export const DEFAULT_REFRESH_RATE_INTERVAL = 'timepicker:refreshIntervalDefaults' as const; -export const DEFAULT_APP_TIME_RANGE = 'securitySolution:timeDefaults' as const; -export const DEFAULT_APP_REFRESH_INTERVAL = 'securitySolution:refreshIntervalDefaults' as const; -export const DEFAULT_ALERTS_INDEX = '.alerts-security.alerts' as const; -export const DEFAULT_SIGNALS_INDEX = '.siem-signals' as const; -export const DEFAULT_PREVIEW_INDEX = '.preview.alerts-security.alerts' as const; -export const DEFAULT_LISTS_INDEX = '.lists' as const; -export const DEFAULT_ITEMS_INDEX = '.items' as const; -export const DEFAULT_RISK_SCORE_PAGE_SIZE = 1000 as const; -// The DEFAULT_MAX_SIGNALS value exists also in `x-pack/plugins/cases/common/constants.ts` -// If either changes, engineer should ensure both values are updated -export const DEFAULT_MAX_SIGNALS = 100 as const; -export const DEFAULT_SEARCH_AFTER_PAGE_SIZE = 100 as const; -export const DEFAULT_ANOMALY_SCORE = 'securitySolution:defaultAnomalyScore' as const; -export const DEFAULT_MAX_TABLE_QUERY_SIZE = 10000 as const; -export const DEFAULT_FROM = 'now/d' as const; -export const DEFAULT_TO = 'now/d' as const; -export const DEFAULT_INTERVAL_PAUSE = true as const; -export const DEFAULT_INTERVAL_TYPE = 'manual' as const; -export const DEFAULT_INTERVAL_VALUE = 300000 as const; // ms -export const DEFAULT_TIMEPICKER_QUICK_RANGES = 'timepicker:quickRanges' as const; -export const SCROLLING_DISABLED_CLASS_NAME = 'scrolling-disabled' as const; -export const NO_ALERT_INDEX = 'no-alert-index-049FC71A-4C2C-446F-9901-37XMC5024C51' as const; -export const ENDPOINT_METADATA_INDEX = 'metrics-endpoint.metadata-*' as const; -export const ENDPOINT_METRICS_INDEX = '.ds-metrics-endpoint.metrics-*' as const; -export const DEFAULT_RULE_REFRESH_INTERVAL_ON = true as const; -export const DEFAULT_RULE_REFRESH_INTERVAL_VALUE = 60000 as const; // ms -export const DEFAULT_RULE_NOTIFICATION_QUERY_SIZE = 100 as const; -export const SECURITY_FEATURE_ID = 'Security' as const; -export const SECURITY_TAG_NAME = 'Security Solution' as const; -export const SECURITY_TAG_DESCRIPTION = 'Security Solution auto-generated tag' as const; -export const DEFAULT_SPACE_ID = 'default' as const; -export const DEFAULT_RELATIVE_DATE_THRESHOLD = 24 as const; -export const DEFAULT_MAX_UNASSOCIATED_NOTES = 1000 as const; - -// Document path where threat indicator fields are expected. Fields are used -// to enrich signals, and are copied to threat.enrichments. -export const DEFAULT_INDICATOR_SOURCE_PATH = 'threat.indicator' as const; -export const ENRICHMENT_DESTINATION_PATH = 'threat.enrichments' as const; -export const DEFAULT_THREAT_INDEX_KEY = 'securitySolution:defaultThreatIndex' as const; -export const DEFAULT_THREAT_INDEX_VALUE = ['logs-ti_*'] as const; -export const DEFAULT_THREAT_MATCH_QUERY = '@timestamp >= "now-30d/d"' as const; - -export const EXPLORE_PATH = '/explore' as const; -export const DASHBOARDS_PATH = '/dashboards' as const; -export const MANAGE_PATH = '/manage' as const; -export const TIMELINES_PATH = '/timelines' as const; -export const CASES_PATH = '/cases' as const; -export const OVERVIEW_PATH = '/overview' as const; -export const ONBOARDING_PATH = '/get_started' as const; -export const DATA_QUALITY_PATH = '/data_quality' as const; -export const DETECTION_RESPONSE_PATH = '/detection_response' as const; -export const DETECTIONS_PATH = '/detections' as const; -export const ALERTS_PATH = '/alerts' as const; -export const ALERT_DETAILS_REDIRECT_PATH = `${ALERTS_PATH}/redirect` as const; -export const RULES_PATH = '/rules' as const; -export const RULES_LANDING_PATH = `${RULES_PATH}/landing` as const; -export const RULES_ADD_PATH = `${RULES_PATH}/add_rules` as const; -export const RULES_UPDATES = `${RULES_PATH}/updates` as const; -export const RULES_CREATE_PATH = `${RULES_PATH}/create` as const; -export const EXCEPTIONS_PATH = '/exceptions' as const; -export const EXCEPTION_LIST_DETAIL_PATH = `${EXCEPTIONS_PATH}/details/:detailName` as const; -export const HOSTS_PATH = '/hosts' as const; -export const ATTACK_DISCOVERY_PATH = '/attack_discovery' as const; -export const USERS_PATH = '/users' as const; -export const KUBERNETES_PATH = '/kubernetes' as const; -export const NETWORK_PATH = '/network' as const; -export const MANAGEMENT_PATH = '/administration' as const; -export const COVERAGE_OVERVIEW_PATH = '/rules_coverage_overview' as const; -export const THREAT_INTELLIGENCE_PATH = '/threat_intelligence' as const; -export const INVESTIGATIONS_PATH = '/investigations' as const; -export const MACHINE_LEARNING_PATH = '/ml' as const; -export const ASSETS_PATH = '/assets' as const; -export const CLOUD_DEFEND_PATH = '/cloud_defend' as const; -export const ENDPOINTS_PATH = `${MANAGEMENT_PATH}/endpoints` as const; -export const POLICIES_PATH = `${MANAGEMENT_PATH}/policy` as const; -export const TRUSTED_APPS_PATH = `${MANAGEMENT_PATH}/trusted_apps` as const; -export const EVENT_FILTERS_PATH = `${MANAGEMENT_PATH}/event_filters` as const; -export const HOST_ISOLATION_EXCEPTIONS_PATH = - `${MANAGEMENT_PATH}/host_isolation_exceptions` as const; -export const BLOCKLIST_PATH = `${MANAGEMENT_PATH}/blocklist` as const; -export const RESPONSE_ACTIONS_HISTORY_PATH = `${MANAGEMENT_PATH}/response_actions_history` as const; -export const ENTITY_ANALYTICS_PATH = '/entity_analytics' as const; -export const ENTITY_ANALYTICS_MANAGEMENT_PATH = `/entity_analytics_management` as const; -export const ENTITY_ANALYTICS_ASSET_CRITICALITY_PATH = - `/entity_analytics_asset_criticality` as const; -export const ENTITY_ANALYTICS_ENTITY_STORE_MANAGEMENT_PATH = - `/entity_analytics_entity_store` as const; -export const APP_ALERTS_PATH = `${APP_PATH}${ALERTS_PATH}` as const; -export const APP_CASES_PATH = `${APP_PATH}${CASES_PATH}` as const; -export const APP_ENDPOINTS_PATH = `${APP_PATH}${ENDPOINTS_PATH}` as const; -export const APP_POLICIES_PATH = `${APP_PATH}${POLICIES_PATH}` as const; -export const APP_TRUSTED_APPS_PATH = `${APP_PATH}${TRUSTED_APPS_PATH}` as const; -export const APP_EVENT_FILTERS_PATH = `${APP_PATH}${EVENT_FILTERS_PATH}` as const; -export const APP_HOST_ISOLATION_EXCEPTIONS_PATH = - `${APP_PATH}${HOST_ISOLATION_EXCEPTIONS_PATH}` as const; -export const APP_BLOCKLIST_PATH = `${APP_PATH}${BLOCKLIST_PATH}` as const; -export const APP_RESPONSE_ACTIONS_HISTORY_PATH = - `${APP_PATH}${RESPONSE_ACTIONS_HISTORY_PATH}` as const; -export const NOTES_PATH = `${MANAGEMENT_PATH}/notes` as const; -export const SIEM_MIGRATIONS_PATH = '/siem_migrations' as const; -export const SIEM_MIGRATIONS_RULES_PATH = `${SIEM_MIGRATIONS_PATH}/rules` as const; - -// cloud logs to exclude from default index pattern -export const EXCLUDE_ELASTIC_CLOUD_INDICES = ['-*elastic-cloud-logs-*']; - -/** The comma-delimited list of Elasticsearch indices from which the SIEM app collects events */ -export const INCLUDE_INDEX_PATTERN = [ - 'apm-*-transaction*', - 'auditbeat-*', - 'endgame-*', - 'filebeat-*', - 'logs-*', - 'packetbeat-*', - 'traces-apm*', - 'winlogbeat-*', -]; -/** The comma-delimited list of Elasticsearch indices from which the SIEM app collects events, and the exclude index pattern */ -export const DEFAULT_INDEX_PATTERN = [...INCLUDE_INDEX_PATTERN, ...EXCLUDE_ELASTIC_CLOUD_INDICES]; - -/** This Kibana Advanced Setting enables the `Security news` feed widget */ -export const ENABLE_NEWS_FEED_SETTING = 'securitySolution:enableNewsFeed' as const; - -/** This Kibana Advanced Setting allows users to enable/disable querying cold and frozen data tiers in analyzer */ -export const EXCLUDE_COLD_AND_FROZEN_TIERS_IN_ANALYZER = - 'securitySolution:excludeColdAndFrozenTiersInAnalyzer' as const; - -/** This Kibana Advanced Setting enables the warnings for CCS read permissions */ -export const ENABLE_CCS_READ_WARNING_SETTING = 'securitySolution:enableCcsWarning' as const; - -/** This Kibana Advanced Setting sets the auto refresh interval for the detections all rules table */ -export const DEFAULT_RULES_TABLE_REFRESH_SETTING = 'securitySolution:rulesTableRefresh' as const; - -/** This Kibana Advanced Setting specifies the URL of the News feed widget */ -export const NEWS_FEED_URL_SETTING = 'securitySolution:newsFeedUrl' as const; - -/** The default value for News feed widget */ -export const NEWS_FEED_URL_SETTING_DEFAULT = 'https://feeds.elastic.co/security-solution' as const; - -/** This Kibana Advanced Setting specifies the URLs of `IP Reputation Links`*/ -export const IP_REPUTATION_LINKS_SETTING = 'securitySolution:ipReputationLinks' as const; - -/** The default value for `IP Reputation Links` */ -export const IP_REPUTATION_LINKS_SETTING_DEFAULT = `[ - { "name": "virustotal.com", "url_template": "https://www.virustotal.com/gui/search/{{ip}}" }, - { "name": "talosIntelligence.com", "url_template": "https://talosintelligence.com/reputation_center/lookup?search={{ip}}" } -]`; - -/** This Kibana Advanced Setting shows related integrations on the Rules Table */ -export const SHOW_RELATED_INTEGRATIONS_SETTING = - 'securitySolution:showRelatedIntegrations' as const; - -/** This Kibana Advanced Setting enables extended rule execution logging to Event Log */ -export const EXTENDED_RULE_EXECUTION_LOGGING_ENABLED_SETTING = - 'securitySolution:extendedRuleExecutionLoggingEnabled' as const; - -/** This Kibana Advanced Setting sets minimum log level starting from which execution logs will be written to Event Log */ -export const EXTENDED_RULE_EXECUTION_LOGGING_MIN_LEVEL_SETTING = - 'securitySolution:extendedRuleExecutionLoggingMinLevel' as const; - -/** This Kibana Advanced Setting allows users to exclude selected data tiers from search during rule execution */ -export const EXCLUDED_DATA_TIERS_FOR_RULE_EXECUTION = - 'securitySolution:excludedDataTiersForRuleExecution' as const; - -/** This Kibana Advances setting allows users to define the maximum amount of unassociated notes (notes without a `timelineId`) */ -export const MAX_UNASSOCIATED_NOTES = 'securitySolution:maxUnassociatedNotes' as const; - -/** This Kibana Advanced Setting allows users to enable/disable the Visualizations in Flyout feature */ -export const ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING = - 'securitySolution:enableVisualizationsInFlyout' as const; - -/** - * Id for the notifications alerting type - * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function - */ -export const LEGACY_NOTIFICATIONS_ID = `siem.notifications` as const; - -/** - * Internal actions route - */ -export const UPDATE_OR_CREATE_LEGACY_ACTIONS = '/internal/api/detection/legacy/notifications'; - -/** - * Exceptions management routes - */ -export const SHARED_EXCEPTION_LIST_URL = `/api${EXCEPTIONS_PATH}/shared` as const; - -/** - * Detection engine routes - */ -export const DETECTION_ENGINE_URL = '/api/detection_engine' as const; -export const DETECTION_ENGINE_PRIVILEGES_URL = `${DETECTION_ENGINE_URL}/privileges` as const; -export const DETECTION_ENGINE_INDEX_URL = `${DETECTION_ENGINE_URL}/index` as const; - -export const DETECTION_ENGINE_RULES_URL = `${DETECTION_ENGINE_URL}/rules` as const; -export const DETECTION_ENGINE_RULES_URL_FIND = `${DETECTION_ENGINE_RULES_URL}/_find` as const; -export const DETECTION_ENGINE_TAGS_URL = `${DETECTION_ENGINE_URL}/tags` as const; -export const DETECTION_ENGINE_RULES_BULK_ACTION = - `${DETECTION_ENGINE_RULES_URL}/_bulk_action` as const; -export const DETECTION_ENGINE_RULES_PREVIEW = `${DETECTION_ENGINE_RULES_URL}/preview` as const; -export const DETECTION_ENGINE_RULES_BULK_DELETE = - `${DETECTION_ENGINE_RULES_URL}/_bulk_delete` as const; -export const DETECTION_ENGINE_RULES_BULK_CREATE = - `${DETECTION_ENGINE_RULES_URL}/_bulk_create` as const; -export const DETECTION_ENGINE_RULES_BULK_UPDATE = - `${DETECTION_ENGINE_RULES_URL}/_bulk_update` as const; - -export * from './entity_analytics/constants'; - -export const INTERNAL_DASHBOARDS_URL = `/internal/dashboards` as const; -export const INTERNAL_TAGS_URL = `/internal/tags`; - -/** - * Internal detection engine routes - */ -export const INTERNAL_DETECTION_ENGINE_URL = '/internal/detection_engine' as const; -export const DETECTION_ENGINE_ALERTS_INDEX_URL = - `${INTERNAL_DETECTION_ENGINE_URL}/signal/index` as const; -export const DETECTION_ENGINE_ALERT_SUGGEST_USERS_URL = - `${INTERNAL_DETECTION_ENGINE_URL}/users/_find` as const; - -/** - * Telemetry detection endpoint for any previews requested of what data we are - * providing through UI/UX and for e2e tests. - * curl http//localhost:5601/internal/security_solution/telemetry - * to see the contents - */ -export const SECURITY_TELEMETRY_URL = `/internal/security_solution/telemetry` as const; - -export const TIMELINE_RESOLVE_URL = '/api/timeline/resolve' as const; -export const TIMELINE_URL = '/api/timeline' as const; -export const TIMELINES_URL = '/api/timelines' as const; -export const TIMELINE_FAVORITE_URL = '/api/timeline/_favorite' as const; -export const TIMELINE_DRAFT_URL = `${TIMELINE_URL}/_draft` as const; -export const TIMELINE_EXPORT_URL = `${TIMELINE_URL}/_export` as const; -export const TIMELINE_IMPORT_URL = `${TIMELINE_URL}/_import` as const; -export const TIMELINE_PREPACKAGED_URL = `${TIMELINE_URL}/_prepackaged` as const; -export const TIMELINE_COPY_URL = `${TIMELINE_URL}/_copy` as const; - -export const NOTE_URL = '/api/note' as const; -export const PINNED_EVENT_URL = '/api/pinned_event' as const; -export const SOURCERER_API_URL = '/internal/security_solution/sourcerer' as const; -export const RISK_SCORE_INDEX_STATUS_API_URL = '/internal/risk_score/index_status' as const; - -export const EVENT_GRAPH_VISUALIZATION_API = '/internal/cloud_security_posture/graph' as const; - -/** - * Default signals index key for kibana.dev.yml - */ -export const SIGNALS_INDEX_KEY = 'signalsIndex' as const; - -export const DETECTION_ENGINE_SIGNALS_URL = `${DETECTION_ENGINE_URL}/signals` as const; -export const DETECTION_ENGINE_SIGNALS_STATUS_URL = - `${DETECTION_ENGINE_SIGNALS_URL}/status` as const; -export const DETECTION_ENGINE_QUERY_SIGNALS_URL = `${DETECTION_ENGINE_SIGNALS_URL}/search` as const; -export const DETECTION_ENGINE_SIGNALS_MIGRATION_URL = - `${DETECTION_ENGINE_SIGNALS_URL}/migration` as const; -export const DETECTION_ENGINE_SIGNALS_MIGRATION_STATUS_URL = - `${DETECTION_ENGINE_SIGNALS_URL}/migration_status` as const; -export const DETECTION_ENGINE_SIGNALS_FINALIZE_MIGRATION_URL = - `${DETECTION_ENGINE_SIGNALS_URL}/finalize_migration` as const; -export const DETECTION_ENGINE_ALERT_TAGS_URL = `${DETECTION_ENGINE_SIGNALS_URL}/tags` as const; -export const DETECTION_ENGINE_ALERT_ASSIGNEES_URL = - `${DETECTION_ENGINE_SIGNALS_URL}/assignees` as const; - -export const ALERTS_AS_DATA_URL = '/internal/rac/alerts' as const; -export const ALERTS_AS_DATA_FIND_URL = `${ALERTS_AS_DATA_URL}/find` as const; - -/** - * Security Integrations routes - */ -export const SECRUTIY_INTEGRATIONS_FLEET_MANAGED_INDEX_TEMPLATES_URL = - '/internal/fleet_index_templates' as const; - -export const SECURITY_INTEGRATIONS_CRIBL_ROUTING_PIPELINE = 'cribl-routing-pipeline' as const; - -/** - * Common naming convention for an unauthenticated user - */ -export const UNAUTHENTICATED_USER = 'Unauthenticated' as const; - -/** - Licensing requirements - */ -export const MINIMUM_ML_LICENSE = 'platinum' as const; - -/** - Machine Learning constants - */ -export const ML_GROUP_ID = 'security' as const; -export const LEGACY_ML_GROUP_ID = 'siem' as const; -export const ML_GROUP_IDS = [ML_GROUP_ID, LEGACY_ML_GROUP_ID] as const; - -/** - * Rule Actions - */ -export const NOTIFICATION_THROTTLE_NO_ACTIONS = 'no_actions' as const; -export const NOTIFICATION_THROTTLE_RULE = 'rule' as const; - -export const NOTIFICATION_DEFAULT_FREQUENCY = { - notifyWhen: RuleNotifyWhen.ACTIVE, - throttle: null, - summary: true, -}; - -export const showAllOthersBucket: string[] = [ - 'destination.ip', - 'event.action', - 'event.category', - 'event.dataset', - 'event.module', - 'signal.rule.threat.tactic.name', - 'source.ip', - 'destination.ip', - 'user.name', -]; - -export const RISKY_HOSTS_INDEX_PREFIX = 'ml_host_risk_score_' as const; - -export const RISKY_USERS_INDEX_PREFIX = 'ml_user_risk_score_' as const; - -export const TRANSFORM_STATES = { - ABORTING: 'aborting', - FAILED: 'failed', - INDEXING: 'indexing', - STARTED: 'started', - STOPPED: 'stopped', - STOPPING: 'stopping', - WAITING: 'waiting', -}; - -export const WARNING_TRANSFORM_STATES = new Set([ - TRANSFORM_STATES.ABORTING, - TRANSFORM_STATES.FAILED, - TRANSFORM_STATES.STOPPED, - TRANSFORM_STATES.STOPPING, -]); - -export const STARTED_TRANSFORM_STATES = new Set([ - TRANSFORM_STATES.INDEXING, - TRANSFORM_STATES.STARTED, -]); - -/** - * How many rules to update at a time is set to 50 from errors coming from - * the slow environments such as cloud when the rule updates are > 100 we were - * seeing timeout issues. - * - * Since there is not timeout options at the alerting API level right now, we are - * at the mercy of the Elasticsearch server client/server default timeouts and what - * we are doing could be considered a workaround to not being able to increase the timeouts. - * - * However, other bad effects and saturation of connections beyond 50 makes this a "noisy neighbor" - * if we don't limit its number of connections as we increase the number of rules that can be - * installed at a time. - * - * Lastly, we saw weird issues where Chrome on upstream 408 timeouts will re-call the REST route - * which in turn could create additional connections we want to avoid. - * - * See file import_rules_route.ts for another area where 50 was chosen, therefore I chose - * 50 here to mimic it as well. If you see this re-opened or what similar to it, consider - * reducing the 50 above to a lower number. - * - * See the original ticket here: - * https://github.com/elastic/kibana/issues/94418 - */ -export const MAX_RULES_TO_UPDATE_IN_PARALLEL = 50; - -export const LIMITED_CONCURRENCY_ROUTE_TAG_PREFIX = `${APP_ID}:limitedConcurrency`; - -/** - * Max number of rules to display on UI in table, max number of rules that can be edited in a single bulk edit API request - * We limit number of rules in bulk edit API, because rulesClient doesn't support bulkGet of rules by ids. - * Given this limitation, current implementation fetches each rule separately through rulesClient.resolve method. - * As max number of rules displayed on a page is 100, max 100 rules can be bulk edited by passing their ids to API. - * We decided add this limit(number of ids less than 100) in bulk edit API as well, to prevent a huge number of single rule fetches - */ -export const RULES_TABLE_MAX_PAGE_SIZE = 100; - -/** - * Local storage keys we use to store the state of our new features tours we currently show in the app. - * - * NOTE: As soon as we want to show tours for new features in the upcoming release, - * we will need to update these constants with the corresponding version. - */ -export const NEW_FEATURES_TOUR_STORAGE_KEYS = { - RULE_MANAGEMENT_PAGE: 'securitySolution.rulesManagementPage.newFeaturesTour.v8.13', - TIMELINES: 'securitySolution.security.timelineFlyoutHeader.saveTimelineTour', -}; - -export const RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_METRIC_COLUMNS_STORAGE_KEY = - 'securitySolution.ruleDetails.ruleExecutionLog.showMetrics.v8.2'; - -export const RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_SOURCE_EVENT_TIME_RANGE_STORAGE_KEY = - 'securitySolution.ruleDetails.ruleExecutionLog.showSourceEventTimeRange.v8.15'; - -// TODO: https://github.com/elastic/kibana/pull/142950 -/** - * Error codes that can be thrown during _bulk_action API dry_run call and be processed and displayed to end user - */ -export enum BulkActionsDryRunErrCode { - IMMUTABLE = 'IMMUTABLE', - MACHINE_LEARNING_AUTH = 'MACHINE_LEARNING_AUTH', - MACHINE_LEARNING_INDEX_PATTERN = 'MACHINE_LEARNING_INDEX_PATTERN', - ESQL_INDEX_PATTERN = 'ESQL_INDEX_PATTERN', - MANUAL_RULE_RUN_FEATURE = 'MANUAL_RULE_RUN_FEATURE', - MANUAL_RULE_RUN_DISABLED_RULE = 'MANUAL_RULE_RUN_DISABLED_RULE', -} - -export const MAX_NUMBER_OF_NEW_TERMS_FIELDS = 3; - -export const BULK_ADD_TO_TIMELINE_LIMIT = 2000; - -export const DEFAULT_DETECTION_PAGE_FILTERS: FilterControlConfig[] = [ - { - title: 'Status', - fieldName: 'kibana.alert.workflow_status', - selectedOptions: ['open'], - hideActionBar: true, - persist: true, - hideExists: true, - }, - { - title: 'Severity', - fieldName: 'kibana.alert.severity', - selectedOptions: [], - hideActionBar: true, - hideExists: true, - }, - { - title: 'User', - fieldName: 'user.name', - }, - { - title: 'Host', - fieldName: 'host.name', - }, -]; - -/** This local storage key stores the `Grid / Event rendered view` selection */ -export const ALERTS_TABLE_VIEW_SELECTION_KEY = 'securitySolution.alerts.table.view-selection'; - -export const VIEW_SELECTION = { - gridView: 'gridView', - eventRenderedView: 'eventRenderedView', -} as const; - -export const ALERTS_TABLE_REGISTRY_CONFIG_IDS = { - ALERTS_PAGE: `${APP_ID}-alerts-page`, - RULE_DETAILS: `${APP_ID}-rule-details`, - CASE: `${APP_ID}-case`, - RISK_INPUTS: `${APP_ID}-risk-inputs`, -} as const; - -export const DEFAULT_ALERT_TAGS_KEY = 'securitySolution:alertTags' as const; -export const DEFAULT_ALERT_TAGS_VALUE = [ - i18n.DUPLICATE, - i18n.FALSE_POSITIVE, - i18n.FURTHER_INVESTIGATION_REQUIRED, -] as const; - -/** - * Max length for the comments within security solution - */ -export const MAX_COMMENT_LENGTH = 30000 as const; - -/** - * Cases external attachment IDs - */ -export const CASE_ATTACHMENT_ENDPOINT_TYPE_ID = 'endpoint' as const; - -/** - * Rule gaps - */ -export const MAX_MANUAL_RULE_RUN_LOOKBACK_WINDOW_DAYS = 90; -export const MAX_MANUAL_RULE_RUN_BULK_SIZE = 100; - -/* - * Whether it is a Jest environment - */ -export const JEST_ENVIRONMENT = typeof jest !== 'undefined'; diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/constants.ts b/x-pack/plugins/security_solution/common/endpoint/service/response_actions/constants.ts deleted file mode 100644 index d60002d5a060c..0000000000000 --- a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/constants.ts +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { EndpointAuthzKeyList } from '../../types/authz'; - -export const RESPONSE_ACTION_STATUS = ['failed', 'pending', 'successful'] as const; -export type ResponseActionStatus = (typeof RESPONSE_ACTION_STATUS)[number]; - -export const RESPONSE_ACTION_TYPE = ['automated', 'manual'] as const; -export type ResponseActionType = (typeof RESPONSE_ACTION_TYPE)[number]; - -export const RESPONSE_ACTION_AGENT_TYPE = ['endpoint', 'sentinel_one', 'crowdstrike'] as const; -export type ResponseActionAgentType = (typeof RESPONSE_ACTION_AGENT_TYPE)[number]; - -/** - * The Command names that are used in the API payload for the `{ command: '' }` attribute - */ -export const RESPONSE_ACTION_API_COMMANDS_NAMES = [ - 'isolate', - 'unisolate', - 'kill-process', - 'suspend-process', - 'running-processes', - 'get-file', - 'execute', - 'upload', - 'scan', - 'runscript', -] as const; - -export type ResponseActionsApiCommandNames = (typeof RESPONSE_ACTION_API_COMMANDS_NAMES)[number]; - -export const ENABLED_AUTOMATED_RESPONSE_ACTION_COMMANDS: ResponseActionsApiCommandNames[] = [ - 'isolate', - // TODO: TC- Uncomment these when we go GA with automated process actions - // 'kill-process', - // 'suspend-process' -]; - -export type EnabledAutomatedResponseActionsCommands = - (typeof ENABLED_AUTOMATED_RESPONSE_ACTION_COMMANDS)[number]; - -/** - * The list of possible capabilities, reported by the endpoint in the metadata document - */ -export const ENDPOINT_CAPABILITIES = [ - 'isolation', - 'kill_process', - 'suspend_process', - 'running_processes', - 'get_file', - 'execute', - 'upload_file', - 'scan', - 'runscript', -] as const; - -export type EndpointCapabilities = (typeof ENDPOINT_CAPABILITIES)[number]; - -/** - * The list of possible console command names that generate a Response Action to be dispatched - * to the Endpoint. (FYI: not all console commands are response actions) - */ -export const CONSOLE_RESPONSE_ACTION_COMMANDS = [ - 'isolate', - 'release', - 'processes', - 'kill-process', - 'suspend-process', - 'get-file', - 'execute', - 'upload', - 'scan', - 'runscript', -] as const; - -export type ConsoleResponseActionCommands = (typeof CONSOLE_RESPONSE_ACTION_COMMANDS)[number]; - -export type ResponseConsoleRbacControls = - | 'writeHostIsolation' - | 'writeHostIsolationRelease' - | 'writeProcessOperations' - | 'writeFileOperations' - | 'writeExecuteOperations' - | 'writeScanOperations'; - -/** - * maps the console command to the RBAC control (kibana feature control) that is required to access it via console - */ -export const RESPONSE_CONSOLE_ACTION_COMMANDS_TO_RBAC_FEATURE_CONTROL: Record< - ConsoleResponseActionCommands, - ResponseConsoleRbacControls -> = Object.freeze({ - isolate: 'writeHostIsolation', - release: 'writeHostIsolationRelease', - 'kill-process': 'writeProcessOperations', - 'suspend-process': 'writeProcessOperations', - processes: 'writeProcessOperations', - 'get-file': 'writeFileOperations', - execute: 'writeExecuteOperations', - upload: 'writeFileOperations', - scan: 'writeScanOperations', - runscript: 'writeExecuteOperations', -}); - -export const RESPONSE_ACTION_API_COMMAND_TO_CONSOLE_COMMAND_MAP = Object.freeze< - Record<ResponseActionsApiCommandNames, ConsoleResponseActionCommands> ->({ - isolate: 'isolate', - unisolate: 'release', - execute: 'execute', - 'get-file': 'get-file', - 'running-processes': 'processes', - 'kill-process': 'kill-process', - 'suspend-process': 'suspend-process', - upload: 'upload', - scan: 'scan', - runscript: 'runscript', -}); - -export const RESPONSE_CONSOLE_COMMAND_TO_API_COMMAND_MAP = Object.freeze< - Record<ConsoleResponseActionCommands, ResponseActionsApiCommandNames> ->({ - isolate: 'isolate', - release: 'unisolate', - execute: 'execute', - 'get-file': 'get-file', - processes: 'running-processes', - 'kill-process': 'kill-process', - 'suspend-process': 'suspend-process', - upload: 'upload', - scan: 'scan', - runscript: 'runscript', -}); - -export const RESPONSE_CONSOLE_ACTION_COMMANDS_TO_ENDPOINT_CAPABILITY = Object.freeze< - Record<ConsoleResponseActionCommands, EndpointCapabilities> ->({ - isolate: 'isolation', - release: 'isolation', - execute: 'execute', - 'get-file': 'get_file', - processes: 'running_processes', - 'kill-process': 'kill_process', - 'suspend-process': 'suspend_process', - upload: 'upload_file', - scan: 'scan', - runscript: 'runscript', -}); - -/** - * The list of console commands mapped to the required EndpointAuthz to access that command - */ -export const RESPONSE_CONSOLE_ACTION_COMMANDS_TO_REQUIRED_AUTHZ = Object.freeze< - Record<ConsoleResponseActionCommands, EndpointAuthzKeyList[number]> ->({ - isolate: 'canIsolateHost', - release: 'canUnIsolateHost', - execute: 'canWriteExecuteOperations', - 'get-file': 'canWriteFileOperations', - upload: 'canWriteFileOperations', - processes: 'canGetRunningProcesses', - 'kill-process': 'canKillProcess', - 'suspend-process': 'canSuspendProcess', - scan: 'canWriteScanOperations', - runscript: 'canWriteExecuteOperations', -}); - -// 4 hrs in seconds -// 4 * 60 * 60 -export const DEFAULT_EXECUTE_ACTION_TIMEOUT = 14400; - -/** - * The passcodes used for accessing the content of a zip file (ex. from a `get-file` response action) - */ -export const RESPONSE_ACTIONS_ZIP_PASSCODE: Readonly<Record<ResponseActionAgentType, string>> = - Object.freeze({ - endpoint: 'elastic', - sentinel_one: 'Elastic@123', - crowdstrike: 'tbd..', - }); - -/** - * Map of Agent Type to alert fields that holds the Agent ID for that agent type. - * Multiple alert fields are supported since different data sources define the agent - * id in different paths. - * - * NOTE: there are utilities in `x-pack/plugins/security_solution/public/common/lib/endpoint/utils` - * that facilitate working with alert (ECS) fields to determine if the give event/alert supports - * response actions, including: - * - `getAgentTypeForAgentIdField()` - * - `getEventDetailsAgentIdField()` - * - `isResponseActionsAlertAgentIdField()` - */ -export const RESPONSE_ACTIONS_ALERT_AGENT_ID_FIELDS: Readonly< - Record<ResponseActionAgentType, string[]> -> = Object.freeze({ - endpoint: ['agent.id'], - sentinel_one: [ - 'sentinel_one.alert.agent.id', - 'sentinel_one.threat.agent.id', - 'sentinel_one.activity.agent.id', - 'sentinel_one.agent.agent.id', - ], - crowdstrike: ['device.id'], -}); - -export const SUPPORTED_AGENT_ID_ALERT_FIELDS: Readonly<string[]> = Object.values( - RESPONSE_ACTIONS_ALERT_AGENT_ID_FIELDS -).flat(); diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts b/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts deleted file mode 100644 index 0eda694aed24b..0000000000000 --- a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { INTERNAL_RISK_SCORE_URL, PUBLIC_RISK_SCORE_URL } from '../risk_score/constants'; -export const RISK_ENGINE_URL = `${INTERNAL_RISK_SCORE_URL}/engine` as const; -export const RISK_ENGINE_STATUS_URL = `${RISK_ENGINE_URL}/status` as const; -export const RISK_ENGINE_INIT_URL = `${RISK_ENGINE_URL}/init` as const; -export const RISK_ENGINE_ENABLE_URL = `${RISK_ENGINE_URL}/enable` as const; -export const RISK_ENGINE_DISABLE_URL = `${RISK_ENGINE_URL}/disable` as const; -export const RISK_ENGINE_PRIVILEGES_URL = `${RISK_ENGINE_URL}/privileges` as const; -export const RISK_ENGINE_SETTINGS_URL = `${RISK_ENGINE_URL}/settings` as const; - -// Public Risk Score routes -export const PUBLIC_RISK_ENGINE_URL = `${PUBLIC_RISK_SCORE_URL}/engine` as const; -export const RISK_ENGINE_SCHEDULE_NOW_URL = `${RISK_ENGINE_URL}/schedule_now` as const; -export const RISK_ENGINE_CLEANUP_URL = `${PUBLIC_RISK_ENGINE_URL}/dangerously_delete_data` as const; - -type ClusterPrivilege = 'manage_index_templates' | 'manage_transform'; -export const RISK_ENGINE_REQUIRED_ES_CLUSTER_PRIVILEGES = [ - 'manage_index_templates', - 'manage_transform', -] as ClusterPrivilege[]; - -export const RISK_SCORE_INDEX_PATTERN = 'risk-score.risk-score-*'; - -export type RiskEngineIndexPrivilege = 'read' | 'write'; - -export const RISK_ENGINE_REQUIRED_ES_INDEX_PRIVILEGES = Object.freeze({ - [RISK_SCORE_INDEX_PATTERN]: ['read', 'write'] as RiskEngineIndexPrivilege[], -}); diff --git a/x-pack/plugins/security_solution/common/jest.config.js b/x-pack/plugins/security_solution/common/jest.config.js deleted file mode 100644 index ee73875c3d5e9..0000000000000 --- a/x-pack/plugins/security_solution/common/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/common'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/common', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/common/**/*.{ts,tsx}'], - moduleNameMapper: require('../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/common/siem_migrations/constants.ts b/x-pack/plugins/security_solution/common/siem_migrations/constants.ts deleted file mode 100644 index e947dda4bbcc2..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/constants.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Severity } from '@kbn/securitysolution-io-ts-alerting-types'; - -export const SIEM_MIGRATIONS_PATH = '/internal/siem_migrations' as const; -export const SIEM_RULE_MIGRATIONS_PATH = `${SIEM_MIGRATIONS_PATH}/rules` as const; - -export const SIEM_RULE_MIGRATIONS_ALL_STATS_PATH = `${SIEM_RULE_MIGRATIONS_PATH}/stats` as const; -export const SIEM_RULE_MIGRATION_CREATE_PATH = - `${SIEM_RULE_MIGRATIONS_PATH}/{migration_id?}` as const; -export const SIEM_RULE_MIGRATION_PATH = `${SIEM_RULE_MIGRATIONS_PATH}/{migration_id}` as const; -export const SIEM_RULE_MIGRATION_START_PATH = `${SIEM_RULE_MIGRATION_PATH}/start` as const; -export const SIEM_RULE_MIGRATION_RETRY_PATH = `${SIEM_RULE_MIGRATION_PATH}/retry` as const; -export const SIEM_RULE_MIGRATION_STATS_PATH = `${SIEM_RULE_MIGRATION_PATH}/stats` as const; -export const SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH = - `${SIEM_RULE_MIGRATION_PATH}/translation_stats` as const; -export const SIEM_RULE_MIGRATION_STOP_PATH = `${SIEM_RULE_MIGRATION_PATH}/stop` as const; -export const SIEM_RULE_MIGRATION_INSTALL_PATH = `${SIEM_RULE_MIGRATION_PATH}/install` as const; -export const SIEM_RULE_MIGRATION_INSTALL_TRANSLATED_PATH = - `${SIEM_RULE_MIGRATION_PATH}/install_translated` as const; -export const SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH = - `${SIEM_RULE_MIGRATION_PATH}/prebuilt_rules` as const; - -export const SIEM_RULE_MIGRATION_RESOURCES_PATH = `${SIEM_RULE_MIGRATION_PATH}/resources` as const; - -export enum SiemMigrationTaskStatus { - READY = 'ready', - RUNNING = 'running', - STOPPED = 'stopped', - FINISHED = 'finished', -} - -export enum SiemMigrationStatus { - PENDING = 'pending', - PROCESSING = 'processing', - COMPLETED = 'completed', - FAILED = 'failed', -} - -export enum SiemMigrationRuleTranslationResult { - FULL = 'full', - PARTIAL = 'partial', - UNTRANSLATABLE = 'untranslatable', -} - -export const DEFAULT_TRANSLATION_RISK_SCORE = 21; -export const DEFAULT_TRANSLATION_SEVERITY: Severity = 'low'; - -export const DEFAULT_TRANSLATION_FIELDS = { - risk_score: DEFAULT_TRANSLATION_RISK_SCORE, - severity: DEFAULT_TRANSLATION_SEVERITY, - from: 'now-360s', - to: 'now', - interval: '5m', -} as const; diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts b/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts deleted file mode 100644 index 95a81d4436d8a..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts +++ /dev/null @@ -1,290 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * NOTICE: Do not edit this file manually. - * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. - * - * info: - * title: SIEM Rules Migration API - * version: 1 - */ - -import { z } from '@kbn/zod'; -import { ArrayFromString } from '@kbn/zod-helpers'; - -import { NonEmptyString } from '../../../../api/model/primitives.gen'; -import { - ElasticRulePartial, - RuleMigrationTranslationResult, - RuleMigrationComments, - RuleMigrationTaskStats, - OriginalRule, - RuleMigration, - RuleMigrationTranslationStats, - PrebuiltRuleVersion, - RuleMigrationResourceData, - RuleMigrationResourceType, - RuleMigrationResource, -} from '../../rule_migration.gen'; -import { ConnectorId, LangSmithOptions } from '../../common.gen'; - -export type CreateRuleMigrationRequestParams = z.infer<typeof CreateRuleMigrationRequestParams>; -export const CreateRuleMigrationRequestParams = z.object({ - migration_id: NonEmptyString.optional(), -}); -export type CreateRuleMigrationRequestParamsInput = z.input< - typeof CreateRuleMigrationRequestParams ->; - -export type CreateRuleMigrationRequestBody = z.infer<typeof CreateRuleMigrationRequestBody>; -export const CreateRuleMigrationRequestBody = z.array(OriginalRule); -export type CreateRuleMigrationRequestBodyInput = z.input<typeof CreateRuleMigrationRequestBody>; - -export type CreateRuleMigrationResponse = z.infer<typeof CreateRuleMigrationResponse>; -export const CreateRuleMigrationResponse = z.object({ - /** - * The migration id created. - */ - migration_id: NonEmptyString, -}); - -export type GetAllStatsRuleMigrationResponse = z.infer<typeof GetAllStatsRuleMigrationResponse>; -export const GetAllStatsRuleMigrationResponse = z.array(RuleMigrationTaskStats); -export type GetRuleMigrationRequestQuery = z.infer<typeof GetRuleMigrationRequestQuery>; -export const GetRuleMigrationRequestQuery = z.object({ - page: z.coerce.number().optional(), - per_page: z.coerce.number().optional(), - sort_field: NonEmptyString.optional(), - sort_direction: z.enum(['asc', 'desc']).optional(), - search_term: z.string().optional(), -}); -export type GetRuleMigrationRequestQueryInput = z.input<typeof GetRuleMigrationRequestQuery>; - -export type GetRuleMigrationRequestParams = z.infer<typeof GetRuleMigrationRequestParams>; -export const GetRuleMigrationRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type GetRuleMigrationRequestParamsInput = z.input<typeof GetRuleMigrationRequestParams>; - -export type GetRuleMigrationResponse = z.infer<typeof GetRuleMigrationResponse>; -export const GetRuleMigrationResponse = z.object({ - /** - * The total number of rules in migration. - */ - total: z.number(), - data: z.array(RuleMigration), -}); - -export type GetRuleMigrationPrebuiltRulesRequestParams = z.infer< - typeof GetRuleMigrationPrebuiltRulesRequestParams ->; -export const GetRuleMigrationPrebuiltRulesRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type GetRuleMigrationPrebuiltRulesRequestParamsInput = z.input< - typeof GetRuleMigrationPrebuiltRulesRequestParams ->; - -/** - * The map of prebuilt rules, with the rules id as a key - */ -export type GetRuleMigrationPrebuiltRulesResponse = z.infer< - typeof GetRuleMigrationPrebuiltRulesResponse ->; -export const GetRuleMigrationPrebuiltRulesResponse = z.object({}).catchall(PrebuiltRuleVersion); -export type GetRuleMigrationResourcesRequestQuery = z.infer< - typeof GetRuleMigrationResourcesRequestQuery ->; -export const GetRuleMigrationResourcesRequestQuery = z.object({ - type: RuleMigrationResourceType.optional(), - names: ArrayFromString(z.string()).optional(), -}); -export type GetRuleMigrationResourcesRequestQueryInput = z.input< - typeof GetRuleMigrationResourcesRequestQuery ->; - -export type GetRuleMigrationResourcesRequestParams = z.infer< - typeof GetRuleMigrationResourcesRequestParams ->; -export const GetRuleMigrationResourcesRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type GetRuleMigrationResourcesRequestParamsInput = z.input< - typeof GetRuleMigrationResourcesRequestParams ->; - -export type GetRuleMigrationResourcesResponse = z.infer<typeof GetRuleMigrationResourcesResponse>; -export const GetRuleMigrationResourcesResponse = z.array(RuleMigrationResource); - -export type GetRuleMigrationStatsRequestParams = z.infer<typeof GetRuleMigrationStatsRequestParams>; -export const GetRuleMigrationStatsRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type GetRuleMigrationStatsRequestParamsInput = z.input< - typeof GetRuleMigrationStatsRequestParams ->; - -export type GetRuleMigrationStatsResponse = z.infer<typeof GetRuleMigrationStatsResponse>; -export const GetRuleMigrationStatsResponse = RuleMigrationTaskStats; - -export type GetRuleMigrationTranslationStatsRequestParams = z.infer< - typeof GetRuleMigrationTranslationStatsRequestParams ->; -export const GetRuleMigrationTranslationStatsRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type GetRuleMigrationTranslationStatsRequestParamsInput = z.input< - typeof GetRuleMigrationTranslationStatsRequestParams ->; - -export type GetRuleMigrationTranslationStatsResponse = z.infer< - typeof GetRuleMigrationTranslationStatsResponse ->; -export const GetRuleMigrationTranslationStatsResponse = RuleMigrationTranslationStats; - -export type InstallMigrationRulesRequestParams = z.infer<typeof InstallMigrationRulesRequestParams>; -export const InstallMigrationRulesRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type InstallMigrationRulesRequestParamsInput = z.input< - typeof InstallMigrationRulesRequestParams ->; - -export type InstallMigrationRulesRequestBody = z.infer<typeof InstallMigrationRulesRequestBody>; -export const InstallMigrationRulesRequestBody = z.object({ - ids: z.array(NonEmptyString), - /** - * Indicates whether installed rules should be enabled - */ - enabled: z.boolean().optional(), -}); -export type InstallMigrationRulesRequestBodyInput = z.input< - typeof InstallMigrationRulesRequestBody ->; - -export type InstallMigrationRulesResponse = z.infer<typeof InstallMigrationRulesResponse>; -export const InstallMigrationRulesResponse = z.object({ - /** - * Indicates rules migrations have been installed. - */ - installed: z.boolean(), -}); - -export type InstallTranslatedMigrationRulesRequestParams = z.infer< - typeof InstallTranslatedMigrationRulesRequestParams ->; -export const InstallTranslatedMigrationRulesRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type InstallTranslatedMigrationRulesRequestParamsInput = z.input< - typeof InstallTranslatedMigrationRulesRequestParams ->; - -export type InstallTranslatedMigrationRulesResponse = z.infer< - typeof InstallTranslatedMigrationRulesResponse ->; -export const InstallTranslatedMigrationRulesResponse = z.object({ - /** - * Indicates rules migrations have been installed. - */ - installed: z.boolean(), -}); - -export type StartRuleMigrationRequestParams = z.infer<typeof StartRuleMigrationRequestParams>; -export const StartRuleMigrationRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type StartRuleMigrationRequestParamsInput = z.input<typeof StartRuleMigrationRequestParams>; - -export type StartRuleMigrationRequestBody = z.infer<typeof StartRuleMigrationRequestBody>; -export const StartRuleMigrationRequestBody = z.object({ - connector_id: ConnectorId, - langsmith_options: LangSmithOptions.optional(), -}); -export type StartRuleMigrationRequestBodyInput = z.input<typeof StartRuleMigrationRequestBody>; - -export type StartRuleMigrationResponse = z.infer<typeof StartRuleMigrationResponse>; -export const StartRuleMigrationResponse = z.object({ - /** - * Indicates the migration has been started. `false` means the migration does not need to be started. - */ - started: z.boolean(), -}); - -export type StopRuleMigrationRequestParams = z.infer<typeof StopRuleMigrationRequestParams>; -export const StopRuleMigrationRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type StopRuleMigrationRequestParamsInput = z.input<typeof StopRuleMigrationRequestParams>; - -export type StopRuleMigrationResponse = z.infer<typeof StopRuleMigrationResponse>; -export const StopRuleMigrationResponse = z.object({ - /** - * Indicates the migration has been stopped. - */ - stopped: z.boolean(), -}); - -export type UpdateRuleMigrationRequestBody = z.infer<typeof UpdateRuleMigrationRequestBody>; -export const UpdateRuleMigrationRequestBody = z.array( - z.object({ - /** - * The rule migration id - */ - id: NonEmptyString, - /** - * The migrated elastic rule attributes to update. - */ - elastic_rule: ElasticRulePartial.optional(), - /** - * The rule translation result. - */ - translation_result: RuleMigrationTranslationResult.optional(), - /** - * The comments for the migration including a summary from the LLM in markdown. - */ - comments: RuleMigrationComments.optional(), - }) -); -export type UpdateRuleMigrationRequestBodyInput = z.input<typeof UpdateRuleMigrationRequestBody>; - -export type UpdateRuleMigrationResponse = z.infer<typeof UpdateRuleMigrationResponse>; -export const UpdateRuleMigrationResponse = z.object({ - /** - * Indicates rules migrations have been updated. - */ - updated: z.boolean(), -}); - -export type UpsertRuleMigrationResourcesRequestParams = z.infer< - typeof UpsertRuleMigrationResourcesRequestParams ->; -export const UpsertRuleMigrationResourcesRequestParams = z.object({ - migration_id: NonEmptyString, -}); -export type UpsertRuleMigrationResourcesRequestParamsInput = z.input< - typeof UpsertRuleMigrationResourcesRequestParams ->; - -export type UpsertRuleMigrationResourcesRequestBody = z.infer< - typeof UpsertRuleMigrationResourcesRequestBody ->; -export const UpsertRuleMigrationResourcesRequestBody = z.array(RuleMigrationResourceData); -export type UpsertRuleMigrationResourcesRequestBodyInput = z.input< - typeof UpsertRuleMigrationResourcesRequestBody ->; - -export type UpsertRuleMigrationResourcesResponse = z.infer< - typeof UpsertRuleMigrationResourcesResponse ->; -export const UpsertRuleMigrationResourcesResponse = z.object({ - /** - * The request has been processed correctly. - */ - acknowledged: z.boolean(), -}); diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml b/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml deleted file mode 100644 index b7e495e2ea898..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml +++ /dev/null @@ -1,484 +0,0 @@ -openapi: 3.0.3 -info: - title: SIEM Rules Migration API - version: '1' -paths: - # Rule migrations APIs - /internal/siem_migrations/rules: - put: - summary: Updates rules migrations - operationId: UpdateRuleMigration - x-codegen-enabled: true - x-internal: true - description: Updates rules migrations attributes - tags: - - SIEM Rule Migrations - requestBody: - required: true - content: - application/json: - schema: - type: array - items: - type: object - required: - - id - properties: - id: - description: The rule migration id - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - elastic_rule: - description: The migrated elastic rule attributes to update. - $ref: '../../rule_migration.schema.yaml#/components/schemas/ElasticRulePartial' - translation_result: - description: The rule translation result. - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationTranslationResult' - comments: - description: The comments for the migration including a summary from the LLM in markdown. - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationComments' - responses: - 200: - description: Indicates rules migrations have been updated correctly. - content: - application/json: - schema: - type: object - required: - - updated - properties: - updated: - type: boolean - description: Indicates rules migrations have been updated. - - /internal/siem_migrations/rules/stats: - get: - summary: Retrieves the stats for all rule migrations - operationId: GetAllStatsRuleMigration - x-codegen-enabled: true - x-internal: true - description: Retrieves the rule migrations stats for all migrations stored in the system - tags: - - SIEM Rule Migrations - responses: - 200: - description: Indicates rule migrations have been retrieved correctly. - content: - application/json: - schema: - type: array - items: - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationTaskStats' - - ## Specific rule migration APIs - - /internal/siem_migrations/rules/{migration_id}: - post: - summary: Creates a new rule migration - operationId: CreateRuleMigration - x-codegen-enabled: true - x-internal: true - description: Creates a new SIEM rules migration using the original vendor rules provided - tags: - - SIEM Rule Migrations - parameters: - - name: migration_id - in: path - required: false - schema: - description: The migration id to create rules for - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - requestBody: - required: true - content: - application/json: - schema: - type: array - items: - $ref: '../../rule_migration.schema.yaml#/components/schemas/OriginalRule' - responses: - 200: - description: Indicates migration have been created correctly. - content: - application/json: - schema: - type: object - required: - - migration_id - properties: - migration_id: - description: The migration id created. - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - get: - summary: Retrieves all the rules of a migration - operationId: GetRuleMigration - x-codegen-enabled: true - x-internal: true - description: Retrieves the rule documents stored in the system given the rule migration id - tags: - - SIEM Rule Migrations - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to start - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - - name: page - in: query - required: false - schema: - type: number - - name: per_page - in: query - required: false - schema: - type: number - - name: sort_field - in: query - required: false - schema: - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - - name: sort_direction - in: query - required: false - schema: - type: string - enum: - - asc - - desc - - name: search_term - in: query - required: false - schema: - type: string - - responses: - 200: - description: Indicates rule migration have been retrieved correctly. - content: - application/json: - schema: - type: object - required: - - total - - data - properties: - total: - type: number - description: The total number of rules in migration. - data: - type: array - items: - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigration' - 204: - description: Indicates the migration id was not found. - - /internal/siem_migrations/rules/{migration_id}/install: - post: - summary: Installs translated migration rules - operationId: InstallMigrationRules - x-codegen-enabled: true - description: Installs migration rules - tags: - - SIEM Rule Migrations - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to install rules for - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - requestBody: - required: true - content: - application/json: - schema: - type: object - required: - - ids - properties: - ids: - type: array - items: - description: The rule migration id - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - enabled: - type: boolean - description: Indicates whether installed rules should be enabled - responses: - 200: - description: Indicates rules migrations have been installed correctly. - content: - application/json: - schema: - type: object - required: - - installed - properties: - installed: - type: boolean - description: Indicates rules migrations have been installed. - - /internal/siem_migrations/rules/{migration_id}/install_translated: - post: - summary: Installs all translated migration rules - operationId: InstallTranslatedMigrationRules - x-codegen-enabled: true - description: Installs all translated migration rules - tags: - - SIEM Rule Migrations - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to install translated rules for - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - responses: - 200: - description: Indicates rules migrations have been installed correctly. - content: - application/json: - schema: - type: object - required: - - installed - properties: - installed: - type: boolean - description: Indicates rules migrations have been installed. - - /internal/siem_migrations/rules/{migration_id}/start: - put: - summary: Starts a rule migration - operationId: StartRuleMigration - x-codegen-enabled: true - x-internal: true - description: Starts a SIEM rules migration using the migration id provided - tags: - - SIEM Rule Migrations - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to start - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - requestBody: - required: true - content: - application/json: - schema: - type: object - required: - - connector_id - properties: - connector_id: - $ref: '../../common.schema.yaml#/components/schemas/ConnectorId' - langsmith_options: - $ref: '../../common.schema.yaml#/components/schemas/LangSmithOptions' - responses: - 200: - description: Indicates the migration start request has been processed successfully. - content: - application/json: - schema: - type: object - required: - - started - properties: - started: - type: boolean - description: Indicates the migration has been started. `false` means the migration does not need to be started. - 204: - description: Indicates the migration id was not found. - - /internal/siem_migrations/rules/{migration_id}/stats: - get: - summary: Gets a rule migration task stats - operationId: GetRuleMigrationStats - x-codegen-enabled: true - x-internal: true - description: Retrieves the stats of a SIEM rules migration using the migration id provided - tags: - - SIEM Rule Migrations - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to fetch stats for - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - responses: - 200: - description: Indicates the migration stats has been retrieved correctly. - content: - application/json: - schema: - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationTaskStats' - 204: - description: Indicates the migration id was not found. - - /internal/siem_migrations/rules/{migration_id}/translation_stats: - get: - summary: Gets a rule migration translation stats - operationId: GetRuleMigrationTranslationStats - x-codegen-enabled: true - description: Retrieves the translation stats of a SIEM rules migration using the migration id provided - tags: - - SIEM Rule Migrations - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to fetch translation stats for - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - responses: - 200: - description: Indicates the migration stats has been retrieved correctly. - content: - application/json: - schema: - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationTranslationStats' - 204: - description: Indicates the migration id was not found. - - /internal/siem_migrations/rules/{migration_id}/stop: - put: - summary: Stops an existing rule migration - operationId: StopRuleMigration - x-codegen-enabled: true - x-internal: true - description: Stops a running SIEM rules migration using the migration id provided - tags: - - SIEM Rule Migrations - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to stop - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - responses: - 200: - description: Indicates migration task stop has been processed successfully. - content: - application/json: - schema: - type: object - required: - - stopped - properties: - stopped: - type: boolean - description: Indicates the migration has been stopped. - 204: - description: Indicates the migration id was not found running. - - /internal/siem_migrations/rules/{migration_id}/prebuilt_rules: - get: - summary: Retrieves all prebuilt rules for a specific migration - operationId: GetRuleMigrationPrebuiltRules - x-codegen-enabled: true - x-internal: true - description: Retrieves all available prebuilt rules (installed and installable) - tags: - - SIEM Rule Migrations - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to retrieve prebuilt rules for - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - responses: - 200: - description: Indicates prebuilt rules have been retrieved correctly. - content: - application/json: - schema: - type: object - description: The map of prebuilt rules, with the rules id as a key - additionalProperties: - $ref: '../../rule_migration.schema.yaml#/components/schemas/PrebuiltRuleVersion' - - # Rule migration resources APIs - - /internal/siem_migrations/rules/{migration_id}/resources: - post: - summary: Creates or updates rule migration resources for a migration - operationId: UpsertRuleMigrationResources - x-codegen-enabled: true - x-internal: true - description: Creates or updates resources for an existing SIEM rules migration - tags: - - SIEM Rule Migrations - - Resources - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to attach the resources - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - requestBody: - required: true - content: - application/json: - schema: - type: array - items: - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationResourceData' - responses: - 200: - description: Indicates migration resources have been created or updated correctly. - content: - application/json: - schema: - type: object - required: - - acknowledged - properties: - acknowledged: - type: boolean - description: The request has been processed correctly. - - get: - summary: Gets rule migration resources for a migration - operationId: GetRuleMigrationResources - x-codegen-enabled: true - x-internal: true - description: Retrieves resources for an existing SIEM rules migration - tags: - - SIEM Rule Migrations - - Resources - parameters: - - name: migration_id - in: path - required: true - schema: - description: The migration id to attach the resources - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - - name: type - in: query - required: false - schema: - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationResourceType' - - name: names - in: query - required: false - schema: - type: array - description: The names of the resource to retrieve - items: - type: string - responses: - 200: - description: Indicates migration resources have been retrieved correctly - content: - application/json: - schema: - type: array - items: - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationResource' diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts b/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts deleted file mode 100644 index 60220bf054a12..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts +++ /dev/null @@ -1,357 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * NOTICE: Do not edit this file manually. - * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. - * - * info: - * title: SIEM Rule Migration components - * version: not applicable - */ - -import { z } from '@kbn/zod'; - -import { NonEmptyString } from '../../api/model/primitives.gen'; -import { RuleResponse } from '../../api/detection_engine/model/rule_schema/rule_schemas.gen'; - -/** - * The original rule vendor identifier. - */ -export type OriginalRuleVendor = z.infer<typeof OriginalRuleVendor>; -export const OriginalRuleVendor = z.literal('splunk'); - -/** - * The original rule annotations containing additional information. - */ -export type OriginalRuleAnnotations = z.infer<typeof OriginalRuleAnnotations>; -export const OriginalRuleAnnotations = z - .object({ - /** - * The original rule Mitre Attack IDs. - */ - mitre_attack: z.array(z.string()).optional(), - }) - .catchall(z.unknown()); - -/** - * The original rule to migrate. - */ -export type OriginalRule = z.infer<typeof OriginalRule>; -export const OriginalRule = z.object({ - /** - * The original rule id. - */ - id: NonEmptyString, - /** - * The original rule vendor identifier. - */ - vendor: OriginalRuleVendor, - /** - * The original rule name. - */ - title: NonEmptyString, - /** - * The original rule description. - */ - description: z.string(), - /** - * The original rule query. - */ - query: z.string().min(1), - /** - * The original rule query language. - */ - query_language: z.string(), - /** - * The original rule annotations containing additional information. - */ - annotations: OriginalRuleAnnotations.optional(), -}); - -/** - * The migrated elastic rule. - */ -export type ElasticRule = z.infer<typeof ElasticRule>; -export const ElasticRule = z.object({ - /** - * The migrated rule title. - */ - title: z.string(), - /** - * The migrated rule description. - */ - description: z.string().optional(), - /** - * The migrated rule severity. - */ - severity: z.string().optional(), - /** - * The translated elastic query. - */ - query: z.string().optional(), - /** - * The translated elastic query language. - */ - query_language: z.literal('esql').optional(), - /** - * The Elastic prebuilt rule id matched. - */ - prebuilt_rule_id: NonEmptyString.optional(), - /** - * The Elastic integration IDs related to the rule. - */ - integration_ids: z.array(z.string()).optional(), - /** - * The Elastic rule id installed as a result. - */ - id: NonEmptyString.optional(), -}); - -/** - * The partial version of the migrated elastic rule. - */ -export type ElasticRulePartial = z.infer<typeof ElasticRulePartial>; -export const ElasticRulePartial = ElasticRule.partial(); - -/** - * The prebuilt rule version. - */ -export type PrebuiltRuleVersion = z.infer<typeof PrebuiltRuleVersion>; -export const PrebuiltRuleVersion = z.object({ - /** - * The latest available version of prebuilt rule. - */ - target: RuleResponse, - /** - * The currently installed version of prebuilt rule. - */ - current: RuleResponse.optional(), -}); - -/** - * The rule translation result. - */ -export type RuleMigrationTranslationResult = z.infer<typeof RuleMigrationTranslationResult>; -export const RuleMigrationTranslationResult = z.enum(['full', 'partial', 'untranslatable']); -export type RuleMigrationTranslationResultEnum = typeof RuleMigrationTranslationResult.enum; -export const RuleMigrationTranslationResultEnum = RuleMigrationTranslationResult.enum; - -/** - * The status of each rule migration. - */ -export type RuleMigrationStatus = z.infer<typeof RuleMigrationStatus>; -export const RuleMigrationStatus = z.enum(['pending', 'processing', 'completed', 'failed']); -export type RuleMigrationStatusEnum = typeof RuleMigrationStatus.enum; -export const RuleMigrationStatusEnum = RuleMigrationStatus.enum; - -/** - * The comments for the migration including a summary from the LLM in markdown. - */ -export type RuleMigrationComments = z.infer<typeof RuleMigrationComments>; -export const RuleMigrationComments = z.array(z.string()); - -/** - * The rule migration document object. - */ -export type RuleMigrationData = z.infer<typeof RuleMigrationData>; -export const RuleMigrationData = z.object({ - /** - * The moment of creation - */ - '@timestamp': z.string(), - /** - * The migration id. - */ - migration_id: NonEmptyString, - /** - * The username of the user who created the migration. - */ - created_by: NonEmptyString, - /** - * The original rule to migrate. - */ - original_rule: OriginalRule, - /** - * The migrated elastic rule. - */ - elastic_rule: ElasticRule.optional(), - /** - * The rule translation result. - */ - translation_result: RuleMigrationTranslationResult.optional(), - /** - * The status of the rule migration process. - */ - status: RuleMigrationStatus.default('pending'), - /** - * The comments for the migration including a summary from the LLM in markdown. - */ - comments: RuleMigrationComments.optional(), - /** - * The moment of the last update - */ - updated_at: z.string().optional(), - /** - * The user who last updated the migration - */ - updated_by: z.string().optional(), -}); - -/** - * The rule migration document object. - */ -export type RuleMigration = z.infer<typeof RuleMigration>; -export const RuleMigration = z - .object({ - /** - * The rule migration id - */ - id: NonEmptyString, - }) - .merge(RuleMigrationData); - -/** - * The status of the migration task. - */ -export type RuleMigrationTaskStatus = z.infer<typeof RuleMigrationTaskStatus>; -export const RuleMigrationTaskStatus = z.enum(['ready', 'running', 'stopped', 'finished']); -export type RuleMigrationTaskStatusEnum = typeof RuleMigrationTaskStatus.enum; -export const RuleMigrationTaskStatusEnum = RuleMigrationTaskStatus.enum; - -/** - * The rule migration task stats object. - */ -export type RuleMigrationTaskStats = z.infer<typeof RuleMigrationTaskStats>; -export const RuleMigrationTaskStats = z.object({ - /** - * The migration id - */ - id: NonEmptyString, - /** - * Indicates if the migration task status. - */ - status: RuleMigrationTaskStatus, - /** - * The rules migration stats. - */ - rules: z.object({ - /** - * The total number of rules to migrate. - */ - total: z.number().int(), - /** - * The number of rules that are pending migration. - */ - pending: z.number().int(), - /** - * The number of rules that are being migrated. - */ - processing: z.number().int(), - /** - * The number of rules that have been migrated successfully. - */ - completed: z.number().int(), - /** - * The number of rules that have failed migration. - */ - failed: z.number().int(), - }), - /** - * The moment the migration was created. - */ - created_at: z.string(), - /** - * The moment of the last update. - */ - last_updated_at: z.string(), -}); - -/** - * The rule migration translation stats object. - */ -export type RuleMigrationTranslationStats = z.infer<typeof RuleMigrationTranslationStats>; -export const RuleMigrationTranslationStats = z.object({ - /** - * The migration id - */ - id: NonEmptyString, - /** - * The rules migration translation stats. - */ - rules: z.object({ - /** - * The total number of rules to migrate. - */ - total: z.number().int(), - /** - * The number of rules that matched Elastic prebuilt rules. - */ - prebuilt: z.number().int(), - /** - * The number of rules that did not match Elastic prebuilt rules and will be installed as custom rules. - */ - custom: z.number().int(), - /** - * The number of rules that can be installed. - */ - installable: z.number().int(), - }), -}); - -/** - * The type of the rule migration resource. - */ -export type RuleMigrationResourceType = z.infer<typeof RuleMigrationResourceType>; -export const RuleMigrationResourceType = z.enum(['macro', 'list']); -export type RuleMigrationResourceTypeEnum = typeof RuleMigrationResourceType.enum; -export const RuleMigrationResourceTypeEnum = RuleMigrationResourceType.enum; - -/** - * The rule migration resource data provided by the vendor. - */ -export type RuleMigrationResourceData = z.infer<typeof RuleMigrationResourceData>; -export const RuleMigrationResourceData = z.object({ - type: RuleMigrationResourceType, - /** - * The resource name identifier. - */ - name: z.string(), - /** - * The resource content value. - */ - content: z.string(), - /** - * The resource arbitrary metadata. - */ - metadata: z.object({}).optional(), -}); - -/** - * The rule migration resource document object. - */ -export type RuleMigrationResource = z.infer<typeof RuleMigrationResource>; -export const RuleMigrationResource = RuleMigrationResourceData.merge( - z.object({ - /** - * The rule resource migration id - */ - id: NonEmptyString, - /** - * The migration id - */ - migration_id: NonEmptyString, - /** - * The moment of the last update - */ - updated_at: z.string().optional(), - /** - * The user who last updated the resource - */ - updated_by: z.string().optional(), - }) -); diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml b/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml deleted file mode 100644 index e13e9b1d0ed75..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml +++ /dev/null @@ -1,328 +0,0 @@ -openapi: 3.0.3 -info: - title: SIEM Rule Migration components - version: 'not applicable' -paths: {} -components: - x-codegen-enabled: true - schemas: - OriginalRuleVendor: - type: string - description: The original rule vendor identifier. - enum: - - splunk - - OriginalRuleAnnotations: - type: object - description: The original rule annotations containing additional information. - additionalProperties: true - properties: - mitre_attack: - type: array - description: The original rule Mitre Attack IDs. - items: - type: string - - OriginalRule: - type: object - description: The original rule to migrate. - required: - - id - - vendor - - title - - description - - query - - query_language - properties: - id: - description: The original rule id. - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - vendor: - description: The original rule vendor identifier. - $ref: '#/components/schemas/OriginalRuleVendor' - title: - description: The original rule name. - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - description: - type: string - description: The original rule description. - query: - type: string - minLength: 1 - description: The original rule query. - query_language: - type: string - description: The original rule query language. - annotations: - description: The original rule annotations containing additional information. - $ref: '#/components/schemas/OriginalRuleAnnotations' - - ElasticRule: - type: object - description: The migrated elastic rule. - required: - - title - properties: - title: - type: string - description: The migrated rule title. - description: - type: string - description: The migrated rule description. - severity: - type: string - description: The migrated rule severity. - query: - type: string - description: The translated elastic query. - query_language: - type: string - description: The translated elastic query language. - enum: - - esql - prebuilt_rule_id: - description: The Elastic prebuilt rule id matched. - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - integration_ids: - type: array - items: - type: string - description: The Elastic integration IDs related to the rule. - id: - description: The Elastic rule id installed as a result. - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - - ElasticRulePartial: - description: The partial version of the migrated elastic rule. - $ref: '#/components/schemas/ElasticRule' - x-modify: partial - - PrebuiltRuleVersion: - type: object - description: The prebuilt rule version. - required: - - target - properties: - target: - description: The latest available version of prebuilt rule. - $ref: '../../../common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml#/components/schemas/RuleResponse' - current: - description: The currently installed version of prebuilt rule. - $ref: '../../../common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml#/components/schemas/RuleResponse' - - RuleMigration: - description: The rule migration document object. - allOf: - - type: object - required: - - id - properties: - id: - description: The rule migration id - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - - $ref: '#/components/schemas/RuleMigrationData' - - RuleMigrationData: - type: object - description: The rule migration document object. - required: - - '@timestamp' - - migration_id - - original_rule - - status - - created_by - properties: - '@timestamp': - type: string - description: The moment of creation - migration_id: - description: The migration id. - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - created_by: - description: The username of the user who created the migration. - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - original_rule: - description: The original rule to migrate. - $ref: '#/components/schemas/OriginalRule' - elastic_rule: - description: The migrated elastic rule. - $ref: '#/components/schemas/ElasticRule' - translation_result: - description: The rule translation result. - $ref: '#/components/schemas/RuleMigrationTranslationResult' - status: - description: The status of the rule migration process. - $ref: '#/components/schemas/RuleMigrationStatus' - default: pending - comments: - description: The comments for the migration including a summary from the LLM in markdown. - $ref: '#/components/schemas/RuleMigrationComments' - updated_at: - type: string - description: The moment of the last update - updated_by: - type: string - description: The user who last updated the migration - - RuleMigrationTaskStats: - type: object - description: The rule migration task stats object. - required: - - id - - status - - rules - - created_at - - last_updated_at - properties: - id: - description: The migration id - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - status: - description: Indicates if the migration task status. - $ref: '#/components/schemas/RuleMigrationTaskStatus' - rules: - type: object - description: The rules migration stats. - required: - - total - - pending - - processing - - completed - - failed - properties: - total: - type: integer - description: The total number of rules to migrate. - pending: - type: integer - description: The number of rules that are pending migration. - processing: - type: integer - description: The number of rules that are being migrated. - completed: - type: integer - description: The number of rules that have been migrated successfully. - failed: - type: integer - description: The number of rules that have failed migration. - created_at: - type: string - description: The moment the migration was created. - last_updated_at: - type: string - description: The moment of the last update. - - RuleMigrationTaskStatus: - type: string - description: The status of the migration task. - enum: # should match SiemMigrationTaskStatus enum at ../constants.ts - - ready - - running - - stopped - - finished - - RuleMigrationTranslationStats: - type: object - description: The rule migration translation stats object. - required: - - id - - rules - properties: - id: - description: The migration id - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - rules: - type: object - description: The rules migration translation stats. - required: - - total - - prebuilt - - custom - - installable - properties: - total: - type: integer - description: The total number of rules to migrate. - prebuilt: - type: integer - description: The number of rules that matched Elastic prebuilt rules. - custom: - type: integer - description: The number of rules that did not match Elastic prebuilt rules and will be installed as custom rules. - installable: - type: integer - description: The number of rules that can be installed. - - RuleMigrationTranslationResult: - type: string - description: The rule translation result. - enum: # should match SiemMigrationRuleTranslationResult enum at ../constants.ts - - full - - partial - - untranslatable - - RuleMigrationStatus: - type: string - description: The status of each rule migration. - enum: # should match SiemMigrationsStatus enum at ../constants.ts - - pending - - processing - - completed - - failed - - RuleMigrationComments: - type: array - description: The comments for the migration including a summary from the LLM in markdown. - items: - type: string - - ## Rule migration resources - - RuleMigrationResourceType: - type: string - description: The type of the rule migration resource. - enum: - - macro # Reusable part a query that can be customized and called from multiple rules - - list # A list of values that can be used inside queries reused in different rules - - RuleMigrationResourceData: - type: object - description: The rule migration resource data provided by the vendor. - required: - - type - - name - - content - properties: - type: - $ref: '#/components/schemas/RuleMigrationResourceType' - name: - type: string - description: The resource name identifier. - content: - type: string - description: The resource content value. - metadata: - type: object - description: The resource arbitrary metadata. - - RuleMigrationResource: - description: The rule migration resource document object. - allOf: - - $ref: '#/components/schemas/RuleMigrationResourceData' - - type: object - required: - - id - - migration_id - properties: - id: - description: The rule resource migration id - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - migration_id: - description: The migration id - $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - updated_at: - type: string - description: The moment of the last update - updated_by: - type: string - description: The user who last updated the resource diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/index.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/index.ts deleted file mode 100644 index ffe4b3aca4076..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { OriginalRule, OriginalRuleVendor } from '../../model/rule_migration.gen'; -import type { QueryResourceIdentifier, RuleResourceCollection } from './types'; -import { splResourceIdentifier } from './splunk_identifier'; - -export const getRuleResourceIdentifier = (rule: OriginalRule): QueryResourceIdentifier => { - return ruleResourceIdentifiers[rule.vendor]; -}; - -export const identifyRuleResources = (rule: OriginalRule): RuleResourceCollection => { - return getRuleResourceIdentifier(rule)(rule.query); -}; - -const ruleResourceIdentifiers: Record<OriginalRuleVendor, QueryResourceIdentifier> = { - splunk: splResourceIdentifier, -}; diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.test.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.test.ts deleted file mode 100644 index 2fa3be223aa67..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.test.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { splResourceIdentifier } from './splunk_identifier'; - -describe('splResourceIdentifier', () => { - it('should extract macros correctly', () => { - const query = - '`macro_zero`, `macro_one(arg1)`, some search command `macro_two(arg1, arg2)` another command `macro_three(arg1, arg2, arg3)`'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_zero', 'macro_one(1)', 'macro_two(2)', 'macro_three(3)']); - expect(result.list).toEqual([]); - }); - - it('should extract lookup tables correctly', () => { - const query = - 'search ... | lookup my_lookup_table field AS alias OUTPUT new_field | inputlookup other_lookup_list | lookup third_lookup'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual([]); - expect(result.list).toEqual(['my_lookup_table', 'other_lookup_list', 'third_lookup']); - }); - - it('should extract both macros and lookup tables correctly', () => { - const query = - '`macro_one` some search command | lookup my_lookup_table field AS alias OUTPUT new_field | inputlookup other_lookup_list | lookup third_lookup'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one']); - expect(result.list).toEqual(['my_lookup_table', 'other_lookup_list', 'third_lookup']); - }); - - it('should return empty arrays if no macros or lookup tables are found', () => { - const query = 'search | stats count'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual([]); - expect(result.list).toEqual([]); - }); - - it('should handle queries with both macros and lookup tables mixed with other commands', () => { - const query = - 'search `macro_one` | `my_lookup_table` field AS alias myfakelookup new_field | inputlookup real_lookup_list | `third_macro`'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one', 'my_lookup_table', 'third_macro']); - expect(result.list).toEqual(['real_lookup_list']); - }); - - it('should ignore macros or lookup tables inside string literals with double quotes', () => { - const query = - '`macro_one` | lookup my_lookup_table | search title="`macro_two` and lookup another_table"'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one']); - expect(result.list).toEqual(['my_lookup_table']); - }); - - it('should ignore macros or lookup tables inside string literals with single quotes', () => { - const query = - "`macro_one` | lookup my_lookup_table | search title='`macro_two` and lookup another_table'"; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one']); - expect(result.list).toEqual(['my_lookup_table']); - }); - - it('should ignore macros or lookup tables inside comments wrapped by ```', () => { - const query = - '`macro_one` | ```this is a comment with `macro_two` and lookup another_table``` lookup my_lookup_table'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one']); - expect(result.list).toEqual(['my_lookup_table']); - }); -}); diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.ts deleted file mode 100644 index fa46fff941c6b..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/** - * Important: - * This library uses regular expressions that are executed against arbitrary user input, they need to be safe from ReDoS attacks. - * Please make sure to test them before using them in production. - * At the time of writing, this tool can be used to test it: https://devina.io/redos-checker - */ - -import type { QueryResourceIdentifier } from './types'; - -const listRegex = /\b(?:lookup|inputlookup)\s+([\w-]+)\b/g; // Captures only the lookup table name -const macrosRegex = /`([\w-]+)(?:\(([^`]*?)\))?`/g; // Captures only the macro name and arguments - -const commentRegex = /```.*```/g; -const doubleQuoteStrRegex = /".*"/g; -const singleQuoteStrRegex = /'.*'/g; - -export const splResourceIdentifier: QueryResourceIdentifier = (query) => { - // sanitize the query to avoid mismatching macro and list names inside comments or literal strings - const sanitizedQuery = query - .replaceAll(commentRegex, '') - .replaceAll(doubleQuoteStrRegex, '"literal"') - .replaceAll(singleQuoteStrRegex, "'literal'"); - - const macro = []; - let macroMatch; - while ((macroMatch = macrosRegex.exec(sanitizedQuery)) !== null) { - const macroName = macroMatch[1]; - const args = macroMatch[2]; // This captures the content inside the parentheses - const argCount = args ? args.split(',').length : 0; // Count arguments if present - const macroWithArgs = argCount > 0 ? `${macroName}(${argCount})` : macroName; - macro.push(macroWithArgs); - } - - const list = []; - let listMatch; - while ((listMatch = listRegex.exec(sanitizedQuery)) !== null) { - list.push(listMatch[1]); - } - - return { macro, list }; -}; diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/types.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/types.ts deleted file mode 100644 index 93f6f3ad3db17..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/types.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { RuleMigrationResourceType } from '../../model/rule_migration.gen'; - -export type RuleResourceCollection = Record<RuleMigrationResourceType, string[]>; -export type QueryResourceIdentifier = (query: string) => RuleResourceCollection; diff --git a/x-pack/plugins/security_solution/docs/openapi/README.md b/x-pack/plugins/security_solution/docs/openapi/README.md deleted file mode 100644 index fd145ed8c292b..0000000000000 --- a/x-pack/plugins/security_solution/docs/openapi/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Security Solution API reference documentation - -Documentation about Security Solution OpenAPI bundling workflow and configuration. See [Kibana wide docs](../../../../../oas_docs/README.md) for general information. - -## Workflow - -Security Solution uses **specification first approach**. It means we define OpenAPI spec files describing individual API endpoints (also known as source OpenAPI specs) at first. After that we use tooling in particular [`kbn-openapi-bundler`](../../../../../packages/kbn-openapi-bundler/README.md) to process source OpenAPI specs to produce domain OpenAPI bundles. - -The workflow consists of multiple steps and visualized below - -![workflow diagram](workflow.png) - -This document describes **step 0** implemented on Security Solution's side. - -#### Bundling automation (CI integration) - -Bundling Security Solution domain OpenAPI bundles is **Step 0** of the workflow. To keep the domain OpenAPI bundles always up-to-date and in sync with the source OpenAPI specs, the bundling runs as part of the `Checks` step in CI on every PR build and on merge builds. If there are any changes to the source OpenAPI files, these changes get propagated to the domain OpenAPI bundles and CI commits the changes. In that case the build is marked as failed and needs to be restarted. - -### API Domains - -Security Solution has multiple API domains scattered across Kibana. Currently the following API domains are handled in the workflow: - -- Security AI Assistant - - - Bundling script: `x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/bundle.js` - - Bundles location: `x-pack/packages/kbn-elastic-assistant-common/docs/openapi/{ess|serverless}` - -- Security Detections - - - Bundling script: `x-pack/plugins/security_solution/scripts/openapi/bundle_detections.js` - - Bundles location: `x-pack/plugins/security_solution/docs/openapi/{ess|serverless}` - -- Security Endpoint Exceptions - - - Bundling script: `packages/kbn-securitysolution-endpoint-exceptions-common/scripts/openapi_bundle.js` - - Bundles location: `packages/kbn-securitysolution-endpoint-exceptions-common/docs/openapi/{ess|serverless}` - -- Security Endpoint Management - - - Bundling script: `x-pack/plugins/security_solution/scripts/openapi/bundle_endpoint_management.js` - - Bundles location: `x-pack/plugins/security_solution/docs/openapi/{ess|serverless}` - -- Security Endpoint Management - - - Bundling script: `x-pack/plugins/security_solution/scripts/openapi/bundle_entity_analytics.js` - - Bundles location: `x-pack/plugins/security_solution/docs/openapi/{ess|serverless}` - -- Security Security Exceptions - - - Bundling script: `packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js` - - Bundles location: `packages/kbn-securitysolution-exceptions-common/docs/openapi/{ess|serverless}` - -- Security Lists - - - Bundling script: `packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js` - - Bundles location: `packages/kbn-securitysolution-lists-common/docs/openapi/{ess|serverless}` - -- Security Osquery - - - Bundling script: `x-pack/plugins/osquery/scripts/openapi/bundle.js` - - Bundles location: `x-pack/plugins/osquery/docs/openapi/{ess|serverless}` - -- Security Timeline - - - Bundling script: `x-pack/plugins/security_solution/scripts/openapi/bundle_timeline.js` - - Bundles location: `x-pack/plugins/security_solution/docs/openapi/{ess|serverless}` diff --git a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml b/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml deleted file mode 100644 index dfc824035575d..0000000000000 --- a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml +++ /dev/null @@ -1,7118 +0,0 @@ -openapi: 3.0.3 -info: - description: >- - You can create rules that automatically turn events and external alerts sent - to Elastic Security into detection alerts. These alerts are displayed on the - Detections page. - title: Security Detections API (Elastic Cloud and self-hosted) - version: '2023-10-31' -servers: - - url: http://{kibana_host}:{port} - variables: - kibana_host: - default: localhost - port: - default: '5601' -paths: - /api/detection_engine/index: - delete: - operationId: DeleteAlertsIndex - responses: - '200': - content: - application/json: - schema: - type: object - properties: - acknowledged: - type: boolean - required: - - acknowledged - description: Successful response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Not enough permissions response - '404': - content: - application/json: - schema: - type: string - description: Index does not exist response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Delete an alerts index - tags: - - Security Detections API - - Alert index API - get: - operationId: ReadAlertsIndex - responses: - '200': - content: - application/json: - schema: - type: object - properties: - index_mapping_outdated: - nullable: true - type: boolean - name: - type: string - required: - - name - - index_mapping_outdated - description: Successful response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Not enough permissions response - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Not found - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Reads the alert index name if it exists - tags: - - Security Detections API - - Alert index API - post: - operationId: CreateAlertsIndex - responses: - '200': - content: - application/json: - schema: - type: object - properties: - acknowledged: - type: boolean - required: - - acknowledged - description: Successful response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '403': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Not enough permissions response - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Not found - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Create an alerts index - tags: - - Security Detections API - - Alert index API - /api/detection_engine/privileges: - get: - description: > - Retrieves whether or not the user is authenticated, and the user's - Kibana - - space and index privileges, which determine if the user can create an - - index for the Elastic Security alerts generated by - - detection engine rules. - operationId: ReadPrivileges - responses: - '200': - content: - application/json: - schema: - type: object - properties: - has_encryption_key: - type: boolean - is_authenticated: - type: boolean - required: - - is_authenticated - - has_encryption_key - description: Successful response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Returns user privileges for the Kibana space - tags: - - Security Detections API - - Privileges API - /api/detection_engine/rules: - delete: - description: Delete a detection rule using the `rule_id` or `id` field. - operationId: DeleteRule - parameters: - - description: The rule's `id` value. - in: query - name: id - required: false - schema: - $ref: '#/components/schemas/RuleObjectId' - - description: The rule's `rule_id` value. - in: query - name: rule_id - required: false - schema: - $ref: '#/components/schemas/RuleSignatureId' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Delete a detection rule - tags: - - Security Detections API - - Rules API - get: - description: Retrieve a detection rule using the `rule_id` or `id` field. - operationId: ReadRule - parameters: - - description: The rule's `id` value. - in: query - name: id - required: false - schema: - $ref: '#/components/schemas/RuleObjectId' - - description: The rule's `rule_id` value. - in: query - name: rule_id - required: false - schema: - $ref: '#/components/schemas/RuleSignatureId' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Retrieve a detection rule - tags: - - Security Detections API - - Rules API - patch: - description: >- - Update specific fields of an existing detection rule using the `rule_id` - or `id` field. - operationId: PatchRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RulePatchProps' - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Patch a detection rule - tags: - - Security Detections API - - Rules API - post: - description: Create a new detection rule. - operationId: CreateRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RuleCreateProps' - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Create a detection rule - tags: - - Security Detections API - - Rules API - put: - description: > - Update a detection rule using the `rule_id` or `id` field. The original - rule is replaced, and all unspecified fields are deleted. - - > info - - > You cannot modify the `id` or `rule_id` values. - operationId: UpdateRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RuleUpdateProps' - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Update a detection rule - tags: - - Security Detections API - - Rules API - /api/detection_engine/rules/_bulk_action: - post: - description: >- - Apply a bulk action, such as bulk edit, duplicate, or delete, to - multiple detection rules. The bulk action is applied to all rules that - match the query or to the rules listed by their IDs. - operationId: PerformRulesBulkAction - parameters: - - description: Enables dry run mode for the request call. - in: query - name: dry_run - required: false - schema: - type: boolean - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/BulkDeleteRules' - - $ref: '#/components/schemas/BulkDisableRules' - - $ref: '#/components/schemas/BulkEnableRules' - - $ref: '#/components/schemas/BulkExportRules' - - $ref: '#/components/schemas/BulkDuplicateRules' - - $ref: '#/components/schemas/BulkManualRuleRun' - - $ref: '#/components/schemas/BulkEditRules' - responses: - '200': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/BulkEditActionResponse' - - $ref: '#/components/schemas/BulkExportActionResponse' - description: OK - summary: Apply a bulk action to detection rules - tags: - - Security Detections API - - Bulk API - /api/detection_engine/rules/_bulk_create: - post: - deprecated: true - description: Create new detection rules in bulk. - operationId: BulkCreateRules - requestBody: - content: - application/json: - schema: - items: - $ref: '#/components/schemas/RuleCreateProps' - type: array - description: A JSON array of rules, where each rule contains the required fields. - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/BulkCrudRulesResponse' - description: Indicates a successful call. - summary: Create multiple detection rules - tags: - - Security Detections API - - Bulk API - /api/detection_engine/rules/_bulk_delete: - delete: - deprecated: true - description: Delete detection rules in bulk. - operationId: BulkDeleteRules - requestBody: - content: - application/json: - schema: - items: - type: object - properties: - id: - $ref: '#/components/schemas/RuleObjectId' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - type: array - description: >- - A JSON array of `id` or `rule_id` fields of the rules you want to - delete. - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/BulkCrudRulesResponse' - description: Indicates a successful call. - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Delete multiple detection rules - tags: - - Security Detections API - - Bulk API - post: - deprecated: true - description: Deletes multiple rules. - operationId: BulkDeleteRulesPost - requestBody: - content: - application/json: - schema: - items: - type: object - properties: - id: - $ref: '#/components/schemas/RuleObjectId' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - type: array - description: >- - A JSON array of `id` or `rule_id` fields of the rules you want to - delete. - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/BulkCrudRulesResponse' - description: Indicates a successful call. - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Delete multiple detection rules - tags: - - Security Detections API - - Bulk API - /api/detection_engine/rules/_bulk_update: - patch: - deprecated: true - description: >- - Update specific fields of existing detection rules using the `rule_id` - or `id` field. - operationId: BulkPatchRules - requestBody: - content: - application/json: - schema: - items: - $ref: '#/components/schemas/RulePatchProps' - type: array - description: A JSON array of rules, where each rule contains the required fields. - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/BulkCrudRulesResponse' - description: Indicates a successful call. - summary: Patch multiple detection rules - tags: - - Security Detections API - - Bulk API - put: - deprecated: true - description: > - Update multiple detection rules using the `rule_id` or `id` field. The - original rules are replaced, and all unspecified fields are deleted. - - > info - - > You cannot modify the `id` or `rule_id` values. - operationId: BulkUpdateRules - requestBody: - content: - application/json: - schema: - items: - $ref: '#/components/schemas/RuleUpdateProps' - type: array - description: >- - A JSON array where each element includes the `id` or `rule_id` field - of the rule you want to update and the fields you want to modify. - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/BulkCrudRulesResponse' - description: Indicates a successful call. - summary: Update multiple detection rules - tags: - - Security Detections API - - Bulk API - /api/detection_engine/rules/_export: - post: - description: > - Export detection rules to an `.ndjson` file. The following configuration - items are also included in the `.ndjson` file: - - - Actions - - - Exception lists - - > info - - > You cannot export prebuilt rules. - operationId: ExportRules - parameters: - - description: Determines whether a summary of the exported rules is returned. - in: query - name: exclude_export_details - required: false - schema: - default: false - type: boolean - - description: File name for saving the exported rules. - in: query - name: file_name - required: false - schema: - default: export.ndjson - type: string - requestBody: - content: - application/json: - schema: - nullable: true - type: object - properties: - objects: - description: >- - Array of `rule_id` fields. Exports all rules when - unspecified. - items: - type: object - properties: - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - required: - - rule_id - type: array - required: - - objects - required: false - responses: - '200': - content: - application/ndjson: - schema: - description: An `.ndjson` file containing the returned rules. - format: binary - type: string - description: Indicates a successful call. - summary: Export detection rules - tags: - - Security Detections API - - Import/Export API - /api/detection_engine/rules/_find: - get: - description: >- - Retrieve a paginated list of detection rules. By default, the first page - is returned, with 20 results per page. - operationId: FindRules - parameters: - - in: query - name: fields - required: false - schema: - items: - type: string - type: array - - description: Search query - in: query - name: filter - required: false - schema: - type: string - - description: Field to sort by - in: query - name: sort_field - required: false - schema: - $ref: '#/components/schemas/FindRulesSortField' - - description: Sort order - in: query - name: sort_order - required: false - schema: - $ref: '#/components/schemas/SortOrder' - - description: Page number - in: query - name: page - required: false - schema: - default: 1 - minimum: 1 - type: integer - - description: Rules per page - in: query - name: per_page - required: false - schema: - default: 20 - minimum: 0 - type: integer - responses: - '200': - content: - application/json: - schema: - type: object - properties: - data: - items: - $ref: '#/components/schemas/RuleResponse' - type: array - page: - type: integer - perPage: - type: integer - total: - type: integer - required: - - page - - perPage - - total - - data - description: Successful response - summary: List all detection rules - tags: - - Security Detections API - - Rules API - /api/detection_engine/rules/_import: - post: - description: > - Import detection rules from an `.ndjson` file, including actions and - exception lists. The request must include: - - - The `Content-Type: multipart/form-data` HTTP header. - - - A link to the `.ndjson` file containing the rules. - operationId: ImportRules - parameters: - - description: >- - Determines whether existing rules with the same `rule_id` are - overwritten. - in: query - name: overwrite - required: false - schema: - default: false - type: boolean - - description: >- - Determines whether existing exception lists with the same `list_id` - are overwritten. - in: query - name: overwrite_exceptions - required: false - schema: - default: false - type: boolean - - description: >- - Determines whether existing actions with the same - `kibana.alert.rule.actions.id` are overwritten. - in: query - name: overwrite_action_connectors - required: false - schema: - default: false - type: boolean - - description: Generates a new list ID for each imported exception list. - in: query - name: as_new_list - required: false - schema: - default: false - type: boolean - requestBody: - content: - multipart/form-data: - schema: - type: object - properties: - file: - description: The `.ndjson` file containing the rules. - format: binary - type: string - required: true - responses: - '200': - content: - application/json: - schema: - additionalProperties: false - type: object - properties: - action_connectors_errors: - items: - $ref: '#/components/schemas/ErrorSchema' - type: array - action_connectors_success: - type: boolean - action_connectors_success_count: - minimum: 0 - type: integer - action_connectors_warnings: - items: - $ref: '#/components/schemas/WarningSchema' - type: array - errors: - items: - $ref: '#/components/schemas/ErrorSchema' - type: array - exceptions_errors: - items: - $ref: '#/components/schemas/ErrorSchema' - type: array - exceptions_success: - type: boolean - exceptions_success_count: - minimum: 0 - type: integer - rules_count: - minimum: 0 - type: integer - success: - type: boolean - success_count: - minimum: 0 - type: integer - required: - - exceptions_success - - exceptions_success_count - - exceptions_errors - - rules_count - - success - - success_count - - errors - - action_connectors_errors - - action_connectors_warnings - - action_connectors_success - - action_connectors_success_count - description: Indicates a successful call. - summary: Import detection rules - tags: - - Security Detections API - - Import/Export API - /api/detection_engine/rules/prepackaged: - put: - description: Install and update all Elastic prebuilt detection rules and Timelines. - operationId: InstallPrebuiltRulesAndTimelines - responses: - '200': - content: - application/json: - schema: - additionalProperties: false - type: object - properties: - rules_installed: - description: The number of rules installed - minimum: 0 - type: integer - rules_updated: - description: The number of rules updated - minimum: 0 - type: integer - timelines_installed: - description: The number of timelines installed - minimum: 0 - type: integer - timelines_updated: - description: The number of timelines updated - minimum: 0 - type: integer - required: - - rules_installed - - rules_updated - - timelines_installed - - timelines_updated - description: Indicates a successful call - summary: Install prebuilt detection rules and Timelines - tags: - - Security Detections API - - Prebuilt Rules API - /api/detection_engine/rules/prepackaged/_status: - get: - description: >- - Retrieve the status of all Elastic prebuilt detection rules and - Timelines. - operationId: ReadPrebuiltRulesAndTimelinesStatus - responses: - '200': - content: - application/json: - schema: - additionalProperties: false - type: object - properties: - rules_custom_installed: - description: The total number of custom rules - minimum: 0 - type: integer - rules_installed: - description: The total number of installed prebuilt rules - minimum: 0 - type: integer - rules_not_installed: - description: >- - The total number of available prebuilt rules that are not - installed - minimum: 0 - type: integer - rules_not_updated: - description: The total number of outdated prebuilt rules - minimum: 0 - type: integer - timelines_installed: - description: The total number of installed prebuilt timelines - minimum: 0 - type: integer - timelines_not_installed: - description: >- - The total number of available prebuilt timelines that are - not installed - minimum: 0 - type: integer - timelines_not_updated: - description: The total number of outdated prebuilt timelines - minimum: 0 - type: integer - required: - - rules_custom_installed - - rules_installed - - rules_not_installed - - rules_not_updated - - timelines_installed - - timelines_not_installed - - timelines_not_updated - description: Indicates a successful call - summary: Retrieve the status of prebuilt detection rules and Timelines - tags: - - Security Detections API - - Prebuilt Rules API - /api/detection_engine/rules/preview: - post: - operationId: RulePreview - parameters: - - description: >- - Enables logging and returning in response ES queries, performed - during rule execution - in: query - name: enable_logged_requests - required: false - schema: - type: boolean - requestBody: - content: - application/json: - schema: - anyOf: - - allOf: - - $ref: '#/components/schemas/EqlRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/QueryRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/SavedQueryRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/ThresholdRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/ThreatMatchRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/MachineLearningRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/NewTermsRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/EsqlRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - discriminator: - propertyName: type - description: >- - An object containing tags to add or remove and alert ids the changes - will be applied - required: true - responses: - '200': - content: - application/json: - schema: - type: object - properties: - isAborted: - type: boolean - logs: - items: - $ref: '#/components/schemas/RulePreviewLogs' - type: array - previewId: - $ref: '#/components/schemas/NonEmptyString' - required: - - logs - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Preview rule alerts generated on specified time range - tags: - - Security Detections API - - Rule preview API - /api/detection_engine/signals/assignees: - post: - description: | - Assign users to detection alerts, and unassign them from alerts. - > info - > You cannot add and remove the same assignee in the same request. - operationId: SetAlertAssignees - requestBody: - content: - application/json: - schema: - type: object - properties: - assignees: - $ref: '#/components/schemas/AlertAssignees' - description: Details about the assignees to assign and unassign. - ids: - $ref: '#/components/schemas/AlertIds' - description: List of alerts ids to assign and unassign passed assignees. - required: - - assignees - - ids - required: true - responses: - '200': - description: Indicates a successful call. - '400': - description: Invalid request. - summary: Assign and unassign users from detection alerts - tags: - - Security Detections API - /api/detection_engine/signals/finalize_migration: - post: - deprecated: true - description: > - Finalize successful migrations of detection alerts. This replaces the - original index's alias with the successfully migrated index's alias. - - The endpoint is idempotent; therefore, it can safely be used to poll a - given migration and, upon completion, - - finalize it. - operationId: FinalizeAlertsMigration - requestBody: - content: - application/json: - schema: - type: object - properties: - migration_ids: - items: - type: string - minItems: 1 - type: array - required: - - migration_ids - description: Array of `migration_id`s to finalize - required: true - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/MigrationFinalizationResult' - type: array - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Finalize detection alert migrations - tags: - - Security Detections API - - Alerts migration API - /api/detection_engine/signals/migration: - delete: - deprecated: true - description: > - Migrations favor data integrity over shard size. Consequently, unused or - orphaned indices are artifacts of - - the migration process. A successful migration will result in both the - old and new indices being present. - - As such, the old, orphaned index can (and likely should) be deleted. - - - While you can delete these indices manually, - - the endpoint accomplishes this task by applying a deletion policy to the - relevant index, causing it to be deleted - - after 30 days. It also deletes other artifacts specific to the migration - implementation. - operationId: AlertsMigrationCleanup - requestBody: - content: - application/json: - schema: - type: object - properties: - migration_ids: - items: - type: string - minItems: 1 - type: array - required: - - migration_ids - description: Array of `migration_id`s to cleanup - required: true - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/MigrationCleanupResult' - type: array - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Clean up detection alert migrations - tags: - - Security Detections API - - Alerts migration API - post: - deprecated: true - description: > - Initiate a migration of detection alerts. - - Migrations are initiated per index. While the process is neither - destructive nor interferes with existing data, it may be - resource-intensive. As such, it is recommended that you plan your - migrations accordingly. - operationId: CreateAlertsMigration - requestBody: - content: - application/json: - schema: - allOf: - - type: object - properties: - index: - items: - $ref: '#/components/schemas/NonEmptyString' - minItems: 1 - type: array - required: - - index - - $ref: '#/components/schemas/AlertsReindexOptions' - description: Alerts migration parameters - required: true - responses: - '200': - content: - application/json: - schema: - type: object - properties: - indices: - items: - oneOf: - - $ref: '#/components/schemas/AlertsIndexMigrationSuccess' - - $ref: '#/components/schemas/AlertsIndexMigrationError' - - $ref: '#/components/schemas/SkippedAlertsIndexMigration' - type: array - required: - - indices - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Initiate a detection alert migration - tags: - - Security Detections API - - Alerts migration API - /api/detection_engine/signals/migration_status: - post: - deprecated: true - description: >- - Retrieve indices that contain detection alerts of a particular age, - along with migration information for each of those indices. - operationId: ReadAlertsMigrationStatus - parameters: - - description: Maximum age of qualifying detection alerts - in: query - name: from - required: true - schema: - description: > - Time from which data is analyzed. For example, now-4200s means the - rule analyzes data from 70 minutes - - before its start time. Defaults to now-6m (analyzes data from 6 - minutes before the start time). - format: date-math - type: string - responses: - '200': - content: - application/json: - schema: - type: object - properties: - indices: - items: - $ref: '#/components/schemas/IndexMigrationStatus' - type: array - required: - - indices - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Retrieve the status of detection alert migrations - tags: - - Security Detections API - - Alerts migration API - /api/detection_engine/signals/search: - post: - description: Find and/or aggregate detection alerts that match the given query. - operationId: SearchAlerts - requestBody: - content: - application/json: - schema: - description: Elasticsearch query and aggregation request - type: object - properties: - _source: - oneOf: - - type: boolean - - type: string - - items: - type: string - type: array - aggs: - additionalProperties: true - type: object - fields: - items: - type: string - type: array - query: - additionalProperties: true - type: object - runtime_mappings: - additionalProperties: true - type: object - size: - minimum: 0 - type: integer - sort: - $ref: '#/components/schemas/AlertsSort' - track_total_hits: - type: boolean - description: Search and/or aggregation query - required: true - responses: - '200': - content: - application/json: - schema: - additionalProperties: true - description: Elasticsearch search response - type: object - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Find and/or aggregate detection alerts - tags: - - Security Detections API - - Alerts API - /api/detection_engine/signals/status: - post: - description: Set the status of one or more detection alerts. - operationId: SetAlertsStatus - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/SetAlertsStatusByIds' - - $ref: '#/components/schemas/SetAlertsStatusByQuery' - description: >- - An object containing desired status and explicit alert ids or a query - to select alerts - required: true - responses: - '200': - content: - application/json: - schema: - additionalProperties: true - description: Elasticsearch update by query response - type: object - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Set a detection alert status - tags: - - Security Detections API - - Alerts API - /api/detection_engine/signals/tags: - post: - description: | - And tags to detection alerts, and remove them from alerts. - > info - > You cannot add and remove the same alert tag in the same request. - operationId: SetAlertTags - requestBody: - content: - application/json: - schema: - type: object - properties: - ids: - $ref: '#/components/schemas/AlertIds' - tags: - $ref: '#/components/schemas/SetAlertTags' - required: - - ids - - tags - description: >- - An object containing tags to add or remove and alert ids the changes - will be applied - required: true - responses: - '200': - content: - application/json: - schema: - additionalProperties: true - description: Elasticsearch update by query response - type: object - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Add and remove detection alert tags - tags: - - Security Detections API - - Alerts API - /api/detection_engine/tags: - get: - description: List all unique tags from all detection rules. - operationId: ReadTags - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleTagArray' - description: Indicates a successful call - summary: List all detection rule tags - tags: - - Security Detections API - - Tags API -components: - schemas: - AlertAssignees: - type: object - properties: - add: - description: A list of users ids to assign. - items: - $ref: '#/components/schemas/NonEmptyString' - type: array - remove: - description: A list of users ids to unassign. - items: - $ref: '#/components/schemas/NonEmptyString' - type: array - required: - - add - - remove - AlertIds: - description: A list of alerts ids. - items: - $ref: '#/components/schemas/NonEmptyString' - minItems: 1 - type: array - AlertsIndex: - deprecated: true - description: (deprecated) Has no effect. - type: string - AlertsIndexMigrationError: - type: object - properties: - error: - type: object - properties: - message: - type: string - status_code: - type: string - required: - - message - - status_code - index: - type: string - required: - - index - - error - AlertsIndexMigrationSuccess: - type: object - properties: - index: - type: string - migration_id: - type: string - migration_index: - type: string - required: - - index - - migration_id - - migration_index - AlertsIndexNamespace: - description: Has no effect. - type: string - AlertsReindexOptions: - type: object - properties: - requests_per_second: - minimum: 1 - type: integer - size: - minimum: 1 - type: integer - slices: - minimum: 1 - type: integer - AlertsSort: - oneOf: - - $ref: '#/components/schemas/AlertsSortCombinations' - - items: - $ref: '#/components/schemas/AlertsSortCombinations' - type: array - AlertsSortCombinations: - anyOf: - - type: string - - additionalProperties: true - type: object - AlertStatus: - enum: - - open - - closed - - acknowledged - - in-progress - type: string - AlertSuppression: - type: object - properties: - duration: - $ref: '#/components/schemas/AlertSuppressionDuration' - group_by: - $ref: '#/components/schemas/AlertSuppressionGroupBy' - missing_fields_strategy: - $ref: '#/components/schemas/AlertSuppressionMissingFieldsStrategy' - required: - - group_by - AlertSuppressionDuration: - type: object - properties: - unit: - $ref: '#/components/schemas/AlertSuppressionDurationUnit' - value: - minimum: 1 - type: integer - required: - - value - - unit - AlertSuppressionDurationUnit: - enum: - - s - - m - - h - type: string - AlertSuppressionGroupBy: - items: - type: string - maxItems: 3 - minItems: 1 - type: array - AlertSuppressionMissingFieldsStrategy: - description: >- - Describes how alerts will be generated for documents with missing - suppress by fields: - - doNotSuppress - per each document a separate alert will be created - - suppress - only alert will be created per suppress by bucket - enum: - - doNotSuppress - - suppress - type: string - AlertTag: - $ref: '#/components/schemas/NonEmptyString' - AlertTags: - items: - $ref: '#/components/schemas/AlertTag' - type: array - AlertVersion: - type: object - properties: - count: - type: integer - version: - type: integer - required: - - version - - count - AnomalyThreshold: - description: Anomaly threshold - minimum: 0 - type: integer - BuildingBlockType: - description: >- - Determines if the rule acts as a building block. By default, - building-block alerts are not displayed in the UI. These rules are used - as a foundation for other rules that do generate alerts. Its value must - be default. - type: string - BulkActionEditPayload: - anyOf: - - $ref: '#/components/schemas/BulkActionEditPayloadTags' - - $ref: '#/components/schemas/BulkActionEditPayloadIndexPatterns' - - $ref: '#/components/schemas/BulkActionEditPayloadInvestigationFields' - - $ref: '#/components/schemas/BulkActionEditPayloadTimeline' - - $ref: '#/components/schemas/BulkActionEditPayloadRuleActions' - - $ref: '#/components/schemas/BulkActionEditPayloadSchedule' - BulkActionEditPayloadIndexPatterns: - type: object - properties: - overwrite_data_views: - type: boolean - type: - enum: - - add_index_patterns - - delete_index_patterns - - set_index_patterns - type: string - value: - $ref: '#/components/schemas/IndexPatternArray' - required: - - type - - value - BulkActionEditPayloadInvestigationFields: - type: object - properties: - type: - enum: - - add_investigation_fields - - delete_investigation_fields - - set_investigation_fields - type: string - value: - $ref: '#/components/schemas/InvestigationFields' - required: - - type - - value - BulkActionEditPayloadRuleActions: - type: object - properties: - type: - enum: - - add_rule_actions - - set_rule_actions - type: string - value: - type: object - properties: - actions: - items: - $ref: '#/components/schemas/NormalizedRuleAction' - type: array - throttle: - $ref: '#/components/schemas/ThrottleForBulkActions' - required: - - actions - required: - - type - - value - BulkActionEditPayloadSchedule: - type: object - properties: - type: - enum: - - set_schedule - type: string - value: - type: object - properties: - interval: - description: >- - Interval in which the rule runs. For example, `"1h"` means the - rule runs every hour. - example: 1h - pattern: ^[1-9]\d*[smh]$ - type: string - lookback: - description: Lookback time for the rule - example: 1h - pattern: ^[1-9]\d*[smh]$ - type: string - required: - - interval - - lookback - required: - - type - - value - BulkActionEditPayloadTags: - type: object - properties: - type: - enum: - - add_tags - - delete_tags - - set_tags - type: string - value: - $ref: '#/components/schemas/RuleTagArray' - required: - - type - - value - BulkActionEditPayloadTimeline: - type: object - properties: - type: - enum: - - set_timeline - type: string - value: - type: object - properties: - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - required: - - timeline_id - - timeline_title - required: - - type - - value - BulkActionsDryRunErrCode: - enum: - - IMMUTABLE - - MACHINE_LEARNING_AUTH - - MACHINE_LEARNING_INDEX_PATTERN - - ESQL_INDEX_PATTERN - - MANUAL_RULE_RUN_FEATURE - - MANUAL_RULE_RUN_DISABLED_RULE - type: string - BulkActionSkipResult: - type: object - properties: - id: - type: string - name: - type: string - skip_reason: - $ref: '#/components/schemas/BulkEditSkipReason' - required: - - id - - skip_reason - BulkCrudRulesResponse: - items: - oneOf: - - $ref: '#/components/schemas/RuleResponse' - - $ref: '#/components/schemas/ErrorSchema' - type: array - BulkDeleteRules: - type: object - properties: - action: - enum: - - delete - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkDisableRules: - type: object - properties: - action: - enum: - - disable - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkDuplicateRules: - type: object - properties: - action: - enum: - - duplicate - type: string - duplicate: - type: object - properties: - include_exceptions: - description: Whether to copy exceptions from the original rule - type: boolean - include_expired_exceptions: - description: Whether to copy expired exceptions from the original rule - type: boolean - required: - - include_exceptions - - include_expired_exceptions - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkEditActionResponse: - type: object - properties: - attributes: - type: object - properties: - errors: - items: - $ref: '#/components/schemas/NormalizedRuleError' - type: array - results: - $ref: '#/components/schemas/BulkEditActionResults' - summary: - $ref: '#/components/schemas/BulkEditActionSummary' - required: - - results - - summary - message: - type: string - rules_count: - type: integer - status_code: - type: integer - success: - type: boolean - required: - - attributes - BulkEditActionResults: - type: object - properties: - created: - items: - $ref: '#/components/schemas/RuleResponse' - type: array - deleted: - items: - $ref: '#/components/schemas/RuleResponse' - type: array - skipped: - items: - $ref: '#/components/schemas/BulkActionSkipResult' - type: array - updated: - items: - $ref: '#/components/schemas/RuleResponse' - type: array - required: - - updated - - created - - deleted - - skipped - BulkEditActionSummary: - type: object - properties: - failed: - type: integer - skipped: - type: integer - succeeded: - type: integer - total: - type: integer - required: - - failed - - skipped - - succeeded - - total - BulkEditRules: - type: object - properties: - action: - enum: - - edit - type: string - edit: - description: Array of objects containing the edit operations - items: - $ref: '#/components/schemas/BulkActionEditPayload' - minItems: 1 - type: array - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - - edit - BulkEditSkipReason: - enum: - - RULE_NOT_MODIFIED - type: string - BulkEnableRules: - type: object - properties: - action: - enum: - - enable - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkExportActionResponse: - type: string - BulkExportRules: - type: object - properties: - action: - enum: - - export - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkManualRuleRun: - type: object - properties: - action: - enum: - - run - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - run: - type: object - properties: - end_date: - description: End date of the manual rule run - type: string - start_date: - description: Start date of the manual rule run - type: string - required: - - start_date - required: - - action - - run - ConcurrentSearches: - minimum: 1 - type: integer - DataViewId: - type: string - DefaultParams: - type: object - properties: - command: - enum: - - isolate - type: string - comment: - type: string - required: - - command - EcsMapping: - additionalProperties: - type: object - properties: - field: - type: string - value: - oneOf: - - type: string - - items: - type: string - type: array - type: object - EndpointResponseAction: - type: object - properties: - action_type_id: - enum: - - .endpoint - type: string - params: - oneOf: - - $ref: '#/components/schemas/DefaultParams' - - $ref: '#/components/schemas/ProcessesParams' - required: - - action_type_id - - params - EqlOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - event_category_override: - $ref: '#/components/schemas/EventCategoryOverride' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - tiebreaker_field: - $ref: '#/components/schemas/TiebreakerField' - timestamp_field: - $ref: '#/components/schemas/TimestampField' - EqlQueryLanguage: - enum: - - eql - type: string - EqlRequiredFields: - type: object - properties: - language: - $ref: '#/components/schemas/EqlQueryLanguage' - description: Query language to use - query: - $ref: '#/components/schemas/RuleQuery' - description: EQL query to execute - type: - description: Rule type - enum: - - eql - type: string - required: - - type - - query - - language - EqlRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/EqlRuleResponseFields' - EqlRuleCreateFields: - allOf: - - $ref: '#/components/schemas/EqlRequiredFields' - - $ref: '#/components/schemas/EqlOptionalFields' - EqlRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/EqlRuleCreateFields' - EqlRulePatchFields: - allOf: - - type: object - properties: - language: - $ref: '#/components/schemas/EqlQueryLanguage' - description: Query language to use - query: - $ref: '#/components/schemas/RuleQuery' - description: EQL query to execute - type: - description: Rule type - enum: - - eql - type: string - - $ref: '#/components/schemas/EqlOptionalFields' - EqlRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/EqlRulePatchFields' - EqlRuleResponseFields: - allOf: - - $ref: '#/components/schemas/EqlRequiredFields' - - $ref: '#/components/schemas/EqlOptionalFields' - EqlRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/EqlRuleCreateFields' - ErrorSchema: - additionalProperties: false - type: object - properties: - error: - type: object - properties: - message: - type: string - status_code: - minimum: 400 - type: integer - required: - - status_code - - message - id: - type: string - item_id: - minLength: 1 - type: string - list_id: - minLength: 1 - type: string - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - required: - - error - EsqlQueryLanguage: - enum: - - esql - type: string - EsqlRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/EsqlRuleResponseFields' - EsqlRuleCreateFields: - allOf: - - $ref: '#/components/schemas/EsqlRuleOptionalFields' - - $ref: '#/components/schemas/EsqlRuleRequiredFields' - EsqlRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/EsqlRuleCreateFields' - EsqlRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - EsqlRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - language: - $ref: '#/components/schemas/EsqlQueryLanguage' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - query: - $ref: '#/components/schemas/RuleQuery' - description: ESQL query to execute - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - type: - description: Rule type - enum: - - esql - type: string - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/EsqlRuleOptionalFields' - EsqlRuleRequiredFields: - type: object - properties: - language: - $ref: '#/components/schemas/EsqlQueryLanguage' - query: - $ref: '#/components/schemas/RuleQuery' - description: ESQL query to execute - type: - description: Rule type - enum: - - esql - type: string - required: - - type - - language - - query - EsqlRuleResponseFields: - allOf: - - $ref: '#/components/schemas/EsqlRuleOptionalFields' - - $ref: '#/components/schemas/EsqlRuleRequiredFields' - EsqlRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/EsqlRuleCreateFields' - EventCategoryOverride: - type: string - ExceptionListType: - description: The exception type - enum: - - detection - - rule_default - - endpoint - - endpoint_trusted_apps - - endpoint_events - - endpoint_host_isolation_exceptions - - endpoint_blocklists - type: string - ExternalRuleSource: - description: >- - Type of rule source for externally sourced rules, i.e. rules that have - an external source, such as the Elastic Prebuilt rules repo. - type: object - properties: - is_customized: - $ref: '#/components/schemas/IsExternalRuleCustomized' - type: - enum: - - external - type: string - required: - - type - - is_customized - FindRulesSortField: - enum: - - created_at - - createdAt - - enabled - - execution_summary.last_execution.date - - execution_summary.last_execution.metrics.execution_gap_duration_s - - execution_summary.last_execution.metrics.total_indexing_duration_ms - - execution_summary.last_execution.metrics.total_search_duration_ms - - execution_summary.last_execution.status - - name - - risk_score - - riskScore - - severity - - updated_at - - updatedAt - type: string - HistoryWindowStart: - $ref: '#/components/schemas/NonEmptyString' - IndexMigrationStatus: - type: object - properties: - index: - $ref: '#/components/schemas/NonEmptyString' - is_outdated: - type: boolean - migrations: - items: - $ref: '#/components/schemas/MigrationStatus' - type: array - signal_versions: - items: - $ref: '#/components/schemas/AlertVersion' - type: array - version: - type: integer - required: - - index - - version - - signal_versions - - migrations - - is_outdated - IndexPatternArray: - items: - type: string - type: array - InternalRuleSource: - description: >- - Type of rule source for internally sourced rules, i.e. created within - the Kibana apps. - type: object - properties: - type: - enum: - - internal - type: string - required: - - type - InvestigationFields: - description: > - Schema for fields relating to investigation fields. These are user - defined fields we use to highlight - - in various features in the UI such as alert details flyout and - exceptions auto-population from alert. - - Added in PR #163235 - - Right now we only have a single field but anticipate adding more related - fields to store various - - configuration states such as `override` - where a user might say if they - want only these fields to - - display, or if they want these fields + the fields we select. When - expanding this field, it may look - - something like: - - ```typescript - - const investigationFields = z.object({ - field_names: NonEmptyArray(NonEmptyString), - override: z.boolean().optional(), - }); - - ``` - type: object - properties: - field_names: - items: - $ref: '#/components/schemas/NonEmptyString' - minItems: 1 - type: array - required: - - field_names - InvestigationGuide: - description: Notes to help investigate alerts produced by the rule. - type: string - IsExternalRuleCustomized: - description: >- - Determines whether an external/prebuilt rule has been customized by the - user (i.e. any of its fields have been modified and diverged from the - base value). - type: boolean - IsRuleEnabled: - description: Determines whether the rule is enabled. - type: boolean - IsRuleImmutable: - deprecated: true - description: >- - This field determines whether the rule is a prebuilt Elastic rule. It - will be replaced with the `rule_source` field. - type: boolean - ItemsPerSearch: - minimum: 1 - type: integer - KqlQueryLanguage: - enum: - - kuery - - lucene - type: string - MachineLearningJobId: - description: Machine learning job ID - oneOf: - - type: string - - items: - type: string - minItems: 1 - type: array - MachineLearningRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/MachineLearningRuleResponseFields' - MachineLearningRuleCreateFields: - allOf: - - $ref: '#/components/schemas/MachineLearningRuleRequiredFields' - - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' - MachineLearningRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/MachineLearningRuleCreateFields' - MachineLearningRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - MachineLearningRulePatchFields: - allOf: - - type: object - properties: - anomaly_threshold: - $ref: '#/components/schemas/AnomalyThreshold' - machine_learning_job_id: - $ref: '#/components/schemas/MachineLearningJobId' - type: - description: Rule type - enum: - - machine_learning - type: string - - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' - MachineLearningRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/MachineLearningRulePatchFields' - MachineLearningRuleRequiredFields: - type: object - properties: - anomaly_threshold: - $ref: '#/components/schemas/AnomalyThreshold' - machine_learning_job_id: - $ref: '#/components/schemas/MachineLearningJobId' - type: - description: Rule type - enum: - - machine_learning - type: string - required: - - type - - machine_learning_job_id - - anomaly_threshold - MachineLearningRuleResponseFields: - allOf: - - $ref: '#/components/schemas/MachineLearningRuleRequiredFields' - - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' - MachineLearningRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/MachineLearningRuleCreateFields' - MaxSignals: - minimum: 1 - type: integer - MigrationCleanupResult: - type: object - properties: - destinationIndex: - type: string - error: - type: object - properties: - message: - type: string - status_code: - type: integer - required: - - message - - status_code - id: - type: string - sourceIndex: - type: string - status: - enum: - - success - - failure - - pending - type: string - updated: - format: date-time - type: string - version: - type: string - required: - - id - - destinationIndex - - status - - sourceIndex - - version - - updated - MigrationFinalizationResult: - type: object - properties: - completed: - type: boolean - destinationIndex: - type: string - error: - type: object - properties: - message: - type: string - status_code: - type: integer - required: - - message - - status_code - id: - type: string - sourceIndex: - type: string - status: - enum: - - success - - failure - - pending - type: string - updated: - format: date-time - type: string - version: - type: string - required: - - id - - completed - - destinationIndex - - status - - sourceIndex - - version - - updated - MigrationStatus: - type: object - properties: - id: - $ref: '#/components/schemas/NonEmptyString' - status: - enum: - - success - - failure - - pending - type: string - updated: - format: date-time - type: string - version: - type: integer - required: - - id - - status - - version - - updated - NewTermsFields: - items: - type: string - maxItems: 3 - minItems: 1 - type: array - NewTermsRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/NewTermsRuleResponseFields' - NewTermsRuleCreateFields: - allOf: - - $ref: '#/components/schemas/NewTermsRuleRequiredFields' - - $ref: '#/components/schemas/NewTermsRuleOptionalFields' - - $ref: '#/components/schemas/NewTermsRuleDefaultableFields' - NewTermsRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/NewTermsRuleCreateFields' - NewTermsRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - NewTermsRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - NewTermsRulePatchFields: - allOf: - - type: object - properties: - history_window_start: - $ref: '#/components/schemas/HistoryWindowStart' - new_terms_fields: - $ref: '#/components/schemas/NewTermsFields' - query: - $ref: '#/components/schemas/RuleQuery' - type: - description: Rule type - enum: - - new_terms - type: string - - $ref: '#/components/schemas/NewTermsRuleOptionalFields' - - $ref: '#/components/schemas/NewTermsRuleDefaultableFields' - NewTermsRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/NewTermsRulePatchFields' - NewTermsRuleRequiredFields: - type: object - properties: - history_window_start: - $ref: '#/components/schemas/HistoryWindowStart' - new_terms_fields: - $ref: '#/components/schemas/NewTermsFields' - query: - $ref: '#/components/schemas/RuleQuery' - type: - description: Rule type - enum: - - new_terms - type: string - required: - - type - - query - - new_terms_fields - - history_window_start - NewTermsRuleResponseFields: - allOf: - - $ref: '#/components/schemas/NewTermsRuleRequiredFields' - - $ref: '#/components/schemas/NewTermsRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - required: - - language - NewTermsRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/NewTermsRuleCreateFields' - NonEmptyString: - description: A string that does not contain only whitespace characters - format: nonempty - minLength: 1 - type: string - NormalizedRuleAction: - additionalProperties: false - type: object - properties: - alerts_filter: - $ref: '#/components/schemas/RuleActionAlertsFilter' - frequency: - $ref: '#/components/schemas/RuleActionFrequency' - group: - $ref: '#/components/schemas/RuleActionGroup' - id: - $ref: '#/components/schemas/RuleActionId' - params: - $ref: '#/components/schemas/RuleActionParams' - required: - - id - - params - NormalizedRuleError: - type: object - properties: - err_code: - $ref: '#/components/schemas/BulkActionsDryRunErrCode' - message: - type: string - rules: - items: - $ref: '#/components/schemas/RuleDetailsInError' - type: array - status_code: - type: integer - required: - - message - - status_code - - rules - OsqueryParams: - type: object - properties: - ecs_mapping: - $ref: '#/components/schemas/EcsMapping' - pack_id: - type: string - queries: - items: - $ref: '#/components/schemas/OsqueryQuery' - type: array - query: - type: string - saved_query_id: - type: string - timeout: - type: number - OsqueryQuery: - type: object - properties: - ecs_mapping: - $ref: '#/components/schemas/EcsMapping' - id: - description: Query ID - type: string - platform: - type: string - query: - description: Query to run - type: string - removed: - type: boolean - snapshot: - type: boolean - version: - description: Query version - type: string - required: - - id - - query - OsqueryResponseAction: - type: object - properties: - action_type_id: - enum: - - .osquery - type: string - params: - $ref: '#/components/schemas/OsqueryParams' - required: - - action_type_id - - params - PlatformErrorResponse: - type: object - properties: - error: - type: string - message: - type: string - statusCode: - type: integer - required: - - statusCode - - error - - message - ProcessesParams: - type: object - properties: - command: - enum: - - kill-process - - suspend-process - type: string - comment: - type: string - config: - type: object - properties: - field: - description: Field to use instead of process.pid - type: string - overwrite: - default: true - description: Whether to overwrite field with process.pid - type: boolean - required: - - field - required: - - command - - config - QueryRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/QueryRuleResponseFields' - QueryRuleCreateFields: - allOf: - - $ref: '#/components/schemas/QueryRuleRequiredFields' - - $ref: '#/components/schemas/QueryRuleOptionalFields' - - $ref: '#/components/schemas/QueryRuleDefaultableFields' - QueryRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/QueryRuleCreateFields' - QueryRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - query: - $ref: '#/components/schemas/RuleQuery' - QueryRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - saved_id: - $ref: '#/components/schemas/SavedQueryId' - QueryRulePatchFields: - allOf: - - type: object - properties: - type: - description: Rule type - enum: - - query - type: string - - $ref: '#/components/schemas/QueryRuleOptionalFields' - - $ref: '#/components/schemas/QueryRuleDefaultableFields' - QueryRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/QueryRulePatchFields' - QueryRuleRequiredFields: - type: object - properties: - type: - description: Rule type - enum: - - query - type: string - required: - - type - QueryRuleResponseFields: - allOf: - - $ref: '#/components/schemas/QueryRuleRequiredFields' - - $ref: '#/components/schemas/QueryRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - query: - $ref: '#/components/schemas/RuleQuery' - required: - - query - - language - QueryRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/QueryRuleCreateFields' - RelatedIntegration: - description: > - Related integration is a potential dependency of a rule. It's assumed - that if the user installs - - one of the related integrations of a rule, the rule might start to work - properly because it will - - have source events (generated by this integration) potentially matching - the rule's query. - - - NOTE: Proper work is not guaranteed, because a related integration, if - installed, can be - - configured differently or generate data that is not necessarily relevant - for this rule. - - - Related integration is a combination of a Fleet package and (optionally) - one of the - - package's "integrations" that this package contains. It is represented - by 3 properties: - - - - `package`: name of the package (required, unique id) - - - `version`: version of the package (required, semver-compatible) - - - `integration`: name of the integration of this package (optional, id - within the package) - - - There are Fleet packages like `windows` that contain only one - integration; in this case, - - `integration` should be unspecified. There are also packages like `aws` - and `azure` that contain - - several integrations; in this case, `integration` should be specified. - - - @example - - const x: RelatedIntegration = { - package: 'windows', - version: '1.5.x', - }; - - - @example - - const x: RelatedIntegration = { - package: 'azure', - version: '~1.1.6', - integration: 'activitylogs', - }; - type: object - properties: - integration: - $ref: '#/components/schemas/NonEmptyString' - package: - $ref: '#/components/schemas/NonEmptyString' - version: - $ref: '#/components/schemas/NonEmptyString' - required: - - package - - version - RelatedIntegrationArray: - items: - $ref: '#/components/schemas/RelatedIntegration' - type: array - RequiredField: - description: > - Describes an Elasticsearch field that is needed for the rule to - function. - - - Almost all types of Security rules check source event documents for a - match to some kind of - - query or filter. If a document has certain field with certain values, - then it's a match and - - the rule will generate an alert. - - - Required field is an event field that must be present in the source - indices of a given rule. - - - @example - - const standardEcsField: RequiredField = { - name: 'event.action', - type: 'keyword', - ecs: true, - }; - - - @example - - const nonEcsField: RequiredField = { - name: 'winlog.event_data.AttributeLDAPDisplayName', - type: 'keyword', - ecs: false, - }; - type: object - properties: - ecs: - description: Whether the field is an ECS field - type: boolean - name: - $ref: '#/components/schemas/NonEmptyString' - description: Name of an Elasticsearch field - type: - $ref: '#/components/schemas/NonEmptyString' - description: Type of the Elasticsearch field - required: - - name - - type - - ecs - RequiredFieldArray: - items: - $ref: '#/components/schemas/RequiredField' - type: array - RequiredFieldInput: - description: >- - Input parameters to create a RequiredField. Does not include the `ecs` - field, because `ecs` is calculated on the backend based on the field - name and type. - type: object - properties: - name: - $ref: '#/components/schemas/NonEmptyString' - description: Name of an Elasticsearch field - type: - $ref: '#/components/schemas/NonEmptyString' - description: Type of an Elasticsearch field - required: - - name - - type - ResponseAction: - oneOf: - - $ref: '#/components/schemas/OsqueryResponseAction' - - $ref: '#/components/schemas/EndpointResponseAction' - ResponseFields: - type: object - properties: - created_at: - format: date-time - type: string - created_by: - type: string - execution_summary: - $ref: '#/components/schemas/RuleExecutionSummary' - id: - $ref: '#/components/schemas/RuleObjectId' - immutable: - $ref: '#/components/schemas/IsRuleImmutable' - required_fields: - $ref: '#/components/schemas/RequiredFieldArray' - revision: - minimum: 0 - type: integer - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_source: - $ref: '#/components/schemas/RuleSource' - updated_at: - format: date-time - type: string - updated_by: - type: string - required: - - id - - rule_id - - immutable - - rule_source - - updated_at - - updated_by - - created_at - - created_by - - revision - - related_integrations - - required_fields - RiskScore: - description: Risk score (0 to 100) - maximum: 100 - minimum: 0 - type: integer - RiskScoreMapping: - description: >- - Overrides generated alerts' risk_score with a value from the source - event - items: - type: object - properties: - field: - type: string - operator: - enum: - - equals - type: string - risk_score: - $ref: '#/components/schemas/RiskScore' - value: - type: string - required: - - field - - operator - - value - type: array - RuleAction: - type: object - properties: - action_type_id: - description: The action type used for sending notifications. - type: string - alerts_filter: - $ref: '#/components/schemas/RuleActionAlertsFilter' - frequency: - $ref: '#/components/schemas/RuleActionFrequency' - group: - $ref: '#/components/schemas/RuleActionGroup' - id: - $ref: '#/components/schemas/RuleActionId' - params: - $ref: '#/components/schemas/RuleActionParams' - uuid: - $ref: '#/components/schemas/NonEmptyString' - required: - - action_type_id - - id - - params - RuleActionAlertsFilter: - additionalProperties: true - type: object - RuleActionFrequency: - description: >- - The action frequency defines when the action runs (for example, only on - rule execution or at specific time intervals). - type: object - properties: - notifyWhen: - $ref: '#/components/schemas/RuleActionNotifyWhen' - summary: - description: >- - Action summary indicates whether we will send a summary notification - about all the generate alerts or notification per individual alert - type: boolean - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - nullable: true - required: - - summary - - notifyWhen - - throttle - RuleActionGroup: - description: >- - Optionally groups actions by use cases. Use `default` for alert - notifications. - type: string - RuleActionId: - description: The connector ID. - type: string - RuleActionNotifyWhen: - description: >- - The condition for throttling the notification: `onActionGroupChange`, - `onActiveAlert`, or `onThrottleInterval` - enum: - - onActiveAlert - - onThrottleInterval - - onActionGroupChange - type: string - RuleActionParams: - additionalProperties: true - description: >- - Object containing the allowed connector fields, which varies according - to the connector type. - type: object - RuleActionThrottle: - description: Defines how often rule actions are taken. - oneOf: - - enum: - - no_actions - - rule - type: string - - description: Time interval in seconds, minutes, hours, or days. - example: 1h - pattern: ^[1-9]\d*[smhd]$ - type: string - RuleAuthorArray: - items: - type: string - type: array - RuleCreateProps: - anyOf: - - $ref: '#/components/schemas/EqlRuleCreateProps' - - $ref: '#/components/schemas/QueryRuleCreateProps' - - $ref: '#/components/schemas/SavedQueryRuleCreateProps' - - $ref: '#/components/schemas/ThresholdRuleCreateProps' - - $ref: '#/components/schemas/ThreatMatchRuleCreateProps' - - $ref: '#/components/schemas/MachineLearningRuleCreateProps' - - $ref: '#/components/schemas/NewTermsRuleCreateProps' - - $ref: '#/components/schemas/EsqlRuleCreateProps' - discriminator: - propertyName: type - RuleDescription: - minLength: 1 - type: string - RuleDetailsInError: - type: object - properties: - id: - type: string - name: - type: string - required: - - id - RuleExceptionList: - type: object - properties: - id: - $ref: '#/components/schemas/NonEmptyString' - description: ID of the exception container - list_id: - $ref: '#/components/schemas/NonEmptyString' - description: List ID of the exception container - namespace_type: - description: Determines the exceptions validity in rule's Kibana space - enum: - - agnostic - - single - type: string - type: - $ref: '#/components/schemas/ExceptionListType' - required: - - id - - list_id - - type - - namespace_type - RuleExecutionMetrics: - type: object - properties: - execution_gap_duration_s: - description: Duration in seconds of execution gap - minimum: 0 - type: integer - total_enrichment_duration_ms: - description: >- - Total time spent enriching documents during current rule execution - cycle - minimum: 0 - type: integer - total_indexing_duration_ms: - description: >- - Total time spent indexing documents during current rule execution - cycle - minimum: 0 - type: integer - total_search_duration_ms: - description: >- - Total time spent performing ES searches as measured by Kibana; - includes network latency and time spent serializing/deserializing - request/response - minimum: 0 - type: integer - RuleExecutionStatus: - description: >- - Custom execution status of Security rules that is different from the - status used in the Alerting Framework. We merge our custom status with - the Framework's status to determine the resulting status of a rule. - - - going to run - @deprecated Replaced by the 'running' status but left - for backwards compatibility with rule execution events already written - to Event Log in the prior versions of Kibana. Don't use when writing - rule status changes. - - - running - Rule execution started but not reached any intermediate or - final status. - - - partial failure - Rule can partially fail for various reasons either - in the middle of an execution (in this case we update its status right - away) or in the end of it. So currently this status can be both - intermediate and final at the same time. A typical reason for a partial - failure: not all the indices that the rule searches over actually exist. - - - failed - Rule failed to execute due to unhandled exception or a reason - defined in the business logic of its executor function. - - - succeeded - Rule executed successfully without any issues. Note: this - status is just an indication of a rule's "health". The rule might or - might not generate any alerts despite of it. - enum: - - going to run - - running - - partial failure - - failed - - succeeded - type: string - RuleExecutionStatusOrder: - type: integer - RuleExecutionSummary: - type: object - properties: - last_execution: - type: object - properties: - date: - description: Date of the last execution - format: date-time - type: string - message: - type: string - metrics: - $ref: '#/components/schemas/RuleExecutionMetrics' - status: - $ref: '#/components/schemas/RuleExecutionStatus' - description: Status of the last execution - status_order: - $ref: '#/components/schemas/RuleExecutionStatusOrder' - required: - - date - - status - - status_order - - message - - metrics - required: - - last_execution - RuleFalsePositiveArray: - items: - type: string - type: array - RuleFilterArray: - items: {} - type: array - RuleInterval: - description: >- - Frequency of rule execution, using a date math range. For example, "1h" - means the rule runs every hour. Defaults to 5m (5 minutes). - type: string - RuleIntervalFrom: - description: >- - Time from which data is analyzed each time the rule runs, using a date - math range. For example, now-4200s means the rule analyzes data from 70 - minutes before its start time. Defaults to now-6m (analyzes data from 6 - minutes before the start time). - format: date-math - type: string - RuleIntervalTo: - type: string - RuleLicense: - description: The rule's license. - type: string - RuleMetadata: - additionalProperties: true - type: object - RuleName: - minLength: 1 - type: string - RuleNameOverride: - description: Sets the source field for the alert's signal.rule.name value - type: string - RuleObjectId: - $ref: '#/components/schemas/UUID' - RulePatchProps: - anyOf: - - $ref: '#/components/schemas/EqlRulePatchProps' - - $ref: '#/components/schemas/QueryRulePatchProps' - - $ref: '#/components/schemas/SavedQueryRulePatchProps' - - $ref: '#/components/schemas/ThresholdRulePatchProps' - - $ref: '#/components/schemas/ThreatMatchRulePatchProps' - - $ref: '#/components/schemas/MachineLearningRulePatchProps' - - $ref: '#/components/schemas/NewTermsRulePatchProps' - - $ref: '#/components/schemas/EsqlRulePatchProps' - RulePreviewLoggedRequest: - type: object - properties: - description: - $ref: '#/components/schemas/NonEmptyString' - duration: - type: integer - request: - $ref: '#/components/schemas/NonEmptyString' - required: - - request - RulePreviewLogs: - type: object - properties: - duration: - description: Execution duration in milliseconds - type: integer - errors: - items: - $ref: '#/components/schemas/NonEmptyString' - type: array - requests: - items: - $ref: '#/components/schemas/RulePreviewLoggedRequest' - type: array - startedAt: - $ref: '#/components/schemas/NonEmptyString' - warnings: - items: - $ref: '#/components/schemas/NonEmptyString' - type: array - required: - - errors - - warnings - - duration - RulePreviewParams: - type: object - properties: - invocationCount: - type: integer - timeframeEnd: - format: date-time - type: string - required: - - invocationCount - - timeframeEnd - RuleQuery: - type: string - RuleReferenceArray: - items: - type: string - type: array - RuleResponse: - anyOf: - - $ref: '#/components/schemas/EqlRule' - - $ref: '#/components/schemas/QueryRule' - - $ref: '#/components/schemas/SavedQueryRule' - - $ref: '#/components/schemas/ThresholdRule' - - $ref: '#/components/schemas/ThreatMatchRule' - - $ref: '#/components/schemas/MachineLearningRule' - - $ref: '#/components/schemas/NewTermsRule' - - $ref: '#/components/schemas/EsqlRule' - discriminator: - propertyName: type - RuleSignatureId: - description: Could be any string, not necessarily a UUID - type: string - RuleSource: - description: >- - Discriminated union that determines whether the rule is internally - sourced (created within the Kibana app) or has an external source, such - as the Elastic Prebuilt rules repo. - discriminator: - propertyName: type - oneOf: - - $ref: '#/components/schemas/ExternalRuleSource' - - $ref: '#/components/schemas/InternalRuleSource' - RuleTagArray: - description: >- - String array containing words and phrases to help categorize, filter, - and search rules. Defaults to an empty array. - items: - type: string - type: array - RuleUpdateProps: - anyOf: - - $ref: '#/components/schemas/EqlRuleUpdateProps' - - $ref: '#/components/schemas/QueryRuleUpdateProps' - - $ref: '#/components/schemas/SavedQueryRuleUpdateProps' - - $ref: '#/components/schemas/ThresholdRuleUpdateProps' - - $ref: '#/components/schemas/ThreatMatchRuleUpdateProps' - - $ref: '#/components/schemas/MachineLearningRuleUpdateProps' - - $ref: '#/components/schemas/NewTermsRuleUpdateProps' - - $ref: '#/components/schemas/EsqlRuleUpdateProps' - discriminator: - propertyName: type - RuleVersion: - description: The rule's version number. - minimum: 1 - type: integer - SavedObjectResolveAliasPurpose: - enum: - - savedObjectConversion - - savedObjectImport - type: string - SavedObjectResolveAliasTargetId: - type: string - SavedObjectResolveOutcome: - enum: - - exactMatch - - aliasMatch - - conflict - type: string - SavedQueryId: - type: string - SavedQueryRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/SavedQueryRuleResponseFields' - SavedQueryRuleCreateFields: - allOf: - - $ref: '#/components/schemas/SavedQueryRuleRequiredFields' - - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' - - $ref: '#/components/schemas/SavedQueryRuleDefaultableFields' - SavedQueryRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/SavedQueryRuleCreateFields' - SavedQueryRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - SavedQueryRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - query: - $ref: '#/components/schemas/RuleQuery' - SavedQueryRulePatchFields: - allOf: - - type: object - properties: - saved_id: - $ref: '#/components/schemas/SavedQueryId' - type: - description: Rule type - enum: - - saved_query - type: string - - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' - - $ref: '#/components/schemas/SavedQueryRuleDefaultableFields' - SavedQueryRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/SavedQueryRulePatchFields' - SavedQueryRuleRequiredFields: - type: object - properties: - saved_id: - $ref: '#/components/schemas/SavedQueryId' - type: - description: Rule type - enum: - - saved_query - type: string - required: - - type - - saved_id - SavedQueryRuleResponseFields: - allOf: - - $ref: '#/components/schemas/SavedQueryRuleRequiredFields' - - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - required: - - language - SavedQueryRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/SavedQueryRuleCreateFields' - SetAlertsStatusByIds: - type: object - properties: - signal_ids: - items: - $ref: '#/components/schemas/NonEmptyString' - minItems: 1 - type: array - status: - $ref: '#/components/schemas/AlertStatus' - required: - - signal_ids - - status - SetAlertsStatusByQuery: - type: object - properties: - conflicts: - default: abort - enum: - - abort - - proceed - type: string - query: - additionalProperties: true - type: object - status: - $ref: '#/components/schemas/AlertStatus' - required: - - query - - status - SetAlertTags: - type: object - properties: - tags_to_add: - $ref: '#/components/schemas/AlertTags' - tags_to_remove: - $ref: '#/components/schemas/AlertTags' - required: - - tags_to_add - - tags_to_remove - SetupGuide: - type: string - Severity: - description: Severity of the rule - enum: - - low - - medium - - high - - critical - type: string - SeverityMapping: - description: Overrides generated alerts' severity with values from the source event - items: - type: object - properties: - field: - type: string - operator: - enum: - - equals - type: string - severity: - $ref: '#/components/schemas/Severity' - value: - type: string - required: - - field - - operator - - severity - - value - type: array - SiemErrorResponse: - type: object - properties: - message: - type: string - status_code: - type: integer - required: - - status_code - - message - SkippedAlertsIndexMigration: - type: object - properties: - index: - type: string - required: - - index - SortOrder: - enum: - - asc - - desc - type: string - Threat: - type: object - properties: - framework: - description: Relevant attack framework - type: string - tactic: - $ref: '#/components/schemas/ThreatTactic' - technique: - description: Array containing information on the attack techniques (optional) - items: - $ref: '#/components/schemas/ThreatTechnique' - type: array - required: - - framework - - tactic - ThreatArray: - items: - $ref: '#/components/schemas/Threat' - type: array - ThreatFilters: - items: - description: >- - Query and filter context array used to filter documents from the - Elasticsearch index containing the threat values - type: array - ThreatIndex: - items: - type: string - type: array - ThreatIndicatorPath: - description: >- - Defines the path to the threat indicator in the indicator documents - (optional) - type: string - ThreatMapping: - items: - type: object - properties: - entries: - items: - type: object - properties: - field: - $ref: '#/components/schemas/NonEmptyString' - type: - enum: - - mapping - type: string - value: - $ref: '#/components/schemas/NonEmptyString' - required: - - field - - type - - value - type: array - required: - - entries - minItems: 1 - type: array - ThreatMatchRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/ThreatMatchRuleResponseFields' - ThreatMatchRuleCreateFields: - allOf: - - $ref: '#/components/schemas/ThreatMatchRuleRequiredFields' - - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' - - $ref: '#/components/schemas/ThreatMatchRuleDefaultableFields' - ThreatMatchRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/ThreatMatchRuleCreateFields' - ThreatMatchRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - ThreatMatchRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - concurrent_searches: - $ref: '#/components/schemas/ConcurrentSearches' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - items_per_search: - $ref: '#/components/schemas/ItemsPerSearch' - saved_id: - $ref: '#/components/schemas/SavedQueryId' - threat_filters: - $ref: '#/components/schemas/ThreatFilters' - threat_indicator_path: - $ref: '#/components/schemas/ThreatIndicatorPath' - threat_language: - $ref: '#/components/schemas/KqlQueryLanguage' - ThreatMatchRulePatchFields: - allOf: - - type: object - properties: - query: - $ref: '#/components/schemas/RuleQuery' - threat_index: - $ref: '#/components/schemas/ThreatIndex' - threat_mapping: - $ref: '#/components/schemas/ThreatMapping' - threat_query: - $ref: '#/components/schemas/ThreatQuery' - type: - description: Rule type - enum: - - threat_match - type: string - - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' - - $ref: '#/components/schemas/ThreatMatchRuleDefaultableFields' - ThreatMatchRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/ThreatMatchRulePatchFields' - ThreatMatchRuleRequiredFields: - type: object - properties: - query: - $ref: '#/components/schemas/RuleQuery' - threat_index: - $ref: '#/components/schemas/ThreatIndex' - threat_mapping: - $ref: '#/components/schemas/ThreatMapping' - threat_query: - $ref: '#/components/schemas/ThreatQuery' - type: - description: Rule type - enum: - - threat_match - type: string - required: - - type - - query - - threat_query - - threat_mapping - - threat_index - ThreatMatchRuleResponseFields: - allOf: - - $ref: '#/components/schemas/ThreatMatchRuleRequiredFields' - - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - required: - - language - ThreatMatchRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/ThreatMatchRuleCreateFields' - ThreatQuery: - description: Query to run - type: string - ThreatSubtechnique: - type: object - properties: - id: - description: Subtechnique ID - type: string - name: - description: Subtechnique name - type: string - reference: - description: Subtechnique reference - type: string - required: - - id - - name - - reference - ThreatTactic: - type: object - properties: - id: - description: Tactic ID - type: string - name: - description: Tactic name - type: string - reference: - description: Tactic reference - type: string - required: - - id - - name - - reference - ThreatTechnique: - type: object - properties: - id: - description: Technique ID - type: string - name: - description: Technique name - type: string - reference: - description: Technique reference - type: string - subtechnique: - description: Array containing more specific information on the attack technique - items: - $ref: '#/components/schemas/ThreatSubtechnique' - type: array - required: - - id - - name - - reference - Threshold: - type: object - properties: - cardinality: - $ref: '#/components/schemas/ThresholdCardinality' - field: - $ref: '#/components/schemas/ThresholdField' - value: - $ref: '#/components/schemas/ThresholdValue' - required: - - field - - value - ThresholdAlertSuppression: - type: object - properties: - duration: - $ref: '#/components/schemas/AlertSuppressionDuration' - required: - - duration - ThresholdCardinality: - items: - type: object - properties: - field: - type: string - value: - minimum: 0 - type: integer - required: - - field - - value - type: array - ThresholdField: - description: Field to aggregate on - oneOf: - - type: string - - items: - type: string - type: array - ThresholdRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/ThresholdRuleResponseFields' - ThresholdRuleCreateFields: - allOf: - - $ref: '#/components/schemas/ThresholdRuleRequiredFields' - - $ref: '#/components/schemas/ThresholdRuleOptionalFields' - - $ref: '#/components/schemas/ThresholdRuleDefaultableFields' - ThresholdRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/ThresholdRuleCreateFields' - ThresholdRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - ThresholdRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/ThresholdAlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - saved_id: - $ref: '#/components/schemas/SavedQueryId' - ThresholdRulePatchFields: - allOf: - - type: object - properties: - query: - $ref: '#/components/schemas/RuleQuery' - threshold: - $ref: '#/components/schemas/Threshold' - type: - description: Rule type - enum: - - threshold - type: string - - $ref: '#/components/schemas/ThresholdRuleOptionalFields' - - $ref: '#/components/schemas/ThresholdRuleDefaultableFields' - ThresholdRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/ThresholdRulePatchFields' - ThresholdRuleRequiredFields: - type: object - properties: - query: - $ref: '#/components/schemas/RuleQuery' - threshold: - $ref: '#/components/schemas/Threshold' - type: - description: Rule type - enum: - - threshold - type: string - required: - - type - - query - - threshold - ThresholdRuleResponseFields: - allOf: - - $ref: '#/components/schemas/ThresholdRuleRequiredFields' - - $ref: '#/components/schemas/ThresholdRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - required: - - language - ThresholdRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/ThresholdRuleCreateFields' - ThresholdValue: - description: Threshold value - minimum: 1 - type: integer - ThrottleForBulkActions: - description: >- - The condition for throttling the notification: 'rule', 'no_actions', or - time duration - enum: - - rule - - 1h - - 1d - - 7d - type: string - TiebreakerField: - description: Sets a secondary field for sorting events - type: string - TimelineTemplateId: - description: Timeline template ID - type: string - TimelineTemplateTitle: - description: Timeline template title - type: string - TimestampField: - description: Contains the event timestamp used for sorting a sequence of events - type: string - TimestampOverride: - description: Sets the time field used to query indices - type: string - TimestampOverrideFallbackDisabled: - description: Disables the fallback to the event's @timestamp field - type: boolean - UUID: - description: A universally unique identifier - format: uuid - type: string - WarningSchema: - type: object - properties: - actionPath: - type: string - buttonLabel: - type: string - message: - type: string - type: - type: string - required: - - type - - message - - actionPath - securitySchemes: - BasicAuth: - scheme: basic - type: http -security: - - BasicAuth: [] -tags: - - description: >- - You can create rules that automatically turn events and external alerts - sent to Elastic Security into detection alerts. These alerts are displayed - on the Detections page. - name: Security Detections API - x-displayName: Security detections diff --git a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml deleted file mode 100644 index 9a0c456e5efe3..0000000000000 --- a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml +++ /dev/null @@ -1,1219 +0,0 @@ -openapi: 3.0.3 -info: - description: '' - title: Security Entity Analytics API (Elastic Cloud and self-hosted) - version: '2023-10-31' -servers: - - url: http://{kibana_host}:{port} - variables: - kibana_host: - default: localhost - port: - default: '5601' -paths: - /api/asset_criticality: - delete: - description: Delete the asset criticality record for a specific entity. - operationId: DeleteAssetCriticalityRecord - parameters: - - description: The ID value of the asset. - in: query - name: id_value - required: true - schema: - type: string - - description: The field representing the ID. - example: host.name - in: query - name: id_field - required: true - schema: - $ref: '#/components/schemas/IdField' - - description: If 'wait_for' the request will wait for the index refresh. - in: query - name: refresh - required: false - schema: - enum: - - wait_for - type: string - responses: - '200': - content: - application/json: - schema: - type: object - properties: - deleted: - description: >- - True if the record was deleted or false if the record did - not exist. - type: boolean - record: - $ref: '#/components/schemas/AssetCriticalityRecord' - description: The deleted record if it existed. - required: - - deleted - description: Successful response - '400': - description: Invalid request - summary: Delete an asset criticality record - tags: - - Security Entity Analytics API - get: - description: Get the asset criticality record for a specific entity. - operationId: GetAssetCriticalityRecord - parameters: - - description: The ID value of the asset. - in: query - name: id_value - required: true - schema: - type: string - - description: The field representing the ID. - example: host.name - in: query - name: id_field - required: true - schema: - $ref: '#/components/schemas/IdField' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/AssetCriticalityRecord' - description: Successful response - '400': - description: Invalid request - '404': - description: Criticality record not found - summary: Get an asset criticality record - tags: - - Security Entity Analytics API - post: - description: > - Create or update an asset criticality record for a specific entity. - - - If a record already exists for the specified entity, that record is - overwritten with the specified value. If a record doesn't exist for the - specified entity, a new record is created. - operationId: CreateAssetCriticalityRecord - requestBody: - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/CreateAssetCriticalityRecord' - - type: object - properties: - refresh: - description: >- - If 'wait_for' the request will wait for the index - refresh. - enum: - - wait_for - type: string - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/AssetCriticalityRecord' - description: Successful response - '400': - description: Invalid request - summary: Upsert an asset criticality record - tags: - - Security Entity Analytics API - /api/asset_criticality/bulk: - post: - description: > - Bulk upsert up to 1000 asset criticality records. - - - If asset criticality records already exist for the specified entities, - those records are overwritten with the specified values. If asset - criticality records don't exist for the specified entities, new records - are created. - operationId: BulkUpsertAssetCriticalityRecords - requestBody: - content: - application/json: - schema: - example: - records: - - criticality_level: low_impact - id_field: host.name - id_value: host-1 - - criticality_level: medium_impact - id_field: host.name - id_value: host-2 - type: object - properties: - records: - items: - $ref: '#/components/schemas/CreateAssetCriticalityRecord' - maxItems: 1000 - minItems: 1 - type: array - required: - - records - responses: - '200': - content: - application/json: - schema: - example: - errors: - - index: 0 - message: Invalid ID field - stats: - failed: 1 - successful: 1 - total: 2 - type: object - properties: - errors: - items: - $ref: '#/components/schemas/AssetCriticalityBulkUploadErrorItem' - type: array - stats: - $ref: '#/components/schemas/AssetCriticalityBulkUploadStats' - required: - - errors - - stats - description: Bulk upload successful - '413': - description: File too large - summary: Bulk upsert asset criticality records - tags: - - Security Entity Analytics API - /api/asset_criticality/list: - get: - description: List asset criticality records, paging, sorting and filtering as needed. - operationId: FindAssetCriticalityRecords - parameters: - - description: The field to sort by. - in: query - name: sort_field - required: false - schema: - enum: - - id_value - - id_field - - criticality_level - - \@timestamp - type: string - - description: The order to sort by. - in: query - name: sort_direction - required: false - schema: - enum: - - asc - - desc - type: string - - description: The page number to return. - in: query - name: page - required: false - schema: - minimum: 1 - type: integer - - description: The number of records to return per page. - in: query - name: per_page - required: false - schema: - maximum: 1000 - minimum: 1 - type: integer - - description: The kuery to filter by. - in: query - name: kuery - required: false - schema: - type: string - responses: - '200': - content: - application/json: - schema: - type: object - properties: - page: - minimum: 1 - type: integer - per_page: - maximum: 1000 - minimum: 1 - type: integer - records: - items: - $ref: '#/components/schemas/AssetCriticalityRecord' - type: array - total: - minimum: 0 - type: integer - required: - - records - - page - - per_page - - total - description: Bulk upload successful - summary: List asset criticality records - tags: - - Security Entity Analytics API - /api/entity_store/enable: - post: - operationId: InitEntityStore - requestBody: - content: - application/json: - schema: - type: object - properties: - fieldHistoryLength: - default: 10 - description: The number of historical values to keep for each field. - type: integer - filter: - type: string - indexPattern: - $ref: '#/components/schemas/IndexPattern' - description: Schema for the entity store initialization - required: true - responses: - '200': - content: - application/json: - schema: - type: object - properties: - engines: - items: - $ref: '#/components/schemas/EngineDescriptor' - type: array - succeeded: - type: boolean - description: Successful response - summary: Initialize the Entity Store - tags: - - Security Entity Analytics API - /api/entity_store/engines: - get: - operationId: ListEntityEngines - responses: - '200': - content: - application/json: - schema: - type: object - properties: - count: - type: integer - engines: - items: - $ref: '#/components/schemas/EngineDescriptor' - type: array - description: Successful response - summary: List the Entity Engines - tags: - - Security Entity Analytics API - /api/entity_store/engines/{entityType}: - delete: - operationId: DeleteEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - - description: Control flag to also delete the entity data. - in: query - name: data - required: false - schema: - type: boolean - responses: - '200': - content: - application/json: - schema: - type: object - properties: - deleted: - type: boolean - description: Successful response - summary: Delete the Entity Engine - tags: - - Security Entity Analytics API - get: - operationId: GetEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/EngineDescriptor' - description: Successful response - summary: Get an Entity Engine - tags: - - Security Entity Analytics API - /api/entity_store/engines/{entityType}/init: - post: - operationId: InitEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - requestBody: - content: - application/json: - schema: - type: object - properties: - fieldHistoryLength: - default: 10 - description: The number of historical values to keep for each field. - type: integer - filter: - type: string - indexPattern: - $ref: '#/components/schemas/IndexPattern' - description: Schema for the engine initialization - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/EngineDescriptor' - description: Successful response - summary: Initialize an Entity Engine - tags: - - Security Entity Analytics API - /api/entity_store/engines/{entityType}/start: - post: - operationId: StartEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - responses: - '200': - content: - application/json: - schema: - type: object - properties: - started: - type: boolean - description: Successful response - summary: Start an Entity Engine - tags: - - Security Entity Analytics API - /api/entity_store/engines/{entityType}/stop: - post: - operationId: StopEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - responses: - '200': - content: - application/json: - schema: - type: object - properties: - stopped: - type: boolean - description: Successful response - summary: Stop an Entity Engine - tags: - - Security Entity Analytics API - /api/entity_store/engines/apply_dataview_indices: - post: - operationId: ApplyEntityEngineDataviewIndices - responses: - '200': - content: - application/json: - schema: - type: object - properties: - result: - items: - $ref: '#/components/schemas/EngineDataviewUpdateResult' - type: array - success: - type: boolean - description: Successful response - '207': - content: - application/json: - schema: - type: object - properties: - errors: - items: - type: string - type: array - result: - items: - $ref: '#/components/schemas/EngineDataviewUpdateResult' - type: array - success: - type: boolean - description: Partial successful response - '500': - content: - application/json: - schema: - type: object - properties: - body: - type: string - statusCode: - type: number - description: Error response - summary: Apply DataView indices to all installed engines - tags: - - Security Entity Analytics API - /api/entity_store/entities/list: - get: - description: List entities records, paging, sorting and filtering as needed. - operationId: ListEntities - parameters: - - in: query - name: sort_field - required: false - schema: - type: string - - in: query - name: sort_order - required: false - schema: - enum: - - asc - - desc - type: string - - in: query - name: page - required: false - schema: - minimum: 1 - type: integer - - in: query - name: per_page - required: false - schema: - maximum: 10000 - minimum: 1 - type: integer - - description: An ES query to filter by. - in: query - name: filterQuery - required: false - schema: - type: string - - in: query - name: entities_types - required: true - schema: - items: - $ref: '#/components/schemas/EntityType' - type: array - responses: - '200': - content: - application/json: - schema: - type: object - properties: - inspect: - $ref: '#/components/schemas/InspectQuery' - page: - minimum: 1 - type: integer - per_page: - maximum: 1000 - minimum: 1 - type: integer - records: - items: - $ref: '#/components/schemas/Entity' - type: array - total: - minimum: 0 - type: integer - required: - - records - - page - - per_page - - total - description: Entities returned successfully - summary: List Entity Store Entities - tags: - - Security Entity Analytics API - /api/entity_store/status: - get: - operationId: GetEntityStoreStatus - parameters: - - description: >- - If true returns a detailed status of the engine including all it's - components - in: query - name: include_components - schema: - type: boolean - responses: - '200': - content: - application/json: - schema: - type: object - properties: - engines: - items: - allOf: - - $ref: '#/components/schemas/EngineDescriptor' - - type: object - properties: - components: - items: - $ref: '#/components/schemas/EngineComponentStatus' - type: array - type: array - status: - $ref: '#/components/schemas/StoreStatus' - required: - - status - - engines - description: Successful response - summary: Get the status of the Entity Store - tags: - - Security Entity Analytics API - /api/risk_score/engine/dangerously_delete_data: - delete: - description: >- - Cleaning up the the Risk Engine by removing the indices, mapping and - transforms - operationId: CleanUpRiskEngine - responses: - '200': - content: - application/json: - schema: - type: object - properties: - cleanup_successful: - type: boolean - description: Successful response - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/TaskManagerUnavailableResponse' - description: Task manager is unavailable - default: - content: - application/json: - schema: - $ref: '#/components/schemas/CleanUpRiskEngineErrorResponse' - description: Unexpected error - summary: Cleanup the Risk Engine - tags: - - Security Entity Analytics API - /api/risk_score/engine/schedule_now: - post: - description: >- - Schedule the risk scoring engine to run as soon as possible. You can use - this to recalculate entity risk scores after updating their asset - criticality. - operationId: ScheduleRiskEngineNow - requestBody: - content: - application/json: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RiskEngineScheduleNowResponse' - description: Successful response - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/TaskManagerUnavailableResponse' - description: Task manager is unavailable - default: - content: - application/json: - schema: - $ref: '#/components/schemas/RiskEngineScheduleNowErrorResponse' - description: Unexpected error - summary: Run the risk scoring engine - tags: - - Security Entity Analytics API -components: - schemas: - AssetCriticalityBulkUploadErrorItem: - type: object - properties: - index: - type: integer - message: - type: string - required: - - message - - index - AssetCriticalityBulkUploadStats: - type: object - properties: - failed: - type: integer - successful: - type: integer - total: - type: integer - required: - - successful - - failed - - total - AssetCriticalityLevel: - description: The criticality level of the asset. - enum: - - low_impact - - medium_impact - - high_impact - - extreme_impact - type: string - AssetCriticalityRecord: - allOf: - - $ref: '#/components/schemas/CreateAssetCriticalityRecord' - - $ref: '#/components/schemas/AssetCriticalityRecordEcsParts' - - type: object - properties: - '@timestamp': - description: The time the record was created or updated. - example: '2017-07-21T17:32:28Z' - format: date-time - type: string - required: - - '@timestamp' - AssetCriticalityRecordEcsParts: - type: object - properties: - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - asset - host: - type: object - properties: - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality - name: - type: string - required: - - name - user: - type: object - properties: - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality - name: - type: string - required: - - name - required: - - asset - AssetCriticalityRecordIdParts: - type: object - properties: - id_field: - $ref: '#/components/schemas/IdField' - description: The field representing the ID. - example: host.name - id_value: - description: The ID value of the asset. - type: string - required: - - id_value - - id_field - CleanUpRiskEngineErrorResponse: - type: object - properties: - cleanup_successful: - example: false - type: boolean - errors: - items: - type: object - properties: - error: - type: string - seq: - type: integer - required: - - seq - - error - type: array - required: - - cleanup_successful - - errors - CreateAssetCriticalityRecord: - allOf: - - $ref: '#/components/schemas/AssetCriticalityRecordIdParts' - - type: object - properties: - criticality_level: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality_level - EngineComponentResource: - enum: - - entity_engine - - entity_definition - - index - - component_template - - index_template - - ingest_pipeline - - enrich_policy - - task - - transform - type: string - EngineComponentStatus: - type: object - properties: - errors: - items: - type: object - properties: - message: - type: string - title: - type: string - type: array - health: - enum: - - green - - yellow - - red - - unknown - type: string - id: - type: string - installed: - type: boolean - resource: - $ref: '#/components/schemas/EngineComponentResource' - required: - - id - - installed - - resource - EngineDataviewUpdateResult: - type: object - properties: - changes: - type: object - properties: - indexPatterns: - items: - type: string - type: array - type: - type: string - required: - - type - EngineDescriptor: - type: object - properties: - error: - type: object - fieldHistoryLength: - type: integer - filter: - type: string - indexPattern: - $ref: '#/components/schemas/IndexPattern' - status: - $ref: '#/components/schemas/EngineStatus' - type: - $ref: '#/components/schemas/EntityType' - required: - - type - - indexPattern - - status - - fieldHistoryLength - EngineStatus: - enum: - - installing - - started - - stopped - - updating - - error - type: string - Entity: - oneOf: - - $ref: '#/components/schemas/UserEntity' - - $ref: '#/components/schemas/HostEntity' - EntityRiskLevels: - enum: - - Unknown - - Low - - Moderate - - High - - Critical - type: string - EntityRiskScoreRecord: - type: object - properties: - '@timestamp': - description: The time at which the risk score was calculated. - example: '2017-07-21T17:32:28Z' - format: date-time - type: string - calculated_level: - $ref: '#/components/schemas/EntityRiskLevels' - description: Lexical description of the entity's risk. - example: Critical - calculated_score: - description: The raw numeric value of the given entity's risk score. - format: double - type: number - calculated_score_norm: - description: >- - The normalized numeric value of the given entity's risk score. - Useful for comparing with other entities. - format: double - maximum: 100 - minimum: 0 - type: number - category_1_count: - description: >- - The number of risk input documents that contributed to the Category - 1 score (`category_1_score`). - format: integer - type: number - category_1_score: - description: >- - The contribution of Category 1 to the overall risk score - (`calculated_score`). Category 1 contains Detection Engine Alerts. - format: double - type: number - category_2_count: - format: integer - type: number - category_2_score: - format: double - type: number - criticality_level: - $ref: '#/components/schemas/AssetCriticalityLevel' - criticality_modifier: - format: double - type: number - id_field: - description: >- - The identifier field defining this risk score. Coupled with - `id_value`, uniquely identifies the entity being scored. - example: host.name - type: string - id_value: - description: >- - The identifier value defining this risk score. Coupled with - `id_field`, uniquely identifies the entity being scored. - example: example.host - type: string - inputs: - description: >- - A list of the highest-risk documents contributing to this risk - score. Useful for investigative purposes. - items: - $ref: '#/components/schemas/RiskScoreInput' - type: array - notes: - items: - type: string - type: array - required: - - '@timestamp' - - id_field - - id_value - - calculated_level - - calculated_score - - calculated_score_norm - - category_1_score - - category_1_count - - inputs - - notes - EntityType: - enum: - - user - - host - - service - type: string - HostEntity: - type: object - properties: - '@timestamp': - format: date-time - type: string - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality - entity: - type: object - properties: - name: - type: string - source: - type: string - required: - - name - - source - host: - type: object - properties: - architecture: - items: - type: string - type: array - domain: - items: - type: string - type: array - hostname: - items: - type: string - type: array - id: - items: - type: string - type: array - ip: - items: - type: string - type: array - mac: - items: - type: string - type: array - name: - type: string - risk: - $ref: '#/components/schemas/EntityRiskScoreRecord' - type: - items: - type: string - type: array - required: - - name - required: - - '@timestamp' - - host - - entity - IdField: - enum: - - host.name - - user.name - type: string - IndexPattern: - type: string - InspectQuery: - type: object - properties: - dsl: - items: - type: string - type: array - response: - items: - type: string - type: array - required: - - dsl - - response - RiskEngineScheduleNowErrorResponse: - type: object - properties: - full_error: - type: string - message: - type: string - required: - - message - - full_error - RiskEngineScheduleNowResponse: - type: object - properties: - success: - type: boolean - RiskScoreInput: - description: A generic representation of a document contributing to a Risk Score. - type: object - properties: - category: - description: The risk category of the risk input document. - example: category_1 - type: string - contribution_score: - format: double - type: number - description: - description: A human-readable description of the risk input document. - example: 'Generated from Detection Engine Rule: Malware Prevention Alert' - type: string - id: - description: The unique identifier (`_id`) of the original source document - example: 91a93376a507e86cfbf282166275b89f9dbdb1f0be6c8103c6ff2909ca8e1a1c - type: string - index: - description: The unique index (`_index`) of the original source document - example: .internal.alerts-security.alerts-default-000001 - type: string - risk_score: - description: The weighted risk score of the risk input document. - format: double - maximum: 100 - minimum: 0 - type: number - timestamp: - description: The @timestamp of the risk input document. - example: '2017-07-21T17:32:28Z' - type: string - required: - - id - - index - - description - - category - StoreStatus: - enum: - - not_installed - - installing - - running - - stopped - - error - type: string - TaskManagerUnavailableResponse: - description: Task manager is unavailable - type: object - properties: - message: - type: string - status_code: - minimum: 400 - type: integer - required: - - status_code - - message - UserEntity: - type: object - properties: - '@timestamp': - format: date-time - type: string - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality - entity: - type: object - properties: - name: - type: string - source: - type: string - required: - - name - - source - user: - type: object - properties: - domain: - items: - type: string - type: array - email: - items: - type: string - type: array - full_name: - items: - type: string - type: array - hash: - items: - type: string - type: array - id: - items: - type: string - type: array - name: - type: string - risk: - $ref: '#/components/schemas/EntityRiskScoreRecord' - roles: - items: - type: string - type: array - required: - - name - required: - - '@timestamp' - - user - - entity - securitySchemes: - BasicAuth: - scheme: basic - type: http -security: - - BasicAuth: [] -tags: - - description: '' - name: Security Entity Analytics API - x-displayName: Security entity analytics diff --git a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml b/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml deleted file mode 100644 index f81cc1227c893..0000000000000 --- a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml +++ /dev/null @@ -1,6260 +0,0 @@ -openapi: 3.0.3 -info: - description: >- - You can create rules that automatically turn events and external alerts sent - to Elastic Security into detection alerts. These alerts are displayed on the - Detections page. - title: Security Detections API (Elastic Cloud Serverless) - version: '2023-10-31' -servers: - - url: http://{kibana_host}:{port} - variables: - kibana_host: - default: localhost - port: - default: '5601' -paths: - /api/detection_engine/privileges: - get: - description: > - Retrieves whether or not the user is authenticated, and the user's - Kibana - - space and index privileges, which determine if the user can create an - - index for the Elastic Security alerts generated by - - detection engine rules. - operationId: ReadPrivileges - responses: - '200': - content: - application/json: - schema: - type: object - properties: - has_encryption_key: - type: boolean - is_authenticated: - type: boolean - required: - - is_authenticated - - has_encryption_key - description: Successful response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Returns user privileges for the Kibana space - tags: - - Security Detections API - - Privileges API - /api/detection_engine/rules: - delete: - description: Delete a detection rule using the `rule_id` or `id` field. - operationId: DeleteRule - parameters: - - description: The rule's `id` value. - in: query - name: id - required: false - schema: - $ref: '#/components/schemas/RuleObjectId' - - description: The rule's `rule_id` value. - in: query - name: rule_id - required: false - schema: - $ref: '#/components/schemas/RuleSignatureId' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Delete a detection rule - tags: - - Security Detections API - - Rules API - get: - description: Retrieve a detection rule using the `rule_id` or `id` field. - operationId: ReadRule - parameters: - - description: The rule's `id` value. - in: query - name: id - required: false - schema: - $ref: '#/components/schemas/RuleObjectId' - - description: The rule's `rule_id` value. - in: query - name: rule_id - required: false - schema: - $ref: '#/components/schemas/RuleSignatureId' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Retrieve a detection rule - tags: - - Security Detections API - - Rules API - patch: - description: >- - Update specific fields of an existing detection rule using the `rule_id` - or `id` field. - operationId: PatchRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RulePatchProps' - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Patch a detection rule - tags: - - Security Detections API - - Rules API - post: - description: Create a new detection rule. - operationId: CreateRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RuleCreateProps' - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Create a detection rule - tags: - - Security Detections API - - Rules API - put: - description: > - Update a detection rule using the `rule_id` or `id` field. The original - rule is replaced, and all unspecified fields are deleted. - - > info - - > You cannot modify the `id` or `rule_id` values. - operationId: UpdateRule - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RuleUpdateProps' - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleResponse' - description: Indicates a successful call. - summary: Update a detection rule - tags: - - Security Detections API - - Rules API - /api/detection_engine/rules/_bulk_action: - post: - description: >- - Apply a bulk action, such as bulk edit, duplicate, or delete, to - multiple detection rules. The bulk action is applied to all rules that - match the query or to the rules listed by their IDs. - operationId: PerformRulesBulkAction - parameters: - - description: Enables dry run mode for the request call. - in: query - name: dry_run - required: false - schema: - type: boolean - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/BulkDeleteRules' - - $ref: '#/components/schemas/BulkDisableRules' - - $ref: '#/components/schemas/BulkEnableRules' - - $ref: '#/components/schemas/BulkExportRules' - - $ref: '#/components/schemas/BulkDuplicateRules' - - $ref: '#/components/schemas/BulkManualRuleRun' - - $ref: '#/components/schemas/BulkEditRules' - responses: - '200': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/BulkEditActionResponse' - - $ref: '#/components/schemas/BulkExportActionResponse' - description: OK - summary: Apply a bulk action to detection rules - tags: - - Security Detections API - - Bulk API - /api/detection_engine/rules/_export: - post: - description: > - Export detection rules to an `.ndjson` file. The following configuration - items are also included in the `.ndjson` file: - - - Actions - - - Exception lists - - > info - - > You cannot export prebuilt rules. - operationId: ExportRules - parameters: - - description: Determines whether a summary of the exported rules is returned. - in: query - name: exclude_export_details - required: false - schema: - default: false - type: boolean - - description: File name for saving the exported rules. - in: query - name: file_name - required: false - schema: - default: export.ndjson - type: string - requestBody: - content: - application/json: - schema: - nullable: true - type: object - properties: - objects: - description: >- - Array of `rule_id` fields. Exports all rules when - unspecified. - items: - type: object - properties: - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - required: - - rule_id - type: array - required: - - objects - required: false - responses: - '200': - content: - application/ndjson: - schema: - description: An `.ndjson` file containing the returned rules. - format: binary - type: string - description: Indicates a successful call. - summary: Export detection rules - tags: - - Security Detections API - - Import/Export API - /api/detection_engine/rules/_find: - get: - description: >- - Retrieve a paginated list of detection rules. By default, the first page - is returned, with 20 results per page. - operationId: FindRules - parameters: - - in: query - name: fields - required: false - schema: - items: - type: string - type: array - - description: Search query - in: query - name: filter - required: false - schema: - type: string - - description: Field to sort by - in: query - name: sort_field - required: false - schema: - $ref: '#/components/schemas/FindRulesSortField' - - description: Sort order - in: query - name: sort_order - required: false - schema: - $ref: '#/components/schemas/SortOrder' - - description: Page number - in: query - name: page - required: false - schema: - default: 1 - minimum: 1 - type: integer - - description: Rules per page - in: query - name: per_page - required: false - schema: - default: 20 - minimum: 0 - type: integer - responses: - '200': - content: - application/json: - schema: - type: object - properties: - data: - items: - $ref: '#/components/schemas/RuleResponse' - type: array - page: - type: integer - perPage: - type: integer - total: - type: integer - required: - - page - - perPage - - total - - data - description: Successful response - summary: List all detection rules - tags: - - Security Detections API - - Rules API - /api/detection_engine/rules/_import: - post: - description: > - Import detection rules from an `.ndjson` file, including actions and - exception lists. The request must include: - - - The `Content-Type: multipart/form-data` HTTP header. - - - A link to the `.ndjson` file containing the rules. - operationId: ImportRules - parameters: - - description: >- - Determines whether existing rules with the same `rule_id` are - overwritten. - in: query - name: overwrite - required: false - schema: - default: false - type: boolean - - description: >- - Determines whether existing exception lists with the same `list_id` - are overwritten. - in: query - name: overwrite_exceptions - required: false - schema: - default: false - type: boolean - - description: >- - Determines whether existing actions with the same - `kibana.alert.rule.actions.id` are overwritten. - in: query - name: overwrite_action_connectors - required: false - schema: - default: false - type: boolean - - description: Generates a new list ID for each imported exception list. - in: query - name: as_new_list - required: false - schema: - default: false - type: boolean - requestBody: - content: - multipart/form-data: - schema: - type: object - properties: - file: - description: The `.ndjson` file containing the rules. - format: binary - type: string - required: true - responses: - '200': - content: - application/json: - schema: - additionalProperties: false - type: object - properties: - action_connectors_errors: - items: - $ref: '#/components/schemas/ErrorSchema' - type: array - action_connectors_success: - type: boolean - action_connectors_success_count: - minimum: 0 - type: integer - action_connectors_warnings: - items: - $ref: '#/components/schemas/WarningSchema' - type: array - errors: - items: - $ref: '#/components/schemas/ErrorSchema' - type: array - exceptions_errors: - items: - $ref: '#/components/schemas/ErrorSchema' - type: array - exceptions_success: - type: boolean - exceptions_success_count: - minimum: 0 - type: integer - rules_count: - minimum: 0 - type: integer - success: - type: boolean - success_count: - minimum: 0 - type: integer - required: - - exceptions_success - - exceptions_success_count - - exceptions_errors - - rules_count - - success - - success_count - - errors - - action_connectors_errors - - action_connectors_warnings - - action_connectors_success - - action_connectors_success_count - description: Indicates a successful call. - summary: Import detection rules - tags: - - Security Detections API - - Import/Export API - /api/detection_engine/rules/preview: - post: - operationId: RulePreview - parameters: - - description: >- - Enables logging and returning in response ES queries, performed - during rule execution - in: query - name: enable_logged_requests - required: false - schema: - type: boolean - requestBody: - content: - application/json: - schema: - anyOf: - - allOf: - - $ref: '#/components/schemas/EqlRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/QueryRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/SavedQueryRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/ThresholdRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/ThreatMatchRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/MachineLearningRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/NewTermsRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - - allOf: - - $ref: '#/components/schemas/EsqlRuleCreateProps' - - $ref: '#/components/schemas/RulePreviewParams' - discriminator: - propertyName: type - description: >- - An object containing tags to add or remove and alert ids the changes - will be applied - required: true - responses: - '200': - content: - application/json: - schema: - type: object - properties: - isAborted: - type: boolean - logs: - items: - $ref: '#/components/schemas/RulePreviewLogs' - type: array - previewId: - $ref: '#/components/schemas/NonEmptyString' - required: - - logs - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Preview rule alerts generated on specified time range - tags: - - Security Detections API - - Rule preview API - /api/detection_engine/signals/assignees: - post: - description: | - Assign users to detection alerts, and unassign them from alerts. - > info - > You cannot add and remove the same assignee in the same request. - operationId: SetAlertAssignees - requestBody: - content: - application/json: - schema: - type: object - properties: - assignees: - $ref: '#/components/schemas/AlertAssignees' - description: Details about the assignees to assign and unassign. - ids: - $ref: '#/components/schemas/AlertIds' - description: List of alerts ids to assign and unassign passed assignees. - required: - - assignees - - ids - required: true - responses: - '200': - description: Indicates a successful call. - '400': - description: Invalid request. - summary: Assign and unassign users from detection alerts - tags: - - Security Detections API - /api/detection_engine/signals/search: - post: - description: Find and/or aggregate detection alerts that match the given query. - operationId: SearchAlerts - requestBody: - content: - application/json: - schema: - description: Elasticsearch query and aggregation request - type: object - properties: - _source: - oneOf: - - type: boolean - - type: string - - items: - type: string - type: array - aggs: - additionalProperties: true - type: object - fields: - items: - type: string - type: array - query: - additionalProperties: true - type: object - runtime_mappings: - additionalProperties: true - type: object - size: - minimum: 0 - type: integer - sort: - $ref: '#/components/schemas/AlertsSort' - track_total_hits: - type: boolean - description: Search and/or aggregation query - required: true - responses: - '200': - content: - application/json: - schema: - additionalProperties: true - description: Elasticsearch search response - type: object - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Find and/or aggregate detection alerts - tags: - - Security Detections API - - Alerts API - /api/detection_engine/signals/status: - post: - description: Set the status of one or more detection alerts. - operationId: SetAlertsStatus - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/SetAlertsStatusByIds' - - $ref: '#/components/schemas/SetAlertsStatusByQuery' - description: >- - An object containing desired status and explicit alert ids or a query - to select alerts - required: true - responses: - '200': - content: - application/json: - schema: - additionalProperties: true - description: Elasticsearch update by query response - type: object - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Set a detection alert status - tags: - - Security Detections API - - Alerts API - /api/detection_engine/signals/tags: - post: - description: | - And tags to detection alerts, and remove them from alerts. - > info - > You cannot add and remove the same alert tag in the same request. - operationId: SetAlertTags - requestBody: - content: - application/json: - schema: - type: object - properties: - ids: - $ref: '#/components/schemas/AlertIds' - tags: - $ref: '#/components/schemas/SetAlertTags' - required: - - ids - - tags - description: >- - An object containing tags to add or remove and alert ids the changes - will be applied - required: true - responses: - '200': - content: - application/json: - schema: - additionalProperties: true - description: Elasticsearch update by query response - type: object - description: Successful response - '400': - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/PlatformErrorResponse' - - $ref: '#/components/schemas/SiemErrorResponse' - description: Invalid input data response - '401': - content: - application/json: - schema: - $ref: '#/components/schemas/PlatformErrorResponse' - description: Unsuccessful authentication response - '500': - content: - application/json: - schema: - $ref: '#/components/schemas/SiemErrorResponse' - description: Internal server error response - summary: Add and remove detection alert tags - tags: - - Security Detections API - - Alerts API - /api/detection_engine/tags: - get: - description: List all unique tags from all detection rules. - operationId: ReadTags - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RuleTagArray' - description: Indicates a successful call - summary: List all detection rule tags - tags: - - Security Detections API - - Tags API -components: - schemas: - AlertAssignees: - type: object - properties: - add: - description: A list of users ids to assign. - items: - $ref: '#/components/schemas/NonEmptyString' - type: array - remove: - description: A list of users ids to unassign. - items: - $ref: '#/components/schemas/NonEmptyString' - type: array - required: - - add - - remove - AlertIds: - description: A list of alerts ids. - items: - $ref: '#/components/schemas/NonEmptyString' - minItems: 1 - type: array - AlertsIndex: - deprecated: true - description: (deprecated) Has no effect. - type: string - AlertsIndexNamespace: - description: Has no effect. - type: string - AlertsSort: - oneOf: - - $ref: '#/components/schemas/AlertsSortCombinations' - - items: - $ref: '#/components/schemas/AlertsSortCombinations' - type: array - AlertsSortCombinations: - anyOf: - - type: string - - additionalProperties: true - type: object - AlertStatus: - enum: - - open - - closed - - acknowledged - - in-progress - type: string - AlertSuppression: - type: object - properties: - duration: - $ref: '#/components/schemas/AlertSuppressionDuration' - group_by: - $ref: '#/components/schemas/AlertSuppressionGroupBy' - missing_fields_strategy: - $ref: '#/components/schemas/AlertSuppressionMissingFieldsStrategy' - required: - - group_by - AlertSuppressionDuration: - type: object - properties: - unit: - $ref: '#/components/schemas/AlertSuppressionDurationUnit' - value: - minimum: 1 - type: integer - required: - - value - - unit - AlertSuppressionDurationUnit: - enum: - - s - - m - - h - type: string - AlertSuppressionGroupBy: - items: - type: string - maxItems: 3 - minItems: 1 - type: array - AlertSuppressionMissingFieldsStrategy: - description: >- - Describes how alerts will be generated for documents with missing - suppress by fields: - - doNotSuppress - per each document a separate alert will be created - - suppress - only alert will be created per suppress by bucket - enum: - - doNotSuppress - - suppress - type: string - AlertTag: - $ref: '#/components/schemas/NonEmptyString' - AlertTags: - items: - $ref: '#/components/schemas/AlertTag' - type: array - AnomalyThreshold: - description: Anomaly threshold - minimum: 0 - type: integer - BuildingBlockType: - description: >- - Determines if the rule acts as a building block. By default, - building-block alerts are not displayed in the UI. These rules are used - as a foundation for other rules that do generate alerts. Its value must - be default. - type: string - BulkActionEditPayload: - anyOf: - - $ref: '#/components/schemas/BulkActionEditPayloadTags' - - $ref: '#/components/schemas/BulkActionEditPayloadIndexPatterns' - - $ref: '#/components/schemas/BulkActionEditPayloadInvestigationFields' - - $ref: '#/components/schemas/BulkActionEditPayloadTimeline' - - $ref: '#/components/schemas/BulkActionEditPayloadRuleActions' - - $ref: '#/components/schemas/BulkActionEditPayloadSchedule' - BulkActionEditPayloadIndexPatterns: - type: object - properties: - overwrite_data_views: - type: boolean - type: - enum: - - add_index_patterns - - delete_index_patterns - - set_index_patterns - type: string - value: - $ref: '#/components/schemas/IndexPatternArray' - required: - - type - - value - BulkActionEditPayloadInvestigationFields: - type: object - properties: - type: - enum: - - add_investigation_fields - - delete_investigation_fields - - set_investigation_fields - type: string - value: - $ref: '#/components/schemas/InvestigationFields' - required: - - type - - value - BulkActionEditPayloadRuleActions: - type: object - properties: - type: - enum: - - add_rule_actions - - set_rule_actions - type: string - value: - type: object - properties: - actions: - items: - $ref: '#/components/schemas/NormalizedRuleAction' - type: array - throttle: - $ref: '#/components/schemas/ThrottleForBulkActions' - required: - - actions - required: - - type - - value - BulkActionEditPayloadSchedule: - type: object - properties: - type: - enum: - - set_schedule - type: string - value: - type: object - properties: - interval: - description: >- - Interval in which the rule runs. For example, `"1h"` means the - rule runs every hour. - example: 1h - pattern: ^[1-9]\d*[smh]$ - type: string - lookback: - description: Lookback time for the rule - example: 1h - pattern: ^[1-9]\d*[smh]$ - type: string - required: - - interval - - lookback - required: - - type - - value - BulkActionEditPayloadTags: - type: object - properties: - type: - enum: - - add_tags - - delete_tags - - set_tags - type: string - value: - $ref: '#/components/schemas/RuleTagArray' - required: - - type - - value - BulkActionEditPayloadTimeline: - type: object - properties: - type: - enum: - - set_timeline - type: string - value: - type: object - properties: - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - required: - - timeline_id - - timeline_title - required: - - type - - value - BulkActionsDryRunErrCode: - enum: - - IMMUTABLE - - MACHINE_LEARNING_AUTH - - MACHINE_LEARNING_INDEX_PATTERN - - ESQL_INDEX_PATTERN - - MANUAL_RULE_RUN_FEATURE - - MANUAL_RULE_RUN_DISABLED_RULE - type: string - BulkActionSkipResult: - type: object - properties: - id: - type: string - name: - type: string - skip_reason: - $ref: '#/components/schemas/BulkEditSkipReason' - required: - - id - - skip_reason - BulkDeleteRules: - type: object - properties: - action: - enum: - - delete - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkDisableRules: - type: object - properties: - action: - enum: - - disable - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkDuplicateRules: - type: object - properties: - action: - enum: - - duplicate - type: string - duplicate: - type: object - properties: - include_exceptions: - description: Whether to copy exceptions from the original rule - type: boolean - include_expired_exceptions: - description: Whether to copy expired exceptions from the original rule - type: boolean - required: - - include_exceptions - - include_expired_exceptions - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkEditActionResponse: - type: object - properties: - attributes: - type: object - properties: - errors: - items: - $ref: '#/components/schemas/NormalizedRuleError' - type: array - results: - $ref: '#/components/schemas/BulkEditActionResults' - summary: - $ref: '#/components/schemas/BulkEditActionSummary' - required: - - results - - summary - message: - type: string - rules_count: - type: integer - status_code: - type: integer - success: - type: boolean - required: - - attributes - BulkEditActionResults: - type: object - properties: - created: - items: - $ref: '#/components/schemas/RuleResponse' - type: array - deleted: - items: - $ref: '#/components/schemas/RuleResponse' - type: array - skipped: - items: - $ref: '#/components/schemas/BulkActionSkipResult' - type: array - updated: - items: - $ref: '#/components/schemas/RuleResponse' - type: array - required: - - updated - - created - - deleted - - skipped - BulkEditActionSummary: - type: object - properties: - failed: - type: integer - skipped: - type: integer - succeeded: - type: integer - total: - type: integer - required: - - failed - - skipped - - succeeded - - total - BulkEditRules: - type: object - properties: - action: - enum: - - edit - type: string - edit: - description: Array of objects containing the edit operations - items: - $ref: '#/components/schemas/BulkActionEditPayload' - minItems: 1 - type: array - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - - edit - BulkEditSkipReason: - enum: - - RULE_NOT_MODIFIED - type: string - BulkEnableRules: - type: object - properties: - action: - enum: - - enable - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkExportActionResponse: - type: string - BulkExportRules: - type: object - properties: - action: - enum: - - export - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - required: - - action - BulkManualRuleRun: - type: object - properties: - action: - enum: - - run - type: string - ids: - description: Array of rule IDs - items: - type: string - minItems: 1 - type: array - query: - description: Query to filter rules - type: string - run: - type: object - properties: - end_date: - description: End date of the manual rule run - type: string - start_date: - description: Start date of the manual rule run - type: string - required: - - start_date - required: - - action - - run - ConcurrentSearches: - minimum: 1 - type: integer - DataViewId: - type: string - DefaultParams: - type: object - properties: - command: - enum: - - isolate - type: string - comment: - type: string - required: - - command - EcsMapping: - additionalProperties: - type: object - properties: - field: - type: string - value: - oneOf: - - type: string - - items: - type: string - type: array - type: object - EndpointResponseAction: - type: object - properties: - action_type_id: - enum: - - .endpoint - type: string - params: - oneOf: - - $ref: '#/components/schemas/DefaultParams' - - $ref: '#/components/schemas/ProcessesParams' - required: - - action_type_id - - params - EqlOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - event_category_override: - $ref: '#/components/schemas/EventCategoryOverride' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - tiebreaker_field: - $ref: '#/components/schemas/TiebreakerField' - timestamp_field: - $ref: '#/components/schemas/TimestampField' - EqlQueryLanguage: - enum: - - eql - type: string - EqlRequiredFields: - type: object - properties: - language: - $ref: '#/components/schemas/EqlQueryLanguage' - description: Query language to use - query: - $ref: '#/components/schemas/RuleQuery' - description: EQL query to execute - type: - description: Rule type - enum: - - eql - type: string - required: - - type - - query - - language - EqlRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/EqlRuleResponseFields' - EqlRuleCreateFields: - allOf: - - $ref: '#/components/schemas/EqlRequiredFields' - - $ref: '#/components/schemas/EqlOptionalFields' - EqlRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/EqlRuleCreateFields' - EqlRulePatchFields: - allOf: - - type: object - properties: - language: - $ref: '#/components/schemas/EqlQueryLanguage' - description: Query language to use - query: - $ref: '#/components/schemas/RuleQuery' - description: EQL query to execute - type: - description: Rule type - enum: - - eql - type: string - - $ref: '#/components/schemas/EqlOptionalFields' - EqlRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/EqlRulePatchFields' - EqlRuleResponseFields: - allOf: - - $ref: '#/components/schemas/EqlRequiredFields' - - $ref: '#/components/schemas/EqlOptionalFields' - EqlRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/EqlRuleCreateFields' - ErrorSchema: - additionalProperties: false - type: object - properties: - error: - type: object - properties: - message: - type: string - status_code: - minimum: 400 - type: integer - required: - - status_code - - message - id: - type: string - item_id: - minLength: 1 - type: string - list_id: - minLength: 1 - type: string - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - required: - - error - EsqlQueryLanguage: - enum: - - esql - type: string - EsqlRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/EsqlRuleResponseFields' - EsqlRuleCreateFields: - allOf: - - $ref: '#/components/schemas/EsqlRuleOptionalFields' - - $ref: '#/components/schemas/EsqlRuleRequiredFields' - EsqlRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/EsqlRuleCreateFields' - EsqlRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - EsqlRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - language: - $ref: '#/components/schemas/EsqlQueryLanguage' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - query: - $ref: '#/components/schemas/RuleQuery' - description: ESQL query to execute - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - type: - description: Rule type - enum: - - esql - type: string - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/EsqlRuleOptionalFields' - EsqlRuleRequiredFields: - type: object - properties: - language: - $ref: '#/components/schemas/EsqlQueryLanguage' - query: - $ref: '#/components/schemas/RuleQuery' - description: ESQL query to execute - type: - description: Rule type - enum: - - esql - type: string - required: - - type - - language - - query - EsqlRuleResponseFields: - allOf: - - $ref: '#/components/schemas/EsqlRuleOptionalFields' - - $ref: '#/components/schemas/EsqlRuleRequiredFields' - EsqlRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/EsqlRuleCreateFields' - EventCategoryOverride: - type: string - ExceptionListType: - description: The exception type - enum: - - detection - - rule_default - - endpoint - - endpoint_trusted_apps - - endpoint_events - - endpoint_host_isolation_exceptions - - endpoint_blocklists - type: string - ExternalRuleSource: - description: >- - Type of rule source for externally sourced rules, i.e. rules that have - an external source, such as the Elastic Prebuilt rules repo. - type: object - properties: - is_customized: - $ref: '#/components/schemas/IsExternalRuleCustomized' - type: - enum: - - external - type: string - required: - - type - - is_customized - FindRulesSortField: - enum: - - created_at - - createdAt - - enabled - - execution_summary.last_execution.date - - execution_summary.last_execution.metrics.execution_gap_duration_s - - execution_summary.last_execution.metrics.total_indexing_duration_ms - - execution_summary.last_execution.metrics.total_search_duration_ms - - execution_summary.last_execution.status - - name - - risk_score - - riskScore - - severity - - updated_at - - updatedAt - type: string - HistoryWindowStart: - $ref: '#/components/schemas/NonEmptyString' - IndexPatternArray: - items: - type: string - type: array - InternalRuleSource: - description: >- - Type of rule source for internally sourced rules, i.e. created within - the Kibana apps. - type: object - properties: - type: - enum: - - internal - type: string - required: - - type - InvestigationFields: - description: > - Schema for fields relating to investigation fields. These are user - defined fields we use to highlight - - in various features in the UI such as alert details flyout and - exceptions auto-population from alert. - - Added in PR #163235 - - Right now we only have a single field but anticipate adding more related - fields to store various - - configuration states such as `override` - where a user might say if they - want only these fields to - - display, or if they want these fields + the fields we select. When - expanding this field, it may look - - something like: - - ```typescript - - const investigationFields = z.object({ - field_names: NonEmptyArray(NonEmptyString), - override: z.boolean().optional(), - }); - - ``` - type: object - properties: - field_names: - items: - $ref: '#/components/schemas/NonEmptyString' - minItems: 1 - type: array - required: - - field_names - InvestigationGuide: - description: Notes to help investigate alerts produced by the rule. - type: string - IsExternalRuleCustomized: - description: >- - Determines whether an external/prebuilt rule has been customized by the - user (i.e. any of its fields have been modified and diverged from the - base value). - type: boolean - IsRuleEnabled: - description: Determines whether the rule is enabled. - type: boolean - IsRuleImmutable: - deprecated: true - description: >- - This field determines whether the rule is a prebuilt Elastic rule. It - will be replaced with the `rule_source` field. - type: boolean - ItemsPerSearch: - minimum: 1 - type: integer - KqlQueryLanguage: - enum: - - kuery - - lucene - type: string - MachineLearningJobId: - description: Machine learning job ID - oneOf: - - type: string - - items: - type: string - minItems: 1 - type: array - MachineLearningRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/MachineLearningRuleResponseFields' - MachineLearningRuleCreateFields: - allOf: - - $ref: '#/components/schemas/MachineLearningRuleRequiredFields' - - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' - MachineLearningRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/MachineLearningRuleCreateFields' - MachineLearningRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - MachineLearningRulePatchFields: - allOf: - - type: object - properties: - anomaly_threshold: - $ref: '#/components/schemas/AnomalyThreshold' - machine_learning_job_id: - $ref: '#/components/schemas/MachineLearningJobId' - type: - description: Rule type - enum: - - machine_learning - type: string - - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' - MachineLearningRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/MachineLearningRulePatchFields' - MachineLearningRuleRequiredFields: - type: object - properties: - anomaly_threshold: - $ref: '#/components/schemas/AnomalyThreshold' - machine_learning_job_id: - $ref: '#/components/schemas/MachineLearningJobId' - type: - description: Rule type - enum: - - machine_learning - type: string - required: - - type - - machine_learning_job_id - - anomaly_threshold - MachineLearningRuleResponseFields: - allOf: - - $ref: '#/components/schemas/MachineLearningRuleRequiredFields' - - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' - MachineLearningRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/MachineLearningRuleCreateFields' - MaxSignals: - minimum: 1 - type: integer - NewTermsFields: - items: - type: string - maxItems: 3 - minItems: 1 - type: array - NewTermsRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/NewTermsRuleResponseFields' - NewTermsRuleCreateFields: - allOf: - - $ref: '#/components/schemas/NewTermsRuleRequiredFields' - - $ref: '#/components/schemas/NewTermsRuleOptionalFields' - - $ref: '#/components/schemas/NewTermsRuleDefaultableFields' - NewTermsRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/NewTermsRuleCreateFields' - NewTermsRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - NewTermsRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - NewTermsRulePatchFields: - allOf: - - type: object - properties: - history_window_start: - $ref: '#/components/schemas/HistoryWindowStart' - new_terms_fields: - $ref: '#/components/schemas/NewTermsFields' - query: - $ref: '#/components/schemas/RuleQuery' - type: - description: Rule type - enum: - - new_terms - type: string - - $ref: '#/components/schemas/NewTermsRuleOptionalFields' - - $ref: '#/components/schemas/NewTermsRuleDefaultableFields' - NewTermsRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/NewTermsRulePatchFields' - NewTermsRuleRequiredFields: - type: object - properties: - history_window_start: - $ref: '#/components/schemas/HistoryWindowStart' - new_terms_fields: - $ref: '#/components/schemas/NewTermsFields' - query: - $ref: '#/components/schemas/RuleQuery' - type: - description: Rule type - enum: - - new_terms - type: string - required: - - type - - query - - new_terms_fields - - history_window_start - NewTermsRuleResponseFields: - allOf: - - $ref: '#/components/schemas/NewTermsRuleRequiredFields' - - $ref: '#/components/schemas/NewTermsRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - required: - - language - NewTermsRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/NewTermsRuleCreateFields' - NonEmptyString: - description: A string that does not contain only whitespace characters - format: nonempty - minLength: 1 - type: string - NormalizedRuleAction: - additionalProperties: false - type: object - properties: - alerts_filter: - $ref: '#/components/schemas/RuleActionAlertsFilter' - frequency: - $ref: '#/components/schemas/RuleActionFrequency' - group: - $ref: '#/components/schemas/RuleActionGroup' - id: - $ref: '#/components/schemas/RuleActionId' - params: - $ref: '#/components/schemas/RuleActionParams' - required: - - id - - params - NormalizedRuleError: - type: object - properties: - err_code: - $ref: '#/components/schemas/BulkActionsDryRunErrCode' - message: - type: string - rules: - items: - $ref: '#/components/schemas/RuleDetailsInError' - type: array - status_code: - type: integer - required: - - message - - status_code - - rules - OsqueryParams: - type: object - properties: - ecs_mapping: - $ref: '#/components/schemas/EcsMapping' - pack_id: - type: string - queries: - items: - $ref: '#/components/schemas/OsqueryQuery' - type: array - query: - type: string - saved_query_id: - type: string - timeout: - type: number - OsqueryQuery: - type: object - properties: - ecs_mapping: - $ref: '#/components/schemas/EcsMapping' - id: - description: Query ID - type: string - platform: - type: string - query: - description: Query to run - type: string - removed: - type: boolean - snapshot: - type: boolean - version: - description: Query version - type: string - required: - - id - - query - OsqueryResponseAction: - type: object - properties: - action_type_id: - enum: - - .osquery - type: string - params: - $ref: '#/components/schemas/OsqueryParams' - required: - - action_type_id - - params - PlatformErrorResponse: - type: object - properties: - error: - type: string - message: - type: string - statusCode: - type: integer - required: - - statusCode - - error - - message - ProcessesParams: - type: object - properties: - command: - enum: - - kill-process - - suspend-process - type: string - comment: - type: string - config: - type: object - properties: - field: - description: Field to use instead of process.pid - type: string - overwrite: - default: true - description: Whether to overwrite field with process.pid - type: boolean - required: - - field - required: - - command - - config - QueryRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/QueryRuleResponseFields' - QueryRuleCreateFields: - allOf: - - $ref: '#/components/schemas/QueryRuleRequiredFields' - - $ref: '#/components/schemas/QueryRuleOptionalFields' - - $ref: '#/components/schemas/QueryRuleDefaultableFields' - QueryRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/QueryRuleCreateFields' - QueryRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - query: - $ref: '#/components/schemas/RuleQuery' - QueryRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - saved_id: - $ref: '#/components/schemas/SavedQueryId' - QueryRulePatchFields: - allOf: - - type: object - properties: - type: - description: Rule type - enum: - - query - type: string - - $ref: '#/components/schemas/QueryRuleOptionalFields' - - $ref: '#/components/schemas/QueryRuleDefaultableFields' - QueryRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/QueryRulePatchFields' - QueryRuleRequiredFields: - type: object - properties: - type: - description: Rule type - enum: - - query - type: string - required: - - type - QueryRuleResponseFields: - allOf: - - $ref: '#/components/schemas/QueryRuleRequiredFields' - - $ref: '#/components/schemas/QueryRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - query: - $ref: '#/components/schemas/RuleQuery' - required: - - query - - language - QueryRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/QueryRuleCreateFields' - RelatedIntegration: - description: > - Related integration is a potential dependency of a rule. It's assumed - that if the user installs - - one of the related integrations of a rule, the rule might start to work - properly because it will - - have source events (generated by this integration) potentially matching - the rule's query. - - - NOTE: Proper work is not guaranteed, because a related integration, if - installed, can be - - configured differently or generate data that is not necessarily relevant - for this rule. - - - Related integration is a combination of a Fleet package and (optionally) - one of the - - package's "integrations" that this package contains. It is represented - by 3 properties: - - - - `package`: name of the package (required, unique id) - - - `version`: version of the package (required, semver-compatible) - - - `integration`: name of the integration of this package (optional, id - within the package) - - - There are Fleet packages like `windows` that contain only one - integration; in this case, - - `integration` should be unspecified. There are also packages like `aws` - and `azure` that contain - - several integrations; in this case, `integration` should be specified. - - - @example - - const x: RelatedIntegration = { - package: 'windows', - version: '1.5.x', - }; - - - @example - - const x: RelatedIntegration = { - package: 'azure', - version: '~1.1.6', - integration: 'activitylogs', - }; - type: object - properties: - integration: - $ref: '#/components/schemas/NonEmptyString' - package: - $ref: '#/components/schemas/NonEmptyString' - version: - $ref: '#/components/schemas/NonEmptyString' - required: - - package - - version - RelatedIntegrationArray: - items: - $ref: '#/components/schemas/RelatedIntegration' - type: array - RequiredField: - description: > - Describes an Elasticsearch field that is needed for the rule to - function. - - - Almost all types of Security rules check source event documents for a - match to some kind of - - query or filter. If a document has certain field with certain values, - then it's a match and - - the rule will generate an alert. - - - Required field is an event field that must be present in the source - indices of a given rule. - - - @example - - const standardEcsField: RequiredField = { - name: 'event.action', - type: 'keyword', - ecs: true, - }; - - - @example - - const nonEcsField: RequiredField = { - name: 'winlog.event_data.AttributeLDAPDisplayName', - type: 'keyword', - ecs: false, - }; - type: object - properties: - ecs: - description: Whether the field is an ECS field - type: boolean - name: - $ref: '#/components/schemas/NonEmptyString' - description: Name of an Elasticsearch field - type: - $ref: '#/components/schemas/NonEmptyString' - description: Type of the Elasticsearch field - required: - - name - - type - - ecs - RequiredFieldArray: - items: - $ref: '#/components/schemas/RequiredField' - type: array - RequiredFieldInput: - description: >- - Input parameters to create a RequiredField. Does not include the `ecs` - field, because `ecs` is calculated on the backend based on the field - name and type. - type: object - properties: - name: - $ref: '#/components/schemas/NonEmptyString' - description: Name of an Elasticsearch field - type: - $ref: '#/components/schemas/NonEmptyString' - description: Type of an Elasticsearch field - required: - - name - - type - ResponseAction: - oneOf: - - $ref: '#/components/schemas/OsqueryResponseAction' - - $ref: '#/components/schemas/EndpointResponseAction' - ResponseFields: - type: object - properties: - created_at: - format: date-time - type: string - created_by: - type: string - execution_summary: - $ref: '#/components/schemas/RuleExecutionSummary' - id: - $ref: '#/components/schemas/RuleObjectId' - immutable: - $ref: '#/components/schemas/IsRuleImmutable' - required_fields: - $ref: '#/components/schemas/RequiredFieldArray' - revision: - minimum: 0 - type: integer - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_source: - $ref: '#/components/schemas/RuleSource' - updated_at: - format: date-time - type: string - updated_by: - type: string - required: - - id - - rule_id - - immutable - - rule_source - - updated_at - - updated_by - - created_at - - created_by - - revision - - related_integrations - - required_fields - RiskScore: - description: Risk score (0 to 100) - maximum: 100 - minimum: 0 - type: integer - RiskScoreMapping: - description: >- - Overrides generated alerts' risk_score with a value from the source - event - items: - type: object - properties: - field: - type: string - operator: - enum: - - equals - type: string - risk_score: - $ref: '#/components/schemas/RiskScore' - value: - type: string - required: - - field - - operator - - value - type: array - RuleAction: - type: object - properties: - action_type_id: - description: The action type used for sending notifications. - type: string - alerts_filter: - $ref: '#/components/schemas/RuleActionAlertsFilter' - frequency: - $ref: '#/components/schemas/RuleActionFrequency' - group: - $ref: '#/components/schemas/RuleActionGroup' - id: - $ref: '#/components/schemas/RuleActionId' - params: - $ref: '#/components/schemas/RuleActionParams' - uuid: - $ref: '#/components/schemas/NonEmptyString' - required: - - action_type_id - - id - - params - RuleActionAlertsFilter: - additionalProperties: true - type: object - RuleActionFrequency: - description: >- - The action frequency defines when the action runs (for example, only on - rule execution or at specific time intervals). - type: object - properties: - notifyWhen: - $ref: '#/components/schemas/RuleActionNotifyWhen' - summary: - description: >- - Action summary indicates whether we will send a summary notification - about all the generate alerts or notification per individual alert - type: boolean - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - nullable: true - required: - - summary - - notifyWhen - - throttle - RuleActionGroup: - description: >- - Optionally groups actions by use cases. Use `default` for alert - notifications. - type: string - RuleActionId: - description: The connector ID. - type: string - RuleActionNotifyWhen: - description: >- - The condition for throttling the notification: `onActionGroupChange`, - `onActiveAlert`, or `onThrottleInterval` - enum: - - onActiveAlert - - onThrottleInterval - - onActionGroupChange - type: string - RuleActionParams: - additionalProperties: true - description: >- - Object containing the allowed connector fields, which varies according - to the connector type. - type: object - RuleActionThrottle: - description: Defines how often rule actions are taken. - oneOf: - - enum: - - no_actions - - rule - type: string - - description: Time interval in seconds, minutes, hours, or days. - example: 1h - pattern: ^[1-9]\d*[smhd]$ - type: string - RuleAuthorArray: - items: - type: string - type: array - RuleCreateProps: - anyOf: - - $ref: '#/components/schemas/EqlRuleCreateProps' - - $ref: '#/components/schemas/QueryRuleCreateProps' - - $ref: '#/components/schemas/SavedQueryRuleCreateProps' - - $ref: '#/components/schemas/ThresholdRuleCreateProps' - - $ref: '#/components/schemas/ThreatMatchRuleCreateProps' - - $ref: '#/components/schemas/MachineLearningRuleCreateProps' - - $ref: '#/components/schemas/NewTermsRuleCreateProps' - - $ref: '#/components/schemas/EsqlRuleCreateProps' - discriminator: - propertyName: type - RuleDescription: - minLength: 1 - type: string - RuleDetailsInError: - type: object - properties: - id: - type: string - name: - type: string - required: - - id - RuleExceptionList: - type: object - properties: - id: - $ref: '#/components/schemas/NonEmptyString' - description: ID of the exception container - list_id: - $ref: '#/components/schemas/NonEmptyString' - description: List ID of the exception container - namespace_type: - description: Determines the exceptions validity in rule's Kibana space - enum: - - agnostic - - single - type: string - type: - $ref: '#/components/schemas/ExceptionListType' - required: - - id - - list_id - - type - - namespace_type - RuleExecutionMetrics: - type: object - properties: - execution_gap_duration_s: - description: Duration in seconds of execution gap - minimum: 0 - type: integer - total_enrichment_duration_ms: - description: >- - Total time spent enriching documents during current rule execution - cycle - minimum: 0 - type: integer - total_indexing_duration_ms: - description: >- - Total time spent indexing documents during current rule execution - cycle - minimum: 0 - type: integer - total_search_duration_ms: - description: >- - Total time spent performing ES searches as measured by Kibana; - includes network latency and time spent serializing/deserializing - request/response - minimum: 0 - type: integer - RuleExecutionStatus: - description: >- - Custom execution status of Security rules that is different from the - status used in the Alerting Framework. We merge our custom status with - the Framework's status to determine the resulting status of a rule. - - - going to run - @deprecated Replaced by the 'running' status but left - for backwards compatibility with rule execution events already written - to Event Log in the prior versions of Kibana. Don't use when writing - rule status changes. - - - running - Rule execution started but not reached any intermediate or - final status. - - - partial failure - Rule can partially fail for various reasons either - in the middle of an execution (in this case we update its status right - away) or in the end of it. So currently this status can be both - intermediate and final at the same time. A typical reason for a partial - failure: not all the indices that the rule searches over actually exist. - - - failed - Rule failed to execute due to unhandled exception or a reason - defined in the business logic of its executor function. - - - succeeded - Rule executed successfully without any issues. Note: this - status is just an indication of a rule's "health". The rule might or - might not generate any alerts despite of it. - enum: - - going to run - - running - - partial failure - - failed - - succeeded - type: string - RuleExecutionStatusOrder: - type: integer - RuleExecutionSummary: - type: object - properties: - last_execution: - type: object - properties: - date: - description: Date of the last execution - format: date-time - type: string - message: - type: string - metrics: - $ref: '#/components/schemas/RuleExecutionMetrics' - status: - $ref: '#/components/schemas/RuleExecutionStatus' - description: Status of the last execution - status_order: - $ref: '#/components/schemas/RuleExecutionStatusOrder' - required: - - date - - status - - status_order - - message - - metrics - required: - - last_execution - RuleFalsePositiveArray: - items: - type: string - type: array - RuleFilterArray: - items: {} - type: array - RuleInterval: - description: >- - Frequency of rule execution, using a date math range. For example, "1h" - means the rule runs every hour. Defaults to 5m (5 minutes). - type: string - RuleIntervalFrom: - description: >- - Time from which data is analyzed each time the rule runs, using a date - math range. For example, now-4200s means the rule analyzes data from 70 - minutes before its start time. Defaults to now-6m (analyzes data from 6 - minutes before the start time). - format: date-math - type: string - RuleIntervalTo: - type: string - RuleLicense: - description: The rule's license. - type: string - RuleMetadata: - additionalProperties: true - type: object - RuleName: - minLength: 1 - type: string - RuleNameOverride: - description: Sets the source field for the alert's signal.rule.name value - type: string - RuleObjectId: - $ref: '#/components/schemas/UUID' - RulePatchProps: - anyOf: - - $ref: '#/components/schemas/EqlRulePatchProps' - - $ref: '#/components/schemas/QueryRulePatchProps' - - $ref: '#/components/schemas/SavedQueryRulePatchProps' - - $ref: '#/components/schemas/ThresholdRulePatchProps' - - $ref: '#/components/schemas/ThreatMatchRulePatchProps' - - $ref: '#/components/schemas/MachineLearningRulePatchProps' - - $ref: '#/components/schemas/NewTermsRulePatchProps' - - $ref: '#/components/schemas/EsqlRulePatchProps' - RulePreviewLoggedRequest: - type: object - properties: - description: - $ref: '#/components/schemas/NonEmptyString' - duration: - type: integer - request: - $ref: '#/components/schemas/NonEmptyString' - required: - - request - RulePreviewLogs: - type: object - properties: - duration: - description: Execution duration in milliseconds - type: integer - errors: - items: - $ref: '#/components/schemas/NonEmptyString' - type: array - requests: - items: - $ref: '#/components/schemas/RulePreviewLoggedRequest' - type: array - startedAt: - $ref: '#/components/schemas/NonEmptyString' - warnings: - items: - $ref: '#/components/schemas/NonEmptyString' - type: array - required: - - errors - - warnings - - duration - RulePreviewParams: - type: object - properties: - invocationCount: - type: integer - timeframeEnd: - format: date-time - type: string - required: - - invocationCount - - timeframeEnd - RuleQuery: - type: string - RuleReferenceArray: - items: - type: string - type: array - RuleResponse: - anyOf: - - $ref: '#/components/schemas/EqlRule' - - $ref: '#/components/schemas/QueryRule' - - $ref: '#/components/schemas/SavedQueryRule' - - $ref: '#/components/schemas/ThresholdRule' - - $ref: '#/components/schemas/ThreatMatchRule' - - $ref: '#/components/schemas/MachineLearningRule' - - $ref: '#/components/schemas/NewTermsRule' - - $ref: '#/components/schemas/EsqlRule' - discriminator: - propertyName: type - RuleSignatureId: - description: Could be any string, not necessarily a UUID - type: string - RuleSource: - description: >- - Discriminated union that determines whether the rule is internally - sourced (created within the Kibana app) or has an external source, such - as the Elastic Prebuilt rules repo. - discriminator: - propertyName: type - oneOf: - - $ref: '#/components/schemas/ExternalRuleSource' - - $ref: '#/components/schemas/InternalRuleSource' - RuleTagArray: - description: >- - String array containing words and phrases to help categorize, filter, - and search rules. Defaults to an empty array. - items: - type: string - type: array - RuleUpdateProps: - anyOf: - - $ref: '#/components/schemas/EqlRuleUpdateProps' - - $ref: '#/components/schemas/QueryRuleUpdateProps' - - $ref: '#/components/schemas/SavedQueryRuleUpdateProps' - - $ref: '#/components/schemas/ThresholdRuleUpdateProps' - - $ref: '#/components/schemas/ThreatMatchRuleUpdateProps' - - $ref: '#/components/schemas/MachineLearningRuleUpdateProps' - - $ref: '#/components/schemas/NewTermsRuleUpdateProps' - - $ref: '#/components/schemas/EsqlRuleUpdateProps' - discriminator: - propertyName: type - RuleVersion: - description: The rule's version number. - minimum: 1 - type: integer - SavedObjectResolveAliasPurpose: - enum: - - savedObjectConversion - - savedObjectImport - type: string - SavedObjectResolveAliasTargetId: - type: string - SavedObjectResolveOutcome: - enum: - - exactMatch - - aliasMatch - - conflict - type: string - SavedQueryId: - type: string - SavedQueryRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/SavedQueryRuleResponseFields' - SavedQueryRuleCreateFields: - allOf: - - $ref: '#/components/schemas/SavedQueryRuleRequiredFields' - - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' - - $ref: '#/components/schemas/SavedQueryRuleDefaultableFields' - SavedQueryRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/SavedQueryRuleCreateFields' - SavedQueryRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - SavedQueryRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - query: - $ref: '#/components/schemas/RuleQuery' - SavedQueryRulePatchFields: - allOf: - - type: object - properties: - saved_id: - $ref: '#/components/schemas/SavedQueryId' - type: - description: Rule type - enum: - - saved_query - type: string - - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' - - $ref: '#/components/schemas/SavedQueryRuleDefaultableFields' - SavedQueryRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/SavedQueryRulePatchFields' - SavedQueryRuleRequiredFields: - type: object - properties: - saved_id: - $ref: '#/components/schemas/SavedQueryId' - type: - description: Rule type - enum: - - saved_query - type: string - required: - - type - - saved_id - SavedQueryRuleResponseFields: - allOf: - - $ref: '#/components/schemas/SavedQueryRuleRequiredFields' - - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - required: - - language - SavedQueryRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/SavedQueryRuleCreateFields' - SetAlertsStatusByIds: - type: object - properties: - signal_ids: - items: - $ref: '#/components/schemas/NonEmptyString' - minItems: 1 - type: array - status: - $ref: '#/components/schemas/AlertStatus' - required: - - signal_ids - - status - SetAlertsStatusByQuery: - type: object - properties: - conflicts: - default: abort - enum: - - abort - - proceed - type: string - query: - additionalProperties: true - type: object - status: - $ref: '#/components/schemas/AlertStatus' - required: - - query - - status - SetAlertTags: - type: object - properties: - tags_to_add: - $ref: '#/components/schemas/AlertTags' - tags_to_remove: - $ref: '#/components/schemas/AlertTags' - required: - - tags_to_add - - tags_to_remove - SetupGuide: - type: string - Severity: - description: Severity of the rule - enum: - - low - - medium - - high - - critical - type: string - SeverityMapping: - description: Overrides generated alerts' severity with values from the source event - items: - type: object - properties: - field: - type: string - operator: - enum: - - equals - type: string - severity: - $ref: '#/components/schemas/Severity' - value: - type: string - required: - - field - - operator - - severity - - value - type: array - SiemErrorResponse: - type: object - properties: - message: - type: string - status_code: - type: integer - required: - - status_code - - message - SortOrder: - enum: - - asc - - desc - type: string - Threat: - type: object - properties: - framework: - description: Relevant attack framework - type: string - tactic: - $ref: '#/components/schemas/ThreatTactic' - technique: - description: Array containing information on the attack techniques (optional) - items: - $ref: '#/components/schemas/ThreatTechnique' - type: array - required: - - framework - - tactic - ThreatArray: - items: - $ref: '#/components/schemas/Threat' - type: array - ThreatFilters: - items: - description: >- - Query and filter context array used to filter documents from the - Elasticsearch index containing the threat values - type: array - ThreatIndex: - items: - type: string - type: array - ThreatIndicatorPath: - description: >- - Defines the path to the threat indicator in the indicator documents - (optional) - type: string - ThreatMapping: - items: - type: object - properties: - entries: - items: - type: object - properties: - field: - $ref: '#/components/schemas/NonEmptyString' - type: - enum: - - mapping - type: string - value: - $ref: '#/components/schemas/NonEmptyString' - required: - - field - - type - - value - type: array - required: - - entries - minItems: 1 - type: array - ThreatMatchRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/ThreatMatchRuleResponseFields' - ThreatMatchRuleCreateFields: - allOf: - - $ref: '#/components/schemas/ThreatMatchRuleRequiredFields' - - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' - - $ref: '#/components/schemas/ThreatMatchRuleDefaultableFields' - ThreatMatchRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/ThreatMatchRuleCreateFields' - ThreatMatchRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - ThreatMatchRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/AlertSuppression' - concurrent_searches: - $ref: '#/components/schemas/ConcurrentSearches' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - items_per_search: - $ref: '#/components/schemas/ItemsPerSearch' - saved_id: - $ref: '#/components/schemas/SavedQueryId' - threat_filters: - $ref: '#/components/schemas/ThreatFilters' - threat_indicator_path: - $ref: '#/components/schemas/ThreatIndicatorPath' - threat_language: - $ref: '#/components/schemas/KqlQueryLanguage' - ThreatMatchRulePatchFields: - allOf: - - type: object - properties: - query: - $ref: '#/components/schemas/RuleQuery' - threat_index: - $ref: '#/components/schemas/ThreatIndex' - threat_mapping: - $ref: '#/components/schemas/ThreatMapping' - threat_query: - $ref: '#/components/schemas/ThreatQuery' - type: - description: Rule type - enum: - - threat_match - type: string - - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' - - $ref: '#/components/schemas/ThreatMatchRuleDefaultableFields' - ThreatMatchRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/ThreatMatchRulePatchFields' - ThreatMatchRuleRequiredFields: - type: object - properties: - query: - $ref: '#/components/schemas/RuleQuery' - threat_index: - $ref: '#/components/schemas/ThreatIndex' - threat_mapping: - $ref: '#/components/schemas/ThreatMapping' - threat_query: - $ref: '#/components/schemas/ThreatQuery' - type: - description: Rule type - enum: - - threat_match - type: string - required: - - type - - query - - threat_query - - threat_mapping - - threat_index - ThreatMatchRuleResponseFields: - allOf: - - $ref: '#/components/schemas/ThreatMatchRuleRequiredFields' - - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - required: - - language - ThreatMatchRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/ThreatMatchRuleCreateFields' - ThreatQuery: - description: Query to run - type: string - ThreatSubtechnique: - type: object - properties: - id: - description: Subtechnique ID - type: string - name: - description: Subtechnique name - type: string - reference: - description: Subtechnique reference - type: string - required: - - id - - name - - reference - ThreatTactic: - type: object - properties: - id: - description: Tactic ID - type: string - name: - description: Tactic name - type: string - reference: - description: Tactic reference - type: string - required: - - id - - name - - reference - ThreatTechnique: - type: object - properties: - id: - description: Technique ID - type: string - name: - description: Technique name - type: string - reference: - description: Technique reference - type: string - subtechnique: - description: Array containing more specific information on the attack technique - items: - $ref: '#/components/schemas/ThreatSubtechnique' - type: array - required: - - id - - name - - reference - Threshold: - type: object - properties: - cardinality: - $ref: '#/components/schemas/ThresholdCardinality' - field: - $ref: '#/components/schemas/ThresholdField' - value: - $ref: '#/components/schemas/ThresholdValue' - required: - - field - - value - ThresholdAlertSuppression: - type: object - properties: - duration: - $ref: '#/components/schemas/AlertSuppressionDuration' - required: - - duration - ThresholdCardinality: - items: - type: object - properties: - field: - type: string - value: - minimum: 0 - type: integer - required: - - field - - value - type: array - ThresholdField: - description: Field to aggregate on - oneOf: - - type: string - - items: - type: string - type: array - ThresholdRule: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - version - - tags - - enabled - - risk_score_mapping - - severity_mapping - - interval - - from - - to - - actions - - exceptions_list - - author - - false_positives - - references - - max_signals - - threat - - setup - - related_integrations - - required_fields - - $ref: '#/components/schemas/ResponseFields' - - $ref: '#/components/schemas/ThresholdRuleResponseFields' - ThresholdRuleCreateFields: - allOf: - - $ref: '#/components/schemas/ThresholdRuleRequiredFields' - - $ref: '#/components/schemas/ThresholdRuleOptionalFields' - - $ref: '#/components/schemas/ThresholdRuleDefaultableFields' - ThresholdRuleCreateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/ThresholdRuleCreateFields' - ThresholdRuleDefaultableFields: - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - ThresholdRuleOptionalFields: - type: object - properties: - alert_suppression: - $ref: '#/components/schemas/ThresholdAlertSuppression' - data_view_id: - $ref: '#/components/schemas/DataViewId' - filters: - $ref: '#/components/schemas/RuleFilterArray' - index: - $ref: '#/components/schemas/IndexPatternArray' - saved_id: - $ref: '#/components/schemas/SavedQueryId' - ThresholdRulePatchFields: - allOf: - - type: object - properties: - query: - $ref: '#/components/schemas/RuleQuery' - threshold: - $ref: '#/components/schemas/Threshold' - type: - description: Rule type - enum: - - threshold - type: string - - $ref: '#/components/schemas/ThresholdRuleOptionalFields' - - $ref: '#/components/schemas/ThresholdRuleDefaultableFields' - ThresholdRulePatchProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - - $ref: '#/components/schemas/ThresholdRulePatchFields' - ThresholdRuleRequiredFields: - type: object - properties: - query: - $ref: '#/components/schemas/RuleQuery' - threshold: - $ref: '#/components/schemas/Threshold' - type: - description: Rule type - enum: - - threshold - type: string - required: - - type - - query - - threshold - ThresholdRuleResponseFields: - allOf: - - $ref: '#/components/schemas/ThresholdRuleRequiredFields' - - $ref: '#/components/schemas/ThresholdRuleOptionalFields' - - type: object - properties: - language: - $ref: '#/components/schemas/KqlQueryLanguage' - required: - - language - ThresholdRuleUpdateProps: - allOf: - - type: object - properties: - actions: - items: - $ref: '#/components/schemas/RuleAction' - type: array - alias_purpose: - $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' - alias_target_id: - $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' - author: - $ref: '#/components/schemas/RuleAuthorArray' - building_block_type: - $ref: '#/components/schemas/BuildingBlockType' - description: - $ref: '#/components/schemas/RuleDescription' - enabled: - $ref: '#/components/schemas/IsRuleEnabled' - exceptions_list: - items: - $ref: '#/components/schemas/RuleExceptionList' - type: array - false_positives: - $ref: '#/components/schemas/RuleFalsePositiveArray' - from: - $ref: '#/components/schemas/RuleIntervalFrom' - id: - $ref: '#/components/schemas/RuleObjectId' - interval: - $ref: '#/components/schemas/RuleInterval' - investigation_fields: - $ref: '#/components/schemas/InvestigationFields' - license: - $ref: '#/components/schemas/RuleLicense' - max_signals: - $ref: '#/components/schemas/MaxSignals' - meta: - $ref: '#/components/schemas/RuleMetadata' - name: - $ref: '#/components/schemas/RuleName' - namespace: - $ref: '#/components/schemas/AlertsIndexNamespace' - note: - $ref: '#/components/schemas/InvestigationGuide' - outcome: - $ref: '#/components/schemas/SavedObjectResolveOutcome' - output_index: - $ref: '#/components/schemas/AlertsIndex' - references: - $ref: '#/components/schemas/RuleReferenceArray' - related_integrations: - $ref: '#/components/schemas/RelatedIntegrationArray' - required_fields: - items: - $ref: '#/components/schemas/RequiredFieldInput' - type: array - response_actions: - items: - $ref: '#/components/schemas/ResponseAction' - type: array - risk_score: - $ref: '#/components/schemas/RiskScore' - risk_score_mapping: - $ref: '#/components/schemas/RiskScoreMapping' - rule_id: - $ref: '#/components/schemas/RuleSignatureId' - rule_name_override: - $ref: '#/components/schemas/RuleNameOverride' - setup: - $ref: '#/components/schemas/SetupGuide' - severity: - $ref: '#/components/schemas/Severity' - severity_mapping: - $ref: '#/components/schemas/SeverityMapping' - tags: - $ref: '#/components/schemas/RuleTagArray' - threat: - $ref: '#/components/schemas/ThreatArray' - throttle: - $ref: '#/components/schemas/RuleActionThrottle' - timeline_id: - $ref: '#/components/schemas/TimelineTemplateId' - timeline_title: - $ref: '#/components/schemas/TimelineTemplateTitle' - timestamp_override: - $ref: '#/components/schemas/TimestampOverride' - timestamp_override_fallback_disabled: - $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' - to: - $ref: '#/components/schemas/RuleIntervalTo' - version: - $ref: '#/components/schemas/RuleVersion' - required: - - name - - description - - risk_score - - severity - - $ref: '#/components/schemas/ThresholdRuleCreateFields' - ThresholdValue: - description: Threshold value - minimum: 1 - type: integer - ThrottleForBulkActions: - description: >- - The condition for throttling the notification: 'rule', 'no_actions', or - time duration - enum: - - rule - - 1h - - 1d - - 7d - type: string - TiebreakerField: - description: Sets a secondary field for sorting events - type: string - TimelineTemplateId: - description: Timeline template ID - type: string - TimelineTemplateTitle: - description: Timeline template title - type: string - TimestampField: - description: Contains the event timestamp used for sorting a sequence of events - type: string - TimestampOverride: - description: Sets the time field used to query indices - type: string - TimestampOverrideFallbackDisabled: - description: Disables the fallback to the event's @timestamp field - type: boolean - UUID: - description: A universally unique identifier - format: uuid - type: string - WarningSchema: - type: object - properties: - actionPath: - type: string - buttonLabel: - type: string - message: - type: string - type: - type: string - required: - - type - - message - - actionPath - securitySchemes: - BasicAuth: - scheme: basic - type: http -security: - - BasicAuth: [] -tags: - - description: >- - You can create rules that automatically turn events and external alerts - sent to Elastic Security into detection alerts. These alerts are displayed - on the Detections page. - name: Security Detections API - x-displayName: Security detections diff --git a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml deleted file mode 100644 index 356a63567c401..0000000000000 --- a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml +++ /dev/null @@ -1,1219 +0,0 @@ -openapi: 3.0.3 -info: - description: '' - title: Security Entity Analytics API (Elastic Cloud Serverless) - version: '2023-10-31' -servers: - - url: http://{kibana_host}:{port} - variables: - kibana_host: - default: localhost - port: - default: '5601' -paths: - /api/asset_criticality: - delete: - description: Delete the asset criticality record for a specific entity. - operationId: DeleteAssetCriticalityRecord - parameters: - - description: The ID value of the asset. - in: query - name: id_value - required: true - schema: - type: string - - description: The field representing the ID. - example: host.name - in: query - name: id_field - required: true - schema: - $ref: '#/components/schemas/IdField' - - description: If 'wait_for' the request will wait for the index refresh. - in: query - name: refresh - required: false - schema: - enum: - - wait_for - type: string - responses: - '200': - content: - application/json: - schema: - type: object - properties: - deleted: - description: >- - True if the record was deleted or false if the record did - not exist. - type: boolean - record: - $ref: '#/components/schemas/AssetCriticalityRecord' - description: The deleted record if it existed. - required: - - deleted - description: Successful response - '400': - description: Invalid request - summary: Delete an asset criticality record - tags: - - Security Entity Analytics API - get: - description: Get the asset criticality record for a specific entity. - operationId: GetAssetCriticalityRecord - parameters: - - description: The ID value of the asset. - in: query - name: id_value - required: true - schema: - type: string - - description: The field representing the ID. - example: host.name - in: query - name: id_field - required: true - schema: - $ref: '#/components/schemas/IdField' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/AssetCriticalityRecord' - description: Successful response - '400': - description: Invalid request - '404': - description: Criticality record not found - summary: Get an asset criticality record - tags: - - Security Entity Analytics API - post: - description: > - Create or update an asset criticality record for a specific entity. - - - If a record already exists for the specified entity, that record is - overwritten with the specified value. If a record doesn't exist for the - specified entity, a new record is created. - operationId: CreateAssetCriticalityRecord - requestBody: - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/CreateAssetCriticalityRecord' - - type: object - properties: - refresh: - description: >- - If 'wait_for' the request will wait for the index - refresh. - enum: - - wait_for - type: string - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/AssetCriticalityRecord' - description: Successful response - '400': - description: Invalid request - summary: Upsert an asset criticality record - tags: - - Security Entity Analytics API - /api/asset_criticality/bulk: - post: - description: > - Bulk upsert up to 1000 asset criticality records. - - - If asset criticality records already exist for the specified entities, - those records are overwritten with the specified values. If asset - criticality records don't exist for the specified entities, new records - are created. - operationId: BulkUpsertAssetCriticalityRecords - requestBody: - content: - application/json: - schema: - example: - records: - - criticality_level: low_impact - id_field: host.name - id_value: host-1 - - criticality_level: medium_impact - id_field: host.name - id_value: host-2 - type: object - properties: - records: - items: - $ref: '#/components/schemas/CreateAssetCriticalityRecord' - maxItems: 1000 - minItems: 1 - type: array - required: - - records - responses: - '200': - content: - application/json: - schema: - example: - errors: - - index: 0 - message: Invalid ID field - stats: - failed: 1 - successful: 1 - total: 2 - type: object - properties: - errors: - items: - $ref: '#/components/schemas/AssetCriticalityBulkUploadErrorItem' - type: array - stats: - $ref: '#/components/schemas/AssetCriticalityBulkUploadStats' - required: - - errors - - stats - description: Bulk upload successful - '413': - description: File too large - summary: Bulk upsert asset criticality records - tags: - - Security Entity Analytics API - /api/asset_criticality/list: - get: - description: List asset criticality records, paging, sorting and filtering as needed. - operationId: FindAssetCriticalityRecords - parameters: - - description: The field to sort by. - in: query - name: sort_field - required: false - schema: - enum: - - id_value - - id_field - - criticality_level - - \@timestamp - type: string - - description: The order to sort by. - in: query - name: sort_direction - required: false - schema: - enum: - - asc - - desc - type: string - - description: The page number to return. - in: query - name: page - required: false - schema: - minimum: 1 - type: integer - - description: The number of records to return per page. - in: query - name: per_page - required: false - schema: - maximum: 1000 - minimum: 1 - type: integer - - description: The kuery to filter by. - in: query - name: kuery - required: false - schema: - type: string - responses: - '200': - content: - application/json: - schema: - type: object - properties: - page: - minimum: 1 - type: integer - per_page: - maximum: 1000 - minimum: 1 - type: integer - records: - items: - $ref: '#/components/schemas/AssetCriticalityRecord' - type: array - total: - minimum: 0 - type: integer - required: - - records - - page - - per_page - - total - description: Bulk upload successful - summary: List asset criticality records - tags: - - Security Entity Analytics API - /api/entity_store/enable: - post: - operationId: InitEntityStore - requestBody: - content: - application/json: - schema: - type: object - properties: - fieldHistoryLength: - default: 10 - description: The number of historical values to keep for each field. - type: integer - filter: - type: string - indexPattern: - $ref: '#/components/schemas/IndexPattern' - description: Schema for the entity store initialization - required: true - responses: - '200': - content: - application/json: - schema: - type: object - properties: - engines: - items: - $ref: '#/components/schemas/EngineDescriptor' - type: array - succeeded: - type: boolean - description: Successful response - summary: Initialize the Entity Store - tags: - - Security Entity Analytics API - /api/entity_store/engines: - get: - operationId: ListEntityEngines - responses: - '200': - content: - application/json: - schema: - type: object - properties: - count: - type: integer - engines: - items: - $ref: '#/components/schemas/EngineDescriptor' - type: array - description: Successful response - summary: List the Entity Engines - tags: - - Security Entity Analytics API - /api/entity_store/engines/{entityType}: - delete: - operationId: DeleteEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - - description: Control flag to also delete the entity data. - in: query - name: data - required: false - schema: - type: boolean - responses: - '200': - content: - application/json: - schema: - type: object - properties: - deleted: - type: boolean - description: Successful response - summary: Delete the Entity Engine - tags: - - Security Entity Analytics API - get: - operationId: GetEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/EngineDescriptor' - description: Successful response - summary: Get an Entity Engine - tags: - - Security Entity Analytics API - /api/entity_store/engines/{entityType}/init: - post: - operationId: InitEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - requestBody: - content: - application/json: - schema: - type: object - properties: - fieldHistoryLength: - default: 10 - description: The number of historical values to keep for each field. - type: integer - filter: - type: string - indexPattern: - $ref: '#/components/schemas/IndexPattern' - description: Schema for the engine initialization - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/EngineDescriptor' - description: Successful response - summary: Initialize an Entity Engine - tags: - - Security Entity Analytics API - /api/entity_store/engines/{entityType}/start: - post: - operationId: StartEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - responses: - '200': - content: - application/json: - schema: - type: object - properties: - started: - type: boolean - description: Successful response - summary: Start an Entity Engine - tags: - - Security Entity Analytics API - /api/entity_store/engines/{entityType}/stop: - post: - operationId: StopEntityEngine - parameters: - - description: The entity type of the engine (either 'user' or 'host'). - in: path - name: entityType - required: true - schema: - $ref: '#/components/schemas/EntityType' - responses: - '200': - content: - application/json: - schema: - type: object - properties: - stopped: - type: boolean - description: Successful response - summary: Stop an Entity Engine - tags: - - Security Entity Analytics API - /api/entity_store/engines/apply_dataview_indices: - post: - operationId: ApplyEntityEngineDataviewIndices - responses: - '200': - content: - application/json: - schema: - type: object - properties: - result: - items: - $ref: '#/components/schemas/EngineDataviewUpdateResult' - type: array - success: - type: boolean - description: Successful response - '207': - content: - application/json: - schema: - type: object - properties: - errors: - items: - type: string - type: array - result: - items: - $ref: '#/components/schemas/EngineDataviewUpdateResult' - type: array - success: - type: boolean - description: Partial successful response - '500': - content: - application/json: - schema: - type: object - properties: - body: - type: string - statusCode: - type: number - description: Error response - summary: Apply DataView indices to all installed engines - tags: - - Security Entity Analytics API - /api/entity_store/entities/list: - get: - description: List entities records, paging, sorting and filtering as needed. - operationId: ListEntities - parameters: - - in: query - name: sort_field - required: false - schema: - type: string - - in: query - name: sort_order - required: false - schema: - enum: - - asc - - desc - type: string - - in: query - name: page - required: false - schema: - minimum: 1 - type: integer - - in: query - name: per_page - required: false - schema: - maximum: 10000 - minimum: 1 - type: integer - - description: An ES query to filter by. - in: query - name: filterQuery - required: false - schema: - type: string - - in: query - name: entities_types - required: true - schema: - items: - $ref: '#/components/schemas/EntityType' - type: array - responses: - '200': - content: - application/json: - schema: - type: object - properties: - inspect: - $ref: '#/components/schemas/InspectQuery' - page: - minimum: 1 - type: integer - per_page: - maximum: 1000 - minimum: 1 - type: integer - records: - items: - $ref: '#/components/schemas/Entity' - type: array - total: - minimum: 0 - type: integer - required: - - records - - page - - per_page - - total - description: Entities returned successfully - summary: List Entity Store Entities - tags: - - Security Entity Analytics API - /api/entity_store/status: - get: - operationId: GetEntityStoreStatus - parameters: - - description: >- - If true returns a detailed status of the engine including all it's - components - in: query - name: include_components - schema: - type: boolean - responses: - '200': - content: - application/json: - schema: - type: object - properties: - engines: - items: - allOf: - - $ref: '#/components/schemas/EngineDescriptor' - - type: object - properties: - components: - items: - $ref: '#/components/schemas/EngineComponentStatus' - type: array - type: array - status: - $ref: '#/components/schemas/StoreStatus' - required: - - status - - engines - description: Successful response - summary: Get the status of the Entity Store - tags: - - Security Entity Analytics API - /api/risk_score/engine/dangerously_delete_data: - delete: - description: >- - Cleaning up the the Risk Engine by removing the indices, mapping and - transforms - operationId: CleanUpRiskEngine - responses: - '200': - content: - application/json: - schema: - type: object - properties: - cleanup_successful: - type: boolean - description: Successful response - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/TaskManagerUnavailableResponse' - description: Task manager is unavailable - default: - content: - application/json: - schema: - $ref: '#/components/schemas/CleanUpRiskEngineErrorResponse' - description: Unexpected error - summary: Cleanup the Risk Engine - tags: - - Security Entity Analytics API - /api/risk_score/engine/schedule_now: - post: - description: >- - Schedule the risk scoring engine to run as soon as possible. You can use - this to recalculate entity risk scores after updating their asset - criticality. - operationId: ScheduleRiskEngineNow - requestBody: - content: - application/json: {} - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/RiskEngineScheduleNowResponse' - description: Successful response - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/TaskManagerUnavailableResponse' - description: Task manager is unavailable - default: - content: - application/json: - schema: - $ref: '#/components/schemas/RiskEngineScheduleNowErrorResponse' - description: Unexpected error - summary: Run the risk scoring engine - tags: - - Security Entity Analytics API -components: - schemas: - AssetCriticalityBulkUploadErrorItem: - type: object - properties: - index: - type: integer - message: - type: string - required: - - message - - index - AssetCriticalityBulkUploadStats: - type: object - properties: - failed: - type: integer - successful: - type: integer - total: - type: integer - required: - - successful - - failed - - total - AssetCriticalityLevel: - description: The criticality level of the asset. - enum: - - low_impact - - medium_impact - - high_impact - - extreme_impact - type: string - AssetCriticalityRecord: - allOf: - - $ref: '#/components/schemas/CreateAssetCriticalityRecord' - - $ref: '#/components/schemas/AssetCriticalityRecordEcsParts' - - type: object - properties: - '@timestamp': - description: The time the record was created or updated. - example: '2017-07-21T17:32:28Z' - format: date-time - type: string - required: - - '@timestamp' - AssetCriticalityRecordEcsParts: - type: object - properties: - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - asset - host: - type: object - properties: - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality - name: - type: string - required: - - name - user: - type: object - properties: - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality - name: - type: string - required: - - name - required: - - asset - AssetCriticalityRecordIdParts: - type: object - properties: - id_field: - $ref: '#/components/schemas/IdField' - description: The field representing the ID. - example: host.name - id_value: - description: The ID value of the asset. - type: string - required: - - id_value - - id_field - CleanUpRiskEngineErrorResponse: - type: object - properties: - cleanup_successful: - example: false - type: boolean - errors: - items: - type: object - properties: - error: - type: string - seq: - type: integer - required: - - seq - - error - type: array - required: - - cleanup_successful - - errors - CreateAssetCriticalityRecord: - allOf: - - $ref: '#/components/schemas/AssetCriticalityRecordIdParts' - - type: object - properties: - criticality_level: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality_level - EngineComponentResource: - enum: - - entity_engine - - entity_definition - - index - - component_template - - index_template - - ingest_pipeline - - enrich_policy - - task - - transform - type: string - EngineComponentStatus: - type: object - properties: - errors: - items: - type: object - properties: - message: - type: string - title: - type: string - type: array - health: - enum: - - green - - yellow - - red - - unknown - type: string - id: - type: string - installed: - type: boolean - resource: - $ref: '#/components/schemas/EngineComponentResource' - required: - - id - - installed - - resource - EngineDataviewUpdateResult: - type: object - properties: - changes: - type: object - properties: - indexPatterns: - items: - type: string - type: array - type: - type: string - required: - - type - EngineDescriptor: - type: object - properties: - error: - type: object - fieldHistoryLength: - type: integer - filter: - type: string - indexPattern: - $ref: '#/components/schemas/IndexPattern' - status: - $ref: '#/components/schemas/EngineStatus' - type: - $ref: '#/components/schemas/EntityType' - required: - - type - - indexPattern - - status - - fieldHistoryLength - EngineStatus: - enum: - - installing - - started - - stopped - - updating - - error - type: string - Entity: - oneOf: - - $ref: '#/components/schemas/UserEntity' - - $ref: '#/components/schemas/HostEntity' - EntityRiskLevels: - enum: - - Unknown - - Low - - Moderate - - High - - Critical - type: string - EntityRiskScoreRecord: - type: object - properties: - '@timestamp': - description: The time at which the risk score was calculated. - example: '2017-07-21T17:32:28Z' - format: date-time - type: string - calculated_level: - $ref: '#/components/schemas/EntityRiskLevels' - description: Lexical description of the entity's risk. - example: Critical - calculated_score: - description: The raw numeric value of the given entity's risk score. - format: double - type: number - calculated_score_norm: - description: >- - The normalized numeric value of the given entity's risk score. - Useful for comparing with other entities. - format: double - maximum: 100 - minimum: 0 - type: number - category_1_count: - description: >- - The number of risk input documents that contributed to the Category - 1 score (`category_1_score`). - format: integer - type: number - category_1_score: - description: >- - The contribution of Category 1 to the overall risk score - (`calculated_score`). Category 1 contains Detection Engine Alerts. - format: double - type: number - category_2_count: - format: integer - type: number - category_2_score: - format: double - type: number - criticality_level: - $ref: '#/components/schemas/AssetCriticalityLevel' - criticality_modifier: - format: double - type: number - id_field: - description: >- - The identifier field defining this risk score. Coupled with - `id_value`, uniquely identifies the entity being scored. - example: host.name - type: string - id_value: - description: >- - The identifier value defining this risk score. Coupled with - `id_field`, uniquely identifies the entity being scored. - example: example.host - type: string - inputs: - description: >- - A list of the highest-risk documents contributing to this risk - score. Useful for investigative purposes. - items: - $ref: '#/components/schemas/RiskScoreInput' - type: array - notes: - items: - type: string - type: array - required: - - '@timestamp' - - id_field - - id_value - - calculated_level - - calculated_score - - calculated_score_norm - - category_1_score - - category_1_count - - inputs - - notes - EntityType: - enum: - - user - - host - - service - type: string - HostEntity: - type: object - properties: - '@timestamp': - format: date-time - type: string - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality - entity: - type: object - properties: - name: - type: string - source: - type: string - required: - - name - - source - host: - type: object - properties: - architecture: - items: - type: string - type: array - domain: - items: - type: string - type: array - hostname: - items: - type: string - type: array - id: - items: - type: string - type: array - ip: - items: - type: string - type: array - mac: - items: - type: string - type: array - name: - type: string - risk: - $ref: '#/components/schemas/EntityRiskScoreRecord' - type: - items: - type: string - type: array - required: - - name - required: - - '@timestamp' - - host - - entity - IdField: - enum: - - host.name - - user.name - type: string - IndexPattern: - type: string - InspectQuery: - type: object - properties: - dsl: - items: - type: string - type: array - response: - items: - type: string - type: array - required: - - dsl - - response - RiskEngineScheduleNowErrorResponse: - type: object - properties: - full_error: - type: string - message: - type: string - required: - - message - - full_error - RiskEngineScheduleNowResponse: - type: object - properties: - success: - type: boolean - RiskScoreInput: - description: A generic representation of a document contributing to a Risk Score. - type: object - properties: - category: - description: The risk category of the risk input document. - example: category_1 - type: string - contribution_score: - format: double - type: number - description: - description: A human-readable description of the risk input document. - example: 'Generated from Detection Engine Rule: Malware Prevention Alert' - type: string - id: - description: The unique identifier (`_id`) of the original source document - example: 91a93376a507e86cfbf282166275b89f9dbdb1f0be6c8103c6ff2909ca8e1a1c - type: string - index: - description: The unique index (`_index`) of the original source document - example: .internal.alerts-security.alerts-default-000001 - type: string - risk_score: - description: The weighted risk score of the risk input document. - format: double - maximum: 100 - minimum: 0 - type: number - timestamp: - description: The @timestamp of the risk input document. - example: '2017-07-21T17:32:28Z' - type: string - required: - - id - - index - - description - - category - StoreStatus: - enum: - - not_installed - - installing - - running - - stopped - - error - type: string - TaskManagerUnavailableResponse: - description: Task manager is unavailable - type: object - properties: - message: - type: string - status_code: - minimum: 400 - type: integer - required: - - status_code - - message - UserEntity: - type: object - properties: - '@timestamp': - format: date-time - type: string - asset: - type: object - properties: - criticality: - $ref: '#/components/schemas/AssetCriticalityLevel' - required: - - criticality - entity: - type: object - properties: - name: - type: string - source: - type: string - required: - - name - - source - user: - type: object - properties: - domain: - items: - type: string - type: array - email: - items: - type: string - type: array - full_name: - items: - type: string - type: array - hash: - items: - type: string - type: array - id: - items: - type: string - type: array - name: - type: string - risk: - $ref: '#/components/schemas/EntityRiskScoreRecord' - roles: - items: - type: string - type: array - required: - - name - required: - - '@timestamp' - - user - - entity - securitySchemes: - BasicAuth: - scheme: basic - type: http -security: - - BasicAuth: [] -tags: - - description: '' - name: Security Entity Analytics API - x-displayName: Security entity analytics diff --git a/x-pack/plugins/security_solution/docs/siem_migration/img/agent_graph.png b/x-pack/plugins/security_solution/docs/siem_migration/img/agent_graph.png deleted file mode 100644 index a1f9cca5a34a7..0000000000000 Binary files a/x-pack/plugins/security_solution/docs/siem_migration/img/agent_graph.png and /dev/null differ diff --git a/x-pack/plugins/security_solution/jest.config.dev.js b/x-pack/plugins/security_solution/jest.config.dev.js deleted file mode 100644 index 1aaace56c5f88..0000000000000 --- a/x-pack/plugins/security_solution/jest.config.dev.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../', - projects: [ - '<rootDir>/x-pack/plugins/security_solution/common/*/jest.config.js', - '<rootDir>/x-pack/plugins/security_solution/server/*/jest.config.js', - '<rootDir>/x-pack/plugins/security_solution/public/*/jest.config.js', - '<rootDir>/x-pack/plugins/security_solution/scripts/junit_transformer/*/jest.config.js', - ], -}; diff --git a/x-pack/plugins/security_solution/jest.integration.config.js b/x-pack/plugins/security_solution/jest.integration.config.js deleted file mode 100644 index 046faf5e6198c..0000000000000 --- a/x-pack/plugins/security_solution/jest.integration.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test/jest_integration', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution'], -}; diff --git a/x-pack/plugins/security_solution/package.json b/x-pack/plugins/security_solution/package.json deleted file mode 100644 index fd1be833c5d6b..0000000000000 --- a/x-pack/plugins/security_solution/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "author": "Elastic", - "name": "@kbn/security-solution-plugin", - "version": "1.0.0", - "private": true, - "license": "Elastic License 2.0", - "scripts": { - "extract-mitre-attacks": "node scripts/extract_tactics_techniques_mitre.js && node ../../../scripts/eslint ./public/detections/mitre/mitre_tactics_techniques.ts --fix", - "build-beat-doc": "node scripts/beat_docs/build.js && node ../../../scripts/eslint ../timelines/server/utils/beat_schema/fields.ts --fix", - "cypress": "NODE_OPTIONS=--openssl-legacy-provider ../../../node_modules/.bin/cypress", - "cypress:burn": "yarn cypress:dw run --env burn=2 --headed", - "cypress:changed-specs-only": "yarn cypress:dw run --changed-specs-only --env burn=2", - "cypress:dw": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel --config-file ./public/management/cypress/cypress.config.ts --ftr-config-file ../../test/defend_workflows_cypress/cli_config", - "cypress:dw:open": "yarn cypress:dw open", - "cypress:dw:run": "yarn cypress:dw run", - "cypress:dw:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel --config-file ./public/management/cypress/cypress_serverless.config.ts --ftr-config-file ../../test/defend_workflows_cypress/serverless_config", - "cypress:dw:serverless:open": "yarn cypress:dw:serverless open", - "cypress:dw:serverless:run": "yarn cypress:dw:serverless run", - "cypress:dw:qa:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel_serverless --config-file ./public/management/cypress/cypress_serverless_qa.config.ts", - "cypress:dw:qa:serverless:run": "yarn cypress:dw:qa:serverless run", - "cypress:dw:serverless:changed-specs-only": "yarn cypress:dw:serverless run --changed-specs-only --env burn=2", - "cypress:dw:endpoint": "echo '\n** WARNING **: Run script `cypress:dw:endpoint` no longer valid! Use `cypress:dw` instead\n'", - "cypress:dw:endpoint:run": "echo '\n** WARNING **: Run script `cypress:dw:endpoint:run` no longer valid! Use `cypress:dw:run` instead\n'", - "cypress:dw:endpoint:open": "echo '\n** WARNING **: Run script `cypress:dw:endpoint:open` no longer valid! Use `cypress:dw:open` instead\n'", - "junit:merge": "../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-security-solution/cypress/results/mochawesome*.json > ../../../target/kibana-security-solution/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-security-solution/cypress/results/output.json --reportDir ../../../target/kibana-security-solution/cypress/results && yarn junit:transform && mkdir -p ../../../target/junit && cp ../../../target/kibana-security-solution/cypress/results/*.xml ../../../target/junit/", - "test:generate": "node scripts/endpoint/resolver_generator", - "test:generate:serverless-dev": "NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings scripts/endpoint/resolver_generator --node https://elastic_serverless:changeme@127.0.0.1:9200 --kibana http://elastic_serverless:changeme@127.0.0.1:5601", - "mappings:generate": "node scripts/mappings/mappings_generator", - "mappings:load": "node scripts/mappings/mappings_loader", - "siem-migrations:graph:draw": "node scripts/siem_migration/draw_graphs", - "junit:transform": "node scripts/junit_transformer --pathPattern '../../../target/kibana-security-solution/cypress/results/*.xml' --rootDirectory ../../../ --reportName 'Security Solution Cypress' --writeInPlace", - "openapi:generate": "node scripts/openapi/generate", - "openapi:generate:debug": "node --inspect-brk scripts/openapi/generate", - "openapi:bundle:detections": "node scripts/openapi/bundle_detections", - "openapi:bundle:timeline": "node scripts/openapi/bundle_timeline", - "openapi:bundle:entity-analytics": "node scripts/openapi/bundle_entity_analytics", - "openapi:bundle:endpoint-management": "node scripts/openapi/bundle_endpoint_management" - } -} \ No newline at end of file diff --git a/x-pack/plugins/security_solution/public/app/jest.config.js b/x-pack/plugins/security_solution/public/app/jest.config.js deleted file mode 100644 index 089b6e238c09b..0000000000000 --- a/x-pack/plugins/security_solution/public/app/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/app'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/app', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/public/app/**/*.{ts,tsx}'], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/assistant/jest.config.js b/x-pack/plugins/security_solution/public/assistant/jest.config.js deleted file mode 100644 index 184141b299f4a..0000000000000 --- a/x-pack/plugins/security_solution/public/assistant/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/assistant'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/assistant', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/assistant/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/assistant/provider.test.tsx b/x-pack/plugins/security_solution/public/assistant/provider.test.tsx deleted file mode 100644 index a96623b8567a8..0000000000000 --- a/x-pack/plugins/security_solution/public/assistant/provider.test.tsx +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { act, renderHook } from '@testing-library/react-hooks'; -import { httpServiceMock, type HttpSetupMock } from '@kbn/core-http-browser-mocks'; -import type { Storage } from '@kbn/kibana-utils-plugin/public'; -import { createConversations } from './provider'; -import { coreMock } from '@kbn/core/public/mocks'; -import { loadAllActions as loadConnectors } from '@kbn/triggers-actions-ui-plugin/public/common/constants'; - -jest.mock('./use_assistant_availability'); - -jest.mock('@kbn/elastic-assistant/impl/assistant/api'); -jest.mock('../common/hooks/use_license', () => ({ - useLicense: () => ({ - isEnterprise: () => true, - }), - licenseService: { - isEnterprise: () => true, - }, -})); -jest.mock('@kbn/triggers-actions-ui-plugin/public/common/constants'); -let http: HttpSetupMock = coreMock.createSetup().http; -export const mockConnectors = [ - { - id: 'my-gen-ai', - name: 'Captain Connector', - isMissingSecrets: false, - actionTypeId: '.gen-ai', - secrets: {}, - isPreconfigured: false, - isDeprecated: false, - isSystemAction: false, - config: { - apiProvider: 'OpenAI', - }, - }, - { - id: 'my-bedrock', - name: 'Professor Connector', - isMissingSecrets: false, - actionTypeId: '.bedrock', - secrets: {}, - isPreconfigured: false, - isDeprecated: false, - isSystemAction: false, - }, -]; -const conversations = { - 'Alert summary': { - id: 'Alert summary', - isDefault: true, - apiConfig: { - connectorId: 'my-bedrock', - defaultSystemPromptId: 'default-system-prompt', - }, - replacements: { - '2a39da36-f5f4-4265-90ff-a0b2df2eb932': '192.168.0.4', - 'c960d0e7-96b4-4b7a-b287-65f33fc7a812': '142.250.72.78', - '76d4a1d1-dbc3-4427-927e-b31b36856dc2': 'Test-MacBook-Pro.local', - '7bb8a91c-fcbb-4430-9742-cfaad2917d37': - '9d628163346d084eb8b3926cbf10cdee034b48e0cf83f0edf6921bc0dc83f0dd', - }, - messages: [ - { - content: - 'You are a helpful, expert assistant who answers questions about Elastic Security. Do not answer questions unrelated to Elastic Security.\nIf you answer a question related to KQL, EQL, or ES|QL, it should be immediately usable within an Elastic Security timeline; please always format the output correctly with back ticks. Any answer provided for Query DSL should also be usable in a security timeline. This means you should only ever include the "filter" portion of the query.\nUse the following context to answer questions:\n\nCONTEXT:\n"""\n@timestamp,2024-01-23T19:15:59.194Z\n_id,7bb8a91c-fcbb-4430-9742-cfaad2917d37\ndestination.ip,c960d0e7-96b4-4b7a-b287-65f33fc7a812\nevent.action,network_flow\nevent.category,network\nevent.dataset,flow\nevent.type,connection\nhost.name,76d4a1d1-dbc3-4427-927e-b31b36856dc2\nkibana.alert.last_detected,2024-01-23T19:15:59.230Z\nkibana.alert.risk_score,21\nkibana.alert.rule.description,a\nkibana.alert.rule.name,a\nkibana.alert.severity,low\nkibana.alert.workflow_status,open\nsource.ip,2a39da36-f5f4-4265-90ff-a0b2df2eb932\n"""\n\nEvaluate the event from the context above and format your output neatly in markdown syntax for my Elastic Security case.\nAdd your description, recommended actions and bulleted triage steps. Use the MITRE ATT&CK data provided to add more context and recommendations from MITRE, and hyperlink to the relevant pages on MITRE\'s website. Be sure to include the user and host risk score data from the context. Your response should include steps that point to Elastic Security specific features, including endpoint response actions, the Elastic Agent OSQuery manager integration (with example osquery queries), timelines and entity analytics and link to all the relevant Elastic Security documentation.', - role: 'user', - timestamp: '1/23/2024, 12:23:44 PM', - }, - { - role: 'assistant', - reader: {}, - timestamp: '1/23/2024, 3:29:46 PM', - isError: false, - content: '', - }, - ], - }, - 'Data Quality dashboard': { - id: 'Data Quality dashboard', - isDefault: true, - apiConfig: { - connectorId: 'my-gen-ai', - defaultSystemPromptId: 'default-system-prompt', - }, - messages: [ - { - content: - 'You are a helpful, expert assistant who answers questions about Elastic Security. ', - role: 'user', - timestamp: '18/03/2024, 12:05:03', - }, - { - role: 'assistant', - reader: {}, - timestamp: '19/03/2024, 12:05:03', - isError: false, - content: - 'Sure, here is an example of a KQL (Kibana Query Language) query that finds records where the `event.action` field contains the word "failure":\n\n```js\nevent.action: "failure"\n```\n\nIn Kibana, there are a variety of operators and techniques you can use to further enhance your search. For instance, you can combine multiple search terms or use wildcards.\n\nHere is an advanced example showing a combined search:\n\n```js\n(event.action: "failure") AND (user.name: "testuser")\n```\nThis will return only the events where `event.action` is "failure" and `user.name` is "testuser".\n\nFor more detailed information, you can check the official [Elasticsearch KQL documentation](https://www.elastic.co/guide/en/kibana/current/kuery-query.html)', - }, - ], - }, - 'Detection Rules': { - id: 'Detection Rules', - isDefault: true, - messages: [], - apiConfig: {}, - }, - 'Event summary': { - id: 'Event summary', - isDefault: true, - messages: [], - apiConfig: {}, - }, - Timeline: { - excludeFromLastConversationStorage: true, - id: 'Timeline', - isDefault: true, - messages: [], - apiConfig: {}, - }, - Welcome: { - id: 'Welcome', - isDefault: true, - theme: { - title: 'Elastic AI Assistant', - titleIcon: 'logoSecurity', - assistant: { - name: 'Elastic AI Assistant', - icon: 'logoSecurity', - }, - system: { - icon: 'logoElastic', - }, - user: {}, - }, - apiConfig: { - connectorId: 'my-gen-ai', - defaultSystemPromptId: 'default-system-prompt', - }, - messages: [], - }, -}; -const getItemStorageMock = jest.fn().mockReturnValue(conversations); -const mockStorage = { - store: jest.fn(), - set: jest.fn(), - remove: jest.fn(), - clear: jest.fn(), - get: getItemStorageMock, - getItem: jest.fn(), - setItem: jest.fn(), - removeItem: jest.fn(), -}; - -describe('createConversations', () => { - beforeEach(() => { - jest.clearAllMocks(); - http = httpServiceMock.createStartContract(); - (loadConnectors as jest.Mock).mockResolvedValue(mockConnectors); - }); - - it('should call bulk conversations with the transformed conversations from the local storage', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => - createConversations( - coreMock.createStart().notifications, - http, - mockStorage as unknown as Storage - ) - ); - await waitForNextUpdate(); - expect(http.fetch.mock.calls[0][0]).toBe( - '/internal/elastic_assistant/current_user/conversations/_bulk_action' - ); - expect( - http.fetch.mock.calls[0].length > 1 - ? // eslint-disable-next-line @typescript-eslint/no-explicit-any - JSON.parse((http.fetch.mock.calls[0] as any[])[1]?.body).create.length - : 0 - ).toBe(2); - }); - }); - - it('should add missing actionTypeId to apiConfig', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => - createConversations( - coreMock.createStart().notifications, - http, - mockStorage as unknown as Storage - ) - ); - await waitForNextUpdate(); - expect(http.fetch.mock.calls[0][0]).toBe( - '/internal/elastic_assistant/current_user/conversations/_bulk_action' - ); - const createdConversations = - http.fetch.mock.calls[0].length > 1 - ? // eslint-disable-next-line @typescript-eslint/no-explicit-any - JSON.parse((http.fetch.mock.calls[0] as any[])[1]?.body)?.create - : []; - expect(createdConversations[0].apiConfig.actionTypeId).toEqual('.bedrock'); - expect(createdConversations[1].apiConfig.actionTypeId).toEqual('.gen-ai'); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx b/x-pack/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx deleted file mode 100644 index b90db333742a4..0000000000000 --- a/x-pack/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { renderHook } from '@testing-library/react-hooks'; -import { useAssistantTelemetry } from '.'; -import { BASE_SECURITY_CONVERSATIONS } from '../content/conversations'; -import { createTelemetryServiceMock } from '../../common/lib/telemetry/telemetry_service.mock'; -import { AssistantEventTypes } from '../../common/lib/telemetry'; - -const customId = `My Convo`; -const mockedConversations = { - ...BASE_SECURITY_CONVERSATIONS, - [customId]: { - id: customId, - apiConfig: {}, - replacements: {}, - messages: [], - }, -}; - -const mockedTelemetry = { - ...createTelemetryServiceMock(), -}; - -jest.mock('../../common/lib/kibana', () => { - const original = jest.requireActual('../../common/lib/kibana'); - - return { - ...original, - useKibana: () => ({ - services: { - telemetry: mockedTelemetry, - }, - }), - }; -}); - -jest.mock('@kbn/elastic-assistant', () => ({ - getConversationById: jest.fn().mockReturnValue({ - id: customId, - title: 'Custom', - apiConfig: {}, - replacements: {}, - messages: [], - }), -})); - -const trackingFns = [ - { name: 'reportAssistantInvoked', eventType: AssistantEventTypes.AssistantInvoked }, - { name: 'reportAssistantMessageSent', eventType: AssistantEventTypes.AssistantMessageSent }, - { name: 'reportAssistantQuickPrompt', eventType: AssistantEventTypes.AssistantQuickPrompt }, -]; - -describe('useAssistantTelemetry', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - it('should return the expected telemetry object with tracking functions', () => { - const { result } = renderHook(() => useAssistantTelemetry()); - trackingFns.forEach((fn) => { - expect(result.current).toHaveProperty(fn.name); - }); - }); - - describe.each(trackingFns)('Handles %s id masking', (fn) => { - it('Should call tracking with appropriate id when tracking is called with an isDefault=true conversation id', async () => { - const { result } = renderHook(() => useAssistantTelemetry()); - const validId = Object.keys(mockedConversations)[0]; - // @ts-ignore - const trackingFn = result.current[fn.name]; - await trackingFn({ conversationId: validId, invokedBy: 'shortcut' }); - // @ts-ignore - const trackingMockedFn = mockedTelemetry.reportEvent; - expect(trackingMockedFn).toHaveBeenCalledWith(fn.eventType, { - conversationId: validId, - invokedBy: 'shortcut', - }); - }); - - it('Should call tracking with "Custom" id when tracking is called with an isDefault=false conversation id', async () => { - const { result } = renderHook(() => useAssistantTelemetry()); - // @ts-ignore - const trackingFn = result.current[fn.name]; - await trackingFn({ conversationId: customId, invokedBy: 'shortcut' }); - // @ts-ignore - const trackingMockedFn = mockedTelemetry.reportEvent; - expect(trackingMockedFn).toHaveBeenCalledWith(fn.eventType, { - conversationId: 'Custom', - invokedBy: 'shortcut', - }); - }); - - it('Should call tracking with "Custom" id when tracking is called with an unknown conversation id', async () => { - const { result } = renderHook(() => useAssistantTelemetry()); - // @ts-ignore - const trackingFn = result.current[fn.name]; - await trackingFn({ conversationId: '123', invokedBy: 'shortcut' }); - // @ts-ignore - const trackingMockedFn = mockedTelemetry.reportEvent; - expect(trackingMockedFn).toHaveBeenCalledWith(fn.eventType, { - conversationId: 'Custom', - invokedBy: 'shortcut', - }); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx b/x-pack/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx deleted file mode 100644 index 99836af47a7a8..0000000000000 --- a/x-pack/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { renderHook } from '@testing-library/react-hooks'; -import { useBaseConversations } from '.'; -import { useLinkAuthorized } from '../../common/links'; -import { useKibana as mockUseKibana } from '../../common/lib/kibana/__mocks__'; -import { useKibana } from '../../common/lib/kibana'; -import { BASE_SECURITY_CONVERSATIONS } from '../content/conversations'; -import { unset } from 'lodash/fp'; -import { DATA_QUALITY_DASHBOARD_CONVERSATION_ID } from '@kbn/ecs-data-quality-dashboard'; - -const BASE_CONVERSATIONS_WITHOUT_DATA_QUALITY = unset( - DATA_QUALITY_DASHBOARD_CONVERSATION_ID, - BASE_SECURITY_CONVERSATIONS -); - -jest.mock('../../common/links', () => ({ - useLinkAuthorized: jest.fn(), -})); - -jest.mock('@kbn/elastic-assistant', () => ({ - useFetchCurrentUserConversations: jest.fn().mockReturnValue({ - data: {}, - isLoading: false, - isError: false, - }), -})); - -const mockedUseKibana = { - ...mockUseKibana(), - services: { - ...mockUseKibana().services, - storage: { - ...mockUseKibana().services.storage, - get: jest.fn(), - set: jest.fn(), - }, - }, -}; - -jest.mock('../../common/lib/kibana', () => { - return { - useKibana: jest.fn(), - }; -}); - -describe('useBaseConversations', () => { - beforeEach(() => { - jest.clearAllMocks(); - - (useKibana as jest.Mock).mockReturnValue(mockedUseKibana); - }); - - it('should return conversations with "Data Quality dashboard" conversation', () => { - (useLinkAuthorized as jest.Mock).mockReturnValue(true); - const { result } = renderHook(() => useBaseConversations()); - - expect(result.current).toEqual(expect.objectContaining(BASE_SECURITY_CONVERSATIONS)); - }); - - it('should return conversations Without "Data Quality dashboard" conversation', () => { - (useLinkAuthorized as jest.Mock).mockReturnValue(false); - const { result } = renderHook(() => useBaseConversations()); - - expect(result.current).toEqual( - expect.objectContaining(BASE_CONVERSATIONS_WITHOUT_DATA_QUALITY) - ); - }); -}); diff --git a/x-pack/plugins/security_solution/public/attack_discovery/jest.config.js b/x-pack/plugins/security_solution/public/attack_discovery/jest.config.js deleted file mode 100644 index bfec7737e4211..0000000000000 --- a/x-pack/plugins/security_solution/public/attack_discovery/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/attack_discovery'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/attack_discovery', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/attack_discovery/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx b/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx deleted file mode 100644 index 7ecb824739679..0000000000000 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { act, renderHook } from '@testing-library/react-hooks'; - -import { useAddToNewCase } from '.'; -import { TestProviders } from '../../../../../../common/mock'; - -jest.mock('../../../../../../common/lib/kibana', () => ({ - useKibana: jest.fn().mockReturnValue({ - services: { - cases: { - hooks: { - useCasesAddToNewCaseFlyout: jest.fn().mockReturnValue({ - open: jest.fn(), - }), - }, - }, - }, - }), -})); - -describe('useAddToNewCase', () => { - it('disables the action when a user can NOT create and read cases', () => { - const canUserCreateAndReadCases = jest.fn().mockReturnValue(false); - - const { result } = renderHook( - () => - useAddToNewCase({ - canUserCreateAndReadCases, - title: 'Persistent Execution of Malicious Application', - }), - { - wrapper: TestProviders, - } - ); - - expect(result.current.disabled).toBe(true); - }); - - it('enables the action when a user can create and read cases', () => { - const canUserCreateAndReadCases = jest.fn().mockReturnValue(true); - - const { result } = renderHook( - () => - useAddToNewCase({ - canUserCreateAndReadCases, - title: 'Persistent Execution of Malicious Application', - }), - { - wrapper: TestProviders, - } - ); - - expect(result.current.disabled).toBe(false); - }); - - it('calls the onClick callback when provided', () => { - const onClick = jest.fn(); - const canUserCreateAndReadCases = jest.fn().mockReturnValue(true); - - const { result } = renderHook( - () => - useAddToNewCase({ - canUserCreateAndReadCases, - title: 'Persistent Execution of Malicious Application', - onClick, - }), - { - wrapper: TestProviders, - } - ); - - act(() => { - result.current.onAddToNewCase({ - alertIds: ['alert1', 'alert2'], - markdownComments: ['Comment 1', 'Comment 2'], - }); - }); - - expect(onClick).toHaveBeenCalled(); - }); -}); diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx b/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx deleted file mode 100644 index e84b7973208f7..0000000000000 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { act, renderHook } from '@testing-library/react-hooks'; - -import { useAddToExistingCase } from '.'; -import { useKibana } from '../../../../../../common/lib/kibana'; -import { TestProviders } from '../../../../../../common/mock'; - -jest.mock('../../../../../../common/lib/kibana', () => ({ - useKibana: jest.fn().mockReturnValue({ - services: { - cases: { - hooks: { - useCasesAddToExistingCaseModal: jest.fn().mockReturnValue({ - open: jest.fn(), - }), - }, - }, - }, - }), -})); - -describe('useAddToExistingCase', () => { - const mockCanUserCreateAndReadCases = jest.fn(); - const mockOnClick = jest.fn(); - const mockAlertIds = ['alert1', 'alert2']; - const mockMarkdownComments = ['Comment 1', 'Comment 2']; - const mockReplacements = { alert1: 'replacement1', alert2: 'replacement2' }; - - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('disables the action when a user can NOT create and read cases', () => { - mockCanUserCreateAndReadCases.mockReturnValue(false); - - const { result } = renderHook( - () => - useAddToExistingCase({ - canUserCreateAndReadCases: mockCanUserCreateAndReadCases, - onClick: mockOnClick, - }), - { - wrapper: TestProviders, - } - ); - - expect(result.current.disabled).toBe(true); - }); - - it('enables the action when a user can create and read cases', () => { - mockCanUserCreateAndReadCases.mockReturnValue(true); - - const { result } = renderHook( - () => - useAddToExistingCase({ - canUserCreateAndReadCases: mockCanUserCreateAndReadCases, - onClick: mockOnClick, - }), - { - wrapper: TestProviders, - } - ); - - expect(result.current.disabled).toBe(false); - }); - - it('calls the openSelectCaseModal function with the expected attachments', () => { - mockCanUserCreateAndReadCases.mockReturnValue(true); - const mockOpenSelectCaseModal = jest.fn(); - (useKibana as jest.Mock).mockReturnValue({ - services: { - cases: { - hooks: { - useCasesAddToExistingCaseModal: jest.fn().mockReturnValue({ - open: mockOpenSelectCaseModal, - }), - }, - }, - }, - }); - - const { result } = renderHook( - () => - useAddToExistingCase({ - canUserCreateAndReadCases: mockCanUserCreateAndReadCases, - onClick: mockOnClick, - }), - { - wrapper: TestProviders, - } - ); - - act(() => { - result.current.onAddToExistingCase({ - alertIds: mockAlertIds, - markdownComments: mockMarkdownComments, - replacements: mockReplacements, - }); - }); - - expect(mockOpenSelectCaseModal).toHaveBeenCalledWith({ - getAttachments: expect.any(Function), - }); - - const getAttachments = mockOpenSelectCaseModal.mock.calls[0][0].getAttachments; - const attachments = getAttachments(); - - expect(attachments).toHaveLength(4); - expect(attachments[0]).toEqual({ - comment: 'Comment 1', - type: 'user', - }); - expect(attachments[1]).toEqual({ - comment: 'Comment 2', - type: 'user', - }); - expect(attachments[2]).toEqual({ - alertId: 'replacement1', // <-- case attachment uses the replacement values - index: '', - rule: { - id: null, - name: null, - }, - type: 'alert', - }); - expect(attachments[3]).toEqual({ - alertId: 'replacement2', - index: '', - rule: { - id: null, - name: null, - }, - type: 'alert', - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx b/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx deleted file mode 100644 index a476aead19036..0000000000000 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx +++ /dev/null @@ -1,275 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useLoadConnectors } from '@kbn/elastic-assistant'; -import { useFetchAnonymizationFields } from '@kbn/elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields'; -import { renderHook, act } from '@testing-library/react-hooks'; -import React from 'react'; - -import { useKibana } from '../../../common/lib/kibana'; -import { usePollApi } from './use_poll_api/use_poll_api'; -import { useAttackDiscovery } from '.'; -import { ERROR_GENERATING_ATTACK_DISCOVERIES } from '../translations'; -import { useKibana as mockUseKibana } from '../../../common/lib/kibana/__mocks__'; - -jest.mock('../../../assistant/use_assistant_availability', () => ({ - useAssistantAvailability: jest.fn(() => ({ - hasAssistantPrivilege: true, - isAssistantEnabled: true, - })), -})); - -jest.mock( - '@kbn/elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields' -); -jest.mock('./use_poll_api/use_poll_api'); -jest.mock('../../../common/lib/kibana'); -const mockedUseKibana = mockUseKibana(); - -const mockAssistantAvailability = jest.fn(() => ({ - hasAssistantPrivilege: true, -})); -const mockConnectors: unknown[] = [ - { - id: 'test-id', - name: 'OpenAI connector', - actionTypeId: '.gen-ai', - }, -]; -jest.mock('@kbn/elastic-assistant', () => ({ - AssistantOverlay: () => <div data-test-subj="assistantOverlay" />, - useAssistantContext: () => ({ - alertsIndexPattern: 'alerts-index-pattern', - assistantAvailability: mockAssistantAvailability(), - knowledgeBase: { - latestAlerts: 20, - }, - }), - useLoadConnectors: jest.fn(() => ({ - isFetched: true, - data: mockConnectors, - })), -})); -const mockAttackDiscoveryPost = { - timestamp: '2024-06-13T17:50:59.409Z', - id: 'f48da2ca-b63e-4387-82d7-1423a68500aa', - backingIndex: '.ds-.kibana-elastic-ai-assistant-attack-discovery-default-2024.06.12-000001', - createdAt: '2024-06-13T17:50:59.409Z', - updatedAt: '2024-06-17T15:00:39.680Z', - lastViewedAt: '2024-06-17T15:00:39.680Z', - users: [ - { - id: 'u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0', - name: 'elastic', - }, - ], - namespace: 'default', - status: 'running', - alertsContextCount: 20, - apiConfig: { - connectorId: 'my-gpt4o-ai', - actionTypeId: '.gen-ai', - }, - attackDiscoveries: [], - replacements: { abcd: 'hostname' }, - generationIntervals: [ - { - date: '2024-06-13T17:52:47.619Z', - durationMs: 108214, - }, - ], - averageIntervalMs: 108214, -}; - -const mockAttackDiscoveries = [ - { - summaryMarkdown: - 'A critical malware incident involving {{ host.name c1f9889f-1f6b-4abc-8e65-02de89fe1054 }} and {{ user.name 71ca47cf-082e-4d35-a8e7-6e4fa4e175da }} has been detected. The malware, identified as AppPool.vbs, was executed with high privileges and attempted to evade detection.', - id: '2204421f-bb42-4b96-a200-016a5388a029', - title: 'Critical Malware Incident on Windows Host', - mitreAttackTactics: ['Initial Access', 'Execution', 'Defense Evasion'], - alertIds: [ - '43cf228ce034aeeb89a1ef41cd7fcdef1a3db574fa5237badf1fa9eaa3425c21', - '44ae9696784b3baeee75935f889e55ce77da338241230b5c488f90a8bace43e2', - '2479b1b1007952d3b6dc26344c89f44c1bb396de56f1655eca408135b3d05af8', - ], - detailsMarkdown: 'details', - entitySummaryMarkdown: - '{{ host.name c1f9889f-1f6b-4abc-8e65-02de89fe1054 }} and {{ user.name 71ca47cf-082e-4d35-a8e7-6e4fa4e175da }} are involved in a critical malware incident.', - timestamp: '2024-06-07T20:04:35.715Z', - }, -]; -const setLoadingConnectorId = jest.fn(); -const setStatus = jest.fn(); - -const SIZE = 20; - -describe('useAttackDiscovery', () => { - const mockPollApi = { - cancelAttackDiscovery: jest.fn(), - data: null, - pollApi: jest.fn(), - status: 'succeeded', - stats: null, - setStatus, - didInitialFetch: true, - }; - - beforeEach(() => { - jest.clearAllMocks(); - (useKibana as jest.Mock).mockReturnValue(mockedUseKibana); - (useFetchAnonymizationFields as jest.Mock).mockReturnValue({ data: [] }); - (usePollApi as jest.Mock).mockReturnValue(mockPollApi); - }); - - it('initializes with correct default values', () => { - const { result } = renderHook(() => - useAttackDiscovery({ - connectorId: 'test-id', - setLoadingConnectorId, - size: 20, - }) - ); - - expect(result.current.alertsContextCount).toBeNull(); - expect(result.current.approximateFutureTime).toBeNull(); - expect(result.current.attackDiscoveries).toEqual([]); - expect(result.current.failureReason).toBeNull(); - expect(result.current.generationIntervals).toEqual([]); - expect(result.current.isLoading).toBe(false); - expect(result.current.lastUpdated).toBeNull(); - expect(result.current.replacements).toEqual({}); - expect(mockPollApi.pollApi).toHaveBeenCalled(); - expect(setLoadingConnectorId).toHaveBeenCalledWith(null); - }); - - it('fetches attack discoveries and updates state correctly', async () => { - (mockedUseKibana.services.http.fetch as jest.Mock).mockResolvedValue(mockAttackDiscoveryPost); - - const { result } = renderHook(() => useAttackDiscovery({ connectorId: 'test-id', size: SIZE })); - - await act(async () => { - await result.current.fetchAttackDiscoveries(); - }); - expect(mockedUseKibana.services.http.fetch).toHaveBeenCalledWith( - '/internal/elastic_assistant/attack_discovery', - { - body: `{"alertsIndexPattern":"alerts-index-pattern","anonymizationFields":[],"replacements":{},"size":${SIZE},"subAction":"invokeAI","apiConfig":{"connectorId":"test-id","actionTypeId":".gen-ai"}}`, - method: 'POST', - version: '1', - } - ); - // called on mount - expect(mockPollApi.pollApi).toHaveBeenCalledTimes(1); - expect(setStatus).toHaveBeenCalledWith('running'); - expect(result.current.isLoadingPost).toBe(false); - }); - - it('handles fetch errors correctly', async () => { - const errorMessage = 'Fetch error'; - const error = new Error(errorMessage); - (mockedUseKibana.services.http.fetch as jest.Mock).mockRejectedValue(error); - - const { result } = renderHook(() => useAttackDiscovery({ connectorId: 'test-id', size: SIZE })); - - await act(async () => { - await result.current.fetchAttackDiscoveries(); - }); - - expect(mockedUseKibana.services.notifications.toasts.addDanger).toHaveBeenCalledWith(error, { - title: ERROR_GENERATING_ATTACK_DISCOVERIES, - text: errorMessage, - }); - expect(result.current.isLoading).toBe(false); - expect(result.current.isLoadingPost).toBe(false); - }); - - it('sets loading state based on poll status', async () => { - (usePollApi as jest.Mock).mockReturnValue({ ...mockPollApi, status: 'running' }); - const { result } = renderHook(() => - useAttackDiscovery({ - connectorId: 'test-id', - setLoadingConnectorId, - size: SIZE, - }) - ); - - expect(result.current.isLoading).toBe(true); - expect(setLoadingConnectorId).toHaveBeenCalledWith('test-id'); - }); - - it('sets state based off of poll data', () => { - (usePollApi as jest.Mock).mockReturnValue({ - ...mockPollApi, - data: { - ...mockAttackDiscoveryPost, - status: 'succeeded', - attackDiscoveries: mockAttackDiscoveries, - connectorId: 'test-id', - }, - status: 'succeeded', - }); - const { result } = renderHook(() => useAttackDiscovery({ connectorId: 'test-id', size: SIZE })); - - expect(result.current.alertsContextCount).toEqual(20); - // this is set from usePollApi - expect(result.current.approximateFutureTime).toBeNull(); - - expect(result.current.attackDiscoveries).toEqual(mockAttackDiscoveries); - expect(result.current.failureReason).toBeNull(); - expect(result.current.generationIntervals).toEqual(mockAttackDiscoveryPost.generationIntervals); - expect(result.current.isLoading).toBe(false); - expect(result.current.lastUpdated).toEqual(new Date(mockAttackDiscoveries[0].timestamp)); - expect(result.current.replacements).toEqual(mockAttackDiscoveryPost.replacements); - }); - - it('sets state based off of failed poll data', () => { - (usePollApi as jest.Mock).mockReturnValue({ - ...mockPollApi, - data: { - ...mockAttackDiscoveryPost, - status: 'failed', - failureReason: 'something bad', - connectorId: 'test-id', - }, - status: 'failed', - }); - const { result } = renderHook(() => useAttackDiscovery({ connectorId: 'test-id', size: SIZE })); - - expect(result.current.failureReason).toEqual('something bad'); - expect(result.current.isLoading).toBe(false); - expect(result.current.lastUpdated).toEqual(null); - }); - - describe('when zero connectors are configured', () => { - beforeEach(() => { - (useLoadConnectors as jest.Mock).mockReturnValue({ - isFetched: true, - data: [], // <-- zero connectors configured - }); - - renderHook(() => - useAttackDiscovery({ - connectorId: 'test-id', - setLoadingConnectorId, - size: SIZE, - }) - ); - }); - - afterEach(() => { - (useLoadConnectors as jest.Mock).mockReturnValue({ - isFetched: true, - data: mockConnectors, - }); - }); - - it('does NOT call pollApi when zero connectors are configured', () => { - expect(mockPollApi.pollApi).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/cases/jest.config.js b/x-pack/plugins/security_solution/public/cases/jest.config.js deleted file mode 100644 index e5268f5112f50..0000000000000 --- a/x-pack/plugins/security_solution/public/cases/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/cases'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/cases', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/public/cases/**/*.{ts,tsx}'], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/jest.config.js b/x-pack/plugins/security_solution/public/cloud_security_posture/jest.config.js deleted file mode 100644 index 6ef34a542da9f..0000000000000 --- a/x-pack/plugins/security_solution/public/cloud_security_posture/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/cloud_security_posture'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/cloud_security_posture', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/cloud_security_posture/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx deleted file mode 100644 index afe1d0f208765..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useEffect } from 'react'; -import { waitFor, render } from '@testing-library/react'; -import { TestProviders } from '../../mock'; -import { TEST_ID, SessionsView, defaultSessionsFilter } from '.'; -import type { EntityType } from '@kbn/timelines-plugin/common'; -import type { SessionsComponentsProps } from './types'; -import { TableId } from '@kbn/securitysolution-data-table'; -import { licenseService } from '../../hooks/use_license'; -import { mount } from 'enzyme'; -import type { EventsViewerProps } from '../events_viewer'; - -jest.mock('../../lib/kibana'); -jest.mock('../../utils/normalize_time_range'); - -const startDate = '2022-03-22T22:10:56.794Z'; -const endDate = '2022-03-21T22:10:56.791Z'; - -const filterQuery = - '{"bool":{"must":[],"filter":[{"match_phrase":{"host.name":{"query":"ubuntu-impish"}}}],"should":[],"must_not":[]}}'; - -const testProps: SessionsComponentsProps = { - tableId: TableId.hostsPageSessions, - entityType: 'sessions', - pageFilters: [], - startDate, - endDate, - filterQuery, -}; - -type Props = Partial<EventsViewerProps> & { - start: string; - end: string; - entityType: EntityType; -}; - -const mockGetDefaultControlColumn = jest.fn(); -jest.mock('../../../timelines/components/timeline/body/control_columns', () => ({ - getDefaultControlColumn: (props: number) => mockGetDefaultControlColumn(props), -})); - -const TEST_PREFIX = 'security_solution:sessions_viewer:sessions_view'; - -const callFilters = jest.fn(); - -jest.mock('../../hooks/use_license', () => { - const licenseServiceInstance = { - isPlatinumPlus: jest.fn(), - isEnterprise: jest.fn(() => false), - }; - return { - licenseService: licenseServiceInstance, - useLicense: () => { - return licenseServiceInstance; - }, - }; -}); - -// creating a dummy component for testing data table to avoid mocking all the implementation details -// but still test if the data table will render properly -const SessionsViewerEventsViewer: React.FC<Props> = ({ - defaultModel, - start, - end, - tableId, - pageFilters, - entityType, -}) => { - useEffect(() => { - callFilters(pageFilters); - }, [pageFilters]); - - return ( - <div> - <div data-test-subj={`${TEST_PREFIX}:entityType`}>{entityType}</div> - <div data-test-subj={`${TEST_PREFIX}:startDate`}>{start}</div> - <div data-test-subj={`${TEST_PREFIX}:endDate`}>{end}</div> - <div data-test-subj={`${TEST_PREFIX}:timelineId`}>{tableId}</div> - {defaultModel?.columns?.map((header) => ( - <div key={header.id}>{header.display ?? header.id}</div> - ))} - </div> - ); -}; - -jest.mock('../events_viewer', () => { - return { - StatefulEventsViewer: SessionsViewerEventsViewer, - }; -}); - -mockGetDefaultControlColumn.mockReturnValue([ - { - headerCellRender: () => <></>, - id: 'default-timeline-control-column', - rowCellRender: jest.fn(), - width: jest.fn(), - }, -]); - -describe('SessionsView', () => { - it('renders the session view', async () => { - const wrapper = mount( - <TestProviders> - <SessionsView {...testProps} /> - </TestProviders> - ); - - await waitFor(() => { - expect(wrapper.find(`[data-test-subj="${TEST_ID}"]`).exists()).toBeTruthy(); - }); - }); - - it('renders correctly against snapshot', async () => { - const { asFragment } = render( - <TestProviders> - <SessionsView {...testProps} /> - </TestProviders> - ); - - await waitFor(() => { - expect(asFragment()).toMatchSnapshot(); - }); - }); - - it('passes in the right parameters to EventsViewer', async () => { - const wrapper = render( - <TestProviders> - <SessionsView {...testProps} /> - </TestProviders> - ); - await waitFor(() => { - expect(wrapper.getByTestId(`${TEST_PREFIX}:entityType`)).toHaveTextContent('sessions'); - expect(wrapper.getByTestId(`${TEST_PREFIX}:startDate`)).toHaveTextContent(startDate); - expect(wrapper.getByTestId(`${TEST_PREFIX}:endDate`)).toHaveTextContent(endDate); - expect(wrapper.getByTestId(`${TEST_PREFIX}:timelineId`)).toHaveTextContent( - 'hosts-page-sessions-v2' - ); - }); - }); - - it('passes in the right filters to EventsViewer', async () => { - render( - <TestProviders> - <SessionsView {...testProps} /> - </TestProviders> - ); - await waitFor(() => { - expect(callFilters).toHaveBeenCalledWith([ - { - ...defaultSessionsFilter, - query: { - ...defaultSessionsFilter.query, - bool: { - ...defaultSessionsFilter.query.bool, - filter: defaultSessionsFilter.query.bool.filter.concat(JSON.parse(filterQuery)), - }, - }, - }, - ]); - }); - }); - it('Action tab should have 4 columns for non Enterprise users', async () => { - render( - <TestProviders> - <SessionsView {...testProps} /> - </TestProviders> - ); - - await waitFor(() => { - expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(4); - }); - }); - - it('Action tab should have 5 columns for Enterprise or above users', async () => { - const licenseServiceMock = licenseService as jest.Mocked<typeof licenseService>; - - licenseServiceMock.isEnterprise.mockReturnValue(true); - render( - <TestProviders> - <SessionsView {...testProps} /> - </TestProviders> - ); - - await waitFor(() => { - expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(5); - }); - }); - - it('Action tab should have 5 columns when accessed via K8S dahsboard', async () => { - render( - <TestProviders> - <SessionsView {...testProps} tableId={TableId.kubernetesPageSessions} /> - </TestProviders> - ); - - await waitFor(() => { - expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(5); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx deleted file mode 100644 index 32b76a7e39808..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useMemo, useEffect } from 'react'; -import type { Filter } from '@kbn/es-query'; -import { ENTRY_SESSION_ENTITY_ID_PROPERTY } from '@kbn/session-view-plugin/public'; -import { useDispatch } from 'react-redux'; -import { EVENT_ACTION } from '@kbn/rule-data-utils'; -import { TableId, dataTableActions } from '@kbn/securitysolution-data-table'; -import { useAddBulkToTimelineAction } from '../../../detections/components/alerts_table/timeline_actions/use_add_bulk_to_timeline'; -import type { SessionsComponentsProps } from './types'; -import type { ESBoolQuery } from '../../../../common/typed_json'; -import { StatefulEventsViewer } from '../events_viewer'; -import { getSessionsDefaultModel, sessionsHeaders } from './default_headers'; -import { defaultRowRenderers } from '../../../timelines/components/timeline/body/renderers'; -import { DefaultCellRenderer } from '../../../timelines/components/timeline/cell_rendering/default_cell_renderer'; -import * as i18n from './translations'; -import { SourcererScopeName } from '../../../sourcerer/store/model'; -import { getDefaultControlColumn } from '../../../timelines/components/timeline/body/control_columns'; -import { useLicense } from '../../hooks/use_license'; -import { eventsDefaultModel } from '../events_viewer/default_model'; -import type { BulkActionsProp } from '../toolbar/bulk_actions/types'; -import { SecurityCellActionsTrigger } from '../cell_actions'; - -export const TEST_ID = 'security_solution:sessions_viewer:sessions_view'; - -export const defaultSessionsFilter: Required<Pick<Filter, 'meta' | 'query'>> = { - query: { - bool: { - filter: [ - { - bool: { - // show sessions table results by filtering events where event.action is fork, exec, or end - should: [ - { term: { [EVENT_ACTION]: 'exec' } }, // exec event.action is used by Endpoint and Cloud Defend - { term: { [EVENT_ACTION]: 'executed' } }, // executed event.action is used by auditbeat - { term: { [EVENT_ACTION]: 'fork' } }, - { term: { [EVENT_ACTION]: 'end' } }, - ], - }, - }, - { - bool: { - filter: { - exists: { - field: ENTRY_SESSION_ENTITY_ID_PROPERTY, // to exclude any records which have no entry_leader.entity_id - }, - }, - }, - }, - ], - must_not: [ - { - term: { - [ENTRY_SESSION_ENTITY_ID_PROPERTY]: '', - }, - }, - ], - }, - }, - meta: { - alias: null, - disabled: false, - key: ENTRY_SESSION_ENTITY_ID_PROPERTY, - negate: false, - params: {}, - type: 'string', - }, -}; - -const SessionsViewComponent: React.FC<SessionsComponentsProps> = ({ - tableId, - endDate, - entityType = 'sessions', - pageFilters, - startDate, - filterQuery, - columns = sessionsHeaders, - defaultColumns = sessionsHeaders, -}) => { - const dispatch = useDispatch(); - const parsedFilterQuery: ESBoolQuery = useMemo(() => { - if (filterQuery && filterQuery !== '') { - return JSON.parse(filterQuery); - } - return {}; - }, [filterQuery]); - - const sessionsFilter = useMemo( - () => [ - { - ...defaultSessionsFilter, - query: { - ...defaultSessionsFilter.query, - bool: { - ...defaultSessionsFilter.query.bool, - filter: defaultSessionsFilter.query.bool.filter.concat(parsedFilterQuery), - }, - }, - }, - ...pageFilters, - ], - [pageFilters, parsedFilterQuery] - ); - - useEffect(() => { - dispatch( - dataTableActions.initializeDataTableSettings({ - id: tableId, - title: i18n.SESSIONS_TITLE, - defaultColumns: eventsDefaultModel.columns, - showCheckboxes: true, - selectAll: true, - }) - ); - }, [dispatch, tableId]); - - const isEnterprisePlus = useLicense().isEnterprise(); - const ACTION_BUTTON_COUNT = - isEnterprisePlus || tableId === TableId.kubernetesPageSessions ? 5 : 4; - const leadingControlColumns = useMemo( - () => getDefaultControlColumn(ACTION_BUTTON_COUNT), - [ACTION_BUTTON_COUNT] - ); - - const addBulkToTimelineAction = useAddBulkToTimelineAction({ - localFilters: sessionsFilter, - tableId, - from: startDate, - to: endDate, - scopeId: SourcererScopeName.default, - }); - - const bulkActions = useMemo<BulkActionsProp | boolean>(() => { - return { - alertStatusActions: false, - customBulkActions: [addBulkToTimelineAction], - } as BulkActionsProp; - }, [addBulkToTimelineAction]); - - const unit = (c: number) => - c > 1 ? i18n.TOTAL_COUNT_OF_SESSIONS : i18n.SINGLE_COUNT_OF_SESSIONS; - - return ( - <div data-test-subj={TEST_ID}> - <StatefulEventsViewer - cellActionsTriggerId={SecurityCellActionsTrigger.DEFAULT} - pageFilters={sessionsFilter} - defaultModel={getSessionsDefaultModel(columns, defaultColumns)} - end={endDate} - bulkActions={bulkActions} - entityType={entityType} - tableId={tableId} - leadingControlColumns={leadingControlColumns} - renderCellValue={DefaultCellRenderer} - rowRenderers={defaultRowRenderers} - sourcererScope={SourcererScopeName.default} - start={startDate} - unit={unit} - /> - </div> - ); -}; - -SessionsViewComponent.displayName = 'SessionsViewComponent'; - -export const SessionsView = React.memo(SessionsViewComponent); diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/index.tsx b/x-pack/plugins/security_solution/public/common/components/toasters/index.tsx deleted file mode 100644 index cc02c6a5eb745..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/toasters/index.tsx +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { EuiGlobalToastListToast as Toast } from '@elastic/eui'; -import { EuiButton, EuiGlobalToastList } from '@elastic/eui'; -import { noop } from 'lodash/fp'; -import type { Dispatch } from 'react'; -import React, { createContext, useContext, useReducer, useState } from 'react'; -import styled from 'styled-components'; - -import { ModalAllErrors } from './modal_all_errors'; -import * as i18n from './translations'; - -export * from './utils'; -export * from './errors'; - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -export interface AppToast extends Toast { - // FunFact: In a very rare case of errors this can be something other than array. We have a unit test case for it and am leaving it like this type for now. - errors?: string[]; -} - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -interface ToastState { - toasts: AppToast[]; -} - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -const initialToasterState: ToastState = { - toasts: [], -}; - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -export type ActionToaster = - | { type: 'addToaster'; toast: AppToast } - | { type: 'deleteToaster'; id: string } - | { type: 'toggleWaitToShowNextToast' }; - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -export const StateToasterContext = createContext<[ToastState, Dispatch<ActionToaster>]>([ - initialToasterState, - () => noop, -]); - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -export const useStateToaster = () => useContext(StateToasterContext); - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -interface ManageGlobalToasterProps { - children: React.ReactNode; -} - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -export const ManageGlobalToaster = ({ children }: ManageGlobalToasterProps) => { - const reducerToaster = (state: ToastState, action: ActionToaster) => { - switch (action.type) { - case 'addToaster': - return { ...state, toasts: [...state.toasts, action.toast] }; - case 'deleteToaster': - return { ...state, toasts: state.toasts.filter((msg) => msg.id !== action.id) }; - default: - return state; - } - }; - - return ( - <StateToasterContext.Provider value={useReducer(reducerToaster, initialToasterState)}> - {children} - </StateToasterContext.Provider> - ); -}; - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -const GlobalToasterListContainer = styled.div` - position: absolute; - right: 0; - bottom: 0; -`; - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -interface GlobalToasterProps { - toastLifeTimeMs?: number; -} - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -export const GlobalToaster = ({ toastLifeTimeMs = 5000 }: GlobalToasterProps) => { - const [{ toasts }, dispatch] = useStateToaster(); - const [isShowing, setIsShowing] = useState(false); - const [toastInModal, setToastInModal] = useState<AppToast | null>(null); - - const toggle = (toast: AppToast) => { - if (isShowing) { - dispatch({ type: 'deleteToaster', id: toast.id }); - setToastInModal(null); - } else { - setToastInModal(toast); - } - setIsShowing(!isShowing); - }; - - return ( - <> - {toasts.length > 0 && !isShowing && ( - <GlobalToasterListContainer> - <EuiGlobalToastList - toasts={[formatToErrorToastIfNeeded(toasts[0], toggle)]} - dismissToast={({ id }) => { - dispatch({ type: 'deleteToaster', id }); - }} - toastLifeTimeMs={toastLifeTimeMs} - /> - </GlobalToasterListContainer> - )} - {toastInModal != null && ( - <ModalAllErrors isShowing={isShowing} toast={toastInModal} toggle={toggle} /> - )} - </> - ); -}; - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -const formatToErrorToastIfNeeded = ( - toast: AppToast, - toggle: (toast: AppToast) => void -): AppToast => { - if (toast != null && toast.errors != null && toast.errors.length > 0) { - toast.text = ( - <ErrorToastContainer> - <EuiButton - data-test-subj="toaster-show-all-error-modal" - size="s" - color="danger" - onClick={() => toast != null && toggle(toast)} - > - {i18n.SEE_ALL_ERRORS} - </EuiButton> - </ErrorToastContainer> - ); - } - return toast; -}; - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -const ErrorToastContainer = styled.div` - text-align: right; -`; - -/** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - */ -ErrorToastContainer.displayName = 'ErrorToastContainer'; diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/utils.ts b/x-pack/plugins/security_solution/public/common/components/toasters/utils.ts deleted file mode 100644 index 0114cb2cf4a45..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/toasters/utils.ts +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type React from 'react'; -import { v4 as uuidv4 } from 'uuid'; -import { isError } from 'lodash/fp'; -import { isAppError } from '@kbn/securitysolution-t-grid'; - -import type { AppToast, ActionToaster } from '.'; -import { isToasterError } from './errors'; - -/** - * Displays an error toast for the provided title and message - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - * @param errorTitle Title of error to display in toaster and modal - * @param errorMessages Message to display in error modal when clicked - * @param dispatchToaster provided by useStateToaster() - */ -export const displayErrorToast = ( - errorTitle: string, - errorMessages: string[], - dispatchToaster: React.Dispatch<ActionToaster>, - id: string = uuidv4() -): void => { - const toast: AppToast = { - id, - title: errorTitle, - color: 'danger', - iconType: 'error', - errors: errorMessages, - }; - dispatchToaster({ - type: 'addToaster', - toast, - }); -}; - -/** - * Displays a success toast for the provided title and message - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - * @param title success message to display in toaster and modal - * @param dispatchToaster provided by useStateToaster() - */ -export const displaySuccessToast = ( - title: string, - dispatchToaster: React.Dispatch<ActionToaster>, - id: string = uuidv4() -): void => { - const toast: AppToast = { - id, - title, - color: 'success', - iconType: 'check', - }; - dispatchToaster({ - type: 'addToaster', - toast, - }); -}; - -export type ErrorToToasterArgs = Partial<AppToast> & { - error: unknown; - dispatchToaster: React.Dispatch<ActionToaster>; -}; - -/** - * Displays an error toast with messages parsed from the error. - * - * This has shortcomings and bugs compared to using the use_app_toasts because it takes naive guesses at the - * underlying data structure and does not display much about the error. This is not compatible with bsearch (async search) - * and sometimes can display to the user blank messages. - * - * The use_app_toasts has more feature rich logic and uses the Kibana toaster system to figure out which type of - * error you have in a more robust way then this function does and supersedes this function. - * - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead - * @param title error message to display in toaster and modal - * @param error the error from which messages will be parsed - * @param dispatchToaster provided by useStateToaster() - */ -export const errorToToaster = ({ - id = uuidv4(), - title, - error, - color = 'danger', - iconType = 'error', - dispatchToaster, -}: ErrorToToasterArgs) => { - let toast: AppToast; - - if (isToasterError(error)) { - toast = { - id, - title, - color, - iconType, - errors: error.messages, - }; - } else if (isAppError(error)) { - toast = { - id, - title, - color, - iconType, - errors: [error.body.message], - }; - } else if (isError(error)) { - toast = { - id, - title, - color, - iconType, - errors: [error.message], - }; - } else { - toast = { - id, - title, - color, - iconType, - errors: ['Network Error'], - }; - } - - dispatchToaster({ - type: 'addToaster', - toast, - }); -}; diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts b/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts deleted file mode 100644 index 7a810fa9247d2..0000000000000 --- a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useCallback, useRef, useMemo } from 'react'; -import { isString } from 'lodash/fp'; -import type { AppError } from '@kbn/securitysolution-t-grid'; -import { isAppError, isKibanaError, isSecurityAppError } from '@kbn/securitysolution-t-grid'; - -import { type IEsError, isEsError } from '@kbn/search-errors'; - -import type { ErrorToastOptions, ToastsStart, Toast } from '@kbn/core/public'; -import { useToasts } from '../lib/kibana'; - -export type UseAppToasts = Pick<ToastsStart, 'addSuccess' | 'addWarning' | 'remove'> & { - api: ToastsStart; - addError: (error: unknown, options: ErrorToastOptions) => Toast; -}; - -/** - * This gives a better presentation of error data sent from the API (both general platform errors and app-specific errors). - * This uses platform's new Toasts service to prevent modal/toast z-index collision issues. - * This fixes some issues you can see with re-rendering since using a class such as notifications.toasts. - * This also has an adapter and transform for detecting if a bsearch's EsError is present and then adapts that to the - * Kibana error toaster model so that the network error message will be shown rather than a stack trace. - */ -export const useAppToasts = (): UseAppToasts => { - const toasts = useToasts(); - const addError = useRef(toasts.addError.bind(toasts)).current; - const addSuccess = useRef(toasts.addSuccess.bind(toasts)).current; - const addWarning = useRef(toasts.addWarning.bind(toasts)).current; - const remove = useRef(toasts.remove.bind(toasts)).current; - - const _addError = useCallback( - (error: unknown, options: ErrorToastOptions) => { - const adaptedError = errorToErrorStackAdapter(error); - return addError(adaptedError, options); - }, - [addError] - ); - - return useMemo( - () => ({ api: toasts, addError: _addError, addSuccess, addWarning, remove }), - [_addError, addSuccess, addWarning, remove, toasts] - ); -}; - -/** - * Given an error of one type vs. another type this tries to adapt - * the best it can to the existing error toaster which parses the .stack - * as its error when you click the button to show the full error message. - * @param error The error to adapt to. - * @returns The adapted toaster error message. - */ -export const errorToErrorStackAdapter = (error: unknown): Error => { - if (error != null && isEsError(error)) { - return esErrorToErrorStack(error); - } else if (isAppError(error)) { - return appErrorToErrorStack(error); - } else if (error instanceof Error) { - return errorToErrorStack(error); - } else { - return unknownToErrorStack(error); - } -}; - -/** - * See this file, we are not allowed to import files such as es_error. - * So instead we say maybe err is on there so that we can unwrap it and get - * our status code from it if possible within the error in our function. - * src/plugins/data/public/search/errors/es_error.tsx - */ -export type MaybeESError = IEsError & { err?: Record<string, unknown> }; - -/** - * This attempts its best to map between an IEsError which comes from bsearch to a error_toaster - * See the file: src/core/public/notifications/toasts/error_toast.tsx - * - * NOTE: This is brittle at the moment from bsearch and the hope is that better support between - * the error message and formatting of bsearch and the error_toast.tsx from Kibana core will be - * supported in the future. However, for now, this is _hopefully_ temporary. - * - * Also see the file: - * x-pack/plugins/security_solution/public/app/home/setup.tsx - * - * Where this same technique of overriding and changing the stack is occurring. - */ -export const esErrorToErrorStack = (error: IEsError & MaybeESError): Error => { - const maybeUnWrapped = error.err != null ? error.err : error; - const statusCode = - error.err?.statusCode != null - ? `(${error.err.statusCode})` - : error.statusCode != null - ? `(${error.statusCode})` - : ''; - const stringifiedError = getStringifiedStack(maybeUnWrapped); - const adaptedError = new Error( - `${error.attributes?.error?.reason ?? error.message} ${statusCode}` - ); - adaptedError.name = error.attributes?.error?.reason ?? error.message; - if (stringifiedError != null) { - adaptedError.stack = stringifiedError; - } - return adaptedError; -}; - -/** - * This attempts its best to map between a Kibana application error which can come from backend - * REST API's that are typically of a particular format and form. - * - * The existing error_toaster code tries to consolidate network and software stack traces but really - * here and our toasters we are using them for network response errors so we can troubleshoot things - * as quick as possible. - * - * We override and use error.stack to be able to give _full_ network responses regardless of if they - * are from Kibana or if they are from elasticSearch since sometimes Kibana errors might wrap the errors. - * - * Sometimes the errors are wrapped from io-ts, Kibana Schema or something else and we want to show - * as full error messages as we can. - */ -export const appErrorToErrorStack = (error: AppError): Error => { - const statusCode = isKibanaError(error) - ? `(${error.body.statusCode})` - : isSecurityAppError(error) - ? `(${error.body.status_code})` - : ''; - const stringifiedError = getStringifiedStack(error); - const adaptedError = new Error( - `${String(error.body.message).trim() !== '' ? error.body.message : error.message} ${statusCode}` - ); - // Note although all the Typescript typings say that error.name is a string and exists, we still can encounter an undefined so we - // do an extra guard here and default to empty string if it is undefined - adaptedError.name = error.name != null ? error.name : ''; - if (stringifiedError != null) { - adaptedError.stack = stringifiedError; - } - return adaptedError; -}; - -/** - * Takes an error and tries to stringify it and use that as the stack for the error toaster - * @param error The error to convert into a message - * @returns The exception error to return back - */ -export const errorToErrorStack = (error: Error): Error => { - const stringifiedError = getStringifiedStack(error); - const adaptedError = new Error(error.message); - adaptedError.name = error.name; - if (stringifiedError != null) { - adaptedError.stack = stringifiedError; - } - return adaptedError; -}; - -/** - * Last ditch effort to take something unknown which could be a string, number, - * anything. This usually should not be called but just in case we do try our - * best to stringify it and give a message, name, and replace the stack of it. - * @param error The unknown error to convert into a message - * @returns The exception error to return back - */ -export const unknownToErrorStack = (error: unknown): Error => { - const stringifiedError = getStringifiedStack(error); - const message = isString(error) - ? error - : error instanceof Object && stringifiedError != null - ? stringifiedError - : String(error); - const adaptedError = new Error(message); - adaptedError.name = message; - if (stringifiedError != null) { - adaptedError.stack = stringifiedError; - } - return adaptedError; -}; - -/** - * Stringifies the error. However, since Errors can JSON.stringify into empty objects this will - * use a replacer to push those as enumerable properties so we can stringify them. - * @param error The error to get a string representation of - * @returns The string representation of the error - */ -export const getStringifiedStack = (error: unknown): string | undefined => { - try { - return JSON.stringify( - error, - (_, value) => { - const enumerable = convertErrorToEnumerable(value); - if (isEmptyObjectWhenStringified(enumerable)) { - return undefined; - } else { - return enumerable; - } - }, - 2 - ); - } catch (err) { - return undefined; - } -}; - -/** - * Converts an error if this is an error to have enumerable so it can stringified - * @param error The error which might not have enumerable properties. - * @returns Enumerable error - */ -export const convertErrorToEnumerable = (error: unknown): unknown => { - if (error instanceof Error) { - return { - ...error, - name: error.name, - message: error.message, - stack: error.stack, - }; - } else { - return error; - } -}; - -/** - * If the object strings into an empty object we shouldn't show it as it doesn't - * add value and sometimes different people/frameworks attach req,res,request,response - * objects which don't stringify into anything or can have circular references. - * @param item The item to see if we are empty or have a circular reference error with. - * @returns True if this is a good object to stringify, otherwise false - */ -export const isEmptyObjectWhenStringified = (item: unknown): boolean => { - if (item instanceof Object) { - try { - return JSON.stringify(item) === '{}'; - } catch (_) { - // Do nothing, return false if we have a circular reference or other oddness. - return false; - } - } else { - return false; - } -}; diff --git a/x-pack/plugins/security_solution/public/common/jest.config.js b/x-pack/plugins/security_solution/public/common/jest.config.js deleted file mode 100644 index 1326b2602bf19..0000000000000 --- a/x-pack/plugins/security_solution/public/common/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/common'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/common', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/public/common/**/*.{ts,tsx}'], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/dashboards/jest.config.js b/x-pack/plugins/security_solution/public/dashboards/jest.config.js deleted file mode 100644 index a2ff7b5c4a1af..0000000000000 --- a/x-pack/plugins/security_solution/public/dashboards/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/dashboards'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/dashboards', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/dashboards/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/jest.config.js b/x-pack/plugins/security_solution/public/detection_engine/jest.config.js deleted file mode 100644 index e6bfcc76205f9..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/detection_engine'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/detection_engine', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/detection_engine/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx deleted file mode 100644 index 6cca3e02e3223..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx +++ /dev/null @@ -1,371 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { RenderHookResult } from '@testing-library/react-hooks'; -import { act, renderHook } from '@testing-library/react-hooks'; - -import { coreMock } from '@kbn/core/public/mocks'; -import * as rulesApi from '../../rule_management/api/api'; -import * as listsApi from '@kbn/securitysolution-list-api'; -import { getExceptionListSchemaMock } from '@kbn/lists-plugin/common/schemas/response/exception_list_schema.mock'; -import { savedRuleMock } from '../../rule_management/logic/mock'; -import type { - ExceptionListType, - ListArray, - ExceptionListSchema, -} from '@kbn/securitysolution-io-ts-list-types'; -import { getListArrayMock } from '../../../../common/detection_engine/schemas/types/lists.mock'; -import type { - UseFetchOrCreateRuleExceptionListProps, - ReturnUseFetchOrCreateRuleExceptionList, -} from './use_fetch_or_create_rule_exception_list'; -import { useFetchOrCreateRuleExceptionList } from './use_fetch_or_create_rule_exception_list'; - -const mockKibanaHttpService = coreMock.createStart().http; -jest.mock('../../rule_management/api/api'); -jest.mock('@kbn/securitysolution-list-api'); - -describe('useFetchOrCreateRuleExceptionList', () => { - let fetchRuleById: jest.SpyInstance<ReturnType<typeof rulesApi.fetchRuleById>>; - let patchRule: jest.SpyInstance<ReturnType<typeof rulesApi.patchRule>>; - let addExceptionList: jest.SpyInstance<ReturnType<typeof listsApi.addExceptionList>>; - let addEndpointExceptionList: jest.SpyInstance< - ReturnType<typeof listsApi.addEndpointExceptionList> - >; - let fetchExceptionListById: jest.SpyInstance<Promise<ExceptionListSchema>>; - let render: ( - listType?: UseFetchOrCreateRuleExceptionListProps['exceptionListType'] - ) => RenderHookResult< - UseFetchOrCreateRuleExceptionListProps, - ReturnUseFetchOrCreateRuleExceptionList - >; - const onError = jest.fn(); - const onSuccess = jest.fn(); - const error = new Error('Something went wrong'); - const ruleId = 'myRuleId'; - const abortCtrl = new AbortController(); - const detectionListType: ExceptionListType = 'detection'; - const endpointListType: ExceptionListType = 'endpoint'; - const detectionExceptionList = { - ...getExceptionListSchemaMock(), - type: detectionListType, - }; - const endpointExceptionList = { - ...getExceptionListSchemaMock(), - type: endpointListType, - }; - const newDetectionExceptionList = { - ...detectionExceptionList, - name: 'new detection exception list', - }; - const newEndpointExceptionList = { - ...endpointExceptionList, - name: 'new endpoint exception list', - }; - const exceptionsListReferences: ListArray = getListArrayMock(); - const ruleWithExceptionLists = { - ...savedRuleMock, - exceptions_list: exceptionsListReferences, - }; - const ruleWithoutExceptionLists = { - ...savedRuleMock, - exceptions_list: [], - }; - - beforeEach(() => { - fetchRuleById = jest.spyOn(rulesApi, 'fetchRuleById').mockResolvedValue(ruleWithExceptionLists); - - patchRule = jest.spyOn(rulesApi, 'patchRule'); - - addExceptionList = jest - .spyOn(listsApi, 'addExceptionList') - .mockResolvedValue(newDetectionExceptionList); - - addEndpointExceptionList = jest - .spyOn(listsApi, 'addEndpointExceptionList') - .mockResolvedValue(newEndpointExceptionList); - - fetchExceptionListById = jest - .spyOn(listsApi, 'fetchExceptionListById') - .mockResolvedValue(detectionExceptionList); - - render = (listType = detectionListType) => - renderHook<UseFetchOrCreateRuleExceptionListProps, ReturnUseFetchOrCreateRuleExceptionList>( - () => - useFetchOrCreateRuleExceptionList({ - http: mockKibanaHttpService, - ruleId, - exceptionListType: listType, - onError, - onSuccess, - }) - ); - }); - - afterEach(() => { - jest.clearAllMocks(); - }); - - it('initializes hook', async () => { - const { result, waitForNextUpdate } = render(); - - // Should set isLoading to true while fetching - expect(result.current).toEqual([true, null]); - - await waitForNextUpdate(); - expect(result.current).toEqual([false, detectionExceptionList]); - }); - - it('fetches the rule with the given ruleId', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(fetchRuleById).toHaveBeenCalledTimes(1); - expect(fetchRuleById).toHaveBeenCalledWith({ - id: ruleId, - signal: abortCtrl.signal, - }); - }); - }); - - describe('when the rule does not have exception list references', () => { - beforeEach(() => { - fetchRuleById = jest - .spyOn(rulesApi, 'fetchRuleById') - .mockResolvedValue(ruleWithoutExceptionLists); - }); - - it('does not fetch the exceptions lists', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(fetchExceptionListById).not.toHaveBeenCalled(); - }); - }); - it('should create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(addExceptionList).toHaveBeenCalledTimes(1); - }); - }); - it('should update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(patchRule).toHaveBeenCalledTimes(1); - }); - }); - it('invokes onSuccess', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(onSuccess).toHaveBeenCalledWith(false); - }); - }); - }); - - describe("when the rule has exception list references and 'detection' is passed in", () => { - it('fetches the exceptions lists', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(fetchExceptionListById).toHaveBeenCalledTimes(2); - }); - }); - it('does not create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(addExceptionList).not.toHaveBeenCalled(); - }); - }); - it('does not update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(patchRule).not.toHaveBeenCalled(); - }); - }); - it('should set the exception list to be the fetched list', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(result.current[1]).toEqual(detectionExceptionList); - }); - }); - it('invokes onSuccess indicating', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(onSuccess).toHaveBeenCalledWith(false); - }); - }); - - describe("but the rule does not have a reference to 'detection' type exception list", () => { - beforeEach(() => { - fetchExceptionListById = jest - .spyOn(listsApi, 'fetchExceptionListById') - .mockResolvedValue(endpointExceptionList); - }); - - it('should create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(addExceptionList).toHaveBeenCalledTimes(1); - }); - }); - it('should update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(patchRule).toHaveBeenCalledTimes(1); - }); - }); - it('should set the exception list to be the newly created list', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(result.current[1]).toEqual(newDetectionExceptionList); - }); - }); - }); - }); - - describe("when the rule has exception list references and 'endpoint' is passed in", () => { - beforeEach(() => { - fetchExceptionListById = jest - .spyOn(listsApi, 'fetchExceptionListById') - .mockResolvedValue(endpointExceptionList); - - addExceptionList = jest - .spyOn(listsApi, 'addExceptionList') - .mockResolvedValue(newEndpointExceptionList); - }); - - it('fetches the exceptions lists', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(fetchExceptionListById).toHaveBeenCalledTimes(2); - }); - }); - it('does not create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - expect(addExceptionList).not.toHaveBeenCalled(); - }); - }); - it('does not update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - expect(patchRule).not.toHaveBeenCalled(); - }); - }); - it('should set the exception list to be the fetched list', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(result.current[1]).toEqual(endpointExceptionList); - }); - }); - - describe("but the rule does not have a reference to 'endpoint' type exception list", () => { - beforeEach(() => { - fetchExceptionListById = jest - .spyOn(listsApi, 'fetchExceptionListById') - .mockResolvedValue(detectionExceptionList); - }); - - it('should create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(addEndpointExceptionList).toHaveBeenCalledTimes(1); - }); - }); - it('should update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(patchRule).toHaveBeenCalledTimes(1); - }); - }); - it('should set the exception list to be the newly created list', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(result.current[1]).toEqual(newEndpointExceptionList); - }); - }); - }); - }); - - describe('when rule api returns an error', () => { - beforeEach(() => { - fetchRuleById = jest.spyOn(rulesApi, 'fetchRuleById').mockRejectedValue(error); - }); - - it('exception list should be null', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(result.current[1]).toBeNull(); - }); - }); - - it('isLoading should be false', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(result.current[0]).toEqual(false); - }); - }); - - it('should call error callback', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(onError).toHaveBeenCalledTimes(1); - expect(onError).toHaveBeenCalledWith(error, null, null); - }); - }); - - it('does not call onSuccess', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(onSuccess).not.toHaveBeenCalled(); - }); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx deleted file mode 100644 index ce70bc08bd722..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { act, renderHook } from '@testing-library/react-hooks'; -import moment from 'moment'; -import { useKibana } from '../../../common/lib/kibana'; -import { useKibana as mockUseKibana } from '../../../common/lib/kibana/__mocks__'; -import { TestProviders } from '../../../common/mock'; -import { useScheduleRuleRun } from './use_schedule_rule_run'; -import { ManualRuleRunEventTypes } from '../../../common/lib/telemetry'; - -const mockUseScheduleRuleRunMutation = jest.fn(); - -jest.mock('../../../common/lib/kibana'); -jest.mock('../api/hooks/use_schedule_rule_run_mutation', () => ({ - useScheduleRuleRunMutation: () => { - return { - mutateAsync: mockUseScheduleRuleRunMutation, - }; - }, -})); - -const mockedUseKibana = { - ...mockUseKibana(), - services: { - ...mockUseKibana().services, - telemetry: { - reportEvent: jest.fn(), - }, - }, -}; - -describe('When using the `useScheduleRuleRun()` hook', () => { - beforeEach(() => { - jest.clearAllMocks(); - (useKibana as jest.Mock).mockReturnValue(mockedUseKibana); - }); - - it('should send schedule rule run request', async () => { - const { result, waitFor } = renderHook(() => useScheduleRuleRun(), { - wrapper: TestProviders, - }); - - const timeRange = { startDate: moment().subtract(1, 'd'), endDate: moment() }; - act(() => { - result.current.scheduleRuleRun({ ruleIds: ['rule-1'], timeRange }); - }); - - await waitFor(() => { - return mockUseScheduleRuleRunMutation.mock.calls.length > 0; - }); - - expect(mockUseScheduleRuleRunMutation).toHaveBeenCalledWith( - expect.objectContaining({ - ruleIds: ['rule-1'], - timeRange, - }) - ); - }); - - it('should call reportEvent with success status on success', async () => { - const { result, waitFor } = renderHook(() => useScheduleRuleRun(), { - wrapper: TestProviders, - }); - - const timeRange = { startDate: moment().subtract(1, 'd'), endDate: moment() }; - mockUseScheduleRuleRunMutation.mockResolvedValueOnce([{ id: 'rule-1' }]); - - act(() => { - result.current.scheduleRuleRun({ ruleIds: ['rule-1'], timeRange }); - }); - - await waitFor(() => { - return mockUseScheduleRuleRunMutation.mock.calls.length > 0; - }); - - expect(mockedUseKibana.services.telemetry.reportEvent).toHaveBeenCalledWith( - ManualRuleRunEventTypes.ManualRuleRunExecute, - { - rangeInMs: timeRange.endDate.diff(timeRange.startDate), - status: 'success', - rulesCount: 1, - } - ); - }); - - it('should call reportEvent with error status on failure', async () => { - const { result, waitFor } = renderHook(() => useScheduleRuleRun(), { - wrapper: TestProviders, - }); - - const timeRange = { startDate: moment().subtract(1, 'd'), endDate: moment() }; - mockUseScheduleRuleRunMutation.mockRejectedValueOnce(new Error('Error scheduling rule run')); - - act(() => { - result.current.scheduleRuleRun({ ruleIds: ['rule-1'], timeRange }); - }); - - await waitFor(() => { - return mockUseScheduleRuleRunMutation.mock.calls.length > 0; - }); - - expect(mockedUseKibana.services.telemetry.reportEvent).toHaveBeenCalledWith( - ManualRuleRunEventTypes.ManualRuleRunExecute, - { - rangeInMs: timeRange.endDate.diff(timeRange.startDate), - status: 'error', - rulesCount: 1, - } - ); - }); -}); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts deleted file mode 100644 index d8b6503f08a11..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; -import { - REFERENCES_FIELD_LABEL, - RISK_SCORE_MAPPING_FIELD_LABEL, - SEVERITY_MAPPING_FIELD_LABEL, - THREAT_INDICATOR_PATH_LABEL, - INDEX_FIELD_LABEL, - DATA_VIEW_ID_FIELD_LABEL, - THREAT_FIELD_LABEL, - ANOMALY_THRESHOLD_FIELD_LABEL, - MACHINE_LEARNING_JOB_ID_FIELD_LABEL, - THREAT_INDEX_FIELD_LABEL, - THREAT_MAPPING_FIELD_LABEL, - HISTORY_WINDOW_SIZE_FIELD_LABEL, -} from '../translations'; - -/** - * Used when fields have different display names or formats than their corresponding rule object fields - */ -export const fieldToDisplayNameMap: Record<string, string> = { - data_source: i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.dataSourceLabel', - { - defaultMessage: 'Data source', - } - ), - note: i18n.translate('xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.noteLabel', { - defaultMessage: 'Investigation guide', - }), - severity_mapping: SEVERITY_MAPPING_FIELD_LABEL, - risk_score_mapping: RISK_SCORE_MAPPING_FIELD_LABEL, - references: REFERENCES_FIELD_LABEL, - threat_indicator_path: THREAT_INDICATOR_PATH_LABEL, - index_patterns: INDEX_FIELD_LABEL, - data_view_id: DATA_VIEW_ID_FIELD_LABEL, - threat: THREAT_FIELD_LABEL, - eql_query: i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.eqlQueryLabel', - { - defaultMessage: 'EQL query', - } - ), - kql_query: i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.kqlQueryLabel', - { - defaultMessage: 'KQL query', - } - ), - threat_query: i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.threatQueryLabel', - { - defaultMessage: 'Indicator index query', - } - ), - esql_query: i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.esqlQueryLabel', - { - defaultMessage: 'ESQL query', - } - ), - anomaly_threshold: ANOMALY_THRESHOLD_FIELD_LABEL, - machine_learning_job_id: MACHINE_LEARNING_JOB_ID_FIELD_LABEL, - threat_index: THREAT_INDEX_FIELD_LABEL, - threat_mapping: THREAT_MAPPING_FIELD_LABEL, - history_window_start: HISTORY_WINDOW_SIZE_FIELD_LABEL, -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.stories.tsx deleted file mode 100644 index 37ddb71dce9f7..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.stories.tsx +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { ComparisonSide } from './comparison_side'; -import type { - ThreeWayDiff, - DiffableAllFields, - RuleKqlQuery, -} from '../../../../../../../common/api/detection_engine'; -import { - ThreeWayDiffOutcome, - ThreeWayMergeOutcome, - ThreeWayDiffConflict, - KqlQueryType, -} from '../../../../../../../common/api/detection_engine'; -export default { - component: ComparisonSide, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/ComparisonSide', - argTypes: { - fieldName: { - control: 'text', - description: 'Field name to compare', - }, - fieldThreeWayDiff: { - control: 'object', - description: 'Field ThreeWayDiff', - }, - resolvedValue: { - control: 'text', - description: 'Resolved value', - }, - }, -}; - -interface TemplateProps<FieldName extends keyof DiffableAllFields> { - fieldName: FieldName; - fieldThreeWayDiff: ThreeWayDiff<DiffableAllFields[FieldName]>; - resolvedValue?: DiffableAllFields[FieldName]; -} - -const Template: Story<TemplateProps<keyof DiffableAllFields>> = (args) => { - return ( - <ComparisonSide - fieldName={args.fieldName} - fieldThreeWayDiff={args.fieldThreeWayDiff} - resolvedValue={args.resolvedValue} - /> - ); -}; - -export const NoBaseVersion = Template.bind({}); -NoBaseVersion.args = { - fieldName: 'rule_name_override', - fieldThreeWayDiff: { - has_base_version: false, - base_version: undefined, - current_version: { - field_name: 'rule.name', - }, - target_version: undefined, - merged_version: undefined, - diff_outcome: ThreeWayDiffOutcome.MissingBaseCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Target, - has_update: true, - conflict: ThreeWayDiffConflict.SOLVABLE, - }, -}; - -export const WithResolvedValue = Template.bind({}); -WithResolvedValue.args = { - fieldName: 'risk_score', - fieldThreeWayDiff: { - has_base_version: true, - base_version: 10, - current_version: 40, - target_version: 20, - merged_version: 40, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.NON_SOLVABLE, - }, - resolvedValue: 35, -}; -WithResolvedValue.argTypes = { - resolvedValue: { - control: 'number', - }, -}; - -/* Optional field becomes defined - was undefined in base version, but was then defined by user in current version */ -export const OptionalFieldBecomesDefined = Template.bind({}); -OptionalFieldBecomesDefined.args = { - fieldName: 'timestamp_override', - fieldThreeWayDiff: { - has_base_version: true, - base_version: undefined, - current_version: { - field_name: 'event.ingested', - fallback_disabled: true, - }, - target_version: undefined, - merged_version: { - field_name: 'event.ingested', - fallback_disabled: true, - }, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueNoUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: false, - conflict: ThreeWayDiffConflict.NONE, - }, -}; - -export const SubfieldsWithLabels = Template.bind({}); - -const subfieldsWithLabelsThreeWayDiff: ThreeWayDiff<RuleKqlQuery> = { - has_base_version: true, - base_version: { - type: KqlQueryType.inline_query, - query: 'event.agent_id_status: *', - language: 'kuery', - filters: [], - }, - current_version: { - type: KqlQueryType.inline_query, - query: 'event.agent_id_status: *', - language: 'kuery', - filters: [], - }, - target_version: { - type: KqlQueryType.saved_query, - saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', - }, - merged_version: { - type: KqlQueryType.saved_query, - saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', - }, - diff_outcome: ThreeWayDiffOutcome.StockValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Target, - has_update: true, - conflict: ThreeWayDiffConflict.NONE, -}; - -SubfieldsWithLabels.args = { - fieldName: 'kql_query', - fieldThreeWayDiff: subfieldsWithLabelsThreeWayDiff, -}; - -/* Field type changes - in this example "kql_query" field was "inline" in base version, but became "saved" in the current version */ -export const FieldTypeChanges = Template.bind({}); - -const fieldTypeChangesThreeWayDiff: ThreeWayDiff<RuleKqlQuery> = { - has_base_version: true, - base_version: { - type: KqlQueryType.inline_query, - query: 'event.agent_id_status: *', - language: 'kuery', - filters: [], - }, - current_version: { - type: KqlQueryType.saved_query, - saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', - }, - target_version: { - type: KqlQueryType.inline_query, - query: 'event.agent_id_status: *', - language: 'kuery', - filters: [], - }, - merged_version: { - type: KqlQueryType.saved_query, - saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', - }, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueNoUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: false, - conflict: ThreeWayDiffConflict.NONE, -}; - -FieldTypeChanges.args = { - fieldName: 'kql_query', - fieldThreeWayDiff: fieldTypeChangesThreeWayDiff, -}; - -export const SingleLineStringSubfieldChanges = Template.bind({}); -SingleLineStringSubfieldChanges.args = { - fieldName: 'name', - fieldThreeWayDiff: { - has_base_version: true, - base_version: 'Prebuilt rule', - current_version: 'Customized prebuilt rule', - target_version: 'Prebuilt rule with new changes', - merged_version: 'Customized prebuilt rule', - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.NON_SOLVABLE, - }, -}; - -export const MultiLineStringSubfieldChanges = Template.bind({}); -MultiLineStringSubfieldChanges.args = { - fieldName: 'note', - fieldThreeWayDiff: { - has_base_version: true, - base_version: 'My description.\f\nThis is a second\u2001 line.\f\nThis is a third line.', - current_version: - 'My GREAT description.\f\nThis is a second\u2001 line.\f\nThis is a third line.', - target_version: 'My description.\f\nThis is a second\u2001 line.\f\nThis is a GREAT line.', - merged_version: - 'My GREAT description.\f\nThis is a second\u2001 line.\f\nThis is a GREAT line.', - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Merged, - has_update: true, - conflict: ThreeWayDiffConflict.SOLVABLE, - }, -}; - -export const NumberSubfieldChanges = Template.bind({}); -NumberSubfieldChanges.args = { - fieldName: 'risk_score', - fieldThreeWayDiff: { - has_base_version: true, - base_version: 33, - current_version: 43, - target_version: 53, - merged_version: 43, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.NON_SOLVABLE, - }, -}; - -export const ArraySubfieldChanges = Template.bind({}); -ArraySubfieldChanges.args = { - fieldName: 'tags', - fieldThreeWayDiff: { - has_base_version: true, - base_version: ['one', 'two', 'three'], - current_version: ['two', 'three', 'four', 'five'], - target_version: ['one', 'three', 'four', 'six'], - merged_version: ['three', 'four', 'five', 'six'], - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.SOLVABLE, - }, -}; - -export const QuerySubfieldChanges = Template.bind({}); -QuerySubfieldChanges.args = { - fieldName: 'kql_query', - fieldThreeWayDiff: { - has_base_version: true, - base_version: { - type: KqlQueryType.inline_query, - query: - 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"servicePrincipalName"\n', - language: 'kuery', - filters: [], - }, - current_version: { - type: KqlQueryType.inline_query, - query: - 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" or winlog.event_data.OperationType:"%%14675" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"serviceSecondaryName"\n', - language: 'kuery', - filters: [], - }, - target_version: { - type: KqlQueryType.inline_query, - query: - 'event.action:("Directory Service Changes" or "Directory Service Modifications" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"servicePrincipalName"\n', - language: 'kuery', - filters: [], - }, - merged_version: { - type: KqlQueryType.inline_query, - query: - 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" or winlog.event_data.OperationType:"%%14675" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"serviceSecondaryName"\n', - language: 'kuery', - filters: [], - }, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.NON_SOLVABLE, - }, -}; - -export const SetupGuideSubfieldChanges = Template.bind({}); -SetupGuideSubfieldChanges.args = { - fieldName: 'setup', - fieldThreeWayDiff: { - has_base_version: true, - base_version: - '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect, either "Traditional Endpoints" or "Cloud Workloads".\n- Select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- We suggest selecting "Complete EDR (Endpoint Detection and Response)" as a configuration setting, that provides "All events; all preventions"\n- Enter a name for the agent policy in "New agent policy name". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. For example, you can use Auditbeat to collect and centralize audit events from the Linux Audit Framework. You can also use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n', - current_version: - '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n- Custom Windows Event Logs\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect.\n- Select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- Enter a name for the agent policy in "New agent policy name". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- The rule is now ready to run.\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. For example, you can use Auditbeat to collect and centralize audit events from the Linux Audit Framework. You can also use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for AXT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the AXT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n', - target_version: - '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect, either "Traditional Endpoints" or "Cloud Workloads".\n- Carefully select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- We suggest selecting "Complete EDR (Endpoint Detection and Response)" as a configuration setting, that provides "All events; all preventions"\n- Enter a title for the agent policy in "New agent policy title". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. You can use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n- Good luck!\n', - merged_version: - '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n- Custom Windows Event Logs\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect.\n- Carefully select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- Enter a title for the agent policy in "New agent policy title". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- The rule is now ready to run.\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. You can use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for AXT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the AXT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n- Good luck!\n', - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Merged, - has_update: true, - conflict: ThreeWayDiffConflict.SOLVABLE, - }, -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.tsx deleted file mode 100644 index e5ec6a8dfc540..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.tsx +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useState } from 'react'; -import { EuiFlexGroup, EuiTitle } from '@elastic/eui'; -import { VersionsPicker } from '../versions_picker/versions_picker'; -import type { Version } from '../versions_picker/constants'; -import { SelectedVersions } from '../versions_picker/constants'; -import { pickFieldValueForVersion } from './utils'; -import type { - DiffableAllFields, - ThreeWayDiff, -} from '../../../../../../../common/api/detection_engine'; -import { getSubfieldChanges } from './get_subfield_changes'; -import { SubfieldChanges } from './subfield_changes'; -import { SideHeader } from '../components/side_header'; -import { ComparisonSideHelpInfo } from './comparison_side_help_info'; -import * as i18n from './translations'; - -interface ComparisonSideProps<FieldName extends keyof DiffableAllFields> { - fieldName: FieldName; - fieldThreeWayDiff: ThreeWayDiff<DiffableAllFields[FieldName]>; - resolvedValue: DiffableAllFields[FieldName]; -} - -export function ComparisonSide<FieldName extends keyof DiffableAllFields>({ - fieldName, - fieldThreeWayDiff, - resolvedValue, -}: ComparisonSideProps<FieldName>) { - const [selectedVersions, setSelectedVersions] = useState<SelectedVersions>( - SelectedVersions.CurrentFinal - ); - - const [oldVersionType, newVersionType] = selectedVersions.split('_') as [Version, Version]; - - const oldFieldValue = pickFieldValueForVersion(oldVersionType, fieldThreeWayDiff, resolvedValue); - - const newFieldValue = pickFieldValueForVersion(newVersionType, fieldThreeWayDiff, resolvedValue); - - const subfieldChanges = getSubfieldChanges(fieldName, oldFieldValue, newFieldValue); - - return ( - <> - <SideHeader> - <EuiFlexGroup direction="row" alignItems="center"> - <EuiTitle size="xxs"> - <h3> - {i18n.TITLE} - <ComparisonSideHelpInfo /> - </h3> - </EuiTitle> - <VersionsPicker - hasBaseVersion={fieldThreeWayDiff.has_base_version} - selectedVersions={selectedVersions} - onChange={setSelectedVersions} - /> - </EuiFlexGroup> - </SideHeader> - <SubfieldChanges fieldName={fieldName} subfieldChanges={subfieldChanges} /> - </> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx deleted file mode 100644 index e1eaa9b1e96cd..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import useToggle from 'react-use/lib/useToggle'; -import { EuiPopover, EuiText, EuiButtonIcon } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n-react'; - -/** - * Theme doesn't expose width variables. Using provided size variables will require - * multiplying it by another magic constant. - * - * 320px width looks - * like a [commonly used width in EUI](https://github.com/search?q=repo%3Aelastic%2Feui%20320&type=code). - */ -const POPOVER_WIDTH = 320; - -export function ComparisonSideHelpInfo(): JSX.Element { - const [isPopoverOpen, togglePopover] = useToggle(false); - - const button = ( - <EuiButtonIcon - iconType="questionInCircle" - onClick={togglePopover} - aria-label="Open help popover" - /> - ); - - return ( - <EuiPopover button={button} isOpen={isPopoverOpen} closePopover={togglePopover}> - <EuiText style={{ width: POPOVER_WIDTH }} size="s"> - <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText" - defaultMessage="Choose field values used in the upgraded rule. " - /> - </EuiText> - </EuiPopover> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts deleted file mode 100644 index c3628d74176c3..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { DiffableAllFields } from '../../../../../../../../common/api/detection_engine'; -import { stringifyToSortedJson } from '../utils'; -import { getSubfieldChangesForDataSource } from './data_source'; -import { getSubfieldChangesForKqlQuery } from './kql_query'; -import { getSubfieldChangesForEqlQuery } from './eql_query'; -import { getSubfieldChangesForEsqlQuery } from './esql_query'; -import { getSubfieldChangesForThreatQuery } from './threat_query'; -import { getSubfieldChangesForRuleSchedule } from './rule_schedule'; -import { getSubfieldChangesForRuleNameOverride } from './rule_name_override'; -import { getSubfieldChangesForTimestampOverride } from './timestamp_override'; -import { getSubfieldChangesForTimelineTemplate } from './timeline_template'; -import { getSubfieldChangesForBuildingBlock } from './building_block'; -import { getSubfieldChangesForThreshold } from './threshold'; -import type { SubfieldChanges } from '../types'; - -/** - * Splits a field into subfields and returns the changes between the old and new subfield values. - * - * @param fieldName - The name of the field for which subfield changes are to be computed. - * @param oldFieldValue - The old value of the field. - * @param newFieldValue - The new value of the field. - * @returns - An array of subfield changes. - */ -export const getSubfieldChanges = <FieldName extends keyof DiffableAllFields>( - fieldName: FieldName, - oldFieldValue?: DiffableAllFields[FieldName], - newFieldValue?: DiffableAllFields[FieldName] -): SubfieldChanges => { - switch (fieldName) { - /* - Typecasting `oldFieldValue` and `newFieldValue` to corresponding field - type `DiffableAllFields[*]` is required here since `oldFieldValue` and - `newFieldValue` concrete types depend on `fieldName` but TS doesn't track that. - */ - case 'data_source': - return getSubfieldChangesForDataSource( - oldFieldValue as DiffableAllFields['data_source'], - newFieldValue as DiffableAllFields['data_source'] - ); - case 'kql_query': - return getSubfieldChangesForKqlQuery( - oldFieldValue as DiffableAllFields['kql_query'], - newFieldValue as DiffableAllFields['kql_query'] - ); - case 'eql_query': - return getSubfieldChangesForEqlQuery( - oldFieldValue as DiffableAllFields['eql_query'], - newFieldValue as DiffableAllFields['eql_query'] - ); - case 'esql_query': - return getSubfieldChangesForEsqlQuery( - oldFieldValue as DiffableAllFields['esql_query'], - newFieldValue as DiffableAllFields['esql_query'] - ); - case 'threat_query': - return getSubfieldChangesForThreatQuery( - oldFieldValue as DiffableAllFields['threat_query'], - newFieldValue as DiffableAllFields['threat_query'] - ); - case 'rule_schedule': - return getSubfieldChangesForRuleSchedule( - oldFieldValue as DiffableAllFields['rule_schedule'], - newFieldValue as DiffableAllFields['rule_schedule'] - ); - case 'rule_name_override': - return getSubfieldChangesForRuleNameOverride( - oldFieldValue as DiffableAllFields['rule_name_override'], - newFieldValue as DiffableAllFields['rule_name_override'] - ); - case 'timestamp_override': - return getSubfieldChangesForTimestampOverride( - oldFieldValue as DiffableAllFields['timestamp_override'], - newFieldValue as DiffableAllFields['timestamp_override'] - ); - case 'timeline_template': - return getSubfieldChangesForTimelineTemplate( - oldFieldValue as DiffableAllFields['timeline_template'], - newFieldValue as DiffableAllFields['timeline_template'] - ); - case 'building_block': - return getSubfieldChangesForBuildingBlock( - oldFieldValue as DiffableAllFields['building_block'], - newFieldValue as DiffableAllFields['building_block'] - ); - case 'threshold': - return getSubfieldChangesForThreshold( - oldFieldValue as DiffableAllFields['threshold'], - newFieldValue as DiffableAllFields['threshold'] - ); - default: - const oldFieldValueStringified = stringifyToSortedJson(oldFieldValue); - const newFieldValueStringified = stringifyToSortedJson(newFieldValue); - - if (oldFieldValueStringified === newFieldValueStringified) { - return []; - } - - return [ - { - subfieldName: fieldName, - oldSubfieldValue: oldFieldValueStringified, - newSubfieldValue: newFieldValueStringified, - }, - ]; - } -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/translations.ts deleted file mode 100644 index 8208892ac298d..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/translations.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const TITLE = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.title', - { - defaultMessage: 'Diff view', - } -); - -export const NO_CHANGES = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.noChangesLabel', - { - defaultMessage: 'No changes', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts deleted file mode 100644 index d0673c460a1d5..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import stringify from 'json-stable-stringify'; -import { Version } from '../versions_picker/constants'; -import type { - DiffableAllFields, - ThreeWayDiff, -} from '../../../../../../../common/api/detection_engine'; - -/** - * Picks the field value for a given version either from a three-way diff object or from a user-set resolved value. - * - * @param version - The version for which the field value is to be picked. - * @param fieldThreeWayDiff - The three-way diff object containing the field values for different versions. - * @param resolvedValue - A value field will be upgraded to. - * @returns - The field value for the specified version - */ -export function pickFieldValueForVersion<FieldName extends keyof DiffableAllFields>( - version: Version, - fieldThreeWayDiff: ThreeWayDiff<DiffableAllFields[FieldName]>, - resolvedValue: DiffableAllFields[FieldName] -): DiffableAllFields[FieldName] | undefined { - if (version === Version.Final) { - return resolvedValue; - } - - const versionFieldToPick = `${version}_version` as const; - return fieldThreeWayDiff[versionFieldToPick]; -} - -/** - * Stringifies a field value to an alphabetically sorted JSON string. - */ -export const stringifyToSortedJson = (fieldValue: unknown): string => { - if (fieldValue === undefined) { - return ''; - } - - if (typeof fieldValue === 'string') { - return fieldValue; - } - - return stringify(fieldValue, { space: 2 }); -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver.tsx deleted file mode 100644 index 6a2ad17f45f26..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver.tsx +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiSpacer, useEuiTheme } from '@elastic/eui'; -import { css } from '@emotion/css'; -import { SplitAccordion } from '../../../../../../common/components/split_accordion'; -import type { - DiffableAllFields, - RuleFieldsDiff, - ThreeWayDiff, -} from '../../../../../../../common/api/detection_engine'; -import { ThreeWayDiffConflict } from '../../../../../../../common/api/detection_engine'; -import type { FieldUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; -import { ComparisonSide } from '../comparison_side/comparison_side'; -import { FinalSide } from '../final_side/final_side'; -import { FieldUpgradeConflictsResolverHeader } from './field_upgrade_conflicts_resolver_header'; -import { useDiffableRuleContext } from '../diffable_rule_context'; -import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; - -interface FieldUpgradeConflictsResolverProps<FieldName extends UpgradeableDiffableFields> { - fieldName: FieldName; - fieldUpgradeState: FieldUpgradeState; - fieldThreeWayDiff: RuleFieldsDiff[FieldName]; -} - -export function FieldUpgradeConflictsResolver<FieldName extends UpgradeableDiffableFields>({ - fieldName, - fieldUpgradeState, - fieldThreeWayDiff, -}: FieldUpgradeConflictsResolverProps<FieldName>): JSX.Element { - const { euiTheme } = useEuiTheme(); - const hasConflict = fieldThreeWayDiff.conflict !== ThreeWayDiffConflict.NONE; - - const { finalDiffableRule } = useDiffableRuleContext(); - - return ( - <> - <SplitAccordion - header={ - <FieldUpgradeConflictsResolverHeader - fieldName={fieldName} - fieldUpgradeState={fieldUpgradeState} - /> - } - initialIsOpen={hasConflict} - data-test-subj="ruleUpgradePerFieldDiff" - > - <EuiFlexGroup gutterSize="s" alignItems="flexStart"> - <EuiFlexItem grow={1}> - <ComparisonSide - fieldName={fieldName} - fieldThreeWayDiff={fieldThreeWayDiff as ThreeWayDiff<DiffableAllFields[FieldName]>} - resolvedValue={finalDiffableRule[fieldName] as DiffableAllFields[FieldName]} - /> - </EuiFlexItem> - <EuiFlexItem - grow={0} - css={css` - align-self: stretch; - border-right: ${euiTheme.border.thin}; - `} - /> - <EuiFlexItem grow={1}> - <FinalSide fieldName={fieldName} /> - </EuiFlexItem> - </EuiFlexGroup> - </SplitAccordion> - <EuiSpacer size="s" /> - </> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver_header.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver_header.tsx deleted file mode 100644 index a096f025873a5..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver_header.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { camelCase, startCase } from 'lodash'; -import { EuiFlexGroup, EuiTitle } from '@elastic/eui'; -import { fieldToDisplayNameMap } from '../../diff_components/translations'; -import type { FieldUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; -import { FieldUpgradeStateInfo } from './field_upgrade_state_info'; - -interface FieldUpgradeConflictsResolverHeaderProps { - fieldName: string; - fieldUpgradeState: FieldUpgradeState; -} - -export function FieldUpgradeConflictsResolverHeader({ - fieldName, - fieldUpgradeState, -}: FieldUpgradeConflictsResolverHeaderProps): JSX.Element { - return ( - <EuiFlexGroup direction="row" alignItems="center"> - <EuiTitle data-test-subj="ruleUpgradeFieldDiffLabel" size="xs"> - <h5>{fieldToDisplayNameMap[fieldName] ?? startCase(camelCase(fieldName))}</h5> - </EuiTitle> - - <FieldUpgradeStateInfo state={fieldUpgradeState} /> - </EuiFlexGroup> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/field_upgrade_state_info.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/field_upgrade_state_info.tsx deleted file mode 100644 index c49fc18e2c6ba..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/field_upgrade_state_info.tsx +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiIcon, EuiText } from '@elastic/eui'; -import { FieldUpgradeState } from '../../../../../model/prebuilt_rule_upgrade'; -import * as i18n from './translations'; - -interface FieldUpgradeStateInfoProps { - state: FieldUpgradeState; -} - -export function FieldUpgradeStateInfo({ state }: FieldUpgradeStateInfoProps): JSX.Element { - switch (state) { - case FieldUpgradeState.Accepted: - return ( - <> - <EuiText color="success" size="xs"> - <EuiIcon type="checkInCircleFilled" /> -  <strong>{i18n.UPDATE_ACCEPTED}</strong> - {i18n.SEPARATOR} - {i18n.UPDATE_ACCEPTED_DESCRIPTION} - </EuiText> - </> - ); - - case FieldUpgradeState.SolvableConflict: - return ( - <> - <EuiText color="warning" size="xs"> - <EuiIcon type="warning" /> -  <strong>{i18n.SOLVABLE_CONFLICT}</strong> - {i18n.SEPARATOR} - {i18n.SOLVABLE_CONFLICT_DESCRIPTION} - </EuiText> - </> - ); - - case FieldUpgradeState.NonSolvableConflict: - return ( - <> - <EuiText color="danger" size="xs"> - <EuiIcon type="warning" /> -  <strong>{i18n.NON_SOLVABLE_CONFLICT}</strong> - {i18n.SEPARATOR} - {i18n.NON_SOLVABLE_CONFLICT_DESCRIPTION} - </EuiText> - </> - ); - } -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/translations.tsx deleted file mode 100644 index 36349b5029a87..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/translations.tsx +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const UPDATE_ACCEPTED = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAccepted', - { - defaultMessage: 'Update accepted', - } -); - -export const UPDATE_ACCEPTED_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAcceptedDescription', - { - defaultMessage: - 'You can still make changes, please review/accept all other conflicts before updating the rule.', - } -); - -export const SOLVABLE_CONFLICT = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict', - { - defaultMessage: 'Solved conflict', - } -); - -export const SOLVABLE_CONFLICT_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription', - { - defaultMessage: - 'We have suggested an update for this modified field, please review before accepting.', - } -); - -export const NON_SOLVABLE_CONFLICT = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict', - { - defaultMessage: 'Solved conflict', - } -); - -export const NON_SOLVABLE_CONFLICT_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription', - { - defaultMessage: - 'We have suggested an update for this modified field, please review before accepting.', - } -); - -export const SEPARATOR = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator', - { - defaultMessage: ' - ', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/index.ts deleted file mode 100644 index 75ff48ff541a1..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './rule_upgrade_callout'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/rule_upgrade_callout.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/rule_upgrade_callout.tsx deleted file mode 100644 index 8ab2674524952..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/rule_upgrade_callout.tsx +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useMemo } from 'react'; -import { EuiCallOut } from '@elastic/eui'; -import type { RuleUpgradeState } from '../../../../../model/prebuilt_rule_upgrade'; -import { FieldUpgradeState } from '../../../../../model/prebuilt_rule_upgrade'; -import * as i18n from './translations'; - -interface RuleUpgradeCalloutProps { - ruleUpgradeState: RuleUpgradeState; -} - -export function RuleUpgradeCallout({ ruleUpgradeState }: RuleUpgradeCalloutProps): JSX.Element { - const fieldsUpgradeState = ruleUpgradeState.fieldsUpgradeState; - const { numOfNonSolvableConflicts, numOfSolvableConflicts } = useMemo(() => { - let numOfFieldsWithNonSolvableConflicts = 0; - let numOfFieldsWithSolvableConflicts = 0; - - for (const fieldName of Object.keys(fieldsUpgradeState)) { - if (fieldsUpgradeState[fieldName] === FieldUpgradeState.NonSolvableConflict) { - numOfFieldsWithNonSolvableConflicts++; - } - - if (fieldsUpgradeState[fieldName] === FieldUpgradeState.SolvableConflict) { - numOfFieldsWithSolvableConflicts++; - } - } - - return { - numOfNonSolvableConflicts: numOfFieldsWithNonSolvableConflicts, - numOfSolvableConflicts: numOfFieldsWithSolvableConflicts, - }; - }, [fieldsUpgradeState]); - - if (numOfNonSolvableConflicts > 0) { - return ( - <EuiCallOut - title={i18n.RULE_HAS_NON_SOLVABLE_CONFLICTS(numOfNonSolvableConflicts)} - iconType="warning" - color="danger" - size="s" - > - <p>{i18n.RULE_HAS_NON_SOLVABLE_CONFLICTS_DESCRIPTION}</p> - </EuiCallOut> - ); - } - - if (numOfSolvableConflicts > 0) { - return ( - <EuiCallOut - title={i18n.RULE_HAS_SOLVABLE_CONFLICTS(numOfSolvableConflicts)} - iconType="warning" - color="warning" - size="s" - > - <p>{i18n.RULE_HAS_SOLVABLE_CONFLICTS_DESCRIPTION}</p> - </EuiCallOut> - ); - } - - return ( - <EuiCallOut - title={i18n.RULE_IS_READY_FOR_UPGRADE} - iconType="checkInCircleFilled" - color="success" - size="s" - > - <p>{i18n.RULE_IS_READY_FOR_UPGRADE_DESCRIPTION}</p> - </EuiCallOut> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/translations.tsx deleted file mode 100644 index 319884746dbc2..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/translations.tsx +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const RULE_HAS_NON_SOLVABLE_CONFLICTS = (count: number) => - i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflicts', - { - values: { count }, - defaultMessage: - '{count} of the fields {count, plural, one {has} other {have}} an unsolved conflict. Please review and modify accordingly.', - } - ); - -export const RULE_HAS_NON_SOLVABLE_CONFLICTS_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflictsDescription', - { - defaultMessage: - 'Please provide an input for the unsolved conflict. You can also keep the current without the updates, or accept the Elastic update but lose your modifications.', - } -); - -export const RULE_HAS_SOLVABLE_CONFLICTS = (count: number) => - i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflicts', - { - values: { count }, - defaultMessage: - '{count} of the fields {count, plural, one {has} other {have}} an update conflict, please review the suggested update being updating.', - } - ); - -export const RULE_HAS_SOLVABLE_CONFLICTS_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflictsDescription', - { - defaultMessage: - 'Please review the suggested updated version before accepting the update. You can edit and then save the field if you wish to change it.', - } -); - -export const RULE_IS_READY_FOR_UPGRADE = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgrade', - { - defaultMessage: 'The update is ready to be applied.', - } -); - -export const RULE_IS_READY_FOR_UPGRADE_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription', - { - defaultMessage: 'All conflicts have now been reviewed and solved please update the rule.', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_conflicts_resolver.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_conflicts_resolver.tsx deleted file mode 100644 index 3379cf2ab3e96..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_conflicts_resolver.tsx +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { RuleUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; -import { FieldUpgradeConflictsResolver } from './field_upgrade_conflicts_resolver'; -import type { NonUpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; -import { isNonUpgradeableFieldName } from '../../../../model/prebuilt_rule_upgrade/fields'; - -type FieldDiffEntries<FieldsDiff, ExcludedFields extends keyof FieldsDiff = never> = Array< - [ - Exclude<keyof FieldsDiff, ExcludedFields>, - Required<FieldsDiff>[Exclude<keyof FieldsDiff, ExcludedFields>] - ] ->; - -interface RuleUpgradeConflictsResolverProps { - ruleUpgradeState: RuleUpgradeState; -} - -export function RuleUpgradeConflictsResolver({ - ruleUpgradeState, -}: RuleUpgradeConflictsResolverProps): React.ReactNode { - const fieldDiffEntries = Object.entries(ruleUpgradeState.diff.fields) as FieldDiffEntries< - typeof ruleUpgradeState.diff.fields - >; - - const fields = fieldDiffEntries.filter(([fieldName]) => { - return isNonUpgradeableFieldName(fieldName) === false; - }) as FieldDiffEntries<typeof ruleUpgradeState.diff.fields, NonUpgradeableDiffableFields>; - - return fields.map(([fieldName, fieldDiff]) => ( - <FieldUpgradeConflictsResolver - key={fieldName} - fieldName={fieldName} - fieldUpgradeState={ruleUpgradeState.fieldsUpgradeState[fieldName]} - fieldThreeWayDiff={fieldDiff} - /> - )); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_info_bar.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_info_bar.tsx deleted file mode 100644 index 970f04f383274..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_info_bar.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { RuleUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; -import { - UtilityBar, - UtilityBarGroup, - UtilityBarSection, - UtilityBarText, -} from '../../../../../../common/components/utility_bar'; -import * as i18n from './translations'; - -interface UpgradeInfoBarProps { - ruleUpgradeState: RuleUpgradeState; -} - -export function RuleUpgradeInfoBar({ ruleUpgradeState }: UpgradeInfoBarProps): JSX.Element { - const numOfFieldsWithUpdates = ruleUpgradeState.diff.num_fields_with_updates; - const numOfConflicts = ruleUpgradeState.diff.num_fields_with_conflicts; - - return ( - <UtilityBar> - <UtilityBarSection> - <UtilityBarGroup> - <UtilityBarText dataTestSubj="showingRules"> - {i18n.NUM_OF_FIELDS_WITH_UPDATES(numOfFieldsWithUpdates)} - </UtilityBarText> - </UtilityBarGroup> - <UtilityBarGroup> - <UtilityBarText dataTestSubj="showingRules"> - {i18n.NUM_OF_CONFLICTS(numOfConflicts)} - </UtilityBarText> - </UtilityBarGroup> - </UtilityBarSection> - <UtilityBarSection> - <UtilityBarGroup> - <i18n.RuleUpgradeHelper /> - </UtilityBarGroup> - </UtilityBarSection> - </UtilityBar> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/side_header.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/side_header.tsx deleted file mode 100644 index 574e3f526f856..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/side_header.tsx +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { PropsWithChildren } from 'react'; -import React from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, useEuiTheme } from '@elastic/eui'; -import { css } from '@emotion/css'; - -export function SideHeader({ children }: PropsWithChildren<{}>) { - const { euiTheme } = useEuiTheme(); - - return ( - <> - <EuiFlexGroup - alignItems="center" - css={css` - height: ${euiTheme.size.xxl}; - `} - > - <EuiFlexItem>{children}</EuiFlexItem> - </EuiFlexGroup> - <EuiHorizontalRule margin="s" /> - </> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/translations.tsx deleted file mode 100644 index 27172cb98755c..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/translations.tsx +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiLink } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { useKibana } from '../../../../../../common/lib/kibana/kibana_react'; - -export const NUM_OF_FIELDS_WITH_UPDATES = (count: number) => ( - <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.fieldsWithUpdates" - defaultMessage="Upgrade has {count} {count, plural, one {field} other {fields}}" - values={{ count: <strong>{count}</strong> }} - /> -); - -export const NUM_OF_CONFLICTS = (count: number) => ( - <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfConflicts" - defaultMessage="{count} {count, plural, one {conflict} other {conflicts}}" - values={{ count: <strong>{count}</strong> }} - /> -); - -const UPGRADE_RULES_DOCS_LINK = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink', - { - defaultMessage: 'update your rules', - } -); - -export function RuleUpgradeHelper(): JSX.Element { - const { - docLinks: { - links: { - securitySolution: { manageDetectionRules }, - }, - }, - } = useKibana().services; - const manageDetectionRulesSnoozeSection = `${manageDetectionRules}#edit-rules-settings`; - - return ( - <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.ruleUpgradeHelper" - defaultMessage="Understand how to {docsLink}." - values={{ - docsLink: ( - <EuiLink href={manageDetectionRulesSnoozeSection} target="_blank"> - {UPGRADE_RULES_DOCS_LINK} - </EuiLink> - ), - }} - /> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/diffable_rule_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/diffable_rule_context.tsx deleted file mode 100644 index 4210b394c7618..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/diffable_rule_context.tsx +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { createContext, useContext } from 'react'; -import type { DiffableRule } from '../../../../../../common/api/detection_engine'; -import { invariant } from '../../../../../../common/utils/invariant'; -import type { SetRuleFieldResolvedValueFn } from '../../../model/prebuilt_rule_upgrade/set_rule_field_resolved_value'; - -interface DiffableRuleContextType { - finalDiffableRule: DiffableRule; - setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; -} - -const DiffableRuleContext = createContext<DiffableRuleContextType | null>(null); - -interface DiffableRuleContextProviderProps { - finalDiffableRule: DiffableRule; - setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; - children: React.ReactNode; -} - -export function DiffableRuleContextProvider({ - finalDiffableRule, - setRuleFieldResolvedValue, - children, -}: DiffableRuleContextProviderProps) { - const contextValue = { - finalDiffableRule, - setRuleFieldResolvedValue, - }; - - return ( - <DiffableRuleContext.Provider value={contextValue}>{children}</DiffableRuleContext.Provider> - ); -} - -export function useDiffableRuleContext() { - const context = useContext(DiffableRuleContext); - - invariant( - context !== null, - 'useDiffableRuleContext must be used inside a DiffableRuleContextProvider' - ); - - return context; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx deleted file mode 100644 index f6ed2e5c657c7..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { - 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 { 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 '../rule_field_edit_form_wrapper'; -import { AlertSuppressionEditAdapter } from './suppression_edit_adapter'; -import { alertSuppressionFormSchema, type AlertSuppressionFormData } from './form_schema'; - -export function AlertSuppressionEditForm(): JSX.Element { - return ( - <RuleFieldEditFormWrapper - component={AlertSuppressionEditAdapter} - ruleFieldFormSchema={alertSuppressionFormSchema} - deserializer={deserializer} - serializer={serializer} - /> - ); -} - -function deserializer(defaultValue: FormData): AlertSuppressionFormData { - const alertSuppression = defaultValue.alert_suppression as AlertSuppression | undefined; - - return { - [ALERT_SUPPRESSION_FIELDS_FIELD_NAME]: alertSuppression?.group_by ?? [], - [ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME]: alertSuppression?.duration - ? AlertSuppressionDurationType.PerTimePeriod - : AlertSuppressionDurationType.PerRuleExecution, - [ALERT_SUPPRESSION_DURATION_FIELD_NAME]: - alertSuppression?.duration ?? ALERT_SUPPRESSION_DEFAULT_DURATION, - [ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME]: - alertSuppression?.missing_fields_strategy ?? DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY, - }; -} - -function serializer(formData: FormData): { alert_suppression?: AlertSuppression } { - const alertSuppressionFormData = formData as AlertSuppressionFormData; - - if (alertSuppressionFormData[ALERT_SUPPRESSION_FIELDS_FIELD_NAME].length === 0) { - return {}; - } - - return { - alert_suppression: { - group_by: alertSuppressionFormData[ALERT_SUPPRESSION_FIELDS_FIELD_NAME], - duration: - alertSuppressionFormData[ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME] === - AlertSuppressionDurationType.PerTimePeriod - ? alertSuppressionFormData[ALERT_SUPPRESSION_DURATION_FIELD_NAME] - : undefined, - missing_fields_strategy: - alertSuppressionFormData[ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME] || - DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY, - }, - }; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx deleted file mode 100644 index af9f9db00cff2..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { - THRESHOLD_ALERT_SUPPRESSION_ENABLED, - ThresholdAlertSuppressionEdit, -} from '../../../../../../../rule_creation/components/threshold_alert_suppression_edit'; -import { ALERT_SUPPRESSION_DURATION_FIELD_NAME } from '../../../../../../../rule_creation/components/alert_suppression_edit'; -import { type FormData } from '../../../../../../../../shared_imports'; -import type { ThresholdAlertSuppression } from '../../../../../../../../../common/api/detection_engine'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; -import { - thresholdAlertSuppressionFormSchema, - type ThresholdAlertSuppressionFormData, -} from './form_schema'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; - -export function ThresholdAlertSuppressionEditForm(): JSX.Element { - return ( - <RuleFieldEditFormWrapper - component={ThresholdAlertSuppressionEditAdapter} - ruleFieldFormSchema={thresholdAlertSuppressionFormSchema} - deserializer={deserializer} - serializer={serializer} - /> - ); -} - -function ThresholdAlertSuppressionEditAdapter({ - finalDiffableRule, -}: RuleFieldEditComponentProps): JSX.Element { - if (finalDiffableRule.type !== 'threshold') { - throw new Error('Threshold rule type expected'); - } - - const suppressibleFields = [finalDiffableRule.threshold.field].flat(); - - return <ThresholdAlertSuppressionEdit suppressionFieldNames={suppressibleFields} />; -} - -function deserializer(defaultValue: FormData): ThresholdAlertSuppressionFormData { - const alertSuppression = defaultValue.alert_suppression as ThresholdAlertSuppression | undefined; - - return { - [THRESHOLD_ALERT_SUPPRESSION_ENABLED]: Boolean(alertSuppression?.duration), - [ALERT_SUPPRESSION_DURATION_FIELD_NAME]: alertSuppression?.duration ?? { - value: 5, - unit: 'm', - }, - }; -} - -function serializer(formData: FormData): { alert_suppression?: ThresholdAlertSuppression } { - const alertSuppressionFormData = formData as ThresholdAlertSuppressionFormData; - - if (!alertSuppressionFormData[THRESHOLD_ALERT_SUPPRESSION_ENABLED]) { - return {}; - } - - return { - alert_suppression: { - duration: alertSuppressionFormData[ALERT_SUPPRESSION_DURATION_FIELD_NAME], - }, - }; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/final_edit.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/final_edit.tsx deleted file mode 100644 index 13bc3daa56037..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/final_edit.tsx +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { assertUnreachable } from '../../../../../../../common/utility_types'; -import { useDiffableRuleContext } from '../diffable_rule_context'; -import { CommonRuleFieldEdit } from './common_rule_field_edit'; -import { CustomQueryRuleFieldEdit } from './custom_query_rule_field_edit'; -import { SavedQueryRuleFieldEdit } from './saved_query_rule_field_edit'; -import { ThreatMatchRuleFieldEdit } from './threat_match_rule_field_edit'; -import { ThresholdRuleFieldEdit } from './threshold_rule_field_edit'; -import { NewTermsRuleFieldEdit } from './new_terms_rule_field_edit'; -import type { - UpgradeableCustomQueryFields, - UpgradeableSavedQueryFields, - UpgradeableThreatMatchFields, - UpgradeableThresholdFields, - UpgradeableNewTermsFields, - UpgradeableEqlFields, - UpgradeableEsqlFields, - UpgradeableMachineLearningFields, -} from '../../../../model/prebuilt_rule_upgrade/fields'; -import { isCommonFieldName } from '../../../../model/prebuilt_rule_upgrade/fields'; -import { useFinalSideContext } from '../final_side/final_side_context'; -import { EqlRuleFieldEdit } from './eql_rule_field_edit'; -import { EsqlRuleFieldEdit } from './esql_rule_field_edit'; -import { MachineLearningRuleFieldEdit } from './machine_learning_rule_field_edit'; - -export function FinalEdit() { - const { finalDiffableRule } = useDiffableRuleContext(); - const { type } = finalDiffableRule; - - const { fieldName } = useFinalSideContext(); - - if (isCommonFieldName(fieldName)) { - return <CommonRuleFieldEdit fieldName={fieldName} />; - } - - switch (type) { - case 'query': - return <CustomQueryRuleFieldEdit fieldName={fieldName as UpgradeableCustomQueryFields} />; - case 'saved_query': - return <SavedQueryRuleFieldEdit fieldName={fieldName as UpgradeableSavedQueryFields} />; - case 'eql': - return <EqlRuleFieldEdit fieldName={fieldName as UpgradeableEqlFields} />; - case 'esql': - return <EsqlRuleFieldEdit fieldName={fieldName as UpgradeableEsqlFields} />; - case 'threat_match': - return <ThreatMatchRuleFieldEdit fieldName={fieldName as UpgradeableThreatMatchFields} />; - case 'threshold': - return <ThresholdRuleFieldEdit fieldName={fieldName as UpgradeableThresholdFields} />; - case 'machine_learning': - return ( - <MachineLearningRuleFieldEdit fieldName={fieldName as UpgradeableMachineLearningFields} /> - ); - case 'new_terms': - return <NewTermsRuleFieldEdit fieldName={fieldName as UpgradeableNewTermsFields} />; - default: - return assertUnreachable(type); - } -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_readonly.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_readonly.tsx deleted file mode 100644 index ecaec5af0f54a..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_readonly.tsx +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useMemo } from 'react'; -import { DiffableCommonFields } from '../../../../../../../common/api/detection_engine'; -import type { - DiffableCustomQueryFields, - DiffableSavedQueryFields, - DiffableEqlFields, - DiffableThreatMatchFields, - DiffableThresholdFields, - DiffableNewTermsFields, - DiffableEsqlFields, - DiffableMachineLearningFields, -} from '../../../../../../../common/api/detection_engine'; -import { assertUnreachable } from '../../../../../../../common/utility_types'; -import { CustomQueryRuleFieldReadOnly } from './custom_query_rule_field_readonly'; -import { SavedQueryRuleFieldReadOnly } from './saved_query_rule_field_readonly'; -import { EqlRuleFieldReadOnly } from './eql_rule_field_readonly'; -import { EsqlRuleFieldReadOnly } from './esql_rule_field_readonly'; -import { ThreatMatchRuleFieldReadOnly } from './threat_match_rule_field_readonly'; -import { ThresholdRuleFieldReadOnly } from './threshold_rule_field_readonly'; -import { MachineLearningRuleFieldReadOnly } from './machine_learning_rule_field_readonly'; -import { NewTermsRuleFieldReadOnly } from './new_terms_rule_field_readonly'; -import { CommonRuleFieldReadOnly } from './common_rule_field_readonly'; -import { useDiffableRuleContext } from '../diffable_rule_context'; - -interface FieldReadOnlyProps { - fieldName: string; -} - -export function FieldReadOnly({ fieldName }: FieldReadOnlyProps) { - const { finalDiffableRule } = useDiffableRuleContext(); - - const { data: commonField } = useMemo( - () => DiffableCommonFields.keyof().safeParse(fieldName), - [fieldName] - ); - - if (commonField) { - return ( - <CommonRuleFieldReadOnly fieldName={commonField} finalDiffableRule={finalDiffableRule} /> - ); - } - - switch (finalDiffableRule.type) { - case 'query': - return ( - <CustomQueryRuleFieldReadOnly - fieldName={fieldName as keyof DiffableCustomQueryFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'saved_query': - return ( - <SavedQueryRuleFieldReadOnly - fieldName={fieldName as keyof DiffableSavedQueryFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'eql': - return ( - <EqlRuleFieldReadOnly - fieldName={fieldName as keyof DiffableEqlFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'esql': - return ( - <EsqlRuleFieldReadOnly - fieldName={fieldName as keyof DiffableEsqlFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'threat_match': - return ( - <ThreatMatchRuleFieldReadOnly - fieldName={fieldName as keyof DiffableThreatMatchFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'threshold': - return ( - <ThresholdRuleFieldReadOnly - fieldName={fieldName as keyof DiffableThresholdFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'machine_learning': - return ( - <MachineLearningRuleFieldReadOnly - fieldName={fieldName as keyof DiffableMachineLearningFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'new_terms': - return ( - <NewTermsRuleFieldReadOnly - fieldName={fieldName as keyof DiffableNewTermsFields} - finalDiffableRule={finalDiffableRule} - /> - ); - default: - return assertUnreachable(finalDiffableRule); - } -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx deleted file mode 100644 index 9aeeee25983d3..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { AlertSuppressionReadOnly } from './alert_suppression'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: AlertSuppressionReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/alert_suppression', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="alert_suppression" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - alert_suppression: { - group_by: ['host.name'], - duration: { value: 5, unit: 'm' }, - missing_fields_strategy: 'suppress', - }, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx deleted file mode 100644 index 392187941046c..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { AnomalyThresholdReadOnly } from './anomaly_threshold'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockMachineLearningRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: AnomalyThresholdReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/anomaly_threshold', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="anomaly_threshold" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockMachineLearningRule({ - anomaly_threshold: 50, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx deleted file mode 100644 index 6bace209f283b..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { BuildingBlockReadOnly } from './building_block'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: BuildingBlockReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/building_block', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="building_block" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - building_block: { - type: 'default', - }, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx deleted file mode 100644 index d7bf26bc7d9ba..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; -import { - dataSourceWithDataView, - dataSourceWithIndexPatterns, - mockDataView, - mockCustomQueryRule, -} from '../../storybook/mocks'; - -export default { - component: FieldReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/data_source', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; - kibanaServicesOverrides?: Record<string, unknown>; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders - kibanaServicesOverrides={args.kibanaServicesOverrides} - finalDiffableRule={args.finalDiffableRule} - > - <FieldReadOnly fieldName="data_source" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const DataSourceWithIndexPatterns = Template.bind({}); - -DataSourceWithIndexPatterns.args = { - finalDiffableRule: mockCustomQueryRule({ - data_source: dataSourceWithIndexPatterns, - }), -}; - -export const DataSourceWithDataView = Template.bind({}); - -DataSourceWithDataView.args = { - finalDiffableRule: mockCustomQueryRule({ - data_source: dataSourceWithDataView, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), - }, - }, - }, -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx deleted file mode 100644 index 079c327fb29ef..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { DescriptionReadOnly } from './description'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: DescriptionReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/description', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="description" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - description: - "Identifies the occurrence of a security alert from the Google Workspace alerts center. Google Workspace's security alert center provides an overview of actionable alerts that may be affecting an organization's domain. An alert is a warning of a potential security issue that Google has detected.", - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx deleted file mode 100644 index 8ee0ac1511784..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; -import { EqlQueryReadOnly } from './eql_query'; -import { - dataSourceWithDataView, - dataSourceWithIndexPatterns, - eqlQuery, - mockDataView, - mockEqlRule, -} from '../../storybook/mocks'; - -export default { - component: EqlQueryReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/eql_query', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; - kibanaServicesOverrides?: Record<string, unknown>; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders - kibanaServicesOverrides={args.kibanaServicesOverrides} - finalDiffableRule={args.finalDiffableRule} - > - <FieldReadOnly fieldName="eql_query" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const EqlQueryWithIndexPatterns = Template.bind({}); - -EqlQueryWithIndexPatterns.args = { - finalDiffableRule: mockEqlRule({ - eql_query: eqlQuery, - data_source: dataSourceWithIndexPatterns, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), - }, - }, - }, -}; - -export const EqlQueryWithDataView = Template.bind({}); - -EqlQueryWithDataView.args = { - finalDiffableRule: mockEqlRule({ - eql_query: eqlQuery, - data_source: dataSourceWithDataView, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), - }, - }, - }, -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx deleted file mode 100644 index 70f37106842e1..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockEsqlRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: FieldReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/esql_query', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="esql_query" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockEsqlRule({ - esql_query: { - query: `SELECT user.name, source.ip FROM "logs-*" WHERE event.action = 'user_login' AND event.outcome = 'failure'`, - language: 'esql', - }, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx deleted file mode 100644 index a5884b340e32b..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FalsePositivesReadOnly } from './false_positives'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: FalsePositivesReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/false_positives', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="false_positives" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - false_positives: [ - 'WAF rules or rule groups may be deleted by a system or network administrator. Verify whether the user identity, user agent, and/or hostname should be making changes in your environment. Rule deletions by unfamiliar users or hosts should be investigated. If known behavior is causing false positives, it can be exempted from the rule.', - 'Uncommon user command activity can be due to an engineer logging onto a server instance in order to perform manual troubleshooting or reconfiguration.', - ], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx deleted file mode 100644 index 12e0f086ecec9..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { HistoryWindowStartReadOnly } from './history_window_start'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockNewTermsRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: HistoryWindowStartReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/history_window_start', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="history_window_start" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockNewTermsRule({ - history_window_start: 'now-14d', - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx deleted file mode 100644 index a32c79076a03d..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { InvestigationFieldsReadOnly } from './investigation_fields'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: InvestigationFieldsReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/investigation_fields', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="investigation_fields" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - investigation_fields: { - field_names: ['host.name', 'source.ip'], - }, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx deleted file mode 100644 index b567b32ada533..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiDescriptionList } from '@elastic/eui'; -import * as ruleDetailsI18n from '../../../../translations'; -import type { InvestigationFields } from '../../../../../../../../../common/api/detection_engine'; -import { InvestigationFields as InvestigationFieldsComponent } from '../../../../rule_about_section'; - -interface InvestigationFieldsReadOnlyProps { - investigationFields?: InvestigationFields; -} - -export function InvestigationFieldsReadOnly({ - investigationFields, -}: InvestigationFieldsReadOnlyProps) { - if (!investigationFields || !investigationFields.field_names.length) { - return null; - } - - return ( - <EuiDescriptionList - listItems={[ - { - title: ruleDetailsI18n.INVESTIGATION_FIELDS_FIELD_LABEL, - description: ( - <InvestigationFieldsComponent investigationFields={investigationFields.field_names} /> - ), - }, - ]} - /> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx deleted file mode 100644 index 16731ec498162..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; -import { - dataSourceWithDataView, - dataSourceWithIndexPatterns, - inlineKqlQuery, - mockDataView, - mockCustomQueryRule, - savedKqlQuery, - savedQueryResponse, - mockSavedQueryRule, -} from '../../storybook/mocks'; - -export default { - component: FieldReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/kql_query', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; - kibanaServicesOverrides?: Record<string, unknown>; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders - kibanaServicesOverrides={args.kibanaServicesOverrides} - finalDiffableRule={args.finalDiffableRule} - > - <FieldReadOnly fieldName="kql_query" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const InlineKqlQueryWithIndexPatterns = Template.bind({}); - -InlineKqlQueryWithIndexPatterns.args = { - finalDiffableRule: mockCustomQueryRule({ - kql_query: inlineKqlQuery, - data_source: dataSourceWithIndexPatterns, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), - }, - }, - }, -}; - -export const InlineKqlQueryWithDataView = Template.bind({}); - -InlineKqlQueryWithDataView.args = { - finalDiffableRule: mockCustomQueryRule({ - kql_query: inlineKqlQuery, - data_source: dataSourceWithDataView, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), - }, - }, - }, -}; - -export const InlineKqlQueryWithoutDataSource = Template.bind({}); - -/* - Filters should still be displayed if no `data_source` is provided. - Component would fall back to the default index pattern in such case. -*/ -InlineKqlQueryWithoutDataSource.args = { - finalDiffableRule: mockCustomQueryRule({ - kql_query: inlineKqlQuery, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), - }, - }, - }, -}; - -export const SavedKqlQueryWithIndexPatterns = Template.bind({}); - -SavedKqlQueryWithIndexPatterns.args = { - finalDiffableRule: mockSavedQueryRule({ - kql_query: savedKqlQuery, - data_source: dataSourceWithIndexPatterns, - type: 'saved_query', - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), - }, - }, - http: { - get: async () => savedQueryResponse, - }, - }, -}; - -export const SavedKqlQueryWithDataView = Template.bind({}); - -SavedKqlQueryWithDataView.args = { - finalDiffableRule: mockSavedQueryRule({ - kql_query: savedKqlQuery, - data_source: dataSourceWithDataView, - type: 'saved_query', - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), - }, - }, - http: { - get: async () => savedQueryResponse, - }, - }, -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx deleted file mode 100644 index ea23aa5984106..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { useQueryClient } from '@tanstack/react-query'; -import type { Story } from '@storybook/react'; -import { MachineLearningJobIdReadOnly } from './machine_learning_job_id'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { FieldReadOnly } from '../../field_readonly'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; -import { GET_MODULES_QUERY_KEY } from '../../../../../../../../common/components/ml_popover/hooks/use_fetch_modules_query'; -import { GET_RECOGNIZER_QUERY_KEY } from '../../../../../../../../common/components/ml_popover/hooks/use_fetch_recognizer_query'; -import { GET_JOBS_SUMMARY_QUERY_KEY } from '../../../../../../../../common/components/ml/hooks/use_fetch_jobs_summary_query'; -import { mockMachineLearningRule } from '../../storybook/mocks'; - -export default { - component: MachineLearningJobIdReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/machine_learning_job_id', -}; - -const mockedModulesData = [ - { - id: 'security_auth', - jobs: [ - { - id: 'auth_high_count_logon_events', - config: { - groups: [], - custom_settings: { - security_app_display_name: 'Spike in Logon Events', - }, - }, - }, - ], - }, -]; - -const mockedCompatibleModules = [ - { - id: 'security_auth', - }, -]; - -function MockMlData({ children }: { children: React.ReactNode }) { - const queryClient = useQueryClient(); - - queryClient.setQueryData([GET_JOBS_SUMMARY_QUERY_KEY, {}], []); - - queryClient.setQueryData([GET_MODULES_QUERY_KEY, {}], mockedModulesData); - - queryClient.setQueryData([GET_RECOGNIZER_QUERY_KEY, {}], mockedCompatibleModules); - - return <>{children}</>; -} - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <MockMlData> - <FieldReadOnly fieldName="machine_learning_job_id" /> - </MockMlData> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockMachineLearningRule({ - machine_learning_job_id: 'auth_high_count_logon_events', - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx deleted file mode 100644 index 3c7945366a174..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { MaxSignalsReadOnly } from './max_signals'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: MaxSignalsReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/max_signals', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="max_signals" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - max_signals: 100, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx deleted file mode 100644 index d97f71b4df0ac..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { NameReadOnly } from './name'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: NameReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/name', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="name" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - name: 'Forwarded Google Workspace Security Alert', - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx deleted file mode 100644 index f3dc5a1e3da9b..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { NewTermsFieldsReadOnly } from './new_terms_fields'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockNewTermsRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: NewTermsFieldsReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/new_terms_fields', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="new_terms_fields" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockNewTermsRule({ - new_terms_fields: ['user.name', 'source.ip'], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx deleted file mode 100644 index 4a62c5e58dc28..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { NoteReadOnly } from './note'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: NoteReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/note', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="note" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - note: '## Triage and analysis\n\n### Investigating Unusual Network Activity\nDetection alerts from this rule indicate the presence of network activity from a Linux process for which network activity is rare and unusual. Here are some possible avenues of investigation:\n- Consider the IP addresses and ports. Are these used by normal but infrequent network workflows? Are they expected or unexpected?\n- If the destination IP address is remote or external, does it associate with an expected domain, organization or geography? Note: avoid interacting directly with suspected malicious IP addresses.\n- Consider the user as identified by the username field. Is this network activity part of an expected workflow for the user who ran the program?\n- Examine the history of execution. If this process only manifested recently, it might be part of a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business or maintenance process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.', - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx deleted file mode 100644 index 5f746fb0a78ce..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiDescriptionList } from '@elastic/eui'; -import * as i18n from './translations'; -import type { InvestigationGuide } from '../../../../../../../../../common/api/detection_engine'; -import { MarkdownRenderer } from '../../../../../../../../common/components/markdown_editor'; - -interface NoteReadOnlyProps { - note: InvestigationGuide; -} - -export function NoteReadOnly({ note }: NoteReadOnlyProps) { - if (!note) { - return null; - } - - return ( - <EuiDescriptionList - listItems={[ - { - title: i18n.NOTE_LABEL, - description: <Note note={note} />, - }, - ]} - /> - ); -} - -interface NoteProps { - note: InvestigationGuide; -} - -function Note({ note }: NoteProps) { - return <MarkdownRenderer textSize="s">{note}</MarkdownRenderer>; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx deleted file mode 100644 index ea8ee856099dd..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { ReferencesReadOnly } from './references'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: ReferencesReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/references', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="references" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - references: [ - 'https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html', - 'https://docs.elastic.co/en/integrations/beaconing', - 'https://www.elastic.co/security-labs/identifying-beaconing-malware-using-elastic', - ], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx deleted file mode 100644 index b810eaa1fbb8f..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { useQueryClient } from '@tanstack/react-query'; -import type { Story } from '@storybook/react'; -import { RelatedIntegrationsReadOnly } from './related_integrations'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; - -export default { - component: RelatedIntegrationsReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/related_integrations', -}; - -const mockedIntegrationsData = [ - { - package_name: 'endpoint', - package_title: 'Elastic Defend', - latest_package_version: '8.15.1', - installed_package_version: '8.16.0-prerelease.1', - is_installed: true, - is_enabled: false, - }, -]; - -function MockRelatedIntegrationsData({ children }: { children: React.ReactNode }) { - const queryClient = useQueryClient(); - - queryClient.setQueryData(['integrations'], mockedIntegrationsData); - - return <>{children}</>; -} - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <MockRelatedIntegrationsData> - <FieldReadOnly fieldName="related_integrations" /> - </MockRelatedIntegrationsData> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - related_integrations: [{ package: 'endpoint', version: '^8.2.0' }], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx deleted file mode 100644 index ee926fc7ed561..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React from 'react'; -import type { Story } from '@storybook/react'; -import { RequiredFieldsReadOnly } from './required_fields'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: RequiredFieldsReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/required_fields', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="required_fields" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - required_fields: [ - { name: 'event.kind', type: 'keyword', ecs: true }, - { name: 'event.module', type: 'keyword', ecs: true }, - ], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx deleted file mode 100644 index cb640e31090cc..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { RiskScoreReadOnly } from './risk_score'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: RiskScoreReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/risk_score', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="risk_score" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - risk_score: 96, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx deleted file mode 100644 index 90dbe7f981f64..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { RiskScoreMappingReadOnly } from './risk_score_mapping'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: RiskScoreMappingReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/risk_score_mapping', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="risk_score_mapping" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - risk_score_mapping: [{ field: 'event.risk_score', operator: 'equals', value: '' }], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx deleted file mode 100644 index 5581bd588a79e..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { requiredOptional } from '@kbn/zod-helpers'; -import { EuiDescriptionList } from '@elastic/eui'; -import type { RiskScoreMapping } from '../../../../../../../../../common/api/detection_engine'; -import * as ruleDetailsI18n from '../../../../translations'; -import { RiskScoreMappingItem } from '../../../../rule_about_section'; - -export interface RiskScoreMappingReadProps { - riskScoreMapping: RiskScoreMapping; -} - -export const RiskScoreMappingReadOnly = ({ riskScoreMapping }: RiskScoreMappingReadProps) => { - const listItems = riskScoreMapping - .filter((riskScoreMappingItem) => riskScoreMappingItem.field !== '') - .map((riskScoreMappingItem, index) => ({ - title: index === 0 ? ruleDetailsI18n.RISK_SCORE_MAPPING_FIELD_LABEL : '', - description: ( - <RiskScoreMappingItem riskScoreMappingItem={requiredOptional(riskScoreMappingItem)} /> - ), - })); - - return <EuiDescriptionList listItems={listItems} />; -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx deleted file mode 100644 index d0d596f15af42..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { RuleNameOverrideReadOnly } from './rule_name_override'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: RuleNameOverrideReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/rule_name_override', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="rule_name_override" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - rule_name_override: { - field_name: 'event.action', - }, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx deleted file mode 100644 index 30f2170a30f31..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { RuleScheduleReadOnly } from './rule_schedule'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: RuleScheduleReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/rule_schedule', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="rule_schedule" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - rule_schedule: { - interval: '5m', - lookback: '60s', - }, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx deleted file mode 100644 index 34410c7c6f638..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { SetupReadOnly } from './setup'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: SetupReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/setup', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="setup" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - setup: - 'The \'PowerShell Script Block Logging\' logging policy must be enabled.\nSteps to implement the logging policy with Advanced Audit Configuration:\n\n```\nComputer Configuration >\nAdministrative Templates >\nWindows PowerShell >\nTurn on PowerShell Script Block Logging (Enable)\n```\n\nSteps to implement the logging policy via registry:\n\n```\nreg add "hklm\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1\n```', - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx deleted file mode 100644 index b51547d1655e0..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { SeverityReadOnly } from './severity'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: SeverityReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/severity', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="severity" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - severity: 'high', - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx deleted file mode 100644 index b4ecb70ce66cd..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { SeverityMappingReadOnly } from './severity_mapping'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: SeverityMappingReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/severity_mapping', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="severity_mapping" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - severity_mapping: [ - { - field: 'event.severity', - operator: 'equals', - severity: 'low', - value: 'LOW', - }, - { - field: 'google_workspace.alert.metadata.severity', - operator: 'equals', - severity: 'high', - value: 'VERY HIGH', - }, - ], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx deleted file mode 100644 index 4d7b478e00f9e..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiDescriptionList } from '@elastic/eui'; -import type { SeverityMapping } from '../../../../../../../../../common/api/detection_engine'; -import * as ruleDetailsI18n from '../../../../translations'; -import { SeverityMappingItem } from '../../../../rule_about_section'; - -export interface SeverityMappingReadOnlyProps { - severityMapping: SeverityMapping; -} - -export const SeverityMappingReadOnly = ({ severityMapping }: SeverityMappingReadOnlyProps) => { - const listItems = severityMapping - .filter((severityMappingItem) => severityMappingItem.field !== '') - .map((severityMappingItem, index) => ({ - title: index === 0 ? ruleDetailsI18n.SEVERITY_MAPPING_FIELD_LABEL : '', - description: <SeverityMappingItem severityMappingItem={severityMappingItem} />, - })); - - return <EuiDescriptionList listItems={listItems} />; -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx deleted file mode 100644 index c8129dd989d24..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { TagsReadOnly } from './tags'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: TagsReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/tags', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="tags" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - tags: ['Elastic', 'Cloud', 'Google Workspace', 'Log Auditing', 'Threat Detection'], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx deleted file mode 100644 index de8c15f29e0cc..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { ThreatReadOnly } from './threat'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: ThreatReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threat" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - threat: [ - { - framework: 'MITRE ATT&CK', - tactic: { - id: 'TA0006', - name: 'Credential Access', - reference: 'https://attack.mitre.org/tactics/TA0006/', - }, - technique: [ - { - id: 'T1003', - name: 'OS Credential Dumping', - reference: 'https://attack.mitre.org/techniques/T1003/', - subtechnique: [ - { - id: 'T1003.001', - name: 'LSASS Memory', - reference: 'https://attack.mitre.org/techniques/T1003/001/', - }, - ], - }, - ], - }, - ], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx deleted file mode 100644 index aeb1b6491bba6..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { ThreatIndexReadOnly } from './threat_index'; -import { mockThreatMatchRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: ThreatIndexReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_index', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threat_index" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_index: ['logs-ti_*', 'logs-defend_*'], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx deleted file mode 100644 index bb91b29fffe11..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { ThreatIndicatorPathReadOnly } from './threat_indicator_path'; -import { mockThreatMatchRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: ThreatIndicatorPathReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_indicator_path', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threat_indicator_path" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_indicator_path: 'threat.indicator', - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx deleted file mode 100644 index c05dfbd71e14f..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiDescriptionList } from '@elastic/eui'; -import * as ruleDetailsI18n from '../../../../translations'; -import { ThreatIndicatorPath } from '../../../../rule_about_section'; - -export interface ThreatIndicatorPathReadOnlyProps { - threatIndicatorPath?: string; -} - -export const ThreatIndicatorPathReadOnly = ({ - threatIndicatorPath, -}: ThreatIndicatorPathReadOnlyProps) => { - if (!threatIndicatorPath) { - return null; - } - - return ( - <EuiDescriptionList - listItems={[ - { - title: ruleDetailsI18n.THREAT_INDEX_FIELD_LABEL, - description: <ThreatIndicatorPath threatIndicatorPath={threatIndicatorPath} />, - }, - ]} - /> - ); -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx deleted file mode 100644 index 35c4bba4544a7..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { ThreatMappingReadOnly } from './threat_mapping'; -import { mockThreatMatchRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: ThreatMappingReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_mapping', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threat_mapping" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_mapping: [ - { - entries: [ - { - field: 'Endpoint.capabilities', - type: 'mapping', - value: 'Target.dll.pe.description', - }, - ], - }, - ], - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx deleted file mode 100644 index 625226ab4f9f5..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { ThreatQueryReadOnly } from './threat_query'; -import { - dataSourceWithDataView, - dataSourceWithIndexPatterns, - inlineKqlQuery, - mockDataView, - mockThreatMatchRule, -} from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: ThreatQueryReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_query', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; - kibanaServicesOverrides?: Record<string, unknown>; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders - kibanaServicesOverrides={args.kibanaServicesOverrides} - finalDiffableRule={args.finalDiffableRule} - > - <FieldReadOnly fieldName="threat_query" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const ThreatQueryWithIndexPatterns = Template.bind({}); - -ThreatQueryWithIndexPatterns.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_query: inlineKqlQuery, - data_source: dataSourceWithIndexPatterns, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), - }, - }, - }, -}; - -export const ThreatQueryWithDataView = Template.bind({}); - -ThreatQueryWithDataView.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_query: inlineKqlQuery, - data_source: dataSourceWithDataView, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), - }, - }, - }, -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx deleted file mode 100644 index 0541d5f9a9b47..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { ThresholdReadOnly } from './threshold'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockThresholdRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: ThresholdReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threshold', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threshold" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockThresholdRule({ - threshold: { - field: ['Responses.process.pid'], - value: 100, - cardinality: [{ field: 'host.id', value: 2 }], - }, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx deleted file mode 100644 index e4c3a2043ff24..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { TimelineTemplateReadOnly } from './timeline_template'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: TimelineTemplateReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/timeline_template', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="timeline_template" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - timeline_template: { - timeline_title: 'Alerts Involving a Single User Timeline', - timeline_id: 'some-timeline-id-123', - }, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx deleted file mode 100644 index 5828ba156d9d2..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { TimestampOverrideReadOnly } from './timestamp_override'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: TimestampOverrideReadOnly, - title: - 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/timestamp_override', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="timestamp_override" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - timestamp_override: { - field_name: 'event.ingested', - fallback_disabled: true, - }, - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx deleted file mode 100644 index ba252a8a80b88..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { TypeReadOnly } from './type'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; - -export default { - component: TypeReadOnly, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/type', -}; - -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="type" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - type: 'query', - }), -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/final_readonly.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/final_readonly.tsx deleted file mode 100644 index 21b8475fe3002..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/final_readonly.tsx +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiButtonEmpty } from '@elastic/eui'; -import React from 'react'; -import { FieldReadOnly } from './field_readonly'; -import * as i18n from '../translations'; -import { useFinalSideContext } from '../final_side/final_side_context'; - -export function FinalReadOnly() { - const { setEditMode, fieldName } = useFinalSideContext(); - - return ( - <> - <EuiButtonEmpty iconType="pencil" onClick={setEditMode}> - {i18n.EDIT_BUTTON_LABEL} - </EuiButtonEmpty> - <FieldReadOnly fieldName={fieldName} /> - </> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/constants.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/constants.ts deleted file mode 100644 index 6316abcae48a3..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/constants.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export enum FinalSideMode { - READONLY = 'readonly', - EDIT = 'edit', -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side.tsx deleted file mode 100644 index 30e3f4461195a..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side.tsx +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiTitle } from '@elastic/eui'; -import { SideHeader } from '../components/side_header'; -import { FinalSideHelpInfo } from './final_side_help_info'; -import * as i18n from './translations'; -import { FinalReadOnly } from '../final_readonly/final_readonly'; -import { FinalEdit } from '../final_edit/final_edit'; -import { FinalSideMode } from './constants'; -import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; -import { assertUnreachable } from '../../../../../../../common/utility_types'; -import { FinalSideContextProvider, useFinalSideContext } from './final_side_context'; - -interface FinalSideProps { - fieldName: UpgradeableDiffableFields; -} - -export function FinalSide({ fieldName }: FinalSideProps): JSX.Element { - return ( - <> - <SideHeader> - <EuiTitle size="xxs"> - <h3> - {i18n.FINAL_UPDATE} - <FinalSideHelpInfo /> - </h3> - </EuiTitle> - </SideHeader> - <FinalSideContextProvider fieldName={fieldName}> - <FinalSideContent /> - </FinalSideContextProvider> - </> - ); -} - -function FinalSideContent(): JSX.Element { - const { mode } = useFinalSideContext(); - - switch (mode) { - case FinalSideMode.READONLY: - return <FinalReadOnly />; - case FinalSideMode.EDIT: - return <FinalEdit />; - default: - return assertUnreachable(mode); - } -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_context.tsx deleted file mode 100644 index 6beb0535e5e27..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_context.tsx +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { createContext, useContext, type PropsWithChildren, useCallback } from 'react'; -import { invariant } from '../../../../../../../common/utils/invariant'; -import { FinalSideMode } from './constants'; -import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; - -interface FinalSideContextType { - fieldName: UpgradeableDiffableFields; - mode: FinalSideMode; - setReadOnlyMode: () => void; - setEditMode: () => void; -} - -const FinalSideContext = createContext<FinalSideContextType | null>(null); - -interface FinalSideContextProviderProps { - fieldName: UpgradeableDiffableFields; -} - -export function FinalSideContextProvider({ - children, - fieldName, -}: PropsWithChildren<FinalSideContextProviderProps>) { - const [mode, setMode] = React.useState<FinalSideMode>(FinalSideMode.READONLY); - const setReadOnlyMode = useCallback(() => setMode(FinalSideMode.READONLY), []); - const setEditMode = useCallback(() => setMode(FinalSideMode.EDIT), []); - - const contextValue = { - fieldName, - setReadOnlyMode, - setEditMode, - mode, - }; - - return <FinalSideContext.Provider value={contextValue}>{children}</FinalSideContext.Provider>; -} - -export function useFinalSideContext() { - const context = useContext(FinalSideContext); - - invariant(context !== null, 'useFinalSideContext must be used inside a FinalSideContextProvider'); - - return context; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_help_info.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_help_info.tsx deleted file mode 100644 index 51e0c5097b97d..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_help_info.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import useToggle from 'react-use/lib/useToggle'; -import { EuiPopover, EuiText, EuiButtonIcon } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n-react'; - -/** - * Theme doesn't expose width variables. Using provided size variables will require - * multiplying it by another magic constant. - * - * 320px width looks - * like a [commonly used width in EUI](https://github.com/search?q=repo%3Aelastic%2Feui%20320&type=code). - */ -const POPOVER_WIDTH = 320; - -export function FinalSideHelpInfo(): JSX.Element { - const [isPopoverOpen, togglePopover] = useToggle(false); - - const button = ( - <EuiButtonIcon - iconType="questionInCircle" - onClick={togglePopover} - aria-label="Open help popover" - /> - ); - - return ( - <EuiPopover button={button} isOpen={isPopoverOpen} closePopover={togglePopover}> - <EuiText style={{ width: POPOVER_WIDTH }} size="s"> - <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText" - defaultMessage="Choose field values used in the upgraded rule. " - /> - </EuiText> - </EuiPopover> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/translations.ts deleted file mode 100644 index 8f6a10b5681be..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/translations.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const FINAL_UPDATE = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate', - { - defaultMessage: 'Final update', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade_conflicts_resolver_tab.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade_conflicts_resolver_tab.tsx deleted file mode 100644 index 95fa407fb7ca2..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade_conflicts_resolver_tab.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiSpacer } from '@elastic/eui'; -import type { - RuleUpgradeState, - SetRuleFieldResolvedValueFn, -} from '../../../model/prebuilt_rule_upgrade'; -import { RuleUpgradeInfoBar } from './components/rule_upgrade_info_bar'; -import { RuleUpgradeConflictsResolver } from './components/rule_upgrade_conflicts_resolver'; -import { DiffableRuleContextProvider } from './diffable_rule_context'; -import { RuleUpgradeCallout } from './components/rule_upgrade_callout'; - -interface RuleUpgradeConflictsResolverTabProps { - ruleUpgradeState: RuleUpgradeState; - setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; -} - -export function RuleUpgradeConflictsResolverTab({ - ruleUpgradeState, - setRuleFieldResolvedValue, -}: RuleUpgradeConflictsResolverTabProps): JSX.Element { - return ( - <DiffableRuleContextProvider - finalDiffableRule={ruleUpgradeState.finalRule} - setRuleFieldResolvedValue={setRuleFieldResolvedValue} - > - <EuiSpacer size="s" /> - <RuleUpgradeInfoBar ruleUpgradeState={ruleUpgradeState} /> - <EuiSpacer size="s" /> - <RuleUpgradeCallout ruleUpgradeState={ruleUpgradeState} /> - <EuiSpacer size="s" /> - <RuleUpgradeConflictsResolver ruleUpgradeState={ruleUpgradeState} /> - </DiffableRuleContextProvider> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/translations.ts deleted file mode 100644 index ced733d87ff6e..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/translations.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const CANCEL_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.cancelButtonLabel', - { - defaultMessage: 'Cancel', - } -); - -export const SAVE_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.saveButtonLabel', - { - defaultMessage: 'Save', - } -); - -export const EDIT_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel', - { - defaultMessage: 'Edit', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/constants.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/constants.ts deleted file mode 100644 index 73a7e89a200a3..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/constants.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { EuiSelectOption } from '@elastic/eui'; -import * as i18n from './translations'; - -export enum Version { - Base = 'base', - Current = 'current', - Target = 'target', - Final = 'final', -} - -export enum SelectedVersions { - BaseTarget = 'base_target', - BaseCurrent = 'base_current', - BaseFinal = 'base_final', - CurrentTarget = 'current_target', - CurrentFinal = 'current_final', - TargetFinal = 'target_final', -} - -export const CURRENT_OPTIONS: EuiSelectOption[] = [ - { - value: SelectedVersions.CurrentFinal, - text: i18n.CURRENT_VS_FINAL, - }, - { - value: SelectedVersions.CurrentTarget, - text: i18n.CURRENT_VS_TARGET, - }, -]; - -export const TARGET_OPTIONS: EuiSelectOption[] = [ - { - value: SelectedVersions.TargetFinal, - text: i18n.TARGET_VS_FINAL, - }, -]; - -export const BASE_OPTIONS: EuiSelectOption[] = [ - { - value: SelectedVersions.BaseFinal, - text: i18n.BASE_VS_FINAL, - }, - { - value: SelectedVersions.BaseTarget, - text: i18n.BASE_VS_TARGET, - }, - { - value: SelectedVersions.BaseCurrent, - text: i18n.BASE_VS_CURRENT, - }, -]; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/translations.ts deleted file mode 100644 index 15699edc206e7..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/translations.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const BASE_VS_TARGET = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsTargetLabel', - { - defaultMessage: 'Base vs Target', - } -); - -export const BASE_VS_CURRENT = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsCurrentLabel', - { - defaultMessage: 'Base vs Current', - } -); - -export const BASE_VS_FINAL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsFinalLabel', - { - defaultMessage: 'Base vs Final', - } -); - -export const CURRENT_VS_TARGET = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsTargetLabel', - { - defaultMessage: 'Current vs Target', - } -); - -export const CURRENT_VS_FINAL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsFinalLabel', - { - defaultMessage: 'Current vs Final', - } -); - -export const TARGET_VS_FINAL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.targetVsFinalLabel', - { - defaultMessage: 'Target vs Final', - } -); - -export const VERSION_PICKER_ARIA_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel', - { - defaultMessage: 'Select versions to compare', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.stories.tsx deleted file mode 100644 index c9193e2c358ad..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.stories.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useState } from 'react'; -import type { Story } from '@storybook/react'; -import { VersionsPicker } from './versions_picker'; -import { SelectedVersions } from './constants'; - -export default { - component: VersionsPicker, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/VersionsPicker', - argTypes: { - hasBaseVersion: { - control: 'boolean', - description: 'Indicates whether the base version of a field is available', - defaultValue: true, - }, - }, -}; - -const Template: Story<{ hasBaseVersion: boolean }> = (args) => { - const [selectedVersions, setSelectedVersions] = useState<SelectedVersions>( - SelectedVersions.CurrentFinal - ); - - return ( - <VersionsPicker - hasBaseVersion={args.hasBaseVersion} - selectedVersions={selectedVersions} - onChange={setSelectedVersions} - /> - ); -}; - -export const Default = Template.bind({}); -Default.args = { - hasBaseVersion: true, -}; - -export const NoBaseVersion = Template.bind({}); -NoBaseVersion.args = { - hasBaseVersion: false, -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.tsx deleted file mode 100644 index 572e281ff3ae4..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.tsx +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback, useMemo } from 'react'; -import { EuiSelect } from '@elastic/eui'; -import type { EuiSelectOption } from '@elastic/eui'; -import { BASE_OPTIONS, CURRENT_OPTIONS, TARGET_OPTIONS, SelectedVersions } from './constants'; -import * as i18n from './translations'; - -interface VersionsPickerProps { - hasBaseVersion: boolean; - selectedVersions: SelectedVersions; - onChange: (pickedVersions: SelectedVersions) => void; -} - -export function VersionsPicker({ - hasBaseVersion, - selectedVersions = SelectedVersions.CurrentFinal, - onChange, -}: VersionsPickerProps) { - const options: EuiSelectOption[] = useMemo( - () => [...CURRENT_OPTIONS, ...TARGET_OPTIONS, ...(hasBaseVersion ? BASE_OPTIONS : [])], - [hasBaseVersion] - ); - - const handleChange = useCallback( - (changeEvent: React.ChangeEvent<HTMLSelectElement>) => { - onChange(changeEvent.target.value as SelectedVersions); - }, - [onChange] - ); - - return ( - <EuiSelect - options={options} - value={selectedVersions} - onChange={handleChange} - aria-label={i18n.VERSION_PICKER_ARIA_LABEL} - /> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts deleted file mode 100644 index e7f36e2011f3c..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts +++ /dev/null @@ -1,393 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const OVERVIEW_TAB_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.overviewTabLabel', - { - defaultMessage: 'Overview', - } -); - -export const INVESTIGATION_GUIDE_TAB_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.investigationGuideTabLabel', - { - defaultMessage: 'Investigation guide', - } -); - -export const UPDATES_TAB_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.updatesTabLabel', - { - defaultMessage: 'Updates', - } -); - -export const JSON_VIEW_UPDATES_TAB_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.jsonViewUpdatesTabLabel', - { - defaultMessage: 'JSON view', - } -); - -export const DISMISS_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.dismissButtonLabel', - { - defaultMessage: 'Dismiss', - } -); - -export const ABOUT_SECTION_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.aboutSectionLabel', - { - defaultMessage: 'About', - } -); - -export const DEFINITION_SECTION_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.definitionSectionLabel', - { - defaultMessage: 'Definition', - } -); - -export const SCHEDULE_SECTION_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.scheduleSectionLabel', - { - defaultMessage: 'Schedule', - } -); - -export const SETUP_GUIDE_SECTION_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.setupGuideSectionLabel', - { - defaultMessage: 'Setup guide', - } -); - -export const NAME_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.nameFieldLabel', - { - defaultMessage: 'Name', - } -); - -export const DESCRIPTION_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.descriptionFieldLabel', - { - defaultMessage: 'Description', - } -); - -export const AUTHOR_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.authorFieldLabel', - { - defaultMessage: 'Author', - } -); - -export const BUILDING_BLOCK_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldLabel', - { - defaultMessage: 'Building block', - } -); - -export const BUILDING_BLOCK_FIELD_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldDescription', - { - defaultMessage: 'All generated alerts will be marked as "building block" alerts', - } -); - -export const SEVERITY_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.severityFieldLabel', - { - defaultMessage: 'Severity', - } -); - -export const SEVERITY_MAPPING_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.severityMappingFieldLabel', - { - defaultMessage: 'Severity override', - } -); - -export const RISK_SCORE_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.riskScoreFieldLabel', - { - defaultMessage: 'Risk score', - } -); - -export const RISK_SCORE_MAPPING_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.riskScoreMappingFieldLabel', - { - defaultMessage: 'Risk score override', - } -); - -export const REFERENCES_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.referencesFieldLabel', - { - defaultMessage: 'Reference URLs', - } -); - -export const FALSE_POSITIVES_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.falsePositivesFieldLabel', - { - defaultMessage: 'False positive examples', - } -); - -export const INVESTIGATION_FIELDS_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.investigationFieldsFieldLabel', - { - defaultMessage: 'Custom highlighted fields', - } -); - -export const LICENSE_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.licenseFieldLabel', - { - defaultMessage: 'License', - } -); - -export const RULE_NAME_OVERRIDE_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.ruleNameOverrideFieldLabel', - { - defaultMessage: 'Rule name override', - } -); - -export const THREAT_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.threatFieldLabel', - { - defaultMessage: 'MITRE ATT&CK\u2122', - } -); - -export const THREAT_INDICATOR_PATH_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.threatIndicatorPathFieldLabel', - { - defaultMessage: 'Indicator prefix override', - } -); - -export const TIMESTAMP_OVERRIDE_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.timestampOverrideFieldLabel', - { - defaultMessage: 'Timestamp override', - } -); - -export const TAGS_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.tagsFieldLabel', - { - defaultMessage: 'Tags', - } -); - -export const INDEX_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.indexFieldLabel', - { - defaultMessage: 'Index patterns', - } -); - -export const DATA_VIEW_ID_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.dataViewIdFieldLabel', - { - defaultMessage: 'Data view ID', - } -); - -export const DATA_VIEW_INDEX_PATTERN_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.dataViewIndexPatternFieldLabel', - { - defaultMessage: 'Data view index pattern', - } -); - -export const DATA_VIEW_INDEX_PATTERN_FETCH_ERROR_MESSAGE = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.dataViewIndexPatternFetchErrorMessage', - { - defaultMessage: 'Could not load data view index pattern', - } -); - -export const RULE_TYPE_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.ruleTypeFieldLabel', - { - defaultMessage: 'Rule type', - } -); - -export const THRESHOLD_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.thresholdFieldLabel', - { - defaultMessage: 'Threshold', - } -); - -export const MACHINE_LEARNING_JOB_ID_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.machineLearningJobIdFieldLabel', - { - defaultMessage: 'Machine Learning job', - } -); - -export const ANOMALY_THRESHOLD_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.anomalyThresholdFieldLabel', - { - defaultMessage: 'Anomaly score threshold', - } -); - -export const RELATED_INTEGRATIONS_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.relatedIntegrationsFieldLabel', - { - defaultMessage: 'Related integrations', - } -); - -export const REQUIRED_FIELDS_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.requiredFieldsFieldLabel', - { - defaultMessage: 'Required fields', - } -); - -export const TIMELINE_TITLE_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.timelineTitleFieldLabel', - { - defaultMessage: 'Timeline template', - } -); - -export const THREAT_INDEX_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.threatIndexFieldLabel', - { - defaultMessage: 'Indicator index patterns', - } -); - -export const THREAT_MAPPING_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.threatMappingFieldLabel', - { - defaultMessage: 'Indicator mapping', - } -); - -export const THREAT_FILTERS_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.threatFiltersFieldLabel', - { - defaultMessage: 'Indicator filters', - } -); - -export const SUPPRESS_ALERTS_BY_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.suppressAlertsByFieldLabel', - { - defaultMessage: 'Suppress alerts by', - } -); - -export const SUPPRESS_ALERTS_DURATION_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.suppressAlertsForFieldLabel', - { - defaultMessage: 'Suppress alerts for', - } -); - -export const SUPPRESSION_FIELD_MISSING_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.suppressionFieldMissingFieldLabel', - { - defaultMessage: 'If a suppression field is missing', - } -); - -export const NEW_TERMS_FIELDS_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.newTermsFieldsFieldLabel', - { - defaultMessage: 'Fields', - } -); - -export const HISTORY_WINDOW_SIZE_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.historyWindowSizeFieldLabel', - { - defaultMessage: 'History Window Size', - } -); - -export const INTERVAL_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.intervalFieldLabel', - { - defaultMessage: 'Runs every', - } -); - -export const FROM_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.fromFieldLabel', - { - defaultMessage: 'Additional look-back time', - } -); - -export const MAX_SIGNALS_FIELD_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.maxAlertsFieldLabel', - { - defaultMessage: 'Max alerts per run', - } -); - -export const MODIFIED_PREBUILT_RULE_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.customizedPrebuiltRuleLabel', - { - defaultMessage: 'Modified Elastic rule', - } -); - -export const QUERY_LANGUAGE_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.queryLanguageLabel', - { - defaultMessage: 'Custom query language', - } -); - -export const THREAT_QUERY_LANGUAGE_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.threatQueryLanguageLabel', - { - defaultMessage: 'Indicator index query language', - } -); - -export const SAVED_QUERY_LANGUAGE_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.savedQueryLanguageLabel', - { - defaultMessage: 'Saved query language', - } -); - -export const KUERY_LANGUAGE_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.kqlLanguageLabel', - { - defaultMessage: 'KQL', - } -); - -export const LUCENE_LANGUAGE_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.luceneLanguageLabel', - { - defaultMessage: 'Lucene', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state.ts deleted file mode 100644 index ae2d8799c0bd4..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export enum FieldUpgradeState { - Accepted = 'ACCEPTED', - SolvableConflict = 'SOLVABLE_CONFLICT', - NonSolvableConflict = 'NON_SOLVABLE_CONFLICT', -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts deleted file mode 100644 index fb18061067ff8..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { FieldUpgradeState } from './field_upgrade_state'; - -export type FieldsUpgradeState = Record<string, FieldUpgradeState>; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts deleted file mode 100644 index 57ee30f308f08..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './field_upgrade_state'; -export * from './fields_upgrade_state'; -export * from './rule_upgrade_state'; -export * from './rules_upgrade_state'; -export * from './set_rule_field_resolved_value'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts deleted file mode 100644 index 0c72361bb29dc..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - type DiffableRule, - type RuleUpgradeInfoForReview, -} from '../../../../../common/api/detection_engine'; -import type { FieldsUpgradeState } from './fields_upgrade_state'; - -export interface RuleUpgradeState extends RuleUpgradeInfoForReview { - /** - * Rule containing desired values users expect to see in the upgraded rule. - */ - finalRule: DiffableRule; - /** - * Indicates whether there are conflicts blocking rule upgrading. - */ - hasUnresolvedConflicts: boolean; - /** - * Stores a record of field names mapped to field upgrade state. - */ - fieldsUpgradeState: FieldsUpgradeState; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/index.tsx deleted file mode 100644 index 84c0a5a579ba6..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/index.tsx +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiConfirmModal } from '@elastic/eui'; -import type { MlSummaryJob } from '@kbn/ml-plugin/common'; -import React, { memo } from 'react'; -import styled from 'styled-components'; -import { rgba } from 'polished'; -import * as i18n from './translations'; - -const JobsUL = styled.ul` - max-height: 200px; - overflow-y: auto; - - &::-webkit-scrollbar { - height: ${({ theme }) => theme.eui.euiScrollBar}; - width: ${({ theme }) => theme.eui.euiScrollBar}; - } - - &::-webkit-scrollbar-thumb { - background-clip: content-box; - background-color: ${({ theme }) => rgba(theme.eui.euiColorDarkShade, 0.5)}; - border: ${({ theme }) => theme.eui.euiScrollBarCorner} solid transparent; - } - - &::-webkit-scrollbar-corner, - &::-webkit-scrollbar-track { - background-color: transparent; - } -`; - -export interface MlJobUpgradeModalProps { - jobs: MlSummaryJob[]; - onCancel: ( - event?: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLButtonElement> - ) => void; - onConfirm?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void; -} - -const MlJobUpgradeModalComponent = ({ jobs, onCancel, onConfirm }: MlJobUpgradeModalProps) => { - return ( - <EuiConfirmModal - title={i18n.ML_JOB_UPGRADE_MODAL_TITLE} - onCancel={onCancel} - onConfirm={onConfirm} - cancelButtonText={i18n.ML_JOB_UPGRADE_MODAL_CANCEL} - confirmButtonText={i18n.ML_JOB_UPGRADE_MODAL_CONFIRM} - buttonColor="danger" - defaultFocusedButton="confirm" - > - <i18n.MlJobUpgradeModalBody /> - {i18n.ML_JOB_UPGRADE_MODAL_AFFECTED_JOBS} - <JobsUL> - {jobs.map((j) => { - return <li key={j.id}>{j.id}</li>; - })} - </JobsUL> - </EuiConfirmModal> - ); -}; - -export const MlJobUpgradeModal = memo(MlJobUpgradeModalComponent); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/translations.tsx deleted file mode 100644 index caf94e5c1a261..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/translations.tsx +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { MlJobCompatibilityLink } from '../../../../../../../common/components/links_to_docs'; - -export const ML_JOB_UPGRADE_MODAL_TITLE = i18n.translate( - 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageTitle', - { - defaultMessage: 'ML rule updates may override your existing rules', - } -); - -export const ML_JOB_UPGRADE_MODAL_CANCEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.cancelTitle', - { - defaultMessage: 'Cancel', - } -); - -export const ML_JOB_UPGRADE_MODAL_CONFIRM = i18n.translate( - 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.confirmTitle', - { - defaultMessage: 'Load rules', - } -); - -export const ML_JOB_UPGRADE_MODAL_AFFECTED_JOBS = i18n.translate( - 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.affectedJobsTitle', - { - defaultMessage: 'Affected jobs:', - } -); - -export const MlJobUpgradeModalBody = () => ( - <FormattedMessage - id="xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageBody" - defaultMessage="{summary} Documentation: {docs}" - values={{ - summary: ( - <p> - <FormattedMessage - id="xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageBody.summary" - defaultMessage="New V3 machine learning jobs have been released, - and the latest corresponding prebuilt detection rules now use these - new ML jobs. You're currently running one or more V1/V2 jobs, which - only work with legacy prebuilt rules. To ensure continued coverage using - V1/V2 jobs, you may need to duplicate or create new rules before - updating your Elastic prebuilt detection rules. Check the documentation - below for instructions on how to keep using the V1/V2 jobs, and how to - start using the new V3 jobs." - /> - </p> - ), - docs: ( - <ul> - <li> - <MlJobCompatibilityLink /> - </li> - </ul> - ), - }} - /> -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/index.tsx deleted file mode 100644 index 0c664398c51f6..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiConfirmModal, EuiText } from '@elastic/eui'; -import React, { memo } from 'react'; -import * as i18n from './translations'; - -export interface UpgradeConflictsModalProps { - onCancel: ( - event?: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLButtonElement> - ) => void; - onConfirm?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void; -} - -const UpgradeConflictsModalComponent = ({ onCancel, onConfirm }: UpgradeConflictsModalProps) => { - return ( - <EuiConfirmModal - title={i18n.UPGRADE_CONFLICTS_MODAL_TITLE} - onCancel={onCancel} - onConfirm={onConfirm} - cancelButtonText={i18n.UPGRADE_CONFLICTS_MODAL_CANCEL} - confirmButtonText={i18n.UPGRADE_CONFLICTS_MODAL_CONFIRM} - buttonColor="primary" - defaultFocusedButton="confirm" - data-test-subj="upgradeConflictsModal" - > - <EuiText>{i18n.UPGRADE_CONFLICTS_MODAL_BODY}</EuiText> - </EuiConfirmModal> - ); -}; - -export const UpgradeConflictsModal = memo(UpgradeConflictsModalComponent); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx deleted file mode 100644 index f66fd92a685fe..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiCallOut } from '@elastic/eui'; -import React from 'react'; -import { - RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION, - RULE_TYPE_CHANGE_CALLOUT_TITLE, -} from './translations'; - -export const RuleTypeChangeCallout = () => { - return ( - <EuiCallOut title={RULE_TYPE_CHANGE_CALLOUT_TITLE} color="danger" iconType="warning"> - <p>{RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION}</p> - </EuiCallOut> - ); -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.ts deleted file mode 100644 index 9a07c1bb6908a..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const UPDATE_ALL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll', - { - defaultMessage: 'Update all', - } -); - -export const UPDATE_SELECTED_RULES = (numberOfSelectedRules: number) => { - return i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected', - { - defaultMessage: 'Update {numberOfSelectedRules} selected rule(s)', - values: { numberOfSelectedRules }, - } - ); -}; - -export const BULK_UPDATE_BUTTON_TOOLTIP_NO_PERMISSIONS = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.noPermissions', - { - defaultMessage: "You don't have permissions to update rules", - } -); - -export const BULK_UPDATE_ALL_RULES_BUTTON_TOOLTIP_CONFLICTS = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.allRules.conflicts', - { - defaultMessage: 'All rules have conflicts. Update them individually.', - } -); - -export const BULK_UPDATE_SELECTED_RULES_BUTTON_TOOLTIP_CONFLICTS = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.selectedRules.conflicts', - { - defaultMessage: 'All selected rules have conflicts. Update them individually.', - } -); - -export const SEARCH_PLACEHOLDER = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder', - { - defaultMessage: 'Search by rule name', - } -); - -export const UPDATE_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.updateButtonLabel', - { - defaultMessage: 'Update', - } -); -export const UPDATE_ERROR = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.updateError', - { - defaultMessage: 'Update error', - } -); - -export const UPDATE_FLYOUT_PER_FIELD_TOOLTIP_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.perFieldTooltip', - { - defaultMessage: 'View changes field by field.', - } -); - -export const UPDATE_FLYOUT_JSON_VIEW_TOOLTIP_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.jsonViewTooltip', - { - defaultMessage: 'View the latest rule changes in JSON format.', - } -); - -export const RULE_TYPE_CHANGE_CALLOUT_TITLE = i18n.translate( - 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeCalloutTitle', - { - defaultMessage: 'Rule type change', - } -); - -export const RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeCalloutDescription', - { - defaultMessage: - 'Your customization will be lost at update. Please take note of your customization or clone this rule before updating.', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts deleted file mode 100644 index b50ca7da1849d..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useCallback, useMemo, useState } from 'react'; -import { useIsPrebuiltRulesCustomizationEnabled } from '../../../../rule_management/hooks/use_is_prebuilt_rules_customization_enabled'; -import type { - RulesUpgradeState, - FieldsUpgradeState, - SetRuleFieldResolvedValueFn, -} from '../../../../rule_management/model/prebuilt_rule_upgrade'; -import { FieldUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; -import { - type FieldsDiff, - type DiffableAllFields, - type DiffableRule, - type RuleUpgradeInfoForReview, - ThreeWayDiffConflict, - type RuleSignatureId, -} from '../../../../../../common/api/detection_engine'; -import { convertRuleToDiffable } from '../../../../../../common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable'; - -type RuleResolvedConflicts = Partial<DiffableAllFields>; -type RulesResolvedConflicts = Record<RuleSignatureId, RuleResolvedConflicts>; - -interface UseRulesUpgradeStateResult { - rulesUpgradeState: RulesUpgradeState; - setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; -} - -export function usePrebuiltRulesUpgradeState( - ruleUpgradeInfos: RuleUpgradeInfoForReview[] -): UseRulesUpgradeStateResult { - const isPrebuiltRulesCustomizationEnabled = useIsPrebuiltRulesCustomizationEnabled(); - const [rulesResolvedConflicts, setRulesResolvedConflicts] = useState<RulesResolvedConflicts>({}); - - const setRuleFieldResolvedValue = useCallback( - (...[params]: Parameters<SetRuleFieldResolvedValueFn>) => { - setRulesResolvedConflicts((prevRulesResolvedConflicts) => ({ - ...prevRulesResolvedConflicts, - [params.ruleId]: { - ...(prevRulesResolvedConflicts[params.ruleId] ?? {}), - [params.fieldName]: params.resolvedValue, - }, - })); - }, - [] - ); - - const rulesUpgradeState = useMemo(() => { - const state: RulesUpgradeState = {}; - - for (const ruleUpgradeInfo of ruleUpgradeInfos) { - state[ruleUpgradeInfo.rule_id] = { - ...ruleUpgradeInfo, - finalRule: calcFinalDiffableRule( - ruleUpgradeInfo, - rulesResolvedConflicts[ruleUpgradeInfo.rule_id] ?? {} - ), - fieldsUpgradeState: calcFieldsState( - ruleUpgradeInfo.diff.fields, - rulesResolvedConflicts[ruleUpgradeInfo.rule_id] ?? {} - ), - hasUnresolvedConflicts: isPrebuiltRulesCustomizationEnabled - ? getUnacceptedConflictsCount( - ruleUpgradeInfo.diff.fields, - rulesResolvedConflicts[ruleUpgradeInfo.rule_id] ?? {} - ) > 0 - : false, - }; - } - - return state; - }, [ruleUpgradeInfos, rulesResolvedConflicts, isPrebuiltRulesCustomizationEnabled]); - - return { - rulesUpgradeState, - setRuleFieldResolvedValue, - }; -} - -function calcFinalDiffableRule( - ruleUpgradeInfo: RuleUpgradeInfoForReview, - ruleResolvedConflicts: RuleResolvedConflicts -): DiffableRule { - return { - ...convertRuleToDiffable(ruleUpgradeInfo.target_rule), - ...convertRuleFieldsDiffToDiffable(ruleUpgradeInfo.diff.fields), - ...ruleResolvedConflicts, - } as DiffableRule; -} - -/** - * Assembles a `DiffableRule` from rule fields diff `merged_version`s. - */ -function convertRuleFieldsDiffToDiffable( - ruleFieldsDiff: FieldsDiff<Record<string, unknown>> -): Partial<DiffableRule> { - const mergeVersionRule: Record<string, unknown> = {}; - - for (const fieldName of Object.keys(ruleFieldsDiff)) { - mergeVersionRule[fieldName] = ruleFieldsDiff[fieldName].merged_version; - } - - return mergeVersionRule; -} - -function calcFieldsState( - ruleFieldsDiff: FieldsDiff<Record<string, unknown>>, - ruleResolvedConflicts: RuleResolvedConflicts -): FieldsUpgradeState { - const fieldsState: FieldsUpgradeState = {}; - - for (const fieldName of Object.keys(ruleFieldsDiff)) { - switch (ruleFieldsDiff[fieldName].conflict) { - case ThreeWayDiffConflict.NONE: - fieldsState[fieldName] = FieldUpgradeState.Accepted; - break; - - case ThreeWayDiffConflict.SOLVABLE: - fieldsState[fieldName] = FieldUpgradeState.SolvableConflict; - break; - - case ThreeWayDiffConflict.NON_SOLVABLE: - fieldsState[fieldName] = FieldUpgradeState.NonSolvableConflict; - break; - } - } - - for (const fieldName of Object.keys(ruleResolvedConflicts)) { - fieldsState[fieldName] = FieldUpgradeState.Accepted; - } - - return fieldsState; -} - -function getUnacceptedConflictsCount( - ruleFieldsDiff: FieldsDiff<Record<string, unknown>>, - ruleResolvedConflicts: RuleResolvedConflicts -): number { - const fieldNames = Object.keys(ruleFieldsDiff); - const fieldNamesWithConflict = fieldNames.filter( - (fieldName) => ruleFieldsDiff[fieldName].conflict !== ThreeWayDiffConflict.NONE - ); - const fieldNamesWithConflictSet = new Set(fieldNamesWithConflict); - - for (const resolvedConflictField of Object.keys(ruleResolvedConflicts)) { - if (fieldNamesWithConflictSet.has(resolvedConflictField)) { - fieldNamesWithConflictSet.delete(resolvedConflictField); - } - } - - return fieldNamesWithConflictSet.size; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_modals.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_modals.tsx deleted file mode 100644 index 256ccf47c194f..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_modals.tsx +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useCallback } from 'react'; -import { useInstalledSecurityJobs } from '../../../../../common/components/ml/hooks/use_installed_security_jobs'; -import { useBoolState } from '../../../../../common/hooks/use_bool_state'; -import { affectedJobIds } from '../../../../../../common/machine_learning/affected_job_ids'; -import { useAsyncConfirmation } from '../rules_table/use_async_confirmation'; - -export const useMlJobUpgradeModal = () => { - const [isVisible, showModal, hideModal] = useBoolState(false); - const { loading: loadingJobs, jobs } = useInstalledSecurityJobs(); - const legacyJobsInstalled = jobs.filter((job) => affectedJobIds.includes(job.id)); - const [confirmLegacyMLJobs, handleConfirm, handleCancel] = useAsyncConfirmation({ - onInit: showModal, - onFinish: hideModal, - }); - - const handleLegacyMLJobsConfirm = useCallback(async () => { - if (legacyJobsInstalled.length > 0) { - return confirmLegacyMLJobs(); - } - return true; - }, [confirmLegacyMLJobs, legacyJobsInstalled]); - - return { - isVisible, - legacyJobsInstalled, - confirmLegacyMLJobs: handleLegacyMLJobsConfirm, - handleConfirm, - handleCancel, - loadingJobs, - }; -}; - -export const useUpgradeConflictsModal = () => { - const [isVisible, showModal, hideModal] = useBoolState(false); - const [confirmConflictsUpgrade, handleConfirm, handleCancel] = useAsyncConfirmation({ - onInit: showModal, - onFinish: hideModal, - }); - - return { - isVisible, - confirmConflictsUpgrade, - handleConfirm, - handleCancel, - }; -}; diff --git a/x-pack/plugins/security_solution/public/detections/jest.config.js b/x-pack/plugins/security_solution/public/detections/jest.config.js deleted file mode 100644 index c3da13db2d8e5..0000000000000 --- a/x-pack/plugins/security_solution/public/detections/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/detections'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/detections', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/detections/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts deleted file mode 100644 index fa33d8fa575be..0000000000000 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useMemo } from 'react'; -import { - ENTITY_STORE_INTERNAL_PRIVILEGES_URL, - LIST_ENTITIES_URL, -} from '../../../common/entity_analytics/entity_store/constants'; -import type { UploadAssetCriticalityRecordsResponse } from '../../../common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen'; -import type { DisableRiskEngineResponse } from '../../../common/api/entity_analytics/risk_engine/engine_disable_route.gen'; -import type { RiskEngineStatusResponse } from '../../../common/api/entity_analytics/risk_engine/engine_status_route.gen'; -import type { InitRiskEngineResponse } from '../../../common/api/entity_analytics/risk_engine/engine_init_route.gen'; -import type { EnableRiskEngineResponse } from '../../../common/api/entity_analytics/risk_engine/engine_enable_route.gen'; -import type { RiskEngineScheduleNowResponse } from '../../../common/api/entity_analytics/risk_engine/engine_schedule_now_route.gen'; -import type { - RiskScoresPreviewRequest, - RiskScoresPreviewResponse, -} from '../../../common/api/entity_analytics/risk_engine/preview_route.gen'; -import type { - RiskScoresEntityCalculationRequest, - RiskScoresEntityCalculationResponse, -} from '../../../common/api/entity_analytics/risk_engine/entity_calculation_route.gen'; -import type { - AssetCriticalityRecord, - EntityAnalyticsPrivileges, -} from '../../../common/api/entity_analytics'; -import type { RiskScoreEntity } from '../../../common/search_strategy'; -import { - RISK_ENGINE_STATUS_URL, - RISK_SCORE_PREVIEW_URL, - RISK_ENGINE_ENABLE_URL, - RISK_ENGINE_DISABLE_URL, - RISK_ENGINE_INIT_URL, - RISK_ENGINE_PRIVILEGES_URL, - ASSET_CRITICALITY_INTERNAL_PRIVILEGES_URL, - ASSET_CRITICALITY_PUBLIC_URL, - RISK_SCORE_INDEX_STATUS_API_URL, - RISK_ENGINE_SETTINGS_URL, - ASSET_CRITICALITY_PUBLIC_CSV_UPLOAD_URL, - RISK_SCORE_ENTITY_CALCULATION_URL, - API_VERSIONS, - RISK_ENGINE_CLEANUP_URL, - RISK_ENGINE_SCHEDULE_NOW_URL, -} from '../../../common/constants'; -import type { SnakeToCamelCase } from '../common/utils'; -import { useKibana } from '../../common/lib/kibana/kibana_react'; -import type { ReadRiskEngineSettingsResponse } from '../../../common/api/entity_analytics/risk_engine'; -import type { ListEntitiesResponse } from '../../../common/api/entity_analytics/entity_store/entities/list_entities.gen'; -import { type ListEntitiesRequestQuery } from '../../../common/api/entity_analytics/entity_store/entities/list_entities.gen'; - -export interface DeleteAssetCriticalityResponse { - deleted: true; -} -export const useEntityAnalyticsRoutes = () => { - const http = useKibana().services.http; - - return useMemo(() => { - /** - * Fetches preview risks scores - */ - const fetchRiskScorePreview = ({ - signal, - params, - }: { - signal?: AbortSignal; - params: RiskScoresPreviewRequest; - }) => - http.fetch<RiskScoresPreviewResponse>(RISK_SCORE_PREVIEW_URL, { - version: '1', - method: 'POST', - body: JSON.stringify(params), - signal, - }); - - /** - * Fetches entities from the Entity Store - */ - const fetchEntitiesList = ({ - signal, - params, - }: { - signal?: AbortSignal; - params: FetchEntitiesListParams; - }) => - http.fetch<ListEntitiesResponse>(LIST_ENTITIES_URL, { - version: API_VERSIONS.public.v1, - method: 'GET', - query: { - entities_types: params.entitiesTypes, - sort_field: params.sortField, - sort_order: params.sortOrder, - page: params.page, - per_page: params.perPage, - filterQuery: params.filterQuery, - }, - signal, - }); - - /** - * Fetches risks engine status - */ - const fetchRiskEngineStatus = ({ signal }: { signal?: AbortSignal }) => - http.fetch<RiskEngineStatusResponse>(RISK_ENGINE_STATUS_URL, { - version: '1', - method: 'GET', - signal, - }); - - /** - * Init risk score engine - */ - const initRiskEngine = () => - http.fetch<InitRiskEngineResponse>(RISK_ENGINE_INIT_URL, { - version: '1', - method: 'POST', - }); - - /** - * Enable risk score engine - */ - const enableRiskEngine = () => - http.fetch<EnableRiskEngineResponse>(RISK_ENGINE_ENABLE_URL, { - version: '1', - method: 'POST', - }); - - /** - * Disable risk score engine - */ - const disableRiskEngine = () => - http.fetch<DisableRiskEngineResponse>(RISK_ENGINE_DISABLE_URL, { - version: '1', - method: 'POST', - }); - - /** - * Enable risk score engine - */ - const scheduleNowRiskEngine = () => - http.fetch<RiskEngineScheduleNowResponse>(RISK_ENGINE_SCHEDULE_NOW_URL, { - version: API_VERSIONS.public.v1, - method: 'POST', - }); - - /** - * Calculate and stores risk score for an entity - */ - const calculateEntityRiskScore = (params: RiskScoresEntityCalculationRequest) => { - return http.fetch<RiskScoresEntityCalculationResponse>(RISK_SCORE_ENTITY_CALCULATION_URL, { - version: '1', - method: 'POST', - body: JSON.stringify(params), - }); - }; - - /** - * Get risk engine privileges - */ - const fetchRiskEnginePrivileges = () => - http.fetch<EntityAnalyticsPrivileges>(RISK_ENGINE_PRIVILEGES_URL, { - version: '1', - method: 'GET', - }); - - /** - * Get asset criticality privileges - */ - const fetchAssetCriticalityPrivileges = () => - http.fetch<EntityAnalyticsPrivileges>(ASSET_CRITICALITY_INTERNAL_PRIVILEGES_URL, { - version: '1', - method: 'GET', - }); - - /** - * Get Entity Store privileges - */ - const fetchEntityStorePrivileges = () => - http.fetch<EntityAnalyticsPrivileges>(ENTITY_STORE_INTERNAL_PRIVILEGES_URL, { - version: '1', - method: 'GET', - }); - - /** - * Create asset criticality - */ - const createAssetCriticality = async ( - params: Pick<AssetCriticality, 'idField' | 'idValue' | 'criticalityLevel'> & { - refresh?: 'wait_for'; - } - ): Promise<AssetCriticalityRecord> => - http.fetch<AssetCriticalityRecord>(ASSET_CRITICALITY_PUBLIC_URL, { - version: API_VERSIONS.public.v1, - method: 'POST', - body: JSON.stringify({ - id_value: params.idValue, - id_field: params.idField, - criticality_level: params.criticalityLevel, - refresh: params.refresh, - }), - }); - - const deleteAssetCriticality = async ( - params: Pick<AssetCriticality, 'idField' | 'idValue'> & { - refresh?: 'wait_for'; - } - ): Promise<{ deleted: true }> => { - await http.fetch(ASSET_CRITICALITY_PUBLIC_URL, { - version: API_VERSIONS.public.v1, - method: 'DELETE', - query: { - id_value: params.idValue, - id_field: params.idField, - refresh: params.refresh, - }, - }); - - // spoof a response to allow us to better distnguish a delete from a create in use_asset_criticality.ts - return { deleted: true }; - }; - - /** - * Get asset criticality - */ - const fetchAssetCriticality = async ( - params: Pick<AssetCriticality, 'idField' | 'idValue'> - ): Promise<AssetCriticalityRecord> => { - return http.fetch<AssetCriticalityRecord>(ASSET_CRITICALITY_PUBLIC_URL, { - version: API_VERSIONS.public.v1, - method: 'GET', - query: { id_value: params.idValue, id_field: params.idField }, - }); - }; - - const uploadAssetCriticalityFile = async ( - fileContent: string, - fileName: string - ): Promise<UploadAssetCriticalityRecordsResponse> => { - const file = new File([new Blob([fileContent])], fileName, { - type: 'text/csv', - }); - const body = new FormData(); - body.append('file', file); - - return http.fetch<UploadAssetCriticalityRecordsResponse>( - ASSET_CRITICALITY_PUBLIC_CSV_UPLOAD_URL, - { - version: API_VERSIONS.public.v1, - method: 'POST', - headers: { - 'Content-Type': undefined, // Lets the browser set the appropriate content type - }, - body, - } - ); - }; - - const getRiskScoreIndexStatus = ({ - query, - signal, - }: { - query: { - indexName: string; - entity: RiskScoreEntity; - }; - signal?: AbortSignal; - }): Promise<{ - isDeprecated: boolean; - isEnabled: boolean; - }> => - http.fetch<{ isDeprecated: boolean; isEnabled: boolean }>(RISK_SCORE_INDEX_STATUS_API_URL, { - version: '1', - method: 'GET', - query, - asSystemRequest: true, - signal, - }); - - /** - * Fetches risk engine settings - */ - const fetchRiskEngineSettings = () => - http.fetch<ReadRiskEngineSettingsResponse>(RISK_ENGINE_SETTINGS_URL, { - version: '1', - method: 'GET', - }); - - /** - * Deletes Risk engine installation and associated data - */ - - const cleanUpRiskEngine = () => - http.fetch(RISK_ENGINE_CLEANUP_URL, { - version: '1', - method: 'DELETE', - }); - - return { - fetchRiskScorePreview, - fetchRiskEngineStatus, - initRiskEngine, - enableRiskEngine, - disableRiskEngine, - scheduleNowRiskEngine, - fetchRiskEnginePrivileges, - fetchAssetCriticalityPrivileges, - fetchEntityStorePrivileges, - createAssetCriticality, - deleteAssetCriticality, - fetchAssetCriticality, - uploadAssetCriticalityFile, - getRiskScoreIndexStatus, - fetchRiskEngineSettings, - calculateEntityRiskScore, - cleanUpRiskEngine, - fetchEntitiesList, - }; - }, [http]); -}; - -export type AssetCriticality = SnakeToCamelCase<AssetCriticalityRecord>; - -export type FetchEntitiesListParams = SnakeToCamelCase<ListEntitiesRequestQuery>; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx deleted file mode 100644 index 9693bf13589ad..0000000000000 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useState, useCallback, useMemo, useEffect } from 'react'; -import type { DataView } from '@kbn/data-views-plugin/public'; -import { - EuiAccordion, - EuiFormRow, - EuiPanel, - EuiSpacer, - EuiTitle, - EuiCallOut, - EuiButton, - EuiIcon, - EuiText, - EuiLoadingSpinner, - EuiFlexGroup, - EuiFlexItem, - EuiCode, -} from '@elastic/eui'; -import type { BoolQuery, TimeRange, Query } from '@kbn/es-query'; -import { buildEsQuery } from '@kbn/es-query'; -import { FormattedMessage } from '@kbn/i18n-react'; -import type { EntityRiskScoreRecord } from '../../../common/api/entity_analytics/common'; -import { - RiskScoreEntity, - RISK_SCORE_INDEX_PATTERN, -} from '../../../common/entity_analytics/risk_engine'; -import { RiskScorePreviewTable } from './risk_score_preview_table'; -import * as i18n from '../translations'; -import { useRiskScorePreview } from '../api/hooks/use_preview_risk_scores'; -import { useKibana } from '../../common/lib/kibana'; -import { SourcererScopeName } from '../../sourcerer/store/model'; -import { useSourcererDataView } from '../../sourcerer/containers'; -import { useAppToasts } from '../../common/hooks/use_app_toasts'; -import type { RiskEngineMissingPrivilegesResponse } from '../hooks/use_missing_risk_engine_privileges'; -import { userHasRiskEngineReadPermissions } from '../common'; -interface IRiskScorePreviewPanel { - showMessage: string; - hideMessage: string; - isLoading: boolean; - items: EntityRiskScoreRecord[]; - type: RiskScoreEntity; -} - -const getRiskiestScores = (scores: EntityRiskScoreRecord[] = [], field: string) => - scores - ?.filter((item) => item?.id_field === field) - ?.sort((a, b) => b?.calculated_score_norm - a?.calculated_score_norm) - ?.slice(0, 5) || []; - -export const RiskScorePreviewSection: React.FC<{ - privileges: RiskEngineMissingPrivilegesResponse; -}> = ({ privileges }) => { - const sectionBody = useMemo(() => { - if (privileges.isLoading) { - return ( - <EuiFlexGroup justifyContent="center"> - <EuiFlexItem grow={false}> - <EuiLoadingSpinner size="xl" /> - </EuiFlexItem> - </EuiFlexGroup> - ); - } - if (userHasRiskEngineReadPermissions(privileges)) { - return <RiskEnginePreview />; - } - - return <MissingPermissionsCallout />; - }, [privileges]); - - return ( - <> - <EuiTitle> - <h2>{i18n.PREVIEW}</h2> - </EuiTitle> - <EuiSpacer size={'s'} /> - {sectionBody} - </> - ); -}; - -const MissingPermissionsCallout = () => { - return ( - <EuiCallOut - title={i18n.PREVIEW_MISSING_PERMISSIONS_TITLE} - color="primary" - iconType="iInCircle" - data-test-subj="missing-risk-engine-preview-permissions" - > - <EuiText size="s"> - <FormattedMessage - id="xpack.securitySolution.riskScore.riskScorePreview.missingPermissionsCallout.description" - defaultMessage="Read permission is required for the {index} index pattern in order to preview data. Contact your administrator for further assistance." - values={{ - index: <EuiCode>{RISK_SCORE_INDEX_PATTERN}</EuiCode>, - }} - /> - </EuiText> - </EuiCallOut> - ); -}; - -const RiskScorePreviewPanel = ({ - items, - showMessage, - hideMessage, - isLoading, - type, -}: IRiskScorePreviewPanel) => { - const [trigger, setTrigger] = useState<'closed' | 'open'>('open'); - const onToggle = (isOpen: boolean) => { - const newState = isOpen ? 'open' : 'closed'; - setTrigger(newState); - }; - - return ( - <EuiPanel hasBorder={true}> - <EuiAccordion - initialIsOpen={true} - isLoading={isLoading} - id={'host-table'} - buttonContent={trigger === 'closed' ? showMessage : hideMessage} - forceState={trigger} - onToggle={onToggle} - extraAction={<EuiIcon type={type === RiskScoreEntity.host ? 'storage' : 'user'} />} - > - <> - <EuiSpacer size={'m'} /> - <RiskScorePreviewTable items={items} type={type} /> - </> - </EuiAccordion> - </EuiPanel> - ); -}; - -const RiskEnginePreview = () => { - const [dateRange, setDateRange] = useState<{ from: string; to: string }>({ - from: 'now-24h', - to: 'now', - }); - - const [filters, setFilters] = useState<{ bool: BoolQuery }>({ - bool: { must: [], filter: [], should: [], must_not: [] }, - }); - - const [dataViewsArray, setDataViewsArray] = useState<DataView[]>([]); - - const { - unifiedSearch: { - ui: { SearchBar }, - }, - dataViews, - } = useKibana().services; - - const { addError } = useAppToasts(); - - const { sourcererDataView } = useSourcererDataView(SourcererScopeName.detections); - - const { data, isLoading, refetch, isError } = useRiskScorePreview({ - data_view_id: sourcererDataView.title, - filter: filters, - range: { - start: dateRange.from, - end: dateRange.to, - }, - }); - - const hosts = getRiskiestScores(data?.scores.host, 'host.name'); - const users = getRiskiestScores(data?.scores.user, 'user.name'); - - const onQuerySubmit = useCallback( - (payload: { dateRange: TimeRange; query?: Query }) => { - setDateRange({ - from: payload.dateRange.from, - to: payload.dateRange.to, - }); - try { - const newFilters = buildEsQuery( - undefined, - payload.query ?? { query: '', language: 'kuery' }, - [] - ); - setFilters(newFilters); - } catch (e) { - addError(e, { title: i18n.PREVIEW_QUERY_ERROR_TITLE }); - } - }, - [addError, setDateRange, setFilters] - ); - - useEffect(() => { - dataViews.create(sourcererDataView).then((dataView) => setDataViewsArray([dataView])); - }, [dataViews, sourcererDataView]); - - if (isError) { - return ( - <EuiCallOut - data-test-subj="risk-preview-error" - title={i18n.PREVIEW_ERROR_TITLE} - color="danger" - iconType="error" - > - <p>{i18n.PREVIEW_ERROR_MESSAGE}</p> - <EuiButton - data-test-subj="risk-preview-error-button" - color="danger" - onClick={() => refetch()} - > - {i18n.PREVIEW_ERROR_TRY_AGAIN} - </EuiButton> - </EuiCallOut> - ); - } - - return ( - <> - <EuiText>{i18n.PREVIEW_DESCRIPTION}</EuiText> - <EuiSpacer /> - <EuiFormRow fullWidth data-test-subj="risk-score-preview-search-bar"> - <SearchBar - appName="siem" - isLoading={isLoading} - indexPatterns={dataViewsArray} - dateRangeFrom={dateRange.from} - dateRangeTo={dateRange.to} - onQuerySubmit={onQuerySubmit} - showFilterBar={false} - showDatePicker={true} - displayStyle={'inPage'} - submitButtonStyle={'iconOnly'} - dataTestSubj="risk-score-preview-search-bar-input" - /> - </EuiFormRow> - - <EuiSpacer /> - - <RiskScorePreviewPanel - items={hosts} - showMessage={i18n.SHOW_HOSTS_RISK_SCORE} - hideMessage={i18n.HIDE_HOSTS_RISK_SCORE} - isLoading={isLoading} - type={RiskScoreEntity.host} - /> - - <EuiSpacer /> - - <RiskScorePreviewPanel - items={users} - showMessage={i18n.SHOW_USERS_RISK_SCORE} - hideMessage={i18n.HIDE_USERS_RISK_SCORE} - isLoading={isLoading} - type={RiskScoreEntity.user} - /> - </> - ); -}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/jest.config.js b/x-pack/plugins/security_solution/public/entity_analytics/jest.config.js deleted file mode 100644 index ab3868717aa54..0000000000000 --- a/x-pack/plugins/security_solution/public/entity_analytics/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/entity_analytics'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/entity_analytics', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/entity_analytics/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx b/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx deleted file mode 100644 index ac9dfd9eb8ab8..0000000000000 --- a/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiBetaBadge, EuiFlexGroup, EuiFlexItem, EuiPageHeader, EuiSpacer } from '@elastic/eui'; - -import { RiskScorePreviewSection } from '../components/risk_score_preview_section'; -import { RiskScoreEnableSection } from '../components/risk_score_enable_section'; -import { ENTITY_ANALYTICS_RISK_SCORE } from '../../app/translations'; -import { BETA } from '../../common/translations'; -import { RiskEnginePrivilegesCallOut } from '../components/risk_engine_privileges_callout'; -import { useMissingRiskEnginePrivileges } from '../hooks/use_missing_risk_engine_privileges'; - -export const EntityAnalyticsManagementPage = () => { - const privileges = useMissingRiskEnginePrivileges(); - return ( - <> - <RiskEnginePrivilegesCallOut privileges={privileges} /> - <EuiPageHeader - pageTitle={ - <EuiFlexGroup> - <EuiFlexItem data-test-subj="entityAnalyticsManagementPageTitle" grow={false}> - {ENTITY_ANALYTICS_RISK_SCORE} - </EuiFlexItem> - <EuiBetaBadge label={BETA} size="s" /> - </EuiFlexGroup> - } - /> - <EuiSpacer size="l" /> - <EuiFlexGroup gutterSize="xl"> - <EuiFlexItem grow={2}> - <RiskScoreEnableSection privileges={privileges} /> - </EuiFlexItem> - <EuiFlexItem grow={2}> - <RiskScorePreviewSection privileges={privileges} /> - </EuiFlexItem> - </EuiFlexGroup> - </> - ); -}; - -EntityAnalyticsManagementPage.displayName = 'EntityAnalyticsManagementPage'; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/translations.ts b/x-pack/plugins/security_solution/public/entity_analytics/translations.ts deleted file mode 100644 index 2e06ec9ad1eb9..0000000000000 --- a/x-pack/plugins/security_solution/public/entity_analytics/translations.ts +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const SHOW_HOSTS_RISK_SCORE = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.hosts.show', - { - defaultMessage: 'Show hosts', - } -); - -export const HIDE_HOSTS_RISK_SCORE = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.hosts.hide', - { - defaultMessage: 'Hide hosts', - } -); - -export const SHOW_USERS_RISK_SCORE = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.users.show', - { - defaultMessage: 'Show users', - } -); - -export const HIDE_USERS_RISK_SCORE = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.users.hide', - { - defaultMessage: 'Hide users', - } -); - -export const RISK_SCORE_MODULE_STATUS = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.status', - { - defaultMessage: 'Status', - } -); - -export const RISK_SCORE_MODULE_STATUS_ON = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.statusOn', - { - defaultMessage: 'On', - } -); - -export const RISK_SCORE_MODULE_STATUS_OFF = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.statusOff', - { - defaultMessage: 'Off', - } -); - -export const ENTITY_RISK_SCORING = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.entityRiskScoring', - { - defaultMessage: 'Entity risk score', - } -); - -export const USEFUL_LINKS = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.usefulLinks', - { - defaultMessage: 'Useful links', - } -); - -export const EA_DASHBOARD_LINK = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.eaDocsDashboard', - { - defaultMessage: 'Entity Analytics dashboard', - } -); - -export const EA_DOCS_RISK_HOSTS = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.eaDocsHosts', - { - defaultMessage: 'Host risk score', - } -); - -export const EA_DOCS_RISK_USERS = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.eaDocsUsers', - { - defaultMessage: 'User risk score', - } -); - -export const EA_DOCS_ENTITY_RISK_SCORE = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.eaDocsEntities', - { - defaultMessage: 'How is the risk score calculated?', - } -); - -export const PREVIEW_MISSING_PERMISSIONS_TITLE = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.missingPermissionsCallout.title', - { - defaultMessage: 'Insufficient index privileges to preview data', - } -); - -export const PREVIEW = i18n.translate('xpack.securitySolution.riskScore.riskScorePreview.preview', { - defaultMessage: 'Preview', -}); - -export const PREVIEW_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.previewDescription', - { - defaultMessage: - 'The entities shown in the preview are the riskiest found in the 1000 sampled during your chosen timeframe. They may not be the riskiest entities across all of your data.', - } -); - -export const PREVIEW_ERROR_TITLE = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.errorTitle', - { - defaultMessage: 'Preview failed', - } -); - -export const PREVIEW_ERROR_MESSAGE = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.errorMessage', - { - defaultMessage: 'Something went wrong when creating the preview. Please try again.', - } -); - -export const PREVIEW_ERROR_TRY_AGAIN = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.tryAgain', - { - defaultMessage: 'Try again', - } -); - -export const PREVIEW_QUERY_ERROR_TITLE = i18n.translate( - 'xpack.securitySolution.riskScore.riskScorePreview.queryErrorTitle', - { - defaultMessage: 'Invalid query', - } -); - -export const UPDATE_AVAILABLE = i18n.translate('xpack.securitySolution.riskScore.updateAvailable', { - defaultMessage: 'Update available', -}); - -export const START_UPDATE = i18n.translate('xpack.securitySolution.riskScore.startUpdate', { - defaultMessage: 'Start update', -}); - -export const UPDATING_RISK_ENGINE = i18n.translate( - 'xpack.securitySolution.riskScore.updatingRiskEngine', - { - defaultMessage: 'Updating risk engine...', - } -); - -export const UPDATE_RISK_ENGINE_MODAL_TITLE = i18n.translate( - 'xpack.securitySolution.riskScore.updateRiskEngineModa.title', - { - defaultMessage: 'Do you want to update the entity risk engine?', - } -); - -export const UPDATE_RISK_ENGINE_MODAL_EXISTING_USER_HOST_1 = i18n.translate( - 'xpack.securitySolution.riskScore.updateRiskEngineModal.existingUserHost_1', - { - defaultMessage: 'Existing user and host risk score transforms will be deleted', - } -); - -export const UPDATE_RISK_ENGINE_MODAL_EXISTING_USER_HOST_2 = i18n.translate( - 'xpack.securitySolution.riskScore.updateRiskEngineModal.existingUserHost_2', - { - defaultMessage: ', as they are no longer required.', - } -); - -export const UPDATE_RISK_ENGINE_MODAL_EXISTING_DATA_1 = i18n.translate( - 'xpack.securitySolution.riskScore.updateRiskEngineModal.existingData_1', - { - defaultMessage: 'Legacy risk score data will not be deleted', - } -); - -export const UPDATE_RISK_ENGINE_MODAL_EXISTING_DATA_2 = i18n.translate( - 'xpack.securitySolution.riskScore.updateRiskEngineModal.existingData_2', - { - defaultMessage: - ', it will still exist in the index but will no longer be available in the user interface. You will need to remove legacy risk score data manually.', - } -); - -export const UPDATE_RISK_ENGINE_MODAL_BUTTON_NO = i18n.translate( - 'xpack.securitySolution.riskScore.updateRiskEngineModal.buttonNo', - { - defaultMessage: 'No, not yet', - } -); - -export const UPDATE_RISK_ENGINE_MODAL_BUTTON_YES = i18n.translate( - 'xpack.securitySolution.riskScore.updateRiskEngineModal.buttonYes', - { - defaultMessage: 'Yes, update now!', - } -); - -export const ERROR_PANEL_TITLE = i18n.translate( - 'xpack.securitySolution.riskScore.errorPanel.title', - { - defaultMessage: 'There was an error', - } -); - -export const ERROR_PANEL_MESSAGE = i18n.translate( - 'xpack.securitySolution.riskScore.errorPanel.message', - { - defaultMessage: 'The risk engine status could not be changed. Fix the following and try again:', - } -); - -export const ERROR_PANEL_ERRORS = i18n.translate( - 'xpack.securitySolution.riskScore.errorPanel.errors', - { - defaultMessage: 'Errors', - } -); - -export const UPDATE_PANEL_TITLE = i18n.translate( - 'xpack.securitySolution.riskScore.updatePanel.title', - { - defaultMessage: 'New entity risk scoring engine available', - } -); - -export const UPDATE_PANEL_MESSAGE = i18n.translate( - 'xpack.securitySolution.riskScore.updatePanel.message', - { - defaultMessage: - 'A new entity risk scoring engine is available. Update now to get the latest features.', - } -); - -export const UPDATE_PANEL_GO_TO_MANAGE = i18n.translate( - 'xpack.securitySolution.riskScore.updatePanel.goToManage', - { - defaultMessage: 'Manage', - } -); - -export const UPDATE_PANEL_GO_TO_DISMISS = i18n.translate( - 'xpack.securitySolution.riskScore.updatePanel.Dismiss', - { - defaultMessage: 'Dismiss', - } -); - -export const getMaxSpaceTitle = (maxSpaces: number) => - i18n.translate('xpack.securitySolution.riskScore.maxSpacePanel.title', { - defaultMessage: - 'You cannot enable entity risk scoring in more than {maxSpaces, plural, =1 {# Kibana space} other {# Kibana spaces}}.', - values: { maxSpaces }, - }); - -export const MAX_SPACE_PANEL_MESSAGE = i18n.translate( - 'xpack.securitySolution.riskScore.maxSpacePanel.message', - { - defaultMessage: - 'You can disable entity risk scoring in the space it is currently enabled before enabling it in this space', - } -); - -export const CHECK_PRIVILEGES = i18n.translate( - 'xpack.securitySolution.riskScore.errors.privileges.check', - { - defaultMessage: 'Check privileges', - } -); - -export const NEED_TO_HAVE = i18n.translate( - 'xpack.securitySolution.riskScore.errors.privileges.needToHave', - { - defaultMessage: 'You need to have:', - } -); - -export const RISK_SCORE_MODULE_TURNED_ON = i18n.translate( - 'xpack.securitySolution.riskScore.moduleTurnedOn', - { - defaultMessage: 'Entity risk score has been turned on', - } -); - -export const RISK_SCORE_MODULE_TURNED_OFF = i18n.translate( - 'xpack.securitySolution.riskScore.moduleTurnedOff', - { - defaultMessage: 'Entity risk score has been turned off', - } -); diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx b/x-pack/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx deleted file mode 100644 index 82440e478edcd..0000000000000 --- a/x-pack/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx +++ /dev/null @@ -1,305 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useCallback, useEffect, useMemo, useState } from 'react'; -import type { - ExceptionListItemSchema, - NamespaceType, -} from '@kbn/securitysolution-io-ts-list-types'; -import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; - -import { ViewerStatus } from '@kbn/securitysolution-exception-list-components'; -import { useGeneratedHtmlId } from '@elastic/eui'; -import { useGetSecuritySolutionLinkProps } from '../../../common/components/links'; -import { SecurityPageName } from '../../../../common/constants'; -import type { ExceptionListInfo } from '../use_all_exception_lists'; -import { useListExceptionItems } from '../use_list_exception_items'; -import * as i18n from '../../translations'; -import { checkIfListCannotBeEdited } from '../../utils/list.utils'; -import type { CheckExceptionTtlActionTypes } from '../../components/expired_exceptions_list_items_modal'; -import { CHECK_EXCEPTION_TTL_ACTION_TYPES } from '../../components/expired_exceptions_list_items_modal'; - -interface DuplicateListAction { - listId: string; - name: string; - namespaceType: NamespaceType; - includeExpiredExceptions: boolean; -} -interface ExportListAction { - id: string; - listId: string; - name: string; - namespaceType: NamespaceType; - includeExpiredExceptions: boolean; -} -interface ListAction { - id: string; - listId: string; - namespaceType: NamespaceType; -} -export const useExceptionsListCard = ({ - exceptionsList, - handleExport, - handleDelete, - handleDuplicate, - handleManageRules, -}: { - exceptionsList: ExceptionListInfo; - handleExport: ({ - id, - listId, - name, - namespaceType, - includeExpiredExceptions, - }: ExportListAction) => () => Promise<void>; - handleDelete: ({ id, listId, namespaceType }: ListAction) => () => Promise<void>; - handleDuplicate: ({ - listId, - name, - namespaceType, - includeExpiredExceptions, - }: DuplicateListAction) => () => Promise<void>; - handleManageRules: () => void; -}) => { - const [viewerStatus, setViewerStatus] = useState<ViewerStatus | string>(ViewerStatus.LOADING); - const [exceptionToEdit, setExceptionToEdit] = useState<ExceptionListItemSchema>(); - const [showAddExceptionFlyout, setShowAddExceptionFlyout] = useState(false); - const [showEditExceptionFlyout, setShowEditExceptionFlyout] = useState(false); - const [showIncludeExpiredExceptionsModal, setShowIncludeExpiredExceptionsModal] = - useState<CheckExceptionTtlActionTypes | null>(null); - - const { - name: listName, - list_id: listId, - rules: listRules, - type: listType, - created_by: createdBy, - created_at: createdAt, - description: listDescription, - } = exceptionsList; - - const onFinishFetchingExceptions = useCallback(() => { - setViewerStatus(''); - }, [setViewerStatus]); - - const onEditExceptionItem = (exception: ExceptionListItemSchema) => { - setExceptionToEdit(exception); - setShowEditExceptionFlyout(true); - }; - - const { - lastUpdated, - exceptionViewerStatus, - exceptions, - pagination, - ruleReferences, - fetchItems, - onDeleteException, - onPaginationChange, - } = useListExceptionItems({ - list: exceptionsList, - deleteToastTitle: i18n.EXCEPTION_ITEM_DELETE_TITLE, - deleteToastBody: (name) => i18n.EXCEPTION_ITEM_DELETE_TEXT(name), - errorToastBody: i18n.EXCEPTION_ERROR_DESCRIPTION, - errorToastTitle: i18n.EXCEPTION_ERROR_TITLE, - onEditListExceptionItem: onEditExceptionItem, - onFinishFetchingExceptions, - }); - - useEffect(() => { - fetchItems(null, ViewerStatus.LOADING); - }, [fetchItems]); - - const [toggleAccordion, setToggleAccordion] = useState(false); - const openAccordionId = useGeneratedHtmlId({ prefix: 'openAccordion' }); - - const listCannotBeEdited = checkIfListCannotBeEdited(exceptionsList); - - const emptyViewerTitle = useMemo(() => { - return viewerStatus === ViewerStatus.EMPTY ? i18n.EXCEPTION_LIST_EMPTY_VIEWER_TITLE : ''; - }, [viewerStatus]); - - const emptyViewerBody = useMemo(() => { - return viewerStatus === ViewerStatus.EMPTY - ? i18n.EXCEPTION_LIST_EMPTY_VIEWER_BODY(exceptionsList.name) - : ''; - }, [exceptionsList.name, viewerStatus]); - - const emptyViewerButtonText = useMemo(() => { - return exceptionsList.type === ExceptionListTypeEnum.ENDPOINT - ? i18n.EXCEPTION_LIST_EMPTY_VIEWER_BUTTON_ENDPOINT - : i18n.EXCEPTION_LIST_EMPTY_VIEWER_BUTTON; - }, [exceptionsList.type]); - - const menuActionItems = useMemo( - () => [ - { - key: 'Export', - icon: 'exportAction', - label: i18n.EXPORT_EXCEPTION_LIST, - onClick: (e: React.MouseEvent<Element, MouseEvent>) => { - if (listType === ExceptionListTypeEnum.ENDPOINT) { - handleExport({ - id: exceptionsList.id, - listId: exceptionsList.list_id, - name: exceptionsList.name, - namespaceType: exceptionsList.namespace_type, - includeExpiredExceptions: true, - })(); - } else { - setShowIncludeExpiredExceptionsModal(CHECK_EXCEPTION_TTL_ACTION_TYPES.EXPORT); - } - }, - }, - { - key: 'Duplicate', - icon: 'copy', - label: i18n.DUPLICATE_EXCEPTION_LIST, - disabled: listCannotBeEdited, - onClick: (_: React.MouseEvent<Element, MouseEvent>) => { - setShowIncludeExpiredExceptionsModal(CHECK_EXCEPTION_TTL_ACTION_TYPES.DUPLICATE); - }, - }, - { - key: 'Delete', - icon: 'trash', - disabled: listCannotBeEdited, - label: i18n.DELETE_EXCEPTION_LIST, - onClick: (e: React.MouseEvent<Element, MouseEvent>) => { - handleDelete({ - id: exceptionsList.id, - listId: exceptionsList.list_id, - namespaceType: exceptionsList.namespace_type, - })(); - }, - }, - { - key: 'LinkRules', - icon: 'gear', - disabled: listCannotBeEdited, - label: i18n.LINK_RULES_OVERFLOW_BUTTON_TITLE, - onClick: (e: React.MouseEvent<Element, MouseEvent>) => { - handleManageRules(); - }, - }, - ], - [ - listCannotBeEdited, - listType, - handleExport, - exceptionsList.id, - exceptionsList.list_id, - exceptionsList.name, - exceptionsList.namespace_type, - handleDelete, - handleManageRules, - ] - ); - - // Once details Page is added all of these methods will be used from it as well - // as their own states - const onAddExceptionClick = useCallback(() => { - setShowAddExceptionFlyout(true); - }, [setShowAddExceptionFlyout]); - - const handleCancelExceptionItemFlyout = () => { - setShowAddExceptionFlyout(false); - setShowEditExceptionFlyout(false); - }; - const handleConfirmExceptionFlyout = useCallback( - (didExceptionChange: boolean): void => { - setShowAddExceptionFlyout(false); - setShowEditExceptionFlyout(false); - if (!didExceptionChange) return; - fetchItems(); - }, - [fetchItems, setShowAddExceptionFlyout, setShowEditExceptionFlyout] - ); - - const onExportListClick = useCallback(() => { - setShowIncludeExpiredExceptionsModal(CHECK_EXCEPTION_TTL_ACTION_TYPES.EXPORT); - }, [setShowIncludeExpiredExceptionsModal]); - - const handleCancelExpiredExceptionsModal = () => { - setShowIncludeExpiredExceptionsModal(null); - }; - - const handleConfirmExpiredExceptionsModal = useCallback( - (includeExpiredExceptions: boolean): void => { - if (showIncludeExpiredExceptionsModal === CHECK_EXCEPTION_TTL_ACTION_TYPES.EXPORT) { - handleExport({ - id: exceptionsList.id, - listId: exceptionsList.list_id, - name: exceptionsList.name, - namespaceType: exceptionsList.namespace_type, - includeExpiredExceptions, - })(); - } - if (showIncludeExpiredExceptionsModal === CHECK_EXCEPTION_TTL_ACTION_TYPES.DUPLICATE) { - handleDuplicate({ - listId: exceptionsList.list_id, - name: exceptionsList.name, - namespaceType: exceptionsList.namespace_type, - includeExpiredExceptions, - })(); - } - }, - [ - showIncludeExpiredExceptionsModal, - handleExport, - exceptionsList.id, - exceptionsList.list_id, - exceptionsList.name, - exceptionsList.namespace_type, - handleDuplicate, - ] - ); - - // routes to x-pack/plugins/security_solution/public/exceptions/routes.tsx - // details component is here: x-pack/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx - const { onClick: goToExceptionDetail } = useGetSecuritySolutionLinkProps()({ - deepLinkId: SecurityPageName.exceptions, - path: `/details/${exceptionsList.list_id}`, - }); - return { - listId, - listName, - listDescription, - createdAt: new Date(createdAt).toDateString(), - createdBy, - listRulesCount: listRules.length.toString(), - exceptionItemsCount: pagination.totalItemCount.toString(), - listType, - menuActionItems, - showAddExceptionFlyout, - toggleAccordion, - openAccordionId, - viewerStatus, - exceptionToEdit, - showEditExceptionFlyout, - lastUpdated, - exceptions, - ruleReferences, - pagination, - exceptionViewerStatus, - onEditExceptionItem, - onDeleteException, - onPaginationChange, - setToggleAccordion, - onAddExceptionClick, - handleConfirmExceptionFlyout, - handleCancelExceptionItemFlyout, - goToExceptionDetail, - emptyViewerTitle, - emptyViewerBody, - emptyViewerButtonText, - showIncludeExpiredExceptionsModal, - onExportListClick, - handleCancelExpiredExceptionsModal, - handleConfirmExpiredExceptionsModal, - }; -}; diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/use_import_exception_list/index.tsx b/x-pack/plugins/security_solution/public/exceptions/hooks/use_import_exception_list/index.tsx deleted file mode 100644 index 536d558b371a2..0000000000000 --- a/x-pack/plugins/security_solution/public/exceptions/hooks/use_import_exception_list/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; - -import type { ImportExceptionsResponseSchema } from '@kbn/securitysolution-io-ts-list-types'; - -import type { HttpStart } from '@kbn/core/public'; -import { useAsync, withOptionalSignal } from '@kbn/securitysolution-hook-utils'; - -export const importExceptionList = async ({ - file, - http, - signal, - overwrite, - overwriteExceptions, - asNewList, -}: { - // TODO: Replace these with kbn packaged versions once we have those available to us - // These originally came from this location below before moving them to this hacked "any" types: - // import { HttpStart, NotificationsStart } from '../../../../../src/core/public'; - http: HttpStart; - signal: AbortSignal; - file: File; - overwrite: boolean; - overwriteExceptions: boolean; - asNewList: boolean; -}): Promise<ImportExceptionsResponseSchema> => { - const formData = new FormData(); - formData.append('file', file as Blob); - - const res = await http.post<ImportExceptionsResponseSchema>(`${EXCEPTION_LIST_URL}/_import`, { - version: '2023-10-31', - body: formData, - query: { overwrite, overwrite_exceptions: overwriteExceptions, as_new_list: asNewList }, - headers: { 'Content-Type': undefined }, - method: 'POST', - signal, - }); - return res; -}; - -const importListWithOptionalSignal = withOptionalSignal(importExceptionList); - -export const useImportExceptionList = () => useAsync(importListWithOptionalSignal); diff --git a/x-pack/plugins/security_solution/public/exceptions/jest.config.js b/x-pack/plugins/security_solution/public/exceptions/jest.config.js deleted file mode 100644 index 6c6bdbe0da125..0000000000000 --- a/x-pack/plugins/security_solution/public/exceptions/jest.config.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/exceptions'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/exceptions', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/exceptions/**/*.{ts,tsx}', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/*.test.{ts,tsx}', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/*.constants.{ts}', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/*mock*.{ts,tsx}', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/*.test.{ts,tsx}', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/*.d.ts', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/*.config.ts', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/index.{js,ts,tsx}', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/translations/*', - '!<rootDir>/x-pack/plugins/security_solution/public/exceptions/*.translations', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/explore/jest.config.js b/x-pack/plugins/security_solution/public/explore/jest.config.js deleted file mode 100644 index cf380849ea68c..0000000000000 --- a/x-pack/plugins/security_solution/public/explore/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/explore'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/explore', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/public/explore/**/*.{ts,tsx}'], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/flyout/README.md b/x-pack/plugins/security_solution/public/flyout/README.md deleted file mode 100644 index be70c3ca0ebec..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Security Solution expandable flyouts - -For more info on the expandable flyout, see the `@kbn/expandable-flyout` package. - -## Description - -The Security Solution plugin aims at having a single instance of the expandable flyout. That instance can display as many panels as we need. This folder hosts all the panels that are can be displayed in the Security Solution flyout. Panels can be differentiated as to be displayed in different sections of the expandable flyout (right, left or preview), but ultimately, nothing prevents us from displaying a panel in any section we want. - -> Remember to add any new panels to the `index.tsx` at the root of the [flyout folder](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout). These are passed to the `@kbn/expandable-flyout` package as `registeredPanels`. Failing to do so will result in the panel not being rendered. - -## Folder Structure - -The structure of the `flyout` folder is intended to work as follows: -- multiple top level folders referring to the _type_ of flyout (for example document details, user, host, rule, cases...) and would contain all the panels for that flyout _type_. Each of these top level folders can be organized the way you want, but we recommend following a similar structure to the one we have for the `document_details` flyout type, where the `right`, `left` and `preview` folders correspond to the panels displayed in the right, left and preview flyout sections respectively. The `shared` folder contains any shared components/hooks/services/helpers that are used within the other folders. -``` -document_details -└─── right -└─── left -└─── preview -└─── shared -``` -- one top level `shared` folder containing all the components/hooks/services/helpers that are used across multiple flyout types. Putting code in this folder should be very deliberate, and should follow some guidelines: - - code built in isolation (meaning that it should not be built with a specific flyout type or usage in mind) - - extensively tested - - components should have storybook stories - -The `flyout` folder structure should therefore look like this: -``` -flyout -│ index.tsx -│ jest.config.js -│ README.md -│ -└─── document_details -│ └─── right -│ └─── left -│ └─── preview -│ -└─── new_type -│ └─── right -│ └─── preview -│ -└─── other_new_type -│ └─── right -│ └─── left -│ -└─── ... -│ -└─── shared - └─── components -``` - -## Shared flyout components - -Here's a non-exhaustive list of the reusable component in the top-level `shared` folder. We recommend using these components to create a unified flyout experience. - - - [FlyoutNavigation](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx): navigation menu on the **right panel** only, with expand/collapse button and option to pass in a list of actions to be displayed on top. Works best when used in combination with the header component below. - - [FlyoutHeader](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header.tsx): wrapper of `EuiFlyoutHeader`, setting the recommended `16px` padding using a EuiPanel. - - [FlyoutTitle](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_title.tsx): title component with optional icon to indicate the type of document, works when the title is link or pure text - - [FlyoutHeaderTabs](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.tsx): Wrapper of `EuiTabs`, setting bottom margin to align with the flyout header divider - - [FlyoutBody](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_body.tsx): wrapper of `EuiFlyoutHeader`, setting the recommended `16px` padding using a EuiPanel. - - [FlyoutFooter](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_footer.tsx): wrapper of `EuiFlyoutFooter`, setting the recommended `16px` padding using a EuiPanel. - - [FlyoutError](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx): displays a `EuiEmptyPrompt` for error messages, correctly positioned and sized when used in at the panel level (not for individual components) - - [FlyoutLoading](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx): displays an `EuiLoadingSpinner` component correctly positioned and sized when used in at the panel level (not for individual components) diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts deleted file mode 100644 index 8669b504f6861..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PREFIX } from '../../../shared/test_ids'; - -/* Visualization tab */ - -export const ANALYZER_GRAPH_TEST_ID = `${PREFIX}AnalyzerGraph` as const; -export const SESSION_VIEW_TEST_ID = `${PREFIX}SessionView` as const; - -/* Insights tab */ - -/* Prevalence */ - -const PREVALENCE_DETAILS_TEST_ID = `${PREFIX}PrevalenceDetails` as const; -export const PREVALENCE_DETAILS_DATE_PICKER_TEST_ID = - `${PREVALENCE_DETAILS_TEST_ID}DatePicker` as const; -export const PREVALENCE_DETAILS_UPSELL_TEST_ID = `${PREVALENCE_DETAILS_TEST_ID}Upsell` as const; -export const PREVALENCE_DETAILS_TABLE_TEST_ID = `${PREVALENCE_DETAILS_TEST_ID}Table` as const; -export const PREVALENCE_DETAILS_TABLE_FIELD_CELL_TEST_ID = - `${PREVALENCE_DETAILS_TABLE_TEST_ID}FieldCell` as const; -export const PREVALENCE_DETAILS_TABLE_VALUE_CELL_TEST_ID = - `${PREVALENCE_DETAILS_TABLE_TEST_ID}ValueCell` as const; -export const PREVALENCE_DETAILS_TABLE_PREVIEW_LINK_CELL_TEST_ID = - `${PREVALENCE_DETAILS_TABLE_TEST_ID}PreviewLinkCell` as const; -export const PREVALENCE_DETAILS_TABLE_ALERT_COUNT_CELL_TEST_ID = - `${PREVALENCE_DETAILS_TABLE_TEST_ID}AlertCountCell` as const; -export const PREVALENCE_DETAILS_TABLE_DOC_COUNT_CELL_TEST_ID = - `${PREVALENCE_DETAILS_TABLE_TEST_ID}DocCountCell` as const; -export const PREVALENCE_DETAILS_TABLE_HOST_PREVALENCE_CELL_TEST_ID = - `${PREVALENCE_DETAILS_TABLE_TEST_ID}HostPrevalenceCell` as const; -export const PREVALENCE_DETAILS_TABLE_USER_PREVALENCE_CELL_TEST_ID = - `${PREVALENCE_DETAILS_TABLE_TEST_ID}UserPrevalenceCell` as const; -export const PREVALENCE_DETAILS_TABLE_UPSELL_CELL_TEST_ID = - `${PREVALENCE_DETAILS_TABLE_TEST_ID}UpsellCell` as const; - -/* Entities */ - -export const ENTITIES_DETAILS_TEST_ID = `${PREFIX}EntitiesDetails` as const; -export const USER_DETAILS_TEST_ID = `${PREFIX}UsersDetails` as const; -export const USER_DETAILS_LINK_TEST_ID = `${USER_DETAILS_TEST_ID}TitleLink` as const; -export const USER_DETAILS_ALERT_COUNT_TEST_ID = `${USER_DETAILS_TEST_ID}AlertCount` as const; -export const USER_DETAILS_MISCONFIGURATIONS_TEST_ID = - `${USER_DETAILS_TEST_ID}Misconfigurations` as const; -export const USER_DETAILS_RELATED_HOSTS_TABLE_TEST_ID = - `${USER_DETAILS_TEST_ID}RelatedHostsTable` as const; -export const USER_DETAILS_RELATED_HOSTS_LINK_TEST_ID = - `${USER_DETAILS_TEST_ID}RelatedHostsLink` as const; -export const USER_DETAILS_RELATED_HOSTS_IP_LINK_TEST_ID = - `${USER_DETAILS_TEST_ID}RelatedHostsIPLink` as const; -export const USER_DETAILS_INFO_TEST_ID = 'user-overview' as const; - -export const HOST_DETAILS_TEST_ID = `${PREFIX}HostsDetails` as const; -export const HOST_DETAILS_LINK_TEST_ID = `${HOST_DETAILS_TEST_ID}TitleLink` as const; -export const HOST_DETAILS_ALERT_COUNT_TEST_ID = `${HOST_DETAILS_TEST_ID}AlertCount` as const; -export const HOST_DETAILS_MISCONFIGURATIONS_TEST_ID = - `${HOST_DETAILS_TEST_ID}Misconfigurations` as const; -export const HOST_DETAILS_VULNERABILITIES_TEST_ID = - `${HOST_DETAILS_TEST_ID}Vulnerabilities` as const; -export const HOST_DETAILS_RELATED_USERS_TABLE_TEST_ID = - `${HOST_DETAILS_TEST_ID}RelatedUsersTable` as const; -export const HOST_DETAILS_RELATED_USERS_LINK_TEST_ID = - `${HOST_DETAILS_TEST_ID}RelatedUsersLink` as const; -export const HOST_DETAILS_RELATED_USERS_IP_LINK_TEST_ID = - `${HOST_DETAILS_TEST_ID}RelatedUsersIPLink` as const; -export const HOST_DETAILS_INFO_TEST_ID = 'host-overview' as const; - -/* Threat Intelligence */ - -const THREAT_INTELLIGENCE_DETAILS_TEST_ID = `${PREFIX}ThreatIntelligenceDetails` as const; -export const THREAT_INTELLIGENCE_DETAILS_ENRICHMENTS_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}ThreatMatchDetected` as const; -export const THREAT_INTELLIGENCE_DETAILS_LOADING_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}Loading` as const; -export const THREAT_INTELLIGENCE_ENRICHMENTS_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichedWithThreatIntel` as const; -export const THREAT_INTELLIGENCE_MATCHES_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}MatchesWithNoType` as const; -export const THREAT_INTELLIGENCE_NO_ENRICHMENTS_FOUND_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}NoEnrichmentFound` as const; -export const THREAT_INTELLIGENCE_ENRICHMENTS_TITLE_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentTitle` as const; -export const THREAT_INTELLIGENCE_LOADING_ENRICHMENTS_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}LoadingEnrichment` as const; -export const THREAT_INTELLIGENCE_ENRICHMENTS_BUTTON_CONTENT_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentButtonContent` as const; -export const THREAT_INTELLIGENCE_ENRICHMENTS_ACCORDION_TABLE_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentAccordionTable` as const; -export const THREAT_INTELLIGENCE_ENRICHMENTS_RANGE_PICKER_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentRangePicker` as const; -export const THREAT_INTELLIGENCE_ENRICHMENTS_REFRESH_BUTTON_TEST_ID = - `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentRefreshButton` as const; - -/* Correlations */ - -export const CORRELATIONS_DETAILS_TEST_ID = `${PREFIX}CorrelationsDetails` as const; - -export const CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID = - `${CORRELATIONS_DETAILS_TEST_ID}AlertsByAncestrySection` as const; -export const CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TABLE_TEST_ID = - `${CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID}Table` as const; -export const CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID = - `${CORRELATIONS_DETAILS_TEST_ID}AlertsBySourceSection` as const; -export const CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TABLE_TEST_ID = - `${CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID}Table` as const; -export const CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID = - `${CORRELATIONS_DETAILS_TEST_ID}AlertsBySessionSection` as const; -export const CORRELATIONS_DETAILS_BY_SESSION_SECTION_TABLE_TEST_ID = - `${CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID}Table` as const; -export const CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID = - `${CORRELATIONS_DETAILS_TEST_ID}CasesSection` as const; -export const CORRELATIONS_DETAILS_CASES_SECTION_TABLE_TEST_ID = - `${CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID}Table` as const; -export const CORRELATIONS_DETAILS_SUPPRESSED_ALERTS_SECTION_TEST_ID = - `${CORRELATIONS_DETAILS_TEST_ID}SuppressedAlertsSection` as const; -export const SUPPRESSED_ALERTS_SECTION_TECHNICAL_PREVIEW_TEST_ID = - `${CORRELATIONS_DETAILS_TEST_ID}SuppressedAlertsSectionTechnicalPreview` as const; - -/* Response */ - -const RESPONSE_TEST_ID = `${PREFIX}Response` as const; -export const RESPONSE_DETAILS_TEST_ID = `${RESPONSE_TEST_ID}Details` as const; -export const RESPONSE_NO_DATA_TEST_ID = `${RESPONSE_TEST_ID}NoData` as const; - -/* Investigation */ - -export const INVESTIGATION_GUIDE_TEST_ID = `${PREFIX}InvestigationGuide` as const; -export const INVESTIGATION_GUIDE_LOADING_TEST_ID = `${INVESTIGATION_GUIDE_TEST_ID}Loading` as const; - -/* Notes */ - -export const ATTACH_TO_TIMELINE_CALLOUT_TEST_ID = `${PREFIX}AttachToTimelineCallout` as const; -export const ATTACH_TO_TIMELINE_CHECKBOX_TEST_ID = `${PREFIX}AttachToTimelineCheckbox` as const; -export const SAVE_TIMELINE_BUTTON_TEST_ID = `${PREFIX}SaveTimelineButton` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts deleted file mode 100644 index eb64c91b2143d..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PREFIX } from '../../../shared/test_ids'; - -const VISUALIZE_TAB_TEST_ID = `${PREFIX}VisualizeTab` as const; -export const VISUALIZE_TAB_BUTTON_GROUP_TEST_ID = `${VISUALIZE_TAB_TEST_ID}ButtonGroup` as const; -export const VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID = - `${VISUALIZE_TAB_TEST_ID}SessionViewButton` as const; -export const VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID = - `${VISUALIZE_TAB_TEST_ID}GraphAnalyzerButton` as const; -const INSIGHTS_TAB_TEST_ID = `${PREFIX}InsightsTab` as const; -export const INSIGHTS_TAB_BUTTON_GROUP_TEST_ID = `${INSIGHTS_TAB_TEST_ID}ButtonGroup` as const; -export const INSIGHTS_TAB_ENTITIES_BUTTON_TEST_ID = - `${INSIGHTS_TAB_TEST_ID}EntitiesButton` as const; -export const INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON_TEST_ID = - `${INSIGHTS_TAB_TEST_ID}ThreatIntelligenceButton` as const; -export const INSIGHTS_TAB_PREVALENCE_BUTTON_TEST_ID = - `${INSIGHTS_TAB_TEST_ID}PrevalenceButton` as const; -export const INSIGHTS_TAB_CORRELATIONS_BUTTON_TEST_ID = - `${INSIGHTS_TAB_TEST_ID}CorrelationsButton` as const; -export const INVESTIGATION_TAB_CONTENT_TEST_ID = `${PREFIX}InvestigationsTabContent` as const; -export const RESPONSE_TAB_CONTENT_TEST_ID = `${PREFIX}ResponseTabContent` as const; -export const NOTES_TAB_CONTENT_TEST_ID = `${PREFIX}NotesTabContent` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx deleted file mode 100644 index 0dad444ee6ece..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { memo, useState, useCallback, useEffect } from 'react'; -import { EuiButtonGroup, EuiSpacer } from '@elastic/eui'; -import type { EuiButtonGroupOptionProps } from '@elastic/eui/src/components/button/button_group/button_group'; -import { useExpandableFlyoutApi, useExpandableFlyoutState } from '@kbn/expandable-flyout'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { useWhichFlyout } from '../../shared/hooks/use_which_flyout'; -import { DocumentDetailsAnalyzerPanelKey } from '../../shared/constants/panel_keys'; -import { - VISUALIZE_TAB_BUTTON_GROUP_TEST_ID, - VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID, - VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID, -} from './test_ids'; -import { - ANALYZE_GRAPH_ID, - AnalyzeGraph, - ANALYZER_PREVIEW_BANNER, -} from '../components/analyze_graph'; -import { SESSION_VIEW_ID, SessionView } from '../components/session_view'; -import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; -import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; - -const visualizeButtons: EuiButtonGroupOptionProps[] = [ - { - id: SESSION_VIEW_ID, - label: ( - <FormattedMessage - id="xpack.securitySolution.flyout.left.visualize.sessionViewButtonLabel" - defaultMessage="Session View" - /> - ), - 'data-test-subj': VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID, - }, - { - id: ANALYZE_GRAPH_ID, - label: ( - <FormattedMessage - id="xpack.securitySolution.flyout.left.visualize.analyzerGraphButtonLabel" - defaultMessage="Analyzer Graph" - /> - ), - 'data-test-subj': VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID, - }, -]; - -/** - * Visualize view displayed in the document details expandable flyout left section - */ -export const VisualizeTab = memo(() => { - const { scopeId } = useDocumentDetailsContext(); - const { openPreviewPanel } = useExpandableFlyoutApi(); - const panels = useExpandableFlyoutState(); - const [activeVisualizationId, setActiveVisualizationId] = useState( - panels.left?.path?.subTab ?? SESSION_VIEW_ID - ); - const key = useWhichFlyout() ?? 'memory'; - const { startTransaction } = useStartTransaction(); - const onChangeCompressed = useCallback( - (optionId: string) => { - setActiveVisualizationId(optionId); - if (optionId === ANALYZE_GRAPH_ID) { - startTransaction({ name: ALERTS_ACTIONS.OPEN_ANALYZER }); - openPreviewPanel({ - id: DocumentDetailsAnalyzerPanelKey, - params: { - resolverComponentInstanceID: `${key}-${scopeId}`, - banner: ANALYZER_PREVIEW_BANNER, - }, - }); - } - }, - [startTransaction, openPreviewPanel, key, scopeId] - ); - - useEffect(() => { - if (panels.left?.path?.subTab) { - setActiveVisualizationId(panels.left?.path?.subTab); - } - }, [panels.left?.path?.subTab]); - - return ( - <> - <EuiButtonGroup - color="primary" - name="coarsness" - legend={i18n.translate( - 'xpack.securitySolution.flyout.left.visualize.buttonGroupLegendLabel', - { - defaultMessage: 'Visualize options', - } - )} - options={visualizeButtons} - idSelected={activeVisualizationId} - onChange={(id) => onChangeCompressed(id)} - buttonSize="compressed" - isFullWidth - data-test-subj={VISUALIZE_TAB_BUTTON_GROUP_TEST_ID} - /> - <EuiSpacer size="m" /> - {activeVisualizationId === SESSION_VIEW_ID && <SessionView />} - {activeVisualizationId === ANALYZE_GRAPH_ID && <AnalyzeGraph />} - </> - ); -}); - -VisualizeTab.displayName = 'VisualizeTab'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/preview/footer.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/footer.test.tsx deleted file mode 100644 index 2eee16007f91c..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/preview/footer.test.tsx +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React from 'react'; -import { render } from '@testing-library/react'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { TestProviders } from '../../../common/mock'; -import { DocumentDetailsRightPanelKey } from '../shared/constants/panel_keys'; -import { mockFlyoutApi } from '../shared/mocks/mock_flyout_context'; -import { mockContextValue } from '../shared/mocks/mock_context'; -import { DocumentDetailsContext } from '../shared/context'; -import { PreviewPanelFooter } from './footer'; -import { PREVIEW_FOOTER_TEST_ID, PREVIEW_FOOTER_LINK_TEST_ID } from './test_ids'; -import { createTelemetryServiceMock } from '../../../common/lib/telemetry/telemetry_service.mock'; - -jest.mock('@kbn/expandable-flyout'); - -const mockedTelemetry = createTelemetryServiceMock(); -jest.mock('../../../common/lib/kibana', () => { - return { - useKibana: () => ({ - services: { - telemetry: mockedTelemetry, - }, - }), - }; -}); - -describe('<PreviewPanelFooter />', () => { - beforeAll(() => { - jest.mocked(useExpandableFlyoutApi).mockReturnValue(mockFlyoutApi); - }); - - it('should render footer for alert', () => { - const { getByTestId } = render( - <TestProviders> - <DocumentDetailsContext.Provider value={mockContextValue}> - <PreviewPanelFooter /> - </DocumentDetailsContext.Provider> - </TestProviders> - ); - expect(getByTestId(PREVIEW_FOOTER_TEST_ID)).toBeInTheDocument(); - expect(getByTestId(PREVIEW_FOOTER_TEST_ID)).toHaveTextContent('Show full alert details'); - }); - - it('should render footer for event', () => { - const { getByTestId } = render( - <TestProviders> - <DocumentDetailsContext.Provider - value={{ ...mockContextValue, getFieldsData: () => 'event' }} - > - <PreviewPanelFooter /> - </DocumentDetailsContext.Provider> - </TestProviders> - ); - expect(getByTestId(PREVIEW_FOOTER_TEST_ID)).toHaveTextContent('Show full event details'); - }); - - it('should open document details flyout when clicked', () => { - const { getByTestId } = render( - <TestProviders> - <DocumentDetailsContext.Provider value={mockContextValue}> - <PreviewPanelFooter /> - </DocumentDetailsContext.Provider> - </TestProviders> - ); - - getByTestId(PREVIEW_FOOTER_LINK_TEST_ID).click(); - expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ - right: { - id: DocumentDetailsRightPanelKey, - params: { - id: mockContextValue.eventId, - indexName: mockContextValue.indexName, - scopeId: mockContextValue.scopeId, - }, - }, - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/preview/footer.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/footer.tsx deleted file mode 100644 index b2df6c096e279..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/preview/footer.tsx +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiLink, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import React, { useCallback, useMemo } from 'react'; -import { i18n } from '@kbn/i18n'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { getField } from '../shared/utils'; -import { EventKind } from '../shared/constants/event_kinds'; -import { FlyoutFooter } from '../../shared/components/flyout_footer'; -import { DocumentDetailsRightPanelKey } from '../shared/constants/panel_keys'; -import { useDocumentDetailsContext } from '../shared/context'; -import { PREVIEW_FOOTER_TEST_ID, PREVIEW_FOOTER_LINK_TEST_ID } from './test_ids'; -import { useKibana } from '../../../common/lib/kibana'; -import { DocumentEventTypes } from '../../../common/lib/telemetry'; - -/** - * Footer at the bottom of preview panel with a link to open document details flyout - */ -export const PreviewPanelFooter = () => { - const { eventId, indexName, scopeId, getFieldsData } = useDocumentDetailsContext(); - const { openFlyout } = useExpandableFlyoutApi(); - const { telemetry } = useKibana().services; - - const isAlert = useMemo( - () => getField(getFieldsData('event.kind')) === EventKind.signal, - [getFieldsData] - ); - - const openDocumentFlyout = useCallback(() => { - openFlyout({ - right: { - id: DocumentDetailsRightPanelKey, - params: { - id: eventId, - indexName, - scopeId, - }, - }, - }); - telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutOpened, { - location: scopeId, - panel: 'right', - }); - }, [openFlyout, eventId, indexName, scopeId, telemetry]); - - return ( - <FlyoutFooter data-test-subj={PREVIEW_FOOTER_TEST_ID}> - <EuiFlexGroup justifyContent="center"> - <EuiFlexItem grow={false}> - <EuiLink - onClick={openDocumentFlyout} - target="_blank" - data-test-subj={PREVIEW_FOOTER_LINK_TEST_ID} - > - <> - {i18n.translate('xpack.securitySolution.flyout.preview.openFlyoutLabel', { - values: { isAlert }, - defaultMessage: 'Show full {isAlert, select, true{alert} other{event}} details', - })} - </> - </EuiLink> - </EuiFlexItem> - </EuiFlexGroup> - </FlyoutFooter> - ); -}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.test.tsx deleted file mode 100644 index 3e841da34a4fa..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.test.tsx +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { render, screen } from '@testing-library/react'; -import { TestProviders } from '../../../../common/mock'; -import React from 'react'; -import { DocumentDetailsContext } from '../../shared/context'; -import { mockContextValue } from '../../shared/mocks/mock_context'; -import { AnalyzerPreviewContainer } from './analyzer_preview_container'; -import { useIsInvestigateInResolverActionEnabled } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; -import { ANALYZER_PREVIEW_TEST_ID } from './test_ids'; -import { useAlertPrevalenceFromProcessTree } from '../../shared/hooks/use_alert_prevalence_from_process_tree'; -import * as mock from '../mocks/mock_analyzer_data'; -import { - EXPANDABLE_PANEL_CONTENT_TEST_ID, - EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, - EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, - EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, - EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../../shared/components/test_ids'; - -import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; - -jest.mock( - '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver' -); -jest.mock('../../shared/hooks/use_alert_prevalence_from_process_tree'); -jest.mock( - '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline' -); - -const mockNavigateToAnalyzer = jest.fn(); -jest.mock('../../shared/hooks/use_navigate_to_analyzer', () => { - return { useNavigateToAnalyzer: () => ({ navigateToAnalyzer: mockNavigateToAnalyzer }) }; -}); - -jest.mock('@kbn/kibana-react-plugin/public', () => { - const original = jest.requireActual('@kbn/kibana-react-plugin/public'); - return { - ...original, - useUiSetting$: () => mockUseUiSetting(), - }; -}); - -jest.mock('react-router-dom', () => { - const actual = jest.requireActual('react-router-dom'); - return { ...actual, useLocation: jest.fn().mockReturnValue({ pathname: '' }) }; -}); -jest.mock('react-redux', () => { - const original = jest.requireActual('react-redux'); - - return { - ...original, - useDispatch: () => jest.fn(), - }; -}); - -const mockUseUiSetting = jest.fn().mockReturnValue([false]); -jest.mock('@kbn/kibana-react-plugin/public', () => { - const original = jest.requireActual('@kbn/kibana-react-plugin/public'); - return { - ...original, - useUiSetting$: () => mockUseUiSetting(), - }; -}); - -const NO_ANALYZER_MESSAGE = - 'You can only visualize events triggered by hosts configured with the Elastic Defend integration or any sysmon data from winlogbeat. Refer to Visual event analyzer(external, opens in a new tab or window) for more information.'; - -const renderAnalyzerPreview = (context = mockContextValue) => - render( - <TestProviders> - <DocumentDetailsContext.Provider value={context}> - <AnalyzerPreviewContainer /> - </DocumentDetailsContext.Provider> - </TestProviders> - ); - -describe('AnalyzerPreviewContainer', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('should render component and link in header', () => { - (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); - (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ - loading: false, - error: false, - alertIds: ['alertid'], - statsNodes: mock.mockStatsNodes, - }); - (useInvestigateInTimeline as jest.Mock).mockReturnValue({ - investigateInTimelineAlertClick: jest.fn(), - }); - - const { getByTestId } = renderAnalyzerPreview(); - - expect(getByTestId(ANALYZER_PREVIEW_TEST_ID)).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - screen.queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - expect( - screen.getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - screen.queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - expect( - screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).not.toHaveTextContent(NO_ANALYZER_MESSAGE); - }); - - it('should render error message and text in header', () => { - (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(false); - (useInvestigateInTimeline as jest.Mock).mockReturnValue({ - investigateInTimelineAlertClick: jest.fn(), - }); - - const { getByTestId } = renderAnalyzerPreview(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).toHaveTextContent(NO_ANALYZER_MESSAGE); - }); - - describe('when visualizationInFlyoutEnabled is disabled', () => { - it('should navigate to analyzer in timeline when clicking on title', () => { - (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); - (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ - loading: false, - error: false, - alertIds: ['alertid'], - statsNodes: mock.mockStatsNodes, - }); - (useInvestigateInTimeline as jest.Mock).mockReturnValue({ - investigateInTimelineAlertClick: jest.fn(), - }); - - const { getByTestId } = renderAnalyzerPreview(); - - const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); - - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)).click(); - expect(investigateInTimelineAlertClick).toHaveBeenCalled(); - }); - - it('should not navigate to analyzer when in preview and clicking on title', () => { - (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); - (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ - loading: false, - error: false, - alertIds: ['alertid'], - statsNodes: mock.mockStatsNodes, - }); - (useInvestigateInTimeline as jest.Mock).mockReturnValue({ - investigateInTimelineAlertClick: jest.fn(), - }); - - const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreview: true }); - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); - expect(investigateInTimelineAlertClick).not.toHaveBeenCalled(); - }); - - it('should not navigate to analyzer when in preview mode', () => { - (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); - (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ - loading: false, - error: false, - alertIds: ['alertid'], - statsNodes: mock.mockStatsNodes, - }); - (useInvestigateInTimeline as jest.Mock).mockReturnValue({ - investigateInTimelineAlertClick: jest.fn(), - }); - - const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreviewMode: true }); - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); - expect(investigateInTimelineAlertClick).not.toHaveBeenCalled(); - }); - }); - - describe('when visualizationInFlyoutEnabled is enabled', () => { - it('should open left flyout visualization tab when clicking on title', () => { - mockUseUiSetting.mockReturnValue([true]); - - (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); - (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ - loading: false, - error: false, - alertIds: ['alertid'], - statsNodes: mock.mockStatsNodes, - }); - (useInvestigateInTimeline as jest.Mock).mockReturnValue({ - investigateInTimelineAlertClick: jest.fn(), - }); - - const { getByTestId } = renderAnalyzerPreview(); - - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)).click(); - expect(mockNavigateToAnalyzer).toHaveBeenCalled(); - }); - - it('should disable link when in rule preview', () => { - mockUseUiSetting.mockReturnValue([true]); - (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); - (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ - loading: false, - error: false, - alertIds: ['alertid'], - statsNodes: mock.mockStatsNodes, - }); - (useInvestigateInTimeline as jest.Mock).mockReturnValue({ - investigateInTimelineAlertClick: jest.fn(), - }); - - const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreview: true }); - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - }); - - it('should disable link when in preview mode', () => { - mockUseUiSetting.mockReturnValue([true]); - (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); - (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ - loading: false, - error: false, - alertIds: ['alertid'], - statsNodes: mock.mockStatsNodes, - }); - (useInvestigateInTimeline as jest.Mock).mockReturnValue({ - investigateInTimelineAlertClick: jest.fn(), - }); - - const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreviewMode: true }); - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx deleted file mode 100644 index 286394d16aadc..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback } from 'react'; -import { useDispatch } from 'react-redux'; -import { TimelineTabs } from '@kbn/securitysolution-data-table'; -import { EuiLink, EuiMark } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; -import { ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING } from '../../../../../common/constants'; -import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; -import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; -import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; -import { getScopedActions } from '../../../../helpers'; -import { setActiveTabTimeline } from '../../../../timelines/store/actions'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { useIsInvestigateInResolverActionEnabled } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; -import { AnalyzerPreview } from './analyzer_preview'; -import { ANALYZER_PREVIEW_TEST_ID } from './test_ids'; -import { useNavigateToAnalyzer } from '../../shared/hooks/use_navigate_to_analyzer'; -import { ExpandablePanel } from '../../../shared/components/expandable_panel'; - -const timelineId = 'timeline-1'; - -/** - * Analyzer preview under Overview, Visualizations. It shows a tree representation of analyzer. - */ -export const AnalyzerPreviewContainer: React.FC = () => { - const { dataAsNestedObject, isPreview, eventId, indexName, scopeId, isPreviewMode } = - useDocumentDetailsContext(); - - const [visualizationInFlyoutEnabled] = useUiSetting$<boolean>( - ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING - ); - // decide whether to show the analyzer preview or not - const isEnabled = useIsInvestigateInResolverActionEnabled(dataAsNestedObject); - - const dispatch = useDispatch(); - const { startTransaction } = useStartTransaction(); - const { investigateInTimelineAlertClick } = useInvestigateInTimeline({ - ecsRowData: dataAsNestedObject, - }); - - // open timeline to the analyzer tab because the expandable flyout left panel Visualize => Analyzer tab is not ready - const goToAnalyzerTab = useCallback(async () => { - // open timeline - await investigateInTimelineAlertClick(); - - // open analyzer tab - startTransaction({ name: ALERTS_ACTIONS.OPEN_ANALYZER }); - const scopedActions = getScopedActions(timelineId); - if (scopedActions && dataAsNestedObject) { - dispatch( - scopedActions.updateGraphEventId({ id: timelineId, graphEventId: dataAsNestedObject._id }) - ); - } - dispatch(setActiveTabTimeline({ id: timelineId, activeTab: TimelineTabs.graph })); - }, [dataAsNestedObject, dispatch, investigateInTimelineAlertClick, startTransaction]); - - const { navigateToAnalyzer } = useNavigateToAnalyzer({ - eventId, - indexName, - isFlyoutOpen: true, - scopeId, - }); - - return ( - <ExpandablePanel - header={{ - title: ( - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.analyzerPreview.analyzerPreviewTitle" - defaultMessage="Analyzer preview" - /> - ), - iconType: visualizationInFlyoutEnabled ? 'arrowStart' : 'timeline', - ...(isEnabled && - !isPreview && - !isPreviewMode && { - link: { - callback: visualizationInFlyoutEnabled ? navigateToAnalyzer : goToAnalyzerTab, - tooltip: visualizationInFlyoutEnabled ? ( - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.analyzerPreview.analyzerPreviewOpenAnalyzerTooltip" - defaultMessage="Open analyzer graph" - /> - ) : ( - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.analyzerPreview.analyzerPreviewInvestigateTooltip" - defaultMessage="Investigate in timeline" - /> - ), - }, - }), - }} - data-test-subj={ANALYZER_PREVIEW_TEST_ID} - > - {isEnabled ? ( - <AnalyzerPreview /> - ) : ( - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.analyzerPreview.noDataDescription" - defaultMessage="You can only visualize events triggered by hosts configured with the Elastic Defend integration or any {sysmon} data from {winlogbeat}. Refer to {link} for more information." - values={{ - sysmon: <EuiMark>{'sysmon'}</EuiMark>, - winlogbeat: <EuiMark>{'winlogbeat'}</EuiMark>, - link: ( - <EuiLink - href="https://www.elastic.co/guide/en/security/current/visual-event-analyzer.html" - target="_blank" - > - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.analyzerPreview.noDataLinkText" - defaultMessage="Visual event analyzer" - /> - </EuiLink> - ), - }} - /> - )} - </ExpandablePanel> - ); -}; - -AnalyzerPreviewContainer.displayName = 'AnalyzerPreviewContainer'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.test.tsx deleted file mode 100644 index ae907af316dc9..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.test.tsx +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { render } from '@testing-library/react'; -import { TestProviders } from '../../../../common/mock'; -import React from 'react'; -import { DocumentDetailsContext } from '../../shared/context'; -import { mockContextValue } from '../../shared/mocks/mock_context'; -import { GraphPreviewContainer } from './graph_preview_container'; -import { GRAPH_PREVIEW_TEST_ID } from './test_ids'; -import { useGraphPreview } from '../hooks/use_graph_preview'; -import { useFetchGraphData } from '../hooks/use_fetch_graph_data'; -import { - EXPANDABLE_PANEL_CONTENT_TEST_ID, - EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, - EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, - EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, - EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../../shared/components/test_ids'; - -jest.mock('../hooks/use_graph_preview'); -jest.mock('../hooks/use_fetch_graph_data', () => ({ - useFetchGraphData: jest.fn(), -})); -const mockUseFetchGraphData = useFetchGraphData as jest.Mock; - -const mockGraph = () => <div data-test-subj={GRAPH_PREVIEW_TEST_ID} />; - -jest.mock('@kbn/cloud-security-posture-graph', () => { - return { Graph: mockGraph }; -}); - -const renderGraphPreview = (context = mockContextValue) => - render( - <TestProviders> - <DocumentDetailsContext.Provider value={context}> - <GraphPreviewContainer /> - </DocumentDetailsContext.Provider> - </TestProviders> - ); - -describe('<GraphPreviewContainer />', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('should render component and link in header', async () => { - mockUseFetchGraphData.mockReturnValue({ - isLoading: false, - isError: false, - data: { nodes: [], edges: [] }, - }); - - const timestamp = new Date().toISOString(); - - (useGraphPreview as jest.Mock).mockReturnValue({ - timestamp, - eventIds: [], - isAuditLog: true, - }); - - const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview(); - - // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component - expect(await findByTestId(GRAPH_PREVIEW_TEST_ID)).toBeInTheDocument(); - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - expect( - queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect(mockUseFetchGraphData).toHaveBeenCalled(); - expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ - req: { - query: { - eventIds: [], - start: `${timestamp}||-30m`, - end: `${timestamp}||+30m`, - }, - }, - options: { - enabled: true, - refetchOnWindowFocus: false, - }, - }); - }); - - it('should not render when graph data is not available', () => { - mockUseFetchGraphData.mockReturnValue({ - isLoading: false, - isError: false, - data: undefined, - }); - - (useGraphPreview as jest.Mock).mockReturnValue({ - isAuditLog: false, - }); - - const { queryByTestId } = renderGraphPreview(); - - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx deleted file mode 100644 index 0b881b8f8d439..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { GRAPH_PREVIEW_TEST_ID } from './test_ids'; -import { GraphPreview } from './graph_preview'; -import { useFetchGraphData } from '../hooks/use_fetch_graph_data'; -import { useGraphPreview } from '../hooks/use_graph_preview'; -import { ExpandablePanel } from '../../../shared/components/expandable_panel'; - -/** - * Graph preview under Overview, Visualizations. It shows a graph representation of entities. - */ -export const GraphPreviewContainer: React.FC = () => { - const { dataAsNestedObject, getFieldsData } = useDocumentDetailsContext(); - - const { - eventIds, - timestamp = new Date().toISOString(), - isAuditLog, - } = useGraphPreview({ - getFieldsData, - ecsData: dataAsNestedObject, - }); - - // TODO: default start and end might not capture the original event - const { isLoading, isError, data } = useFetchGraphData({ - req: { - query: { - eventIds, - start: `${timestamp}||-30m`, - end: `${timestamp}||+30m`, - }, - }, - options: { - enabled: isAuditLog, - refetchOnWindowFocus: false, - }, - }); - - return ( - isAuditLog && ( - <ExpandablePanel - header={{ - title: ( - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.graphPreview.graphPreviewTitle" - defaultMessage="Graph preview" - /> - ), - iconType: 'indexMapping', - }} - data-test-subj={GRAPH_PREVIEW_TEST_ID} - content={ - !isLoading && !isError - ? { - paddingSize: 'none', - } - : undefined - } - > - <GraphPreview isLoading={isLoading} isError={isError} data={data} /> - </ExpandablePanel> - ) - ); -}; - -GraphPreviewContainer.displayName = 'GraphPreviewContainer'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.test.tsx deleted file mode 100644 index 2a721e317781e..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.test.tsx +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; -import { InsightsSummaryRow } from './insights_summary_row'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInsightsTab } from '../../left'; - -jest.mock('@kbn/expandable-flyout'); -jest.mock('../../shared/context'); - -const mockOpenLeftPanel = jest.fn(); -const scopeId = 'scopeId'; -const eventId = 'eventId'; -const indexName = 'indexName'; - -const testId = 'test'; -const textTestId = `${testId}Text`; -const buttonTestId = `${testId}Button`; -const valueTestId = `${testId}Value`; -const loadingTestId = `${testId}Loading`; - -describe('<InsightsSummaryRow />', () => { - beforeEach(() => { - jest.clearAllMocks(); - - (useDocumentDetailsContext as jest.Mock).mockReturnValue({ - eventId, - indexName, - scopeId, - isPreviewMode: false, - }); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); - }); - - it('should render loading skeleton if loading is true', () => { - const { getByTestId } = render( - <InsightsSummaryRow - loading={true} - text={'text'} - value={<div>{'value for this'}</div>} - data-test-subj={testId} - /> - ); - - expect(getByTestId(loadingTestId)).toBeInTheDocument(); - }); - - it('should only render null when error is true', () => { - const { container } = render( - <InsightsSummaryRow error={true} text={'text'} value={<div>{'value for this'}</div>} /> - ); - - expect(container).toBeEmptyDOMElement(); - }); - - it('should render the value component', () => { - const { getByTestId, queryByTestId } = render( - <IntlProvider locale="en"> - <InsightsSummaryRow - text={'this is a test for red'} - value={<div>{'value for this'}</div>} - data-test-subj={testId} - /> - </IntlProvider> - ); - - expect(getByTestId(textTestId)).toHaveTextContent('this is a test for red'); - expect(getByTestId(valueTestId)).toHaveTextContent('value for this'); - expect(queryByTestId(buttonTestId)).not.toBeInTheDocument(); - }); - - it('should render the value as EuiBadge and EuiButtonEmpty', () => { - const { getByTestId, queryByTestId } = render( - <IntlProvider locale="en"> - <InsightsSummaryRow text={'this is a test for red'} value={2} data-test-subj={testId} /> - </IntlProvider> - ); - - expect(getByTestId(textTestId)).toHaveTextContent('this is a test for red'); - expect(getByTestId(buttonTestId)).toHaveTextContent('2'); - expect(queryByTestId(valueTestId)).not.toBeInTheDocument(); - }); - - it('should render big numbers formatted correctly', () => { - const { getByTestId } = render( - <IntlProvider locale="en"> - <InsightsSummaryRow text={'this is a test for red'} value={2000} data-test-subj={testId} /> - </IntlProvider> - ); - - expect(getByTestId(buttonTestId)).toHaveTextContent('2k'); - }); - - it('should open the expanded section to the correct tab when the number is clicked', () => { - const { getByTestId } = render( - <IntlProvider locale="en"> - <InsightsSummaryRow - text={'this is a test for red'} - value={2} - expandedSubTab={'subTab'} - data-test-subj={testId} - /> - </IntlProvider> - ); - getByTestId(buttonTestId).click(); - - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: 'subTab', - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }); - - it('should disabled the click when in preview mode', () => { - (useDocumentDetailsContext as jest.Mock).mockReturnValue({ - eventId, - indexName, - scopeId, - isPreviewMode: true, - }); - - const { getByTestId } = render( - <IntlProvider locale="en"> - <InsightsSummaryRow - text={'this is a test for red'} - value={2} - expandedSubTab={'subTab'} - data-test-subj={testId} - /> - </IntlProvider> - ); - const button = getByTestId(buttonTestId); - - expect(button).toHaveAttribute('disabled'); - - button.click(); - expect(mockOpenLeftPanel).not.toHaveBeenCalled(); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_cases.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_cases.test.tsx deleted file mode 100644 index e55d0e109d1d7..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_cases.test.tsx +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; -import { render } from '@testing-library/react'; -import { - CORRELATIONS_RELATED_CASES_TEST_ID, - SUMMARY_ROW_TEXT_TEST_ID, - SUMMARY_ROW_LOADING_TEST_ID, - SUMMARY_ROW_BUTTON_TEST_ID, -} from './test_ids'; -import { RelatedCases } from './related_cases'; -import { useFetchRelatedCases } from '../../shared/hooks/use_fetch_related_cases'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInsightsTab } from '../../left'; -import { CORRELATIONS_TAB_ID } from '../../left/components/correlations_details'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; - -jest.mock('@kbn/expandable-flyout'); -jest.mock('../../shared/context'); -jest.mock('../../shared/hooks/use_fetch_related_cases'); - -const mockOpenLeftPanel = jest.fn(); -const eventId = 'eventId'; -const indexName = 'indexName'; -const scopeId = 'scopeId'; - -const TEXT_TEST_ID = SUMMARY_ROW_TEXT_TEST_ID(CORRELATIONS_RELATED_CASES_TEST_ID); -const BUTTON_TEST_ID = SUMMARY_ROW_BUTTON_TEST_ID(CORRELATIONS_RELATED_CASES_TEST_ID); -const LOADING_TEST_ID = SUMMARY_ROW_LOADING_TEST_ID(CORRELATIONS_RELATED_CASES_TEST_ID); - -const renderRelatedCases = () => - render( - <IntlProvider locale="en"> - <RelatedCases eventId={eventId} /> - </IntlProvider> - ); - -describe('<RelatedCases />', () => { - beforeEach(() => { - jest.clearAllMocks(); - - (useDocumentDetailsContext as jest.Mock).mockReturnValue({ - eventId, - indexName, - scopeId, - isPreviewMode: false, - }); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); - }); - - it('should render single related case correctly', () => { - (useFetchRelatedCases as jest.Mock).mockReturnValue({ - loading: false, - error: false, - dataCount: 1, - }); - - const { getByTestId } = renderRelatedCases(); - expect(getByTestId(TEXT_TEST_ID)).toHaveTextContent('Related case'); - expect(getByTestId(BUTTON_TEST_ID)).toHaveTextContent('1'); - }); - - it('should render multiple related cases correctly', () => { - (useFetchRelatedCases as jest.Mock).mockReturnValue({ - loading: false, - error: false, - dataCount: 2, - }); - - const { getByTestId } = renderRelatedCases(); - expect(getByTestId(TEXT_TEST_ID)).toHaveTextContent('Related cases'); - expect(getByTestId(BUTTON_TEST_ID)).toHaveTextContent('2'); - }); - - it('should render loading skeleton', () => { - (useFetchRelatedCases as jest.Mock).mockReturnValue({ - loading: true, - }); - - const { getByTestId } = renderRelatedCases(); - expect(getByTestId(LOADING_TEST_ID)).toBeInTheDocument(); - }); - - it('should render null if error', () => { - (useFetchRelatedCases as jest.Mock).mockReturnValue({ - loading: false, - error: true, - }); - - const { container } = renderRelatedCases(); - expect(container).toBeEmptyDOMElement(); - }); - - it('should open the expanded section to the correct tab when the number is clicked', () => { - (useFetchRelatedCases as jest.Mock).mockReturnValue({ - loading: false, - error: false, - dataCount: 1, - }); - - const { getByTestId } = renderRelatedCases(); - getByTestId(BUTTON_TEST_ID).click(); - - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: CORRELATIONS_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.tsx deleted file mode 100644 index 291ce9687ae27..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.tsx +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React, { useCallback } from 'react'; -import { EuiButton } from '@elastic/eui'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelResponseTab } from '../../left'; -import { RESPONSE_BUTTON_TEST_ID } from './test_ids'; - -/** - * Response button that opens Response section in the left panel - */ -export const ResponseButton: React.FC = () => { - const { openLeftPanel } = useExpandableFlyoutApi(); - const { eventId, indexName, scopeId } = useDocumentDetailsContext(); - - const goToResponseTab = useCallback(() => { - openLeftPanel({ - id: DocumentDetailsLeftPanelKey, - path: { tab: LeftPanelResponseTab }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }, [eventId, indexName, openLeftPanel, scopeId]); - - return ( - <> - <EuiButton - onClick={goToResponseTab} - iconType="documentation" - data-test-subj={RESPONSE_BUTTON_TEST_ID} - size="s" - > - <FormattedMessage - id="xpack.securitySolution.flyout.right.response.responseButtonLabel" - defaultMessage="Response" - /> - </EuiButton> - </> - ); -}; - -ResponseButton.displayName = 'ResponseButton'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.test.tsx deleted file mode 100644 index 9ccb512030b43..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.test.tsx +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { render, screen } from '@testing-library/react'; -import { TestProviders } from '../../../../common/mock'; -import React from 'react'; -import { DocumentDetailsContext } from '../../shared/context'; -import { SessionPreviewContainer } from './session_preview_container'; -import { useSessionPreview } from '../hooks/use_session_preview'; -import { useLicense } from '../../../../common/hooks/use_license'; -import { SESSION_PREVIEW_TEST_ID } from './test_ids'; -import { - EXPANDABLE_PANEL_CONTENT_TEST_ID, - EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, - EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, - EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, - EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../../shared/components/test_ids'; -import { mockContextValue } from '../../shared/mocks/mock_context'; - -jest.mock('../hooks/use_session_preview'); -jest.mock('../../../../common/hooks/use_license'); - -const mockNavigateToSessionView = jest.fn(); -jest.mock('../../shared/hooks/use_navigate_to_session_view', () => { - return { useNavigateToSessionView: () => ({ navigateToSessionView: mockNavigateToSessionView }) }; -}); - -const mockUseUiSetting = jest.fn().mockReturnValue([false]); -jest.mock('@kbn/kibana-react-plugin/public', () => { - const original = jest.requireActual('@kbn/kibana-react-plugin/public'); - return { - ...original, - useUiSetting$: () => mockUseUiSetting(), - }; -}); - -const NO_DATA_MESSAGE = - 'You can only view Linux session details if you’ve enabled the Include session data setting in your Elastic Defend integration policy. Refer to Enable Session View data(external, opens in a new tab or window) for more information.'; - -const UPSELL_TEXT = 'This feature requires an Enterprise subscription'; - -const sessionViewConfig = { - index: {}, - sessionEntityId: 'sessionEntityId', - sessionStartTime: 'sessionStartTime', -}; - -const renderSessionPreview = (context = mockContextValue) => - render( - <TestProviders> - <DocumentDetailsContext.Provider value={context}> - <SessionPreviewContainer /> - </DocumentDetailsContext.Provider> - </TestProviders> - ); - -describe('SessionPreviewContainer', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('should render component and link in header', () => { - (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); - (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); - - const { getByTestId } = renderSessionPreview(); - - expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - - expect( - screen.queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - expect( - screen.getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - screen.queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - expect( - screen.queryByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toHaveTextContent(NO_DATA_MESSAGE); - expect( - screen.queryByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toHaveTextContent(UPSELL_TEXT); - }); - - it('should render error message and text in header if no sessionConfig', () => { - (useSessionPreview as jest.Mock).mockReturnValue(null); - (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); - - const { getByTestId, queryByTestId } = renderSessionPreview(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toHaveTextContent(NO_DATA_MESSAGE); - - expect( - screen.queryByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toHaveTextContent(UPSELL_TEXT); - expect(queryByTestId(SESSION_PREVIEW_TEST_ID)).not.toBeInTheDocument(); - }); - - it('should render upsell message in header if no correct license', () => { - (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); - (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => false }); - - const { getByTestId, queryByTestId } = renderSessionPreview(); - - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toHaveTextContent(UPSELL_TEXT); - - expect( - screen.queryByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toHaveTextContent(NO_DATA_MESSAGE); - expect(queryByTestId(SESSION_PREVIEW_TEST_ID)).not.toBeInTheDocument(); - }); - - it('should not render link to session viewer if flyout is open in preview', () => { - (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); - (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); - - const { getByTestId, queryByTestId } = renderSessionPreview({ - ...mockContextValue, - isPreview: true, - }); - - expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); - expect( - queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - }); - - it('should not render link to session viewer if flyout is open in preview mode', () => { - (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); - (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); - - const { getByTestId, queryByTestId } = renderSessionPreview({ - ...mockContextValue, - isPreviewMode: true, - }); - - expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - }); - - describe('when visualization in flyout flag is enabled', () => { - it('should open left panel vizualization tab when visualization in flyout flag is on', () => { - mockUseUiSetting.mockReturnValue([true]); - (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); - (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); - - const { getByTestId } = renderSessionPreview(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)).click(); - - expect(mockNavigateToSessionView).toHaveBeenCalled(); - }); - - it('should not render link to session viewer if flyout is open in rule preview', () => { - (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); - (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); - - const { getByTestId, queryByTestId } = renderSessionPreview({ - ...mockContextValue, - isPreview: true, - }); - - expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - }); - - it('should not render link to session viewer if flyout is open in preview mode', () => { - (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); - (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); - - const { getByTestId, queryByTestId } = renderSessionPreview({ - ...mockContextValue, - isPreview: true, - }); - - expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); - expect( - getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).toBeInTheDocument(); - expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) - ).not.toBeInTheDocument(); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx deleted file mode 100644 index 4098b35a0abfc..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { type FC, useCallback } from 'react'; -import { TimelineTabs } from '@kbn/securitysolution-data-table'; -import { useDispatch } from 'react-redux'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; -import { ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING } from '../../../../../common/constants'; -import { useLicense } from '../../../../common/hooks/use_license'; -import { SessionPreview } from './session_preview'; -import { useSessionPreview } from '../hooks/use_session_preview'; -import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; -import { ExpandablePanel } from '../../../shared/components/expandable_panel'; -import { SESSION_PREVIEW_TEST_ID } from './test_ids'; -import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; -import { setActiveTabTimeline } from '../../../../timelines/store/actions'; -import { getScopedActions } from '../../../../helpers'; -import { useNavigateToSessionView } from '../../shared/hooks/use_navigate_to_session_view'; -import { SessionViewNoDataMessage } from '../../shared/components/session_view_no_data_message'; - -const timelineId = 'timeline-1'; - -/** - * Checks if the SessionView component is available, if so render it or else render an error message - */ -export const SessionPreviewContainer: FC = () => { - const { - eventId, - indexName, - scopeId, - dataAsNestedObject, - getFieldsData, - isPreview, - isPreviewMode, - dataFormattedForFieldBrowser, - } = useDocumentDetailsContext(); - - const [visualizationInFlyoutEnabled] = useUiSetting$<boolean>( - ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING - ); - - // decide whether to show the session view or not - const sessionViewConfig = useSessionPreview({ getFieldsData, dataFormattedForFieldBrowser }); - const isEnterprisePlus = useLicense().isEnterprise(); - const isEnabled = sessionViewConfig && isEnterprisePlus; - - const dispatch = useDispatch(); - const { startTransaction } = useStartTransaction(); - const scopedActions = getScopedActions(timelineId); - const { investigateInTimelineAlertClick } = useInvestigateInTimeline({ - ecsRowData: dataAsNestedObject, - }); - - const goToSessionViewTab = useCallback(async () => { - // open timeline - await investigateInTimelineAlertClick(); - - // open session view tab - startTransaction({ name: ALERTS_ACTIONS.OPEN_SESSION_VIEW }); - if (sessionViewConfig !== null) { - dispatch(setActiveTabTimeline({ id: timelineId, activeTab: TimelineTabs.session })); - if (scopedActions) { - dispatch(scopedActions.updateSessionViewConfig({ id: timelineId, sessionViewConfig })); - } - } - }, [ - dispatch, - investigateInTimelineAlertClick, - scopedActions, - sessionViewConfig, - startTransaction, - ]); - - const { navigateToSessionView } = useNavigateToSessionView({ - eventId, - indexName, - isFlyoutOpen: true, - scopeId, - }); - - return ( - <ExpandablePanel - header={{ - title: ( - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.sessionPreview.sessionPreviewTitle" - defaultMessage="Session viewer preview" - /> - ), - iconType: visualizationInFlyoutEnabled ? 'arrowStart' : 'timeline', - ...(isEnabled && - !isPreview && - !isPreviewMode && { - link: { - callback: visualizationInFlyoutEnabled ? navigateToSessionView : goToSessionViewTab, - tooltip: ( - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.sessionPreview.sessionPreviewTooltip" - defaultMessage="Investigate in timeline" - /> - ), - }, - }), - }} - data-test-subj={SESSION_PREVIEW_TEST_ID} - > - {isEnabled ? ( - <SessionPreview /> - ) : ( - <SessionViewNoDataMessage - isEnterprisePlus={isEnterprisePlus} - hasSessionViewConfig={sessionViewConfig !== null} - /> - )} - </ExpandablePanel> - ); -}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.test.tsx deleted file mode 100644 index 331283e194ed0..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.test.tsx +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; -import { render } from '@testing-library/react'; -import { - SUMMARY_ROW_TEXT_TEST_ID, - CORRELATIONS_SUPPRESSED_ALERTS_TEST_ID, - CORRELATIONS_SUPPRESSED_ALERTS_TECHNICAL_PREVIEW_TEST_ID, - SUMMARY_ROW_BUTTON_TEST_ID, -} from './test_ids'; -import { SuppressedAlerts } from './suppressed_alerts'; -import { isSuppressionRuleInGA } from '../../../../../common/detection_engine/utils'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInsightsTab } from '../../left'; -import { CORRELATIONS_TAB_ID } from '../../left/components/correlations_details'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; - -jest.mock('@kbn/expandable-flyout'); -jest.mock('../../shared/context'); -jest.mock('../../../../../common/detection_engine/utils', () => ({ - isSuppressionRuleInGA: jest.fn().mockReturnValue(false), -})); - -const TEXT_TEST_ID = SUMMARY_ROW_TEXT_TEST_ID(CORRELATIONS_SUPPRESSED_ALERTS_TEST_ID); -const BUTTON_TEST_ID = SUMMARY_ROW_BUTTON_TEST_ID(CORRELATIONS_SUPPRESSED_ALERTS_TEST_ID); - -const renderSuppressedAlerts = (alertSuppressionCount: number) => - render( - <IntlProvider locale="en"> - <SuppressedAlerts alertSuppressionCount={alertSuppressionCount} ruleType="query" /> - </IntlProvider> - ); - -const mockOpenLeftPanel = jest.fn(); -const scopeId = 'scopeId'; -const eventId = 'eventId'; -const indexName = 'indexName'; -const isSuppressionRuleInGAMock = isSuppressionRuleInGA as jest.Mock; - -describe('<SuppressedAlerts />', () => { - beforeEach(() => { - jest.clearAllMocks(); - - (useDocumentDetailsContext as jest.Mock).mockReturnValue({ - eventId, - indexName, - scopeId, - isPreviewMode: false, - }); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); - }); - - it('should render single suppressed alert correctly', () => { - const { getByTestId } = renderSuppressedAlerts(1); - - expect(getByTestId(TEXT_TEST_ID)).toHaveTextContent('Suppressed alert'); - expect(getByTestId(BUTTON_TEST_ID)).toHaveTextContent('1'); - expect( - getByTestId(CORRELATIONS_SUPPRESSED_ALERTS_TECHNICAL_PREVIEW_TEST_ID) - ).toBeInTheDocument(); - }); - - it('should render multiple suppressed alerts row correctly', () => { - const { getByTestId } = renderSuppressedAlerts(2); - - expect(getByTestId(TEXT_TEST_ID)).toHaveTextContent('Suppressed alerts'); - expect(getByTestId(BUTTON_TEST_ID)).toHaveTextContent('2'); - }); - - it('should not render Technical Preview badge if rule type is in GA', () => { - isSuppressionRuleInGAMock.mockReturnValueOnce(true); - const { queryByTestId } = renderSuppressedAlerts(2); - - expect( - queryByTestId(CORRELATIONS_SUPPRESSED_ALERTS_TECHNICAL_PREVIEW_TEST_ID) - ).not.toBeInTheDocument(); - }); - - it('should open the expanded section to the correct tab when the number is clicked', () => { - const { getByTestId } = renderSuppressedAlerts(1); - getByTestId(BUTTON_TEST_ID).click(); - - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: CORRELATIONS_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx deleted file mode 100644 index c328036eece43..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { memo } from 'react'; -import { EuiSpacer } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { useExpandSection } from '../hooks/use_expand_section'; -import { AnalyzerPreviewContainer } from './analyzer_preview_container'; -import { SessionPreviewContainer } from './session_preview_container'; -import { ExpandableSection } from './expandable_section'; -import { VISUALIZATIONS_TEST_ID } from './test_ids'; -import { GraphPreviewContainer } from './graph_preview_container'; -import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { useGraphPreview } from '../hooks/use_graph_preview'; - -const KEY = 'visualizations'; - -/** - * Visualizations section in overview. It contains analyzer preview and session view preview. - */ -export const VisualizationsSection = memo(() => { - const expanded = useExpandSection({ title: KEY, defaultValue: false }); - const graphVisualizationInFlyoutEnabled = useIsExperimentalFeatureEnabled( - 'graphVisualizationInFlyoutEnabled' - ); - - const { dataAsNestedObject, getFieldsData } = useDocumentDetailsContext(); - - // Decide whether to show the graph preview or not - const { isAuditLog: isGraphPreviewEnabled } = useGraphPreview({ - getFieldsData, - ecsData: dataAsNestedObject, - }); - - return ( - <ExpandableSection - expanded={expanded} - title={ - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.sectionTitle" - defaultMessage="Visualizations" - /> - } - localStorageKey={KEY} - data-test-subj={VISUALIZATIONS_TEST_ID} - > - <SessionPreviewContainer /> - <EuiSpacer /> - <AnalyzerPreviewContainer /> - {graphVisualizationInFlyoutEnabled && isGraphPreviewEnabled && ( - <> - <EuiSpacer /> - <GraphPreviewContainer /> - </> - )} - </ExpandableSection> - ); -}); - -VisualizationsSection.displayName = 'VisualizationsSection'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/footer.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/footer.test.tsx deleted file mode 100644 index 9ece9b0e52495..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/footer.test.tsx +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React from 'react'; -import { render } from '@testing-library/react'; -import { PanelFooter } from './footer'; -import { TestProviders } from '../../../common/mock'; -import { mockContextValue } from '../shared/mocks/mock_context'; -import { DocumentDetailsContext } from '../shared/context'; -import { FLYOUT_FOOTER_TEST_ID } from './test_ids'; -import { useKibana } from '../../../common/lib/kibana'; -import { useAlertExceptionActions } from '../../../detections/components/alerts_table/timeline_actions/use_add_exception_actions'; -import { useInvestigateInTimeline } from '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; -import { useAddToCaseActions } from '../../../detections/components/alerts_table/timeline_actions/use_add_to_case_actions'; - -jest.mock('../../../common/lib/kibana'); -jest.mock('../../../detections/components/alerts_table/timeline_actions/use_add_exception_actions'); -jest.mock( - '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline' -); -jest.mock('../../../detections/components/alerts_table/timeline_actions/use_add_to_case_actions'); - -describe('PanelFooter', () => { - it('should not render the take action dropdown if preview mode', () => { - const { queryByTestId } = render( - <TestProviders> - <DocumentDetailsContext.Provider value={mockContextValue}> - <PanelFooter isPreview={true} /> - </DocumentDetailsContext.Provider> - </TestProviders> - ); - - expect(queryByTestId(FLYOUT_FOOTER_TEST_ID)).not.toBeInTheDocument(); - }); - - it('should render the take action dropdown', () => { - (useKibana as jest.Mock).mockReturnValue({ - services: { - osquery: { - isOsqueryAvailable: jest.fn(), - }, - }, - }); - (useAlertExceptionActions as jest.Mock).mockReturnValue({ exceptionActionItems: [] }); - (useInvestigateInTimeline as jest.Mock).mockReturnValue({ - investigateInTimelineActionItems: [], - }); - (useAddToCaseActions as jest.Mock).mockReturnValue({ addToCaseActionItems: [] }); - - const wrapper = render( - <TestProviders> - <DocumentDetailsContext.Provider value={mockContextValue}> - <PanelFooter isPreview={false} /> - </DocumentDetailsContext.Provider> - </TestProviders> - ); - expect(wrapper.getByTestId(FLYOUT_FOOTER_TEST_ID)).toBeInTheDocument(); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/footer.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/footer.tsx deleted file mode 100644 index e5a5fb12915a6..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/footer.tsx +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { FC } from 'react'; -import React, { useCallback, useMemo, useState } from 'react'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { EuiFlexGroup, EuiFlexItem, useEuiTheme, EuiFlyoutFooter, EuiPanel } from '@elastic/eui'; -import { find } from 'lodash/fp'; -import { FLYOUT_FOOTER_TEST_ID } from './test_ids'; -import type { Status } from '../../../../common/api/detection_engine'; -import { getAlertDetailsFieldValue } from '../../../common/lib/endpoint/utils/get_event_details_field_values'; -import { TakeActionDropdown } from './components/take_action_dropdown'; -import { AddExceptionFlyoutWrapper } from '../../../detections/components/alerts_table/timeline_actions/alert_context_menu'; -import { EventFiltersFlyout } from '../../../management/pages/event_filters/view/components/event_filters_flyout'; -import { OsqueryFlyout } from '../../../detections/components/osquery/osquery_flyout'; -import { useDocumentDetailsContext } from '../shared/context'; -import { useHostIsolation } from '../shared/hooks/use_host_isolation'; -import { DocumentDetailsIsolateHostPanelKey } from '../shared/constants/panel_keys'; -import { useRefetchByScope } from './hooks/use_refetch_by_scope'; -import { useExceptionFlyout } from '../../../detections/components/alerts_table/timeline_actions/use_add_exception_flyout'; -import { isActiveTimeline } from '../../../helpers'; -import { useEventFilterModal } from '../../../detections/components/alerts_table/timeline_actions/use_event_filter_modal'; - -interface AlertSummaryData { - /** - * Status of the alert (open, closed...) - */ - alertStatus: Status; - /** - * Id of the document - */ - eventId: string; - /** - * Id of the rule - */ - ruleId: string; - /** - * Property ruleId on the rule - */ - ruleRuleId: string; - /** - * Name of the rule - */ - ruleName: string; -} - -interface PanelFooterProps { - /** - * Boolean that indicates whether flyout is in preview and action should be hidden - */ - isPreview: boolean; -} - -/** - * Bottom section of the flyout that contains the take action button - */ -export const PanelFooter: FC<PanelFooterProps> = ({ isPreview }) => { - const { euiTheme } = useEuiTheme(); - // we need this flyout to be above the timeline flyout (which has a z-index of 1002) - const flyoutZIndex = useMemo( - () => ({ style: `z-index: ${(euiTheme.levels.flyout as number) + 3}` }), - [euiTheme] - ); - - const { closeFlyout, openRightPanel } = useExpandableFlyoutApi(); - const { - eventId, - indexName, - dataFormattedForFieldBrowser, - dataAsNestedObject, - refetchFlyoutData, - scopeId, - } = useDocumentDetailsContext(); - - // host isolation interaction - const { isHostIsolationPanelOpen, showHostIsolationPanel } = useHostIsolation(); - const showHostIsolationPanelCallback = useCallback( - (action: 'isolateHost' | 'unisolateHost' | undefined) => { - showHostIsolationPanel(action); - openRightPanel({ - id: DocumentDetailsIsolateHostPanelKey, - params: { - id: eventId, - indexName, - scopeId, - isolateAction: action, - }, - }); - }, - [eventId, indexName, openRightPanel, scopeId, showHostIsolationPanel] - ); - - const { refetch: refetchAll } = useRefetchByScope({ scopeId }); - - // exception interaction - const ruleIndexRaw = useMemo( - () => - find({ category: 'signal', field: 'signal.rule.index' }, dataFormattedForFieldBrowser) - ?.values ?? - find( - { category: 'kibana', field: 'kibana.alert.rule.parameters.index' }, - dataFormattedForFieldBrowser - )?.values, - [dataFormattedForFieldBrowser] - ); - const ruleIndex = useMemo( - (): string[] | undefined => (Array.isArray(ruleIndexRaw) ? ruleIndexRaw : undefined), - [ruleIndexRaw] - ); - const ruleDataViewIdRaw = useMemo( - () => - find({ category: 'signal', field: 'signal.rule.data_view_id' }, dataFormattedForFieldBrowser) - ?.values ?? - find( - { category: 'kibana', field: 'kibana.alert.rule.parameters.data_view_id' }, - dataFormattedForFieldBrowser - )?.values, - [dataFormattedForFieldBrowser] - ); - const ruleDataViewId = useMemo( - (): string | undefined => (Array.isArray(ruleDataViewIdRaw) ? ruleDataViewIdRaw[0] : undefined), - [ruleDataViewIdRaw] - ); - const alertSummaryData = useMemo( - () => - [ - { category: 'signal', field: 'signal.rule.id', name: 'ruleId' }, - { category: 'signal', field: 'signal.rule.rule_id', name: 'ruleRuleId' }, - { category: 'signal', field: 'signal.rule.name', name: 'ruleName' }, - { category: 'signal', field: 'kibana.alert.workflow_status', name: 'alertStatus' }, - { category: '_id', field: '_id', name: 'eventId' }, - ].reduce<AlertSummaryData>( - (acc, curr) => ({ - ...acc, - [curr.name]: getAlertDetailsFieldValue( - { category: curr.category, field: curr.field }, - dataFormattedForFieldBrowser - ), - }), - {} as AlertSummaryData - ), - [dataFormattedForFieldBrowser] - ); - const { - exceptionFlyoutType, - openAddExceptionFlyout, - onAddExceptionTypeClick, - onAddExceptionCancel, - onAddExceptionConfirm, - } = useExceptionFlyout({ - refetch: refetchAll, - isActiveTimelines: isActiveTimeline(scopeId), - }); - - // event filter interaction - const { closeAddEventFilterModal, isAddEventFilterModalOpen, onAddEventFilterClick } = - useEventFilterModal(); - - // osquery interaction - const [isOsqueryFlyoutOpenWithAgentId, setOsqueryFlyoutOpenWithAgentId] = useState<null | string>( - null - ); - const closeOsqueryFlyout = useCallback(() => { - setOsqueryFlyoutOpenWithAgentId(null); - }, [setOsqueryFlyoutOpenWithAgentId]); - const alertId = useMemo( - () => (dataAsNestedObject?.kibana?.alert ? dataAsNestedObject?._id : null), - [dataAsNestedObject?._id, dataAsNestedObject?.kibana?.alert] - ); - - if (isPreview) return null; - - return ( - <> - <EuiFlyoutFooter data-test-subj={FLYOUT_FOOTER_TEST_ID}> - <EuiPanel color="transparent"> - <EuiFlexGroup justifyContent="flexEnd"> - <EuiFlexItem grow={false}> - {dataAsNestedObject && ( - <TakeActionDropdown - dataFormattedForFieldBrowser={dataFormattedForFieldBrowser} - dataAsNestedObject={dataAsNestedObject} - handleOnEventClosed={closeFlyout} - isHostIsolationPanelOpen={isHostIsolationPanelOpen} - onAddEventFilterClick={onAddEventFilterClick} - onAddExceptionTypeClick={onAddExceptionTypeClick} - onAddIsolationStatusClick={showHostIsolationPanelCallback} - refetchFlyoutData={refetchFlyoutData} - refetch={refetchAll} - scopeId={scopeId} - onOsqueryClick={setOsqueryFlyoutOpenWithAgentId} - /> - )} - </EuiFlexItem> - </EuiFlexGroup> - </EuiPanel> - </EuiFlyoutFooter> - - {openAddExceptionFlyout && - alertSummaryData.ruleId != null && - alertSummaryData.ruleRuleId != null && - alertSummaryData.eventId != null && ( - <AddExceptionFlyoutWrapper - {...alertSummaryData} - ruleIndices={ruleIndex} - ruleDataViewId={ruleDataViewId} - exceptionListType={exceptionFlyoutType} - onCancel={onAddExceptionCancel} - onConfirm={onAddExceptionConfirm} - /> - )} - - {isAddEventFilterModalOpen && dataAsNestedObject != null && ( - <EventFiltersFlyout - data={dataAsNestedObject} - onCancel={closeAddEventFilterModal} - // EUI TODO: This z-index override of EuiOverlayMask is a workaround, and ideally should be resolved with a cleaner UI/UX flow long-term - maskProps={flyoutZIndex} // we need this flyout to be above the timeline flyout (which has a z-index of 1002) - /> - )} - - {isOsqueryFlyoutOpenWithAgentId && dataAsNestedObject != null && ( - <OsqueryFlyout - agentId={isOsqueryFlyoutOpenWithAgentId} - defaultValues={alertId ? { alertIds: [alertId] } : undefined} - onClose={closeOsqueryFlyout} - ecsData={dataAsNestedObject} - /> - )} - </> - ); -}; - -PanelFooter.displayName = 'PanelFooter'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.test.tsx deleted file mode 100644 index c22ec0caa82c5..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.test.tsx +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { renderHook } from '@testing-library/react-hooks'; -import { useFetchGraphData } from './use_fetch_graph_data'; - -const mockUseQuery = jest.fn(); - -jest.mock('@tanstack/react-query', () => { - return { - useQuery: (...args: unknown[]) => mockUseQuery(...args), - }; -}); - -describe('useFetchGraphData', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('Should pass default options when options are not provided', () => { - renderHook(() => { - return useFetchGraphData({ - req: { - query: { - eventIds: [], - start: '2021-09-01T00:00:00.000Z', - end: '2021-09-01T23:59:59.999Z', - }, - }, - }); - }); - - expect(mockUseQuery.mock.calls).toHaveLength(1); - expect(mockUseQuery.mock.calls[0][2]).toEqual({ - enabled: true, - refetchOnWindowFocus: true, - }); - }); - - it('Should should not be enabled when enabled set to false', () => { - renderHook(() => { - return useFetchGraphData({ - req: { - query: { - eventIds: [], - start: '2021-09-01T00:00:00.000Z', - end: '2021-09-01T23:59:59.999Z', - }, - }, - options: { - enabled: false, - }, - }); - }); - - expect(mockUseQuery.mock.calls).toHaveLength(1); - expect(mockUseQuery.mock.calls[0][2]).toEqual({ - enabled: false, - refetchOnWindowFocus: true, - }); - }); - - it('Should should not be refetchOnWindowFocus when refetchOnWindowFocus set to false', () => { - renderHook(() => { - return useFetchGraphData({ - req: { - query: { - eventIds: [], - start: '2021-09-01T00:00:00.000Z', - end: '2021-09-01T23:59:59.999Z', - }, - }, - options: { - refetchOnWindowFocus: false, - }, - }); - }); - - expect(mockUseQuery.mock.calls).toHaveLength(1); - expect(mockUseQuery.mock.calls[0][2]).toEqual({ - enabled: true, - refetchOnWindowFocus: false, - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.ts deleted file mode 100644 index 9a0e270a9b2e0..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.ts +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useQuery } from '@tanstack/react-query'; -import type { - GraphRequest, - GraphResponse, -} from '@kbn/cloud-security-posture-common/types/graph/latest'; -import { useMemo } from 'react'; -import { EVENT_GRAPH_VISUALIZATION_API } from '../../../../../common/constants'; -import { useHttp } from '../../../../common/lib/kibana'; - -/** - * Interface for the input parameters of the useFetchGraphData hook. - */ -export interface UseFetchGraphDataParams { - /** - * The request object containing the query parameters for the graph data. - */ - req: GraphRequest; - /** - * Optional configuration options for the query. - */ - options?: { - /** - * If false, the query will not automatically run. - * Defaults to true. - */ - enabled?: boolean; - /** - * If true, the query will refetch on window focus. - * Defaults to true. - */ - refetchOnWindowFocus?: boolean; - }; -} - -/** - * Interface for the result of the useFetchGraphData hook. - */ -export interface UseFetchGraphDataResult { - /** - * Indicates if the query is currently loading. - */ - isLoading: boolean; - /** - * Indicates if there was an error during the query. - */ - isError: boolean; - /** - * The data returned from the query. - */ - data?: GraphResponse; -} - -/** - * Hook to fetch event's graph visualization data. - * - * @param params - The input parameters for the hook. - * @returns The result of the hook. - */ -export const useFetchGraphData = ({ - req, - options, -}: UseFetchGraphDataParams): UseFetchGraphDataResult => { - const { eventIds, start, end, esQuery } = req.query; - const http = useHttp(); - const QUERY_KEY = useMemo( - () => ['useFetchGraphData', eventIds, start, end, esQuery], - [end, esQuery, eventIds, start] - ); - - const { isLoading, isError, data } = useQuery<GraphResponse>( - QUERY_KEY, - () => { - return http.post<GraphResponse>(EVENT_GRAPH_VISUALIZATION_API, { - version: '1', - body: JSON.stringify(req), - }); - }, - { - enabled: options?.enabled ?? true, - refetchOnWindowFocus: options?.refetchOnWindowFocus ?? true, - } - ); - - return { - isLoading, - isError, - data, - }; -}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.test.tsx deleted file mode 100644 index 7fa0741a85118..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.test.tsx +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { RenderHookResult } from '@testing-library/react'; -import { renderHook } from '@testing-library/react'; -import type { UseGraphPreviewParams, UseGraphPreviewResult } from './use_graph_preview'; -import { useGraphPreview } from './use_graph_preview'; -import type { GetFieldsData } from '../../shared/hooks/use_get_fields_data'; -import { mockFieldData } from '../../shared/mocks/mock_get_fields_data'; - -describe('useGraphPreview', () => { - let hookResult: RenderHookResult<UseGraphPreviewResult, UseGraphPreviewParams>; - - it(`should return false when missing actor`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'kibana.alert.original_event.id') { - return 'eventId'; - } - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(false); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual(['eventId']); - expect(actorIds).toEqual([]); - expect(action).toEqual(['action']); - }); - - it(`should return false when missing event.action`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'kibana.alert.original_event.id') { - return 'eventId'; - } else if (field === 'actor.entity.id') { - return 'actorId'; - } - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(false); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual(['eventId']); - expect(actorIds).toEqual(['actorId']); - expect(action).toEqual(undefined); - }); - - it(`should return false when missing original_event.id`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'actor.entity.id') { - return 'actorId'; - } - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(false); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual([]); - expect(actorIds).toEqual(['actorId']); - expect(action).toEqual(['action']); - }); - - it(`should return false when timestamp is missing`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === '@timestamp') { - return; - } else if (field === 'kibana.alert.original_event.id') { - return 'eventId'; - } else if (field === 'actor.entity.id') { - return 'actorId'; - } - - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(false); - expect(timestamp).toEqual(null); - expect(eventIds).toEqual(['eventId']); - expect(actorIds).toEqual(['actorId']); - expect(action).toEqual(['action']); - }); - - it(`should return true when alert is has graph preview`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'kibana.alert.original_event.id') { - return 'eventId'; - } else if (field === 'actor.entity.id') { - return 'actorId'; - } - - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(true); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual(['eventId']); - expect(actorIds).toEqual(['actorId']); - expect(action).toEqual(['action']); - }); - - it(`should return true when alert is has graph preview with multiple values`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'kibana.alert.original_event.id') { - return ['id1', 'id2']; - } else if (field === 'actor.entity.id') { - return ['actorId1', 'actorId2']; - } - - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action1', 'action2'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(true); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual(['id1', 'id2']); - expect(actorIds).toEqual(['actorId1', 'actorId2']); - expect(action).toEqual(['action1', 'action2']); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.ts deleted file mode 100644 index bbaeb808c9e2a..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; -import { get } from 'lodash/fp'; -import type { GetFieldsData } from '../../shared/hooks/use_get_fields_data'; -import { getField, getFieldArray } from '../../shared/utils'; - -export interface UseGraphPreviewParams { - /** - * Retrieves searchHit values for the provided field - */ - getFieldsData: GetFieldsData; - - /** - * An object with top level fields from the ECS object - */ - ecsData: Ecs; -} -/** - * Interface for the result of the useGraphPreview hook - */ -export interface UseGraphPreviewResult { - /** - * The timestamp of the event - */ - timestamp: string | null; - - /** - * Array of event IDs associated with the alert - */ - eventIds: string[]; - - /** - * Array of actor entity IDs associated with the alert - */ - actorIds: string[]; - - /** - * Action associated with the event - */ - action?: string[]; - - /** - * Boolean indicating if the event is an audit log (contains event ids, actor ids and action) - */ - isAuditLog: boolean; -} - -/** - * Hook that returns the graph view configuration if the graph view is available for the alert - */ -export const useGraphPreview = ({ - getFieldsData, - ecsData, -}: UseGraphPreviewParams): UseGraphPreviewResult => { - const timestamp = getField(getFieldsData('@timestamp')); - const originalEventId = getFieldsData('kibana.alert.original_event.id'); - const eventId = getFieldsData('event.id'); - const eventIds = originalEventId ? getFieldArray(originalEventId) : getFieldArray(eventId); - - const actorIds = getFieldArray(getFieldsData('actor.entity.id')); - const action: string[] | undefined = get(['event', 'action'], ecsData); - const isAuditLog = - Boolean(timestamp) && actorIds.length > 0 && Boolean(action?.length) && eventIds.length > 0; - - return { timestamp, eventIds, actorIds, action, isAuditLog }; -}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts deleted file mode 100644 index 89a71e5fd17ba..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PREFIX } from '../../shared/test_ids'; - -export const FLYOUT_BODY_TEST_ID = `${PREFIX}Body` as const; -export const FLYOUT_FOOTER_TEST_ID = `${PREFIX}Footer` as const; -export const FLYOUT_FOOTER_DEOPDOEN_BUTTON_TEST_ID = - `${FLYOUT_FOOTER_TEST_ID}DropdownButton` as const; -export const OVERVIEW_TAB_TEST_ID = `${PREFIX}OverviewTab` as const; -export const TABLE_TAB_TEST_ID = `${PREFIX}TableTab` as const; -export const JSON_TAB_TEST_ID = `${PREFIX}JsonTab` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/test_ids.ts deleted file mode 100644 index b250e9a688380..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/test_ids.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PREFIX } from '../../../shared/test_ids'; - -export const FLYOUT_PREVIEW_LINK_TEST_ID = `${PREFIX}PreviewLink` as const; - -export const SESSION_VIEW_UPSELL_TEST_ID = `${PREFIX}SessionViewUpsell` as const; -export const SESSION_VIEW_NO_DATA_TEST_ID = `${PREFIX}SessionViewNoData` as const; - -export const MISCONFIGURATIONS_TEST_ID = `${PREFIX}Misconfigurations` as const; -export const VULNERABILITIES_TEST_ID = `${PREFIX}Vulnerabilities` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.test.tsx deleted file mode 100644 index 334bf5f08721e..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.test.tsx +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { renderHook } from '@testing-library/react'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { useNavigateToAnalyzer } from './use_navigate_to_analyzer'; -import { mockFlyoutApi } from '../mocks/mock_flyout_context'; -import { useWhichFlyout } from './use_which_flyout'; -import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; -import { useKibana } from '../../../../common/lib/kibana'; -import { - DocumentDetailsRightPanelKey, - DocumentDetailsLeftPanelKey, - DocumentDetailsAnalyzerPanelKey, -} from '../constants/panel_keys'; -import { ANALYZE_GRAPH_ID, ANALYZER_PREVIEW_BANNER } from '../../left/components/analyze_graph'; - -jest.mock('@kbn/expandable-flyout'); -jest.mock('../../../../common/lib/kibana'); -jest.mock('./use_which_flyout'); - -const mockedUseKibana = mockUseKibana(); -(useKibana as jest.Mock).mockReturnValue(mockedUseKibana); - -const mockUseWhichFlyout = useWhichFlyout as jest.Mock; -const FLYOUT_KEY = 'SecuritySolution'; -const TIMELINE_FLYOUT_KEY = 'Timeline'; - -const eventId = 'eventId1'; -const indexName = 'index1'; -const scopeId = 'scopeId1'; - -describe('useNavigateToAnalyzer', () => { - beforeEach(() => { - jest.clearAllMocks(); - jest.mocked(useExpandableFlyoutApi).mockReturnValue(mockFlyoutApi); - }); - - it('when isFlyoutOpen is true, should return callback that opens left and preview panels', () => { - mockUseWhichFlyout.mockReturnValue(FLYOUT_KEY); - const hookResult = renderHook(() => - useNavigateToAnalyzer({ isFlyoutOpen: true, eventId, indexName, scopeId }) - ); - hookResult.result.current.navigateToAnalyzer(); - - expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: 'visualize', - subTab: ANALYZE_GRAPH_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - - expect(mockFlyoutApi.openPreviewPanel).toHaveBeenCalledWith({ - id: DocumentDetailsAnalyzerPanelKey, - params: { - resolverComponentInstanceID: `${FLYOUT_KEY}-${scopeId}`, - banner: ANALYZER_PREVIEW_BANNER, - }, - }); - }); - - it('when isFlyoutOpen is false and scopeId is not timeline, should return callback that opens a new flyout', () => { - mockUseWhichFlyout.mockReturnValue(null); - - const hookResult = renderHook(() => - useNavigateToAnalyzer({ isFlyoutOpen: false, eventId, indexName, scopeId }) - ); - hookResult.result.current.navigateToAnalyzer(); - expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ - right: { - id: DocumentDetailsRightPanelKey, - params: { - id: eventId, - indexName, - scopeId, - }, - }, - left: { - id: DocumentDetailsLeftPanelKey, - path: { - tab: 'visualize', - subTab: ANALYZE_GRAPH_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }, - preview: { - id: DocumentDetailsAnalyzerPanelKey, - params: { - resolverComponentInstanceID: `${FLYOUT_KEY}-${scopeId}`, - banner: ANALYZER_PREVIEW_BANNER, - }, - }, - }); - }); - - it('when isFlyoutOpen is false and scopeId is current timeline, should return callback that opens a new flyout in timeline', () => { - mockUseWhichFlyout.mockReturnValue(null); - const timelineId = 'timeline-1'; - const hookResult = renderHook(() => - useNavigateToAnalyzer({ isFlyoutOpen: false, eventId, indexName, scopeId: timelineId }) - ); - hookResult.result.current.navigateToAnalyzer(); - expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ - right: { - id: DocumentDetailsRightPanelKey, - params: { - id: eventId, - indexName, - scopeId: timelineId, - }, - }, - left: { - id: DocumentDetailsLeftPanelKey, - path: { - tab: 'visualize', - subTab: ANALYZE_GRAPH_ID, - }, - params: { - id: eventId, - indexName, - scopeId: timelineId, - }, - }, - preview: { - id: DocumentDetailsAnalyzerPanelKey, - params: { - resolverComponentInstanceID: `${TIMELINE_FLYOUT_KEY}-${timelineId}`, - banner: ANALYZER_PREVIEW_BANNER, - }, - }, - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.test.tsx deleted file mode 100644 index ac624ce11ce56..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.test.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { renderHook } from '@testing-library/react'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { useNavigateToSessionView } from './use_navigate_to_session_view'; -import { mockFlyoutApi } from '../mocks/mock_flyout_context'; -import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; -import { useKibana } from '../../../../common/lib/kibana'; -import { DocumentDetailsRightPanelKey, DocumentDetailsLeftPanelKey } from '../constants/panel_keys'; -import { SESSION_VIEW_ID } from '../../left/components/session_view'; - -jest.mock('@kbn/expandable-flyout'); -jest.mock('../../../../common/lib/kibana'); - -const mockedUseKibana = mockUseKibana(); -(useKibana as jest.Mock).mockReturnValue(mockedUseKibana); - -const eventId = 'eventId1'; -const indexName = 'index1'; -const scopeId = 'scopeId1'; - -describe('useNavigateToSessionView', () => { - beforeEach(() => { - jest.clearAllMocks(); - jest.mocked(useExpandableFlyoutApi).mockReturnValue(mockFlyoutApi); - }); - - it('when isFlyoutOpen is true, should return callback that opens left panel', () => { - const hookResult = renderHook(() => - useNavigateToSessionView({ isFlyoutOpen: true, eventId, indexName, scopeId }) - ); - hookResult.result.current.navigateToSessionView(); - - expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: 'visualize', - subTab: SESSION_VIEW_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }); - - it('when isFlyoutOpen is false, should return callback that opens a new flyout', () => { - const hookResult = renderHook(() => - useNavigateToSessionView({ isFlyoutOpen: false, eventId, indexName, scopeId }) - ); - hookResult.result.current.navigateToSessionView(); - expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ - right: { - id: DocumentDetailsRightPanelKey, - params: { - id: eventId, - indexName, - scopeId, - }, - }, - left: { - id: DocumentDetailsLeftPanelKey, - path: { - tab: 'visualize', - subTab: SESSION_VIEW_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }, - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/jest.config.js b/x-pack/plugins/security_solution/public/flyout/jest.config.js deleted file mode 100644 index 57101f9368e5f..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/flyout'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/flyout', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/public/flyout/**/*.{ts,tsx}'], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/jest.config.js b/x-pack/plugins/security_solution/public/jest.config.js deleted file mode 100644 index 745b307ee4d41..0000000000000 --- a/x-pack/plugins/security_solution/public/jest.config.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - /** all nested directories have their own Jest config file */ - testMatch: ['<rootDir>/x-pack/plugins/security_solution/public/*.test.{js,mjs,ts,tsx}'], - roots: ['<rootDir>/x-pack/plugins/security_solution/public'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/**/*.{ts,tsx}', - '!<rootDir>/x-pack/plugins/security_solution/public/*.test.{ts,tsx}', - '!<rootDir>/x-pack/plugins/security_solution/public/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/plugins/security_solution/public/*mock*.{ts,tsx}', - '!<rootDir>/x-pack/plugins/security_solution/public/*.test.{ts,tsx}', - '!<rootDir>/x-pack/plugins/security_solution/public/*.d.ts', - '!<rootDir>/x-pack/plugins/security_solution/public/*.config.ts', - '!<rootDir>/x-pack/plugins/security_solution/public/index.{js,ts,tsx}', - ], - - moduleNameMapper: require('../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/management/cypress/README.md b/x-pack/plugins/security_solution/public/management/cypress/README.md deleted file mode 100644 index 482a2bac99595..0000000000000 --- a/x-pack/plugins/security_solution/public/management/cypress/README.md +++ /dev/null @@ -1,202 +0,0 @@ -# Cypress Tests - -The `plugins/security_solution/public/management/cypress` directory contains functional UI tests that execute -using [Cypress](https://www.cypress.io/). - -## Pre-requisites - -Good to have before you run the tests: - -- Docker CLI, as Docker desktop doesn't install it by default. Install using `brew`: - -```shell -brew install docker -``` - -- [Multipass](https://multipass.run/) for running the tests against real endpoint. Install using `brew`: - -```shell -brew install multipass -``` - -If you also want to run the tests against real endpoints as on the CI pipeline, then you need to have the following: - -- [Vagrant](https://developer.hashicorp.com/vagrant/docs/installation) -- [Vagrant provider for VMware](https://developer.hashicorp.com/vagrant/docs/providers/vmware/installation) -- [Vagrant VMware Utility](https://developer.hashicorp.com/vagrant/docs/providers/vmware/vagrant-vmware-utility) -- [VMware Fusion](https://www.vmware.com/products/fusion/fusion-evaluation.html) - -See [running interactive tests on real endpoint with vagrant](#cypress-interactive-with-real-endpoints-using-vagrant) -for more information. - -## Adding new tests - tagging for ESS vs Serverless - -Similarly to Security Solution cypress tests, we use tags in order to select which tests we want to execute on which environment: - -- `@serverless` includes a test in the Serverless test suite. You need to explicitly add this tag to any test you want to run against a Serverless environment. -- `@serverlessQA` includes a test in the Serverless test suite for the Kibana release process of serverless. You need to explicitly add this tag to any test you want you run in CI for the Kibana QA quality gate. These tests should be stable, otherwise they will be blocking the release pipeline. They should be also critical enough, so that when they fail, there's a high chance of an SDH or blocker issue to be reported. -- `@ess` includes a test in the normal, non-Serverless test suite. You need to explicitly add this tag to any test you want to run against a non-Serverless environment. -- `@brokenInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Indicates that a test should run in Serverless, but currently is broken. -- `@skipInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Indicates that we don't want to run the given test in Serverless. -- `@skipInServerlessMKI` excludes a test from any MKI environment, but it will continue being executed as part of the PR process if the `@serverless` tag is present. - -Important: if you don't provide any tag, your test won't be executed. - -## Running the tests - -There are currently three ways to run the tests, comprised of two execution modes and two target environments, which -will be detailed below. - -### Environment Variables - -The test suites are set up with defaults for Kibana and Elasticsearch. The following environment variables can be set to -changes those defaults and target a run against different instances of the stack: - -``` -CYPRESS_KIBANA_URL -CYPRESS_KIBANA_USERNAME -CYPRESS_KIBANA_PASSWORD -CYPRESS_ELASTICSEARCH_URL -CYPRESS_ELASTICSEARCH_USERNAME -CYPRESS_ELASTICSEARCH_PASSWORD -CYPRESS_BASE_URL -``` - -Some notes: - -- The `ELASTICSEARCH_USERNAME` and `ELASTICSEARCH_PASSWORD` should have sufficient privileges to CRUD on restricted indices. -- Both URL variables should **NOT** include credentials in the url -- `KIBANA_URL` and `BASE_URL` will almost always be the same - -Example: - -```shell -yarn --cwd x-pack/plugins/security_solution -CYPRESS_BASE_URL=http://localhost:5601 \ -CYPRESS_KIBANA_URL=http://localhost:5601 \ -CYPRESS_KIBANA_USERNAME=elastic \ -CYPRESS_KIBANA_PASSWORD=changeme \ -CYPRESS_ELASTICSEARCH_USERNAME=system_indices_superuser \ -CYPRESS_ELASTICSEARCH_PASSWORD=changeme \ -CYPRESS_ELASTICSEARCH_URL=http://localhost:9200 cypress:dw:open -``` - -### Execution modes - -#### Interactive mode - -When you run Cypress in interactive mode, an interactive runner is displayed that allows you to see commands as they -execute while also viewing the application under test. For more information, please -see [cypress documentation](https://docs.cypress.io/guides/core-concepts/test-runner.html#Overview). - -#### Headless mode - -A headless browser is a browser simulation program that does not have a user interface. These programs operate like any -other browser but do not display any UI. So when you are executing the tests on this mode you are not -going to see the application under test. Just the output of the test is displayed on the terminal once the execution is -finished. - -### Target environments - -#### FTR (CI) - -This is the configuration used by CI. It uses the FTR to spawn both a Kibana instance (http://localhost:5620) and an -Elasticsearch instance (http://localhost:9220) with a preloaded minimum set of data (see preceding "Test data" section), -and then executes cypress against this stack. You can find this configuration in `x-pack/test/defend_workflows_cypress` - -### Test Execution: Examples - -#### Cypress + Headless (Chrome) - -Since this is how tests are run on CI, this will likely be the configuration you want to use in order to reproduce -failures locally, etc. - -```shell -# bootstrap kibana from the project root and build the plugins/assets that cypress will execute against -yarn kbn bootstrap && node scripts/build_kibana_platform_plugins - -# launch the cypress test runner against ESS -yarn --cwd x-pack/plugins/security_solution cypress:dw:run - -# or against Serverless -yarn --cwd x-pack/plugins/security_solution cypress:dw:serverless:run -``` - -#### Cypress - -This is the preferred mode for developing new tests against mocked data - -```shell -# bootstrap kibana from the project root and build the plugins/assets that cypress will execute against -yarn kbn bootstrap && node scripts/build_kibana_platform_plugins - -# launch the cypress test runner against ESS -yarn --cwd x-pack/plugins/security_solution cypress:dw:open - -# or against Serverless -yarn --cwd x-pack/plugins/security_solution cypress:dw:serverless:open -``` - -## Folder Structure - -### e2e/ - -Contains all the tests. Within it are two sub-folders: - -### integration/ - -Cypress convention. Contains the specs that are going to be executed. - -### fixtures/ - -Cypress convention. Fixtures are used as external pieces of static data when we stub responses. - -### support/ - -Cypress convention. As a convenience, by default Cypress will automatically include the plugins file -cypress/plugins/index.js before every single spec file it runs. -Directory also holds Cypress Plugins that are then initialized via `setupNodeEvents()` in the Cypress configuration. - -### screens/ - -Contains the elements we want to interact with within our tests. -Each file inside the screens folder represents a screen in our application. - -### tasks/ - -_Tasks_ are functions that may be reused across tests. - -Each file inside the tasks folder represents a screen of our application. - -## Test data - -The data the tests need: - -- Is generated on the fly using our application APIs (preferred way) - -## Development Best Practices - -### Clean up the state - -Remember to clean up the state of the test after its execution. Be mindful of failure scenarios, as well: if your test -fails, will it leave the environment in a recoverable state? - -### Minimize the use of es_archive - -When possible, create all the data that you need for executing the tests using the application APIS or the UI. - -### Speed up test execution time - -Loading the web page takes a big amount of time, in order to minimize that impact, the following points should be -taken into consideration until another solution is implemented: - -- Group the tests that are similar in different contexts. -- For every context login only once, and clean the state between tests if needed without reloading the page. -- All tests in a spec file must be order-independent. - -Remember that by minimizing the number of times the web page is loaded, we minimize the execution time as well. - -## Linting - -Optional linting rules for Cypress and linting setup can be -found [here](https://github.com/cypress-io/eslint-plugin-cypress#usage) diff --git a/x-pack/plugins/security_solution/public/management/cypress/cypress_base.config.ts b/x-pack/plugins/security_solution/public/management/cypress/cypress_base.config.ts deleted file mode 100644 index c8aa2b347b82b..0000000000000 --- a/x-pack/plugins/security_solution/public/management/cypress/cypress_base.config.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -// @ts-expect-error -import registerDataSession from 'cypress-data-session/src/plugin'; -import { merge } from 'lodash'; - -import { transparentApiProxy } from './support/transparent_api_proxy'; -import { samlAuthentication } from './support/saml_authentication'; -import { getVideosForFailedSpecs } from './support/filter_videos'; -import { setupToolingLogLevel } from './support/setup_tooling_log_level'; -import { createToolingLogger } from '../../../common/endpoint/data_loaders/utils'; -import { dataLoaders, dataLoadersForRealEndpoints } from './support/data_loaders'; -import { responseActionTasks } from './support/response_actions'; -import { agentActions } from './support/agent_actions'; -import { usageTracker } from '../../../common/endpoint/data_loaders/usage_tracker'; - -export const getCypressBaseConfig = ( - overrides: Cypress.ConfigOptions = {} -): Cypress.ConfigOptions => { - return merge( - { - reporter: '../../../../node_modules/cypress-multi-reporters', - reporterOptions: { - configFile: './public/management/reporter_config.json', - }, - - chromeWebSecurity: false, - defaultCommandTimeout: 60000, - execTimeout: 120000, - pageLoadTimeout: 12000, - - retries: { - runMode: 1, - openMode: 0, - }, - - screenshotsFolder: - '../../../target/kibana-security-solution/public/management/cypress/screenshots', - trashAssetsBeforeRuns: false, - video: true, - videoCompression: 15, - videosFolder: '../../../target/kibana-security-solution/public/management/cypress/videos', - viewportHeight: 1200, - viewportWidth: 1920, - experimentalStudio: true, - - env: { - KIBANA_URL: 'http://localhost:5601', - ELASTICSEARCH_URL: 'http://localhost:9200', - FLEET_SERVER_URL: 'https://localhost:8220', - KIBANA_USERNAME: 'system_indices_superuser', - KIBANA_PASSWORD: 'changeme', - ELASTICSEARCH_USERNAME: 'system_indices_superuser', - ELASTICSEARCH_PASSWORD: 'changeme', - - // Default log level for instance of `ToolingLog` created via `crateToolingLog()`. Set this - // to `debug` or `verbose` when wanting to debug tooling used by tests (ex. data indexer functions). - TOOLING_LOG_LEVEL: 'info', - - // Variable works in conjunction with the Cypress parallel runner. When set to true, fleet server - // will be setup right after the Kibana stack, so that by the time cypress tests `.run()`/`.open()`, - // the env. will be all setup and we don't have to explicitly setup fleet from a test file - WITH_FLEET_SERVER: true, - - // grep related configs - grepFilterSpecs: true, - grepOmitFiltered: true, - IS_CI: process.env.CI, - }, - - e2e: { - // baseUrl: To override, set Env. variable `CYPRESS_BASE_URL` - baseUrl: 'http://localhost:5601', - supportFile: 'public/management/cypress/support/e2e.ts', - specPattern: 'public/management/cypress/e2e/**/*.cy.{js,jsx,ts,tsx}', - experimentalRunAllSpecs: true, - experimentalMemoryManagement: true, - experimentalInteractiveRunEvents: true, - setupNodeEvents: (on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions) => { - on('before:browser:launch', (browser, launchOptions) => { - if (browser.name === 'chrome' && browser.isHeadless) { - launchOptions.args.push('--window-size=1920,1200'); - return launchOptions; - } - if (browser.family === 'chromium') { - launchOptions.args.push( - '--js-flags="--max_old_space_size=4096 --max_semi_space_size=1024"' - ); - } - return launchOptions; - }); - registerDataSession(on, config); - // IMPORTANT: setting the log level should happen before any tooling is called - setupToolingLogLevel(config); - samlAuthentication(on, config); - - dataLoaders(on, config); - - transparentApiProxy(on, config); - - // Data loaders specific to "real" Endpoint testing - dataLoadersForRealEndpoints(on, config); - - agentActions(on); - - responseActionTasks(on, config); - - // eslint-disable-next-line @typescript-eslint/no-var-requires - require('@cypress/grep/src/plugin')(config); - - on('after:spec', (_, results) => { - getVideosForFailedSpecs(results); - createToolingLogger().info( - 'Tooling Usage Tracking summary:\n', - usageTracker.toSummaryTable() - ); - }); - - return config; - }, - }, - }, - overrides - ); -}; diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts b/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts deleted file mode 100644 index b4901bef9321a..0000000000000 --- a/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { createToolingLogger } from '../../../../common/endpoint/data_loaders/utils'; - -/** - * Sets the default log level for `ToolingLog` instances crated via `createToolingLogger()` - * based on the `TOOLING_LOG_LEVEL` env. variable in the cypress config - * @param config - */ -export const setupToolingLogLevel = (config: Cypress.PluginConfigOptions) => { - const log = createToolingLogger(); - const defaultToolingLogLevel = config.env.TOOLING_LOG_LEVEL; - - log.info(`Cypress config 'env.TOOLING_LOG_LEVEL': ${defaultToolingLogLevel}`); - - if (defaultToolingLogLevel && defaultToolingLogLevel !== createToolingLogger.defaultLogLevel) { - createToolingLogger.defaultLogLevel = defaultToolingLogLevel; - log.info(`Default log level for 'createToolingLogger()' set to ${defaultToolingLogLevel}`); - } -}; diff --git a/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json b/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json deleted file mode 100644 index c983368164906..0000000000000 --- a/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "extends": "../../../../../../tsconfig.base.json", - "include": [ - "**/*", - ], - "exclude": [ - "target/**/*" - ], - "compilerOptions": { - "outDir": "target/types", - "types": [ - "cypress", - "node", - ], - }, - "kbn_references": [ - // this cypress project uses code from the parent ts project - // in a way that can't be auto-matically deteceted at this time - // so we have to force the inclusion of this reference - { - "path": "../../../tsconfig.json", - "force": true - }, - "@kbn/security-plugin", - "@kbn/securitysolution-list-constants", - "@kbn/fleet-plugin", - "@kbn/securitysolution-io-ts-list-types", - "@kbn/cypress-config", - "@kbn/test-subj-selector", - "@kbn/cases-plugin", - "@kbn/test", - "@kbn/repo-info", - "@kbn/tooling-log", - "@kbn/security-solution-serverless", - "@kbn/dev-utils", - "@kbn/spaces-plugin", - "@kbn/test-suites-xpack/security_solution_cypress/cypress", - ] -} diff --git a/x-pack/plugins/security_solution/public/management/cypress/types.ts b/x-pack/plugins/security_solution/public/management/cypress/types.ts deleted file mode 100644 index 8beb150a64d5a..0000000000000 --- a/x-pack/plugins/security_solution/public/management/cypress/types.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* eslint-disable @typescript-eslint/no-explicit-any */ - -import type { Role } from '@kbn/security-plugin/common'; -import type { ToolingLog } from '@kbn/tooling-log'; -import type { ActionDetails } from '../../../common/endpoint/types'; -import type { CyLoadEndpointDataOptions } from './support/plugin_handlers/endpoint_data_loader'; -import type { SecurityTestUser } from './common/constants'; - -type PossibleChainable = - | Cypress.Chainable<any> - | ((args?: any) => Cypress.Chainable<any>) - | ((args?: any) => Promise<Cypress.Chainable<any>>); - -/** - * Extracts out the subject that the Chainable resolves to (when `Chainable.then()` is used). - * - * @example - * // With a Cypress.chainable object - * const value: Cypress.Chainable<SomeType>; - * const t: ReturnTypeFromChainable<value>; // SomeType - * - * // With function - * const value: () => Cypress.Chainable<SomeType>; - * const t: ReturnTypeFromChainable<value>; // SomeType - * - * // With function that returns a promise - * const value: () => Promise<Cypress.Chainable<SomeType>>; - * const t: ReturnTypeFromChainable<value>; // SomeType - */ -export type ReturnTypeFromChainable<C extends PossibleChainable> = C extends Cypress.Chainable< - infer Value -> - ? Value - : C extends (args?: any) => Cypress.Chainable<infer ValueFromFnResponse> - ? ValueFromFnResponse - : C extends (args?: any) => Promise<Cypress.Chainable<infer ValueFromPromiseChainable>> - ? ValueFromPromiseChainable - : never; - -export type IndexEndpointHostsCyTaskOptions = Partial< - { - count: number; - withResponseActions: boolean; - numResponseActions?: number; - alertIds?: string[]; - } & Pick<CyLoadEndpointDataOptions, 'version' | 'os' | 'isolation'> ->; - -export interface HostActionResponse { - data: { - action: ActionDetails; - state: { state?: 'success' | 'failure' }; - }; -} - -export interface LoadUserAndRoleCyTaskOptions { - name: SecurityTestUser; -} - -export interface CreateUserAndRoleCyTaskOptions { - role: Role; -} - -export interface UninstallAgentFromHostTaskOptions { - hostname: string; - uninstallToken: string; -} - -export interface IsAgentAndEndpointUninstalledFromHostTaskOptions { - hostname: string; -} - -export interface LogItTaskOptions { - level: keyof Pick<ToolingLog, 'info' | 'debug' | 'verbose'>; - data: any; -} diff --git a/x-pack/plugins/security_solution/public/management/jest.config.js b/x-pack/plugins/security_solution/public/management/jest.config.js deleted file mode 100644 index e33e13fb4ce1a..0000000000000 --- a/x-pack/plugins/security_solution/public/management/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/management'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/management', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/management/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts deleted file mode 100644 index 415f05c417ca8..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { DataViewBase } from '@kbn/es-query'; -import type { GetInfoResponse } from '@kbn/fleet-plugin/common'; -import type { - AppLocation, - EndpointPendingActions, - EndpointSortableField, - HostInfo, - Immutable, - PolicyData, - ResponseActionApiResponse, -} from '../../../../common/endpoint/types'; -import type { ServerApiError } from '../../../common/types'; -import type { AsyncResourceState } from '../../state'; -import { TRANSFORM_STATES } from '../../../../common/constants'; - -export interface EndpointState { - /** list of host **/ - hosts: HostInfo[]; - /** number of items per page */ - pageSize: number; - /** which page to show */ - pageIndex: number; - /** field used for sorting */ - sortField: EndpointSortableField; - /** direction of sorting */ - sortDirection: 'asc' | 'desc'; - /** total number of hosts returned */ - total: number; - /** list page is retrieving data */ - loading: boolean; - /** api error from retrieving host list */ - error?: ServerApiError; - /** current location info */ - location?: Immutable<AppLocation>; - /** policies */ - policyItems: PolicyData[]; - /** policies are loading */ - policyItemsLoading: boolean; - /** the selected policy ID in the onboarding flow */ - selectedPolicyId?: string; - /** Endpoint package info */ - endpointPackageInfo: AsyncResourceState<GetInfoResponse['item']>; - /** Tracks the list of policy IDs used in Host metadata that may no longer exist */ - nonExistingPolicies: NonExistingPolicies; - /** Tracks whether hosts exist and helps control if onboarding should be visible */ - endpointsExist: boolean; - /** index patterns for query bar */ - patterns: DataViewBase[]; - /** api error from retrieving index patters for query bar */ - patternsError?: ServerApiError; - /** Is auto-refresh enabled? */ - isAutoRefreshEnabled: boolean; - /** The current auto refresh interval for data in ms */ - autoRefreshInterval: number; - /** The total Agents that contain an Endpoint package */ - agentsWithEndpointsTotal: number; - /** api error for total Agents that contain an Endpoint package */ - agentsWithEndpointsTotalError?: ServerApiError; - /** The total, actual number of Endpoints regardless of any filtering */ - endpointsTotal: number; - /** api error for total, actual Endpoints */ - endpointsTotalError?: ServerApiError; - /** Host isolation request state for a single endpoint */ - isolationRequestState: AsyncResourceState<ResponseActionApiResponse>; - // Metadata transform stats to checking transform state - metadataTransformStats: AsyncResourceState<TransformStats[]>; - isInitialized: boolean; -} - -export type AgentIdsPendingActions = Map<string, EndpointPendingActions['pending_actions']>; - -/** - * Set containing Package Policy IDs which are used but do not exist anymore - */ -export type NonExistingPolicies = Set<string>; - -/** - * Query params on the host page parsed from the URL - */ -export interface EndpointIndexUIQueryParams { - /** Selected endpoint id shows host details flyout */ - selected_endpoint?: string; - /** How many items to show in list */ - page_size?: string; - /** Which page to show */ - page_index?: string; - /** Field used for sorting */ - sort_field?: EndpointSortableField; - /** Direction of sorting */ - sort_direction?: 'asc' | 'desc'; - /** show the policy response or host details */ - show?: 'policy_response' | 'activity_log' | 'details' | 'isolate' | 'unisolate'; - /** Query text from search bar*/ - admin_query?: string; -} - -const transformStates = Object.values(TRANSFORM_STATES); -export type TransformState = (typeof transformStates)[number]; - -export interface TransformStats { - id: string; - checkpointing: { - last: { - checkpoint: number; - timestamp_millis?: number; - }; - next?: { - checkpoint: number; - checkpoint_progress?: { - total_docs: number; - docs_remaining: number; - percent_complete: number; - }; - }; - operations_behind: number; - }; - node?: { - id: string; - name: string; - ephemeral_id: string; - transport_address: string; - attributes: Record<string, unknown>; - }; - stats: { - delete_time_in_ms: number; - documents_deleted: number; - documents_indexed: number; - documents_processed: number; - index_failures: number; - index_time_in_ms: number; - index_total: number; - pages_processed: number; - search_failures: number; - search_time_in_ms: number; - search_total: number; - trigger_count: number; - processing_time_in_ms: number; - processing_total: number; - exponential_avg_checkpoint_duration_ms: number; - exponential_avg_documents_indexed: number; - exponential_avg_documents_processed: number; - }; - reason?: string; - state: TransformState; -} - -export interface TransformStatsResponse { - count: number; - transforms: TransformStats[]; -} diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx deleted file mode 100644 index 1ee7600eda2ef..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiHorizontalRule, EuiAccordion, EuiSpacer, EuiText } from '@elastic/eui'; -import React from 'react'; -import { WorkflowInsightsResults } from './workflow_insights_results'; -import { WorkflowInsightsScanSection } from './workflow_insights_scan'; -import { useIsExperimentalFeatureEnabled } from '../../../../../../../common/hooks/use_experimental_features'; -import { WORKFLOW_INSIGHTS } from '../../../translations'; - -export const WorkflowInsights = () => { - const isWorkflowInsightsEnabled = useIsExperimentalFeatureEnabled('defendInsights'); - - if (!isWorkflowInsightsEnabled) { - return null; - } - - const results = null; - - const renderLastResultsCaption = () => { - if (!results) { - return null; - } - return ( - <EuiText color={'subdued'} size={'xs'}> - {WORKFLOW_INSIGHTS.titleRight} - </EuiText> - ); - }; - - return ( - <> - <EuiAccordion - id={'workflow-insights-wrapper'} - buttonContent={ - <EuiText size={'m'}> - <h4>{WORKFLOW_INSIGHTS.title}</h4> - </EuiText> - } - initialIsOpen - extraAction={renderLastResultsCaption()} - paddingSize={'none'} - > - <EuiSpacer size={'m'} /> - <WorkflowInsightsScanSection /> - <EuiSpacer size={'m'} /> - <WorkflowInsightsResults results={true} /> - <EuiHorizontalRule /> - </EuiAccordion> - <EuiSpacer size="l" /> - </> - ); -}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx deleted file mode 100644 index cb2f0bc0889a1..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useState } from 'react'; -import styled from 'styled-components'; -import { - EuiButtonIcon, - EuiCallOut, - EuiFlexGroup, - EuiFlexItem, - EuiIcon, - EuiPanel, - EuiSpacer, - EuiText, -} from '@elastic/eui'; -import { WORKFLOW_INSIGHTS } from '../../../translations'; - -interface WorkflowInsightsResultsProps { - results: boolean; -} - -const CustomEuiCallOut = styled(EuiCallOut)` - & .euiButtonIcon { - margin-top: 5px; /* Lower the close button */ - } -`; - -export const WorkflowInsightsResults = ({ results }: WorkflowInsightsResultsProps) => { - const [showEmptyResultsCallout, setShowEmptyResultsCallout] = useState(true); - const hideEmptyStateCallout = () => setShowEmptyResultsCallout(false); - if (!results) { - return null; - } - - return ( - <> - <EuiText size={'s'}> - <h4>{WORKFLOW_INSIGHTS.issues.title}</h4> - </EuiText> - <EuiSpacer size={'s'} /> - <EuiPanel paddingSize="m" hasShadow={false} hasBorder> - <EuiFlexGroup alignItems={'center'} gutterSize={'m'}> - <EuiFlexItem grow={false}> - <EuiIcon type="warning" size="l" color="warning" /> - </EuiFlexItem> - - <EuiFlexItem> - <EuiText size="s"> - <EuiText size={'s'}> - <strong>{'McAfee EndpointSecurity'}</strong> - </EuiText> - <EuiText size={'s'} color={'subdued'}> - {'Add McAfee as a trusted application'} - </EuiText> - </EuiText> - </EuiFlexItem> - - <EuiFlexItem grow={false} style={{ marginLeft: 'auto' }}> - <EuiButtonIcon - iconType="popout" - aria-label="External link" - href="https://google.com" - target="_blank" - /> - </EuiFlexItem> - </EuiFlexGroup> - </EuiPanel> - {showEmptyResultsCallout && ( - <CustomEuiCallOut onDismiss={hideEmptyStateCallout} color={'success'}> - {WORKFLOW_INSIGHTS.issues.emptyResults} - </CustomEuiCallOut> - )} - </> - ); -}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx deleted file mode 100644 index b8c51e004fd33..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback, useMemo } from 'react'; -import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiPanel, EuiText } from '@elastic/eui'; -import { - AssistantAvatar, - DEFEND_INSIGHTS_STORAGE_KEY, - ConnectorSelectorInline, - DEFAULT_ASSISTANT_NAMESPACE, - useLoadConnectors, -} from '@kbn/elastic-assistant'; -import { noop } from 'lodash/fp'; -import useLocalStorage from 'react-use/lib/useLocalStorage'; -import { some } from 'lodash'; -import { useSpaceId } from '../../../../../../../common/hooks/use_space_id'; -import { WORKFLOW_INSIGHTS } from '../../../translations'; -import { useKibana } from '../../../../../../../common/lib/kibana'; - -export const WorkflowInsightsScanSection = () => { - const CONNECTOR_ID_LOCAL_STORAGE_KEY = 'connectorId'; - - const spaceId = useSpaceId() ?? 'default'; - const { http } = useKibana().services; - const { data: aiConnectors } = useLoadConnectors({ - http, - }); - - // Store the selected connector id in local storage so that it persists across page reloads - const [localStorageWorkflowInsightsConnectorId, setLocalStorageWorkflowInsightsConnectorId] = - useLocalStorage<string>( - `${DEFAULT_ASSISTANT_NAMESPACE}.${DEFEND_INSIGHTS_STORAGE_KEY}.${spaceId}.${CONNECTOR_ID_LOCAL_STORAGE_KEY}` - ); - - const [connectorId, setConnectorId] = React.useState<string | undefined>( - localStorageWorkflowInsightsConnectorId - ); - - const onConnectorIdSelected = useCallback( - (selectedConnectorId: string) => { - setConnectorId(selectedConnectorId); - setLocalStorageWorkflowInsightsConnectorId(selectedConnectorId); - }, - [setLocalStorageWorkflowInsightsConnectorId] - ); - - // Check if the selected connector exists in the list of connectors, i.e. it is not deleted - const connectorExists = useMemo( - () => some(aiConnectors, ['id', connectorId]), - [aiConnectors, connectorId] - ); - - // Render the scan button only if a connector is selected - const renderScanButton = useMemo(() => { - if (!connectorExists) { - return null; - } - return ( - <EuiFlexItem grow={false}> - <EuiButton size="s">{WORKFLOW_INSIGHTS.scan.button}</EuiButton> - </EuiFlexItem> - ); - }, [connectorExists]); - - return ( - <EuiPanel paddingSize="m" hasShadow={false} hasBorder> - <EuiFlexGroup justifyContent="spaceBetween" alignItems="center" gutterSize="m"> - <EuiFlexItem grow={false}> - <EuiFlexGroup alignItems="center" gutterSize="s"> - <EuiFlexItem grow={false}> - <AssistantAvatar size={'xs'} /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiText size="s"> - <h4>{WORKFLOW_INSIGHTS.scan.title}</h4> - </EuiText> - </EuiFlexItem> - </EuiFlexGroup> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiFlexGroup alignItems="center" gutterSize="s"> - <EuiFlexItem grow={false}> - <ConnectorSelectorInline - onConnectorSelected={noop} - onConnectorIdSelected={onConnectorIdSelected} - selectedConnectorId={connectorId} - /> - </EuiFlexItem> - {renderScanButton} - </EuiFlexGroup> - </EuiFlexItem> - </EuiFlexGroup> - </EuiPanel> - ); -}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts deleted file mode 100644 index e06280852c244..0000000000000 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const OVERVIEW = i18n.translate('xpack.securitySolution.endpointDetails.overview', { - defaultMessage: 'Overview', -}); - -export const WORKFLOW_INSIGHTS = { - title: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.sectionTitle', { - defaultMessage: 'Issues', - }), - titleRight: i18n.translate( - 'xpack.securitySolution.endpointDetails.workflowInsights.extraAction', - { - defaultMessage: 'Last scans: ', - } - ), - scan: { - title: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.scan.title', { - defaultMessage: 'AI-Powered issue scan', - }), - button: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.scan.button', { - defaultMessage: 'Scan', - }), - }, - issues: { - title: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.issues.title', { - defaultMessage: 'Issues', - }), - emptyResults: i18n.translate( - 'xpack.securitySolution.endpointDetails.workflowInsights.issues.emptyResults', - { - defaultMessage: 'No issues had been found', - } - ), - }, -}; - -export const ACTIVITY_LOG = { - tabTitle: i18n.translate('xpack.securitySolution.endpointDetails.responseActionsHistory', { - defaultMessage: 'Response actions history', - }), - LogEntry: { - endOfLog: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.endOfLog', - { - defaultMessage: 'Nothing more to show', - } - ), - dateRangeMessage: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.dateRangeMessage.title', - { - defaultMessage: - 'Nothing to show for selected date range, please select another and try again.', - } - ), - emptyState: { - title: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.emptyState.title', - { - defaultMessage: 'No logged actions', - } - ), - body: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.emptyState.body', - { - defaultMessage: 'No actions have been logged for this endpoint.', - } - ), - }, - action: { - isolatedAction: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.isolated', - { - defaultMessage: 'submitted request: Isolate host', - } - ), - unisolatedAction: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.unisolated', - { - defaultMessage: 'submitted request: Release host', - } - ), - failedEndpointReleaseAction: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.failedEndpointReleaseAction', - { - defaultMessage: 'failed to submit request: Release host', - } - ), - failedEndpointIsolateAction: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.failedEndpointIsolateAction', - { - defaultMessage: 'failed to submit request: Isolate host', - } - ), - }, - response: { - isolationCompletedAndSuccessful: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.isolationCompletedAndSuccessful', - { - defaultMessage: 'Host isolation request completed by Endpoint', - } - ), - isolationCompletedAndUnsuccessful: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.isolationCompletedAndUnsuccessful', - { - defaultMessage: 'Host isolation request completed by Endpoint with errors', - } - ), - unisolationCompletedAndSuccessful: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.unisolationCompletedAndSuccessful', - { - defaultMessage: 'Release request completed by Endpoint', - } - ), - unisolationCompletedAndUnsuccessful: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.unisolationCompletedAndUnsuccessful', - { - defaultMessage: 'Release request completed by Endpoint with errors', - } - ), - isolationSuccessful: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.isolationSuccessful', - { - defaultMessage: 'Host isolation request received by Endpoint', - } - ), - isolationFailed: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.isolationFailed', - { - defaultMessage: 'Host isolation request received by Endpoint with errors', - } - ), - unisolationSuccessful: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.unisolationSuccessful', - { - defaultMessage: 'Release host request received by Endpoint', - } - ), - unisolationFailed: i18n.translate( - 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.unisolationFailed', - { - defaultMessage: 'Release host request received by Endpoint with errors', - } - ), - }, - }, -}; diff --git a/x-pack/plugins/security_solution/public/management/reporter_config.json b/x-pack/plugins/security_solution/public/management/reporter_config.json deleted file mode 100644 index f697013786e26..0000000000000 --- a/x-pack/plugins/security_solution/public/management/reporter_config.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "reporterEnabled": "mochawesome, mocha-junit-reporter, buildkite-test-collector/mocha/reporter", - "buildkiteTestCollectorMochaReporterReporterOptions": { - "token_name": "BK_ANALYTICS_API_KEY", - "follow-symlinks": true, - "timeout": 120, - "upload-concurrency": 50 - }, - "reporterOptions": { - "html": false, - "json": true, - "mochaFile": "../../../target/kibana-security-solution/cypress/results/TEST-security-solution-cypress-[hash].xml", - "overwrite": false, - "reportDir": "../../../target/kibana-security-solution/cypress/results" - } -} diff --git a/x-pack/plugins/security_solution/public/notes/api/api.ts b/x-pack/plugins/security_solution/public/notes/api/api.ts deleted file mode 100644 index 5f380d0ae3044..0000000000000 --- a/x-pack/plugins/security_solution/public/notes/api/api.ts +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { - BareNote, - GetNotesResponse, - PersistNoteRouteResponse, -} from '../../../common/api/timeline'; -import type { AssociatedFilter } from '../../../common/notes/constants'; -import { KibanaServices } from '../../common/lib/kibana'; -import { NOTE_URL } from '../../../common/constants'; - -/** - * Adds a new note. - * This code is very close to the persistNote found in x-pack/plugins/security_solution/public/timelines/containers/notes/api.ts. - * // TODO remove the old method when the transition to the new notes system is complete - */ -export const createNote = async ({ note }: { note: BareNote }) => { - try { - const response = await KibanaServices.get().http.patch<PersistNoteRouteResponse>(NOTE_URL, { - method: 'PATCH', - body: JSON.stringify({ note }), - version: '2023-10-31', - }); - return response.note; - } catch (err) { - throw new Error(('message' in err && err.message) || 'Request failed'); - } -}; - -export const fetchNotes = async ({ - page, - perPage, - sortField, - sortOrder, - filter, - createdByFilter, - associatedFilter, - search, -}: { - page: number; - perPage: number; - sortField: string; - sortOrder: string; - filter: string; - createdByFilter: string; - associatedFilter: AssociatedFilter; - search: string; -}) => { - const response = await KibanaServices.get().http.get<GetNotesResponse>(NOTE_URL, { - query: { - page, - perPage, - sortField, - sortOrder, - filter, - createdByFilter, - associatedFilter, - search, - }, - version: '2023-10-31', - }); - return response; -}; - -/** - * Fetches all the notes for an array of document ids - */ -export const fetchNotesByDocumentIds = async (documentIds: string[]) => { - const response = await KibanaServices.get().http.get<GetNotesResponse>(NOTE_URL, { - query: { documentIds }, - version: '2023-10-31', - }); - return response; -}; - -/** - * Fetches all the notes for an array of saved object ids - */ -export const fetchNotesBySaveObjectIds = async (savedObjectIds: string[]) => { - const response = await KibanaServices.get().http.get<GetNotesResponse>(NOTE_URL, { - query: { savedObjectIds }, - version: '2023-10-31', - }); - return response; -}; - -/** - * Deletes multiple notes - */ -export const deleteNotes = async (noteIds: string[]) => { - const response = await KibanaServices.get().http.delete(NOTE_URL, { - body: JSON.stringify({ noteIds }), - version: '2023-10-31', - }); - return response; -}; diff --git a/x-pack/plugins/security_solution/public/notes/jest.config.js b/x-pack/plugins/security_solution/public/notes/jest.config.js deleted file mode 100644 index 7a19d2648f6be..0000000000000 --- a/x-pack/plugins/security_solution/public/notes/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/notes'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/notes', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/public/notes/**/*.{ts,tsx}'], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts b/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts deleted file mode 100644 index 41e65352d4bc3..0000000000000 --- a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { OnboardingCardCheckComplete } from '../../../../../types'; - -export const checkStartMigrationCardComplete: OnboardingCardCheckComplete = async ({ - siemMigrations, -}) => { - const migrationsStats = await siemMigrations.rules.getRuleMigrationsStats(); - const isComplete = migrationsStats.length > 0; - return isComplete; -}; diff --git a/x-pack/plugins/security_solution/public/onboarding/jest.config.js b/x-pack/plugins/security_solution/public/onboarding/jest.config.js deleted file mode 100644 index f5c05b19b495b..0000000000000 --- a/x-pack/plugins/security_solution/public/onboarding/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/onboarding'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/onboarding', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/onboarding/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/one_discover/jest.config.js b/x-pack/plugins/security_solution/public/one_discover/jest.config.js deleted file mode 100644 index 7e4552f72e98f..0000000000000 --- a/x-pack/plugins/security_solution/public/one_discover/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/one_discover'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/one_discover', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/one_discover/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/overview/jest.config.js b/x-pack/plugins/security_solution/public/overview/jest.config.js deleted file mode 100644 index 94874720385c3..0000000000000 --- a/x-pack/plugins/security_solution/public/overview/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/overview'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/overview', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/public/overview/**/*.{ts,tsx}'], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/resolver/jest.config.js b/x-pack/plugins/security_solution/public/resolver/jest.config.js deleted file mode 100644 index 641311b3c8cf2..0000000000000 --- a/x-pack/plugins/security_solution/public/resolver/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/resolver'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/resolver', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/public/resolver/**/*.{ts,tsx}'], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/security_integrations/jest.config.js b/x-pack/plugins/security_solution/public/security_integrations/jest.config.js deleted file mode 100644 index 030ad86fc80f1..0000000000000 --- a/x-pack/plugins/security_solution/public/security_integrations/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/security_integrations'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/security_integrations', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/security_integrations/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/jest.config.js b/x-pack/plugins/security_solution/public/siem_migrations/jest.config.js deleted file mode 100644 index fd313059456a1..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/siem_migrations'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/siem_migrations', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/siem_migrations/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/api/index.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/api/index.ts deleted file mode 100644 index 57fb5d0422093..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/api/index.ts +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { replaceParams } from '@kbn/openapi-common/shared'; - -import type { LangSmithOptions } from '../../../../common/siem_migrations/model/common.gen'; -import { KibanaServices } from '../../../common/lib/kibana'; - -import { - SIEM_RULE_MIGRATIONS_PATH, - SIEM_RULE_MIGRATIONS_ALL_STATS_PATH, - SIEM_RULE_MIGRATION_INSTALL_TRANSLATED_PATH, - SIEM_RULE_MIGRATION_INSTALL_PATH, - SIEM_RULE_MIGRATION_PATH, - SIEM_RULE_MIGRATION_START_PATH, - SIEM_RULE_MIGRATION_STATS_PATH, - SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH, - SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH, -} from '../../../../common/siem_migrations/constants'; -import type { - CreateRuleMigrationRequestBody, - CreateRuleMigrationResponse, - GetAllStatsRuleMigrationResponse, - GetRuleMigrationResponse, - GetRuleMigrationTranslationStatsResponse, - InstallTranslatedMigrationRulesResponse, - InstallMigrationRulesResponse, - StartRuleMigrationRequestBody, - GetRuleMigrationStatsResponse, - GetRuleMigrationPrebuiltRulesResponse, -} from '../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; - -export interface GetRuleMigrationStatsParams { - /** `id` of the migration to get stats for */ - migrationId: string; - /** Optional AbortSignal for cancelling request */ - signal?: AbortSignal; -} -/** Retrieves the stats for all the existing migrations, aggregated by `migration_id`. */ -export const getRuleMigrationStats = async ({ - migrationId, - signal, -}: GetRuleMigrationStatsParams): Promise<GetRuleMigrationStatsResponse> => { - return KibanaServices.get().http.get<GetRuleMigrationStatsResponse>( - replaceParams(SIEM_RULE_MIGRATION_STATS_PATH, { migration_id: migrationId }), - { version: '1', signal } - ); -}; - -export interface GetRuleMigrationsStatsAllParams { - /** Optional AbortSignal for cancelling request */ - signal?: AbortSignal; -} -/** Retrieves the stats for all the existing migrations, aggregated by `migration_id`. */ -export const getRuleMigrationsStatsAll = async ({ - signal, -}: GetRuleMigrationsStatsAllParams = {}): Promise<GetAllStatsRuleMigrationResponse> => { - return KibanaServices.get().http.get<GetAllStatsRuleMigrationResponse>( - SIEM_RULE_MIGRATIONS_ALL_STATS_PATH, - { version: '1', signal } - ); -}; - -export interface CreateRuleMigrationParams { - /** Optional `id` of migration to add the rules to. - * The id is necessary only for batching the migration creation in multiple requests */ - migrationId?: string; - /** The body containing the `connectorId` to use for the migration */ - body: CreateRuleMigrationRequestBody; - /** Optional AbortSignal for cancelling request */ - signal?: AbortSignal; -} -/** Starts a new migration with the provided rules. */ -export const createRuleMigration = async ({ - migrationId, - body, - signal, -}: CreateRuleMigrationParams): Promise<CreateRuleMigrationResponse> => { - return KibanaServices.get().http.post<CreateRuleMigrationResponse>( - `${SIEM_RULE_MIGRATIONS_PATH}${migrationId ? `/${migrationId}` : ''}`, - { body: JSON.stringify(body), version: '1', signal } - ); -}; - -export interface StartRuleMigrationParams { - /** `id` of the migration to start */ - migrationId: string; - /** The connector id to use for the migration */ - connectorId: string; - /** Optional LangSmithOptions to use for the for the migration */ - langSmithOptions?: LangSmithOptions; - /** Optional AbortSignal for cancelling request */ - signal?: AbortSignal; -} -/** Starts a new migration with the provided rules. */ -export const startRuleMigration = async ({ - migrationId, - connectorId, - langSmithOptions, - signal, -}: StartRuleMigrationParams): Promise<GetAllStatsRuleMigrationResponse> => { - const body: StartRuleMigrationRequestBody = { connector_id: connectorId }; - if (langSmithOptions) { - body.langsmith_options = langSmithOptions; - } - return KibanaServices.get().http.put<GetAllStatsRuleMigrationResponse>( - replaceParams(SIEM_RULE_MIGRATION_START_PATH, { migration_id: migrationId }), - { body: JSON.stringify(body), version: '1', signal } - ); -}; - -export interface GetRuleMigrationParams { - /** `id` of the migration to get rules documents for */ - migrationId: string; - /** Optional page number to retrieve */ - page?: number; - /** Optional number of documents per page to retrieve */ - perPage?: number; - /** Optional field of the rule migration object to sort results by */ - sortField?: string; - /** Optional direction to sort results by */ - sortDirection?: 'asc' | 'desc'; - /** Optional search term to filter documents */ - searchTerm?: string; - /** Optional AbortSignal for cancelling request */ - signal?: AbortSignal; -} -/** Retrieves all the migration rule documents of a specific migration. */ -export const getRuleMigrations = async ({ - migrationId, - page, - perPage, - sortField, - sortDirection, - searchTerm, - signal, -}: GetRuleMigrationParams): Promise<GetRuleMigrationResponse> => { - return KibanaServices.get().http.get<GetRuleMigrationResponse>( - replaceParams(SIEM_RULE_MIGRATION_PATH, { migration_id: migrationId }), - { - version: '1', - query: { - page, - per_page: perPage, - sort_field: sortField, - sort_direction: sortDirection, - search_term: searchTerm, - }, - signal, - } - ); -}; - -export interface GetRuleMigrationTranslationStatsParams { - /** `id` of the migration to get translation stats for */ - migrationId: string; - /** Optional AbortSignal for cancelling request */ - signal?: AbortSignal; -} -/** - * Retrieves the translation stats for the migration. - */ -export const getRuleMigrationTranslationStats = async ({ - migrationId, - signal, -}: GetRuleMigrationTranslationStatsParams): Promise<GetRuleMigrationTranslationStatsResponse> => { - return KibanaServices.get().http.get<GetRuleMigrationTranslationStatsResponse>( - replaceParams(SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH, { migration_id: migrationId }), - { version: '1', signal } - ); -}; - -export interface InstallRulesParams { - /** `id` of the migration to install rules for */ - migrationId: string; - /** The rule ids to install */ - ids: string[]; - /** Optional indicator to enable the installed rule */ - enabled?: boolean; - /** Optional AbortSignal for cancelling request */ - signal?: AbortSignal; -} -/** Installs the provided rule ids for a specific migration. */ -export const installMigrationRules = async ({ - migrationId, - ids, - enabled, - signal, -}: InstallRulesParams): Promise<InstallMigrationRulesResponse> => { - return KibanaServices.get().http.post<InstallMigrationRulesResponse>( - replaceParams(SIEM_RULE_MIGRATION_INSTALL_PATH, { migration_id: migrationId }), - { version: '1', body: JSON.stringify({ ids, enabled }), signal } - ); -}; - -export interface InstallTranslatedRulesParams { - /** `id` of the migration to install rules for */ - migrationId: string; - /** Optional AbortSignal for cancelling request */ - signal?: AbortSignal; -} -/** Installs all the translated rules for a specific migration. */ -export const installTranslatedMigrationRules = async ({ - migrationId, - signal, -}: InstallTranslatedRulesParams): Promise<InstallTranslatedMigrationRulesResponse> => { - return KibanaServices.get().http.post<InstallTranslatedMigrationRulesResponse>( - replaceParams(SIEM_RULE_MIGRATION_INSTALL_TRANSLATED_PATH, { migration_id: migrationId }), - { version: '1', signal } - ); -}; - -export interface GetRuleMigrationsPrebuiltRulesParams { - /** `id` of the migration to install rules for */ - migrationId: string; - /** Optional AbortSignal for cancelling request */ - signal?: AbortSignal; -} -/** Retrieves all prebuilt rules matched within a specific migration. */ -export const getRuleMigrationsPrebuiltRules = async ({ - migrationId, - signal, -}: GetRuleMigrationsPrebuiltRulesParams): Promise<GetRuleMigrationPrebuiltRulesResponse> => { - return KibanaServices.get().http.get<GetRuleMigrationPrebuiltRulesResponse>( - replaceParams(SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH, { migration_id: migrationId }), - { version: '1', signal } - ); -}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts deleted file mode 100644 index aa331bf17c832..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export enum DataInputStep { - rules = 'rules', - macros = 'macros', - lookups = 'lookups', -} - -export const SPL_RULES_COLUMNS = [ - 'id', - 'title', - 'search', - 'description', - 'action.escu.eli5', - 'action.correlationsearch.annotations', -] as const; - -export const RULES_SPLUNK_QUERY = `| rest /servicesNS/-/-/saved/searches -| search action.correlationsearch.enabled = "1" OR (eai:acl.app = "Splunk_Security_Essentials" AND is_scheduled=1) -| where disabled=0 -| table ${SPL_RULES_COLUMNS.join(', ')}`; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx deleted file mode 100644 index 6a4916a5e54b3..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback, useState } from 'react'; -import { - EuiFlyoutResizable, - EuiFlyoutHeader, - EuiTitle, - EuiFlyoutBody, - EuiFlyoutFooter, - EuiFlexGroup, - EuiFlexItem, - EuiButton, -} from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n-react'; -import type { RuleMigrationTaskStats } from '../../../../../common/siem_migrations/model/rule_migration.gen'; -import { DataInputStep } from './constants'; -import { RulesDataInput } from './steps/rules/rules_data_input'; -import { useStartMigration } from '../../service/hooks/use_start_migration'; - -export interface MigrationDataInputFlyoutProps { - onClose: () => void; - migrationStats?: RuleMigrationTaskStats; -} -export const MigrationDataInputFlyout = React.memo<MigrationDataInputFlyoutProps>( - ({ onClose, migrationStats: initialMigrationSats }) => { - const [migrationStats, setMigrationStats] = useState<RuleMigrationTaskStats | undefined>( - initialMigrationSats - ); - - const { startMigration, isLoading: isStartLoading } = useStartMigration(onClose); - const onStartMigration = useCallback(() => { - if (migrationStats?.id) { - startMigration(migrationStats.id); - } - }, [migrationStats, startMigration]); - - const [dataInputStep, setDataInputStep] = useState<DataInputStep>(() => { - if (migrationStats) { - return DataInputStep.macros; - } - return DataInputStep.rules; - }); - - const onMigrationCreated = useCallback( - (createdMigrationStats: RuleMigrationTaskStats) => { - if (createdMigrationStats) { - setMigrationStats(createdMigrationStats); - setDataInputStep(DataInputStep.macros); - } - }, - [setDataInputStep] - ); - - return ( - <EuiFlyoutResizable - onClose={onClose} - size="m" - maxWidth={1200} - minWidth={500} - data-test-subj="uploadRulesFlyout" - > - <EuiFlyoutHeader hasBorder> - <EuiTitle size="m"> - <h2> - <FormattedMessage - id="xpack.securitySolution.siemMigrations.rules.dataInputFlyout.title" - defaultMessage="Upload Splunk SIEM rules" - /> - </h2> - </EuiTitle> - </EuiFlyoutHeader> - <EuiFlyoutBody> - <RulesDataInput - selected={dataInputStep === DataInputStep.rules} - onMigrationCreated={onMigrationCreated} - /> - </EuiFlyoutBody> - <EuiFlyoutFooter> - <EuiFlexGroup justifyContent="spaceBetween"> - <EuiFlexItem grow={false}> - <EuiButton fill onClick={onClose}> - <FormattedMessage - id="xpack.securitySolution.siemMigrations.rules.dataInputFlyout.closeButton" - defaultMessage="Close" - /> - </EuiButton> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiButton - fill - onClick={onStartMigration} - disabled={!migrationStats?.id} - isLoading={isStartLoading} - > - <FormattedMessage - id="xpack.securitySolution.siemMigrations.rules.dataInputFlyout.translateButton" - defaultMessage="Translate" - /> - </EuiButton> - </EuiFlexItem> - </EuiFlexGroup> - </EuiFlyoutFooter> - </EuiFlyoutResizable> - ); - } -); -MigrationDataInputFlyout.displayName = 'MigrationDataInputFlyout'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx deleted file mode 100644 index 2b20dcda0cea7..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { EuiStepProps, EuiStepStatus } from '@elastic/eui'; -import { - EuiFlexGroup, - EuiFlexItem, - EuiPanel, - EuiStepNumber, - EuiSteps, - EuiTitle, -} from '@elastic/eui'; -import React, { useMemo, useState } from 'react'; -import { SubStepWrapper } from '../common/sub_step_wrapper'; -import type { OnMigrationCreated } from '../../types'; -import { useCopyExportQueryStep } from './sub_steps/copy_export_query'; -import { useRulesFileUploadStep } from './sub_steps/rules_file_upload'; -import * as i18n from './translations'; -import { useCheckResourcesStep } from './sub_steps/check_resources'; - -type Step = 1 | 2 | 3 | 4; -const getStatus = (step: Step, currentStep: Step): EuiStepStatus => { - if (step === currentStep) { - return 'current'; - } - if (step < currentStep) { - return 'complete'; - } - return 'incomplete'; -}; - -interface RulesDataInputProps { - selected: boolean; - onMigrationCreated: OnMigrationCreated; -} - -export const RulesDataInput = React.memo<RulesDataInputProps>( - ({ selected, onMigrationCreated }) => { - const [step, setStep] = useState<Step>(1); - - const copyStep = useCopyExportQueryStep({ - status: getStatus(1, step), - onCopied: () => setStep(2), - }); - - const uploadStep = useRulesFileUploadStep({ - status: getStatus(2, step), - onMigrationCreated: (stats) => { - onMigrationCreated(stats); - setStep(3); - }, - }); - - const resourcesStep = useCheckResourcesStep({ - status: getStatus(3, step), - onComplete: () => { - setStep(4); - }, - }); - - const steps = useMemo<EuiStepProps[]>( - () => [copyStep, uploadStep, resourcesStep], - [copyStep, uploadStep, resourcesStep] - ); - - return ( - <EuiPanel hasShadow={false} hasBorder> - <EuiFlexGroup direction="column"> - <EuiFlexItem> - <EuiFlexGroup direction="row" justifyContent="center" gutterSize="m"> - <EuiFlexItem grow={false}> - <EuiStepNumber number={1} titleSize="xs" /> - </EuiFlexItem> - <EuiFlexItem> - <EuiTitle size="xs"> - <b>{i18n.RULES_DATA_INPUT_TITLE}</b> - </EuiTitle> - </EuiFlexItem> - </EuiFlexGroup> - </EuiFlexItem> - <EuiFlexItem> - <SubStepWrapper> - <EuiSteps titleSize="xxs" steps={steps} /> - </SubStepWrapper> - </EuiFlexItem> - </EuiFlexGroup> - </EuiPanel> - ); - } -); -RulesDataInput.displayName = 'RulesDataInput'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx deleted file mode 100644 index 3b081eb203267..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { EuiText, type EuiStepProps, type EuiStepStatus } from '@elastic/eui'; -import * as i18n from './translations'; - -export interface CheckResourcesStepProps { - status: EuiStepStatus; - onComplete: () => void; -} -export const useCheckResourcesStep = ({ - status, - onComplete, -}: CheckResourcesStepProps): EuiStepProps => { - // onComplete(); // TODO: check the resources - return { - title: i18n.RULES_DATA_INPUT_CHECK_RESOURCES_TITLE, - status, - children: ( - <EuiText size="xs" color="subdued"> - {i18n.RULES_DATA_INPUT_CHECK_RESOURCES_DESCRIPTION} - </EuiText> - ), - }; -}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts deleted file mode 100644 index d76eb71f2e378..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const RULES_DATA_INPUT_COPY_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.copyExportQuery.title', - { defaultMessage: 'Copy and export query' } -); - -export const RULES_DATA_INPUT_COPY_DESCRIPTION_SECTION = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.copyExportQuery.description.section', - { defaultMessage: 'Search and Reporting' } -); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx deleted file mode 100644 index ab7838b28908b..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback, useMemo, useState } from 'react'; -import type { EuiStepProps, EuiStepStatus } from '@elastic/eui'; -import type { OnMigrationCreated } from '../../../../types'; -import { RulesFileUpload } from './rules_file_upload'; -import { - useCreateMigration, - type OnSuccess, -} from '../../../../../../service/hooks/use_create_migration'; -import * as i18n from './translations'; - -export interface RulesFileUploadStepProps { - status: EuiStepStatus; - onMigrationCreated: OnMigrationCreated; -} -export const useRulesFileUploadStep = ({ - status, - onMigrationCreated, -}: RulesFileUploadStepProps): EuiStepProps => { - const [isCreated, setIsCreated] = useState<boolean>(false); - const onSuccess = useCallback<OnSuccess>( - (stats) => { - setIsCreated(true); - onMigrationCreated(stats); - }, - [onMigrationCreated] - ); - const { createMigration, isLoading, error } = useCreateMigration(onSuccess); - - const uploadStepStatus = useMemo(() => { - if (isLoading) { - return 'loading'; - } - if (error) { - return 'danger'; - } - return status; - }, [isLoading, error, status]); - - return { - title: i18n.RULES_DATA_INPUT_FILE_UPLOAD_TITLE, - status: uploadStepStatus, - children: ( - <RulesFileUpload - createMigration={createMigration} - isLoading={isLoading} - isCreated={isCreated} - apiError={error?.message} - /> - ), - }; -}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/parse_rules_file.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/parse_rules_file.ts deleted file mode 100644 index 3d5dbb32ccde8..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/parse_rules_file.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { isPlainObject } from 'lodash/fp'; -import type { OriginalRule } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; -import type { SPL_RULES_COLUMNS } from '../../../../constants'; -import * as i18n from './translations'; - -type SplunkResult = Partial<Record<(typeof SPL_RULES_COLUMNS)[number], string>>; -interface SplunkRow { - result: SplunkResult; -} - -export const parseContent = (fileContent: string): OriginalRule[] => { - const trimmedContent = fileContent.trim(); - let arrayContent: SplunkRow[]; - if (trimmedContent.startsWith('[')) { - arrayContent = parseJSONArray(trimmedContent); - } else { - arrayContent = parseNDJSON(trimmedContent); - } - if (arrayContent.length === 0) { - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.EMPTY); - } - return arrayContent.map(convertFormat); -}; - -const parseNDJSON = (fileContent: string): SplunkRow[] => { - return fileContent - .split(/\n(?=\{)/) // split at newline followed by '{'. - .filter((entry) => entry.trim() !== '') // Remove empty entries. - .map(parseJSON); // Parse each entry as JSON. -}; - -const parseJSONArray = (fileContent: string): SplunkRow[] => { - const parsedContent = parseJSON(fileContent); - if (!Array.isArray(parsedContent)) { - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.NOT_ARRAY); - } - return parsedContent; -}; - -const parseJSON = (fileContent: string) => { - try { - return JSON.parse(fileContent); - } catch (error) { - if (error instanceof RangeError) { - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.TOO_LARGE_TO_PARSE); - } - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.CAN_NOT_PARSE); - } -}; - -const convertFormat = (row: SplunkRow): OriginalRule => { - if (!isPlainObject(row) || !isPlainObject(row.result)) { - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.NOT_OBJECT); - } - const originalRule: Partial<OriginalRule> = { - id: row.result.id, - vendor: 'splunk', - title: row.result.title, - query: row.result.search, - query_language: 'spl', - description: row.result['action.escu.eli5']?.trim() || row.result.description, - }; - - if (row.result['action.correlationsearch.annotations']) { - try { - originalRule.annotations = JSON.parse(row.result['action.correlationsearch.annotations']); - } catch (error) { - delete originalRule.annotations; - } - } - return originalRule as OriginalRule; -}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx deleted file mode 100644 index 0f9787a4ddf68..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useCallback, useMemo, useState } from 'react'; -import { EuiFilePicker, EuiFormRow, EuiText } from '@elastic/eui'; -import type { OriginalRule } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; -import type { CreateMigration } from '../../../../../../service/hooks/use_create_migration'; -import { parseContent } from './parse_rules_file'; -import * as i18n from './translations'; - -export interface RulesFileUploadProps { - createMigration: CreateMigration; - apiError?: string; - isLoading?: boolean; - isCreated?: boolean; -} -export const RulesFileUpload = React.memo<RulesFileUploadProps>( - ({ createMigration, apiError, isLoading, isCreated }) => { - const [isParsing, setIsParsing] = useState<boolean>(false); - const [fileError, setFileError] = useState<string>(); - - const onChangeFile = useCallback( - (files: FileList | null) => { - if (!files) { - return; - } - - setFileError(undefined); - - const rulesFile = files[0]; - const reader = new FileReader(); - - reader.onloadstart = () => setIsParsing(true); - reader.onloadend = () => setIsParsing(false); - - reader.onload = function (e) { - // We can safely cast to string since we call `readAsText` to load the file. - const fileContent = e.target?.result as string | undefined; - - if (fileContent == null) { - setFileError(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.CAN_NOT_READ); - return; - } - - if (fileContent === '' && e.loaded > 100000) { - // V8-based browsers can't handle large files and return an empty string - // instead of an error; see https://stackoverflow.com/a/61316641 - setFileError(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.TOO_LARGE_TO_PARSE); - return; - } - - let data: OriginalRule[]; - try { - data = parseContent(fileContent); - createMigration(data); - } catch (err) { - setFileError(err.message); - } - }; - - const handleReaderError = function () { - const message = reader.error?.message; - if (message) { - setFileError(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.CAN_NOT_READ_WITH_REASON(message)); - } else { - setFileError(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.CAN_NOT_READ); - } - }; - - reader.onerror = handleReaderError; - reader.onabort = handleReaderError; - - reader.readAsText(rulesFile); - }, - [createMigration] - ); - - const error = useMemo(() => { - if (apiError) { - return apiError; - } - return fileError; - }, [apiError, fileError]); - - return ( - <EuiFormRow - helpText={ - <EuiText color="danger" size="xs"> - {error} - </EuiText> - } - isInvalid={error != null} - fullWidth - > - <EuiFilePicker - id="rulesFilePicker" - fullWidth - initialPromptText={ - <> - <EuiText size="s" textAlign="center"> - {i18n.RULES_DATA_INPUT_FILE_UPLOAD_PROMPT} - </EuiText> - </> - } - accept="application/json" - onChange={onChangeFile} - display="large" - aria-label="Upload logs sample file" - isLoading={isParsing || isLoading} - disabled={isLoading || isCreated} - data-test-subj="rulesFilePicker" - data-loading={isParsing} - /> - </EuiFormRow> - ); - } -); -RulesFileUpload.displayName = 'RulesFileUpload'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts deleted file mode 100644 index 675eed61f4973..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const RULES_DATA_INPUT_FILE_UPLOAD_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.title', - { defaultMessage: 'Update your rule export' } -); -export const RULES_DATA_INPUT_FILE_UPLOAD_PROMPT = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.prompt', - { defaultMessage: 'Select or drag and drop the exported JSON file' } -); - -export const RULES_DATA_INPUT_FILE_UPLOAD_ERROR = { - CAN_NOT_READ: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.canNotRead', - { defaultMessage: 'Failed to read the rules export file' } - ), - CAN_NOT_READ_WITH_REASON: (reason: string) => - i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.canNotReadWithReason', - { - defaultMessage: 'An error occurred when reading rules export file: {reason}', - values: { reason }, - } - ), - CAN_NOT_PARSE: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.canNotParse', - { defaultMessage: 'Cannot parse the rules export file as either a JSON file' } - ), - TOO_LARGE_TO_PARSE: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.tooLargeToParse', - { defaultMessage: 'This rules export file is too large to parse' } - ), - NOT_ARRAY: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.notArray', - { defaultMessage: 'The rules export file is not an array' } - ), - EMPTY: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.empty', - { defaultMessage: 'The rules export file is empty' } - ), - NOT_OBJECT: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.notObject', - { defaultMessage: 'The rules export file contains non-object entries' } - ), - WRONG_FORMAT: (formatError: string) => { - return i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.wrongFormat', - { - defaultMessage: 'The rules export file has wrong format: {formatError}', - values: { formatError }, - } - ); - }, -}; - -export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.createSuccess', - { defaultMessage: 'Rules uploaded successfully' } -); -export const RULES_DATA_INPUT_CREATE_MIGRATION_ERROR = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.createError', - { defaultMessage: 'Failed to upload rules file' } -); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts deleted file mode 100644 index 16d8f60043bcb..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { RuleMigrationTaskStats } from '../../../../../common/siem_migrations/model/rule_migration.gen'; - -export type OnMigrationCreated = (migrationStats: RuleMigrationTaskStats) => void; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx deleted file mode 100644 index 9762cc578e0cc..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { FC, PropsWithChildren } from 'react'; -import React, { useMemo, useState, useEffect } from 'react'; -import { css } from '@emotion/css'; -import { euiThemeVars } from '@kbn/ui-theme'; -import { - EuiButtonEmpty, - EuiTitle, - EuiFlyout, - EuiFlyoutHeader, - EuiFlyoutBody, - EuiFlyoutFooter, - EuiTabbedContent, - EuiSpacer, - EuiFlexGroup, - EuiFlexItem, - useGeneratedHtmlId, -} from '@elastic/eui'; -import type { EuiTabbedContentTab, EuiTabbedContentProps, EuiFlyoutProps } from '@elastic/eui'; - -import type { RuleMigration } from '../../../../../common/siem_migrations/model/rule_migration.gen'; -import { - RuleOverviewTab, - useOverviewTabSections, -} from '../../../../detection_engine/rule_management/components/rule_details/rule_overview_tab'; -import type { RuleResponse } from '../../../../../common/api/detection_engine/model/rule_schema'; - -import * as i18n from './translations'; -import { - DEFAULT_DESCRIPTION_LIST_COLUMN_WIDTHS, - LARGE_DESCRIPTION_LIST_COLUMN_WIDTHS, -} from './constants'; -import { TranslationTab } from './translation_tab'; -import { - convertMigrationCustomRuleToSecurityRulePayload, - isMigrationCustomRule, -} from '../../../../../common/siem_migrations/rules/utils'; - -/* - * Fixes tabs to the top and allows the content to scroll. - */ -const ScrollableFlyoutTabbedContent = (props: EuiTabbedContentProps) => ( - <EuiFlexGroup direction="column" gutterSize="none"> - <EuiFlexItem grow={true}> - <EuiTabbedContent {...props} /> - </EuiFlexItem> - </EuiFlexGroup> -); - -const tabPaddingClassName = css` - padding: 0 ${euiThemeVars.euiSizeM} ${euiThemeVars.euiSizeXL} ${euiThemeVars.euiSizeM}; -`; - -export const TabContentPadding: FC<PropsWithChildren<unknown>> = ({ children }) => ( - <div className={tabPaddingClassName}>{children}</div> -); - -interface MigrationRuleDetailsFlyoutProps { - ruleActions?: React.ReactNode; - ruleMigration: RuleMigration; - matchedPrebuiltRule?: RuleResponse; - size?: EuiFlyoutProps['size']; - extraTabs?: EuiTabbedContentTab[]; - closeFlyout: () => void; -} - -export const MigrationRuleDetailsFlyout: React.FC<MigrationRuleDetailsFlyoutProps> = React.memo( - ({ - ruleActions, - ruleMigration, - matchedPrebuiltRule, - size = 'm', - extraTabs = [], - closeFlyout, - }: MigrationRuleDetailsFlyoutProps) => { - const { expandedOverviewSections, toggleOverviewSection } = useOverviewTabSections(); - - const rule = useMemo(() => { - if (isMigrationCustomRule(ruleMigration.elastic_rule)) { - return convertMigrationCustomRuleToSecurityRulePayload( - ruleMigration.elastic_rule, - false - ) as RuleResponse; // TODO: we need to adjust RuleOverviewTab to allow partial RuleResponse as a parameter; - } - return matchedPrebuiltRule; - }, [matchedPrebuiltRule, ruleMigration]); - - const translationTab: EuiTabbedContentTab = useMemo( - () => ({ - id: 'translation', - name: i18n.TRANSLATION_TAB_LABEL, - content: ( - <TabContentPadding> - <TranslationTab - ruleMigration={ruleMigration} - matchedPrebuiltRule={matchedPrebuiltRule} - /> - </TabContentPadding> - ), - }), - [matchedPrebuiltRule, ruleMigration] - ); - - const overviewTab: EuiTabbedContentTab = useMemo( - () => ({ - id: 'overview', - name: i18n.OVERVIEW_TAB_LABEL, - content: ( - <TabContentPadding> - {rule && ( - <RuleOverviewTab - rule={rule} - columnWidths={ - size === 'l' - ? LARGE_DESCRIPTION_LIST_COLUMN_WIDTHS - : DEFAULT_DESCRIPTION_LIST_COLUMN_WIDTHS - } - expandedOverviewSections={expandedOverviewSections} - toggleOverviewSection={toggleOverviewSection} - /> - )} - </TabContentPadding> - ), - }), - [rule, size, expandedOverviewSections, toggleOverviewSection] - ); - - const tabs = useMemo(() => { - return [...extraTabs, translationTab, overviewTab]; - }, [extraTabs, translationTab, overviewTab]); - - const [selectedTabId, setSelectedTabId] = useState<string>(tabs[0].id); - const selectedTab = tabs.find((tab) => tab.id === selectedTabId) ?? tabs[0]; - - useEffect(() => { - if (!tabs.find((tab) => tab.id === selectedTabId)) { - // Switch to first tab if currently selected tab is not available for this rule - setSelectedTabId(tabs[0].id); - } - }, [tabs, selectedTabId]); - - const onTabClick = (tab: EuiTabbedContentTab) => { - setSelectedTabId(tab.id); - }; - - const migrationsRulesFlyoutTitleId = useGeneratedHtmlId({ - prefix: 'migrationRulesFlyoutTitle', - }); - - return ( - <EuiFlyout - size={size} - onClose={closeFlyout} - key="migrations-rules-flyout" - paddingSize="l" - data-test-subj="ruleMigrationDetailsFlyout" - aria-labelledby={migrationsRulesFlyoutTitleId} - ownFocus - > - <EuiFlyoutHeader> - <EuiTitle size="m"> - <h2 id={migrationsRulesFlyoutTitleId}> - {rule?.name ?? ruleMigration.original_rule.title} - </h2> - </EuiTitle> - <EuiSpacer size="l" /> - </EuiFlyoutHeader> - <EuiFlyoutBody> - <ScrollableFlyoutTabbedContent - tabs={tabs} - selectedTab={selectedTab} - onTabClick={onTabClick} - /> - </EuiFlyoutBody> - <EuiFlyoutFooter> - <EuiFlexGroup justifyContent="spaceBetween"> - <EuiFlexItem grow={false}> - <EuiButtonEmpty onClick={closeFlyout} flush="left"> - {i18n.DISMISS_BUTTON_LABEL} - </EuiButtonEmpty> - </EuiFlexItem> - <EuiFlexItem grow={false}>{ruleActions}</EuiFlexItem> - </EuiFlexGroup> - </EuiFlyoutFooter> - </EuiFlyout> - ); - } -); -MigrationRuleDetailsFlyout.displayName = 'MigrationRuleDetailsFlyout'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/index.tsx deleted file mode 100644 index a80480b8837bb..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/index.tsx +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useMemo } from 'react'; -import { - EuiAccordion, - EuiBadge, - EuiFieldText, - EuiFlexGroup, - EuiFlexItem, - EuiFormRow, - EuiSpacer, - EuiSplitPanel, - EuiTitle, - useEuiTheme, -} from '@elastic/eui'; -import { css } from '@emotion/css'; -import { FormattedMessage } from '@kbn/i18n-react'; -import type { RuleResponse } from '../../../../../../common/api/detection_engine'; -import type { RuleMigration } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; -import { TranslationTabHeader } from './header'; -import { MigrationRuleQuery } from './migration_rule_query'; -import * as i18n from './translations'; -import { - convertTranslationResultIntoColor, - convertTranslationResultIntoText, -} from '../../../utils/helpers'; - -interface TranslationTabProps { - ruleMigration: RuleMigration; - matchedPrebuiltRule?: RuleResponse; -} - -export const TranslationTab: React.FC<TranslationTabProps> = React.memo( - ({ ruleMigration, matchedPrebuiltRule }) => { - const { euiTheme } = useEuiTheme(); - - const name = useMemo( - () => ruleMigration.elastic_rule?.title ?? ruleMigration.original_rule.title, - [ruleMigration.elastic_rule?.title, ruleMigration.original_rule.title] - ); - const originalQuery = ruleMigration.original_rule.query; - const elasticQuery = useMemo(() => { - let query = ruleMigration.elastic_rule?.query; - if (matchedPrebuiltRule && matchedPrebuiltRule.type !== 'machine_learning') { - query = matchedPrebuiltRule.query; - } - return query ?? ''; - }, [matchedPrebuiltRule, ruleMigration.elastic_rule?.query]); - - return ( - <> - <EuiSpacer size="m" /> - <EuiFormRow label={i18n.NAME_LABEL} fullWidth> - <EuiFieldText value={name} fullWidth /> - </EuiFormRow> - <EuiSpacer size="m" /> - <EuiAccordion - id="translationQueryItem" - buttonContent={<TranslationTabHeader />} - initialIsOpen={true} - > - <EuiFlexItem> - <EuiSpacer size="s" /> - <EuiSplitPanel.Outer grow hasShadow={false} hasBorder={true}> - <EuiSplitPanel.Inner grow={false} color="subdued" paddingSize="s"> - <EuiFlexGroup justifyContent="flexEnd"> - <EuiFlexItem grow={false}> - <EuiTitle size="xxs"> - <h2> - <FormattedMessage - id="xpack.securitySolution.detectionEngine.translationDetails.translationTab.statusTitle" - defaultMessage="Translation status" - /> - </h2> - </EuiTitle> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiBadge - color={convertTranslationResultIntoColor(ruleMigration.translation_result)} - onClick={() => {}} - onClickAriaLabel={'Click to update translation status'} - > - {convertTranslationResultIntoText(ruleMigration.translation_result)} - </EuiBadge> - </EuiFlexItem> - </EuiFlexGroup> - </EuiSplitPanel.Inner> - <EuiSplitPanel.Inner grow> - <EuiFlexGroup gutterSize="s" alignItems="flexStart"> - <EuiFlexItem grow={1}> - <MigrationRuleQuery - title={i18n.SPLUNK_QUERY_TITLE} - query={originalQuery} - canEdit={false} - /> - </EuiFlexItem> - <EuiFlexItem - grow={0} - css={css` - align-self: stretch; - border-right: ${euiTheme.border.thin}; - `} - /> - <EuiFlexItem grow={1}> - <MigrationRuleQuery - title={ - matchedPrebuiltRule - ? i18n.PREBUILT_RULE_QUERY_TITLE - : i18n.ESQL_TRANSLATION_TITLE - } - query={elasticQuery} - canEdit={false} - /> - </EuiFlexItem> - </EuiFlexGroup> - </EuiSplitPanel.Inner> - </EuiSplitPanel.Outer> - </EuiFlexItem> - </EuiAccordion> - </> - ); - } -); -TranslationTab.displayName = 'TranslationTab'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/migration_rule_query.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/migration_rule_query.tsx deleted file mode 100644 index 534f765da97bc..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/migration_rule_query.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useMemo } from 'react'; -import { - EuiFlexGroup, - EuiFlexItem, - EuiHorizontalRule, - EuiMarkdownEditor, - EuiMarkdownFormat, - EuiTitle, - useEuiTheme, -} from '@elastic/eui'; -import { css } from '@emotion/react'; -import * as i18n from './translations'; - -interface MigrationRuleQueryProps { - title: string; - query: string; - canEdit?: boolean; -} - -export const MigrationRuleQuery: React.FC<MigrationRuleQueryProps> = React.memo( - ({ title, query, canEdit }) => { - const { euiTheme } = useEuiTheme(); - - const headerComponent = useMemo(() => { - return ( - <EuiFlexGroup - alignItems="center" - css={css` - height: ${euiTheme.size.xxl}; - `} - > - <EuiFlexItem> - <EuiTitle size="xxs"> - <h3>{title}</h3> - </EuiTitle> - </EuiFlexItem> - </EuiFlexGroup> - ); - }, [euiTheme, title]); - - const queryTextComponent = useMemo(() => { - if (canEdit) { - return ( - <EuiMarkdownEditor - aria-label={i18n.TRANSLATED_QUERY_AREAL_LABEL} - value={query} - onChange={() => {}} - height={400} - initialViewMode={'viewing'} - /> - ); - } else { - return <EuiMarkdownFormat>{query}</EuiMarkdownFormat>; - } - }, [canEdit, query]); - - return ( - <> - {headerComponent} - <EuiHorizontalRule margin="s" /> - {queryTextComponent} - </> - ); - } -); -MigrationRuleQuery.displayName = 'MigrationRuleQuery'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/translations.ts deleted file mode 100644 index 1592a80d32478..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/translations.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const TAB_HEADER_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.title', - { - defaultMessage: 'Translation', - } -); - -export const NAME_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.nameLabel', - { - defaultMessage: 'Name', - } -); - -export const SPLUNK_QUERY_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.splunkQueryTitle', - { - defaultMessage: 'Splunk query', - } -); - -export const PREBUILT_RULE_QUERY_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.prebuiltRuleQueryTitle', - { - defaultMessage: 'Prebuilt rule query', - } -); - -export const ESQL_TRANSLATION_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.esqlTranslationTitle', - { - defaultMessage: 'ES|QL translation', - } -); - -export const TRANSLATED_QUERY_AREAL_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.queryArealLabel', - { - defaultMessage: 'Translated query', - } -); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts deleted file mode 100644 index 8e6582b8c198e..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const OVERVIEW_TAB_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.overviewTabLabel', - { - defaultMessage: 'Overview', - } -); - -export const TRANSLATION_TAB_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTabLabel', - { - defaultMessage: 'Translation', - } -); - -export const DISMISS_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.dismissButtonLabel', - { - defaultMessage: 'Dismiss', - } -); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx deleted file mode 100644 index 106e7ba514d3f..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { CriteriaWithPagination, EuiTableSelectionType } from '@elastic/eui'; -import { - EuiSkeletonLoading, - EuiSkeletonTitle, - EuiSkeletonText, - EuiFlexGroup, - EuiFlexItem, - EuiSpacer, - EuiBasicTable, - EuiButton, -} from '@elastic/eui'; -import React, { useCallback, useMemo, useState } from 'react'; - -import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; -import type { RuleMigration } from '../../../../../common/siem_migrations/model/rule_migration.gen'; -import { EmptyMigration } from './empty_migration'; -import { useMigrationRulesTableColumns } from '../../hooks/use_migration_rules_table_columns'; -import { useMigrationRuleDetailsFlyout } from '../../hooks/use_migration_rule_preview_flyout'; -import { useInstallMigrationRules } from '../../logic/use_install_migration_rules'; -import { useGetMigrationRules } from '../../logic/use_get_migration_rules'; -import { useInstallTranslatedMigrationRules } from '../../logic/use_install_translated_migration_rules'; -import { useGetMigrationTranslationStats } from '../../logic/use_get_migration_translation_stats'; -import { useGetMigrationPrebuiltRules } from '../../logic/use_get_migration_prebuilt_rules'; -import * as logicI18n from '../../logic/translations'; -import { BulkActions } from './bulk_actions'; -import { SearchField } from './search_field'; -import { SiemMigrationRuleTranslationResult } from '../../../../../common/siem_migrations/constants'; -import * as i18n from './translations'; - -const DEFAULT_PAGE_SIZE = 10; -const DEFAULT_SORT_FIELD = 'translation_result'; -const DEFAULT_SORT_DIRECTION = 'desc'; - -export interface MigrationRulesTableProps { - /** - * Selected rule migration id - */ - migrationId: string; -} - -/** - * Table Component for displaying SIEM rules migrations - */ -export const MigrationRulesTable: React.FC<MigrationRulesTableProps> = React.memo( - ({ migrationId }) => { - const { addError } = useAppToasts(); - - const [pageIndex, setPageIndex] = useState(0); - const [pageSize, setPageSize] = useState(DEFAULT_PAGE_SIZE); - const [sortField, setSortField] = useState<keyof RuleMigration>(DEFAULT_SORT_FIELD); - const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>(DEFAULT_SORT_DIRECTION); - const [searchTerm, setSearchTerm] = useState<string | undefined>(); - - const { data: translationStats, isLoading: isStatsLoading } = - useGetMigrationTranslationStats(migrationId); - - const { data: prebuiltRules = {}, isLoading: isPrebuiltRulesLoading } = - useGetMigrationPrebuiltRules(migrationId); - - const { - data: { ruleMigrations, total } = { ruleMigrations: [], total: 0 }, - isLoading: isDataLoading, - } = useGetMigrationRules({ - migrationId, - page: pageIndex, - perPage: pageSize, - sortField, - sortDirection, - searchTerm, - }); - - const [selectedRuleMigrations, setSelectedRuleMigrations] = useState<RuleMigration[]>([]); - const tableSelection: EuiTableSelectionType<RuleMigration> = useMemo( - () => ({ - selectable: (item: RuleMigration) => { - return ( - !item.elastic_rule?.id && - item.translation_result === SiemMigrationRuleTranslationResult.FULL - ); - }, - selectableMessage: (selectable: boolean, item: RuleMigration) => { - if (selectable) { - return ''; - } - return item.elastic_rule?.id - ? i18n.ALREADY_TRANSLATED_RULE_TOOLTIP - : i18n.NOT_FULLY_TRANSLATED_RULE_TOOLTIP; - }, - onSelectionChange: setSelectedRuleMigrations, - selected: selectedRuleMigrations, - }), - [selectedRuleMigrations] - ); - - const pagination = useMemo(() => { - return { - pageIndex, - pageSize, - totalItemCount: total, - }; - }, [pageIndex, pageSize, total]); - - const sorting = useMemo(() => { - return { - sort: { - field: sortField, - direction: sortDirection, - }, - }; - }, [sortDirection, sortField]); - - const onTableChange = useCallback(({ page, sort }: CriteriaWithPagination<RuleMigration>) => { - if (page) { - setPageIndex(page.index); - setPageSize(page.size); - } - if (sort) { - const { field, direction } = sort; - setSortField(field); - setSortDirection(direction); - } - }, []); - - const handleOnSearch = useCallback((value: string) => { - setSearchTerm(value.trim()); - }, []); - - const { mutateAsync: installMigrationRules } = useInstallMigrationRules(migrationId); - const { mutateAsync: installTranslatedMigrationRules } = - useInstallTranslatedMigrationRules(migrationId); - - const [isTableLoading, setTableLoading] = useState(false); - const installSingleRule = useCallback( - async (migrationRule: RuleMigration, enabled = false) => { - setTableLoading(true); - try { - await installMigrationRules({ ids: [migrationRule.id], enabled }); - } catch (error) { - addError(error, { title: logicI18n.INSTALL_MIGRATION_RULES_FAILURE }); - } finally { - setTableLoading(false); - } - }, - [addError, installMigrationRules] - ); - - const installSelectedRule = useCallback( - async (enabled = false) => { - setTableLoading(true); - try { - await installMigrationRules({ - ids: selectedRuleMigrations.map((rule) => rule.id), - enabled, - }); - } catch (error) { - addError(error, { title: logicI18n.INSTALL_MIGRATION_RULES_FAILURE }); - } finally { - setTableLoading(false); - setSelectedRuleMigrations([]); - } - }, - [addError, installMigrationRules, selectedRuleMigrations] - ); - - const installTranslatedRules = useCallback( - async (enable?: boolean) => { - setTableLoading(true); - try { - await installTranslatedMigrationRules(); - } catch (error) { - addError(error, { title: logicI18n.INSTALL_MIGRATION_RULES_FAILURE }); - } finally { - setTableLoading(false); - } - }, - [addError, installTranslatedMigrationRules] - ); - - const isLoading = isStatsLoading || isPrebuiltRulesLoading || isDataLoading || isTableLoading; - - const ruleActionsFactory = useCallback( - (ruleMigration: RuleMigration, closeRulePreview: () => void) => { - const canMigrationRuleBeInstalled = - !isLoading && - !ruleMigration.elastic_rule?.id && - ruleMigration.translation_result === SiemMigrationRuleTranslationResult.FULL; - return ( - <EuiFlexGroup> - <EuiFlexItem> - <EuiButton - disabled={!canMigrationRuleBeInstalled} - onClick={() => { - installSingleRule(ruleMigration); - closeRulePreview(); - }} - data-test-subj="installMigrationRuleFromFlyoutButton" - > - {i18n.INSTALL_WITHOUT_ENABLING_BUTTON_LABEL} - </EuiButton> - </EuiFlexItem> - <EuiFlexItem> - <EuiButton - disabled={!canMigrationRuleBeInstalled} - onClick={() => { - installSingleRule(ruleMigration, true); - closeRulePreview(); - }} - fill - data-test-subj="installAndEnableMigrationRuleFromFlyoutButton" - > - {i18n.INSTALL_AND_ENABLE_BUTTON_LABEL} - </EuiButton> - </EuiFlexItem> - </EuiFlexGroup> - ); - }, - [installSingleRule, isLoading] - ); - - const { - migrationRuleDetailsFlyout: rulePreviewFlyout, - openMigrationRuleDetails: openRulePreview, - } = useMigrationRuleDetailsFlyout({ - prebuiltRules, - ruleActionsFactory, - }); - - const rulesColumns = useMigrationRulesTableColumns({ - disableActions: isTableLoading, - openMigrationRuleDetails: openRulePreview, - installMigrationRule: installSingleRule, - }); - - return ( - <> - <EuiSkeletonLoading - isLoading={isDataLoading} - loadingContent={ - <> - <EuiSkeletonTitle /> - <EuiSkeletonText /> - </> - } - loadedContent={ - !translationStats?.rules.total ? ( - <EmptyMigration /> - ) : ( - <> - <EuiFlexGroup gutterSize="m" justifyContent="flexEnd" wrap> - <EuiFlexItem> - <SearchField initialValue={searchTerm} onSearch={handleOnSearch} /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <BulkActions - isTableLoading={isLoading} - numberOfTranslatedRules={translationStats?.rules.installable ?? 0} - numberOfSelectedRules={selectedRuleMigrations.length} - installTranslatedRule={installTranslatedRules} - installSelectedRule={installSelectedRule} - /> - </EuiFlexItem> - </EuiFlexGroup> - <EuiSpacer size="m" /> - <EuiBasicTable<RuleMigration> - loading={isTableLoading} - items={ruleMigrations} - pagination={pagination} - sorting={sorting} - onChange={onTableChange} - selection={tableSelection} - itemId={'id'} - data-test-subj={'rules-translation-table'} - columns={rulesColumns} - /> - </> - ) - } - /> - {rulePreviewFlyout} - </> - ); - } -); -MigrationRulesTable.displayName = 'MigrationRulesTable'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx deleted file mode 100644 index 8f8bcff40f674..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { euiLightVars } from '@kbn/ui-theme'; - -import { EuiFlexGroup, EuiFlexItem, EuiHealth, EuiIcon, EuiToolTip } from '@elastic/eui'; -import { css } from '@emotion/css'; -import type { RuleMigrationTranslationResult } from '../../../../../common/siem_migrations/model/rule_migration.gen'; -import { convertTranslationResultIntoText } from '../../utils/helpers'; -import * as i18n from './translations'; - -const statusTextWrapperClassName = css` - width: 100%; - display: inline-grid; -`; - -const { euiColorVis0, euiColorVis7, euiColorVis9 } = euiLightVars; -const statusToColorMap: Record<RuleMigrationTranslationResult, string> = { - full: euiColorVis0, - partial: euiColorVis7, - untranslatable: euiColorVis9, -}; - -interface StatusBadgeProps { - value?: RuleMigrationTranslationResult; - installedRuleId?: string; - 'data-test-subj'?: string; -} - -export const StatusBadge: React.FC<StatusBadgeProps> = React.memo( - ({ value, installedRuleId, 'data-test-subj': dataTestSubj = 'translation-result' }) => { - const translationResult = installedRuleId ? 'full' : value ?? 'untranslatable'; - const displayValue = installedRuleId - ? i18n.RULE_STATUS_INSTALLED - : convertTranslationResultIntoText(translationResult); - const color = statusToColorMap[translationResult]; - - return ( - <EuiToolTip content={displayValue}> - {installedRuleId ? ( - <EuiFlexGroup gutterSize="xs" alignItems="center"> - <EuiFlexItem grow={false}> - <EuiIcon type={'check'} color={statusToColorMap.full} /> - </EuiFlexItem> - <EuiFlexItem grow={false}>{displayValue}</EuiFlexItem> - </EuiFlexGroup> - ) : ( - <EuiHealth color={color} data-test-subj={dataTestSubj}> - <div className={statusTextWrapperClassName}> - <span className="eui-textTruncate">{displayValue}</span> - </div> - </EuiHealth> - )} - </EuiToolTip> - ); - } -); -StatusBadge.displayName = 'StatusBadge'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts deleted file mode 100644 index 0a7b1c37f7acf..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const RULE_STATUS_INSTALLED = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.status.installedLabel', - { - defaultMessage: 'Installed', - } -); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx deleted file mode 100644 index 4df54d6331f66..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { ReactNode } from 'react'; -import React, { useCallback, useState, useMemo } from 'react'; -import type { EuiTabbedContentTab } from '@elastic/eui'; -import type { RuleResponse } from '../../../../common/api/detection_engine'; -import type { - PrebuiltRuleVersion, - RuleMigration, -} from '../../../../common/siem_migrations/model/rule_migration.gen'; -import { MigrationRuleDetailsFlyout } from '../components/rule_details_flyout'; - -interface UseMigrationRuleDetailsFlyoutParams { - prebuiltRules: Record<string, PrebuiltRuleVersion>; - ruleActionsFactory: (ruleMigration: RuleMigration, closeRulePreview: () => void) => ReactNode; - extraTabsFactory?: (ruleMigration: RuleMigration) => EuiTabbedContentTab[]; -} - -interface UseMigrationRuleDetailsFlyoutResult { - migrationRuleDetailsFlyout: ReactNode; - openMigrationRuleDetails: (rule: RuleMigration) => void; - closeMigrationRuleDetails: () => void; -} - -export function useMigrationRuleDetailsFlyout({ - prebuiltRules, - extraTabsFactory, - ruleActionsFactory, -}: UseMigrationRuleDetailsFlyoutParams): UseMigrationRuleDetailsFlyoutResult { - const [ruleMigration, setMigrationRuleForPreview] = useState<RuleMigration | undefined>(); - const [matchedPrebuiltRule, setMatchedPrebuiltRule] = useState<RuleResponse | undefined>(); - const closeMigrationRuleDetails = useCallback(() => setMigrationRuleForPreview(undefined), []); - const ruleActions = useMemo( - () => ruleMigration && ruleActionsFactory(ruleMigration, closeMigrationRuleDetails), - [ruleMigration, ruleActionsFactory, closeMigrationRuleDetails] - ); - const extraTabs = useMemo( - () => (ruleMigration && extraTabsFactory ? extraTabsFactory(ruleMigration) : []), - [ruleMigration, extraTabsFactory] - ); - - const openMigrationRuleDetails = useCallback( - (rule: RuleMigration) => { - setMigrationRuleForPreview(rule); - - // Find matched prebuilt rule if any and prioritize its installed version - const matchedPrebuiltRuleVersion = rule.elastic_rule?.prebuilt_rule_id - ? prebuiltRules[rule.elastic_rule.prebuilt_rule_id] - : undefined; - const prebuiltRule = - matchedPrebuiltRuleVersion?.current ?? matchedPrebuiltRuleVersion?.target; - setMatchedPrebuiltRule(prebuiltRule); - }, - [prebuiltRules] - ); - - return { - migrationRuleDetailsFlyout: ruleMigration && ( - <MigrationRuleDetailsFlyout - ruleMigration={ruleMigration} - matchedPrebuiltRule={matchedPrebuiltRule} - size="l" - closeFlyout={closeMigrationRuleDetails} - ruleActions={ruleActions} - extraTabs={extraTabs} - /> - ), - openMigrationRuleDetails, - closeMigrationRuleDetails, - }; -} diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts deleted file mode 100644 index 3f92da4e8ddcc..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const GET_MIGRATION_PREBUILT_RULES_FAILURE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.getMigrationPrebuiltRulesFailDescription', - { - defaultMessage: 'Failed to fetch prebuilt rules', - } -); - -export const GET_MIGRATION_RULES_FAILURE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.getMigrationRulesFailDescription', - { - defaultMessage: 'Failed to fetch migration rules', - } -); - -export const GET_MIGRATION_TRANSLATION_STATS_FAILURE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.getMigrationTranslationStatsFailDescription', - { - defaultMessage: 'Failed to fetch migration translation stats', - } -); - -export const INSTALL_MIGRATION_RULES_FAILURE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.installMigrationRulesFailDescription', - { - defaultMessage: 'Failed to install migration rules', - } -); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts deleted file mode 100644 index 366ad435c61b4..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const SIEM_TRANSLATION_RESULT_FULL_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationResult.full', - { - defaultMessage: 'Fully translated', - } -); - -export const SIEM_TRANSLATION_RESULT_PARTIAL_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationResult.partially', - { - defaultMessage: 'Partially translated', - } -); - -export const SIEM_TRANSLATION_RESULT_UNTRANSLATABLE_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationResult.untranslatable', - { - defaultMessage: 'Not translated', - } -); - -export const SIEM_TRANSLATION_RESULT_UNKNOWN_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationResult.unknown', - { - defaultMessage: 'Unknown', - } -); - -export const SIEM_TRANSLATION_RESULT_UNKNOWN_ERROR = (status?: string) => { - return i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationResult.unknownError', - { - defaultMessage: 'Unknown translation result status: ({status})', - values: { status }, - } - ); -}; diff --git a/x-pack/plugins/security_solution/public/sourcerer/jest.config.js b/x-pack/plugins/security_solution/public/sourcerer/jest.config.js deleted file mode 100644 index 2967d36235b29..0000000000000 --- a/x-pack/plugins/security_solution/public/sourcerer/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/sourcerer'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/sourcerer', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/sourcerer/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts b/x-pack/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts deleted file mode 100644 index f840e65497cc4..0000000000000 --- a/x-pack/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useCallback } from 'react'; -import { timelineDefaults } from '../timelines/store/defaults'; -import { APP_UI_ID } from '../../common/constants'; -import type { DataProvider } from '../../common/types'; -import { TimelineId } from '../../common/types/timeline'; -import { TimelineTypeEnum } from '../../common/api/timeline'; -import { useStartTransaction } from '../common/lib/apm/use_start_transaction'; -import { useCreateTimeline } from '../timelines/hooks/use_create_timeline'; -import type { CreateTimelineProps } from '../detections/components/alerts_table/types'; -import { useUpdateTimeline } from '../timelines/components/open_timeline/use_update_timeline'; - -interface UseInvestigateInTimelineActionProps { - /** - * Created when the user clicks on the Investigate in Timeline button. - * DataProvider contain the field(s) and value(s) displayed in the timeline. - */ - dataProviders: DataProvider[]; - /** - * Start date used in the createTimeline method. - */ - from: string; - /** - * End date used in the createTimeline method. - */ - to: string; -} - -/** - * Hook passed down to the Threat Intelligence plugin, via context. - * This code is closely duplicated from here: https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx, - * the main changes being: - * - no exceptions are handled at the moment - * - we use dataProviders, from and to directly instead of consuming ecsData - */ -export const useInvestigateInTimeline = ({ - dataProviders, - from, - to, -}: UseInvestigateInTimelineActionProps) => { - const { startTransaction } = useStartTransaction(); - - const clearActiveTimeline = useCreateTimeline({ - timelineId: TimelineId.active, - timelineType: TimelineTypeEnum.default, - }); - - const updateTimeline = useUpdateTimeline(); - - const createTimeline = useCallback( - async ({ from: fromTimeline, timeline, to: toTimeline, ruleNote }: CreateTimelineProps) => { - await clearActiveTimeline(); - updateTimeline({ - duplicate: true, - from: fromTimeline, - id: TimelineId.active, - notes: [], - timeline: { - ...timeline, - indexNames: timeline.indexNames ?? [], - show: true, - }, - to: toTimeline, - ruleNote, - }); - }, - [updateTimeline, clearActiveTimeline] - ); - - const investigateInTimelineClick = useCallback(async () => { - startTransaction({ name: `${APP_UI_ID} threat indicator investigateInTimeline` }); - createTimeline({ - from, - notes: null, - timeline: { - ...timelineDefaults, - dataProviders, - id: TimelineId.active, - indexNames: [], - dateRange: { - start: from, - end: to, - }, - eventType: 'all', - filters: [], - kqlQuery: { - filterQuery: { - kuery: { - kind: 'kuery', - expression: '', - }, - serializedQuery: '', - }, - }, - }, - to, - ruleNote: '', - }); - }, [startTransaction, createTimeline, dataProviders, from, to]); - - return investigateInTimelineClick; -}; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.test.tsx deleted file mode 100644 index cfd8f86af9dac..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.test.tsx +++ /dev/null @@ -1,1327 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { ComponentProps, FunctionComponent } from 'react'; -import React, { useEffect } from 'react'; -import QueryTabContent from '.'; -import { defaultRowRenderers } from '../../body/renderers'; -import { TimelineId } from '../../../../../../common/types/timeline'; -import { useTimelineEvents } from '../../../../containers'; -import { useTimelineEventsDetails } from '../../../../containers/details'; -import { useSourcererDataView } from '../../../../../sourcerer/containers'; -import { mockSourcererScope } from '../../../../../sourcerer/containers/mocks'; -import { - createMockStore, - createSecuritySolutionStorageMock, - mockGlobalState, - mockTimelineData, - TestProviders, -} from '../../../../../common/mock'; -import { DefaultCellRenderer } from '../../cell_rendering/default_cell_renderer'; -import { render, screen, waitFor, fireEvent, within, cleanup } from '@testing-library/react'; -import { createStartServicesMock } from '../../../../../common/lib/kibana/kibana_react.mock'; -import type { StartServices } from '../../../../../types'; -import { useKibana } from '../../../../../common/lib/kibana'; -import { useDispatch } from 'react-redux'; -import type { ExperimentalFeatures } from '../../../../../../common'; -import { allowedExperimentalValues } from '../../../../../../common'; -import { useIsExperimentalFeatureEnabled } from '../../../../../common/hooks/use_experimental_features'; -import { - defaultUdtHeaders, - defaultColumnHeaderType, -} from '../../body/column_headers/default_headers'; -import { useUserPrivileges } from '../../../../../common/components/user_privileges'; -import { getEndpointPrivilegesInitialStateMock } from '../../../../../common/components/user_privileges/endpoint/mocks'; -import * as timelineActions from '../../../../store/actions'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { createExpandableFlyoutApiMock } from '../../../../../common/mock/expandable_flyout'; -import { OPEN_FLYOUT_BUTTON_TEST_ID } from '../../../../../notes/components/test_ids'; -import { userEvent } from '@testing-library/user-event'; -import * as notesApi from '../../../../../notes/api/api'; - -jest.mock('../../../../../common/components/user_privileges'); - -jest.mock('../../../../containers', () => ({ - useTimelineEvents: jest.fn(), -})); - -jest.mock('../../../../containers/details'); - -jest.mock('../../../fields_browser', () => ({ - useFieldBrowserOptions: jest.fn(), -})); - -jest.mock('../../../../../sourcerer/containers'); -jest.mock('../../../../../sourcerer/containers/use_signal_helpers', () => ({ - useSignalHelpers: () => ({ signalIndexNeedsInit: false }), -})); - -jest.mock('../../../../../common/lib/kuery'); - -jest.mock('../../../../../common/hooks/use_experimental_features'); - -jest.mock('react-router-dom', () => ({ - ...jest.requireActual('react-router-dom'), - useLocation: jest.fn(() => ({ - pathname: '', - search: '', - })), -})); - -// These tests can take more than standard timeout of 5s -// that is why we are increasing it. -const SPECIAL_TEST_TIMEOUT = 50000; - -const useIsExperimentalFeatureEnabledMock = jest.fn((feature: keyof ExperimentalFeatures) => { - return allowedExperimentalValues[feature]; -}); - -jest.mock('../../../../../common/lib/kibana'); - -// unified-field-list is reporting multiple analytics events -jest.mock(`@elastic/ebt/client`); - -const mockOpenFlyout = jest.fn(); -const mockCloseFlyout = jest.fn(); -jest.mock('@kbn/expandable-flyout'); - -const TestComponent = (props: Partial<ComponentProps<typeof QueryTabContent>>) => { - const testComponentDefaultProps: ComponentProps<typeof QueryTabContent> = { - timelineId: TimelineId.test, - renderCellValue: DefaultCellRenderer, - rowRenderers: defaultRowRenderers, - }; - - const dispatch = useDispatch(); - - useEffect(() => { - // Unified field list can be a culprit for long load times, so we wait for the timeline to be interacted with to load - dispatch(timelineActions.showTimeline({ id: TimelineId.test, show: true })); - - // populating timeline so that it is not blank - dispatch( - timelineActions.applyKqlFilterQuery({ - id: TimelineId.test, - filterQuery: { - kuery: { - kind: 'kuery', - expression: '*', - }, - serializedQuery: '*', - }, - }) - ); - }, [dispatch]); - - return <QueryTabContent {...testComponentDefaultProps} {...props} />; -}; - -const customColumnOrder = [ - ...defaultUdtHeaders, - { - columnHeaderType: defaultColumnHeaderType, - id: 'event.severity', - }, -]; - -const mockState = { - ...structuredClone(mockGlobalState), -}; - -mockState.timeline.timelineById[TimelineId.test].columns = customColumnOrder; - -const TestWrapper: FunctionComponent<React.PropsWithChildren<{}>> = ({ children }) => { - return <TestProviders store={createMockStore(mockState)}>{children}</TestProviders>; -}; - -const renderTestComponents = (props?: Partial<ComponentProps<typeof TestComponent>>) => { - return render(<TestComponent {...props} />, { - wrapper: TestWrapper, - }); -}; - -const loadPageMock = jest.fn(); - -const useSourcererDataViewMocked = jest.fn().mockReturnValue({ - ...mockSourcererScope, -}); - -const { storage: storageMock } = createSecuritySolutionStorageMock(); - -let useTimelineEventsMock = jest.fn(); - -describe('query tab with unified timeline', () => { - const fetchNotesMock = jest.spyOn(notesApi, 'fetchNotesByDocumentIds'); - beforeAll(() => { - fetchNotesMock.mockImplementation(jest.fn()); - jest.mocked(useExpandableFlyoutApi).mockImplementation(() => ({ - ...createExpandableFlyoutApiMock(), - openFlyout: mockOpenFlyout, - closeFlyout: mockCloseFlyout, - })); - - // https://github.com/atlassian/react-beautiful-dnd/blob/4721a518356f72f1dac45b5fd4ee9d466aa2996b/docs/guides/setup-problem-detection-and-error-recovery.md#disable-logging - Object.defineProperty(window, '__@hello-pangea/dnd-disable-dev-warnings', { - get() { - return true; - }, - }); - }); - const kibanaServiceMock: StartServices = { - ...createStartServicesMock(), - storage: storageMock, - }; - - afterEach(() => { - jest.clearAllMocks(); - storageMock.clear(); - fetchNotesMock.mockClear(); - cleanup(); - localStorage.clear(); - }); - - beforeEach(() => { - useTimelineEventsMock = jest.fn(() => [ - false, - { - events: structuredClone(mockTimelineData.slice(0, 1)), - pageInfo: { - activePage: 0, - totalPages: 3, - }, - refreshedAt: Date.now(), - totalCount: 3, - loadPage: loadPageMock, - }, - ]); - - HTMLElement.prototype.getBoundingClientRect = jest.fn(() => { - return { - width: 1000, - height: 1000, - x: 0, - y: 0, - } as DOMRect; - }); - - (useKibana as jest.Mock).mockImplementation(() => { - return { - services: kibanaServiceMock, - }; - }); - - (useTimelineEvents as jest.Mock).mockImplementation(useTimelineEventsMock); - - (useTimelineEventsDetails as jest.Mock).mockImplementation(() => [false, {}]); - - (useSourcererDataView as jest.Mock).mockImplementation(useSourcererDataViewMocked); - - (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( - useIsExperimentalFeatureEnabledMock - ); - - (useUserPrivileges as jest.Mock).mockReturnValue({ - kibanaSecuritySolutionsPrivileges: { crud: true, read: true }, - endpointPrivileges: getEndpointPrivilegesInitialStateMock(), - detectionEnginePrivileges: { loading: false, error: undefined, result: undefined }, - }); - }); - - describe('render', () => { - it( - 'should render unifiedDataTable in timeline', - async () => { - renderTestComponents(); - await waitFor(() => { - expect(screen.getByTestId('discoverDocTable')).toBeVisible(); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should render unified-field-list in timeline', - async () => { - renderTestComponents(); - await waitFor(() => { - expect(screen.getByTestId('timeline-sidebar')).toBeVisible(); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - it( - 'should show row-renderers correctly by default', - async () => { - renderTestComponents(); - await waitFor(() => { - expect(screen.getByTestId('discoverDocTable')).toBeVisible(); - }); - - expect(screen.getByTestId('timeline-row-renderer-0')).toBeVisible(); - }, - - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should hide row-renderers when disabled', - async () => { - renderTestComponents(); - await waitFor(() => { - expect(screen.getByTestId('discoverDocTable')).toBeVisible(); - }); - - expect(screen.getByTestId('timeline-row-renderer-0')).toBeVisible(); - - fireEvent.click(screen.getByTestId('show-row-renderers-gear')); - expect(screen.getByTestId('row-renderers-modal')).toBeVisible(); - - fireEvent.click(screen.getByTestId('disable-all')); - - expect( - within(screen.getAllByTestId('renderer-checkbox')[0]).getByRole('checkbox') - ).not.toBeChecked(); - - fireEvent.click(screen.getByLabelText('Closes this modal window')); - - expect(screen.queryByTestId('row-renderers-modal')).not.toBeInTheDocument(); - - expect(screen.queryByTestId('timeline-row-renderer-0')).not.toBeInTheDocument(); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - - describe('pagination', () => { - beforeEach(() => { - // pagination tests need more than 1 record so here - // we return 5 records instead of just 1. - useTimelineEventsMock = jest.fn(() => [ - false, - { - events: structuredClone(mockTimelineData.slice(0, 5)), - pageInfo: { - activePage: 0, - totalPages: 5, - }, - refreshedAt: Date.now(), - /* - * `totalCount` could be any number w.r.t this test - * and actually means total hits on elastic search - * and not the fecthed number of records. - * - * This helps in testing `sampleSize` and `loadMore` - */ - totalCount: 50, - loadPage: loadPageMock, - }, - ]); - - (useTimelineEvents as jest.Mock).mockImplementation(useTimelineEventsMock); - }); - - afterEach(() => { - jest.clearAllMocks(); - }); - - it( - 'should paginate correctly', - async () => { - const mockStateWithNoteInTimeline = { - ...mockGlobalState, - timeline: { - ...mockGlobalState.timeline, - timelineById: { - [TimelineId.test]: { - ...mockGlobalState.timeline.timelineById[TimelineId.test], - /* 1 record for each page */ - itemsPerPage: 1, - itemsPerPageOptions: [1, 2, 3, 4, 5], - savedObjectId: 'timeline-1', // match timelineId in mocked notes data - pinnedEventIds: { '1': true }, - }, - }, - }, - }; - - render( - <TestProviders - store={createMockStore({ - ...structuredClone(mockStateWithNoteInTimeline), - })} - > - <TestComponent /> - </TestProviders> - ); - - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - expect(screen.getByTestId('pagination-button-previous')).toBeVisible(); - - expect(screen.getByTestId('tablePaginationPopoverButton')).toHaveTextContent( - 'Rows per page: 1' - ); - - expect(screen.getByTestId('pagination-button-0')).toHaveAttribute('aria-current', 'true'); - expect(screen.getByTestId('pagination-button-4')).toBeVisible(); - expect(screen.queryByTestId('pagination-button-5')).toBeNull(); - - fireEvent.click(screen.getByTestId('pagination-button-4')); - - await waitFor(() => { - expect(screen.getByTestId('pagination-button-4')).toHaveAttribute('aria-current', 'true'); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should load more records according to sample size correctly', - async () => { - const mockStateWithNoteInTimeline = { - ...mockGlobalState, - timeline: { - ...mockGlobalState.timeline, - timelineById: { - [TimelineId.test]: { - ...mockGlobalState.timeline.timelineById[TimelineId.test], - itemsPerPage: 1, - /* - * `sampleSize` is the max number of records that are fetched from elasticsearch - * in one request. If hits > sampleSize, you can fetch more records ( <= sampleSize) - */ - sampleSize: 5, - itemsPerPageOptions: [1, 2, 3, 4, 5], - savedObjectId: 'timeline-1', // match timelineId in mocked notes data - pinnedEventIds: { '1': true }, - }, - }, - }, - }; - - render( - <TestProviders - store={createMockStore({ - ...structuredClone(mockStateWithNoteInTimeline), - })} - > - <TestComponent /> - </TestProviders> - ); - - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - await waitFor(() => { - expect(screen.getByTestId('pagination-button-0')).toHaveAttribute('aria-current', 'true'); - expect(screen.getByTestId('pagination-button-4')).toBeVisible(); - }); - // Go to last page - fireEvent.click(screen.getByTestId('pagination-button-4')); - await waitFor(() => { - expect(screen.getByTestId('dscGridSampleSizeFetchMoreLink')).toBeVisible(); - }); - fireEvent.click(screen.getByTestId('dscGridSampleSizeFetchMoreLink')); - expect(loadPageMock).toHaveBeenNthCalledWith(1, 1); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should load notes for current page only', - async () => { - const mockStateWithNoteInTimeline = { - ...mockGlobalState, - timeline: { - ...mockGlobalState.timeline, - timelineById: { - [TimelineId.test]: { - ...mockGlobalState.timeline.timelineById[TimelineId.test], - /* 1 record for each page */ - itemsPerPage: 1, - pageIndex: 0, - itemsPerPageOptions: [1, 2, 3, 4, 5], - savedObjectId: 'timeline-1', // match timelineId in mocked notes data - pinnedEventIds: { '1': true }, - }, - }, - }, - }; - - render( - <TestProviders - store={createMockStore({ - ...structuredClone(mockStateWithNoteInTimeline), - })} - > - <TestComponent /> - </TestProviders> - ); - - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getByTestId('pagination-button-previous')).toBeVisible(); - - expect(screen.getByTestId('pagination-button-0')).toHaveAttribute('aria-current', 'true'); - expect(fetchNotesMock).toHaveBeenCalledWith(['1']); - - // Page : 2 - - fetchNotesMock.mockClear(); - expect(screen.getByTestId('pagination-button-1')).toBeVisible(); - - fireEvent.click(screen.getByTestId('pagination-button-1')); - - await waitFor(() => { - expect(screen.getByTestId('pagination-button-1')).toHaveAttribute('aria-current', 'true'); - - expect(fetchNotesMock).toHaveBeenNthCalledWith(1, [mockTimelineData[1]._id]); - }); - - // Page : 3 - - fetchNotesMock.mockClear(); - expect(screen.getByTestId('pagination-button-2')).toBeVisible(); - fireEvent.click(screen.getByTestId('pagination-button-2')); - - await waitFor(() => { - expect(screen.getByTestId('pagination-button-2')).toHaveAttribute('aria-current', 'true'); - - expect(fetchNotesMock).toHaveBeenNthCalledWith(1, [mockTimelineData[2]._id]); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should load notes for correct page size', - async () => { - const mockStateWithNoteInTimeline = { - ...mockGlobalState, - timeline: { - ...mockGlobalState.timeline, - timelineById: { - [TimelineId.test]: { - ...mockGlobalState.timeline.timelineById[TimelineId.test], - /* 1 record for each page */ - itemsPerPage: 1, - pageIndex: 0, - itemsPerPageOptions: [1, 2, 3, 4, 5], - savedObjectId: 'timeline-1', // match timelineId in mocked notes data - pinnedEventIds: { '1': true }, - }, - }, - }, - }; - - render( - <TestProviders - store={createMockStore({ - ...structuredClone(mockStateWithNoteInTimeline), - })} - > - <TestComponent /> - </TestProviders> - ); - - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getByTestId('pagination-button-previous')).toBeVisible(); - - expect(screen.getByTestId('pagination-button-0')).toHaveAttribute('aria-current', 'true'); - expect(screen.getByTestId('tablePaginationPopoverButton')).toHaveTextContent( - 'Rows per page: 1' - ); - fireEvent.click(screen.getByTestId('tablePaginationPopoverButton')); - - await waitFor(() => { - expect(screen.getByTestId('tablePagination-2-rows')).toBeVisible(); - }); - - fetchNotesMock.mockClear(); - fireEvent.click(screen.getByTestId('tablePagination-2-rows')); - - await waitFor(() => { - expect(fetchNotesMock).toHaveBeenNthCalledWith(1, [ - mockTimelineData[0]._id, - mockTimelineData[1]._id, - ]); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - - describe('columns', () => { - it( - 'should move column left/right correctly ', - async () => { - const { container } = renderTestComponents(); - - await waitFor(() => { - expect(screen.getByTestId('discoverDocTable')).toBeVisible(); - }); - - const messageColumnIndex = - customColumnOrder.findIndex((header) => header.id === 'message') + 3; - // 3 is the offset for additional leading columns on left - - expect(container.querySelector('[data-gridcell-column-id="message"]')).toHaveAttribute( - 'data-gridcell-column-index', - String(messageColumnIndex) - ); - - expect(container.querySelector('[data-gridcell-column-id="message"]')).toBeInTheDocument(); - - fireEvent.click(screen.getByTestId('dataGridHeaderCellActionButton-message')); - - await waitFor(() => { - expect(screen.getByTitle('Move left')).toBeEnabled(); - }); - - fireEvent.click(screen.getByTitle('Move left')); - - await waitFor(() => { - expect(container.querySelector('[data-gridcell-column-id="message"]')).toHaveAttribute( - 'data-gridcell-column-index', - String(messageColumnIndex - 1) - ); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should remove column', - async () => { - const { container } = renderTestComponents(); - - await waitFor(() => { - expect(screen.getByTestId('discoverDocTable')).toBeVisible(); - }); - - expect(container.querySelector('[data-gridcell-column-id="message"]')).toBeInTheDocument(); - - fireEvent.click(screen.getByTestId('dataGridHeaderCellActionButton-message')); - - await waitFor(() => { - expect(screen.getByTitle('Remove column')).toBeVisible(); - }); - - fireEvent.click(screen.getByTitle('Remove column')); - - await waitFor(() => { - expect( - container.querySelector('[data-gridcell-column-id="message"]') - ).not.toBeInTheDocument(); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should sort date column', - async () => { - const { container } = renderTestComponents(); - await waitFor(() => { - expect(screen.getByTestId('discoverDocTable')).toBeVisible(); - }); - - expect( - container.querySelector('[data-gridcell-column-id="@timestamp"]') - ).toBeInTheDocument(); - - fireEvent.click(screen.getByTestId('dataGridHeaderCellActionButton-@timestamp')); - - await waitFor(() => { - expect(screen.getByTitle('Sort Old-New')).toBeVisible(); - }); - expect(screen.getByTitle('Unsort New-Old')).toBeVisible(); - - useTimelineEventsMock.mockClear(); - - fireEvent.click(screen.getByTitle('Sort Old-New')); - - await waitFor(() => { - expect(useTimelineEventsMock).toHaveBeenNthCalledWith( - 1, - expect.objectContaining({ - sort: [ - { - direction: 'asc', - esTypes: ['date'], - field: '@timestamp', - type: 'date', - }, - ], - }) - ); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should sort string column correctly', - async () => { - const { container } = renderTestComponents(); - await waitFor(() => { - expect(screen.getByTestId('discoverDocTable')).toBeVisible(); - }); - - expect( - container.querySelector('[data-gridcell-column-id="host.name"]') - ).toBeInTheDocument(); - - fireEvent.click(screen.getByTestId('dataGridHeaderCellActionButton-host.name')); - - await waitFor(() => { - expect(screen.getByTestId('dataGridHeaderCellActionGroup-host.name')).toBeVisible(); - }); - - expect(screen.getByTitle('Sort A-Z')).toBeVisible(); - expect(screen.getByTitle('Sort Z-A')).toBeVisible(); - - useTimelineEventsMock.mockClear(); - - fireEvent.click(screen.getByTitle('Sort A-Z')); - - await waitFor(() => { - expect(useTimelineEventsMock).toHaveBeenNthCalledWith( - 1, - expect.objectContaining({ - sort: [ - { - direction: 'desc', - esTypes: ['date'], - field: '@timestamp', - type: 'date', - }, - { - direction: 'asc', - esTypes: [], - field: 'host.name', - type: 'string', - }, - ], - }) - ); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should sort number column', - async () => { - const field = { - name: 'event.severity', - type: 'number', - }; - - const { container } = renderTestComponents(); - await waitFor(() => { - expect(screen.getByTestId('discoverDocTable')).toBeVisible(); - }); - - expect( - container.querySelector(`[data-gridcell-column-id="${field.name}"]`) - ).toBeInTheDocument(); - - fireEvent.click(screen.getByTestId(`dataGridHeaderCellActionButton-${field.name}`)); - - await waitFor(() => { - expect(screen.getByTestId(`dataGridHeaderCellActionGroup-${field.name}`)).toBeVisible(); - }); - - expect(screen.getByTitle('Sort Low-High')).toBeVisible(); - expect(screen.getByTitle('Sort High-Low')).toBeVisible(); - - useTimelineEventsMock.mockClear(); - - fireEvent.click(screen.getByTitle('Sort Low-High')); - - await waitFor(() => { - expect(useTimelineEventsMock).toHaveBeenNthCalledWith( - 1, - expect.objectContaining({ - sort: [ - { - direction: 'desc', - esTypes: ['date'], - field: '@timestamp', - type: 'date', - }, - { - direction: 'asc', - esTypes: [], - field: field.name, - type: field.type, - }, - ], - }) - ); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - - describe('left controls', () => { - it( - 'should clear all sorting', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getByTestId('dataGridColumnSortingButton')).toBeVisible(); - expect( - within(screen.getByTestId('dataGridColumnSortingButton')).getByRole('marquee') - ).toHaveTextContent('1'); - - fireEvent.click(screen.getByTestId('dataGridColumnSortingButton')); - - // // timestamp sorting indicators - expect( - await screen.findByTestId('euiDataGridColumnSorting-sortColumn-@timestamp') - ).toBeInTheDocument(); - - expect(screen.getByTestId('dataGridHeaderCellSortingIcon-@timestamp')).toBeInTheDocument(); - - fireEvent.click(screen.getByTestId('dataGridColumnSortingClearButton')); - - await waitFor(() => { - expect(screen.queryByTestId('dataGridHeaderCellSortingIcon-@timestamp')).toBeNull(); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should be able to sort by multiple columns', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getByTestId('dataGridColumnSortingButton')).toBeVisible(); - expect( - within(screen.getByTestId('dataGridColumnSortingButton')).getByRole('marquee') - ).toHaveTextContent('1'); - - fireEvent.click(screen.getByTestId('dataGridColumnSortingButton')); - - // // timestamp sorting indicators - expect( - await screen.findByTestId('euiDataGridColumnSorting-sortColumn-@timestamp') - ).toBeInTheDocument(); - - expect(screen.getByTestId('dataGridHeaderCellSortingIcon-@timestamp')).toBeInTheDocument(); - - // add more columns to sorting - fireEvent.click(screen.getByText(/Pick fields to sort by/)); - - await waitFor(() => { - expect( - screen.getByTestId('dataGridColumnSortingPopoverColumnSelection-event.severity') - ).toBeInTheDocument(); - }); - - fireEvent.click( - screen.getByTestId('dataGridColumnSortingPopoverColumnSelection-event.severity') - ); - - // check new columns for sorting validity - await waitFor(() => { - expect( - screen.getByTestId('dataGridHeaderCellSortingIcon-event.severity') - ).toBeInTheDocument(); - }); - expect( - screen.getByTestId('euiDataGridColumnSorting-sortColumn-event.severity') - ).toBeInTheDocument(); - - expect(screen.getByTestId('dataGridHeaderCellSortingIcon-@timestamp')).toBeInTheDocument(); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - - describe('unified fields list', () => { - it( - 'should remove the column when clicked on X sign', - async () => { - const field = { - name: 'event.severity', - }; - - renderTestComponents(); - expect(await screen.findByTestId('timeline-sidebar')).toBeVisible(); - - await waitFor(() => { - expect(screen.getByTestId('fieldListGroupedSelectedFields-count')).toHaveTextContent( - String(customColumnOrder.length) - ); - }); - - // column exists in the table - expect(screen.getByTestId(`dataGridHeaderCell-${field.name}`)).toBeVisible(); - - fireEvent.click(screen.getAllByTestId(`fieldToggle-${field.name}`)[0]); - - // column not longer exists in the table - await waitFor(() => { - expect(screen.getByTestId('fieldListGroupedSelectedFields-count')).toHaveTextContent( - String(customColumnOrder.length - 1) - ); - }); - expect(screen.queryAllByTestId(`dataGridHeaderCell-${field.name}`)).toHaveLength(0); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should add the column when clicked on ⊕ sign', - async () => { - const field = { - name: 'agent.id', - }; - - renderTestComponents(); - expect(await screen.findByTestId('timeline-sidebar')).toBeVisible(); - - await waitFor(() => { - expect(screen.getByTestId('fieldListGroupedSelectedFields-count')).toHaveTextContent( - String(customColumnOrder.length) - ); - }); - - expect(screen.queryAllByTestId(`dataGridHeaderCell-${field.name}`)).toHaveLength(0); - - // column exists in the table - const availableFields = screen.getByTestId('fieldListGroupedAvailableFields'); - - fireEvent.click(within(availableFields).getByTestId(`fieldToggle-${field.name}`)); - - await waitFor(() => { - expect(screen.getByTestId('fieldListGroupedSelectedFields-count')).toHaveTextContent( - String(customColumnOrder.length + 1) - ); - }); - expect(screen.queryAllByTestId(`dataGridHeaderCell-${field.name}`)).toHaveLength(1); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should should show callout when field search does not matches any field', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('timeline-sidebar')).toBeVisible(); - - await waitFor(() => { - expect(screen.getByTestId('fieldListGroupedAvailableFields-count')).toHaveTextContent( - '37' - ); - }); - - fireEvent.change(screen.getByTestId('fieldListFiltersFieldSearch'), { - target: { value: 'fake_field' }, - }); - - await waitFor(() => { - expect( - screen.getByTestId('fieldListGroupedAvailableFieldsNoFieldsCallout-noFieldsMatch') - ).toBeVisible(); - }); - - expect(screen.getByTestId('fieldListGroupedAvailableFields-count')).toHaveTextContent('0'); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should toggle side bar correctly', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('timeline-sidebar')).toBeVisible(); - - expect(screen.getByTestId('fieldListGroupedFieldGroups')).toBeVisible(); - - fireEvent.click(screen.getByTitle('Hide sidebar')); - - await waitFor(() => { - expect(screen.queryByTestId('fieldListGroupedFieldGroups')).not.toBeInTheDocument(); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - - describe('Leading actions - expand event', () => { - it( - 'should expand and collapse event correctly', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getByTestId('docTableExpandToggleColumn').firstChild).toHaveAttribute( - 'data-euiicon-type', - 'expand' - ); - - // Open Flyout - fireEvent.click(screen.getByTestId('docTableExpandToggleColumn')); - - await waitFor(() => { - expect(mockOpenFlyout).toHaveBeenNthCalledWith(1, { - right: { - id: 'document-details-right', - params: { - id: '1', - indexName: '', - scopeId: TimelineId.test, - }, - }, - }); - }); - - expect(screen.getByTestId('docTableExpandToggleColumn').firstChild).toHaveAttribute( - 'data-euiicon-type', - 'minimize' - ); - - // Close Flyout - fireEvent.click(screen.getByTestId('docTableExpandToggleColumn')); - - await waitFor(() => { - expect(mockCloseFlyout).toHaveBeenNthCalledWith(1); - expect(screen.getByTestId('docTableExpandToggleColumn').firstChild).toHaveAttribute( - 'data-euiicon-type', - 'expand' - ); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - - describe('Leading actions - notes', () => { - describe('securitySolutionNotesDisabled = false', () => { - beforeEach(() => { - (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( - jest.fn((feature: keyof ExperimentalFeatures) => { - if (feature === 'securitySolutionNotesDisabled') { - return false; - } - return allowedExperimentalValues[feature]; - }) - ); - }); - - // Flaky: https://github.com/elastic/kibana/issues/189794 - it.skip( - 'should have the notification dot & correct tooltip', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getAllByTestId('timeline-notes-button-small')).toHaveLength(1); - expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); - - expect(screen.getByTestId('timeline-notes-notification-dot')).toBeVisible(); - - userEvent.hover(screen.getByTestId('timeline-notes-button-small')); - - await waitFor(() => { - expect(screen.getByTestId('timeline-notes-tool-tip')).toBeInTheDocument(); - expect(screen.getByTestId('timeline-notes-tool-tip')).toHaveTextContent( - '1 Note available. Click to view it & add more.' - ); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - it( - 'should be able to add notes through expandable flyout', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - await waitFor(() => { - expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); - }); - - fireEvent.click(screen.getByTestId('timeline-notes-button-small')); - - await waitFor(() => { - expect(mockOpenFlyout).toHaveBeenCalled(); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - - describe('securitySolutionNotesDisabled = true', () => { - beforeEach(() => { - (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( - jest.fn((feature: keyof ExperimentalFeatures) => { - if (feature === 'securitySolutionNotesDisabled') { - return true; - } - return allowedExperimentalValues[feature]; - }) - ); - }); - - // Flaky: https://github.com/elastic/kibana/issues/189794 - it.skip( - 'should have the notification dot & correct tooltip', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getAllByTestId('timeline-notes-button-small')).toHaveLength(1); - expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); - - expect(screen.getByTestId('timeline-notes-notification-dot')).toBeVisible(); - - fireEvent.mouseOver(screen.getByTestId('timeline-notes-button-small')); - - await waitFor(() => { - expect(screen.getByTestId('timeline-notes-tool-tip')).toBeVisible(); - expect(screen.getByTestId('timeline-notes-tool-tip')).toHaveTextContent( - '1 Note available. Click to view it & add more.' - ); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - it( - 'should be able to add notes using EuiFlyout', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - await waitFor(() => { - expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); - }); - - fireEvent.click(screen.getByTestId('timeline-notes-button-small')); - - await waitFor(() => { - expect(screen.getByTestId('add-note-container')).toBeVisible(); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should cancel adding notes', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - await waitFor(() => { - expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); - }); - - fireEvent.click(screen.getByTestId('timeline-notes-button-small')); - - await waitFor(() => { - expect(screen.getByTestId('add-note-container')).toBeVisible(); - }); - - expect(screen.getByTestId('cancel')).not.toBeDisabled(); - - fireEvent.click(screen.getByTestId('cancel')); - - await waitFor(() => { - expect(screen.queryByTestId('add-note-container')).not.toBeInTheDocument(); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should be able to delete notes', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - await waitFor(() => { - expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); - }); - - fireEvent.click(screen.getByTestId('timeline-notes-button-small')); - - await waitFor(() => { - expect(screen.getByTestId('delete-note')).toBeVisible(); - }); - - const noteDeleteSpy = jest.spyOn(timelineActions, 'setConfirmingNoteId'); - - fireEvent.click(screen.getByTestId('delete-note')); - - await waitFor(() => { - expect(noteDeleteSpy).toHaveBeenCalled(); - expect(noteDeleteSpy).toHaveBeenCalledWith({ - confirmingNoteId: '1', - id: TimelineId.test, - }); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should not show toggle event details action', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - await waitFor(() => { - expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); - }); - - fireEvent.click(screen.getByTestId('timeline-notes-button-small')); - - await waitFor(() => { - expect(screen.queryByTestId(OPEN_FLYOUT_BUTTON_TEST_ID)).not.toBeInTheDocument(); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - }); - - describe('Leading actions - pin', () => { - describe('securitySolutionNotesDisabled = false', () => { - beforeEach(() => { - (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( - jest.fn((feature: keyof ExperimentalFeatures) => { - if (feature === 'securitySolutionNotesDisabled') { - return false; - } - return allowedExperimentalValues[feature]; - }) - ); - }); - it( - 'should disable pinning when event has notes attached in timeline', - async () => { - const mockStateWithNoteInTimeline = { - ...mockGlobalState, - timeline: { - ...mockGlobalState.timeline, - timelineById: { - [TimelineId.test]: { - ...mockGlobalState.timeline.timelineById[TimelineId.test], - savedObjectId: 'timeline-1', // match timelineId in mocked notes data - pinnedEventIds: { '1': true }, - }, - }, - }, - }; - - render( - <TestProviders - store={createMockStore({ - ...structuredClone(mockStateWithNoteInTimeline), - })} - > - <TestComponent /> - </TestProviders> - ); - - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getAllByTestId('pin')).toHaveLength(1); - // disabled because it is already pinned - expect(screen.getByTestId('pin')).toBeDisabled(); - - fireEvent.mouseOver(screen.getByTestId('pin')); - - await waitFor(() => { - expect(screen.getByTestId('timeline-action-pin-tool-tip')).toBeVisible(); - expect(screen.getByTestId('timeline-action-pin-tool-tip')).toHaveTextContent( - 'This event cannot be unpinned because it has notes in Timeline' - ); - /* - * Above event is alert and not an event but `getEventType` in - *x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx - * returns it has event and not an alert even though, it has event.kind as signal. - * Need to see if it is okay - * - * */ - }); - }, - SPECIAL_TEST_TIMEOUT - ); - - it( - 'should allow pinning when event has notes but notes are not attached in current timeline', - async () => { - renderTestComponents(); - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getAllByTestId('pin')).toHaveLength(1); - expect(screen.getByTestId('pin')).not.toBeDisabled(); - - fireEvent.mouseOver(screen.getByTestId('pin')); - await waitFor(() => { - expect(screen.getByTestId('timeline-action-pin-tool-tip')).toBeVisible(); - expect(screen.getByTestId('timeline-action-pin-tool-tip')).toHaveTextContent( - 'Pin event' - ); - }); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - - describe('securitySolutionNotesDisabled = true', () => { - beforeEach(() => { - (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( - jest.fn((feature: keyof ExperimentalFeatures) => { - if (feature === 'securitySolutionNotesDisabled') { - return true; - } - return allowedExperimentalValues[feature]; - }) - ); - }); - - it( - 'should have the pin button with correct tooltip', - async () => { - renderTestComponents(); - - expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); - - expect(screen.getAllByTestId('pin')).toHaveLength(1); - // disabled because it is already pinned - expect(screen.getByTestId('pin')).toBeDisabled(); - - fireEvent.mouseOver(screen.getByTestId('pin')); - - await waitFor(() => { - expect(screen.getByTestId('timeline-action-pin-tool-tip')).toBeVisible(); - expect(screen.getByTestId('timeline-action-pin-tool-tip')).toHaveTextContent( - 'This event cannot be unpinned because it has notes' - ); - /* - * Above event is alert and not an event but `getEventType` in - * x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx - * returns it has event and not an alert even though, it has event.kind as signal. - * Need to see if it is okay - * - * */ - }); - }, - SPECIAL_TEST_TIMEOUT - ); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/timelines/jest.config.js b/x-pack/plugins/security_solution/public/timelines/jest.config.js deleted file mode 100644 index e2d6858969393..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/public/timelines'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/public/timelines', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/public/timelines/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../../server/__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/README.md b/x-pack/plugins/security_solution/scripts/endpoint/README.md deleted file mode 100644 index 2827ab065504b..0000000000000 --- a/x-pack/plugins/security_solution/scripts/endpoint/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Resolver Generator Script - -This script makes it easy to create the endpoint metadata, alert, and event documents needed to test Resolver in Kibana. -The default behavior is to create 1 endpoint with 1 alert and a moderate number of events (random, typically on the order of 20). -A seed value can be provided as a string for the random number generator for repeatable behavior, useful for demos etc. -Use the `-d` option if you want to delete and remake the indices, otherwise it will add documents to existing indices. - -Example command sequence to get ES and kibana running with sample data after installing ts-node: - -`yarn es snapshot` -> starts ES - -`npx yarn start --no-base-path` -> starts kibana. Note: you may need other configurations steps to start the security solution with endpoint support. - -`cd x-pack/plugins/security_solution/scripts/endpoint` - -`yarn test:generate` -> run the resolver_generator.ts script - -To see Resolver generator CLI options, run `yarn test:generate --help`. diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/README.md b/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/README.md deleted file mode 100644 index 48e1da2ef442f..0000000000000 --- a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# API Emulator - -API Emulator is a framework wrapped around [Hapi](https://hapi.dev/) that enables developer to quickly create API interfaces for development and testing purposes. Emulator plugins (a wrapper around [Hapi plugins](https://hapi.dev/api/?v=21.3.3#plugins)) is the mechanism used to create an given set of APIs for emulation, and these are then added to the server framework which makes them available via the server's routes. - -The following script can be used to start the External EDR Server Emulator from the command line: - -```shell -node x-pack/plugins/security_solution/scripts/endpoint/start_external_edr_server_emulator.js -``` - -Use the `--help` option to view what arguments can be used - -For usages other than the command line, see the Development section below. - - - -## Development - -### Adding an new Plugin - -Plugins are the mechanism for adding API emulators into this framework. Each plugin is defined via an object that includes at a minimum the `name` and a `register()` callback. This callback for registering the plugin will be provided with an interface that allows the plugin to interact with the HTTP server and provide access to "core" services available at the server level for use by all plugins. - -Example: A method that returns the definition for a plugin - -```typescript - -export const getFooPluginRegistration = () => { - return { - name: 'foo', // [1] - register(server) { - // register routes - server.router.route({ - path: '/api/get', // [2] - method: 'GET', - handler: async (req, h) => { - return 'alive!'; - } - }) - } - } -} -``` - -In the above example: - -1. a plugin with the name `foo` [1] will be registered. The name of the plugin will also be the default `prefix` to all API routes (an optional attributed named `prefix` is also available if wanting to use a different value for the namespacing the routes). -2. the `register()` callback will be given a `server` argument that provides access to server level services like the HTTP `router` -3. a new route is registered [2], which will be mounted at `/foo/api/get` - note the use of the plugin name as the route prefix - - -#### Plugin HTTP routes - -HTTP route handlers work very similar to the route handlers in Kibana today. You are given a `Request` and a Response Factory by the Hapi framework - see the [HAPI docs on Lifecycle Methods](https://hapi.dev/api/?v=21.3.3#lifecycle-methods) for more details. - -This emulator framework will expose the core services (ex. for the EDR server emulator, this would include Kibana and Elasticsearch clients) to each route under `request.pre` (pre-handler methods). - -Example: a route handler under the EDR server emulator that returns the version of kibana - -```typescript - -const handler = async (req, h) => { - const kbnStatus = await req.pre.services.kbnClient.status.get(); - - return kbnStatus.version.number; -} - -``` diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/README.md b/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/README.md deleted file mode 100644 index d2e519a0aab68..0000000000000 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Solution Serverless Resources - -Directory contains ES serverless resources that can be used to override the defaults that are loaded when ES is started in serverless mode. For more information on how these are used [packages/kbn-es/src/serverless_resources/README.md](https://github.com/elastic/kibana/blob/main/packages/kbn-es/src/serverless_resources/README.md) - -> **ℹ️ NOTE** -> -> The files referenced via `--resources` argument will be bound and mounted to the ES docker containers that are running ES. This means that any changes to the files done on the host machine will be automatically (after a delay - 5s by default) picked up by Elasticsearch and applied to the ES docker nodes. - -## Usage - -Example executed from the root directory of Kibana: - -```shell -yarn es serverless \ ---clean \ ---kill \ --E xpack.security.authc.api_key.enabled=true \ --E http.host=0.0.0.0 \ ---resources=./x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml \ ---resources=./x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users \ ---resources=./x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users_roles -``` - -> **💡️TIP** -> -> If needing to make custom changes to any of the ES resources for personal dev. purposes, copy the files located in this folder to your own local directly, make changes there and then use those file paths when starting ES - - - -## Files - -### `roles.yml` - -The list of Roles that are loaded into security serverless projects. The values in this file should match those in the [project controller](https://github.com/elastic/project-controller/blob/main/internal/project/security/config/roles.yml) and should remain in sync. - -### `users` - -List of users that are loaded into ES for serverless. This file currently includes a user for each of the Security Project roles (same name as the role). All users in this file have their password set to `changeme` - -Format: `user:encrypted_password` - -### `users_roles` - -A map of role names (should match those define in the `roles.yml`) to list of users (values found in the `users` file). All Security serverless roles are listed in this file along with one user by the same name. - -Format: `role_name:username,username,username` - diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts deleted file mode 100644 index 38256f1c774bd..0000000000000 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/** - * Generic common interface for a Host Virtual Machine. - */ -export interface HostVm { - type: SupportedVmManager; - name: string; - exec: (command: string) => Promise<HostVmExecResponse>; - mount: (localDir: string, hostVmDir: string) => Promise<HostVmMountResponse>; - unmount: (hostVmDir: string) => Promise<void>; - /** Uploads/copies a file from the local machine to the VM */ - transfer: (localFilePath: string, destFilePath: string) => Promise<HostVmTransferResponse>; - destroy: () => Promise<void>; - info: () => string; - stop: () => void; - start: () => void; -} - -export type SupportedVmManager = 'multipass' | 'vagrant'; -export interface HostVmExecResponse { - stdout: string; - stderr: string; - exitCode: number; -} -export interface HostVmMountResponse { - hostDir: string; - unmount: () => Promise<void>; -} -export interface HostVmTransferResponse { - /** The file path of the file on the host vm */ - filePath: string; - /** Delete the file from the host VM */ - delete: () => Promise<HostVmExecResponse>; -} diff --git a/x-pack/plugins/security_solution/scripts/jest.config.js b/x-pack/plugins/security_solution/scripts/jest.config.js deleted file mode 100644 index dba0d6bc5bade..0000000000000 --- a/x-pack/plugins/security_solution/scripts/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/scripts'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/scripts', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/scripts/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/security_solution/scripts/mappings/README.md b/x-pack/plugins/security_solution/scripts/mappings/README.md deleted file mode 100644 index 4c612c5efb13f..0000000000000 --- a/x-pack/plugins/security_solution/scripts/mappings/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Huge Indices with Unmapped Fields Generator/Loader Scripts - -This script makes it easy to generate and load big amount of indices with huge amount of fields. -It is also easy to specify what portion of those fields should be unmapped across various indices. -The purpose of this scripts is to be able to test `_field_caps` APIs which we use to fetch fields, -especially with `include_unmapped` options set. - -There are two different scripts: -1. `mappings_generator.js` which generates indices -2. `mappings_loader.js` which loads all generated indices to ES - -## Examples. - -### Generate 1k indices (split into 10 buckets with 100 indices each) with 10k fields (with 20% randomly unmapped fields within each index) - -> `node mappings_generator.js --fieldsCount=10000 --indexCount=1000 --indexPrefix='.ds-huge' --unmappedRate=.2 --buckets=10 --outputDirectory='test_unmapped'` - -The result of this operation will be 10 separate bucket folders within `test_unmapped`. Each bucket folder will contain a `mappings.json` file describing 100 indices. - -Available attributes: -* `--fieldsCount` (*required*): the number of fields in generated index -* `--indexCount` (*required*): the number of indices to be generated -* `--indexPrefix` (*required*): the prefix for the generated indices -* `--unmappedRate` (*required*): the percentage of unmapped fields in each index (value ranges from 0.0 to 1.0) -* `--buckets` (*optional, default value is 1*): it is possible to split the generated indices mappings into the smaller chunks -* `--outputDirectory` (*required*): the output folder -* `--purgeOutputDirectory` (*optional, default value is false*): the flag indicating whether we should purge output folder before generating new mappings - -### Load all generated buckets generated via previous command - -> `node mappings_loader.js --mappings-dir='test_unmapped' --es-url=http://elastic:changeme@localhost:9200 --kibana-url=http://elastic:changeme@localhost:5601/kbn/app` - - -This script will go through each folder in the provided root folder (via `--mappings-dir`) and load each folder with mappings inside using `es_archiver` tool. - - -**NOTE:** The path to `es_archiver` is adjusted for the call of this script using `x-pack/plugins/security_solution/package.json`. If you call this script directly, you will need to adjust it accordingly. diff --git a/x-pack/plugins/security_solution/scripts/openapi/bundle_detections.js b/x-pack/plugins/security_solution/scripts/openapi/bundle_detections.js deleted file mode 100644 index 2c0e36f3db8ee..0000000000000 --- a/x-pack/plugins/security_solution/scripts/openapi/bundle_detections.js +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -require('../../../../../src/setup_node_env'); -const { bundle } = require('@kbn/openapi-bundler'); -const { join, resolve } = require('path'); - -const ROOT = resolve(__dirname, '../..'); - -(async () => { - await bundle({ - sourceGlob: join(ROOT, 'common/api/detection_engine/**/*.schema.yaml'), - outputFilePath: join( - ROOT, - 'docs/openapi/serverless/security_solution_detections_api_{version}.bundled.schema.yaml' - ), - options: { - includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security Detections API (Elastic Cloud Serverless)', - description: - 'You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page.', - }, - tags: [ - { - name: 'Security Detections API', - 'x-displayName': 'Security detections', - description: - 'You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page.', - }, - ], - }, - }, - }); - - await bundle({ - sourceGlob: join(ROOT, 'common/api/detection_engine/**/*.schema.yaml'), - outputFilePath: join( - ROOT, - 'docs/openapi/ess/security_solution_detections_api_{version}.bundled.schema.yaml' - ), - options: { - includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security Detections API (Elastic Cloud and self-hosted)', - description: - 'You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page.', - }, - tags: [ - { - name: 'Security Detections API', - 'x-displayName': 'Security detections', - description: - 'You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page.', - }, - ], - }, - }, - }); -})(); diff --git a/x-pack/plugins/security_solution/scripts/openapi/generate.js b/x-pack/plugins/security_solution/scripts/openapi/generate.js deleted file mode 100644 index bab9fa5f36cc6..0000000000000 --- a/x-pack/plugins/security_solution/scripts/openapi/generate.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -require('../../../../../src/setup_node_env'); -const { generate } = require('@kbn/openapi-generator'); -const { REPO_ROOT } = require('@kbn/repo-info'); -const { resolve, join } = require('path'); - -const SECURITY_SOLUTION_ROOT = resolve(__dirname, '../..'); - -// This script is also run in CI: to track down the scripts that run it in CI, code search for `yarn openapi:generate` in the `.buildkite` top level directory - -(async () => { - await generate({ - title: 'API route schemas', - rootDir: SECURITY_SOLUTION_ROOT, - sourceGlob: './common/**/*.schema.yaml', - templateName: 'zod_operation_schema', - }); - - await generate({ - title: 'API client for tests', - rootDir: SECURITY_SOLUTION_ROOT, - sourceGlob: './common/**/*.schema.yaml', - templateName: 'api_client_supertest', - skipLinting: true, - bundle: { - outFile: join(REPO_ROOT, 'x-pack/test/api_integration/services/security_solution_api.gen.ts'), - }, - }); - - await generate({ - title: 'API client for quickstart', - rootDir: SECURITY_SOLUTION_ROOT, - sourceGlob: './common/**/*.schema.yaml', - templateName: 'api_client_quickstart', - skipLinting: false, - bundle: { - outFile: join( - REPO_ROOT, - 'x-pack/plugins/security_solution/common/api/quickstart_client.gen.ts' - ), - }, - }); -})(); diff --git a/x-pack/plugins/security_solution/scripts/quickstart/README.md b/x-pack/plugins/security_solution/scripts/quickstart/README.md deleted file mode 100644 index 997762a82a27d..0000000000000 --- a/x-pack/plugins/security_solution/scripts/quickstart/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# Quickstart for Developers - -These tools make it fast and easy to create detection rules, exceptions, value lists, and source data for testing. - -## Usage - -`node x-pack/plugins/security_solution/scripts/quickstart/run.js`: Runs the script defined in `scratchpad.ts` -Options: ---username: User name to be used for auth against elasticsearch and kibana (Default: elastic). ---password: User name Password (Default: changeme) ---kibana: The url to Kibana (Default: http://127.0.0.1:5601). In most cases you'll want to set this URL to include the basepath as well. ---apikey: The API key for authentication, overrides username/password - use for serverless projects - -`scratchpad.ts` already contains code to set up clients for Elasticsearch and Kibana. In addition it provides clients for Security Solution, Lists, and Exceptions APIs, built on top of the Kibana client. However, it does not create any rules/exceptions/lists/data - it's a blank slate for you to immediately begin creating the resources you want for testing. Please don't commit data-generating code to `scratchpad.ts`! Instead, when you have built a data-generating script that might be useful to others, please extract the useful components to the `quickstart/modules` folder and leave `scratchpad.ts` empty for the next developer. - -### Environments - -The API clients are designed to work with any delivery method - local, cloud, or serverless deployments. For deployments that do not allow username/password auth, use an API key. - -## Modules - -Extracting data-generating logic into reusable modules that other people will actually use is the hardest part of sharing these scripts. To that end, it's crucial that the modules are organized as neatly as possible and extremely clear about what they do. If the modules are even slightly confusing, it will be faster for people to rebuild the same logic than to figure out how the existing scripts work. - -### Data - -Functions to create documents with various properties. This initial implementation has a function to create a document with an arbitrary number of fields and arbitrary amount of data in each field, but should be extended with more functions to create sets of documents with specific relationships such as X total documents with Y number of unique hosts etc. - -### Entity Analytics - -Functions to help install fake entity analytics data. Useful for testing alert enrichment based on entity analytics. - -### Exceptions - -Functions to help create exceptions with various properties. For example, one helper takes an array of values and automatically creates a value list exception item from that array - internally, it creates the value list and an exception item that references the list. - -### Frozen (TODO) - -Functions to help create frozen tier data quickly. These functions (once implemented) will take existing data and immediately move it to frozen for test purposes. - -### Lists - -Functions to help interact with the Lists APIs. The initial helper function makes it easy to import a value list from an array, since the process of attaching a file to a request (as the API expects) is not that intuitive. - -### Mappings - -Functions to help setup mappings. Provides the ECS mapping as well as helpers to generate mappings with tons of fields. - -### Rules - -Functions to help create rules along with data specific to each rule (WIP). Each sample rule defined in this folder should have an associated function to generate data that triggers alerts for the rule. - -## Speed - -To run a number of API requests in parallel, use `concurrentlyExec` from @kbn/securitysolution-utils. - -## Examples - -### Create a Rule - -``` -// Extra imports -import { concurrentlyExec } from '@kbn/securitysolution-utils/src/client_concurrency'; -import { basicRule } from './modules/rules/new_terms/basic_rule'; -import { duplicateRuleParams } from './modules/rules'; - -// ... omitted client setup stuff - -// Core logic -const ruleCopies = duplicateRuleParams(basicRule, 200); -const functions = ruleCopies.map((rule) => () => detectionsClient.createRule({ body: rule })); -const responses = await concurrentlyExec(functions); -``` - -### Create 200 Rules and an Exception for each one - -``` -// Extra imports -import { concurrentlyExec } from '@kbn/securitysolution-utils/src/client_concurrency'; -import { basicRule } from './modules/rules/new_terms/basic_rule'; -import { duplicateRuleParams } from './modules/rules'; -import { buildCreateRuleExceptionListItemsProps } from './modules/exceptions'; - -// ... omitted client setup stuff - -// Core logic -const ruleCopies = duplicateRuleParams(basicRule, 200); -const response = await detectionsClient.bulkCreateRules({ body: ruleCopies }); -const createdRules: RuleResponse[] = response.data.filter( -(r) => r.id != null -) as RuleResponse[]; - -// This map looks a bit confusing, but the concept is simple: take the rules we just created and -// create a *function* per rule to create an exception for that rule. We want a function to call later instead of just -// calling the API immediately to limit the number of requests in flight (with `concurrentlyExec`) -const exceptionsFunctions = createdRules.map( -(r) => () => - exceptionsClient.createRuleExceptionListItems( - buildCreateRuleExceptionListItemsProps({ id: r.id }) - ) -); -const exceptionsResponses = await concurrentlyExec(exceptionsFunctions); -``` - -### Run 10 Rule Preview Requests Simultaneously - -``` -const previewPromises = range(50).map( - (idx) => () => - detectionsClient.rulePreview({ - body: { - ...getBasicRuleMetadata(), - type: 'query', - timeframeEnd: '2024-08-21T20:37:37.114Z', - invocationCount: 1, - from: 'now-6m', - interval: '5m', - index: [index], - query: '*', - }, - }) -); - -const results = (await concurrentlyExec(previewPromises, 50)).map( - (result) => result.data.logs -); -``` - -## Future Work - -### Interactive Mode - -It may be useful to have a mode where the CLI waits for input from the user and creates resources selected from a predefined list. - -### Resource Tracking/Cleanup - -It may also be useful to have the tooling automatically keep track of the created resources so they can be deleted automatically when finished. diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/utils.ts b/x-pack/plugins/security_solution/scripts/run_cypress/utils.ts deleted file mode 100644 index ba1974565e10c..0000000000000 --- a/x-pack/plugins/security_solution/scripts/run_cypress/utils.ts +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import _ from 'lodash'; -import * as fs from 'fs'; -import * as parser from '@babel/parser'; -import generate from '@babel/generator'; -import type { ExpressionStatement, ObjectExpression, ObjectProperty } from '@babel/types'; -import { schema, type TypeOf } from '@kbn/config-schema'; -import chalk from 'chalk'; - -/** - * Retrieve test files using a glob pattern. - * If process.env.RUN_ALL_TESTS is true, returns all matching files, otherwise, return files that should be run by this job based on process.env.BUILDKITE_PARALLEL_JOB_COUNT and process.env.BUILDKITE_PARALLEL_JOB - */ -export const retrieveIntegrations = (integrationsPaths: string[]) => { - const nonSkippedSpecs = integrationsPaths.filter((filePath) => !isSkipped(filePath)); - - if (process.env.RUN_ALL_TESTS === 'true') { - return nonSkippedSpecs; - } else { - // The number of instances of this job were created - const chunksTotal: number = process.env.BUILDKITE_PARALLEL_JOB_COUNT - ? parseInt(process.env.BUILDKITE_PARALLEL_JOB_COUNT, 10) - : 1; - // An index which uniquely identifies this instance of the job - const chunkIndex: number = process.env.BUILDKITE_PARALLEL_JOB - ? parseInt(process.env.BUILDKITE_PARALLEL_JOB, 10) - : 0; - - const nonSkippedSpecsForChunk: string[] = []; - - for (let i = chunkIndex; i < nonSkippedSpecs.length; i += chunksTotal) { - nonSkippedSpecsForChunk.push(nonSkippedSpecs[i]); - } - - return nonSkippedSpecsForChunk; - } -}; - -export const isSkipped = (filePath: string): boolean => { - const testFile = fs.readFileSync(filePath, { encoding: 'utf8' }); - - const ast = parser.parse(testFile, { - sourceType: 'module', - plugins: ['typescript'], - }); - - const expressionStatement = _.find(ast.program.body, ['type', 'ExpressionStatement']) as - | ExpressionStatement - | undefined; - - const callExpression = expressionStatement?.expression; - - // @ts-expect-error - return callExpression?.callee?.property?.name === 'skip'; -}; - -export const parseTestFileConfig = (filePath: string): SecuritySolutionDescribeBlockFtrConfig => { - const testFile = fs.readFileSync(filePath, { encoding: 'utf8' }); - - const ast = parser.parse(testFile, { - sourceType: 'module', - plugins: ['typescript'], - }); - - const expressionStatement = _.find(ast.program.body, { - type: 'ExpressionStatement', - expression: { callee: { name: 'describe' } }, - }) as ExpressionStatement | undefined; - - const callExpression = expressionStatement?.expression; - // @ts-expect-error - if (expressionStatement?.expression?.arguments?.length === 3) { - // @ts-expect-error - const callExpressionArguments = _.find(callExpression?.arguments, [ - 'type', - 'ObjectExpression', - ]) as ObjectExpression | undefined; - - const callExpressionProperties = _.find(callExpressionArguments?.properties, [ - 'key.name', - 'env', - ]) as ObjectProperty[] | undefined; - // @ts-expect-error - const ftrConfig = _.find(callExpressionProperties?.value?.properties, [ - 'key.name', - 'ftrConfig', - ]); - - if (!ftrConfig) { - return {}; - } - - const ftrConfigCode = generate(ftrConfig.value, { jsonCompatibleStrings: true }).code; - - try { - // TODO:PT need to assess implication of using this approach to get the JSON back out - // eslint-disable-next-line no-new-func - const ftrConfigJson = new Function(`return ${ftrConfigCode}`)(); - return TestFileFtrConfigSchema.validate(ftrConfigJson); - } catch (err) { - throw new Error( - `Failed to parse 'ftrConfig' value defined in 'describe()' at ${filePath}. ${err.message}\nCode: ${ftrConfigCode}` - ); - } - } - - return {}; -}; - -const TestFileFtrConfigSchema = schema.object( - { - license: schema.maybe(schema.string()), - kbnServerArgs: schema.maybe(schema.arrayOf(schema.string())), - productTypes: schema.maybe( - // TODO:PT write validate function to ensure that only the correct combinations are used - schema.arrayOf( - schema.object({ - product_line: schema.oneOf([ - schema.literal('security'), - schema.literal('endpoint'), - schema.literal('cloud'), - ]), - - product_tier: schema.oneOf([schema.literal('essentials'), schema.literal('complete')]), - }) - ) - ), - }, - { defaultValue: {}, unknowns: 'forbid' } -); - -export type SecuritySolutionDescribeBlockFtrConfig = TypeOf<typeof TestFileFtrConfigSchema>; - -export const getOnBeforeHook = (module: unknown, beforeSpecFilePath: string): Function => { - if (typeof module !== 'object' || module === null) { - throw new Error( - `${chalk.bold( - beforeSpecFilePath - )} expected to explicitly export function member named "onBeforeHook"` - ); - } - - if (!('onBeforeHook' in module) || typeof module.onBeforeHook !== 'function') { - throw new Error( - `${chalk.bold('onBeforeHook')} exported from ${chalk.bold( - beforeSpecFilePath - )} is not a function` - ); - } - - return module.onBeforeHook; -}; diff --git a/x-pack/plugins/security_solution/scripts/siem_migration/draw_graphs.js b/x-pack/plugins/security_solution/scripts/siem_migration/draw_graphs.js deleted file mode 100644 index 010b6c15f323c..0000000000000 --- a/x-pack/plugins/security_solution/scripts/siem_migration/draw_graphs.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -require('../../../../../src/setup_node_env'); -require('./draw_graphs_script').draw(); diff --git a/x-pack/plugins/security_solution/scripts/telemetry/README.md b/x-pack/plugins/security_solution/scripts/telemetry/README.md deleted file mode 100644 index f1cfa92dd731c..0000000000000 --- a/x-pack/plugins/security_solution/scripts/telemetry/README.md +++ /dev/null @@ -1,38 +0,0 @@ -## Telemetry data view generation script - -The purpose of the script is to map telemetry fields to runtime fields on the appropriate security solution ebt data views on the staging cluster. This can be used to automate the addition of new fields to the data views. - -### Events -- The browser ebt events come from `telemetryEvents` imported from `x-pack/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events` -- The server ebt events come from: - - `events` imported from `x-pack/plugins/elastic-assistant/server/lib/telemetry/event_based_telemetry` - - `telemetryEvents` imported from `x-pack/plugins/security_solution_serverless/server/telemetry/event_based_telemetry` - - `events` imported from `x-pack/plugins/security_solution/server/lib/telemetry/event_based/events` - -If you have further events to be included in the data views, please update the script to include the event schema. - -### Usage - -1. Login with Vault (`vault login -method oidc`), ensure you have siem-team access. If you have never accessed Vault before, follow [these instructions](https://github.com/elastic/infra/blob/master/docs/vault/README.md) -2. cd into this directory -3. Run the script with the appropriate arguments. By default, the script will run for the `security-solution-ebt-kibana-browser` data view in the `securitysolution` space. If you want to run the script for the server data view, pass the `--telemetry_type` argument with the value `server`. - -```bash -# Run the script for the security-solution-ebt-kibana-browser data view -./build_ebt_data_view.sh - -# Run the script for the security-solution-ebt-server data view -./build_ebt_data_view.sh --telemetry_type=server -``` - -### Data view recovery - -If a security solution ebt data view is for some reason deleted, upload the saved object that is committed in this directory to the staging cluster. This will recreate the data view with the correct mappings. Then you can run this script to ensure any new fields get added. - -#### Why upload the saved object? Why not just run this script? - -There are some fields not covered by this script, at least for the security-solution-ebt-kibana-browser data view (ex: `day_of_week`). I'm not sure where they came from. In order to be on the safe side, the data view saved objects will be updated per minor release to ensure that all fields are covered. - -### Production data views - -This script manages the staging data views. To make updates to the production data views, export the saved objects from staging and upload them to production. diff --git a/x-pack/plugins/security_solution/server/__mocks__/module_name_map.js b/x-pack/plugins/security_solution/server/__mocks__/module_name_map.js deleted file mode 100644 index 61d6b09ba550b..0000000000000 --- a/x-pack/plugins/security_solution/server/__mocks__/module_name_map.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -// See: https://github.com/elastic/kibana/issues/117255, this moduleNameMapper creates -// mocks to avoid memory leaks from kibana core. -module.exports = { - '^@kbn/core/server$': '<rootDir>/x-pack/plugins/security_solution/server/__mocks__/core.mock.ts', - '^@kbn/task-manager-plugin/server$': - '<rootDir>/x-pack/plugins/security_solution/server/__mocks__/task_manager.mock.ts', - '^@kbn/alerting-plugin/server$': - '<rootDir>/x-pack/plugins/security_solution/server/__mocks__/alert.mock.ts', - '^@kbn/actions-plugin/server$': - '<rootDir>/x-pack/plugins/security_solution/server/__mocks__/action.mock.ts', -}; diff --git a/x-pack/plugins/security_solution/server/assistant/jest.config.js b/x-pack/plugins/security_solution/server/assistant/jest.config.js deleted file mode 100644 index 787dae7ce8d68..0000000000000 --- a/x-pack/plugins/security_solution/server/assistant/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/server/assistant'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/server/assistant', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/server/assistant/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/index.ts b/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/index.ts deleted file mode 100644 index 49524a9f15190..0000000000000 --- a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/index.ts +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PromptTemplate } from '@langchain/core/prompts'; -import { DynamicTool } from '@langchain/core/tools'; -import { LLMChain } from 'langchain/chains'; -import { OutputFixingParser } from 'langchain/output_parsers'; - -import type { AssistantTool, AssistantToolParams } from '@kbn/elastic-assistant-plugin/server'; -import type { - DefendInsight, - DefendInsightType, - DefendInsightsPostRequestBody, -} from '@kbn/elastic-assistant-common'; -import type { KibanaRequest } from '@kbn/core/server'; - -import { requestHasRequiredAnonymizationParams } from '@kbn/elastic-assistant-plugin/server/lib/langchain/helpers'; -import { DEFEND_INSIGHTS_TOOL_ID } from '@kbn/elastic-assistant-common'; - -import { APP_UI_ID } from '../../../../common'; -import { securityWorkflowInsightsService } from '../../../endpoint/services'; -import { getAnonymizedEvents } from './get_events'; -import { getDefendInsightsOutputParser } from './output_parsers'; -import { getDefendInsightsPrompt } from './prompts'; -import { buildWorkflowInsights } from './workflow_insights_builders'; - -export const DEFEND_INSIGHTS_TOOL_DESCRIPTION = 'Call this for Elastic Defend insights.'; - -export interface DefendInsightsToolParams extends AssistantToolParams { - endpointIds: string[]; - insightType: DefendInsightType; - request: KibanaRequest<unknown, unknown, DefendInsightsPostRequestBody>; -} - -/** - * Returns a tool for generating Elastic Defend configuration insights - */ -export const DEFEND_INSIGHTS_TOOL: AssistantTool = Object.freeze({ - id: DEFEND_INSIGHTS_TOOL_ID, - name: 'defendInsightsTool', - description: DEFEND_INSIGHTS_TOOL_DESCRIPTION, - sourceRegister: APP_UI_ID, - - isSupported: (params: AssistantToolParams): boolean => { - const { llm, request } = params; - - return requestHasRequiredAnonymizationParams(request) && llm != null; - }, - - getTool(params: AssistantToolParams): DynamicTool | null { - if (!this.isSupported(params)) return null; - - const { - endpointIds, - insightType, - anonymizationFields, - esClient, - langChainTimeout, - llm, - onNewReplacements, - replacements, - request, - } = params as DefendInsightsToolParams; - - return new DynamicTool({ - name: 'DefendInsightsTool', - description: DEFEND_INSIGHTS_TOOL_DESCRIPTION, - func: async () => { - if (llm == null) { - throw new Error('LLM is required for Defend Insights'); - } - - const anonymizedEvents = await getAnonymizedEvents({ - endpointIds, - type: insightType, - anonymizationFields, - esClient, - onNewReplacements, - replacements, - }); - - const eventsContextCount = anonymizedEvents.length; - if (eventsContextCount === 0) { - return JSON.stringify({ eventsContextCount, insights: [] }, null, 2); - } - - const outputParser = getDefendInsightsOutputParser({ type: insightType }); - const outputFixingParser = OutputFixingParser.fromLLM(llm, outputParser); - - const prompt = new PromptTemplate({ - template: `Answer the user's question as best you can:\n{format_instructions}\n{query}`, - inputVariables: ['query'], - partialVariables: { - format_instructions: outputFixingParser.getFormatInstructions(), - }, - }); - - const answerFormattingChain = new LLMChain({ - llm, - prompt, - outputKey: 'records', - outputParser: outputFixingParser, - }); - - const result = await answerFormattingChain.call({ - query: getDefendInsightsPrompt({ - type: insightType, - events: anonymizedEvents, - }), - timeout: langChainTimeout, - }); - const insights: DefendInsight[] = result.records; - - const workflowInsights = buildWorkflowInsights({ - defendInsights: insights, - request, - }); - workflowInsights.map(securityWorkflowInsightsService.create); - - return JSON.stringify({ eventsContextCount, insights }, null, 2); - }, - tags: [DEFEND_INSIGHTS_TOOL_ID], - }); - }, -}); diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/incompatible_antivirus.ts b/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/incompatible_antivirus.ts deleted file mode 100644 index c9d091f76dbc3..0000000000000 --- a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/incompatible_antivirus.ts +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import moment from 'moment'; - -import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; - -import type { DefendInsight } from '@kbn/elastic-assistant-common'; -import type { BuildWorkflowInsightParams } from '.'; -import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; - -import { - ActionType, - Category, - SourceType, - TargetType, -} from '../../../../../common/endpoint/types/workflow_insights'; -import { SUPPORTED_HOST_OS_TYPE } from '../../../../../common/endpoint/constants'; - -export function buildIncompatibleAntivirusWorkflowInsights( - params: BuildWorkflowInsightParams -): SecurityWorkflowInsight[] { - const currentTime = moment(); - const { defendInsights, request } = params; - const { insightType, endpointIds, apiConfig } = request.body; - return defendInsights.map((defendInsight: DefendInsight) => { - const filePaths = (defendInsight.events ?? []).map((event) => event.value); - return { - '@timestamp': currentTime, - // TODO add i18n support - message: 'Incompatible antiviruses detected', - category: Category.Endpoint, - type: insightType, - source: { - type: SourceType.LlmConnector, - id: apiConfig.connectorId, - // TODO use actual time range when we add support - data_range_start: currentTime, - data_range_end: currentTime.clone().add(24, 'hours'), - }, - target: { - type: TargetType.Endpoint, - ids: endpointIds, - }, - action: { - type: ActionType.Refreshed, - timestamp: currentTime, - }, - value: defendInsight.group, - remediation: { - exception_list_items: [ - { - list_id: ENDPOINT_ARTIFACT_LISTS.blocklists.id, - name: defendInsight.group, - description: 'Suggested by Security Workflow Insights', - entries: [ - { - field: 'file.path.caseless', - operator: 'included', - type: 'match_any', - value: filePaths, - }, - ], - // TODO add per policy support - tags: ['policy:all'], - os_types: [ - // TODO pick this based on endpointIds - SUPPORTED_HOST_OS_TYPE[0], - SUPPORTED_HOST_OS_TYPE[1], - SUPPORTED_HOST_OS_TYPE[2], - ], - }, - ], - }, - metadata: { - notes: { - llm_model: apiConfig.model ?? '', - }, - }, - }; - }); -} diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/index.ts b/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/index.ts deleted file mode 100644 index 4694617229f04..0000000000000 --- a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { KibanaRequest } from '@kbn/core/server'; - -import type { DefendInsight, DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; -import { DefendInsightType } from '@kbn/elastic-assistant-common'; -import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; - -import { InvalidDefendInsightTypeError } from '../errors'; -import { buildIncompatibleAntivirusWorkflowInsights } from './incompatible_antivirus'; - -export interface BuildWorkflowInsightParams { - defendInsights: DefendInsight[]; - request: KibanaRequest<unknown, unknown, DefendInsightsPostRequestBody>; -} - -export function buildWorkflowInsights( - params: BuildWorkflowInsightParams -): SecurityWorkflowInsight[] { - if (params.request.body.insightType === DefendInsightType.Enum.incompatible_antivirus) { - return buildIncompatibleAntivirusWorkflowInsights(params); - } - - throw new InvalidDefendInsightTypeError(); -} diff --git a/x-pack/plugins/security_solution/server/assistant/tools/index.ts b/x-pack/plugins/security_solution/server/assistant/tools/index.ts deleted file mode 100644 index dc32e01335b30..0000000000000 --- a/x-pack/plugins/security_solution/server/assistant/tools/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PRODUCT_DOCUMENTATION_TOOL } from './product_docs/product_documentation_tool'; -import { NL_TO_ESQL_TOOL } from './esql/nl_to_esql_tool'; -import { ALERT_COUNTS_TOOL } from './alert_counts/alert_counts_tool'; -import { OPEN_AND_ACKNOWLEDGED_ALERTS_TOOL } from './open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool'; -import { DEFEND_INSIGHTS_TOOL } from './defend_insights'; -import { KNOWLEDGE_BASE_RETRIEVAL_TOOL } from './knowledge_base/knowledge_base_retrieval_tool'; -import { KNOWLEDGE_BASE_WRITE_TOOL } from './knowledge_base/knowledge_base_write_tool'; -import { SECURITY_LABS_KNOWLEDGE_BASE_TOOL } from './security_labs/security_labs_tool'; - -export const assistantTools = [ - ALERT_COUNTS_TOOL, - DEFEND_INSIGHTS_TOOL, - KNOWLEDGE_BASE_RETRIEVAL_TOOL, - KNOWLEDGE_BASE_WRITE_TOOL, - NL_TO_ESQL_TOOL, - OPEN_AND_ACKNOWLEDGED_ALERTS_TOOL, - PRODUCT_DOCUMENTATION_TOOL, - SECURITY_LABS_KNOWLEDGE_BASE_TOOL, -]; diff --git a/x-pack/plugins/security_solution/server/client/jest.config.js b/x-pack/plugins/security_solution/server/client/jest.config.js deleted file mode 100644 index bdf35ce91c864..0000000000000 --- a/x-pack/plugins/security_solution/server/client/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/server/client'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/server/client', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/server/client/**/*.{ts,tsx}'], - moduleNameMapper: require('../__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/server/config.ts b/x-pack/plugins/security_solution/server/config.ts deleted file mode 100644 index 240e452cd44bc..0000000000000 --- a/x-pack/plugins/security_solution/server/config.ts +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { TypeOf } from '@kbn/config-schema'; -import { schema } from '@kbn/config-schema'; -import type { PluginInitializerContext } from '@kbn/core/server'; -import { SIGNALS_INDEX_KEY, DEFAULT_SIGNALS_INDEX } from '../common/constants'; -import type { ExperimentalFeatures } from '../common/experimental_features'; -import { parseExperimentalConfigValue } from '../common/experimental_features'; -import { parseConfigSettings, type ConfigSettings } from '../common/config_settings'; - -/** - * Validates if the value provided is a valid duration for use with Task Manager (ex. 5m, 4s) - */ -const isValidTaskManagerDuration = (value: string): string | undefined => { - if (/^\d+[s,m]{1}$/.test(value)) { - return `Invalid duration [${value}]. Value must be a number followed by either 's' for seconds or 'm' for minutes `; - } -}; - -export const configSchema = schema.object({ - maxRuleImportExportSize: schema.number({ defaultValue: 10000 }), - maxRuleImportPayloadBytes: schema.number({ defaultValue: 10485760 }), - maxTimelineImportExportSize: schema.number({ defaultValue: 10000 }), - maxTimelineImportPayloadBytes: schema.number({ defaultValue: 10485760 }), - - /** - * This is used within the merge strategies: - * server/lib/detection_engine/rule_types/utils/source_fields_merging - * - * For determining which strategy for merging "fields" and "_source" together to get - * runtime fields, constant keywords, etc... - * - * "missingFields" (default) This will only merge fields that are missing from the _source and exist in the fields. - * "noFields" This will turn off all merging of runtime fields, constant keywords from fields. - * "allFields" This will merge and overwrite anything found within "fields" into "_source" before indexing the data. - */ - alertMergeStrategy: schema.oneOf( - [schema.literal('allFields'), schema.literal('missingFields'), schema.literal('noFields')], - { - defaultValue: 'missingFields', - } - ), - - /** - * This is used within the merge strategies: - * server/lib/detection_engine/rule_types/utils/source_fields_merging - * - * For determining if we need to ignore particular "fields" and not merge them with "_source" such as - * runtime fields, constant keywords, etc... - * - * This feature and functionality is mostly as "safety feature" meaning that we have had bugs in the past - * where something down the stack unexpectedly ends up in the fields API which causes documents to not - * be indexable. Rather than changing alertMergeStrategy to be "noFields", you can use this array to add - * any problematic values. - * - * You can use plain dotted notation strings such as "host.name" or a regular expression such as "/host\..+/" - */ - alertIgnoreFields: schema.arrayOf(schema.string(), { - defaultValue: [], - validate(ignoreFields) { - const errors = ignoreFields.flatMap((ignoreField, index) => { - if (ignoreField.startsWith('/') && ignoreField.endsWith('/')) { - try { - new RegExp(ignoreField.slice(1, -1)); - return []; - } catch (error) { - return [`"${error.message}" at array position ${index}`]; - } - } else { - return []; - } - }); - if (errors.length !== 0) { - return errors.join('. '); - } else { - return undefined; - } - }, - }), - [SIGNALS_INDEX_KEY]: schema.string({ defaultValue: DEFAULT_SIGNALS_INDEX }), - - /** - * For internal use. A list of string values (comma delimited) that will enable experimental - * type of functionality that is not yet released. Valid values for this settings need to - * be defined in: - * `x-pack/plugins/security_solution/common/experimental_features.ts` - * under the `allowedExperimentalValues` object - * - * @example - * xpack.securitySolution.enableExperimental: - * - someCrazyFeature - * - someEvenCrazierFeature - */ - enableExperimental: schema.arrayOf(schema.string(), { - defaultValue: () => [], - }), - - /** - * Endpoint Artifacts Configuration: the interval between runs of the task that builds the - * artifacts and associated manifest. - */ - packagerTaskInterval: schema.string({ defaultValue: '60s' }), - - /** - * Endpoint Artifacts Configuration: timeout value for how long the task should run. - */ - packagerTaskTimeout: schema.string({ defaultValue: '20m' }), - - /** - * Artifacts Configuration for package policy update concurrency - */ - packagerTaskPackagePolicyUpdateBatchSize: schema.number({ defaultValue: 25, max: 50, min: 1 }), - - /** - * Complete External Response Actions task: interval duration - */ - completeExternalResponseActionsTaskInterval: schema.string({ - defaultValue: '60s', - validate: isValidTaskManagerDuration, - }), - - /** - * Complete External Response Actions task: Timeout value for how long the task should run - */ - completeExternalResponseActionsTaskTimeout: schema.string({ - defaultValue: '5m', - validate: isValidTaskManagerDuration, - }), - - /** - * For internal use. Specify which version of the Detection Rules fleet package to install - * when upgrading rules. If not provided, the latest compatible package will be installed, - * or if running from a dev environment or -SNAPSHOT build, the latest pre-release package - * will be used (if fleet is available or not within an airgapped environment). - * - * Note: This is for `upgrade only`, which occurs by means of the `useUpgradeSecurityPackages` - * hook when navigating to a Security Solution page. The package version specified in - * `fleet_packages.json` in project root will always be installed first on Kibana start if - * the package is not already installed. - */ - prebuiltRulesPackageVersion: schema.maybe(schema.string()), - enabled: schema.boolean({ defaultValue: true }), - enableUiSettingsValidations: schema.boolean({ defaultValue: false }), - - /** - * The Max number of Bytes allowed for the `upload` endpoint response action - */ - maxUploadResponseActionFileBytes: schema.number({ - defaultValue: 26214400, // 25MB, - max: 104857600, // 100MB, - }), - /** - * Defines the settings for a specific offering of the Security Solution app. - * They override the default values. - * @example - * xpack.securitySolution.offeringSettings: { - * "ILMEnabled": false, - * } - */ - offeringSettings: schema.recordOf(schema.string(), schema.boolean(), { - defaultValue: {}, - }), - entityAnalytics: schema.object({ - riskEngine: schema.object({ - alertSampleSizePerShard: schema.number({ defaultValue: 10_000 }), - }), - assetCriticality: schema.object({ - csvUpload: schema.object({ - errorRetries: schema.number({ defaultValue: 1 }), - maxBulkRequestBodySizeBytes: schema.number({ defaultValue: 100_000 }), // 100KB - }), - }), - entityStore: schema.object({ - syncDelay: schema.duration({ defaultValue: '60s' }), - frequency: schema.duration({ defaultValue: '60s' }), - developer: schema.object({ - pipelineDebugMode: schema.boolean({ defaultValue: false }), - }), - }), - }), -}); - -export type ConfigSchema = TypeOf<typeof configSchema>; - -export type ConfigType = Omit<ConfigSchema, 'offeringSettings'> & { - experimentalFeatures: ExperimentalFeatures; - settings: ConfigSettings; - enableUiSettingsValidations: boolean; -}; - -export const createConfig = (context: PluginInitializerContext): ConfigType => { - const pluginConfig = context.config.get<TypeOf<typeof configSchema>>(); - const logger = context.logger.get('config'); - - const { invalid, features: experimentalFeatures } = parseExperimentalConfigValue( - pluginConfig.enableExperimental - ); - - if (invalid.length) { - logger.warn(`Unsupported "xpack.securitySolution.enableExperimental" values detected. -The following configuration values are no longer supported and should be removed from the kibana configuration file: - - xpack.securitySolution.enableExperimental: -${invalid.map((key) => ` - ${key}`).join('\n')} -`); - } - - const { invalid: invalidConfigSettings, settings } = parseConfigSettings( - pluginConfig.offeringSettings - ); - - if (invalidConfigSettings.length) { - logger.warn(`Unsupported "xpack.securitySolution.offeringSettings" values detected. -The following configuration values are no longer supported and should be removed from the kibana configuration file: -${invalidConfigSettings.map((key) => ` - ${key}`).join('\n')} -`); - } - - return { - ...pluginConfig, - experimentalFeatures, - settings, - }; -}; diff --git a/x-pack/plugins/security_solution/server/endpoint/jest.config.js b/x-pack/plugins/security_solution/server/endpoint/jest.config.js deleted file mode 100644 index 54b164d779377..0000000000000 --- a/x-pack/plugins/security_solution/server/endpoint/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/server/endpoint'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/server/endpoint', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/server/endpoint/**/*.{ts,tsx}'], - moduleNameMapper: require('../__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/metadata/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/services/metadata/mocks.ts deleted file mode 100644 index 51c70a461ee14..0000000000000 --- a/x-pack/plugins/security_solution/server/endpoint/services/metadata/mocks.ts +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { SavedObjectsServiceStart } from '@kbn/core/server'; -import { coreMock, type ElasticsearchClientMock, loggingSystemMock } from '@kbn/core/server/mocks'; -import type { createPackagePolicyServiceMock } from '@kbn/fleet-plugin/server/mocks'; -import type { AgentPolicyServiceInterface, AgentService } from '@kbn/fleet-plugin/server'; -import type { Agent, GetAgentPoliciesResponseItem } from '@kbn/fleet-plugin/common'; -import type { - PolicyData, - UnitedAgentMetadataPersistedData, -} from '../../../../common/endpoint/types'; -import { FleetAgentPolicyGenerator } from '../../../../common/endpoint/data_generators/fleet_agent_policy_generator'; -import { FleetAgentGenerator } from '../../../../common/endpoint/data_generators/fleet_agent_generator'; -import { FleetPackagePolicyGenerator } from '../../../../common/endpoint/data_generators/fleet_package_policy_generator'; -import { applyEsClientSearchMock } from '../../mocks/utils.mock'; -import type { EndpointInternalFleetServicesInterfaceMocked } from '../fleet/endpoint_fleet_services_factory.mocks'; -import { createEndpointFleetServicesFactoryMock } from '../fleet/endpoint_fleet_services_factory.mocks'; -import { createMockEndpointAppContextServiceStartContract } from '../../mocks'; -import { EndpointMetadataService } from './endpoint_metadata_service'; -import { SavedObjectsClientFactory } from '../saved_objects'; -import { - METADATA_UNITED_INDEX, - metadataCurrentIndexPattern, -} from '../../../../common/endpoint/constants'; -import { EndpointMetadataGenerator } from '../../../../common/endpoint/data_generators/endpoint_metadata_generator'; - -/** - * Endpoint Metadata Service test context. Includes an instance of `EndpointMetadataService` along with the - * dependencies that were used to initialize that instance. - */ -export interface EndpointMetadataServiceTestContextMock { - savedObjectsStart: jest.Mocked<SavedObjectsServiceStart>; - agentService: jest.Mocked<AgentService>; - agentPolicyService: jest.Mocked<AgentPolicyServiceInterface>; - packagePolicyService: ReturnType<typeof createPackagePolicyServiceMock>; - endpointMetadataService: EndpointMetadataService; - fleetServices: EndpointInternalFleetServicesInterfaceMocked; - logger: ReturnType<ReturnType<typeof loggingSystemMock.create>['get']>; - esClient: ElasticsearchClientMock; - applyMetadataMocks: typeof applyMetadataMocks; -} - -export const createEndpointMetadataServiceTestContextMock = - (): EndpointMetadataServiceTestContextMock => { - const logger = loggingSystemMock.create().get(); - const { esClient, fleetStartServices, savedObjectsServiceStart } = - createMockEndpointAppContextServiceStartContract(); - const savedObjectsServiceFactory = new SavedObjectsClientFactory( - savedObjectsServiceStart, - coreMock.createSetup().http - ); - const fleetServices = createEndpointFleetServicesFactoryMock({ - fleetDependencies: fleetStartServices, - savedObjects: savedObjectsServiceFactory, - }).service.asInternalUser(); - const endpointMetadataService = new EndpointMetadataService( - esClient, - savedObjectsServiceFactory.createInternalScopedSoClient({ readonly: false }), - fleetServices, - logger - ); - - fleetServices.packagePolicy.list.mockImplementation(async (_, options) => { - return { - items: [], - total: 0, - page: options.page ?? 1, - perPage: options.perPage ?? 10, - }; - }); - - return { - savedObjectsStart: savedObjectsServiceStart, - agentService: { - asInternalUser: fleetServices.agent, - asScoped: jest.fn().mockReturnValue(fleetServices.agent), - asInternalScopedUser: jest.fn().mockReturnValue(fleetServices.agent), - }, - agentPolicyService: fleetServices.agentPolicy, - packagePolicyService: fleetServices.packagePolicy, - logger, - endpointMetadataService, - fleetServices, - applyMetadataMocks, - esClient: esClient as ElasticsearchClientMock, - }; - }; - -export interface ApplyMetadataMocksResponse { - unitedMetadata: UnitedAgentMetadataPersistedData; - integrationPolicies: PolicyData[]; - agentPolicies: GetAgentPoliciesResponseItem[]; - agents: Agent[]; -} - -/** - * Apply mocks to the various services used to retrieve metadata via the EndpointMetadataService. - * Returns the data that is used in the mocks, thus allowing manipulation of it before running the - * test. - * @param esClientMock - * @param fleetServices - */ -export const applyMetadataMocks = ( - esClientMock: ElasticsearchClientMock, - fleetServices: EndpointInternalFleetServicesInterfaceMocked -): ApplyMetadataMocksResponse => { - const metadataGenerator = new EndpointMetadataGenerator('seed'); - const fleetIntegrationPolicyGenerator = new FleetPackagePolicyGenerator('seed'); - const fleetAgentGenerator = new FleetAgentGenerator('seed'); - const fleetAgentPolicyGenerator = new FleetAgentPolicyGenerator('seed'); - - const unitedMetadata = metadataGenerator.generateUnitedAgentMetadata(); - const integrationPolicies = [ - fleetIntegrationPolicyGenerator.generateEndpointPackagePolicy({ - id: unitedMetadata.united.endpoint.Endpoint.policy.applied.id, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - policy_ids: [unitedMetadata.united.agent.policy_id!], - }), - ]; - const agentPolicies = [ - fleetAgentPolicyGenerator.generate({ id: unitedMetadata.united.agent.policy_id }), - ]; - const agents = [ - fleetAgentGenerator.generate({ - id: unitedMetadata.agent.id, - policy_id: agentPolicies[0].id, - }), - ]; - - applyEsClientSearchMock({ - esClientMock, - index: METADATA_UNITED_INDEX, - response: metadataGenerator.toEsSearchResponse([ - metadataGenerator.toEsSearchHit(unitedMetadata, METADATA_UNITED_INDEX), - ]), - }); - - applyEsClientSearchMock({ - esClientMock, - index: metadataCurrentIndexPattern, - response: metadataGenerator.toEsSearchResponse([ - metadataGenerator.toEsSearchHit(unitedMetadata.united.endpoint, metadataCurrentIndexPattern), - ]), - }); - - fleetServices.packagePolicy.list.mockImplementation(async (_, { page = 1 }) => { - // FYI: need to implement returning an empty list of items after page 1 due to how - // `getAllEndpointPackagePolicies()` is currently looping through all policies - // See `x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.ts` - return { - items: page === 1 ? integrationPolicies : [], - page: 1, - total: 1, - perPage: 20, - }; - }); - - fleetServices.packagePolicy.get.mockImplementation(async () => { - return integrationPolicies[0]; - }); - - fleetServices.agentPolicy.getByIds.mockImplementation(async () => { - return agentPolicies; - }); - - fleetServices.agentPolicy.get.mockImplementation(async () => { - return agentPolicies[0]; - }); - - fleetServices.agent.getByIds.mockImplementation(async () => { - return agents; - }); - - fleetServices.agent.getAgent.mockImplementation(async () => { - return agents[0]; - }); - - return { - unitedMetadata, - integrationPolicies, - agentPolicies, - agents, - }; -}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts deleted file mode 100644 index 119c1848f6a1a..0000000000000 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { ElasticsearchClient } from '@kbn/core/server'; - -import { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; -import { DefendInsightType } from '@kbn/elastic-assistant-common'; -import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; -import { kibanaPackageJson } from '@kbn/repo-info'; - -import type { SearchParams } from '../../../../common/endpoint/types/workflow_insights'; - -import { buildEsQueryParams, createDatastream, createPipeline } from './helpers'; -import { - DATA_STREAM_PREFIX, - COMPONENT_TEMPLATE_NAME, - INDEX_TEMPLATE_NAME, - INGEST_PIPELINE_NAME, - TOTAL_FIELDS_LIMIT, -} from './constants'; -import { securityWorkflowInsightsFieldMap } from './field_map_configurations'; -import { - ActionType, - Category, - SourceType, - TargetType, -} from '../../../../common/endpoint/types/workflow_insights'; - -jest.mock('@kbn/data-stream-adapter', () => ({ - DataStreamSpacesAdapter: jest.fn().mockImplementation(() => ({ - setComponentTemplate: jest.fn(), - setIndexTemplate: jest.fn(), - })), -})); - -describe('helpers', () => { - describe('createDatastream', () => { - it('should create a DataStreamSpacesAdapter with the correct configuration', () => { - const kibanaVersion = kibanaPackageJson.version; - const ds = createDatastream(kibanaVersion); - - expect(DataStreamSpacesAdapter).toHaveBeenCalledTimes(1); - expect(DataStreamSpacesAdapter).toHaveBeenCalledWith(DATA_STREAM_PREFIX, { - kibanaVersion, - totalFieldsLimit: TOTAL_FIELDS_LIMIT, - }); - expect(ds.setComponentTemplate).toHaveBeenCalledTimes(1); - expect(ds.setComponentTemplate).toHaveBeenCalledWith({ - name: COMPONENT_TEMPLATE_NAME, - fieldMap: securityWorkflowInsightsFieldMap, - }); - expect(ds.setIndexTemplate).toHaveBeenCalledTimes(1); - expect(ds.setIndexTemplate).toHaveBeenCalledWith({ - name: INDEX_TEMPLATE_NAME, - componentTemplateRefs: [COMPONENT_TEMPLATE_NAME], - template: { - settings: { - default_pipeline: INGEST_PIPELINE_NAME, - }, - }, - hidden: true, - }); - }); - }); - - describe('createPipeline', () => { - let esClient: ElasticsearchClient; - - beforeEach(() => { - esClient = elasticsearchServiceMock.createElasticsearchClient(); - }); - - it('should create an ingest pipeline with the correct configuration', async () => { - await createPipeline(esClient); - - expect(esClient.ingest.putPipeline).toHaveBeenCalledTimes(1); - expect(esClient.ingest.putPipeline).toHaveBeenCalledWith({ - id: INGEST_PIPELINE_NAME, - processors: [], - _meta: { - managed: true, - }, - }); - }); - }); - - describe('buildEsQueryParams', () => { - it('should build es query correct', () => { - const searchParams: SearchParams = { - size: 50, - from: 50, - ids: ['id1', 'id2'], - categories: [Category.Endpoint], - types: [DefendInsightType.Enum.incompatible_antivirus], - sourceTypes: [SourceType.LlmConnector], - sourceIds: ['source-id1', 'source-id2'], - targetTypes: [TargetType.Endpoint], - targetIds: ['target-id1', 'target-id2'], - actionTypes: [ActionType.Refreshed, ActionType.Remediated], - }; - const result = buildEsQueryParams(searchParams); - expect(result).toEqual([ - { - terms: { - _id: ['id1', 'id2'], - }, - }, - { - terms: { - categories: ['endpoint'], - }, - }, - { - terms: { - types: ['incompatible_antivirus'], - }, - }, - { - terms: { - 'source.type': ['llm-connector'], - }, - }, - { - terms: { - 'source.id': ['source-id1', 'source-id2'], - }, - }, - { - terms: { - 'target.type': ['endpoint'], - }, - }, - { - terms: { - 'target.id': ['target-id1', 'target-id2'], - }, - }, - { - terms: { - 'action.type': ['refreshed', 'remediated'], - }, - }, - ]); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts deleted file mode 100644 index f0057faed6aa6..0000000000000 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { get as _get } from 'lodash'; - -import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; -import type { ElasticsearchClient } from '@kbn/core/server'; - -import { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; - -import type { SearchParams } from '../../../../common/endpoint/types/workflow_insights'; - -import { - COMPONENT_TEMPLATE_NAME, - DATA_STREAM_PREFIX, - INDEX_TEMPLATE_NAME, - INGEST_PIPELINE_NAME, - TOTAL_FIELDS_LIMIT, -} from './constants'; -import { securityWorkflowInsightsFieldMap } from './field_map_configurations'; - -export function createDatastream(kibanaVersion: string): DataStreamSpacesAdapter { - const ds = new DataStreamSpacesAdapter(DATA_STREAM_PREFIX, { - kibanaVersion, - totalFieldsLimit: TOTAL_FIELDS_LIMIT, - }); - ds.setComponentTemplate({ - name: COMPONENT_TEMPLATE_NAME, - fieldMap: securityWorkflowInsightsFieldMap, - }); - ds.setIndexTemplate({ - name: INDEX_TEMPLATE_NAME, - componentTemplateRefs: [COMPONENT_TEMPLATE_NAME], - template: { - settings: { - default_pipeline: INGEST_PIPELINE_NAME, - }, - }, - hidden: true, - }); - return ds; -} - -export async function createPipeline(esClient: ElasticsearchClient): Promise<boolean> { - const response = await esClient.ingest.putPipeline({ - id: INGEST_PIPELINE_NAME, - processors: [ - // requires @elastic/elasticsearch 8.16.0 - // { - // fingerprint: { - // fields: ['type', 'category', 'value', 'target.type', 'target.id'], - // target_field: '_id', - // method: 'SHA-256', - // if: 'ctx._id == null', - // }, - // }, - ], - _meta: { - managed: true, - }, - }); - return response.acknowledged; -} - -const validKeys = new Set([ - 'ids', - 'categories', - 'types', - 'sourceTypes', - 'sourceIds', - 'targetTypes', - 'targetIds', - 'actionTypes', -]); -const paramFieldMap = { - ids: '_id', - sourceTypes: 'source.type', - sourceIds: 'source.id', - targetTypes: 'target.type', - targetIds: 'target.id', - actionTypes: 'action.type', -}; -export function buildEsQueryParams(searchParams: SearchParams): QueryDslQueryContainer[] { - return Object.entries(searchParams).reduce((acc: object[], [k, v]) => { - if (!validKeys.has(k)) { - return acc; - } - - const paramKey = _get(paramFieldMap, k, k); - const next = { terms: { [paramKey]: v } }; - - return [...acc, next]; - }, []); -} diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts deleted file mode 100644 index 1b7ba20f6af88..0000000000000 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts +++ /dev/null @@ -1,325 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { merge } from 'lodash'; -import moment from 'moment'; -import { ReplaySubject } from 'rxjs'; - -import type { ElasticsearchClient, Logger } from '@kbn/core/server'; - -import { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; -import { DefendInsightType } from '@kbn/elastic-assistant-common'; -import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; -import { kibanaPackageJson } from '@kbn/repo-info'; -import { loggerMock } from '@kbn/logging-mocks'; - -import type { - SearchParams, - SecurityWorkflowInsight, -} from '../../../../common/endpoint/types/workflow_insights'; - -import { - Category, - SourceType, - TargetType, - ActionType, -} from '../../../../common/endpoint/types/workflow_insights'; -import { createDatastream, createPipeline } from './helpers'; -import { securityWorkflowInsightsService } from '.'; -import { DATA_STREAM_NAME } from './constants'; - -jest.mock('./helpers', () => { - const original = jest.requireActual('./helpers'); - return { - ...original, - createDatastream: jest.fn(), - createPipeline: jest.fn(), - }; -}); - -function getDefaultInsight(overrides?: Partial<SecurityWorkflowInsight>): SecurityWorkflowInsight { - const defaultInsight = { - '@timestamp': moment(), - message: 'This is a test message', - category: Category.Endpoint, - type: DefendInsightType.Enum.incompatible_antivirus, - source: { - type: SourceType.LlmConnector, - id: 'openai-connector-id', - data_range_start: moment(), - data_range_end: moment(), - }, - target: { - type: TargetType.Endpoint, - ids: ['endpoint-1', 'endpoint-2'], - }, - action: { - type: ActionType.Refreshed, - timestamp: moment(), - }, - value: 'unique-key', - remediation: { - exception_list_items: [ - { - list_id: 'example-list-id', - name: 'Example List Name', - description: 'Example description', - entries: [ - { - field: 'example-field', - operator: 'included', - type: 'match', - value: 'example-value', - }, - ], - tags: ['example-tag'], - os_types: ['windows', 'linux'], - }, - ], - }, - metadata: { - notes: { - key1: 'value1', - key2: 'value2', - }, - message_variables: ['variable1', 'variable2'], - }, - }; - return merge(defaultInsight, overrides); -} - -describe('SecurityWorkflowInsightsService', () => { - let logger: Logger; - let esClient: ElasticsearchClient; - - beforeEach(() => { - logger = loggerMock.create(); - esClient = elasticsearchServiceMock.createElasticsearchClient(); - }); - - afterEach(() => { - jest.clearAllMocks(); - }); - - describe('setup', () => { - it('should set up the data stream', () => { - const createDatastreamMock = createDatastream as jest.Mock; - createDatastreamMock.mockReturnValueOnce( - new DataStreamSpacesAdapter(DATA_STREAM_NAME, { - kibanaVersion: kibanaPackageJson.version, - }) - ); - - securityWorkflowInsightsService.setup({ - kibanaVersion: kibanaPackageJson.version, - logger, - isFeatureEnabled: true, - }); - - expect(createDatastreamMock).toHaveBeenCalledTimes(1); - expect(createDatastreamMock).toHaveBeenCalledWith(kibanaPackageJson.version); - }); - - it('should log a warning if createDatastream throws an error', () => { - const createDatastreamMock = createDatastream as jest.Mock; - createDatastreamMock.mockImplementation(() => { - throw new Error('test error'); - }); - - securityWorkflowInsightsService.setup({ - kibanaVersion: kibanaPackageJson.version, - logger, - isFeatureEnabled: true, - }); - - expect(logger.warn).toHaveBeenCalledTimes(1); - expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('test error')); - }); - }); - - describe('start', () => { - it('should start the service', async () => { - const createDatastreamMock = createDatastream as jest.Mock; - const ds = new DataStreamSpacesAdapter(DATA_STREAM_NAME, { - kibanaVersion: kibanaPackageJson.version, - }); - const dsInstallSpy = jest.spyOn(ds, 'install'); - dsInstallSpy.mockResolvedValueOnce(); - createDatastreamMock.mockReturnValueOnce(ds); - const createPipelineMock = createPipeline as jest.Mock; - createPipelineMock.mockResolvedValueOnce(true); - const createDataStreamMock = esClient.indices.createDataStream as jest.Mock; - - securityWorkflowInsightsService.setup({ - kibanaVersion: kibanaPackageJson.version, - logger, - isFeatureEnabled: true, - }); - expect(createDatastreamMock).toHaveBeenCalledTimes(1); - expect(createDatastreamMock).toHaveBeenCalledWith(kibanaPackageJson.version); - - await securityWorkflowInsightsService.start({ esClient }); - - expect(createPipelineMock).toHaveBeenCalledTimes(1); - expect(createPipelineMock).toHaveBeenCalledWith(esClient); - expect(dsInstallSpy).toHaveBeenCalledTimes(1); - expect(dsInstallSpy).toHaveBeenCalledWith({ - logger, - esClient, - pluginStop$: expect.any(ReplaySubject), - }); - expect(createDataStreamMock).toHaveBeenCalledTimes(1); - expect(createDataStreamMock).toHaveBeenCalledWith({ name: DATA_STREAM_NAME }); - }); - - it('should log a warning if createPipeline or ds.install throws an error', async () => { - securityWorkflowInsightsService.setup({ - kibanaVersion: kibanaPackageJson.version, - logger, - isFeatureEnabled: true, - }); - - const createPipelineMock = createPipeline as jest.Mock; - createPipelineMock.mockImplementationOnce(() => { - throw new Error('test error'); - }); - - await securityWorkflowInsightsService.start({ esClient }); - - expect(logger.warn).toHaveBeenCalledTimes(2); - expect(logger.warn).toHaveBeenNthCalledWith(1, expect.stringContaining('test error')); - }); - }); - - describe('create', () => { - it('should index the doc correctly', async () => { - const isInitializedSpy = jest - .spyOn(securityWorkflowInsightsService, 'isInitialized', 'get') - .mockResolvedValueOnce([undefined, undefined]); - - await securityWorkflowInsightsService.start({ esClient }); - const insight = getDefaultInsight(); - await securityWorkflowInsightsService.create(insight); - - // ensure it waits for initialization first - expect(isInitializedSpy).toHaveBeenCalledTimes(1); - // indexes the doc - expect(esClient.index).toHaveBeenCalledTimes(1); - expect(esClient.index).toHaveBeenCalledWith({ - index: DATA_STREAM_NAME, - body: insight, - refresh: 'wait_for', - }); - }); - }); - - describe('update', () => { - it('should update the doc correctly', async () => { - const isInitializedSpy = jest - .spyOn(securityWorkflowInsightsService, 'isInitialized', 'get') - .mockResolvedValueOnce([undefined, undefined]); - - await securityWorkflowInsightsService.start({ esClient }); - const insightId = 'some-insight-id'; - const insight = getDefaultInsight(); - const indexName = 'backing-index-name'; - await securityWorkflowInsightsService.update(insightId, insight, indexName); - - // ensure it waits for initialization first - expect(isInitializedSpy).toHaveBeenCalledTimes(1); - // updates the doc - expect(esClient.update).toHaveBeenCalledTimes(1); - expect(esClient.update).toHaveBeenCalledWith({ - index: indexName, - id: insightId, - body: { doc: insight }, - refresh: 'wait_for', - }); - }); - }); - - describe('fetch', () => { - it('should fetch the docs with the correct params', async () => { - const isInitializedSpy = jest - .spyOn(securityWorkflowInsightsService, 'isInitialized', 'get') - .mockResolvedValueOnce([undefined, undefined]); - - await securityWorkflowInsightsService.start({ esClient }); - const searchParams: SearchParams = { - size: 50, - from: 50, - ids: ['id1', 'id2'], - categories: [Category.Endpoint], - types: [DefendInsightType.Enum.incompatible_antivirus], - sourceTypes: [SourceType.LlmConnector], - sourceIds: ['source-id1', 'source-id2'], - targetTypes: [TargetType.Endpoint], - targetIds: ['target-id1', 'target-id2'], - actionTypes: [ActionType.Refreshed, ActionType.Remediated], - }; - await securityWorkflowInsightsService.fetch(searchParams); - - // ensure it waits for initialization first - expect(isInitializedSpy).toHaveBeenCalledTimes(1); - // fetches the doc - expect(esClient.search).toHaveBeenCalledTimes(1); - expect(esClient.search).toHaveBeenCalledWith({ - index: DATA_STREAM_NAME, - body: { - query: { - bool: { - must: [ - { - terms: { - _id: ['id1', 'id2'], - }, - }, - { - terms: { - categories: ['endpoint'], - }, - }, - { - terms: { - types: ['incompatible_antivirus'], - }, - }, - { - terms: { - 'source.type': ['llm-connector'], - }, - }, - { - terms: { - 'source.id': ['source-id1', 'source-id2'], - }, - }, - { - terms: { - 'target.type': ['endpoint'], - }, - }, - { - terms: { - 'target.id': ['target-id1', 'target-id2'], - }, - }, - { - terms: { - 'action.type': ['refreshed', 'remediated'], - }, - }, - ], - }, - }, - size: searchParams.size, - from: searchParams.from, - }, - }); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts deleted file mode 100644 index e03b9340e9784..0000000000000 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ReplaySubject, firstValueFrom, combineLatest } from 'rxjs'; - -import type { - SearchHit, - UpdateResponse, - WriteResponseBase, -} from '@elastic/elasticsearch/lib/api/types'; -import type { ElasticsearchClient, Logger } from '@kbn/core/server'; -import type { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; - -import type { - SearchParams, - SecurityWorkflowInsight, -} from '../../../../common/endpoint/types/workflow_insights'; - -import { SecurityWorkflowInsightsFailedInitialized } from './errors'; -import { buildEsQueryParams, createDatastream, createPipeline } from './helpers'; -import { DATA_STREAM_NAME } from './constants'; - -const DEFAULT_PAGE_SIZE = 10; - -interface SetupInterface { - kibanaVersion: string; - logger: Logger; - isFeatureEnabled: boolean; -} - -interface StartInterface { - esClient: ElasticsearchClient; -} - -class SecurityWorkflowInsightsService { - private setup$ = new ReplaySubject<void>(1); - private start$ = new ReplaySubject<void>(1); - private stop$ = new ReplaySubject<void>(1); - private ds: DataStreamSpacesAdapter | undefined; - private _esClient: ElasticsearchClient | undefined; - private _logger: Logger | undefined; - private _isInitialized: Promise<[void, void]> = firstValueFrom( - combineLatest<[void, void]>([this.setup$, this.start$]) - ); - private isFeatureEnabled = false; - - public get isInitialized() { - return this._isInitialized; - } - - public setup({ kibanaVersion, logger, isFeatureEnabled }: SetupInterface) { - this.isFeatureEnabled = isFeatureEnabled; - if (!isFeatureEnabled) { - return; - } - - this._logger = logger; - - try { - this.ds = createDatastream(kibanaVersion); - } catch (err) { - this.logger.warn(new SecurityWorkflowInsightsFailedInitialized(err.message).message); - return; - } - - this.setup$.next(); - } - - public async start({ esClient }: StartInterface) { - if (!this.isFeatureEnabled) { - return; - } - - this._esClient = esClient; - await firstValueFrom(this.setup$); - - try { - await createPipeline(esClient); - await this.ds?.install({ - logger: this.logger, - esClient, - pluginStop$: this.stop$, - }); - await esClient.indices.createDataStream({ name: DATA_STREAM_NAME }); - } catch (err) { - // ignore datastream already exists error - if (err?.body?.error?.type === 'resource_already_exists_exception') { - return; - } - - this.logger.warn(new SecurityWorkflowInsightsFailedInitialized(err.message).message); - return; - } - - this.start$.next(); - } - - public stop() { - this.setup$.next(); - this.setup$.complete(); - this.start$.next(); - this.start$.complete(); - this.stop$.next(); - this.stop$.complete(); - } - - public async create(insight: SecurityWorkflowInsight): Promise<WriteResponseBase> { - await this.isInitialized; - - const response = await this.esClient.index<SecurityWorkflowInsight>({ - index: DATA_STREAM_NAME, - body: insight, - refresh: 'wait_for', - }); - - return response; - } - - public async update( - id: string, - insight: Partial<SecurityWorkflowInsight>, - backingIndex?: string - ): Promise<UpdateResponse> { - await this.isInitialized; - - let index = backingIndex; - if (!index) { - const retrievedInsight = (await this.fetch({ ids: [id] }))[0]; - index = retrievedInsight?._index; - } - - if (!index) { - throw new Error('invalid backing index for updating workflow insight'); - } - - const response = await this.esClient.update<SecurityWorkflowInsight>({ - index, - id, - body: { doc: insight }, - refresh: 'wait_for', - }); - - return response; - } - - public async fetch(params?: SearchParams): Promise<Array<SearchHit<SecurityWorkflowInsight>>> { - await this.isInitialized; - - const size = params?.size ?? DEFAULT_PAGE_SIZE; - const from = params?.from ?? 0; - - const termFilters = params ? buildEsQueryParams(params) : []; - const response = await this.esClient.search<SecurityWorkflowInsight>({ - index: DATA_STREAM_NAME, - body: { - query: { - bool: { - must: termFilters, - }, - }, - size, - from, - }, - }); - - return response?.hits?.hits ?? []; - } - - private get esClient(): ElasticsearchClient { - if (!this._esClient) { - throw new SecurityWorkflowInsightsFailedInitialized('no elasticsearch client found'); - } - - return this._esClient; - } - - private get logger(): Logger { - if (!this._logger) { - throw new SecurityWorkflowInsightsFailedInitialized('no logger found'); - } - - return this._logger; - } -} - -export const securityWorkflowInsightsService = new SecurityWorkflowInsightsService(); diff --git a/x-pack/plugins/security_solution/server/fleet_integration/jest.config.js b/x-pack/plugins/security_solution/server/fleet_integration/jest.config.js deleted file mode 100644 index 726842812a45a..0000000000000 --- a/x-pack/plugins/security_solution/server/fleet_integration/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/server/fleet_integration'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/server/fleet_integration', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/security_solution/server/fleet_integration/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/server/integration_tests/lib/helpers.ts b/x-pack/plugins/security_solution/server/integration_tests/lib/helpers.ts deleted file mode 100644 index ccc73435636e9..0000000000000 --- a/x-pack/plugins/security_solution/server/integration_tests/lib/helpers.ts +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { v4 as uuidGen } from 'uuid'; -import Fs from 'fs'; -import Util from 'util'; -import type { ElasticsearchClient } from '@kbn/core/server'; -import deepmerge from 'deepmerge'; -import { createTestServers, createRootWithCorePlugins } from '@kbn/core-test-helpers-kbn-server'; -const asyncUnlink = Util.promisify(Fs.unlink); - -/** - * Eventually runs a callback until it succeeds or times out. - * Inspired in https://kotest.io/docs/assertions/eventually.html - * - * @param cb The callback to run/retry - * @param duration The maximum duration to run the callback, default 10000 millisecs - * @param interval The interval between each run, default 100 millisecs - */ -export async function eventually<T>( - cb: () => Promise<T>, - duration: number = 120000, - interval: number = 3000 -) { - let elapsed = 0; - - while (true) { - const startedAt: number = performance.now(); - try { - return await cb(); - } catch (e) { - if (elapsed >= duration) { - throw e; - } - } - await new Promise((resolve) => setTimeout(resolve, interval)); - elapsed += performance.now() - startedAt; - } -} - -export async function setupTestServers(logFilePath: string, settings = {}) { - const { startES } = createTestServers({ - adjustTimeout: (t) => jest.setTimeout(t), - settings: { - es: { - license: 'trial', - }, - }, - }); - - const esServer = await startES(); - - const root = createRootWithCorePlugins( - deepmerge( - { - logging: { - appenders: { - file: { - type: 'file', - fileName: logFilePath, - layout: { - type: 'json', - }, - }, - }, - root: { - level: 'warn', - }, - loggers: [ - { - name: 'plugins.taskManager', - level: 'warn', - appenders: ['file'], - }, - { - name: 'plugins.securitySolution.telemetry_events', - level: 'all', - appenders: ['file'], - }, - ], - }, - }, - settings - ), - { oss: false } - ); - - await root.preboot(); - const coreSetup = await root.setup(); - const coreStart = await root.start(); - - return { - esServer, - kibanaServer: { - root, - coreSetup, - coreStart, - stop: async () => root.shutdown(), - }, - }; -} - -export async function removeFile(path: string) { - await asyncUnlink(path).catch(() => void 0); -} - -export async function bulkInsert( - esClient: ElasticsearchClient, - index: string, - data: unknown[], - ids: string[] = [] -): Promise<void> { - const bulk = data.flatMap((d, i) => { - const _id = ids[i] ?? uuidGen(); - return [{ create: { _index: index, _id } }, d]; - }); - await esClient.bulk({ body: bulk, refresh: 'wait_for' }).catch(() => {}); -} - -export function updateTimestamps(data: object[]): object[] { - const currentTimeMillis = new Date().getTime(); - return data.map((d, i) => { - // wait a couple of millisecs to not make timestamps overlap - return { ...d, '@timestamp': new Date(currentTimeMillis + (i + 1) * 100) }; - }); -} diff --git a/x-pack/plugins/security_solution/server/jest.config.js b/x-pack/plugins/security_solution/server/jest.config.js deleted file mode 100644 index feb812760d98a..0000000000000 --- a/x-pack/plugins/security_solution/server/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - /** all nested directories have their own Jest config file */ - testMatch: ['<rootDir>/x-pack/plugins/security_solution/server/*.test.{js,mjs,ts,tsx}'], - roots: ['<rootDir>/x-pack/plugins/security_solution/server'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/server', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/server/**/*.{ts,tsx}'], - moduleNameMapper: require('./__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/README.md b/x-pack/plugins/security_solution/server/lib/detection_engine/README.md deleted file mode 100644 index a2385e15a1bf2..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/README.md +++ /dev/null @@ -1,176 +0,0 @@ -README.md for developers working on the backend detection engine on how to get started -using the CURL scripts in the scripts folder. - -The scripts rely on CURL and jq: - -- [CURL](https://curl.haxx.se) -- [jq](https://stedolan.github.io/jq/) - -Install curl and jq - -```sh -brew update -brew install curl -brew install jq -``` - -Open `$HOME/.zshrc` or `${HOME}.bashrc` depending on your SHELL output from `echo $SHELL` -and add these environment variables: - -```sh -export ELASTICSEARCH_USERNAME=${user} -export ELASTICSEARCH_PASSWORD=${password} -export ELASTICSEARCH_URL=https://${ip}:9200 -export KIBANA_URL=http://localhost:5601 -export TASK_MANAGER_INDEX=.kibana-task-manager-${your user id} -export KIBANA_INDEX=.kibana-${your user id} -``` - -source `$HOME/.zshrc` or `${HOME}.bashrc` to ensure variables are set: - -```sh -source ~/.zshrc -``` - -Open your `kibana.dev.yml` file and add these lines: - -```sh -xpack.securitySolution.signalsIndex: .siem-signals-${your user id} -``` - -Restart Kibana and ensure that you are using `--no-base-path` as changing the base path is a feature but will -get in the way of the CURL scripts written as is. You should see alerting and actions starting up like so afterwards - -```sh -server log [22:05:22.277] [info][status][plugin:alerting@8.0.0] Status changed from uninitialized to green - Ready -server log [22:05:22.270] [info][status][plugin:actions@8.0.0] Status changed from uninitialized to green - Ready -``` - -Go to the scripts folder `cd kibana/x-pack/plugins/security_solution/server/lib/detection_engine/scripts` and run: - -```sh -./hard_reset.sh -./post_rule.sh -``` - -which will: - -- Delete any existing actions you have -- Delete any existing alerts you have -- Delete any existing alert tasks you have -- Delete any existing signal mapping, policies, and template, you might have previously had. -- Add the latest signal index and its mappings using your settings from `kibana.dev.yml` environment variable of `xpack.securitySolution.signalsIndex`. -- Posts the sample rule from `./rules/queries/query_with_rule_id.json` -- The sample rule checks for root or admin every 5 minutes and reports that as a signal if it is a positive hit - -Now you can run - -```sh -./find_rules.sh -``` - -You should see the new rules created like so: - -```sh -{ - "page": 1, - "perPage": 20, - "total": 1, - "data": [ - { - "created_by": "elastic", - "description": "Detecting root and admin users", - "enabled": true, - "false_positives": [], - "from": "now-6m", - "id": "a556065c-0656-4ba1-ad64-a77ca9d2013b", - "immutable": false, - "index": [ - "auditbeat-*", - "filebeat-*", - "packetbeat-*", - "winlogbeat-*" - ], - "interval": "5m", - "rule_id": "rule-1", - "language": "kuery", - "output_index": ".siem-signals-some-name", - "max_signals": 100, - "risk_score": 1, - "name": "Detect Root/Admin Users", - "query": "user.name: root or user.name: admin", - "references": [ - "http://www.example.com", - "https://ww.example.com" - ], - "severity": "high", - "updated_by": "elastic", - "tags": [], - "to": "now", - "type": "query" - } - ] -} -``` - -Every 5 minutes if you get positive hits you will see messages on info like so: - -```sh -server log [09:54:59.013] [info][plugins][siem] Total signals found from signal rule "id: a556065c-0656-4ba1-ad64-a77ca9d2013b", "ruleId: rule-1": 10000 -``` - -Rules are [space aware](https://www.elastic.co/guide/en/kibana/master/xpack-spaces.html) and default -to the "default" (empty) URL space if you do not export the variable of `SPACE_URL`. Example, if you want to -post rules to `test-space` you set `SPACE_URL` to be: - -```sh -export SPACE_URL=/s/test-space -``` - -The `${SPACE_URL}` is in front of all the APIs to correctly create, modify, delete, and update -them from within the defined space. If this variable is not defined the default which is the url of an -empty string will be used. - -Add the `.siem-signals-${your user id}` to your advanced SIEM settings to see any signals -created which should update once every 5 minutes at this point. - -Also add the `.siem-signals-${your user id}` as a kibana index for Maps to be able to see the -signals - -Optionally you can add these debug statements to your `kibana.dev.yml` to see more information when running the detection -engine - -```sh -logging.verbose: true -logging.events: - { - log: ['security_solution', 'info', 'warning', 'error', 'fatal'], - request: ['info', 'warning', 'error', 'fatal'], - error: '*', - ops: __no-ops__, - } -``` - -See these two README.md's pages for more references on the alerting and actions API: -https://github.com/elastic/kibana/blob/main/x-pack/plugins/alerting/README.md -https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions - -### Signals API - -To update the status of a signal or group of signals, the following scripts provide an example of how to -go about doing so. -`cd x-pack/plugins/security_solution/server/lib/detection_engine/scripts` -`./signals/put_signal_doc.sh` will post a sample signal doc into the signals index to play with -`./signals/set_status_with_id.sh closed` will update the status of the sample signal to closed -`./signals/set_status_with_id.sh open` will update the status of the sample signal to open -`./signals/set_status_with_query.sh closed` will update the status of the signals in the result of the query to closed. -`./signals/set_status_with_query.sh open` will update the status of the signals in the result of the query to open. - -### Large List Exceptions - -To test out the functionality of large lists with rules, the user will need to import a list and post a rule with a reference to that exception list. The following outlines an example using the sample json rule provided in the repo. - -* First, set the appropriate env var in order to enable exceptions features`export ELASTIC_XPACK_SECURITY_SOLUTION_LISTS_FEATURE=true` and `export ELASTIC_XPACK_SECURITY_SOLUTION_EXCEPTIONS_LISTS=true` and start kibana -* Second, import a list of ips from a file called `ci-badguys.txt`. The command should look like this: -`cd $HOME/kibana/x-pack/plugins/lists/server/scripts && ./import_list_items_by_filename.sh ip ~/ci-badguys.txt` -* Then, from the detection engine scripts folder (`cd kibana/x-pack/plugins/security_solution/server/lib/detection_engine/scripts`) run `./post_rule.sh rules/queries/lists/query_with_list_plugin.json` diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/README.md b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/README.md deleted file mode 100644 index 6b9638389e120..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/README.md +++ /dev/null @@ -1,184 +0,0 @@ - - -### How to on board a new prepackage timelines: - - - -1. [Have the env params set up](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/README.md) - -2. Create a new timelines template into `x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines` - - ##### 2.a : Create a new template from UI and export it. - - 1. Go to Security Solution app in Kibana - 2. Go to timelines > templates > custom templates (a filter on the right) - 3. Click `Create new timeline template` - 4. Edit your template - 5. Export only **one** timeline template each time and put that in `x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines`. (For potential update requirement in the future, we put one timeline in each file to keep nice and clear) - 6. Rename the file extension to `.json` - 7. Check the chapter of `Fields to hightlight for on boarding a new prepackaged timeline` in this readme and update your template - - - - - ##### 2.b : Create a new template from scratch - Please note that below template is just an example, please replace all your fields with whatever makes sense. Do check `Fields to hightlight for on boarding a new prepackaged timeline` to make sure the template can be created as expected. - - - cd x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines - - - - echo '{"savedObjectId":null,"version":null,"columns":[{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"@timestamp","searchable":null},{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"kibana.alert.rule.description","searchable":null},{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"event.action","searchable":null},{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"process.name","searchable":null},{"indexes":null,"aggregatable":true,"name":null,"description":"The working directory of the process.","columnHeaderType":"not-filtered","id":"process.working_directory","category":"process","type":"string","searchable":null,"example":"/home/alice"},{"indexes":null,"aggregatable":true,"name":null,"description":"Array of process arguments, starting with the absolute path to\nthe executable.\n\nMay be filtered to protect sensitive information.","columnHeaderType":"not-filtered","id":"process.args","category":"process","type":"string","searchable":null,"example":"[\"/usr/bin/ssh\",\"-l\",\"user\",\"10.0.0.16\"]"},{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"process.pid","searchable":null},{"indexes":null,"aggregatable":true,"name":null,"description":"Absolute path to the process executable.","columnHeaderType":"not-filtered","id":"process.parent.executable","category":"process","type":"string","searchable":null,"example":"/usr/bin/ssh"},{"indexes":null,"aggregatable":true,"name":null,"description":"Array of process arguments.\n\nMay be filtered to protect sensitive information.","columnHeaderType":"not-filtered","id":"process.parent.args","category":"process","type":"string","searchable":null,"example":"[\"ssh\",\"-l\",\"user\",\"10.0.0.16\"]"},{"indexes":null,"aggregatable":true,"name":null,"description":"Process id.","columnHeaderType":"not-filtered","id":"process.parent.pid","category":"process","type":"number","searchable":null,"example":"4242"},{"indexes":null,"aggregatable":true,"name":null,"description":"Short name or login of the user.","columnHeaderType":"not-filtered","id":"user.name","category":"user","type":"string","searchable":null,"example":"albert"},{"indexes":null,"aggregatable":true,"name":null,"description":"Name of the host.\n\nIt can contain what `hostname` returns on Unix systems, the fully qualified\ndomain name, or a name specified by the user. The sender decides which value\nto use.","columnHeaderType":"not-filtered","id":"host.name","category":"host","type":"string","searchable":null}],"dataProviders":[{"excluded":false,"and":[],"kqlQuery":"","name":"590eb946a7fdbacaa587ed0f6b1a16f5ad3d659ec47ef35ad0826c47af133bde","queryMatch":{"displayValue":null,"field":"_id","displayField":null,"value":"590eb946a7fdbacaa587ed0f6b1a16f5ad3d659ec47ef35ad0826c47af133bde","operator":":"},"id":"send-signal-to-timeline-action-default-draggable-event-details-value-formatted-field-value-timeline-1-signal-id-590eb946a7fdbacaa587ed0f6b1a16f5ad3d659ec47ef35ad0826c47af133bde","enabled":true}],"description":"","eventType":"all","filters":[],"kqlMode":"filter","kqlQuery":{"filterQuery":{"kuery":{"kind":"kuery","expression":""},"serializedQuery":""}},"title":"Generic Process Timeline","dateRange":{"start":1588161020848,"end":1588162280848},"savedQueryId":null,"sort":{"columnId":"@timestamp","sortDirection":"desc"},"created":1588162404153,"createdBy":"Elastic","updated":1588604767818,"updatedBy":"Elastic","eventNotes":[],"globalNotes":[],"pinnedEventIds":[],"timelineType":"template","status":"immutable","templateTimelineId":"2c7e0663-5a91-0004-aa15-26bf756d2c40","templateTimelineVersion":1}' > my_new_template.json``` - - #### Note that the json has to be minified. - #### Fields to hightlight for on boarding a new prepackaged timeline: - - - savedObjectId: null - - - version: null - - - templateTimelineId: Specify an unique uuid e.g.: `2c7e0663-5a91-0004-aa15-26bf756d2c40` - - - templateTimelineVersion: start from `1`, bump it on update - - - timelineType: `template` - - - status: `immutable` - - - indexNames: [] - - - -3. ```cd x-pack/plugins/security_solution/server/lib/detection_engine/scripts``` - -4. ```sh ./timelines/regen_prepackage_timelines_index.sh``` - -(this will update `x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/index.ndjson`) - - - -5. Go to `http://localhost:5601/app/security#/detections/rules` and click on `Install Elastic prebuild rules` - -or run - -``` -cd x-pack/plugins/security_solution/server/lib/detection_engine/scripts - -sh ./timelines/add_prepackaged_timelines.sh - -``` - - - -6. Check in UI or run the script below to see if prepackaged timelines on-boarded correctly. - -``` - -sh ./timelines/find_timeline_by_filter.sh immutable template elastic - -``` - - - -### How to update an existing prepackage timeline: - -1. ```cd x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines``` - -2. Open the json file you wish to update, and remember to bump the `templateTimelineVersion` - -3. Go to ```cd x-pack/plugins/security_solution/server/lib/detection_engine/scripts```, run ```sh ./timelines/regen_prepackage_timelines_index.sh``` - -4. Go to `http://localhost:5601/app/security#/detections/rules` and click on `Install Elastic prebuild rules` - -or run - -``` - -sh ./timelines/add_prepackaged_timelines.sh - -``` - - - -5. Check in UI or run the script below to see if the prepackaged timeline updated correctly. - -``` - -sh ./timelines/find_timeline_by_filter.sh immutable template elastic - -``` - - - - -### How to install prepackaged timelines: - -1. ```cd x-pack/plugins/siem/server/lib/detection_engine/scripts``` - -2. ```sh ./timelines/add_prepackaged_timelines.sh``` - -3. ```sh ./timelines/find_timeline_by_filter.sh immutable template elastic``` - - - -### Get timeline by id: - -``` - -cd x-pack/plugins/security_solution/server/lib/detection_engine/scripts - -sh ./timelines/get_timeline_by_id.sh {id} - -``` - - - - -### Get timeline by templateTimelineId: - -``` - -cd x-pack/plugins/security_solution/server/lib/detection_engine/scripts - -sh ./timelines/get_timeline_by_template_timeline_id.sh {template_timeline_id} - -``` - - - - -### Get all custom timelines: - -``` - -cd x-pack/plugins/security_solution/server/lib/detection_engine/scripts - -sh ./timelines/get_all_timelines.sh - -``` - - - - -### Delete all timelines: - -``` - -cd x-pack/plugins/security_solution/server/lib/detection_engine/scripts - -sh ./timelines/delete_all_timelines.sh - -``` - - - -### Delete timeline by timeline id: - -``` - -cd x-pack/plugins/security_solution/server/lib/detection_engine/scripts - -./timelines/delete_all_alerts.sh {timeline_id} - -``` diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/README.md b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/README.md deleted file mode 100644 index c7e9c7ba9d687..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# Detection Engine health logic - -See [README](../../../../../../common/api/detection_engine/rule_monitoring/detection_engine_health/README.md) in the common folder for info about the Detection Engine health API. - -This logic provides the following functionality via the `IDetectionEngineHealthClient` interface: - -- Calculating health snapshots for different "slices" of rules in the cluster: - - the whole cluster: all detection rules in all Kibana spaces - - a given space: all rules in the current Kibana space - - a given rule: an individual rule specified by id -- Installing assets for monitoring health, such as Kibana dashboards, etc. - -## Assets for monitoring health - -The assets' sources are located in the repo under `x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets`. - -### Assets are installed on behalf of the internal user - -The important aspect to know about is that we install these assets via the saved objects `import()` method, and do it on behalf of the internal Kibana user (which is `kibana_system` by default). This user has privileges for writing saved objects out of the box, which allows our users to be able to install the assets without configuring any additional RBAC. - -See `createDetectionEngineHealthClient` and `installAssetsForMonitoringHealth` for the implementation details. - -### Assets' source files are JSON - -Another thing to consider is that the assets are stored as `.json` files in the repo. This has pros and cons, but the important benefit here is that it allows you to make changes in the assets faster. Especially it applies to Kibana dashboards, which are large objects, and it's hard to construct a dashboard manually in the code. - -### Updating the rule monitoring dashboard - -For example, let's talk about updating the `dashboard_rule_monitoring.json`. It is very convenient to be able to install this dashboard via calling the `_setup` endpoint, and then go edit it in Kibana, save it, export it, and update the source file based on the exported `.ndjson` file. - -Only a few adjustments would need to be done after that manually in the source file: - -- obviously, formatting to JSON -- the dashboard's id has to be updated to `security-detection-rule-monitoring-<spaceId>` -- you have to make sure the references to tags are specified correctly: - - ```json - { - "id": "fleet-managed-<spaceId>", - "name": "tag-ref-fleet-managed", - "type": "tag" - }, - { - "id": "security-solution-<spaceId>", - "name": "tag-ref-security-solution", - "type": "tag" - } - ``` diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.test.ts deleted file mode 100644 index 5d25cf38761fe..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { getPainlessScripts } from '.'; - -describe('getPainlessScripts', () => { - // to update snapshot run `yarn test:jest x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.test.ts -u` - test('Scripts should not have changed. If this change is intentional, ensure that Serverless scripted metric allowlists are updated', async () => { - const scripts = await getPainlessScripts(); - - expect(scripts).toMatchInlineSnapshot(` - Object { - "combine": "return state;", - "init": "state.inputs = []", - "map": "Map fields = new HashMap();fields.put('id', doc['kibana.alert.uuid'].value);fields.put('index', doc['_index'].value);fields.put('time', doc['@timestamp'].value);fields.put('rule_name', doc['kibana.alert.rule.name'].value);fields.put('category', doc['event.kind'].value);fields.put('score', doc['kibana.alert.risk_score'].value);state.inputs.add(fields); ", - "reduce": "Map results = new HashMap();results['notes'] = [];results['category_1_score'] = 0.0;results['category_1_count'] = 0;results['risk_inputs'] = [];results['score'] = 0.0;def inputs = states[0].inputs;Collections.sort(inputs, (a, b) -> b.get('score').compareTo(a.get('score')));for (int i = 0; i < inputs.length; i++) { double current_score = inputs[i].score / Math.pow(i + 1, params.p); if (i < 10) { inputs[i]['contribution'] = current_score / params.risk_cap; results['risk_inputs'].add(inputs[i]); } results['category_1_score'] += current_score; results['category_1_count'] += 1; results['score'] += current_score;}results['score'] *= params.global_identifier_type_weight;results['normalized_score'] = results['score'] / params.risk_cap;return results;", - } - `); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts deleted file mode 100644 index af683db517716..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Logger, StartServicesAccessor } from '@kbn/core/server'; -import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/types'; -import type { - AfterKeys, - EntityAfterKey, - RiskScoreWeights, -} from '../../../common/api/entity_analytics/common'; -import type { IdentifierType, Range } from '../../../common/entity_analytics/risk_engine'; -import type { ConfigType } from '../../config'; -import type { StartPlugins } from '../../plugin'; -import type { SecuritySolutionPluginRouter } from '../../types'; -export type EntityAnalyticsConfig = ConfigType['entityAnalytics']; - -export interface EntityAnalyticsRoutesDeps { - router: SecuritySolutionPluginRouter; - logger: Logger; - config: ConfigType; - getStartServices: StartServicesAccessor<StartPlugins>; -} - -export interface CalculateRiskScoreAggregations { - user?: { - after_key: EntityAfterKey; - buckets: RiskScoreBucket[]; - }; - host?: { - after_key: EntityAfterKey; - buckets: RiskScoreBucket[]; - }; -} - -export interface SearchHitRiskInput { - id: string; - index: string; - rule_name?: string; - time?: string; - score?: number; - contribution?: number; -} - -export interface RiskScoreBucket { - key: { [identifierField: string]: string }; - doc_count: number; - top_inputs: { - doc_count: number; - risk_details: { - value: { - score: number; - normalized_score: number; - notes: string[]; - category_1_score: number; - category_1_count: number; - risk_inputs: SearchHitRiskInput[]; - }; - }; - }; -} - -export interface RiskEngineConfiguration { - dataViewId: string; - enabled: boolean; - filter: unknown; - identifierType: IdentifierType | undefined; - interval: string; - pageSize: number; - range: Range; - alertSampleSizePerShard?: number; -} - -export interface CalculateScoresParams { - afterKeys: AfterKeys; - debug?: boolean; - index: string; - filter?: unknown; - identifierType?: IdentifierType; - pageSize: number; - range: { start: string; end: string }; - runtimeMappings: MappingRuntimeFields; - weights?: RiskScoreWeights; - alertSampleSizePerShard?: number; - excludeAlertStatuses?: string[]; -} - -export interface CalculateAndPersistScoresParams { - afterKeys: AfterKeys; - debug?: boolean; - index: string; - filter?: unknown; - identifierType: IdentifierType; - pageSize: number; - range: Range; - runtimeMappings: MappingRuntimeFields; - weights?: RiskScoreWeights; - alertSampleSizePerShard?: number; - returnScores?: boolean; - refresh?: 'wait_for'; -} diff --git a/x-pack/plugins/security_solution/server/lib/jest.config.js b/x-pack/plugins/security_solution/server/lib/jest.config.js deleted file mode 100644 index dd07f905422b3..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['<rootDir>/x-pack/plugins/security_solution/server/lib'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/security_solution/server/lib', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/security_solution/server/lib/**/*.{ts,tsx}'], - moduleNameMapper: require('../__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/readme.md b/x-pack/plugins/security_solution/server/lib/risk_score/readme.md deleted file mode 100644 index 17087d447e630..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/risk_score/readme.md +++ /dev/null @@ -1,488 +0,0 @@ - -# Version -|Version|Risk Score Entity|Scripts created|Ingest pipelines created|Transforms created|Behind feature flag|Notes| -|-------|------|-------|----------------|----------|----|----| -|8.3`deprecated`|host|1.ml_hostriskscore_levels_script_{spacename} 2.ml_hostriskscore_map_script_{spacename} 3.ml_hostriskscore_reduce_script_{spacename} 4.ml_hostriskscore_init_script_{spacename}|ml_hostriskscore_ingest_pipeline_{spacename}|1.ml_hostriskscore_pivot_transform_{spacename} Destination Index: `ml_host_risk_score_{spacename}` 2.ml_hostriskscore_latest_transform_{spacename} Destination Index: `ml_host_risk_score_latest_{spacename}`| Yes|https://github.com/elastic/detection-rules/blob/main/docs/experimental-machine-learning/host-risk-score.md| -|8.3`deprecated`|user|1.ml_userriskscore_levels_script_{spacename} 2.ml_userriskscore_map_script_{spacename} 3.ml_userriskscore_reduce_script_{spacename}|ml_userriskscore_ingest_pipeline_{spacename}|1.ml_userriskscore_pivot_transform_{spacename} Destination index: `ml_user_risk_score_{spacename}` 2.ml_userriskscore_latest_transform_{spacename} Destination index: `ml_user_risk_score_latest_{spacename}`|Yes|https://github.com/elastic/detection-rules/blob/main/docs/experimental-machine-learning/user-risk-score.md| -|8.4`deprecated`|host|1.ml_hostriskscore_levels_script 2.ml_hostriskscore_map_script 3.ml_hostriskscore_reduce_script 4.ml_hostriskscore_init_script|ml_hostriskscore_ingest_pipeline|1.ml_hostriskscore_pivot_transform_{spacename} Destination Index: `ml_host_risk_score_{spacename}` 2.ml_hostriskscore_latest_transform_{spacename} Destination Index: `ml_host_risk_score_latest_{spacename}`|Yes|Installation via dev tools releasesd. https://github.com/elastic/kibana/blob/8.4/x-pack/plugins/security_solution/server/lib/prebuilt_dev_tool_content/console_templates/enable_host_risk_score.console| -|8.4`deprecated`|user|1.ml_userriskscore_levels_script_{spacename} 2.ml_userriskscore_map_script_{spacename} 3.ml_userriskscore_reduce_script_{spacename}|ml_userriskscore_ingest_pipeline_{spacename}|1.ml_userriskscore_pivot_transform_{spacename} Destination index: `ml_user_risk_score_{spacename}` 2.ml_userriskscore_latest_transform_{spacename} Destination index: `ml_user_risk_score_latest_{spacename}`|Yes|Installation via dev tools not available yet (Installation via dev tools is availble in 8.5). -|8.5+|host|1.ml_hostriskscore_levels_script_{spacename} 2.ml_hostriskscore_map_script_{spacename} 3.ml_hostriskscore_reduce_script_{spacename} 4.ml_hostriskscore_init_script_{spacename}|ml_hostriskscore_ingest_pipeline_{spacename}|1.ml_hostriskscore_pivot_transform_{spacename} Destination Index: `ml_host_risk_score_{spacename}` 2.ml_hostriskscore_latest_transform_{spacename} Destination Index: `ml_host_risk_score_latest_{spacename}`| No|`Breaking Chang`: New schema for Destination indices| -|8.5+|user|1.ml_userriskscore_levels_script_{spacename} 2.ml_userriskscore_map_script_{spacename} 3.ml_userriskscore_reduce_script_{spacename}|ml_userriskscore_ingest_pipeline_{spacename}|1.ml_userriskscore_pivot_transform_{spacename} Destination index: `ml_user_risk_score_{spacename}` 2.ml_userriskscore_latest_transform_{spacename} Destination index: `ml_user_risk_score_latest_{spacename}`|No|`Breaking Chang`: New schema for Destination indices| -# Risk Score API - -### API usage - -#### 1. GET /internal/risk_score/index_status - `getRiskScoreIndexStatusRoute` -##### REQUEST: -```typescript - GET /internal/risk_score/index_status - { - indexName: 'ml_host_risk_score_latest' - } -``` -##### RESPONSE: -```typescript - { - isDeprecated: boolean; - isEnabled: boolean; - } -``` -##### This route is called from `useRiskScore` hook. - -#### 2. PUT - /internal/risk_score/indices/create - -example: -##### REQUEST: - -``` -PUT /internal/risk_score/indices/create -{ - "index": "ml_host_risk_score_latest_default-test", - "mappings": { - "properties": { - "host.name": { - "type": "keyword" - }, - "@timestamp": { - "type": "date" - }, - "ingest_timestamp": { - "type": "date" - }, - "risk": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword" - } - } - }, - "risk_stats": { - "properties": { - "risk_score": { - "type": "float" - } - } - } - } - } -} -``` - - -##### RESPONSE: -``` -{ - "index": "ml_host_risk_score_latest_default-test", - "mappings": { - "properties": { - "host.name": { - "type": "keyword" - }, - "@timestamp": { - "type": "date" - }, - "ingest_timestamp": { - "type": "date" - }, - "risk": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword" - } - } - }, - "risk_stats": { - "properties": { - "risk_score": { - "type": "float" - } - } - } - } - } -} -``` - -#### 3. POST - /internal/risk_score/indices/delete - -example: - -##### REQUEST: -``` - POST /internal/risk_score/indices/delete - { - "indices": ["ml_host_risk_score_latest_default-test"] - } -``` - -##### RESPONSE: -``` - { - "deleted": [ - "ml_host_risk_score_latest_default-test" - ] - } -``` - -#### 4. POST - /internal/risk_score - -Onboard host or user risk score. -##### Option: - -|Body|description| -|--|--| -|riskScoreEntity|value: `host` or `user`| - -example: - -##### REQUEST: -``` - POST /internal/risk_score - { - "riskScoreEntity": host - } -``` -##### RESPONSE: - -``` -[ - { - "ml_hostriskscore_levels_script_default": { - "success": true, - "error": null - } - }, - { - "ml_hostriskscore_ingest_pipeline_default": { - "success": true, - "error": null - } - }, - { - "ml_hostriskscore_init_script_default": { - "success": true, - "error": null - } - }, - { - "ml_hostriskscore_map_script_default": { - "success": true, - "error": null - } - }, - { - "ml_hostriskscore_reduce_script_default": { - "success": true, - "error": null - } - }, - { - "ml_host_risk_score_default": { - "success": true, - "error": null - } - }, - { - "ml_host_risk_score_latest_default": { - "success": true, - "error": null - } - }, - { - "ml_hostriskscore_pivot_transform_default": { - "success": true, - "error": null - } - }, - { - "ml_hostriskscore_latest_transform_default": { - "success": true, - "error": null - } - } -] -``` - -#### 5. GET - /internal/risk_score/prebuilt_content/dev_tool/{console_id} - -Get scripts for onboarding host or user risk score - -##### Option: - -|Param|description| -|--|--| -|console_id|value: `enable_host_risk_score` or `enable_user_risk_score`| - -example: - -##### REQUEST: - -``` -GET /internal/risk_score/prebuilt_content/dev_tool/enable_host_risk_score -``` - -##### RESPONSE: - -``` -# Click the run button of each step to enable the module -# Upload scripts -# 1. Script to assign risk level based on risk score -PUT _scripts/ml_hostriskscore_levels_script_default -{ -"script": { -"lang": "painless", -"source": "double risk_score = (def)ctx.getByPath(params.risk_score);\nif (risk_score < 20) {\n - ctx['host']['risk']['calculated_level']='Unknown' \n}\nelse if (risk_score>= 20 && risk_score < 40) {\n - ctx['host']['risk']['calculated_level']='Low' \n}\nelse if (risk_score>= 40 && risk_score < 70) {\n - ctx['host']['risk']['calculated_level']='Moderate' \n}\nelse if (risk_score>= 70 && risk_score < 90) {\n - ctx['host']['risk']['calculated_level']='High' \n}\nelse if (risk_score>= 90) {\n - ctx['host']['risk']['calculated_level'] = 'Critical'\n}" - } - } - - # 2. Script to setup initial state for the Host Risk Score scripted metric aggregation - PUT _scripts/ml_hostriskscore_init_script_default - { - "script": { - "lang": "painless", - "source": "state.rule_risk_stats = new HashMap();\nstate.host_variant_set = false;\nstate.host_variant = - new String();\nstate.tactic_ids = new HashSet();" - } - } - - # 3. Map script for the Host Risk Score transform - PUT _scripts/ml_hostriskscore_map_script_default - { - "script": { - "lang": "painless", - "source": "// Get the host variant\nif (state.host_variant_set == false) {\n if - (doc.containsKey(\"host.os.full\") && doc[\"host.os.full\"].size() != 0) {\n state.host_variant = - doc[\"host.os.full\"].value;\n state.host_variant_set = true;\n }\n}\n// Aggregate all the tactics seen - on the host\nif (doc.containsKey(\"signal.rule.threat.tactic.id\") && - doc[\"signal.rule.threat.tactic.id\"].size() != 0) {\n - state.tactic_ids.add(doc[\"signal.rule.threat.tactic.id\"].value);\n}\n// Get running sum of - time-decayed risk score per rule name per shard\nString rule_name = - doc[\"signal.rule.name\"].value;\ndef stats = state.rule_risk_stats.getOrDefault(rule_name, - [0.0,\"\",false]);\nint time_diff = (int)((System.currentTimeMillis() - - doc[\"@timestamp\"].value.toInstant().toEpochMilli()) / (1000.0 * 60.0 * 60.0));\ndouble risk_derate = - Math.min(1, Math.exp((params.lookback_time - time_diff) / params.time_decay_constant));\nstats[0] = - Math.max(stats[0], doc[\"signal.rule.risk_score\"].value * risk_derate);\nif (stats[2] == false) {\n - stats[1] = doc[\"kibana.alert.rule.uuid\"].value;\n stats[2] = - true;\n}\nstate.rule_risk_stats.put(rule_name, stats);" - } - } - - # 4. Reduce script for the Host Risk Score transform - PUT _scripts/ml_hostriskscore_reduce_script_default - { - "script": { - "lang": "painless", - "source": "// Consolidating time decayed risks and tactics from across all shards\nMap total_risk_stats - = new HashMap();\nString host_variant = new String();\ndef tactic_ids = new HashSet();\nfor (state in - states) {\n for (key in state.rule_risk_stats.keySet()) {\n def rule_stats = - state.rule_risk_stats.get(key);\n def stats = total_risk_stats.getOrDefault(key, [0.0,\"\",false]);\n - stats[0] = Math.max(stats[0], rule_stats[0]);\n if (stats[2] == false) {\n stats[1] = rule_stats[1];\n - stats[2] = true;\n } \n total_risk_stats.put(key, stats);\n }\n if (host_variant.length() == 0) {\n - host_variant = state.host_variant;\n }\n tactic_ids.addAll(state.tactic_ids);\n}\n// Consolidating - individual rule risks and arranging them in decreasing order\nList risks = new ArrayList();\nfor (key in - total_risk_stats.keySet()) {\n risks.add(total_risk_stats[key][0])\n}\nCollections.sort(risks, - Collections.reverseOrder());\n// Calculating total host risk score\ndouble total_risk = 0.0;\ndouble - risk_cap = params.max_risk * params.zeta_constant;\nfor (int i=0;i<risks.length;i++) {\n total_risk - +=risks[i] / Math.pow((1+i), params.p);\n}\n// Normalizing the host risk score\ndouble - total_norm_risk=100 * total_risk / risk_cap;\nif (total_norm_risk < 40) {\n total_norm_risk=2.125 * - total_norm_risk;\n}\nelse if (total_norm_risk>= 40 && total_norm_risk < 50) {\n total_norm_risk=85 + - (total_norm_risk - 40);\n}\nelse {\n total_norm_risk=95 + (total_norm_risk - 50) / 10;\n}\n// - Calculating multipliers to the host risk score\ndouble risk_multiplier=1.0;\nList - multipliers=new ArrayList();\n// Add a multiplier if host is a server\nif - (host_variant.toLowerCase().contains(\"server\")) {\n risk_multiplier - *=params.server_multiplier;\n multipliers.add(\"Host is a server\");\n}\n// Add multipliers - based on number and diversity of tactics seen on the host\nfor (String tactic : tactic_ids) {\n - multipliers.add(\"Tactic \"+tactic);\n risk_multiplier *=1 + params.tactic_base_multiplier * - params.tactic_weights.getOrDefault(tactic, 0);\n}\n// Calculating final risk\ndouble - final_risk=total_norm_risk;\nif (risk_multiplier> 1.0) {\n double prior_odds = (total_norm_risk) - / (100 - total_norm_risk);\n double updated_odds = prior_odds * risk_multiplier; \n final_risk = - 100 * updated_odds / (1 + updated_odds);\n}\n// Adding additional metadata\nList rule_stats = - new ArrayList();\nfor (key in total_risk_stats.keySet()) {\n Map temp = new HashMap();\n - temp[\"rule_name\"] = key;\n temp[\"rule_risk\"] = total_risk_stats[key][0];\n temp[\"rule_id\"] - = total_risk_stats[key][1];\n rule_stats.add(temp);\n}\n\nreturn [\"calculated_score_norm\": - final_risk, \"rule_risks\": rule_stats, \"multipliers\": multipliers];" - } - } - - # 5. Upload the ingest pipeline - # Ingest pipeline to add ingest timestamp and risk level to documents - PUT _ingest/pipeline/ml_hostriskscore_ingest_pipeline_default - { - "processors": - [{"set":{"field":"ingest_timestamp","value":"{{_ingest.timestamp}}"}},{"fingerprint":{"fields":["@timestamp","_id"],"method":"SHA-256","target_field":"_id"}},{"script":{"id":"ml_hostriskscore_levels_script_default","params":{"risk_score":"host.risk.calculated_score_norm"}}}] - } - - # 6. Create mappings for the destination index of the Host Risk Score pivot transform - PUT ml_host_risk_score_default - { - "mappings": - {"properties":{"host":{"properties":{"name":{"type":"keyword"},"risk":{"properties":{"calculated_score_norm":{"type":"float"},"calculated_level":{"type":"keyword"},"multipliers":{"type":"keyword"},"rule_risks":{"properties":{"rule_name":{"type":"text","fields":{"keyword":{"type":"keyword"}}},"rule_risk":{"type":"float"},"rule_id":{"type":"keyword"}}}}}}},"ingest_timestamp":{"type":"date"},"@timestamp":{"type":"date"}}} - } - - # 7. Upload the Host Risk Score pivot transform - # This transform runs hourly and calculates a risk score and risk level for hosts in a Kibana - space - PUT _transform/ml_hostriskscore_pivot_transform_default - {"dest":{"index":"ml_host_risk_score_default","pipeline":"ml_hostriskscore_ingest_pipeline_default"},"frequency":"1h","pivot":{"aggregations":{"@timestamp":{"max":{"field":"@timestamp"}},"host.risk":{"scripted_metric":{"combine_script":"return - state","init_script":{"id":"ml_hostriskscore_init_script_default"},"map_script":{"id":"ml_hostriskscore_map_script_default"},"params":{"lookback_time":72,"max_risk":100,"p":1.5,"server_multiplier":1.5,"tactic_base_multiplier":0.25,"tactic_weights":{"TA0001":1,"TA0002":2,"TA0003":3,"TA0004":4,"TA0005":4,"TA0006":4,"TA0007":4,"TA0008":5,"TA0009":6,"TA0010":7,"TA0011":6,"TA0040":8,"TA0042":1,"TA0043":1},"time_decay_constant":6,"zeta_constant":2.612},"reduce_script":{"id":"ml_hostriskscore_reduce_script_default"}}}},"group_by":{"host.name":{"terms":{"field":"host.name"}}}},"source":{"index":[".alerts-security.alerts-default"],"query":{"bool":{"filter":[{"range":{"@timestamp":{"gte":"now-5d"}}}]}}},"sync":{"time":{"delay":"120s","field":"@timestamp"}}} - - - # 8. Start the pivot transform - POST _transform/ml_hostriskscore_pivot_transform_default/_start - - # 9. Create mappings for the destination index of the Host Risk Score latest transform - PUT ml_host_risk_score_latest_default - { - "mappings": - {"properties":{"host":{"properties":{"name":{"type":"keyword"},"risk":{"properties":{"calculated_score_norm":{"type":"float"},"calculated_level":{"type":"keyword"},"multipliers":{"type":"keyword"},"rule_risks":{"properties":{"rule_name":{"type":"text","fields":{"keyword":{"type":"keyword"}}},"rule_risk":{"type":"float"},"rule_id":{"type":"keyword"}}}}}}},"ingest_timestamp":{"type":"date"},"@timestamp":{"type":"date"}}} - } - - # 10. Upload the latest transform - # This transform gets the latest risk information about hosts in a Kibana space - PUT _transform/ml_hostriskscore_latest_transform_default - {"dest":{"index":"ml_host_risk_score_latest_default"},"frequency":"1h","latest":{"sort":"@timestamp","unique_key":["host.name"]},"source":{"index":["ml_host_risk_score_default"]},"sync":{"time":{"delay":"2s","field":"ingest_timestamp"}}} - - # 11. Start the latest transform - POST _transform/ml_hostriskscore_latest_transform_default/_start - - # Hint: If you don't see data after running any of the transforms, stop and restart the - transforms - # Stop the pivot transform - POST _transform/ml_hostriskscore_pivot_transform_default/_stop - - # Start the pivot transform - POST _transform/ml_hostriskscore_pivot_transform_default/_start - - # Stop the latest transform - POST _transform/ml_hostriskscore_latest_transform_default/_stop - - # Start the latest transform - POST _transform/ml_hostriskscore_latest_transform_default/_start -``` - -#### 6. POST - /internal/risk_score/prebuilt_content/saved_objects/_bulk_create/{template_name} - -Import saved objects for host or user risk score -##### Option: - -|Param|description| -|--|--| -|template_name|value: `hostRiskScoreDashboards` or `userRiskScoreDashboards`| - -example: - -##### REQUEST: - -``` -POST /internal/risk_score/prebuilt_content/saved_objects/_bulk_create/hostRiskScoreDashboards -``` - -##### RESPONSE: - -``` -{ - "hostRiskScoreDashboards": { - "success": true, - "error": null, - "body": [ - { - "id": "259ef77a-0ea2-4ba2-bb77-f33fae4ec8aa", - "type": "index-pattern", - "title": "ml_host_risk_score_default" - }, - { - "id": "0adfc3b7-efa0-470e-ac31-27b1d8e01c48", - "type": "lens", - "title": "Host Risk Score (Max Risk Score Histogram)" - }, - { - "id": "e1a4d5f1-e59f-4ee6-918b-a1a1b48bf8de", - "type": "index-pattern", - "title": ".alerts-security.alerts-default" - }, - { - "id": "7799bfdf-9318-4f85-b840-678ccfbd9f79", - "type": "visualization", - "title": "Host Risk Score (Rule Breakdown)" - }, - { - "id": "acbc71e9-de52-47cd-ade6-33be0efdb1dc", - "type": "visualization", - "title": "Associated Users (Rule Breakdown)" - }, - { - "id": "0fb7224d-5e32-4f3d-b408-ee6acfd3f0c6", - "type": "visualization", - "title": "Host Risk Score (Tactic Breakdown)- Verbose" - }, - { - "id": "53e4c2cd-9f34-48dd-ab87-f48b8c5dec22", - "type": "tag", - "name": "experimental" - }, - { - "id": "2175ffc6-c53c-46ac-b15d-be9b849881ac", - "type": "dashboard", - "title": "Drilldown of Host Risk Score" - }, - { - "id": "d9d560b4-beed-4c27-9989-95187e64d79b", - "type": "index-pattern", - "title": "ml_host_risk_score_latest_default" - }, - { - "id": "927a8467-ccc6-4374-85a4-0aab6c1c0613", - "type": "lens", - "title": "Current Risk Score for Hosts" - }, - { - "id": "aa7acd4e-b4e1-4730-acac-f73992034b0d", - "type": "dashboard", - "title": "Current Risk Score for Hosts" - } - ] - } -} -``` - -#### 7. POST - /internal/risk_score/prebuilt_content/saved_objects/_bulk_delete/{template_name} - -Import saved objects for host or user risk score -##### Option: - -|Param|description| -|--|--| -|template_name|value: `hostRiskScoreDashboards` or `userRiskScoreDashboards`| - -example: - -##### REQUEST: - -``` -POST /internal/risk_score/prebuilt_content/saved_objects/_bulk_delete/hostRiskScoreDashboards -``` - -##### RESPONSE: - -``` -[ - "Saved object [index-pattern/ml-host-risk-score-default-index-pattern] not found", - "Saved object [lens/d3f72670-d3a0-11eb-bd37-7bb50422e346] not found", - "Saved object [index-pattern/alerts-default-index-pattern] not found", - "Saved object [visualization/42371d00-cf7a-11eb-9a96-05d89f94ad96] not found", - "Saved object [visualization/a62d3ed0-cf92-11eb-a0ff-1763d16cbda7] not found", - "Saved object [visualization/b2dbc9b0-cf94-11eb-bd37-7bb50422e346] not found", - "Saved object [tag/1d00ebe0-f3b2-11eb-beb2-b91666445a94] not found", - "Saved object [dashboard/6f05c8c0-cf77-11eb-9a96-05d89f94ad96] not found", - "Saved object [index-pattern/ml-host-risk-score-latest-default-index-pattern] not found", - "Saved object [lens/dc289c10-d4ff-11eb-a0ff-1763d16cbda7] not found", - "Saved object [dashboard/27b483b0-d500-11eb-a0ff-1763d16cbda7] not found" -] -``` \ No newline at end of file diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts deleted file mode 100644 index 19669fa75cd3d..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { IKibanaResponse, Logger } from '@kbn/core/server'; -import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; -import { v4 as uuidV4 } from 'uuid'; -import { SIEM_RULE_MIGRATION_CREATE_PATH } from '../../../../../common/siem_migrations/constants'; -import { - CreateRuleMigrationRequestBody, - CreateRuleMigrationRequestParams, - type CreateRuleMigrationResponse, -} from '../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; -import type { SecuritySolutionPluginRouter } from '../../../../types'; -import type { CreateRuleMigrationInput } from '../data/rule_migrations_data_rules_client'; -import { withLicense } from './util/with_license'; - -export const registerSiemRuleMigrationsCreateRoute = ( - router: SecuritySolutionPluginRouter, - logger: Logger -) => { - router.versioned - .post({ - path: SIEM_RULE_MIGRATION_CREATE_PATH, - access: 'internal', - security: { authz: { requiredPrivileges: ['securitySolution'] } }, - }) - .addVersion( - { - version: '1', - validate: { - request: { - body: buildRouteValidationWithZod(CreateRuleMigrationRequestBody), - params: buildRouteValidationWithZod(CreateRuleMigrationRequestParams), - }, - }, - }, - withLicense( - async (context, req, res): Promise<IKibanaResponse<CreateRuleMigrationResponse>> => { - const originalRules = req.body; - const migrationId = req.params.migration_id ?? uuidV4(); - try { - const ctx = await context.resolve(['securitySolution']); - const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); - - const ruleMigrations = originalRules.map<CreateRuleMigrationInput>((originalRule) => ({ - migration_id: migrationId, - original_rule: originalRule, - })); - - await ruleMigrationsClient.data.rules.create(ruleMigrations); - - return res.ok({ body: { migration_id: migrationId } }); - } catch (err) { - logger.error(err); - return res.badRequest({ body: err.message }); - } - } - ) - ); -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts deleted file mode 100644 index 30037aeea88ae..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { IKibanaResponse, Logger } from '@kbn/core/server'; -import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; -import { - GetRuleMigrationRequestParams, - GetRuleMigrationRequestQuery, - type GetRuleMigrationResponse, -} from '../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; -import { SIEM_RULE_MIGRATION_PATH } from '../../../../../common/siem_migrations/constants'; -import type { SecuritySolutionPluginRouter } from '../../../../types'; -import type { RuleMigrationGetOptions } from '../data/rule_migrations_data_rules_client'; -import { withLicense } from './util/with_license'; - -export const registerSiemRuleMigrationsGetRoute = ( - router: SecuritySolutionPluginRouter, - logger: Logger -) => { - router.versioned - .get({ - path: SIEM_RULE_MIGRATION_PATH, - access: 'internal', - security: { authz: { requiredPrivileges: ['securitySolution'] } }, - }) - .addVersion( - { - version: '1', - validate: { - request: { - params: buildRouteValidationWithZod(GetRuleMigrationRequestParams), - query: buildRouteValidationWithZod(GetRuleMigrationRequestQuery), - }, - }, - }, - withLicense(async (context, req, res): Promise<IKibanaResponse<GetRuleMigrationResponse>> => { - const { migration_id: migrationId } = req.params; - const { - page, - per_page: perPage, - sort_field: sortField, - sort_direction: sortDirection, - search_term: searchTerm, - } = req.query; - try { - const ctx = await context.resolve(['securitySolution']); - const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); - - const options: RuleMigrationGetOptions = { - filters: { searchTerm }, - sort: { sortField, sortDirection }, - size: perPage, - from: page && perPage ? page * perPage : 0, - }; - - const result = await ruleMigrationsClient.data.rules.get(migrationId, options); - - return res.ok({ body: result }); - } catch (err) { - logger.error(err); - return res.badRequest({ body: err.message }); - } - }) - ); -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts deleted file mode 100644 index a327d4b28a9bd..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Logger } from '@kbn/core/server'; -import type { SecuritySolutionPluginRouter } from '../../../../types'; -import { registerSiemRuleMigrationsCreateRoute } from './create'; -import { registerSiemRuleMigrationsUpdateRoute } from './update'; -import { registerSiemRuleMigrationsGetRoute } from './get'; -import { registerSiemRuleMigrationsStartRoute } from './start'; -import { registerSiemRuleMigrationsStatsRoute } from './stats'; -import { registerSiemRuleMigrationsTranslationStatsRoute } from './translation_stats'; -import { registerSiemRuleMigrationsStopRoute } from './stop'; -import { registerSiemRuleMigrationsStatsAllRoute } from './stats_all'; -import { registerSiemRuleMigrationsResourceUpsertRoute } from './resources/upsert'; -import { registerSiemRuleMigrationsResourceGetRoute } from './resources/get'; -import { registerSiemRuleMigrationsRetryRoute } from './retry'; -import { registerSiemRuleMigrationsInstallRoute } from './install'; -import { registerSiemRuleMigrationsInstallTranslatedRoute } from './install_translated'; -import { registerSiemRuleMigrationsPrebuiltRulesRoute } from './get_prebuilt_rules'; - -export const registerSiemRuleMigrationsRoutes = ( - router: SecuritySolutionPluginRouter, - logger: Logger -) => { - registerSiemRuleMigrationsCreateRoute(router, logger); - registerSiemRuleMigrationsUpdateRoute(router, logger); - registerSiemRuleMigrationsStatsAllRoute(router, logger); - registerSiemRuleMigrationsPrebuiltRulesRoute(router, logger); - registerSiemRuleMigrationsGetRoute(router, logger); - registerSiemRuleMigrationsStartRoute(router, logger); - registerSiemRuleMigrationsRetryRoute(router, logger); - registerSiemRuleMigrationsStatsRoute(router, logger); - registerSiemRuleMigrationsTranslationStatsRoute(router, logger); - registerSiemRuleMigrationsStopRoute(router, logger); - registerSiemRuleMigrationsInstallRoute(router, logger); - registerSiemRuleMigrationsInstallTranslatedRoute(router, logger); - - registerSiemRuleMigrationsResourceUpsertRoute(router, logger); - registerSiemRuleMigrationsResourceGetRoute(router, logger); -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts deleted file mode 100644 index 7f2cfc8743f07..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { IKibanaResponse, Logger } from '@kbn/core/server'; -import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; -import { - GetRuleMigrationResourcesRequestParams, - GetRuleMigrationResourcesRequestQuery, - type GetRuleMigrationResourcesResponse, -} from '../../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; -import { SIEM_RULE_MIGRATION_RESOURCES_PATH } from '../../../../../../common/siem_migrations/constants'; -import type { SecuritySolutionPluginRouter } from '../../../../../types'; -import { withLicense } from '../util/with_license'; - -export const registerSiemRuleMigrationsResourceGetRoute = ( - router: SecuritySolutionPluginRouter, - logger: Logger -) => { - router.versioned - .get({ - path: SIEM_RULE_MIGRATION_RESOURCES_PATH, - access: 'internal', - security: { authz: { requiredPrivileges: ['securitySolution'] } }, - }) - .addVersion( - { - version: '1', - validate: { - request: { - params: buildRouteValidationWithZod(GetRuleMigrationResourcesRequestParams), - query: buildRouteValidationWithZod(GetRuleMigrationResourcesRequestQuery), - }, - }, - }, - withLicense( - async (context, req, res): Promise<IKibanaResponse<GetRuleMigrationResourcesResponse>> => { - const migrationId = req.params.migration_id; - const { type, names } = req.query; - try { - const ctx = await context.resolve(['securitySolution']); - const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); - - const resources = await ruleMigrationsClient.data.resources.get( - migrationId, - type, - names - ); - - return res.ok({ body: resources }); - } catch (err) { - logger.error(err); - return res.badRequest({ body: err.message }); - } - } - ) - ); -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts deleted file mode 100644 index 645fa09b49dc1..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { IKibanaResponse, Logger } from '@kbn/core/server'; -import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; -import { - UpsertRuleMigrationResourcesRequestBody, - UpsertRuleMigrationResourcesRequestParams, - type UpsertRuleMigrationResourcesResponse, -} from '../../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; -import { SIEM_RULE_MIGRATION_RESOURCES_PATH } from '../../../../../../common/siem_migrations/constants'; -import type { SecuritySolutionPluginRouter } from '../../../../../types'; -import type { CreateRuleMigrationResourceInput } from '../../data/rule_migrations_data_resources_client'; -import { withLicense } from '../util/with_license'; - -export const registerSiemRuleMigrationsResourceUpsertRoute = ( - router: SecuritySolutionPluginRouter, - logger: Logger -) => { - router.versioned - .post({ - path: SIEM_RULE_MIGRATION_RESOURCES_PATH, - access: 'internal', - security: { authz: { requiredPrivileges: ['securitySolution'] } }, - }) - .addVersion( - { - version: '1', - validate: { - request: { - params: buildRouteValidationWithZod(UpsertRuleMigrationResourcesRequestParams), - body: buildRouteValidationWithZod(UpsertRuleMigrationResourcesRequestBody), - }, - }, - }, - withLicense( - async ( - context, - req, - res - ): Promise<IKibanaResponse<UpsertRuleMigrationResourcesResponse>> => { - const resources = req.body; - const migrationId = req.params.migration_id; - try { - const ctx = await context.resolve(['securitySolution']); - const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); - - const ruleMigrations = resources.map<CreateRuleMigrationResourceInput>((resource) => ({ - migration_id: migrationId, - ...resource, - })); - - await ruleMigrationsClient.data.resources.upsert(ruleMigrations); - - return res.ok({ body: { acknowledged: true } }); - } catch (err) { - logger.error(err); - return res.badRequest({ body: err.message }); - } - } - ) - ); -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts deleted file mode 100644 index d8dc1bb168a72..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { RuleMigrationsDataRulesClient } from '../rule_migrations_data_rules_client'; - -// Rule migrations data rules client -export const mockRuleMigrationsDataRulesClient = { - create: jest.fn().mockResolvedValue(undefined), - get: jest.fn().mockResolvedValue([]), - takePending: jest.fn().mockResolvedValue([]), - saveCompleted: jest.fn().mockResolvedValue(undefined), - saveError: jest.fn().mockResolvedValue(undefined), - releaseProcessing: jest.fn().mockResolvedValue(undefined), - updateStatus: jest.fn().mockResolvedValue(undefined), - getStats: jest.fn().mockResolvedValue(undefined), - getAllStats: jest.fn().mockResolvedValue([]), -} as unknown as RuleMigrationsDataRulesClient; -export const MockRuleMigrationsDataRulesClient = jest - .fn() - .mockImplementation(() => mockRuleMigrationsDataRulesClient); - -// Rule migrations data resources client -export const mockRuleMigrationsDataResourcesClient = { - upsert: jest.fn().mockResolvedValue(undefined), - get: jest.fn().mockResolvedValue(undefined), -}; -export const MockRuleMigrationsDataResourcesClient = jest - .fn() - .mockImplementation(() => mockRuleMigrationsDataResourcesClient); - -export const mockRuleMigrationsDataIntegrationsClient = { - retrieveIntegrations: jest.fn().mockResolvedValue([]), -}; - -// Rule migrations data client -export const mockRuleMigrationsDataClient = { - rules: mockRuleMigrationsDataRulesClient, - resources: mockRuleMigrationsDataResourcesClient, - integrations: mockRuleMigrationsDataIntegrationsClient, -}; - -export const MockRuleMigrationsDataClient = jest - .fn() - .mockImplementation(() => mockRuleMigrationsDataClient); - -// Rule migrations data service -export const mockIndexName = 'mocked_siem_rule_migrations_index_name'; -export const mockInstall = jest.fn().mockResolvedValue(undefined); -export const mockCreateClient = jest.fn().mockReturnValue(mockRuleMigrationsDataClient); - -export const MockRuleMigrationsDataService = jest.fn().mockImplementation(() => ({ - createAdapter: jest.fn(), - install: mockInstall, - createClient: mockCreateClient, - createIndexNameProvider: jest.fn().mockResolvedValue(mockIndexName), -})); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts deleted file mode 100644 index 14825326eee0e..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { SearchHit, SearchResponse } from '@elastic/elasticsearch/lib/api/types'; -import type { ElasticsearchClient, Logger } from '@kbn/core/server'; -import assert from 'assert'; -import type { Stored } from '../types'; -import type { IndexNameProvider } from './rule_migrations_data_client'; - -export class RuleMigrationsDataBaseClient { - constructor( - protected getIndexName: IndexNameProvider, - protected username: string, - protected esClient: ElasticsearchClient, - protected logger: Logger - ) {} - - protected processResponseHits<T extends object>( - response: SearchResponse<T>, - override?: Partial<T> - ): Array<Stored<T>> { - return this.processHits(response.hits.hits, override); - } - - protected processHits<T extends object>( - hits: Array<SearchHit<T>> = [], - override: Partial<T> = {} - ): Array<Stored<T>> { - return hits.map(({ _id, _source }) => { - assert(_id, 'document should have _id'); - assert(_source, 'document should have _source'); - return { ..._source, ...override, id: _id }; - }); - } - - protected getTotalHits(response: SearchResponse) { - return typeof response.hits.total === 'number' - ? response.hits.total - : response.hits.total?.value ?? 0; - } -} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts deleted file mode 100644 index 888a41aca944c..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { sha256 } from 'js-sha256'; -import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; -import type { - RuleMigrationResource, - RuleMigrationResourceType, -} from '../../../../../common/siem_migrations/model/rule_migration.gen'; -import type { StoredRuleMigrationResource } from '../types'; -import { RuleMigrationsDataBaseClient } from './rule_migrations_data_base_client'; - -export type CreateRuleMigrationResourceInput = Omit<RuleMigrationResource, 'id'>; - -/* BULK_MAX_SIZE defines the number to break down the bulk operations by. - * The 500 number was chosen as a reasonable number to avoid large payloads. It can be adjusted if needed. - */ -const BULK_MAX_SIZE = 500 as const; - -export class RuleMigrationsDataResourcesClient extends RuleMigrationsDataBaseClient { - public async upsert(resources: CreateRuleMigrationResourceInput[]): Promise<void> { - const index = await this.getIndexName(); - - let resourcesSlice: CreateRuleMigrationResourceInput[]; - - const createdAt = new Date().toISOString(); - while ((resourcesSlice = resources.splice(0, BULK_MAX_SIZE)).length > 0) { - await this.esClient - .bulk({ - refresh: 'wait_for', - operations: resourcesSlice.flatMap((resource) => [ - { update: { _id: this.createId(resource), _index: index } }, - { - doc: { - ...resource, - '@timestamp': createdAt, - updated_by: this.username, - updated_at: createdAt, - }, - doc_as_upsert: true, - }, - ]), - }) - .catch((error) => { - this.logger.error(`Error upsert resources: ${error.message}`); - throw error; - }); - } - } - - public async get( - migrationId: string, - type?: RuleMigrationResourceType, - names?: string[] - ): Promise<StoredRuleMigrationResource[]> { - const index = await this.getIndexName(); - - const filter: QueryDslQueryContainer[] = [{ term: { migration_id: migrationId } }]; - if (type) { - filter.push({ term: { type } }); - } - if (names) { - filter.push({ terms: { name: names } }); - } - const query = { bool: { filter } }; - - return this.esClient - .search<RuleMigrationResource>({ index, query }) - .then(this.processResponseHits.bind(this)) - .catch((error) => { - this.logger.error(`Error searching resources: ${error.message}`); - throw error; - }); - } - - private createId(resource: CreateRuleMigrationResourceInput): string { - const key = `${resource.migration_id}-${resource.type}-${resource.name}`; - return sha256.create().update(key).hex(); - } -} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts deleted file mode 100644 index 20b7cc6f1361d..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { END, START, StateGraph } from '@langchain/langgraph'; -import { getCreateSemanticQueryNode } from './nodes/create_semantic_query'; -import { getMatchPrebuiltRuleNode } from './nodes/match_prebuilt_rule'; -import { getProcessQueryNode } from './nodes/process_query'; - -import { migrateRuleState } from './state'; -import { getTranslateRuleGraph } from './sub_graphs/translate_rule'; -import type { MigrateRuleGraphParams, MigrateRuleState } from './types'; - -export function getRuleMigrationAgent({ - model, - inferenceClient, - ruleMigrationsRetriever, - connectorId, - logger, -}: MigrateRuleGraphParams) { - const matchPrebuiltRuleNode = getMatchPrebuiltRuleNode({ - model, - ruleMigrationsRetriever, - }); - const translationSubGraph = getTranslateRuleGraph({ - inferenceClient, - ruleMigrationsRetriever, - connectorId, - logger, - }); - const createSemanticQueryNode = getCreateSemanticQueryNode({ model }); - const processQueryNode = getProcessQueryNode({ model, ruleMigrationsRetriever }); - - const siemMigrationAgentGraph = new StateGraph(migrateRuleState) - // Nodes - .addNode('processQuery', processQueryNode) - .addNode('createSemanticQuery', createSemanticQueryNode) - .addNode('matchPrebuiltRule', matchPrebuiltRuleNode) - .addNode('translationSubGraph', translationSubGraph) - // Edges - .addEdge(START, 'processQuery') - .addEdge('processQuery', 'createSemanticQuery') - .addEdge('createSemanticQuery', 'matchPrebuiltRule') - .addConditionalEdges('matchPrebuiltRule', matchedPrebuiltRuleConditional, [ - 'translationSubGraph', - END, - ]) - .addEdge('translationSubGraph', END); - - const graph = siemMigrationAgentGraph.compile(); - graph.name = 'Rule Migration Graph'; // Customizes the name displayed in LangSmith - return graph; -} - -const matchedPrebuiltRuleConditional = (state: MigrateRuleState) => { - if (state.elastic_rule?.prebuilt_rule_id) { - return END; - } - return 'translationSubGraph'; -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts deleted file mode 100644 index 54be39eb193f7..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ChatPromptTemplate } from '@langchain/core/prompts'; -export const CREATE_SEMANTIC_QUERY_PROMPT = ChatPromptTemplate.fromMessages([ - [ - 'system', - `You are a helpful assistant that helps in translating provided titles, descriptions and data sources into a single summary of keywords specifically crafted to be used as a semantic search query, which are usually short and includes keywords that are valid for the usecase. -The data provided are collected from SIEM detection rules, and it is trying to match the description of a list of data sources, so provide good keywords that match this usecase. -Try to also detect what sort of vendor, solution or technology is required and add these as keywords as well. -Some examples would be to identify if its cloud, which vendor, network, host, endpoint, etc.`, - ], - [ - 'human', - `<query> -Title: {title} -Description: {description} -Query: {query} -</query> - -Go through the relevant title, description and data sources from the above query and create a collection of keywords specifically crafted to be used as a semantic search query. - -<guidelines> -- The query should be short and concise. -- Include keywords that are relevant to the use case. -- Add related keywords you detected from the above query, like one or more vendor, product, cloud provider, OS platform etc. -- Always reply with a JSON object with the key "semantic_query" and the value as the semantic search query inside three backticks as shown in the below example. -</guidelines> - -<example_response> -U: <query> -Title: Processes created by netsh -Description: This search looks for processes launching netsh.exe to execute various commands via the netsh command-line utility. Netsh.exe is a command-line scripting utility that allows you to, either locally or remotely, display or modify the network configuration of a computer that is currently running. Netsh can be used as a persistence proxy technique to execute a helper .dll when netsh.exe is executed. In this search, we are looking for processes spawned by netsh.exe that are executing commands via the command line. Deprecated because we have another detection of the same type. -Data Sources: -</query> -A: Please find the semantic_query keywords JSON object below: -\`\`\`json -{{"semantic_query": "windows host endpoint netsh.exe process creation command-line utility network configuration persistence proxy dll execution sysmon event id 1"}} -\`\`\` -</example_response>`, - ], - ['ai', 'Please find the semantic_query keywords JSON object below:'], -]); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts deleted file mode 100644 index ea403c5c4ffa7..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { JsonOutputParser } from '@langchain/core/output_parsers'; -import { SiemMigrationRuleTranslationResult } from '../../../../../../../../common/siem_migrations/constants'; -import type { RuleMigrationsRetriever } from '../../../retrievers'; -import type { ChatModel } from '../../../util/actions_client_chat'; -import type { GraphNode } from '../../types'; -import { MATCH_PREBUILT_RULE_PROMPT } from './prompts'; - -interface GetMatchPrebuiltRuleNodeParams { - model: ChatModel; - ruleMigrationsRetriever: RuleMigrationsRetriever; -} - -interface GetMatchedRuleResponse { - match: string; -} - -export const getMatchPrebuiltRuleNode = - ({ model, ruleMigrationsRetriever }: GetMatchPrebuiltRuleNodeParams): GraphNode => - async (state) => { - const query = state.semantic_query; - const techniqueIds = state.original_rule.annotations?.mitre_attack || []; - const prebuiltRules = await ruleMigrationsRetriever.prebuiltRules.getRules( - query, - techniqueIds.join(',') - ); - - const outputParser = new JsonOutputParser(); - const matchPrebuiltRule = MATCH_PREBUILT_RULE_PROMPT.pipe(model).pipe(outputParser); - - const elasticSecurityRules = prebuiltRules.map((rule) => { - return { - name: rule.name, - description: rule.description, - }; - }); - - const response = (await matchPrebuiltRule.invoke({ - rules: JSON.stringify(elasticSecurityRules, null, 2), - ruleTitle: state.original_rule.title, - })) as GetMatchedRuleResponse; - if (response.match) { - const matchedRule = prebuiltRules.find((r) => r.name === response.match); - if (matchedRule) { - return { - elastic_rule: { - title: matchedRule.name, - description: matchedRule.description, - id: matchedRule.installedRuleId, - prebuilt_rule_id: matchedRule.rule_id, - }, - translation_result: SiemMigrationRuleTranslationResult.FULL, - }; - } - } - return {}; - }; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts deleted file mode 100644 index 60fea54250bb3..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ChatPromptTemplate } from '@langchain/core/prompts'; -export const MATCH_PREBUILT_RULE_PROMPT = ChatPromptTemplate.fromMessages([ - [ - 'system', - `You are an expert assistant in Cybersecurity, your task is to help migrating a SIEM detection rule, from Splunk Security to Elastic Security. -You will be provided with a Splunk Detection Rule name by the user, your goal is to try find an Elastic Detection Rule that covers the same threat, if any. -Here are some context for you to reference for your task, read it carefully as you will get questions about it later: - -<context> -<elastic_detection_rule_names> -{rules} -</elastic_detection_rule_names> -</context> -`, - ], - [ - 'human', - `See the below description of the relevant splunk rule and try to match it with any of the elastic detection rules with similar names. -<splunk_rule_name> -{ruleTitle} -</splunk_rule_name> - -<guidelines> -- Always reply with a JSON object with the key "match" and the value being the most relevant matched elastic detection rule name. Do not reply with anything else. -- Only reply with exact matches, if you are unsure or do not find a very confident match, always reply with an empty string value in the match key, do not guess or reply with anything else. -- If there is one Elastic rule in the list that covers the same threat, set the name of the matching rule as a value of the match key. Do not reply with anything else. -- If there are multiple rules in the list that cover the same threat, answer with the most specific of them, for example: "Linux User Account Creation" is more specific than "User Account Creation". -</guidelines> - -<example_response> -U: <splunk_rule_name> -Linux Auditd Add User Account Type -</splunk_rule_name> -A: Please find the match JSON object below: -\`\`\`json -{{"match": "Linux User Account Creation"}} -\`\`\` -</example_response> -`, - ], - ['ai', 'Please find the match JSON object below:'], -]); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/prompts.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/prompts.ts deleted file mode 100644 index be19ca8b0bf10..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/prompts.ts +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ChatPromptTemplate } from '@langchain/core/prompts'; -import type { RuleMigrationResources } from '../../../retrievers/rule_resource_retriever'; - -interface ResourceContext { - macros: string; - lists: string; -} - -export const getResourcesContext = (resources: RuleMigrationResources): ResourceContext => { - const result: ResourceContext = { macros: '', lists: '' }; - - // Process macros - if (resources.macro?.length) { - const macrosMap = resources.macro.reduce((acc, macro) => { - acc[macro.name] = macro.content; - return acc; - }, {} as Record<string, string>); - - result.macros = JSON.stringify(macrosMap, null, 2); - } - - // Process lists - if (resources.list?.length) { - const listsMap = resources.list.reduce((acc, list) => { - acc[list.name] = list.content; - return acc; - }, {} as Record<string, string>); - - result.lists = JSON.stringify(listsMap, null, 2); - } - - return result; -}; - -export const REPLACE_QUERY_RESOURCE_PROMPT = ChatPromptTemplate.fromMessages([ - [ - 'system', - `You are an agent expert in Splunk SPL (Search Processing Language). -Your task is to inline a set of macros and lookup tables syntax using their values in a SPL query. -Here are some context for you to reference for your task, read it carefully as you will get questions about it later: - -<context> -<macro_guidelines> - -Always follow the below guidelines when replacing macros: -- Macros names have the number of arguments in parentheses, e.g., \`macroName(2)\`. You must replace the correct macro accounting for the number of arguments. - -Having the following macros: - \`someSource\`: sourcetype="somesource" - \`searchTitle(1)\`: search title="$value$" - \`searchTitle\`: search title=* - \`searchType\`: search type=* -And the following SPL query: - \`\`\`spl - \`someSource\` \`someFilter\` - | \`searchTitle("sometitle")\` - | \`searchType("sometype")\` - | table * - \`\`\` -The correct replacement would be: - \`\`\`spl - sourcetype="somesource" \`someFilter\` - | search title="sometitle" - | \`searchType("sometype")\` - | table * - \`\`\` -</macro_guidelines> - -<lookup_guidelines> -Always follow the below guidelines when replacing lookup tables: -- OUTPUTNEW and OUTPUT fields should be replaced with the values from the lookup table. -- Use the \`case\` function to evaluate conditions in the same order provided by the lookup table. -- Ensure all lookup matching fields are correctly matched to their respective case conditions. -- If there are more than one field to match, use the \`AND\` operator to combine them inside the \`case\` function. -- The transformed SPL query should function equivalently to the original query with the \`lookup\` command. - - -Having the following lookup table: - uid,username,department - 1066,Claudia Garcia,Engineering - 1690,Rutherford Sullivan,Engineering - 1815,Vanya Patel,IT - 1862,Wei Zhang,Engineering - 1916,Alex Martin,Personnel -And the following SPL query: - \`\`\`spl - ... | lookup users uid OUTPUTNEW username, department - \`\`\` -The correct replacement would be: - \`\`\`spl - ... | eval username=case(uid=1066, "Claudia Garcia", - uid=1690, "Rutherford Sullivan", - uid=1815, "Vanya Patel", - uid=1862, "Wei Zhang", - uid=1916, "Alex Martin", - true, null), - department=case(uid=1066, "Engineering", - uid=1690, "Engineering", - uid=1815, "IT", - uid=1862, "Engineering", - uid=1916, "Personnel", - true, null) - \`\`\` -</lookup_guidelines> -</context>`, - ], - [ - 'human', - `Go through the SPL query and identify all the macros and lookup tables that are used. -<macros> -{macros} -</macros> -<lookup_tables> -{lookup_tables} -</lookup_tables> - -<spl_query> -\`\`\`spl -{query} -\`\`\` -</spl_query> - -Divide the query up into separate section and go through each section one at a time to identify the macros and lookup tables used that need to be replaced using one of two scenarios: -- The macro or lookup table is provided in the resources: Replace it using its actual content. -- The macro or lookup table is not provided in the resources: Do not replace it, keep it in the query as it is. - -<guidelines> -- You will be provided with a SPL query and also the resources reference with the values of macros and lookup tables. -- You have to replace the macros and lookup tables syntax in the SPL query and use their values inline, if provided. -- The original and modified queries must be equivalent. -- You must respond only with the modified query inside a \`\`\`spl code block, nothing else similar to the example response below. -</guidelines> - -<example_response> -A: Please find the modified SPL query below: -\`\`\`spl -sourcetype="linux:audit" \`linux_auditd_normalized_proctitle_process\` -| rename host as dest -| where LIKE (process_exec, "%chown root%") -| stats count min(_time) as firstTime max(_time) as lastTime by process_exec proctitle normalized_proctitle_delimiter dest -| convert timeformat="%Y-%m-%dT%H:%M:%S" ctime(firstTime) -| convert timeformat="%Y-%m-%dT%H:%M:%S" ctime(lastTime) -| search * -\`\`\` -</example_response> - -`, - ], - ['ai', 'Please find the modified SPL query below:'], -]); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts deleted file mode 100644 index edd33e2ec69b6..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { BaseMessage } from '@langchain/core/messages'; -import { Annotation, messagesStateReducer } from '@langchain/langgraph'; -import type { SiemMigrationRuleTranslationResult } from '../../../../../../common/siem_migrations/constants'; -import type { - ElasticRule, - OriginalRule, - RuleMigration, -} from '../../../../../../common/siem_migrations/model/rule_migration.gen'; -import type { Integration } from '../../types'; - -export const migrateRuleState = Annotation.Root({ - messages: Annotation<BaseMessage[]>({ - reducer: messagesStateReducer, - default: () => [], - }), - original_rule: Annotation<OriginalRule>(), - elastic_rule: Annotation<ElasticRule>({ - reducer: (state, action) => ({ ...state, ...action }), - }), - semantic_query: Annotation<string>({ - reducer: (current, value) => value ?? current, - default: () => '', - }), - inline_query: Annotation<string>({ - reducer: (current, value) => value ?? current, - default: () => '', - }), - integrations: Annotation<Integration[]>({ - reducer: (current, value) => value ?? current, - default: () => [], - }), - translation_result: Annotation<SiemMigrationRuleTranslationResult>(), - comments: Annotation<RuleMigration['comments']>({ - reducer: (current, value) => (value ? (current ?? []).concat(value) : current), - default: () => [], - }), - response: Annotation<string>(), -}); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts deleted file mode 100644 index 267a5bb0dd520..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { END, START, StateGraph } from '@langchain/langgraph'; -import { isEmpty } from 'lodash/fp'; -import { SiemMigrationRuleTranslationResult } from '../../../../../../../../common/siem_migrations/constants'; -import { getFixQueryErrorsNode } from './nodes/fix_query_errors'; -import { getRetrieveIntegrationsNode } from './nodes/retrieve_integrations'; -import { getTranslateRuleNode } from './nodes/translate_rule'; -import { getValidationNode } from './nodes/validation'; -import { translateRuleState } from './state'; -import type { TranslateRuleGraphParams, TranslateRuleState } from './types'; - -// How many times we will try to self-heal when validation fails, to prevent infinite graph recursions -const MAX_VALIDATION_ITERATIONS = 3; - -export function getTranslateRuleGraph({ - inferenceClient, - connectorId, - ruleMigrationsRetriever, - logger, -}: TranslateRuleGraphParams) { - const translateRuleNode = getTranslateRuleNode({ - inferenceClient, - connectorId, - logger, - }); - const validationNode = getValidationNode({ logger }); - const fixQueryErrorsNode = getFixQueryErrorsNode({ inferenceClient, connectorId, logger }); - const retrieveIntegrationsNode = getRetrieveIntegrationsNode({ ruleMigrationsRetriever }); - - const translateRuleGraph = new StateGraph(translateRuleState) - // Nodes - .addNode('translateRule', translateRuleNode) - .addNode('validation', validationNode) - .addNode('fixQueryErrors', fixQueryErrorsNode) - .addNode('retrieveIntegrations', retrieveIntegrationsNode) - // Edges - .addEdge(START, 'retrieveIntegrations') - .addEdge('retrieveIntegrations', 'translateRule') - .addEdge('translateRule', 'validation') - .addEdge('fixQueryErrors', 'validation') - .addConditionalEdges('validation', validationRouter, ['fixQueryErrors', END]); - - const graph = translateRuleGraph.compile(); - graph.name = 'Translate Rule Graph'; - return graph; -} - -const validationRouter = (state: TranslateRuleState) => { - if ( - state.validation_errors.iterations <= MAX_VALIDATION_ITERATIONS && - state.translation_result === SiemMigrationRuleTranslationResult.FULL - ) { - if (!isEmpty(state.validation_errors?.esql_errors)) { - return 'fixQueryErrors'; - } - } - return END; -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts deleted file mode 100644 index fa5b761806b5d..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { RuleMigrationsRetriever } from '../../../../../retrievers'; -import type { GraphNode } from '../../types'; - -interface GetRetrieveIntegrationsNodeParams { - ruleMigrationsRetriever: RuleMigrationsRetriever; -} - -export const getRetrieveIntegrationsNode = ({ - ruleMigrationsRetriever, -}: GetRetrieveIntegrationsNodeParams): GraphNode => { - return async (state) => { - const query = state.semantic_query; - - const integrations = await ruleMigrationsRetriever.integrations.getIntegrations(query); - return { - integrations, - }; - }; -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts deleted file mode 100644 index 9749dfd96efba..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ChatPromptTemplate } from '@langchain/core/prompts'; - -export const ESQL_TRANSLATION_PROMPT = - ChatPromptTemplate.fromTemplate(`You are a helpful cybersecurity (SIEM) expert agent. Your task is to migrate "detection rules" from Splunk to Elastic Security. -Your goal is to translate the SPL query into an equivalent Elastic Security Query Language (ES|QL) query. -Below is the relevant context used when deciding which Elastic Common Schema field to use when translating from Splunk CIM fields: - -<context> -<cim_to_ecs_map> -{field_mapping} -</cim_to_ecs_map> -</context> - -## Splunk rule Information provided: -- Below you will find Splunk rule information: the title (<<TITLE>>), the description (<<DESCRIPTION>>), and the SPL (Search Processing Language) query (<<SPL_QUERY>>). -- Use all the information to analyze the intent of the rule, in order to translate into an equivalent ES|QL rule. -- The fields in the Splunk query may not be the same as in the Elastic Common Schema (ECS), so you may need to map them accordingly. - -## Guidelines: -- Analyze the SPL query and identify the key components. -- Translate the SPL query into an equivalent ES|QL query using ECS (Elastic Common Schema) field names. -- Always start the generated ES|QL query by filtering FROM using these index patterns in the translated query: {indexPatterns}. -- If, in the SPL query, you find a lookup list or macro call, mention it in the summary and add a placeholder in the query with the format [macro:<macro_name>(argumentCount)] or [lookup:<lookup_name>] including the [] keys, - - Examples: - - \`get_duration(firstDate,secondDate)\` -> [macro:get_duration(2)] - - lookup dns_domains.csv -> [lookup:dns_domains.csv]. - -## The output will be parsed and must contain: -- First, the ES|QL query inside an \`\`\`esql code block. -- At the end, the summary of the translation process followed in markdown, starting with "## Migration Summary". - -Find the Splunk rule information below: - -<<TITLE>> -{title} -<> - -<> -{description} -<> - -<> -{inline_query} -<> -`); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts deleted file mode 100644 index 85f5e7279d2b9..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Logger } from '@kbn/core/server'; -import type { InferenceClient } from '@kbn/inference-plugin/server'; -import { SiemMigrationRuleTranslationResult } from '../../../../../../../../../../common/siem_migrations/constants'; -import { getEsqlKnowledgeBase } from '../../../../../util/esql_knowledge_base_caller'; -import type { GraphNode } from '../../types'; -import { SIEM_RULE_MIGRATION_CIM_ECS_MAP } from './cim_ecs_map'; -import { ESQL_TRANSLATION_PROMPT } from './prompts'; - -interface GetTranslateRuleNodeParams { - inferenceClient: InferenceClient; - connectorId: string; - logger: Logger; -} - -export const getTranslateRuleNode = ({ - inferenceClient, - connectorId, - logger, -}: GetTranslateRuleNodeParams): GraphNode => { - const esqlKnowledgeBaseCaller = getEsqlKnowledgeBase({ inferenceClient, connectorId, logger }); - return async (state) => { - const indexPatterns = state.integrations - .flatMap((integration) => - integration.data_streams.map((dataStream) => dataStream.index_pattern) - ) - .join(','); - const integrationIds = state.integrations.map((integration) => integration.id); - - const prompt = await ESQL_TRANSLATION_PROMPT.format({ - title: state.original_rule.title, - description: state.original_rule.description, - field_mapping: SIEM_RULE_MIGRATION_CIM_ECS_MAP, - inline_query: state.inline_query, - indexPatterns, - }); - const response = await esqlKnowledgeBaseCaller(prompt); - - const esqlQuery = response.match(/```esql\n([\s\S]*?)\n```/)?.[1] ?? ''; - const summary = response.match(/## Migration Summary[\s\S]*$/)?.[0] ?? ''; - - const translationResult = getTranslationResult(esqlQuery); - - return { - response, - comments: [summary], - translation_result: translationResult, - elastic_rule: { - title: state.original_rule.title, - integration_ids: integrationIds, - description: state.original_rule.description, - severity: 'low', - query: esqlQuery, - query_language: 'esql', - }, - }; - }; -}; - -const getTranslationResult = (esqlQuery: string): SiemMigrationRuleTranslationResult => { - if (esqlQuery.match(/\[(macro|lookup):[\s\S]*\]/)) { - return SiemMigrationRuleTranslationResult.PARTIAL; - } - return SiemMigrationRuleTranslationResult.FULL; -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts deleted file mode 100644 index ac8799cb09d74..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { BaseMessage } from '@langchain/core/messages'; -import { Annotation, messagesStateReducer } from '@langchain/langgraph'; -import { SiemMigrationRuleTranslationResult } from '../../../../../../../../common/siem_migrations/constants'; -import type { - ElasticRule, - OriginalRule, - RuleMigration, -} from '../../../../../../../../common/siem_migrations/model/rule_migration.gen'; -import type { Integration } from '../../../../types'; -import type { TranslateRuleValidationErrors } from './types'; - -export const translateRuleState = Annotation.Root({ - messages: Annotation({ - reducer: messagesStateReducer, - default: () => [], - }), - original_rule: Annotation(), - integrations: Annotation({ - reducer: (current, value) => value ?? current, - default: () => [], - }), - inline_query: Annotation({ - reducer: (current, value) => value ?? current, - default: () => '', - }), - semantic_query: Annotation({ - reducer: (current, value) => value ?? current, - default: () => '', - }), - elastic_rule: Annotation({ - reducer: (state, action) => ({ ...state, ...action }), - default: () => ({} as ElasticRule), - }), - validation_errors: Annotation({ - reducer: (current, value) => value ?? current, - default: () => ({ iterations: 0 } as TranslateRuleValidationErrors), - }), - translation_result: Annotation({ - reducer: (current, value) => value ?? current, - default: () => SiemMigrationRuleTranslationResult.UNTRANSLATABLE, - }), - comments: Annotation({ - reducer: (current, value) => (value ? (current ?? []).concat(value) : current), - default: () => [], - }), - response: Annotation({ - reducer: (current, value) => value ?? current, - default: () => '', - }), -}); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts deleted file mode 100644 index eddc415f23392..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Logger } from '@kbn/core/server'; -import type { InferenceClient } from '@kbn/inference-plugin/server'; -import type { RuleMigrationsRetriever } from '../../../retrievers'; -import type { translateRuleState } from './state'; - -export type TranslateRuleState = typeof translateRuleState.State; -export type GraphNode = (state: TranslateRuleState) => Promise>; - -export interface TranslateRuleGraphParams { - inferenceClient: InferenceClient; - connectorId: string; - ruleMigrationsRetriever: RuleMigrationsRetriever; - logger: Logger; -} - -export interface TranslateRuleValidationErrors { - iterations: number; - esql_errors?: string; -} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts deleted file mode 100644 index 22c884fa4043b..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { RuleMigrationsDataClient } from '../../data/rule_migrations_data_client'; -import { IntegrationRetriever } from './integration_retriever'; -import { PrebuiltRulesRetriever } from './prebuilt_rules_retriever'; -import { RuleResourceRetriever } from './rule_resource_retriever'; - -export class RuleMigrationsRetriever { - public readonly resources: RuleResourceRetriever; - public readonly integrations: IntegrationRetriever; - public readonly prebuiltRules: PrebuiltRulesRetriever; - - constructor(dataClient: RuleMigrationsDataClient, migrationId: string) { - this.resources = new RuleResourceRetriever(migrationId, dataClient); - this.integrations = new IntegrationRetriever(dataClient); - this.prebuiltRules = new PrebuiltRulesRetriever(dataClient); - } -} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts deleted file mode 100644 index 51618d5f3ca13..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { MAX_RECURSION_DEPTH, RuleResourceRetriever } from './rule_resource_retriever'; // Adjust path as needed -import type { OriginalRule } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; -import { MockRuleMigrationsDataClient } from '../../data/__mocks__/mocks'; - -const mockRuleResourceIdentifier = jest.fn(); -const mockGetRuleResourceIdentifier = jest.fn((_: unknown) => mockRuleResourceIdentifier); -jest.mock('../../../../../../common/siem_migrations/rules/resources', () => ({ - getRuleResourceIdentifier: (params: unknown) => mockGetRuleResourceIdentifier(params), -})); - -jest.mock('../../data/rule_migrations_data_service'); - -describe('RuleResourceRetriever', () => { - let retriever: RuleResourceRetriever; - const mockRuleMigrationsDataClient = new MockRuleMigrationsDataClient(); - const migrationId = 'test-migration-id'; - const ruleQuery = 'rule-query'; - const originalRule = { query: ruleQuery } as OriginalRule; - - beforeEach(() => { - retriever = new RuleResourceRetriever(migrationId, mockRuleMigrationsDataClient); - mockRuleResourceIdentifier.mockReturnValue({ list: [], macro: [] }); - - mockRuleMigrationsDataClient.resources.get.mockImplementation( - async (_: string, type: string, names: string[]) => - names.map((name) => ({ type, name, content: `${name}-content` })) - ); - - mockRuleResourceIdentifier.mockImplementation((query) => { - if (query === ruleQuery) { - return { list: ['list1', 'list2'], macro: ['macro1'] }; - } - return { list: [], macro: [] }; - }); - - jest.clearAllMocks(); - }); - - describe('getResources', () => { - it('should call resource identification', async () => { - await retriever.getResources(originalRule); - - expect(mockGetRuleResourceIdentifier).toHaveBeenCalledWith(originalRule); - expect(mockRuleResourceIdentifier).toHaveBeenCalledWith(ruleQuery); - expect(mockRuleResourceIdentifier).toHaveBeenCalledWith('macro1-content'); - }); - - it('should retrieve resources', async () => { - const resources = await retriever.getResources(originalRule); - - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith(migrationId, 'list', [ - 'list1', - 'list2', - ]); - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith( - migrationId, - 'macro', - ['macro1'] - ); - - expect(resources).toEqual({ - list: [ - { type: 'list', name: 'list1', content: 'list1-content' }, - { type: 'list', name: 'list2', content: 'list2-content' }, - ], - macro: [{ type: 'macro', name: 'macro1', content: 'macro1-content' }], - }); - }); - - it('should retrieve nested resources', async () => { - mockRuleResourceIdentifier.mockImplementation((query) => { - if (query === ruleQuery) { - return { list: ['list1', 'list2'], macro: ['macro1'] }; - } - if (query === 'macro1-content') { - return { list: ['list3'], macro: [] }; - } - return { list: [], macro: [] }; - }); - - const resources = await retriever.getResources(originalRule); - - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith(migrationId, 'list', [ - 'list1', - 'list2', - ]); - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith( - migrationId, - 'macro', - ['macro1'] - ); - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith(migrationId, 'list', [ - 'list3', - ]); - - expect(resources).toEqual({ - list: [ - { type: 'list', name: 'list1', content: 'list1-content' }, - { type: 'list', name: 'list2', content: 'list2-content' }, - { type: 'list', name: 'list3', content: 'list3-content' }, - ], - macro: [{ type: 'macro', name: 'macro1', content: 'macro1-content' }], - }); - }); - - it('should handle missing macros', async () => { - mockRuleMigrationsDataClient.resources.get.mockImplementation( - async (_: string, type: string, names: string[]) => { - if (type === 'macro') { - return []; - } - return names.map((name) => ({ type, name, content: `${name}-content` })); - } - ); - - const resources = await retriever.getResources(originalRule); - - expect(resources).toEqual({ - list: [ - { type: 'list', name: 'list1', content: 'list1-content' }, - { type: 'list', name: 'list2', content: 'list2-content' }, - ], - }); - }); - - it('should handle missing lists', async () => { - mockRuleMigrationsDataClient.resources.get.mockImplementation( - async (_: string, type: string, names: string[]) => { - if (type === 'list') { - return []; - } - return names.map((name) => ({ type, name, content: `${name}-content` })); - } - ); - - const resources = await retriever.getResources(originalRule); - - expect(resources).toEqual({ - macro: [{ type: 'macro', name: 'macro1', content: 'macro1-content' }], - }); - }); - - it('should not include resources with missing content', async () => { - mockRuleMigrationsDataClient.resources.get.mockImplementation( - async (_: string, type: string, names: string[]) => { - return names.map((name) => { - if (name === 'list1') { - return { type, name, content: '' }; - } - return { type, name, content: `${name}-content` }; - }); - } - ); - - const resources = await retriever.getResources(originalRule); - - expect(resources).toEqual({ - list: [{ type: 'list', name: 'list2', content: 'list2-content' }], - macro: [{ type: 'macro', name: 'macro1', content: 'macro1-content' }], - }); - }); - - it('should stop recursion after reaching MAX_RECURSION_DEPTH', async () => { - mockRuleResourceIdentifier.mockImplementation(() => { - return { list: [], macro: ['infinite-macro'] }; - }); - - const resources = await retriever.getResources(originalRule); - - expect(resources.macro?.length).toEqual(MAX_RECURSION_DEPTH); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts deleted file mode 100644 index d80646dc27c4d..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { isEmpty } from 'lodash/fp'; -import type { QueryResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources/types'; -import { getRuleResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources'; -import type { - OriginalRule, - RuleMigrationResource, - RuleMigrationResourceType, -} from '../../../../../../common/siem_migrations/model/rule_migration.gen'; -import type { RuleMigrationsDataClient } from '../../data/rule_migrations_data_client'; - -export type RuleMigrationResources = Partial< - Record ->; - -/* It's not a common practice to have more than 2-3 nested levels of resources. - * This limit is just to prevent infinite recursion in case something goes wrong. - */ -export const MAX_RECURSION_DEPTH = 30; - -export class RuleResourceRetriever { - constructor( - private readonly migrationId: string, - private readonly dataClient: RuleMigrationsDataClient - ) {} - - public async getResources(originalRule: OriginalRule): Promise { - const resourceIdentifier = getRuleResourceIdentifier(originalRule); - return this.recursiveRetriever(originalRule.query, resourceIdentifier); - } - - private recursiveRetriever = async ( - query: string, - resourceIdentifier: QueryResourceIdentifier, - it = 0 - ): Promise => { - if (it >= MAX_RECURSION_DEPTH) { - return {}; - } - - const identifiedResources = resourceIdentifier(query); - const resources: RuleMigrationResources = {}; - - const listNames = identifiedResources.list; - if (listNames.length > 0) { - const listsWithContent = await this.dataClient.resources - .get(this.migrationId, 'list', listNames) - .then(withContent); - - if (listsWithContent.length > 0) { - resources.list = listsWithContent; - } - } - - const macroNames = identifiedResources.macro; - if (macroNames.length > 0) { - const macrosWithContent = await this.dataClient.resources - .get(this.migrationId, 'macro', macroNames) - .then(withContent); - - if (macrosWithContent.length > 0) { - // retrieve nested resources inside macros - const macrosNestedResources = await Promise.all( - macrosWithContent.map(({ content }) => - this.recursiveRetriever(content, resourceIdentifier, it + 1) - ) - ); - - // Process lists inside macros - const macrosNestedLists = macrosNestedResources.flatMap( - (macroNestedResources) => macroNestedResources.list ?? [] - ); - if (macrosNestedLists.length > 0) { - resources.list = (resources.list ?? []).concat(macrosNestedLists); - } - - // Process macros inside macros - const macrosNestedMacros = macrosNestedResources.flatMap( - (macroNestedResources) => macroNestedResources.macro ?? [] - ); - - if (macrosNestedMacros.length > 0) { - macrosWithContent.push(...macrosNestedMacros); - } - resources.macro = macrosWithContent; - } - } - return resources; - }; -} - -const withContent = (resources: RuleMigrationResource[]) => { - return resources.filter((resource) => !isEmpty(resource.content)); -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts deleted file mode 100644 index 7ac7e848ba80d..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { AuthenticatedUser, SavedObjectsClientContract } from '@kbn/core/server'; -import type { RunnableConfig } from '@langchain/core/runnables'; -import type { InferenceClient } from '@kbn/inference-plugin/server'; -import type { ActionsClient } from '@kbn/actions-plugin/server'; -import type { RulesClient } from '@kbn/alerting-plugin/server'; -import type { RuleMigrationsDataClient } from '../data/rule_migrations_data_client'; -import type { getRuleMigrationAgent } from './agent'; - -export type MigrationAgent = ReturnType; - -export interface RuleMigrationTaskCreateClientParams { - currentUser: AuthenticatedUser; - dataClient: RuleMigrationsDataClient; -} - -export interface RuleMigrationTaskStartParams { - migrationId: string; - connectorId: string; - invocationConfig: RunnableConfig; - inferenceClient: InferenceClient; - actionsClient: ActionsClient; - rulesClient: RulesClient; - soClient: SavedObjectsClientContract; -} - -export interface RuleMigrationTaskPrepareParams { - migrationId: string; - connectorId: string; - inferenceClient: InferenceClient; - actionsClient: ActionsClient; - rulesClient: RulesClient; - soClient: SavedObjectsClientContract; - abortController: AbortController; -} - -export interface RuleMigrationTaskRunParams { - migrationId: string; - invocationConfig: RunnableConfig; - agent: MigrationAgent; - abortController: AbortController; -} - -export interface RuleMigrationTaskStartResult { - started: boolean; - exists: boolean; -} - -export interface RuleMigrationTaskStopResult { - stopped: boolean; - exists: boolean; -} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts b/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts deleted file mode 100644 index 3d67d6cd22b17..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { chunked, chunkedBy } from './collections_helpers'; - -describe('telemetry.utils.chunked', () => { - it('should chunk simple case', async () => { - const input = [1, 2, 3, 4, 5, 6, 7, 8, 9]; - const output = chunked(input, 3); - expect(output).toEqual([ - [1, 2, 3], - [4, 5, 6], - [7, 8, 9], - ]); - }); - - it('should chunk with remainder', async () => { - const input = [1, 2, 3, 4, 5, 6, 7, 8, 9]; - const output = chunked(input, 4); - expect(output).toEqual([[1, 2, 3, 4], [5, 6, 7, 8], [9]]); - }); - - it('should chunk with empty list', async () => { - const input: unknown[] = []; - const output = chunked(input, 4); - expect(output).toEqual([]); - }); - - it('should chunk with single element', async () => { - const input = [1]; - const output = chunked(input, 4); - expect(output).toEqual([[1]]); - }); - - it('should chunk with single element and chunk size 1', async () => { - const input = [1]; - const output = chunked(input, 1); - expect(output).toEqual([[1]]); - }); - - it('should chunk arrays smaller than the chunk size', async () => { - const input = [1]; - const output = chunked(input, 10); - expect(output).toEqual([[1]]); - }); -}); - -describe('telemetry.utils.chunkedBy', () => { - it('should chunk simple case', async () => { - const input = ['aa', 'b', 'ccc', 'ddd']; - const output = chunkedBy(input, 3, (v) => v.length); - expect(output).toEqual([['aa', 'b'], ['ccc'], ['ddd']]); - }); - - it('should chunk with remainder', async () => { - const input = ['aaa', 'b']; - const output = chunkedBy(input, 3, (v) => v.length); - expect(output).toEqual([['aaa'], ['b']]); - }); - - it('should chunk with empty list', async () => { - const input: string[] = []; - const output = chunkedBy(input, 3, (v) => v.length); - expect(output).toEqual([]); - }); - - it('should chunk with single element smaller than max weight', async () => { - const input = ['aa']; - const output = chunkedBy(input, 3, (v) => v.length); - expect(output).toEqual([['aa']]); - }); - - it('should chunk with single element bigger than max weight', async () => { - const input = ['aaaa']; - const output = chunkedBy(input, 3, (v) => v.length); - expect(output).toEqual([['aaaa']]); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.ts b/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.ts deleted file mode 100644 index a104ea1d55bf8..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/** - * Splits the list into a list of lists each not exceeding the given size. - * The order of the elements is preserved. - * - * @param list - The list to split - * @param size - The maximum size of each chunk - * - * @returns - The list of chunks - */ -export const chunked = function (list: T[], size: number): T[][] { - return chunkedBy(list, size, () => 1); -}; - -/** - * Splits the list into a list of lists each not exceeding the given size. - * The size of each element is determined by the weight function, that is called - * for each element in the list. - * The sum of the weights of the elements in each chunk will not exceed the given size. - * The order of the elements is preserved. - * - * @param list - The list to split - * @param size - The maximum size of each chunk - * @param weight - The function that determines the weight of each element - * @returns - The list of chunks - */ -export const chunkedBy = function (list: T[], size: number, weight: (v: T) => number): T[][] { - function chunk(acc: Chunked, value: T): Chunked { - const currentWeight = weight(value); - if (acc.weight + currentWeight <= size) { - acc.current.push(value); - acc.weight += currentWeight; - } else { - acc.chunks.push(acc.current); - acc.current = [value]; - acc.weight = currentWeight; - } - return acc; - } - - return list.reduce(chunk, new Chunked()).flush(); -}; - -/** - * Helper class used internally. - */ -class Chunked { - public weight: number = 0; - - constructor(public chunks: T[][] = [], public current: T[] = []) {} - - public flush(): T[][] { - if (this.current.length !== 0) { - this.chunks.push(this.current); - this.current = []; - } - return this.chunks.filter((chunk) => chunk.length > 0); - } -} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/configuration.ts b/x-pack/plugins/security_solution/server/lib/telemetry/configuration.ts deleted file mode 100644 index 691b0daae8f2c..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/configuration.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import os from 'os'; -import type { PaginationConfiguration, TelemetrySenderChannelConfiguration } from './types'; - -class TelemetryConfigurationDTO { - private readonly DEFAULT_TELEMETRY_MAX_BUFFER_SIZE = 100; - private readonly DEFAULT_MAX_SECURITY_LIST_TELEMETRY_BATCH = 100; - private readonly DEFAULT_MAX_ENDPOINT_TELEMETRY_BATCH = 300; - private readonly DEFAULT_MAX_DETECTION_RULE_TELEMETRY_BATCH = 1_000; - private readonly DEFAULT_MAX_DETECTION_ALERTS_BATCH = 50; - private readonly DEFAULT_ASYNC_SENDER = false; - private readonly DEFAULT_SENDER_CHANNELS = {}; - private readonly DEFAULT_PAGINATION_CONFIG = { - // default to 2% of host's total memory or 80MiB, whichever is smaller - max_page_size_bytes: Math.min(os.totalmem() * 0.02, 80 * 1024 * 1024), - num_docs_to_sample: 10, - }; - private _telemetry_max_buffer_size = this.DEFAULT_TELEMETRY_MAX_BUFFER_SIZE; - private _max_security_list_telemetry_batch = this.DEFAULT_MAX_SECURITY_LIST_TELEMETRY_BATCH; - private _max_endpoint_telemetry_batch = this.DEFAULT_MAX_ENDPOINT_TELEMETRY_BATCH; - private _max_detection_rule_telemetry_batch = this.DEFAULT_MAX_DETECTION_RULE_TELEMETRY_BATCH; - private _max_detection_alerts_batch = this.DEFAULT_MAX_DETECTION_ALERTS_BATCH; - private _use_async_sender = this.DEFAULT_ASYNC_SENDER; - private _sender_channels: { - [key: string]: TelemetrySenderChannelConfiguration; - } = this.DEFAULT_SENDER_CHANNELS; - private _pagination_config: PaginationConfiguration = this.DEFAULT_PAGINATION_CONFIG; - - public get telemetry_max_buffer_size(): number { - return this._telemetry_max_buffer_size; - } - - public set telemetry_max_buffer_size(num: number) { - this._telemetry_max_buffer_size = num; - } - - public get max_security_list_telemetry_batch(): number { - return this._max_security_list_telemetry_batch; - } - - public set max_security_list_telemetry_batch(num: number) { - this._max_security_list_telemetry_batch = num; - } - - public get max_endpoint_telemetry_batch(): number { - return this._max_endpoint_telemetry_batch; - } - - public set max_endpoint_telemetry_batch(num: number) { - this._max_endpoint_telemetry_batch = num; - } - - public get max_detection_rule_telemetry_batch(): number { - return this._max_detection_rule_telemetry_batch; - } - - public set max_detection_rule_telemetry_batch(num: number) { - this._max_detection_rule_telemetry_batch = num; - } - - public get max_detection_alerts_batch(): number { - return this._max_detection_alerts_batch; - } - - public set max_detection_alerts_batch(num: number) { - this._max_detection_alerts_batch = num; - } - - public get use_async_sender(): boolean { - return this._use_async_sender; - } - - public set use_async_sender(num: boolean) { - this._use_async_sender = num; - } - - public set sender_channels(config: { [key: string]: TelemetrySenderChannelConfiguration }) { - this._sender_channels = config; - } - - public get sender_channels(): { [key: string]: TelemetrySenderChannelConfiguration } { - return this._sender_channels; - } - - public set pagination_config(paginationConfiguration: PaginationConfiguration) { - this._pagination_config = paginationConfiguration; - } - - public get pagination_config(): PaginationConfiguration { - return this._pagination_config; - } - - public resetAllToDefault() { - this._telemetry_max_buffer_size = this.DEFAULT_TELEMETRY_MAX_BUFFER_SIZE; - this._max_security_list_telemetry_batch = this.DEFAULT_MAX_SECURITY_LIST_TELEMETRY_BATCH; - this._max_endpoint_telemetry_batch = this.DEFAULT_MAX_ENDPOINT_TELEMETRY_BATCH; - this._max_detection_rule_telemetry_batch = this.DEFAULT_MAX_DETECTION_RULE_TELEMETRY_BATCH; - this._max_detection_alerts_batch = this.DEFAULT_MAX_DETECTION_ALERTS_BATCH; - this._sender_channels = this.DEFAULT_SENDER_CHANNELS; - this._pagination_config = this.DEFAULT_PAGINATION_CONFIG; - } -} - -export const telemetryConfiguration = new TelemetryConfigurationDTO(); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts b/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts deleted file mode 100644 index 02a39be555110..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts +++ /dev/null @@ -1,460 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { EventTypeOpts } from '@kbn/core/server'; -import type { - ResponseActionAgentType, - ResponseActionStatus, - ResponseActionsApiCommandNames, -} from '../../../../common/endpoint/service/response_actions/constants'; -import type { BulkUpsertAssetCriticalityRecordsResponse } from '../../../../common/api/entity_analytics'; - -export const RISK_SCORE_EXECUTION_SUCCESS_EVENT: EventTypeOpts<{ - scoresWritten: number; - taskDurationInSeconds: number; - interval: string; - alertSampleSizePerShard: number; -}> = { - eventType: 'risk_score_execution_success', - schema: { - scoresWritten: { - type: 'long', - _meta: { - description: 'Number of risk scores written during this scoring task execution', - }, - }, - taskDurationInSeconds: { - type: 'long', - _meta: { - description: 'Duration (in seconds) of the current risk scoring task execution', - }, - }, - interval: { - type: 'keyword', - _meta: { - description: `Configured interval for the current risk scoring task`, - }, - }, - alertSampleSizePerShard: { - type: 'long', - _meta: { - description: `Number of alerts to sample per shard for the current risk scoring task`, - }, - }, - }, -}; - -export const RISK_SCORE_EXECUTION_ERROR_EVENT: EventTypeOpts<{}> = { - eventType: 'risk_score_execution_error', - schema: {}, -}; - -export const RISK_SCORE_EXECUTION_CANCELLATION_EVENT: EventTypeOpts<{ - scoresWritten: number; - taskDurationInSeconds: number; - interval: string; - alertSampleSizePerShard: number; -}> = { - eventType: 'risk_score_execution_cancellation', - schema: { - scoresWritten: { - type: 'long', - _meta: { - description: 'Number of risk scores written during this scoring task execution', - }, - }, - taskDurationInSeconds: { - type: 'long', - _meta: { - description: 'Duration (in seconds) of the current risk scoring task execution', - }, - }, - interval: { - type: 'keyword', - _meta: { - description: `Configured interval for the current risk scoring task`, - }, - }, - alertSampleSizePerShard: { - type: 'long', - _meta: { - description: `Number of alerts to sample per shard for the current risk scoring task`, - }, - }, - }, -}; - -interface AssetCriticalitySystemProcessedAssignmentFileEvent { - processing: { - startTime: string; - endTime: string; - tookMs: number; - }; - result?: BulkUpsertAssetCriticalityRecordsResponse['stats']; - status: 'success' | 'partial_success' | 'fail'; -} - -export const ASSET_CRITICALITY_SYSTEM_PROCESSED_ASSIGNMENT_FILE_EVENT: EventTypeOpts = - { - eventType: 'Asset Criticality Csv Upload Processed', - schema: { - processing: { - properties: { - startTime: { type: 'date', _meta: { description: 'Processing start time' } }, - endTime: { type: 'date', _meta: { description: 'Processing end time' } }, - tookMs: { type: 'long', _meta: { description: 'How long processing took ms' } }, - }, - }, - result: { - properties: { - successful: { - type: 'long', - _meta: { description: 'Number of criticality records successfully created or updated' }, - }, - failed: { - type: 'long', - _meta: { description: 'Number of criticality records which had errors' }, - }, - total: { type: 'long', _meta: { description: 'Total number of lines in the file' } }, - }, - }, - status: { - type: 'keyword', - _meta: { description: 'Status of the processing either success, partial_success or fail' }, - }, - }, - }; - -export const FIELD_RETENTION_ENRICH_POLICY_EXECUTION_EVENT: EventTypeOpts<{ - duration: number; - interval: string; -}> = { - eventType: 'field_retention_enrich_policy_execution', - schema: { - duration: { - type: 'long', - _meta: { - description: 'Duration (in seconds) of the field retention enrich policy execution time', - }, - }, - interval: { - type: 'keyword', - _meta: { - description: 'Configured interval for the field retention enrich policy task', - }, - }, - }, -}; - -export const ENTITY_ENGINE_RESOURCE_INIT_FAILURE_EVENT: EventTypeOpts<{ - error: string; -}> = { - eventType: 'entity_engine_resource_init_failure', - schema: { - error: { - type: 'keyword', - _meta: { - description: 'Error message for a resource initialization failure', - }, - }, - }, -}; - -export const ENTITY_ENGINE_INITIALIZATION_EVENT: EventTypeOpts<{ - duration: number; -}> = { - eventType: 'entity_engine_initialization', - schema: { - duration: { - type: 'long', - _meta: { - description: 'Duration (in seconds) of the entity engine initialization', - }, - }, - }, -}; - -export const ENTITY_STORE_USAGE_EVENT: EventTypeOpts<{ - storeSize: number; -}> = { - eventType: 'entity_store_usage', - schema: { - storeSize: { - type: 'long', - _meta: { - description: 'Number of entities stored in the entity store', - }, - }, - }, -}; - -export const ALERT_SUPPRESSION_EVENT: EventTypeOpts<{ - suppressionAlertsCreated: number; - suppressionAlertsSuppressed: number; - suppressionRuleName: string; - suppressionDuration: number; - suppressionGroupByFieldsNumber: number; - suppressionGroupByFields: string[]; - suppressionRuleType: string; - suppressionMissingFields: boolean; - suppressionRuleId: string; -}> = { - eventType: 'alert_suppression_on_rule_execution', - schema: { - suppressionAlertsCreated: { - type: 'long', - _meta: { - description: - 'Number of alerts created during rule execution with configured alert suppression', - }, - }, - suppressionAlertsSuppressed: { - type: 'long', - _meta: { - description: - 'Number of alerts suppressed during rule execution with configured alert suppression', - }, - }, - suppressionRuleName: { - type: 'keyword', - _meta: { - description: 'Name of rule', - }, - }, - suppressionDuration: { - type: 'long', - _meta: { - description: 'Duration in seconds of suppression period. -1 for per rule execution config', - }, - }, - suppressionGroupByFieldsNumber: { - type: 'long', - _meta: { - description: 'Number of Suppress by fields', - }, - }, - suppressionGroupByFields: { - type: 'array', - items: { - type: 'keyword', - _meta: { - description: 'Tag attached to the element...', - optional: false, - }, - }, - _meta: { - description: 'List of tags attached to the element...', - optional: false, - }, - }, - suppressionRuleType: { - type: 'keyword', - _meta: { - description: 'Rule type', - }, - }, - suppressionMissingFields: { - type: 'boolean', - _meta: { - description: 'Suppression of missing fields enabled', - }, - }, - suppressionRuleId: { - type: 'keyword', - _meta: { - description: 'ruleId', - }, - }, - }, -}; - -interface CreateAssetCriticalityProcessedFileEvent { - result?: BulkUpsertAssetCriticalityRecordsResponse['stats']; - startTime: Date; - endTime: Date; -} -export const createAssetCriticalityProcessedFileEvent = ({ - result, - startTime, - endTime, -}: CreateAssetCriticalityProcessedFileEvent): [ - string, - AssetCriticalitySystemProcessedAssignmentFileEvent -] => { - const status = getUploadStatus(result); - - const processing = { - startTime: startTime.toISOString(), - endTime: endTime.toISOString(), - tookMs: endTime.getTime() - startTime.getTime(), - }; - - return [ - ASSET_CRITICALITY_SYSTEM_PROCESSED_ASSIGNMENT_FILE_EVENT.eventType, - { - processing, - result, - status, - }, - ]; -}; - -const getUploadStatus = (stats?: BulkUpsertAssetCriticalityRecordsResponse['stats']) => { - if (!stats) { - return 'fail'; - } - - if (stats.failed === 0) { - return 'success'; - } - - if (stats.successful > 0) { - return 'partial_success'; - } - - return 'fail'; -}; - -export const ENDPOINT_RESPONSE_ACTION_SENT_ERROR_EVENT: EventTypeOpts<{ - responseActions: { - agentType: ResponseActionAgentType; - command: ResponseActionsApiCommandNames; - error: string; - }; -}> = { - eventType: 'endpoint_response_action_sent_error', - schema: { - responseActions: { - properties: { - agentType: { - type: 'keyword', - _meta: { - description: 'The type of agent that the action was sent to', - optional: false, - }, - }, - command: { - type: 'keyword', - _meta: { - description: 'The command that was sent to the endpoint', - optional: false, - }, - }, - error: { - type: 'text', - _meta: { - description: 'The error message for the response action', - }, - }, - }, - }, - }, -}; - -export const ENDPOINT_RESPONSE_ACTION_SENT_EVENT: EventTypeOpts<{ - responseActions: { - actionId: string; - agentType: ResponseActionAgentType; - command: ResponseActionsApiCommandNames; - isAutomated: boolean; - }; -}> = { - eventType: 'endpoint_response_action_sent', - schema: { - responseActions: { - properties: { - actionId: { - type: 'keyword', - _meta: { - description: 'The ID of the action that was sent to the endpoint', - optional: false, - }, - }, - agentType: { - type: 'keyword', - _meta: { - description: 'The type of agent that the action was sent to', - optional: false, - }, - }, - command: { - type: 'keyword', - _meta: { - description: 'The command that was sent to the endpoint', - optional: false, - }, - }, - isAutomated: { - type: 'boolean', - _meta: { - description: 'Whether the action was auto-initiated by a pre-configured rule', - optional: false, - }, - }, - }, - }, - }, -}; - -export const ENDPOINT_RESPONSE_ACTION_STATUS_CHANGE_EVENT: EventTypeOpts<{ - responseActions: { - actionId: string; - agentType: ResponseActionAgentType; - actionStatus: ResponseActionStatus; - command: ResponseActionsApiCommandNames; - }; -}> = { - eventType: 'endpoint_response_action_status_change_event', - schema: { - responseActions: { - properties: { - actionId: { - type: 'keyword', - _meta: { - description: 'The ID of the action that was sent to the endpoint', - optional: false, - }, - }, - agentType: { - type: 'keyword', - _meta: { - description: 'The type of agent that the action was sent to', - optional: false, - }, - }, - actionStatus: { - type: 'keyword', - _meta: { - description: 'The status of the action', - optional: false, - }, - }, - command: { - type: 'keyword', - _meta: { - description: 'The command that was sent to the endpoint', - optional: false, - }, - }, - }, - }, - }, -}; - -export const events = [ - RISK_SCORE_EXECUTION_SUCCESS_EVENT, - RISK_SCORE_EXECUTION_ERROR_EVENT, - RISK_SCORE_EXECUTION_CANCELLATION_EVENT, - ASSET_CRITICALITY_SYSTEM_PROCESSED_ASSIGNMENT_FILE_EVENT, - ALERT_SUPPRESSION_EVENT, - ENDPOINT_RESPONSE_ACTION_SENT_EVENT, - ENDPOINT_RESPONSE_ACTION_SENT_ERROR_EVENT, - ENDPOINT_RESPONSE_ACTION_STATUS_CHANGE_EVENT, - FIELD_RETENTION_ENRICH_POLICY_EXECUTION_EVENT, - ENTITY_ENGINE_RESOURCE_INIT_FAILURE_EVENT, - ENTITY_ENGINE_INITIALIZATION_EVENT, - ENTITY_STORE_USAGE_EVENT, -]; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts deleted file mode 100644 index 25dd07d4ef986..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts +++ /dev/null @@ -1,506 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { cloneDeep } from 'lodash'; -import { URL } from 'url'; -import { transformDataToNdjson } from '@kbn/securitysolution-utils'; - -import type { Logger, LogMeta } from '@kbn/core/server'; -import type { TelemetryPluginStart, TelemetryPluginSetup } from '@kbn/telemetry-plugin/server'; -import type { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import type { AxiosInstance } from 'axios'; -import axios from 'axios'; -import type { - TaskManagerSetupContract, - TaskManagerStartContract, -} from '@kbn/task-manager-plugin/server'; -import { exhaustMap, Subject, takeUntil, timer } from 'rxjs'; -import type { ITelemetryReceiver } from './receiver'; -import { copyAllowlistedFields, filterList } from './filterlists'; -import { createTelemetryTaskConfigs } from './tasks'; -import { copyLicenseFields, createUsageCounterLabel, newTelemetryLogger } from './helpers'; -import { type TelemetryLogger } from './telemetry_logger'; -import type { TelemetryChannel, TelemetryEvent } from './types'; -import type { SecurityTelemetryTaskConfig } from './task'; -import { SecurityTelemetryTask } from './task'; -import { telemetryConfiguration } from './configuration'; -import type { IAsyncTelemetryEventsSender, QueueConfig } from './async_sender.types'; -import { TaskMetricsService } from './task_metrics'; - -const usageLabelPrefix: string[] = ['security_telemetry', 'sender']; - -export interface ITelemetryEventsSender { - setup( - telemetryReceiver: ITelemetryReceiver, - telemetrySetup?: TelemetryPluginSetup, - taskManager?: TaskManagerSetupContract, - telemetryUsageCounter?: UsageCounter, - asyncTelemetrySender?: IAsyncTelemetryEventsSender - ): void; - - getTelemetryUsageCluster(): UsageCounter | undefined; - getClusterID(): string | undefined; - - start( - telemetryStart?: TelemetryPluginStart, - taskManager?: TaskManagerStartContract, - receiver?: ITelemetryReceiver - ): void; - - stop(): void; - /** - * @deprecated Use `sendAsync` instead. - */ - queueTelemetryEvents(events: TelemetryEvent[]): void; - isTelemetryOptedIn(): Promise; - isTelemetryServicesReachable(): Promise; - sendIfDue(axiosInstance?: AxiosInstance): Promise; - processEvents(events: TelemetryEvent[]): TelemetryEvent[]; - sendOnDemand(channel: string, toSend: unknown[], axiosInstance?: AxiosInstance): Promise; - getV3UrlFromV2(v2url: string, channel: string): string; - - // As a transition to the new sender, `IAsyncTelemetryEventsSender`, we wrap - // its "public API" here to expose a single Sender interface to the rest - // of the code. The `queueTelemetryEvents` is deprecated in favor of - // `sendAsync`. - - /** - * Sends events to a given telemetry channel asynchronously. - */ - sendAsync: (channel: TelemetryChannel, events: unknown[]) => void; - - /** - * Simulates sending events to a given telemetry channel asynchronously - * and returns the request that should be sent to the server - */ - simulateSendAsync: (channel: TelemetryChannel, events: unknown[]) => string[]; - - /** - * Updates the queue configuration for a given channel. - */ - updateQueueConfig: (channel: TelemetryChannel, config: QueueConfig) => void; - - /** - * Updates the default queue configuration. - */ - updateDefaultQueueConfig: (config: QueueConfig) => void; -} - -export class TelemetryEventsSender implements ITelemetryEventsSender { - private readonly initialCheckDelayMs = 10 * 1000; - private readonly checkIntervalMs = 60 * 1000; - private readonly logger: TelemetryLogger; - private readonly stop$ = new Subject(); - private maxQueueSize = telemetryConfiguration.telemetry_max_buffer_size; - private telemetryStart?: TelemetryPluginStart; - private telemetrySetup?: TelemetryPluginSetup; - private isSending = false; - private receiver: ITelemetryReceiver | undefined; - private queue: TelemetryEvent[] = []; - - // Assume both true until the first check - private isOptedIn?: boolean = true; - private isElasticTelemetryReachable?: boolean = true; - - private telemetryUsageCounter?: UsageCounter; - private telemetryTasks?: SecurityTelemetryTask[]; - - private asyncTelemetrySender?: IAsyncTelemetryEventsSender; - - constructor(logger: Logger) { - this.logger = newTelemetryLogger(logger.get('telemetry_events.sender')); - } - - public setup( - telemetryReceiver: ITelemetryReceiver, - telemetrySetup?: TelemetryPluginSetup, - taskManager?: TaskManagerSetupContract, - telemetryUsageCounter?: UsageCounter, - asyncTelemetrySender?: IAsyncTelemetryEventsSender - ) { - this.telemetrySetup = telemetrySetup; - this.telemetryUsageCounter = telemetryUsageCounter; - if (taskManager) { - const taskMetricsService = new TaskMetricsService(this.logger, this); - this.telemetryTasks = createTelemetryTaskConfigs().map( - (config: SecurityTelemetryTaskConfig) => { - const task = new SecurityTelemetryTask( - config, - this.logger, - this, - telemetryReceiver, - taskMetricsService - ); - task.register(taskManager); - return task; - } - ); - } - this.asyncTelemetrySender = asyncTelemetrySender; - } - - public getTelemetryUsageCluster(): UsageCounter | undefined { - return this.telemetryUsageCounter; - } - - public getClusterID(): string | undefined { - return this.receiver?.getClusterInfo()?.cluster_uuid; - } - - public start( - telemetryStart?: TelemetryPluginStart, - taskManager?: TaskManagerStartContract, - receiver?: ITelemetryReceiver - ) { - this.telemetryStart = telemetryStart; - this.receiver = receiver; - if (taskManager && this.telemetryTasks) { - this.logger.l('Starting security telemetry tasks'); - this.telemetryTasks.forEach((task) => task.start(taskManager)); - } - - this.logger.l('Starting local task'); - timer(this.initialCheckDelayMs, this.checkIntervalMs) - .pipe( - takeUntil(this.stop$), - exhaustMap(() => this.sendIfDue()) - ) - .subscribe(); - } - - public stop() { - this.stop$.next(); - } - - public queueTelemetryEvents(events: TelemetryEvent[]) { - const qlength = this.queue.length; - this.logger.debug('Enqueuing events', { - queue_length: qlength, - events: events.length, - } as LogMeta); - if (events.length === 0) { - this.logger.l('No events to queue'); - return; - } - - if (qlength >= this.maxQueueSize) { - // we're full already - this.logger.l('Queue length is greater than max queue size'); - return; - } - if (events.length > this.maxQueueSize - qlength) { - this.logger.l('Events exceed remaining queue size', { - max_queue_size: this.maxQueueSize, - queue_length: qlength, - }); - this.telemetryUsageCounter?.incrementCounter({ - counterName: createUsageCounterLabel(usageLabelPrefix.concat(['queue_stats'])), - counterType: 'docs_lost', - incrementBy: events.length, - }); - this.telemetryUsageCounter?.incrementCounter({ - counterName: createUsageCounterLabel(usageLabelPrefix.concat(['queue_stats'])), - counterType: 'num_capacity_exceeded', - incrementBy: 1, - }); - this.queue.push(...this.processEvents(events.slice(0, this.maxQueueSize - qlength))); - } else { - this.logger.debug('Events fit within queue size'); - this.queue.push(...this.processEvents(events)); - } - } - - public async isTelemetryOptedIn() { - this.isOptedIn = await this.telemetryStart?.getIsOptedIn(); - return this.isOptedIn === true; - } - - /** - * Issue: https://github.com/elastic/kibana/issues/133321 - * - * As of 8.3 - Telemetry is opted in by default, but the Kibana instance may - * be deployed in a network where outbound connections are restricted. This - * causes hanging connections in backend telemetry code. A previous bugfix - * included a default timeout for the client, but this code shouldn't be - * reachable if we cannot connect to Elastic Telemetry Services. This - * function call can be utilized to check if the Kibana instance can - * call out. - * - * Please note that this function should be used with care. DO NOT call this - * function in a way that does not take into consideration if the deployment - * opted out of telemetry. For example, - * - * DO NOT - * -------- - * - * if (isTelemetryServicesReachable() && isTelemetryOptedIn()) { - * ... - * } - * - * DO - * -------- - * - * if (isTelemetryOptedIn() && isTelemetryServicesReachable()) { - * ... - * } - * - * Is ok because the call to `isTelemetryServicesReachable()` is never called - * because `isTelemetryOptedIn()` short-circuits the conditional. - * - * DO NOT - * -------- - * - * const [optedIn, isReachable] = await Promise.all([ - * isTelemetryOptedIn(), - * isTelemetryServicesReachable(), - * ]); - * - * As it does not take into consideration the execution order and makes a redundant - * network call to Elastic Telemetry Services. - * - * Staging URL: https://telemetry-staging.elastic.co/ping - * Production URL: https://telemetry.elastic.co/ping - */ - public async isTelemetryServicesReachable() { - try { - const telemetryUrl = await this.fetchTelemetryPingUrl(); - const resp = await axios.get(telemetryUrl, { timeout: 3000 }); - if (resp.status === 200) { - this.logger.l('[Security Telemetry] elastic telemetry services are reachable'); - return true; - } - - return false; - } catch (_err) { - return false; - } - } - - public async sendIfDue(axiosInstance: AxiosInstance = axios) { - if (this.isSending) { - return; - } - - if (this.queue.length === 0) { - return; - } - - try { - this.isSending = true; - - this.isOptedIn = await this.isTelemetryOptedIn(); - if (!this.isOptedIn) { - this.logger.l('Telemetry is not opted-in.'); - this.queue = []; - this.isSending = false; - return; - } - - this.isElasticTelemetryReachable = await this.isTelemetryServicesReachable(); - if (!this.isElasticTelemetryReachable) { - this.logger.l('Telemetry Services are not reachable.'); - this.queue = []; - this.isSending = false; - return; - } - - const clusterInfo = this.receiver?.getClusterInfo(); - - const [telemetryUrl, licenseInfo] = await Promise.all([ - this.fetchTelemetryUrl('alerts-endpoint'), - this.receiver?.fetchLicenseInfo(), - ]); - - this.logger.debug('Telemetry URL', { - url: telemetryUrl, - } as LogMeta); - - const toSend: TelemetryEvent[] = cloneDeep(this.queue).map((event) => ({ - ...event, - ...(licenseInfo ? { license: copyLicenseFields(licenseInfo) } : {}), - cluster_uuid: clusterInfo?.cluster_uuid, - cluster_name: clusterInfo?.cluster_name, - })); - this.queue = []; - - await this.sendEvents( - toSend, - telemetryUrl, - 'alerts-endpoint', - clusterInfo?.cluster_uuid, - clusterInfo?.cluster_name, - clusterInfo?.version?.number, - licenseInfo?.uid, - axiosInstance - ); - } catch (err) { - this.logger.warn(`Error sending telemetry events data: ${err}`); - this.queue = []; - } - this.isSending = false; - } - - public processEvents(events: TelemetryEvent[]): TelemetryEvent[] { - return events.map(function (obj: TelemetryEvent): TelemetryEvent { - return copyAllowlistedFields(filterList.endpointAlerts, obj); - }); - } - - /** - * This function sends events to the elastic telemetry channel. Caution is required - * because it does no allowlist filtering at send time. The function call site is - * responsible for ensuring sure no sensitive material is in telemetry events. - * - * @param channel the elastic telemetry channel - * @param toSend telemetry events - */ - public async sendOnDemand( - channel: string, - toSend: unknown[], - axiosInstance: AxiosInstance = axios - ) { - const clusterInfo = this.receiver?.getClusterInfo(); - try { - const [telemetryUrl, licenseInfo] = await Promise.all([ - this.fetchTelemetryUrl(channel), - this.receiver?.fetchLicenseInfo(), - ]); - - this.logger.l('Telemetry URL', { - url: telemetryUrl, - }); - - await this.sendEvents( - toSend, - telemetryUrl, - channel, - clusterInfo?.cluster_uuid, - clusterInfo?.cluster_name, - clusterInfo?.version?.number, - licenseInfo?.uid, - axiosInstance - ); - } catch (err) { - this.logger.warn(`Error sending telemetry events data: ${err}`); - } - } - - private async fetchTelemetryUrl(channel: string): Promise { - const telemetryUrl = await this.telemetrySetup?.getTelemetryUrl(); - if (!telemetryUrl) { - throw Error("Couldn't get telemetry URL"); - } - return this.getV3UrlFromV2(telemetryUrl.toString(), channel); - } - - // Forms URLs like: - // https://telemetry.elastic.co/v3/send/my-channel-name or - // https://telemetry-staging.elastic.co/v3-dev/send/my-channel-name - public getV3UrlFromV2(v2url: string, channel: string): string { - const url = new URL(v2url); - if (!url.hostname.includes('staging')) { - url.pathname = `/v3/send/${channel}`; - } else { - url.pathname = `/v3-dev/send/${channel}`; - } - return url.toString(); - } - - public sendAsync(channel: TelemetryChannel, events: unknown[]): void { - this.getAsyncTelemetrySender().send(channel, events); - } - - public simulateSendAsync(channel: TelemetryChannel, events: unknown[]): string[] { - return this.getAsyncTelemetrySender().simulateSend(channel, events); - } - - public updateQueueConfig(channel: TelemetryChannel, config: QueueConfig): void { - this.getAsyncTelemetrySender().updateQueueConfig(channel, config); - } - - public updateDefaultQueueConfig(config: QueueConfig): void { - this.getAsyncTelemetrySender().updateDefaultQueueConfig(config); - } - - private getAsyncTelemetrySender(): IAsyncTelemetryEventsSender { - if (!this.asyncTelemetrySender) { - throw new Error('Telemetry Sender V2 not initialized'); - } - return this.asyncTelemetrySender; - } - - private async fetchTelemetryPingUrl(): Promise { - const telemetryUrl = await this.telemetrySetup?.getTelemetryUrl(); - if (!telemetryUrl) { - throw Error("Couldn't get telemetry URL"); - } - - telemetryUrl.pathname = `/ping`; - return telemetryUrl.toString(); - } - - private async sendEvents( - events: unknown[], - telemetryUrl: string, - channel: string, - clusterUuid: string | undefined, - clusterName: string | undefined, - clusterVersionNumber: string | undefined, - licenseId: string | undefined, - axiosInstance: AxiosInstance = axios - ) { - const ndjson = transformDataToNdjson(events); - - try { - this.logger.debug('Sending telemetry events', { - events: events.length, - channel, - } as LogMeta); - const resp = await axiosInstance.post(telemetryUrl, ndjson, { - headers: { - 'Content-Type': 'application/x-ndjson', - ...(clusterUuid ? { 'X-Elastic-Cluster-ID': clusterUuid } : undefined), - ...(clusterName ? { 'X-Elastic-Cluster-Name': clusterName } : undefined), - 'X-Elastic-Stack-Version': clusterVersionNumber ? clusterVersionNumber : '8.0.0', - ...(licenseId ? { 'X-Elastic-License-ID': licenseId } : {}), - }, - timeout: 10000, - }); - this.telemetryUsageCounter?.incrementCounter({ - counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), - counterType: resp.status.toString(), - incrementBy: 1, - }); - this.telemetryUsageCounter?.incrementCounter({ - counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), - counterType: 'docs_sent', - incrementBy: events.length, - }); - this.logger.l('Events sent!. Response', { status: resp.status }); - } catch (err) { - this.logger.l('Error sending events', { error: JSON.stringify(err) }); - const errorStatus = err?.response?.status; - if (errorStatus !== undefined && errorStatus !== null) { - this.telemetryUsageCounter?.incrementCounter({ - counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), - counterType: errorStatus.toString(), - incrementBy: 1, - }); - } - this.telemetryUsageCounter?.incrementCounter({ - counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), - counterType: 'docs_lost', - incrementBy: events.length, - }); - this.telemetryUsageCounter?.incrementCounter({ - counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), - counterType: 'num_exceptions', - incrementBy: 1, - }); - } - } -} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts deleted file mode 100644 index 0558971ebf1e3..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Logger } from '@kbn/core/server'; -import type { ITelemetryEventsSender } from '../sender'; -import { TelemetryChannel, type TelemetryConfiguration } from '../types'; -import type { ITelemetryReceiver } from '../receiver'; -import type { TaskExecutionPeriod } from '../task'; -import type { ITaskMetricsService } from '../task_metrics.types'; -import { artifactService } from '../artifact'; -import { telemetryConfiguration } from '../configuration'; -import { newTelemetryLogger } from '../helpers'; - -export function createTelemetryConfigurationTaskConfig() { - const taskName = 'Security Solution Telemetry Configuration Task'; - const taskType = 'security:telemetry-configuration'; - return { - type: taskType, - title: taskName, - interval: '1h', - timeout: '1m', - version: '1.0.0', - runTask: async ( - taskId: string, - logger: Logger, - _receiver: ITelemetryReceiver, - sender: ITelemetryEventsSender, - taskMetricsService: ITaskMetricsService, - taskExecutionPeriod: TaskExecutionPeriod - ) => { - const mdc = { task_id: taskId, task_execution_period: taskExecutionPeriod }; - const log = newTelemetryLogger(logger.get('configuration'), mdc); - const trace = taskMetricsService.start(taskType); - - log.l('Running telemetry task'); - - try { - const artifactName = 'telemetry-buffer-and-batch-sizes-v1'; - const manifest = await artifactService.getArtifact(artifactName); - - if (manifest.notModified) { - log.debug('No new configuration artifact found, skipping...'); - await taskMetricsService.end(trace); - return 0; - } - - const configArtifact = manifest.data as unknown as TelemetryConfiguration; - - log.l('Got telemetry configuration artifact', { - artifact: configArtifact, - }); - - telemetryConfiguration.max_detection_alerts_batch = - configArtifact.max_detection_alerts_batch; - telemetryConfiguration.telemetry_max_buffer_size = configArtifact.telemetry_max_buffer_size; - telemetryConfiguration.max_detection_rule_telemetry_batch = - configArtifact.max_detection_rule_telemetry_batch; - telemetryConfiguration.max_endpoint_telemetry_batch = - configArtifact.max_endpoint_telemetry_batch; - telemetryConfiguration.max_security_list_telemetry_batch = - configArtifact.max_security_list_telemetry_batch; - - if (configArtifact.use_async_sender) { - telemetryConfiguration.use_async_sender = configArtifact.use_async_sender; - } - - if (configArtifact.sender_channels) { - log.l('Updating sender channels configuration'); - telemetryConfiguration.sender_channels = configArtifact.sender_channels; - const channelsDict = Object.values(TelemetryChannel).reduce( - (acc, channel) => acc.set(channel as string, channel), - new Map() - ); - - Object.entries(configArtifact.sender_channels).forEach(([channelName, config]) => { - if (channelName === 'default') { - log.l('Updating default configuration'); - sender.updateDefaultQueueConfig({ - bufferTimeSpanMillis: config.buffer_time_span_millis, - inflightEventsThreshold: config.inflight_events_threshold, - maxPayloadSizeBytes: config.max_payload_size_bytes, - }); - } else { - const channel = channelsDict.get(channelName); - if (!channel) { - log.l('Ignoring unknown channel', { channel: channelName }); - } else { - log.l('Updating configuration for channel', { channel: channelName }); - sender.updateQueueConfig(channel, { - bufferTimeSpanMillis: config.buffer_time_span_millis, - inflightEventsThreshold: config.inflight_events_threshold, - maxPayloadSizeBytes: config.max_payload_size_bytes, - }); - } - } - }); - } - - if (configArtifact.pagination_config) { - log.l('Updating pagination configuration'); - telemetryConfiguration.pagination_config = configArtifact.pagination_config; - _receiver.setMaxPageSizeBytes(configArtifact.pagination_config.max_page_size_bytes); - _receiver.setNumDocsToSample(configArtifact.pagination_config.num_docs_to_sample); - } - - await taskMetricsService.end(trace); - - log.l('Updated TelemetryConfiguration', { configuration: telemetryConfiguration }); - return 0; - } catch (err) { - log.l('Failed to set telemetry configuration', { error: err.message }); - telemetryConfiguration.resetAllToDefault(); - await taskMetricsService.end(trace, err); - return 0; - } - }, - }; -} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/index.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/index.ts deleted file mode 100644 index d237757616f3e..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { SecurityTelemetryTaskConfig } from '../task'; -import { createTelemetryDiagnosticsTaskConfig } from './diagnostic'; -import { createTelemetryEndpointTaskConfig } from './endpoint'; -import { createTelemetrySecurityListTaskConfig } from './security_lists'; -import { createTelemetryDetectionRuleListsTaskConfig } from './detection_rule'; -import { createTelemetryPrebuiltRuleAlertsTaskConfig } from './prebuilt_rule_alerts'; -import { createTelemetryTimelineTaskConfig } from './timelines'; -import { createTelemetryDiagnosticTimelineTaskConfig } from './timelines_diagnostic'; -import { createTelemetryConfigurationTaskConfig } from './configuration'; -import { telemetryConfiguration } from '../configuration'; -import { createTelemetryFilterListArtifactTaskConfig } from './filterlists'; - -export function createTelemetryTaskConfigs(): SecurityTelemetryTaskConfig[] { - return [ - createTelemetryDiagnosticsTaskConfig(), - createTelemetryEndpointTaskConfig(telemetryConfiguration.max_security_list_telemetry_batch), - createTelemetrySecurityListTaskConfig(telemetryConfiguration.max_endpoint_telemetry_batch), - createTelemetryDetectionRuleListsTaskConfig( - telemetryConfiguration.max_detection_rule_telemetry_batch - ), - createTelemetryPrebuiltRuleAlertsTaskConfig(telemetryConfiguration.max_detection_alerts_batch), - createTelemetryTimelineTaskConfig(), - createTelemetryDiagnosticTimelineTaskConfig(), - createTelemetryConfigurationTaskConfig(), - createTelemetryFilterListArtifactTaskConfig(), - ]; -} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/types.ts b/x-pack/plugins/security_solution/server/lib/telemetry/types.ts deleted file mode 100644 index eafe04c96a5ab..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/telemetry/types.ts +++ /dev/null @@ -1,517 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Agent } from '@kbn/fleet-plugin/common'; - -import type { AlertEvent, ResolverNode, SafeResolverEvent } from '../../../common/endpoint/types'; -import type { AllowlistFields } from './filterlists/types'; - -type BaseSearchTypes = string | number | boolean | object; -export type SearchTypes = BaseSearchTypes | BaseSearchTypes[] | undefined; - -// For getting cluster info. Copied from telemetry_collection/get_cluster_info.ts -export interface ESClusterInfo { - cluster_uuid: string; - cluster_name: string; - version?: { - number: string; - build_flavor: string; - build_type: string; - build_hash: string; - build_date: string; - build_snapshot?: boolean; - lucene_version: string; - minimum_wire_compatibility_version: string; - minimum_index_compatibility_version: string; - }; -} - -// From https://www.elastic.co/guide/en/elasticsearch/reference/current/get-license.html -export interface ESLicense { - status: string; - uid: string; - type: string; - issue_date?: string; - issue_date_in_millis?: number; - expiry_date?: string; - expirty_date_in_millis?: number; - max_nodes?: number; - issued_to?: string; - issuer?: string; - start_date_in_millis?: number; -} - -// Telemetry -export interface TelemetryEvent { - [key: string]: SearchTypes; - '@timestamp'?: string; - data_stream?: { - [key: string]: SearchTypes; - dataset?: string; - }; - cluster_name?: string; - cluster_uuid?: string; - package_version?: string; - file?: { - [key: string]: SearchTypes; - Ext?: { - [key: string]: SearchTypes; - }; - }; - license?: ESLicense; - event?: { - id?: string; - kind?: string; - }; - kubernetes?: { - audit?: { - user?: { - username?: string; - groups?: string[]; - }; - impersonated_user?: { - username?: string; - groups?: string[]; - }; - pod?: SearchTypes; - }; - }; -} - -/** - * List of supported telemetry channels. - */ -export enum TelemetryChannel { - LISTS = 'security-lists-v2', - ENDPOINT_META = 'endpoint-metadata', - ENDPOINT_ALERTS = 'alerts-endpoint', - DETECTION_ALERTS = 'alerts-detections', - TIMELINE = 'alerts-timeline', - INSIGHTS = 'security-insights-v1', - TASK_METRICS = 'task-metrics', -} - -export enum TelemetryCounter { - DOCS_SENT = 'docs_sent', - DOCS_LOST = 'docs_lost', - DOCS_DROPPED = 'docs_dropped', - HTTP_STATUS = 'http_status', - RUNTIME_ERROR = 'runtime_error', - FATAL_ERROR = 'fatal_error', - TELEMETRY_OPTED_OUT = 'telemetry_opted_out', - TELEMETRY_NOT_REACHABLE = 'telemetry_not_reachable', - NUM_ENDPOINT = 'num_endpoint', -} - -// EP Policy Response - -export interface EndpointPolicyResponseAggregation { - hits: { - total: { value: number }; - }; - aggregations: { - policy_responses: { - buckets: Array<{ - key: string; - doc_count: number; - latest_response: EndpointPolicyResponseHits; - }>; - }; - }; -} - -interface EndpointPolicyResponseHits { - hits: { - total: { value: number }; - hits: Array<{ _source: EndpointPolicyResponseDocument }>; - }; -} - -interface NonPolicyConfiguration { - isolation: boolean; -} - -export interface EndpointPolicyResponseDocument { - agent: { - id: string; - }; - event: { - agent_id_status: string; - }; - Endpoint: { - policy: { - applied: { - actions: Array<{ - name: string; - message: string; - status: string; - }>; - artifacts: { - global: { - version: string; - }; - }; - status: string; - }; - }; - configuration: NonPolicyConfiguration; - state: NonPolicyConfiguration; - }; -} - -// EP Metrics - -export interface EndpointMetricsAggregation { - hits: { - total: { value: number }; - }; - aggregations: { - endpoint_agents: { - buckets: Array<{ key: string; doc_count: number; latest_metrics: EndpointMetricHits }>; - }; - endpoint_count: { value: number }; - }; -} - -interface EndpointMetricHits { - hits: { - total: { value: number }; - hits: Array<{ _id: string; _source: EndpointMetricDocument }>; - }; -} - -export interface EndpointMetricDocument { - '@timestamp': string; - agent: { - id: string; - version: string; - }; - Endpoint: { - metrics: EndpointMetrics; - }; - elastic: { - agent: { - id: string; - }; - }; - host: { - os: EndpointMetricOS; - }; - event: { - agent_id_status: string; - }; -} - -export interface EndpointMetricsAbstract { - endpointMetricIds: string[]; - totalEndpoints: number; -} - -interface DocumentsVolumeMetrics { - suppressed_count: number; - suppressed_bytes: number; - sent_count: number; - sent_bytes: number; -} - -interface SystemImpactEventsMetrics { - week_ms: number; -} - -export interface EndpointMetrics { - memory: { - endpoint: { - private: { - mean: number; - latest: number; - }; - }; - }; - cpu: { - endpoint: { - histogram: { - counts: number[]; - values: number[]; - }; - mean: number; - latest: number; - }; - }; - uptime: { - endpoint: number; - system: number; - }; - documents_volume: { - file_events: DocumentsVolumeMetrics; - library_events: DocumentsVolumeMetrics; - process_events: DocumentsVolumeMetrics; - registry_events: DocumentsVolumeMetrics; - network_events: DocumentsVolumeMetrics; - overall: DocumentsVolumeMetrics; - alerts: DocumentsVolumeMetrics; - diagnostic_alerts: DocumentsVolumeMetrics; - dns_events: DocumentsVolumeMetrics; - security_events: DocumentsVolumeMetrics; - }; - malicious_behavior_rules: Array<{ id: string; endpoint_uptime_percent: number }>; - system_impact: Array<{ - process: { - code_signature: Array<{ - trusted: boolean; - subject_name: string; - exists: boolean; - status: string; - }>; - executable: string; - }; - malware?: SystemImpactEventsMetrics; - process_events?: SystemImpactEventsMetrics; - registry_events?: SystemImpactEventsMetrics; - dns_events?: SystemImpactEventsMetrics; - network_events?: SystemImpactEventsMetrics; - overall?: SystemImpactEventsMetrics; - library_load_events?: SystemImpactEventsMetrics; - }>; - threads: Array<{ name: string; cpu: { mean: number } }>; - event_filter: { - active_global_count: number; - active_user_count: number; - }; -} - -interface EndpointMetricOS { - Ext: { - variant: string; - }; - kernel: string; - name: string; - family: string; - version: string; - platform: string; - full: string; -} - -// EP Metadata - -export interface EndpointMetadataAggregation { - hits: { - total: { value: number }; - }; - aggregations: { - endpoint_metadata: { - buckets: Array<{ key: string; doc_count: number; latest_metadata: EndpointMetadataHits }>; - }; - }; -} - -interface EndpointMetadataHits { - hits: { - total: { value: number }; - hits: Array<{ _source: EndpointMetadataDocument }>; - }; -} - -export interface EndpointMetadataDocument { - '@timestamp': string; - agent: { - id: string; - version: string; - }; - Endpoint: { - capabilities: string[]; - }; - elastic: { - agent: { - id: string; - }; - }; -} - -export interface GetEndpointListResponse { - per_page: number; - page: number; - total: number; - data: ExceptionListItem[]; -} - -// Telemetry List types - -export interface ExceptionListItem { - id: string; - rule_version?: number; - name: string; - created_at: string; - updated_at: string; - entries: object; - os_types: object; -} - -export interface ListTemplate { - '@timestamp': string; - cluster_uuid: string; - cluster_name: string; - license_id: string | undefined; - detection_rule?: TelemetryEvent; - endpoint_exception?: TelemetryEvent; - endpoint_event_filter?: TelemetryEvent; - trusted_application?: TelemetryEvent; -} - -// Detection Rule types - -interface ExceptionListEntry { - id: string; - list_id: string; - type: string; - namespace_type: string; -} - -interface DetectionRuleParms { - ruleId: string; - version: number; - type: string; - exceptionsList: ExceptionListEntry[]; -} - -export interface RuleSearchResult { - alert: { - name: string; - enabled: boolean; - tags: string[]; - createdAt: string; - updatedAt: string; - params: DetectionRuleParms; - }; -} - -// EP Timeline telemetry - -export type EnhancedAlertEvent = AlertEvent & { 'event.id': string; 'kibana.alert.uuid': string }; - -export type TimelineTelemetryEvent = ResolverNode & { event: SafeResolverEvent | undefined }; - -export interface TimelineTelemetryTemplate { - '@timestamp': string; - cluster_uuid: string; - cluster_name: string; - version: string | undefined; - license_uuid: string | undefined; - alert_id: string | undefined; - event_id: string; - timeline: TimelineTelemetryEvent[]; -} - -export interface ValueListMetaData { - total_list_count: number; - types: Array<{ - type: string; - count: number; - }>; - lists: Array<{ - id: string; - count: number; - }>; - included_in_exception_lists_count: number; - used_in_indicator_match_rule_count: number; -} - -export interface ValueListResponseAggregation { - aggregations: { - total_value_list_count: { value: number }; - type_breakdown: { - buckets: Array<{ - key: string; - doc_count: number; - }>; - }; - }; -} - -export interface ValueListItemsResponseAggregation { - aggregations: { - value_list_item_count: { - buckets: Array<{ - key: string; - doc_count: number; - }>; - }; - }; -} - -export interface ValueListExceptionListResponseAggregation { - aggregations: { - vl_included_in_exception_lists_count: { value: number }; - }; -} - -export interface ValueListIndicatorMatchResponseAggregation { - aggregations: { - vl_used_in_indicator_match_rule_count: { value: number }; - }; -} - -export interface TelemetryConfiguration { - telemetry_max_buffer_size: number; - max_security_list_telemetry_batch: number; - max_endpoint_telemetry_batch: number; - max_detection_rule_telemetry_batch: number; - max_detection_alerts_batch: number; - use_async_sender: boolean; - sender_channels?: { - [key: string]: TelemetrySenderChannelConfiguration; - }; - pagination_config?: PaginationConfiguration; -} - -export interface PaginationConfiguration { - max_page_size_bytes: number; - num_docs_to_sample: number; -} - -export interface TelemetrySenderChannelConfiguration { - buffer_time_span_millis: number; - inflight_events_threshold: number; - max_payload_size_bytes: number; -} - -export interface TelemetryFilterListArtifact { - endpoint_alerts: AllowlistFields; - exception_lists: AllowlistFields; - prebuilt_rules_alerts: AllowlistFields; -} - -export interface ValueListResponse { - listMetricsResponse: ValueListResponseAggregation; - itemMetricsResponse: ValueListItemsResponseAggregation; - exceptionListMetricsResponse: ValueListExceptionListResponseAggregation; - indicatorMatchMetricsResponse: ValueListIndicatorMatchResponseAggregation; -} - -export type Nullable = T | null | undefined; - -export interface ExtraInfo { - clusterInfo: ESClusterInfo; - licenseInfo: Nullable; -} - -export interface TimeFrame { - startOfDay: string; - endOfDay: string; -} - -export interface TimelineResult { - nodes: number; - events: number; - timeline: TimelineTelemetryTemplate | undefined; -} - -export interface FleetAgentResponse { - agents: Agent[]; - total: number; - page: number; - perPage: number; -} diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts deleted file mode 100644 index dc8fffbc0a86d..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { IKibanaResponse } from '@kbn/core-http-server'; -import { transformError } from '@kbn/securitysolution-es-utils'; -import type { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; -import type { - SavedObjectsFindOptions, - SavedObjectsFindOptionsReference, -} from '@kbn/core-saved-objects-api-server'; -import type { KueryNode } from '@kbn/es-query'; -import { nodeBuilder, nodeTypes } from '@kbn/es-query'; -import type { StartServicesAccessor } from '@kbn/core-lifecycle-server'; -import type { UserProfile } from '@kbn/core-user-profile-common'; -import type { StartPlugins } from '../../../../plugin_contract'; -import { AssociatedFilter } from '../../../../../common/notes/constants'; -import { timelineSavedObjectType } from '../../saved_object_mappings'; -import type { SecuritySolutionPluginRouter } from '../../../../types'; -import { MAX_UNASSOCIATED_NOTES, NOTE_URL } from '../../../../../common/constants'; - -import { buildSiemResponse } from '../../../detection_engine/routes/utils'; -import { buildFrameworkRequest } from '../../utils/common'; -import { getAllSavedNote } from '../../saved_object/notes'; -import { noteSavedObjectType } from '../../saved_object_mappings/notes'; -import { GetNotesRequestQuery, type GetNotesResponse } from '../../../../../common/api/timeline'; - -/* eslint-disable complexity */ -export const getNotesRoute = ( - router: SecuritySolutionPluginRouter, - startServices: StartServicesAccessor -) => { - router.versioned - .get({ - path: NOTE_URL, - security: { - authz: { - requiredPrivileges: ['securitySolution'], - }, - }, - access: 'public', - }) - .addVersion( - { - validate: { - request: { query: buildRouteValidationWithZod(GetNotesRequestQuery) }, - }, - version: '2023-10-31', - }, - async (context, request, response): Promise> => { - try { - const queryParams = request.query; - const frameworkRequest = await buildFrameworkRequest(context, request); - const { - uiSettings: { client: uiSettingsClient }, - } = await frameworkRequest.context.core; - const maxUnassociatedNotes = await uiSettingsClient.get(MAX_UNASSOCIATED_NOTES); - - // if documentIds is provided, we will search for all the notes associated with the documentIds - const documentIds = queryParams.documentIds ?? null; - if (documentIds != null) { - // search for multiple document ids (like retrieving all the notes for all the alerts within a table) - if (Array.isArray(documentIds)) { - const options: SavedObjectsFindOptions = { - type: noteSavedObjectType, - filter: nodeBuilder.or( - documentIds.map((documentId: string) => - nodeBuilder.is(`${noteSavedObjectType}.attributes.eventId`, documentId) - ) - ), - page: 1, - perPage: maxUnassociatedNotes, - }; - const res = await getAllSavedNote(frameworkRequest, options); - return response.ok({ body: res }); - } - - // searching for all the notes associated with a specific document id - const options: SavedObjectsFindOptions = { - type: noteSavedObjectType, - filter: nodeBuilder.is(`${noteSavedObjectType}.attributes.eventId`, documentIds), - page: 1, - perPage: maxUnassociatedNotes, - }; - const res = await getAllSavedNote(frameworkRequest, options); - return response.ok({ body: res }); - } - - // if savedObjectIds is provided, we will search for all the notes associated with the savedObjectIds - const savedObjectIds = queryParams.savedObjectIds ?? null; - if (savedObjectIds != null) { - // search for multiple saved object ids - if (Array.isArray(savedObjectIds)) { - const options: SavedObjectsFindOptions = { - type: noteSavedObjectType, - hasReference: savedObjectIds.map((savedObjectId: string) => ({ - type: timelineSavedObjectType, - id: savedObjectId, - })), - page: 1, - perPage: maxUnassociatedNotes, - }; - const res = await getAllSavedNote(frameworkRequest, options); - return response.ok({ body: res }); - } - - // searching for all the notes associated with a specific saved object id - const options: SavedObjectsFindOptions = { - type: noteSavedObjectType, - hasReference: { - type: timelineSavedObjectType, - id: savedObjectIds, - }, - perPage: maxUnassociatedNotes, - }; - const res = await getAllSavedNote(frameworkRequest, options); - return response.ok({ body: res }); - } - - // retrieving all the notes following the query parameters - const perPage = queryParams?.perPage ? parseInt(queryParams.perPage, 10) : 10; - const page = queryParams?.page ? parseInt(queryParams.page, 10) : 1; - const search = queryParams?.search ?? undefined; - const sortField = queryParams?.sortField ?? undefined; - const sortOrder = (queryParams?.sortOrder as SortOrder) ?? undefined; - const filter = queryParams?.filter; - const options: SavedObjectsFindOptions = { - type: noteSavedObjectType, - perPage, - page, - search, - sortField, - sortOrder, - filter, - }; - - // we need to combine the associatedFilter with the filter query - // we have to type case here because the filter is a string (from the schema) and that cannot be changed as it would be a breaking change - const filterAsKueryNode: KueryNode = (filter || '') as unknown as KueryNode; - const filterKueryNodeArray = [filterAsKueryNode]; - - // retrieve all the notes created by a specific user - // the createdByFilter value is the uuid of the user - const createdByFilter = queryParams?.createdByFilter; // now uuid - if (createdByFilter) { - // because the notes createdBy property can be either full_name, email or username - // see pickSaveNote (https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts#L302) - // which uses the getUserDisplayName (https://github.com/elastic/kibana/blob/main/packages/kbn-user-profile-components/src/user_profile.ts#L138) - const [_, { security }] = await startServices(); - const users: UserProfile[] = await security.userProfiles.bulkGet({ - uids: new Set([createdByFilter]), - }); - // once we retrieve the user by the uuid we can search all the notes that have the createdBy property with full_name, email or username values - if (users && users.length > 0) { - const { - user: { email, full_name: fullName, username: userName }, - } = users[0]; - const createdByNodeArray = []; - if (fullName) { - createdByNodeArray.push( - nodeBuilder.is(`${noteSavedObjectType}.attributes.createdBy`, fullName) - ); - } - if (userName) { - createdByNodeArray.push( - nodeBuilder.is(`${noteSavedObjectType}.attributes.createdBy`, userName) - ); - } - if (email) { - createdByNodeArray.push( - nodeBuilder.is(`${noteSavedObjectType}.attributes.createdBy`, email) - ); - } - filterKueryNodeArray.push(nodeBuilder.or(createdByNodeArray)); - } else { - throw new Error(`User with uid ${createdByFilter} not found`); - } - } - - const associatedFilter = queryParams?.associatedFilter; - if (associatedFilter) { - // select documents that have or don't have a reference to an empty value - // used in combination with hasReference (not associated with a timeline) or hasNoReference (associated with a timeline) - const referenceToATimeline: SavedObjectsFindOptionsReference = { - type: timelineSavedObjectType, - id: '', - }; - - // select documents that don't have a value in the eventId field (not associated with a document) - const emptyDocumentIdFilter: KueryNode = nodeBuilder.is( - `${noteSavedObjectType}.attributes.eventId`, - '' - ); - - switch (associatedFilter) { - case AssociatedFilter.documentOnly: - // select documents that have a reference to an empty saved object id (not associated with a timeline) - // and have a value in the eventId field (associated with a document) - options.hasReference = referenceToATimeline; - filterKueryNodeArray.push( - nodeTypes.function.buildNode('not', emptyDocumentIdFilter) - ); - break; - case AssociatedFilter.savedObjectOnly: - // select documents that don't have a reference to an empty saved object id (associated with a timeline) - // and don't have a value in the eventId field (not associated with a document) - options.hasNoReference = referenceToATimeline; - filterKueryNodeArray.push(emptyDocumentIdFilter); - break; - case AssociatedFilter.documentAndSavedObject: - // select documents that don't have a reference to an empty saved object id (associated with a timeline) - // and have a value in the eventId field (associated with a document) - options.hasNoReference = referenceToATimeline; - filterKueryNodeArray.push( - nodeTypes.function.buildNode('not', emptyDocumentIdFilter) - ); - break; - case AssociatedFilter.orphan: - // select documents that have a reference to an empty saved object id (not associated with a timeline) - // and don't have a value in the eventId field (not associated with a document) - options.hasReference = referenceToATimeline; - // TODO we might want to also check for the existence of the eventId field, on top of getting eventId having empty values - filterKueryNodeArray.push(emptyDocumentIdFilter); - break; - } - } - - // combine all filters - options.filter = nodeBuilder.and(filterKueryNodeArray); - - const res = await getAllSavedNote(frameworkRequest, options); - return response.ok({ body: res }); - } catch (err) { - const error = transformError(err); - const siemResponse = buildSiemResponse(response); - - return siemResponse.error({ - body: error.message, - statusCode: error.statusCode, - }); - } - } - ); -}; diff --git a/x-pack/plugins/security_solution/server/lists_integration/jest.config.js b/x-pack/plugins/security_solution/server/lists_integration/jest.config.js deleted file mode 100644 index f2b4a98984bbd..0000000000000 --- a/x-pack/plugins/security_solution/server/lists_integration/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['/x-pack/plugins/security_solution/server/lists_integration'], - coverageDirectory: - '/target/kibana-coverage/jest/x-pack/plugins/security_solution/server/lists_integration', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '/x-pack/plugins/security_solution/server/lists_integration/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts deleted file mode 100644 index 28666df8c42bf..0000000000000 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ /dev/null @@ -1,752 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { Observable } from 'rxjs'; -import { QUERY_RULE_TYPE_ID, SAVED_QUERY_RULE_TYPE_ID } from '@kbn/securitysolution-rules'; -import type { Logger } from '@kbn/core/server'; -import { SavedObjectsClient } from '@kbn/core/server'; -import type { UsageCounter } from '@kbn/usage-collection-plugin/server'; -import { ECS_COMPONENT_TEMPLATE_NAME } from '@kbn/alerting-plugin/server'; -import { mappingFromFieldMap } from '@kbn/alerting-plugin/common'; -import type { IRuleDataClient } from '@kbn/rule-registry-plugin/server'; -import { Dataset } from '@kbn/rule-registry-plugin/server'; -import type { ListPluginSetup } from '@kbn/lists-plugin/server'; -import type { ILicense } from '@kbn/licensing-plugin/server'; -import type { NewPackagePolicy, UpdatePackagePolicy } from '@kbn/fleet-plugin/common'; -import { FLEET_ENDPOINT_PACKAGE } from '@kbn/fleet-plugin/common'; - -import { ensureIndicesExistsForPolicies } from './endpoint/migrations/ensure_indices_exists_for_policies'; -import { CompleteExternalResponseActionsTask } from './endpoint/lib/response_actions'; -import { registerAgentRoutes } from './endpoint/routes/agent'; -import { endpointPackagePoliciesStatsSearchStrategyProvider } from './search_strategy/endpoint_package_policies_stats'; -import { turnOffPolicyProtectionsIfNotSupported } from './endpoint/migrations/turn_off_policy_protections'; -import { endpointSearchStrategyProvider } from './search_strategy/endpoint'; -import { getScheduleNotificationResponseActionsService } from './lib/detection_engine/rule_response_actions/schedule_notification_response_actions'; -import { siemGuideId, getSiemGuideConfig } from '../common/guided_onboarding/siem_guide_config'; -import { - createEqlAlertType, - createEsqlAlertType, - createIndicatorMatchAlertType, - createMlAlertType, - createNewTermsAlertType, - createQueryAlertType, - createThresholdAlertType, -} from './lib/detection_engine/rule_types'; -import { initRoutes } from './routes'; -import { registerLimitedConcurrencyRoutes } from './routes/limited_concurrency'; -import { ManifestTask } from './endpoint/lib/artifacts'; -import { CheckMetadataTransformsTask } from './endpoint/lib/metadata'; -import { initSavedObjects } from './saved_objects'; -import { AppClientFactory } from './client'; -import type { ConfigType } from './config'; -import { createConfig } from './config'; -import { initUiSettings } from './ui_settings'; -import { - APP_ID, - APP_UI_ID, - CASE_ATTACHMENT_ENDPOINT_TYPE_ID, - DEFAULT_ALERTS_INDEX, - SERVER_APP_ID, -} from '../common/constants'; -import { registerEndpointRoutes } from './endpoint/routes/metadata'; -import { registerPolicyRoutes } from './endpoint/routes/policy'; -import { registerActionRoutes } from './endpoint/routes/actions'; -import { registerEndpointSuggestionsRoutes } from './endpoint/routes/suggestions'; -import { - EndpointArtifactClient, - ManifestManager, - securityWorkflowInsightsService, -} from './endpoint/services'; -import { EndpointAppContextService } from './endpoint/endpoint_app_context_services'; -import type { EndpointAppContext } from './endpoint/types'; -import { initUsageCollectors } from './usage'; -import type { SecuritySolutionRequestHandlerContext } from './types'; -import { securitySolutionSearchStrategyProvider } from './search_strategy/security_solution'; -import type { ITelemetryEventsSender } from './lib/telemetry/sender'; -import { type IAsyncTelemetryEventsSender } from './lib/telemetry/async_sender.types'; -import { TelemetryEventsSender } from './lib/telemetry/sender'; -import { - DEFAULT_QUEUE_CONFIG, - DEFAULT_RETRY_CONFIG, - AsyncTelemetryEventsSender, -} from './lib/telemetry/async_sender'; -import type { ITelemetryReceiver } from './lib/telemetry/receiver'; -import { TelemetryReceiver } from './lib/telemetry/receiver'; -import { licenseService } from './lib/license'; -import { PolicyWatcher } from './endpoint/lib/policy/license_watch'; -import previewPolicy from './lib/detection_engine/routes/index/preview_policy.json'; -import type { IRuleMonitoringService } from './lib/detection_engine/rule_monitoring'; -import { createRuleMonitoringService } from './lib/detection_engine/rule_monitoring'; -import type { CreateRuleOptions } from './lib/detection_engine/rule_types/types'; -// eslint-disable-next-line no-restricted-imports -import { - isLegacyNotificationRuleExecutor, - legacyRulesNotificationRuleType, -} from './lib/detection_engine/rule_actions_legacy'; -import { - createSecurityRuleTypeWrapper, - securityRuleTypeFieldMap, -} from './lib/detection_engine/rule_types/create_security_rule_type_wrapper'; - -import { RequestContextFactory } from './request_context_factory'; - -import type { - ISecuritySolutionPlugin, - PluginInitializerContext, - SecuritySolutionPluginCoreSetupDependencies, - SecuritySolutionPluginCoreStartDependencies, - SecuritySolutionPluginSetup, - SecuritySolutionPluginSetupDependencies, - SecuritySolutionPluginStart, - SecuritySolutionPluginStartDependencies, -} from './plugin_contract'; -import { featureUsageService } from './endpoint/services/feature_usage'; -import { setIsElasticCloudDeployment } from './lib/telemetry/helpers'; -import { artifactService } from './lib/telemetry/artifact'; -import { events } from './lib/telemetry/event_based/events'; -import { endpointFieldsProvider } from './search_strategy/endpoint_fields'; -import { - ENDPOINT_FIELDS_SEARCH_STRATEGY, - ENDPOINT_PACKAGE_POLICIES_STATS_STRATEGY, - ENDPOINT_SEARCH_STRATEGY, -} from '../common/endpoint/constants'; - -import { ProductFeaturesService } from './lib/product_features_service/product_features_service'; -import { registerRiskScoringTask } from './lib/entity_analytics/risk_score/tasks/risk_scoring_task'; -import { registerEntityStoreFieldRetentionEnrichTask } from './lib/entity_analytics/entity_store/task'; -import { registerProtectionUpdatesNoteRoutes } from './endpoint/routes/protection_updates_note'; -import { - latestRiskScoreIndexPattern, - allRiskScoreIndexPattern, -} from '../common/entity_analytics/risk_engine'; -import { isEndpointPackageV2 } from '../common/endpoint/utils/package_v2'; -import { assistantTools } from './assistant/tools'; -import { turnOffAgentPolicyFeatures } from './endpoint/migrations/turn_off_agent_policy_features'; -import { getCriblPackagePolicyPostCreateOrUpdateCallback } from './security_integrations'; -import { scheduleEntityAnalyticsMigration } from './lib/entity_analytics/migrations'; -import { SiemMigrationsService } from './lib/siem_migrations/siem_migrations_service'; - -export type { SetupPlugins, StartPlugins, PluginSetup, PluginStart } from './plugin_contract'; - -export class Plugin implements ISecuritySolutionPlugin { - private readonly pluginContext: PluginInitializerContext; - private readonly config: ConfigType; - private readonly logger: Logger; - private readonly appClientFactory: AppClientFactory; - private readonly productFeaturesService: ProductFeaturesService; - - private readonly ruleMonitoringService: IRuleMonitoringService; - private readonly endpointAppContextService = new EndpointAppContextService(); - private readonly siemMigrationsService: SiemMigrationsService; - private readonly telemetryReceiver: ITelemetryReceiver; - private readonly telemetryEventsSender: ITelemetryEventsSender; - private readonly asyncTelemetryEventsSender: IAsyncTelemetryEventsSender; - - private lists: ListPluginSetup | undefined; // TODO: can we create ListPluginStart? - private licensing$!: Observable; - private policyWatcher?: PolicyWatcher; - - private manifestTask: ManifestTask | undefined; - private completeExternalResponseActionsTask: CompleteExternalResponseActionsTask; - private checkMetadataTransformsTask: CheckMetadataTransformsTask | undefined; - private telemetryUsageCounter?: UsageCounter; - private endpointContext: EndpointAppContext; - - constructor(context: PluginInitializerContext) { - const serverConfig = createConfig(context); - - this.pluginContext = context; - this.config = serverConfig; - this.logger = context.logger.get(); - this.appClientFactory = new AppClientFactory(); - this.productFeaturesService = new ProductFeaturesService( - this.logger, - this.config.experimentalFeatures - ); - this.siemMigrationsService = new SiemMigrationsService( - this.config, - this.pluginContext.logger, - this.pluginContext.env.packageInfo.version - ); - - this.ruleMonitoringService = createRuleMonitoringService(this.config, this.logger); - this.telemetryEventsSender = new TelemetryEventsSender(this.logger); - this.asyncTelemetryEventsSender = new AsyncTelemetryEventsSender(this.logger); - this.telemetryReceiver = new TelemetryReceiver(this.logger); - - this.logger.debug('plugin initialized'); - this.endpointContext = { - logFactory: this.pluginContext.logger, - service: this.endpointAppContextService, - config: (): Promise => Promise.resolve(this.config), - get serverConfig() { - return serverConfig; - }, - experimentalFeatures: this.config.experimentalFeatures, - }; - this.completeExternalResponseActionsTask = new CompleteExternalResponseActionsTask({ - endpointAppContext: this.endpointContext, - }); - } - - public setup( - core: SecuritySolutionPluginCoreSetupDependencies, - plugins: SecuritySolutionPluginSetupDependencies - ): SecuritySolutionPluginSetup { - this.logger.debug('plugin setup'); - - const { appClientFactory, productFeaturesService, pluginContext, config, logger } = this; - const experimentalFeatures = config.experimentalFeatures; - - initSavedObjects(core.savedObjects); - initUiSettings(core.uiSettings, experimentalFeatures, config.enableUiSettingsValidations); - productFeaturesService.init(plugins.features); - - events.forEach((eventConfig) => { - core.analytics.registerEventType(eventConfig); - }); - - this.ruleMonitoringService.setup(core, plugins); - - if (experimentalFeatures.riskScoringPersistence) { - registerRiskScoringTask({ - getStartServices: core.getStartServices, - kibanaVersion: pluginContext.env.packageInfo.version, - logger: this.logger, - auditLogger: plugins.security?.audit.withoutRequest, - taskManager: plugins.taskManager, - telemetry: core.analytics, - entityAnalyticsConfig: config.entityAnalytics, - }); - } - - scheduleEntityAnalyticsMigration({ - getStartServices: core.getStartServices, - taskManager: plugins.taskManager, - logger: this.logger, - auditLogger: plugins.security?.audit.withoutRequest, - }).catch((err) => { - logger.error(`Error scheduling entity analytics migration: ${err}`); - }); - - if (!experimentalFeatures.entityStoreDisabled) { - registerEntityStoreFieldRetentionEnrichTask({ - getStartServices: core.getStartServices, - logger: this.logger, - telemetry: core.analytics, - taskManager: plugins.taskManager, - }); - } - - const requestContextFactory = new RequestContextFactory({ - config, - logger, - core, - plugins, - endpointAppContextService: this.endpointAppContextService, - ruleMonitoringService: this.ruleMonitoringService, - siemMigrationsService: this.siemMigrationsService, - kibanaVersion: pluginContext.env.packageInfo.version, - kibanaBranch: pluginContext.env.packageInfo.branch, - buildFlavor: pluginContext.env.packageInfo.buildFlavor, - }); - - productFeaturesService.registerApiAccessControl(core.http); - const router = core.http.createRouter(); - core.http.registerRouteHandlerContext( - APP_ID, - (context, request) => requestContextFactory.create(context, request) - ); - - this.endpointAppContextService.setup({ - securitySolutionRequestContextFactory: requestContextFactory, - cloud: plugins.cloud, - loggerFactory: this.pluginContext.logger, - telemetry: core.analytics, - httpServiceSetup: core.http, - }); - - initUsageCollectors({ - core, - eventLogIndex: plugins.eventLog.getIndexPattern(), - signalsIndex: DEFAULT_ALERTS_INDEX, - ml: plugins.ml, - usageCollection: plugins.usageCollection, - logger, - riskEngineIndexPatterns: { - all: allRiskScoreIndexPattern, - latest: latestRiskScoreIndexPattern, - }, - }); - - this.telemetryUsageCounter = plugins.usageCollection?.createUsageCounter(APP_ID); - plugins.cases.attachmentFramework.registerExternalReference({ - id: CASE_ATTACHMENT_ENDPOINT_TYPE_ID, - }); - - const { ruleDataService } = plugins.ruleRegistry; - let ruleDataClient: IRuleDataClient | null = null; - let previewRuleDataClient: IRuleDataClient | null = null; - - // rule options are used both to create and preview rules. - const ruleOptions: CreateRuleOptions = { - experimentalFeatures, - logger: this.logger, - ml: plugins.ml, - eventsTelemetry: this.telemetryEventsSender, - version: pluginContext.env.packageInfo.version, - licensing: plugins.licensing, - scheduleNotificationResponseActionsService: getScheduleNotificationResponseActionsService({ - endpointAppContextService: this.endpointAppContextService, - osqueryCreateActionService: plugins.osquery.createActionService, - }), - }; - - const ruleDataServiceOptions = { - feature: SERVER_APP_ID, - registrationContext: 'security', - dataset: Dataset.alerts, - componentTemplateRefs: [ECS_COMPONENT_TEMPLATE_NAME], - componentTemplates: [ - { - name: 'mappings', - mappings: mappingFromFieldMap(securityRuleTypeFieldMap, false), - }, - ], - secondaryAlias: config.signalsIndex, - }; - - ruleDataClient = ruleDataService.initializeIndex(ruleDataServiceOptions); - const previewIlmPolicy = previewPolicy.policy; - - previewRuleDataClient = ruleDataService.initializeIndex({ - ...ruleDataServiceOptions, - additionalPrefix: '.preview', - ilmPolicy: previewIlmPolicy, - secondaryAlias: undefined, - }); - - const securityRuleTypeOptions = { - lists: plugins.lists, - actions: plugins.actions, - logger: this.logger, - config: this.config, - publicBaseUrl: core.http.basePath.publicBaseUrl, - ruleDataClient, - ruleExecutionLoggerFactory: - this.ruleMonitoringService.createRuleExecutionLogClientForExecutors, - version: pluginContext.env.packageInfo.version, - experimentalFeatures: config.experimentalFeatures, - alerting: plugins.alerting, - analytics: core.analytics, - }; - - const securityRuleTypeWrapper = createSecurityRuleTypeWrapper(securityRuleTypeOptions); - - plugins.alerting.registerType(securityRuleTypeWrapper(createEqlAlertType({ ...ruleOptions }))); - if (!experimentalFeatures.esqlRulesDisabled) { - plugins.alerting.registerType( - securityRuleTypeWrapper(createEsqlAlertType({ ...ruleOptions })) - ); - } - plugins.alerting.registerType( - securityRuleTypeWrapper( - createQueryAlertType({ - ...ruleOptions, - id: SAVED_QUERY_RULE_TYPE_ID, - name: 'Saved Query Rule', - }) - ) - ); - plugins.alerting.registerType( - securityRuleTypeWrapper(createIndicatorMatchAlertType(ruleOptions)) - ); - plugins.alerting.registerType(securityRuleTypeWrapper(createMlAlertType(ruleOptions))); - plugins.alerting.registerType( - securityRuleTypeWrapper( - createQueryAlertType({ - ...ruleOptions, - id: QUERY_RULE_TYPE_ID, - name: 'Custom Query Rule', - }) - ) - ); - plugins.alerting.registerType(securityRuleTypeWrapper(createThresholdAlertType(ruleOptions))); - plugins.alerting.registerType( - securityRuleTypeWrapper(createNewTermsAlertType({ ...ruleOptions })) - ); - - // TODO We need to get the endpoint routes inside of initRoutes - initRoutes( - router, - config, - plugins.encryptedSavedObjects?.canEncrypt === true, - plugins.security, - this.telemetryEventsSender, - plugins.ml, - ruleDataService, - logger, - ruleDataClient, - ruleOptions, - core.getStartServices, - securityRuleTypeOptions, - previewRuleDataClient, - this.telemetryReceiver, - this.pluginContext.env.packageInfo.buildFlavor === 'serverless', - core.docLinks, - this.endpointContext - ); - - registerEndpointRoutes(router, this.endpointContext); - registerEndpointSuggestionsRoutes( - router, - plugins.unifiedSearch.autocomplete.getInitializerContextConfig().create(), - this.endpointContext - ); - registerLimitedConcurrencyRoutes(core); - registerPolicyRoutes(router, this.endpointContext); - registerProtectionUpdatesNoteRoutes(router, this.endpointContext); - registerActionRoutes( - router, - this.endpointContext, - plugins.encryptedSavedObjects?.canEncrypt === true - ); - registerAgentRoutes(router, this.endpointContext); - - if (plugins.alerting != null) { - const ruleNotificationType = legacyRulesNotificationRuleType({ logger }); - - if (isLegacyNotificationRuleExecutor(ruleNotificationType)) { - plugins.alerting.registerType(ruleNotificationType); - } - } - - const exceptionListsSetupEnabled = () => { - return plugins.taskManager && plugins.lists; - }; - - if (exceptionListsSetupEnabled()) { - this.lists = plugins.lists; - this.manifestTask = new ManifestTask({ - endpointAppContext: this.endpointContext, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - taskManager: plugins.taskManager!, - }); - } - - if (plugins.taskManager) { - this.completeExternalResponseActionsTask.setup({ taskManager: plugins.taskManager }); - } - - core - .getStartServices() - .then(async ([coreStart, depsStart]) => { - appClientFactory.setup({ - getSpaceId: depsStart.spaces?.spacesService?.getSpaceId, - config, - kibanaVersion: pluginContext.env.packageInfo.version, - kibanaBranch: pluginContext.env.packageInfo.branch, - buildFlavor: pluginContext.env.packageInfo.buildFlavor, - }); - - const endpointFieldsStrategy = endpointFieldsProvider( - this.endpointAppContextService, - depsStart.data.indexPatterns - ); - plugins.data.search.registerSearchStrategy( - ENDPOINT_FIELDS_SEARCH_STRATEGY, - endpointFieldsStrategy - ); - - const endpointPackagePoliciesStatsStrategy = - endpointPackagePoliciesStatsSearchStrategyProvider(this.endpointAppContextService); - plugins.data.search.registerSearchStrategy( - ENDPOINT_PACKAGE_POLICIES_STATS_STRATEGY, - endpointPackagePoliciesStatsStrategy - ); - - const securitySolutionSearchStrategy = securitySolutionSearchStrategyProvider( - depsStart.data, - this.endpointContext, - depsStart.spaces?.spacesService?.getSpaceId, - ruleDataClient - ); - - plugins.data.search.registerSearchStrategy( - 'securitySolutionSearchStrategy', - securitySolutionSearchStrategy - ); - const endpointSearchStrategy = endpointSearchStrategyProvider( - depsStart.data, - this.endpointContext - ); - - plugins.data.search.registerSearchStrategy( - ENDPOINT_SEARCH_STRATEGY, - endpointSearchStrategy - ); - - /** - * Register a config for the security guide - */ - plugins.guidedOnboarding?.registerGuideConfig(siemGuideId, getSiemGuideConfig()); - - this.siemMigrationsService.setup({ esClusterClient: coreStart.elasticsearch.client }); - }) - .catch(() => {}); // it shouldn't reject, but just in case - - setIsElasticCloudDeployment(plugins.cloud.isCloudEnabled ?? false); - - this.asyncTelemetryEventsSender.setup( - DEFAULT_RETRY_CONFIG, - DEFAULT_QUEUE_CONFIG, - this.telemetryReceiver, - plugins.telemetry, - this.telemetryUsageCounter - ); - - this.telemetryEventsSender.setup( - this.telemetryReceiver, - plugins.telemetry, - plugins.taskManager, - this.telemetryUsageCounter, - this.asyncTelemetryEventsSender - ); - - this.checkMetadataTransformsTask = new CheckMetadataTransformsTask({ - endpointAppContext: this.endpointContext, - core, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - taskManager: plugins.taskManager!, - }); - - featureUsageService.setup(plugins.licensing); - - securityWorkflowInsightsService.setup({ - kibanaVersion: pluginContext.env.packageInfo.version, - logger: this.logger, - isFeatureEnabled: config.experimentalFeatures.defendInsights, - }); - - return { - setProductFeaturesConfigurator: - productFeaturesService.setProductFeaturesConfigurator.bind(productFeaturesService), - experimentalFeatures: { ...config.experimentalFeatures }, - }; - } - - public start( - core: SecuritySolutionPluginCoreStartDependencies, - plugins: SecuritySolutionPluginStartDependencies - ): SecuritySolutionPluginStart { - const { config, logger, productFeaturesService } = this; - - this.ruleMonitoringService.start(core, plugins); - - const savedObjectsClient = new SavedObjectsClient(core.savedObjects.createInternalRepository()); - const registerIngestCallback = plugins.fleet?.registerExternalCallback; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const exceptionListClient = this.lists!.getExceptionListClient( - savedObjectsClient, - 'kibana', - // execution of Lists plugin server extension points callbacks should be turned off - // here because most of the uses of this client will be in contexts where some endpoint - // validations (specifically those around authz) can not be done (due ot the lack of a `KibanaRequest` - // from where authz can be derived) - false - ); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const fleetStartServices = plugins.fleet!; - - const { packageService } = fleetStartServices; - - this.licensing$ = plugins.licensing.license$; - - // Assistant Tool and Feature Registration - plugins.elasticAssistant.registerTools(APP_UI_ID, assistantTools); - const features = { - assistantModelEvaluation: config.experimentalFeatures.assistantModelEvaluation, - }; - plugins.elasticAssistant.registerFeatures(APP_UI_ID, features); - plugins.elasticAssistant.registerFeatures('management', features); - - const manifestManager = new ManifestManager({ - savedObjectsClient, - exceptionListClient, - artifactClient: new EndpointArtifactClient( - fleetStartServices.createArtifactsClient('endpoint') - ), - packagePolicyService: fleetStartServices.packagePolicyService, - logger: this.pluginContext.logger.get('ManifestManager'), - experimentalFeatures: config.experimentalFeatures, - packagerTaskPackagePolicyUpdateBatchSize: config.packagerTaskPackagePolicyUpdateBatchSize, - esClient: core.elasticsearch.client.asInternalUser, - productFeaturesService, - }); - - this.endpointAppContextService.start({ - fleetStartServices, - security: core.security, - alerting: plugins.alerting, - config, - cases: plugins.cases, - manifestManager, - licenseService, - exceptionListsClient: exceptionListClient, - registerListsServerExtension: this.lists?.registerExtension, - featureUsageService, - experimentalFeatures: config.experimentalFeatures, - esClient: core.elasticsearch.client.asInternalUser, - productFeaturesService, - savedObjectsServiceStart: core.savedObjects, - connectorActions: plugins.actions, - }); - - if (this.lists && plugins.taskManager && plugins.fleet) { - // Exceptions, Artifacts and Manifests start - const taskManager = plugins.taskManager; - - plugins.fleet - .fleetSetupCompleted() - .then(async () => { - logger.info('Dependent plugin setup complete'); - - if (this.manifestTask) { - logger.info('Starting ManifestTask'); - await this.manifestTask.start({ - taskManager, - }); - } else { - logger.error(new Error('User artifacts task not available.')); - } - - const fleetServices = this.endpointAppContextService.getInternalFleetServices(); - - await turnOffPolicyProtectionsIfNotSupported( - core.elasticsearch.client.asInternalUser, - fleetServices, - productFeaturesService, - logger - ); - - await turnOffAgentPolicyFeatures(fleetServices, productFeaturesService, logger); - - // Ensure policies have backing DOT indices (We don't need to `await` this. - // It can run in the background) - ensureIndicesExistsForPolicies(this.endpointAppContextService).catch(() => {}); - }) - .catch(() => {}); - - // License related start - licenseService.start(this.licensing$); - - featureUsageService.start(plugins.licensing); - - this.policyWatcher = new PolicyWatcher( - plugins.fleet.packagePolicyService, - core.savedObjects, - core.elasticsearch, - logger - ); - this.policyWatcher.start(licenseService); - } - - if (plugins.taskManager) { - this.completeExternalResponseActionsTask - .start({ - taskManager: plugins.taskManager, - esClient: core.elasticsearch.client.asInternalUser, - }) - .catch(() => {}); // it shouldn't refuse, but just in case - } - - this.telemetryReceiver - .start( - core, - (type: string) => core.savedObjects.getIndexForType(type), - DEFAULT_ALERTS_INDEX, - this.endpointAppContextService, - exceptionListClient, - packageService - ) - .catch(() => {}); - - artifactService.start(this.telemetryReceiver).catch(() => {}); - - this.asyncTelemetryEventsSender.start(plugins.telemetry); - - this.telemetryEventsSender.start( - plugins.telemetry, - plugins.taskManager, - this.telemetryReceiver - ); - - securityWorkflowInsightsService - .start({ - esClient: core.elasticsearch.client.asInternalUser, - }) - .catch(() => {}); - - const endpointPkgInstallationPromise = this.endpointContext.service - .getInternalFleetServices() - .packages.getInstallation(FLEET_ENDPOINT_PACKAGE); - Promise.all([endpointPkgInstallationPromise, plugins.fleet?.fleetSetupCompleted()]) - .then(async ([endpointPkgInstallation]) => { - if (plugins.taskManager) { - if ( - endpointPkgInstallation?.version && - isEndpointPackageV2(endpointPkgInstallation.version) - ) { - return; - } - - await this.checkMetadataTransformsTask?.start({ taskManager: plugins.taskManager }); - } - }) - .catch(() => {}); // it shouldn't reject, but just in case - - if (registerIngestCallback) { - registerIngestCallback( - 'packagePolicyCreate', - async (packagePolicy: NewPackagePolicy): Promise => { - await getCriblPackagePolicyPostCreateOrUpdateCallback( - core.elasticsearch.client.asInternalUser, - packagePolicy, - this.logger - ); - return packagePolicy; - } - ); - - registerIngestCallback( - 'packagePolicyUpdate', - async (packagePolicy: UpdatePackagePolicy): Promise => { - await getCriblPackagePolicyPostCreateOrUpdateCallback( - core.elasticsearch.client.asInternalUser, - packagePolicy, - this.logger - ); - return packagePolicy; - } - ); - } - - return {}; - } - - public stop() { - this.logger.debug('Stopping plugin'); - this.asyncTelemetryEventsSender.stop().catch(() => {}); - this.telemetryEventsSender.stop(); - this.endpointAppContextService.stop(); - this.policyWatcher?.stop(); - this.completeExternalResponseActionsTask.stop().catch(() => {}); - this.siemMigrationsService.stop(); - securityWorkflowInsightsService.stop(); - licenseService.stop(); - } -} diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts b/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts deleted file mode 100644 index cdea82d680698..0000000000000 --- a/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { from } from 'rxjs'; -import type { - DataViewsServerPluginStart, - ISearchStrategy, - SearchStrategyDependencies, -} from '@kbn/data-plugin/server'; - -import { requestIndexFieldSearch } from '@kbn/timelines-plugin/server/search_strategy/index_fields'; - -import { eventsIndexPattern, METADATA_UNITED_INDEX } from '../../../common/endpoint/constants'; -import type { - BeatFields, - IndexFieldsStrategyRequest, - IndexFieldsStrategyResponse, -} from '../../../common/search_strategy'; -import type { EndpointAppContextService } from '../../endpoint/endpoint_app_context_services'; -import { EndpointAuthorizationError } from '../../endpoint/errors'; -import { parseRequest } from './parse_request'; - -/** - * EndpointFieldProvider mimics indexField provider from timeline plugin: x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts - * but it uses ES internalUser instead to avoid adding extra index privileges for users with event filters permissions. - * It is used to retrieve index patterns for event filters form. - */ -export const endpointFieldsProvider = ( - context: EndpointAppContextService, - indexPatterns: DataViewsServerPluginStart -): ISearchStrategy, IndexFieldsStrategyResponse> => { - // require the fields once we actually need them, rather than ahead of time, and pass - // them to createFieldItem to reduce the amount of work done as much as possible - const beatFields: BeatFields = - // eslint-disable-next-line @typescript-eslint/no-var-requires - require('@kbn/timelines-plugin/server/utils/beat_schema/fields.json').fieldsBeat; - - return { - search: (request, _, deps) => - from(requestEndpointFieldsSearch(context, request, deps, beatFields, indexPatterns)), - }; -}; - -export const requestEndpointFieldsSearch = async ( - context: EndpointAppContextService, - request: IndexFieldsStrategyRequest<'indices'>, - deps: SearchStrategyDependencies, - beatFields: BeatFields, - indexPatterns: DataViewsServerPluginStart -): Promise => { - const parsedRequest = parseRequest(request); - - if ( - parsedRequest.indices.length > 1 || - (parsedRequest.indices[0] !== eventsIndexPattern && - parsedRequest.indices[0] !== METADATA_UNITED_INDEX) - ) { - throw new Error(`Invalid indices request ${request.indices.join(', ')}`); - } - - const { canWriteEventFilters, canReadEndpointList } = await context.getEndpointAuthz( - deps.request - ); - - if ( - (!canWriteEventFilters && parsedRequest.indices[0] === eventsIndexPattern) || - (!canReadEndpointList && parsedRequest.indices[0] === METADATA_UNITED_INDEX) - ) { - throw new EndpointAuthorizationError(); - } - - return requestIndexFieldSearch(parsedRequest, deps, beatFields, indexPatterns, true); -}; diff --git a/x-pack/plugins/security_solution/server/search_strategy/jest.config.js b/x-pack/plugins/security_solution/server/search_strategy/jest.config.js deleted file mode 100644 index 9e17c9c3ae186..0000000000000 --- a/x-pack/plugins/security_solution/server/search_strategy/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['/x-pack/plugins/security_solution/server/search_strategy'], - coverageDirectory: - '/target/kibana-coverage/jest/x-pack/plugins/security_solution/server/search_strategy', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '/x-pack/plugins/security_solution/server/search_strategy/**/*.{ts,tsx}', - ], - moduleNameMapper: require('../__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/server/usage/detections/get_initial_usage.ts b/x-pack/plugins/security_solution/server/usage/detections/get_initial_usage.ts deleted file mode 100644 index 6252b865c0ec9..0000000000000 --- a/x-pack/plugins/security_solution/server/usage/detections/get_initial_usage.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { DetectionMetrics } from './types'; - -import { getInitialMlJobUsage } from './ml_jobs/get_initial_usage'; -import { getInitialEventLogUsage, getInitialRulesUsage } from './rules/get_initial_usage'; - -/** - * Initial detection metrics initialized. - */ -export const getInitialDetectionMetrics = (): DetectionMetrics => ({ - ml_jobs: { - ml_job_usage: getInitialMlJobUsage(), - ml_job_metrics: [], - }, - detection_rules: { - detection_rule_detail: [], - detection_rule_usage: getInitialRulesUsage(), - detection_rule_status: getInitialEventLogUsage(), - }, -}); diff --git a/x-pack/plugins/security_solution/server/usage/detections/get_metrics.ts b/x-pack/plugins/security_solution/server/usage/detections/get_metrics.ts deleted file mode 100644 index 904c80debf5da..0000000000000 --- a/x-pack/plugins/security_solution/server/usage/detections/get_metrics.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { ElasticsearchClient, SavedObjectsClientContract, Logger } from '@kbn/core/server'; -import type { MlPluginSetup } from '@kbn/ml-plugin/server'; -import type { DetectionMetrics } from './types'; - -import { getMlJobMetrics } from './ml_jobs/get_metrics'; -import { getRuleMetrics } from './rules/get_metrics'; -import { getInitialEventLogUsage, getInitialRulesUsage } from './rules/get_initial_usage'; -import { getInitialMlJobUsage } from './ml_jobs/get_initial_usage'; - -export interface GetDetectionsMetricsOptions { - signalsIndex: string; - esClient: ElasticsearchClient; - savedObjectsClient: SavedObjectsClientContract; - logger: Logger; - mlClient: MlPluginSetup | undefined; - eventLogIndex: string; -} - -export const getDetectionsMetrics = async ({ - eventLogIndex, - signalsIndex, - esClient, - savedObjectsClient, - logger, - mlClient, -}: GetDetectionsMetricsOptions): Promise => { - const [mlJobMetrics, detectionRuleMetrics] = await Promise.allSettled([ - getMlJobMetrics({ mlClient, savedObjectsClient, logger }), - getRuleMetrics({ signalsIndex, eventLogIndex, esClient, savedObjectsClient, logger }), - ]); - - return { - ml_jobs: - mlJobMetrics.status === 'fulfilled' - ? mlJobMetrics.value - : { ml_job_metrics: [], ml_job_usage: getInitialMlJobUsage() }, - detection_rules: - detectionRuleMetrics.status === 'fulfilled' - ? detectionRuleMetrics.value - : { - detection_rule_detail: [], - detection_rule_usage: getInitialRulesUsage(), - detection_rule_status: getInitialEventLogUsage(), - }, - }; -}; diff --git a/x-pack/plugins/security_solution/server/usage/detections/types.ts b/x-pack/plugins/security_solution/server/usage/detections/types.ts deleted file mode 100644 index 2895e5c6f8b9a..0000000000000 --- a/x-pack/plugins/security_solution/server/usage/detections/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { MlJobUsageMetric } from './ml_jobs/types'; -import type { RuleAdoption } from './rules/types'; - -export interface DetectionMetrics { - ml_jobs: MlJobUsageMetric; - detection_rules: RuleAdoption; -} diff --git a/x-pack/plugins/security_solution/server/usage/jest.config.js b/x-pack/plugins/security_solution/server/usage/jest.config.js deleted file mode 100644 index 4041e8f66d7c8..0000000000000 --- a/x-pack/plugins/security_solution/server/usage/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['/x-pack/plugins/security_solution/server/usage'], - coverageDirectory: - '/target/kibana-coverage/jest/x-pack/plugins/security_solution/server/usage', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['/x-pack/plugins/security_solution/server/usage/**/*.{ts,tsx}'], - moduleNameMapper: require('../__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/server/usage/types.ts b/x-pack/plugins/security_solution/server/usage/types.ts deleted file mode 100644 index 1df8f2d1388a0..0000000000000 --- a/x-pack/plugins/security_solution/server/usage/types.ts +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { CoreSetup, Logger } from '@kbn/core/server'; -import type { SanitizedRule } from '@kbn/alerting-plugin/common'; -import type { RuleParams } from '../lib/detection_engine/rule_schema'; -import type { SetupPlugins } from '../plugin'; - -export interface DashboardUsage { - created_at: string | undefined; - dashboard_id: string; - error_message?: string; - error_status_code?: number; -} -export interface DashboardMetrics { - dashboard_tag?: { - created_at: string | undefined; - linked_dashboards_count: number; - }; - dashboards?: DashboardUsage[]; -} - -export type CollectorDependencies = { - signalsIndex: string; - core: CoreSetup; - logger: Logger; - eventLogIndex: string; - riskEngineIndexPatterns: { - all: string; - latest: string; - }; -} & Pick; - -export interface AlertBucket { - key: { - detectionAlerts: string; - }; - doc_count: number; -} - -export interface AlertAggs { - buckets?: { - after_key?: { - detectionAlerts: string; - }; - buckets: AlertBucket[]; - }; -} - -/** - * This type is _very_ similar to "RawRule". However, that type is not exposed in a non-restricted-path - * and it does not support generics well. Trying to use "RawRule" directly with TypeScript Omit does not work well. - * If at some point the rules client API supports cross spaces for gathering metrics, then we should remove our use - * of SavedObject types and this type below and instead natively use the rules client. - * - * NOTE: There are additional types not expressed below such as "apiKey" or there could be other slight differences - * but this will the easiest way to keep these in sync and I see other code that is similar to this pattern. - * {@see RawRule} - */ -export type RuleSearchResult = Omit< - SanitizedRule, - 'createdBy' | 'updatedBy' | 'createdAt' | 'updatedAt' -> & { - createdBy: string | null; - updatedBy: string | null; - createdAt: string; - updatedAt: string; -}; - -export type RuleStatus = 'running' | 'succeeded' | 'partial failure' | 'failed'; - -export interface CountCardinality { - doc_count: number; - cardinality: { - value: number | null; - }; -} - -export interface Categories { - buckets: Array<{ doc_count: number; key: string }>; -} -export interface CountCardinalityWithCategories extends CountCardinality { - categories: Categories; -} - -export interface SingleEVentLogTypeStatusAgg { - doc_count: number; - 'siem.queryRule': CountCardinality; - 'siem.savedQueryRule': CountCardinality; - 'siem.eqlRule': CountCardinality; - 'siem.thresholdRule': CountCardinality; - 'siem.mlRule': CountCardinality; - 'siem.indicatorRule': CountCardinality; -} - -export interface SingleEVentLogTypeStatusAggWithCategories { - doc_count: number; - 'siem.queryRule': CountCardinalityWithCategories; - 'siem.savedQueryRule': CountCardinalityWithCategories; - 'siem.eqlRule': CountCardinalityWithCategories; - 'siem.thresholdRule': CountCardinalityWithCategories; - 'siem.mlRule': CountCardinalityWithCategories; - 'siem.indicatorRule': CountCardinalityWithCategories; -} - -export interface SingleExecutionMetricAgg { - doc_count: number; - maxTotalIndexDuration: { - value: number | null; - }; - avgTotalIndexDuration: { - value: number | null; - }; - minTotalIndexDuration: { - value: number | null; - }; - gapCount: { - value: number | null; - }; - maxGapDuration: { - value: number | null; - }; - avgGapDuration: { - value: number | null; - }; - minGapDuration: { - value: number | null; - }; - maxTotalSearchDuration: { - value: number | null; - }; - avgTotalSearchDuration: { - value: number | null; - }; - minTotalSearchDuration: { - value: number | null; - }; - maxTotalEnrichmentDuration: { - value: number | null; - }; - avgTotalEnrichmentDuration: { - value: number | null; - }; - minTotalEnrichmentDuration: { - value: number | null; - }; -} - -export interface EventLogTypeStatusAggs { - eventActionStatusChange: { - doc_count: number; - 'partial failure': SingleEVentLogTypeStatusAggWithCategories; - failed: SingleEVentLogTypeStatusAggWithCategories; - succeeded: SingleEVentLogTypeStatusAgg; - }; - eventActionExecutionMetrics: { - doc_count: number; - 'siem.queryRule': SingleExecutionMetricAgg; - 'siem.savedQueryRule': SingleExecutionMetricAgg; - 'siem.eqlRule': SingleExecutionMetricAgg; - 'siem.thresholdRule': SingleExecutionMetricAgg; - 'siem.mlRule': SingleExecutionMetricAgg; - 'siem.indicatorRule': SingleExecutionMetricAgg; - }; -} diff --git a/x-pack/plugins/security_solution/server/utils/jest.config.js b/x-pack/plugins/security_solution/server/utils/jest.config.js deleted file mode 100644 index 2e1817b0b4071..0000000000000 --- a/x-pack/plugins/security_solution/server/utils/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['/x-pack/plugins/security_solution/server/utils'], - coverageDirectory: - '/target/kibana-coverage/jest/x-pack/plugins/security_solution/server/utils', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['/x-pack/plugins/security_solution/server/utils/**/*.{ts,tsx}'], - moduleNameMapper: require('../__mocks__/module_name_map'), -}; diff --git a/x-pack/plugins/security_solution/tsconfig.json b/x-pack/plugins/security_solution/tsconfig.json deleted file mode 100644 index 7767fffe69824..0000000000000 --- a/x-pack/plugins/security_solution/tsconfig.json +++ /dev/null @@ -1,239 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "scripts/**/*", - // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 - "common/**/*.json", - "server/**/*.json", - "scripts/**/*.json", - "public/**/*.json", - "../../../typings/**/*" - ], - "exclude": [ - "target/**/*", - "**/cypress/**", - "public/management/cypress.config.ts" - ], - "kbn_references": [ - "@kbn/core", - { - "path": "../../../src/setup_node_env/tsconfig.json" - }, - "@kbn/data-plugin", - "@kbn/embeddable-plugin", - "@kbn/files-plugin", - "@kbn/home-plugin", - "@kbn/inspector-plugin", - "@kbn/ui-actions-plugin", - "@kbn/newsfeed-plugin", - "@kbn/usage-collection-plugin", - "@kbn/telemetry-plugin", - "@kbn/data-view-field-editor-plugin", - "@kbn/unified-search-plugin", - "@kbn/actions-plugin", - "@kbn/alerting-plugin", - "@kbn/cases-plugin", - "@kbn/cloud-security-posture-plugin", - "@kbn/encrypted-saved-objects-plugin", - "@kbn/features-plugin", - "@kbn/fleet-plugin", - "@kbn/kubernetes-security-plugin", - "@kbn/licensing-plugin", - "@kbn/lists-plugin", - "@kbn/maps-plugin", - "@kbn/ml-plugin", - "@kbn/osquery-plugin", - "@kbn/session-view-plugin", - "@kbn/security-plugin", - "@kbn/spaces-plugin", - "@kbn/threat-intelligence-plugin", - "@kbn/timelines-plugin", - "@kbn/es-query", - "@kbn/utility-types", - "@kbn/securitysolution-list-utils", - "@kbn/securitysolution-io-ts-list-types", - "@kbn/securitysolution-io-ts-alerting-types", - "@kbn/test", - "@kbn/std", - "@kbn/rule-data-utils", - "@kbn/securitysolution-t-grid", - "@kbn/rule-registry-plugin", - "@kbn/securitysolution-utils", - "@kbn/securitysolution-list-constants", - "@kbn/config-schema", - "@kbn/triggers-actions-ui-plugin", - "@kbn/securitysolution-io-ts-types", - "@kbn/securitysolution-io-ts-utils", - "@kbn/osquery-io-ts-types", - "@kbn/core-capabilities-common", - "@kbn/es-ui-shared-plugin", - "@kbn/i18n", - "@kbn/kibana-utils-plugin", - "@kbn/lens-plugin", - "@kbn/dashboard-plugin", - "@kbn/saved-objects-tagging-oss-plugin", - "@kbn/guided-onboarding-plugin", - "@kbn/i18n-react", - "@kbn/kibana-react-plugin", - "@kbn/ecs-data-quality-dashboard", - "@kbn/elastic-assistant", - "@kbn/elastic-assistant-plugin", - "@kbn/data-views-plugin", - "@kbn/datemath", - "@kbn/ui-theme", - "@kbn/securitysolution-list-api", - "@kbn/core-http-browser", - "@kbn/core-http-browser-mocks", - "@kbn/securitysolution-list-hooks", - "@kbn/securitysolution-exception-list-components", - "@kbn/securitysolution-exceptions-common", - "@kbn/rison", - "@kbn/shared-ux-page-kibana-template", - "@kbn/securitysolution-hook-utils", - "@kbn/test-jest-helpers", - "@kbn/safer-lodash-set", - "@kbn/securitysolution-autocomplete", - "@kbn/core-application-browser", - "@kbn/expect", - "@kbn/share-plugin", - "@kbn/analytics", - "@kbn/core-notifications-browser", - "@kbn/doc-links", - "@kbn/react-field", - "@kbn/field-types", - "@kbn/securitysolution-rules", - "@kbn/cases-components", - "@kbn/event-log-plugin", - "@kbn/task-manager-plugin", - "@kbn/cloud-plugin", - "@kbn/core-saved-objects-utils-server", - "@kbn/core-http-router-server-mocks", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/apm-utils", - "@kbn/core-saved-objects-server", - "@kbn/es-types", - "@kbn/utils", - "@kbn/logging-mocks", - "@kbn/securitysolution-es-utils", - "@kbn/logging", - "@kbn/utility-types-jest", - "@kbn/core-elasticsearch-server", - "@kbn/core-saved-objects-api-server", - "@kbn/core-http-server", - "@kbn/dev-cli-runner", - "@kbn/dev-cli-errors", - "@kbn/dev-utils", - "@kbn/tooling-log", - "@kbn/core-status-common", - "@kbn/repo-info", - "@kbn/storybook", - "@kbn/controls-plugin", - "@kbn/core-saved-objects-common", - "@kbn/core-saved-objects-import-export-server-mocks", - "@kbn/user-profile-components", - "@kbn/guided-onboarding", - "@kbn/securitysolution-ecs", - "@kbn/cell-actions", - "@kbn/shared-ux-router", - "@kbn/charts-plugin", - "@kbn/alerts-as-data-utils", - "@kbn/cloud-defend-plugin", - "@kbn/expandable-flyout", - "@kbn/grouping", - "@kbn/securitysolution-data-table", - "@kbn/core-analytics-server", - "@kbn/security-solution-side-nav", - "@kbn/ml-anomaly-utils", - "@kbn/discover-plugin", - "@kbn/field-formats-plugin", - "@kbn/expressions-plugin", - "@kbn/dev-proc-runner", - "@kbn/alerts-ui-shared", - "@kbn/security-solution-navigation", - "@kbn/security-solution-upselling", - "@kbn/discover-plugin", - "@kbn/data-view-editor-plugin", - "@kbn/alerts-ui-shared", - "@kbn/saved-search-plugin", - "@kbn/unified-histogram-plugin", - "@kbn/navigation-plugin", - "@kbn/core-logging-server-mocks", - "@kbn/core-lifecycle-browser", - "@kbn/security-solution-features", - "@kbn/content-management-plugin", - "@kbn/discover-utils", - "@kbn/core-application-common", - "@kbn/openapi-generator", - "@kbn/openapi-bundler", - "@kbn/es", - "@kbn/react-kibana-mount", - "@kbn/react-kibana-context-styled", - "@kbn/unified-doc-viewer-plugin", - "@kbn/openapi-generator", - "@kbn/unified-data-table", - "@kbn/unified-doc-viewer", - "@kbn/dom-drag-drop", - "@kbn/unified-field-list", - "@kbn/resizable-layout", - "@kbn/zod-helpers", - "@kbn/core-http-common", - "@kbn/search-errors", - "@kbn/stack-connectors-plugin", - "@kbn/elastic-assistant-common", - "@kbn/core-elasticsearch-server-mocks", - "@kbn/lens-embeddable-utils", - "@kbn/esql-utils", - "@kbn/core-test-helpers-kbn-server", - "@kbn/core-ui-settings-server", - "@kbn/core-http-request-handler-context-server", - "@kbn/core-http-server-mocks", - "@kbn/data-service", - "@kbn/core-chrome-browser", - "@kbn/shared-ux-chrome-navigation", - "@kbn/core-ui-settings-browser-mocks", - "@kbn/management-plugin", - "@kbn/security-plugin-types-server", - "@kbn/deeplinks-security", - "@kbn/react-kibana-context-render", - "@kbn/search-types", - "@kbn/field-utils", - "@kbn/core-saved-objects-api-server-mocks", - "@kbn/core-analytics-browser", - "@kbn/core-i18n-browser", - "@kbn/core-theme-browser", - "@kbn/integration-assistant-plugin", - "@kbn/avc-banner", - "@kbn/config", - "@kbn/openapi-common", - "@kbn/securitysolution-lists-common", - "@kbn/cbor", - "@kbn/zod", - "@kbn/cloud-security-posture", - "@kbn/security-solution-distribution-bar", - "@kbn/cloud-security-posture-common", - "@kbn/cloud-security-posture-graph", - "@kbn/presentation-publishing", - "@kbn/entityManager-plugin", - "@kbn/entities-schema", - "@kbn/inference-plugin", - "@kbn/core-saved-objects-server-mocks", - "@kbn/core-security-server-mocks", - "@kbn/serverless", - "@kbn/core-user-profile-browser", - "@kbn/data-stream-adapter", - "@kbn/core-lifecycle-server", - "@kbn/core-user-profile-common", - "@kbn/langchain", - "@kbn/discover-shared-plugin", - "@kbn/react-hooks", - "@kbn/index-adapter", - "@kbn/core-http-server-utils", - "@kbn/llm-tasks-plugin" - ] -} diff --git a/x-pack/plugins/security_solution_ess/README.md b/x-pack/plugins/security_solution_ess/README.md deleted file mode 100755 index ee0dbe2250b9a..0000000000000 --- a/x-pack/plugins/security_solution_ess/README.md +++ /dev/null @@ -1,76 +0,0 @@ -# **Security Solution ESS Plugin** - -## **Table of Contents** -- [Introduction](#introduction) -- [Purpose](#purpose) -- [Architecture](#architecture) -- [Contributing](#contributing) -- [License](#license) - -## **Introduction** -The `security_solution_ess` plugin is an internal plugin for Kibana's Security Solution, designed to encapsulate ESS-specific logic. -This plugin is only enabled when the application is built for stateful deployments (ESS or on-prem), keeping the main `security_solution` plugin clean and agnostic of the offering model. - -> The term ESS used by this plugin is not strictly referring to Cloud deployments, it's used to refer to all stateful deployments (non-serverless), including on-prem instances. - -## **Purpose** -The primary goal of the `security_solution_ess` plugin is to: -- Isolate ess-specific code and configuration from the main `security_solution` plugin. -- Enable seamless integration with the non-serverless environment without affecting the serverless build of the Security Solution. -- Provide a modular approach by encapsulating ess-related functionality, thereby maintaining the codebase's cleanliness and modularity. - -## **Architecture** -The `security_solution_ess` plugin depends on the main `security_solution` plugin, it can import code from it though the use of agnostic packages is preferred, and they interact through the plugin lifecycle contract. -This architecture allows the `security_solution_ess` plugin to: -- Modify the behavior of the main plugin by providing ess-specific content. -- Ensure that the `security_solution` plugin remains offering-agnostic by using APIs for ess-specific behavior only when necessary. - -### **Plugin Interaction** -- **Generic Plugin (`security_solution`)**: Exposes an API in its plugin lifecycle contract for components and configurations that depend on the offering. -- **ESS Plugin (`security_solution_ess`)**: Utilizes the exposed API to inject or modify the application according to ess-specific content and logic. -- **Other Plugins**: Other plugins may also expose contract APIs to configure ess-specific content for Security. - -#### **Example** - -The following example demonstrates how the `security_solution_ess` plugin interacts with the main `security_solution` plugin via a contract API. - -It exposes a setter to the contract API for `usersUrl`, which is an offering-specific value. The `security_solution_ess` plugin uses these APIs to inject the ess-specific URL into the main plugin. - -The `PluginContract` class in the main Security Solution plugin simplifies the usage of contract APIs, storing the values and providing a getter to the application using the Kibana services context. - -___security_solution/public/plugin_contract.ts___ -```typescript -export class PluginContract { - usersUrl: string; - - public getStartContract() { - return { - setUsersUrl: (url: string) => { - this.usersUrl = url; - } - }; - } - - public getStartServices() { - return { - getUsersUrl: () => this.usersUrl; // available via useKibana().services.getUsersUrl() - }; - } -} -``` - -___security_solution_ess/public/plugin.ts___ -```typescript -export class Plugin { - - public start(core: CoreStart, deps: SecuritySolutionEssStartDeps) { - deps.securitySolution.setUsersUrl(deps.application.getUrlForApp('management', { path: 'security/users' })); - } -} -``` - -## **Contributing** -If you're looking to contribute to this plugin, please follow the standard contribution guidelines of the Security Solution plugin. Ensure that all changes are tested in a ESS environment. - -## **License** -This plugin is licensed under the Elastic License. See the [LICENSE](../../../LICENSE.txt) file for more details. diff --git a/x-pack/plugins/security_solution_ess/jest.config.dev.js b/x-pack/plugins/security_solution_ess/jest.config.dev.js deleted file mode 100644 index 6ac2f96f95f04..0000000000000 --- a/x-pack/plugins/security_solution_ess/jest.config.dev.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../', - projects: ['/x-pack/plugins/security_solution_ess/public/jest.config.js'], -}; diff --git a/x-pack/plugins/security_solution_ess/package.json b/x-pack/plugins/security_solution_ess/package.json deleted file mode 100644 index e7ab99edd6a2a..0000000000000 --- a/x-pack/plugins/security_solution_ess/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "@kbn/security-solution-ess", - "version": "1.0.0", - "license": "Elastic License 2.0", - "private": true, - "scripts": { - "build": "yarn plugin-helpers build", - "plugin-helpers": "node ../../../scripts/plugin_helpers", - "kbn": "node ../../../scripts/kbn" - } -} diff --git a/x-pack/plugins/security_solution_ess/public/jest.config.js b/x-pack/plugins/security_solution_ess/public/jest.config.js deleted file mode 100644 index fac3d4ceba420..0000000000000 --- a/x-pack/plugins/security_solution_ess/public/jest.config.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - /** all nested directories have their own Jest config file */ - testMatch: ['/x-pack/plugins/security_solution_ess/public/**/*.test.{js,mjs,ts,tsx}'], - roots: ['/x-pack/plugins/security_solution_ess/public'], - coverageDirectory: - '/target/kibana-coverage/jest/x-pack/plugins/security_solution_ess/public', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '/x-pack/plugins/security_solution_ess/public/**/*.{ts,tsx}', - '!/x-pack/plugins/security_solution_ess/public/*.test.{ts,tsx}', - '!/x-pack/plugins/security_solution_ess/public/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!/x-pack/plugins/security_solution_ess/public/*mock*.{ts,tsx}', - '!/x-pack/plugins/security_solution_ess/public/*.test.{ts,tsx}', - '!/x-pack/plugins/security_solution_ess/public/*.d.ts', - '!/x-pack/plugins/security_solution_ess/public/*.config.ts', - '!/x-pack/plugins/security_solution_ess/public/index.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/security_solution_ess/tsconfig.json b/x-pack/plugins/security_solution_ess/tsconfig.json deleted file mode 100644 index 6409a15bd7d27..0000000000000 --- a/x-pack/plugins/security_solution_ess/tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "index.ts", - "common/**/*.ts", - "public/**/*.ts", - "public/**/*.tsx", - "server/**/*.ts", - "../../../typings/**/*" - ], - "exclude": ["target/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/config-schema", - "@kbn/security-solution-plugin", - "@kbn/kibana-react-plugin", - "@kbn/security-solution-features", - "@kbn/cases-plugin", - "@kbn/security-solution-navigation", - "@kbn/licensing-plugin", - "@kbn/security-solution-upselling", - "@kbn/i18n", - "@kbn/navigation-plugin", - "@kbn/management-plugin", - "@kbn/core-chrome-browser", - ] -} diff --git a/x-pack/plugins/security_solution_serverless/README.md b/x-pack/plugins/security_solution_serverless/README.md deleted file mode 100755 index 27d541dd659da..0000000000000 --- a/x-pack/plugins/security_solution_serverless/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# **Security Solution Serverless Plugin** - -## **Table of Contents** -- [Introduction](#introduction) -- [Purpose](#purpose) -- [Architecture](#architecture) -- [Contributing](#contributing) -- [License](#license) - -## **Introduction** -The `security_solution_serverless` plugin is an internal plugin for Kibana's Security Solution, designed to encapsulate serverless-specific logic. -This plugin is only enabled when the application is built for serverless project, keeping the main `security_solution` plugin clean and agnostic of the offering model. - -This plugin contains configuration and code used to create a Serverless Security project. -It leverages universal configuration and other APIs in the [`serverless`](../serverless/README.mdx) plugin to configure Kibana. - -## **Purpose** -The primary goal of the `security_solution_serverless` plugin is to: -- Isolate serverless-specific code and configuration from the main `security_solution` plugin. -- Enable seamless integration with the serverless environment without affecting the non-serverless build of the Security Solution. -- Provide a modular approach by encapsulating serverless-related functionality, thereby maintaining the codebase's cleanliness and modularity. - -## **Architecture** -The `security_solution_serverless` plugin depends on the main `security_solution` plugin, it can import code from it thought the use of agnostic packages is preferred, -and they interact through the plugin lifecycle contract. -This architecture allows the `security_solution_serverless` plugin to: -- Modify the behavior of the main plugin by providing serverless-specific content. -- Ensure that the `security_solution` plugin remains offering-agnostic by using APIs for serverless-specific behavior only when necessary. - -### **Plugin Interaction** -- **Generic Plugin (`security_solution`)**: Exposes an API in its plugin lifecycle contract for components and configurations that depend on the offering. -- **Serverless Plugin (`security_solution_serverless`)**: Utilizes the exposed API to inject or modify the application according to serverless-specific content and logic. -- **Other Plugins**: Other plugins may also expose contract APIs to configure serverless-specific content for Security. - -#### **Example** - -The following example demonstrates how the `security_solution_serverless` plugin interacts with the main `security_solution` plugin via a contract API. - -It exposes a setter to the contract API for `usersUrl`, which is an offering-specific value. The `security_solution_serverless` plugin uses these APIs to inject the serverless-specific URL into the main plugin. - -The `PluginContract` class in the main Security Solution plugin simplifies the usage of contract APIs, storing the values and providing a getter to the application using the Kibana services context. - -___security_solution/public/plugin_contract.ts___ -```typescript -export class PluginContract { - usersUrl: string; - - public getStartContract() { - return { - setUsersUrl: (url: string) => { - this.usersUrl = url; - } - }; - } - - public getStartServices() { - return { - getUsersUrl: () => this.usersUrl; // available via useKibana().services.getUsersUrl() - }; - } -} -``` - -___security_solution_serverless/public/plugin.ts___ -```typescript -export class Plugin { - - public start(core: CoreStart, deps: SecuritySolutionServerlessStartDeps) { - deps.securitySolution.setUsersUrl(deps.cloud.usersAndRolesUrl); - } -} -``` - -## **Contributing** -If you're looking to contribute to this plugin, please follow the standard contribution guidelines of the Security Solution plugin. Ensure that all changes are tested in a serverless environment. - -## **License** -This plugin is licensed under the Elastic License. See the [LICENSE](../../../LICENSE.txt) file for more details. diff --git a/x-pack/plugins/security_solution_serverless/common/config.ts b/x-pack/plugins/security_solution_serverless/common/config.ts deleted file mode 100644 index f4e9151988a60..0000000000000 --- a/x-pack/plugins/security_solution_serverless/common/config.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema, type TypeOf } from '@kbn/config-schema'; -import { ProductLine, ProductTier } from './product'; - -export const productLine = schema.oneOf([ - schema.literal(ProductLine.security), - schema.literal(ProductLine.endpoint), - schema.literal(ProductLine.cloud), -]); - -export type SecurityProductLine = TypeOf; - -export const productTier = schema.oneOf([ - schema.literal(ProductTier.essentials), - schema.literal(ProductTier.complete), -]); -export type SecurityProductTier = TypeOf; - -export const productType = schema.object({ - product_line: productLine, - product_tier: productTier, -}); -export type SecurityProductType = TypeOf; - -export const productTypes = schema.arrayOf(productType, { - defaultValue: [], -}); -export type SecurityProductTypes = TypeOf; - -export const configSchema = schema.object({ - enabled: schema.boolean({ defaultValue: false }), - productTypes, - /** - * For internal use. A list of string values (comma delimited) that will enable experimental - * type of functionality that is not yet released. Valid values for this settings need to - * be defined in: - * `x-pack/plugins/security_solution_serverless/common/experimental_features.ts` - * under the `allowedExperimentalValues` object - * - * @example - * xpack.securitySolutionServerless.enableExperimental: - * - someCrazyFeature - * - someEvenCrazierFeature - */ - enableExperimental: schema.arrayOf(schema.string(), { - defaultValue: () => [], - }), -}); - -export type ServerlessSecurityConfigSchema = TypeOf; diff --git a/x-pack/plugins/security_solution_serverless/common/jest.config.js b/x-pack/plugins/security_solution_serverless/common/jest.config.js deleted file mode 100644 index 01ea1139d6e44..0000000000000 --- a/x-pack/plugins/security_solution_serverless/common/jest.config.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['/x-pack/plugins/security_solution_serverless/common'], - testMatch: [ - '/x-pack/plugins/security_solution_serverless/common/**/*.test.{js,mjs,ts,tsx}', - ], - coverageDirectory: - '/target/kibana-coverage/jest/x-pack/plugins/security_solution_serverless/common', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '/x-pack/plugins/security_solution_serverless/common/**/*.{ts,tsx}', - '!/x-pack/plugins/security_solution_serverless/common/*.test.{ts,tsx}', - '!/x-pack/plugins/security_solution_serverless/common/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!/x-pack/plugins/security_solution_serverless/common/*mock*.{ts,tsx}', - '!/x-pack/plugins/security_solution_serverless/common/*.test.{ts,tsx}', - '!/x-pack/plugins/security_solution_serverless/common/*.d.ts', - '!/x-pack/plugins/security_solution_serverless/common/*.config.ts', - '!/x-pack/plugins/security_solution_serverless/common/index.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/security_solution_serverless/jest.config.dev.js b/x-pack/plugins/security_solution_serverless/jest.config.dev.js deleted file mode 100644 index 2591fcc775ab0..0000000000000 --- a/x-pack/plugins/security_solution_serverless/jest.config.dev.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../', - projects: ['/x-pack/plugins/security_solution_serverless/public/jest.config.js'], -}; diff --git a/x-pack/plugins/security_solution_serverless/package.json b/x-pack/plugins/security_solution_serverless/package.json deleted file mode 100644 index 745afbe7d97c6..0000000000000 --- a/x-pack/plugins/security_solution_serverless/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "@kbn/security-solution-serverless", - "version": "1.0.0", - "license": "Elastic License 2.0", - "private": true, - "scripts": { - "build": "yarn plugin-helpers build", - "plugin-helpers": "node ../../../scripts/plugin_helpers", - "kbn": "node ../../../scripts/kbn" - } -} \ No newline at end of file diff --git a/x-pack/plugins/security_solution_serverless/public/jest.config.js b/x-pack/plugins/security_solution_serverless/public/jest.config.js deleted file mode 100644 index cf3ad9340c14d..0000000000000 --- a/x-pack/plugins/security_solution_serverless/public/jest.config.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - /** all nested directories have their own Jest config file */ - testMatch: [ - '/x-pack/plugins/security_solution_serverless/public/**/*.test.{js,mjs,ts,tsx}', - ], - roots: ['/x-pack/plugins/security_solution_serverless/public'], - coverageDirectory: - '/target/kibana-coverage/jest/x-pack/plugins/security_solution_serverless/public', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '/x-pack/plugins/security_solution_serverless/public/**/*.{ts,tsx}', - '!/x-pack/plugins/security_solution_serverless/public/*.test.{ts,tsx}', - '!/x-pack/plugins/security_solution_serverless/public/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!/x-pack/plugins/security_solution_serverless/public/*mock*.{ts,tsx}', - '!/x-pack/plugins/security_solution_serverless/public/*.test.{ts,tsx}', - '!/x-pack/plugins/security_solution_serverless/public/*.d.ts', - '!/x-pack/plugins/security_solution_serverless/public/*.config.ts', - '!/x-pack/plugins/security_solution_serverless/public/index.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/security_solution_serverless/server/config.ts b/x-pack/plugins/security_solution_serverless/server/config.ts deleted file mode 100644 index d4bafd9b9ddb9..0000000000000 --- a/x-pack/plugins/security_solution_serverless/server/config.ts +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { TypeOf } from '@kbn/config-schema'; -import type { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; -import type { SecuritySolutionPluginSetup } from '@kbn/security-solution-plugin/server/plugin_contract'; - -import { schema } from '@kbn/config-schema'; - -import type { ExperimentalFeatures } from '../common/experimental_features'; - -import { productTypes } from '../common/config'; -import { parseExperimentalConfigValue } from '../common/experimental_features'; - -const tlsConfig = schema.object({ - certificate: schema.string(), - key: schema.string(), - ca: schema.string(), -}); -export type TlsConfigSchema = TypeOf; - -const usageApiConfig = schema.object({ - enabled: schema.boolean({ defaultValue: false }), - url: schema.maybe(schema.string()), - tls: schema.maybe(tlsConfig), -}); -export type UsageApiConfigSchema = TypeOf; - -export const configSchema = schema.object({ - enabled: schema.boolean({ defaultValue: false }), - productTypes, - /** - * Usage Reporting: the interval between runs of the endpoint task - */ - - usageReportingTaskInterval: schema.string({ defaultValue: '5m' }), - - /** - * Usage Reporting: the interval between runs of the cloud security task - */ - - cloudSecurityUsageReportingTaskInterval: schema.string({ defaultValue: '30m' }), - - /** - * Usage Reporting: timeout value for how long the task should run. - */ - usageReportingTaskTimeout: schema.string({ defaultValue: '1m' }), - - /** - * For internal use. A list of string values (comma delimited) that will enable experimental - * type of functionality that is not yet released. Valid values for this settings need to - * be defined in: - * `x-pack/plugins/security_solution_serverless/common/experimental_features.ts` - * under the `allowedExperimentalValues` object - * - * @example - * xpack.securitySolutionServerless.enableExperimental: - * - someCrazyServerlessFeature - * - someEvenCrazierServerlessFeature - */ - enableExperimental: schema.arrayOf(schema.string(), { - defaultValue: () => [], - }), - - usageApi: usageApiConfig, -}); -export type ServerlessSecuritySchema = TypeOf; - -export const config: PluginConfigDescriptor = { - exposeToBrowser: { - enableExperimental: true, - productTypes: true, - }, - schema: configSchema, - deprecations: ({ renameFromRoot }) => [ - renameFromRoot( - 'xpack.serverless.security.productTypes', - 'xpack.securitySolutionServerless.productTypes', - { silent: true, level: 'warning' } - ), - ], -}; - -export type ServerlessSecurityConfig = Omit & { - experimentalFeatures: ExperimentalFeatures; -}; - -export const createConfig = ( - context: PluginInitializerContext, - securitySolution: SecuritySolutionPluginSetup -): ServerlessSecurityConfig => { - const { enableExperimental, ...pluginConfig } = context.config.get(); - const logger = context.logger.get('config'); - - const { - invalid, - duplicated, - features: experimentalFeatures, - } = parseExperimentalConfigValue(enableExperimental, securitySolution.experimentalFeatures); - - if (invalid.length) { - logger.warn(`Unsupported "xpack.securitySolutionServerless.enableExperimental" values detected. -The following configuration values are not supported and should be removed from the configuration: - - xpack.securitySolutionServerless.enableExperimental: -${invalid.map((key) => ` - ${key}`).join('\n')} -`); - } - - if (duplicated.length) { - logger.warn(`Duplicated "xpack.securitySolutionServerless.enableExperimental" values detected. -The following configuration values are should only be defined using the generic "xpack.securitySolution.enableExperimental": - - xpack.securitySolutionServerless.enableExperimental: -${duplicated.map((key) => ` - ${key}`).join('\n')} -`); - } - - return { - ...pluginConfig, - experimentalFeatures, - }; -}; diff --git a/x-pack/plugins/security_solution_serverless/server/jest.config.js b/x-pack/plugins/security_solution_serverless/server/jest.config.js deleted file mode 100644 index ba44c864b686c..0000000000000 --- a/x-pack/plugins/security_solution_serverless/server/jest.config.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/** @type {import('@jest/types').Config.InitialOptions} */ -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['/x-pack/plugins/security_solution_serverless/server/'], -}; diff --git a/x-pack/plugins/security_solution_serverless/tsconfig.json b/x-pack/plugins/security_solution_serverless/tsconfig.json deleted file mode 100644 index cb0518fc4dcd5..0000000000000 --- a/x-pack/plugins/security_solution_serverless/tsconfig.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "index.ts", - "common/**/*.ts", - "public/**/*.ts", - "public/**/*.tsx", - "server/**/*.ts", - "../../../typings/**/*" - ], - "exclude": ["target/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/config-schema", - "@kbn/management-plugin", - "@kbn/security-plugin", - "@kbn/security-solution-ess", - "@kbn/security-solution-plugin", - "@kbn/server-http-tools", - "@kbn/serverless", - "@kbn/security-solution-navigation", - "@kbn/security-solution-upselling", - "@kbn/kibana-react-plugin", - "@kbn/core-chrome-browser", - "@kbn/i18n-react", - "@kbn/i18n", - "@kbn/shared-ux-page-kibana-template", - "@kbn/features-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/task-manager-plugin", - "@kbn/cloud-plugin", - "@kbn/cloud-security-posture-plugin", - "@kbn/security-solution-features", - "@kbn/cases-plugin", - "@kbn/fleet-plugin", - "@kbn/serverless-security-settings", - "@kbn/core-elasticsearch-server", - "@kbn/cloud-defend-plugin", - "@kbn/core-logging-server-mocks", - "@kbn/stack-connectors-plugin", - "@kbn/actions-plugin", - "@kbn/management-cards-navigation", - "@kbn/discover-plugin", - "@kbn/logging", - "@kbn/integration-assistant-plugin", - "@kbn/cloud-security-posture-common", - "@kbn/dev-utils" - ] -} diff --git a/x-pack/plugins/serverless/public/navigation/index.tsx b/x-pack/plugins/serverless/public/navigation/index.tsx index 2ff6e27c664f7..c7862d80eef1a 100644 --- a/x-pack/plugins/serverless/public/navigation/index.tsx +++ b/x-pack/plugins/serverless/public/navigation/index.tsx @@ -6,32 +6,34 @@ */ import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import React, { Suspense, type FC } from 'react'; -import { EuiSkeletonRectangle } from '@elastic/eui'; +import { EuiSkeletonRectangle, useEuiTheme } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { Props as NavigationProps } from './navigation'; const SideNavComponentLazy = React.lazy(() => import('./navigation')); -export const SideNavComponent: FC = (props) => ( - - } - > - - -); +export const SideNavComponent: FC = (props) => { + const { euiTheme } = useEuiTheme(); + return ( + + } + > + + + ); +}; export { manageOrgMembersNavCardName, generateManageOrgMembersNavCard } from './nav_cards'; diff --git a/x-pack/plugins/serverless/tsconfig.json b/x-pack/plugins/serverless/tsconfig.json index 35cc5e554ceb3..ce60d39bef0f0 100644 --- a/x-pack/plugins/serverless/tsconfig.json +++ b/x-pack/plugins/serverless/tsconfig.json @@ -28,6 +28,5 @@ "@kbn/management-cards-navigation", "@kbn/react-kibana-mount", "@kbn/react-kibana-context-render", - "@kbn/ui-theme", ] } diff --git a/x-pack/plugins/serverless_observability/package.json b/x-pack/plugins/serverless_observability/package.json deleted file mode 100644 index 64b310d7eabae..0000000000000 --- a/x-pack/plugins/serverless_observability/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "@kbn/serverless-observability", - "version": "1.0.0", - "license": "Elastic License 2.0", - "private": true, - "scripts": { - "build": "yarn plugin-helpers build", - "plugin-helpers": "node ../../../scripts/plugin_helpers", - "kbn": "node ../../../scripts/kbn" - } -} \ No newline at end of file diff --git a/x-pack/plugins/serverless_observability/tsconfig.json b/x-pack/plugins/serverless_observability/tsconfig.json deleted file mode 100644 index 5aa97143107ae..0000000000000 --- a/x-pack/plugins/serverless_observability/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "index.ts", - "common/**/*.ts", - "public/**/*.ts", - "public/**/*.tsx", - "server/**/*.ts", - "../../../typings/**/*" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/config-schema", - "@kbn/management-plugin", - "@kbn/serverless", - "@kbn/observability-shared-plugin", - "@kbn/i18n", - "@kbn/management-cards-navigation", - "@kbn/data-plugin", - "@kbn/observability-plugin", - "@kbn/io-ts-utils", - "@kbn/serverless-observability-settings", - "@kbn/core-chrome-browser", - "@kbn/discover-plugin", - "@kbn/security-plugin", - "@kbn/search-types", - "@kbn/streams-plugin", - ] -} diff --git a/x-pack/plugins/serverless_search/kibana.jsonc b/x-pack/plugins/serverless_search/kibana.jsonc index cae0a693846f1..8b1609c5f126c 100644 --- a/x-pack/plugins/serverless_search/kibana.jsonc +++ b/x-pack/plugins/serverless_search/kibana.jsonc @@ -38,6 +38,8 @@ "searchPlayground", "usageCollection" ], - "requiredBundles": ["kibanaReact"] + "requiredBundles": [ + "kibanaReact" + ] } } diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/python.ts b/x-pack/plugins/serverless_search/public/application/components/languages/python.ts index 266a28b12c181..963d4c40ce5b6 100644 --- a/x-pack/plugins/serverless_search/public/application/components/languages/python.ts +++ b/x-pack/plugins/serverless_search/public/application/components/languages/python.ts @@ -14,7 +14,7 @@ export const pythonDefinition: LanguageDefinition = { apiReference: docLinks.pythonApiReference, basicConfig: docLinks.pythonBasicConfig, buildSearchQuery: `client.search(index="books", q="snow")`, - configureClient: ({ url, apiKey }) => `from elasticsearch_serverless import Elasticsearch + configureClient: ({ url, apiKey }) => `from elasticsearch import Elasticsearch client = Elasticsearch( "${url}", @@ -22,9 +22,9 @@ client = Elasticsearch( )`, docLink: docLinks.pythonClient, github: { - link: 'https://github.com/elastic/elasticsearch-serverless-python', + link: 'https://github.com/elastic/elasticsearch-py', label: i18n.translate('xpack.serverlessSearch.languages.python.githubLabel', { - defaultMessage: 'elasticsearch-serverless-python', + defaultMessage: 'elasticsearch-py', }), }, iconType: 'python.svg', @@ -50,7 +50,7 @@ client.bulk(operations=documents${ingestPipeline ? `, pipeline="${ingestPipeline url, indexName, ingestPipeline, - }) => `from elasticsearch_serverless import Elasticsearch + }) => `from elasticsearch import Elasticsearch client = Elasticsearch( "${url}", @@ -64,10 +64,10 @@ documents = [ client.bulk(operations=documents${ingestPipeline ? `, pipeline="${ingestPipeline}"` : ''}) `, - installClient: `python -m pip install elasticsearch-serverless + installClient: `python -m pip install elasticsearch # If your application uses async/await in Python you can install with the async extra -# python -m pip install elasticsearch_serverless[async] +# python -m pip install elasticsearch[async] `, name: i18n.translate('xpack.serverlessSearch.languages.python', { defaultMessage: 'Python', diff --git a/x-pack/plugins/session_view/README.md b/x-pack/plugins/session_view/README.md deleted file mode 100644 index 384be8bcc292b..0000000000000 --- a/x-pack/plugins/session_view/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Session View - -Session View is meant to provide a visualization into what is going on in a particular Linux environment where the agent is running. It looks likes a terminal emulator; however, it is a tool for introspecting process activity and understanding user and service behaviour in your Linux servers and infrastructure. It is a time-ordered series of process executions displayed in a tree over time. - -It provides an audit trail of: - -- Interactive processes being entered by a user into the terminal - User Input -- Processes and services which do not have a controlling tty (ie are not interactive) -- Output which is generated as a result of process activity - Output -- Nested sessions inside the entry session - Nested session (Note: For now nested sessions will display as they did at Cmd with no special handling for TMUX) -- Full telemetry about the process initiated event. This will include the information specified in the Linux logical event model -- Who executed the session or process, even if the user changes. - -## Development - -## Tests - -### Unit tests - -From kibana path in your terminal go to this plugin root: - -```bash -cd x-pack/plugins/session_view -``` - -Then run jest with: - -```bash -yarn test:jest -``` - -Or if running from kibana root, you can specify the `-i` to specify the path: - -```bash -yarn test:jest -i x-pack/plugins/session_view/ -``` diff --git a/x-pack/plugins/session_view/jest.config.js b/x-pack/plugins/session_view/jest.config.js deleted file mode 100644 index d35db0d369468..0000000000000 --- a/x-pack/plugins/session_view/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/x-pack/plugins/session_view'], - coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/session_view', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '/x-pack/plugins/session_view/{common,public,server}/**/*.{ts,tsx}', - ], - setupFiles: ['jest-canvas-mock'], -}; diff --git a/x-pack/plugins/session_view/package.json b/x-pack/plugins/session_view/package.json deleted file mode 100644 index 256080545ba17..0000000000000 --- a/x-pack/plugins/session_view/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "author": "Elastic", - "name": "@kbn/session-view-plugin", - "version": "1.0.0", - "private": true, - "license": "Elastic License 2.0", - "scripts": { - "test:jest": "node ../../scripts/jest", - "test:coverage": "node ../../scripts/jest --coverage" - } -} diff --git a/x-pack/plugins/session_view/tsconfig.json b/x-pack/plugins/session_view/tsconfig.json deleted file mode 100644 index 412de8355943c..0000000000000 --- a/x-pack/plugins/session_view/tsconfig.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - // add all the folders containg files to be compiled - "common/**/*", - "public/**/*", - "server/**/*", - "server/**/*.json", - "scripts/**/*", - "package.json", - "storybook/**/*", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - // add references to other TypeScript projects the plugin depends on - - // requiredPlugins from ./kibana.json - - // optionalPlugins from ./kibana.json - "@kbn/security-plugin", - - // requiredBundles from ./kibana.json - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/rule-registry-plugin", - "@kbn/i18n", - "@kbn/std", - "@kbn/ui-theme", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/alerting-plugin", - "@kbn/rule-data-utils", - "@kbn/securitysolution-es-utils", - "@kbn/shared-ux-router", - "@kbn/usage-collection-plugin", - "@kbn/analytics", - "@kbn/securitysolution-rules", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/snapshot_restore/common/index.ts b/x-pack/plugins/snapshot_restore/common/index.ts deleted file mode 100644 index f8a44c695c520..0000000000000 --- a/x-pack/plugins/snapshot_restore/common/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -// TODO: https://github.com/elastic/kibana/issues/110892 -/* eslint-disable @kbn/eslint/no_export_all */ - -export * from './constants'; diff --git a/x-pack/plugins/snapshot_restore/jest.config.js b/x-pack/plugins/snapshot_restore/jest.config.js deleted file mode 100644 index b7dbd6f6c5786..0000000000000 --- a/x-pack/plugins/snapshot_restore/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/x-pack/plugins/snapshot_restore'], - coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/snapshot_restore', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '/x-pack/plugins/snapshot_restore/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/snapshot_restore/tsconfig.json b/x-pack/plugins/snapshot_restore/tsconfig.json deleted file mode 100644 index d34d28122b6d4..0000000000000 --- a/x-pack/plugins/snapshot_restore/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__jest__/**/*", - "common/**/*", - "public/**/*", - "server/**/*", - "test/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/licensing-plugin", - "@kbn/features-plugin", - "@kbn/cloud-plugin", - "@kbn/security-plugin", - "@kbn/management-plugin", - "@kbn/usage-collection-plugin", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/test-jest-helpers", - "@kbn/i18n", - "@kbn/utility-types", - "@kbn/share-plugin", - "@kbn/i18n-react", - "@kbn/analytics", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/core-ui-settings-browser", - "@kbn/core-http-router-server-mocks", - "@kbn/code-editor", - "@kbn/code-editor-mock", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/spaces/public/config.ts b/x-pack/plugins/spaces/public/config.ts index 3dd2d3bc89f92..dcd203eb696e3 100644 --- a/x-pack/plugins/spaces/public/config.ts +++ b/x-pack/plugins/spaces/public/config.ts @@ -9,7 +9,4 @@ export interface ConfigType { maxSpaces: number; allowFeatureVisibility: boolean; allowSolutionVisibility: boolean; - experimental: { - forceSolutionVisibility: boolean; - }; } diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx index bcd7ef069e0c1..ce28fd05516fa 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx @@ -138,7 +138,7 @@ export const CopyStatusSummaryIndicator = (props: Props) => { return ( {renderIcon(props)} - + {summarizedCopyResult.objects.length} diff --git a/x-pack/plugins/spaces/public/management/management_service.test.ts b/x-pack/plugins/spaces/public/management/management_service.test.ts index c89801953acdd..9aeddb8a66468 100644 --- a/x-pack/plugins/spaces/public/management/management_service.test.ts +++ b/x-pack/plugins/spaces/public/management/management_service.test.ts @@ -27,9 +27,6 @@ describe('ManagementService', () => { maxSpaces: 1000, allowFeatureVisibility: true, allowSolutionVisibility: true, - experimental: { - forceSolutionVisibility: false, - }, }; describe('#setup', () => { diff --git a/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx b/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx index d721ff79600c3..ff5a709765901 100644 --- a/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx +++ b/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx @@ -45,9 +45,6 @@ const config: ConfigType = { maxSpaces: 1000, allowFeatureVisibility: true, allowSolutionVisibility: true, - experimental: { - forceSolutionVisibility: false, - }, }; const eventTracker = new EventTracker({ reportEvent: jest.fn() }); diff --git a/x-pack/plugins/spaces/public/nav_control/solution_view_tour/solution_view_tour.tsx b/x-pack/plugins/spaces/public/nav_control/solution_view_tour/solution_view_tour.tsx index eda87809c66b3..dc4f77a3b3e00 100644 --- a/x-pack/plugins/spaces/public/nav_control/solution_view_tour/solution_view_tour.tsx +++ b/x-pack/plugins/spaces/public/nav_control/solution_view_tour/solution_view_tour.tsx @@ -72,6 +72,7 @@ export const SolutionViewTour: FC = ({ children, solution, isTourOpen, on onFinish={onFinishTour} step={1} stepsTotal={1} + repositionOnScroll title={i18n.translate('xpack.spaces.navControl.tour.title', { defaultMessage: 'You chose the {solution} solution view', values: { solution: solutionLabel }, diff --git a/x-pack/plugins/spaces/public/plugin.test.ts b/x-pack/plugins/spaces/public/plugin.test.ts index 33565748a99e3..40d6d7b39aa7c 100644 --- a/x-pack/plugins/spaces/public/plugin.test.ts +++ b/x-pack/plugins/spaces/public/plugin.test.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { cloudMock } from '@kbn/cloud-plugin/public/mocks'; import { coreMock } from '@kbn/core/public/mocks'; import { homePluginMock } from '@kbn/home-plugin/public/mocks'; import { @@ -20,7 +19,7 @@ describe('Spaces plugin', () => { it('should register the space selector app when buildFlavor is traditional', () => { const coreSetup = coreMock.createSetup(); const mockInitializerContext = coreMock.createPluginInitializerContext( - {}, + { allowSolutionVisibility: true }, { buildFlavor: 'traditional' } ); @@ -40,7 +39,7 @@ describe('Spaces plugin', () => { it('should not register the space selector app when buildFlavor is serverless and maxSpaces is 1', () => { const coreSetup = coreMock.createSetup(); const mockInitializerContext = coreMock.createPluginInitializerContext( - { maxSpaces: 1 }, + { maxSpaces: 1, allowSolutionVisibility: true }, { buildFlavor: 'serverless' } ); @@ -60,7 +59,7 @@ describe('Spaces plugin', () => { it('should register the space selector app when buildFlavor is serverless and and maxSpaces is >1', () => { const coreSetup = coreMock.createSetup(); const mockInitializerContext = coreMock.createPluginInitializerContext( - { maxSpaces: 2 }, + { maxSpaces: 2, allowSolutionVisibility: true }, { buildFlavor: 'serverless' } ); @@ -88,7 +87,7 @@ describe('Spaces plugin', () => { management.sections.section.kibana = mockSection; const mockInitializerContext = coreMock.createPluginInitializerContext( - {}, + { allowSolutionVisibility: true }, { buildFlavor: 'traditional' } ); @@ -122,7 +121,9 @@ describe('Spaces plugin', () => { management.sections.section.kibana = mockSection; - const plugin = new SpacesPlugin(coreMock.createPluginInitializerContext({ maxSpaces: 1 })); + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ maxSpaces: 1, allowSolutionVisibility: true }) + ); plugin.setup(coreSetup, { management, home, @@ -152,7 +153,9 @@ describe('Spaces plugin', () => { management.sections.section.kibana = mockSection; - const plugin = new SpacesPlugin(coreMock.createPluginInitializerContext({ maxSpaces: 2 })); + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ maxSpaces: 2, allowSolutionVisibility: true }) + ); plugin.setup(coreSetup, { management, home, @@ -179,7 +182,7 @@ describe('Spaces plugin', () => { const coreStart = coreMock.createStart(); const mockInitializerContext = coreMock.createPluginInitializerContext( - {}, + { allowSolutionVisibility: true }, { buildFlavor: 'traditional' } ); @@ -196,7 +199,7 @@ describe('Spaces plugin', () => { const coreStart = coreMock.createStart(); const mockInitializerContext = coreMock.createPluginInitializerContext( - { maxSpaces: 1 }, + { maxSpaces: 1, allowSolutionVisibility: true }, { buildFlavor: 'serverless' } ); @@ -214,7 +217,9 @@ describe('Spaces plugin', () => { const coreSetup = coreMock.createSetup(); const coreStart = coreMock.createStart(); - const plugin = new SpacesPlugin(coreMock.createPluginInitializerContext({ maxSpaces: 1 })); + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ maxSpaces: 1, allowSolutionVisibility: true }) + ); const spacesSetup = plugin.setup(coreSetup, {}); const spacesStart = plugin.start(coreStart); @@ -226,7 +231,9 @@ describe('Spaces plugin', () => { const coreSetup = coreMock.createSetup(); const coreStart = coreMock.createStart(); - const plugin = new SpacesPlugin(coreMock.createPluginInitializerContext({ maxSpaces: 1000 })); + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ maxSpaces: 1000, allowSolutionVisibility: true }) + ); const spacesSetup = plugin.setup(coreSetup, {}); const spacesStart = plugin.start(coreStart); @@ -236,129 +243,45 @@ describe('Spaces plugin', () => { }); describe('isSolutionViewEnabled', () => { - it('when onCloud, not serverless and allowSolutionVisibility is "true"', () => { + it('when allowSolutionVisibility is "true"', () => { const coreSetup = coreMock.createSetup(); const coreStart = coreMock.createStart(); - const cloud = cloudMock.createSetup(); - cloud.isCloudEnabled = true; const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: true }, - { buildFlavor: 'traditional' } - ) + coreMock.createPluginInitializerContext({ allowSolutionVisibility: true }) ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); + const spacesSetup = plugin.setup(coreSetup, {}); const spacesStart = plugin.start(coreStart); expect(spacesSetup.isSolutionViewEnabled).toBe(true); expect(spacesStart.isSolutionViewEnabled).toBe(true); }); - it('when not onCloud and allowSolutionVisibility is "true"', () => { + it('when allowSolutionVisibility is "false"', () => { const coreSetup = coreMock.createSetup(); const coreStart = coreMock.createStart(); { const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: true }, // it is true but we are not onCloud - { buildFlavor: 'traditional' } - ) + coreMock.createPluginInitializerContext({ allowSolutionVisibility: false }) ); const spacesSetup = plugin.setup(coreSetup, {}); const spacesStart = plugin.start(coreStart); - expect(spacesSetup.isSolutionViewEnabled).toBe(false); // so it should be false - expect(spacesStart.isSolutionViewEnabled).toBe(false); - } - - { - // unless the forceSolutionVisibility flag is set - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: false, experimental: { forceSolutionVisibility: true } }, - { buildFlavor: 'traditional' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, {}); // we are not onCloud but forceSolutionVisibility is true - const spacesStart = plugin.start(coreStart); - - expect(spacesSetup.isSolutionViewEnabled).toBe(true); - expect(spacesStart.isSolutionViewEnabled).toBe(true); - } - }); - - it('when onCloud, not serverless and allowSolutionVisibility is "false"', () => { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const cloud = cloudMock.createSetup(); - cloud.isCloudEnabled = true; - - { - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: false }, - { buildFlavor: 'traditional' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); - const spacesStart = plugin.start(coreStart); - expect(spacesSetup.isSolutionViewEnabled).toBe(false); expect(spacesStart.isSolutionViewEnabled).toBe(false); } - - { - // unless the forceSolutionVisibility flag is set - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: false, experimental: { forceSolutionVisibility: true } }, - { buildFlavor: 'traditional' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); - const spacesStart = plugin.start(coreStart); - - expect(spacesSetup.isSolutionViewEnabled).toBe(true); - expect(spacesStart.isSolutionViewEnabled).toBe(true); - } }); - it('when onCloud and serverless', () => { + it('when allowSolutionVisibility is "undefined"', () => { const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const cloud = cloudMock.createSetup(); - cloud.isCloudEnabled = true; - - { - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: true }, - { buildFlavor: 'serverless' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); - const spacesStart = plugin.start(coreStart); - expect(spacesSetup.isSolutionViewEnabled).toBe(false); - expect(spacesStart.isSolutionViewEnabled).toBe(false); - } - - { - // unless the forceSolutionVisibility flag is set - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: true, experimental: { forceSolutionVisibility: true } }, - { buildFlavor: 'serverless' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); - const spacesStart = plugin.start(coreStart); - - expect(spacesSetup.isSolutionViewEnabled).toBe(true); - expect(spacesStart.isSolutionViewEnabled).toBe(true); - } + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ allowSolutionVisibility: undefined }) + ); + expect(() => plugin.setup(coreSetup, {})).toThrowErrorMatchingInlineSnapshot( + `"allowSolutionVisibility has not been set in the Spaces plugin config."` + ); }); }); }); diff --git a/x-pack/plugins/spaces/public/plugin.tsx b/x-pack/plugins/spaces/public/plugin.tsx index 18083924200d9..c3583204a7bb3 100644 --- a/x-pack/plugins/spaces/public/plugin.tsx +++ b/x-pack/plugins/spaces/public/plugin.tsx @@ -59,14 +59,11 @@ export class SpacesPlugin implements Plugin, plugins: PluginsSetup) { - const hasOnlyDefaultSpace = this.config.maxSpaces === 1; - const onCloud = plugins.cloud !== undefined && plugins.cloud.isCloudEnabled; + if (this.config.allowSolutionVisibility === undefined) { + throw new Error('allowSolutionVisibility has not been set in the Spaces plugin config.'); + } - // We only allow "solution" to be set on cloud environments, not on prem - // unless the forceSolutionVisibility flag is set - const allowSolutionVisibility = - (onCloud && !this.isServerless && this.config.allowSolutionVisibility) || - Boolean(this.config.experimental?.forceSolutionVisibility); + const hasOnlyDefaultSpace = this.config.maxSpaces === 1; this.spacesManager = new SpacesManager(core.http); this.spacesApi = { @@ -77,12 +74,7 @@ export class SpacesPlugin implements Plugin this.spacesManager.onActiveSpaceChange$, getActiveSpace: () => this.spacesManager.getActiveSpace(), hasOnlyDefaultSpace, - isSolutionViewEnabled: allowSolutionVisibility, - }; - - this.config = { - ...this.config, - allowSolutionVisibility, + isSolutionViewEnabled: this.config.allowSolutionVisibility, }; registerSpacesEventTypes(core); @@ -167,7 +159,7 @@ export class SpacesPlugin implements Plugin { const { spacesDataPromise } = useSpaces(); + const { euiTheme } = useEuiTheme(); const [isExpanded, setIsExpanded] = useState(false); const [shareToSpacesData, setShareToSpacesData] = useState(); @@ -76,7 +78,7 @@ export const SpaceListInternal = ({ defaultMessage: `* All spaces`, }), initials: '*', - color: '#D3DAE6', + color: euiTheme.colors.vis.euiColorVisGrey0, }, ]; } else { @@ -145,7 +147,7 @@ export const SpaceListInternal = ({ /> } > - +{unauthorizedSpacesCount} + +{unauthorizedSpacesCount} ) : null; diff --git a/x-pack/plugins/spaces/server/index.ts b/x-pack/plugins/spaces/server/index.ts index 297a99a525ec7..a568f52c7c29a 100644 --- a/x-pack/plugins/spaces/server/index.ts +++ b/x-pack/plugins/spaces/server/index.ts @@ -34,9 +34,6 @@ export const config: PluginConfigDescriptor = { maxSpaces: true, allowFeatureVisibility: true, allowSolutionVisibility: true, - experimental: { - forceSolutionVisibility: true, - }, }, }; diff --git a/x-pack/plugins/spaces/server/plugin.test.ts b/x-pack/plugins/spaces/server/plugin.test.ts index 40aaf7044a4ea..cb2cee96a34e7 100644 --- a/x-pack/plugins/spaces/server/plugin.test.ts +++ b/x-pack/plugins/spaces/server/plugin.test.ts @@ -36,10 +36,7 @@ describe('Spaces plugin', () => { "hasOnlyDefaultSpace$": Observable { "operator": [Function], "source": Observable { - "operator": [Function], - "source": Observable { - "_subscribe": [Function], - }, + "_subscribe": [Function], }, }, "spacesClient": Object { @@ -123,10 +120,7 @@ describe('Spaces plugin', () => { "hasOnlyDefaultSpace$": Observable { "operator": [Function], "source": Observable { - "operator": [Function], - "source": Observable { - "_subscribe": [Function], - }, + "_subscribe": [Function], }, }, "spacesService": Object { diff --git a/x-pack/plugins/spaces/server/plugin.ts b/x-pack/plugins/spaces/server/plugin.ts index e36a6fb3cc7f1..e1c3c78976ecd 100644 --- a/x-pack/plugins/spaces/server/plugin.ts +++ b/x-pack/plugins/spaces/server/plugin.ts @@ -6,7 +6,7 @@ */ import type { Observable } from 'rxjs'; -import { BehaviorSubject, combineLatest, map } from 'rxjs'; +import { map } from 'rxjs'; import type { CloudSetup } from '@kbn/cloud-plugin/server'; import type { @@ -120,24 +120,8 @@ export class SpacesPlugin private defaultSpaceService?: DefaultSpaceService; - private onCloud$ = new BehaviorSubject(false); - constructor(private readonly initializerContext: PluginInitializerContext) { - this.config$ = combineLatest([ - initializerContext.config.create(), - this.onCloud$, - ]).pipe( - map( - ([config, onCloud]): ConfigType => ({ - ...config, - // We only allow "solution" to be set on cloud environments, not on prem - // unless the forceSolutionVisibility flag is set. - allowSolutionVisibility: - (onCloud && config.allowSolutionVisibility) || - Boolean(config.experimental?.forceSolutionVisibility), - }) - ) - ); + this.config$ = initializerContext.config.create(); this.hasOnlyDefaultSpace$ = this.config$.pipe(map(({ maxSpaces }) => maxSpaces === 1)); this.log = initializerContext.logger.get(); this.spacesService = new SpacesService(); @@ -148,7 +132,6 @@ export class SpacesPlugin } public setup(core: CoreSetup, plugins: PluginsSetup): SpacesPluginSetup { - this.onCloud$.next(plugins.cloud !== undefined && plugins.cloud.isCloudEnabled); const spacesClientSetup = this.spacesClientService.setup({ config$: this.config$ }); core.uiSettings.registerGlobal(getUiSettings()); diff --git a/x-pack/plugins/spaces/server/saved_objects/saved_objects_spaces_extension.test.ts b/x-pack/plugins/spaces/server/saved_objects/saved_objects_spaces_extension.test.ts index a2a4877ac4d9a..6d5c98d2400a0 100644 --- a/x-pack/plugins/spaces/server/saved_objects/saved_objects_spaces_extension.test.ts +++ b/x-pack/plugins/spaces/server/saved_objects/saved_objects_spaces_extension.test.ts @@ -141,3 +141,13 @@ describe('#getSearchableNamespaces', () => { ]); }); }); + +describe('#asScopedToNamespace', () => { + test('returns a extension scoped to the provided namespace', () => { + const { spacesExtension } = setup(); + const rescopedExtension = spacesExtension.asScopedToNamespace('space-a'); + expect(rescopedExtension).toBeInstanceOf(SavedObjectsSpacesExtension); + expect(rescopedExtension).not.toStrictEqual(spacesExtension); + expect(rescopedExtension.getCurrentNamespace(undefined)).toStrictEqual('namespace-for-space-a'); + }); +}); diff --git a/x-pack/plugins/spaces/server/saved_objects/saved_objects_spaces_extension.ts b/x-pack/plugins/spaces/server/saved_objects/saved_objects_spaces_extension.ts index 4520ff5ae3353..3701922d9a776 100644 --- a/x-pack/plugins/spaces/server/saved_objects/saved_objects_spaces_extension.ts +++ b/x-pack/plugins/spaces/server/saved_objects/saved_objects_spaces_extension.ts @@ -52,4 +52,11 @@ export class SavedObjectsSpacesExtension implements ISavedObjectsSpacesExtension ); } } + + asScopedToNamespace(namespace: string) { + return new SavedObjectsSpacesExtension({ + activeSpaceId: namespace, + spacesClient: this.spacesClient, + }); + } } diff --git a/x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx b/x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx index 988afb8d2182b..97b614a5b5785 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx @@ -18,6 +18,7 @@ import { EuiPopover, EuiPopoverFooter, EuiPopoverTitle, + EuiLoadingSpinner, EuiText, useEuiPaddingCSS, useIsWithinBreakpoints, @@ -63,6 +64,7 @@ export const DataViewSelectPopover: React.FunctionComponent { + const [loadingDataViews, setLoadingDataViews] = useState(false); const [dataViewItems, setDataViewsItems] = useState([]); const [dataViewPopoverOpen, setDataViewPopoverOpen] = useState(false); @@ -71,7 +73,7 @@ export const DataViewSelectPopover: React.FunctionComponent void | undefined>(); const allDataViewItems = useMemo( - () => [...dataViewItems, ...metadata.adHocDataViewList.map(toDataViewListItem)], + () => [...(dataViewItems ?? []), ...metadata.adHocDataViewList.map(toDataViewListItem)], [dataViewItems, metadata.adHocDataViewList] ); @@ -87,10 +89,16 @@ export const DataViewSelectPopover: React.FunctionComponent { - const ids = await dataViews.getIds(); - const dataViewsList = await Promise.all(ids.map((id) => dataViews.get(id))); - - setDataViewsItems(dataViewsList.map(toDataViewListItem)); + setLoadingDataViews(true); + try { + // Calling getIds with refresh = true to make sure we don't get stale data + const ids = await dataViews.getIds(true); + const dataViewsList = await Promise.all(ids.map((id) => dataViews.get(id))); + setDataViewsItems(dataViewsList.map(toDataViewListItem)); + } catch (e) { + // Error fetching data views + } + setLoadingDataViews(false); }, [dataViews]); const onAddAdHocDataView = useCallback( @@ -153,8 +161,10 @@ export const DataViewSelectPopover: React.FunctionComponent; } return ( diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_es_query.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_es_query.ts index b42076952b87a..5ee49912586c5 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_es_query.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_es_query.ts @@ -154,6 +154,7 @@ export async function fetchEsQuery({ esResult: searchResult, resultLimit: alertLimit, sourceFieldsParams: params.sourceFields, + termField: params.termField, }), link, index: params.index, diff --git a/x-pack/plugins/stack_connectors/common/crowdstrike/constants.ts b/x-pack/plugins/stack_connectors/common/crowdstrike/constants.ts index c5186edf4a378..a75f379ce471f 100644 --- a/x-pack/plugins/stack_connectors/common/crowdstrike/constants.ts +++ b/x-pack/plugins/stack_connectors/common/crowdstrike/constants.ts @@ -14,4 +14,7 @@ export enum SUB_ACTION { HOST_ACTIONS = 'hostActions', GET_AGENT_ONLINE_STATUS = 'getAgentOnlineStatus', EXECUTE_RTR_COMMAND = 'executeRTRCommand', + EXECUTE_ACTIVE_RESPONDER_RTR = 'batchActiveResponderExecuteRTR', + EXECUTE_ADMIN_RTR = 'batchAdminExecuteRTR', + GET_RTR_CLOUD_SCRIPTS = 'getRTRCloudScripts', } diff --git a/x-pack/plugins/stack_connectors/common/crowdstrike/schema.ts b/x-pack/plugins/stack_connectors/common/crowdstrike/schema.ts index d5e8cd693af98..d5d4154f985e9 100644 --- a/x-pack/plugins/stack_connectors/common/crowdstrike/schema.ts +++ b/x-pack/plugins/stack_connectors/common/crowdstrike/schema.ts @@ -17,6 +17,8 @@ export const CrowdstrikeSecretsSchema = schema.object({ clientSecret: schema.string(), }); +export const CrowdstrikeApiDoNotValidateResponsesSchema = schema.any(); + export const RelaxedCrowdstrikeBaseApiResponseSchema = schema.maybe( schema.object({}, { unknowns: 'allow' }) ); @@ -307,3 +309,46 @@ export const CrowdstrikeInitRTRResponseSchema = schema.object( export const CrowdstrikeInitRTRParamsSchema = schema.object({ endpoint_ids: schema.arrayOf(schema.string()), }); + +export const CrowdstrikeExecuteRTRResponseSchema = schema.object( + { + combined: schema.object( + { + resources: schema.recordOf( + schema.string(), + schema.object( + { + session_id: schema.maybe(schema.string()), + task_id: schema.maybe(schema.string()), + complete: schema.maybe(schema.boolean()), + stdout: schema.maybe(schema.string()), + stderr: schema.maybe(schema.string()), + base_command: schema.maybe(schema.string()), + aid: schema.maybe(schema.string()), + errors: schema.maybe(schema.arrayOf(schema.any())), + query_time: schema.maybe(schema.number()), + offline_queued: schema.maybe(schema.boolean()), + }, + { unknowns: 'allow' } + ) + ), + }, + { unknowns: 'allow' } + ), + meta: schema.object( + { + query_time: schema.maybe(schema.number()), + powered_by: schema.maybe(schema.string()), + trace_id: schema.maybe(schema.string()), + }, + { unknowns: 'allow' } + ), + errors: schema.nullable(schema.arrayOf(schema.any())), + }, + { unknowns: 'allow' } +); + +export type CrowdStrikeExecuteRTRResponse = typeof CrowdstrikeExecuteRTRResponseSchema; + +// TODO: will be part of a next PR +export const CrowdstrikeGetScriptsParamsSchema = schema.any({}); diff --git a/x-pack/plugins/stack_connectors/common/dynamic_config/types.ts b/x-pack/plugins/stack_connectors/common/dynamic_config/types.ts index 40e17a1989075..b5c73958294e1 100644 --- a/x-pack/plugins/stack_connectors/common/dynamic_config/types.ts +++ b/x-pack/plugins/stack_connectors/common/dynamic_config/types.ts @@ -5,15 +5,6 @@ * 2.0. */ -export enum DisplayType { - TEXTBOX = 'textbox', - TEXTAREA = 'textarea', - NUMERIC = 'numeric', - TOGGLE = 'toggle', - DROPDOWN = 'dropdown', - CHECKABLE = 'checkable', -} - export interface SelectOption { label: string; value: string; @@ -28,7 +19,6 @@ export interface Dependency { export enum FieldType { STRING = 'str', INTEGER = 'int', - LIST = 'list', BOOLEAN = 'bool', } @@ -44,21 +34,13 @@ export interface Validation { } export interface ConfigProperties { - category?: string; default_value: string | number | boolean | null; - depends_on: Dependency[]; - display: DisplayType; + description: string | null; label: string; - options?: SelectOption[]; - order?: number | null; - placeholder?: string; required: boolean; sensitive: boolean; - tooltip: string | null; + updatable: boolean; type: FieldType; - ui_restrictions: string[]; - validations: Validation[]; - value: string | number | boolean | null; } interface ConfigEntry extends ConfigProperties { @@ -68,4 +50,5 @@ interface ConfigEntry extends ConfigProperties { export interface ConfigEntryView extends ConfigEntry { isValid: boolean; validationErrors: string[]; + value: string | number | boolean | null; } diff --git a/x-pack/plugins/stack_connectors/common/inference/types.ts b/x-pack/plugins/stack_connectors/common/inference/types.ts index b9561efe24292..d8b846ce19422 100644 --- a/x-pack/plugins/stack_connectors/common/inference/types.ts +++ b/x-pack/plugins/stack_connectors/common/inference/types.ts @@ -40,14 +40,10 @@ export type StreamingResponse = TypeOf; export type FieldsConfiguration = Record; -export interface InferenceTaskType { - task_type: string; - configuration: FieldsConfiguration; -} - export interface InferenceProvider { - provider: string; - task_types: InferenceTaskType[]; + service: string; + name: string; + task_types: string[]; logo?: string; - configuration: FieldsConfiguration; + configurations: FieldsConfiguration; } diff --git a/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts b/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts index 7daf615e01d31..7a20df3ef45a0 100644 --- a/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts +++ b/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts @@ -16,6 +16,8 @@ export const SentinelOneSecretsSchema = schema.object({ token: schema.string(), }); +export const SentinelOneApiDoNotValidateResponsesSchema = schema.any(); + export const SentinelOneBaseApiResponseSchema = schema.maybe( schema.object({}, { unknowns: 'allow' }) ); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/inference/additional_options_fields.tsx b/x-pack/plugins/stack_connectors/public/connector_types/inference/additional_options_fields.tsx index fad8ed2f65978..5862389e6ab80 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/inference/additional_options_fields.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/inference/additional_options_fields.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useMemo, useCallback } from 'react'; +import React, { useMemo } from 'react'; import { css } from '@emotion/react'; import { @@ -18,7 +18,6 @@ import { EuiTextColor, EuiButtonGroup, EuiPanel, - EuiHorizontalRule, EuiButtonEmpty, EuiCopy, EuiButton, @@ -55,7 +54,6 @@ interface AdditionalOptionsConnectorFieldsProps { onTaskTypeOptionsSelect: (taskType: string, provider?: string) => void; selectedTaskType?: string; taskTypeFormFields: ConfigEntryView[]; - taskTypeSchema: ConfigEntryView[]; taskTypeOptions: TaskTypeOption[]; } @@ -65,35 +63,13 @@ export const AdditionalOptionsConnectorFields: React.FC { const xsFontSize = useEuiFontSize('xs').fontSize; const { euiTheme } = useEuiTheme(); - const { setFieldValue, validateFields } = useFormContext(); - - const onSetTaskTypeConfigEntry = useCallback( - async (key: string, value: unknown) => { - if (taskTypeSchema) { - const entry: ConfigEntryView | undefined = taskTypeSchema.find( - (p: ConfigEntryView) => p.key === key - ); - if (entry) { - if (!config.taskTypeConfig) { - config.taskTypeConfig = {}; - } - const newConfig = { ...config.taskTypeConfig }; - newConfig[key] = value; - setFieldValue('config.taskTypeConfig', newConfig); - await validateFields(['config.taskTypeConfig']); - } - } - }, - [config, setFieldValue, taskTypeSchema, validateFields] - ); + const { setFieldValue } = useFormContext(); const taskTypeSettings = useMemo( () => @@ -103,7 +79,7 @@ export const AdditionalOptionsConnectorFields: React.FC @@ -116,7 +92,7 @@ export const AdditionalOptionsConnectorFields: React.FC
@@ -135,18 +111,7 @@ export const AdditionalOptionsConnectorFields: React.FC - } - isInvalid={isInvalid} - error={errorMessage} - > + {isEdit || readOnly ? ( - - ) : null, [ selectedTaskType, - config?.taskType, + config.taskType, xsFontSize, euiTheme.colors, - taskTypeFormFields, - onSetTaskTypeConfigEntry, isEdit, readOnly, taskTypeOptions, @@ -276,7 +231,7 @@ export const AdditionalOptionsConnectorFields: React.FC +

= ({ readOnly, @@ -63,7 +58,6 @@ const InferenceAPIConnectorFields: React.FunctionComponent([]); const [taskTypeOptions, setTaskTypeOptions] = useState([]); const [selectedTaskType, setSelectedTaskType] = useState(DEFAULT_TASK_TYPE); - const [taskTypeFormFields, setTaskTypeFormFields] = useState([]); + const [taskTypeFormFields] = useState([]); const handleProviderClosePopover = useCallback(() => { setProviderPopoverOpen(false); @@ -111,69 +104,39 @@ const InferenceAPIConnectorFields: React.FunctionComponent { + (taskType: string) => { // Get task type settings - const currentProvider = providers?.find((p) => p.provider === (provider ?? config?.provider)); - const currentTaskTypes = currentProvider?.task_types; - const newTaskType = currentTaskTypes?.find((p) => p.task_type === taskType); - setSelectedTaskType(taskType); - // transform the schema - const newTaskTypeSchema = Object.keys(newTaskType?.configuration ?? {}).map((k) => ({ - key: k, - isValid: true, - ...newTaskType?.configuration[k], - })) as ConfigEntryView[]; - setTaskTypeSchema(newTaskTypeSchema); - - const configDefaults = Object.keys(newTaskType?.configuration ?? {}).reduce( - (res: Record, k) => { - if (newTaskType?.configuration[k] && !!newTaskType?.configuration[k].default_value) { - res[k] = newTaskType.configuration[k].default_value; - } else { - res[k] = null; - } - return res; - }, - {} - ); - updateFieldValues({ config: { taskType, - taskTypeConfig: configDefaults, }, }); - generateInferenceEndpointId( - { ...config, taskType, taskTypeConfig: configDefaults }, - setFieldValue - ); + generateInferenceEndpointId({ ...config, taskType }, setFieldValue); }, - [config, providers, setFieldValue, updateFieldValues] + [config, setFieldValue, updateFieldValues] ); const onProviderChange = useCallback( (provider?: string) => { - const newProvider = providers?.find((p) => p.provider === provider); + const newProvider = providers?.find((p) => p.service === provider); // Update task types list available for the selected provider - const providerTaskTypes = (newProvider?.task_types ?? []).map((t) => t.task_type); - setTaskTypeOptions(getTaskTypeOptions(providerTaskTypes)); - if (providerTaskTypes.length > 0) { - onTaskTypeOptionsSelect(providerTaskTypes[0], provider); + setTaskTypeOptions(getTaskTypeOptions(newProvider?.task_types ?? [])); + if (newProvider?.task_types && newProvider?.task_types.length > 0) { + onTaskTypeOptionsSelect(newProvider?.task_types[0]); } // Update connector providerSchema - const newProviderSchema = Object.keys(newProvider?.configuration ?? {}).map((k) => ({ + const newProviderSchema = Object.keys(newProvider?.configurations ?? {}).map((k) => ({ key: k, isValid: true, - ...newProvider?.configuration[k], + ...newProvider?.configurations[k], })) as ConfigEntryView[]; setProviderSchema(newProviderSchema); @@ -181,10 +144,10 @@ const InferenceAPIConnectorFields: React.FunctionComponent = {}; const defaultProviderSecrets: Record = {}; - Object.keys(newProvider?.configuration ?? {}).forEach((k) => { - if (!newProvider?.configuration[k].sensitive) { - if (newProvider?.configuration[k] && !!newProvider?.configuration[k].default_value) { - defaultProviderConfig[k] = newProvider.configuration[k].default_value; + Object.keys(newProvider?.configurations ?? {}).forEach((k) => { + if (!newProvider?.configurations[k].sensitive) { + if (newProvider?.configurations[k] && !!newProvider?.configurations[k].default_value) { + defaultProviderConfig[k] = newProvider.configurations[k].default_value; } else { defaultProviderConfig[k] = null; } @@ -195,7 +158,7 @@ const InferenceAPIConnectorFields: React.FunctionComponent { - const getTaskTypeSchema = (taskTypes: InferenceTaskType[]) => { - const newTaskType = taskTypes.find((p) => p.task_type === config?.taskType); - - // transform the schema - const newTaskTypeSchema = Object.keys(newTaskType?.configuration ?? {}).map((k) => ({ - key: k, - isValid: true, - ...newTaskType?.configuration[k], - })) as ConfigEntryView[]; - - setTaskTypeSchema(newTaskTypeSchema); - }; - if (config?.provider && isEdit) { - const newProvider = providers?.find((p) => p.provider === config.provider); + const newProvider = providers?.find((p) => p.service === config.provider); // Update connector providerSchema - const newProviderSchema = Object.keys(newProvider?.configuration ?? {}).map((k) => ({ + const newProviderSchema = Object.keys(newProvider?.configurations ?? {}).map((k) => ({ key: k, isValid: true, - ...newProvider?.configuration[k], + ...newProvider?.configurations[k], })) as ConfigEntryView[]; setProviderSchema(newProviderSchema); - - getTaskTypeSchema(newProvider?.task_types ?? []); } }, [config?.provider, config?.taskType, http, isEdit, providers]); @@ -250,31 +198,14 @@ const InferenceAPIConnectorFields: React.FunctionComponent (a.order ?? 0) - (b.order ?? 0)); setOptionalProviderFormFields(existingConfiguration.filter((p) => !p.required && !p.sensitive)); setRequiredProviderFormFields(existingConfiguration.filter((p) => p.required || p.sensitive)); }, [config?.providerConfig, providerSchema, secrets]); - useEffect(() => { - // Set values from the task type config to the schema - const existingTaskTypeConfiguration = taskTypeSchema - ? taskTypeSchema.map((item: ConfigEntryView) => { - const itemValue = item; - itemValue.isValid = true; - if (config?.taskTypeConfig) { - itemValue.value = config?.taskTypeConfig[item.key] as any; - } - return itemValue; - }) - : []; - existingTaskTypeConfiguration.sort((a, b) => (a.order ?? 0) - (b.order ?? 0)); - setTaskTypeFormFields(existingTaskTypeConfiguration); - }, [config, taskTypeSchema]); - const getProviderOptions = useCallback(() => { return providers?.map((p) => ({ - label: p.provider, - key: p.provider, + label: p.service, + key: p.service, })) as EuiSelectableOption[]; }, [providers]); @@ -433,7 +364,6 @@ const InferenceAPIConnectorFields: React.FunctionComponent @@ -449,7 +379,6 @@ const InferenceAPIConnectorFields: React.FunctionComponent ) : null} diff --git a/x-pack/plugins/stack_connectors/public/connector_types/inference/helpers.ts b/x-pack/plugins/stack_connectors/public/connector_types/inference/helpers.ts index 8638caa998eff..d3f324b55363a 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/inference/helpers.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/inference/helpers.ts @@ -72,7 +72,7 @@ export const getNonEmptyValidator = ( newSchema.push(field); }); - validationEventHandler(newSchema.sort((a, b) => (a.order ?? 0) - (b.order ?? 0))); + validationEventHandler(newSchema); if (hasErrors) { return { code: 'ERR_FIELD_MISSING', diff --git a/x-pack/plugins/stack_connectors/public/connector_types/inference/hidden_fields.tsx b/x-pack/plugins/stack_connectors/public/connector_types/inference/hidden_fields.tsx index f6df891b4b9c8..33215f6a83689 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/inference/hidden_fields.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/inference/hidden_fields.tsx @@ -57,32 +57,3 @@ export const getProviderConfigHiddenField = ( }} /> ); - -export const getTaskTypeConfigHiddenField = ( - taskTypeSchema: ConfigEntryView[], - setTaskTypeFormFields: React.Dispatch>, - isSubmitting: boolean -) => ( - { - const formFields = [ - ...requiredFormFields, - ...(taskTypeSchema ?? []).filter((f) => !f.required), - ]; - setTaskTypeFormFields(formFields.sort((a, b) => (a.order ?? 0) - (b.order ?? 0))); - }, - isSubmitting - ), - isBlocking: true, - }, - ], - }} - /> -); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_field.tsx b/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_field.tsx index 5560c831c4a61..b6dc0972492bf 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_field.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_field.tsx @@ -13,19 +13,11 @@ import { EuiFieldPassword, EuiSwitch, EuiTextArea, - EuiFlexGroup, - EuiFlexItem, - EuiIcon, EuiFieldNumber, - EuiCheckableCard, - useGeneratedHtmlId, - EuiSpacer, - EuiSuperSelect, - EuiText, } from '@elastic/eui'; import { isEmpty } from 'lodash/fp'; -import { ConfigEntryView, DisplayType } from '../../../../common/dynamic_config/types'; +import { ConfigEntryView, FieldType } from '../../../../common/dynamic_config/types'; import { ensureBooleanType, ensureCorrectTyping, @@ -49,7 +41,7 @@ export const ConfigInputField: React.FC = ({ validateAndSetConfigValue, }) => { // eslint-disable-next-line @typescript-eslint/naming-convention - const { isValid, placeholder, value, default_value, key } = configEntry; + const { isValid, value, default_value, key } = configEntry; const [innerValue, setInnerValue] = useState( !value || value.toString().length === 0 ? default_value : value ); @@ -68,7 +60,6 @@ export const ConfigInputField: React.FC = ({ setInnerValue(event.target.value); validateAndSetConfigValue(event.target.value); }} - placeholder={placeholder} /> ); }; @@ -104,7 +95,7 @@ export const ConfigInputTextArea: React.FC = ({ validateAndSetConfigValue, }) => { // eslint-disable-next-line @typescript-eslint/naming-convention - const { isValid, placeholder, value, default_value, key } = configEntry; + const { isValid, value, default_value, key } = configEntry; const [innerValue, setInnerValue] = useState(value ?? default_value); useEffect(() => { setInnerValue(value ?? default_value); @@ -121,7 +112,6 @@ export const ConfigInputTextArea: React.FC = ({ setInnerValue(event.target.value); validateAndSetConfigValue(event.target.value); }} - placeholder={placeholder} /> ); }; @@ -132,7 +122,7 @@ export const ConfigNumberField: React.FC = ({ validateAndSetConfigValue, }) => { // eslint-disable-next-line @typescript-eslint/naming-convention - const { isValid, placeholder, value, default_value, key } = configEntry; + const { isValid, value, default_value, key } = configEntry; const [innerValue, setInnerValue] = useState(value ?? default_value); useEffect(() => { setInnerValue(!value || value.toString().length === 0 ? default_value : value); @@ -149,43 +139,10 @@ export const ConfigNumberField: React.FC = ({ setInnerValue(newValue); validateAndSetConfigValue(newValue); }} - placeholder={placeholder} /> ); }; -export const ConfigCheckableField: React.FC = ({ - configEntry, - validateAndSetConfigValue, -}) => { - const radioCardId = useGeneratedHtmlId({ prefix: 'radioCard' }); - // eslint-disable-next-line @typescript-eslint/naming-convention - const { value, options, default_value } = configEntry; - const [innerValue, setInnerValue] = useState(value ?? default_value); - useEffect(() => { - setInnerValue(value ?? default_value); - }, [default_value, value]); - return ( - <> - {options?.map((o) => ( - <> - { - setInnerValue(o.value); - validateAndSetConfigValue(o.value); - }} - /> - - - ))} - - ); -}; - export const ConfigSensitiveTextArea: React.FC = ({ isLoading, configEntry, @@ -230,44 +187,6 @@ export const ConfigInputPassword: React.FC = ({ ); }; -export const ConfigSelectField: React.FC = ({ - configEntry, - isLoading, - validateAndSetConfigValue, -}) => { - // eslint-disable-next-line @typescript-eslint/naming-convention - const { isValid, options, value, default_value } = configEntry; - const [innerValue, setInnerValue] = useState(value ?? default_value); - const optionsRes = options?.map((o) => ({ - value: o.value, - inputDisplay: ( - - {o.icon ? ( - - - - ) : null} - - {o.label} - - - ), - })); - return ( - { - setInnerValue(newValue); - validateAndSetConfigValue(newValue); - }} - /> - ); -}; - export const ConnectorConfigurationField: React.FC = ({ configEntry, isLoading, @@ -277,30 +196,10 @@ export const ConnectorConfigurationField: React.FC - ); - - case DisplayType.CHECKABLE: - return ( - - ); + const { key, type, sensitive } = configEntry; - case DisplayType.NUMERIC: + switch (type) { + case FieldType.INTEGER: return ( ); - case DisplayType.TEXTAREA: - const textarea = ( - - ); - - return sensitive ? ( - <> - - - ) : ( - textarea - ); - - case DisplayType.TOGGLE: + case FieldType.BOOLEAN: return ( { return ( {items.map((configEntry) => { - const { - depends_on: dependencies, - key, - display, - isValid, - label, - sensitive, - tooltip, - validationErrors, - required, - } = configEntry; + const { key, isValid, label, sensitive, description, validationErrors, required } = + configEntry; - const helpText = tooltip; + const helpText = description; // toggle and sensitive textarea labels go next to the element, not in the row - const rowLabel = - display === DisplayType.TOGGLE || (display === DisplayType.TEXTAREA && sensitive) ? ( - <> - ) : tooltip ? ( - - -

{label}

-
-
- ) : ( -

{label}

- ); + const rowLabel = description ? ( + + +

{label}

+
+
+ ) : ( +

{label}

+ ); const optionalLabel = !required ? ( @@ -74,31 +60,6 @@ export const ConnectorConfigurationFormItems: React.FC ) : undefined; - if (dependencies?.length > 0) { - return ( - - - - { - setConfigEntry(configEntry.key, value); - }} - /> - - - - ); - } return ( { - setConfigEntry(configEntry.key, value); + setConfigEntry(key, value); }} /> - {configEntry.sensitive ? ( + {sensitive ? ( <> ) : null} diff --git a/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_utils.ts b/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_utils.ts index cce5bc15fa56c..5e78903746aee 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_utils.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_utils.ts @@ -49,7 +49,3 @@ export const ensureIntType = (value: string | number | boolean | null): number | export const ensureBooleanType = (value: string | number | boolean | null): boolean => { return Boolean(value); }; - -export const hasUiRestrictions = (configEntry: Partial) => { - return (configEntry.ui_restrictions ?? []).length > 0; -}; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/openai/constants.tsx b/x-pack/plugins/stack_connectors/public/connector_types/openai/constants.tsx index 5f4238e52af78..a24db86804f95 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/openai/constants.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/openai/constants.tsx @@ -11,23 +11,48 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiLink } from '@elastic/eui'; import { DEFAULT_OPENAI_MODEL, OpenAiProviderType } from '../../../common/openai/constants'; import * as i18n from './translations'; +import { Config } from './types'; export const DEFAULT_URL = 'https://api.openai.com/v1/chat/completions' as const; export const DEFAULT_URL_AZURE = 'https://{your-resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}' as const; -export const DEFAULT_BODY = `{ +const DEFAULT_BODY = `{ "messages": [{ "role":"user", "content":"Hello world" }] }`; -export const DEFAULT_BODY_AZURE = `{ +const DEFAULT_BODY_AZURE = `{ "messages": [{ "role":"user", "content":"Hello world" }] }`; +const DEFAULT_BODY_OTHER = (defaultModel: string) => `{ + "model": "${defaultModel}", + "messages": [{ + "role":"user", + "content":"Hello world" + }] +}`; + +export const getDefaultBody = (config?: Config) => { + if (!config) { + // default to OpenAiProviderType.OpenAi sample data + return DEFAULT_BODY; + } + if (config?.apiProvider === OpenAiProviderType.Other) { + // update sample data if Other (OpenAI Compatible Service) + return config.defaultModel ? DEFAULT_BODY_OTHER(config.defaultModel) : DEFAULT_BODY; + } + if (config?.apiProvider === OpenAiProviderType.AzureAi) { + // update sample data if AzureAi + return DEFAULT_BODY_AZURE; + } + // default to OpenAiProviderType.OpenAi sample data + return DEFAULT_BODY; +}; export const openAiConfig: ConfigFieldSchema[] = [ { diff --git a/x-pack/plugins/stack_connectors/public/connector_types/openai/params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/openai/params.test.tsx index 7539cc6bf6373..c03582ba0b229 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/openai/params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/openai/params.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { fireEvent, render } from '@testing-library/react'; import ParamsFields from './params'; import { OpenAiProviderType, SUB_ACTION } from '../../../common/openai/constants'; -import { DEFAULT_BODY, DEFAULT_BODY_AZURE, DEFAULT_URL } from './constants'; +import { DEFAULT_URL, getDefaultBody } from './constants'; const messageVariables = [ { @@ -73,14 +73,15 @@ describe('Gen AI Params Fields renders', () => { ); expect(editAction).toHaveBeenCalledTimes(2); expect(editAction).toHaveBeenCalledWith('subAction', SUB_ACTION.RUN, 0); + const body = getDefaultBody(actionConnector.config); if (apiProvider === OpenAiProviderType.OpenAi) { - expect(editAction).toHaveBeenCalledWith('subActionParams', { body: DEFAULT_BODY }, 0); + expect(editAction).toHaveBeenCalledWith('subActionParams', { body }, 0); } if (apiProvider === OpenAiProviderType.AzureAi) { - expect(editAction).toHaveBeenCalledWith('subActionParams', { body: DEFAULT_BODY_AZURE }, 0); + expect(editAction).toHaveBeenCalledWith('subActionParams', { body }, 0); } if (apiProvider === OpenAiProviderType.Other) { - expect(editAction).toHaveBeenCalledWith('subActionParams', { body: DEFAULT_BODY }, 0); + expect(editAction).toHaveBeenCalledWith('subActionParams', { body }, 0); } } ); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/openai/params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/openai/params.tsx index ad4398482d2c8..000abfa4872be 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/openai/params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/openai/params.tsx @@ -12,8 +12,8 @@ import { ActionConnectorMode, JsonEditorWithMessageVariables, } from '@kbn/triggers-actions-ui-plugin/public'; -import { OpenAiProviderType, SUB_ACTION } from '../../../common/openai/constants'; -import { DEFAULT_BODY, DEFAULT_BODY_AZURE } from './constants'; +import { SUB_ACTION } from '../../../common/openai/constants'; +import { getDefaultBody } from './constants'; import { OpenAIActionConnector, ActionParams } from './types'; const ParamsFields: React.FunctionComponent> = ({ @@ -41,16 +41,10 @@ const ParamsFields: React.FunctionComponent> = ( useEffect(() => { if (!subActionParams) { - // default to OpenAiProviderType.OpenAi sample data - let sampleBody = DEFAULT_BODY; - - if (typedActionConnector?.config?.apiProvider === OpenAiProviderType.AzureAi) { - // update sample data if AzureAi - sampleBody = DEFAULT_BODY_AZURE; - } + const sampleBody = getDefaultBody(typedActionConnector?.config); editAction('subActionParams', { body: sampleBody }, index); } - }, [typedActionConnector?.config?.apiProvider, editAction, index, subActionParams]); + }, [typedActionConnector?.config, editAction, index, subActionParams]); const editSubActionParams = useCallback( (params: ActionParams['subActionParams']) => { diff --git a/x-pack/plugins/stack_connectors/public/connector_types/openai/types.ts b/x-pack/plugins/stack_connectors/public/connector_types/openai/types.ts index 3ba19c04d13a7..ea37fee0de879 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/openai/types.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/openai/types.ts @@ -18,6 +18,7 @@ export interface ActionParams { export interface Config { apiProvider: OpenAiProviderType; apiUrl: string; + defaultModel?: string; } export interface Secrets { diff --git a/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.test.ts index eec431d8a4dcf..815e22de5259c 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.test.ts @@ -345,70 +345,185 @@ describe('CrowdstrikeConnector', () => { expect(mockedRequest).toHaveBeenCalledTimes(3); }); }); - describe('batchInitRTRSession', () => { + describe('executeRTRCommand', () => { it('should make a POST request to the correct URL with correct data', async () => { - const mockResponse = { data: { batch_id: 'testBatchId' } }; + const mockResponse = { data: obfuscatedRTRResponse }; + mockedRequest.mockResolvedValueOnce({ data: { access_token: 'testToken' } }); - mockedRequest.mockResolvedValueOnce(mockResponse); + mockedRequest.mockResolvedValue(mockResponse); - await connector.batchInitRTRSession( - { endpoint_ids: ['id1', 'id2'] }, + const result = await connector.executeRTRCommand( + { + command: 'runscript -Raw', + endpoint_ids: ['id1', 'id2'], + }, + connectorUsageCollector + ); + + expect(mockedRequest).toHaveBeenNthCalledWith( + 3, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/real-time-response/combined/batch-command/v1', + method: 'post', + data: expect.objectContaining({ + command_string: 'runscript -Raw', + hosts: ['id1', 'id2'], + }), + }), + connectorUsageCollector + ); + + expect(result).toEqual(obfuscatedRTRResponse); + }); + }); + + describe('batchActiveResponderExecuteRTR', () => { + it('should make a POST request to the correct URL with correct data', async () => { + const mockResponse = { data: obfuscatedRTRResponse }; + + mockedRequest.mockResolvedValueOnce({ data: { access_token: 'testToken' } }); + mockedRequest.mockResolvedValue(mockResponse); + + const result = await connector.batchActiveResponderExecuteRTR( + { + command: 'runscript', + endpoint_ids: ['id1', 'id2'], + }, connectorUsageCollector ); expect(mockedRequest).toHaveBeenNthCalledWith( 1, expect.objectContaining({ - headers: { - accept: 'application/json', - 'Content-Type': 'application/x-www-form-urlencoded', - authorization: expect.any(String), - }, + url: 'https://api.crowdstrike.com/oauth2/token', method: 'post', - responseSchema: expect.any(Object), - url: tokenPath, }), connectorUsageCollector ); + expect(mockedRequest).toHaveBeenNthCalledWith( - 2, + 3, expect.objectContaining({ - url: 'https://api.crowdstrike.com/real-time-response/combined/batch-init-session/v1', + url: 'https://api.crowdstrike.com/real-time-response/combined/batch-active-responder-command/v1', method: 'post', - data: { host_ids: ['id1', 'id2'] }, - paramsSerializer: expect.any(Function), - responseSchema: expect.any(Object), }), connectorUsageCollector ); - // @ts-expect-error private static - but I still want to test it - expect(CrowdstrikeConnector.currentBatchId).toBe('testBatchId'); + + expect(result).toEqual(obfuscatedRTRResponse); }); + }); + + describe('batchAdminExecuteRTR', () => { + it('should make a POST request to the correct URL with correct data', async () => { + const mockResponse = { data: obfuscatedRTRResponse }; - it('should handle error when fetching batch init session', async () => { mockedRequest.mockResolvedValueOnce({ data: { access_token: 'testToken' } }); - mockedRequest.mockRejectedValueOnce(new Error('Failed to fetch batch init session')); + mockedRequest.mockResolvedValue(mockResponse); + + const result = await connector.batchAdminExecuteRTR( + { + command: 'runscript', + endpoint_ids: ['id1', 'id2'], + }, + connectorUsageCollector + ); + + expect(mockedRequest).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/oauth2/token', + method: 'post', + }), + connectorUsageCollector + ); + + expect(mockedRequest).toHaveBeenNthCalledWith( + 3, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/real-time-response/combined/batch-admin-command/v1', + method: 'post', + }), + connectorUsageCollector + ); - await expect( - connector.batchInitRTRSession({ endpoint_ids: ['id1', 'id2'] }, connectorUsageCollector) - ).rejects.toThrow('Failed to fetch batch init session'); + expect(result).toEqual(obfuscatedRTRResponse); }); + }); + + describe('getRTRCloudScripts', () => { + it('should make a GET request to the correct URL with correct params', async () => { + const mockResponse = { data: { scripts: [{}] } }; - it('should retry once if token is invalid', async () => { - const mockResponse = { data: { batch_id: 'testBatchId' } }; mockedRequest.mockResolvedValueOnce({ data: { access_token: 'testToken' } }); - mockedRequest.mockRejectedValueOnce({ code: 401 }); - mockedRequest.mockResolvedValueOnce({ data: { access_token: 'newTestToken' } }); mockedRequest.mockResolvedValueOnce(mockResponse); - await connector.batchInitRTRSession( - { endpoint_ids: ['id1', 'id2'] }, + const result = await connector.getRTRCloudScripts( + { ids: ['script1', 'script2'] }, + connectorUsageCollector + ); + + expect(mockedRequest).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/oauth2/token', + method: 'post', + }), connectorUsageCollector ); - expect(mockedRequest).toHaveBeenCalledTimes(4); - // @ts-expect-error private static - but I still want to test it - expect(CrowdstrikeConnector.currentBatchId).toBe('testBatchId'); + expect(mockedRequest).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/real-time-response/entities/scripts/v1', + method: 'GET', + }), + connectorUsageCollector + ); + + expect(result).toEqual({ scripts: [{}] }); }); }); }); + +const obfuscatedRTRResponse = { + combined: { + resources: { + host1: { + session_id: 'abcdef123456', + task_id: 'task123', + complete: true, + stdout: + 'bin \n boot \n dev \n etc \n home \n lib \n lib64 \n media \n mnt \n opt \n proc \n root \n run \n sbin \n srv \n sys \n tmp \n usr \n var \n', + stderr: '', + base_command: 'runscript', + aid: 'aid123', + errors: [{ message: 'Error example', code: 123 }], + query_time: 1234567890, + offline_queued: false, + }, + host2: { + session_id: 'ghijkl789101', + task_id: 'task456', + complete: false, + stdout: + 'bin \n boot \n dev \n etc \n home \n lib \n lib64 \n media \n mnt \n opt \n proc \n root \n run \n sbin \n srv \n sys \n tmp \n usr \n var \n', + stderr: '', + base_command: 'getscripts', + aid: 'aid456', + errors: null, + query_time: 9876543210, + offline_queued: true, + }, + }, + }, + meta: { + query_time: 1234567890, + powered_by: 'CrowdStrike', + trace_id: 'trace-abcdef123456', + }, + errors: [ + { message: 'An example error', code: 500 }, + { message: 'Another error example', code: 404 }, + ], +}; diff --git a/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.ts b/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.ts index bd1f6613d5f04..14b38b414eb3b 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.ts @@ -22,20 +22,24 @@ import type { CrowdstrikeGetTokenResponse, CrowdstrikeGetAgentOnlineStatusResponse, RelaxedCrowdstrikeBaseApiResponse, - CrowdstrikeInitRTRParams, } from '../../../common/crowdstrike/types'; import { CrowdstrikeHostActionsParamsSchema, CrowdstrikeGetAgentsParamsSchema, - CrowdstrikeGetTokenResponseSchema, CrowdstrikeHostActionsResponseSchema, RelaxedCrowdstrikeBaseApiResponseSchema, - CrowdstrikeInitRTRResponseSchema, CrowdstrikeRTRCommandParamsSchema, + CrowdstrikeExecuteRTRResponseSchema, + CrowdstrikeGetScriptsParamsSchema, + CrowdStrikeExecuteRTRResponse, + CrowdstrikeApiDoNotValidateResponsesSchema, + CrowdstrikeGetTokenResponseSchema, } from '../../../common/crowdstrike/schema'; import { SUB_ACTION } from '../../../common/crowdstrike/constants'; import { CrowdstrikeError } from './error'; +const SUPPORTED_RTR_COMMANDS = ['runscript']; + const paramsSerializer = (params: Record) => { return Object.entries(params) .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`) @@ -56,8 +60,6 @@ export class CrowdstrikeConnector extends SubActionConnector< > { private static token: string | null; private static tokenExpiryTimeout: NodeJS.Timeout; - // @ts-expect-error not used at the moment, will be used in a follow up PR - private static currentBatchId: string | undefined; private static base64encodedToken: string; private experimentalFeatures: ExperimentalFeatures; @@ -69,6 +71,10 @@ export class CrowdstrikeConnector extends SubActionConnector< agentStatus: string; batchInitRTRSession: string; batchRefreshRTRSession: string; + batchExecuteRTR: string; + batchActiveResponderExecuteRTR: string; + batchAdminExecuteRTR: string; + getRTRCloudScriptsDetails: string; }; constructor( @@ -84,6 +90,10 @@ export class CrowdstrikeConnector extends SubActionConnector< agentStatus: `${this.config.url}/devices/entities/online-state/v1`, batchInitRTRSession: `${this.config.url}/real-time-response/combined/batch-init-session/v1`, batchRefreshRTRSession: `${this.config.url}/real-time-response/combined/batch-refresh-session/v1`, + batchExecuteRTR: `${this.config.url}/real-time-response/combined/batch-command/v1`, + batchActiveResponderExecuteRTR: `${this.config.url}/real-time-response/combined/batch-active-responder-command/v1`, + batchAdminExecuteRTR: `${this.config.url}/real-time-response/combined/batch-admin-command/v1`, + getRTRCloudScriptsDetails: `${this.config.url}/real-time-response/entities/scripts/v1`, }; if (!CrowdstrikeConnector.base64encodedToken) { @@ -124,6 +134,22 @@ export class CrowdstrikeConnector extends SubActionConnector< method: 'executeRTRCommand', schema: CrowdstrikeRTRCommandParamsSchema, // Define a proper schema for the command }); + this.registerSubAction({ + name: SUB_ACTION.EXECUTE_ACTIVE_RESPONDER_RTR, + method: 'batchActiveResponderExecuteRTR', + schema: CrowdstrikeRTRCommandParamsSchema, // Define a proper schema for the command + }); + this.registerSubAction({ + name: SUB_ACTION.EXECUTE_ADMIN_RTR, + method: 'batchAdminExecuteRTR', + schema: CrowdstrikeRTRCommandParamsSchema, // Define a proper schema for the command + }); + // temporary to fetch scripts and help testing + this.registerSubAction({ + name: SUB_ACTION.GET_RTR_CLOUD_SCRIPTS, + method: 'getRTRCloudScripts', + schema: CrowdstrikeGetScriptsParamsSchema, + }); } } @@ -194,7 +220,7 @@ export class CrowdstrikeConnector extends SubActionConnector< ) as Promise; } - private async getTokenRequest(connectorUsageCollector: ConnectorUsageCollector) { + private getTokenRequest = async (connectorUsageCollector: ConnectorUsageCollector) => { const response = await this.request( { url: this.urls.getToken, @@ -204,7 +230,8 @@ export class CrowdstrikeConnector extends SubActionConnector< 'Content-Type': 'application/x-www-form-urlencoded', authorization: 'Basic ' + CrowdstrikeConnector.base64encodedToken, }, - responseSchema: CrowdstrikeGetTokenResponseSchema, + responseSchema: + CrowdstrikeApiDoNotValidateResponsesSchema as unknown as typeof CrowdstrikeGetTokenResponseSchema, }, connectorUsageCollector ); @@ -219,13 +246,13 @@ export class CrowdstrikeConnector extends SubActionConnector< }, 29 * 60 * 1000); } return token; - } + }; - private async crowdstrikeApiRequest( + private crowdstrikeApiRequest = async ( req: SubActionRequestParams, connectorUsageCollector: ConnectorUsageCollector, retried?: boolean - ): Promise { + ): Promise => { try { if (!CrowdstrikeConnector.token) { CrowdstrikeConnector.token = (await this.getTokenRequest( @@ -240,7 +267,7 @@ export class CrowdstrikeConnector extends SubActionConnector< // where the external system might add/remove/change values in the response that we have no // control over. responseSchema: - RelaxedCrowdstrikeBaseApiResponseSchema as unknown as SubActionRequestParams['responseSchema'], + CrowdstrikeApiDoNotValidateResponsesSchema as unknown as SubActionRequestParams['responseSchema'], headers: { ...req.headers, Authorization: `Bearer ${CrowdstrikeConnector.token}`, @@ -257,39 +284,114 @@ export class CrowdstrikeConnector extends SubActionConnector< } throw new CrowdstrikeError(error.message); } - } + }; - public async batchInitRTRSession( - payload: CrowdstrikeInitRTRParams, + // Helper method to execute RTR commands with different API endpoints + private executeRTRCommandWithUrl = async ( + url: string, + payload: { + command: string; + endpoint_ids: string[]; + overwriteUrl?: 'batchExecuteRTR' | 'batchActiveResponderExecuteRTR' | 'batchAdminExecuteRTR'; + }, connectorUsageCollector: ConnectorUsageCollector - ) { - const response = await this.crowdstrikeApiRequest( + ): Promise => { + // Some commands are only available in specific API endpoints, however there's an additional requirement check for the command's argument + // Eg. runscript command is available with the batchExecuteRTR endpoint, but if it goes with --Raw parameter, it should go to batchAdminExecuteRTR endpoint + // This overwrite value will be coming from kibana response actions api + const csUrl = payload.overwriteUrl ? this.urls[payload.overwriteUrl] : url; + + const batchId = await this.crowdStrikeSessionManager.initializeSession( + { endpoint_ids: payload.endpoint_ids }, + connectorUsageCollector + ); + + const baseCommand = payload.command.split(' ')[0]; + + if (!SUPPORTED_RTR_COMMANDS.includes(baseCommand)) { + throw new CrowdstrikeError('Command not supported'); + } + return await this.crowdstrikeApiRequest( { - url: this.urls.batchInitRTRSession, + url: csUrl, method: 'post', data: { - host_ids: payload.endpoint_ids, + base_command: baseCommand, + command_string: payload.command, + batch_id: batchId, + hosts: payload.endpoint_ids, + persist_all: false, }, paramsSerializer, - responseSchema: CrowdstrikeInitRTRResponseSchema, + responseSchema: + CrowdstrikeExecuteRTRResponseSchema as unknown as SubActionRequestParams['responseSchema'], }, connectorUsageCollector ); + }; + + // Public method for generic RTR command execution + public async executeRTRCommand( + payload: { + command: string; + endpoint_ids: string[]; + overwriteUrl?: 'batchActiveResponderExecuteRTR' | 'batchAdminExecuteRTR'; + }, + connectorUsageCollector: ConnectorUsageCollector + ): Promise { + return await this.executeRTRCommandWithUrl( + this.urls.batchExecuteRTR, + payload, + connectorUsageCollector + ); + } - CrowdstrikeConnector.currentBatchId = response.batch_id; + // Public method for Active Responder RTR command execution + public async batchActiveResponderExecuteRTR( + payload: { + command: string; + endpoint_ids: string[]; + overwriteUrl?: 'batchAdminExecuteRTR'; + }, + connectorUsageCollector: ConnectorUsageCollector + ): Promise { + return await this.executeRTRCommandWithUrl( + this.urls.batchActiveResponderExecuteRTR, + payload, + connectorUsageCollector + ); } - // TODO: WIP - just to have session init logic in place - public async executeRTRCommand( - payload: { command: string; endpoint_ids: string[] }, + // Public method for Admin RTR command execution + public async batchAdminExecuteRTR( + payload: { + command: string; + endpoint_ids: string[]; + }, connectorUsageCollector: ConnectorUsageCollector - ) { - const batchId = await this.crowdStrikeSessionManager.initializeSession( - { endpoint_ids: payload.endpoint_ids }, + ): Promise { + return await this.executeRTRCommandWithUrl( + this.urls.batchAdminExecuteRTR, + payload, connectorUsageCollector ); + } - return Promise.resolve({ batchId }); + // TODO: for now just for testing purposes, will be a part of a following PR + public async getRTRCloudScripts( + payload: CrowdstrikeGetAgentsParams, + connectorUsageCollector: ConnectorUsageCollector + ): Promise { + // @ts-expect-error will be a part of the next PR + return this.crowdstrikeApiRequest( + { + url: this.urls.getRTRCloudScriptsDetails, + method: 'GET', + paramsSerializer, + responseSchema: RelaxedCrowdstrikeBaseApiResponseSchema, + }, + connectorUsageCollector + ); } protected getResponseErrorMessage( diff --git a/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts index 42d946edbc787..4be4a4e25ef15 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts @@ -43,7 +43,7 @@ import { SentinelOneGetRemoteScriptResultsParamsSchema, SentinelOneDownloadRemoteScriptResultsParamsSchema, SentinelOneDownloadRemoteScriptResultsResponseSchema, - SentinelOneBaseApiResponseSchema, + SentinelOneApiDoNotValidateResponsesSchema, } from '../../../common/sentinelone/schema'; import { SUB_ACTION } from '../../../common/sentinelone/constants'; import { @@ -405,7 +405,7 @@ export class SentinelOneConnector extends SubActionConnector< // where the external system might add/remove/change values in the response that we have no // control over. responseSchema: - SentinelOneBaseApiResponseSchema as unknown as SubActionRequestParams['responseSchema'], + SentinelOneApiDoNotValidateResponsesSchema as unknown as SubActionRequestParams['responseSchema'], params: { ...req.params, APIToken: this.secrets.token, diff --git a/x-pack/plugins/stack_connectors/server/routes/get_inference_services.test.ts b/x-pack/plugins/stack_connectors/server/routes/get_inference_services.test.ts index 50596028d80a8..9e1449a37f7ff 100644 --- a/x-pack/plugins/stack_connectors/server/routes/get_inference_services.test.ts +++ b/x-pack/plugins/stack_connectors/server/routes/get_inference_services.test.ts @@ -8,7 +8,7 @@ import { httpServiceMock, httpServerMock } from '@kbn/core/server/mocks'; import { coreMock } from '@kbn/core/server/mocks'; import { getInferenceServicesRoute } from './get_inference_services'; -import { DisplayType, FieldType } from '../../common/dynamic_config/types'; +import { FieldType } from '../../common/dynamic_config/types'; describe('getInferenceServicesRoute', () => { it('returns available service providers', async () => { @@ -17,100 +17,644 @@ describe('getInferenceServicesRoute', () => { const mockResult = [ { - provider: 'openai', - task_types: [ - { - task_type: 'completion', - configuration: { - user: { - display: DisplayType.TEXTBOX, - label: 'User', - order: 1, - required: false, - sensitive: false, - tooltip: 'Specifies the user issuing the request.', - type: FieldType.STRING, - validations: [], - value: '', - ui_restrictions: [], - default_value: null, - depends_on: [], - }, - }, - }, - ], - configuration: { + service: 'cohere', + name: 'Cohere', + task_types: ['text_embedding', 'rerank', 'completion'], + configurations: { api_key: { - display: DisplayType.TEXTBOX, + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'elastic', + name: 'Elastic', + task_types: ['sparse_embedding'], + configurations: { + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'watsonxai', + name: 'IBM Watsonx', + task_types: ['text_embedding'], + configurations: { + project_id: { + default_value: null, + description: '', + label: 'Project ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_version: { + default_value: null, + description: 'The IBM Watsonx API version ID to use.', + label: 'API Version', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + url: { + default_value: null, + description: '', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'azureaistudio', + name: 'Azure AI Studio', + task_types: ['text_embedding', 'completion'], + configurations: { + endpoint_type: { + default_value: null, + description: 'Specifies the type of endpoint that is used in your model deployment.', + label: 'Endpoint Type', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + provider: { + default_value: null, + description: 'The model provider for your deployment.', + label: 'Provider', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + target: { + default_value: null, + description: 'The target URL of your Azure AI Studio model deployment.', + label: 'Target', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'hugging_face', + name: 'Hugging Face', + task_types: ['text_embedding', 'sparse_embedding'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + url: { + default_value: 'https://api.openai.com/v1/embeddings', + description: 'The URL endpoint to use for the requests.', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'amazonbedrock', + name: 'Amazon Bedrock', + task_types: ['text_embedding', 'completion'], + configurations: { + secret_key: { + default_value: null, + description: 'A valid AWS secret key that is paired with the access_key.', + label: 'Secret Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + provider: { + default_value: null, + description: 'The model provider for your deployment.', + label: 'Provider', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + access_key: { + default_value: null, + description: 'A valid AWS access key that has permissions to use Amazon Bedrock.', + label: 'Access Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + model: { + default_value: null, + description: + 'The base model ID or an ARN to a custom model based on a foundational model.', + label: 'Model', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'By default, the amazonbedrock service sets the number of requests allowed per minute to 240.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + region: { + default_value: null, + description: 'The region that your model or ARN is deployed in.', + label: 'Region', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'anthropic', + name: 'Anthropic', + task_types: ['completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'By default, the anthropic service sets the number of requests allowed per minute to 50.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'googleaistudio', + name: 'Google AI Studio', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, label: 'API Key', - order: 3, required: true, sensitive: true, - tooltip: `The OpenAI API authentication key. For more details about generating OpenAI API keys, refer to the https://platform.openai.com/account/api-keys.`, + updatable: true, type: FieldType.STRING, - validations: [], - value: null, - ui_restrictions: [], + }, + 'rate_limit.requests_per_minute': { default_value: null, - depends_on: [], + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, }, model_id: { - display: DisplayType.TEXTBOX, + default_value: null, + description: "ID of the LLM you're using.", label: 'Model ID', - order: 2, required: true, sensitive: false, - tooltip: 'The name of the model to use for the inference task.', + updatable: true, type: FieldType.STRING, - validations: [], - value: null, - ui_restrictions: [], + }, + }, + }, + { + service: 'elasticsearch', + name: 'Elasticsearch', + task_types: ['text_embedding', 'sparse_embedding', 'rerank'], + configurations: { + num_allocations: { + default_value: 1, + description: + 'The total number of allocations this model is assigned across machine learning nodes.', + label: 'Number Allocations', + required: true, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + num_threads: { + default_value: 2, + description: + 'Sets the number of threads used by each model allocation during inference.', + label: 'Number Threads', + required: true, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: '.multilingual-e5-small', + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'openai', + name: 'OpenAI', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { default_value: null, - depends_on: [], + description: + 'The OpenAI API authentication key. For more details about generating OpenAI API keys, refer to the https://platform.openai.com/account/api-keys.', + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, }, organization_id: { - display: DisplayType.TEXTBOX, + default_value: null, + description: 'The unique identifier of your organization.', label: 'Organization ID', - order: 4, required: false, sensitive: false, - tooltip: 'The unique identifier of your organization.', + updatable: true, type: FieldType.STRING, - validations: [], - value: null, - ui_restrictions: [], + }, + 'rate_limit.requests_per_minute': { default_value: null, - depends_on: [], + description: + 'Default number of requests allowed per minute. For text_embedding is 3000. For completion is 500.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, }, url: { - display: DisplayType.TEXTBOX, + default_value: 'https://api.openai.com/v1/chat/completions', + description: + 'The OpenAI API endpoint URL. For more information on the URL, refer to the https://platform.openai.com/docs/api-reference.', label: 'URL', - order: 1, required: true, sensitive: false, - tooltip: - 'The OpenAI API endpoint URL. For more information on the URL, refer to the https://platform.openai.com/docs/api-reference.', + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'azureopenai', + name: 'Azure OpenAI', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + entra_id: { + default_value: null, + description: 'You must provide either an API key or an Entra ID.', + label: 'Entra ID', + required: false, + sensitive: true, + updatable: true, type: FieldType.STRING, - validations: [], - value: null, - ui_restrictions: [], - default_value: 'https://api.openai.com/v1/chat/completions', - depends_on: [], }, 'rate_limit.requests_per_minute': { - display: DisplayType.NUMERIC, - label: 'Rate limit', - order: 5, + default_value: null, + description: + 'The azureopenai service sets a default number of requests allowed per minute depending on the task type.', + label: 'Rate Limit', required: false, sensitive: false, - tooltip: - 'Default number of requests allowed per minute. For text_embedding is 3000. For completion is 500.', + updatable: true, type: FieldType.INTEGER, - validations: [], - value: null, - ui_restrictions: [], + }, + deployment_id: { + default_value: null, + description: 'The deployment name of your deployed models.', + label: 'Deployment ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + resource_name: { + default_value: null, + description: 'The name of your Azure OpenAI resource.', + label: 'Resource Name', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_version: { default_value: null, - depends_on: [], + description: 'The Azure API version ID to use.', + label: 'API Version', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'mistral', + name: 'Mistral', + task_types: ['text_embedding'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + model: { + default_value: null, + description: + 'Refer to the Mistral models documentation for the list of available text embedding models.', + label: 'Model', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'googlevertexai', + name: 'Google Vertex AI', + task_types: ['text_embedding', 'rerank'], + configurations: { + service_account_json: { + default_value: null, + description: "API Key for the provider you're connecting to.", + label: 'Credentials JSON', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + project_id: { + default_value: null, + description: + 'The GCP Project ID which has Vertex AI API(s) enabled. For more information on the URL, refer to the {geminiVertexAIDocs}.', + label: 'GCP Project', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + location: { + default_value: null, + description: + 'Please provide the GCP region where the Vertex AI API(s) is enabled. For more information, refer to the {geminiVertexAIDocs}.', + label: 'GCP Region', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: `ID of the LLM you're using.`, + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'alibabacloud-ai-search', + name: 'AlibabaCloud AI Search', + task_types: ['text_embedding', 'sparse_embedding', 'rerank', 'completion'], + configurations: { + workspace: { + default_value: null, + description: 'The name of the workspace used for the {infer} task.', + label: 'Workspace', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_key: { + default_value: null, + description: `A valid API key for the AlibabaCloud AI Search API.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + service_id: { + default_value: null, + description: 'The name of the model service to use for the {infer} task.', + label: 'Project ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + host: { + default_value: null, + description: + 'The name of the host address used for the {infer} task. You can find the host address at https://opensearch.console.aliyun.com/cn-shanghai/rag/api-key[ the API keys section] of the documentation.', + label: 'Host', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + http_schema: { + default_value: null, + description: '', + label: 'HTTP Schema', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, }, }, }, diff --git a/x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts b/x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts index 1396072834261..3c4a1b3aa1a35 100644 --- a/x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts +++ b/x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts @@ -12,6 +12,7 @@ import { IKibanaResponse, KibanaResponseFactory, } from '@kbn/core/server'; +import { FieldType } from '../../common/dynamic_config/types'; import { InferenceProvider } from '../../common/inference/types'; import { INTERNAL_BASE_STACK_CONNECTORS_API_PATH } from '../../common'; @@ -19,6 +20,13 @@ export const getInferenceServicesRoute = (router: IRouter) => { router.get( { path: `${INTERNAL_BASE_STACK_CONNECTORS_API_PATH}/_inference/_services`, + security: { + authz: { + enabled: false, + reason: + 'This route is opted out of authorization as it relies on ES authorization instead.', + }, + }, options: { access: 'internal', }, @@ -32,15 +40,662 @@ export const getInferenceServicesRoute = (router: IRouter) => { req: KibanaRequest, res: KibanaResponseFactory ): Promise { - const esClient = (await ctx.core).elasticsearch.client.asInternalUser; + // Temporarily hard-coding the response until the real implementation is ready with the updated response - https://github.com/elastic/ml-team/issues/1428 - const response = await esClient.transport.request<{ - endpoints: InferenceProvider[]; - }>({ - method: 'GET', - path: `/_inference/_services`, - }); + // const esClient = (await ctx.core).elasticsearch.client.asInternalUser; + + // // eslint-disable-next-line @typescript-eslint/no-explicit-any + // const response = await esClient.transport.request({ + // method: 'GET', + // path: `/_inference/_services`, + // }); + + const response: InferenceProvider[] = [ + { + service: 'cohere', + name: 'Cohere', + task_types: ['text_embedding', 'rerank', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'elastic', + name: 'Elastic', + task_types: ['sparse_embedding'], + configurations: { + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'watsonxai', + name: 'IBM Watsonx', + task_types: ['text_embedding'], + configurations: { + project_id: { + default_value: null, + description: '', + label: 'Project ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_version: { + default_value: null, + description: 'The IBM Watsonx API version ID to use.', + label: 'API Version', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + url: { + default_value: null, + description: '', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'azureaistudio', + name: 'Azure AI Studio', + task_types: ['text_embedding', 'completion'], + configurations: { + endpoint_type: { + default_value: null, + description: 'Specifies the type of endpoint that is used in your model deployment.', + label: 'Endpoint Type', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + provider: { + default_value: null, + description: 'The model provider for your deployment.', + label: 'Provider', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + target: { + default_value: null, + description: 'The target URL of your Azure AI Studio model deployment.', + label: 'Target', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'hugging_face', + name: 'Hugging Face', + task_types: ['text_embedding', 'sparse_embedding'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + url: { + default_value: 'https://api.openai.com/v1/embeddings', + description: 'The URL endpoint to use for the requests.', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'amazonbedrock', + name: 'Amazon Bedrock', + task_types: ['text_embedding', 'completion'], + configurations: { + secret_key: { + default_value: null, + description: 'A valid AWS secret key that is paired with the access_key.', + label: 'Secret Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + provider: { + default_value: null, + description: 'The model provider for your deployment.', + label: 'Provider', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + access_key: { + default_value: null, + description: 'A valid AWS access key that has permissions to use Amazon Bedrock.', + label: 'Access Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + model: { + default_value: null, + description: + 'The base model ID or an ARN to a custom model based on a foundational model.', + label: 'Model', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'By default, the amazonbedrock service sets the number of requests allowed per minute to 240.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + region: { + default_value: null, + description: 'The region that your model or ARN is deployed in.', + label: 'Region', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'anthropic', + name: 'Anthropic', + task_types: ['completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'By default, the anthropic service sets the number of requests allowed per minute to 50.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'googleaistudio', + name: 'Google AI Studio', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: "ID of the LLM you're using.", + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'elasticsearch', + name: 'Elasticsearch', + task_types: ['text_embedding', 'sparse_embedding', 'rerank'], + configurations: { + num_allocations: { + default_value: 1, + description: + 'The total number of allocations this model is assigned across machine learning nodes.', + label: 'Number Allocations', + required: true, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + num_threads: { + default_value: 2, + description: + 'Sets the number of threads used by each model allocation during inference.', + label: 'Number Threads', + required: true, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: '.multilingual-e5-small', + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'openai', + name: 'OpenAI', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: + 'The OpenAI API authentication key. For more details about generating OpenAI API keys, refer to the https://platform.openai.com/account/api-keys.', + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + organization_id: { + default_value: null, + description: 'The unique identifier of your organization.', + label: 'Organization ID', + required: false, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'Default number of requests allowed per minute. For text_embedding is 3000. For completion is 500.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + url: { + default_value: 'https://api.openai.com/v1/chat/completions', + description: + 'The OpenAI API endpoint URL. For more information on the URL, refer to the https://platform.openai.com/docs/api-reference.', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'azureopenai', + name: 'Azure OpenAI', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + entra_id: { + default_value: null, + description: 'You must provide either an API key or an Entra ID.', + label: 'Entra ID', + required: false, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'The azureopenai service sets a default number of requests allowed per minute depending on the task type.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + deployment_id: { + default_value: null, + description: 'The deployment name of your deployed models.', + label: 'Deployment ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + resource_name: { + default_value: null, + description: 'The name of your Azure OpenAI resource.', + label: 'Resource Name', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_version: { + default_value: null, + description: 'The Azure API version ID to use.', + label: 'API Version', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'mistral', + name: 'Mistral', + task_types: ['text_embedding'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + model: { + default_value: null, + description: + 'Refer to the Mistral models documentation for the list of available text embedding models.', + label: 'Model', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'googlevertexai', + name: 'Google Vertex AI', + task_types: ['text_embedding', 'rerank'], + configurations: { + service_account_json: { + default_value: null, + description: "API Key for the provider you're connecting to.", + label: 'Credentials JSON', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + project_id: { + default_value: null, + description: + 'The GCP Project ID which has Vertex AI API(s) enabled. For more information on the URL, refer to the {geminiVertexAIDocs}.', + label: 'GCP Project', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + location: { + default_value: null, + description: + 'Please provide the GCP region where the Vertex AI API(s) is enabled. For more information, refer to the {geminiVertexAIDocs}.', + label: 'GCP Region', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: `ID of the LLM you're using.`, + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'alibabacloud-ai-search', + name: 'AlibabaCloud AI Search', + task_types: ['text_embedding', 'sparse_embedding', 'rerank', 'completion'], + configurations: { + workspace: { + default_value: null, + description: 'The name of the workspace used for the {infer} task.', + label: 'Workspace', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_key: { + default_value: null, + description: `A valid API key for the AlibabaCloud AI Search API.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + service_id: { + default_value: null, + description: 'The name of the model service to use for the {infer} task.', + label: 'Project ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + host: { + default_value: null, + description: + 'The name of the host address used for the {infer} task. You can find the host address at https://opensearch.console.aliyun.com/cn-shanghai/rag/api-key[ the API keys section] of the documentation.', + label: 'Host', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + http_schema: { + default_value: null, + description: '', + label: 'HTTP Schema', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + ]; + // TODO: replace transformative map to the real type coming from the _inference/_service return res.ok({ body: response, }); diff --git a/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts b/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts index 5e15ca4c32838..2a0d02cb860a8 100644 --- a/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts +++ b/x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts @@ -26,6 +26,13 @@ export const getWellKnownEmailServiceRoute = (router: IRouter) => { router.get( { path: `${INTERNAL_BASE_STACK_CONNECTORS_API_PATH}/_email_config/{service}`, + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization as returning SMTP connection details does not require any.', + }, + }, validate: { params: paramSchema, }, diff --git a/x-pack/plugins/stack_connectors/server/routes/valid_slack_api_channels.ts b/x-pack/plugins/stack_connectors/server/routes/valid_slack_api_channels.ts index 420af8d104891..ed58456d1929f 100644 --- a/x-pack/plugins/stack_connectors/server/routes/valid_slack_api_channels.ts +++ b/x-pack/plugins/stack_connectors/server/routes/valid_slack_api_channels.ts @@ -34,6 +34,13 @@ export const validSlackApiChannelsRoute = ( router.post( { path: `${INTERNAL_BASE_STACK_CONNECTORS_API_PATH}/_slack_api/channels/_valid`, + security: { + authz: { + enabled: false, + reason: + "This route is opted out from authorization as it relies on Slack's own authorization.", + }, + }, validate: { body: bodySchema, }, diff --git a/x-pack/plugins/task_manager/server/config.test.ts b/x-pack/plugins/task_manager/server/config.test.ts index 2193620e0c998..2bb2054f42dae 100644 --- a/x-pack/plugins/task_manager/server/config.test.ts +++ b/x-pack/plugins/task_manager/server/config.test.ts @@ -19,10 +19,6 @@ describe('config validation', () => { "active_nodes_lookback": "30s", "interval": 10000, }, - "ephemeral_tasks": Object { - "enabled": false, - "request_capacity": 10, - }, "event_loop_delay": Object { "monitor": true, "warn_threshold": 5000, @@ -82,10 +78,6 @@ describe('config validation', () => { "active_nodes_lookback": "30s", "interval": 10000, }, - "ephemeral_tasks": Object { - "enabled": false, - "request_capacity": 10, - }, "event_loop_delay": Object { "monitor": true, "warn_threshold": 5000, @@ -143,10 +135,6 @@ describe('config validation', () => { "active_nodes_lookback": "30s", "interval": 10000, }, - "ephemeral_tasks": Object { - "enabled": false, - "request_capacity": 10, - }, "event_loop_delay": Object { "monitor": true, "warn_threshold": 5000, @@ -296,4 +284,15 @@ describe('config validation', () => { `"[discovery.active_nodes_lookback]: active node lookback duration cannot exceed five minutes"` ); }); + + test('should not throw if ephemeral_tasks is defined', () => { + const config: Record = { + ephemeral_tasks: { + enabled: true, + request_capacity: 20, + }, + }; + + expect(() => configSchema.validate(config)).not.toThrow(); + }); }); diff --git a/x-pack/plugins/task_manager/server/config.ts b/x-pack/plugins/task_manager/server/config.ts index 92d7429501cd9..83690775b9104 100644 --- a/x-pack/plugins/task_manager/server/config.ts +++ b/x-pack/plugins/task_manager/server/config.ts @@ -16,7 +16,6 @@ export const DEFAULT_MAX_WORKERS = 10; export const DEFAULT_POLL_INTERVAL = 3000; export const MGET_DEFAULT_POLL_INTERVAL = 500; export const DEFAULT_VERSION_CONFLICT_THRESHOLD = 80; -export const DEFAULT_MAX_EPHEMERAL_REQUEST_CAPACITY = MAX_WORKERS_LIMIT; // Monitoring Constants // =================== @@ -101,16 +100,8 @@ export const configSchema = schema.object( max: MAX_DISCOVERY_INTERVAL_MS, }), }), - ephemeral_tasks: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - /* How many requests can Task Manager buffer before it rejects new requests. */ - request_capacity: schema.number({ - // a nice round contrived number, feel free to change as we learn how it behaves - defaultValue: 10, - min: 1, - max: DEFAULT_MAX_EPHEMERAL_REQUEST_CAPACITY, - }), - }), + /* Allows for old kibana config to start kibana without crashing since ephemeral tasks are deprecated*/ + ephemeral_tasks: schema.maybe(schema.any()), event_loop_delay: eventLoopDelaySchema, kibanas_per_partition: schema.number({ defaultValue: DEFAULT_KIBANAS_PER_PARTITION, diff --git a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.mock.ts b/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.mock.ts deleted file mode 100644 index d107bcdddf502..0000000000000 --- a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.mock.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EphemeralTaskLifecycle } from './ephemeral_task_lifecycle'; -import { TaskLifecycleEvent } from './polling_lifecycle'; -import { of, Observable } from 'rxjs'; - -export const ephemeralTaskLifecycleMock = { - create(opts: { events$?: Observable; getQueuedTasks?: () => number }) { - return { - attemptToRun: jest.fn(), - get events() { - return opts.events$ ?? of(); - }, - get queuedTasks() { - return opts.getQueuedTasks ? opts.getQueuedTasks() : 0; - }, - } as unknown as jest.Mocked; - }, -}; diff --git a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.test.ts b/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.test.ts deleted file mode 100644 index ec45959157770..0000000000000 --- a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.test.ts +++ /dev/null @@ -1,414 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Subject } from 'rxjs'; - -import { TaskLifecycleEvent } from './polling_lifecycle'; -import { createInitialMiddleware } from './lib/middleware'; -import { TaskTypeDictionary } from './task_type_dictionary'; -import { mockLogger } from './test_utils'; -import { asErr, asOk } from './lib/result_type'; -import { FillPoolResult } from './lib/fill_pool'; -import { EphemeralTaskLifecycle, EphemeralTaskLifecycleOpts } from './ephemeral_task_lifecycle'; -import { v4 as uuidv4 } from 'uuid'; -import { asTaskPollingCycleEvent, asTaskRunEvent, TaskPersistence } from './task_events'; -import { TaskRunResult } from './task_running'; -import { TaskPoolRunResult } from './task_pool'; -import { TaskPoolMock } from './task_pool/task_pool.mock'; -import { executionContextServiceMock } from '@kbn/core/server/mocks'; -import { taskManagerMock } from './mocks'; - -jest.mock('./constants', () => ({ - CONCURRENCY_ALLOW_LIST_BY_TASK_TYPE: ['report'], -})); - -const executionContext = executionContextServiceMock.createSetupContract(); - -describe('EphemeralTaskLifecycle', () => { - function initTaskLifecycleParams({ - config, - ...optOverrides - }: { - config?: Partial; - } & Partial> = {}) { - const taskManagerLogger = mockLogger(); - const poolCapacity = jest.fn(); - const pool = TaskPoolMock.create(poolCapacity); - const lifecycleEvent$ = new Subject(); - const elasticsearchAndSOAvailability$ = new Subject(); - const opts: EphemeralTaskLifecycleOpts = { - logger: taskManagerLogger, - definitions: new TaskTypeDictionary(taskManagerLogger), - executionContext, - config: { - discovery: { - active_nodes_lookback: '30s', - interval: 10000, - }, - kibanas_per_partition: 2, - max_attempts: 9, - poll_interval: 6000000, - version_conflict_threshold: 80, - request_capacity: 1000, - allow_reading_invalid_state: false, - monitored_aggregated_stats_refresh_rate: 5000, - monitored_stats_required_freshness: 5000, - monitored_stats_running_average_window: 50, - monitored_stats_health_verbose_log: { - enabled: true, - level: 'debug', - warn_delayed_task_start_in_seconds: 60, - }, - monitored_task_execution_thresholds: { - default: { - error_threshold: 90, - warn_threshold: 80, - }, - custom: {}, - }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, - unsafe: { - exclude_task_types: [], - authenticate_background_task_utilization: true, - }, - event_loop_delay: { - monitor: true, - warn_threshold: 5000, - }, - worker_utilization_running_average_window: 5, - metrics_reset_interval: 3000, - claim_strategy: 'update_by_query', - request_timeouts: { - update_by_query: 1000, - }, - auto_calculate_default_ech_capacity: false, - ...config, - }, - elasticsearchAndSOAvailability$, - pool, - lifecycleEvent: lifecycleEvent$, - middleware: createInitialMiddleware(), - ...optOverrides, - }; - - opts.definitions.registerTaskDefinitions({ - foo: { - title: 'foo', - createTaskRunner: jest.fn(), - }, - }); - - pool.run.mockResolvedValue(Promise.resolve(TaskPoolRunResult.RunningAllClaimedTasks)); - - return { poolCapacity, lifecycleEvent$, pool, elasticsearchAndSOAvailability$, opts }; - } - - describe('constructor', () => { - test('avoids unnecesery subscription if ephemeral tasks are disabled', () => { - const { opts } = initTaskLifecycleParams({ - config: { - ephemeral_tasks: { - enabled: false, - request_capacity: 10, - }, - }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asErr(task)); - }); - - test('queues up tasks when ephemeral tasks are enabled', () => { - const { opts } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asOk(task)); - }); - - test('rejects tasks when ephemeral tasks are enabled and queue is full', () => { - const { opts } = initTaskLifecycleParams({ - config: { ephemeral_tasks: { enabled: true, request_capacity: 2 } }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asOk(task)); - const task2 = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(task2)).toMatchObject(asOk(task2)); - - const rejectedTask = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(rejectedTask)).toMatchObject(asErr(rejectedTask)); - }); - - test('pulls tasks off queue when a polling cycle completes', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask({ id: `my-phemeral-task` }); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asOk(task)); - - poolCapacity.mockReturnValue({ - availableCapacity: 10, - }); - - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(1); - expect(`${taskRunners[0]}`).toMatchInlineSnapshot(`"foo \\"my-phemeral-task\\" (Ephemeral)"`); - }); - - test('pulls tasks off queue when a task run completes', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask({ id: `my-phemeral-task` }); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asOk(task)); - - poolCapacity.mockReturnValue({ - availableCapacity: 10, - }); - - lifecycleEvent$.next( - asTaskRunEvent( - uuidv4(), - asOk({ - task: taskManagerMock.createTask(), - result: TaskRunResult.Success, - persistence: TaskPersistence.Ephemeral, - isExpired: false, - }) - ) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(1); - expect(`${taskRunners[0]}`).toMatchInlineSnapshot(`"foo \\"my-phemeral-task\\" (Ephemeral)"`); - }); - - test('pulls as many tasks off queue as it has capacity for', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const tasks = [ - taskManagerMock.createTask(), - taskManagerMock.createTask(), - taskManagerMock.createTask(), - ]; - expect(ephemeralTaskLifecycle.attemptToRun(tasks[0])).toMatchObject(asOk(tasks[0])); - expect(ephemeralTaskLifecycle.attemptToRun(tasks[1])).toMatchObject(asOk(tasks[1])); - expect(ephemeralTaskLifecycle.attemptToRun(tasks[2])).toMatchObject(asOk(tasks[2])); - - poolCapacity.mockReturnValue({ - availableCapacity: 2, - }); - - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(2); - expect(`${taskRunners[0]}`).toEqual(`foo "${tasks[0].id}" (Ephemeral)`); - expect(`${taskRunners[1]}`).toEqual(`foo "${tasks[1].id}" (Ephemeral)`); - }); - - test('pulls only as many tasks of the same type as is allowed by maxConcurrency', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - opts.definitions.registerTaskDefinitions({ - report: { - title: 'report', - maxConcurrency: 1, - createTaskRunner: jest.fn(), - }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const firstLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - const secondLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - // both are queued - expect(ephemeralTaskLifecycle.attemptToRun(firstLimitedTask)).toMatchObject( - asOk(firstLimitedTask) - ); - expect(ephemeralTaskLifecycle.attemptToRun(secondLimitedTask)).toMatchObject( - asOk(secondLimitedTask) - ); - - // pool has capacity for both - poolCapacity.mockReturnValue({ - availableCapacity: 10, - }); - pool.getUsedCapacityByType.mockReturnValue(0); - - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(1); - expect(`${taskRunners[0]}`).toEqual(`report "${firstLimitedTask.id}" (Ephemeral)`); - }); - - test('when pulling tasks from the queue, it takes into account the maxConcurrency of tasks that are already in the pool', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - opts.definitions.registerTaskDefinitions({ - report: { - title: 'report', - maxConcurrency: 1, - createTaskRunner: jest.fn(), - }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const firstLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - const secondLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - // both are queued - expect(ephemeralTaskLifecycle.attemptToRun(firstLimitedTask)).toMatchObject( - asOk(firstLimitedTask) - ); - expect(ephemeralTaskLifecycle.attemptToRun(secondLimitedTask)).toMatchObject( - asOk(secondLimitedTask) - ); - - // pool has capacity in general - poolCapacity.mockReturnValue({ - availableCapacity: 2, - }); - // but when we ask how many it has occupied by type - wee always have one worker already occupied by that type - pool.getUsedCapacityByType.mockReturnValue(1); - - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(0); - - // now we release the worker in the pool and cause another cycle in the epheemral queue - pool.getUsedCapacityByType.mockReturnValue(0); - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(1); - expect(`${taskRunners[0]}`).toEqual(`report "${firstLimitedTask.id}" (Ephemeral)`); - }); - }); - - test('pulls tasks with both maxConcurrency and unlimited concurrency', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - opts.definitions.registerTaskDefinitions({ - report: { - title: 'report', - maxConcurrency: 1, - createTaskRunner: jest.fn(), - }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const fooTasks = [ - taskManagerMock.createTask(), - taskManagerMock.createTask(), - taskManagerMock.createTask(), - ]; - expect(ephemeralTaskLifecycle.attemptToRun(fooTasks[0])).toMatchObject(asOk(fooTasks[0])); - - const firstLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - expect(ephemeralTaskLifecycle.attemptToRun(firstLimitedTask)).toMatchObject( - asOk(firstLimitedTask) - ); - - expect(ephemeralTaskLifecycle.attemptToRun(fooTasks[1])).toMatchObject(asOk(fooTasks[1])); - - const secondLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - expect(ephemeralTaskLifecycle.attemptToRun(secondLimitedTask)).toMatchObject( - asOk(secondLimitedTask) - ); - - expect(ephemeralTaskLifecycle.attemptToRun(fooTasks[2])).toMatchObject(asOk(fooTasks[2])); - - // pool has capacity for all - poolCapacity.mockReturnValue({ - availableCapacity: 10, - }); - pool.getUsedCapacityByType.mockReturnValue(0); - - lifecycleEvent$.next(asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed }))); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(4); - const asStrings = taskRunners.map((taskRunner) => `${taskRunner}`); - expect(asStrings).toContain(`foo "${fooTasks[0].id}" (Ephemeral)`); - expect(asStrings).toContain(`report "${firstLimitedTask.id}" (Ephemeral)`); - expect(asStrings).toContain(`foo "${fooTasks[1].id}" (Ephemeral)`); - expect(asStrings).toContain(`foo "${fooTasks[2].id}" (Ephemeral)`); - }); - - test('properly removes from the queue after pulled', () => { - const { poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const tasks = [ - taskManagerMock.createTask(), - taskManagerMock.createTask(), - taskManagerMock.createTask(), - ]; - expect(ephemeralTaskLifecycle.attemptToRun(tasks[0])).toMatchObject(asOk(tasks[0])); - expect(ephemeralTaskLifecycle.attemptToRun(tasks[1])).toMatchObject(asOk(tasks[1])); - expect(ephemeralTaskLifecycle.attemptToRun(tasks[2])).toMatchObject(asOk(tasks[2])); - - expect(ephemeralTaskLifecycle.queuedTasks).toBe(3); - poolCapacity.mockReturnValue({ - availableCapacity: 1, - }); - lifecycleEvent$.next(asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed }))); - expect(ephemeralTaskLifecycle.queuedTasks).toBe(2); - - poolCapacity.mockReturnValue({ - availableCapacity: 1, - }); - lifecycleEvent$.next(asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed }))); - expect(ephemeralTaskLifecycle.queuedTasks).toBe(1); - - poolCapacity.mockReturnValue({ - availableCapacity: 1, - }); - lifecycleEvent$.next(asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed }))); - expect(ephemeralTaskLifecycle.queuedTasks).toBe(0); - }); -}); diff --git a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.ts b/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.ts deleted file mode 100644 index c7ee267b848e5..0000000000000 --- a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.ts +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Subject, Observable, Subscription } from 'rxjs'; -import { filter } from 'rxjs'; -import { Logger, ExecutionContextStart } from '@kbn/core/server'; - -import { Result, asErr, asOk } from './lib/result_type'; -import { TaskManagerConfig } from './config'; - -import { asTaskManagerStatEvent, isTaskRunEvent, isTaskPollingCycleEvent } from './task_events'; -import { Middleware } from './lib/middleware'; -import { EphemeralTaskInstance } from './task'; -import { TaskTypeDictionary } from './task_type_dictionary'; -import { TaskLifecycleEvent } from './polling_lifecycle'; -import { EphemeralTaskManagerRunner } from './task_running/ephemeral_task_runner'; -import { TaskPool } from './task_pool'; - -export interface EphemeralTaskLifecycleOpts { - logger: Logger; - definitions: TaskTypeDictionary; - config: TaskManagerConfig; - middleware: Middleware; - elasticsearchAndSOAvailability$: Observable; - pool: TaskPool; - lifecycleEvent: Observable; - executionContext: ExecutionContextStart; -} - -export type EphemeralTaskInstanceRequest = Omit; - -export class EphemeralTaskLifecycle { - private definitions: TaskTypeDictionary; - private pool: TaskPool; - private lifecycleEvent: Observable; - // all task related events (task claimed, task marked as running, etc.) are emitted through events$ - private events$ = new Subject(); - private ephemeralTaskQueue: Array<{ - task: EphemeralTaskInstanceRequest; - enqueuedAt: number; - }> = []; - private logger: Logger; - private config: TaskManagerConfig; - private middleware: Middleware; - private lifecycleSubscription: Subscription = Subscription.EMPTY; - private readonly executionContext: ExecutionContextStart; - - constructor({ - logger, - middleware, - definitions, - pool, - lifecycleEvent, - config, - executionContext, - }: EphemeralTaskLifecycleOpts) { - this.logger = logger; - this.middleware = middleware; - this.definitions = definitions; - this.pool = pool; - this.lifecycleEvent = lifecycleEvent; - this.config = config; - this.executionContext = executionContext; - - if (this.enabled) { - this.lifecycleSubscription = this.lifecycleEvent - .pipe( - filter((e) => { - const hasPollingCycleCompleted = isTaskPollingCycleEvent(e); - if (hasPollingCycleCompleted) { - this.emitEvent( - asTaskManagerStatEvent('queuedEphemeralTasks', asOk(this.queuedTasks)) - ); - } - return ( - // when a polling cycle or a task run have just completed - (hasPollingCycleCompleted || isTaskRunEvent(e)) && - // we want to know when the queue has ephemeral task run requests - this.queuedTasks > 0 && - this.getCapacity() > 0 - ); - }) - ) - .subscribe((e) => { - let overallCapacity = this.getCapacity(); - const capacityByType = new Map(); - const tasksWithinCapacity = [...this.ephemeralTaskQueue] - .filter(({ task }) => { - if (overallCapacity > 0) { - if (!capacityByType.has(task.taskType)) { - capacityByType.set(task.taskType, this.getCapacity(task.taskType)); - } - if (capacityByType.get(task.taskType)! > 0) { - overallCapacity--; - capacityByType.set(task.taskType, capacityByType.get(task.taskType)! - 1); - return true; - } - } - }) - .map((ephemeralTask) => { - const index = this.ephemeralTaskQueue.indexOf(ephemeralTask); - if (index >= 0) { - this.ephemeralTaskQueue.splice(index, 1); - } - this.emitEvent( - asTaskManagerStatEvent( - 'ephemeralTaskDelay', - asOk(Date.now() - ephemeralTask.enqueuedAt) - ) - ); - return this.createTaskRunnerForTask(ephemeralTask.task); - }); - - if (tasksWithinCapacity.length) { - this.pool - .run(tasksWithinCapacity) - .then((successTaskPoolRunResult) => { - this.logger.debug( - `Successful ephemeral task lifecycle resulted in: ${successTaskPoolRunResult}` - ); - }) - .catch((error) => { - this.logger.debug(`Failed ephemeral task lifecycle resulted in: ${error}`); - }); - } - }); - } - } - - public get enabled(): boolean { - return this.config.ephemeral_tasks.enabled; - } - - public get events(): Observable { - return this.events$; - } - - private getCapacity = (taskType?: string) => - taskType && this.definitions.get(taskType)?.maxConcurrency - ? Math.max( - Math.min( - this.pool.availableCapacity(), - this.definitions.get(taskType)!.maxConcurrency! - - this.pool.getUsedCapacityByType(taskType) - ), - 0 - ) - : this.pool.availableCapacity(); - - private emitEvent = (event: TaskLifecycleEvent) => { - this.events$.next(event); - }; - - public attemptToRun(task: EphemeralTaskInstanceRequest) { - if (this.lifecycleSubscription.closed) { - return asErr(task); - } - return pushIntoSetWithTimestamp( - this.ephemeralTaskQueue, - this.config.ephemeral_tasks.request_capacity, - task - ); - } - - public get queuedTasks() { - return this.ephemeralTaskQueue.length; - } - - private createTaskRunnerForTask = ( - instance: EphemeralTaskInstanceRequest - ): EphemeralTaskManagerRunner => { - return new EphemeralTaskManagerRunner({ - logger: this.logger, - instance: { - ...instance, - startedAt: new Date(), - }, - definitions: this.definitions, - beforeRun: this.middleware.beforeRun, - beforeMarkRunning: this.middleware.beforeMarkRunning, - onTaskEvent: this.emitEvent, - executionContext: this.executionContext, - }); - }; -} - -/** - * Pushes values into a bounded set - * @param set A Set of generic type T - * @param maxCapacity How many values are we allowed to push into the set - * @param value A value T to push into the set if it is there - */ -function pushIntoSetWithTimestamp( - set: Array<{ - task: EphemeralTaskInstanceRequest; - enqueuedAt: number; - }>, - maxCapacity: number, - task: EphemeralTaskInstanceRequest -): Result { - if (set.length >= maxCapacity) { - return asErr(task); - } - set.push({ task, enqueuedAt: Date.now() }); - return asOk(task); -} diff --git a/x-pack/plugins/task_manager/server/index.ts b/x-pack/plugins/task_manager/server/index.ts index f2ad559f02b9c..8ae352e92b14a 100644 --- a/x-pack/plugins/task_manager/server/index.ts +++ b/x-pack/plugins/task_manager/server/index.ts @@ -17,7 +17,6 @@ export const plugin = async (initContext: PluginInitializerContext) => { export type { TaskInstance, ConcreteTaskInstance, - EphemeralTask, TaskRunCreatorFunction, RunContext, IntervalSchedule, @@ -32,7 +31,6 @@ export { isUnrecoverableError, throwUnrecoverableError, throwRetryableError, - isEphemeralTaskRejectedDueToCapacityError, createTaskRunError, TaskErrorSource, } from './task_running'; @@ -57,18 +55,14 @@ export const config: PluginConfigDescriptor = { schema: configSchema, deprecations: ({ deprecate }) => { return [ - deprecate('ephemeral_tasks.enabled', 'a future version', { - level: 'warning', - message: `Configuring "xpack.task_manager.ephemeral_tasks.enabled" is deprecated and will be removed in a future version. Remove this setting to increase task execution resiliency.`, - }), - deprecate('ephemeral_tasks.request_capacity', 'a future version', { - level: 'warning', - message: `Configuring "xpack.task_manager.ephemeral_tasks.request_capacity" is deprecated and will be removed in a future version. Remove this setting to increase task execution resiliency.`, - }), deprecate('max_workers', 'a future version', { level: 'warning', message: `Configuring "xpack.task_manager.max_workers" is deprecated and will be removed in a future version. Remove this setting and use "xpack.task_manager.capacity" instead.`, }), + deprecate('claim_strategy', 'a future version', { + level: 'warning', + message: `Configuring "xpack.task_manager.claim_strategy" is deprecated and will be removed in a future version. This setting should be removed.`, + }), (settings, fromPath, addDeprecation) => { const taskManager = get(settings, fromPath); if (taskManager?.index) { diff --git a/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_cost_check.test.ts.snap b/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_cost_check.test.ts.snap index 754d9f0c66b4b..1e3fa4cbf8645 100644 --- a/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_cost_check.test.ts.snap +++ b/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_cost_check.test.ts.snap @@ -4,95 +4,95 @@ exports[`Task cost checks detects tasks with cost definitions 1`] = ` Array [ Object { "cost": 1, - "taskType": "actions:.email", + "taskType": "actions:.bedrock", }, Object { "cost": 1, - "taskType": "actions:.index", + "taskType": "actions:.cases", }, Object { "cost": 1, - "taskType": "actions:.pagerduty", + "taskType": "actions:.cases-webhook", }, Object { "cost": 1, - "taskType": "actions:.swimlane", + "taskType": "actions:.crowdstrike", }, Object { "cost": 1, - "taskType": "actions:.server-log", + "taskType": "actions:.d3security", }, Object { "cost": 1, - "taskType": "actions:.slack", + "taskType": "actions:.email", }, Object { "cost": 1, - "taskType": "actions:.slack_api", + "taskType": "actions:.gemini", }, Object { "cost": 1, - "taskType": "actions:.webhook", + "taskType": "actions:.gen-ai", }, Object { "cost": 1, - "taskType": "actions:.cases-webhook", + "taskType": "actions:.index", }, Object { "cost": 1, - "taskType": "actions:.xmatters", + "taskType": "actions:.jira", }, Object { "cost": 1, - "taskType": "actions:.servicenow", + "taskType": "actions:.observability-ai-assistant", }, Object { "cost": 1, - "taskType": "actions:.servicenow-sir", + "taskType": "actions:.opsgenie", }, Object { "cost": 1, - "taskType": "actions:.servicenow-itom", + "taskType": "actions:.pagerduty", }, Object { "cost": 1, - "taskType": "actions:.jira", + "taskType": "actions:.resilient", }, Object { "cost": 1, - "taskType": "actions:.teams", + "taskType": "actions:.sentinelone", }, Object { "cost": 1, - "taskType": "actions:.torq", + "taskType": "actions:.server-log", }, Object { "cost": 1, - "taskType": "actions:.opsgenie", + "taskType": "actions:.servicenow", }, Object { "cost": 1, - "taskType": "actions:.tines", + "taskType": "actions:.servicenow-itom", }, Object { "cost": 1, - "taskType": "actions:.gen-ai", + "taskType": "actions:.servicenow-sir", }, Object { "cost": 1, - "taskType": "actions:.bedrock", + "taskType": "actions:.slack", }, Object { "cost": 1, - "taskType": "actions:.gemini", + "taskType": "actions:.slack_api", }, Object { "cost": 1, - "taskType": "actions:.d3security", + "taskType": "actions:.swimlane", }, Object { "cost": 1, - "taskType": "actions:.resilient", + "taskType": "actions:.teams", }, Object { "cost": 1, @@ -100,19 +100,19 @@ Array [ }, Object { "cost": 1, - "taskType": "actions:.sentinelone", + "taskType": "actions:.tines", }, Object { "cost": 1, - "taskType": "actions:.crowdstrike", + "taskType": "actions:.torq", }, Object { "cost": 1, - "taskType": "actions:.cases", + "taskType": "actions:.webhook", }, Object { "cost": 1, - "taskType": "actions:.observability-ai-assistant", + "taskType": "actions:.xmatters", }, Object { "cost": 10, diff --git a/x-pack/plugins/task_manager/server/integration_tests/managed_configuration.test.ts b/x-pack/plugins/task_manager/server/integration_tests/managed_configuration.test.ts index d048cc4063fa2..2af8c72190c5a 100644 --- a/x-pack/plugins/task_manager/server/integration_tests/managed_configuration.test.ts +++ b/x-pack/plugins/task_manager/server/integration_tests/managed_configuration.test.ts @@ -70,10 +70,6 @@ describe('managed configuration', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, @@ -220,10 +216,6 @@ describe('managed configuration', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, @@ -346,10 +338,6 @@ describe('managed configuration', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, diff --git a/x-pack/plugins/task_manager/server/integration_tests/task_cost_check.test.ts b/x-pack/plugins/task_manager/server/integration_tests/task_cost_check.test.ts index 96678f714ac69..df11792b2c4ad 100644 --- a/x-pack/plugins/task_manager/server/integration_tests/task_cost_check.test.ts +++ b/x-pack/plugins/task_manager/server/integration_tests/task_cost_check.test.ts @@ -12,6 +12,7 @@ import { import { TaskCost, TaskDefinition } from '../task'; import { setupTestServers } from './lib'; import { TaskTypeDictionary } from '../task_type_dictionary'; +import { sortBy } from 'lodash'; jest.mock('../task_type_dictionary', () => { const actual = jest.requireActual('../task_type_dictionary'); @@ -50,14 +51,17 @@ describe('Task cost checks', () => { it('detects tasks with cost definitions', async () => { const taskTypes = taskTypeDictionary.getAllDefinitions(); - const taskTypesWithCost = taskTypes - .map((taskType: TaskDefinition) => - !!taskType.cost ? { taskType: taskType.type, cost: taskType.cost } : null - ) - .filter( - (tt: { taskType: string; cost: TaskCost } | null) => - null != tt && tt.cost !== TaskCost.Normal - ); + const taskTypesWithCost = sortBy( + taskTypes + .map((taskType: TaskDefinition) => + !!taskType.cost ? { taskType: taskType.type, cost: taskType.cost } : null + ) + .filter( + (tt: { taskType: string; cost: TaskCost } | null) => + null != tt && tt.cost !== TaskCost.Normal + ), + 'taskType' + ); expect(taskTypesWithCost).toMatchSnapshot(); }); }); diff --git a/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts b/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts index b973a5c1cd5e6..28f083e68b822 100644 --- a/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts +++ b/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts @@ -42,10 +42,6 @@ const config = { }, custom: {}, }, - ephemeral_tasks: { - enabled: false, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, @@ -195,7 +191,6 @@ const getStatsWithTimestamp = ({ persistence: { recurring: 95, non_recurring: 5, - ephemeral: 0, }, result_frequency_percent_as_number: { taskType1: { diff --git a/x-pack/plugins/task_manager/server/lib/log_health_metrics.test.ts b/x-pack/plugins/task_manager/server/lib/log_health_metrics.test.ts index 7df06865d30ed..739d9638fa421 100644 --- a/x-pack/plugins/task_manager/server/lib/log_health_metrics.test.ts +++ b/x-pack/plugins/task_manager/server/lib/log_health_metrics.test.ts @@ -507,7 +507,6 @@ function getMockMonitoredHealth(overrides = {}): MonitoredHealth { persistence: { [TaskPersistence.Recurring]: 10, [TaskPersistence.NonRecurring]: 10, - [TaskPersistence.Ephemeral]: 10, }, result_frequency_percent_as_number: {}, }, diff --git a/x-pack/plugins/task_manager/server/metrics/create_aggregator.test.ts b/x-pack/plugins/task_manager/server/metrics/create_aggregator.test.ts index e56d57e170558..27d41a2c9f3fe 100644 --- a/x-pack/plugins/task_manager/server/metrics/create_aggregator.test.ts +++ b/x-pack/plugins/task_manager/server/metrics/create_aggregator.test.ts @@ -41,10 +41,6 @@ const config: TaskManagerConfig = { }, kibanas_per_partition: 2, allow_reading_invalid_state: false, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, event_loop_delay: { monitor: true, warn_threshold: 5000, diff --git a/x-pack/plugins/task_manager/server/mocks.ts b/x-pack/plugins/task_manager/server/mocks.ts index 71638bc883681..69d0d40121f1c 100644 --- a/x-pack/plugins/task_manager/server/mocks.ts +++ b/x-pack/plugins/task_manager/server/mocks.ts @@ -27,10 +27,8 @@ const createStartMock = () => { bulkRemove: jest.fn(), schedule: jest.fn(), runSoon: jest.fn(), - ephemeralRunNow: jest.fn(), ensureScheduled: jest.fn(), removeIfExists: jest.fn().mockResolvedValue(Promise.resolve()), // it's a promise and there are some places where it's followed by `.catch()` - supportsEphemeralTasks: jest.fn(), bulkUpdateSchedules: jest.fn(), bulkSchedule: jest.fn(), bulkDisable: jest.fn(), diff --git a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts index f5b3912eabd3b..8e5df015b6c45 100644 --- a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts +++ b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts @@ -35,12 +35,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -56,7 +50,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -92,12 +85,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 2400, - p90: 2500, - p95: 3200, - p99: 3500, - }, non_recurring: { p50: 1400, p90: 1500, @@ -113,7 +100,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -153,7 +139,6 @@ describe('estimateCapacity', () => { duration_by_persistence: {}, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -189,12 +174,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -210,7 +189,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -247,12 +225,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -268,7 +240,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -304,12 +275,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -325,7 +290,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -374,12 +338,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -394,8 +352,6 @@ describe('estimateCapacity', () => { }, }, persistence: { - // 50% of tasks are non-recurring/ephemeral executions in the system in recent history - ephemeral: 25, non_recurring: 25, recurring: 50, }, @@ -418,7 +374,7 @@ describe('estimateCapacity', () => { }); }); - test('estimates the min required kibana instances when there is sufficient capacity for recurring but not for non-recurring/ephemeral', async () => { + test('estimates the min required kibana instances when there is sufficient capacity for recurring but not for non-recurring', async () => { const provisionedKibanaInstances = 2; const recurringTasksPerMinute = 251; // 50% for non-recurring/epehemral + half of recurring task workload @@ -456,12 +412,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -476,8 +426,6 @@ describe('estimateCapacity', () => { }, }, persistence: { - // 50% of tasks are non-recurring/ephemeral executions in the system in recent history - ephemeral: 25, non_recurring: 25, recurring: 50, }, @@ -541,12 +489,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -562,7 +504,6 @@ describe('estimateCapacity', () => { }, // 20% average of non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 20, recurring: 80, }, @@ -607,12 +548,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -628,7 +563,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 20, recurring: 80, }, @@ -673,12 +607,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -694,7 +622,6 @@ describe('estimateCapacity', () => { }, // 20% average of non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 20, recurring: 80, }, @@ -739,12 +666,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -761,7 +682,6 @@ describe('estimateCapacity', () => { persistence: { recurring: 0, non_recurring: 70, - ephemeral: 30, }, result_frequency_percent_as_number: {}, }, @@ -776,7 +696,7 @@ describe('estimateCapacity', () => { observed: { observed_kibana_instances: 1, avg_recurring_required_throughput_per_minute: 29, - // we obesrve 100% capacity on non-recurring/ephemeral tasks, which is 200tpm + // we obesrve 100% capacity on non-recurring tasks, which is 200tpm // and add to that the 29tpm for recurring tasks avg_required_throughput_per_minute_per_kibana: 229, }, @@ -816,12 +736,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -838,7 +752,6 @@ describe('estimateCapacity', () => { persistence: { recurring: 0, non_recurring: 70, - ephemeral: 30, }, result_frequency_percent_as_number: {}, }, @@ -853,12 +766,12 @@ describe('estimateCapacity', () => { observed: { observed_kibana_instances: 1, avg_recurring_required_throughput_per_minute: 210, - // we obesrve 100% capacity on non-recurring/ephemeral tasks, which is 200tpm + // we obesrve 100% capacity on non-recurring tasks, which is 200tpm // and add to that the 210tpm for recurring tasks avg_required_throughput_per_minute_per_kibana: 410, }, proposed: { - // we propose provisioning 3 instances for recurring + non-recurring/ephemeral + // we propose provisioning 3 instances for recurring + non-recurring provisioned_kibana: 3, // but need at least 2 for recurring min_required_kibana: 2, @@ -890,12 +803,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -911,7 +818,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -935,30 +841,6 @@ function mockStats( runtime: Partial['runtime']['value']> = {} ): CapacityEstimationParams { return { - ephemeral: { - status: HealthStatus.OK, - timestamp: new Date().toISOString(), - value: { - load: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - executionsPerCycle: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - queuedTasks: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - }, - }, configuration: { status: HealthStatus.OK, timestamp: new Date().toISOString(), @@ -1026,12 +908,6 @@ function mockStats( execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -1046,7 +922,6 @@ function mockStats( }, }, persistence: { - ephemeral: 0, non_recurring: 30, recurring: 70, }, diff --git a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts index a4a9c963e8ee3..75c56825cff0b 100644 --- a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts +++ b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts @@ -104,9 +104,9 @@ export function estimateCapacity( /** * On average, how much of this kibana's capacity has been historically used to execute - * non-recurring and ephemeral tasks + * non-recurring tasks */ - const averageCapacityUsedByNonRecurringAndEphemeralTasksPerKibana = percentageOf( + const averageCapacityUsedByNonRecurringTasksPerKibana = percentageOf( capacityPerMinutePerKibana, percentageOf(averageLoadPercentage, 100 - percentageOfExecutionsUsedByRecurringTasks) ); @@ -116,14 +116,14 @@ export function estimateCapacity( * for recurring tasks */ const averageCapacityAvailableForRecurringTasksPerKibana = - capacityPerMinutePerKibana - averageCapacityUsedByNonRecurringAndEphemeralTasksPerKibana; + capacityPerMinutePerKibana - averageCapacityUsedByNonRecurringTasksPerKibana; /** - * At times a cluster might experience spikes of NonRecurring/Ephemeral tasks which swamp Task Manager - * causing it to spend all its capacity on NonRecurring/Ephemeral tasks, which makes it much harder + * At times a cluster might experience spikes of NonRecurring tasks which swamp Task Manager + * causing it to spend all its capacity on NonRecurring tasks, which makes it much harder * to estimate the required capacity. * This is easy to identify as load will usually max out or all the workers are busy executing non-recurring - * or ephemeral tasks, and none are running recurring tasks. + * tasks, and none are running recurring tasks. */ const hasTooLittleCapacityToEstimateRequiredNonRecurringCapacity = averageLoadPercentage === 100 || averageCapacityAvailableForRecurringTasksPerKibana === 0; @@ -165,24 +165,24 @@ export function estimateCapacity( averageRecurringRequiredPerMinute / minRequiredKibanaInstances; /** - * assuming the historical capacity needed for ephemeral and non-recurring tasks, plus + * assuming the historical capacity needed for non-recurring tasks, plus * the amount we know each kibana would need for recurring tasks, how much capacity would * each kibana need if following the minRequiredKibanaInstances? */ const averageRequiredThroughputPerMinutePerKibana = - averageCapacityUsedByNonRecurringAndEphemeralTasksPerKibana * + averageCapacityUsedByNonRecurringTasksPerKibana * (assumedKibanaInstances / minRequiredKibanaInstances) + averageRecurringRequiredPerMinute / minRequiredKibanaInstances; const assumedAverageRecurringRequiredThroughputPerMinutePerKibana = averageRecurringRequiredPerMinute / assumedKibanaInstances; /** - * assuming the historical capacity needed for ephemeral and non-recurring tasks, plus + * assuming the historical capacity needed for non-recurring tasks, plus * the amount we know each kibana would need for recurring tasks, how much capacity would * each kibana need if the assumed current number were correct? */ const assumedRequiredThroughputPerMinutePerKibana = - averageCapacityUsedByNonRecurringAndEphemeralTasksPerKibana + + averageCapacityUsedByNonRecurringTasksPerKibana + averageRecurringRequiredPerMinute / assumedKibanaInstances; const { status, reason } = getHealthStatus(logger, { @@ -281,11 +281,7 @@ function getAverageDuration( durations: Partial> ): Result { const result = stats.mean( - [ - durations.ephemeral?.p50 ?? 0, - durations.non_recurring?.p50 ?? 0, - durations.recurring?.p50 ?? 0, - ].filter((val) => val > 0) + [durations.non_recurring?.p50 ?? 0, durations.recurring?.p50 ?? 0].filter((val) => val > 0) ); if (isNaN(result)) { return asErr(result); diff --git a/x-pack/plugins/task_manager/server/monitoring/configuration_statistics.test.ts b/x-pack/plugins/task_manager/server/monitoring/configuration_statistics.test.ts index 1bcd3e286d4a3..9a0084fcdf9e4 100644 --- a/x-pack/plugins/task_manager/server/monitoring/configuration_statistics.test.ts +++ b/x-pack/plugins/task_manager/server/monitoring/configuration_statistics.test.ts @@ -38,10 +38,6 @@ describe('Configuration Statistics Aggregator', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, diff --git a/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.test.ts b/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.test.ts deleted file mode 100644 index ac16070d7c131..0000000000000 --- a/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.test.ts +++ /dev/null @@ -1,384 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { v4 as uuidv4 } from 'uuid'; -import { Subject, Observable } from 'rxjs'; -import stats from 'stats-lite'; -import { take, bufferCount, skip, map } from 'rxjs'; - -import { ConcreteTaskInstance, TaskStatus } from '../task'; -import { - asTaskRunEvent, - TaskTiming, - asTaskManagerStatEvent, - TaskPersistence, -} from '../task_events'; -import { asOk } from '../lib/result_type'; -import { TaskLifecycleEvent } from '../polling_lifecycle'; -import { TaskRunResult } from '../task_running'; -import { - createEphemeralTaskAggregator, - summarizeEphemeralStat, - SummarizedEphemeralTaskStat, - EphemeralTaskStat, -} from './ephemeral_task_statistics'; -import { AggregatedStat } from '../lib/runtime_statistics_aggregator'; -import { ephemeralTaskLifecycleMock } from '../ephemeral_task_lifecycle.mock'; -import { times, takeRight, take as takeLeft } from 'lodash'; - -describe('Ephemeral Task Statistics', () => { - test('returns the average size of the ephemeral queue', async () => { - const queueSize = [2, 6, 10, 10, 10, 6, 2, 0, 0]; - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - 10 - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.queuedTasks).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(queueSize.length), - bufferCount(queueSize.length) - ) - .subscribe((taskStats: Array>) => { - expectWindowEqualsUpdate(taskStats[0], queueSize.slice(0, 1)); - expectWindowEqualsUpdate(taskStats[1], queueSize.slice(0, 2)); - expectWindowEqualsUpdate(taskStats[2], queueSize.slice(0, 3)); - expectWindowEqualsUpdate(taskStats[3], queueSize.slice(0, 4)); - expectWindowEqualsUpdate(taskStats[4], queueSize.slice(0, 5)); - // from the 6th value, begin to drop old values as out window is 5 - expectWindowEqualsUpdate(taskStats[5], queueSize.slice(1, 6)); - expectWindowEqualsUpdate(taskStats[6], queueSize.slice(2, 7)); - expectWindowEqualsUpdate(taskStats[7], queueSize.slice(3, 8)); - resolve(); - }); - - for (const size of queueSize) { - events$.next(asTaskManagerStatEvent('queuedEphemeralTasks', asOk(size))); - } - }); - }); - - test('returns the average number of ephemeral tasks executed per polling cycle', async () => { - const tasksQueueSize = [5, 2, 5, 0]; - const executionsPerCycle = [5, 0, 5]; - // we expect one event per "task queue size event", and we simmulate - // tasks being drained after each one of theseevents, so we expect - // the first cycle to show zero drained tasks - const expectedTasksDrainedEvents = [0, ...executionsPerCycle]; - - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - 10 - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.executionsPerCycle).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(tasksQueueSize.length), - bufferCount(tasksQueueSize.length) - ) - .subscribe((taskStats: Array>) => { - taskStats.forEach((taskStat, index) => { - expectWindowEqualsUpdate( - taskStat, - takeRight(takeLeft(expectedTasksDrainedEvents, index + 1), runningAverageWindowSize) - ); - }); - resolve(); - }); - - for (const tasksDrainedInCycle of executionsPerCycle) { - events$.next( - asTaskManagerStatEvent('queuedEphemeralTasks', asOk(tasksQueueSize.shift() ?? 0)) - ); - times(tasksDrainedInCycle, () => { - events$.next(mockTaskRunEvent()); - }); - } - events$.next( - asTaskManagerStatEvent('queuedEphemeralTasks', asOk(tasksQueueSize.shift() ?? 0)) - ); - }); - }); - - test('returns the average load added per polling cycle cycle by ephemeral tasks', async () => { - const tasksExecuted = [0, 5, 10, 10, 10, 5, 5, 0, 0, 0, 0, 0]; - const expectedLoad = [0, 50, 100, 100, 100, 50, 50, 0, 0, 0, 0, 0]; - - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const capacity = 10; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - capacity - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.load).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(tasksExecuted.length), - bufferCount(tasksExecuted.length) - ) - .subscribe((taskStats: Array>) => { - taskStats.forEach((taskStat, index) => { - expectWindowEqualsUpdate( - taskStat, - takeRight(takeLeft(expectedLoad, index + 1), runningAverageWindowSize) - ); - }); - resolve(); - }); - - for (const tasksExecutedInCycle of tasksExecuted) { - times(tasksExecutedInCycle, () => { - events$.next(mockTaskRunEvent()); - }); - events$.next(asTaskManagerStatEvent('queuedEphemeralTasks', asOk(0))); - } - }); - }); -}); - -test('returns the average load added per polling cycle cycle by ephemeral tasks when load exceeds capacity', async () => { - const tasksExecuted = [0, 5, 10, 20, 15, 10, 5, 0, 0, 0, 0, 0]; - const expectedLoad = [0, 50, 100, 200, 150, 100, 50, 0, 0, 0, 0, 0]; - - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const capacity = 10; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - capacity - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.load).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(tasksExecuted.length), - bufferCount(tasksExecuted.length) - ) - .subscribe((taskStats: Array>) => { - taskStats.forEach((taskStat, index) => { - expectWindowEqualsUpdate( - taskStat, - takeRight(takeLeft(expectedLoad, index + 1), runningAverageWindowSize) - ); - }); - resolve(); - }); - - for (const tasksExecutedInCycle of tasksExecuted) { - times(tasksExecutedInCycle, () => { - events$.next(mockTaskRunEvent()); - }); - events$.next(asTaskManagerStatEvent('queuedEphemeralTasks', asOk(0))); - } - }); -}); - -test('returns the average delay experienced by tasks in the ephemeral queue', async () => { - const taskDelays = [100, 150, 500, 100, 100, 200, 2000, 10000, 20000, 100]; - - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - 10 - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.delay).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(taskDelays.length), - bufferCount(taskDelays.length) - ) - .subscribe((taskStats: Array>) => { - taskStats.forEach((taskStat, index) => { - expectWindowEqualsUpdate( - taskStat, - takeRight(takeLeft(taskDelays, index + 1), runningAverageWindowSize) - ); - }); - resolve(); - }); - - for (const delay of taskDelays) { - events$.next(asTaskManagerStatEvent('ephemeralTaskDelay', asOk(delay))); - } - }); -}); - -const mockTaskRunEvent = ( - overrides: Partial = {}, - timing: TaskTiming = { - start: 0, - stop: 0, - }, - result: TaskRunResult = TaskRunResult.Success -) => { - const task = mockTaskInstance(overrides); - const persistence = TaskPersistence.Recurring; - return asTaskRunEvent(task.id, asOk({ task, persistence, result, isExpired: false }), timing); -}; - -const mockTaskInstance = (overrides: Partial = {}): ConcreteTaskInstance => ({ - id: uuidv4(), - attempts: 0, - status: TaskStatus.Running, - version: '123', - runAt: new Date(), - scheduledAt: new Date(), - startedAt: new Date(), - retryAt: new Date(Date.now() + 5 * 60 * 1000), - state: {}, - taskType: 'alerting:test', - params: { - alertId: '1', - }, - ownerId: null, - ...overrides, -}); diff --git a/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.ts b/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.ts deleted file mode 100644 index d02080a56a1aa..0000000000000 --- a/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.ts +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { map, filter, startWith, buffer, share } from 'rxjs'; -import { JsonObject } from '@kbn/utility-types'; -import { combineLatest, Observable, zip } from 'rxjs'; -import { isOk, Ok } from '../lib/result_type'; -import { AggregatedStat, AggregatedStatProvider } from '../lib/runtime_statistics_aggregator'; -import { EphemeralTaskLifecycle } from '../ephemeral_task_lifecycle'; -import { TaskLifecycleEvent } from '../polling_lifecycle'; -import { isTaskRunEvent, isTaskManagerStatEvent } from '../task_events'; -import { - AveragedStat, - calculateRunningAverage, - createRunningAveragedStat, -} from './task_run_calculators'; -import { HealthStatus } from './monitoring_stats_stream'; - -export interface EphemeralTaskStat extends JsonObject { - queuedTasks: number[]; - executionsPerCycle: number[]; - load: number[]; - delay: number[]; -} - -export interface SummarizedEphemeralTaskStat extends JsonObject { - queuedTasks: AveragedStat; - executionsPerCycle: AveragedStat; - load: AveragedStat; -} -export function createEphemeralTaskAggregator( - ephemeralTaskLifecycle: EphemeralTaskLifecycle, - runningAverageWindowSize: number, - capacity: number -): AggregatedStatProvider { - const ephemeralTaskRunEvents$ = ephemeralTaskLifecycle.events.pipe( - filter((taskEvent: TaskLifecycleEvent) => isTaskRunEvent(taskEvent)) - ); - - const ephemeralQueueSizeEvents$: Observable = ephemeralTaskLifecycle.events.pipe( - filter( - (taskEvent: TaskLifecycleEvent) => - isTaskManagerStatEvent(taskEvent) && - taskEvent.id === 'queuedEphemeralTasks' && - isOk(taskEvent.event) - ), - map((taskEvent: TaskLifecycleEvent) => { - return (taskEvent.event as unknown as Ok).value; - }), - // as we consume this stream twice below (in the buffer, and the zip) - // we want to use share, otherwise ther'll be 2 subscribers and both will emit event - share() - ); - - const ephemeralQueueExecutionsPerCycleQueue = - createRunningAveragedStat(runningAverageWindowSize); - const ephemeralQueuedTasksQueue = createRunningAveragedStat(runningAverageWindowSize); - const ephemeralTaskLoadQueue = createRunningAveragedStat(runningAverageWindowSize); - const ephemeralPollingCycleBasedStats$ = zip( - ephemeralTaskRunEvents$.pipe( - buffer(ephemeralQueueSizeEvents$), - map((taskEvents: TaskLifecycleEvent[]) => taskEvents.length) - ), - ephemeralQueueSizeEvents$ - ).pipe( - map(([tasksRanSincePreviousQueueSize, ephemeralQueueSize]) => ({ - queuedTasks: ephemeralQueuedTasksQueue(ephemeralQueueSize), - executionsPerCycle: ephemeralQueueExecutionsPerCycleQueue(tasksRanSincePreviousQueueSize), - load: ephemeralTaskLoadQueue(calculateWorkerLoad(capacity, tasksRanSincePreviousQueueSize)), - })), - startWith({ - queuedTasks: [], - executionsPerCycle: [], - load: [], - }) - ); - - const ephemeralTaskDelayQueue = createRunningAveragedStat(runningAverageWindowSize); - const ephemeralTaskDelayEvents$: Observable = ephemeralTaskLifecycle.events.pipe( - filter( - (taskEvent: TaskLifecycleEvent) => - isTaskManagerStatEvent(taskEvent) && - taskEvent.id === 'ephemeralTaskDelay' && - isOk(taskEvent.event) - ), - map((taskEvent: TaskLifecycleEvent) => { - return ephemeralTaskDelayQueue((taskEvent.event as unknown as Ok).value); - }), - startWith([]) - ); - - return combineLatest([ephemeralPollingCycleBasedStats$, ephemeralTaskDelayEvents$]).pipe( - map(([stats, delay]: [Omit, EphemeralTaskStat['delay']]) => { - return { - key: 'ephemeral', - value: { ...stats, delay }, - } as AggregatedStat; - }) - ); -} - -function calculateWorkerLoad(maxWorkers: number, tasksExecuted: number) { - return Math.round((tasksExecuted * 100) / maxWorkers); -} - -export function summarizeEphemeralStat({ - queuedTasks, - executionsPerCycle, - load, - delay, -}: EphemeralTaskStat): { value: SummarizedEphemeralTaskStat; status: HealthStatus } { - return { - value: { - queuedTasks: calculateRunningAverage(queuedTasks.length ? queuedTasks : [0]), - load: calculateRunningAverage(load.length ? load : [0]), - executionsPerCycle: calculateRunningAverage( - executionsPerCycle.length ? executionsPerCycle : [0] - ), - delay: calculateRunningAverage(delay.length ? delay : [0]), - }, - status: HealthStatus.OK, - }; -} diff --git a/x-pack/plugins/task_manager/server/monitoring/index.ts b/x-pack/plugins/task_manager/server/monitoring/index.ts index 5dc024b53de10..fdcfe8aecebf1 100644 --- a/x-pack/plugins/task_manager/server/monitoring/index.ts +++ b/x-pack/plugins/task_manager/server/monitoring/index.ts @@ -16,7 +16,6 @@ import { import { TaskStore } from '../task_store'; import { TaskPollingLifecycle } from '../polling_lifecycle'; import { ManagedConfiguration } from '../lib/create_managed_configuration'; -import { EphemeralTaskLifecycle } from '../ephemeral_task_lifecycle'; import { AdHocTaskCounter } from '../lib/adhoc_task_counter'; import { TaskTypeDictionary } from '../task_type_dictionary'; @@ -37,7 +36,6 @@ export interface CreateMonitoringStatsOpts { adHocTaskCounter: AdHocTaskCounter; taskDefinitions: TaskTypeDictionary; taskPollingLifecycle?: TaskPollingLifecycle; - ephemeralTaskLifecycle?: EphemeralTaskLifecycle; } export function createMonitoringStats( diff --git a/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts b/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts index 1237af9e68ebc..b89f242741b05 100644 --- a/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts +++ b/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts @@ -16,12 +16,6 @@ import { SummarizedWorkloadStat, WorkloadStat, } from './workload_statistics'; -import { - EphemeralTaskStat, - createEphemeralTaskAggregator, - SummarizedEphemeralTaskStat, - summarizeEphemeralStat, -} from './ephemeral_task_statistics'; import { createTaskRunAggregator, summarizeTaskRunStat, @@ -45,7 +39,6 @@ export interface MonitoringStats { configuration?: MonitoredStat; workload?: MonitoredStat; runtime?: MonitoredStat; - ephemeral?: MonitoredStat; utilization?: MonitoredStat; }; } @@ -72,7 +65,6 @@ export interface RawMonitoringStats { configuration?: RawMonitoredStat; workload?: RawMonitoredStat; runtime?: RawMonitoredStat; - ephemeral?: RawMonitoredStat; capacity_estimation?: RawMonitoredStat; }; } @@ -86,7 +78,6 @@ export function createAggregators({ taskDefinitions, adHocTaskCounter, taskPollingLifecycle, - ephemeralTaskLifecycle, }: CreateMonitoringStatsOpts): AggregatedStatProvider { const aggregators: AggregatedStatProvider[] = [ createConfigurationAggregator(config, managedConfig), @@ -111,15 +102,6 @@ export function createAggregators({ ) ); } - if (ephemeralTaskLifecycle && ephemeralTaskLifecycle.enabled) { - aggregators.push( - createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - config.monitored_stats_running_average_window, - managedConfig.startingCapacity - ) - ); - } return merge(...aggregators); } @@ -156,7 +138,7 @@ export function summarizeMonitoringStats( { // eslint-disable-next-line @typescript-eslint/naming-convention last_update, - stats: { runtime, workload, configuration, ephemeral, utilization }, + stats: { runtime, workload, configuration, utilization }, }: MonitoringStats, config: TaskManagerConfig, assumedKibanaInstances: number @@ -188,14 +170,6 @@ export function summarizeMonitoringStats( }, } : {}), - ...(ephemeral - ? { - ephemeral: { - timestamp: ephemeral.timestamp, - ...summarizeEphemeralStat(ephemeral.value), - }, - } - : {}), }, assumedKibanaInstances ); diff --git a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts index fa6fbe0d3a2b9..800e2129b7064 100644 --- a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts +++ b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts @@ -455,10 +455,7 @@ describe('Task Run Statistics', () => { { start: 0, stop: 0 }, TaskRunResult.Success ), - mockTaskRunEvent({}, { start: 0, stop: 0 }, TaskRunResult.Success, TaskPersistence.Ephemeral), - mockTaskRunEvent({}, { start: 0, stop: 0 }, TaskRunResult.Success, TaskPersistence.Ephemeral), mockTaskRunEvent({}, { start: 0, stop: 0 }, TaskRunResult.Success), - mockTaskRunEvent({}, { start: 0, stop: 0 }, TaskRunResult.Success, TaskPersistence.Ephemeral), mockTaskRunEvent( { schedule: { interval: '3s' } }, { start: 0, stop: 0 }, @@ -490,79 +487,52 @@ describe('Task Run Statistics', () => { .toMatchInlineSnapshot(` Array [ Object { - "ephemeral": 0, "non_recurring": 100, "recurring": 0, }, Object { - "ephemeral": 0, "non_recurring": 100, "recurring": 0, }, Object { - "ephemeral": 0, "non_recurring": 67, "recurring": 33, }, Object { - "ephemeral": 0, "non_recurring": 75, "recurring": 25, }, Object { - "ephemeral": 0, "non_recurring": 80, "recurring": 20, }, Object { - "ephemeral": 0, "non_recurring": 60, "recurring": 40, }, Object { - "ephemeral": 0, "non_recurring": 40, "recurring": 60, }, Object { - "ephemeral": 0, "non_recurring": 60, "recurring": 40, }, Object { - "ephemeral": 0, "non_recurring": 60, "recurring": 40, }, Object { - "ephemeral": 0, "non_recurring": 40, "recurring": 60, }, Object { - "ephemeral": 20, - "non_recurring": 40, + "non_recurring": 60, "recurring": 40, }, Object { - "ephemeral": 40, - "non_recurring": 40, - "recurring": 20, - }, - Object { - "ephemeral": 40, - "non_recurring": 40, - "recurring": 20, - }, - Object { - "ephemeral": 60, - "non_recurring": 20, - "recurring": 20, - }, - Object { - "ephemeral": 60, - "non_recurring": 20, - "recurring": 20, + "non_recurring": 60, + "recurring": 40, }, ] `); diff --git a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts index 6007508451d9e..37bdf04984617 100644 --- a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts +++ b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts @@ -92,7 +92,6 @@ interface ResultFrequency extends JsonObject { export interface TaskPersistenceTypes extends JsonObject { [TaskPersistence.Recurring]: T; [TaskPersistence.NonRecurring]: T; - [TaskPersistence.Ephemeral]: T; } type ResultFrequencySummary = ResultFrequency & { @@ -247,7 +246,6 @@ export function createTaskRunAggregator( duration_by_persistence: { [TaskPersistence.Recurring]: [], [TaskPersistence.NonRecurring]: [], - [TaskPersistence.Ephemeral]: [], }, result_frequency_percent_as_number: {}, persistence: [], @@ -401,7 +399,6 @@ export function summarizeTaskRunStat( persistence: { [TaskPersistence.Recurring]: 0, [TaskPersistence.NonRecurring]: 0, - [TaskPersistence.Ephemeral]: 0, ...calculateFrequency(persistence), }, result_frequency_percent_as_number: mapValues( diff --git a/x-pack/plugins/task_manager/server/plugin.test.ts b/x-pack/plugins/task_manager/server/plugin.test.ts index 80109e0624145..9592af3d75c37 100644 --- a/x-pack/plugins/task_manager/server/plugin.test.ts +++ b/x-pack/plugins/task_manager/server/plugin.test.ts @@ -17,9 +17,6 @@ import { cloudMock } from '@kbn/cloud-plugin/public/mocks'; import { taskPollingLifecycleMock } from './polling_lifecycle.mock'; import { TaskPollingLifecycle } from './polling_lifecycle'; import type { TaskPollingLifecycle as TaskPollingLifecycleClass } from './polling_lifecycle'; -import { ephemeralTaskLifecycleMock } from './ephemeral_task_lifecycle.mock'; -import { EphemeralTaskLifecycle } from './ephemeral_task_lifecycle'; -import type { EphemeralTaskLifecycle as EphemeralTaskLifecycleClass } from './ephemeral_task_lifecycle'; let mockTaskPollingLifecycle = taskPollingLifecycleMock.create({}); jest.mock('./polling_lifecycle', () => { @@ -30,15 +27,6 @@ jest.mock('./polling_lifecycle', () => { }; }); -let mockEphemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({}); -jest.mock('./ephemeral_task_lifecycle', () => { - return { - EphemeralTaskLifecycle: jest.fn().mockImplementation(() => { - return mockEphemeralTaskLifecycle; - }), - }; -}); - const deleteCurrentNodeSpy = jest.spyOn(KibanaDiscoveryService.prototype, 'deleteCurrentNode'); const discoveryIsStarted = jest.spyOn(KibanaDiscoveryService.prototype, 'isStarted'); @@ -69,10 +57,6 @@ const pluginInitializerContextParams = { }, custom: {}, }, - ephemeral_tasks: { - enabled: false, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, @@ -94,8 +78,6 @@ describe('TaskManagerPlugin', () => { beforeEach(() => { mockTaskPollingLifecycle = taskPollingLifecycleMock.create({}); (TaskPollingLifecycle as jest.Mock).mockClear(); - mockEphemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({}); - (EphemeralTaskLifecycle as jest.Mock).mockClear(); }); describe('setup', () => { @@ -164,9 +146,6 @@ describe('TaskManagerPlugin', () => { }); expect(TaskPollingLifecycle as jest.Mock).toHaveBeenCalledTimes(1); - expect( - EphemeralTaskLifecycle as jest.Mock - ).toHaveBeenCalledTimes(1); }); test('should not initialize task polling lifecycle if node.roles.backgroundTasks is false', async () => { @@ -181,9 +160,6 @@ describe('TaskManagerPlugin', () => { }); expect(TaskPollingLifecycle as jest.Mock).not.toHaveBeenCalled(); - expect( - EphemeralTaskLifecycle as jest.Mock - ).not.toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/task_manager/server/plugin.ts b/x-pack/plugins/task_manager/server/plugin.ts index cd820d1e70780..42a979bf96067 100644 --- a/x-pack/plugins/task_manager/server/plugin.ts +++ b/x-pack/plugins/task_manager/server/plugin.ts @@ -35,8 +35,7 @@ import { createManagedConfiguration } from './lib/create_managed_configuration'; import { TaskScheduling } from './task_scheduling'; import { backgroundTaskUtilizationRoute, healthRoute, metricsRoute } from './routes'; import { createMonitoringStats, MonitoringStats } from './monitoring'; -import { EphemeralTaskLifecycle } from './ephemeral_task_lifecycle'; -import { EphemeralTask, ConcreteTaskInstance } from './task'; +import { ConcreteTaskInstance } from './task'; import { registerTaskManagerUsageCollector } from './usage'; import { TASK_MANAGER_INDEX } from './constants'; import { AdHocTaskCounter } from './lib/adhoc_task_counter'; @@ -67,7 +66,6 @@ export type TaskManagerStartContract = Pick< TaskScheduling, | 'schedule' | 'runSoon' - | 'ephemeralRunNow' | 'ensureScheduled' | 'bulkUpdateSchedules' | 'bulkEnable' @@ -78,7 +76,6 @@ export type TaskManagerStartContract = Pick< Pick & { removeIfExists: TaskStore['remove']; } & { - supportsEphemeralTasks: () => boolean; getRegisteredTypes: () => string[]; }; @@ -92,7 +89,6 @@ export class TaskManagerPlugin implements Plugin { private taskPollingLifecycle?: TaskPollingLifecycle; - private ephemeralTaskLifecycle?: EphemeralTaskLifecycle; private taskManagerId?: string; private usageCounter?: UsageCounter; private config: TaskManagerConfig; @@ -218,8 +214,6 @@ export class TaskManagerPlugin usageCollection, monitoredHealth$, monitoredUtilization$, - this.config.ephemeral_tasks.enabled, - this.config.ephemeral_tasks.request_capacity, this.config.unsafe.exclude_task_types ); } @@ -350,17 +344,6 @@ export class TaskManagerPlugin ...managedConfiguration, taskPartitioner, }); - - this.ephemeralTaskLifecycle = new EphemeralTaskLifecycle({ - config: this.config!, - definitions: this.definitions, - logger: this.logger, - executionContext, - middleware: this.middleware, - elasticsearchAndSOAvailability$: this.elasticsearchAndSOAvailability$!, - pool: this.taskPollingLifecycle.pool, - lifecycleEvent: this.taskPollingLifecycle.events, - }); } createMonitoringStats({ @@ -372,7 +355,6 @@ export class TaskManagerPlugin adHocTaskCounter: this.adHocTaskCounter, taskDefinitions: this.definitions, taskPollingLifecycle: this.taskPollingLifecycle, - ephemeralTaskLifecycle: this.ephemeralTaskLifecycle, }).subscribe((stat) => this.monitoringStats$.next(stat)); metricsStream({ @@ -387,7 +369,6 @@ export class TaskManagerPlugin logger: this.logger, taskStore, middleware: this.middleware, - ephemeralTaskLifecycle: this.ephemeralTaskLifecycle, taskManagerId: taskStore.taskManagerId, }); @@ -409,9 +390,6 @@ export class TaskManagerPlugin bulkEnable: (...args) => taskScheduling.bulkEnable(...args), bulkDisable: (...args) => taskScheduling.bulkDisable(...args), bulkUpdateSchedules: (...args) => taskScheduling.bulkUpdateSchedules(...args), - ephemeralRunNow: (task: EphemeralTask) => taskScheduling.ephemeralRunNow(task), - supportsEphemeralTasks: () => - this.config.ephemeral_tasks.enabled && this.shouldRunBackgroundTasks, getRegisteredTypes: () => this.definitions.getAllTypes(), bulkUpdateState: (...args) => taskScheduling.bulkUpdateState(...args), }; diff --git a/x-pack/plugins/task_manager/server/polling_lifecycle.test.ts b/x-pack/plugins/task_manager/server/polling_lifecycle.test.ts index a408bd3f634d9..1ccbe57debe24 100644 --- a/x-pack/plugins/task_manager/server/polling_lifecycle.test.ts +++ b/x-pack/plugins/task_manager/server/polling_lifecycle.test.ts @@ -84,10 +84,6 @@ describe('TaskPollingLifecycle', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, diff --git a/x-pack/plugins/task_manager/server/polling_lifecycle.ts b/x-pack/plugins/task_manager/server/polling_lifecycle.ts index fb6776fa34f28..91f32d7201ea9 100644 --- a/x-pack/plugins/task_manager/server/polling_lifecycle.ts +++ b/x-pack/plugins/task_manager/server/polling_lifecycle.ts @@ -26,7 +26,6 @@ import { asTaskPollingCycleEvent, TaskManagerStat, asTaskManagerStatEvent, - EphemeralTaskRejectedDueToCapacity, TaskManagerMetric, } from './task_events'; import { fillPool, FillPoolResult, TimedFillPoolResult } from './lib/fill_pool'; @@ -71,8 +70,7 @@ export type TaskLifecycleEvent = | TaskRunRequest | TaskPollingCycle | TaskManagerStat - | TaskManagerMetric - | EphemeralTaskRejectedDueToCapacity; + | TaskManagerMetric; /** * The public interface into the task manager system. diff --git a/x-pack/plugins/task_manager/server/routes/health.test.ts b/x-pack/plugins/task_manager/server/routes/health.test.ts index 1e06ea91a6fcf..f8b716ba0d158 100644 --- a/x-pack/plugins/task_manager/server/routes/health.test.ts +++ b/x-pack/plugins/task_manager/server/routes/health.test.ts @@ -299,7 +299,6 @@ describe('healthRoute', () => { const warnRuntimeStat = mockHealthStats(); const warnConfigurationStat = mockHealthStats(); const warnWorkloadStat = mockHealthStats(); - const warnEphemeralStat = mockHealthStats(); const stats$ = new Subject(); @@ -334,15 +333,13 @@ describe('healthRoute', () => { stats$.next(warnConfigurationStat); await sleep(1001); stats$.next(warnWorkloadStat); - await sleep(1001); - stats$.next(warnEphemeralStat); expect(await serviceStatus).toMatchObject({ level: ServiceStatusLevels.degraded, summary: `Task Manager is unhealthy - Reason: ${reason}`, }); - expect(logHealthMetrics).toBeCalledTimes(4); + expect(logHealthMetrics).toBeCalledTimes(3); expect(logHealthMetrics.mock.calls[0][0]).toMatchObject({ id, timestamp: expect.any(String), @@ -367,14 +364,6 @@ describe('healthRoute', () => { summarizeMonitoringStats(logger, warnWorkloadStat, getTaskManagerConfig({})) ), }); - expect(logHealthMetrics.mock.calls[3][0]).toMatchObject({ - id, - timestamp: expect.any(String), - status: expect.any(String), - ...ignoreCapacityEstimation( - summarizeMonitoringStats(logger, warnEphemeralStat, getTaskManagerConfig({})) - ), - }); }); it(`logs at an error level if the status is error`, async () => { @@ -402,7 +391,6 @@ describe('healthRoute', () => { const errorRuntimeStat = mockHealthStats(); const errorConfigurationStat = mockHealthStats(); const errorWorkloadStat = mockHealthStats(); - const errorEphemeralStat = mockHealthStats(); const stats$ = new Subject(); @@ -437,15 +425,13 @@ describe('healthRoute', () => { stats$.next(errorConfigurationStat); await sleep(1001); stats$.next(errorWorkloadStat); - await sleep(1001); - stats$.next(errorEphemeralStat); expect(await serviceStatus).toMatchObject({ level: ServiceStatusLevels.degraded, summary: `Task Manager is unhealthy - Reason: ${reason}`, }); - expect(logHealthMetrics).toBeCalledTimes(4); + expect(logHealthMetrics).toBeCalledTimes(3); expect(logHealthMetrics.mock.calls[0][0]).toMatchObject({ id, timestamp: expect.any(String), @@ -470,14 +456,6 @@ describe('healthRoute', () => { summarizeMonitoringStats(logger, errorWorkloadStat, getTaskManagerConfig({})) ), }); - expect(logHealthMetrics.mock.calls[3][0]).toMatchObject({ - id, - timestamp: expect.any(String), - status: expect.any(String), - ...ignoreCapacityEstimation( - summarizeMonitoringStats(logger, errorEphemeralStat, getTaskManagerConfig({})) - ), - }); }); it('returns a error status if the overall stats have not been updated within the required hot freshness', async () => { @@ -548,9 +526,6 @@ describe('healthRoute', () => { workload: { timestamp: expect.any(String), }, - ephemeral: { - timestamp: expect.any(String), - }, runtime: { timestamp: expect.any(String), value: { @@ -653,9 +628,6 @@ describe('healthRoute', () => { workload: { timestamp: expect.any(String), }, - ephemeral: { - timestamp: expect.any(String), - }, runtime: { timestamp: expect.any(String), value: { @@ -737,9 +709,6 @@ describe('healthRoute', () => { workload: { timestamp: expect.any(String), }, - ephemeral: { - timestamp: expect.any(String), - }, runtime: { timestamp: expect.any(String), value: { @@ -952,15 +921,6 @@ function mockHealthStats(overrides = {}) { }, }, }, - ephemeral: { - timestamp: new Date().toISOString(), - value: { - load: [], - executionsPerCycle: [], - queuedTasks: [], - delay: [], - }, - }, }, }; return merge(stub, overrides) as unknown as MonitoringStats; diff --git a/x-pack/plugins/task_manager/server/task.ts b/x-pack/plugins/task_manager/server/task.ts index bbe2935bdfc6d..a6f5ae05e7819 100644 --- a/x-pack/plugins/task_manager/server/task.ts +++ b/x-pack/plugins/task_manager/server/task.ts @@ -471,16 +471,6 @@ export interface ConcreteTaskInstanceVersion { error?: string; } -/** - * A task instance that has an id and is ready for storage. - */ -export type EphemeralTask = Pick< - ConcreteTaskInstance, - 'taskType' | 'params' | 'state' | 'scope' | 'enabled' ->; -export type EphemeralTaskInstance = EphemeralTask & - Pick; - export type SerializedConcreteTaskInstance = Omit< ConcreteTaskInstance, 'state' | 'params' | 'scheduledAt' | 'startedAt' | 'retryAt' | 'runAt' diff --git a/x-pack/plugins/task_manager/server/task_events.ts b/x-pack/plugins/task_manager/server/task_events.ts index c0ae11528f843..f3df6c230e8ed 100644 --- a/x-pack/plugins/task_manager/server/task_events.ts +++ b/x-pack/plugins/task_manager/server/task_events.ts @@ -13,14 +13,12 @@ import { Result, Err } from './lib/result_type'; import { ClaimAndFillPoolResult } from './lib/fill_pool'; import { PollingError } from './polling'; import { DecoratedError, TaskRunResult } from './task_running'; -import { EphemeralTaskInstanceRequest } from './ephemeral_task_lifecycle'; import type { EventLoopDelayConfig } from './config'; import { TaskManagerMetrics } from './metrics/task_metrics_collector'; export enum TaskPersistence { Recurring = 'recurring', NonRecurring = 'non_recurring', - Ephemeral = 'ephemeral', } export enum TaskEventType { @@ -31,7 +29,6 @@ export enum TaskEventType { TASK_POLLING_CYCLE = 'TASK_POLLING_CYCLE', TASK_MANAGER_METRIC = 'TASK_MANAGER_METRIC', TASK_MANAGER_STAT = 'TASK_MANAGER_STAT', - EPHEMERAL_TASK_DELAYED_DUE_TO_CAPACITY = 'EPHEMERAL_TASK_DELAYED_DUE_TO_CAPACITY', } export interface TaskTiming { @@ -82,7 +79,6 @@ export type TaskMarkRunning = TaskEvent; export type TaskRun = TaskEvent; export type TaskClaim = TaskEvent; export type TaskRunRequest = TaskEvent; -export type EphemeralTaskRejectedDueToCapacity = TaskEvent; export type TaskPollingCycle = TaskEvent>; export type TaskManagerMetric = TaskEvent; @@ -90,8 +86,6 @@ export type TaskManagerStats = | 'load' | 'pollingDelay' | 'claimDuration' - | 'queuedEphemeralTasks' - | 'ephemeralTaskDelay' | 'workerUtilization' | 'runDelay'; export type TaskManagerStat = TaskEvent; @@ -187,19 +181,6 @@ export function asTaskManagerMetricEvent( }; } -export function asEphemeralTaskRejectedDueToCapacityEvent( - id: string, - event: Result, - timing?: TaskTiming -): EphemeralTaskRejectedDueToCapacity { - return { - id, - type: TaskEventType.EPHEMERAL_TASK_DELAYED_DUE_TO_CAPACITY, - event, - timing, - }; -} - export function isTaskMarkRunningEvent( taskEvent: TaskEvent ): taskEvent is TaskMarkRunning { @@ -236,8 +217,3 @@ export function isTaskManagerMetricEvent( ): taskEvent is TaskManagerStat { return taskEvent.type === TaskEventType.TASK_MANAGER_METRIC; } -export function isEphemeralTaskRejectedDueToCapacityEvent( - taskEvent: TaskEvent -): taskEvent is EphemeralTaskRejectedDueToCapacity { - return taskEvent.type === TaskEventType.EPHEMERAL_TASK_DELAYED_DUE_TO_CAPACITY; -} diff --git a/x-pack/plugins/task_manager/server/task_running/ephemeral_task_runner.ts b/x-pack/plugins/task_manager/server/task_running/ephemeral_task_runner.ts deleted file mode 100644 index 365169b048893..0000000000000 --- a/x-pack/plugins/task_manager/server/task_running/ephemeral_task_runner.ts +++ /dev/null @@ -1,396 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * This module contains the core logic for running an individual task. - * It handles the full lifecycle of a task run, including error handling, - * rescheduling, middleware application, etc. - */ - -import apm from 'elastic-apm-node'; -import { v4 as uuidv4 } from 'uuid'; -import { withSpan } from '@kbn/apm-utils'; -import { identity } from 'lodash'; -import { Logger, ExecutionContextStart } from '@kbn/core/server'; - -import { Middleware } from '../lib/middleware'; -import { asOk, asErr, eitherAsync, Result } from '../lib/result_type'; -import { - TaskRun, - TaskMarkRunning, - asTaskRunEvent, - asTaskMarkRunningEvent, - startTaskTimer, - TaskTiming, - TaskPersistence, -} from '../task_events'; -import { intervalFromDate } from '../lib/intervals'; -import { - CancellableTask, - ConcreteTaskInstance, - isFailedRunResult, - SuccessfulRunResult, - FailedRunResult, - TaskStatus, - EphemeralTaskInstance, -} from '../task'; -import { TaskTypeDictionary } from '../task_type_dictionary'; -import { - asPending, - asReadyToRun, - EMPTY_RUN_RESULT, - isPending, - isReadyToRun, - TaskRunner, - TaskRunningInstance, - TaskRunResult, - TASK_MANAGER_RUN_TRANSACTION_TYPE, - TASK_MANAGER_TRANSACTION_TYPE, - TASK_MANAGER_TRANSACTION_TYPE_MARK_AS_RUNNING, -} from './task_runner'; - -type Opts = { - logger: Logger; - definitions: TaskTypeDictionary; - instance: EphemeralTaskInstance; - onTaskEvent?: (event: TaskRun | TaskMarkRunning) => void; - executionContext: ExecutionContextStart; -} & Pick; - -// ephemeral tasks cannot be rescheduled or scheduled to run again in the future -type EphemeralSuccessfulRunResult = Omit; -type EphemeralFailedRunResult = Omit; - -/** - * - * @export - * @class EphemeralTaskManagerRunner - * @implements {TaskRunner} - */ -export class EphemeralTaskManagerRunner implements TaskRunner { - private task?: CancellableTask; - private instance: TaskRunningInstance; - private definitions: TaskTypeDictionary; - private logger: Logger; - private beforeRun: Middleware['beforeRun']; - private beforeMarkRunning: Middleware['beforeMarkRunning']; - private onTaskEvent: (event: TaskRun | TaskMarkRunning) => void; - private uuid: string; - private readonly executionContext: ExecutionContextStart; - - /** - * Creates an instance of EphemeralTaskManagerRunner. - * @param {Opts} opts - * @prop {Logger} logger - The task manager logger - * @prop {TaskDefinition} definition - The definition of the task being run - * @prop {EphemeralTaskInstance} instance - The record describing this particular task instance - * @prop {BeforeRunFunction} beforeRun - A function that adjusts the run context prior to running the task - * @memberof TaskManagerRunner - */ - constructor({ - instance, - definitions, - logger, - beforeRun, - beforeMarkRunning, - onTaskEvent = identity, - executionContext, - }: Opts) { - this.instance = asPending(asConcreteInstance(sanitizeInstance(instance))); - this.definitions = definitions; - this.logger = logger; - this.beforeRun = beforeRun; - this.beforeMarkRunning = beforeMarkRunning; - this.onTaskEvent = onTaskEvent; - this.executionContext = executionContext; - this.uuid = uuidv4(); - } - - /** - * Gets the id of this task instance. - */ - public get id() { - return this.instance.task.id; - } - - /** - * Gets the exeuction id of this task instance. - */ - public get taskExecutionId() { - return `${this.id}::${this.uuid}`; - } - - /** - * Test whether given execution ID identifies a different execution of this same task - * @param id - */ - public isSameTask(executionId: string) { - return executionId.startsWith(this.id); - } - - /** - * Gets the task type of this task instance. - */ - public get taskType() { - return this.instance.task.taskType; - } - - /** - * Get the stage this TaskRunner is at - */ - public get stage() { - return this.instance.stage; - } - - /** - * Gets the task defintion from the dictionary. - */ - public get definition() { - return this.definitions.get(this.taskType); - } - - /** - * Gets the time at which this task will expire. - */ - public get expiration() { - return intervalFromDate( - // if the task is running, use it's started at, otherwise use the timestamp at - // which it was last updated - // this allows us to catch tasks that remain in Pending/Finalizing without being - // cleaned up - isReadyToRun(this.instance) ? this.instance.task.startedAt : this.instance.timestamp, - this.definition?.timeout - )!; - } - - /** - * Gets the duration of the current task run - */ - public get startedAt() { - return this.instance.task.startedAt; - } - - /** - * Gets whether or not this task has run longer than its expiration setting allows. - */ - public get isExpired() { - return this.expiration < new Date(); - } - - /** - * Returns true whenever the task is ad hoc and has ran out of attempts. When true before - * running a task, the task should be deleted instead of ran. - */ - public get isAdHocTaskAndOutOfAttempts() { - return false; - } - - public get isEphemeral() { - return true; - } - - /** - * Returns a log-friendly representation of this task. - */ - public toString() { - return `${this.taskType} "${this.id}" (Ephemeral)`; - } - - /** - * Runs the task, handling the task result, errors, etc, rescheduling if need - * be. NOTE: the time of applying the middleware's beforeRun is incorporated - * into the total timeout time the task in configured with. We may decide to - * start the timer after beforeRun resolves - * - * @returns {Promise>} - */ - public async run(): Promise> { - const definition = this.definition; - - if (!definition) { - throw new Error(`Running ephemeral task ${this} failed because it has no definition`); - } - - if (!isReadyToRun(this.instance)) { - throw new Error( - `Running ephemeral task ${this} failed as it ${ - isPending(this.instance) ? `isn't ready to be ran` : `has already been ran` - }` - ); - } - this.logger.debug(`Running ephemeral task ${this}`); - const apmTrans = apm.startTransaction(this.taskType, TASK_MANAGER_RUN_TRANSACTION_TYPE, { - childOf: this.instance.task.traceparent, - }); - apmTrans?.addLabels({ ephemeral: true }); - - const modifiedContext = await this.beforeRun({ - taskInstance: asConcreteInstance(this.instance.task), - }); - const stopTaskTimer = startTaskTimer(); - try { - this.task = definition.createTaskRunner(modifiedContext); - const ctx = { - type: 'task manager', - name: `run ephemeral ${this.instance.task.taskType}`, - id: this.instance.task.id, - description: 'run ephemeral task', - }; - const result = await this.executionContext.withContext(ctx, () => - withSpan({ name: 'ephemeral run', type: 'task manager' }, () => this.task!.run()) - ); - const validatedResult = this.validateResult(result); - const processedResult = await withSpan( - { name: 'process ephemeral result', type: 'task manager' }, - () => this.processResult(validatedResult, stopTaskTimer()) - ); - if (apmTrans) apmTrans.end('success'); - return processedResult; - } catch (err) { - this.logger.error(`Task ${this} failed: ${err}`); - // in error scenario, we can not get the RunResult - const processedResult = await withSpan( - { name: 'process ephemeral result', type: 'task manager' }, - () => - this.processResult( - asErr({ error: err, state: modifiedContext.taskInstance.state }), - stopTaskTimer() - ) - ); - if (apmTrans) apmTrans.end('failure'); - return processedResult; - } - } - - /** - * Used by the non-ephemeral task runner - */ - public async removeTask(): Promise {} - - /** - * Noop for Ephemeral tasks - * - * @returns {Promise} - */ - public async markTaskAsRunning(): Promise { - if (!isPending(this.instance)) { - throw new Error( - `Marking ephemeral task ${this} as running has failed as it ${ - isReadyToRun(this.instance) ? `is already running` : `has already been ran` - }` - ); - } - - const apmTrans = apm.startTransaction( - TASK_MANAGER_TRANSACTION_TYPE_MARK_AS_RUNNING, - TASK_MANAGER_TRANSACTION_TYPE - ); - apmTrans?.addLabels({ entityId: this.taskType }); - - const now = new Date(); - try { - const { taskInstance } = await this.beforeMarkRunning({ - taskInstance: asConcreteInstance(this.instance.task), - }); - - this.instance = asReadyToRun({ - ...taskInstance, - status: TaskStatus.Running, - startedAt: now, - attempts: taskInstance.attempts + 1, - retryAt: null, - }); - - if (apmTrans) apmTrans.end('success'); - this.onTaskEvent(asTaskMarkRunningEvent(this.id, asOk(this.instance.task))); - return true; - } catch (error) { - if (apmTrans) apmTrans.end('failure'); - this.onTaskEvent(asTaskMarkRunningEvent(this.id, asErr(error))); - } - return false; - } - - /** - * Attempts to cancel the task. - * - * @returns {Promise} - */ - public async cancel() { - const { task } = this; - if (task?.cancel) { - // it will cause the task state of "running" to be cleared - this.task = undefined; - return task.cancel(); - } - - this.logger.debug(`The ephemral task ${this} is not cancellable.`); - } - - private validateResult( - result?: SuccessfulRunResult | FailedRunResult | void - ): Result { - return isFailedRunResult(result) - ? asErr({ ...result, error: result.error }) - : asOk(result || EMPTY_RUN_RESULT); - } - - private async processResult( - result: Result, - taskTiming: TaskTiming - ): Promise> { - await eitherAsync( - result, - async ({ state }: EphemeralSuccessfulRunResult) => { - this.onTaskEvent( - asTaskRunEvent( - this.id, - asOk({ - task: { ...this.instance.task, state }, - persistence: TaskPersistence.Ephemeral, - result: TaskRunResult.Success, - isExpired: false, - }), - taskTiming - ) - ); - }, - async ({ error, state }: EphemeralFailedRunResult) => { - this.onTaskEvent( - asTaskRunEvent( - this.id, - asErr({ - task: { ...this.instance.task, state }, - persistence: TaskPersistence.Ephemeral, - result: TaskRunResult.Failed, - isExpired: false, - error, - }), - taskTiming - ) - ); - } - ); - return result; - } -} - -function sanitizeInstance(instance: EphemeralTaskInstance): EphemeralTaskInstance { - return { - ...instance, - params: instance.params || {}, - state: instance.state || {}, - }; -} - -function asConcreteInstance(instance: EphemeralTaskInstance): ConcreteTaskInstance { - return { - ...instance, - attempts: 0, - retryAt: null, - }; -} diff --git a/x-pack/plugins/task_manager/server/task_running/errors.ts b/x-pack/plugins/task_manager/server/task_running/errors.ts index e7063a92556eb..e30c99c68c60c 100644 --- a/x-pack/plugins/task_manager/server/task_running/errors.ts +++ b/x-pack/plugins/task_manager/server/task_running/errors.ts @@ -5,7 +5,6 @@ * 2.0. */ import { TaskErrorSource } from '../../common'; -import { EphemeralTask } from '../task'; export { TaskErrorSource }; @@ -23,19 +22,6 @@ export interface DecoratedError extends Error { [source]?: TaskErrorSource; } -export class EphemeralTaskRejectedDueToCapacityError extends Error { - private _task: EphemeralTask; - - constructor(message: string, task: EphemeralTask) { - super(message); - this._task = task; - } - - public get task() { - return this._task; - } -} - function isTaskManagerError(error: unknown): error is DecoratedError { return Boolean(error && (error as DecoratedError)[code]); } @@ -87,9 +73,3 @@ export function getErrorSource(error: Error | DecoratedError): TaskErrorSource | export function isUserError(error: Error | DecoratedError) { return getErrorSource(error) === TaskErrorSource.USER; } - -export function isEphemeralTaskRejectedDueToCapacityError( - error: Error | EphemeralTaskRejectedDueToCapacityError -) { - return Boolean(error && error instanceof EphemeralTaskRejectedDueToCapacityError); -} diff --git a/x-pack/plugins/task_manager/server/task_running/task_runner.ts b/x-pack/plugins/task_manager/server/task_running/task_runner.ts index 9f9dadbc27c93..4077190258e4b 100644 --- a/x-pack/plugins/task_manager/server/task_running/task_runner.ts +++ b/x-pack/plugins/task_manager/server/task_running/task_runner.ts @@ -79,7 +79,6 @@ export interface TaskRunner { id: string; taskExecutionId: string; stage: string; - isEphemeral?: boolean; toString: () => string; isSameTask: (executionId: string) => boolean; isAdHocTaskAndOutOfAttempts: boolean; diff --git a/x-pack/plugins/task_manager/server/task_scheduling.mock.ts b/x-pack/plugins/task_manager/server/task_scheduling.mock.ts index 64dd923d6712c..1981031b553c6 100644 --- a/x-pack/plugins/task_manager/server/task_scheduling.mock.ts +++ b/x-pack/plugins/task_manager/server/task_scheduling.mock.ts @@ -14,7 +14,6 @@ const createTaskSchedulingMock = () => { ensureScheduled: jest.fn(), schedule: jest.fn(), runSoon: jest.fn(), - ephemeralRunNow: jest.fn(), } as unknown as jest.Mocked; }; diff --git a/x-pack/plugins/task_manager/server/task_scheduling.test.ts b/x-pack/plugins/task_manager/server/task_scheduling.test.ts index df5f93a50ec8b..29bffbded5ec5 100644 --- a/x-pack/plugins/task_manager/server/task_scheduling.test.ts +++ b/x-pack/plugins/task_manager/server/task_scheduling.test.ts @@ -6,20 +6,15 @@ */ import sinon from 'sinon'; -import { BehaviorSubject, Observable, Subject } from 'rxjs'; import moment from 'moment'; -import { asTaskRunEvent, TaskPersistence } from './task_events'; -import { TaskLifecycleEvent } from './polling_lifecycle'; import { TaskScheduling } from './task_scheduling'; -import { asErr, asOk } from './lib/result_type'; +import { asOk } from './lib/result_type'; import { TaskStatus } from './task'; import { createInitialMiddleware } from './lib/middleware'; import { taskStoreMock } from './task_store.mock'; -import { TaskRunResult } from './task_running'; import { mockLogger } from './test_utils'; import { TaskTypeDictionary } from './task_type_dictionary'; -import { ephemeralTaskLifecycleMock } from './ephemeral_task_lifecycle.mock'; import { taskManagerMock } from './mocks'; import { omit } from 'lodash'; @@ -52,7 +47,6 @@ describe('TaskScheduling', () => { logger: mockLogger(), middleware: createInitialMiddleware(), definitions, - ephemeralTaskLifecycle: ephemeralTaskLifecycleMock.create({}), taskManagerId: '123', }; @@ -835,122 +829,6 @@ describe('TaskScheduling', () => { }); }); - describe('ephemeralRunNow', () => { - test('runs a task ephemerally', async () => { - const ephemeralEvents$ = new BehaviorSubject>({}); - const ephemeralTask = taskManagerMock.createTask({ - state: { - foo: 'bar', - }, - }); - const customEphemeralTaskLifecycleMock = ephemeralTaskLifecycleMock.create({ - events$: ephemeralEvents$ as Observable, - }); - - customEphemeralTaskLifecycleMock.attemptToRun.mockImplementation((value) => { - return { - tag: 'ok', - value, - }; - }); - - const middleware = createInitialMiddleware(); - middleware.beforeSave = jest.fn().mockImplementation(async () => { - return { taskInstance: ephemeralTask }; - }); - const taskScheduling = new TaskScheduling({ - ...taskSchedulingOpts, - middleware, - ephemeralTaskLifecycle: customEphemeralTaskLifecycleMock, - }); - - const result = taskScheduling.ephemeralRunNow(ephemeralTask); - ephemeralEvents$.next( - asTaskRunEvent( - 'v4uuid', - asOk({ - task: { - ...ephemeralTask, - id: 'v4uuid', - }, - result: TaskRunResult.Success, - persistence: TaskPersistence.Ephemeral, - isExpired: false, - }) - ) - ); - await expect(result).resolves.toEqual({ id: 'v4uuid', state: { foo: 'bar' } }); - }); - - test('rejects ephemeral task if lifecycle returns an error', async () => { - const ephemeralEvents$ = new Subject(); - const ephemeralTask = taskManagerMock.createTask({ - state: { - foo: 'bar', - }, - }); - const customEphemeralTaskLifecycleMock = ephemeralTaskLifecycleMock.create({ - events$: ephemeralEvents$, - }); - - customEphemeralTaskLifecycleMock.attemptToRun.mockImplementation((value) => { - return asErr(value); - }); - - const middleware = createInitialMiddleware(); - middleware.beforeSave = jest.fn().mockImplementation(async () => { - return { taskInstance: ephemeralTask }; - }); - const taskScheduling = new TaskScheduling({ - ...taskSchedulingOpts, - middleware, - ephemeralTaskLifecycle: customEphemeralTaskLifecycleMock, - }); - - const result = taskScheduling.ephemeralRunNow(ephemeralTask); - ephemeralEvents$.next( - asTaskRunEvent( - 'v4uuid', - asOk({ - task: { - ...ephemeralTask, - id: 'v4uuid', - }, - result: TaskRunResult.Failed, - persistence: TaskPersistence.Ephemeral, - isExpired: false, - }) - ) - ); - - await expect(result).rejects.toMatchInlineSnapshot( - `[Error: Ephemeral Task of type foo was rejected]` - ); - }); - - test('rejects ephemeral task if ephemeralTaskLifecycle is not defined', async () => { - const ephemeralTask = taskManagerMock.createTask({ - state: { - foo: 'bar', - }, - }); - const middleware = createInitialMiddleware(); - middleware.beforeSave = jest.fn().mockImplementation(async () => { - return { taskInstance: ephemeralTask }; - }); - const taskScheduling = new TaskScheduling({ - ...taskSchedulingOpts, - middleware, - ephemeralTaskLifecycle: undefined, - }); - - const result = taskScheduling.ephemeralRunNow(ephemeralTask); - await expect(result).rejects.toMatchInlineSnapshot( - `[Error: Ephemeral Task of type foo was rejected because ephemeral tasks are not supported]` - ); - }); - }); - describe('bulkSchedule', () => { test('allows scheduling tasks', async () => { const taskScheduling = new TaskScheduling(taskSchedulingOpts); diff --git a/x-pack/plugins/task_manager/server/task_scheduling.ts b/x-pack/plugins/task_manager/server/task_scheduling.ts index 1a66cddfa6373..6972e8eeabf5e 100644 --- a/x-pack/plugins/task_manager/server/task_scheduling.ts +++ b/x-pack/plugins/task_manager/server/task_scheduling.ts @@ -5,29 +5,14 @@ * 2.0. */ -import { filter, take } from 'rxjs'; import pMap from 'p-map'; - -import { v4 as uuidv4 } from 'uuid'; -import { chunk, flatten, pick } from 'lodash'; -import { Subject } from 'rxjs'; +import { chunk, flatten } from 'lodash'; import agent from 'elastic-apm-node'; import { Logger } from '@kbn/core/server'; -import { either, isErr, mapErr } from './lib/result_type'; -import { - ErroredTask, - ErrResultOf, - isTaskClaimEvent, - isTaskRunEvent, - isTaskRunRequestEvent, - OkResultOf, - RanTask, -} from './task_events'; import { Middleware } from './lib/middleware'; import { parseIntervalAsMillisecond } from './lib/intervals'; import { ConcreteTaskInstance, - EphemeralTask, IntervalSchedule, TaskInstanceWithDeprecatedFields, TaskInstanceWithId, @@ -35,9 +20,6 @@ import { } from './task'; import { TaskStore } from './task_store'; import { ensureDeprecatedFieldsAreCorrected } from './lib/correct_deprecated_fields'; -import { TaskLifecycleEvent } from './polling_lifecycle'; -import { EphemeralTaskLifecycle } from './ephemeral_task_lifecycle'; -import { EphemeralTaskRejectedDueToCapacityError } from './task_running'; import { retryableBulkUpdate } from './lib/retryable_bulk_update'; import { ErrorOutput } from './lib/bulk_operation_buffer'; @@ -46,7 +28,6 @@ const BULK_ACTION_SIZE = 100; export interface TaskSchedulingOpts { logger: Logger; taskStore: TaskStore; - ephemeralTaskLifecycle?: EphemeralTaskLifecycle; middleware: Middleware; taskManagerId: string; } @@ -76,10 +57,8 @@ export interface RunNowResult { export class TaskScheduling { private store: TaskStore; - private ephemeralTaskLifecycle?: EphemeralTaskLifecycle; private logger: Logger; private middleware: Middleware; - private taskManagerId: string; /** * Initializes the task manager, preventing any further addition of middleware, @@ -89,9 +68,7 @@ export class TaskScheduling { constructor(opts: TaskSchedulingOpts) { this.logger = opts.logger; this.middleware = opts.middleware; - this.ephemeralTaskLifecycle = opts.ephemeralTaskLifecycle; this.store = opts.taskStore; - this.taskManagerId = opts.taskManagerId; } /** @@ -284,68 +261,6 @@ export class TaskScheduling { return { id: task.id }; } - /** - * Run an ad-hoc task in memory without persisting it into ES or distributing the load across the cluster. - * - * @param task - The ephemeral task being queued. - * @returns {Promise} - */ - public async ephemeralRunNow( - task: EphemeralTask, - options?: Record - ): Promise { - if (!this.ephemeralTaskLifecycle) { - throw new EphemeralTaskRejectedDueToCapacityError( - `Ephemeral Task of type ${task.taskType} was rejected because ephemeral tasks are not supported`, - task - ); - } - const id = uuidv4(); - const { taskInstance: modifiedTask } = await this.middleware.beforeSave({ - ...options, - taskInstance: task, - }); - return new Promise(async (resolve, reject) => { - try { - // The actual promise returned from this function is resolved after the awaitTaskRunResult promise resolves. - // However, we do not wait to await this promise, as we want later execution to happen in parallel. - // The awaitTaskRunResult promise is resolved once the ephemeral task is successfully executed (technically, when a TaskEventType.TASK_RUN is emitted with the same id). - // However, the ephemeral task won't even get into the queue until the subsequent this.ephemeralTaskLifecycle.attemptToRun is called (which puts it in the queue). - // The reason for all this confusion? Timing. - // In the this.ephemeralTaskLifecycle.attemptToRun, it's possible that the ephemeral task is put into the queue and processed before this function call returns anything. - // If that happens, putting the awaitTaskRunResult after would just hang because the task already completed. We need to listen for the completion before we add it to the queue to avoid this possibility. - const { cancel, resolveOnCancel } = cancellablePromise(); - this.awaitTaskRunResult(id, resolveOnCancel) - .then((arg: RunNowResult) => { - resolve(arg); - }) - .catch((err: Error) => { - reject(err); - }); - const attemptToRunResult = this.ephemeralTaskLifecycle!.attemptToRun({ - id, - scheduledAt: new Date(), - runAt: new Date(), - status: TaskStatus.Idle, - ownerId: this.taskManagerId, - ...modifiedTask, - }); - - if (isErr(attemptToRunResult)) { - cancel(); - reject( - new EphemeralTaskRejectedDueToCapacityError( - `Ephemeral Task of type ${task.taskType} was rejected`, - task - ) - ); - } - } catch (error) { - reject(error); - } - }); - } - /** * Schedules a task with an Id * @@ -366,63 +281,6 @@ export class TaskScheduling { } } - private awaitTaskRunResult(taskId: string, cancel?: Promise): Promise { - return new Promise((resolve, reject) => { - if (!this.ephemeralTaskLifecycle) { - reject( - new Error( - `Failed to run task "${taskId}" because ephemeral tasks are not supported. Rescheduled the task to ensure it is picked up as soon as possible.` - ) - ); - } - // listen for all events related to the current task - const subscription = this.ephemeralTaskLifecycle!.events.pipe( - filter(({ id }: TaskLifecycleEvent) => id === taskId) - ).subscribe((taskEvent: TaskLifecycleEvent) => { - if (isTaskClaimEvent(taskEvent)) { - mapErr(async (error: Error) => { - // reject if any error event takes place for the requested task - subscription.unsubscribe(); - }, taskEvent.event); - } else { - either, ErrResultOf>( - taskEvent.event, - (taskInstance: OkResultOf) => { - // resolve if the task has run sucessfully - if (isTaskRunEvent(taskEvent)) { - resolve(pick((taskInstance as RanTask).task, ['id', 'state'])); - subscription.unsubscribe(); - } - }, - async (errorResult: ErrResultOf) => { - // reject if any error event takes place for the requested task - subscription.unsubscribe(); - return reject( - new Error( - `Failed to run task "${taskId}": ${ - isTaskRunRequestEvent(taskEvent) - ? `Task Manager is at capacity, please try again later` - : isTaskRunEvent(taskEvent) - ? `${(errorResult as ErroredTask).error}` - : `${errorResult}` - }` - ) - ); - } - ); - } - }); - - if (cancel) { - cancel - .then(() => { - subscription.unsubscribe(); - }) - .catch(() => {}); - } - }); - } - private async getNonRunningTask(taskId: string) { const task = await this.store.get(taskId); switch (task.status) { @@ -438,17 +296,6 @@ export class TaskScheduling { } } -const cancellablePromise = () => { - const boolStream = new Subject(); - return { - cancel: () => boolStream.next(true), - resolveOnCancel: boolStream - .pipe(take(1)) - .toPromise() - .then(() => {}), - }; -}; - const randomlyOffsetRunTimestamp: (task: ConcreteTaskInstance) => ConcreteTaskInstance = (task) => { const now = Date.now(); const maximumOffsetTimestamp = now + 1000 * 60 * 5; // now + 5 minutes diff --git a/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.test.ts b/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.test.ts index db511677439ba..baa26638f8d38 100644 --- a/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.test.ts +++ b/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.test.ts @@ -26,43 +26,6 @@ describe('registerTaskManagerUsageCollector', () => { let collector: Collector; const logger = loggingSystemMock.createLogger(); - it('should report telemetry on the ephemeral queue', async () => { - const monitoringStats$ = new Subject(); - const monitoringUtilization$ = new Subject(); - const usageCollectionMock = createUsageCollectionSetupMock(); - const fetchContext = createCollectorFetchContextMock(); - usageCollectionMock.makeUsageCollector.mockImplementation((config) => { - collector = new Collector(logger, config); - return createUsageCollectionSetupMock().makeUsageCollector(config); - }); - - registerTaskManagerUsageCollector( - usageCollectionMock, - monitoringStats$, - monitoringUtilization$, - true, - 10, - [] - ); - - const mockHealth = getMockMonitoredHealth(); - monitoringStats$.next(mockHealth); - const mockUtilization = getMockMonitoredUtilization(); - monitoringUtilization$.next(mockUtilization); - await sleep(1001); - - expect(usageCollectionMock.makeUsageCollector).toBeCalled(); - const telemetry: TaskManagerUsage = (await collector.fetch(fetchContext)) as TaskManagerUsage; - expect(telemetry.ephemeral_tasks_enabled).toBe(true); - expect(telemetry.ephemeral_request_capacity).toBe(10); - expect(telemetry.ephemeral_stats).toMatchObject({ - status: mockHealth.stats.ephemeral?.status, - load: mockHealth.stats.ephemeral?.value.load, - executions_per_cycle: mockHealth.stats.ephemeral?.value.executionsPerCycle, - queued_tasks: mockHealth.stats.ephemeral?.value.queuedTasks, - }); - }); - it('should report telemetry on the excluded task types', async () => { const monitoringStats$ = new Subject(); const monitoringUtilization$ = new Subject(); @@ -77,8 +40,6 @@ describe('registerTaskManagerUsageCollector', () => { usageCollectionMock, monitoringStats$, monitoringUtilization$, - true, - 10, ['actions:*'] ); @@ -107,8 +68,6 @@ describe('registerTaskManagerUsageCollector', () => { usageCollectionMock, monitoringStats$, monitoringUtilization$, - true, - 10, ['actions:*'] ); @@ -146,8 +105,6 @@ describe('registerTaskManagerUsageCollector', () => { usageCollectionMock, monitoringStats$, monitoringUtilization$, - true, - 10, ['actions:*'] ); @@ -216,30 +173,6 @@ function getMockMonitoredHealth(overrides = {}): MonitoredHealth { }, }, }, - ephemeral: { - status: HealthStatus.OK, - timestamp: new Date().toISOString(), - value: { - load: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - executionsPerCycle: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - queuedTasks: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - }, - }, runtime: { timestamp: new Date().toISOString(), status: HealthStatus.OK, @@ -263,7 +196,6 @@ function getMockMonitoredHealth(overrides = {}): MonitoredHealth { persistence: { [TaskPersistence.Recurring]: 10, [TaskPersistence.NonRecurring]: 10, - [TaskPersistence.Ephemeral]: 10, }, result_frequency_percent_as_number: {}, }, diff --git a/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.ts b/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.ts index 6c8809c5c3d98..56594be045f9c 100644 --- a/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.ts +++ b/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.ts @@ -16,8 +16,6 @@ export function createTaskManagerUsageCollector( usageCollection: UsageCollectionSetup, monitoringStats$: Observable, monitoredUtilization$: Observable, - ephemeralTasksEnabled: boolean, - ephemeralRequestCapacity: number, excludeTaskTypes: string[] ) { let lastMonitoredHealth: MonitoredHealth | null = null; @@ -37,29 +35,6 @@ export function createTaskManagerUsageCollector( }, fetch: async () => { return { - ephemeral_tasks_enabled: ephemeralTasksEnabled, - ephemeral_request_capacity: ephemeralRequestCapacity, - ephemeral_stats: { - status: lastMonitoredHealth?.stats.ephemeral?.status ?? '', - queued_tasks: { - p50: lastMonitoredHealth?.stats.ephemeral?.value.queuedTasks.p50 ?? 0, - p90: lastMonitoredHealth?.stats.ephemeral?.value.queuedTasks.p90 ?? 0, - p95: lastMonitoredHealth?.stats.ephemeral?.value.queuedTasks.p95 ?? 0, - p99: lastMonitoredHealth?.stats.ephemeral?.value.queuedTasks.p99 ?? 0, - }, - load: { - p50: lastMonitoredHealth?.stats.ephemeral?.value.load.p50 ?? 0, - p90: lastMonitoredHealth?.stats.ephemeral?.value.load.p90 ?? 0, - p95: lastMonitoredHealth?.stats.ephemeral?.value.load.p95 ?? 0, - p99: lastMonitoredHealth?.stats.ephemeral?.value.load.p99 ?? 0, - }, - executions_per_cycle: { - p50: lastMonitoredHealth?.stats.ephemeral?.value.executionsPerCycle.p50 ?? 0, - p90: lastMonitoredHealth?.stats.ephemeral?.value.executionsPerCycle.p90 ?? 0, - p95: lastMonitoredHealth?.stats.ephemeral?.value.executionsPerCycle.p95 ?? 0, - p99: lastMonitoredHealth?.stats.ephemeral?.value.executionsPerCycle.p99 ?? 0, - }, - }, task_type_exclusion: excludeTaskTypes, failed_tasks: Object.entries(lastMonitoredHealth?.stats.workload?.value.task_types!).reduce( (numb, [key, val]) => { @@ -88,29 +63,6 @@ export function createTaskManagerUsageCollector( }; }, schema: { - ephemeral_tasks_enabled: { type: 'boolean' }, - ephemeral_request_capacity: { type: 'short' }, - ephemeral_stats: { - status: { type: 'keyword' }, - queued_tasks: { - p50: { type: 'long' }, - p90: { type: 'long' }, - p95: { type: 'long' }, - p99: { type: 'long' }, - }, - load: { - p50: { type: 'long' }, - p90: { type: 'long' }, - p95: { type: 'long' }, - p99: { type: 'long' }, - }, - executions_per_cycle: { - p50: { type: 'long' }, - p90: { type: 'long' }, - p95: { type: 'long' }, - p99: { type: 'long' }, - }, - }, task_type_exclusion: { type: 'array', items: { type: 'keyword' } }, failed_tasks: { type: 'long' }, recurring_tasks: { @@ -130,16 +82,12 @@ export function registerTaskManagerUsageCollector( usageCollection: UsageCollectionSetup, monitoringStats$: Observable, monitoredUtilization$: Observable, - ephemeralTasksEnabled: boolean, - ephemeralRequestCapacity: number, excludeTaskTypes: string[] ) { const collector = createTaskManagerUsageCollector( usageCollection, monitoringStats$, monitoredUtilization$, - ephemeralTasksEnabled, - ephemeralRequestCapacity, excludeTaskTypes ); usageCollection.registerCollector(collector); diff --git a/x-pack/plugins/task_manager/server/usage/types.ts b/x-pack/plugins/task_manager/server/usage/types.ts index 0e98d1d0685a0..97e990599be82 100644 --- a/x-pack/plugins/task_manager/server/usage/types.ts +++ b/x-pack/plugins/task_manager/server/usage/types.ts @@ -7,29 +7,6 @@ export interface TaskManagerUsage { task_type_exclusion: string[]; - ephemeral_tasks_enabled: boolean; - ephemeral_request_capacity: number; - ephemeral_stats: { - status: string; - queued_tasks: { - p50: number; - p90: number; - p95: number; - p99: number; - }; - load: { - p50: number; - p90: number; - p95: number; - p99: number; - }; - executions_per_cycle: { - p50: number; - p90: number; - p95: number; - p99: number; - }; - }; failed_tasks: number; recurring_tasks: { actual_service_time: number; diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_observability.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_observability.json index d5b0514b64918..4b60ca1da8d6b 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_observability.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_observability.json @@ -1,3 +1,212 @@ { - "properties": {} + "properties": { + "investigation": { + "properties": { + "investigation": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "The total number of investigations in the cluster" + } + }, + "by_status": { + "properties": { + "triage": { + "type": "long", + "_meta": { + "description": "The number of investigations in triage status in the cluster" + } + }, + "active": { + "type": "long", + "_meta": { + "description": "The number of investigations in active status in the cluster" + } + }, + "mitigated": { + "type": "long", + "_meta": { + "description": "The number of investigations in mitigated status in the cluster" + } + }, + "resolved": { + "type": "long", + "_meta": { + "description": "The number of investigations in resolved status in the cluster" + } + }, + "cancelled": { + "type": "long", + "_meta": { + "description": "The number of investigations in cancelled status in the cluster" + } + } + } + }, + "by_origin": { + "properties": { + "alert": { + "type": "long", + "_meta": { + "description": "The number of investigations created from alerts in the cluster" + } + }, + "blank": { + "type": "long", + "_meta": { + "description": "The number of investigations created from scratch in the cluster" + } + } + } + }, + "items": { + "properties": { + "avg": { + "type": "long", + "_meta": { + "description": "The average number of items across all investigations in the cluster" + } + }, + "p90": { + "type": "long", + "_meta": { + "description": "The 90th percentile of the number of items across all investigations in the cluster" + } + }, + "p95": { + "type": "long", + "_meta": { + "description": "The 95th percentile of the number of items across all investigations in the cluster" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "The maximum number of items across all investigations in the cluster" + } + }, + "min": { + "type": "long", + "_meta": { + "description": "The minimum number of items across all investigations in the cluster" + } + } + } + }, + "notes": { + "properties": { + "avg": { + "type": "long", + "_meta": { + "description": "The average number of notes across all investigations in the cluster" + } + }, + "p90": { + "type": "long", + "_meta": { + "description": "The 90th percentile of the number of notes across all investigations in the cluster" + } + }, + "p95": { + "type": "long", + "_meta": { + "description": "The 95th percentile of the number of notes across all investigations in the cluster" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "The maximum number of notes across all investigations in the cluster" + } + }, + "min": { + "type": "long", + "_meta": { + "description": "The minimum number of notes across all investigations in the cluster" + } + } + } + } + } + } + } + }, + "slo": { + "properties": { + "slo": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "The total number of slos in the cluster" + } + }, + "by_status": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "The number of enabled slos in the cluster" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "The number of disabled slos in the cluster" + } + } + } + }, + "by_sli_type": { + "properties": { + "DYNAMIC_KEY": { + "type": "long", + "_meta": { + "description": "The number of slos by sli type in the cluster" + } + } + } + }, + "by_rolling_duration": { + "properties": { + "DYNAMIC_KEY": { + "type": "long", + "_meta": { + "description": "The number of slos by rolling duration in the cluster" + } + } + } + }, + "by_calendar_aligned_duration": { + "properties": { + "DYNAMIC_KEY": { + "type": "long", + "_meta": { + "description": "The number of slos by calendar aligned duration in the cluster" + } + } + } + }, + "by_budgeting_method": { + "properties": { + "occurrences": { + "type": "long", + "_meta": { + "description": "The number of slos by timeslices budgeting method in the cluster" + } + }, + "timeslices": { + "type": "long", + "_meta": { + "description": "The number of slos by occurrences budgeting method in the cluster" + } + } + } + } + } + } + } + } + } } diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_platform.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_platform.json index 06c19e82e6532..c5371a8815aef 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_platform.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_platform.json @@ -66,6 +66,62 @@ } } }, + "rollups": { + "properties": { + "index_patterns": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "Counts all the rollup index patterns" + } + } + } + }, + "saved_searches": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "Counts all the rollup saved searches" + } + } + } + }, + "visualizations": { + "properties": { + "saved_searches": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "Counts all the visualizations that are based on rollup saved searches" + } + }, + "lens_total": { + "type": "long", + "_meta": { + "description": "Counts all the lens visualizations that are based on rollup saved searches" + } + } + } + }, + "total": { + "type": "long", + "_meta": { + "description": "Counts all the visualizations that are based on rollup index patterns" + } + }, + "lens_total": { + "type": "long", + "_meta": { + "description": "Counts all the lens visualizations that are based on rollup index patterns" + } + } + } + } + } + }, "transform": { "properties": { "alertRules": { diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index eb9150f8482e2..b2870f3ef4809 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -10955,909 +10955,197 @@ } } }, - "cloud_defend": { + "connectors": { "properties": { - "indices": { - "properties": { - "alerts": { - "properties": { - "doc_count": { - "type": "long" - }, - "deleted": { - "type": "long" - }, - "size_in_bytes": { - "type": "long" - }, - "last_doc_timestamp": { - "type": "date" - } - } - }, - "file": { - "properties": { - "doc_count": { - "type": "long" - }, - "deleted": { - "type": "long" - }, - "size_in_bytes": { - "type": "long" - }, - "last_doc_timestamp": { - "type": "date" - } - } - }, - "process": { - "properties": { - "doc_count": { - "type": "long" - }, - "deleted": { - "type": "long" - }, - "size_in_bytes": { - "type": "long" - }, - "last_doc_timestamp": { - "type": "date" - } - } - }, - "latestPackageVersion": { - "type": "keyword" - }, - "packageStatus": { - "properties": { - "status": { - "type": "keyword" - }, - "installedPackagePolicies": { - "type": "long" - }, - "healthyAgents": { - "type": "long" - } - } - } - } - }, - "pods_stats": { + "connectors": { "type": "array", "items": { "properties": { - "account_id": { - "type": "keyword" - }, - "container_image_name": { - "type": "keyword" - }, - "container_image_tag": { + "id": { "type": "keyword" }, - "pod_name": { + "serviceType": { "type": "keyword" }, - "total_doc_count": { - "type": "long" - }, - "process_doc_count": { - "type": "long" - }, - "file_doc_count": { - "type": "long" - }, - "alert_doc_count": { - "type": "long" - } - } - } - }, - "accounts_stats": { - "type": "array", - "items": { - "properties": { - "account_id": { - "type": "keyword" + "isNative": { + "type": "boolean" }, - "cloud_provider": { - "type": "keyword" + "isDeleted": { + "type": "boolean" }, - "kubernetes_version": { + "status": { "type": "keyword" }, - "total_doc_count": { - "type": "long" - }, - "file_doc_count": { - "type": "long" - }, - "process_doc_count": { - "type": "long" - }, - "alert_doc_count": { - "type": "long" - }, - "agents_count": { - "type": "short" - }, - "nodes_count": { - "type": "short" - }, - "pods_count": { - "type": "short" - } - } - } - }, - "installation_stats": { - "type": "array", - "items": { - "properties": { - "package_policy_id": { + "indexName": { "type": "keyword" }, - "package_version": { - "type": "keyword" + "dlsEnabled": { + "type": "boolean" }, - "agent_policy_id": { - "type": "keyword" + "sslEnabled": { + "type": "boolean" }, - "created_at": { - "type": "date" + "fetchSelectively": { + "type": "boolean" }, - "agent_count": { - "type": "long" + "textExtractionServiceEnabled": { + "type": "boolean" }, - "policy_yaml": { - "type": "keyword" + "documents": { + "properties": { + "total": { + "type": "long" + }, + "volume": { + "type": "long" + }, + "inLastSync": { + "type": "long" + } + } }, - "selectors": { - "type": "array", - "items": { - "properties": { - "type": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "operation": { - "type": "array", - "items": { - "type": "keyword" - } - }, - "containerImageFullName": { - "type": "array", - "items": { - "type": "keyword" - } - }, - "containerImageName": { - "type": "array", - "items": { + "dataSourceSpecific": { + "properties": { + "confluence": { + "properties": { + "dataSourceType": { "type": "keyword" } - }, - "containerImageTag": { - "type": "array", - "items": { - "type": "keyword" + } + }, + "github": { + "properties": { + "isCloud": { + "type": "boolean" } - }, - "kubernetesClusterId": { - "type": "array", - "items": { + } + }, + "jira": { + "properties": { + "dataSourceType": { "type": "keyword" } - }, - "kubernetesClusterName": { - "type": "array", - "items": { - "type": "keyword" + } + }, + "mongodb": { + "properties": { + "directConnect": { + "type": "boolean" } - }, - "kubernetesNamespace": { - "type": "array", - "items": { - "type": "keyword" + } + }, + "mssql": { + "properties": { + "validateHost": { + "type": "boolean" + }, + "tables": { + "type": "long" } - }, - "kubernetesPodLabel": { - "type": "array", - "items": { - "type": "keyword" + } + }, + "mysql": { + "properties": { + "tables": { + "type": "long" } - }, - "kubernetesPodName": { - "type": "array", - "items": { - "type": "keyword" + } + }, + "oracle": { + "properties": { + "tables": { + "type": "long" } - }, - "targetFilePath": { - "type": "array", - "items": { - "type": "keyword" + } + }, + "postgresql": { + "properties": { + "tables": { + "type": "long" } - }, - "ignoreVolumeFiles": { - "type": "boolean" - }, - "ignoreVolumeMounts": { - "type": "boolean" - }, - "processExecutable": { - "type": "array", - "items": { - "type": "keyword" + } + }, + "slack": { + "properties": { + "autoJoinChannelsEnabled": { + "type": "boolean" + }, + "syncUsersEnabled": { + "type": "boolean" + }, + "fetchLastNDays": { + "type": "long" } - }, - "processName": { - "type": "array", - "items": { - "type": "keyword" + } + }, + "zoom": { + "properties": { + "recordingAge": { + "type": "long" } - }, - "sessionLeaderInteractive": { - "type": "boolean" } } } }, - "responses": { - "type": "array", - "items": { - "properties": { - "type": { - "type": "keyword" - }, - "match": { - "type": "array", - "items": { - "type": "keyword" - } - }, - "exclude": { - "type": "array", - "items": { - "type": "keyword" + "scheduling": { + "properties": { + "accessControl": { + "properties": { + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "text" } - }, - "actions": { - "type": "array", - "items": { - "type": "keyword" + } + }, + "full": { + "properties": { + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "text" + } + } + }, + "incremental": { + "properties": { + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "text" } } } } - } - } - } - } - } - }, - "cloud_security_posture": { - "properties": { - "indices": { - "properties": { - "findings": { - "properties": { - "doc_count": { - "type": "long" - }, - "deleted": { - "type": "long" - }, - "size_in_bytes": { - "type": "long" - }, - "last_doc_timestamp": { - "type": "date" - } - } - }, - "latest_findings": { - "properties": { - "doc_count": { - "type": "long" - }, - "deleted": { - "type": "long" - }, - "size_in_bytes": { - "type": "long" - }, - "last_doc_timestamp": { - "type": "date" - } - } - }, - "vulnerabilities": { - "properties": { - "doc_count": { - "type": "long" - }, - "deleted": { - "type": "long" - }, - "size_in_bytes": { - "type": "long" - }, - "last_doc_timestamp": { - "type": "date" - } - } - }, - "latest_vulnerabilities": { - "properties": { - "doc_count": { - "type": "long" - }, - "deleted": { - "type": "long" - }, - "size_in_bytes": { - "type": "long" - }, - "last_doc_timestamp": { - "type": "date" - } - } - }, - "score": { - "properties": { - "doc_count": { - "type": "long" - }, - "deleted": { - "type": "long" - }, - "size_in_bytes": { - "type": "long" - }, - "last_doc_timestamp": { - "type": "date" - } - } - }, - "latestPackageVersion": { - "type": "keyword" - }, - "cspm": { - "properties": { - "status": { - "type": "keyword" - }, - "installedPackagePolicies": { - "type": "long" - }, - "healthyAgents": { - "type": "long" - } - } - }, - "kspm": { - "properties": { - "status": { - "type": "keyword" - }, - "installedPackagePolicies": { - "type": "long" - }, - "healthyAgents": { - "type": "long" - } - } - }, - "vuln_mgmt": { - "properties": { - "status": { - "type": "keyword" - }, - "installedPackagePolicies": { - "type": "long" - }, - "healthyAgents": { - "type": "long" - } - } - } - } - }, - "resources_stats": { - "type": "array", - "items": { - "properties": { - "account_id": { - "type": "keyword" - }, - "resource_type": { - "type": "keyword" - }, - "resource_type_doc_count": { - "type": "long" - }, - "resource_sub_type": { - "type": "keyword" - }, - "resource_sub_type_doc_count": { - "type": "long" - }, - "passed_findings_count": { - "type": "long" - }, - "failed_findings_count": { - "type": "long" - } - } - } - }, - "accounts_stats": { - "type": "array", - "items": { - "properties": { - "account_id": { - "type": "keyword" - }, - "posture_score": { - "type": "long" - }, - "latest_findings_doc_count": { - "type": "long" - }, - "benchmark_id": { - "type": "keyword" - }, - "benchmark_name": { - "type": "keyword" - }, - "benchmark_version": { - "type": "keyword" - }, - "kubernetes_version": { - "type": "keyword" - }, - "passed_findings_count": { - "type": "long" - }, - "failed_findings_count": { - "type": "long" - }, - "agents_count": { - "type": "short" - }, - "nodes_count": { - "type": "short" - }, - "pods_count": { - "type": "short" - } - } - } - }, - "rules_stats": { - "type": "array", - "items": { - "properties": { - "account_id": { - "type": "keyword" - }, - "rule_id": { - "type": "keyword" - }, - "rule_name": { - "type": "keyword" - }, - "rule_section": { - "type": "keyword" - }, - "rule_version": { - "type": "keyword" - }, - "rule_number": { - "type": "keyword" - }, - "posture_type": { - "type": "keyword" - }, - "benchmark_id": { - "type": "keyword" - }, - "benchmark_name": { - "type": "keyword" - }, - "benchmark_version": { - "type": "keyword" - }, - "passed_findings_count": { - "type": "long" - }, - "failed_findings_count": { - "type": "long" - } - } - } - }, - "installation_stats": { - "type": "array", - "items": { - "properties": { - "package_policy_id": { - "type": "keyword" - }, - "feature": { - "type": "keyword" - }, - "package_version": { - "type": "keyword" - }, - "agent_policy_id": { - "type": "keyword" - }, - "deployment_mode": { - "type": "keyword" - }, - "created_at": { - "type": "date" - }, - "agent_count": { - "type": "long" - }, - "is_agentless": { - "type": "boolean" - }, - "account_type": { - "type": "keyword" - }, - "is_setup_automatic": { - "type": "boolean" - }, - "setup_access_option": { - "type": "keyword" - } - } - } - }, - "alerts_stats": { - "type": "array", - "items": { - "properties": { - "posture_type": { - "type": "keyword" - }, - "rules_count": { - "type": "long" - }, - "alerts_count": { - "type": "long" - }, - "alerts_open_count": { - "type": "long" - }, - "alerts_closed_count": { - "type": "long" - }, - "alerts_acknowledged_count": { - "type": "long" - } - } - } - }, - "cloud_account_stats": { - "type": "array", - "items": { - "properties": { - "account_id": { - "type": "keyword" - }, - "cloud_provider": { - "type": "keyword" - }, - "product": { - "type": "keyword" }, - "package_policy_id": { - "type": "keyword" - }, - "latest_doc_count": { - "type": "long" - }, - "latest_doc_updated_timestamp": { - "type": "date" - }, - "posture_management_stats": { + "syncRules": { "properties": { - "posture_score": { - "type": "long" - }, - "benchmark_name": { - "type": "keyword" - }, - "benchmark_version": { - "type": "keyword" - }, - "passed_findings_count": { - "type": "long" + "active": { + "properties": { + "withBasicRules": { + "type": "boolean" + }, + "withAdvancedRules": { + "type": "boolean" + } + } }, - "failed_findings_count": { - "type": "long" + "draft": { + "properties": { + "withBasicRules": { + "type": "boolean" + }, + "withAdvancedRules": { + "type": "boolean" + } + } } } }, - "posture_management_stats_enabled_rules": { - "properties": { - "posture_score": { - "type": "long" - }, - "benchmark_name": { - "type": "keyword" - }, - "benchmark_version": { - "type": "keyword" - }, - "passed_findings_count": { - "type": "long" - }, - "failed_findings_count": { - "type": "long" - } - } - }, - "kspm_stats": { - "properties": { - "kubernetes_version": { - "type": "keyword" - }, - "agents_count": { - "type": "short" - }, - "nodes_count": { - "type": "short" - }, - "pods_count": { - "type": "short" - } - } - }, - "has_muted_rules": { - "type": "boolean" - } - } - } - }, - "muted_rules_stats": { - "type": "array", - "items": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "section": { - "type": "keyword" - }, - "benchmark_id": { - "type": "keyword" - }, - "benchmark_name": { - "type": "keyword" - }, - "benchmark_version": { - "type": "keyword" - }, - "rule_number": { - "type": "keyword" - }, - "posture_type": { - "type": "keyword" - }, - "version": { - "type": "keyword" - } - } - } - } - } - }, - "connectors": { - "properties": { - "connectors": { - "type": "array", - "items": { - "properties": { - "id": { - "type": "keyword" - }, - "serviceType": { - "type": "keyword" - }, - "isNative": { - "type": "boolean" - }, - "isDeleted": { - "type": "boolean" - }, - "status": { - "type": "keyword" - }, - "indexName": { - "type": "keyword" - }, - "dlsEnabled": { - "type": "boolean" - }, - "sslEnabled": { - "type": "boolean" - }, - "fetchSelectively": { - "type": "boolean" - }, - "textExtractionServiceEnabled": { - "type": "boolean" - }, - "documents": { - "properties": { - "total": { - "type": "long" - }, - "volume": { - "type": "long" - }, - "inLastSync": { - "type": "long" - } - } - }, - "dataSourceSpecific": { - "properties": { - "confluence": { - "properties": { - "dataSourceType": { - "type": "keyword" - } - } - }, - "github": { - "properties": { - "isCloud": { - "type": "boolean" - } - } - }, - "jira": { - "properties": { - "dataSourceType": { - "type": "keyword" - } - } - }, - "mongodb": { - "properties": { - "directConnect": { - "type": "boolean" - } - } - }, - "mssql": { - "properties": { - "validateHost": { - "type": "boolean" - }, - "tables": { - "type": "long" - } - } - }, - "mysql": { - "properties": { - "tables": { - "type": "long" - } - } - }, - "oracle": { - "properties": { - "tables": { - "type": "long" - } - } - }, - "postgresql": { - "properties": { - "tables": { - "type": "long" - } - } - }, - "slack": { - "properties": { - "autoJoinChannelsEnabled": { - "type": "boolean" - }, - "syncUsersEnabled": { - "type": "boolean" - }, - "fetchLastNDays": { - "type": "long" - } - } - }, - "zoom": { - "properties": { - "recordingAge": { - "type": "long" - } - } - } - } - }, - "scheduling": { - "properties": { - "accessControl": { - "properties": { - "enabled": { - "type": "boolean" - }, - "interval": { - "type": "text" - } - } - }, - "full": { - "properties": { - "enabled": { - "type": "boolean" - }, - "interval": { - "type": "text" - } - } - }, - "incremental": { - "properties": { - "enabled": { - "type": "boolean" - }, - "interval": { - "type": "text" - } - } - } - } - }, - "syncRules": { - "properties": { - "active": { - "properties": { - "withBasicRules": { - "type": "boolean" - }, - "withAdvancedRules": { - "type": "boolean" - } - } - }, - "draft": { - "properties": { - "withBasicRules": { - "type": "boolean" - }, - "withAdvancedRules": { - "type": "boolean" - } - } - } - } - }, - "ingestPipeline": { + "ingestPipeline": { "properties": { "name": { "type": "keyword" @@ -13643,141 +12931,9 @@ } } }, - "investigation": { + "kibana_settings": { "properties": { - "investigation": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "The total number of investigations in the cluster" - } - }, - "by_status": { - "properties": { - "triage": { - "type": "long", - "_meta": { - "description": "The number of investigations in triage status in the cluster" - } - }, - "active": { - "type": "long", - "_meta": { - "description": "The number of investigations in active status in the cluster" - } - }, - "mitigated": { - "type": "long", - "_meta": { - "description": "The number of investigations in mitigated status in the cluster" - } - }, - "resolved": { - "type": "long", - "_meta": { - "description": "The number of investigations in resolved status in the cluster" - } - }, - "cancelled": { - "type": "long", - "_meta": { - "description": "The number of investigations in cancelled status in the cluster" - } - } - } - }, - "by_origin": { - "properties": { - "alert": { - "type": "long", - "_meta": { - "description": "The number of investigations created from alerts in the cluster" - } - }, - "blank": { - "type": "long", - "_meta": { - "description": "The number of investigations created from scratch in the cluster" - } - } - } - }, - "items": { - "properties": { - "avg": { - "type": "long", - "_meta": { - "description": "The average number of items across all investigations in the cluster" - } - }, - "p90": { - "type": "long", - "_meta": { - "description": "The 90th percentile of the number of items across all investigations in the cluster" - } - }, - "p95": { - "type": "long", - "_meta": { - "description": "The 95th percentile of the number of items across all investigations in the cluster" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum number of items across all investigations in the cluster" - } - }, - "min": { - "type": "long", - "_meta": { - "description": "The minimum number of items across all investigations in the cluster" - } - } - } - }, - "notes": { - "properties": { - "avg": { - "type": "long", - "_meta": { - "description": "The average number of notes across all investigations in the cluster" - } - }, - "p90": { - "type": "long", - "_meta": { - "description": "The 90th percentile of the number of notes across all investigations in the cluster" - } - }, - "p95": { - "type": "long", - "_meta": { - "description": "The 95th percentile of the number of notes across all investigations in the cluster" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum number of notes across all investigations in the cluster" - } - }, - "min": { - "type": "long", - "_meta": { - "description": "The minimum number of notes across all investigations in the cluster" - } - } - } - } - } - } - } - }, - "kibana_settings": { - "properties": { - "xpack": { + "xpack": { "properties": { "default_admin_email": { "type": "text" @@ -14698,4977 +13854,368 @@ }, "avg": { "type": "float", - "_meta": { - "description": "avg number of ems basemap layers with auto-style per map" - } - }, - "total": { - "type": "long", - "_meta": { - "description": "total number of ems basemap layers with auto-style in cluster" - } - } - } - }, - "dark": { - "properties": { - "min": { - "type": "long", - "_meta": { - "description": "min number of ems basemap layers with dark-style per map" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "max number of ems basemap layers with dark-style per map" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "avg number of ems basemap layers with dark-style per map" - } - }, - "total": { - "type": "long", - "_meta": { - "description": "total number of ems basemap layers with dark-style in cluster" - } - } - } - }, - "roadmap": { - "properties": { - "min": { - "type": "long", - "_meta": { - "description": "min number of ems basemap layers with roadmap-style per map" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "max number of ems basemap layers with roadmap-style per map" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "avg number of ems basemap layers with roadmap-style per map" - } - }, - "total": { - "type": "long", - "_meta": { - "description": "total number of ems basemap layers with roadmap-style in cluster" - } - } - } - }, - "roadmap_desaturated": { - "properties": { - "min": { - "type": "long", - "_meta": { - "description": "min number of ems basemap layers with desaturated-style per map" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "max number of ems basemap layers with desaturated-style per map" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "avg number of ems basemap layers with desaturated-style per map" - } - }, - "total": { - "type": "long", - "_meta": { - "description": "total number of ems basemap layers with desaturated-style in cluster" - } - } - } - } - } - }, - "attributesPerMap": { - "properties": { - "dataSourcesCount": { - "properties": { - "min": { - "type": "long" - }, - "max": { - "type": "long" - }, - "avg": { - "type": "float" - } - } - }, - "layersCount": { - "properties": { - "min": { - "type": "long" - }, - "max": { - "type": "long" - }, - "avg": { - "type": "float" - } - } - }, - "layerTypesCount": { - "properties": { - "DYNAMIC_KEY": { - "properties": { - "min": { - "type": "long" - }, - "max": { - "type": "long" - }, - "avg": { - "type": "float" - } - } - } - } - }, - "emsVectorLayersCount": { - "properties": { - "DYNAMIC_KEY": { - "properties": { - "min": { - "type": "long" - }, - "max": { - "type": "long" - }, - "avg": { - "type": "float" - } - } - } - } - }, - "customIconsCount": { - "properties": { - "min": { - "type": "long" - }, - "max": { - "type": "long" - }, - "avg": { - "type": "float" - } - } - } - } - } - } - }, - "monitoring": { - "properties": { - "hasMonitoringData": { - "type": "boolean" - }, - "clusters": { - "type": "array", - "items": { - "properties": { - "license": { - "type": "keyword" - }, - "clusterUuid": { - "type": "keyword" - }, - "metricbeatUsed": { - "type": "boolean" - }, - "elasticsearch": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" - } - } - }, - "kibana": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" - } - } - }, - "logstash": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" - } - } - }, - "beats": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" - } - } - }, - "apm": { - "properties": { - "enabled": { - "type": "boolean" - }, - "count": { - "type": "long" - }, - "metricbeatUsed": { - "type": "boolean" - } - } - } - } - } - } - } - }, - "reporting": { - "properties": { - "available": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - } - } - }, - "rollups": { - "properties": { - "index_patterns": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "Counts all the rollup index patterns" - } - } - } - }, - "saved_searches": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "Counts all the rollup saved searches" - } - } - } - }, - "visualizations": { - "properties": { - "saved_searches": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "Counts all the visualizations that are based on rollup saved searches" - } - }, - "lens_total": { - "type": "long", - "_meta": { - "description": "Counts all the lens visualizations that are based on rollup saved searches" - } - } - } - }, - "total": { - "type": "long", - "_meta": { - "description": "Counts all the visualizations that are based on rollup index patterns" - } - }, - "lens_total": { - "type": "long", - "_meta": { - "description": "Counts all the lens visualizations that are based on rollup index patterns" - } - } - } - } - } - }, - "saved_objects_tagging": { - "properties": { - "usedTags": { - "type": "integer" - }, - "taggedObjects": { - "type": "integer" - }, - "types": { - "properties": { - "dashboard": { - "properties": { - "usedTags": { - "type": "integer" - }, - "taggedObjects": { - "type": "integer" - } - } - }, - "lens": { - "properties": { - "usedTags": { - "type": "integer" - }, - "taggedObjects": { - "type": "integer" - } - } - }, - "visualization": { - "properties": { - "usedTags": { - "type": "integer" - }, - "taggedObjects": { - "type": "integer" - } - } - }, - "map": { - "properties": { - "usedTags": { - "type": "integer" - }, - "taggedObjects": { - "type": "integer" - } - } - }, - "search": { - "properties": { - "usedTags": { - "type": "integer" - }, - "taggedObjects": { - "type": "integer" - } - } - }, - "osquery-pack": { - "properties": { - "usedTags": { - "type": "integer" - }, - "taggedObjects": { - "type": "integer" - } - } - }, - "osquery-pack-asset": { - "properties": { - "usedTags": { - "type": "integer" - }, - "taggedObjects": { - "type": "integer" - } - } - }, - "osquery-saved-query": { - "properties": { - "usedTags": { - "type": "integer" - }, - "taggedObjects": { - "type": "integer" - } - } - } - } - } - } - }, - "security": { - "properties": { - "auditLoggingEnabled": { - "type": "boolean", - "_meta": { - "description": "Indicates if audit logging is both enabled and supported by the current license." - } - }, - "loginSelectorEnabled": { - "type": "boolean", - "_meta": { - "description": "Indicates if the login selector UI is enabled." - } - }, - "accessAgreementEnabled": { - "type": "boolean", - "_meta": { - "description": "Indicates if the access agreement UI is both enabled and supported by the current license." - } - }, - "authProviderCount": { - "type": "long", - "_meta": { - "description": "The number of configured auth providers (including disabled auth providers)." - } - }, - "enabledAuthProviders": { - "type": "array", - "items": { - "type": "keyword", - "_meta": { - "description": "The types of enabled auth providers (such as `saml`, `basic`, `pki`, etc)." - } - } - }, - "fipsModeEnabled": { - "type": "boolean", - "_meta": { - "description": "Indicates if Kibana is being run in FIPS mode." - } - }, - "httpAuthSchemes": { - "type": "array", - "items": { - "type": "keyword", - "_meta": { - "description": "The set of enabled http auth schemes. Used for api-based usage, and when credentials are provided via reverse-proxy." - } - } - }, - "sessionIdleTimeoutInMinutes": { - "type": "long", - "_meta": { - "description": "The global session idle timeout expiration that is configured, in minutes (0 if disabled)." - } - }, - "sessionLifespanInMinutes": { - "type": "long", - "_meta": { - "description": "The global session lifespan expiration that is configured, in minutes (0 if disabled)." - } - }, - "sessionCleanupInMinutes": { - "type": "long", - "_meta": { - "description": "The session cleanup interval that is configured, in minutes (0 if disabled)." - } - }, - "sessionConcurrentSessionsMaxSessions": { - "type": "long", - "_meta": { - "description": "The maximum number of the concurrent user sessions (0 if not configured)." - } - }, - "anonymousCredentialType": { - "type": "keyword", - "_meta": { - "description": "The credential type that is configured for the anonymous authentication provider." - } - } - } - }, - "security_solution": { - "properties": { - "detectionMetrics": { - "properties": { - "detection_rules": { - "properties": { - "detection_rule_usage": { - "properties": { - "query": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of query rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of query rules disabled" - } - }, - "alerts": { - "type": "long", - "_meta": { - "description": "Number of alerts generated by query rules" - } - }, - "cases": { - "type": "long", - "_meta": { - "description": "Number of cases attached to query detection rule alerts" - } - }, - "legacy_notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications enabled" - } - }, - "legacy_notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications disabled" - } - }, - "notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "legacy_investigation_fields": { - "type": "long", - "_meta": { - "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" - } - }, - "alert_suppression": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of enabled query rules configured with suppression" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of disabled query rules configured with suppression" - } - }, - "suppressed_fields_count": { - "properties": { - "one": { - "type": "long", - "_meta": { - "description": "Number of query rules configured with one suppression field" - } - }, - "two": { - "type": "long", - "_meta": { - "description": "Number of query rules configured with two suppression field" - } - }, - "three": { - "type": "long", - "_meta": { - "description": "Number of query rules configured with three suppression field" - } - } - } - }, - "suppressed_per_time_period": { - "type": "long", - "_meta": { - "description": "Number of query rules configured with suppression per time period" - } - }, - "suppressed_per_rule_execution": { - "type": "long", - "_meta": { - "description": "Number of query rules configured with suppression per rule execution" - } - }, - "suppresses_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of query rules configured to suppress alerts with missing fields" - } - }, - "does_not_suppress_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of query rules configured do not suppress alerts with missing fields" - } - } - } - } - } - }, - "threshold": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of threshold rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of threshold rules disabled" - } - }, - "alerts": { - "type": "long", - "_meta": { - "description": "Number of alerts generated by threshold rules" - } - }, - "cases": { - "type": "long", - "_meta": { - "description": "Number of cases attached to threshold detection rule alerts" - } - }, - "legacy_notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications enabled" - } - }, - "legacy_notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications disabled" - } - }, - "notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "legacy_investigation_fields": { - "type": "long", - "_meta": { - "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" - } - }, - "alert_suppression": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of enabled threshold rules configured with suppression" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of disabled threshold rules configured with suppression" - } - }, - "suppressed_fields_count": { - "properties": { - "one": { - "type": "long", - "_meta": { - "description": "Number of threshold rules configured with one suppression field" - } - }, - "two": { - "type": "long", - "_meta": { - "description": "Number of threshold rules configured with two suppression field" - } - }, - "three": { - "type": "long", - "_meta": { - "description": "Number of threshold rules configured with three suppression field" - } - } - } - }, - "suppressed_per_time_period": { - "type": "long", - "_meta": { - "description": "Number of threshold rules configured with suppression per time period" - } - }, - "suppressed_per_rule_execution": { - "type": "long", - "_meta": { - "description": "Number of threshold rules configured with suppression per rule execution" - } - }, - "suppresses_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of threshold rules configured to suppress alerts with missing fields" - } - }, - "does_not_suppress_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of threshold rules configured do not suppress alerts with missing fields" - } - } - } - } - } - }, - "eql": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of eql rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of eql rules disabled" - } - }, - "alerts": { - "type": "long", - "_meta": { - "description": "Number of alerts generated by eql rules" - } - }, - "cases": { - "type": "long", - "_meta": { - "description": "Number of cases attached to eql detection rule alerts" - } - }, - "legacy_notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications enabled" - } - }, - "legacy_notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications disabled" - } - }, - "notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "legacy_investigation_fields": { - "type": "long", - "_meta": { - "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" - } - }, - "alert_suppression": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of enabled eql rules configured with suppression" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of disabled eql rules configured with suppression" - } - }, - "suppressed_fields_count": { - "properties": { - "one": { - "type": "long", - "_meta": { - "description": "Number of eql rules configured with one suppression field" - } - }, - "two": { - "type": "long", - "_meta": { - "description": "Number of eql rules configured with two suppression field" - } - }, - "three": { - "type": "long", - "_meta": { - "description": "Number of eql rules configured with three suppression field" - } - } - } - }, - "suppressed_per_time_period": { - "type": "long", - "_meta": { - "description": "Number of eql rules configured with suppression per time period" - } - }, - "suppressed_per_rule_execution": { - "type": "long", - "_meta": { - "description": "Number of eql rules configured with suppression per rule execution" - } - }, - "suppresses_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of eql rules configured to suppress alerts with missing fields" - } - }, - "does_not_suppress_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of eql rules configured do not suppress alerts with missing fields" - } - } - } - } - } - }, - "machine_learning": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of machine_learning rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of machine_learning rules disabled" - } - }, - "alerts": { - "type": "long", - "_meta": { - "description": "Number of alerts generated by machine_learning rules" - } - }, - "cases": { - "type": "long", - "_meta": { - "description": "Number of cases attached to machine_learning detection rule alerts" - } - }, - "legacy_notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications enabled" - } - }, - "legacy_notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications disabled" - } - }, - "notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "legacy_investigation_fields": { - "type": "long", - "_meta": { - "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" - } - }, - "alert_suppression": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of enabled machine_learning rules configured with suppression" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of disabled machine_learning rules configured with suppression" - } - }, - "suppressed_fields_count": { - "properties": { - "one": { - "type": "long", - "_meta": { - "description": "Number of machine_learning rules configured with one suppression field" - } - }, - "two": { - "type": "long", - "_meta": { - "description": "Number of machine_learning rules configured with two suppression field" - } - }, - "three": { - "type": "long", - "_meta": { - "description": "Number of machine_learning rules configured with three suppression field" - } - } - } - }, - "suppressed_per_time_period": { - "type": "long", - "_meta": { - "description": "Number of machine_learning rules configured with suppression per time period" - } - }, - "suppressed_per_rule_execution": { - "type": "long", - "_meta": { - "description": "Number of machine_learning rules configured with suppression per rule execution" - } - }, - "suppresses_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of machine_learning rules configured to suppress alerts with missing fields" - } - }, - "does_not_suppress_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of machine_learning rules configured do not suppress alerts with missing fields" - } - } - } - } - } - }, - "threat_match": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of threat_match rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of threat_match rules disabled" - } - }, - "alerts": { - "type": "long", - "_meta": { - "description": "Number of alerts generated by threat_match rules" - } - }, - "cases": { - "type": "long", - "_meta": { - "description": "Number of cases attached to threat_match detection rule alerts" - } - }, - "legacy_notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications enabled" - } - }, - "legacy_notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications disabled" - } - }, - "notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "legacy_investigation_fields": { - "type": "long", - "_meta": { - "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" - } - }, - "alert_suppression": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of enabled threat_match rules configured with suppression" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of disabled threat_match rules configured with suppression" - } - }, - "suppressed_fields_count": { - "properties": { - "one": { - "type": "long", - "_meta": { - "description": "Number of threat_match rules configured with one suppression field" - } - }, - "two": { - "type": "long", - "_meta": { - "description": "Number of threat_match rules configured with two suppression field" - } - }, - "three": { - "type": "long", - "_meta": { - "description": "Number of threat_match rules configured with three suppression field" - } - } - } - }, - "suppressed_per_time_period": { - "type": "long", - "_meta": { - "description": "Number of threat_match rules configured with suppression per time period" - } - }, - "suppressed_per_rule_execution": { - "type": "long", - "_meta": { - "description": "Number of threat_match rules configured with suppression per rule execution" - } - }, - "suppresses_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of threat_match rules configured to suppress alerts with missing fields" - } - }, - "does_not_suppress_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of threat_match rules configured do not suppress alerts with missing fields" - } - } - } - } - } - }, - "new_terms": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of new_terms rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of new_terms rules disabled" - } - }, - "alerts": { - "type": "long", - "_meta": { - "description": "Number of alerts generated by new_terms rules" - } - }, - "cases": { - "type": "long", - "_meta": { - "description": "Number of cases attached to new_terms detection rule alerts" - } - }, - "legacy_notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications enabled" - } - }, - "legacy_notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications disabled" - } - }, - "notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "legacy_investigation_fields": { - "type": "long", - "_meta": { - "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" - } - }, - "alert_suppression": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of enabled new_terms rules configured with suppression" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of disabled new_terms rules configured with suppression" - } - }, - "suppressed_fields_count": { - "properties": { - "one": { - "type": "long", - "_meta": { - "description": "Number of new_terms rules configured with one suppression field" - } - }, - "two": { - "type": "long", - "_meta": { - "description": "Number of new_terms rules configured with two suppression field" - } - }, - "three": { - "type": "long", - "_meta": { - "description": "Number of new_terms rules configured with three suppression field" - } - } - } - }, - "suppressed_per_time_period": { - "type": "long", - "_meta": { - "description": "Number of new_terms rules configured with suppression per time period" - } - }, - "suppressed_per_rule_execution": { - "type": "long", - "_meta": { - "description": "Number of new_terms rules configured with suppression per rule execution" - } - }, - "suppresses_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of new_terms rules configured to suppress alerts with missing fields" - } - }, - "does_not_suppress_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of new_terms rules configured do not suppress alerts with missing fields" - } - } - } - } - } - }, - "esql": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of esql rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of esql rules disabled" - } - }, - "alerts": { - "type": "long", - "_meta": { - "description": "Number of alerts generated by esql rules" - } - }, - "cases": { - "type": "long", - "_meta": { - "description": "Number of cases attached to esql detection rule alerts" - } - }, - "legacy_notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications enabled" - } - }, - "legacy_notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications disabled" - } - }, - "notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "legacy_investigation_fields": { - "type": "long", - "_meta": { - "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" - } - }, - "alert_suppression": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of enabled esql rules configured with suppression" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of disabled esql rules configured with suppression" - } - }, - "suppressed_fields_count": { - "properties": { - "one": { - "type": "long", - "_meta": { - "description": "Number of esql rules configured with one suppression field" - } - }, - "two": { - "type": "long", - "_meta": { - "description": "Number of esql rules configured with two suppression field" - } - }, - "three": { - "type": "long", - "_meta": { - "description": "Number of esql rules configured with three suppression field" - } - } - } - }, - "suppressed_per_time_period": { - "type": "long", - "_meta": { - "description": "Number of esql rules configured with suppression per time period" - } - }, - "suppressed_per_rule_execution": { - "type": "long", - "_meta": { - "description": "Number of esql rules configured with suppression per rule execution" - } - }, - "suppresses_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of esql rules configured to suppress alerts with missing fields" - } - }, - "does_not_suppress_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of esql rules configured do not suppress alerts with missing fields" - } - } - } - } - } - }, - "elastic_total": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of elastic rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of elastic rules disabled" - } - }, - "alerts": { - "type": "long", - "_meta": { - "description": "Number of alerts generated by elastic rules" - } - }, - "cases": { - "type": "long", - "_meta": { - "description": "Number of cases attached to elastic detection rule alerts" - } - }, - "legacy_notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications enabled" - } - }, - "legacy_notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications disabled" - } - }, - "notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "legacy_investigation_fields": { - "type": "long", - "_meta": { - "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" - } - }, - "alert_suppression": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of enabled elastic rules configured with suppression" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of disabled elastic rules configured with suppression" - } - }, - "suppressed_fields_count": { - "properties": { - "one": { - "type": "long", - "_meta": { - "description": "Number of elastic rules configured with one suppression field" - } - }, - "two": { - "type": "long", - "_meta": { - "description": "Number of elastic rules configured with two suppression field" - } - }, - "three": { - "type": "long", - "_meta": { - "description": "Number of elastic rules configured with three suppression field" - } - } - } - }, - "suppressed_per_time_period": { - "type": "long", - "_meta": { - "description": "Number of elastic rules configured with suppression per time period" - } - }, - "suppressed_per_rule_execution": { - "type": "long", - "_meta": { - "description": "Number of elastic rules configured with suppression per rule execution" - } - }, - "suppresses_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of elastic rules configured to suppress alerts with missing fields" - } - }, - "does_not_suppress_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of elastic rules configured do not suppress alerts with missing fields" - } - } - } - } - } - }, - "custom_total": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of custom rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of custom rules disabled" - } - }, - "alerts": { - "type": "long", - "_meta": { - "description": "Number of alerts generated by custom rules" - } - }, - "cases": { - "type": "long", - "_meta": { - "description": "Number of cases attached to custom detection rule alerts" - } - }, - "legacy_notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications enabled" - } - }, - "legacy_notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of legacy notifications disabled" - } - }, - "notifications_enabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "notifications_disabled": { - "type": "long", - "_meta": { - "description": "Number of notifications enabled" - } - }, - "legacy_investigation_fields": { - "type": "long", - "_meta": { - "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" - } - }, - "alert_suppression": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "Number of enabled custom rules configured with suppression" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "Number of disabled custom rules configured with suppression" - } - }, - "suppressed_fields_count": { - "properties": { - "one": { - "type": "long", - "_meta": { - "description": "Number of custom rules configured with one suppression field" - } - }, - "two": { - "type": "long", - "_meta": { - "description": "Number of custom rules configured with two suppression field" - } - }, - "three": { - "type": "long", - "_meta": { - "description": "Number of custom rules configured with three suppression field" - } - } - } - }, - "suppressed_per_time_period": { - "type": "long", - "_meta": { - "description": "Number of custom rules configured with suppression per time period" - } - }, - "suppressed_per_rule_execution": { - "type": "long", - "_meta": { - "description": "Number of custom rules configured with suppression per rule execution" - } - }, - "suppresses_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of custom rules configured to suppress alerts with missing fields" - } - }, - "does_not_suppress_missing_fields": { - "type": "long", - "_meta": { - "description": "Number of custom rules configured do not suppress alerts with missing fields" - } - } - } - } - } - } - } - }, - "detection_rule_detail": { - "type": "array", - "items": { - "properties": { - "rule_name": { - "type": "keyword", - "_meta": { - "description": "The name of the detection rule" - } - }, - "rule_id": { - "type": "keyword", - "_meta": { - "description": "The UUID id of the detection rule" - } - }, - "rule_type": { - "type": "keyword", - "_meta": { - "description": "The type of detection rule. ie eql, query..." - } - }, - "rule_version": { - "type": "long", - "_meta": { - "description": "The version of the rule" - } - }, - "enabled": { - "type": "boolean", - "_meta": { - "description": "If the detection rule has been enabled by the user" - } - }, - "elastic_rule": { - "type": "boolean", - "_meta": { - "description": "If the detection rule has been authored by Elastic" - } - }, - "created_on": { - "type": "keyword", - "_meta": { - "description": "When the detection rule was created on the cluster" - } - }, - "updated_on": { - "type": "keyword", - "_meta": { - "description": "When the detection rule was updated on the cluster" - } - }, - "alert_count_daily": { - "type": "long", - "_meta": { - "description": "The number of daily alerts generated by a rule" - } - }, - "cases_count_total": { - "type": "long", - "_meta": { - "description": "The number of total cases generated by a rule" - } - }, - "has_legacy_notification": { - "type": "boolean", - "_meta": { - "description": "True if this rule has a legacy notification" - } - }, - "has_notification": { - "type": "boolean", - "_meta": { - "description": "True if this rule has a notification" - } - } - } - } - }, - "detection_rule_status": { - "properties": { - "all_rules": { - "properties": { - "eql": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "threat_match": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "machine_learning": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "query": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "saved_query": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "threshold": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "total": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of succeeded rules" - } - } - } - } - } - }, - "elastic_rules": { - "properties": { - "eql": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "threat_match": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "machine_learning": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "query": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "saved_query": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "threshold": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "total": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of succeeded rules" - } - } - } - } - } - }, - "custom_rules": { - "properties": { - "eql": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "threat_match": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "machine_learning": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "query": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "saved_query": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "threshold": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "top_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "top_partial_failures": { - "type": "array", - "items": { - "properties": { - "message": { - "type": "keyword", - "_meta": { - "description": "Failed rule message" - } - }, - "count": { - "type": "long", - "_meta": { - "description": "Number of times the message occurred" - } - } - } - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of successful rules" - } - }, - "index_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "search_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "enrichment_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_duration": { - "properties": { - "max": { - "type": "float", - "_meta": { - "description": "The max duration" - } - }, - "avg": { - "type": "float", - "_meta": { - "description": "The avg duration" - } - }, - "min": { - "type": "float", - "_meta": { - "description": "The min duration" - } - } - } - }, - "gap_count": { - "type": "long", - "_meta": { - "description": "The count of gaps" - } - } - } - }, - "total": { - "properties": { - "failures": { - "type": "long", - "_meta": { - "description": "The number of failed rules" - } - }, - "partial_failures": { - "type": "long", - "_meta": { - "description": "The number of partial failure rules" - } - }, - "succeeded": { - "type": "long", - "_meta": { - "description": "The number of succeeded rules" - } - } - } - } - } - } - } - } - } - }, - "ml_jobs": { - "properties": { - "ml_job_usage": { - "properties": { - "custom": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "The number of custom ML jobs rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "The number of custom ML jobs rules disabled" - } - } - } - }, - "elastic": { - "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "The number of elastic provided ML jobs rules enabled" - } - }, - "disabled": { - "type": "long", - "_meta": { - "description": "The number of elastic provided ML jobs rules disabled" - } - } - } - } - } - }, - "ml_job_metrics": { - "type": "array", - "items": { - "properties": { - "job_id": { - "type": "keyword", - "_meta": { - "description": "Identifier for the anomaly detection job" - } - }, - "open_time": { - "type": "keyword", - "_meta": { - "description": "For open jobs only, the elapsed time for which the job has been open" - } - }, - "create_time": { - "type": "keyword", - "_meta": { - "description": "The time the job was created" - } - }, - "finished_time": { - "type": "keyword", - "_meta": { - "description": "If the job closed or failed, this is the time the job finished" - } - }, - "state": { - "type": "keyword", - "_meta": { - "description": "The status of the anomaly detection job" - } - }, - "data_counts": { - "properties": { - "bucket_count": { - "type": "long", - "_meta": { - "description": "The number of buckets processed" - } - }, - "empty_bucket_count": { - "type": "long", - "_meta": { - "description": "The number of buckets which did not contain any data" - } - }, - "input_bytes": { - "type": "long", - "_meta": { - "description": "The number of bytes of input data posted to the anomaly detection job" - } - }, - "input_record_count": { - "type": "long", - "_meta": { - "description": "The number of input documents posted to the anomaly detection job" - } - }, - "last_data_time": { - "type": "long", - "_meta": { - "description": "The timestamp at which data was last analyzed, according to server time" - } - }, - "processed_record_count": { - "type": "long", - "_meta": { - "description": "The number of input documents that have been processed by the anomaly detection job" - } - } - } - }, - "model_size_stats": { - "properties": { - "bucket_allocation_failures_count": { - "type": "long", - "_meta": { - "description": "The number of buckets for which new entities in incoming data were not processed due to insufficient model memory" - } - }, - "model_bytes": { - "type": "long", - "_meta": { - "description": "The number of bytes of memory used by the models" - } - }, - "model_bytes_exceeded": { - "type": "long", - "_meta": { - "description": "The number of bytes over the high limit for memory usage at the last allocation failure" - } - }, - "model_bytes_memory_limit": { - "type": "long", - "_meta": { - "description": "The upper limit for model memory usage, checked on increasing values" - } - }, - "peak_model_bytes": { - "type": "long", - "_meta": { - "description": "The peak number of bytes of memory ever used by the models" - } - } - } - }, - "timing_stats": { - "properties": { - "bucket_count": { - "type": "long", - "_meta": { - "description": "The number of buckets processed" - } - }, - "exponential_average_bucket_processing_time_ms": { - "type": "long", - "_meta": { - "description": "Exponential moving average of all bucket processing times, in milliseconds" - } - }, - "exponential_average_bucket_processing_time_per_hour_ms": { - "type": "long", - "_meta": { - "description": "Exponentially-weighted moving average of bucket processing times calculated in a 1 hour time window, in milliseconds" - } - }, - "maximum_bucket_processing_time_ms": { - "type": "long", - "_meta": { - "description": "Maximum among all bucket processing times, in milliseconds" - } - }, - "minimum_bucket_processing_time_ms": { - "type": "long", - "_meta": { - "description": "Minimum among all bucket processing times, in milliseconds" - } - }, - "total_bucket_processing_time_ms": { - "type": "long", - "_meta": { - "description": "Sum of all bucket processing times, in milliseconds" - } - } - } - }, - "datafeed": { - "properties": { - "datafeed_id": { - "type": "keyword", - "_meta": { - "description": "A numerical character string that uniquely identifies the datafeed" - } - }, - "state": { - "type": "keyword", - "_meta": { - "description": "The status of the datafeed" - } - }, - "timing_stats": { - "properties": { - "average_search_time_per_bucket_ms": { - "type": "long", - "_meta": { - "description": "The average search time per bucket, in milliseconds" - } - }, - "bucket_count": { - "type": "long", - "_meta": { - "description": "The number of buckets processed" - } - }, - "exponential_average_search_time_per_hour_ms": { - "type": "long", - "_meta": { - "description": "The exponential average search time per hour, in milliseconds" - } - }, - "search_count": { - "type": "long", - "_meta": { - "description": "The number of searches run by the datafeed" - } - }, - "total_search_time_ms": { - "type": "long", - "_meta": { - "description": "The total time the datafeed spent searching, in milliseconds" - } - } - } - } - } - } - } + "_meta": { + "description": "avg number of ems basemap layers with auto-style per map" + } + }, + "total": { + "type": "long", + "_meta": { + "description": "total number of ems basemap layers with auto-style in cluster" } } } - } - } - }, - "endpointMetrics": { - "properties": { - "unique_endpoint_count": { - "type": "long", - "_meta": { - "description": "Number of active unique endpoints in last 24 hours" + }, + "dark": { + "properties": { + "min": { + "type": "long", + "_meta": { + "description": "min number of ems basemap layers with dark-style per map" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "max number of ems basemap layers with dark-style per map" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "avg number of ems basemap layers with dark-style per map" + } + }, + "total": { + "type": "long", + "_meta": { + "description": "total number of ems basemap layers with dark-style in cluster" + } + } } - } - } - }, - "dashboardMetrics": { - "properties": { - "dashboard_tag": { + }, + "roadmap": { "properties": { - "created_at": { - "type": "keyword", + "min": { + "type": "long", + "_meta": { + "description": "min number of ems basemap layers with roadmap-style per map" + } + }, + "max": { + "type": "long", "_meta": { - "description": "The time the tab was created" + "description": "max number of ems basemap layers with roadmap-style per map" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "avg number of ems basemap layers with roadmap-style per map" } }, - "linked_dashboards_count": { + "total": { "type": "long", "_meta": { - "description": "Number of associated dashboards" + "description": "total number of ems basemap layers with roadmap-style in cluster" } } } }, - "dashboards": { - "type": "array", - "items": { - "properties": { - "created_at": { - "type": "keyword", - "_meta": { - "description": "The time the dashboard was created" - } - }, - "dashboard_id": { - "type": "keyword", - "_meta": { - "description": "The dashboard saved object id" - } - }, - "error_message": { - "type": "keyword", - "_meta": { - "description": "The relevant error message" - } - }, - "error_status_code": { - "type": "long", - "_meta": { - "description": "The relevant error status code" - } + "roadmap_desaturated": { + "properties": { + "min": { + "type": "long", + "_meta": { + "description": "min number of ems basemap layers with desaturated-style per map" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "max number of ems basemap layers with desaturated-style per map" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "avg number of ems basemap layers with desaturated-style per map" + } + }, + "total": { + "type": "long", + "_meta": { + "description": "total number of ems basemap layers with desaturated-style in cluster" } } } } } }, - "riskEngineMetrics": { + "attributesPerMap": { "properties": { - "unique_user_risk_score_total": { - "type": "long", - "_meta": { - "description": "Total unique user risk scores" - } - }, - "unique_host_risk_score_total": { - "type": "long", - "_meta": { - "description": "Total unique host risk scores" - } - }, - "unique_user_risk_score_day": { - "type": "long", - "_meta": { - "description": "Unique user risk scores per day" - } - }, - "unique_host_risk_score_day": { - "type": "long", - "_meta": { - "description": "Unique host risk scores per day" - } - }, - "all_host_risk_scores_total": { - "type": "long", - "_meta": { - "description": "Total number of host risk score records" + "dataSourcesCount": { + "properties": { + "min": { + "type": "long" + }, + "max": { + "type": "long" + }, + "avg": { + "type": "float" + } } }, - "all_user_risk_scores_total": { - "type": "long", - "_meta": { - "description": "Total number of user risk score records" + "layersCount": { + "properties": { + "min": { + "type": "long" + }, + "max": { + "type": "long" + }, + "avg": { + "type": "float" + } } }, - "all_host_risk_scores_total_day": { - "type": "long", - "_meta": { - "description": "Number of host risk score records per day" + "layerTypesCount": { + "properties": { + "DYNAMIC_KEY": { + "properties": { + "min": { + "type": "long" + }, + "max": { + "type": "long" + }, + "avg": { + "type": "float" + } + } + } } }, - "all_user_risk_scores_total_day": { - "type": "long", - "_meta": { - "description": "Number of user risk score records per day" + "emsVectorLayersCount": { + "properties": { + "DYNAMIC_KEY": { + "properties": { + "min": { + "type": "long" + }, + "max": { + "type": "long" + }, + "avg": { + "type": "float" + } + } + } } }, - "all_risk_scores_index_size": { - "type": "long", - "_meta": { - "description": "Total size of the all Risk Score indices (MB)" + "customIconsCount": { + "properties": { + "min": { + "type": "long" + }, + "max": { + "type": "long" + }, + "avg": { + "type": "float" + } } - }, - "unique_risk_scores_index_size": { - "type": "long", - "_meta": { - "description": "Total size of the unique Risk Score indices (MB)" + } + } + } + } + }, + "monitoring": { + "properties": { + "hasMonitoringData": { + "type": "boolean" + }, + "clusters": { + "type": "array", + "items": { + "properties": { + "license": { + "type": "keyword" + }, + "clusterUuid": { + "type": "keyword" + }, + "metricbeatUsed": { + "type": "boolean" + }, + "elasticsearch": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } + } + }, + "kibana": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } + } + }, + "logstash": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } + } + }, + "beats": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } + } + }, + "apm": { + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "long" + }, + "metricbeatUsed": { + "type": "boolean" + } + } } } } } } }, - "slo": { + "reporting": { + "properties": { + "available": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + } + }, + "saved_objects_tagging": { "properties": { - "slo": { + "usedTags": { + "type": "integer" + }, + "taggedObjects": { + "type": "integer" + }, + "types": { "properties": { - "total": { - "type": "long", - "_meta": { - "description": "The total number of slos in the cluster" + "dashboard": { + "properties": { + "usedTags": { + "type": "integer" + }, + "taggedObjects": { + "type": "integer" + } } }, - "by_status": { + "lens": { "properties": { - "enabled": { - "type": "long", - "_meta": { - "description": "The number of enabled slos in the cluster" - } + "usedTags": { + "type": "integer" }, - "disabled": { - "type": "long", - "_meta": { - "description": "The number of disabled slos in the cluster" - } + "taggedObjects": { + "type": "integer" } } }, - "by_sli_type": { + "visualization": { "properties": { - "DYNAMIC_KEY": { - "type": "long", - "_meta": { - "description": "The number of slos by sli type in the cluster" - } + "usedTags": { + "type": "integer" + }, + "taggedObjects": { + "type": "integer" } } }, - "by_rolling_duration": { + "map": { "properties": { - "DYNAMIC_KEY": { - "type": "long", - "_meta": { - "description": "The number of slos by rolling duration in the cluster" - } + "usedTags": { + "type": "integer" + }, + "taggedObjects": { + "type": "integer" } } }, - "by_calendar_aligned_duration": { + "search": { "properties": { - "DYNAMIC_KEY": { - "type": "long", - "_meta": { - "description": "The number of slos by calendar aligned duration in the cluster" - } + "usedTags": { + "type": "integer" + }, + "taggedObjects": { + "type": "integer" } } }, - "by_budgeting_method": { + "osquery-pack": { "properties": { - "occurrences": { - "type": "long", - "_meta": { - "description": "The number of slos by timeslices budgeting method in the cluster" - } + "usedTags": { + "type": "integer" }, - "timeslices": { - "type": "long", - "_meta": { - "description": "The number of slos by occurrences budgeting method in the cluster" - } + "taggedObjects": { + "type": "integer" + } + } + }, + "osquery-pack-asset": { + "properties": { + "usedTags": { + "type": "integer" + }, + "taggedObjects": { + "type": "integer" + } + } + }, + "osquery-saved-query": { + "properties": { + "usedTags": { + "type": "integer" + }, + "taggedObjects": { + "type": "integer" } } } @@ -19676,6 +14223,88 @@ } } }, + "security": { + "properties": { + "auditLoggingEnabled": { + "type": "boolean", + "_meta": { + "description": "Indicates if audit logging is both enabled and supported by the current license." + } + }, + "loginSelectorEnabled": { + "type": "boolean", + "_meta": { + "description": "Indicates if the login selector UI is enabled." + } + }, + "accessAgreementEnabled": { + "type": "boolean", + "_meta": { + "description": "Indicates if the access agreement UI is both enabled and supported by the current license." + } + }, + "authProviderCount": { + "type": "long", + "_meta": { + "description": "The number of configured auth providers (including disabled auth providers)." + } + }, + "enabledAuthProviders": { + "type": "array", + "items": { + "type": "keyword", + "_meta": { + "description": "The types of enabled auth providers (such as `saml`, `basic`, `pki`, etc)." + } + } + }, + "fipsModeEnabled": { + "type": "boolean", + "_meta": { + "description": "Indicates if Kibana is being run in FIPS mode." + } + }, + "httpAuthSchemes": { + "type": "array", + "items": { + "type": "keyword", + "_meta": { + "description": "The set of enabled http auth schemes. Used for api-based usage, and when credentials are provided via reverse-proxy." + } + } + }, + "sessionIdleTimeoutInMinutes": { + "type": "long", + "_meta": { + "description": "The global session idle timeout expiration that is configured, in minutes (0 if disabled)." + } + }, + "sessionLifespanInMinutes": { + "type": "long", + "_meta": { + "description": "The global session lifespan expiration that is configured, in minutes (0 if disabled)." + } + }, + "sessionCleanupInMinutes": { + "type": "long", + "_meta": { + "description": "The session cleanup interval that is configured, in minutes (0 if disabled)." + } + }, + "sessionConcurrentSessionsMaxSessions": { + "type": "long", + "_meta": { + "description": "The maximum number of the concurrent user sessions (0 if not configured)." + } + }, + "anonymousCredentialType": { + "type": "keyword", + "_meta": { + "description": "The credential type that is configured for the anonymous authentication provider." + } + } + } + }, "spaces": { "properties": { "usesFeatureControls": { @@ -19984,67 +14613,6 @@ }, "task_manager": { "properties": { - "ephemeral_tasks_enabled": { - "type": "boolean" - }, - "ephemeral_request_capacity": { - "type": "short" - }, - "ephemeral_stats": { - "properties": { - "status": { - "type": "keyword" - }, - "queued_tasks": { - "properties": { - "p50": { - "type": "long" - }, - "p90": { - "type": "long" - }, - "p95": { - "type": "long" - }, - "p99": { - "type": "long" - } - } - }, - "load": { - "properties": { - "p50": { - "type": "long" - }, - "p90": { - "type": "long" - }, - "p95": { - "type": "long" - }, - "p99": { - "type": "long" - } - } - }, - "executions_per_cycle": { - "properties": { - "p50": { - "type": "long" - }, - "p90": { - "type": "long" - }, - "p95": { - "type": "long" - }, - "p99": { - "type": "long" - } - } - } - } - }, "task_type_exclusion": { "type": "array", "items": { diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_security.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_security.json index d5b0514b64918..1ab6ba490f0b5 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_security.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_security.json @@ -1,3 +1,5127 @@ { - "properties": {} + "properties": { + "cloud_defend": { + "properties": { + "indices": { + "properties": { + "alerts": { + "properties": { + "doc_count": { + "type": "long" + }, + "deleted": { + "type": "long" + }, + "size_in_bytes": { + "type": "long" + }, + "last_doc_timestamp": { + "type": "date" + } + } + }, + "file": { + "properties": { + "doc_count": { + "type": "long" + }, + "deleted": { + "type": "long" + }, + "size_in_bytes": { + "type": "long" + }, + "last_doc_timestamp": { + "type": "date" + } + } + }, + "process": { + "properties": { + "doc_count": { + "type": "long" + }, + "deleted": { + "type": "long" + }, + "size_in_bytes": { + "type": "long" + }, + "last_doc_timestamp": { + "type": "date" + } + } + }, + "latestPackageVersion": { + "type": "keyword" + }, + "packageStatus": { + "properties": { + "status": { + "type": "keyword" + }, + "installedPackagePolicies": { + "type": "long" + }, + "healthyAgents": { + "type": "long" + } + } + } + } + }, + "pods_stats": { + "type": "array", + "items": { + "properties": { + "account_id": { + "type": "keyword" + }, + "container_image_name": { + "type": "keyword" + }, + "container_image_tag": { + "type": "keyword" + }, + "pod_name": { + "type": "keyword" + }, + "total_doc_count": { + "type": "long" + }, + "process_doc_count": { + "type": "long" + }, + "file_doc_count": { + "type": "long" + }, + "alert_doc_count": { + "type": "long" + } + } + } + }, + "accounts_stats": { + "type": "array", + "items": { + "properties": { + "account_id": { + "type": "keyword" + }, + "cloud_provider": { + "type": "keyword" + }, + "kubernetes_version": { + "type": "keyword" + }, + "total_doc_count": { + "type": "long" + }, + "file_doc_count": { + "type": "long" + }, + "process_doc_count": { + "type": "long" + }, + "alert_doc_count": { + "type": "long" + }, + "agents_count": { + "type": "short" + }, + "nodes_count": { + "type": "short" + }, + "pods_count": { + "type": "short" + } + } + } + }, + "installation_stats": { + "type": "array", + "items": { + "properties": { + "package_policy_id": { + "type": "keyword" + }, + "package_version": { + "type": "keyword" + }, + "agent_policy_id": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "agent_count": { + "type": "long" + }, + "policy_yaml": { + "type": "keyword" + }, + "selectors": { + "type": "array", + "items": { + "properties": { + "type": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "operation": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "containerImageFullName": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "containerImageName": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "containerImageTag": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "kubernetesClusterId": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "kubernetesClusterName": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "kubernetesNamespace": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "kubernetesPodLabel": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "kubernetesPodName": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "targetFilePath": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "ignoreVolumeFiles": { + "type": "boolean" + }, + "ignoreVolumeMounts": { + "type": "boolean" + }, + "processExecutable": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "processName": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "sessionLeaderInteractive": { + "type": "boolean" + } + } + } + }, + "responses": { + "type": "array", + "items": { + "properties": { + "type": { + "type": "keyword" + }, + "match": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "keyword" + } + }, + "actions": { + "type": "array", + "items": { + "type": "keyword" + } + } + } + } + } + } + } + } + } + }, + "cloud_security_posture": { + "properties": { + "indices": { + "properties": { + "findings": { + "properties": { + "doc_count": { + "type": "long" + }, + "deleted": { + "type": "long" + }, + "size_in_bytes": { + "type": "long" + }, + "last_doc_timestamp": { + "type": "date" + } + } + }, + "latest_findings": { + "properties": { + "doc_count": { + "type": "long" + }, + "deleted": { + "type": "long" + }, + "size_in_bytes": { + "type": "long" + }, + "last_doc_timestamp": { + "type": "date" + } + } + }, + "vulnerabilities": { + "properties": { + "doc_count": { + "type": "long" + }, + "deleted": { + "type": "long" + }, + "size_in_bytes": { + "type": "long" + }, + "last_doc_timestamp": { + "type": "date" + } + } + }, + "latest_vulnerabilities": { + "properties": { + "doc_count": { + "type": "long" + }, + "deleted": { + "type": "long" + }, + "size_in_bytes": { + "type": "long" + }, + "last_doc_timestamp": { + "type": "date" + } + } + }, + "score": { + "properties": { + "doc_count": { + "type": "long" + }, + "deleted": { + "type": "long" + }, + "size_in_bytes": { + "type": "long" + }, + "last_doc_timestamp": { + "type": "date" + } + } + }, + "latestPackageVersion": { + "type": "keyword" + }, + "cspm": { + "properties": { + "status": { + "type": "keyword" + }, + "installedPackagePolicies": { + "type": "long" + }, + "healthyAgents": { + "type": "long" + } + } + }, + "kspm": { + "properties": { + "status": { + "type": "keyword" + }, + "installedPackagePolicies": { + "type": "long" + }, + "healthyAgents": { + "type": "long" + } + } + }, + "vuln_mgmt": { + "properties": { + "status": { + "type": "keyword" + }, + "installedPackagePolicies": { + "type": "long" + }, + "healthyAgents": { + "type": "long" + } + } + } + } + }, + "resources_stats": { + "type": "array", + "items": { + "properties": { + "account_id": { + "type": "keyword" + }, + "resource_type": { + "type": "keyword" + }, + "resource_type_doc_count": { + "type": "long" + }, + "resource_sub_type": { + "type": "keyword" + }, + "resource_sub_type_doc_count": { + "type": "long" + }, + "passed_findings_count": { + "type": "long" + }, + "failed_findings_count": { + "type": "long" + } + } + } + }, + "accounts_stats": { + "type": "array", + "items": { + "properties": { + "account_id": { + "type": "keyword" + }, + "posture_score": { + "type": "long" + }, + "latest_findings_doc_count": { + "type": "long" + }, + "benchmark_id": { + "type": "keyword" + }, + "benchmark_name": { + "type": "keyword" + }, + "benchmark_version": { + "type": "keyword" + }, + "kubernetes_version": { + "type": "keyword" + }, + "passed_findings_count": { + "type": "long" + }, + "failed_findings_count": { + "type": "long" + }, + "agents_count": { + "type": "short" + }, + "nodes_count": { + "type": "short" + }, + "pods_count": { + "type": "short" + } + } + } + }, + "rules_stats": { + "type": "array", + "items": { + "properties": { + "account_id": { + "type": "keyword" + }, + "rule_id": { + "type": "keyword" + }, + "rule_name": { + "type": "keyword" + }, + "rule_section": { + "type": "keyword" + }, + "rule_version": { + "type": "keyword" + }, + "rule_number": { + "type": "keyword" + }, + "posture_type": { + "type": "keyword" + }, + "benchmark_id": { + "type": "keyword" + }, + "benchmark_name": { + "type": "keyword" + }, + "benchmark_version": { + "type": "keyword" + }, + "passed_findings_count": { + "type": "long" + }, + "failed_findings_count": { + "type": "long" + } + } + } + }, + "installation_stats": { + "type": "array", + "items": { + "properties": { + "package_policy_id": { + "type": "keyword" + }, + "feature": { + "type": "keyword" + }, + "package_version": { + "type": "keyword" + }, + "agent_policy_id": { + "type": "keyword" + }, + "deployment_mode": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "agent_count": { + "type": "long" + }, + "is_agentless": { + "type": "boolean" + }, + "account_type": { + "type": "keyword" + }, + "is_setup_automatic": { + "type": "boolean" + }, + "setup_access_option": { + "type": "keyword" + } + } + } + }, + "alerts_stats": { + "type": "array", + "items": { + "properties": { + "posture_type": { + "type": "keyword" + }, + "rules_count": { + "type": "long" + }, + "alerts_count": { + "type": "long" + }, + "alerts_open_count": { + "type": "long" + }, + "alerts_closed_count": { + "type": "long" + }, + "alerts_acknowledged_count": { + "type": "long" + } + } + } + }, + "cloud_account_stats": { + "type": "array", + "items": { + "properties": { + "account_id": { + "type": "keyword" + }, + "cloud_provider": { + "type": "keyword" + }, + "product": { + "type": "keyword" + }, + "package_policy_id": { + "type": "keyword" + }, + "latest_doc_count": { + "type": "long" + }, + "latest_doc_updated_timestamp": { + "type": "date" + }, + "posture_management_stats": { + "properties": { + "posture_score": { + "type": "long" + }, + "benchmark_name": { + "type": "keyword" + }, + "benchmark_version": { + "type": "keyword" + }, + "passed_findings_count": { + "type": "long" + }, + "failed_findings_count": { + "type": "long" + } + } + }, + "posture_management_stats_enabled_rules": { + "properties": { + "posture_score": { + "type": "long" + }, + "benchmark_name": { + "type": "keyword" + }, + "benchmark_version": { + "type": "keyword" + }, + "passed_findings_count": { + "type": "long" + }, + "failed_findings_count": { + "type": "long" + } + } + }, + "kspm_stats": { + "properties": { + "kubernetes_version": { + "type": "keyword" + }, + "agents_count": { + "type": "short" + }, + "nodes_count": { + "type": "short" + }, + "pods_count": { + "type": "short" + } + } + }, + "has_muted_rules": { + "type": "boolean" + } + } + } + }, + "muted_rules_stats": { + "type": "array", + "items": { + "properties": { + "id": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "section": { + "type": "keyword" + }, + "benchmark_id": { + "type": "keyword" + }, + "benchmark_name": { + "type": "keyword" + }, + "benchmark_version": { + "type": "keyword" + }, + "rule_number": { + "type": "keyword" + }, + "posture_type": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + } + } + } + }, + "security_solution": { + "properties": { + "detectionMetrics": { + "properties": { + "detection_rules": { + "properties": { + "detection_rule_usage": { + "properties": { + "query": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of query rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of query rules disabled" + } + }, + "alerts": { + "type": "long", + "_meta": { + "description": "Number of alerts generated by query rules" + } + }, + "cases": { + "type": "long", + "_meta": { + "description": "Number of cases attached to query detection rule alerts" + } + }, + "legacy_notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications enabled" + } + }, + "legacy_notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications disabled" + } + }, + "notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "legacy_investigation_fields": { + "type": "long", + "_meta": { + "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" + } + }, + "alert_suppression": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of enabled query rules configured with suppression" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of disabled query rules configured with suppression" + } + }, + "suppressed_fields_count": { + "properties": { + "one": { + "type": "long", + "_meta": { + "description": "Number of query rules configured with one suppression field" + } + }, + "two": { + "type": "long", + "_meta": { + "description": "Number of query rules configured with two suppression field" + } + }, + "three": { + "type": "long", + "_meta": { + "description": "Number of query rules configured with three suppression field" + } + } + } + }, + "suppressed_per_time_period": { + "type": "long", + "_meta": { + "description": "Number of query rules configured with suppression per time period" + } + }, + "suppressed_per_rule_execution": { + "type": "long", + "_meta": { + "description": "Number of query rules configured with suppression per rule execution" + } + }, + "suppresses_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of query rules configured to suppress alerts with missing fields" + } + }, + "does_not_suppress_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of query rules configured do not suppress alerts with missing fields" + } + } + } + } + } + }, + "threshold": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of threshold rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of threshold rules disabled" + } + }, + "alerts": { + "type": "long", + "_meta": { + "description": "Number of alerts generated by threshold rules" + } + }, + "cases": { + "type": "long", + "_meta": { + "description": "Number of cases attached to threshold detection rule alerts" + } + }, + "legacy_notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications enabled" + } + }, + "legacy_notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications disabled" + } + }, + "notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "legacy_investigation_fields": { + "type": "long", + "_meta": { + "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" + } + }, + "alert_suppression": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of enabled threshold rules configured with suppression" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of disabled threshold rules configured with suppression" + } + }, + "suppressed_fields_count": { + "properties": { + "one": { + "type": "long", + "_meta": { + "description": "Number of threshold rules configured with one suppression field" + } + }, + "two": { + "type": "long", + "_meta": { + "description": "Number of threshold rules configured with two suppression field" + } + }, + "three": { + "type": "long", + "_meta": { + "description": "Number of threshold rules configured with three suppression field" + } + } + } + }, + "suppressed_per_time_period": { + "type": "long", + "_meta": { + "description": "Number of threshold rules configured with suppression per time period" + } + }, + "suppressed_per_rule_execution": { + "type": "long", + "_meta": { + "description": "Number of threshold rules configured with suppression per rule execution" + } + }, + "suppresses_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of threshold rules configured to suppress alerts with missing fields" + } + }, + "does_not_suppress_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of threshold rules configured do not suppress alerts with missing fields" + } + } + } + } + } + }, + "eql": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of eql rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of eql rules disabled" + } + }, + "alerts": { + "type": "long", + "_meta": { + "description": "Number of alerts generated by eql rules" + } + }, + "cases": { + "type": "long", + "_meta": { + "description": "Number of cases attached to eql detection rule alerts" + } + }, + "legacy_notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications enabled" + } + }, + "legacy_notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications disabled" + } + }, + "notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "legacy_investigation_fields": { + "type": "long", + "_meta": { + "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" + } + }, + "alert_suppression": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of enabled eql rules configured with suppression" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of disabled eql rules configured with suppression" + } + }, + "suppressed_fields_count": { + "properties": { + "one": { + "type": "long", + "_meta": { + "description": "Number of eql rules configured with one suppression field" + } + }, + "two": { + "type": "long", + "_meta": { + "description": "Number of eql rules configured with two suppression field" + } + }, + "three": { + "type": "long", + "_meta": { + "description": "Number of eql rules configured with three suppression field" + } + } + } + }, + "suppressed_per_time_period": { + "type": "long", + "_meta": { + "description": "Number of eql rules configured with suppression per time period" + } + }, + "suppressed_per_rule_execution": { + "type": "long", + "_meta": { + "description": "Number of eql rules configured with suppression per rule execution" + } + }, + "suppresses_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of eql rules configured to suppress alerts with missing fields" + } + }, + "does_not_suppress_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of eql rules configured do not suppress alerts with missing fields" + } + } + } + } + } + }, + "machine_learning": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of machine_learning rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of machine_learning rules disabled" + } + }, + "alerts": { + "type": "long", + "_meta": { + "description": "Number of alerts generated by machine_learning rules" + } + }, + "cases": { + "type": "long", + "_meta": { + "description": "Number of cases attached to machine_learning detection rule alerts" + } + }, + "legacy_notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications enabled" + } + }, + "legacy_notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications disabled" + } + }, + "notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "legacy_investigation_fields": { + "type": "long", + "_meta": { + "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" + } + }, + "alert_suppression": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of enabled machine_learning rules configured with suppression" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of disabled machine_learning rules configured with suppression" + } + }, + "suppressed_fields_count": { + "properties": { + "one": { + "type": "long", + "_meta": { + "description": "Number of machine_learning rules configured with one suppression field" + } + }, + "two": { + "type": "long", + "_meta": { + "description": "Number of machine_learning rules configured with two suppression field" + } + }, + "three": { + "type": "long", + "_meta": { + "description": "Number of machine_learning rules configured with three suppression field" + } + } + } + }, + "suppressed_per_time_period": { + "type": "long", + "_meta": { + "description": "Number of machine_learning rules configured with suppression per time period" + } + }, + "suppressed_per_rule_execution": { + "type": "long", + "_meta": { + "description": "Number of machine_learning rules configured with suppression per rule execution" + } + }, + "suppresses_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of machine_learning rules configured to suppress alerts with missing fields" + } + }, + "does_not_suppress_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of machine_learning rules configured do not suppress alerts with missing fields" + } + } + } + } + } + }, + "threat_match": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of threat_match rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of threat_match rules disabled" + } + }, + "alerts": { + "type": "long", + "_meta": { + "description": "Number of alerts generated by threat_match rules" + } + }, + "cases": { + "type": "long", + "_meta": { + "description": "Number of cases attached to threat_match detection rule alerts" + } + }, + "legacy_notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications enabled" + } + }, + "legacy_notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications disabled" + } + }, + "notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "legacy_investigation_fields": { + "type": "long", + "_meta": { + "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" + } + }, + "alert_suppression": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of enabled threat_match rules configured with suppression" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of disabled threat_match rules configured with suppression" + } + }, + "suppressed_fields_count": { + "properties": { + "one": { + "type": "long", + "_meta": { + "description": "Number of threat_match rules configured with one suppression field" + } + }, + "two": { + "type": "long", + "_meta": { + "description": "Number of threat_match rules configured with two suppression field" + } + }, + "three": { + "type": "long", + "_meta": { + "description": "Number of threat_match rules configured with three suppression field" + } + } + } + }, + "suppressed_per_time_period": { + "type": "long", + "_meta": { + "description": "Number of threat_match rules configured with suppression per time period" + } + }, + "suppressed_per_rule_execution": { + "type": "long", + "_meta": { + "description": "Number of threat_match rules configured with suppression per rule execution" + } + }, + "suppresses_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of threat_match rules configured to suppress alerts with missing fields" + } + }, + "does_not_suppress_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of threat_match rules configured do not suppress alerts with missing fields" + } + } + } + } + } + }, + "new_terms": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of new_terms rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of new_terms rules disabled" + } + }, + "alerts": { + "type": "long", + "_meta": { + "description": "Number of alerts generated by new_terms rules" + } + }, + "cases": { + "type": "long", + "_meta": { + "description": "Number of cases attached to new_terms detection rule alerts" + } + }, + "legacy_notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications enabled" + } + }, + "legacy_notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications disabled" + } + }, + "notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "legacy_investigation_fields": { + "type": "long", + "_meta": { + "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" + } + }, + "alert_suppression": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of enabled new_terms rules configured with suppression" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of disabled new_terms rules configured with suppression" + } + }, + "suppressed_fields_count": { + "properties": { + "one": { + "type": "long", + "_meta": { + "description": "Number of new_terms rules configured with one suppression field" + } + }, + "two": { + "type": "long", + "_meta": { + "description": "Number of new_terms rules configured with two suppression field" + } + }, + "three": { + "type": "long", + "_meta": { + "description": "Number of new_terms rules configured with three suppression field" + } + } + } + }, + "suppressed_per_time_period": { + "type": "long", + "_meta": { + "description": "Number of new_terms rules configured with suppression per time period" + } + }, + "suppressed_per_rule_execution": { + "type": "long", + "_meta": { + "description": "Number of new_terms rules configured with suppression per rule execution" + } + }, + "suppresses_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of new_terms rules configured to suppress alerts with missing fields" + } + }, + "does_not_suppress_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of new_terms rules configured do not suppress alerts with missing fields" + } + } + } + } + } + }, + "esql": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of esql rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of esql rules disabled" + } + }, + "alerts": { + "type": "long", + "_meta": { + "description": "Number of alerts generated by esql rules" + } + }, + "cases": { + "type": "long", + "_meta": { + "description": "Number of cases attached to esql detection rule alerts" + } + }, + "legacy_notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications enabled" + } + }, + "legacy_notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications disabled" + } + }, + "notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "legacy_investigation_fields": { + "type": "long", + "_meta": { + "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" + } + }, + "alert_suppression": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of enabled esql rules configured with suppression" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of disabled esql rules configured with suppression" + } + }, + "suppressed_fields_count": { + "properties": { + "one": { + "type": "long", + "_meta": { + "description": "Number of esql rules configured with one suppression field" + } + }, + "two": { + "type": "long", + "_meta": { + "description": "Number of esql rules configured with two suppression field" + } + }, + "three": { + "type": "long", + "_meta": { + "description": "Number of esql rules configured with three suppression field" + } + } + } + }, + "suppressed_per_time_period": { + "type": "long", + "_meta": { + "description": "Number of esql rules configured with suppression per time period" + } + }, + "suppressed_per_rule_execution": { + "type": "long", + "_meta": { + "description": "Number of esql rules configured with suppression per rule execution" + } + }, + "suppresses_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of esql rules configured to suppress alerts with missing fields" + } + }, + "does_not_suppress_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of esql rules configured do not suppress alerts with missing fields" + } + } + } + } + } + }, + "elastic_total": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of elastic rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of elastic rules disabled" + } + }, + "alerts": { + "type": "long", + "_meta": { + "description": "Number of alerts generated by elastic rules" + } + }, + "cases": { + "type": "long", + "_meta": { + "description": "Number of cases attached to elastic detection rule alerts" + } + }, + "legacy_notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications enabled" + } + }, + "legacy_notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications disabled" + } + }, + "notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "legacy_investigation_fields": { + "type": "long", + "_meta": { + "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" + } + }, + "alert_suppression": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of enabled elastic rules configured with suppression" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of disabled elastic rules configured with suppression" + } + }, + "suppressed_fields_count": { + "properties": { + "one": { + "type": "long", + "_meta": { + "description": "Number of elastic rules configured with one suppression field" + } + }, + "two": { + "type": "long", + "_meta": { + "description": "Number of elastic rules configured with two suppression field" + } + }, + "three": { + "type": "long", + "_meta": { + "description": "Number of elastic rules configured with three suppression field" + } + } + } + }, + "suppressed_per_time_period": { + "type": "long", + "_meta": { + "description": "Number of elastic rules configured with suppression per time period" + } + }, + "suppressed_per_rule_execution": { + "type": "long", + "_meta": { + "description": "Number of elastic rules configured with suppression per rule execution" + } + }, + "suppresses_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of elastic rules configured to suppress alerts with missing fields" + } + }, + "does_not_suppress_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of elastic rules configured do not suppress alerts with missing fields" + } + } + } + } + } + }, + "custom_total": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of custom rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of custom rules disabled" + } + }, + "alerts": { + "type": "long", + "_meta": { + "description": "Number of alerts generated by custom rules" + } + }, + "cases": { + "type": "long", + "_meta": { + "description": "Number of cases attached to custom detection rule alerts" + } + }, + "legacy_notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications enabled" + } + }, + "legacy_notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of legacy notifications disabled" + } + }, + "notifications_enabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "notifications_disabled": { + "type": "long", + "_meta": { + "description": "Number of notifications enabled" + } + }, + "legacy_investigation_fields": { + "type": "long", + "_meta": { + "description": "Number of rules using the legacy investigation fields type introduced only in 8.10 ESS" + } + }, + "alert_suppression": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "Number of enabled custom rules configured with suppression" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "Number of disabled custom rules configured with suppression" + } + }, + "suppressed_fields_count": { + "properties": { + "one": { + "type": "long", + "_meta": { + "description": "Number of custom rules configured with one suppression field" + } + }, + "two": { + "type": "long", + "_meta": { + "description": "Number of custom rules configured with two suppression field" + } + }, + "three": { + "type": "long", + "_meta": { + "description": "Number of custom rules configured with three suppression field" + } + } + } + }, + "suppressed_per_time_period": { + "type": "long", + "_meta": { + "description": "Number of custom rules configured with suppression per time period" + } + }, + "suppressed_per_rule_execution": { + "type": "long", + "_meta": { + "description": "Number of custom rules configured with suppression per rule execution" + } + }, + "suppresses_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of custom rules configured to suppress alerts with missing fields" + } + }, + "does_not_suppress_missing_fields": { + "type": "long", + "_meta": { + "description": "Number of custom rules configured do not suppress alerts with missing fields" + } + } + } + } + } + } + } + }, + "detection_rule_detail": { + "type": "array", + "items": { + "properties": { + "rule_name": { + "type": "keyword", + "_meta": { + "description": "The name of the detection rule" + } + }, + "rule_id": { + "type": "keyword", + "_meta": { + "description": "The UUID id of the detection rule" + } + }, + "rule_type": { + "type": "keyword", + "_meta": { + "description": "The type of detection rule. ie eql, query..." + } + }, + "rule_version": { + "type": "long", + "_meta": { + "description": "The version of the rule" + } + }, + "enabled": { + "type": "boolean", + "_meta": { + "description": "If the detection rule has been enabled by the user" + } + }, + "elastic_rule": { + "type": "boolean", + "_meta": { + "description": "If the detection rule has been authored by Elastic" + } + }, + "created_on": { + "type": "keyword", + "_meta": { + "description": "When the detection rule was created on the cluster" + } + }, + "updated_on": { + "type": "keyword", + "_meta": { + "description": "When the detection rule was updated on the cluster" + } + }, + "alert_count_daily": { + "type": "long", + "_meta": { + "description": "The number of daily alerts generated by a rule" + } + }, + "cases_count_total": { + "type": "long", + "_meta": { + "description": "The number of total cases generated by a rule" + } + }, + "has_legacy_notification": { + "type": "boolean", + "_meta": { + "description": "True if this rule has a legacy notification" + } + }, + "has_notification": { + "type": "boolean", + "_meta": { + "description": "True if this rule has a notification" + } + } + } + } + }, + "detection_rule_status": { + "properties": { + "all_rules": { + "properties": { + "eql": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "threat_match": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "machine_learning": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "query": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "saved_query": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "threshold": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "total": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of succeeded rules" + } + } + } + } + } + }, + "elastic_rules": { + "properties": { + "eql": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "threat_match": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "machine_learning": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "query": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "saved_query": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "threshold": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "total": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of succeeded rules" + } + } + } + } + } + }, + "custom_rules": { + "properties": { + "eql": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "threat_match": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "machine_learning": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "query": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "saved_query": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "threshold": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "top_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "top_partial_failures": { + "type": "array", + "items": { + "properties": { + "message": { + "type": "keyword", + "_meta": { + "description": "Failed rule message" + } + }, + "count": { + "type": "long", + "_meta": { + "description": "Number of times the message occurred" + } + } + } + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of successful rules" + } + }, + "index_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "search_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "enrichment_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_duration": { + "properties": { + "max": { + "type": "float", + "_meta": { + "description": "The max duration" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "The avg duration" + } + }, + "min": { + "type": "float", + "_meta": { + "description": "The min duration" + } + } + } + }, + "gap_count": { + "type": "long", + "_meta": { + "description": "The count of gaps" + } + } + } + }, + "total": { + "properties": { + "failures": { + "type": "long", + "_meta": { + "description": "The number of failed rules" + } + }, + "partial_failures": { + "type": "long", + "_meta": { + "description": "The number of partial failure rules" + } + }, + "succeeded": { + "type": "long", + "_meta": { + "description": "The number of succeeded rules" + } + } + } + } + } + } + } + } + } + }, + "ml_jobs": { + "properties": { + "ml_job_usage": { + "properties": { + "custom": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "The number of custom ML jobs rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "The number of custom ML jobs rules disabled" + } + } + } + }, + "elastic": { + "properties": { + "enabled": { + "type": "long", + "_meta": { + "description": "The number of elastic provided ML jobs rules enabled" + } + }, + "disabled": { + "type": "long", + "_meta": { + "description": "The number of elastic provided ML jobs rules disabled" + } + } + } + } + } + }, + "ml_job_metrics": { + "type": "array", + "items": { + "properties": { + "job_id": { + "type": "keyword", + "_meta": { + "description": "Identifier for the anomaly detection job" + } + }, + "open_time": { + "type": "keyword", + "_meta": { + "description": "For open jobs only, the elapsed time for which the job has been open" + } + }, + "create_time": { + "type": "keyword", + "_meta": { + "description": "The time the job was created" + } + }, + "finished_time": { + "type": "keyword", + "_meta": { + "description": "If the job closed or failed, this is the time the job finished" + } + }, + "state": { + "type": "keyword", + "_meta": { + "description": "The status of the anomaly detection job" + } + }, + "data_counts": { + "properties": { + "bucket_count": { + "type": "long", + "_meta": { + "description": "The number of buckets processed" + } + }, + "empty_bucket_count": { + "type": "long", + "_meta": { + "description": "The number of buckets which did not contain any data" + } + }, + "input_bytes": { + "type": "long", + "_meta": { + "description": "The number of bytes of input data posted to the anomaly detection job" + } + }, + "input_record_count": { + "type": "long", + "_meta": { + "description": "The number of input documents posted to the anomaly detection job" + } + }, + "last_data_time": { + "type": "long", + "_meta": { + "description": "The timestamp at which data was last analyzed, according to server time" + } + }, + "processed_record_count": { + "type": "long", + "_meta": { + "description": "The number of input documents that have been processed by the anomaly detection job" + } + } + } + }, + "model_size_stats": { + "properties": { + "bucket_allocation_failures_count": { + "type": "long", + "_meta": { + "description": "The number of buckets for which new entities in incoming data were not processed due to insufficient model memory" + } + }, + "model_bytes": { + "type": "long", + "_meta": { + "description": "The number of bytes of memory used by the models" + } + }, + "model_bytes_exceeded": { + "type": "long", + "_meta": { + "description": "The number of bytes over the high limit for memory usage at the last allocation failure" + } + }, + "model_bytes_memory_limit": { + "type": "long", + "_meta": { + "description": "The upper limit for model memory usage, checked on increasing values" + } + }, + "peak_model_bytes": { + "type": "long", + "_meta": { + "description": "The peak number of bytes of memory ever used by the models" + } + } + } + }, + "timing_stats": { + "properties": { + "bucket_count": { + "type": "long", + "_meta": { + "description": "The number of buckets processed" + } + }, + "exponential_average_bucket_processing_time_ms": { + "type": "long", + "_meta": { + "description": "Exponential moving average of all bucket processing times, in milliseconds" + } + }, + "exponential_average_bucket_processing_time_per_hour_ms": { + "type": "long", + "_meta": { + "description": "Exponentially-weighted moving average of bucket processing times calculated in a 1 hour time window, in milliseconds" + } + }, + "maximum_bucket_processing_time_ms": { + "type": "long", + "_meta": { + "description": "Maximum among all bucket processing times, in milliseconds" + } + }, + "minimum_bucket_processing_time_ms": { + "type": "long", + "_meta": { + "description": "Minimum among all bucket processing times, in milliseconds" + } + }, + "total_bucket_processing_time_ms": { + "type": "long", + "_meta": { + "description": "Sum of all bucket processing times, in milliseconds" + } + } + } + }, + "datafeed": { + "properties": { + "datafeed_id": { + "type": "keyword", + "_meta": { + "description": "A numerical character string that uniquely identifies the datafeed" + } + }, + "state": { + "type": "keyword", + "_meta": { + "description": "The status of the datafeed" + } + }, + "timing_stats": { + "properties": { + "average_search_time_per_bucket_ms": { + "type": "long", + "_meta": { + "description": "The average search time per bucket, in milliseconds" + } + }, + "bucket_count": { + "type": "long", + "_meta": { + "description": "The number of buckets processed" + } + }, + "exponential_average_search_time_per_hour_ms": { + "type": "long", + "_meta": { + "description": "The exponential average search time per hour, in milliseconds" + } + }, + "search_count": { + "type": "long", + "_meta": { + "description": "The number of searches run by the datafeed" + } + }, + "total_search_time_ms": { + "type": "long", + "_meta": { + "description": "The total time the datafeed spent searching, in milliseconds" + } + } + } + } + } + } + } + } + } + } + }, + "legacy_siem_signals": { + "properties": { + "non_migrated_indices_total": { + "type": "long", + "_meta": { + "description": "Total number of non migrated legacy siem signals indices" + } + }, + "spaces_total": { + "type": "long", + "_meta": { + "description": "Total number of Kibana spaces that have non migrated legacy siem signals indices" + } + } + } + } + } + }, + "endpointMetrics": { + "properties": { + "unique_endpoint_count": { + "type": "long", + "_meta": { + "description": "Number of active unique endpoints in last 24 hours" + } + } + } + }, + "dashboardMetrics": { + "properties": { + "dashboard_tag": { + "properties": { + "created_at": { + "type": "keyword", + "_meta": { + "description": "The time the tab was created" + } + }, + "linked_dashboards_count": { + "type": "long", + "_meta": { + "description": "Number of associated dashboards" + } + } + } + }, + "dashboards": { + "type": "array", + "items": { + "properties": { + "created_at": { + "type": "keyword", + "_meta": { + "description": "The time the dashboard was created" + } + }, + "dashboard_id": { + "type": "keyword", + "_meta": { + "description": "The dashboard saved object id" + } + }, + "error_message": { + "type": "keyword", + "_meta": { + "description": "The relevant error message" + } + }, + "error_status_code": { + "type": "long", + "_meta": { + "description": "The relevant error status code" + } + } + } + } + } + } + }, + "riskEngineMetrics": { + "properties": { + "unique_user_risk_score_total": { + "type": "long", + "_meta": { + "description": "Total unique user risk scores" + } + }, + "unique_host_risk_score_total": { + "type": "long", + "_meta": { + "description": "Total unique host risk scores" + } + }, + "unique_user_risk_score_day": { + "type": "long", + "_meta": { + "description": "Unique user risk scores per day" + } + }, + "unique_host_risk_score_day": { + "type": "long", + "_meta": { + "description": "Unique host risk scores per day" + } + }, + "all_host_risk_scores_total": { + "type": "long", + "_meta": { + "description": "Total number of host risk score records" + } + }, + "all_user_risk_scores_total": { + "type": "long", + "_meta": { + "description": "Total number of user risk score records" + } + }, + "all_host_risk_scores_total_day": { + "type": "long", + "_meta": { + "description": "Number of host risk score records per day" + } + }, + "all_user_risk_scores_total_day": { + "type": "long", + "_meta": { + "description": "Number of user risk score records per day" + } + }, + "all_risk_scores_index_size": { + "type": "long", + "_meta": { + "description": "Total size of the all Risk Score indices (MB)" + } + }, + "unique_risk_scores_index_size": { + "type": "long", + "_meta": { + "description": "Total size of the unique Risk Score indices (MB)" + } + } + } + } + } + } + } } diff --git a/x-pack/plugins/threat_intelligence/README.md b/x-pack/plugins/threat_intelligence/README.md deleted file mode 100755 index 777e932f6d95a..0000000000000 --- a/x-pack/plugins/threat_intelligence/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# Threat Intelligence - -Elastic Threat Intelligence makes it easy to analyze and investigate potential security threats by aggregating data from multiple sources in one place. You’ll be able to view data from all activated threat intelligence feeds and take action. - -### Where to find the UI for this plugin? - -The Threat Intelligence UI is displayed in Kibana Security, under the Explore section. - -## Development setup - -### Kibana development in general - -Best source - [internal Kibana docs](https://docs.elastic.dev/kibana-dev-docs/getting-started/welcome). If you have any issues with setting up your Kibana dev environment [#kibana](https://elastic.slack.com/archives/C0D8P2XK5) Slack channel is a good way to get help. - -### Essential `kibana.yml` settings - -You can make a copy of `kibana.yml` file into `kibana.dev.yml` and make adjustments to the settings. External documentation on the flags available is [here](https://www.elastic.co/guide/en/kibana/current/settings.html) - -It is recommended to set `server.basePath: "/kbn"` to make you local instance persist the base Kibana path. If you don't do it, the base path will be a random string every time you start Kibana. Any other value than `/kbn` will also work. - -### Getting Threat Intelligence feeds data into Kibana - -There are many ways to get data for you local development. We first focus on getting Threat Intelligence data specifically. - -### Setting up filebeat threatintel integrations locally - -1. install [mage](https://github.com/magefile/mage). It is a Go build tool used to build `beats`. Installation from the sources requires Go lang set up. A simpler option might be to install it from a package manager available in your system (eg. `brew` on MacOs) or use their [binary distribution](https://github.com/magefile/mage/releases) -1. start Elasticsearch and Kibana -1. clone [beats](https://github.com/elastic/beats) repository -1. inside beats repository, update `x-pack/filebeat/filebeat.yml` with your local Elasticsearch and Kibana connection configs - - ``` - output.elasticsearch: - hosts: ["localhost:9200"] - username: "elastic" - password: "changeme" - - setup.kibana: - host: "localhost:5601" // make sure to run Kibana with --no-base-path option or specify server.basePath in Kibana config and use it here as a path, eg. localhost:5601/kbn - ``` - -1. go into `x-pack/filebeat` (that's where security related modules live) -1. build filebeat `mage build` -1. enable `threatintel` module by running `./filebeat modules enable threatintel` -1. enable specific Threat Intelligence integrations by updating `modules.d/threatintel.yml`. Update `enable` to `true` in every integration you want to enable and configs specific for these integrations. The bare minimum is to enable Abuse.CH feeds `abuseurl`, `abusemalware` and `malwarebazaar`. -1. run `./filebeat setup -E setup.dashboards.directory=build/kibana` to set up predefined dashboards -1. run `./filebeat -e` to start filebeat -1. to validate that the set up works, wait for some Threat Intel data to be ingested and then go in Analytics > Discover in your local Kibana to search `event.category : threat and event.type : indicator`. You should see some documents returned by this search. Abuse.CH feeds are up to date so you should see the results from the last 7 days. - -### More ways to get data - -There are many more tools available for getting the data for testing or local development, depending on the data type and usecase. - -- Kibana development docs > [Add data](https://docs.elastic.dev/kibana-dev-docs/getting-started/sample-data) -- [Dev/Design/Testing Environments and Frameworks](https://docs.google.com/document/d/1DGCcLMnVKQ_STlkbS4E0m4kbPivNtR8iMlg_IoCuCEw/edit#) gathered by Security Engineering Productivity team - -### Generate fixtures for local testing - -You can generate large volumes of threat indicators on demand with the following script: - -``` -node scripts/generate_indicators.js -``` - -see the file in order to adjust the amount of indicators generated. The default is one million. - -## E2E - -### Running locally - -Cypress tests are integrated with the Security Solution ones. Please refer to https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/cypress/README.md for more information - -## FAQ - -### How is the Threat Intelligence code loaded in Kibana? - -The Threat Intelligence plugin is loaded lazily within the [security_solution](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution) plugin, -from `x-pack/plugins/security_solution/public/threat_intelligence` owned by the Threat Hunting Investigations Team. - -## QA and demo for implemented features - -One way to QA and demo the feature merged into `main` branch is to run the latest `main` locally. -Another option is to deploy a Staging instance. For Staging environment snapshots are being build every night with the latest state of the `main` branch. More documentation can be found [here](https://cloud.elastic.dev/environments/Staging/#automatic-termination-of-staging-deployments) - -## Contributing - -See [CONTRIBUTING.md](https://github.com/elastic/kibana/blob/main/x-pack/plugins/threat_intelligence/CONTRIBUTING.md) for information on contributing. - -## Issues - -Please report any issues in [this GitHub project](https://github.com/orgs/elastic/projects/758/). \ No newline at end of file diff --git a/x-pack/plugins/threat_intelligence/jest.config.js b/x-pack/plugins/threat_intelligence/jest.config.js deleted file mode 100644 index 8c8711ba5089c..0000000000000 --- a/x-pack/plugins/threat_intelligence/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../', - roots: ['/x-pack/plugins/threat_intelligence'], -}; diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts b/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts deleted file mode 100644 index 1166130b640cd..0000000000000 --- a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useContext } from 'react'; -import moment from 'moment'; -import { DataProvider } from '@kbn/timelines-plugin/common'; -import { generateDataProvider } from '../utils/data_provider'; -import { SecuritySolutionContext } from '../../../containers/security_solution_context'; -import { fieldAndValueValid, getIndicatorFieldAndValue } from '../../indicators/utils/field_value'; -import { unwrapValue } from '../../indicators/utils/unwrap_value'; -import { - Indicator, - IndicatorFieldEventEnrichmentMap, - RawIndicatorFieldId, -} from '../../../../common/types/indicator'; - -export interface UseInvestigateInTimelineParam { - /** - * Indicator used to retrieve the field and value then passed to the Investigate in Timeline logic - */ - indicator: Indicator; -} - -export interface UseInvestigateInTimelineValue { - /** - * Investigate in Timeline function to run on click event. - */ - investigateInTimelineFn: (() => Promise) | undefined; -} - -/** - * Custom hook that gets an {@link Indicator}, retrieves the field (from the RawIndicatorFieldId.Name) - * and value, then creates DataProviders used to do the Investigate in Timeline logic - * (see /kibana/x-pack/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts) - */ -export const useInvestigateInTimeline = ({ - indicator, -}: UseInvestigateInTimelineParam): UseInvestigateInTimelineValue => { - const securitySolutionContext = useContext(SecuritySolutionContext); - - const { key, value } = getIndicatorFieldAndValue(indicator, RawIndicatorFieldId.Name); - const sourceEventField = IndicatorFieldEventEnrichmentMap[key]; - - if (!fieldAndValueValid(key, value) || !sourceEventField) { - return {} as unknown as UseInvestigateInTimelineValue; - } - - const dataProviders: DataProvider[] = [...sourceEventField, key].map((e: string) => - generateDataProvider(e, value as string) - ); - - const indicatorTimestamp: string = unwrapValue( - indicator, - RawIndicatorFieldId.TimeStamp - ) as string; - - const from = moment(indicatorTimestamp).subtract(7, 'd').toISOString(); - const to = moment(indicatorTimestamp).add(7, 'd').toISOString(); - - if (!to || !from) { - return {} as unknown as UseInvestigateInTimelineValue; - } - - const investigateInTimelineFn = securitySolutionContext?.getUseInvestigateInTimeline({ - dataProviders, - from, - to, - }); - - return { - investigateInTimelineFn, - }; -}; diff --git a/x-pack/plugins/threat_intelligence/public/plugin.tsx b/x-pack/plugins/threat_intelligence/public/plugin.tsx deleted file mode 100755 index 09a0925577284..0000000000000 --- a/x-pack/plugins/threat_intelligence/public/plugin.tsx +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; -import { Storage } from '@kbn/kibana-utils-plugin/public'; -import { Provider as ReduxStoreProvider } from 'react-redux'; -import React, { Suspense } from 'react'; -import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; -import { ExternalReferenceAttachmentType } from '@kbn/cases-plugin/public/client/attachment_framework/types'; -import { generateAttachmentType } from './modules/cases/utils/attachments'; -import { KibanaContextProvider } from './hooks/use_kibana'; -import { - SecuritySolutionPluginContext, - Services, - SetupPlugins, - ThreatIntelligencePluginSetup, - ThreatIntelligencePluginStart, - ThreatIntelligencePluginStartDeps, -} from './types'; -import { SecuritySolutionContext } from './containers/security_solution_context'; -import { EnterpriseGuard } from './containers/enterprise_guard'; - -interface AppProps { - securitySolutionContext: SecuritySolutionPluginContext; -} - -const LazyIndicatorsPageWrapper = React.lazy(() => import('./containers/indicators_page_wrapper')); - -/** - * This is used here: - * x-pack/plugins/security_solution/public/threat_intelligence/routes.tsx - */ -export const createApp = - (services: Services) => - () => - ({ securitySolutionContext }: AppProps) => - ( - - - - - - }> - - - - - - - - ); - -export class ThreatIntelligencePlugin implements Plugin { - public async setup( - _core: CoreSetup, - plugins: SetupPlugins - ): Promise { - const externalAttachmentType: ExternalReferenceAttachmentType = generateAttachmentType(); - plugins.cases.attachmentFramework.registerExternalReference(externalAttachmentType); - - return {}; - } - - public start( - core: CoreStart, - plugins: ThreatIntelligencePluginStartDeps - ): ThreatIntelligencePluginStart { - const localPluginServices = { - storage: new Storage(localStorage), - }; - - const services: Services = { - ...localPluginServices, - ...core, - ...plugins, - }; - - return { - getComponent: createApp(services), - }; - } - - public stop() {} -} diff --git a/x-pack/plugins/threat_intelligence/public/types.ts b/x-pack/plugins/threat_intelligence/public/types.ts deleted file mode 100644 index 13d6320ba10b5..0000000000000 --- a/x-pack/plugins/threat_intelligence/public/types.ts +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ComponentType, NamedExoticComponent, ReactElement, ReactNode, VFC } from 'react'; -import { CoreStart } from '@kbn/core/public'; -import { DataPublicPluginStart } from '@kbn/data-plugin/public'; -import { - DataViewField, - type DataViewSpec, - DataViewsPublicPluginStart, - FieldSpec, -} from '@kbn/data-views-plugin/public'; -import { Storage } from '@kbn/kibana-utils-plugin/public'; -import { TimelinesUIStart } from '@kbn/timelines-plugin/public'; -import type { TriggersAndActionsUIPublicPluginStart as TriggersActionsStart } from '@kbn/triggers-actions-ui-plugin/public'; -import { DataViewBase, Filter, Query, TimeRange } from '@kbn/es-query'; -import { BrowserField } from '@kbn/rule-registry-plugin/common'; -import { Store } from 'redux'; -import { DataProvider } from '@kbn/timelines-plugin/common'; -import { Start as InspectorPluginStart } from '@kbn/inspector-plugin/public'; -import { CasesPublicSetup, CasesPublicStart } from '@kbn/cases-plugin/public/types'; -import { CreateExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; -import { Policy } from './modules/block_list/hooks/use_policies'; - -export interface SecuritySolutionDataViewBase extends DataViewBase { - fields: Array; -} - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ThreatIntelligencePluginSetup {} - -export interface SetupPlugins { - cases: CasesPublicSetup; -} - -export interface ThreatIntelligencePluginStart { - getComponent: () => (props: { - securitySolutionContext: SecuritySolutionPluginContext; - }) => ReactElement; -} - -export interface ThreatIntelligencePluginStartDeps { - data: DataPublicPluginStart; - cases: CasesPublicStart; - dataViews: DataViewsPublicPluginStart; - triggersActionsUi: TriggersActionsStart; - timelines: TimelinesUIStart; - securityLayout: any; - inspector: InspectorPluginStart; -} - -export interface Services extends CoreStart, ThreatIntelligencePluginStartDeps { - storage: Storage; -} - -export interface LicenseAware { - isEnterprise(): boolean; - isPlatinumPlus(): boolean; -} - -export type BrowserFields = Readonly>>; - -export interface SelectedDataView { - sourcererDataView: DataViewSpec; - indexPattern: SecuritySolutionDataViewBase; - browserFields: BrowserFields; - selectedPatterns: string[]; - loading: boolean; -} - -export interface UseInvestigateInTimelineProps { - dataProviders: DataProvider[]; - from: string; - to: string; -} - -export interface BlockListFlyoutProps { - apiClient: unknown; - item: CreateExceptionListItemSchema; - policies: Policy[]; - policiesIsLoading: boolean; - FormComponent: NamedExoticComponent; - onClose: () => void; -} - -export interface BlockListFormProps { - item: CreateExceptionListItemSchema; -} - -export interface Blocking { - canWriteBlocklist: boolean; - exceptionListApiClient: unknown; - useSetUrlParams: () => ( - params: Record, - replace?: boolean | undefined - ) => void; - getFlyoutComponent: () => NamedExoticComponent; - getFormComponent: () => NamedExoticComponent; -} - -/** - * Methods exposed from the security solution to the threat intelligence application. - */ -export interface SecuritySolutionPluginContext { - /** - * Gets the `FiltersGlobal` component for embedding a filter bar in the security solution application. - * */ - getFiltersGlobalComponent: () => ComponentType<{ children: ReactNode }>; - - /** - * Gets the `PageWrapper` component for embedding a filter bar in the security solution application. - * */ - getPageWrapper: () => ComponentType<{ children: ReactNode }>; - - /** - * Get the user's license to drive the Threat Intelligence plugin's visibility. - */ - licenseService: LicenseAware; - - /** - * Gets Security Solution shared information like browerFields, indexPattern and selectedPatterns in DataView. - */ - sourcererDataView: SelectedDataView; - - /** - * Security Solution store - */ - securitySolutionStore: Store; - - /** - * Pass UseInvestigateInTimeline functionality to TI plugin - */ - getUseInvestigateInTimeline: ({ - dataProviders, - from, - to, - }: UseInvestigateInTimelineProps) => () => Promise; - - useQuery: () => Query; - - useFilters: () => Filter[]; - - useGlobalTime: () => TimeRange; - - SiemSearchBar: VFC; - - /** - * Register query in security solution store for tracking and centralized refresh support - */ - registerQuery: (query: { id: string; loading: boolean; refetch: VoidFunction }) => void; - - /** - * Deregister stale query - */ - deregisterQuery: (query: { id: string }) => void; - - /** - * Add to blocklist feature - */ - blockList: Blocking; -} - -/** - * All the names for the threat intelligence pages. - * - * Example to add more names: - * export type TIPage = 'indicators' | 'feed'; - */ -export type TIPage = 'indicators'; - -/** - * All the IDs for the threat intelligence pages. - * This needs to match the threat intelligence page entries in SecurityPageName` (x-pack/plugins/security_solution/common/constants.ts). - * - * Example to add more IDs: - * export type TIPageId = 'threat_intelligence' | 'threat_intelligence-feed'; - */ -export type TIPageId = 'threat_intelligence'; - -/** - * A record of all the properties that will be used to build deeplinks, links and navtabs objects. - */ -export interface TIPageProperties { - id: TIPageId; - readonly oldNavigationName: string; // delete when the old navigation is removed - readonly newNavigationName: string; // rename to name when the old navigation is removed - readonly path: string; - readonly disabled: boolean; - readonly description: string; - readonly globalSearchKeywords: string[]; - readonly keywords: string[]; -} diff --git a/x-pack/plugins/threat_intelligence/tsconfig.json b/x-pack/plugins/threat_intelligence/tsconfig.json deleted file mode 100644 index 21109d1624813..0000000000000 --- a/x-pack/plugins/threat_intelligence/tsconfig.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "scripts/**/*", - "public/**/*.json", - "server/**/*.json", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/cases-plugin", - "@kbn/timelines-plugin", - "@kbn/core", - "@kbn/data-plugin", - "@kbn/unified-search-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/i18n-react", - "@kbn/data-views-plugin", - "@kbn/es-query", - "@kbn/rule-registry-plugin", - "@kbn/inspector-plugin", - "@kbn/shared-ux-page-kibana-template-types", - "@kbn/doc-links", - "@kbn/i18n", - "@kbn/kibana-react-plugin", - "@kbn/utility-types", - "@kbn/ui-theme", - "@kbn/securitysolution-io-ts-list-types", - "@kbn/core-ui-settings-browser", - "@kbn/search-types" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/timelines/common/types/timeline/cells/index.ts b/x-pack/plugins/timelines/common/types/timeline/cells/index.ts deleted file mode 100644 index 336bb2f01ff43..0000000000000 --- a/x-pack/plugins/timelines/common/types/timeline/cells/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiDataGridCellValueElementProps } from '@elastic/eui'; -import type { Filter } from '@kbn/es-query'; -import { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; -import { ColumnHeaderOptions, DeprecatedRowRenderer } from '../..'; -import { BrowserFields, TimelineNonEcsData } from '../../../search_strategy'; - -/** - * The following props are provided to the function called by `renderCellValue`. - * Warning: This type might be outdated. Therefore, migrate to the new one from - * `plugins/security_solution/common/types/timeline/cells/index.ts`. - * @deprecated - */ -export type DeprecatedCellValueElementProps = EuiDataGridCellValueElementProps & { - asPlainText?: boolean; - browserFields?: BrowserFields; - data: TimelineNonEcsData[]; - ecsData?: Ecs; - eventId: string; // _id - globalFilters?: Filter[]; - header: ColumnHeaderOptions; - isDraggable: boolean; - isTimeline?: boolean; // Default cell renderer is used for both the alert table and timeline. This allows us to cheaply separate concerns - linkValues: string[] | undefined; - rowRenderers?: DeprecatedRowRenderer[]; - setFlyoutAlert?: (alertId: string) => void; - scopeId: string; - truncate?: boolean; - key?: string; - closeCellPopover?: () => void; - enableActions?: boolean; -}; diff --git a/x-pack/plugins/timelines/common/types/timeline/rows/index.ts b/x-pack/plugins/timelines/common/types/timeline/rows/index.ts deleted file mode 100644 index 29919f59e1819..0000000000000 --- a/x-pack/plugins/timelines/common/types/timeline/rows/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; -import { DeprecatedRowRendererId } from '..'; - -/** - * This interface should not be used anymore. - * Use the one from `plugins/security_solution/common/types/timeline`. - * @deprecated - */ -export interface DeprecatedRowRenderer { - id: DeprecatedRowRendererId; - isInstance: (data: Ecs) => boolean; - renderRow: ({ - contextId, - data, - isDraggable, - scopeId, - }: { - contextId?: string; - data: Ecs; - isDraggable: boolean; - scopeId: string; - }) => React.ReactNode; -} diff --git a/x-pack/plugins/timelines/jest.config.js b/x-pack/plugins/timelines/jest.config.js deleted file mode 100644 index d26134d924e1d..0000000000000 --- a/x-pack/plugins/timelines/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/x-pack/plugins/timelines'], - coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/timelines', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['/x-pack/plugins/timelines/{common,public,server}/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/timelines/public/hooks/use_app_toasts.ts b/x-pack/plugins/timelines/public/hooks/use_app_toasts.ts deleted file mode 100644 index decce2d6cec9e..0000000000000 --- a/x-pack/plugins/timelines/public/hooks/use_app_toasts.ts +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useCallback, useRef } from 'react'; -import { isString } from 'lodash/fp'; -import { isAppError, isKibanaError, isSecurityAppError } from '@kbn/securitysolution-t-grid'; -import type { AppError } from '@kbn/securitysolution-t-grid'; - -import { useKibana } from '@kbn/kibana-react-plugin/public'; -import type { ErrorToastOptions, ToastsStart, Toast, NotificationsStart } from '@kbn/core/public'; -import { IEsError, isEsError } from '@kbn/search-errors'; - -export type UseAppToasts = Pick & { - api: ToastsStart; - addError: (error: unknown, options: ErrorToastOptions) => Toast; -}; - -/** - * This gives a better presentation of error data sent from the API (both general platform errors and app-specific errors). - * This uses platform's new Toasts service to prevent modal/toast z-index collision issues. - * This fixes some issues you can see with re-rendering since using a class such as notifications.toasts. - * This also has an adapter and transform for detecting if a bsearch's EsError is present and then adapts that to the - * Kibana error toaster model so that the network error message will be shown rather than a stack trace. - */ -export const useAppToasts = (): UseAppToasts => { - const { toasts } = useKibana<{ - notifications: NotificationsStart; - }>().services.notifications; - const addError = useRef(toasts?.addError.bind(toasts)).current; - const addSuccess = useRef(toasts?.addSuccess.bind(toasts)).current; - const addWarning = useRef(toasts?.addWarning.bind(toasts)).current; - - const _addError = useCallback( - (error: unknown, options: ErrorToastOptions) => { - const adaptedError = errorToErrorStackAdapter(error); - return addError(adaptedError, options); - }, - [addError] - ); - return { api: toasts, addError: _addError, addSuccess, addWarning }; -}; - -/** - * Given an error of one type vs. another type this tries to adapt - * the best it can to the existing error toaster which parses the .stack - * as its error when you click the button to show the full error message. - * @param error The error to adapt to. - * @returns The adapted toaster error message. - */ -export const errorToErrorStackAdapter = (error: unknown): Error => { - if (error != null && isEsError(error)) { - return esErrorToErrorStack(error); - } else if (isAppError(error)) { - return appErrorToErrorStack(error); - } else if (error instanceof Error) { - return errorToErrorStack(error); - } else { - return unknownToErrorStack(error); - } -}; - -/** - * See this file, we are not allowed to import files such as es_error. - * So instead we say maybe err is on there so that we can unwrap it and get - * our status code from it if possible within the error in our function. - * src/plugins/data/public/search/errors/es_error.tsx - */ -export type MaybeESError = IEsError & { err?: Record }; - -/** - * This attempts its best to map between an IEsError which comes from bsearch to a error_toaster - * See the file: src/core/public/notifications/toasts/error_toast.tsx - * - * NOTE: This is brittle at the moment from bsearch and the hope is that better support between - * the error message and formatting of bsearch and the error_toast.tsx from Kibana core will be - * supported in the future. However, for now, this is _hopefully_ temporary. - * - * Also see the file: - * x-pack/plugins/security_solution/public/app/home/setup.tsx - * - * Where this same technique of overriding and changing the stack is occurring. - */ -export const esErrorToErrorStack = (error: IEsError & MaybeESError): Error => { - const maybeUnWrapped = error.err != null ? error.err : error; - const statusCode = - error.err?.statusCode != null - ? `(${error.err.statusCode})` - : error.statusCode != null - ? `(${error.statusCode})` - : ''; - const stringifiedError = getStringifiedStack(maybeUnWrapped); - const adaptedError = new Error( - `${error.attributes?.error?.reason ?? error.message} ${statusCode}` - ); - adaptedError.name = error.attributes?.error?.reason ?? error.message; - if (stringifiedError != null) { - adaptedError.stack = stringifiedError; - } - return adaptedError; -}; - -/** - * This attempts its best to map between a Kibana application error which can come from backend - * REST API's that are typically of a particular format and form. - * - * The existing error_toaster code tries to consolidate network and software stack traces but really - * here and our toasters we are using them for network response errors so we can troubleshoot things - * as quick as possible. - * - * We override and use error.stack to be able to give _full_ network responses regardless of if they - * are from Kibana or if they are from elasticSearch since sometimes Kibana errors might wrap the errors. - * - * Sometimes the errors are wrapped from io-ts, Kibana Schema or something else and we want to show - * as full error messages as we can. - */ -export const appErrorToErrorStack = (error: AppError): Error => { - const statusCode = isKibanaError(error) - ? `(${error.body.statusCode})` - : isSecurityAppError(error) - ? `(${error.body.status_code})` - : ''; - const stringifiedError = getStringifiedStack(error); - const adaptedError = new Error( - `${String(error.body.message).trim() !== '' ? error.body.message : error.message} ${statusCode}` - ); - // Note although all the Typescript typings say that error.name is a string and exists, we still can encounter an undefined so we - // do an extra guard here and default to empty string if it is undefined - adaptedError.name = error.name != null ? error.name : ''; - if (stringifiedError != null) { - adaptedError.stack = stringifiedError; - } - return adaptedError; -}; - -/** - * Takes an error and tries to stringify it and use that as the stack for the error toaster - * @param error The error to convert into a message - * @returns The exception error to return back - */ -export const errorToErrorStack = (error: Error): Error => { - const stringifiedError = getStringifiedStack(error); - const adaptedError = new Error(error.message); - adaptedError.name = error.name; - if (stringifiedError != null) { - adaptedError.stack = stringifiedError; - } - return adaptedError; -}; - -/** - * Last ditch effort to take something unknown which could be a string, number, - * anything. This usually should not be called but just in case we do try our - * best to stringify it and give a message, name, and replace the stack of it. - * @param error The unknown error to convert into a message - * @returns The exception error to return back - */ -export const unknownToErrorStack = (error: unknown): Error => { - const stringifiedError = getStringifiedStack(error); - const message = isString(error) - ? error - : error instanceof Object && stringifiedError != null - ? stringifiedError - : String(error); - const adaptedError = new Error(message); - adaptedError.name = message; - if (stringifiedError != null) { - adaptedError.stack = stringifiedError; - } - return adaptedError; -}; - -/** - * Stringifies the error. However, since Errors can JSON.stringify into empty objects this will - * use a replacer to push those as enumerable properties so we can stringify them. - * @param error The error to get a string representation of - * @returns The string representation of the error - */ -export const getStringifiedStack = (error: unknown): string | undefined => { - try { - return JSON.stringify( - error, - (_, value) => { - const enumerable = convertErrorToEnumerable(value); - if (isEmptyObjectWhenStringified(enumerable)) { - return undefined; - } else { - return enumerable; - } - }, - 2 - ); - } catch (err) { - return undefined; - } -}; - -/** - * Converts an error if this is an error to have enumerable so it can stringified - * @param error The error which might not have enumerable properties. - * @returns Enumerable error - */ -export const convertErrorToEnumerable = (error: unknown): unknown => { - if (error instanceof Error) { - return { - ...error, - name: error.name, - message: error.message, - stack: error.stack, - }; - } else { - return error; - } -}; - -/** - * If the object strings into an empty object we shouldn't show it as it doesn't - * add value and sometimes different people/frameworks attach req,res,request,response - * objects which don't stringify into anything or can have circular references. - * @param item The item to see if we are empty or have a circular reference error with. - * @returns True if this is a good object to stringify, otherwise false - */ -export const isEmptyObjectWhenStringified = (item: unknown): boolean => { - if (item instanceof Object) { - try { - return JSON.stringify(item) === '{}'; - } catch (_) { - // Do nothing, return false if we have a circular reference or other oddness. - return false; - } - } else { - return false; - } -}; diff --git a/x-pack/plugins/timelines/server/index.ts b/x-pack/plugins/timelines/server/index.ts deleted file mode 100644 index 929be7a34ab42..0000000000000 --- a/x-pack/plugins/timelines/server/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; -import { schema } from '@kbn/config-schema'; -import { ConfigSchema } from './config'; - -export async function plugin(initializerContext: PluginInitializerContext) { - const { TimelinesPlugin } = await import('./plugin'); - return new TimelinesPlugin(initializerContext); -} - -export type { TimelinesPluginUI, TimelinesPluginStart } from './types'; - -const configSchema = schema.object({ - /** - * For internal use. A list of string values (comma delimited) that will enable experimental - * type of functionality that is not yet released. Valid values for this settings need to - * be defined in: - * `x-pack/plugins/timelines/common/experimental_features.ts` - * under the `allowedExperimentalValues` object - * - * @example - * xpack.timelines.enableExperimental: - * - someCrazyFeature - * - someEvenCrazierFeature - */ - enableExperimental: schema.arrayOf(schema.string(), { - defaultValue: () => [], - }), -}); - -export const config: PluginConfigDescriptor = { - exposeToBrowser: { - enableExperimental: true, - }, - schema: configSchema, -}; diff --git a/x-pack/plugins/timelines/tsconfig.json b/x-pack/plugins/timelines/tsconfig.json deleted file mode 100644 index 7a317bdd75037..0000000000000 --- a/x-pack/plugins/timelines/tsconfig.json +++ /dev/null @@ -1,47 +0,0 @@ - -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 - "server/**/*.json", - "public/**/*.json", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/data-plugin", - "@kbn/cases-plugin", - "@kbn/alerting-plugin", - "@kbn/utility-types", - "@kbn/es-query", - "@kbn/securitysolution-ecs", - "@kbn/securitysolution-t-grid", - "@kbn/rule-data-utils", - "@kbn/rule-registry-plugin", - "@kbn/data-views-plugin", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/ui-theme", - "@kbn/i18n-react", - "@kbn/i18n", - "@kbn/security-plugin", - "@kbn/safer-lodash-set", - "@kbn/alerts-as-data-utils", - "@kbn/logging", - "@kbn/search-errors", - "@kbn/search-types", - "@kbn/react-kibana-mount", - "@kbn/field-formats-plugin", - "@kbn/config-schema", - "@kbn/zod" - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/x-pack/plugins/triggers_actions_ui/.storybook/decorator.tsx b/x-pack/plugins/triggers_actions_ui/.storybook/decorator.tsx index 233b673353929..8947cf9f6bbe8 100644 --- a/x-pack/plugins/triggers_actions_ui/.storybook/decorator.tsx +++ b/x-pack/plugins/triggers_actions_ui/.storybook/decorator.tsx @@ -50,6 +50,8 @@ const notifications: NotificationsStart = { showErrorDialog: () => {}, }; +const userProfile = { getUserProfile$: () => of(null) }; + export const StorybookContextDecorator: FC> = ( props ) => { @@ -75,7 +77,7 @@ export const StorybookContextDecorator: FC - + { }; export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { - const { dataViews, i18n, theme } = deps; + const { dataViews } = deps; setDataViewsService(dataViews); return ( - + diff --git a/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx index 8fe0d9745d1c2..f00db5879120b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx @@ -73,13 +73,13 @@ export const renderApp = (deps: TriggersAndActionsUiServices) => { }; export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { - const { dataViews, i18n, theme } = deps; + const { dataViews } = deps; const sections: Section[] = ['connectors', 'logs']; const sectionsRegex = sections.join('|'); setDataViewsService(dataViews); return ( - + diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx index b1d69c89094e9..c07cc9ac770d2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx @@ -65,6 +65,7 @@ export function useBulkEditResponse(props: UseBulkEditResponseProps) { const { i18n: i18nStart, theme, + userProfile, notifications: { toasts }, } = useKibana().services; @@ -124,7 +125,11 @@ export function useBulkEditResponse(props: UseBulkEditResponseProps) { if (numberOfErrors === total) { toasts.addDanger({ title: failureMessage(numberOfErrors, translationMap[property]), - text: toMountPoint(renderToastErrorBody(response), { i18n: i18nStart, theme }), + text: toMountPoint(renderToastErrorBody(response), { + i18n: i18nStart, + theme, + userProfile, + }), }); return; } @@ -132,10 +137,10 @@ export function useBulkEditResponse(props: UseBulkEditResponseProps) { // Some failure toasts.addWarning({ title: someSuccessMessage(numberOfSuccess, numberOfErrors, translationMap[property]), - text: toMountPoint(renderToastErrorBody(response), { i18n: i18nStart, theme }), + text: toMountPoint(renderToastErrorBody(response), { i18n: i18nStart, theme, userProfile }), }); }, - [i18nStart, theme, toasts, renderToastErrorBody] + [i18nStart, theme, userProfile, toasts, renderToastErrorBody] ); return useMemo(() => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx index 88ad5c8f52958..8d2d8d98b1155 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx @@ -50,6 +50,7 @@ export const useBulkOperationToast = ({ const { i18n, theme, + userProfile, notifications: { toasts }, } = useKibana().services; @@ -122,7 +123,7 @@ export const useBulkOperationToast = ({ SINGLE_RULE_TITLE, MULTIPLE_RULE_TITLE ), - text: toMountPoint(renderToastErrorBody(errors, 'danger'), { i18n, theme }), + text: toMountPoint(renderToastErrorBody(errors, 'danger'), { i18n, theme, userProfile }), }); return; } @@ -135,10 +136,10 @@ export const useBulkOperationToast = ({ SINGLE_RULE_TITLE, MULTIPLE_RULE_TITLE ), - text: toMountPoint(renderToastErrorBody(errors, 'warning'), { i18n, theme }), + text: toMountPoint(renderToastErrorBody(errors, 'warning'), { i18n, theme, userProfile }), }); }, - [i18n, theme, toasts, renderToastErrorBody] + [i18n, theme, userProfile, toasts, renderToastErrorBody] ); return useMemo(() => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/rules_app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/rules_app.tsx index 8550518edb457..2477d9d95c4b4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/rules_app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/rules_app.tsx @@ -101,13 +101,13 @@ export const renderApp = (deps: TriggersAndActionsUiServices) => { }; export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { - const { dataViews, i18n, theme } = deps; + const { dataViews } = deps; const sections: Section[] = ['rules', 'logs']; const sectionsRegex = sections.join('|'); setDataViewsService(dataViews); return ( - + diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx index afb483b70f007..5fdd96611d718 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx @@ -94,7 +94,7 @@ describe('connectors_selection', () => { it('renders a selector', () => { const wrapper = mountWithIntl( - + { it('renders the title of the connector', () => { render( - + { describe('Submitting', () => { it('creates a connector correctly', async () => { - const { getByTestId } = appMockRenderer.render( + const { getByTestId, queryByTestId } = appMockRenderer.render( { name: 'My test', secrets: {}, }); + expect(queryByTestId('connector-form-header-error-label')).not.toBeInTheDocument(); + }); + + it('show error message in the form header', async () => { + appMockRenderer.render( + + ); + + await userEvent.click(await screen.findByTestId(`${actionTypeModel.id}-card`)); + expect(await screen.findByTestId('test-connector-text-field')).toBeInTheDocument(); + + await userEvent.type( + await screen.findByTestId('test-connector-text-field'), + 'My text field', + { + delay: 100, + } + ); + + await userEvent.click(await screen.findByTestId('create-connector-flyout-save-btn')); + expect(onClose).not.toHaveBeenCalled(); + expect(onConnectorCreated).not.toHaveBeenCalled(); + expect(await screen.findByTestId('connector-form-header-error-label')).toBeInTheDocument(); + }); + + it('removes error message from the form header', async () => { + appMockRenderer.render( + + ); + + await userEvent.click(await screen.findByTestId(`${actionTypeModel.id}-card`)); + expect(await screen.findByTestId('test-connector-text-field')).toBeInTheDocument(); + + await userEvent.type( + await screen.findByTestId('test-connector-text-field'), + 'My text field', + { + delay: 100, + } + ); + + await userEvent.click(await screen.findByTestId('create-connector-flyout-save-btn')); + expect(onClose).not.toHaveBeenCalled(); + expect(onConnectorCreated).not.toHaveBeenCalled(); + expect(await screen.findByTestId('connector-form-header-error-label')).toBeInTheDocument(); + + await userEvent.type(await screen.findByTestId('nameInput'), 'My test', { + delay: 100, + }); + + await userEvent.click(await screen.findByTestId('create-connector-flyout-save-btn')); + expect(onClose).toHaveBeenCalled(); + expect(onConnectorCreated).toHaveBeenCalled(); + expect(screen.queryByTestId('connector-form-header-error-label')).not.toBeInTheDocument(); }); it('runs pre submit validator correctly', async () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.tsx index b93d2815bf197..c341f861b5ead 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.tsx @@ -9,6 +9,7 @@ import React, { memo, ReactNode, useCallback, useEffect, useRef, useState } from import { EuiButton, EuiButtonGroup, + EuiCallOut, EuiFlexGroup, EuiFlexItem, EuiFlyout, @@ -18,6 +19,7 @@ import { import { getConnectorCompatibility } from '@kbn/actions-plugin/common'; import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; import { ActionConnector, ActionType, @@ -60,6 +62,7 @@ const CreateConnectorFlyoutComponent: React.FC = ({ const [actionType, setActionType] = useState(null); const [hasActionsUpgradeableByTrial, setHasActionsUpgradeableByTrial] = useState(false); const canSave = hasSaveActionsCapability(capabilities); + const [showFormErrors, setShowFormErrors] = useState(false); const [preSubmitValidationErrorMessage, setPreSubmitValidationErrorMessage] = useState(null); @@ -106,6 +109,7 @@ const CreateConnectorFlyoutComponent: React.FC = ({ const setResetForm = (reset: ResetForm) => { resetConnectorForm.current = reset; + setShowFormErrors(false); }; const onChangeGroupAction = (id: string) => { @@ -127,6 +131,7 @@ const CreateConnectorFlyoutComponent: React.FC = ({ const validateAndCreateConnector = useCallback(async () => { setPreSubmitValidationErrorMessage(null); + setShowFormErrors(false); const { isValid, data } = await submit(); if (!isMounted.current) { @@ -159,6 +164,8 @@ const CreateConnectorFlyoutComponent: React.FC = ({ const createdConnector = await createConnector(validConnector); return createdConnector; + } else { + setShowFormErrors(true); } }, [submit, preSubmitValidator, createConnector]); @@ -228,6 +235,23 @@ const CreateConnectorFlyoutComponent: React.FC = ({ )} + {showFormErrors && ( + <> + + + + )} { describe('Submitting', () => { it('updates the connector correctly', async () => { - const { getByTestId } = appMockRenderer.render( + const { getByTestId, queryByTestId } = appMockRenderer.render( { name: 'My test', secrets: {}, }); + expect(queryByTestId('connector-form-header-error-label')).not.toBeInTheDocument(); }); it('updates connector form field with latest value', async () => { @@ -555,6 +556,39 @@ describe('EditConnectorFlyout', () => { }); }); + it('show error message in the form header', async () => { + appMockRenderer.render( + + ); + + expect(await screen.findByTestId('test-connector-text-field')).toBeInTheDocument(); + await userEvent.clear(screen.getByTestId('nameInput')); + await userEvent.click(screen.getByTestId('edit-connector-flyout-save-btn')); + expect(await screen.findByTestId('connector-form-header-error-label')).toBeInTheDocument(); + }); + + it('removes error message from the form header', async () => { + appMockRenderer.render( + + ); + + await userEvent.clear(screen.getByTestId('nameInput')); + await userEvent.type(screen.getByTestId('nameInput'), 'My new name'); + await userEvent.type(screen.getByTestId('test-connector-secret-text-field'), 'password'); + await userEvent.click(screen.getByTestId('edit-connector-flyout-save-btn')); + expect(screen.queryByTestId('connector-form-header-error-label')).not.toBeInTheDocument(); + }); + it('runs pre submit validator correctly', async () => { const errorActionTypeModel = actionTypeRegistryMock.createMockActionTypeModel({ actionConnectorFields: lazy(() => import('../connector_error_mock')), diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.tsx index e787f3eac42bf..1188f06a87d56 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.tsx @@ -6,7 +6,14 @@ */ import React, { memo, ReactNode, useCallback, useEffect, useRef, useState } from 'react'; -import { EuiFlyout, EuiFlyoutBody, EuiButton, EuiConfirmModal } from '@elastic/eui'; +import { + EuiFlyout, + EuiFlyoutBody, + EuiButton, + EuiConfirmModal, + EuiCallOut, + EuiSpacer, +} from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { ActionTypeExecutorResult, isActionTypeExecutorResult } from '@kbn/actions-plugin/common'; @@ -62,6 +69,7 @@ const EditConnectorFlyoutComponent: React.FC = ({ const canSave = hasSaveActionsCapability(capabilities); const { isLoading: isUpdatingConnector, updateConnector } = useUpdateConnector(); const { isLoading: isExecutingConnector, executeConnector } = useExecuteConnector(); + const [showFormErrors, setShowFormErrors] = useState(false); const [preSubmitValidationErrorMessage, setPreSubmitValidationErrorMessage] = useState(null); @@ -90,6 +98,7 @@ const EditConnectorFlyoutComponent: React.FC = ({ if (nextPage === EditConnectorTabs.Configuration && testExecutionResult !== none) { setTestExecutionResult(none); } + setShowFormErrors(false); setTab(nextPage); }, [testExecutionResult, setTestExecutionResult] @@ -146,6 +155,7 @@ const EditConnectorFlyoutComponent: React.FC = ({ const onClickSave = useCallback(async () => { setPreSubmitValidationErrorMessage(null); + setShowFormErrors(false); const { isValid, data } = await submit(); if (!isMounted.current) { @@ -194,6 +204,8 @@ const EditConnectorFlyoutComponent: React.FC = ({ } return updatedConnector; + } else { + setShowFormErrors(true); } }, [ onConnectorUpdated, @@ -218,6 +230,23 @@ const EditConnectorFlyoutComponent: React.FC = ({ <> {isEdit && ( <> + {showFormErrors && ( + <> + + + + )} = ({ ); }, [ connector, + docLinks.links.alerting.preconfiguredConnectors, actionTypeModel, isEdit, - docLinks.links.alerting.preconfiguredConnectors, - hasErrors, - isFormModified, - isSaved, - isSaving, + showFormErrors, + onFormModifiedChange, preSubmitValidationErrorMessage, showButtons, + isSaved, + isSaving, onClickSave, - onFormModifiedChange, + isFormModified, + hasErrors, ]); const renderTestTab = useCallback(() => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.test.tsx index 12b1162082bfc..922d13eb8f596 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.test.tsx @@ -8,6 +8,7 @@ import React from 'react'; import { of } from 'rxjs'; import { fireEvent, render, screen } from '@testing-library/react'; +import { userProfileServiceMock } from '@kbn/core-user-profile-browser-mocks'; import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; import type { ModalInspectProps } from './modal'; import { ModalInspectQuery } from './modal'; @@ -44,9 +45,12 @@ describe('Modal Inspect', () => { const renderModalInspectQuery = () => { const theme = { theme$: of({ darkMode: false, name: 'amsterdam' }) }; + const userProfile = userProfileServiceMock.createStart(); return render(, { wrapper: ({ children }) => ( - {children} + + {children} + ), }); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx index da1bd753af9b2..767b7cf70b9bb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx @@ -108,6 +108,7 @@ export const RuleDetails: React.FunctionComponent = ({ http, i18n: i18nStart, theme, + userProfile, notifications: { toasts }, } = useKibana().services; @@ -223,7 +224,7 @@ export const RuleDetails: React.FunctionComponent = ({
)} , - { i18n: i18nStart, theme } + { i18n: i18nStart, theme, userProfile } ), }); } @@ -232,6 +233,7 @@ export const RuleDetails: React.FunctionComponent = ({ }, [ i18nStart, theme, + userProfile, rule.schedule.interval, config.minimumScheduleInterval, toasts, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx index 99a9e0761eb9e..419f4c7696379 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx @@ -132,9 +132,8 @@ const RuleAdd = < http, notifications: { toasts }, application: { capabilities }, - i18n: i18nStart, - theme, isServerless, + ...startServices } = useKibana().services; const canShowActions = hasShowActionsCapability(capabilities); @@ -284,7 +283,7 @@ const RuleAdd = < ...(message.details && { text: toMountPoint( {message.details}, - { i18n: i18nStart, theme } + startServices ), }), }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx index 3400f8c5270f6..5d1337063948d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx @@ -140,9 +140,8 @@ export const RuleEdit = < const { http, notifications: { toasts }, - i18n: i18nStart, - theme, isServerless, + ...startServices } = useKibana().services; const setRule = (value: Rule) => { @@ -238,7 +237,7 @@ export const RuleEdit = < ...(message.details && { text: toMountPoint( {message.details}, - { i18n: i18nStart, theme } + startServices ), }), }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form_route.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form_route.tsx index f0ecb56d0bc87..bfa4bccd49405 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form_route.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form_route.tsx @@ -17,8 +17,6 @@ import { getCurrentDocTitle } from '../../lib/doc_title'; export const RuleFormRoute = () => { const { http, - i18n, - theme, application, notifications, charts, @@ -31,6 +29,7 @@ export const RuleFormRoute = () => { actionTypeRegistry, chrome, setBreadcrumbs, + ...startServices } = useKibana().services; const location = useLocation<{ returnApp?: string; returnPath?: string }>(); @@ -64,8 +63,6 @@ export const RuleFormRoute = () => { { docLinks, ruleTypeRegistry, actionTypeRegistry, + ...startServices, }} onCancel={() => { if (returnApp && returnPath) { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx index 6ad7d525c3507..27f05487fb6e6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx @@ -63,6 +63,7 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ notifications: { toasts }, i18n: i18nStart, theme, + userProfile, } = useKibana().services; const [isUpdating, setIsUpdating] = useState(false); @@ -86,12 +87,12 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ ...(message.details && { text: toMountPoint( {message.details}, - { i18n: i18nStart, theme } + { i18n: i18nStart, theme, userProfile } ), }), }); throw new Error(); - }, [i18nStart, theme, enableRule, toasts]); + }, [i18nStart, theme, userProfile, enableRule, toasts]); const onEnable = useCallback(async () => { setIsUpdating(true); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx index f8a01e6f47f25..f956a16d3d236 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx @@ -1382,7 +1382,8 @@ describe('rules_list with show only capability', () => { }); }); -describe('MaintenanceWindowsMock', () => { +// FLAKY: https://github.com/elastic/kibana/issues/203179 +describe.skip('MaintenanceWindowsMock', () => { beforeEach(() => { fetchActiveMaintenanceWindowsMock.mockResolvedValue([]); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx index d1d1ce4fe6a3b..b827307cecdf6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx @@ -196,8 +196,7 @@ export const RulesList = ({ kibanaFeatures, notifications: { toasts }, ruleTypeRegistry, - i18n: i18nStart, - theme, + ...startServices } = kibanaServices; const canExecuteActions = hasExecuteActionsCapability(capabilities); @@ -715,7 +714,7 @@ export const RulesList = ({ title: parsedError.summary, text: toMountPoint( {parsedError.details}, - { theme, i18n: i18nStart } + startServices ), }); } else { diff --git a/x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts b/x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts index 53c72a77d6385..ddca5d8f1dd6b 100644 --- a/x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts +++ b/x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts @@ -6,7 +6,7 @@ */ // the business logic of this code is from watcher, in: -// x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts +// x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_route.ts const MAX_INDICES = 20; diff --git a/x-pack/plugins/triggers_actions_ui/server/routes/config.ts b/x-pack/plugins/triggers_actions_ui/server/routes/config.ts index 2e10586b76924..644d6bf01f63a 100644 --- a/x-pack/plugins/triggers_actions_ui/server/routes/config.ts +++ b/x-pack/plugins/triggers_actions_ui/server/routes/config.ts @@ -38,6 +38,13 @@ export function createConfigRoute({ router.get( { path, + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization as it uses the alerting client authorization.', + }, + }, validate: false, options: { access: 'internal', diff --git a/x-pack/plugins/triggers_actions_ui/server/routes/health.ts b/x-pack/plugins/triggers_actions_ui/server/routes/health.ts index b57e9b3df4dc6..c9f54b617eff5 100644 --- a/x-pack/plugins/triggers_actions_ui/server/routes/health.ts +++ b/x-pack/plugins/triggers_actions_ui/server/routes/health.ts @@ -25,6 +25,13 @@ export function createHealthRoute( router.get( { path, + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization as the health route does not require any.', + }, + }, validate: false, options: { access: 'internal', diff --git a/x-pack/plugins/triggers_actions_ui/tsconfig.json b/x-pack/plugins/triggers_actions_ui/tsconfig.json index 7b947f560db85..7004ad1b1b08c 100644 --- a/x-pack/plugins/triggers_actions_ui/tsconfig.json +++ b/x-pack/plugins/triggers_actions_ui/tsconfig.json @@ -73,7 +73,8 @@ "@kbn/observability-alerting-rule-utils", "@kbn/core-application-browser", "@kbn/cloud-plugin", - "@kbn/response-ops-rule-form" + "@kbn/response-ops-rule-form", + "@kbn/core-user-profile-browser-mocks" ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecation_logs/es_deprecation_logs.test.tsx b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecation_logs/es_deprecation_logs.test.tsx index 29600c855dcbf..fe41b89de3e0e 100644 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecation_logs/es_deprecation_logs.test.tsx +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecation_logs/es_deprecation_logs.test.tsx @@ -18,12 +18,10 @@ import { APPS_WITH_DEPRECATION_LOGS, DEPRECATION_LOGS_ORIGIN_FIELD, } from '../../../common/constants'; -import { stringifySearchParams } from '../helpers/app_context.mock'; // Once the logs team register the kibana locators in their app, we should be able // to remove this mock and follow a similar approach to how discover link is tested. // See: https://github.com/elastic/kibana/issues/104855 -const MOCKED_TIME = '2021-09-05T10:49:01.805Z'; jest.mock('../../../public/application/lib/logs_checkpoint', () => { const originalModule = jest.requireActual('../../../public/application/lib/logs_checkpoint'); @@ -157,40 +155,6 @@ describe('ES deprecation logs', () => { httpRequestsMockHelpers.setLoadDeprecationLoggingResponse(getLoggingResponse(true)); }); - test('Has a link to see logs in observability app', async () => { - await act(async () => { - testBed = await setupESDeprecationLogsPage(httpSetup, { - http: { - basePath: { - prepend: (url: string) => url, - }, - }, - }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('viewObserveLogs')).toBe(true); - const locatorParams = stringifySearchParams({ - id: DEPRECATION_LOGS_INDEX, - timeRange: { - from: MOCKED_TIME, - to: 'now', - }, - query: { - language: 'kuery', - query: `not ${DEPRECATION_LOGS_ORIGIN_FIELD} : (${APPS_WITH_DEPRECATION_LOGS.join( - ' or ' - )})`, - }, - }); - const href = find('viewObserveLogs').props().href; - expect(href).toContain('logsExplorerUrl'); - expect(href).toContain(locatorParams); - }); - test('Has a link to see logs in discover app', async () => { await act(async () => { testBed = await setupESDeprecationLogsPage(httpSetup); diff --git a/x-pack/plugins/upgrade_assistant/common/types.ts b/x-pack/plugins/upgrade_assistant/common/types.ts index 781e4865ee568..54b175a428512 100644 --- a/x-pack/plugins/upgrade_assistant/common/types.ts +++ b/x-pack/plugins/upgrade_assistant/common/types.ts @@ -121,8 +121,8 @@ export interface ReindexOperation { export type ReindexSavedObject = SavedObject; -// 7.0 -> 8.0 warnings -export type ReindexWarningTypes = 'customTypeName' | 'indexSetting' | 'replaceIndexWithAlias'; +// 8.0 -> 9.0 warnings +export type ReindexWarningTypes = 'indexSetting' | 'replaceIndexWithAlias'; export interface ReindexWarning { warningType: ReindexWarningTypes; @@ -130,8 +130,6 @@ export interface ReindexWarning { * Optional metadata for deprecations * * @remark - * For example, for the "customTypeName" deprecation, - * we want to surface the typeName to the user. * For "indexSetting" we want to surface the deprecated settings. */ meta?: { diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx index c96a17ed9e2ee..aef1dbfc0087c 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx @@ -10,23 +10,15 @@ import { buildPhrasesFilter, PhrasesFilter } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; import { METRIC_TYPE } from '@kbn/analytics'; -import { EuiLink, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiPanel, EuiText } from '@elastic/eui'; +import { EuiLink, EuiSpacer, EuiText } from '@elastic/eui'; import { DataView } from '@kbn/data-views-plugin/common'; -import { - OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR_ID, - ObsLogsExplorerDataViewLocatorParams, -} from '@kbn/deeplinks-observability'; import { APPS_WITH_DEPRECATION_LOGS, DEPRECATION_LOGS_ORIGIN_FIELD, } from '../../../../../common/constants'; import { DataPublicPluginStart } from '../../../../shared_imports'; import { useAppContext } from '../../../app_context'; -import { - uiMetricService, - UIM_OBSERVABILITY_CLICK, - UIM_DISCOVER_CLICK, -} from '../../../lib/ui_metric'; +import { uiMetricService, UIM_DISCOVER_CLICK } from '../../../lib/ui_metric'; import { DEPRECATION_LOGS_INDEX_PATTERN } from '../../../../../common/constants'; @@ -129,48 +121,6 @@ const DiscoverAppLink: FunctionComponent = ({ checkpoint, deprecationData ); }; -const ObservabilityAppLink: FunctionComponent = ({ checkpoint, deprecationDataView }) => { - const { - plugins: { - share: { url }, - }, - } = useAppContext(); - - const logsLocator = url.locators.get( - OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR_ID - )!; - - if (!deprecationDataView.id) return null; - - const logsUrl = logsLocator.getRedirectUrl({ - id: deprecationDataView.id, - timeRange: { - from: checkpoint, - to: 'now', - }, - query: { - language: 'kuery', - query: `not ${DEPRECATION_LOGS_ORIGIN_FIELD} : (${APPS_WITH_DEPRECATION_LOGS.join(' or ')})`, - }, - }); - - return ( - // eslint-disable-next-line @elastic/eui/href-or-on-click - { - uiMetricService.trackUiMetric(METRIC_TYPE.CLICK, UIM_OBSERVABILITY_CLICK); - }} - data-test-subj="viewObserveLogs" - > - - - ); -}; - export const ExternalLinks: FunctionComponent> = ({ checkpoint, }) => { @@ -190,42 +140,19 @@ export const ExternalLinks: FunctionComponent }, [dataService, checkpoint, share.url.locators]); return ( - - - - -

- -

-
- - {deprecationDataView ? ( - - ) : null} -
-
- - - -

- -

-
- - {deprecationDataView ? ( - - ) : null} -
-
-
+ <> + +

+ +

+
+ + {deprecationDataView ? ( + + ) : null} + ); }; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx index eedb05e8b809a..7c6f7d554082a 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx @@ -52,12 +52,6 @@ describe('WarningsFlyoutStep', () => { const defaultPropsWithWarnings = { ...defaultProps, warnings: [ - { - warningType: 'customTypeName', - meta: { - typeName: 'my_mapping_type', - }, - }, { warningType: 'indexSetting', meta: { @@ -76,9 +70,7 @@ describe('WarningsFlyoutStep', () => { button.simulate('click'); expect(defaultPropsWithWarnings.continueReindex).not.toHaveBeenCalled(); - // first warning (customTypeName) - wrapper.find(`input#${idForWarning(0)}`).simulate('change'); - // second warning (indexSetting) + // first warning (indexSetting) wrapper.find(`input#${idForWarning(1)}`).simulate('change'); button.simulate('click'); diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx index 7782d47fc5cc0..27bfdc6256781 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx @@ -82,42 +82,6 @@ export interface WarningCheckboxProps { meta?: ReindexWarning['meta']; } -export const CustomTypeNameWarningCheckbox: React.FunctionComponent = ({ - isChecked, - onChange, - docLinks, - id, - meta, -}) => { - return ( - {meta!.typeName as string}, - defaultType: _doc, - }} - /> - } - description={ - {meta!.typeName as string}, - }} - /> - } - documentationUrl={docLinks.elasticsearch.typesRemoval} - /> - ); -}; - export const DeprecatedSettingWarningCheckbox: React.FunctionComponent = ({ isChecked, onChange, diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx index 0de8449a7cc7e..d3ed1d0c16387 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx @@ -27,7 +27,6 @@ import { } from '../../../../../../../common/types'; import { useAppContext } from '../../../../../app_context'; import { - CustomTypeNameWarningCheckbox, DeprecatedSettingWarningCheckbox, ReplaceIndexWithAliasWarningCheckbox, WarningCheckboxProps, @@ -40,7 +39,6 @@ interface CheckedIds { const warningToComponentMap: { [key in ReindexWarningTypes]: React.FunctionComponent; } = { - customTypeName: CustomTypeNameWarningCheckbox, indexSetting: DeprecatedSettingWarningCheckbox, replaceIndexWithAlias: ReplaceIndexWithAliasWarningCheckbox, }; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/overview/backup_step/cloud_backup.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/overview/backup_step/cloud_backup.tsx index 0d06c72e5f1b5..dabdd76bb1373 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/overview/backup_step/cloud_backup.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/overview/backup_step/cloud_backup.tsx @@ -145,8 +145,16 @@ export const CloudBackup: React.FunctionComponent = ({ return ( <> + +

+ {i18n.translate('xpack.upgradeAssistant.overview.cloudBackup.description', { + defaultMessage: 'Back up your data using snapshots before proceeding.', + })} +

+
+ {statusMessage} - + {/* eslint-disable-next-line @elastic/eui/href-or-on-click */} { // eslint-disable-next-line @elastic/eui/href-or-on-click { uiMetricService.trackUiMetric(METRIC_TYPE.CLICK, UIM_BACKUP_DATA_ON_PREM_CLICK); }} @@ -46,12 +47,12 @@ export const OnPremBackup: React.FunctionComponent = () => {

{i18n.translate('xpack.upgradeAssistant.overview.backupStepDescription', { - defaultMessage: 'Make sure you have a current snapshot before making any changes.', + defaultMessage: 'Make sure you have a current snapshot before proceeding.', })}

- + diff --git a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.test.ts b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.test.ts index 4f58c1a2ea024..685bc443c324c 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.test.ts @@ -182,71 +182,5 @@ describe('transformFlatSettings', () => { }) ).toEqual([]); }); - - if (currentMajor === 7) { - describe('[7.x] customTypeName warning', () => { - it('returns customTypeName warning for non-_doc mapping types', () => { - expect( - getReindexWarnings({ - settings: {}, - mappings: { doc: {} }, - }) - ).toEqual([ - { - warningType: 'customTypeName', - meta: { - typeName: 'doc', - }, - }, - ]); - }); - it('does not return customTypeName warning for _doc mapping types', () => { - expect( - getReindexWarnings({ - settings: {}, - mappings: { _doc: {} }, - }) - ).toEqual([]); - }); - }); - - describe('[7.x] deprecatedSetting warning', () => { - it('returns deprecatedSetting warning for deprecated index settings', () => { - expect( - getReindexWarnings({ - settings: { - // Deprecated settings - 'index.force_memory_term_dictionary': '1024', - 'index.max_adjacency_matrix_filters': 'true', - 'index.soft_deletes.enabled': 'true', - }, - mappings: {}, - }) - ).toEqual([ - { - warningType: 'indexSetting', - meta: { - deprecatedSettings: [ - 'index.force_memory_term_dictionary', - 'index.max_adjacency_matrix_filters', - 'index.soft_deletes.enabled', - ], - }, - }, - ]); - }); - - it('does not return a deprecatedSetting warning for there are no deprecated index settings', () => { - expect( - getReindexWarnings({ - settings: { - 'index.number_of_replicas': '1', - }, - mappings: {}, - }) - ).toEqual([]); - }); - }); - } }); }); diff --git a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.ts b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.ts index 96d14bac8d63c..3344ecde4ab69 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.ts @@ -8,7 +8,7 @@ import { flow, omit } from 'lodash'; import { ReindexWarning } from '../../../common/types'; import { versionService } from '../version'; -import { FlatSettings, FlatSettingsWithTypeName } from './types'; +import { FlatSettings } from './types'; export interface ParsedIndexName { cleanIndexName: string; baseName: string; @@ -75,27 +75,8 @@ export const generateNewIndexName = (indexName: string): string => { : `${currentVersion}-${sourceName}`; }; -export const getCustomTypeWarning = ( - flatSettings: FlatSettingsWithTypeName | FlatSettings -): ReindexWarning | undefined => { - const DEFAULT_TYPE_NAME = '_doc'; - // In 7+, it's not possible to have more than one type, - // so always grab the first (and only) key. - const typeName = Object.getOwnPropertyNames(flatSettings.mappings)[0]; - const typeNameWarning = Boolean(typeName && typeName !== DEFAULT_TYPE_NAME); - - if (typeNameWarning) { - return { - warningType: 'customTypeName', - meta: { - typeName, - }, - }; - } -}; - export const getDeprecatedSettingWarning = ( - flatSettings: FlatSettingsWithTypeName | FlatSettings + flatSettings: FlatSettings ): ReindexWarning | undefined => { const { settings } = flatSettings; @@ -131,19 +112,12 @@ export const getDeprecatedSettingWarning = ( * Returns an array of warnings that should be displayed to user before reindexing begins. * @param flatSettings */ -export const getReindexWarnings = ( - flatSettings: FlatSettingsWithTypeName | FlatSettings -): ReindexWarning[] => { +export const getReindexWarnings = (flatSettings: FlatSettings): ReindexWarning[] => { const warnings = [] as ReindexWarning[]; - if (versionService.getMajorVersion() === 7) { - const customTypeWarning = getCustomTypeWarning(flatSettings); + if (versionService.getMajorVersion() === 8) { const deprecatedSettingWarning = getDeprecatedSettingWarning(flatSettings); - if (customTypeWarning) { - warnings.push(customTypeWarning); - } - if (deprecatedSettingWarning) { warnings.push(deprecatedSettingWarning); } diff --git a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.ts b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.ts index 01c73bf85765b..ce588e8bdb47a 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.ts @@ -20,9 +20,8 @@ import { ReindexStatus, ReindexStep, } from '../../../common/types'; -import { versionService } from '../version'; import { generateNewIndexName } from './index_settings'; -import { FlatSettings, FlatSettingsWithTypeName } from './types'; +import { FlatSettings } from './types'; // TODO: base on elasticsearch.requestTimeout? export const LOCK_WINDOW = moment.duration(90, 'seconds'); @@ -80,10 +79,7 @@ export interface ReindexActions { * Retrieve index settings (in flat, dot-notation style) and mappings. * @param indexName */ - getFlatSettings( - indexName: string, - withTypeName?: boolean - ): Promise; + getFlatSettings(indexName: string): Promise; } export const reindexActionsFactory = ( @@ -208,23 +204,10 @@ export const reindexActionsFactory = ( }, async getFlatSettings(indexName: string) { - let flatSettings; - - if (versionService.getMajorVersion() === 7) { - // On 7.x, we need to get index settings with mapping type - flatSettings = await esClient.indices.get({ - index: indexName, - flat_settings: true, - // This @ts-ignore is needed on master since the flag is deprecated on >7.x - // @ts-ignore - include_type_name: true, - }); - } else { - flatSettings = await esClient.indices.get({ - index: indexName, - flat_settings: true, - }); - } + const flatSettings = await esClient.indices.get({ + index: indexName, + flat_settings: true, + }); if (!flatSettings[indexName]) { return null; diff --git a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/types.ts b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/types.ts index 8d600849987db..09449413dabc1 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/types.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/types.ts @@ -26,14 +26,3 @@ export interface FlatSettings { _meta?: MetaProperties; }; } - -// Specific to 7.x-8 upgrade -export interface FlatSettingsWithTypeName { - settings: estypes.IndicesIndexState['settings']; - mappings?: { - [typeName: string]: { - properties?: MappingProperties; - _meta?: MetaProperties; - }; - }; -} diff --git a/x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.test.ts b/x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.test.ts index bb3ccaeb8b125..b02dd08f841d3 100644 --- a/x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.test.ts @@ -94,9 +94,9 @@ describe('reindex API', () => { }); mockReindexService.detectReindexWarnings.mockResolvedValueOnce([ { - warningType: 'customTypeName', + warningType: 'indexSetting', meta: { - typeName: 'my_mapping_type', + settingA: 'deprecated', }, }, ]); @@ -120,9 +120,9 @@ describe('reindex API', () => { expect(data.reindexOp).toEqual({ indexName: 'wowIndex', status: ReindexStatus.inProgress }); expect(data.warnings).toEqual([ { - warningType: 'customTypeName', + warningType: 'indexSetting', meta: { - typeName: 'my_mapping_type', + settingA: 'deprecated', }, }, ]); diff --git a/x-pack/plugins/watcher/jest.config.js b/x-pack/plugins/watcher/jest.config.js deleted file mode 100644 index b078f2ab665d7..0000000000000 --- a/x-pack/plugins/watcher/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/x-pack/plugins/watcher'], - coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/watcher', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['/x-pack/plugins/watcher/{common,public,server}/**/*.{js,ts,tsx}'], -}; diff --git a/x-pack/plugins/watcher/server/plugin.ts b/x-pack/plugins/watcher/server/plugin.ts deleted file mode 100644 index 75afac5c4d1f2..0000000000000 --- a/x-pack/plugins/watcher/server/plugin.ts +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; -import { SemVer } from 'semver'; -import { CoreStart, CoreSetup, Logger, Plugin, PluginInitializerContext } from '@kbn/core/server'; - -import { PLUGIN, INDEX_NAMES } from '../common/constants'; - -import type { SetupDependencies, StartDependencies, RouteDependencies } from './types'; - -import { registerSettingsRoutes } from './routes/api/settings'; -import { registerIndicesRoutes } from './routes/api/indices'; -import { registerLicenseRoutes } from './routes/api/license'; -import { registerWatchesRoutes } from './routes/api/watches'; -import { registerWatchRoutes } from './routes/api/watch'; -import { registerListFieldsRoute } from './routes/api/register_list_fields_route'; -import { registerLoadHistoryRoute } from './routes/api/register_load_history_route'; - -import { License, handleEsError } from './shared_imports'; - -export class WatcherServerPlugin implements Plugin { - private readonly license: License; - private readonly logger: Logger; - - constructor(private ctx: PluginInitializerContext) { - this.logger = ctx.logger.get(); - this.license = new License(); - } - - setup({ http }: CoreSetup, { features }: SetupDependencies) { - this.license.setup({ - pluginName: PLUGIN.getI18nName(i18n), - logger: this.logger, - }); - - const kibanaVersion = new SemVer(this.ctx.env.packageInfo.version); - - const router = http.createRouter(); - const routeDependencies: RouteDependencies = { - router, - license: this.license, - lib: { - handleEsError, - }, - kibanaVersion, - }; - - features.registerElasticsearchFeature({ - id: 'watcher', - management: { - insightsAndAlerting: ['watcher'], - }, - catalogue: ['watcher'], - privileges: [ - { - requiredClusterPrivileges: ['manage_watcher'], - requiredIndexPrivileges: { - [INDEX_NAMES.WATCHES]: ['read'], - [INDEX_NAMES.WATCHER_HISTORY]: ['read'], - }, - ui: [], - }, - { - requiredClusterPrivileges: ['monitor_watcher'], - requiredIndexPrivileges: { - [INDEX_NAMES.WATCHES]: ['read'], - [INDEX_NAMES.WATCHER_HISTORY]: ['read'], - }, - ui: [], - }, - ], - }); - - registerListFieldsRoute(routeDependencies); - registerLoadHistoryRoute(routeDependencies); - registerIndicesRoutes(routeDependencies); - registerLicenseRoutes(routeDependencies); - registerSettingsRoutes(routeDependencies); - registerWatchesRoutes(routeDependencies); - registerWatchRoutes(routeDependencies); - } - - start(core: CoreStart, { licensing }: StartDependencies) { - this.license.start({ - pluginId: PLUGIN.ID, - minimumLicenseType: PLUGIN.MINIMUM_LICENSE_REQUIRED, - licensing, - }); - } - - stop() {} -} diff --git a/x-pack/plugins/watcher/server/routes/api/watches/register_list_route.ts b/x-pack/plugins/watcher/server/routes/api/watches/register_list_route.ts deleted file mode 100644 index 9951da819e9e0..0000000000000 --- a/x-pack/plugins/watcher/server/routes/api/watches/register_list_route.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { IScopedClusterClient } from '@kbn/core/server'; -import { get } from 'lodash'; -import { fetchAllFromScroll } from '../../../lib/fetch_all_from_scroll'; -import { INDEX_NAMES, ES_SCROLL_SETTINGS } from '../../../../common/constants'; -import { RouteDependencies } from '../../../types'; -// @ts-ignore -import { Watch } from '../../../models/watch'; - -function fetchWatches(dataClient: IScopedClusterClient) { - return dataClient.asCurrentUser - .search( - { - index: INDEX_NAMES.WATCHES, - scroll: ES_SCROLL_SETTINGS.KEEPALIVE, - body: { - size: ES_SCROLL_SETTINGS.PAGE_SIZE, - }, - }, - { ignore: [404] } - ) - .then((body) => fetchAllFromScroll(body, dataClient)); -} - -export function registerListRoute({ router, license, lib: { handleEsError } }: RouteDependencies) { - router.get( - { - path: '/api/watcher/watches', - validate: false, - }, - license.guardApiRoute(async (ctx, request, response) => { - try { - const esClient = (await ctx.core).elasticsearch.client; - const hits = await fetchWatches(esClient); - const watches = hits.map((hit: any) => { - const id = get(hit, '_id'); - const watchJson = get(hit, '_source'); - const watchStatusJson = get(hit, '_source.status'); - - return Watch.fromUpstreamJson( - { - id, - watchJson, - watchStatusJson, - }, - { - throwExceptions: { - Action: false, - }, - } - ); - }); - - return response.ok({ - body: { - watches: watches.map((watch) => watch.downstreamJson), - }, - }); - } catch (e) { - return handleEsError({ error: e, response }); - } - }) - ); -} diff --git a/x-pack/plugins/watcher/tsconfig.json b/x-pack/plugins/watcher/tsconfig.json deleted file mode 100644 index f9c339ab4d2e0..0000000000000 --- a/x-pack/plugins/watcher/tsconfig.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__jest__/**/*", - "server/**/*", - "public/**/*", - "common/**/*", - "__fixtures__/*", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/management-plugin", - "@kbn/charts-plugin", - "@kbn/data-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/license-api-guard-plugin", - "@kbn/licensing-plugin", - "@kbn/features-plugin", - "@kbn/core-doc-links-browser-mocks", - "@kbn/core-execution-context-browser-mocks", - "@kbn/test-jest-helpers", - "@kbn/i18n", - "@kbn/safer-lodash-set", - "@kbn/config-schema", - "@kbn/datemath", - "@kbn/field-formats-plugin", - "@kbn/i18n-react", - "@kbn/shared-ux-router", - "@kbn/license-management-plugin", - "@kbn/share-plugin", - "@kbn/core-ui-settings-browser", - "@kbn/core-ui-settings-browser-mocks", - "@kbn/code-editor", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/packages/observability/alert_details/README.md b/x-pack/solutions/observability/packages/alert_details/README.md similarity index 100% rename from x-pack/packages/observability/alert_details/README.md rename to x-pack/solutions/observability/packages/alert_details/README.md diff --git a/x-pack/packages/observability/alert_details/index.ts b/x-pack/solutions/observability/packages/alert_details/index.ts similarity index 100% rename from x-pack/packages/observability/alert_details/index.ts rename to x-pack/solutions/observability/packages/alert_details/index.ts diff --git a/x-pack/solutions/observability/packages/alert_details/jest.config.js b/x-pack/solutions/observability/packages/alert_details/jest.config.js new file mode 100644 index 0000000000000..b7c6f40e5bd51 --- /dev/null +++ b/x-pack/solutions/observability/packages/alert_details/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/alert_details'], +}; diff --git a/x-pack/packages/observability/alert_details/kibana.jsonc b/x-pack/solutions/observability/packages/alert_details/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/alert_details/kibana.jsonc rename to x-pack/solutions/observability/packages/alert_details/kibana.jsonc diff --git a/x-pack/packages/observability/alert_details/package.json b/x-pack/solutions/observability/packages/alert_details/package.json similarity index 100% rename from x-pack/packages/observability/alert_details/package.json rename to x-pack/solutions/observability/packages/alert_details/package.json diff --git a/x-pack/packages/observability/alert_details/src/components/alert_active_time_range_annotation.tsx b/x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/components/alert_active_time_range_annotation.tsx rename to x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx diff --git a/x-pack/packages/observability/alert_details/src/components/alert_annotation.tsx b/x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/components/alert_annotation.tsx rename to x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx diff --git a/x-pack/packages/observability/alert_details/src/components/alert_threshold_annotation.tsx b/x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/components/alert_threshold_annotation.tsx rename to x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx diff --git a/x-pack/packages/observability/alert_details/src/components/alert_threshold_time_range_rect.tsx b/x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/components/alert_threshold_time_range_rect.tsx rename to x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx diff --git a/x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.test.tsx b/x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.test.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.test.tsx rename to x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.test.tsx diff --git a/x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.ts b/x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts similarity index 100% rename from x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.ts rename to x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts diff --git a/x-pack/solutions/observability/packages/alert_details/tsconfig.json b/x-pack/solutions/observability/packages/alert_details/tsconfig.json new file mode 100644 index 0000000000000..d4c6333338759 --- /dev/null +++ b/x-pack/solutions/observability/packages/alert_details/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/rule-data-utils", + "@kbn/core", + "@kbn/rule-registry-plugin", + "@kbn/core-http-browser-mocks" + ] +} diff --git a/x-pack/packages/observability/alerting_test_data/README.md b/x-pack/solutions/observability/packages/alerting_test_data/README.md similarity index 100% rename from x-pack/packages/observability/alerting_test_data/README.md rename to x-pack/solutions/observability/packages/alerting_test_data/README.md diff --git a/x-pack/packages/observability/alerting_test_data/index.ts b/x-pack/solutions/observability/packages/alerting_test_data/index.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/index.ts rename to x-pack/solutions/observability/packages/alerting_test_data/index.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/jest.config.js b/x-pack/solutions/observability/packages/alerting_test_data/jest.config.js new file mode 100644 index 0000000000000..6a296e9d22c0d --- /dev/null +++ b/x-pack/solutions/observability/packages/alerting_test_data/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/alerting_test_data'], +}; diff --git a/x-pack/packages/observability/alerting_test_data/kibana.jsonc b/x-pack/solutions/observability/packages/alerting_test_data/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/alerting_test_data/kibana.jsonc rename to x-pack/solutions/observability/packages/alerting_test_data/kibana.jsonc diff --git a/x-pack/packages/observability/alerting_test_data/package.json b/x-pack/solutions/observability/packages/alerting_test_data/package.json similarity index 100% rename from x-pack/packages/observability/alerting_test_data/package.json rename to x-pack/solutions/observability/packages/alerting_test_data/package.json diff --git a/x-pack/packages/observability/alerting_test_data/src/constants.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/constants.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/constants.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/constants.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_apm_error_count_threshold_rule.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_apm_error_count_threshold_rule.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_data_view.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_data_view.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_index_connector.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_index_connector.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_index_connector.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_index_connector.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_rule.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_rule.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/get_kibana_url.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/get_kibana_url.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/get_kibana_url.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/get_kibana_url.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/run.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/run.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/run.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/run.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/index.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/index.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/index.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/index.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/tsconfig.json b/x-pack/solutions/observability/packages/alerting_test_data/tsconfig.json new file mode 100644 index 0000000000000..5e83fb292b665 --- /dev/null +++ b/x-pack/solutions/observability/packages/alerting_test_data/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/observability-plugin", + "@kbn/rule-data-utils", + "@kbn/alerting-comparators", + ] +} diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/README.md b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/README.md similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/README.md rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/README.md diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/index.ts b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/index.ts similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/index.ts rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/index.ts diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/jest.config.js b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/jest.config.js new file mode 100644 index 0000000000000..6941925a188e2 --- /dev/null +++ b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/get_padded_alert_time_range_util'], +}; diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/kibana.jsonc b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/kibana.jsonc rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/kibana.jsonc diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/package.json b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/package.json similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/package.json rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/package.json diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/tsconfig.json b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/tsconfig.json new file mode 100644 index 0000000000000..7aba1b1a9378a --- /dev/null +++ b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] +} diff --git a/packages/kbn-investigation-shared/README.md b/x-pack/solutions/observability/packages/kbn-investigation-shared/README.md similarity index 100% rename from packages/kbn-investigation-shared/README.md rename to x-pack/solutions/observability/packages/kbn-investigation-shared/README.md diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/index.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/index.ts new file mode 100644 index 0000000000000..3b2a320ae181f --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './src'; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/jest.config.js b/x-pack/solutions/observability/packages/kbn-investigation-shared/jest.config.js new file mode 100644 index 0000000000000..85d033a05a564 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/kbn-investigation-shared'], +}; diff --git a/packages/kbn-investigation-shared/kibana.jsonc b/x-pack/solutions/observability/packages/kbn-investigation-shared/kibana.jsonc similarity index 100% rename from packages/kbn-investigation-shared/kibana.jsonc rename to x-pack/solutions/observability/packages/kbn-investigation-shared/kibana.jsonc diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/package.json b/x-pack/solutions/observability/packages/kbn-investigation-shared/package.json new file mode 100644 index 0000000000000..96c45f7b3cdd7 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/investigation-shared", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0" +} diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/index.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/index.ts new file mode 100644 index 0000000000000..cf5975aaaa97b --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './rest_specs'; +export * from './schema'; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts new file mode 100644 index 0000000000000..08edee8a931d8 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationResponseSchema } from './investigation'; +import { alertOriginSchema, blankOriginSchema } from '../schema'; + +const createInvestigationParamsSchema = z.object({ + body: z.object({ + id: z.string(), + title: z.string(), + params: z.object({ + timeRange: z.object({ from: z.number(), to: z.number() }), + }), + origin: z.union([alertOriginSchema, blankOriginSchema]), + tags: z.array(z.string()), + externalIncidentUrl: z.string().nullable(), + }), +}); + +const createInvestigationResponseSchema = investigationResponseSchema; + +type CreateInvestigationParams = z.infer; +type CreateInvestigationResponse = z.output; + +export { createInvestigationParamsSchema, createInvestigationResponseSchema }; +export type { CreateInvestigationParams, CreateInvestigationResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts new file mode 100644 index 0000000000000..c13bab564904e --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { itemSchema } from '../schema'; +import { investigationItemResponseSchema } from './investigation_item'; + +const createInvestigationItemParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), + body: itemSchema, +}); + +const createInvestigationItemResponseSchema = investigationItemResponseSchema; + +type CreateInvestigationItemParams = z.infer; +type CreateInvestigationItemResponse = z.output; + +export { createInvestigationItemParamsSchema, createInvestigationItemResponseSchema }; +export type { CreateInvestigationItemParams, CreateInvestigationItemResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts new file mode 100644 index 0000000000000..f9e68b2131e8c --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationNoteResponseSchema } from './investigation_note'; + +const createInvestigationNoteParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), + body: z.object({ + content: z.string(), + }), +}); + +const createInvestigationNoteResponseSchema = investigationNoteResponseSchema; + +type CreateInvestigationNoteParams = z.infer; +type CreateInvestigationNoteResponse = z.output; + +export { createInvestigationNoteParamsSchema, createInvestigationNoteResponseSchema }; +export type { CreateInvestigationNoteParams, CreateInvestigationNoteResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts new file mode 100644 index 0000000000000..f4a1d20c03c9d --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +const deleteInvestigationParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), +}); + +type DeleteInvestigationParams = z.infer; + +export { deleteInvestigationParamsSchema }; +export type { DeleteInvestigationParams }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts new file mode 100644 index 0000000000000..78b69f0bb5c26 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; + +const deleteInvestigationItemParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + itemId: z.string(), + }), +}); + +type DeleteInvestigationItemParams = z.infer; + +export { deleteInvestigationItemParamsSchema }; +export type { DeleteInvestigationItemParams }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts new file mode 100644 index 0000000000000..eb39d6a3a50ba --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; + +const deleteInvestigationNoteParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + noteId: z.string(), + }), +}); + +type DeleteInvestigationNoteParams = z.infer; + +export { deleteInvestigationNoteParamsSchema }; +export type { DeleteInvestigationNoteParams }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts new file mode 100644 index 0000000000000..a15d0e9da4e00 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; + +const metricsSchema = z.object({ + failedTransactionRate: z.number().optional(), + latency: z.number().optional(), + throughput: z.number().optional(), + logErrorRate: z.number().optional(), + logRate: z.number().optional(), +}); + +const entitySchema = z.object({ + id: z.string(), + definition_id: z.string(), + definition_version: z.string(), + display_name: z.string(), + last_seen_timestamp: z.string(), + identity_fields: z.array(z.string()), + schema_version: z.string(), + type: z.string(), + metrics: metricsSchema, +}); + +const entitySourceSchema = z.object({ + dataStream: z.string().optional(), +}); + +const entityWithSourceSchema = z.intersection( + entitySchema, + z.object({ + sources: z.array(entitySourceSchema), + }) +); + +type EntityWithSource = z.output; +type EntitySource = z.output; + +export { entitySchema, entityWithSourceSchema }; +export type { EntityWithSource, EntitySource }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts new file mode 100644 index 0000000000000..5eaf1a9b6194f --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationResponseSchema } from './investigation'; + +const findInvestigationsParamsSchema = z + .object({ + query: z + .object({ + alertId: z.string(), + search: z.string(), + filter: z.string(), + page: z.coerce.number(), + perPage: z.coerce.number(), + }) + .partial(), + }) + .partial(); + +const findInvestigationsResponseSchema = z.object({ + page: z.number(), + perPage: z.number(), + total: z.number(), + results: z.array(investigationResponseSchema), +}); + +type FindInvestigationsParams = z.infer; +type FindInvestigationsResponse = z.output; + +export { findInvestigationsParamsSchema, findInvestigationsResponseSchema }; +export type { FindInvestigationsParams, FindInvestigationsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts new file mode 100644 index 0000000000000..0222d97abdaab --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationResponseSchema } from './investigation'; + +const getInvestigationParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), +}); + +const getInvestigationResponseSchema = investigationResponseSchema; + +type GetInvestigationParams = z.infer; // Parsed payload used by the backend +type GetInvestigationResponse = z.output; // Raw response sent to the frontend + +export { getInvestigationParamsSchema, getInvestigationResponseSchema }; +export type { GetInvestigationParams, GetInvestigationResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts new file mode 100644 index 0000000000000..f4dc0bd96efd3 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { statusSchema } from '../schema'; + +const getAllInvestigationStatsParamsSchema = z.object({ + query: z.object({}), +}); + +const getAllInvestigationStatsResponseSchema = z.object({ + count: z.record(statusSchema, z.number()), + total: z.number(), +}); + +type GetAllInvestigationStatsResponse = z.output; + +export { getAllInvestigationStatsParamsSchema, getAllInvestigationStatsResponseSchema }; +export type { GetAllInvestigationStatsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts new file mode 100644 index 0000000000000..5cb03bc483ad2 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; + +const getAllInvestigationTagsParamsSchema = z.object({ + query: z.object({}), +}); + +const getAllInvestigationTagsResponseSchema = z.string().array(); + +type GetAllInvestigationTagsResponse = z.output; + +export { getAllInvestigationTagsParamsSchema, getAllInvestigationTagsResponseSchema }; +export type { GetAllInvestigationTagsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts new file mode 100644 index 0000000000000..5c7cdbc7617ac --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { entityWithSourceSchema } from './entity'; + +const getEntitiesParamsSchema = z + .object({ + query: z + .object({ + 'service.name': z.string(), + 'service.environment': z.string(), + 'host.name': z.string(), + 'container.id': z.string(), + }) + .partial(), + }) + .partial(); + +const getEntitiesResponseSchema = z.object({ + entities: z.array(entityWithSourceSchema), +}); + +type GetEntitiesParams = z.infer; +type GetEntitiesResponse = z.output; + +export { getEntitiesParamsSchema, getEntitiesResponseSchema }; +export type { GetEntitiesParams, GetEntitiesResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts new file mode 100644 index 0000000000000..eb6d9bf8df38c --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { eventTypeSchema, eventSchema } from '../schema'; + +const getEventsParamsSchema = z + .object({ + query: z + .object({ + rangeFrom: z.string(), + rangeTo: z.string(), + filter: z.string(), + eventTypes: z.string().transform((val, ctx) => { + const eventTypes = val.split(','); + const hasInvalidType = eventTypes.some((eventType) => !eventTypeSchema.parse(eventType)); + if (hasInvalidType) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: 'Invalid event type', + }); + return z.NEVER; + } + return val.split(',').map((v) => eventTypeSchema.parse(v)); + }), + }) + .partial(), + }) + .partial(); + +const getEventsResponseSchema = z.array(eventSchema); + +type GetEventsParams = z.infer; +type GetEventsResponse = z.output; + +export { getEventsParamsSchema, getEventsResponseSchema }; +export type { GetEventsParams, GetEventsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts new file mode 100644 index 0000000000000..8fb7524da511c --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationItemResponseSchema } from './investigation_item'; + +const getInvestigationItemsParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), +}); + +const getInvestigationItemsResponseSchema = z.array(investigationItemResponseSchema); + +type GetInvestigationItemsResponse = z.output; + +export { getInvestigationItemsParamsSchema, getInvestigationItemsResponseSchema }; +export type { GetInvestigationItemsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts new file mode 100644 index 0000000000000..e0be09fde7d87 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationNoteResponseSchema } from './investigation_note'; + +const getInvestigationNotesParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), +}); + +const getInvestigationNotesResponseSchema = z.array(investigationNoteResponseSchema); + +type GetInvestigationNotesResponse = z.output; + +export { getInvestigationNotesParamsSchema, getInvestigationNotesResponseSchema }; +export type { GetInvestigationNotesResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/index.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/index.ts new file mode 100644 index 0000000000000..cfc0b979a735c --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/index.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export type * from './create'; +export type * from './create_item'; +export type * from './create_note'; +export type * from './delete'; +export type * from './delete_item'; +export type * from './delete_note'; +export type * from './find'; +export type * from './get'; +export type * from './get_items'; +export type * from './get_notes'; +export type * from './get_all_investigation_stats'; +export type * from './get_all_investigation_tags'; +export type * from './investigation'; +export type * from './investigation_item'; +export type * from './investigation_note'; +export type * from './update'; +export type * from './update_item'; +export type * from './update_note'; +export type * from './get_events'; +export type * from './entity'; +export type * from './get_entities'; + +export * from './create'; +export * from './create_item'; +export * from './create_note'; +export * from './delete'; +export * from './delete_item'; +export * from './delete_note'; +export * from './find'; +export * from './get'; +export * from './get_items'; +export * from './get_notes'; +export * from './get_all_investigation_stats'; +export * from './get_all_investigation_tags'; +export * from './investigation'; +export * from './investigation_item'; +export * from './investigation_note'; +export * from './update'; +export * from './update_item'; +export * from './update_note'; +export * from './get_events'; +export * from './entity'; +export * from './get_entities'; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts new file mode 100644 index 0000000000000..fc00d81bbb0b9 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationSchema } from '../schema'; + +const investigationResponseSchema = investigationSchema; + +type InvestigationResponse = z.output; + +export { investigationResponseSchema }; +export type { InvestigationResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts new file mode 100644 index 0000000000000..1c580f668f829 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationItemSchema } from '../schema'; + +const investigationItemResponseSchema = investigationItemSchema; + +type InvestigationItemResponse = z.output; + +export { investigationItemResponseSchema }; +export type { InvestigationItemResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts new file mode 100644 index 0000000000000..b0784d679f13a --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationNoteSchema } from '../schema'; + +const investigationNoteResponseSchema = investigationNoteSchema; + +type InvestigationNoteResponse = z.output; + +export { investigationNoteResponseSchema }; +export type { InvestigationNoteResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts new file mode 100644 index 0000000000000..ab1e5ab1dc053 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationResponseSchema } from './investigation'; +import { statusSchema } from '../schema'; + +const updateInvestigationParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), + body: z + .object({ + title: z.string(), + status: statusSchema, + params: z.object({ + timeRange: z.object({ from: z.number(), to: z.number() }), + }), + tags: z.array(z.string()), + externalIncidentUrl: z.string().nullable(), + rootCauseAnalysis: z.object({ + events: z.array(z.any()), + }), + }) + .partial(), +}); + +const updateInvestigationResponseSchema = investigationResponseSchema; + +type UpdateInvestigationParams = z.infer; +type UpdateInvestigationResponse = z.output; + +export { updateInvestigationParamsSchema, updateInvestigationResponseSchema }; +export type { UpdateInvestigationParams, UpdateInvestigationResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts new file mode 100644 index 0000000000000..59c0a2196ab4b --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationItemResponseSchema } from './investigation_item'; +import { itemSchema } from '../schema'; + +const updateInvestigationItemParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + itemId: z.string(), + }), + body: itemSchema, +}); + +const updateInvestigationItemResponseSchema = investigationItemResponseSchema; + +type UpdateInvestigationItemParams = z.infer; +type UpdateInvestigationItemResponse = z.output; + +export { updateInvestigationItemParamsSchema, updateInvestigationItemResponseSchema }; +export type { UpdateInvestigationItemParams, UpdateInvestigationItemResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts new file mode 100644 index 0000000000000..d5a95a0a691ea --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { investigationNoteResponseSchema } from './investigation_note'; + +const updateInvestigationNoteParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + noteId: z.string(), + }), + body: z.object({ + content: z.string(), + }), +}); + +const updateInvestigationNoteResponseSchema = investigationNoteResponseSchema; + +type UpdateInvestigationNoteParams = z.infer; +type UpdateInvestigationNoteResponse = z.output; + +export { updateInvestigationNoteParamsSchema, updateInvestigationNoteResponseSchema }; +export type { UpdateInvestigationNoteParams, UpdateInvestigationNoteResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts new file mode 100644 index 0000000000000..953d5dfbdf251 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; + +const eventTypeSchema = z.union([ + z.literal('annotation'), + z.literal('alert'), + z.literal('error_rate'), + z.literal('latency'), + z.literal('anomaly'), +]); + +const sourceSchema = z.record(z.string(), z.any()); + +const annotationEventSchema = z.object({ + eventType: z.literal('annotation'), + id: z.string(), + title: z.string(), + description: z.string(), + timestamp: z.number(), + source: sourceSchema.optional(), + annotationType: z.string().optional(), +}); + +const alertStatusSchema = z.union([ + z.literal('active'), + z.literal('flapping'), + z.literal('recovered'), + z.literal('untracked'), +]); + +const alertEventSchema = z.object({ + eventType: z.literal('alert'), + id: z.string(), + title: z.string(), + description: z.string(), + timestamp: z.number(), + source: sourceSchema.optional(), + alertStatus: alertStatusSchema, +}); + +const eventSchema = z.discriminatedUnion('eventType', [annotationEventSchema, alertEventSchema]); + +type EventResponse = z.output; +type AlertEventResponse = z.output; +type AnnotationEventResponse = z.output; + +export type { EventResponse, AlertEventResponse, AnnotationEventResponse }; +export { eventSchema, eventTypeSchema, alertEventSchema, annotationEventSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/index.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/index.ts new file mode 100644 index 0000000000000..dba2f51cb1968 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './investigation'; +export * from './investigation_item'; +export * from './investigation_note'; +export * from './origin'; +export * from './event'; + +export type * from './investigation'; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts new file mode 100644 index 0000000000000..3905ef2bf982e --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { alertOriginSchema, blankOriginSchema } from './origin'; +import { investigationNoteSchema } from './investigation_note'; +import { investigationItemSchema } from './investigation_item'; + +const statusSchema = z.union([ + z.literal('triage'), + z.literal('active'), + z.literal('mitigated'), + z.literal('resolved'), + z.literal('cancelled'), +]); + +const investigationSchema = z.object({ + id: z.string(), + title: z.string(), + createdAt: z.number(), + createdBy: z.string(), + updatedAt: z.number(), + params: z.object({ + timeRange: z.object({ from: z.number(), to: z.number() }), + }), + origin: z.union([alertOriginSchema, blankOriginSchema]), + status: statusSchema, + tags: z.array(z.string()), + notes: z.array(investigationNoteSchema), + items: z.array(investigationItemSchema), + externalIncidentUrl: z.string().nullable(), + rootCauseAnalysis: z + .object({ + events: z.array(z.any()), + }) + .optional(), +}); + +type Status = z.infer; + +export type { Status }; +export { investigationSchema, statusSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts new file mode 100644 index 0000000000000..0bf08d588f174 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; + +const itemSchema = z.object({ + title: z.string(), + type: z.string(), + params: z.record(z.string(), z.any()), +}); + +const investigationItemSchema = z.intersection( + z.object({ + id: z.string(), + createdAt: z.number(), + createdBy: z.string(), + updatedAt: z.number(), + }), + itemSchema +); + +type Item = z.infer; +type InvestigationItem = z.infer; + +export type { Item, InvestigationItem }; +export { investigationItemSchema, itemSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_note.ts new file mode 100644 index 0000000000000..0d210fa6d8aa7 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_note.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; + +const investigationNoteSchema = z.object({ + id: z.string(), + content: z.string(), + createdAt: z.number(), + updatedAt: z.number(), + createdBy: z.string(), +}); + +export { investigationNoteSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.ts new file mode 100644 index 0000000000000..d586b368bf6e5 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; + +const blankOriginSchema = z.object({ type: z.literal('blank') }); +const alertOriginSchema = z.object({ type: z.literal('alert'), id: z.string() }); + +export { alertOriginSchema, blankOriginSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/tsconfig.json b/x-pack/solutions/observability/packages/kbn-investigation-shared/tsconfig.json new file mode 100644 index 0000000000000..424670ff55aee --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/zod" + ] +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/jest.config.js b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/jest.config.js new file mode 100644 index 0000000000000..3620ef5a1c254 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/jest.config.js @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '/x-pack/solutions/observability/packages/observability_ai/observability_ai_common', + '/x-pack/solutions/observability/packages/observability_ai/observability_ai_server', + ], +}; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/kibana.jsonc b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/kibana.jsonc new file mode 100644 index 0000000000000..731f38d6bfe88 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/kibana.jsonc @@ -0,0 +1,7 @@ +{ + "type": "shared-common", + "id": "@kbn/observability-ai-common", + "owner": "@elastic/obs-ai-assistant", + "group": "observability", + "visibility": "private" +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/package.json b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/package.json new file mode 100644 index 0000000000000..0f5f1062937ba --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/observability-ai-common", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0" +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/index.ts new file mode 100644 index 0000000000000..8d052799aa583 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/index.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from './tool_names'; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/tool_names.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/tool_names.ts new file mode 100644 index 0000000000000..76fe9e377daed --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/tool_names.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const RCA_OBSERVE_TOOL_NAME = 'observe'; +export const RCA_END_PROCESS_TOOL_NAME = 'endProcessAndWriteReport'; +export const RCA_INVESTIGATE_ENTITY_TOOL_NAME = 'investigateEntity'; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/tsconfig.json b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/tsconfig.json new file mode 100644 index 0000000000000..af23c916b5d13 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + ] +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/jest.config.js b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/jest.config.js new file mode 100644 index 0000000000000..8aa1c2d673222 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '/x-pack/solutions/observability/packages/observability_ai/observability_ai_server', + ], +}; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/kibana.jsonc b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/kibana.jsonc new file mode 100644 index 0000000000000..6eb48a95a5624 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/kibana.jsonc @@ -0,0 +1,7 @@ +{ + "type": "shared-server", + "id": "@kbn/observability-ai-server", + "owner": "@elastic/obs-ai-assistant", + "group": "observability", + "visibility": "private" +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/package.json b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/package.json new file mode 100644 index 0000000000000..fc6fc310801dc --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/observability-ai-server", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0" +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_end_rca_process_tool.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_end_rca_process_tool.ts new file mode 100644 index 0000000000000..a1b546d2629a4 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_end_rca_process_tool.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { from, Observable, of, switchMap } from 'rxjs'; +import { RCA_END_PROCESS_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { AssistantMessage, MessageRole } from '@kbn/inference-common'; +import { writeFinalReport } from './tasks/write_final_report'; +import { EndProcessToolMessage, RootCauseAnalysisContext } from './types'; +import { generateSignificantEventsTimeline } from './tasks/generate_timeline'; +import { EMPTY_ASSISTANT_MESSAGE } from './empty_assistant_message'; + +export function callEndRcaProcessTool({ + rcaContext, + toolCallId, +}: { + rcaContext: RootCauseAnalysisContext; + toolCallId: string; +}): Observable { + return from( + writeFinalReport({ + rcaContext, + }) + ).pipe( + switchMap((report) => { + return from( + generateSignificantEventsTimeline({ + rcaContext, + report, + }).then((timeline) => { + return { timeline, report }; + }) + ); + }), + switchMap(({ report, timeline }) => { + const toolMessage: EndProcessToolMessage = { + name: RCA_END_PROCESS_TOOL_NAME, + role: MessageRole.Tool, + toolCallId, + response: { + report, + timeline, + }, + }; + return of(toolMessage, EMPTY_ASSISTANT_MESSAGE); + }) + ); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_investigate_entity_tool.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_investigate_entity_tool.ts new file mode 100644 index 0000000000000..c22d28d7389fb --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_investigate_entity_tool.ts @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { from, Observable, of, switchMap } from 'rxjs'; +import { MessageRole } from '@kbn/inference-common'; +import { RCA_INVESTIGATE_ENTITY_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { InvestigateEntityToolMessage, RootCauseAnalysisContext, ToolErrorMessage } from './types'; +import { investigateEntity } from './tasks/investigate_entity'; +import { formatEntity } from './util/format_entity'; + +export function callInvestigateEntityTool({ + field, + value, + context, + toolCallId, + rcaContext, +}: { + field: string; + value: string; + context: string; + toolCallId: string; + rcaContext: RootCauseAnalysisContext; +}): Observable { + const nextEntity = { + [field]: value, + }; + + return from( + investigateEntity({ + rcaContext, + entity: nextEntity, + context, + }) + ).pipe( + switchMap((entityInvestigation) => { + if (!entityInvestigation) { + const entityNotFoundToolMessage: ToolErrorMessage = { + name: 'error', + role: MessageRole.Tool, + response: { + error: { + message: `Entity ${formatEntity(nextEntity)} not found, have + you verified it exists and if the field and value you are using + are correct?`, + }, + }, + toolCallId, + }; + + return of(entityNotFoundToolMessage); + } + + const { + attachments, + relatedEntities, + entity: investigatedEntity, + summary, + } = entityInvestigation; + const toolMessage: InvestigateEntityToolMessage = { + name: RCA_INVESTIGATE_ENTITY_TOOL_NAME, + role: MessageRole.Tool as const, + toolCallId, + response: { + entity: investigatedEntity, + relatedEntities, + summary, + }, + data: { + attachments, + }, + }; + + return of(toolMessage); + }) + ); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_observe_tool.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_observe_tool.ts new file mode 100644 index 0000000000000..06676abd729f0 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_observe_tool.ts @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AssistantMessage, MessageRole } from '@kbn/inference-common'; +import { + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis'; +import { compact, findLast } from 'lodash'; +import { from, Observable, of, switchMap } from 'rxjs'; +import { observeInvestigationResults } from './tasks/observe_investigation_results'; +import { + InvestigateEntityToolMessage, + ObservationToolMessage, + RootCauseAnalysisContext, + RootCauseAnalysisEvent, +} from './types'; + +export function callObserveTool({ + rcaContext, + toolCallId, +}: { + rcaContext: RootCauseAnalysisContext; + toolCallId: string; +}): Observable { + const { events } = rcaContext; + + const lastAssistantMessage = findLast( + events.slice(0, -1), + (event): event is Extract => + event.role === MessageRole.Assistant + ); + + const toolMessagesByToolCallId = Object.fromEntries( + compact( + events.map((message) => + 'toolCallId' in message && + (message.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME || message.name === 'error') + ? [message.toolCallId, message] + : undefined + ) + ) + ); + + const investigationToolMessages = + lastAssistantMessage && lastAssistantMessage.toolCalls + ? compact( + lastAssistantMessage.toolCalls.map((investigateEntityToolCall) => { + if (investigateEntityToolCall.function.name !== RCA_INVESTIGATE_ENTITY_TOOL_NAME) { + return undefined; + } + return { + toolCall: investigateEntityToolCall, + toolResponse: toolMessagesByToolCallId[investigateEntityToolCall.toolCallId], + }; + }) + ) + : []; + + const investigations = investigationToolMessages + .map((toolMessage) => toolMessage.toolResponse) + .filter( + (toolResponse): toolResponse is InvestigateEntityToolMessage => + toolResponse.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME + ) + .map((toolResponse) => ({ ...toolResponse.data, ...toolResponse.response })); + + return from( + observeInvestigationResults({ + rcaContext, + investigations, + }) + ).pipe( + switchMap((summary) => { + const observationToolMessage: ObservationToolMessage = { + name: RCA_OBSERVE_TOOL_NAME, + response: { + content: summary.content, + }, + data: summary, + role: MessageRole.Tool, + toolCallId, + }; + return of(observationToolMessage); + }) + ); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/empty_assistant_message.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/empty_assistant_message.ts new file mode 100644 index 0000000000000..08443d593a81a --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/empty_assistant_message.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AssistantMessage, MessageRole } from '@kbn/inference-common'; +import { RootCauseAnalysisEvent } from './types'; + +export const EMPTY_ASSISTANT_MESSAGE: Extract = { + content: '', + role: MessageRole.Assistant, + toolCalls: [], +}; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/index.ts new file mode 100644 index 0000000000000..66307dc2ef9a4 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export type { + RootCauseAnalysisEvent, + InvestigateEntityToolMessage, + EndProcessToolMessage, + ObservationToolMessage, + RootCauseAnalysisToolMessage, + ToolErrorMessage, + RootCauseAnalysisToolRequest, +} from './types'; +export type { SignificantEventsTimeline, SignificantEvent } from './tasks/generate_timeline'; +export type { EntityInvestigation } from './tasks/investigate_entity'; + +export { runRootCauseAnalysis } from './run_root_cause_analysis'; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/prompts/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/prompts/index.ts new file mode 100644 index 0000000000000..8a0a6a9064700 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/prompts/index.ts @@ -0,0 +1,345 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const RCA_SYSTEM_PROMPT_BASE = `You are a helpful assistant for Elastic Observability. +You are a distinguished SRE, who has an established career, working in both +small shops and FAANG-level companies. You have worked with Elasticsearch +since the beginning and expertly use it in your analysis of incidents. + +You use an evidence-based strategy to determine the root cause of +an incident. You thoroughly analyze Observability data. You use your +understanding of different architectures like microservies, monoliths, +event-driven systems, and environments like Kubernetes to discover +patterns and correlations in the data ingested into the user's system. + +Your sizable experience with monitoring software systems has taught +you how to investigate issues and correlate symptoms of the investigate +service with its dependencies. + +## Capabilities + +You are highly skilled at inspecting logs, traces, alerts, and SLOs to uncover +the root cause of incidents, with a special emphasis on detecting log patterns +that reveal system behavior. You can identify related entities, such as upstream +services or the specific pod a service is running on, by searching through logs +and traces for relationships using metadata like IP addresses, session IDs, or +distributed tracing data. While you can analyze alerts and SLO-derived metrics, +you do not directly analyze other system metrics, inspect files, or execute +commands that modify the system. + +## Non-capabilities + +You lack the capabilities to analyze metrics or connect to external systems.`; + +export const RCA_PROMPT_ENTITIES = `# Entities + +In an Observability system, entities are distinct components or resources within +the infrastructure, each representing points of interest for monitoring and +troubleshooting. These entities form the backbone of log-based analysis and +allow teams to track behavior, detect anomalies, and investigate issues across +different layers of the system. Here’s a breakdown of common entities in +observability: + +1. Services: Core units of functionality in an application ecosystem, +representing individual processes or applications (e.g., user-authentication, +payment processing). Services typically expose APIs or endpoints, and logs from +these entities often capture requests, responses, and error events, which are +critical for understanding application behavior. + +2. Kubernetes (K8s) Entities: + - Pods: The smallest deployable units in Kubernetes, usually containing one +or more containers. Logs from pods provide insight into container operations, +errors, and application states. + - Namespaces: Logical groupings within a cluster for organizing and isolating +resources, helping in filtering logs by domain or responsibility. + - Nodes: Worker machines (either physical or virtual) where pods run. Node +logs often cover hardware resource events, errors, and other system-level events +relevant to pod health and performance. + - Deployments and ReplicaSets: Define and manage the desired state of pod +replication and rolling updates. Logs from these components can reveal changes +in application versions, scaling events, and configuration updates. + +3. Virtual Machines (VMs): Virtualized computing resources that generate +operating system-level logs capturing events such as application crashes, +network issues, and OS-related errors. + +4. Applications: Software systems or packages running across the infrastructure,n +which may encompass multiple services. Logs from applications track user flows, +application states, and error messages, providing context for user interactions +and system events. + +5. Serverless Functions (e.g., AWS Lambda): Code executions triggered by +specific events. Logs from serverless functions capture invocation details, +execution paths, and error traces, which are useful for understanding specific +function behaviors and pinpointing execution anomalies. + +6. Databases and Data Stores: Includes SQL/NoSQL databases, caches, and storage +solutions. Logs from these entities cover query executions, connection issues, +and transaction errors, essential for tracking data layer issues. + +7. Containers: Portable environments running individual services or processes. +Container logs capture application and system events within the containerized +environment, helping track process-level errors and status changes. + +8. Load Balancers and API Gateways: Components responsible for managing and +routing traffic. Logs from these entities include request paths, status codes, +and errors encountered, which can indicate connectivity issues or +misconfigurations. + +9. Networking Components: Entities like virtual private clouds (VPCs), +firewalls, VPNs, and network interfaces. Logs from these components track +traffic flows, connectivity issues, and security events, crucial for identifying +network-related anomalies. + +10. Clusters and Regions: Groupings of infrastructure either physically or +logically, such as across data centers or cloud regions. Cluster and region logs +help capture high-level events and error messages, useful for understanding +system-wide issues and region-specific disruptions. + +Each of these entities is typically identified by fields such as +\`service.name\`, \`kubernetes.pod.name\`, \`container.id\`, or similar fields +in log records. Observability systems use these identifiers to connect entities, +creating a map of relationships and dependencies that helps teams diagnose +issues, understand cross-entity impacts, and uncover root causes in distributed +architectures.`; + +export const RCA_PROMPT_DEPENDENCIES = `## Understanding the Flow: Upstream vs. Downstream + +- Upstream dependencies: These are the services that your service +depends on. They supply data, perform tasks, or provide resources that +your service consumes. +- Downstream dependencies: These are the services that depend on your +service. They consume the data or resources your service generates. + +When diagnosing issues, distinguishing the direction of dependency can +clarify whether a problem originates from your service’s reliance on an +external input or whether your service is causing issues for other systems. + +--- + +## When to Investigate Upstream Dependencies + +Upstream issues typically occur when your service is failing due to problems +with the responses it receives from external systems. + +1. Timeouts and Latency +- Symptoms: Slow response times, retries, or timeouts. +- Errors: HTTP 504, retrying connection, exceeded timeout threshold. +- Focus: Check the performance and availability of upstream services +(e.g., APIs, databases) and network latency. + +2. Data Integrity Issues** +- Symptoms: Inconsistent or corrupted data. +- Errors: unexpected data format, deserialization errors. +- Focus: Verify data received from upstream services, and investigate +schema or data format changes. + +3. Connection Failures +- Symptoms: Your service cannot connect to upstream services. +- Errors: DNS lookup failed, connection refused, socket timeout. +- Focus: Check upstream service health, DNS, and networking components. + +4. Authentication/Authorization Failures** +- Symptoms: Failed access to upstream resources. +- Errors: 401 Unauthorized, 403 Forbidden, token issues. +- Focus: Validate credentials or tokens and investigate upstream access +policies. + +--- + +## When to Investigate Downstream Dependencies + +Downstream issues occur when your service is functioning but its outputs cause +failures in other services that depend on it. + +1. Data or API Response Issues +- Symptoms: Downstream services receive bad or invalid data. +- Errors: data type mismatch, invalid JSON format. +- Focus: Ensure your service is returning correct data and check for API +changes. + +2. Rate-Limiting and Resource Exhaustion** +- Symptoms: Downstream services are overwhelmed. +- Errors: 429 Too Many Requests, throttling or resource exhaustion. +- Focus: Check your service’s request rates and resource usage (e.g., memory, CPU). + +3. Unexpected Behavior or Regression +- Symptoms: Downstream failures after a recent deployment. +- Errors: New downstream errors after your service changes. +- Focus: Review recent updates, API contracts, or integration points. + +4. Eventual Consistency or Queue Backlogs +- Symptoms: Delayed processing in downstream systems. +- Errors: message queue full, backlog warnings. +- Focus: Check event production rates and queue statuses in downstream services.`; + +export const RCA_PROMPT_CHANGES = `## Reasoning about Correlating Changes in Incident Investigations + +In a root cause analysis, understanding the types and timing of changes is key +to linking symptoms with underlying causes. Changes can broadly be classified +into **symptomatic changes** (indicators of system issues like elevated error +rates or degraded throughput) and **system changes** (events that modify system +configuration or structure, such as scale-downs, new version rollouts, or +significant configuration adjustments). By correlating these changes, we can +assess whether observed symptoms are likely related to specific system +modifications. + +### Identifying Correlations Between Symptomatic and System Changes + +When investigating a sudden issue—such as a 5x increase in latency—it’s +essential to evaluate both the **timing** and **nature** of associated changes +in upstream dependencies, resource utilization, and configuration events. For +instance: + +- Consistent Symptomatic Behavior: If an upstream dependency exhibits a +similar, sustained latency spike around the same time and shows log entries +indicating CPU throttling, this would suggest a correlated, persistent issue +that may directly impact the observed symptom. A scale-down event preceding the +latency increase might indicate that reduced resources are stressing the +dependency. + +- Transient vs. Persistent Issues: Another upstream dependency that +experiences a brief latency increase but recovers quickly is less likely +related. Short-lived changes that self-correct without intervention typically +have different root causes or may be unrelated noise. + +### Types of Changes to Consider in Correlation + +1. Log Pattern Changes: A shift in log patterns, especially around error +levels, provides significant insight. If there’s an increase in critical or +warning log patterns for a dependency during the latency spike, it could +indicate that the issue stems from this entity. Compare these log patterns to +past behavior to assess whether they represent an anomaly that might warrant +further investigation. + +2. Event-Driven System Changes: + - Scale Events: Scale-up or scale-down events can directly impact +performance. If a latency increase aligns with a scale-down, it may suggest that +resource reduction is straining the system. + - Release or Deployment Events: A new version rollout or config change is +a frequent source of correlated issues. Compare the timing of the latency +increase to the deployment to see if the change directly impacts the system. +Correlate with alerts or SLO breaches on endpoints to understand the immediate +effects of the release. + +3. SLO and Alert-Based Changes: SLO breaches and alerts can provide concrete +timestamps for when symptoms begin. For instance, a breach on error rates for a +specific service endpoint following a dependency’s scale-down event suggests a +possible causal link. An alert indicating sustained latency increase in a +dependency that remains unresolved points to a high-priority area for deeper +investigation. + +4. Dependency Health and Behavior: + - Related vs. Unrelated Dependencies: Similar to the latency example, +observe if multiple dependencies experience symptomatic changes simultaneously. +Related dependencies should show consistent, similar issues, while unrelated +dependencies may exhibit brief, unrelated spikes. Persistent issues across key +dependencies likely indicate a systemic cause, while isolated changes are less +likely to be relevant. + +### Examples of Reasoning Through Changes + +Consider these scenarios: +- Increase in Error Rates and a Recent Deployment: Suppose error rates for +an endpoint increase sharply post-deployment. If related logs show new error +patterns, this aligns the symptom with a deployment change. Investigate specific +changes in the deployment (e.g., code changes or resource allocation). +- Throughput Decrease and Scaling Events: If throughput dips shortly after a +scale-down event, it might suggest resource constraints. Analyze CPU or memory +throttling logs from this period in upstream dependencies to confirm. +- Cross-Service Latency Spikes: If multiple services along a call path +experience latency spikes, with CPU throttling logs, this suggests a resource +bottleneck. Trace logs and alerts related to autoscaling decisions may provide +insights into whether the system configuration caused cascading delays. + +By carefully mapping these changes and analyzing their timing, you can +distinguish between causally related events and incidental changes, allowing for +a targeted and effective investigation.`; + +export const RCA_PROMPT_CHANGE_POINTS = `## Change points + +Change points can be defined as the following type: + +- \`dip\`: a significant dip occurs at this change point +- \`distribution_change\`: the overall distribution of the values has changed +significantly +- \`non_stationary\`: there is no change point, but the values are not from a +stationary distribution +- \`spike\`: a significant spike occurs at this point +- \`stationary\`: no change point found +- \`step_change\`: the change indicates a statistically significant step up or +down in value distribution +- \`trend_change\`: there is an overall trend change occurring at this point + +For \`spike\`, and \`dip\`, this means: a short-lived spike or dip that then again +stabilizes. For persisted changes, you'd see a \`step_change\` (if the values +before and after the change point are stable), or a \`trend_change\` when the +values show an upward or downward trend after the change.`; + +export const RCA_PROMPT_SIGNIFICANT_EVENTS = `## Significant events + +Generate a timeline of significant events. These events should capture +significant observed changes in the system that can be extracted from the +analyzed data. This timeline is absolutely critical to the investigation, +and close attention has to be paid to the data, and the instructions. + +The timeline should focus on key events as captured in log patterns, including +both notable changes and unusual/critical messages. This data-driven timeline +should help establish a chain of causality, pinpointing when anomalies began, +what system behaviors were observed, and how these patterns relate to the overall incident. + +- Use ISO timestamps to ensure precision and clarity. +- Include alerts that are part of the investigation. For these, use the start +time of the alert, and mention critical information about the alert, such as +reason and grouping fields. +- Focus on log entries that signal significant system behavior (e.g., errors, +retries, anomalies). +- Highlight critical log messages or changes in patterns that may correlate +with the issue. +- Include notable anomalies, such as spikes in error rates, unexpected system +responses, or any log entries suggesting failure or degradation. + +Do not include: +- Events that are indicative of normal operations. +- Events that are unlikely to be related to the investigated issue. + +Key Elements to Include: + +- Log Patterns: Capture log messages that show unusual events or +abnormalities such as error codes, failed retries, or changes in log frequency. +- Timestamps: Ensure every entry in the timeline is time-stamped +with an accurate ISO 8601 timestamp. +- Event Description: Provide a clear, concise, and objective description of +what was observed in the logs. +- Corroborating Data: Link log anomalies to other relevant data points such +as traffic shifts, request patterns, or upstream/downstream service impacts.`; + +export const RCA_PROMPT_TIMELINE_GUIDE = ` +The timeline should focus on key events as +captured in log patterns, including both notable changes and unusual/critical +messages. This data-driven timeline should help establish a chain of causality, +pinpointing when anomalies began, what system behaviors were observed, and how +these patterns relate to the overall incident. + +- Use ISO timestamps** to ensure precision and clarity. +- Focus on log entries** that signal significant system behavior (e.g., +errors, retries, anomalies). +- Highlight critical log messages** or changes in patterns that may correlate +with the issue. +- Include notable anomalies, such as spikes in error rates, unexpected +system responses, or any log entries suggesting failure or degradation. + +Key Elements to Include: + +Log Patterns: Capture log messages that show unusual events or +abnormalities such as error codes, failed retries, or changes in log frequency. +Timestamps: Ensure every entry in the timeline is time-stamped +with an accurate ISO 8601 timestamp. +Event Description: Provide a clear, concise description of what was +observed in the logs. +Corroborating Data: Link log anomalies to other relevant data points such +as traffic shifts, request patterns, or upstream/downstream service impacts.`; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/run_root_cause_analysis.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/run_root_cause_analysis.ts new file mode 100644 index 0000000000000..94b14b4f3d12f --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/run_root_cause_analysis.ts @@ -0,0 +1,305 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RulesClient } from '@kbn/alerting-plugin/server'; +import { calculateAuto } from '@kbn/calculate-auto'; +import { MessageRole, AssistantMessage, ToolMessage, ToolChoiceType } from '@kbn/inference-common'; +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { AlertsClient } from '@kbn/rule-registry-plugin/server'; +import { findLast, pick } from 'lodash'; +import moment from 'moment'; +import { catchError, filter, from, map, mergeMap, Observable, of, switchMap } from 'rxjs'; +import { ObservabilityAIAssistantClient } from '@kbn/observability-ai-assistant-plugin/server'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis'; +import { callEndRcaProcessTool } from './call_end_rca_process_tool'; +import { callInvestigateEntityTool } from './call_investigate_entity_tool'; +import { callObserveTool } from './call_observe_tool'; +import { RCA_PROMPT_CHANGES, RCA_PROMPT_ENTITIES, RCA_SYSTEM_PROMPT_BASE } from './prompts'; +import { RCA_TOOLS } from './tools'; +import { + EndProcessToolMessage, + InvestigateEntityToolMessage, + ObservationToolMessage, + RootCauseAnalysisContext, + RootCauseAnalysisEvent, + ToolErrorMessage, +} from './types'; +import { callTools } from './util/call_tools'; +import { formatEntity } from './util/format_entity'; +import { validateInvestigateEntityToolCalls } from './util/validate_investigate_entity_tool_call'; + +const SYSTEM_PROMPT_WITH_OBSERVE_INSTRUCTIONS = `${RCA_SYSTEM_PROMPT_BASE} + +Your next step is to request an observation from another agent based +on the initial context or the results of previous investigations.`; + +const SYSTEM_PROMPT_WITH_DECISION_INSTRUCTIONS = `${RCA_SYSTEM_PROMPT_BASE} + +${RCA_PROMPT_ENTITIES} + +${RCA_PROMPT_CHANGES} + + To determine whether to end the process or continue analyzing another entity, +follow the advice from the previous observation, and these tips: + + Continuing the process: + - Do not investigate an entity twice. This will result in a failure. + - Logs, traces, or observability data that suggest upstream or downstream +issues (such as connection failures, timeouts, or authentication errors) +indicate further investigation is required. + + Ending the process: + - No further entities to investigate: If there are no unexplored upstream or +downstream dependencies, and all related entities have been investigated without +discovering new anomalies, it may be appropriate to end the process. + - If all investigated entities (e.g., services, hosts, containers) are +functioning normally, with no relevant issues found, and there are no signs of +dependencies being affected, you may consider ending the process. + - Avoid concluding the investigation based solely on symptoms or the absence +of immediate errors in the data. Unless a system change has been connected to +the incident, it is important to continue investigating dependencies to ensure +the root cause has been accurately identified.`; + +export function runRootCauseAnalysis({ + serviceName, + start: requestedStart, + end: requestedEnd, + esClient, + alertsClient, + rulesClient, + observabilityAIAssistantClient, + spaceId, + indices, + connectorId, + inferenceClient, + context: initialContext, + logger: incomingLogger, + prevEvents, +}: { + context: string; + serviceName: string; + logger: Logger; + inferenceClient: InferenceClient; + start: number; + end: number; + alertsClient: AlertsClient; + rulesClient: RulesClient; + esClient: ObservabilityElasticsearchClient; + observabilityAIAssistantClient: ObservabilityAIAssistantClient; + indices: { + logs: string[]; + traces: string[]; + sloSummaries: string[]; + }; + connectorId: string; + spaceId: string; + prevEvents?: RootCauseAnalysisEvent[]; +}): Observable { + const logger = incomingLogger.get('rca'); + + const entity = { 'service.name': serviceName }; + + const bucketSize = calculateAuto + .atLeast(30, moment.duration(requestedEnd - requestedStart))! + .asMilliseconds(); + + const start = Math.floor(requestedStart / bucketSize) * bucketSize; + const end = Math.floor(requestedEnd / bucketSize) * bucketSize; + + const initialMessage = { + role: MessageRole.User as const, + content: `Investigate the health status of ${formatEntity(entity)}. + + The context given for this investigation is: + + ${initialContext}`, + }; + + const nextEvents = [initialMessage, ...(prevEvents ?? [])]; + + const initialRcaContext: RootCauseAnalysisContext = { + connectorId, + start, + end, + esClient, + events: nextEvents, + indices, + inferenceClient, + initialContext, + alertsClient, + observabilityAIAssistantClient, + logger, + rulesClient, + spaceId, + tokenLimit: 32_000, + }; + + const investigationTimeRangePrompt = `## Time range + + The time range of the investigation is ${new Date(start).toISOString()} until ${new Date( + end + ).toISOString()}`; + + initialContext = `${initialContext} + + ${investigationTimeRangePrompt} + `; + + const next$ = callTools( + { + system: RCA_SYSTEM_PROMPT_BASE, + connectorId, + inferenceClient, + messages: nextEvents, + logger, + }, + ({ messages }) => { + const lastSuccessfulToolResponse = findLast( + messages, + (message) => message.role === MessageRole.Tool && message.name !== 'error' + ) as Exclude | undefined; + + const shouldWriteObservationNext = + !lastSuccessfulToolResponse || lastSuccessfulToolResponse.name !== RCA_OBSERVE_TOOL_NAME; + + const nextTools = shouldWriteObservationNext + ? pick(RCA_TOOLS, RCA_OBSERVE_TOOL_NAME) + : pick(RCA_TOOLS, RCA_END_PROCESS_TOOL_NAME, RCA_INVESTIGATE_ENTITY_TOOL_NAME); + + const nextSystem = shouldWriteObservationNext + ? SYSTEM_PROMPT_WITH_OBSERVE_INSTRUCTIONS + : SYSTEM_PROMPT_WITH_DECISION_INSTRUCTIONS; + + return { + messages, + system: `${nextSystem} + + ${investigationTimeRangePrompt}`, + tools: nextTools, + toolChoice: shouldWriteObservationNext + ? { function: RCA_OBSERVE_TOOL_NAME } + : ToolChoiceType.required, + }; + }, + ({ + toolCalls, + messages, + }): Observable< + | ObservationToolMessage + | ToolErrorMessage + | InvestigateEntityToolMessage + | EndProcessToolMessage + | AssistantMessage + > => { + const nextRcaContext = { + ...initialRcaContext, + events: messages as RootCauseAnalysisEvent[], + }; + + return of(undefined).pipe( + switchMap(() => { + return from( + validateInvestigateEntityToolCalls({ rcaContext: nextRcaContext, toolCalls }) + ); + }), + switchMap((errors) => { + if (errors.length) { + return of( + ...toolCalls.map((toolCall) => { + const toolCallErrorMessage: ToolErrorMessage = { + role: MessageRole.Tool, + name: 'error', + response: { + error: { + message: `Some ${RCA_INVESTIGATE_ENTITY_TOOL_NAME} calls were not valid: + ${errors.map((error) => `- ${error}`).join('\n')}`, + }, + }, + toolCallId: toolCall.toolCallId, + }; + return toolCallErrorMessage; + }) + ); + } + return of(...toolCalls).pipe( + mergeMap((toolCall) => { + function executeToolCall(): Observable< + | EndProcessToolMessage + | InvestigateEntityToolMessage + | ObservationToolMessage + | ToolErrorMessage + | AssistantMessage + > { + switch (toolCall.function.name) { + case RCA_END_PROCESS_TOOL_NAME: + return callEndRcaProcessTool({ + rcaContext: nextRcaContext, + toolCallId: toolCall.toolCallId, + }); + + case RCA_INVESTIGATE_ENTITY_TOOL_NAME: + return callInvestigateEntityTool({ + context: toolCall.function.arguments.context, + field: toolCall.function.arguments.entity.field, + value: toolCall.function.arguments.entity.value, + rcaContext: nextRcaContext, + toolCallId: toolCall.toolCallId, + }); + + case RCA_OBSERVE_TOOL_NAME: + return callObserveTool({ + rcaContext: nextRcaContext, + toolCallId: toolCall.toolCallId, + }); + } + } + + return executeToolCall().pipe( + catchError((error) => { + logger.error(`Failed executing task: ${error.message}`); + logger.error(error); + const toolErrorMessage: ToolErrorMessage = { + name: 'error', + role: MessageRole.Tool, + response: { + error: { + ...('toJSON' in error && typeof error.toJSON === 'function' + ? error.toJSON() + : {}), + message: error.message, + }, + }, + toolCallId: toolCall.toolCallId, + }; + return of(toolErrorMessage); + }) + ); + }, 3) + ); + }) + ); + } + ); + + return next$.pipe( + filter((event) => + Boolean(event.role !== MessageRole.Assistant || event.content || event.toolCalls?.length) + ), + map((event) => { + if (event.role === MessageRole.Assistant) { + return event as Extract; + } + return event; + }) + ); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/analyze_log_patterns/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/analyze_log_patterns/index.ts new file mode 100644 index 0000000000000..fe090b64c9728 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/analyze_log_patterns/index.ts @@ -0,0 +1,402 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { getEntityKuery } from '@kbn/observability-utils-common/entities/get_entity_kuery'; +import { formatValueForKql } from '@kbn/observability-utils-common/es/format_value_for_kql'; +import type { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { ShortIdTable } from '@kbn/observability-utils-common/llm/short_id_table'; +import { + P_VALUE_SIGNIFICANCE_HIGH, + P_VALUE_SIGNIFICANCE_MEDIUM, +} from '@kbn/observability-utils-common/ml/p_value_to_label'; +import { + FieldPatternResultWithChanges, + getLogPatterns, +} from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { castArray, compact, groupBy, orderBy } from 'lodash'; +import { RCA_PROMPT_CHANGES, RCA_PROMPT_ENTITIES } from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; + +type LogPatternRelevance = 'normal' | 'unusual' | 'warning' | 'critical'; + +export type AnalyzedLogPattern = FieldPatternResultWithChanges & { + relevance: LogPatternRelevance; + interesting: boolean; +}; + +export interface AnalyzeLogPatternOutput { + ownPatterns: AnalyzedLogPattern[]; + patternsFromOtherEntities: AnalyzedLogPattern[]; +} + +const normalDescription = `normal operations, such as such access logs`; +const unusualDescription = `something unusual and/or +appear rarely, such as startup or shutdown messages or +other rare vents`; +const warningDescription = `something being in an unexpected state, +such as error messages, rate limiting or disk usage warnings`; +const criticalDescription = `something being in a critical state, +such as startup failure messages, out-of-memory errors or crashloopbackoff +events`; + +interface LogPatternCutOff { + significance?: 'high' | 'medium' | 'low'; + pValue?: number; +} + +export async function analyzeLogPatterns({ + entity, + allAnalysis, + system, + rcaContext: { logger: parentLogger, inferenceClient, connectorId, esClient, start, end, indices }, + cutoff, + kbEntries, +}: { + entity: Record; + allAnalysis: Array<{ index: string | string[]; analysis: TruncatedDocumentAnalysis }>; + system: string; + cutoff?: LogPatternCutOff; + kbEntries: ScoredKnowledgeBaseEntry[]; + rcaContext: Pick< + RootCauseAnalysisContext, + 'indices' | 'logger' | 'inferenceClient' | 'connectorId' | 'esClient' | 'start' | 'end' + >; +}): Promise { + const kuery = getEntityKuery(entity); + + const logger = parentLogger.get('analyzeLogPatterns'); + + const fields = ['message', 'error.exception.message']; + + logger.debug(() => `Analyzing log patterns for ${JSON.stringify(entity)}`); + + const systemPrompt = `You are a helpful assistant for Elastic Observability. + You are an expert in analyzing log messages for software + systems, and you use your extensive experience as an SRE + to thoroughly analyze log patterns for things that require + attention from the user. + + ${RCA_PROMPT_CHANGES} + + ${RCA_PROMPT_ENTITIES} + + ## Entity + + The following entity is being analyzed: + + ${formatEntity(entity)} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ### Entity analysis + + ${allAnalysis.map(({ index: analyzedIndex, analysis }) => { + return `#### Indices: ${castArray(analyzedIndex).join(',')} + + ${JSON.stringify(analysis)}`; + })} + + ${system}`; + + const kueryForOtherEntities = `NOT (${kuery}) AND ${Object.values(entity) + .map( + (val) => + `(${fields.map((field) => `(${[field, formatValueForKql(val)].join(':')})`).join(' OR ')})` + ) + .join(' AND ')}`; + + const [logPatternsFromEntity, logPatternsFromElsewhere] = await Promise.all([ + getLogPatterns({ + esClient, + index: [...indices.logs, ...indices.traces], + start, + end, + kuery, + includeChanges: true, + fields, + metadata: [], + }), + getLogPatterns({ + esClient, + index: [...indices.logs], + start, + end, + kuery: kueryForOtherEntities, + metadata: Object.keys(entity), + includeChanges: true, + fields, + }), + ]); + const patternIdLookupTable = new ShortIdTable(); + + logger.debug( + () => + `Found ${logPatternsFromEntity.length} own log patterns and ${logPatternsFromElsewhere.length} from others` + ); + + logger.trace( + () => + `Found log patterns${JSON.stringify({ + entity, + logPatternsFromEntity, + logPatternsFromElsewhere, + })}` + ); + + const patternsWithIds = [...logPatternsFromEntity, ...logPatternsFromElsewhere].map((pattern) => { + return { + ...pattern, + shortId: patternIdLookupTable.take(pattern.regex), + }; + }); + + const patternsByRegex = new Map(patternsWithIds.map((pattern) => [pattern.regex, pattern])); + + const serializedOwnEntity = formatEntity(entity); + + const [ownPatterns, patternsFromOtherEntities] = await Promise.all([ + logPatternsFromEntity.length ? categorizeOwnPatterns() : [], + logPatternsFromElsewhere.length ? selectRelevantPatternsFromOtherEntities() : [], + ]); + + logger.trace( + () => + `Classified log patterns ${JSON.stringify([entity, ownPatterns, patternsFromOtherEntities])}` + ); + + const allPatterns = [...ownPatterns, ...patternsFromOtherEntities]; + + const sortedByPValueAsc = orderBy( + allPatterns.filter((pattern) => pattern.change && pattern.change.p_value), + (pattern) => { + return pattern.change.p_value; + }, + 'asc' + ); + + const pValueCutOff = getPValueCutoff({ cutoff, max: sortedByPValueAsc[0]?.change.p_value }); + + return { + ownPatterns: ownPatterns.map((pattern) => ({ + ...pattern, + interesting: isInterestingPattern(pattern, pValueCutOff), + })), + patternsFromOtherEntities: patternsFromOtherEntities.map((pattern) => ({ + ...pattern, + interesting: isInterestingPattern(pattern, pValueCutOff), + })), + }; + + function categorizeOwnPatterns() { + return inferenceClient + .output({ + id: 'analyze_log_patterns', + connectorId, + system: systemPrompt, + input: `Based on the following log patterns from + ${formatEntity(entity)}, group these patterns into + the following categories: + + - normal (patterns that are indicative of ${normalDescription}) + - unusual (patterns that are indicative of ${unusualDescription}) + - warning (patterns that are indicative of ${warningDescription}) + - critical (patterns that are indicative of ${criticalDescription}) + + ## Log patterns: + + ${preparePatternsForLlm(logPatternsFromEntity)} + `, + schema: { + type: 'object', + properties: { + categories: { + type: 'array', + items: { + type: 'object', + properties: { + relevance: { + type: 'string', + enum: ['normal', 'unusual', 'warning', 'critical'], + }, + shortIds: { + type: 'array', + description: + 'The pattern IDs you want to group here. Use the pattern short ID.', + items: { + type: 'string', + }, + }, + }, + required: ['relevance', 'shortIds'], + }, + }, + }, + required: ['categories'], + } as const, + }) + .then((outputEvent) => { + return outputEvent.output.categories.flatMap((category) => { + return mapIdsBackToPatterns(category.shortIds).map((pattern) => { + return { + ...pattern, + relevance: category.relevance, + }; + }); + }); + }); + } + + function selectRelevantPatternsFromOtherEntities() { + return inferenceClient + .output({ + id: 'select_relevant_patterns_from_other_entities', + connectorId, + system: systemPrompt, + input: `Based on the following log patterns that + are NOT from ${serializedOwnEntity}, group these + patterns into the following categories: + + - irrelevant (patterns that are not relevant for + ${serializedOwnEntity}) + - normal (patterns that relevant for + ${serializedOwnEntity} and are indicative of ${normalDescription}) + - unusual (patterns that are relevant for + ${serializedOwnEntity} and are indicative of ${unusualDescription}) + - warning (patterns that are relevant for + ${serializedOwnEntity} and are indicative of ${warningDescription}) + - critical (patterns that are relevant for + ${serializedOwnEntity} and are indicative of ${criticalDescription}) + + Relevant patterns are messages that mention the + investigated entity, or things that are indicative + of critical failures or changes in the entity + that owns the log pattern. + + ## Log patterns: + + ${preparePatternsForLlm(logPatternsFromElsewhere)} + `, + schema: { + type: 'object', + properties: { + categories: { + type: 'array', + items: { + type: 'object', + properties: { + relevance: { + type: 'string', + enum: ['irrelevant', 'normal', 'unusual', 'warning', 'critical'], + }, + shortIds: { + type: 'array', + description: + 'The pattern IDs you want to group here. Use the pattern short ID.', + items: { + type: 'string', + }, + }, + }, + required: ['relevance', 'shortIds'], + }, + }, + }, + required: ['categories'], + } as const, + }) + .then((outputEvent) => { + return outputEvent.output.categories.flatMap((category) => { + return mapIdsBackToPatterns(category.shortIds).flatMap((pattern) => { + if (category.relevance === 'irrelevant') { + return []; + } + return [ + { + ...pattern, + relevance: category.relevance, + }, + ]; + }); + }); + }); + } + + function preparePatternsForLlm(patterns: FieldPatternResultWithChanges[]): string { + const groupedByField = groupBy(patterns, (pattern) => pattern.field); + + return Object.entries(groupedByField) + .map(([field, patternsForField]) => { + return `### \`${field}\` + + #### Patterns + + ${JSON.stringify( + patternsForField.map((pattern) => { + return { + shortId: patternIdLookupTable.take(pattern.regex), + regex: pattern.regex, + sample: pattern.sample, + highlight: pattern.highlight, + change: pattern.change, + }; + }) + )} + `; + }) + .join('\n\n'); + } + + function mapIdsBackToPatterns(ids?: string[]) { + return compact( + ids?.map((shortId) => { + const lookupId = patternIdLookupTable.lookup(shortId); + if (!lookupId) { + return undefined; + } + const pattern = patternsByRegex.get(lookupId); + return pattern; + }) + ); + } +} + +function isInterestingPattern( + pattern: Omit, + pValueCutOff: number +) { + return (pattern.change.p_value ?? 1) <= pValueCutOff || pattern.relevance !== 'normal'; +} + +function getPValueCutoff({ max, cutoff }: { max?: number; cutoff?: LogPatternCutOff }) { + if (cutoff?.pValue) { + return cutoff?.pValue; + } + + if (cutoff?.significance === 'high') { + return P_VALUE_SIGNIFICANCE_HIGH; + } + + if (cutoff?.significance === 'medium') { + return P_VALUE_SIGNIFICANCE_MEDIUM; + } + + if (max === undefined) { + return Number.MAX_VALUE; + } + + if (max <= P_VALUE_SIGNIFICANCE_HIGH) { + return P_VALUE_SIGNIFICANCE_HIGH; + } + + if (max <= P_VALUE_SIGNIFICANCE_MEDIUM) { + return P_VALUE_SIGNIFICANCE_MEDIUM; + } + + return Number.MAX_VALUE; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_entity/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_entity/index.ts new file mode 100644 index 0000000000000..bd050c4c61dfd --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_entity/index.ts @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { FieldPatternResultWithChanges } from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; +import { getInvestigateEntityTaskPrompt } from '../investigate_entity/prompts'; + +export async function describeEntity({ + inferenceClient, + connectorId, + entity, + contextForEntityInvestigation, + analysis, + ownPatterns, + kbEntries, +}: { + inferenceClient: InferenceClient; + connectorId: string; + entity: Record; + analysis: TruncatedDocumentAnalysis; + contextForEntityInvestigation: string; + ownPatterns: FieldPatternResultWithChanges[]; + kbEntries: ScoredKnowledgeBaseEntry[]; +}) { + const system = RCA_SYSTEM_PROMPT_BASE; + + const input = `${getInvestigateEntityTaskPrompt({ entity, contextForEntityInvestigation })} + + ## Context for investigating ${formatEntity(entity)} + + ${contextForEntityInvestigation} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ## Data samples + + ${JSON.stringify(analysis)} + + ## Log patterns + + ${JSON.stringify(ownPatterns.map(({ regex, sample }) => ({ regex, sample })))} + + ## Current task + + Describe the entity characteristics based on the sample documents and log + patterns. Put it in context of the investigation process. Mention the reason + why it's being investigated, and how it is related other entities that were + previously investigated. Mention these three things: + + - infrastructure & environment + - communication characteristics (protocols and endpoints) + - context of entity in investigation + + You shouldn't mention the log patterns, they will be analyzed elsewhere. + `; + + const response = await inferenceClient.output({ + id: 'describe_entity', + connectorId, + system, + input, + }); + + return response.content; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_log_patterns/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_log_patterns/index.ts new file mode 100644 index 0000000000000..ea5cc75eea1de --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_log_patterns/index.ts @@ -0,0 +1,189 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { omit, partition, sumBy } from 'lodash'; +import { RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { AnalyzedLogPattern } from '../analyze_log_patterns'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; +import { getInvestigateEntityTaskPrompt } from '../investigate_entity/prompts'; + +export interface LogPatternDescription { + content: string; + docCount: number; + interestingPatternCount: number; + ignoredPatternCount: number; + ignoredDocCount: number; +} + +export async function describeLogPatterns({ + inferenceClient, + connectorId, + entity, + contextForEntityInvestigation, + analysis, + ownPatterns: allOwnPatterns, + patternsFromOtherEntities, + kbEntries, +}: { + inferenceClient: InferenceClient; + connectorId: string; + entity: Record; + analysis: TruncatedDocumentAnalysis; + contextForEntityInvestigation: string; + ownPatterns: AnalyzedLogPattern[]; + patternsFromOtherEntities: AnalyzedLogPattern[]; + kbEntries: ScoredKnowledgeBaseEntry[]; +}): Promise { + const system = RCA_SYSTEM_PROMPT_BASE; + + const [ownInterestingPatterns, ignoredOwnPatterns] = partition( + allOwnPatterns, + (pattern) => pattern.interesting + ); + + const stats = { + docCount: sumBy(allOwnPatterns, (pattern) => pattern.count), + interestingPatternCount: ownInterestingPatterns.length, + otherInterestingPatternCount: patternsFromOtherEntities.length, + ignoredPatternCount: ignoredOwnPatterns.length, + ignoredDocCount: sumBy(ignoredOwnPatterns, (pattern) => pattern.count), + }; + + const header = `## Log analysis + + ### Stats for own log patterns: + - ${stats.docCount} documents analyzed + - ${stats.interestingPatternCount} interesting patterns + - ${stats.ignoredPatternCount} ignored patterns, accounting for + ${stats.ignoredDocCount} out of ${stats.docCount} documents + - ${stats.otherInterestingPatternCount} relevant patterns from + other entities`; + + if (!stats.interestingPatternCount && !stats.otherInterestingPatternCount) { + return { + ...stats, + content: `${header}\n\nNo interesting log patterns`, + }; + } + + const ownLogPatternsPrompt = ownInterestingPatterns.length + ? JSON.stringify( + ownInterestingPatterns.map(({ regex, sample, change, count, timeseries }) => ({ + regex, + sample, + change, + count, + timeseries: timeseries.map(({ x, y }, index) => { + if (index === change.change_point) { + return `${change.type} at ${new Date(x).toISOString()}: ${y}`; + } + return `${new Date(x).toISOString()}: ${y}`; + }), + })) + ) + : 'No own log patterns found'; + + const otherLogPatternsPrompt = patternsFromOtherEntities.length + ? JSON.stringify( + patternsFromOtherEntities.map( + ({ regex, sample, change, count, timeseries, metadata, field, highlight }) => ({ + regex, + sample, + change, + count, + timeseries: timeseries.map(({ x, y }, index) => { + if (index === change.change_point) { + return `${change.type} at ${new Date(x).toISOString()}: ${y}`; + } + return `${new Date(x).toISOString()}: ${y}`; + }), + entity: omit(metadata, field), + highlight, + }) + ) + ) + : 'No relevant log patterns found from other entities'; + + const input = `${getInvestigateEntityTaskPrompt({ entity, contextForEntityInvestigation })} + + ## Context for investigating ${formatEntity(entity)} + + ${contextForEntityInvestigation} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ## Data samples + + ${JSON.stringify(analysis)} + + ## Log patterns from ${formatEntity(entity)} + + ${ownLogPatternsPrompt} + + ## Possibly relevant log patterns from other entities + + ${otherLogPatternsPrompt} + + ### Interpreting log patterns and samples + + The pattern itself is what is consistent across all messages. The values from these parts + are separately given in "constants". There's also a single (random) _sample_ included, with + the variable part being given as well. E.g., if the failure in the sample is not part of the pattern + itself, you should mention that in your analysis. + + ## Task + + Using only the log patterns, describe your observations about the entity. + + Group these pattterns together based on topic. Some examples of these topics: + + - normal operations such as request logs + - connection issues to an upstream dependency + - startup messages + - garbage collection messages + + For patterns with change points, describe the trend before and after the change point based + on the data points. E.g.: + - A persisted drop to near-zero after 2020-01-01T05:00:00.000Z + - A spike from 10 to 100 at 2020-01-01T05:00:00.000Z, which went back down + to the average after 2020-01-01T05:02:00.000Z + - A trend change after 2020-01-01T05:00:00.000Z. The values ranged from 10 + to 20 before, but then after increased from 20 to 100 until + 2020-01-01T05:02:00.000Z. + + Do not: + - repeat the variables, instead, repeat the constants. + - repeat the timeseries as a whole, verbatim, in full. However, you can use individual data points + timestamps to illustrate the magnitude of the change, as in the example previously given. + - make up timestamps. + - do not separately list individual events if you have already mentioned + the pattern. + + Statistics: + + - ${stats.interestingPatternCount} patterns from ${formatEntity(entity)} + were collected + - ${stats.docCount} logs were categorized + - ${stats.ignoredPatternCount} patterns were deemed uninteresting and accounted + for ${stats.ignoredDocCount} out of the total amount of logs + `; + + const response = await inferenceClient.output({ + id: 'describe_log_patterns', + connectorId, + system, + input, + }); + + return { + ...stats, + content: response.content, + }; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts new file mode 100644 index 0000000000000..893533629ff06 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts @@ -0,0 +1,438 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { getEntityKuery } from '@kbn/observability-utils-common/entities/get_entity_kuery'; +import { + DocumentAnalysis, + TruncatedDocumentAnalysis, +} from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { sortAndTruncateAnalyzedFields } from '@kbn/observability-utils-common/llm/log_analysis/sort_and_truncate_analyzed_fields'; +import { analyzeDocuments } from '@kbn/observability-utils-server/entities/analyze_documents'; +import { FieldPatternResultWithChanges } from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { kqlQuery } from '@kbn/observability-utils-server/es/queries/kql_query'; +import { rangeQuery } from '@kbn/observability-utils-server/es/queries/range_query'; +import { chunk, isEmpty, isEqual } from 'lodash'; +import pLimit from 'p-limit'; +import { + RCA_PROMPT_DEPENDENCIES, + RCA_PROMPT_ENTITIES, + RCA_SYSTEM_PROMPT_BASE, +} from '../../prompts'; +import { chunkOutputCalls } from '../../util/chunk_output_calls'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { toBlockquote } from '../../util/to_blockquote'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; +import { RelatedEntityKeywordSearch } from './write_keyword_searches_for_related_entities'; + +export interface RelatedEntityFromSearchResults { + entity: { [x: string]: string }; + highlight: Record; + analysis: TruncatedDocumentAnalysis; +} + +function getPromptForFoundEntity({ entity, analysis, highlight }: RelatedEntityFromSearchResults) { + return `## Entity: ${formatEntity(entity)} + + ${toBlockquote(`### Search highlights for ${formatEntity(entity)} + ${JSON.stringify(highlight)}`)} + `; +} + +function getInputPromptBase({ + entity, + analysis, + ownPatterns, + patternsFromOtherEntities, + searches, + context, + kbEntries, +}: { + entity: Record; + analysis: TruncatedDocumentAnalysis; + ownPatterns: FieldPatternResultWithChanges[]; + patternsFromOtherEntities: FieldPatternResultWithChanges[]; + searches: RelatedEntityKeywordSearch[]; + context: string; + kbEntries: ScoredKnowledgeBaseEntry[]; +}) { + const otherPatternsPrompt = patternsFromOtherEntities.length + ? JSON.stringify( + patternsFromOtherEntities.map((pattern) => ({ + sample: pattern.sample, + regex: pattern.regex, + })) + ) + : 'No relevant log patterns from other entities found'; + const logPatternsPrompt = ownPatterns.length + ? JSON.stringify( + ownPatterns.map((pattern) => { + return { sample: pattern.sample, regex: pattern.regex }; + }) + ) + : 'No log patterns found'; + return `Describe possible relationships to the investigated entity ${formatEntity(entity)}. + + ## Context + + ${toBlockquote(context)} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ## Data analysis + ${JSON.stringify(analysis)} + + ## Log patterns for ${formatEntity(entity)} + + ${logPatternsPrompt} + + ## Patterns from other entities + + ${otherPatternsPrompt} + + ## Search keywords + + ${searches + .map(({ fragments, appearsAs }) => { + return `## Appears as: ${appearsAs} + + ### Fragments: + ${fragments.map((fragment) => `- \`${fragment}\``).join('\n')}`; + }) + .join('\n')}`; +} + +function getInputPromptInstructions({ entity }: { entity: Record }) { + return `### Indicator strength + +In an Observability system, indicators of relationships between entities like +services, hosts, users, or requests can vary in strength. Some indicators +clearly define relationships, while others only suggest correlations. Here’s a +breakdown of these indicators into strong, average, and weak categories, with an +additional look at how weak indicators can become strong when combined. + +Strong indicators provide definitive links between entities. Distributed tracing +IDs (trace, span, and parent) are among the strongest indicators, as they map +the complete request path across services, showing exact service interactions. +Session or user IDs are also strong indicators, capturing a user’s actions +across services or hosts and revealing issues specific to particular users. + +Average indicators give helpful context but may require supporting data to +clarify relationships. IP addresses, for instance, are moderately strong for +tracking inter-service calls within controlled environments but are weaker +across public or shared networks where IP reuse is common. URL paths also fall +in this category; they link entities to specific endpoints or service functions +and are moderately strong for tracking interactions between microservices with +known APIs. Port numbers are another average indicator. While they suggest the +service interaction type (HTTP, database), they generally need pairing with IP +addresses or URLs for more accuracy, as port numbers alone are often shared +across different services. + +Weak indicators are often too generic to imply a direct relationship but can +suggest possible correlations. Host names, for example, are broad and typically +cover a range of services or applications, especially in large clusters. +Time-based indicators, such as timestamps or TTL values, suggest possible timing +correlations but don’t establish a definitive link on their own. Status codes, +like HTTP 500 errors, indicate issues but don’t specify causality, often +requiring corroboration with stronger indicators like trace or session IDs. + +However, weak indicators can become strong when they appear together. For +instance, a combination of IP address, port, and timestamp can strongly suggest +a direct interaction between services, especially when the same combination is +seen repeatedly or in conjunction with related URLs. Similarly, a host name +combined with a unique URL path can strongly suggest that a specific service or +pod is generating particular request patterns, even if each alone is too +general. + +## Relevance to the investigation + +Given the context of the investigation, some entities might be very relevant +even if there is no strong evidence of them being a direct dependency of +${formatEntity(entity)}. For instance, the related entity might be an +orchestrating entity, or it might be involved in a specific operation related +to the ongoing issue. + +## Identifying entity relationships + +Your current task is to identify possible entity relationships for the +investigated entity ${formatEntity(entity)}. You will get some context, document +analysis for the investigated entity, and results from keyword searches that were +extracted from the entity. Based on this data, list entities that could possibly +be related to the given entity and/or the initial context. List the highly +relevant entities first. + +## Output + +For each possible relationship, describe the following things: +- The related entity (as a key-value pair) +- The indicators you have observed as evidence of the relationship. Include the +strength of the indicator, and the exact pieces of data that are related to it +(field names and values, in both the investigated entity, and the possibly +related entity). +- Reason how the related entity is related to both ${formatEntity(entity)} as a +dependency and the context. For instance, describe who is the caller and callee +or whether that is unclear, based on the data, or explain how it might be +related to the context. +- The overall likeliness of it being a relevant entity.`; +} + +export async function analyzeFetchedRelatedEntities({ + connectorId, + inferenceClient, + esClient, + start, + end, + searches, + groupingFields, + index, + entity, + ownPatterns, + analysis, + patternsFromOtherEntities, + logger: parentLogger, + context, + kbEntries, +}: { + connectorId: string; + inferenceClient: InferenceClient; + esClient: ObservabilityElasticsearchClient; + start: number; + end: number; + searches: RelatedEntityKeywordSearch[]; + groupingFields: string[]; + index: string | string[]; + entity: Record; + analysis: { + truncated: TruncatedDocumentAnalysis; + full: DocumentAnalysis; + }; + ownPatterns: FieldPatternResultWithChanges[]; + patternsFromOtherEntities: FieldPatternResultWithChanges[]; + context: string; + logger: Logger; + kbEntries: ScoredKnowledgeBaseEntry[]; +}): Promise<{ + summaries: string[]; + foundEntities: RelatedEntityFromSearchResults[]; +}> { + const entityFields = Object.keys(entity); + + const logger = parentLogger.get('findRelatedEntities'); + + logger.debug( + () => `Finding related entities: ${JSON.stringify({ entity, groupingFields, searches })}` + ); + + const allValuesFromEntity = Array.from( + new Set(analysis.full.fields.flatMap((field) => field.values)) + ); + + const foundEntities = ( + await Promise.all( + groupingFields.map((groupingField) => getResultsForGroupingField(groupingField)) + ) + ).flat(); + + logger.debug(() => `Found ${foundEntities.length} entities via keyword searches`); + + const system = `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES} + + ${RCA_PROMPT_DEPENDENCIES}`; + + const inputPromptBase = getInputPromptBase({ + entity, + analysis: analysis.truncated, + ownPatterns, + patternsFromOtherEntities, + searches, + context, + kbEntries, + }); + + const foundEntityPrompts = foundEntities.map((foundEntity) => { + return { + text: getPromptForFoundEntity(foundEntity), + id: formatEntity(foundEntity.entity), + }; + }); + + const inputPromptInstructions = getInputPromptInstructions({ entity }); + + // don't do more than 10 entities in a response, we'll run out of + // tokens + const requests = chunk(foundEntityPrompts, 10).flatMap((texts) => + chunkOutputCalls({ + system, + input: `${inputPromptBase} ${inputPromptInstructions}`, + texts, + tokenLimit: 32_000 - 6_000, + }) + ); + + const allRelevantEntityDescriptions = await Promise.all( + requests.map(async (request) => { + const outputCompleteEvent = await inferenceClient.output({ + id: 'describe_relevant_entities', + connectorId, + system: request.system, + input: `${inputPromptBase} + + # Found entities + + ${request.texts.map((text) => text.text).join('\n\n')} + + ${inputPromptInstructions}`, + }); + + return outputCompleteEvent.content; + }) + ); + + return { + summaries: allRelevantEntityDescriptions, + foundEntities, + }; + + async function getResultsForGroupingField( + groupingField: string + ): Promise { + const excludeQuery = isEqual([groupingField], entityFields) + ? `NOT (${groupingField}:"${entity[groupingField]}")` + : ``; + + const fieldCaps = await esClient.fieldCaps('check_if_grouping_field_exists', { + fields: [groupingField], + index, + index_filter: { + bool: { + filter: [...rangeQuery(start, end)], + }, + }, + }); + + if (isEmpty(fieldCaps.fields[groupingField])) { + return []; + } + + const keywordSearchResults = await esClient.search( + 'find_related_entities_via_keyword_searches', + { + track_total_hits: false, + index, + query: { + bool: { + must: [...rangeQuery(start, end), ...kqlQuery(excludeQuery)], + should: [ + { + multi_match: { + query: searches.flatMap((search) => search.fragments).join(' '), + fields: '*', + }, + }, + ], + minimum_should_match: 1, + }, + }, + fields: [groupingField], + collapse: { + field: groupingField, + }, + highlight: { + fields: { + '*': {}, + }, + }, + _source: false, + size: 1_000, + } + ); + + if (!keywordSearchResults.hits.hits.length) { + logger.debug(() => `No hits: ${JSON.stringify({ entity, groupingField, searches })}`); + return []; + } + + logger.trace( + () => + `Hits: ${JSON.stringify({ + entity, + groupingField, + searches, + count: keywordSearchResults.hits.hits.length, + hits: keywordSearchResults.hits.hits, + })}` + ); + + const limiter = pLimit(20); + + const groupingFieldAnalysis = await Promise.all( + keywordSearchResults.hits.hits.map(async (hit) => { + return limiter(async () => { + const groupValue = hit.fields![groupingField][0] as string; + + const analysisForGroupingField = await analyzeDocuments({ + esClient, + start, + end, + index, + kuery: getEntityKuery({ + [groupingField]: groupValue, + }), + }); + + const analysisWithRelevantValues = { + ...analysisForGroupingField, + fields: analysisForGroupingField.fields + .filter((field) => { + return !field.empty; + }) + .map((field) => { + const valuesFoundInEntity = field.values.filter((value) => { + return ( + allValuesFromEntity.includes(value) || + allValuesFromEntity.some((valueFromEntity) => { + return ( + typeof valueFromEntity === 'string' && + typeof value === 'string' && + (value.includes(valueFromEntity) || valueFromEntity.includes(value)) + ); + }) + ); + }); + return { + ...field, + values: valuesFoundInEntity, + }; + }), + }; + + return { + groupingField, + key: groupValue, + highlight: hit.highlight!, + analysis: sortAndTruncateAnalyzedFields(analysisWithRelevantValues), + }; + }); + }) + ); + + return groupingFieldAnalysis.map(({ key, highlight, analysis: analysisForGroupingField }) => { + return { + entity: { + [groupingField]: key, + }, + highlight, + analysis: analysisForGroupingField, + }; + }); + } +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts new file mode 100644 index 0000000000000..5480a76eb2096 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts @@ -0,0 +1,159 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import stringify from 'json-stable-stringify'; +import pLimit from 'p-limit'; +import { RelatedEntityFromSearchResults } from '.'; +import { + RCA_PROMPT_DEPENDENCIES, + RCA_PROMPT_ENTITIES, + RCA_SYSTEM_PROMPT_BASE, +} from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { formatEntity } from '../../util/format_entity'; +import { getPreviouslyInvestigatedEntities } from '../../util/get_previously_investigated_entities'; +import { toBlockquote } from '../../util/to_blockquote'; + +export interface RelatedEntityDescription { + entity: Record; + reason: string; + confidence: string; +} + +export async function extractRelatedEntities({ + entity, + entityReport, + summaries, + foundEntities, + context, + rcaContext: { events, connectorId, inferenceClient }, +}: { + foundEntities: RelatedEntityFromSearchResults[]; + entity: Record; + entityReport: string; + summaries: string[]; + context: string; + rcaContext: Pick; +}): Promise<{ relatedEntities: RelatedEntityDescription[] }> { + const system = `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES} + + ${RCA_PROMPT_DEPENDENCIES}`; + + const previouslyInvestigatedEntities = getPreviouslyInvestigatedEntities({ events }); + + const previouslyInvestigatedEntitiesPrompt = previouslyInvestigatedEntities.length + ? `## Previously investigated entities + + ${previouslyInvestigatedEntities + .map((prevEntity) => `- ${formatEntity(prevEntity)}`) + .join('\n')}` + : ''; + + const prompts = summaries.map((summary) => { + return ` + # Investigated entity + + ${formatEntity(entity)} + + # Report + + ${toBlockquote(entityReport)} + + # Related entities report + + ${toBlockquote(summary)} + + ${previouslyInvestigatedEntitiesPrompt} + + # Context + + ${context} + + # Task + + Your current task is to extract relevant entities as a data structure from the + related entities report. Order them by relevance to the investigation, put the + most relevant ones first. + `; + }); + + const limiter = pLimit(5); + + const allEvents = await Promise.all( + prompts.map(async (input) => { + const completeEvent = await limiter(() => + inferenceClient.output({ + id: 'get_entity_relationships', + connectorId, + system, + input, + schema: { + type: 'object', + properties: { + related_entities: { + type: 'array', + items: { + type: 'object', + properties: { + entity: { + type: 'object', + properties: { + field: { + type: 'string', + }, + value: { + type: 'string', + }, + }, + required: ['field', 'value'], + }, + reason: { + type: 'string', + description: 'Describe why this entity might be relevant. Provide evidence.', + }, + confidence: { + type: 'string', + description: + 'Describe how confident you are in your conclusion about this relationship: low, moderate, high', + }, + }, + + required: ['entity', 'reason', 'confidence'], + }, + }, + }, + required: ['related_entities'], + } as const, + }) + ); + return completeEvent.output; + }) + ); + + const foundEntityIds = foundEntities.map(({ entity: foundEntity }) => stringify(foundEntity)); + + const relatedEntities = allEvents + .flat() + .flatMap((event) => { + return event.related_entities.map((item) => { + return { + entity: { [item.entity.field]: item.entity.value }, + reason: item.reason, + confidence: item.confidence, + }; + }); + }) + .filter((item) => { + return foundEntityIds.includes(stringify(item.entity)); + }); + + return { + relatedEntities, + }; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/index.ts new file mode 100644 index 0000000000000..05392db2d502c --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/index.ts @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { + DocumentAnalysis, + TruncatedDocumentAnalysis, +} from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { FieldPatternResultWithChanges } from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { + analyzeFetchedRelatedEntities, + RelatedEntityFromSearchResults, +} from './analyze_fetched_related_entities'; +import { + RelatedEntityKeywordSearch, + writeKeywordSearchForRelatedEntities, +} from './write_keyword_searches_for_related_entities'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; + +export type { RelatedEntityFromSearchResults }; + +export async function findRelatedEntities({ + connectorId, + inferenceClient, + start, + end, + index, + esClient, + entity, + analysis, + logger, + context, + ownPatterns, + patternsFromOtherEntities, + kbEntries, +}: { + connectorId: string; + inferenceClient: InferenceClient; + start: number; + end: number; + index: string | string[]; + esClient: ObservabilityElasticsearchClient; + entity: Record; + analysis: { + truncated: TruncatedDocumentAnalysis; + full: DocumentAnalysis; + }; + logger: Logger; + context: string; + ownPatterns: FieldPatternResultWithChanges[]; + patternsFromOtherEntities: FieldPatternResultWithChanges[]; + kbEntries: ScoredKnowledgeBaseEntry[]; +}): Promise<{ + searches: RelatedEntityKeywordSearch[]; + summaries: string[]; + foundEntities: RelatedEntityFromSearchResults[]; +}> { + const { groupingFields, searches } = await writeKeywordSearchForRelatedEntities({ + connectorId, + inferenceClient, + entity, + analysis: analysis.truncated, + ownPatterns, + context, + kbEntries, + }); + + const { summaries, foundEntities } = await analyzeFetchedRelatedEntities({ + entity, + connectorId, + start, + end, + esClient, + index, + inferenceClient, + searches, + groupingFields, + logger, + analysis, + ownPatterns, + patternsFromOtherEntities, + context, + kbEntries, + }); + + return { + searches, + summaries, + foundEntities, + }; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts new file mode 100644 index 0000000000000..6089ce748eb21 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts @@ -0,0 +1,199 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { FieldPatternResultWithChanges } from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { RCA_PROMPT_ENTITIES, RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { toBlockquote } from '../../util/to_blockquote'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; + +const SYSTEM_PROMPT_ADDENDUM = `# Guide: Constructing Keyword Searches to Find Related Entities + +When investigating issues like elevated failure rates for a +specific endpoint, you can use the metadata at hand (IP addresses, +URLs, session IDs, tracing IDs, etc.) to build targeted keyword searches. +By extracting meaningful fragments from the data, you can correlate +related services or hosts across distributed systems. Here’s how +you can break down the metadata and format your searches. + +## Grouping fields + +Define grouping fields for the entities you want to extract. For +instance, "service.name" if you are looking for services, or +"kubernetes.pod.name" if you are looking for pods. Focus +on services, unless you are looking for deployment or +configuration changes. + +--- + +## Key Metadata and Search Format + +### Example: Investigating a service failure for \`/api/products\` + +You can break down various pieces of metadata into searchable +fragments. For each value, include a short description of its +relationship to the investigation. This value will be used +by the system to determine the relevance of a given entity +that matches the search request. + +### 1. **IP Address and Port** +- **Fragments:** + - \`"10.44.0.11:8080"\`: Full address. + - \`"10.44.0.11"\`: IP address only. + - \`"8080"\`: Port number. +- **Appears as:** This IP address and port are referenced as + and in the investigated entity +.. + +### 2. **Outgoing Request URL** +- **Fragments:** + - \`"http://called-service/api/product"\`: Full outgoing URL. + - \`"/api/product*"\`: Endpoint path. + - \`"called-service"\`: Service name of the upstream dependency. + - **Appears as:** These URL fragments appear as attributes.request.url + in the investigated entity . They could appear as referer + in the upstream dependency. + +### 3. **Parent and Span IDs** + - **Fragments:** + - \`"000aa"\`: Parent ID. + - \`"000bbb"\`: Span ID. + - **Relationship:** These ids appear as span.id and parent.id in the + investigated entity . They could be referring to spans + found on upstream or downstream services. + +--- + +## Example Search Format in JSON + +To structure your keyword search, format the fragments and their +relationships in a JSON array like this: + +\`\`\`json +{ + "groupingFields": [ "service.name" ], + "values": [ + { + "fragments": [ + "10.44.0.11:8080", + "10.44.0.11", + "8080" + ], + "appearsAs": "This IP address and port are referenced as and in the investigated entity ." + }, + { + "fragments": [ + "http:///api/product", + "/api/product", + "" + ], + "relationship": "These URL fragments appear as attributes.request.url in the investigated entity ." + }, + { + "fragments": [ + "000aa", + "000bbb" + ], + "relationship": " These ids appear as span.id and parent.id in the investigated entity . They could be referring to spans found on upstream or downstream services" + } + ] +}`; + +export interface RelatedEntityKeywordSearch { + fragments: string[]; + appearsAs: string; +} + +export async function writeKeywordSearchForRelatedEntities({ + connectorId, + inferenceClient, + entity, + analysis, + ownPatterns, + context, + kbEntries, +}: { + connectorId: string; + inferenceClient: InferenceClient; + entity: Record; + analysis: TruncatedDocumentAnalysis; + ownPatterns: FieldPatternResultWithChanges[]; + context: string; + kbEntries: ScoredKnowledgeBaseEntry[]; +}): Promise<{ + groupingFields: string[]; + searches: RelatedEntityKeywordSearch[]; +}> { + const logPatternsPrompt = ownPatterns.length + ? JSON.stringify( + ownPatterns.map((pattern) => ({ regex: pattern.regex, sample: pattern.sample })) + ) + : 'No log patterns found'; + + return inferenceClient + .output({ + id: 'extract_keyword_searches', + connectorId, + system: `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES}`, + input: `Your current task is to to extract keyword searches + to find related entities to the entity ${formatEntity(entity)}, + based on the following context: + + ## Investigation context + ${toBlockquote(context)} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ## Data analysis + ${JSON.stringify(analysis)} + + ## Log patterns + + ${logPatternsPrompt} + + ## Instructions + ${SYSTEM_PROMPT_ADDENDUM}`, + schema: { + type: 'object', + properties: { + groupingFields: { + type: 'array', + items: { + type: 'string', + }, + }, + searches: { + type: 'array', + items: { + type: 'object', + properties: { + fragments: { + type: 'array', + items: { + type: 'string', + }, + }, + appearsAs: { + type: 'string', + description: + 'Describe in what fields these values appear as in the investigated entity. You can mention multiple fields if applicable', + }, + }, + required: ['fragments', 'appearsAs'], + }, + }, + }, + required: ['searches', 'groupingFields'], + } as const, + }) + .then((event) => event.output); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/generate_timeline/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/generate_timeline/index.ts new file mode 100644 index 0000000000000..799755abec2e5 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/generate_timeline/index.ts @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { stringifySummaries } from '../../util/stringify_summaries'; + +type SignificantEventSeverity = 'info' | 'unusual' | 'warning' | 'critical'; + +type SignificantEventType = 'alert' | 'slo' | 'event'; + +export interface SignificantEvent { + severity: SignificantEventSeverity; + '@timestamp'?: string; + description: string; + type: SignificantEventType; +} + +export interface SignificantEventsTimeline { + events: SignificantEvent[]; +} + +export async function generateSignificantEventsTimeline({ + report, + rcaContext, +}: { + report: string; + rcaContext: RootCauseAnalysisContext; +}): Promise { + const { connectorId, inferenceClient } = rcaContext; + + return await inferenceClient + .output({ + id: 'generate_timeline', + system: RCA_SYSTEM_PROMPT_BASE, + connectorId, + input: `Your current task is to generate a timeline + of significant events, based on the given RCA report, + according to a structured schema. This timeline will + be presented to the user as a visualization. + + ${stringifySummaries(rcaContext)} + + # Report + + ${report} + `, + schema: { + type: 'object', + properties: { + events: { + type: 'array', + items: { + type: 'object', + properties: { + timestamp: { + type: 'string', + description: 'The ISO timestamp of when the event occurred', + }, + severity: { + type: 'string', + enum: ['info', 'unusual', 'warning', 'critical'], + }, + type: { + type: 'string', + enum: ['alert', 'slo', 'event'], + }, + description: { + type: 'string', + description: 'A description of the event', + }, + }, + required: ['severity', 'description'], + }, + }, + }, + required: ['events'], + } as const, + }) + .then((timelineCompleteEvent) => { + return { + events: timelineCompleteEvent.output.events.map((event) => { + return { + '@timestamp': event.timestamp, + severity: event.severity, + type: event.type ?? 'event', + description: event.description, + }; + }), + }; + }); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts new file mode 100644 index 0000000000000..8fbe9a43defea --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts @@ -0,0 +1,185 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ShortIdTable } from '@kbn/observability-ai-assistant-plugin/common'; +import { decode, encode } from 'gpt-tokenizer'; +import { orderBy, sumBy } from 'lodash'; +import { RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { formatEntity } from '../../util/format_entity'; +import { toBlockquote } from '../../util/to_blockquote'; + +export interface ScoredKnowledgeBaseEntry { + id: string; + text: string; + tokens: number; + score: number; + truncated?: { + tokens: number; + text: string; + }; +} + +export async function getKnowledgeBaseEntries({ + entity, + context, + rcaContext, + maxTokens: maxTokensForEntries, +}: { + entity: Record; + context: string; + rcaContext: RootCauseAnalysisContext; + maxTokens: number; +}): Promise { + const response = await rcaContext.observabilityAIAssistantClient.recall({ + queries: [ + ...Object.values(entity).map((value) => ({ text: value, boost: 3 })), + { text: context }, + ], + limit: { + tokenCount: Number.MAX_VALUE, + }, + }); + + const { inferenceClient, connectorId } = rcaContext; + + const shortIdTable = new ShortIdTable(); + + const system = RCA_SYSTEM_PROMPT_BASE; + + const input = `Re-order the attached documents, based on relevance to the context. + Score them between 1 and 5, based on their relative relevance to each other. The + most relevant doc should be scored 5, and the least relevant doc should be scored + 1. + + # Entity + + ${formatEntity(entity)} + + # Context + + ${toBlockquote(context)} + `; + + const maxTokensForScoring = rcaContext.tokenLimit - encode(system + input).length - 1_000; + + const entriesWithTokens = response.map((entry) => { + return { + id: entry.id, + text: entry.text, + tokens: encode(entry.text), + }; + }); + + const totalTokenCount = sumBy(entriesWithTokens, (entry) => entry.tokens.length); + + const truncatedEntriesWithShortIds = entriesWithTokens.map((entry) => { + const tokensForEntry = Math.floor( + (entry.tokens.length / totalTokenCount) * maxTokensForScoring + ); + + const truncatedText = decode(entry.tokens.slice(0, tokensForEntry)); + const isTruncated = tokensForEntry < entry.tokens.length; + + return { + id: entry.id, + tokens: entry.tokens, + shortId: shortIdTable.take(entry.id), + text: entry.text, + truncatedText, + isTruncated, + }; + }); + + const scoredEntries = await inferenceClient.output({ + id: 'score_entries', + connectorId, + system: RCA_SYSTEM_PROMPT_BASE, + input: `${input} + + ${truncatedEntriesWithShortIds + .map((entry) => { + return `# ID: ${entry.shortId} + + ## Text (${entry.isTruncated ? `truncated` : `not truncated `}) + + ${toBlockquote(entry.truncatedText)} + `; + }) + .join('\n\n')} + `, + stream: false, + schema: { + type: 'object', + properties: { + docs: { + type: 'array', + items: { + type: 'object', + properties: { + score: { + type: 'number', + description: + 'A score between 1 and 5, with 5 being most relevant, and 1 being least relevant', + }, + id: { + type: 'string', + }, + }, + required: ['score', 'id'], + }, + }, + }, + required: ['docs'], + }, + } as const); + + const scoresById = new Map(scoredEntries.output.docs.map((doc) => [doc.id, doc.score])); + + const entriesWithScore = truncatedEntriesWithShortIds.map((entry) => { + const score = scoresById.get(entry.shortId) ?? 0; + return { + ...entry, + score, + }; + }); + + const sortedEntries = orderBy(entriesWithScore, (entry) => entry.score, 'desc'); + + const returnedEntries: ScoredKnowledgeBaseEntry[] = []; + + const tokensLeft = maxTokensForEntries; + + sortedEntries.forEach((entry) => { + if (entry.tokens.length <= tokensLeft) { + returnedEntries.push({ + id: entry.id, + text: entry.text, + tokens: entry.tokens.length, + score: entry.score, + }); + return; + } + + const tokensToTake = tokensLeft; + if (tokensToTake > 0) { + const tookTokens = entry.tokens.slice(0, tokensToTake); + returnedEntries.push({ + id: entry.id, + text: entry.text, + tokens: entry.tokens.length, + score: entry.score, + truncated: { + text: decode(tookTokens), + tokens: tookTokens.length, + }, + }); + } + }); + + return returnedEntries; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/index.ts new file mode 100644 index 0000000000000..1e9ae7147211b --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/index.ts @@ -0,0 +1,268 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getEntityKuery } from '@kbn/observability-utils-common/entities/get_entity_kuery'; +import { sortAndTruncateAnalyzedFields } from '@kbn/observability-utils-common/llm/log_analysis/sort_and_truncate_analyzed_fields'; +import { analyzeDocuments } from '@kbn/observability-utils-server/entities/analyze_documents'; +import { getDataStreamsForEntity } from '@kbn/observability-utils-server/entities/get_data_streams_for_entity'; +import { getAlertsForEntity } from '@kbn/observability-utils-server/entities/signals/get_alerts_for_entity'; +import { getSlosForEntity } from '@kbn/observability-utils-server/entities/signals/get_slos_for_entity'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { RootCauseAnalysisContext } from '../../types'; +import { stringifySummaries } from '../../util/stringify_summaries'; +import { analyzeLogPatterns } from '../analyze_log_patterns'; +import { describeEntity } from '../describe_entity'; +import { describeLogPatterns } from '../describe_log_patterns'; +import { findRelatedEntities } from '../find_related_entities'; +import { extractRelatedEntities } from '../find_related_entities/extract_related_entities'; +import { writeEntityInvestigationReport } from '../write_entity_investigation_report'; +import { EntityInvestigation } from './types'; +import { getKnowledgeBaseEntries } from '../get_knowledge_base_entries'; + +export type { EntityInvestigation }; + +export interface EntityInvestigationParameters { + entity: Record; + rcaContext: RootCauseAnalysisContext; + context: string; +} + +export async function investigateEntity( + parameters: EntityInvestigationParameters +): Promise { + const { + entity, + rcaContext, + rcaContext: { + inferenceClient, + connectorId, + start, + end, + esClient, + logger: parentLogger, + indices, + }, + context, + } = parameters; + const kuery = getEntityKuery(entity); + + const logger = parentLogger.get('investigateEntity'); + + logger.debug(() => `Investigating entity: ${JSON.stringify(parameters.entity)}`); + + const kbPromise = getKnowledgeBaseEntries({ + entity, + context, + rcaContext, + maxTokens: 4_000, + }).catch((error) => { + logger.error(`Could not fetch entries from knowledge base`); + logger.error(error); + return []; + }); + + const [{ dataStreams }, alerts, slos] = await getSignals({ ...parameters, kuery }); + + logger.debug( + () => + `Signals for entity ${JSON.stringify(entity)}: ${dataStreams.length} data streams, ${ + alerts.length + } alerts, ${slos.length} slos` + ); + + if (!dataStreams.length) { + return undefined; + } + + const fullAnalysis = await analyzeDataStreamsForEntity({ + start, + end, + esClient, + kuery, + dataStreams, + }); + + const truncatedAnalysis = sortAndTruncateAnalyzedFields(fullAnalysis); + + const kbEntries = await kbPromise; + + const { ownPatterns, patternsFromOtherEntities } = await analyzeLogPatterns({ + allAnalysis: [{ index: dataStreams, analysis: truncatedAnalysis }], + entity, + system: stringifySummaries(rcaContext), + cutoff: { + significance: 'high', + }, + rcaContext, + kbEntries, + }); + + logger.trace( + () => `Analyzed log patterns: ${JSON.stringify({ ownPatterns, patternsFromOtherEntities })}` + ); + + const entityReportPromise = Promise.all([ + describeEntity({ + inferenceClient, + analysis: truncatedAnalysis, + connectorId, + contextForEntityInvestigation: context, + entity, + ownPatterns, + kbEntries, + }), + describeLogPatterns({ + analysis: truncatedAnalysis, + connectorId, + contextForEntityInvestigation: context, + entity, + inferenceClient, + ownPatterns, + patternsFromOtherEntities, + kbEntries, + }), + ]).then(([entityDescription, logPatternDescription]) => { + return writeEntityInvestigationReport({ + connectorId, + inferenceClient, + entityDescription, + logPatternDescription, + contextForEntityInvestigation: context, + entity, + }).then((report) => { + return { + description: entityDescription, + logPatternDescription, + report, + }; + }); + }); + + const [entityReport, relatedEntitiesResults] = await Promise.all([ + entityReportPromise, + findRelatedEntities({ + connectorId, + end, + entity, + esClient, + index: indices.logs, + inferenceClient, + logger, + start, + context, + analysis: { + full: fullAnalysis, + truncated: truncatedAnalysis, + }, + ownPatterns, + patternsFromOtherEntities, + kbEntries, + }).then(async ({ searches, summaries, foundEntities }) => { + const report = await entityReportPromise; + + const { relatedEntities } = await extractRelatedEntities({ + entityReport: report.report, + summaries, + entity, + foundEntities, + context, + rcaContext, + }); + + return { + relatedEntities, + foundEntities, + searches, + summaries, + }; + }), + ]); + + return { + entity, + summary: [ + entityReport.description, + entityReport.logPatternDescription.content, + entityReport.report, + ].join('\n\n'), + relatedEntities: relatedEntitiesResults.relatedEntities, + attachments: { + alerts, + slos, + analysis: truncatedAnalysis, + ownPatterns, + patternsFromOtherEntities, + searches: relatedEntitiesResults.searches, + relatedEntitiesSummaries: relatedEntitiesResults.summaries, + kbEntries, + }, + }; +} + +async function getSignals({ + entity, + kuery, + rcaContext: { start, end, esClient, rulesClient, alertsClient, indices, spaceId }, +}: { + kuery: string; + entity: Record; + rcaContext: Pick< + RootCauseAnalysisContext, + 'start' | 'end' | 'esClient' | 'rulesClient' | 'alertsClient' | 'indices' | 'spaceId' + >; +}) { + return await Promise.all([ + getDataStreamsForEntity({ + esClient, + kuery, + index: indices.logs.concat(indices.traces), + }), + getAlertsForEntity({ entity, rulesClient, alertsClient, start, end, size: 10 }).then( + (alertsResponse) => { + return alertsResponse.hits.hits.map((hit) => hit._source!); + } + ), + getSlosForEntity({ + entity, + start, + end, + esClient, + size: 1000, + sloSummaryIndices: indices.sloSummaries, + spaceId, + }).then((slosResponse) => { + return slosResponse.hits.hits.map((hit) => hit._source); + }), + ]); +} + +async function analyzeDataStreamsForEntity({ + start, + end, + dataStreams, + esClient, + kuery, +}: { + start: number; + end: number; + kuery: string; + dataStreams: string[]; + esClient: ObservabilityElasticsearchClient; +}) { + const analysis = await analyzeDocuments({ + esClient, + start, + end, + index: dataStreams, + kuery, + }); + + return { + ...analysis, + fields: analysis.fields.filter((field) => !field.empty), + }; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/prompts.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/prompts.ts new file mode 100644 index 0000000000000..e9d042e88a6ec --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/prompts.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { formatEntity } from '../../util/format_entity'; +import { toBlockquote } from '../../util/to_blockquote'; + +export const getInvestigateEntityTaskPrompt = ({ + entity, + contextForEntityInvestigation, +}: { + entity: Record; + contextForEntityInvestigation: string; +}) => `## Entity-Based Investigation: Task Guide + +In the investigation process, you are currently investigating the entity +${formatEntity(entity)}. The context given for this investigation is: + +${toBlockquote(contextForEntityInvestigation)}`; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/types.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/types.ts new file mode 100644 index 0000000000000..e29735c894f22 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/types.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ParsedTechnicalFields } from '@kbn/rule-registry-plugin/common'; +import type { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import type { AnalyzeLogPatternOutput } from '../analyze_log_patterns'; +import type { RelatedEntityDescription } from '../find_related_entities/extract_related_entities'; +import type { RelatedEntityKeywordSearch } from '../find_related_entities/write_keyword_searches_for_related_entities'; +import type { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; + +export interface EntityInvestigation { + entity: Record; + summary: string; + relatedEntities: RelatedEntityDescription[]; + attachments: { + analysis: TruncatedDocumentAnalysis; + slos: Array< + Record & { + status: 'VIOLATED' | 'DEGRADED' | 'HEALTHY' | 'NO_DATA'; + } + >; + alerts: ParsedTechnicalFields[]; + searches: RelatedEntityKeywordSearch[]; + relatedEntitiesSummaries: string[]; + kbEntries: ScoredKnowledgeBaseEntry[]; + } & AnalyzeLogPatternOutput; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/observe_investigation_results/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/observe_investigation_results/index.ts new file mode 100644 index 0000000000000..c0b5367cded31 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/observe_investigation_results/index.ts @@ -0,0 +1,239 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { MessageRole } from '@kbn/inference-common'; +import { RCA_OBSERVE_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { RCA_PROMPT_CHANGES, RCA_PROMPT_ENTITIES, RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { ObservationToolMessage, RootCauseAnalysisContext } from '../../types'; +import { formatEntity } from '../../util/format_entity'; +import { getPreviouslyInvestigatedEntities } from '../../util/get_previously_investigated_entities'; +import { stringifySummaries } from '../../util/stringify_summaries'; +import { toBlockquote } from '../../util/to_blockquote'; +import { EntityInvestigation } from '../investigate_entity/types'; + +const INITIAL_OBSERVATION_TASK_GUIDE = `Your current task is to write observations based on the initial context. You +should acknowledge the context briefly, and mention key observations from the +initial context. + +Then, briefly describe what change you are looking for. Are the symptoms: + +- rapid, or gradual onset? +- subtle or prounounced? + +If possible, mention the time of the change. + +When considering the initial context, reason about relevant changes to observe, +such as short-lived versus persistent changes or singular events, like scale +events, rollouts, or configuration changes. + +After, taking into account the capabilities you have, plan for next steps. + +Describe the next step, which is to investigate the entity found in the initial +context. Only mention the entity (as a field/value). Do not mention any +additional filters. + +Be brief, accurate, and critical.`; + +const INVESTIGATION_ADDENDUM = ` +**Task Guide: Observe the investigation results** + +You will receive one or more investigations. These investigations mention: +- a general characterization of the entity based on its data +- relevant log patterns +- other signals, like SLOs or alerts +- possibly related entities, and investigation suggestions + +First, you should briefly acknowledge the initial context of the investigation +and where it stands. + +Next, you should note key observations from the investigations, and how they relate +to the ongoing investigation. + +After, you should generate a timeline of significant events. For this timeline, +include events from previous observations. Additionally, include significant +events from the inspected investigations. Group events together in a topic +if needed. Significant events are things like: an increase in errors, deployment +events, a drop to zero for access logs, etc. In most cases, you do not want to +mention individual log messages, unless it is a particularly significant event +by itself. + +For each event, mention: + +- the timestamp of the event +- the nature of the change, if applicable +- data from the event, such as specific log patterns, alerts or slos +- the meaning of the event and how it is related to the initial context + +Do not include: +- the time range from the investigation itself (start/end) +- other events that occurred during the investigation itself, like running +log analysis or other patterns + +## Correlating significant events + +When correlating significant events, pay close attention to the timestamp of +the mentioned change, and how it correlates to the timestamp of the change you +want to correlate it to, such as the start time of an alert. An alert might be +delayed, but if you see many changes around a specific timestamp, and some of +them being significantly earlier, or later, the latter group is likely not +relevant. + +## Context and reasoning + +Next, use the timeline of events and the new observations to revise your +analysis of the initial context and the ongoing investigation. Reason about +how changes could be related: are they close in time, or far removed, compared +to others? Is the type of change similar? Is the magnitude of the change similar?`; + +const SUGGEST_NEXT_STEPS_PROMPT = ` +Next, consider next steps. it's always important to contextualize the significant +in the initial context of the investigation. Focus on your strongest pieces of +evidence. Your observations should be related to finding out the cause of the +initial context of the investigation - you should not concern yourself with the +impact on _other_ entities. + +Suggest to conclude the process when: + +- there is a clear and obvious root cause +- you have investigated more than 10 entities +- OR you cannot find any unhealthy entities +- there are no more entities to investigate + +If the conclusion is you need to continue your investigation, mention the entities +that should be investigated. Do this only if there is a significant change one of +the related entities will give you new insights into the root cause (instead of +just the impact). DO NOT investigate an entity more than once.`; + +const CONCLUDE_PROCESS_PROMPT = ` +You must suggest to conclude the process and write the final report, as your +capabilities do not allow you go investigate more entities.`; + +function getInitialPrompts(initialContext: string) { + return { + system: `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES} + + ${RCA_PROMPT_CHANGES}`, + input: `## Context + + ${initialContext} + + ${INITIAL_OBSERVATION_TASK_GUIDE}`, + }; +} + +function getObserveInvestigationsPrompts({ + investigations, + summaries, + rcaContext, +}: { + investigations: EntityInvestigation[]; + summaries: ObservationStepSummary[]; + rcaContext: RootCauseAnalysisContext; +}) { + const previouslyInvestigatedEntities = getPreviouslyInvestigatedEntities(rcaContext); + + const canContinue = + summaries.length <= 5 && + investigations.filter((investigation) => 'summary' in investigation).length <= 10; + + const investigationsPrompt = `Observe the following investigations that recently concluded: + ${investigations + .map((investigation, index) => { + return `## ${index + 1}: investigation of ${formatEntity(investigation.entity)} + + ${toBlockquote(investigation.summary)} + + ${ + investigation.relatedEntities.length + ? `### Relationships to ${formatEntity(investigation.entity)} + + ${toBlockquote(JSON.stringify(investigation.relatedEntities))} + + ` + : `` + } + `; + }) + .join('\n\n')} + + ${INVESTIGATION_ADDENDUM} + + ${ + canContinue + ? `${SUGGEST_NEXT_STEPS_PROMPT} + + ${ + previouslyInvestigatedEntities.length + ? `The following entities have been investigated previously. + Do not investigate them again: + + ${previouslyInvestigatedEntities.map((entity) => `- ${JSON.stringify(entity)}`).join('\n')}` + : `` + } + + ` + : CONCLUDE_PROCESS_PROMPT + } + + `; + + const systemPrompt = `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES} + + ${stringifySummaries(rcaContext)}`; + + return { + system: systemPrompt, + input: investigationsPrompt, + }; +} + +export interface ObservationStepSummary { + investigations: EntityInvestigation[]; + content: string; +} + +export function observeInvestigationResults({ + rcaContext, + rcaContext: { logger, events, initialContext, inferenceClient, connectorId }, + investigations, +}: { + rcaContext: RootCauseAnalysisContext; + investigations: EntityInvestigation[]; +}): Promise { + const summaries = events + .filter((event): event is ObservationToolMessage => { + return event.role === MessageRole.Tool && event.name === RCA_OBSERVE_TOOL_NAME; + }) + .map((event) => event.data); + + logger.debug( + () => + `Observing ${investigations.length} investigations (${summaries.length} previous summaries)` + ); + + const { system, input } = investigations.length + ? getObserveInvestigationsPrompts({ summaries, investigations, rcaContext }) + : getInitialPrompts(initialContext); + + return inferenceClient + .output({ + id: 'observe', + system, + input, + connectorId, + }) + .then((outputCompleteEvent) => { + return { + content: outputCompleteEvent.content, + investigations, + }; + }); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts new file mode 100644 index 0000000000000..58ef6f4ab5d04 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { RCA_PROMPT_SIGNIFICANT_EVENTS, RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { formatEntity } from '../../util/format_entity'; +import { toBlockquote } from '../../util/to_blockquote'; +import { LogPatternDescription } from '../describe_log_patterns'; +import { getInvestigateEntityTaskPrompt } from '../investigate_entity/prompts'; + +export async function writeEntityInvestigationReport({ + inferenceClient, + connectorId, + entity, + contextForEntityInvestigation, + entityDescription, + logPatternDescription, +}: { + inferenceClient: InferenceClient; + connectorId: string; + entity: Record; + contextForEntityInvestigation: string; + entityDescription: string; + logPatternDescription: LogPatternDescription; +}): Promise { + const system = RCA_SYSTEM_PROMPT_BASE; + + const shouldGenerateTimeline = logPatternDescription.interestingPatternCount > 0; + + let input = `${getInvestigateEntityTaskPrompt({ entity, contextForEntityInvestigation })} + + ## Entity description + + ${toBlockquote(entityDescription)} + + ## Log pattern analysis + + ${toBlockquote(logPatternDescription.content)} + + # Current task + + Your current task is to write a report the investigation into ${formatEntity(entity)}. + The log pattern analysis and entity description will be added to your report (at the + top), so you don't need to repeat anything in it.`; + + if (shouldGenerateTimeline) { + input += `${RCA_PROMPT_SIGNIFICANT_EVENTS}\n\n`; + } + + input += `## Context and reasoning + + Reason about the role that the entity plays in the investigation, given the context. + mention evidence (hard pieces of data) when reasoning. + + Do not suggest next steps - this will happen in a follow-up task.`; + + if (shouldGenerateTimeline) { + input += `## Format + + Your reply should only contain two sections: + + - Timeline of significant events + - Context and reasoning + `; + } else { + input += `## Format + Your reply should only contain one section: + - Context and reasoning + `; + } + + const response = await inferenceClient.output({ + id: 'generate_entity_report', + connectorId, + input, + system, + }); + + return response.content; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_final_report/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_final_report/index.ts new file mode 100644 index 0000000000000..db7aa9f3b7aa3 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_final_report/index.ts @@ -0,0 +1,191 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RCA_PROMPT_TIMELINE_GUIDE, RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { stringifySummaries } from '../../util/stringify_summaries'; + +const SYSTEM_PROMPT_ADDENDUM = ` +# Guide: Writing a Root Cause Analysis (RCA) Report + +A Root Cause Analysis (RCA) report is the final step in a thorough +investigation. Its purpose is to provide a clear, evidence-backed explanation of +the underlying cause of an issue, as well as the impact. Even if no definitive +root cause is identified, the report should reflect the findings, the hypotheses +considered, and why certain assumptions were rejected. This guide will help +structure an RCA that distinguishes between cause and effect, organizes +evidence, and presents a timeline of key events. + +--- + +## 1. Introduction + +Start by summarizing the reason for the investigation. Provide a brief overview +of the incident, the affected services or entities, and the initial alerts or +issues that triggered the investigation. + +- **What prompted the investigation?** +- **Which entities were investigated?** +- **Was there a specific hypothesis proposed at the outset?** + +### Example: +- **Overview:** This RCA report investigates the elevated error rates in +\`myservice\` and its downstream dependencies, first identified through an SLO +breach for the \`/api/submit\` endpoint. The investigation considered multiple +entities and possible causes, including resource exhaustion and upstream service +failures. + +--- + +## 2. Investigation Summary + +Summarize the key steps of the investigation, outlining: +- **What hypotheses were proposed and why.** +- **Which entities were investigated (e.g., \`myservice\`, \`myotherservice\`, +\`notification-service\`).** +- **Which hypotheses were discarded and why.** + +For each hypothesis, present the supporting or contradicting evidence. + +- **Strong Indicators:** Clear, repeated evidence pointing toward or against a +hypothesis. +- **Weak Indicators:** Inconsistent or ambiguous data that did not provide +conclusive answers. + +#### Example Format: +- **Hypothesis 1:** Resource exhaustion in \`myservice\` caused elevated error +rates. + - **Evidence:** + - **Strong:** Memory usage exceeded 90% during the incident. + - **Weak:** CPU usage remained stable, making resource exhaustion a partial +explanation. + +- **Hypothesis 2:** Upstream latency from \`myotherservice\` caused delays. + - **Evidence:** + - **Strong:** API logs showed frequent retries and timeouts from +\`myotherservice\`. + - **Weak:** No errors were observed in \`myotherservice\` logs, suggesting an +issue isolated to \`myservice\`. + +--- + +## 3. Cause and Effect + +Differentiate between the **cause** (what initiated the issue) and the +**effect** (the impact or symptoms seen across the system). The cause should +focus on the root, while the effect describes the wider system response or +failure. + +- **Root Cause:** Identify the underlying problem, supported by strong evidence. +If no root cause is found, clearly state that the investigation did not lead to +a conclusive root cause. + +- **Impact:** Describe the downstream effects on other services, performance +degradation, or SLO violations. + +#### Example: +- **Cause:** The root cause of the elevated error rate was identified as a +memory leak in \`myservice\` that gradually led to resource exhaustion. +- **Effect:** This led to elevated latency and increased error rates at the +\`/api/submit\` endpoint, impacting downstream services like +\`notification-service\` that rely on responses from \`myservice\`. + +--- + +## 4. Evidence for Root Cause + +Present a structured section summarizing all the evidence that supports the +identified root cause. If no root cause is identified, outline the most +significant findings that guided or limited the investigation. + +- **Log Patterns:** Describe any abnormal log patterns observed, including +notable change points. +- **Alerts and SLOs:** Mention any alerts or breached SLOs that were triggered, +including their relevance to the investigation. +- **Data Analysis:** Include any data trends or patterns that were analyzed +(e.g., resource usage spikes, network traffic). + +#### Example: +- **Memory Usage:** Logs showed a steady increase in memory consumption starting +at 10:00 AM, peaking at 12:00 PM, where memory usage surpassed 90%, triggering +the alert. +- **Error Rate Logs:** Error rates for \`/api/submit\` began increasing around +11:30 AM, correlating with the memory pressure in \`myservice\`. +- **API Logs:** \`myotherservice\` API logs showed no internal errors, ruling out +an upstream dependency as the primary cause. + +--- + +## 5. Proposed Impact + +Even if the root cause is clear, it is important to mention the impact of the +issue on the system, users, and business operations. This includes: +- **Affected Services:** Identify the services impacted (e.g., downstream +dependencies). +- **Performance Degradation:** Describe any SLO breaches or performance +bottlenecks. +- **User Impact:** Explain how users or clients were affected (e.g., higher +latency, failed transactions). + +#### Example: +- **Impact:** The memory leak in \`myservice\` caused service degradation over a +2-hour window. This affected \`/api/submit\`, causing delays and failed +requests, ultimately impacting user-facing services relying on that endpoint. + +--- + +## 6. Timeline of Significant Events + +${RCA_PROMPT_TIMELINE_GUIDE} + +--- + +## 7. Conclusion and Next Steps + +Summarize the conclusions of the investigation: +- If a root cause was identified, confirm it with the strongest supporting +evidence. +- If no root cause was found, state that clearly and suggest areas for further +investigation or monitoring. + +Finally, outline the next steps: +- **Fixes or Mitigations:** Recommend any immediate actions (e.g., patch +deployment, configuration changes). +- **Monitoring Improvements:** Suggest new alerts or monitoring metrics based on +lessons learned. +- **Further Investigations:** If necessary, propose any follow-up investigations +to gather more evidence. + +#### Example: +- **Conclusion:** The root cause of the incident was a memory leak in +\`myservice\`, leading to resource exhaustion and elevated error rates at +\`/api/submit\`. The leak has been patched, and monitoring has been improved to +detect memory spikes earlier. +- **Next Steps:** Monitor memory usage for the next 24 hours to ensure no +recurrence. Investigate adding a memory ceiling for \`myservice\` to prevent +future resource exhaustion.`; + +export async function writeFinalReport({ + rcaContext, +}: { + rcaContext: RootCauseAnalysisContext; +}): Promise { + const { inferenceClient, connectorId } = rcaContext; + + return await inferenceClient + .output({ + id: 'write_final_report', + connectorId, + system: `${RCA_SYSTEM_PROMPT_BASE} + + ${SYSTEM_PROMPT_ADDENDUM}`, + input: `Write the RCA report, based on the observations. + + ${stringifySummaries(rcaContext)}`, + }) + .then((event) => event.content); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tools.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tools.ts new file mode 100644 index 0000000000000..8c3082aa320c4 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tools.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis/tool_names'; + +export const RCA_TOOLS = { + [RCA_OBSERVE_TOOL_NAME]: { + description: `Request an observation from another agent on + the results of the returned investigations. The title should + cover key new observations from the initial context or + completed investigations, not anything about next steps.`, + schema: { + type: 'object', + properties: { + title: { + type: 'string', + description: `A short title w/ the key new observations that will be displayed on top of a collapsible panel.`, + }, + }, + required: ['title'], + }, + }, + [RCA_END_PROCESS_TOOL_NAME]: { + description: `End the RCA process by requesting a + written report from another agent`, + schema: { + type: 'object', + properties: { + endProcess: { + type: 'boolean', + }, + }, + required: ['endProcess'], + }, + }, + [RCA_INVESTIGATE_ENTITY_TOOL_NAME]: { + description: `Investigate an entity`, + schema: { + type: 'object', + properties: { + context: { + type: 'string', + description: `Context that will be used in the investigation of the entity. Mention the initial context + of the investigation, a very short summary of the last observation if applicable, and pieces + of data that can be relevant for the investigation into the entity, such as timestamps or + keywords`, + }, + entity: { + type: 'object', + description: `The entity you want to investigate, such as a service. Use + the Elasticsearch field names and values. For example, for services, use + the following structure: ${JSON.stringify({ + entity: { field: 'service.name', value: 'opbeans-java' }, + })}`, + properties: { + field: { + type: 'string', + }, + value: { + type: 'string', + }, + }, + required: ['field', 'value'], + }, + }, + required: ['context', 'entity'], + }, + }, +} as const; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/types.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/types.ts new file mode 100644 index 0000000000000..6b6fa1886309c --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/types.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + ToolMessage, + UserMessage, + ToolCallsOf, + ToolChoice, + AssistantMessageOf, +} from '@kbn/inference-common'; +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { AlertsClient } from '@kbn/rule-registry-plugin/server'; +import { RulesClient } from '@kbn/alerting-plugin/server'; +import { ObservabilityAIAssistantClient } from '@kbn/observability-ai-assistant-plugin/server'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis'; +import { ObservationStepSummary } from './tasks/observe_investigation_results'; +import { EntityInvestigation } from './tasks/investigate_entity'; +import { SignificantEventsTimeline } from './tasks/generate_timeline'; +import { RCA_TOOLS } from './tools'; + +export type EndProcessToolMessage = ToolMessage< + typeof RCA_END_PROCESS_TOOL_NAME, + { + report: string; + timeline: SignificantEventsTimeline; + } +>; + +export type ObservationToolMessage = ToolMessage< + typeof RCA_OBSERVE_TOOL_NAME, + { + content: string; + }, + ObservationStepSummary +>; + +export type InvestigateEntityToolMessage = ToolMessage< + typeof RCA_INVESTIGATE_ENTITY_TOOL_NAME, + Pick, + { attachments: EntityInvestigation['attachments'] } +>; + +export type ToolErrorMessage = ToolMessage< + 'error', + { + error: { + message: string; + }; + } +>; + +export type RootCauseAnalysisEvent = + | RootCauseAnalysisToolMessage + | ToolErrorMessage + | UserMessage + | AssistantMessageOf<{ + tools: typeof RCA_TOOLS; + toolChoice?: ToolChoice; + }>; + +export type RootCauseAnalysisToolRequest< + TToolName extends keyof typeof RCA_TOOLS = keyof typeof RCA_TOOLS +> = ToolCallsOf<{ + tools: Pick; +}>['toolCalls'][number]; + +export type RootCauseAnalysisToolMessage = + | EndProcessToolMessage + | InvestigateEntityToolMessage + | ObservationToolMessage; + +export interface RootCauseAnalysisContext { + initialContext: string; + start: number; + end: number; + events: RootCauseAnalysisEvent[]; + indices: { + logs: string[]; + traces: string[]; + sloSummaries: string[]; + }; + inferenceClient: InferenceClient; + tokenLimit: number; + connectorId: string; + esClient: ObservabilityElasticsearchClient; + alertsClient: AlertsClient; + rulesClient: RulesClient; + logger: Logger; + spaceId: string; + observabilityAIAssistantClient: ObservabilityAIAssistantClient; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/call_tools.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/call_tools.ts new file mode 100644 index 0000000000000..046d6d401c33a --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/call_tools.ts @@ -0,0 +1,177 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + Message, + ToolDefinition, + ToolChoice, + ToolCallsOf, + withoutChunkEvents, + withoutTokenCountEvents, + ToolMessage, + MessageOf, + MessageRole, +} from '@kbn/inference-common'; +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { + defer, + last, + merge, + Observable, + of, + OperatorFunction, + share, + switchMap, + toArray, +} from 'rxjs'; + +interface CallToolOptions extends CallToolTools { + system: string; + messages: Message[]; + inferenceClient: InferenceClient; + connectorId: string; + logger: Logger; +} + +interface CallToolTools { + tools: Record; + toolChoice?: ToolChoice; +} + +type CallbackOf< + TCallToolTools extends CallToolTools, + TEmittedMessage extends Message +> = (parameters: { + messages: Message[]; + toolCalls: ToolCallsOf['toolCalls']; +}) => Observable; + +type GetNextRequestCallback = ({ + messages, + system, +}: { + messages: Message[]; + system: string; +}) => { system: string; messages: Message[] } & TCallToolTools; + +export function callTools( + { system, messages, inferenceClient, connectorId, tools, toolChoice, logger }: TCallToolOptions, + callback: CallbackOf +): Observable>; + +export function callTools< + TCallToolOptions extends Omit = never, + TCallToolTools extends CallToolTools = never, + TEmittedMessage extends Message = never +>( + options: TCallToolOptions, + getNextRequest: GetNextRequestCallback, + callback: CallbackOf +): Observable; + +export function callTools( + { system, messages, inferenceClient, connectorId, tools, toolChoice, logger }: CallToolOptions, + ...callbacks: + | [GetNextRequestCallback, CallbackOf] + | [CallbackOf] +): Observable { + const callback = callbacks.length === 2 ? callbacks[1] : callbacks[0]; + + const getNextRequest = + callbacks.length === 2 + ? callbacks[0] + : (next: { messages: Message[]; system: string }) => { + return { + ...next, + tools, + toolChoice, + }; + }; + + const nextRequest = getNextRequest({ system, messages }); + + const chatComplete$ = defer(() => + inferenceClient.chatComplete({ + connectorId, + stream: true, + ...nextRequest, + }) + ); + + const asCompletedMessages$ = chatComplete$.pipe( + withoutChunkEvents(), + withoutTokenCountEvents(), + switchMap((event) => { + return of({ + role: MessageRole.Assistant as const, + content: event.content, + toolCalls: event.toolCalls, + }); + }) + ); + + const withToolResponses$ = asCompletedMessages$ + .pipe( + switchMap((message) => { + if (message.toolCalls.length) { + return merge( + of(message), + callback({ toolCalls: message.toolCalls, messages: messages.concat(message) }) + ); + } + return of(message); + }) + ) + .pipe(handleNext()); + + return withToolResponses$; + + function handleNext(): OperatorFunction { + return (source$) => { + const shared$ = source$.pipe(share()); + + const next$ = merge( + shared$, + shared$.pipe( + toArray(), + last(), + switchMap((nextMessages) => { + logger.debug(() => + JSON.stringify( + nextMessages.map((message) => { + return { + role: message.role, + toolCalls: 'toolCalls' in message ? message.toolCalls : undefined, + toolCallId: 'toolCallId' in message ? message.toolCallId : undefined, + }; + }) + ) + ); + + if (nextMessages[nextMessages.length - 1].role !== MessageRole.Assistant) { + const options: CallToolOptions = { + system, + connectorId, + inferenceClient, + messages: messages.concat(nextMessages), + tools, + toolChoice, + logger, + }; + const after$ = callTools(options, getNextRequest, callback); + return after$; + } + return of(); + }) + ) + ); + + return next$; + }; + } +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/chunk_output_calls.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/chunk_output_calls.ts new file mode 100644 index 0000000000000..0a174b6451604 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/chunk_output_calls.ts @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { encode } from 'gpt-tokenizer'; +import { uniqueId } from 'lodash'; + +interface TextWithId { + id: string; + text: string; +} + +interface Parameters { + system: string; + input: string; + tokenLimit: number; +} + +interface ChunkedOutputRequest { + input: string; + system: string; +} + +export function chunkOutputCalls({}: Parameters & { texts: string[] }): Array< + ChunkedOutputRequest & { + texts: string[]; + } +>; + +export function chunkOutputCalls({}: Parameters & { texts: TextWithId[] }): Array< + ChunkedOutputRequest & { + texts: TextWithId[]; + } +>; + +export function chunkOutputCalls({ + system, + input, + texts, + tokenLimit, +}: Parameters & { + texts: string[] | TextWithId[]; +}) { + const inputAndSystemPromptCount = encode(system).length + encode(input).length; + + if (!texts.length) { + return [{ system, input, texts: [] }]; + } + + const textWithIds = texts.map((text) => { + if (typeof text === 'string') { + return { + id: uniqueId(), + text, + }; + } + return text; + }); + + const textsWithCount = textWithIds.map(({ text, id }) => ({ + tokenCount: encode(text).length, + text, + id, + })); + + const chunks: Array<{ tokenCount: number; texts: TextWithId[] }> = []; + + textsWithCount.forEach(({ text, id, tokenCount }) => { + let chunkWithRoomLeft = chunks.find((chunk) => { + return chunk.tokenCount + tokenCount <= tokenLimit; + }); + + if (!chunkWithRoomLeft) { + chunkWithRoomLeft = { texts: [], tokenCount: inputAndSystemPromptCount }; + chunks.push(chunkWithRoomLeft); + } + chunkWithRoomLeft.texts.push({ text, id }); + chunkWithRoomLeft.tokenCount += tokenCount; + }); + + const hasTextWithIds = texts.some((text) => typeof text !== 'string'); + + return chunks.map((chunk) => { + const textsForChunk = hasTextWithIds + ? chunk.texts + : chunk.texts.map((text) => (typeof text === 'string' ? text : text.text)); + + return { + system, + input, + texts: textsForChunk, + }; + }); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/format_entity.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/format_entity.ts new file mode 100644 index 0000000000000..d4fa1e545653e --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/format_entity.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export function formatEntity(entity: Record) { + return Object.entries(entity) + .map(([field, value]) => `${field}:${value}`) + .join('/'); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/get_previously_investigated_entities.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/get_previously_investigated_entities.ts new file mode 100644 index 0000000000000..e42a6a8039e23 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/get_previously_investigated_entities.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { MessageRole } from '@kbn/inference-common'; +import { RCA_INVESTIGATE_ENTITY_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { InvestigateEntityToolMessage, RootCauseAnalysisContext } from '../types'; + +export function getPreviouslyInvestigatedEntities({ + events, +}: Pick) { + const investigationToolResponses = events.filter( + (event): event is InvestigateEntityToolMessage => { + return event.role === MessageRole.Tool && event.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME; + } + ); + + return investigationToolResponses.map((event) => event.response.entity); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/serialize_knowledge_base_entries.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/serialize_knowledge_base_entries.ts new file mode 100644 index 0000000000000..39bc1a5b9a603 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/serialize_knowledge_base_entries.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ScoredKnowledgeBaseEntry } from '../tasks/get_knowledge_base_entries'; +import { toBlockquote } from './to_blockquote'; + +export function serializeKnowledgeBaseEntries(entries: ScoredKnowledgeBaseEntry[]) { + if (!entries.length) { + return `## Knowledge base + + No relevant knowledge base entries were found. + `; + } + + const serializedEntries = entries + .filter((entry) => entry.score >= 3) + .map( + (entry) => `## Entry \`${entry.id}\ (score: ${entry.score}, ${ + entry.truncated ? `truncated` : `not truncated` + }) + + ${toBlockquote(entry.text)}` + ); + + return `## Knowledge base + + The following relevant entries were found in the knowledge base + + ${serializedEntries.join('\n\n')}`; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/stringify_summaries.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/stringify_summaries.ts new file mode 100644 index 0000000000000..80e2ab85a408b --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/stringify_summaries.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { compact } from 'lodash'; +import { MessageRole } from '@kbn/inference-common'; +import { RCA_OBSERVE_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { formatEntity } from './format_entity'; +import { toBlockquote } from './to_blockquote'; +import { ObservationToolMessage, RootCauseAnalysisContext } from '../types'; + +export function stringifySummaries({ events }: RootCauseAnalysisContext): string { + const summaries = events + .filter((event): event is ObservationToolMessage => { + return event.role === MessageRole.Tool && event.name === RCA_OBSERVE_TOOL_NAME; + }) + .map((event) => event.data); + + if (!summaries.length) { + return `# Previous observations + + No previous observations`; + } + + return `# Previous observations + + ${summaries.map((summary, index) => { + const header = `## Observation #${index + 1}`; + + const entitiesHeader = summary.investigations.length + ? `### Investigated entities + + ${summary.investigations + .map((investigation) => `- ${formatEntity(investigation.entity)}`) + .join('\n')}` + : undefined; + + const summaryBody = `### Summary + + ${toBlockquote(summary.content)}`; + + return compact([header, entitiesHeader, summaryBody]).join('\n\n'); + })}`; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/to_blockquote.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/to_blockquote.ts new file mode 100644 index 0000000000000..38af158de611b --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/to_blockquote.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export function toBlockquote(input: string): string { + return input + .split('\n') + .map((line) => `> ${line}`) + .join('\n'); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts new file mode 100644 index 0000000000000..76fa0fcc379a3 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { MessageRole, ToolCallsOf } from '@kbn/inference-common'; +import { entityQuery } from '@kbn/observability-utils-common/es/queries/entity_query'; +import { RCA_INVESTIGATE_ENTITY_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { isEqual } from 'lodash'; +import { getEntitiesByFuzzySearch } from '@kbn/observability-utils-server/entities/get_entities_by_fuzzy_search'; +import { RCA_TOOLS } from '../tools'; +import { + InvestigateEntityToolMessage, + RootCauseAnalysisContext, + RootCauseAnalysisToolRequest, +} from '../types'; +import { formatEntity } from './format_entity'; + +interface EntityExistsResultExists { + exists: true; + entity: Record; +} + +interface EntityExistsResultDoesNotExist { + exists: false; + entity: Record; + suggestions: string[]; +} + +type EntityExistsResult = EntityExistsResultExists | EntityExistsResultDoesNotExist; + +export async function validateInvestigateEntityToolCalls({ + rcaContext, + toolCalls, +}: { + rcaContext: Pick; + toolCalls: RootCauseAnalysisToolRequest[]; +}) { + const { events, esClient, indices, start, end } = rcaContext; + + const previouslyInvestigatedEntities = events + .filter( + (event): event is InvestigateEntityToolMessage => + event.role === MessageRole.Tool && event.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME + ) + .map((toolResponse) => toolResponse.response.entity); + + const investigateEntityToolCalls = toolCalls.filter( + ( + toolCall + ): toolCall is ToolCallsOf<{ + tools: Pick; + }>['toolCalls'][number] => toolCall.function.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME + ); + + if (!investigateEntityToolCalls.length) { + return []; + } + + const entitiesToInvestigate = investigateEntityToolCalls.map((toolCall) => { + const { entity: entityToInvestigate } = toolCall.function.arguments; + return { + [entityToInvestigate.field]: entityToInvestigate.value, + }; + }); + const entityExistsResponses: EntityExistsResult[] = await Promise.all( + entitiesToInvestigate.map(async (entity) => { + const response = await esClient.search('find_data_for_entity', { + track_total_hits: 1, + size: 0, + timeout: '1ms', + index: indices.logs.concat(indices.traces), + query: { + bool: { + filter: [...entityQuery(entity)], + }, + }, + }); + + const exists = response.hits.total.value > 0; + if (!exists) { + return getEntitiesByFuzzySearch({ + start, + end, + esClient, + index: indices.logs.concat(indices.traces), + entity, + }).then((suggestions) => { + return { + entity, + exists, + suggestions, + }; + }); + } + + return { entity, exists }; + }) + ); + + const alreadyInvestigatedEntities = entitiesToInvestigate.filter((entity) => { + return previouslyInvestigatedEntities.some((prevEntity) => isEqual(entity, prevEntity)); + }); + + const errors = [ + ...entityExistsResponses + .filter( + (entityExistsResult): entityExistsResult is EntityExistsResultDoesNotExist => + !entityExistsResult.exists + ) + .map(({ suggestions, entity }) => { + return `Entity ${formatEntity( + entity + )} does not exist. Did you mean one of ${suggestions.join(', ')}?`; + }), + ...alreadyInvestigatedEntities.map((entity) => { + return `Entity ${formatEntity(entity)} was already investigated before.`; + }), + ]; + + return errors; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/tsconfig.json b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/tsconfig.json new file mode 100644 index 0000000000000..59f73df4273c8 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/observability-utils-common", + "@kbn/alerting-plugin", + "@kbn/rule-registry-plugin", + "@kbn/inference-plugin", + "@kbn/logging", + "@kbn/calculate-auto", + "@kbn/observability-ai-assistant-plugin", + "@kbn/inference-common", + "@kbn/observability-ai-common", + "@kbn/observability-utils-server", + ] +} diff --git a/x-pack/packages/observability/synthetics_test_data/README.md b/x-pack/solutions/observability/packages/synthetics_test_data/README.md similarity index 100% rename from x-pack/packages/observability/synthetics_test_data/README.md rename to x-pack/solutions/observability/packages/synthetics_test_data/README.md diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/index.ts b/x-pack/solutions/observability/packages/synthetics_test_data/index.ts new file mode 100644 index 0000000000000..bf58a63025aa9 --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { makeUpSummary, makeDownSummary } from './src/make_summaries'; +export * from './src/e2e'; diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/jest.config.js b/x-pack/solutions/observability/packages/synthetics_test_data/jest.config.js new file mode 100644 index 0000000000000..1d9e9717d3e40 --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/synthetics_test_data'], +}; diff --git a/x-pack/packages/observability/synthetics_test_data/kibana.jsonc b/x-pack/solutions/observability/packages/synthetics_test_data/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/synthetics_test_data/kibana.jsonc rename to x-pack/solutions/observability/packages/synthetics_test_data/kibana.jsonc diff --git a/x-pack/packages/observability/synthetics_test_data/package.json b/x-pack/solutions/observability/packages/synthetics_test_data/package.json similarity index 100% rename from x-pack/packages/observability/synthetics_test_data/package.json rename to x-pack/solutions/observability/packages/synthetics_test_data/package.json diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/parse_args_params.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/parse_args_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/parse_args_params.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/parse_args_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/record_video.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/record_video.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/test_reporter.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/test_reporter.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/test_reporter.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/test_reporter.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/utils.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/utils.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/utils.ts diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/index.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/index.ts new file mode 100644 index 0000000000000..89a1c34e32586 --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { recordVideo } from './helpers/record_video'; +export { SyntheticsRunner } from './helpers/synthetics_runner'; +export { argv } from './helpers/parse_args_params'; +export { readKibanaConfig } from './tasks/read_kibana_config'; diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/es_archiver.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/es_archiver.ts new file mode 100644 index 0000000000000..46000acd32e9e --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/es_archiver.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import Path from 'path'; +import { execSync } from 'child_process'; +import { REPO_ROOT } from '@kbn/repo-info'; + +const ES_ARCHIVE_DIR = './fixtures/es_archiver'; + +// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https +const NODE_TLS_REJECT_UNAUTHORIZED = '1'; + +export const esArchiverLoad = (folder: string) => { + const path = Path.join(ES_ARCHIVE_DIR, folder); + execSync( + `node ${REPO_ROOT}/scripts/es_archiver load "${path}" --config ${REPO_ROOT}/test/functional/config.base.js`, + { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } + ); +}; + +export const esArchiverUnload = (folder: string) => { + const path = Path.join(ES_ARCHIVE_DIR, folder); + execSync( + `node ${REPO_ROOT}/scripts/es_archiver unload "${path}" --config ${REPO_ROOT}/test/functional/config.base.js`, + { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } + ); +}; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/tasks/read_kibana_config.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/read_kibana_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/tasks/read_kibana_config.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/read_kibana_config.ts diff --git a/x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts similarity index 99% rename from x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts index a44ffc15c28ec..21272cfe792e2 100644 --- a/x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts +++ b/x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts @@ -235,4 +235,7 @@ const commons = { }, }, }, + meta: { + space_id: 'default', + }, }; diff --git a/x-pack/packages/observability/synthetics_test_data/src/utils.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/utils.ts similarity index 100% rename from x-pack/packages/observability/synthetics_test_data/src/utils.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/utils.ts diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/tsconfig.json b/x-pack/solutions/observability/packages/synthetics_test_data/tsconfig.json new file mode 100644 index 0000000000000..957d814a9aa90 --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/apm-plugin", + "@kbn/es-archiver", + "@kbn/repo-info", + ] +} diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/jest_setup.js b/x-pack/solutions/observability/plugins/exploratory_view/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/jest_setup.js rename to x-pack/solutions/observability/plugins/exploratory_view/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/main.js b/x-pack/solutions/observability/plugins/exploratory_view/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/main.js rename to x-pack/solutions/observability/plugins/exploratory_view/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/observability/.storybook/preview.js b/x-pack/solutions/observability/plugins/exploratory_view/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/.storybook/preview.js rename to x-pack/solutions/observability/plugins/exploratory_view/.storybook/preview.js diff --git a/x-pack/solutions/observability/plugins/exploratory_view/README.md b/x-pack/solutions/observability/plugins/exploratory_view/README.md new file mode 100644 index 0000000000000..c3aa6d2d36c7d --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/README.md @@ -0,0 +1,27 @@ +# Exploratory View plugin + +A shared component for visualizing observability data types via lens embeddable. [For further details.](./public/components/exploratory_view/README.md) + +## Unit testing + +Note: Run the following commands from `kibana/x-pack/solutions/observability/plugins/exploratory_view`. + +### Run unit tests + +```bash +npx jest --watch +``` + +### Update snapshots + +```bash +npx jest --updateSnapshot +``` + +### Coverage + +HTML coverage report can be found in target/coverage/jest after tests have run. + +```bash +open target/coverage/jest/index.html +``` diff --git a/x-pack/plugins/observability_solution/exploratory_view/common/annotations.ts b/x-pack/solutions/observability/plugins/exploratory_view/common/annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/common/annotations.ts rename to x-pack/solutions/observability/plugins/exploratory_view/common/annotations.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/common/i18n.ts b/x-pack/solutions/observability/plugins/exploratory_view/common/i18n.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/common/i18n.ts rename to x-pack/solutions/observability/plugins/exploratory_view/common/i18n.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/common/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/common/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/common/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/common/processor_event.ts b/x-pack/solutions/observability/plugins/exploratory_view/common/processor_event.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/common/processor_event.ts rename to x-pack/solutions/observability/plugins/exploratory_view/common/processor_event.ts diff --git a/x-pack/solutions/observability/plugins/exploratory_view/e2e/README.md b/x-pack/solutions/observability/plugins/exploratory_view/e2e/README.md new file mode 100644 index 0000000000000..58dd5d0f8957f --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/README.md @@ -0,0 +1,15 @@ +## How to run these tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/exploratory_view/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From this directory, `~/x-pack/solutions/observability/plugins/exploratory_view/e2e`, you can now run `node ../../../../../scripts/functional_test_runner --config synthetics_run.ts`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/exploratory_view.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/exploratory_view.ts similarity index 98% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/exploratory_view.ts rename to x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/exploratory_view.ts index 877c13e93c373..99324d0fa921d 100644 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/exploratory_view.ts +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/exploratory_view.ts @@ -6,7 +6,7 @@ */ import { journey, step, before } from '@elastic/synthetics'; -import { recordVideo } from '../record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { createExploratoryViewUrl } from '../../public/components/shared/exploratory_view/configurations/exploratory_view_url'; import { loginToKibana, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../utils'; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/single_metric.journey.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/single_metric.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/single_metric.journey.ts rename to x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/single_metric.journey.ts index 6fcdb71ccffa2..23f847784308f 100644 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/single_metric.journey.ts +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/single_metric.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, before } from '@elastic/synthetics'; -import { recordVideo } from '../record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { createExploratoryViewUrl } from '../../public/components/shared/exploratory_view/configurations/exploratory_view_url'; import { loginToKibana, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../utils'; diff --git a/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/step_duration.journey.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/step_duration.journey.ts new file mode 100644 index 0000000000000..861f4036b9ec0 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/step_duration.journey.ts @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { journey, step } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; +import moment from 'moment'; +import { createExploratoryViewUrl } from '../../public/components/shared/exploratory_view/configurations/exploratory_view_url'; +import { loginToKibana, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../utils'; + +journey('Step Duration series', async ({ page, params }) => { + recordVideo(page); + + page.setDefaultTimeout(TIMEOUT_60_SEC.timeout); + + const expUrl = createExploratoryViewUrl({ + reportType: 'kpi-over-time', + allSeries: [ + { + dataType: 'uptime', + time: { + from: moment().subtract(10, 'y').toISOString(), + to: moment().toISOString(), + }, + name: 'synthetics-series-1', + breakdown: 'monitor.type', + selectedMetricField: 'monitor.duration.us', + reportDefinitions: { + 'url.full': ['ALL_VALUES'], + }, + }, + ], + }); + + const baseUrl = `${params.kibanaUrl}${expUrl}`; + + step('Go to Exploratory view', async () => { + await page.goto(baseUrl, { + waitUntil: 'networkidle', + }); + await loginToKibana({ + page, + user: { username: 'elastic', password: 'changeme' }, + }); + }); + + step('build series with monitor duration', async () => { + await page.waitForNavigation(TIMEOUT_60_SEC); + + await waitForLoadingToFinish({ page }); + await page.click('text=browser'); + await page.click('text=http'); + await page.click('[aria-label="Remove report metric"]'); + await page.click('button:has-text("Select report metric")'); + await page.click('button:has-text("Step duration")'); + await page.waitForSelector('[data-test-subj=seriesBreakdown]'); + await page.getByTestId('seriesBreakdown').click(); + await page.click('button[role="option"]:has-text("Step name")'); + await page.click('.euiComboBox__inputWrap'); + await page.click('[role="combobox"][placeholder="Search Monitor name"]'); + await page.click('button[role="option"]:has-text("test-monitor - inline")'); + await page.click('button:has-text("Apply changes")'); + }); + + step('Verify that changes are applied', async () => { + await waitForLoadingToFinish({ page }); + + await page.click('[aria-label="series color: #54b399"]'); + await page.click('[aria-label="series color: #6092c0"]'); + await page.click('[aria-label="series color: #d36086"] path'); + await page.click('[aria-label="series color: #9170b8"]'); + await page.click('[aria-label="series color: #ca8eae"]'); + await page.click('[aria-label="series color: #d6bf57"]'); + await page.click('text=load homepage'); + await page.click('text=load homepage'); + await page.click('text=load github'); + await page.click('text=load github'); + await page.click('text=load google'); + await page.click('text=load google'); + await page.click('text=hover over products menu'); + await page.click('text=hover over products menu'); + await page.click('text=load homepage 1'); + await page.click('text=load homepage 1'); + await page.click('text=load homepage 2'); + await page.click('text=load homepage 2'); + }); +}); diff --git a/x-pack/solutions/observability/plugins/exploratory_view/e2e/synthetics_run.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/synthetics_run.ts new file mode 100644 index 0000000000000..8ca6504d34987 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/synthetics_run.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { FtrConfigProviderContext } from '@kbn/test'; +import path from 'path'; +import { REPO_ROOT } from '@kbn/repo-info'; +import { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; + +const { headless, grep, bail: pauseOnError } = argv; + +async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { + const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); + + return { + ...kibanaConfig.getAll(), + testRunner: async ({ getService }: any) => { + const syntheticsRunner = new SyntheticsRunner(getService, { + headless, + match: grep, + pauseOnError, + }); + + await syntheticsRunner.setup(); + await syntheticsRunner.loadTestData( + `${REPO_ROOT}/x-pack/solutions/observability/plugins/ux/e2e/fixtures/`, + ['rum_8.0.0', 'rum_test_data'] + ); + await syntheticsRunner.loadTestData( + `${REPO_ROOT}/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/`, + ['full_heartbeat', 'browser'] + ); + await syntheticsRunner.loadTestFiles(async () => { + require(path.join(__dirname, './journeys')); + }); + await syntheticsRunner.run(); + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default runE2ETests; diff --git a/x-pack/solutions/observability/plugins/exploratory_view/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/exploratory_view/e2e/tsconfig.json new file mode 100644 index 0000000000000..43b0ddc6b6f9e --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "exclude": ["tmp", "target/**/*"], + "include": ["./**/*"], + "compilerOptions": { + "outDir": "target/types", + "types": ["node"] + }, + "kbn_references": [ + "@kbn/test", + "@kbn/repo-info", + "@kbn/observability-synthetics-test-data", + ] +} diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/utils.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/utils.ts rename to x-pack/solutions/observability/plugins/exploratory_view/e2e/utils.ts diff --git a/x-pack/solutions/observability/plugins/exploratory_view/jest.config.js b/x-pack/solutions/observability/plugins/exploratory_view/jest.config.js new file mode 100644 index 0000000000000..5a879be3d92c9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/jest.config.js @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/exploratory_view'], + setupFiles: [ + '/x-pack/solutions/observability/plugins/exploratory_view/.storybook/jest_setup.js', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/observability/plugins/exploratory_view', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/exploratory_view/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/exploratory_view/kibana.jsonc b/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/kibana.jsonc rename to x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/application/application.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/application/application.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/application/application.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/application/application.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/application/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/application/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/application/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/application/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/mobile_add_data.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/mobile_add_data.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/mobile_add_data.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/mobile_add_data.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/synthetics_add_data.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/synthetics_add_data.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/synthetics_add_data.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/synthetics_add_data.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/ux_add_data.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/ux_add_data.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/ux_add_data.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/ux_add_data.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/date_picker.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/date_picker.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/typings.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/typings.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/typings.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/typings.ts diff --git a/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/README.md b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/README.md new file mode 100644 index 0000000000000..23d370cd27024 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/README.md @@ -0,0 +1,161 @@ +# Exploratory view component + +This component is used in observability plugin to show lens embeddable based observability visualizations. +The view is populated using configs stored as json within the view for each data type. + +This readme file contains few of the concepts being used in the component. + +Basic workflow for how exploratory view works, it looks like this + + +![Exploratory view workflow](https://i.imgur.com/Kgyfd29.png) + + +## Report Type + +The exploratory view report type controls how the data is visualized in the lens embeddable. The report type defines a set of constraints over the x and y axis. For example, the `kpi-over-time` report type is a time series chart type that plots key performance indicators over time, while the `data-distribution` chart plots the percentage of documents over key performance indicators. Current available data types can be found at `exploratory_view/configurations/constants`. + +Each report type has one or more available visualizations to plot data from one or more data types. + +## Data Types + +Each available visualization is backed by a data type. A data type consists of a set of configuration for displaying domain-specific visualizations for observability data. Some example data types include apm, metrics, and logs. + +For each respective data type, we fetch index pattern string from the app plugin contract, leveraging existing hasData API we have to return the index pattern string as well as a `hasData` boolean from each plugin. + +In most cases, there will be a 1-1 relation between apps and data types. + +### Observability `dataViews` + +Once we have index pattern string for each data type, a respective `dataView` is created. If there is an existing dataView for an index pattern, we will fetch and reuse it. + +After the dataView is created we also set field formats to promote human-readability. For example, we set format for monitor duration field, which is monitor.duration.us, from microseconds to seconds for browser monitors. + +### Visualization Configuration + +Each data type may have one or more visualization configurations. The data type to visualization configuration can be found in [`exploratory_view/obs_exploratory_view`](https://github.com/elastic/kibana/blob/main/x-pack/plugins/observability/public/components/shared/exploratory_view/obsv_exploratory_view.tsx#L86) + +Each visualization configuration is mapped to a single report type. + +Visualization configurations are used to define the UI we display for each report type and data type combination in the series builder. +Visualization configuration define UI options and display, including available `metrics`, available `filters`, available `breakdown` options, definitions for human-readable `labels`, and more. +The configuration also defines any custom base filters, which usually get pushed to a query, but are not displayed on the UI. You can also set more custom options on the configuration like colors which get used while rendering the chart. + +Visualization configuration can be found at [`exploratory_view/configurations`](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations), where each data type typically has a folder that holds one or more visualization configurations. + +The configuration defined ultimately influences the lens embeddable attributes which get pushed to lens embeddable, rendering the chart. + +Some options in configuration are: + +#### Definition fields +They are also filters, but usually main filters, around which usually app UI is based. +For apm, it could be service name and for uptime, monitor name. + +#### Filters +You can define base filters in kql form or data plugin filter format, filters are strongly typed. + +#### Breakdown fields +List of fields from an index pattern, UI will use this to populate breakdown option select. + +#### Labels +You can set key/value map for your field labels. UI will use these to set labels for data view fields. + +Sample config +``` +{ + reportType: ReportTypes.KPI, + defaultSeriesType: 'bar_stacked', + xAxisColumn: { + sourceField: '@timestamp', + }, + yAxisColumns: [ + { + sourceField: REPORT_METRIC_FIELD, + operationType: 'median', + }, + ], + hasOperationType: false, + filterFields: ['observer.geo.name', 'monitor.type', 'tags'], // these fields get's resolved from relevant dataView + breakdownFields: [ + 'observer.geo.name', + 'monitor.type', + 'monitor.name', + PERCENTILE, + ], // these fields get's resolved from relevant dataView + baseFilters: [], + palette: { type: 'palette', name: 'status' }, + definitionFields: [ + { field: 'monitor.name', nested: SYNTHETICS_STEP_NAME, singleSelection: true }, + { field: 'url.full', filters: buildExistsFilter('summary.up', dataView) }, + ], + metricOptions: [ + { + label: MONITORS_DURATION_LABEL, + field: 'monitor.duration.us', + columnType: OPERATION_COLUMN, + } + ], + labels: { ...FieldLabels, [SUMMARY_UP]: UP_LABEL, [SUMMARY_DOWN]: DOWN_LABEL }, + } +``` + + + +## Lens Embeddable + +Lens embeddable is what actually renders the chart in exploratory view. + +Exploratory view generates the lens embeddable attributes as json and pass it to the component. + +Based on configuration, exploratory view generates layers and columns. + +Add a link to lens embeddable readme + +#### Example +A simple usage of lens embeddable example and playground options +[embedded_lens_example](../../../../../../../examples/embedded_lens_example) + +## Exploratory view Embeddable + +The primary purpose of the exploratory view is to embed it in observability solutions like uptime to replace +existing static visualizations, + +For that purpose, all the configuration options we define in the exploratory view can be used as an embeddable +via a component that is exposed using observability plugin contract, +usage looks like this + +`const ExploratoryViewComponent = props.plugins.observability.ExploratoryViewEmbeddable; +` + +``` + +``` + +there is an example in kibana example which you can view using +`yarn start --run-examples` and view the code at [Exploratory view embeddable](../../../../../../../examples/exploratory_view_example) + +#### Example +A simple usage of lens embeddable example and playground options, run kibana with +`yarn start --run-example` to see this example in action +source code is defined at [embedded_lens_example](../../../../../../../examples/embedded_lens_example) \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/date_range_picker.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/date_range_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/date_range_picker.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/date_range_picker.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/empty_view.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/empty_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/empty_view.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/empty_view.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/filter_label.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/filter_label.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/filter_label.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/filter_label.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/filter_label.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/filter_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/filter_label.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/filter_label.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_color_picker.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_color_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_color_picker.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_color_picker.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/series_date_picker.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/series_date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/series_date_picker.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/series_date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/translations.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/translations.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/translations.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/url_search.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/url_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/url_search.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/url_search.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/use_url_search.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/use_url_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/use_url_search.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/use_url_search.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/single_metric_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/single_metric_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/single_metric_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/single_metric_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/apm/field_formats.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/apm/field_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/apm/field_formats.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/apm/field_formats.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/elasticsearch_fieldnames.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/elasticsearch_fieldnames.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/elasticsearch_fieldnames.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/elasticsearch_fieldnames.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_logs.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_logs.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_logs.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_logs.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_metrics.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_metrics.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_metrics.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/synthetics.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/synthetics.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/synthetics.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/synthetics.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/labels.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/labels.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/labels.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/default_configs.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/default_configs.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/default_configs.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/default_configs.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_logs/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_logs/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_logs/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_logs/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/field_formats.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/field_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/field_formats.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/field_formats.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/heatmap_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/heatmap_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/heatmap_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/heatmap_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_columns/overall_column.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_columns/overall_column.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_columns/overall_column.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_columns/overall_column.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/device_distribution_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/device_distribution_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/device_distribution_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/device_distribution_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/distribution_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/distribution_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/distribution_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/distribution_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_fields.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_fields.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_fields.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_fields.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_kpi_config.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_kpi_config.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_kpi_config.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_kpi_config.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/data_distribution_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/data_distribution_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/data_distribution_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/data_distribution_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/field_formats.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/field_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/field_formats.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/field_formats.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/single_metric_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/single_metric_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/single_metric_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/single_metric_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/data_distribution_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/data_distribution_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/data_distribution_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/data_distribution_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/field_formats.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/field_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/field_formats.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/field_formats.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/heatmap_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/heatmap_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/heatmap_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/heatmap_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/runtime_fields.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/runtime_fields.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/runtime_fields.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/runtime_fields.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/single_metric_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/single_metric_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/single_metric_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/single_metric_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_data_view.json b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_data_view.json similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_data_view.json rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_data_view.json diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/utils.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/utils.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/utils.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/contexts/exploratory_view_config.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/contexts/exploratory_view_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/contexts/exploratory_view_config.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/contexts/exploratory_view_config.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_actions.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_actions.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_actions.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts similarity index 97% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts index f4b73e16fbc4a..e7441ef0c45cd 100644 --- a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts +++ b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts @@ -45,7 +45,6 @@ export const useAppDataView = ({ setDataViews((prevState) => ({ ...(prevState ?? {}), [seriesDataType]: indPattern })); } } - // eslint-disable-next-line react-hooks/exhaustive-deps }, [dataViewTitle, seriesDataType, JSON.stringify(series)]); return { dataViews, loading: loading && !dataViews[seriesDataType] }; diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_embeddable_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_embeddable_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_embeddable_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_embeddable_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_local_data_view.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_local_data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_local_data_view.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_local_data_view.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/exploratory_view.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/exploratory_view.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/embed_action.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/embed_action.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/embed_action.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/embed_action.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/last_updated.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/last_updated.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/last_updated.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/last_updated.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/refresh_button.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/refresh_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/refresh_button.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/refresh_button.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_app_data_view.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_app_data_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_app_data_view.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_app_data_view.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_ebt_telemetry.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_ebt_telemetry.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_ebt_telemetry.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_ebt_telemetry.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_kibana.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_kibana.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_formula_helper.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_formula_helper.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_formula_helper.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_formula_helper.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_filters.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_filters.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_filters.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/labels.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/labels.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/labels.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/lens_embeddable.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/lens_embeddable.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/lens_embeddable.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/lens_embeddable.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/obsv_exploratory_view.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/obsv_exploratory_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/obsv_exploratory_view.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/obsv_exploratory_view.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/rtl_helpers.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/rtl_helpers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/rtl_helpers.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/rtl_helpers.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_type_select.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_type_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_type_select.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_type_select.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/date_picker_col.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/date_picker_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/date_picker_col.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/date_picker_col.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/incomplete_badge.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/incomplete_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/incomplete_badge.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/incomplete_badge.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_type_select.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_type_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_type_select.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_type_select.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_filter.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_filter.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_filter.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_info.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_info.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_info.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/text_report_definition_field.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/text_report_definition_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/text_report_definition_field.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/text_report_definition_field.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/components/filter_values_list.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/components/filter_values_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/components/filter_values_list.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/components/filter_values_list.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/components/labels_filter.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/components/labels_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/components/labels_filter.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/components/labels_filter.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/series.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/series.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/series.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/series.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/series_editor.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/series_editor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/series_editor.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/series_editor.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/utils.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/utils.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/utils.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/series_views.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/series_views.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/series_views.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/series_views.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/view_actions.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/view_actions.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/filter_value_label/filter_value_label.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/filter_value_label/filter_value_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/filter_value_label/filter_value_label.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/filter_value_label/filter_value_label.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/types.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/types.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/types.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/constants.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/constants.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/constants.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/context/date_picker_context.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/context/date_picker_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/context/date_picker_context.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/context/date_picker_context.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/context/plugin_context.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/context/plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/context/plugin_context.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/context/plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/data_handler.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/data_handler.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/data_handler.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/data_handler.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/data_handler.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/data_handler.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/data_handler.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/data_handler.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/hooks/use_date_picker_context.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/hooks/use_date_picker_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/hooks/use_date_picker_context.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/hooks/use_date_picker_context.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/hooks/use_plugin_context.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/hooks/use_plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/hooks/use_plugin_context.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/hooks/use_plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/routes/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/routes/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/routes/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/routes/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/routes/json_rt.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/routes/json_rt.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/routes/json_rt.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/routes/json_rt.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/typings/fetch_overview_data/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/typings/fetch_overview_data/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/typings/fetch_overview_data/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/typings/fetch_overview_data/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/date.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/date.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/date.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/date.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/get_app_data_view.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/get_app_data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/get_app_data_view.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/get_app_data_view.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/url.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/url.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/scripts/e2e.js b/x-pack/solutions/observability/plugins/exploratory_view/scripts/e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/scripts/e2e.js rename to x-pack/solutions/observability/plugins/exploratory_view/scripts/e2e.js diff --git a/x-pack/plugins/observability_solution/exploratory_view/scripts/storybook.js b/x-pack/solutions/observability/plugins/exploratory_view/scripts/storybook.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/scripts/storybook.js rename to x-pack/solutions/observability/plugins/exploratory_view/scripts/storybook.js diff --git a/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json b/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json new file mode 100644 index 0000000000000..cfe8deebbcc50 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json @@ -0,0 +1,50 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": ["common/**/*", "public/**/*", "public/**/*.json", "../../../../../typings/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/data-plugin", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/usage-collection-plugin", + "@kbn/licensing-plugin", + "@kbn/cases-plugin", + "@kbn/lens-plugin", + "@kbn/spaces-plugin", + "@kbn/unified-search-plugin", + "@kbn/discover-plugin", + "@kbn/i18n", + "@kbn/data-views-plugin", + "@kbn/embeddable-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/security-plugin", + "@kbn/navigation-plugin", + "@kbn/i18n-react", + "@kbn/es-types", + "@kbn/rison", + "@kbn/datemath", + "@kbn/es-query", + "@kbn/field-formats-plugin", + "@kbn/coloring", + "@kbn/ui-actions-plugin", + "@kbn/visualizations-plugin", + "@kbn/core-http-browser", + "@kbn/share-plugin", + "@kbn/charts-plugin", + "@kbn/shared-ux-router", + "@kbn/observability-shared-plugin", + "@kbn/core-ui-settings-browser-mocks", + "@kbn/observability-ai-assistant-plugin", + "@kbn/shared-ux-link-redirect-app", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-mount", + "@kbn/core-analytics-browser", + "@kbn/expressions-plugin", + "@kbn/ebt-tools" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/investigate/README.md b/x-pack/solutions/observability/plugins/investigate/README.md similarity index 100% rename from x-pack/plugins/observability_solution/investigate/README.md rename to x-pack/solutions/observability/plugins/investigate/README.md diff --git a/x-pack/plugins/observability_solution/investigate/common/index.ts b/x-pack/solutions/observability/plugins/investigate/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/common/index.ts rename to x-pack/solutions/observability/plugins/investigate/common/index.ts diff --git a/x-pack/plugins/observability_solution/investigate/common/types.ts b/x-pack/solutions/observability/plugins/investigate/common/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/common/types.ts rename to x-pack/solutions/observability/plugins/investigate/common/types.ts diff --git a/x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts b/x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts rename to x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts diff --git a/x-pack/solutions/observability/plugins/investigate/jest.config.js b/x-pack/solutions/observability/plugins/investigate/jest.config.js new file mode 100644 index 0000000000000..34bb5b6988136 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate/jest.config.js @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: [ + '/x-pack/solutions/observability/plugins/investigate/public', + '/x-pack/solutions/observability/plugins/investigate/common', + '/x-pack/solutions/observability/plugins/investigate/server', + ], + setupFiles: [], + collectCoverage: true, + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/investigate/{common,public,server}/**/*.{js,ts,tsx}', + ], + + coverageReporters: ['html'], +}; diff --git a/x-pack/plugins/observability_solution/investigate/kibana.jsonc b/x-pack/solutions/observability/plugins/investigate/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/investigate/kibana.jsonc rename to x-pack/solutions/observability/plugins/investigate/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/investigate/public/index.ts b/x-pack/solutions/observability/plugins/investigate/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/index.ts rename to x-pack/solutions/observability/plugins/investigate/public/index.ts diff --git a/x-pack/plugins/observability_solution/investigate/public/investigation/item_definition_registry.ts b/x-pack/solutions/observability/plugins/investigate/public/investigation/item_definition_registry.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/investigation/item_definition_registry.ts rename to x-pack/solutions/observability/plugins/investigate/public/investigation/item_definition_registry.ts diff --git a/x-pack/plugins/observability_solution/investigate/public/plugin.tsx b/x-pack/solutions/observability/plugins/investigate/public/plugin.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/plugin.tsx rename to x-pack/solutions/observability/plugins/investigate/public/plugin.tsx diff --git a/x-pack/plugins/observability_solution/investigate/public/types.ts b/x-pack/solutions/observability/plugins/investigate/public/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/types.ts rename to x-pack/solutions/observability/plugins/investigate/public/types.ts diff --git a/x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts b/x-pack/solutions/observability/plugins/investigate/public/util/get_es_filters_from_global_parameters.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts rename to x-pack/solutions/observability/plugins/investigate/public/util/get_es_filters_from_global_parameters.ts diff --git a/x-pack/plugins/observability_solution/investigate/server/config.ts b/x-pack/solutions/observability/plugins/investigate/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/server/config.ts rename to x-pack/solutions/observability/plugins/investigate/server/config.ts diff --git a/x-pack/plugins/observability_solution/investigate/server/index.ts b/x-pack/solutions/observability/plugins/investigate/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/server/index.ts rename to x-pack/solutions/observability/plugins/investigate/server/index.ts diff --git a/x-pack/plugins/observability_solution/investigate/server/plugin.ts b/x-pack/solutions/observability/plugins/investigate/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/server/plugin.ts rename to x-pack/solutions/observability/plugins/investigate/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/investigate/server/types.ts b/x-pack/solutions/observability/plugins/investigate/server/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/server/types.ts rename to x-pack/solutions/observability/plugins/investigate/server/types.ts diff --git a/x-pack/solutions/observability/plugins/investigate/tsconfig.json b/x-pack/solutions/observability/plugins/investigate/tsconfig.json new file mode 100644 index 0000000000000..14a188c1a0ca2 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../typings/**/*", + "common/**/*", + "public/**/*", + "typings/**/*", + "public/**/*.json", + "server/**/*", ], + "kbn_references": [ + "@kbn/core", + "@kbn/logging", + "@kbn/config-schema", + "@kbn/es-query", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/extend_props.ts b/x-pack/solutions/observability/plugins/investigate_app/.storybook/extend_props.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/extend_props.ts rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/extend_props.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/get_mock_investigate_app_services.tsx b/x-pack/solutions/observability/plugins/investigate_app/.storybook/get_mock_investigate_app_services.tsx similarity index 95% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/get_mock_investigate_app_services.tsx rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/get_mock_investigate_app_services.tsx index 42ccc20d52a71..d0e9e936dd598 100644 --- a/x-pack/plugins/observability_solution/investigate_app/.storybook/get_mock_investigate_app_services.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/.storybook/get_mock_investigate_app_services.tsx @@ -17,6 +17,7 @@ import { SearchBar, IUnifiedSearchPluginServices } from '@kbn/unified-search-plu import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { merge } from 'lodash'; import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { of } from 'rxjs'; import type { EsqlQueryMeta } from '../public/services/esql'; import type { InvestigateAppServices } from '../public/services/types'; import { InvestigateAppKibanaContext } from '../public/hooks/use_kibana'; @@ -54,6 +55,10 @@ export function getMockInvestigateAppContext(): DeeplyMockedKeys Promise.resolve()), + stream: jest.fn().mockImplementation(() => of()) as any, + }, }; const core = coreMock.createStart(); diff --git a/x-pack/plugins/observability_solution/observability/.storybook/jest_setup.js b/x-pack/solutions/observability/plugins/investigate_app/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/.storybook/jest_setup.js rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/observability/.storybook/main.js b/x-pack/solutions/observability/plugins/investigate_app/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/.storybook/main.js rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/mock_kibana_services.ts b/x-pack/solutions/observability/plugins/investigate_app/.storybook/mock_kibana_services.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/mock_kibana_services.ts rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/mock_kibana_services.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/preview.js b/x-pack/solutions/observability/plugins/investigate_app/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/preview.js rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/preview.js diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/storybook_decorator.tsx b/x-pack/solutions/observability/plugins/investigate_app/.storybook/storybook_decorator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/storybook_decorator.tsx rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/storybook_decorator.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/README.md b/x-pack/solutions/observability/plugins/investigate_app/README.md similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/README.md rename to x-pack/solutions/observability/plugins/investigate_app/README.md diff --git a/x-pack/plugins/observability_solution/investigate_app/common/paths.ts b/x-pack/solutions/observability/plugins/investigate_app/common/paths.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/common/paths.ts rename to x-pack/solutions/observability/plugins/investigate_app/common/paths.ts diff --git a/x-pack/solutions/observability/plugins/investigate_app/jest.config.js b/x-pack/solutions/observability/plugins/investigate_app/jest.config.js new file mode 100644 index 0000000000000..fdd824900e3fc --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/jest.config.js @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: [ + '/x-pack/solutions/observability/plugins/investigate_app/public', + '/x-pack/solutions/observability/plugins/investigate_app/server', + ], + setupFiles: [ + '/x-pack/solutions/observability/plugins/investigate_app/.storybook/jest_setup.js', + ], + collectCoverage: true, + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/investigate_app/{public,server}/**/*.{js,ts,tsx}', + ], + + coverageReporters: ['html'], +}; diff --git a/x-pack/solutions/observability/plugins/investigate_app/kibana.jsonc b/x-pack/solutions/observability/plugins/investigate_app/kibana.jsonc new file mode 100644 index 0000000000000..eb69c6f9ea534 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/kibana.jsonc @@ -0,0 +1,45 @@ +{ + "type": "plugin", + "id": "@kbn/investigate-app-plugin", + "owner": "@elastic/obs-ux-management-team", + "visibility": "private", + "group": "observability", + "plugin": { + "id": "investigateApp", + "server": true, + "browser": true, + "configPath": ["xpack", "investigateApp"], + "requiredPlugins": [ + "investigate", + "observabilityShared", + "lens", + "charts", + "dataViews", + "data", + "embeddable", + "contentManagement", + "datasetQuality", + "unifiedSearch", + "security", + "observability", + "licensing", + "ruleRegistry", + "inference", + "alerting", + "spaces", + "slo", + "apmDataAccess", + "usageCollection" + ], + "optionalPlugins": [ + "observabilityAIAssistant", + "observabilityAIAssistantApp" + ], + "requiredBundles": [ + "esql", + "kibanaReact", + "kibanaUtils" + ], + "extraPublicDirs": [] + } +} diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/api/index.ts b/x-pack/solutions/observability/plugins/investigate_app/public/api/index.ts new file mode 100644 index 0000000000000..21f3251bd0d34 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/api/index.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { CoreSetup, CoreStart, HttpFetchOptions } from '@kbn/core/public'; +import type { + ClientRequestParamsOf, + ReturnOf, + RouteRepositoryClient, +} from '@kbn/server-route-repository'; +import { createRepositoryClient } from '@kbn/server-route-repository-client'; +import type { InvestigateAppServerRouteRepository } from '../../server'; + +type FetchOptions = Omit & { + body?: any; +}; + +export type InvestigateAppAPIClientOptions = Omit< + FetchOptions, + 'query' | 'body' | 'pathname' | 'signal' +> & { + signal: AbortSignal | null; +}; + +export type InvestigateAppRepositoryClient = RouteRepositoryClient< + InvestigateAppServerRouteRepository, + InvestigateAppAPIClientOptions +>; + +export type AutoAbortedInvestigateAppRepositoryClient = RouteRepositoryClient< + InvestigateAppServerRouteRepository, + Omit +>; + +export type InvestigateAppAPIEndpoint = keyof InvestigateAppServerRouteRepository; + +export type APIReturnType = ReturnOf< + InvestigateAppServerRouteRepository, + TEndpoint +>; + +export type InvestigateAppAPIClientRequestParamsOf = + ClientRequestParamsOf; + +export function createInvestigateAppRepositoryClient(core: CoreStart | CoreSetup) { + return createRepositoryClient(core) as InvestigateAppRepositoryClient; +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/application.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/application.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/application.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/application.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/error_message/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/error_message/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/error_message/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/error_message/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigate_app_context_provider/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigate_app_context_provider/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigate_app_context_provider/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigate_app_context_provider/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigate_text_button/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigate_text_button/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigate_text_button/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigate_text_button/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/external_incident_field.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/external_incident_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/external_incident_field.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/external_incident_field.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/status_field.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/status_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/status_field.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/status_field.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/tags_field.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/tags_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/tags_field.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/tags_field.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/form_helper.ts b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/form_helper.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/form_helper.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/form_helper.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/investigation_edit_form.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/investigation_edit_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/investigation_edit_form.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/investigation_edit_form.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_not_found/investigation_not_found.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_not_found/investigation_not_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_not_found/investigation_not_found.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_not_found/investigation_not_found.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_status_badge/investigation_status_badge.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_status_badge/investigation_status_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_status_badge/investigation_status_badge.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_status_badge/investigation_status_badge.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_tag/investigation_tag.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_tag/investigation_tag.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_tag/investigation_tag.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_tag/investigation_tag.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/preview_lens_suggestion/index.stories.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/preview_lens_suggestion/index.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/preview_lens_suggestion/index.stories.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/preview_lens_suggestion/index.stories.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/preview_lens_suggestion/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/preview_lens_suggestion/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/preview_lens_suggestion/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/preview_lens_suggestion/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/index.stories.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/index.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/index.stories.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/index.stories.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/suggestions.mock.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/suggestions.mock.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/suggestions.mock.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/suggestions.mock.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/constants/index.ts b/x-pack/solutions/observability/plugins/investigate_app/public/constants/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/constants/index.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/constants/index.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/query_key_factory.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/query_key_factory.ts similarity index 89% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/query_key_factory.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/query_key_factory.ts index 38e4c90aebe09..494b2b134aacb 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/query_key_factory.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/query_key_factory.ts @@ -12,8 +12,12 @@ export const investigationKeys = { userProfiles: (profileIds: Set) => [...investigationKeys.all, 'userProfiles', ...profileIds] as const, tags: () => [...investigationKeys.all, 'tags'] as const, - events: (rangeFrom?: string, rangeTo?: string, filter?: string) => - [...investigationKeys.all, 'events', rangeFrom, rangeTo, filter] as const, + events: (params: { + rangeFrom?: string; + rangeTo?: string; + filter?: string; + eventTypes?: string[]; + }) => [...investigationKeys.all, 'events', params] as const, stats: () => [...investigationKeys.all, 'stats'] as const, lists: () => [...investigationKeys.all, 'list'] as const, list: (params: { page: number; perPage: number; search?: string; filter?: string }) => diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_note.ts similarity index 83% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_note.ts index 3f349238c73f5..659e56b9172d3 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_note.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_note.ts @@ -11,8 +11,9 @@ import { CreateInvestigationNoteParams, CreateInvestigationNoteResponse, } from '@kbn/investigation-shared'; -import { useMutation } from '@tanstack/react-query'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { useKibana } from './use_kibana'; +import { investigationKeys } from './query_key_factory'; type ServerError = IHttpFetchError; @@ -23,6 +24,7 @@ export function useAddInvestigationNote() { notifications: { toasts }, }, } = useKibana(); + const queryClient = useQueryClient(); return useMutation< CreateInvestigationNoteResponse, @@ -39,7 +41,12 @@ export function useAddInvestigationNote() { ); }, { - onSuccess: (response, {}) => { + onSuccess: (_, { investigationId }) => { + queryClient.invalidateQueries({ + queryKey: investigationKeys.detailNotes(investigationId), + exact: false, + }); + toasts.addSuccess( i18n.translate('xpack.investigateApp.addInvestigationNote.successMessage', { defaultMessage: 'Note saved', diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_create_investigation.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_create_investigation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_create_investigation.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_create_investigation.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_note.ts similarity index 82% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_note.ts index 8eaeea2d67b87..5b4e6e6d6128c 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_note.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_note.ts @@ -6,13 +6,15 @@ */ import { IHttpFetchError, ResponseErrorBody } from '@kbn/core/public'; -import { useMutation } from '@tanstack/react-query'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { i18n } from '@kbn/i18n'; import { useKibana } from './use_kibana'; +import { investigationKeys } from './query_key_factory'; type ServerError = IHttpFetchError; export function useDeleteInvestigationNote() { + const queryClient = useQueryClient(); const { core: { http, @@ -34,7 +36,12 @@ export function useDeleteInvestigationNote() { ); }, { - onSuccess: (response, {}) => { + onSuccess: (response, { investigationId }) => { + queryClient.invalidateQueries({ + queryKey: investigationKeys.detailNotes(investigationId), + exact: false, + }); + toasts.addSuccess( i18n.translate('xpack.investigateApp.useDeleteInvestigationNote.successMessage', { defaultMessage: 'Note deleted', diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_alert.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_alert.tsx similarity index 99% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_alert.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_alert.tsx index 7d2245ac38618..76f22d2ccff3c 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_alert.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_alert.tsx @@ -44,6 +44,7 @@ export function useFetchAlert({ investigation }: UseFetchAlertParams): UseFetchA }); }, staleTime: 60 * 1000, + retry: false, refetchOnWindowFocus: false, onError: (error: Error) => { toasts.addError(error, { diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts similarity index 97% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts index 2b2c8b92b0d4f..8b5ad9f8abd76 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts @@ -51,8 +51,7 @@ export function useFetchAllInvestigationStats(): Response { }; }, retry: false, - cacheTime: 600 * 1000, // 10 minutes - staleTime: 0, + staleTime: 15 * 1000, onError: (error: Error) => { toasts.addError(error, { title: i18n.translate('xpack.investigateApp.useFetchAllInvestigationStats.errorTitle', { diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts similarity index 96% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts index 083742f09b685..be912df756440 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts @@ -35,8 +35,7 @@ export function useFetchAllInvestigationTags(): Response { signal, }); }, - cacheTime: 600 * 1000, // 10_minutes - staleTime: 0, + staleTime: 15 * 1000, refetchOnWindowFocus: false, retry: false, onError: (error: Error) => { diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_entities.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_entities.ts similarity index 96% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_entities.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_entities.ts index a8cee1a9c1857..5d99d9ed906ec 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_entities.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_entities.ts @@ -50,9 +50,7 @@ export function useFetchEntities({ }); }, refetchOnWindowFocus: false, - onError: (error: Error) => { - // ignore error - }, + retry: false, enabled: Boolean(investigationId && (serviceName || hostName || containerId)), }); diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_events.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_events.ts similarity index 76% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_events.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_events.ts index 5b885fc664b13..8447789562fa5 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_events.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_events.ts @@ -6,16 +6,14 @@ */ import { i18n } from '@kbn/i18n'; -import { useQuery } from '@tanstack/react-query'; import { GetEventsResponse } from '@kbn/investigation-shared'; +import { useQuery } from '@tanstack/react-query'; +import { isArray } from 'lodash'; import { investigationKeys } from './query_key_factory'; import { useKibana } from './use_kibana'; export interface Response { - isInitialLoading: boolean; isLoading: boolean; - isRefetching: boolean; - isSuccess: boolean; isError: boolean; data?: GetEventsResponse; } @@ -24,10 +22,12 @@ export function useFetchEvents({ rangeFrom, rangeTo, filter, + eventTypes, }: { rangeFrom?: string; rangeTo?: string; filter?: string; + eventTypes?: string[]; }): Response { const { core: { @@ -36,21 +36,20 @@ export function useFetchEvents({ }, } = useKibana(); - const { isInitialLoading, isLoading, isError, isSuccess, isRefetching, data } = useQuery({ - queryKey: investigationKeys.events(rangeFrom, rangeTo, filter), + const { isLoading, isError, data } = useQuery({ + queryKey: investigationKeys.events({ rangeFrom, rangeTo, filter, eventTypes }), queryFn: async ({ signal }) => { - return await http.get(`/api/observability/events`, { + return http.get(`/api/observability/events`, { query: { rangeFrom, rangeTo, filter, + ...(isArray(eventTypes) && eventTypes.length > 0 && { eventTypes: eventTypes.join(',') }), }, version: '2023-10-31', signal, }); }, - cacheTime: 600 * 1000, // 10_minutes - staleTime: 0, refetchOnWindowFocus: false, retry: false, onError: (error: Error) => { @@ -64,10 +63,7 @@ export function useFetchEvents({ return { data, - isInitialLoading, isLoading, - isRefetching, - isSuccess, isError, }; } diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_items.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_items.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_items.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_items.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_list.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_list.ts similarity index 97% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_list.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_list.ts index cadd0de89a8e3..9d19d4d4cc04c 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_list.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_list.ts @@ -64,8 +64,6 @@ export function useFetchInvestigationList({ retry: false, refetchInterval: 60 * 1000, refetchOnWindowFocus: false, - cacheTime: 600 * 1000, // 10 minutes - staleTime: 0, onError: (error: Error) => { toasts.addError(error, { title: i18n.translate('xpack.investigateApp.useFetchInvestigationList.errorTitle', { diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_notes.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_notes.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_notes.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_notes.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_user_profiles.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_user_profiles.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_user_profiles.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_user_profiles.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_kibana.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_kibana.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_screen_context.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_screen_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_screen_context.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_screen_context.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_theme.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_theme.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_theme.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation_note.ts similarity index 93% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation_note.ts index 14da1ec22feef..a66aedb4611c2 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation_note.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation_note.ts @@ -39,12 +39,16 @@ export function useUpdateInvestigationNote() { }, { onSuccess: (response, { investigationId }) => { + queryClient.invalidateQueries({ + queryKey: investigationKeys.detailNotes(investigationId), + exact: false, + }); + toasts.addSuccess( i18n.translate('xpack.investigateApp.useUpdateInvestigationNote.successMessage', { defaultMessage: 'Note updated', }) ); - queryClient.invalidateQueries({ queryKey: investigationKeys.detailNotes(investigationId) }); }, onError: (error, {}, context) => { toasts.addError( diff --git a/x-pack/plugins/observability_solution/investigate_app/public/index.ts b/x-pack/solutions/observability/plugins/investigate_app/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/index.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/index.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/README.md b/x-pack/solutions/observability/plugins/investigate_app/public/items/README.md similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/README.md rename to x-pack/solutions/observability/plugins/investigate_app/public/items/README.md diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/esql_item/get_date_histogram_results.ts b/x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/get_date_histogram_results.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/esql_item/get_date_histogram_results.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/get_date_histogram_results.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/esql_item/register_esql_item.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/register_esql_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/esql_item/register_esql_item.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/register_esql_item.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/lens_item/register_lens_item.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/items/lens_item/register_lens_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/lens_item/register_lens_item.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/items/lens_item/register_lens_item.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/register_items.ts b/x-pack/solutions/observability/plugins/investigate_app/public/items/register_items.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/register_items.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/items/register_items.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_from_library_button/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_from_library_button/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_from_library_button/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_from_library_button/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx index 0516bc7d9190c..341b9d441cb61 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx @@ -10,8 +10,8 @@ import { css } from '@emotion/css'; import { ESQLLangEditor } from '@kbn/esql/public'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { AddFromLibraryButton } from '../add_from_library_button'; import { useInvestigation } from '../../contexts/investigation_context'; +import { AddFromLibraryButton } from '../add_from_library_button'; import { EsqlWidgetPreview } from './esql_widget_preview'; const emptyPreview = css` diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx new file mode 100644 index 0000000000000..57ced473922d0 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx @@ -0,0 +1,205 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import type { RootCauseAnalysisEvent } from '@kbn/observability-ai-server/root_cause_analysis'; +import { EcsFieldsResponse } from '@kbn/rule-registry-plugin/common'; +import { + ALERT_FLAPPING_HISTORY, + ALERT_RULE_EXECUTION_TIMESTAMP, + ALERT_RULE_EXECUTION_UUID, + EVENT_ACTION, + EVENT_KIND, +} from '@kbn/rule-registry-plugin/common/technical_rule_data_field_names'; +import { isRequestAbortedError } from '@kbn/server-route-repository-client'; +import { omit } from 'lodash'; +import React, { useEffect, useRef, useState } from 'react'; +import { useKibana } from '../../../../hooks/use_kibana'; +import { useUpdateInvestigation } from '../../../../hooks/use_update_investigation'; +import { useInvestigation } from '../../contexts/investigation_context'; + +export interface InvestigationContextualInsight { + key: string; + description: string; + data: unknown; +} + +export function AssistantHypothesis() { + const { + alert, + globalParams: { timeRange }, + investigation, + } = useInvestigation(); + const { + core: { notifications }, + services: { investigateAppRepositoryClient }, + dependencies: { + start: { + observabilityAIAssistant: { useGenAIConnectors }, + observabilityAIAssistantApp: { RootCauseAnalysisContainer }, + }, + }, + } = useKibana(); + + const { mutateAsync: updateInvestigation } = useUpdateInvestigation(); + + const { loading: loadingConnector, selectedConnector } = useGenAIConnectors(); + + const serviceName = alert?.['service.name'] as string | undefined; + + const [events, setEvents] = useState([]); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(undefined); + + const controllerRef = useRef(new AbortController()); + + useEffect(() => { + if (investigation?.rootCauseAnalysis) { + setEvents(investigation.rootCauseAnalysis.events); + } + }, [investigation?.rootCauseAnalysis]); + + const [completeInBackground, setCompleteInBackground] = useState(true); + + const runRootCauseAnalysis = ({ + alert: nonNullishAlert, + connectorId, + serviceName: nonNullishServiceName, + }: { + alert: EcsFieldsResponse; + connectorId: string; + serviceName: string; + }) => { + const rangeFrom = timeRange.from; + + const rangeTo = timeRange.to; + + setLoading(true); + + setError(undefined); + + setEvents([]); + + investigateAppRepositoryClient + .stream('POST /internal/observability/investigation/root_cause_analysis', { + params: { + body: { + investigationId: investigation!.id, + connectorId, + context: `The user is investigating an alert for the ${serviceName} service, + and wants to find the root cause. Here is the alert: + + ${JSON.stringify(sanitizeAlert(nonNullishAlert))}`, + rangeFrom, + rangeTo, + serviceName: nonNullishServiceName, + completeInBackground, + }, + }, + signal: controllerRef.current.signal, + }) + .subscribe({ + next: (event) => { + setEvents((prev) => { + return prev.concat(event.event); + }); + }, + error: (nextError) => { + if (!isRequestAbortedError(nextError)) { + notifications.toasts.addError(nextError, { + title: i18n.translate( + 'xpack.investigateApp.assistantHypothesis.failedToLoadAnalysis', + { + defaultMessage: `Failed to load analysis`, + } + ), + }); + setError(nextError); + } else { + setError( + new Error( + i18n.translate('xpack.investigateApp.assistantHypothesis.analysisAborted', { + defaultMessage: `Analysis was aborted`, + }) + ) + ); + } + + setLoading(false); + }, + complete: () => { + setLoading(false); + }, + }); + }; + + if (!serviceName) { + return null; + } + + return ( + { + setCompleteInBackground(() => !completeInBackground); + }} + onStopAnalysisClick={() => { + controllerRef.current.abort(); + controllerRef.current = new AbortController(); + }} + onClearAnalysisClick={() => { + setEvents([]); + if (investigation?.rootCauseAnalysis) { + updateInvestigation({ + investigationId: investigation!.id, + payload: { + rootCauseAnalysis: { + events: [], + }, + }, + }); + } + }} + onResetAnalysisClick={() => { + controllerRef.current.abort(); + controllerRef.current = new AbortController(); + if (alert && selectedConnector && serviceName) { + runRootCauseAnalysis({ + alert, + connectorId: selectedConnector, + serviceName, + }); + } + }} + error={error} + onStartAnalysisClick={() => { + if (alert && selectedConnector && serviceName) { + runRootCauseAnalysis({ + alert, + connectorId: selectedConnector, + serviceName, + }); + } + }} + /> + ); +} + +function sanitizeAlert(alert: EcsFieldsResponse) { + return omit( + alert, + ALERT_RULE_EXECUTION_TIMESTAMP, + '_index', + ALERT_FLAPPING_HISTORY, + EVENT_ACTION, + EVENT_KIND, + ALERT_RULE_EXECUTION_UUID, + '@timestamp' + ); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.stories.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.stories.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.stories.tsx diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.tsx new file mode 100644 index 0000000000000..443190a7d16cb --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.tsx @@ -0,0 +1,112 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiText } from '@elastic/eui'; +import { css } from '@emotion/css'; +import React from 'react'; +import { InvestigateTextButton } from '../../../../components/investigate_text_button'; +import { useTheme } from '../../../../hooks/use_theme'; + +export const GRID_ITEM_HEADER_HEIGHT = 40; + +interface GridItemProps { + id: string; + title: string; + children: React.ReactNode; + onCopy: () => void; + onDelete: () => void; + loading: boolean; +} + +const titleContainerClassName = css` + overflow: hidden; +`; +const titleItemClassName = css` + max-width: 100%; + .euiText { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +`; + +const panelClassName = css` + overflow-y: auto; +`; + +const panelContentClassName = css` + overflow-y: auto; + height: 100%; +`; + +export function GridItem({ id, title, children, onDelete, onCopy, loading }: GridItemProps) { + const theme = useTheme(); + + const headerClassName = css` + padding: 0 ${theme.size.s} 0 ${theme.size.s}}; +`; + + const containerClassName = css` + height: 100%; + max-width: 100%; + transition: opacity ${theme.animation.normal} ${theme.animation.resistance}; + overflow: auto; + `; + + return ( + + + + + + +
{title}
+
+
+ + + + { + onCopy(); + }} + disabled={loading} + /> + + + { + onDelete(); + }} + disabled={loading} + /> + + + +
+
+ {children} +
+
+ ); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/index.stories.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/index.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/index.stories.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/index.stories.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx similarity index 96% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx index 5c9682348ee28..55b264eeb09e6 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx @@ -72,12 +72,11 @@ export function InvestigationDetails({ user }: Props) { ], }} > - - + + - - + diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/alert_details_button.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/alert_details_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/alert_details_button.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/alert_details_button.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/external_incident_button.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/external_incident_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/external_incident_button.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/external_incident_button.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx new file mode 100644 index 0000000000000..8acc4831aa68a --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup } from '@elastic/eui'; +import React from 'react'; +import { AddInvestigationItem } from '../add_investigation_item/add_investigation_item'; +import { AssistantHypothesis } from '../assistant_hypothesis/assistant_hypothesis'; +import { InvestigationItemsList } from '../investigation_items_list/investigation_items_list'; +import { InvestigationTimeline } from '../investigation_timeline/investigation_timeline'; + +export function InvestigationItems() { + return ( + + + + + + + ); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx similarity index 95% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx index e65b29e2c3762..227ea5f91b24e 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx @@ -18,7 +18,7 @@ export function InvestigationItemsList() { } return ( - + {renderableItems.map((item) => { return ( diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx similarity index 84% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx index ccf1f0ab20df6..bd509fb26bc90 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx @@ -11,6 +11,7 @@ import { InvestigationNoteResponse } from '@kbn/investigation-shared'; import React, { useState } from 'react'; import { ResizableTextInput } from './resizable_text_input'; import { useInvestigation } from '../../contexts/investigation_context'; +import { useUpdateInvestigationNote } from '../../../../hooks/use_update_investigation_note'; interface Props { note: InvestigationNoteResponse; @@ -19,11 +20,22 @@ interface Props { export function EditNoteForm({ note, onClose }: Props) { const [noteInput, setNoteInput] = useState(note.content); - const { updateNote, isUpdatingNote } = useInvestigation(); + const { investigation } = useInvestigation(); + const { mutate: updateNote, isLoading: isUpdatingNote } = useUpdateInvestigationNote(); - const onUpdate = async () => { - await updateNote(note.id, noteInput.trim()); - onClose(); + const onUpdate = () => { + updateNote( + { + investigationId: investigation!.id, + noteId: note.id, + note: { content: noteInput.trim() }, + }, + { + onSuccess: () => { + onClose(); + }, + } + ); }; return ( diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx similarity index 85% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx index ec63b09358159..50ec61bc4555b 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx @@ -18,6 +18,8 @@ import { i18n } from '@kbn/i18n'; import { InvestigationNoteResponse } from '@kbn/investigation-shared'; import { AuthenticatedUser } from '@kbn/security-plugin/common'; import React, { useState } from 'react'; +import { useAddInvestigationNote } from '../../../../hooks/use_add_investigation_note'; +import { useFetchInvestigationNotes } from '../../../../hooks/use_fetch_investigation_notes'; import { useFetchUserProfiles } from '../../../../hooks/use_fetch_user_profiles'; import { useTheme } from '../../../../hooks/use_theme'; import { useInvestigation } from '../../contexts/investigation_context'; @@ -30,15 +32,25 @@ export interface Props { export function InvestigationNotes({ user }: Props) { const theme = useTheme(); - const { investigation, addNote, isAddingNote } = useInvestigation(); + const { investigation } = useInvestigation(); + const { data: notes } = useFetchInvestigationNotes({ + investigationId: investigation!.id, + }); + const { mutate: addNote, isLoading: isAddingNote } = useAddInvestigationNote(); const { data: userProfiles, isLoading: isLoadingUserProfiles } = useFetchUserProfiles({ profileIds: new Set(investigation?.notes.map((note) => note.createdBy)), }); const [noteInput, setNoteInput] = useState(''); - const onAddNote = async (content: string) => { - await addNote(content); - setNoteInput(''); + const onAddNote = (content: string) => { + addNote( + { investigationId: investigation!.id, note: { content } }, + { + onSuccess: () => { + setNoteInput(''); + }, + } + ); }; const panelClassName = css` @@ -58,7 +70,7 @@ export function InvestigationNotes({ user }: Props) { - {investigation?.notes.map((currNote: InvestigationNoteResponse) => { + {notes?.map((currNote: InvestigationNoteResponse) => { return ( { + deleteNote({ investigationId: investigation!.id, noteId: note.id }); + }; + + const timelineContainerClassName = css` + padding-bottom: 16px; + border-bottom: 1px solid ${theme.colors.lightShade}; + :last-child { + border-bottom: 0px; + } + `; + + const actionButtonClassname = css` + color: ${theme.colors.mediumShade}; + :hover { + color: ${theme.colors.darkShade}; + } + `; + + const timestampClassName = css` + color: ${theme.colors.darkShade}; + `; + + return ( + + + + + {userProfileLoading ? ( + + ) : ( + + {userProfile?.user.full_name ?? userProfile?.user.username ?? note?.createdBy} + + )} + + + + {formatDistance(new Date(note.createdAt), new Date(), { addSuffix: true })} + + + + + {isOwner && ( + + + { + setIsEditing(!isEditing); + }} + className={actionButtonClassname} + /> + + + + + + )} + + + {isEditing ? ( + setIsEditing(false)} /> + ) : ( + + {note.content} + + )} + + + ); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/resizable_text_input.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/resizable_text_input.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/resizable_text_input.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/resizable_text_input.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/alert_event.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/alert_event.tsx similarity index 80% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/alert_event.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/alert_event.tsx index 2e5ab220054e4..4c39efd9019ba 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/alert_event.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/alert_event.tsx @@ -5,13 +5,13 @@ * 2.0. */ -import { LineAnnotation, AnnotationDomainType } from '@elastic/charts'; +import { AnnotationDomainType, LineAnnotation } from '@elastic/charts'; import { EuiIcon } from '@elastic/eui'; -import React from 'react'; +import { AlertEventResponse } from '@kbn/investigation-shared'; import moment from 'moment'; -import { EventSchema } from '@kbn/investigation-shared'; +import React from 'react'; -export const AlertEvent = ({ event }: { event: EventSchema }) => { +export const AlertEvent = ({ event }: { event: AlertEventResponse }) => { return ( { + const { dependencies } = useKibana(); + const baseTheme = dependencies.start.charts.theme.useChartsBaseTheme(); + const { globalParams, updateInvestigationParams } = useInvestigation(); + const chartRef = useRef(null); + + const { data: events, isLoading } = useFetchEvents({ + rangeFrom: globalParams.timeRange.from, + rangeTo: globalParams.timeRange.to, + eventTypes, + }); + + const handleCursorUpdate = useActiveCursor(dependencies.start.charts.activeCursor, chartRef, { + isDateHistogram: true, + }); + + const data = useMemo(() => { + const points = [ + { x: moment(globalParams.timeRange.from).valueOf(), y: 0 }, + { x: moment(globalParams.timeRange.to).valueOf(), y: 0 }, + ]; + + // adding 100 fake points to the chart so the chart shows cursor on hover + for (let i = 0; i < 100; i++) { + const diff = + moment(globalParams.timeRange.to).valueOf() - moment(globalParams.timeRange.from).valueOf(); + points.push({ x: moment(globalParams.timeRange.from).valueOf() + (diff / 100) * i, y: 0 }); + } + return points; + }, [globalParams.timeRange.from, globalParams.timeRange.to]); + + if (isLoading) { + return ; + } + + return ( + + { + const { from, to } = getBrushData(brush); + updateInvestigationParams({ + timeRange: { from, to }, + }); + }} + /> + + moment(d).format('LTS')} + style={{ + tickLine: { + visible: true, + strokeWidth: 1, + stroke: '#98A2B3', + }, + }} + /> + + {events?.map((event) => { + if (event.eventType === 'alert') { + return ; + } + if (event.eventType === 'annotation') { + return ; + } + assertNever(event); + })} + + false} + /> + + ); +}; diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/timeline_theme.ts b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/timeline_theme.ts similarity index 94% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/timeline_theme.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/timeline_theme.ts index a1d7441fee539..21ad1240ca8e3 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/timeline_theme.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/timeline_theme.ts @@ -7,7 +7,7 @@ import { PartialTheme } from '@elastic/charts'; -export const TIME_LINE_THEME: PartialTheme = { +export const TIMELINE_THEME: PartialTheme = { highlighter: { point: { opacity: 0, diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline.tsx new file mode 100644 index 0000000000000..f02fde7d43faf --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline.tsx @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup, EuiPanel } from '@elastic/eui'; +import React, { useState } from 'react'; +import { EventsTimeline } from './events_timeline/events_timeline'; +import { InvestigationTimelineFilterBar } from './investigation_timeline_filter_bar/investigation_timeline_filter_bar'; + +export function InvestigationTimeline() { + const [eventTypes, setEventTypes] = useState([]); + + return ( + + + setEventTypes(selected)} + /> + + + + + ); +} diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_event_types_filter.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_event_types_filter.tsx new file mode 100644 index 0000000000000..e66425f60d54f --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_event_types_filter.tsx @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiFilterButton, + EuiFilterGroup, + EuiPopover, + EuiPopoverTitle, + EuiSelectable, + EuiSelectableOption, + useGeneratedHtmlId, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useState } from 'react'; + +interface Props { + onSelected: (eventTypes: string[]) => void; +} + +export function InvestigationEventTypesFilter({ onSelected }: Props) { + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + const [items, setItems] = useState([ + { + key: 'alert', + label: i18n.translate('xpack.investigateApp.investigationEventTypesFilter.alertLabel', { + defaultMessage: 'Alert', + }), + checked: 'on', + }, + { + key: 'annotation', + label: i18n.translate('xpack.investigateApp.investigationEventTypesFilter.annotationLabel', { + defaultMessage: 'Annotation', + }), + checked: 'on', + }, + ]); + + const togglePopover = () => { + setIsPopoverOpen(!isPopoverOpen); + }; + const closePopover = () => { + setIsPopoverOpen(false); + }; + + const filterGroupPopoverId = useGeneratedHtmlId({ + prefix: 'filterGroupPopover', + }); + + const handleChange = (newOptions: EuiSelectableOption[]) => { + setItems(newOptions); + + const selected = newOptions + .filter((option) => option.checked === 'on') + .map((option) => option.key!); + onSelected(selected); + }; + + const button = ( + item.checked !== 'off').length} + hasActiveFilters={!!items.find((item) => item.checked === 'on')} + numActiveFilters={items.filter((item) => item.checked === 'on').length} + > + {i18n.translate( + 'xpack.investigateApp.investigationEventTypesFilter.filtersFilterButtonLabel', + { defaultMessage: 'Filters' } + )} + + ); + + return ( + + + + {(list) => ( +
+ + {i18n.translate( + 'xpack.investigateApp.investigationEventTypesFilter.filterEventTypePopoverTitleLabel', + { defaultMessage: 'Filter event type' } + )} + + {list} +
+ )} +
+
+
+ ); +} diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_timeline_filter_bar.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_timeline_filter_bar.tsx new file mode 100644 index 0000000000000..16ecb2bd42a4d --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_timeline_filter_bar.tsx @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiDatePicker, EuiDatePickerRange, EuiFlexGroup } from '@elastic/eui'; +import { css } from '@emotion/react'; +import moment from 'moment'; +import React from 'react'; +import { useInvestigation } from '../../../contexts/investigation_context'; +import { InvestigationEventTypesFilter } from './investigation_event_types_filter'; + +interface Props { + onEventTypesSelected: (eventTypes: string[]) => void; +} + +export function InvestigationTimelineFilterBar({ onEventTypesSelected }: Props) { + const { globalParams, updateInvestigationParams } = useInvestigation(); + + return ( + + + + { + if (!date) return; + + updateInvestigationParams({ + timeRange: { + from: date.toISOString(), + to: globalParams.timeRange.to, + }, + }); + }} + showTimeSelect + /> + } + endDateControl={ + { + if (!date) return; + + updateInvestigationParams({ + timeRange: { + from: globalParams.timeRange.from, + to: date.toISOString(), + }, + }); + }} + showTimeSelect + /> + } + /> + + ); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/contexts/investigation_context.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/contexts/investigation_context.tsx similarity index 77% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/contexts/investigation_context.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/contexts/investigation_context.tsx index ec571d0e2db80..f086e48665566 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/contexts/investigation_context.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/contexts/investigation_context.tsx @@ -7,19 +7,16 @@ import { i18n } from '@kbn/i18n'; import { type GlobalWidgetParameters } from '@kbn/investigate-plugin/public'; -import { EcsFieldsResponse } from '@kbn/rule-registry-plugin/common'; import { GetInvestigationResponse, InvestigationItem, Item } from '@kbn/investigation-shared'; +import { EcsFieldsResponse } from '@kbn/rule-registry-plugin/common'; import { isEqual } from 'lodash'; import React, { createContext, useContext, useEffect, useRef, useState } from 'react'; import { useAddInvestigationItem } from '../../../hooks/use_add_investigation_item'; -import { useAddInvestigationNote } from '../../../hooks/use_add_investigation_note'; import { useDeleteInvestigationItem } from '../../../hooks/use_delete_investigation_item'; -import { useDeleteInvestigationNote } from '../../../hooks/use_delete_investigation_note'; -import { useFetchInvestigation } from '../../../hooks/use_fetch_investigation'; import { useFetchAlert } from '../../../hooks/use_fetch_alert'; +import { useFetchInvestigation } from '../../../hooks/use_fetch_investigation'; import { useKibana } from '../../../hooks/use_kibana'; import { useUpdateInvestigation } from '../../../hooks/use_update_investigation'; -import { useUpdateInvestigationNote } from '../../../hooks/use_update_investigation_note'; export type RenderedInvestigationItem = InvestigationItem & { loading: boolean; @@ -36,13 +33,6 @@ interface InvestigationContextProps { deleteItem: (itemId: string) => Promise; isAddingItem: boolean; isDeletingItem: boolean; - // note - addNote: (content: string) => Promise; - updateNote: (noteId: string, content: string) => Promise; - deleteNote: (noteId: string) => Promise; - isAddingNote: boolean; - isUpdatingNote: boolean; - isDeletingNote: boolean; } export const InvestigationContext = createContext({ @@ -54,13 +44,6 @@ export const InvestigationContext = createContext({ deleteItem: async () => {}, isAddingItem: false, isDeletingItem: false, - // note - addNote: async () => {}, - updateNote: async (noteId: string, content: string) => {}, - deleteNote: async (noteId: string) => {}, - isAddingNote: false, - isUpdatingNote: false, - isDeletingNote: false, }); export function useInvestigation() { @@ -90,32 +73,6 @@ export function InvestigationProvider({ Record >({}); - const { mutateAsync: addInvestigationNote, isLoading: isAddingNote } = useAddInvestigationNote(); - const { mutateAsync: updateInvestigationNote, isLoading: isUpdatingNote } = - useUpdateInvestigationNote(); - const { mutateAsync: deleteInvestigationNote, isLoading: isDeletingNote } = - useDeleteInvestigationNote(); - - const addNote = async (content: string) => { - await addInvestigationNote({ investigationId: initialInvestigation.id, note: { content } }); - refetch(); - }; - - const updateNote = async (noteId: string, content: string) => { - await updateInvestigationNote({ - investigationId: initialInvestigation.id, - noteId, - note: { content: content.trim() }, - }); - - refetch(); - }; - - const deleteNote = async (noteId: string) => { - await deleteInvestigationNote({ investigationId: initialInvestigation.id, noteId }); - refetch(); - }; - const { mutateAsync: updateInvestigation } = useUpdateInvestigation(); const { mutateAsync: addInvestigationItem, isLoading: isAddingItem } = useAddInvestigationItem(); const { mutateAsync: deleteInvestigationItem, isLoading: isDeletingItem } = @@ -221,12 +178,6 @@ export function InvestigationProvider({ deleteItem, isAddingItem, isDeletingItem, - addNote, - updateNote, - deleteNote, - isAddingNote, - isUpdatingNote, - isDeletingNote, }} > {children} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/investigation_details_page.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/investigation_details_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/investigation_details_page.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/investigation_details_page.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/types.ts b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/types.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/types.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_list.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_list.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_list.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_list_actions.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_list_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_list_actions.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_list_actions.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_stats.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_stats.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_stats.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_stats.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigations_error.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigations_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigations_error.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigations_error.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/search_bar.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/search_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/search_bar.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/search_bar.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/status_filter.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/status_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/status_filter.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/status_filter.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/tags_filter.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/tags_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/tags_filter.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/tags_filter.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/investigation_list_page.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/investigation_list_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/investigation_list_page.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/investigation_list_page.tsx diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/plugin.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/plugin.tsx new file mode 100644 index 0000000000000..92c94cef94521 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/plugin.tsx @@ -0,0 +1,155 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { + AppMountParameters, + AppStatus, + CoreSetup, + CoreStart, + DEFAULT_APP_CATEGORIES, + Plugin, + PluginInitializerContext, +} from '@kbn/core/public'; +import { INVESTIGATE_APP_ID } from '@kbn/deeplinks-observability/constants'; +import { i18n } from '@kbn/i18n'; +import type { Logger } from '@kbn/logging'; +import { once } from 'lodash'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import type { InvestigateAppServices } from './services/types'; +import type { + ConfigSchema, + InvestigateAppPublicSetup, + InvestigateAppPublicStart, + InvestigateAppSetupDependencies, + InvestigateAppStartDependencies, +} from './types'; +import { createInvestigateAppRepositoryClient, InvestigateAppRepositoryClient } from './api'; + +const getCreateEsqlService = once(() => import('./services/esql').then((m) => m.createEsqlService)); + +export class InvestigateAppPlugin + implements + Plugin< + InvestigateAppPublicSetup, + InvestigateAppPublicStart, + InvestigateAppSetupDependencies, + InvestigateAppStartDependencies + > +{ + logger: Logger; + config: ConfigSchema; + repositoryClient!: InvestigateAppRepositoryClient; + + constructor(context: PluginInitializerContext) { + this.logger = context.logger.get(); + this.config = context.config.get(); + } + + setup( + coreSetup: CoreSetup, + pluginsSetup: InvestigateAppSetupDependencies + ): InvestigateAppPublicSetup { + this.repositoryClient = createInvestigateAppRepositoryClient(coreSetup); + + coreSetup.application.register({ + id: INVESTIGATE_APP_ID, + title: i18n.translate('xpack.investigateApp.appTitle', { + defaultMessage: 'Investigations', + }), + euiIconType: 'logoObservability', + appRoute: '/app/investigations', + category: DEFAULT_APP_CATEGORIES.observability, + status: this.config.enabled ? AppStatus.accessible : AppStatus.inaccessible, + visibleIn: [], + deepLinks: [ + { + id: 'investigations', + title: i18n.translate('xpack.investigateApp.investigationsDeepLinkTitle', { + defaultMessage: 'All investigations', + }), + path: '/', + }, + { + id: 'investigationDetails', + title: i18n.translate('xpack.investigateApp.newInvestigateDeepLinkTitle', { + defaultMessage: 'New investigation', + }), + path: '/new', + }, + ], + mount: async (appMountParameters: AppMountParameters) => { + // Load application bundle and Get start services + const [{ Application }, [coreStart, pluginsStart], createEsqlService] = await Promise.all([ + import('./application'), + coreSetup.getStartServices(), + getCreateEsqlService(), + ]); + + const services: InvestigateAppServices = { + ...coreStart, + esql: createEsqlService({ + data: pluginsStart.data, + dataViews: pluginsStart.dataViews, + lens: pluginsStart.lens, + }), + charts: pluginsStart.charts, + investigateAppRepositoryClient: this.repositoryClient, + }; + + ReactDOM.render( + , + appMountParameters.element + ); + + return () => { + ReactDOM.unmountComponentAtNode(appMountParameters.element); + }; + }, + }); + + const pluginsStartPromise = coreSetup + .getStartServices() + .then(([, pluginsStart]) => pluginsStart); + + Promise.all([ + pluginsStartPromise, + import('./items/register_items').then((m) => m.registerItems), + getCreateEsqlService(), + ]).then(([pluginsStart, registerItems, createEsqlService]) => { + registerItems({ + dependencies: { + setup: pluginsSetup, + start: pluginsStart, + }, + services: { + investigateAppRepositoryClient: this.repositoryClient, + esql: createEsqlService({ + data: pluginsStart.data, + dataViews: pluginsStart.dataViews, + lens: pluginsStart.lens, + }), + charts: pluginsStart.charts, + }, + }); + }); + + return {}; + } + + start( + coreStart: CoreStart, + pluginsStart: InvestigateAppStartDependencies + ): InvestigateAppPublicStart { + return {}; + } +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/routes/config.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/routes/config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/routes/config.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/routes/config.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/services/esql.ts b/x-pack/solutions/observability/plugins/investigate_app/public/services/esql.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/services/esql.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/services/esql.ts diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/services/types.ts b/x-pack/solutions/observability/plugins/investigate_app/public/services/types.ts new file mode 100644 index 0000000000000..04a2a7d063e9f --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/services/types.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ChartsPluginStart } from '@kbn/charts-plugin/public'; +import type { EsqlService } from './esql'; +import type { InvestigateAppRepositoryClient } from '../api'; + +export interface InvestigateAppServices { + esql: EsqlService; + charts: ChartsPluginStart; + investigateAppRepositoryClient: InvestigateAppRepositoryClient; +} diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/types.ts b/x-pack/solutions/observability/plugins/investigate_app/public/types.ts new file mode 100644 index 0000000000000..da81bcdbc0c92 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/types.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { + ObservabilityAIAssistantPublicSetup, + ObservabilityAIAssistantPublicStart, +} from '@kbn/observability-ai-assistant-plugin/public'; +import type { + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, +} from '@kbn/observability-ai-assistant-app-plugin/public'; +import { ChartsPluginStart } from '@kbn/charts-plugin/public'; +import type { ContentManagementPublicStart } from '@kbn/content-management-plugin/public'; +import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; +import type { + DataViewsPublicPluginSetup, + DataViewsPublicPluginStart, +} from '@kbn/data-views-plugin/public'; +import type { + DatasetQualityPluginSetup, + DatasetQualityPluginStart, +} from '@kbn/dataset-quality-plugin/public'; +import type { EmbeddableSetup, EmbeddableStart } from '@kbn/embeddable-plugin/public'; +import type { + InvestigatePublicSetup, + InvestigatePublicStart, +} from '@kbn/investigate-plugin/public'; +import type { LensPublicSetup, LensPublicStart } from '@kbn/lens-plugin/public'; +import type { + ObservabilitySharedPluginSetup, + ObservabilitySharedPluginStart, +} from '@kbn/observability-shared-plugin/public'; +import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/public'; +import type { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; + +/* eslint-disable @typescript-eslint/no-empty-interface*/ + +export interface ConfigSchema { + enabled: boolean; +} + +export interface InvestigateAppSetupDependencies { + investigate: InvestigatePublicSetup; + observabilityShared: ObservabilitySharedPluginSetup; + observabilityAIAssistant: ObservabilityAIAssistantPublicSetup; + observabilityAIAssistantApp: ObservabilityAIAssistantAppPublicSetup; + lens: LensPublicSetup; + dataViews: DataViewsPublicPluginSetup; + data: DataPublicPluginSetup; + embeddable: EmbeddableSetup; + contentManagement: {}; + datasetQuality: DatasetQualityPluginSetup; + unifiedSearch: {}; + uiActions: UiActionsSetup; + security: SecurityPluginSetup; +} + +export interface InvestigateAppStartDependencies { + investigate: InvestigatePublicStart; + observabilityShared: ObservabilitySharedPluginStart; + observabilityAIAssistant: ObservabilityAIAssistantPublicStart; + observabilityAIAssistantApp: ObservabilityAIAssistantAppPublicStart; + lens: LensPublicStart; + dataViews: DataViewsPublicPluginStart; + data: DataPublicPluginStart; + embeddable: EmbeddableStart; + contentManagement: ContentManagementPublicStart; + datasetQuality: DatasetQualityPluginStart; + unifiedSearch: UnifiedSearchPublicPluginStart; + uiActions: UiActionsStart; + security: SecurityPluginStart; + charts: ChartsPluginStart; +} + +export interface InvestigateAppPublicSetup {} + +export interface InvestigateAppPublicStart {} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/find_scrollable_parent.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/find_scrollable_parent.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/find_scrollable_parent.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/find_scrollable_parent.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/get_data_table_from_esql_response.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/get_data_table_from_esql_response.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/get_data_table_from_esql_response.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/get_data_table_from_esql_response.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/get_es_filter_from_overrides.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/get_es_filter_from_overrides.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/get_es_filter_from_overrides.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/get_es_filter_from_overrides.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/get_kibana_columns.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/get_kibana_columns.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/get_kibana_columns.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/get_kibana_columns.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/get_lens_attrs_for_suggestion.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/get_lens_attrs_for_suggestion.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/get_lens_attrs_for_suggestion.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/get_lens_attrs_for_suggestion.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/clients/create_entities_es_client.ts b/x-pack/solutions/observability/plugins/investigate_app/server/clients/create_entities_es_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/clients/create_entities_es_client.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/clients/create_entities_es_client.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/config.ts b/x-pack/solutions/observability/plugins/investigate_app/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/config.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/config.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/index.ts b/x-pack/solutions/observability/plugins/investigate_app/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/index.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/index.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/fetcher.test.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/fetcher.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/fetcher.test.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/fetcher.test.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/fetcher.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/fetcher.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/fetcher.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/fetcher.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/helpers/metrics.test.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/helpers/metrics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/helpers/metrics.test.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/helpers/metrics.test.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/helpers/metrics.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/helpers/metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/helpers/metrics.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/helpers/metrics.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/register.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/register.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/register.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/register.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/type.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/type.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/type.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/type.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/get_document_categories.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/get_document_categories.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/get_document_categories.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/get_document_categories.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/get_sample_documents.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/get_sample_documents.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/get_sample_documents.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/get_sample_documents.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/queries/index.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/queries/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/queries/index.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/queries/index.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/models/investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/models/investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/models/investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/models/investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/models/investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/server/models/investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/models/investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/models/investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/models/investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/server/models/investigation_note.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/models/investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/models/investigation_note.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/models/pagination.ts b/x-pack/solutions/observability/plugins/investigate_app/server/models/pagination.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/models/pagination.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/models/pagination.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/plugin.ts b/x-pack/solutions/observability/plugins/investigate_app/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/plugin.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/routes/create_investigate_app_server_route.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/create_investigate_app_server_route.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/routes/create_investigate_app_server_route.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/routes/create_investigate_app_server_route.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts similarity index 97% rename from x-pack/plugins/observability_solution/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts index 494e13efcba95..397401803382e 100644 --- a/x-pack/plugins/observability_solution/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts @@ -6,6 +6,8 @@ */ import { + GetEntitiesResponse, + GetEventsResponse, createInvestigationItemParamsSchema, createInvestigationNoteParamsSchema, createInvestigationParamsSchema, @@ -15,18 +17,17 @@ import { findInvestigationsParamsSchema, getAllInvestigationStatsParamsSchema, getAllInvestigationTagsParamsSchema, + getEntitiesParamsSchema, + getEventsParamsSchema, getInvestigationItemsParamsSchema, getInvestigationNotesParamsSchema, getInvestigationParamsSchema, updateInvestigationItemParamsSchema, updateInvestigationNoteParamsSchema, updateInvestigationParamsSchema, - getEventsParamsSchema, - GetEventsResponse, - getEntitiesParamsSchema, - GetEntitiesResponse, } from '@kbn/investigation-shared'; import { ScopedAnnotationsClient } from '@kbn/observability-plugin/server'; +import { createEntitiesESClient } from '../clients/create_entities_es_client'; import { createInvestigation } from '../services/create_investigation'; import { createInvestigationItem } from '../services/create_investigation_item'; import { createInvestigationNote } from '../services/create_investigation_note'; @@ -34,20 +35,20 @@ import { deleteInvestigation } from '../services/delete_investigation'; import { deleteInvestigationItem } from '../services/delete_investigation_item'; import { deleteInvestigationNote } from '../services/delete_investigation_note'; import { findInvestigations } from '../services/find_investigations'; +import { AlertsClient, getAlertsClient } from '../services/get_alerts_client'; +import { getAllInvestigationStats } from '../services/get_all_investigation_stats'; import { getAllInvestigationTags } from '../services/get_all_investigation_tags'; +import { getEntitiesWithSource } from '../services/get_entities'; +import { getAlertEvents, getAnnotationEvents } from '../services/get_events'; import { getInvestigation } from '../services/get_investigation'; import { getInvestigationItems } from '../services/get_investigation_items'; import { getInvestigationNotes } from '../services/get_investigation_notes'; import { investigationRepositoryFactory } from '../services/investigation_repository'; import { updateInvestigation } from '../services/update_investigation'; -import { getAlertEvents, getAnnotationEvents } from '../services/get_events'; -import { AlertsClient, getAlertsClient } from '../services/get_alerts_client'; import { updateInvestigationItem } from '../services/update_investigation_item'; import { updateInvestigationNote } from '../services/update_investigation_note'; import { createInvestigateAppServerRoute } from './create_investigate_app_server_route'; -import { getAllInvestigationStats } from '../services/get_all_investigation_stats'; -import { getEntitiesWithSource } from '../services/get_entities'; -import { createEntitiesESClient } from '../clients/create_entities_es_client'; +import { rootCauseAnalysisRoute } from './rca/route'; const createInvestigationRoute = createInvestigateAppServerRoute({ endpoint: 'POST /api/observability/investigations 2023-10-31', @@ -334,12 +335,17 @@ const getEventsRoute = createInvestigateAppServerRoute({ const alertsClient: AlertsClient = await getAlertsClient({ plugins, request }); const events: GetEventsResponse = []; - if (annotationsClient) { + const includeAllEventTypes = !params?.query?.eventTypes || params.query.eventTypes.length === 0; + + if ( + annotationsClient && + (includeAllEventTypes || params?.query?.eventTypes?.includes('annotation')) + ) { const annotationEvents = await getAnnotationEvents(params?.query ?? {}, annotationsClient); events.push(...annotationEvents); } - if (alertsClient) { + if (alertsClient && (includeAllEventTypes || params?.query?.eventTypes?.includes('alert'))) { const alertEvents = await getAlertEvents(params?.query ?? {}, alertsClient); events.push(...alertEvents); } @@ -400,6 +406,7 @@ export function getGlobalInvestigateAppServerRouteRepository() { ...getEntitiesRoute, ...getAllInvestigationStatsRoute, ...getAllInvestigationTagsRoute, + ...rootCauseAnalysisRoute, }; } diff --git a/x-pack/solutions/observability/plugins/investigate_app/server/routes/rca/route.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/rca/route.ts new file mode 100644 index 0000000000000..c4b71d7faa4b9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/server/routes/rca/route.ts @@ -0,0 +1,163 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Observable, catchError, from, of, share, switchMap, toArray } from 'rxjs'; +import { ServerSentEventBase } from '@kbn/sse-utils'; +import { + RootCauseAnalysisEvent, + runRootCauseAnalysis, +} from '@kbn/observability-ai-server/root_cause_analysis'; +import { z } from '@kbn/zod'; +import datemath from '@elastic/datemath'; +import { OBSERVABILITY_LOGS_DATA_ACCESS_LOG_SOURCES_ID } from '@kbn/management-settings-ids'; +import { createObservabilityEsClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { preconditionFailed } from '@hapi/boom'; +import { createInvestigateAppServerRoute } from '../create_investigate_app_server_route'; +import { investigationRepositoryFactory } from '../../services/investigation_repository'; + +export const rootCauseAnalysisRoute = createInvestigateAppServerRoute({ + endpoint: 'POST /internal/observability/investigation/root_cause_analysis', + options: { + tags: [], + }, + params: z.object({ + body: z.object({ + investigationId: z.string(), + rangeFrom: z.string(), + rangeTo: z.string(), + serviceName: z.string(), + context: z.string(), + connectorId: z.string(), + completeInBackground: z.boolean().optional(), + }), + }), + handler: async ({ + params, + plugins, + request, + context: requestContext, + logger, + }): Promise>> => { + const { + body: { + investigationId, + context, + rangeFrom, + rangeTo, + serviceName, + connectorId, + completeInBackground, + }, + } = params; + + if (!plugins.observabilityAIAssistant) { + throw preconditionFailed('Observability AI Assistant plugin is not available'); + } + + const start = datemath.parse(rangeFrom)?.valueOf()!; + const end = datemath.parse(rangeTo)?.valueOf()!; + + const coreContext = await requestContext.core; + + const coreEsClient = coreContext.elasticsearch.client.asCurrentUser; + const soClient = coreContext.savedObjects.client; + const uiSettingsClient = coreContext.uiSettings.client; + + const repository = investigationRepositoryFactory({ soClient, logger }); + + const esClient = createObservabilityEsClient({ + client: coreEsClient, + logger, + plugin: 'investigateApp', + }); + + const [ + investigation, + rulesClient, + alertsClient, + inferenceClient, + observabilityAIAssistantClient, + spaceId = 'default', + apmIndices, + logSources, + sloSummaryIndices, + ] = await Promise.all([ + repository.findById(investigationId), + (await plugins.alerting.start()).getRulesClientWithRequest(request), + (await plugins.ruleRegistry.start()).getRacClientWithRequest(request), + (await plugins.inference.start()).getClient({ request }), + plugins + .observabilityAIAssistant!.start() + .then((observabilityAIAssistantStart) => + observabilityAIAssistantStart.service.getClient({ request, scopes: ['observability'] }) + ), + (await plugins.spaces?.start())?.spacesService.getSpaceId(request), + plugins.apmDataAccess.setup.getApmIndices(soClient), + uiSettingsClient.get(OBSERVABILITY_LOGS_DATA_ACCESS_LOG_SOURCES_ID) as Promise, + (await plugins.slo.start()).getSloClientWithRequest(request).getSummaryIndices(), + ]); + + const next$ = runRootCauseAnalysis({ + alertsClient, + connectorId, + start, + end, + esClient, + inferenceClient, + indices: { + logs: logSources, + traces: [apmIndices.span, apmIndices.error, apmIndices.transaction], + sloSummaries: sloSummaryIndices, + }, + rulesClient, + observabilityAIAssistantClient, + serviceName, + spaceId, + context, + logger, + }).pipe( + switchMap((event) => { + return of({ + type: 'event' as const, + event, + }); + }) + ); + + if (completeInBackground) { + const shared$ = next$.pipe(share()); + + shared$ + .pipe( + toArray(), + catchError(() => { + return of(); + }), + switchMap((events) => { + return from( + repository.save({ + ...investigation, + rootCauseAnalysis: { + events: events.map(({ event }) => event), + }, + }) + ); + }) + ) + .subscribe({ + error: (error) => { + logger.error(`Failed to update investigation: ${error.message}`); + logger.error(error); + }, + }); + + return shared$; + } + + return next$; + }, +}); diff --git a/x-pack/plugins/observability_solution/investigate_app/server/routes/register_routes.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/routes/register_routes.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/routes/register_routes.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/routes/types.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/routes/types.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/routes/types.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/saved_objects/investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/saved_objects/investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/saved_objects/investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/saved_objects/investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation_note.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation_note.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation_note.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation_note.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/find_investigations.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/find_investigations.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/find_investigations.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/find_investigations.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_alerts_client.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_alerts_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_alerts_client.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_alerts_client.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_all_investigation_stats.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_all_investigation_stats.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_all_investigation_stats.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_all_investigation_stats.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_all_investigation_tags.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_all_investigation_tags.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_all_investigation_tags.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_all_investigation_tags.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_entities.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_entities.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_entities.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_entities.ts diff --git a/x-pack/solutions/observability/plugins/investigate_app/server/services/get_events.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_events.ts new file mode 100644 index 0000000000000..3cf87dc54b87c --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_events.ts @@ -0,0 +1,107 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import datemath from '@elastic/datemath'; +import { + AlertEventResponse, + AnnotationEventResponse, + GetEventsParams, + alertEventSchema, + annotationEventSchema, +} from '@kbn/investigation-shared'; +import { ScopedAnnotationsClient } from '@kbn/observability-plugin/server'; +import { + ALERT_REASON, + ALERT_RULE_CATEGORY, + ALERT_START, + ALERT_STATUS, + ALERT_UUID, +} from '@kbn/rule-data-utils'; +import { rangeQuery } from '../lib/queries'; +import { AlertsClient } from './get_alerts_client'; + +export async function getAnnotationEvents( + params: GetEventsParams, + annotationsClient: ScopedAnnotationsClient +): Promise { + const response = await annotationsClient.find({ + start: params?.rangeFrom, + end: params?.rangeTo, + filter: params?.filter, + size: 100, + }); + + // we will return only "point_in_time" annotations + const events = response.items + .filter((item) => !item.event?.end) + .map((item) => { + const hostName = item.host?.name; + const serviceName = item.service?.name; + const serviceVersion = item.service?.version; + const sloId = item.slo?.id; + const sloInstanceId = item.slo?.instanceId; + + return { + id: item.id, + title: item.annotation.title, + description: item.message, + timestamp: new Date(item['@timestamp']).getTime(), + eventType: 'annotation', + annotationType: item.annotation.type, + source: { + ...(hostName ? { 'host.name': hostName } : undefined), + ...(serviceName ? { 'service.name': serviceName } : undefined), + ...(serviceVersion ? { 'service.version': serviceVersion } : undefined), + ...(sloId ? { 'slo.id': sloId } : undefined), + ...(sloInstanceId ? { 'slo.instanceId': sloInstanceId } : undefined), + }, + }; + }); + + return annotationEventSchema.array().parse(events); +} + +export async function getAlertEvents( + params: GetEventsParams, + alertsClient: AlertsClient +): Promise { + const startInMs = datemath.parse(params?.rangeFrom ?? 'now-15m')!.valueOf(); + const endInMs = datemath.parse(params?.rangeTo ?? 'now')!.valueOf(); + const filterJSON = params?.filter ? JSON.parse(params.filter) : {}; + + const body = { + size: 100, + track_total_hits: false, + query: { + bool: { + filter: [ + ...rangeQuery(startInMs, endInMs, ALERT_START), + ...Object.keys(filterJSON).map((filterKey) => ({ + term: { [filterKey]: filterJSON[filterKey] }, + })), + ], + }, + }, + }; + + const response = await alertsClient.search(body); + + const events = response.hits.hits.map((hit) => { + const _source = hit._source; + + return { + id: _source[ALERT_UUID], + title: `${_source[ALERT_RULE_CATEGORY]} breached`, + description: _source[ALERT_REASON], + timestamp: new Date(_source[ALERT_START] as string).getTime(), + eventType: 'alert', + alertStatus: _source[ALERT_STATUS], + }; + }); + + return alertEventSchema.array().parse(events); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation_items.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation_items.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation_items.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation_items.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation_notes.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation_notes.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation_notes.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation_notes.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/investigation_repository.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/investigation_repository.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/investigation_repository.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/investigation_repository.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation_note.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation_note.ts diff --git a/x-pack/solutions/observability/plugins/investigate_app/server/types.ts b/x-pack/solutions/observability/plugins/investigate_app/server/types.ts new file mode 100644 index 0000000000000..705339dfbf2e9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/server/types.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; +import type { + RuleRegistryPluginSetupContract, + RuleRegistryPluginStartContract, +} from '@kbn/rule-registry-plugin/server'; +import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server/plugin'; +import type { SLOServerStart, SLOServerSetup } from '@kbn/slo-plugin/server'; +import type { InferenceServerStart, InferenceServerSetup } from '@kbn/inference-plugin/server'; +import type { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; +import type { + ApmDataAccessPluginStart, + ApmDataAccessPluginSetup, +} from '@kbn/apm-data-access-plugin/server'; +import type { + ObservabilityAIAssistantServerStart, + ObservabilityAIAssistantServerSetup, +} from '@kbn/observability-ai-assistant-plugin/server'; +import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; + +/* eslint-disable @typescript-eslint/no-empty-interface*/ + +export interface ConfigSchema {} + +export interface InvestigateAppSetupDependencies { + observability: ObservabilityPluginSetup; + ruleRegistry: RuleRegistryPluginSetupContract; + slo: SLOServerSetup; + alerting: AlertingServerSetup; + inference: InferenceServerSetup; + spaces?: SpacesPluginSetup; + apmDataAccess: ApmDataAccessPluginSetup; + observabilityAIAssistant?: ObservabilityAIAssistantServerSetup; + usageCollection: UsageCollectionSetup; +} + +export interface InvestigateAppStartDependencies { + ruleRegistry: RuleRegistryPluginStartContract; + slo: SLOServerStart; + alerting: AlertingServerStart; + inference: InferenceServerStart; + spaces?: SpacesPluginStart; + apmDataAccess: ApmDataAccessPluginStart; + observabilityAIAssistant?: ObservabilityAIAssistantServerStart; +} + +export interface InvestigateAppServerSetup {} + +export interface InvestigateAppServerStart {} diff --git a/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json b/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json new file mode 100644 index 0000000000000..55e63cfdcf95f --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json @@ -0,0 +1,84 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../typings/**/*", + "common/**/*", + "public/**/*", + "typings/**/*", + "public/**/*.json", + "server/**/*", + ".storybook/**/*" + ], + "exclude": [ + "target/**/*", + ".storybook/**/*.js" + ], + "kbn_references": [ + "@kbn/alerting-plugin", + "@kbn/apm-data-access-plugin", + "@kbn/calculate-auto", + "@kbn/charts-plugin", + "@kbn/config-schema", + "@kbn/content-management-plugin", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-server", + "@kbn/core-security-common", + "@kbn/core", + "@kbn/data-plugin", + "@kbn/data-views-plugin", + "@kbn/dataset-quality-plugin", + "@kbn/deeplinks-observability", + "@kbn/embeddable-plugin", + "@kbn/entities-schema", + "@kbn/es-query", + "@kbn/es-types", + "@kbn/esql-utils", + "@kbn/esql", + "@kbn/expressions-plugin", + "@kbn/field-types", + "@kbn/i18n-react", + "@kbn/i18n", + "@kbn/inference-common", + "@kbn/inference-plugin", + "@kbn/investigate-plugin", + "@kbn/investigation-shared", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/lens-embeddable-utils", + "@kbn/lens-plugin", + "@kbn/licensing-plugin", + "@kbn/logging", + "@kbn/management-settings-ids", + "@kbn/ml-random-sampler-utils", + "@kbn/observability-ai-assistant-app-plugin", + "@kbn/observability-ai-assistant-plugin", + "@kbn/observability-ai-server", + "@kbn/observability-plugin", + "@kbn/observability-shared-plugin", + "@kbn/observability-utils-browser", + "@kbn/observability-utils-server", + "@kbn/presentation-containers", + "@kbn/react-kibana-context-theme", + "@kbn/rule-data-utils", + "@kbn/rule-registry-plugin", + "@kbn/saved-objects-finder-plugin", + "@kbn/security-plugin", + "@kbn/server-route-repository-client", + "@kbn/server-route-repository", + "@kbn/shared-ux-link-redirect-app", + "@kbn/shared-ux-router", + "@kbn/slo-plugin", + "@kbn/spaces-plugin", + "@kbn/sse-utils", + "@kbn/std", + "@kbn/ui-actions-plugin", + "@kbn/unified-search-plugin", + "@kbn/usage-collection-plugin", + "@kbn/utility-types-jest", + "@kbn/visualization-utils", + "@kbn/zod", + ], +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/jest_setup.js b/x-pack/solutions/observability/plugins/observability/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/jest_setup.js rename to x-pack/solutions/observability/plugins/observability/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/main.js b/x-pack/solutions/observability/plugins/observability/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/main.js rename to x-pack/solutions/observability/plugins/observability/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/preview.js b/x-pack/solutions/observability/plugins/observability/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/preview.js rename to x-pack/solutions/observability/plugins/observability/.storybook/preview.js diff --git a/x-pack/plugins/observability_solution/observability/README.md b/x-pack/solutions/observability/plugins/observability/README.md similarity index 100% rename from x-pack/plugins/observability_solution/observability/README.md rename to x-pack/solutions/observability/plugins/observability/README.md diff --git a/x-pack/plugins/observability_solution/observability/common/annotations.ts b/x-pack/solutions/observability/plugins/observability/common/annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/annotations.ts rename to x-pack/solutions/observability/plugins/observability/common/annotations.ts diff --git a/x-pack/plugins/observability_solution/observability/common/constants.ts b/x-pack/solutions/observability/plugins/observability/common/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/constants.ts rename to x-pack/solutions/observability/plugins/observability/common/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/color_palette.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/color_palette.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/color_palette.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/color_palette.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/bytes.test.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/bytes.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/bytes.test.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/bytes.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/bytes.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/bytes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/bytes.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/bytes.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/datetime.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/datetime.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/datetime.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/datetime.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/high_precision.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/high_precision.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/high_precision.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/high_precision.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/index.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/index.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/index.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/number.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/number.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/number.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/number.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/percent.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/percent.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/percent.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/percent.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/snapshot_metric_formats.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/snapshot_metric_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/snapshot_metric_formats.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/snapshot_metric_formats.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/types.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/types.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/types.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/get_view_in_app_url.test.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/get_view_in_app_url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/get_view_in_app_url.test.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/get_view_in_app_url.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/get_view_in_app_url.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/get_view_in_app_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/get_view_in_app_url.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/get_view_in_app_url.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.test.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.test.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/metric_value_formatter.test.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/metric_value_formatter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/metric_value_formatter.test.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/metric_value_formatter.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/metric_value_formatter.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/metric_value_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/metric_value_formatter.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/metric_value_formatter.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/types.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/types.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/types.ts diff --git a/x-pack/plugins/observability_solution/observability/common/guided_onboarding/kubernetes_guide_config.tsx b/x-pack/solutions/observability/plugins/observability/common/guided_onboarding/kubernetes_guide_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/guided_onboarding/kubernetes_guide_config.tsx rename to x-pack/solutions/observability/plugins/observability/common/guided_onboarding/kubernetes_guide_config.tsx diff --git a/x-pack/plugins/observability_solution/observability/common/i18n.ts b/x-pack/solutions/observability/plugins/observability/common/i18n.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/i18n.ts rename to x-pack/solutions/observability/plugins/observability/common/i18n.ts diff --git a/x-pack/plugins/observability_solution/observability/common/index.ts b/x-pack/solutions/observability/plugins/observability/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/index.ts rename to x-pack/solutions/observability/plugins/observability/common/index.ts diff --git a/x-pack/plugins/observability_solution/observability/common/locators/alerts.test.ts b/x-pack/solutions/observability/plugins/observability/common/locators/alerts.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/locators/alerts.test.ts rename to x-pack/solutions/observability/plugins/observability/common/locators/alerts.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/locators/alerts.ts b/x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/locators/alerts.ts rename to x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts diff --git a/x-pack/plugins/observability_solution/observability/common/locators/paths.ts b/x-pack/solutions/observability/plugins/observability/common/locators/paths.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/locators/paths.ts rename to x-pack/solutions/observability/plugins/observability/common/locators/paths.ts diff --git a/x-pack/plugins/observability_solution/observability/common/processor_event.ts b/x-pack/solutions/observability/plugins/observability/common/processor_event.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/processor_event.ts rename to x-pack/solutions/observability/plugins/observability/common/processor_event.ts diff --git a/x-pack/plugins/observability_solution/observability/common/progressive_loading.ts b/x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/progressive_loading.ts rename to x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts diff --git a/x-pack/plugins/observability_solution/observability/common/typings.ts b/x-pack/solutions/observability/plugins/observability/common/typings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/typings.ts rename to x-pack/solutions/observability/plugins/observability/common/typings.ts diff --git a/x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts b/x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts rename to x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts b/x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/alerting/get_related_alerts_query.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/alerting/get_related_alerts_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/alerting/get_related_alerts_query.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/alerting/get_related_alerts_query.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/alerting/get_related_alerts_query.ts b/x-pack/solutions/observability/plugins/observability/common/utils/alerting/get_related_alerts_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/alerting/get_related_alerts_query.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/alerting/get_related_alerts_query.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/alerting/types.ts b/x-pack/solutions/observability/plugins/observability/common/utils/alerting/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/alerting/types.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/alerting/types.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/array_union_to_callable.ts b/x-pack/solutions/observability/plugins/observability/common/utils/array_union_to_callable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/array_union_to_callable.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/array_union_to_callable.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/as_mutable_array.ts b/x-pack/solutions/observability/plugins/observability/common/utils/as_mutable_array.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/as_mutable_array.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/as_mutable_array.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.ts b/x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/index.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/index.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/index.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/size.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/size.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/size.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/size.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts b/x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/get_interval_in_seconds.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/get_interval_in_seconds.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/get_interval_in_seconds.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/get_interval_in_seconds.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/get_interval_in_seconds.ts b/x-pack/solutions/observability/plugins/observability/common/utils/get_interval_in_seconds.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/get_interval_in_seconds.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/get_interval_in_seconds.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/is_finite_number.ts b/x-pack/solutions/observability/plugins/observability/common/utils/is_finite_number.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/is_finite_number.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/is_finite_number.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/join_by_key/index.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/join_by_key/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/join_by_key/index.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/join_by_key/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/join_by_key/index.ts b/x-pack/solutions/observability/plugins/observability/common/utils/join_by_key/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/join_by_key/index.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/join_by_key/index.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/maybe.ts b/x-pack/solutions/observability/plugins/observability/common/utils/maybe.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/maybe.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/maybe.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/pick_keys.ts b/x-pack/solutions/observability/plugins/observability/common/utils/pick_keys.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/pick_keys.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/pick_keys.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts b/x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/custom_threshold.md b/x-pack/solutions/observability/plugins/observability/dev_docs/custom_threshold.md similarity index 77% rename from x-pack/plugins/observability_solution/observability/dev_docs/custom_threshold.md rename to x-pack/solutions/observability/plugins/observability/dev_docs/custom_threshold.md index cdf986adb6215..e8ec5dbbaa05e 100644 --- a/x-pack/plugins/observability_solution/observability/dev_docs/custom_threshold.md +++ b/x-pack/solutions/observability/plugins/observability/dev_docs/custom_threshold.md @@ -7,7 +7,7 @@ Custom threshold rule is GA since 8.13. ### With data forge > [!TIP] -> The following commands uses [kbn-data-forge](../../../../packages/kbn-data-forge/README.md) to generate some data for testing Custom threshold rule. +> The following commands uses [kbn-data-forge](../../../../../platform/packages/shared/kbn-data-forge/README.md) to generate some data for testing Custom threshold rule. Basic command to generate host data for 7 hosts: ```sh @@ -33,7 +33,7 @@ Get help with the data forge tool: `node x-pack/scripts/data_forge.js --help` ### With synthtrace > [!TIP] -> The following commands uses [kbn-apm-synthtrace](../../../../packages/kbn-apm-synthtrace) to generate some data for testing Custom threshold rule. +> The following commands uses [kbn-apm-synthtrace](../../../../../packages/kbn-apm-synthtrace) to generate some data for testing Custom threshold rule. Basic command to generate APM data for 3 services: ```sh diff --git a/x-pack/solutions/observability/plugins/observability/dev_docs/feature_flags.md b/x-pack/solutions/observability/plugins/observability/dev_docs/feature_flags.md new file mode 100644 index 0000000000000..3b06f83096dfe --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/dev_docs/feature_flags.md @@ -0,0 +1,16 @@ +## Feature flags and advanced settings + +To set up a flagged feature or other advanced setting, add the name of the feature key (`observability:myFeature`) to [common/ui_settings_keys.ts](../common/ui_settings_keys.ts) and the feature parameters to [server/ui_settings.ts](../server/ui_settings.ts). + +Test for the feature like: + +```js +import { myFeatureEnabled } from '../ui_settings_keys'; +if (core.uiSettings.get(myFeatureEnabled)) { + doStuff(); +} +``` + +In order for telemetry to be collected, the keys and types need to be added in [src/plugins/kibana_usage_collection/server/collectors/management/schema.ts](../../../../../src/plugins/kibana_usage_collection/server/collectors/management/schema.ts) and [src/plugins/kibana_usage_collection/server/collectors/management/types.ts](../../../../src/plugins/kibana_usage_collection/server/collectors/management/types.ts). + +Settings can be managed in Kibana under Stack Management > Advanced Settings > Observability. diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/images/data_forge_custom_threshold_rule_cpu.png b/x-pack/solutions/observability/plugins/observability/dev_docs/images/data_forge_custom_threshold_rule_cpu.png similarity index 100% rename from x-pack/plugins/observability_solution/observability/dev_docs/images/data_forge_custom_threshold_rule_cpu.png rename to x-pack/solutions/observability/plugins/observability/dev_docs/images/data_forge_custom_threshold_rule_cpu.png diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/images/data_forge_data_view.png b/x-pack/solutions/observability/plugins/observability/dev_docs/images/data_forge_data_view.png similarity index 100% rename from x-pack/plugins/observability_solution/observability/dev_docs/images/data_forge_data_view.png rename to x-pack/solutions/observability/plugins/observability/dev_docs/images/data_forge_data_view.png diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/images/synthtrace_custom_threshold_rule.png b/x-pack/solutions/observability/plugins/observability/dev_docs/images/synthtrace_custom_threshold_rule.png similarity index 100% rename from x-pack/plugins/observability_solution/observability/dev_docs/images/synthtrace_custom_threshold_rule.png rename to x-pack/solutions/observability/plugins/observability/dev_docs/images/synthtrace_custom_threshold_rule.png diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/images/synthtrace_data_view.png b/x-pack/solutions/observability/plugins/observability/dev_docs/images/synthtrace_data_view.png similarity index 100% rename from x-pack/plugins/observability_solution/observability/dev_docs/images/synthtrace_data_view.png rename to x-pack/solutions/observability/plugins/observability/dev_docs/images/synthtrace_data_view.png diff --git a/x-pack/solutions/observability/plugins/observability/jest.config.js b/x-pack/solutions/observability/plugins/observability/jest.config.js new file mode 100644 index 0000000000000..e79375a9219a6 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/jest.config.js @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/observability'], + setupFiles: [ + '/x-pack/solutions/observability/plugins/observability/.storybook/jest_setup.js', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/observability/plugins/observability', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/observability/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/observability/kibana.jsonc b/x-pack/solutions/observability/plugins/observability/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/observability/kibana.jsonc rename to x-pack/solutions/observability/plugins/observability/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/observability/public/application/application.test.tsx b/x-pack/solutions/observability/plugins/observability/public/application/application.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/application/application.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/application/application.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/application/hideable_react_query_dev_tools.tsx b/x-pack/solutions/observability/plugins/observability/public/application/hideable_react_query_dev_tools.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/application/hideable_react_query_dev_tools.tsx rename to x-pack/solutions/observability/plugins/observability/public/application/hideable_react_query_dev_tools.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/application/index.tsx b/x-pack/solutions/observability/plugins/observability/public/application/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/application/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/application/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/assets/illustration_dark.svg b/x-pack/solutions/observability/plugins/observability/public/assets/illustration_dark.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/illustration_dark.svg rename to x-pack/solutions/observability/plugins/observability/public/assets/illustration_dark.svg diff --git a/x-pack/plugins/observability_solution/observability/public/assets/illustration_light.svg b/x-pack/solutions/observability/plugins/observability/public/assets/illustration_light.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/illustration_light.svg rename to x-pack/solutions/observability/plugins/observability/public/assets/illustration_light.svg diff --git a/x-pack/plugins/observability_solution/observability/public/assets/kibana_dashboard_dark.svg b/x-pack/solutions/observability/plugins/observability/public/assets/kibana_dashboard_dark.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/kibana_dashboard_dark.svg rename to x-pack/solutions/observability/plugins/observability/public/assets/kibana_dashboard_dark.svg diff --git a/x-pack/plugins/observability_solution/observability/public/assets/kibana_dashboard_light.svg b/x-pack/solutions/observability/plugins/observability/public/assets/kibana_dashboard_light.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/kibana_dashboard_light.svg rename to x-pack/solutions/observability/plugins/observability/public/assets/kibana_dashboard_light.svg diff --git a/x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_alerts.gif b/x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_alerts.gif similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_alerts.gif rename to x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_alerts.gif diff --git a/x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_logs.gif b/x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_logs.gif similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_logs.gif rename to x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_logs.gif diff --git a/x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_metrics.gif b/x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_metrics.gif similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_metrics.gif rename to x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_metrics.gif diff --git a/x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_services.gif b/x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_services.gif similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_services.gif rename to x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_services.gif diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/alert_overview.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/alert_overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/alert_overview.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/alert_overview.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/format_cases.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/format_cases.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/format_cases.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/format_cases.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/is_fields_same_type.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/is_fields_same_type.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/is_fields_same_type.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/is_fields_same_type.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/overview_columns.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/overview_columns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/overview_columns.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/overview_columns.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/components/alerts_status_filter.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/components/alerts_status_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/components/alerts_status_filter.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/components/alerts_status_filter.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/components/index.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/components/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/components/index.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/components/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/constants.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/state_container.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/state_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/state_container.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/state_container.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/use_alert_search_bar_state_container.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/use_alert_search_bar_state_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/use_alert_search_bar_state_container.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/use_alert_search_bar_state_container.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_severity_badge.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_severity_badge.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_severity_badge.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_severity_badge.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_severity_badge.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_severity_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_severity_badge.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_severity_badge.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_alert_source_links.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_alert_source_links.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_alert_source_links.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_alert_source_links.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_alert_source_links.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_alert_source_links.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_alert_source_links.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_alert_source_links.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_apm_app_url.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_apm_app_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_apm_app_url.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_apm_app_url.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_sources.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_sources.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_sources.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_sources.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/groups.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/groups.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/groups.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/groups.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_status_indicator.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_status_indicator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_status_indicator.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_status_indicator.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.mock.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_body.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_body.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_body.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_body.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_footer.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_footer.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_footer.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_footer.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_header.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_header.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_header.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/use_get_alert_flyout_components.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/use_get_alert_flyout_components.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/use_get_alert_flyout_components.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/use_get_alert_flyout_components.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/alerts/get_alerts_page_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_alerts_page_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/alerts/get_alerts_page_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_alerts_page_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/alerts/get_persistent_controls.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_persistent_controls.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/alerts/get_persistent_controls.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_persistent_controls.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/cell_tooltip.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/cell_tooltip.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/cell_tooltip.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/cell_tooltip.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/cell_tooltip.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/cell_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/cell_tooltip.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/cell_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/get_columns.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/get_columns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/get_columns.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/get_columns.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/render_cell_value.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/render_cell_value.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/render_cell_value.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/render_cell_value.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/render_cell_value.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/render_cell_value.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/render_cell_value.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/render_cell_value.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/timestamp_tooltip.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/timestamp_tooltip.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/timestamp_tooltip.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/timestamp_tooltip.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/timestamp_tooltip.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/timestamp_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/timestamp_tooltip.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/timestamp_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/constants.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/get_aggregations_by_grouping_field.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/get_aggregations_by_grouping_field.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/get_aggregations_by_grouping_field.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/get_aggregations_by_grouping_field.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/get_group_stats.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/get_group_stats.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/get_group_stats.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/get_group_stats.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/render_group_panel.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/render_group_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/render_group_panel.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/render_group_panel.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/observability/get_alerts_page_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/observability/get_alerts_page_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/observability/get_alerts_page_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/observability/get_alerts_page_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/register_alerts_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/register_alerts_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/register_alerts_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/register_alerts_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/rule_details/get_rule_details_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/rule_details/get_rule_details_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/rule_details/get_rule_details_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/rule_details/get_rule_details_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/slo/default_columns.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/slo/default_columns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/slo/default_columns.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/slo/default_columns.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/slo/get_slo_alerts_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/slo/get_slo_alerts_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/slo/get_slo_alerts_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/slo/get_slo_alerts_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/annotation_apearance.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/annotation_apearance.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/annotation_apearance.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/annotation_apearance.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/annotation_form.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/annotation_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/annotation_form.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/annotation_form.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_apply_to.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_apply_to.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_apply_to.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_apply_to.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_icon.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_icon.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_icon.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_range.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_range.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_range.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_range.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_tooltip.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_tooltip.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotations.scss b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotations.scss similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotations.scss rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotations.scss diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/delete_annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/delete_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/delete_annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/delete_annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/delete_annotations_modal.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/delete_annotations_modal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/delete_annotations_modal.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/delete_annotations_modal.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/field_selector.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/field_selector.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/field_selector.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/create_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/create_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/create_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/create_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/fill_option.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/fill_option.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/fill_option.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/fill_option.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/forward_refs.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/forward_refs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/forward_refs.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/forward_refs.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/new_line_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/new_line_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/new_line_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/new_line_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/new_rect_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/new_rect_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/new_rect_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/new_rect_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/obs_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/obs_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/obs_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/obs_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/observability_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/observability_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/observability_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/observability_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/service_apply_to.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/service_apply_to.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/service_apply_to.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/service_apply_to.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/slo_apply_to.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/slo_apply_to.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/slo_apply_to.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/slo_apply_to.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/slo_selector.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/slo_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/slo_selector.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/slo_selector.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/text_decoration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/text_decoration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/text_decoration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/text_decoration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/timestamp_range_label.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/timestamp_range_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/timestamp_range_label.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/timestamp_range_label.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/default_annotation.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/default_annotation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/default_annotation.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/default_annotation.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/display_annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/display_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/display_annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/display_annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_annotation_cruds.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_annotation_cruds.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_annotation_cruds.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_annotation_cruds.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_annotation_permissions.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_annotation_permissions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_annotation_permissions.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_annotation_permissions.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_create_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_create_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_create_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_create_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_delete_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_delete_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_delete_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_delete_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_edit_annotation_helper.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_edit_annotation_helper.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_edit_annotation_helper.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_edit_annotation_helper.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_annotations.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_annotations.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_annotations.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_apm_suggestions.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_apm_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_apm_suggestions.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_apm_suggestions.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_slo_list.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_slo_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_slo_list.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_slo_list.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_update_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_update_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_update_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_update_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/icon_set.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/icon_set.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/icon_set.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/icon_set.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/center_justified_spinner.tsx b/x-pack/solutions/observability/plugins/observability/public/components/center_justified_spinner.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/center_justified_spinner.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/center_justified_spinner.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/generate_chart_title_and_tooltip.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/generate_chart_title_and_tooltip.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/generate_chart_title_and_tooltip.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/generate_chart_title_and_tooltip.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/closable_popover_title.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/closable_popover_title.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/closable_popover_title.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/closable_popover_title.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/closable_popover_title.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/closable_popover_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/closable_popover_title.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/closable_popover_title.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/metric_row_controls.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_controls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/metric_row_controls.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_controls.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/expression_row.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/expression_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/expression_row.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/expression_row.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/expression_row.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/expression_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/expression_row.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/expression_row.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/group_by.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/group_by.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/group_by.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/group_by.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/triggers_actions_context.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/triggers_actions_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/triggers_actions_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/triggers_actions_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/validation.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/validation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/validation.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/validation.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/validation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/validation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/validation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/validation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/calculate_domain.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/calculate_domain.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/calculate_domain.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/calculate_domain.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/corrected_percent_convert.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/corrected_percent_convert.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/corrected_percent_convert.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/corrected_percent_convert.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/corrected_percent_convert.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/corrected_percent_convert.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/corrected_percent_convert.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/corrected_percent_convert.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/get_search_configuration.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/get_search_configuration.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/get_search_configuration.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/get_search_configuration.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/get_search_configuration.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/get_search_configuration.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/get_search_configuration.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/get_search_configuration.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/kuery.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/kuery.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/kuery.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/kuery.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/metric_to_format.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/metric_to_format.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/metric_to_format.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/metric_to_format.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/notifications.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/notifications.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/notifications.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/notifications.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/runtime_types.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/runtime_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/runtime_types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/runtime_types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/source_errors.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/source_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/source_errors.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/source_errors.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/threshold_unit.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/threshold_unit.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/threshold_unit.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/threshold_unit.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/threshold_unit.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/threshold_unit.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/threshold_unit.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/threshold_unit.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_kibana_time_zone_setting.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_kibana_time_zone_setting.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_kibana_time_zone_setting.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_kibana_time_zone_setting.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_kibana_timefilter_time.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_kibana_timefilter_time.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_kibana_timefilter_time.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_kibana_timefilter_time.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_tracked_promise.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_tracked_promise.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_tracked_promise.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_tracked_promise.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/i18n_strings.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/i18n_strings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/i18n_strings.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/i18n_strings.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/rule_data_formatters.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/rule_data_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/rule_data_formatters.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/rule_data_formatters.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/experimental_badge.tsx b/x-pack/solutions/observability/plugins/observability/public/components/experimental_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/experimental_badge.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/experimental_badge.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/loading_observability.tsx b/x-pack/solutions/observability/plugins/observability/public/components/loading_observability.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/loading_observability.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/loading_observability.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/helpers.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/helpers.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/helpers.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/helpers.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/helpers.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/helpers.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/helpers.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/painless_tinymath_parser.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/painless_tinymath_parser.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/painless_tinymath_parser.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/painless_tinymath_parser.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/painless_tinymath_parser.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/painless_tinymath_parser.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/painless_tinymath_parser.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/painless_tinymath_parser.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.tsx similarity index 97% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.tsx index 2a9fa2c295274..02dc7bc1f51d9 100644 --- a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.tsx @@ -138,19 +138,21 @@ export function RuleConditionChart({ const errorDiv = document.querySelector('.lnsEmbeddedError'); if (errorDiv) { const paragraphElements = errorDiv.querySelectorAll('p'); - if (!paragraphElements || paragraphElements.length < 2) return; + if (!paragraphElements) return; paragraphElements[0].innerText = i18n.translate( 'xpack.observability.ruleCondition.chart.error_equation.title', { defaultMessage: 'An error occurred while rendering the chart', } ); - paragraphElements[1].innerText = i18n.translate( - 'xpack.observability.ruleCondition.chart.error_equation.description', - { - defaultMessage: 'Check the rule equation.', - } - ); + if (paragraphElements.length > 1) { + paragraphElements[1].innerText = i18n.translate( + 'xpack.observability.ruleCondition.chart.error_equation.description', + { + defaultMessage: 'Check the rule equation.', + } + ); + } } }); }, [chartLoading, attributes]); diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/autocomplete_field.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/autocomplete_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/autocomplete_field.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/autocomplete_field.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/index.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/index.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/suggestion_item.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/suggestion_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/suggestion_item.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/suggestion_item.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/kuery_bar.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/kuery_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/kuery_bar.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/kuery_bar.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/with_kuery_autocompletion.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/with_kuery_autocompletion.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/with_kuery_autocompletion.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/with_kuery_autocompletion.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/tags.tsx b/x-pack/solutions/observability/plugins/observability/public/components/tags.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/tags.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/tags.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/constants.ts b/x-pack/solutions/observability/plugins/observability/public/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/constants.ts b/x-pack/solutions/observability/plugins/observability/public/context/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/context/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx b/x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/data_handler.test.ts b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/data_handler.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/data_handler.test.ts rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/data_handler.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/data_handler.ts b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/data_handler.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/data_handler.ts rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/data_handler.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/get_observability_alerts.test.ts b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/get_observability_alerts.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/get_observability_alerts.test.ts rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/get_observability_alerts.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/get_observability_alerts.ts b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/get_observability_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/get_observability_alerts.ts rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/get_observability_alerts.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/has_data_context.test.tsx b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/has_data_context.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/has_data_context.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/has_data_context.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/has_data_context.tsx b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/has_data_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/has_data_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/has_data_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/context/plugin_context/plugin_context.tsx b/x-pack/solutions/observability/plugins/observability/public/context/plugin_context/plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/plugin_context/plugin_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/context/plugin_context/plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/create_use_rules_link.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/create_use_rules_link.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/create_use_rules_link.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/create_use_rules_link.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_case_view_navigation.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_case_view_navigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_case_view_navigation.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_case_view_navigation.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_chart_themes.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_chart_themes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_chart_themes.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_chart_themes.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_data_fetcher.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_data_fetcher.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_data_fetcher.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_data_fetcher.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_date_picker_context.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_date_picker_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_date_picker_context.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_date_picker_context.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_delete_rules.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_delete_rules.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_delete_rules.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_delete_rules.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_data.test.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_data.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_data.test.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_data.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_data.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_data.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_data.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_detail.test.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_detail.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_detail.test.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_detail.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_detail.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_detail.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_detail.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_detail.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_bulk_cases.test.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_bulk_cases.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_bulk_cases.test.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_bulk_cases.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_bulk_cases.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_bulk_cases.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_bulk_cases.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_bulk_cases.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_data_views.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_data_views.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_data_views.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_data_views.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_rule.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_rule.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_rule.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_rule_types.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_rule_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_rule_types.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_rule_types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_get_available_rules_with_descriptions.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_get_available_rules_with_descriptions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_get_available_rules_with_descriptions.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_get_available_rules_with_descriptions.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_get_filtered_rule_types.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_get_filtered_rule_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_get_filtered_rule_types.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_get_filtered_rule_types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_guided_setup_progress.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_guided_setup_progress.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_guided_setup_progress.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_guided_setup_progress.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_has_data.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_has_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_has_data.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_has_data.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_kibana_ui_settings.tsx b/x-pack/solutions/observability/plugins/observability/public/hooks/use_kibana_ui_settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_kibana_ui_settings.tsx rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_kibana_ui_settings.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_license.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_license.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_license.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_license.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_observability_onboarding.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_observability_onboarding.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_observability_onboarding.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_observability_onboarding.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_plugin_context.tsx b/x-pack/solutions/observability/plugins/observability/public/hooks/use_plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_plugin_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_summary_time_range.tsx b/x-pack/solutions/observability/plugins/observability/public/hooks/use_summary_time_range.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_summary_time_range.tsx rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_summary_time_range.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_time_buckets.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_time_buckets.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_time_buckets.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_time_buckets.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_timefilter_service.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_timefilter_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_timefilter_service.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_timefilter_service.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_toast.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_toast.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_toast.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_toast.ts diff --git a/x-pack/solutions/observability/plugins/observability/public/index.ts b/x-pack/solutions/observability/plugins/observability/public/index.ts new file mode 100644 index 0000000000000..fa0189dc1df14 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/public/index.ts @@ -0,0 +1,102 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// TODO: https://github.com/elastic/kibana/issues/110905 + +import { PluginInitializer, PluginInitializerContext } from '@kbn/core/public'; +import { lazy } from 'react'; +import { + Plugin, + ObservabilityPublicPluginsStart, + ObservabilityPublicPluginsSetup, + ObservabilityPublicStart, + ObservabilityPublicSetup, +} from './plugin'; +export type { + ObservabilityPublicSetup, + ObservabilityPublicStart, + ObservabilityPublicPluginsSetup, + ObservabilityPublicPluginsStart, +}; +export const plugin: PluginInitializer< + ObservabilityPublicSetup, + ObservabilityPublicStart, + ObservabilityPublicPluginsSetup, + ObservabilityPublicPluginsStart +> = (initializerContext: PluginInitializerContext) => { + return new Plugin(initializerContext); +}; + +export type { ConfigSchema } from './plugin'; + +export { + enableLegacyUptimeApp, + syntheticsThrottlingEnabled, + enableInspectEsQueries, + enableComparisonByDefault, + apmServiceGroupMaxNumberOfServices, + enableAgentExplorerView, + apmEnableTableSearchBar, +} from '../common/ui_settings_keys'; +export { + alertsLocatorID, + ruleDetailsLocatorID, + rulesLocatorID, + sloDetailsLocatorID, + sloEditLocatorID, + uptimeOverviewLocatorID, +} from '../common'; + +export type { RulesParams } from './locators/rules'; +export { getCoreVitalsComponent } from './pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy'; +export { ObservabilityAlertSearchBar } from './components/alert_search_bar/get_alert_search_bar_lazy'; +export { DatePicker } from './pages/overview/components/date_picker'; + +export const LazyAlertsFlyout = lazy(() => import('./components/alerts_flyout/alerts_flyout')); + +export * from './typings'; +import { TopAlert } from './typings/alerts'; +export type { TopAlert }; +import type { AlertDetailsAppSectionProps } from './pages/alert_details/types'; +export type { AlertDetailsAppSectionProps }; + +export { observabilityFeatureId, observabilityAppId } from '../common'; + +export { useFetchDataViews } from './hooks/use_fetch_data_views'; +export { useTimeBuckets } from './hooks/use_time_buckets'; +export { createUseRulesLink } from './hooks/create_use_rules_link'; +export { useSummaryTimeRange } from './hooks/use_summary_time_range'; + +export { getApmTraceUrl } from './utils/get_apm_trace_url'; +export { buildEsQuery } from './utils/build_es_query'; + +export type { + ObservabilityRuleTypeFormatter, + ObservabilityRuleTypeModel, + ObservabilityRuleTypeRegistry, +} from './rules/create_observability_rule_type_registry'; +export { createObservabilityRuleTypeRegistryMock } from './rules/observability_rule_type_registry_mock'; + +export { DatePickerContextProvider } from './context/date_picker_context/date_picker_context'; + +export { fromQuery, toQuery } from './utils/url'; +export { getAlertSummaryTimeRange } from './utils/alert_summary_widget'; +export { calculateTimeRangeBucketSize } from './pages/overview/helpers/calculate_bucket_size'; +export type { render } from './utils/test_helper'; + +export { convertTo } from '../common/utils/formatters/duration'; +export { formatAlertEvaluationValue } from './utils/format_alert_evaluation_value'; +export { + RuleFlyoutKueryBar, + AutocompleteField, + WithKueryAutocompletion, +} from './components/rule_kql_filter'; +export { useAnnotations } from './components/annotations/use_annotations'; +export { RuleConditionChart } from './components/rule_condition_chart'; +export { getGroupFilters } from '../common/custom_threshold_rule/helpers/get_group'; +export type { GenericAggType } from './components/rule_condition_chart/rule_condition_chart'; +export { Threshold } from './components/custom_threshold/components/threshold'; diff --git a/x-pack/plugins/observability_solution/observability/public/locators/rule_details.test.ts b/x-pack/solutions/observability/plugins/observability/public/locators/rule_details.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/locators/rule_details.test.ts rename to x-pack/solutions/observability/plugins/observability/public/locators/rule_details.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/locators/rule_details.ts b/x-pack/solutions/observability/plugins/observability/public/locators/rule_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/locators/rule_details.ts rename to x-pack/solutions/observability/plugins/observability/public/locators/rule_details.ts diff --git a/x-pack/plugins/observability_solution/observability/public/locators/rules.test.ts b/x-pack/solutions/observability/plugins/observability/public/locators/rules.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/locators/rules.test.ts rename to x-pack/solutions/observability/plugins/observability/public/locators/rules.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/locators/rules.ts b/x-pack/solutions/observability/plugins/observability/public/locators/rules.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/locators/rules.ts rename to x-pack/solutions/observability/plugins/observability/public/locators/rules.ts diff --git a/x-pack/plugins/observability_solution/observability/public/navigation_tree.ts b/x-pack/solutions/observability/plugins/observability/public/navigation_tree.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/navigation_tree.ts rename to x-pack/solutions/observability/plugins/observability/public/navigation_tree.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/404.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/404.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/404.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/404.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details_contextual_insights.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details_contextual_insights.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details_contextual_insights.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details_contextual_insights.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/alert_history.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/alert_history.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/alert_history.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/alert_history.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/assets/illustration_product_no_results_magnifying_glass.svg b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/assets/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/assets/illustration_product_no_results_magnifying_glass.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/assets/illustration_product_no_results_magnifying_glass.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/feedback_button.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/feedback_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/feedback_button.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/feedback_button.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/header_actions.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/header_actions.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/header_actions.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/header_actions.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/header_actions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/header_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/header_actions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/header_actions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/index.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/related_alerts.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/related_alerts.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/source_bar.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/source_bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/source_bar.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/source_bar.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/source_bar.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/source_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/source_bar.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/source_bar.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_add_investigation_item.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_add_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_add_investigation_item.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_add_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_bulk_untrack_alerts.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_bulk_untrack_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_bulk_untrack_alerts.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_bulk_untrack_alerts.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_create_investigation.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_create_investigation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_create_investigation.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_create_investigation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_fetch_investigations_by_alert.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_fetch_investigations_by_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_fetch_investigations_by_alert.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_fetch_investigations_by_alert.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/mock/alert.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/mock/alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/mock/alert.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/mock/alert.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/types.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/types.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/alerts.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/alerts.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/alerts.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/alerts.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/components/alert_actions.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/alert_actions.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/components/alert_actions.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/alert_actions.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/components/alert_actions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/alert_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/components/alert_actions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/alert_actions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/components/rule_stats.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/rule_stats.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/components/rule_stats.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/rule_stats.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/components/rule_stats.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/rule_stats.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/components/rule_stats.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/rule_stats.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/helpers/merge_bool_queries.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/helpers/merge_bool_queries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/helpers/merge_bool_queries.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/helpers/merge_bool_queries.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/helpers/parse_alert.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/helpers/parse_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/helpers/parse_alert.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/helpers/parse_alert.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotation_apply_to.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotation_apply_to.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotation_apply_to.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotation_apply_to.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_list.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_list.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_list.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_list_chart.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_list_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_list_chart.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_list_chart.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_privileges.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_privileges.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_privileges.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_privileges.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/create_annotation_btn.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/create_annotation_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/create_annotation_btn.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/create_annotation_btn.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/date_picker.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/date_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/date_picker.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/date_picker.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/cases.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/cases.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/cases.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/cases.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/components/cases.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/components/cases.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/components/cases.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/components/cases.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/components/cases.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/components/cases.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/components/cases.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/components/cases.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/components/empty_page.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/components/empty_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/components/empty_page.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/components/empty_page.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/components/feature_no_permissions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/components/feature_no_permissions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/components/feature_no_permissions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/components/feature_no_permissions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/landing/landing.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/landing/landing.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/landing/landing.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/landing/landing.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/chart_container/chart_container.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/chart_container/chart_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/chart_container/chart_container.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/chart_container/chart_container.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/chart_container/chart_container.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/chart_container/chart_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/chart_container/chart_container.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/chart_container/chart_container.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/data_assistant_flyout.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/data_assistant_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/data_assistant_flyout.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/data_assistant_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/data_sections.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/data_sections.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/data_sections.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/data_sections.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/date_picker.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/date_picker.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/date_picker.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/date_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/date_picker.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/date_picker.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/index.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_actions/header_actions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_actions/header_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_actions/header_actions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_actions/header_actions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu_portal.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu_portal.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.test.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.test.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/news_feed.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/news_feed.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/news_feed.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/news_feed.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/news_feed.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/news_feed.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/news_feed.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/news_feed.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_onboarding_callout.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_onboarding_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_onboarding_callout.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_onboarding_callout.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/content.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/content.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/content.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/content.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/index.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_box.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_box.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_box.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_box.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_box.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_box.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_box.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_box.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_boxes.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_boxes.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_boxes.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_boxes.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_boxes.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_boxes.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_boxes.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_boxes.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_progress.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_progress.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_progress.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_progress.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_progress.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_progress.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_progress.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_progress.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/resources.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/resources.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/resources.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/resources.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/resources.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/resources.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/resources.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/resources.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.tsx similarity index 99% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.tsx index 2535dc07ef234..196e9cd6bd901 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.tsx @@ -72,7 +72,7 @@ export function APMSection({ bucketSize }: Props) { } }, // `forceUpdate` and `lastUpdated` should trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps + [bucketSize, relativeStart, relativeEnd, absoluteStart, absoluteEnd, forceUpdate, lastUpdated] ); diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/mock_data/apm.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/mock_data/apm.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/mock_data/apm.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/mock_data/apm.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_section.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_section.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_section.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_section.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_section.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_section.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_sections.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_sections.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_sections.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_sections.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/error_panel/error_panel.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/error_panel/error_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/error_panel/error_panel.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/error_panel/error_panel.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/logs/logs_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/logs/logs_section.tsx similarity index 99% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/logs/logs_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/logs/logs_section.tsx index cc13fd6d1e788..1182e0cbdcb1a 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/logs/logs_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/logs/logs_section.tsx @@ -72,7 +72,7 @@ export function LogsSection({ bucketSize }: Props) { }, // `forceUpdate` and `lastUpdated` trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps + [bucketSize, relativeStart, relativeEnd, absoluteStart, absoluteEnd, forceUpdate, lastUpdated] ); diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/host_link.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/host_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/host_link.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/host_link.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/lib/format_duration.test.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/lib/format_duration.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/lib/format_duration.test.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/lib/format_duration.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/lib/format_duration.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/lib/format_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/lib/format_duration.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/lib/format_duration.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/aix.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/aix.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/aix.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/aix.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/android.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/android.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/android.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/android.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/darwin.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/darwin.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/darwin.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/darwin.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/dragonfly.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/dragonfly.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/dragonfly.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/dragonfly.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/freebsd.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/freebsd.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/freebsd.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/freebsd.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/illumos.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/illumos.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/illumos.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/illumos.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/linux.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/linux.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/linux.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/linux.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/netbsd.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/netbsd.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/netbsd.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/netbsd.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/solaris.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/solaris.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/solaris.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/solaris.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx similarity index 99% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx index 99d526a66facd..e943d99fbaa43 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx @@ -67,7 +67,6 @@ export function MetricsSection({ bucketSize }: Props) { }); } // `forceUpdate` and `lastUpdated` should trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps }, [ bucketSize, relativeStart, diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/section_container.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/section_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/section_container.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/section_container.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/section_container.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/section_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/section_container.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/section_container.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx similarity index 99% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx index 673ee81c9b79c..b59a051e48d50 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx @@ -65,7 +65,7 @@ export function UptimeSection({ bucketSize }: Props) { } }, // `forceUpdate` and `lastUpdated` should trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps + [ bucketSize, relativeStart, diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/__stories__/core_vitals.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/__stories__/core_vitals.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/__stories__/core_vitals.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/__stories__/core_vitals.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/color_palette_flex_item.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/color_palette_flex_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/color_palette_flex_item.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/color_palette_flex_item.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vitals.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vitals.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vitals.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vitals.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/palette_legends.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/palette_legends.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/palette_legends.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/palette_legends.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/service_name.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/service_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/service_name.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/service_name.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/translations.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/translations.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/translations.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/web_core_vitals_title.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/web_core_vitals_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/web_core_vitals_title.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/web_core_vitals_title.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/mock_data/ux.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/mock_data/ux.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/mock_data/ux.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/mock_data/ux.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx similarity index 98% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx index ec6aa5a3a9024..4267d4ad9872c 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx @@ -64,7 +64,7 @@ export function UXSection({ bucketSize }: Props) { } }, // `forceUpdate` and `lastUpdated` should trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps + [ bucketSize, relativeStart, diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/styled_stat/styled_stat.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/styled_stat/styled_stat.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/styled_stat/styled_stat.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/styled_stat/styled_stat.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.test.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.test.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/on_brush_end.test.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/on_brush_end.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/on_brush_end.test.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/on_brush_end.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/on_brush_end.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/on_brush_end.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/on_brush_end.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/on_brush_end.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/use_overview_metrics.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/use_overview_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/use_overview_metrics.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/use_overview_metrics.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/alerts.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/alerts.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/alerts.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/alerts.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/apm.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/apm.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/apm.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/apm.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/logs.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/logs.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/logs.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/logs.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/metrics.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/metrics.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/metrics.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/metrics.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/news_feed.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/news_feed.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/news_feed.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/news_feed.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/uptime.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/uptime.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/uptime.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/uptime.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/overview.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/overview.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/overview.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/overview.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/overview.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/overview.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/overview.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/delete_confirmation_modal.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/delete_confirmation_modal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/delete_confirmation_modal.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/delete_confirmation_modal.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/header_actions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/header_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/header_actions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/header_actions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/no_rule_found_panel.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/no_rule_found_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/no_rule_found_panel.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/no_rule_found_panel.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/page_title_content.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/page_title_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/page_title_content.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/page_title_content.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/rule_details_tabs.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/rule_details_tabs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/rule_details_tabs.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/rule_details_tabs.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/constants.ts b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/helpers/get_health_color.ts b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/helpers/get_health_color.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/helpers/get_health_color.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/helpers/get_health_color.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/helpers/is_rule_editable.ts b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/helpers/is_rule_editable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/helpers/is_rule_editable.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/helpers/is_rule_editable.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/rule_details.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/rule_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/rule_details.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/rule_details.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rules/global_logs_tab.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rules/global_logs_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rules/global_logs_tab.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rules/global_logs_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rules/rules.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rules/rules.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rules/rules.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rules/rules.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rules/rules.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rules/rules.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rules/rules.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rules/rules.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rules/rules_tab.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rules/rules_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rules/rules_tab.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rules/rules_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/plugin.mock.tsx b/x-pack/solutions/observability/plugins/observability/public/plugin.mock.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/plugin.mock.tsx rename to x-pack/solutions/observability/plugins/observability/public/plugin.mock.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/plugin.ts b/x-pack/solutions/observability/plugins/observability/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/plugin.ts rename to x-pack/solutions/observability/plugins/observability/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability/public/routes/routes.tsx b/x-pack/solutions/observability/plugins/observability/public/routes/routes.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/routes/routes.tsx rename to x-pack/solutions/observability/plugins/observability/public/routes/routes.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts b/x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts rename to x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts diff --git a/x-pack/plugins/observability_solution/observability/public/rules/fixtures/example_alerts.ts b/x-pack/solutions/observability/plugins/observability/public/rules/fixtures/example_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/rules/fixtures/example_alerts.ts rename to x-pack/solutions/observability/plugins/observability/public/rules/fixtures/example_alerts.ts diff --git a/x-pack/plugins/observability_solution/observability/public/rules/observability_rule_type_registry_mock.ts b/x-pack/solutions/observability/plugins/observability/public/rules/observability_rule_type_registry_mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/rules/observability_rule_type_registry_mock.ts rename to x-pack/solutions/observability/plugins/observability/public/rules/observability_rule_type_registry_mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/rules/register_observability_rule_types.ts b/x-pack/solutions/observability/plugins/observability/public/rules/register_observability_rule_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/rules/register_observability_rule_types.ts rename to x-pack/solutions/observability/plugins/observability/public/rules/register_observability_rule_types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/test_utils/use_global_storybook_theme.tsx b/x-pack/solutions/observability/plugins/observability/public/test_utils/use_global_storybook_theme.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/test_utils/use_global_storybook_theme.tsx rename to x-pack/solutions/observability/plugins/observability/public/test_utils/use_global_storybook_theme.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/typings/alerts.ts b/x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/typings/alerts.ts rename to x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts diff --git a/x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts b/x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts rename to x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/typings/index.ts b/x-pack/solutions/observability/plugins/observability/public/typings/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/typings/index.ts rename to x-pack/solutions/observability/plugins/observability/public/typings/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/typings/utils.ts b/x-pack/solutions/observability/plugins/observability/public/typings/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/typings/utils.ts rename to x-pack/solutions/observability/plugins/observability/public/typings/utils.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/constants.ts b/x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.test.tsx b/x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx b/x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx rename to x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/index.ts b/x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/index.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap b/x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap rename to x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.ts b/x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/build_es_query/index.ts b/x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/build_es_query/index.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/date.ts b/x-pack/solutions/observability/plugins/observability/public/utils/date.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/date.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/date.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/datemath.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/datemath.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/datemath.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/datemath.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/datemath.ts b/x-pack/solutions/observability/plugins/observability/public/utils/datemath.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/datemath.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/datemath.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts b/x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/format_stat_value.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/format_stat_value.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/format_stat_value.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/format_stat_value.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/format_stat_value.ts b/x-pack/solutions/observability/plugins/observability/public/utils/format_stat_value.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/format_stat_value.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/format_stat_value.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_alert_evaluation_unit_type_by_rule_type_id.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_alert_evaluation_unit_type_by_rule_type_id.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_alert_evaluation_unit_type_by_rule_type_id.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_alert_evaluation_unit_type_by_rule_type_id.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/calculate_auto.js b/x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/calculate_auto.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/calculate_auto.js rename to x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/calculate_auto.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/unit_to_seconds.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/unit_to_seconds.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/unit_to_seconds.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/unit_to_seconds.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_time_zone.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_time_zone.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_time_zone.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_time_zone.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/investigation_item_helper.ts b/x-pack/solutions/observability/plugins/observability/public/utils/investigation_item_helper.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/investigation_item_helper.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/investigation_item_helper.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/is_alert_details_enabled.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/is_alert_details_enabled.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/is_alert_details_enabled.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/is_alert_details_enabled.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/is_alert_details_enabled.ts b/x-pack/solutions/observability/plugins/observability/public/utils/is_alert_details_enabled.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/is_alert_details_enabled.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/is_alert_details_enabled.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/kibana_react.mock.ts b/x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/kibana_react.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/kibana_react.storybook_decorator.tsx b/x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/kibana_react.storybook_decorator.tsx rename to x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/utils/kibana_react.ts b/x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/kibana_react.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/no_data_config.ts b/x-pack/solutions/observability/plugins/observability/public/utils/no_data_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/no_data_config.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/no_data_config.ts diff --git a/x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx b/x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx new file mode 100644 index 0000000000000..2612ae5567555 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { merge } from 'lodash'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { render as testLibRender } from '@testing-library/react'; +import { AppMountParameters } from '@kbn/core/public'; +import { coreMock } from '@kbn/core/public/mocks'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; +import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; +import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; + +import { PluginContext } from '../context/plugin_context/plugin_context'; +import { createObservabilityRuleTypeRegistryMock } from '../rules/observability_rule_type_registry_mock'; +import { ConfigSchema } from '../plugin'; +import { Subset } from '../typings'; + +const appMountParameters = { setHeaderActionMenu: () => {} } as unknown as AppMountParameters; +const observabilityRuleTypeRegistry = createObservabilityRuleTypeRegistryMock(); + +export const core = coreMock.createStart(); +export const data = dataPluginMock.createStartContract(); + +const defaultConfig: ConfigSchema = { + unsafe: { + alertDetails: { + uptime: { enabled: false }, + }, + }, +}; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: false, + }, + }, + logger: { + log: console.log, + warn: console.warn, + error: () => {}, + }, +}); + +export const render = (component: React.ReactNode, config: Subset = {}) => { + return testLibRender( + +
Embeddable exploratory view
, + }, + }} + > + + + {component} + + +
+
+ ); +}; diff --git a/x-pack/plugins/observability_solution/observability/public/utils/url.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/url.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/url.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/url.ts b/x-pack/solutions/observability/plugins/observability/public/utils/url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/url.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/url.ts diff --git a/x-pack/plugins/observability_solution/observability/scripts/storybook.js b/x-pack/solutions/observability/plugins/observability/scripts/storybook.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/scripts/storybook.js rename to x-pack/solutions/observability/plugins/observability/scripts/storybook.js diff --git a/x-pack/plugins/observability_solution/observability/server/common/constants.ts b/x-pack/solutions/observability/plugins/observability/server/common/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/common/constants.ts rename to x-pack/solutions/observability/plugins/observability/server/common/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/server/features/cases_v1.ts b/x-pack/solutions/observability/plugins/observability/server/features/cases_v1.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/features/cases_v1.ts rename to x-pack/solutions/observability/plugins/observability/server/features/cases_v1.ts diff --git a/x-pack/plugins/observability_solution/observability/server/features/cases_v2.ts b/x-pack/solutions/observability/plugins/observability/server/features/cases_v2.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/features/cases_v2.ts rename to x-pack/solutions/observability/plugins/observability/server/features/cases_v2.ts diff --git a/x-pack/solutions/observability/plugins/observability/server/index.ts b/x-pack/solutions/observability/plugins/observability/server/index.ts new file mode 100644 index 0000000000000..913b52e7eb6fb --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/server/index.ts @@ -0,0 +1,112 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// TODO: https://github.com/elastic/kibana/issues/110905 + +import { offeringBasedSchema, schema, TypeOf } from '@kbn/config-schema'; +import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; +import { DEFAULT_ANNOTATION_INDEX } from '../common/annotations'; +import type { ObservabilityPluginSetup } from './plugin'; +import { createOrUpdateIndex, Mappings } from './utils/create_or_update_index'; +import { createOrUpdateIndexTemplate } from './utils/create_or_update_index_template'; +import { ScopedAnnotationsClient } from './lib/annotations/bootstrap_annotations'; +import { CustomThresholdLocators } from './lib/rules/custom_threshold/custom_threshold_executor'; +import { + unwrapEsResponse, + WrappedElasticsearchClientError, +} from '../common/utils/unwrap_es_response'; + +export { + rangeQuery, + kqlQuery, + termQuery, + termsQuery, + wildcardQuery, + existsQuery, +} from './utils/queries'; +export { getParsedFilterQuery } from './utils/get_parsed_filtered_query'; +export { getInspectResponse } from '../common/utils/get_inspect_response'; + +export * from './types'; + +const configSchema = schema.object({ + annotations: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + index: schema.string({ defaultValue: DEFAULT_ANNOTATION_INDEX }), + }), + unsafe: schema.object({ + alertDetails: schema.object({ + metrics: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + logs: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + uptime: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + observability: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + }), + thresholdRule: schema.object({ + enabled: offeringBasedSchema({ + serverless: schema.boolean({ defaultValue: false }), + traditional: schema.boolean({ defaultValue: false }), + }), + }), + ruleFormV2: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + }), + customThresholdRule: schema.object({ + groupByPageSize: schema.number({ defaultValue: 10_000 }), + }), + enabled: schema.boolean({ defaultValue: true }), + createO11yGenericFeatureId: schema.boolean({ defaultValue: false }), +}); + +export const config: PluginConfigDescriptor = { + exposeToBrowser: { + unsafe: true, + aiAssistant: { + enabled: true, + feedback: { + enabled: true, + }, + }, + }, + schema: configSchema, + deprecations: ({ unused }) => [ + unused('unsafe.thresholdRule.enabled', { level: 'warning' }), + unused('unsafe.alertDetails.logs.enabled', { level: 'warning' }), + unused('unsafe.alertDetails.metrics.enabled', { level: 'warning' }), + unused('unsafe.alertDetails.observability.enabled', { level: 'warning' }), + ], +}; + +export type ObservabilityConfig = TypeOf; + +export const plugin = async (initContext: PluginInitializerContext) => { + const { ObservabilityPlugin } = await import('./plugin'); + return new ObservabilityPlugin(initContext); +}; + +export type { + Mappings, + ObservabilityPluginSetup, + ScopedAnnotationsClient, + CustomThresholdLocators, +}; +export { + createOrUpdateIndex, + createOrUpdateIndexTemplate, + unwrapEsResponse, + WrappedElasticsearchClientError, +}; + +export { uiSettings } from './ui_settings'; diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/bootstrap_annotations.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/bootstrap_annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/bootstrap_annotations.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/bootstrap_annotations.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/create_annotations_client.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/create_annotations_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/create_annotations_client.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/create_annotations_client.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/format_annotations.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/format_annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/format_annotations.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/format_annotations.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/mappings/annotation_mappings.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/mappings/annotation_mappings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/mappings/annotation_mappings.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/mappings/annotation_mappings.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/permissions.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/permissions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/permissions.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/permissions.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/constants.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/constants.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_condition_script.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_condition_script.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_condition_script.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_condition_script.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_last_value_aggregation.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_last_value_aggregation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_last_value_aggregation.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_last_value_aggregation.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_data.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_data.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_data.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_values.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_values.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_values.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_values.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_values.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_values.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_values.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/metric_query.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/metric_query.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/messages.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/messages.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/messages.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/messages.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_alert_result.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_alert_result.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_alert_result.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_alert_result.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_metric_params.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_metric_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_metric_params.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_metric_params.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/translations.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/translations.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/translations.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/types.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/types.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/types.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/utils.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/utils.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/utils.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/utils.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/utils.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/utils.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/register_rule_types.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/register_rule_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/register_rule_types.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/register_rule_types.ts diff --git a/x-pack/plugins/observability_solution/observability/server/plugin.ts b/x-pack/solutions/observability/plugins/observability/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/plugin.ts rename to x-pack/solutions/observability/plugins/observability/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/assistant/route.ts b/x-pack/solutions/observability/plugins/observability/server/routes/assistant/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/assistant/route.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/assistant/route.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/create_observability_server_route.ts b/x-pack/solutions/observability/plugins/observability/server/routes/create_observability_server_route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/create_observability_server_route.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/create_observability_server_route.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/get_global_observability_server_route_repository.ts b/x-pack/solutions/observability/plugins/observability/server/routes/get_global_observability_server_route_repository.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/get_global_observability_server_route_repository.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/get_global_observability_server_route_repository.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/register_routes.ts b/x-pack/solutions/observability/plugins/observability/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/register_routes.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/register_routes.ts diff --git a/x-pack/solutions/observability/plugins/observability/server/routes/rules/route.ts b/x-pack/solutions/observability/plugins/observability/server/routes/rules/route.ts new file mode 100644 index 0000000000000..a7d03e11b9890 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/server/routes/rules/route.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as t from 'io-ts'; +import { Dataset } from '@kbn/rule-registry-plugin/server'; +import { createObservabilityServerRoute } from '../create_observability_server_route'; + +const alertsDynamicIndexPatternRoute = createObservabilityServerRoute({ + endpoint: 'GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31', + security: { + authz: { + enabled: false, + reason: + 'This endpoint returns alert index names for a set of registration contexts and has traditionally required no specific authorization', + }, + }, + options: { access: 'public' }, + params: t.type({ + query: t.type({ + registrationContexts: t.array(t.string), + namespace: t.string, + }), + }), + handler: async ({ dependencies, params }) => { + const { namespace, registrationContexts } = params.query; + const { ruleDataService } = dependencies; + + const indexNames = registrationContexts.flatMap((registrationContext) => { + const indexName = ruleDataService + .findIndexByName(registrationContext, Dataset.alerts) + ?.getPrimaryAlias(namespace); + + if (indexName != null) { + return [indexName]; + } else { + return []; + } + }); + + return indexNames; + }, +}); + +export const rulesRouteRepository = alertsDynamicIndexPatternRoute; diff --git a/x-pack/plugins/observability_solution/observability/server/routes/types.ts b/x-pack/solutions/observability/plugins/observability/server/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/types.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/types.ts diff --git a/x-pack/plugins/observability_solution/observability/server/saved_objects/threshold.ts b/x-pack/solutions/observability/plugins/observability/server/saved_objects/threshold.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/saved_objects/threshold.ts rename to x-pack/solutions/observability/plugins/observability/server/saved_objects/threshold.ts diff --git a/x-pack/plugins/observability_solution/observability/server/services/index.test.ts b/x-pack/solutions/observability/plugins/observability/server/services/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/services/index.test.ts rename to x-pack/solutions/observability/plugins/observability/server/services/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/services/index.ts b/x-pack/solutions/observability/plugins/observability/server/services/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/services/index.ts rename to x-pack/solutions/observability/plugins/observability/server/services/index.ts diff --git a/x-pack/plugins/observability_solution/observability/server/types.ts b/x-pack/solutions/observability/plugins/observability/server/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/types.ts rename to x-pack/solutions/observability/plugins/observability/server/types.ts diff --git a/x-pack/plugins/observability_solution/observability/server/ui_settings.ts b/x-pack/solutions/observability/plugins/observability/server/ui_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/ui_settings.ts rename to x-pack/solutions/observability/plugins/observability/server/ui_settings.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts b/x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts b/x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/get_es_query_config.test.ts b/x-pack/solutions/observability/plugins/observability/server/utils/get_es_query_config.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/get_es_query_config.test.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/get_es_query_config.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/get_es_query_config.ts b/x-pack/solutions/observability/plugins/observability/server/utils/get_es_query_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/get_es_query_config.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/get_es_query_config.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/get_parsed_filtered_query.ts b/x-pack/solutions/observability/plugins/observability/server/utils/get_parsed_filtered_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/get_parsed_filtered_query.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/get_parsed_filtered_query.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/number.ts b/x-pack/solutions/observability/plugins/observability/server/utils/number.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/number.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/number.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/queries.test.ts b/x-pack/solutions/observability/plugins/observability/server/utils/queries.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/queries.test.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/queries.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/queries.ts b/x-pack/solutions/observability/plugins/observability/server/utils/queries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/queries.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/queries.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/retry.test.ts b/x-pack/solutions/observability/plugins/observability/server/utils/retry.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/retry.test.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/retry.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/retry.ts b/x-pack/solutions/observability/plugins/observability/server/utils/retry.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/retry.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/retry.ts diff --git a/x-pack/solutions/observability/plugins/observability/tsconfig.json b/x-pack/solutions/observability/plugins/observability/tsconfig.json new file mode 100644 index 0000000000000..7ae72a4bf995b --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/tsconfig.json @@ -0,0 +1,118 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "public/**/*.json", + "server/**/*", + "typings/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/rule-data-utils", + "@kbn/triggers-actions-ui-plugin", + "@kbn/i18n", + "@kbn/deeplinks-observability", + "@kbn/es-query", + "@kbn/observability-get-padded-alert-time-range-util", + "@kbn/share-plugin", + "@kbn/data-plugin", + "@kbn/alerting-comparators", + "@kbn/guided-onboarding", + "@kbn/rison", + "@kbn/kibana-utils-plugin", + "@kbn/spaces-plugin", + "@kbn/utility-types", + "@kbn/core-http-server", + "@kbn/core", + "@kbn/inspector-plugin", + "@kbn/shared-ux-page-kibana-template", + "@kbn/observability-ai-assistant-plugin", + "@kbn/shared-ux-router", + "@kbn/kibana-react-plugin", + "@kbn/react-kibana-context-render", + "@kbn/observability-shared-plugin", + "@kbn/react-kibana-context-theme", + "@kbn/shared-ux-link-redirect-app", + "@kbn/usage-collection-plugin", + "@kbn/cases-components", + "@kbn/cases-plugin", + "@kbn/stack-alerts-plugin", + "@kbn/core-ui-settings-browser-mocks", + "@kbn/alerts-ui-shared", + "@kbn/core-notifications-browser", + "@kbn/core-ui-settings-browser", + "@kbn/rule-registry-plugin", + "@kbn/alerts-grouping", + "@kbn/grouping", + "@kbn/data-views-plugin", + "@kbn/core-http-browser", + "@kbn/visualization-ui-components", + "@kbn/event-annotation-components", + "@kbn/slo-schema", + "@kbn/event-annotation-common", + "@kbn/react-kibana-mount", + "@kbn/i18n-react", + "@kbn/expression-metric-vis-plugin", + "@kbn/charts-plugin", + "@kbn/alerting-plugin", + "@kbn/aiops-log-rate-analysis", + "@kbn/aiops-plugin", + "@kbn/field-types", + "@kbn/test-jest-helpers", + "@kbn/discover-plugin", + "@kbn/embeddable-plugin", + "@kbn/lens-plugin", + "@kbn/ui-actions-plugin", + "@kbn/unified-search-plugin", + "@kbn/lens-embeddable-utils", + "@kbn/std", + "@kbn/actions-plugin", + "@kbn/licensing-plugin", + "@kbn/core-chrome-browser", + "@kbn/navigation-plugin", + "@kbn/observability-alert-details", + "@kbn/investigation-shared", + "@kbn/observability-alerting-rule-utils", + "@kbn/ui-theme", + "@kbn/core-application-common", + "@kbn/securitysolution-ecs", + "@kbn/alerts-as-data-utils", + "@kbn/datemath", + "@kbn/logs-shared-plugin", + "@kbn/exploratory-view-plugin", + "@kbn/core-capabilities-common", + "@kbn/content-management-plugin", + "@kbn/cloud-plugin", + "@kbn/data-view-editor-plugin", + "@kbn/field-formats-plugin", + "@kbn/home-plugin", + "@kbn/data-view-field-editor-plugin", + "@kbn/guided-onboarding-plugin", + "@kbn/investigate-plugin", + "@kbn/license-management-plugin", + "@kbn/presentation-util-plugin", + "@kbn/security-plugin", + "@kbn/serverless", + "@kbn/core-application-browser", + "@kbn/core-theme-browser", + "@kbn/config-schema", + "@kbn/securitysolution-io-ts-utils", + "@kbn/core-elasticsearch-server", + "@kbn/logging", + "@kbn/safer-lodash-set", + "@kbn/features-plugin", + "@kbn/files-plugin", + "@kbn/server-route-repository", + "@kbn/io-ts-utils", + "@kbn/core-ui-settings-server-mocks", + "@kbn/es-types", + "@kbn/logging-mocks", + "@kbn/response-ops-rule-form", + "@kbn/streams-plugin" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/observability/typings/common.ts b/x-pack/solutions/observability/plugins/observability/typings/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/typings/common.ts rename to x-pack/solutions/observability/plugins/observability/typings/common.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/jest_setup.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/jest_setup.js rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/main.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/main.js rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/preview.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/preview.js rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/preview.js diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/storybook_decorator.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/storybook_decorator.tsx new file mode 100644 index 0000000000000..ce283bbeccf0a --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/storybook_decorator.tsx @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { ComponentType } from 'react'; + +export function KibanaReactStorybookDecorator(Story: ComponentType) { + return ; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/README.md b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/README.md similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/README.md rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/README.md diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/changes/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/changes/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/changes/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/changes/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/lens.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/lens.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/lens.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/lens.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/visualize_esql.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/visualize_esql.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/visualize_esql.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/visualize_esql.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/common/rule_connector.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/rule_connector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/common/rule_connector.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/rule_connector.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/jest.config.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/jest.config.js new file mode 100644 index 0000000000000..5238f7a7cd889 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/jest.config.js @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: [ + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public', + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common', + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server', + ], + setupFiles: [ + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/jest_setup.js', + ], + collectCoverage: true, + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/{common,public,server}/**/*.{js,ts,tsx}', + ], + + coverageReporters: ['html'], +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc new file mode 100644 index 0000000000000..8d509e50059a7 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc @@ -0,0 +1,49 @@ +{ + "type": "plugin", + "id": "@kbn/observability-ai-assistant-app-plugin", + "owner": [ + "@elastic/obs-ai-assistant" + ], + "group": "observability", + "visibility": "private", + "plugin": { + "id": "observabilityAIAssistantApp", + "browser": true, + "server": true, + "configPath": [ + "xpack", + "observabilityAIAssistantApp" + ], + "requiredPlugins": [ + "aiAssistantManagementSelection", + "observabilityAIAssistant", + "observabilityShared", + "observability", + "actions", + "data", + "dataViews", + "lens", + "ruleRegistry", + "uiActions", + "triggersActionsUi", + "share", + "licensing", + "ml", + "alerting", + "features", + "inference", + "logsDataAccess", + "spaces", + "slo", + "llmTasks" + ], + "optionalPlugins": [ + "cloud" + ], + "requiredBundles": [ + "kibanaReact", + "esqlDataGrid" + ], + "extraPublicDirs": [] + } +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/application.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/application.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/application.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/application.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/assets/elastic_ai_assistant.png b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/assets/elastic_ai_assistant.png similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/assets/elastic_ai_assistant.png rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/assets/elastic_ai_assistant.png diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/changes/change_list.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/changes/change_list.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/changes/change_list.stories.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/changes/change_list.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/changes/change_list.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/changes/change_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/changes/change_list.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/changes/change_list.tsx diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/charts/spark_plot.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/charts/spark_plot.tsx new file mode 100644 index 0000000000000..afd7e9f4bceb3 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/charts/spark_plot.tsx @@ -0,0 +1,137 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { + AnnotationDomainType, + BarSeries, + Chart, + CurveType, + LineAnnotation, + LineSeries, + PartialTheme, + Position, + ScaleType, + Settings, + Tooltip, +} from '@elastic/charts'; +import { EuiFlexGroup, EuiPanel, EuiText } from '@elastic/eui'; +import { UI_SETTINGS } from '@kbn/data-service'; +import { i18n } from '@kbn/i18n'; +import moment from 'moment'; +import React from 'react'; +import { useChartTheme } from '../../hooks/use_chart_theme'; +import { useKibana } from '../../hooks/use_kibana'; + +function AnnotationTooltip({ timestamp, label }: { timestamp: number; label: React.ReactNode }) { + const dateFormat = useKibana().services.uiSettings.get(UI_SETTINGS.DATE_FORMAT); + const formattedTime = moment(timestamp).format(dateFormat); + + return ( + + + {formattedTime} + {label} + + + ); +} + +export function SparkPlot({ + type, + timeseries, + annotations, + compressed, +}: { + type: 'line' | 'bar'; + timeseries: Array<{ x: number; y: number | null }>; + annotations?: Array<{ + id: string; + x: number; + color: string; + icon: React.ReactNode; + label: React.ReactNode; + }>; + compressed?: boolean; +}) { + const defaultChartTheme = useChartTheme(); + + const sparkplotChartTheme: PartialTheme = { + chartMargins: { left: 0, right: 0, top: 0, bottom: 0 }, + chartPaddings: { + top: 12, + bottom: 12, + }, + lineSeriesStyle: { + point: { opacity: 0 }, + }, + areaSeriesStyle: { + point: { opacity: 0 }, + }, + }; + + return ( + + + + {type && type === 'bar' ? ( + + ) : ( + + )} + {annotations?.map((annotation) => { + return ( + { + return ( + + ); + }} + /> + ); + })} + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx new file mode 100644 index 0000000000000..e43a9ea5f4527 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx @@ -0,0 +1,210 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { useEffect, useRef, useState } from 'react'; +import { useAbortableAsync } from '@kbn/observability-ai-assistant-plugin/public'; +import { EuiButton, EuiButtonEmpty, EuiLoadingSpinner, EuiToolTip } from '@elastic/eui'; +import { css } from '@emotion/react'; +import { v4 } from 'uuid'; +import useObservable from 'react-use/lib/useObservable'; +import { i18n } from '@kbn/i18n'; +import { CoreStart } from '@kbn/core-lifecycle-browser'; +import { AIAssistantAppService, useAIAssistantAppService, ChatFlyout } from '@kbn/ai-assistant'; +import { AssistantIcon } from '@kbn/ai-assistant-icon'; +import { useKibana } from '../../hooks/use_kibana'; +import { useTheme } from '../../hooks/use_theme'; +import { useNavControlScreenContext } from '../../hooks/use_nav_control_screen_context'; +import { SharedProviders } from '../../utils/shared_providers'; +import { ObservabilityAIAssistantAppPluginStartDependencies } from '../../types'; +import { useNavControlScope } from '../../hooks/use_nav_control_scope'; + +interface NavControlWithProviderDeps { + appService: AIAssistantAppService; + coreStart: CoreStart; + pluginsStart: ObservabilityAIAssistantAppPluginStartDependencies; + isServerless?: boolean; +} + +export const NavControlWithProvider = ({ + appService, + coreStart, + pluginsStart, + isServerless, +}: NavControlWithProviderDeps) => { + return ( + + + + ); +}; + +export function NavControl({ isServerless }: { isServerless?: boolean }) { + const service = useAIAssistantAppService(); + + const { + services: { + application, + http, + notifications, + plugins: { + start: { + observabilityAIAssistant: { ObservabilityAIAssistantChatServiceContext }, + }, + }, + }, + } = useKibana(); + + const [hasBeenOpened, setHasBeenOpened] = useState(false); + + useNavControlScreenContext(); + useNavControlScope(); + + const chatService = useAbortableAsync( + ({ signal }) => { + return hasBeenOpened + ? service.start({ signal }).catch((error) => { + notifications.toasts.addError(error, { + title: i18n.translate( + 'xpack.observabilityAiAssistant.navControl.initFailureErrorTitle', + { + defaultMessage: 'Failed to initialize Observability AI Assistant', + } + ), + }); + + setHasBeenOpened(false); + setIsOpen(false); + + throw error; + }) + : undefined; + }, + [service, hasBeenOpened, notifications.toasts] + ); + + const [isOpen, setIsOpen] = useState(false); + + const keyRef = useRef(v4()); + + useEffect(() => { + const conversationSubscription = service.conversations.predefinedConversation$.subscribe(() => { + keyRef.current = v4(); + setHasBeenOpened(true); + setIsOpen(true); + }); + + return () => { + conversationSubscription.unsubscribe(); + }; + }, [service.conversations.predefinedConversation$]); + + const { messages, title, hideConversationList } = useObservable( + service.conversations.predefinedConversation$ + ) ?? { + messages: [], + title: undefined, + hideConversationList: false, + }; + + const theme = useTheme(); + + const buttonCss = css` + padding: 0px 8px; + + svg path { + fill: ${theme.colors.darkestShade}; + } + `; + + useEffect(() => { + const keyboardListener = (event: KeyboardEvent) => { + if (event.ctrlKey && event.code === 'Semicolon') { + service.conversations.openNewConversation({ + messages: [], + }); + } + }; + + window.addEventListener('keypress', keyboardListener); + + return () => { + window.removeEventListener('keypress', keyboardListener); + }; + }, [service.conversations]); + + return ( + <> + + {isServerless ? ( + { + service.conversations.openNewConversation({ + messages: [], + }); + }} + color="primary" + size="s" + > + {chatService.loading ? : } + + ) : ( + { + service.conversations.openNewConversation({ + messages: [], + }); + }} + color="primary" + size="s" + fullWidth={false} + minWidth={0} + > + {chatService.loading ? : } + + )} + + {chatService.value ? ( + + { + setIsOpen(false); + }} + navigateToConversation={(conversationId?: string) => { + application.navigateToUrl( + http.basePath.prepend( + `/app/observabilityAIAssistant/conversations/${conversationId || ''}` + ) + ); + }} + hideConversationList={hideConversationList} + /> + + ) : undefined} + + ); +} + +const buttonLabel = i18n.translate( + 'xpack.observabilityAiAssistant.navControl.openTheAIAssistantPopoverLabel', + { defaultMessage: 'Open the AI Assistant' } +); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/lazy_nav_control.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/lazy_nav_control.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/lazy_nav_control.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/lazy_nav_control.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/page_template.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/page_template.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/page_template.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/page_template.tsx diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/entity_badge/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/entity_badge/index.tsx new file mode 100644 index 0000000000000..edfc956a448d1 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/entity_badge/index.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiBadge, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import React from 'react'; + +export function EntityBadge({ + entity, + color, +}: { + entity: Record; + color?: React.ComponentProps['color']; +}) { + return ( + + {Object.entries(entity).map(([field, value]) => ( + + {`${field}:${value}`} + + ))} + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/complete_root_cause_analysis.json b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/complete_root_cause_analysis.json new file mode 100644 index 0000000000000..ec2ce7810bc97 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/complete_root_cause_analysis.json @@ -0,0 +1,19532 @@ +[ + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_IURenJnAu7MGepsXonmWtEbx", + "function": { + "name": "observe", + "arguments": { + "observe": true + } + } + } + ] + }, + { + "name": "observe", + "response": { + "content": "## Observations\n\nThe alert indicates that the `controller` service is experiencing a high number of 500 errors for the `/api/cart` endpoint. The error rate is 98.78%, significantly above the threshold of 1% over a 1-minute period. This is a pronounced and rapid onset of errors that suggests a severe and immediate issue with the `controller` service or its dependencies starting at `2024-11-02T10:56:42.498Z`.\n\n## Symptoms\n\n- **Onset**: Rapid\n- **Severity**: Pronounced\n- **Time of Change**: `2024-11-02T10:56:42.498Z`\n\nGiven the sudden and high volume of errors, the symptoms suggest a significant event such as a deployment, configuration change, or a failure in a critical dependency.\n\n## Next Steps\n\nThe next step is to further investigate the logs for the `controller` service to identify any changes or error patterns around the specified time.\n\n**Entity to Investigate**:\n- `service.name`: `controller`" + }, + "data": { + "content": "## Observations\n\nThe alert indicates that the `controller` service is experiencing a high number of 500 errors for the `/api/cart` endpoint. The error rate is 98.78%, significantly above the threshold of 1% over a 1-minute period. This is a pronounced and rapid onset of errors that suggests a severe and immediate issue with the `controller` service or its dependencies starting at `2024-11-02T10:56:42.498Z`.\n\n## Symptoms\n\n- **Onset**: Rapid\n- **Severity**: Pronounced\n- **Time of Change**: `2024-11-02T10:56:42.498Z`\n\nGiven the sudden and high volume of errors, the symptoms suggest a significant event such as a deployment, configuration change, or a failure in a critical dependency.\n\n## Next Steps\n\nThe next step is to further investigate the logs for the `controller` service to identify any changes or error patterns around the specified time.\n\n**Entity to Investigate**:\n- `service.name`: `controller`", + "investigations": [] + }, + "role": "tool", + "toolCallId": "call_IURenJnAu7MGepsXonmWtEbx" + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_6Vcfeg2e2IUC0gSX0bwejZl1", + "function": { + "name": "investigateEntity", + "arguments": { + "context": "Investigating the alert for the controller service, which indicates a high number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration. Start time of the issue is 2024-11-02T10:56:42.498Z. Will review controller service logs for changes or error patterns around this time.", + "entity": { + "field": "service.name", + "value": "controller" + } + } + } + } + ] + }, + { + "name": "investigateEntity", + "role": "tool", + "toolCallId": "call_6Vcfeg2e2IUC0gSX0bwejZl1", + "response": { + "entity": { + "service.name": "controller" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "frontend" + }, + "reason": "The frontend service interacts closely with the controller (ingress-nginx-controller). Requests directed to /api/cart initiate from frontendproxy which routes to frontend. Given the high error rate at the /api/cart endpoint, the issue might involve downstream calls from frontend to dependent services.", + "confidence": "high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The /api/cart endpoint directly involves manipulating or retrieving data from cartservice. Given the 500 errors on requests routed via the controller, it's likely that cartservice might be either causing or being affected by these failures.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend-web" + }, + "reason": "URL referrer and path fragments suggest client-side interactions impacting the controller's ingress. Issues in the client's request construction or timing might be indirectly impacting how the controller handles these requests.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "Though the controller deals directly with cart interactions, completion of cart actions could trigger subsequent processes in checkoutservice. Errors during cart operations could thereby propagate issues if mismanaged upstream.", + "confidence": "low" + }, + { + "entity": { + "service.name": "coredns" + }, + "reason": "DNS resolution issues could lead to inability to locate the correct backend service IP for controller, causing errors in routing HTTP requests.", + "confidence": "low" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service is called by the `frontendproxy`, which is indicated as the `attributes.upstream.name` in `controller` logs. In the context provided, the `frontend` communicates with other backend services to process user interactions and might be an upstream dependency for the `controller`. The problem might cascade from `frontendproxy` to `frontend`.", + "confidence": "high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The `cartservice` handles shopping cart actions which map the `controller`'s `/api/cart` endpoint. If the `cartservice` has issues, they would cascade to the `controller` /api/cart endpoint that depends on this service for cart management functions.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "Handling currency conversions, indirectly connected to cart operations. The issues might arise if currency conversion fails during cart operations, contributing to the 500 errors in the `controller`.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "frauddetectionservice" + }, + "reason": "No specific logs point directly; contextual relevance due to transaction handling. If fraud detection triggers false flags, it can affect cart transactions.", + "confidence": "low" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The `cartservice` directly manages shopping cart operations over the gRPC protocol, and errors here could lead to repeated 500 errors in the `controller`.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service handles user interactions that are passed to the `controller`. Issues in `frontend` could lead to failures in `controller`, resulting in 500 errors.", + "confidence": "medium to high" + }, + { + "entity": { + "service.name": "loadgenerator" + }, + "reason": "The `loadgenerator` simulates high user traffic which might strain other services and indirectly cause 500 errors in the `controller`.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "etcd" + }, + "reason": "As a control plane activity tracker for Ingress, indirect impacts from `etcd` inconsistencies can propagate as issues in services interacting via Ingress, including `controller`.", + "confidence": "medium" + } + ], + "summary": "### Characteristics of the `controller` Entity\n\n**1. Infrastructure & Environment:**\n\nThe `controller` service is deployed within a Kubernetes environment, specifically in the `ingress-nginx` namespace. The service is associated with a `controller` container running within the `ingress-nginx-controller-bc57996ff-r6blf` pod. This pod is scheduled on a node identified as `minikube`, and the service is part of the `ingress-nginx-controller` deployment. Additionally, the infrastructure is based on an ARM64 architecture, running Ubuntu 24.04.1 LTS, with deployment environment set to `opentelemetry-demo`.\n\n**2. Communication Characteristics:**\n\nThe `controller` service functions as an Ingress controller, managing incoming traffic and routing it to backend services. It processes HTTP requests, typically version 1.1, and communicates with other services via HTTP protocols. Key endpoints involved in the communication include:\n- Inbound requests are received at endpoints like `/api/cart` and `/api/checkout`.\n- Outbound requests are routed primarily to the `frontendproxy` service, evidenced by the upstream address `10.244.0.26:8080`.\n\nThe service handles both `GET` and `POST` requests, and its communication paths include requests from user agents like \"HeadlessChrome\" and \"python-requests\".\n\n**3. Context of Entity in Investigation:**\n\n**Reason for Investigation:**\nThe `controller` service is currently under investigation due to an alert triggered by a high number of 500 errors (98.78% error rate) occurring at the `/api/cart` endpoint. The significant spike in error rates is concerning and suggests a potential issue within the service or its interaction with dependencies.\n\n**Relation to Other Entities:**\nThe high error rates on the `controller` are likely impacting the overall user experience of the application, notably through the `/api/cart` functionality, which interacts with the `cartservice`. As the `controller` service forwards requests to the `frontendproxy`, which in turn interacts with various backend services like `cartservice`, `checkoutservice`, `currencyservice`, and others, the ripple effect of these errors might be felt across multiple services in the architecture. This interconnectedness necessitates thorough investigation of `controller's` logs and error patterns to isolate the root cause and mitigate the disruption in the flow of HTTP requests.\n\nBy understanding the behavior and interaction of the `controller` service within the broader microservices architecture, we aim to identify and resolve the underlying issue causing the increase in 500 errors. This involves examining logs for patterns, determining if recent changes or specific conditions triggered the fault, and analyzing dependencies that could contribute to the error rates observed. This step is integral to restoring normal operation and maintaining service reliability and user satisfaction.\n\n### Analysis of Log Patterns for service.name:controller\n\n#### Pattern Group: Request Errors\n- **Pattern:**\n ```\n .*?10\\\\.244\\\\.0\\\\.38.+?02.+?2024.+?10.+?0000.+?api.+?HTTP.+?1\\\\.1.+?python.+?requests.+?2\\\\.31\\\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\\\.244\\\\.0\\\\.26.+?8080.*?\n ```\n - **Sample:**\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n - **Description:** This pattern represents request logs where an HTTP POST request to the `/api/cart` endpoint resulted in a `500 Internal Server Error`. The requests are from a client using `python-requests/2.31.0`.\n\n- **Count:** 263 occurrences\n\n- **Timeseries Analysis:**\n - **Trend:** The number of occurrences show fluctuation with no significant change in the pattern.\n - **Log Counts:** \n - Example timestamps and counts:\n - `2024-11-02T10:56:00.000Z: 6`\n - `2024-11-02T10:56:30.000Z: 2`\n - `2024-11-02T10:57:00.000Z: 0`\n\n### Summary\nBased on the provided logs patterns, the `controller` service is experiencing a high number of `500 Internal Server Errors` when handling POST requests to the `/api/cart` endpoint. This is evident from the consistent error logs observed at different timestamps. The alert threshold breach likely correlates with these error occurrences.\n\nNo other unusual patterns such as connection issues, startup messages, or garbage collection messages were identified in the logs around the error events. Further investigation on the backend or potential dependency issues (e.g., `cartservice`) might be needed to determine the exact cause of these errors.\n\n### Timeline of significant events\n\n- **2024-11-02T10:56:42.498Z**\n - **Alert Triggered**: High number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration.\n \n- **2024-11-02T10:56:00.000Z**\n - **Log Entry**: 6 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - **Example Log**:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n \n- **2024-11-02T10:56:30.000Z**\n - **Log Entry**: 2 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - **Example Log**:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:35 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n### Context and reasoning\n\nThe `controller` service plays a critical role in handling incoming HTTP requests within the Kubernetes environment, specifically acting as an Ingress controller within the `ingress-nginx` namespace. The recent alert, triggered by a high number of 500 errors, indicates a significant disruption in the normal operations of the `controller` service, particularly impacting the `/api/cart` endpoint. The log entries leading up to and following the alert highlight a pattern of consistent `500 Internal Server Error` responses, specifically around the timestamp in question.\n\nThe pattern group identified, related to request errors, shows repeated failures for HTTP POST requests from a client using `python-requests/2.31.0`, likely directed towards the `cartservice` via the `frontendproxy`. This high error rate suggests an underlying issue either within the `controller` service itself, its communication path to the `frontendproxy`, or potentially further downstream with the backend services like `cartservice`.\n\nNo other unusual log patterns, such as connection issues or any system degradation messages were noted, indicating the problem is likely concentrated around the interaction between `controller` and its immediate dependencies rather than a broader system-wide issue. By correlating the timestamps and repeated error logs, a clear link can be drawn between the `500 Internal Server Error` responses and the timeline, further supporting the hypothesis of a specific fault affecting the `/api/cart` endpoint.\n\nFurther investigation into the dependencies of the `controller` service, especially focusing on the interactions with the `frontendproxy` and subsequently `cartservice`, is warranted to isolate and rectify the root cause of these error patterns." + }, + "data": { + "attachments": { + "alerts": [ + { + "kibana.alert.reason": "500 Errors is 98.78049, above the threshold of 1. (duration: 1 min, data view: otel_logs_data (Automated by Demo CLI), group: controller,/api/cart)", + "kibana.alert.evaluation.values": [ + 98.78048780487805 + ], + "kibana.alert.evaluation.threshold": [ + 1 + ], + "kibana.alert.group": [ + { + "field": "service.name", + "value": "controller" + }, + { + "field": "url.path", + "value": "/api/cart" + } + ], + "tags": [ + "demo", + "cli-created" + ], + "service.name": "controller", + "kibana.alert.rule.category": "Custom threshold", + "kibana.alert.rule.consumer": "logs", + "kibana.alert.rule.execution.uuid": "4187827d-686e-4098-98e3-21e13495798e", + "kibana.alert.rule.name": "NGINX 500s", + "kibana.alert.rule.parameters": { + "criteria": [ + { + "comparator": ">", + "metrics": [ + { + "name": "A", + "filter": "http.response.status_code:*", + "aggType": "count" + }, + { + "name": "B", + "filter": "http.response.status_code>=500", + "aggType": "count" + } + ], + "threshold": [ + 1 + ], + "timeSize": 1, + "timeUnit": "m", + "equation": "(B/A) * 100", + "label": "500 Errors" + } + ], + "alertOnNoData": false, + "alertOnGroupDisappear": false, + "searchConfiguration": { + "query": { + "query": "k8s.namespace.name: \"ingress-nginx\" AND url.path: /api/*", + "language": "kuery" + }, + "index": "otel_logs_data" + }, + "groupBy": [ + "service.name", + "url.path" + ] + }, + "kibana.alert.rule.producer": "observability", + "kibana.alert.rule.revision": 0, + "kibana.alert.rule.rule_type_id": "observability.rules.custom_threshold", + "kibana.alert.rule.tags": [ + "demo", + "cli-created" + ], + "kibana.alert.rule.uuid": "9055220c-8fb1-4f9f-be7c-0a33eb2bafc5", + "kibana.space_ids": [ + "default" + ], + "@timestamp": "2024-11-02T10:56:42.498Z", + "event.action": "open", + "event.kind": "signal", + "kibana.alert.rule.execution.timestamp": "2024-11-02T10:56:42.498Z", + "kibana.alert.action_group": "custom_threshold.fired", + "kibana.alert.flapping": false, + "kibana.alert.flapping_history": [ + true + ], + "kibana.alert.instance.id": "controller,/api/cart", + "kibana.alert.maintenance_window_ids": [], + "kibana.alert.consecutive_matches": 1, + "kibana.alert.status": "active", + "kibana.alert.uuid": "b97a1b20-d14b-4835-b948-bd7a423284eb", + "kibana.alert.severity_improving": false, + "kibana.alert.workflow_status": "open", + "kibana.alert.duration.us": 0, + "kibana.alert.start": "2024-11-02T10:56:42.498Z", + "kibana.alert.time_range": { + "gte": "2024-11-02T10:56:42.498Z" + }, + "kibana.version": "9.0.0" + }, + { + "kibana.alert.reason": "500 Errors is 100, above the threshold of 1. (duration: 1 min, data view: otel_logs_data (Automated by Demo CLI), group: controller,/api/checkout)", + "kibana.alert.evaluation.values": [ + 100 + ], + "kibana.alert.evaluation.threshold": [ + 1 + ], + "kibana.alert.group": [ + { + "field": "service.name", + "value": "controller" + }, + { + "field": "url.path", + "value": "/api/checkout" + } + ], + "tags": [ + "demo", + "cli-created" + ], + "service.name": "controller", + "kibana.alert.rule.category": "Custom threshold", + "kibana.alert.rule.consumer": "logs", + "kibana.alert.rule.execution.uuid": "4187827d-686e-4098-98e3-21e13495798e", + "kibana.alert.rule.name": "NGINX 500s", + "kibana.alert.rule.parameters": { + "criteria": [ + { + "comparator": ">", + "metrics": [ + { + "name": "A", + "filter": "http.response.status_code:*", + "aggType": "count" + }, + { + "name": "B", + "filter": "http.response.status_code>=500", + "aggType": "count" + } + ], + "threshold": [ + 1 + ], + "timeSize": 1, + "timeUnit": "m", + "equation": "(B/A) * 100", + "label": "500 Errors" + } + ], + "alertOnNoData": false, + "alertOnGroupDisappear": false, + "searchConfiguration": { + "query": { + "query": "k8s.namespace.name: \"ingress-nginx\" AND url.path: /api/*", + "language": "kuery" + }, + "index": "otel_logs_data" + }, + "groupBy": [ + "service.name", + "url.path" + ] + }, + "kibana.alert.rule.producer": "observability", + "kibana.alert.rule.revision": 0, + "kibana.alert.rule.rule_type_id": "observability.rules.custom_threshold", + "kibana.alert.rule.tags": [ + "demo", + "cli-created" + ], + "kibana.alert.rule.uuid": "9055220c-8fb1-4f9f-be7c-0a33eb2bafc5", + "kibana.space_ids": [ + "default" + ], + "@timestamp": "2024-11-02T10:56:42.498Z", + "event.action": "open", + "event.kind": "signal", + "kibana.alert.rule.execution.timestamp": "2024-11-02T10:56:42.498Z", + "kibana.alert.action_group": "custom_threshold.fired", + "kibana.alert.flapping": false, + "kibana.alert.flapping_history": [ + true + ], + "kibana.alert.instance.id": "controller,/api/checkout", + "kibana.alert.maintenance_window_ids": [], + "kibana.alert.consecutive_matches": 1, + "kibana.alert.status": "active", + "kibana.alert.uuid": "78472a9c-63a2-41ba-9812-47cebd48d833", + "kibana.alert.severity_improving": false, + "kibana.alert.workflow_status": "open", + "kibana.alert.duration.us": 0, + "kibana.alert.start": "2024-11-02T10:56:42.498Z", + "kibana.alert.time_range": { + "gte": "2024-11-02T10:56:42.498Z" + }, + "kibana.version": "9.0.0" + } + ], + "slos": [], + "analysis": { + "total": 56181, + "sampled": 1000, + "fields": [ + "@timestamp:date - 994 distinct values", + "app.label.component:keyword - 1 distinct values (`controller`)", + "attributes.event.name.text:text - 1 distinct values (`nginx.ingress.controller.error`)", + "attributes.event.name:keyword - 1 distinct values (`nginx.ingress.controller.error`)", + "attributes.http.request.id:keyword - 1000 distinct values (`87c973a800b3bd34d3679f0a12263c40`, `ee99fada68450d77be61deaae1f04008`, `80312e7e98e9171c8010e442784e7a04`, `a931c4f7d964f91f0a0750f3221dfa50`, `8c2e99672e225b279a7741671c976c93`, `eed4ff70db044f81adeda15bc1f3ad4c`, `dd730f83b894fc2adedfaf950cf5884c`, `4e35653560a824d6693d1e024906e9ce`, `36d6dfae2fe5d6fecbfaadd4fac5bde1`, `43c774bea806c21478f7ee57a449222b`, 990 more values)", + "attributes.http.request.method:keyword - 2 distinct values (`POST`, `GET`)", + "attributes.http.request.referrer:keyword - 2 distinct values (`http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/`, `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`)", + "attributes.http.request.size:long - 61 distinct values (`351`, `374`, `373`, `809`, `383`, `506`, `342`, `350`, `538`, `479`, 51 more values)", + "attributes.http.request.time:float - 90 distinct values (`3.172`, `1.103`, `0.053`, `4.434`, `0.019`, `3.328`, `1.01`, `3.197`, `3.133`, `2.566`, 80 more values)", + "attributes.http.response.body.size:long - 130 distinct values (`1144`, `1120`, `1024`, `19`, `1336`, `1198`, `1070`, `111157`, `111163`, `1271`, 120 more values)", + "attributes.http.response.status_code:long - 4 distinct values (`499`, `500`, `308`, `200`)", + "attributes.http.version:keyword - 1 distinct values (`1.1`)", + "attributes.log.file.path.text:text - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "attributes.log.file.path:keyword - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "attributes.log.iostream:keyword - 1 distinct values (`stdout`)", + "attributes.network.protocol.name.text:text - 1 distinct values (`http`)", + "attributes.network.protocol.name:keyword - 1 distinct values (`http`)", + "attributes.source.address:keyword - 1 distinct values (`10.244.0.38`)", + "attributes.upstream.address:keyword - 1 distinct values (`10.244.0.26:8080`)", + "attributes.upstream.name.text:text - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "attributes.upstream.name:keyword - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "attributes.upstream.response.size:keyword - 117 distinct values (`1149`, `1120`, `1029`, `19`, `1336`, `1203`, `1070`, `1276`, `1356`, `1105`, 107 more values)", + "attributes.upstream.response.status_code:keyword - 3 distinct values (`500`, `308`, `200`)", + "attributes.upstream.response.time:keyword - 89 distinct values (`3.171`, `1.007`, `1.103`, `0.053`, `4.434`, `3.328`, `1.010`, `3.197`, `3.132`, `2.565`, 79 more values)", + "attributes.url.domain:keyword - 2 distinct values (`icons`, ``)", + "attributes.url.extension:keyword - 7 distinct values (`css`, `Service/ResolveAll`, `Service/EventStream`, `png`, `svg`, `jpg`, `js`)", + "attributes.url.original.text:text - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, 165 more values)", + "attributes.url.original:keyword - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `/api/recommendations?productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `/api/cart?sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `/api/recommendations?productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `/api/data/`, `/api/cart?sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `/api/recommendations?productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `/api/recommendations?productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `/api/cart?sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, 157 more values)", + "attributes.url.path:keyword - 43 distinct values (`/api/products/0PUK6V6EV0`, `/api/products/9SIQT8TOJO`, `/api/products/LS4PSXUNUM`, `/api/data/`, `/api/products/L9ECAV7KIM`, `/api/data`, `/api/products/66VCHSJNUP`, `/api/products/2ZYFJ3GM2N`, `/cart`, `/images/products/NationalParkFoundationExplorascope.jpg`, 33 more values)", + "attributes.url.query:keyword - 126 distinct values (`productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, `productIds=&sessionId=0c122e28-e8fb-4ab5-9889-ac797b5f17cf¤cyCode=USD`, 116 more values)", + "attributes.url.scheme:keyword - 1 distinct values (``)", + "attributes.user_agent.name.text:text - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "attributes.user_agent.name:keyword - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "attributes.user_agent.original.text:text - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "attributes.user_agent.original:keyword - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "attributes.user_agent.version:keyword - 2 distinct values (`2.31`, `120.0.6099`)", + "body.text:text - 1000 distinct values (`10.244.0.38 - - [02/Nov/2024:10:37:56 +0000] \"GET /api/currency? HTTP/1.1\" 200 199 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 598 0.007 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 199 0.007 200 87c973a800b3bd34d3679f0a12263c40\n`, `10.244.0.38 - - [02/Nov/2024:10:46:11 +0000] \"GET /_next/static/chunks/pages/_app-c923ae378a182a07.js HTTP/1.1\" 200 111150 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 484 0.017 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 111008 0.018 200 ee99fada68450d77be61deaae1f04008\n`, 998 more values)", + "data_stream.dataset:keyword - 1 distinct values (`nginx_ingress_controller.error.otel`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`logs`)", + "deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "dropped_attributes_count:long - 1 distinct values (`0`)", + "event.dataset:keyword - 1 distinct values (`nginx_ingress_controller.error.otel`)", + "event.name:keyword - 1 distinct values (`nginx.ingress.controller.error`)", + "host.arch:keyword - 1 distinct values (`arm64`)", + "host.architecture:keyword - 1 distinct values (`arm64`)", + "host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "host.cpu.family:keyword - 1 distinct values (``)", + "host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "host.cpu.model.name:keyword - 1 distinct values (``)", + "host.cpu.stepping:keyword - 1 distinct values (`0`)", + "host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "host.os.full:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "host.os.platform:keyword - 1 distinct values (`linux`)", + "http.request.id:keyword - 1000 distinct values (`87c973a800b3bd34d3679f0a12263c40`, `ee99fada68450d77be61deaae1f04008`, `80312e7e98e9171c8010e442784e7a04`, `a931c4f7d964f91f0a0750f3221dfa50`, `8c2e99672e225b279a7741671c976c93`, `eed4ff70db044f81adeda15bc1f3ad4c`, `dd730f83b894fc2adedfaf950cf5884c`, `4e35653560a824d6693d1e024906e9ce`, `36d6dfae2fe5d6fecbfaadd4fac5bde1`, `43c774bea806c21478f7ee57a449222b`, 990 more values)", + "http.request.method:keyword - 2 distinct values (`POST`, `GET`)", + "http.request.referrer:keyword - 2 distinct values (`http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/`, `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`)", + "http.request.size:long - 61 distinct values (`351`, `374`, `373`, `809`, `383`, `506`, `342`, `350`, `538`, `479`, 51 more values)", + "http.request.time:float - 90 distinct values (`3.172`, `1.103`, `0.053`, `4.434`, `0.019`, `3.328`, `1.01`, `3.197`, `3.133`, `2.566`, 80 more values)", + "http.response.body.size:long - 130 distinct values (`1144`, `1120`, `1024`, `19`, `1336`, `1198`, `1070`, `111157`, `111163`, `1271`, 120 more values)", + "http.response.status_code:long - 4 distinct values (`499`, `500`, `308`, `200`)", + "http.version:keyword - 1 distinct values (`1.1`)", + "k8s.container.name:keyword - 1 distinct values (`controller`)", + "k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "k8s.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "k8s.namespace.name:keyword - 1 distinct values (`ingress-nginx`)", + "k8s.node.name:keyword - 1 distinct values (`minikube`)", + "k8s.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T08:56:56Z`)", + "k8s.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "kubernetes.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "kubernetes.namespace:keyword - 1 distinct values (`ingress-nginx`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "log.file.path:keyword - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "log.iostream:keyword - 1 distinct values (`stdout`)", + "message:text - 1000 distinct values (`10.244.0.38 - - [02/Nov/2024:10:37:56 +0000] \"GET /api/currency? HTTP/1.1\" 200 199 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 598 0.007 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 199 0.007 200 87c973a800b3bd34d3679f0a12263c40\n`, `10.244.0.38 - - [02/Nov/2024:10:46:11 +0000] \"GET /_next/static/chunks/pages/_app-c923ae378a182a07.js HTTP/1.1\" 200 111150 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 484 0.017 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 111008 0.018 200 ee99fada68450d77be61deaae1f04008\n`, 998 more values)", + "network.protocol.name:keyword - 1 distinct values (`http`)", + "observed_timestamp:date_nanos - 1000 distinct values (`2024-11-02T10:37:56.158731715Z`, `2024-11-02T10:46:11.961228541Z`, `2024-11-02T10:38:02.758802635Z`, `2024-11-02T10:54:51.563521629Z`, `2024-11-02T10:37:05.149442469Z`, `2024-11-02T10:49:01.961126259Z`, `2024-11-02T10:56:19.96308167Z`, `2024-11-02T10:42:06.760264887Z`, `2024-11-02T10:49:45.76210446Z`, `2024-11-02T10:54:02.562840801Z`, 990 more values)", + "os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.app.label.component:keyword - 1 distinct values (`controller`)", + "resource.attributes.deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "resource.attributes.host.arch:keyword - 1 distinct values (`arm64`)", + "resource.attributes.host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "resource.attributes.host.cpu.family:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "resource.attributes.host.cpu.model.name.text:text - 1 distinct values (``)", + "resource.attributes.host.cpu.model.name:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.stepping:keyword - 1 distinct values (`0`)", + "resource.attributes.host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "resource.attributes.host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "resource.attributes.host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "resource.attributes.host.name:keyword - 1 distinct values (`otel-daemonset-opentelemetry-collector-agent-7jlpk`)", + "resource.attributes.k8s.container.name.text:text - 1 distinct values (`controller`)", + "resource.attributes.k8s.container.name:keyword - 1 distinct values (`controller`)", + "resource.attributes.k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "resource.attributes.k8s.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "resource.attributes.k8s.namespace.name:keyword - 1 distinct values (`ingress-nginx`)", + "resource.attributes.k8s.node.name:keyword - 1 distinct values (`minikube`)", + "resource.attributes.k8s.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "resource.attributes.k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T08:56:56Z`)", + "resource.attributes.k8s.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "resource.attributes.os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "resource.attributes.os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.service.name.text:text - 1 distinct values (`controller`)", + "resource.attributes.service.name:keyword - 1 distinct values (`controller`)", + "resource.dropped_attributes_count:long - 1 distinct values (`0`)", + "resource.schema_url:keyword - 1 distinct values (`https://opentelemetry.io/schemas/1.6.1`)", + "scope.dropped_attributes_count:long - 1 distinct values (`0`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.name:keyword - 1 distinct values (`controller`)", + "severity_number:byte - 1 distinct values (`0`)", + "source.address:keyword - 1 distinct values (`10.244.0.38`)", + "upstream.address:keyword - 1 distinct values (`10.244.0.26:8080`)", + "upstream.name:keyword - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "upstream.response.size:keyword - 117 distinct values (`1149`, `1120`, `1029`, `19`, `1336`, `1203`, `1070`, `1276`, `1356`, `1105`, 107 more values)", + "upstream.response.status_code:keyword - 3 distinct values (`500`, `308`, `200`)", + "upstream.response.time:keyword - 89 distinct values (`3.171`, `1.007`, `1.103`, `0.053`, `4.434`, `3.328`, `1.010`, `3.197`, `3.132`, `2.565`, 79 more values)", + "url.domain:keyword - 2 distinct values (`icons`, ``)", + "url.extension:keyword - 7 distinct values (`css`, `Service/ResolveAll`, `Service/EventStream`, `png`, `svg`, `jpg`, `js`)", + "url.original:keyword - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `/api/recommendations?productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `/api/cart?sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `/api/recommendations?productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `/api/data/`, `/api/cart?sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `/api/recommendations?productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `/api/recommendations?productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `/api/cart?sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, 157 more values)", + "url.path:keyword - 43 distinct values (`/api/products/0PUK6V6EV0`, `/api/products/9SIQT8TOJO`, `/api/products/LS4PSXUNUM`, `/api/data/`, `/api/products/L9ECAV7KIM`, `/api/data`, `/api/products/66VCHSJNUP`, `/api/products/2ZYFJ3GM2N`, `/cart`, `/images/products/NationalParkFoundationExplorascope.jpg`, 33 more values)", + "url.query:keyword - 126 distinct values (`productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, `productIds=&sessionId=0c122e28-e8fb-4ab5-9889-ac797b5f17cf¤cyCode=USD`, 116 more values)", + "url.scheme:keyword - 1 distinct values (``)", + "user_agent.name:keyword - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "user_agent.original:keyword - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "user_agent.version:keyword - 2 distinct values (`2.31`, `120.0.6099`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 54850, + "pattern": "HTTP/1.1 Mozilla/5.0 X11 Linux aarch64 AppleWebKit/537.36 KHTML like Gecko HeadlessChrome/120.0.6099.28 Safari/537.36 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?HTTP/1\\.1.+?Mozilla/5\\.0.+?X11.+?Linux.+?aarch64.+?AppleWebKit/537\\.36.+?KHTML.+?like.+?Gecko.+?HeadlessChrome/120\\.0\\.6099\\.28.+?Safari/537\\.36.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:54:54 +0000] \"GET /icons/Chevron.svg HTTP/1.1\" 200 805 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 508 0.001 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 810 0.001 200 8693bfefd0668ca27fff0e929785a2c5\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:54:54 +0000] \"GET /icons/Chevron.svg HTTP/1.1\" 200 805 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 508 0.001 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 810 0.001 200 8693bfefd0668ca27fff0e929785a2c5\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.057Z", + "lastOccurrence": "2024-11-02T10:56:59.420Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1385 + }, + { + "x": 1730543820000, + "y": 1172 + }, + { + "x": 1730543850000, + "y": 1520 + }, + { + "x": 1730543880000, + "y": 1312 + }, + { + "x": 1730543910000, + "y": 986 + }, + { + "x": 1730543940000, + "y": 1030 + }, + { + "x": 1730543970000, + "y": 1248 + }, + { + "x": 1730544000000, + "y": 1395 + }, + { + "x": 1730544030000, + "y": 1371 + }, + { + "x": 1730544060000, + "y": 1289 + }, + { + "x": 1730544090000, + "y": 1467 + }, + { + "x": 1730544120000, + "y": 1223 + }, + { + "x": 1730544150000, + "y": 1429 + }, + { + "x": 1730544180000, + "y": 1329 + }, + { + "x": 1730544210000, + "y": 1224 + }, + { + "x": 1730544240000, + "y": 1424 + }, + { + "x": 1730544270000, + "y": 1409 + }, + { + "x": 1730544300000, + "y": 1405 + }, + { + "x": 1730544330000, + "y": 1322 + }, + { + "x": 1730544360000, + "y": 1326 + }, + { + "x": 1730544390000, + "y": 1416 + }, + { + "x": 1730544420000, + "y": 1391 + }, + { + "x": 1730544450000, + "y": 1320 + }, + { + "x": 1730544480000, + "y": 1384 + }, + { + "x": 1730544510000, + "y": 1457 + }, + { + "x": 1730544540000, + "y": 1415 + }, + { + "x": 1730544570000, + "y": 1386 + }, + { + "x": 1730544600000, + "y": 1337 + }, + { + "x": 1730544630000, + "y": 1315 + }, + { + "x": 1730544660000, + "y": 1259 + }, + { + "x": 1730544690000, + "y": 1403 + }, + { + "x": 1730544720000, + "y": 1352 + }, + { + "x": 1730544750000, + "y": 1396 + }, + { + "x": 1730544780000, + "y": 1325 + }, + { + "x": 1730544810000, + "y": 1365 + }, + { + "x": 1730544840000, + "y": 1387 + }, + { + "x": 1730544870000, + "y": 1414 + }, + { + "x": 1730544900000, + "y": 1210 + }, + { + "x": 1730544930000, + "y": 1344 + }, + { + "x": 1730544960000, + "y": 1444 + }, + { + "x": 1730544990000, + "y": 1264 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "dip", + "significance": "medium", + "change_point": 4, + "p_value": 0.00005345763188668862, + "timestamp": "2024-11-02T10:38:30.000Z" + }, + "shortId": "hhpu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1069, + "pattern": "GET HTTP/1.1 python-requests/2.31.0 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?GET.+?HTTP/1\\.1.+?python-requests/2\\.31\\.0.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:01 +0000] \"GET /api/data HTTP/1.1\" 200 177 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 177 0.003 200 6cf0fcfd1259f68166701125d3c9761c\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:01 +0000] \"GET /api/data HTTP/1.1\" 200 177 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 177 0.003 200 6cf0fcfd1259f68166701125d3c9761c\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:32.391Z", + "lastOccurrence": "2024-11-02T10:56:57.316Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 25 + }, + { + "x": 1730543820000, + "y": 27 + }, + { + "x": 1730543850000, + "y": 26 + }, + { + "x": 1730543880000, + "y": 26 + }, + { + "x": 1730543910000, + "y": 26 + }, + { + "x": 1730543940000, + "y": 27 + }, + { + "x": 1730543970000, + "y": 24 + }, + { + "x": 1730544000000, + "y": 25 + }, + { + "x": 1730544030000, + "y": 22 + }, + { + "x": 1730544060000, + "y": 27 + }, + { + "x": 1730544090000, + "y": 20 + }, + { + "x": 1730544120000, + "y": 23 + }, + { + "x": 1730544150000, + "y": 29 + }, + { + "x": 1730544180000, + "y": 25 + }, + { + "x": 1730544210000, + "y": 23 + }, + { + "x": 1730544240000, + "y": 27 + }, + { + "x": 1730544270000, + "y": 26 + }, + { + "x": 1730544300000, + "y": 27 + }, + { + "x": 1730544330000, + "y": 25 + }, + { + "x": 1730544360000, + "y": 31 + }, + { + "x": 1730544390000, + "y": 21 + }, + { + "x": 1730544420000, + "y": 27 + }, + { + "x": 1730544450000, + "y": 25 + }, + { + "x": 1730544480000, + "y": 29 + }, + { + "x": 1730544510000, + "y": 23 + }, + { + "x": 1730544540000, + "y": 27 + }, + { + "x": 1730544570000, + "y": 24 + }, + { + "x": 1730544600000, + "y": 31 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 24 + }, + { + "x": 1730544690000, + "y": 27 + }, + { + "x": 1730544720000, + "y": 27 + }, + { + "x": 1730544750000, + "y": 27 + }, + { + "x": 1730544780000, + "y": 24 + }, + { + "x": 1730544810000, + "y": 25 + }, + { + "x": 1730544840000, + "y": 26 + }, + { + "x": 1730544870000, + "y": 29 + }, + { + "x": 1730544900000, + "y": 33 + }, + { + "x": 1730544930000, + "y": 34 + }, + { + "x": 1730544960000, + "y": 25 + }, + { + "x": 1730544990000, + "y": 28 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jmoh", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1068, + "pattern": "10.244.0.38 02 2024 10 0000 GET HTTP 1.1 python requests 2.31.0 default my otel demo frontendproxy 8080 10.244.0.26 8080", + "regex": ".*?10\\.244\\.0\\.38.+?02.+?2024.+?10.+?0000.+?GET.+?HTTP.+?1\\.1.+?python.+?requests.+?2\\.31\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\.244\\.0\\.26.+?8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:06 +0000] \"GET /api/cart HTTP/1.1\" 200 24 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 24 0.003 200 33934468a35902ed5b6dde14b1aca6a0\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:06 +0000] \"GET /api/cart HTTP/1.1\" 200 24 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 24 0.003 200 33934468a35902ed5b6dde14b1aca6a0\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:32.391Z", + "lastOccurrence": "2024-11-02T10:56:57.316Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 25 + }, + { + "x": 1730543820000, + "y": 27 + }, + { + "x": 1730543850000, + "y": 26 + }, + { + "x": 1730543880000, + "y": 26 + }, + { + "x": 1730543910000, + "y": 26 + }, + { + "x": 1730543940000, + "y": 27 + }, + { + "x": 1730543970000, + "y": 24 + }, + { + "x": 1730544000000, + "y": 25 + }, + { + "x": 1730544030000, + "y": 22 + }, + { + "x": 1730544060000, + "y": 27 + }, + { + "x": 1730544090000, + "y": 20 + }, + { + "x": 1730544120000, + "y": 23 + }, + { + "x": 1730544150000, + "y": 29 + }, + { + "x": 1730544180000, + "y": 25 + }, + { + "x": 1730544210000, + "y": 23 + }, + { + "x": 1730544240000, + "y": 27 + }, + { + "x": 1730544270000, + "y": 26 + }, + { + "x": 1730544300000, + "y": 27 + }, + { + "x": 1730544330000, + "y": 25 + }, + { + "x": 1730544360000, + "y": 31 + }, + { + "x": 1730544390000, + "y": 21 + }, + { + "x": 1730544420000, + "y": 27 + }, + { + "x": 1730544450000, + "y": 25 + }, + { + "x": 1730544480000, + "y": 29 + }, + { + "x": 1730544510000, + "y": 23 + }, + { + "x": 1730544540000, + "y": 27 + }, + { + "x": 1730544570000, + "y": 24 + }, + { + "x": 1730544600000, + "y": 31 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 24 + }, + { + "x": 1730544690000, + "y": 27 + }, + { + "x": 1730544720000, + "y": 27 + }, + { + "x": 1730544750000, + "y": 27 + }, + { + "x": 1730544780000, + "y": 24 + }, + { + "x": 1730544810000, + "y": 25 + }, + { + "x": 1730544840000, + "y": 26 + }, + { + "x": 1730544870000, + "y": 29 + }, + { + "x": 1730544900000, + "y": 32 + }, + { + "x": 1730544930000, + "y": 34 + }, + { + "x": 1730544960000, + "y": 25 + }, + { + "x": 1730544990000, + "y": 28 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "vzwi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 262, + "pattern": "POST HTTP/1.1 python-requests/2.31.0 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?POST.+?HTTP/1\\.1.+?python-requests/2\\.31\\.0.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:03 +0000] \"POST /api/checkout HTTP/1.1\" 200 984 \"-\" \"python-requests/2.31.0\" 780 0.068 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 984 0.069 200 f87d6397ec8b5740f05f1f3ca07adf50\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:03 +0000] \"POST /api/checkout HTTP/1.1\" 200 984 \"-\" \"python-requests/2.31.0\" 780 0.068 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 984 0.069 200 f87d6397ec8b5740f05f1f3ca07adf50\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.220Z", + "lastOccurrence": "2024-11-02T10:56:45.575Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 5 + }, + { + "x": 1730543820000, + "y": 10 + }, + { + "x": 1730543850000, + "y": 14 + }, + { + "x": 1730543880000, + "y": 3 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 12 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 7 + }, + { + "x": 1730544060000, + "y": 5 + }, + { + "x": 1730544090000, + "y": 5 + }, + { + "x": 1730544120000, + "y": 5 + }, + { + "x": 1730544150000, + "y": 5 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 9 + }, + { + "x": 1730544240000, + "y": 5 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 14 + }, + { + "x": 1730544330000, + "y": 7 + }, + { + "x": 1730544360000, + "y": 10 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 4 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 3 + }, + { + "x": 1730544570000, + "y": 9 + }, + { + "x": 1730544600000, + "y": 5 + }, + { + "x": 1730544630000, + "y": 9 + }, + { + "x": 1730544660000, + "y": 3 + }, + { + "x": 1730544690000, + "y": 14 + }, + { + "x": 1730544720000, + "y": 13 + }, + { + "x": 1730544750000, + "y": 2 + }, + { + "x": 1730544780000, + "y": 5 + }, + { + "x": 1730544810000, + "y": 3 + }, + { + "x": 1730544840000, + "y": 7 + }, + { + "x": 1730544870000, + "y": 5 + }, + { + "x": 1730544900000, + "y": 11 + }, + { + "x": 1730544930000, + "y": 11 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 2 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "vdjm", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 263, + "pattern": "10.244.0.38 02 2024 10 0000 api HTTP 1.1 python requests 2.31.0 default my otel demo frontendproxy 8080 10.244.0.26 8080", + "regex": ".*?10\\.244\\.0\\.38.+?02.+?2024.+?10.+?0000.+?api.+?HTTP.+?1\\.1.+?python.+?requests.+?2\\.31\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\.244\\.0\\.26.+?8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.220Z", + "lastOccurrence": "2024-11-02T10:56:45.575Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 5 + }, + { + "x": 1730543820000, + "y": 10 + }, + { + "x": 1730543850000, + "y": 14 + }, + { + "x": 1730543880000, + "y": 3 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 12 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 7 + }, + { + "x": 1730544060000, + "y": 5 + }, + { + "x": 1730544090000, + "y": 5 + }, + { + "x": 1730544120000, + "y": 5 + }, + { + "x": 1730544150000, + "y": 5 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 9 + }, + { + "x": 1730544240000, + "y": 5 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 14 + }, + { + "x": 1730544330000, + "y": 7 + }, + { + "x": 1730544360000, + "y": 10 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 4 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 3 + }, + { + "x": 1730544570000, + "y": 9 + }, + { + "x": 1730544600000, + "y": 5 + }, + { + "x": 1730544630000, + "y": 9 + }, + { + "x": 1730544660000, + "y": 3 + }, + { + "x": 1730544690000, + "y": 14 + }, + { + "x": 1730544720000, + "y": 13 + }, + { + "x": 1730544750000, + "y": 2 + }, + { + "x": 1730544780000, + "y": 5 + }, + { + "x": 1730544810000, + "y": 3 + }, + { + "x": 1730544840000, + "y": 7 + }, + { + "x": 1730544870000, + "y": 5 + }, + { + "x": 1730544900000, + "y": 12 + }, + { + "x": 1730544930000, + "y": 11 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 2 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "hxyo", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [], + "searches": [ + { + "fragments": [ + "10.244.0.38:8080", + "10.244.0.38", + "8080" + ], + "appearsAs": "This IP address and port are referenced as attributes.source.address, attributes.upstream.address in the investigated entity service.name:controller." + }, + { + "fragments": [ + "http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart", + "/api/cart" + ], + "appearsAs": "These URL fragments appear as attributes.http.request.referrer, attributes.url.original in the investigated entity service.name:controller." + }, + { + "fragments": [ + "/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF", + "sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57", + "currencyCode=CHF" + ], + "appearsAs": "These URL fragments appear as attributes.url.query in the investigated entity service.name:controller." + }, + { + "fragments": [ + "default-my-otel-demo-frontendproxy-8080", + "frontendproxy", + "frontend" + ], + "appearsAs": "These service names appear as attributes.upstream.name in the investigated entity service.name:controller." + }, + { + "fragments": [ + "e6bae77cfb5b598f1d725bc6cc52d06d", + "506" + ], + "appearsAs": " These fragments appear as attributes.http.request.time, attributes.http.response.status_code in the investigated entity service.name:controller." + } + ], + "relatedEntitiesSummaries": [ + "### Related Entities Analysis\n\n#### 1. Entity: service.name:frontend\n- **Indicators (Strength: Average to Strong):**\n - Field: `attributes.upstream.name` in service.name:controller - `default-my-otel-demo-frontendproxy-8080`\n - Field: `kubernetes.pod.name.text` in service.name:frontend - `my-otel-demo-frontend-5bbf4d78bc-qtwdr`\n - URL paths in logs that suggest interactions with the frontend service, specifically `/api/cart`.\n- **Reasoning:** The `frontend` service interacts closely with the `controller` (ingress-nginx-controller). Requests directed to `/api/cart` initiate from `frontendproxy` which routes to `frontend`. Given the high error rate at the `/api/cart` endpoint, the issue might involve downstream calls from `frontend` to dependent services.\n- **Overall Likeliness:** High. The `frontend` service is one of the primary services processing requests (user interactions) that subsequently hit the `controller`.\n\n#### 2. Entity: service.name:cartservice\n- **Indicators (Strength: Strong):**\n - Correspondence of session IDs in the request URLs or logs between controller and cartservice.\n - Mention of cart failures in `frontend` interactions - indicated by error logs involving failed RPC calls to `cartservice`.\n - Logs for service.name:cartservice with messages such as `GetCartAsync called with userId=1d9f48dd`.\n- **Reasoning:** The `/api/cart` endpoint directly involves manipulating or retrieving data from `cartservice`. Given the 500 errors on requests routed via the `controller`, it's likely that `cartservice` might be either causing or being affected by these failures.\n- **Overall Likeliness:** High. Direct involvement of `cartservice` is plausible given the issue is associated specifically with cart interactions.\n\n#### 3. Entity: service.name:frontend-web\n- **Indicators (Strength: Average):**\n - URL referrer and path fragments suggest client-side interactions impact the controller’s ingress.\n - URL fields from both controller logs and frontend-web logs such as `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`.\n- **Reasoning:** `frontend-web` represents the client-side application layer. Issues in the client's request construction or timing might be indirectly impacting how the `controller` handles these requests.\n- **Overall Likeliness:** Moderate. While not directly involved in backend processing, interactions originating from the frontend-web could potentially impact the backend flow.\n\n#### 4. Entity: service.name:checkoutservice\n- **Indicators (Strength: Weak):**\n - Shared URL fragments related to the checkout process (`/api/cart` could be an intermediate step).\n - Common use of `sessionId` and `currencyCode` seen in request attributes.\n- **Reasoning:** Though the controller deals directly with cart interactions, completion of cart actions could trigger subsequent processes in `checkoutservice`. Errors during cart operations could thereby propagate issues if mismanaged upstream.\n- **Overall Likeliness:** Low to Moderate. Contextually relevant but perhaps indirectly linked unless specific error propagation is identified.\n\n#### 5. Entity: service.name:coredns\n- **Indicators (Strength: Weak to Average):**\n - DNS logs showing interactions such as `10.244.0.38:45693 - 8080 \"A IN ingress-nginx-controller.ingress-nginx.svc.cluster.local. UDP 74`.\n- **Reasoning:** DNS resolution issues could lead to inability to locate the correct backend service IP for `controller`, causing errors in routing HTTP requests.\n- **Overall Likeliness:** Low. Potential indirect influence but less likely to be the primary cause.\n\n#### Possible Relationship Summary\nGiven these findings:\n\n1. **frontend** and **cartservice** are the most relevant entities with strong indicators of their dependencies and direct involvement in handling requests relevant to the `/api/cart` endpoint. Investigating these services in conjunction with `controller` will likely reveal root causes.\n2. **frontend-web** could be examined for potential client-side initiation issues leading to increased errors, but it remains secondary.\n3. **checkoutservice** may be potentially linked through a sequence of dependencies initiated post-cart operations but is less immediate.\n4. **coredns** could be impacting resolution, yet this remains an unlikely principal cause unless supported by specific DNS errors.\n\nFocus on examining logs and dependencies from `cartservice` and `frontend` to pinpoint exact causes for the reported 500 errors at the `/api/cart` endpoint managed by the controller service.", + "## Analysis and Identification of Related Entities\n\n### Relationship 1: `frontendproxy` (default-my-otel-demo-frontendproxy-8080)\n- **Related entity:** `service.name:frontendproxy`\n- **Indicator strength:** Strong, based on the matching `attributes.upstream.name` field.\n - **Indications:**\n - From `controller` logs: `attributes.upstream.name` = `default-my-otel-demo-frontendproxy-8080`\n - Upstream IP address: `attributes.upstream.address` = `10.244.0.26:8080` in controller logs coinciding with requests that resulted in `500` errors.\n- **Reason:** The `frontendproxy` service routes traffic to the backend services, including the `controller`. Since the `controller` service receives requests and directs traffic to `frontendproxy`, it points to a possible upstream dependency causing the 500 errors during the requests to `/api/cart`.\n- **Overall likeliness:** High. This entity is directly involved since it routes traffic within the system, and its downstream performance or errors reflect on the `controller`.\n\n### Relationship 2: `frontend`\n- **Related entity:** `service.name:frontend`\n- **Indicator strength:** Moderate, observing the infrastructure context and the dependency chain.\n - **Indications:** \n - The `frontend` service is called by the `frontendproxy`, which is indicated as the `attributes.upstream.name` in `controller` logs.\n- **Reason:** In the context provided, the `frontend` communicates with other backend services to process user interactions and might be an upstream dependency for the `controller`. The problem might cascade from `frontendproxy` to `frontend`.\n- **Overall likeliness:** High. This service is critical in handling user interactions, and problems here could cause issue propagation to `controller`.\n\n### Relationship 3: `cartservice`\n- **Related entity:** `service.name:cartservice`\n- **Indicator strength:** Moderate, based on its role in the architecture and likely correlation.\n - **Indications:**\n - The `cartservice` handles shopping cart actions which map the `controller`'s `/api/cart` endpoint.\n - **Reason:** If the `cartservice` has issues, they would cascade to the `controller` /api/cart endpoint that depends on this service for cart management functions.\n- **Overall likeliness:** High. It closely correlates with the endpoint's functionality and possible 500 errors due to backend service inconsistencies.\n\n### Relationship 4: `currencyservice`\n- **Related entity:** `service.name:currencyservice`\n- **Indicator strength:** Weak, contextual dependency but crucial interplay with `cart` operations.\n - **Indications:**\n - Handling currency conversions, indirectly connected to cart operations.\n- **Reason:** The issues might arise if currency conversion fails during cart operations, contributing to the 500 errors in the `controller`.\n- **Overall likeliness:** Moderate. Essential for part of the request chains during cart operations, but primary errors might occur upstream.\n\n### Relationship 5: `productcatalogservice`\n- **Related entity:** `service.name:productcatalogservice`\n- **Indicator strength:** Weak, as no direct log correlation but relevant in the context.\n - **Indications:**\n - Provides product data, indirectly required during cart operations.\n- **Reason:** Cart operations fetching/validating product data might fail, contributing to the `controller` errors when /api/cart requests involve fetching product data.\n- **Overall likeliness:** Moderate. Possible issues here can impact `cartservice` processes and propagate as 500 errors.\n\n### Relationship 6: `frauddetectionservice`\n- **Related entity:** `service.name:frauddetectionservice`\n- **Indicator strength:** Weak, speculative and based more on potential correlation.\n - **Indications:**\n - No specific logs point directly; contextual relevance due to transaction handling.\n- **Reason:** If fraud detection triggers false flags, it can affect cart transactions.\n- **Overall likeliness:** Low. Unlikely direct contributor and more as a consequential involvement in transaction failures.\n\n### Summary\n\nThe `frontendproxy`, `frontend`, and `cartservice` are the most probable related entities with high relevance to the errors indicated in the `controller` service. Investigations should focus on these first, focusing on log patterns and errors cascading through these entities causing the 500 errors on `/api/cart`. Indirect relations like `currencyservice`, `productcatalogservice`, and `frauddetectionservice` can also be explored as part of the broader context.", + "During the investigation of the alert for the `controller` service, we are identifying possible relationships to other entities. We will meticulously examine the evidence from logs, traces, and other relevant data to uncover dependencies and potential causes for the high number of 500 errors on the `/api/cart` endpoint.\n\n### Highly Relevant Entities and Relationships\n\n#### 1. Entity: service.name:frontendproxy\n\n- **Indicators of Evidence**\n - **Strong Indicator**: `attributes.upstream.name: default-my-otel-demo-frontendproxy-8080`\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"attributes.upstream.name\": \"default-my-otel-demo-frontendproxy-8080\"`\n - `\"attributes.upstream.response.status_code\": [\"500\", \"200\", \"308\"]`\n - **Fingerprinting Evidence**:\n - `\"message\": \"10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \\\"POST /api/cart HTTP/1.1\\\" 500 32 \\\"-\\\" \\\"python-requests/2.31.0\\\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\"`\n\n- **Relationship and Context**\n - The `frontendproxy` service acts as the reverse proxy, routing incoming HTTP traffic to different backend services, including the `controller`. The errors appearing in the `controller` log indicate communication issues between the `controller` and the `frontendproxy`.\n\n- **Overall Likeliness**: High\n - Given the primary role of the `frontendproxy` in routing traffic to `controller`, coupled with the direct evidence in the logs, this entity is crucial to the situation at hand.\n\n#### 2. Entity: service.name:frontend\n\n- **Indicators of Evidence**\n - **Average Indicator**: `features.service.name: frontend`\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"attributes.http.request.origin\": \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\"`\n - `\"/api/cart` endpoint related queries`\n\n- **Relationship and Context**:\n - The `frontend` service handles key operations related to user interactions before requests are passed to various backend services, including the `controller`. Issues in `frontend`, like poor handling of requests or incorrect data forwarding, might cascade downstream, resulting in 500 errors in the `controller`.\n\n- **Overall Likeliness**: Medium to High\n - Given the data pathway from user interactions handled by `frontend`, it’s essential to determine if `frontend` anomalies are contributing to the failure in `controller`.\n\n#### 3. Entity: service.name:cartservice\n\n- **Indicators of Evidence**\n - **Average Indicator**: `/api/cart` requests typically involving `cartservice`\n - **Field Values in Investigated Entity (`controller`)**:\n - `500 errors at \"/api/cart\"`\n\n- **Relationship and Context**:\n - The `cartservice` directly manages shopping cart operations over the gRPC protocol. While the HTTP API from `controller` might indicate communication failures with `cartservice`, these errors could also originate from improper data requests or transaction handling within `cartservice`.\n\n- **Overall Likeliness**: High\n - Investigating the interaction with `cartservice` can help distinguish if business logic errors or miscommunication between services lead to repeated 500 errors.\n\n### Moderately Relevant Entities\n\n#### 4. Entity: service.name:loadgenerator\n\n- **Indicators of Evidence**\n - **Weak Indicator**: Simulated high traffic which might put strain on other services causing errors.\n - **Field Values in Investigated Entity (`controller`)**:\n - General logged high traffic instances or increased load around the alert time.\n\n- **Relationship and Context**:\n - The `loadgenerator` mimics external user traffic managed by the Ingress and ultimately passed through nodes like `controller`. Excessive load can manifest as backend service overloads or timeouts, indirectly causing 500 errors in `controller`.\n\n- **Overall Likeliness**: Medium\n - Given the traffic simulation aspect, its role is probable but direct correlation to specific error occurrences in `controller` needs corroboration with other data points.\n\n### Less Likely but Contextually Relevant Entities\n\n#### 5. Entity: service.name:etcd\n\n- **Indicators of Evidence**\n - **Weak Indicator**: General mention in logs for Ingress control plane activity\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"response count\": 0`, signifying Ingress data handling might be amiss during high traffic\n\n- **Relationship and Context**:\n - Possible indirect impact wherein control plane malfunctions or data inconsistencies in the `etcd` state can propagate as issues dispersed across services interacting via Ingress, including `controller`.\n\n- **Overall Likeliness**: Medium\n - This needs verifying integration with upstream Ingress state logs to validate contributions to observed `controller` issues.\n\n### Further Investigations and Likelihood Summary\n\nBased on logs and identified relationships, we will prioritize looking into:\n\n1. **Frontendproxy** - Checking its health, routing efficiency, and connections to `controller`.\n2. **Frontend** - Verifying its data handling during user interactions that lead to API cart errors.\n3. **Cartservice** - Ensuring logical transactions and gRPC communications, ruling out core service bugs.\n\nWe will cross-reference error logs, API traces, and dependency interactions tightly intertwined with the `controller` to form a comprehensive approach to resolution." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 3 + } + ] + } + } + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_DB13TclS3Gc9zUgCrWLrvDuu", + "function": { + "name": "observe", + "arguments": { + "observe": true + } + } + } + ] + }, + { + "name": "observe", + "response": { + "content": "### Context and Ongoing Investigation\n\nThe initial context indicated that the `controller` service was experiencing an alert due to a high number of `500 Internal Server Errors` on the `/api/cart` endpoint. The error rate was significantly high (98.78%), suggesting a severe issue within the `controller` service or its dependencies. During the initial investigation of the `controller` service, it was determined that the errors resulted from HTTP POST requests to the `/api/cart` endpoint emanating from a client using `python-requests/2.31.0`.\n\n### Key Observations and Analysis from Investigations\n\n#### 1. `controller` Service Characteristics\n\n- **Environment**: The `controller` service runs in a Kubernetes environment (`ingress-nginx` namespace), with the pod named `ingress-nginx-controller-bc57996ff-r6blf` on node `minikube`.\n- **Functionality**: Acts as an Ingress controller managing HTTP requests routing to backend services including the `frontendproxy`.\n- **Observations**:\n - Pattern showing consistent `500 Internal Server Error` for POST requests to `/api/cart`.\n - Most of these errors originate from requests routed through the `frontendproxy`.\n\n#### 2. Related Entities and Their Possible Impact\n\nEntities that closely interact with `controller` or are otherwise significant to `controller’s` functionality were assessed:\n\n1. **`frontend`**:\n - Interacts with the `controller` for routing requests.\n - Downstream dependencies and interactions might propagate errors.\n\n2. **`cartservice`**:\n - Directly involved in handling requests for the `/api/cart` endpoint.\n - Any issues here could cause `controller` errors.\n\n3. **`frontend-web`**:\n - Client-side interactions leading to requests to `/api/cart` via `controller`.\n - Potential timing or construction issues in requests.\n\n4. **Other entities (`checkoutservice`, `coredns`)**:\n - Indirectly related with varying degrees of confidence on impact.\n\n### Timeline of Significant Events\n\n1. **2024-11-02T10:56:00.000Z**:\n - **Observation**:\n - 6 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - Example Log:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n2. **2024-11-02T10:56:30.000Z**:\n - **Observation**:\n - 2 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - Example Log:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:35 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n3. **2024-11-02T10:56:42.498Z**:\n - **Alert Triggered**:\n - High number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration.\n\n### Context and Reasoning\n\nThe `controller` service functions as the main ingress gateway, routing HTTP requests to the appropriate backend services including the `frontendproxy`, and more specifically the downstream `cartservice`. The nature of the high error rates observed at `/api/cart`, particularly for POST requests, suggests the problem could originate either at the `cartservice` backend or along the routing path between `controller`, `frontendproxy`, and `cartservice`.\n\n#### Potential Root Causes\n- **Backend Service Issue**:\n Given the direct involvement of `cartservice` in `/api/cart` operations, issues here could easily propagate into repeated 500 errors seen by the `controller`.\n- **Routing/Network Issues**:\n Communication path issues (e.g., `frontendproxy` to `cartservice`) causing errors in routing HTTP requests could result in these errors.\n\n### Next Steps\n\nGiven the strong patterns:\n\n1. **Investigate `cartservice`**:\n - As the downstream service handling `/api/cart` requests, issues here would directly contribute to the observed error patterns in `controller`.\n\n2. **Investigate `frontendproxy`**:\n - Since requests are routed through this service to `cartservice`, any routing or network issues here might also contribute to the errors.\n\nUpon investigating both entities, performing more detailed inspections of the logs and interactions might reveal issues that propagate these failures. This should help isolate the fault in the communication path or within the specific services causing the `500 Internal Server Errors` seen in `controller`.\n\n**Entities to Investigate Next**:\n- **cartservice**\n- **frontendproxy**\n\nThese investigations will provide further insights into whether the root cause is localized to `cartservice` itself or issues are emergent from the routing path involving `frontendproxy`." + }, + "data": { + "content": "### Context and Ongoing Investigation\n\nThe initial context indicated that the `controller` service was experiencing an alert due to a high number of `500 Internal Server Errors` on the `/api/cart` endpoint. The error rate was significantly high (98.78%), suggesting a severe issue within the `controller` service or its dependencies. During the initial investigation of the `controller` service, it was determined that the errors resulted from HTTP POST requests to the `/api/cart` endpoint emanating from a client using `python-requests/2.31.0`.\n\n### Key Observations and Analysis from Investigations\n\n#### 1. `controller` Service Characteristics\n\n- **Environment**: The `controller` service runs in a Kubernetes environment (`ingress-nginx` namespace), with the pod named `ingress-nginx-controller-bc57996ff-r6blf` on node `minikube`.\n- **Functionality**: Acts as an Ingress controller managing HTTP requests routing to backend services including the `frontendproxy`.\n- **Observations**:\n - Pattern showing consistent `500 Internal Server Error` for POST requests to `/api/cart`.\n - Most of these errors originate from requests routed through the `frontendproxy`.\n\n#### 2. Related Entities and Their Possible Impact\n\nEntities that closely interact with `controller` or are otherwise significant to `controller’s` functionality were assessed:\n\n1. **`frontend`**:\n - Interacts with the `controller` for routing requests.\n - Downstream dependencies and interactions might propagate errors.\n\n2. **`cartservice`**:\n - Directly involved in handling requests for the `/api/cart` endpoint.\n - Any issues here could cause `controller` errors.\n\n3. **`frontend-web`**:\n - Client-side interactions leading to requests to `/api/cart` via `controller`.\n - Potential timing or construction issues in requests.\n\n4. **Other entities (`checkoutservice`, `coredns`)**:\n - Indirectly related with varying degrees of confidence on impact.\n\n### Timeline of Significant Events\n\n1. **2024-11-02T10:56:00.000Z**:\n - **Observation**:\n - 6 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - Example Log:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n2. **2024-11-02T10:56:30.000Z**:\n - **Observation**:\n - 2 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - Example Log:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:35 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n3. **2024-11-02T10:56:42.498Z**:\n - **Alert Triggered**:\n - High number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration.\n\n### Context and Reasoning\n\nThe `controller` service functions as the main ingress gateway, routing HTTP requests to the appropriate backend services including the `frontendproxy`, and more specifically the downstream `cartservice`. The nature of the high error rates observed at `/api/cart`, particularly for POST requests, suggests the problem could originate either at the `cartservice` backend or along the routing path between `controller`, `frontendproxy`, and `cartservice`.\n\n#### Potential Root Causes\n- **Backend Service Issue**:\n Given the direct involvement of `cartservice` in `/api/cart` operations, issues here could easily propagate into repeated 500 errors seen by the `controller`.\n- **Routing/Network Issues**:\n Communication path issues (e.g., `frontendproxy` to `cartservice`) causing errors in routing HTTP requests could result in these errors.\n\n### Next Steps\n\nGiven the strong patterns:\n\n1. **Investigate `cartservice`**:\n - As the downstream service handling `/api/cart` requests, issues here would directly contribute to the observed error patterns in `controller`.\n\n2. **Investigate `frontendproxy`**:\n - Since requests are routed through this service to `cartservice`, any routing or network issues here might also contribute to the errors.\n\nUpon investigating both entities, performing more detailed inspections of the logs and interactions might reveal issues that propagate these failures. This should help isolate the fault in the communication path or within the specific services causing the `500 Internal Server Errors` seen in `controller`.\n\n**Entities to Investigate Next**:\n- **cartservice**\n- **frontendproxy**\n\nThese investigations will provide further insights into whether the root cause is localized to `cartservice` itself or issues are emergent from the routing path involving `frontendproxy`.", + "investigations": [ + { + "attachments": { + "alerts": [ + { + "kibana.alert.reason": "500 Errors is 98.78049, above the threshold of 1. (duration: 1 min, data view: otel_logs_data (Automated by Demo CLI), group: controller,/api/cart)", + "kibana.alert.evaluation.values": [ + 98.78048780487805 + ], + "kibana.alert.evaluation.threshold": [ + 1 + ], + "kibana.alert.group": [ + { + "field": "service.name", + "value": "controller" + }, + { + "field": "url.path", + "value": "/api/cart" + } + ], + "tags": [ + "demo", + "cli-created" + ], + "service.name": "controller", + "kibana.alert.rule.category": "Custom threshold", + "kibana.alert.rule.consumer": "logs", + "kibana.alert.rule.execution.uuid": "4187827d-686e-4098-98e3-21e13495798e", + "kibana.alert.rule.name": "NGINX 500s", + "kibana.alert.rule.parameters": { + "criteria": [ + { + "comparator": ">", + "metrics": [ + { + "name": "A", + "filter": "http.response.status_code:*", + "aggType": "count" + }, + { + "name": "B", + "filter": "http.response.status_code>=500", + "aggType": "count" + } + ], + "threshold": [ + 1 + ], + "timeSize": 1, + "timeUnit": "m", + "equation": "(B/A) * 100", + "label": "500 Errors" + } + ], + "alertOnNoData": false, + "alertOnGroupDisappear": false, + "searchConfiguration": { + "query": { + "query": "k8s.namespace.name: \"ingress-nginx\" AND url.path: /api/*", + "language": "kuery" + }, + "index": "otel_logs_data" + }, + "groupBy": [ + "service.name", + "url.path" + ] + }, + "kibana.alert.rule.producer": "observability", + "kibana.alert.rule.revision": 0, + "kibana.alert.rule.rule_type_id": "observability.rules.custom_threshold", + "kibana.alert.rule.tags": [ + "demo", + "cli-created" + ], + "kibana.alert.rule.uuid": "9055220c-8fb1-4f9f-be7c-0a33eb2bafc5", + "kibana.space_ids": [ + "default" + ], + "@timestamp": "2024-11-02T10:56:42.498Z", + "event.action": "open", + "event.kind": "signal", + "kibana.alert.rule.execution.timestamp": "2024-11-02T10:56:42.498Z", + "kibana.alert.action_group": "custom_threshold.fired", + "kibana.alert.flapping": false, + "kibana.alert.flapping_history": [ + true + ], + "kibana.alert.instance.id": "controller,/api/cart", + "kibana.alert.maintenance_window_ids": [], + "kibana.alert.consecutive_matches": 1, + "kibana.alert.status": "active", + "kibana.alert.uuid": "b97a1b20-d14b-4835-b948-bd7a423284eb", + "kibana.alert.severity_improving": false, + "kibana.alert.workflow_status": "open", + "kibana.alert.duration.us": 0, + "kibana.alert.start": "2024-11-02T10:56:42.498Z", + "kibana.alert.time_range": { + "gte": "2024-11-02T10:56:42.498Z" + }, + "kibana.version": "9.0.0" + }, + { + "kibana.alert.reason": "500 Errors is 100, above the threshold of 1. (duration: 1 min, data view: otel_logs_data (Automated by Demo CLI), group: controller,/api/checkout)", + "kibana.alert.evaluation.values": [ + 100 + ], + "kibana.alert.evaluation.threshold": [ + 1 + ], + "kibana.alert.group": [ + { + "field": "service.name", + "value": "controller" + }, + { + "field": "url.path", + "value": "/api/checkout" + } + ], + "tags": [ + "demo", + "cli-created" + ], + "service.name": "controller", + "kibana.alert.rule.category": "Custom threshold", + "kibana.alert.rule.consumer": "logs", + "kibana.alert.rule.execution.uuid": "4187827d-686e-4098-98e3-21e13495798e", + "kibana.alert.rule.name": "NGINX 500s", + "kibana.alert.rule.parameters": { + "criteria": [ + { + "comparator": ">", + "metrics": [ + { + "name": "A", + "filter": "http.response.status_code:*", + "aggType": "count" + }, + { + "name": "B", + "filter": "http.response.status_code>=500", + "aggType": "count" + } + ], + "threshold": [ + 1 + ], + "timeSize": 1, + "timeUnit": "m", + "equation": "(B/A) * 100", + "label": "500 Errors" + } + ], + "alertOnNoData": false, + "alertOnGroupDisappear": false, + "searchConfiguration": { + "query": { + "query": "k8s.namespace.name: \"ingress-nginx\" AND url.path: /api/*", + "language": "kuery" + }, + "index": "otel_logs_data" + }, + "groupBy": [ + "service.name", + "url.path" + ] + }, + "kibana.alert.rule.producer": "observability", + "kibana.alert.rule.revision": 0, + "kibana.alert.rule.rule_type_id": "observability.rules.custom_threshold", + "kibana.alert.rule.tags": [ + "demo", + "cli-created" + ], + "kibana.alert.rule.uuid": "9055220c-8fb1-4f9f-be7c-0a33eb2bafc5", + "kibana.space_ids": [ + "default" + ], + "@timestamp": "2024-11-02T10:56:42.498Z", + "event.action": "open", + "event.kind": "signal", + "kibana.alert.rule.execution.timestamp": "2024-11-02T10:56:42.498Z", + "kibana.alert.action_group": "custom_threshold.fired", + "kibana.alert.flapping": false, + "kibana.alert.flapping_history": [ + true + ], + "kibana.alert.instance.id": "controller,/api/checkout", + "kibana.alert.maintenance_window_ids": [], + "kibana.alert.consecutive_matches": 1, + "kibana.alert.status": "active", + "kibana.alert.uuid": "78472a9c-63a2-41ba-9812-47cebd48d833", + "kibana.alert.severity_improving": false, + "kibana.alert.workflow_status": "open", + "kibana.alert.duration.us": 0, + "kibana.alert.start": "2024-11-02T10:56:42.498Z", + "kibana.alert.time_range": { + "gte": "2024-11-02T10:56:42.498Z" + }, + "kibana.version": "9.0.0" + } + ], + "slos": [], + "analysis": { + "total": 56181, + "sampled": 1000, + "fields": [ + "@timestamp:date - 994 distinct values", + "app.label.component:keyword - 1 distinct values (`controller`)", + "attributes.event.name.text:text - 1 distinct values (`nginx.ingress.controller.error`)", + "attributes.event.name:keyword - 1 distinct values (`nginx.ingress.controller.error`)", + "attributes.http.request.id:keyword - 1000 distinct values (`87c973a800b3bd34d3679f0a12263c40`, `ee99fada68450d77be61deaae1f04008`, `80312e7e98e9171c8010e442784e7a04`, `a931c4f7d964f91f0a0750f3221dfa50`, `8c2e99672e225b279a7741671c976c93`, `eed4ff70db044f81adeda15bc1f3ad4c`, `dd730f83b894fc2adedfaf950cf5884c`, `4e35653560a824d6693d1e024906e9ce`, `36d6dfae2fe5d6fecbfaadd4fac5bde1`, `43c774bea806c21478f7ee57a449222b`, 990 more values)", + "attributes.http.request.method:keyword - 2 distinct values (`POST`, `GET`)", + "attributes.http.request.referrer:keyword - 2 distinct values (`http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/`, `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`)", + "attributes.http.request.size:long - 61 distinct values (`351`, `374`, `373`, `809`, `383`, `506`, `342`, `350`, `538`, `479`, 51 more values)", + "attributes.http.request.time:float - 90 distinct values (`3.172`, `1.103`, `0.053`, `4.434`, `0.019`, `3.328`, `1.01`, `3.197`, `3.133`, `2.566`, 80 more values)", + "attributes.http.response.body.size:long - 130 distinct values (`1144`, `1120`, `1024`, `19`, `1336`, `1198`, `1070`, `111157`, `111163`, `1271`, 120 more values)", + "attributes.http.response.status_code:long - 4 distinct values (`499`, `500`, `308`, `200`)", + "attributes.http.version:keyword - 1 distinct values (`1.1`)", + "attributes.log.file.path.text:text - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "attributes.log.file.path:keyword - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "attributes.log.iostream:keyword - 1 distinct values (`stdout`)", + "attributes.network.protocol.name.text:text - 1 distinct values (`http`)", + "attributes.network.protocol.name:keyword - 1 distinct values (`http`)", + "attributes.source.address:keyword - 1 distinct values (`10.244.0.38`)", + "attributes.upstream.address:keyword - 1 distinct values (`10.244.0.26:8080`)", + "attributes.upstream.name.text:text - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "attributes.upstream.name:keyword - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "attributes.upstream.response.size:keyword - 117 distinct values (`1149`, `1120`, `1029`, `19`, `1336`, `1203`, `1070`, `1276`, `1356`, `1105`, 107 more values)", + "attributes.upstream.response.status_code:keyword - 3 distinct values (`500`, `308`, `200`)", + "attributes.upstream.response.time:keyword - 89 distinct values (`3.171`, `1.007`, `1.103`, `0.053`, `4.434`, `3.328`, `1.010`, `3.197`, `3.132`, `2.565`, 79 more values)", + "attributes.url.domain:keyword - 2 distinct values (`icons`, ``)", + "attributes.url.extension:keyword - 7 distinct values (`css`, `Service/ResolveAll`, `Service/EventStream`, `png`, `svg`, `jpg`, `js`)", + "attributes.url.original.text:text - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, 165 more values)", + "attributes.url.original:keyword - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `/api/recommendations?productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `/api/cart?sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `/api/recommendations?productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `/api/data/`, `/api/cart?sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `/api/recommendations?productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `/api/recommendations?productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `/api/cart?sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, 157 more values)", + "attributes.url.path:keyword - 43 distinct values (`/api/products/0PUK6V6EV0`, `/api/products/9SIQT8TOJO`, `/api/products/LS4PSXUNUM`, `/api/data/`, `/api/products/L9ECAV7KIM`, `/api/data`, `/api/products/66VCHSJNUP`, `/api/products/2ZYFJ3GM2N`, `/cart`, `/images/products/NationalParkFoundationExplorascope.jpg`, 33 more values)", + "attributes.url.query:keyword - 126 distinct values (`productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, `productIds=&sessionId=0c122e28-e8fb-4ab5-9889-ac797b5f17cf¤cyCode=USD`, 116 more values)", + "attributes.url.scheme:keyword - 1 distinct values (``)", + "attributes.user_agent.name.text:text - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "attributes.user_agent.name:keyword - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "attributes.user_agent.original.text:text - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "attributes.user_agent.original:keyword - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "attributes.user_agent.version:keyword - 2 distinct values (`2.31`, `120.0.6099`)", + "body.text:text - 1000 distinct values (`10.244.0.38 - - [02/Nov/2024:10:37:56 +0000] \"GET /api/currency? HTTP/1.1\" 200 199 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 598 0.007 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 199 0.007 200 87c973a800b3bd34d3679f0a12263c40\n`, `10.244.0.38 - - [02/Nov/2024:10:46:11 +0000] \"GET /_next/static/chunks/pages/_app-c923ae378a182a07.js HTTP/1.1\" 200 111150 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 484 0.017 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 111008 0.018 200 ee99fada68450d77be61deaae1f04008\n`, 998 more values)", + "data_stream.dataset:keyword - 1 distinct values (`nginx_ingress_controller.error.otel`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`logs`)", + "deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "dropped_attributes_count:long - 1 distinct values (`0`)", + "event.dataset:keyword - 1 distinct values (`nginx_ingress_controller.error.otel`)", + "event.name:keyword - 1 distinct values (`nginx.ingress.controller.error`)", + "host.arch:keyword - 1 distinct values (`arm64`)", + "host.architecture:keyword - 1 distinct values (`arm64`)", + "host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "host.cpu.family:keyword - 1 distinct values (``)", + "host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "host.cpu.model.name:keyword - 1 distinct values (``)", + "host.cpu.stepping:keyword - 1 distinct values (`0`)", + "host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "host.os.full:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "host.os.platform:keyword - 1 distinct values (`linux`)", + "http.request.id:keyword - 1000 distinct values (`87c973a800b3bd34d3679f0a12263c40`, `ee99fada68450d77be61deaae1f04008`, `80312e7e98e9171c8010e442784e7a04`, `a931c4f7d964f91f0a0750f3221dfa50`, `8c2e99672e225b279a7741671c976c93`, `eed4ff70db044f81adeda15bc1f3ad4c`, `dd730f83b894fc2adedfaf950cf5884c`, `4e35653560a824d6693d1e024906e9ce`, `36d6dfae2fe5d6fecbfaadd4fac5bde1`, `43c774bea806c21478f7ee57a449222b`, 990 more values)", + "http.request.method:keyword - 2 distinct values (`POST`, `GET`)", + "http.request.referrer:keyword - 2 distinct values (`http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/`, `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`)", + "http.request.size:long - 61 distinct values (`351`, `374`, `373`, `809`, `383`, `506`, `342`, `350`, `538`, `479`, 51 more values)", + "http.request.time:float - 90 distinct values (`3.172`, `1.103`, `0.053`, `4.434`, `0.019`, `3.328`, `1.01`, `3.197`, `3.133`, `2.566`, 80 more values)", + "http.response.body.size:long - 130 distinct values (`1144`, `1120`, `1024`, `19`, `1336`, `1198`, `1070`, `111157`, `111163`, `1271`, 120 more values)", + "http.response.status_code:long - 4 distinct values (`499`, `500`, `308`, `200`)", + "http.version:keyword - 1 distinct values (`1.1`)", + "k8s.container.name:keyword - 1 distinct values (`controller`)", + "k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "k8s.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "k8s.namespace.name:keyword - 1 distinct values (`ingress-nginx`)", + "k8s.node.name:keyword - 1 distinct values (`minikube`)", + "k8s.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T08:56:56Z`)", + "k8s.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "kubernetes.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "kubernetes.namespace:keyword - 1 distinct values (`ingress-nginx`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "log.file.path:keyword - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "log.iostream:keyword - 1 distinct values (`stdout`)", + "message:text - 1000 distinct values (`10.244.0.38 - - [02/Nov/2024:10:37:56 +0000] \"GET /api/currency? HTTP/1.1\" 200 199 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 598 0.007 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 199 0.007 200 87c973a800b3bd34d3679f0a12263c40\n`, `10.244.0.38 - - [02/Nov/2024:10:46:11 +0000] \"GET /_next/static/chunks/pages/_app-c923ae378a182a07.js HTTP/1.1\" 200 111150 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 484 0.017 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 111008 0.018 200 ee99fada68450d77be61deaae1f04008\n`, 998 more values)", + "network.protocol.name:keyword - 1 distinct values (`http`)", + "observed_timestamp:date_nanos - 1000 distinct values (`2024-11-02T10:37:56.158731715Z`, `2024-11-02T10:46:11.961228541Z`, `2024-11-02T10:38:02.758802635Z`, `2024-11-02T10:54:51.563521629Z`, `2024-11-02T10:37:05.149442469Z`, `2024-11-02T10:49:01.961126259Z`, `2024-11-02T10:56:19.96308167Z`, `2024-11-02T10:42:06.760264887Z`, `2024-11-02T10:49:45.76210446Z`, `2024-11-02T10:54:02.562840801Z`, 990 more values)", + "os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.app.label.component:keyword - 1 distinct values (`controller`)", + "resource.attributes.deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "resource.attributes.host.arch:keyword - 1 distinct values (`arm64`)", + "resource.attributes.host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "resource.attributes.host.cpu.family:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "resource.attributes.host.cpu.model.name.text:text - 1 distinct values (``)", + "resource.attributes.host.cpu.model.name:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.stepping:keyword - 1 distinct values (`0`)", + "resource.attributes.host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "resource.attributes.host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "resource.attributes.host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "resource.attributes.host.name:keyword - 1 distinct values (`otel-daemonset-opentelemetry-collector-agent-7jlpk`)", + "resource.attributes.k8s.container.name.text:text - 1 distinct values (`controller`)", + "resource.attributes.k8s.container.name:keyword - 1 distinct values (`controller`)", + "resource.attributes.k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "resource.attributes.k8s.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "resource.attributes.k8s.namespace.name:keyword - 1 distinct values (`ingress-nginx`)", + "resource.attributes.k8s.node.name:keyword - 1 distinct values (`minikube`)", + "resource.attributes.k8s.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "resource.attributes.k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T08:56:56Z`)", + "resource.attributes.k8s.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "resource.attributes.os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "resource.attributes.os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.service.name.text:text - 1 distinct values (`controller`)", + "resource.attributes.service.name:keyword - 1 distinct values (`controller`)", + "resource.dropped_attributes_count:long - 1 distinct values (`0`)", + "resource.schema_url:keyword - 1 distinct values (`https://opentelemetry.io/schemas/1.6.1`)", + "scope.dropped_attributes_count:long - 1 distinct values (`0`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.name:keyword - 1 distinct values (`controller`)", + "severity_number:byte - 1 distinct values (`0`)", + "source.address:keyword - 1 distinct values (`10.244.0.38`)", + "upstream.address:keyword - 1 distinct values (`10.244.0.26:8080`)", + "upstream.name:keyword - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "upstream.response.size:keyword - 117 distinct values (`1149`, `1120`, `1029`, `19`, `1336`, `1203`, `1070`, `1276`, `1356`, `1105`, 107 more values)", + "upstream.response.status_code:keyword - 3 distinct values (`500`, `308`, `200`)", + "upstream.response.time:keyword - 89 distinct values (`3.171`, `1.007`, `1.103`, `0.053`, `4.434`, `3.328`, `1.010`, `3.197`, `3.132`, `2.565`, 79 more values)", + "url.domain:keyword - 2 distinct values (`icons`, ``)", + "url.extension:keyword - 7 distinct values (`css`, `Service/ResolveAll`, `Service/EventStream`, `png`, `svg`, `jpg`, `js`)", + "url.original:keyword - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `/api/recommendations?productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `/api/cart?sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `/api/recommendations?productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `/api/data/`, `/api/cart?sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `/api/recommendations?productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `/api/recommendations?productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `/api/cart?sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, 157 more values)", + "url.path:keyword - 43 distinct values (`/api/products/0PUK6V6EV0`, `/api/products/9SIQT8TOJO`, `/api/products/LS4PSXUNUM`, `/api/data/`, `/api/products/L9ECAV7KIM`, `/api/data`, `/api/products/66VCHSJNUP`, `/api/products/2ZYFJ3GM2N`, `/cart`, `/images/products/NationalParkFoundationExplorascope.jpg`, 33 more values)", + "url.query:keyword - 126 distinct values (`productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, `productIds=&sessionId=0c122e28-e8fb-4ab5-9889-ac797b5f17cf¤cyCode=USD`, 116 more values)", + "url.scheme:keyword - 1 distinct values (``)", + "user_agent.name:keyword - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "user_agent.original:keyword - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "user_agent.version:keyword - 2 distinct values (`2.31`, `120.0.6099`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 54850, + "pattern": "HTTP/1.1 Mozilla/5.0 X11 Linux aarch64 AppleWebKit/537.36 KHTML like Gecko HeadlessChrome/120.0.6099.28 Safari/537.36 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?HTTP/1\\.1.+?Mozilla/5\\.0.+?X11.+?Linux.+?aarch64.+?AppleWebKit/537\\.36.+?KHTML.+?like.+?Gecko.+?HeadlessChrome/120\\.0\\.6099\\.28.+?Safari/537\\.36.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:54:54 +0000] \"GET /icons/Chevron.svg HTTP/1.1\" 200 805 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 508 0.001 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 810 0.001 200 8693bfefd0668ca27fff0e929785a2c5\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:54:54 +0000] \"GET /icons/Chevron.svg HTTP/1.1\" 200 805 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 508 0.001 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 810 0.001 200 8693bfefd0668ca27fff0e929785a2c5\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.057Z", + "lastOccurrence": "2024-11-02T10:56:59.420Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1385 + }, + { + "x": 1730543820000, + "y": 1172 + }, + { + "x": 1730543850000, + "y": 1520 + }, + { + "x": 1730543880000, + "y": 1312 + }, + { + "x": 1730543910000, + "y": 986 + }, + { + "x": 1730543940000, + "y": 1030 + }, + { + "x": 1730543970000, + "y": 1248 + }, + { + "x": 1730544000000, + "y": 1395 + }, + { + "x": 1730544030000, + "y": 1371 + }, + { + "x": 1730544060000, + "y": 1289 + }, + { + "x": 1730544090000, + "y": 1467 + }, + { + "x": 1730544120000, + "y": 1223 + }, + { + "x": 1730544150000, + "y": 1429 + }, + { + "x": 1730544180000, + "y": 1329 + }, + { + "x": 1730544210000, + "y": 1224 + }, + { + "x": 1730544240000, + "y": 1424 + }, + { + "x": 1730544270000, + "y": 1409 + }, + { + "x": 1730544300000, + "y": 1405 + }, + { + "x": 1730544330000, + "y": 1322 + }, + { + "x": 1730544360000, + "y": 1326 + }, + { + "x": 1730544390000, + "y": 1416 + }, + { + "x": 1730544420000, + "y": 1391 + }, + { + "x": 1730544450000, + "y": 1320 + }, + { + "x": 1730544480000, + "y": 1384 + }, + { + "x": 1730544510000, + "y": 1457 + }, + { + "x": 1730544540000, + "y": 1415 + }, + { + "x": 1730544570000, + "y": 1386 + }, + { + "x": 1730544600000, + "y": 1337 + }, + { + "x": 1730544630000, + "y": 1315 + }, + { + "x": 1730544660000, + "y": 1259 + }, + { + "x": 1730544690000, + "y": 1403 + }, + { + "x": 1730544720000, + "y": 1352 + }, + { + "x": 1730544750000, + "y": 1396 + }, + { + "x": 1730544780000, + "y": 1325 + }, + { + "x": 1730544810000, + "y": 1365 + }, + { + "x": 1730544840000, + "y": 1387 + }, + { + "x": 1730544870000, + "y": 1414 + }, + { + "x": 1730544900000, + "y": 1210 + }, + { + "x": 1730544930000, + "y": 1344 + }, + { + "x": 1730544960000, + "y": 1444 + }, + { + "x": 1730544990000, + "y": 1264 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "dip", + "significance": "medium", + "change_point": 4, + "p_value": 0.00005345763188668862, + "timestamp": "2024-11-02T10:38:30.000Z" + }, + "shortId": "hhpu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1069, + "pattern": "GET HTTP/1.1 python-requests/2.31.0 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?GET.+?HTTP/1\\.1.+?python-requests/2\\.31\\.0.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:01 +0000] \"GET /api/data HTTP/1.1\" 200 177 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 177 0.003 200 6cf0fcfd1259f68166701125d3c9761c\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:01 +0000] \"GET /api/data HTTP/1.1\" 200 177 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 177 0.003 200 6cf0fcfd1259f68166701125d3c9761c\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:32.391Z", + "lastOccurrence": "2024-11-02T10:56:57.316Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 25 + }, + { + "x": 1730543820000, + "y": 27 + }, + { + "x": 1730543850000, + "y": 26 + }, + { + "x": 1730543880000, + "y": 26 + }, + { + "x": 1730543910000, + "y": 26 + }, + { + "x": 1730543940000, + "y": 27 + }, + { + "x": 1730543970000, + "y": 24 + }, + { + "x": 1730544000000, + "y": 25 + }, + { + "x": 1730544030000, + "y": 22 + }, + { + "x": 1730544060000, + "y": 27 + }, + { + "x": 1730544090000, + "y": 20 + }, + { + "x": 1730544120000, + "y": 23 + }, + { + "x": 1730544150000, + "y": 29 + }, + { + "x": 1730544180000, + "y": 25 + }, + { + "x": 1730544210000, + "y": 23 + }, + { + "x": 1730544240000, + "y": 27 + }, + { + "x": 1730544270000, + "y": 26 + }, + { + "x": 1730544300000, + "y": 27 + }, + { + "x": 1730544330000, + "y": 25 + }, + { + "x": 1730544360000, + "y": 31 + }, + { + "x": 1730544390000, + "y": 21 + }, + { + "x": 1730544420000, + "y": 27 + }, + { + "x": 1730544450000, + "y": 25 + }, + { + "x": 1730544480000, + "y": 29 + }, + { + "x": 1730544510000, + "y": 23 + }, + { + "x": 1730544540000, + "y": 27 + }, + { + "x": 1730544570000, + "y": 24 + }, + { + "x": 1730544600000, + "y": 31 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 24 + }, + { + "x": 1730544690000, + "y": 27 + }, + { + "x": 1730544720000, + "y": 27 + }, + { + "x": 1730544750000, + "y": 27 + }, + { + "x": 1730544780000, + "y": 24 + }, + { + "x": 1730544810000, + "y": 25 + }, + { + "x": 1730544840000, + "y": 26 + }, + { + "x": 1730544870000, + "y": 29 + }, + { + "x": 1730544900000, + "y": 33 + }, + { + "x": 1730544930000, + "y": 34 + }, + { + "x": 1730544960000, + "y": 25 + }, + { + "x": 1730544990000, + "y": 28 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jmoh", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1068, + "pattern": "10.244.0.38 02 2024 10 0000 GET HTTP 1.1 python requests 2.31.0 default my otel demo frontendproxy 8080 10.244.0.26 8080", + "regex": ".*?10\\.244\\.0\\.38.+?02.+?2024.+?10.+?0000.+?GET.+?HTTP.+?1\\.1.+?python.+?requests.+?2\\.31\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\.244\\.0\\.26.+?8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:06 +0000] \"GET /api/cart HTTP/1.1\" 200 24 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 24 0.003 200 33934468a35902ed5b6dde14b1aca6a0\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:06 +0000] \"GET /api/cart HTTP/1.1\" 200 24 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 24 0.003 200 33934468a35902ed5b6dde14b1aca6a0\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:32.391Z", + "lastOccurrence": "2024-11-02T10:56:57.316Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 25 + }, + { + "x": 1730543820000, + "y": 27 + }, + { + "x": 1730543850000, + "y": 26 + }, + { + "x": 1730543880000, + "y": 26 + }, + { + "x": 1730543910000, + "y": 26 + }, + { + "x": 1730543940000, + "y": 27 + }, + { + "x": 1730543970000, + "y": 24 + }, + { + "x": 1730544000000, + "y": 25 + }, + { + "x": 1730544030000, + "y": 22 + }, + { + "x": 1730544060000, + "y": 27 + }, + { + "x": 1730544090000, + "y": 20 + }, + { + "x": 1730544120000, + "y": 23 + }, + { + "x": 1730544150000, + "y": 29 + }, + { + "x": 1730544180000, + "y": 25 + }, + { + "x": 1730544210000, + "y": 23 + }, + { + "x": 1730544240000, + "y": 27 + }, + { + "x": 1730544270000, + "y": 26 + }, + { + "x": 1730544300000, + "y": 27 + }, + { + "x": 1730544330000, + "y": 25 + }, + { + "x": 1730544360000, + "y": 31 + }, + { + "x": 1730544390000, + "y": 21 + }, + { + "x": 1730544420000, + "y": 27 + }, + { + "x": 1730544450000, + "y": 25 + }, + { + "x": 1730544480000, + "y": 29 + }, + { + "x": 1730544510000, + "y": 23 + }, + { + "x": 1730544540000, + "y": 27 + }, + { + "x": 1730544570000, + "y": 24 + }, + { + "x": 1730544600000, + "y": 31 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 24 + }, + { + "x": 1730544690000, + "y": 27 + }, + { + "x": 1730544720000, + "y": 27 + }, + { + "x": 1730544750000, + "y": 27 + }, + { + "x": 1730544780000, + "y": 24 + }, + { + "x": 1730544810000, + "y": 25 + }, + { + "x": 1730544840000, + "y": 26 + }, + { + "x": 1730544870000, + "y": 29 + }, + { + "x": 1730544900000, + "y": 32 + }, + { + "x": 1730544930000, + "y": 34 + }, + { + "x": 1730544960000, + "y": 25 + }, + { + "x": 1730544990000, + "y": 28 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "vzwi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 262, + "pattern": "POST HTTP/1.1 python-requests/2.31.0 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?POST.+?HTTP/1\\.1.+?python-requests/2\\.31\\.0.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:03 +0000] \"POST /api/checkout HTTP/1.1\" 200 984 \"-\" \"python-requests/2.31.0\" 780 0.068 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 984 0.069 200 f87d6397ec8b5740f05f1f3ca07adf50\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:03 +0000] \"POST /api/checkout HTTP/1.1\" 200 984 \"-\" \"python-requests/2.31.0\" 780 0.068 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 984 0.069 200 f87d6397ec8b5740f05f1f3ca07adf50\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.220Z", + "lastOccurrence": "2024-11-02T10:56:45.575Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 5 + }, + { + "x": 1730543820000, + "y": 10 + }, + { + "x": 1730543850000, + "y": 14 + }, + { + "x": 1730543880000, + "y": 3 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 12 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 7 + }, + { + "x": 1730544060000, + "y": 5 + }, + { + "x": 1730544090000, + "y": 5 + }, + { + "x": 1730544120000, + "y": 5 + }, + { + "x": 1730544150000, + "y": 5 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 9 + }, + { + "x": 1730544240000, + "y": 5 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 14 + }, + { + "x": 1730544330000, + "y": 7 + }, + { + "x": 1730544360000, + "y": 10 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 4 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 3 + }, + { + "x": 1730544570000, + "y": 9 + }, + { + "x": 1730544600000, + "y": 5 + }, + { + "x": 1730544630000, + "y": 9 + }, + { + "x": 1730544660000, + "y": 3 + }, + { + "x": 1730544690000, + "y": 14 + }, + { + "x": 1730544720000, + "y": 13 + }, + { + "x": 1730544750000, + "y": 2 + }, + { + "x": 1730544780000, + "y": 5 + }, + { + "x": 1730544810000, + "y": 3 + }, + { + "x": 1730544840000, + "y": 7 + }, + { + "x": 1730544870000, + "y": 5 + }, + { + "x": 1730544900000, + "y": 11 + }, + { + "x": 1730544930000, + "y": 11 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 2 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "vdjm", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 263, + "pattern": "10.244.0.38 02 2024 10 0000 api HTTP 1.1 python requests 2.31.0 default my otel demo frontendproxy 8080 10.244.0.26 8080", + "regex": ".*?10\\.244\\.0\\.38.+?02.+?2024.+?10.+?0000.+?api.+?HTTP.+?1\\.1.+?python.+?requests.+?2\\.31\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\.244\\.0\\.26.+?8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.220Z", + "lastOccurrence": "2024-11-02T10:56:45.575Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 5 + }, + { + "x": 1730543820000, + "y": 10 + }, + { + "x": 1730543850000, + "y": 14 + }, + { + "x": 1730543880000, + "y": 3 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 12 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 7 + }, + { + "x": 1730544060000, + "y": 5 + }, + { + "x": 1730544090000, + "y": 5 + }, + { + "x": 1730544120000, + "y": 5 + }, + { + "x": 1730544150000, + "y": 5 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 9 + }, + { + "x": 1730544240000, + "y": 5 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 14 + }, + { + "x": 1730544330000, + "y": 7 + }, + { + "x": 1730544360000, + "y": 10 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 4 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 3 + }, + { + "x": 1730544570000, + "y": 9 + }, + { + "x": 1730544600000, + "y": 5 + }, + { + "x": 1730544630000, + "y": 9 + }, + { + "x": 1730544660000, + "y": 3 + }, + { + "x": 1730544690000, + "y": 14 + }, + { + "x": 1730544720000, + "y": 13 + }, + { + "x": 1730544750000, + "y": 2 + }, + { + "x": 1730544780000, + "y": 5 + }, + { + "x": 1730544810000, + "y": 3 + }, + { + "x": 1730544840000, + "y": 7 + }, + { + "x": 1730544870000, + "y": 5 + }, + { + "x": 1730544900000, + "y": 12 + }, + { + "x": 1730544930000, + "y": 11 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 2 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "hxyo", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [], + "searches": [ + { + "fragments": [ + "10.244.0.38:8080", + "10.244.0.38", + "8080" + ], + "appearsAs": "This IP address and port are referenced as attributes.source.address, attributes.upstream.address in the investigated entity service.name:controller." + }, + { + "fragments": [ + "http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart", + "/api/cart" + ], + "appearsAs": "These URL fragments appear as attributes.http.request.referrer, attributes.url.original in the investigated entity service.name:controller." + }, + { + "fragments": [ + "/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF", + "sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57", + "currencyCode=CHF" + ], + "appearsAs": "These URL fragments appear as attributes.url.query in the investigated entity service.name:controller." + }, + { + "fragments": [ + "default-my-otel-demo-frontendproxy-8080", + "frontendproxy", + "frontend" + ], + "appearsAs": "These service names appear as attributes.upstream.name in the investigated entity service.name:controller." + }, + { + "fragments": [ + "e6bae77cfb5b598f1d725bc6cc52d06d", + "506" + ], + "appearsAs": " These fragments appear as attributes.http.request.time, attributes.http.response.status_code in the investigated entity service.name:controller." + } + ], + "relatedEntitiesSummaries": [ + "### Related Entities Analysis\n\n#### 1. Entity: service.name:frontend\n- **Indicators (Strength: Average to Strong):**\n - Field: `attributes.upstream.name` in service.name:controller - `default-my-otel-demo-frontendproxy-8080`\n - Field: `kubernetes.pod.name.text` in service.name:frontend - `my-otel-demo-frontend-5bbf4d78bc-qtwdr`\n - URL paths in logs that suggest interactions with the frontend service, specifically `/api/cart`.\n- **Reasoning:** The `frontend` service interacts closely with the `controller` (ingress-nginx-controller). Requests directed to `/api/cart` initiate from `frontendproxy` which routes to `frontend`. Given the high error rate at the `/api/cart` endpoint, the issue might involve downstream calls from `frontend` to dependent services.\n- **Overall Likeliness:** High. The `frontend` service is one of the primary services processing requests (user interactions) that subsequently hit the `controller`.\n\n#### 2. Entity: service.name:cartservice\n- **Indicators (Strength: Strong):**\n - Correspondence of session IDs in the request URLs or logs between controller and cartservice.\n - Mention of cart failures in `frontend` interactions - indicated by error logs involving failed RPC calls to `cartservice`.\n - Logs for service.name:cartservice with messages such as `GetCartAsync called with userId=1d9f48dd`.\n- **Reasoning:** The `/api/cart` endpoint directly involves manipulating or retrieving data from `cartservice`. Given the 500 errors on requests routed via the `controller`, it's likely that `cartservice` might be either causing or being affected by these failures.\n- **Overall Likeliness:** High. Direct involvement of `cartservice` is plausible given the issue is associated specifically with cart interactions.\n\n#### 3. Entity: service.name:frontend-web\n- **Indicators (Strength: Average):**\n - URL referrer and path fragments suggest client-side interactions impact the controller’s ingress.\n - URL fields from both controller logs and frontend-web logs such as `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`.\n- **Reasoning:** `frontend-web` represents the client-side application layer. Issues in the client's request construction or timing might be indirectly impacting how the `controller` handles these requests.\n- **Overall Likeliness:** Moderate. While not directly involved in backend processing, interactions originating from the frontend-web could potentially impact the backend flow.\n\n#### 4. Entity: service.name:checkoutservice\n- **Indicators (Strength: Weak):**\n - Shared URL fragments related to the checkout process (`/api/cart` could be an intermediate step).\n - Common use of `sessionId` and `currencyCode` seen in request attributes.\n- **Reasoning:** Though the controller deals directly with cart interactions, completion of cart actions could trigger subsequent processes in `checkoutservice`. Errors during cart operations could thereby propagate issues if mismanaged upstream.\n- **Overall Likeliness:** Low to Moderate. Contextually relevant but perhaps indirectly linked unless specific error propagation is identified.\n\n#### 5. Entity: service.name:coredns\n- **Indicators (Strength: Weak to Average):**\n - DNS logs showing interactions such as `10.244.0.38:45693 - 8080 \"A IN ingress-nginx-controller.ingress-nginx.svc.cluster.local. UDP 74`.\n- **Reasoning:** DNS resolution issues could lead to inability to locate the correct backend service IP for `controller`, causing errors in routing HTTP requests.\n- **Overall Likeliness:** Low. Potential indirect influence but less likely to be the primary cause.\n\n#### Possible Relationship Summary\nGiven these findings:\n\n1. **frontend** and **cartservice** are the most relevant entities with strong indicators of their dependencies and direct involvement in handling requests relevant to the `/api/cart` endpoint. Investigating these services in conjunction with `controller` will likely reveal root causes.\n2. **frontend-web** could be examined for potential client-side initiation issues leading to increased errors, but it remains secondary.\n3. **checkoutservice** may be potentially linked through a sequence of dependencies initiated post-cart operations but is less immediate.\n4. **coredns** could be impacting resolution, yet this remains an unlikely principal cause unless supported by specific DNS errors.\n\nFocus on examining logs and dependencies from `cartservice` and `frontend` to pinpoint exact causes for the reported 500 errors at the `/api/cart` endpoint managed by the controller service.", + "## Analysis and Identification of Related Entities\n\n### Relationship 1: `frontendproxy` (default-my-otel-demo-frontendproxy-8080)\n- **Related entity:** `service.name:frontendproxy`\n- **Indicator strength:** Strong, based on the matching `attributes.upstream.name` field.\n - **Indications:**\n - From `controller` logs: `attributes.upstream.name` = `default-my-otel-demo-frontendproxy-8080`\n - Upstream IP address: `attributes.upstream.address` = `10.244.0.26:8080` in controller logs coinciding with requests that resulted in `500` errors.\n- **Reason:** The `frontendproxy` service routes traffic to the backend services, including the `controller`. Since the `controller` service receives requests and directs traffic to `frontendproxy`, it points to a possible upstream dependency causing the 500 errors during the requests to `/api/cart`.\n- **Overall likeliness:** High. This entity is directly involved since it routes traffic within the system, and its downstream performance or errors reflect on the `controller`.\n\n### Relationship 2: `frontend`\n- **Related entity:** `service.name:frontend`\n- **Indicator strength:** Moderate, observing the infrastructure context and the dependency chain.\n - **Indications:** \n - The `frontend` service is called by the `frontendproxy`, which is indicated as the `attributes.upstream.name` in `controller` logs.\n- **Reason:** In the context provided, the `frontend` communicates with other backend services to process user interactions and might be an upstream dependency for the `controller`. The problem might cascade from `frontendproxy` to `frontend`.\n- **Overall likeliness:** High. This service is critical in handling user interactions, and problems here could cause issue propagation to `controller`.\n\n### Relationship 3: `cartservice`\n- **Related entity:** `service.name:cartservice`\n- **Indicator strength:** Moderate, based on its role in the architecture and likely correlation.\n - **Indications:**\n - The `cartservice` handles shopping cart actions which map the `controller`'s `/api/cart` endpoint.\n - **Reason:** If the `cartservice` has issues, they would cascade to the `controller` /api/cart endpoint that depends on this service for cart management functions.\n- **Overall likeliness:** High. It closely correlates with the endpoint's functionality and possible 500 errors due to backend service inconsistencies.\n\n### Relationship 4: `currencyservice`\n- **Related entity:** `service.name:currencyservice`\n- **Indicator strength:** Weak, contextual dependency but crucial interplay with `cart` operations.\n - **Indications:**\n - Handling currency conversions, indirectly connected to cart operations.\n- **Reason:** The issues might arise if currency conversion fails during cart operations, contributing to the 500 errors in the `controller`.\n- **Overall likeliness:** Moderate. Essential for part of the request chains during cart operations, but primary errors might occur upstream.\n\n### Relationship 5: `productcatalogservice`\n- **Related entity:** `service.name:productcatalogservice`\n- **Indicator strength:** Weak, as no direct log correlation but relevant in the context.\n - **Indications:**\n - Provides product data, indirectly required during cart operations.\n- **Reason:** Cart operations fetching/validating product data might fail, contributing to the `controller` errors when /api/cart requests involve fetching product data.\n- **Overall likeliness:** Moderate. Possible issues here can impact `cartservice` processes and propagate as 500 errors.\n\n### Relationship 6: `frauddetectionservice`\n- **Related entity:** `service.name:frauddetectionservice`\n- **Indicator strength:** Weak, speculative and based more on potential correlation.\n - **Indications:**\n - No specific logs point directly; contextual relevance due to transaction handling.\n- **Reason:** If fraud detection triggers false flags, it can affect cart transactions.\n- **Overall likeliness:** Low. Unlikely direct contributor and more as a consequential involvement in transaction failures.\n\n### Summary\n\nThe `frontendproxy`, `frontend`, and `cartservice` are the most probable related entities with high relevance to the errors indicated in the `controller` service. Investigations should focus on these first, focusing on log patterns and errors cascading through these entities causing the 500 errors on `/api/cart`. Indirect relations like `currencyservice`, `productcatalogservice`, and `frauddetectionservice` can also be explored as part of the broader context.", + "During the investigation of the alert for the `controller` service, we are identifying possible relationships to other entities. We will meticulously examine the evidence from logs, traces, and other relevant data to uncover dependencies and potential causes for the high number of 500 errors on the `/api/cart` endpoint.\n\n### Highly Relevant Entities and Relationships\n\n#### 1. Entity: service.name:frontendproxy\n\n- **Indicators of Evidence**\n - **Strong Indicator**: `attributes.upstream.name: default-my-otel-demo-frontendproxy-8080`\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"attributes.upstream.name\": \"default-my-otel-demo-frontendproxy-8080\"`\n - `\"attributes.upstream.response.status_code\": [\"500\", \"200\", \"308\"]`\n - **Fingerprinting Evidence**:\n - `\"message\": \"10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \\\"POST /api/cart HTTP/1.1\\\" 500 32 \\\"-\\\" \\\"python-requests/2.31.0\\\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\"`\n\n- **Relationship and Context**\n - The `frontendproxy` service acts as the reverse proxy, routing incoming HTTP traffic to different backend services, including the `controller`. The errors appearing in the `controller` log indicate communication issues between the `controller` and the `frontendproxy`.\n\n- **Overall Likeliness**: High\n - Given the primary role of the `frontendproxy` in routing traffic to `controller`, coupled with the direct evidence in the logs, this entity is crucial to the situation at hand.\n\n#### 2. Entity: service.name:frontend\n\n- **Indicators of Evidence**\n - **Average Indicator**: `features.service.name: frontend`\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"attributes.http.request.origin\": \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\"`\n - `\"/api/cart` endpoint related queries`\n\n- **Relationship and Context**:\n - The `frontend` service handles key operations related to user interactions before requests are passed to various backend services, including the `controller`. Issues in `frontend`, like poor handling of requests or incorrect data forwarding, might cascade downstream, resulting in 500 errors in the `controller`.\n\n- **Overall Likeliness**: Medium to High\n - Given the data pathway from user interactions handled by `frontend`, it’s essential to determine if `frontend` anomalies are contributing to the failure in `controller`.\n\n#### 3. Entity: service.name:cartservice\n\n- **Indicators of Evidence**\n - **Average Indicator**: `/api/cart` requests typically involving `cartservice`\n - **Field Values in Investigated Entity (`controller`)**:\n - `500 errors at \"/api/cart\"`\n\n- **Relationship and Context**:\n - The `cartservice` directly manages shopping cart operations over the gRPC protocol. While the HTTP API from `controller` might indicate communication failures with `cartservice`, these errors could also originate from improper data requests or transaction handling within `cartservice`.\n\n- **Overall Likeliness**: High\n - Investigating the interaction with `cartservice` can help distinguish if business logic errors or miscommunication between services lead to repeated 500 errors.\n\n### Moderately Relevant Entities\n\n#### 4. Entity: service.name:loadgenerator\n\n- **Indicators of Evidence**\n - **Weak Indicator**: Simulated high traffic which might put strain on other services causing errors.\n - **Field Values in Investigated Entity (`controller`)**:\n - General logged high traffic instances or increased load around the alert time.\n\n- **Relationship and Context**:\n - The `loadgenerator` mimics external user traffic managed by the Ingress and ultimately passed through nodes like `controller`. Excessive load can manifest as backend service overloads or timeouts, indirectly causing 500 errors in `controller`.\n\n- **Overall Likeliness**: Medium\n - Given the traffic simulation aspect, its role is probable but direct correlation to specific error occurrences in `controller` needs corroboration with other data points.\n\n### Less Likely but Contextually Relevant Entities\n\n#### 5. Entity: service.name:etcd\n\n- **Indicators of Evidence**\n - **Weak Indicator**: General mention in logs for Ingress control plane activity\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"response count\": 0`, signifying Ingress data handling might be amiss during high traffic\n\n- **Relationship and Context**:\n - Possible indirect impact wherein control plane malfunctions or data inconsistencies in the `etcd` state can propagate as issues dispersed across services interacting via Ingress, including `controller`.\n\n- **Overall Likeliness**: Medium\n - This needs verifying integration with upstream Ingress state logs to validate contributions to observed `controller` issues.\n\n### Further Investigations and Likelihood Summary\n\nBased on logs and identified relationships, we will prioritize looking into:\n\n1. **Frontendproxy** - Checking its health, routing efficiency, and connections to `controller`.\n2. **Frontend** - Verifying its data handling during user interactions that lead to API cart errors.\n3. **Cartservice** - Ensuring logical transactions and gRPC communications, ruling out core service bugs.\n\nWe will cross-reference error logs, API traces, and dependency interactions tightly intertwined with the `controller` to form a comprehensive approach to resolution." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 3 + } + ] + }, + "entity": { + "service.name": "controller" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "frontend" + }, + "reason": "The frontend service interacts closely with the controller (ingress-nginx-controller). Requests directed to /api/cart initiate from frontendproxy which routes to frontend. Given the high error rate at the /api/cart endpoint, the issue might involve downstream calls from frontend to dependent services.", + "confidence": "high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The /api/cart endpoint directly involves manipulating or retrieving data from cartservice. Given the 500 errors on requests routed via the controller, it's likely that cartservice might be either causing or being affected by these failures.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend-web" + }, + "reason": "URL referrer and path fragments suggest client-side interactions impacting the controller's ingress. Issues in the client's request construction or timing might be indirectly impacting how the controller handles these requests.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "Though the controller deals directly with cart interactions, completion of cart actions could trigger subsequent processes in checkoutservice. Errors during cart operations could thereby propagate issues if mismanaged upstream.", + "confidence": "low" + }, + { + "entity": { + "service.name": "coredns" + }, + "reason": "DNS resolution issues could lead to inability to locate the correct backend service IP for controller, causing errors in routing HTTP requests.", + "confidence": "low" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service is called by the `frontendproxy`, which is indicated as the `attributes.upstream.name` in `controller` logs. In the context provided, the `frontend` communicates with other backend services to process user interactions and might be an upstream dependency for the `controller`. The problem might cascade from `frontendproxy` to `frontend`.", + "confidence": "high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The `cartservice` handles shopping cart actions which map the `controller`'s `/api/cart` endpoint. If the `cartservice` has issues, they would cascade to the `controller` /api/cart endpoint that depends on this service for cart management functions.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "Handling currency conversions, indirectly connected to cart operations. The issues might arise if currency conversion fails during cart operations, contributing to the 500 errors in the `controller`.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "frauddetectionservice" + }, + "reason": "No specific logs point directly; contextual relevance due to transaction handling. If fraud detection triggers false flags, it can affect cart transactions.", + "confidence": "low" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The `cartservice` directly manages shopping cart operations over the gRPC protocol, and errors here could lead to repeated 500 errors in the `controller`.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service handles user interactions that are passed to the `controller`. Issues in `frontend` could lead to failures in `controller`, resulting in 500 errors.", + "confidence": "medium to high" + }, + { + "entity": { + "service.name": "loadgenerator" + }, + "reason": "The `loadgenerator` simulates high user traffic which might strain other services and indirectly cause 500 errors in the `controller`.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "etcd" + }, + "reason": "As a control plane activity tracker for Ingress, indirect impacts from `etcd` inconsistencies can propagate as issues in services interacting via Ingress, including `controller`.", + "confidence": "medium" + } + ], + "summary": "### Characteristics of the `controller` Entity\n\n**1. Infrastructure & Environment:**\n\nThe `controller` service is deployed within a Kubernetes environment, specifically in the `ingress-nginx` namespace. The service is associated with a `controller` container running within the `ingress-nginx-controller-bc57996ff-r6blf` pod. This pod is scheduled on a node identified as `minikube`, and the service is part of the `ingress-nginx-controller` deployment. Additionally, the infrastructure is based on an ARM64 architecture, running Ubuntu 24.04.1 LTS, with deployment environment set to `opentelemetry-demo`.\n\n**2. Communication Characteristics:**\n\nThe `controller` service functions as an Ingress controller, managing incoming traffic and routing it to backend services. It processes HTTP requests, typically version 1.1, and communicates with other services via HTTP protocols. Key endpoints involved in the communication include:\n- Inbound requests are received at endpoints like `/api/cart` and `/api/checkout`.\n- Outbound requests are routed primarily to the `frontendproxy` service, evidenced by the upstream address `10.244.0.26:8080`.\n\nThe service handles both `GET` and `POST` requests, and its communication paths include requests from user agents like \"HeadlessChrome\" and \"python-requests\".\n\n**3. Context of Entity in Investigation:**\n\n**Reason for Investigation:**\nThe `controller` service is currently under investigation due to an alert triggered by a high number of 500 errors (98.78% error rate) occurring at the `/api/cart` endpoint. The significant spike in error rates is concerning and suggests a potential issue within the service or its interaction with dependencies.\n\n**Relation to Other Entities:**\nThe high error rates on the `controller` are likely impacting the overall user experience of the application, notably through the `/api/cart` functionality, which interacts with the `cartservice`. As the `controller` service forwards requests to the `frontendproxy`, which in turn interacts with various backend services like `cartservice`, `checkoutservice`, `currencyservice`, and others, the ripple effect of these errors might be felt across multiple services in the architecture. This interconnectedness necessitates thorough investigation of `controller's` logs and error patterns to isolate the root cause and mitigate the disruption in the flow of HTTP requests.\n\nBy understanding the behavior and interaction of the `controller` service within the broader microservices architecture, we aim to identify and resolve the underlying issue causing the increase in 500 errors. This involves examining logs for patterns, determining if recent changes or specific conditions triggered the fault, and analyzing dependencies that could contribute to the error rates observed. This step is integral to restoring normal operation and maintaining service reliability and user satisfaction.\n\n### Analysis of Log Patterns for service.name:controller\n\n#### Pattern Group: Request Errors\n- **Pattern:**\n ```\n .*?10\\\\.244\\\\.0\\\\.38.+?02.+?2024.+?10.+?0000.+?api.+?HTTP.+?1\\\\.1.+?python.+?requests.+?2\\\\.31\\\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\\\.244\\\\.0\\\\.26.+?8080.*?\n ```\n - **Sample:**\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n - **Description:** This pattern represents request logs where an HTTP POST request to the `/api/cart` endpoint resulted in a `500 Internal Server Error`. The requests are from a client using `python-requests/2.31.0`.\n\n- **Count:** 263 occurrences\n\n- **Timeseries Analysis:**\n - **Trend:** The number of occurrences show fluctuation with no significant change in the pattern.\n - **Log Counts:** \n - Example timestamps and counts:\n - `2024-11-02T10:56:00.000Z: 6`\n - `2024-11-02T10:56:30.000Z: 2`\n - `2024-11-02T10:57:00.000Z: 0`\n\n### Summary\nBased on the provided logs patterns, the `controller` service is experiencing a high number of `500 Internal Server Errors` when handling POST requests to the `/api/cart` endpoint. This is evident from the consistent error logs observed at different timestamps. The alert threshold breach likely correlates with these error occurrences.\n\nNo other unusual patterns such as connection issues, startup messages, or garbage collection messages were identified in the logs around the error events. Further investigation on the backend or potential dependency issues (e.g., `cartservice`) might be needed to determine the exact cause of these errors.\n\n### Timeline of significant events\n\n- **2024-11-02T10:56:42.498Z**\n - **Alert Triggered**: High number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration.\n \n- **2024-11-02T10:56:00.000Z**\n - **Log Entry**: 6 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - **Example Log**:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n \n- **2024-11-02T10:56:30.000Z**\n - **Log Entry**: 2 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - **Example Log**:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:35 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n### Context and reasoning\n\nThe `controller` service plays a critical role in handling incoming HTTP requests within the Kubernetes environment, specifically acting as an Ingress controller within the `ingress-nginx` namespace. The recent alert, triggered by a high number of 500 errors, indicates a significant disruption in the normal operations of the `controller` service, particularly impacting the `/api/cart` endpoint. The log entries leading up to and following the alert highlight a pattern of consistent `500 Internal Server Error` responses, specifically around the timestamp in question.\n\nThe pattern group identified, related to request errors, shows repeated failures for HTTP POST requests from a client using `python-requests/2.31.0`, likely directed towards the `cartservice` via the `frontendproxy`. This high error rate suggests an underlying issue either within the `controller` service itself, its communication path to the `frontendproxy`, or potentially further downstream with the backend services like `cartservice`.\n\nNo other unusual log patterns, such as connection issues or any system degradation messages were noted, indicating the problem is likely concentrated around the interaction between `controller` and its immediate dependencies rather than a broader system-wide issue. By correlating the timestamps and repeated error logs, a clear link can be drawn between the `500 Internal Server Error` responses and the timeline, further supporting the hypothesis of a specific fault affecting the `/api/cart` endpoint.\n\nFurther investigation into the dependencies of the `controller` service, especially focusing on the interactions with the `frontendproxy` and subsequently `cartservice`, is warranted to isolate and rectify the root cause of these error patterns." + } + ] + }, + "role": "tool", + "toolCallId": "call_DB13TclS3Gc9zUgCrWLrvDuu" + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_kstyq8qXoaWRX4CJQkC6wbhR", + "function": { + "name": "investigateEntity", + "arguments": { + "context": "As the downstream service handling /api/cart requests, issues here would directly contribute to error patterns in controller. High errors were observed in the controller for POST requests to the /api/cart endpoint resulting in '500 Internal Server Error'. Starting error rate was significantly high (98.78%), around 2024-11-02T10:56:42.498Z.", + "entity": { + "field": "service.name", + "value": "cartservice" + } + } + } + }, + { + "toolCallId": "call_zNoUwjdb2DJhxjhshLkgqlZw", + "function": { + "name": "investigateEntity", + "arguments": { + "context": "Requests are routed through this service to cartservice. Any routing or network issues here might also contribute to the 500 errors seen in controller. High error rate (98.78%) in controller for POST requests to the /api/cart endpoint starting at 2024-11-02T10:56:42.498Z.", + "entity": { + "field": "service.name", + "value": "frontend" + } + } + } + } + ] + }, + { + "name": "investigateEntity", + "role": "tool", + "toolCallId": "call_zNoUwjdb2DJhxjhshLkgqlZw", + "response": { + "entity": { + "service.name": "frontend" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "controller" + }, + "reason": "`controller` service handles endpoints like `/api/cart`, which corresponds to failed transactions. They share common IP address and port patterns, indicating network interaction.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "`frontend` service attempts to interact with `cartservice`. Connection errors from `frontend` indicate it is calling `cartservice` and facing issues getting responses, potentially causing the 500 errors.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "frontend-web" + }, + "reason": "`frontend-web` captures real user interactions with the `/api/cart` endpoint. Helps trace the errors and delays externally perceived by users.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "coredns" + }, + "reason": "`coredns` is responsible for DNS resolution within the cluster and issues here could result in connectivity problems seen in `frontend`.", + "confidence": "moderate" + } + ], + "summary": "### Investigation of Entity `service.name:frontend`\n\n#### Context of Investigation\n\nThe `frontend` service is critical in this investigation due to its role in the overall request handling and the observed high error rate (98.78%) in the `controller` service for POST requests to the `/api/cart` endpoint. This issue began at `2024-11-02T10:56:42.498Z`. The `frontend` service routes requests to `cartservice`, a key interaction in this error occurrence.\n\n#### Infrastructure & Environment\n\n- **Environment**: The `frontend` operates within the `opentelemetry-demo` deployment environment.\n- **Deployment**: It is deployed on Kubernetes (k8s), specifically within the `default` namespace. \n- **Pod Information**: The pod name is `my-otel-demo-frontend-5bbf4d78bc-qtwdr`, on the `minikube` node. Each pod has a unique UID (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`), with logs stored at `/var/log/pods/`.\n- **Resource Attributes**: Hosts `Apple` Arm64 architecture processor (`host.cpu.vendor.id: Apple`), running `Ubuntu 24.04.1 LTS (Noble Numbat)`, indicating a Linux-based system.\n\n#### Communication Characteristics \n\n- **Protocols**: \n - The `frontend` service communicates primarily using HTTP for inbound requests and gRPC for backend service interactions. \n - gRPC is specifically used when the `frontend` communicates with `cartservice`, highlighted by recorded RPC errors in the logs.\n- **Endpoints**:\n - The `frontend` gets requests from `frontendproxy` (Envoy), acting as the reverse proxy.\n - The service then routes these requests to different backend services, including `cartservice`, via gRPC.\n - The critical IP noted in logs is `10.110.191.164:8080`, pointing to a potential endpoint for the `cartservice`.\n\n#### Context of Entity in Investigation\n\n- **Reason for Investigation**: The `frontend` service is under scrutiny due to its pivotal role in processing and routing incoming user requests. Any disruption in its communication or processing mechanism directly affects the functionality of connected services, notably `cartservice`, leading to high error rates observed in the `controller`.\n- **Relation to Other Entities**:\n - **Previous Entity**: `controller` - The `controller` service logs indicate a high number of 500 errors were triggered during POST requests to `/api/cart`.\n - **Dependencies**: `frontend` relies on successful communication with `cartservice` to fulfill these cart-related requests.\n- **Architectural Role**: The `frontend` is the nucleus for user interactions within this microservices architecture. Any network or communication issue in `frontend` can cascade, influencing its backend dependencies like `cartservice` and leading to broader service disruptions.\n\nThis comprehensive analysis of the `frontend` service’s infrastructure, communication protocols, and its investigative context emphasizes its critical position in the service chain responsible for the reported errors. Further scrutiny of the communication logs, particularly focusing on the gRPC interactions with `cartservice`, is essential to identify and mitigate the root cause of these failures.\n\nObservations for service `frontend`.\n\n### Connection Issues to Upstream Dependency\n\n1. **Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Sample**: \"14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)\"\n - **Timeseries Observations**: \n - No occurrences before 2024-11-02T10:55:30.000Z.\n - Sharp increase at 2024-11-02T10:55:30.000Z (291 occurrences).\n - Further increase at 2024-11-02T10:56:00.000Z (381 occurrences).\n - Next timestamp at 2024-11-02T10:57:00.000Z showing a return to 0 occurrences.\n\n2. **Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"\n - **Sample**: \"13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"\n - **Timeseries Observations**:\n - No occurrences before 2024-11-02T10:55:30.000Z.\n - Slight increase at 2024-11-02T10:55:30.000Z (2 occurrences).\n - One more occurrence at 2024-11-02T10:56:00.000Z (1 occurrence).\n - No occurrences after 2024-11-02T10:56:30.000Z.\n\nThe significant spike in connection errors starting from 2024-11-02T10:55:30.000Z aligns with the high error rate in the `controller` service, suggesting a strong correlation between these established connection issues in the `frontend` service and the 500 errors seen in the `controller` service for POST requests to the `/api/cart` endpoint around the same time.\n\n### Possibly Relevant Log Patterns from coredns\n\n1. **Pattern**: \"INFO 10.244.0.26 AAAA IN my-otel-demo-frontend udp 39 false 512 NXDOMAIN qr,rd,ra 39\"\n - **Sample**: \"[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\"\n - **Timeseries Observations**:\n - Frequent steady occurrences of 6 events every 30 seconds.\n - No notable changes or spikes coinciding with the connection issues observed in the `frontend` service.\n\nFrom these observations, it appears that the connection refusal errors in the `frontend` service are likely caused by issues in communication with the `cartservice`, potentially as a result of intermittent network disruptions or dependency service failures at the IP 10.110.191.164. Further investigation should focus on the health and connectivity status of the `cartservice` around the specified time period.\n\n### Timeline of Significant Events\n\n1. **2024-11-02T10:55:30.000Z**\n - **Event**: Sharp increase in connection error logs.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 291 occurrences reported.\n\n2. **2024-11-02T10:55:30.000Z**\n - **Event**: Appearance of an internal error in accessing cart services.\n - **Log Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error\"\n - **Details**: 2 occurrences reported.\n\n3. **2024-11-02T10:56:00.000Z**\n - **Event**: Further increase in connection error logs.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 381 occurrences reported.\n\n4. **2024-11-02T10:56:00.000Z**\n - **Event**: Additional occurrence of an internal error in accessing cart services.\n - **Log Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error\"\n - **Details**: 1 occurrence reported.\n\n5. **2024-11-02T10:56:42.498Z**\n - **Event**: High error rate (98.78%) in the `controller` service for POST requests to the `/api/cart` endpoint begins.\n - **Details**: Corresponds to the timing of observed spikes in connection errors in the `frontend` service.\n\n6. **2024-11-02T10:57:00.000Z**\n - **Event**: Connection error logs return to zero occurrences.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 0 occurrences reported.\n\n### Context and Reasoning\n\nThe `frontend` service is critical in this investigation due to its role in routing requests to the `cartservice`. The high error rates observed in the `controller` service's POST requests to the `/api/cart` endpoint started precisely at 2024-11-02T10:56:42.498Z, which is within the timeframe when the `frontend` service experienced significant connection issues with the `cartservice`.\n\nUpon analyzing log patterns, it is evident that the communication disruptions between the `frontend` service and the `cartservice` began at 2024-11-02T10:55:30.000Z with a sharp increase in connection errors, and these errors persisted until approximately 2024-11-02T10:57:00.000Z. During this period, numerous `ECONNREFUSED` errors were logged, indicating the `frontend` service's inability to establish a connection to the `cartservice` (IP 10.110.191.164:8080). This aligns with the timeline of the high error rates in the `controller` service, suggesting a direct correlation.\n\nFurthermore, the internal errors logged by the `frontend` service related to RPC errors and failed attempts to get the user cart during checkout reaffirm these connection problems. These errors underscore an impaired communication pathway to the `cartservice`, affecting the `controller` service's ability to process POST requests to the `/api/cart` endpoint.\n\nTherefore, the evidence strongly indicates that network or connection failures between the `frontend` service and its upstream dependency, `cartservice`, are the principal cause of the cascading 500 errors seen in the `controller` service. This highlights the critical position of the `frontend` service in ensuring stable communication pathways within the microservice architecture." + }, + "data": { + "attachments": { + "alerts": [], + "slos": [], + "analysis": { + "total": 98017, + "sampled": 1000, + "fields": [ + "@timestamp:date - 327 distinct values", + "app.label.component:keyword - 1 distinct values (`frontend`)", + "attributes.log.file.path.text:text - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "attributes.log.file.path:keyword - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "attributes.log.iostream:keyword - 1 distinct values (`stderr`)", + "body.text:text - 36 distinct values (` code: 13,\n`, ` details: 'cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"',\n`, 34 more values)", + "data_stream.dataset:keyword - 1 distinct values (`generic.otel`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`logs`)", + "deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "dropped_attributes_count:long - 1 distinct values (`0`)", + "event.dataset:keyword - 1 distinct values (`generic.otel`)", + "host.arch:keyword - 1 distinct values (`arm64`)", + "host.architecture:keyword - 1 distinct values (`arm64`)", + "host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "host.cpu.family:keyword - 1 distinct values (``)", + "host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "host.cpu.model.name:keyword - 1 distinct values (``)", + "host.cpu.stepping:keyword - 1 distinct values (`0`)", + "host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "host.os.full:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "host.os.platform:keyword - 1 distinct values (`linux`)", + "k8s.container.name:keyword - 1 distinct values (`frontend`)", + "k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "k8s.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "k8s.namespace.name:keyword - 1 distinct values (`default`)", + "k8s.node.name:keyword - 1 distinct values (`minikube`)", + "k8s.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T09:00:25Z`)", + "k8s.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "kubernetes.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "kubernetes.namespace:keyword - 1 distinct values (`default`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "log.file.path:keyword - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "log.iostream:keyword - 1 distinct values (`stderr`)", + "message:text - 36 distinct values (` code: 13,\n`, ` details: 'cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"',\n`, 34 more values)", + "observed_timestamp:date_nanos - 1000 distinct values (`2024-11-02T10:56:50.564274379Z`, `2024-11-02T10:55:46.563453752Z`, `2024-11-02T10:56:52.76272763Z`, `2024-11-02T10:56:14.764728626Z`, `2024-11-02T10:55:51.964080879Z`, `2024-11-02T10:55:51.764216463Z`, `2024-11-02T10:56:50.564063629Z`, `2024-11-02T10:55:38.563141804Z`, `2024-11-02T10:55:53.963540672Z`, `2024-11-02T10:56:32.762493176Z`, 990 more values)", + "os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.app.label.component:keyword - 1 distinct values (`frontend`)", + "resource.attributes.deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "resource.attributes.host.arch:keyword - 1 distinct values (`arm64`)", + "resource.attributes.host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "resource.attributes.host.cpu.family:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "resource.attributes.host.cpu.model.name.text:text - 1 distinct values (``)", + "resource.attributes.host.cpu.model.name:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.stepping:keyword - 1 distinct values (`0`)", + "resource.attributes.host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "resource.attributes.host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "resource.attributes.host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "resource.attributes.host.name:keyword - 1 distinct values (`otel-daemonset-opentelemetry-collector-agent-7jlpk`)", + "resource.attributes.k8s.container.name.text:text - 1 distinct values (`frontend`)", + "resource.attributes.k8s.container.name:keyword - 1 distinct values (`frontend`)", + "resource.attributes.k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "resource.attributes.k8s.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "resource.attributes.k8s.namespace.name:keyword - 1 distinct values (`default`)", + "resource.attributes.k8s.node.name:keyword - 1 distinct values (`minikube`)", + "resource.attributes.k8s.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "resource.attributes.k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T09:00:25Z`)", + "resource.attributes.k8s.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "resource.attributes.os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "resource.attributes.os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.service.name.text:text - 1 distinct values (`frontend`)", + "resource.attributes.service.name:keyword - 1 distinct values (`frontend`)", + "resource.dropped_attributes_count:long - 1 distinct values (`0`)", + "resource.schema_url:keyword - 1 distinct values (`https://opentelemetry.io/schemas/1.6.1`)", + "scope.dropped_attributes_count:long - 1 distinct values (`0`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.name:keyword - 1 distinct values (`frontend`)", + "severity_number:byte - 1 distinct values (`0`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 3756, + "pattern": "at", + "regex": ".*?at.*?", + "sample": " at /app/.next/server/pages/api/cart.js:1:1025\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at /app/.next/server/pages/api/cart.js:1:1025\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1103 + }, + { + "x": 1730544960000, + "y": 1411 + }, + { + "x": 1730544990000, + "y": 1242 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "qlqu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 2366, + "pattern": "at app node_modules grpc grpc js build src", + "regex": ".*?at.+?app.+?node_modules.+?grpc.+?grpc.+?js.+?build.+?src.*?", + "sample": " at Object.onReceiveStatus (/app/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:141)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at Object.onReceiveStatus (/app/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:141)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 693 + }, + { + "x": 1730544960000, + "y": 896 + }, + { + "x": 1730544990000, + "y": 777 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "roms", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1014, + "pattern": "at app node_modules opentelemetry instrumentation grpc build src", + "regex": ".*?at.+?app.+?node_modules.+?opentelemetry.+?instrumentation.+?grpc.+?build.+?src.*?", + "sample": " at ServiceClientImpl.clientMethodTrace [as getCart] (/app/node_modules/@opentelemetry/instrumentation-grpc/build/src/instrumentation.js:211:42)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl.clientMethodTrace [as getCart] (/app/node_modules/@opentelemetry/instrumentation-grpc/build/src/instrumentation.js:211:42)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 297 + }, + { + "x": 1730544960000, + "y": 384 + }, + { + "x": 1730544990000, + "y": 333 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "eyqk", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 351, + "pattern": "at node:internal process task_queues", + "regex": ".*?at.+?node:internal.+?process.+?task_queues.*?", + "sample": " at process.processTicksAndRejections (node:internal/process/task_queues:77:11)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at process.processTicksAndRejections (node:internal/process/task_queues:77:11)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 104 + }, + { + "x": 1730544960000, + "y": 129 + }, + { + "x": 1730544990000, + "y": 118 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "mpyi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at AsyncLocalStorage.run node:async_hooks 346 14", + "regex": ".*?at.+?AsyncLocalStorage\\.run.+?node:async_hooks.+?346.+?14.*?", + "sample": " at AsyncLocalStorage.run (node:async_hooks:346:14)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at AsyncLocalStorage.run (node:async_hooks:346:14)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jsoq", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at AsyncLocalStorageContextManager.with app node_modules opentelemetry context async hooks build src AsyncLocalStorageContextManager.js 33 40", + "regex": ".*?at.+?AsyncLocalStorageContextManager\\.with.+?app.+?node_modules.+?opentelemetry.+?context.+?async.+?hooks.+?build.+?src.+?AsyncLocalStorageContextManager\\.js.+?33.+?40.*?", + "sample": " at AsyncLocalStorageContextManager.with (/app/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at AsyncLocalStorageContextManager.with (/app/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "viwd", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ContextAPI.with app node_modules opentelemetry api build src api context.js 60 46", + "regex": ".*?at.+?ContextAPI\\.with.+?app.+?node_modules.+?opentelemetry.+?api.+?build.+?src.+?api.+?context\\.js.+?60.+?46.*?", + "sample": " at ContextAPI.with (/app/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ContextAPI.with (/app/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "agsa", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at new ZoneAwarePromise app node_modules zone.js bundles zone.umd.js 1340 33", + "regex": ".*?at.+?new.+?ZoneAwarePromise.+?app.+?node_modules.+?zone\\.js.+?bundles.+?zone\\.umd\\.js.+?1340.+?33.*?", + "sample": " at new ZoneAwarePromise (/app/node_modules/zone.js/bundles/zone.umd.js:1340:33) {\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at new ZoneAwarePromise (/app/node_modules/zone.js/bundles/zone.umd.js:1340:33) {\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "dhes", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "code", + "regex": ".*?code.*?", + "sample": " code: 14,\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " code: 14,\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "feod", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "for call at", + "regex": ".*?for.+?call.+?at.*?", + "sample": "for call at\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + "for call at\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "enzg", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ServiceClientImpl anonymous /app/node_modules/@grpc/grpc-js/build/src/make-client.js", + "regex": ".*?at.+?ServiceClientImpl.+?anonymous.+?/app/node_modules/@grpc/grpc-js/build/src/make-client\\.js.*?", + "sample": " at ServiceClientImpl. (/app/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl. (/app/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "iook", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ServiceClientImpl.makeUnaryRequest /app/node_modules/@grpc/grpc-js/build/src/client.js", + "regex": ".*?at.+?ServiceClientImpl\\.makeUnaryRequest.+?/app/node_modules/@grpc/grpc-js/build/src/client\\.js.*?", + "sample": " at ServiceClientImpl.makeUnaryRequest (/app/node_modules/@grpc/grpc-js/build/src/client.js:161:32)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl.makeUnaryRequest (/app/node_modules/@grpc/grpc-js/build/src/client.js:161:32)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jvlx", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 335, + "pattern": "metadata Metadata internalRepr Map 0 options", + "regex": ".*?metadata.+?Metadata.+?internalRepr.+?Map.+?0.+?options.*?", + "sample": " metadata: Metadata { internalRepr: Map(0) {}, options: {} }\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " metadata: Metadata { internalRepr: Map(0) {}, options: {} }\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 97 + }, + { + "x": 1730544960000, + "y": 127 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "wczz", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "internalRepr Map content-type Array", + "regex": ".*?internalRepr.+?Map.+?content-type.+?Array.*?", + "sample": " internalRepr: Map(1) { 'content-type' => [Array] },\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " internalRepr: Map(1) { 'content-type' => [Array] },\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "pcyb", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "metadata Metadata", + "regex": ".*?metadata.+?Metadata.*?", + "sample": " metadata: Metadata {\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " metadata: Metadata {\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "tcak", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "options", + "regex": ".*?options.*?", + "sample": " options: {}\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " options: {}\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "xbsw", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1005, + "pattern": "No connection established Last error connect ECONNREFUSED 10.110.191.164 8080 2024 11 02T10", + "regex": ".*?No.+?connection.+?established.+?Last.+?error.+?connect.+?ECONNREFUSED.+?10\\.110\\.191\\.164.+?8080.+?2024.+?11.+?02T10.*?", + "sample": "14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)", + "highlight": { + "service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + "14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.676Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 291 + }, + { + "x": 1730544960000, + "y": 381 + }, + { + "x": 1730544990000, + "y": 333 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "pssf", + "relevance": "critical", + "interesting": true + }, + { + "field": "error.exception.message", + "count": 3, + "pattern": "INTERNAL cart failure failed to get user cart during checkout rpc error code Unavailable desc connection error desc transport Error while dialing dial tcp connect connection refused", + "regex": ".*?INTERNAL.+?cart.+?failure.+?failed.+?to.+?get.+?user.+?cart.+?during.+?checkout.+?rpc.+?error.+?code.+?Unavailable.+?desc.+?connection.+?error.+?desc.+?transport.+?Error.+?while.+?dialing.+?dial.+?tcp.+?connect.+?connection.+?refused.*?", + "sample": "13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"", + "highlight": { + "service.name": [ + "frontend" + ] + }, + "metadata": { + "error.exception.message": [ + "13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.038Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "crai", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [ + { + "field": "message", + "count": 246, + "pattern": "INFO 10.244.0.26 AAAA IN my otel demo frontend udp 39 false 512 NXDOMAIN qr rd ra 39", + "regex": ".*?INFO.+?10\\.244\\.0\\.26.+?AAAA.+?IN.+?my.+?otel.+?demo.+?frontend.+?udp.+?39.+?false.+?512.+?NXDOMAIN.+?qr.+?rd.+?ra.+?39.*?", + "sample": "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\n", + "highlight": { + "body.text": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra" + ], + "message": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra" + ] + }, + "metadata": { + "service.name": [ + "coredns" + ], + "message": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.917Z", + "lastOccurrence": "2024-11-02T10:56:58.646Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 6 + }, + { + "x": 1730543820000, + "y": 6 + }, + { + "x": 1730543850000, + "y": 6 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 6 + }, + { + "x": 1730543970000, + "y": 6 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 6 + }, + { + "x": 1730544060000, + "y": 6 + }, + { + "x": 1730544090000, + "y": 6 + }, + { + "x": 1730544120000, + "y": 6 + }, + { + "x": 1730544150000, + "y": 6 + }, + { + "x": 1730544180000, + "y": 6 + }, + { + "x": 1730544210000, + "y": 6 + }, + { + "x": 1730544240000, + "y": 6 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 6 + }, + { + "x": 1730544330000, + "y": 6 + }, + { + "x": 1730544360000, + "y": 6 + }, + { + "x": 1730544390000, + "y": 6 + }, + { + "x": 1730544420000, + "y": 6 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 6 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 6 + }, + { + "x": 1730544600000, + "y": 6 + }, + { + "x": 1730544630000, + "y": 6 + }, + { + "x": 1730544660000, + "y": 6 + }, + { + "x": 1730544690000, + "y": 6 + }, + { + "x": 1730544720000, + "y": 6 + }, + { + "x": 1730544750000, + "y": 6 + }, + { + "x": 1730544780000, + "y": 6 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 6 + }, + { + "x": 1730544870000, + "y": 6 + }, + { + "x": 1730544900000, + "y": 6 + }, + { + "x": 1730544930000, + "y": 6 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 6 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "rlzf", + "relevance": "normal", + "interesting": false + } + ], + "searches": [ + { + "fragments": [ + "10.110.191.164:8080", + "10.110.191.164", + "8080" + ], + "appearsAs": "This IP address and port are referenced in the investigated entity 'frontend'." + }, + { + "fragments": [ + "/api/cart", + "cartservice", + "/api" + ], + "appearsAs": "These URL fragments appear as attributes.request.url in the investigated entity 'frontend'. They could be related to 'cartservice'." + }, + { + "fragments": [ + "000aa", + "000bbb" + ], + "appearsAs": "These ids appear as span.id and parent.id in the investigated entity 'frontend'. They could be referring to spans found on upstream or downstream services" + } + ], + "relatedEntitiesSummaries": [ + "## Possible Relationships to `service.name:frontend`\n\n### 1. Entity: `service.name:controller`\n- **Indicators:**\n - #### Average Indicator:\n - **IP Address and Port:**\n - `frontend`: `10.110.191.164:8080`\n - `controller`: `10.244.0.26:8080`\n - **URL Fragment:**\n - `frontend`: `/api/cart`\n - `controller`: `/api/cart?session`\n- **Relationship Reasoning:**\n - The `controller` service is highly likely to be making requests to, or routing through, the `frontend` service as evidenced by the URL fragments referring to the `/api/cart` endpoint seen in both entities. Additionally, they share common IP address and port patterns indicating network interaction.\n- **Relevance Assessment:**\n - **Very High**: Given that the `controller` service handles endpoints like `/api/cart`, which directly correspond to transactions failing with a high error rate, this entity is a critical part of the interaction chain and should be closely examined.\n\n### 2. Entity: `service.name:cartservice`\n- **Indicators:**\n - #### Strong Indicator:\n - **Direct Call References:**\n - `frontend`: `details: 'cart failure: failed to get user cart during checkout: rpc error: ... desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"'\n - `cartservice`: `url.full.text:\"http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart\"`\n- **Relationship Reasoning:**\n - The `frontend` service attempts to interact with the `cartservice` as observed by the endpoint `/oteldemo.CartService/GetCart`. Connection errors from `frontend` indicate it is calling `cartservice` and facing issues getting responses, potentially causing the 500 errors.\n- **Relevance Assessment:**\n - **Very High**: Since `cartservice` manages user cart data and the connection errors reported in `frontend` logs directly correspond to attempts to communicate with `cartservice`, this entity is a probable cause of the service failures being observed.\n\n### 3. Entity: `service.name:frontend-web`\n- **Indicators:**\n - #### Average Indicator:\n - **URL Fragment:**\n - `frontend`: `/api/cart`\n - `frontend-web`: `/api/cart`\n - #### Weak Indicator:\n - **RUM Layer Mentions:**\n - `frontend`: `frontend-web (RUM)`\n - `frontend-web`: Described in System Architecture.\n- **Relationship Reasoning:**\n - `frontend-web` captures real user interactions with the `/api/cart` endpoint providing insights into the `frontend` service which might help trace the errors and delays externally perceived by users.\n- **Relevance Assessment:**\n - **Moderate**: While `frontend-web` can show the surface errors users are experiencing, it is more of an observability layer rather than directly causing the 500 errors or impacting the service interactions upstream.\n\n### 4. Entity: `service.name:frontendproxy`\n- **Indicators:**\n - #### Average Indicator:\n - **Network Routing Indicator:**\n - `frontend`: Receives traffic from `frontendproxy`\n - `frontendproxy`: Directs traffic to `frontend`\n - #### IP Address Mention:\n - Both services reference `8080`, indicating shared routing or proxying.\n- **Relationship Reasoning:**\n - `frontendproxy` routes traffic from external sources, including simulated user requests, to `frontend`. Any issues in this proxy layer could impact the incoming traffic to `frontend`, causing errors.\n- **Relevance Assessment:**\n - **High**: Considering `frontendproxy` handles traffic routing, any misconfiguration or failures here could lead to the issues observed on the `frontend`.\n\n### 5. Entity: `service.name:coredns`\n- **Indicators:**\n - #### Weak Indicators:\n - **DNS Resolution Events:**\n - Logs showing DNS queries involving `frontend`.\n - **IP Address and Port:**\n - Shared network interactions over common ports like `8080`.\n- **Relationship Reasoning:**\n - While not directly related to application logic, `coredns` is responsible for DNS resolution within the cluster, and issues here could result in connectivity problems seen in `frontend` when trying to reach `cartservice`.\n- **Relevance Assessment:**\n - **Moderate**: While less likely to be the root cause, DNS misconfigurations or failures could indirectly contribute to connectivity issues within services like `frontend`.\n\n### Summary\n\n1. **service.name:controller** - Very High relevance due to direct endpoint interaction.\n2. **service.name:cartservice** - Very High relevance for being the direct interaction target with observed failures.\n3. **service.name:frontend-web** - Moderate relevance in monitoring layer but not direct interaction.\n4. **service.name:frontendproxy** - High relevance for routing traffic to `frontend`.\n5. **service.name:coredns** - Moderate relevance for possible DNS resolution issues." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 5 + } + ] + } + } + }, + { + "name": "investigateEntity", + "role": "tool", + "toolCallId": "call_kstyq8qXoaWRX4CJQkC6wbhR", + "response": { + "entity": { + "service.name": "cartservice" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "controller" + }, + "reason": "The controller service is responsible for managing /api/cart requests. Thus, it acts as a direct upstream service to cartservice. High errors were observed in the controller when interacting with cartservice.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The frontend service interacts directly with the controller, handling user interactions that lead to /api/cart requests which are eventually processed by cartservice.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "The currencyservice interacts with cartservice to handle currency conversions, acting as an upstream dependency for cartservice when performing currency-related operations on cart items.", + "confidence": "medium-high" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "The checkoutservice relies on cart data from cartservice during the checkout process, making it a downstream service dependent on the correct functioning of cartservice.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "loadgenerator" + }, + "reason": "The loadgenerator service generates simulated traffic which impacts cartservice directly when testing the system's resilience.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "adservice" + }, + "reason": "The adservice might indirectly impact cartservice through the frontend service by affecting the overall user experience and potentially causing indirect latency.", + "confidence": "low-medium" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service is highly likely to be relevant as it has a direct interaction with the `cartservice` and would be significantly impacted by any issues within the `cartservice`.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "valkey" + }, + "reason": "The `valkey` service is highly relevant because it is the data store for `cartservice`, directly affecting its behavior and performance.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "The `currencyservice` may interact with `cartservice` to handle price conversions for the items in the cart. Problems with currency conversion could cause unexpected data formats or communication failures, leading to `500 Internal Server Error` in `cartservice`.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "The `checkoutservice` could potentially depend on `cartservice` to validate and finalize items in the user's cart as part of the checkout process. If the `cartservice` fails during these operations, it could propagate errors back up to the user level through `checkoutservice`.", + "confidence": "moderate" + } + ], + "summary": "Based on the context provided, including the system architecture and data samples, the entity `service.name:cartservice` can be described as follows:\n\n### Infrastructure & Environment\n`cartservice` operates within a microservices-based architecture. It is containerized and runs within a Kubernetes environment. Specifically, the data sample indicates that the service is deployed in the `default` Kubernetes namespace and is running on a pod named `my-otel-demo-cartservice-67575c6f84-vngzw` with an IP address of `10.244.0.61`. The service environment is tagged as `opentelemetry-demo`, indicating the use of OpenTelemetry for observability purposes. The infrastructure includes a Redis cache used by the cart service for data persistence.\n\n### Communication Characteristics (Protocols and Endpoints)\n`cartservice` primarily communicates using gRPC. It handles shopping cart data including adding and removing items. The service interacts with Redis (as indicated by the `labels.db_redis_flags` attribute). Additionally, the service integrates with external feature flag providers as seen from the `feature_flag_key` and `feature_flag_provider_name` attributes, which suggests it evaluates feature flags, possibly targeting the feature key `cartServiceFailure`. \n\nThe communication endpoints and protocols from the sample data are:\n- gRPC methods: `/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`\n- HTTP endpoint: `http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`\n- Redis database interactions: `HGET`, `HMSET`, `EXPIRE` commands targeting various identifiers like `my-otel-demo-valkey:6379`.\n\n### Context of Entity in Investigation\nThe cart service (`cartservice`) is being investigated as it is the downstream service handling `/api/cart` requests. Issues in `cartservice` are directly contributing to the error patterns in the controller layer for the `/api/cart` endpoint. A high error rate, culminating in `500 Internal Server Error` responses, started around `2024-11-02T10:56:42.498Z`. The context indicates that the cart service plays a crucial role in managing shopping cart operations.\n\nGiven the observed high error rates and the 500 errors, `cartservice` may be experiencing issues in processing gRPC calls, feature flag evaluations, or Redis caching, which could be causing failures that propagate upstream to the controller.\n\n### Related Entities and Previous Investigations\nPreviously, errors in the controller for POST requests to `/api/cart` have been observed. This investigation is a continuation, focusing on the downstream `cartservice` which is responsible for handling these requests. This service's interaction with other entities such as Redis (for caching cart data) and external feature flag services (potentially toggling functionality) suggest that any issues in these integrations could impact the `cartservice` performance and result in the observed errors upstream in the controller.\n\nThis detailed analysis moves us to further inspect specific logs, traces, and any interdependent service metrics that may provide clues about the root cause of the high error rate in `cartservice`.\n\n### Observations for service.name:cartservice\n\n#### Startup Messages\n1. **Pattern: \"OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.\"**\n - **Count:** 78\n - **Trend:** There was a spike at **2024-11-02T10:55:30.000Z** with 78 occurrences. Before this timestamp, the value was consistently 0.\n\n2. **Pattern: \"OTEL-SDK: [224] 'MeterProvider' Disposed.\"**\n - **Count:** 4\n - **Trend:** Occurrences were persistently recorded as 0 until a brief spike at **2024-11-02T10:55:30.000Z** with 4 instances.\n\n3. **Pattern: \"exiting...\"**\n - **Count:** 3\n - **Trend:** Consistently 0 until a minor rise at **2024-11-02T10:55:30.000Z**, with 3 instances recorded.\n\n4. **Pattern: \"Application is shutting down...\"**\n - **Count:** 2\n - **Trend:** Log entries were consistently at 0 with a brief spike at **2024-11-02T10:55:30.000Z** showing 2 instances.\n\n#### Fatal Errors\n5. **Pattern: \"FATAL: Could not start, bad entrypoint!\"**\n - **Count:** 3\n - **Trend:** This pattern shows a significant change at **2024-11-02T10:55:30.000Z** with 2 occurrences at the change point and one additional at **2024-11-02T10:56:30.000Z**. Before this period, the occurrence rate was consistently 0.\n\n### Conclusion\n\nThe patterns observed indicate that there were significant startup issues with the `cartservice` around the **2024-11-02T10:55:30.000Z** mark. Specifically, the `cartservice` encountered a fatal error (\"FATAL: Could not start, bad entrypoint!\") that aligns precisely with the rise in errors noted during this period. This error indicates that the service failed to start due to a misconfiguration or issues with the entry point. This corresponds with the sudden spike in errors and `500 Internal Server Error` responses observed in the downstream controller making POST requests to the `/api/cart` endpoint. Furthermore, logs related to the service's deactivation and shutdown support the perspective that the service was not running successfully or consistently after this time.\n\n### Timeline of significant events\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.”\n - **Description**: Spike detected with 78 occurrences, suggesting a potential issue within the service's runtime environment.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “OTEL-SDK: [224] 'MeterProvider' Disposed.”\n - **Description**: Sudden spike of 4 occurrences suggesting a significant change in the service’s telemetry setup or a potential abnormal shutdown initiation.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “exiting...”\n - **Description**: Log entries rose to 3 incidences, signaling the cart service may be initiating an unexpected exit.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “Application is shutting down...”\n - **Description**: 2 instances of this log message indicating the application is attempting to shut down around this time.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “FATAL: Could not start, bad entrypoint!”\n - **Description**: Abrupt fatal error occurs 2 times, implying a critical misconfiguration or startup failure.\n\n- **2024-11-02T10:56:30.000Z**: \n - **Log Message**: “FATAL: Could not start, bad entrypoint!”\n - **Description**: Another occurrence of the critical fatal error, indicating the issue persisted beyond the initial spike and may have contributed to continued disruptions.\n\n- **2024-11-02T10:56:42.498Z**: \n - **Alert**: High error rate observed in the controller (98.78% error rate for POST requests to /api/cart).\n - **Description**: Starts the period of significantly high error rates contributing to 500 Internal Server Error responses. \n\n### Context and reasoning\n\nGiven the high error rate (98.78%) starting from **2024-11-02T10:56:42.498Z** for POST requests to `/api/cart`, the `cartservice` is a critical component for investigation as it handles these requests directly. From logs, there is a clear indication that significant problems began around **2024-11-02T10:55:30.000Z**, approximately one minute before the heightened error rate was observed in the upstream controller.\n\n**1. Startup Issues**: Multiple startup-related log patterns such as instruments deactivation, disposal of the MeterProvider, and application exit/shutdown messages indicate that cartservice experienced troubles initializing. Notably, the log entries “FATAL: Could not start, bad entrypoint!” directly show critical failures in service entry points likely causing the downstream failures.\n\n**2. Fatal Errors**: The fatal errors precisely correlate with the timeframe where errors spiked in the upstream service (controller). The error messages “FATAL: Could not start, bad entrypoint!” occurring multiple times reflect a misconfiguration or critical code issue that prevented the service from running properly.\n\nThus, the evidence from log patterns strongly suggests that startup and initialization problems in `cartservice`, resulting in its inconsistent availability and operational failures, is the root cause of the observed high error rates and 500 Internal Server Errors in the controller's POST requests to `/api/cart`." + }, + "data": { + "attachments": { + "alerts": [], + "slos": [], + "analysis": { + "total": 41440, + "sampled": 1000, + "fields": [ + "@timestamp:date - 964 distinct values", + "agent.name.text:text - 1 distinct values (`opentelemetry/dotnet/elastic-dotnet`)", + "agent.name:keyword - 1 distinct values (`opentelemetry/dotnet/elastic-dotnet`)", + "agent.version:keyword - 1 distinct values (`1.0.0-alpha.4`)", + "container.id:keyword - 1 distinct values (`577d6250ad96a5d0016a42ed87bd5c3a63b86edd2af0a0c04b54a1cec2a1a50a`)", + "data_stream.dataset:keyword - 1 distinct values (`apm`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`traces`)", + "destination.address:keyword - 2 distinct values (`my-otel-demo-flagd`, `my-otel-demo-valkey`)", + "destination.port:long - 2 distinct values (`8013`, `6379`)", + "event.outcome:keyword - 1 distinct values (`success`)", + "event.success_count:byte - 1 distinct values (`1`)", + "host.hostname:keyword - 1 distinct values (`minikube`)", + "host.name.text:text - 1 distinct values (`minikube`)", + "host.name:keyword - 1 distinct values (`minikube`)", + "http.request.method:keyword - 1 distinct values (`POST`)", + "http.response.status_code:long - 1 distinct values (`200`)", + "kubernetes.namespace:keyword - 1 distinct values (`default`)", + "kubernetes.node.name.text:text - 1 distinct values (`minikube`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name.text:text - 1 distinct values (`my-otel-demo-cartservice-67575c6f84-vngzw`)", + "kubernetes.pod.name:keyword - 1 distinct values (`my-otel-demo-cartservice-67575c6f84-vngzw`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "labels.app_product_id:keyword - 8 distinct values (`66VCHSJNUP`, `L9ECAV7KIM`, `OLJCESPC7Z`, `0PUK6V6EV0`, `9SIQT8TOJO`, `LS4PSXUNUM`, `HQTGWGPNH4`, `6E92ZMYYFZ`)", + "labels.app_user_id:keyword - 418 distinct values (`11c5f5d4-37b4-46d4-a04e-a97fd71b8597`, `9017f637-12af-4671-b18c-0f86a58a7bbe`, `349478d0-862e-4b14-9d54-3120dd57865f`, `2a55d360-40c5-4a32-844b-4182e8050ca3`, `b9944e91-18d6-430c-90a5-4969e1917a2d`, `1ffeffe2-4e4a-47c4-8b33-e691f116c8cc`, `92ac0a92-4a23-4aa7-866b-44cd6b5d6e26`, `76765dfc-80f8-49db-8377-249e6930dd35`, `d5c375cc-6e38-45f8-b121-30fcb3ae1001`, `bdc5ebd9-a2ee-4dbf-8dae-b88a2b2b3643`, 408 more values)", + "labels.db_redis_flags:keyword - 2 distinct values (`DemandMaster`, `None`)", + "labels.feature_flag_key:keyword - 1 distinct values (`cartServiceFailure`)", + "labels.feature_flag_provider_name:keyword - 1 distinct values (`flagd Provider`)", + "labels.feature_flag_variant:keyword - 1 distinct values (`off`)", + "labels.grpc_method:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "labels.grpc_status_code:keyword - 1 distinct values (`0`)", + "labels.http_route:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "labels.k8s_deployment_name:keyword - 1 distinct values (`my-otel-demo-cartservice`)", + "labels.k8s_pod_ip:ip - 1 distinct values (`10.244.0.61`)", + "labels.k8s_pod_start_time:keyword - 1 distinct values (`2024-11-02T10:23:09Z`)", + "labels.network_protocol_version:keyword - 1 distinct values (`2`)", + "labels.service_namespace:keyword - 1 distinct values (`opentelemetry-demo`)", + "labels.transaction_id:keyword - 995 distinct values (`6b71cc6a08847a01`, `796c855656f17eb0`, `aaa6049d68006044`, `60ad645003eda9b7`, `be3e883fd0dd1a58`, `47247987037e78b3`, `180228f348c3d599`, `587dca65bb2463f3`, `c438d3e7c15d9a4f`, `0a9f738aa8e11c7e`, 985 more values)", + "numeric_labels.app_cart_items_count:scaled_float - 10 distinct values (`8`, `1`, `16`, `2`, `20`, `5`, `4`, `10`, `3`, `0`)", + "numeric_labels.app_product_quantity:scaled_float - 6 distinct values (`5`, `1`, `2`, `10`, `3`, `4`)", + "numeric_labels.db_redis_database_index:scaled_float - 1 distinct values (`0`)", + "observer.hostname:keyword - 1 distinct values (`Darios-MacBook-Pro-2.local`)", + "observer.type:keyword - 1 distinct values (`apm-server`)", + "observer.version:keyword - 1 distinct values (`8.15.0`)", + "parent.id:keyword - 999 distinct values (`76a22c35a2b363fb`, `6e363f007dd857fc`, `499ee35b7e0dc791`, `f05ead7365bb815b`, `46709d74aeb1ac57`, `c1e7aeb4f3b66351`, `d6e80a03ce62827e`, `5eff08ed000af546`, `80be4180f1c8985e`, `9154a028a223da28`, 989 more values)", + "processor.event:keyword - 2 distinct values (`transaction`, `span`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.framework.name.text:text - 1 distinct values (`Microsoft.AspNetCore`)", + "service.framework.name:keyword - 1 distinct values (`Microsoft.AspNetCore`)", + "service.language.name.text:text - 1 distinct values (`dotnet`)", + "service.language.name:keyword - 1 distinct values (`dotnet`)", + "service.name.text:text - 1 distinct values (`cartservice`)", + "service.name:keyword - 1 distinct values (`cartservice`)", + "service.node.name.text:text - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "service.node.name:keyword - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "service.target.name.text:text - 3 distinct values (`my-otel-demo-flagd:8013`, `flagd.evaluation.v1.Service`, 1 more values)", + "service.target.name:keyword - 3 distinct values (`my-otel-demo-flagd:8013`, `flagd.evaluation.v1.Service`, `my-otel-demo-valkey:6379`)", + "service.target.type:keyword - 3 distinct values (`http`, `grpc`, `redis`)", + "span.db.statement:keyword - 455 distinct values (`HGET dd1f04f3-aaf1-4a76-85e4-8c64a930684e`, `EXPIRE 2538c162-9908-11ef-8217-d64fba5f23b1`, `HGET 958266ce-2169-4a2a-bcd5-090fd75cf50b`, `HGET ba92c7a8-6623-4267-8512-9cf0cb23bbf8`, `HGET d96a9e44-a9ed-4f64-8f46-5d4acd05a1fa`, `HGET 4a0d4f33-09ee-4008-a826-027dd6e889c6`, `HGET 5bc59fca-3c11-4d71-9496-c9c29b9d37d1`, `HGET 0497c8a8-2da2-4ff7-80a7-ce647916277c`, `HGET 87d37a8f-cc58-483a-aad0-fc0c91421544`, `HGET 4dea82bc-1c58-4f0a-97fd-3a1369544dc0`, 445 more values)", + "span.db.type:keyword - 1 distinct values (`redis`)", + "span.destination.service.name.text:text - 3 distinct values (`http://my-otel-demo-flagd:8013`, `my-otel-demo-flagd:8013`, 1 more values)", + "span.destination.service.name:keyword - 3 distinct values (`http://my-otel-demo-flagd:8013`, `my-otel-demo-flagd:8013`, `my-otel-demo-valkey:6379`)", + "span.destination.service.resource:keyword - 2 distinct values (`my-otel-demo-flagd:8013`, `my-otel-demo-valkey:6379`)", + "span.destination.service.type:keyword - 2 distinct values (`external`, `db`)", + "span.duration.us:long - 399 distinct values (`501`, `154`, `355`, `3766`, `818`, `657`, `203`, `127`, `715`, `1092`, 389 more values)", + "span.id:keyword - 1000 distinct values (`6b71cc6a08847a01`, `796c855656f17eb0`, `aaa6049d68006044`, `60ad645003eda9b7`, `be3e883fd0dd1a58`, `47247987037e78b3`, `180228f348c3d599`, `587dca65bb2463f3`, `c438d3e7c15d9a4f`, `0a9f738aa8e11c7e`, 990 more values)", + "span.name.text:text - 5 distinct values (`POST`, `flagd.evaluation.v1.Service/ResolveBoolean`, 3 more values)", + "span.name:keyword - 5 distinct values (`POST`, `flagd.evaluation.v1.Service/ResolveBoolean`, `HMSET`, `EXPIRE`, `HGET`)", + "span.representative_count:scaled_float - 1 distinct values (`1`)", + "span.subtype:keyword - 3 distinct values (`http`, `grpc`, `redis`)", + "span.type:keyword - 2 distinct values (`external`, `db`)", + "tags:keyword - 1 distinct values (`_geoip_database_unavailable_GeoLite2-City.mmdb`)", + "timestamp.us:long - 1000 distinct values (`1730544111451828`, `1730544606786118`, `1730544573583321`, `1730544068214001`, `1730543971566630`, `1730544035740835`, `1730543892242334`, `1730544845301548`, `1730543919324800`, `1730544697032712`, 990 more values)", + "trace.id:keyword - 920 distinct values (`de1ed71d39ca87650a8401ae46f2cac0`, `1283785f372e3335e30ab82c53008ea6`, `be3fc18a45763f00d43954ef09300042`, `bffb395c41d9a23aa7acc6b1993f64c6`, `68df2f10f7b09e787c688046ae76f6ff`, `3ba13e99d34a48133415c71b9b523321`, `6405704384b681e891e1067b1c1e6e68`, `b137359ec568679804d48c699dd49df5`, `cce045bbbdbb711a2f5cae192c337cb3`, `85743f477e557162900c88409231222a`, 910 more values)", + "transaction.duration.us:long - 441 distinct values (`2497`, `2659`, `610`, `458`, `3158`, `1484`, `436`, `536`, `2602`, `3472`, 431 more values)", + "transaction.id:keyword - 469 distinct values (`60ad645003eda9b7`, `be3e883fd0dd1a58`, `180228f348c3d599`, `0a9f738aa8e11c7e`, `66622c930742b62b`, `2493315b88140ec7`, `7950f85af72baaa0`, `0fda0e8c0af2a975`, `0504e94fae4dd7f8`, `25ec77d0c132ceef`, 459 more values)", + "transaction.name.text:text - 3 distinct values (`POST /oteldemo.CartService/EmptyCart`, `POST /oteldemo.CartService/AddItem`, 1 more values)", + "transaction.name:keyword - 3 distinct values (`POST /oteldemo.CartService/EmptyCart`, `POST /oteldemo.CartService/AddItem`, `POST /oteldemo.CartService/GetCart`)", + "transaction.representative_count:scaled_float - 1 distinct values (`1`)", + "transaction.result:keyword - 1 distinct values (`HTTP 2xx`)", + "transaction.sampled:boolean - 1 distinct values (`true`)", + "transaction.type:keyword - 1 distinct values (`request`)", + "url.domain:keyword - 1 distinct values (`my-otel-demo-cartservice`)", + "url.full.text:text - 3 distinct values (`http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`, 1 more values)", + "url.full:keyword - 3 distinct values (`http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart`)", + "url.original.text:text - 4 distinct values (`http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`, `/oteldemo.CartService/EmptyCart`, 2 more values)", + "url.original:keyword - 4 distinct values (`http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`, `/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "url.path:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "url.port:long - 1 distinct values (`8080`)", + "url.scheme:keyword - 1 distinct values (`http`)", + "user_agent.device.name.text:text - 1 distinct values (`Other`)", + "user_agent.device.name:keyword - 1 distinct values (`Other`)", + "user_agent.name.text:text - 1 distinct values (`Other`)", + "user_agent.name:keyword - 1 distinct values (`Other`)", + "user_agent.original.text:text - 2 distinct values (`grpc-go/1.64.0`, `grpc-node-js/1.10.11`)", + "user_agent.original:keyword - 2 distinct values (`grpc-go/1.64.0`, `grpc-node-js/1.10.11`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 8414, + "pattern": "called with userId", + "regex": ".*?called.+?with.+?userId.*?", + "sample": "GetCartAsync called with userId=f96ee88a-4745-45f1-885a-16c3de0c668a", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=f96ee88a-4745-45f1-885a-16c3de0c668a" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 226 + }, + { + "x": 1730543820000, + "y": 194 + }, + { + "x": 1730543850000, + "y": 270 + }, + { + "x": 1730543880000, + "y": 200 + }, + { + "x": 1730543910000, + "y": 164 + }, + { + "x": 1730543940000, + "y": 198 + }, + { + "x": 1730543970000, + "y": 192 + }, + { + "x": 1730544000000, + "y": 228 + }, + { + "x": 1730544030000, + "y": 230 + }, + { + "x": 1730544060000, + "y": 212 + }, + { + "x": 1730544090000, + "y": 222 + }, + { + "x": 1730544120000, + "y": 210 + }, + { + "x": 1730544150000, + "y": 240 + }, + { + "x": 1730544180000, + "y": 200 + }, + { + "x": 1730544210000, + "y": 204 + }, + { + "x": 1730544240000, + "y": 222 + }, + { + "x": 1730544270000, + "y": 216 + }, + { + "x": 1730544300000, + "y": 254 + }, + { + "x": 1730544330000, + "y": 218 + }, + { + "x": 1730544360000, + "y": 228 + }, + { + "x": 1730544390000, + "y": 214 + }, + { + "x": 1730544420000, + "y": 220 + }, + { + "x": 1730544450000, + "y": 218 + }, + { + "x": 1730544480000, + "y": 224 + }, + { + "x": 1730544510000, + "y": 228 + }, + { + "x": 1730544540000, + "y": 228 + }, + { + "x": 1730544570000, + "y": 232 + }, + { + "x": 1730544600000, + "y": 218 + }, + { + "x": 1730544630000, + "y": 232 + }, + { + "x": 1730544660000, + "y": 212 + }, + { + "x": 1730544690000, + "y": 236 + }, + { + "x": 1730544720000, + "y": 246 + }, + { + "x": 1730544750000, + "y": 218 + }, + { + "x": 1730544780000, + "y": 214 + }, + { + "x": 1730544810000, + "y": 210 + }, + { + "x": 1730544840000, + "y": 228 + }, + { + "x": 1730544870000, + "y": 228 + }, + { + "x": 1730544900000, + "y": 224 + }, + { + "x": 1730544930000, + "y": 56 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "bfeu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "Enqueued", + "regex": ".*?Enqueued.*?", + "sample": "Enqueued", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Enqueued" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "oacl", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "ResponseReceived", + "regex": ".*?ResponseReceived.*?", + "sample": "ResponseReceived", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "ResponseReceived" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "hhud", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "Sent", + "regex": ".*?Sent.*?", + "sample": "Sent", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Sent" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ttbh", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4441, + "pattern": "info 0", + "regex": ".*?info.+?0.*?", + "sample": "info: cartservice.cartstore.ValkeyCartStore[0]\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "info: cartservice.cartstore.ValkeyCartStore[0]\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 117 + }, + { + "x": 1730543820000, + "y": 104 + }, + { + "x": 1730543850000, + "y": 146 + }, + { + "x": 1730543880000, + "y": 103 + }, + { + "x": 1730543910000, + "y": 86 + }, + { + "x": 1730543940000, + "y": 110 + }, + { + "x": 1730543970000, + "y": 97 + }, + { + "x": 1730544000000, + "y": 119 + }, + { + "x": 1730544030000, + "y": 120 + }, + { + "x": 1730544060000, + "y": 110 + }, + { + "x": 1730544090000, + "y": 116 + }, + { + "x": 1730544120000, + "y": 109 + }, + { + "x": 1730544150000, + "y": 124 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 109 + }, + { + "x": 1730544240000, + "y": 115 + }, + { + "x": 1730544270000, + "y": 113 + }, + { + "x": 1730544300000, + "y": 137 + }, + { + "x": 1730544330000, + "y": 114 + }, + { + "x": 1730544360000, + "y": 122 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 113 + }, + { + "x": 1730544450000, + "y": 114 + }, + { + "x": 1730544480000, + "y": 117 + }, + { + "x": 1730544510000, + "y": 116 + }, + { + "x": 1730544540000, + "y": 117 + }, + { + "x": 1730544570000, + "y": 121 + }, + { + "x": 1730544600000, + "y": 112 + }, + { + "x": 1730544630000, + "y": 123 + }, + { + "x": 1730544660000, + "y": 108 + }, + { + "x": 1730544690000, + "y": 129 + }, + { + "x": 1730544720000, + "y": 132 + }, + { + "x": 1730544750000, + "y": 111 + }, + { + "x": 1730544780000, + "y": 111 + }, + { + "x": 1730544810000, + "y": 108 + }, + { + "x": 1730544840000, + "y": 120 + }, + { + "x": 1730544870000, + "y": 118 + }, + { + "x": 1730544900000, + "y": 120 + }, + { + "x": 1730544930000, + "y": 73 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "eahn", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4152, + "pattern": "Fetch cart", + "regex": ".*?Fetch.+?cart.*?", + "sample": "Fetch cart", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Fetch cart" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 112 + }, + { + "x": 1730543820000, + "y": 94 + }, + { + "x": 1730543850000, + "y": 132 + }, + { + "x": 1730543880000, + "y": 100 + }, + { + "x": 1730543910000, + "y": 80 + }, + { + "x": 1730543940000, + "y": 97 + }, + { + "x": 1730543970000, + "y": 96 + }, + { + "x": 1730544000000, + "y": 113 + }, + { + "x": 1730544030000, + "y": 113 + }, + { + "x": 1730544060000, + "y": 105 + }, + { + "x": 1730544090000, + "y": 111 + }, + { + "x": 1730544120000, + "y": 104 + }, + { + "x": 1730544150000, + "y": 119 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 100 + }, + { + "x": 1730544240000, + "y": 110 + }, + { + "x": 1730544270000, + "y": 107 + }, + { + "x": 1730544300000, + "y": 123 + }, + { + "x": 1730544330000, + "y": 107 + }, + { + "x": 1730544360000, + "y": 112 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 109 + }, + { + "x": 1730544450000, + "y": 108 + }, + { + "x": 1730544480000, + "y": 111 + }, + { + "x": 1730544510000, + "y": 114 + }, + { + "x": 1730544540000, + "y": 114 + }, + { + "x": 1730544570000, + "y": 112 + }, + { + "x": 1730544600000, + "y": 107 + }, + { + "x": 1730544630000, + "y": 114 + }, + { + "x": 1730544660000, + "y": 105 + }, + { + "x": 1730544690000, + "y": 115 + }, + { + "x": 1730544720000, + "y": 119 + }, + { + "x": 1730544750000, + "y": 109 + }, + { + "x": 1730544780000, + "y": 106 + }, + { + "x": 1730544810000, + "y": 105 + }, + { + "x": 1730544840000, + "y": 113 + }, + { + "x": 1730544870000, + "y": 113 + }, + { + "x": 1730544900000, + "y": 109 + }, + { + "x": 1730544930000, + "y": 27 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "xpjx", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 602, + "pattern": "called with userId 11ef 8217 d64fba5f23b1", + "regex": ".*?called.+?with.+?userId.+?11ef.+?8217.+?d64fba5f23b1.*?", + "sample": "GetCartAsync called with userId=fb462b14-9908-11ef-8217-d64fba5f23b1", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=fb462b14-9908-11ef-8217-d64fba5f23b1" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.219Z", + "lastOccurrence": "2024-11-02T10:55:34.364Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 12 + }, + { + "x": 1730543820000, + "y": 26 + }, + { + "x": 1730543850000, + "y": 34 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 16 + }, + { + "x": 1730543940000, + "y": 30 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 14 + }, + { + "x": 1730544030000, + "y": 18 + }, + { + "x": 1730544060000, + "y": 12 + }, + { + "x": 1730544090000, + "y": 10 + }, + { + "x": 1730544120000, + "y": 12 + }, + { + "x": 1730544150000, + "y": 12 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 22 + }, + { + "x": 1730544240000, + "y": 12 + }, + { + "x": 1730544270000, + "y": 14 + }, + { + "x": 1730544300000, + "y": 36 + }, + { + "x": 1730544330000, + "y": 18 + }, + { + "x": 1730544360000, + "y": 24 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 10 + }, + { + "x": 1730544450000, + "y": 14 + }, + { + "x": 1730544480000, + "y": 14 + }, + { + "x": 1730544510000, + "y": 4 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 26 + }, + { + "x": 1730544600000, + "y": 14 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 8 + }, + { + "x": 1730544690000, + "y": 34 + }, + { + "x": 1730544720000, + "y": 34 + }, + { + "x": 1730544750000, + "y": 4 + }, + { + "x": 1730544780000, + "y": 12 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 16 + }, + { + "x": 1730544870000, + "y": 12 + }, + { + "x": 1730544900000, + "y": 28 + }, + { + "x": 1730544930000, + "y": 8 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ckdv", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 382, + "pattern": "AddItemAsync called with userId 11ef 8217 d64fba5f23b1 productId quantity", + "regex": ".*?AddItemAsync.+?called.+?with.+?userId.+?11ef.+?8217.+?d64fba5f23b1.+?productId.+?quantity.*?", + "sample": "AddItemAsync called with userId=fc4e8196-9908-11ef-8217-d64fba5f23b1, productId=1YMWWN1N4O, quantity=10", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "AddItemAsync called with userId=fc4e8196-9908-11ef-8217-d64fba5f23b1, productId=1YMWWN1N4O, quantity=10" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.216Z", + "lastOccurrence": "2024-11-02T10:55:34.363Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 8 + }, + { + "x": 1730543820000, + "y": 14 + }, + { + "x": 1730543850000, + "y": 22 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 8 + }, + { + "x": 1730543940000, + "y": 22 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 10 + }, + { + "x": 1730544030000, + "y": 10 + }, + { + "x": 1730544060000, + "y": 8 + }, + { + "x": 1730544090000, + "y": 10 + }, + { + "x": 1730544120000, + "y": 8 + }, + { + "x": 1730544150000, + "y": 8 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 14 + }, + { + "x": 1730544240000, + "y": 8 + }, + { + "x": 1730544270000, + "y": 10 + }, + { + "x": 1730544300000, + "y": 20 + }, + { + "x": 1730544330000, + "y": 10 + }, + { + "x": 1730544360000, + "y": 16 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 6 + }, + { + "x": 1730544450000, + "y": 10 + }, + { + "x": 1730544480000, + "y": 10 + }, + { + "x": 1730544510000, + "y": 4 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 10 + }, + { + "x": 1730544600000, + "y": 6 + }, + { + "x": 1730544630000, + "y": 14 + }, + { + "x": 1730544660000, + "y": 4 + }, + { + "x": 1730544690000, + "y": 22 + }, + { + "x": 1730544720000, + "y": 18 + }, + { + "x": 1730544750000, + "y": 4 + }, + { + "x": 1730544780000, + "y": 8 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 12 + }, + { + "x": 1730544870000, + "y": 8 + }, + { + "x": 1730544900000, + "y": 16 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "habq", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 216, + "pattern": "GetCartAsync called with userId", + "regex": ".*?GetCartAsync.+?called.+?with.+?userId.*?", + "sample": "GetCartAsync called with userId=", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=" + ] + }, + "firstOccurrence": "2024-11-02T10:36:36.912Z", + "lastOccurrence": "2024-11-02T10:55:33.022Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 10 + }, + { + "x": 1730543820000, + "y": 4 + }, + { + "x": 1730543850000, + "y": 6 + }, + { + "x": 1730543880000, + "y": 4 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 4 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 10 + }, + { + "x": 1730544030000, + "y": 10 + }, + { + "x": 1730544060000, + "y": 6 + }, + { + "x": 1730544090000, + "y": 2 + }, + { + "x": 1730544120000, + "y": 8 + }, + { + "x": 1730544150000, + "y": 8 + }, + { + "x": 1730544180000, + "y": 4 + }, + { + "x": 1730544210000, + "y": 6 + }, + { + "x": 1730544240000, + "y": 2 + }, + { + "x": 1730544270000, + "y": 4 + }, + { + "x": 1730544300000, + "y": 8 + }, + { + "x": 1730544330000, + "y": 4 + }, + { + "x": 1730544360000, + "y": 4 + }, + { + "x": 1730544390000, + "y": 2 + }, + { + "x": 1730544420000, + "y": 8 + }, + { + "x": 1730544450000, + "y": 4 + }, + { + "x": 1730544480000, + "y": 10 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 12 + }, + { + "x": 1730544570000, + "y": 8 + }, + { + "x": 1730544600000, + "y": 8 + }, + { + "x": 1730544630000, + "y": 6 + }, + { + "x": 1730544660000, + "y": 6 + }, + { + "x": 1730544690000, + "y": 2 + }, + { + "x": 1730544720000, + "y": 6 + }, + { + "x": 1730544750000, + "y": 6 + }, + { + "x": 1730544780000, + "y": 4 + }, + { + "x": 1730544810000, + "y": 2 + }, + { + "x": 1730544840000, + "y": 6 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 8 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "tzfi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 55, + "pattern": "Empty cart", + "regex": ".*?Empty.+?cart.*?", + "sample": "Empty cart", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Empty cart" + ] + }, + "firstOccurrence": "2024-11-02T10:36:41.806Z", + "lastOccurrence": "2024-11-02T10:55:32.654Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1 + }, + { + "x": 1730543820000, + "y": 3 + }, + { + "x": 1730543850000, + "y": 3 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 2 + }, + { + "x": 1730543940000, + "y": 2 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 1 + }, + { + "x": 1730544030000, + "y": 2 + }, + { + "x": 1730544060000, + "y": 1 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 1 + }, + { + "x": 1730544150000, + "y": 1 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 2 + }, + { + "x": 1730544240000, + "y": 1 + }, + { + "x": 1730544270000, + "y": 1 + }, + { + "x": 1730544300000, + "y": 4 + }, + { + "x": 1730544330000, + "y": 2 + }, + { + "x": 1730544360000, + "y": 2 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 1 + }, + { + "x": 1730544450000, + "y": 1 + }, + { + "x": 1730544480000, + "y": 1 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 4 + }, + { + "x": 1730544600000, + "y": 2 + }, + { + "x": 1730544630000, + "y": 2 + }, + { + "x": 1730544660000, + "y": 1 + }, + { + "x": 1730544690000, + "y": 3 + }, + { + "x": 1730544720000, + "y": 4 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 1 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 1 + }, + { + "x": 1730544870000, + "y": 1 + }, + { + "x": 1730544900000, + "y": 3 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ldwf", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 55, + "pattern": "feature_flag", + "regex": ".*?feature_flag.*?", + "sample": "feature_flag", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "feature_flag" + ] + }, + "firstOccurrence": "2024-11-02T10:36:41.809Z", + "lastOccurrence": "2024-11-02T10:55:32.655Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1 + }, + { + "x": 1730543820000, + "y": 3 + }, + { + "x": 1730543850000, + "y": 3 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 2 + }, + { + "x": 1730543940000, + "y": 2 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 1 + }, + { + "x": 1730544030000, + "y": 2 + }, + { + "x": 1730544060000, + "y": 1 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 1 + }, + { + "x": 1730544150000, + "y": 1 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 2 + }, + { + "x": 1730544240000, + "y": 1 + }, + { + "x": 1730544270000, + "y": 1 + }, + { + "x": 1730544300000, + "y": 4 + }, + { + "x": 1730544330000, + "y": 2 + }, + { + "x": 1730544360000, + "y": 2 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 1 + }, + { + "x": 1730544450000, + "y": 1 + }, + { + "x": 1730544480000, + "y": 1 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 4 + }, + { + "x": 1730544600000, + "y": 2 + }, + { + "x": 1730544630000, + "y": 2 + }, + { + "x": 1730544660000, + "y": 1 + }, + { + "x": 1730544690000, + "y": 3 + }, + { + "x": 1730544720000, + "y": 4 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 1 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 1 + }, + { + "x": 1730544870000, + "y": 1 + }, + { + "x": 1730544900000, + "y": 3 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "noer", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 2, + "pattern": "OTEL-SDK BatchActivityExportProcessor exporting to OtlpTraceExporter dropped items", + "regex": ".*?OTEL-SDK.+?BatchActivityExportProcessor.+?exporting.+?to.+?OtlpTraceExporter.+?dropped.+?items.*?", + "sample": "OTEL-SDK: [224] 'BatchActivityExportProcessor' exporting to 'OtlpTraceExporter' dropped '0' items.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] 'BatchActivityExportProcessor' exporting to 'OtlpTraceExporter' dropped '0' items." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.580Z", + "lastOccurrence": "2024-11-02T10:55:36.580Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "fiia", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1, + "pattern": "my-otel-demo-valkey open", + "regex": ".*?my-otel-demo-valkey.+?open.*?", + "sample": "my-otel-demo-valkey (10.106.38.244:6379) open\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "my-otel-demo-valkey (10.106.38.244:6379) open\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:34.993Z", + "lastOccurrence": "2024-11-02T10:55:34.993Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "uzyf", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 78, + "pattern": "OTEL-SDK Instrument Meter has been deactivated", + "regex": ".*?OTEL-SDK.+?Instrument.+?Meter.+?has.+?been.+?deactivated.*?", + "sample": "OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.585Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 78 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "lciw", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 4, + "pattern": "OTEL-SDK Disposed", + "regex": ".*?OTEL-SDK.+?Disposed.*?", + "sample": "OTEL-SDK: [224] 'MeterProvider' Disposed.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] 'MeterProvider' Disposed." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.581Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "woqa", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 3, + "pattern": "exiting", + "regex": ".*?exiting.*?", + "sample": "exiting...\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "exiting...\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:55.622Z", + "lastOccurrence": "2024-11-02T10:56:51.618Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 1 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ucuj", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 2, + "pattern": "Application is shutting down", + "regex": ".*?Application.+?is.+?shutting.+?down.*?", + "sample": "Application is shutting down...", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Application is shutting down..." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.560Z", + "lastOccurrence": "2024-11-02T10:55:36.560Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "cgip", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 3, + "pattern": "FATAL Could not start entrypoint", + "regex": ".*?FATAL.+?Could.+?not.+?start.+?entrypoint.*?", + "sample": "FATAL: Could not start, bad entrypoint!\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "FATAL: Could not start, bad entrypoint!\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:35.618Z", + "lastOccurrence": "2024-11-02T10:56:31.617Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 1 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 1.8274885276877215e-20, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "reqc", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [ + { + "field": "message", + "count": 26, + "pattern": "I1102 replica_set.go Finished syncing logger replicaset-controller kind ReplicaSet key duration", + "regex": ".*?I1102.+?replica_set\\.go.+?Finished.+?syncing.+?logger.+?replicaset-controller.+?kind.+?ReplicaSet.+?key.+?duration.*?", + "sample": "I1102 10:55:33.013871 1 replica_set.go:679] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice-7b585f4fb7\" duration=\"101.333µs\"\n", + "highlight": { + "body.text": [ + "] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice" + ], + "message": [ + "] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice" + ] + }, + "metadata": { + "service.name": [ + "kube-controller-manager" + ], + "message": [ + "I1102 10:55:33.013871 1 replica_set.go:679] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice-7b585f4fb7\" duration=\"101.333µs\"\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:33.014Z", + "lastOccurrence": "2024-11-02T10:56:52.568Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 19 + }, + { + "x": 1730544960000, + "y": 2 + }, + { + "x": 1730544990000, + "y": 5 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 7.313742705200763e-147, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "ofdx", + "relevance": "normal", + "interesting": true + }, + { + "field": "message", + "count": 21, + "pattern": "object apiVersion events.k8s.io/v1 deprecatedCount deprecatedFirstTimestamp deprecatedLastTimestamp deprecatedSource component eventTime null kind Event metadata creationTimestamp managedFields apiVersion v1 fieldsType FieldsV1 fieldsV1", + "regex": ".*?object.+?apiVersion.+?events\\.k8s\\.io/v1.+?deprecatedCount.+?deprecatedFirstTimestamp.+?deprecatedLastTimestamp.+?deprecatedSource.+?component.+?eventTime.+?null.+?kind.+?Event.+?metadata.+?creationTimestamp.+?managedFields.+?apiVersion.+?v1.+?fieldsType.+?FieldsV1.+?fieldsV1.*?", + "sample": "{\"object\":{\"apiVersion\":\"events.k8s.io/v1\",\"deprecatedCount\":2,\"deprecatedFirstTimestamp\":\"2024-11-02T10:56:17Z\",\"deprecatedLastTimestamp\":\"2024-11-02T10:56:52Z\",\"deprecatedSource\":{\"component\":\"kubelet\",\"host\":\"minikube\"},\"eventTime\":null,\"kind\":\"Event\",\"metadata\":{\"creationTimestamp\":\"2024-11-02T10:56:17Z\",\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:count\":{},\"f:firstTimestamp\":{},\"f:involvedObject\":{},\"f:lastTimestamp\":{},\"f:message\":{},\"f:reason\":{},\"f:reportingComponent\":{},\"f:reportingInstance\":{},\"f:source\":{\"f:component\":{},\"f:host\":{}},\"f:type\":{}},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz.1804217ce2cb3041\",\"namespace\":\"default\",\"resourceVersion\":\"375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":\"9580334a-7ef9-4ad5-baf6-0ad10ae49853\"},\"reportingController\":\"kubelet\",\"reportingInstance\":\"minikube\",\"type\":\"Warning\"},\"type\":\"MODIFIED\"}", + "highlight": { + "message": [ + "},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice", + "375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice", + "in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason", + "\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name", + "\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":" + ] + }, + "metadata": { + "service.name": [ + "unknown" + ], + "message": [ + "{\"object\":{\"apiVersion\":\"events.k8s.io/v1\",\"deprecatedCount\":2,\"deprecatedFirstTimestamp\":\"2024-11-02T10:56:17Z\",\"deprecatedLastTimestamp\":\"2024-11-02T10:56:52Z\",\"deprecatedSource\":{\"component\":\"kubelet\",\"host\":\"minikube\"},\"eventTime\":null,\"kind\":\"Event\",\"metadata\":{\"creationTimestamp\":\"2024-11-02T10:56:17Z\",\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:count\":{},\"f:firstTimestamp\":{},\"f:involvedObject\":{},\"f:lastTimestamp\":{},\"f:message\":{},\"f:reason\":{},\"f:reportingComponent\":{},\"f:reportingInstance\":{},\"f:source\":{\"f:component\":{},\"f:host\":{}},\"f:type\":{}},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz.1804217ce2cb3041\",\"namespace\":\"default\",\"resourceVersion\":\"375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":\"9580334a-7ef9-4ad5-baf6-0ad10ae49853\"},\"reportingController\":\"kubelet\",\"reportingInstance\":\"minikube\",\"type\":\"Warning\"},\"type\":\"MODIFIED\"}" + ] + }, + "firstOccurrence": "2024-11-02T10:55:33.051Z", + "lastOccurrence": "2024-11-02T10:56:52.563Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 16 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 4 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 2.9750218550484796e-168, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "lqan", + "relevance": "critical", + "interesting": true + } + ], + "searches": [ + { + "fragments": [ + "AddItemAsync called with userId", + "productId", + "quantity" + ], + "appearsAs": "userId, productId, and quantity are referenced in the request handling log entries in cartservice." + }, + { + "fragments": [ + "GetCartAsync called with userId" + ], + "appearsAs": "userId is referenced in the request handling log entries in cartservice." + }, + { + "fragments": [ + "Empty cart" + ], + "appearsAs": "Empty cart operation logs in cartservice." + }, + { + "fragments": [ + "cartServiceFailure" + ], + "appearsAs": "Feature flag 'cartServiceFailure' in cartservice." + }, + { + "fragments": [ + "10.244.0.61" + ], + "appearsAs": "IP address of the cartservice pod." + }, + { + "fragments": [ + "my-otel-demo-cartservice-67575c6f84-vngzw" + ], + "appearsAs": "Pod name of cartservice." + }, + { + "fragments": [ + "my-otel-demo-valkey:6379" + ], + "appearsAs": "Redis service used by cartservice." + }, + { + "fragments": [ + "/oteldemo.CartService/AddItem", + "/oteldemo.CartService/GetCart", + "/oteldemo.CartService/EmptyCart" + ], + "appearsAs": "Endpoints handled by cartservice." + }, + { + "fragments": [ + "flagd.evaluation.v1.Service" + ], + "appearsAs": "gRPC service involved in feature flag evaluation by cartservice." + }, + { + "fragments": [ + "HGET", + "EXPIRE", + "HMSET" + ], + "appearsAs": "Redis commands executed by cartservice." + } + ], + "relatedEntitiesSummaries": [ + "Based on the context provided, the following entities are potentially related to `service.name:cartservice` as either upstream or downstream dependencies. Below is a detailed analysis based on the indicators of relationships obtained from the observability data:\n\n### 1. Related Entity: `service.name:controller`\n- **Indicators**: \n - **Average Indicator**: The logs highlight high error rates (500 Internal Server Error) in the controller when POST requests to the `/api/cart` endpoint are made.\n - **Field values**: In controller logs, `message` contains references to the `/api/cart` endpoint, which is handled by `cartservice`.\n- **Reasoning**: \n - The `controller` service is responsible for managing /api/cart requests. Thus, it acts as a direct upstream service to `cartservice`.\n - It implies `controller` calls `cartservice` as part of handling requests, leading to the observed errors.\n- **Likeliness**: High\n - The `controller` service is likely a highly relevant entity since it directly interfaces with `cartservice`, with the errors surfacing in it when interacting with `cartservice`.\n\n### 2. Related Entity: `service.name:frontend`\n- **Indicators**:\n - **Strong Indicator**: The system architecture documentation shows that `frontend` interacts with various backend services, including those for user interactions such as adding items to the cart.\n - **Field values**: In the knowledge base, `frontend` receives HTTP traffic routed through `frontendproxy` and interacts with `cartservice`.\n- **Reasoning**:\n - `frontend` would act as a direct upstream service that communicates with `controller`, providing requests that eventually hit `cartservice`.\n- **Likeliness**: High\n - As `frontend` handles initial user interactions and routes requests to `cartservice`, it is essential in the request flow leading to `/api/cart` errors.\n\n### 3. Related Entity: `service.name:currencyservice`\n- **Indicators**:\n - **Strong Indicator**: The architecture description indicates `currencyservice` interacts with `cartservice` to handle currency conversions.\n - **Field values**: The entries show gRPC calls between `cartservice` and `currencyservice` for conversion operations.\n- **Reasoning**:\n - `currencyservice` may be an upstream dependency for `cartservice` for any currency-related manipulations on cart items.\n- **Likeliness**: Medium-High\n - While `currencyservice` interacts with `cartservice`, its exact influence on the direct issue might not be as strong as `controller` or `frontend`.\n\n### 4. Related Entity: `service.name:checkoutservice`\n- **Indicators**:\n - **Strong Indicator**: The architecture documentation lists `checkoutservice` as coordinating the checkout process involving interactions with `cartservice`.\n - **Field values**: Distributed tracing data could show `checkoutservice` making gRPC or HTTP calls to `cartservice`.\n- **Reasoning**:\n - `checkoutservice` is likely a downstream service that relies on the correct functioning of `cartservice` to gather cart data before proceeding to checkout operations.\n- **Likeliness**: Medium\n - Although primarily a downstream dependency, it processes important data from `cartservice`.\n\n### 5. Related Entity: `service.name:adservice`\n- **Indicators**:\n - **Weak Indicator**: `adservice` interfaces with `frontend` via gRPC to deliver ad content, it also might indirectly influence `cartservice` interactions if ads are part of the cart page.\n - **Field values**: Architectural details state `adservice` operates in the background to enhance user experience but no direct interaction with `cartservice`.\n- **Reasoning**:\n - While not directly connected, any latency in `adservice` may affect the overall user experience, causing indirect latency in calls that reach `cartservice`.\n- **Likeliness**: Low-Medium\n - Indirect connection and latent repercussions on user interactions with cart functionality.\n\n### 6. Related Entity: `service.name:loadgenerator`\n- **Indicators**:\n - **Average Indicator**: The `loadgenerator` service generates simulated traffic, handled by `frontendproxy` to stress-test services like `cartservice`.\n - **Field values**: Traffic from `loadgenerator` is routed through `frontendproxy` to reach core services, including `cartservice`.\n- **Reasoning**:\n - As an external input simulator, its traffic generation directly impacts `cartservice` when testing load resilience.\n- **Likeliness**: Medium\n - The errors can be a result of load tests conducted by `loadgenerator` surfacing bottlenecks in `cartservice`.\n\n### Summary\n\nTo conclude, the following entities are likely relevant to the issue in `service.name:cartservice`:\n\n1. **controller**: Direct upstream causing the 500 errors - High relevance.\n2. **frontend**: Upstream service initiating user interactions - High relevance.\n3. **currencyservice**: Upstream service for currency conversion - Medium-High relevance.\n4. **checkoutservice**: Downstream service relying on cart data - Medium relevance.\n5. **adservice**: Possible indirect impact due to latency - Low-Medium relevance.\n6. **loadgenerator**: Simulated traffic testing the system's resilience - Medium relevance.\n\nBy analyzing these entities, you can prioritize investigating `controller`, `frontend`, and `currencyservice` first, as they have the most direct and potentially impactful interactions with `cartservice`.", + "Based on the context provided, the architecture outlined in the knowledge base entry, the document analysis for the `cartservice`, and search keywords, several possible relationships with the `cartservice` can be identified. Below are the entities identified as highly relevant to the `cartservice`, along with the indicators, evidence, reasoning, and overall relevance.\n\n### 1. Entity: `service.name:frontend`\n\n#### Indicators and Evidence\n- **Average Indicator - URL Paths:**\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart`\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`\n- **Average Indicator - Logs:**\n - Observed in the search highlights for `service.name:frontend`: `@opentelemetry/api/build/src/api/context.js:60:46) at ServiceClientImpl.clientMethodTrace [as getCart]`\n- **Knowledge Base:**\n - The `frontend` is the core service for user interactions, receiving HTTP traffic and making requests to the `cartservice`.\n\n#### Relationship and Reasoning\nThe `frontend` service interacts directly with the `cartservice` by making requests to handle user shopping cart operations, such as adding items, retrieving the cart, and emptying the cart. Given the observed log entries and URL paths, it is reasonable to infer that the `frontend` service acts as a caller, while the `cartservice` acts as the callee. The high error rates observed in the context likely originate from the `frontend` making POST requests to the `/api/cart` endpoint handled by the `cartservice`.\n\n#### Likelihood of Relevance\n- **Very High:** The `frontend` service is highly likely to be relevant as it has a direct interaction with the `cartservice` and would be significantly impacted by any issues within the `cartservice`.\n\n### 2. Entity: `service.name:valkey`\n\n#### Indicators and Evidence\n- **Average Indicator - Redis Service:**\n - `my-otel-demo-valkey:6379`\n- **Average Indicator - Log Entries:**\n - Log patterns show Redis command execution by `cartservice`: `HGET`, `EXPIRE`, `HMSET`\n\n#### Relationship and Reasoning\nThe `valkey` service corresponds to the Redis instance that `cartservice` uses for data persistence. The `cartservice` makes frequent calls to Redis to perform operations such as fetching, expiring, and setting data, which is crucial for managing shopping cart state. As Redis is an upstream dependency, connection or data integrity issues here could directly contribute to the `500 Internal Server Errors` observed in the `cartservice`.\n\n#### Likelihood of Relevance\n- **High:** The `valkey` service is highly relevant because it is the data store for `cartservice`, directly affecting its behavior and performance.\n\n### 3. Entity: `service.name:currencyservice`\n\n#### Indicators and Evidence\n- **Average Indicator - gRPC Services:**\n - Mentioned in the architecture as handling currency conversions.\n- **Knowledge Base:**\n - Communicates with `cartservice` over gRPC to facilitate currency operations.\n\n#### Relationship and Reasoning\nThe `currencyservice` may interact with `cartservice` to handle price conversions for the items in the cart. Problems with currency conversion could cause unexpected data formats or communication failures, leading to `500 Internal Server Errors` in `cartservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** While the interaction exists, whether it directly contributes to the 500 errors specifically observed at `/api/cart` endpoints would require further investigation.\n\n### 4. Entity: `service.name:checkoutservice`\n\n#### Indicators and Evidence\n- **Strong Indicator - gRPC Services:**\n - Interacts with `checkoutservice` during the checkout process.\n- **Knowledge Base:**\n - Handles interactions including calls to `cartservice` for finalizing orders.\n\n#### Relationship and Reasoning\nThe `checkoutservice` could potentially depend on `cartservice` to validate and finalize items in the user's cart as part of the checkout process. If the `cartservice` fails during these operations, it could propagate errors back up to the user level through `checkoutservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** The relevance depends on whether the observed errors are occurring during checkout processes or general cart manipulations.\n\n### 5. Entity: `service.name:flagd`\n\n#### Indicators and Evidence\n- **Average Indicator - Feature Flag Evaluation:**\n - `flagd.evaluation.v1.Service`\n- **Log Metadata:**\n - `labels.feature_flag_key:keyword - cartServiceFailure`\n- **Trace Destination Service:**\n - `my-otel-demo-flagd:8013`\n\n#### Relationship and Reasoning\nThe `flagd` service is responsible for evaluating feature flags, such as the `cartServiceFailure`. If the feature flagging system is improperly toggled (e.g.: feature flag set to fail operations), it might contribute to the high error rates observed in `cartservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** The feature flags might be causing or amplifying existing issues within the `cartservice`.\n\n### Summary\nFrom the observed data, the following entities are highly likely to be related to `cartservice` with respect to the given context:\n\n1. **`frontend`** - High relevance due to direct HTTP interaction with `cartservice`.\n2. **`valkey`** - High relevance as the Redis data store for `cartservice`.\n\nEntities with moderate likelihood:\n\n1. **`currencyservice`** - Related via gRPC for currency operations.\n2. **`checkoutservice`** - Potentially related during checkout processes.\n3. **`flagd`** - Related to feature flag evaluations involving `cartservice`.\n\nThese relationships cover both upstream dependencies affecting `cartservice` and downstream services impacted by `cartservice` issues, aiding in comprehensive issue diagnosis." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 5 + } + ] + } + } + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_KJwmI3xgY1gcstI4MVd4Olcf", + "function": { + "name": "observe", + "arguments": { + "observe": true + } + } + } + ] + }, + { + "name": "observe", + "response": { + "content": "### Acknowledgement of Investigations\n\nThe investigations of the `cartservice` and `frontend` services have provided valuable insights into the root cause of the high error rates observed in the `controller` service for POST requests to the `/api/cart` endpoint. The initial context indicated a severe and rapid onset of errors beginning at `2024-11-02T10:56:42.498Z`.\n\n### Key Observations\n\n**Investigation of Service `cartservice`**:\n- **Infrastructure & Environment**: The `cartservice` runs in a Kubernetes environment within the `default` namespace and uses Redis for data persistence.\n- **Log Patterns**:\n - Significant startup issues and fatal errors around `2024-11-02T10:55:30.000Z`.\n - A fatal \"bad entrypoint\" error prevented the service from starting correctly, leading to high error rates.\n- **Communication Endpoints**:\n - gRPC methods targeting shopping cart data.\n- **Critical Errors**:\n - \"FATAL: Could not start, bad entrypoint!\" log messages indicate critical failure.\n- **Implications**:\n - Startup issues likely prevented `cartservice` from responding to requests, causing downstream problems observed in the `controller` service.\n\n**Investigation of Service `frontend`**:\n- **Infrastructure & Environment**: The `frontend` service operates within a Kubernetes environment, communicating primarily via HTTP and gRPC.\n- **Log Patterns**:\n - Sharp increase in connection errors to the `cartservice` starting around `2024-11-02T10:55:30.000Z`.\n - \"ECONNREFUSED\" errors indicate failed attempts to connect to the `cartservice`.\n- **Communication Endpoints**:\n - Interacts with `cartservice` via gRPC.\n- **Critical Errors**:\n - \"No connection established\" and \"failed to get user cart during checkout\" errors.\n- **Implications**:\n - Communication failures between `frontend` and `cartservice` are strongly correlated with the high error rates in the `controller` service.\n\n### Timeline of Significant Events\n\n**2024-11-02T10:55:30.000Z**:\n- **`cartservice` Logs**:\n - \"OTEL-SDK: Instrument deactivation\" (78 occurrences), \"MeterProvider Disposed\" (4 occurrences), \"exiting...\" (3 occurrences), \"Application is shutting down...\" (2 occurrences), \"FATAL: Could not start, bad entrypoint!\" (2 occurrences).\n - **Meaning**: Indicates various startup and shutdown issues, especially the fatal entrypoint error that likely prevented the service from running correctly.\n\n**2024-11-02T10:55:30.000Z**:\n- **`frontend` Logs**:\n - \"No connection established\" errors (291 occurrences) and \"cart failure due to connection error\" (2 occurrences).\n - **Meaning**: Indicates immediate connection issues between `frontend` and `cartservice`.\n\n**2024-11-02T10:56:00.000Z**:\n- **`frontend` Logs**:\n - Further increase in \"No connection established\" errors (381 occurrences).\n - **Meaning**: Continued significant connection issues.\n\n**2024-11-02T10:56:30.000Z**:\n- **`cartservice` Logs**:\n - Another \"bad entrypoint\" fatal error (1 additional occurrence).\n - **Meaning**: Persistent startup issues continue to cause service failures.\n\n**2024-11-02T10:56:42.498Z**:\n- **Alert Triggered**:\n - High error rate (98.78%) in `controller` for POST requests to `/api/cart`.\n - **Meaning**: The timing aligns closely with the observed spikes in connection errors and startup issues, indicating a direct correlation.\n\n**2024-11-02T10:57:00.000Z**:\n- **`frontend` Logs**:\n - Connection errors return to zero occurrences.\n - **Meaning**: The immediate spike in connection issues appears to have subsided.\n\n### Context and Reasoning\n\nThe investigations reveal a clear temporal correlation and a logical causal pathway leading from the critical errors in `cartservice` to the observed high error rates in the `controller` service. The startup and initialization issues in `cartservice` around `2024-11-02T10:55:30.000Z` prevented it from functioning correctly, leading to connection refusal errors when `frontend` tried to access it. In turn, these failures propagated upstream, causing the `controller` to report high error rates for POST requests to the `/api/cart` endpoint.\n\n### Next Steps and Conclusion\n\n**Conclusion**:\n- The root cause of the high error rates in the `controller` service is the startup failure and persistent initialization issues in the `cartservice`.\n- These failures led to widespread connection refusal errors in `frontend`, which directly affected the ability of the `controller` to process requests to the `/api/cart` endpoint.\n\n**Recommendation**:\n- Address the misconfiguration or code issues in `cartservice` that are causing the fatal startup errors.\n- Ensure `cartservice` can reliably start and maintain stable communication with `frontend`.\n\nHaving thoroughly investigated the involved services, identified the key issues, and established the root cause, there is no need to further investigate other entities at this time. Conclude the investigation upon resolving the identified startup and initialization issues in `cartservice`." + }, + "data": { + "content": "### Acknowledgement of Investigations\n\nThe investigations of the `cartservice` and `frontend` services have provided valuable insights into the root cause of the high error rates observed in the `controller` service for POST requests to the `/api/cart` endpoint. The initial context indicated a severe and rapid onset of errors beginning at `2024-11-02T10:56:42.498Z`.\n\n### Key Observations\n\n**Investigation of Service `cartservice`**:\n- **Infrastructure & Environment**: The `cartservice` runs in a Kubernetes environment within the `default` namespace and uses Redis for data persistence.\n- **Log Patterns**:\n - Significant startup issues and fatal errors around `2024-11-02T10:55:30.000Z`.\n - A fatal \"bad entrypoint\" error prevented the service from starting correctly, leading to high error rates.\n- **Communication Endpoints**:\n - gRPC methods targeting shopping cart data.\n- **Critical Errors**:\n - \"FATAL: Could not start, bad entrypoint!\" log messages indicate critical failure.\n- **Implications**:\n - Startup issues likely prevented `cartservice` from responding to requests, causing downstream problems observed in the `controller` service.\n\n**Investigation of Service `frontend`**:\n- **Infrastructure & Environment**: The `frontend` service operates within a Kubernetes environment, communicating primarily via HTTP and gRPC.\n- **Log Patterns**:\n - Sharp increase in connection errors to the `cartservice` starting around `2024-11-02T10:55:30.000Z`.\n - \"ECONNREFUSED\" errors indicate failed attempts to connect to the `cartservice`.\n- **Communication Endpoints**:\n - Interacts with `cartservice` via gRPC.\n- **Critical Errors**:\n - \"No connection established\" and \"failed to get user cart during checkout\" errors.\n- **Implications**:\n - Communication failures between `frontend` and `cartservice` are strongly correlated with the high error rates in the `controller` service.\n\n### Timeline of Significant Events\n\n**2024-11-02T10:55:30.000Z**:\n- **`cartservice` Logs**:\n - \"OTEL-SDK: Instrument deactivation\" (78 occurrences), \"MeterProvider Disposed\" (4 occurrences), \"exiting...\" (3 occurrences), \"Application is shutting down...\" (2 occurrences), \"FATAL: Could not start, bad entrypoint!\" (2 occurrences).\n - **Meaning**: Indicates various startup and shutdown issues, especially the fatal entrypoint error that likely prevented the service from running correctly.\n\n**2024-11-02T10:55:30.000Z**:\n- **`frontend` Logs**:\n - \"No connection established\" errors (291 occurrences) and \"cart failure due to connection error\" (2 occurrences).\n - **Meaning**: Indicates immediate connection issues between `frontend` and `cartservice`.\n\n**2024-11-02T10:56:00.000Z**:\n- **`frontend` Logs**:\n - Further increase in \"No connection established\" errors (381 occurrences).\n - **Meaning**: Continued significant connection issues.\n\n**2024-11-02T10:56:30.000Z**:\n- **`cartservice` Logs**:\n - Another \"bad entrypoint\" fatal error (1 additional occurrence).\n - **Meaning**: Persistent startup issues continue to cause service failures.\n\n**2024-11-02T10:56:42.498Z**:\n- **Alert Triggered**:\n - High error rate (98.78%) in `controller` for POST requests to `/api/cart`.\n - **Meaning**: The timing aligns closely with the observed spikes in connection errors and startup issues, indicating a direct correlation.\n\n**2024-11-02T10:57:00.000Z**:\n- **`frontend` Logs**:\n - Connection errors return to zero occurrences.\n - **Meaning**: The immediate spike in connection issues appears to have subsided.\n\n### Context and Reasoning\n\nThe investigations reveal a clear temporal correlation and a logical causal pathway leading from the critical errors in `cartservice` to the observed high error rates in the `controller` service. The startup and initialization issues in `cartservice` around `2024-11-02T10:55:30.000Z` prevented it from functioning correctly, leading to connection refusal errors when `frontend` tried to access it. In turn, these failures propagated upstream, causing the `controller` to report high error rates for POST requests to the `/api/cart` endpoint.\n\n### Next Steps and Conclusion\n\n**Conclusion**:\n- The root cause of the high error rates in the `controller` service is the startup failure and persistent initialization issues in the `cartservice`.\n- These failures led to widespread connection refusal errors in `frontend`, which directly affected the ability of the `controller` to process requests to the `/api/cart` endpoint.\n\n**Recommendation**:\n- Address the misconfiguration or code issues in `cartservice` that are causing the fatal startup errors.\n- Ensure `cartservice` can reliably start and maintain stable communication with `frontend`.\n\nHaving thoroughly investigated the involved services, identified the key issues, and established the root cause, there is no need to further investigate other entities at this time. Conclude the investigation upon resolving the identified startup and initialization issues in `cartservice`.", + "investigations": [ + { + "attachments": { + "alerts": [], + "slos": [], + "analysis": { + "total": 41440, + "sampled": 1000, + "fields": [ + "@timestamp:date - 964 distinct values", + "agent.name.text:text - 1 distinct values (`opentelemetry/dotnet/elastic-dotnet`)", + "agent.name:keyword - 1 distinct values (`opentelemetry/dotnet/elastic-dotnet`)", + "agent.version:keyword - 1 distinct values (`1.0.0-alpha.4`)", + "container.id:keyword - 1 distinct values (`577d6250ad96a5d0016a42ed87bd5c3a63b86edd2af0a0c04b54a1cec2a1a50a`)", + "data_stream.dataset:keyword - 1 distinct values (`apm`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`traces`)", + "destination.address:keyword - 2 distinct values (`my-otel-demo-flagd`, `my-otel-demo-valkey`)", + "destination.port:long - 2 distinct values (`8013`, `6379`)", + "event.outcome:keyword - 1 distinct values (`success`)", + "event.success_count:byte - 1 distinct values (`1`)", + "host.hostname:keyword - 1 distinct values (`minikube`)", + "host.name.text:text - 1 distinct values (`minikube`)", + "host.name:keyword - 1 distinct values (`minikube`)", + "http.request.method:keyword - 1 distinct values (`POST`)", + "http.response.status_code:long - 1 distinct values (`200`)", + "kubernetes.namespace:keyword - 1 distinct values (`default`)", + "kubernetes.node.name.text:text - 1 distinct values (`minikube`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name.text:text - 1 distinct values (`my-otel-demo-cartservice-67575c6f84-vngzw`)", + "kubernetes.pod.name:keyword - 1 distinct values (`my-otel-demo-cartservice-67575c6f84-vngzw`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "labels.app_product_id:keyword - 8 distinct values (`66VCHSJNUP`, `L9ECAV7KIM`, `OLJCESPC7Z`, `0PUK6V6EV0`, `9SIQT8TOJO`, `LS4PSXUNUM`, `HQTGWGPNH4`, `6E92ZMYYFZ`)", + "labels.app_user_id:keyword - 418 distinct values (`11c5f5d4-37b4-46d4-a04e-a97fd71b8597`, `9017f637-12af-4671-b18c-0f86a58a7bbe`, `349478d0-862e-4b14-9d54-3120dd57865f`, `2a55d360-40c5-4a32-844b-4182e8050ca3`, `b9944e91-18d6-430c-90a5-4969e1917a2d`, `1ffeffe2-4e4a-47c4-8b33-e691f116c8cc`, `92ac0a92-4a23-4aa7-866b-44cd6b5d6e26`, `76765dfc-80f8-49db-8377-249e6930dd35`, `d5c375cc-6e38-45f8-b121-30fcb3ae1001`, `bdc5ebd9-a2ee-4dbf-8dae-b88a2b2b3643`, 408 more values)", + "labels.db_redis_flags:keyword - 2 distinct values (`DemandMaster`, `None`)", + "labels.feature_flag_key:keyword - 1 distinct values (`cartServiceFailure`)", + "labels.feature_flag_provider_name:keyword - 1 distinct values (`flagd Provider`)", + "labels.feature_flag_variant:keyword - 1 distinct values (`off`)", + "labels.grpc_method:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "labels.grpc_status_code:keyword - 1 distinct values (`0`)", + "labels.http_route:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "labels.k8s_deployment_name:keyword - 1 distinct values (`my-otel-demo-cartservice`)", + "labels.k8s_pod_ip:ip - 1 distinct values (`10.244.0.61`)", + "labels.k8s_pod_start_time:keyword - 1 distinct values (`2024-11-02T10:23:09Z`)", + "labels.network_protocol_version:keyword - 1 distinct values (`2`)", + "labels.service_namespace:keyword - 1 distinct values (`opentelemetry-demo`)", + "labels.transaction_id:keyword - 995 distinct values (`6b71cc6a08847a01`, `796c855656f17eb0`, `aaa6049d68006044`, `60ad645003eda9b7`, `be3e883fd0dd1a58`, `47247987037e78b3`, `180228f348c3d599`, `587dca65bb2463f3`, `c438d3e7c15d9a4f`, `0a9f738aa8e11c7e`, 985 more values)", + "numeric_labels.app_cart_items_count:scaled_float - 10 distinct values (`8`, `1`, `16`, `2`, `20`, `5`, `4`, `10`, `3`, `0`)", + "numeric_labels.app_product_quantity:scaled_float - 6 distinct values (`5`, `1`, `2`, `10`, `3`, `4`)", + "numeric_labels.db_redis_database_index:scaled_float - 1 distinct values (`0`)", + "observer.hostname:keyword - 1 distinct values (`Darios-MacBook-Pro-2.local`)", + "observer.type:keyword - 1 distinct values (`apm-server`)", + "observer.version:keyword - 1 distinct values (`8.15.0`)", + "parent.id:keyword - 999 distinct values (`76a22c35a2b363fb`, `6e363f007dd857fc`, `499ee35b7e0dc791`, `f05ead7365bb815b`, `46709d74aeb1ac57`, `c1e7aeb4f3b66351`, `d6e80a03ce62827e`, `5eff08ed000af546`, `80be4180f1c8985e`, `9154a028a223da28`, 989 more values)", + "processor.event:keyword - 2 distinct values (`transaction`, `span`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.framework.name.text:text - 1 distinct values (`Microsoft.AspNetCore`)", + "service.framework.name:keyword - 1 distinct values (`Microsoft.AspNetCore`)", + "service.language.name.text:text - 1 distinct values (`dotnet`)", + "service.language.name:keyword - 1 distinct values (`dotnet`)", + "service.name.text:text - 1 distinct values (`cartservice`)", + "service.name:keyword - 1 distinct values (`cartservice`)", + "service.node.name.text:text - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "service.node.name:keyword - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "service.target.name.text:text - 3 distinct values (`my-otel-demo-flagd:8013`, `flagd.evaluation.v1.Service`, 1 more values)", + "service.target.name:keyword - 3 distinct values (`my-otel-demo-flagd:8013`, `flagd.evaluation.v1.Service`, `my-otel-demo-valkey:6379`)", + "service.target.type:keyword - 3 distinct values (`http`, `grpc`, `redis`)", + "span.db.statement:keyword - 455 distinct values (`HGET dd1f04f3-aaf1-4a76-85e4-8c64a930684e`, `EXPIRE 2538c162-9908-11ef-8217-d64fba5f23b1`, `HGET 958266ce-2169-4a2a-bcd5-090fd75cf50b`, `HGET ba92c7a8-6623-4267-8512-9cf0cb23bbf8`, `HGET d96a9e44-a9ed-4f64-8f46-5d4acd05a1fa`, `HGET 4a0d4f33-09ee-4008-a826-027dd6e889c6`, `HGET 5bc59fca-3c11-4d71-9496-c9c29b9d37d1`, `HGET 0497c8a8-2da2-4ff7-80a7-ce647916277c`, `HGET 87d37a8f-cc58-483a-aad0-fc0c91421544`, `HGET 4dea82bc-1c58-4f0a-97fd-3a1369544dc0`, 445 more values)", + "span.db.type:keyword - 1 distinct values (`redis`)", + "span.destination.service.name.text:text - 3 distinct values (`http://my-otel-demo-flagd:8013`, `my-otel-demo-flagd:8013`, 1 more values)", + "span.destination.service.name:keyword - 3 distinct values (`http://my-otel-demo-flagd:8013`, `my-otel-demo-flagd:8013`, `my-otel-demo-valkey:6379`)", + "span.destination.service.resource:keyword - 2 distinct values (`my-otel-demo-flagd:8013`, `my-otel-demo-valkey:6379`)", + "span.destination.service.type:keyword - 2 distinct values (`external`, `db`)", + "span.duration.us:long - 399 distinct values (`501`, `154`, `355`, `3766`, `818`, `657`, `203`, `127`, `715`, `1092`, 389 more values)", + "span.id:keyword - 1000 distinct values (`6b71cc6a08847a01`, `796c855656f17eb0`, `aaa6049d68006044`, `60ad645003eda9b7`, `be3e883fd0dd1a58`, `47247987037e78b3`, `180228f348c3d599`, `587dca65bb2463f3`, `c438d3e7c15d9a4f`, `0a9f738aa8e11c7e`, 990 more values)", + "span.name.text:text - 5 distinct values (`POST`, `flagd.evaluation.v1.Service/ResolveBoolean`, 3 more values)", + "span.name:keyword - 5 distinct values (`POST`, `flagd.evaluation.v1.Service/ResolveBoolean`, `HMSET`, `EXPIRE`, `HGET`)", + "span.representative_count:scaled_float - 1 distinct values (`1`)", + "span.subtype:keyword - 3 distinct values (`http`, `grpc`, `redis`)", + "span.type:keyword - 2 distinct values (`external`, `db`)", + "tags:keyword - 1 distinct values (`_geoip_database_unavailable_GeoLite2-City.mmdb`)", + "timestamp.us:long - 1000 distinct values (`1730544111451828`, `1730544606786118`, `1730544573583321`, `1730544068214001`, `1730543971566630`, `1730544035740835`, `1730543892242334`, `1730544845301548`, `1730543919324800`, `1730544697032712`, 990 more values)", + "trace.id:keyword - 920 distinct values (`de1ed71d39ca87650a8401ae46f2cac0`, `1283785f372e3335e30ab82c53008ea6`, `be3fc18a45763f00d43954ef09300042`, `bffb395c41d9a23aa7acc6b1993f64c6`, `68df2f10f7b09e787c688046ae76f6ff`, `3ba13e99d34a48133415c71b9b523321`, `6405704384b681e891e1067b1c1e6e68`, `b137359ec568679804d48c699dd49df5`, `cce045bbbdbb711a2f5cae192c337cb3`, `85743f477e557162900c88409231222a`, 910 more values)", + "transaction.duration.us:long - 441 distinct values (`2497`, `2659`, `610`, `458`, `3158`, `1484`, `436`, `536`, `2602`, `3472`, 431 more values)", + "transaction.id:keyword - 469 distinct values (`60ad645003eda9b7`, `be3e883fd0dd1a58`, `180228f348c3d599`, `0a9f738aa8e11c7e`, `66622c930742b62b`, `2493315b88140ec7`, `7950f85af72baaa0`, `0fda0e8c0af2a975`, `0504e94fae4dd7f8`, `25ec77d0c132ceef`, 459 more values)", + "transaction.name.text:text - 3 distinct values (`POST /oteldemo.CartService/EmptyCart`, `POST /oteldemo.CartService/AddItem`, 1 more values)", + "transaction.name:keyword - 3 distinct values (`POST /oteldemo.CartService/EmptyCart`, `POST /oteldemo.CartService/AddItem`, `POST /oteldemo.CartService/GetCart`)", + "transaction.representative_count:scaled_float - 1 distinct values (`1`)", + "transaction.result:keyword - 1 distinct values (`HTTP 2xx`)", + "transaction.sampled:boolean - 1 distinct values (`true`)", + "transaction.type:keyword - 1 distinct values (`request`)", + "url.domain:keyword - 1 distinct values (`my-otel-demo-cartservice`)", + "url.full.text:text - 3 distinct values (`http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`, 1 more values)", + "url.full:keyword - 3 distinct values (`http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart`)", + "url.original.text:text - 4 distinct values (`http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`, `/oteldemo.CartService/EmptyCart`, 2 more values)", + "url.original:keyword - 4 distinct values (`http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`, `/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "url.path:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "url.port:long - 1 distinct values (`8080`)", + "url.scheme:keyword - 1 distinct values (`http`)", + "user_agent.device.name.text:text - 1 distinct values (`Other`)", + "user_agent.device.name:keyword - 1 distinct values (`Other`)", + "user_agent.name.text:text - 1 distinct values (`Other`)", + "user_agent.name:keyword - 1 distinct values (`Other`)", + "user_agent.original.text:text - 2 distinct values (`grpc-go/1.64.0`, `grpc-node-js/1.10.11`)", + "user_agent.original:keyword - 2 distinct values (`grpc-go/1.64.0`, `grpc-node-js/1.10.11`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 8414, + "pattern": "called with userId", + "regex": ".*?called.+?with.+?userId.*?", + "sample": "GetCartAsync called with userId=f96ee88a-4745-45f1-885a-16c3de0c668a", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=f96ee88a-4745-45f1-885a-16c3de0c668a" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 226 + }, + { + "x": 1730543820000, + "y": 194 + }, + { + "x": 1730543850000, + "y": 270 + }, + { + "x": 1730543880000, + "y": 200 + }, + { + "x": 1730543910000, + "y": 164 + }, + { + "x": 1730543940000, + "y": 198 + }, + { + "x": 1730543970000, + "y": 192 + }, + { + "x": 1730544000000, + "y": 228 + }, + { + "x": 1730544030000, + "y": 230 + }, + { + "x": 1730544060000, + "y": 212 + }, + { + "x": 1730544090000, + "y": 222 + }, + { + "x": 1730544120000, + "y": 210 + }, + { + "x": 1730544150000, + "y": 240 + }, + { + "x": 1730544180000, + "y": 200 + }, + { + "x": 1730544210000, + "y": 204 + }, + { + "x": 1730544240000, + "y": 222 + }, + { + "x": 1730544270000, + "y": 216 + }, + { + "x": 1730544300000, + "y": 254 + }, + { + "x": 1730544330000, + "y": 218 + }, + { + "x": 1730544360000, + "y": 228 + }, + { + "x": 1730544390000, + "y": 214 + }, + { + "x": 1730544420000, + "y": 220 + }, + { + "x": 1730544450000, + "y": 218 + }, + { + "x": 1730544480000, + "y": 224 + }, + { + "x": 1730544510000, + "y": 228 + }, + { + "x": 1730544540000, + "y": 228 + }, + { + "x": 1730544570000, + "y": 232 + }, + { + "x": 1730544600000, + "y": 218 + }, + { + "x": 1730544630000, + "y": 232 + }, + { + "x": 1730544660000, + "y": 212 + }, + { + "x": 1730544690000, + "y": 236 + }, + { + "x": 1730544720000, + "y": 246 + }, + { + "x": 1730544750000, + "y": 218 + }, + { + "x": 1730544780000, + "y": 214 + }, + { + "x": 1730544810000, + "y": 210 + }, + { + "x": 1730544840000, + "y": 228 + }, + { + "x": 1730544870000, + "y": 228 + }, + { + "x": 1730544900000, + "y": 224 + }, + { + "x": 1730544930000, + "y": 56 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "bfeu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "Enqueued", + "regex": ".*?Enqueued.*?", + "sample": "Enqueued", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Enqueued" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "oacl", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "ResponseReceived", + "regex": ".*?ResponseReceived.*?", + "sample": "ResponseReceived", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "ResponseReceived" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "hhud", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "Sent", + "regex": ".*?Sent.*?", + "sample": "Sent", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Sent" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ttbh", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4441, + "pattern": "info 0", + "regex": ".*?info.+?0.*?", + "sample": "info: cartservice.cartstore.ValkeyCartStore[0]\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "info: cartservice.cartstore.ValkeyCartStore[0]\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 117 + }, + { + "x": 1730543820000, + "y": 104 + }, + { + "x": 1730543850000, + "y": 146 + }, + { + "x": 1730543880000, + "y": 103 + }, + { + "x": 1730543910000, + "y": 86 + }, + { + "x": 1730543940000, + "y": 110 + }, + { + "x": 1730543970000, + "y": 97 + }, + { + "x": 1730544000000, + "y": 119 + }, + { + "x": 1730544030000, + "y": 120 + }, + { + "x": 1730544060000, + "y": 110 + }, + { + "x": 1730544090000, + "y": 116 + }, + { + "x": 1730544120000, + "y": 109 + }, + { + "x": 1730544150000, + "y": 124 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 109 + }, + { + "x": 1730544240000, + "y": 115 + }, + { + "x": 1730544270000, + "y": 113 + }, + { + "x": 1730544300000, + "y": 137 + }, + { + "x": 1730544330000, + "y": 114 + }, + { + "x": 1730544360000, + "y": 122 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 113 + }, + { + "x": 1730544450000, + "y": 114 + }, + { + "x": 1730544480000, + "y": 117 + }, + { + "x": 1730544510000, + "y": 116 + }, + { + "x": 1730544540000, + "y": 117 + }, + { + "x": 1730544570000, + "y": 121 + }, + { + "x": 1730544600000, + "y": 112 + }, + { + "x": 1730544630000, + "y": 123 + }, + { + "x": 1730544660000, + "y": 108 + }, + { + "x": 1730544690000, + "y": 129 + }, + { + "x": 1730544720000, + "y": 132 + }, + { + "x": 1730544750000, + "y": 111 + }, + { + "x": 1730544780000, + "y": 111 + }, + { + "x": 1730544810000, + "y": 108 + }, + { + "x": 1730544840000, + "y": 120 + }, + { + "x": 1730544870000, + "y": 118 + }, + { + "x": 1730544900000, + "y": 120 + }, + { + "x": 1730544930000, + "y": 73 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "eahn", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4152, + "pattern": "Fetch cart", + "regex": ".*?Fetch.+?cart.*?", + "sample": "Fetch cart", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Fetch cart" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 112 + }, + { + "x": 1730543820000, + "y": 94 + }, + { + "x": 1730543850000, + "y": 132 + }, + { + "x": 1730543880000, + "y": 100 + }, + { + "x": 1730543910000, + "y": 80 + }, + { + "x": 1730543940000, + "y": 97 + }, + { + "x": 1730543970000, + "y": 96 + }, + { + "x": 1730544000000, + "y": 113 + }, + { + "x": 1730544030000, + "y": 113 + }, + { + "x": 1730544060000, + "y": 105 + }, + { + "x": 1730544090000, + "y": 111 + }, + { + "x": 1730544120000, + "y": 104 + }, + { + "x": 1730544150000, + "y": 119 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 100 + }, + { + "x": 1730544240000, + "y": 110 + }, + { + "x": 1730544270000, + "y": 107 + }, + { + "x": 1730544300000, + "y": 123 + }, + { + "x": 1730544330000, + "y": 107 + }, + { + "x": 1730544360000, + "y": 112 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 109 + }, + { + "x": 1730544450000, + "y": 108 + }, + { + "x": 1730544480000, + "y": 111 + }, + { + "x": 1730544510000, + "y": 114 + }, + { + "x": 1730544540000, + "y": 114 + }, + { + "x": 1730544570000, + "y": 112 + }, + { + "x": 1730544600000, + "y": 107 + }, + { + "x": 1730544630000, + "y": 114 + }, + { + "x": 1730544660000, + "y": 105 + }, + { + "x": 1730544690000, + "y": 115 + }, + { + "x": 1730544720000, + "y": 119 + }, + { + "x": 1730544750000, + "y": 109 + }, + { + "x": 1730544780000, + "y": 106 + }, + { + "x": 1730544810000, + "y": 105 + }, + { + "x": 1730544840000, + "y": 113 + }, + { + "x": 1730544870000, + "y": 113 + }, + { + "x": 1730544900000, + "y": 109 + }, + { + "x": 1730544930000, + "y": 27 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "xpjx", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 602, + "pattern": "called with userId 11ef 8217 d64fba5f23b1", + "regex": ".*?called.+?with.+?userId.+?11ef.+?8217.+?d64fba5f23b1.*?", + "sample": "GetCartAsync called with userId=fb462b14-9908-11ef-8217-d64fba5f23b1", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=fb462b14-9908-11ef-8217-d64fba5f23b1" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.219Z", + "lastOccurrence": "2024-11-02T10:55:34.364Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 12 + }, + { + "x": 1730543820000, + "y": 26 + }, + { + "x": 1730543850000, + "y": 34 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 16 + }, + { + "x": 1730543940000, + "y": 30 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 14 + }, + { + "x": 1730544030000, + "y": 18 + }, + { + "x": 1730544060000, + "y": 12 + }, + { + "x": 1730544090000, + "y": 10 + }, + { + "x": 1730544120000, + "y": 12 + }, + { + "x": 1730544150000, + "y": 12 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 22 + }, + { + "x": 1730544240000, + "y": 12 + }, + { + "x": 1730544270000, + "y": 14 + }, + { + "x": 1730544300000, + "y": 36 + }, + { + "x": 1730544330000, + "y": 18 + }, + { + "x": 1730544360000, + "y": 24 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 10 + }, + { + "x": 1730544450000, + "y": 14 + }, + { + "x": 1730544480000, + "y": 14 + }, + { + "x": 1730544510000, + "y": 4 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 26 + }, + { + "x": 1730544600000, + "y": 14 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 8 + }, + { + "x": 1730544690000, + "y": 34 + }, + { + "x": 1730544720000, + "y": 34 + }, + { + "x": 1730544750000, + "y": 4 + }, + { + "x": 1730544780000, + "y": 12 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 16 + }, + { + "x": 1730544870000, + "y": 12 + }, + { + "x": 1730544900000, + "y": 28 + }, + { + "x": 1730544930000, + "y": 8 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ckdv", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 382, + "pattern": "AddItemAsync called with userId 11ef 8217 d64fba5f23b1 productId quantity", + "regex": ".*?AddItemAsync.+?called.+?with.+?userId.+?11ef.+?8217.+?d64fba5f23b1.+?productId.+?quantity.*?", + "sample": "AddItemAsync called with userId=fc4e8196-9908-11ef-8217-d64fba5f23b1, productId=1YMWWN1N4O, quantity=10", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "AddItemAsync called with userId=fc4e8196-9908-11ef-8217-d64fba5f23b1, productId=1YMWWN1N4O, quantity=10" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.216Z", + "lastOccurrence": "2024-11-02T10:55:34.363Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 8 + }, + { + "x": 1730543820000, + "y": 14 + }, + { + "x": 1730543850000, + "y": 22 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 8 + }, + { + "x": 1730543940000, + "y": 22 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 10 + }, + { + "x": 1730544030000, + "y": 10 + }, + { + "x": 1730544060000, + "y": 8 + }, + { + "x": 1730544090000, + "y": 10 + }, + { + "x": 1730544120000, + "y": 8 + }, + { + "x": 1730544150000, + "y": 8 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 14 + }, + { + "x": 1730544240000, + "y": 8 + }, + { + "x": 1730544270000, + "y": 10 + }, + { + "x": 1730544300000, + "y": 20 + }, + { + "x": 1730544330000, + "y": 10 + }, + { + "x": 1730544360000, + "y": 16 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 6 + }, + { + "x": 1730544450000, + "y": 10 + }, + { + "x": 1730544480000, + "y": 10 + }, + { + "x": 1730544510000, + "y": 4 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 10 + }, + { + "x": 1730544600000, + "y": 6 + }, + { + "x": 1730544630000, + "y": 14 + }, + { + "x": 1730544660000, + "y": 4 + }, + { + "x": 1730544690000, + "y": 22 + }, + { + "x": 1730544720000, + "y": 18 + }, + { + "x": 1730544750000, + "y": 4 + }, + { + "x": 1730544780000, + "y": 8 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 12 + }, + { + "x": 1730544870000, + "y": 8 + }, + { + "x": 1730544900000, + "y": 16 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "habq", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 216, + "pattern": "GetCartAsync called with userId", + "regex": ".*?GetCartAsync.+?called.+?with.+?userId.*?", + "sample": "GetCartAsync called with userId=", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=" + ] + }, + "firstOccurrence": "2024-11-02T10:36:36.912Z", + "lastOccurrence": "2024-11-02T10:55:33.022Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 10 + }, + { + "x": 1730543820000, + "y": 4 + }, + { + "x": 1730543850000, + "y": 6 + }, + { + "x": 1730543880000, + "y": 4 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 4 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 10 + }, + { + "x": 1730544030000, + "y": 10 + }, + { + "x": 1730544060000, + "y": 6 + }, + { + "x": 1730544090000, + "y": 2 + }, + { + "x": 1730544120000, + "y": 8 + }, + { + "x": 1730544150000, + "y": 8 + }, + { + "x": 1730544180000, + "y": 4 + }, + { + "x": 1730544210000, + "y": 6 + }, + { + "x": 1730544240000, + "y": 2 + }, + { + "x": 1730544270000, + "y": 4 + }, + { + "x": 1730544300000, + "y": 8 + }, + { + "x": 1730544330000, + "y": 4 + }, + { + "x": 1730544360000, + "y": 4 + }, + { + "x": 1730544390000, + "y": 2 + }, + { + "x": 1730544420000, + "y": 8 + }, + { + "x": 1730544450000, + "y": 4 + }, + { + "x": 1730544480000, + "y": 10 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 12 + }, + { + "x": 1730544570000, + "y": 8 + }, + { + "x": 1730544600000, + "y": 8 + }, + { + "x": 1730544630000, + "y": 6 + }, + { + "x": 1730544660000, + "y": 6 + }, + { + "x": 1730544690000, + "y": 2 + }, + { + "x": 1730544720000, + "y": 6 + }, + { + "x": 1730544750000, + "y": 6 + }, + { + "x": 1730544780000, + "y": 4 + }, + { + "x": 1730544810000, + "y": 2 + }, + { + "x": 1730544840000, + "y": 6 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 8 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "tzfi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 55, + "pattern": "Empty cart", + "regex": ".*?Empty.+?cart.*?", + "sample": "Empty cart", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Empty cart" + ] + }, + "firstOccurrence": "2024-11-02T10:36:41.806Z", + "lastOccurrence": "2024-11-02T10:55:32.654Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1 + }, + { + "x": 1730543820000, + "y": 3 + }, + { + "x": 1730543850000, + "y": 3 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 2 + }, + { + "x": 1730543940000, + "y": 2 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 1 + }, + { + "x": 1730544030000, + "y": 2 + }, + { + "x": 1730544060000, + "y": 1 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 1 + }, + { + "x": 1730544150000, + "y": 1 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 2 + }, + { + "x": 1730544240000, + "y": 1 + }, + { + "x": 1730544270000, + "y": 1 + }, + { + "x": 1730544300000, + "y": 4 + }, + { + "x": 1730544330000, + "y": 2 + }, + { + "x": 1730544360000, + "y": 2 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 1 + }, + { + "x": 1730544450000, + "y": 1 + }, + { + "x": 1730544480000, + "y": 1 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 4 + }, + { + "x": 1730544600000, + "y": 2 + }, + { + "x": 1730544630000, + "y": 2 + }, + { + "x": 1730544660000, + "y": 1 + }, + { + "x": 1730544690000, + "y": 3 + }, + { + "x": 1730544720000, + "y": 4 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 1 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 1 + }, + { + "x": 1730544870000, + "y": 1 + }, + { + "x": 1730544900000, + "y": 3 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ldwf", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 55, + "pattern": "feature_flag", + "regex": ".*?feature_flag.*?", + "sample": "feature_flag", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "feature_flag" + ] + }, + "firstOccurrence": "2024-11-02T10:36:41.809Z", + "lastOccurrence": "2024-11-02T10:55:32.655Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1 + }, + { + "x": 1730543820000, + "y": 3 + }, + { + "x": 1730543850000, + "y": 3 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 2 + }, + { + "x": 1730543940000, + "y": 2 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 1 + }, + { + "x": 1730544030000, + "y": 2 + }, + { + "x": 1730544060000, + "y": 1 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 1 + }, + { + "x": 1730544150000, + "y": 1 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 2 + }, + { + "x": 1730544240000, + "y": 1 + }, + { + "x": 1730544270000, + "y": 1 + }, + { + "x": 1730544300000, + "y": 4 + }, + { + "x": 1730544330000, + "y": 2 + }, + { + "x": 1730544360000, + "y": 2 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 1 + }, + { + "x": 1730544450000, + "y": 1 + }, + { + "x": 1730544480000, + "y": 1 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 4 + }, + { + "x": 1730544600000, + "y": 2 + }, + { + "x": 1730544630000, + "y": 2 + }, + { + "x": 1730544660000, + "y": 1 + }, + { + "x": 1730544690000, + "y": 3 + }, + { + "x": 1730544720000, + "y": 4 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 1 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 1 + }, + { + "x": 1730544870000, + "y": 1 + }, + { + "x": 1730544900000, + "y": 3 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "noer", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 2, + "pattern": "OTEL-SDK BatchActivityExportProcessor exporting to OtlpTraceExporter dropped items", + "regex": ".*?OTEL-SDK.+?BatchActivityExportProcessor.+?exporting.+?to.+?OtlpTraceExporter.+?dropped.+?items.*?", + "sample": "OTEL-SDK: [224] 'BatchActivityExportProcessor' exporting to 'OtlpTraceExporter' dropped '0' items.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] 'BatchActivityExportProcessor' exporting to 'OtlpTraceExporter' dropped '0' items." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.580Z", + "lastOccurrence": "2024-11-02T10:55:36.580Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "fiia", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1, + "pattern": "my-otel-demo-valkey open", + "regex": ".*?my-otel-demo-valkey.+?open.*?", + "sample": "my-otel-demo-valkey (10.106.38.244:6379) open\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "my-otel-demo-valkey (10.106.38.244:6379) open\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:34.993Z", + "lastOccurrence": "2024-11-02T10:55:34.993Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "uzyf", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 78, + "pattern": "OTEL-SDK Instrument Meter has been deactivated", + "regex": ".*?OTEL-SDK.+?Instrument.+?Meter.+?has.+?been.+?deactivated.*?", + "sample": "OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.585Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 78 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "lciw", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 4, + "pattern": "OTEL-SDK Disposed", + "regex": ".*?OTEL-SDK.+?Disposed.*?", + "sample": "OTEL-SDK: [224] 'MeterProvider' Disposed.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] 'MeterProvider' Disposed." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.581Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "woqa", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 3, + "pattern": "exiting", + "regex": ".*?exiting.*?", + "sample": "exiting...\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "exiting...\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:55.622Z", + "lastOccurrence": "2024-11-02T10:56:51.618Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 1 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ucuj", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 2, + "pattern": "Application is shutting down", + "regex": ".*?Application.+?is.+?shutting.+?down.*?", + "sample": "Application is shutting down...", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Application is shutting down..." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.560Z", + "lastOccurrence": "2024-11-02T10:55:36.560Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "cgip", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 3, + "pattern": "FATAL Could not start entrypoint", + "regex": ".*?FATAL.+?Could.+?not.+?start.+?entrypoint.*?", + "sample": "FATAL: Could not start, bad entrypoint!\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "FATAL: Could not start, bad entrypoint!\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:35.618Z", + "lastOccurrence": "2024-11-02T10:56:31.617Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 1 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 1.8274885276877215e-20, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "reqc", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [ + { + "field": "message", + "count": 26, + "pattern": "I1102 replica_set.go Finished syncing logger replicaset-controller kind ReplicaSet key duration", + "regex": ".*?I1102.+?replica_set\\.go.+?Finished.+?syncing.+?logger.+?replicaset-controller.+?kind.+?ReplicaSet.+?key.+?duration.*?", + "sample": "I1102 10:55:33.013871 1 replica_set.go:679] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice-7b585f4fb7\" duration=\"101.333µs\"\n", + "highlight": { + "body.text": [ + "] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice" + ], + "message": [ + "] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice" + ] + }, + "metadata": { + "service.name": [ + "kube-controller-manager" + ], + "message": [ + "I1102 10:55:33.013871 1 replica_set.go:679] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice-7b585f4fb7\" duration=\"101.333µs\"\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:33.014Z", + "lastOccurrence": "2024-11-02T10:56:52.568Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 19 + }, + { + "x": 1730544960000, + "y": 2 + }, + { + "x": 1730544990000, + "y": 5 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 7.313742705200763e-147, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "ofdx", + "relevance": "normal", + "interesting": true + }, + { + "field": "message", + "count": 21, + "pattern": "object apiVersion events.k8s.io/v1 deprecatedCount deprecatedFirstTimestamp deprecatedLastTimestamp deprecatedSource component eventTime null kind Event metadata creationTimestamp managedFields apiVersion v1 fieldsType FieldsV1 fieldsV1", + "regex": ".*?object.+?apiVersion.+?events\\.k8s\\.io/v1.+?deprecatedCount.+?deprecatedFirstTimestamp.+?deprecatedLastTimestamp.+?deprecatedSource.+?component.+?eventTime.+?null.+?kind.+?Event.+?metadata.+?creationTimestamp.+?managedFields.+?apiVersion.+?v1.+?fieldsType.+?FieldsV1.+?fieldsV1.*?", + "sample": "{\"object\":{\"apiVersion\":\"events.k8s.io/v1\",\"deprecatedCount\":2,\"deprecatedFirstTimestamp\":\"2024-11-02T10:56:17Z\",\"deprecatedLastTimestamp\":\"2024-11-02T10:56:52Z\",\"deprecatedSource\":{\"component\":\"kubelet\",\"host\":\"minikube\"},\"eventTime\":null,\"kind\":\"Event\",\"metadata\":{\"creationTimestamp\":\"2024-11-02T10:56:17Z\",\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:count\":{},\"f:firstTimestamp\":{},\"f:involvedObject\":{},\"f:lastTimestamp\":{},\"f:message\":{},\"f:reason\":{},\"f:reportingComponent\":{},\"f:reportingInstance\":{},\"f:source\":{\"f:component\":{},\"f:host\":{}},\"f:type\":{}},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz.1804217ce2cb3041\",\"namespace\":\"default\",\"resourceVersion\":\"375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":\"9580334a-7ef9-4ad5-baf6-0ad10ae49853\"},\"reportingController\":\"kubelet\",\"reportingInstance\":\"minikube\",\"type\":\"Warning\"},\"type\":\"MODIFIED\"}", + "highlight": { + "message": [ + "},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice", + "375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice", + "in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason", + "\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name", + "\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":" + ] + }, + "metadata": { + "service.name": [ + "unknown" + ], + "message": [ + "{\"object\":{\"apiVersion\":\"events.k8s.io/v1\",\"deprecatedCount\":2,\"deprecatedFirstTimestamp\":\"2024-11-02T10:56:17Z\",\"deprecatedLastTimestamp\":\"2024-11-02T10:56:52Z\",\"deprecatedSource\":{\"component\":\"kubelet\",\"host\":\"minikube\"},\"eventTime\":null,\"kind\":\"Event\",\"metadata\":{\"creationTimestamp\":\"2024-11-02T10:56:17Z\",\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:count\":{},\"f:firstTimestamp\":{},\"f:involvedObject\":{},\"f:lastTimestamp\":{},\"f:message\":{},\"f:reason\":{},\"f:reportingComponent\":{},\"f:reportingInstance\":{},\"f:source\":{\"f:component\":{},\"f:host\":{}},\"f:type\":{}},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz.1804217ce2cb3041\",\"namespace\":\"default\",\"resourceVersion\":\"375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":\"9580334a-7ef9-4ad5-baf6-0ad10ae49853\"},\"reportingController\":\"kubelet\",\"reportingInstance\":\"minikube\",\"type\":\"Warning\"},\"type\":\"MODIFIED\"}" + ] + }, + "firstOccurrence": "2024-11-02T10:55:33.051Z", + "lastOccurrence": "2024-11-02T10:56:52.563Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 16 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 4 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 2.9750218550484796e-168, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "lqan", + "relevance": "critical", + "interesting": true + } + ], + "searches": [ + { + "fragments": [ + "AddItemAsync called with userId", + "productId", + "quantity" + ], + "appearsAs": "userId, productId, and quantity are referenced in the request handling log entries in cartservice." + }, + { + "fragments": [ + "GetCartAsync called with userId" + ], + "appearsAs": "userId is referenced in the request handling log entries in cartservice." + }, + { + "fragments": [ + "Empty cart" + ], + "appearsAs": "Empty cart operation logs in cartservice." + }, + { + "fragments": [ + "cartServiceFailure" + ], + "appearsAs": "Feature flag 'cartServiceFailure' in cartservice." + }, + { + "fragments": [ + "10.244.0.61" + ], + "appearsAs": "IP address of the cartservice pod." + }, + { + "fragments": [ + "my-otel-demo-cartservice-67575c6f84-vngzw" + ], + "appearsAs": "Pod name of cartservice." + }, + { + "fragments": [ + "my-otel-demo-valkey:6379" + ], + "appearsAs": "Redis service used by cartservice." + }, + { + "fragments": [ + "/oteldemo.CartService/AddItem", + "/oteldemo.CartService/GetCart", + "/oteldemo.CartService/EmptyCart" + ], + "appearsAs": "Endpoints handled by cartservice." + }, + { + "fragments": [ + "flagd.evaluation.v1.Service" + ], + "appearsAs": "gRPC service involved in feature flag evaluation by cartservice." + }, + { + "fragments": [ + "HGET", + "EXPIRE", + "HMSET" + ], + "appearsAs": "Redis commands executed by cartservice." + } + ], + "relatedEntitiesSummaries": [ + "Based on the context provided, the following entities are potentially related to `service.name:cartservice` as either upstream or downstream dependencies. Below is a detailed analysis based on the indicators of relationships obtained from the observability data:\n\n### 1. Related Entity: `service.name:controller`\n- **Indicators**: \n - **Average Indicator**: The logs highlight high error rates (500 Internal Server Error) in the controller when POST requests to the `/api/cart` endpoint are made.\n - **Field values**: In controller logs, `message` contains references to the `/api/cart` endpoint, which is handled by `cartservice`.\n- **Reasoning**: \n - The `controller` service is responsible for managing /api/cart requests. Thus, it acts as a direct upstream service to `cartservice`.\n - It implies `controller` calls `cartservice` as part of handling requests, leading to the observed errors.\n- **Likeliness**: High\n - The `controller` service is likely a highly relevant entity since it directly interfaces with `cartservice`, with the errors surfacing in it when interacting with `cartservice`.\n\n### 2. Related Entity: `service.name:frontend`\n- **Indicators**:\n - **Strong Indicator**: The system architecture documentation shows that `frontend` interacts with various backend services, including those for user interactions such as adding items to the cart.\n - **Field values**: In the knowledge base, `frontend` receives HTTP traffic routed through `frontendproxy` and interacts with `cartservice`.\n- **Reasoning**:\n - `frontend` would act as a direct upstream service that communicates with `controller`, providing requests that eventually hit `cartservice`.\n- **Likeliness**: High\n - As `frontend` handles initial user interactions and routes requests to `cartservice`, it is essential in the request flow leading to `/api/cart` errors.\n\n### 3. Related Entity: `service.name:currencyservice`\n- **Indicators**:\n - **Strong Indicator**: The architecture description indicates `currencyservice` interacts with `cartservice` to handle currency conversions.\n - **Field values**: The entries show gRPC calls between `cartservice` and `currencyservice` for conversion operations.\n- **Reasoning**:\n - `currencyservice` may be an upstream dependency for `cartservice` for any currency-related manipulations on cart items.\n- **Likeliness**: Medium-High\n - While `currencyservice` interacts with `cartservice`, its exact influence on the direct issue might not be as strong as `controller` or `frontend`.\n\n### 4. Related Entity: `service.name:checkoutservice`\n- **Indicators**:\n - **Strong Indicator**: The architecture documentation lists `checkoutservice` as coordinating the checkout process involving interactions with `cartservice`.\n - **Field values**: Distributed tracing data could show `checkoutservice` making gRPC or HTTP calls to `cartservice`.\n- **Reasoning**:\n - `checkoutservice` is likely a downstream service that relies on the correct functioning of `cartservice` to gather cart data before proceeding to checkout operations.\n- **Likeliness**: Medium\n - Although primarily a downstream dependency, it processes important data from `cartservice`.\n\n### 5. Related Entity: `service.name:adservice`\n- **Indicators**:\n - **Weak Indicator**: `adservice` interfaces with `frontend` via gRPC to deliver ad content, it also might indirectly influence `cartservice` interactions if ads are part of the cart page.\n - **Field values**: Architectural details state `adservice` operates in the background to enhance user experience but no direct interaction with `cartservice`.\n- **Reasoning**:\n - While not directly connected, any latency in `adservice` may affect the overall user experience, causing indirect latency in calls that reach `cartservice`.\n- **Likeliness**: Low-Medium\n - Indirect connection and latent repercussions on user interactions with cart functionality.\n\n### 6. Related Entity: `service.name:loadgenerator`\n- **Indicators**:\n - **Average Indicator**: The `loadgenerator` service generates simulated traffic, handled by `frontendproxy` to stress-test services like `cartservice`.\n - **Field values**: Traffic from `loadgenerator` is routed through `frontendproxy` to reach core services, including `cartservice`.\n- **Reasoning**:\n - As an external input simulator, its traffic generation directly impacts `cartservice` when testing load resilience.\n- **Likeliness**: Medium\n - The errors can be a result of load tests conducted by `loadgenerator` surfacing bottlenecks in `cartservice`.\n\n### Summary\n\nTo conclude, the following entities are likely relevant to the issue in `service.name:cartservice`:\n\n1. **controller**: Direct upstream causing the 500 errors - High relevance.\n2. **frontend**: Upstream service initiating user interactions - High relevance.\n3. **currencyservice**: Upstream service for currency conversion - Medium-High relevance.\n4. **checkoutservice**: Downstream service relying on cart data - Medium relevance.\n5. **adservice**: Possible indirect impact due to latency - Low-Medium relevance.\n6. **loadgenerator**: Simulated traffic testing the system's resilience - Medium relevance.\n\nBy analyzing these entities, you can prioritize investigating `controller`, `frontend`, and `currencyservice` first, as they have the most direct and potentially impactful interactions with `cartservice`.", + "Based on the context provided, the architecture outlined in the knowledge base entry, the document analysis for the `cartservice`, and search keywords, several possible relationships with the `cartservice` can be identified. Below are the entities identified as highly relevant to the `cartservice`, along with the indicators, evidence, reasoning, and overall relevance.\n\n### 1. Entity: `service.name:frontend`\n\n#### Indicators and Evidence\n- **Average Indicator - URL Paths:**\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart`\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`\n- **Average Indicator - Logs:**\n - Observed in the search highlights for `service.name:frontend`: `@opentelemetry/api/build/src/api/context.js:60:46) at ServiceClientImpl.clientMethodTrace [as getCart]`\n- **Knowledge Base:**\n - The `frontend` is the core service for user interactions, receiving HTTP traffic and making requests to the `cartservice`.\n\n#### Relationship and Reasoning\nThe `frontend` service interacts directly with the `cartservice` by making requests to handle user shopping cart operations, such as adding items, retrieving the cart, and emptying the cart. Given the observed log entries and URL paths, it is reasonable to infer that the `frontend` service acts as a caller, while the `cartservice` acts as the callee. The high error rates observed in the context likely originate from the `frontend` making POST requests to the `/api/cart` endpoint handled by the `cartservice`.\n\n#### Likelihood of Relevance\n- **Very High:** The `frontend` service is highly likely to be relevant as it has a direct interaction with the `cartservice` and would be significantly impacted by any issues within the `cartservice`.\n\n### 2. Entity: `service.name:valkey`\n\n#### Indicators and Evidence\n- **Average Indicator - Redis Service:**\n - `my-otel-demo-valkey:6379`\n- **Average Indicator - Log Entries:**\n - Log patterns show Redis command execution by `cartservice`: `HGET`, `EXPIRE`, `HMSET`\n\n#### Relationship and Reasoning\nThe `valkey` service corresponds to the Redis instance that `cartservice` uses for data persistence. The `cartservice` makes frequent calls to Redis to perform operations such as fetching, expiring, and setting data, which is crucial for managing shopping cart state. As Redis is an upstream dependency, connection or data integrity issues here could directly contribute to the `500 Internal Server Errors` observed in the `cartservice`.\n\n#### Likelihood of Relevance\n- **High:** The `valkey` service is highly relevant because it is the data store for `cartservice`, directly affecting its behavior and performance.\n\n### 3. Entity: `service.name:currencyservice`\n\n#### Indicators and Evidence\n- **Average Indicator - gRPC Services:**\n - Mentioned in the architecture as handling currency conversions.\n- **Knowledge Base:**\n - Communicates with `cartservice` over gRPC to facilitate currency operations.\n\n#### Relationship and Reasoning\nThe `currencyservice` may interact with `cartservice` to handle price conversions for the items in the cart. Problems with currency conversion could cause unexpected data formats or communication failures, leading to `500 Internal Server Errors` in `cartservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** While the interaction exists, whether it directly contributes to the 500 errors specifically observed at `/api/cart` endpoints would require further investigation.\n\n### 4. Entity: `service.name:checkoutservice`\n\n#### Indicators and Evidence\n- **Strong Indicator - gRPC Services:**\n - Interacts with `checkoutservice` during the checkout process.\n- **Knowledge Base:**\n - Handles interactions including calls to `cartservice` for finalizing orders.\n\n#### Relationship and Reasoning\nThe `checkoutservice` could potentially depend on `cartservice` to validate and finalize items in the user's cart as part of the checkout process. If the `cartservice` fails during these operations, it could propagate errors back up to the user level through `checkoutservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** The relevance depends on whether the observed errors are occurring during checkout processes or general cart manipulations.\n\n### 5. Entity: `service.name:flagd`\n\n#### Indicators and Evidence\n- **Average Indicator - Feature Flag Evaluation:**\n - `flagd.evaluation.v1.Service`\n- **Log Metadata:**\n - `labels.feature_flag_key:keyword - cartServiceFailure`\n- **Trace Destination Service:**\n - `my-otel-demo-flagd:8013`\n\n#### Relationship and Reasoning\nThe `flagd` service is responsible for evaluating feature flags, such as the `cartServiceFailure`. If the feature flagging system is improperly toggled (e.g.: feature flag set to fail operations), it might contribute to the high error rates observed in `cartservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** The feature flags might be causing or amplifying existing issues within the `cartservice`.\n\n### Summary\nFrom the observed data, the following entities are highly likely to be related to `cartservice` with respect to the given context:\n\n1. **`frontend`** - High relevance due to direct HTTP interaction with `cartservice`.\n2. **`valkey`** - High relevance as the Redis data store for `cartservice`.\n\nEntities with moderate likelihood:\n\n1. **`currencyservice`** - Related via gRPC for currency operations.\n2. **`checkoutservice`** - Potentially related during checkout processes.\n3. **`flagd`** - Related to feature flag evaluations involving `cartservice`.\n\nThese relationships cover both upstream dependencies affecting `cartservice` and downstream services impacted by `cartservice` issues, aiding in comprehensive issue diagnosis." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 5 + } + ] + }, + "entity": { + "service.name": "cartservice" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "controller" + }, + "reason": "The controller service is responsible for managing /api/cart requests. Thus, it acts as a direct upstream service to cartservice. High errors were observed in the controller when interacting with cartservice.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The frontend service interacts directly with the controller, handling user interactions that lead to /api/cart requests which are eventually processed by cartservice.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "The currencyservice interacts with cartservice to handle currency conversions, acting as an upstream dependency for cartservice when performing currency-related operations on cart items.", + "confidence": "medium-high" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "The checkoutservice relies on cart data from cartservice during the checkout process, making it a downstream service dependent on the correct functioning of cartservice.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "loadgenerator" + }, + "reason": "The loadgenerator service generates simulated traffic which impacts cartservice directly when testing the system's resilience.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "adservice" + }, + "reason": "The adservice might indirectly impact cartservice through the frontend service by affecting the overall user experience and potentially causing indirect latency.", + "confidence": "low-medium" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service is highly likely to be relevant as it has a direct interaction with the `cartservice` and would be significantly impacted by any issues within the `cartservice`.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "valkey" + }, + "reason": "The `valkey` service is highly relevant because it is the data store for `cartservice`, directly affecting its behavior and performance.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "The `currencyservice` may interact with `cartservice` to handle price conversions for the items in the cart. Problems with currency conversion could cause unexpected data formats or communication failures, leading to `500 Internal Server Error` in `cartservice`.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "The `checkoutservice` could potentially depend on `cartservice` to validate and finalize items in the user's cart as part of the checkout process. If the `cartservice` fails during these operations, it could propagate errors back up to the user level through `checkoutservice`.", + "confidence": "moderate" + } + ], + "summary": "Based on the context provided, including the system architecture and data samples, the entity `service.name:cartservice` can be described as follows:\n\n### Infrastructure & Environment\n`cartservice` operates within a microservices-based architecture. It is containerized and runs within a Kubernetes environment. Specifically, the data sample indicates that the service is deployed in the `default` Kubernetes namespace and is running on a pod named `my-otel-demo-cartservice-67575c6f84-vngzw` with an IP address of `10.244.0.61`. The service environment is tagged as `opentelemetry-demo`, indicating the use of OpenTelemetry for observability purposes. The infrastructure includes a Redis cache used by the cart service for data persistence.\n\n### Communication Characteristics (Protocols and Endpoints)\n`cartservice` primarily communicates using gRPC. It handles shopping cart data including adding and removing items. The service interacts with Redis (as indicated by the `labels.db_redis_flags` attribute). Additionally, the service integrates with external feature flag providers as seen from the `feature_flag_key` and `feature_flag_provider_name` attributes, which suggests it evaluates feature flags, possibly targeting the feature key `cartServiceFailure`. \n\nThe communication endpoints and protocols from the sample data are:\n- gRPC methods: `/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`\n- HTTP endpoint: `http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`\n- Redis database interactions: `HGET`, `HMSET`, `EXPIRE` commands targeting various identifiers like `my-otel-demo-valkey:6379`.\n\n### Context of Entity in Investigation\nThe cart service (`cartservice`) is being investigated as it is the downstream service handling `/api/cart` requests. Issues in `cartservice` are directly contributing to the error patterns in the controller layer for the `/api/cart` endpoint. A high error rate, culminating in `500 Internal Server Error` responses, started around `2024-11-02T10:56:42.498Z`. The context indicates that the cart service plays a crucial role in managing shopping cart operations.\n\nGiven the observed high error rates and the 500 errors, `cartservice` may be experiencing issues in processing gRPC calls, feature flag evaluations, or Redis caching, which could be causing failures that propagate upstream to the controller.\n\n### Related Entities and Previous Investigations\nPreviously, errors in the controller for POST requests to `/api/cart` have been observed. This investigation is a continuation, focusing on the downstream `cartservice` which is responsible for handling these requests. This service's interaction with other entities such as Redis (for caching cart data) and external feature flag services (potentially toggling functionality) suggest that any issues in these integrations could impact the `cartservice` performance and result in the observed errors upstream in the controller.\n\nThis detailed analysis moves us to further inspect specific logs, traces, and any interdependent service metrics that may provide clues about the root cause of the high error rate in `cartservice`.\n\n### Observations for service.name:cartservice\n\n#### Startup Messages\n1. **Pattern: \"OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.\"**\n - **Count:** 78\n - **Trend:** There was a spike at **2024-11-02T10:55:30.000Z** with 78 occurrences. Before this timestamp, the value was consistently 0.\n\n2. **Pattern: \"OTEL-SDK: [224] 'MeterProvider' Disposed.\"**\n - **Count:** 4\n - **Trend:** Occurrences were persistently recorded as 0 until a brief spike at **2024-11-02T10:55:30.000Z** with 4 instances.\n\n3. **Pattern: \"exiting...\"**\n - **Count:** 3\n - **Trend:** Consistently 0 until a minor rise at **2024-11-02T10:55:30.000Z**, with 3 instances recorded.\n\n4. **Pattern: \"Application is shutting down...\"**\n - **Count:** 2\n - **Trend:** Log entries were consistently at 0 with a brief spike at **2024-11-02T10:55:30.000Z** showing 2 instances.\n\n#### Fatal Errors\n5. **Pattern: \"FATAL: Could not start, bad entrypoint!\"**\n - **Count:** 3\n - **Trend:** This pattern shows a significant change at **2024-11-02T10:55:30.000Z** with 2 occurrences at the change point and one additional at **2024-11-02T10:56:30.000Z**. Before this period, the occurrence rate was consistently 0.\n\n### Conclusion\n\nThe patterns observed indicate that there were significant startup issues with the `cartservice` around the **2024-11-02T10:55:30.000Z** mark. Specifically, the `cartservice` encountered a fatal error (\"FATAL: Could not start, bad entrypoint!\") that aligns precisely with the rise in errors noted during this period. This error indicates that the service failed to start due to a misconfiguration or issues with the entry point. This corresponds with the sudden spike in errors and `500 Internal Server Error` responses observed in the downstream controller making POST requests to the `/api/cart` endpoint. Furthermore, logs related to the service's deactivation and shutdown support the perspective that the service was not running successfully or consistently after this time.\n\n### Timeline of significant events\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.”\n - **Description**: Spike detected with 78 occurrences, suggesting a potential issue within the service's runtime environment.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “OTEL-SDK: [224] 'MeterProvider' Disposed.”\n - **Description**: Sudden spike of 4 occurrences suggesting a significant change in the service’s telemetry setup or a potential abnormal shutdown initiation.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “exiting...”\n - **Description**: Log entries rose to 3 incidences, signaling the cart service may be initiating an unexpected exit.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “Application is shutting down...”\n - **Description**: 2 instances of this log message indicating the application is attempting to shut down around this time.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “FATAL: Could not start, bad entrypoint!”\n - **Description**: Abrupt fatal error occurs 2 times, implying a critical misconfiguration or startup failure.\n\n- **2024-11-02T10:56:30.000Z**: \n - **Log Message**: “FATAL: Could not start, bad entrypoint!”\n - **Description**: Another occurrence of the critical fatal error, indicating the issue persisted beyond the initial spike and may have contributed to continued disruptions.\n\n- **2024-11-02T10:56:42.498Z**: \n - **Alert**: High error rate observed in the controller (98.78% error rate for POST requests to /api/cart).\n - **Description**: Starts the period of significantly high error rates contributing to 500 Internal Server Error responses. \n\n### Context and reasoning\n\nGiven the high error rate (98.78%) starting from **2024-11-02T10:56:42.498Z** for POST requests to `/api/cart`, the `cartservice` is a critical component for investigation as it handles these requests directly. From logs, there is a clear indication that significant problems began around **2024-11-02T10:55:30.000Z**, approximately one minute before the heightened error rate was observed in the upstream controller.\n\n**1. Startup Issues**: Multiple startup-related log patterns such as instruments deactivation, disposal of the MeterProvider, and application exit/shutdown messages indicate that cartservice experienced troubles initializing. Notably, the log entries “FATAL: Could not start, bad entrypoint!” directly show critical failures in service entry points likely causing the downstream failures.\n\n**2. Fatal Errors**: The fatal errors precisely correlate with the timeframe where errors spiked in the upstream service (controller). The error messages “FATAL: Could not start, bad entrypoint!” occurring multiple times reflect a misconfiguration or critical code issue that prevented the service from running properly.\n\nThus, the evidence from log patterns strongly suggests that startup and initialization problems in `cartservice`, resulting in its inconsistent availability and operational failures, is the root cause of the observed high error rates and 500 Internal Server Errors in the controller's POST requests to `/api/cart`." + }, + { + "attachments": { + "alerts": [], + "slos": [], + "analysis": { + "total": 98017, + "sampled": 1000, + "fields": [ + "@timestamp:date - 327 distinct values", + "app.label.component:keyword - 1 distinct values (`frontend`)", + "attributes.log.file.path.text:text - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "attributes.log.file.path:keyword - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "attributes.log.iostream:keyword - 1 distinct values (`stderr`)", + "body.text:text - 36 distinct values (` code: 13,\n`, ` details: 'cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"',\n`, 34 more values)", + "data_stream.dataset:keyword - 1 distinct values (`generic.otel`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`logs`)", + "deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "dropped_attributes_count:long - 1 distinct values (`0`)", + "event.dataset:keyword - 1 distinct values (`generic.otel`)", + "host.arch:keyword - 1 distinct values (`arm64`)", + "host.architecture:keyword - 1 distinct values (`arm64`)", + "host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "host.cpu.family:keyword - 1 distinct values (``)", + "host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "host.cpu.model.name:keyword - 1 distinct values (``)", + "host.cpu.stepping:keyword - 1 distinct values (`0`)", + "host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "host.os.full:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "host.os.platform:keyword - 1 distinct values (`linux`)", + "k8s.container.name:keyword - 1 distinct values (`frontend`)", + "k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "k8s.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "k8s.namespace.name:keyword - 1 distinct values (`default`)", + "k8s.node.name:keyword - 1 distinct values (`minikube`)", + "k8s.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T09:00:25Z`)", + "k8s.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "kubernetes.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "kubernetes.namespace:keyword - 1 distinct values (`default`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "log.file.path:keyword - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "log.iostream:keyword - 1 distinct values (`stderr`)", + "message:text - 36 distinct values (` code: 13,\n`, ` details: 'cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"',\n`, 34 more values)", + "observed_timestamp:date_nanos - 1000 distinct values (`2024-11-02T10:56:50.564274379Z`, `2024-11-02T10:55:46.563453752Z`, `2024-11-02T10:56:52.76272763Z`, `2024-11-02T10:56:14.764728626Z`, `2024-11-02T10:55:51.964080879Z`, `2024-11-02T10:55:51.764216463Z`, `2024-11-02T10:56:50.564063629Z`, `2024-11-02T10:55:38.563141804Z`, `2024-11-02T10:55:53.963540672Z`, `2024-11-02T10:56:32.762493176Z`, 990 more values)", + "os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.app.label.component:keyword - 1 distinct values (`frontend`)", + "resource.attributes.deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "resource.attributes.host.arch:keyword - 1 distinct values (`arm64`)", + "resource.attributes.host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "resource.attributes.host.cpu.family:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "resource.attributes.host.cpu.model.name.text:text - 1 distinct values (``)", + "resource.attributes.host.cpu.model.name:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.stepping:keyword - 1 distinct values (`0`)", + "resource.attributes.host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "resource.attributes.host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "resource.attributes.host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "resource.attributes.host.name:keyword - 1 distinct values (`otel-daemonset-opentelemetry-collector-agent-7jlpk`)", + "resource.attributes.k8s.container.name.text:text - 1 distinct values (`frontend`)", + "resource.attributes.k8s.container.name:keyword - 1 distinct values (`frontend`)", + "resource.attributes.k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "resource.attributes.k8s.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "resource.attributes.k8s.namespace.name:keyword - 1 distinct values (`default`)", + "resource.attributes.k8s.node.name:keyword - 1 distinct values (`minikube`)", + "resource.attributes.k8s.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "resource.attributes.k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T09:00:25Z`)", + "resource.attributes.k8s.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "resource.attributes.os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "resource.attributes.os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.service.name.text:text - 1 distinct values (`frontend`)", + "resource.attributes.service.name:keyword - 1 distinct values (`frontend`)", + "resource.dropped_attributes_count:long - 1 distinct values (`0`)", + "resource.schema_url:keyword - 1 distinct values (`https://opentelemetry.io/schemas/1.6.1`)", + "scope.dropped_attributes_count:long - 1 distinct values (`0`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.name:keyword - 1 distinct values (`frontend`)", + "severity_number:byte - 1 distinct values (`0`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 3756, + "pattern": "at", + "regex": ".*?at.*?", + "sample": " at /app/.next/server/pages/api/cart.js:1:1025\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at /app/.next/server/pages/api/cart.js:1:1025\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1103 + }, + { + "x": 1730544960000, + "y": 1411 + }, + { + "x": 1730544990000, + "y": 1242 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "qlqu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 2366, + "pattern": "at app node_modules grpc grpc js build src", + "regex": ".*?at.+?app.+?node_modules.+?grpc.+?grpc.+?js.+?build.+?src.*?", + "sample": " at Object.onReceiveStatus (/app/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:141)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at Object.onReceiveStatus (/app/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:141)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 693 + }, + { + "x": 1730544960000, + "y": 896 + }, + { + "x": 1730544990000, + "y": 777 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "roms", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1014, + "pattern": "at app node_modules opentelemetry instrumentation grpc build src", + "regex": ".*?at.+?app.+?node_modules.+?opentelemetry.+?instrumentation.+?grpc.+?build.+?src.*?", + "sample": " at ServiceClientImpl.clientMethodTrace [as getCart] (/app/node_modules/@opentelemetry/instrumentation-grpc/build/src/instrumentation.js:211:42)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl.clientMethodTrace [as getCart] (/app/node_modules/@opentelemetry/instrumentation-grpc/build/src/instrumentation.js:211:42)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 297 + }, + { + "x": 1730544960000, + "y": 384 + }, + { + "x": 1730544990000, + "y": 333 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "eyqk", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 351, + "pattern": "at node:internal process task_queues", + "regex": ".*?at.+?node:internal.+?process.+?task_queues.*?", + "sample": " at process.processTicksAndRejections (node:internal/process/task_queues:77:11)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at process.processTicksAndRejections (node:internal/process/task_queues:77:11)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 104 + }, + { + "x": 1730544960000, + "y": 129 + }, + { + "x": 1730544990000, + "y": 118 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "mpyi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at AsyncLocalStorage.run node:async_hooks 346 14", + "regex": ".*?at.+?AsyncLocalStorage\\.run.+?node:async_hooks.+?346.+?14.*?", + "sample": " at AsyncLocalStorage.run (node:async_hooks:346:14)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at AsyncLocalStorage.run (node:async_hooks:346:14)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jsoq", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at AsyncLocalStorageContextManager.with app node_modules opentelemetry context async hooks build src AsyncLocalStorageContextManager.js 33 40", + "regex": ".*?at.+?AsyncLocalStorageContextManager\\.with.+?app.+?node_modules.+?opentelemetry.+?context.+?async.+?hooks.+?build.+?src.+?AsyncLocalStorageContextManager\\.js.+?33.+?40.*?", + "sample": " at AsyncLocalStorageContextManager.with (/app/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at AsyncLocalStorageContextManager.with (/app/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "viwd", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ContextAPI.with app node_modules opentelemetry api build src api context.js 60 46", + "regex": ".*?at.+?ContextAPI\\.with.+?app.+?node_modules.+?opentelemetry.+?api.+?build.+?src.+?api.+?context\\.js.+?60.+?46.*?", + "sample": " at ContextAPI.with (/app/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ContextAPI.with (/app/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "agsa", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at new ZoneAwarePromise app node_modules zone.js bundles zone.umd.js 1340 33", + "regex": ".*?at.+?new.+?ZoneAwarePromise.+?app.+?node_modules.+?zone\\.js.+?bundles.+?zone\\.umd\\.js.+?1340.+?33.*?", + "sample": " at new ZoneAwarePromise (/app/node_modules/zone.js/bundles/zone.umd.js:1340:33) {\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at new ZoneAwarePromise (/app/node_modules/zone.js/bundles/zone.umd.js:1340:33) {\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "dhes", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "code", + "regex": ".*?code.*?", + "sample": " code: 14,\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " code: 14,\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "feod", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "for call at", + "regex": ".*?for.+?call.+?at.*?", + "sample": "for call at\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + "for call at\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "enzg", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ServiceClientImpl anonymous /app/node_modules/@grpc/grpc-js/build/src/make-client.js", + "regex": ".*?at.+?ServiceClientImpl.+?anonymous.+?/app/node_modules/@grpc/grpc-js/build/src/make-client\\.js.*?", + "sample": " at ServiceClientImpl. (/app/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl. (/app/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "iook", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ServiceClientImpl.makeUnaryRequest /app/node_modules/@grpc/grpc-js/build/src/client.js", + "regex": ".*?at.+?ServiceClientImpl\\.makeUnaryRequest.+?/app/node_modules/@grpc/grpc-js/build/src/client\\.js.*?", + "sample": " at ServiceClientImpl.makeUnaryRequest (/app/node_modules/@grpc/grpc-js/build/src/client.js:161:32)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl.makeUnaryRequest (/app/node_modules/@grpc/grpc-js/build/src/client.js:161:32)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jvlx", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 335, + "pattern": "metadata Metadata internalRepr Map 0 options", + "regex": ".*?metadata.+?Metadata.+?internalRepr.+?Map.+?0.+?options.*?", + "sample": " metadata: Metadata { internalRepr: Map(0) {}, options: {} }\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " metadata: Metadata { internalRepr: Map(0) {}, options: {} }\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 97 + }, + { + "x": 1730544960000, + "y": 127 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "wczz", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "internalRepr Map content-type Array", + "regex": ".*?internalRepr.+?Map.+?content-type.+?Array.*?", + "sample": " internalRepr: Map(1) { 'content-type' => [Array] },\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " internalRepr: Map(1) { 'content-type' => [Array] },\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "pcyb", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "metadata Metadata", + "regex": ".*?metadata.+?Metadata.*?", + "sample": " metadata: Metadata {\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " metadata: Metadata {\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "tcak", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "options", + "regex": ".*?options.*?", + "sample": " options: {}\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " options: {}\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "xbsw", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1005, + "pattern": "No connection established Last error connect ECONNREFUSED 10.110.191.164 8080 2024 11 02T10", + "regex": ".*?No.+?connection.+?established.+?Last.+?error.+?connect.+?ECONNREFUSED.+?10\\.110\\.191\\.164.+?8080.+?2024.+?11.+?02T10.*?", + "sample": "14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)", + "highlight": { + "service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + "14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.676Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 291 + }, + { + "x": 1730544960000, + "y": 381 + }, + { + "x": 1730544990000, + "y": 333 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "pssf", + "relevance": "critical", + "interesting": true + }, + { + "field": "error.exception.message", + "count": 3, + "pattern": "INTERNAL cart failure failed to get user cart during checkout rpc error code Unavailable desc connection error desc transport Error while dialing dial tcp connect connection refused", + "regex": ".*?INTERNAL.+?cart.+?failure.+?failed.+?to.+?get.+?user.+?cart.+?during.+?checkout.+?rpc.+?error.+?code.+?Unavailable.+?desc.+?connection.+?error.+?desc.+?transport.+?Error.+?while.+?dialing.+?dial.+?tcp.+?connect.+?connection.+?refused.*?", + "sample": "13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"", + "highlight": { + "service.name": [ + "frontend" + ] + }, + "metadata": { + "error.exception.message": [ + "13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.038Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "crai", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [ + { + "field": "message", + "count": 246, + "pattern": "INFO 10.244.0.26 AAAA IN my otel demo frontend udp 39 false 512 NXDOMAIN qr rd ra 39", + "regex": ".*?INFO.+?10\\.244\\.0\\.26.+?AAAA.+?IN.+?my.+?otel.+?demo.+?frontend.+?udp.+?39.+?false.+?512.+?NXDOMAIN.+?qr.+?rd.+?ra.+?39.*?", + "sample": "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\n", + "highlight": { + "body.text": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra" + ], + "message": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra" + ] + }, + "metadata": { + "service.name": [ + "coredns" + ], + "message": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.917Z", + "lastOccurrence": "2024-11-02T10:56:58.646Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 6 + }, + { + "x": 1730543820000, + "y": 6 + }, + { + "x": 1730543850000, + "y": 6 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 6 + }, + { + "x": 1730543970000, + "y": 6 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 6 + }, + { + "x": 1730544060000, + "y": 6 + }, + { + "x": 1730544090000, + "y": 6 + }, + { + "x": 1730544120000, + "y": 6 + }, + { + "x": 1730544150000, + "y": 6 + }, + { + "x": 1730544180000, + "y": 6 + }, + { + "x": 1730544210000, + "y": 6 + }, + { + "x": 1730544240000, + "y": 6 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 6 + }, + { + "x": 1730544330000, + "y": 6 + }, + { + "x": 1730544360000, + "y": 6 + }, + { + "x": 1730544390000, + "y": 6 + }, + { + "x": 1730544420000, + "y": 6 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 6 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 6 + }, + { + "x": 1730544600000, + "y": 6 + }, + { + "x": 1730544630000, + "y": 6 + }, + { + "x": 1730544660000, + "y": 6 + }, + { + "x": 1730544690000, + "y": 6 + }, + { + "x": 1730544720000, + "y": 6 + }, + { + "x": 1730544750000, + "y": 6 + }, + { + "x": 1730544780000, + "y": 6 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 6 + }, + { + "x": 1730544870000, + "y": 6 + }, + { + "x": 1730544900000, + "y": 6 + }, + { + "x": 1730544930000, + "y": 6 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 6 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "rlzf", + "relevance": "normal", + "interesting": false + } + ], + "searches": [ + { + "fragments": [ + "10.110.191.164:8080", + "10.110.191.164", + "8080" + ], + "appearsAs": "This IP address and port are referenced in the investigated entity 'frontend'." + }, + { + "fragments": [ + "/api/cart", + "cartservice", + "/api" + ], + "appearsAs": "These URL fragments appear as attributes.request.url in the investigated entity 'frontend'. They could be related to 'cartservice'." + }, + { + "fragments": [ + "000aa", + "000bbb" + ], + "appearsAs": "These ids appear as span.id and parent.id in the investigated entity 'frontend'. They could be referring to spans found on upstream or downstream services" + } + ], + "relatedEntitiesSummaries": [ + "## Possible Relationships to `service.name:frontend`\n\n### 1. Entity: `service.name:controller`\n- **Indicators:**\n - #### Average Indicator:\n - **IP Address and Port:**\n - `frontend`: `10.110.191.164:8080`\n - `controller`: `10.244.0.26:8080`\n - **URL Fragment:**\n - `frontend`: `/api/cart`\n - `controller`: `/api/cart?session`\n- **Relationship Reasoning:**\n - The `controller` service is highly likely to be making requests to, or routing through, the `frontend` service as evidenced by the URL fragments referring to the `/api/cart` endpoint seen in both entities. Additionally, they share common IP address and port patterns indicating network interaction.\n- **Relevance Assessment:**\n - **Very High**: Given that the `controller` service handles endpoints like `/api/cart`, which directly correspond to transactions failing with a high error rate, this entity is a critical part of the interaction chain and should be closely examined.\n\n### 2. Entity: `service.name:cartservice`\n- **Indicators:**\n - #### Strong Indicator:\n - **Direct Call References:**\n - `frontend`: `details: 'cart failure: failed to get user cart during checkout: rpc error: ... desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"'\n - `cartservice`: `url.full.text:\"http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart\"`\n- **Relationship Reasoning:**\n - The `frontend` service attempts to interact with the `cartservice` as observed by the endpoint `/oteldemo.CartService/GetCart`. Connection errors from `frontend` indicate it is calling `cartservice` and facing issues getting responses, potentially causing the 500 errors.\n- **Relevance Assessment:**\n - **Very High**: Since `cartservice` manages user cart data and the connection errors reported in `frontend` logs directly correspond to attempts to communicate with `cartservice`, this entity is a probable cause of the service failures being observed.\n\n### 3. Entity: `service.name:frontend-web`\n- **Indicators:**\n - #### Average Indicator:\n - **URL Fragment:**\n - `frontend`: `/api/cart`\n - `frontend-web`: `/api/cart`\n - #### Weak Indicator:\n - **RUM Layer Mentions:**\n - `frontend`: `frontend-web (RUM)`\n - `frontend-web`: Described in System Architecture.\n- **Relationship Reasoning:**\n - `frontend-web` captures real user interactions with the `/api/cart` endpoint providing insights into the `frontend` service which might help trace the errors and delays externally perceived by users.\n- **Relevance Assessment:**\n - **Moderate**: While `frontend-web` can show the surface errors users are experiencing, it is more of an observability layer rather than directly causing the 500 errors or impacting the service interactions upstream.\n\n### 4. Entity: `service.name:frontendproxy`\n- **Indicators:**\n - #### Average Indicator:\n - **Network Routing Indicator:**\n - `frontend`: Receives traffic from `frontendproxy`\n - `frontendproxy`: Directs traffic to `frontend`\n - #### IP Address Mention:\n - Both services reference `8080`, indicating shared routing or proxying.\n- **Relationship Reasoning:**\n - `frontendproxy` routes traffic from external sources, including simulated user requests, to `frontend`. Any issues in this proxy layer could impact the incoming traffic to `frontend`, causing errors.\n- **Relevance Assessment:**\n - **High**: Considering `frontendproxy` handles traffic routing, any misconfiguration or failures here could lead to the issues observed on the `frontend`.\n\n### 5. Entity: `service.name:coredns`\n- **Indicators:**\n - #### Weak Indicators:\n - **DNS Resolution Events:**\n - Logs showing DNS queries involving `frontend`.\n - **IP Address and Port:**\n - Shared network interactions over common ports like `8080`.\n- **Relationship Reasoning:**\n - While not directly related to application logic, `coredns` is responsible for DNS resolution within the cluster, and issues here could result in connectivity problems seen in `frontend` when trying to reach `cartservice`.\n- **Relevance Assessment:**\n - **Moderate**: While less likely to be the root cause, DNS misconfigurations or failures could indirectly contribute to connectivity issues within services like `frontend`.\n\n### Summary\n\n1. **service.name:controller** - Very High relevance due to direct endpoint interaction.\n2. **service.name:cartservice** - Very High relevance for being the direct interaction target with observed failures.\n3. **service.name:frontend-web** - Moderate relevance in monitoring layer but not direct interaction.\n4. **service.name:frontendproxy** - High relevance for routing traffic to `frontend`.\n5. **service.name:coredns** - Moderate relevance for possible DNS resolution issues." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 5 + } + ] + }, + "entity": { + "service.name": "frontend" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "controller" + }, + "reason": "`controller` service handles endpoints like `/api/cart`, which corresponds to failed transactions. They share common IP address and port patterns, indicating network interaction.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "`frontend` service attempts to interact with `cartservice`. Connection errors from `frontend` indicate it is calling `cartservice` and facing issues getting responses, potentially causing the 500 errors.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "frontend-web" + }, + "reason": "`frontend-web` captures real user interactions with the `/api/cart` endpoint. Helps trace the errors and delays externally perceived by users.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "coredns" + }, + "reason": "`coredns` is responsible for DNS resolution within the cluster and issues here could result in connectivity problems seen in `frontend`.", + "confidence": "moderate" + } + ], + "summary": "### Investigation of Entity `service.name:frontend`\n\n#### Context of Investigation\n\nThe `frontend` service is critical in this investigation due to its role in the overall request handling and the observed high error rate (98.78%) in the `controller` service for POST requests to the `/api/cart` endpoint. This issue began at `2024-11-02T10:56:42.498Z`. The `frontend` service routes requests to `cartservice`, a key interaction in this error occurrence.\n\n#### Infrastructure & Environment\n\n- **Environment**: The `frontend` operates within the `opentelemetry-demo` deployment environment.\n- **Deployment**: It is deployed on Kubernetes (k8s), specifically within the `default` namespace. \n- **Pod Information**: The pod name is `my-otel-demo-frontend-5bbf4d78bc-qtwdr`, on the `minikube` node. Each pod has a unique UID (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`), with logs stored at `/var/log/pods/`.\n- **Resource Attributes**: Hosts `Apple` Arm64 architecture processor (`host.cpu.vendor.id: Apple`), running `Ubuntu 24.04.1 LTS (Noble Numbat)`, indicating a Linux-based system.\n\n#### Communication Characteristics \n\n- **Protocols**: \n - The `frontend` service communicates primarily using HTTP for inbound requests and gRPC for backend service interactions. \n - gRPC is specifically used when the `frontend` communicates with `cartservice`, highlighted by recorded RPC errors in the logs.\n- **Endpoints**:\n - The `frontend` gets requests from `frontendproxy` (Envoy), acting as the reverse proxy.\n - The service then routes these requests to different backend services, including `cartservice`, via gRPC.\n - The critical IP noted in logs is `10.110.191.164:8080`, pointing to a potential endpoint for the `cartservice`.\n\n#### Context of Entity in Investigation\n\n- **Reason for Investigation**: The `frontend` service is under scrutiny due to its pivotal role in processing and routing incoming user requests. Any disruption in its communication or processing mechanism directly affects the functionality of connected services, notably `cartservice`, leading to high error rates observed in the `controller`.\n- **Relation to Other Entities**:\n - **Previous Entity**: `controller` - The `controller` service logs indicate a high number of 500 errors were triggered during POST requests to `/api/cart`.\n - **Dependencies**: `frontend` relies on successful communication with `cartservice` to fulfill these cart-related requests.\n- **Architectural Role**: The `frontend` is the nucleus for user interactions within this microservices architecture. Any network or communication issue in `frontend` can cascade, influencing its backend dependencies like `cartservice` and leading to broader service disruptions.\n\nThis comprehensive analysis of the `frontend` service’s infrastructure, communication protocols, and its investigative context emphasizes its critical position in the service chain responsible for the reported errors. Further scrutiny of the communication logs, particularly focusing on the gRPC interactions with `cartservice`, is essential to identify and mitigate the root cause of these failures.\n\nObservations for service `frontend`.\n\n### Connection Issues to Upstream Dependency\n\n1. **Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Sample**: \"14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)\"\n - **Timeseries Observations**: \n - No occurrences before 2024-11-02T10:55:30.000Z.\n - Sharp increase at 2024-11-02T10:55:30.000Z (291 occurrences).\n - Further increase at 2024-11-02T10:56:00.000Z (381 occurrences).\n - Next timestamp at 2024-11-02T10:57:00.000Z showing a return to 0 occurrences.\n\n2. **Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"\n - **Sample**: \"13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"\n - **Timeseries Observations**:\n - No occurrences before 2024-11-02T10:55:30.000Z.\n - Slight increase at 2024-11-02T10:55:30.000Z (2 occurrences).\n - One more occurrence at 2024-11-02T10:56:00.000Z (1 occurrence).\n - No occurrences after 2024-11-02T10:56:30.000Z.\n\nThe significant spike in connection errors starting from 2024-11-02T10:55:30.000Z aligns with the high error rate in the `controller` service, suggesting a strong correlation between these established connection issues in the `frontend` service and the 500 errors seen in the `controller` service for POST requests to the `/api/cart` endpoint around the same time.\n\n### Possibly Relevant Log Patterns from coredns\n\n1. **Pattern**: \"INFO 10.244.0.26 AAAA IN my-otel-demo-frontend udp 39 false 512 NXDOMAIN qr,rd,ra 39\"\n - **Sample**: \"[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\"\n - **Timeseries Observations**:\n - Frequent steady occurrences of 6 events every 30 seconds.\n - No notable changes or spikes coinciding with the connection issues observed in the `frontend` service.\n\nFrom these observations, it appears that the connection refusal errors in the `frontend` service are likely caused by issues in communication with the `cartservice`, potentially as a result of intermittent network disruptions or dependency service failures at the IP 10.110.191.164. Further investigation should focus on the health and connectivity status of the `cartservice` around the specified time period.\n\n### Timeline of Significant Events\n\n1. **2024-11-02T10:55:30.000Z**\n - **Event**: Sharp increase in connection error logs.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 291 occurrences reported.\n\n2. **2024-11-02T10:55:30.000Z**\n - **Event**: Appearance of an internal error in accessing cart services.\n - **Log Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error\"\n - **Details**: 2 occurrences reported.\n\n3. **2024-11-02T10:56:00.000Z**\n - **Event**: Further increase in connection error logs.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 381 occurrences reported.\n\n4. **2024-11-02T10:56:00.000Z**\n - **Event**: Additional occurrence of an internal error in accessing cart services.\n - **Log Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error\"\n - **Details**: 1 occurrence reported.\n\n5. **2024-11-02T10:56:42.498Z**\n - **Event**: High error rate (98.78%) in the `controller` service for POST requests to the `/api/cart` endpoint begins.\n - **Details**: Corresponds to the timing of observed spikes in connection errors in the `frontend` service.\n\n6. **2024-11-02T10:57:00.000Z**\n - **Event**: Connection error logs return to zero occurrences.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 0 occurrences reported.\n\n### Context and Reasoning\n\nThe `frontend` service is critical in this investigation due to its role in routing requests to the `cartservice`. The high error rates observed in the `controller` service's POST requests to the `/api/cart` endpoint started precisely at 2024-11-02T10:56:42.498Z, which is within the timeframe when the `frontend` service experienced significant connection issues with the `cartservice`.\n\nUpon analyzing log patterns, it is evident that the communication disruptions between the `frontend` service and the `cartservice` began at 2024-11-02T10:55:30.000Z with a sharp increase in connection errors, and these errors persisted until approximately 2024-11-02T10:57:00.000Z. During this period, numerous `ECONNREFUSED` errors were logged, indicating the `frontend` service's inability to establish a connection to the `cartservice` (IP 10.110.191.164:8080). This aligns with the timeline of the high error rates in the `controller` service, suggesting a direct correlation.\n\nFurthermore, the internal errors logged by the `frontend` service related to RPC errors and failed attempts to get the user cart during checkout reaffirm these connection problems. These errors underscore an impaired communication pathway to the `cartservice`, affecting the `controller` service's ability to process POST requests to the `/api/cart` endpoint.\n\nTherefore, the evidence strongly indicates that network or connection failures between the `frontend` service and its upstream dependency, `cartservice`, are the principal cause of the cascading 500 errors seen in the `controller` service. This highlights the critical position of the `frontend` service in ensuring stable communication pathways within the microservice architecture." + } + ] + }, + "role": "tool", + "toolCallId": "call_KJwmI3xgY1gcstI4MVd4Olcf" + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_1Y45Vw3lRUFLsImFilvrXPos", + "function": { + "name": "endProcessAndWriteReport", + "arguments": { + "endProcess": true + } + } + } + ] + }, + { + "name": "endProcessAndWriteReport", + "role": "tool", + "toolCallId": "call_1Y45Vw3lRUFLsImFilvrXPos", + "response": { + "report": "# Root Cause Analysis (RCA) Report\n\n## 1. Introduction\n\n### Overview\nThis RCA report investigates the elevated error rates in the `controller` service and its downstream dependencies. The incident was first detected by an alert indicating an unusually high number of 500 Internal Server Errors on the `/api/cart` endpoint, with an error rate of 98.78%, significantly exceeding the 1% threshold over a 1-minute period. The primary entities investigated were the `controller`, `cartservice`, and `frontend` services.\n\n### Initial Hypothesis\nThe initial hypothesis proposed that either a deployment, a critical configuration change, or a dependency failure caused the high error rate in the `controller` service.\n\n## 2. Investigation Summary\n\n### Proposed Hypotheses\n1. **Resource exhaustion in `controller`**:\n - **Evidence**:\n - **Strong:** High error rate specifically for POST requests to the `/api/cart` endpoint.\n - **Weak:** No indications of resource limits being exceeded in the `controller` service.\n2. **Upstream latency or failure from `frontendproxy`**:\n - **Evidence**:\n - **Strong:** Error patterns suggested connectivity issues starting from the `frontendproxy`.\n - **Weak:** Eventually ruled out as communication problems upstream of the `controller`.\n3. **Backend service issue or configuration error in `cartservice`**:\n - **Evidence**:\n - **Strong:** Identified startup issues and fatal errors in `cartservice`.\n - **Weak:** None.\n\n### Discarded Hypotheses\n- **Resource exhaustion in `controller`**: Ruled out due to stable resource usage.\n- **Upstream latency or failure from `frontendproxy`**: Connectivity issues traced further downstream to `cartservice`.\n\n### Investigated Entities\n- `controller`\n- `frontend`\n- `cartservice`\n\n## 3. Cause and Effect\n\n### Cause\nThe root cause was identified as a startup failure in the `cartservice`, with fatal \"bad entrypoint\" errors preventing the service from starting correctly.\n\n### Effect\nThe startup issues in `cartservice` caused connection failures, leading to `frontend` being unable to establish connections. This resulted in `controller` reporting a high number of 500 errors for POST requests to the `/api/cart` endpoint, thus impacting user-facing services relying on this endpoint.\n\n## 4. Evidence for Root Cause\n\n### Log Patterns\n- **`cartservice` Logs**: Repeated \"FATAL: Could not start, bad entrypoint!\" errors indicating startup failures.\n- **`frontend` Logs**: \"ECONNREFUSED\" errors and spikes in \"No connection established\" errors to `cartservice`.\n- **`controller` Logs**: High frequency of 500 errors for HTTP POST requests to `/api/cart`.\n\n### Alerts and SLOs\n- An alert was triggered at `2024-11-02T10:56:42.498Z` due to a high error rate of 98.78% for the `/api/cart` endpoint.\n\n### Data Analysis\n- **Memory and CPU usage** of `controller` remained stable, ruling out resource exhaustion.\n- **Network traffic** analysis showed no abnormalities at the `controller` level but issues at the connectivity to `cartservice`.\n\n## 5. Proposed Impact\n\n### Affected Services\n- `controller`\n- `frontend`\n- `cartservice`\n\n### Performance Degradation\n- High error rate and degraded performance for the `/api/cart` endpoint.\n- Impact on downstream services and user-facing operations reliant on `cartservice`.\n\n### User Impact\n- Elevated latency and failed transactions affecting users trying to access and modify shopping cart data.\n\n## 6. Timeline of Significant Events\n\n- **2024-11-02T10:55:30.000Z**:\n - `cartservice` logs indicate a series of startup issues, marked by \"FATAL: Could not start, bad entrypoint!\" errors.\n - `frontend` logs show initial \"No connection established\" errors to `cartservice`.\n\n- **2024-11-02T10:56:00.000Z**:\n - `frontend` logs continue to show increased \"No connection established\" errors.\n\n- **2024-11-02T10:56:30.000Z**:\n - Additional \"bad entrypoint\" errors recorded in `cartservice` logs.\n\n- **2024-11-02T10:56:42.498Z**:\n - Alert triggered due to a high error rate of 98.78% for `/api/cart` in `controller`.\n\n- **2024-11-02T10:57:00.000Z**:\n - `frontend` logs show a return to zero connection errors as the startup issue in `cartservice` stabilizes.\n\n## 7. Conclusion and Next Steps\n\n### Conclusion\nThe investigation concludes that the root cause of the incident was the startup failure and persistent initialization issues in `cartservice`. This prevented `cartservice` from functioning correctly, causing connection refusal errors in `frontend`, which in turn resulted in the `controller` reporting high error rates for POST requests to the `/api/cart` endpoint.\n\n### Next Steps\n1. **Fixes or Mitigations**:\n - Address and rectify the misconfiguration or code issues in `cartservice` causing fatal startup errors.\n - Ensure proper configuration and reliable startup for `cartservice` moving forward.\n\n2. **Monitoring Improvements**:\n - Implement more granular alerts and monitoring for `cartservice` startup and initialization errors.\n - Enhance network error monitoring between `frontend` and `cartservice`.\n\n3. **Further Investigations**:\n - Monitor `cartservice` and observe for any recurrent patterns indicating startup issues.\n - Investigate the potential for automated failover or redundancy mechanisms to handle startup failures in critical services.\n\nThis concluded RCA encapsulates the findings from the investigations and provides clear guidance on addressing identified issues.\n\n---\n\n**Prepared by:**\nElastic Observability Support Team", + "timeline": { + "events": [ + { + "@timestamp": "2024-11-02T10:55:30.000Z", + "severity": "unusual", + "type": "event", + "description": "`cartservice` logs indicate a series of startup issues, marked by 'FATAL: Could not start, bad entrypoint!' errors." + }, + { + "@timestamp": "2024-11-02T10:55:30.000Z", + "severity": "unusual", + "type": "event", + "description": "`frontend` logs show initial 'No connection established' errors to `cartservice`." + }, + { + "@timestamp": "2024-11-02T10:56:00.000Z", + "severity": "unusual", + "type": "event", + "description": "`frontend` logs continue to show increased 'No connection established' errors." + }, + { + "@timestamp": "2024-11-02T10:56:30.000Z", + "severity": "unusual", + "type": "event", + "description": "Additional 'bad entrypoint' errors recorded in `cartservice` logs." + }, + { + "@timestamp": "2024-11-02T10:56:42.498Z", + "severity": "critical", + "type": "alert", + "description": "Alert triggered due to a high error rate of 98.78% for `/api/cart` in `controller`." + }, + { + "@timestamp": "2024-11-02T10:57:00.000Z", + "severity": "info", + "type": "event", + "description": "`frontend` logs show a return to zero connection errors as the startup issue in `cartservice` stabilizes." + } + ] + } + } + } +] diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/index.ts new file mode 100644 index 0000000000000..5068c8d5055fb --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/index.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + InvestigateEntityToolMessage, + RootCauseAnalysisEvent, +} from '@kbn/observability-ai-server/root_cause_analysis'; +import { RCA_INVESTIGATE_ENTITY_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { MessageRole } from '@kbn/inference-common'; +import { Required } from 'utility-types'; +// @ts-ignore +import completeRootCauseAnalysisJson from './complete_root_cause_analysis.json'; + +export const completeRootCauseAnalysis = completeRootCauseAnalysisJson as RootCauseAnalysisEvent[]; + +export const controllerEntityHealthAnalysis = completeRootCauseAnalysis.find( + (event) => + 'role' in event && + event.role === MessageRole.Tool && + event.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME && + event.response.entity['service.name'] === 'cartservice' +) as Required; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.stories.tsx new file mode 100644 index 0000000000000..6328835af1f63 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.stories.tsx @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisCallout } from '.'; + +const stories: Meta<{}> = { + title: 'RCA/Callout', + component: RootCauseAnalysisCallout, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + {}} + onCompleteInBackgroundClick={() => {}} + completeInBackground + /> + ); +}; + +export const CompleteInBackgroundDisabled: Story<{}> = () => { + return ( + {}} + onCompleteInBackgroundClick={() => {}} + completeInBackground={false} + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx new file mode 100644 index 0000000000000..0487172aca6a6 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiButton, + EuiCallOut, + EuiCheckbox, + EuiFlexGroup, + EuiFlexItem, + EuiFormLabel, + EuiPanel, + EuiText, + EuiTitle, + useGeneratedHtmlId, +} from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { AssistantAvatar } from '@kbn/observability-ai-assistant-plugin/public'; +import { css } from '@emotion/css'; + +export function RootCauseAnalysisCallout({ + onClick, + onCompleteInBackgroundClick, + completeInBackground, +}: { + onClick: () => void; + onCompleteInBackgroundClick: () => void; + completeInBackground: boolean; +}) { + const checkboxId = useGeneratedHtmlId(); + + return ( + + + + + + + + +

+ {i18n.translate('xpack.observabilityAiAssistant.rca.calloutTitle', { + defaultMessage: 'AI-assisted root cause analysis', + })} +

+
+
+
+ + + {i18n.translate('xpack.observabilityAiAssistant.rca.calloutText', { + defaultMessage: `Start an automated investigation that will analyze + log patterns, SLOs and alerts for entities and provide an evidence- + based root cause analysis of issues in your system.`, + })} + + + + + { + onCompleteInBackgroundClick(); + }} + checked={completeInBackground} + /> + + {i18n.translate( + 'xpack.observabilityAiAssistant.rootCauseAnalysisCallout.keepAnalysisRunningInFormLabelLabel', + { defaultMessage: 'Keep analysis running in background' } + )} + + + + {i18n.translate('xpack.observabilityAiAssistant.rca.calloutText', { + defaultMessage: 'Start analysis', + })} + + +
+
+
+
+ ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_collapsible_panel/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_collapsible_panel/index.tsx new file mode 100644 index 0000000000000..8cdf518f84abe --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_collapsible_panel/index.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiAccordion, EuiPanel, EuiSpacer, useGeneratedHtmlId } from '@elastic/eui'; +import React from 'react'; +import { RootCauseAnalysisPanel } from '../rca_panel'; + +export function RootCauseAnalysisCollapsiblePanel({ + title, + content, + color, + isDisabled, +}: { + title: React.ReactNode; + content: React.ReactNode; + color?: React.ComponentProps['color']; + isDisabled?: boolean; +}) { + const htmlId = useGeneratedHtmlId(); + return ( + + + + {content} + + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.stories.tsx new file mode 100644 index 0000000000000..492d6ecc59386 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.stories.tsx @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { noop } from 'lodash'; +import { RootCauseAnalysisContainer } from '.'; +// @ts-ignore +import fullAnalysis from '../mock/complete_root_cause_analysis.json'; + +const stories: Meta<{}> = { + title: 'RCA/Container', + component: RootCauseAnalysisContainer, +}; + +export default stories; + +const handlers = { + onStartAnalysisClick: noop, + onStopAnalysisClick: noop, + onResetAnalysisClick: noop, + onCompleteInBackgroundClick: noop, + onClearAnalysisClick: noop, +}; + +export const Empty: Story<{}> = () => { + return ; +}; + +export const Loading: Story<{}> = () => { + return ; +}; + +export const LoadingWithoutCompleteInBackground: Story<{}> = () => { + return ; +}; + +const error = new Error('Failed to load analysis'); + +export const WithError: Story<{}> = () => { + return ( + + ); +}; + +export const Completed: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.tsx new file mode 100644 index 0000000000000..1651f039bdbf5 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.tsx @@ -0,0 +1,338 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis'; +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { AssistantMessage, MessageRole, ToolMessage } from '@kbn/inference-common'; +import type { + RootCauseAnalysisEvent, + RootCauseAnalysisToolMessage, + RootCauseAnalysisToolRequest, + ToolErrorMessage, +} from '@kbn/observability-ai-server/root_cause_analysis'; +import { findLast } from 'lodash'; +import React from 'react'; +import { css } from '@emotion/css'; +import { EntityBadge } from '../entity_badge'; +import { RootCauseAnalysisCallout } from '../rca_callout'; +import { RootCauseAnalysisEntityInvestigation } from '../rca_entity_investigation'; +import { RootCauseAnalysisObservationPanel } from '../rca_observation_panel'; +import { RootCauseAnalysisReport } from '../rca_report'; +import { RootCauseAnalysisStepItem } from '../rca_step'; +import { RootCauseAnalysisStopButton } from '../rca_stop_button'; + +export function RootCauseAnalysisContainer({ + events, + completeInBackground, + onStartAnalysisClick, + onStopAnalysisClick, + onResetAnalysisClick, + onClearAnalysisClick, + onCompleteInBackgroundClick, + loading, + error, +}: { + events?: RootCauseAnalysisEvent[]; + completeInBackground: boolean; + onStartAnalysisClick: () => void; + onStopAnalysisClick: () => void; + onResetAnalysisClick: () => void; + onClearAnalysisClick: () => void; + onCompleteInBackgroundClick: () => void; + loading: boolean; + error?: Error; +}) { + const theme = useEuiTheme(); + + if (!events?.length && !loading && !error) { + return ( + + ); + } + + const elements: React.ReactElement[] = []; + + const toolResponsesById = new Map( + events + ?.filter( + (event): event is Extract => + event.role === MessageRole.Tool + ) + .map((event) => [event.toolCallId, event]) + ); + + events?.forEach((event) => { + if (event.role === MessageRole.Assistant) { + event.toolCalls.forEach((toolCall) => { + switch (toolCall.function.name) { + case RCA_OBSERVE_TOOL_NAME: + elements.push( + getObservationItem( + toolCall.function.arguments.title, + toolResponsesById.get(toolCall.toolCallId) + ) + ); + break; + + case RCA_INVESTIGATE_ENTITY_TOOL_NAME: + case RCA_END_PROCESS_TOOL_NAME: + const response = toolResponsesById.get(toolCall.toolCallId); + const element = response ? getToolResponseItem(response) : undefined; + if (element) { + elements.push(element); + } + break; + } + }); + } + }); + + const clearButton = ( + { + onClearAnalysisClick(); + }} + iconType="crossInCircle" + > + {i18n.translate('xpack.observabilityAiAssistant.rca.clearButtonLabel', { + defaultMessage: 'Clear', + })} + + ); + + const restartButton = ( + { + onResetAnalysisClick(); + }} + iconType="refresh" + > + {i18n.translate('xpack.observabilityAiAssistant.rca.restartButtonLabel', { + defaultMessage: 'Restart', + })} + + ); + + if (loading) { + const label = getLoadingLabel(events); + elements.push( + { + onStopAnalysisClick(); + }} + /> + ) + } + loading + /> + ); + } else if (error) { + elements.push( + + {clearButton} + {restartButton} +
+ } + /> + ); + } else { + // completed + elements.push( + + {i18n.translate('xpack.observabilityAiAssistant.rca.analysisCompleted', { + defaultMessage: 'Completed analysis', + })} + + } + iconType="checkInCircleFilled" + color="primary" + button={ + + {clearButton} + {restartButton} + + } + /> + ); + } + + return ( + + {elements.map((element, index) => { + return React.cloneElement(element, { key: index }); + })} + + ); +} + +function getLoadingLabel(events?: RootCauseAnalysisEvent[]) { + const lastAssistantMessage = findLast( + events, + (event): event is Extract => + event.role === MessageRole.Assistant + ); + + if (lastAssistantMessage) { + const toolResponsesByToolCallId = new Map( + events + ?.filter( + (event): event is Extract => + event.role === MessageRole.Tool + ) + .map((event) => [event.toolCallId, event]) + ); + const pendingToolCalls = lastAssistantMessage.toolCalls.filter((event) => { + const response = toolResponsesByToolCallId.get(event.toolCallId); + + return !response; + }); + + const allInvestigateEntityToolCalls = pendingToolCalls.filter( + (event): event is RootCauseAnalysisToolRequest => + event.function.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME + ); + + if (allInvestigateEntityToolCalls.length) { + return ( + + + {i18n.translate('xpack.observabilityAiAssistant.rca.investigatingEntitiesTextLabel', { + defaultMessage: 'Investigating entities', + })} + + + + {allInvestigateEntityToolCalls.map((toolCall) => { + return ( + + + + ); + })} + + + + ); + } + + if (pendingToolCalls[0]?.function.name === RCA_END_PROCESS_TOOL_NAME) { + return i18n.translate('xpack.observabilityAiAssistant.rca.finalizingReport', { + defaultMessage: 'Finalizing report', + }); + } + } + + return i18n.translate('xpack.observabilityAiAssistant.rca.analysisLoadingLabel', { + defaultMessage: 'Thinking...', + }); +} + +function getToolResponseErrorItem(response: ToolErrorMessage['response']) { + return ( + + ); +} + +function getToolResponseItem( + message: RootCauseAnalysisToolMessage | ToolErrorMessage +): React.ReactElement | null { + if (message.name === 'observe') { + return null; + } + + if (message.name === 'error') { + return getToolResponseErrorItem(message.response); + } + + if (message.name === 'investigateEntity') { + return ( + + ); + } + + return ( + + ); +} + +function getObservationItem( + title: React.ReactNode, + toolResponse?: RootCauseAnalysisToolMessage | ToolErrorMessage +) { + let content: string | undefined; + switch (toolResponse?.name) { + case 'observe': + content = toolResponse.response.content; + break; + + case 'error': + content = i18n.translate('xpack.observabilityAiAssistant.rca.failedObservation', { + defaultMessage: 'Failed to generate observations', + }); + break; + } + + return ( + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.stories.tsx new file mode 100644 index 0000000000000..0601a0cdf1f6f --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.stories.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisEntityInvestigation } from '.'; +import { controllerEntityHealthAnalysis } from '../mock'; + +const stories: Meta<{}> = { + title: 'RCA/EntityInvestigation', + component: RootCauseAnalysisEntityInvestigation, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.tsx new file mode 100644 index 0000000000000..b74f5969fa08f --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.tsx @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EuiFlexGroup, EuiFlexItem, EuiMarkdownFormat, EuiPanel, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import type { EntityInvestigation } from '@kbn/observability-ai-server/root_cause_analysis/tasks/investigate_entity/types'; +import React from 'react'; +import { EntityBadge } from '../entity_badge'; +import { RootCauseAnalysisCollapsiblePanel } from '../rca_collapsible_panel'; +import { RootCauseAnalysisEntityLogPatternTable } from '../rca_entity_log_pattern_table'; + +export function RootCauseAnalysisEntityInvestigation({ + summary, + entity, + ownPatterns, + patternsFromOtherEntities, +}: { + summary: string; + entity: Record; +} & Pick) { + return ( + + +

+ {i18n.translate( + 'xpack.observabilityAiAssistant.rootCauseAnalysisEntityInvestigation.title', + { + defaultMessage: 'Investigation', + } + )} +

+
+ + + +
+ } + content={ + + + {summary} + + + + } + /> + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.stories.tsx new file mode 100644 index 0000000000000..16596832eff89 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.stories.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisEntityLogPatternTable } from '.'; +import { controllerEntityHealthAnalysis } from '../mock'; + +const stories: Meta<{}> = { + title: 'RCA/EntityLogPatternTable', + component: RootCauseAnalysisEntityLogPatternTable, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.tsx new file mode 100644 index 0000000000000..10d78eef6d475 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.tsx @@ -0,0 +1,299 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { + EuiBadge, + EuiBasicTable, + EuiBasicTableColumn, + EuiCheckbox, + EuiFlexGroup, + EuiFlexItem, + EuiText, + EuiThemeComputed, +} from '@elastic/eui'; +import { css } from '@emotion/css'; +import { i18n } from '@kbn/i18n'; +import { formatInteger } from '@kbn/observability-utils-common/format/integer'; +import { highlightPatternFromRegex } from '@kbn/observability-utils-common/llm/log_analysis/highlight_patterns_from_regex'; +import type { EntityInvestigation } from '@kbn/observability-ai-server/root_cause_analysis/tasks/investigate_entity/types'; +import React, { useMemo, useState } from 'react'; +import { orderBy } from 'lodash'; +import type { AnalyzedLogPattern } from '@kbn/observability-ai-server/root_cause_analysis/tasks/analyze_log_patterns'; +import { useTheme } from '../../../hooks/use_theme'; +import { SparkPlot } from '../../charts/spark_plot'; + +const badgeClassName = css` + width: 100%; + .euiBadge__content { + justify-content: center; + } +`; + +const PER_PAGE = 5; + +export function RootCauseAnalysisEntityLogPatternTable({ + entity, + ownPatterns, + patternsFromOtherEntities, +}: Pick & { + entity: Record; +}) { + const theme = useTheme(); + + const [showUsualPatterns, setShowUsualPatterns] = useState(false); + + const [pageIndex, setPageIndex] = useState(0); + + const columns = useMemo((): Array> => { + return [ + { + field: 'relevance', + name: '', + width: '128px', + render: (_, { relevance, metadata }) => { + const color = getRelevanceColor(relevance); + + return ( + + {relevance} + + ); + }, + }, + { + field: 'pattern', + name: i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.messageColumnTitle', + { defaultMessage: 'Message' } + ), + render: (_, { regex, sample }) => { + return ( + + ); + }, + }, + { + field: 'count', + name: i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.countColumnTitle', + { defaultMessage: 'Count' } + ), + width: '96px', + render: (_, { count }) => { + return ( + + {formatInteger(count)} + + ); + }, + }, + { + field: 'change', + name: i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.changeColumnTitle', + { defaultMessage: 'Change' } + ), + width: '128px', + render: (_, { change }) => { + return getChangeBadge(change); + }, + }, + { + field: 'timeseries', + width: '128px', + name: i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.trendColumnTitle', + { defaultMessage: 'Trend' } + ), + render: (_, { timeseries, change }) => { + return ( + + ); + }, + }, + ]; + }, [theme]); + + const allPatterns = useMemo(() => { + return [...ownPatterns, ...patternsFromOtherEntities]; + }, [ownPatterns, patternsFromOtherEntities]); + + const items = useMemo(() => { + return allPatterns.filter((pattern) => { + if (!showUsualPatterns) { + return pattern.relevance !== 'normal'; + } + return pattern; + }); + }, [allPatterns, showUsualPatterns]); + + const visibleItems = useMemo(() => { + const start = pageIndex * PER_PAGE; + return orderBy(items, (item) => relevanceToInt(item.relevance), 'desc').slice( + start, + start + PER_PAGE + ); + }, [pageIndex, items]); + + const paginationOptions = useMemo(() => { + return { + pageIndex, + totalItemCount: items.length, + pageSize: PER_PAGE, + }; + }, [pageIndex, items.length]); + + return ( + + + + + {i18n.translate( + 'xpack.observabilityAiAssistant.rootCauseAnalysisEntityInvestigation.logPatternsTableTitle', + { + defaultMessage: 'Showing {count} of {total} log patterns', + values: { + total: items.length, + count: visibleItems.length, + }, + } + )} + + + + + { + setShowUsualPatterns((prev) => !prev); + }} + /> + + {i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.showUsualPatternsCheckbox', + { + defaultMessage: 'Show unremarkable patterns', + } + )} + + + + + { + setPageIndex(criteria.page.index); + }} + /> + + ); +} + +function getRelevanceColor(relevance: 'normal' | 'unusual' | 'warning' | 'critical') { + switch (relevance) { + case 'normal': + return 'plain'; + + case 'critical': + return 'danger'; + + case 'warning': + return 'warning'; + + case 'unusual': + return 'primary'; + } +} + +function getSignificanceColor(significance: 'high' | 'medium' | 'low' | null) { + switch (significance) { + case 'high': + return 'danger'; + + case 'medium': + return 'warning'; + + case 'low': + case null: + return 'plain'; + } +} + +function relevanceToInt(relevance: 'normal' | 'unusual' | 'warning' | 'critical') { + switch (relevance) { + case 'normal': + return 0; + case 'unusual': + return 1; + case 'warning': + return 2; + case 'critical': + return 3; + } +} + +function getAnnotationsFromChangePoint({ + change, + theme, + timeseries, +}: { + change: AnalyzedLogPattern['change']; + theme: EuiThemeComputed<{}>; + timeseries: Array<{ x: number; y: number }>; +}): Required['annotations']> { + if (!change.change_point || !change.type) { + return []; + } + + const color = getSignificanceColor(change.significance); + + return [ + { + color: color === 'plain' ? theme.colors.subduedText : theme.colors[color], + id: '1', + icon: '*', + label: {change.type}, + x: timeseries[change.change_point].x, + }, + ]; +} + +export function getChangeBadge(change: AnalyzedLogPattern['change']) { + return ( + + {change.significance ?? 'No change'} + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.stories.tsx new file mode 100644 index 0000000000000..5ec46729e7c74 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.stories.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisObservationPanel } from '.'; + +const stories: Meta<{}> = { + title: 'RCA/ObservationPanel', + component: RootCauseAnalysisObservationPanel, +}; + +const content = + 'The high rate of HTTP 500 errors in the controller service for the /api/cart endpoint is likely due to issues with the upstream service default-my-otel-demo-frontendproxy-8080, as indicated by logs showing upstream prematurely closed connections. The next step is to investigate the health and performance of the upstream service default-my-otel-demo-frontendproxy-8080.'; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + ); +}; + +export const Loading: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.tsx new file mode 100644 index 0000000000000..ee00f568ca688 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiFlexGroup, + EuiFlexItem, + EuiLoadingSpinner, + EuiMarkdownFormat, + EuiText, + EuiTitle, + useEuiTheme, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { css } from '@emotion/css'; +import { RootCauseAnalysisCollapsiblePanel } from '../rca_collapsible_panel'; + +export function RootCauseAnalysisObservationPanel({ + content, + title, + loading, +}: { + content?: string; + title: React.ReactNode; + loading?: boolean; +}) { + const theme = useEuiTheme().euiTheme; + return ( + + +

+ {i18n.translate('xpack.observabilityAiAssistant.rca.observationPanelTitle', { + defaultMessage: 'Observations', + })} +

+
+ + + + {title} + + {loading ? : null} + + +
+ } + color="success" + content={content ? {content} : null} + /> + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_panel/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_panel/index.tsx new file mode 100644 index 0000000000000..2ad1225a10f71 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_panel/index.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiPanel } from '@elastic/eui'; +import { css } from '@emotion/css'; +import { rgba } from 'polished'; +import React from 'react'; +import { useTheme } from '../../../hooks/use_theme'; + +export function RootCauseAnalysisPanel({ + children, + color, +}: { + children: React.ReactElement; + color?: React.ComponentProps['color']; +}) { + const theme = useTheme(); + + const panelClassName = + color && color !== 'transparent' && color !== 'plain' && color !== 'subdued' + ? css` + border: 1px solid; + border-color: ${rgba(theme.colors[color], 0.25)}; + ` + : undefined; + + return ( + + {children} + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.stories.tsx new file mode 100644 index 0000000000000..cb32631fc7a73 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.stories.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisReport } from '.'; + +const report = + '## 1. Understanding the Context and Hypothesis\n\n### Context:\n- **Issue:** High rate of HTTP 500 errors for the `/api/cart` endpoint in the `controller` service.\n- **Objective:** Investigate internal issues or anomalies that could explain the alert.\n\n### Hypothesis:\n- The high rate of HTTP 500 errors could be due to internal issues within the `controller` service, such as resource exhaustion, misconfigurations, or upstream service failures.\n\n## 2. Entity Overview\n\n### Entity: `controller`\n- **Environment:** Kubernetes pod, running in `opentelemetry-demo`\n- **Language:** Not specified\n- **Communication:** HTTP\n- **Cloud Provider:** Not specified, but running on `minikube`\n\n## 3. Identifying Related Entities\n\n### Upstream Dependencies:\n- **Upstream Service:** `default-my-otel-demo-frontendproxy-8080`\n - **Evidence:** Log entries show frequent API calls to `default-my-otel-demo-frontendproxy-8080` for various endpoints, including `/api/cart`.\n\n### Downstream Dependencies:\n- **Downstream Service:** Not explicitly mentioned, but the `controller` service is likely serving multiple endpoints, including `/api/cart`.\n\n### Infrastructure:\n- **Pod:** `ingress-nginx-controller-bc57996ff-qrd25`\n - **Evidence:** Logs and metadata indicate the `controller` service is running in this pod.\n\n## 4. Health Status Assessment\n\n### Active Alerts:\n- **Alert:** Custom threshold alert for HTTP 500 errors on `/api/cart` endpoint.\n - **Reason:** Custom equation is 100, above the threshold of 5.\n - **Duration:** 1 min\n - **Data View:** logs-*\n - **Group:** `controller`, `/api/cart`\n - **Evaluation Values:** [100]\n - **Threshold:** [5]\n - **Status:** Active\n - **Start Time:** 2024-10-21T08:51:51.846Z\n\n### SLO Performance:\n- **No SLOs** specified for this entity.\n\n### Log Patterns and Anomalies:\n- **Normal Logs:**\n - Logs show normal GET and POST requests with HTTP 200 responses.\n- **Critical Logs:**\n - Logs indicate upstream prematurely closed connection while reading upstream, leading to HTTP 500 errors.\n - Example: `2024/10/21 08:37:11 [error] 36#36: *3518505 upstream prematurely closed connection while reading upstream, client: 10.244.0.117, server: otel-demo.internal, request: "POST /flagservice/flagd.evaluation.v1.Service/EventStream HTTP/1.1", upstream: "http://10.244.0.119:8080/flagservice/flagd.evaluation.v1.Service/EventStream", host: "ingress-nginx-controller.ingress-nginx.svc.cluster.local", referrer: "http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart"`\n\n## 5. Relevance of Entity to the Investigation\n\n### Relevance:\n- The `controller` service is directly related to the investigation due to the elevated HTTP 500 error rate on the `/api/cart` endpoint.\n- The critical log entries suggest that the issue might be related to upstream service failures, specifically the `default-my-otel-demo-frontendproxy-8080` service.\n\n### Signs Aligning with Hypothesis:\n- **Resource Exhaustion:** Not explicitly indicated in the logs, but the high rate of HTTP 500 errors could be a symptom.\n- **Upstream Service Failures:** Logs indicate upstream prematurely closed connections, which aligns with the hypothesis of upstream service issues.\n\n## 6. Timeline of Significant Events\n\n### Timeline:\n1. **2024-10-21T08:37:11.050Z:** Critical log entry indicating upstream prematurely closed connection while reading upstream.\n2. **2024-10-21T08:51:51.846Z:** Alert for high rate of HTTP 500 errors on `/api/cart` endpoint becomes active.\n3. **2024-10-21T09:34:52.720Z:** Alert status remains active with a custom equation value of 100, above the threshold of 5.\n\n## 7. Next Steps or Root Cause Identification\n\n### Next Steps:\n1. **Investigate Upstream Service (`default-my-otel-demo-frontendproxy-8080`):**\n - Check the health and performance of the upstream service.\n - Look for any signs of resource exhaustion, connection issues, or misconfigurations.\n2. **Review Recent Changes:**\n - Check for any recent deployments or configuration changes in the `controller` service and its upstream dependencies.\n3. **Analyze Resource Usage:**\n - Monitor CPU, memory, and network usage for the `controller` service to identify any resource-related issues.\n\n### Potential Root Cause:\n- **Upstream Service Failures:** The critical log entries indicating upstream prematurely closed connections suggest that the root cause might be related to issues in the upstream service (`default-my-otel-demo-frontendproxy-8080`), leading to HTTP 500 errors in the `controller` service.\n\nBy following these steps, we can further narrow down the root cause and take appropriate actions to resolve the issue.'; + +const stories: Meta<{}> = { + title: 'RCA/Report', + component: RootCauseAnalysisReport, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.tsx new file mode 100644 index 0000000000000..cd793786eb6cb --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.tsx @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { + EuiFlexGroup, + EuiHorizontalRule, + EuiMarkdownFormat, + EuiPanel, + EuiTitle, +} from '@elastic/eui'; +import type { SignificantEventsTimeline } from '@kbn/observability-ai-server/root_cause_analysis'; + +export function RootCauseAnalysisReport({ + report, + timeline, +}: { + report: string; + timeline: SignificantEventsTimeline; +}) { + return ( + + + + +

+ {i18n.translate('xpack.observabilityAiAssistant.rootCauseAnalysisReport.title', { + defaultMessage: 'Report', + })} +

+
+
+
+ + {report} +
+ ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.stories.tsx new file mode 100644 index 0000000000000..fa5b184800216 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.stories.tsx @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { EuiBadge, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { RootCauseAnalysisStepItem } from '.'; + +const stories: Meta<{}> = { + title: 'RCA/StepItem', + component: RootCauseAnalysisStepItem, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + Investigating + service.name:controller +
+ } + /> + ); +}; + +export const Loading: Story<{}> = () => { + return ( + + Investigating + service.name:controller + + } + /> + ); +}; + +export const WithColor: Story<{}> = () => { + return ( + + Investigating + service.name:controller + + } + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.tsx new file mode 100644 index 0000000000000..d887c75c1b4a5 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.tsx @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiLoadingSpinner, + EuiPanel, + EuiText, +} from '@elastic/eui'; +import { css } from '@emotion/css'; +import React from 'react'; +import { RootCauseAnalysisPanel } from '../rca_panel'; + +export interface RootCauseAnalysisStepItemProps { + label: React.ReactNode; + loading?: boolean; + color?: React.ComponentProps['color']; + button?: React.ReactElement; + iconType?: React.ComponentProps['type']; +} + +export function RootCauseAnalysisStepItem({ + label, + loading, + color, + iconType, + button, +}: RootCauseAnalysisStepItemProps) { + return ( + + + + + {loading ? ( + + ) : ( + + )} + + + + + {label} + + + {button ? {button} : null} + + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_stop_button/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_stop_button/index.tsx new file mode 100644 index 0000000000000..7ef0b175b636d --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_stop_button/index.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiButton } from '@elastic/eui'; + +export function RootCauseAnalysisStopButton({ onClick }: { onClick: () => void }) { + return ( + { + onClick(); + }} + iconType="stopFilled" + color="text" + > + {i18n.translate('xpack.observabilityAiAssistant.rca.stopAnalysisButtonLabel', { + defaultMessage: 'Stop', + })} + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.stories.tsx new file mode 100644 index 0000000000000..4bc31dcf7cc4f --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.stories.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { EuiBadge, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { RootCauseAnalysisTaskStepItem } from '.'; +import { EntityBadge } from '../entity_badge'; + +const stories: Meta<{}> = { + title: 'RCA/TaskStepItem', + component: RootCauseAnalysisTaskStepItem, +}; + +export default stories; + +export const Pending: Story<{}> = () => { + return ( + + Investigating + + + + + } + /> + ); +}; + +export const Completed: Story<{}> = () => { + return ( + + Completed investigation + + + + + } + /> + ); +}; + +export const Failure: Story<{}> = () => { + return ( + + Failed investigating + service.name:controller + + } + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.tsx new file mode 100644 index 0000000000000..b29d8a834745d --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.tsx @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { RootCauseAnalysisStepItem } from '../rca_step'; + +export function RootCauseAnalysisTaskStepItem({ + label, + status, +}: { + label: React.ReactNode; + status: 'pending' | 'completed' | 'failure'; +}) { + let color: React.ComponentProps['color']; + let iconType: React.ComponentProps['iconType']; + + let loading: boolean | undefined; + + if (status === 'failure') { + color = 'danger'; + iconType = 'alert'; + } else if (status === 'completed') { + color = 'success'; + iconType = 'checkInCircleFilled'; + } else { + color = 'primary'; + loading = true; + } + + return ( + + ); +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/technical_preview_badge.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/technical_preview_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/technical_preview_badge.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/technical_preview_badge.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/changes/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/changes/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/changes/index.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/changes/index.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/lens.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/lens.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/lens.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/lens.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.test.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/visualize_esql.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.test.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/visualize_esql.test.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/visualize_esql.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/visualize_esql.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_kibana.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_kibana.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_license.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_license.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_license.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_license.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_app_service.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_app_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_app_service.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_app_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_chat_service.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_chat_service.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_router.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_router.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_router.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_router.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/is_nav_control_visible.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/is_nav_control_visible.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/is_nav_control_visible.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/is_nav_control_visible.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_chart_theme.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_chart_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_chart_theme.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_chart_theme.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_force_update.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_force_update.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_force_update.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_force_update.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_kibana.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_kibana.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_license.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_license.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_license.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_license.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_local_storage.test.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_local_storage.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_local_storage.test.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_local_storage.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_local_storage.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_local_storage.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_local_storage.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_local_storage.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_nav_control_scope.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_nav_control_scope.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_nav_control_scope.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_nav_control_scope.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_nav_control_screen_context.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_nav_control_screen_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_nav_control_screen_context.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_nav_control_screen_context.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_chat_service.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_chat_service.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_params.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_params.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_params.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_router.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_router.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_router.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_router.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_theme.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_theme.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_theme.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/index.ts new file mode 100644 index 0000000000000..9fd8b9158f4c8 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/index.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PluginInitializer, PluginInitializerContext } from '@kbn/core/public'; +import { ConfigSchema, ObservabilityAIAssistantAppPlugin } from './plugin'; +import type { + ObservabilityAIAssistantAppPluginSetupDependencies, + ObservabilityAIAssistantAppPluginStartDependencies, + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, +} from './types'; + +export type { ObservabilityAIAssistantAppPublicSetup, ObservabilityAIAssistantAppPublicStart }; + +export const plugin: PluginInitializer< + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, + ObservabilityAIAssistantAppPluginSetupDependencies, + ObservabilityAIAssistantAppPluginStartDependencies +> = (pluginInitializerContext: PluginInitializerContext) => + new ObservabilityAIAssistantAppPlugin(pluginInitializerContext); diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/plugin.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/plugin.tsx new file mode 100644 index 0000000000000..218b663525dbd --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/plugin.tsx @@ -0,0 +1,169 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { lazy } from 'react'; +import ReactDOM from 'react-dom'; +import { + type AppMountParameters, + DEFAULT_APP_CATEGORIES, + type CoreSetup, + type CoreStart, + type Plugin, + type PluginInitializerContext, +} from '@kbn/core/public'; +import type { Logger } from '@kbn/logging'; +import { i18n } from '@kbn/i18n'; +import { AI_ASSISTANT_APP_ID } from '@kbn/deeplinks-observability'; +import { createAppService, AIAssistantAppService } from '@kbn/ai-assistant'; +import { withSuspense } from '@kbn/shared-ux-utility'; +import type { + ObservabilityAIAssistantAppPluginSetupDependencies, + ObservabilityAIAssistantAppPluginStartDependencies, + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, +} from './types'; +import { getObsAIAssistantConnectorType } from './rule_connector'; +import { NavControlInitiator } from './components/nav_control/lazy_nav_control'; +import { SharedProviders } from './utils/shared_providers'; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigSchema {} + +export class ObservabilityAIAssistantAppPlugin + implements + Plugin< + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, + ObservabilityAIAssistantAppPluginSetupDependencies, + ObservabilityAIAssistantAppPluginStartDependencies + > +{ + logger: Logger; + appService: AIAssistantAppService | undefined; + isServerless: boolean; + + constructor(context: PluginInitializerContext) { + this.logger = context.logger.get(); + this.isServerless = context.env.packageInfo.buildFlavor === 'serverless'; + } + + setup( + coreSetup: CoreSetup, + _: ObservabilityAIAssistantAppPluginSetupDependencies + ): ObservabilityAIAssistantAppPublicSetup { + coreSetup.application.register({ + id: AI_ASSISTANT_APP_ID, + title: i18n.translate('xpack.observabilityAiAssistant.appTitle', { + defaultMessage: 'Observability AI Assistant', + }), + euiIconType: 'logoObservability', + appRoute: '/app/observabilityAIAssistant', + category: DEFAULT_APP_CATEGORIES.observability, + visibleIn: [], + deepLinks: [ + { + id: 'conversations', + title: i18n.translate('xpack.observabilityAiAssistant.conversationsDeepLinkTitle', { + defaultMessage: 'Conversations', + }), + path: '/conversations/new', + }, + ], + mount: async (appMountParameters: AppMountParameters) => { + // Load application bundle and Get start services + const [{ Application }, [coreStart, pluginsStart]] = await Promise.all([ + import('./application'), + coreSetup.getStartServices() as Promise< + [CoreStart, ObservabilityAIAssistantAppPluginStartDependencies, unknown] + >, + ]); + + ReactDOM.render( + , + appMountParameters.element + ); + + return () => { + ReactDOM.unmountComponentAtNode(appMountParameters.element); + }; + }, + }); + + return {}; + } + + start( + coreStart: CoreStart, + pluginsStart: ObservabilityAIAssistantAppPluginStartDependencies + ): ObservabilityAIAssistantAppPublicStart { + const appService = (this.appService = createAppService({ + pluginsStart, + })); + const isEnabled = appService.isEnabled(); + if (isEnabled) { + coreStart.chrome.navControls.registerRight({ + mount: (element) => { + ReactDOM.render( + , + element, + () => {} + ); + + return () => {}; + }, + // right before the user profile + order: 1001, + }); + } + + const service = pluginsStart.observabilityAIAssistant.service; + + service.register(async ({ registerRenderFunction }) => { + const { registerFunctions } = await import('./functions'); + + await registerFunctions({ pluginsStart, registerRenderFunction }); + }); + + const withProviders =

(Component: React.ComponentType

) => + React.forwardRef((props: P, ref: React.Ref) => ( + + + + )); + + const LazilyLoadedRootCauseAnalysisContainer = withSuspense( + withProviders( + lazy(() => + import('./components/rca/rca_container').then((m) => ({ + default: m.RootCauseAnalysisContainer, + })) + ) + ) + ); + + pluginsStart.triggersActionsUi.actionTypeRegistry.register( + getObsAIAssistantConnectorType(service) + ); + return { + RootCauseAnalysisContainer: LazilyLoadedRootCauseAnalysisContainer, + }; + } +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/routes/config.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/routes/config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/routes/config.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/routes/config.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/routes/conversations/conversation_view_with_props.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/routes/conversations/conversation_view_with_props.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/routes/conversations/conversation_view_with_props.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/routes/conversations/conversation_view_with_props.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx similarity index 90% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx index bd024e9231ac0..79d9678733941 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx @@ -10,10 +10,8 @@ import type { ActionTypeModel as ConnectorTypeModel, GenericValidationResult, } from '@kbn/triggers-actions-ui-plugin/public/types'; -import { - AssistantAvatar, - ObservabilityAIAssistantService, -} from '@kbn/observability-ai-assistant-plugin/public'; +import { ObservabilityAIAssistantService } from '@kbn/observability-ai-assistant-plugin/public'; +import { AssistantIcon } from '@kbn/ai-assistant-icon'; import { OBSERVABILITY_AI_ASSISTANT_CONNECTOR_ID } from '../../common/rule_connector'; import { ObsAIAssistantActionParams } from './types'; import { @@ -29,7 +27,7 @@ export function getConnectorType( return { id: OBSERVABILITY_AI_ASSISTANT_CONNECTOR_ID, modalWidth: 675, - iconClass: () => , + iconClass: () => , isSystemActionType: true, isExperimental: true, selectMessage: CONNECTOR_DESC, diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/ai_assistant_params.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant_params.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/ai_assistant_params.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant_params.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/translations.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/translations.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/translations.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/types.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/types.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/types.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts new file mode 100644 index 0000000000000..22bdf2b12236e --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { LensPublicSetup, LensPublicStart } from '@kbn/lens-plugin/public'; +import type { + DataViewsPublicPluginSetup, + DataViewsPublicPluginStart, +} from '@kbn/data-views-plugin/public'; +import type { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import type { + ObservabilityAIAssistantPublicSetup, + ObservabilityAIAssistantPublicStart, +} from '@kbn/observability-ai-assistant-plugin/public'; +import type { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; +import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/public'; +import type { + ObservabilitySharedPluginSetup, + ObservabilitySharedPluginStart, +} from '@kbn/observability-shared-plugin/public'; +import type { MlPluginSetup, MlPluginStart } from '@kbn/ml-plugin/public'; +import type { + TriggersAndActionsUIPublicPluginSetup, + TriggersAndActionsUIPublicPluginStart, +} from '@kbn/triggers-actions-ui-plugin/public'; +import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import type { + AIAssistantManagementSelectionPluginPublicStart, + AIAssistantManagementSelectionPluginPublicSetup, +} from '@kbn/ai-assistant-management-plugin/public'; +import type { RootCauseAnalysisContainer } from './components/rca/rca_container'; + +export interface ObservabilityAIAssistantAppPublicStart { + RootCauseAnalysisContainer: React.ExoticComponent< + React.ComponentProps + >; +} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ObservabilityAIAssistantAppPublicSetup {} + +export interface ObservabilityAIAssistantAppPluginStartDependencies { + licensing: LicensingPluginStart; + share: SharePluginStart; + lens: LensPublicStart; + dataViews: DataViewsPublicPluginStart; + uiActions: UiActionsStart; + observabilityAIAssistant: ObservabilityAIAssistantPublicStart; + observabilityShared: ObservabilitySharedPluginStart; + ml: MlPluginStart; + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; + data: DataPublicPluginStart; + aiAssistantManagementSelection: AIAssistantManagementSelectionPluginPublicStart; +} + +export interface ObservabilityAIAssistantAppPluginSetupDependencies { + licensing: LicensingPluginSetup; + share: SharePluginSetup; + lens: LensPublicSetup; + dataViews: DataViewsPublicPluginSetup; + uiActions: UiActionsSetup; + observabilityAIAssistant: ObservabilityAIAssistantPublicSetup; + observabilityShared: ObservabilitySharedPluginSetup; + ml: MlPluginSetup; + triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; + aiAssistantManagementSelection: AIAssistantManagementSelectionPluginPublicSetup; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/non_nullable.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/non_nullable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/non_nullable.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/non_nullable.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/safe_json_parse.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/safe_json_parse.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/safe_json_parse.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/safe_json_parse.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/shared_providers.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/shared_providers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/shared_providers.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/shared_providers.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/.eslintrc.json b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/.eslintrc.json similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/.eslintrc.json rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/.eslintrc.json diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/README.md b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/README.md new file mode 100644 index 0000000000000..f8d10c679e622 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/README.md @@ -0,0 +1,37 @@ +# Observability AI Assistant Evaluation Framework + +## Overview + +This tool is developed for our team working on the Elastic Observability platform, specifically focusing on evaluating the Observability AI Assistant. It simplifies scripting and evaluating various scenarios with the Large Language Model (LLM) integration. + +## Setup requirements + +- An Elasticsearch instance +- A Kibana instance +- At least one .gen-ai connector set up + +## Running evaluations + +Run the tool using: + +`$ node x-pack/solutions/observability/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/index.js` + +This will evaluate all existing scenarios, and write the evaluation results to the terminal. + +### Configuration + +#### Kibana and Elasticsearch + +By default, the tool will look for a Kibana instance running locally (at `http://localhost:5601`, which is the default address for running Kibana in development mode). It will also attempt to read the Kibana config file for the Elasticsearch address & credentials. If you want to override these settings, use `--kibana` and `--es`. Only basic auth is supported, e.g. `--kibana http://username:password@localhost:5601`. If you want to use a specific space, use `--spaceId` + +#### Connector + +Use `--connectorId` to specify a `.gen-ai` or `.bedrock` connector to use. If none are given, it will prompt you to select a connector based on the ones that are available. If only a single supported connector is found, it will be used without prompting. + +#### Persisting conversations + +By default, completed conversations are not persisted. If you do want to persist them, for instance for reviewing purposes, set the `--persist` flag to store them. This will also generate a clickable link in the output of the evaluation that takes you to the conversation. + +If you want to clear conversations on startup, use the `--clear` flag. This only works when `--persist` is enabled. If `--spaceId` is set, only conversations for the current space will be cleared. + +When storing conversations, the name of the scenario is used as a title. Set the `--autoTitle` flag to have the LLM generate a title for you. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/alert_templates/templates.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/alert_templates/templates.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/alert_templates/templates.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/alert_templates/templates.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/cli.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/cli.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/cli.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/cli.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/evaluation.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/evaluation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/evaluation.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/evaluation.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/index.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/index.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/index.js rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/index.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts new file mode 100644 index 0000000000000..e6a44cbb4a549 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import path from 'path'; +import fs from 'fs'; +import yaml from 'js-yaml'; +import { identity, pickBy } from 'lodash'; + +export type KibanaConfig = ReturnType; + +export const readKibanaConfig = () => { + const kibanaConfigDir = path.join(__filename, '../../../../../../../../config'); + const kibanaDevConfig = path.join(kibanaConfigDir, 'kibana.dev.yml'); + const kibanaConfig = path.join(kibanaConfigDir, 'kibana.yml'); + + const loadedKibanaConfig = (yaml.load( + fs.readFileSync(fs.existsSync(kibanaDevConfig) ? kibanaDevConfig : kibanaConfig, 'utf8') + ) || {}) as {}; + + const cliEsCredentials = pickBy( + { + 'elasticsearch.username': process.env.ELASTICSEARCH_USERNAME, + 'elasticsearch.password': process.env.ELASTICSEARCH_PASSWORD, + 'elasticsearch.hosts': process.env.ELASTICSEARCH_HOST, + }, + identity + ) as { + 'elasticsearch.username'?: string; + 'elasticsearch.password'?: string; + 'elasticsearch.hosts'?: string; + }; + + return { + 'elasticsearch.hosts': 'http://localhost:9200', + 'elasticsearch.username': 'elastic', + 'elasticsearch.password': 'changeme', + ...loadedKibanaConfig, + ...cliEsCredentials, + }; +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/alerts/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/alerts/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/alerts/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/alerts/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/apm/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/apm/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/apm/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/apm/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/elasticsearch/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/elasticsearch/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/elasticsearch/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/elasticsearch/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/kb/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/kb/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/kb/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/kb/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/select_connector.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/select_connector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/select_connector.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/select_connector.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/services/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/services/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/services/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/services/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/setup_synthtrace.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/setup_synthtrace.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/setup_synthtrace.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/setup_synthtrace.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/types.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/types.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/types.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/create_observability_ai_assistant_app_es_client.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/create_observability_ai_assistant_app_es_client.ts new file mode 100644 index 0000000000000..babb6c1273370 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/create_observability_ai_assistant_app_es_client.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createObservabilityEsClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { ElasticsearchClient, Logger } from '@kbn/core/server'; + +export async function createObservabilityAIAssistantAppEsClient({ + client, + logger, +}: { + client: ElasticsearchClient; + logger: Logger; +}) { + const esClient = createObservabilityEsClient({ + client, + logger, + plugin: 'observabilityAIAssistantApp', + }); + + return esClient; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/clients/elasticsearch/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/elasticsearch/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/clients/elasticsearch/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/elasticsearch/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/config.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/config.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/config.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/alerts.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/alerts.ts similarity index 95% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/alerts.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/alerts.ts index 5408dbbf4ab4f..bf797bb170606 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/alerts.ts +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/alerts.ts @@ -196,17 +196,17 @@ export function registerAlertsFunction({ lte: end, }, }, - ...kqlQuery, - ...(!includeRecovered - ? [ - { - term: { - [ALERT_STATUS]: ALERT_STATUS_ACTIVE, - }, - }, - ] - : []), }, + ...kqlQuery, + ...(!includeRecovered + ? [ + { + term: { + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, + }, + }, + ] + : []), ], }, }, diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/get_log_changes.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/get_log_changes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/get_log_changes.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/get_log_changes.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/get_metric_changes.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/get_metric_changes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/get_metric_changes.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/get_metric_changes.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/documentation.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/documentation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/documentation.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/documentation.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/lens.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/lens.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/lens.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/lens.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.test.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.test.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.test.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.test.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/validate_esql_query.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/validate_esql_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/validate_esql_query.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/validate_esql_query.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/visualize_esql.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/visualize_esql.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/visualize_esql.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/visualize_esql.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/plugin.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/plugin.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/convert_schema_to_open_api.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/convert_schema_to_open_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/convert_schema_to_open_api.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/convert_schema_to_open_api.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/index.test.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/index.test.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts new file mode 100644 index 0000000000000..cd9f578d99093 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + PluginSetupContract as ActionsPluginSetup, + PluginStartContract as ActionsPluginStart, +} from '@kbn/actions-plugin/server'; +import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; +import type { + DataViewsServerPluginSetup, + DataViewsServerPluginStart, +} from '@kbn/data-views-plugin/server'; +import type { FeaturesPluginStart, FeaturesPluginSetup } from '@kbn/features-plugin/server'; +import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; +import type { + ObservabilityAIAssistantServerSetup, + ObservabilityAIAssistantServerStart, +} from '@kbn/observability-ai-assistant-plugin/server'; +import type { + RuleRegistryPluginSetupContract, + RuleRegistryPluginStartContract, +} from '@kbn/rule-registry-plugin/server'; +import type { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/server'; +import type { + TaskManagerSetupContract, + TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server'; +import type { CloudSetup, CloudStart } from '@kbn/cloud-plugin/server'; +import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; +import type { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; +import type { InferenceServerStart, InferenceServerSetup } from '@kbn/inference-plugin/server'; +import type { LogsDataAccessPluginStart } from '@kbn/logs-data-access-plugin/server'; +import type { LlmTasksPluginStart } from '@kbn/llm-tasks-plugin/server'; +import type { SLOServerStart, SLOServerSetup } from '@kbn/slo-plugin/server'; +import type { SpacesPluginStart, SpacesPluginSetup } from '@kbn/spaces-plugin/server'; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ObservabilityAIAssistantAppServerStart {} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ObservabilityAIAssistantAppServerSetup {} + +export interface ObservabilityAIAssistantAppPluginStartDependencies { + observabilityAIAssistant: ObservabilityAIAssistantServerStart; + ruleRegistry: RuleRegistryPluginStartContract; + alerting: AlertingServerStart; + licensing: LicensingPluginStart; + actions: ActionsPluginStart; + security: SecurityPluginStart; + features: FeaturesPluginStart; + taskManager: TaskManagerStartContract; + dataViews: DataViewsServerPluginStart; + cloud?: CloudStart; + serverless?: ServerlessPluginStart; + inference: InferenceServerStart; + logsDataAccess: LogsDataAccessPluginStart; + slo: SLOServerStart; + spaces: SpacesPluginStart; + llmTasks: LlmTasksPluginStart; +} + +export interface ObservabilityAIAssistantAppPluginSetupDependencies { + observabilityAIAssistant: ObservabilityAIAssistantServerSetup; + ruleRegistry: RuleRegistryPluginSetupContract; + alerting: AlertingServerSetup; + licensing: LicensingPluginSetup; + actions: ActionsPluginSetup; + security: SecurityPluginSetup; + features: FeaturesPluginSetup; + taskManager: TaskManagerSetupContract; + dataViews: DataViewsServerPluginSetup; + observability: ObservabilityPluginSetup; + cloud?: CloudSetup; + serverless?: ServerlessPluginSetup; + inference: InferenceServerSetup; + slo: SLOServerSetup; + spaces: SpacesPluginSetup; +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/util/get_log_sources.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/util/get_log_sources.ts new file mode 100644 index 0000000000000..6532e686a2eb2 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/util/get_log_sources.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IUiSettingsClient } from '@kbn/core/server'; +import { OBSERVABILITY_LOGS_DATA_ACCESS_LOG_SOURCES_ID } from '@kbn/management-settings-ids'; + +export function getLogSources({ uiSettings }: { uiSettings: IUiSettingsClient }) { + return uiSettings.get(OBSERVABILITY_LOGS_DATA_ACCESS_LOG_SOURCES_ID) as Promise; +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/tsconfig.json b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/tsconfig.json new file mode 100644 index 0000000000000..af075027d9cd4 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/tsconfig.json @@ -0,0 +1,88 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../typings/**/*", + "common/**/*", + "public/**/*", + "scripts/**/*", + "typings/**/*", + "public/**/*.json", + "server/**/*", + ".storybook/**/*.tsx" + ], + "kbn_references": [ + "@kbn/es-types", + "@kbn/observability-ai-assistant-plugin", + "@kbn/field-formats-plugin", + "@kbn/core", + "@kbn/typed-react-router-config", + "@kbn/i18n", + "@kbn/management-settings-ids", + "@kbn/triggers-actions-ui-plugin", + "@kbn/shared-ux-utility", + "@kbn/data-views-plugin", + "@kbn/lens-embeddable-utils", + "@kbn/lens-plugin", + "@kbn/expressions-plugin", + "@kbn/ui-actions-plugin", + "@kbn/esql-utils", + "@kbn/visualization-utils", + "@kbn/ai-assistant-management-plugin", + "@kbn/kibana-react-plugin", + "@kbn/licensing-plugin", + "@kbn/logging", + "@kbn/deeplinks-observability", + "@kbn/share-plugin", + "@kbn/observability-shared-plugin", + "@kbn/ml-plugin", + "@kbn/data-plugin", + "@kbn/react-kibana-context-theme", + "@kbn/shared-ux-link-redirect-app", + "@kbn/dev-cli-runner", + "@kbn/tooling-log", + "@kbn/babel-register", + "@kbn/expect", + "@kbn/apm-synthtrace-client", + "@kbn/alerting-plugin", + "@kbn/apm-synthtrace", + "@kbn/esql-datagrid", + "@kbn/alerting-comparators", + "@kbn/core-lifecycle-browser", + "@kbn/inference-plugin", + "@kbn/ai-assistant", + "@kbn/apm-utils", + "@kbn/config-schema", + "@kbn/es-query", + "@kbn/rule-registry-plugin", + "@kbn/esql-validation-autocomplete", + "@kbn/esql-ast", + "@kbn/field-types", + "@kbn/security-plugin", + "@kbn/observability-plugin", + "@kbn/actions-plugin", + "@kbn/stack-connectors-plugin", + "@kbn/features-plugin", + "@kbn/serverless", + "@kbn/task-manager-plugin", + "@kbn/cloud-plugin", + "@kbn/logs-data-access-plugin", + "@kbn/ai-assistant-common", + "@kbn/observability-utils-server", + "@kbn/observability-utils-common", + "@kbn/slo-plugin", + "@kbn/spaces-plugin", + "@kbn/data-service", + "@kbn/inference-common", + "@kbn/observability-ai-server", + "@kbn/observability-ai-common", + "@kbn/llm-tasks-plugin", + "@kbn/product-doc-common", + "@kbn/ai-assistant-icon", + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/README.md b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/README.md similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/README.md rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/README.md diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/common/ui_settings.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/common/ui_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/common/ui_settings.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/common/ui_settings.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_management/jest.config.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/jest.config.js new file mode 100644 index 0000000000000..99b1d23eb5bd4 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/jest.config.js @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/observability_ai_assistant_management'], + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/observability_ai_assistant_management/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/kibana.jsonc b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/kibana.jsonc rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/constants.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/constants.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/constants.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/context/app_context.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/context/app_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/context/app_context.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/context/app_context.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/helpers/categorize_entries.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/helpers/categorize_entries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/helpers/categorize_entries.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/helpers/categorize_entries.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/helpers/test_helper.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/helpers/test_helper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/helpers/test_helper.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/helpers/test_helper.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_app_context.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_app_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_app_context.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_app_context.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_entry.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_entry.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_entry.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_entry.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_user_instruction.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_user_instruction.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_user_instruction.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_user_instruction.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_delete_knowledge_base_entry.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_delete_knowledge_base_entry.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_delete_knowledge_base_entry.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_delete_knowledge_base_entry.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_knowledge_base_entries.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_knowledge_base_entries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_knowledge_base_entries.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_knowledge_base_entries.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_product_doc_status.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_product_doc_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_product_doc_status.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_product_doc_status.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_user_instructions.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_user_instructions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_user_instructions.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_user_instructions.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_import_knowledge_base_entries.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_import_knowledge_base_entries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_import_knowledge_base_entries.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_import_knowledge_base_entries.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_install_product_doc.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_install_product_doc.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_install_product_doc.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_install_product_doc.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_kibana.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_kibana.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_kibana.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_kibana.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_observability_management_params.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_observability_management_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_observability_management_params.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_observability_management_params.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_observability_management_router.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_observability_management_router.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_observability_management_router.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_observability_management_router.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_uninstall_product_doc.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_uninstall_product_doc.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_uninstall_product_doc.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_uninstall_product_doc.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/plugin.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/plugin.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_bulk_import_flyout.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_bulk_import_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_bulk_import_flyout.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_bulk_import_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_category_flyout.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_category_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_category_flyout.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_category_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_manual_entry_flyout.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_manual_entry_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_manual_entry_flyout.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_manual_entry_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_user_instruction_flyout.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_user_instruction_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_user_instruction_flyout.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_user_instruction_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.test.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.test.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.test.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/redirect_to_home_if_unauthorized.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/redirect_to_home_if_unauthorized.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/redirect_to_home_if_unauthorized.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/redirect_to_home_if_unauthorized.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_page.test.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_page.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_page.test.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_page.test.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_page.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_page.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_page.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/product_doc_entry.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/product_doc_entry.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/product_doc_entry.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/product_doc_entry.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.test.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.test.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.test.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/ui_settings.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/ui_settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/ui_settings.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/ui_settings.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/config.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/config.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/config.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/server/config.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/server/config.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/config.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/server/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/server/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/server/plugin.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/server/plugin.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/plugin.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_management/tsconfig.json b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/tsconfig.json new file mode 100644 index 0000000000000..982fda386cc1e --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/management-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/typed-react-router-config", + "@kbn/core-chrome-browser", + "@kbn/observability-ai-assistant-plugin", + "@kbn/serverless", + "@kbn/management-settings-components-field-row", + "@kbn/observability-shared-plugin", + "@kbn/config-schema", + "@kbn/core-ui-settings-common", + "@kbn/logs-data-access-plugin", + "@kbn/core-plugins-browser", + "@kbn/ai-assistant", + "@kbn/core-plugins-server", + "@kbn/product-doc-base-plugin" + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/x-pack/plugins/security_solution_ess/.gitignore b/x-pack/solutions/observability/plugins/serverless_observability/.gitignore similarity index 100% rename from x-pack/plugins/security_solution_ess/.gitignore rename to x-pack/solutions/observability/plugins/serverless_observability/.gitignore diff --git a/x-pack/plugins/serverless_observability/README.mdx b/x-pack/solutions/observability/plugins/serverless_observability/README.mdx similarity index 100% rename from x-pack/plugins/serverless_observability/README.mdx rename to x-pack/solutions/observability/plugins/serverless_observability/README.mdx diff --git a/x-pack/plugins/serverless_observability/common/index.ts b/x-pack/solutions/observability/plugins/serverless_observability/common/index.ts similarity index 100% rename from x-pack/plugins/serverless_observability/common/index.ts rename to x-pack/solutions/observability/plugins/serverless_observability/common/index.ts diff --git a/x-pack/plugins/serverless_observability/kibana.jsonc b/x-pack/solutions/observability/plugins/serverless_observability/kibana.jsonc similarity index 100% rename from x-pack/plugins/serverless_observability/kibana.jsonc rename to x-pack/solutions/observability/plugins/serverless_observability/kibana.jsonc diff --git a/x-pack/solutions/observability/plugins/serverless_observability/package.json b/x-pack/solutions/observability/plugins/serverless_observability/package.json new file mode 100644 index 0000000000000..8097ad8f5b8bd --- /dev/null +++ b/x-pack/solutions/observability/plugins/serverless_observability/package.json @@ -0,0 +1,11 @@ +{ + "name": "@kbn/serverless-observability", + "version": "1.0.0", + "license": "Elastic License 2.0", + "private": true, + "scripts": { + "build": "yarn plugin-helpers build", + "plugin-helpers": "node ../../../../../scripts/plugin_helpers", + "kbn": "node ../../../../../scripts/kbn" + } +} \ No newline at end of file diff --git a/x-pack/plugins/serverless_observability/public/index.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/index.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/index.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/index.ts diff --git a/x-pack/plugins/serverless_observability/public/logs_signal/overview_registration.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/logs_signal/overview_registration.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/logs_signal/overview_registration.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/logs_signal/overview_registration.ts diff --git a/x-pack/plugins/serverless_observability/public/navigation_tree.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/navigation_tree.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/navigation_tree.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/navigation_tree.ts diff --git a/x-pack/plugins/serverless_observability/public/plugin.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/plugin.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/plugin.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/plugin.ts diff --git a/x-pack/plugins/serverless_observability/public/types.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/types.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/types.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/types.ts diff --git a/x-pack/plugins/serverless_observability/server/config.ts b/x-pack/solutions/observability/plugins/serverless_observability/server/config.ts similarity index 100% rename from x-pack/plugins/serverless_observability/server/config.ts rename to x-pack/solutions/observability/plugins/serverless_observability/server/config.ts diff --git a/x-pack/plugins/serverless_observability/server/index.ts b/x-pack/solutions/observability/plugins/serverless_observability/server/index.ts similarity index 100% rename from x-pack/plugins/serverless_observability/server/index.ts rename to x-pack/solutions/observability/plugins/serverless_observability/server/index.ts diff --git a/x-pack/plugins/serverless_observability/server/plugin.ts b/x-pack/solutions/observability/plugins/serverless_observability/server/plugin.ts similarity index 100% rename from x-pack/plugins/serverless_observability/server/plugin.ts rename to x-pack/solutions/observability/plugins/serverless_observability/server/plugin.ts diff --git a/x-pack/plugins/serverless_observability/server/types.ts b/x-pack/solutions/observability/plugins/serverless_observability/server/types.ts similarity index 100% rename from x-pack/plugins/serverless_observability/server/types.ts rename to x-pack/solutions/observability/plugins/serverless_observability/server/types.ts diff --git a/x-pack/solutions/observability/plugins/serverless_observability/tsconfig.json b/x-pack/solutions/observability/plugins/serverless_observability/tsconfig.json new file mode 100644 index 0000000000000..11bf6220cf12d --- /dev/null +++ b/x-pack/solutions/observability/plugins/serverless_observability/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "common/**/*.ts", + "public/**/*.ts", + "public/**/*.tsx", + "server/**/*.ts", + "../../../../../typings/**/*" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/config-schema", + "@kbn/management-plugin", + "@kbn/serverless", + "@kbn/observability-shared-plugin", + "@kbn/i18n", + "@kbn/management-cards-navigation", + "@kbn/data-plugin", + "@kbn/observability-plugin", + "@kbn/io-ts-utils", + "@kbn/serverless-observability-settings", + "@kbn/core-chrome-browser", + "@kbn/discover-plugin", + "@kbn/security-plugin", + "@kbn/search-types", + "@kbn/streams-plugin", + ] +} diff --git a/x-pack/plugins/observability_solution/slo/.storybook/jest_setup.js b/x-pack/solutions/observability/plugins/slo/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/slo/.storybook/jest_setup.js rename to x-pack/solutions/observability/plugins/slo/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/slo/.storybook/main.js b/x-pack/solutions/observability/plugins/slo/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/slo/.storybook/main.js rename to x-pack/solutions/observability/plugins/slo/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/slo/.storybook/preview.js b/x-pack/solutions/observability/plugins/slo/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/slo/.storybook/preview.js rename to x-pack/solutions/observability/plugins/slo/.storybook/preview.js diff --git a/x-pack/plugins/observability_solution/slo/README.md b/x-pack/solutions/observability/plugins/slo/README.md similarity index 100% rename from x-pack/plugins/observability_solution/slo/README.md rename to x-pack/solutions/observability/plugins/slo/README.md diff --git a/x-pack/plugins/observability_solution/slo/common/config.ts b/x-pack/solutions/observability/plugins/slo/common/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/config.ts rename to x-pack/solutions/observability/plugins/slo/common/config.ts diff --git a/x-pack/plugins/observability_solution/slo/common/constants.ts b/x-pack/solutions/observability/plugins/slo/common/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/constants.ts rename to x-pack/solutions/observability/plugins/slo/common/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/common/field_names/slo.ts b/x-pack/solutions/observability/plugins/slo/common/field_names/slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/field_names/slo.ts rename to x-pack/solutions/observability/plugins/slo/common/field_names/slo.ts diff --git a/x-pack/plugins/observability_solution/slo/common/i18n.ts b/x-pack/solutions/observability/plugins/slo/common/i18n.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/i18n.ts rename to x-pack/solutions/observability/plugins/slo/common/i18n.ts diff --git a/x-pack/plugins/observability_solution/slo/common/index.ts b/x-pack/solutions/observability/plugins/slo/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/index.ts rename to x-pack/solutions/observability/plugins/slo/common/index.ts diff --git a/x-pack/plugins/observability_solution/slo/common/locators/paths.ts b/x-pack/solutions/observability/plugins/slo/common/locators/paths.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/locators/paths.ts rename to x-pack/solutions/observability/plugins/slo/common/locators/paths.ts diff --git a/x-pack/plugins/observability_solution/slo/common/parse_kuery.ts b/x-pack/solutions/observability/plugins/slo/common/parse_kuery.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/parse_kuery.ts rename to x-pack/solutions/observability/plugins/slo/common/parse_kuery.ts diff --git a/x-pack/plugins/observability_solution/slo/common/summary_indices.test.ts b/x-pack/solutions/observability/plugins/slo/common/summary_indices.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/summary_indices.test.ts rename to x-pack/solutions/observability/plugins/slo/common/summary_indices.test.ts diff --git a/x-pack/plugins/observability_solution/slo/common/summary_indices.ts b/x-pack/solutions/observability/plugins/slo/common/summary_indices.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/summary_indices.ts rename to x-pack/solutions/observability/plugins/slo/common/summary_indices.ts diff --git a/x-pack/plugins/observability_solution/slo/common/types.ts b/x-pack/solutions/observability/plugins/slo/common/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/common/types.ts rename to x-pack/solutions/observability/plugins/slo/common/types.ts diff --git a/x-pack/plugins/observability_solution/slo/dev_docs/slo.md b/x-pack/solutions/observability/plugins/slo/dev_docs/slo.md similarity index 98% rename from x-pack/plugins/observability_solution/slo/dev_docs/slo.md rename to x-pack/solutions/observability/plugins/slo/dev_docs/slo.md index a12f8822fc9e9..3eb4c6f898352 100644 --- a/x-pack/plugins/observability_solution/slo/dev_docs/slo.md +++ b/x-pack/solutions/observability/plugins/slo/dev_docs/slo.md @@ -8,7 +8,7 @@ Starting in 8.8, SLO is enabled by default. SLO is GA since 8.12 1. Data generation > [!TIP] -> The following commands uses [kbn-data-forge](../../../../packages/kbn-data-forge/README.md) to generate some data for developping or testing SLOs +> The following commands uses [kbn-data-forge](../../../../../platform/packages/shared/kbn-data-forge/README.md) to generate some data for developping or testing SLOs Basic command to generate 7 days of data with a couple of services: ```sh diff --git a/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/README.md b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/README.md new file mode 100644 index 0000000000000..198dc9a405685 --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/README.md @@ -0,0 +1,35 @@ +# OpenAPI (Experimental) + +The current self-contained spec file is [as YAML](https://raw.githubusercontent.com/elastic/kibana/master/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml) and can be used for online tools like those found at . +This spec is experimental and may be incomplete or change later. + +A guide about the OpenApi specification can be found at [https://swagger.io/docs/specification/about/](https://swagger.io/docs/specification/about/). + +## The `openapi/slo` folder + +- `entrypoint.yaml` is the overview file which pulls together all the paths and components. +- [Paths](paths/README.md): this defines each endpoint. A path can have one operation per http method. +- [Components](components/README.md): Reusable components + +## Tools + +It is possible to manually validate the docs before bundling them with the following +command in the `x-pack/solutions/observability/plugins/slo/docs/openapi/slo` folder: + +```bash +make validate +``` + +Then you can generate the `bundled` files by running the following command- this target will automatically validate inputs and lint the result: + +```bash +make bundle +``` + +To lint the generated bundle manually, run: + +```bash +make lint +``` + +To join these files with the rest of the Kibana APIs, refer to `oas_docs/README.md` diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.json b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/bundled.json similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.json rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/bundled.json diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/bundled.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/bundled.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/bundled.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/README.md b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/README.md similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/README.md rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/README.md diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/headers/kbn_xsrf.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/headers/kbn_xsrf.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/headers/kbn_xsrf.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/headers/kbn_xsrf.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/parameters/slo_id.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/parameters/slo_id.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/parameters/slo_id.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/parameters/slo_id.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/parameters/space_id.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/parameters/space_id.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/parameters/space_id.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/parameters/space_id.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/400_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/400_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/400_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/400_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/401_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/401_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/401_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/401_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/403_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/403_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/403_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/403_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/404_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/404_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/404_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/404_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/409_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/409_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/409_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/409_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/budgeting_method.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/budgeting_method.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/budgeting_method.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/budgeting_method.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/create_slo_request.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/create_slo_request.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/create_slo_request.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/create_slo_request.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/create_slo_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/create_slo_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/create_slo_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/create_slo_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/delete_slo_instances_request.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/delete_slo_instances_request.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/delete_slo_instances_request.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/delete_slo_instances_request.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/error_budget.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/error_budget.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/error_budget.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/error_budget.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/filter.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/filter.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/filter.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/filter.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/filter_meta.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/filter_meta.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/filter_meta.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/filter_meta.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/find_slo_definitions_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/find_slo_definitions_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/find_slo_definitions_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/find_slo_definitions_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/find_slo_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/find_slo_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/find_slo_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/find_slo_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/group_by.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/group_by.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/group_by.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/group_by.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/historical_summary_request.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/historical_summary_request.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/historical_summary_request.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/historical_summary_request.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/historical_summary_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/historical_summary_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/historical_summary_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/historical_summary_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_apm_availability.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_apm_availability.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_apm_availability.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_apm_availability.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_apm_latency.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_apm_latency.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_apm_latency.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_apm_latency.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_custom_kql.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_custom_kql.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_custom_kql.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_custom_kql.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_custom_metric.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_custom_metric.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_custom_metric.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_custom_metric.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_histogram.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_histogram.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_histogram.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_histogram.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_timeslice_metric.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_timeslice_metric.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/indicator_properties_timeslice_metric.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/indicator_properties_timeslice_metric.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/kql_with_filters.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/kql_with_filters.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/kql_with_filters.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/kql_with_filters.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/kql_with_filters_good.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/kql_with_filters_good.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/kql_with_filters_good.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/kql_with_filters_good.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/kql_with_filters_total.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/kql_with_filters_total.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/kql_with_filters_total.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/kql_with_filters_total.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/objective.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/objective.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/objective.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/objective.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/settings.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/settings.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/settings.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/settings.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/slo_definition_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/slo_definition_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/slo_definition_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/slo_definition_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/slo_with_summary_response.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/slo_with_summary_response.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/slo_with_summary_response.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/slo_with_summary_response.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/summary.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/summary.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/summary.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/summary.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/summary_status.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/summary_status.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/summary_status.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/summary_status.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/time_window.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/time_window.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/time_window.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/time_window.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/timeslice_metric_basic_metric_with_field.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/timeslice_metric_basic_metric_with_field.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/timeslice_metric_basic_metric_with_field.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/timeslice_metric_basic_metric_with_field.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/timeslice_metric_doc_count_metric.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/timeslice_metric_doc_count_metric.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/timeslice_metric_doc_count_metric.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/timeslice_metric_doc_count_metric.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/timeslice_metric_percentile_metric.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/timeslice_metric_percentile_metric.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/timeslice_metric_percentile_metric.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/timeslice_metric_percentile_metric.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/update_slo_request.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/update_slo_request.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/components/schemas/update_slo_request.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/components/schemas/update_slo_request.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/entrypoint.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/entrypoint.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/entrypoint.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/entrypoint.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/makefile b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/makefile similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/makefile rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/makefile diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/README.md b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/README.md similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/README.md rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/README.md diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_definitions.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_definitions.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_definitions.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_definitions.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_delete_instances.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_delete_instances.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_delete_instances.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_delete_instances.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_historical_summary.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_historical_summary.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_historical_summary.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@_historical_summary.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@_reset.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@_reset.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@_reset.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@_reset.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@disable.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@disable.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@disable.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@disable.yaml diff --git a/x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@enable.yaml b/x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@enable.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@enable.yaml rename to x-pack/solutions/observability/plugins/slo/docs/openapi/slo/paths/s@{spaceid}@api@slos@{sloid}@enable.yaml diff --git a/x-pack/plugins/observability_solution/slo/e2e/journeys/annotation_list.journey.ts b/x-pack/solutions/observability/plugins/slo/e2e/journeys/annotation_list.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/e2e/journeys/annotation_list.journey.ts rename to x-pack/solutions/observability/plugins/slo/e2e/journeys/annotation_list.journey.ts diff --git a/x-pack/plugins/observability_solution/slo/e2e/journeys/index.ts b/x-pack/solutions/observability/plugins/slo/e2e/journeys/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/e2e/journeys/index.ts rename to x-pack/solutions/observability/plugins/slo/e2e/journeys/index.ts diff --git a/x-pack/plugins/observability_solution/slo/e2e/journeys/slos_overview.journey.ts b/x-pack/solutions/observability/plugins/slo/e2e/journeys/slos_overview.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/e2e/journeys/slos_overview.journey.ts rename to x-pack/solutions/observability/plugins/slo/e2e/journeys/slos_overview.journey.ts diff --git a/x-pack/plugins/observability_solution/slo/e2e/page_objects/slo_app.tsx b/x-pack/solutions/observability/plugins/slo/e2e/page_objects/slo_app.tsx similarity index 93% rename from x-pack/plugins/observability_solution/slo/e2e/page_objects/slo_app.tsx rename to x-pack/solutions/observability/plugins/slo/e2e/page_objects/slo_app.tsx index 5310bffb03d92..a859c789b4e37 100644 --- a/x-pack/plugins/observability_solution/slo/e2e/page_objects/slo_app.tsx +++ b/x-pack/solutions/observability/plugins/slo/e2e/page_objects/slo_app.tsx @@ -7,7 +7,7 @@ import { Page } from '@elastic/synthetics'; import { loginPageProvider } from '@kbn/synthetics-e2e/page_objects/login'; import { utilsPageProvider } from '@kbn/synthetics-e2e/page_objects/utils'; -import { recordVideo } from '@kbn/synthetics-e2e/helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; export function sloAppPageProvider({ page, kibanaUrl }: { page: Page; kibanaUrl: string }) { page.setDefaultTimeout(60 * 1000); diff --git a/x-pack/plugins/observability_solution/slo/e2e/services/annotation_data_service.ts b/x-pack/solutions/observability/plugins/slo/e2e/services/annotation_data_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/e2e/services/annotation_data_service.ts rename to x-pack/solutions/observability/plugins/slo/e2e/services/annotation_data_service.ts diff --git a/x-pack/plugins/observability_solution/slo/e2e/services/slo_data_service.ts b/x-pack/solutions/observability/plugins/slo/e2e/services/slo_data_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/e2e/services/slo_data_service.ts rename to x-pack/solutions/observability/plugins/slo/e2e/services/slo_data_service.ts diff --git a/x-pack/solutions/observability/plugins/slo/e2e/synthetics_run.ts b/x-pack/solutions/observability/plugins/slo/e2e/synthetics_run.ts new file mode 100644 index 0000000000000..0d32aae207e4e --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/e2e/synthetics_run.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { FtrConfigProviderContext } from '@kbn/test'; +import { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; + +const { headless, grep, bail: pauseOnError } = argv; + +async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { + const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); + return { + ...kibanaConfig.getAll(), + testRunner: async ({ getService }: any) => { + const syntheticsRunner = new SyntheticsRunner(getService, { + headless, + match: grep, + pauseOnError, + }); + + await syntheticsRunner.setup(); + + await syntheticsRunner.loadTestFiles(async () => { + require('./journeys'); + }); + + await syntheticsRunner.run(); + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default runE2ETests; diff --git a/x-pack/solutions/observability/plugins/slo/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/slo/e2e/tsconfig.json new file mode 100644 index 0000000000000..420d48f662617 --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/e2e/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "exclude": ["tmp", "target/**/*"], + "include": ["**/*"], + "compilerOptions": { + "outDir": "target/types", + "types": [ "node"], + "isolatedModules": false, + }, + "kbn_references": [ + "@kbn/test", + "@kbn/ftr-common-functional-services", + "@kbn/data-forge", + "@kbn/synthetics-e2e", + "@kbn/observability-synthetics-test-data", + ] +} diff --git a/x-pack/solutions/observability/plugins/slo/emotion.d.ts b/x-pack/solutions/observability/plugins/slo/emotion.d.ts new file mode 100644 index 0000000000000..213178080e536 --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/emotion.d.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import '@emotion/react'; +import type { UseEuiTheme } from '@elastic/eui'; + +declare module '@emotion/react' { + // eslint-disable-next-line @typescript-eslint/no-empty-interface + export interface Theme extends UseEuiTheme {} +} diff --git a/x-pack/solutions/observability/plugins/slo/jest.config.js b/x-pack/solutions/observability/plugins/slo/jest.config.js new file mode 100644 index 0000000000000..5de5881b39250 --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/slo'], + setupFiles: ['/x-pack/solutions/observability/plugins/slo/.storybook/jest_setup.js'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/observability/plugins/slo', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/slo/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/slo/kibana.jsonc b/x-pack/solutions/observability/plugins/slo/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/slo/kibana.jsonc rename to x-pack/solutions/observability/plugins/slo/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/slo/public/application.tsx b/x-pack/solutions/observability/plugins/slo/public/application.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/application.tsx rename to x-pack/solutions/observability/plugins/slo/public/application.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/alert_details_app_section.tsx b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/alert_details_app_section.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/alert_details_app_section.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/alert_details_app_section.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/apm/apm_alert_details.tsx b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/apm/apm_alert_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/apm/apm_alert_details.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/apm/apm_alert_details.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/apm/embeddable_root.tsx b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/apm/embeddable_root.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/apm/embeddable_root.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/apm/embeddable_root.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/custom_kql_panels.tsx b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/custom_kql_panels.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/custom_kql_panels.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/custom_kql_panels.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/log_rate_analysis_query.test.ts b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/log_rate_analysis_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/log_rate_analysis_query.test.ts rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/log_rate_analysis_query.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/log_rate_analysis_query.ts b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/log_rate_analysis_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/log_rate_analysis_query.ts rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/helpers/log_rate_analysis_query.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/log_rate_analysis_panel.tsx b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/log_rate_analysis_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_kql/log_rate_analysis_panel.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_kql/log_rate_analysis_panel.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_panels.tsx b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_panels.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/components/custom_panels/custom_panels.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/custom_panels/custom_panels.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/components/error_rate/error_rate_panel.tsx b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/error_rate/error_rate_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/components/error_rate/error_rate_panel.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/components/error_rate/error_rate_panel.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/types.ts b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/types.ts rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/types.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/utils/alert.ts b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/utils/alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/utils/alert.ts rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/utils/alert.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/utils/last_duration_i18n.ts b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/utils/last_duration_i18n.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/utils/last_duration_i18n.ts rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/utils/last_duration_i18n.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/alert_details/utils/time_range.ts b/x-pack/solutions/observability/plugins/slo/public/components/alert_details/utils/time_range.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/alert_details/utils/time_range.ts rename to x-pack/solutions/observability/plugins/slo/public/components/alert_details/utils/time_range.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/alert_time_table.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/alert_time_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/alert_time_table.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/alert_time_table.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/budget_consumed.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/budget_consumed.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/budget_consumed.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/budget_consumed.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/burn_rate.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/burn_rate.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/burn_rate.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/burn_rate.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/burn_rate_rule_editor.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/burn_rate_rule_editor.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/burn_rate_rule_editor.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/burn_rate_rule_editor.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/burn_rate_rule_editor.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/burn_rate_rule_editor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/burn_rate_rule_editor.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/burn_rate_rule_editor.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/constants.ts b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/constants.ts rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/dependencies.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/dependencies.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/dependencies.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/dependencies.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/dependency_editor.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/dependency_editor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/dependency_editor.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/dependency_editor.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/index.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/index.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/index.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/long_window_duration.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/long_window_duration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/long_window_duration.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/long_window_duration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/short_window_duration.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/short_window_duration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/short_window_duration.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/short_window_duration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/slo_selector.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/slo_selector.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/slo_selector.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/slo_selector.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/slo_selector.test.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/slo_selector.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/slo_selector.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/slo_selector.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/slo_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/slo_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/slo_selector.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/slo_selector.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/validation.test.ts b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/validation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/validation.test.ts rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/validation.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/validation.ts b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/validation.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/validation.ts rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/validation.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/windows.tsx b/x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/windows.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/burn_rate_rule_editor/windows.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/burn_rate_rule_editor/windows.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/good_bad_events_chart/good_bad_events_chart.tsx b/x-pack/solutions/observability/plugins/slo/public/components/good_bad_events_chart/good_bad_events_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/good_bad_events_chart/good_bad_events_chart.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/good_bad_events_chart/good_bad_events_chart.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/header_menu/header_menu.tsx b/x-pack/solutions/observability/plugins/slo/public/components/header_menu/header_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/header_menu/header_menu.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/header_menu/header_menu.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/loading_state.tsx b/x-pack/solutions/observability/plugins/slo/public/components/loading_state.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/loading_state.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/loading_state.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/auto_refresh_button/auto_refresh_button.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/auto_refresh_button/auto_refresh_button.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/auto_refresh_button/auto_refresh_button.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/auto_refresh_button/auto_refresh_button.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/auto_refresh_button/auto_refresh_button.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/auto_refresh_button/auto_refresh_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/auto_refresh_button/auto_refresh_button.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/auto_refresh_button/auto_refresh_button.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/auto_refresh_button/hooks/use_auto_refresh_storage.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/auto_refresh_button/hooks/use_auto_refresh_storage.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/auto_refresh_button/hooks/use_auto_refresh_storage.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/auto_refresh_button/hooks/use_auto_refresh_storage.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/auto_refresh_button/index.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/auto_refresh_button/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/auto_refresh_button/index.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/auto_refresh_button/index.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/delete_confirmation_modal/slo_delete_confirmation_modal.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/delete_confirmation_modal/slo_delete_confirmation_modal.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/delete_confirmation_modal/slo_delete_confirmation_modal.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/delete_confirmation_modal/slo_delete_confirmation_modal.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/delete_confirmation_modal/slo_delete_confirmation_modal.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/delete_confirmation_modal/slo_delete_confirmation_modal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/delete_confirmation_modal/slo_delete_confirmation_modal.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/delete_confirmation_modal/slo_delete_confirmation_modal.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/error_rate_chart.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/error_rate_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/error_rate_chart.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/error_rate_chart.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/index.ts b/x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/index.ts rename to x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/index.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/use_lens_definition.ts b/x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/use_lens_definition.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/use_lens_definition.ts rename to x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/use_lens_definition.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/utils.test.ts b/x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/utils.test.ts rename to x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/utils.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/utils.ts b/x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/error_rate_chart/utils.ts rename to x-pack/solutions/observability/plugins/slo/public/components/slo/error_rate_chart/utils.ts diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/reset_confirmation_modal/slo_reset_confirmation_modal.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/reset_confirmation_modal/slo_reset_confirmation_modal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/reset_confirmation_modal/slo_reset_confirmation_modal.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/reset_confirmation_modal/slo_reset_confirmation_modal.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/simple_burn_rate/burn_rate.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/simple_burn_rate/burn_rate.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/simple_burn_rate/burn_rate.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/simple_burn_rate/burn_rate.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/slo_outdated_callout/index.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/slo_outdated_callout/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/slo_outdated_callout/index.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/slo_outdated_callout/index.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/slo_permissions_callout/index.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/slo_permissions_callout/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/slo_permissions_callout/index.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/slo_permissions_callout/index.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/index.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/index.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/index.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/slo_active_alerts_badge.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/slo_active_alerts_badge.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/slo_active_alerts_badge.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/slo_active_alerts_badge.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/slo_active_alerts_badge.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/slo_active_alerts_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/slo_active_alerts_badge.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/slo_active_alerts_badge.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/slo_status_badge.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/slo_status_badge.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/slo_status_badge.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/slo_status_badge.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/slo_status_badge.tsx b/x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/slo_status_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/slo/slo_status_badge/slo_status_badge.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/slo/slo_status_badge/slo_status_badge.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/components/technical_preview_badge.tsx b/x-pack/solutions/observability/plugins/slo/public/components/technical_preview_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/components/technical_preview_badge.tsx rename to x-pack/solutions/observability/plugins/slo/public/components/technical_preview_badge.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/constants.ts b/x-pack/solutions/observability/plugins/slo/public/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/constants.ts rename to x-pack/solutions/observability/plugins/slo/public/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/public/context/plugin_context.tsx b/x-pack/solutions/observability/plugins/slo/public/context/plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/context/plugin_context.tsx rename to x-pack/solutions/observability/plugins/slo/public/context/plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/data/slo/common.ts b/x-pack/solutions/observability/plugins/slo/public/data/slo/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/data/slo/common.ts rename to x-pack/solutions/observability/plugins/slo/public/data/slo/common.ts diff --git a/x-pack/plugins/observability_solution/slo/public/data/slo/historical_summary_data.ts b/x-pack/solutions/observability/plugins/slo/public/data/slo/historical_summary_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/data/slo/historical_summary_data.ts rename to x-pack/solutions/observability/plugins/slo/public/data/slo/historical_summary_data.ts diff --git a/x-pack/plugins/observability_solution/slo/public/data/slo/indicator.ts b/x-pack/solutions/observability/plugins/slo/public/data/slo/indicator.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/data/slo/indicator.ts rename to x-pack/solutions/observability/plugins/slo/public/data/slo/indicator.ts diff --git a/x-pack/plugins/observability_solution/slo/public/data/slo/slo.ts b/x-pack/solutions/observability/plugins/slo/public/data/slo/slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/data/slo/slo.ts rename to x-pack/solutions/observability/plugins/slo/public/data/slo/slo.ts diff --git a/x-pack/plugins/observability_solution/slo/public/data/slo/time_window.ts b/x-pack/solutions/observability/plugins/slo/public/data/slo/time_window.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/data/slo/time_window.ts rename to x-pack/solutions/observability/plugins/slo/public/data/slo/time_window.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/components/slo_alerts_summary.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/components/slo_alerts_summary.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/components/slo_alerts_summary.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/components/slo_alerts_summary.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/components/slo_alerts_table.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/components/slo_alerts_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/components/slo_alerts_table.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/components/slo_alerts_table.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/components/slo_included_count.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/components/slo_included_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/components/slo_included_count.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/components/slo_included_count.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/constants.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/constants.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_alerts_embeddable_factory.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_alerts_embeddable_factory.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_alerts_embeddable_factory.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_alerts_embeddable_factory.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_alerts_open_configuration.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_alerts_open_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_alerts_open_configuration.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_alerts_open_configuration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_alerts_wrapper.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_alerts_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_alerts_wrapper.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_alerts_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_configuration.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_configuration.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_configuration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/slo_selector.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/slo_selector.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/types.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/alerts/types.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/alerts/types.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/burn_rate.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/burn_rate.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/burn_rate.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/burn_rate.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/burn_rate_react_embeddable_factory.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/burn_rate_react_embeddable_factory.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/burn_rate_react_embeddable_factory.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/burn_rate_react_embeddable_factory.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/configuration.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/configuration.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/configuration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/constants.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/constants.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/open_configuration.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/open_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/open_configuration.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/open_configuration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/types.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/burn_rate/types.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/burn_rate/types.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/common/slo_overview_details.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/common/slo_overview_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/common/slo_overview_details.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/common/slo_overview_details.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/constants.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/constants.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/constants.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/constants.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/error_budget_burn_down.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/error_budget_burn_down.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/error_budget_burn_down.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/error_budget_burn_down.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/error_budget_open_configuration.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/error_budget_open_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/error_budget_open_configuration.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/error_budget_open_configuration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/error_budget_react_embeddable_factory.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/error_budget_react_embeddable_factory.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/error_budget_react_embeddable_factory.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/error_budget_react_embeddable_factory.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/slo_configuration.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/slo_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/slo_configuration.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/slo_configuration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/types.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/error_budget/types.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/error_budget/types.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/constants.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/constants.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/group_view.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/group_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/group_view.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/group_view.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/helpers/__snapshots__/build_kql_query.test.ts.snap b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/helpers/__snapshots__/build_kql_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/helpers/__snapshots__/build_kql_query.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/helpers/__snapshots__/build_kql_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/helpers/build_kql_query.test.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/helpers/build_kql_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/helpers/build_kql_query.test.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/helpers/build_kql_query.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/helpers/build_kql_query.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/helpers/build_kql_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/helpers/build_kql_query.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/helpers/build_kql_query.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/slo_group_filters.scss b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/slo_group_filters.scss similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/slo_group_filters.scss rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/slo_group_filters.scss diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/slo_group_filters.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/slo_group_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/group_view/slo_group_filters.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/slo_group_filters.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/overview_mode_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/overview_mode_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/overview_mode_selector.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/overview_mode_selector.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_configuration.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_configuration.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_configuration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_embeddable_factory.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_embeddable_factory.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_embeddable_factory.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_embeddable_factory.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_overview.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_overview.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_overview.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_overview_grid.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_overview_grid.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_overview_grid.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_overview_grid.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_overview_open_configuration.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_overview_open_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/slo_overview_open_configuration.tsx rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/slo_overview_open_configuration.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/types.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/overview/types.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/types.ts diff --git a/x-pack/plugins/observability_solution/slo/public/embeddable/slo/types.ts b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/embeddable/slo/types.ts rename to x-pack/solutions/observability/plugins/slo/public/embeddable/slo/types.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_capabilities.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_capabilities.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_capabilities.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_fetch_active_alerts.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_fetch_active_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_fetch_active_alerts.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_fetch_active_alerts.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_fetch_apm_suggestions.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_fetch_apm_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_fetch_apm_suggestions.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_fetch_apm_suggestions.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_fetch_historical_summary.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_fetch_historical_summary.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_fetch_historical_summary.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_fetch_historical_summary.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_fetch_slo_list.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_fetch_slo_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/__storybook_mocks__/use_fetch_slo_list.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/__storybook_mocks__/use_fetch_slo_list.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/active_alerts.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/active_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/active_alerts.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/active_alerts.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/helpers/convert_error_for_use_in_toast.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/helpers/convert_error_for_use_in_toast.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/helpers/convert_error_for_use_in_toast.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/helpers/convert_error_for_use_in_toast.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/query_key_factory.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/query_key_factory.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/query_key_factory.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/query_key_factory.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_alerts_url.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_alerts_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_alerts_url.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_alerts_url.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_capabilities.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_capabilities.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_capabilities.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_clone_slo.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_clone_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_clone_slo.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_clone_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_create_burn_rate_rule.tsx b/x-pack/solutions/observability/plugins/slo/public/hooks/use_create_burn_rate_rule.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_create_burn_rate_rule.tsx rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_create_burn_rate_rule.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_create_data_view.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_create_data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_create_data_view.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_create_data_view.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_create_slo.tsx b/x-pack/solutions/observability/plugins/slo/public/hooks/use_create_slo.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_create_slo.tsx rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_create_slo.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_delete_slo.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_delete_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_delete_slo.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_delete_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_delete_slo_instance.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_delete_slo_instance.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_delete_slo_instance.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_delete_slo_instance.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_active_alerts.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_active_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_active_alerts.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_active_alerts.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_apm_indices.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_apm_indices.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_apm_indices.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_apm_indices.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_apm_suggestions.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_apm_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_apm_suggestions.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_apm_suggestions.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_global_diagnosis.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_global_diagnosis.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_global_diagnosis.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_global_diagnosis.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_group_by_cardinality.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_group_by_cardinality.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_group_by_cardinality.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_group_by_cardinality.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_historical_summary.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_historical_summary.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_historical_summary.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_historical_summary.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_indices.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_indices.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_indices.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_indices.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_rules_for_slo.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_rules_for_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_rules_for_slo.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_rules_for_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_burn_rates.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_burn_rates.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_burn_rates.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_burn_rates.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_definitions.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_definitions.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_definitions.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_definitions.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_details.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_details.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_details.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_groups.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_groups.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_groups.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_groups.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_health.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_health.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_health.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_health.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_inspect.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_inspect.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_inspect.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_inspect.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_list.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slo_list.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slo_list.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slos_with_burn_rate_rules.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slos_with_burn_rate_rules.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_slos_with_burn_rate_rules.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_slos_with_burn_rate_rules.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_synthetics_suggestions.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_synthetics_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_fetch_synthetics_suggestions.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_fetch_synthetics_suggestions.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_get_filtered_rule_types.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_get_filtered_rule_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_get_filtered_rule_types.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_get_filtered_rule_types.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_get_preview_data.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_get_preview_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_get_preview_data.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_get_preview_data.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_kibana.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_kibana.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_license.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_license.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_license.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_license.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_permissions.test.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_permissions.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_permissions.test.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_permissions.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_permissions.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_permissions.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_permissions.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_permissions.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_plugin_context.tsx b/x-pack/solutions/observability/plugins/slo/public/hooks/use_plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_plugin_context.tsx rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_reset_slo.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_reset_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_reset_slo.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_reset_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_space.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_space.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_space.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_space.ts diff --git a/x-pack/plugins/observability_solution/slo/public/hooks/use_update_slo.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_update_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/hooks/use_update_slo.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_update_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/public/index.ts b/x-pack/solutions/observability/plugins/slo/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/index.ts rename to x-pack/solutions/observability/plugins/slo/public/index.ts diff --git a/x-pack/plugins/observability_solution/slo/public/locators/slo_details.test.ts b/x-pack/solutions/observability/plugins/slo/public/locators/slo_details.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/locators/slo_details.test.ts rename to x-pack/solutions/observability/plugins/slo/public/locators/slo_details.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/locators/slo_details.ts b/x-pack/solutions/observability/plugins/slo/public/locators/slo_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/locators/slo_details.ts rename to x-pack/solutions/observability/plugins/slo/public/locators/slo_details.ts diff --git a/x-pack/plugins/observability_solution/slo/public/locators/slo_edit.test.ts b/x-pack/solutions/observability/plugins/slo/public/locators/slo_edit.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/locators/slo_edit.test.ts rename to x-pack/solutions/observability/plugins/slo/public/locators/slo_edit.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/locators/slo_edit.ts b/x-pack/solutions/observability/plugins/slo/public/locators/slo_edit.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/locators/slo_edit.ts rename to x-pack/solutions/observability/plugins/slo/public/locators/slo_edit.ts diff --git a/x-pack/plugins/observability_solution/slo/public/locators/slo_list.test.ts b/x-pack/solutions/observability/plugins/slo/public/locators/slo_list.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/locators/slo_list.test.ts rename to x-pack/solutions/observability/plugins/slo/public/locators/slo_list.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/locators/slo_list.ts b/x-pack/solutions/observability/plugins/slo/public/locators/slo_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/locators/slo_list.ts rename to x-pack/solutions/observability/plugins/slo/public/locators/slo_list.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/404.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/404.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/404.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/404.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_panel.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_panel.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_panel.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_status.test.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_status.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_status.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_status.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_status.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_status.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/burn_rate_panel/burn_rate_status.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/burn_rate_panel/utils.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/burn_rate_panel/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/burn_rate_panel/utils.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/burn_rate_panel/utils.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_actions.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_actions.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_actions.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_chart.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_chart.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_chart.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_chart_panel.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_chart_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_chart_panel.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_chart_panel.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_header.test.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_header.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_header.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_header.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_header.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/error_budget_header.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/error_budget_header.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/events_area_chart.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/events_area_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/events_area_chart.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/events_area_chart.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/events_chart_panel.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/events_chart_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/events_chart_panel.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/events_chart_panel.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/groupings/slo_grouping_value_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/groupings/slo_grouping_value_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/groupings/slo_grouping_value_selector.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/groupings/slo_grouping_value_selector.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/groupings/slo_groupings.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/groupings/slo_groupings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/groupings/slo_groupings.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/groupings/slo_groupings.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/header_control.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/header_control.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/header_control.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/header_control.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/header_control.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/header_control.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/header_control.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/header_control.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/header_title.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/header_title.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/header_title.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/header_title.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/header_title.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/header_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/header_title.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/header_title.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/historical_data_charts.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/historical_data_charts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/historical_data_charts.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/historical_data_charts.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/history/slo_details_history.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/history/slo_details_history.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/history/slo_details_history.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/history/slo_details_history.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/apm_indicator_overview.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/apm_indicator_overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/apm_indicator_overview.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/apm_indicator_overview.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/display_query.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/display_query.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/display_query.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/display_query.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/overview.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/overview.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/overview.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/overview.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/overview.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/overview.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/overview.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/overview_item.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/overview_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/overview_item.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/overview_item.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/synthetics_indicator_overview.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/synthetics_indicator_overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/overview/synthetics_indicator_overview.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/overview/synthetics_indicator_overview.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/sli_chart_panel.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/sli_chart_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/sli_chart_panel.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/sli_chart_panel.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_detail_alerts.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_detail_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_detail_alerts.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_detail_alerts.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_details.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_details.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_details.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_details.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_details.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_details.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_details.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_health_callout.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_health_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_health_callout.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_health_callout.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_remote_callout.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_remote_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/slo_remote_callout.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/slo_remote_callout.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/timeslice_annotation.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/timeslice_annotation.tsx similarity index 93% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/timeslice_annotation.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/timeslice_annotation.tsx index c1fd80bc53bc0..03fca2e3ff433 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/timeslice_annotation.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/timeslice_annotation.tsx @@ -35,7 +35,7 @@ export function TimesliceAnnotation({ slo, maxValue, minValue }: Props) { style={{ line: { strokeWidth: 2, - stroke: euiTheme.colors.warning || '#000', + stroke: euiTheme.colors.warning, opacity: 1, }, }} @@ -55,7 +55,7 @@ export function TimesliceAnnotation({ slo, maxValue, minValue }: Props) { }, ]} id="thresholdShade" - style={{ fill: euiTheme.colors.warning || '#000', opacity: 0.1 }} + style={{ fill: euiTheme.colors.warning, opacity: 0.1 }} /> ) : null; diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/wide_chart.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/wide_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/components/wide_chart.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/components/wide_chart.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_fetch_burn_rate_windows.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_fetch_burn_rate_windows.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_fetch_burn_rate_windows.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_fetch_burn_rate_windows.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_fetch_slo_instances.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_fetch_slo_instances.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_fetch_slo_instances.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_fetch_slo_instances.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_get_query_params.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_get_query_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_get_query_params.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_get_query_params.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_selected_tab.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_selected_tab.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_selected_tab.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_selected_tab.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_slo_actions.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_slo_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_slo_actions.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_slo_actions.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_slo_details_tabs.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_slo_details_tabs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/hooks/use_slo_details_tabs.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/hooks/use_slo_details_tabs.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/slo_details.test.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/slo_details.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/slo_details.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/slo_details.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/slo_details.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/slo_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/slo_details.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/slo_details.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_details/types.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_details/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_details/types.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_details/types.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/data_preview_chart.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/data_preview_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/data_preview_chart.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/data_preview_chart.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/documents_table.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/documents_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/documents_table.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/documents_table.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/equivalent_api_request.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/equivalent_api_request.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/equivalent_api_request.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/equivalent_api_request.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_cardinality.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/group_by_cardinality.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_cardinality.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/group_by_cardinality.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field.test.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/group_by_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/group_by_field.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/group_by_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/group_by_field.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/group_by_field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field_selector.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/group_by_field_selector.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/optional_text.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/optional_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/optional_text.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/optional_text.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/query_builder.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/query_builder.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/query_builder.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/query_builder.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/query_builder.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/query_builder.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/query_builder.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/query_builder.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/query_documents_flyout.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/query_documents_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/query_documents_flyout.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/query_documents_flyout.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/query_search_bar.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/query_search_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/query_search_bar.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/query_search_bar.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/runtime_field_used.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/runtime_field_used.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/runtime_field_used.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/runtime_field_used.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/slo_inspect/code_block_accordion.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/code_block_accordion.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/slo_inspect/code_block_accordion.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/code_block_accordion.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/slo_inspect/loading_state.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/loading_state.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/slo_inspect/loading_state.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/loading_state.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/slo_inspect/req_code_viewer.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/req_code_viewer.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/slo_inspect/req_code_viewer.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/req_code_viewer.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/slo_inspect/slo_inspect.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/slo_inspect.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/slo_inspect/slo_inspect.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/slo_inspect/slo_inspect.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/timestamp_field_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/timestamp_field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/timestamp_field_selector.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/timestamp_field_selector.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/use_field_sidebar.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/use_field_sidebar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/use_field_sidebar.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/use_field_sidebar.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/use_table_docs.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/use_table_docs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/use_table_docs.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/common/use_table_docs.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/advanced_settings/advanced_settings.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/advanced_settings/advanced_settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/advanced_settings/advanced_settings.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/advanced_settings/advanced_settings.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/advanced_settings/sync_field_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/advanced_settings/sync_field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/advanced_settings/sync_field_selector.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/advanced_settings/sync_field_selector.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_availability/apm_availability_indicator_type_form.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_availability/apm_availability_indicator_type_form.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_availability/apm_availability_indicator_type_form.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_availability/apm_availability_indicator_type_form.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_availability/apm_availability_indicator_type_form.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_availability/apm_availability_indicator_type_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_availability/apm_availability_indicator_type_form.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_availability/apm_availability_indicator_type_form.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/field_selector.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/field_selector.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/field_selector.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/field_selector.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/field_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/field_selector.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/field_selector.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/get_group_by_cardinality_filters.test.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/get_group_by_cardinality_filters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/get_group_by_cardinality_filters.test.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/get_group_by_cardinality_filters.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/get_group_by_cardinality_filters.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/get_group_by_cardinality_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/get_group_by_cardinality_filters.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/get_group_by_cardinality_filters.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/use_apm_default_values.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/use_apm_default_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_common/use_apm_default_values.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_common/use_apm_default_values.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_latency/apm_latency_indicator_type_form.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_latency/apm_latency_indicator_type_form.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_latency/apm_latency_indicator_type_form.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_latency/apm_latency_indicator_type_form.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_latency/apm_latency_indicator_type_form.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_latency/apm_latency_indicator_type_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/apm_latency/apm_latency_indicator_type_form.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/apm_latency/apm_latency_indicator_type_form.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_and_timestamp_field.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_and_timestamp_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_and_timestamp_field.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_and_timestamp_field.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_selection.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_selection.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_selection.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_selection.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_selection.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_selection.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_selection.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_common/index_selection.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_common/use_adhoc_data_views.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_common/use_adhoc_data_views.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_common/use_adhoc_data_views.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_common/use_adhoc_data_views.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_kql/custom_kql_indicator_type_form.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_kql/custom_kql_indicator_type_form.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_kql/custom_kql_indicator_type_form.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_kql/custom_kql_indicator_type_form.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_kql/custom_kql_indicator_type_form.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_kql/custom_kql_indicator_type_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_kql/custom_kql_indicator_type_form.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_kql/custom_kql_indicator_type_form.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_metric/custom_metric_type_form.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_metric/custom_metric_type_form.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_metric/custom_metric_type_form.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_metric/custom_metric_type_form.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_metric/custom_metric_type_form.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_metric/custom_metric_type_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_metric/custom_metric_type_form.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_metric/custom_metric_type_form.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_metric/metric_indicator.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_metric/metric_indicator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/custom_metric/metric_indicator.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/custom_metric/metric_indicator.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/histogram/histogram_indicator.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/histogram/histogram_indicator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/histogram/histogram_indicator.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/histogram/histogram_indicator.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/histogram/histogram_indicator_type_form.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/histogram/histogram_indicator_type_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/histogram/histogram_indicator_type_form.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/histogram/histogram_indicator_type_form.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/synthetics_availability/synthetics_availability_indicator_type_form.test.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/synthetics_availability/synthetics_availability_indicator_type_form.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/synthetics_availability/synthetics_availability_indicator_type_form.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/synthetics_availability/synthetics_availability_indicator_type_form.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/synthetics_availability/synthetics_availability_indicator_type_form.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/synthetics_availability/synthetics_availability_indicator_type_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/synthetics_availability/synthetics_availability_indicator_type_form.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/synthetics_availability/synthetics_availability_indicator_type_form.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/synthetics_common/field_selector.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/synthetics_common/field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/synthetics_common/field_selector.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/synthetics_common/field_selector.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/metric_indicator.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/metric_indicator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/metric_indicator.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/metric_indicator.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/metric_input.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/metric_input.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/metric_input.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/metric_input.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/timeslice_metric_indicator.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/timeslice_metric_indicator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/timeslice_metric_indicator.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/indicator_section/timeslice_metric/timeslice_metric_indicator.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_description_section.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_description_section.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_description_section.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_description_section.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_description_section.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_description_section.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_description_section.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_description_section.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_footer.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_footer.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_footer.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_footer.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_objective_section.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_objective_section.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_objective_section.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_objective_section.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_objective_section.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_objective_section.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_objective_section.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_objective_section.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_objective_section_timeslices.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_objective_section_timeslices.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_objective_section_timeslices.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_objective_section_timeslices.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_objective_section_timeslices.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_objective_section_timeslices.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/slo_edit_form_objective_section_timeslices.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/components/slo_edit_form_objective_section_timeslices.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/constants.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/constants.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/__snapshots__/process_slo_form_values.test.ts.snap b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/__snapshots__/process_slo_form_values.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/__snapshots__/process_slo_form_values.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/__snapshots__/process_slo_form_values.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/aggregation_options.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/aggregation_options.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/aggregation_options.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/aggregation_options.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/create_burn_rate_rule_request_body.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/create_burn_rate_rule_request_body.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/create_burn_rate_rule_request_body.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/create_burn_rate_rule_request_body.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/create_options.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/create_options.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/create_options.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/create_options.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.test.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/format_filters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.test.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/format_filters.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/format_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/format_filters.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/process_slo_form_values.test.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/process_slo_form_values.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/process_slo_form_values.test.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/process_slo_form_values.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/process_slo_form_values.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/process_slo_form_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/process_slo_form_values.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/helpers/process_slo_form_values.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_add_rule_flyout_state.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_add_rule_flyout_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_add_rule_flyout_state.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_add_rule_flyout_state.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_fetch_suggestions.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_fetch_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_fetch_suggestions.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_fetch_suggestions.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_find_runtime_usage.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_find_runtime_usage.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_find_runtime_usage.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_find_runtime_usage.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_parse_url_state.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_parse_url_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_parse_url_state.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_parse_url_state.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_preview.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_preview.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_preview.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_preview.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_section_form_validation.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_section_form_validation.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_section_form_validation.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_section_form_validation.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_show_sections.test.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_show_sections.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_show_sections.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_show_sections.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_show_sections.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_show_sections.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_show_sections.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_show_sections.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_unregister_fields.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_unregister_fields.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/hooks/use_unregister_fields.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/hooks/use_unregister_fields.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/shared_flyout/slo_add_form_flyout.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/shared_flyout/slo_add_form_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/shared_flyout/slo_add_form_flyout.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/shared_flyout/slo_add_form_flyout.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/slo_edit.test.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/slo_edit.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/slo_edit.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/slo_edit.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/slo_edit.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/slo_edit.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/slo_edit.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/slo_edit.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/types.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_edit/types.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_edit/types.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_outdated_definitions/index.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_outdated_definitions/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_outdated_definitions/index.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_outdated_definitions/index.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_outdated_definitions/outdated_slo.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_outdated_definitions/outdated_slo.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_outdated_definitions/outdated_slo.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_outdated_definitions/outdated_slo.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_outdated_definitions/outdated_slo_search_bar.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_outdated_definitions/outdated_slo_search_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_outdated_definitions/outdated_slo_search_bar.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_outdated_definitions/outdated_slo_search_bar.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_settings/hooks/use_get_settings.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slo_settings/hooks/use_get_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_settings/hooks/use_get_settings.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_settings/hooks/use_get_settings.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_settings/hooks/use_put_slo_settings.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_settings/hooks/use_put_slo_settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_settings/hooks/use_put_slo_settings.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_settings/hooks/use_put_slo_settings.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_settings/settings_form.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_settings/settings_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_settings/settings_form.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_settings/settings_form.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_settings/slo_settings.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slo_settings/slo_settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slo_settings/slo_settings.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slo_settings/slo_settings.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_badges.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_badges.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_badges.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_badges.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_badges.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_badges.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_badges.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_badges.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_indicator_type_badge.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_indicator_type_badge.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_indicator_type_badge.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_indicator_type_badge.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_indicator_type_badge.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_indicator_type_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_indicator_type_badge.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_indicator_type_badge.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_remote_badge.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_remote_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_remote_badge.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_remote_badge.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_rules_badge.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_rules_badge.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_rules_badge.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_rules_badge.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_rules_badge.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_rules_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_rules_badge.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_rules_badge.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_time_window_badge.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_time_window_badge.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_time_window_badge.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_time_window_badge.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_time_window_badge.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_time_window_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/badges/slo_time_window_badge.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/badges/slo_time_window_badge.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slo_card_item.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slo_card_item.tsx similarity index 96% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slo_card_item.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slo_card_item.tsx index 7800337be79ae..7d36a615638f8 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slo_card_item.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slo_card_item.tsx @@ -6,7 +6,7 @@ */ import { Chart, isMetricElementEvent, Metric, MetricTrendShape, Settings } from '@elastic/charts'; -import { EuiIcon, EuiPanel, useEuiBackgroundColor } from '@elastic/eui'; +import { EuiIcon, EuiPanel, useEuiTheme } from '@elastic/eui'; import { css } from '@emotion/react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -20,9 +20,9 @@ import moment from 'moment'; import React, { useState } from 'react'; import { SloDeleteModal } from '../../../../components/slo/delete_confirmation_modal/slo_delete_confirmation_modal'; import { SloResetConfirmationModal } from '../../../../components/slo/reset_confirmation_modal/slo_reset_confirmation_modal'; +import { useKibana } from '../../../../hooks/use_kibana'; import { useResetSlo } from '../../../../hooks/use_reset_slo'; import { BurnRateRuleParams } from '../../../../typings'; -import { useKibana } from '../../../../hooks/use_kibana'; import { formatHistoricalData } from '../../../../utils/slo/chart_data_formatter'; import { useSloListActions } from '../../hooks/use_slo_list_actions'; import { useSloFormattedSummary } from '../../hooks/use_slo_summary'; @@ -44,11 +44,12 @@ export interface Props { } export const useSloCardColor = (status?: SLOWithSummaryResponse['summary']['status']) => { + const { euiTheme } = useEuiTheme(); const colors = { - DEGRADING: useEuiBackgroundColor('warning'), - VIOLATED: useEuiBackgroundColor('danger'), - HEALTHY: useEuiBackgroundColor('success'), - NO_DATA: useEuiBackgroundColor('subdued'), + DEGRADING: euiTheme.colors.backgroundBaseWarning, + VIOLATED: euiTheme.colors.backgroundBaseDanger, + HEALTHY: euiTheme.colors.backgroundBaseSuccess, + NO_DATA: euiTheme.colors.backgroundBaseSubdued, }; return { cardColor: colors[status ?? 'NO_DATA'], colors }; diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slo_card_item_actions.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slo_card_item_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slo_card_item_actions.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slo_card_item_actions.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slo_card_item_badges.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slo_card_item_badges.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slo_card_item_badges.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slo_card_item_badges.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slo_card_item_instance_badge.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slo_card_item_instance_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slo_card_item_instance_badge.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slo_card_item_instance_badge.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slos_card_view.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slos_card_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/card_view/slos_card_view.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/card_view/slos_card_view.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/burn_rate_rule_flyout.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/burn_rate_rule_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/burn_rate_rule_flyout.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/burn_rate_rule_flyout.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/create_slo_btn.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/create_slo_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/create_slo_btn.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/create_slo_btn.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/edit_burn_rate_rule_flyout.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/edit_burn_rate_rule_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/edit_burn_rate_rule_flyout.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/edit_burn_rate_rule_flyout.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/feedback_button.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/feedback_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/feedback_button.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/feedback_button.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/quick_filters.test.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/quick_filters.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/quick_filters.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/quick_filters.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/quick_filters.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/quick_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/quick_filters.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/quick_filters.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/slo_groupings.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/slo_groupings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/slo_groupings.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/slo_groupings.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/slo_tags_list.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/slo_tags_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/slo_tags_list.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/slo_tags_list.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/sort_by_select.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/sort_by_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/common/sort_by_select.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/common/sort_by_select.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/compact_view/slo_list_compact_view.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/compact_view/slo_list_compact_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/compact_view/slo_list_compact_view.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/compact_view/slo_list_compact_view.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_list_empty.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_list_empty.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_list_empty.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_list_empty.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_list_error.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_list_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_list_error.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_list_error.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_list_view.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_list_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_list_view.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_list_view.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_view.test.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_view.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_view.test.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_view.test.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_view.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/group_view.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/group_view.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/hooks/use_group_name.test.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/hooks/use_group_name.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/hooks/use_group_name.test.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/hooks/use_group_name.test.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/hooks/use_group_name.ts b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/hooks/use_group_name.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/grouped_slos/hooks/use_group_name.ts rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/grouped_slos/hooks/use_group_name.ts diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/header_title.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/header_title.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/header_title.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/header_title.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/header_title.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/header_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/header_title.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/header_title.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/health_callout/health_callout.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/health_callout/health_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/health_callout/health_callout.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/health_callout/health_callout.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_context_menu.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_context_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_context_menu.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_context_menu.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_item_actions.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_item_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_item_actions.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_item_actions.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_empty.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_empty.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_empty.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_empty.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_empty.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_empty.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_empty.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_empty.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_error.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_error.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_error.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_error.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_error.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_error.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_error.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_group_by.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_group_by.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_group_by.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_group_by.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_search_bar.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_search_bar.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_search_bar.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_search_bar.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_search_bar.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_search_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_search_bar.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_search_bar.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_view/slo_list_item.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_view/slo_list_item.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_view/slo_list_item.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_view/slo_list_item.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_view/slo_list_item.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_view/slo_list_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_view/slo_list_item.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_view/slo_list_item.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_view/slo_list_view.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_view/slo_list_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_list_view/slo_list_view.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_view/slo_list_view.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_sparkline.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_sparkline.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_sparkline.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_sparkline.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_sparkline.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_sparkline.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_sparkline.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_sparkline.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_summary.stories.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_summary.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_summary.stories.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_summary.stories.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_summary.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_summary.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slo_summary.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_summary.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slos_overview/overview_item.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slos_overview/overview_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slos_overview/overview_item.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slos_overview/overview_item.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slos_overview/slo_overview_alerts.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slos_overview/slo_overview_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slos_overview/slo_overview_alerts.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slos_overview/slo_overview_alerts.tsx diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slos_overview/slos_overview.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slos_overview/slos_overview.tsx similarity index 98% rename from x-pack/plugins/observability_solution/slo/public/pages/slos/components/slos_overview/slos_overview.tsx rename to x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slos_overview/slos_overview.tsx index 49e9e6e34e0df..3d342090c63fc 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slos/components/slos_overview/slos_overview.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slos_overview/slos_overview.tsx @@ -96,7 +96,7 @@ export function SLOsOverview() { tooltip={i18n.translate('xpack.slo.sLOsOverview.euiStat.degradingLabel.tooltip', { defaultMessage: 'Click to filter SLOs by Degrading status.', })} - titleColor={theme.colors.warningText} + titleColor={theme.colors.textWarning} /> {} } as unknown as AppMountParameters; +const observabilityRuleTypeRegistry = createObservabilityRuleTypeRegistryMock(); + +export const core = coreMock.createStart(); +export const data = dataPluginMock.createStartContract(); + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: false, + }, + }, + logger: { + // eslint-disable-next-line no-console + log: console.log, + // eslint-disable-next-line no-console + warn: console.warn, + error: () => {}, + }, +}); + +const sloClient = createRepositoryClient(core); + +export const render = (component: React.ReactNode) => { + return testLibRender( + // @ts-ignore + +

Embeddable exploratory view
, + }, + }} + > + + {component} + + + + ); +}; diff --git a/x-pack/plugins/observability_solution/slo/scripts/e2e.js b/x-pack/solutions/observability/plugins/slo/scripts/e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/slo/scripts/e2e.js rename to x-pack/solutions/observability/plugins/slo/scripts/e2e.js diff --git a/x-pack/plugins/observability_solution/slo/scripts/storybook.js b/x-pack/solutions/observability/plugins/slo/scripts/storybook.js similarity index 100% rename from x-pack/plugins/observability_solution/slo/scripts/storybook.js rename to x-pack/solutions/observability/plugins/slo/scripts/storybook.js diff --git a/x-pack/plugins/observability_solution/slo/server/assets/component_templates/slo_mappings_template.ts b/x-pack/solutions/observability/plugins/slo/server/assets/component_templates/slo_mappings_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/component_templates/slo_mappings_template.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/component_templates/slo_mappings_template.ts diff --git a/x-pack/plugins/observability_solution/slo/server/assets/component_templates/slo_settings_template.ts b/x-pack/solutions/observability/plugins/slo/server/assets/component_templates/slo_settings_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/component_templates/slo_settings_template.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/component_templates/slo_settings_template.ts diff --git a/x-pack/plugins/observability_solution/slo/server/assets/component_templates/slo_summary_mappings_template.ts b/x-pack/solutions/observability/plugins/slo/server/assets/component_templates/slo_summary_mappings_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/component_templates/slo_summary_mappings_template.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/component_templates/slo_summary_mappings_template.ts diff --git a/x-pack/plugins/observability_solution/slo/server/assets/component_templates/slo_summary_settings_template.ts b/x-pack/solutions/observability/plugins/slo/server/assets/component_templates/slo_summary_settings_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/component_templates/slo_summary_settings_template.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/component_templates/slo_summary_settings_template.ts diff --git a/x-pack/plugins/observability_solution/slo/server/assets/index_templates/slo_index_templates.ts b/x-pack/solutions/observability/plugins/slo/server/assets/index_templates/slo_index_templates.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/index_templates/slo_index_templates.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/index_templates/slo_index_templates.ts diff --git a/x-pack/plugins/observability_solution/slo/server/assets/index_templates/slo_summary_index_templates.ts b/x-pack/solutions/observability/plugins/slo/server/assets/index_templates/slo_summary_index_templates.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/index_templates/slo_summary_index_templates.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/index_templates/slo_summary_index_templates.ts diff --git a/x-pack/plugins/observability_solution/slo/server/assets/ingest_templates/slo_pipeline_template.ts b/x-pack/solutions/observability/plugins/slo/server/assets/ingest_templates/slo_pipeline_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/ingest_templates/slo_pipeline_template.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/ingest_templates/slo_pipeline_template.ts diff --git a/x-pack/plugins/observability_solution/slo/server/assets/ingest_templates/slo_summary_pipeline_template.ts b/x-pack/solutions/observability/plugins/slo/server/assets/ingest_templates/slo_summary_pipeline_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/ingest_templates/slo_summary_pipeline_template.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/ingest_templates/slo_summary_pipeline_template.ts diff --git a/x-pack/plugins/observability_solution/slo/server/assets/transform_templates/slo_transform_template.test.ts b/x-pack/solutions/observability/plugins/slo/server/assets/transform_templates/slo_transform_template.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/transform_templates/slo_transform_template.test.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/transform_templates/slo_transform_template.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/assets/transform_templates/slo_transform_template.ts b/x-pack/solutions/observability/plugins/slo/server/assets/transform_templates/slo_transform_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/assets/transform_templates/slo_transform_template.ts rename to x-pack/solutions/observability/plugins/slo/server/assets/transform_templates/slo_transform_template.ts diff --git a/x-pack/solutions/observability/plugins/slo/server/client/index.ts b/x-pack/solutions/observability/plugins/slo/server/client/index.ts new file mode 100644 index 0000000000000..277aeb71399b1 --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/server/client/index.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { + ElasticsearchClient, + KibanaRequest, + SavedObjectsClientContract, +} from '@kbn/core/server'; +import { castArray, once } from 'lodash'; +import { getListOfSummaryIndices, getSloSettings } from '../services/slo_settings'; + +export interface SloClient { + getSummaryIndices(): Promise; +} + +export function getSloClientWithRequest({ + esClient, + soClient, +}: { + request: KibanaRequest; + esClient: ElasticsearchClient; + soClient: SavedObjectsClientContract; +}): SloClient { + const getListOfSummaryIndicesOnce = once(async () => { + const settings = await getSloSettings(soClient); + + const { indices } = await getListOfSummaryIndices(esClient, settings); + + return castArray(indices); + }); + + return { + getSummaryIndices: async () => { + return await getListOfSummaryIndicesOnce(); + }, + }; +} diff --git a/x-pack/plugins/observability_solution/slo/server/common/constants.ts b/x-pack/solutions/observability/plugins/slo/server/common/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/common/constants.ts rename to x-pack/solutions/observability/plugins/slo/server/common/constants.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/models/common.ts b/x-pack/solutions/observability/plugins/slo/server/domain/models/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/models/common.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/models/common.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/models/error_budget.ts b/x-pack/solutions/observability/plugins/slo/server/domain/models/error_budget.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/models/error_budget.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/models/error_budget.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/models/health.ts b/x-pack/solutions/observability/plugins/slo/server/domain/models/health.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/models/health.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/models/health.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/models/index.ts b/x-pack/solutions/observability/plugins/slo/server/domain/models/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/models/index.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/models/index.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/models/indicators.ts b/x-pack/solutions/observability/plugins/slo/server/domain/models/indicators.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/models/indicators.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/models/indicators.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/models/slo.ts b/x-pack/solutions/observability/plugins/slo/server/domain/models/slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/models/slo.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/models/slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/models/time_window.ts b/x-pack/solutions/observability/plugins/slo/server/domain/models/time_window.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/models/time_window.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/models/time_window.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/compute_burn_rate.test.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/compute_burn_rate.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/compute_burn_rate.test.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/compute_burn_rate.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/compute_burn_rate.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/compute_burn_rate.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/compute_burn_rate.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/compute_burn_rate.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/compute_sli.test.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/compute_sli.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/compute_sli.test.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/compute_sli.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/compute_sli.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/compute_sli.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/compute_sli.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/compute_sli.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/compute_summary_status.test.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/compute_summary_status.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/compute_summary_status.test.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/compute_summary_status.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/compute_summary_status.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/compute_summary_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/compute_summary_status.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/compute_summary_status.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/date_range.test.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/date_range.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/date_range.test.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/date_range.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/date_range.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/date_range.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/date_range.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/date_range.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/error_budget.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/error_budget.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/error_budget.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/error_budget.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/get_delay_in_seconds_from_slo.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/get_delay_in_seconds_from_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/get_delay_in_seconds_from_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/get_delay_in_seconds_from_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/get_lookback_date_range.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/get_lookback_date_range.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/get_lookback_date_range.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/get_lookback_date_range.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/index.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/index.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/index.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/validate_slo.test.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/validate_slo.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/validate_slo.test.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/validate_slo.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/domain/services/validate_slo.ts b/x-pack/solutions/observability/plugins/slo/server/domain/services/validate_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/domain/services/validate_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/domain/services/validate_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/errors/errors.ts b/x-pack/solutions/observability/plugins/slo/server/errors/errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/errors/errors.ts rename to x-pack/solutions/observability/plugins/slo/server/errors/errors.ts diff --git a/x-pack/plugins/observability_solution/slo/server/errors/handler.ts b/x-pack/solutions/observability/plugins/slo/server/errors/handler.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/errors/handler.ts rename to x-pack/solutions/observability/plugins/slo/server/errors/handler.ts diff --git a/x-pack/plugins/observability_solution/slo/server/errors/index.ts b/x-pack/solutions/observability/plugins/slo/server/errors/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/errors/index.ts rename to x-pack/solutions/observability/plugins/slo/server/errors/index.ts diff --git a/x-pack/solutions/observability/plugins/slo/server/index.ts b/x-pack/solutions/observability/plugins/slo/server/index.ts new file mode 100644 index 0000000000000..b38956141137d --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/server/index.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; +import { SLOConfig, configSchema } from '../common/config'; + +// This exports static code and TypeScript types, +// as well as, Kibana Platform `plugin()` initializer. + +export async function plugin(ctx: PluginInitializerContext) { + const { SLOPlugin } = await import('./plugin'); + return new SLOPlugin(ctx); +} + +export type { SloClient } from './client'; + +export type { SLOServerSetup, SLOServerStart } from './types'; + +export const config: PluginConfigDescriptor = { + schema: configSchema, + exposeToBrowser: { + experimental: true, + }, +}; diff --git a/x-pack/plugins/observability_solution/slo/server/lib/collectors/fetcher.test.ts b/x-pack/solutions/observability/plugins/slo/server/lib/collectors/fetcher.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/collectors/fetcher.test.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/collectors/fetcher.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/collectors/fetcher.ts b/x-pack/solutions/observability/plugins/slo/server/lib/collectors/fetcher.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/collectors/fetcher.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/collectors/fetcher.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/collectors/register.ts b/x-pack/solutions/observability/plugins/slo/server/lib/collectors/register.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/collectors/register.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/collectors/register.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/collectors/type.ts b/x-pack/solutions/observability/plugins/slo/server/lib/collectors/type.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/collectors/type.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/collectors/type.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/register_burn_rate_rule.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/register_burn_rate_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/register_burn_rate_rule.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/register_burn_rate_rule.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/docs/params_property_slo_burn_rate.yaml b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/docs/params_property_slo_burn_rate.yaml similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/docs/params_property_slo_burn_rate.yaml rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/docs/params_property_slo_burn_rate.yaml diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.test.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/executor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.test.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/executor.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/executor.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/executor.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/field_map.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/field_map.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/field_map.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/field_map.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/fixtures/rule.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/fixtures/rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/fixtures/rule.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/fixtures/rule.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/index.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/index.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/index.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/__snapshots__/build_query.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/__snapshots__/build_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/__snapshots__/build_query.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/__snapshots__/build_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/build_query.test.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/build_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/build_query.test.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/build_query.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/build_query.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/build_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/build_query.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/build_query.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/evaluate.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/evaluate.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/evaluate.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/evaluate.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/evaluate_dependencies.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/evaluate_dependencies.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/evaluate_dependencies.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/evaluate_dependencies.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/should_suppress_instance_id.test.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/should_suppress_instance_id.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/should_suppress_instance_id.test.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/should_suppress_instance_id.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/should_suppress_instance_id.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/should_suppress_instance_id.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/should_suppress_instance_id.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/should_suppress_instance_id.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/summary_repository.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/summary_repository.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/lib/summary_repository.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/lib/summary_repository.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/register.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/register.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/register.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/register.ts diff --git a/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/types.ts b/x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/types.ts rename to x-pack/solutions/observability/plugins/slo/server/lib/rules/slo_burn_rate/types.ts diff --git a/x-pack/solutions/observability/plugins/slo/server/plugin.ts b/x-pack/solutions/observability/plugins/slo/server/plugin.ts new file mode 100644 index 0000000000000..e7b25fe06ef32 --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/server/plugin.ts @@ -0,0 +1,194 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + CoreSetup, + CoreStart, + DEFAULT_APP_CATEGORIES, + KibanaRequest, + Logger, + Plugin, + PluginInitializerContext, + SavedObjectsClient, +} from '@kbn/core/server'; +import { AlertsLocatorDefinition, sloFeatureId } from '@kbn/observability-plugin/common'; +import { SLO_BURN_RATE_RULE_TYPE_ID } from '@kbn/rule-data-utils'; +import { ALERTING_FEATURE_ID } from '@kbn/alerting-plugin/common'; +import { KibanaFeatureScope } from '@kbn/features-plugin/common'; +import { i18n } from '@kbn/i18n'; +import { mapValues } from 'lodash'; +import { registerSloUsageCollector } from './lib/collectors/register'; +import { registerBurnRateRule } from './lib/rules/register_burn_rate_rule'; +import { getSloServerRouteRepository } from './routes/get_slo_server_route_repository'; +import { registerServerRoutes } from './routes/register_routes'; +import { SLORoutesDependencies } from './routes/types'; +import { SO_SLO_TYPE, slo } from './saved_objects'; +import { SO_SLO_SETTINGS_TYPE, sloSettings } from './saved_objects/slo_settings'; +import { DefaultResourceInstaller, DefaultSLOInstaller } from './services'; +import { SloOrphanSummaryCleanupTask } from './services/tasks/orphan_summary_cleanup_task'; +import type { + SLOConfig, + SLOPluginSetupDependencies, + SLOPluginStartDependencies, + SLOServerSetup, + SLOServerStart, +} from './types'; +import { getSloClientWithRequest } from './client'; + +const sloRuleTypes = [SLO_BURN_RATE_RULE_TYPE_ID]; + +export class SLOPlugin + implements + Plugin +{ + private readonly logger: Logger; + private readonly config: SLOConfig; + private readonly isServerless: boolean; + private sloOrphanCleanupTask?: SloOrphanSummaryCleanupTask; + + constructor(private readonly initContext: PluginInitializerContext) { + this.logger = this.initContext.logger.get(); + this.config = this.initContext.config.get(); + this.isServerless = this.initContext.env.packageInfo.buildFlavor === 'serverless'; + } + + public setup( + core: CoreSetup, + plugins: SLOPluginSetupDependencies + ): SLOServerSetup { + const alertsLocator = plugins.share.url.locators.create(new AlertsLocatorDefinition()); + + const savedObjectTypes = [SO_SLO_TYPE, SO_SLO_SETTINGS_TYPE]; + + const alertingFeatures = sloRuleTypes.map((ruleTypeId) => ({ + ruleTypeId, + consumers: [sloFeatureId, ALERTING_FEATURE_ID], + })); + + plugins.features.registerKibanaFeature({ + id: sloFeatureId, + name: i18n.translate('xpack.slo.featureRegistry.linkSloTitle', { + defaultMessage: 'SLOs', + }), + order: 1200, + category: DEFAULT_APP_CATEGORIES.observability, + scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], + app: [sloFeatureId, 'kibana'], + catalogue: [sloFeatureId, 'observability'], + alerting: alertingFeatures, + privileges: { + all: { + app: [sloFeatureId, 'kibana'], + catalogue: [sloFeatureId, 'observability'], + api: ['slo_write', 'slo_read', 'rac'], + savedObject: { + all: savedObjectTypes, + read: [], + }, + alerting: { + rule: { + all: alertingFeatures, + }, + alert: { + all: alertingFeatures, + }, + }, + ui: ['read', 'write'], + }, + read: { + app: [sloFeatureId, 'kibana'], + catalogue: [sloFeatureId, 'observability'], + api: ['slo_read', 'rac'], + savedObject: { + all: [], + read: savedObjectTypes, + }, + alerting: { + rule: { + read: alertingFeatures, + }, + alert: { + read: alertingFeatures, + }, + }, + ui: ['read'], + }, + }, + }); + + const { ruleDataService } = plugins.ruleRegistry; + + core.savedObjects.registerType(slo); + core.savedObjects.registerType(sloSettings); + + registerBurnRateRule(plugins.alerting, core.http.basePath, this.logger, ruleDataService, { + alertsLocator, + }); + + registerSloUsageCollector(plugins.usageCollection); + + const routeHandlerPlugins = mapValues(plugins, (value, key) => { + return { + setup: value, + start: () => + core.getStartServices().then(([, pluginStart]) => { + return pluginStart[key as keyof SLOPluginStartDependencies]; + }), + }; + }) as SLORoutesDependencies['plugins']; + + registerServerRoutes({ + core, + dependencies: { + corePlugins: core, + plugins: routeHandlerPlugins, + }, + logger: this.logger, + repository: getSloServerRouteRepository({ isServerless: this.isServerless }), + isServerless: this.isServerless, + }); + + core + .getStartServices() + .then(async ([coreStart, pluginStart]) => { + const esInternalClient = coreStart.elasticsearch.client.asInternalUser; + const sloResourceInstaller = new DefaultResourceInstaller(esInternalClient, this.logger); + const sloInstaller = new DefaultSLOInstaller(sloResourceInstaller, this.logger); + await sloInstaller.install(); + }) + .catch((error) => { + this.logger.error(`Failed to install the default SLOs: ${error}`); + }); + + this.sloOrphanCleanupTask = new SloOrphanSummaryCleanupTask( + plugins.taskManager, + this.logger, + this.config + ); + + return {}; + } + + public start(core: CoreStart, plugins: SLOPluginStartDependencies): SLOServerStart { + const internalSoClient = new SavedObjectsClient(core.savedObjects.createInternalRepository()); + const internalEsClient = core.elasticsearch.client.asInternalUser; + + this.sloOrphanCleanupTask + ?.start(plugins.taskManager, internalSoClient, internalEsClient) + .catch(() => {}); + + return { + getSloClientWithRequest: (request: KibanaRequest) => { + return getSloClientWithRequest({ + request, + soClient: core.savedObjects.getScopedClient(request), + esClient: internalEsClient, + }); + }, + }; + } +} diff --git a/x-pack/plugins/observability_solution/slo/server/routes/create_slo_server_route.ts b/x-pack/solutions/observability/plugins/slo/server/routes/create_slo_server_route.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/routes/create_slo_server_route.ts rename to x-pack/solutions/observability/plugins/slo/server/routes/create_slo_server_route.ts diff --git a/x-pack/plugins/observability_solution/slo/server/routes/get_slo_server_route_repository.ts b/x-pack/solutions/observability/plugins/slo/server/routes/get_slo_server_route_repository.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/routes/get_slo_server_route_repository.ts rename to x-pack/solutions/observability/plugins/slo/server/routes/get_slo_server_route_repository.ts diff --git a/x-pack/plugins/observability_solution/slo/server/routes/register_routes.ts b/x-pack/solutions/observability/plugins/slo/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/routes/register_routes.ts rename to x-pack/solutions/observability/plugins/slo/server/routes/register_routes.ts diff --git a/x-pack/plugins/observability_solution/slo/server/routes/slo/route.ts b/x-pack/solutions/observability/plugins/slo/server/routes/slo/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/routes/slo/route.ts rename to x-pack/solutions/observability/plugins/slo/server/routes/slo/route.ts diff --git a/x-pack/plugins/observability_solution/slo/server/routes/types.ts b/x-pack/solutions/observability/plugins/slo/server/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/routes/types.ts rename to x-pack/solutions/observability/plugins/slo/server/routes/types.ts diff --git a/x-pack/plugins/observability_solution/slo/server/saved_objects/index.ts b/x-pack/solutions/observability/plugins/slo/server/saved_objects/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/saved_objects/index.ts rename to x-pack/solutions/observability/plugins/slo/server/saved_objects/index.ts diff --git a/x-pack/plugins/observability_solution/slo/server/saved_objects/slo.ts b/x-pack/solutions/observability/plugins/slo/server/saved_objects/slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/saved_objects/slo.ts rename to x-pack/solutions/observability/plugins/slo/server/saved_objects/slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/saved_objects/slo_settings.ts b/x-pack/solutions/observability/plugins/slo/server/saved_objects/slo_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/saved_objects/slo_settings.ts rename to x-pack/solutions/observability/plugins/slo/server/saved_objects/slo_settings.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/__snapshots__/create_slo.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/create_slo.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/__snapshots__/create_slo.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/create_slo.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/__snapshots__/delete_slo.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/delete_slo.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/__snapshots__/delete_slo.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/delete_slo.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/__snapshots__/historical_summary_client.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/historical_summary_client.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/__snapshots__/historical_summary_client.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/historical_summary_client.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/__snapshots__/manage_slo.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/manage_slo.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/__snapshots__/manage_slo.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/manage_slo.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/__snapshots__/reset_slo.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/reset_slo.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/__snapshots__/reset_slo.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/reset_slo.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/__snapshots__/slo_definition_client.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/slo_definition_client.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/__snapshots__/slo_definition_client.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/slo_definition_client.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/__snapshots__/summary_client.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/summary_client.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/__snapshots__/summary_client.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/summary_client.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/__snapshots__/summary_search_client.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/summary_search_client.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/__snapshots__/summary_search_client.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/__snapshots__/summary_search_client.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/__snapshots__/get_custom_metric_indicator_aggregation.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/__snapshots__/get_custom_metric_indicator_aggregation.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/__snapshots__/get_custom_metric_indicator_aggregation.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/__snapshots__/get_custom_metric_indicator_aggregation.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/__snapshots__/get_histogram_indicator_aggregation.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/__snapshots__/get_histogram_indicator_aggregation.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/__snapshots__/get_histogram_indicator_aggregation.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/__snapshots__/get_histogram_indicator_aggregation.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/__snapshots__/get_timeslice_metric_indicator_aggregation.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/__snapshots__/get_timeslice_metric_indicator_aggregation.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/__snapshots__/get_timeslice_metric_indicator_aggregation.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/__snapshots__/get_timeslice_metric_indicator_aggregation.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/get_custom_metric_indicator_aggregation.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_custom_metric_indicator_aggregation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/get_custom_metric_indicator_aggregation.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_custom_metric_indicator_aggregation.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/get_custom_metric_indicator_aggregation.ts b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_custom_metric_indicator_aggregation.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/get_custom_metric_indicator_aggregation.ts rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_custom_metric_indicator_aggregation.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/get_histogram_indicator_aggregation.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_histogram_indicator_aggregation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/get_histogram_indicator_aggregation.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_histogram_indicator_aggregation.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/get_histogram_indicator_aggregation.ts b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_histogram_indicator_aggregation.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/get_histogram_indicator_aggregation.ts rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_histogram_indicator_aggregation.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/get_timeslice_metric_indicator_aggregation.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_timeslice_metric_indicator_aggregation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/get_timeslice_metric_indicator_aggregation.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_timeslice_metric_indicator_aggregation.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/get_timeslice_metric_indicator_aggregation.ts b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_timeslice_metric_indicator_aggregation.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/get_timeslice_metric_indicator_aggregation.ts rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/get_timeslice_metric_indicator_aggregation.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/aggregations/index.ts b/x-pack/solutions/observability/plugins/slo/server/services/aggregations/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/aggregations/index.ts rename to x-pack/solutions/observability/plugins/slo/server/services/aggregations/index.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/burn_rates_client.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/burn_rates_client.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/burn_rates_client.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/burn_rates_client.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/burn_rates_client.ts b/x-pack/solutions/observability/plugins/slo/server/services/burn_rates_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/burn_rates_client.ts rename to x-pack/solutions/observability/plugins/slo/server/services/burn_rates_client.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/create_slo.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/create_slo.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/create_slo.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/create_slo.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/create_slo.ts b/x-pack/solutions/observability/plugins/slo/server/services/create_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/create_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/services/create_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/delete_slo.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/delete_slo.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/delete_slo.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/delete_slo.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/delete_slo.ts b/x-pack/solutions/observability/plugins/slo/server/services/delete_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/delete_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/services/delete_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/delete_slo_instances.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/delete_slo_instances.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/delete_slo_instances.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/delete_slo_instances.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/delete_slo_instances.ts b/x-pack/solutions/observability/plugins/slo/server/services/delete_slo_instances.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/delete_slo_instances.ts rename to x-pack/solutions/observability/plugins/slo/server/services/delete_slo_instances.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/find_slo.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/find_slo.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/find_slo.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/find_slo.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/find_slo.ts b/x-pack/solutions/observability/plugins/slo/server/services/find_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/find_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/services/find_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/find_slo_definitions.ts b/x-pack/solutions/observability/plugins/slo/server/services/find_slo_definitions.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/find_slo_definitions.ts rename to x-pack/solutions/observability/plugins/slo/server/services/find_slo_definitions.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/find_slo_groups.ts b/x-pack/solutions/observability/plugins/slo/server/services/find_slo_groups.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/find_slo_groups.ts rename to x-pack/solutions/observability/plugins/slo/server/services/find_slo_groups.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/fixtures/date.ts b/x-pack/solutions/observability/plugins/slo/server/services/fixtures/date.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/fixtures/date.ts rename to x-pack/solutions/observability/plugins/slo/server/services/fixtures/date.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/fixtures/duration.ts b/x-pack/solutions/observability/plugins/slo/server/services/fixtures/duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/fixtures/duration.ts rename to x-pack/solutions/observability/plugins/slo/server/services/fixtures/duration.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/fixtures/error_budget.ts b/x-pack/solutions/observability/plugins/slo/server/services/fixtures/error_budget.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/fixtures/error_budget.ts rename to x-pack/solutions/observability/plugins/slo/server/services/fixtures/error_budget.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/fixtures/slo.ts b/x-pack/solutions/observability/plugins/slo/server/services/fixtures/slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/fixtures/slo.ts rename to x-pack/solutions/observability/plugins/slo/server/services/fixtures/slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/fixtures/summary_search_document.ts b/x-pack/solutions/observability/plugins/slo/server/services/fixtures/summary_search_document.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/fixtures/summary_search_document.ts rename to x-pack/solutions/observability/plugins/slo/server/services/fixtures/summary_search_document.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/fixtures/time_window.ts b/x-pack/solutions/observability/plugins/slo/server/services/fixtures/time_window.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/fixtures/time_window.ts rename to x-pack/solutions/observability/plugins/slo/server/services/fixtures/time_window.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_burn_rates.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_burn_rates.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_burn_rates.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_burn_rates.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_diagnosis.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_diagnosis.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_diagnosis.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_diagnosis.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_preview_data.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_preview_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_preview_data.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_preview_data.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_slo.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_slo.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_slo.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_slo.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_slo.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_slo_groupings.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_slo_groupings.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_slo_groupings.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_slo_groupings.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_slo_groupings.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_slo_groupings.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_slo_groupings.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_slo_groupings.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_slo_health.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_slo_health.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_slo_health.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_slo_health.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_slo_health.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_slo_health.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_slo_health.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_slo_health.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_slo_suggestions.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_slo_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_slo_suggestions.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_slo_suggestions.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/get_slos_overview.ts b/x-pack/solutions/observability/plugins/slo/server/services/get_slos_overview.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/get_slos_overview.ts rename to x-pack/solutions/observability/plugins/slo/server/services/get_slos_overview.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/historical_summary_client.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/historical_summary_client.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/historical_summary_client.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/historical_summary_client.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/historical_summary_client.ts b/x-pack/solutions/observability/plugins/slo/server/services/historical_summary_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/historical_summary_client.ts rename to x-pack/solutions/observability/plugins/slo/server/services/historical_summary_client.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/index.ts b/x-pack/solutions/observability/plugins/slo/server/services/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/index.ts rename to x-pack/solutions/observability/plugins/slo/server/services/index.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/manage_slo.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/manage_slo.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/manage_slo.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/manage_slo.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/manage_slo.ts b/x-pack/solutions/observability/plugins/slo/server/services/manage_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/manage_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/services/manage_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/mocks/index.ts b/x-pack/solutions/observability/plugins/slo/server/services/mocks/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/mocks/index.ts rename to x-pack/solutions/observability/plugins/slo/server/services/mocks/index.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/reset_slo.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/reset_slo.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/reset_slo.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/reset_slo.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/reset_slo.ts b/x-pack/solutions/observability/plugins/slo/server/services/reset_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/reset_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/services/reset_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/resource_installer.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/resource_installer.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/resource_installer.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/resource_installer.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/resource_installer.ts b/x-pack/solutions/observability/plugins/slo/server/services/resource_installer.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/resource_installer.ts rename to x-pack/solutions/observability/plugins/slo/server/services/resource_installer.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/slo_definition_client.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/slo_definition_client.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/slo_definition_client.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/slo_definition_client.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/slo_definition_client.ts b/x-pack/solutions/observability/plugins/slo/server/services/slo_definition_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/slo_definition_client.ts rename to x-pack/solutions/observability/plugins/slo/server/services/slo_definition_client.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/slo_installer.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/slo_installer.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/slo_installer.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/slo_installer.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/slo_installer.ts b/x-pack/solutions/observability/plugins/slo/server/services/slo_installer.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/slo_installer.ts rename to x-pack/solutions/observability/plugins/slo/server/services/slo_installer.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/slo_repository.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/slo_repository.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/slo_repository.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/slo_repository.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/slo_repository.ts b/x-pack/solutions/observability/plugins/slo/server/services/slo_repository.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/slo_repository.ts rename to x-pack/solutions/observability/plugins/slo/server/services/slo_repository.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/slo_settings.ts b/x-pack/solutions/observability/plugins/slo/server/services/slo_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/slo_settings.ts rename to x-pack/solutions/observability/plugins/slo/server/services/slo_settings.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_client.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_client.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_client.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_client.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_client.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_client.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_client.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_search_client.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_search_client.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_search_client.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_search_client.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_search_client.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_search_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_search_client.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_search_client.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/__snapshots__/occurrences.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/__snapshots__/occurrences.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/__snapshots__/occurrences.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/__snapshots__/occurrences.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/__snapshots__/timeslices_calendar_aligned.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/__snapshots__/timeslices_calendar_aligned.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/__snapshots__/timeslices_calendar_aligned.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/__snapshots__/timeslices_calendar_aligned.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/__snapshots__/timeslices_rolling.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/__snapshots__/timeslices_rolling.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/__snapshots__/timeslices_rolling.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/__snapshots__/timeslices_rolling.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/common.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/common.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/common.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/occurrences.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/occurrences.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/occurrences.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/occurrences.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/occurrences.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/occurrences.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/occurrences.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/occurrences.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/timeslices_calendar_aligned.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/timeslices_calendar_aligned.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/timeslices_calendar_aligned.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/timeslices_calendar_aligned.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/timeslices_calendar_aligned.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/timeslices_calendar_aligned.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/timeslices_calendar_aligned.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/timeslices_calendar_aligned.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/timeslices_rolling.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/timeslices_rolling.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/timeslices_rolling.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/timeslices_rolling.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/timeslices_rolling.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/timeslices_rolling.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/timeslices_rolling.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/timeslices_rolling.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/utils.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/utils.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/utils.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/utils.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/generators/utils.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/generators/utils.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/helpers/create_temp_summary.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/helpers/create_temp_summary.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/helpers/create_temp_summary.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/helpers/create_temp_summary.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/summary_transform_generator.ts b/x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/summary_transform_generator.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summary_transform_generator/summary_transform_generator.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summary_transform_generator/summary_transform_generator.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/summay_transform_manager.ts b/x-pack/solutions/observability/plugins/slo/server/services/summay_transform_manager.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/summay_transform_manager.ts rename to x-pack/solutions/observability/plugins/slo/server/services/summay_transform_manager.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/tasks/orphan_summary_cleanup_task.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/tasks/orphan_summary_cleanup_task.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/tasks/orphan_summary_cleanup_task.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/tasks/orphan_summary_cleanup_task.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/tasks/orphan_summary_cleanup_task.ts b/x-pack/solutions/observability/plugins/slo/server/services/tasks/orphan_summary_cleanup_task.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/tasks/orphan_summary_cleanup_task.ts rename to x-pack/solutions/observability/plugins/slo/server/services/tasks/orphan_summary_cleanup_task.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/apm_transaction_duration.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/apm_transaction_duration.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/apm_transaction_duration.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/apm_transaction_duration.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/apm_transaction_error_rate.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/apm_transaction_error_rate.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/apm_transaction_error_rate.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/apm_transaction_error_rate.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/histogram.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/histogram.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/histogram.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/histogram.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/kql_custom.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/kql_custom.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/kql_custom.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/kql_custom.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/metric_custom.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/metric_custom.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/metric_custom.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/metric_custom.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/synthetics_availability.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/synthetics_availability.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/synthetics_availability.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/synthetics_availability.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/timeslice_metric.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/timeslice_metric.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/timeslice_metric.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/timeslice_metric.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/transform_generator.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/transform_generator.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/__snapshots__/transform_generator.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/__snapshots__/transform_generator.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/apm_transaction_duration.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/apm_transaction_duration.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/apm_transaction_duration.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/apm_transaction_duration.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/apm_transaction_duration.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/apm_transaction_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/apm_transaction_duration.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/apm_transaction_duration.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/apm_transaction_error_rate.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/apm_transaction_error_rate.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/apm_transaction_error_rate.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/apm_transaction_error_rate.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/apm_transaction_error_rate.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/apm_transaction_error_rate.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/apm_transaction_error_rate.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/apm_transaction_error_rate.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/common.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/common.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/common.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/common.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/common.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/common.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/histogram.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/histogram.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/histogram.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/histogram.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/histogram.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/histogram.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/histogram.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/index.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/index.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/index.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/kql_custom.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/kql_custom.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/kql_custom.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/kql_custom.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/kql_custom.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/kql_custom.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/kql_custom.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/kql_custom.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/metric_custom.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/metric_custom.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/metric_custom.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/metric_custom.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/metric_custom.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/metric_custom.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/metric_custom.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/metric_custom.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/synthetics_availability.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/synthetics_availability.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/synthetics_availability.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/synthetics_availability.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/synthetics_availability.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/synthetics_availability.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/synthetics_availability.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/synthetics_availability.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/timeslice_metric.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/timeslice_metric.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/timeslice_metric.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/timeslice_metric.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/timeslice_metric.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/timeslice_metric.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/timeslice_metric.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/timeslice_metric.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/transform_generator.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/transform_generator.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/transform_generator.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/transform_generator.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/transform_generator.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/transform_generator.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/transform_generator.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/transform_generator.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/transform_generators_factory.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/transform_generators_factory.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/transform_generators_factory.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/transform_generators_factory.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_generators/types.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_generators/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_generators/types.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_generators/types.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_manager.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_manager.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_manager.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_manager.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/transform_manager.ts b/x-pack/solutions/observability/plugins/slo/server/services/transform_manager.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/transform_manager.ts rename to x-pack/solutions/observability/plugins/slo/server/services/transform_manager.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/unsafe_federated/__snapshots__/remote_summary_doc_to_slo.test.ts.snap b/x-pack/solutions/observability/plugins/slo/server/services/unsafe_federated/__snapshots__/remote_summary_doc_to_slo.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/unsafe_federated/__snapshots__/remote_summary_doc_to_slo.test.ts.snap rename to x-pack/solutions/observability/plugins/slo/server/services/unsafe_federated/__snapshots__/remote_summary_doc_to_slo.test.ts.snap diff --git a/x-pack/plugins/observability_solution/slo/server/services/unsafe_federated/remote_summary_doc_to_slo.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/unsafe_federated/remote_summary_doc_to_slo.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/unsafe_federated/remote_summary_doc_to_slo.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/unsafe_federated/remote_summary_doc_to_slo.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/unsafe_federated/remote_summary_doc_to_slo.ts b/x-pack/solutions/observability/plugins/slo/server/services/unsafe_federated/remote_summary_doc_to_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/unsafe_federated/remote_summary_doc_to_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/services/unsafe_federated/remote_summary_doc_to_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/update_slo.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/update_slo.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/update_slo.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/update_slo.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/update_slo.ts b/x-pack/solutions/observability/plugins/slo/server/services/update_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/update_slo.ts rename to x-pack/solutions/observability/plugins/slo/server/services/update_slo.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/utils/assert_expected_indicator_source_index_privileges.ts b/x-pack/solutions/observability/plugins/slo/server/services/utils/assert_expected_indicator_source_index_privileges.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/utils/assert_expected_indicator_source_index_privileges.ts rename to x-pack/solutions/observability/plugins/slo/server/services/utils/assert_expected_indicator_source_index_privileges.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/utils/compute_total_slices_from_date_range.ts b/x-pack/solutions/observability/plugins/slo/server/services/utils/compute_total_slices_from_date_range.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/utils/compute_total_slices_from_date_range.ts rename to x-pack/solutions/observability/plugins/slo/server/services/utils/compute_total_slices_from_date_range.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/utils/get_transform_compite_query.ts b/x-pack/solutions/observability/plugins/slo/server/services/utils/get_transform_compite_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/utils/get_transform_compite_query.ts rename to x-pack/solutions/observability/plugins/slo/server/services/utils/get_transform_compite_query.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/utils/index.test.ts b/x-pack/solutions/observability/plugins/slo/server/services/utils/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/utils/index.test.ts rename to x-pack/solutions/observability/plugins/slo/server/services/utils/index.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/services/utils/index.ts b/x-pack/solutions/observability/plugins/slo/server/services/utils/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/services/utils/index.ts rename to x-pack/solutions/observability/plugins/slo/server/services/utils/index.ts diff --git a/x-pack/solutions/observability/plugins/slo/server/types.ts b/x-pack/solutions/observability/plugins/slo/server/types.ts new file mode 100644 index 0000000000000..5ec6e2c51e902 --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/server/types.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; +import { CloudSetup } from '@kbn/cloud-plugin/server'; +import { DataViewsServerPluginStart } from '@kbn/data-views-plugin/server'; +import { FeaturesPluginSetup } from '@kbn/features-plugin/server'; +import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; +import { + RuleRegistryPluginSetupContract, + RuleRegistryPluginStartContract, +} from '@kbn/rule-registry-plugin/server'; +import { SharePluginSetup } from '@kbn/share-plugin/server'; +import { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; +import { + TaskManagerSetupContract, + TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server'; +import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; +import type { KibanaRequest } from '@kbn/core/server'; +import type { SloClient } from './client'; + +export type { SLOConfig } from '../common/config'; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface SLOServerSetup {} + +export interface SLOServerStart { + getSloClientWithRequest: (request: KibanaRequest) => SloClient; +} + +export interface SLOPluginSetupDependencies { + alerting: AlertingServerSetup; + ruleRegistry: RuleRegistryPluginSetupContract; + share: SharePluginSetup; + features: FeaturesPluginSetup; + taskManager: TaskManagerSetupContract; + spaces: SpacesPluginSetup; + cloud?: CloudSetup; + usageCollection: UsageCollectionSetup; + licensing: LicensingPluginSetup; + dataViews: DataViewsServerPluginStart; +} + +export interface SLOPluginStartDependencies { + alerting: AlertingServerStart; + taskManager: TaskManagerStartContract; + spaces?: SpacesPluginStart; + ruleRegistry: RuleRegistryPluginStartContract; + dataViews: DataViewsServerPluginStart; + licensing: LicensingPluginStart; +} diff --git a/x-pack/plugins/observability_solution/slo/server/utils/number.ts b/x-pack/solutions/observability/plugins/slo/server/utils/number.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/utils/number.ts rename to x-pack/solutions/observability/plugins/slo/server/utils/number.ts diff --git a/x-pack/plugins/observability_solution/slo/server/utils/queries.test.ts b/x-pack/solutions/observability/plugins/slo/server/utils/queries.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/utils/queries.test.ts rename to x-pack/solutions/observability/plugins/slo/server/utils/queries.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/utils/queries.ts b/x-pack/solutions/observability/plugins/slo/server/utils/queries.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/utils/queries.ts rename to x-pack/solutions/observability/plugins/slo/server/utils/queries.ts diff --git a/x-pack/plugins/observability_solution/slo/server/utils/retry.test.ts b/x-pack/solutions/observability/plugins/slo/server/utils/retry.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/utils/retry.test.ts rename to x-pack/solutions/observability/plugins/slo/server/utils/retry.test.ts diff --git a/x-pack/plugins/observability_solution/slo/server/utils/retry.ts b/x-pack/solutions/observability/plugins/slo/server/utils/retry.ts similarity index 100% rename from x-pack/plugins/observability_solution/slo/server/utils/retry.ts rename to x-pack/solutions/observability/plugins/slo/server/utils/retry.ts diff --git a/x-pack/solutions/observability/plugins/slo/tsconfig.json b/x-pack/solutions/observability/plugins/slo/tsconfig.json new file mode 100644 index 0000000000000..e6cd1c2d890fc --- /dev/null +++ b/x-pack/solutions/observability/plugins/slo/tsconfig.json @@ -0,0 +1,105 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../typings/**/*", + // Emotion theme typing + "./emotion.d.ts" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/shared-ux-router", + "@kbn/core", + "@kbn/rule-data-utils", + "@kbn/triggers-actions-ui-plugin", + "@kbn/observability-plugin", + "@kbn/observability-shared-plugin", + "@kbn/kibana-react-plugin", + "@kbn/shared-ux-link-redirect-app", + "@kbn/kibana-utils-plugin", + "@kbn/slo-schema", + "@kbn/alerting-plugin", + "@kbn/rison", + "@kbn/embeddable-plugin", + "@kbn/embeddable-enhanced-plugin", + "@kbn/lens-plugin", + "@kbn/ui-theme", + "@kbn/es-query", + "@kbn/react-kibana-mount", + "@kbn/cases-plugin", + "@kbn/data-plugin", + "@kbn/core-ui-settings-browser", + "@kbn/charts-plugin", + "@kbn/ui-actions-plugin", + "@kbn/serverless", + "@kbn/data-views-plugin", + "@kbn/rule-registry-plugin", + "@kbn/licensing-plugin", + "@kbn/utility-types", + "@kbn/share-plugin", + "@kbn/presentation-util-plugin", + "@kbn/observability-ai-assistant-plugin", + "@kbn/core-http-browser", + "@kbn/core-chrome-browser", + "@kbn/ingest-pipelines-plugin", + "@kbn/unified-search-plugin", + "@kbn/std", + "@kbn/core-lifecycle-browser", + "@kbn/controls-plugin", + "@kbn/cloud-plugin", + "@kbn/spaces-plugin", + "@kbn/data-view-editor-plugin", + "@kbn/shared-ux-page-kibana-template", + "@kbn/config-schema", + "@kbn/usage-collection-plugin", + "@kbn/alerts-as-data-utils", + "@kbn/logging-mocks", + "@kbn/server-route-repository", + "@kbn/features-plugin", + "@kbn/task-manager-plugin", + "@kbn/core-saved-objects-server", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-api-server", + "@kbn/calculate-auto", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/core-saved-objects-api-server-mocks", + "@kbn/es-types", + "@kbn/logging", + "@kbn/unified-data-table", + "@kbn/cell-actions", + "@kbn/discover-utils", + "@kbn/unified-field-list", + "@kbn/data-view-field-editor-plugin", + "@kbn/discover-plugin", + "@kbn/field-formats-plugin", + "@kbn/core-http-server", + "@kbn/aiops-plugin", + "@kbn/presentation-publishing", + "@kbn/aiops-log-rate-analysis", + "@kbn/data-view-field-editor-plugin", + "@kbn/securitysolution-io-ts-utils", + "@kbn/core-elasticsearch-server-mocks", + "@kbn/datemath", + "@kbn/presentation-containers", + "@kbn/dashboard-plugin", + "@kbn/monaco", + "@kbn/code-editor", + "@kbn/react-kibana-context-render", + "@kbn/core-application-browser", + "@kbn/core-theme-browser", + "@kbn/ebt-tools", + "@kbn/observability-alerting-rule-utils", + "@kbn/discover-shared-plugin", + "@kbn/server-route-repository-client", + "@kbn/security-plugin-types-public", + ] +} diff --git a/x-pack/solutions/observability/plugins/streams/common/types.ts b/x-pack/solutions/observability/plugins/streams/common/types.ts index 59cdd1cf9c4b9..7917864706c2d 100644 --- a/x-pack/solutions/observability/plugins/streams/common/types.ts +++ b/x-pack/solutions/observability/plugins/streams/common/types.ts @@ -73,6 +73,7 @@ export type ProcessingDefinition = z.infer; export const fieldDefinitionSchema = z.object({ name: z.string(), type: z.enum(['keyword', 'match_only_text', 'long', 'double', 'date', 'boolean', 'ip']), + format: z.optional(z.string()), }); export type FieldDefinition = z.infer; @@ -87,22 +88,21 @@ export type StreamChild = z.infer; export const streamWithoutIdDefinitonSchema = z.object({ processing: z.array(processingDefinitionSchema).default([]), fields: z.array(fieldDefinitionSchema).default([]), + managed: z.boolean().default(true), children: z.array(streamChildSchema).default([]), }); export type StreamWithoutIdDefinition = z.infer; +export const unmanagedElasticsearchAsset = z.object({ + type: z.enum(['ingest_pipeline', 'component_template', 'index_template', 'data_stream']), + id: z.string(), +}); +export type UnmanagedElasticsearchAsset = z.infer; + export const streamDefinitonSchema = streamWithoutIdDefinitonSchema.extend({ id: z.string(), - managed: z.boolean().default(true), - unmanaged_elasticsearch_assets: z.optional( - z.array( - z.object({ - type: z.enum(['ingest_pipeline', 'component_template', 'index_template', 'data_stream']), - id: z.string(), - }) - ) - ), + unmanaged_elasticsearch_assets: z.optional(z.array(unmanagedElasticsearchAsset)), }); export type StreamDefinition = z.infer; diff --git a/x-pack/solutions/observability/plugins/streams/server/lib/streams/component_templates/generate_layer.ts b/x-pack/solutions/observability/plugins/streams/server/lib/streams/component_templates/generate_layer.ts index a99b9be261911..04dcc8c5dafcb 100644 --- a/x-pack/solutions/observability/plugins/streams/server/lib/streams/component_templates/generate_layer.ts +++ b/x-pack/solutions/observability/plugins/streams/server/lib/streams/component_templates/generate_layer.ts @@ -29,6 +29,9 @@ export function generateLayer( // @timestamp can't ignore malformed dates as it's used for sorting in logsdb (property as MappingDateProperty).ignore_malformed = false; } + if (field.type === 'date' && field.format) { + (property as MappingDateProperty).format = field.format; + } properties[field.name] = property; }); return { diff --git a/x-pack/solutions/observability/plugins/streams/server/lib/streams/ingest_pipelines/generate_ingest_pipeline.ts b/x-pack/solutions/observability/plugins/streams/server/lib/streams/ingest_pipelines/generate_ingest_pipeline.ts index eb09df8831304..e7c9c784a8123 100644 --- a/x-pack/solutions/observability/plugins/streams/server/lib/streams/ingest_pipelines/generate_ingest_pipeline.ts +++ b/x-pack/solutions/observability/plugins/streams/server/lib/streams/ingest_pipelines/generate_ingest_pipeline.ts @@ -12,20 +12,24 @@ import { logsDefaultPipelineProcessors } from './logs_default_pipeline'; import { isRoot } from '../helpers/hierarchy'; import { getProcessingPipelineName } from './name'; +function generateProcessingSteps(definition: StreamDefinition) { + return definition.processing.map((processor) => { + const { type, ...config } = processor.config; + return { + [type]: { + ...config, + if: processor.condition ? conditionToPainless(processor.condition) : undefined, + }, + }; + }); +} + export function generateIngestPipeline(id: string, definition: StreamDefinition) { return { id: getProcessingPipelineName(id), processors: [ ...(isRoot(definition.id) ? logsDefaultPipelineProcessors : []), - ...definition.processing.map((processor) => { - const { type, ...config } = processor.config; - return { - [type]: { - ...config, - if: processor.condition ? conditionToPainless(processor.condition) : undefined, - }, - }; - }), + ...generateProcessingSteps(definition), { pipeline: { name: `${id}@stream.reroutes`, @@ -40,3 +44,14 @@ export function generateIngestPipeline(id: string, definition: StreamDefinition) version: ASSET_VERSION, }; } + +export function generateClassicIngestPipelineBody(definition: StreamDefinition) { + return { + processors: generateProcessingSteps(definition), + _meta: { + description: `Stream-managed pipeline for the ${definition.id} stream`, + managed: true, + }, + version: ASSET_VERSION, + }; +} diff --git a/x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts b/x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts index c158280bec161..5066ecd61a601 100644 --- a/x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts +++ b/x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts @@ -7,6 +7,8 @@ import { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; import { Logger } from '@kbn/logging'; +import { IngestPipeline, IngestProcessorContainer } from '@elastic/elasticsearch/lib/api/types'; +import { set } from '@kbn/safer-lodash-set'; import { IndicesDataStream } from '@elastic/elasticsearch/lib/api/types'; import { STREAMS_INDEX } from '../../../common/constants'; import { FieldDefinition, StreamDefinition } from '../../../common/types'; @@ -24,7 +26,10 @@ import { getAncestors } from './helpers/hierarchy'; import { generateIndexTemplate } from './index_templates/generate_index_template'; import { deleteTemplate, upsertTemplate } from './index_templates/manage_index_templates'; import { getIndexTemplateName } from './index_templates/name'; -import { generateIngestPipeline } from './ingest_pipelines/generate_ingest_pipeline'; +import { + generateClassicIngestPipelineBody, + generateIngestPipeline, +} from './ingest_pipelines/generate_ingest_pipeline'; import { generateReroutePipeline } from './ingest_pipelines/generate_reroute_pipeline'; import { deleteIngestPipeline, @@ -45,6 +50,63 @@ interface DeleteStreamParams extends BaseParams { logger: Logger; } +export async function deleteUnmanagedStreamObjects({ + id, + scopedClusterClient, + logger, +}: DeleteStreamParams) { + const unmanagedAssets = await getUnmanagedElasticsearchAssets({ + name: id, + scopedClusterClient, + }); + const pipelineName = unmanagedAssets.find((asset) => asset.type === 'ingest_pipeline')?.id; + if (pipelineName) { + const { targetPipelineName, targetPipeline, referencesStreamManagedPipeline } = + await findStreamManagedPipelineReference(scopedClusterClient, pipelineName, id); + if (referencesStreamManagedPipeline) { + const streamManagedPipelineName = getProcessingPipelineName(id); + const updatedProcessors = targetPipeline.processors!.filter( + (processor) => + !(processor.pipeline && processor.pipeline.name === streamManagedPipelineName) + ); + await scopedClusterClient.asCurrentUser.ingest.putPipeline({ + id: targetPipelineName, + body: { + processors: updatedProcessors, + }, + }); + } + } + await deleteDataStream({ + esClient: scopedClusterClient.asCurrentUser, + name: id, + logger, + }); + try { + await deleteIngestPipeline({ + esClient: scopedClusterClient.asCurrentUser, + id: getProcessingPipelineName(id), + logger, + }); + } catch (e) { + // if the pipeline doesn't exist, we don't need to delete it + if (!(e.meta?.statusCode === 404)) { + throw e; + } + } + try { + await scopedClusterClient.asInternalUser.delete({ + id, + index: STREAMS_INDEX, + refresh: 'wait_for', + }); + } catch (e) { + if (e.meta?.statusCode !== 404) { + throw e; + } + } +} + export async function deleteStreamObjects({ id, scopedClusterClient, logger }: DeleteStreamParams) { await deleteDataStream({ esClient: scopedClusterClient.asCurrentUser, @@ -82,7 +144,7 @@ async function upsertInternalStream({ definition, scopedClusterClient }: BasePar return scopedClusterClient.asInternalUser.index({ id: definition.id, index: STREAMS_INDEX, - document: { ...definition, managed: true }, + document: { ...definition }, refresh: 'wait_for', }); } @@ -103,14 +165,20 @@ export async function listStreams({ }); const dataStreams = await listDataStreamsAsStreams({ scopedClusterClient }); - let definitions = response.hits.hits.map((hit) => ({ ...hit._source!, managed: true })); + let definitions = response.hits.hits.map((hit) => ({ ...hit._source! })); const hasAccess = await Promise.all( definitions.map((definition) => checkReadAccess({ id: definition.id, scopedClusterClient })) ); definitions = definitions.filter((_, index) => hasAccess[index]); + const definitionMap = new Map(definitions.map((definition) => [definition.id, definition])); + dataStreams.forEach((dataStream) => { + if (!definitionMap.has(dataStream.id)) { + definitionMap.set(dataStream.id, dataStream); + } + }); return { - definitions: [...definitions, ...dataStreams], + definitions: Array.from(definitionMap.values()), }; } @@ -158,7 +226,6 @@ export async function readStream({ return { definition: { ...definition, - managed: true, }, }; } catch (e) { @@ -169,35 +236,42 @@ export async function readStream({ } } -export async function readDataStreamAsStream({ - id, +export async function readDataStreamAsStream({ id, scopedClusterClient }: ReadStreamParams) { + const definition: StreamDefinition = { + id, + managed: false, + children: [], + fields: [], + processing: [], + }; + + definition.unmanaged_elasticsearch_assets = await getUnmanagedElasticsearchAssets({ + name: id, + scopedClusterClient, + }); + + return { definition }; +} + +interface ReadUnmanagedAssetsParams extends BaseParams { + name: string; +} + +async function getUnmanagedElasticsearchAssets({ + name, scopedClusterClient, - skipAccessCheck, -}: ReadStreamParams) { +}: ReadUnmanagedAssetsParams) { let dataStream: IndicesDataStream; try { - const response = await scopedClusterClient.asInternalUser.indices.getDataStream({ name: id }); + const response = await scopedClusterClient.asInternalUser.indices.getDataStream({ name }); dataStream = response.data_streams[0]; } catch (e) { if (e.meta?.statusCode === 404) { - throw new DefinitionNotFound(`Stream definition for ${id} not found.`); + throw new DefinitionNotFound(`Stream definition for ${name} not found.`); } throw e; } - const definition: StreamDefinition = { - id, - managed: false, - children: [], - fields: [], - processing: [], - }; - if (!skipAccessCheck) { - const hasAccess = await checkReadAccess({ id, scopedClusterClient }); - if (!hasAccess) { - throw new DefinitionNotFound(`Stream definition for ${id} not found.`); - } - } // retrieve linked index template, component template and ingest pipeline const templateName = dataStream.template; const componentTemplates: string[] = []; @@ -215,9 +289,9 @@ export async function readDataStreamAsStream({ }); const ingestPipelineId = currentIndex[writeIndexName].settings?.index?.default_pipeline!; - definition.unmanaged_elasticsearch_assets = [ + return [ { - type: 'ingest_pipeline', + type: 'ingest_pipeline' as const, id: ingestPipelineId, }, ...componentTemplates.map((componentTemplateName) => ({ @@ -225,16 +299,14 @@ export async function readDataStreamAsStream({ id: componentTemplateName, })), { - type: 'index_template', + type: 'index_template' as const, id: templateName, }, { - type: 'data_stream', - id, + type: 'data_stream' as const, + id: name, }, ]; - - return { definition }; } interface ReadAncestorsParams extends BaseParams { @@ -378,8 +450,12 @@ export async function syncStream({ logger, }: SyncStreamParams) { if (!definition.managed) { - // TODO For now, we just don't allow reads at all - later on we will relax this to allow certain operations, but they will use a completely different syncing logic - throw new Error('Cannot sync an unmanaged stream'); + await syncUnmanagedStream({ scopedClusterClient, definition, logger }); + await upsertInternalStream({ + scopedClusterClient, + definition, + }); + return; } const componentTemplate = generateLayer(definition.id, definition); await upsertComponent({ @@ -432,6 +508,163 @@ export async function syncStream({ }); } +interface ExecutionPlanStep { + method: string; + path: string; + body?: Record; +} + +async function syncUnmanagedStream({ scopedClusterClient, definition, logger }: SyncStreamParams) { + if (definition.managed) { + throw new Error('Got an unmanaged stream that is marked as managed'); + } + if (definition.fields.length) { + throw new Error( + 'Unmanaged streams cannot have managed fields, please edit the component templates directly' + ); + } + if (definition.children.length) { + throw new Error('Unmanaged streams cannot have managed children, coming soon'); + } + const unmanagedAssets = await getUnmanagedElasticsearchAssets({ + name: definition.id, + scopedClusterClient, + }); + const executionPlan: ExecutionPlanStep[] = []; + const streamManagedPipelineName = getProcessingPipelineName(definition.id); + const pipelineName = unmanagedAssets.find((asset) => asset.type === 'ingest_pipeline')?.id; + if (!pipelineName) { + throw new Error('Unmanaged stream needs a default ingest pipeline'); + } + if (pipelineName === streamManagedPipelineName) { + throw new Error('Unmanaged stream cannot have the @stream pipeline as the default pipeline'); + } + await ensureStreamManagedPipelineReference( + scopedClusterClient, + pipelineName, + definition, + executionPlan + ); + + if (definition.processing.length) { + // if the stream has processing, we need to create or update the stream managed pipeline + executionPlan.push({ + method: 'PUT', + path: `/_ingest/pipeline/${streamManagedPipelineName}`, + body: generateClassicIngestPipelineBody(definition), + }); + } else { + const pipelineExists = Boolean( + await tryGettingPipeline({ scopedClusterClient, id: streamManagedPipelineName }) + ); + // no processing, just delete the pipeline if it exists. The reference to the pipeline won't break anything + if (pipelineExists) { + executionPlan.push({ + method: 'DELETE', + path: `/_ingest/pipeline/${streamManagedPipelineName}`, + }); + } + } + + await executePlan(executionPlan, scopedClusterClient); +} + +async function executePlan( + executionPlan: ExecutionPlanStep[], + scopedClusterClient: IScopedClusterClient +) { + for (const step of executionPlan) { + await scopedClusterClient.asCurrentUser.transport.request({ + method: step.method, + path: step.path, + body: step.body, + }); + } +} + +async function findStreamManagedPipelineReference( + scopedClusterClient: IScopedClusterClient, + pipelineName: string, + streamId: string +): Promise<{ + targetPipelineName: string; + targetPipeline: IngestPipeline; + referencesStreamManagedPipeline: boolean; +}> { + const streamManagedPipelineName = getProcessingPipelineName(streamId); + const pipeline = (await tryGettingPipeline({ scopedClusterClient, id: pipelineName })) || { + processors: [], + }; + const streamProcessor = pipeline.processors?.find( + (processor) => processor.pipeline && processor.pipeline.name === streamManagedPipelineName + ); + const customProcessor = pipeline.processors?.findLast( + (processor) => processor.pipeline && processor.pipeline.name.endsWith('@custom') + ); + if (streamProcessor) { + return { + targetPipelineName: pipelineName, + targetPipeline: pipeline, + referencesStreamManagedPipeline: true, + }; + } + if (customProcessor) { + // go one level deeper, find the latest @custom leaf pipeline + return await findStreamManagedPipelineReference( + scopedClusterClient, + customProcessor.pipeline!.name, + streamId + ); + } + return { + targetPipelineName: pipelineName, + targetPipeline: pipeline, + referencesStreamManagedPipeline: false, + }; +} + +async function ensureStreamManagedPipelineReference( + scopedClusterClient: IScopedClusterClient, + pipelineName: string, + definition: StreamDefinition, + executionPlan: ExecutionPlanStep[] +) { + const streamManagedPipelineName = getProcessingPipelineName(definition.id); + const { targetPipelineName, targetPipeline, referencesStreamManagedPipeline } = + await findStreamManagedPipelineReference(scopedClusterClient, pipelineName, definition.id); + if (!referencesStreamManagedPipeline) { + const callStreamManagedPipelineProcessor: IngestProcessorContainer = { + pipeline: { + name: streamManagedPipelineName, + if: `ctx._index == '${definition.id}'`, + ignore_missing_pipeline: true, + description: + "Call the stream's managed pipeline - do not change this manually but instead use the streams UI or API", + }, + }; + executionPlan.push({ + method: 'PUT', + path: `/_ingest/pipeline/${targetPipelineName}`, + body: set( + { ...targetPipeline }, + 'processors', + (targetPipeline.processors || []).concat(callStreamManagedPipelineProcessor) + ), + }); + } +} + +async function tryGettingPipeline({ scopedClusterClient, id }: ReadStreamParams) { + try { + return (await scopedClusterClient.asCurrentUser.ingest.getPipeline({ id }))[id]; + } catch (e) { + if (e.meta?.statusCode === 404) { + return; + } + throw e; + } +} + export async function streamsEnabled({ scopedClusterClient }: BaseParams) { return await scopedClusterClient.asInternalUser.indices.exists({ index: STREAMS_INDEX, diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/index.ts b/x-pack/solutions/observability/plugins/streams/server/routes/index.ts index cf130e99db3fc..e6c53e33e217e 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/index.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/index.ts @@ -15,6 +15,8 @@ import { listStreamsRoute } from './streams/list'; import { readStreamRoute } from './streams/read'; import { resyncStreamsRoute } from './streams/resync'; import { sampleStreamRoute } from './streams/sample'; +import { schemaFieldsSimulationRoute } from './streams/schema/fields_simulation'; +import { unmappedFieldsRoute } from './streams/schema/unmapped_fields'; import { streamsStatusRoutes } from './streams/settings'; export const streamsRouteRepository = { @@ -29,6 +31,8 @@ export const streamsRouteRepository = { ...esqlRoutes, ...disableStreamsRoute, ...sampleStreamRoute, + ...unmappedFieldsRoute, + ...schemaFieldsSimulationRoute, }; export type StreamsRouteRepository = typeof streamsRouteRepository; diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/delete.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/delete.ts index a2092838792cf..d6bf5fbb84d8f 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/delete.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/delete.ts @@ -16,7 +16,12 @@ import { SecurityException, } from '../../lib/streams/errors'; import { createServerRoute } from '../create_server_route'; -import { syncStream, readStream, deleteStreamObjects } from '../../lib/streams/stream_crud'; +import { + syncStream, + readStream, + deleteStreamObjects, + deleteUnmanagedStreamObjects, +} from '../../lib/streams/stream_crud'; import { MalformedStreamId } from '../../lib/streams/errors/malformed_stream_id'; import { getParentId } from '../../lib/streams/helpers/hierarchy'; @@ -47,14 +52,6 @@ export const deleteStreamRoute = createServerRoute({ try { const { scopedClusterClient } = await getScopedClients({ request }); - const parentId = getParentId(params.path.id); - if (!parentId) { - throw new MalformedStreamId('Cannot delete root stream'); - } - - // need to update parent first to cut off documents streaming down - await updateParentStream(scopedClusterClient, params.path.id, parentId, logger); - await deleteStream(scopedClusterClient, params.path.id, logger); return { acknowledged: true }; @@ -83,6 +80,18 @@ export async function deleteStream( ) { try { const { definition } = await readStream({ scopedClusterClient, id }); + if (!definition.managed) { + await deleteUnmanagedStreamObjects({ scopedClusterClient, id, logger }); + return; + } + + const parentId = getParentId(id); + if (!parentId) { + throw new MalformedStreamId('Cannot delete root stream'); + } + + // need to update parent first to cut off documents streaming down + await updateParentStream(scopedClusterClient, id, parentId, logger); for (const child of definition.children) { await deleteStream(scopedClusterClient, child.id, logger); } diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/edit.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/edit.ts index e280796bc9780..19867018ce25f 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/edit.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/edit.ts @@ -50,6 +50,17 @@ export const editStreamRoute = createServerRoute({ handler: async ({ response, params, logger, request, getScopedClients }) => { try { const { scopedClusterClient } = await getScopedClients({ request }); + const streamDefinition = { ...params.body, id: params.path.id }; + + if (!streamDefinition.managed) { + await syncStream({ + scopedClusterClient, + definition: { ...streamDefinition, id: params.path.id }, + rootDefinition: undefined, + logger, + }); + return { acknowledged: true }; + } await validateStreamChildren(scopedClusterClient, params.path.id, params.body.children); await validateAncestorFields(scopedClusterClient, params.path.id, params.body.fields); @@ -58,8 +69,6 @@ export const editStreamRoute = createServerRoute({ const parentId = getParentId(params.path.id); let parentDefinition: StreamDefinition | undefined; - const streamDefinition = { ...params.body, id: params.path.id }; - // always need to go from the leaves to the parent when syncing ingest pipelines, otherwise data // will be routed before the data stream is ready diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/enable.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/enable.ts index cfcb97f9b3581..ee49a93aaacbb 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/enable.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/enable.ts @@ -31,12 +31,12 @@ export const enableStreamsRoute = createServerRoute({ response, logger, getScopedClients, - }): Promise<{ acknowledged: true }> => { + }): Promise<{ acknowledged: true; message: string }> => { try { const { scopedClusterClient } = await getScopedClients({ request }); const alreadyEnabled = await streamsEnabled({ scopedClusterClient }); if (alreadyEnabled) { - return { acknowledged: true }; + return { acknowledged: true, message: 'Streams was already enabled' }; } await createStreamsIndex(scopedClusterClient); await syncStream({ @@ -44,7 +44,11 @@ export const enableStreamsRoute = createServerRoute({ definition: rootStreamDefinition, logger, }); - return { acknowledged: true }; + return { + acknowledged: true, + message: + 'Streams enabled - reload your browser window to show the streams UI in the navigation', + }; } catch (e) { if (e instanceof SecurityException) { throw badRequest(e); diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/fork.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/fork.ts index 070dc66b9ab10..9ec61d27619e2 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/fork.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/fork.ts @@ -58,7 +58,11 @@ export const forkStreamsRoute = createServerRoute({ id: params.path.id, }); - const childDefinition = { ...params.body.stream, children: [], managed: true }; + if (rootDefinition.managed === false) { + throw new MalformedStreamId('Cannot fork a stream that is not managed'); + } + + const childDefinition = { ...params.body.stream, children: [] }; // check whether root stream has a child of the given name already if (rootDefinition.children.some((child) => child.id === childDefinition.id)) { diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/list.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/list.ts index 774a256e5ba4a..f98c635830bda 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/list.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/list.ts @@ -29,14 +29,14 @@ export const listStreamsRoute = createServerRoute({ response, request, getScopedClients, - }): Promise<{ definitions: StreamDefinition[]; trees: StreamTree[] }> => { + }): Promise<{ definitions: StreamDefinition[] }> => { try { const { scopedClusterClient } = await getScopedClients({ request }); const { definitions } = await listStreams({ scopedClusterClient }); - const trees = asTrees(definitions); - - return { definitions, trees }; + return { + definitions, + }; } catch (e) { if (e instanceof DefinitionNotFound) { throw notFound(e); @@ -46,33 +46,3 @@ export const listStreamsRoute = createServerRoute({ } }, }); - -export interface StreamTree { - id: string; - children: StreamTree[]; -} - -function asTrees(definitions: Array<{ id: string; managed?: boolean }>) { - const trees: StreamTree[] = []; - const ids = definitions - .filter((definition) => definition.managed) - .map((definition) => definition.id); - - ids.sort((a, b) => a.split('.').length - b.split('.').length); - - ids.forEach((id) => { - let currentTree = trees; - let existingNode: StreamTree | undefined; - // traverse the tree following the prefix of the current id. - // once we reach the leaf, the current id is added as child - this works because the ids are sorted by depth - while ((existingNode = currentTree.find((node) => id.startsWith(node.id)))) { - currentTree = existingNode.children; - } - if (!existingNode) { - const newNode = { id, children: [] }; - currentTree.push(newNode); - } - }); - - return trees; -} diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/fields_simulation.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/fields_simulation.ts new file mode 100644 index 0000000000000..01aa61a302a39 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/fields_simulation.ts @@ -0,0 +1,207 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { notFound, internal } from '@hapi/boom'; +import { getFlattenedObject } from '@kbn/std'; +import { fieldDefinitionSchema } from '../../../../common/types'; +import { createServerRoute } from '../../create_server_route'; +import { DefinitionNotFound } from '../../../lib/streams/errors'; +import { checkReadAccess } from '../../../lib/streams/stream_crud'; + +const SAMPLE_SIZE = 200; + +export const schemaFieldsSimulationRoute = createServerRoute({ + endpoint: 'POST /api/streams/{id}/schema/fields_simulation', + options: { + access: 'internal', + }, + security: { + authz: { + enabled: false, + reason: + 'This API delegates security to the currently logged in user and their Elasticsearch permissions.', + }, + }, + params: z.object({ + path: z.object({ id: z.string() }), + body: z.object({ + field_definitions: z.array(fieldDefinitionSchema), + }), + }), + handler: async ({ + response, + params, + request, + logger, + getScopedClients, + }): Promise<{ + status: 'unknown' | 'success' | 'failure'; + simulationError: string | null; + documentsWithRuntimeFieldsApplied: unknown[] | null; + }> => { + try { + const { scopedClusterClient } = await getScopedClients({ request }); + + const hasAccess = await checkReadAccess({ id: params.path.id, scopedClusterClient }); + if (!hasAccess) { + throw new DefinitionNotFound(`Stream definition for ${params.path.id} not found.`); + } + + const propertiesForSample = Object.fromEntries( + params.body.field_definitions.map((field) => [field.name, { type: 'keyword' }]) + ); + + const documentSamplesSearchBody = { + // Add keyword runtime mappings so we can pair with exists, this is to attempt to "miss" less documents for the simulation. + runtime_mappings: propertiesForSample, + query: { + bool: { + filter: Object.keys(propertiesForSample).map((field) => ({ + exists: { field }, + })), + }, + }, + sort: [ + { + '@timestamp': { + order: 'desc', + }, + }, + ], + size: SAMPLE_SIZE, + }; + + const sampleResults = await scopedClusterClient.asCurrentUser.search({ + index: params.path.id, + ...documentSamplesSearchBody, + }); + + if ( + (typeof sampleResults.hits.total === 'object' && sampleResults.hits.total?.value === 0) || + sampleResults.hits.total === 0 || + !sampleResults.hits.total + ) { + return { + status: 'unknown', + simulationError: null, + documentsWithRuntimeFieldsApplied: null, + }; + } + + const propertiesForSimulation = Object.fromEntries( + params.body.field_definitions.map((field) => [ + field.name, + { type: field.type, ...(field.format ? { format: field.format } : {}) }, + ]) + ); + + const fieldDefinitionKeys = Object.keys(propertiesForSimulation); + + const sampleResultsAsSimulationDocs = sampleResults.hits.hits.map((hit) => ({ + _index: params.path.id, + _id: hit._id, + _source: Object.fromEntries( + Object.entries(getFlattenedObject(hit._source as Record)).filter( + ([k]) => fieldDefinitionKeys.includes(k) || k === '@timestamp' + ) + ), + })); + + const simulationBody = { + docs: sampleResultsAsSimulationDocs, + component_template_substitutions: { + [`${params.path.id}@stream.layer`]: { + template: { + mappings: { + dynamic: 'strict', + properties: propertiesForSimulation, + }, + }, + }, + }, + }; + + // TODO: We should be using scopedClusterClient.asCurrentUser.simulate.ingest() but the ES JS lib currently has a bug. The types also aren't available yet, so we use any. + const simulation = (await scopedClusterClient.asCurrentUser.transport.request({ + method: 'POST', + path: `_ingest/_simulate`, + body: simulationBody, + })) as any; + + const hasErrors = simulation.docs.some((doc: any) => doc.doc.error !== undefined); + + if (hasErrors) { + const documentWithError = simulation.docs.find((doc: any) => { + return doc.doc.error !== undefined; + }); + + return { + status: 'failure', + simulationError: JSON.stringify( + // Use the first error as a representative error + documentWithError.doc.error + ), + documentsWithRuntimeFieldsApplied: null, + }; + } + + // Convert the field definitions to a format that can be used in runtime mappings (match_only_text -> keyword) + const propertiesCompatibleWithRuntimeMappings = Object.fromEntries( + params.body.field_definitions.map((field) => [ + field.name, + { + type: field.type === 'match_only_text' ? 'keyword' : field.type, + ...(field.format ? { format: field.format } : {}), + }, + ]) + ); + + const runtimeFieldsSearchBody = { + runtime_mappings: propertiesCompatibleWithRuntimeMappings, + sort: [ + { + '@timestamp': { + order: 'desc', + }, + }, + ], + size: SAMPLE_SIZE, + fields: params.body.field_definitions.map((field) => field.name), + _source: false, + }; + + // This gives us a "fields" representation rather than _source from the simulation + const runtimeFieldsResult = await scopedClusterClient.asCurrentUser.search({ + index: params.path.id, + ...runtimeFieldsSearchBody, + }); + + return { + status: 'success', + simulationError: null, + documentsWithRuntimeFieldsApplied: runtimeFieldsResult.hits.hits + .map((hit) => { + if (!hit.fields) { + return {}; + } + return Object.keys(hit.fields).reduce>((acc, field) => { + acc[field] = hit.fields![field][0]; + return acc; + }, {}); + }) + .filter((doc) => Object.keys(doc).length > 0), + }; + } catch (e) { + if (e instanceof DefinitionNotFound) { + throw notFound(e); + } + + throw internal(e); + } + }, +}); diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/unmapped_fields.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/unmapped_fields.ts new file mode 100644 index 0000000000000..15bcb964b8fd6 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/unmapped_fields.ts @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from '@kbn/zod'; +import { internal, notFound } from '@hapi/boom'; +import { getFlattenedObject } from '@kbn/std'; +import { DefinitionNotFound } from '../../../lib/streams/errors'; +import { checkReadAccess, readAncestors, readStream } from '../../../lib/streams/stream_crud'; +import { createServerRoute } from '../../create_server_route'; + +const SAMPLE_SIZE = 500; + +export const unmappedFieldsRoute = createServerRoute({ + endpoint: 'GET /api/streams/{id}/schema/unmapped_fields', + options: { + access: 'internal', + }, + security: { + authz: { + enabled: false, + reason: + 'This API delegates security to the currently logged in user and their Elasticsearch permissions.', + }, + }, + params: z.object({ + path: z.object({ id: z.string() }), + }), + handler: async ({ + response, + params, + request, + logger, + getScopedClients, + }): Promise<{ unmappedFields: string[] }> => { + try { + const { scopedClusterClient } = await getScopedClients({ request }); + + const hasAccess = await checkReadAccess({ id: params.path.id, scopedClusterClient }); + if (!hasAccess) { + throw new DefinitionNotFound(`Stream definition for ${params.path.id} not found.`); + } + + const streamEntity = await readStream({ + scopedClusterClient, + id: params.path.id, + }); + + const searchBody = { + sort: [ + { + '@timestamp': { + order: 'desc', + }, + }, + ], + size: SAMPLE_SIZE, + }; + + const results = await scopedClusterClient.asCurrentUser.search({ + index: params.path.id, + ...searchBody, + }); + + const sourceFields = new Set(); + + results.hits.hits.forEach((hit) => { + Object.keys(getFlattenedObject(hit._source as Record)).forEach((field) => { + sourceFields.add(field); + }); + }); + + // Mapped fields from the stream's definition and inherited from ancestors + const mappedFields = new Set(); + + streamEntity.definition.fields.forEach((field) => mappedFields.add(field.name)); + + const { ancestors } = await readAncestors({ + id: params.path.id, + scopedClusterClient, + }); + + for (const ancestor of ancestors) { + ancestor.definition.fields.forEach((field) => mappedFields.add(field.name)); + } + + const unmappedFields = Array.from(sourceFields) + .filter((field) => !mappedFields.has(field)) + .sort(); + + return { unmappedFields }; + } catch (e) { + if (e instanceof DefinitionNotFound) { + throw notFound(e); + } + + throw internal(e); + } + }, +}); diff --git a/x-pack/solutions/observability/plugins/streams/tsconfig.json b/x-pack/solutions/observability/plugins/streams/tsconfig.json index 4cec623f68286..fbb8515998fb3 100644 --- a/x-pack/solutions/observability/plugins/streams/tsconfig.json +++ b/x-pack/solutions/observability/plugins/streams/tsconfig.json @@ -29,6 +29,8 @@ "@kbn/licensing-plugin", "@kbn/server-route-repository-client", "@kbn/observability-utils-server", - "@kbn/observability-utils-common" + "@kbn/observability-utils-common", + "@kbn/std", + "@kbn/safer-lodash-set" ] } diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/preview_table/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/preview_table/index.tsx index 22db6ff294079..d200e6b3b40be 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/preview_table/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/preview_table/index.tsx @@ -8,7 +8,13 @@ import { EuiDataGrid } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useEffect, useMemo, useState } from 'react'; -export function PreviewTable({ documents }: { documents: unknown[] }) { +export function PreviewTable({ + documents, + displayColumns, +}: { + documents: unknown[]; + displayColumns?: string[]; +}) { const [height, setHeight] = useState('100px'); useEffect(() => { // set height to 100% after a short delay otherwise it doesn't calculate correctly @@ -19,6 +25,8 @@ export function PreviewTable({ documents }: { documents: unknown[] }) { }, []); const columns = useMemo(() => { + if (displayColumns) return displayColumns; + const cols = new Set(); documents.forEach((doc) => { if (!doc || typeof doc !== 'object') { @@ -29,7 +37,7 @@ export function PreviewTable({ documents }: { documents: unknown[] }) { }); }); return Array.from(cols); - }, [documents]); + }, [displayColumns, documents]); const gridColumns = useMemo(() => { return Array.from(columns).map((column) => ({ diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/classic.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/classic.tsx new file mode 100644 index 0000000000000..1664b322b5a8e --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/classic.tsx @@ -0,0 +1,142 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { ReadStreamDefinition, StreamDefinition } from '@kbn/streams-plugin/common'; +import { EuiFlexGroup, EuiListGroup, EuiText } from '@elastic/eui'; +import { useStreamsAppParams } from '../../hooks/use_streams_app_params'; +import { RedirectTo } from '../redirect_to'; +import { StreamDetailEnriching } from '../stream_detail_enriching'; +import { useKibana } from '../../hooks/use_kibana'; +import { Wrapper } from './wrapper'; + +type ManagementSubTabs = 'enrich' | 'overview'; + +function isValidManagementSubTab(value: string): value is ManagementSubTabs { + return ['enrich', 'overview'].includes(value); +} + +export function ClassicStreamDetailManagement({ + definition, + refreshDefinition, +}: { + definition: ReadStreamDefinition; + refreshDefinition: () => void; +}) { + const { + path: { key, subtab }, + } = useStreamsAppParams('/{key}/management/{subtab}'); + + const tabs = { + overview: { + content: , + label: i18n.translate('xpack.streams.streamDetailView.overviewTab', { + defaultMessage: 'Overview', + }), + }, + enrich: { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.enrichingTab', { + defaultMessage: 'Extract field', + }), + }, + }; + + if (!isValidManagementSubTab(subtab)) { + return ( + + ); + } + + return ; +} + +function UnmanagedStreamOverview({ definition }: { definition: StreamDefinition }) { + const { + core: { + http: { basePath }, + }, + } = useKibana(); + const groupedAssets = (definition.unmanaged_elasticsearch_assets ?? []).reduce((acc, asset) => { + const title = assetToTitle(asset); + if (title) { + acc[title] = acc[title] ?? []; + acc[title].push(asset); + } + return acc; + }, {} as Record>); + return ( + + +

+ {i18n.translate('xpack.streams.streamDetailView.unmanagedStreamOverview', { + defaultMessage: + 'This stream is not managed. Follow the links to stack management to change the related Elasticsearch objects.', + })} +

+
+ {Object.entries(groupedAssets).map(([title, assets]) => ( +
+ +

{title}

+
+ ({ + label: asset.id, + href: basePath.prepend(assetToLink(asset)), + iconType: 'index', + target: '_blank', + }))} + /> +
+ ))} +
+ ); +} + +function assetToLink(asset: { type: string; id: string }) { + switch (asset.type) { + case 'index_template': + return `/app/management/data/index_management/templates/${asset.id}`; + case 'component_template': + return `/app/management/data/index_management/component_templates/${asset.id}`; + case 'data_stream': + return `/app/management/data/index_management/data_streams/${asset.id}`; + case 'ingest_pipeline': + return `/app/management/ingest/ingest_pipelines?pipeline=${asset.id}`; + default: + return ''; + } +} + +function assetToTitle(asset: { type: string; id: string }) { + switch (asset.type) { + case 'index_template': + return i18n.translate('xpack.streams.streamDetailView.indexTemplate', { + defaultMessage: 'Index template', + }); + case 'component_template': + return i18n.translate('xpack.streams.streamDetailView.componentTemplate', { + defaultMessage: 'Component template', + }); + case 'data_stream': + return i18n.translate('xpack.streams.streamDetailView.dataStream', { + defaultMessage: 'Data stream', + }); + case 'ingest_pipeline': + return i18n.translate('xpack.streams.streamDetailView.ingestPipeline', { + defaultMessage: 'Ingest pipeline', + }); + default: + return ''; + } +} diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/index.tsx index 4f3d207c91789..24567fe8d80a3 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/index.tsx @@ -5,205 +5,34 @@ * 2.0. */ import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { ReadStreamDefinition, StreamDefinition } from '@kbn/streams-plugin/common'; -import { css } from '@emotion/css'; -import { EuiButtonGroup, EuiFlexGroup, EuiFlexItem, EuiListGroup, EuiText } from '@elastic/eui'; -import { useStreamsAppParams } from '../../hooks/use_streams_app_params'; -import { RedirectTo } from '../redirect_to'; -import { useStreamsAppRouter } from '../../hooks/use_streams_app_router'; -import { StreamDetailRouting } from '../stream_detail_routing'; -import { StreamDetailEnriching } from '../stream_detail_enriching'; -import { StreamDetailSchemaEditor } from '../stream_detail_schema_editor'; -import { useKibana } from '../../hooks/use_kibana'; - -type ManagementSubTabs = 'route' | 'enrich' | 'schemaEditor'; - -function isValidManagementSubTab(value: string): value is ManagementSubTabs { - return ['route', 'enrich', 'schemaEditor'].includes(value); -} +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { WiredStreamDetailManagement } from './wired'; +import { ClassicStreamDetailManagement } from './classic'; export function StreamDetailManagement({ definition, refreshDefinition, + isLoadingDefinition, }: { definition?: ReadStreamDefinition; refreshDefinition: () => void; + isLoadingDefinition: boolean; }) { - const { - path: { key, subtab }, - } = useStreamsAppParams('/{key}/management/{subtab}'); - const router = useStreamsAppRouter(); - - if (subtab === 'overview') { - if (!definition) { - return null; - } - if (definition.managed) { - return ( - - ); - } - return ; - } - - const tabs = { - route: { - content: ( - - ), - label: i18n.translate('xpack.streams.streamDetailView.routingTab', { - defaultMessage: 'Streams Partitioning', - }), - }, - enrich: { - content: ( - - ), - label: i18n.translate('xpack.streams.streamDetailView.enrichingTab', { - defaultMessage: 'Extract field', - }), - }, - schemaEditor: { - content: ( - - ), - label: i18n.translate('xpack.streams.streamDetailView.schemaEditorTab', { - defaultMessage: 'Schema editor', - }), - }, - }; - - if (!isValidManagementSubTab(subtab)) { - return ( - - ); + if (!definition) { + return null; } - if (definition && !definition.managed) { + if (definition.managed) { return ( - ); } - const selectedTabObject = tabs[subtab]; - - return ( - - - { - router.push('/{key}/management/{subtab}', { - path: { key, subtab: optionId }, - query: {}, - }); - }} - options={Object.keys(tabs).map((id) => ({ - id, - label: tabs[id as ManagementSubTabs].label, - }))} - /> - - - {selectedTabObject.content} - - - ); -} - -function assetToLink(asset: { type: string; id: string }) { - switch (asset.type) { - case 'index_template': - return `/app/management/data/index_management/templates/${asset.id}`; - case 'component_template': - return `/app/management/data/index_management/component_templates/${asset.id}`; - case 'data_stream': - return `/app/management/data/index_management/data_streams/${asset.id}`; - case 'ingest_pipeline': - return `/app/management/ingest/ingest_pipelines?pipeline=${asset.id}`; - default: - return ''; - } -} - -function assetToTitle(asset: { type: string; id: string }) { - switch (asset.type) { - case 'index_template': - return i18n.translate('xpack.streams.streamDetailView.indexTemplate', { - defaultMessage: 'Index template', - }); - case 'component_template': - return i18n.translate('xpack.streams.streamDetailView.componentTemplate', { - defaultMessage: 'Component template', - }); - case 'data_stream': - return i18n.translate('xpack.streams.streamDetailView.dataStream', { - defaultMessage: 'Data stream', - }); - case 'ingest_pipeline': - return i18n.translate('xpack.streams.streamDetailView.ingestPipeline', { - defaultMessage: 'Ingest pipeline', - }); - default: - return ''; - } -} - -function UnmanagedStreamOverview({ definition }: { definition: StreamDefinition }) { - const { - core: { - http: { basePath }, - }, - } = useKibana(); - const groupedAssets = (definition.unmanaged_elasticsearch_assets ?? []).reduce((acc, asset) => { - const title = assetToTitle(asset); - if (title) { - acc[title] = acc[title] ?? []; - acc[title].push(asset); - } - return acc; - }, {} as Record>); return ( - - -

- {i18n.translate('xpack.streams.streamDetailView.unmanagedStreamOverview', { - defaultMessage: - 'This stream is not managed. Follow the links to stack management to change the related Elasticsearch objects.', - })} -

-
- {Object.entries(groupedAssets).map(([title, assets]) => ( -
- -

{title}

-
- ({ - label: asset.id, - href: basePath.prepend(assetToLink(asset)), - iconType: 'index', - target: '_blank', - }))} - /> -
- ))} -
+ ); } diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wired.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wired.tsx new file mode 100644 index 0000000000000..6b4888c8d4668 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wired.tsx @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { useStreamsAppParams } from '../../hooks/use_streams_app_params'; +import { RedirectTo } from '../redirect_to'; +import { StreamDetailRouting } from '../stream_detail_routing'; +import { StreamDetailEnriching } from '../stream_detail_enriching'; +import { StreamDetailSchemaEditor } from '../stream_detail_schema_editor'; +import { Wrapper } from './wrapper'; + +type ManagementSubTabs = 'route' | 'enrich' | 'schemaEditor'; + +function isValidManagementSubTab(value: string): value is ManagementSubTabs { + return ['route', 'enrich', 'schemaEditor'].includes(value); +} + +export function WiredStreamDetailManagement({ + definition, + refreshDefinition, + isLoadingDefinition, +}: { + definition?: ReadStreamDefinition; + refreshDefinition: () => void; + isLoadingDefinition: boolean; +}) { + const { + path: { key, subtab }, + } = useStreamsAppParams('/{key}/management/{subtab}'); + + const tabs = { + route: { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.routingTab', { + defaultMessage: 'Streams Partitioning', + }), + }, + enrich: { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.enrichingTab', { + defaultMessage: 'Extract field', + }), + }, + schemaEditor: { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.schemaEditorTab', { + defaultMessage: 'Schema editor', + }), + }, + }; + + if (!isValidManagementSubTab(subtab)) { + return ( + + ); + } + + return ; +} diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wrapper.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wrapper.tsx new file mode 100644 index 0000000000000..92d80924298fc --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wrapper.tsx @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiButtonGroup, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import React from 'react'; +import { css } from '@emotion/css'; +import { useStreamsAppRouter } from '../../hooks/use_streams_app_router'; + +export function Wrapper({ + tabs, + streamId, + subtab, +}: { + tabs: Record; + streamId: string; + subtab: string; +}) { + const router = useStreamsAppRouter(); + return ( + + + { + router.push('/{key}/management/{subtab}', { + path: { key: streamId, subtab: optionId }, + query: {}, + }); + }} + options={Object.keys(tabs).map((id) => ({ + id, + label: tabs[id].label, + }))} + /> + + + {tabs[subtab].content} + + + ); +} diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_overview/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_overview/index.tsx index c051d114317ea..28af5f4f104c1 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_overview/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_overview/index.tsx @@ -8,15 +8,15 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiPanel } from '@elastic/eui'; import { calculateAuto } from '@kbn/calculate-auto'; import { i18n } from '@kbn/i18n'; import { useDateRange } from '@kbn/observability-utils-browser/hooks/use_date_range'; -import { StreamDefinition } from '@kbn/streams-plugin/common'; import moment from 'moment'; import React, { useMemo } from 'react'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; import { useKibana } from '../../hooks/use_kibana'; import { useStreamsAppFetch } from '../../hooks/use_streams_app_fetch'; import { ControlledEsqlChart } from '../esql_chart/controlled_esql_chart'; import { StreamsAppSearchBar } from '../streams_app_search_bar'; -export function StreamDetailOverview({ definition }: { definition?: StreamDefinition }) { +export function StreamDetailOverview({ definition }: { definition?: ReadStreamDefinition }) { const { dependencies: { start: { diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx index ca58051f9db2b..2b829aca37b86 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx @@ -78,7 +78,12 @@ export function StreamDetailRouting({ const closeModal = () => routingAppState.setShowDeleteModal(false); return ( - <> + {routingAppState.showDeleteModal && routingAppState.childUnderEdit && ( - + ); } diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_parent.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_parent.tsx new file mode 100644 index 0000000000000..5f8b6f4af0ffe --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_parent.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiBadge } from '@elastic/eui'; +import React from 'react'; +import { useStreamsAppRouter } from '../../hooks/use_streams_app_router'; + +export const FieldParent = ({ + parent, + linkEnabled = false, +}: { + parent: string; + linkEnabled?: boolean; +}) => { + const router = useStreamsAppRouter(); + return linkEnabled ? ( + + {parent} + + ) : ( + {parent} + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_status.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_status.tsx new file mode 100644 index 0000000000000..dda456a9f49f7 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_status.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiBadge } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; + +export type FieldStatus = 'inherited' | 'mapped' | 'unmapped'; + +export const FIELD_STATUS_MAP = { + inherited: { + color: 'hollow', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorInheritedStatusLabel', { + defaultMessage: 'Inherited', + }), + }, + mapped: { + color: 'success', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorMappedStatusLabel', { + defaultMessage: 'Mapped', + }), + }, + unmapped: { + color: 'default', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorUnmappedStatusLabel', { + defaultMessage: 'Unmapped', + }), + }, +}; + +export const FieldStatus = ({ status }: { status: FieldStatus }) => { + return ( + <> + {FIELD_STATUS_MAP[status].label} + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_type.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_type.tsx new file mode 100644 index 0000000000000..a278d22dcd3ec --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_type.tsx @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup, EuiFlexItem, EuiToken } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FieldDefinition } from '@kbn/streams-plugin/common/types'; +import React from 'react'; + +export const FIELD_TYPE_MAP = { + boolean: { + icon: 'tokenBoolean', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableBooleanType', { + defaultMessage: 'Boolean', + }), + }, + date: { + icon: 'tokenDate', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableDateType', { + defaultMessage: 'Date', + }), + }, + keyword: { + icon: 'tokenKeyword', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableKeywordType', { + defaultMessage: 'Keyword', + }), + }, + match_only_text: { + icon: 'tokenText', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableTextType', { + defaultMessage: 'Text', + }), + }, + long: { + icon: 'tokenNumber', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableNumberType', { + defaultMessage: 'Number', + }), + }, + double: { + icon: 'tokenNumber', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableNumberType', { + defaultMessage: 'Number', + }), + }, + ip: { + icon: 'tokenIP', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableIpType', { + defaultMessage: 'IP', + }), + }, +}; + +export const FieldType = ({ type }: { type: FieldDefinition['type'] }) => { + return ( + + + + + {`${FIELD_TYPE_MAP[type].label}`} + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/fields_table.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/fields_table.tsx new file mode 100644 index 0000000000000..b50fdee7e6ae9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/fields_table.tsx @@ -0,0 +1,355 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo, useState } from 'react'; +import { + EuiButtonIcon, + EuiContextMenu, + EuiDataGrid, + EuiPopover, + EuiSearchBar, + useGeneratedHtmlId, +} from '@elastic/eui'; +import type { + EuiContextMenuPanelDescriptor, + EuiContextMenuPanelItemDescriptor, + EuiDataGridProps, + Query, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import useToggle from 'react-use/lib/useToggle'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common/types'; +import { FieldType } from './field_type'; +import { FieldStatus } from './field_status'; +import { FieldEntry, SchemaEditorEditingState } from './hooks/use_editing_state'; +import { SchemaEditorUnpromotingState } from './hooks/use_unpromoting_state'; +import { FieldParent } from './field_parent'; + +interface FieldsTableContainerProps { + definition: ReadStreamDefinition; + unmappedFieldsResult?: string[]; + isLoadingUnmappedFields: boolean; + query?: Query; + editingState: SchemaEditorEditingState; + unpromotingState: SchemaEditorUnpromotingState; +} + +const COLUMNS = { + name: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTablenameHeader', { + defaultMessage: 'Field', + }), + }, + type: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTabletypeHeader', { + defaultMessage: 'Type', + }), + }, + format: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableformatHeader', { + defaultMessage: 'Format', + }), + }, + parent: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableFieldParentHeader', { + defaultMessage: 'Field Parent (Stream)', + }), + }, + status: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTablestatusHeader', { + defaultMessage: 'Status', + }), + }, +}; + +export const EMPTY_CONTENT = '-----'; + +export const FieldsTableContainer = ({ + definition, + unmappedFieldsResult, + isLoadingUnmappedFields, + query, + editingState, + unpromotingState, +}: FieldsTableContainerProps) => { + const inheritedFields = useMemo(() => { + return definition.inheritedFields.map((field) => ({ + name: field.name, + type: field.type, + format: field.format, + parent: field.from, + status: 'inherited' as const, + })); + }, [definition]); + + const filteredInheritedFields = useMemo(() => { + if (!query) return inheritedFields; + return EuiSearchBar.Query.execute(query, inheritedFields, { + defaultFields: ['name', 'type'], + }); + }, [inheritedFields, query]); + + const mappedFields = useMemo(() => { + return definition.fields.map((field) => ({ + name: field.name, + type: field.type, + format: field.format, + parent: definition.id, + status: 'mapped' as const, + })); + }, [definition]); + + const filteredMappedFields = useMemo(() => { + if (!query) return mappedFields; + return EuiSearchBar.Query.execute(query, mappedFields, { + defaultFields: ['name', 'type'], + }); + }, [mappedFields, query]); + + const unmappedFields = useMemo(() => { + return unmappedFieldsResult + ? unmappedFieldsResult.map((field) => ({ + name: field, + parent: definition.id, + status: 'unmapped' as const, + })) + : []; + }, [definition.id, unmappedFieldsResult]); + + const filteredUnmappedFields = useMemo(() => { + if (!unmappedFieldsResult) return []; + if (!query) return unmappedFields; + return EuiSearchBar.Query.execute(query, unmappedFields, { + defaultFields: ['name'], + }); + }, [unmappedFieldsResult, query, unmappedFields]); + + const allFilteredFields = useMemo(() => { + return [...filteredInheritedFields, ...filteredMappedFields, ...filteredUnmappedFields]; + }, [filteredInheritedFields, filteredMappedFields, filteredUnmappedFields]); + + return ( + + ); +}; + +interface FieldsTableProps { + definition: ReadStreamDefinition; + fields: FieldEntry[]; + editingState: SchemaEditorEditingState; + unpromotingState: SchemaEditorUnpromotingState; +} + +const FieldsTable = ({ definition, fields, editingState, unpromotingState }: FieldsTableProps) => { + const [visibleColumns, setVisibleColumns] = useState(Object.keys(COLUMNS)); + + const trailingColumns = useMemo(() => { + return [ + { + id: 'actions', + width: 40, + headerCellRender: () => null, + rowCellRender: ({ rowIndex }) => { + const field = fields[rowIndex]; + + let actions: ActionsCellActionsDescriptor[] = []; + + switch (field.status) { + case 'mapped': + actions = [ + { + name: i18n.translate('xpack.streams.actions.viewFieldLabel', { + defaultMessage: 'View field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, false); + }, + }, + { + name: i18n.translate('xpack.streams.actions.editFieldLabel', { + defaultMessage: 'Edit field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, true); + }, + }, + { + name: i18n.translate('xpack.streams.actions.unpromoteFieldLabel', { + defaultMessage: 'Unmap field', + }), + disabled: unpromotingState.isUnpromotingField, + onClick: (fieldEntry: FieldEntry) => { + unpromotingState.setSelectedField(fieldEntry.name); + }, + }, + ]; + break; + case 'unmapped': + actions = [ + { + name: i18n.translate('xpack.streams.actions.viewFieldLabel', { + defaultMessage: 'View field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, false); + }, + }, + { + name: i18n.translate('xpack.streams.actions.mapFieldLabel', { + defaultMessage: 'Map field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, true); + }, + }, + ]; + break; + case 'inherited': + actions = [ + { + name: i18n.translate('xpack.streams.actions.viewFieldLabel', { + defaultMessage: 'View field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, false); + }, + }, + ]; + break; + } + + return ( + ({ + name: action.name, + icon: action.icon, + onClick: (event) => { + action.onClick(field); + }, + })), + }, + ]} + /> + ); + }, + }, + ] as EuiDataGridProps['trailingControlColumns']; + }, [editingState, fields, unpromotingState]); + + return ( + ({ + id: columnId, + ...COLUMNS[columnId as keyof typeof COLUMNS], + }))} + columnVisibility={{ + visibleColumns, + setVisibleColumns, + canDragAndDropColumns: false, + }} + toolbarVisibility={false} + rowCount={fields.length} + renderCellValue={({ rowIndex, columnId }) => { + const field = fields[rowIndex]; + if (columnId === 'type') { + const fieldType = field.type; + if (!fieldType) return EMPTY_CONTENT; + return ; + } else if (columnId === 'parent') { + return ; + } else if (columnId === 'status') { + return ; + } else { + return field[columnId as keyof FieldEntry] || EMPTY_CONTENT; + } + }} + trailingControlColumns={trailingColumns} + gridStyle={{ + border: 'none', + rowHover: 'none', + header: 'underline', + }} + /> + ); +}; + +export const ActionsCell = ({ panels }: { panels: EuiContextMenuPanelDescriptor[] }) => { + const contextMenuPopoverId = useGeneratedHtmlId({ + prefix: 'fieldsTableContextMenuPopover', + }); + + const [popoverIsOpen, togglePopoverIsOpen] = useToggle(false); + + return ( + { + togglePopoverIsOpen(); + }} + /> + } + isOpen={popoverIsOpen} + closePopover={() => togglePopoverIsOpen(false)} + > + ({ + ...panel, + items: panel.items?.map((item) => ({ + name: item.name, + icon: item.icon, + onClick: (event) => { + if (item.onClick) { + item.onClick(event as any); + } + togglePopoverIsOpen(false); + }, + })), + }))} + /> + + ); +}; + +export type ActionsCellActionsDescriptor = Omit & { + onClick: (field: FieldEntry) => void; +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/children_affected_callout.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/children_affected_callout.tsx new file mode 100644 index 0000000000000..1cb9cbd2dd045 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/children_affected_callout.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiCallOut } from '@elastic/eui'; +import { StreamDefinition } from '@kbn/streams-plugin/common/types'; +import { i18n } from '@kbn/i18n'; + +export const ChildrenAffectedCallout = ({ + childStreams, +}: { + childStreams: StreamDefinition['children']; +}) => { + return ( + + {i18n.translate('xpack.streams.childStreamsWarning.text', { + defaultMessage: "Editing this field will affect it's dependant streams: {affectedStreams} ", + values: { + affectedStreams: childStreams.map((stream) => stream.id).join(', '), + }, + })} + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_format.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_format.tsx new file mode 100644 index 0000000000000..98f5d899c1074 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_format.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFieldText } from '@elastic/eui'; +import React from 'react'; +import { FieldDefinition } from '@kbn/streams-plugin/common/types'; +import { SchemaEditorEditingState } from '../hooks/use_editing_state'; + +type FieldFormFormatProps = Pick< + SchemaEditorEditingState, + 'nextFieldType' | 'nextFieldFormat' | 'setNextFieldFormat' +>; + +export const typeSupportsFormat = (type?: FieldDefinition['type']) => { + if (!type) return false; + return ['date'].includes(type); +}; + +export const FieldFormFormat = ({ + nextFieldType: fieldType, + nextFieldFormat: value, + setNextFieldFormat: onChange, +}: FieldFormFormatProps) => { + if (!typeSupportsFormat(fieldType)) { + return null; + } + return ( + onChange(e.target.value)} + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_type.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_type.tsx new file mode 100644 index 0000000000000..c4e601e306f1d --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_type.tsx @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiSelect } from '@elastic/eui'; +import React from 'react'; +import { SchemaEditorEditingState } from '../hooks/use_editing_state'; + +type FieldFormTypeProps = Pick; + +const TYPE_OPTIONS = { + long: 'Long', + double: 'Double', + keyword: 'Keyword', + match_only_text: 'Text (match_only_text)', + boolean: 'Boolean', + ip: 'IP', + date: 'Date', +} as const; + +type FieldTypeOption = keyof typeof TYPE_OPTIONS; + +export const FieldFormType = ({ + nextFieldType: value, + setNextFieldType: onChange, +}: FieldFormTypeProps) => { + return ( + { + onChange(event.target.value as FieldTypeOption); + }} + value={value} + options={Object.entries(TYPE_OPTIONS).map(([optionKey, optionValue]) => ({ + text: optionValue, + value: optionKey, + }))} + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_summary.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_summary.tsx new file mode 100644 index 0000000000000..796e7531258d3 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_summary.tsx @@ -0,0 +1,216 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiIconTip, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { useStreamsAppRouter } from '../../../hooks/use_streams_app_router'; +import { FieldParent } from '../field_parent'; +import { FieldStatus } from '../field_status'; +import { FieldFormFormat, typeSupportsFormat } from './field_form_format'; +import { FieldFormType } from './field_form_type'; +import { SchemaEditorFlyoutProps } from '.'; +import { FieldType } from '../field_type'; + +const EMPTY_CONTENT = '-----'; + +const title = i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryTitle', { + defaultMessage: 'Field summary', +}); + +const FIELD_SUMMARIES = { + fieldStatus: { + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryFieldNameHeader', { + defaultMessage: 'Status', + }), + }, + fieldType: { + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryFieldTypeHeader', { + defaultMessage: 'Type', + }), + }, + fieldFormat: { + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryFieldFormatHeader', { + defaultMessage: 'Format', + }), + }, + fieldParent: { + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryFieldParentHeader', { + defaultMessage: 'Field Parent', + }), + }, +}; + +export const FieldSummary = (props: SchemaEditorFlyoutProps) => { + const { + selectedField, + isEditing, + nextFieldType, + setNextFieldType, + nextFieldFormat, + setNextFieldFormat, + toggleIsEditing, + } = props; + + const router = useStreamsAppRouter(); + + if (!selectedField) { + return null; + } + + return ( + + + + + {title} + + + {selectedField.status !== 'inherited' && !isEditing ? ( + + + + toggleIsEditing()} + iconType="pencil" + > + {i18n.translate('xpack.streams.fieldSummary.editButtonLabel', { + defaultMessage: 'Edit', + })} + + + + + ) : selectedField.status === 'inherited' ? ( + + + + + {i18n.translate('xpack.streams.fieldSummary.editInParentButtonLabel', { + defaultMessage: 'Edit in parent stream', + })} + + + + + ) : null} + + + + + + + + + {FIELD_SUMMARIES.fieldStatus.label}{' '} + + + + + + + + + + + + + + + + + + + {FIELD_SUMMARIES.fieldType.label} + + + + {isEditing ? ( + + ) : selectedField.type ? ( + + ) : ( + `${EMPTY_CONTENT}` + )} + + + + + + {typeSupportsFormat(nextFieldType) && ( + <> + + + + {FIELD_SUMMARIES.fieldFormat.label} + + + + {isEditing ? ( + + ) : ( + `${selectedField.format ?? EMPTY_CONTENT}` + )} + + + + + )} + + + + + {FIELD_SUMMARIES.fieldParent.label} + + + + + + + + + + + + + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/index.tsx new file mode 100644 index 0000000000000..8bbdd6abf9ad3 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/index.tsx @@ -0,0 +1,104 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { StreamsRepositoryClient } from '@kbn/streams-plugin/public/api'; +import { + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiFlyout, + EuiFlyoutBody, + EuiFlyoutHeader, + EuiFlyoutFooter, + EuiTitle, + EuiButton, +} from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { SchemaEditorEditingState } from '../hooks/use_editing_state'; +import { ChildrenAffectedCallout } from './children_affected_callout'; +import { SamplePreviewTable } from './sample_preview_table'; +import { FieldSummary } from './field_summary'; + +export type SchemaEditorFlyoutProps = { + streamsRepositoryClient: StreamsRepositoryClient; + definition: ReadStreamDefinition; +} & SchemaEditorEditingState; + +export const SchemaEditorFlyout = (props: SchemaEditorFlyoutProps) => { + const { + definition, + streamsRepositoryClient, + selectedField, + reset, + nextFieldDefinition, + isEditing, + isSaving, + saveChanges, + } = props; + + return ( + reset()} maxWidth="500px"> + + + + +

{selectedField?.name}

+
+
+
+
+ + + + + {isEditing && definition.children.length > 0 ? ( + + + + ) : null} + + + + + + + + + + reset()} + flush="left" + > + {i18n.translate('xpack.streams.schemaEditorFlyout.closeButtonLabel', { + defaultMessage: 'Cancel', + })} + + + + saveChanges && saveChanges()} + > + {i18n.translate('xpack.streams.fieldForm.saveButtonLabel', { + defaultMessage: 'Save changes', + })} + + + + +
+ ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/sample_preview_table.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/sample_preview_table.tsx new file mode 100644 index 0000000000000..8c04a0b70e3be --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/sample_preview_table.tsx @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo } from 'react'; +import { StreamsRepositoryClient } from '@kbn/streams-plugin/public/api'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { FieldDefinition } from '@kbn/streams-plugin/common/types'; +import { css } from '@emotion/react'; +import { i18n } from '@kbn/i18n'; +import { EuiCallOut } from '@elastic/eui'; +import { getFormattedError } from '../../../util/errors'; +import { useStreamsAppFetch } from '../../../hooks/use_streams_app_fetch'; +import { PreviewTable } from '../../preview_table'; +import { isFullFieldDefinition } from '../hooks/use_editing_state'; +import { LoadingPanel } from '../../loading_panel'; + +interface SamplePreviewTableProps { + definition: ReadStreamDefinition; + nextFieldDefinition?: Partial; + streamsRepositoryClient: StreamsRepositoryClient; +} + +export const SamplePreviewTable = (props: SamplePreviewTableProps) => { + const { nextFieldDefinition, ...rest } = props; + if (isFullFieldDefinition(nextFieldDefinition)) { + return ; + } else { + return null; + } +}; + +const SAMPLE_DOCUMENTS_TO_SHOW = 20; + +const SamplePreviewTableContent = ({ + definition, + nextFieldDefinition, + streamsRepositoryClient, +}: SamplePreviewTableProps & { nextFieldDefinition: FieldDefinition }) => { + const { value, loading, error } = useStreamsAppFetch( + ({ signal }) => { + return streamsRepositoryClient.fetch('POST /api/streams/{id}/schema/fields_simulation', { + signal, + params: { + path: { + id: definition.id, + }, + body: { + field_definitions: [nextFieldDefinition], + }, + }, + }); + }, + [definition.id, nextFieldDefinition, streamsRepositoryClient], + { + disableToastOnError: true, + } + ); + + const columns = useMemo(() => { + return [nextFieldDefinition.name]; + }, [nextFieldDefinition.name]); + + if (loading) { + return ; + } + + if ( + value && + (value.status === 'unknown' || value.documentsWithRuntimeFieldsApplied?.length === 0) + ) { + return ( + + {i18n.translate('xpack.streams.samplePreviewTable.unknownStatus', { + defaultMessage: + "Couldn't simulate changes due to a lack of indexed documents with this field", + })} + + ); + } + + if ((value && value.status === 'failure') || error) { + const formattedError = getFormattedError(error); + return ( + + {value?.simulationError ?? formattedError?.message} + + ); + } + + if (value && value.status === 'success' && value.documentsWithRuntimeFieldsApplied) { + return ( +
+ +
+ ); + } + + return null; +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_editing_state.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_editing_state.tsx new file mode 100644 index 0000000000000..9fc6288c1daf7 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_editing_state.tsx @@ -0,0 +1,180 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FieldDefinition, ReadStreamDefinition } from '@kbn/streams-plugin/common/types'; +import { StreamsRepositoryClient } from '@kbn/streams-plugin/public/api'; +import { useCallback, useMemo, useState } from 'react'; +import useToggle from 'react-use/lib/useToggle'; +import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; +import { ToastsStart } from '@kbn/core-notifications-browser'; +import { i18n } from '@kbn/i18n'; +import { FieldStatus } from '../field_status'; + +export type SchemaEditorEditingState = ReturnType; + +export interface FieldEntry { + name: FieldDefinition['name']; + type?: FieldDefinition['type']; + format?: FieldDefinition['format']; + parent: string; + status: FieldStatus; +} + +export type EditableFieldDefinition = FieldEntry; + +export const useEditingState = ({ + streamsRepositoryClient, + definition, + refreshDefinition, + refreshUnmappedFields, + toastsService, +}: { + streamsRepositoryClient: StreamsRepositoryClient; + definition: ReadStreamDefinition; + refreshDefinition: () => void; + refreshUnmappedFields: () => void; + toastsService: ToastsStart; +}) => { + const abortController = useAbortController(); + /* Whether the field is being edited, otherwise it's just displayed. */ + const [isEditing, toggleIsEditing] = useToggle(false); + /* Whether changes are being persisted */ + const [isSaving, toggleIsSaving] = useToggle(false); + /* Holds errors from saving changes */ + const [error, setError] = useState(); + + /* Represents the currently selected field. This should not be edited directly. */ + const [selectedField, setSelectedField] = useState(); + + /** Dirty state */ + /* Dirty state of the field type */ + const [nextFieldType, setNextFieldType] = useState(); + /* Dirty state of the field format */ + const [nextFieldFormat, setNextFieldFormat] = useState< + EditableFieldDefinition['format'] | undefined + >(); + /* Full dirty definition entry that can be persisted against a stream */ + const nextFieldDefinition = useMemo(() => { + return selectedField + ? { + name: selectedField.name, + type: nextFieldType, + ...(nextFieldFormat && nextFieldType === 'date' ? { format: nextFieldFormat } : {}), + } + : undefined; + }, [nextFieldFormat, nextFieldType, selectedField]); + + const selectField = useCallback( + (field: EditableFieldDefinition, selectAndEdit?: boolean) => { + setSelectedField(field); + setNextFieldType(field.type); + setNextFieldFormat(field.format); + toggleIsEditing(selectAndEdit !== undefined ? selectAndEdit : false); + }, + [toggleIsEditing] + ); + + const reset = useCallback(() => { + setSelectedField(undefined); + setNextFieldType(undefined); + setNextFieldFormat(undefined); + toggleIsEditing(false); + toggleIsSaving(false); + setError(undefined); + }, [toggleIsEditing, toggleIsSaving]); + + const saveChanges = useMemo(() => { + return selectedField && + isFullFieldDefinition(nextFieldDefinition) && + hasChanges(selectedField, nextFieldDefinition) + ? async () => { + toggleIsSaving(true); + try { + await streamsRepositoryClient.fetch(`PUT /api/streams/{id}`, { + signal: abortController.signal, + params: { + path: { + id: definition.id, + }, + body: { + processing: definition.processing, + children: definition.children, + fields: [ + ...definition.fields.filter((field) => field.name !== nextFieldDefinition.name), + nextFieldDefinition, + ], + }, + }, + }); + toastsService.addSuccess( + i18n.translate('xpack.streams.streamDetailSchemaEditorEditSuccessToast', { + defaultMessage: '{field} was successfully edited', + values: { field: nextFieldDefinition.name }, + }) + ); + reset(); + refreshDefinition(); + refreshUnmappedFields(); + } catch (e) { + toggleIsSaving(false); + setError(e); + toastsService.addError(e, { + title: i18n.translate('xpack.streams.streamDetailSchemaEditorEditErrorToast', { + defaultMessage: 'Something went wrong editing the {field} field', + values: { field: nextFieldDefinition.name }, + }), + }); + } + } + : undefined; + }, [ + abortController.signal, + definition.children, + definition.fields, + definition.id, + definition.processing, + nextFieldDefinition, + refreshDefinition, + refreshUnmappedFields, + reset, + selectedField, + streamsRepositoryClient, + toastsService, + toggleIsSaving, + ]); + + return { + selectedField, + selectField, + isEditing, + toggleIsEditing, + nextFieldType, + setNextFieldType, + nextFieldFormat, + setNextFieldFormat, + isSaving, + saveChanges, + reset, + error, + nextFieldDefinition, + }; +}; + +export const isFullFieldDefinition = ( + value?: Partial +): value is FieldDefinition => { + return !!value && !!value.name && !!value.type; +}; + +const hasChanges = ( + selectedField: Partial, + nextFieldEntry: Partial +) => { + return ( + selectedField.type !== nextFieldEntry.type || selectedField.format !== nextFieldEntry.format + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_unpromoting_state.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_unpromoting_state.tsx new file mode 100644 index 0000000000000..b6e30c87cd7b4 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_unpromoting_state.tsx @@ -0,0 +1,93 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { StreamsRepositoryClient } from '@kbn/streams-plugin/public/api'; +import { useCallback, useState } from 'react'; +import useToggle from 'react-use/lib/useToggle'; +import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; +import { ToastsStart } from '@kbn/core-notifications-browser'; +import { i18n } from '@kbn/i18n'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; + +export type SchemaEditorUnpromotingState = ReturnType; + +export const useUnpromotingState = ({ + streamsRepositoryClient, + definition, + refreshDefinition, + refreshUnmappedFields, + toastsService, +}: { + streamsRepositoryClient: StreamsRepositoryClient; + definition: ReadStreamDefinition; + refreshDefinition: () => void; + refreshUnmappedFields: () => void; + toastsService: ToastsStart; +}) => { + const abortController = useAbortController(); + /* Represents the currently persisted state of the selected field. This should not be edited directly. */ + const [selectedField, setSelectedField] = useState(); + /* Whether changes are being persisted */ + const [isUnpromotingField, toggleIsUnpromotingField] = useToggle(false); + /* Holds errors from saving changes */ + const [error, setError] = useState(); + + const unpromoteField = useCallback(async () => { + if (!selectedField) { + return; + } + toggleIsUnpromotingField(true); + try { + await streamsRepositoryClient.fetch(`PUT /api/streams/{id}`, { + signal: abortController.signal, + params: { + path: { + id: definition.id, + }, + body: { + processing: definition.processing, + children: definition.children, + fields: definition.fields.filter((field) => field.name !== selectedField), + }, + }, + }); + toggleIsUnpromotingField(false); + setSelectedField(undefined); + refreshDefinition(); + refreshUnmappedFields(); + toastsService.addSuccess( + i18n.translate('xpack.streams.streamDetailSchemaEditorUnmapSuccessToast', { + defaultMessage: '{field} was successfully unmapped', + values: { field: selectedField }, + }) + ); + } catch (e) { + toggleIsUnpromotingField(false); + setError(e); + toastsService.addError(e, { + title: i18n.translate('xpack.streams.streamDetailSchemaEditorUnmapErrorToast', { + defaultMessage: 'Something went wrong unmapping the {field} field', + values: { field: selectedField }, + }), + }); + } + }, [ + abortController.signal, + definition.children, + definition.fields, + definition.id, + definition.processing, + refreshDefinition, + refreshUnmappedFields, + selectedField, + streamsRepositoryClient, + toastsService, + toggleIsUnpromotingField, + ]); + + return { selectedField, setSelectedField, isUnpromotingField, unpromoteField, error }; +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/index.tsx index 7d3e9322e8d4f..3ca410e74ffdb 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/index.tsx @@ -4,15 +4,138 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { StreamDefinition } from '@kbn/streams-plugin/common'; -import React from 'react'; - -export function StreamDetailSchemaEditor({ - definition: _definition, - refreshDefinition: _refreshDefinition, -}: { - definition?: StreamDefinition; +import React, { useEffect, useState } from 'react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiProgress, + EuiSearchBar, + EuiPortal, + Query, +} from '@elastic/eui'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { css } from '@emotion/css'; +import { useEditingState } from './hooks/use_editing_state'; +import { SchemaEditorFlyout } from './flyout'; +import { useKibana } from '../../hooks/use_kibana'; +import { useUnpromotingState } from './hooks/use_unpromoting_state'; +import { SimpleSearchBar } from './simple_search_bar'; +import { UnpromoteFieldModal } from './unpromote_field_modal'; +import { useStreamsAppFetch } from '../../hooks/use_streams_app_fetch'; +import { FieldsTableContainer } from './fields_table'; + +interface SchemaEditorProps { + definition?: ReadStreamDefinition; refreshDefinition: () => void; -}) { - return <>{'TODO'}; + isLoadingDefinition: boolean; +} + +export function StreamDetailSchemaEditor(props: SchemaEditorProps) { + if (!props.definition) return null; + return ; } + +const Content = ({ + definition, + refreshDefinition, + isLoadingDefinition, +}: Required) => { + const { + dependencies: { + start: { + streams: { streamsRepositoryClient }, + }, + }, + core: { + notifications: { toasts }, + }, + } = useKibana(); + + const [query, setQuery] = useState(EuiSearchBar.Query.MATCH_ALL); + + const { + value: unmappedFieldsValue, + loading: isLoadingUnmappedFields, + refresh: refreshUnmappedFields, + } = useStreamsAppFetch( + ({ signal }) => { + return streamsRepositoryClient.fetch('GET /api/streams/{id}/schema/unmapped_fields', { + signal, + params: { + path: { + id: definition.id, + }, + }, + }); + }, + [definition.id, streamsRepositoryClient] + ); + + const editingState = useEditingState({ + definition, + streamsRepositoryClient, + refreshDefinition, + refreshUnmappedFields, + toastsService: toasts, + }); + + const unpromotingState = useUnpromotingState({ + definition, + streamsRepositoryClient, + refreshDefinition, + refreshUnmappedFields, + toastsService: toasts, + }); + + const { reset } = editingState; + + // If the definition changes (e.g. navigating to parent stream), reset the entire editing state. + useEffect(() => { + reset(); + }, [definition.id, reset]); + + return ( + + + {isLoadingDefinition || isLoadingUnmappedFields ? ( + + + + ) : null} + + setQuery(nextQuery.query ?? undefined)} + /> + + + + + + {editingState.selectedField && ( + + )} + + {unpromotingState.selectedField && ( + + )} + + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/simple_search_bar.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/simple_search_bar.tsx new file mode 100644 index 0000000000000..93e972c4b999a --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/simple_search_bar.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiSearchBar, EuiSearchBarProps } from '@elastic/eui'; +import React from 'react'; + +/* Simple search bar that doesn't attempt to integrate with unified search */ +export const SimpleSearchBar = ({ + query, + onChange, +}: { + query: EuiSearchBarProps['query']; + onChange: Required['onChange']; +}) => { + return ( + { + onChange(nextQuery); + }} + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/unpromote_field_modal.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/unpromote_field_modal.tsx new file mode 100644 index 0000000000000..59d66b44eec44 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/unpromote_field_modal.tsx @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { + EuiButton, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + useGeneratedHtmlId, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { SchemaEditorUnpromotingState } from './hooks/use_unpromoting_state'; + +export const UnpromoteFieldModal = ({ + unpromotingState, +}: { + unpromotingState: SchemaEditorUnpromotingState; +}) => { + const { setSelectedField, selectedField, unpromoteField, isUnpromotingField } = unpromotingState; + + const modalTitleId = useGeneratedHtmlId(); + + if (!selectedField) return null; + + return ( + setSelectedField(undefined)}> + + {selectedField} + + + + {i18n.translate('xpack.streams.unpromoteFieldModal.unpromoteFieldWarning', { + defaultMessage: 'Are you sure you want to unmap this field from template mappings?', + })} + + + + unpromoteField()} + disabled={isUnpromotingField} + color="danger" + fill + > + {i18n.translate('xpack.streams.unpromoteFieldModal.unpromoteFieldButtonLabel', { + defaultMessage: 'Unmap field', + })} + + + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_view/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_view/index.tsx index b0a2307f7b2b7..9ebc5a92f54db 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_view/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_view/index.tsx @@ -29,7 +29,11 @@ export function StreamDetailView() { }, } = useKibana(); - const { value: streamEntity, refresh } = useStreamsAppFetch( + const { + value: streamEntity, + refresh, + loading, + } = useStreamsAppFetch( ({ signal }) => { return streamsRepositoryClient.fetch('GET /api/streams/{id}', { signal, @@ -58,7 +62,13 @@ export function StreamDetailView() { }, { name: 'management', - content: , + content: ( + + ), label: i18n.translate('xpack.streams.streamDetailView.managementTab', { defaultMessage: 'Management', }), diff --git a/x-pack/solutions/observability/plugins/streams_app/public/util/errors.ts b/x-pack/solutions/observability/plugins/streams_app/public/util/errors.ts new file mode 100644 index 0000000000000..e215ad1bb7f97 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/util/errors.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const getFormattedError = (error?: Error) => { + if ( + error && + 'body' in error && + typeof error.body === 'object' && + !!error.body && + 'message' in error.body && + typeof error.body.message === 'string' + ) { + return new Error(error.body.message); + } +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/tsconfig.json b/x-pack/solutions/observability/plugins/streams_app/tsconfig.json index b1184bebbe2bd..7a77dae1922d0 100644 --- a/x-pack/solutions/observability/plugins/streams_app/tsconfig.json +++ b/x-pack/solutions/observability/plugins/streams_app/tsconfig.json @@ -36,5 +36,6 @@ "@kbn/code-editor", "@kbn/ui-theme", "@kbn/navigation-plugin", + "@kbn/core-notifications-browser", ] } diff --git a/x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.js b/x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.js rename to x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.js diff --git a/x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.sh b/x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.sh new file mode 100755 index 0000000000000..9763f45c1101c --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +UUID="$(cat /proc/sys/kernel/random/uuid)" +export UUID + +node x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/solutions/observability/plugins/synthetics/README.md b/x-pack/solutions/observability/plugins/synthetics/README.md new file mode 100644 index 0000000000000..cde8956844597 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/README.md @@ -0,0 +1,121 @@ +# Uptime Monitoring + +## Purpose + +The purpose of this plugin is to provide users of Heartbeat more visibility of what's happening +in their infrastructure. + +## Layout + +There are three sections to the app, `common`, `public`, and `server`. + +### common + +Contains runtime types types, constants and a few other files. + +Notably, we use `io-ts`/`fp-ts` functions and types to help provide +additional runtime safety for our API requests/responses. + +### public + +We use Redux and associated tools for managing our app state. Components come in the usual `connect`ed and +presentational varieties. + +The `lib` directory controls bootstrapping code and adapter types. + +There is a `pages` directory; each view gets its own page component. + +The principal structure of the app is stored in `uptime_app.tsx`. + +### server + +The `lib` directory contains `adapters`, which are connections to external resources like Kibana +Server, Elasticsearch, etc. In addition, it contains domains, which are libraries that provide +functionality via adapters. + +The `requests` directory contains functions responsible for querying Elasticsearch and parsing its +responses. + +There's also a `rest_api` folder that defines the structure of the RESTful API endpoints. + +## Testing + +### Unit tests + +Documentation: https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing + +``` +yarn test:jest x-pack/solutions/observability/plugins/synthetics +``` + +### Functional tests + +In one shell, from **~/kibana/x-pack**: +`node scripts/functional_tests_server.js` + +In another shell, from **~kibana/x-pack**: +`node ../scripts/functional_test_runner.js --grep="{TEST_NAME}"`. + +#### API tests + +If instead you need to run API tests, start up the test server and then in another shell, from **~kibana/x-pack**: +`node ../scripts/functional_test_runner.js --config test/api_integration/config.ts --grep="{TEST_NAME}"`. + +You can update snapshots by prefixing the runner command with `env UPDATE_UPTIME_FIXTURES=1` + +You can access the functional test server's Kibana at `http://localhost:5620/`. + +You can login with username `elastic` and password `changeme` by default. + +If you want to freeze a UI or API test you can include an async call like `await new Promise(r => setTimeout(r, 1000 * 60))` +to freeze the execution for 60 seconds if you need to click around or check things in the state that is loaded. + +#### Running --ssl tests + +Some of our tests require there to be an SSL connection between Kibana and Elasticsearch. + +We can run these tests like described above, but with some special config. + +`node scripts/functional_tests_server.js --config=test/functional_with_es_ssl/config.ts` + +`node scripts/functional_test_runner.js --config=test/functional_with_es_ssl/config.ts` + +#### Running accessibility tests + +We maintain a suite of Accessibility tests (you may see them referred to elsewhere as `a11y` tests). + +These tests render each of our pages and ensure that the inputs and other elements contain the +attributes necessary to ensure all users are able to make use of Kibana (for example, users relying +on screen readers). + +The commands for running these tests are very similar to the other functional tests described above. + +From the `~/x-pack` directory: + +Start the server: `node scripts/functional_tests_server --config test/accessibility/config.ts` + +Run the uptime `a11y` tests: `node scripts/functional_test_runner.js --config test/accessibility/config.ts --grep=uptime` + + +## Deployment agnostic API Integration Tests +The Synthetics tests are located under `x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics` folder. In order to run the SLO tests of your interest, you can grep accordingly. Use the commands below to run all SLO tests (`grep=SyntheticsAPITests`) on stateful or serverless. + +### Stateful + +``` +# start server +node scripts/functional_tests_server --config x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.stateful.config.ts + +# run tests +node scripts/functional_test_runner --config x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.stateful.config.ts --grep=SyntheticsAPITests +``` + +### Serverless + +``` +# start server +node scripts/functional_tests_server --config x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.serverless.config.ts + +# run tests +node scripts/functional_test_runner --config x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.serverless.config.ts --grep=SyntheticsAPITests +``` diff --git a/x-pack/plugins/observability_solution/synthetics/__mocks__/@kbn/code-editor/index.ts b/x-pack/solutions/observability/plugins/synthetics/__mocks__/@kbn/code-editor/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/__mocks__/@kbn/code-editor/index.ts rename to x-pack/solutions/observability/plugins/synthetics/__mocks__/@kbn/code-editor/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/capabilities.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/capabilities.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/capabilities.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/client_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/client_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/client_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/client_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/context_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/context_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/context_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/context_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/data_filters.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/data_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/data_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/data_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/data_test_subjects.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/data_test_subjects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/data_test_subjects.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/data_test_subjects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/monitor_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/monitor_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/monitor_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/monitor_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/monitor_management.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/monitor_management.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/monitor_management.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/monitor_management.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/plugin.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/plugin.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/plugin.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/settings_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/settings_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/settings_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/settings_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/client_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/client_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/client_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/client_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/rest_api.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/rest_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/rest_api.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/rest_api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics_alerts.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/synthetics_alerts.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics_alerts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/ui.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/ui.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/ui.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/ui.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/field_names.ts b/x-pack/solutions/observability/plugins/synthetics/common/field_names.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/field_names.ts rename to x-pack/solutions/observability/plugins/synthetics/common/field_names.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/formatters/format_space_name.ts b/x-pack/solutions/observability/plugins/synthetics/common/formatters/format_space_name.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/formatters/format_space_name.ts rename to x-pack/solutions/observability/plugins/synthetics/common/formatters/format_space_name.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/formatters/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/formatters/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/formatters/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/combine_filters_and_user_search.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/combine_filters_and_user_search.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/combine_filters_and_user_search.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/combine_filters_and_user_search.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/combine_filters_and_user_search.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/combine_filters_and_user_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/combine_filters_and_user_search.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/combine_filters_and_user_search.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/schedule_to_time.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/schedule_to_time.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/schedule_to_time.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/schedule_to_time.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/schedule_to_time.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/schedule_to_time.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/schedule_to_time.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/schedule_to_time.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/stringify_kueries.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/stringify_kueries.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/stringify_kueries.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/stringify_kueries.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/stringify_kueries.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/stringify_kueries.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/stringify_kueries.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/stringify_kueries.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/requests/get_certs_request_body.ts b/x-pack/solutions/observability/plugins/synthetics/common/requests/get_certs_request_body.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/requests/get_certs_request_body.ts rename to x-pack/solutions/observability/plugins/synthetics/common/requests/get_certs_request_body.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/alert_actions.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/alert_actions.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/alert_actions.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/alert_actions.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/alert_actions.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/alert_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/alert_actions.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/alert_actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/status_rule.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/status_rule.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/status_rule.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/status_rule.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/status_rule.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/status_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/status_rule.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/status_rule.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/synthetics/translations.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/synthetics/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/synthetics/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/synthetics/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/synthetics_rule_field_map.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/synthetics_rule_field_map.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/synthetics_rule_field_map.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/synthetics_rule_field_map.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/types.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/types.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/alert_rules/common.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alert_rules/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/alert_rules/common.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alert_rules/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/status_check.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/status_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/status_check.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/status_check.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/tls.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/tls.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/tls.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/certs.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/certs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/certs.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/certs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/common.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/common.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/dynamic_settings.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor/state.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor/state.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor/state.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor/state.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/alert_config.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/alert_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/alert_config.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/alert_config.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/alert_config_schema.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/alert_config_schema.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/alert_config_schema.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/alert_config_schema.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/config_key.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/config_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/config_key.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/config_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/filters.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/filters.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/locations.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/locations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_configs.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_configs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_configs.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_configs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_meta_data.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_meta_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_meta_data.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_meta_data.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_types.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_types.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_types_project.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_types_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_types_project.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_types_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/sort_field.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/sort_field.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/sort_field.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/sort_field.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/state.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/state.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/state.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/state.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_overview_status.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_overview_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_overview_status.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_overview_status.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_params.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_params.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/network_events.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/network_events.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/network_events.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/error_state.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/error_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/error_state.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/error_state.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/histogram.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/histogram.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/histogram.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/observer.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/observer.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/observer.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/observer.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/ping.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/ping.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/ping.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/synthetics.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/synthetics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/synthetics.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/synthetics.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/synthetics.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/synthetics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/synthetics.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/synthetics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/snapshot/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/snapshot/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/snapshot/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/snapshot/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/snapshot/snapshot_count.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/snapshot/snapshot_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/snapshot/snapshot_count.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/snapshot/snapshot_count.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/synthetics_service_api_key.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/synthetics_service_api_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/synthetics_service_api_key.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/synthetics_service_api_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/saved_objects/private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/common/saved_objects/private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/saved_objects/private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/saved_objects/private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/translations/translations.ts b/x-pack/solutions/observability/plugins/synthetics/common/translations/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/translations/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/translations/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/default_alerts.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/default_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/default_alerts.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/default_alerts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/monitor_validation.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/monitor_validation.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/monitor_validation.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/monitor_validation.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/overview.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/overview.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/overview.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/overview.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/saved_objects.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/saved_objects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/saved_objects.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/saved_objects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/synthetics_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/synthetics_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/synthetics_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/synthetics_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/as_mutable_array.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/as_mutable_array.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/as_mutable_array.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/as_mutable_array.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/es_search.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/es_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/es_search.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/es_search.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/get_synthetics_monitor_url.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/get_synthetics_monitor_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/get_synthetics_monitor_url.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/get_synthetics_monitor_url.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/location_formatter.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/location_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/location_formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/location_formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/t_enum.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/t_enum.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/t_enum.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/t_enum.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/README.md b/x-pack/solutions/observability/plugins/synthetics/e2e/README.md new file mode 100644 index 0000000000000..e3be14c9aced8 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/README.md @@ -0,0 +1,32 @@ +## How to run these tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/synthetics/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From the same directory you can now run `node e2e.js --runner`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. + + +## Uptime App Tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/synthetics/scripts`, run `node uptime_e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From the same directory you can now run `node node uptime_e2e.js --runner`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/config.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/config.ts new file mode 100644 index 0000000000000..ff04a6d7bf166 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/config.ts @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; +import { CA_CERT_PATH } from '@kbn/dev-utils'; +import { get } from 'lodash'; +import { commonFunctionalServices } from '@kbn/ftr-common-functional-services'; +import { commonFunctionalUIServices } from '@kbn/ftr-common-functional-ui-services'; +import { readKibanaConfig } from '@kbn/observability-synthetics-test-data'; + +const MANIFEST_KEY = 'xpack.uptime.service.manifestUrl'; +const SERVICE_PASSWORD = 'xpack.uptime.service.password'; +const SERVICE_USERNAME = 'xpack.uptime.service.username'; + +async function config({ readConfigFile }: FtrConfigProviderContext) { + const kibanaCommonTestsConfig = await readConfigFile( + require.resolve('@kbn/test-suites-src/common/config') + ); + const xpackFunctionalTestsConfig = await readConfigFile( + require.resolve('@kbn/test-suites-xpack/functional/config.base') + ); + + const kibanaConfig = readKibanaConfig(); + + const manifestUrl = process.env.SYNTHETICS_SERVICE_MANIFEST ?? get(kibanaConfig, MANIFEST_KEY); + const serviceUsername = + process.env.SYNTHETICS_SERVICE_USERNAME ?? get(kibanaConfig, SERVICE_USERNAME); + const servicePassword = + process.env.SYNTHETICS_SERVICE_PASSWORD ?? get(kibanaConfig, SERVICE_PASSWORD); + + return { + ...kibanaCommonTestsConfig.getAll(), + + services: { + ...commonFunctionalServices, + ...commonFunctionalUIServices, + }, + + esTestCluster: { + ...xpackFunctionalTestsConfig.get('esTestCluster'), + serverArgs: [ + ...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'), + // define custom es server here + // API Keys is enabled at the top level + 'xpack.security.enabled=true', + 'xpack.ml.enabled=false', + ], + }, + + kbnTestServer: { + ...xpackFunctionalTestsConfig.get('kbnTestServer'), + sourceArgs: process.env.WATCH_ENABLED + ? [] + : [...xpackFunctionalTestsConfig.get('kbnTestServer.sourceArgs'), '--no-watch'], + serverArgs: [ + ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), + '--csp.strict=false', + '--home.disableWelcomeScreen=true', + '--csp.warnLegacyBrowsers=false', + // define custom kibana server args here + `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, + // `--elasticsearch.ignoreVersionMismatch=${process.env.CI ? 'false' : 'true'}`, + `--elasticsearch.username=kibana_system`, + `--elasticsearch.password=changeme`, + '--xpack.reporting.enabled=false', + `--xpack.uptime.service.manifestUrl=${manifestUrl}`, + `--xpack.uptime.service.username=${ + process.env.SYNTHETICS_REMOTE_ENABLED + ? serviceUsername + : 'localKibanaIntegrationTestsUser' + }`, + `--xpack.uptime.service.password=${servicePassword}`, + '--uiSettings.overrides.observability:enableLegacyUptimeApp=true', + ], + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default config; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/browser/data.json.gz b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/browser/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/browser/data.json.gz rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/browser/data.json.gz diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/browser/mappings.json b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/browser/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/browser/mappings.json rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/browser/mappings.json diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/full_heartbeat/mappings.json b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/full_heartbeat/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/full_heartbeat/mappings.json rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/full_heartbeat/mappings.json diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/synthetics_data/data.json.gz b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/synthetics_data/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/synthetics_data/data.json.gz rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/synthetics_data/data.json.gz diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_checks.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_checks.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_checks.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_checks.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_ping.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_ping.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_ping.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_tls.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_tls.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_tls.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/utils.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/helpers/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/helpers/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/helpers/utils.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/index.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/index.ts new file mode 100644 index 0000000000000..faec8474541d9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { loginPageProvider } from './page_objects/login'; +export { utilsPageProvider } from './page_objects/utils'; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/kibana.jsonc b/x-pack/solutions/observability/plugins/synthetics/e2e/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/kibana.jsonc rename to x-pack/solutions/observability/plugins/synthetics/e2e/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx b/x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx rename to x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx b/x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx rename to x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/add_monitor.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/add_monitor.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/add_monitor.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/add_monitor.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/custom_status_alert.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/custom_status_alert.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/custom_status_alert.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/custom_status_alert.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/default_status_alert.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/default_status_alert.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/default_status_alert.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/default_status_alert.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/sample_docs/sample_docs.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/sample_docs/sample_docs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/sample_docs/sample_docs.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/sample_docs/sample_docs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alerting_default.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alerting_default.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alerting_default.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alerting_default.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/data_retention.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/data_retention.journey.ts similarity index 98% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/data_retention.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/data_retention.journey.ts index 1dd2fe3a44aed..4640e2adf9eee 100644 --- a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/data_retention.journey.ts +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/data_retention.journey.ts @@ -7,7 +7,7 @@ import { journey, step, expect, Page } from '@elastic/synthetics'; import { RetryService } from '@kbn/ftr-common-functional-services'; -import { recordVideo } from '../../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { syntheticsAppPageProvider } from '../page_objects/synthetics_app'; import { byTestId, assertText } from '../../helpers/utils'; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/detail_flyout.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/detail_flyout.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/detail_flyout.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/detail_flyout.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/getting_started.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/getting_started.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/getting_started.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/getting_started.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/global_parameters.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/global_parameters.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/global_parameters.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/global_parameters.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/index.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/index.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/management_list.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/management_list.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/management_list.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/management_list.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_details_page/monitor_summary.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_details_page/monitor_summary.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_details_page/monitor_summary.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_details_page/monitor_summary.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_form_validation.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_form_validation.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_form_validation.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_form_validation.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_selector.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_selector.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_selector.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_selector.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_scrolling.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_scrolling.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_scrolling.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_scrolling.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_search.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_search.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_search.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_search.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_sorting.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_sorting.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_sorting.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_sorting.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/private_locations.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/private_locations.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/private_locations.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/private_locations.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts index 44cfcbebc6616..2c1a873b0db53 100644 --- a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts @@ -7,7 +7,7 @@ import { journey, step, expect, before } from '@elastic/synthetics'; import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; -import { recordVideo } from '../../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; journey('ProjectAPIKeys', async ({ page }) => { recordVideo(page); diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_monitor_read_only.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_monitor_read_only.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_monitor_read_only.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_monitor_read_only.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/add_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/add_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/add_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/add_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/add_monitor_project.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/add_monitor_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/add_monitor_project.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/add_monitor_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/data/browser_docs.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/data/browser_docs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/data/browser_docs.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/data/browser_docs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/settings.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/synthetics_services.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/synthetics_services.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/synthetics_services.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/synthetics_services.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/step_details.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/step_details.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/step_details.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/step_details.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/test_now_mode.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/test_now_mode.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/test_now_mode.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/test_now_mode.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/test_run_details.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/test_run_details.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/test_run_details.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/test_run_details.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx similarity index 99% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx index f9eb448615de8..2f3d0099192f4 100644 --- a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx @@ -7,7 +7,7 @@ import { expect, Page } from '@elastic/synthetics'; import { RetryService } from '@kbn/ftr-common-functional-services'; import { FormMonitorType } from '@kbn/synthetics-plugin/common/runtime_types/monitor_management'; -import { recordVideo } from '../../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { loginPageProvider } from '../../page_objects/login'; import { utilsPageProvider } from '../../page_objects/utils'; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/utils.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/utils.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/synthetics_run.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/synthetics_run.ts new file mode 100644 index 0000000000000..4f097c6926872 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/synthetics_run.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; +import { FtrConfigProviderContext } from '@kbn/test'; +import path from 'path'; + +const { headless, grep, bail: pauseOnError } = argv; + +async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { + const kibanaConfig = await readConfigFile(require.resolve('../config.ts')); + return { + ...kibanaConfig.getAll(), + testRunner: async ({ getService }: any) => { + const syntheticsRunner = new SyntheticsRunner(getService, { + headless, + match: grep, + pauseOnError, + }); + + await syntheticsRunner.setup(); + const fixturesDir = path.join(__dirname, '../fixtures/es_archiver/'); + + await syntheticsRunner.loadTestData(fixturesDir, [ + 'synthetics_data', + 'full_heartbeat', + 'browser', + ]); + + await syntheticsRunner.loadTestFiles(async () => { + require('./journeys'); + }); + + await syntheticsRunner.run(); + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default runE2ETests; diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/synthetics/e2e/tsconfig.json new file mode 100644 index 0000000000000..e7607627a625d --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "exclude": ["tmp", "target/**/*"], + "include": ["**/*"], + "compilerOptions": { + "outDir": "target/types", + "types": ["node"], + "isolatedModules": false + }, + "kbn_references": [ + "@kbn/test", + "@kbn/dev-utils", + "@kbn/ux-plugin/e2e", + "@kbn/ftr-common-functional-services", + "@kbn/synthetics-plugin", + "@kbn/observability-synthetics-test-data", + "@kbn/ftr-common-functional-ui-services" + ] +} diff --git a/x-pack/solutions/observability/plugins/synthetics/jest.config.js b/x-pack/solutions/observability/plugins/synthetics/jest.config.js new file mode 100644 index 0000000000000..39f032812a29f --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/synthetics'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/observability/plugins/synthetics', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/synthetics/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/synthetics/kibana.jsonc b/x-pack/solutions/observability/plugins/synthetics/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/kibana.jsonc rename to x-pack/solutions/observability/plugins/synthetics/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/field_selector.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/field_selector.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/field_selector.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitor_configuration.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitor_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitor_configuration.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitor_configuration.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitor_filters_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitor_filters_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitor_filters_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitor_filters_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitors_open_configuration.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitors_open_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitors_open_configuration.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitors_open_configuration.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/optional_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/optional_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/optional_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/optional_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/show_selected_filters.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/show_selected_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/show_selected_filters.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/show_selected_filters.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/utils.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/constants.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/constants.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/constants.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/hooks/use_fetch_synthetics_suggestions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/hooks/use_fetch_synthetics_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/hooks/use_fetch_synthetics_suggestions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/hooks/use_fetch_synthetics_suggestions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/monitors_embeddable_factory.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/monitors_embeddable_factory.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/monitors_embeddable_factory.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/monitors_embeddable_factory.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/monitors_grid_component.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/monitors_grid_component.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/monitors_grid_component.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/monitors_grid_component.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/redux_store.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/redux_store.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/redux_store.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/redux_store.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/register_embeddables.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/register_embeddables.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/register_embeddables.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/register_embeddables.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/redux_store.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/redux_store.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/redux_store.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/redux_store.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/stats_overview_component.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/stats_overview_component.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/stats_overview_component.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/stats_overview_component.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/stats_overview_embeddable_factory.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/stats_overview_embeddable_factory.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/stats_overview_embeddable_factory.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/stats_overview_embeddable_factory.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/synthetics_embeddable_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/synthetics_embeddable_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/synthetics_embeddable_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/synthetics_embeddable_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/compatibility_check.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/compatibility_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/compatibility_check.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/compatibility_check.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/create_monitors_overview_panel_action.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/create_monitors_overview_panel_action.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/create_monitors_overview_panel_action.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/create_monitors_overview_panel_action.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/create_stats_overview_panel_action.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/create_stats_overview_panel_action.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/create_stats_overview_panel_action.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/create_stats_overview_panel_action.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/register_ui_actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/register_ui_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/register_ui_actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/register_ui_actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/locators/edit_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/locators/edit_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/locators/edit_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/locators/edit_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/locators/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/locators/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/locators/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/locators/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/locators/monitor_detail.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/locators/monitor_detail.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/locators/monitor_detail.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/locators/monitor_detail.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/locators/settings.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/locators/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/locators/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/locators/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/alert_tls.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/alert_tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/alert_tls.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/alert_tls.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/condition_locations_value.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/condition_locations_value.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/condition_locations_value.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/condition_locations_value.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/condition_window_value.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/condition_window_value.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/condition_window_value.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/condition_window_value.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_filters.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_filters.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_filters.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_popover_expression.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_popover_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_popover_expression.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_popover_expression.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_selector.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_selector.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_selector.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_selector.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_selector.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_selector.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_selector.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/for_the_last_expression.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/for_the_last_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/for_the_last_expression.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/for_the_last_expression.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/group_by_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/group_by_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/group_by_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/group_by_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/popover_expression.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/popover_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/popover_expression.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/popover_expression.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/use_fetch_synthetics_suggestions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/use_fetch_synthetics_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/use_fetch_synthetics_suggestions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/use_fetch_synthetics_suggestions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/use_synthetics_rules.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/use_synthetics_rules.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/use_synthetics_rules.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/use_synthetics_rules.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/query_bar.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/query_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/query_bar.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/query_bar.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/rule_name_with_loading.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/rule_name_with_loading.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/rule_name_with_loading.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/rule_name_with_loading.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/status_rule_expression.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/status_rule_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/status_rule_expression.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/status_rule_expression.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/status_rule_ui.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/status_rule_ui.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/status_rule_ui.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/status_rule_ui.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/tls_rule_ui.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/tls_rule_ui.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/tls_rule_ui.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/tls_rule_ui.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_monitors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_monitors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_monitors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_monitors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_refresh_btn.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_refresh_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_refresh_btn.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_refresh_btn.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_search.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_search.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_search.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificate_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificate_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificate_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificate_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates_list.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates_list.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/monitor_page_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/monitor_page_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/monitor_page_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/monitor_page_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/use_cert_search.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/use_cert_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/use_cert_search.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/use_cert_search.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/use_cert_status.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/use_cert_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/use_cert_status.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/use_cert_status.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/add_to_dashboard.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/add_to_dashboard.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/add_to_dashboard.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/add_to_dashboard.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/auto_refresh_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/auto_refresh_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/auto_refresh_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/auto_refresh_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/embeddable_panel_wrapper.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/embeddable_panel_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/embeddable_panel_wrapper.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/embeddable_panel_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/filter_status_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/filter_status_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/filter_status_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/filter_status_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/last_refreshed.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/last_refreshed.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/last_refreshed.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/last_refreshed.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_details_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_details_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_details_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_details_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx similarity index 99% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx index 90d30606b860d..b09d82ab03c5f 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx @@ -72,7 +72,6 @@ const MonitorInspect = ({ isValid, monitorFields }: InspectorProps) => { } // FIXME: Dario couldn't find a solution for monitorFields // which is not memoized downstream - // eslint-disable-next-line react-hooks/exhaustive-deps }, [isInspecting, hideParams]); let flyout; diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_location_select.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_location_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_location_select.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_location_select.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_type_badge.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_type_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_type_badge.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_type_badge.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/page_loader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/page_loader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/page_loader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/page_loader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/panel_with_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/panel_with_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/panel_with_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/panel_with_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/permissions.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/permissions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/permissions.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/permissions.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/refresh_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/refresh_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/refresh_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/refresh_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/table_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/table_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/table_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/table_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/thershold_indicator.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/thershold_indicator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/thershold_indicator.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/thershold_indicator.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/use_std_error_logs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/use_std_error_logs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/use_std_error_logs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/use_std_error_logs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/view_document.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/view_document.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/add_monitor.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/add_monitor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/add_monitor.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/add_monitor.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/error_details_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/error_details_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/error_details_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/error_details_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/manage_rules_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/manage_rules_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/manage_rules_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/manage_rules_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/test_details_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/test_details_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/test_details_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/test_details_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/view_alerts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/view_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/view_alerts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/view_alerts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx index 25f0ed0843472..a0e6d2ca6d29f 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx @@ -39,7 +39,6 @@ export const ResultDetailsSuccessful = ({ }); // FIXME: Dario is not sure what step._id is being used for, // so he'll leave it in place - // eslint-disable-next-line react-hooks/exhaustive-deps }, [timestamp, monitorId, stepIndex, location, step._id]); const { currentStep } = useJourneySteps( diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/single_ping_result.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/single_ping_result.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/single_ping_result.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/single_ping_result.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/status_badge.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/status_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/status_badge.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/status_badge.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/step_duration_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/step_duration_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/step_duration_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/step_duration_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/use_retrieve_step_image.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/use_retrieve_step_image.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/use_retrieve_step_image.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/use_retrieve_step_image.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/page_template/synthetics_page_template.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/page_template/synthetics_page_template.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/page_template/synthetics_page_template.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/page_template/synthetics_page_template.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_last_screenshot.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_last_screenshot.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_last_screenshot.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_last_screenshot.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_image.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_image.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_image.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_image.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_size.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_size.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_size.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_size.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_duration.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_duration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_duration.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_duration.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_started_at.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_started_at.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_started_at.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_started_at.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_timeline.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_timeline.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_timeline.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_timeline.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/failed_tests_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/failed_tests_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/failed_tests_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/failed_tests_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/resolved_at.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/resolved_at.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/resolved_at.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/resolved_at.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/error_details_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/error_details_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/error_details_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/error_details_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_details_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_details_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_details_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_details_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_failed_tests.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_failed_tests.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_failed_tests.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_failed_tests.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_find_my_killer_state.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_find_my_killer_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_find_my_killer_state.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_find_my_killer_state.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_step_details.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_step_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_step_details.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_step_details.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/form_fields/service_locations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/form_fields/service_locations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/form_fields/service_locations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/form_fields/service_locations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/advanced/index.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/advanced/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/advanced/index.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/advanced/index.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/constants.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/constants.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/constants.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/edit_monitor_not_found.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/edit_monitor_not_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/edit_monitor_not_found.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/edit_monitor_not_found.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/code_editor.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/code_editor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/code_editor.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/code_editor.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/monitor_type_radio_group.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/monitor_type_radio_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/monitor_type_radio_group.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/monitor_type_radio_group.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/optional_label.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/optional_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/optional_label.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/optional_label.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/connection_profile.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/connection_profile.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/connection_profile.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/connection_profile.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_disabled_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_disabled_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_disabled_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_disabled_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_download_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_download_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_download_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_download_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_exceeded_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_exceeded_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_exceeded_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_exceeded_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_latency_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_latency_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_latency_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_latency_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_upload_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_upload_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_upload_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_upload_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/use_connection_profiles.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/use_connection_profiles.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/use_connection_profiles.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/use_connection_profiles.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/uploader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/uploader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/uploader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/uploader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/controlled_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/controlled_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/controlled_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/controlled_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_wrappers.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_wrappers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_wrappers.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_wrappers.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/form_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/form_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/form_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/form_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/index.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/index.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/index.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/submit.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/submit.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/submit.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/submit.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_clone_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_clone_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_clone_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_clone_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_is_edit_flow.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_is_edit_flow.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_is_edit_flow.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_is_edit_flow.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_not_found.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_not_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_not_found.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_not_found.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx similarity index 98% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx index 4bd8b503a247c..b9359b0357844 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx @@ -44,7 +44,6 @@ export const useMonitorSave = ({ monitorData }: { monitorData?: SyntheticsMonito } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [monitorData]); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_validate_field.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_validate_field.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_validate_field.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_validate_field.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/locations_loading_error.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/locations_loading_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/locations_loading_error.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/locations_loading_error.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_details_portal.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_details_portal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_details_portal.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_details_portal.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/portals.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/portals.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/portals.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/portals.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/can_use_public_locations_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/can_use_public_locations_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/can_use_public_locations_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/can_use_public_locations_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/index.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/index.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/index.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/inspect_monitor_portal.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/inspect_monitor_portal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/inspect_monitor_portal.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/inspect_monitor_portal.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type_portal.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type_portal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type_portal.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type_portal.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/read_only_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/read_only_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/read_only_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/read_only_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_error_failed_step.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_error_failed_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_error_failed_step.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_error_failed_step.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_fetch_active_alerts.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_fetch_active_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_fetch_active_alerts.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_fetch_active_alerts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_journey_steps.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_journey_steps.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_journey_steps.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_journey_steps.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_errors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_errors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_errors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_latest_ping.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_latest_ping.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_latest_ping.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_latest_ping.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_pings.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_pings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_pings.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_pings.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_filters.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_id.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_id.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_id.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_id.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_range_from.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_range_from.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_range_from.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_range_from.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_location.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_location.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_location.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_monitor.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_monitor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_monitor.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_monitor.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/alerts_icon.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/alerts_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/alerts_icon.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/alerts_icon.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/monitor_detail_alerts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/monitor_detail_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/monitor_detail_alerts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/monitor_detail_alerts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_last_run.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_last_run.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_last_run.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_last_run.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_location.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_location.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_location.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_page_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_page_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_page_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_page_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_icon.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_icon.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_icon.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/monitor_errors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/monitor_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/monitor_errors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/monitor_errors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_history/monitor_history.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_history/monitor_history.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_history/monitor_history.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_history/monitor_history.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_not_found_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_not_found_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_not_found_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_not_found_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_searchable_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_searchable_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_searchable_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_searchable_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_selector.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_selector.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_selector.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts similarity index 98% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts index 0988e6c2aefc5..6e9e8decd7e6c 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts @@ -94,7 +94,6 @@ export const useRecentlyViewedMonitors = () => { } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [monitorQueryId]); return useMemo( diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_cell_tooltip.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_cell_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_cell_tooltip.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_cell_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_chart_theme.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_chart_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_chart_theme.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_chart_theme.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_legend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_legend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_legend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/alert_actions.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/alert_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/alert_actions.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/alert_actions.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_trend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_trend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_trend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/edit_monitor_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/edit_monitor_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/edit_monitor_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/edit_monitor_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/last_test_run.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/last_test_run.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/last_test_run.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/last_test_run.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/locations_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/locations_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/locations_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/locations_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_alerts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_alerts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_alerts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_error_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_error_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_error_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_error_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_errors_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_errors_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_errors_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_errors_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_summary.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_summary.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_summary.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_summary.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_total_runs_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_total_runs_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_total_runs_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_total_runs_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/status_filter.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/status_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/status_filter.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/status_filter.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/step_duration_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/step_duration_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/step_duration_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/step_duration_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/use_monitor_details_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/use_monitor_details_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/use_monitor_details_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/use_monitor_details_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_group.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_group.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_group.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/list_filters.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/list_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/list_filters.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/list_filters.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/show_all_spaces.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/show_all_spaces.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/show_all_spaces.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/show_all_spaces.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/create_monitor_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/create_monitor_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/create_monitor_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/create_monitor_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_can_use_public_loc_id.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_can_use_public_loc_id.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_can_use_public_loc_id.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_can_use_public_loc_id.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_create_slo.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_create_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_create_slo.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_create_slo.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors_count.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors_count.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors_count.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_query_filters.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_query_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_query_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_query_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_overview_status.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_overview_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_overview_status.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_overview_status.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/disabled_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/disabled_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/disabled_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/disabled_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/bulk_operations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/bulk_operations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/bulk_operations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/bulk_operations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/labels.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/labels.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/labels.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/labels.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_details_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_details_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_details_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_details_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_locations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_locations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_locations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_locations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_stats.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_stats.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_stats.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_stats.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs_sparkline.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs_sparkline.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs_sparkline.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs_sparkline.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/page_header/monitors_page_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/page_header/monitors_page_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/page_header/monitors_page_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/page_header/monitors_page_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/synthetics_enablement.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/synthetics_enablement.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/synthetics_enablement.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/synthetics_enablement.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/monitors_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/monitors_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/monitors_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/monitors_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_group_item.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_group_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_group_item.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_group_item.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_items_by_group.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_items_by_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_items_by_group.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_items_by_group.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_menu.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_menu.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_menu.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/use_filtered_group_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/use_filtered_group_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/use_filtered_group_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/use_filtered_group_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_body.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_body.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_body.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_body.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item_icon.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item_icon.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item_icon.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_alerts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_alerts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_alerts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid_item_loader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid_item_loader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid_item_loader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid_item_loader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_loader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_loader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_loader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_loader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_pagination_info.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_pagination_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_pagination_info.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_pagination_info.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_menu.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_menu.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_menu.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/add_connector_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/add_connector_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/add_connector_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/add_connector_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/alert_defaults_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/alert_defaults_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/alert_defaults_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/alert_defaults_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/connector_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/connector_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/connector_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/connector_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/default_email.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/default_email.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/default_email.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/default_email.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/hooks/use_alerting_defaults.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/hooks/use_alerting_defaults.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/hooks/use_alerting_defaults.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/hooks/use_alerting_defaults.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/validation.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/validation.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/validation.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/validation.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/components/optional_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/components/optional_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/components/optional_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/components/optional_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/components/tags_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/components/tags_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/components/tags_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/components/tags_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/common.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/common.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/common.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/common.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/common.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/ilm_retention_tab.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/ilm_retention_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/ilm_retention_tab.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/ilm_retention_tab.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/index.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/index.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/index.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/policy_labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/policy_labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/policy_labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/policy_labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/unprivileged.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/unprivileged.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/unprivileged.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/unprivileged.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/use_management_locator.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/use_management_locator.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/use_management_locator.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/use_management_locator.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/add_param_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/add_param_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/add_param_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/add_param_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/add_param_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/add_param_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/add_param_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/add_param_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/param_value_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/param_value_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/param_value_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/param_value_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_params_list.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_params_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_params_list.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_params_list.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/page_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/page_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/page_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/page_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/policy_link.tsx similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/policy_link.tsx index 3918e20bccabd..782c8ebd34f67 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/policy_link.tsx @@ -26,7 +26,6 @@ export const PolicyLink = ({ name }: { name: string }) => { return ilmLocator?.getLocation({ page: 'policy_edit', policyName: name }); // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [name]); if (!data) { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/add_location_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/add_location_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/add_location_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/add_location_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/agent_policy_needed.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/agent_policy_needed.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/agent_policy_needed.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/agent_policy_needed.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/copy_name.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/copy_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/copy_name.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/copy_name.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/delete_location.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/delete_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/delete_location.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/delete_location.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/empty_locations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/empty_locations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/empty_locations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/empty_locations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts similarity index 95% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts index 6b3899a5b44c8..4f3790edddec4 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts @@ -46,7 +46,6 @@ export const usePrivateLocationsAPI = () => { } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [formData]); const onSubmit = (data: NewLocation) => { @@ -67,7 +66,6 @@ export const usePrivateLocationsAPI = () => { } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [deleteId]); return { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/location_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/location_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/location_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/location_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/locations_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/locations_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/locations_table.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/locations_table.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_empty_state.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_empty_state.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_empty_state.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_empty_state.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/policy_hosts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/policy_hosts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/policy_hosts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/policy_hosts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/policy_name.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/policy_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/policy_name.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/policy_name.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/view_location_monitors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/view_location_monitors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/view_location_monitors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/view_location_monitors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/help_commands.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/help_commands.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/help_commands.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/help_commands.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx similarity index 99% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx index 4a8752e8b9926..07d0b83c15e51 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx @@ -40,7 +40,6 @@ export const ProjectAPIKeys = () => { return null; // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [loadAPIKey, canUsePublicLocations]); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/route_config.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/route_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/route_config.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/route_config.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/settings_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/settings_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/settings_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/settings_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/use_settings_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/use_settings_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/use_settings_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/use_settings_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_object_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_object_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_object_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_object_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_prev_object_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_prev_object_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_prev_object_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_prev_object_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_detail_page.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_detail_page.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_detail_page.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_detail_page.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_details_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_details_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_details_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_details_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_prev_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_prev_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_prev_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_prev_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/network_timings_breakdown.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/network_timings_breakdown.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/network_timings_breakdown.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/network_timings_breakdown.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_details_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_details_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_details_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_details_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/definitions_popover.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/definitions_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/definitions_popover.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/definitions_popover.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/step_metrics.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/step_metrics.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/step_metrics.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/step_metrics.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_number_nav.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_number_nav.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_number_nav.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_number_nav.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/color_palette.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/color_palette.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/color_palette.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/color_palette.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_count_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_count_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_count_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_count_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_weight_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_weight_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_weight_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_weight_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_page_nav.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_page_nav.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_page_nav.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_page_nav.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx index cde0cb93fed11..dfd7d3db11007 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx @@ -37,7 +37,6 @@ export const LastSuccessfulScreenshot = ({ }); // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [step._id, step['@timestamp']]); return ( diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/step_image.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/step_image.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/step_image.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/step_image.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/breakdown_legend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/breakdown_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/breakdown_legend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/breakdown_legend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/network_timings_donut.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/network_timings_donut.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/network_timings_donut.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/network_timings_donut.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/README.md b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/README.md similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/README.md rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/README.md diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/constants.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/constants.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/constants.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/context/waterfall_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/context/waterfall_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/context/waterfall_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/context/waterfall_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/sidebar.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/sidebar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/sidebar.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/sidebar.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/styles.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/styles.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/styles.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/styles.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_fixed_axis.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_fixed_axis.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_fixed_axis.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_fixed_axis.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout_table.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout_table.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_legend_item.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_legend_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_legend_item.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_legend_item.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_timing_legend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_timing_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_timing_legend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_timing_legend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_test_helper.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_test_helper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_test_helper.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_test_helper.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_markers.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_markers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_markers.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_markers.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/browser/browser_test_results.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/browser/browser_test_results.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/browser/browser_test_results.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/browser/browser_test_results.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts similarity index 99% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts index c5b11dc272233..553278f180bdf 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts @@ -189,7 +189,6 @@ export const useBrowserRunOnceMonitors = ({ return Promise.resolve(null); // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [checkGroupCheckSum, setCheckGroupResults, lastRefresh]); // Whenever a new found document is fetched, update lastUpdated diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_simple_run_once_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_simple_run_once_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_simple_run_once_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_simple_run_once_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/expand_row.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/expand_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/expand_row.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/expand_row.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_error.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_error.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_error.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/response_code.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/response_code.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/response_code.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/response_code.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/expanded_row.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/expanded_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/expanded_row.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/expanded_row.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/headers.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/headers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/headers.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/headers.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_redirects.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_redirects.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_redirects.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_redirects.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/use_ping_expanded.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/use_ping_expanded.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/use_ping_expanded.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/use_ping_expanded.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/simple_test_results.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/simple_test_results.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/simple_test_results.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/simple_test_results.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_result_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_result_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_result_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_result_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_details.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_details.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_details.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_info.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_info.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_info.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_number_nav.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_number_nav.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_number_nav.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_number_nav.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_date.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_date.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_date.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_date.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_details_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_details_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_details_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_details_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_error_info.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_error_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_error_info.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_error_info.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/hooks/use_test_run_details_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/hooks/use_test_run_details_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/hooks/use_test_run_details_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/hooks/use_test_run_details_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/step_screenshot_details.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/step_screenshot_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/step_screenshot_details.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/step_screenshot_details.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/step_tabs.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/step_tabs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/step_tabs.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/step_tabs.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/test_run_details.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/test_run_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/test_run_details.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/test_run_details.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/test_run_steps.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/test_run_steps.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/test_run_steps.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/test_run_steps.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_embeddable_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_embeddable_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_embeddable_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_embeddable_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_shared_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_shared_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_shared_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_shared_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_absolute_date.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_absolute_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_absolute_date.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_absolute_date.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_absolute_date.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_absolute_date.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_absolute_date.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_absolute_date.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_composite_image.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_composite_image.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_composite_image.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_composite_image.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_composite_image.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_composite_image.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_composite_image.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_composite_image.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_dimensions.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_dimensions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_dimensions.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_dimensions.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_edit_monitor_locator.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_edit_monitor_locator.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_edit_monitor_locator.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_edit_monitor_locator.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_enablement.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_enablement.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_enablement.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_enablement.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_fleet_permissions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_fleet_permissions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_fleet_permissions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_fleet_permissions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_location_name.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_location_name.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_location_name.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_location_name.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_location_name.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_location_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_location_name.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_location_name.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_locations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_alert_enable.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_alert_enable.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_alert_enable.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_alert_enable.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_detail.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_detail.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_detail.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_detail.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_detail_locator.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_detail_locator.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_detail_locator.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_detail_locator.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_enable_handler.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_enable_handler.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_enable_handler.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_enable_handler.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_name.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_name.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_name.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_name.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_name.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_name.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_name.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_name.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_redux_es_search.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_redux_es_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_redux_es_search.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_redux_es_search.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_status_by_location.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_status_by_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_status_by_location.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_status_by_location.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_status_by_location_overview.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_status_by_location_overview.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_status_by_location_overview.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_status_by_location_overview.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_url_params.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_url_params.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/monitor_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/monitor_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/tls_alert.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/tls_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/tls_alert.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/tls_alert.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/validate_tls_alert.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/validate_tls_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/validate_tls_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/validate_tls_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/monitor_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/monitor_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/tls.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/tls.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/tls.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/render_app.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/render_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/render_app.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/render_app.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/routes.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/routes.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/routes.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/routes.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/api.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/api.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/api.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/api.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/models.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/models.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/models.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/models.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certificates/certificates.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certificates/certificates.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certificates/certificates.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certificates/certificates.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/helpers.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/helpers.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/helpers.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/models.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/models.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/models.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/models.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_management/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_management/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/effects.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/effects.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/effects.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/effects.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/models.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/models.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/models.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/models.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_effect.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/root_effect.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_effect.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/root_effect.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_reducer.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_reducer.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/models.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/models.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/models.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/models.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/store.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/store.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/store.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/store.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/http_error.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/http_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/http_error.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/http_error.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/synthetics_app.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/synthetics_app.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/adapters/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/adapters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/adapters/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/adapters/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/filters/filter_fields.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/filters/filter_fields.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/filters/filter_fields.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/filters/filter_fields.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/format.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/format.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/format.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/format.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/format.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/format.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/format.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/format.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/test_helpers.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/test_helpers.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/check_pings.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/check_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/check_pings.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/check_pings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/sort_pings.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/sort_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/sort_pings.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/sort_pings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/ut_router_history.mock.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/ut_router_history.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/ut_router_history.mock.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/ut_router_history.mock.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/validators/is_url_valid.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/validators/is_url_valid.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/validators/is_url_valid.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/validators/is_url_valid.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/validators/is_url_valid.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/validators/is_url_valid.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/validators/is_url_valid.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/validators/is_url_valid.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_base_chart_theme.ts b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_base_chart_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_base_chart_theme.ts rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_base_chart_theme.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_capabilities.ts b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_capabilities.ts rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_capabilities.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_date_format.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_date_format.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_date_format.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_date_format.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_date_format.ts b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_date_format.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_date_format.ts rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_date_format.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_form_wrapped.tsx b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_form_wrapped.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_form_wrapped.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_form_wrapped.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_kibana_space.tsx b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_kibana_space.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_kibana_space.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_kibana_space.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/plugin.ts b/x-pack/solutions/observability/plugins/synthetics/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/plugin.ts rename to x-pack/solutions/observability/plugins/synthetics/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/utils/api_service/api_service.ts b/x-pack/solutions/observability/plugins/synthetics/public/utils/api_service/api_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/utils/api_service/api_service.ts rename to x-pack/solutions/observability/plugins/synthetics/public/utils/api_service/api_service.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/utils/api_service/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/utils/api_service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/utils/api_service/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/utils/api_service/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/utils/kibana_service/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/utils/kibana_service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/utils/kibana_service/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/utils/kibana_service/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/utils/kibana_service/kibana_service.ts b/x-pack/solutions/observability/plugins/synthetics/public/utils/kibana_service/kibana_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/utils/kibana_service/kibana_service.ts rename to x-pack/solutions/observability/plugins/synthetics/public/utils/kibana_service/kibana_service.ts diff --git a/x-pack/plugins/observability_solution/synthetics/scripts/base_e2e.js b/x-pack/solutions/observability/plugins/synthetics/scripts/base_e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/scripts/base_e2e.js rename to x-pack/solutions/observability/plugins/synthetics/scripts/base_e2e.js diff --git a/x-pack/plugins/observability_solution/synthetics/scripts/e2e.js b/x-pack/solutions/observability/plugins/synthetics/scripts/e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/scripts/e2e.js rename to x-pack/solutions/observability/plugins/synthetics/scripts/e2e.js diff --git a/x-pack/plugins/observability_solution/synthetics/scripts/generate_monitors.js b/x-pack/solutions/observability/plugins/synthetics/scripts/generate_monitors.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/scripts/generate_monitors.js rename to x-pack/solutions/observability/plugins/synthetics/scripts/generate_monitors.js diff --git a/x-pack/plugins/observability_solution/synthetics/scripts/tasks/generate_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/scripts/tasks/generate_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/scripts/tasks/generate_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/scripts/tasks/generate_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/action_variables.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/action_variables.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/action_variables.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/action_variables.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/common.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/common.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/common.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/common.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/common.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/message_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/message_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/message_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/message_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/queries/filter_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/queries/filter_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/queries/filter_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/queries/filter_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/queries/query_monitor_status_alert.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/queries/query_monitor_status_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/queries/query_monitor_status_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/queries/query_monitor_status_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/status_rule_executor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/status_rule_executor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/status_rule_executor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/status_rule_executor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/status_rule_executor.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/status_rule_executor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/status_rule_executor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/status_rule_executor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/types.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/message_utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/message_utils.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/message_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/message_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule_executor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule_executor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule_executor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule_executor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule_executor.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule_executor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule_executor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule_executor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/translations.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/common/pings/monitor_status_heatmap.ts b/x-pack/solutions/observability/plugins/synthetics/server/common/pings/monitor_status_heatmap.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/common/pings/monitor_status_heatmap.ts rename to x-pack/solutions/observability/plugins/synthetics/server/common/pings/monitor_status_heatmap.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/common/pings/query_pings.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/common/pings/query_pings.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/common/pings/query_pings.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/common/pings/query_pings.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/common/pings/query_pings.ts b/x-pack/solutions/observability/plugins/synthetics/server/common/pings/query_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/common/pings/query_pings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/common/pings/query_pings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/common/unzip_project_code.ts b/x-pack/solutions/observability/plugins/synthetics/server/common/unzip_project_code.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/common/unzip_project_code.ts rename to x-pack/solutions/observability/plugins/synthetics/server/common/unzip_project_code.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/config.ts b/x-pack/solutions/observability/plugins/synthetics/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/config.ts rename to x-pack/solutions/observability/plugins/synthetics/server/config.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/constants/settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/constants/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/constants/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/constants/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/feature.ts b/x-pack/solutions/observability/plugins/synthetics/server/feature.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/feature.ts rename to x-pack/solutions/observability/plugins/synthetics/server/feature.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/lib.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/lib.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/lib.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/lib.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/lib.ts b/x-pack/solutions/observability/plugins/synthetics/server/lib.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/lib.ts rename to x-pack/solutions/observability/plugins/synthetics/server/lib.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/plugin.ts b/x-pack/solutions/observability/plugins/synthetics/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/plugin.ts rename to x-pack/solutions/observability/plugins/synthetics/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_certs.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_certs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_certs.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_certs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_index_pattern.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_index_pattern.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_index_pattern.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_index_pattern.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_details.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_details.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_details.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_failed_steps.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_failed_steps.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_failed_steps.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_failed_steps.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_failed_steps.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_failed_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_failed_steps.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_failed_steps.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot_blocks.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot_blocks.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot_blocks.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot_blocks.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot_blocks.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot_blocks.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot_blocks.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_steps.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_steps.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_steps.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_steps.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_steps.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_steps.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_steps.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_last_successful_check.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_last_successful_check.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_last_successful_check.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_last_successful_check.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_last_successful_check.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_last_successful_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_last_successful_check.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_last_successful_check.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_network_events.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_network_events.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_network_events.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_network_events.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_network_events.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_network_events.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_network_events.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/journey_screenshots.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/journey_screenshots.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/journey_screenshots.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/journey_screenshots.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/test_helpers.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/test_helpers.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/certs/get_certificates.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/certs/get_certificates.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/certs/get_certificates.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/certs/get_certificates.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/certs/get_certificates.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/certs/get_certificates.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/certs/get_certificates.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/certs/get_certificates.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/common.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/common.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/common.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/common.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/common.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/create_route_with_auth.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/create_route_with_auth.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/create_route_with_auth.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/create_route_with_auth.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/create_route_with_auth.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/create_route_with_auth.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/create_route_with_auth.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/create_route_with_auth.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/default_alert_service.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/default_alert_service.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/default_alert_service.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/default_alert_service.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/default_alert_service.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/default_alert_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/default_alert_service.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/default_alert_service.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/enable_default_alert.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/enable_default_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/enable_default_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/enable_default_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_action_connectors.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_action_connectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_action_connectors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_action_connectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_connector_types.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_connector_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_connector_types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_connector_types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_default_alert.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_default_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_default_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_default_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/update_default_alert.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/update_default_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/update_default_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/update_default_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/filters/filters.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/filters/filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/filters/filters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/filters/filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/fleet/get_has_integration_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/fleet/get_has_integration_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/fleet/get_has_integration_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/fleet/get_has_integration_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/utils.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/utils.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/utils.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor_project.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor_project.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/edit_monitor_bulk.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/edit_monitor_bulk.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/edit_monitor_bulk.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/edit_monitor_bulk.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_integration.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_integration.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_integration.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_integration.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_monitor_project.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_monitor_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_monitor_project.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_monitor_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/edit_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/edit_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/edit_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/edit_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_api_key.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_api_key.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor_project.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor_project.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitors_list.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitors_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitors_list.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitors_list.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/inspect_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/inspect_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/inspect_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/inspect_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/monitor_validation.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/monitor_validation.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/services/delete_monitor_api.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/services/delete_monitor_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/services/delete_monitor_api.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/services/delete_monitor_api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/services/validate_space_id.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/services/validate_space_id.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/services/validate_space_id.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/services/validate_space_id.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/network_events/get_network_events.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/network_events/get_network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/network_events/get_network_events.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/network_events/get_network_events.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/network_events/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/network_events/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/network_events/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/network_events/index.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status.ts new file mode 100644 index 0000000000000..fb3ff320c8cf6 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { OverviewStatusService } from './overview_status_service'; +import { SyntheticsRestApiRouteFactory } from '../types'; +import { OverviewStatusState } from '../../../common/runtime_types'; +import { SYNTHETICS_API_URLS } from '../../../common/constants'; +import { OverviewStatusSchema } from '../common'; + +export const createGetCurrentStatusRoute: SyntheticsRestApiRouteFactory = () => ({ + method: 'GET', + path: SYNTHETICS_API_URLS.OVERVIEW_STATUS, + validate: { + query: OverviewStatusSchema, + }, + handler: async (routeContext): Promise => { + const statusOverview = new OverviewStatusService(routeContext); + return await statusOverview.getOverviewStatus(); + }, +}); diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.test.ts new file mode 100644 index 0000000000000..677f499b2a722 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.test.ts @@ -0,0 +1,793 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { SavedObjectsFindResult } from '@kbn/core-saved-objects-api-server'; +import * as monitorsFns from '../../saved_objects/synthetics_monitor/get_all_monitors'; +import { EncryptedSyntheticsMonitorAttributes } from '../../../common/runtime_types'; +import { getUptimeESMockClient } from '../../queries/test_helpers'; + +import * as commonLibs from '../common'; +import * as allLocationsFn from '../../synthetics_service/get_all_locations'; +import { OverviewStatusService, SUMMARIES_PAGE_SIZE } from './overview_status_service'; +import times from 'lodash/times'; +import { flatten } from 'lodash'; +const japanLoc = { + id: 'asia_japan', + label: 'Asia/Pacific - Japan', +}; + +const germanyLoc = { + id: 'europe_germany', + label: 'Europe - Germany', +}; + +const allLocations: any = [japanLoc, germanyLoc]; +jest.spyOn(allLocationsFn, 'getAllLocations').mockResolvedValue({ + publicLocations: allLocations, + privateLocations: [], + allLocations, +}); + +jest.mock('../../saved_objects/synthetics_monitor/get_all_monitors', () => ({ + ...jest.requireActual('../../saved_objects/synthetics_monitor/get_all_monitors'), + getAllMonitors: jest.fn(), +})); + +jest.spyOn(commonLibs, 'getMonitors').mockResolvedValue({ + per_page: 10, + saved_objects: [ + { + id: 'mon-1', + attributes: { + enabled: false, + locations: [{ id: 'us-east1' }, { id: 'us-west1' }, { id: 'japan' }], + }, + }, + { + id: 'mon-2', + attributes: { + enabled: true, + locations: [{ id: 'us-east1' }, { id: 'us-west1' }, { id: 'japan' }], + schedule: { + number: '10', + unit: 'm', + }, + }, + }, + ], +} as any); + +describe('current status route', () => { + const testMonitors = [ + { + attributes: { + config_id: 'id1', + id: 'id1', + type: 'browser', + enabled: true, + name: 'test monitor 1', + project_id: 'project-id', + tags: ['tag-1', 'tag-2'], + schedule: { + number: '1', + unit: 'm', + }, + locations: [japanLoc], + }, + }, + { + attributes: { + id: 'id2', + config_id: 'id2', + enabled: true, + type: 'browser', + name: 'test monitor 2', + project_id: 'project-id', + tags: ['tag-1', 'tag-2'], + schedule: { + number: '1', + unit: 'm', + }, + locations: allLocations, + }, + }, + ]; + + describe('OverviewStatusService', () => { + it('parses expected agg fields', async () => { + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + + esClient.search.mockResponseOnce( + getEsResponse({ + buckets: [ + { + key: { + monitorId: 'id1', + locationId: japanLoc.id, + }, + status: { + key: japanLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'up', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + { + key: { + monitorId: 'id2', + locationId: japanLoc.id, + }, + status: { + key: japanLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'up', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + { + key: { + monitorId: 'id2', + locationId: germanyLoc.id, + }, + status: { + key: germanyLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'down', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + ], + }) + ); + const routeContext: any = { + request: {}, + syntheticsEsClient, + }; + + const overviewStatusService = new OverviewStatusService(routeContext); + overviewStatusService.getMonitorConfigs = jest.fn().mockResolvedValue(testMonitors as any); + expect(await overviewStatusService.getOverviewStatus()).toMatchInlineSnapshot(` + Object { + "allIds": Array [ + "id1", + "id2", + ], + "allMonitorsCount": 2, + "disabledConfigs": Object {}, + "disabledCount": 0, + "disabledMonitorQueryIds": Array [], + "disabledMonitorsCount": 0, + "down": 1, + "downConfigs": Object { + "id2-europe_germany": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "europe_germany", + "locationLabel": "Europe - Germany", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "down", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + }, + "enabledMonitorQueryIds": Array [ + "id1", + "id2", + ], + "pending": 0, + "pendingConfigs": Object {}, + "projectMonitorsCount": 0, + "up": 2, + "upConfigs": Object { + "id1-asia_japan": Object { + "configId": "id1", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id1", + "name": "test monitor 1", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "up", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + "id2-asia_japan": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "up", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + }, + } + `); + }); + + it('handles limits with multiple requests', async () => { + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + esClient.search.mockResponseOnce( + getEsResponse({ + after: {}, + buckets: flatten( + times(SUMMARIES_PAGE_SIZE).map(() => [ + { + key: { + monitorId: 'id1', + locationId: japanLoc.id, + }, + status: { + key: japanLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'up', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + { + key: { + monitorId: 'id2', + locationId: japanLoc.id, + }, + status: { + key: japanLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'up', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + { + key: { + monitorId: 'id2', + locationId: germanyLoc.id, + }, + status: { + key: germanyLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'down', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + ]) + ), + }) + ); + + const routeContext: any = { + request: {}, + syntheticsEsClient, + }; + + const overviewStatusService = new OverviewStatusService(routeContext); + overviewStatusService.getMonitorConfigs = jest.fn().mockResolvedValue(testMonitors as any); + + expect(await overviewStatusService.getOverviewStatus()).toMatchInlineSnapshot(` + Object { + "allIds": Array [ + "id1", + "id2", + ], + "allMonitorsCount": 2, + "disabledConfigs": Object {}, + "disabledCount": 0, + "disabledMonitorQueryIds": Array [], + "disabledMonitorsCount": 0, + "down": 1, + "downConfigs": Object { + "id2-europe_germany": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "europe_germany", + "locationLabel": "Europe - Germany", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "down", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + }, + "enabledMonitorQueryIds": Array [ + "id1", + "id2", + ], + "pending": 0, + "pendingConfigs": Object {}, + "projectMonitorsCount": 0, + "up": 2, + "upConfigs": Object { + "id1-asia_japan": Object { + "configId": "id1", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id1", + "name": "test monitor 1", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "up", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + "id2-asia_japan": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "up", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + }, + } + `); + expect(esClient.search).toHaveBeenCalledTimes(2); + }); + + it('handles pending configs', async () => { + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + esClient.search.mockResponseOnce( + getEsResponse({ + buckets: [], + }) + ); + const routeContext: any = { + request: {}, + syntheticsEsClient, + }; + + const overviewStatusService = new OverviewStatusService(routeContext); + overviewStatusService.getMonitorConfigs = jest.fn().mockResolvedValue(testMonitors as any); + expect(await overviewStatusService.getOverviewStatus()).toMatchInlineSnapshot(` + Object { + "allIds": Array [ + "id1", + "id2", + ], + "allMonitorsCount": 2, + "disabledConfigs": Object {}, + "disabledCount": 0, + "disabledMonitorQueryIds": Array [], + "disabledMonitorsCount": 0, + "down": 0, + "downConfigs": Object {}, + "enabledMonitorQueryIds": Array [ + "id1", + "id2", + ], + "pending": 3, + "pendingConfigs": Object { + "id1-asia_japan": Object { + "configId": "id1", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id1", + "name": "test monitor 1", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "unknown", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": undefined, + "type": "browser", + "updated_at": undefined, + }, + "id2-asia_japan": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "unknown", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": undefined, + "type": "browser", + "updated_at": undefined, + }, + "id2-europe_germany": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "europe_germany", + "locationLabel": "Europe - Germany", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "unknown", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": undefined, + "type": "browser", + "updated_at": undefined, + }, + }, + "projectMonitorsCount": 0, + "up": 0, + "upConfigs": Object {}, + } + `); + }); + }); + + describe('getStatus', () => { + jest.spyOn(allLocationsFn, 'getAllLocations').mockResolvedValue({ + publicLocations: allLocations, + privateLocations: [], + allLocations: [ + { + id: 'us_central_qa', + label: 'US Central QA', + }, + { + id: 'us_central', + label: 'North America - US Central', + }, + ] as any, + }); + + it.each([ + [['US Central QA'], 1], + [['North America - US Central'], 1], + [['North America - US Central', 'US Central QA'], 2], + [undefined, 2], + ])('handles disabled count when using location filters', async (locations, disabledCount) => { + jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ + { + type: 'synthetics-monitor', + id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + attributes: { + enabled: false, + schedule: { + number: '3', + unit: 'm', + }, + config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + locations: [ + { + isServiceManaged: true, + label: 'US Central QA', + id: 'us_central_qa', + }, + { + isServiceManaged: true, + label: 'North America - US Central', + id: 'us_central', + }, + ], + origin: 'project', + id: 'a-test2-default', + }, + references: [], + migrationVersion: { + 'synthetics-monitor': '8.6.0', + }, + coreMigrationVersion: '8.0.0', + updated_at: '2023-02-28T14:31:37.641Z', + created_at: '2023-02-28T14:31:37.641Z', + version: 'Wzg0MzkzLDVd', + namespaces: ['default'], + score: null, + sort: ['a', 3013], + } as unknown as SavedObjectsFindResult, + ]); + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + esClient.msearch.mockResponseOnce({ + responses: [ + getEsResponse({ + buckets: [ + { + key: 'id1', + location: { + buckets: [ + { + key: 'Asia/Pacific - Japan', + status: { + hits: { + hits: [ + { + _source: { + '@timestamp': '2022-09-15T16:08:16.724Z', + monitor: { + status: 'up', + id: 'id1', + }, + summary: { + up: 1, + down: 0, + }, + config_id: 'id1', + observer: { + geo: { + name: 'Asia/Pacific - Japan', + }, + }, + }, + }, + ], + }, + }, + }, + ], + }, + }, + { + key: 'id2', + location: { + buckets: [ + { + key: 'Asia/Pacific - Japan', + status: { + hits: { + hits: [ + { + _source: { + '@timestamp': '2022-09-15T16:09:16.724Z', + monitor: { + status: 'up', + id: 'id2', + }, + summary: { + up: 1, + down: 0, + }, + config_id: 'id2', + observer: { + geo: { + name: 'Asia/Pacific - Japan', + }, + }, + }, + }, + ], + }, + }, + }, + { + key: 'Europe - Germany', + status: { + hits: { + hits: [ + { + _source: { + '@timestamp': '2022-09-15T16:19:16.724Z', + monitor: { + status: 'down', + id: 'id2', + }, + summary: { + down: 1, + up: 0, + }, + config_id: 'id2', + observer: { + geo: { + name: 'Europe - Germany', + }, + }, + }, + }, + ], + }, + }, + }, + ], + }, + }, + ], + }), + ], + took: 605, + }); + + const overviewStatusService = new OverviewStatusService({ + request: { + query: { + locations, + }, + }, + syntheticsEsClient, + } as any); + + const result = await overviewStatusService.getOverviewStatus(); + + expect(result).toEqual( + expect.objectContaining({ + disabledCount, + }) + ); + }); + + it.each([ + [['US Central QA'], 1], + [['North America - US Central'], 1], + [['North America - US Central', 'US Central QA'], 2], + [undefined, 2], + ])('handles pending count when using location filters', async (locations, pending) => { + jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ + { + type: 'synthetics-monitor', + id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + attributes: { + enabled: true, + schedule: { + number: '3', + unit: 'm', + }, + config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + locations: [ + { + isServiceManaged: true, + label: 'US Central QA', + id: 'us_central_qa', + }, + { + isServiceManaged: true, + label: 'North America - US Central', + id: 'us_central', + }, + ], + origin: 'project', + id: 'a-test2-default', + }, + references: [], + migrationVersion: { + 'synthetics-monitor': '8.6.0', + }, + coreMigrationVersion: '8.0.0', + updated_at: '2023-02-28T14:31:37.641Z', + created_at: '2023-02-28T14:31:37.641Z', + version: 'Wzg0MzkzLDVd', + namespaces: ['default'], + score: null, + sort: ['a', 3013], + } as unknown as SavedObjectsFindResult, + ]); + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + esClient.search.mockResponseOnce( + getEsResponse({ + buckets: [], + }) + ); + + const overviewStatusService = new OverviewStatusService({ + request: { + query: { + locations, + }, + }, + syntheticsEsClient, + } as any); + + const result = await overviewStatusService.getOverviewStatus(); + + expect(result.pending).toEqual(pending); + }); + }); +}); + +function getEsResponse({ buckets, after }: { buckets: any[]; after?: any }) { + return { + took: 605, + timed_out: false, + _shards: { + total: 3, + successful: 3, + skipped: 0, + failed: 0, + }, + hits: { + hits: [], + }, + aggregations: { + monitors: { + buckets, + after_key: after, + }, + }, + }; +} diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.ts new file mode 100644 index 0000000000000..5ff8a870db9de --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.ts @@ -0,0 +1,363 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment/moment'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SavedObjectsFindResult } from '@kbn/core-saved-objects-api-server'; +import { isEmpty } from 'lodash'; +import { withApmSpan } from '@kbn/apm-data-access-plugin/server/utils/with_apm_span'; +import { asMutableArray } from '../../../common/utils/as_mutable_array'; +import { getMonitorFilters, OverviewStatusQuery } from '../common'; +import { + getAllMonitors, + processMonitors, +} from '../../saved_objects/synthetics_monitor/get_all_monitors'; +import { ConfigKey } from '../../../common/constants/monitor_management'; +import { RouteContext } from '../types'; +import { + EncryptedSyntheticsMonitorAttributes, + OverviewStatusMetaData, +} from '../../../common/runtime_types'; +import { isStatusEnabled } from '../../../common/runtime_types/monitor_management/alert_config'; +import { + FINAL_SUMMARY_FILTER, + getRangeFilter, + getTimespanFilter, +} from '../../../common/constants/client_defaults'; + +type LocationStatus = Array<{ + status: string; + locationId: string; + timestamp: string; +}>; + +export const SUMMARIES_PAGE_SIZE = 5000; + +export class OverviewStatusService { + filterData: { + locationFilter?: string[] | string; + filtersStr?: string; + } = {}; + constructor( + private readonly routeContext: RouteContext, OverviewStatusQuery> + ) {} + + async getOverviewStatus() { + const { request } = this.routeContext; + const queryParams = request.query as OverviewStatusQuery; + + this.filterData = await getMonitorFilters({ + ...queryParams, + context: this.routeContext, + }); + + const [allConfigs, statusResult] = await Promise.all([ + this.getMonitorConfigs(), + this.getQueryResult(), + ]); + + const { up, down, pending, upConfigs, downConfigs, pendingConfigs, disabledConfigs } = + this.processOverviewStatus(allConfigs, statusResult); + + const { + enabledMonitorQueryIds, + disabledMonitorQueryIds, + allIds, + disabledCount, + disabledMonitorsCount, + projectMonitorsCount, + } = processMonitors(allConfigs, this.filterData?.locationFilter); + + return { + allIds, + allMonitorsCount: allConfigs.length, + disabledMonitorsCount, + projectMonitorsCount, + enabledMonitorQueryIds, + disabledMonitorQueryIds, + disabledCount, + up, + down, + pending, + upConfigs, + downConfigs, + pendingConfigs, + disabledConfigs, + }; + } + + getEsDataFilters() { + const { spaceId, request } = this.routeContext; + const params = request.query || {}; + const { + scopeStatusByLocation = true, + tags, + monitorTypes, + projects, + showFromAllSpaces, + } = params; + const { locationFilter } = this.filterData; + const getTermFilter = (field: string, value: string | string[] | undefined) => { + if (!value || isEmpty(value)) { + return []; + } + if (Array.isArray(value)) { + return [ + { + terms: { + [field]: value, + }, + }, + ]; + } + return [ + { + term: { + [field]: value, + }, + }, + ]; + }; + const filters: QueryDslQueryContainer[] = [ + ...(showFromAllSpaces ? [] : [{ term: { 'meta.space_id': spaceId } }]), + ...getTermFilter('monitor.type', monitorTypes), + ...getTermFilter('tags', tags), + ...getTermFilter('monitor.project.id', projects), + ]; + + if (scopeStatusByLocation && !isEmpty(locationFilter) && locationFilter) { + filters.push({ + terms: { + 'observer.name': locationFilter, + }, + }); + } + return filters; + } + + async getQueryResult() { + return withApmSpan('monitor_status_data', async () => { + const range = { + // max monitor schedule period is 4 hours, 20 minute subtraction is to be on safe side + from: moment().subtract(4, 'hours').subtract(20, 'minutes').toISOString(), + to: 'now', + }; + + let hasMoreData = true; + const monitorByIds = new Map(); + let afterKey: any; + let count = 0; + + do { + const result = await this.routeContext.syntheticsEsClient.search( + { + body: { + size: 0, + query: { + bool: { + filter: [ + FINAL_SUMMARY_FILTER, + getRangeFilter({ from: range.from, to: range.to }), + getTimespanFilter({ from: 'now-15m', to: 'now' }), + ...this.getEsDataFilters(), + ] as QueryDslQueryContainer[], + }, + }, + aggs: { + monitors: { + composite: { + size: SUMMARIES_PAGE_SIZE, + sources: asMutableArray([ + { + monitorId: { + terms: { + field: 'monitor.id', + }, + }, + }, + { + locationId: { + terms: { + field: 'observer.name', + }, + }, + }, + ] as const), + after: afterKey, + }, + aggs: { + status: { + top_metrics: { + metrics: { + field: 'monitor.status', + }, + sort: { + '@timestamp': 'desc', + }, + }, + }, + }, + }, + }, + }, + }, + 'getCurrentStatusOverview' + count + ); + count += 1; + const data = result.body.aggregations?.monitors; + + hasMoreData = (data?.buckets ?? []).length >= SUMMARIES_PAGE_SIZE; + afterKey = data?.after_key; + + data?.buckets.forEach(({ status: statusAgg, key: bKey }) => { + const monitorId = String(bKey.monitorId); + const locationId = String(bKey.locationId); + const status = String(statusAgg.top?.[0].metrics?.['monitor.status']); + const timestamp = String(statusAgg.top[0].sort[0]); + if (!monitorByIds.has(String(monitorId))) { + monitorByIds.set(monitorId, []); + } + monitorByIds.get(monitorId)?.push({ status, locationId, timestamp }); + }); + } while (hasMoreData && afterKey); + return monitorByIds; + }); + } + + processOverviewStatus( + monitors: Array>, + statusData: Map + ) { + let up = 0; + let down = 0; + const upConfigs: Record = {}; + const downConfigs: Record = {}; + const pendingConfigs: Record = {}; + const disabledConfigs: Record = {}; + + const enabledMonitors = monitors.filter((monitor) => monitor.attributes[ConfigKey.ENABLED]); + const disabledMonitors = monitors.filter((monitor) => !monitor.attributes[ConfigKey.ENABLED]); + + const queryLocIds = this.filterData?.locationFilter; + + disabledMonitors.forEach((monitor) => { + const monitorQueryId = monitor.attributes[ConfigKey.MONITOR_QUERY_ID]; + const meta = this.getMonitorMeta(monitor); + monitor.attributes[ConfigKey.LOCATIONS]?.forEach((location) => { + disabledConfigs[`${meta.configId}-${location.id}`] = { + monitorQueryId, + status: 'disabled', + locationId: location.id, + locationLabel: location.label, + ...meta, + }; + }); + }); + + enabledMonitors.forEach((monitor) => { + const monitorId = monitor.attributes[ConfigKey.MONITOR_QUERY_ID]; + const monitorStatus = statusData.get(monitorId); + + // discard any locations that are not in the monitorLocationsMap for the given monitor as well as those which are + // in monitorLocationsMap but not in listOfLocations + const monLocations = monitor.attributes[ConfigKey.LOCATIONS]; + monLocations?.forEach((monLocation) => { + if (!isEmpty(queryLocIds) && !queryLocIds?.includes(monLocation.id)) { + // filter out location provided via query + return; + } + const locData = monitorStatus?.find((loc) => loc.locationId === monLocation.id); + const meta = { + monitorQueryId: monitorId, + locationId: monLocation.id, + timestamp: locData?.timestamp, + locationLabel: monLocation.label, + ...this.getMonitorMeta(monitor), + }; + const monLocId = `${meta.configId}-${monLocation.id}`; + if (locData) { + if (locData.status === 'down') { + down += 1; + downConfigs[monLocId] = { + ...meta, + status: 'down', + }; + } else if (locData.status === 'up') { + up += 1; + upConfigs[monLocId] = { + ...meta, + status: 'up', + }; + } + } else { + pendingConfigs[monLocId] = { + status: 'unknown', + ...meta, + }; + } + }); + }); + + return { + up, + down, + pending: Object.values(pendingConfigs).length, + upConfigs, + downConfigs, + pendingConfigs, + disabledConfigs, + }; + } + + async getMonitorConfigs() { + const { savedObjectsClient, request } = this.routeContext; + const { query, showFromAllSpaces } = request.query || {}; + /** + * Walk through all monitor saved objects, bucket IDs by disabled/enabled status. + * + * Track max period to make sure the snapshot query should reach back far enough to catch + * latest ping for all enabled monitors. + */ + + const { filtersStr } = this.filterData; + + return await getAllMonitors({ + soClient: savedObjectsClient, + showFromAllSpaces, + search: query ? `${query}*` : '', + filter: filtersStr, + fields: [ + ConfigKey.ENABLED, + ConfigKey.LOCATIONS, + ConfigKey.MONITOR_QUERY_ID, + ConfigKey.CONFIG_ID, + ConfigKey.SCHEDULE, + ConfigKey.MONITOR_SOURCE_TYPE, + ConfigKey.MONITOR_TYPE, + ConfigKey.NAME, + ConfigKey.TAGS, + ConfigKey.PROJECT_ID, + ConfigKey.ALERT_CONFIG, + ], + }); + } + + getMonitorMeta(monitor: SavedObjectsFindResult) { + return { + name: monitor.attributes[ConfigKey.NAME], + configId: monitor.attributes[ConfigKey.CONFIG_ID], + schedule: monitor.attributes[ConfigKey.SCHEDULE].number, + tags: monitor.attributes[ConfigKey.TAGS], + isEnabled: monitor.attributes[ConfigKey.ENABLED], + type: monitor.attributes[ConfigKey.MONITOR_TYPE], + projectId: monitor.attributes[ConfigKey.PROJECT_ID], + isStatusAlertEnabled: isStatusEnabled(monitor.attributes[ConfigKey.ALERT_CONFIG]), + updated_at: monitor.updated_at, + spaceId: monitor.namespaces?.[0], + }; + } +} diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.test.ts new file mode 100644 index 0000000000000..fef2927d7bd3a --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.test.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { periodToMs } from './utils'; + +describe('periodToMs', () => { + it('returns 0 for unsupported unit type', () => { + // @ts-expect-error Providing invalid value to test handler in function + expect(periodToMs({ number: '10', unit: 'rad' })).toEqual(0); + }); + + it('converts seconds', () => { + expect(periodToMs({ number: '10', unit: 's' })).toEqual(10_000); + }); + + it('converts minutes', () => { + expect(periodToMs({ number: '1', unit: 'm' })).toEqual(60_000); + }); + + it('converts hours', () => { + expect(periodToMs({ number: '1', unit: 'h' })).toEqual(3_600_000); + }); +}); diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.ts new file mode 100644 index 0000000000000..d02509a70e562 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Helper function that converts a monitor's schedule to a value to use to generate + * an appropriate look-back window for snapshot count. + * @param schedule a number/unit pair that represents how often a configured monitor runs + * @returns schedule interval in ms + */ +import datemath, { Unit } from '@kbn/datemath'; + +export function periodToMs(schedule: { number: string; unit: Unit }) { + if (Object.keys(datemath.unitsMap).indexOf(schedule.unit) === -1) return 0; + + return parseInt(schedule.number, 10) * datemath.unitsMap[schedule.unit].base; +} diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/fetch_trends.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/fetch_trends.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/fetch_trends.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/fetch_trends.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/overview_trends.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/overview_trends.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/overview_trends.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/overview_trends.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/overview_trends.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/overview_trends.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/overview_trends.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/overview_trends.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/get_pings.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/get_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/get_pings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/get_pings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/journey_screenshot_blocks.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journey_screenshot_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/journey_screenshot_blocks.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journey_screenshot_blocks.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/journey_screenshots.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journey_screenshots.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/journey_screenshots.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journey_screenshots.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/journeys.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journeys.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/journeys.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journeys.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/last_successful_check.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/last_successful_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/last_successful_check.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/last_successful_check.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/ping_heatmap.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/ping_heatmap.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/ping_heatmap.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/ping_heatmap.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/dynamic_settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/add_param.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/add_param.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/add_param.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/add_param.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/delete_param.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/delete_param.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/delete_param.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/delete_param.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/delete_params_bulk.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/delete_params_bulk.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/delete_params_bulk.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/delete_params_bulk.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/edit_param.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/edit_param.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/edit_param.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/edit_param.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/params.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/params.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/add_private_location.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/add_private_location.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/add_private_location.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/add_private_location.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/delete_private_location.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/delete_private_location.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/delete_private_location.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/delete_private_location.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_agent_policies.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_agent_policies.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_agent_policies.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_agent_policies.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_location_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_location_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_location_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_location_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/helpers.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/helpers.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/helpers.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/helpers.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/helpers.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/helpers.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/helpers.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/sync_global_params.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/sync_global_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/sync_global_params.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/sync_global_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/suggestions/route.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/suggestions/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/suggestions/route.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/suggestions/route.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/get_service_allowed.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/get_service_allowed.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/get_service_allowed.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/get_service_allowed.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/get_service_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/get_service_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/get_service_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/get_service_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/install_index_templates.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/install_index_templates.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/install_index_templates.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/install_index_templates.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/run_once_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/run_once_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/run_once_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/run_once_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/service_errors.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/service_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/service_errors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/service_errors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/test_now_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/test_now_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/telemetry/monitor_upgrade_sender.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/telemetry/monitor_upgrade_sender.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/telemetry/monitor_upgrade_sender.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/telemetry/monitor_upgrade_sender.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/telemetry/monitor_upgrade_sender.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/telemetry/monitor_upgrade_sender.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/telemetry/monitor_upgrade_sender.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/telemetry/monitor_upgrade_sender.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/types.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/runtime_types/private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/runtime_types/private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/runtime_types/private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/runtime_types/private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/runtime_types/settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/runtime_types/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/runtime_types/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/runtime_types/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.6.0.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.6.0.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.6.0.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.6.0.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.6.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.6.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.6.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.6.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.8.0.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.8.0.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.8.0.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.8.0.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.8.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.8.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.8.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.8.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.9.0.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.9.0.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.9.0.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.9.0.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.9.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.9.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.9.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.9.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.5.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.5.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.5.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.5.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.7.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.7.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.7.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.7.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/private_locations/model_version_1.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/private_locations/model_version_1.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/private_locations/model_version_1.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/private_locations/model_version_1.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/private_locations/model_version_1.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/private_locations/model_version_1.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/private_locations/model_version_1.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/private_locations/model_version_1.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/saved_objects.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/saved_objects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/saved_objects.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/saved_objects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/service_api_key.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/service_api_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/service_api_key.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/service_api_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts similarity index 75% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts index 8cae1ef32a8c3..ebf034d9eb7fb 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts +++ b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts @@ -11,8 +11,9 @@ import { SavedObjectsFindResult, } from '@kbn/core-saved-objects-api-server'; import { intersection } from 'lodash'; +import { withApmSpan } from '@kbn/apm-data-access-plugin/server/utils'; +import { periodToMs } from '../../routes/overview_status/utils'; import { syntheticsMonitorType } from '../../../common/types/saved_objects'; -import { periodToMs } from '../../routes/overview_status/overview_status'; import { ConfigKey, EncryptedSyntheticsMonitorAttributes, @@ -34,26 +35,28 @@ export const getAllMonitors = async ({ filter?: string; showFromAllSpaces?: boolean; } & Pick) => { - const finder = soClient.createPointInTimeFinder({ - type: syntheticsMonitorType, - perPage: 1000, - search, - sortField, - sortOrder, - fields, - filter, - searchFields, - ...(showFromAllSpaces && { namespaces: ['*'] }), - }); + return withApmSpan('get_all_monitors', async () => { + const finder = soClient.createPointInTimeFinder({ + type: syntheticsMonitorType, + perPage: 5000, + search, + sortField, + sortOrder, + fields, + filter, + searchFields, + ...(showFromAllSpaces && { namespaces: ['*'] }), + }); - const hits: Array> = []; - for await (const result of finder.find()) { - hits.push(...result.saved_objects); - } + const hits: Array> = []; + for await (const result of finder.find()) { + hits.push(...result.saved_objects); + } - finder.close().catch(() => {}); + finder.close().catch(() => {}); - return hits; + return hits; + }); }; export const processMonitors = ( @@ -86,13 +89,13 @@ export const processMonitors = ( monitorQueryIdToConfigIdMap[attrs[ConfigKey.MONITOR_QUERY_ID]] = attrs[ConfigKey.CONFIG_ID]; - const monitorLocations = attrs[ConfigKey.LOCATIONS].map((location) => location.id); + const monitorLocIds = attrs[ConfigKey.LOCATIONS].map((location) => location.id); if (attrs[ConfigKey.ENABLED] === false) { const queriedLocations = Array.isArray(queryLocations) ? queryLocations : [queryLocations]; const intersectingLocations = intersection( - monitorLocations, - queryLocations ? queriedLocations : monitorLocations + monitorLocIds, + queryLocations ? queriedLocations : monitorLocIds ); disabledCount += intersectingLocations.length; disabledMonitorsCount += 1; @@ -101,9 +104,9 @@ export const processMonitors = ( enabledMonitorQueryIds.push(attrs[ConfigKey.MONITOR_QUERY_ID]); monitorLocationsMap[attrs[ConfigKey.MONITOR_QUERY_ID]] = queryLocations - ? intersection(monitorLocations, queryLocations) - : monitorLocations; - listOfLocationsSet = new Set([...listOfLocationsSet, ...monitorLocations]); + ? intersection(monitorLocIds, queryLocations) + : monitorLocIds; + listOfLocationsSet = new Set([...listOfLocationsSet, ...monitorLocIds]); maxPeriod = Math.max(maxPeriod, periodToMs(attrs[ConfigKey.SCHEDULE])); } diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_param.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_param.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_param.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_param.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/server.ts b/x-pack/solutions/observability/plugins/synthetics/server/server.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/server.ts rename to x-pack/solutions/observability/plugins/synthetics/server/server.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/server/synthetics_route_wrapper.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_route_wrapper.ts new file mode 100644 index 0000000000000..24abf55d53c43 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_route_wrapper.ts @@ -0,0 +1,117 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { withApmSpan } from '@kbn/apm-data-access-plugin/server/utils/with_apm_span'; +import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; +import { isEmpty } from 'lodash'; +import { isKibanaResponse } from '@kbn/core-http-server'; +import { syntheticsServiceApiKey } from './saved_objects/service_api_key'; +import { isTestUser, SyntheticsEsClient } from './lib'; +import { SYNTHETICS_INDEX_PATTERN } from '../common/constants'; +import { checkIndicesReadPrivileges } from './synthetics_service/authentication/check_has_privilege'; +import { SyntheticsRouteWrapper } from './routes/types'; + +export const syntheticsRouteWrapper: SyntheticsRouteWrapper = ( + syntheticsRoute, + server, + syntheticsMonitorClient +) => ({ + ...syntheticsRoute, + options: { + ...(syntheticsRoute.options ?? {}), + }, + security: { + authz: { + requiredPrivileges: [ + 'uptime-read', + ...(syntheticsRoute.requiredPrivileges ?? []), + ...(syntheticsRoute?.writeAccess ? ['uptime-write'] : []), + ], + }, + }, + handler: async (context, request, response) => { + return withApmSpan('synthetics_route_handler', async () => { + const { elasticsearch, savedObjects, uiSettings } = await context.core; + + const { client: esClient } = elasticsearch; + const savedObjectsClient = savedObjects.getClient({ + includedHiddenTypes: [syntheticsServiceApiKey.name], + }); + + // specifically needed for the synthetics service api key generation + server.authSavedObjectsClient = savedObjectsClient; + + const syntheticsEsClient = new SyntheticsEsClient( + savedObjectsClient, + esClient.asCurrentUser, + { + request, + uiSettings, + isDev: Boolean(server.isDev) && !isTestUser(server), + heartbeatIndices: SYNTHETICS_INDEX_PATTERN, + } + ); + + server.syntheticsEsClient = syntheticsEsClient; + + const spaceId = server.spaces?.spacesService.getSpaceId(request) ?? DEFAULT_SPACE_ID; + + try { + const res = await syntheticsRoute.handler({ + syntheticsEsClient, + savedObjectsClient, + context, + request, + response, + server, + spaceId, + syntheticsMonitorClient, + }); + if (isKibanaResponse(res)) { + return res; + } + + const inspectData = await syntheticsEsClient.getInspectData(syntheticsRoute.path); + + if (Array.isArray(res)) { + if (isEmpty(inspectData)) { + return response.ok({ + body: res, + }); + } else { + return response.ok({ + body: { + result: res, + ...inspectData, + }, + }); + } + } + + return response.ok({ + body: { + ...res, + ...inspectData, + }, + }); + } catch (e) { + if (e.statusCode === 403) { + const privileges = await checkIndicesReadPrivileges(syntheticsEsClient); + if (!privileges.has_all_requested) { + return response.forbidden({ + body: { + message: + 'MissingIndicesPrivileges: You do not have permission to read from the synthetics-* indices. Please contact your administrator.', + }, + }); + } + } + server.logger.error(e); + throw e; + } + }); + }, +}); diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/authentication/check_has_privilege.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/authentication/check_has_privilege.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/authentication/check_has_privilege.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/authentication/check_has_privilege.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/common.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/common.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/formatting_utils.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/formatting_utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/formatting_utils.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/formatting_utils.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/formatting_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/formatting_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/formatting_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/formatting_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatters.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatters.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatters.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatting_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatting_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatting_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatting_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/http_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/http_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/http_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/http_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/icmp_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/icmp_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/icmp_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/icmp_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/tcp_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/tcp_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/tcp_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/tcp_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/tls_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/tls_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/tls_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/tls_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/browser.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/browser.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/browser.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/browser.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/browser.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/browser.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/browser.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/browser.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/common.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/common.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/common.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/common.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/common.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/formatting_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/formatting_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/formatting_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/formatting_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/http.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/http.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/http.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/http.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/icmp.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/icmp.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/icmp.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/icmp.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/tcp.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/tcp.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/tcp.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/tcp.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/tls.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/tls.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/tls.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/variable_parser.js b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/variable_parser.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/variable_parser.js rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/variable_parser.js diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_all_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_all_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_all_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_all_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_es_hosts.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_es_hosts.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_es_hosts.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_es_hosts.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_es_hosts.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_es_hosts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_es_hosts.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_es_hosts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_service_locations.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_service_locations.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_service_locations.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_service_locations.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_service_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_service_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_service_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_service_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/clean_up_task.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/clean_up_task.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/clean_up_task.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/clean_up_task.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/test_policy.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/test_policy.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/test_policy.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/test_policy.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/service_api_client.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/service_api_client.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/service_api_client.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/service_api_client.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/service_api_client.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/service_api_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/service_api_client.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/service_api_client.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.ts similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.ts index c223de84c42dc..164515ad76c1b 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.ts +++ b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.ts @@ -309,9 +309,10 @@ export class SyntheticsService { return this.server.coreStart?.elasticsearch.client.asInternalUser; } - async getOutput() { + async getOutput({ inspect }: { inspect: boolean } = { inspect: false }) { const { apiKey, isValid } = await getAPIKeyForSyntheticsService({ server: this.server }); - if (!isValid) { + // do not check for api key validity if inspecting + if (!isValid && !inspect) { this.server.logger.error( 'API key is not valid. Cannot push monitor configuration to synthetics public testing locations' ); @@ -332,7 +333,7 @@ export class SyntheticsService { const monitors = this.formatConfigs(config); const license = await this.getLicense(); - const output = await this.getOutput(); + const output = await this.getOutput({ inspect: true }); if (output) { return await this.apiClient.inspect({ monitors, @@ -356,11 +357,18 @@ export class SyntheticsService { if (output) { this.logger.debug(`1 monitor will be pushed to synthetics service.`); - this.syncErrors = await this.apiClient.post({ - monitors, - output, - license, - }); + this.apiClient + .post({ + monitors, + output, + license, + }) + .then((res) => { + this.syncErrors = res; + }) + .catch((e) => { + this.logger.error(e); + }); } return this.syncErrors; } catch (e) { diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/fake_kibana_request.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/fake_kibana_request.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/fake_kibana_request.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/fake_kibana_request.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/mocks.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/mocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/mocks.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/mocks.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/secrets.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/secrets.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/secrets.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/secrets.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/__mocks__/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/__mocks__/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/__mocks__/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/constants.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/constants.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/constants.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/queue.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/queue.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/queue.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/queue.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/queue.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/queue.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/queue.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/queue.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.test.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.ts new file mode 100644 index 0000000000000..60b2fe84a7586 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.ts @@ -0,0 +1,207 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { exhaustMap, Subject, takeUntil, timer } from 'rxjs'; +import type { CoreStart, ElasticsearchClient, Logger } from '@kbn/core/server'; +import type { TelemetryPluginStart, TelemetryPluginSetup } from '@kbn/telemetry-plugin/server'; + +import { cloneDeep } from 'lodash'; + +import axios from 'axios'; + +import type { InfoResponse, LicenseGetResponse } from '@elastic/elasticsearch/lib/api/types'; + +import { TelemetryQueue } from './queue'; + +import type { MonitorUpdateTelemetryChannel, MonitorUpdateTelemetryChannelEvents } from './types'; + +/** + * Simplified version of https://github.com/elastic/kibana/blob/master/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender.ts + * Sends batched events to telemetry v3 api + */ +export class TelemetryEventsSender { + private readonly initialCheckDelayMs = 10 * 1000; + private readonly checkIntervalMs = 30 * 1000; + private readonly logger: Logger; + private readonly stop$ = new Subject(); + + private telemetryStart?: TelemetryPluginStart; + private telemetrySetup?: TelemetryPluginSetup; + private isSending = false; + private queuesPerChannel: { [channel: string]: TelemetryQueue } = {}; + private isOptedIn?: boolean = true; // Assume true until the first check + private esClient?: ElasticsearchClient; + private clusterInfo?: InfoResponse; + private licenseInfo?: LicenseGetResponse; + + constructor(logger: Logger) { + this.logger = logger; + } + + public setup(telemetrySetup?: TelemetryPluginSetup) { + this.telemetrySetup = telemetrySetup; + } + + public async start(telemetryStart?: TelemetryPluginStart, core?: CoreStart) { + this.telemetryStart = telemetryStart; + this.esClient = core?.elasticsearch.client.asInternalUser; + this.clusterInfo = await this.fetchClusterInfo(); + this.licenseInfo = await this.fetchLicenseInfo(); + + this.logger.debug(`Starting local task`); + timer(this.initialCheckDelayMs, this.checkIntervalMs) + .pipe( + takeUntil(this.stop$), + exhaustMap(() => this.sendIfDue()) + ) + .subscribe(); + } + + public stop() { + this.stop$.next(); + } + + public queueTelemetryEvents( + channel: T, + events: Array + ) { + if (!this.queuesPerChannel[channel]) { + this.queuesPerChannel[channel] = new TelemetryQueue(); + } + this.queuesPerChannel[channel].addEvents(cloneDeep(events)); + } + + public async isTelemetryOptedIn() { + this.isOptedIn = await this.telemetryStart?.getIsOptedIn(); + return this.isOptedIn === true; + } + + private async sendIfDue() { + if (this.isSending) { + return; + } + + this.isSending = true; + + this.isOptedIn = await this.isTelemetryOptedIn(); + if (!this.isOptedIn) { + this.logger.debug(`Telemetry is not opted-in.`); + for (const channel of Object.keys(this.queuesPerChannel)) { + this.queuesPerChannel[channel].clearEvents(); + } + this.isSending = false; + return; + } + + for (const channel of Object.keys(this.queuesPerChannel)) { + await this.sendEvents(await this.fetchTelemetryUrl(channel), this.queuesPerChannel[channel]); + } + + this.isSending = false; + } + + private async fetchClusterInfo(): Promise { + if (this.esClient === undefined || this.esClient === null) { + throw Error('elasticsearch client is unavailable: cannot retrieve cluster information'); + } + + try { + return await this.esClient.info(); + } catch (e) { + this.logger.debug(`Error fetching cluster information: ${e}`); + } + } + + private async fetchLicenseInfo() { + if (this.esClient === undefined || this.esClient === null) { + throw Error('elasticsearch client is unavailable: cannot retrieve license information'); + } + try { + return await this.esClient.license.get(); + } catch (e) { + this.logger.debug(`Error fetching license information: ${e}`); + } + } + + public async sendEvents(telemetryUrl: string, queue: TelemetryQueue) { + let events = queue.getEvents(); + if (events.length === 0) { + return; + } + + events = events.map((event) => ({ ...event, license: this.licenseInfo?.license })); + + try { + this.logger.debug(`Telemetry URL: ${telemetryUrl}`); + + queue.clearEvents(); + + this.logger.debug(() => JSON.stringify(events)); + + await this.send(events, telemetryUrl); + } catch (err) { + this.logger.debug(`Error sending telemetry events data: ${err}`); + queue.clearEvents(); + } + } + + // Forms URLs like: + // https://telemetry.elastic.co/v3/send/my-channel-name or + // https://telemetry-staging.elastic.co/v3/send/my-channel-name + private async fetchTelemetryUrl(channel: string): Promise { + const telemetryUrl = await this.telemetrySetup?.getTelemetryUrl(); + if (!telemetryUrl) { + throw Error("Couldn't get telemetry URL"); + } + if (!telemetryUrl.hostname.includes('staging')) { + telemetryUrl.pathname = `/v3/send/${channel}`; + } else { + telemetryUrl.pathname = `/v3-dev/send/${channel}`; + } + return telemetryUrl.toString(); + } + + private async send(events: unknown[], telemetryUrl: string) { + const { + cluster_name: clusterName, + cluster_uuid: clusterUuid, + version: clusterVersion, + } = this.clusterInfo ?? {}; + + // using ndjson so that each line will be wrapped in json envelope on server side + // see https://github.com/elastic/infra/blob/master/docs/telemetry/telemetry-next-dataflow.md#json-envelope + const ndjson = this.transformDataToNdjson(events); + + try { + const resp = await axios.post(telemetryUrl, ndjson, { + headers: { + 'Content-Type': 'application/x-ndjson', + ...(clusterUuid ? { 'X-Elastic-Cluster-ID': clusterUuid } : undefined), + ...(clusterName ? { 'X-Elastic-Cluster-Name': clusterName } : undefined), + 'X-Elastic-Stack-Version': clusterVersion?.number ? clusterVersion.number : '8.2.0', + }, + timeout: 5000, + }); + this.logger.debug( + () => `Events sent!. Response: ${resp.status} ${JSON.stringify(resp.data)}` + ); + } catch (err) { + this.logger.debug( + () => `Error sending events: ${err.response.status} ${JSON.stringify(err.response.data)}` + ); + } + } + + private transformDataToNdjson = (data: unknown[]): string => { + if (data.length !== 0) { + const dataString = data.map((dataItem) => JSON.stringify(dataItem)).join('\n'); + return `${dataString}\n`; + } else { + return ''; + } + }; +} diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/types.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/types.ts b/x-pack/solutions/observability/plugins/synthetics/server/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/types.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/tsconfig.json b/x-pack/solutions/observability/plugins/synthetics/tsconfig.json new file mode 100644 index 0000000000000..ece2a3934e60c --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/tsconfig.json @@ -0,0 +1,113 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "__mocks__/**/*", + "common/**/*", + "scripts/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/alerting-plugin", + "@kbn/ml-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/observability-plugin", + "@kbn/fleet-plugin", + "@kbn/unified-search-plugin", + "@kbn/i18n", + "@kbn/core", + "@kbn/config-schema", + "@kbn/server-http-tools", + "@kbn/datemath", + "@kbn/share-plugin", + "@kbn/discover-plugin", + "@kbn/home-plugin", + "@kbn/embeddable-plugin", + "@kbn/data-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/inspector-plugin", + "@kbn/cases-plugin", + "@kbn/cloud-plugin", + "@kbn/data-views-plugin", + "@kbn/spaces-plugin", + "@kbn/core-doc-links-browser", + "@kbn/usage-collection-plugin", + "@kbn/kibana-react-plugin", + "@kbn/i18n-react", + "@kbn/securitysolution-io-ts-utils", + "@kbn/es-query", + "@kbn/stack-connectors-plugin", + "@kbn/rule-data-utils", + "@kbn/core-http-browser", + "@kbn/core-notifications-browser", + "@kbn/rison", + "@kbn/licensing-plugin", + "@kbn/rule-registry-plugin", + "@kbn/encrypted-saved-objects-plugin", + "@kbn/security-plugin", + "@kbn/logging-mocks", + "@kbn/task-manager-plugin", + "@kbn/es-types", + "@kbn/core-http-server-mocks", + "@kbn/utility-types", + "@kbn/telemetry-plugin", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/core-saved-objects-api-server", + "@kbn/core-saved-objects-common", + "@kbn/features-plugin", + "@kbn/bfetch-plugin", + "@kbn/actions-plugin", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-api-server-mocks", + "@kbn/core-saved-objects-server", + "@kbn/shared-ux-prompt-not-found", + "@kbn/logging", + "@kbn/shared-ux-router", + "@kbn/alerts-as-data-utils", + "@kbn/exploratory-view-plugin", + "@kbn/observability-shared-plugin", + "@kbn/core-http-server", + "@kbn/std", + "@kbn/core-saved-objects-server-mocks", + "@kbn/shared-ux-page-kibana-template", + "@kbn/observability-ai-assistant-plugin", + "@kbn/unified-doc-viewer-plugin", + "@kbn/code-editor", + "@kbn/code-editor-mock", + "@kbn/securitysolution-io-ts-types", + "@kbn/shared-ux-link-redirect-app", + "@kbn/serverless", + "@kbn/repo-info", + "@kbn/index-management-plugin", + "@kbn/license-management-plugin", + "@kbn/react-kibana-mount", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-context-theme", + "@kbn/search-types", + "@kbn/core-lifecycle-browser", + "@kbn/ui-actions-browser", + "@kbn/presentation-publishing", + "@kbn/presentation-containers", + "@kbn/ui-actions-plugin", + "@kbn/presentation-util-plugin", + "@kbn/core-application-browser", + "@kbn/dashboard-plugin", + "@kbn/search-types", + "@kbn/slo-schema", + "@kbn/alerting-types", + "@kbn/babel-register", + "@kbn/slo-plugin", + "@kbn/ebt-tools", + "@kbn/alerting-types", + "@kbn/core-chrome-browser", + "@kbn/core-rendering-browser", + "@kbn/index-lifecycle-management-common-shared", + "@kbn/core-http-server-utils", + "@kbn/apm-data-access-plugin" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.js b/x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.js similarity index 100% rename from x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.js rename to x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.js diff --git a/x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.sh b/x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.sh new file mode 100755 index 0000000000000..9763f45c1101c --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +UUID="$(cat /proc/sys/kernel/random/uuid)" +export UUID + +node x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/solutions/observability/plugins/uptime/README.md b/x-pack/solutions/observability/plugins/uptime/README.md new file mode 100644 index 0000000000000..18ba1830b2a53 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/README.md @@ -0,0 +1,97 @@ +# Uptime Monitoring + +## Purpose + +The purpose of this plugin is to provide users of Heartbeat more visibility of what's happening +in their infrastructure. + +## Layout + +There are three sections to the app, `common`, `public`, and `server`. + +### common + +Contains runtime types types, constants and a few other files. + +Notably, we use `io-ts`/`fp-ts` functions and types to help provide +additional runtime safety for our API requests/responses. + +### public + +We use Redux and associated tools for managing our app state. Components come in the usual `connect`ed and +presentational varieties. + +The `lib` directory controls bootstrapping code and adapter types. + +There is a `pages` directory; each view gets its own page component. + +The principal structure of the app is stored in `uptime_app.tsx`. + +### server + +The `lib` directory contains `adapters`, which are connections to external resources like Kibana +Server, Elasticsearch, etc. In addition, it contains domains, which are libraries that provide +functionality via adapters. + +The `requests` directory contains functions responsible for querying Elasticsearch and parsing its +responses. + +There's also a `rest_api` folder that defines the structure of the RESTful API endpoints. + +## Testing + +### Unit tests + +Documentation: https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing + +``` +yarn test:jest x-pack/solutions/observability/plugins/synthetics +``` + +### Functional tests + +In one shell, from **~/kibana/x-pack**: +`node scripts/functional_tests_server.js` + +In another shell, from **~kibana/x-pack**: +`node ../scripts/functional_test_runner.js --grep="{TEST_NAME}"`. + +#### API tests + +If instead you need to run API tests, start up the test server and then in another shell, from **~kibana/x-pack**: +`node ../scripts/functional_test_runner.js --config test/api_integration/config.ts --grep="{TEST_NAME}"`. + +You can update snapshots by prefixing the runner command with `env UPDATE_UPTIME_FIXTURES=1` + +You can access the functional test server's Kibana at `http://localhost:5620/`. + +You can login with username `elastic` and password `changeme` by default. + +If you want to freeze a UI or API test you can include an async call like `await new Promise(r => setTimeout(r, 1000 * 60))` +to freeze the execution for 60 seconds if you need to click around or check things in the state that is loaded. + +#### Running --ssl tests + +Some of our tests require there to be an SSL connection between Kibana and Elasticsearch. + +We can run these tests like described above, but with some special config. + +`node scripts/functional_tests_server.js --config=test/functional_with_es_ssl/config.ts` + +`node scripts/functional_test_runner.js --config=test/functional_with_es_ssl/config.ts` + +#### Running accessibility tests + +We maintain a suite of Accessibility tests (you may see them referred to elsewhere as `a11y` tests). + +These tests render each of our pages and ensure that the inputs and other elements contain the +attributes necessary to ensure all users are able to make use of Kibana (for example, users relying +on screen readers). + +The commands for running these tests are very similar to the other functional tests described above. + +From the `~/x-pack` directory: + +Start the server: `node scripts/functional_tests_server --config test/accessibility/config.ts` + +Run the uptime `a11y` tests: `node scripts/functional_test_runner.js --config test/accessibility/config.ts --grep=uptime` diff --git a/x-pack/plugins/observability_solution/uptime/common/config.ts b/x-pack/solutions/observability/plugins/uptime/common/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/config.ts rename to x-pack/solutions/observability/plugins/uptime/common/config.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/capabilities.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/capabilities.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/capabilities.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/chart_format_limits.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/chart_format_limits.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/chart_format_limits.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/chart_format_limits.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/client_defaults.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/client_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/client_defaults.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/client_defaults.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/context_defaults.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/context_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/context_defaults.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/context_defaults.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/index.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/plugin.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/plugin.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/plugin.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/query.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/query.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/query.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/query.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/rest_api.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/rest_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/rest_api.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/rest_api.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/settings_defaults.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/settings_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/settings_defaults.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/settings_defaults.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/synthetics_alerts.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/synthetics_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/synthetics_alerts.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/synthetics_alerts.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/ui.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/ui.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/ui.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/ui.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/uptime_alerts.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/uptime_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/uptime_alerts.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/uptime_alerts.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/index.ts b/x-pack/solutions/observability/plugins/uptime/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/__snapshots__/assert_close_to.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/common/lib/__snapshots__/assert_close_to.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/__snapshots__/assert_close_to.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/common/lib/__snapshots__/assert_close_to.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/assert_close_to.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/assert_close_to.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/assert_close_to.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/assert_close_to.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/assert_close_to.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/assert_close_to.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/assert_close_to.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/assert_close_to.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/combine_filters_and_user_search.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/combine_filters_and_user_search.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/combine_filters_and_user_search.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/combine_filters_and_user_search.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/combine_filters_and_user_search.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/combine_filters_and_user_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/combine_filters_and_user_search.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/combine_filters_and_user_search.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/get_histogram_interval.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/get_histogram_interval.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/get_histogram_interval.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/get_histogram_interval.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/get_histogram_interval.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/get_histogram_interval.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/get_histogram_interval.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/get_histogram_interval.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/index.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/ml.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/ml.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/ml.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/ml.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/ml.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/ml.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/ml.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/ml.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/stringify_kueries.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/stringify_kueries.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/stringify_kueries.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/stringify_kueries.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/stringify_kueries.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/stringify_kueries.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/stringify_kueries.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/stringify_kueries.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/requests/get_certs_request_body.ts b/x-pack/solutions/observability/plugins/uptime/common/requests/get_certs_request_body.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/requests/get_certs_request_body.ts rename to x-pack/solutions/observability/plugins/uptime/common/requests/get_certs_request_body.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/alert_actions.test.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/alert_actions.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/alert_actions.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/alert_actions.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/alert_actions.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/alert_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/alert_actions.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/alert_actions.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/legacy_uptime/translations.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/legacy_uptime/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/legacy_uptime/translations.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/legacy_uptime/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/types.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/types.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/uptime_rule_field_map.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/uptime_rule_field_map.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/uptime_rule_field_map.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/uptime_rule_field_map.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/common.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/common.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/common.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/status_check.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/status_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/status_check.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/status_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/tls.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/tls.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/tls.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/certs.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/certs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/certs.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/certs.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/common.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/common.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/common.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/locations.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/locations.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/locations.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/state.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/state.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/state.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/state.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/network_events.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/error_state.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/error_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/error_state.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/error_state.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/histogram.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/histogram.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/histogram.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/observer.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/observer.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/observer.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/observer.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/ping.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/ping.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/synthetics.test.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/synthetics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/synthetics.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/synthetics.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/synthetics.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/synthetics.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/synthetics.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/synthetics.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/snapshot/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/snapshot/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/snapshot/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/snapshot/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/snapshot/snapshot_count.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/snapshot/snapshot_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/snapshot/snapshot_count.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/snapshot/snapshot_count.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/translations.ts b/x-pack/solutions/observability/plugins/uptime/common/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/translations.ts rename to x-pack/solutions/observability/plugins/uptime/common/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/translations/translations.ts b/x-pack/solutions/observability/plugins/uptime/common/translations/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/translations/translations.ts rename to x-pack/solutions/observability/plugins/uptime/common/translations/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/types/index.ts b/x-pack/solutions/observability/plugins/uptime/common/types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/types/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/types/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/types/integration_deprecation.ts b/x-pack/solutions/observability/plugins/uptime/common/types/integration_deprecation.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/types/integration_deprecation.ts rename to x-pack/solutions/observability/plugins/uptime/common/types/integration_deprecation.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/types/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/common/types/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/types/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/common/types/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/types/synthetics_monitor.ts b/x-pack/solutions/observability/plugins/uptime/common/types/synthetics_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/types/synthetics_monitor.ts rename to x-pack/solutions/observability/plugins/uptime/common/types/synthetics_monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/utils/as_mutable_array.ts b/x-pack/solutions/observability/plugins/uptime/common/utils/as_mutable_array.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/utils/as_mutable_array.ts rename to x-pack/solutions/observability/plugins/uptime/common/utils/as_mutable_array.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/utils/es_search.ts b/x-pack/solutions/observability/plugins/uptime/common/utils/es_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/utils/es_search.ts rename to x-pack/solutions/observability/plugins/uptime/common/utils/es_search.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/utils/get_monitor_url.ts b/x-pack/solutions/observability/plugins/uptime/common/utils/get_monitor_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/utils/get_monitor_url.ts rename to x-pack/solutions/observability/plugins/uptime/common/utils/get_monitor_url.ts diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/README.md b/x-pack/solutions/observability/plugins/uptime/e2e/README.md new file mode 100644 index 0000000000000..35b3a05f639da --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/README.md @@ -0,0 +1,32 @@ +## How to run these tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/synthetics/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From the same directory you can now run `node e2e.js --runner`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. + + +## Uptime App Tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/uptime/scripts`, run `node uptime_e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From the same directory you can now run `node uptime_e2e.js --runner`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/config.ts b/x-pack/solutions/observability/plugins/uptime/e2e/config.ts new file mode 100644 index 0000000000000..f38a590ed1502 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/config.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; +import { CA_CERT_PATH } from '@kbn/dev-utils'; +import { commonFunctionalServices } from '@kbn/ftr-common-functional-services'; +import { commonFunctionalUIServices } from '@kbn/ftr-common-functional-ui-services'; +import { readKibanaConfig } from '@kbn/observability-synthetics-test-data'; +const MANIFEST_KEY = 'xpack.uptime.service.manifestUrl'; +const SERVICE_PASSWORD = 'xpack.uptime.service.password'; +const SERVICE_USERNAME = 'xpack.uptime.service.username'; + +async function config({ readConfigFile }: FtrConfigProviderContext) { + const kibanaCommonTestsConfig = await readConfigFile( + require.resolve('@kbn/test-suites-src/common/config') + ); + const xpackFunctionalTestsConfig = await readConfigFile( + require.resolve('@kbn/test-suites-xpack/functional/config.base') + ); + + const kibanaConfig = readKibanaConfig(); + + const manifestUrl = process.env.SYNTHETICS_SERVICE_MANIFEST ?? kibanaConfig[MANIFEST_KEY]; + const serviceUsername = process.env.SYNTHETICS_SERVICE_USERNAME ?? kibanaConfig[SERVICE_USERNAME]; + const servicePassword = process.env.SYNTHETICS_SERVICE_PASSWORD ?? kibanaConfig[SERVICE_PASSWORD]; + + return { + ...kibanaCommonTestsConfig.getAll(), + + services: { + ...commonFunctionalServices, + ...commonFunctionalUIServices, + }, + + esTestCluster: { + ...xpackFunctionalTestsConfig.get('esTestCluster'), + serverArgs: [ + ...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'), + // define custom es server here + // API Keys is enabled at the top level + 'xpack.security.enabled=true', + ], + }, + + kbnTestServer: { + ...xpackFunctionalTestsConfig.get('kbnTestServer'), + sourceArgs: process.env.WATCH_ENABLED + ? [] + : [...xpackFunctionalTestsConfig.get('kbnTestServer.sourceArgs'), '--no-watch'], + serverArgs: [ + ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), + '--csp.strict=false', + '--home.disableWelcomeScreen=true', + '--csp.warnLegacyBrowsers=false', + // define custom kibana server args here + `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, + // `--elasticsearch.ignoreVersionMismatch=${process.env.CI ? 'false' : 'true'}`, + `--elasticsearch.username=kibana_system`, + `--elasticsearch.password=changeme`, + '--xpack.reporting.enabled=false', + `--xpack.uptime.service.manifestUrl=${manifestUrl}`, + `--xpack.uptime.service.username=${ + process.env.SYNTHETICS_REMOTE_ENABLED + ? serviceUsername + : 'localKibanaIntegrationTestsUser' + }`, + `--xpack.uptime.service.password=${servicePassword}`, + '--uiSettings.overrides.observability:enableLegacyUptimeApp=true', + ], + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default config; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/browser/data.json.gz b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/browser/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/browser/data.json.gz rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/browser/data.json.gz diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/browser/mappings.json b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/browser/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/browser/mappings.json rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/browser/mappings.json diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/full_heartbeat/mappings.json b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/full_heartbeat/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/full_heartbeat/mappings.json rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/full_heartbeat/mappings.json diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/synthetics_data/data.json.gz b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/synthetics_data/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/synthetics_data/data.json.gz rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/synthetics_data/data.json.gz diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/make_checks.ts b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_checks.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/helpers/make_checks.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_checks.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/make_ping.ts b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/helpers/make_ping.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/make_tls.ts b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/helpers/make_tls.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_tls.ts diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/helpers/utils.ts b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/utils.ts new file mode 100644 index 0000000000000..f340ef8b78b3a --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/utils.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { expect, Page } from '@elastic/synthetics'; + +export async function waitForLoadingToFinish({ page }: { page: Page }) { + while (true) { + if (!(await page.isVisible(byTestId('kbnLoadingMessage'), { timeout: 5000 }))) break; + await page.waitForTimeout(1000); + } +} + +export async function loginToKibana({ + page, + user, +}: { + page: Page; + user?: { username: string; password: string }; +}) { + await page.fill('[data-test-subj=loginUsername]', user?.username ?? 'elastic', { + timeout: 60 * 1000, + }); + + await page.fill('[data-test-subj=loginPassword]', user?.password ?? 'changeme'); + + await page.click('[data-test-subj=loginSubmit]'); + + await waitForLoadingToFinish({ page }); +} + +export const byTestId = (testId: string) => { + return `[data-test-subj=${testId}]`; +}; + +export const assertText = async ({ page, text }: { page: Page; text: string }) => { + const element = await page.waitForSelector(`text=${text}`); + expect(await element.isVisible()).toBeTruthy(); +}; + +export const assertNotText = async ({ page, text }: { page: Page; text: string }) => { + expect(await page.$(`text=${text}`)).toBeFalsy(); +}; + +export const getQuerystring = (params: object) => { + return Object.entries(params) + .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value)) + .join('&'); +}; + +export const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); + +export const TIMEOUT_60_SEC = { + timeout: 60 * 1000, +}; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/page_objects/login.tsx b/x-pack/solutions/observability/plugins/uptime/e2e/page_objects/login.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/page_objects/login.tsx rename to x-pack/solutions/observability/plugins/uptime/e2e/page_objects/login.tsx diff --git a/x-pack/plugins/observability_solution/uptime/e2e/page_objects/utils.tsx b/x-pack/solutions/observability/plugins/uptime/e2e/page_objects/utils.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/page_objects/utils.tsx rename to x-pack/solutions/observability/plugins/uptime/e2e/page_objects/utils.tsx diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/uptime/e2e/tsconfig.json new file mode 100644 index 0000000000000..631b6f4194445 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "exclude": ["tmp", "target/**/*"], + "include": ["**/*"], + "compilerOptions": { + "outDir": "target/types", + "types": ["node"], + "isolatedModules": false + }, + "kbn_references": [ + "@kbn/test", + "@kbn/dev-utils", + "@kbn/ux-plugin/e2e", + "@kbn/ftr-common-functional-services", + "@kbn/apm-plugin", + "@kbn/ftr-common-functional-ui-services", + "@kbn/observability-synthetics-test-data" + ] +} diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts index 2865084aa29e8..2050134a26d69 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts @@ -6,13 +6,13 @@ */ import { journey, step, before } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { assertNotText, assertText, byTestId, waitForLoadingToFinish, } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { settingsPageProvider } from '../../page_objects/settings'; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/index.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/index.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts similarity index 98% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts index b3cdfbe134935..ddd3501244109 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts @@ -7,8 +7,8 @@ import { journey, step, expect, before } from '@elastic/synthetics'; import { RetryService } from '@kbn/ftr-common-functional-services'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, assertText, waitForLoadingToFinish } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { loginPageProvider } from '../../../page_objects/login'; journey('StatusFlyoutInAlertingApp', async ({ page, params }) => { diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts similarity index 95% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts index f8ac13ff0361a..2209a1b12a803 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts @@ -6,8 +6,8 @@ */ import { journey, step, before, expect } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, assertText, waitForLoadingToFinish } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { loginPageProvider } from '../../../page_objects/login'; journey('TlsFlyoutInAlertingApp', async ({ page, params }) => { diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/data_view_permissions.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/data_view_permissions.ts similarity index 96% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/data_view_permissions.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/data_view_permissions.ts index f8b74dabc027b..ee3ead7d615c4 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/data_view_permissions.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/data_view_permissions.ts @@ -7,8 +7,8 @@ import { journey, step, expect, before } from '@elastic/synthetics'; import { callKibana } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/helpers/call_kibana'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../../helpers/utils'; -import { recordVideo } from '../../helpers/record_video'; import { loginPageProvider } from '../../page_objects/login'; journey('DataViewPermissions', async ({ page, params }) => { diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/index.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/index.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/index.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/index.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/locations.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/locations.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/locations.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/locations.ts index afb5ebf0c04a1..efda8352d93b1 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/locations.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/locations.ts @@ -6,7 +6,7 @@ */ import { journey, step, before, Page } from '@elastic/synthetics'; -import { recordVideo } from '../../../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { makeChecksWithStatus } from '../../../helpers/make_checks'; import { monitorDetailsPageProvider } from '../../page_objects/monitor_details'; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/index.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/index.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts index 88a174f76cc59..6e5ed114d72de 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts @@ -7,8 +7,8 @@ import { journey, step, expect, before, Page } from '@elastic/synthetics'; import { noop } from 'lodash'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, delay } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { monitorDetailsPageProvider } from '../../page_objects/monitor_details'; const dateRangeStart = '2019-09-10T12:40:08.078Z'; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts index f46081c7b3823..b54d462cdfaa3 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts @@ -6,8 +6,8 @@ */ import { journey, step, before, Page } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { monitorDetailsPageProvider } from '../../page_objects/monitor_details'; const dateRangeStart = '2019-09-10T12:40:08.078Z'; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts index 502217721381d..d90438721715a 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts @@ -6,8 +6,8 @@ */ import { journey, step, expect, before, Page } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, delay } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { makeChecksWithStatus } from '../../../helpers/make_checks'; import { monitorDetailsPageProvider } from '../../page_objects/monitor_details'; diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/step_duration.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/step_duration.journey.ts new file mode 100644 index 0000000000000..41f31681fd06f --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/step_duration.journey.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { journey, step, expect } from '@elastic/synthetics'; +import { RetryService } from '@kbn/ftr-common-functional-services'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; +import { loginPageProvider } from '../../page_objects/login'; + +journey('StepsDuration', async ({ page, params }) => { + recordVideo(page); + + const retry: RetryService = params.getService('retry'); + + const login = loginPageProvider({ page }); + + const queryParams = new URLSearchParams({ + dateRangeStart: '2021-11-21T22:06:06.502Z', + dateRangeEnd: '2021-11-21T22:10:08.203Z', + }).toString(); + + const baseUrl = `${params.kibanaUrl}/app/uptime`; + + step('Go to uptime', async () => { + await page.goto(`${baseUrl}?${queryParams}`, { + waitUntil: 'networkidle', + }); + await login.loginToKibana(); + }); + + step('Go to monitor details', async () => { + await page.click('text="test-monitor - inline"'); + expect(page.url()).toBe(`${baseUrl}/monitor/dGVzdC1tb25pdG9yLWlubGluZQ==/?${queryParams}`); + }); + + step('Go to journey details', async () => { + await page.click('text=18 seconds'); + expect(page.url()).toBe(`${baseUrl}/journey/9f217c22-4b17-11ec-b976-aa665a54da40/steps`); + }); + + step('Check for monitor duration', async () => { + await retry.tryForTime(90 * 1000, async () => { + await page.click('text="6 Steps - 3 succeeded"'); + await page.waitForTimeout(2 * 1000); + await page.hover('text=8.9 sec'); + await page.waitForSelector('text=Explore'); + expect(await page.$('text=Explore')).toBeTruthy(); + await page.waitForSelector('text=area chart'); + expect(await page.$('text=area chart')).toBeTruthy(); + }); + }); +}); diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/uptime.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/uptime.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/uptime.journey.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/uptime.journey.ts index 81559169deff3..f27cd3acba3cf 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/uptime.journey.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/uptime.journey.ts @@ -6,8 +6,8 @@ */ import { journey, step, before } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, waitForLoadingToFinish } from '../../helpers/utils'; -import { recordVideo } from '../../helpers/record_video'; journey('UptimeOverview', ({ page, params }) => { recordVideo(page); diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/page_objects/monitor_details.tsx b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/page_objects/monitor_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/page_objects/monitor_details.tsx rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/page_objects/monitor_details.tsx diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/page_objects/settings.tsx b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/page_objects/settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/page_objects/settings.tsx rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/page_objects/settings.tsx diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/uptime/synthetics_run.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/synthetics_run.ts new file mode 100644 index 0000000000000..26a3b9e2e27bb --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/synthetics_run.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { FtrConfigProviderContext } from '@kbn/test'; +import path from 'path'; +import { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; + +const { headless, grep, bail: pauseOnError } = argv; + +async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { + const kibanaConfig = await readConfigFile(require.resolve('../config.ts')); + return { + ...kibanaConfig.getAll(), + testRunner: async ({ getService }: any) => { + const syntheticsRunner = new SyntheticsRunner(getService, { + headless, + match: grep, + pauseOnError, + }); + + await syntheticsRunner.setup(); + const fixturesDir = path.join(__dirname, '../fixtures/es_archiver/'); + + await syntheticsRunner.loadTestData(fixturesDir, [ + 'synthetics_data', + 'full_heartbeat', + 'browser', + ]); + + await syntheticsRunner.loadTestFiles(async (reload) => { + if (reload) { + const dirPath = require.resolve('./journeys').replace('index.ts', ''); + Object.keys(require.cache).forEach(function (key) { + if (key.startsWith(dirPath)) { + delete require.cache[key]; + } + }); + } + require(path.join(__dirname, './journeys')); + }); + + await syntheticsRunner.run(); + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default runE2ETests; diff --git a/x-pack/solutions/observability/plugins/uptime/jest.config.js b/x-pack/solutions/observability/plugins/uptime/jest.config.js new file mode 100644 index 0000000000000..25cbce3066e46 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/uptime'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/observability/plugins/uptime', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/uptime/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/uptime/kibana.jsonc b/x-pack/solutions/observability/plugins/uptime/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/uptime/kibana.jsonc rename to x-pack/solutions/observability/plugins/uptime/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/uptime/public/index.ts b/x-pack/solutions/observability/plugins/uptime/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/kibana_services.ts b/x-pack/solutions/observability/plugins/uptime/public/kibana_services.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/kibana_services.ts rename to x-pack/solutions/observability/plugins/uptime/public/kibana_services.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/render_app.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/render_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/render_app.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/render_app.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_app.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_app.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_overview_fetcher.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_overview_fetcher.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_overview_fetcher.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_overview_fetcher.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_page_template.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_page_template.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_page_template.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_page_template.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/use_no_data_config.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/use_no_data_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/use_no_data_config.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/use_no_data_config.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_monitors.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_monitors.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_monitors.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_monitors.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_search.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_search.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_search.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_search.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_status.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_status.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_status.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_status.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_monitors.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_monitors.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_monitors.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_monitors.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_monitors.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_monitors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_monitors.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_monitors.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_refresh_btn.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_refresh_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_refresh_btn.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_refresh_btn.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_search.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_search.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_search.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_search.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_search.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_search.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_search.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_status.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_status.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_status.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_status.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificate_title.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificate_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificate_title.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificate_title.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificates_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificates_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/fingerprint_col.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/fingerprint_col.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/fingerprint_col.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/fingerprint_col.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/fingerprint_col.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/fingerprint_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/fingerprint_col.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/fingerprint_col.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/use_cert_search.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/use_cert_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/use_cert_search.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/use_cert_search.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/location_link.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/location_link.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/location_link.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/location_link.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_page_link.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_page_link.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_page_link.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_page_link.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_tags.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_tags.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_tags.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_tags.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/alerts/uptime_edit_alert_flyout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/alerts/uptime_edit_alert_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/alerts/uptime_edit_alert_flyout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/alerts/uptime_edit_alert_flyout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_empty_state.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_empty_state.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_empty_state.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_empty_state.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_wrapper.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_wrapper.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_wrapper.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_wrapper.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart_legend_row.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart_legend_row.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart_legend_row.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart_legend_row.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/monitor_bar_series.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/monitor_bar_series.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/monitor_bar_series.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/monitor_bar_series.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/annotation_tooltip.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/annotation_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/annotation_tooltip.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/annotation_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/chart_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/chart_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/chart_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/chart_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_charts.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_charts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_charts.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_charts.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_line_series_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_series_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_line_series_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_series_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/get_tick_format.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/get_tick_format.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/get_tick_format.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/get_tick_format.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/get_tick_format.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/get_tick_format.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/get_tick_format.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/get_tick_format.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/ping_histogram.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/ping_histogram.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/ping_histogram.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/ping_histogram.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/ping_histogram.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/ping_histogram.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/ping_histogram.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/ping_histogram.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/utils.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/utils.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/utils.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/utils.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/utils.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/utils.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu_content.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu_content.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/inspector_header_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/inspector_header_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/inspector_header_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/inspector_header_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/manage_monitors_btn.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/manage_monitors_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/manage_monitors_btn.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/manage_monitors_btn.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/location_link.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/location_link.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/location_link.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/location_link.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/location_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/location_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/location_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/location_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_page_link.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_page_link.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_page_link.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_page_link.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_page_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_page_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_page_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_page_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_tags.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_tags.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_tags.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_tags.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_tags.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_tags.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_tags.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_tags.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/step_detail_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/step_detail_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/step_detail_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/step_detail_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/uptime_date_picker.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/uptime_date_picker.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/deprecate_notice_modal.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/deprecate_notice_modal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/deprecate_notice_modal.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/deprecate_notice_modal.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/index.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/index.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/index.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_custom_assets_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_custom_assets_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_custom_assets_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_custom_assets_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_create_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_create_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_create_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_create_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_edit_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_edit_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_edit_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_edit_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_custom_assets_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_custom_assets_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_custom_assets_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_custom_assets_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_edit_policy_extension_wrapper.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_edit_policy_extension_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_edit_policy_extension_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_edit_policy_extension_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/use_edit_monitor_locator.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/use_edit_monitor_locator.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/use_edit_monitor_locator.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/use_edit_monitor_locator.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/__snapshots__/monitor_charts.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/__snapshots__/monitor_charts.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/__snapshots__/monitor_charts.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/__snapshots__/monitor_charts.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/confirm_delete.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/confirm_delete.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/confirm_delete.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/confirm_delete.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/ml_integerations.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/ml_integerations.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/ml_integerations.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/ml_integerations.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_alert_delete.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_alert_delete.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_alert_delete.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_alert_delete.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/license_info.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/license_info.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/license_info.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/license_info.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/license_info.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/license_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/license_info.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/license_info.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/manage_ml_job.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/manage_ml_job.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/manage_ml_job.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/manage_ml_job.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_integeration.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_integeration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_integeration.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_integeration.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_integerations.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_integerations.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_integerations.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_integerations.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_manage_job.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_manage_job.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_manage_job.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_manage_job.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/translations.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/translations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/translations.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/translations.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/use_anomaly_alert.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/use_anomaly_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/use_anomaly_alert.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/use_anomaly_alert.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_charts.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_charts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_charts.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_charts.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_charts.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_charts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_charts.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_charts.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_title.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_title.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_title.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_title.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_title.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_title.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_title.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_histogram/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_histogram/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_histogram/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_histogram/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_histogram/ping_histogram_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_histogram/ping_histogram_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_histogram/ping_histogram_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_histogram/ping_histogram_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/failed_step.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/failed_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/failed_step.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/failed_step.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_error.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_error.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_error.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts index bc85b45857c23..9d3e14431f6bb 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts @@ -45,7 +45,6 @@ export const useInProgressImage = ({ if (hasIntersected && !hasImage) return getJourneyScreenshot(imgPath); // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [hasIntersected, imgPath, skippedStep, retryLoading]); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/response_code.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/response_code.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/response_code.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/response_code.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/headers.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/headers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/headers.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/headers.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/index.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/index.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/index.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/location_name.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/location_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/location_name.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/location_name.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_headers.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_headers.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_headers.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_headers.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_header.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_header.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_header.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_redirects.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_redirects.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_redirects.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_redirects.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/response_code.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/response_code.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/response_code.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/response_code.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/use_pings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/use_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/use_pings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/use_pings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/status_by_location.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/status_by_location.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/status_by_location.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/status_by_location.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/__snapshots__/tag_label.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/__snapshots__/tag_label.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/__snapshots__/tag_label.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/__snapshots__/tag_label.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/monitor_status.bar.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/monitor_status.bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/monitor_status.bar.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/monitor_status.bar.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/ssl_certificate.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/ssl_certificate.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/ssl_certificate.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/ssl_certificate.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/monitor_redirects.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/monitor_redirects.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/monitor_redirects.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/monitor_redirects.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/ssl_certificate.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/ssl_certificate.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/ssl_certificate.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/ssl_certificate.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_by_location.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_by_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_by_location.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_by_location.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/use_status_bar.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/use_status_bar.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/use_status_bar.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/use_status_bar.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_by_location.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_by_location.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_by_location.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_by_location.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_details.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_details.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_details.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_details_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_details_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_details_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_details_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_detail_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_detail_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_detail_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_detail_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_nav.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_nav.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_nav.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_nav.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_title.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_title.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_title.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumb.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumb.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumb.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumb.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumbs.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumbs.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumbs.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumbs.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/README.md b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/README.md similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/README.md rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/README.md diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/constants.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/constants.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/constants.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/legend.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/legend.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/legend.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/sidebar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/sidebar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/sidebar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/sidebar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart_fixed_axis.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart_fixed_axis.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart_fixed_axis.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart_fixed_axis.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_flyout_table.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_flyout_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_flyout_table.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_flyout_table.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_test_helper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_test_helper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_test_helper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_test_helper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_markers.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_markers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_markers.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_markers.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/context/waterfall_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/context/waterfall_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/context/waterfall_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/context/waterfall_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/index.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/index.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/index.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/__snapshots__/snapshot_heading.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/__snapshots__/snapshot_heading.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/__snapshots__/snapshot_heading.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/__snapshots__/snapshot_heading.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_expression_popover.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_expression_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_expression_popover.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_expression_popover.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_query_bar/query_bar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_query_bar/query_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_query_bar/query_bar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_query_bar/query_bar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_tls.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_tls.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_tls.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_monitor_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_monitor_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_tls.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_tls.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_tls.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/uptime_alerts_flyout_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/uptime_alerts_flyout_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/uptime_alerts_flyout_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/uptime_alerts_flyout_wrapper.tsx diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts new file mode 100644 index 0000000000000..99f5aae823777 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { useGenerateUpdatedKueryString } from '../../../../hooks'; +import { fetchSnapshotCount } from '../../../../state/api'; + +export const useSnapShotCount = ({ query, filters }: { query: string; filters?: [] | string }) => { + const parsedFilters = + filters === undefined || typeof filters === 'string' + ? '' + : JSON.stringify(Array.from(Object.entries(filters))); + + const [esKuery, error] = useGenerateUpdatedKueryString(query, parsedFilters, undefined, true); + + const { data, loading } = useFetcher( + () => + fetchSnapshotCount({ + dateRangeStart: 'now-24h', + dateRangeEnd: 'now', + filters: error ? undefined : esKuery, + }), + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + + [esKuery, query] + ); + + return { count: data || { total: 0, up: 0, down: 0 }, loading }; +}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/anomaly_alert.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/anomaly_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/anomaly_alert.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/anomaly_alert.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/down_number_select.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/down_number_select.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/down_number_select.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/down_number_select.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/availability_expression_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/availability_expression_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/availability_expression_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/availability_expression_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/status_expression_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/status_expression_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/status_expression_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/status_expression_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_unit_selectable.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_unit_selectable.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_unit_selectable.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_unit_selectable.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_call_out.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_call_out.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_call_out.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_call_out.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_callout.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_callout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_callout.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_callout.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/uptime_alerts_flyout_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/uptime_alerts_flyout_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/uptime_alerts_flyout_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/uptime_alerts_flyout_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_error.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_error.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_error.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_loading.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_loading.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_loading.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_loading.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/use_has_data.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/use_has_data.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/use_has_data.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/use_has_data.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/selected_filters.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/selected_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/selected_filters.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/selected_filters.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/translations.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/translations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/translations.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/translations.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/index.ts diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx new file mode 100644 index 0000000000000..629fa01a034a4 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useEffect } from 'react'; +import { EuiSpacer } from '@elastic/eui'; +import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { useSelector } from 'react-redux'; +import { getHasIntegrationMonitors } from '../../../state/api/has_integration_monitors'; +import { monitorListSelector } from '../../../state/selectors'; +import { IntegrationDeprecationCallout } from './integration_deprecation_callout'; + +export const INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY = + 'SYNTHETICS_INTEGRATION_DEPRECATION_HAS_BEEN_DISMISSED'; + +export const IntegrationDeprecation = () => { + const monitorList = useSelector(monitorListSelector); + const noticeHasBeenDismissed = + window.sessionStorage.getItem(INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY) === 'true'; + const { data, loading } = useFetcher(() => { + // load it when list is loaded + if (!noticeHasBeenDismissed && monitorList.isLoaded) { + return getHasIntegrationMonitors(); + } + return undefined; + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + }, [monitorList.isLoaded]); + const hasIntegrationMonitors = !loading && data && data.hasIntegrationMonitors; + const [shouldShowNotice, setShouldShowNotice] = useState( + Boolean(hasIntegrationMonitors && !noticeHasBeenDismissed) + ); + + const handleDismissDeprecationNotice = () => { + window.sessionStorage.setItem(INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY, 'true'); + setShouldShowNotice(false); + }; + + useEffect(() => { + setShouldShowNotice(Boolean(hasIntegrationMonitors && !noticeHasBeenDismissed)); + }, [hasIntegrationMonitors, noticeHasBeenDismissed]); + + return shouldShowNotice ? ( + <> + + + + ) : null; +}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation_callout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation_callout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation_callout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/cert_status_column.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/cert_status_column.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/cert_status_column.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/cert_status_column.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_group.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_group.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_group.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_group.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_link.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_link.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_link.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_link.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/monitor_list_drawer.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/monitor_list_drawer.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/monitor_list_drawer.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/monitor_list_drawer.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/data.json b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/data.json similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/data.json rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/data.json diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/enabled_alerts.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/enabled_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/enabled_alerts.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/enabled_alerts.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_group.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_group.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_group.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_group.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_link.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_link.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_link.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_link.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/list_drawer_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/list_drawer_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/list_drawer_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/list_drawer_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_url.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_url.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_url.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_url.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_run.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_run.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_run.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_run.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_header.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_header.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_header.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_meesage.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_meesage.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_meesage.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_meesage.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_message.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_message.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_message.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_message.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/overview_page_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/overview_page_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/overview_page_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/overview_page_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/troubleshoot_popover.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/troubleshoot_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/troubleshoot_popover.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/troubleshoot_popover.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/query_bar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/query_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/query_bar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/query_bar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/__snapshots__/snapshot.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/__snapshots__/snapshot.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/__snapshots__/snapshot.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/__snapshots__/snapshot.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot_heading.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot_heading.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot_heading.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot_heading.tsx diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts new file mode 100644 index 0000000000000..af14d8f78289d --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useContext } from 'react'; +import { useSelector } from 'react-redux'; +import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { useGetUrlParams } from '../../../hooks'; +import { esKuerySelector } from '../../../state/selectors'; +import { UptimeRefreshContext } from '../../../contexts'; +import { fetchSnapshotCount } from '../../../state/api'; + +export const useSnapShotCount = () => { + const { dateRangeStart, dateRangeEnd, query } = useGetUrlParams(); + + const { lastRefresh } = useContext(UptimeRefreshContext); + + const esKuery = useSelector(esKuerySelector); + + const { data, loading } = useFetcher( + () => fetchSnapshotCount({ query, dateRangeStart, dateRangeEnd, filters: esKuery }), + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + + [dateRangeStart, dateRangeEnd, esKuery, lastRefresh, query] + ); + + return { count: data || { total: 0, up: 0, down: 0 }, loading }; +}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot_heading.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot_heading.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot_heading.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot_heading.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/status_panel.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/status_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/status_panel.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/status_panel.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/__snapshots__/certificate_form.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/__snapshots__/certificate_form.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/__snapshots__/certificate_form.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/__snapshots__/certificate_form.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/__snapshots__/indices_form.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/__snapshots__/indices_form.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/__snapshots__/indices_form.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/__snapshots__/indices_form.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/add_connector_flyout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/add_connector_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/add_connector_flyout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/add_connector_flyout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/alert_defaults_form.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/alert_defaults_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/alert_defaults_form.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/alert_defaults_form.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/certificate_form.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/certificate_form.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/certificate_form.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/certificate_form.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/certificate_form.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/certificate_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/certificate_form.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/certificate_form.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/default_email.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/default_email.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/default_email.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/default_email.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/indices_form.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/indices_form.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/indices_form.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/indices_form.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/indices_form.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/indices_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/indices_form.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/indices_form.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/settings_actions.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/settings_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/settings_actions.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/settings_actions.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/settings_bottom_bar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/settings_bottom_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/settings_bottom_bar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/settings_bottom_bar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/use_settings_errors.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/use_settings_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/use_settings_errors.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/use_settings_errors.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx similarity index 98% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx index 7eab37d2b9afe..af4c1ed3915ac 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx @@ -92,7 +92,6 @@ export const StdErrorLogs = ({ return ''; // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [checkGroup, timestamp]); const search = { diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_duration.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_duration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_duration.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_duration.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx similarity index 98% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx index 606019c99429d..6af149efe453f 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx @@ -42,7 +42,6 @@ export const StepScreenshots = ({ step }: Props) => { } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [step._id, step['@timestamp']]); const lastSuccessfulCheck: Ping | undefined = data; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_image.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_image.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_image.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_image.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_check_steps.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_check_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_check_steps.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_check_steps.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_std_error_logs.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_std_error_logs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_std_error_logs.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_std_error_logs.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/code_block_accordion.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/code_block_accordion.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/code_block_accordion.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/code_block_accordion.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_event.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_event.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_event.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_event.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_event.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_event.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_event.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_event.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/empty_journey.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/empty_journey.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/empty_journey.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/empty_journey.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/empty_journey.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/empty_journey.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/empty_journey.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/empty_journey.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/executed_step.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/executed_step.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/executed_step.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/executed_step.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/executed_step.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/executed_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/executed_step.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/executed_step.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/status_badge.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/status_badge.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/status_badge.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/status_badge.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/status_badge.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/status_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/status_badge.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/status_badge.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx similarity index 99% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx index b7d2f6d85fe2b..2e5b8aac0d720 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx @@ -137,7 +137,6 @@ export const StepScreenshotDisplay: FC = ({ } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [basePath, checkGroup, imgSrc, stepIndex, isScreenshotRef, lastRefresh]); const refDimensions = useMemo(() => { diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx similarity index 96% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx index 7abbdf3fde8c8..e3fb9f4b3bb3b 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx @@ -28,7 +28,6 @@ export const UptimeDataViewContextProvider: FC< } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [heartbeatIndices, indexStatus?.indexExists]); return ; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_refresh_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_refresh_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_refresh_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_refresh_context.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_settings_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_settings_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_settings_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_settings_context.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_startup_plugins_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_startup_plugins_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_startup_plugins_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_startup_plugins_context.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_theme_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_theme_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_theme_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_theme_context.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/__snapshots__/use_url_params.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/__snapshots__/use_url_params.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/__snapshots__/use_url_params.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/__snapshots__/use_url_params.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_base_chart_theme.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_base_chart_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_base_chart_theme.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_base_chart_theme.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_breadcrumbs.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_breadcrumbs.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_breadcrumbs.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_breadcrumbs.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_cert_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_cert_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_cert_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_cert_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_composite_image.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_composite_image.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_composite_image.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_composite_image.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_composite_image.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_composite_image.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_composite_image.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_composite_image.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_filter_update.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_filter_update.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_filter_update.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_filter_update.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_filter_update.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_filter_update.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_filter_update.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_filter_update.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_init_app.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_init_app.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_init_app.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_init_app.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_mapping_check.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_mapping_check.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_mapping_check.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_mapping_check.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_mapping_check.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_mapping_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_mapping_check.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_mapping_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_overview_filter_check.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_overview_filter_check.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_overview_filter_check.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_overview_filter_check.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_overview_filter_check.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_overview_filter_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_overview_filter_check.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_overview_filter_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_search_text.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_search_text.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_search_text.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_search_text.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_selected_filters.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_selected_filters.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_selected_filters.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_selected_filters.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_selected_filters.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_selected_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_selected_filters.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_selected_filters.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_update_kuery_string.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_update_kuery_string.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_update_kuery_string.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_update_kuery_string.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_url_params.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_url_params.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_url_params.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_url_params.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_url_params.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_url_params.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_url_params.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/legacy_screenshot_ref.mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/legacy_screenshot_ref.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/legacy_screenshot_ref.mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/legacy_screenshot_ref.mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/legacy_use_composite_image.mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/legacy_use_composite_image.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/legacy_use_composite_image.mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/legacy_use_composite_image.mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/uptime_plugin_start_mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/uptime_plugin_start_mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/uptime_plugin_start_mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/uptime_plugin_start_mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/uptime_store.mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/uptime_store.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/uptime_store.mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/uptime_store.mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/ut_router_history.mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/ut_router_history.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/ut_router_history.mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/ut_router_history.mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/adapters/framework/capabilities_adapter.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/adapters/framework/capabilities_adapter.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/adapters/framework/capabilities_adapter.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/adapters/framework/capabilities_adapter.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/common.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/common.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/common.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/duration_anomaly.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/duration_anomaly.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/duration_anomaly.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/duration_anomaly.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/duration_anomaly.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/duration_anomaly.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/duration_anomaly.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/duration_anomaly.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/monitor_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/monitor_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/tls_alert.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/tls_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/tls_alert.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/tls_alert.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_tls_alert.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_tls_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_tls_alert.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_tls_alert.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/monitor_status.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/monitor_status.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/monitor_status.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/monitor_status.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/monitor_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/monitor_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/tls.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/tls.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/tls.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/tls_legacy.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/tls_legacy.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/tls_legacy.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/tls_legacy.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/formatting.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/formatting.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/formatting.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/formatting.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_chart_date_label.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_chart_date_label.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_chart_date_label.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_chart_date_label.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/convert_measurements.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/convert_measurements.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/convert_measurements.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/convert_measurements.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/convert_measurements.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/convert_measurements.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/convert_measurements.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/convert_measurements.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/enzyme_helpers.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/enzyme_helpers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/enzyme_helpers.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/enzyme_helpers.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/helper_with_redux.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/helper_with_redux.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/helper_with_redux.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/helper_with_redux.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/add_base_path.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/add_base_path.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/add_base_path.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/add_base_path.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/build_href.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/build_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/build_href.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/build_href.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/parse_search.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/parse_search.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/parse_search.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/parse_search.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/parse_search.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/parse_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/parse_search.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/parse_search.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/series_has_down_values.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/series_has_down_values.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/series_has_down_values.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/series_has_down_values.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/series_has_down_values.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/series_has_down_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/series_has_down_values.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/series_has_down_values.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/test_helpers.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/test_helpers.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/__snapshots__/get_supported_url_params.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/__snapshots__/get_supported_url_params.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/__snapshots__/get_supported_url_params.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/__snapshots__/get_supported_url_params.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/stringify_url_params.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/stringify_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/stringify_url_params.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/stringify_url_params.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/lib.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/lib.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/lib.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/lib.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/certificates.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/certificates.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/certificates.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/certificates.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/mapping_error.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/mapping_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/mapping_error.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/mapping_error.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/monitor.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/monitor.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/monitor.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/monitor.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/monitor.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/monitor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/monitor.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/monitor.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/not_found.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/not_found.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/not_found.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/not_found.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/not_found.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/not_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/not_found.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/not_found.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/overview.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/overview.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/overview.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/overview.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/overview.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/overview.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/overview.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/settings.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/settings.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/settings.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/settings.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/settings.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/settings.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/settings.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/checks_navigation.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/checks_navigation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/checks_navigation.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/checks_navigation.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/step_detail_page.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/step_detail_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/step_detail_page.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/step_detail_page.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/routes.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/routes.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/routes.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/routes.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/index_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/index_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/journey.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/journey.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/journey.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ml_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ml_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ml_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ml_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/network_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ping.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ping.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/selected_filters.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/selected_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/selected_filters.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/selected_filters.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/snapshot.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/snapshot.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/snapshot.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/snapshot.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ui.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ui.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ui.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ui.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/utils.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/utils.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/utils.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/alerts/alerts.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/alerts/alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/alerts/alerts.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/alerts/alerts.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/__snapshots__/snapshot.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/__snapshots__/snapshot.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/__snapshots__/snapshot.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/__snapshots__/snapshot.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/alerts.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/alerts.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/alerts.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/has_integration_monitors.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/has_integration_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/has_integration_monitors.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/has_integration_monitors.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/index_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/index_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/journey.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/journey.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/journey.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/ml_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/ml_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/ml_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/ml_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/network_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/ping.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/ping.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/snapshot.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/snapshot.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/snapshot.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/snapshot.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/snapshot.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/snapshot.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/snapshot.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/snapshot.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/utils.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/utils.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/utils.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/certificates/certificates.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/certificates/certificates.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/certificates/certificates.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/certificates/certificates.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/fetch_effect.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/fetch_effect.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/fetch_effect.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/fetch_effect.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/fetch_effect.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/fetch_effect.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/fetch_effect.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/fetch_effect.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/index_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/index_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/journey.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/journey.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/journey.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/journey.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/journey.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/journey.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/journey.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/ml_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/ml_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/ml_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/ml_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/network_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/ping.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/ping.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/synthetic_journey_blocks.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/synthetic_journey_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/synthetic_journey_blocks.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/synthetic_journey_blocks.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/kibana_service.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/kibana_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/kibana_service.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/kibana_service.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/index_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/index_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/journey.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/journey.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/journey.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ml_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ml_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ml_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ml_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_status.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_status.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_status.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_status.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/network_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ping.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ping.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ping_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ping_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ping_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ping_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/selected_filters.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/selected_filters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/selected_filters.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/selected_filters.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/selected_filters.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/selected_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/selected_filters.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/selected_filters.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/synthetics.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/synthetics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/synthetics.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/synthetics.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/synthetics.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/synthetics.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/synthetics.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/synthetics.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ui.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ui.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ui.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ui.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ui.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ui.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ui.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ui.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/utils.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/utils.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/utils.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/selectors/index.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/selectors/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/selectors/index.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/selectors/index.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/selectors/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/selectors/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/selectors/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/selectors/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/locators/overview.test.ts b/x-pack/solutions/observability/plugins/uptime/public/locators/overview.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/locators/overview.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/locators/overview.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/locators/overview.ts b/x-pack/solutions/observability/plugins/uptime/public/locators/overview.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/locators/overview.ts rename to x-pack/solutions/observability/plugins/uptime/public/locators/overview.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/plugin.ts b/x-pack/solutions/observability/plugins/uptime/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/plugin.ts rename to x-pack/solutions/observability/plugins/uptime/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/utils/api_service/api_service.ts b/x-pack/solutions/observability/plugins/uptime/public/utils/api_service/api_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/utils/api_service/api_service.ts rename to x-pack/solutions/observability/plugins/uptime/public/utils/api_service/api_service.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/utils/api_service/index.ts b/x-pack/solutions/observability/plugins/uptime/public/utils/api_service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/utils/api_service/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/utils/api_service/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/utils/kibana_service/index.ts b/x-pack/solutions/observability/plugins/uptime/public/utils/kibana_service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/utils/kibana_service/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/utils/kibana_service/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/utils/kibana_service/kibana_service.ts b/x-pack/solutions/observability/plugins/uptime/public/utils/kibana_service/kibana_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/utils/kibana_service/kibana_service.ts rename to x-pack/solutions/observability/plugins/uptime/public/utils/kibana_service/kibana_service.ts diff --git a/x-pack/plugins/observability_solution/uptime/scripts/base_e2e.js b/x-pack/solutions/observability/plugins/uptime/scripts/base_e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/uptime/scripts/base_e2e.js rename to x-pack/solutions/observability/plugins/uptime/scripts/base_e2e.js diff --git a/x-pack/plugins/observability_solution/uptime/scripts/uptime_e2e.js b/x-pack/solutions/observability/plugins/uptime/scripts/uptime_e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/uptime/scripts/uptime_e2e.js rename to x-pack/solutions/observability/plugins/uptime/scripts/uptime_e2e.js diff --git a/x-pack/plugins/observability_solution/uptime/server/constants/settings.ts b/x-pack/solutions/observability/plugins/uptime/server/constants/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/constants/settings.ts rename to x-pack/solutions/observability/plugins/uptime/server/constants/settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/index.ts b/x-pack/solutions/observability/plugins/uptime/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/framework/adapter_types.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/framework/adapter_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/framework/adapter_types.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/framework/adapter_types.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/framework/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/framework/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/framework/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/framework/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/action_variables.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/action_variables.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/action_variables.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/action_variables.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/common.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/common.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/common.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/common.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/common.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/common.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/status_check.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/status_check.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/status_check.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/status_check.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/test_utils/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/test_utils/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/test_utils/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/test_utils/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls_legacy.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls_legacy.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/translations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/translations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/types.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/types.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/__snapshots__/license.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/__snapshots__/license.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/__snapshots__/license.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/__snapshots__/license.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/license.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/license.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/license.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/license.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/license.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/license.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/license.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/license.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/__snapshots__/get_filter_clause.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/__snapshots__/get_filter_clause.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/__snapshots__/get_filter_clause.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/__snapshots__/get_filter_clause.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/get_filter_clause.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/get_filter_clause.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/get_filter_clause.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/get_filter_clause.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/get_filter_clause.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/get_filter_clause.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/get_filter_clause.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/get_filter_clause.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/make_date_rate_filter.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/make_date_rate_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/make_date_rate_filter.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/make_date_rate_filter.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/object_to_array.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/object_to_array.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/object_to_array.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/object_to_array.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/parse_relative_date.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/parse_relative_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/parse_relative_date.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/parse_relative_date.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/lib.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/lib.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/lib.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/lib.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/lib.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/lib.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/lib.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/lib.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/generate_filter_aggs.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/generate_filter_aggs.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/generate_filter_aggs.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/generate_filter_aggs.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_details.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_details.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_details.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_details.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_duration.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_duration.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_duration.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_duration.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_ping_histogram.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_ping_histogram.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_ping_histogram.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_ping_histogram.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_certs.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_certs.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_certs.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_certs.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_certs.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_certs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_certs.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_certs.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_index_pattern.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_index_pattern.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_index_pattern.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_index_pattern.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_index_status.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_index_status.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_details.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_details.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_details.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_details.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_details.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_details.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_details.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_steps.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_steps.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_steps.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_steps.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_steps.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_steps.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_steps.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_details.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_details.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_details.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_details.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_details.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_details.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_details.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_locations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_locations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_locations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_states.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_states.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_states.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_states.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_status.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_status.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_status.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_status.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_network_events.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_network_events.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_network_events.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_network_events.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_network_events.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_network_events.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_pings.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_pings.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_pings.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_pings.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_pings.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_pings.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_pings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_snapshot_counts.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_snapshot_counts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_snapshot_counts.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_snapshot_counts.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/fetch_chunk.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/fetch_chunk.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/fetch_chunk.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/fetch_chunk.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/find_potential_matches.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/find_potential_matches.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/find_potential_matches.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/find_potential_matches.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/query_context.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/query_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/query_context.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/query_context.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/refine_potential_matches.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/refine_potential_matches.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/refine_potential_matches.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/refine_potential_matches.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/test_helpers.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/test_helpers.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/types.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/types.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/test_helpers.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/test_helpers.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/migrations.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/migrations.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/migrations.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/migrations.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/migrations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/migrations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/migrations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/migrations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/saved_objects.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/saved_objects.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/saved_objects.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/saved_objects.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/create_route_with_auth.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/create_route_with_auth.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/create_route_with_auth.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/create_route_with_auth.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index_state/get_index_status.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index_state/get_index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index_state/get_index_status.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index_state/get_index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index_state/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index_state/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index_state/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index_state/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_locations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_locations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_locations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitors_details.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitors_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitors_details.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitors_details.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitors_durations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitors_durations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitors_durations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitors_durations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/network_events/get_network_events.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/network_events/get_network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/network_events/get_network_events.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/network_events/get_network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/network_events/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/network_events/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/network_events/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/network_events/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/get_ping_histogram.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/get_ping_histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/get_ping_histogram.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/get_ping_histogram.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/get_pings.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/get_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/get_pings.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/get_pings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshots.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshots.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshots.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshots.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshots.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshots.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshots.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshots.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journeys.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journeys.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journeys.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journeys.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/snapshot/get_snapshot_count.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/snapshot/get_snapshot_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/snapshot/get_snapshot_count.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/snapshot/get_snapshot_count.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/snapshot/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/snapshot/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/snapshot/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/snapshot/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/synthetics/last_successful_check.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/synthetics/last_successful_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/synthetics/last_successful_check.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/synthetics/last_successful_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/types.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/types.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/uptime_route_wrapper.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/uptime_route_wrapper.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/uptime_route_wrapper.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/uptime_route_wrapper.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/plugin.ts b/x-pack/solutions/observability/plugins/uptime/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/plugin.ts rename to x-pack/solutions/observability/plugins/uptime/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/runtime_types/settings.ts b/x-pack/solutions/observability/plugins/uptime/server/runtime_types/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/runtime_types/settings.ts rename to x-pack/solutions/observability/plugins/uptime/server/runtime_types/settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/types.ts b/x-pack/solutions/observability/plugins/uptime/server/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/types.ts rename to x-pack/solutions/observability/plugins/uptime/server/types.ts diff --git a/x-pack/solutions/observability/plugins/uptime/tsconfig.json b/x-pack/solutions/observability/plugins/uptime/tsconfig.json new file mode 100644 index 0000000000000..5de407dc03b8c --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/tsconfig.json @@ -0,0 +1,84 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "scripts/**/*", + "public/**/*", + "public/legacy_uptime/components/monitor/status_details/location_map/embeddables/low_poly_layer.json", + "server/**/*", + "server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/config-schema", + "@kbn/i18n", + "@kbn/fleet-plugin", + "@kbn/alerting-plugin", + "@kbn/datemath", + "@kbn/stack-connectors-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/kibana-react-plugin", + "@kbn/observability-shared-plugin", + "@kbn/observability-plugin", + "@kbn/i18n-react", + "@kbn/shared-ux-page-kibana-template", + "@kbn/test-jest-helpers", + "@kbn/ml-anomaly-utils", + "@kbn/exploratory-view-plugin", + "@kbn/ml-plugin", + "@kbn/rison", + "@kbn/shared-ux-router", + "@kbn/unified-search-plugin", + "@kbn/core-http-browser", + "@kbn/es-query", + "@kbn/data-views-plugin", + "@kbn/ui-theme", + "@kbn/rule-data-utils", + "@kbn/kibana-utils-plugin", + "@kbn/data-plugin", + "@kbn/ml-error-utils", + "@kbn/core-http-browser-mocks", + "@kbn/securitysolution-io-ts-utils", + "@kbn/share-plugin", + "@kbn/discover-plugin", + "@kbn/home-plugin", + "@kbn/embeddable-plugin", + "@kbn/inspector-plugin", + "@kbn/cases-plugin", + "@kbn/cloud-plugin", + "@kbn/spaces-plugin", + "@kbn/core-doc-links-browser", + "@kbn/usage-collection-plugin", + "@kbn/core-application-browser", + "@kbn/encrypted-saved-objects-plugin", + "@kbn/task-manager-plugin", + "@kbn/features-plugin", + "@kbn/rule-registry-plugin", + "@kbn/security-plugin", + "@kbn/bfetch-plugin", + "@kbn/alerts-as-data-utils", + "@kbn/std", + "@kbn/utility-types", + "@kbn/licensing-plugin", + "@kbn/es-types", + "@kbn/safer-lodash-set", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/core-http-server", + "@kbn/actions-plugin", + "@kbn/core-saved-objects-server", + "@kbn/observability-ai-assistant-plugin", + "@kbn/shared-ux-link-redirect-app", + "@kbn/repo-info", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-context-theme", + "@kbn/react-kibana-mount", + "@kbn/deeplinks-observability", + "@kbn/ebt-tools", + "@kbn/core-rendering-browser", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.js b/x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.js similarity index 100% rename from x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.js rename to x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.js diff --git a/x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.sh b/x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.sh new file mode 100644 index 0000000000000..f6a329e3b5f4a --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +UUID="$(cat /proc/sys/kernel/random/uuid)" +export UUID + +node x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/plugins/observability_solution/ux/.storybook/main.js b/x-pack/solutions/observability/plugins/ux/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/ux/.storybook/main.js rename to x-pack/solutions/observability/plugins/ux/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/ux/CONTRIBUTING.md b/x-pack/solutions/observability/plugins/ux/CONTRIBUTING.md similarity index 100% rename from x-pack/plugins/observability_solution/ux/CONTRIBUTING.md rename to x-pack/solutions/observability/plugins/ux/CONTRIBUTING.md diff --git a/x-pack/plugins/observability_solution/ux/common/agent_name.ts b/x-pack/solutions/observability/plugins/ux/common/agent_name.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/agent_name.ts rename to x-pack/solutions/observability/plugins/ux/common/agent_name.ts diff --git a/x-pack/plugins/observability_solution/ux/common/config.ts b/x-pack/solutions/observability/plugins/ux/common/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/config.ts rename to x-pack/solutions/observability/plugins/ux/common/config.ts diff --git a/x-pack/plugins/observability_solution/ux/common/elasticsearch_fieldnames.ts b/x-pack/solutions/observability/plugins/ux/common/elasticsearch_fieldnames.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/elasticsearch_fieldnames.ts rename to x-pack/solutions/observability/plugins/ux/common/elasticsearch_fieldnames.ts diff --git a/x-pack/plugins/observability_solution/ux/common/environment_filter_values.ts b/x-pack/solutions/observability/plugins/ux/common/environment_filter_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/environment_filter_values.ts rename to x-pack/solutions/observability/plugins/ux/common/environment_filter_values.ts diff --git a/x-pack/plugins/observability_solution/ux/common/environment_rt.ts b/x-pack/solutions/observability/plugins/ux/common/environment_rt.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/environment_rt.ts rename to x-pack/solutions/observability/plugins/ux/common/environment_rt.ts diff --git a/x-pack/plugins/observability_solution/ux/common/fetch_options.ts b/x-pack/solutions/observability/plugins/ux/common/fetch_options.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/fetch_options.ts rename to x-pack/solutions/observability/plugins/ux/common/fetch_options.ts diff --git a/x-pack/plugins/observability_solution/ux/common/transaction_types.ts b/x-pack/solutions/observability/plugins/ux/common/transaction_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/transaction_types.ts rename to x-pack/solutions/observability/plugins/ux/common/transaction_types.ts diff --git a/x-pack/plugins/observability_solution/ux/common/utils/merge_projection.ts b/x-pack/solutions/observability/plugins/ux/common/utils/merge_projection.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/utils/merge_projection.ts rename to x-pack/solutions/observability/plugins/ux/common/utils/merge_projection.ts diff --git a/x-pack/plugins/observability_solution/ux/common/utils/pick_keys.ts b/x-pack/solutions/observability/plugins/ux/common/utils/pick_keys.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/utils/pick_keys.ts rename to x-pack/solutions/observability/plugins/ux/common/utils/pick_keys.ts diff --git a/x-pack/plugins/observability_solution/ux/common/ux_ui_filter.ts b/x-pack/solutions/observability/plugins/ux/common/ux_ui_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/ux_ui_filter.ts rename to x-pack/solutions/observability/plugins/ux/common/ux_ui_filter.ts diff --git a/x-pack/solutions/observability/plugins/ux/e2e/README.md b/x-pack/solutions/observability/plugins/ux/e2e/README.md new file mode 100644 index 0000000000000..4aa66d4fa313a --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/e2e/README.md @@ -0,0 +1,15 @@ +## How to run these tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/ux/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From this directory, `~/x-pack/solutions/observability/plugins/ux/e2e`, you can now run `node ../../../../../../scripts/functional_test_runner --config synthetics_run.ts`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_8.0.0/data.json.gz b/x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_8.0.0/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_8.0.0/data.json.gz rename to x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_8.0.0/data.json.gz diff --git a/x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_8.0.0/mappings.json b/x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_8.0.0/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_8.0.0/mappings.json rename to x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_8.0.0/mappings.json diff --git a/x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_test_data/data.json.gz b/x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_test_data/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_test_data/data.json.gz rename to x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_test_data/data.json.gz diff --git a/x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_test_data/mappings.json b/x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_test_data/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_test_data/mappings.json rename to x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_test_data/mappings.json diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/core_web_vitals.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/core_web_vitals.ts similarity index 96% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/core_web_vitals.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/core_web_vitals.ts index 6aeebbb913b13..a40073644803d 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/core_web_vitals.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/core_web_vitals.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/index.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/index.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/index.ts diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/inp.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/inp.journey.ts similarity index 98% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/inp.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/inp.journey.ts index 451b5b749a936..215325caeb40f 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/inp.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/inp.journey.ts @@ -7,7 +7,7 @@ import { journey, step, expect, before } from '@elastic/synthetics'; import { Client } from '@elastic/elasticsearch'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { loginToKibana, waitForLoadingToFinish } from './utils'; const addTestTransaction = async (params: any) => { diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/page_views.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/page_views.ts similarity index 97% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/page_views.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/page_views.ts index cdae75f724d44..ec91050fb6d26 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/page_views.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/page_views.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/url_ux_query.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/url_ux_query.journey.ts similarity index 95% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/url_ux_query.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/url_ux_query.journey.ts index 24c1847b5cd06..730952254f1d5 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/url_ux_query.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/url_ux_query.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/utils.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/utils.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/utils.ts diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_client_metrics.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_client_metrics.journey.ts similarity index 97% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/ux_client_metrics.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_client_metrics.journey.ts index 97cad67b91a7f..ad8f569dbd47c 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_client_metrics.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_client_metrics.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_js_errors.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_js_errors.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/ux_js_errors.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_js_errors.journey.ts index 9f573bf5e149c..4c685c4db4f42 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_js_errors.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_js_errors.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_long_task_metric_journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_long_task_metric_journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/ux_long_task_metric_journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_long_task_metric_journey.ts index eb9bad1c763d3..5e55610e87933 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_long_task_metric_journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_long_task_metric_journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, before, expect } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_visitor_breakdown.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_visitor_breakdown.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/ux_visitor_breakdown.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_visitor_breakdown.journey.ts index 86e804f947515..92e51d4c16c36 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_visitor_breakdown.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_visitor_breakdown.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byLensTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/page_objects/dashboard.ts b/x-pack/solutions/observability/plugins/ux/e2e/page_objects/dashboard.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/page_objects/dashboard.ts rename to x-pack/solutions/observability/plugins/ux/e2e/page_objects/dashboard.ts diff --git a/x-pack/plugins/observability_solution/ux/e2e/page_objects/date_picker.ts b/x-pack/solutions/observability/plugins/ux/e2e/page_objects/date_picker.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/page_objects/date_picker.ts rename to x-pack/solutions/observability/plugins/ux/e2e/page_objects/date_picker.ts diff --git a/x-pack/plugins/observability_solution/ux/e2e/page_objects/login.tsx b/x-pack/solutions/observability/plugins/ux/e2e/page_objects/login.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/page_objects/login.tsx rename to x-pack/solutions/observability/plugins/ux/e2e/page_objects/login.tsx diff --git a/x-pack/plugins/observability_solution/ux/e2e/page_objects/utils.tsx b/x-pack/solutions/observability/plugins/ux/e2e/page_objects/utils.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/page_objects/utils.tsx rename to x-pack/solutions/observability/plugins/ux/e2e/page_objects/utils.tsx diff --git a/x-pack/solutions/observability/plugins/ux/e2e/synthetics_run.ts b/x-pack/solutions/observability/plugins/ux/e2e/synthetics_run.ts new file mode 100644 index 0000000000000..84287949caa28 --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/e2e/synthetics_run.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { FtrConfigProviderContext } from '@kbn/test'; +import path from 'path'; +import { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; + +const { headless, grep, bail: pauseOnError } = argv; + +async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { + const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); + + return { + ...kibanaConfig.getAll(), + testRunner: async ({ getService }: any) => { + const syntheticsRunner = new SyntheticsRunner(getService, { + headless, + match: grep, + pauseOnError, + }); + + await syntheticsRunner.setup(); + + const fixturesDir = path.join(__dirname, '../e2e/fixtures/'); + + await syntheticsRunner.loadTestData(fixturesDir, ['rum_8.0.0', 'rum_test_data']); + await syntheticsRunner.loadTestFiles(async () => { + require('./journeys'); + }); + await syntheticsRunner.run(); + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default runE2ETests; diff --git a/x-pack/solutions/observability/plugins/ux/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/ux/e2e/tsconfig.json new file mode 100644 index 0000000000000..0ead299c18fcf --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "exclude": ["tmp", "target/**/*"], + "include": ["./**/*"], + "compilerOptions": { + "outDir": "target/types", + "types": ["node"] + }, + "kbn_references": [ + "@kbn/test", + "@kbn/observability-synthetics-test-data", + ] +} diff --git a/x-pack/solutions/observability/plugins/ux/jest.config.js b/x-pack/solutions/observability/plugins/ux/jest.config.js new file mode 100644 index 0000000000000..2ea37f49e3d53 --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +const path = require('path'); + +module.exports = { + preset: '@kbn/test', + rootDir: path.resolve(__dirname, '../../../../..'), + roots: ['/x-pack/solutions/observability/plugins/ux'], +}; diff --git a/x-pack/solutions/observability/plugins/ux/kibana.jsonc b/x-pack/solutions/observability/plugins/ux/kibana.jsonc new file mode 100644 index 0000000000000..6626a9e414612 --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/kibana.jsonc @@ -0,0 +1,49 @@ +{ + "type": "plugin", + "id": "@kbn/ux-plugin", + "owner": [ + "@elastic/obs-ux-management-team" + ], + "group": "observability", + "visibility": "private", + "plugin": { + "id": "ux", + "browser": true, + "server": true, + "configPath": [ + "xpack", + "ux" + ], + "requiredPlugins": [ + "features", + "data", + "dataViews", + "exploratoryView", + "licensing", + "triggersActionsUi", + "observabilityShared", + "embeddable", + "inspector", + "apm" + ], + "optionalPlugins": [ + "cloud", + "usageCollection", + "taskManager", + "actions", + "alerts", + "observability", + "security", + "maps", + "lens", + "observabilityAIAssistant", + "spaces" + ], + "requiredBundles": [ + "kibanaReact", + "exploratoryView", + "observability", + "maps" + ] + } +} diff --git a/x-pack/plugins/observability_solution/ux/public/application/application.test.tsx b/x-pack/solutions/observability/plugins/ux/public/application/application.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/application/application.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/application/application.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/application/ux_app.tsx b/x-pack/solutions/observability/plugins/ux/public/application/ux_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/application/ux_app.tsx rename to x-pack/solutions/observability/plugins/ux/public/application/ux_app.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/action_menu/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/action_menu/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/action_menu/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/action_menu/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/action_menu/inpector_link.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/action_menu/inpector_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/action_menu/inpector_link.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/action_menu/inpector_link.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/breakdowns/breakdown_filter.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/breakdowns/breakdown_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/breakdowns/breakdown_filter.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/breakdowns/breakdown_filter.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/chart_wrapper/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/chart_wrapper/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/chart_wrapper/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/chart_wrapper/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/__snapshots__/visitor_breakdown_chart.test.tsx.snap b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/__snapshots__/visitor_breakdown_chart.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/__snapshots__/visitor_breakdown_chart.test.tsx.snap rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/__snapshots__/visitor_breakdown_chart.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/page_load_dist_chart.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/page_load_dist_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/page_load_dist_chart.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/page_load_dist_chart.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/page_views_chart.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/page_views_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/page_views_chart.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/page_views_chart.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/use_exp_view_attrs.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/use_exp_view_attrs.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/use_exp_view_attrs.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/use_exp_view_attrs.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.test.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/client_metrics/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/client_metrics/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/client_metrics/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/client_metrics/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/client_metrics/metrics.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/client_metrics/metrics.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/client_metrics/metrics.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/client_metrics/metrics.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/csm_shared_context/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/csm_shared_context/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/csm_shared_context/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/csm_shared_context/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/empty_state_loading.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/empty_state_loading.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/empty_state_loading.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/empty_state_loading.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/environment_filter/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/environment_filter/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/environment_filter/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/environment_filter/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_has_rum_data.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_has_rum_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_has_rum_data.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_has_rum_data.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_local_uifilters.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_local_uifilters.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_local_uifilters.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_local_uifilters.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_ux_query.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_ux_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_ux_query.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_ux_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/impactful_metrics/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/impactful_metrics/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/impactful_metrics/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/impactful_metrics/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/impactful_metrics/js_errors.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/impactful_metrics/js_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/impactful_metrics/js_errors.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/impactful_metrics/js_errors.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/queries.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/queries.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/queries.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/queries.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/percentile_annotations.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/percentile_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/percentile_annotations.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/percentile_annotations.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/types.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/types.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/types.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_views_trend/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_views_trend/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_views_trend/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_views_trend/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/page_load_and_views.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/page_load_and_views.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/page_load_and_views.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/page_load_and_views.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/visitor_breakdowns.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/visitor_breakdowns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/visitor_breakdowns.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/visitor_breakdowns.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/web_application_select.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/web_application_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/web_application_select.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/web_application_select.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_dashboard.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_dashboard.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_dashboard.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_dashboard.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_datepicker/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_datepicker/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_datepicker/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_datepicker/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_home.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_home.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_home.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_home.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/translations.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/translations.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/translations.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/render_option.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/render_option.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/render_option.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/render_option.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/use_url_search.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/use_url_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/use_url_search.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/use_url_search.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/user_percentile/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/user_percentile/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/user_percentile/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/user_percentile/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/utils/test_helper.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/utils/test_helper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/utils/test_helper.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/utils/test_helper.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/format_to_sec.test.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/format_to_sec.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/format_to_sec.test.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/format_to_sec.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.test.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/translations.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/translations.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/translations.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_overview_fetchers.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_overview_fetchers.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_overview_fetchers.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_overview_fetchers.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__mocks__/regions_layer.mock.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__mocks__/regions_layer.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__mocks__/regions_layer.mock.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__mocks__/regions_layer.mock.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/embedded_map.test.tsx.snap b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/embedded_map.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/embedded_map.test.tsx.snap rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/embedded_map.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/map_tooltip.test.tsx.snap b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/map_tooltip.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/map_tooltip.test.tsx.snap rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/map_tooltip.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__stories__/map_tooltip.stories.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__stories__/map_tooltip.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__stories__/map_tooltip.stories.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__stories__/map_tooltip.stories.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.test.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.test.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.test.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.test.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_map_filters.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_map_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_map_filters.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_map_filters.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/plugin_context.ts b/x-pack/solutions/observability/plugins/ux/public/context/plugin_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/plugin_context.ts rename to x-pack/solutions/observability/plugins/ux/public/context/plugin_context.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/constants.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/constants.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/constants.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/helpers.test.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/helpers.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/helpers.test.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/helpers.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/helpers.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/helpers.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/helpers.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/mock_url_params_context_provider.tsx b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/mock_url_params_context_provider.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/mock_url_params_context_provider.tsx rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/mock_url_params_context_provider.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/resolve_url_params.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/resolve_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/resolve_url_params.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/resolve_url_params.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/types.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/types.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/types.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/url_params_context.test.tsx b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/url_params_context.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/url_params_context.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/url_params_context.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/url_params_context.tsx b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/url_params_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/url_params_context.tsx rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/url_params_context.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/use_url_params.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/use_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/use_url_params.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/use_url_params.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/use_ux_url_params.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/use_ux_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/use_ux_url_params.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/use_ux_url_params.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/use_ux_plugin_context.tsx b/x-pack/solutions/observability/plugins/ux/public/context/use_ux_plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/use_ux_plugin_context.tsx rename to x-pack/solutions/observability/plugins/ux/public/context/use_ux_plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_breakpoints.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_breakpoints.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_breakpoints.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_breakpoints.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_client_metrics_query.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_client_metrics_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_client_metrics_query.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_client_metrics_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_core_web_vitals_query.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_core_web_vitals_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_core_web_vitals_query.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_core_web_vitals_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_date_range_redirect.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_date_range_redirect.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_date_range_redirect.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_date_range_redirect.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_deep_object_identity.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_deep_object_identity.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_deep_object_identity.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_deep_object_identity.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_dynamic_data_view.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_dynamic_data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_dynamic_data_view.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_dynamic_data_view.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_environments_fetcher.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_environments_fetcher.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_environments_fetcher.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_environments_fetcher.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_fetcher.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_fetcher.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_fetcher.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_fetcher.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_inp_query.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_inp_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_inp_query.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_inp_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_js_errors_query.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_js_errors_query.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_js_errors_query.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_js_errors_query.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_kibana_services.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_kibana_services.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_kibana_services.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_kibana_services.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_long_task_metrics_query.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_long_task_metrics_query.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_long_task_metrics_query.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_long_task_metrics_query.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_static_data_view.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_static_data_view.ts similarity index 91% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_static_data_view.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_static_data_view.ts index 51ebe9e4c28bf..be4a382b8ad56 100644 --- a/x-pack/plugins/observability_solution/ux/public/hooks/use_static_data_view.ts +++ b/x-pack/solutions/observability/plugins/ux/public/hooks/use_static_data_view.ts @@ -12,7 +12,6 @@ export function useStaticDataView() { const { exploratoryView } = useKibanaServices(); const { data, loading } = useFetcher(async () => { return exploratoryView.getAppDataView('ux'); - // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return { diff --git a/x-pack/plugins/observability_solution/ux/public/index.ts b/x-pack/solutions/observability/plugins/ux/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/index.ts rename to x-pack/solutions/observability/plugins/ux/public/index.ts diff --git a/x-pack/plugins/observability_solution/ux/public/plugin.ts b/x-pack/solutions/observability/plugins/ux/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/plugin.ts rename to x-pack/solutions/observability/plugins/ux/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/client_metrics_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/client_metrics_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/client_metrics_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/client_metrics_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/core_web_vitals_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/core_web_vitals_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/core_web_vitals_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/core_web_vitals_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/js_errors_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/js_errors_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/js_errors_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/js_errors_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/long_task_metrics_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/long_task_metrics_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/long_task_metrics_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/long_task_metrics_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/service_name_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/service_name_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/service_name_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/service_name_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/call_date_math.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/call_date_math.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/call_date_math.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/call_date_math.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/client_metrics_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/client_metrics_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/client_metrics_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/client_metrics_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/client_metrics_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/client_metrics_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/client_metrics_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/client_metrics_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/core_web_vitals_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/core_web_vitals_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/core_web_vitals_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/core_web_vitals_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/core_web_vitals_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/core_web_vitals_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/core_web_vitals_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/core_web_vitals_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/environments_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/environments_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/environments_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/environments_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/get_es_filter.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/get_es_filter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/get_es_filter.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/get_es_filter.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/get_es_filter.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/get_es_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/get_es_filter.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/get_es_filter.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/get_exp_view_filter.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/get_exp_view_filter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/get_exp_view_filter.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/get_exp_view_filter.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/get_exp_view_filter.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/get_exp_view_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/get_exp_view_filter.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/get_exp_view_filter.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/has_rum_data_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/has_rum_data_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/has_rum_data_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/has_rum_data_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/inp_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/inp_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/inp_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/inp_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/js_errors_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/js_errors_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/js_errors_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/js_errors_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/js_errors_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/js_errors_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/js_errors_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/js_errors_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/long_task_metrics_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/long_task_metrics_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/long_task_metrics_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/long_task_metrics_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/long_task_metrics_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/long_task_metrics_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/long_task_metrics_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/long_task_metrics_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/projections.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/projections.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/projections.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/projections.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/range_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/range_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/range_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/range_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/service_name_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/service_name_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/service_name_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/service_name_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/service_name_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/service_name_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/service_name_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/service_name_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/url_search_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/url_search_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/url_search_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/url_search_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/rest/call_api.ts b/x-pack/solutions/observability/plugins/ux/public/services/rest/call_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/rest/call_api.ts rename to x-pack/solutions/observability/plugins/ux/public/services/rest/call_api.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/rest/create_call_apm_api.ts b/x-pack/solutions/observability/plugins/ux/public/services/rest/create_call_apm_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/rest/create_call_apm_api.ts rename to x-pack/solutions/observability/plugins/ux/public/services/rest/create_call_apm_api.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/rest/data_view.ts b/x-pack/solutions/observability/plugins/ux/public/services/rest/data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/rest/data_view.ts rename to x-pack/solutions/observability/plugins/ux/public/services/rest/data_view.ts diff --git a/x-pack/solutions/observability/plugins/ux/readme.md b/x-pack/solutions/observability/plugins/ux/readme.md new file mode 100644 index 0000000000000..0f39b686260aa --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/readme.md @@ -0,0 +1,14 @@ +# Documentation for UX UI developers + +https://docs.elastic.dev/kibana-dev-docs/welcome + +## Running E2E Tests + +The tests are managed via the `scripts/e2e.js` file. This script accepts numerous options. + +From the Kibana root you can run `node x-pack/solutions/observability/plugins/ux/scripts/e2e.js` to simply stand up the stack, load data, and run the tests. + +If you are developing a new test, it is better to stand up the stack in one shell and load data/run tests in a second session. You can do this by running: + +- `node ./x-pack/solutions/observability/plugins/ux/scripts/e2e.js --server` +- `node ./x-pack/solutions/observability/plugins/ux/scripts/e2e.js --runner`, you can also specify `--grep "{TEST_NAME}"` to run a specific series of tests diff --git a/x-pack/plugins/observability_solution/ux/scripts/e2e.js b/x-pack/solutions/observability/plugins/ux/scripts/e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/ux/scripts/e2e.js rename to x-pack/solutions/observability/plugins/ux/scripts/e2e.js diff --git a/x-pack/plugins/observability_solution/ux/server/index.ts b/x-pack/solutions/observability/plugins/ux/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/server/index.ts rename to x-pack/solutions/observability/plugins/ux/server/index.ts diff --git a/x-pack/plugins/observability_solution/ux/server/plugin.ts b/x-pack/solutions/observability/plugins/ux/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/server/plugin.ts rename to x-pack/solutions/observability/plugins/ux/server/plugin.ts diff --git a/x-pack/solutions/observability/plugins/ux/tsconfig.json b/x-pack/solutions/observability/plugins/ux/tsconfig.json new file mode 100644 index 0000000000000..3358b1a772821 --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/tsconfig.json @@ -0,0 +1,56 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../../typings/**/*", + "common/**/*", + "public/**/*", + "server/**/*", + "typings/**/*", + "public/**/*.json" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/data-plugin", + "@kbn/embeddable-plugin", + "@kbn/home-plugin", + "@kbn/inspector-plugin", + "@kbn/kibana-react-plugin", + "@kbn/apm-plugin", + "@kbn/features-plugin", + "@kbn/licensing-plugin", + "@kbn/maps-plugin", + "@kbn/observability-plugin", + "@kbn/lens-plugin", + "@kbn/i18n", + "@kbn/io-ts-utils", + "@kbn/data-views-plugin", + "@kbn/core-http-browser", + "@kbn/datemath", + "@kbn/ui-theme", + "@kbn/typed-react-router-config", + "@kbn/utility-types", + "@kbn/server-route-repository", + "@kbn/es-types", + "@kbn/shared-ux-page-kibana-template", + "@kbn/i18n-react", + "@kbn/es-query", + "@kbn/exploratory-view-plugin", + "@kbn/observability-shared-plugin", + "@kbn/shared-ux-router", + "@kbn/observability-ai-assistant-plugin", + "@kbn/config-schema", + "@kbn/shared-ux-link-redirect-app", + "@kbn/apm-data-view", + "@kbn/spaces-plugin", + "@kbn/deeplinks-observability", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-context-theme", + "@kbn/search-types", + "@kbn/server-route-repository-utils", + "@kbn/core-chrome-browser" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/ux/typings/ui_filters.ts b/x-pack/solutions/observability/plugins/ux/typings/ui_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/typings/ui_filters.ts rename to x-pack/solutions/observability/plugins/ux/typings/ui_filters.ts diff --git a/packages/kbn-data-stream-adapter/README.md b/x-pack/solutions/security/packages/data-stream-adapter/README.md similarity index 100% rename from packages/kbn-data-stream-adapter/README.md rename to x-pack/solutions/security/packages/data-stream-adapter/README.md diff --git a/x-pack/solutions/security/packages/data-stream-adapter/index.ts b/x-pack/solutions/security/packages/data-stream-adapter/index.ts new file mode 100644 index 0000000000000..211fc4f9b5f17 --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { DataStreamAdapter } from './src/data_stream_adapter'; +export { DataStreamSpacesAdapter } from './src/data_stream_spaces_adapter'; + +export { retryTransientEsErrors, ecsFieldMap } from '@kbn/index-adapter'; +export type { + SetComponentTemplateParams, + SetIndexTemplateParams, + InstallParams, + EcsFieldMap, +} from '@kbn/index-adapter'; + +export * from '@kbn/index-adapter/src/field_maps/types'; diff --git a/x-pack/solutions/security/packages/data-stream-adapter/jest.config.js b/x-pack/solutions/security/packages/data-stream-adapter/jest.config.js new file mode 100644 index 0000000000000..a5e7d4348c737 --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/data-stream-adapter'], +}; diff --git a/packages/kbn-data-stream-adapter/kibana.jsonc b/x-pack/solutions/security/packages/data-stream-adapter/kibana.jsonc similarity index 100% rename from packages/kbn-data-stream-adapter/kibana.jsonc rename to x-pack/solutions/security/packages/data-stream-adapter/kibana.jsonc diff --git a/x-pack/solutions/security/packages/data-stream-adapter/package.json b/x-pack/solutions/security/packages/data-stream-adapter/package.json new file mode 100644 index 0000000000000..ff622fd59305c --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/data-stream-adapter", + "version": "1.0.0", + "description": "Utility library for Elasticsearch Data Stream management", + "license": "Elastic License 2.0", + "private": true +} diff --git a/packages/kbn-data-stream-adapter/src/create_or_update_data_stream.test.ts b/x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.test.ts similarity index 93% rename from packages/kbn-data-stream-adapter/src/create_or_update_data_stream.test.ts rename to x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.test.ts index e2141d4afb740..35112e96ecb09 100644 --- a/packages/kbn-data-stream-adapter/src/create_or_update_data_stream.test.ts +++ b/x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { IndicesDataStream } from '@elastic/elasticsearch/lib/api/types'; diff --git a/packages/kbn-data-stream-adapter/src/create_or_update_data_stream.ts b/x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.ts similarity index 94% rename from packages/kbn-data-stream-adapter/src/create_or_update_data_stream.ts rename to x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.ts index 2b0fba3fb0ac0..56e3d3a63548a 100644 --- a/packages/kbn-data-stream-adapter/src/create_or_update_data_stream.ts +++ b/x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { IndicesDataStream } from '@elastic/elasticsearch/lib/api/types'; diff --git a/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts b/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts new file mode 100644 index 0000000000000..68771a4b2e07f --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SetIndexTemplateParams } from '@kbn/index-adapter'; +import { IndexAdapter, type InstallParams } from '@kbn/index-adapter'; +import { createOrUpdateDataStream } from './create_or_update_data_stream'; + +export class DataStreamAdapter extends IndexAdapter { + public setIndexTemplate(params: SetIndexTemplateParams) { + super.setIndexTemplate({ ...params, isDataStream: true }); + } + + public async install(params: InstallParams) { + this.installed = true; + const { logger, pluginStop$, tasksTimeoutMs } = params; + const esClient = await params.esClient; + + await this.installTemplates(params); + + const installFn = this.getInstallFn({ logger, pluginStop$, tasksTimeoutMs }); + + // create data stream when everything is ready + await installFn( + createOrUpdateDataStream({ + name: this.name, + esClient, + logger, + totalFieldsLimit: this.totalFieldsLimit, + }), + `${this.name} data stream` + ); + } +} diff --git a/packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts b/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts similarity index 81% rename from packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts rename to x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts index df131920b7bf9..5fbb986fc647d 100644 --- a/packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts +++ b/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { diff --git a/x-pack/solutions/security/packages/data-stream-adapter/tsconfig.json b/x-pack/solutions/security/packages/data-stream-adapter/tsconfig.json new file mode 100644 index 0000000000000..0df371ef60210 --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + ] + }, + "include": ["**/*.ts"], + "kbn_references": [ + "@kbn/core", + "@kbn/index-adapter", + ], + "exclude": [ + "target/**/*" + ], +} diff --git a/x-pack/solutions/security/packages/data_table/README.md b/x-pack/solutions/security/packages/data_table/README.md new file mode 100644 index 0000000000000..9c86c3ea6e643 --- /dev/null +++ b/x-pack/solutions/security/packages/data_table/README.md @@ -0,0 +1,35 @@ +# Security Solutions's Data Table + +## Motivation + +The idea behind this package is to have a reusable data table component, embedding the features +available to alerts table in security solution plugin. + +## How to use this + +Standalone examples will follow. In the meantime: + +Consult the following file to get the idea of what is necessary to reuse the component + +`x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx` + +The following file: +`kibana/x-pack/solutions/security/plugins/security_solution/public/common/store/reducer.ts` + +showcases the redux store setup for the package. + +## The most important public api members + +- DataTableComponent itself +- dataTableReducer + +### Extras + +Be sure to check out provided helpers + +## Storybook + +General look of the component can be checked visually running the following storybook: +`yarn storybook security_solution_data_table` + +Note that all the interactions are mocked. \ No newline at end of file diff --git a/x-pack/packages/security-solution/data_table/common/types/data_table/index.ts b/x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/data_table/index.ts rename to x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/detail_panel.ts b/x-pack/solutions/security/packages/data_table/common/types/detail_panel.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/detail_panel.ts rename to x-pack/solutions/security/packages/data_table/common/types/detail_panel.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts b/x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts rename to x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/index.ts b/x-pack/solutions/security/packages/data_table/common/types/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/index.ts rename to x-pack/solutions/security/packages/data_table/common/types/index.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/risk_scores.ts b/x-pack/solutions/security/packages/data_table/common/types/risk_scores.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/risk_scores.ts rename to x-pack/solutions/security/packages/data_table/common/types/risk_scores.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/session_view/index.ts b/x-pack/solutions/security/packages/data_table/common/types/session_view/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/session_view/index.ts rename to x-pack/solutions/security/packages/data_table/common/types/session_view/index.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/column_headers/default_headers.ts b/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/default_headers.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/column_headers/default_headers.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/column_headers/default_headers.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.test.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.test.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.test.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.test.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/column_headers/translations.ts b/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/translations.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/column_headers/translations.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/column_headers/translations.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/constants.ts b/x-pack/solutions/security/packages/data_table/components/data_table/constants.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/constants.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/constants.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/data_table.stories.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/data_table.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/data_table.stories.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/data_table.stories.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/helpers.test.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/helpers.test.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/helpers.test.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/helpers.test.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/index.test.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/index.test.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/index.test.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/index.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/index.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/index.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/pagination.ts b/x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/pagination.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/types.ts b/x-pack/solutions/security/packages/data_table/components/data_table/types.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/types.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/types.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/utils.ts b/x-pack/solutions/security/packages/data_table/components/data_table/utils.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/utils.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/utils.ts diff --git a/x-pack/packages/security-solution/data_table/components/toolbar/bulk_actions/types.ts b/x-pack/solutions/security/packages/data_table/components/toolbar/bulk_actions/types.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/toolbar/bulk_actions/types.ts rename to x-pack/solutions/security/packages/data_table/components/toolbar/bulk_actions/types.ts diff --git a/x-pack/packages/security-solution/data_table/components/toolbar/unit/index.ts b/x-pack/solutions/security/packages/data_table/components/toolbar/unit/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/toolbar/unit/index.ts rename to x-pack/solutions/security/packages/data_table/components/toolbar/unit/index.ts diff --git a/x-pack/packages/security-solution/data_table/components/toolbar/unit/styles.tsx b/x-pack/solutions/security/packages/data_table/components/toolbar/unit/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/toolbar/unit/styles.tsx rename to x-pack/solutions/security/packages/data_table/components/toolbar/unit/styles.tsx diff --git a/x-pack/packages/security-solution/data_table/components/toolbar/unit/translations.ts b/x-pack/solutions/security/packages/data_table/components/toolbar/unit/translations.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/toolbar/unit/translations.ts rename to x-pack/solutions/security/packages/data_table/components/toolbar/unit/translations.ts diff --git a/x-pack/packages/security-solution/data_table/hooks/use_selector.tsx b/x-pack/solutions/security/packages/data_table/hooks/use_selector.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/hooks/use_selector.tsx rename to x-pack/solutions/security/packages/data_table/hooks/use_selector.tsx diff --git a/x-pack/packages/security-solution/data_table/index.ts b/x-pack/solutions/security/packages/data_table/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/index.ts rename to x-pack/solutions/security/packages/data_table/index.ts diff --git a/x-pack/solutions/security/packages/data_table/jest.config.js b/x-pack/solutions/security/packages/data_table/jest.config.js new file mode 100644 index 0000000000000..5b21976680c68 --- /dev/null +++ b/x-pack/solutions/security/packages/data_table/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + roots: ['/x-pack/solutions/security/packages/data_table'], + rootDir: '../../../../..', +}; diff --git a/x-pack/packages/security-solution/data_table/kibana.jsonc b/x-pack/solutions/security/packages/data_table/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/data_table/kibana.jsonc rename to x-pack/solutions/security/packages/data_table/kibana.jsonc diff --git a/x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/library_load_event.ts b/x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/library_load_event.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/library_load_event.ts rename to x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/library_load_event.ts diff --git a/x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/process_execution_malware_prevention_alert.ts b/x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/process_execution_malware_prevention_alert.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/process_execution_malware_prevention_alert.ts rename to x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/process_execution_malware_prevention_alert.ts diff --git a/x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/registry_modification_event.ts b/x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/registry_modification_event.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/registry_modification_event.ts rename to x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/registry_modification_event.ts diff --git a/x-pack/packages/security-solution/data_table/mock/demo_data/timeline.ts b/x-pack/solutions/security/packages/data_table/mock/demo_data/timeline.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/demo_data/timeline.ts rename to x-pack/solutions/security/packages/data_table/mock/demo_data/timeline.ts diff --git a/x-pack/packages/security-solution/data_table/mock/global_state.ts b/x-pack/solutions/security/packages/data_table/mock/global_state.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/global_state.ts rename to x-pack/solutions/security/packages/data_table/mock/global_state.ts diff --git a/x-pack/packages/security-solution/data_table/mock/header.ts b/x-pack/solutions/security/packages/data_table/mock/header.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/header.ts rename to x-pack/solutions/security/packages/data_table/mock/header.ts diff --git a/x-pack/packages/security-solution/data_table/mock/mock_local_storage.ts b/x-pack/solutions/security/packages/data_table/mock/mock_local_storage.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/mock_local_storage.ts rename to x-pack/solutions/security/packages/data_table/mock/mock_local_storage.ts diff --git a/x-pack/packages/security-solution/data_table/mock/mock_source.ts b/x-pack/solutions/security/packages/data_table/mock/mock_source.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/mock_source.ts rename to x-pack/solutions/security/packages/data_table/mock/mock_source.ts diff --git a/x-pack/packages/security-solution/data_table/mock/mock_timeline_data.ts b/x-pack/solutions/security/packages/data_table/mock/mock_timeline_data.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/mock_timeline_data.ts rename to x-pack/solutions/security/packages/data_table/mock/mock_timeline_data.ts diff --git a/x-pack/packages/security-solution/data_table/mock/test_providers.tsx b/x-pack/solutions/security/packages/data_table/mock/test_providers.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/test_providers.tsx rename to x-pack/solutions/security/packages/data_table/mock/test_providers.tsx diff --git a/x-pack/packages/security-solution/data_table/package.json b/x-pack/solutions/security/packages/data_table/package.json similarity index 100% rename from x-pack/packages/security-solution/data_table/package.json rename to x-pack/solutions/security/packages/data_table/package.json diff --git a/x-pack/packages/security-solution/data_table/store/data_table/actions.ts b/x-pack/solutions/security/packages/data_table/store/data_table/actions.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/actions.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/actions.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/defaults.ts b/x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/defaults.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/helpers.test.tsx b/x-pack/solutions/security/packages/data_table/store/data_table/helpers.test.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/helpers.test.tsx rename to x-pack/solutions/security/packages/data_table/store/data_table/helpers.test.tsx diff --git a/x-pack/packages/security-solution/data_table/store/data_table/helpers.ts b/x-pack/solutions/security/packages/data_table/store/data_table/helpers.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/helpers.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/helpers.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/index.ts b/x-pack/solutions/security/packages/data_table/store/data_table/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/index.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/index.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/inputs.ts b/x-pack/solutions/security/packages/data_table/store/data_table/inputs.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/inputs.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/inputs.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/model.ts b/x-pack/solutions/security/packages/data_table/store/data_table/model.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/model.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/model.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/reducer.ts b/x-pack/solutions/security/packages/data_table/store/data_table/reducer.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/reducer.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/reducer.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/selectors.ts b/x-pack/solutions/security/packages/data_table/store/data_table/selectors.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/selectors.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/selectors.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/translations.ts b/x-pack/solutions/security/packages/data_table/store/data_table/translations.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/translations.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/translations.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/types.ts b/x-pack/solutions/security/packages/data_table/store/data_table/types.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/types.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/types.ts diff --git a/x-pack/solutions/security/packages/data_table/tsconfig.json b/x-pack/solutions/security/packages/data_table/tsconfig.json new file mode 100644 index 0000000000000..d44a419c3ba4e --- /dev/null +++ b/x-pack/solutions/security/packages/data_table/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": ["jest", "node", "react"] + }, + "include": ["**/*.ts", "**/*.tsx"], + "exclude": ["target/**/*"], + "kbn_references": [ + "@kbn/cell-actions", + "@kbn/timelines-plugin", + "@kbn/es-query", + "@kbn/triggers-actions-ui-plugin", + "@kbn/securitysolution-ecs", + "@kbn/safer-lodash-set", + "@kbn/i18n", + "@kbn/ui-theme", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/i18n-react", + "@kbn/ui-actions-plugin", + "@kbn/data-views-plugin", + "@kbn/field-formats-plugin", + "@kbn/data-plugin" + ] +} diff --git a/x-pack/packages/security-solution/data_table/utils/use_mount_appended.ts b/x-pack/solutions/security/packages/data_table/utils/use_mount_appended.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/utils/use_mount_appended.ts rename to x-pack/solutions/security/packages/data_table/utils/use_mount_appended.ts diff --git a/x-pack/packages/security-solution/distribution_bar/README.md b/x-pack/solutions/security/packages/distribution_bar/README.md similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/README.md rename to x-pack/solutions/security/packages/distribution_bar/README.md diff --git a/x-pack/packages/security-solution/distribution_bar/index.ts b/x-pack/solutions/security/packages/distribution_bar/index.ts similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/index.ts rename to x-pack/solutions/security/packages/distribution_bar/index.ts diff --git a/x-pack/solutions/security/packages/distribution_bar/jest.config.js b/x-pack/solutions/security/packages/distribution_bar/jest.config.js new file mode 100644 index 0000000000000..296ff5369079c --- /dev/null +++ b/x-pack/solutions/security/packages/distribution_bar/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + roots: ['/x-pack/solutions/security/packages/distribution_bar'], + rootDir: '../../../../..', +}; diff --git a/x-pack/packages/security-solution/distribution_bar/kibana.jsonc b/x-pack/solutions/security/packages/distribution_bar/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/kibana.jsonc rename to x-pack/solutions/security/packages/distribution_bar/kibana.jsonc diff --git a/x-pack/packages/security-solution/distribution_bar/package.json b/x-pack/solutions/security/packages/distribution_bar/package.json similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/package.json rename to x-pack/solutions/security/packages/distribution_bar/package.json diff --git a/x-pack/packages/security-solution/distribution_bar/src/distribution_bar.stories.tsx b/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/src/distribution_bar.stories.tsx rename to x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx diff --git a/x-pack/packages/security-solution/distribution_bar/src/distribution_bar.test.tsx b/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.test.tsx similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/src/distribution_bar.test.tsx rename to x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.test.tsx diff --git a/x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx b/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx rename to x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx diff --git a/x-pack/solutions/security/packages/distribution_bar/tsconfig.json b/x-pack/solutions/security/packages/distribution_bar/tsconfig.json new file mode 100644 index 0000000000000..277fe500caa48 --- /dev/null +++ b/x-pack/solutions/security/packages/distribution_bar/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react", + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/ui-theme", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/README.md b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/README.md similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/README.md rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/README.md diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/indices_check_context/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/indices_check_context/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/indices_check_context/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/indices_check_context/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/results_rollup_context/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/results_rollup_context/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/results_rollup_context/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/results_rollup_context/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/hooks/use_is_historical_results_tour_active/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/hooks/use_is_historical_results_tour_active/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/hooks/use_is_historical_results_tour_active/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/hooks/use_is_historical_results_tour_active/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_date_picker/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_date_picker/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_date_picker/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_date_picker/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_outcome_filter/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_outcome_filter/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_outcome_filter/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_outcome_filter/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/sticky_actions/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/sticky_actions/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/sticky_actions/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/sticky_actions/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/loading_empty_prompt/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/loading_empty_prompt/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/loading_empty_prompt/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/loading_empty_prompt/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/chart_legend_item/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/chart_legend_item/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/chart_legend_item/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/chart_legend_item/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/reducer.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/reducer.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/reducer.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/reducer.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/allowed_values/mock_allowed_values.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/allowed_values/mock_allowed_values.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/allowed_values/mock_allowed_values.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/allowed_values/mock_allowed_values.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/data_quality_check_result/mock_index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/data_quality_check_result/mock_index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/data_quality_check_result/mock_index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/data_quality_check_result/mock_index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/enriched_field_metadata/mock_enriched_field_metadata.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/enriched_field_metadata/mock_enriched_field_metadata.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/enriched_field_metadata/mock_enriched_field_metadata.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/enriched_field_metadata/mock_enriched_field_metadata.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/historical_results/mock_historical_results_response.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/historical_results/mock_historical_results_response.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/historical_results/mock_historical_results_response.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/historical_results/mock_historical_results_response.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/ilm_explain/mock_ilm_explain.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/ilm_explain/mock_ilm_explain.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/ilm_explain/mock_ilm_explain.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/ilm_explain/mock_ilm_explain.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/indices_get_mapping_index_mapping_record/mock_indices_get_mapping_index_mapping_record.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/indices_get_mapping_index_mapping_record/mock_indices_get_mapping_index_mapping_record.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/indices_get_mapping_index_mapping_record/mock_indices_get_mapping_index_mapping_record.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/indices_get_mapping_index_mapping_record/mock_indices_get_mapping_index_mapping_record.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_properties/mock_mappings_properties.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_properties/mock_mappings_properties.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_properties/mock_mappings_properties.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_properties/mock_mappings_properties.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_response/mock_mappings_response.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_response/mock_mappings_response.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_response/mock_mappings_response.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_response/mock_mappings_response.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata_with_same_family.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata_with_same_family.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata_with_same_family.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata_with_same_family.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_alerts_pattern_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_alerts_pattern_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_alerts_pattern_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_alerts_pattern_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_auditbeat_pattern_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_auditbeat_pattern_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_auditbeat_pattern_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_auditbeat_pattern_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_packetbeat_pattern_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_packetbeat_pattern_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_packetbeat_pattern_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_packetbeat_pattern_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_auditbeat_index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_auditbeat_index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_auditbeat_index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_auditbeat_index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_packetbeat_index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_packetbeat_index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_packetbeat_index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_packetbeat_index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/test_providers.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/test_providers.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/test_providers.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/test_providers.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/format.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/format.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/format.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/format.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_data_quality_context_props.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_data_quality_context_props.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_data_quality_context_props.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_data_quality_context_props.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_indices_check_context_props.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_indices_check_context_props.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_indices_check_context_props.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_indices_check_context_props.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_results_rollup_context_props.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_results_rollup_context_props.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_results_rollup_context_props.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_results_rollup_context_props.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/unallowed_values/mock_unallowed_values.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/unallowed_values/mock_unallowed_values.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/unallowed_values/mock_unallowed_values.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/unallowed_values/mock_unallowed_values.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/use_results_rollup/mock_use_results_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/use_results_rollup/mock_use_results_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/use_results_rollup/mock_use_results_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/use_results_rollup/mock_use_results_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat_label/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat_label/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat_label/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat_label/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/generate_historical_results_stub/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/generate_historical_results_stub/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/generate_historical_results_stub/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/generate_historical_results_stub/index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_check_state_stub/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_check_state_stub/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_check_state_stub/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_check_state_stub/index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_historical_result_stub/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_historical_result_stub/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_historical_result_stub/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_historical_result_stub/index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_pattern_rollup_stub/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_pattern_rollup_stub/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_pattern_rollup_stub/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_pattern_rollup_stub/index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_value_request_items.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_value_request_items.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_value_request_items.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_value_request_items.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_values_request_items.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_values_request_items.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_values_request_items.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_values_request_items.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/index.ts diff --git a/x-pack/solutions/security/packages/ecs_data_quality_dashboard/jest.config.js b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/jest.config.js new file mode 100644 index 0000000000000..773d813a166b9 --- /dev/null +++ b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/packages/ecs_data_quality_dashboard_impl', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*.{ts,tsx}', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/{__test__,__snapshots__,__examples__,*mock*,stub,tests,test_helpers,integration_tests,types}/**/*', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*mock*.{ts,tsx}', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*.test.{ts,tsx}', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*.d.ts', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*.config.ts', + ], + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/ecs_data_quality_dashboard'], + setupFilesAfterEnv: [ + '/x-pack/solutions/security/packages/ecs_data_quality_dashboard/setup_tests.ts', + ], +}; diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/kibana.jsonc b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/kibana.jsonc rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/kibana.jsonc diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/package.json b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/package.json similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/package.json rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/package.json diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/setup_tests.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/setup_tests.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/setup_tests.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/setup_tests.ts diff --git a/x-pack/solutions/security/packages/ecs_data_quality_dashboard/tsconfig.json b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/tsconfig.json new file mode 100644 index 0000000000000..2d76e9b8b0b4b --- /dev/null +++ b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/tsconfig.json @@ -0,0 +1,30 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/ui-theme", + "@kbn/core-http-browser", + "@kbn/core-http-browser-mocks", + "@kbn/elastic-assistant", + "@kbn/triggers-actions-ui-plugin", + "@kbn/core", + "@kbn/core-notifications-browser", + "@kbn/core-notifications-browser-mocks", + ] +} diff --git a/x-pack/plugins/security_solution/.storybook/main.js b/x-pack/solutions/security/packages/expandable-flyout/.storybook/main.js similarity index 100% rename from x-pack/plugins/security_solution/.storybook/main.js rename to x-pack/solutions/security/packages/expandable-flyout/.storybook/main.js diff --git a/x-pack/solutions/security/packages/expandable-flyout/README.md b/x-pack/solutions/security/packages/expandable-flyout/README.md new file mode 100644 index 0000000000000..de1e9435acad6 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/README.md @@ -0,0 +1,112 @@ +# @kbn/expandable-flyout + +## Purpose + +This package offers an expandable flyout UI component and a way to manage the data displayed in it. The component leverages the [EuiFlyout](https://github.com/elastic/eui/tree/main/src/components/flyout) from the EUI library. + +The flyout is composed of 3 sections: +- a right section (primary section) that opens first +- a left wider section to show more details +- a preview section, that overlays the right section. This preview section can display multiple panels one after the other and displays a `Back` button + +> Run `yarn storybook expandable_flyout` to take a quick look at the expandable flyout in action + +## Design decisions + +The expandable-flyout is making some strict UI design decisions: +- when in collapsed mode (i.e. when only the right/preview section is open), the flyout's width linearly grows from its minimum value of 380px to its maximum value of 750px +- when in expanded mode (i.e. when the left section is opened), the flyout's width changes depending on the browser's width: + - if the window is smaller than 1600px, the flyout takes the entire browser window (minus 48px of padding on the left) + - for windows bigger than 1600px, the flyout's width is 80% of the entire browser window (with a max width of 1500px for the left section, and 750px for the right section) + +> While the expandable-flyout will work on very small screens, having both the right and left sections visible at the same time will not be a good experience to the user. We recommend only showing the right panel, and therefore handling this situation when you build your panels by considering hiding the actions that could open the left panel (like the expand details button in the [FlyoutNavigation](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx)). + +## State persistence + +The expandable flyout offers 2 ways of managing its state: + +### Memory storage + +The default behavior saves the state of the flyout in memory. The state is internal to the package and based on an isolated redux context. Using this mode means the state will not be persisted when sharing url or reloading browser pages. + +### Url storage + +The second way (done by setting the `urlKey` prop to a string value) saves the state of the flyout in the url. This allows the flyout to be automatically reopened when users refresh the browser page, or when users share an url. The `urlKey` will be used as the url parameter. + +**_Note: the word `memory` cannot be used as an `urlKey` as it is reserved for the memory storage behavior. You can use any other string value, try to use something that should be unique._** + +> We highly recommend NOT nesting flyouts in your code, as it would cause conflicts for the url keys. We recommend instead to build multiple panels, with each their own context to manage their data (for example, take a look at the Security Solution [setup](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout)). +> +> A good solution is for example to have one instance of a flyout at a page level, and then have multiple panels that can be opened in that flyout. + + +## Package API + +The ExpandableFlyout [React component](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx) renders the UI, leveraging an [EuiFlyout](https://eui.elastic.co/#/layout/flyout). + +To retrieve the flyout's layout (left, right and preview panels), you can utilize [useExpandableFlyoutState](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts). + +To control (or mutate) flyout's layout, you can utilize [useExpandableFlyoutApi](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts). + +**Expandable Flyout API** exposes the following methods: +- **openFlyout**: open the flyout with a set of panels +- **openRightPanel**: open a right panel +- **openLeftPanel**: open a left panel +- **openPreviewPanel**: open a preview panel +- **closeRightPanel**: close the right panel +- **closeLeftPanel**: close the left panel +- **closePreviewPanel**: close the preview panels +- **previousPreviewPanel**: navigate to the previous preview panel +- **closeFlyout**: close the flyout + +> The expandable flyout propagates the `onClose` callback from the EuiFlyout component. As we recommend having a single instance of the flyout in your application, it's up to the application's code to dispatch the event (through Redux, window events, observable, prop drilling...). + +When calling `openFlyout`, the right panel state is automatically appended in the `history` slice in the redux context. To access the flyout's history, you can use the [useExpandableFlyoutHistory](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts) hook. + +## Usage + +To use the expandable flyout in your plugin, first you need wrap your code with the [context provider](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/context.tsx) at a high enough level as follows: +```typescript jsx +// state stored in the url + + ... + + + +// state stored in memory + + ... + +``` + +Then use the [React UI component](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx) where you need: + +```typescript jsx + +``` +_where `myPanels` is a list of all the panels that can be rendered in the flyout_ + +## Optional properties + +The expandable flyout now offers a way for users to change some of the flyout's UI properties. These are done via a gear icon in the top right corner of the flyout, to the left of the close icon. + +The gear icon can be hidden by setting the `hideSettings` property to `true` in the flyout's custom props. +The `typeDisabled` property allows to disable the push/overlay toggle. +```typescript +flyoutCustomProps?: { + hideSettings?: boolean; + typeDisabled?: boolean, +}; +``` + +At the moment, clicking on the gear icon opens a popover that allows you to toggle the flyout between `overlay` and `push` modes (see [EUI](https://eui.elastic.co/#/layout/flyout#push-versus-overlay)). The default value is `overlay`. The package remembers the selected value in local storage, only for expandable flyout that have a urlKey. The state of memory flyouts is not persisted. + +## Terminology + +### Section + +One of the 3 areas of the flyout (**left**, **right** or **preview**). + +### Panel + +A set of properties defining what's displayed in one of the flyout section (see interface [here](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/types.ts)). diff --git a/x-pack/solutions/security/packages/expandable-flyout/__mocks__/index.tsx b/x-pack/solutions/security/packages/expandable-flyout/__mocks__/index.tsx new file mode 100644 index 0000000000000..fa058e26c2889 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/__mocks__/index.tsx @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { IStorage } from '@kbn/kibana-utils-plugin/public'; + +export const ExpandableFlyout = jest.fn(); + +export const localStorageMock = (): IStorage => { + let store: Record = {}; + + return { + getItem: (key: string) => { + return store[key] || null; + }, + setItem: (key: string, value: unknown) => { + store[key] = value; + }, + clear() { + store = {}; + }, + removeItem(key: string) { + delete store[key]; + }, + }; +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/index.ts b/x-pack/solutions/security/packages/expandable-flyout/index.ts new file mode 100644 index 0000000000000..4b5cd448428c9 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { ExpandableFlyout } from './src'; + +export { useExpandableFlyoutApi } from './src/hooks/use_expandable_flyout_api'; +export { useExpandableFlyoutState } from './src/hooks/use_expandable_flyout_state'; +export { useExpandableFlyoutHistory } from './src/hooks/use_expandable_flyout_history'; + +export { type FlyoutPanels as ExpandableFlyoutState } from './src/store/state'; + +export { ExpandableFlyoutProvider } from './src/provider'; + +export type { ExpandableFlyoutProps } from './src'; +export type { FlyoutPanelProps, PanelPath, ExpandableFlyoutApi } from './src/types'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/jest.config.js b/x-pack/solutions/security/packages/expandable-flyout/jest.config.js new file mode 100644 index 0000000000000..0caae916a926f --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/expandable-flyout'], +}; diff --git a/packages/kbn-expandable-flyout/kibana.jsonc b/x-pack/solutions/security/packages/expandable-flyout/kibana.jsonc similarity index 100% rename from packages/kbn-expandable-flyout/kibana.jsonc rename to x-pack/solutions/security/packages/expandable-flyout/kibana.jsonc diff --git a/x-pack/solutions/security/packages/expandable-flyout/package.json b/x-pack/solutions/security/packages/expandable-flyout/package.json new file mode 100644 index 0000000000000..c5da13192d169 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/expandable-flyout", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0", + "sideEffects": false +} \ No newline at end of file diff --git a/packages/kbn-expandable-flyout/src/components/container.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/container.test.tsx similarity index 91% rename from packages/kbn-expandable-flyout/src/components/container.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/container.test.tsx index 5482d73893c3a..8cf8466901bad 100644 --- a/packages/kbn-expandable-flyout/src/components/container.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/container.test.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import React from 'react'; diff --git a/packages/kbn-expandable-flyout/src/components/container.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/container.tsx similarity index 95% rename from packages/kbn-expandable-flyout/src/components/container.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/container.tsx index 9d858d08be23c..9679a43bb45f2 100644 --- a/packages/kbn-expandable-flyout/src/components/container.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/container.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import React, { memo, useCallback, useMemo } from 'react'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/components/left_section.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/left_section.tsx new file mode 100644 index 0000000000000..243e01d136622 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/left_section.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexItem } from '@elastic/eui'; +import React, { memo } from 'react'; +import { LEFT_SECTION_TEST_ID } from './test_ids'; + +interface LeftSectionProps { + /** + * Component to be rendered + */ + component: React.ReactElement; +} + +/** + * Left section of the expanded flyout rendering a panel + */ +export const LeftSection: React.FC = memo(({ component }: LeftSectionProps) => ( + + {component} + +)); + +LeftSection.displayName = 'LeftSection'; diff --git a/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.test.tsx similarity index 83% rename from packages/kbn-expandable-flyout/src/components/preview_section.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.test.tsx index a6f927ca4eb0d..a250a746439f2 100644 --- a/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.test.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import React from 'react'; diff --git a/packages/kbn-expandable-flyout/src/components/preview_section.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx similarity index 93% rename from packages/kbn-expandable-flyout/src/components/preview_section.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx index d759e5500534b..690917e55b5b5 100644 --- a/packages/kbn-expandable-flyout/src/components/preview_section.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { diff --git a/packages/kbn-expandable-flyout/src/components/resizable_container.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.test.tsx similarity index 78% rename from packages/kbn-expandable-flyout/src/components/resizable_container.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.test.tsx index b15c2b53c78c7..07b9deffa9143 100644 --- a/packages/kbn-expandable-flyout/src/components/resizable_container.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.test.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import React from 'react'; diff --git a/packages/kbn-expandable-flyout/src/components/resizable_container.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.tsx similarity index 90% rename from packages/kbn-expandable-flyout/src/components/resizable_container.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.tsx index d5e8f2c1b0801..4eba95175fece 100644 --- a/packages/kbn-expandable-flyout/src/components/resizable_container.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { EuiResizableContainer } from '@elastic/eui'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/components/right_section.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/right_section.tsx new file mode 100644 index 0000000000000..1cde5e5e8605f --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/right_section.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexItem } from '@elastic/eui'; +import React, { memo } from 'react'; +import { RIGHT_SECTION_TEST_ID } from './test_ids'; + +interface RightSectionProps { + /** + * Component to be rendered + */ + component: React.ReactElement; +} + +/** + * Right section of the expanded flyout rendering a panel + */ +export const RightSection: React.FC = memo( + ({ component }: RightSectionProps) => ( + + {component} + + ) +); + +RightSection.displayName = 'RightSection'; diff --git a/packages/kbn-expandable-flyout/src/components/settings_menu.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.test.tsx similarity index 95% rename from packages/kbn-expandable-flyout/src/components/settings_menu.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.test.tsx index f9a6991f55b52..c9452172d86c3 100644 --- a/packages/kbn-expandable-flyout/src/components/settings_menu.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.test.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import React from 'react'; diff --git a/packages/kbn-expandable-flyout/src/components/settings_menu.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.tsx similarity index 78% rename from packages/kbn-expandable-flyout/src/components/settings_menu.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.tsx index e632f8bb0172c..99e49d73f0190 100644 --- a/packages/kbn-expandable-flyout/src/components/settings_menu.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { @@ -37,39 +35,66 @@ import { } from './test_ids'; import { selectPushVsOverlay, useDispatch, useSelector } from '../store/redux'; -const SETTINGS_MENU_ICON_BUTTON = i18n.translate('expandableFlyout.settingsMenu.popoverButton', { - defaultMessage: 'Open flyout settings menu', -}); +const SETTINGS_MENU_ICON_BUTTON = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.popoverButton', + { + defaultMessage: 'Open flyout settings menu', + } +); const SETTINGS_MENU_ICON_BUTTON_TOOLTIP = i18n.translate( - 'expandableFlyout.settingsMenu.popoverButton', + 'securitySolutionPackages.expandableFlyout.settingsMenu.popoverButton', + { + defaultMessage: 'Flyout settings', + } +); +const SETTINGS_MENU_TITLE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.popoverTitle', { defaultMessage: 'Flyout settings', } ); -const SETTINGS_MENU_TITLE = i18n.translate('expandableFlyout.settingsMenu.popoverTitle', { - defaultMessage: 'Flyout settings', -}); -const FLYOUT_TYPE_TITLE = i18n.translate('expandableFlyout.settingsMenu.flyoutTypeTitle', { - defaultMessage: 'Flyout type', -}); -const FLYOUT_TYPE_OVERLAY_MODE = i18n.translate('expandableFlyout.settingsMenu.overlayMode', { - defaultMessage: 'Overlay', -}); -const FLYOUT_TYPE_PUSH_MODE = i18n.translate('expandableFlyout.settingsMenu.pushMode', { - defaultMessage: 'Push', -}); -const FLYOUT_TYPE_OVERLAY_TOOLTIP = i18n.translate('expandableFlyout.settingsMenu.overlayTooltip', { - defaultMessage: 'Displays the flyout over the page', -}); -const FLYOUT_TYPE_PUSH_TOOLTIP = i18n.translate('expandableFlyout.settingsMenu.pushTooltip', { - defaultMessage: 'Displays the flyout next to the page', -}); -const FLYOUT_RESIZE_TITLE = i18n.translate('expandableFlyout.renderMenu.flyoutResizeTitle', { - defaultMessage: 'Flyout size', -}); -const FLYOUT_RESIZE_BUTTON = i18n.translate('expandableFlyout.renderMenu.flyoutResizeButton', { - defaultMessage: 'Reset size', -}); +const FLYOUT_TYPE_TITLE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.flyoutTypeTitle', + { + defaultMessage: 'Flyout type', + } +); +const FLYOUT_TYPE_OVERLAY_MODE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.overlayMode', + { + defaultMessage: 'Overlay', + } +); +const FLYOUT_TYPE_PUSH_MODE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.pushMode', + { + defaultMessage: 'Push', + } +); +const FLYOUT_TYPE_OVERLAY_TOOLTIP = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.overlayTooltip', + { + defaultMessage: 'Displays the flyout over the page', + } +); +const FLYOUT_TYPE_PUSH_TOOLTIP = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.pushTooltip', + { + defaultMessage: 'Displays the flyout next to the page', + } +); +const FLYOUT_RESIZE_TITLE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.renderMenu.flyoutResizeTitle', + { + defaultMessage: 'Flyout size', + } +); +const FLYOUT_RESIZE_BUTTON = i18n.translate( + 'securitySolutionPackages.expandableFlyout.renderMenu.flyoutResizeButton', + { + defaultMessage: 'Reset size', + } +); export interface FlyoutCustomProps { /** diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/components/test_ids.ts b/x-pack/solutions/security/packages/expandable-flyout/src/components/test_ids.ts new file mode 100644 index 0000000000000..b6b2888423b8f --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/test_ids.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const FLYOUT_TEST_ID = 'resizableFlyout'; + +export const RIGHT_SECTION_TEST_ID = 'rightSection'; + +export const LEFT_SECTION_TEST_ID = 'leftSection'; + +export const PREVIEW_SECTION_TEST_ID = 'previewSection'; + +export const PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID = 'previewSectionCloseButton'; + +export const PREVIEW_SECTION_BACK_BUTTON_TEST_ID = 'previewSectionBackButton'; + +export const PREVIEW_SECTION_HEADER_TEST_ID = 'previewSectionHeader'; + +export const SETTINGS_MENU_BUTTON_TEST_ID = 'settingsMenuButton'; + +export const SETTINGS_MENU_FLYOUT_TYPE_TITLE_TEST_ID = 'settingsMenuFlyoutTypeTitle'; + +export const SETTINGS_MENU_FLYOUT_TYPE_INFORMATION_ICON_TEST_ID = + 'settingsMenuFlyoutTypeInformationIcon'; + +export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_TEST_ID = 'settingsMenuFlyoutTypeButtonGroup'; + +export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_OVERLAY_TEST_ID = + 'settingsMenuFlyoutTypeButtonGroupOverlayOption'; + +export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_PUSH_TEST_ID = + 'settingsMenuFlyoutTypeButtonGroupPushOption'; + +export const SETTINGS_MENU_FLYOUT_RESIZE_TITLE_TEST_ID = 'settingsMenuFlyoutSizeTitle'; + +export const SETTINGS_MENU_FLYOUT_RESIZE_INFORMATION_ICON_TEST_ID = + 'settingsMenuFlyoutSizeInformationIcon'; + +export const SETTINGS_MENU_FLYOUT_RESIZE_BUTTON_TEST_ID = 'settingsMenuFlyoutSizeButton'; + +export const RESIZABLE_LEFT_SECTION_TEST_ID = 'resizableLeftSection'; + +export const RESIZABLE_RIGHT_SECTION_TEST_ID = 'resizableRightSection'; + +export const RESIZABLE_BUTTON_TEST_ID = 'resizableButton'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/components/translations.ts b/x-pack/solutions/security/packages/expandable-flyout/src/components/translations.ts new file mode 100644 index 0000000000000..da499ef0904c0 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/translations.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const BACK_BUTTON = i18n.translate( + 'securitySolutionPackages.expandableFlyout.previewSection.backButton', + { + defaultMessage: 'Back', + } +); + +export const CLOSE_BUTTON = i18n.translate( + 'securitySolutionPackages.expandableFlyout.previewSection.closeButton', + { + defaultMessage: 'Close', + } +); diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/constants.ts b/x-pack/solutions/security/packages/expandable-flyout/src/constants.ts new file mode 100644 index 0000000000000..8d50802ed2fcb --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/constants.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * This is a reserved word that we use as an id when no urlKey is provided and we are in memory storage mode + */ +export const REDUX_ID_FOR_MEMORY_STORAGE = 'memory'; + +export const EXPANDABLE_FLYOUT_LOCAL_STORAGE = 'expandableFlyout.ui'; +export const PUSH_VS_OVERLAY_LOCAL_STORAGE = 'pushVsOverlay'; +export const USER_COLLAPSED_WIDTH_LOCAL_STORAGE = 'collapsedWidth'; +export const USER_EXPANDED_WIDTH_LOCAL_STORAGE = 'expandedWidth'; +export const USER_SECTION_WIDTHS_LOCAL_STORAGE = 'sectionWidths'; diff --git a/packages/kbn-expandable-flyout/src/context.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/context.tsx similarity index 79% rename from packages/kbn-expandable-flyout/src/context.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/context.tsx index 65074a512ad8c..cedd89991783f 100644 --- a/packages/kbn-expandable-flyout/src/context.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/context.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import React, { createContext, memo, useContext, useMemo } from 'react'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts similarity index 88% rename from packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts index e1fe482f448f9..a00a1ec696ff5 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { useCallback, useMemo } from 'react'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts new file mode 100644 index 0000000000000..b82f1b7569b15 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; +import { useExpandableFlyoutContext } from '../context'; +import { selectHistoryById, useSelector } from '../store/redux'; + +/** + * This hook allows you to access the flyout state, read open right, left and preview panels. + */ +export const useExpandableFlyoutHistory = () => { + const { urlKey } = useExpandableFlyoutContext(); + // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' + const id = urlKey || REDUX_ID_FOR_MEMORY_STORAGE; + return useSelector(selectHistoryById(id)); +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts new file mode 100644 index 0000000000000..bf1c17039d5f8 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; +import { useExpandableFlyoutContext } from '../context'; +import { selectPanelsById, useSelector } from '../store/redux'; + +/** + * This hook allows you to access the flyout state, read open right, left and preview panels. + */ +export const useExpandableFlyoutState = () => { + const { urlKey } = useExpandableFlyoutContext(); + // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' + const id = useMemo(() => urlKey || REDUX_ID_FOR_MEMORY_STORAGE, [urlKey]); + + return useSelector(selectPanelsById(id)); +}; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts similarity index 89% rename from packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts index cc3623f9238c6..de56bb563e788 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { renderHook } from '@testing-library/react'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.ts similarity index 84% rename from packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.ts index 9c88fe29e75d7..56e027f21dbc4 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { diff --git a/packages/kbn-expandable-flyout/src/hooks/use_sections.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.test.tsx similarity index 90% rename from packages/kbn-expandable-flyout/src/hooks/use_sections.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.test.tsx index 8dc4aacaefbcf..f5c7e7f0fb4ac 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_sections.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.test.tsx @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import React from 'react'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_sections.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.ts similarity index 86% rename from packages/kbn-expandable-flyout/src/hooks/use_sections.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.ts index 5267030790e38..882f2a691550e 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_sections.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { useMemo } from 'react'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_window_width.test.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.test.ts similarity index 91% rename from packages/kbn-expandable-flyout/src/hooks/use_window_width.test.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.test.ts index 696191e7fbdf6..906d9cc961a64 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_window_width.test.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { renderHook } from '@testing-library/react'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_window_width.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.ts similarity index 87% rename from packages/kbn-expandable-flyout/src/hooks/use_window_width.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.ts index 3df9eef08a4f8..02bc196220966 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_window_width.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { useLayoutEffect, useState } from 'react'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/index.stories.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/index.stories.tsx new file mode 100644 index 0000000000000..4667cf64e2991 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/index.stories.tsx @@ -0,0 +1,369 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { Story } from '@storybook/react'; +import { + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiPanel, + EuiTitle, +} from '@elastic/eui'; +import { ExpandableFlyout } from '.'; +import { TestProvider } from './test/provider'; +import { initialUiState, State } from './store/state'; + +export default { + component: ExpandableFlyout, + title: 'ExpandableFlyout', +}; + +const registeredPanels = [ + { + key: 'right', + component: () => ( + <> + + +

{'Right panel header'}

+
+
+ +

{'Example of a right component body'}

+
+ + + + {'Footer button'} + + + + + ), + }, + { + key: 'left', + component: () => ( + + + + +

{'Left panel header'}

+
+
+

{'Example of a left component content'}

+ +
+
+ ), + }, + { + key: 'preview1', + component: () => ( + + + + +

{'Preview panel header'}

+
+
+

{'Example of a preview component content'}

+ +
+
+ ), + }, + { + key: 'preview2', + component: () => ( + + + + +

{'Second preview panel header'}

+
+
+

{'Example of another preview component content'}

+ +
+
+ ), + }, +]; + +export const Right: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: undefined, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const Left: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const Preview: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: [ + { + id: 'preview1', + }, + ], + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const MultiplePreviews: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: [ + { + id: 'preview1', + }, + { + id: 'preview2', + }, + ], + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const CollapsedPushMode: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: undefined, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: { + ...initialUiState, + pushVsOverlay: 'push', + }, + }; + + return ( + + + + ); +}; + +export const ExpandedPushMode: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: { + ...initialUiState, + pushVsOverlay: 'push', + }, + }; + + return ( + + + + ); +}; + +export const DisableTypeSelection: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const ResetWidths: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const DisableResizeWidthSelection: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/index.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/index.test.tsx new file mode 100644 index 0000000000000..4ac5d79462374 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/index.test.tsx @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; + +import { Panel } from './types'; +import { ExpandableFlyout } from '.'; +import { useWindowWidth } from './hooks/use_window_width'; +import { TestProvider } from './test/provider'; +import { REDUX_ID_FOR_MEMORY_STORAGE } from './constants'; +import { initialUiState } from './store/state'; + +jest.mock('./hooks/use_window_width'); + +const registeredPanels: Panel[] = [ + { + key: 'key', + component: () =>
{'component'}
, + }, +]; + +describe('ExpandableFlyout', () => { + it(`should not render flyout if window width is 0`, () => { + (useWindowWidth as jest.Mock).mockReturnValue(0); + + const result = render( + + + + ); + + expect(result.asFragment()).toMatchInlineSnapshot(``); + }); + + it(`should render flyout`, () => { + (useWindowWidth as jest.Mock).mockReturnValue(1000); + + const state = { + panels: { + byId: { + [REDUX_ID_FOR_MEMORY_STORAGE]: { + right: { + id: 'key', + }, + left: undefined, + preview: undefined, + history: [{ id: 'key' }], + }, + }, + }, + ui: initialUiState, + }; + + const { getByTestId } = render( + + + + ); + + expect(getByTestId('TEST')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx new file mode 100644 index 0000000000000..06aef10305895 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo } from 'react'; +import type { Interpolation, Theme } from '@emotion/react'; +import { EuiFlyoutProps } from '@elastic/eui'; +import { EuiFlyoutResizableProps } from '@elastic/eui/src/components/flyout/flyout_resizable'; +import { Container } from './components/container'; +import { useWindowWidth } from './hooks/use_window_width'; +import { useInitializeFromLocalStorage } from './hooks/use_initialize_from_local_storage'; +import { FlyoutCustomProps } from './components/settings_menu'; +import type { Panel } from './types'; + +export interface ExpandableFlyoutProps extends Omit { + /** + * List of all registered panels available for render + */ + registeredPanels: Panel[]; + /** + * Allows for custom styles to be passed to the EuiFlyout component + */ + customStyles?: Interpolation; + /** + * Callback function to let application's code the flyout is closed + */ + onClose?: EuiFlyoutProps['onClose']; + /** + * Set of properties that drive a settings menu + */ + flyoutCustomProps?: FlyoutCustomProps; + /** + * Optional data test subject string to be used on the EuiFlyoutResizable component + */ + 'data-test-subj'?: string; +} + +/** + * Expandable flyout UI React component. + * Displays 3 sections (right, left, preview) depending on the panels in the context. + * + * The behavior expects that the left and preview sections should only be displayed is a right section + * is already rendered. + */ +export const ExpandableFlyout: React.FC = ({ ...props }) => { + const windowWidth = useWindowWidth(); + + useInitializeFromLocalStorage(); + + const container = useMemo(() => , [props]); + + if (windowWidth === 0) { + return null; + } + + return <>{container}; +}; + +ExpandableFlyout.displayName = 'ExpandableFlyout'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/provider.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/provider.test.tsx new file mode 100644 index 0000000000000..9005a95003d96 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/provider.test.tsx @@ -0,0 +1,115 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import { TestProvider } from './test/provider'; +import { UrlSynchronizer } from './provider'; +import * as actions from './store/actions'; +import { initialUiState, State } from './store/state'; +import { of } from 'rxjs'; + +const mockGet = jest.fn(); +const mockSet = jest.fn(); +const mockChange$ = jest.fn().mockReturnValue(of({})); +jest.mock('@kbn/kibana-utils-plugin/public'); +const { createKbnUrlStateStorage } = jest.requireMock('@kbn/kibana-utils-plugin/public'); + +const urlKey = 'urlKey'; + +describe('UrlSynchronizer', () => { + it(`should not dispatch any actions or update url if urlKey isn't passed`, () => { + const urlChangedAction = jest.spyOn(actions, 'urlChangedAction'); + + const initialState: State = { + panels: { + byId: { + [urlKey]: { + right: { id: 'key1' }, + left: { id: 'key11' }, + preview: undefined, + history: [{ id: 'key1' }], + }, + }, + needsSync: true, + }, + ui: initialUiState, + }; + + render( + + + + ); + + expect(urlChangedAction).not.toHaveBeenCalled(); + expect(mockSet).not.toHaveBeenCalled(); + }); + + it('should update url if no panels exist', () => { + (createKbnUrlStateStorage as jest.Mock).mockReturnValue({ + get: mockGet, + set: mockSet, + change$: mockChange$, + }); + const initialState: State = { + panels: { + byId: {}, + needsSync: true, + }, + ui: initialUiState, + }; + + render( + + + + ); + + expect(mockSet).toHaveBeenCalledWith('urlKey', { + left: undefined, + right: undefined, + preview: [undefined], + }); + }); + + it('should dispatch action and update url with the correct value', () => { + const urlChangedAction = jest.spyOn(actions, 'urlChangedAction'); + + (createKbnUrlStateStorage as jest.Mock).mockReturnValue({ + get: mockGet, + set: mockSet, + change$: mockChange$, + }); + const initialState: State = { + panels: { + byId: { + [urlKey]: { + right: { id: 'key1' }, + left: { id: 'key2' }, + preview: undefined, + history: [{ id: 'key1' }], + }, + }, + needsSync: true, + }, + ui: initialUiState, + }; + + render( + + + + ); + + expect(urlChangedAction).toHaveBeenCalledWith({ + id: urlKey, + preview: undefined, + }); + expect(mockSet).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx new file mode 100644 index 0000000000000..e84d1128c99d3 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx @@ -0,0 +1,100 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; +import React, { FC, PropsWithChildren, useEffect, useMemo } from 'react'; +import { Provider as ReduxProvider } from 'react-redux'; +import { useHistory } from 'react-router-dom'; +import { ExpandableFlyoutContextProvider, useExpandableFlyoutContext } from './context'; +import { FlyoutPanels } from './store/state'; +import { useExpandableFlyoutState } from './hooks/use_expandable_flyout_state'; +import { Context, selectNeedsSync, store, useDispatch, useSelector } from './store/redux'; +import { urlChangedAction } from './store/actions'; + +/** + * Dispatches actions when url state changes and initializes the state when the app is loaded with flyout url parameters + */ +export const UrlSynchronizer = () => { + const { urlKey } = useExpandableFlyoutContext(); + const panels = useExpandableFlyoutState(); + const needsSync = useSelector(selectNeedsSync()); + const dispatch = useDispatch(); + + const history = useHistory(); + + const urlStorage = useMemo( + () => + createKbnUrlStateStorage({ + history, + useHash: false, + useHashQuery: false, + }), + [history] + ); + + useEffect(() => { + if (!urlKey) { + return; + } + + const currentValue = urlStorage.get(urlKey); + + // Dispatch current value to redux store as it does not happen automatically + if (currentValue) { + dispatch( + urlChangedAction({ + ...currentValue, + preview: currentValue?.preview?.at(-1), + id: urlKey, + }) + ); + } + + const subscription = urlStorage.change$(urlKey).subscribe((value) => { + dispatch(urlChangedAction({ ...value, preview: value?.preview?.at(-1), id: urlKey })); + }); + + return () => subscription.unsubscribe(); + }, [dispatch, urlKey, urlStorage]); + + useEffect(() => { + if (!needsSync || !panels || !urlKey) { + return; + } + + const { left, right, preview } = panels; + urlStorage.set(urlKey, { left, right, preview: [preview?.at(-1)] }); + }, [needsSync, panels, urlKey, urlStorage]); + + return null; +}; + +interface ExpandableFlyoutProviderProps { + /** + * Unique key to be used as url parameter to store the state of the flyout. + * Providing this will save the state of the flyout in the url. + * The word `memory` is reserved, do NOT use it! + */ + urlKey?: string; +} + +/** + * Wrap your plugin with this context for the ExpandableFlyout React component. + */ +export const ExpandableFlyoutProvider: FC> = ({ + children, + urlKey, +}) => { + return ( + + + {urlKey ? : null} + {children} + + + ); +}; diff --git a/packages/kbn-expandable-flyout/src/store/actions.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/actions.ts similarity index 93% rename from packages/kbn-expandable-flyout/src/store/actions.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/actions.ts index 49e28befa3456..890f0bd01c927 100644 --- a/packages/kbn-expandable-flyout/src/store/actions.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/actions.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { createAction } from '@reduxjs/toolkit'; diff --git a/packages/kbn-expandable-flyout/src/store/middlewares.test.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.test.ts similarity index 95% rename from packages/kbn-expandable-flyout/src/store/middlewares.test.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.test.ts index 680a5619b0b64..efedee53b2d10 100644 --- a/packages/kbn-expandable-flyout/src/store/middlewares.test.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { localStorageMock } from '../../__mocks__'; diff --git a/packages/kbn-expandable-flyout/src/store/middlewares.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.ts similarity index 91% rename from packages/kbn-expandable-flyout/src/store/middlewares.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.ts index 4fb5354535caf..e9ec4cf3bd165 100644 --- a/packages/kbn-expandable-flyout/src/store/middlewares.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { Action, Dispatch } from '@reduxjs/toolkit'; diff --git a/packages/kbn-expandable-flyout/src/store/reducers.test.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.test.ts similarity index 98% rename from packages/kbn-expandable-flyout/src/store/reducers.test.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.test.ts index e77a53c911319..f273b117fc894 100644 --- a/packages/kbn-expandable-flyout/src/store/reducers.test.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { FlyoutPanelProps } from '../types'; diff --git a/packages/kbn-expandable-flyout/src/store/reducers.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.ts similarity index 93% rename from packages/kbn-expandable-flyout/src/store/reducers.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.ts index be2c47344526e..1d998aa47f5af 100644 --- a/packages/kbn-expandable-flyout/src/store/reducers.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { createReducer } from '@reduxjs/toolkit'; diff --git a/packages/kbn-expandable-flyout/src/store/redux.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/redux.ts similarity index 85% rename from packages/kbn-expandable-flyout/src/store/redux.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/redux.ts index 7f37017652bbc..5651ea29cd164 100644 --- a/packages/kbn-expandable-flyout/src/store/redux.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/redux.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { createContext } from 'react'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts new file mode 100644 index 0000000000000..c5b7471a4b661 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts @@ -0,0 +1,138 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FlyoutPanelProps } from '../..'; + +export interface FlyoutPanels { + /** + * Panel to render in the left section + */ + left: FlyoutPanelProps | undefined; + /** + * Panel to render in the right section + */ + right: FlyoutPanelProps | undefined; + /** + * Panels to render in the preview section + */ + preview: FlyoutPanelProps[] | undefined; + /* + * History of the right panels that were opened + */ + history: FlyoutPanelProps[]; +} + +export interface PanelsState { + /** + * Store the panels for multiple flyouts + */ + byId: { + [id: string]: FlyoutPanels; + }; + /** + * Is the flyout in sync with external storage (eg. url)? + * This value can be used in useEffect for example, to control whether we should + * call an external state sync method. + */ + needsSync?: boolean; +} + +export const initialPanelsState: PanelsState = { + byId: {}, + needsSync: false, +}; + +export interface DefaultWidthsState { + /** + * Default width for the right section (calculated from the window width) + */ + rightWidth: number; + /** + * Default width for the left section (calculated from the window width) + */ + leftWidth: number; + /** + * Default width for the preview section (calculated from the window width) + */ + previewWidth: number; + /** + * Value of the right width in percentage (of the flyout total width) + */ + rightPercentage: number; + /** + * Value of the left width in percentage (of the flyout total width) + */ + leftPercentage: number; + /** + * Value of the preview width in percentage (of the flyout total width) + */ + previewPercentage: number; +} + +export interface UserFlyoutWidthsState { + /** + * Width of the collapsed flyout + */ + collapsedWidth?: number; + /** + * Width of the expanded flyout + */ + expandedWidth?: number; +} + +export interface UserSectionWidthsState { + /** + * Percentage for the left section + */ + leftPercentage: number | undefined; + /** + * Percentage for the right section + */ + rightPercentage: number | undefined; +} + +export interface UiState { + /** + * Push vs overlay information + */ + pushVsOverlay: 'push' | 'overlay'; + /** + * Default widths for the flyout + */ + defaultWidths: DefaultWidthsState; + /** + * User resized widths for the flyout + */ + userFlyoutWidths: UserFlyoutWidthsState; + /** + * User resized left and right section widths for the flyout + */ + userSectionWidths: UserSectionWidthsState; +} + +export const initialUiState: UiState = { + pushVsOverlay: 'overlay', + defaultWidths: {} as DefaultWidthsState, + userFlyoutWidths: {}, + userSectionWidths: {} as UserSectionWidthsState, +}; + +export interface State { + /** + * All panels related information + */ + panels: PanelsState; + /** + * All ui related information + */ + ui: UiState; +} + +export const initialState: State = { + panels: initialPanelsState, + ui: initialUiState, +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/test/provider.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/test/provider.tsx new file mode 100644 index 0000000000000..f031f9ca86567 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/test/provider.tsx @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Provider as ReduxProvider } from 'react-redux'; +import { configureStore } from '@reduxjs/toolkit'; +import React, { FC, PropsWithChildren } from 'react'; +import { I18nProvider } from '@kbn/i18n-react'; +import { + savePushVsOverlayToLocalStorageMiddleware, + saveUserSectionWidthsToLocalStorageMiddleware, + saveUserFlyoutWidthsToLocalStorageMiddleware, +} from '../store/middlewares'; +import { ExpandableFlyoutContextProvider } from '../context'; +import { panelsReducer, uiReducer } from '../store/reducers'; +import { Context } from '../store/redux'; +import { initialState, State } from '../store/state'; + +interface TestProviderProps { + state?: State; + urlKey?: string; +} + +export const TestProvider: FC> = ({ + children, + state = initialState, + urlKey, +}) => { + const store = configureStore({ + reducer: { + panels: panelsReducer, + ui: uiReducer, + }, + devTools: false, + preloadedState: state, + middleware: [ + savePushVsOverlayToLocalStorageMiddleware, + saveUserSectionWidthsToLocalStorageMiddleware, + saveUserFlyoutWidthsToLocalStorageMiddleware, + ], + }); + + return ( + + + + {children} + + + + ); +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/types.ts b/x-pack/solutions/security/packages/expandable-flyout/src/types.ts new file mode 100644 index 0000000000000..6266572c42100 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/types.ts @@ -0,0 +1,92 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +export interface ExpandableFlyoutApi { + /** + * Open the flyout with left, right and/or preview panels + */ + openFlyout: (panels: { + left?: FlyoutPanelProps; + right?: FlyoutPanelProps; + preview?: FlyoutPanelProps; + }) => void; + /** + * Replaces the current right panel with a new one + */ + openRightPanel: (panel: FlyoutPanelProps) => void; + /** + * Replaces the current left panel with a new one + */ + openLeftPanel: (panel: FlyoutPanelProps) => void; + /** + * Add a new preview panel to the list of current preview panels + */ + openPreviewPanel: (panel: FlyoutPanelProps) => void; + /** + * Closes right panel + */ + closeRightPanel: () => void; + /** + * Closes left panel + */ + closeLeftPanel: () => void; + /** + * Closes all preview panels + */ + closePreviewPanel: () => void; + /** + * Go back to previous preview panel + */ + previousPreviewPanel: () => void; + /** + * Close all panels and closes flyout + */ + closeFlyout: () => void; +} + +export interface PanelPath { + /** + * Top level tab that to be displayed + */ + tab: string; + /** + * Optional secondary level to be displayed under top level tab + */ + subTab?: string; +} + +export interface FlyoutPanelProps { + /** + * Unique key to identify the panel + */ + id: string; + /** + * Any parameters necessary for the initial requests within the flyout + */ + params?: Record; + /** + * Tracks the path for what to show in a panel, such as activated tab and subtab + */ + path?: PanelPath; + /** + * Tracks visual state such as whether the panel is collapsed + */ + state?: Record; +} + +export interface Panel { + /** + * Unique key used to identify the panel + */ + key?: string; + /** + * Component to be rendered + */ + component: (props: FlyoutPanelProps) => React.ReactElement; +} diff --git a/x-pack/solutions/security/packages/expandable-flyout/tsconfig.json b/x-pack/solutions/security/packages/expandable-flyout/tsconfig.json new file mode 100644 index 0000000000000..7759b8cc851bd --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/kibana-utils-plugin", + "@kbn/i18n-react" + ] +} diff --git a/x-pack/packages/security-solution/features/README.mdx b/x-pack/solutions/security/packages/features/README.mdx similarity index 100% rename from x-pack/packages/security-solution/features/README.mdx rename to x-pack/solutions/security/packages/features/README.mdx diff --git a/x-pack/packages/security-solution/features/config.ts b/x-pack/solutions/security/packages/features/config.ts similarity index 100% rename from x-pack/packages/security-solution/features/config.ts rename to x-pack/solutions/security/packages/features/config.ts diff --git a/x-pack/packages/security-solution/features/index.ts b/x-pack/solutions/security/packages/features/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/index.ts rename to x-pack/solutions/security/packages/features/index.ts diff --git a/x-pack/solutions/security/packages/features/jest.config.js b/x-pack/solutions/security/packages/features/jest.config.js new file mode 100644 index 0000000000000..8179ac021e815 --- /dev/null +++ b/x-pack/solutions/security/packages/features/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/features'], +}; diff --git a/x-pack/packages/security-solution/features/keys.ts b/x-pack/solutions/security/packages/features/keys.ts similarity index 100% rename from x-pack/packages/security-solution/features/keys.ts rename to x-pack/solutions/security/packages/features/keys.ts diff --git a/x-pack/packages/security-solution/features/kibana.jsonc b/x-pack/solutions/security/packages/features/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/features/kibana.jsonc rename to x-pack/solutions/security/packages/features/kibana.jsonc diff --git a/x-pack/packages/security-solution/features/package.json b/x-pack/solutions/security/packages/features/package.json similarity index 100% rename from x-pack/packages/security-solution/features/package.json rename to x-pack/solutions/security/packages/features/package.json diff --git a/x-pack/packages/security-solution/features/privileges.ts b/x-pack/solutions/security/packages/features/privileges.ts similarity index 100% rename from x-pack/packages/security-solution/features/privileges.ts rename to x-pack/solutions/security/packages/features/privileges.ts diff --git a/x-pack/packages/security-solution/features/product_features.ts b/x-pack/solutions/security/packages/features/product_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/product_features.ts rename to x-pack/solutions/security/packages/features/product_features.ts diff --git a/x-pack/packages/security-solution/features/src/assistant/index.ts b/x-pack/solutions/security/packages/features/src/assistant/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/assistant/index.ts rename to x-pack/solutions/security/packages/features/src/assistant/index.ts diff --git a/x-pack/packages/security-solution/features/src/assistant/kibana_features.ts b/x-pack/solutions/security/packages/features/src/assistant/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/assistant/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/assistant/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/assistant/kibana_sub_features.ts b/x-pack/solutions/security/packages/features/src/assistant/kibana_sub_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/assistant/kibana_sub_features.ts rename to x-pack/solutions/security/packages/features/src/assistant/kibana_sub_features.ts diff --git a/x-pack/packages/security-solution/features/src/assistant/product_feature_config.ts b/x-pack/solutions/security/packages/features/src/assistant/product_feature_config.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/assistant/product_feature_config.ts rename to x-pack/solutions/security/packages/features/src/assistant/product_feature_config.ts diff --git a/x-pack/packages/security-solution/features/src/attack_discovery/index.ts b/x-pack/solutions/security/packages/features/src/attack_discovery/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/attack_discovery/index.ts rename to x-pack/solutions/security/packages/features/src/attack_discovery/index.ts diff --git a/x-pack/packages/security-solution/features/src/attack_discovery/kibana_features.ts b/x-pack/solutions/security/packages/features/src/attack_discovery/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/attack_discovery/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/attack_discovery/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/attack_discovery/product_feature_config.ts b/x-pack/solutions/security/packages/features/src/attack_discovery/product_feature_config.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/attack_discovery/product_feature_config.ts rename to x-pack/solutions/security/packages/features/src/attack_discovery/product_feature_config.ts diff --git a/x-pack/packages/security-solution/features/src/cases/index.ts b/x-pack/solutions/security/packages/features/src/cases/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/index.ts rename to x-pack/solutions/security/packages/features/src/cases/index.ts diff --git a/x-pack/packages/security-solution/features/src/cases/product_feature_config.ts b/x-pack/solutions/security/packages/features/src/cases/product_feature_config.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/product_feature_config.ts rename to x-pack/solutions/security/packages/features/src/cases/product_feature_config.ts diff --git a/x-pack/packages/security-solution/features/src/cases/types.ts b/x-pack/solutions/security/packages/features/src/cases/types.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/types.ts rename to x-pack/solutions/security/packages/features/src/cases/types.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v1_features/kibana_features.ts b/x-pack/solutions/security/packages/features/src/cases/v1_features/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v1_features/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/cases/v1_features/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v1_features/kibana_sub_features.ts b/x-pack/solutions/security/packages/features/src/cases/v1_features/kibana_sub_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v1_features/kibana_sub_features.ts rename to x-pack/solutions/security/packages/features/src/cases/v1_features/kibana_sub_features.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v1_features/types.ts b/x-pack/solutions/security/packages/features/src/cases/v1_features/types.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v1_features/types.ts rename to x-pack/solutions/security/packages/features/src/cases/v1_features/types.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v2_features/kibana_features.ts b/x-pack/solutions/security/packages/features/src/cases/v2_features/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v2_features/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/cases/v2_features/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v2_features/kibana_sub_features.ts b/x-pack/solutions/security/packages/features/src/cases/v2_features/kibana_sub_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v2_features/kibana_sub_features.ts rename to x-pack/solutions/security/packages/features/src/cases/v2_features/kibana_sub_features.ts diff --git a/x-pack/packages/security-solution/features/src/constants.ts b/x-pack/solutions/security/packages/features/src/constants.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/constants.ts rename to x-pack/solutions/security/packages/features/src/constants.ts diff --git a/x-pack/packages/security-solution/features/src/helpers.ts b/x-pack/solutions/security/packages/features/src/helpers.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/helpers.ts rename to x-pack/solutions/security/packages/features/src/helpers.ts diff --git a/x-pack/packages/security-solution/features/src/product_features_keys.ts b/x-pack/solutions/security/packages/features/src/product_features_keys.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/product_features_keys.ts rename to x-pack/solutions/security/packages/features/src/product_features_keys.ts diff --git a/x-pack/packages/security-solution/features/src/product_features_privileges.ts b/x-pack/solutions/security/packages/features/src/product_features_privileges.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/product_features_privileges.ts rename to x-pack/solutions/security/packages/features/src/product_features_privileges.ts diff --git a/x-pack/packages/security-solution/features/src/security/index.ts b/x-pack/solutions/security/packages/features/src/security/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/security/index.ts rename to x-pack/solutions/security/packages/features/src/security/index.ts diff --git a/x-pack/packages/security-solution/features/src/security/kibana_features.ts b/x-pack/solutions/security/packages/features/src/security/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/security/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/security/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts b/x-pack/solutions/security/packages/features/src/security/kibana_sub_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts rename to x-pack/solutions/security/packages/features/src/security/kibana_sub_features.ts diff --git a/x-pack/packages/security-solution/features/src/security/product_feature_config.ts b/x-pack/solutions/security/packages/features/src/security/product_feature_config.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/security/product_feature_config.ts rename to x-pack/solutions/security/packages/features/src/security/product_feature_config.ts diff --git a/x-pack/solutions/security/packages/features/src/security/types.ts b/x-pack/solutions/security/packages/features/src/security/types.ts new file mode 100644 index 0000000000000..dda61b6e86b9a --- /dev/null +++ b/x-pack/solutions/security/packages/features/src/security/types.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ProductFeatureSecurityKey, SecuritySubFeatureId } from '../product_features_keys'; +import type { ProductFeatureKibanaConfig } from '../types'; + +export interface SecurityFeatureParams { + /** + * Experimental features. + * Unfortunately these can't be properly Typed due to it requiring an + * import directly from the Security Solution plugin. The list of `keys` in this + * object are defined here: + * @see https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts#L14 + */ + experimentalFeatures: Record; + savedObjects: string[]; +} + +export type DefaultSecurityProductFeaturesConfig = Omit< + Record>, + ProductFeatureSecurityKey.endpointExceptions + // | add not generic security app features here +>; diff --git a/x-pack/packages/security-solution/features/src/types.ts b/x-pack/solutions/security/packages/features/src/types.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/types.ts rename to x-pack/solutions/security/packages/features/src/types.ts diff --git a/x-pack/solutions/security/packages/features/tsconfig.json b/x-pack/solutions/security/packages/features/tsconfig.json new file mode 100644 index 0000000000000..bc415fbae622b --- /dev/null +++ b/x-pack/solutions/security/packages/features/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/features-plugin", + "@kbn/utility-types", + "@kbn/i18n", + "@kbn/core-application-common", + "@kbn/cases-plugin", + "@kbn/securitysolution-rules", + "@kbn/securitysolution-list-constants", + ], + "exclude": ["target/**/*"] +} diff --git a/packages/kbn-index-adapter/README.md b/x-pack/solutions/security/packages/index-adapter/README.md similarity index 100% rename from packages/kbn-index-adapter/README.md rename to x-pack/solutions/security/packages/index-adapter/README.md diff --git a/x-pack/solutions/security/packages/index-adapter/index.ts b/x-pack/solutions/security/packages/index-adapter/index.ts new file mode 100644 index 0000000000000..8f5bf5446863c --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { IndexAdapter } from './src/index_adapter'; +export { IndexPatternAdapter, type InstallIndex } from './src/index_pattern_adapter'; +export { retryTransientEsErrors } from './src/retry_transient_es_errors'; +export { ecsFieldMap, type EcsFieldMap } from './src/field_maps/ecs_field_map'; +export { createOrUpdateIndexTemplate } from './src/create_or_update_index_template'; +export { createOrUpdateComponentTemplate } from './src/create_or_update_component_template'; + +export type { + SetComponentTemplateParams, + SetIndexTemplateParams, + IndexAdapterParams, + InstallParams, +} from './src/index_adapter'; +export * from './src/field_maps/types'; diff --git a/x-pack/solutions/security/packages/index-adapter/jest.config.js b/x-pack/solutions/security/packages/index-adapter/jest.config.js new file mode 100644 index 0000000000000..5162be5bba837 --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/index-adapter'], +}; diff --git a/packages/kbn-index-adapter/kibana.jsonc b/x-pack/solutions/security/packages/index-adapter/kibana.jsonc similarity index 100% rename from packages/kbn-index-adapter/kibana.jsonc rename to x-pack/solutions/security/packages/index-adapter/kibana.jsonc diff --git a/x-pack/solutions/security/packages/index-adapter/package.json b/x-pack/solutions/security/packages/index-adapter/package.json new file mode 100644 index 0000000000000..557f2133488cd --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/index-adapter", + "version": "1.0.0", + "description": "Utility library for Elasticsearch index management", + "license": "Elastic License 2.0", + "private": true +} \ No newline at end of file diff --git a/packages/kbn-index-adapter/src/create_or_update_component_template.test.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.test.ts similarity index 96% rename from packages/kbn-index-adapter/src/create_or_update_component_template.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.test.ts index 2bedbec8691b2..c99952689b7b0 100644 --- a/packages/kbn-index-adapter/src/create_or_update_component_template.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; diff --git a/packages/kbn-index-adapter/src/create_or_update_component_template.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts similarity index 91% rename from packages/kbn-index-adapter/src/create_or_update_component_template.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts index 73abf92c9e4af..6a7f87539de9b 100644 --- a/packages/kbn-index-adapter/src/create_or_update_component_template.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { diff --git a/packages/kbn-index-adapter/src/create_or_update_index.test.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.test.ts similarity index 92% rename from packages/kbn-index-adapter/src/create_or_update_index.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.test.ts index 6c32b183e1fda..22d126782f68c 100644 --- a/packages/kbn-index-adapter/src/create_or_update_index.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; diff --git a/packages/kbn-index-adapter/src/create_or_update_index.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.ts similarity index 94% rename from packages/kbn-index-adapter/src/create_or_update_index.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.ts index ff825c61305b7..ce9528d8277fc 100644 --- a/packages/kbn-index-adapter/src/create_or_update_index.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { IndexName } from '@elastic/elasticsearch/lib/api/types'; diff --git a/packages/kbn-index-adapter/src/create_or_update_index_template.test.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.test.ts similarity index 94% rename from packages/kbn-index-adapter/src/create_or_update_index_template.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.test.ts index 5f53c329e8cd5..eb85b0931f9ef 100644 --- a/packages/kbn-index-adapter/src/create_or_update_index_template.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; diff --git a/packages/kbn-index-adapter/src/create_or_update_index_template.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts similarity index 83% rename from packages/kbn-index-adapter/src/create_or_update_index_template.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts index 586b76ff44f29..d7e4b25771b86 100644 --- a/packages/kbn-index-adapter/src/create_or_update_index_template.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { diff --git a/packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts b/x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts similarity index 88% rename from packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts rename to x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts index a15c8480e6fc4..424c2af01d4c2 100644 --- a/packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { EcsFlat } from '@elastic/ecs'; diff --git a/packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.test.ts b/x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.test.ts similarity index 90% rename from packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.test.ts index 5a4bffd3c46a5..7d8a17a84fe42 100644 --- a/packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { mappingFromFieldMap } from './mapping_from_field_map'; diff --git a/packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.ts b/x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.ts similarity index 78% rename from packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.ts rename to x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.ts index 0d416ae8356e9..c40dcbef695c5 100644 --- a/packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { MappingTypeMapping } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; diff --git a/x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts b/x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts new file mode 100644 index 0000000000000..9c96fa2d796f6 --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export interface AllowedValue { + description?: string; + name?: string; +} + +export interface MultiField { + flat_name: string; + name: string; + type: string; +} + +export interface EcsMetadata { + allowed_values?: AllowedValue[]; + dashed_name: string; + description: string; + doc_values?: boolean; + example?: string | number | boolean; + flat_name: string; + ignore_above?: number; + index?: boolean; + level: string; + multi_fields?: MultiField[]; + name: string; + normalize: string[]; + required?: boolean; + scaling_factor?: number; + short: string; + type: string; + properties?: Record; +} + +export type FieldMap = Record< + T, + { + type: string; + required: boolean; + array?: boolean; + doc_values?: boolean; + enabled?: boolean; + fields?: Record; + format?: string; + ignore_above?: number; + multi_fields?: MultiField[]; + index?: boolean; + path?: string; + scaling_factor?: number; + dynamic?: boolean | 'strict'; + properties?: Record; + inference_id?: string; + copy_to?: string; + } +>; + +// This utility type flattens all the keys of a schema object and its nested objects as a union type. +// Its purpose is to ensure that the FieldMap keys are always in sync with the schema object. +// It assumes all optional fields of the schema are required in the field map, they can always be omitted from the resulting type. +export type SchemaFieldMapKeys< + T extends Record, + Key = keyof T +> = Key extends string + ? NonNullable extends Record + ? `${Key}` | `${Key}.${SchemaFieldMapKeys>}` + : `${Key}` + : never; diff --git a/packages/kbn-index-adapter/src/index_adapter.ts b/x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts similarity index 92% rename from packages/kbn-index-adapter/src/index_adapter.ts rename to x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts index eef2ce529d78a..f8395db9fa9b9 100644 --- a/packages/kbn-index-adapter/src/index_adapter.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { diff --git a/packages/kbn-index-adapter/src/index_pattern_adapter.ts b/x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts similarity index 90% rename from packages/kbn-index-adapter/src/index_pattern_adapter.ts rename to x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts index 38a96a3c65b83..ae5e692cd55bc 100644 --- a/packages/kbn-index-adapter/src/index_pattern_adapter.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { createIndex, updateIndices } from './create_or_update_index'; diff --git a/packages/kbn-index-adapter/src/install_with_timeout.test.ts b/x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.test.ts similarity index 80% rename from packages/kbn-index-adapter/src/install_with_timeout.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.test.ts index 6743604ba24f3..43cdb8ce734ae 100644 --- a/packages/kbn-index-adapter/src/install_with_timeout.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { loggerMock } from '@kbn/logging-mocks'; diff --git a/packages/kbn-index-adapter/src/install_with_timeout.ts b/x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.ts similarity index 81% rename from packages/kbn-index-adapter/src/install_with_timeout.ts rename to x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.ts index 79b78b7bb6569..bb88b29cfe95b 100644 --- a/packages/kbn-index-adapter/src/install_with_timeout.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { firstValueFrom, type Observable } from 'rxjs'; diff --git a/packages/kbn-index-adapter/src/resource_installer_utils.test.ts b/x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.test.ts similarity index 92% rename from packages/kbn-index-adapter/src/resource_installer_utils.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.test.ts index 31d4a3abcbb0d..2067d17e5cb36 100644 --- a/packages/kbn-index-adapter/src/resource_installer_utils.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { getIndexTemplate, getComponentTemplate } from './resource_installer_utils'; diff --git a/packages/kbn-index-adapter/src/resource_installer_utils.ts b/x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.ts similarity index 87% rename from packages/kbn-index-adapter/src/resource_installer_utils.ts rename to x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.ts index eb6e2490000b2..dbe958dc019d7 100644 --- a/packages/kbn-index-adapter/src/resource_installer_utils.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { diff --git a/packages/kbn-index-adapter/src/retry_transient_es_errors.test.ts b/x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.test.ts similarity index 87% rename from packages/kbn-index-adapter/src/retry_transient_es_errors.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.test.ts index 1b4582587f972..9120bdab51866 100644 --- a/packages/kbn-index-adapter/src/retry_transient_es_errors.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.test.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import { loggingSystemMock } from '@kbn/core/server/mocks'; diff --git a/packages/kbn-index-adapter/src/retry_transient_es_errors.ts b/x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts similarity index 79% rename from packages/kbn-index-adapter/src/retry_transient_es_errors.ts rename to x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts index 2b6ddea509824..6dd568de3b98c 100644 --- a/packages/kbn-index-adapter/src/retry_transient_es_errors.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts @@ -1,10 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ import type { Logger } from '@kbn/core/server'; diff --git a/x-pack/solutions/security/packages/index-adapter/tsconfig.json b/x-pack/solutions/security/packages/index-adapter/tsconfig.json new file mode 100644 index 0000000000000..fb98020940ad0 --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + ] + }, + "include": ["**/*.ts"], + "kbn_references": [ + "@kbn/core", + "@kbn/std", + "@kbn/safer-lodash-set", + "@kbn/logging-mocks", + ], + "exclude": [ + "target/**/*" + ], +} diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/README.md b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/README.md similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/README.md rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/README.md diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/index.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/index.ts new file mode 100644 index 0000000000000..45575316b29d9 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './src/components'; +export { useFetchGraphData } from './src/hooks'; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/jest.config.js b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/jest.config.js new file mode 100644 index 0000000000000..0448a8a11bc86 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/jest.config.js @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + roots: ['/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph'], + rootDir: '../../../../../..', + transform: { + '^.+\\.(js|tsx?)$': + '/x-pack/packages/kbn-cloud-security-posture/storybook/config/babel_with_emotion.ts', + }, + setupFiles: ['jest-canvas-mock'], + setupFilesAfterEnv: [ + '/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/setup_tests.ts', + ], +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/kibana.jsonc b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/kibana.jsonc rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/kibana.jsonc diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/package.json b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/package.json similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/package.json rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/package.json diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/setup_tests.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/setup_tests.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/setup_tests.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/setup_tests.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws.svg b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws.svg similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws.svg rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws.svg diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws_ec2.svg b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws_ec2.svg similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws_ec2.svg rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws_ec2.svg diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws_s3.svg b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws_s3.svg similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws_s3.svg rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/assets/icons/aws_s3.svg diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/assets/icons/okta.svg b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/assets/icons/okta.svg similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/assets/icons/okta.svg rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/assets/icons/okta.svg diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/common/constants.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/common/constants.ts new file mode 100644 index 0000000000000..307cbd65123e4 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/common/constants.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const EVENT_GRAPH_VISUALIZATION_API = '/internal/cloud_security_posture/graph' as const; + +export const RELATED_ENTITY = 'related.entity' as const; +export const ACTOR_ENTITY_ID = 'actor.entity.id' as const; +export const TARGET_ENTITY_ID = 'target.entity.id' as const; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/deafult_edge.stories.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/deafult_edge.stories.tsx similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/deafult_edge.stories.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/deafult_edge.stories.tsx index 4d6c689dd643b..dd1c956a55e55 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/deafult_edge.stories.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/deafult_edge.stories.tsx @@ -88,11 +88,11 @@ const Template: Story = (args: NodeViewModel) => { const initialEdges = [ { - id: 'source-' + args.id, + id: `source-${args.id}`, source: 'source', target: args.id, data: { - id: 'source-' + args.id, + id: `source-${args.id}`, source: 'source', sourceShape: 'rectangle', target: args.id, @@ -103,11 +103,11 @@ const Template: Story = (args: NodeViewModel) => { type: 'default', }, { - id: args.id + '-target', + id: `${args.id}-target`, source: args.id, target: 'target', data: { - id: args.id + '-target', + id: `${args.id}-target`, source: args.id, sourceShape: 'label', target: 'target', diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/default_edge.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/default_edge.tsx similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/default_edge.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/default_edge.tsx diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/index.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/index.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/index.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/index.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/styles.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/styles.tsx similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/styles.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/styles.tsx diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/utils.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/utils.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/edge/utils.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/edge/utils.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.test.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.test.tsx similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.test.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.test.tsx diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx similarity index 99% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx index 0b956cb19e10d..a97a1c74698ca 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx @@ -174,7 +174,7 @@ export const Graph: React.FC = ({ minZoom={0.1} > {interactive && } - {' '} +

); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.stories.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.stories.tsx similarity index 93% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.stories.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.stories.tsx index 6d5b3c1b372fc..a4561f404829a 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.stories.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.stories.tsx @@ -6,9 +6,8 @@ */ import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import { ThemeProvider } from '@emotion/react'; +import { ThemeProvider, css } from '@emotion/react'; import { Story } from '@storybook/react'; -import { css } from '@emotion/react'; import { EuiListGroup, EuiHorizontalRule } from '@elastic/eui'; import type { EntityNodeViewModel, NodeProps } from '..'; import { Graph } from '..'; @@ -77,6 +76,7 @@ const useExpandButtonPopover = () => { closePopover(); }, [closePopover]); + // eslint-disable-next-line react/display-name const PopoverComponent = memo(() => ( { const useNodePopover = () => { const { id, state, actions } = useGraphPopover('node-popover'); + // eslint-disable-next-line react/display-name const PopoverComponent = memo(() => ( { isOpen={state.isOpen} anchorElement={state.anchorElement} closePopover={actions.closePopover} + // eslint-disable-next-line react/jsx-no-literals > TODO @@ -160,17 +162,21 @@ const Template: Story = () => { const popovers = [expandNodePopover, nodePopover]; const isPopoverOpen = popovers.some((popover) => popover.state.isOpen); + // eslint-disable-next-line @typescript-eslint/no-explicit-any const popoverOpenWrapper = (cb: Function, ...args: any[]) => { [expandNodePopover.actions.closePopover, nodePopover.actions.closePopover].forEach( (closePopover) => { closePopover(); } ); + // eslint-disable-next-line prefer-spread cb.apply(null, args); }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any const expandButtonClickHandler = (...args: any[]) => popoverOpenWrapper(expandNodePopover.onNodeExpandButtonClick, ...args); + // eslint-disable-next-line @typescript-eslint/no-explicit-any const nodeClickHandler = (...args: any[]) => popoverOpenWrapper(nodePopover.onNodeClick, ...args); const nodes: EntityNodeViewModel[] = useMemo( diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.tsx similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/graph_popover.tsx diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts index 868461f99cdee..d0cf9f0f150cd 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts @@ -50,6 +50,10 @@ export const layoutGraph = ( nodesById[node.id] = node; } + if (node.parentId) { + return; + } + g.setNode(node.id, { ...node, ...size, @@ -59,6 +63,14 @@ export const layoutGraph = ( Dagre.layout(g); const layoutedNodes = nodes.map((node) => { + // For grouped nodes, we want to keep the original position relative to the parent + if (node.data.shape === 'label' && node.data.parentId) { + return { + ...node, + position: nodesById[node.data.id].position, + }; + } + const dagreNode = g.node(node.data.id); // We are shifting the dagre node position (anchor=center center) to the top left @@ -66,13 +78,7 @@ export const layoutGraph = ( const x = dagreNode.x - (dagreNode.width ?? 0) / 2; const y = dagreNode.y - (dagreNode.height ?? 0) / 2; - // For grouped nodes, we want to keep the original position relative to the parent - if (node.data.shape === 'label' && node.data.parentId) { - return { - ...node, - position: nodesById[node.data.id].position, - }; - } else if (node.data.shape === 'group') { + if (node.data.shape === 'group') { return { ...node, position: { x, y }, @@ -130,7 +136,7 @@ const layoutGroupChildren = ( const childSize = calcLabelSize(child.data.label); child.position = { x: groupNodeWidth / 2 - childSize.width / 2, - y: index * (childSize.height * 2 + space), + y: index * (childSize.height + space), }; }); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx similarity index 92% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx index f5bca30d1e5ae..dd8a5f0c56a72 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx @@ -46,12 +46,9 @@ export const useGraphPopover = (id: string): GraphPopoverState => { const state: PopoverState = useMemo(() => ({ isOpen, anchorElement }), [isOpen, anchorElement]); - return useMemo( - () => ({ - id, - actions, - state, - }), - [id, actions, state] - ); + return { + id, + actions, + state, + }; }; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/utils.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/utils.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/utils.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph/utils.ts diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.tsx new file mode 100644 index 0000000000000..081b4ec28c6a5 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.tsx @@ -0,0 +1,258 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo, useCallback, useMemo, useState } from 'react'; +import { SearchBar } from '@kbn/unified-search-plugin/public'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { + BooleanRelation, + buildEsQuery, + isCombinedFilter, + buildCombinedFilter, + isFilter, + FilterStateStore, +} from '@kbn/es-query'; +import type { Filter, Query, TimeRange, PhraseFilter } from '@kbn/es-query'; +import { css } from '@emotion/react'; +import { getEsQueryConfig } from '@kbn/data-service'; +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { Graph } from '../../..'; +import { useGraphNodeExpandPopover } from './use_graph_node_expand_popover'; +import { useFetchGraphData } from '../../hooks/use_fetch_graph_data'; +import { GRAPH_INVESTIGATION_TEST_ID } from '../test_ids'; +import { ACTOR_ENTITY_ID, RELATED_ENTITY, TARGET_ENTITY_ID } from '../../common/constants'; + +const CONTROLLED_BY_GRAPH_INVESTIGATION_FILTER = 'graph-investigation'; + +const buildPhraseFilter = (field: string, value: string, dataViewId?: string): PhraseFilter => ({ + meta: { + key: field, + index: dataViewId, + negate: false, + disabled: false, + type: 'phrase', + field, + controlledBy: CONTROLLED_BY_GRAPH_INVESTIGATION_FILTER, + params: { + query: value, + }, + }, + query: { + match_phrase: { + [field]: value, + }, + }, +}); + +/** + * Adds a filter to the existing list of filters based on the provided key and value. + * It will always use the first filter in the list to build a combined filter with the new filter. + * + * @param dataViewId - The ID of the data view to which the filter belongs. + * @param prev - The previous list of filters. + * @param key - The key for the filter. + * @param value - The value for the filter. + * @returns A new list of filters with the added filter. + */ +const addFilter = (dataViewId: string, prev: Filter[], key: string, value: string) => { + const [firstFilter, ...otherFilters] = prev; + + if (isCombinedFilter(firstFilter) && firstFilter?.meta?.relation === BooleanRelation.OR) { + return [ + { + ...firstFilter, + meta: { + ...firstFilter.meta, + params: [ + ...(Array.isArray(firstFilter.meta.params) ? firstFilter.meta.params : []), + buildPhraseFilter(key, value), + ], + }, + }, + ...otherFilters, + ]; + } else if (isFilter(firstFilter) && firstFilter.meta?.type !== 'custom') { + return [ + buildCombinedFilter(BooleanRelation.OR, [firstFilter, buildPhraseFilter(key, value)], { + id: dataViewId, + }), + ...otherFilters, + ]; + } else { + return [ + { + $state: { + store: FilterStateStore.APP_STATE, + }, + ...buildPhraseFilter(key, value, dataViewId), + }, + ...prev, + ]; + } +}; + +const useGraphPopovers = ( + dataViewId: string, + setSearchFilters: React.Dispatch> +) => { + const nodeExpandPopover = useGraphNodeExpandPopover({ + onExploreRelatedEntitiesClick: (node) => { + setSearchFilters((prev) => addFilter(dataViewId, prev, RELATED_ENTITY, node.id)); + }, + onShowActionsByEntityClick: (node) => { + setSearchFilters((prev) => addFilter(dataViewId, prev, ACTOR_ENTITY_ID, node.id)); + }, + onShowActionsOnEntityClick: (node) => { + setSearchFilters((prev) => addFilter(dataViewId, prev, TARGET_ENTITY_ID, node.id)); + }, + }); + + const openPopoverCallback = useCallback( + (cb: Function, ...args: unknown[]) => { + [nodeExpandPopover].forEach(({ actions: { closePopover } }) => { + closePopover(); + }); + cb(...args); + }, + [nodeExpandPopover] + ); + + return { nodeExpandPopover, openPopoverCallback }; +}; + +interface GraphInvestigationProps { + dataView: DataView; + eventIds: string[]; + timestamp: string | null; +} + +/** + * Graph investigation view allows the user to expand nodes and view related entities. + */ +export const GraphInvestigation: React.FC = memo( + ({ dataView, eventIds, timestamp = new Date().toISOString() }: GraphInvestigationProps) => { + const [searchFilters, setSearchFilters] = useState(() => []); + const [timeRange, setTimeRange] = useState({ + from: `${timestamp}||-30m`, + to: `${timestamp}||+30m`, + }); + + const { + services: { uiSettings }, + } = useKibana(); + const query = useMemo( + () => + buildEsQuery( + dataView, + [], + [...searchFilters], + getEsQueryConfig(uiSettings as Parameters[0]) + ), + [searchFilters, dataView, uiSettings] + ); + + const { nodeExpandPopover, openPopoverCallback } = useGraphPopovers( + dataView?.id ?? '', + setSearchFilters + ); + const expandButtonClickHandler = (...args: unknown[]) => + openPopoverCallback(nodeExpandPopover.onNodeExpandButtonClick, ...args); + const isPopoverOpen = [nodeExpandPopover].some(({ state: { isOpen } }) => isOpen); + const { data, refresh, isFetching } = useFetchGraphData({ + req: { + query: { + eventIds, + esQuery: query, + start: timeRange.from, + end: timeRange.to, + }, + }, + options: { + refetchOnWindowFocus: false, + keepPreviousData: true, + }, + }); + + const nodes = useMemo(() => { + return ( + data?.nodes.map((node) => { + const nodeHandlers = + node.shape !== 'label' && node.shape !== 'group' + ? { + expandButtonClick: expandButtonClickHandler, + } + : undefined; + return { ...node, ...nodeHandlers }; + }) ?? [] + ); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [data?.nodes]); + + return ( + <> + + {dataView && ( + + + {...{ + appName: 'graph-investigation', + intl: null, + showFilterBar: true, + showDatePicker: true, + showAutoRefreshOnly: false, + showSaveQuery: false, + showQueryInput: false, + isLoading: isFetching, + isAutoRefreshDisabled: true, + dateRangeFrom: timeRange.from, + dateRangeTo: timeRange.to, + query: { query: '', language: 'kuery' }, + indexPatterns: [dataView], + filters: searchFilters, + submitButtonStyle: 'iconOnly', + onFiltersUpdated: (newFilters) => { + setSearchFilters(newFilters); + }, + onQuerySubmit: (payload, isUpdate) => { + if (isUpdate) { + setTimeRange({ ...payload.dateRange }); + } else { + refresh(); + } + }, + }} + /> + + )} + + + + + + + ); + } +); + +GraphInvestigation.displayName = 'GraphInvestigation'; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_node_expand_popover.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_node_expand_popover.tsx new file mode 100644 index 0000000000000..2fd10aa5c8c29 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_node_expand_popover.tsx @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo } from 'react'; +import { EuiListGroup } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { ExpandPopoverListItem } from '../styles'; +import { GraphPopover } from '../../..'; +import { + GRAPH_NODE_EXPAND_POPOVER_TEST_ID, + GRAPH_NODE_POPOVER_SHOW_RELATED_ITEM_ID, + GRAPH_NODE_POPOVER_SHOW_ACTIONS_BY_ITEM_ID, + GRAPH_NODE_POPOVER_SHOW_ACTIONS_ON_ITEM_ID, +} from '../test_ids'; + +interface GraphNodeExpandPopoverProps { + isOpen: boolean; + anchorElement: HTMLElement | null; + closePopover: () => void; + onShowRelatedEntitiesClick: () => void; + onShowActionsByEntityClick: () => void; + onShowActionsOnEntityClick: () => void; +} + +export const GraphNodeExpandPopover: React.FC = memo( + ({ + isOpen, + anchorElement, + closePopover, + onShowRelatedEntitiesClick, + onShowActionsByEntityClick, + onShowActionsOnEntityClick, + }) => { + return ( + + + + + + + + ); + } +); + +GraphNodeExpandPopover.displayName = 'GraphNodeExpandPopover'; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/use_graph_node_expand_popover.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/use_graph_node_expand_popover.tsx new file mode 100644 index 0000000000000..520df39c8b47a --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/use_graph_node_expand_popover.tsx @@ -0,0 +1,109 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo, useCallback, useRef, useState } from 'react'; +import { useGraphPopover } from '../../..'; +import type { ExpandButtonClickCallback, NodeProps } from '../types'; +import { GraphNodeExpandPopover } from './graph_node_expand_popover'; + +interface UseGraphNodeExpandPopoverArgs { + onExploreRelatedEntitiesClick: (node: NodeProps) => void; + onShowActionsByEntityClick: (node: NodeProps) => void; + onShowActionsOnEntityClick: (node: NodeProps) => void; +} + +export const useGraphNodeExpandPopover = ({ + onExploreRelatedEntitiesClick, + onShowActionsByEntityClick, + onShowActionsOnEntityClick, +}: UseGraphNodeExpandPopoverArgs) => { + const { id, state, actions } = useGraphPopover('node-expand-popover'); + const { openPopover, closePopover } = actions; + + const selectedNode = useRef(null); + const unToggleCallbackRef = useRef<(() => void) | null>(null); + const [pendingOpen, setPendingOpen] = useState<{ + node: NodeProps; + el: HTMLElement; + unToggleCallback: () => void; + } | null>(null); + + // Handler to close the popover, reset selected node and unToggle callback + const closePopoverHandler = useCallback(() => { + selectedNode.current = null; + unToggleCallbackRef.current?.(); + unToggleCallbackRef.current = null; + closePopover(); + }, [closePopover]); + + /** + * Handles the click event on the node expand button. + * Closes the current popover if open and sets the pending open state + * if the clicked node is different from the currently selected node. + */ + const onNodeExpandButtonClick: ExpandButtonClickCallback = useCallback( + (e, node, unToggleCallback) => { + // Close the current popover if open + closePopoverHandler(); + + if (selectedNode.current?.id !== node.id) { + // Set the pending open state + setPendingOpen({ node, el: e.currentTarget, unToggleCallback }); + } + }, + [closePopoverHandler] + ); + + // PopoverComponent is a memoized component that renders the GraphNodeExpandPopover + // It handles the display of the popover and the actions that can be performed on the node + + // eslint-disable-next-line react/display-name + const PopoverComponent = memo(() => ( + { + onExploreRelatedEntitiesClick(selectedNode.current as NodeProps); + closePopoverHandler(); + }} + onShowActionsByEntityClick={() => { + onShowActionsByEntityClick(selectedNode.current as NodeProps); + closePopoverHandler(); + }} + onShowActionsOnEntityClick={() => { + onShowActionsOnEntityClick(selectedNode.current as NodeProps); + closePopoverHandler(); + }} + /> + )); + + // Open pending popover if the popover is not open + // This block checks if there is a pending popover to be opened. + // If the popover is not currently open and there is a pending popover, + // it sets the selected node, stores the unToggle callback, and opens the popover. + if (!state.isOpen && pendingOpen) { + const { node, el, unToggleCallback } = pendingOpen; + + selectedNode.current = node; + unToggleCallbackRef.current = unToggleCallback; + openPopover(el); + + setPendingOpen(null); + } + + return { + onNodeExpandButtonClick, + PopoverComponent, + id, + actions: { + ...actions, + closePopover: closePopoverHandler, + }, + state, + }; +}; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.test.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.test.tsx new file mode 100644 index 0000000000000..6cf859bca9397 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.test.tsx @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { composeStories } from '@storybook/testing-react'; +import { render } from '@testing-library/react'; +import React from 'react'; +import * as stories from './graph_layout.stories'; + +const { GraphLargeStackedEdgeCases } = composeStories(stories); + +const TRANSLATE_XY_REGEX = + /translate\(\s*([+-]?\d+(\.\d+)?)(px|%)?\s*,\s*([+-]?\d+(\.\d+)?)(px|%)?\s*\)/; + +interface Rect { + left: number; + top: number; + right: number; + bottom: number; +} + +const getLabelRect = (el: HTMLElement): Rect | undefined => { + const match = el.style.transform.match(TRANSLATE_XY_REGEX); + + if (!match || match.length < 5) { + return; + } + + return { + left: Number(match[1]), + right: Number(match[1]) + 120, + top: Number(match[4]), + bottom: Number(match[4]) + 32, + }; +}; + +const rectIntersect = (rect1: Rect, rect2: Rect) => { + return !( + rect1.top > rect2.bottom || + rect1.right < rect2.left || + rect1.bottom < rect2.top || + rect1.left > rect2.right + ); +}; + +describe('GraphLargeStackedEdgeCases story', () => { + it('all labels should be visible', async () => { + const { getAllByText } = render(); + + const labels = GraphLargeStackedEdgeCases.args?.nodes?.filter((node) => node.shape === 'label'); + + // With JSDOM toBeVisible can't check if elements are visually obscured by other overlapping elements + // This is a workaround which gives a rough estimation of a label's bounding rectangle and check for intersections + const labelsBoundingRect: Rect[] = []; + const labelElements: Set = new Set(); + + for (const { label } of labels ?? []) { + // Get all label nodes that contains the label's text + const allLabelElements = getAllByText( + (_content, element) => element?.textContent === `${label!}`, + { + exact: true, + selector: 'div.react-flow__node-label', + } + ); + expect(allLabelElements.length).toBeGreaterThan(0); + + for (const labelElm of allLabelElements) { + const id = labelElm.getAttribute('data-id'); + + // Same label can appear more than once in the graph, so we skip them if already scanned + if (labelElements.has(id!)) { + // eslint-disable-next-line no-continue + continue; + } + labelElements.add(id!); + + expect(labelElm).toBeVisible(); + const labelRect = getLabelRect(labelElm); + expect(labelRect).not.toBeUndefined(); + + // Checks if current rect intersects with other labels + for (const currRect of labelsBoundingRect) { + expect(rectIntersect(currRect, labelRect!)).toBeFalsy(); + } + + labelsBoundingRect.push(labelRect!); + } + } + }); +}); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx similarity index 95% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx index 140e81238d390..21a75d2500fec 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx @@ -6,10 +6,9 @@ */ import React from 'react'; -import { ThemeProvider } from '@emotion/react'; +import { ThemeProvider, css } from '@emotion/react'; import { Story } from '@storybook/react'; import { Writable } from '@kbn/utility-types'; -import { css } from '@emotion/react'; import type { EdgeViewModel, LabelNodeViewModel, @@ -503,3 +502,31 @@ GraphStackedEdgeCases.args = { }, ]), }; + +export const GraphLargeStackedEdgeCases = Template.bind({}); + +GraphLargeStackedEdgeCases.args = { + ...extractEdges([ + ...baseGraph, + ...Array(10) + .fill(0) + .map((_v, idx) => ({ + id: 'a(oktauser)-b(hackeruser)', + source: 'oktauser', + target: 'hackeruser', + label: `CreateUser${idx}`, + color: 'primary', + shape: 'label', + })), + ...Array(10) + .fill(0) + .map((_v, idx) => ({ + id: 'a(siem-windows)-b(user)', + source: 'siem-windows', + target: 'user', + label: `User login to OKTA${idx}`, + color: 'danger', + shape: 'label', + })), + ]), +}; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/index.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/index.ts new file mode 100644 index 0000000000000..d3cd397764e60 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { Graph } from './graph/graph'; +export { GraphInvestigation } from './graph_investigation/graph_investigation'; +export { GraphPopover } from './graph/graph_popover'; +export { useGraphPopover } from './graph/use_graph_popover'; +export type { GraphProps } from './graph/graph'; +export type { + NodeViewModel, + EdgeViewModel, + GroupNodeViewModel, + LabelNodeViewModel, + EntityNodeViewModel, + NodeProps, +} from './types'; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/mock/react_flow.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/mock/react_flow.ts similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/mock/react_flow.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/mock/react_flow.ts index 35282dedcc6de..d28a50ba20c33 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/mock/react_flow.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/mock/react_flow.ts @@ -60,6 +60,7 @@ export const mockReactFlow = () => { }, }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any (global.SVGElement as any).prototype.getBBox = () => ({ x: 0, y: 0, diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/mock/test_providers.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/mock/test_providers.tsx similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/mock/test_providers.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/mock/test_providers.tsx diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/button.stories.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/button.stories.tsx similarity index 95% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/button.stories.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/button.stories.tsx index 4a034c05ee166..7dc46ac6eb82c 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/button.stories.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/button.stories.tsx @@ -5,6 +5,8 @@ * 2.0. */ +/* eslint-disable react/jsx-no-literals */ + import React from 'react'; import { ThemeProvider } from '@emotion/react'; import { Story } from '@storybook/react'; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/diamond_node.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/diamond_node.tsx similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/diamond_node.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/diamond_node.tsx index 75ad989b625e8..c974c0c9a60e6 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/diamond_node.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/diamond_node.tsx @@ -24,6 +24,7 @@ import { NodeExpandButton } from './node_expand_button'; const NODE_WIDTH = 99; const NODE_HEIGHT = 98; +// eslint-disable-next-line react/display-name export const DiamondNode: React.FC = memo((props: NodeProps) => { const { id, color, icon, label, interactive, expandButtonClick, nodeClick } = props.data as EntityNodeViewModel; @@ -80,7 +81,7 @@ export const DiamondNode: React.FC = memo((props: NodeProps) => { style={HandleStyleOverride} /> - {Boolean(label) ? label : id} + {label ? label : id} ); }); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/edge_group_node.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/edge_group_node.tsx similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/edge_group_node.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/edge_group_node.tsx index a3dd064d16ab7..05a61977cdcb1 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/edge_group_node.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/edge_group_node.tsx @@ -10,6 +10,7 @@ import { Handle, NodeResizeControl, Position } from '@xyflow/react'; import { HandleStyleOverride } from './styles'; import type { NodeProps } from '../types'; +// eslint-disable-next-line react/display-name export const EdgeGroupNode: React.FC = memo((props: NodeProps) => { // Handles order horizontally is: in > inside > out > outside return ( diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/ellipse_node.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/ellipse_node.tsx similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/ellipse_node.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/ellipse_node.tsx index c9bd363130dca..7fccea3b6bcf6 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/ellipse_node.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/ellipse_node.tsx @@ -24,6 +24,7 @@ import { NodeExpandButton } from './node_expand_button'; const NODE_WIDTH = 90; const NODE_HEIGHT = 90; +// eslint-disable-next-line react/display-name export const EllipseNode: React.FC = memo((props: NodeProps) => { const { id, color, icon, label, interactive, expandButtonClick, nodeClick } = props.data as EntityNodeViewModel; @@ -80,7 +81,7 @@ export const EllipseNode: React.FC = memo((props: NodeProps) => { style={HandleStyleOverride} /> - {Boolean(label) ? label : id} + {label ? label : id} ); }); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/get_span_icon.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/get_span_icon.ts similarity index 91% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/get_span_icon.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/get_span_icon.ts index 9aa77f03c3eb6..b5d092ddf25ef 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/get_span_icon.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/get_span_icon.ts @@ -10,6 +10,7 @@ import awsEc2Icon from '../../assets/icons/aws_ec2.svg'; import awsS3Icon from '../../assets/icons/aws_s3.svg'; import oktaIcon from '../../assets/icons/okta.svg'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any const icons: Record = { aws: awsIcon, aws_ec2: awsEc2Icon, diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/hexagon_node.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/hexagon_node.tsx similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/hexagon_node.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/hexagon_node.tsx index 9d155999e76ca..ca90094344072 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/hexagon_node.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/hexagon_node.tsx @@ -24,6 +24,7 @@ import { NodeExpandButton } from './node_expand_button'; const NODE_WIDTH = 87; const NODE_HEIGHT = 96; +// eslint-disable-next-line react/display-name export const HexagonNode: React.FC = memo((props: NodeProps) => { const { id, color, icon, label, interactive, expandButtonClick, nodeClick } = props.data as EntityNodeViewModel; @@ -80,7 +81,7 @@ export const HexagonNode: React.FC = memo((props: NodeProps) => { style={HandleStyleOverride} /> - {Boolean(label) ? label : id} + {label ? label : id} ); }); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/index.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/index.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/index.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/index.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/label_node.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/label_node.tsx similarity index 93% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/label_node.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/label_node.tsx index 2f23e5ab07513..62ee671659662 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/label_node.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/label_node.tsx @@ -10,6 +10,7 @@ import { Handle, Position } from '@xyflow/react'; import { LabelNodeContainer, LabelShape, HandleStyleOverride, LabelShapeOnHover } from './styles'; import type { LabelNodeViewModel, NodeProps } from '../types'; +// eslint-disable-next-line react/display-name export const LabelNode: React.FC = memo((props: NodeProps) => { const { id, color, label, interactive } = props.data as LabelNodeViewModel; @@ -17,7 +18,7 @@ export const LabelNode: React.FC = memo((props: NodeProps) => { {interactive && } - {Boolean(label) ? label : id} + {label ? label : id} { onClick={onClickHandler} iconSize="m" aria-label="Open or close node actions" + data-test-subj="nodeExpandButton" /> ); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/pentagon_node.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/pentagon_node.tsx similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/pentagon_node.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/pentagon_node.tsx index f2745cef7ec80..159f78a83b279 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/pentagon_node.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/pentagon_node.tsx @@ -29,6 +29,7 @@ const PentagonShapeOnHover = styled(NodeShapeOnHoverSvg)` const NODE_WIDTH = 91; const NODE_HEIGHT = 88; +// eslint-disable-next-line react/display-name export const PentagonNode: React.FC = memo((props: NodeProps) => { const { id, color, icon, label, interactive, expandButtonClick, nodeClick } = props.data as EntityNodeViewModel; @@ -85,7 +86,7 @@ export const PentagonNode: React.FC = memo((props: NodeProps) => { style={HandleStyleOverride} /> - {Boolean(label) ? label : id} + {label ? label : id} ); }); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/rectangle_node.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/rectangle_node.tsx similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/rectangle_node.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/rectangle_node.tsx index f85b102c7e445..6884974982838 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/rectangle_node.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/rectangle_node.tsx @@ -24,6 +24,7 @@ import { NodeExpandButton } from './node_expand_button'; const NODE_WIDTH = 81; const NODE_HEIGHT = 80; +// eslint-disable-next-line react/display-name export const RectangleNode: React.FC = memo((props: NodeProps) => { const { id, color, icon, label, interactive, expandButtonClick, nodeClick } = props.data as EntityNodeViewModel; @@ -80,7 +81,7 @@ export const RectangleNode: React.FC = memo((props: NodeProps) => { style={HandleStyleOverride} /> - {Boolean(label) ? label : id} + {label ? label : id} ); }); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/diamond_shape.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/diamond_shape.tsx similarity index 98% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/diamond_shape.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/diamond_shape.tsx index 126a5702cf5d0..0f0cce4e744c7 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/diamond_shape.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/diamond_shape.tsx @@ -8,6 +8,7 @@ import React, { memo } from 'react'; import type { HoverShapeProps, ShapeProps } from './types'; +// eslint-disable-next-line react/display-name export const DiamondHoverShape: React.FC = memo(({ stroke }) => ( = memo(({ stroke }) => /> )); +// eslint-disable-next-line react/display-name export const DiamondShape: React.FC = memo(({ stroke, fill }) => ( = memo(({ stroke }) => ( )); +// eslint-disable-next-line react/display-name export const EllipseShape: React.FC = memo(({ stroke, fill }) => ( )); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/hexagon_shape.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/hexagon_shape.tsx similarity index 98% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/hexagon_shape.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/hexagon_shape.tsx index 12aeebec88605..133c6e4a035c7 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/hexagon_shape.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/hexagon_shape.tsx @@ -8,6 +8,7 @@ import React, { memo } from 'react'; import type { HoverShapeProps, ShapeProps } from './types'; +// eslint-disable-next-line react/display-name export const HexagonHoverShape: React.FC = memo(({ stroke }) => ( = memo(({ stroke }) => /> )); +// eslint-disable-next-line react/display-name export const HexagonShape: React.FC = memo(({ stroke, fill }) => ( = memo(({ stroke }) => ( = memo(({ stroke }) = /> )); +// eslint-disable-next-line react/display-name export const PentagonShape: React.FC = memo(({ stroke, fill }) => ( = memo(({ stroke }) => ( = memo(({ stroke }) /> )); +// eslint-disable-next-line react/display-name export const RectangleShape: React.FC = memo(({ stroke, fill }) => ( )); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/types.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/types.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/types.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/shapes/types.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/styles.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/styles.tsx similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/styles.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/node/styles.tsx diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx similarity index 84% rename from x-pack/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx index 0efff1c88456c..be776d57be12a 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx @@ -6,13 +6,16 @@ */ import React from 'react'; +import type { + EuiIconProps, + _EuiBackgroundColor, + CommonProps, + EuiListGroupItemProps, +} from '@elastic/eui'; import { - EuiIcon, useEuiBackgroundColor, useEuiTheme, - type EuiIconProps, - type _EuiBackgroundColor, - EuiListGroupItemProps, + EuiIcon, EuiListGroupItem, EuiText, } from '@elastic/eui'; @@ -59,22 +62,24 @@ const RoundedEuiIcon: React.FC = ({ color, background, ...r ); export const ExpandPopoverListItem: React.FC< - Pick + CommonProps & Pick > = (props) => { + const { iconType, label, onClick, ...rest } = props; const { euiTheme } = useEuiTheme(); return ( + iconType ? ( + ) : undefined } label={ - {props.label} + {label} } - onClick={props.onClick} + onClick={onClick} /> ); }; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/test_ids.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/test_ids.ts new file mode 100644 index 0000000000000..96e399d670907 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/test_ids.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const PREFIX = 'cloudSecurityGraph' as const; + +export const GRAPH_INVESTIGATION_TEST_ID = `${PREFIX}GraphInvestigation` as const; +export const GRAPH_NODE_EXPAND_POPOVER_TEST_ID = + `${GRAPH_INVESTIGATION_TEST_ID}GraphNodeExpandPopover` as const; +export const GRAPH_NODE_POPOVER_SHOW_RELATED_ITEM_ID = + `${GRAPH_INVESTIGATION_TEST_ID}ExploreRelatedEntities` as const; +export const GRAPH_NODE_POPOVER_SHOW_ACTIONS_BY_ITEM_ID = + `${GRAPH_INVESTIGATION_TEST_ID}ShowActionsByEntity` as const; +export const GRAPH_NODE_POPOVER_SHOW_ACTIONS_ON_ITEM_ID = + `${GRAPH_INVESTIGATION_TEST_ID}ShowActionsOnEntity` as const; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts new file mode 100644 index 0000000000000..b09f6a29f6c62 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/components/types.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { + EntityNodeDataModel, + GroupNodeDataModel, + LabelNodeDataModel, + EdgeDataModel, + NodeShape, +} from '@kbn/cloud-security-posture-common/types/graph/latest'; +import type { Node, NodeProps as xyNodeProps, Edge, EdgeProps as xyEdgeProps } from '@xyflow/react'; + +export interface Size { + width: number; + height: number; +} + +interface BaseNodeDataViewModel { + interactive?: boolean; +} + +export type NodeClickCallback = (e: React.MouseEvent, node: NodeProps) => void; + +export type ExpandButtonClickCallback = ( + e: React.MouseEvent, + node: NodeProps, + unToggleCallback: () => void +) => void; + +export interface EntityNodeViewModel + extends Record, + EntityNodeDataModel, + BaseNodeDataViewModel { + expandButtonClick?: ExpandButtonClickCallback; + nodeClick?: NodeClickCallback; +} + +export interface GroupNodeViewModel + extends Record, + GroupNodeDataModel, + BaseNodeDataViewModel {} + +export interface LabelNodeViewModel + extends Record, + LabelNodeDataModel, + BaseNodeDataViewModel { + expandButtonClick?: ExpandButtonClickCallback; +} + +export type NodeViewModel = EntityNodeViewModel | GroupNodeViewModel | LabelNodeViewModel; + +export type NodeProps = xyNodeProps>; + +export interface EdgeViewModel extends Record, EdgeDataModel {} + +export type EdgeProps = xyEdgeProps< + Edge< + EdgeViewModel & { + sourceShape: NodeShape; + targetShape: NodeShape; + } + > +>; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/index.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/index.ts new file mode 100644 index 0000000000000..6d75dc8beefee --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { useFetchGraphData } from './use_fetch_graph_data'; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.test.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.test.tsx new file mode 100644 index 0000000000000..e494ff0957ecb --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.test.tsx @@ -0,0 +1,118 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { useFetchGraphData } from './use_fetch_graph_data'; + +const mockUseQuery = jest.fn(); + +jest.mock('@tanstack/react-query', () => { + return { + useQuery: (...args: unknown[]) => mockUseQuery(...args), + useQueryClient: jest.fn(), + }; +}); + +const defaultOptions = { + enabled: true, + refetchOnWindowFocus: true, + keepPreviousData: false, +}; + +describe('useFetchGraphData', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should pass default options when options are not provided', () => { + renderHook(() => { + return useFetchGraphData({ + req: { + query: { + eventIds: [], + start: '2021-09-01T00:00:00.000Z', + end: '2021-09-01T23:59:59.999Z', + }, + }, + }); + }); + + expect(mockUseQuery.mock.calls).toHaveLength(1); + expect(mockUseQuery.mock.calls[0][2]).toEqual({ + ...defaultOptions, + }); + }); + + it('should not be enabled when enabled set to false', () => { + renderHook(() => { + return useFetchGraphData({ + req: { + query: { + eventIds: [], + start: '2021-09-01T00:00:00.000Z', + end: '2021-09-01T23:59:59.999Z', + }, + }, + options: { + enabled: false, + }, + }); + }); + + expect(mockUseQuery.mock.calls).toHaveLength(1); + expect(mockUseQuery.mock.calls[0][2]).toEqual({ + ...defaultOptions, + enabled: false, + }); + }); + + it('should not be refetchOnWindowFocus when refetchOnWindowFocus set to false', () => { + renderHook(() => { + return useFetchGraphData({ + req: { + query: { + eventIds: [], + start: '2021-09-01T00:00:00.000Z', + end: '2021-09-01T23:59:59.999Z', + }, + }, + options: { + refetchOnWindowFocus: false, + }, + }); + }); + + expect(mockUseQuery.mock.calls).toHaveLength(1); + expect(mockUseQuery.mock.calls[0][2]).toEqual({ + ...defaultOptions, + refetchOnWindowFocus: false, + }); + }); + + it('should keepPreviousData when keepPreviousData set to true', () => { + renderHook(() => { + return useFetchGraphData({ + req: { + query: { + eventIds: [], + start: '2021-09-01T00:00:00.000Z', + end: '2021-09-01T23:59:59.999Z', + }, + }, + options: { + keepPreviousData: true, + }, + }); + }); + + expect(mockUseQuery.mock.calls).toHaveLength(1); + expect(mockUseQuery.mock.calls[0][2]).toEqual({ + ...defaultOptions, + keepPreviousData: true, + }); + }); +}); diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts new file mode 100644 index 0000000000000..74cca4693e801 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts @@ -0,0 +1,121 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { useQuery, useQueryClient } from '@tanstack/react-query'; +import type { + GraphRequest, + GraphResponse, +} from '@kbn/cloud-security-posture-common/types/graph/latest'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { EVENT_GRAPH_VISUALIZATION_API } from '../common/constants'; + +/** + * Interface for the input parameters of the useFetchGraphData hook. + */ +export interface UseFetchGraphDataParams { + /** + * The request object containing the query parameters for the graph data. + */ + req: GraphRequest; + /** + * Optional configuration options for the query. + */ + options?: { + /** + * If false, the query will not automatically run. + * Defaults to true. + */ + enabled?: boolean; + /** + * If true, the query will refetch on window focus. + * Defaults to true. + */ + refetchOnWindowFocus?: boolean; + /** + * If true, the query will keep previous data till new data received. + * Defaults to false. + */ + keepPreviousData?: boolean; + }; +} + +/** + * Interface for the result of the useFetchGraphData hook. + */ +export interface UseFetchGraphDataResult { + /** + * Indicates if the query is currently being fetched for the first time. + */ + isLoading: boolean; + /** + * Indicates if the query is currently being fetched. Regardless of whether it is the initial fetch or a refetch. + */ + isFetching: boolean; + /** + * Indicates if there was an error during the query. + */ + isError: boolean; + /** + * The data returned from the query. + */ + data?: GraphResponse; + /** + * Function to manually refresh the query. + */ + refresh: () => void; +} + +/** + * Hook to fetch event's graph visualization data. + * + * @param params - The input parameters for the hook. + * @returns The result of the hook. + */ +export const useFetchGraphData = ({ + req, + options, +}: UseFetchGraphDataParams): UseFetchGraphDataResult => { + const queryClient = useQueryClient(); + const { esQuery, eventIds, start, end } = req.query; + const { + services: { http }, + } = useKibana(); + const QUERY_KEY = useMemo( + () => ['useFetchGraphData', eventIds, start, end, esQuery], + [end, esQuery, eventIds, start] + ); + + const { isLoading, isError, data, isFetching } = useQuery( + QUERY_KEY, + () => { + if (!http) { + return Promise.reject(new Error('Http service is not available')); + } + + return http.post(EVENT_GRAPH_VISUALIZATION_API, { + version: '1', + body: JSON.stringify(req), + }); + }, + { + enabled: options?.enabled ?? true, + refetchOnWindowFocus: options?.refetchOnWindowFocus ?? true, + keepPreviousData: options?.keepPreviousData ?? false, + } + ); + + return { + isLoading, + isFetching, + isError, + data, + refresh: () => { + queryClient.invalidateQueries(QUERY_KEY); + }, + }; +}; diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/tsconfig.json b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/tsconfig.json new file mode 100644 index 0000000000000..711f3cb002692 --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/cloud-security-posture-common", + "@kbn/data-views-plugin", + "@kbn/kibana-react-plugin", + "@kbn/ui-theme", + "@kbn/utility-types", + "@kbn/unified-search-plugin", + "@kbn/es-query", + "@kbn/data-service", + "@kbn/i18n", + ] +} diff --git a/x-pack/packages/kbn-cloud-security-posture/public/index.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/index.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/index.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/index.ts diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/jest.config.js b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/jest.config.js new file mode 100644 index 0000000000000..c5a8f9ba2694d --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/solutions/security/packages/kbn-cloud-security-posture/public'], +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/public/kibana.jsonc b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/kibana.jsonc rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/kibana.jsonc diff --git a/x-pack/packages/kbn-cloud-security-posture/public/package.json b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/package.json similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/package.json rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/package.json diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx similarity index 75% rename from x-pack/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx index f84ac26d68767..28a5b7655723a 100644 --- a/x-pack/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/csp_evaluation_badge.tsx @@ -36,11 +36,20 @@ export const CspEvaluationBadge = ({ type }: Props) => ( data-test-subj={`${type}_finding`} > {type === 'failed' ? ( - + ) : type === 'passed' ? ( - + ) : ( - + )} ); diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/vulnerability_badges.tsx diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/component_constants.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts similarity index 81% rename from x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts index 90c9633433cec..7175de9934a45 100644 --- a/x-pack/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/constants/navigation.ts @@ -9,20 +9,20 @@ import { CLOUD_SECURITY_POSTURE_BASE_PATH } from '@kbn/cloud-security-posture-co import { i18n } from '@kbn/i18n'; export const NAV_ITEMS_NAMES = { - DASHBOARD: i18n.translate('xpack.csp.navigation.dashboardNavItemLabel', { + DASHBOARD: i18n.translate('securitySolutionPackages.csp.navigation.dashboardNavItemLabel', { defaultMessage: 'Cloud Security Posture', }), VULNERABILITY_DASHBOARD: i18n.translate( - 'xpack.csp.navigation.vulnerabilityDashboardNavItemLabel', + 'securitySolutionPackages.csp.navigation.vulnerabilityDashboardNavItemLabel', { defaultMessage: 'Cloud Native Vulnerability Management' } ), - FINDINGS: i18n.translate('xpack.csp.navigation.findingsNavItemLabel', { + FINDINGS: i18n.translate('securitySolutionPackages.csp.navigation.findingsNavItemLabel', { defaultMessage: 'Findings', }), - BENCHMARKS: i18n.translate('xpack.csp.navigation.myBenchmarksNavItemLabel', { + BENCHMARKS: i18n.translate('securitySolutionPackages.csp.navigation.findingsNavItemLabel', { defaultMessage: 'Benchmarks', }), - RULES: i18n.translate('xpack.csp.navigation.rulesNavItemLabel', { + RULES: i18n.translate('securitySolutionPackages.csp.navigation.rulesNavItemLabel', { defaultMessage: 'Rules', }), }; diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_csp_setup_status_api.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_csp_setup_status_api.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_csp_setup_status_api.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_csp_setup_status_api.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_data_view.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_data_view.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_data_view.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_data_view.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_get_benchmark_rules_state_api.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_benchmark_rules_state_api.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_get_benchmark_rules_state_api.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_benchmark_rules_state_api.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_get_navigation_url_params.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_navigation_url_params.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_get_navigation_url_params.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_get_navigation_url_params.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_has_misconfigurations.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_has_misconfigurations.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_has_misconfigurations.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_has_misconfigurations.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_has_vulnerabilities.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_has_vulnerabilities.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_has_vulnerabilities.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_has_vulnerabilities.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_findings.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_findings.ts similarity index 96% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_findings.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_findings.ts index 9bbaedf587dde..fa060738651a1 100644 --- a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_findings.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_findings.ts @@ -37,6 +37,7 @@ export const useMisconfigurationFindings = (options: UseCspOptions) => { rawResponse: { hits, aggregations }, } = await lastValueFrom( data.search.search({ + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion params: buildMisconfigurationsFindingsQuery(options, rulesStates!), }) ); diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_preview.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_preview.ts similarity index 95% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_preview.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_preview.ts index 067cd22a9e1a9..d2f4d4f522111 100644 --- a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_preview.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_misconfiguration_preview.ts @@ -35,6 +35,7 @@ export const useMisconfigurationPreview = (options: UseCspOptions) => { rawResponse: { aggregations }, } = await lastValueFrom( data.search.search({ + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion params: buildMisconfigurationsFindingsQuery(options, rulesStates!), }) ); diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_navigate_findings.test.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_navigate_findings.test.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_navigate_findings.test.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_navigate_findings.test.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_navigate_findings.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_navigate_findings.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_navigate_findings.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_navigate_findings.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_vulnerabilities_findings.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_vulnerabilities_findings.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_vulnerabilities_findings.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_vulnerabilities_findings.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_vulnerabilities_preview.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_vulnerabilities_preview.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/hooks/use_vulnerabilities_preview.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/hooks/use_vulnerabilities_preview.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/types.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/types.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/types.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerabilitiy_colors.test.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerabilitiy_colors.test.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerabilitiy_colors.test.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerabilitiy_colors.test.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_colors.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.test.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.test.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.test.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.test.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/get_vulnerability_text.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.test.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.test.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.test.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.test.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.ts similarity index 98% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.ts index a621e1d01add8..e52b66a0db685 100644 --- a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/hooks_utils.ts @@ -7,12 +7,12 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { + buildMutedRulesFilter, CDR_MISCONFIGURATIONS_INDEX_PATTERN, CDR_VULNERABILITIES_INDEX_PATTERN, CDR_3RD_PARTY_RETENTION_POLICY, } from '@kbn/cloud-security-posture-common'; import type { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common/schema/rules/latest'; -import { buildMutedRulesFilter } from '@kbn/cloud-security-posture-common'; import type { UseCspOptions } from '../types'; const MISCONFIGURATIONS_SOURCE_FIELDS = ['result.*', 'rule.*', 'resource.*']; diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.test.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.test.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.test.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.test.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts similarity index 93% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts index 6cb5c1384e732..72307e4f47b28 100644 --- a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/query_utils.ts @@ -20,6 +20,7 @@ type FilterValue = string | number | NegatedValue; export type NavFilter = Record; +// eslint-disable-next-line @typescript-eslint/no-explicit-any const encodeRison = (v: any): string | undefined => { try { return encode(v); @@ -40,6 +41,7 @@ const decodeRison = (query: string): T | undefined => { const QUERY_PARAM_KEY = 'cspq'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any export const encodeQuery = (query: any): LocationDescriptorObject['search'] => { const risonQuery = encodeRison(query); if (!risonQuery) return; @@ -56,6 +58,7 @@ export const encodeQueryUrl = ( servicesStart: DataPublicPluginStart, filters: Filter[], groupBy?: string[] + // eslint-disable-next-line @typescript-eslint/no-explicit-any ): any => { return encodeQuery({ query: servicesStart.query.queryString.getDefaultQuery(), diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts similarity index 90% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts index 060ae8c3b69ee..d8ddbcce9c985 100644 --- a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/show_error_toast.ts @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; import { extractErrorMessage } from '@kbn/cloud-security-posture-common'; const SEARCH_FAILED_TEXT = i18n.translate( - 'xpack.csp.findings.findingsErrorToast.searchFailedTitle', + 'securitySolutionPackages.csp.findings.findingsErrorToast.searchFailedTitle', { defaultMessage: 'Search failed' } ); diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.test.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.test.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.test.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts similarity index 98% rename from x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts rename to x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts index e1bec795ad444..321a135557e59 100644 --- a/x-pack/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/utils/vulnerability_helpers.ts @@ -16,6 +16,7 @@ interface VulnerabilitiesDistributionBarProps { color: string; isCurrentFilter?: boolean; filter?: () => void; + // eslint-disable-next-line @typescript-eslint/no-explicit-any reset?: (event: any) => void; } diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/tsconfig.json b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/tsconfig.json new file mode 100644 index 0000000000000..80f3333bd276a --- /dev/null +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/public/tsconfig.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/licensing-plugin", + "@kbn/data-views-plugin", + "@kbn/unified-search-plugin", + "@kbn/ui-actions-plugin", + "@kbn/field-formats-plugin", + "@kbn/data-view-field-editor-plugin", + "@kbn/data-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/charts-plugin", + "@kbn/discover-plugin", + "@kbn/fleet-plugin", + "@kbn/usage-collection-plugin", + "@kbn/share-plugin", + "@kbn/es-query", + "@kbn/cloud-plugin", + "@kbn/spaces-plugin", + "@kbn/kibana-react-plugin", + "@kbn/cloud-security-posture-common", + "@kbn/i18n", + "@kbn/search-types", + "@kbn/ui-theme", + "@kbn/i18n-react", + "@kbn/rison", + "@kbn/core-lifecycle-browser", + ] +} diff --git a/x-pack/packages/security-solution/navigation/README.mdx b/x-pack/solutions/security/packages/navigation/README.mdx similarity index 100% rename from x-pack/packages/security-solution/navigation/README.mdx rename to x-pack/solutions/security/packages/navigation/README.mdx diff --git a/x-pack/packages/security-solution/navigation/index.ts b/x-pack/solutions/security/packages/navigation/index.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/index.ts rename to x-pack/solutions/security/packages/navigation/index.ts diff --git a/x-pack/solutions/security/packages/navigation/jest.config.js b/x-pack/solutions/security/packages/navigation/jest.config.js new file mode 100644 index 0000000000000..e452a9a064f1c --- /dev/null +++ b/x-pack/solutions/security/packages/navigation/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/navigation'], +}; diff --git a/x-pack/packages/security-solution/navigation/kibana.jsonc b/x-pack/solutions/security/packages/navigation/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/navigation/kibana.jsonc rename to x-pack/solutions/security/packages/navigation/kibana.jsonc diff --git a/x-pack/packages/security-solution/navigation/landing_links.ts b/x-pack/solutions/security/packages/navigation/landing_links.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/landing_links.ts rename to x-pack/solutions/security/packages/navigation/landing_links.ts diff --git a/x-pack/packages/security-solution/navigation/links.ts b/x-pack/solutions/security/packages/navigation/links.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/links.ts rename to x-pack/solutions/security/packages/navigation/links.ts diff --git a/x-pack/packages/security-solution/navigation/mocks/context.ts b/x-pack/solutions/security/packages/navigation/mocks/context.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/mocks/context.ts rename to x-pack/solutions/security/packages/navigation/mocks/context.ts diff --git a/x-pack/packages/security-solution/navigation/mocks/navigation.ts b/x-pack/solutions/security/packages/navigation/mocks/navigation.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/mocks/navigation.ts rename to x-pack/solutions/security/packages/navigation/mocks/navigation.ts diff --git a/x-pack/packages/security-solution/navigation/package.json b/x-pack/solutions/security/packages/navigation/package.json similarity index 100% rename from x-pack/packages/security-solution/navigation/package.json rename to x-pack/solutions/security/packages/navigation/package.json diff --git a/x-pack/packages/security-solution/navigation/src/__mocks__/context.tsx b/x-pack/solutions/security/packages/navigation/src/__mocks__/context.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/__mocks__/context.tsx rename to x-pack/solutions/security/packages/navigation/src/__mocks__/context.tsx diff --git a/x-pack/packages/security-solution/navigation/src/__mocks__/navigation.ts b/x-pack/solutions/security/packages/navigation/src/__mocks__/navigation.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/__mocks__/navigation.ts rename to x-pack/solutions/security/packages/navigation/src/__mocks__/navigation.ts diff --git a/x-pack/solutions/security/packages/navigation/src/constants.ts b/x-pack/solutions/security/packages/navigation/src/constants.ts new file mode 100644 index 0000000000000..9d998622f0807 --- /dev/null +++ b/x-pack/solutions/security/packages/navigation/src/constants.ts @@ -0,0 +1,104 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const SECURITY_UI_APP_ID = 'securitySolutionUI' as const; + +export { SecurityPageName } from '@kbn/deeplinks-security'; + +export enum LinkCategoryType { + title = 'title', + collapsibleTitle = 'collapsibleTitle', + accordion = 'accordion', + separator = 'separator', +} + +/** + * External (non-Security) page names that need to be linked in the Security navigation. + * Format: `:/`. + * + * `pluginId`: is the id of the plugin that owns the deep link + * + * `deepLinkId`: is the id of the deep link inside the plugin. + * Keep empty for the root page of the plugin, e.g. `osquery:` + * + * `path`: is the path to append to the plugin and deep link. + * This is optional and only needed if the path is not registered in the plugin's `deepLinks`. e.g. `integrations:/browse/security` + * The path should not be used for links displayed in the main left navigation, since highlighting won't work. + **/ +export enum ExternalPageName { + // Discover + discover = 'discover:', + // Osquery + osquery = 'osquery:', + // Analytics + maps = 'maps:', + visualize = 'visualize:', + // Machine Learning + // Ref: src/platform/packages/private/default-nav/ml/default_navigation.ts + mlOverview = 'ml:overview', + mlNotifications = 'ml:notifications', + mlMemoryUsage = 'ml:memoryUsage', + mlAnomalyDetection = 'ml:anomalyDetection', + mlAnomalyExplorer = 'ml:anomalyExplorer', + mlSingleMetricViewer = 'ml:singleMetricViewer', + mlSuppliedConfigurations = 'ml:suppliedConfigurations', + mlSettings = 'ml:settings', + mlDataFrameAnalytics = 'ml:dataFrameAnalytics', + mlResultExplorer = 'ml:resultExplorer', + mlAnalyticsMap = 'ml:analyticsMap', + mlNodesOverview = 'ml:nodesOverview', + mlNodes = 'ml:nodes', + mlFileUpload = 'ml:fileUpload', + mlIndexDataVisualizer = 'ml:indexDataVisualizer', + mlESQLdataVisualizer = 'ml:esqlDataVisualizer', + mlDataDrift = 'ml:dataDrift', + mlExplainLogRateSpikes = 'ml:logRateAnalysis', + mlLogPatternAnalysis = 'ml:logPatternAnalysis', + mlChangePointDetections = 'ml:changePointDetections', + // Dev Tools + // Ref: src/platform/packages/private/default-nav/devtools/default_navigation.ts + devTools = 'dev_tools:', + // Fleet + // Ref: x-pack/plugins/fleet/public/deep_links.ts + fleet = 'fleet:', + fleetAgents = 'fleet:agents', + fleetPolicies = 'fleet:policies', + fleetEnrollmentTokens = 'fleet:enrollment_tokens', + fleetUninstallTokens = 'fleet:uninstall_tokens', + fleetDataStreams = 'fleet:data_streams', + fleetSettings = 'fleet:settings', + // Integrations + // No deepLinkId registered, using path for the security search + integrationsSecurity = 'integrations:/browse/security', + // Management + // Ref: src/platform/packages/private/default-nav/management/default_navigation.ts + management = 'management:', + managementIngestPipelines = 'management:ingest_pipelines', + managementPipelines = 'management:pipelines', + managementIndexManagement = 'management:index_management', + managementTransforms = 'management:transform', + managementMaintenanceWindows = 'management:maintenanceWindows', + managementTriggersActions = 'management:triggersActions', + managementCases = 'management:cases', + managementTriggersActionsConnectors = 'management:triggersActionsConnectors', + managementReporting = 'management:reporting', + managementJobsListLink = 'management:jobsListLink', + managementDataViews = 'management:dataViews', + managementObjects = 'management:objects', + managementApiKeys = 'management:api_keys', + managementTags = 'management:tags', + managementFiles = 'management:filesManagement', + managementSpaces = 'management:spaces', + managementSettings = 'management:settings', + // Cloud UI + // These are links to Cloud UI outside Kibana + // Special Format: : + // cloudUrlKey Ref: x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/links/util.ts + cloudUsersAndRoles = 'cloud:usersAndRoles', + cloudBilling = 'cloud:billing', + cloudPerformance = 'cloud:performance', +} diff --git a/x-pack/packages/security-solution/navigation/src/context.tsx b/x-pack/solutions/security/packages/navigation/src/context.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/context.tsx rename to x-pack/solutions/security/packages/navigation/src/context.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/beta_badge.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/beta_badge.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/beta_badge.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/beta_badge.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/index.ts b/x-pack/solutions/security/packages/navigation/src/landing_links/index.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/index.ts rename to x-pack/solutions/security/packages/navigation/src/landing_links/index.ts diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_goups.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_goups.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_goups.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_goups.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_groups.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_groups.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_groups.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_groups.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_groups.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_groups.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_groups.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_groups.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/lazy.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/lazy.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/lazy.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/lazy.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/translations.ts b/x-pack/solutions/security/packages/navigation/src/landing_links/translations.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/translations.ts rename to x-pack/solutions/security/packages/navigation/src/landing_links/translations.ts diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/utils.test.ts b/x-pack/solutions/security/packages/navigation/src/landing_links/utils.test.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/utils.test.ts rename to x-pack/solutions/security/packages/navigation/src/landing_links/utils.test.ts diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/utils.ts b/x-pack/solutions/security/packages/navigation/src/landing_links/utils.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/utils.ts rename to x-pack/solutions/security/packages/navigation/src/landing_links/utils.ts diff --git a/x-pack/packages/security-solution/navigation/src/links.test.tsx b/x-pack/solutions/security/packages/navigation/src/links.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/links.test.tsx rename to x-pack/solutions/security/packages/navigation/src/links.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/links.tsx b/x-pack/solutions/security/packages/navigation/src/links.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/links.tsx rename to x-pack/solutions/security/packages/navigation/src/links.tsx diff --git a/x-pack/packages/security-solution/navigation/src/navigation.test.ts b/x-pack/solutions/security/packages/navigation/src/navigation.test.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/navigation.test.ts rename to x-pack/solutions/security/packages/navigation/src/navigation.test.ts diff --git a/x-pack/packages/security-solution/navigation/src/navigation.ts b/x-pack/solutions/security/packages/navigation/src/navigation.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/navigation.ts rename to x-pack/solutions/security/packages/navigation/src/navigation.ts diff --git a/x-pack/packages/security-solution/navigation/src/types.ts b/x-pack/solutions/security/packages/navigation/src/types.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/types.ts rename to x-pack/solutions/security/packages/navigation/src/types.ts diff --git a/x-pack/solutions/security/packages/navigation/tsconfig.json b/x-pack/solutions/security/packages/navigation/tsconfig.json new file mode 100644 index 0000000000000..41296e15768c5 --- /dev/null +++ b/x-pack/solutions/security/packages/navigation/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react" + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core", + "@kbn/deeplinks-security" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/packages/security-solution/side_nav/README.mdx b/x-pack/solutions/security/packages/side_nav/README.mdx similarity index 100% rename from x-pack/packages/security-solution/side_nav/README.mdx rename to x-pack/solutions/security/packages/side_nav/README.mdx diff --git a/x-pack/packages/security-solution/side_nav/index.ts b/x-pack/solutions/security/packages/side_nav/index.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/index.ts rename to x-pack/solutions/security/packages/side_nav/index.ts diff --git a/x-pack/solutions/security/packages/side_nav/jest.config.js b/x-pack/solutions/security/packages/side_nav/jest.config.js new file mode 100644 index 0000000000000..11d774a650450 --- /dev/null +++ b/x-pack/solutions/security/packages/side_nav/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/side_nav'], +}; diff --git a/x-pack/packages/security-solution/side_nav/kibana.jsonc b/x-pack/solutions/security/packages/side_nav/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/side_nav/kibana.jsonc rename to x-pack/solutions/security/packages/side_nav/kibana.jsonc diff --git a/x-pack/packages/security-solution/side_nav/package.json b/x-pack/solutions/security/packages/side_nav/package.json similarity index 100% rename from x-pack/packages/security-solution/side_nav/package.json rename to x-pack/solutions/security/packages/side_nav/package.json diff --git a/x-pack/packages/security-solution/side_nav/panel.ts b/x-pack/solutions/security/packages/side_nav/panel.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/panel.ts rename to x-pack/solutions/security/packages/side_nav/panel.ts diff --git a/x-pack/packages/security-solution/side_nav/src/beta_badge.tsx b/x-pack/solutions/security/packages/side_nav/src/beta_badge.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/beta_badge.tsx rename to x-pack/solutions/security/packages/side_nav/src/beta_badge.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/index.tsx b/x-pack/solutions/security/packages/side_nav/src/index.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/index.tsx rename to x-pack/solutions/security/packages/side_nav/src/index.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.stories.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.stories.tsx similarity index 99% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav.stories.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav.stories.tsx index 4ac035f717c83..d67e36949ae98 100644 --- a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.stories.tsx +++ b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.stories.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { SolutionNav } from '@kbn/shared-ux-page-solution-nav'; import { LinkCategoryType } from '@kbn/security-solution-navigation'; -import readme from '../../README.mdx'; +import readme from '../README.mdx'; import { SolutionSideNav as SolutionSideNavComponent, type SolutionSideNavProps, diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.styles.ts b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.styles.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav.styles.ts rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav.styles.ts diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.test.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.test.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav.test.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav.test.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.styles.ts b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.styles.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.styles.ts rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.styles.ts diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.test.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.test.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.test.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.test.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/telemetry/const.ts b/x-pack/solutions/security/packages/side_nav/src/telemetry/const.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/telemetry/const.ts rename to x-pack/solutions/security/packages/side_nav/src/telemetry/const.ts diff --git a/x-pack/packages/security-solution/side_nav/src/telemetry/telemetry_context.tsx b/x-pack/solutions/security/packages/side_nav/src/telemetry/telemetry_context.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/telemetry/telemetry_context.tsx rename to x-pack/solutions/security/packages/side_nav/src/telemetry/telemetry_context.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/types.ts b/x-pack/solutions/security/packages/side_nav/src/types.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/types.ts rename to x-pack/solutions/security/packages/side_nav/src/types.ts diff --git a/x-pack/solutions/security/packages/side_nav/tsconfig.json b/x-pack/solutions/security/packages/side_nav/tsconfig.json new file mode 100644 index 0000000000000..12c35d948e0d0 --- /dev/null +++ b/x-pack/solutions/security/packages/side_nav/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react", + "@kbn/ambient-ui-types" + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/i18n", + "@kbn/analytics", + "@kbn/shared-ux-page-solution-nav", + "@kbn/security-solution-navigation", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/packages/security-solution/storybook/config/README.mdx b/x-pack/solutions/security/packages/storybook/config/README.mdx similarity index 100% rename from x-pack/packages/security-solution/storybook/config/README.mdx rename to x-pack/solutions/security/packages/storybook/config/README.mdx diff --git a/x-pack/packages/security-solution/storybook/config/constants.ts b/x-pack/solutions/security/packages/storybook/config/constants.ts similarity index 100% rename from x-pack/packages/security-solution/storybook/config/constants.ts rename to x-pack/solutions/security/packages/storybook/config/constants.ts diff --git a/x-pack/packages/security-solution/storybook/config/index.ts b/x-pack/solutions/security/packages/storybook/config/index.ts similarity index 100% rename from x-pack/packages/security-solution/storybook/config/index.ts rename to x-pack/solutions/security/packages/storybook/config/index.ts diff --git a/x-pack/solutions/security/packages/storybook/config/kibana.jsonc b/x-pack/solutions/security/packages/storybook/config/kibana.jsonc new file mode 100644 index 0000000000000..141b69563ed37 --- /dev/null +++ b/x-pack/solutions/security/packages/storybook/config/kibana.jsonc @@ -0,0 +1,7 @@ +{ + "type": "shared-common", + "id": "@kbn/security-solution-storybook-config", + "owner": "@elastic/security-threat-hunting-explore", + "group": "security", + "visibility": "private" +} diff --git a/x-pack/solutions/security/packages/storybook/config/main.ts b/x-pack/solutions/security/packages/storybook/config/main.ts new file mode 100644 index 0000000000000..8fd00f77083a8 --- /dev/null +++ b/x-pack/solutions/security/packages/storybook/config/main.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { defaultConfig } from '@kbn/storybook'; + +module.exports = { + ...defaultConfig, + stories: ['../../../**/*.stories.+(tsx|mdx)'], + reactOptions: { + strictMode: true, + }, +}; diff --git a/x-pack/packages/security-solution/storybook/config/manager.ts b/x-pack/solutions/security/packages/storybook/config/manager.ts similarity index 100% rename from x-pack/packages/security-solution/storybook/config/manager.ts rename to x-pack/solutions/security/packages/storybook/config/manager.ts diff --git a/x-pack/packages/security-solution/storybook/config/package.json b/x-pack/solutions/security/packages/storybook/config/package.json similarity index 100% rename from x-pack/packages/security-solution/storybook/config/package.json rename to x-pack/solutions/security/packages/storybook/config/package.json diff --git a/x-pack/packages/security-solution/storybook/config/preview.ts b/x-pack/solutions/security/packages/storybook/config/preview.ts similarity index 100% rename from x-pack/packages/security-solution/storybook/config/preview.ts rename to x-pack/solutions/security/packages/storybook/config/preview.ts diff --git a/x-pack/solutions/security/packages/storybook/config/tsconfig.json b/x-pack/solutions/security/packages/storybook/config/tsconfig.json new file mode 100644 index 0000000000000..8ef38ac430bcc --- /dev/null +++ b/x-pack/solutions/security/packages/storybook/config/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "@kbn/ambient-storybook-types", + ] + }, + "include": [ + "**/*.ts" + ], + "kbn_references": [ + "@kbn/storybook", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/packages/security-solution/upselling/README.mdx b/x-pack/solutions/security/packages/upselling/README.mdx similarity index 100% rename from x-pack/packages/security-solution/upselling/README.mdx rename to x-pack/solutions/security/packages/upselling/README.mdx diff --git a/x-pack/packages/security-solution/upselling/helpers/index.tsx b/x-pack/solutions/security/packages/upselling/helpers/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/helpers/index.tsx rename to x-pack/solutions/security/packages/upselling/helpers/index.tsx diff --git a/x-pack/packages/security-solution/upselling/images/entity_paywall.png b/x-pack/solutions/security/packages/upselling/images/entity_paywall.png similarity index 100% rename from x-pack/packages/security-solution/upselling/images/entity_paywall.png rename to x-pack/solutions/security/packages/upselling/images/entity_paywall.png diff --git a/x-pack/solutions/security/packages/upselling/jest.config.js b/x-pack/solutions/security/packages/upselling/jest.config.js new file mode 100644 index 0000000000000..d64e79c15976c --- /dev/null +++ b/x-pack/solutions/security/packages/upselling/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/upselling'], +}; diff --git a/x-pack/packages/security-solution/upselling/kibana.jsonc b/x-pack/solutions/security/packages/upselling/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/upselling/kibana.jsonc rename to x-pack/solutions/security/packages/upselling/kibana.jsonc diff --git a/x-pack/packages/security-solution/upselling/messages/index.tsx b/x-pack/solutions/security/packages/upselling/messages/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/messages/index.tsx rename to x-pack/solutions/security/packages/upselling/messages/index.tsx diff --git a/x-pack/packages/security-solution/upselling/package.json b/x-pack/solutions/security/packages/upselling/package.json similarity index 100% rename from x-pack/packages/security-solution/upselling/package.json rename to x-pack/solutions/security/packages/upselling/package.json diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/index.test.tsx b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/index.test.tsx rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/index.test.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/index.tsx b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/index.tsx rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/index.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/index.test.tsx b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/index.test.tsx rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/index.test.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/index.tsx b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/index.tsx rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/index.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/translations.ts b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/translations.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/translations.ts rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/translations.ts diff --git a/x-pack/packages/security-solution/upselling/pages/entity_analytics.test.tsx b/x-pack/solutions/security/packages/upselling/pages/entity_analytics.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/entity_analytics.test.tsx rename to x-pack/solutions/security/packages/upselling/pages/entity_analytics.test.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/entity_analytics.tsx b/x-pack/solutions/security/packages/upselling/pages/entity_analytics.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/entity_analytics.tsx rename to x-pack/solutions/security/packages/upselling/pages/entity_analytics.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/translations.ts b/x-pack/solutions/security/packages/upselling/pages/translations.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/translations.ts rename to x-pack/solutions/security/packages/upselling/pages/translations.ts diff --git a/x-pack/solutions/security/packages/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx new file mode 100644 index 0000000000000..912b7be80bbc1 --- /dev/null +++ b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +interface Props { + className?: string; + size?: keyof typeof sizeMap; +} + +export const sizeMap = { + xl: 64, + l: 48, + m: 32, + s: 24, + xs: 16, + xxs: 12, +}; + +/** + * Default Elastic AI Assistant logo + * + * @deprecated This component will soon be replaced by `AssistantIcon` from `@kbn/ai-assistant-icon`. + */ +export const AssistantAvatar = ({ className, size = 's' }: Props) => ( + + + + + + +); diff --git a/x-pack/packages/security-solution/upselling/sections/attack_discovery/index.test.tsx b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/sections/attack_discovery/index.test.tsx rename to x-pack/solutions/security/packages/upselling/sections/attack_discovery/index.test.tsx diff --git a/x-pack/packages/security-solution/upselling/sections/attack_discovery/index.tsx b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/sections/attack_discovery/index.tsx rename to x-pack/solutions/security/packages/upselling/sections/attack_discovery/index.tsx diff --git a/x-pack/packages/security-solution/upselling/sections/attack_discovery/translations.ts b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/translations.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/sections/attack_discovery/translations.ts rename to x-pack/solutions/security/packages/upselling/sections/attack_discovery/translations.ts diff --git a/x-pack/packages/security-solution/upselling/sections/entity_analytics.tsx b/x-pack/solutions/security/packages/upselling/sections/entity_analytics.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/sections/entity_analytics.tsx rename to x-pack/solutions/security/packages/upselling/sections/entity_analytics.tsx diff --git a/x-pack/packages/security-solution/upselling/service/index.ts b/x-pack/solutions/security/packages/upselling/service/index.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/service/index.ts rename to x-pack/solutions/security/packages/upselling/service/index.ts diff --git a/x-pack/packages/security-solution/upselling/service/types.ts b/x-pack/solutions/security/packages/upselling/service/types.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/service/types.ts rename to x-pack/solutions/security/packages/upselling/service/types.ts diff --git a/x-pack/packages/security-solution/upselling/service/upselling_service.test.tsx b/x-pack/solutions/security/packages/upselling/service/upselling_service.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/service/upselling_service.test.tsx rename to x-pack/solutions/security/packages/upselling/service/upselling_service.test.tsx diff --git a/x-pack/packages/security-solution/upselling/service/upselling_service.ts b/x-pack/solutions/security/packages/upselling/service/upselling_service.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/service/upselling_service.ts rename to x-pack/solutions/security/packages/upselling/service/upselling_service.ts diff --git a/x-pack/solutions/security/packages/upselling/tsconfig.json b/x-pack/solutions/security/packages/upselling/tsconfig.json new file mode 100644 index 0000000000000..653738495ed81 --- /dev/null +++ b/x-pack/solutions/security/packages/upselling/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react", + "@kbn/ambient-ui-types" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/security-solution-navigation", + "@kbn/shared-ux-page-kibana-template", + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/x-pack/plugins/asset_inventory/README.md b/x-pack/solutions/security/plugins/asset_inventory/README.md similarity index 100% rename from x-pack/plugins/asset_inventory/README.md rename to x-pack/solutions/security/plugins/asset_inventory/README.md diff --git a/x-pack/plugins/asset_inventory/common/index.ts b/x-pack/solutions/security/plugins/asset_inventory/common/index.ts similarity index 100% rename from x-pack/plugins/asset_inventory/common/index.ts rename to x-pack/solutions/security/plugins/asset_inventory/common/index.ts diff --git a/x-pack/plugins/asset_inventory/kibana.jsonc b/x-pack/solutions/security/plugins/asset_inventory/kibana.jsonc similarity index 100% rename from x-pack/plugins/asset_inventory/kibana.jsonc rename to x-pack/solutions/security/plugins/asset_inventory/kibana.jsonc diff --git a/x-pack/plugins/asset_inventory/package.json b/x-pack/solutions/security/plugins/asset_inventory/package.json similarity index 100% rename from x-pack/plugins/asset_inventory/package.json rename to x-pack/solutions/security/plugins/asset_inventory/package.json diff --git a/x-pack/plugins/asset_inventory/public/application.tsx b/x-pack/solutions/security/plugins/asset_inventory/public/application.tsx similarity index 100% rename from x-pack/plugins/asset_inventory/public/application.tsx rename to x-pack/solutions/security/plugins/asset_inventory/public/application.tsx diff --git a/x-pack/plugins/asset_inventory/public/components/app.tsx b/x-pack/solutions/security/plugins/asset_inventory/public/components/app.tsx similarity index 100% rename from x-pack/plugins/asset_inventory/public/components/app.tsx rename to x-pack/solutions/security/plugins/asset_inventory/public/components/app.tsx diff --git a/x-pack/plugins/asset_inventory/public/index.ts b/x-pack/solutions/security/plugins/asset_inventory/public/index.ts similarity index 100% rename from x-pack/plugins/asset_inventory/public/index.ts rename to x-pack/solutions/security/plugins/asset_inventory/public/index.ts diff --git a/x-pack/plugins/asset_inventory/public/plugin.ts b/x-pack/solutions/security/plugins/asset_inventory/public/plugin.ts similarity index 100% rename from x-pack/plugins/asset_inventory/public/plugin.ts rename to x-pack/solutions/security/plugins/asset_inventory/public/plugin.ts diff --git a/x-pack/plugins/asset_inventory/public/types.ts b/x-pack/solutions/security/plugins/asset_inventory/public/types.ts similarity index 100% rename from x-pack/plugins/asset_inventory/public/types.ts rename to x-pack/solutions/security/plugins/asset_inventory/public/types.ts diff --git a/x-pack/plugins/asset_inventory/server/create_transforms/create_transforms.ts b/x-pack/solutions/security/plugins/asset_inventory/server/create_transforms/create_transforms.ts similarity index 100% rename from x-pack/plugins/asset_inventory/server/create_transforms/create_transforms.ts rename to x-pack/solutions/security/plugins/asset_inventory/server/create_transforms/create_transforms.ts diff --git a/x-pack/plugins/asset_inventory/server/index.ts b/x-pack/solutions/security/plugins/asset_inventory/server/index.ts similarity index 100% rename from x-pack/plugins/asset_inventory/server/index.ts rename to x-pack/solutions/security/plugins/asset_inventory/server/index.ts diff --git a/x-pack/plugins/asset_inventory/server/plugin.ts b/x-pack/solutions/security/plugins/asset_inventory/server/plugin.ts similarity index 100% rename from x-pack/plugins/asset_inventory/server/plugin.ts rename to x-pack/solutions/security/plugins/asset_inventory/server/plugin.ts diff --git a/x-pack/plugins/asset_inventory/server/routes/index.ts b/x-pack/solutions/security/plugins/asset_inventory/server/routes/index.ts similarity index 100% rename from x-pack/plugins/asset_inventory/server/routes/index.ts rename to x-pack/solutions/security/plugins/asset_inventory/server/routes/index.ts diff --git a/x-pack/plugins/asset_inventory/server/types.ts b/x-pack/solutions/security/plugins/asset_inventory/server/types.ts similarity index 100% rename from x-pack/plugins/asset_inventory/server/types.ts rename to x-pack/solutions/security/plugins/asset_inventory/server/types.ts diff --git a/x-pack/solutions/security/plugins/asset_inventory/tsconfig.json b/x-pack/solutions/security/plugins/asset_inventory/tsconfig.json new file mode 100644 index 0000000000000..b733fc545be25 --- /dev/null +++ b/x-pack/solutions/security/plugins/asset_inventory/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*.ts", + "common/**/*.json", + "public/**/*.ts", + "public/**/*.tsx", + "public/**/*.json", + "server/**/*.ts", + "server/**/*.json", + "../../../../../typings/**/*" + ], + "exclude": ["target/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/i18n-react", + "@kbn/shared-ux-router", + "@kbn/securitysolution-es-utils" + ] +} diff --git a/x-pack/plugins/cloud_defend/.i18nrc.json b/x-pack/solutions/security/plugins/cloud_defend/.i18nrc.json similarity index 100% rename from x-pack/plugins/cloud_defend/.i18nrc.json rename to x-pack/solutions/security/plugins/cloud_defend/.i18nrc.json diff --git a/x-pack/solutions/security/plugins/cloud_defend/README.md b/x-pack/solutions/security/plugins/cloud_defend/README.md new file mode 100755 index 0000000000000..8b12271d52535 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_defend/README.md @@ -0,0 +1,49 @@ +# Cloud Defend (for containers) + +This plugin currently only exists to provide custom fleet policy UX for a set of new BPF LSM features. The first feature being container "drift prevention". + +Drift prevention is a way to block when executables are created or modified. Our agent service detects these events, and applies a set of selectors and responses configured to either block, alert or both. + +## Example configuration +``` +selectors: + # default selector (user can modify or remove if they want) + - name: default + operation: [createExecutable, modifyExecutable, execMemFd] + + # example custom selector + - name: nginxOnly + containerImageName: + - nginx + + # example selector used for exclude + - name: excludeCustomNginxBuild + containerImageTag: + - staging + +# responses are evaluated from top to bottom +# only the first response with a match will run its actions +responses: + - match: [nginxOnly] + exclude: [excludeCustomNginxBuild] + actions: [alert, block] + + # default response + # delete this if no default response needed + - match: [default] + actions: [alert] +``` + +--- + +## Development + +## pre commit checks + +``` +node scripts/type_check.js --project x-pack/solutions/security/plugins/cloud_defend/tsconfig.json +node scripts/eslint.js x-pack/solutions/security/plugins/cloud_defend +yarn test:jest x-pack/solutions/security/plugins/cloud_defend +``` + +See the [kibana contributing guide](https://github.com/elastic/kibana/blob/main/CONTRIBUTING.md) for instructions setting up your development environment. diff --git a/x-pack/plugins/cloud_defend/common/constants.ts b/x-pack/solutions/security/plugins/cloud_defend/common/constants.ts similarity index 100% rename from x-pack/plugins/cloud_defend/common/constants.ts rename to x-pack/solutions/security/plugins/cloud_defend/common/constants.ts diff --git a/x-pack/plugins/cloud_defend/common/index.ts b/x-pack/solutions/security/plugins/cloud_defend/common/index.ts similarity index 100% rename from x-pack/plugins/cloud_defend/common/index.ts rename to x-pack/solutions/security/plugins/cloud_defend/common/index.ts diff --git a/x-pack/plugins/cloud_defend/common/latest.ts b/x-pack/solutions/security/plugins/cloud_defend/common/latest.ts similarity index 100% rename from x-pack/plugins/cloud_defend/common/latest.ts rename to x-pack/solutions/security/plugins/cloud_defend/common/latest.ts diff --git a/x-pack/plugins/cloud_defend/common/schemas/v1.ts b/x-pack/solutions/security/plugins/cloud_defend/common/schemas/v1.ts similarity index 100% rename from x-pack/plugins/cloud_defend/common/schemas/v1.ts rename to x-pack/solutions/security/plugins/cloud_defend/common/schemas/v1.ts diff --git a/x-pack/plugins/cloud_defend/common/utils/helpers.test.ts b/x-pack/solutions/security/plugins/cloud_defend/common/utils/helpers.test.ts similarity index 100% rename from x-pack/plugins/cloud_defend/common/utils/helpers.test.ts rename to x-pack/solutions/security/plugins/cloud_defend/common/utils/helpers.test.ts diff --git a/x-pack/plugins/cloud_defend/common/utils/helpers.ts b/x-pack/solutions/security/plugins/cloud_defend/common/utils/helpers.ts similarity index 100% rename from x-pack/plugins/cloud_defend/common/utils/helpers.ts rename to x-pack/solutions/security/plugins/cloud_defend/common/utils/helpers.ts diff --git a/x-pack/plugins/cloud_defend/common/utils/subscription.test.ts b/x-pack/solutions/security/plugins/cloud_defend/common/utils/subscription.test.ts similarity index 100% rename from x-pack/plugins/cloud_defend/common/utils/subscription.test.ts rename to x-pack/solutions/security/plugins/cloud_defend/common/utils/subscription.test.ts diff --git a/x-pack/plugins/cloud_defend/common/utils/subscription.ts b/x-pack/solutions/security/plugins/cloud_defend/common/utils/subscription.ts similarity index 100% rename from x-pack/plugins/cloud_defend/common/utils/subscription.ts rename to x-pack/solutions/security/plugins/cloud_defend/common/utils/subscription.ts diff --git a/x-pack/plugins/cloud_defend/common/v1.ts b/x-pack/solutions/security/plugins/cloud_defend/common/v1.ts similarity index 100% rename from x-pack/plugins/cloud_defend/common/v1.ts rename to x-pack/solutions/security/plugins/cloud_defend/common/v1.ts diff --git a/x-pack/solutions/security/plugins/cloud_defend/jest.config.js b/x-pack/solutions/security/plugins/cloud_defend/jest.config.js new file mode 100644 index 0000000000000..1a923a89d2da0 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_defend/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** @type {import('@jest/types').Config.InitialOptions} */ +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/cloud_defend'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/cloud_defend', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/cloud_defend/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/cloud_defend/kibana.jsonc b/x-pack/solutions/security/plugins/cloud_defend/kibana.jsonc similarity index 100% rename from x-pack/plugins/cloud_defend/kibana.jsonc rename to x-pack/solutions/security/plugins/cloud_defend/kibana.jsonc diff --git a/x-pack/plugins/cloud_defend/public/application/route.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/application/route.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/application/route.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/application/route.tsx diff --git a/x-pack/plugins/cloud_defend/public/application/router.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/application/router.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/application/router.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/application/router.test.tsx diff --git a/x-pack/plugins/cloud_defend/public/application/router.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/application/router.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/application/router.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/application/router.tsx diff --git a/x-pack/plugins/cloud_defend/public/application/security_solution_context.ts b/x-pack/solutions/security/plugins/cloud_defend/public/application/security_solution_context.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/application/security_solution_context.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/application/security_solution_context.ts diff --git a/x-pack/plugins/cloud_defend/public/application/setup_context.ts b/x-pack/solutions/security/plugins/cloud_defend/public/application/setup_context.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/application/setup_context.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/application/setup_context.ts diff --git a/x-pack/plugins/cloud_defend/public/assets/icons/logo.svg b/x-pack/solutions/security/plugins/cloud_defend/public/assets/icons/logo.svg similarity index 100% rename from x-pack/plugins/cloud_defend/public/assets/icons/logo.svg rename to x-pack/solutions/security/plugins/cloud_defend/public/assets/icons/logo.svg diff --git a/x-pack/plugins/cloud_defend/public/common/api/use_cloud_defend_integration.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/common/api/use_cloud_defend_integration.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/api/use_cloud_defend_integration.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/common/api/use_cloud_defend_integration.tsx diff --git a/x-pack/plugins/cloud_defend/public/common/api/use_setup_status_api.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/api/use_setup_status_api.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/api/use_setup_status_api.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/api/use_setup_status_api.ts diff --git a/x-pack/plugins/cloud_defend/public/common/constants.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/constants.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/constants.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/constants.ts diff --git a/x-pack/plugins/cloud_defend/public/common/hooks/use_kibana.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/hooks/use_kibana.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/hooks/use_kibana.ts diff --git a/x-pack/plugins/cloud_defend/public/common/hooks/use_page_size.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/hooks/use_page_size.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/hooks/use_page_size.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/hooks/use_page_size.ts diff --git a/x-pack/plugins/cloud_defend/public/common/hooks/use_subscription_status.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/hooks/use_subscription_status.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/hooks/use_subscription_status.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/hooks/use_subscription_status.ts diff --git a/x-pack/plugins/cloud_defend/public/common/navigation/constants.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/constants.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/navigation/constants.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/constants.ts diff --git a/x-pack/plugins/cloud_defend/public/common/navigation/security_solution_links.test.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/security_solution_links.test.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/navigation/security_solution_links.test.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/security_solution_links.test.ts diff --git a/x-pack/plugins/cloud_defend/public/common/navigation/security_solution_links.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/security_solution_links.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/navigation/security_solution_links.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/security_solution_links.ts diff --git a/x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/types.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/types.ts new file mode 100644 index 0000000000000..f17c9dc7dfb2b --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/types.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +export interface CloudDefendNavigationItem { + readonly name: string; + readonly path: string; + readonly disabled?: boolean; +} + +export interface CloudDefendPageNavigationItem extends CloudDefendNavigationItem { + id: CloudDefendPageId; +} + +export type CloudDefendPage = 'policies' | 'dashboard'; + +/** + * All the IDs for the cloud defend pages. + * This needs to match the cloud defend page entries in `SecurityPageName` in `x-pack/solutions/security/plugins/security_solution/common/constants.ts`. + */ +export type CloudDefendPageId = 'cloud_defend-policies' | 'kubernetes_security-dashboard'; diff --git a/x-pack/plugins/cloud_defend/public/common/navigation/use_cloud_defend_integration_links.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/use_cloud_defend_integration_links.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/navigation/use_cloud_defend_integration_links.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/navigation/use_cloud_defend_integration_links.ts diff --git a/x-pack/plugins/cloud_defend/public/common/utils.test.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/utils.test.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/utils.test.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/utils.test.ts diff --git a/x-pack/plugins/cloud_defend/public/common/utils.ts b/x-pack/solutions/security/plugins/cloud_defend/public/common/utils.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/common/utils.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/common/utils.ts diff --git a/x-pack/plugins/cloud_defend/public/components/cloud_defend_page/index.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/cloud_defend_page/index.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/cloud_defend_page/index.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/cloud_defend_page/index.test.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/cloud_defend_page/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/cloud_defend_page/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/cloud_defend_page/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/cloud_defend_page/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/cloud_defend_page_title/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/cloud_defend_page_title/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/cloud_defend_page_title/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/cloud_defend_page_title/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view/index.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view/index.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_general_view/index.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view/index.test.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_general_view/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view/styles.ts b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view/styles.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_general_view/styles.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view/styles.ts diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view/translations.ts b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view/translations.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_general_view/translations.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view/translations.ts diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view_response/index.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/index.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_general_view_response/index.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/index.test.tsx diff --git a/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/index.tsx new file mode 100644 index 0000000000000..9511d11aa4f70 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/index.tsx @@ -0,0 +1,421 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { useMemo, useState, useCallback, ChangeEvent, useEffect } from 'react'; +import { + EuiCallOut, + EuiIcon, + EuiToolTip, + EuiText, + EuiBadge, + EuiAccordion, + EuiFlexGroup, + EuiFlexItem, + EuiButtonIcon, + EuiButtonEmpty, + EuiPopover, + EuiContextMenuPanel, + EuiContextMenuItem, + EuiForm, + EuiFormRow, + EuiComboBox, + EuiCheckbox, + EuiComboBoxOptionOption, + EuiSpacer, + euiPaletteColorBlindBehindText, + useEuiTheme, +} from '@elastic/eui'; +import { useStyles } from './styles'; +import { useStyles as useSelectorStyles } from '../control_general_view_selector/styles'; +import { ControlGeneralViewResponseDeps, ControlFormErrorMap } from '../../types'; +import { Response, ResponseAction } from '../../../common'; +import * as i18n from '../control_general_view/translations'; +import { + getSelectorTypeIcon, + validateBlockRestrictions, + selectorsIncludeConditionsForFIMOperationsUsingSlashStarStar, +} from '../../common/utils'; + +// max number of names to show in title (in collapsed state) +// selectorA, selectorB, selectorC, selectorD [+5] +const titleThreshold = 4; +const titleThresholdCollapsed = 2; + +const ACTION_ID_REGEX = /response_\d+_(.*)/; + +export const ControlGeneralViewResponse = ({ + response, + selectors, + responses, + index, + onRemove, + onDuplicate, + onChange, +}: ControlGeneralViewResponseDeps) => { + const { + euiTheme: { colors }, + } = useEuiTheme(); + const [isPopoverOpen, setPopoverOpen] = useState(false); + const styles = useStyles(); + const selectorStyles = useSelectorStyles(); + const visColorsBehindText = euiPaletteColorBlindBehindText(); + const [accordionState, setAccordionState] = useState<'open' | 'closed'>( + responses.length - 1 === index ? 'open' : 'closed' + ); + + const logSelected = response.actions?.includes('log'); + const alertSelected = response.actions?.includes('alert'); + const blockSelected = response.actions?.includes('block'); + + const warnFIMUsingSlashStarStar = useMemo( + () => + blockSelected && + selectorsIncludeConditionsForFIMOperationsUsingSlashStarStar(selectors, response.match), + [blockSelected, response.match, selectors] + ); + + const errors = useMemo(() => { + const errs: ControlFormErrorMap = {}; + + if (response.match.length === 0) { + errs.match = [i18n.errorValueRequired]; + } + + if (response.actions?.length === 0) { + errs.actions = [i18n.errorActionRequired]; + } + + if (blockSelected) { + const blockErrors = validateBlockRestrictions(selectors, [response]); + if (blockErrors.length > 0) { + errs.response = blockErrors; + } + } + + return errs; + }, [response, selectors, blockSelected]); + + const errorList = useMemo(() => Object.values(errors), [errors]); + + const onResponseChange = useCallback( + (resp: Response, i: number) => { + if (errorList.length) { + resp.hasErrors = true; + } + + onChange(resp, i); + }, + [errorList.length, onChange] + ); + + useEffect(() => { + const hasErrors = errorList.length > 0; + const changed = (hasErrors && !response.hasErrors) || (!hasErrors && response.hasErrors); + if (changed) { + response.hasErrors = hasErrors; + onChange(response, index); + } + }, [errorList.length, index, onChange, response]); + + const onTogglePopover = useCallback(() => { + setPopoverOpen(!isPopoverOpen); + }, [isPopoverOpen]); + + const closePopover = useCallback(() => { + setPopoverOpen(false); + }, []); + + const onRemoveClicked = useCallback(() => { + onRemove(index); + closePopover(); + }, [closePopover, index, onRemove]); + + const onDuplicateClicked = useCallback(() => { + onDuplicate(response); + closePopover(); + }, [closePopover, onDuplicate, response]); + + const onChangeMatches = useCallback( + (options: any) => { + response.match = options.map((option: EuiComboBoxOptionOption) => option.value); + + onResponseChange(response, index); + }, + [index, onResponseChange, response] + ); + + const onChangeExcludes = useCallback( + (options: any) => { + response.exclude = options.map((option: EuiComboBoxOptionOption) => option.value); + + if (response.exclude?.length === 0) { + delete response.exclude; + } + + onResponseChange(response, index); + }, + [index, onResponseChange, response] + ); + + const selectorOptions = useMemo(() => { + return selectors + .filter( + (selector) => + !( + selector.type !== response.type || + response.match.includes(selector.name) || + response.exclude?.includes(selector.name) + ) + ) + .map((selector) => ({ label: selector.name, value: selector.name })); + }, [response.exclude, response.match, response.type, selectors]); + + const selectedMatches = useMemo( + () => + response.match.map((selector) => ({ + label: selector as unknown as string, + value: selector as unknown as string, + color: visColorsBehindText[0], + })), + [response.match, visColorsBehindText] + ); + + const selectedExcludes = useMemo( + () => + response.exclude && + response.exclude.map((selector) => ({ + label: selector as unknown as string, + value: selector as unknown as string, + color: visColorsBehindText[5], + })), + [response.exclude, visColorsBehindText] + ); + + const onShowExclude = useCallback(() => { + const updatedResponse = { ...response }; + updatedResponse.exclude = []; + onResponseChange(updatedResponse, index); + }, [index, onResponseChange, response]); + + const onToggleAction = useCallback( + (e: ChangeEvent) => { + const action = e.currentTarget?.id?.match(ACTION_ID_REGEX)?.[1] as ResponseAction; + const updatedResponse = JSON.parse(JSON.stringify(response)); + const actionIndex = updatedResponse.actions.indexOf(action); + + if (actionIndex === -1) { + updatedResponse.actions.push(action); + } else { + // if alert action gets disabled, disable block action + if (action === 'alert') { + const blockIndex = updatedResponse.actions.indexOf('block'); + + if (blockIndex !== -1) { + updatedResponse.actions.splice(blockIndex, 1); + } + } + + updatedResponse.actions.splice(actionIndex, 1); + } + + onResponseChange(updatedResponse, index); + }, + [index, onResponseChange, response] + ); + + const onToggleAccordion = useCallback((isOpen: boolean) => { + setAccordionState(isOpen ? 'open' : 'closed'); + }, []); + + const { title, plusCount, remainingNames } = useMemo(() => { + if (accordionState === 'open') { + return { + title: response.match.slice(0, titleThreshold).join(', '), + plusCount: response.match.length - titleThreshold, + remainingNames: response.match.slice(titleThreshold).join(','), + }; + } + + return { + title: response.match.slice(0, titleThresholdCollapsed).join(', '), + plusCount: response.match.length - titleThresholdCollapsed, + remainingNames: response.match.slice(titleThresholdCollapsed).join(','), + }; + }, [accordionState, response.match]); + + return ( + + + + + + + + + {title} + {plusCount > 0 && +{plusCount}} + + + + } + css={styles.accordion} + initialIsOpen={index === 0} + extraAction={ + + {accordionState === 'closed' && ( + + {response?.exclude?.length && ( + <> + {i18n.exclude}: + + {response.exclude.length} + +
+ + )} + {i18n.actions}: + {response.actions?.map((action, i) => ( + + + {action[0].toUpperCase() + action.slice(1)} + + {i !== (response.actions?.length || 0) - 1 && ', '} + + ))} +
+ + )} + + + } + isOpen={isPopoverOpen} + closePopover={closePopover} + panelPaddingSize="none" + anchorPosition="downLeft" + > + + {i18n.duplicate} + , + + {i18n.remove} + , + ]} + /> + + + + } + > + 0}> + {warnFIMUsingSlashStarStar && ( + + +

{i18n.warningFIMUsingSlashStarStarText}

+
+
+ )} + + + + {response.exclude && ( + + + + )} + + {!response.exclude && ( + + {i18n.excludeSelectors} + + )} + + + + + + + + + + + + + + + + +
+ + ); +}; diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view_response/styles.ts b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/styles.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_general_view_response/styles.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_response/styles.ts diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view_selector/index.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_selector/index.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_general_view_selector/index.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_selector/index.test.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view_selector/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_selector/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_general_view_selector/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_selector/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view_selector/styles.ts b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_selector/styles.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_general_view_selector/styles.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_general_view_selector/styles.ts diff --git a/x-pack/plugins/cloud_defend/public/components/control_settings/index.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_settings/index.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_settings/index.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_settings/index.test.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/control_settings/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_settings/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_settings/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_settings/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/control_settings/translations.ts b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_settings/translations.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_settings/translations.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_settings/translations.ts diff --git a/x-pack/plugins/cloud_defend/public/components/control_yaml_view/hooks/policy_schema.json b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/hooks/policy_schema.json similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_yaml_view/hooks/policy_schema.json rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/hooks/policy_schema.json diff --git a/x-pack/plugins/cloud_defend/public/components/control_yaml_view/hooks/use_config_model.ts b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/hooks/use_config_model.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_yaml_view/hooks/use_config_model.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/hooks/use_config_model.ts diff --git a/x-pack/plugins/cloud_defend/public/components/control_yaml_view/index.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/index.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_yaml_view/index.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/index.test.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/control_yaml_view/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_yaml_view/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/control_yaml_view/styles.ts b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/styles.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_yaml_view/styles.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/styles.ts diff --git a/x-pack/plugins/cloud_defend/public/components/control_yaml_view/translations.ts b/x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/translations.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/control_yaml_view/translations.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/components/control_yaml_view/translations.ts diff --git a/x-pack/plugins/cloud_defend/public/components/fleet_extensions/custom_assets_extension.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/fleet_extensions/custom_assets_extension.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/fleet_extensions/custom_assets_extension.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/fleet_extensions/custom_assets_extension.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/fleet_extensions/package_policy_replace_define_step_extension.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/fleet_extensions/package_policy_replace_define_step_extension.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/fleet_extensions/package_policy_replace_define_step_extension.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/fleet_extensions/package_policy_replace_define_step_extension.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/full_size_page/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/full_size_page/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/full_size_page/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/full_size_page/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/loading_state/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/loading_state/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/loading_state/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/loading_state/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/policies_table/index.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/policies_table/index.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/policies_table/index.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/policies_table/index.test.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/policies_table/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/policies_table/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/policies_table/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/policies_table/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/policy_settings/index.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/policy_settings/index.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/policy_settings/index.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/policy_settings/index.test.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/policy_settings/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/policy_settings/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/policy_settings/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/policy_settings/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/policy_settings/translations.ts b/x-pack/solutions/security/plugins/cloud_defend/public/components/policy_settings/translations.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/policy_settings/translations.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/components/policy_settings/translations.ts diff --git a/x-pack/plugins/cloud_defend/public/components/subscription_not_allowed/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/subscription_not_allowed/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/subscription_not_allowed/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/subscription_not_allowed/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/components/timestamp_table_cell/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/components/timestamp_table_cell/index.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/components/timestamp_table_cell/index.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/components/timestamp_table_cell/index.tsx diff --git a/x-pack/plugins/cloud_defend/public/index.ts b/x-pack/solutions/security/plugins/cloud_defend/public/index.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/index.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/index.ts diff --git a/x-pack/plugins/cloud_defend/public/pages/index.ts b/x-pack/solutions/security/plugins/cloud_defend/public/pages/index.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/pages/index.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/pages/index.ts diff --git a/x-pack/plugins/cloud_defend/public/pages/policies/index.test.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/pages/policies/index.test.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/pages/policies/index.test.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/pages/policies/index.test.tsx diff --git a/x-pack/solutions/security/plugins/cloud_defend/public/pages/policies/index.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/pages/policies/index.tsx new file mode 100644 index 0000000000000..d9890830ffcda --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_defend/public/pages/policies/index.tsx @@ -0,0 +1,197 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { + EuiButton, + EuiFieldSearch, + EuiFieldSearchProps, + EuiFlexGroup, + EuiFlexItem, + EuiPageHeader, + EuiSpacer, + EuiText, + EuiTextColor, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import useDebounce from 'react-use/lib/useDebounce'; +import { i18n } from '@kbn/i18n'; +import { CloudDefendPageTitle } from '../../components/cloud_defend_page_title'; +import { CloudDefendPage } from '../../components/cloud_defend_page'; +import { PoliciesTable } from '../../components/policies_table'; +import { useCloudDefendPolicies, UseCloudDefendPoliciesProps } from './use_cloud_defend_policies'; +import { extractErrorMessage } from '../../../common/utils/helpers'; +import * as TEST_SUBJ from './test_subjects'; +import { LOCAL_STORAGE_PAGE_SIZE } from '../../common/constants'; +import { usePageSize } from '../../common/hooks/use_page_size'; +import { useCloudDefendIntegrationLinks } from '../../common/navigation/use_cloud_defend_integration_links'; + +const SEARCH_DEBOUNCE_MS = 300; + +const AddIntegrationButton = () => { + const { addIntegrationLink } = useCloudDefendIntegrationLinks(); + + return ( + + + + ); +}; + +const EmptyState = ({ name }: { name: string }) => ( +
+ + { + + + + {name && ( + + )} + + + } + + + + + + + +
+); + +const TotalIntegrationsCount = ({ + pageCount, + totalCount, +}: Record<'pageCount' | 'totalCount', number>) => ( + + + + + +); + +const SearchField = ({ + onSearch, + isLoading, +}: Required>) => { + const [localValue, setLocalValue] = useState(''); + + useDebounce(() => onSearch(localValue), SEARCH_DEBOUNCE_MS, [localValue]); + + return ( + + + + + + ); +}; + +export const Policies = () => { + const { pageSize, setPageSize } = usePageSize(LOCAL_STORAGE_PAGE_SIZE); + const [query, setQuery] = useState({ + name: '', + page: 1, + perPage: pageSize, + sortField: 'package_policy.name', + sortOrder: 'asc', + }); + + const queryResult = useCloudDefendPolicies(query); + const totalItemCount = queryResult.data?.total || 0; + + return ( + + + } + rightSideItems={[]} + bottomBorder + /> + + setQuery((current) => ({ ...current, name }))} + /> + + + + { + setPageSize(page.size); + setQuery((current) => ({ + ...current, + page: page.index, + perPage: page.size, + sortField: + (sort?.field as UseCloudDefendPoliciesProps['sortField']) || current.sortField, + sortOrder: sort?.direction || current.sortOrder, + })); + }} + noItemsMessage={ + queryResult.isSuccess && !queryResult.data.total ? ( + + ) : undefined + } + /> + + ); +}; diff --git a/x-pack/plugins/cloud_defend/public/pages/policies/test_subjects.ts b/x-pack/solutions/security/plugins/cloud_defend/public/pages/policies/test_subjects.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/pages/policies/test_subjects.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/pages/policies/test_subjects.ts diff --git a/x-pack/plugins/cloud_defend/public/pages/policies/use_cloud_defend_policies.ts b/x-pack/solutions/security/plugins/cloud_defend/public/pages/policies/use_cloud_defend_policies.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/pages/policies/use_cloud_defend_policies.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/pages/policies/use_cloud_defend_policies.ts diff --git a/x-pack/solutions/security/plugins/cloud_defend/public/plugin.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/plugin.tsx new file mode 100755 index 0000000000000..43224794cddd6 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_defend/public/plugin.tsx @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; +import React, { lazy, Suspense } from 'react'; +import type { CloudDefendRouterProps } from './application/router'; +import { + CloudDefendPluginSetup, + CloudDefendPluginStart, + CloudDefendPluginStartDeps, + CloudDefendPluginSetupDeps, +} from './types'; +import { INTEGRATION_PACKAGE_NAME } from '../common/constants'; +import { LoadingState } from './components/loading_state'; +import { SetupContext } from './application/setup_context'; + +const LazyPolicyReplaceDefineStepExtension = lazy( + () => import('./components/fleet_extensions/package_policy_replace_define_step_extension') +); + +const LazyCustomAssets = lazy( + () => import('./components/fleet_extensions/custom_assets_extension') +); + +const RouterLazy = lazy(() => import('./application/router')); +const Router = (props: CloudDefendRouterProps) => ( + }> + + +); + +export class CloudDefendPlugin + implements + Plugin< + CloudDefendPluginSetup, + CloudDefendPluginStart, + CloudDefendPluginSetupDeps, + CloudDefendPluginStartDeps + > +{ + private isCloudEnabled?: boolean; + + public setup( + core: CoreSetup, + plugins: CloudDefendPluginSetupDeps + ): CloudDefendPluginSetup { + this.isCloudEnabled = plugins.cloud.isCloudEnabled; + + // Return methods that should be available to other plugins + return {}; + } + + public start(core: CoreStart, plugins: CloudDefendPluginStartDeps): CloudDefendPluginStart { + plugins.fleet.registerExtension({ + package: INTEGRATION_PACKAGE_NAME, + view: 'package-policy-replace-define-step', + Component: LazyPolicyReplaceDefineStepExtension, + }); + + plugins.fleet.registerExtension({ + package: INTEGRATION_PACKAGE_NAME, + view: 'package-detail-assets', + Component: LazyCustomAssets, + }); + + const CloudDefendRouter = (props: CloudDefendRouterProps) => ( + + +
+ + + +
+
+
+ ); + + return { + getCloudDefendRouter: () => CloudDefendRouter, + }; + } + + public stop() {} +} diff --git a/x-pack/plugins/cloud_defend/public/test/__mocks__/worker.js b/x-pack/solutions/security/plugins/cloud_defend/public/test/__mocks__/worker.js similarity index 100% rename from x-pack/plugins/cloud_defend/public/test/__mocks__/worker.js rename to x-pack/solutions/security/plugins/cloud_defend/public/test/__mocks__/worker.js diff --git a/x-pack/plugins/cloud_defend/public/test/fixtures/cloud_defend_integration.ts b/x-pack/solutions/security/plugins/cloud_defend/public/test/fixtures/cloud_defend_integration.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/test/fixtures/cloud_defend_integration.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/test/fixtures/cloud_defend_integration.ts diff --git a/x-pack/plugins/cloud_defend/public/test/fixtures/navigation_item.ts b/x-pack/solutions/security/plugins/cloud_defend/public/test/fixtures/navigation_item.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/test/fixtures/navigation_item.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/test/fixtures/navigation_item.ts diff --git a/x-pack/plugins/cloud_defend/public/test/fixtures/react_query.ts b/x-pack/solutions/security/plugins/cloud_defend/public/test/fixtures/react_query.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/test/fixtures/react_query.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/test/fixtures/react_query.ts diff --git a/x-pack/plugins/cloud_defend/public/test/mocks.ts b/x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/test/mocks.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/test/mocks.ts diff --git a/x-pack/plugins/cloud_defend/public/test/test_provider.tsx b/x-pack/solutions/security/plugins/cloud_defend/public/test/test_provider.tsx similarity index 100% rename from x-pack/plugins/cloud_defend/public/test/test_provider.tsx rename to x-pack/solutions/security/plugins/cloud_defend/public/test/test_provider.tsx diff --git a/x-pack/plugins/cloud_defend/public/test/utils.ts b/x-pack/solutions/security/plugins/cloud_defend/public/test/utils.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/test/utils.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/test/utils.ts diff --git a/x-pack/plugins/cloud_defend/public/types.ts b/x-pack/solutions/security/plugins/cloud_defend/public/types.ts similarity index 100% rename from x-pack/plugins/cloud_defend/public/types.ts rename to x-pack/solutions/security/plugins/cloud_defend/public/types.ts diff --git a/x-pack/plugins/cloud_defend/server/index.ts b/x-pack/solutions/security/plugins/cloud_defend/server/index.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/index.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/index.ts diff --git a/x-pack/plugins/cloud_defend/server/lib/check_index_status.ts b/x-pack/solutions/security/plugins/cloud_defend/server/lib/check_index_status.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/lib/check_index_status.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/lib/check_index_status.ts diff --git a/x-pack/plugins/cloud_defend/server/lib/fleet_util.ts b/x-pack/solutions/security/plugins/cloud_defend/server/lib/fleet_util.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/lib/fleet_util.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/lib/fleet_util.ts diff --git a/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/accounts_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/accounts_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/accounts_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/accounts_stats_collector.ts diff --git a/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/indices_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/indices_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/indices_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/indices_stats_collector.ts diff --git a/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts diff --git a/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/pods_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/pods_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/pods_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/pods_stats_collector.ts diff --git a/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/register.ts b/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/register.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/register.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/register.ts diff --git a/x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/schema.ts b/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/schema.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/schema.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/schema.ts diff --git a/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/types.ts b/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/types.ts new file mode 100644 index 0000000000000..6aca6936af649 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/types.ts @@ -0,0 +1,121 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +// for some reason we can't reference common/index.ts because +// the `node scripts/check_telemetry.js --fix` command fails with the error +// ERROR Error: Error extracting collector in x-pack/solutions/security/plugins/cloud_defend/server/lib/telemetry/collectors/register.ts +// Error: Unable to find identifier in source Selector +// at createFailError (dev_cli_errors.ts:27:24) +// at parseUsageCollection (ts_parser.ts:226:32) +// at parseUsageCollection.next () +// at extractCollectors (extract_collectors.ts:58:32) +// at extractCollectors.next () +// at Task.task (extract_collectors_task.ts:43:53) +// at runMicrotasks () +// at processTicksAndRejections (node:internal/process/task_queues:96:5) +// +// I guess the intermediate import/export is causing problems +// for now we will just point to the current version (v1) +import type { + Selector, + Response, + SelectorType, + SelectorCondition, + ResponseAction, +} from '../../../../common/v1'; + +export interface CloudDefendUsage { + indices: CloudDefendIndicesStats; + pods_stats: CloudDefendPodsStats[]; + accounts_stats: CloudDefendAccountsStats[]; + installation_stats: CloudDefendInstallationStats[]; +} + +export interface PackageSetupStatus { + status: string; + installedPackagePolicies: number; + healthyAgents: number; +} + +export interface CloudDefendIndicesStats { + alerts: IndexStats | {}; + file: IndexStats | {}; + process: IndexStats | {}; + latestPackageVersion: string; + packageStatus: PackageSetupStatus; +} + +export interface IndexStats { + doc_count: number; + deleted: number; + size_in_bytes: number; + last_doc_timestamp: string | null; +} + +export interface CloudDefendPodsStats { + account_id: string; + pod_name: string; + container_image_name: string; + container_image_tag: string; + total_doc_count: number; + file_doc_count: number; + process_doc_count: number; + alert_doc_count: number; +} + +export interface CloudDefendAccountsStats { + account_id: string; + total_doc_count: number; + cloud_provider: string; + kubernetes_version: string | null; + file_doc_count: number; + process_doc_count: number; + alert_doc_count: number; + agents_count: number; + nodes_count: number; + pods_count: number; +} + +export type CloudDefendSelectorTypeCounts = { + [key in SelectorType]: number; +}; + +export type CloudDefendResponseTypeCounts = { + [key in SelectorType]: number; +}; + +export type CloudDefendConditionsCounts = { + [key in SelectorCondition]?: number; +}; + +export type CloudDefendActionCounts = { + [key in ResponseAction]?: number; +}; + +export interface CloudDefendPolicyYamlStats { + policy_yaml: string; + policy_json: string; // to be used for further digging in BigQuery + selector_counts: CloudDefendSelectorTypeCounts; + response_counts: CloudDefendResponseTypeCounts; + selector_conditions_counts: CloudDefendConditionsCounts; + response_actions_counts: CloudDefendActionCounts; + response_match_names: string[]; + response_exclude_names: string[]; +} + +type CloudDefendSelector = Omit; +type CloudDefendResponse = Omit; + +export interface CloudDefendInstallationStats { + package_policy_id: string; + package_version: string; + agent_policy_id: string; + created_at: string; + agent_count: number; + policy_yaml: string; + selectors: CloudDefendSelector[]; + responses: CloudDefendResponse[]; +} diff --git a/x-pack/plugins/cloud_defend/server/mocks.ts b/x-pack/solutions/security/plugins/cloud_defend/server/mocks.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/mocks.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/mocks.ts diff --git a/x-pack/plugins/cloud_defend/server/plugin.test.ts b/x-pack/solutions/security/plugins/cloud_defend/server/plugin.test.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/plugin.test.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/plugin.test.ts diff --git a/x-pack/plugins/cloud_defend/server/plugin.ts b/x-pack/solutions/security/plugins/cloud_defend/server/plugin.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/plugin.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/plugin.ts diff --git a/x-pack/plugins/cloud_defend/server/routes/policies/policies.test.ts b/x-pack/solutions/security/plugins/cloud_defend/server/routes/policies/policies.test.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/routes/policies/policies.test.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/routes/policies/policies.test.ts diff --git a/x-pack/plugins/cloud_defend/server/routes/policies/policies.ts b/x-pack/solutions/security/plugins/cloud_defend/server/routes/policies/policies.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/routes/policies/policies.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/routes/policies/policies.ts diff --git a/x-pack/plugins/cloud_defend/server/routes/setup_routes.ts b/x-pack/solutions/security/plugins/cloud_defend/server/routes/setup_routes.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/routes/setup_routes.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/routes/setup_routes.ts diff --git a/x-pack/plugins/cloud_defend/server/routes/status/status.test.ts b/x-pack/solutions/security/plugins/cloud_defend/server/routes/status/status.test.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/routes/status/status.test.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/routes/status/status.test.ts diff --git a/x-pack/plugins/cloud_defend/server/routes/status/status.ts b/x-pack/solutions/security/plugins/cloud_defend/server/routes/status/status.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/routes/status/status.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/routes/status/status.ts diff --git a/x-pack/plugins/cloud_defend/server/types.ts b/x-pack/solutions/security/plugins/cloud_defend/server/types.ts similarity index 100% rename from x-pack/plugins/cloud_defend/server/types.ts rename to x-pack/solutions/security/plugins/cloud_defend/server/types.ts diff --git a/x-pack/solutions/security/plugins/cloud_defend/tsconfig.json b/x-pack/solutions/security/plugins/cloud_defend/tsconfig.json new file mode 100755 index 0000000000000..cce09d24d8d58 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_defend/tsconfig.json @@ -0,0 +1,43 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*", + "public/**/*.json", + "server/**/*.json" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/data-plugin", + "@kbn/security-plugin", + "@kbn/fleet-plugin", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/licensing-plugin", + "@kbn/data-plugin", + "@kbn/kibana-react-plugin", + "@kbn/monaco", + "@kbn/i18n", + "@kbn/usage-collection-plugin", + "@kbn/cloud-plugin", + "@kbn/shared-ux-router", + "@kbn/shared-ux-link-redirect-app", + "@kbn/core-logging-server-mocks", + "@kbn/securitysolution-es-utils", + "@kbn/es-types", + "@kbn/data-views-plugin", + "@kbn/utility-types", + "@kbn/kubernetes-security-plugin", + "@kbn/core-http-router-server-mocks", + "@kbn/core-elasticsearch-server", + "@kbn/code-editor", + "@kbn/code-editor-mock", + "@kbn/core-security-common" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/README.md b/x-pack/solutions/security/plugins/cloud_security_posture/README.md new file mode 100755 index 0000000000000..aaa1b3f2377a9 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/README.md @@ -0,0 +1,147 @@ +# Cloud Security Posture Kibana Plugin + +Cloud Posture automates the identification and remediation of risks across cloud infrastructures + +--- + +## Development + +Read [Kibana Contributing Guide](https://github.com/elastic/kibana/blob/main/CONTRIBUTING.md) for more details + +## Testing + +For general guidelines, read [Kibana Testing Guide](https://www.elastic.co/guide/en/kibana/current/development-tests.html) for more details + +### Tests + +1. Unit Tests (Jest) - located in sibling files to the source code +1. [API Integration Tests](../../../../test/api_integration/apis/cloud_security_posture/config.ts) +1. [Telemetry Integration Tests](../../../../test/cloud_security_posture_api/config.ts) +1. [End-to-End Tests](../../../../test/cloud_security_posture_functional/config.ts) +1. [Serverless API Integration tests](../../../../test_serverless/api_integration/test_suites/security/config.ts) +1. [Serverless End-to-End Tests](../../../../test_serverless/functional/test_suites/security/config.ts) +1. [Cypress End-to-End Tests](../../../../test/security_solution_cypress/cypress/e2e/cloud_security_posture) + + +### Tools + +Run **TypeScript**: + +```bash +node scripts/type_check.js --project=x-pack/solutions/security/plugins/cloud_security_posture/tsconfig.json +``` + +Run **ESLint**: + +```bash +yarn lint:es x-pack/solutions/security/plugins/cloud_security_posture +``` + +Run **i18n check**: +```bash +node scripts/i18n_check.js +``` + +> **Note** +> +> i18n should run on project scope as it checks translations files outside of our plugin. +> +> Fixes can be applied using the --fix flag + +Run [**Unit Tests**](https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing): + +```bash +yarn test:jest --config x-pack/solutions/security/plugins/cloud_security_posture/jest.config.js +``` + +> **Note** +> +> for a coverage report, add the `--coverage` flag, and run `open target/kibana-coverage/jest/x-pack/solutions/security/plugins/cloud_security_posture/index.html` + +Run [**Integration Tests**](https://docs.elastic.dev/kibana-dev-docs/tutorials/testing-plugins#): + +```bash +yarn test:ftr --config x-pack/test/api_integration/config.ts +``` + +Run [**End-to-End Tests**](https://www.elastic.co/guide/en/kibana/current/development-tests.html#_running_functional_tests): + +```bash +yarn test:ftr --config x-pack/test/cloud_security_posture_functional/config.ts +yarn test:ftr --config x-pack/test/api_integration/apis/cloud_security_posture/config.ts +yarn test:ftr --config x-pack/test/cloud_security_posture_api/config.ts +yarn test:ftr --config x-pack/test_serverless/api_integration/test_suites/security/config.ts --include-tag=cloud_security_posture +yarn test:ftr --config x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.ts +``` + +Run [**End-to-End Cypress Tests**](https://github.com/elastic/kibana/tree/main/x-pack/test/security_solution_cypress/cypress): +> **Note** +> +> Run this from security_solution_cypress folder +```bash +yarn cypress:open:serverless +yarn cypress:open:ess +yarn cypress:cloud_security_posture:run:serverless +yarn cypress:cloud_security_posture:run:ess +``` + +#### Run **FTR tests (integration or e2e) for development** + +Functional test runner (FTR) can be used separately with `ftr:runner` and `ftr:server`. This is convenient while developing tests. + +For example, + +run ESS (stateful) api integration tests: +```bash +yarn test:ftr:server --config x-pack/test/api_integration/config.ts +yarn test:ftr:runner --config x-pack/test/api_integration/apis/cloud_security_posture/config.ts +``` + +run ESS (stateful) telemetry integration tests: +```bash +yarn test:ftr:server --config x-pack/test/cloud_security_posture_api/config.ts +yarn test:ftr:runner --config x-pack/test/cloud_security_posture_api/config.ts +``` + +run ESS (stateful) e2e tests: +```bash +yarn test:ftr:server --config x-pack/test/cloud_security_posture_functional/config.ts +yarn test:ftr:runner --config x-pack/test/cloud_security_posture_functional/config.ts +``` + +run serverless api integration tests: +```bash +yarn test:ftr:server --config x-pack/test_serverless/api_integration/test_suites/security/config.ts +yarn test:ftr:runner --config x-pack/test_serverless/api_integration/test_suites/security/config.ts --include-tag=cloud_security_posture +``` + +run serverless e2e tests: +```bash +yarn test:ftr:server --config x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.ts +yarn test:ftr:runner ---config x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.ts +``` + +#### Run **Cypress tests (e2e) for development** +When developing feature outside our plugin folder, instead of using FTRs for e2e test, we may use Cypress. Before running cypress, make sure you have installed it first. Like FTRs, we can run cypress in different environment, for example: + +run ess e2e tests: +```bash +yarn cypress:open:ess +``` + +run ess Cloud Security Posture e2e tests: +```bash +yarn cypress:cloud_security_posture:run:ess +``` + +run serverless e2e tests: +```bash +yarn cypress:open:serverless +``` + +run serverless Cloud Security Posture e2e tests: +```bash +yarn cypress:cloud_security_posture:run:serverless +``` + +Unlike FTR where we have to set server and runner separately, Cypress handles everything in 1 go, so just running the above the script is enough to get it running \ No newline at end of file diff --git a/x-pack/plugins/cloud_security_posture/common/constants.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/constants.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/constants.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/constants.ts diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/common/dev_docs/__auto_generated_csp_requirements_test_coverage.md b/x-pack/solutions/security/plugins/cloud_security_posture/common/dev_docs/__auto_generated_csp_requirements_test_coverage.md new file mode 100644 index 0000000000000..a7cf161697027 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/common/dev_docs/__auto_generated_csp_requirements_test_coverage.md @@ -0,0 +1,993 @@ +# Cloud Security Posture - Requirements Test Coverage + +This document provides a summary of the requirements test coverage for Cloud Security Posture. + +You can also check out the dedicated app view, which enables easier search and filter functionalities. +[Requirement test coverage app](https://vxgs2c.csb.app/) + +## Directory: x-pack/packages/kbn-cloud-security-posture + +**Total Tests:** 10 | **Skipped:** 0 (0.00%) | **Todo:** 0 (0.00%) + +![](https://img.shields.io/badge/KBN-PACKAGE-blueviolet) + +
+Test Details + +| Test Label | Type | Skipped | Todo | +|------------|------|---------|------| +| [test helper methods](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | describe | | | +| [extractErrorMessage Test](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | describe | | | +| [should return error message if input is instance of Error](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | +| [should return string if input is string](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | +| [should return fallbackMessage is input is not string nor instance of Error](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | +| [should return default message when input is not string nor instance of Error and fallbackMessage is not provided](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | +| [buildMutedRulesFilter Test](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | describe | | | +| [should return an empty array if no rules are muted](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | +| [should return the correct query for a single muted rule](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | +| [should return the correct queries for multiple muted rules](x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.test.ts) | it | | | +
+ +## Directory: x-pack/solutions/security/plugins/cloud_security_posture + +**Total Tests:** 463 | **Skipped:** 7 (1.51%) | **Todo:** 0 (0.00%) + +![](https://img.shields.io/badge/UT-brightgreen) ![](https://img.shields.io/badge/HAS-SKIP-yellow) + +
+Test Details + +| Test Label | Type | Skipped | Todo | +|------------|------|---------|------| +| [Detection rules utils](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | describe | | | +| [should convert tags to KQL format with AND operator](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [Should convert tags to KQL format with AND Operator (empty array)](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [should convert tags to KQL format with OR Operator](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [Should convert tags to KQL format with OR Operator (empty array)](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [Should generate search tags for a CSP benchmark rule](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [Should handle undefined benchmark object gracefully](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [Should handle undefined rule number gracefully](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [Should generate search tags for a CSP benchmark rule given an array of Benchmarks](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [Should handle undefined benchmark object gracefully given an array of empty benchmark](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [Should generate tags for a CSPM benchmark rule](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [Should generate tags for a KSPM benchmark rule](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts) | it | | | +| [test helper methods](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | describe | | | +| [get default integration type from inputs with multiple enabled types](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [get default integration type from inputs without any enabled types](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [get EKS integration type](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [get Vanilla K8S integration type](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [get benchmark type filter based on a benchmark id](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [should return a string with the correct filter when given a benchmark type and section](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [get benchmark filter query based on a benchmark Id, version](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [get benchmark filter query based on a benchmark Id, version and multiple sections and rule numbers](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [get benchmark filter query based on a benchmark Id, version and just sections](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [get benchmark filter query based on a benchmark Id, version and just rule numbers](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [cleanupCredentials](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | describe | | | +| [cleans unused aws credential methods, except role_arn when using assume_role](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [cleans unused aws credential methods, when using cloud formation](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [cleans unused aws credential methods, when using direct_access_keys method ](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [when aws credential type is undefined, return unchanged policy](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [cleans unused gcp credential methods, when using credentials-file method ](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [when gcp credential type is undefined, return unchanged policy](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts) | it | | | +| [isSubscriptionAllowed](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/subscription.test.ts) | describe | | | +| [should allow any cloud subscription](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/subscription.test.ts) | it | | | +| [should allow enterprise and trial licenses for on-prem](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/subscription.test.ts) | it | | | +| [should not allow enterprise and trial licenses for on-prem](x-pack/solutions/security/plugins/cloud_security_posture/common/utils/subscription.test.ts) | it | | | +| [CspRouter](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | describe | | | +| [happy path](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | describe | | | +| [should render Findings](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | +| [should render Dashboards](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | +| [should render the Vulnerability Dashboard](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | +| [should render Benchmarks](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | +| [should render Rules](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | +| [unhappy path](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | describe | | | +| [should redirect base path to dashboard](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | +| [CspRoute](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | describe | | | +| [should not render disabled path](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | +| [should render SpyRoute for static paths](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | +| [should not render SpyRoute for dynamic paths](x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx) | it | | | +| [useBenchmarkDynamicValues](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts) | describe | | | +| [should return the correct dynamic benchmark values for each provided benchmark ID](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts) | it | | | +| [should return the correct resource plurals based on the provided resource count](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts) | it | | | +| [useNavigateFindings](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts) | describe | | | +| [creates a URL to findings page with correct path, filter and dataViewId](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts) | it | | | +| [creates a URL to findings page with correct path and negated filter](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts) | it | | | +| [creates a URL to vulnerabilities page with correct path, filter and dataViewId](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts) | it | | | +| [useUrlQuery](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts) | describe | | | +| [uses default query when no query is provided](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts) | it | | | +| [merges default query, partial first query and partial second query](x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts) | it | | | +| [getSecuritySolutionLink](x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts) | describe | | | +| [gets the correct link properties](x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts) | it | | | +| [getAbbreviatedNumber](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts) | describe | | | +| [should return the same value if it is less than 1000](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts) | it | | | +| [should use numeral to format the value if it is greater than or equal to 1000](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts) | it | | | +| [should return 0 if the value is NaN](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts) | it | | | +| [getCvsScoreColor](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | describe | | | +| [returns correct color for low severity score](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [returns correct color for medium severity score](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [returns correct color for high severity score](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [returns correct color for critical severity score](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [returns correct color for low severity score for undefined value](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [getSeverityStatusColor](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | describe | | | +| [should return the correct color for LOW severity](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [should return the correct color for MEDIUM severity](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [should return the correct color for HIGH severity](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [should return the correct color for CRITICAL severity](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [should return #aaa for an unknown severity](x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts) | it | | | +| [AccountsEvaluatedWidget](x-pack/solutions/security/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx) | describe | | | +| [renders the component with benchmark data correctly](x-pack/solutions/security/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx) | it | | | +| [calls navToFindingsByCloudProvider when a benchmark with provider is clicked](x-pack/solutions/security/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx) | it | | | +| [calls navToFindingsByCisBenchmark when a benchmark with benchmarkId is clicked](x-pack/solutions/security/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/components/chart_panel.test.tsx) | describe | | | +| [renders loading state](x-pack/solutions/security/plugins/cloud_security_posture/public/components/chart_panel.test.tsx) | it | | | +| [renders error state](x-pack/solutions/security/plugins/cloud_security_posture/public/components/chart_panel.test.tsx) | it | | | +| [renders chart component](x-pack/solutions/security/plugins/cloud_security_posture/public/components/chart_panel.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | describe | | | +| [renders children if setup status is indexed](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | +| [renders default loading text when query isLoading](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | +| [renders default loading text when query is idle](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | +| [renders default error texts when query isError](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | +| [prefers custom error render](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | +| [prefers custom loading render](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | +| [renders no data prompt when query data is undefined](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | +| [prefers custom no data prompt](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx) | it | | | +| [CloudSecurityDataTable](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | describe | | | +| [renders loading state](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | +| [renders empty state when no rows are present](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | +| [renders data table with rows](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | +| [renders data table with actions button](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | +| [renders data table without actions button](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx) | it | | | +| [FieldsSelectorTable](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | describe | | | +| [renders the table with data correctly](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [calls onAddColumn when a checkbox is checked](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [calls onRemoveColumn when a checkbox is unchecked](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [View selected](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | describe | | | +| [should show "view all" option by default](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [should render "view selected" option when previous selection was "view selected"](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [should show "view all" option after the "view all" is selected](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [should show only selected columns after the "view selected" option is selected](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [should show all columns available after the "view all" option is selected](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [should open the view selector with button click](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [Searching columns](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | describe | | | +| [should find all columns match the search term](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [should find all columns match the search term and are selected](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx) | it | | | +| [firstNonNullValue](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | describe | | | +| [returns the value itself for non-null single value](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | +| [returns undefined for a null single value](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | +| [returns undefined for an array of all null values](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | +| [returns the first non-null value in an array of mixed values](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | +| [returns the first value in an array of all non-null values](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | +| [returns undefined for an empty array](x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts) | it | | | +| [DetectionRuleCounter](x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | describe | | | +| [should render loading skeleton when both rules and alerts are loading](x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | it | | | +| [should render create rule link when no rules exist](x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | it | | | +| [should render alert and rule count when rules exist](x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | it | | | +| [should show loading spinner when creating a rule](x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | +| [shows license block if subscription is not allowed](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [license block renders with license url locator](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [license block renders without license url locator](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates package policy namespace to default when it changes](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders and updates name field](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders and updates description field](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders KSPM input selector](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates selected KSPM input](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders CSPM input selector](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders disabled KSPM input when editing](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders disabled CSPM input when editing](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [selects default KSPM input selector](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [selects default VULN_MGMT input selector](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [selects default CSPM input selector](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [K8S](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | +| [K8S or KSPM Vanilla should not render any Setup Access option](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [EKS Credentials input fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | +| [documentation Hyperlink should have correct URL to redirect users to AWS page](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_EKS} Assume Role fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_EKS} Assume Role fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_EKS} Direct Access Keys fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_EKS} Direct Access Keys fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_EKS} Temporary Keys fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_EKS} Temporary Keys fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_EKS} Shared Credentials fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_EKS} Shared Credentials fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [AWS Credentials input fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | +| [renders ${CLOUDBEAT_AWS} Account Type field, AWS Organization is enabled for supported versions](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [${CLOUDBEAT_AWS} form displays upgrade message for unsupported versions and aws organization option is disabled](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [${CLOUDBEAT_AWS} form do not displays upgrade message for supported versions and aws organization option is enabled](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [Getting started Hyperlink should have correct URL to redirect users to elastic page](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [documentation Hyperlink should have correct URL to redirect users to elastic page if user chose Manual](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [documentation Hyperlink should have correct URL to redirect users to AWS page if user chose Cloudformation](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_AWS} Assume Role fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_AWS} Assume Role fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_AWS} Direct Access Keys fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_AWS} Direct Access Keys fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_AWS} Temporary Keys fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_AWS} Temporary Keys fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_AWS} Shared Credentials fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_AWS} Shared Credentials fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [Vuln Mgmt](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | +| [Update Agent Policy CloudFormation template from vars](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [Additional Charge Callout message should be rendered](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [GCP Credentials input fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | +| [renders ${CLOUDBEAT_GCP} Not supported when version is not at least version 1.5.2](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [documentation Hyperlink should have correct URL to redirect users to elastic page](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders Google Cloud Shell forms when Setup Access is set to Google Cloud Shell](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_GCP} Credentials File fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_GCP} Credentials File fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [${CLOUDBEAT_GCP} form do not displays upgrade message for supported versions and gcp organization option is enabled](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_GCP} Organization fields when account type is Organization and Setup Access is Google Cloud Shell](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_GCP} Organization fields when account type is Organization and Setup Access is manual](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [Should not render ${CLOUDBEAT_GCP} Organization fields when account type is Single](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_GCP} organization id](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [Azure Credentials input fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | +| [renders ${CLOUDBEAT_AZURE} Not supported when version is not at least version 1.6.0](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [doesnt render ${CLOUDBEAT_AZURE} Manual fields when version is not at least version 1.7.0](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [selects default ${CLOUDBEAT_AZURE} fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders ${CLOUDBEAT_AZURE} Service Principal with Client Secret fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates ${CLOUDBEAT_AZURE} Service Principal with Client Secret fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [Agentless](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | describe | | | +| [should not render setup technology selector if agentless is not available and CSPM integration supports agentless](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [should render setup technology selector for AWS and allow to select agentless](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [should render setup technology selector for GCP for organisation account type](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [should render setup technology selector for GCP for single-account](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [should render setup technology selector for Azure for Organisation type](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [should render setup technology selector for Azure for Single Subscription type](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [should not render setup technology selector for KSPM](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [should not render setup technology selector for CNVM](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders Service principal with Client Certificate fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [updates Service principal with Client Certificate fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [should not render Service principal with Client Username and Password option](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | | | +| [renders Service principal with Client Username and Password fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [updates Service principal with Client Username and Password fields](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [useSetupTechnology](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | describe | | | +| [create page flow](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | describe | | | +| [initializes with AGENT_BASED technology](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [sets to AGENT-BASED when agentless is available and AWS cloud](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [sets to AGENT-BASED when agentless is available and GCP cloud](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [sets to AGENT-BASED when agentless is available and Azure cloud](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [sets to AGENT_BASED when agentless is available but input is not supported for agentless](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [sets to AGENT_BASED when isAgentlessEnabled is false](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [calls handleSetupTechnologyChange when setupTechnology changes](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [edit page flow](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | describe | | | +| [initializes with AGENT_BASED technology](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [initializes with agentless when is in edit mode and is agentless selected](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [should not call handleSetupTechnologyChange when setupTechnology changes](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [should not update setupTechnology when agentlessPolicyId becomes available](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts) | it | | | +| [getPosturePolicy](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | describe | | | +| [updates package policy with hidden vars for ${name}](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [updates package policy required vars (posture/deployment)](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [updates package policy with a single enabled input](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should correctly increment cspm package name](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return correctly increment vuln_mgmt package name](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return correctly increment kspm package name](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return package name with -1 when no matching package policies are found](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return empty string when policy_templates is missing](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return empty string when policy_templates.name is not cspm](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return empty string when policy_templates.inputs is missing](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return empty string when policy_templates.inputs is empty](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return empty string when policy_templates.inputs is undefined](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return empty string when policy_templates.inputs.vars does not have cloud_shell_url](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return empty string when policy_templates.inputs.varshave cloud_shell_url but no default](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should cloud shell url when policy_templates.inputs.vars have cloud_shell_url](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return "direct_access_key" for agentless](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return "assume_role" for agent-based, when cloudformation is not available](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return "cloud_formation" for agent-based, when cloudformation is available](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return "service_principal_with_client_secret" for agentless](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [shold return "arm_template" for agent-based, when arm_template is available](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return "managed_identity" for agent-based, when arm_template is not available](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return manual credentials-json credentials type for agentless](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return google_cloud_shell setup access for agent-based if cloud_shell_url is available](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [should return manual setup access for agent-based if cloud_shell_url is not available](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [Should return var item when key exist](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [Should return undefined when key is invalid](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [Should return undefined when datastream is undefined](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [Should return undefined when stream is undefined](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [Should return undefined when stream.var is invalid](x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts) | it | | | +| [NoFindingsStates](x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | describe | | | +| [shows integrations installation prompt with installation links when integration is not-installed](x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | +| [shows install agent prompt with install agent link when status is not-deployed](x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | +| [shows install agent prompt with install agent link when status is not-deployed and postureType is KSPM](x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | +| [shows indexing message when status is indexing](x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | +| [shows timeout message when status is index-timeout](x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | +| [shows unprivileged message when status is unprivileged](x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | +| [renders empty container when the status does not match a no finding status](x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | describe | | | +| [renders cis integration name](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | +| [renders benchmark version](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | +| [renders applicable to](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | +| [renders evaluated](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | +| [renders compliance](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | describe | | | +| [renders the page header](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | it | | | +| [renders the "add integration" button](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | it | | | +| [renders error state while there is an error](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | it | | | +| [renders the benchmarks table](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx) | it | | | +| [getTopRisks](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts) | describe | | | +| [returns sorted by posture score](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts) | it | | | +| [return sorted array with the correct number of elements](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | describe | | | +| [shows package not installed page instead of tabs](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [no findings state: not-deployed - shows NotDeployed instead of dashboard](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [no findings state: indexing - shows Indexing instead of dashboard](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [no findings state: indexing - shows Indexing instead of dashboard when waiting_for_results](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [no findings state: index-timeout - shows IndexTimeout instead of dashboard](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [no findings state: unprivileged - shows Unprivileged instead of dashboard](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [shows dashboard when there are findings in latest findings index](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [Show Kubernetes dashboard if there are KSPM findings](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [Show Cloud dashboard if there are CSPM findings](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [Show Cloud dashboard "no findings prompt" if the CSPM integration is installed without findings](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [Show Kubernetes dashboard "no findings prompt" if the KSPM integration is installed without findings](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [Prefer Cloud dashboard if both integration are installed](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [Prefer Cloud dashboard if both integration have findings](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [Show CSPM installation prompt if CSPM is not installed and KSPM is installed ,NO AGENT](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [Show KSPM installation prompt if KSPM is not installed and CSPM is installed , NO AGENT](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [getDefaultTab](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | describe | | | +| [returns CSPM tab if only CSPM has findings](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [returns CSPM tab if both CSPM and KSPM has findings](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [returns KSPM tab if only KSPM has findings](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [when no findings preffers CSPM tab unless not-installed or unprivileged](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [should returns undefined when plugin status and cspm stats is not provided](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [should return undefined is plugin status and csp status is not provided ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [should return undefined when plugins status or cspm stats data is not provided](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx) | describe | | | +| [Sorting](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx) | describe | | | +| [sorts by ascending order of compliance scores](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx) | it | | | +| [toggles sort order when clicking Posture Score](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx) | describe | | | +| [renders all counter cards](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx) | it | | | +| [renders counters content according to mock](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx) | it | | | +| [renders counters value in compact abbreviation if its above one million](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | describe | | | +| [renders integrations installation prompt if integration is not installed and there are no findings](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | +| [SearchBar](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | describe | | | +| [set search query](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | +| [renders no results message and reset button when search query does not match](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | +| [add filter](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | +| [remove filter](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | +| [DistributionBar](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | describe | | | +| [renders the distribution bar](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | +| [filters by passed findings when clicking on the passed findings button](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | +| [filters by failed findings when clicking on the failed findings button](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | +| [Overview Tab](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | +| [details and remediation accordions are open](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [displays text details summary info](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [displays missing info callout when data source is not CSP](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [does not display missing info callout when data source is CSP](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [Rule Tab](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | +| [displays rule text details](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [displays missing info callout when data source is not CSP](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [does not display missing info callout when data source is CSP](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [Table Tab](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | +| [displays resource name and id](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [does not display missing info callout for 3Ps](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [JSON Tab](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | describe | | | +| [does not display missing info callout for 3Ps](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [should allow pagination with next](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [should allow pagination with previous](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx) | it | | | +| [Get Filters](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts) | describe | | | +| [negate an existing filter](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx) | describe | | | +| [displays rules with their initial state](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx) | describe | | | +| [calls Benchmark API](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx) | it | | | +| [Display success state when result request is resolved](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx) | it | | | +| [use_change_csp_rule_state](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | describe | | | +| [should call http.post with the correct parameters](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | +| [should cancel queries and update query data onMutate](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | +| [should invalidate queries onSettled](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | +| [should restore previous query data onError](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | +| [creates the new set of cache rules in a muted state when calling createRulesWithUpdatedState](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | +| [creates the new cache with rules in a unmute state](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | | | +| [Header Info](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | | | +| [displays text details flyout header info](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | | | +| [JSON Tab](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | | | +| [show display Vulnerability JSON Tab](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | | | +| [Overview Summary Details Tab](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | | | +| [show display Vulnerability details in a Overview Tab](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | | | +| [show empty state for no fixes](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | | | +| [Flyout Pagination](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [should allow pagination with next](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [should allow pagination with previous](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | describe | | | +| [No vulnerabilities state: not-deployed - shows NotDeployed instead of vulnerabilities ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | +| [No vulnerabilities state: indexing - shows Indexing instead of vulnerabilities ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | +| [No vulnerabilities state: index-timeout - shows IndexTimeout instead of vulnerabilities ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | +| [No vulnerabilities state: unprivileged - shows Unprivileged instead of vulnerabilities ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | +| [renders vuln_mgmt integrations installation prompt if vuln_mgmt integration is not installed](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx) | it | | | +| [](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | describe | | | +| [renders vuln_mgmt integrations installation prompt if vuln_mgmt integration is not installed](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | +| [No vulnerabilities state: not-deployed - shows NotDeployed instead of vulnerabilities ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | +| [No vulnerabilities state: indexing - shows Indexing instead of vulnerabilities ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | +| [No vulnerabilities state: index-timeout - shows IndexTimeout instead of vulnerabilities ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | +| [No vulnerabilities state: unprivileged - shows Unprivileged instead of vulnerabilities ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | +| [Vulnerabilities state: indexed - renders dashboard container on indexed state ](x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx) | it | | | +| [createBenchmarkScoreIndex](x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | describe | | | +| [should delete old index template from prev verions first](x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | +| [should create index template with the correct index pattern, index name and default ingest pipeline](x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | +| [should create index template the correct index patter, index name and default ingest pipeline but without lifecycle in serverless](x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | +| [should create index if does not exist](x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | +| [should updat index mapping if index exists](x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts) | it | | | +| [createTransformIfNotExist](x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | describe | | | +| [expect not to create if already exists](x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | +| [expect to create if does not already exist](x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | +| [expect not to create if get error is not 404](x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | +| [startTransformIfNotStarted](x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | describe | | | +| [expect not to start if state is ${state}](x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | +| [expect not to start if transform not found](x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | +| [expect to start if state is stopped](x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | +| [expect to attempt restart if state is failed](x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts) | it | | | +| [Benchmark Field Key Functions](x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | describe | | | +| [toBenchmarkDocFieldKey should keep the same benchmark id and version key for benchmark document](x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | +| [toBenchmarkDocFieldKey should convert benchmark version with . delimiter correctly](x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | +| [toBenchmarkMappingFieldKey should convert benchmark version with _ delimiter correctly](x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | +| [toBenchmarkMappingFieldKey should handle benchmark version with dots correctly](x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | +| [MAPPING_VERSION_DELIMITER should be an underscore](x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts) | it | | | +| [Cloud Security Posture Plugin](x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.test.ts) | describe | | | +| [start()](x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.test.ts) | describe | | | +| [should initialize when package installed](x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.test.ts) | it | | | +| [should not initialize when package is not installed](x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.test.ts) | it | | | +| [should not initialize when other package is created](x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.test.ts) | it | | | +| [packagePolicyPostCreate should return the same received policy](x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.test.ts) | it | | | +| [getSortedCspBenchmarkRules](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | describe | | | +| [sorts by metadata.benchmark.rule_number, invalid semantic version still should still get sorted and empty values should be sorted last](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | +| [edge case - returns empty array if input is empty](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | +| [edge case - returns sorted array even if input only has one element](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | +| [returns sorted array even with undefined or null properties](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | +| [returns sorted array with invalid semantic versions](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts) | it | | | +| [benchmarks API](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | +| [validate the API route path](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should accept to a user with fleet.all privilege](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should reject to a user without fleet.all privilege](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [test input schema](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | +| [expect to find default values](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [expect to find package_policy_name](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should throw when page field is not a positive integer](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should throw when per_page field is not a positive integer](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should throw when sort_field is not string](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should not throw when sort_field is a string](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should throw when sort_order is not ](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should not throw when ](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should not throw when ](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should not throw when fields is a known string literal](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [test benchmarks utils](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | +| [test getAgentPolicies](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | +| [should return one agent policy id when there is duplication](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [should return full policy ids list when there is no id duplication](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [test addPackagePolicyCspBenchmarkRule](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | describe | | | +| [should retrieve the rules count by the filtered benchmark type](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts) | it | | | +| [compliance dashboard permissions API](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.test.ts) | describe | | | +| [should accept to a user with fleet.all privilege](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.test.ts) | it | | | +| [should reject to a user without fleet.all privilege](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.test.ts) | it | | | +| [getBenchmarksFromAggs](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts) | describe | | | +| [should return value matching ComplianceDashboardDataV2["benchmarks"]](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts) | it | | | +| [getClustersFromAggs](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts) | describe | | | +| [should return value matching ComplianceDashboardData["clusters"]](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts) | it | | | +| [getPostureStatsFromAggs](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts) | describe | | | +| [should return value matching ComplianceDashboardData["resourcesTypes"]](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts) | it | | | +| [roundScore](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | describe | | | +| [should return decimal values with one fraction digit](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | +| [calculatePostureScore](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | describe | | | +| [should return calculated posture score](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | +| [getStatsFromFindingsEvaluationsAggs](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | describe | | | +| [should throw error in case no findings were found](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | +| [should return value matching ComplianceDashboardData["stats"]](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | +| [checks for stability in case one of the values is zero](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | +| [should return zero on all stats if there are no failed or passed findings](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts) | it | | | +| [getTrendsFromQueryResult](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts) | describe | | | +| [should return value matching Trends type definition, in descending order, and with postureScore](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts) | it | | | +| [calculateIntegrationStatus for cspm](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | describe | | | +| [Verify status when CSP package is not installed](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are no permission for cspm](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are no findings, no healthy agents and no installed policy templates](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are findings and installed policies but no healthy agents](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are findings ,installed policies and healthy agents](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are no findings ,installed policies and no healthy agents](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are installed policies, healthy agents and no findings](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are installed policies, healthy agents and no findings and been more than 10 minutes](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are installed policies, healthy agents past findings but no recent findings](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [calculateIntegrationStatus for vul_mgmt](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | describe | | | +| [Verify status when there are no permission for vul_mgmt](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are no vul_mgmt findings, no healthy agents and no installed policy templates](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are vul_mgmt findings and installed policies but no healthy agents](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are vul_mgmt findings ,installed policies and healthy agents](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are no vul_mgmt findings ,installed policies and no healthy agents](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are installed policies, healthy agents and no vul_mgmt findings](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are installed policies, healthy agents and no vul_mgmt findings and been more than 10 minutes](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are installed policies, healthy agents and no vul_mgmt findings and been more than 1 hour](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [Verify status when there are installed policies, healthy agents past vul_mgmt findings but no recent findings](x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts) | it | | | +| [finding stats task state](x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | describe | | | +| [v1](x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | describe | | | +| [should work on empty object when running the up migration](x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | it | | | +| [shouldn](x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | it | | | +| [should drop unknown properties when running the up migration](x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.test.ts) | it | | | +
+ +## Directory: x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture + +**Total Tests:** 43 | **Skipped:** 6 (13.95%) | **Todo:** 0 (0.00%) + +![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/SERVERLESS-pink) ![](https://img.shields.io/badge/API-INTEGRATION-purple) ![](https://img.shields.io/badge/HAS-SKIP-yellow) + +
+Test Details + +| Test Label | Type | Skipped | Todo | +|------------|------|---------|------| +| [GET /internal/cloud_security_posture/benchmark](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | describe | | | +| [Should return non-empty array filled with Rules if user has CSP integrations](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | it | | | +| [Should return array size 2 when we set per page to be only 2 (total element is still 3)](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | it | | | +| [Should return array size 2 when we set per page to be only 2 (total element is still 3)](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | it | | | +| [Should return empty array when we set page to be above the last page number](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v1.ts) | it | | | +| [GET /internal/cloud_security_posture/benchmark](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v2.ts) | describe | | | +| [Should return all benchmarks if user has CSP integrations](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark/v2.ts) | it | | | +| [GET internal/cloud_security_posture/rules/_find](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | describe | | | +| [Should return 500 error code when not provide package policy id or benchmark id](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 500 error code when provide both package policy id and benchmark id](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 404 status code when the package policy ID does not exist](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 200 status code and filter rules by benchmarkId](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 200 status code, and only requested fields in the response](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 200 status code, items sorted by metadata.section field](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 200 status code and paginate rules with a limit of PerPage](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [cloud_security_posture](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/index.ts) | describe | | | +| [Intercept the usage API request sent by the metering background task manager](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Should intercept usage API request for CSPM](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Should intercept usage API request for KSPM](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Should intercept usage API request for CNVM](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Should intercept usage API request for Defend for Containers](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Should intercept usage API request with all integrations usage records](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/serverless_metering/cloud_security_metering.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [GET /internal/cloud_security_posture/status](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | describe | | | +| [STATUS = INDEXED TEST](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | describe | | | +| [Return kspm status indexed when logs-cloud_security_posture.findings_latest-default contains new kspm documents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | it | | | +| [Return cspm status indexed when logs-cloud_security_posture.findings_latest-default contains new cspm documents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | it | | | +| [Return vuln status indexed when logs-cloud_security_posture.vulnerabilities_latest-default contains new documents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts) | it | | | +| [GET /internal/cloud_security_posture/status](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | describe | | | +| [STATUS = INDEXING TEST](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | describe | | | +| [Return kspm status indexing when logs-cloud_security_posture.findings_latest-default doesn](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | it | | | +| [Return cspm status indexing when logs-cloud_security_posture.findings_latest-default doesn](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | it | | | +| [Return vuln status indexing when logs-cloud_security_posture.vulnerabilities_latest-default doesn](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts) | it | | | +| [GET /internal/cloud_security_posture/status](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | describe | | | +| [STATUS = NOT-DEPLOYED and STATUS = NOT-INSTALLED TEST](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | describe | | | +| [Should return not-deployed when installed kspm, no findings on either indices and no healthy agents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | +| [Should return not-deployed when installed cspm, no findings on either indices and no healthy agents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | +| [Should return not-deployed when installed cnvm, no findings on either indices and no healthy agents](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | +| [Verify cloud_security_posture telemetry payloads](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | describe | | | +| [includes only KSPM findings](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | +| [includes only CSPM findings](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | +| [includes CSPM and KSPM findings](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | +| [](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | +| [includes KSPM findings without posture_type and CSPM findings as well](x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts) | it | | | +
+ +## Directory: x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture + +**Total Tests:** 33 | **Skipped:** 3 (9.09%) | **Todo:** 0 (0.00%) + +![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/SERVERLESS-pink) ![](https://img.shields.io/badge/HAS-SKIP-yellow) + +
+Test Details + +| Test Label | Type | Skipped | Todo | +|------------|------|---------|------| +| [Agentless API Serverless](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/create_agent.ts) | describe | | | +| [should create agentless-agent](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/create_agent.ts) | it | | | +| [should create default agent-based agent](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/create_agent.ts) | it | | | +| [cloud_security_posture](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/index.ts) | describe | | | +| [Serverless - Agentless CIS Integration Page](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | | | +| [Serverless - Agentless CIS_AWS Single Account Launch Cloud formation](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | | | +| [should show CIS_AWS Launch Cloud formation button when credentials selector is direct access keys and package version is ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | | | +| [should hide CIS_AWS Launch Cloud formation button when credentials selector is temporary keys and package version is less than ${previousPackageVersion}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | | | +| [Serverless - Agentless CIS_AWS ORG Account Launch Cloud formation](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | | | +| [should show CIS_AWS Launch Cloud formation button when credentials selector is direct access keys and package version is ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [should hide CIS_AWS Launch Cloud formation button when credentials selector is temporary keys and package version is less than ${previousPackageVersion}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | | | +| [Serverless - Agentless CIS_AWS edit flow](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | | | +| [user should save and edit agentless integration policy](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | | | +| [Serverless - Agentless CIS_AWS Create flow](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [user should save agentless integration policy when there are no api or validation errors and button is not disabled](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Agentless CIS Integration Page](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | describe | | | +| [Agentless CIS_GCP Single Account Launch Cloud shell](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | describe | | | +| [should show CIS_GCP Launch Cloud Shell button when package version is ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | +| [should hide CIS_GCP Launch Cloud Shell button when package version is less than ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | +| [Agentless CIS_GCP ORG Account Launch Cloud Shell](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | describe | | | +| [should show CIS_GCP Launch Cloud Shell button when package version is ${CLOUD_CREDENTIALS_PACKAGE_VERSION}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | +| [should hide CIS_GCP Launch Cloud shell button when package version is ${previousPackageVersion}](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | +| [Serverless - Agentless CIS_GCP edit flow](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | describe | | | +| [user should save and edit agentless integration policy](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts) | it | | | +| [cloud_security_posture](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/index.ts) | describe | | | +| [Cloud Posture Dashboard Page](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts) | describe | | | +| [Kubernetes Dashboard](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts) | describe | | | +| [displays accurate summary compliance score](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts) | it | | | +| [[Essentials PLI] Test Cloud Security Posture Integrations on Serverless](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/csp_integrations_form.essentials.ts) | describe | | | +| [[Essentials PLI] Integration installation form should be available with Essentials or Complete PLI](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/csp_integrations_form.essentials.ts) | it | | | +| [Test Cloud Security Posture Integrations on Serverless](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/csp_integrations_form.ts) | describe | | | +| [Integration installation form should not be available without required PLI](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/csp_integrations_form.ts) | it | | | +| [cloud_security_posture](x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/index.ts) | describe | | | +
+ +## Directory: x-pack/test/api_integration/apis/cloud_security_posture + +**Total Tests:** 65 | **Skipped:** 0 (0.00%) | **Todo:** 0 (0.00%) + +![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/API-INTEGRATION-purple) + +
+Test Details + +| Test Label | Type | Skipped | Todo | +|------------|------|---------|------| +| [GET /internal/cloud_security_posture/benchmark](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | describe | | | +| [Should return non-empty array filled with Rules if user has CSP integrations](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | it | | | +| [Should return array size 2 when we set per page to be only 2 (total element is still 3)](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | it | | | +| [Should return array size 2 when we set per page to be only 2 (total element is still 3)](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | it | | | +| [Should return empty array when we set page to be above the last page number](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v1.ts) | it | | | +| [GET /internal/cloud_security_posture/benchmark](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v2.ts) | describe | | | +| [Should return all benchmarks if user has CSP integrations](x-pack/test/api_integration/apis/cloud_security_posture/benchmark/v2.ts) | it | | | +| [GET internal/cloud_security_posture/rules/_find](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | describe | | | +| [Should return 500 error code when not provide package policy id or benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 500 error code when provide both package policy id and benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 404 status code when the package policy ID does not exist](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 200 status code and filter rules by benchmarkId](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 200 status code, and only requested fields in the response](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 200 status code, items sorted by metadata.section field](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [Should return 200 status code and paginate rules with a limit of PerPage](x-pack/test/api_integration/apis/cloud_security_posture/find_csp_benchmark_rule.ts) | it | | | +| [cloud_security_posture](x-pack/test/api_integration/apis/cloud_security_posture/index.ts) | describe | | | +| [GET internal/cloud_security_posture/rules/_find](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | describe | | | +| [Should return 500 error code when not provide package policy id or benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | +| [Should return 500 error code when provide both package policy id and benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | +| [Should return 404 status code when the package policy ID does not exist](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | +| [Should return 200 status code and filter rules by benchmarkId](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | +| [Should return 200 status code, and only requested fields in the response](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | +| [Should return 200 status code, items sorted by metadata.section field](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | +| [Should return 200 status code and paginate rules with a limit of PerPage](x-pack/test/api_integration/apis/cloud_security_posture/rules/v1.ts) | it | | | +| [GET internal/cloud_security_posture/rules/_find](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | describe | | | +| [Should return 500 error code when not provide benchmark id](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | +| [Should return 200 status code and filter rules by benchmarkId and benchmarkVersion](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | +| [Should return 200 status code, and only requested fields in the response](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | +| [Should return 200 status code, items sorted by metadata.section field](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | +| [Should return 200 status code and paginate rules with a limit of PerPage](x-pack/test/api_integration/apis/cloud_security_posture/rules/v2.ts) | it | | | +| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | describe | | | +| [STATUS = INDEX_TIMEOUT TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | describe | | | +| [Should return index-timeout when installed kspm, has findings only on logs-cloud_security_posture.findings-default* and it has been more than 10 minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | it | | | +| [Should return index-timeout when installed cspm, has findings only on logs-cloud_security_posture.findings-default* and it has been more than 10 minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | it | | | +| [Should return index-timeout when installed cnvm, has findings only on logs-cloud_security_posture.vulnerabilities-default* and it has been more than 4 hours minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_index_timeout.ts) | it | | | +| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | describe | | | +| [STATUS = INDEXED TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | describe | | | +| [Return hasMisconfigurationsFindings true when there are latest findings but no installed integrations](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | +| [Return hasMisconfigurationsFindings true when there are only findings in third party index](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | +| [Return hasMisconfigurationsFindings false when there are no findings](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | +| [Return kspm status indexed when logs-cloud_security_posture.findings_latest-default contains new kspm documents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | +| [Return cspm status indexed when logs-cloud_security_posture.findings_latest-default contains new cspm documents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | +| [Return vuln status indexed when logs-cloud_security_posture.vulnerabilities_latest-default contains new documents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexed.ts) | it | | | +| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | describe | | | +| [STATUS = INDEXING TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | describe | | | +| [Return kspm status indexing when logs-cloud_security_posture.findings_latest-default doesn](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | it | | | +| [Return cspm status indexing when logs-cloud_security_posture.findings_latest-default doesn](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | it | | | +| [Return vuln status indexing when logs-cloud_security_posture.vulnerabilities_latest-default doesn](x-pack/test/api_integration/apis/cloud_security_posture/status/status_indexing.ts) | it | | | +| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | describe | | | +| [STATUS = NOT-DEPLOYED and STATUS = NOT-INSTALLED TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | describe | | | +| [Should return not-deployed when installed kspm, no findings on either indices and no healthy agents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | +| [Should return not-deployed when installed cspm, no findings on either indices and no healthy agents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | +| [Should return not-deployed when installed cnvm, no findings on either indices and no healthy agents](x-pack/test/api_integration/apis/cloud_security_posture/status/status_not_deployed_not_installed.ts) | it | | | +| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | describe | | | +| [STATUS = UNPRIVILEGED TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | describe | | | +| [Return unprivileged for cspm, kspm, vuln_mgmt when users don](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | it | | | +| [status = unprivileged test indices](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | describe | | | +| [Return unprivileged when missing access to findings_latest index](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | it | | | +| [Return unprivileged when missing access to score index](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | it | | | +| [Return unprivileged when missing access to vulnerabilities_latest index](x-pack/test/api_integration/apis/cloud_security_posture/status/status_unprivileged.ts) | it | | | +| [GET /internal/cloud_security_posture/status](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | describe | | | +| [STATUS = WAITING_FOR_RESULT TEST](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | describe | | | +| [Should return waiting_for_result when installed kspm, has no findings and it has been less than 10 minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | it | | | +| [Should return waiting_for_result when installed cspm, has no findings and it has been less than 10 minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | it | | | +| [Should return waiting_for_result when installed cnvm, has no findings and it has been less than 4 hours minutes since the installation](x-pack/test/api_integration/apis/cloud_security_posture/status/status_waiting_for_results.ts) | it | | | +
+ +## Directory: x-pack/test/cloud_security_posture_api + +**Total Tests:** 58 | **Skipped:** 2 (3.45%) | **Todo:** 0 (0.00%) + +![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/API-INTEGRATION-purple) ![](https://img.shields.io/badge/HAS-SKIP-yellow) + +
+Test Details + +| Test Label | Type | Skipped | Todo | +|------------|------|---------|------| +| [GET /internal/cloud_security_posture/benchmarks](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | describe | | | +| [Get Benchmark API](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | describe | | | +| [Verify cspm benchmark score is updated when muting rules](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | it | | | +| [Verify kspm benchmark score is updated when muting rules](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | it | | | +| [Get Benchmark API](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | describe | | | +| [Calling Benchmark API as User with no read access to Security](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | it | | | +| [Calling Benchmark API as User with read access to Security](x-pack/test/cloud_security_posture_api/routes/benchmarks.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Verify update csp rules states API](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | describe | | | +| [mute benchmark rules successfully](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | +| [unmute rules successfully](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | +| [verify new rules are added and existing rules are set.](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | +| [mute detection rule successfully](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | +| [Expect to mute two benchmark rules and one detection rule](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | +| [Expect to save rules states when requesting to update empty object](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | +| [set wrong action input](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | +| [users without read privileges on cloud security should not be able to mute](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | +| [users with all privileges on cloud security should be able to mute](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts) | it | | | +| [Tests get rules states API](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | describe | | | +| [get rules states successfully](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | it | | | +| [get empty object when rules states not exists](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | it | | | +| [GET rules states API with user with read access](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [GET rules states API API with user without read access](x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts) | it | | | +| [/internal/cloud_security_posture/detection_engine_rules/alerts/_status](x-pack/test/cloud_security_posture_api/routes/get_detection_engine_alerts_count_by_rule_tags.ts) | describe | | | +| [GET detection_engine_rules API with user that has specific access](x-pack/test/cloud_security_posture_api/routes/get_detection_engine_alerts_count_by_rule_tags.ts) | describe | | | +| [GET detection_engine_rules API with user with read access](x-pack/test/cloud_security_posture_api/routes/get_detection_engine_alerts_count_by_rule_tags.ts) | it | | | +| [GET detection_engine_rules API with user without read access](x-pack/test/cloud_security_posture_api/routes/get_detection_engine_alerts_count_by_rule_tags.ts) | it | | | +| [Cloud Security Posture](x-pack/test/cloud_security_posture_api/routes/index.ts) | describe | | | +| [GET /internal/cloud_security_posture/stats](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | +| [CSPM Compliance Dashboard Stats API](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | +| [should return CSPM cluster V1 ](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [should return CSPM benchmarks V2 ](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [KSPM Compliance Dashboard Stats API](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | +| [should return KSPM clusters V1 ](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [should return KSPM benchmarks V2](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [should return KSPM benchmarks V2](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [Compliance dashboard based on enabled rules](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | +| [should calculate cspm benchmarks posture score based only on enabled rules](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [should calculate kspm benchmarks posture score based only on enabled rules](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [GET stats API with user that has specific access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | describe | | | +| [GET stats API V1 with user with read access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [GET stats API V1 with user with read access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [GET stats API V2 with user with read access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [GET stats API V2 with user without read access](x-pack/test/cloud_security_posture_api/routes/stats.ts) | it | | | +| [GET /internal/cloud_security_posture/status](x-pack/test/cloud_security_posture_api/routes/status.ts) | describe | | | +| [GET status API with user that has specific access](x-pack/test/cloud_security_posture_api/routes/status.ts) | describe | | | +| [GET stats API with user with read access](x-pack/test/cloud_security_posture_api/routes/status.ts) | it | | | +| [GET status API with user without read access](x-pack/test/cloud_security_posture_api/routes/status.ts) | it | | | +| [Vulnerability Dashboard API](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | describe | | | +| [responds with a 200 status code and matching data mock](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | it | | | +| [returns a 400 error when necessary indices are nonexistent](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | it | | | +| [GET vulnerabilities dashboard API with users with read access to cloud security posture](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | it | | | +| [GET vulnerabilities dashboard API with users without read access to cloud security posture](x-pack/test/cloud_security_posture_api/routes/vulnerabilities_dashboard.ts) | it | | | +| [Verify cloud_security_posture telemetry payloads](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | describe | | | +| [includes only KSPM findings](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | +| [includes only CSPM findings](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | +| [includes CSPM and KSPM findings](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | +| [](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | +| [includes KSPM findings without posture_type and CSPM findings as well](x-pack/test/cloud_security_posture_api/telemetry/telemetry.ts) | it | | | +
+ +## Directory: x-pack/test/cloud_security_posture_functional + +**Total Tests:** 223 | **Skipped:** 69 (30.94%) | **Todo:** 3 (1.35%) + +![](https://img.shields.io/badge/FTR-blue) ![](https://img.shields.io/badge/HAS-SKIP-yellow) ![](https://img.shields.io/badge/HAS-TODO-green) + +
+Test Details + +| Test Label | Type | Skipped | Todo | +|------------|------|---------|------| +| [Agentless cloud](x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts) | describe | | | +| [should create agentless-agent](x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts) | it | | | +| [should create default agent-based agent](x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts) | it | | | +| [Benchmark Page - Sanity Tests](x-pack/test/cloud_security_posture_functional/cloud_tests/benchmark_sanity.ts) | describe | | | +| [Benchmark table exists](x-pack/test/cloud_security_posture_functional/cloud_tests/benchmark_sanity.ts) | it | | | +| [Benchmarks count is more than 0](x-pack/test/cloud_security_posture_functional/cloud_tests/benchmark_sanity.ts) | it | | | +| [For each benchmark, evaluation and complience are not empty](x-pack/test/cloud_security_posture_functional/cloud_tests/benchmark_sanity.ts) | it | | | +| [Cloud Posture Dashboard Page - Sanity Tests](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | describe | | | +| [Cloud Dashboard](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | describe | | | +| [displays compliance score greater than 40](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | +| [displays all compliance scores](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | +| [displays a number of resources evaluated greater than 1500](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | +| [Compliance By CIS sections have non empty values](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | +| [Navigation to Findings page](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | +| [Kubernetes Dashboard](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | describe | | | +| [displays compliance score greater than 80](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | +| [displays a number of resources evaluated greater than 150](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | +| [Compliance By CIS sections have non empty values](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | +| [Navigation to Findings page](x-pack/test/cloud_security_posture_functional/cloud_tests/dashboard_sanity.ts) | it | | | +| [Findings Page - Sanity Tests](x-pack/test/cloud_security_posture_functional/cloud_tests/findings_sanity.ts) | describe | | | +| [Findings - Querying data](x-pack/test/cloud_security_posture_functional/cloud_tests/findings_sanity.ts) | describe | | | +| [Querying ${provider} provider data](x-pack/test/cloud_security_posture_functional/cloud_tests/findings_sanity.ts) | it | | | +| [Paginating and sorting data](x-pack/test/cloud_security_posture_functional/cloud_tests/findings_sanity.ts) | it | | | +| [Cloud Security Posture](x-pack/test/cloud_security_posture_functional/cloud_tests/index.ts) | describe | | | +| [Data Views](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Verify data view is created once user reach the findings page - default space](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Verify data view is created once user reach the dashboard page - default space](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Verify data view is created once user reach the findings page - non default space](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Verify data view is created once user reach the dashboard page - non default space](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Verify data view is created once user with read permissions reach the dashboard page](x-pack/test/cloud_security_posture_functional/data_views/data_views.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Cloud Security Posture](x-pack/test/cloud_security_posture_functional/data_views/index.ts) | describe | | | +| [Access with custom roles](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | describe | | | +| [Access with valid user role](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Access with invalid user role](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Access with custom roles - rule page](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | describe | | | +| [Access with valid user role](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | it | | | +| [Access with invalid user role](x-pack/test/cloud_security_posture_functional/pages/benchmark.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Test adding Cloud Security Posture Integrations CNVM](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | describe | | | +| [CNVM AWS](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | describe | | | +| [Hyperlink on PostInstallation Modal should have the correct URL](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | it | | | +| [On Add Agent modal there should be modal that has Cloud Formation details as well as button that redirects user to Cloud formation page on AWS upon clicking them ](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | it | | | +| [Clicking on Launch CloudFormation on post intall modal should lead user to Cloud Formation page](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cnvm/cis_integration_cnvm.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Test adding Cloud Security Posture Integrations CSPM AWS](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [CIS_AWS Organization Cloud Formation](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [Initial form state, AWS Org account, and CloudFormation should be selected by default](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [Hyperlink on PostInstallation Modal should have the correct URL](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [On Add Agent modal there should be modal that has Cloud Formation details as well as button that redirects user to Cloud formation page on AWS upon clicking them ](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [Clicking on Launch CloudFormation on post intall modal should lead user to Cloud Formation page](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [CIS_AWS Organization Manual Assume Role](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [CIS_AWS Organization Manual Assume Role Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [CIS_AWS Organization Manual Direct Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [CIS_AWS Organization Manual Direct Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [CIS_AWS Organization Manual Temporary Keys](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [CIS_AWS Organization Manual Temporary Keys Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [CIS_AWS Organization Manual Shared Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [CIS_AWS Organization Manual Shared Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [CIS_AWS Single Cloud Formation](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [CIS_AWS Single Cloud Formation workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [CIS_AWS Single Manual Assume Role](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [CIS_AWS Single Manual Assume Role Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [CIS_AWS Single Manual Direct Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [CIS_AWS Single Manual Direct Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [CIS_AWS Single Manual Temporary Keys](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [CIS_AWS Single Manual Temporary Keys Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [CIS_AWS Single Manual Shared Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | describe | | | +| [CIS_AWS Single Manual Shared Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts) | it | | | +| [Test adding Cloud Security Posture Integrations CSPM AZURE](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | +| [Azure Organization ARM Template](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | +| [Azure Organization ARM Template Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | +| [Azure Organization Manual Managed Identity](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | +| [Azure Organization Manual Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | +| [Azure Organization Manual Service Principle with Client Secret](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | +| [Azure Organization Manual Service Principle with Client Secret Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | +| [Azure Organization Manual Service Principle with Client Certificate](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | +| [Azure Organization Manual Service Principle with Client Certificate Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | +| [Azure Single ARM Template](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | +| [Azure Single ARM Template Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | +| [Azure Single Manual Managed Identity](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | +| [Azure Single Manual Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | +| [Azure Single Manual Service Principle with Client Secret](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | +| [Azure Single Manual Service Principle with Client Secret Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | +| [Azure Single Manual Service Principle with Client Certificate](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | describe | | | +| [Azure Single Manual Service Principle with Client Certificate Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts) | it | | | +| [Test adding Cloud Security Posture Integrations CSPM GCP](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | | | +| [CIS_GCP Organization](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Switch between Manual and Google cloud shell](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are no Project ID or Organization ID provided, it should use default value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID or Organization ID provided, it should use that value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Add Agent FLyout - Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID or Organization ID provided, it should use that value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Organization ID field on cloud shell command should only be shown if user chose Google Cloud Shell, if user chose Single Account it shouldn not show up](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Hyperlink on PostInstallation Modal should have the correct URL](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Clicking on Launch CloudShell on post intall modal should lead user to CloudShell page](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [CIS_GCP Organization Credentials File](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [CIS_GCP Organization Credentials File workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [CIS_GCP Organization Credentials JSON](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | | | +| [CIS_GCP Organization Credentials JSON workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | | | +| [CIS_GCP Single](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are no Project ID, it should use default value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID, it should use that value](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Add Agent FLyout - Organization ID field on cloud shell command should only be shown if user chose Google Cloud Shell, if user chose Single Account it shouldn not show up](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [On add agent modal, if user chose Google Cloud Shell as their setup access; a google cloud shell modal should show up and clicking on the launch button will redirect user to Google cloud shell page](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Users are able to add CIS_GCP Integration with Manual settings using Credentials File](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Users are able to switch credentials_type from/to Credential JSON fields ](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Users are able to add CIS_GCP Integration with Manual settings using Credentials JSON](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Users are able to switch credentials_type from/to Credential File fields ](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Test adding Cloud Security Posture Integrations KSPM EKS](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | +| [KSPM EKS Assume Role](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | +| [KSPM EKS Assume Role workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | it | | | +| [KSPM EKS Direct Access](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | +| [KSPM EKS Direct Access Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | it | | | +| [KSPM EKS Temporary Keys](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | +| [KSPM EKS Temporary Keys Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | it | | | +| [KSPM EKS Shared Credentials](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | describe | | | +| [KSPM EKS Shared Credentials Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_eks.ts) | it | | | +| [Test adding Cloud Security Posture Integrations KSPM K8S](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts) | describe | | | +| [KSPM K8S](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts) | describe | | | +| [KSPM K8S Workflow](x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts) | it | | | +| [Cloud Posture Dashboard Page](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | describe | | | +| [Kubernetes Dashboard](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | describe | | | +| [displays accurate summary compliance score](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | it | | | +| [TODO - Cloud Dashboard](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | describe | | ![](https://img.shields.io/badge/todo-green) | +| [todo - displays accurate summary compliance score](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | it | | ![](https://img.shields.io/badge/todo-green) | +| [Access with custom roles](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | describe | | | +| [Access with valid user role](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | it | | | +| [todo - Access with invalid user role](x-pack/test/cloud_security_posture_functional/pages/compliance_dashboard.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | ![](https://img.shields.io/badge/todo-green) | +| [Findings Page - Alerts](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Create detection rule](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Creates a detection rule from the Take Action button and navigates to rule page](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Creates a detection rule from the Alerts section and navigates to rule page](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Rule details](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [The rule page contains the expected matching data](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Navigation](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Clicking on count of Rules should navigate to the rules page with benchmark tags as a filter](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Clicking on count of Alerts should navigate to the alerts page](x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Findings Page - Grouping](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | +| [Default Grouping](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | +| [groups findings by resource and sort by compliance score desc](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | +| [groups findings by rule name and sort by compliance score desc](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | +| [groups findings by cloud account and sort by compliance score desc](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | +| [groups findings by Kubernetes cluster and sort by compliance score desc](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | +| [SearchBar](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | +| [add filter](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | +| [remove filter](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | +| [set search query](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | +| [Group table](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | +| [shows findings table when expanding](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | +| [Default Grouping - support muting rules](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | describe | | | +| [groups findings by resource after muting rule](x-pack/test/cloud_security_posture_functional/pages/findings_grouping.ts) | it | | | +| [Old Data](x-pack/test/cloud_security_posture_functional/pages/findings_old_data.ts) | describe | | | +| [Findings page with old data](x-pack/test/cloud_security_posture_functional/pages/findings_old_data.ts) | describe | | | +| [returns no Findings KSPM](x-pack/test/cloud_security_posture_functional/pages/findings_old_data.ts) | it | | | +| [returns no Findings CSPM](x-pack/test/cloud_security_posture_functional/pages/findings_old_data.ts) | it | | | +| [Findings Page onboarding](x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts) | describe | | | +| [clicking on the ](x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts) | it | | | +| [clicking on the ](x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts) | it | | | +| [clicking on the ](x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts) | it | | | +| [Findings Page - DataTable](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | +| [Table Sort](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | +| [sorts by a column, should be case sensitive/insensitive depending on the column](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | +| [Findings - Fields selector](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | +| [Add fields to the Findings DataTable](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | +| [Remove fields from the Findings DataTable](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | +| [Reset fields to default](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | +| [Findings Page - support muting rules](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | +| [verify only enabled rules appears](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | +| [Access with custom roles](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | describe | | | +| [Access with valid user role](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | +| [Access with invalid user role](x-pack/test/cloud_security_posture_functional/pages/findings.ts) | it | | | +| [Cloud Security Posture](x-pack/test/cloud_security_posture_functional/pages/index.ts) | describe | | | +| [Cloud Posture Rules Page](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Rules Page - Rules Counters](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Shows posture score when there are findings](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Clicking the posture score button leads to the dashboard](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Shows integrations count when there are findings](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Clicking the integrations counter button leads to the integration page](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Shows the failed findings counter when there are findings](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Clicking the failed findings button leads to the findings page](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Shows the disabled rules count](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Clicking the disabled rules button shows enables the disabled filter](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Shows empty state when there are no findings](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Rules Page - Bulk Action buttons](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [It should disable Enable option when there are all rules selected are already enabled ](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [It should disable both Enable and Disable options when there are no rules selected](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [It should disable Disable option when there are all rules selected are already Disabled](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Both option should not be disabled if selected rules contains both enabled and disabled rules](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Rules Page - Enable Rules and Disabled Rules Filter Toggle](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Should only display Enabled rules when Enabled Rules filter is ON](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Should only display Disabled rules when Disabled Rules filter is ON](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Rules Page - CIS Section & Rule Number filters](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Table should only show result that has the same section as in the Section filter](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Table should only show result that has the same section as in the Rule number filter](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Table should only show result that passes both Section and Rule number filter](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Rules Page - Flyout](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | describe | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Users are able to Enable/Disable Rule from Switch on Rule Flyout](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Alerts section of Rules Flyout shows Disabled text when Rules are disabled](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Users are able to Enable/Disable Rule from Take Action on Rule Flyout](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Alerts section of Rules Flyout shows Detection Rule Counter component when Rules are enabled](x-pack/test/cloud_security_posture_functional/pages/rules.ts) | it | ![](https://img.shields.io/badge/skipped-yellow) | | +| [Vulnerabilities Page - Grouping](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | describe | | | +| [Default Grouping](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | describe | | | +| [groups vulnerabilities by cloud account and sort by number of vulnerabilities desc](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | +| [groups vulnerabilities by CVE and sort by number of vulnerabilities desc](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | +| [groups vulnerabilities by resource and sort by number of vulnerabilities desc](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | +| [SearchBar](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | describe | | | +| [add filter](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | +| [remove filter](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | +| [set search query](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | +| [Group table](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | describe | | | +| [shows vulnerabilities table when expanding](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities_grouping.ts) | it | | | +| [Vulnerabilities Page - DataTable](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | describe | | | +| [SearchBar](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | describe | | | +| [add filter](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | +| [remove filter](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | +| [set search query](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | +| [Vulnerabilities - Fields selector](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | describe | | | +| [Add fields to the Vulnerabilities DataTable](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | +| [Remove fields from the Vulnerabilities DataTable](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | +| [Reset fields to default](x-pack/test/cloud_security_posture_functional/pages/vulnerabilities.ts) | it | | | +| [Vulnerability Dashboard Page](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | describe | | | +| [Vulnerability Dashboard](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | describe | | | +| [Page Header renders on startup](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | it | | | +| [Stats render accurate output](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | it | | | +| [should navigate to vulnerability findings page with high severity filter](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | it | | | +| [should navigate to vulnerability findings page with critical severity filter and no high severity filter](x-pack/test/cloud_security_posture_functional/pages/vulnerability_dashboard.ts) | it | | | +
+ diff --git a/x-pack/plugins/cloud_security_posture/common/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/index.ts diff --git a/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_identifier_runtime_mapping.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/runtime_mappings/get_identifier_runtime_mapping.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_identifier_runtime_mapping.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/runtime_mappings/get_identifier_runtime_mapping.ts diff --git a/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_package_policy_id_mapping.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/runtime_mappings/get_package_policy_id_mapping.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_package_policy_id_mapping.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/runtime_mappings/get_package_policy_id_mapping.ts diff --git a/x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_safe_posture_type_runtime_mapping.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/runtime_mappings/get_safe_posture_type_runtime_mapping.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/runtime_mappings/get_safe_posture_type_runtime_mapping.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/runtime_mappings/get_safe_posture_type_runtime_mapping.ts diff --git a/x-pack/plugins/cloud_security_posture/common/schemas/stats.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/schemas/stats.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/schemas/stats.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/schemas/stats.ts diff --git a/x-pack/plugins/cloud_security_posture/common/scripts/__auto_generated_csp_test_log.json b/x-pack/solutions/security/plugins/cloud_security_posture/common/scripts/__auto_generated_csp_test_log.json similarity index 98% rename from x-pack/plugins/cloud_security_posture/common/scripts/__auto_generated_csp_test_log.json rename to x-pack/solutions/security/plugins/cloud_security_posture/common/scripts/__auto_generated_csp_test_log.json index b2479277f0ee1..2fcada14f0ae3 100644 --- a/x-pack/plugins/cloud_security_posture/common/scripts/__auto_generated_csp_test_log.json +++ b/x-pack/solutions/security/plugins/cloud_security_posture/common/scripts/__auto_generated_csp_test_log.json @@ -230,9 +230,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts", "fileName": "detection_rules.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -498,9 +498,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts", "fileName": "helpers.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -894,9 +894,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/common/utils/subscription.test.ts", "fileName": "subscription.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -994,9 +994,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx", "fileName": "csp_router.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -1289,9 +1289,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts", "fileName": "use_benchmark_dynamic_values.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -1368,9 +1368,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts", "fileName": "use_navigate_findings.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -1468,9 +1468,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts", "fileName": "use_url_query.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -1547,9 +1547,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts", "fileName": "security_solution_links.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -1605,9 +1605,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_abbreviated_number.test.ts", "fileName": "get_abbreviated_number.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -1705,9 +1705,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vulnerabiltity_colors.test.ts", "fileName": "get_vulnerabiltity_colors.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -1975,9 +1975,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx", "fileName": "accounts_evaluated_widget.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -2075,9 +2075,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/chart_panel.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/chart_panel.test.tsx", "fileName": "chart_panel.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -2175,9 +2175,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx", "fileName": "cloud_posture_page.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -2380,9 +2380,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx", "fileName": "cloud_security_data_table.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -2522,9 +2522,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx", "fileName": "fields_selector_table.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -2836,9 +2836,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts", "fileName": "first_non_null_value.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -2999,9 +2999,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx", "fileName": "detection_rule_counter.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -3120,9 +3120,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx", "fileName": "policy_template_form.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT", "HAS SKIP" @@ -4747,9 +4747,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts", "fileName": "use_setup_technology.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -5061,9 +5061,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts", "fileName": "utils.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -5784,9 +5784,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx", "fileName": "no_findings_states.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -5968,9 +5968,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx", "fileName": "benchmarks_table.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -6110,9 +6110,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx", "fileName": "benchmarks.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -6231,9 +6231,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts", "fileName": "risks_table.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -6310,9 +6310,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx", "fileName": "compliance_dashboard.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -6832,9 +6832,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx", "fileName": "benchmarks_section.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -6934,9 +6934,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx", "fileName": "summary_section.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -7034,9 +7034,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx", "fileName": "configurations.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -7285,9 +7285,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx", "fileName": "findings_flyout.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -7666,9 +7666,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts", "fileName": "get_filters.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -7724,9 +7724,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx", "fileName": "rules_container.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -7782,9 +7782,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx", "fileName": "rules.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -7861,9 +7861,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx", "fileName": "use_change_csp_rule_state.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -8024,9 +8024,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx", "fileName": "vulnerability_finding_flyout.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT", "HAS SKIP" @@ -8280,9 +8280,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx", "fileName": "vulnerabilties.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -8422,9 +8422,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx", "fileName": "vulnerability_dashboard.test.tsx", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -8585,9 +8585,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts", "fileName": "create_indices.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -8727,9 +8727,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts", "fileName": "create_transforms.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -8934,9 +8934,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts", "fileName": "mapping_field_util.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -9076,9 +9076,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/plugin.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.test.ts", "fileName": "plugin.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -9220,9 +9220,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts", "fileName": "find.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -9362,9 +9362,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts", "fileName": "benchmarks.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -9827,9 +9827,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.test.ts", "fileName": "compliance_dashboard.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -9906,9 +9906,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts", "fileName": "get_benchmarks.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -9964,9 +9964,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts", "fileName": "get_clusters.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -10022,9 +10022,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts", "fileName": "get_grouped_findings_evaluation.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -10080,9 +10080,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts", "fileName": "get_stats.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -10289,9 +10289,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts", "fileName": "get_trends.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -10347,9 +10347,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts", "fileName": "status.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], @@ -10785,9 +10785,9 @@ ] }, { - "filePath": "x-pack/plugins/cloud_security_posture/server/tasks/task_state.test.ts", + "filePath": "x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.test.ts", "fileName": "task_state.test.ts", - "directory": "x-pack/plugins/cloud_security_posture", + "directory": "x-pack/solutions/security/plugins/cloud_security_posture", "tags": [ "UT" ], diff --git a/x-pack/plugins/cloud_security_posture/common/scripts/get_tests.js b/x-pack/solutions/security/plugins/cloud_security_posture/common/scripts/get_tests.js similarity index 98% rename from x-pack/plugins/cloud_security_posture/common/scripts/get_tests.js rename to x-pack/solutions/security/plugins/cloud_security_posture/common/scripts/get_tests.js index d23498b24bd86..e44cd96a659a3 100644 --- a/x-pack/plugins/cloud_security_posture/common/scripts/get_tests.js +++ b/x-pack/solutions/security/plugins/cloud_security_posture/common/scripts/get_tests.js @@ -32,7 +32,7 @@ const FTR_CSP_API = 'x-pack/test/cloud_security_posture_api'; const FTR_CSP_FUNCTIONAL = 'x-pack/test/cloud_security_posture_functional'; // Unit tests -const UNIT_TEST_CSP = 'x-pack/plugins/cloud_security_posture'; +const UNIT_TEST_CSP = 'x-pack/solutions/security/plugins/cloud_security_posture'; // KBN Package const KBN_CSP_PACKAGE = 'x-pack/packages/kbn-cloud-security-posture'; @@ -51,7 +51,7 @@ const directoryPaths = [ // Output directories and file paths const MD_FILE_PATH = path.join( - 'x-pack/plugins/cloud_security_posture/common/dev_docs', + 'x-pack/solutions/security/plugins/cloud_security_posture/common/dev_docs', '__auto_generated_csp_requirements_test_coverage.md' ); const CSP_TEST_LOGS_FILE_PATH = path.join(__dirname, '__auto_generated_csp_test_log.json'); diff --git a/x-pack/plugins/cloud_security_posture/common/types/benchmarks/v1.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/types/benchmarks/v1.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/types/benchmarks/v1.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/types/benchmarks/v1.ts diff --git a/x-pack/plugins/cloud_security_posture/common/types/benchmarks/v2.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/types/benchmarks/v2.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/types/benchmarks/v2.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/types/benchmarks/v2.ts diff --git a/x-pack/plugins/cloud_security_posture/common/types/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/types/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/types/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/types/index.ts diff --git a/x-pack/plugins/cloud_security_posture/common/types/latest.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/types/latest.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/types/latest.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/types/latest.ts diff --git a/x-pack/plugins/cloud_security_posture/common/types_old.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/types_old.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/types_old.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/types_old.ts diff --git a/x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/utils/detection_rules.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.test.ts diff --git a/x-pack/plugins/cloud_security_posture/common/utils/detection_rules.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/utils/detection_rules.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/utils/detection_rules.ts diff --git a/x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/utils/helpers.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.test.ts diff --git a/x-pack/plugins/cloud_security_posture/common/utils/helpers.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/utils/helpers.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/utils/helpers.ts diff --git a/x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/utils/rules_states.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/utils/rules_states.ts diff --git a/x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/utils/subscription.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/utils/subscription.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/utils/subscription.test.ts diff --git a/x-pack/plugins/cloud_security_posture/common/utils/subscription.ts b/x-pack/solutions/security/plugins/cloud_security_posture/common/utils/subscription.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/common/utils/subscription.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/common/utils/subscription.ts diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/jest.config.js b/x-pack/solutions/security/plugins/cloud_security_posture/jest.config.js new file mode 100644 index 0000000000000..630c9292dd304 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/jest.config.js @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** @type {import('@jest/types').Config.InitialOptions} */ +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/cloud_security_posture'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/cloud_security_posture', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/cloud_security_posture/{common,public,server}/**/*.{ts,tsx}', + ], + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + transformIgnorePatterns: [ + // ignore all node_modules except the modules below (monaco-editor, monaco-yaml, react-monaco-editor, etc) which requires babel transforms to handle dynamic import() + // since ESM modules are not natively supported in Jest yet (https://github.com/facebook/jest/issues/4842) + '[/\\\\]node_modules(?![\\/\\\\](byte-size|monaco-editor|monaco-yaml|monaco-languageserver-types|monaco-marker-data-provider|monaco-worker-manager|vscode-languageserver-types|react-monaco-editor|d3-interpolate|d3-color|langchain|langsmith|@cfworker|gpt-tokenizer|flat|@langchain|msw|@bundled-es-modules))[/\\\\].+\\.js$', + 'packages/kbn-pm/dist/index.js', + '[/\\\\]node_modules(?![\\/\\\\](langchain|langsmith|@langchain))/dist/[/\\\\].+\\.js$', + '[/\\\\]node_modules(?![\\/\\\\](langchain|langsmith|@langchain))/dist/util/[/\\\\].+\\.js$', + ], +}; diff --git a/x-pack/plugins/cloud_security_posture/kibana.jsonc b/x-pack/solutions/security/plugins/cloud_security_posture/kibana.jsonc similarity index 100% rename from x-pack/plugins/cloud_security_posture/kibana.jsonc rename to x-pack/solutions/security/plugins/cloud_security_posture/kibana.jsonc diff --git a/x-pack/plugins/cloud_security_posture/public/application/csp_route.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_route.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/application/csp_route.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_route.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/application/csp_router.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/application/csp_router.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/application/csp_router.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/application/csp_router.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/application/security_solution_context.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/application/security_solution_context.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/application/security_solution_context.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/application/security_solution_context.ts diff --git a/x-pack/plugins/cloud_security_posture/public/application/setup_context.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/application/setup_context.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/application/setup_context.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/application/setup_context.ts diff --git a/x-pack/plugins/cloud_security_posture/public/assets/icons/cis_aks_logo.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/cis_aks_logo.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/icons/cis_aks_logo.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/cis_aks_logo.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/icons/cis_eks_logo.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/cis_eks_logo.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/icons/cis_eks_logo.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/cis_eks_logo.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/icons/cis_gke_logo.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/cis_gke_logo.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/icons/cis_gke_logo.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/cis_gke_logo.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/icons/cis_logo.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/cis_logo.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/icons/cis_logo.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/cis_logo.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/icons/google_cloud_logo.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/google_cloud_logo.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/icons/google_cloud_logo.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/google_cloud_logo.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/icons/nvd_logo_svg.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/nvd_logo_svg.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/icons/nvd_logo_svg.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/nvd_logo_svg.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/assets/icons/redhat_logo.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/redhat_logo.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/icons/redhat_logo.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/icons/redhat_logo.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/illustrations/clouds.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/clouds.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/illustrations/clouds.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/clouds.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/illustrations/illustration_product_no_results_magnifying_glass.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/illustrations/illustration_product_no_results_magnifying_glass.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/illustration_product_no_results_magnifying_glass.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/illustrations/misconfigurations_vendors.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/misconfigurations_vendors.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/illustrations/misconfigurations_vendors.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/misconfigurations_vendors.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/illustrations/no_data_illustration.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/no_data_illustration.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/illustrations/no_data_illustration.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/no_data_illustration.svg diff --git a/x-pack/plugins/cloud_security_posture/public/assets/illustrations/vulnerabilities_vendors.svg b/x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/vulnerabilities_vendors.svg similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/assets/illustrations/vulnerabilities_vendors.svg rename to x-pack/solutions/security/plugins/cloud_security_posture/public/assets/illustrations/vulnerabilities_vendors.svg diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/create_detection_rule.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/create_detection_rule.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/create_detection_rule.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/create_detection_rule.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_fetch_detection_rules_alerts_status.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_fetch_detection_rules_alerts_status.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/use_fetch_detection_rules_alerts_status.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_fetch_detection_rules_alerts_status.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_fetch_detection_rules_by_tags.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_fetch_detection_rules_by_tags.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/use_fetch_detection_rules_by_tags.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_fetch_detection_rules_by_tags.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_package_policy_list.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_package_policy_list.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/use_package_policy_list.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_package_policy_list.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_stats_api.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_stats_api.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_wiz_integration_route.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_wiz_integration_route.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/api/use_wiz_integration_route.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/api/use_wiz_integration_route.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/component/multi_select_filter.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/component/multi_select_filter.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/component/multi_select_filter.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/component/multi_select_filter.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/common/constants.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/constants.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/constants.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/constants.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/contexts/data_view_context.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/contexts/data_view_context.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/contexts/data_view_context.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/contexts/data_view_context.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_benchmark_dynamic_values.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_cloud_posture_data_table.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_cloud_posture_data_table.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_cloud_posture_data_table.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_cloud_posture_data_table.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/utils.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/utils.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/utils.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/utils.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_is_subscription_status_valid.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_is_subscription_status_valid.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_is_subscription_status_valid.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_is_subscription_status_valid.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_page_size.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_page_size.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_page_size.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_page_size.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_url_query.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/hooks/use_url_query.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/constants.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/constants.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/navigation/constants.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/constants.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/security_solution_links.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/security_solution_links.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/security_solution_links.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/navigation/security_solution_links.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/security_solution_links.ts diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/types.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/types.ts new file mode 100644 index 0000000000000..ae7a22efd0605 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/types.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +export interface CspNavigationItem { + readonly name: string; + readonly path: string; + readonly disabled?: boolean; +} + +export interface CspPageNavigationItem extends CspNavigationItem { + id: CloudSecurityPosturePageId; +} + +export type CspPage = + | 'dashboard' + | 'cspm_dashboard' + | 'kspm_dashboard' + | 'vulnerability_dashboard' + | 'findings' + | 'benchmarks'; +export type CspBenchmarksPage = 'rules'; + +/** + * All the IDs for the cloud security posture pages. + * This needs to match the cloud security posture page entries in `SecurityPageName` in `x-pack/solutions/security/plugins/security_solution/common/constants.ts`. + */ +export type CloudSecurityPosturePageId = + | 'cloud_security_posture-dashboard' + | 'cloud_security_posture-cspm-dashboard' + | 'cloud_security_posture-kspm-dashboard' + | 'cloud_security_posture-vulnerability_dashboard' + | 'cloud_security_posture-findings' + | 'cloud_security_posture-benchmarks' + | 'cloud_security_posture-benchmarks-rules'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/types.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/types.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/types.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/types.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/utils/get_template_url_package_info.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_template_url_package_info.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/utils/get_template_url_package_info.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_template_url_package_info.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/utils/get_vendor_name.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vendor_name.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/utils/get_vendor_name.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vendor_name.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/utils/get_vendor_name.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vendor_name.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/utils/get_vendor_name.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/get_vendor_name.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/utils/is_native_csp_finding.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/is_native_csp_finding.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/utils/is_native_csp_finding.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/is_native_csp_finding.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/utils/is_native_csp_finding.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/is_native_csp_finding.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/utils/is_native_csp_finding.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/common/utils/is_native_csp_finding.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/chart_panel.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/chart_panel.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/chart_panel.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/chart_panel.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/chart_panel.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/chart_panel.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/chart_panel.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/chart_panel.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cis_benchmark_icon.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cis_benchmark_icon.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cis_benchmark_icon.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cis_benchmark_icon.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page_title.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page_title.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page_title.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_posture_page_title.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_provider_icon.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_provider_icon.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_provider_icon.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_provider_icon.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/additional_controls.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/additional_controls.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/additional_controls.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/additional_controls.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_modal.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_modal.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_modal.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_modal.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/use_fields_modal.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/use_fields_modal.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/use_fields_modal.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/use_fields_modal.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/cloud_security_grouping.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/cloud_security_grouping.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/cloud_security_grouping.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/cloud_security_grouping.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/loading_group.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/loading_group.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/loading_group.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/loading_group.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/null_group.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/null_group.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/null_group.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/null_group.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/use_cloud_security_grouping.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/use_cloud_security_grouping.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/use_cloud_security_grouping.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/use_cloud_security_grouping.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/cloud_security_grouping/utils/first_non_null_value.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/column_name_with_tooltip.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/column_name_with_tooltip.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/column_name_with_tooltip.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/column_name_with_tooltip.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/compact_formatted_number.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/compact_formatted_number.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/compact_formatted_number.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/compact_formatted_number.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/compliance_score_bar.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/compliance_score_bar.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/csp_counter_card.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/csp_counter_card.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/csp_counter_card.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/csp_counter_card.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/csp_inline_description_list.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/csp_inline_description_list.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/csp_inline_description_list.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/csp_inline_description_list.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/csp_loading_state.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/csp_loading_state.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/csp_loading_state.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/csp_loading_state.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/empty_state.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/empty_state.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/empty_state.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/empty_state.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/empty_states_illustration_container.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/empty_states_illustration_container.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/empty_states_illustration_container.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/empty_states_illustration_container.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form_agentless.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form_agentless.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form_agentless.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_credentials_form_agentless.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_input_var_fields.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_input_var_fields.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_input_var_fields.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/aws_input_var_fields.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/get_aws_credentials_form_options.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/get_aws_credentials_form_options.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/get_aws_credentials_form_options.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/get_aws_credentials_form_options.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/hooks.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/hooks.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/hooks.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/aws_credentials_form/hooks.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form_agentless.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form_agentless.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form_agentless.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/azure_credentials_form_agentless.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/get_azure_credentials_form_options.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/get_azure_credentials_form_options.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/get_azure_credentials_form_options.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/get_azure_credentials_form_options.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/hooks.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/hooks.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/hooks.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/hooks.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/csp_boxed_radio_group.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/csp_boxed_radio_group.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/csp_boxed_radio_group.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/csp_boxed_radio_group.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/eks_credentials_form.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/eks_credentials_form.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/eks_credentials_form.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/eks_credentials_form.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credentials_form/gcp_credential_form.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credentials_form/gcp_credential_form.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credentials_form/gcp_credential_form.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credentials_form/gcp_credential_form.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credentials_form/gcp_credentials_form_agentless.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credentials_form/gcp_credentials_form_agentless.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credentials_form/gcp_credentials_form_agentless.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credentials_form/gcp_credentials_form_agentless.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_selectors.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_selectors.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_selectors.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_selectors.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/setup_technology_selector.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/setup_technology_selector.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/setup_technology_selector.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/setup_technology_selector.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/setup_technology_selector/use_setup_technology.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/utils.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/utils.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/full_size_centered_page.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/full_size_centered_page.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/full_size_centered_page.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/full_size_centered_page.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/no_findings_states/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/no_findings_states/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/subscription_not_allowed.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/subscription_not_allowed.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/subscription_not_allowed.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/subscription_not_allowed.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/take_action.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/take_action.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/take_action.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/test_subjects.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/test_subjects.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/test_subjects.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/test_subjects.ts diff --git a/x-pack/plugins/cloud_security_posture/public/components/timestamp_table_cell.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/timestamp_table_cell.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/timestamp_table_cell.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/timestamp_table_cell.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/vuln_counter_card.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/vuln_counter_card.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/vuln_counter_card.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/vuln_counter_card.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/components/vulnerability_severity_map.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/vulnerability_severity_map.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/components/vulnerability_severity_map.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/components/vulnerability_severity_map.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/benchmarks/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/test_subjects.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/test_subjects.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/benchmarks/test_subjects.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/test_subjects.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/risks_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmark_details_box.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmark_details_box.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmark_details_box.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmark_details_box.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/index.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/index.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/index.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/index.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/mock.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/mock.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/mock.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/test_subjects.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/test_subjects.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/test_subjects.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/compliance_dashboard/test_subjects.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/index.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/index.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/index.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/index.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/constants.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/constants.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/constants.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/constants.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/findings_table_field_labels.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/findings_table_field_labels.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/findings_table_field_labels.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/findings_table_field_labels.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_group_renderer.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_group_renderer.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_group_renderer.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_group_renderer.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_group_renderer.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_group_renderer.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_group_renderer.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_group_renderer.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_table.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_table.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/findings_search_bar.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_search_bar.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/findings_search_bar.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_search_bar.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/test_subjects.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/test_subjects.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/test_subjects.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/test_subjects.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_benchmark.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_benchmark.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_benchmark.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_benchmark.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/findings/findings.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/findings/findings.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/index.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/findings/index.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/findings/index.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/findings/index.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/third_party_integrations_callout.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/findings/third_party_integrations_callout.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/findings/third_party_integrations_callout.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/findings/third_party_integrations_callout.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/index.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/index.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/index.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/index.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_container.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_container.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_container.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_detection_rule_counter.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_detection_rule_counter.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/rules_detection_rule_counter.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_detection_rule_counter.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/test_subjects.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/test_subjects.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/test_subjects.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/test_subjects.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_change_csp_rule_state.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/_mocks_/vulnerability.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/_mocks_/vulnerability.mock.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/_mocks_/vulnerability.mock.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/_mocks_/vulnerability.mock.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/constants.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/constants.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/constants.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/constants.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_grouping.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_grouping.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_grouping.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_grouping.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_table.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_table.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/index.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/index.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/index.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/index.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_container.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_container.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_container.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_container.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_group_renderer.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_group_renderer.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_group_renderer.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_group_renderer.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_table.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_table.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/latest_vulnerabilities_table.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/test_subjects.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/test_subjects.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/test_subjects.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/test_subjects.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/translations.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/translations.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/translations.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/translations.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/types.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/types.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/types.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/types.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/create_detection_rule_from_vulnerability.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/create_detection_rule_from_vulnerability.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/create_detection_rule_from_vulnerability.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/create_detection_rule_from_vulnerability.test.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/create_detection_rule_from_vulnerability.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/create_detection_rule_from_vulnerability.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/create_detection_rule_from_vulnerability.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/create_detection_rule_from_vulnerability.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/custom_sort_script.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/custom_sort_script.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/custom_sort_script.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/custom_sort_script.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/get_vector_score_list.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/get_vector_score_list.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/get_vector_score_list.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/utils/get_vector_score_list.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_detection_rule_counter.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_detection_rule_counter.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_detection_rule_counter.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_detection_rule_counter.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_json_tab.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_json_tab.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_json_tab.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_json_tab.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_overview_tab.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_overview_tab.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_overview_tab.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_overview_tab.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_table_tab.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_table_tab.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_table_tab.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_table_tab.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_table_field_labels.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_table_field_labels.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_table_field_labels.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_table_field_labels.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/_mocks_/vulnerability_dashboard.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/_mocks_/vulnerability_dashboard.mock.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/_mocks_/vulnerability_dashboard.mock.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/_mocks_/vulnerability_dashboard.mock.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.config.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.config.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.config.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.config.ts diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/plugin.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/plugin.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/plugin.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/plugin.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/test/fixtures/csp_benchmark_integration.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/fixtures/csp_benchmark_integration.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/fixtures/csp_benchmark_integration.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/fixtures/csp_benchmark_integration.ts diff --git a/x-pack/plugins/cloud_security_posture/public/test/fixtures/findings_fixture.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/fixtures/findings_fixture.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/fixtures/findings_fixture.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/fixtures/findings_fixture.ts diff --git a/x-pack/plugins/cloud_security_posture/public/test/fixtures/get_mock_dependencies.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/fixtures/get_mock_dependencies.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/fixtures/get_mock_dependencies.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/fixtures/get_mock_dependencies.ts diff --git a/x-pack/plugins/cloud_security_posture/public/test/fixtures/react_query.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/fixtures/react_query.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/fixtures/react_query.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/fixtures/react_query.ts diff --git a/x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/dataview.handlers.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/handlers/dataview.handlers.mock.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/dataview.handlers.mock.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/handlers/dataview.handlers.mock.ts diff --git a/x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/fleet.handlers.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/handlers/fleet.handlers.mock.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/fleet.handlers.mock.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/handlers/fleet.handlers.mock.ts diff --git a/x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/handlers/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/handlers/index.ts diff --git a/x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/licensing.handlers.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/handlers/licensing.handlers.mock.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/licensing.handlers.mock.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/handlers/licensing.handlers.mock.ts diff --git a/x-pack/plugins/cloud_security_posture/public/test/mock_server/mock_server.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/mock_server.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/mock_server/mock_server.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/mock_server.ts diff --git a/x-pack/plugins/cloud_security_posture/public/test/mock_server/mock_server_test_provider.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/mock_server_test_provider.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/mock_server/mock_server_test_provider.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/mock_server/mock_server_test_provider.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/test_provider.tsx similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/test_provider.tsx rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/test_provider.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/test/utils.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/test/utils.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/test/utils.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/test/utils.ts diff --git a/x-pack/plugins/cloud_security_posture/public/types.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/types.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/types.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/public/types.ts diff --git a/x-pack/plugins/cloud_security_posture/server/config.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/config.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/config.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/config.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_indices/benchmark_score_mapping.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/benchmark_score_mapping.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_indices/benchmark_score_mapping.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/benchmark_score_mapping.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_indices/create_indices.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_indices.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_indices/create_processor.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_processor.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_indices/create_processor.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/create_processor.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_indices/ingest_pipelines.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/ingest_pipelines.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_indices/ingest_pipelines.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/ingest_pipelines.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_indices/latest_indices.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/latest_indices.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_indices/latest_indices.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/latest_indices.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_indices/types.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/types.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_indices/types.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_indices/types.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_transforms/create_transforms.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/create_transforms.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_transforms/latest_findings_transform.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/latest_findings_transform.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_transforms/latest_findings_transform.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/latest_findings_transform.ts diff --git a/x-pack/plugins/cloud_security_posture/server/create_transforms/latest_vulnerabilities_transforms.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/latest_vulnerabilities_transforms.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/create_transforms/latest_vulnerabilities_transforms.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/create_transforms/latest_vulnerabilities_transforms.ts diff --git a/x-pack/plugins/cloud_security_posture/server/fleet_integration/fleet_integration.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/fleet_integration/fleet_integration.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/fleet_integration/fleet_integration.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/fleet_integration/fleet_integration.ts diff --git a/x-pack/plugins/cloud_security_posture/server/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/index.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/check_index_status.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/check_index_status.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/check_index_status.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/check_index_status.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/fleet_util.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/fleet_util.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/mapping_field_util.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/mapping_field_util.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/task_manager_util.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/task_manager_util.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/task_manager_util.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/task_manager_util.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/accounts_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/accounts_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/accounts_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/accounts_stats_collector.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/alert_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/alert_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/alert_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/alert_stats_collector.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/cloud_accounts_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/cloud_accounts_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/cloud_accounts_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/cloud_accounts_stats_collector.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/indices_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/indices_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/indices_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/indices_stats_collector.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/installation_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/installation_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/installation_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/installation_stats_collector.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/muted_rules_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/muted_rules_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/muted_rules_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/muted_rules_stats_collector.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/register.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/register.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/register.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/register.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/resources_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/resources_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/resources_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/resources_stats_collector.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/rules_stats_collector.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/rules_stats_collector.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/rules_stats_collector.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/rules_stats_collector.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/schema.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/schema.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/schema.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/schema.ts diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts diff --git a/x-pack/plugins/cloud_security_posture/server/mocks.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/mocks.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/mocks.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/mocks.ts diff --git a/x-pack/plugins/cloud_security_posture/server/plugin.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/plugin.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/plugin.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/plugin.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/plugin.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/utils.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/utils.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/utils.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/utils.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v1.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v1.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v1.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v1.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v2.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v2.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v2.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v2.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v3.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v3.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v3.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v3.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.handlers.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.handlers.mock.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.handlers.mock.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.handlers.mock.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/utilities.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/utilities.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmarks/utilities.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/utilities.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/v1.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/v1.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmarks/v1.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/v1.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/v2.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/v2.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/benchmarks/v2.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/benchmarks/v2.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/compliance_dashboard.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_benchmarks.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_grouped_findings_evaluation.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_stats.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/detection_engine/get_detection_engine_alerts_count_by_rule_tags.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/detection_engine/get_detection_engine_alerts_count_by_rule_tags.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/detection_engine/get_detection_engine_alerts_count_by_rule_tags.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/detection_engine/get_detection_engine_alerts_count_by_rule_tags.ts diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/graph/route.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/graph/route.ts new file mode 100644 index 0000000000000..f9544b656f927 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/graph/route.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + graphRequestSchema, + graphResponseSchema, +} from '@kbn/cloud-security-posture-common/schema/graph/latest'; +import { transformError } from '@kbn/securitysolution-es-utils'; +import type { GraphRequest } from '@kbn/cloud-security-posture-common/types/graph/v1'; +import { GRAPH_ROUTE_PATH } from '../../../common/constants'; +import { CspRequestHandlerContext, CspRouter } from '../../types'; +import { getGraph as getGraphV1 } from './v1'; + +export const defineGraphRoute = (router: CspRouter) => + router.versioned + .post({ + access: 'internal', + enableQueryVersion: true, + path: GRAPH_ROUTE_PATH, + security: { + authz: { + requiredPrivileges: ['cloud-security-posture-read'], + }, + }, + }) + .addVersion( + { + version: '1', + validate: { + request: { + body: graphRequestSchema, + }, + response: { + 200: { body: graphResponseSchema }, + }, + }, + }, + async (context: CspRequestHandlerContext, request, response) => { + const cspContext = await context.csp; + + const { nodesLimit, showUnknownTarget = false } = request.body; + const { eventIds, start, end, esQuery } = request.body.query as GraphRequest['query']; + const spaceId = (await cspContext.spaces?.spacesService?.getActiveSpace(request))?.id; + + try { + const resp = await getGraphV1({ + services: { + logger: cspContext.logger, + esClient: cspContext.esClient, + }, + query: { + eventIds, + spaceId, + start, + end, + esQuery, + }, + showUnknownTarget, + nodesLimit, + }); + + return response.ok({ body: resp }); + } catch (err) { + const error = transformError(err); + cspContext.logger.error(`Failed to fetch graph ${err}`); + cspContext.logger.error(err); + return response.customError({ + body: { message: error.message }, + statusCode: error.statusCode, + }); + } + } + ); diff --git a/x-pack/plugins/cloud_security_posture/server/routes/graph/v1.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/graph/v1.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/graph/v1.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/graph/v1.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/setup_routes.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/setup_routes.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/status/status.handlers.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.handlers.mock.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/status/status.handlers.mock.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.handlers.mock.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/status/status.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/status/status.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/status/status.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_patchable_vulnerabilities.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_patchable_vulnerabilities.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_patchable_vulnerabilities.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_patchable_vulnerabilities.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerabilities.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerabilities.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerabilities.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerabilities.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerable_resources.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerable_resources.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerable_resources.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_top_vulnerable_resources.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_vulnerabilities_statistics.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_vulnerabilities_statistics.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_vulnerabilities_statistics.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_vulnerabilities_statistics.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_vulnerabilities_trend.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_vulnerabilities_trend.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_vulnerabilities_trend.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/get_vulnerabilities_trend.ts diff --git a/x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts diff --git a/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts diff --git a/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts diff --git a/x-pack/plugins/cloud_security_posture/server/saved_objects/data_views.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/data_views.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/saved_objects/data_views.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/data_views.ts diff --git a/x-pack/plugins/cloud_security_posture/server/saved_objects/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/saved_objects/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/index.ts diff --git a/x-pack/plugins/cloud_security_posture/server/saved_objects/mappings.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/mappings.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/saved_objects/mappings.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/mappings.ts diff --git a/x-pack/plugins/cloud_security_posture/server/saved_objects/migrations/csp_benchmark_rule.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/migrations/csp_benchmark_rule.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/saved_objects/migrations/csp_benchmark_rule.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/migrations/csp_benchmark_rule.ts diff --git a/x-pack/plugins/cloud_security_posture/server/saved_objects/migrations/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/migrations/index.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/saved_objects/migrations/index.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/saved_objects/migrations/index.ts diff --git a/x-pack/plugins/cloud_security_posture/server/tasks/findings_stats_task.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/findings_stats_task.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/tasks/findings_stats_task.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/findings_stats_task.ts diff --git a/x-pack/plugins/cloud_security_posture/server/tasks/task_state.test.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.test.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/tasks/task_state.test.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.test.ts diff --git a/x-pack/plugins/cloud_security_posture/server/tasks/task_state.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/tasks/task_state.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/task_state.ts diff --git a/x-pack/plugins/cloud_security_posture/server/tasks/types.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/types.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/server/tasks/types.ts rename to x-pack/solutions/security/plugins/cloud_security_posture/server/tasks/types.ts diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/server/types.ts b/x-pack/solutions/security/plugins/cloud_security_posture/server/types.ts new file mode 100644 index 0000000000000..d5dc022bfcf66 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/server/types.ts @@ -0,0 +1,114 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { CloudSetup } from '@kbn/cloud-plugin/server'; +import type { + PluginSetup as DataPluginSetup, + PluginStart as DataPluginStart, +} from '@kbn/data-plugin/server'; +import type { LicensingPluginStart } from '@kbn/licensing-plugin/server'; +import { PluginStart as DataViewsPluginStart } from '@kbn/data-views-plugin/server'; +import { + TaskManagerSetupContract, + TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server'; +import type { + IRouter, + CoreStart, + CustomRequestHandlerContext, + Logger, + SavedObjectsClientContract, + IScopedClusterClient, + CoreRequestHandlerContext, +} from '@kbn/core/server'; +import type { + AgentService, + PackageService, + AgentPolicyServiceInterface, + PackagePolicyClient, +} from '@kbn/fleet-plugin/server'; +import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; +import type { CspStatusCode, IndexDetails } from '@kbn/cloud-security-posture-common'; +import type { FleetStartContract, FleetRequestHandlerContext } from '@kbn/fleet-plugin/server'; +import { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; +import type { AlertingApiRequestHandlerContext } from '@kbn/alerting-plugin/server'; +import type { AlertingPluginSetup } from '@kbn/alerting-plugin/public/plugin'; +import { SpacesPluginStart } from '@kbn/spaces-plugin/server'; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface CspServerPluginSetup {} + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface CspServerPluginStart {} + +export interface CspServerPluginSetupDeps { + // required + data: DataPluginSetup; + taskManager: TaskManagerSetupContract; + security: SecurityPluginSetup; + cloud: CloudSetup; + alerting: AlertingPluginSetup; + // optional + usageCollection?: UsageCollectionSetup; +} + +export interface CspServerPluginStartDeps { + // required + data: DataPluginStart; + fleet: FleetStartContract; + taskManager: TaskManagerStartContract; + security: SecurityPluginStart; + licensing: LicensingPluginStart; + dataViews: DataViewsPluginStart; + spaces?: SpacesPluginStart; +} + +export type CspServerPluginStartServices = Promise< + [CoreStart, CspServerPluginStartDeps, CspServerPluginStart] +>; + +export interface CspApiRequestHandlerContext { + user: ReturnType; + logger: Logger; + esClient: IScopedClusterClient; + soClient: SavedObjectsClientContract; + encryptedSavedObjects: SavedObjectsClientContract; + agentPolicyService: AgentPolicyServiceInterface; + agentService: AgentService; + packagePolicyService: PackagePolicyClient; + packageService: PackageService; + spaces?: SpacesPluginStart; + + isPluginInitialized(): boolean; +} + +export type CspRequestHandlerContext = CustomRequestHandlerContext<{ + csp: CspApiRequestHandlerContext; + fleet: FleetRequestHandlerContext['fleet']; + alerting: AlertingApiRequestHandlerContext; + core: Promise; +}>; + +/** + * Convenience type for routers in Csp that includes the CspRequestHandlerContext type + * @internal + */ +export type CspRouter = IRouter; + +export interface StatusResponseInfo { + statusCspm: CspStatusCode; + statusKspm: CspStatusCode; + statusVulnMgmt: CspStatusCode; + healthyAgentsCspm: number; + healthyAgentsKspm: number; + healthyAgentsVulMgmt: number; + installedPackagePoliciesTotalKspm: number; + installedPackagePoliciesTotalCspm: number; + installedPackagePoliciesTotalVulnMgmt: number; + indicesDetails: IndexDetails[]; + latestCspPackageVersion: string; + isPluginInitialized: boolean; +} diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/tsconfig.json b/x-pack/solutions/security/plugins/cloud_security_posture/tsconfig.json new file mode 100755 index 0000000000000..e723ae3bc5d9f --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/tsconfig.json @@ -0,0 +1,71 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "scripts/**/*", + // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 + "server/**/*.json", + "public/**/*.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/data-plugin", + "@kbn/fleet-plugin", + "@kbn/fleet-plugin", + "@kbn/task-manager-plugin", + "@kbn/security-plugin", + "@kbn/config-schema", + "@kbn/licensing-plugin", + "@kbn/kibana-react-plugin", + "@kbn/shared-ux-link-redirect-app", + "@kbn/usage-collection-plugin", + "@kbn/cloud-plugin", + "@kbn/unified-search-plugin", + "@kbn/charts-plugin", + "@kbn/discover-plugin", + "@kbn/i18n", + "@kbn/ui-theme", + "@kbn/i18n-react", + "@kbn/es-query", + "@kbn/data-views-plugin", + "@kbn/std", + "@kbn/monaco", + "@kbn/utility-types", + "@kbn/core-logging-server-mocks", + "@kbn/securitysolution-es-utils", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-api-server", + "@kbn/shared-ux-router", + "@kbn/core-saved-objects-server", + "@kbn/share-plugin", + "@kbn/core-http-server", + "@kbn/core-http-browser", + "@kbn/discover-utils", + "@kbn/unified-data-table", + "@kbn/cell-actions", + "@kbn/unified-field-list", + "@kbn/unified-doc-viewer", + "@kbn/kibana-utils-plugin", + "@kbn/ui-actions-plugin", + "@kbn/core-http-server-mocks", + "@kbn/data-view-field-editor-plugin", + "@kbn/grouping", + "@kbn/alerting-plugin", + "@kbn/code-editor", + "@kbn/code-editor-mock", + "@kbn/search-types", + "@kbn/react-kibana-mount", + "@kbn/spaces-plugin", + "@kbn/cloud-security-posture-common", + "@kbn/cloud-security-posture", + "@kbn/analytics", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/ecs_data_quality_dashboard/README.md b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/README.md similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/README.md rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/README.md diff --git a/x-pack/plugins/ecs_data_quality_dashboard/common/constants.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/constants.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/common/constants.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/constants.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/common/types.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/types.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/common/types.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/types.ts diff --git a/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/jest.config.js b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/jest.config.js new file mode 100644 index 0000000000000..82d84541051b0 --- /dev/null +++ b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/{common,lib,server}/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/ecs_data_quality_dashboard', + coverageReporters: ['text', 'html'], + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/ecs_data_quality_dashboard'], + preset: '@kbn/test', +}; diff --git a/x-pack/plugins/ecs_data_quality_dashboard/kibana.jsonc b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/kibana.jsonc similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/kibana.jsonc rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/kibana.jsonc diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_metering_stats_index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_metering_stats_index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_metering_stats_index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_metering_stats_index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_green_index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_green_index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_green_index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_green_index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_yellow_index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_yellow_index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_yellow_index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_yellow_index.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/request.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/request.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/request.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/request.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/request_context.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/request_context.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/request_context.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/request_context.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/response.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/response.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/response.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/response.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/test_adapters.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/test_adapters.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/test_adapters.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/test_adapters.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_authorized_index_names.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_authorized_index_names.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_authorized_index_names.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_authorized_index_names.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_available_indices.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_available_indices.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_available_indices.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_available_indices.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/build_response/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/build_response/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/build_response/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/build_response/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_field_map.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_field_map.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_field_map.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_field_map.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_ilm_explain.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_ilm_explain.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_ilm_explain.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_ilm_explain.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_mappings.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_mappings.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_mappings.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_mappings.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_stats.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_stats.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_stats.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_stats.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/get_unallowed_field_values.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/get_unallowed_field_values.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/get_unallowed_field_values.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/get_unallowed_field_values.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/plugin.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/plugin.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/plugin.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/plugin.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/results.mock.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/results.mock.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/results.mock.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/results.mock.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/translations.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/translations.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/translations.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/translations.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/common.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/common.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/common.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/common.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_ilm_explain.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_ilm_explain.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_ilm_explain.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_ilm_explain.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_index_mappings.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_index_mappings.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_index_mappings.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_index_mappings.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_index_stats.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_index_stats.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_index_stats.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_index_stats.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_unallowed_field_values.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_unallowed_field_values.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_unallowed_field_values.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_unallowed_field_values.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/result.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/result.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/result.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/result.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/utils/string_to_non_negative_number.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/utils/string_to_non_negative_number.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/utils/string_to_non_negative_number.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/utils/string_to_non_negative_number.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/translations.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/translations.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/translations.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/translations.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/types.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/types.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/types.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/types.ts diff --git a/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/tsconfig.json b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/tsconfig.json new file mode 100644 index 0000000000000..14c001e40eff0 --- /dev/null +++ b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/tsconfig.json @@ -0,0 +1,34 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "server/lib/**/*", + "server/**/*", + // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 + "server/**/*.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/core-http-server", + "@kbn/licensing-plugin", + "@kbn/core-http-request-handler-context-server", + "@kbn/securitysolution-io-ts-utils", + "@kbn/securitysolution-io-ts-types", + "@kbn/i18n", + "@kbn/core-http-router-server-mocks", + "@kbn/logging-mocks", + "@kbn/data-stream-adapter", + "@kbn/spaces-plugin", + "@kbn/core-elasticsearch-server-mocks", + "@kbn/core-elasticsearch-server", + "@kbn/core-security-common", + "@kbn/datemath", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/solutions/security/plugins/elastic_assistant/README.md b/x-pack/solutions/security/plugins/elastic_assistant/README.md new file mode 100755 index 0000000000000..bb5d441cdaa18 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/README.md @@ -0,0 +1,30 @@ +# Elastic AI Assistant + +This plugin implements (only) server APIs for the `Elastic AI Assistant`. + +This plugin does NOT contain UI components. See `x-pack/platform/packages/shared/kbn-elastic-assistant` for React components. + +## Maintainers + +Maintained by the Security Solution team + +## Graph structure + +### Default Assistant graph + +![DefaultAssistantGraph](./docs/img/default_assistant_graph.png) + +### Default Attack discovery graph + +![DefaultAttackDiscoveryGraph](./docs/img/default_attack_discovery_graph.png) + +## Development + +### Generate graph structure + +To generate the graph structure, run `yarn draw-graph` from the plugin directory. +The graphs will be generated in the `docs/img` directory of the plugin. + +### Testing + +To run the tests for this plugin, run `node scripts/jest --watch x-pack/solutions/security/plugins/elastic_assistant/jest.config.js --coverage` from the Kibana root directory. diff --git a/x-pack/plugins/elastic_assistant/common/anonymization/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/common/anonymization/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/common/anonymization/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/common/anonymization/index.ts diff --git a/x-pack/plugins/elastic_assistant/common/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/common/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/common/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/common/constants.ts diff --git a/x-pack/plugins/elastic_assistant/docs/img/default_assistant_graph.png b/x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_assistant_graph.png similarity index 100% rename from x-pack/plugins/elastic_assistant/docs/img/default_assistant_graph.png rename to x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_assistant_graph.png diff --git a/x-pack/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png b/x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png similarity index 100% rename from x-pack/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png rename to x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png diff --git a/x-pack/solutions/security/plugins/elastic_assistant/jest.config.js b/x-pack/solutions/security/plugins/elastic_assistant/jest.config.js new file mode 100644 index 0000000000000..88be4c9828e98 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/elastic_assistant/{common,lib,server}/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/elastic_assistant', + coverageReporters: ['text', 'html'], + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/elastic_assistant'], + preset: '@kbn/test', +}; diff --git a/x-pack/plugins/elastic_assistant/kibana.jsonc b/x-pack/solutions/security/plugins/elastic_assistant/kibana.jsonc similarity index 100% rename from x-pack/plugins/elastic_assistant/kibana.jsonc rename to x-pack/solutions/security/plugins/elastic_assistant/kibana.jsonc diff --git a/x-pack/plugins/elastic_assistant/package.json b/x-pack/solutions/security/plugins/elastic_assistant/package.json similarity index 100% rename from x-pack/plugins/elastic_assistant/package.json rename to x-pack/solutions/security/plugins/elastic_assistant/package.json diff --git a/x-pack/plugins/elastic_assistant/scripts/create_conversations.js b/x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations.js similarity index 86% rename from x-pack/plugins/elastic_assistant/scripts/create_conversations.js rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations.js index b08f1419af0c9..a770c63561fd3 100644 --- a/x-pack/plugins/elastic_assistant/scripts/create_conversations.js +++ b/x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); require('./create_conversations_script').create(); diff --git a/x-pack/plugins/elastic_assistant/scripts/create_conversations_script.ts b/x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations_script.ts similarity index 98% rename from x-pack/plugins/elastic_assistant/scripts/create_conversations_script.ts rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations_script.ts index 2fd388e299f6f..cae2e4d6185b4 100644 --- a/x-pack/plugins/elastic_assistant/scripts/create_conversations_script.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations_script.ts @@ -19,7 +19,7 @@ import { getCreateConversationSchemaMock } from '../server/__mocks__/conversatio /** * Developer script for creating conversations. - * node x-pack/plugins/elastic_assistant/scripts/create_conversations + * node x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations */ export const create = async () => { const logger = new ToolingLog({ diff --git a/x-pack/plugins/elastic_assistant/scripts/draw_graph.js b/x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph.js similarity index 85% rename from x-pack/plugins/elastic_assistant/scripts/draw_graph.js rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph.js index dd920c79c32ec..a1c5fc312a4f4 100644 --- a/x-pack/plugins/elastic_assistant/scripts/draw_graph.js +++ b/x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); require('./draw_graph_script').draw(); diff --git a/x-pack/plugins/elastic_assistant/scripts/draw_graph_script.ts b/x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph_script.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/scripts/draw_graph_script.ts rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph_script.ts diff --git a/x-pack/plugins/elastic_assistant/scripts/model_evaluator.js b/x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator.js similarity index 86% rename from x-pack/plugins/elastic_assistant/scripts/model_evaluator.js rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator.js index a7b46e00d6f2d..5cfc2909ac15d 100644 --- a/x-pack/plugins/elastic_assistant/scripts/model_evaluator.js +++ b/x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); require('./model_evaluator_script').evaluateModels(); diff --git a/x-pack/plugins/elastic_assistant/scripts/model_evaluator_script.ts b/x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator_script.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/scripts/model_evaluator_script.ts rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator_script.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/action_result_data.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/action_result_data.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/action_result_data.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/action_result_data.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/alerts.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/alerts.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/alerts.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/alerts.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/anonymization_fields_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/anonymization_fields_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/anonymization_fields_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/anonymization_fields_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/attack_discovery_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/attack_discovery_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/attack_discovery_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/attack_discovery_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/conversations_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/conversations_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/conversations_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/conversations_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/data_clients.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/data_clients.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/data_clients.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/data_clients.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts similarity index 83% rename from x-pack/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts index e8cdf4b20dbde..5120b308cae19 100644 --- a/x-pack/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts @@ -16,7 +16,7 @@ export const mockExampleQueryDocsFromDirectoryLoader: Document[] = [ '[[esql-example-queries]]\n\nThe following is an example an ES|QL query:\n\n```\nFROM logs-*\n| WHERE NOT CIDR_MATCH(destination.ip, "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16")\n| STATS destcount = COUNT(destination.ip) by user.name, host.name\n| ENRICH ldap_lookup_new ON user.name\n| WHERE group.name IS NOT NULL\n| EVAL follow_up = CASE(\n destcount >= 100, "true",\n "false")\n| SORT destcount desc\n| KEEP destcount, host.name, user.name, group.name, follow_up\n```\n', metadata: { source: - '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc', + '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc', }, }, { @@ -24,7 +24,7 @@ export const mockExampleQueryDocsFromDirectoryLoader: Document[] = [ '[[esql-example-queries]]\n\nThe following is an example an ES|QL query:\n\n```\nfrom logs-*\n| grok dns.question.name "%{DATA}\\\\.%{GREEDYDATA:dns.question.registered_domain:string}"\n| stats unique_queries = count_distinct(dns.question.name) by dns.question.registered_domain, process.name\n| where unique_queries > 5\n| sort unique_queries desc\n```\n', metadata: { source: - '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc', + '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc', }, }, { @@ -32,7 +32,7 @@ export const mockExampleQueryDocsFromDirectoryLoader: Document[] = [ '[[esql-example-queries]]\n\nThe following is an example an ES|QL query:\n\n```\nfrom logs-*\n| where event.code is not null\n| stats event_code_count = count(event.code) by event.code,host.name\n| enrich win_events on event.code with EVENT_DESCRIPTION\n| where EVENT_DESCRIPTION is not null and host.name is not null\n| rename EVENT_DESCRIPTION as event.description\n| sort event_code_count desc\n| keep event_code_count,event.code,host.name,event.description\n```\n', metadata: { source: - '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc', + '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc', }, }, ]; diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/knowledge_base_entry_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/knowledge_base_entry_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/knowledge_base_entry_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/knowledge_base_entry_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/lang_chain_messages.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/lang_chain_messages.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/lang_chain_messages.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/lang_chain_messages.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/prompts_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/prompts_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/prompts_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/prompts_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/raw_attack_discoveries.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/raw_attack_discoveries.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/raw_attack_discoveries.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/raw_attack_discoveries.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/request.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/request.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/request.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/request_context.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/request_context.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/request_context.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/request_context.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/response.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/response.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/response.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/response.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/server.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/server.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/server.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/server.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/test_adapters.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/test_adapters.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/test_adapters.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/test_adapters.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/user.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/user.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/user.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/user.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/append_conversation_messages.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/append_conversation_messages.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/append_conversation_messages.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/append_conversation_messages.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/transforms.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/transforms.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/transforms.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/transforms.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/find.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/find.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/find.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/find.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/find.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/find.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/find.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/find.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts new file mode 100644 index 0000000000000..f17ffac7d42ac --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts @@ -0,0 +1,133 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AuditLogger, AuthenticatedUser, ElasticsearchClient, Logger } from '@kbn/core/server'; + +import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; +import { ESSearchRequest, ESSearchResponse } from '@kbn/es-types'; +import { estypes } from '@elastic/elasticsearch'; +import { IIndexPatternString } from '../types'; +import { getIndexTemplateAndPattern } from '../lib/data_stream/helpers'; +import { DocumentsDataWriter } from '../lib/data_stream/documents_data_writer'; +import { FindResponse, findDocuments } from './find'; + +export interface AIAssistantDataClientParams { + elasticsearchClientPromise: Promise; + kibanaVersion: string; + spaceId: string; + auditLogger?: AuditLogger; + logger: Logger; + indexPatternsResourceName: string; + currentUser: AuthenticatedUser | null; +} + +export class AIAssistantDataClient { + /** Kibana space id the document index are part of */ + public readonly spaceId: string; + + /** User creating, modifying, deleting, or updating a document */ + private readonly currentUser: AuthenticatedUser | null; + + private writerCache: Map = new Map(); + + public indexTemplateAndPattern: IIndexPatternString; + + constructor(public readonly options: AIAssistantDataClientParams) { + this.indexTemplateAndPattern = getIndexTemplateAndPattern( + this.options.indexPatternsResourceName, + this.options.spaceId ?? DEFAULT_NAMESPACE_STRING + ); + this.currentUser = this.options.currentUser; + this.spaceId = this.options.spaceId; + } + + public getWriter = async (): Promise => { + const spaceId = this.spaceId; + if (this.writerCache.get(spaceId)) { + return this.writerCache.get(spaceId) as DocumentsDataWriter; + } + await this.initializeWriter(spaceId, this.indexTemplateAndPattern.alias); + return this.writerCache.get(spaceId) as DocumentsDataWriter; + }; + + private async initializeWriter(spaceId: string, index: string): Promise { + const esClient = await this.options.elasticsearchClientPromise; + const writer = new DocumentsDataWriter({ + esClient, + spaceId, + index, + logger: this.options.logger, + user: { id: this.currentUser?.profile_uid, name: this.currentUser?.username }, + }); + + this.writerCache.set(spaceId, writer); + return writer; + } + + public getReader = async () => { + const indexPatterns = this.indexTemplateAndPattern.alias; + + return { + search: async >( + request: TSearchRequest + ): Promise> => { + try { + const esClient = await this.options.elasticsearchClientPromise; + return (await esClient.search({ + ...request, + index: indexPatterns, + ignore_unavailable: true, + seq_no_primary_term: true, + })) as unknown as ESSearchResponse; + } catch (err) { + this.options.logger.error( + `Error performing search in AIAssistantDataClient - ${err.message}` + ); + throw err; + } + }, + }; + }; + + public findDocuments = async ({ + perPage, + page, + sortField, + sortOrder, + filter, + fields, + aggs, + mSearch, + }: { + perPage: number; + page: number; + sortField?: string; + sortOrder?: string; + filter?: string; + fields?: string[]; + aggs?: Record; + mSearch?: { + filter: string; + perPage: number; + }; + }): Promise>> => { + const esClient = await this.options.elasticsearchClientPromise; + return findDocuments({ + esClient, + fields, + page, + perPage, + filter, + sortField, + index: this.indexTemplateAndPattern.alias, + sortOrder: sortOrder as estypes.SortOrder, + logger: this.options.logger, + aggs, + mSearch, + }); + }; +} diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.test.ts new file mode 100644 index 0000000000000..8d65d9e628285 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.test.ts @@ -0,0 +1,181 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + knowledgeBaseAuditEvent, + KnowledgeBaseAuditAction, + AUDIT_OUTCOME, + AUDIT_CATEGORY, + AUDIT_TYPE, +} from './audit_events'; + +describe('knowledgeBaseAuditEvent', () => { + it('should generate a success event with id', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: '123', + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has created knowledge base entry [id=123]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + it('should generate a success event with name', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + name: 'My document', + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has created knowledge base entry [name="My document"]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + it('should generate a success event with name and id', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + name: 'My document', + id: '123', + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has created knowledge base entry [id=123, name="My document"]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + + it('should generate a success event without id or name', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has created a knowledge base entry', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + + it('should generate a failure event with an error', () => { + const error = new Error('Test error'); + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: '456', + error, + }); + + expect(event).toEqual({ + message: 'Failed attempt to create knowledge base entry [id=456]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.FAILURE, + }, + error: { + code: error.name, + message: error.message, + }, + }); + }); + + it('should handle unknown outcome', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: '789', + outcome: AUDIT_OUTCOME.UNKNOWN, + }); + + expect(event).toEqual({ + message: 'User is creating knowledge base entry [id=789]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.UNKNOWN, + }, + }); + }); + + it('should handle update action', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.UPDATE, + id: '123', + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has updated knowledge base entry [id=123]', + event: { + action: KnowledgeBaseAuditAction.UPDATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CHANGE], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + + it('should handle delete action', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.DELETE, + id: '123', + }); + + expect(event).toEqual({ + message: 'User has deleted knowledge base entry [id=123]', + event: { + action: KnowledgeBaseAuditAction.DELETE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.DELETION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + + it('should default to success if outcome is not provided and no error exists', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + }); + + expect(event.event?.outcome).toBe(AUDIT_OUTCOME.SUCCESS); + }); + + it('should prioritize error outcome over provided outcome', () => { + const error = new Error('Error with priority'); + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + outcome: AUDIT_OUTCOME.SUCCESS, + error, + }); + + expect(event.event?.outcome).toBe(AUDIT_OUTCOME.FAILURE); + }); +}); diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.ts new file mode 100644 index 0000000000000..584efd603f4b7 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EcsEvent } from '@kbn/core/server'; +import { AuditEvent } from '@kbn/security-plugin/server'; +import { ArrayElement } from '@kbn/utility-types'; + +export enum AUDIT_TYPE { + CHANGE = 'change', + DELETION = 'deletion', + ACCESS = 'access', + CREATION = 'creation', +} + +export enum AUDIT_CATEGORY { + AUTHENTICATION = 'authentication', + DATABASE = 'database', + WEB = 'web', +} + +export enum AUDIT_OUTCOME { + FAILURE = 'failure', + SUCCESS = 'success', + UNKNOWN = 'unknown', +} + +export enum KnowledgeBaseAuditAction { + CREATE = 'knowledge_base_entry_create', + UPDATE = 'knowledge_base_entry_update', + DELETE = 'knowledge_base_entry_delete', +} + +type VerbsTuple = [string, string, string]; +const knowledgeBaseEventVerbs: Record = { + knowledge_base_entry_create: ['create', 'creating', 'created'], + knowledge_base_entry_update: ['update', 'updating', 'updated'], + knowledge_base_entry_delete: ['delete', 'deleting', 'deleted'], +}; + +const knowledgeBaseEventTypes: Record> = { + knowledge_base_entry_create: AUDIT_TYPE.CREATION, + knowledge_base_entry_update: AUDIT_TYPE.CHANGE, + knowledge_base_entry_delete: AUDIT_TYPE.DELETION, +}; + +export interface KnowledgeBaseAuditEventParams { + action: KnowledgeBaseAuditAction; + error?: Error; + id?: string; + name?: string; + outcome?: EcsEvent['outcome']; +} + +export function knowledgeBaseAuditEvent({ + action, + error, + id, + name, + outcome, +}: KnowledgeBaseAuditEventParams): AuditEvent { + let doc = 'a knowledge base entry'; + if (id && name) { + doc = `knowledge base entry [id=${id}, name="${name}"]`; + } else if (id) { + doc = `knowledge base entry [id=${id}]`; + } else if (name) { + doc = `knowledge base entry [name="${name}"]`; + } + const [present, progressive, past] = knowledgeBaseEventVerbs[action]; + const message = error + ? `Failed attempt to ${present} ${doc}` + : outcome === 'unknown' + ? `User is ${progressive} ${doc}` + : `User has ${past} ${doc}`; + const type = knowledgeBaseEventTypes[action]; + + return { + message, + event: { + action, + category: [AUDIT_CATEGORY.DATABASE], + type: type ? [type] : undefined, + outcome: error ? AUDIT_OUTCOME.FAILURE : outcome ?? AUDIT_OUTCOME.SUCCESS, + }, + error: error && { + code: error.name, + message: error.message, + }, + }; +} diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts similarity index 90% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts index 8e1d749c7f78b..cda1781c3a1e9 100644 --- a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts @@ -8,6 +8,7 @@ import { v4 as uuidv4 } from 'uuid'; import { AnalyticsServiceSetup, + type AuditLogger, AuthenticatedUser, ElasticsearchClient, Logger, @@ -18,6 +19,7 @@ import { KnowledgeBaseEntryResponse, KnowledgeBaseEntryUpdateProps, } from '@kbn/elastic-assistant-common'; +import { AUDIT_OUTCOME, KnowledgeBaseAuditAction, knowledgeBaseAuditEvent } from './audit_events'; import { CREATE_KNOWLEDGE_BASE_ENTRY_ERROR_EVENT, CREATE_KNOWLEDGE_BASE_ENTRY_SUCCESS_EVENT, @@ -26,6 +28,7 @@ import { getKnowledgeBaseEntry } from './get_knowledge_base_entry'; import { CreateKnowledgeBaseEntrySchema, UpdateKnowledgeBaseEntrySchema } from './types'; export interface CreateKnowledgeBaseEntryParams { + auditLogger?: AuditLogger; esClient: ElasticsearchClient; knowledgeBaseIndex: string; logger: Logger; @@ -37,6 +40,7 @@ export interface CreateKnowledgeBaseEntryParams { } export const createKnowledgeBaseEntry = async ({ + auditLogger, esClient, knowledgeBaseIndex, spaceId, @@ -75,13 +79,27 @@ export const createKnowledgeBaseEntry = async ({ logger, user, }); - + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: newKnowledgeBaseEntry?.id, + name: newKnowledgeBaseEntry?.name, + outcome: AUDIT_OUTCOME.SUCCESS, + }) + ); telemetry.reportEvent(CREATE_KNOWLEDGE_BASE_ENTRY_SUCCESS_EVENT.eventType, telemetryPayload); return newKnowledgeBaseEntry; } catch (err) { logger.error( `Error creating Knowledge Base Entry: ${err} with kbResource: ${knowledgeBaseEntry.name}` ); + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + outcome: AUDIT_OUTCOME.FAILURE, + error: err, + }) + ); telemetry.reportEvent(CREATE_KNOWLEDGE_BASE_ENTRY_ERROR_EVENT.eventType, { ...telemetryPayload, errorMessage: err.message ?? 'Unknown error', diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.test.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.test.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.test.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.test.tsx diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.test.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts new file mode 100644 index 0000000000000..0065066455475 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts @@ -0,0 +1,697 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + MlTrainedModelDeploymentNodesStats, + MlTrainedModelStats, + SearchTotalHits, +} from '@elastic/elasticsearch/lib/api/types'; +import type { MlPluginSetup } from '@kbn/ml-plugin/server'; +import type { KibanaRequest } from '@kbn/core-http-server'; +import { Document } from 'langchain/document'; +import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import { + DocumentEntryType, + DocumentEntry, + IndexEntry, + KnowledgeBaseEntryCreateProps, + KnowledgeBaseEntryResponse, + Metadata, +} from '@kbn/elastic-assistant-common'; +import pRetry from 'p-retry'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { StructuredTool } from '@langchain/core/tools'; +import { AnalyticsServiceSetup, AuditLogger, ElasticsearchClient } from '@kbn/core/server'; +import { IndexPatternsFetcher } from '@kbn/data-views-plugin/server'; +import { map } from 'lodash'; +import { AIAssistantDataClient, AIAssistantDataClientParams } from '..'; +import { GetElser } from '../../types'; +import { createKnowledgeBaseEntry, transformToCreateSchema } from './create_knowledge_base_entry'; +import { EsDocumentEntry, EsIndexEntry, EsKnowledgeBaseEntrySchema } from './types'; +import { transformESSearchToKnowledgeBaseEntry } from './transforms'; +import { SECURITY_LABS_RESOURCE, USER_RESOURCE } from '../../routes/knowledge_base/constants'; +import { + getKBVectorSearchQuery, + getStructuredToolForIndexEntry, + isModelAlreadyExistsError, +} from './helpers'; +import { getKBUserFilter } from '../../routes/knowledge_base/entries/utils'; +import { + loadSecurityLabs, + getSecurityLabsDocsCount, +} from '../../lib/langchain/content_loaders/security_labs_loader'; +import { ASSISTANT_ELSER_INFERENCE_ID } from './field_maps_configuration'; + +/** + * Params for when creating KbDataClient in Request Context Factory. Useful if needing to modify + * configuration after initial plugin start + */ +export interface GetAIAssistantKnowledgeBaseDataClientParams { + modelIdOverride?: string; + manageGlobalKnowledgeBaseAIAssistant?: boolean; +} + +export interface KnowledgeBaseDataClientParams extends AIAssistantDataClientParams { + ml: MlPluginSetup; + getElserId: GetElser; + getIsKBSetupInProgress: () => boolean; + ingestPipelineResourceName: string; + setIsKBSetupInProgress: (isInProgress: boolean) => void; + manageGlobalKnowledgeBaseAIAssistant: boolean; +} +export class AIAssistantKnowledgeBaseDataClient extends AIAssistantDataClient { + constructor(public readonly options: KnowledgeBaseDataClientParams) { + super(options); + } + + public get isSetupInProgress() { + return this.options.getIsKBSetupInProgress(); + } + /** + * Returns whether setup of the Knowledge Base can be performed (essentially an ML features check) + * + */ + public isSetupAvailable = async () => { + // ML plugin requires request to retrieve capabilities, which are in turn scoped to the user from the request, + // so we just test the API for a 404 instead to determine if ML is 'available' + // TODO: expand to include memory check, see https://github.com/elastic/ml-team/issues/1208#issuecomment-2115770318 + try { + const esClient = await this.options.elasticsearchClientPromise; + await esClient.ml.getMemoryStats({ human: true }); + } catch (error) { + return false; + } + return true; + }; + + /** + * Downloads and installs ELSER model if not already installed + * + * @param soClient SavedObjectsClientContract for installing ELSER so that ML SO's are in sync + */ + private installModel = async ({ soClient }: { soClient: SavedObjectsClientContract }) => { + const elserId = await this.options.getElserId(); + this.options.logger.debug(`Installing ELSER model '${elserId}'...`); + + try { + await this.options.ml + // TODO: Potentially plumb soClient through DataClient from pluginStart + .trainedModelsProvider({} as KibanaRequest, soClient) + .installElasticModel(elserId); + } catch (error) { + this.options.logger.error(`Error installing ELSER model '${elserId}':\n${error}`); + } + }; + + /** + * Returns whether ELSER is installed/ready to deploy + * + * @returns Promise indicating whether the model is installed + */ + public isModelInstalled = async (): Promise => { + const elserId = await this.options.getElserId(); + this.options.logger.debug(`Checking if ELSER model '${elserId}' is installed...`); + + try { + const esClient = await this.options.elasticsearchClientPromise; + const getResponse = await esClient.ml.getTrainedModels({ + model_id: elserId, + include: 'definition_status', + }); + return Boolean(getResponse.trained_model_configs[0]?.fully_defined); + } catch (error) { + if (!isModelAlreadyExistsError(error)) { + this.options.logger.error( + `Error checking if ELSER model '${elserId}' is installed:\n${error}` + ); + } + return false; + } + }; + + /** + * Checks if the inference endpoint is deployed and allocated in Elasticsearch + * + * @returns Promise indicating whether the model is deployed + */ + public isInferenceEndpointExists = async (): Promise => { + try { + const esClient = await this.options.elasticsearchClientPromise; + + const inferenceExists = !!(await esClient.inference.get({ + inference_id: ASSISTANT_ELSER_INFERENCE_ID, + task_type: 'sparse_embedding', + })); + if (!inferenceExists) { + return false; + } + const elserId = await this.options.getElserId(); + const getResponse = await esClient.ml.getTrainedModelsStats({ + model_id: elserId, + }); + + // For standardized way of checking deployment status see: https://github.com/elastic/elasticsearch/issues/106986 + const isReadyESS = (stats: MlTrainedModelStats) => + stats.deployment_stats?.state === 'started' && + stats.deployment_stats?.allocation_status.state === 'fully_allocated'; + + const isReadyServerless = (stats: MlTrainedModelStats) => + (stats.deployment_stats?.nodes as unknown as MlTrainedModelDeploymentNodesStats[])?.some( + (node) => node.routing_state.routing_state === 'started' + ); + + return getResponse.trained_model_stats?.some( + (stats) => isReadyESS(stats) || isReadyServerless(stats) + ); + } catch (error) { + this.options.logger.debug( + `Error checking if Inference endpoint ${ASSISTANT_ELSER_INFERENCE_ID} exists: ${error}` + ); + return false; + } + }; + + public createInferenceEndpoint = async () => { + const elserId = await this.options.getElserId(); + this.options.logger.debug(`Deploying ELSER model '${elserId}'...`); + const esClient = await this.options.elasticsearchClientPromise; + + try { + await esClient.inference.delete({ + inference_id: ASSISTANT_ELSER_INFERENCE_ID, + // it's being used in the mapping so we need to force delete + force: true, + }); + this.options.logger.debug(`Deleted existing inference endpoint for ELSER model '${elserId}'`); + } catch (error) { + this.options.logger.error( + `Error deleting inference endpoint for ELSER model '${elserId}':\n${error}` + ); + } + + try { + await esClient.inference.put({ + task_type: 'sparse_embedding', + inference_id: ASSISTANT_ELSER_INFERENCE_ID, + inference_config: { + service: 'elasticsearch', + service_settings: { + adaptive_allocations: { + enabled: true, + min_number_of_allocations: 0, + max_number_of_allocations: 8, + }, + num_threads: 1, + model_id: elserId, + }, + task_settings: {}, + }, + }); + + // await for the model to be deployed + await this.isInferenceEndpointExists(); + } catch (error) { + this.options.logger.error( + `Error creating inference endpoint for ELSER model '${elserId}':\n${error}` + ); + throw new Error(`Error creating inference endpoint for ELSER model '${elserId}':\n${error}`); + } + }; + + /** + * Downloads and deploys recommended ELSER (if not already), then loads ES|QL docs + * + * NOTE: Before automatically installing ELSER in the background, we should perform deployment resource checks + * Only necessary for ESS, as Serverless can always auto-install if `productTier === complete` + * See ml-team issue for providing 'dry run' flag to perform these checks: https://github.com/elastic/ml-team/issues/1208 + * + * @param options + * @param options.soClient SavedObjectsClientContract for installing ELSER so that ML SO's are in sync + * + * @returns Promise + */ + public setupKnowledgeBase = async ({ + soClient, + ignoreSecurityLabs = false, + }: { + soClient: SavedObjectsClientContract; + ignoreSecurityLabs?: boolean; + }): Promise => { + if (this.options.getIsKBSetupInProgress()) { + this.options.logger.debug('Knowledge Base setup already in progress'); + return; + } + + this.options.logger.debug('Starting Knowledge Base setup...'); + this.options.setIsKBSetupInProgress(true); + const elserId = await this.options.getElserId(); + + // Delete legacy ESQL knowledge base docs if they exist, and silence the error if they do not + try { + const esClient = await this.options.elasticsearchClientPromise; + const legacyESQL = await esClient.deleteByQuery({ + index: this.indexTemplateAndPattern.alias, + query: { + bool: { + must: [{ terms: { 'metadata.kbResource': ['esql', 'unknown'] } }], + }, + }, + }); + if (legacyESQL?.total != null && legacyESQL?.total > 0) { + this.options.logger.info( + `Removed ${legacyESQL?.total} ESQL knowledge base docs from knowledge base data stream: ${this.indexTemplateAndPattern.alias}.` + ); + } + // Delete any existing Security Labs content + const securityLabsDocs = await esClient.deleteByQuery({ + index: this.indexTemplateAndPattern.alias, + query: { + bool: { + must: [{ terms: { kb_resource: [SECURITY_LABS_RESOURCE] } }], + }, + }, + }); + if (securityLabsDocs?.total) { + this.options.logger.info( + `Removed ${securityLabsDocs?.total} Security Labs knowledge base docs from knowledge base data stream: ${this.indexTemplateAndPattern.alias}.` + ); + } + } catch (e) { + this.options.logger.info('No legacy ESQL or Security Labs knowledge base docs to delete'); + } + + try { + const isInstalled = await this.isModelInstalled(); + if (!isInstalled) { + await this.installModel({ soClient }); + await pRetry( + async () => + (await this.isModelInstalled()) + ? Promise.resolve() + : Promise.reject(new Error('Model not installed')), + { minTimeout: 10000, maxTimeout: 10000, retries: 10 } + ); + this.options.logger.debug(`ELSER model '${elserId}' successfully installed!`); + } else { + this.options.logger.debug(`ELSER model '${elserId}' is already installed`); + } + + const inferenceExists = await this.isInferenceEndpointExists(); + if (!inferenceExists) { + await this.createInferenceEndpoint(); + + this.options.logger.debug( + `Inference endpoint for ELSER model '${elserId}' successfully deployed!` + ); + } else { + this.options.logger.debug( + `Inference endpoint for ELSER model '${elserId}' is already deployed` + ); + } + + this.options.logger.debug(`Checking if Knowledge Base docs have been loaded...`); + + if (!ignoreSecurityLabs) { + const labsDocsLoaded = await this.isSecurityLabsDocsLoaded(); + if (!labsDocsLoaded) { + this.options.logger.debug(`Loading Security Labs KB docs...`); + await loadSecurityLabs(this, this.options.logger); + } else { + this.options.logger.debug(`Security Labs Knowledge Base docs already loaded!`); + } + } + } catch (e) { + this.options.setIsKBSetupInProgress(false); + this.options.logger.error(`Error setting up Knowledge Base: ${e.message}`); + throw new Error(`Error setting up Knowledge Base: ${e.message}`); + } finally { + this.options.setIsKBSetupInProgress(false); + } + }; + + // TODO make this function private + // no telemetry, no audit logs + /** + * Adds LangChain Documents to the knowledge base + * + * @param {Array>} documents - LangChain Documents to add to the knowledge base + * @param global whether these entries should be added globally, i.e. empty users[] + */ + public addKnowledgeBaseDocuments = async ({ + documents, + global = false, + }: { + documents: Array>; + global?: boolean; + }): Promise => { + const writer = await this.getWriter(); + const changedAt = new Date().toISOString(); + const authenticatedUser = this.options.currentUser; + if (authenticatedUser == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + if (global && !this.options.manageGlobalKnowledgeBaseAIAssistant) { + throw new Error('User lacks privileges to create global knowledge base entries'); + } + + const { errors, docs_created: docsCreated } = await writer.bulk({ + documentsToCreate: documents.map((doc) => { + // v1 schema has metadata nested in a `metadata` object + return transformToCreateSchema({ + createdAt: changedAt, + spaceId: this.spaceId, + user: authenticatedUser, + entry: { + type: DocumentEntryType.value, + name: 'unknown', + text: doc.pageContent, + kbResource: doc.metadata.kbResource ?? 'unknown', + required: doc.metadata.required ?? false, + source: doc.metadata.source ?? 'unknown', + }, + global, + }); + }), + authenticatedUser, + }); + const created = + docsCreated.length > 0 + ? await this.findDocuments({ + page: 1, + perPage: 10000, + filter: docsCreated.map((c) => `_id:${c}`).join(' OR '), + }) + : undefined; + // Intentionally no telemetry here - this path only used to install security docs + // Plans to make this function private in a different PR so no user entry ever is created in this path + this.options.logger.debug(`created: ${created?.data.hits.hits.length ?? '0'}`); + this.options.logger.debug(() => `errors: ${JSON.stringify(errors, null, 2)}`); + + return created?.data ? transformESSearchToKnowledgeBaseEntry(created?.data) : []; + }; + + /** + * Returns if user's KB docs exists + */ + + public isUserDataExists = async (): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + const esClient = await this.options.elasticsearchClientPromise; + + try { + const vectorSearchQuery = getKBVectorSearchQuery({ + kbResource: USER_RESOURCE, + required: false, + user, + }); + + const result = await esClient.search({ + index: this.indexTemplateAndPattern.alias, + size: 0, + query: vectorSearchQuery, + track_total_hits: true, + }); + + return !!(result.hits?.total as SearchTotalHits).value; + } catch (e) { + this.options.logger.debug(`Error checking if user's KB docs exist: ${e.message}`); + return false; + } + }; + + /** + * Returns if allSecurity Labs KB docs have been loaded + */ + public isSecurityLabsDocsLoaded = async (): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + const expectedDocsCount = await getSecurityLabsDocsCount({ logger: this.options.logger }); + + const esClient = await this.options.elasticsearchClientPromise; + + try { + const vectorSearchQuery = getKBVectorSearchQuery({ + kbResource: SECURITY_LABS_RESOURCE, + required: false, + user, + }); + + const result = await esClient.search({ + index: this.indexTemplateAndPattern.alias, + size: 0, + query: vectorSearchQuery, + track_total_hits: true, + }); + + const existingDocs = (result.hits?.total as SearchTotalHits).value; + + if (existingDocs !== expectedDocsCount) { + this.options.logger.debug( + `Security Labs docs are not loaded, existing docs: ${existingDocs}, expected docs: ${expectedDocsCount}` + ); + } + return existingDocs === expectedDocsCount; + } catch (e) { + this.options.logger.info(`Error checking if Security Labs docs are loaded: ${e.message}`); + return false; + } + }; + + /** + * Performs similarity search to retrieve LangChain Documents from the knowledge base + */ + public getKnowledgeBaseDocumentEntries = async ({ + filter, + kbResource, + query, + required, + }: { + filter?: QueryDslQueryContainer; + kbResource?: string; + query: string; + required?: boolean; + }): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + const esClient = await this.options.elasticsearchClientPromise; + + const vectorSearchQuery = getKBVectorSearchQuery({ + filter, + kbResource, + query, + required, + user, + }); + + try { + const result = await esClient.search({ + index: this.indexTemplateAndPattern.alias, + size: 10, + query: vectorSearchQuery, + }); + + const results = result.hits.hits.map((hit) => { + const metadata = { + source: hit?._source?.source, + required: hit?._source?.required, + kbResource: hit?._source?.kb_resource, + }; + return new Document({ + pageContent: hit?._source?.text ?? '', + metadata, + }); + }); + + this.options.logger.debug( + () => + `getKnowledgeBaseDocuments() - Similarity Search Query:\n ${JSON.stringify( + vectorSearchQuery + )}` + ); + this.options.logger.debug( + () => + `getKnowledgeBaseDocuments() - Similarity Search returned [${JSON.stringify( + results.length + )}] results` + ); + + return results; + } catch (e) { + this.options.logger.error(`Error performing KB Similarity Search: ${e.message}`); + return []; + } + }; + + /** + * Returns all global and current user's private `required` document entries. + */ + public getRequiredKnowledgeBaseDocumentEntries = async (): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + try { + const userFilter = getKBUserFilter(user); + const results = await this.findDocuments({ + // Note: This is a magic number to set some upward bound as to not blow the context with too + // many historical KB entries. Ideally we'd query for all and token trim. + perPage: 100, + page: 1, + sortField: 'created_at', + sortOrder: 'asc', + filter: `${userFilter} AND type:document AND kb_resource:user AND required:true`, + }); + this.options.logger.debug( + `kbDataClient.getRequiredKnowledgeBaseDocumentEntries() - results:\n${JSON.stringify( + results + )}` + ); + + if (results) { + return transformESSearchToKnowledgeBaseEntry(results.data) as DocumentEntry[]; + } + } catch (e) { + this.options.logger.error( + `kbDataClient.getRequiredKnowledgeBaseDocumentEntries() - Failed to fetch DocumentEntries` + ); + return []; + } + + return []; + }; + + /** + * Creates a new Knowledge Base Entry. + * + * @param knowledgeBaseEntry + * @param global + */ + public createKnowledgeBaseEntry = async ({ + auditLogger, + knowledgeBaseEntry, + telemetry, + global = false, + }: { + auditLogger?: AuditLogger; + knowledgeBaseEntry: KnowledgeBaseEntryCreateProps; + global?: boolean; + telemetry: AnalyticsServiceSetup; + }): Promise => { + const authenticatedUser = this.options.currentUser; + + if (authenticatedUser == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + if (global && !this.options.manageGlobalKnowledgeBaseAIAssistant) { + throw new Error('User lacks privileges to create global knowledge base entries'); + } + + this.options.logger.debug( + () => `Creating Knowledge Base Entry:\n ${JSON.stringify(knowledgeBaseEntry, null, 2)}` + ); + this.options.logger.debug(`kbIndex: ${this.indexTemplateAndPattern.alias}`); + const esClient = await this.options.elasticsearchClientPromise; + return createKnowledgeBaseEntry({ + auditLogger, + esClient, + knowledgeBaseIndex: this.indexTemplateAndPattern.alias, + logger: this.options.logger, + spaceId: this.spaceId, + user: authenticatedUser, + knowledgeBaseEntry, + global, + telemetry, + }); + }; + + /** + * Returns AssistantTools for any 'relevant' KB IndexEntries that exist in the knowledge base. + * + * Note: Accepts esClient so retrieval can be scoped to the current user as esClient on kbDataClient + * is scoped to system user. + */ + public getAssistantTools = async ({ + esClient, + }: { + esClient: ElasticsearchClient; + }): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + try { + const elserId = ASSISTANT_ELSER_INFERENCE_ID; + const userFilter = getKBUserFilter(user); + const results = await this.findDocuments({ + // Note: This is a magic number to set some upward bound as to not blow the context with too + // many registered tools. As discussed in review, this will initially be mitigated by caps on + // the IndexEntries field lengths, context trimming at the graph layer (before compilation), + // and eventually some sort of tool discovery sub-graph or generic retriever to scale tool usage. + perPage: 23, + page: 1, + sortField: 'created_at', + sortOrder: 'asc', + filter: `${userFilter} AND type:index`, + }); + this.options.logger.debug( + `kbDataClient.getAssistantTools() - results:\n${JSON.stringify(results, null, 2)}` + ); + + if (results) { + const entries = transformESSearchToKnowledgeBaseEntry(results.data) as IndexEntry[]; + const indexPatternFetcher = new IndexPatternsFetcher(esClient); + const existingIndices = await indexPatternFetcher.getExistingIndices(map(entries, 'index')); + return ( + entries + // Filter out any IndexEntries that don't have an existing index + .filter((entry) => existingIndices.includes(entry.index)) + .map((indexEntry) => { + return getStructuredToolForIndexEntry({ + indexEntry, + esClient, + logger: this.options.logger, + elserId, + }); + }) + ); + } + } catch (e) { + this.options.logger.error(`kbDataClient.getAssistantTools() - Failed to fetch IndexEntries`); + return []; + } + + return []; + }; +} diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/ingest_pipeline.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/ingest_pipeline.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/ingest_pipeline.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/ingest_pipeline.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/helpers.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts new file mode 100644 index 0000000000000..32a1a30fec255 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts @@ -0,0 +1,786 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import { IndicesGetDataStreamResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { errors as EsErrors } from '@elastic/elasticsearch'; +import { ReplaySubject, Subject } from 'rxjs'; +import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; +import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; +import { conversationsDataClientMock } from '../__mocks__/data_clients.mock'; +import { authenticatedUser } from '../__mocks__/user'; +import { AIAssistantConversationsDataClient } from '../ai_assistant_data_clients/conversations'; +import { AIAssistantService, AIAssistantServiceOpts } from '.'; +import { retryUntil } from './create_resource_installation_helper.test'; +import { mlPluginMock } from '@kbn/ml-plugin/public/mocks'; +import type { MlPluginSetup } from '@kbn/ml-plugin/server'; +import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; + +jest.mock('../ai_assistant_data_clients/conversations', () => ({ + AIAssistantConversationsDataClient: jest.fn(), +})); + +const licensing = Promise.resolve( + licensingMock.createRequestHandlerContext({ + license: { type: 'enterprise' }, + }) +); +let logger: ReturnType<(typeof loggingSystemMock)['createLogger']>; +const clusterClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + +const SimulateTemplateResponse = { + template: { + aliases: { + alias_name_1: { + is_hidden: true, + }, + alias_name_2: { + is_hidden: true, + }, + }, + mappings: { enabled: false }, + settings: {}, + }, +}; + +const GetAliasResponse = { + '.kibana-elastic-ai-assistant-conversations-default-000001': { + aliases: { + alias_1: { + is_hidden: true, + }, + alias_2: { + is_hidden: true, + }, + }, + }, +}; + +const GetDataStreamResponse: IndicesGetDataStreamResponse = { + data_streams: [ + { + name: 'ignored', + generation: 1, + timestamp_field: { name: 'ignored' }, + hidden: true, + indices: [ + { + index_name: 'ignored', + index_uuid: 'ignored', + managed_by: 'Data stream lifecycle', + prefer_ilm: false, + }, + ], + status: 'green', + template: 'ignored', + next_generation_managed_by: 'Data stream lifecycle', + prefer_ilm: false, + rollover_on_write: false, + }, + ], +}; + +const getSpaceResourcesInitialized = async ( + assistantService: AIAssistantService, + namespace: string = DEFAULT_NAMESPACE_STRING +) => { + const { result } = await assistantService.getSpaceResourcesInitializationPromise(namespace); + return result; +}; + +const conversationsDataClient = conversationsDataClientMock.create(); + +const mockUser1 = authenticatedUser; + +describe('AI Assistant Service', () => { + let pluginStop$: Subject; + let assistantServiceOpts: AIAssistantServiceOpts; + let ml: MlPluginSetup; + + beforeEach(() => { + jest.resetAllMocks(); + logger = loggingSystemMock.createLogger(); + pluginStop$ = new ReplaySubject(1); + jest.spyOn(global.Math, 'random').mockReturnValue(0.01); + clusterClient.indices.simulateTemplate.mockImplementation(async () => SimulateTemplateResponse); + clusterClient.indices.simulateIndexTemplate.mockImplementation( + async () => SimulateTemplateResponse + ); + clusterClient.indices.getAlias.mockImplementation(async () => GetAliasResponse); + clusterClient.indices.getDataStream.mockImplementation(async () => GetDataStreamResponse); + ml = mlPluginMock.createSetupContract() as unknown as MlPluginSetup; // Missing SharedServices mock, so manually mocking trainedModelsProvider + ml.trainedModelsProvider = jest.fn().mockImplementation(() => ({ + getELSER: jest.fn().mockImplementation(() => '.elser_model_2'), + })); + assistantServiceOpts = { + logger, + elasticsearchClientPromise: Promise.resolve(clusterClient), + pluginStop$, + kibanaVersion: '8.8.0', + ml, + taskManager: taskManagerMock.createSetup(), + productDocManager: Promise.resolve({ + getStatus: jest.fn(), + install: jest.fn(), + update: jest.fn(), + uninstall: jest.fn(), + }), + }; + }); + + afterEach(() => { + pluginStop$.next(); + pluginStop$.complete(); + }); + + describe('AIAssistantService()', () => { + test('should correctly initialize common resources', async () => { + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => (await assistantService.isInitialized()) === true + ); + + expect(assistantService.isInitialized()).toEqual(true); + + expect(clusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(6); + + const expectedTemplates = [ + '.kibana-elastic-ai-assistant-component-template-conversations', + '.kibana-elastic-ai-assistant-component-template-knowledge-base', + '.kibana-elastic-ai-assistant-component-template-prompts', + '.kibana-elastic-ai-assistant-component-template-anonymization-fields', + '.kibana-elastic-ai-assistant-component-template-attack-discovery', + '.kibana-elastic-ai-assistant-component-template-defend-insights', + ]; + expectedTemplates.forEach((t, i) => { + expect(clusterClient.cluster.putComponentTemplate.mock.calls[i][0].name).toEqual(t); + }); + }); + + test('should log error and set initialized to false if creating/updating common component template throws error', async () => { + clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); + + expect(assistantService.isInitialized()).toEqual(false); + expect(logger.error).toHaveBeenCalledWith( + `Error installing component template .kibana-elastic-ai-assistant-component-template-conversations - fail` + ); + }); + }); + + describe('createAIAssistantConversationsDataClient()', () => { + let assistantService: AIAssistantService; + beforeEach(() => { + (AIAssistantConversationsDataClient as jest.Mock).mockImplementation( + () => conversationsDataClient + ); + (clusterClient.search as unknown as jest.Mock).mockResolvedValue({ + hits: { hits: [], total: { value: 0 } }, + }); + }); + + test('should create new AIAssistantConversationsDataClient', async () => { + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + logger, + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + }); + }); + + test('should retry initializing common resources if common resource initialization failed', async () => { + clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); + + expect(assistantService.isInitialized()).toEqual(false); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + + expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).toHaveBeenCalled(); + + expect(clusterClient.indices.createDataStream).not.toHaveBeenCalled(); + expect(clusterClient.indices.getDataStream).toHaveBeenCalled(); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + logger, + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + }); + + expect(result).not.toBe(null); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); + }); + + test('should not retry initializing common resources if common resource initialization is in progress', async () => { + // this is the initial call that fails + clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); + + // this is the retry call that we'll artificially inflate the duration of + clusterClient.cluster.putComponentTemplate.mockImplementationOnce(async () => { + await new Promise((r) => setTimeout(r, 1000)); + return { acknowledged: true }; + }); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); + + expect(assistantService.isInitialized()).toEqual(false); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + // call createAIAssistantConversationsDataClient at the same time which will trigger the retries + const result = await Promise.all([ + assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }), + assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }), + ]); + + expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).toHaveBeenCalled(); + + expect(clusterClient.indices.createDataStream).not.toHaveBeenCalled(); + expect(clusterClient.indices.getDataStream).toHaveBeenCalled(); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + logger, + }); + + expect(result[0]).not.toBe(null); + expect(result[1]).not.toBe(null); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); + expect(logger.info).toHaveBeenCalledWith( + `Resource installation for "default" succeeded after retry` + ); + expect(logger.info).toHaveBeenCalledWith( + `Skipped retrying common resource initialization because it is already being retried.` + ); + }); + + test('should retry initializing space specific resources if space specific resource initialization failed', async () => { + clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + clusterClient.indices.simulateIndexTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + logger, + }); + + expect(result).not.toBe(null); + + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); + expect(logger.info).toHaveBeenCalledWith( + `Resource installation for "default" succeeded after retry` + ); + }); + + test('should not retry initializing context specific resources if context specific resource initialization is in progress', async () => { + // this is the initial call that fails + clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + clusterClient.indices.simulateIndexTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + // this is the retry call that we'll artificially inflate the duration of + clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => { + await new Promise((r) => setTimeout(r, 1000)); + return SimulateTemplateResponse; + }); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + const createAIAssistantDatastreamClientWithDelay = async (delayMs: number | null) => { + if (delayMs) { + await new Promise((r) => setTimeout(r, delayMs)); + } + + return assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + }; + + const result = await Promise.all([ + createAIAssistantDatastreamClientWithDelay(null), + createAIAssistantDatastreamClientWithDelay(1), + ]); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledTimes(2); + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + logger, + }); + + expect(result[0]).not.toBe(null); + expect(result[1]).not.toBe(null); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + + // Should only log the retry once because the second call should + // leverage the outcome of the first retry + expect( + logger.info.mock.calls.filter( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (calls: any[]) => calls[0] === `Retrying resource initialization for "default"` + ).length + ).toEqual(1); + expect( + logger.info.mock.calls.filter( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (calls: any[]) => calls[0] === `Resource installation for "default" succeeded after retry` + ).length + ).toEqual(1); + }); + + test('should throttle retries of initializing context specific resources', async () => { + // this is the initial call that fails + clusterClient.indices.simulateTemplate.mockImplementation(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + clusterClient.indices.simulateIndexTemplate.mockImplementation(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + const createAIAssistantDatastreamClientWithDelay = async (delayMs: number | null) => { + if (delayMs) { + await new Promise((r) => setTimeout(r, delayMs)); + } + + return assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + }; + + await Promise.all([ + createAIAssistantDatastreamClientWithDelay(null), + createAIAssistantDatastreamClientWithDelay(1), + createAIAssistantDatastreamClientWithDelay(2), + ]); + + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + + // Should only log the retry once because the second and third retries should be throttled + expect( + logger.info.mock.calls.filter( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (calls: any[]) => calls[0] === `Retrying resource initialization for "default"` + ).length + ).toEqual(1); + }); + + test('should return null if retrying common resources initialization fails again', async () => { + let failCount = 0; + clusterClient.cluster.putComponentTemplate.mockImplementation(() => { + throw new Error(`fail ${++failCount}`); + }); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0, 1); + + expect(assistantService.isInitialized()).toEqual(false); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'test', + currentUser: mockUser1, + licensing, + }); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + expect(result).toBe(null); + expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "test"`); + + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId "test" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-component-template-conversations component template. fail 1` + ); + }); + + test('should return null if retrying common resources initialization fails again with same error', async () => { + clusterClient.cluster.putComponentTemplate.mockRejectedValue(new Error('fail')); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); + + expect(assistantService.isInitialized()).toEqual(false); + + // Installing component template failed so no calls to install context-specific resources + // should be made + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'test', + currentUser: mockUser1, + licensing, + }); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + expect(result).toBe(null); + expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "test"`); + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId "test" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-component-template-conversations component template. fail` + ); + }); + + test('should return null if retrying space specific initialization fails again', async () => { + clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + clusterClient.indices.putIndexTemplate.mockRejectedValue(new Error('fail index template')); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'test', + currentUser: mockUser1, + licensing, + }); + + expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); + expect(result).toBe(null); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId \"test\" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-index-template-conversations index template. No mappings would be generated for .kibana-elastic-ai-assistant-index-template-conversations, possibly due to failed/misconfigured bootstrapping` + ); + }); + }); + + describe('retries', () => { + test('should retry adding component template for transient ES errors', async () => { + clusterClient.cluster.putComponentTemplate + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + expect(clusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(8); + + const expectedTemplates = [ + '.kibana-elastic-ai-assistant-component-template-conversations', + '.kibana-elastic-ai-assistant-component-template-conversations', + '.kibana-elastic-ai-assistant-component-template-conversations', + '.kibana-elastic-ai-assistant-component-template-knowledge-base', + '.kibana-elastic-ai-assistant-component-template-prompts', + '.kibana-elastic-ai-assistant-component-template-anonymization-fields', + '.kibana-elastic-ai-assistant-component-template-attack-discovery', + '.kibana-elastic-ai-assistant-component-template-defend-insights', + ]; + expectedTemplates.forEach((t, i) => { + expect(clusterClient.cluster.putComponentTemplate.mock.calls[i][0].name).toEqual(t); + }); + }); + + test('should retry updating index template for transient ES errors', async () => { + clusterClient.indices.putIndexTemplate + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + expect(assistantService.isInitialized()).toEqual(true); + + await retryUntil( + 'space resources initialized', + async () => (await getSpaceResourcesInitialized(assistantService)) === true + ); + + expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(8); + const expectedTemplates = [ + '.kibana-elastic-ai-assistant-index-template-conversations', + '.kibana-elastic-ai-assistant-index-template-conversations', + '.kibana-elastic-ai-assistant-index-template-conversations', + '.kibana-elastic-ai-assistant-index-template-knowledge-base', + '.kibana-elastic-ai-assistant-index-template-prompts', + '.kibana-elastic-ai-assistant-index-template-anonymization-fields', + '.kibana-elastic-ai-assistant-index-template-attack-discovery', + '.kibana-elastic-ai-assistant-index-template-defend-insights', + ]; + expectedTemplates.forEach((t, i) => { + expect(clusterClient.indices.putIndexTemplate.mock.calls[i][0].name).toEqual(t); + }); + }); + + test('should retry updating index settings for existing indices for transient ES errors', async () => { + clusterClient.indices.putSettings + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + await retryUntil( + 'space resources initialized', + async () => (await getSpaceResourcesInitialized(assistantService)) === true + ); + + expect(clusterClient.indices.putSettings).toHaveBeenCalledTimes(8); + }); + + test('should retry updating index mappings for existing indices for transient ES errors', async () => { + clusterClient.indices.putMapping + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + await retryUntil( + 'space resources initialized', + async () => (await getSpaceResourcesInitialized(assistantService)) === true + ); + + expect(clusterClient.indices.putMapping).toHaveBeenCalledTimes(8); + }); + + test('should retry creating concrete index for transient ES errors', async () => { + clusterClient.indices.getDataStream.mockImplementation(async () => ({ + data_streams: [], + })); + clusterClient.indices.createDataStream + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + (clusterClient.search as unknown as jest.Mock).mockResolvedValue({ + hits: { hits: [], total: { value: 0 } }, + }); + + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + + await retryUntil( + 'space resources initialized', + async () => (await getSpaceResourcesInitialized(assistantService)) === true + ); + + expect(clusterClient.indices.createDataStream).toHaveBeenCalledTimes(6); + }); + }); +}); diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/README.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/README.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/README.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/README.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0004.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0004.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0004.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0004.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0005.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0005.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0005.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0005.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0006.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0006.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0006.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0006.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0007.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0007.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0007.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0007.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0008.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0008.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0008.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0008.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0009.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0009.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0009.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0009.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0010.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0010.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0010.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0010.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0011.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0011.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0011.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0011.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0012.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0012.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0012.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0012.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0013.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0013.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0013.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0013.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0014.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0014.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0014.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0014.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_announcement.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_announcement.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_announcement.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_announcement.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_helping_security_leaders_navigate_todays_threat_landscape.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_helping_security_leaders_navigate_todays_threat_landscape.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_helping_security_leaders_navigate_todays_threat_landscape.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_helping_security_leaders_navigate_todays_threat_landscape.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/500ms_to_midnight.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/500ms_to_midnight.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/500ms_to_midnight.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/500ms_to_midnight.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/a_peek_behind_the_bpfdoor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/a_peek_behind_the_bpfdoor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/a_peek_behind_the_bpfdoor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/a_peek_behind_the_bpfdoor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/accelerating_elastic_detection_tradecraft_with_llms.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/accelerating_elastic_detection_tradecraft_with_llms.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/accelerating_elastic_detection_tradecraft_with_llms.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/accelerating_elastic_detection_tradecraft_with_llms.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/advanced_techniques_used_in_malaysian_focused_apt_campaign.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/advanced_techniques_used_in_malaysian_focused_apt_campaign.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/advanced_techniques_used_in_malaysian_focused_apt_campaign.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/advanced_techniques_used_in_malaysian_focused_apt_campaign.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/an_elastic_approach_to_large_scale_dynamic_malware_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/an_elastic_approach_to_large_scale_dynamic_malware_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/an_elastic_approach_to_large_scale_dynamic_malware_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/an_elastic_approach_to_large_scale_dynamic_malware_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/analysis_of_log4shell_cve_2021_45046.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/analysis_of_log4shell_cve_2021_45046.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/analysis_of_log4shell_cve_2021_45046.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/analysis_of_log4shell_cve_2021_45046.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/attack_chain_leads_to_xworm_and_agenttesla.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/attack_chain_leads_to_xworm_and_agenttesla.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/attack_chain_leads_to_xworm_and_agenttesla.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/attack_chain_leads_to_xworm_and_agenttesla.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/automating_security_protections_rapid_response_to_malware.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/automating_security_protections_rapid_response_to_malware.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/automating_security_protections_rapid_response_to_malware.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/automating_security_protections_rapid_response_to_malware.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/behind_the_scenes_global_threat_report.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/behind_the_scenes_global_threat_report.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/behind_the_scenes_global_threat_report.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/behind_the_scenes_global_threat_report.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/betting_on_bots.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/betting_on_bots.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/betting_on_bots.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/betting_on_bots.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/beyond_the_wail.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/beyond_the_wail.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/beyond_the_wail.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/beyond_the_wail.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bits_and_bytes_analyzing_bitsloth.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bits_and_bytes_analyzing_bitsloth.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bits_and_bytes_analyzing_bitsloth.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bits_and_bytes_analyzing_bitsloth.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_loader.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_loader.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_loader.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_loader.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_scanner.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_scanner.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_scanner.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_scanner.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bughatch_malware_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bughatch_malware_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bughatch_malware_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bughatch_malware_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/callout_example.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/callout_example.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/callout_example.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/callout_example.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/click_click_boom_automating_protections_testing_with_detonate.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/click_click_boom_automating_protections_testing_with_detonate.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/click_click_boom_automating_protections_testing_with_detonate.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/click_click_boom_automating_protections_testing_with_detonate.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cloud_monitoring_and_detection_with_elastic_security.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cloud_monitoring_and_detection_with_elastic_security.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cloud_monitoring_and_detection_with_elastic_security.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cloud_monitoring_and_detection_with_elastic_security.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cobalt_strike_beacon_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cobalt_strike_beacon_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cobalt_strike_beacon_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cobalt_strike_beacon_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_and_operationalizing_threat_data_from_the_mozi_botnet.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_and_operationalizing_threat_data_from_the_mozi_botnet.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_and_operationalizing_threat_data_from_the_mozi_botnet.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_and_operationalizing_threat_data_from_the_mozi_botnet.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_cobalt_strike_beacons_with_the_elastic_stack.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_cobalt_strike_beacons_with_the_elastic_stack.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_cobalt_strike_beacons_with_the_elastic_stack.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_cobalt_strike_beacons_with_the_elastic_stack.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_campaign_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_campaign_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_campaign_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_campaign_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_malware_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_malware_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_malware_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_malware_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md similarity index 97% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md index 2be741a88b697..aac67e6329fb8 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md @@ -23,6 +23,15 @@ tags: - CVE-2024-47177 --- +## Update October 2, 2024 + +The following packages introduced out-of-the-box (OOTB) rules to detect the exploitation of these vulnerabilities. Please check your "Prebuilt Security Detection Rules" integration versions or visit the [Downloadable rule updates](https://www.elastic.co/guide/en/security/current/prebuilt-rules-downloadable-updates.html) site. + +- Stack Version 8.15 - Package Version 8.15.6+ +- Stack Version 8.14 - Package Version 8.14.12+ +- Stack Version 8.13 - Package Version 8.13.18+ +- Stack Version 8.12 - Package Version 8.12.23+ + ## Key takeaways * On September 26, 2024, security researcher Simone Margaritelli (@evilsocket) disclosed multiple vulnerabilities affecting the `cups-browsed`, `libscupsfilters`, and `libppd` components of the CUPS printing system, impacting versions \<= 2.0.1. @@ -232,4 +241,4 @@ We expect more to be revealed as the initial disclosure was labeled part 1. Ulti * [https://www.cve.org/CVERecord?id=CVE-2024-47176](https://www.cve.org/CVERecord?id=CVE-2024-47176) * [https://www.cve.org/CVERecord?id=CVE-2024-47177](https://www.cve.org/CVERecord?id=CVE-2024-47177) -*The release and timing of any features or functionality described in this post remain at Elastic's sole discretion. Any features or functionality not currently available may not be delivered on time or at all.* \ No newline at end of file +*The release and timing of any features or functionality described in this post remain at Elastic's sole discretion. Any features or functionality not currently available may not be delivered on time or at all.* diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dac_beta_release.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dac_beta_release.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dac_beta_release.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dac_beta_release.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dancing_the_night_away_with_named_pipes.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dancing_the_night_away_with_named_pipes.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dancing_the_night_away_with_named_pipes.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dancing_the_night_away_with_named_pipes.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/deep_dive_into_the_ttd_ecosystem.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/deep_dive_into_the_ttd_ecosystem.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/deep_dive_into_the_ttd_ecosystem.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/deep_dive_into_the_ttd_ecosystem.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_credential_access.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_credential_access.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_credential_access.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_credential_access.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_domain_generation_algorithm_activity_with_new_kibana_integration.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_domain_generation_algorithm_activity_with_new_kibana_integration.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_domain_generation_algorithm_activity_with_new_kibana_integration.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_domain_generation_algorithm_activity_with_new_kibana_integration.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_and_responding_to_dirty_pipe_with_elastic.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_and_responding_to_dirty_pipe_with_elastic.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_and_responding_to_dirty_pipe_with_elastic.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_and_responding_to_dirty_pipe_with_elastic.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_living_off_the_land_attacks_with_new_elastic_integration.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_living_off_the_land_attacks_with_new_elastic_integration.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_living_off_the_land_attacks_with_new_elastic_integration.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_living_off_the_land_attacks_with_new_elastic_integration.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_log4j2_with_elastic_security.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_log4j2_with_elastic_security.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_log4j2_with_elastic_security.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_log4j2_with_elastic_security.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_and_response_for_the_actively_exploited_proxyshell_vulnerabilities.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_and_response_for_the_actively_exploited_proxyshell_vulnerabilities.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_and_response_for_the_actively_exploited_proxyshell_vulnerabilities.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_and_response_for_the_actively_exploited_proxyshell_vulnerabilities.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_rules_for_sigred_vulnerability.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_rules_for_sigred_vulnerability.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_rules_for_sigred_vulnerability.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_rules_for_sigred_vulnerability.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dipping_into_danger.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dipping_into_danger.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dipping_into_danger.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dipping_into_danger.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/disclosing_the_bloodalchemy_backdoor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/disclosing_the_bloodalchemy_backdoor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/disclosing_the_bloodalchemy_backdoor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/disclosing_the_bloodalchemy_backdoor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dismantling_smart_app_control.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dismantling_smart_app_control.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dismantling_smart_app_control.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dismantling_smart_app_control.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_four.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_four.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_four.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_four.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_one.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_one.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_one.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_one.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_three.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_three.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_three.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_three.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_two.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_two.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_two.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_two.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/doing_time_with_the_yipphb_dropper.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/doing_time_with_the_yipphb_dropper.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/doing_time_with_the_yipphb_dropper.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/doing_time_with_the_yipphb_dropper.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/doubling_down_etw_callstacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/doubling_down_etw_callstacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/doubling_down_etw_callstacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/doubling_down_etw_callstacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_code_of_conduct.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_code_of_conduct.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_code_of_conduct.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_code_of_conduct.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_strikes_using_a_new_variant_of_rustbucket.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_strikes_using_a_new_variant_of_rustbucket.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_strikes_using_a_new_variant_of_rustbucket.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_strikes_using_a_new_variant_of_rustbucket.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/effective_parenting_detecting_lrpc_based_parent_pid_spoofing.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/effective_parenting_detecting_lrpc_based_parent_pid_spoofing.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/effective_parenting_detecting_lrpc_based_parent_pid_spoofing.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/effective_parenting_detecting_lrpc_based_parent_pid_spoofing.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_advances_llm_security.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_advances_llm_security.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_advances_llm_security.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_advances_llm_security.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_catches_dprk_passing_out_kandykorn.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_catches_dprk_passing_out_kandykorn.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_catches_dprk_passing_out_kandykorn.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_catches_dprk_passing_out_kandykorn.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_charms_spectralviper.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_charms_spectralviper.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_charms_spectralviper.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_charms_spectralviper.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_protects_against_data_wiper_malware_targeting_ukraine_hermeticwiper.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_protects_against_data_wiper_malware_targeting_ukraine_hermeticwiper.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_protects_against_data_wiper_malware_targeting_ukraine_hermeticwiper.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_protects_against_data_wiper_malware_targeting_ukraine_hermeticwiper.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2023_global_threat_report_spring_edition.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2023_global_threat_report_spring_edition.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2023_global_threat_report_spring_edition.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2023_global_threat_report_spring_edition.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2024_gtr.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2024_gtr.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2024_gtr.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2024_gtr.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md similarity index 99% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md index e0348caa59269..883b84f1eb441 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md @@ -434,7 +434,7 @@ Covering non-commodity malware (APTs, zero-days, etc.) and emerging threats (new The expert tier focuses on advanced automation, seamless integration with other security tools, and continuous improvement through regular updates and external collaboration. While proactive threat hunting is essential for maintaining a solid security posture, it complements the ruleset management process by identifying new patterns and insights that can be incorporated into detection rules. Teams implement sophisticated automation for rule updates, ensuring continuous integration of advanced detections. At Elastic, our team is constantly refining our rulesets through daily triage, regular updates, and sharing [threat hunt queries](https://github.com/elastic/detection-rules/tree/main/hunting) in our public GitHub repository to help the community improve their detection capabilities. -![DEBMM - Tier 4](/assets/images/elastic-releases-debmm/image7.png "DEBMM - Tier 4") +![DEBMM - Tier 4](/assets/images/elastic-releases-debmm/image1.png "DEBMM - Tier 4") ##### Criteria @@ -480,11 +480,11 @@ Once you understand the DEBMM and its tiers, you can begin applying it to assess The following steps will guide you through the process: -**1. Audit Your Current Maturity Tier**: Evaluate your existing detection rulesets against the criteria outlined in the DEBMM. Identify your rulesets' strengths, weaknesses, and most significant risks to help determine your current maturity tier. For more details, see the [Example Questionnaire](#Example-Questionnaire). +**1. Audit Your Current Maturity Tier:** Evaluate your existing detection rulesets against the criteria outlined in the DEBMM. Identify your rulesets' strengths, weaknesses, and most significant risks to help determine your current maturity tier. For more details, see the [Example Questionnaire](#Example-Questionnaire). -**2. Understand the Scope of Effort: **Recognize the significant and sustained effort required to move from one tier to the next. As teams progress through the tiers, the complexity and depth of activities increase, requiring more resources, advanced skills, and comprehensive strategies. For example, transitioning from Tier 1 to Tier 2 involves systematic rule tuning and detailed gap analysis, while advancing to Tier 3 and Tier 4 requires robust external validation processes, proactive threat hunting, and sophisticated automation. +**2. Understand the Scope of Effort:** Recognize the significant and sustained effort required to move from one tier to the next. As teams progress through the tiers, the complexity and depth of activities increase, requiring more resources, advanced skills, and comprehensive strategies. For example, transitioning from Tier 1 to Tier 2 involves systematic rule tuning and detailed gap analysis, while advancing to Tier 3 and Tier 4 requires robust external validation processes, proactive threat hunting, and sophisticated automation. -**3. Set Goals for Progression: **Define specific goals for advancing to the next tier. Use the qualitative and quantitative measures to set clear objectives for each criterion. +**3. Set Goals for Progression:** Define specific goals for advancing to the next tier. Use the qualitative and quantitative measures to set clear objectives for each criterion. **4. Develop a Roadmap:** Create a detailed plan outlining the actions needed to achieve the goals. Include timelines, resources, and responsible team members. Ensure foundational practices from lower tiers are consistently applied as you progress while identifying opportunities for quick wins or significant impact by first addressing the most critical and riskiest areas for improvement. diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_response_to_the_the_spring4shell_vulnerability_cve_2022_22965.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_response_to_the_the_spring4shell_vulnerability_cve_2022_22965.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_response_to_the_the_spring4shell_vulnerability_cve_2022_22965.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_response_to_the_the_spring4shell_vulnerability_cve_2022_22965.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_discovers_lobshot_malware.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_discovers_lobshot_malware.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_discovers_lobshot_malware.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_discovers_lobshot_malware.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_releases_llm_safety_report.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_releases_llm_safety_report.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_releases_llm_safety_report.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_releases_llm_safety_report.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_steps_through_the_r77_rootkit.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_steps_through_the_r77_rootkit.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_steps_through_the_r77_rootkit.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_steps_through_the_r77_rootkit.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_opens_public_detection_rules_repo.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_opens_public_detection_rules_repo.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_opens_public_detection_rules_repo.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_opens_public_detection_rules_repo.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_research_roundup.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_research_roundup.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_research_roundup.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_research_roundup.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_uncovers_blister_malware_campaign.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_uncovers_blister_malware_campaign.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_uncovers_blister_malware_campaign.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_uncovers_blister_malware_campaign.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_users_protected_from_suddenicon_supply_chain_attack.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_users_protected_from_suddenicon_supply_chain_attack.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_users_protected_from_suddenicon_supply_chain_attack.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_users_protected_from_suddenicon_supply_chain_attack.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastics_2022_global_threat_report_a_roadmap_for_navigating_todays_growing_threatscape.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastics_2022_global_threat_report_a_roadmap_for_navigating_todays_growing_threatscape.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastics_2022_global_threat_report_a_roadmap_for_navigating_todays_growing_threatscape.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastics_2022_global_threat_report_a_roadmap_for_navigating_todays_growing_threatscape.md diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elevate_your_threat_hunting.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elevate_your_threat_hunting.md new file mode 100644 index 0000000000000..dcf4e4839bbf9 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elevate_your_threat_hunting.md @@ -0,0 +1,226 @@ +--- +title: "Elevate Your Threat Hunting with Elastic" +slug: "elevate-your-threat-hunting" +date: "2024-10-18" +description: "Elastic is releasing a threat hunting package designed to aid defenders with proactive detection queries to identify actor-agnostic intrusions." +author: + - slug: terrance-dejesus + - slug: mika-ayenson + - slug: samir-bousseaden + - slug: justin-ibarra +image: "elevate-your-threat-hunting.jpg" +category: + - slug: security-operations +tags: + - threat hunting +--- + +We are excited to announce a new resource in the Elastic [Detection Rules](https://github.com/elastic/detection-rules) repository: a collection of hunting queries powered by various Elastic query languages! + +These hunting queries can be found under the [Hunting](https://github.com/elastic/detection-rules/tree/main/hunting) package. This initiative is designed to empower our community with specialized threat hunting queries and resources across multiple platforms, complementing our robust SIEM and EDR ruleset. These are developed to be consistent with the paradigms and methodologies we discuss in the Elastic [Threat Hunting guide](https://www.elastic.co/security/threat-hunting). + +## Why Threat Hunting? + +Threat hunting is a proactive approach to security that involves searching for hidden threats that evade conventional detection solutions while assuming breach. At Elastic, we recognize the importance of threat hunting in strengthening security defenses and are committed to facilitating this critical activity. + +While we commit a substantial amount of time and effort towards building out resilient detections, we understand that alerting on malicious behavior is only one part of an effective overall strategy. Threat hunting moves the needle to the left, allowing for a more proactive approach to understanding and securing the environment. + +The idea is that the rules and hunt queries will supplement each other in many ways. Most hunts also serve as great pivot points once an alert has triggered, as a powerful means to ascertain related details and paint a full picture. They are just as useful when it comes to triaging as proactively hunting. + +Additionally, we often find ourselves writing resilient and robust logic that just doesn’t meet the criteria for a rule, whether it is too noisy or not specific enough. This will serve as an additional means to preserve the value of these research outcomes in the form of these queries. + +## What We Are Providing + +The new Hunting package provides a diverse range of hunting queries targeting all the same environments as our rules do, and potentially even more, including: + +* Endpoints (Windows, Linux, macOS) +* Cloud (CSPs, SaaS providers, etc.) +* Network +* Large Language Models (LLM) +* Any other Elastic [integration](https://www.elastic.co/integrations) or datasource that adds value + +These queries are crafted by our security experts to help you gather initial data that is required to test your hypothesis during your hunts. These queries also include names and descriptions that may be a starting point for your hunting efforts as well. All of this valuable information is then stored in an index file (both YAML and Markdown) for management, ease-of-use and centralizing our collection of hunting queries. + +### Hunting Package + +The Hunting package has also been made to be its own module within Detection Rules with a few simple commands for easy management and searching throughout the catalogue of hunting queries. Our goal is not to provide an out-of-the-box hunting tool, but rather a foundation for programmatically managing and eventually leveraging these hunting queries. + +Existing Commands: + +**Generate Markdown** - Load TOML files or path of choice and convert to Markdown representation in respective locations. +![](/assets/images/elevate-your-threat-hunting/image6.png "") + +**Refresh Index** - Refresh indexes from the collection of queries, both YAML and Markdown. +![](/assets/images/elevate-your-threat-hunting/image4.png "") + +**Search** - Search for hunting queries based on MITRE tactic, technique or subtechnique IDs. Also includes the ability to search per data source. +![](/assets/images/elevate-your-threat-hunting/image5.png "") + +**Run Query** - Run query of choice against a particular stack to identify hits (requires pre-auth). Generates a search link for easy pivot. +![](/assets/images/elevate-your-threat-hunting/image8.png "") + +**View Hunt**- View a hunting file in TOML or JSON format. +![](/assets/images/elevate-your-threat-hunting/image7.png "") + +**Hunt Summary**- Generate count statistics based on breakdown of integration, platform, or language +![](/assets/images/elevate-your-threat-hunting/image2.png "") + +## Benefits of these Hunt Queries + +Each hunting query will be saved in its respective TOML file for programmatic use, but also have a replicated markdown file that serves as a quick reference for manual tasks or review. We understand that while automation is crucial to hunting maturity, often hunters may want a quick and easy copy-paste job to reveal events of interest. Our collection of hunt queries and CLI options offers several advantages to both novice and experienced threat hunters. Each query in the library is designed to serve as a powerful tool for detecting hidden threats, as well as offering additional layers of investigation during incident response. + +* Programmatic and Manual Flexibility: Each query is structured in a standardized TOML format for programmatic use, but also offers a Markdown version for those who prefer manual interaction. +* Scalable queries: Our hunt queries are designed with scalability in mind, leveraging the power of Elastic’s versatile and latest query languages such as ES|QL. This scalability ensures that you can continuously adapt your hunting efforts as your organization’s infrastructure grows, maintaining high levels of visibility and security. +* Integration with Elastic’s Product: These queries integrate with the Elastic Stack and our automation enables you to test quickly, enabling you to pivot through Elastic’s Security UI for deeper analysis. +* Diverse Query Types Available: Out hunt queries support a wide variety of query languages, including KQL, EQL, ES|QL, OsQuery, and YARA, making them adaptable across different data sources and environments. Whether hunting across endpoints, cloud environments, or specific integrations like Okta or LLMs, users can leverage the right language for their unique needs. +* Extended Coverage for Elastic Prebuilt Rules: While Elastic’s prebuilt detection rules offer robust coverage, there are always scenarios where vendor detection logic may not fully meet operational needs due to the specific environment or nature of the threat. These hunting queries help to fill in those gaps by offering broader and more nuanced coveraged, particularly for behaviors that don’t nearly fit into rule-based detections. +* Stepping stone for hunt initialization or pivoting: These queries serve as an initial approach to kickstart investigations or pivot from initial findings. Whether used proactively to identify potential threats or reactively to expand upon triggered alerts, these queries can provide additional context and insights based on threat hunter hypothesis and workflows. +* MITRE ATT&CK Alignment: Every hunt query includes MITRE ATT&CK mappings to provide contextual insight and help prioritize the investigation of threats according to threat behaviors. +* Community and Maintenance: This hunting module lives within the broader Elastic Detection Rules repository, ensuring continual updates alongside our prebuilt rules. Community contributions also enable our users to collaborate and expand unique ways to hunt. + +As we understand the fast-paced nature of hunting and need for automation, we have included searching capabilities and a run option to quickly identify if you have matching results from any hunting queries in this library. + +## Details of Each Hunting Analytic + +Each hunting search query in our repository includes the following details to maximize its effectiveness and ease of use: + +* **Data Source or Integration**: The origin of the data utilized in the hunt. +* **Name**: A descriptive title for the hunting query. +* **Hypothesis**: The underlying assumption or threat scenario the hunt aims to investigate. This is representated as the description. +* **Query(s)**: Provided in one of several formats, including ES|QL, EQL, KQL, or OsQuery. +* **Notes**: Additional information on how to pivot within the data, key indicators to watch for, and other valuable insights. +* **References**: Links to relevant resources and documentation that support the hunt. +* **Mapping to MITRE ATT&CK**: How the hunt correlates to known tactics, techniques, and procedures in the MITRE ATT&CK framework. + +![](/assets/images/elevate-your-threat-hunting/image9.png "") + +For those who prefer a more hands-on approach, we also provide TOML files for programmatic consumption. Additionally, we offer an easy converter to Markdown for users who prefer to manually copy and paste the hunts into their systems. + +### Hunting Query Creation Example: + +In the following example, we will explore a basic hunting cycle for the purpose of creating a new hunting query that we want to use in later hunting cycles. Note that this is an oversimplified hunting cycle that may require several more steps in a real-world application. + +**Hypothesis**: We assume that a threat adversary (TA) is targeting identity providers (IdPs), specifically Okta, by compromising cloud accounts by identifying runtime instances in CI/CD pipelines that use client credentials for authentication with Okta’s API. Their goal is to identify unsecure credentials, take these and obtain an access token whose assumed credentials are tied to an Okta administrator. + +**Evidence**: We suspect that in order to identify evidence of this, we need Okta system logs that report API activity, specifically any public client app sending access token requests where the grant type provided are client credentials. We also suspect that because the TA is unaware of the mapped OAuth scopes for this application, that when the access token request is sent, it may fail due to the incorrect OAuth scopes being explicitly sent. We also know that demonstrating proof-of-possession (DPoP) is not required for our client applications during authentication workflow because doing so would be disruptive to operations so we prioritize operability over security. + +Below is the python code used to emulate the behavior of attempting to get an access token with stolen client credentials where the scope is `okta.trustedOrigins.manage` so the actor can add a new cross-origins (CORS) policy and route client authentication through their own server. + +``` +import requests + +okta_domain = "TARGET_DOMAIN" +client_id = "STOLEN_CLIENT_ID" +client_secret = "STOLEN_CLIENT_CREDENTIALS" + +# Prepare the request +auth_url = f"{okta_domain}/oauth2/default/v1/token" +auth_data = { + "grant_type": "client_credentials", + "scope": "okta.trustedOrigins.manage" +} +auth_headers = { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + "Authorization": f"Basic {client_id}:{client_secret}" +} +# Make the request +response = requests.post(auth_url, headers=auth_headers, data=auth_data) + +# Handle the response +if response.ok: + token = response.json().get("access_token") + print(f"Token: {token}") +else: + print(f"Error: {response.text}") +``` + +Following this behavior, we formulate a query as such for hunting where we filter out some known client applications like DataDog and Elastic’s Okta integrations. + +``` +from logs-okta.system* +| where @timestamp > NOW() - 7 day +| where + event.dataset == "okta.system" + + // filter on failed access token grant requests where source is a public client app + and event.action == "app.oauth2.as.token.grant" + and okta.actor.type == "PublicClientApp" + and okta.outcome.result == "FAILURE" + + // filter out known Elastic and Datadog actors + and not ( + okta.actor.display_name LIKE "Elastic%" + or okta.actor.display_name LIKE "Datadog%" + ) + + // filter for scopes that are not implicitly granted + and okta.outcome.reason == "no_matching_scope" +``` + +As shown below, we identify matching results and begin to pivot and dive deeper into this investigation, eventually involving incident response (IR) and escalating appropriately. + +![](/assets/images/elevate-your-threat-hunting/image10.png "") + +During our after actions report (AAR), we take note of the query that helped identify these compromised credentials and decide to preserve this as a hunting query in our forked Detection Rules repository. It doesn’t quite make sense to create a detection rule based on the fidelity of this and knowing the constant development work we do with custom applications that interact with the Okta APIs, therefore we reserve it as a hunting query. + +Creating a new hunting query TOML file in the `hunting/okta/queries` package, we add the following information: + +``` +author = "EvilC0rp Defenders" +description = """Long Description of Hunt Intentions""" +integration = ["okta"] +uuid = "0b936024-71d9-11ef-a9be-f661ea17fbcc" +name = "Failed OAuth Access Token Retrieval via Public Client App" +language = ["ES|QL"] +license = "Apache License 2.0" +notes = [Array of useful notes from our investigation] +mitre = ['T1550.001'] +query = [Our query as shown above] +``` + +With the file saved we run `python -m hunting generate-markdown FILEPATH` to generate the markdown version of it in `hunting/okta/docs/`. + +![](/assets/images/elevate-your-threat-hunting/image1.png "") + +Once saved, we can view our new hunting content by using the `view-rule` command or search for it by running the `search` command, specifying Okta as the data source and [T1550.001](https://attack.mitre.org/techniques/T1550/001/) as the subtechnique we are looking for. + +![](/assets/images/elevate-your-threat-hunting/image7.png "") + +![](/assets/images/elevate-your-threat-hunting/image5.png "") + +Last but not least, we can check that the query runs successfully by using the `run-query` command as long as we save a `.detection-rules-cfg-yaml` file with our Elasticsearch authentication details, which will tell us if we have matching results or not. + +![](/assets/images/elevate-your-threat-hunting/image8.png "") + +Now we can refresh our hunting indexes with the `refresh-index` command and ensure that our markdown file has been created. + +![](/assets/images/elevate-your-threat-hunting/image11.png "") + +## How We Plan to Expand + +Our aim is to continually enhance the Hunting package with additional queries, covering an even wider array of threat scenarios. We will update this resource based on: + +* **Emerging Threats**: Developing new queries as new types of cyber threats arise. +* **Community Feedbac**k: Incorporating suggestions and improvements proposed by our community. +* **Fill Gaps Where Traditional alerting Fails**: While we understand the power of our advanced SIEM and EDR, we also understand how some situations favor hunting instead. +* **Longevity and Maintenance**: Our hunting package lives within the very same repository we actively manage our out-of-the-box (OOTB) prebuilt detection rules for the Elastic SIEM. As a result, we plan to routinely add and update our hunting resources. +* **New Features**: Develop new features and commands to aid users with the repository of their hunting efforts. + +Our expansion would not be complete without sharing to the rest of the community in an effort to provide value wherever possible. The adoption of these resources or even paradigms surrounding threat scenarios is an important effort by our team to help hunting efforts. + +Lastly, we acknowledge and applaud the existing hunting efforts done or in-progress by our industry peers and community. We also acknowledge that maintaining such a package of hunting analytics and/or queries requires consistency and careful planning. Thus this package will receive continued support and additional hunting queries added over time, often aligning with our detection research efforts or community submissions! + +## Get Involved + +Explore the Hunting resources, utilize the queries and python package, participate in our community discussion forums to share your experiences and contribute to the evolution of this resource. Your feedback is crucial for us to refine and expand our offerings. + +* [Detection Rules Community Slack Channel](https://elasticstack.slack.com/archives/C016E72DWDS) +* Hunting “[Getting Started](https://github.com/elastic/detection-rules/tree/main/hunting)” Doc +* [Elastic Security Labs](https://twitter.com/elasticseclabs) on X + +## Conclusion + +With the expansion of these hunting resources, Elastic reaffirms its commitment to advancing cybersecurity defenses. This resource is designed for both experienced threat hunters and those new to the field, providing the tools needed to detect and mitigate sophisticated cyber threats effectively. + +Stay tuned for more updates, and happy hunting! \ No newline at end of file diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md similarity index 96% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md index f211ccf4f21ae..2a5c78a686f81 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md @@ -22,16 +22,16 @@ We recently concluded one of our quarterly Elastic OnWeek events, which provides Elastic provides the ability to audit LLM applications for malicious behaviors; we’ll show you one approach with just four steps: - 1. Intercepting and analyzing the LLM requests and responses + 1. Intercepting and analyzing the LLM requests and responses 2. Enriching data with LLM-specific analysis results 3. Sending data to Elastic Security - 4. Writing ES|QL detection rules that can later be used to respond + 4. Writing ES|QL detection rules that can later be used to respond -This approach reflects our ongoing efforts to explore and implement advanced detection strategies, including developing detection rules tailored specifically for LLMs, while keeping pace with emerging generative AI technologies and security challenges. Building on this foundation, last year marked a significant enhancement to our toolkit and overall capability to continue this proactive path forward. +This approach reflects our ongoing efforts to explore and implement advanced detection strategies, including developing detection rules tailored specifically for LLMs, while keeping pace with emerging generative AI technologies and security challenges. Building on this foundation, last year marked a significant enhancement to our toolkit and overall capability to continue this proactive path forward. Elastic [released](https://www.elastic.co/blog/introducing-elastic-ai-assistant) the AI Assistant for Security, introducing how the open generative AI sidekick is powered by the [Search AI Platform](https://www.elastic.co/platform) — a collection of relevant tools for developing advanced search applications. Backed by machine learning (ML) and artificial intelligence (AI), this AI Assistant provides powerful pre-built workflows like alert summarization, workflow suggestions, query conversions, and agent integration advice. I highly recommend you read more on Elastic’s [AI Assistant](https://www.elastic.co/elasticsearch/ai-assistant) about how the capabilities seamlessly span across Observability and Security. -We can use the AI Assistant’s capabilities as a third-party LLM application to capture, audit, and analyze requests and responses for convenience and to run experiments. Once data is in an index, writing behavioral detections on it becomes business as usual — we can also leverage the entire security detection engine. Even though we’re proxying the Elastic AI Assistant LLM activity in this experiment, it’s merely used as a vehicle to demonstrate auditing LLM-based applications. Furthermore, this proxy approach is intended for third-party applications to ship data to [Elastic Security](https://www.elastic.co/guide/en/security/current/es-overview.html). +We can use the AI Assistant’s capabilities as a third-party LLM application to capture, audit, and analyze requests and responses for convenience and to run experiments. Once data is in an index, writing behavioral detections on it becomes business as usual — we can also leverage the entire security detection engine. Even though we’re proxying the Elastic AI Assistant LLM activity in this experiment, it’s merely used as a vehicle to demonstrate auditing LLM-based applications. Furthermore, this proxy approach is intended for third-party applications to ship data to [Elastic Security](https://www.elastic.co/guide/en/security/current/es-overview.html). We can introduce security mechanisms into the application's lifecycle by intercepting LLM activity or leveraging observable LLM metrics. It’s common practice to address prompt-based threats by [implementing various safety tactics](https://platform.openai.com/docs/guides/safety-best-practices): @@ -46,18 +46,18 @@ We can introduce security mechanisms into the application's lifecycle by interce 9. **HITL Feedback for Model Training**: Learn from human-in-the-loop, flagged issues to refine the model over time 10. **Restrict API Access**: Limit model access based on specific needs and user verification -Two powerful features provided by OpenAI, and many other LLM implementers, is the ability to [submit end-user IDs](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids) and check content against a [moderation API](https://platform.openai.com/docs/guides/moderation), features that set the bar for LLM safety. Sending hashed IDs along with the original request aids in abuse detection and provides targeted feedback, allowing unique user identification without sending personal information. Alternatively, OpenAI's moderation endpoint helps developers identify potentially harmful content like hate speech, self-harm encouragement, or violence, allowing them to filter such content. It even goes a step further by detecting threats and intent to self-harm. +Two powerful features provided by OpenAI, and many other LLM implementers, is the ability to [submit end-user IDs](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids) and check content against a [moderation API](https://platform.openai.com/docs/guides/moderation), features that set the bar for LLM safety. Sending hashed IDs along with the original request aids in abuse detection and provides targeted feedback, allowing unique user identification without sending personal information. Alternatively, OpenAI's moderation endpoint helps developers identify potentially harmful content like hate speech, self-harm encouragement, or violence, allowing them to filter such content. It even goes a step further by detecting threats and intent to self-harm. -Despite all of the recommendations and best practices to protect against malicious prompts, we recognize that there is no single perfect solution. When using capabilities like OpenAI’s API, some of these threats may be detected by the content filter, which will respond with a usage policy violation notification: +Despite all of the recommendations and best practices to protect against malicious prompts, we recognize that there is no single perfect solution. When using capabilities like OpenAI’s API, some of these threats may be detected by the content filter, which will respond with a usage policy violation notification: ![Violation notification from OpenAI](/assets/images/embedding-security-in-llm-workflows/image5.png) -This content filtering is beneficial to address many issues; however, it cannot identify further threats in the broader context of the environment, application ecosystem, or other alerts that may appear. The more we can integrate generative AI use cases into our existing protection capabilities, the more control and possibilities we have to address potential threats. Furthermore, even if LLM safeguards are in place to stop rudimentary attacks, we can still use the detection engine to alert and take future remediation actions instead of silently blocking or permitting abuse. +This content filtering is beneficial to address many issues; however, it cannot identify further threats in the broader context of the environment, application ecosystem, or other alerts that may appear. The more we can integrate generative AI use cases into our existing protection capabilities, the more control and possibilities we have to address potential threats. Furthermore, even if LLM safeguards are in place to stop rudimentary attacks, we can still use the detection engine to alert and take future remediation actions instead of silently blocking or permitting abuse. ## Proxying LLM Requests and Setup -The optimal security solution integrates additional safeguards directly within the LLM application's ecosystem. This allows enriching alerts with the complete context surrounding requests and responses. As requests are sent to the LLM, we can intercept and analyze them for potential malicious activity. If necessary, a response action can be triggered to defer subsequent HTTP calls. Similarly, inspecting the LLM's response can uncover further signs of malicious behavior. +The optimal security solution integrates additional safeguards directly within the LLM application's ecosystem. This allows enriching alerts with the complete context surrounding requests and responses. As requests are sent to the LLM, we can intercept and analyze them for potential malicious activity. If necessary, a response action can be triggered to defer subsequent HTTP calls. Similarly, inspecting the LLM's response can uncover further signs of malicious behavior. Using a proxy to handle these interactions offers several advantages: @@ -123,7 +123,7 @@ def azure_openai_proxy(): }) ``` -With the Flask server, you can configure the [OpenAI Kibana Connector](https://www.elastic.co/guide/en/kibana/current/openai-action-type.html) to use your proxy. +With the Flask server, you can configure the [OpenAI Kibana Connector](https://www.elastic.co/guide/en/kibana/current/openai-action-type.html) to use your proxy. ![](/assets/images/embedding-security-in-llm-workflows/image10.png) @@ -148,7 +148,7 @@ The LangSmith Proxy is designed to simplify LLM API interaction. It's a sidecar **It’s important to understand that even though documented lists of protections do not accompany some LLMs, simply trying some of these prompts may be immediately denied or result in banning on whatever platform used to submit the prompt. We recommend experimenting with caution and understand the SLA prior to sending any malicious prompts. Since this exploration leverages OpenAI’s resources, we recommend following the bugcrowd [guidance](https://bugcrowd.com/openai) and sign up for an additional testing account using your @bugcrowdninja.com email address.** -Here is a list of several plausible examples to illustrate detection opportunities. Each LLM topic includes the OWASP description, an example prompt, a sample document, the detection opportunity, and potential actions users could take if integrating additional security mechanisms in their workflow. +Here is a list of several plausible examples to illustrate detection opportunities. Each LLM topic includes the OWASP description, an example prompt, a sample document, the detection opportunity, and potential actions users could take if integrating additional security mechanisms in their workflow. While this list is currently not extensive, Elastic Security Labs is currently undertaking a number of initiatives to ensure future development, and formalization of rules will continue. @@ -175,7 +175,7 @@ FROM azure-openai-logs | OR response.choices LIKE "*I'm sorry, but I can't assist*" ``` -A slightly more advanced query detects more than two similar attempts within the last day. +A slightly more advanced query detects more than two similar attempts within the last day. ``` sql FROM azure-openai-logs @@ -197,7 +197,7 @@ FROM azure-openai-logs **Sample Response**: ![](/assets/images/embedding-security-in-llm-workflows/image17.png) -With the additional analysis from OpenAI’s filtering, we can immediately detect the first occurrence of abuse. +With the additional analysis from OpenAI’s filtering, we can immediately detect the first occurrence of abuse. **Detection Rule Opportunity**: ``` sql @@ -241,7 +241,7 @@ This query detects suspicious behavior related to Molotov Cocktails across multi - **Session-Level Analysis**: By grouping events by connectorId, it analyzes the complete sequence of attempts within a session. It then calculates the total number of attempts (```attempts = count(*)```) and the highest sensitivity score (```max_sensitivity = max(analysis.llm_guard_response_scores.Sensitive)```) across all attempts in that session - **Flagging High-Risk Sessions**: It filters sessions with at least one attempt (```attempts >= 1```) and a maximum sensitivity score exceeding 0.5 (```max_sensitivity > 0.5```). This threshold helps focus on sessions where users persistently discussed or revealed potentially risky content. -By analyzing these factors across multiple events within a session, we can start building an approach to detect a pattern of escalating discussions, even if individual events might not be flagged alone. +By analyzing these factors across multiple events within a session, we can start building an approach to detect a pattern of escalating discussions, even if individual events might not be flagged alone. ### LLM02 - insecure output handling @@ -280,13 +280,13 @@ FROM azure-openai-logs | WHERE total_attempts >= 2 ``` -This pseudo query detects potential insecure output handling by identifying LLM responses containing scripting elements or cookie access attempts, which are common in Cross-Site Scripting (XSS) attacks. It is a shell that could be extended by allow or block lists for well-known keywords. +This pseudo query detects potential insecure output handling by identifying LLM responses containing scripting elements or cookie access attempts, which are common in Cross-Site Scripting (XSS) attacks. It is a shell that could be extended by allow or block lists for well-known keywords. ### LLM04 - model DoS **OWASP Description**: Overloading LLMs with resource-heavy operations can cause service disruptions and increased costs. Reference [here](https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/blob/main/2_0_vulns/LLM04_ModelDoS.md). -**Example**: An adversary may send complex prompts that consume excessive computational resources. +**Example**: An adversary may send complex prompts that consume excessive computational resources. **Prompt**: ![](/assets/images/embedding-security-in-llm-workflows/image2.png) @@ -304,9 +304,9 @@ FROM azure-openai-logs | WHERE total_attempts >= 2 ``` -This detection illustrates another simple example of how the LLM response is used to identify potentially abusive behavior. Although this example may not represent a traditional security threat, it could emulate how adversaries can impose costs on victims, either consuming resources or tokens. +This detection illustrates another simple example of how the LLM response is used to identify potentially abusive behavior. Although this example may not represent a traditional security threat, it could emulate how adversaries can impose costs on victims, either consuming resources or tokens. -**Example 2**: An adversary may send complex prompts that consume excessive computational resources. +**Example 2**: An adversary may send complex prompts that consume excessive computational resources. **Prompt**: ![](/assets/images/embedding-security-in-llm-workflows/image16.png) @@ -314,7 +314,7 @@ This detection illustrates another simple example of how the LLM response is use **Sample Response**: ![](/assets/images/embedding-security-in-llm-workflows/image14.png) -At a glance, this prompt appears to be benign. However, excessive requests and verbose responses in a short time can significantly increase costs. +At a glance, this prompt appears to be benign. However, excessive requests and verbose responses in a short time can significantly increase costs. **Detection Rule Opportunity**: @@ -332,7 +332,7 @@ In the context of example 2, this working query efficiently tracks and analyzes **OWASP Description**: Failure to protect against disclosure of sensitive information in LLM outputs can result in legal consequences or a loss of competitive advantage. Reference [here](https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/blob/main/2_0_vulns/LLM06_SensitiveInformationDisclosure.md). -**Example**: An adversary may craft prompts to extract sensitive information embedded in the training data. +**Example**: An adversary may craft prompts to extract sensitive information embedded in the training data. **Prompt**: ![](/assets/images/embedding-security-in-llm-workflows/image1.png) @@ -359,8 +359,8 @@ By routing LLM requests through a proxy, we can capitalize on specialized securi We don’t deep-dive on every tool available, but several open-source tools have emerged to offer varying approaches to analyzing and securing LLM interactions. Some of these tools are backed by machine learning models trained to detect malicious prompts: - - **Rebuff** ([GitHub](https://github.com/protectai/rebuff)): Utilizes machine learning to identify and mitigate attempts at social engineering, phishing, and other malicious activities through LLM interactions. Example usage involves passing request content through Rebuff's analysis engine and tagging requests with a "malicious" boolean field based on the findings. - - **LLM-Guard** ([GitHub](https://github.com/protectai/llm-guard)): Provides a rule-based engine for detecting harmful patterns in LLM requests. LLM-Guard can categorize detected threats based on predefined categories, enriching requests with detailed threat classifications. + - **Rebuff** ([GitHub](https://github.com/protectai/rebuff)): Utilizes machine learning to identify and mitigate attempts at social engineering, phishing, and other malicious activities through LLM interactions. Example usage involves passing request content through Rebuff's analysis engine and tagging requests with a "malicious" boolean field based on the findings. + - **LLM-Guard** ([GitHub](https://github.com/protectai/llm-guard)): Provides a rule-based engine for detecting harmful patterns in LLM requests. LLM-Guard can categorize detected threats based on predefined categories, enriching requests with detailed threat classifications. - **LangKit** ([GitHub](https://github.com/whylabs/langkit/tree/main)): A toolkit designed for monitoring and securing LLMs, LangKit can analyze request content for signs of adversarial inputs or unintended model behaviors. It offers hooks for integrating custom analysis functions. - **Vigil-LLM** ([GitHub](https://github.com/deadbits/vigil-llm)): Focuses on real-time monitoring and alerting for suspicious LLM requests. Integration into the proxy layer allows for immediate flagging potential security issues, enriching the request data with vigilance scores. - **Open-Prompt Injection** ([GitHub](https://github.com/liu00222/Open-Prompt-Injection)): Offers methodologies and tools for detecting prompt injection attacks, allowing for the enrichment of request data with specific indicators of compromise related to prompt injection techniques. @@ -463,9 +463,9 @@ In Part two of this series, we will discuss how we’ve taken a more formal appr ## Alternative Options for LLM Application Auditing -While using a proxy may be straightforward, other approaches may better suit a production setup; for example: +While using a proxy may be straightforward, other approaches may better suit a production setup; for example: - - Utilizing [application performance monitoring](https://www.elastic.co/observability/application-performance-monitoring) (APM) + - Utilizing [application performance monitoring](https://www.elastic.co/observability/application-performance-monitoring) (APM) - Using the OpenTelemetry integration - Modifying changes in Kibana directly to audit and trace LLM activity @@ -477,17 +477,17 @@ Elastic [APM](https://www.elastic.co/guide/en/observability/current/apm.html) pr ### Utilizing OpenTelemetry for Enhanced Observability -For applications already employing OpenTelemetry, leveraging its [integration](https://www.elastic.co/guide/en/observability/current/apm-open-telemetry.html) with Elastic APM can enhance observability without requiring extensive instrumentation changes. This integration supports capturing a wide array of telemetry data, including traces and metrics, which can be seamlessly sent to the Elastic Stack. This approach allows developers to continue using familiar libraries while benefiting from the robust monitoring capabilities of Elastic. OpenTelemetry’s compatibility across multiple programming languages and its [support through Elastic’s native protocol](https://www.elastic.co/guide/en/observability/current/apm-open-telemetry.html) (OTLP) facilitate straightforward data transmission, providing a robust foundation for monitoring distributed systems. Compared to the proxy example, this approach more natively ingests data than maintaining an independent index and logging mechanism to Elastic. +For applications already employing OpenTelemetry, leveraging its [integration](https://www.elastic.co/guide/en/observability/current/apm-open-telemetry.html) with Elastic APM can enhance observability without requiring extensive instrumentation changes. This integration supports capturing a wide array of telemetry data, including traces and metrics, which can be seamlessly sent to the Elastic Stack. This approach allows developers to continue using familiar libraries while benefiting from the robust monitoring capabilities of Elastic. OpenTelemetry’s compatibility across multiple programming languages and its [support through Elastic’s native protocol](https://www.elastic.co/guide/en/observability/current/apm-open-telemetry.html) (OTLP) facilitate straightforward data transmission, providing a robust foundation for monitoring distributed systems. Compared to the proxy example, this approach more natively ingests data than maintaining an independent index and logging mechanism to Elastic. ### LLM Auditing with Kibana -Like writing custom logic for your LLM application to audit and ship data, you can test the approach with Elastic’s AI Assistant. If you're comfortable with TypeScript, consider deploying a local Elastic instance using the Kibana [Getting Started Guide](https://www.elastic.co/guide/en/kibana/current/development-getting-started.html). Once set up, navigate to the [Elastic AI Assistant](https://github.com/elastic/kibana/tree/main/x-pack/plugins/elastic_assistant) and configure it to intercept LLM requests and responses for auditing and analysis. Note: This approach primarily tracks Elastic-specific LLM integration compared to using APM and other integrations or a proxy to track third-party applications. It should only be considered for experimentation and exploratory testing purposes. +Like writing custom logic for your LLM application to audit and ship data, you can test the approach with Elastic’s AI Assistant. If you're comfortable with TypeScript, consider deploying a local Elastic instance using the Kibana [Getting Started Guide](https://www.elastic.co/guide/en/kibana/current/development-getting-started.html). Once set up, navigate to the [Elastic AI Assistant](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/elastic_assistant) and configure it to intercept LLM requests and responses for auditing and analysis. Note: This approach primarily tracks Elastic-specific LLM integration compared to using APM and other integrations or a proxy to track third-party applications. It should only be considered for experimentation and exploratory testing purposes. -Fortunately, Kibana is already instrumented with APM, so if you configure an APM server, you will automatically start ingesting logs from this source (by setting ```elastic.apm.active: true```). See the [README](https://github.com/elastic/kibana/blob/main/x-pack/plugins/elastic_assistant/server/lib/langchain/tracers/README.mdx) for more details. +Fortunately, Kibana is already instrumented with APM, so if you configure an APM server, you will automatically start ingesting logs from this source (by setting ```elastic.apm.active: true```). See the [README](https://github.com/elastic/kibana/blob/main/x-pack/platform/packages/shared/kbn-langchain/server/tracers/README.mdx) for more details. ## Closing Thoughts -As we continue with this exploration into integrating security practices within the lifecycle of large language models at Elastic, it's clear that embedding security into LLM workflows can provide a path forward for creating safer and more reliable applications. These contrived examples, drawn from our work during OnWeek, illustrate how someone can proactively detect, alert, and triage malicious activity, leveraging the security solutions that analysts find most intuitive and effective. +As we continue with this exploration into integrating security practices within the lifecycle of large language models at Elastic, it's clear that embedding security into LLM workflows can provide a path forward for creating safer and more reliable applications. These contrived examples, drawn from our work during OnWeek, illustrate how someone can proactively detect, alert, and triage malicious activity, leveraging the security solutions that analysts find most intuitive and effective. It’s also worth noting that with the example proxy approach, we can incorporate a model to actively detect and prevent requests. Additionally, we can triage the LLM response before sending it back to the user if we’ve identified malicious threats. At this point, we have the flexibility to extend our security protections to cover a variety of defensive approaches. In this case, there is a fine line between security and performance, as each additional check will consume time and impede the natural conversational flow that users would expect. diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embracing_offensive_tooling_building_detections_against_koadic_using_eql.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embracing_offensive_tooling_building_detections_against_koadic_using_eql.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embracing_offensive_tooling_building_detections_against_koadic_using_eql.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embracing_offensive_tooling_building_detections_against_koadic_using_eql.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_dynamic_configuration_extraction.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_dynamic_configuration_extraction.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_dynamic_configuration_extraction.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_dynamic_configuration_extraction.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_applications_of_chatgpt_to_improve_detection_response_and_understanding.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_applications_of_chatgpt_to_improve_detection_response_and_understanding.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_applications_of_chatgpt_to_improve_detection_response_and_understanding.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_applications_of_chatgpt_to_improve_detection_response_and_understanding.md diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_aws_sts_assumeroot.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_aws_sts_assumeroot.md new file mode 100644 index 0000000000000..b00b2cc5938a4 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_aws_sts_assumeroot.md @@ -0,0 +1,363 @@ +--- +title: "Exploring AWS STS AssumeRoot" +subtitle: "AssumeRoot Abuse and Detection Strategies in AWS Organizations" +slug: "exploring-aws-sts-assumeroot" +date: "2024-12-09" +description: "Explore AWS STS AssumeRoot, its risks, detection strategies, and practical scenarios to secure against privilege escalation and account compromise using Elastic's SIEM and CloudTrail data." +author: + - slug: terrance-dejesus +image: "Security Labs Images 20.jpg" +category: + - slug: security-research +--- + +## Preamble + +Welcome to another installment of AWS detection engineering with Elastic. This article will dive into the new AWS [Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) (STS) API operation, [AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html), simulate some practical behavior in a sandbox AWS environment, and explore detection capabilities within Elastic’s SIEM. + +What to expect from this article: + +* Basic insight into AWS STS web service +* Insight into STS’ AssumeRoot API operation +* Threat scenario using AssumeRoot with Terraform and Python code +* Detection and hunting opportunities for potential AssumeRoot abuse + +## Understanding AWS STS and the AssumeRoot API + +AWS Security Token Service (STS) is a web service that enables users, accounts, and roles to request temporary, limited-privilege credentials. For IAM users, their accounts are typically registered in AWS Identity and Access Management (IAM), where either a login profile is attached for accessing the console or access keys, and secrets are created for programmatic use by services like Lambda, EC2, and others. + +While IAM credentials are persistent, [**STS credentials**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html#sts-regionalization) are temporary. These credentials \- comprising an access key, secret key, and session token \- are granted upon request and are valid for a specific period. Requests are typically sent to the global `sts.amazonaws.com` endpoint, which responds with temporary credentials for a user or role. These credentials can then be used to access other AWS services on behalf of the specified user or role, as long as the action is explicitly allowed by the associated permission policy. + +This process is commonly known as assuming a role, executed via the [`AssumeRole`](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API. It is frequently used in AWS environments and organizations for various scenarios. For example: + +* An EC2 instance with an attached role will automatically use `AssumeRole` to retrieve temporary credentials for API requests. +* Similarly, Lambda functions often invoke `AssumeRole` to authenticate and perform their designated actions. + +Although `AssumeRole` is incredibly useful, it can pose a risk if roles are over-permissioned by the organization. Misconfigured policies with excessive permissions can allow adversaries to abuse these roles, especially in environments where the [Principle of Least Privilege](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_permissions_least_privileges.html) (PoLP) is not strictly enforced. Note that the security risks associated with AssumeRole are typically attributed to misconfigurations or not following best security practices by organizations. These are not the result of AssumeRole or even AssumeRoot development decisions. + +### Introduction to AssumeRoot + +AWS recently introduced the `AssumeRoot` API operation to STS. Similar to `AssumeRole`, it allows users to retrieve temporary credentials \- but specifically for the [root user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) of a member account in an AWS organization. + +### What Are Member Accounts? + +In AWS, [member accounts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_access.html) are separate accounts within an organization that have their own IAM users, services, and roles. These accounts are distinct from the management account, but they still fall under the same organizational hierarchy. Each AWS organization is created with a unique root account tied to the email address used during its setup. Similarly, every member account requires a root user or email address at the time of its creation, effectively establishing its own root identity. + +### How Does AssumeRoot Work? + +When a privileged user in the management account needs root-level privileges for a member account, they can use the `AssumeRoot` API to retrieve temporary credentials for the member account's root user. Unlike `AssumeRole`, where the target principal is a user ARN, the target principal for `AssumeRoot` is the member account ID itself. Additionally, a task policy ARN must be specified, which defines the specific permissions allowed with the temporary credentials. + +Here are the available task policy ARNs for `AssumeRoot`: + +* [IAMAuditRootUserCredentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-IAMAuditRootUserCredentials) +* [IAMCreateRootUserPassword](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-IAMCreateRootUserPassword) +* [IAMDeleteRootUserCredentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-IAMDeleteRootUserCredentials) +* [S3UnlockBucketPolicy](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-S3UnlockBucketPolicy) +* [SQSUnlockQueuePolicy](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-SQSUnlockQueuePolicy) + +### Potential Abuse of Task Policies + +While these predefined task policies limit what can be done with `AssumeRoot`, their scope can still be theoretically abused in the right circumstances. For example: + +* **IAMCreateRootUserPassword**: This policy grants the [`iam:CreateLoginProfile`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html) permission, allowing the creation of a login profile for a user that typically doesn't require console access. If an adversary gains access to programmatic credentials, they could create a login profile and gain console access to the account that is more persistent. +* **IAMDeleteRootUserCredentials**: This policy allows the deletion of root credentials, but also grants permissions like [`iam:ListAccessKeys`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) and [`iam:ListMFADevices`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADevices.html). These permissions could help an adversary gather critical information about access credentials or MFA configurations for further exploitation. + +## AssumeRoot in Action + +Now that we understand how AssumeRoot works at a high level, how it differs from AssumeRole, and the potential risks associated with improper security practices, let’s walk through a practical scenario to simulate its usage. It should be noted that this is one of many potential scenarios where AssumeRoot may or could be abused. As of this article's publication, no active abuse has been reported in the wild, as expected with a newer AWS functionality. + +Below is a simple depiction of what we will accomplish in the following sections: + +![AssumeRoot scenario workflow](/assets/images/exploring-aws-sts-assumeroot/image3.png) + +Before diving in, it’s important to highlight that we’re using an admin-level IAM user configured as the default profile for our local AWS CLI. This setup enables us to properly configure the environment using [Terraform](https://developer.hashicorp.com/terraform) and simulate potential threat scenarios in AWS for detection purposes. + +### Member Account Creation + +The first step is to enable centralized root access for member accounts, as outlined in the [AWS documentation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts.html). Centralized root access allows us to group all AWS accounts into a single organization, with each member account having its own root user. + +Next, we manually create a member account within our organization through the Accounts section in the AWS Management Console. For this scenario, the key requirement is to note the member account ID, a unique 12-digit number. For our example, we’ll assume this ID is `000000000001` and name it *AWSAssumeRoot*. Centralized management of AWS accounts is a common practice for organizations that may separate different operational services into separate AWS accounts but want to maintain centralized management. + +![AWS console showing management account and member account *AWSAssumeRoot*](/assets/images/exploring-aws-sts-assumeroot/image4.png) + +We also add the member account as the [delegated administrator](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_delegate_policies.html) for centralized root access as well, which allows that root member account to have centralized root access for any other member accounts of the organization. + +While we won’t cover it in depth, we have also enabled the new [Resource control policies](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCPs) within Identity and Access Management (IAM), which will allow central administration over permissions granted to resources within accounts in our organization, but by default, the *RCPFullAWSAccess* policy allows all permissions to all services for all principals and is attached directly to root. + +### Environment Setup + +For our simulation, we use Terraform to create an overly permissive IAM user named compromised\_user. This user is granted the predefined [AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html) policy, which provides admin-level privileges. Additionally, we generated an access key for this user while intentionally omitting a login profile to reflect a typical setup where credentials are used programmatically. This is not an uncommon practice, especially in developer environments. + +Below is the `main.tf` configuration used to create the resources: + +``` +provider "aws" { + region = var.region +} + +data "aws_region" "current" {} + +# Create an IAM user with AdministratorAccess (simulated compromised user) +resource "aws_iam_user" "compromised_user" { + name = "CompromisedUser" +} + +# Attach AdministratorAccess Policy to the compromised user +resource "aws_iam_user_policy_attachment" "compromised_user_policy" { + user = aws_iam_user.compromised_user.name + policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess" +} + +# Create access keys for the compromised user +resource "aws_iam_access_key" "compromised_user_key" { + user = aws_iam_user.compromised_user.name +} +``` + +We also define an `outputs.tf` file to capture key details about the environment, such as the region, access credentials, and the user ARN: + +``` +output "aws_region" { + description = "AWS Region where the resources are deployed" + value = var.region +} + +output "compromised_user_access_key" { + value = aws_iam_access_key.compromised_user_key.id + sensitive = true + description = "Access key for the compromised IAM user" +} + +output "compromised_user_secret_key" { + value = aws_iam_access_key.compromised_user_key.secret + sensitive = true + description = "Secret key for the compromised IAM user" +} + +output "compromised_user_name" { + value = aws_iam_user.compromised_user.name + description = "Name of the compromised IAM user" +} + +output "compromised_user_arn" { + value = aws_iam_user.compromised_user.arn + description = "ARN of the compromised IAM user" +} +``` + +Once we run `terraform apply`, the configuration creates a highly permissive IAM user (`compromised_user`) with associated credentials. These credentials simulate those that an adversary might obtain for initial access or escalating privileges. + +This is one of the first hurdles for an adversary, collecting valid credentials. In today’s threat landscape information stealer malware and phishing campaigns are more common than ever, aimed at obtaining credentials that can be sold or used for lateral movement. While this is a hurdle, the probability of compromised credentials for initial access is high \- such as those with [SCATTERED SPIDER](https://www.cisa.gov/sites/default/files/2023-11/aa23-320a_scattered_spider_0.pdf) and [SCARLETEEL](https://sysdig.com/blog/scarleteel-2-0/). + +![](/assets/images/exploring-aws-sts-assumeroot/image1.png) + +### Establish an STS Client Session with Stolen Credentials + +The next step is to establish an STS client session using the compromised credentials (`compromised_user` access key and secret key). This session allows the adversary to make requests to AWS STS on behalf of the compromised user. + +Here’s the Python code to establish the STS client using the [AWS Boto3 SDK](https://aws.amazon.com/sdk-for-python/) (the AWS SDK used to create, configure, and manage AWS services, such as Amazon EC2 and Amazon S3). This Python code is used to create the STS client with stolen IAM user credentials: + +``` + sts_client = boto3.client( + "sts", + aws_access_key_id=compromised_access_key, + aws_secret_access_key=compromised_secret_key, + region_name=region, + endpoint_url=f'https://sts.{region}.amazonaws.com' + ) + ``` + +![Terminal output when creating STS client with stolen IAM user credentials](/assets/images/exploring-aws-sts-assumeroot/image7.png) + +**Note:** During testing, we discovered that the `endpoint_url` must explicitly point to `https://sts..amazonaws.com`. Omitting this may result in an `InvalidOperation` error when attempting to invoke the `AssumeRoot` API. + +This STS client session forms the foundation for simulating an adversary's actions as we have taken compromised credentials and initiated our malicious actions. + +### Assume Root for Member Account on Behalf of Compromised User + +After establishing an STS client session as the compromised user, we can proceed to call the AssumeRoot API. This request allows us to assume the root identity of a member account within an AWS Organization. For the request, the TargetPrincipal is set to the member account ID we obtained earlier, the session duration is set to 900 seconds (15 minutes), and the TaskPolicyArn is defined as `IAMCreateRootUserPassword`. This policy scopes the permissions to actions related to creating or managing root login credentials. + +A notable permission included in this policy is [`CreateLoginProfile`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html), which enables the creation of a login password for the root user. This allows access to the AWS Management Console as the root user. + +Below is the Python code to assume root of member account `000000000001`, with permissions scoped by *IAMCreateRootUserPassword*. + +``` +response = sts_client.assume_root( + TargetPrincipal=member_account_id, + DurationSeconds=900, + TaskPolicyArn={"arn": "arn:aws:iam::aws:policy/root-task/IAMCreateRootUserPassword"}, +) +root_temp_creds = response["Credentials"] +``` + +If the AssumeRoot request is successful, the response provides temporary credentials (`root_temp_creds`) for the root account of the target member. These credentials include an access key, secret key, and session token, enabling temporary root-level access for the duration of the session. + +![Terminal output showing AssumeRoot with IAMCreateRootUserPassword for AWSAssumeRoot member account +](/assets/images/exploring-aws-sts-assumeroot/image6.png) + +### Creating a Login Profile for the Member Root Account + +With temporary root credentials in hand, the next step is to establish an authenticated IAM client session as the root user of the member account. Using this session, we can call the `create_login_profile()` method. This method allows us to assign a login password to the root user, enabling console access. + +The following Python code establishes an authenticated IAM client and creates a login profile: + +``` +iam_client = boto3.client( + "iam", + aws_access_key_id=root_temp_creds["AccessKeyId"], + aws_secret_access_key=root_temp_creds["SecretAccessKey"], + aws_session_token=root_temp_creds["SessionToken"], +) + +response = iam_client.create_login_profile() +``` + +It’s worth noting that the `create_login_profile()` method requires no explicit parameters for the root user, as it acts on the credentials of the currently authenticated session. In this case, it will apply to the root user of the member account. + +![Terminal output showing IAM client established as Root member account and CreateLoginProfile request](/assets/images/exploring-aws-sts-assumeroot/image5.png) + + +### Reset the Administrator Password and Login to the AWS Console + +At this stage, we’re nearly complete\! Let’s recap the progress so far: + +1. Using compromised IAM user credentials, we established an STS session to assume the identity of an overly permissive user. +2. Leveraging this session, we assumed the identity of the root user of a target member account, acquiring temporary credentials scoped to the `IAMCreateRootUserPassword` task policy. +3. With these temporary root credentials, we established an IAM client session and successfully created a login profile for the root user. + +The final step involves resetting the root user password to gain permanent access to the AWS Management Console. To do this, visit the AWS console login page and attempt to log in as the root user. Select the “Forgot Password” option to initiate the password recovery process. This will prompt a CAPTCHA challenge, after which a password reset link is sent to the root user’s email address. This would be the third roadblock for an adversary as they would need access to the root user’s email inbox to continue with the password reset workflow. It should be acknowledged that if *CreateLoginProfile* is called, you can specify the password for the user and enforce a “password reset required”. However, this is not allowed for root accounts by default, and for good reason by AWS. Unlike the first hurdle of having valid credentials, access to a user’s inbox may prove more difficult and less likely, but again, with enough motivation and resources, it is still possible. + +![Password recovery request from AWS sign-in for root](/assets/images/exploring-aws-sts-assumeroot/image2.png) + +After selecting the password reset link, you can set a new password for the root user. This step provides lasting access to the console as the root user. Unlike the temporary credentials obtained earlier, this access is no longer limited by the session duration or scoped permissions of the IAMCreateRootUserPassword policy, granting unrestricted administrative control over the member account. + +![Successful login as root for AWSAssumeRoot member account](/assets/images/exploring-aws-sts-assumeroot/image8.png) + +**Before moving on, if you followed along and tried this in your environment, we want to gently remind you to use Terraform to remove testing resources** using the terraform destroy command in the same folder where you initialized and deployed the resources. + +## Detection and Hunting Opportunities + +While exploring cloud features and APIs from an adversary's perspective is insightful, our ultimate responsibility lies in detecting and mitigating malicious or anomalous behavior, alerting stakeholders, and responding effectively. Also, while such a scenario has not been publicly documented in the wild, we should not wait to be a victim either and be reactive, hence the reason for our whitebox scenario. + +The following detection and hunting queries rely on AWS CloudTrail data ingested into the Elastic Stack using the [AWS integration](https://www.elastic.co/docs/current/integrations/aws). If your environment differs, you may need to adjust these queries for custom ingestion processes or adapt them for a different SIEM or query tool. + +**Note:** Ensure that AWS CloudTrail is enabled for all accounts in your organization to provide comprehensive visibility into activity across your AWS environment. You may also need to enable the specific trail used for monitoring across the entire organization so all member accounts are observed properly. + +### Hunting \- Unusual Action for IAM User Access Key + +This query identifies potentially compromised IAM access keys that are used to make unusual API calls. It sorts the results in ascending order to surface less frequent API calls within the last two weeks. This query can be adjusted to account for different API calls or include other CloudTrail-specific fields. + +Hunting Query: [AWS IAM Unusual AWS Access Key Usage for User](https://github.com/elastic/detection-rules/blob/7b88b36d294407cc1ea2ab1b0acbbbf3104162a9/hunting/aws/docs/iam_unusual_access_key_usage_for_user.md) + +MITRE ATT\&CK: + +* T1078.004 \- [Valid Accounts: Cloud Accounts](https://attack.mitre.org/techniques/T1078/004/) + +Language: ES|QL + +``` +FROM logs-aws.cloudtrail* +| WHERE @timestamp > now() - 14 day +| WHERE + event.dataset == "aws.cloudtrail" + and event.outcome == "success" + and aws.cloudtrail.user_identity.access_key_id IS NOT NULL + and aws.cloudtrail.resources.arn IS NOT NULL + and event.action NOT IN ("GetObject") +| EVAL daily_buckets = DATE_TRUNC(1 days, @timestamp) +| STATS + api_counts = count(*) by daily_buckets, aws.cloudtrail.user_identity.arn, aws.cloudtrail.user_identity.access_key_id, aws.cloudtrail.resources.arn, event.action +| WHERE api_counts < 2 +| SORT api_counts ASC +``` + +### Detection \- Unusual Assume Root Action by Rare IAM User + +Detection Rule: [AWS STS AssumeRoot by Rare User and Member Account](https://github.com/elastic/detection-rules/blob/main/rules/integrations/aws/privilege_escalation_sts_assume_root_from_rare_user_and_member_account.toml) + +This query identifies instances where the `AssumeRoot` API call is made by an IAM user ARN and member account that have not performed this action in the last 14 days. This anomaly-based detection uses Elastic’s [New Terms](https://www.elastic.co/guide/en/security/current/rules-ui-create.html#create-new-terms-rule) detection rule. + +* The `aws.cloudtrail.user_identity.arn` field identifies the source IAM user from the management AWS account. +* The `aws.cloudtrail.resources.account_id` field reflects the target member account. + +MITRE ATT\&CK: + +* T1548.005 \- [Temporary Elevated Cloud Access](https://attack.mitre.org/techniques/T1548/005/) +* T1098.003 \- [Additional Cloud Roles](https://attack.mitre.org/techniques/T1098/003/) + +Language: KQL + +``` +event.dataset: "aws.cloudtrail" + and event.provider: "sts.amazonaws.com" + and event.action: "AssumeRoot" + and event.outcome: "success" +``` + +New Term Fields: +If any combination of these fields has not been seen executing AssumeRoot within the last 14 days, an alert is generated. + +* `aws.cloudtrail.user_identity.arn` +* `aws.cloudtrail.resources.account_id` + +### Detection \- Self-Created Login Profile for Root Member Account + +This query detects instances where a login profile is created for a root member account by the root account itself, potentially indicating unauthorized or anomalous behavior. + +Detection Rule: [AWS IAM Login Profile Added for Root](https://github.com/elastic/detection-rules/blob/4374128458d116211d5d22993b6d87f6c82a30a0/rules/integrations/aws/persistence_iam_create_login_profile_for_root.toml) + +MITRE ATT\&CK: + +* T1098.003 \- [Account Manipulation: Additional Cloud Roles](https://attack.mitre.org/techniques/T1098/003/) +* T1548.005 \- [Abuse Elevation Control Mechanism: Temporary Elevated Cloud Access](https://attack.mitre.org/techniques/T1548/005/) +* T1078.004 \- [Valid Accounts: Cloud Accounts](https://attack.mitre.org/techniques/T1078/004/) + +Language: ES|QL + +``` +FROM logs-aws.cloudtrail* +| WHERE + // filter for CloudTrail logs from IAM + event.dataset == "aws.cloudtrail" + and event.provider == "iam.amazonaws.com" + // filter for successful CreateLoginProfile API call + and event.action == "CreateLoginProfile" + and event.outcome == "success" + // filter for Root member account + and aws.cloudtrail.user_identity.type == "Root" + // filter for an access key existing which sources from AssumeRoot + and aws.cloudtrail.user_identity.access_key_id IS NOT NULL + // filter on the request parameters not including UserName which assumes self-assignment + and NOT TO_LOWER(aws.cloudtrail.request_parameters) LIKE "*username*" +| keep + @timestamp, + aws.cloudtrail.request_parameters, + aws.cloudtrail.response_elements, + aws.cloudtrail.user_identity.type, + aws.cloudtrail.user_identity.arn, + aws.cloudtrail.user_identity.access_key_id, + cloud.account.id, + event.action, + source.address + source.geo.continent_name, + source.geo.region_name, + source.geo.city_name, + user_agent.original, + user.id +``` + +These detections are specific to our scenario, however, are not fully inclusive regarding all potential AssumeRoot abuse. If you choose to explore and discover some additional hunting or threat detection opportunities, feel free to share in our [Detection Rules](https://github.com/elastic/detection-rules) repository or the [Threat Hunting](https://github.com/elastic/detection-rules/tree/main/hunting) library of ours. + +## Hardening Practices for AssumeRoot Use + +AWS [documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) contains several important considerations for best security practices regarding IAM, STS, and many other services. However, cloud security is not a “one size fits all” workflow and security practices should be tailored to your environment, risk-tolerance, and more. + +**Visibility is Key:** If you can’t see it, you can’t protect it. Start by enabling CloudTrail with organization-wide trails to log activity across all accounts. Focus on capturing IAM and STS operations for insights into access and permission usage. Pair this with Security Hub for continuous monitoring and tools like Elastic or GuardDuty to hunt for unusual AssumeRoot actions. + +**Lock Down AssumeRoot Permissions:** Scope AssumeRoot usage to critical tasks only, like audits or recovery, by restricting task policies to essentials like IAMAuditRootUserCredentials. Assign these permissions to specific roles in the management account and keep those roles tightly controlled. Regularly review and remove unnecessary permissions to maintain the PLoP. + +**MFA and Guardrails for Root Access:** Enforce MFA for all users, especially those with access to AssumeRoot. Use AWS Organizations to disable root credential recovery unless absolutely needed and remove unused root credentials entirely. RCPs can help centralize and tighten permissions for tasks involving AssumeRoot or other sensitive operations. + +# Conclusion + +We hope this article provides valuable insight into AWS’ AssumeRoot API operation, how it can be abused by adversaries, and some threat detection and hunting guidance. Abusing AssumeRoot is one of many living-off-the-cloud (LotC) techniques that adversaries have the capability to target, but we encourage others to explore, research, and share their findings accordingly with the community and AWS. \ No newline at end of file diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_qbot_attack_pattern.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_qbot_attack_pattern.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_qbot_attack_pattern.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_qbot_attack_pattern.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_ref2731_intrusion_set.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_ref2731_intrusion_set.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_ref2731_intrusion_set.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_ref2731_intrusion_set.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_windows_uac_bypasses_techniques_and_detection_strategies.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_windows_uac_bypasses_techniques_and_detection_strategies.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_windows_uac_bypasses_techniques_and_detection_strategies.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_windows_uac_bypasses_techniques_and_detection_strategies.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/extracting_cobalt_strike_beacon_configurations.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/extracting_cobalt_strike_beacon_configurations.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/extracting_cobalt_strike_beacon_configurations.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/extracting_cobalt_strike_beacon_configurations.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/fall_2023_global_threat_report_outro.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/fall_2023_global_threat_report_outro.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/fall_2023_global_threat_report_outro.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/fall_2023_global_threat_report_outro.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md similarity index 98% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md index 17830f2f3dab7..94d14462751a7 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md @@ -11,12 +11,12 @@ category: - slug: vulnerability-updates --- -# Introduction +## Introduction This article will discuss a previously-unnamed vulnerability class in Windows, showing how long-standing incorrect assumptions in the design of core Windows features can result in both undefined behavior and security vulnerabilities. We will demonstrate how one such vulnerability in the Windows 11 kernel can be exploited to achieve arbitrary code execution with kernel privileges. -# Windows file sharing +## Windows file sharing When an application opens a file on Windows, it typically uses some form of the Win32 [**CreateFile**](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilew) API. @@ -43,7 +43,7 @@ Sharing isn’t mandatory. Callers can pass a share mode of zero to obtain exclu > An open file that is not shared (dwShareMode set to zero) cannot be opened again, either by the application that opened it or by another application, until its handle has been closed. This is also referred to as exclusive access. -## Sharing enforcement +### Sharing enforcement In the kernel, sharing is enforced by filesystem drivers. As a file is opened, it’s the responsibility of the filesystem driver to call [**IoCheckShareAccess**](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-iocheckshareaccess) or [**IoCheckLinkShareAccess**](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-iochecklinkshareaccess) to see whether the requested **DesiredAccess**/**ShareMode** tuple is compatible with any existing handles to the file being opened. [NTFS](https://learn.microsoft.com/en-us/windows-server/storage/file-server/ntfs-overview) is the primary filesystem on Windows, but it’s closed-source, so for illustrative purposes we’ll instead look at Microsoft’s FastFAT sample code performing [the same check](https://github.com/Microsoft/Windows-driver-samples/blob/622212c3fff587f23f6490a9da939fb85968f651/filesys/fastfat/create.c#L6822-L6884). Unlike an IDA decompilation, it even comes with comments! @@ -119,7 +119,7 @@ if (FlagOn(*DesiredAccess, FILE_WRITE_DATA) || DeleteOnClose) { Another way to think of this check is that **ZwMapViewOfSection(SEC_IMAGE)** implies no-write-sharing as long as the view exists. -# Authenticode +## Authenticode The [Windows Authenticode Specification](https://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/authenticode_pe.docx) describes a way to employ cryptography to “sign” PE files. A “digital signature” cryptographically attests that the PE was produced by a particular entity. Digital signatures are tamper-evident, meaning that any material modification of signed files should be detectable because the digital signature will no longer match. Digital signatures are typically appended to the end of PE files. @@ -128,7 +128,7 @@ The [Windows Authenticode Specification](https://download.microsoft.com/download Authenticode can’t apply traditional hashing (e.g. **sha256sum**) in this case, because the act of appending the signature would change the file’s hash, breaking the signature it just generated. Instead, the Authenticode specification describes an algorithm to skip specific portions of the PE file that will be changed during the signing process. This algorithm is called **authentihash**. You can use authentihash with any hashing algorithm, such as SHA256. When a PE file is digitally signed, the file’s authentihash is what’s actually signed. -## Code integrity +### Code integrity Windows has a few different ways to validate Authenticode signatures. User mode applications can call [**WinVerifyTrust**](https://learn.microsoft.com/en-us/windows/win32/api/wintrust/nf-wintrust-winverifytrust) to validate a file’s signature in user mode. The Code Integrity (CI) subsystem, residing in ```ci.dll```, validates signatures in the kernel. If [Hypervisor-Protected Code Integrity](https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/device-guard-and-credential-guard) is running, the Secure Kernel employs ```skci.dll``` to validate Authenticode. This article will focus on Code Integrity (```ci.dll```) in the regular kernel. @@ -148,7 +148,7 @@ User Mode Code Integrity (UMCI): KMCI and UMCI implement different policies for different scenarios. For example, the policy for Protected Processes is different from that of INTEGRITYCHECK. -# Incorrect assumptions +## Incorrect assumptions Microsoft [documentation](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea) implies that files successfully opened without write sharing can’t be modified by another user or process. @@ -176,7 +176,7 @@ If those paged-out pages are later touched, the CPU will issue a page fault and Note the following exception: The memory manager may treat PE-relocated pages as unmodified, dynamically reapplying relocations during page faults. -## Page hashes +### Page hashes Page hashes are a list of hashes of each 4KB page within a PE file. Since pages are 4KB, page faults typically occur on 4KB of data at a time. Full Authenticode verification requires the entire contiguous PE file, which isn’t available during a page fault. Page hashes allow the MM to validate hashes of individual pages during page faults. @@ -187,7 +187,7 @@ CI can also compute them on-the-fly during signature validation, a mechanism we Page hashes are not free - they use CPU and slow down page faults. They’re not used in most cases. -# Attacking code integrity +## Attacking code integrity Imagine a scenario where a ransomware operator wants to ransom a hospital, so they send a phishing email to a hospital employee. The employee opens the email attachment and enables macros, running the ransomware. The ransomware employs a UAC bypass to immediately elevate to admin, then attempts to terminate any security software on the system so it can operate unhindered. Anti-Malware services run as [Protected Process Light](https://learn.microsoft.com/en-us/windows/win32/services/protecting-anti-malware-services-) (PPL), protecting them from tampering by malware with admin rights, so the ransomware can’t terminate the Anti-Malware service. @@ -202,7 +202,7 @@ When a network redirector is in use, the server on the other end of the pipe nee An attacker can employ a network redirector to modify a PPL’s DLL server-side, bypassing sharing restrictions. This means that PEs backing an executable image section are incorrectly assumed to be immutable. This is a class of vulnerability that we are calling **False File Immutability** (FFI). -## Paging exploitation +### Paging exploitation If an attacker successfully exploits False File Immutability to inject code into an in-use PE, wouldn’t page hashes catch such an attack? The answer is: sometimes. If we look at the following table, we can see that page hashes are enforced for kernel drivers and Protected Processes, but not for PPL, so let’s pretend we’re an attacker targeting PPL. @@ -219,7 +219,7 @@ Last year at Black Hat Asia 2023 ([abstract](https://www.blackhat.com/asia-23/br Alongside the presentation, we released the [PPLFault exploit](https://github.com/gabriellandau/PPLFault) which demonstrates the vulnerability by dumping the memory of an otherwise-protected PPL. We also released the GodFault exploit chain, which combines the PPLFault Admin-to-PPL exploit with the AngryOrchard PPL-to-kernel exploit to achieve full read/write control of physical memory from user mode. We did this to motivate Microsoft to take action on a vulnerability that MSRC [declined to fix](https://www.elastic.co/security-labs/forget-vulnerable-drivers-admin-is-all-you-need) because it did not meet their [servicing criteria](https://www.microsoft.com/en-us/msrc/windows-security-servicing-criteria). Thankfully, the Windows Defender team at Microsoft stepped up, [releasing a fix](https://x.com/GabrielLandau/status/1757818200127946922) in February 2024 that enforces dynamic page hashes for executable images loaded over network redirectors, breaking PPLFault. -# New research +## New research Above, we discussed Authenticode signatures embedded within PE files. In addition to embedded signatures, Windows supports a form of detached signature called a [security catalog](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/catalog-files). Security catalogs (.cat files) are essentially a list of signed authentihashes. Every PE with an authentihash in that list is considered to be signed by that signer. Windows keeps a large collection of catalog files in ```C:\Windows\System32\CatRoot``` which CI loads, validates, and caches. @@ -240,7 +240,7 @@ Breaking this down, we see a few key insights. First, **ZwCreateSection(SEC_COMM Next, the file is opened without **FILE_SHARE_WRITE**, meaning write sharing is denied. This is intended to prevent modification of the security catalog during processing. However, as we have shown above, this is a bad assumption and another example of False File Immutability. It should be possible, in theory, to perform a PPLFault-style attack on security catalog processing. -## Planning the attack +### Planning the attack ![](/assets/images/false-file-immutability/image11.png) @@ -254,7 +254,7 @@ The general flow of the attack is as follows: 7. CI finds the malicious driver’s authentihash in the catalog and loads the driver. At this point, the attacker has achieved arbitrary code execution in the kernel. -## Implementation and considerations +### Implementation and considerations The plan is to use a PPLFault-style attack, but there are some important differences in this situation. PPLFault used an [opportunistic lock](https://learn.microsoft.com/en-us/windows/win32/fileio/opportunistic-locks) (oplock) to deterministically freeze the victim process’s initialization. This gave the attacker time to switch over to the payload and flush the system working set. Unfortunately, we couldn’t find any good opportunities for oplocks here. Instead, we’re going to pursue a probabilistic approach: rapidly toggling the security catalog between the malicious and benign versions. @@ -279,14 +279,14 @@ The attacker wins if CI validates a benign catalog then parses a malicious one. ![Code Integrity validating a benign catalog, then parsing a malicious one](/assets/images/false-file-immutability/image20.png) -## Exploit demo +### Exploit demo We named the exploit **ItsNotASecurityBoundary** as an homage to MSRC's [policy](https://www.microsoft.com/en-us/msrc/windows-security-servicing-criteria) that "Administrator-to-kernel is not a security boundary.” The code is in GitHub [here](https://github.com/gabriellandau/ItsNotASecurityBoundary). Demo video [here](https://drive.google.com/file/d/13Uw38ZrNeYwfoIuD76qlLgyXP8kRc8Nz/view?usp=sharing). -# Understanding these vulnerabilities +## Understanding these vulnerabilities In order to properly defend against these vulnerabilities, we first need to understand them better. @@ -311,7 +311,7 @@ First, the attacking client sets a packet’s structure’s length field to 16 b Double-read vulnerabilities frequently apply to shared-memory scenarios. They commonly occur in drivers that operate on user-writable buffers. Due to False File Immutability, developers need to be aware that their scope is actually much wider, and includes all files writable by attackers. Denying write sharing does not necessarily prevent file modification. -## Affected Operations +### Affected Operations What types of operations are affected by False File Immutability? @@ -322,7 +322,7 @@ What types of operations are affected by False File Immutability? | Regular I/O | **ReadFile** **ZwReadFile** | 1. Avoid double reads\ 2. Copy the file to a heap buffer before processing | -## What else could be vulnerable? +### What else could be vulnerable? Looking for potentially-vulnerable calls to **ZwMapViewOfSection** in the NT kernel yields quite a few interesting functions: @@ -339,27 +339,27 @@ Looking outside of the NT kernel, we can find other drivers to investigate: ![Potentially-vulnerable uses of **ZwMapViewOfSection** in Windows 11 kernel drivers](/assets/images/false-file-immutability/image1.png) -## Don’t forget about user mode +### Don’t forget about user mode We’ve mostly been discussing the kernel up to this point, but it’s important to note that any user mode application that calls **ReadFile**, **MapViewOfFile**, or **LoadLibrary** on an attacker-controllable file, denying write sharing for immutability, may be vulnerable. Here’s a few hypothetical examples. -### MapViewOfFile +#### MapViewOfFile Imagine an application that is split into two components - a low-privileged worker process with network access, and a privileged service that installs updates. The worker downloads updates and stages them to a specific folder. When the privileged service sees a new update staged, it first validates the signature before installing the update. An attacker could abuse FFI to modify the update after the signature check. -### ReadFile +#### ReadFile Since files are subject to double-read vulnerabilities, anything that parses complex file formats may be vulnerable, including antivirus engines and search indexers. -### LoadLibrary +#### LoadLibrary Some applications rely on UMCI to prevent attackers from loading malicious DLLs into their processes. As we’ve shown with PPLFault, FFI can defeat UMCI. -# Stopping the exploit +## Stopping the exploit Per their official servicing guidelines, MSRC won’t service Admin -> Kernel vulnerabilities by default. In this parlance, servicing means “fix via security update.” This type of vulnerability, however, allows malware to bypass [AV Process Protections](https://learn.microsoft.com/en-us/windows/win32/services/protecting-anti-malware-services-), leaving AV and EDR vulnerable to instant-kill attacks. @@ -376,7 +376,7 @@ As mentioned above in the Affected Operations section, applications can mitigate An alternative mitigation strategy to break these types of exploits is to pin the pages of the file mapping into physical memory using an API such as **MmProbeAndLockPages**. This prevents eviction of those pages when the attacker empties the working set. -## End-user detection and mitigation +### End-user detection and mitigation Fortunately, there is a way for end-users to mitigate this exploit without changes from Microsoft – Hypervisor Protected Code Integrity (HVCI). If HVCI is enabled, CI.dll doesn’t do catalog parsing at all. Instead, it sends the catalog contents to the Secure Kernel, which runs in a separate virtual machine on the same host. The Secure Kernel stores the received catalog contents in its own heap, from which signature validation and parsing are performed. Just like with the **ExAllocatePool** mitigation described above, the exploit is mitigated because file changes have no effect on the heap copy. @@ -387,7 +387,7 @@ The probabilistic nature of this attack means that there are likely many failed ![**Microsoft-Windows-CodeIntegrity/Operational** event log showing an invalid security catalog](/assets/images/false-file-immutability/image4.png) -# Disclosure +## Disclosure The disclosure timeline is as follows: - 2024-02-14: We reported ItsNotASecurityBoundary and FineButWeCanStillEasilyStopIt to MSRC as VULN-119340, suggesting **ExAllocatePool** and **MmProbeAndLockPages** as simple low-risk fixes @@ -397,7 +397,7 @@ The disclosure timeline is as follows: - 2024-06-14: MSRC closed the case, stating "We have completed our investigation and determined that the case doesn't meet our bar for servicing at this time. As a result, we have opened a next-version candidate bug for the issue, and it will be evaluated for upcoming releases. Thanks, again, for sharing this report with us." -# Fixing Code Integrity +## Fixing Code Integrity Looking at the original implementation of **CI!I_MapAndSizeDataFile**, we can see the legacy code calling **ZwCreateSection** and **ZwMapViewOfSection**: @@ -408,7 +408,7 @@ Contrast that with the new **CI!CipMapAndSizeDataFileWithMDL**, which follows th ![The new **CI!CipMapAndSizeDataFileWithMDL** has a mitigation](/assets/images/false-file-immutability/image3.png) -# Summary and conclusion +## Summary and conclusion Today we discussed and named a bug class: **False File Immutability**. We are aware of two public exploits that leverage it, PPLFault and ItsNotASecurityBoundary. diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/finding_truth_in_the_shadows.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/finding_truth_in_the_shadows.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/finding_truth_in_the_shadows.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/finding_truth_in_the_shadows.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/flare_on_9_solutions_burning_down_the_house.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/flare_on_9_solutions_burning_down_the_house.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/flare_on_9_solutions_burning_down_the_house.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/flare_on_9_solutions_burning_down_the_house.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/forecast_and_recommendations_2022_elastic_global_threat_report.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/forecast_and_recommendations_2022_elastic_global_threat_report.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/forecast_and_recommendations_2022_elastic_global_threat_report.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/forecast_and_recommendations_2022_elastic_global_threat_report.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/forget_vulnerable_drivers_admin_is_all_you_need.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/forget_vulnerable_drivers_admin_is_all_you_need.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/forget_vulnerable_drivers_admin_is_all_you_need.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/forget_vulnerable_drivers_admin_is_all_you_need.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/formbook_adopts_cab_less_approach.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/formbook_adopts_cab_less_approach.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/formbook_adopts_cab_less_approach.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/formbook_adopts_cab_less_approach.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/get_injectedthreadex_detection_thread_creation_trampolines.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/get_injectedthreadex_detection_thread_creation_trampolines.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/get_injectedthreadex_detection_thread_creation_trampolines.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/get_injectedthreadex_detection_thread_creation_trampolines.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_gooey_with_guloader_downloader.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_gooey_with_guloader_downloader.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_gooey_with_guloader_downloader.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_gooey_with_guloader_downloader.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_the_most_out_of_transforms_in_elastic.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_the_most_out_of_transforms_in_elastic.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_the_most_out_of_transforms_in_elastic.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_the_most_out_of_transforms_in_elastic.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md similarity index 98% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md index a96832f5de73c..21392357f1322 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md @@ -10,8 +10,15 @@ image: "photo-edited-05@2x.jpg" category: - slug: attack-pattern - slug: malware-analysis +tags: + - ghostpulse + - ref8207 --- +## Update + +In October 2024, we released an update to stage 2 of GHOSTPULSE that includes new evasion techniques. You can check it out [here](https://www.elastic.co/security-labs/tricks-and-treats). + ## Preamble Elastic Security Labs has observed a campaign to compromise users with signed [MSIX](https://learn.microsoft.com/en-us/windows/msix/overview) application packages to gain initial access. The campaign leverages a stealthy loader we call GHOSTPULSE which decrypts and injects its final payload to evade detection. @@ -71,7 +78,7 @@ Next, GHOSTPULSE builds an Import Address Table (IAT) incorporating essential AP ![Stage 1 hashing algorithm](/assets/images/ghostpulse-haunts-victims-using-defense-evasion-bag-o-tricks/image13.png) -``` +``` python # Python code used for API hashing def calculate_api_name_hash(api_name): value = 0 @@ -82,7 +89,7 @@ def calculate_api_name_hash(api_name): Below is the Stage 1 IAT structure reconstructed from the GHOSTPULSE malware sample, provided for reference: -``` +``` c struct core_stage1_IAT { void *kernel32_LoadLibraryW; @@ -124,7 +131,7 @@ It then proceeds with its operation by reading and parsing the file named `hando The initial phase involves identifying the commencement of the encrypted data by searching for the IDAT string in the file, which is followed by a distinctive 4-byte tag value. If the tag corresponds to the value stored in the malware's configuration, the malware extracts the bytes of the encrypted blob. The initial structure is as follows: -``` +``` c struct initial_idat_chunk { DWORD size_of_chunk; @@ -145,7 +152,7 @@ struct initial_idat_chunk In the second step, the malware locates the next occurrence of IDAT and proceeds to extract the encrypted chunks that follow it which has the following format: -``` +``` c struct next_idat_chunk { DWORD size_of_chunk; @@ -174,7 +181,7 @@ This technique is known as “module stomping”. The following image shows the Stage 2 initiates by constructing a new IAT structure and utilizing the CRC32 algorithm as the API name hashing mechanism. The following is the IAT structure of stage 2: -``` +``` c struct core_stage2_IAT { void *kernel32_module; @@ -244,7 +251,7 @@ Concerning NT functions, the malware reads the ntdll.dll library from disk and w The following is the structure used by the malware to store NT API offsets: -``` +``` c struct __unaligned __declspec(align(4)) core_stage2_nt_offsets_table { __int64 ntdll_module; diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md similarity index 99% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md index 65a42ae95c13b..5a452164b6a10 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md @@ -181,7 +181,7 @@ To fully leverage detection capabilities listed below for these threats with Ela - [Connection to WebService by an Unsigned Binary](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/command_and_control_connection_to_webservice_by_an_unsigned_binary.toml) - [Connection to WebService by a Signed Binary Proxy](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/command_and_control_connection_to_webservice_by_a_signed_binary_proxy.toml) - - [Suspicious DNS Query from Mounted Virtual Disk](https://github.com/elastic/endpoint-rules/blob/main/rules/command_and_control_execution_wevsvc_from_virtual_disk.toml) + - [Suspicious DNS Query from Mounted Virtual Disk](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/windows/command_and_control_suspicious_dns_query_from_mounted_virtual_disk.toml) - [Suspicious Access to Web Browser Credential Stores](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/credential_access_suspicious_access_to_web_browser_credential_stores.toml) - [Web Browser Credential Access via Unsigned Process](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/credential_access_web_browser_credential_access_via_unsigned_process.toml) - [Access to Browser Credentials from Suspicious Memory](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/credential_access_access_to_browser_credentials_from_suspicious_memory.toml) diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/going_coast_to_coast_climbing_the_pyramid_with_the_deimos_implant.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/going_coast_to_coast_climbing_the_pyramid_with_the_deimos_implant.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/going_coast_to_coast_climbing_the_pyramid_with_the_deimos_implant.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/going_coast_to_coast_climbing_the_pyramid_with_the_deimos_implant.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_cloud_for_cyber_data_analytics.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_cloud_for_cyber_data_analytics.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_cloud_for_cyber_data_analytics.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_cloud_for_cyber_data_analytics.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_one.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_one.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_one.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_one.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_two.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_two.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_two.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_two.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/grimresource.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/grimresource.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/grimresource.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/grimresource.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/gtr_multipart_series_overview.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/gtr_multipart_series_overview.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/gtr_multipart_series_overview.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/gtr_multipart_series_overview.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/handy_elastic_tools_for_the_enthusiastic_detection_engineer.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/handy_elastic_tools_for_the_enthusiastic_detection_engineer.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/handy_elastic_tools_for_the_enthusiastic_detection_engineer.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/handy_elastic_tools_for_the_enthusiastic_detection_engineer.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_lateral_movement_using_event_query_language.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_lateral_movement_using_event_query_language.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_lateral_movement_using_event_query_language.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_lateral_movement_using_event_query_language.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_1.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_1.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_1.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_1.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_2.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_2.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_2.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_2.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_suspicious_windows_libraries_for_execution_and_evasion.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_suspicious_windows_libraries_for_execution_and_evasion.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_suspicious_windows_libraries_for_execution_and_evasion.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_suspicious_windows_libraries_for_execution_and_evasion.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory_net_attacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory_net_attacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory_net_attacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory_net_attacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/icedid_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/icedid_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/icedid_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/icedid_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/icedids_network_infrastructure_is_alive_and_well.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/icedids_network_infrastructure_is_alive_and_well.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/icedids_network_infrastructure_is_alive_and_well.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/icedids_network_infrastructure_is_alive_and_well.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/identifying_beaconing_malware_using_elastic.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/identifying_beaconing_malware_using_elastic.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/identifying_beaconing_malware_using_elastic.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/identifying_beaconing_malware_using_elastic.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ingesting_threat_data_with_the_threat_intel_filebeat_module.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ingesting_threat_data_with_the_threat_intel_filebeat_module.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ingesting_threat_data_with_the_threat_intel_filebeat_module.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ingesting_threat_data_with_the_threat_intel_filebeat_module.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md similarity index 97% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md index 4adcfcecaa03a..12c65e414ddd5 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md @@ -173,11 +173,6 @@ Techniques and Sub techniques represent how an adversary achieves a tactical goa ## Detection logic -### Prevention - -- [Non-Native Dylib Extracted into Suspicious Directory](https://github.com/elastic/endpoint-rules/blob/1006a4d9a3d95e35149a3640fadf68a32c02afa9/rules/execution_dylib_extracted_to_new_directory.toml#L10) -- [Potential Privilege Escalation via TCC bypass with fake TCC.db](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/privilege_escalation_potential_privilege_escalation_via_tcc_bypass_with_fake_tcc.db.toml) - ### YARA Elastic Security has created YARA rules to identify this activity. Below are YARA rules to identify the JOKERSPY backdoor and SwiftBelt tool. diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inside_microsofts_plan_to_kill_pplfault.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inside_microsofts_plan_to_kill_pplfault.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inside_microsofts_plan_to_kill_pplfault.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inside_microsofts_plan_to_kill_pplfault.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/into_the_weeds_how_we_run_detonate.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/into_the_weeds_how_we_run_detonate.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/into_the_weeds_how_we_run_detonate.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/into_the_weeds_how_we_run_detonate.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/introducing_the_ref5961_intrusion_set.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/introducing_the_ref5961_intrusion_set.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/introducing_the_ref5961_intrusion_set.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/introducing_the_ref5961_intrusion_set.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/introduction_to_hexrays_decompilation_internals.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/introduction_to_hexrays_decompilation_internals.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/introduction_to_hexrays_decompilation_internals.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/introduction_to_hexrays_decompilation_internals.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/invisible_miners_unveiling_ghostengine.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/invisible_miners_unveiling_ghostengine.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/invisible_miners_unveiling_ghostengine.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/invisible_miners_unveiling_ghostengine.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md similarity index 98% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md index 3a0ef112df819..7801e7762e00e 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md @@ -137,7 +137,7 @@ process.name :"dwm.exe" and user.id:S-1-5-90-0-* and ![DWM dropping reflective DLL to disk post exploit execution](/assets/images/itw-windows-lpe-0days-insights-and-detection-strategies/image5.png) -Below is a [detection](https://github.com/elastic/endpoint-rules/blob/20833cbeaac4284ecf9818b44438bda4bc3cae18/rules/privilege_escalation_logonui_dcomp.toml) EQL query that looks for the LogonUI DLL load hijack: +Below is a [detection](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/windows/privilege_escalation_potential_privilege_escalation_via_logonui.toml) EQL query that looks for the LogonUI DLL load hijack: ``` library where process.executable : "?:\\Windows\\System32\\LogonUI.exe" and @@ -282,7 +282,7 @@ api where process.pid != 4 and process.Ext.api.name : "WriteProcessMemory" process.Ext.api.parameters.address > 281474976710655 ``` -Here is an example of these [alerts](https://github.com/elastic/endpoint-rules/blob/20833cbeaac4284ecf9818b44438bda4bc3cae18/rules/privilege_escalation_api_kernel_address_space.toml) triggering on exploits leveraging this primitive: +Here is an example of these [alerts](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/windows/privilege_escalation_suspicious_kernel_mode_address_manipulation.tom) triggering on exploits leveraging this primitive: ![Detection of PreviousMode abuse](/assets/images/itw-windows-lpe-0days-insights-and-detection-strategies/image7.png) diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/katz_and_mouse_game.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/katz_and_mouse_game.md new file mode 100644 index 0000000000000..b9db8c5a904ad --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/katz_and_mouse_game.md @@ -0,0 +1,414 @@ +--- +title: "Katz and Mouse Game: MaaS Infostealers Adapt to Patched Chrome Defenses" +slug: "katz-and-mouse-game" +date: "2024-10-28" +description: "Elastic Security Labs breaks down bypass implementations from the infostealer ecosystem’s reaction to Chrome 127's Application-Bound Encryption scheme." +author: + - slug: jia-yu-chan + - slug: salim-bitam + - slug: daniel-stepanic + - slug: samir-bousseaden + - slug: cyril-francois + - slug: seth-goodwin +image: "Security Labs Images 2.jpg" +category: + - slug: malware-analysis +tags: + - infostealer + - chrome + - cookie + - VIDAR + - STEALC + - LUMMA + - METASTEALER + - PHEMEDRONE + - XENOSTEALER +--- + +# Introduction + +In July, Google [announced](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html) a new protection mechanism for cookies stored within Chrome on Windows, known as Application-Bound Encryption. There is no doubt this security implementation has raised the bar and directly impacted the malware ecosystem. After months with this new feature, many infostealers have written new code to bypass this protection (as the Chrome Security Team predicted) in order to stay competitive in the market and deliver capabilities that reliably retrieve cookie data from Chrome browsers. + +Elastic Security Labs has been tracking a subset of this activity, identifying multiple techniques used by different malware families to circumvent App-Bound Encryption. While the ecosystem is still evolving in light of this pressure, our goal is to share technical details that help organizations understand and defend against these techniques. In this article, we will cover the different methods used by the following infostealer families: + + - STEALC/VIDAR + - METASTEALER + - PHEMEDRONE + - XENOSTEALER + - LUMMA + +# Key takeaways + + - Latest versions of infostealers implement bypasses around Google’s recent cookie protection feature using Application-Bound Encryption + - Techniques include integrating offensive security tool ChromeKatz, leveraging COM to interact with Chrome services and decrypt the app-bound encryption key, and using the remote debugging feature within Chrome + - Defenders should actively monitor for different cookie bypass techniques against Chrome on Windows in anticipation of future mitigations and bypasses likely to emerge in the near- to mid-term + - Elastic Security provides mitigations through memory signatures, behavioral rules, and hunting opportunities to enable faster identification and response to infostealer activity + +# Background + +Generically speaking, cookies are used by web applications to store visitor information in the browser the visitor uses to access that web app. This information helps the web app track that user, their preferences, and other information from location to location– even across devices. + +The authentication token is one use of the client-side data storage structures that enables much of how modern web interactivity works. These tokens are stored by the browser after the user has successfully authenticated with a web application. After username and password, after multifactor authentication (MFA) via one-time passcodes or biometrics, the web application “remembers” your browser is you via the exchange of this token with each subsequent web request. + +A malicious actor who gets access to a valid authentication token can reuse it to impersonate the user to that web service with the ability to take over accounts, steal personal or financial information, or perform other actions as that user such as transfer financial assets. + +Cybercriminals use infostealers to steal and commoditize this type of information for their financial gain. + +## Google Chrome Cookie Security + +Legacy versions of Google Chrome on Windows used the Windows native [Data Protection API](https://learn.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection) (DPAPI) to encrypt cookies and protect them from other user contexts. This provided adequate protection against several attack scenarios, but any malicious software running in the targeted user’s context could decrypt these cookies using the DPAPI methods directly. Unfortunately, this context is exactly the niche that infostealers often find themselves in after social engineering for initial access. The DPAPI scheme is now [well known to attackers](https://posts.specterops.io/operational-guidance-for-offensive-user-dpapi-abuse-1fb7fac8b107) with several attack vectors; from local decryption using the API, to stealing the masterkey and decrypting remotely, to abusing the domain-wide backup DPAPI key in an enterprise environment. + +With the release of Chrome 127 in July 2024, Google [implemented](https://developer.chrome.com/release-notes/127) Application-Bound Encryption of browser data. This mechanism directly addressed many common DPAPI attacks against Windows Chrome browser data–including cookies. It does this by storing the data in encrypted datafiles, and using a service running as SYSTEM to verify any decryption attempts are coming from the Chrome process before returning the key to that process for decryption of the stored data. + +![Chrome 127 Application-Bound Encryption Scheme. Source: https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html](/assets/images/katz-and-mouse-game/image5.png) + + + +While it is our view that this encryption scheme is not a panacea to protect all browser data (as the Chrome Security Team acknowledges in their release) we do feel it has been successful in driving malware authors to TTPs that are more overtly malicious, and easier for defenders to identify and respond to. + +# Stealer Bypass Techniques, Summarized + +The following sections will describe specific infostealer techniques used to bypass Google’s App-Bound Encryption feature as observed by Elastic. Although this isn’t an exhaustive compilation of bypasses, and development of these families is ongoing, they represent an interesting dynamic within the infostealer space showing how malware developers responded to Google’s recently updated security control. The techniques observed by our team include: + + - Remote debugging via Chrome’s DevTools Protocol + - Reading process memory of Chrome network service process (ChromeKatz and ```ReadProcessMemory``` (RPM)) + - Elevating to ```SYSTEM``` then decrypting ```app_bound_encryption_key``` with the ```DecryptData``` method of ```GoogleChromeElevationService``` through COM + +![Timeline of events](/assets/images/katz-and-mouse-game/image30.png) + +## STEALC/VIDAR + +Our team observed new code introduced to STEALC/VIDAR related to the cookie bypass technique around September 20th. These were atypical samples that stood out from previous versions and were implemented as embedded 64-bit PE files along with conditional checks. Encrypted values in the SQLite databases where Chrome stores its data are now prefixed with v20, indicating that the values are now encrypted using application-bound encryption. + +> [STEALC](https://malpedia.caad.fkie.fraunhofer.de/details/win.stealc) was introduced in 2023 and was developed with “heavy inspiration” from other more established stealers such as [RACOON](https://malpedia.caad.fkie.fraunhofer.de/details/win.raccoon) and [VIDAR](https://malpedia.caad.fkie.fraunhofer.de/details/win.vidar). STEALC and VIDAR have continued concurrent development, and in the case of App-Bound Encryption bypasses have settled on the same implementation. + +During the extraction of encrypted data from the databases the malware checks for this prefix. If it begins with ```v20```, a child process is spawned using the embedded PE file in the ```.data``` section of the binary. This program is responsible for extracting unencrypted cookie values residing in one of Chrome's child processes. + +![Embedded PE file](/assets/images/katz-and-mouse-game/image2.png) + +This embedded binary creates a hidden desktop via ```OpenDesktopA``` / ```CreateDesktopA``` then uses ```CreateToolhelp32Snapshot``` to scan and terminate all ```chrome.exe``` processes. A new ```chrome.exe``` process is then started with the new desktop object. Based on the installed version of Chrome, the malware selects a signature pattern for the Chromium feature [CookieMonster](https://www.chromium.org/developers/design-documents/network-stack/cookiemonster/), an internal component used to manage cookies. + +![Signature pattern for ```CookieMonster```](/assets/images/katz-and-mouse-game/image38.png) + +We used the [signature patterns](https://github.com/Meckazin/ChromeKatz/blob/9152004174e9a0b2d092c70ebc75efbf80fa1098/CookieKatz/Main.cpp#L123) to pivot to existing code developed for an offensive security tool called [ChromeKatz](https://github.com/Meckazin/ChromeKatz). At this time, the patterns have been removed from the ChromeKatz repository and replaced with a new technique. Based on our analysis, the malware author appears to have reimplemented ChromeKatz within STEALC in order to bypass the app-bound encryption protection feature. + +Once the malware identifies a matching signature, it enumerates Chrome’s child processes to check for the presence of the ```--utility-sub-type=network.mojom.NetworkService``` command-line flag. This flag indicates that the process is the network service responsible for handling all internet communication. It becomes a prime target as it holds the sensitive data the attacker seeks, as described in MDSec’s [post](https://www.mdsec.co.uk/2021/01/breaking-the-browser-a-tale-of-ipc-credentials-and-backdoors/). It then returns a handle for that specific child process. + +![Enumerating for Chrome’s network service](/assets/images/katz-and-mouse-game/image37.png) + +Next, it enumerates each module in the network service child process to find and retrieve the base address and size of ```chrome.dll``` loaded into memory. STEALC uses [```CredentialKatz::FindDllPattern```](https://github.com/Meckazin/ChromeKatz/blob/767047dcf8f53c70be5e3e0859c5eee3f129d758/CredentialKatz/Memory.cpp#L280) and [```CookieKatz::FindPattern```](https://github.com/Meckazin/ChromeKatz/blob/767047dcf8f53c70be5e3e0859c5eee3f129d758/CookieKatz/Memory.cpp#L435) to locate the CookieMonster instances. There are 2 calls to ```CredentialKatz::FindDllPattern```. + +![Calls to ```CredentialKatz::FindDllPattern```](/assets/images/katz-and-mouse-game/image17.png) + +In the first call to ```CredentialKatz::FindDllPattern```, it tries to locate one of the signature patterns (depending on the victim’s Chrome version) in ```chrome.dll```. Once found, STEALC now has a reference pointer to that memory location where the byte sequence begins which is the function ```net::CookieMonster::~CookieMonster```, destructor of the ```CookieMonster``` class. + +![Byte sequence for ```net::CookieMonster::~CookieMonster``` found in ```chrome.dll```](/assets/images/katz-and-mouse-game/image14.png) + +The second call to ```CredentialKatz::FindDllPattern``` passes in the function address for ```net::CookieMonster::~CookieMonster(void)``` as an argument for the byte sequence search, resulting in STEALC having a pointer to ```CookieMonster```’s Virtual Function Pointer struct. + +![```CookieMonster```’s vtable in ```chrome.dll```](/assets/images/katz-and-mouse-game/image19.png) + +The following method used by STEALC is again, identical to ChromeKatz, where it locates ```CookieMonster``` instances by scanning memory chunks in the ```chrome.dll``` module for pointers referencing the ```CookieMonster``` vtable. Since the vtable is a constant across all objects of a given class, any ```CookieMonster``` object will have the same vtable pointer. When a match is identified, STEALC treats the memory location as a ```CookieMonster``` instance and stores its address in an array. + +![Using ```CookieKatz::FindPattern``` to locate ```CookieMonster``` instances](/assets/images/katz-and-mouse-game/image16.png) + +For each identified ```CookieMonster``` instance, STEALC accesses the internal ```CookieMap``` structure located at an offset of ```+0x30```, and which is a binary tree. Each node within this tree contains pointers to ```CanonicalCookieChrome``` structures. ```CanonicalCookieChrome``` structures hold unencrypted cookie data, making it accessible for extraction. STEALC then initiates a tree traversal by passing the first node into a dedicated traversal function. + +![Initiating ```CookieMap``` tree traversal for each ```CookieMonster``` instance found](/assets/images/katz-and-mouse-game/image20.png) + +For each node, it calls ```ReadProcessMemory``` to access the ```CanonicalCookieChrome``` structure from the target process’s memory, then further processing it in ```jy::GenerateExfilString```. + +![```CookieMap``` traversal subroutine](/assets/images/katz-and-mouse-game/image31.png) + +STEALC formats the extracted cookie data by converting the expiration date to UNIX format and verifying the presence of the ```HttpOnly``` and ```Secure``` flags. It then appends details such as the cookie's name, value, domain, path, and the ```HttpOnly``` and ```Secure``` into a final string for exfiltration. [```OptimizedString```](https://github.com/Meckazin/ChromeKatz/blob/9152004174e9a0b2d092c70ebc75efbf80fa1098/CookieKatz/Memory.cpp#L10) structs are used in place of strings, so string values can either be the string itself, or if the string length is greater than 23, it will point to the address storing the string. + +![Constructing string for data exfiltration](/assets/images/katz-and-mouse-game/image23.png) + +## METASTEALER + +[METASTEALER](https://malpedia.caad.fkie.fraunhofer.de/details/win.metastealer), first observed in 2022, recently upgraded its ability to steal Chrome data, bypassing Google’s latest mitigation efforts. On September 30th, the malware authors announced this update via their Telegram channel, highlighting its enhanced capability to extract sensitive information, including cookies, despite the security changes in Chrome's version ```129+```. + +![METASTEALER announcement and translation](/assets/images/katz-and-mouse-game/image26.png) + +![source: https://x.com/g0njxa/status/1840761619686568319/](/assets/images/katz-and-mouse-game/image28.png) + +The [first sample](https://www.virustotal.com/gui/file/973a9056040af402d6f92f436a287ea164fae09c263f80aba0b8d5366ed9957a) observed in the wild by our team was discovered on September 30th, the same day the authors promoted the update. Despite claims that the malware operates without needing ```Administrator``` privileges, our testing revealed it does require elevated access, as it attempts to impersonate the ```SYSTEM``` token during execution. + +![Code comparison between an old and a new version of the family](/assets/images/katz-and-mouse-game/image11.png) + +As shown in the screenshots above, the ```get_decryption``` method now includes a new Boolean parameter. This value is set to ```TRUE``` if the encrypted data (cookie) begins with the ```v20``` prefix, indicating that the cookie is encrypted using Chrome's latest encryption method. The updated function retains backward compatibility, still supporting the decryption of cookies from older Chrome versions if present on the infected machine. + +The malware then attempts to access the ```Local State``` or ```LocalPrefs.json``` files located in the Chrome profile directory. Both files are JSON formatted and store encryption keys (```encrypted_key```) for older Chrome versions and ```app_bound_encrypted_key``` for newer ones. If the flag is set to ```TRUE```, the malware specifically uses the ```app_bound_encrypted_key``` to decrypt cookies in line with the updated Chrome encryption method. + +![```app_bound_encrypted_key``` extracted from Chrome json file](/assets/images/katz-and-mouse-game/image13.png) + +In this case, the malware first impersonates the ```SYSTEM``` token using a newly introduced class called ```ContextSwitcher```. + +![New class for TOKEN impersonation](/assets/images/katz-and-mouse-game/image35.png) + +It then decrypts the key by creating an instance via the COM of the Chrome service responsible for decryption, named ```GoogleChromeElevationService```, using the CLSID ```708860E0-F641-4611-8895-7D867DD3675B```. Once initialized, it invokes the [```DecryptData```](https://github.com/chromium/chromium/blob/225f82f8025e4f93981310fd33daa71dc972bfa9/chrome/elevation_service/elevator.cc#L155) method to decrypt the ```app_bound_encrypted_key``` key which will be used to decrypt the encrypted cookies. + +![New class ```ComInvoker``` to invoke methods from ```GoogleChromeElevationService``` service](/assets/images/katz-and-mouse-game/image8.png) + +METASTEALER employs a technique similar to the one demonstrated in a [gist](https://gist.github.com/snovvcrash/caded55a318bbefcb6cc9ee30e82f824) shared [on X](https://x.com/snovvcrash/status/1839715912812802162) on September 27th, which may have served as inspiration for the malware authors. Both approaches leverage similar methods to bypass Chrome's encryption mechanisms and extract sensitive data. + +## PHEMEDRONE + +This [open-source stealer](https://malpedia.caad.fkie.fraunhofer.de/details/win.phemedrone_stealer) caught the world’s attention earlier in the year through its usage of a Windows SmartScreen vulnerability (CVE-2023-36025). While its development is still occurring on Telegram, our team found a recent [release](https://www.virustotal.com/gui/file/1067d27007ea862ddd68e90ef68b6d17fa18f9305c09f72bad04d00102a60b8c) (2.3.2) submitted at the end of September including new cookie grabber functionality for Chrome. + +![```README.txt``` within PHEMEDRONE project](/assets/images/katz-and-mouse-game/image10.png) + +The malware first enumerates the different profiles within Chrome, then performs a browser check using function (```BrowserHelpers.NewEncryption```) checking for the Chrome browser with a version greater than or equal to ```127```. + +![Chrome version verification in PHEMEDRONE](/assets/images/katz-and-mouse-game/image27.png) + +If the condition matches, PHEMEDRONE uses a combination of helper functions to extract the cookies. + +![High-level functions used cookie extraction in PHEMEDRONE](/assets/images/katz-and-mouse-game/image34.png) + +By viewing the ```ChromeDevToolsWrapper``` class and its different functions, we can see that PHEMEDRONE sets up a remote debugging session within Chrome to access the cookies. The default port (```9222```) is used along with window-position set to ```-2400```,```-2400``` which is set off-screen preventing any visible window from alerting the victim. + +![New Chrome process in remote debug mode](/assets/images/katz-and-mouse-game/image15.png) + +Next, the malware establishes a WebSocket connection to Chrome’s debugging interface making a request using deprecated Chrome DevTools Protocol method (```Network.getAllCookies```). + +![Chrome DevTools Protocol used to retrieve cookies](/assets/images/katz-and-mouse-game/image24.png) + +The cookies are then returned from the previous request in plaintext, below is a network capture showing this behavior: + +![Cookie data within network capture](/assets/images/katz-and-mouse-game/image32.png) + +## XENOSTEALER + +[XENOSTEALER](https://github.com/moom825/XenoStealer/) is an open-source infostealer hosted on GitHub. It appeared in July 2024 and is under active development at the time of this publication. Notably, the Chrome bypass feature was committed on September 26, 2024. + +The approach taken by XENOSTEALER is similar to that of METASTEALER. It first parses the JSON file under a given Chrome profile to extract the ```app_bound_encrypted_key```. However, the decryption process occurs within a Chrome process. To achieve this, XENOSTEALER launches an instance of ```Chrome.exe```, then injects code using a helper class called [```SharpInjector```](https://github.com/moom825/XenoStealer/blob/d1c7e242183a2c8582c179a1b546f0a5cdff5f75/XenoStealer/Injector/SharpInjector.cs), passing the encrypted key as a parameter. + +The injected code subsequently calls the ```DecryptData``` method from the ```GoogleChromeElevationService``` to obtain the decrypted key. + +![Source code of the injected code](/assets/images/katz-and-mouse-game/image29.png) + +## LUMMA + +In mid-October, the latest version of [LUMMA](https://malpedia.caad.fkie.fraunhofer.de/details/win.lumma) implemented a new method to bypass Chrome cookie protection, as reported by [@g0njxa](https://x.com/g0njxa). + +![](/assets/images/katz-and-mouse-game/image40.png) + +We analyzed a recent version of LUMMA, confirming that it managed to successfully recover the cookie data from the latest version of Google Chrome (```130.0.6723.70```). LUMMA first creates a visible Chrome process via ```Kernel32!CreateProcessW```. + +![Dump of ```CreateProcessW lpApplicationName``` parameter](/assets/images/katz-and-mouse-game/image3.png) + +This activity was followed up in the debugger with multiple calls to ```NtReadVirtualMemory``` where we identified LUMMA searching within the Chrome process for ```chrome.dll```. + +![LUMMA seeks ```chrome.dll``` in Chrome](/assets/images/katz-and-mouse-game/image7.png) + +Once found, the malware copies the ```chrome.dll``` image to its own process memory using ```NtReadVirtualMemory```. In a similar fashion to the ChromeKatz technique, Lumma leverages pattern scanning to target Chrome’s ```CookieMonster``` component. + +![Lumma’s pattern scanning](/assets/images/katz-and-mouse-game/image36.png) + +Lumma uses an obfuscated signature pattern to pinpoint the ```CookieMonster``` functionality: + +``` +3Rf5Zn7oFA2a????k4fAsdxx????l8xX5vJnm47AUJ8uXUv2bA0s34S6AfFA????kdamAY3?PdE????6G????L8v6D8MJ4uq????k70a?oAj7a3????????K3smA????maSd?3l4 +``` + +Below is the YARA rule after de-obfuscation: + +``` +rule lumma_stealer +{ + meta: + author = "Elastic Security Labs" + strings: + $lumma_pattern = { 56 57 48 83 EC 28 89 D7 48 89 CE E8 ?? ?? ?? ?? 85 FF 74 08 48 89 F1 E8 ?? ?? ?? ?? 48 89 F0 48 83 C4 28 5F 5E C3 CC CC CC CC CC CC CC CC CC CC 56 57 48 83 EC 38 48 89 CE 48 8B 05 ?? ?? ?? ?? 48 31 E0 48 89 44 24 ?? 48 8D 79 ?? ?? ?? ?? 28 E8 ?? ?? ?? ?? 48 8B 46 20 48 8B 4E 28 48 8B 96 ?? ?? ?? ?? 4C 8D 44 24 ?? 49 89 10 48 C7 86 ?? ?? ?? ?? ?? ?? ?? ?? 48 89 FA FF 15 ?? ?? ?? ?? 48 8B 4C 24 ?? 48 31 E1} + condition: + all of them +} +``` + +After decoding and searching for the pattern in ```chrome.dll```, this leads to the ```CookieMonster``` destructor ([```net::CookieMonster::~CookieMonster```](https://chromium.googlesource.com/chromium/src/net/+/master/cookies/cookie_monster.cc#657)). + +![Lumma pattern match on ```CookieMonster```](/assets/images/katz-and-mouse-game/image25.png) + +The cookies are then identified in memory and dumped out in clear text from the Chrome process. + +![LUMMA dumping the cookie in clear text from Chrome](/assets/images/katz-and-mouse-game/image21.png) + +Once completed, LUMMA sends out the cookies along with the other requested data as multiple zip files (xor encrypted and base64 encoded) to the C2 server. + +![Received stolen cookies on the C2 side](/assets/images/katz-and-mouse-game/image12.png) + +# Detection + +Below are the following behavioral detections that can be used to identify techniques used by information stealers: + + - [Web Browser Credential Access via Unusual Process](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_web_browser_credential_access_via_unusual_process.toml#L8) + - [Web Browser Credential Access via Unsigned Process](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_web_browser_credential_access_via_unsigned_process.toml#L8) + - [Access to Browser Credentials from Suspicious Memory](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_access_to_browser_credentials_from_suspicious_memory.toml#L8) + - [Failed Access Attempt to Web Browser Files](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_failed_access_attempt_to_web_browser_files.toml#L8) + - [Browser Debugging from Unusual Parent](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_browser_debugging_from_unusual_parent.toml#L3) + - [Potential Browser Information Discovery](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/discovery_potential_browser_information_discovery.toml#L8) + +Additionally, the following queries can be used for hunting diverse related abnormal behaviors: + +## Cookies access by an unusual process + +This query uses file open events and aggregate accesses by process, then looks for ones that are observed in unique hosts and with a low total access count: + +``` sql +FROM logs-endpoint.events.file-default* +| where event.category == "file" and event.action == "open" and file.name == "Cookies" and file.path like "*Chrome*" +| keep file.path, process.executable, agent.id +| eval process_path = replace(to_lower(process.executable), """c:\\users\\[a-zA-Z0-9\.\-\_\$]+\\""", "c:\\\\users\\\\user\\\\") +| stats agents_count = COUNT_DISTINCT(agent.id), access_count= count(*) by process_path +| where agents_count <= 2 and access_count <=2 +``` + +Below example of matches from diverse information stealers including the updated ones with new Chrome cookies stealing capabilities: + +![ES|QL query results for suspicious browser cookies file access](/assets/images/katz-and-mouse-game/image22.png) + +METASTEALER behavior tends to first terminate all running chrome instances then calls [```CoCreateInstance```](https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-cocreateinstance) to instantiate the Google Chrome [elevation service](https://chromium.googlesource.com/chromium/src/+/main/chrome/elevation_service/), this series of events can be expressed with the following EQL query: + +``` sql +sequence by host.id with maxspan=1s +[process where event.action == "end" and process.name == "chrome.exe"] with runs=5 +[process where event.action == "start" and process.name == "elevation_service.exe"] +``` + +![EQL query results for suspicious browser termination](/assets/images/katz-and-mouse-game/image4.png) + +The previous hunt indicates suspicious agents but doesn't identify the source process. By [enabling registry object access auditing through event 4663](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) on the Chrome Elevation service CLSID registry key ```{708860E0-F641-4611-8895-7D867DD3675B}```, we can detect unusual processes attempting to access that key: + +![Google Chrome Elevation COM registry access](/assets/images/katz-and-mouse-game/image9.png) + +``` sql +FROM logs-system.security-default* | where event.code == "4663" and winlog.event_data.ObjectName == "\\REGISTRY\\MACHINE\\SOFTWARE\\Classes\\CLSID\\{708860E0-F641-4611-8895-7D867DD3675B}" and not winlog.event_data.ProcessName in ("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe") and not winlog.event_data.ProcessName like "C:\\\\Program Files\\\\Google\\\\Chrome\\\\Application\\\\*\\\\elevation_service.exe" | stats agents_count = COUNT_DISTINCT(agent.id), access_count= count(*) by winlog.event_data.ProcessName | where agents_count <= 2 and access_count <=2 +``` + +Below is an example of matches on the METASTEALER malware while calling ```CoCreateInstance (CLSID_Elevator)```: + +![ES|QL query results for suspicious access to chrome elevation service registry](/assets/images/katz-and-mouse-game/image39.png) + +The [PHEMEDRONE](https://malpedia.caad.fkie.fraunhofer.de/details/win.phemedrone_stealer) stealer uses the [known](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) browser debugging method to collect cookies via Chromium API, this can be observed in the following screenshot where we can see an instance of NodeJs communicating with a browser instance with debugging enabled over port ```9222```: + +![PHEMEDRONE - network connection to chrome over port ```9222```](/assets/images/katz-and-mouse-game/image33.png) + +The following EQL query can be used to look for unusual processes performing similar behavior: + +``` sql +sequence by host.id, destination.port with maxspan=5s +[network where event.action == "disconnect_received" and + network.direction == "ingress" and + process.executable in~ ("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", +"C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe") and + source.address like "127.*" and destination.address like "127.*"] +[network where event.action == "disconnect_received" and network.direction == "egress" and not + process.executable in~ ("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", +"C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe") and source.address like "127.*" and destination.address like "127.*"] +``` + +![EQL query results for browser debugging activity](/assets/images/katz-and-mouse-game/image1.png) + +## Chrome Browser Spawned from an Unusual Parent + +The STEALC sample that uses ChromeKatz implementation spawns an instance of Google Chrome to load the user default profile, while looking for normal parent executables, it turns out it’s limited to Chrome signed parents and Explorer.exe, the following ES|QL query can be used to find unusual parents: + +``` sql +FROM logs-endpoint.events.process-* +| where event.category == "process" and event.type == "start" and to_lower(process.name) == "chrome.exe" and process.command_line like "*--profile-directory=Default*" +| eval process_parent_path = replace(to_lower(process.parent.executable), """c:\\users\\[a-zA-Z0-9\.\-\_\$]+\\""", "c:\\\\users\\\\user\\\\") +| stats agents_count = COUNT_DISTINCT(agent.id), total_executions = count(*) by process_parent_path +| where agents_count == 1 and total_executions <= 10 +``` + +![ES|QL query results for chrome browser spawned from an unusual parent](/assets/images/katz-and-mouse-game/image18.png) + +## Untrusted Binaries from Chrome Application folder + +Since the Chrome elevation service [trusts](https://github.com/chromium/chromium/blob/main/chrome/elevation_service/caller_validation.cc#L33-L56) binaries running from the Chrome ```program files``` folder, the following queries can be used to hunt for unsigned or untrusted binaries executed or loaded from there: + +### Unsigned DLLs loaded from google chrome application folder + +``` sql +FROM logs-endpoint.events.library* +| where event.category == "library" and event.action == "load" and to_lower(dll.path) like "c:\\\\program files\\\\google\\\\chrome\\\\application\\\\*" and not (dll.code_signature.trusted == true) +| keep process.executable, dll.path, dll.hash.sha256, agent.id +| stats agents_count = COUNT_DISTINCT(agent.id), total_executions = count(*) by process.executable, dll.path, dll.hash.sha256 +| where agents_count == 1 and total_executions <= 10 +``` + +### Unsigned executable launched from google chrome application folder + +``` sql +FROM logs-endpoint.events.process* +| where event.category == "library" and event.type == "start" and (to_lower(process.executable) like "c:\\\\program files\\\\google\\\\chrome\\\\application\\\\*" or to_lower(process.executable) like "c:\\\\scoped_dir\\\\program files\\\\google\\\\chrome\\\\application\\\\*") +and not (process.code_signature.trusted == true and process.code_signature.subject_name == "Goole LLC") +| keep process.executable,process.hash.sha256, agent.id +| stats agents_count = COUNT_DISTINCT(agent.id), total_executions = count(*) by process.executable, process.hash.sha256 +| where agents_count == 1 and total_executions <= 10 +``` + +![ES|QL query results for malicious DLL loaded by Chrome](/assets/images/katz-and-mouse-game/image6.png) + +# Conclusion + +Google has raised the bar implementing new security controls to protect cookie data within Chrome. As expected, this has caused malware developers to develop or integrate their own bypasses. We hope Google will continue to innovate to provide stronger protection for user data. + +Organizations and defenders should consistently monitor for unusual endpoint activity. While these new techniques may be successful, they are also noisy and detectable with the right security instrumentation, processes, and personnel. + +## Stealer Bypasses and MITRE ATT&CK + +Elastic uses the [MITRE ATT&CK](https://attack.mitre.org/) framework to document common tactics, techniques, and procedures that threats use against enterprise networks. + +### Tactics + +Tactics represent the why of a technique or sub-technique. It is the adversary’s tactical goal: the reason for performing an action. + + - [Credential Access](https://attack.mitre.org/tactics/TA0006/) + - [Defense Evasion](https://attack.mitre.org/tactics/TA0005/) + - [Discovery](https://attack.mitre.org/tactics/TA0007/) + - [Execution](https://attack.mitre.org/tactics/TA0002/) + +### Techniques + +Techniques represent how an adversary achieves a tactical goal by performing an action. + + - [Steal Web Session Cookie](https://attack.mitre.org/techniques/T1539/) + - [Process Injection](https://attack.mitre.org/techniques/T1055/) + - [Credentials from Password Stores](https://attack.mitre.org/techniques/T1555/) + - [System Information Discovery](https://attack.mitre.org/techniques/T1082/) + - [Process Discovery](https://attack.mitre.org/techniques/T1057/) + - [Inter-Process Communication: Component Object Model](https://attack.mitre.org/techniques/T1559/001/) + +## YARA + +Elastic Security has created YARA rules to identify this activity. + + - [Windows.Trojan.Stealc](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_Stealc.yar) + - [Windows.Infostealer.PhemedroneStealer](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Infostealer_PhemedroneStealer.yar) + - [Windows.Trojan.MetaStealer](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_MetaStealer.yar) + - [Windows.Trojan.Xeno](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_Xeno.yar) + - [Windows.Trojan.Lumma](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_Lumma.yar) + - [Windows.Infostealer.Generic](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Infostealer_Generic.yar) + +## Observations + +All observables are also available for [download](https://github.com/elastic/labs-releases/tree/main/indicators/app-bound_bypass) in both ECS and STIX format. + +The following observables were discussed in this research. + +| Observable | Type | Name | Reference | +|-----|-----|-----|-----| +| 27e4a3627d7df2b22189dd4bebc559ae1986d49a8f4e35980b428fadb66cf23d | SHA-256 | num.exe | STEALC | +| 08d9d4e6489dc5b05a6caa434fc36ad6c1bd8c8eb08888f61cbed094eac6cb37 | SHA-256 | HardCoreCrack.exe | PHEMEDRONE | +| 43cb70d31daa43d24e5b063f4309281753176698ad2aba9c557d80cf710f9b1d | SHA-256 | Ranginess.exe | METASTEALER | +| 84033def9ffa70c7b77ce9a7f6008600c0145c28fe5ea0e56dfafd8474fb8176 | SHA-256 | | LUMMA | +| b74733d68e95220ab0630a68ddf973b0c959fd421628e639c1b91e465ba9299b | SHA-256 | XenoStealer.exe | XENOSTEALER | + + +## References +The following were referenced throughout the above research: + + - [https://developer.chrome.com/release-notes/127](https://developer.chrome.com/release-notes/127) +- [https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html) diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/kernel_etw_best_etw.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/kernel_etw_best_etw.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/kernel_etw_best_etw.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/kernel_etw_best_etw.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/knotweed_assessment_summary.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/knotweed_assessment_summary.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/knotweed_assessment_summary.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/knotweed_assessment_summary.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/linux_detection_engineering_with_auditd.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/linux_detection_engineering_with_auditd.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/linux_detection_engineering_with_auditd.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/linux_detection_engineering_with_auditd.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/luna_ransomware_attack_pattern.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/luna_ransomware_attack_pattern.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/luna_ransomware_attack_pattern.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/luna_ransomware_attack_pattern.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/monitoring_okta_threats_with_elastic_security.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/monitoring_okta_threats_with_elastic_security.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/monitoring_okta_threats_with_elastic_security.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/monitoring_okta_threats_with_elastic_security.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/naplistener_more_bad_dreams_from_the_developers_of_siestagraph.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/naplistener_more_bad_dreams_from_the_developers_of_siestagraph.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/naplistener_more_bad_dreams_from_the_developers_of_siestagraph.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/naplistener_more_bad_dreams_from_the_developers_of_siestagraph.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_dynamic_configuration_extraction.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_dynamic_configuration_extraction.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_dynamic_configuration_extraction.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_dynamic_configuration_extraction.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/nimbuspwn_leveraging_vulnerabilities_to_exploit_linux_via_privilege_escalation.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/nimbuspwn_leveraging_vulnerabilities_to_exploit_linux_via_privilege_escalation.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/nimbuspwn_leveraging_vulnerabilities_to_exploit_linux_via_privilege_escalation.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/nimbuspwn_leveraging_vulnerabilities_to_exploit_linux_via_privilege_escalation.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/not_sleeping_anymore_somnirecords_wakeup_call.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/not_sleeping_anymore_somnirecords_wakeup_call.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/not_sleeping_anymore_somnirecords_wakeup_call.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/not_sleeping_anymore_somnirecords_wakeup_call.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/okta_and_lapsus_what_you_need_to_know.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/okta_and_lapsus_what_you_need_to_know.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/okta_and_lapsus_what_you_need_to_know.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/okta_and_lapsus_what_you_need_to_know.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/operation_bleeding_bear.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/operation_bleeding_bear.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/operation_bleeding_bear.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/operation_bleeding_bear.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/parallax_payload_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/parallax_payload_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/parallax_payload_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/parallax_payload_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/peeling_back_the_curtain_with_call_stacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/peeling_back_the_curtain_with_call_stacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/peeling_back_the_curtain_with_call_stacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/peeling_back_the_curtain_with_call_stacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/phoreal_malware_targets_the_southeast_asian_financial_sector.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/phoreal_malware_targets_the_southeast_asian_financial_sector.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/phoreal_malware_targets_the_southeast_asian_financial_sector.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/phoreal_malware_targets_the_southeast_asian_financial_sector.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/pikabot_i_choose_you.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/pikabot_i_choose_you.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/pikabot_i_choose_you.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/pikabot_i_choose_you.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/playing_defense_against_gamaredon_group.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/playing_defense_against_gamaredon_group.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/playing_defense_against_gamaredon_group.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/playing_defense_against_gamaredon_group.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/practical_security_engineering_stateful_detection.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/practical_security_engineering_stateful_detection.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/practical_security_engineering_stateful_detection.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/practical_security_engineering_stateful_detection.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/primer_on_persistence_mechanisms.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/primer_on_persistence_mechanisms.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/primer_on_persistence_mechanisms.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/primer_on_persistence_mechanisms.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md similarity index 99% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md index 7c239d1f48127..6bfc447cff63c 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md @@ -1,7 +1,7 @@ --- title: "情報窃取から端末を守る" slug: "protecting-your-devices-from-information-theft-keylogger-protection-jp" -date: "2020-05-30" +date: "2024-05-30" subtitle: "Windows APIの挙動を用いたキーロガー検知" description: "本記事ではElastic Securityにおいて、エンドポイント保護を担っているElastic Defendに今年(バージョン8.12より)新たに追加された、キーロガーおよびキーロギング検出機能について紹介します。" author: diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_malware_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_malware_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_malware_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_malware_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_in_the_honeypot_how_we_capture_keys.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_in_the_honeypot_how_we_capture_keys.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_in_the_honeypot_how_we_capture_keys.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_in_the_honeypot_how_we_capture_keys.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_interrupted_sodinokibi_and_the_supply_chain.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_interrupted_sodinokibi_and_the_supply_chain.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_interrupted_sodinokibi_and_the_supply_chain.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_interrupted_sodinokibi_and_the_supply_chain.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ref2924_howto_maintain_persistence_as_an_advanced_threat.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ref2924_howto_maintain_persistence_as_an_advanced_threat.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ref2924_howto_maintain_persistence_as_an_advanced_threat.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ref2924_howto_maintain_persistence_as_an_advanced_threat.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/revisiting_blister_new_developments_of_the_blister_loader.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/revisiting_blister_new_developments_of_the_blister_loader.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/revisiting_blister_new_developments_of_the_blister_loader.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/revisiting_blister_new_developments_of_the_blister_loader.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sandboxing_antimalware_products.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sandboxing_antimalware_products.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sandboxing_antimalware_products.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sandboxing_antimalware_products.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sequel_on_persistence_mechanisms.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sequel_on_persistence_mechanisms.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sequel_on_persistence_mechanisms.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sequel_on_persistence_mechanisms.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/siestagraph_new_implant_uncovered_in_asean_member_foreign_ministry.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/siestagraph_new_implant_uncovered_in_asean_member_foreign_ministry.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/siestagraph_new_implant_uncovered_in_asean_member_foreign_ministry.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/siestagraph_new_implant_uncovered_in_asean_member_foreign_ministry.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/signaling_from_within_how_ebpf_interacts_with_signals.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/signaling_from_within_how_ebpf_interacts_with_signals.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/signaling_from_within_how_ebpf_interacts_with_signals.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/signaling_from_within_how_ebpf_interacts_with_signals.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sinking_macos_pirate_ships.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sinking_macos_pirate_ships.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sinking_macos_pirate_ships.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sinking_macos_pirate_ships.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sneak_peek_elastic_2022_global_threat_report.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sneak_peek_elastic_2022_global_threat_report.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sneak_peek_elastic_2022_global_threat_report.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sneak_peek_elastic_2022_global_threat_report.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/spring_cleaning_with_latrodectus.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/spring_cleaning_with_latrodectus.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/spring_cleaning_with_latrodectus.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/spring_cleaning_with_latrodectus.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/starter_guide_to_understanding_okta.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/starter_guide_to_understanding_okta.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/starter_guide_to_understanding_okta.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/starter_guide_to_understanding_okta.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/stixy_situations_ecsaping_your_threat_data.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/stixy_situations_ecsaping_your_threat_data.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/stixy_situations_ecsaping_your_threat_data.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/stixy_situations_ecsaping_your_threat_data.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/stopping_vulnerable_driver_attacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/stopping_vulnerable_driver_attacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/stopping_vulnerable_driver_attacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/stopping_vulnerable_driver_attacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/storm_on_the_horizon.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/storm_on_the_horizon.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/storm_on_the_horizon.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/storm_on_the_horizon.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_esql_query_and_rule_validation.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_esql_query_and_rule_validation.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_esql_query_and_rule_validation.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_esql_query_and_rule_validation.md diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_security_integrating_amazon_bedrock.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_security_integrating_amazon_bedrock.md new file mode 100644 index 0000000000000..9ba2b033a851e --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_security_integrating_amazon_bedrock.md @@ -0,0 +1,237 @@ +--- +title: "Streamlining Security: Integrating Amazon Bedrock with Elastic" +slug: "streamlining-security-integrating-amazon-bedrock" +date: "2024-11-14" +description: "This article will guide you through the process of setting up the Amazon Bedrock integration and enabling Elastic's prebuilt detection rules to streamline your security operations." +author: + - slug: shashank-k-s +image: "Security Labs Images 36.jpg" +category: + - slug: security-research +--- + +# Preamble + +In the ever-evolving landscape of cloud computing, maintaining robust security while ensuring compliance is a critical challenge for organizations of all sizes. As businesses increasingly adopt the cloud, the complexity of managing and securing data across various platforms grows exponentially. + +[Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html), with its powerful foundation of machine learning and AI services, offers a scalable, secure environment for organizations to develop and deploy intelligent applications. However, to fully harness the potential of these innovations, it’s essential to implement a streamlined approach to security and compliance. + +Integrating Elastic with Amazon Bedrock can significantly enhance security monitoring and compliance management within your cloud environment. This integration leverages Elastic’s search, observability, and security capabilities to optimize how you manage and secure applications and data hosted on Amazon Bedrock. + +Elastic’s [security information and event management (SIEM) capabilities](https://www.elastic.co/security/siem) can be used to analyze logs and monitor events generated by applications running on Amazon Bedrock. This allows for the detection of potential security threats in real-time and automated response actions to mitigate risks. + +This article will guide you through the process of setting up Amazon Bedrock integration and enabling our prebuilt detection rules to streamline your security operations. We will cover the following key aspects: + + 1. **Prerequisites for Elastic Amazon Bedrock Integration:** Understanding the core requirements for setting up Elastic Amazon Bedrock integration for cloud security. + 2. **Setting Up Amazon Bedrock Integration**: Step-by-step instructions to set up Amazon Bedrock in your existing AWS infrastructure. + 3. **Enabling Prebuilt Security Rules**: How to leverage [prebuilt rules](https://www.elastic.co/guide/en/security/current/rules-ui-management.html) to detect high-confidence policy violations and other security threats. + 4. **Exploring High-Confidence Misconduct Blocks Detection:** An in-depth look at a specific prebuilt rule designed to detect high-confidence misconduct blocks within Amazon Bedrocklogs. + 5. **Demonstrate an Exploit Case Scenario for Amazon Bedrock:** Using a sample python script to simulate interactions with an Amazon Bedrock model for testing exploit scenarios that could trigger Elastic prebuilt detection rules. + +# Prerequisites for Elastic Amazon Bedrock Integration + +## Elastic Integration for Amazon Bedrock + +The Amazon Bedrock integration collects Amazon Bedrock model invocation logs and runtime metrics with Elastic Agent. For a deeper dive on the integration, documentation can be found in our [documentation.](https://www.elastic.co/docs/current/integrations/aws_bedrock) + +Below are the list of prerequisites to have a complete and successful configuration of Amazon Bedrock Elastic Integration: + + * AWS Account Setup + * Elastic Cloud Requirements + * Terraform (Optional) + +### AWS Account Setup + + * **Active AWS Account**: Ensure you have an active AWS account with the appropriate permissions to deploy and manage resources on Amazon Bedrock. + * **Amazon Bedrock Setup**: Confirm that Amazon Bedrock is correctly configured and operational within your AWS environment. This includes setting up AI models, datasets, and other resources necessary for your applications. Refer to [Getting started with Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started.html) for additional information on the setup. + * **IAM Roles and Permissions**: Create or configure Identity and Access Management (IAM) roles with the necessary permissions to allow Elastic to access Amazon Bedrock resources. These roles should have sufficient privileges to read logs, metrics, and traces from AWS services. Additional details of the requirements can be found in our [AWS documentation](https://www.elastic.co/docs/current/integrations/aws#requirements). + +### Elastic Cloud Requirements + +| [Version](https://www.elastic.co/docs/current/integrations/aws_bedrock#changelog) | 0.7.0 (Beta) | +| :---- | :---- | +| **Compatible Kibana version(s)** | 8.13.0 or higher for integration version 0.2.0 and above. Minimum Kibana Version 8.12.0 | +| [**Supported Serverless project types**](https://www.elastic.co/docs/current/integrations/serverless/support) | Security Observability | +| [**Subscription level**](https://www.elastic.co/subscriptions) | Basic | +| [**Level of support**](https://www.elastic.co/docs/current/integrations/support) | Elastic | + +**Note:** Since the integration is in Beta Release Stage, please enable ***Display Beta Integrations in the browse integration section of the Management pane in your Elastic stack.*** + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image1.png) + +### Terraform + +[Terraform](https://www.terraform.io/) is an open source infrastructure-as-code (IaC) tool created by HashiCorp that allows you to define, provision, and manage cloud and on-premises infrastructure in a consistent and repeatable way. + +This is an optional step, but good to have as the next sections of the article we use this tool to set up the required AWS Infrastructure. Deep dive on installation and docs can be found [here](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli). + +# Setting Up Amazon Bedrock Integration + +In this section of the article, we will walk through the steps to set up Amazon Bedrock integration with Elastic in two parts: + + 1. **Setting Up AWS Infrastructure with Terraform**: In this section, we'll walk through the steps to set up an AWS infrastructure using Terraform. We'll create an S3 bucket, an EC2 instance with the necessary IAM roles and policies to access the S3 bucket, and configure security groups to allow SSH access. This setup is ideal for scenarios where you need an EC2 instance to interact with S3, such as for data processing or storage. + 2. **Elastic Agent and Integration Setup**: In this section, we'll walk through the steps to install Elastic Agent on the AWS EC2 instance and Configure the Amazon Bedrock Integration. + +### Setting Up AWS Infrastructure with Terraform + +The high-level configuration process will involve the following steps: + + 1. Configuring ```providers.tf``` + 2. Configuring ```variables.tf``` + 3. Configuring ```outputs.tf``` + 4. Configuring ```main.tf``` + +The ```providers.tf``` file typically contains the configuration for any Terraform providers you are using in your project. In our example, it includes the configuration for the AWS provider. Here is the [sample content](https://gist.github.com/shashank-elastic/290218cd4e787f65fbcbfd6423a0ca85#file-providers-tf) of our ```providers.tf``` file. The ```profile``` mentioned in the ```providers.tf``` should be configured in the user’s space of the AWS credentials file ```(~/.aws/credentials)```. Refer to [Configuration and credential file settings \- AWS Command Line Interface](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html#cli-configure-files-format-profile), which is also highlighted in the credential section of Elastic’s [AWS documentation](https://www.elastic.co/docs/current/integrations/aws#aws-credentials). + +The ```variables.tf``` file contains the variable definitions used throughout your Terraform configuration. For our scenario, it includes the definition for the aws\_region and resource\_labels. Here is the [sample content](https://gist.github.com/shashank-elastic/290218cd4e787f65fbcbfd6423a0ca85#file-variables-tf) of our ```variables.tf``` file. + +The ```outputs.tf``` file typically contains the output definitions for your Terraform configuration. These outputs can be used to display useful information after your infrastructure is provisioned. Here is the [sample content](https://gist.github.com/shashank-elastic/290218cd4e787f65fbcbfd6423a0ca85#file-outputs-tf) of our ```outputs.tf``` file + +The ```main.tf``` file typically contains the collection of all of these resources such as data sources, S3 bucket and bucket policy, Amazon Bedrock Model Invocation Log configuration, SQS Queue configuration, IAM Role and Policies required by the EC2 instance that would install Elastic Agent and stream logs and Amazon Bedrock Guardrail configuration. Here is the [sample content](https://gist.github.com/shashank-elastic/290218cd4e787f65fbcbfd6423a0ca85#file-main-tf) of our ```main.tf``` file. + +Once the ```main.tf``` is configured according to the requirements we can then initialize, plan and apply the terraform configuration. + +``` +terraform init // initializes the directory and sets up state files in backend +terraform plan // command creates an execution plan +terraform apply // command applies the configuration aka execution step +``` + +To tear down the infrastructure that terraform has previously created one can use the ```terraform destroy``` command. + +Once the infrastructure setup is completed, necessary resource identifiers are provided via ```outputs.tf.``` We can conduct a basic verification of the infrastructure created using the following steps: + + 1. Verify the S3 Bucket created from the Terraform, one can either use aws cli command reference [list-buckets — AWS CLI 1.34.10 Command Reference](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-buckets.html) or navigate via AWS console to verify the same. 2. Verify the SQS Queue created from the terraform, one can either use aws cli command reference [list-queues — AWS CLI 1.34.10 Command Reference](https://docs.aws.amazon.com/cli/latest/reference/sqs/list-queues.html) or navigate via AWS console to verify the same. + 3. Verify the EC2 Instance created from the AWS console and connect to the ec2-instance via [Connect using EC2 Instance Connect \- Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html#ec2-instance-connect-connecting-console) and run ```aws s3 ls example-bucket-name``` to check if the instance has access to the created S3 bucket. + 4. Verify the Amazon Bedrock Guardrail created from the Terraform, once can either use Amazon Bedrock API [ListGuardrails \- Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListGuardrails.html) or navigate via AWS console to verify the same. + +### Setting Up Elastic Agent and Integration Setup + +To install Elastic Agent on the AWS EC2 instance and configure the Amazon Bedrock integration, create an agent policy using the guided steps in [Elastic Agent policies | Fleet and Elastic Agent Guide \[8.15\]](https://www.elastic.co/guide/en/fleet/current/agent-policy.html). Then log into to the ec2-instance created in the infrastructure setup steps via [Connect using EC2 Instance Connect \- Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html#ec2-instance-connect-connecting-console), and install the elastic agent using the guided steps in [Install Elastic Agents | Fleet and Elastic Agent Guide \[8.15\]](https://www.elastic.co/guide/en/fleet/current/elastic-agent-installation.html). During the agent installation, remember to select the agent policy created at the beginning of this setup process and use the relevant agent installation method depending on the instance created. Finally, ensure the agent is properly configured and there is incoming data from the agent. + +To configure the Amazon Bedrock integration in the newly-created policy, add the Amazon Bedrock integration using the guided steps: [Add an Elastic Agent integration to a policy](https://www.elastic.co/guide/en/fleet/current/add-integration-to-policy.html). Enable Beta Integrations to use Amazon Bedrock integration as displayed in the image below. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image4.png) + +Configure the Integration with AWS Access Keys to access the AWS account where Amazon Bedrock is configured. Use the Collect Logs from S3 bucket and specify the Bucket ARN created in the setup step. Please note to use either the S3 Bucket or the SQS Queue URL during the setup and *not both*. Add this integration to the existing policy where the ec2-instance is configured. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image8.png) + +### Verify Amazon Bedrock Model Invocation Log Ingestions + +Once the Elastic Agent and integration setup is completed, we can conduct a basic verification of the integration to determine if the logs are being ingested as expected by using the following example API call: + +``` +aws bedrock-runtime converse \ +--model-id "anthropic.claude-3-5-sonnet-20240620-v1:0" \ +--messages '[{"role":"user","content":[{"text":"Hello "}]}]' \ +--inference-config '{"maxTokens":2000,"stopSequences":[],"temperature":1,"topP":0.999}' \ +--additional-model-request-fields '{"top_k":250}' \ +--region us-east-1 +``` + +The example API call assumes a working setup with aws cli and there is access for the foundational model [Anthropic Claude Messages API \- Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages.html). If the user does not have access to the model one can simply request access for models from the model-access page as suggested in [Access Amazon Bedrock foundation models](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html), or we can optionally change the API call to any existing model the user can access. + +On successful execution of the above API call, the Amazon Bedrock Model invocation logs are populated and in Kibana ```logs-aws_bedrock.invocation-default``` should be populated with those invocation logs. We can use the following simple ES|QL query to return recently ingested events. + +``` +from logs-aws_bedrock.invocation-* | LIMIT 10 +``` + +# Enable Prebuilt Detection Rules + +To enable prebuilt detection rules, first login to the elastic instance and from the left pane navigation navigate to Security → Rules → Detection rules (SIEM). Filter for “Data Source: Amazon Bedrock” from the tags section. + +Enable the available prebuilt rules. For prebuilt rules, the Setup information contains a helper guide to setup AWS Guardrails for Amazon Bedrock, which is accomplished in the [Setting Up AWS Infrastructure with Terraform](?tab=t.0#bookmark=id.5wbf10usmxhz) step if the example is followed correctly and the terraform has the Amazon Bedrock Guardrail configuration. Please note this setup is vital for some of the rules to generate alerts–we need to ensure the guardrail is set up accordingly if skipped in the infrastructure setup stage. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image3.png) + +# Exploring High-Confidence Misconduct Blocks Detection + +Let’s simulate a real world scenario in which a user queries a topic denied to the Amazon Bedrock model. Navigate to the Amazon Bedrock section in the Amazon UI Console, and use the left navigation pane to navigate to the Guardrails subsection under Safeguards. Use the sample guardrail created during our setup instructions for this exercise, and use the test option to run a model invocation with the guardrails and query the denied topic configured. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image6.png) + +Repeat the query at least 6 times as the prebuilt rule is designed to alert on greater than 5 high confidence blocks. When the Alert schedule runs, we can see an alert populate for ```Unusual High Confidence Misconduct Blocks Detected.``` + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image7.png) + +# Demonstrate an Exploit Case Scenario for Amazon Bedrock + +To simulate an Amazon Bedrock Security bypass, we need an exploit simulation script to interact with Amazon Bedrock models. The exploit script example we provide simulates the following attack pattern: + + * Attempts multiple successive requests to use denied model resources within AWS Bedrock + * Generates multiple successive validation exception errors within Amazon Bedrock + * User consistently generates high input token counts, submits numerous requests, and receives large responses that mimic patterns of resource exhaustion + * Combines repeated high-confidence 'BLOCKED' actions coupled with specific violation codes such as 'MISCONDUCT', indicating persistent misuse or attempts to probe the model's ethical boundaries + +```py +class BedrockModelSimulator: + def __init__(self, profile_name, region_name): + // Create a Boto3 Session Client for Ineration + def generate_args_invoke_model(self, model_id, user_message, tokens): // Generate Model Invocation parameters + guardrail_id = <> + guardrail_version = <> + + guardrail_config = { + "guardrailIdentifier": guardrail_id, + "guardrailVersion": guardrail_version, + "trace": "enabled" + } + conversation = [ + { + "role": "user", + "content": [{"text": user_message}], + } + ] + inference_config = {"maxTokens": tokens, "temperature": 0.7, "topP": 1} + additional_model_request_fields = {} + + kwargs = { + "modelId": model_id, + "messages": conversation, + "inferenceConfig": inference_config, + "additionalModelRequestFields": additional_model_request_fields + "guardrailConfig" : guardrail_config + } + return kwargs + + def invoke_model(self, invocation_arguments): + for _ in range(count): + try: + // Invoke Model With right invocation_arguments + except ClientError as e: + // Error meesage + +def main(): + profile_name = <> + region_name = 'us-east-1' + denied_model_id = // Use a denied model + denied_model_user_message = // Sample Message + available_model_id = // Use an available model + validation_exception_user_message = // Sample Message + resource_exploit_user_message = // A very big message for resource exhuastion + denied_topic_user_message = // Sample Message that can query denied topic configured + simulator = BedrockModelSimulator(profile_name, region_name) + denied_model_invocation_arguments = simulator.generate_args_invoke_model(denied_model_id, denied_model_user_message, 200) + simulator.invoke_model(denied_model_invocation_arguments) + validation_exception_invocation_arguments = simulator.generate_args_invoke_model(available_model_id, validation_exception_user_message, 6000) + simulator.invoke_model(validation_exception_invocation_arguments) + resource_exhaustion_invocation_arguments = simulator.generate_args_invoke_available_model(available_model_id, resource_exploit_user_message, 4096) + simulator.invoke_model(resource_exhaustion_invocation_arguments) + denied_topic_invocation_arguments = simulator.generate_args_invoke_available_model_guardrail(available_model_id, denied_topic_user_message, 4096) + simulator.invoke_model(denied_topic_invocation_arguments) + +if __name__ == "__main__": + main() +``` + +**Note:** The GUARDRAIL\_ID and GUARDRAIL\_VERSION can be found in ```outputs.tf``` + +When executed in a controlled environment, the provided script simulates an exploit scenario that would generate detection alerts in Elastic Security. When analyzing these alerts using the Elastic Attack Discovery feature, the script creates attack chains that show the relationships between various alerts, giving analysts a clear understanding of how multiple alerts might be part of a larger attack. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image2.png) + +# Conclusion + +Integrating Elastic with Amazon Bedrock empowers organizations to maintain a secure and compliant cloud environment while maximizing the benefits of AI and machine learning. By leveraging Elastic’s advanced security and observability tools, businesses can proactively detect threats, automate compliance reporting, and gain deeper insights into their cloud operations. Increasingly, enterprises rely on opaque data sources and technologies to reveal the most serious threats-- our commitment to transparent security is evident in our open artifacts, integrations, and source code. \ No newline at end of file diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/testing_okta_visibility_and_detection_dorothy.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/testing_okta_visibility_and_detection_dorothy.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/testing_okta_visibility_and_detection_dorothy.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/testing_okta_visibility_and_detection_dorothy.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/thawing_the_permafrost_of_icedid_summary.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/thawing_the_permafrost_of_icedid_summary.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/thawing_the_permafrost_of_icedid_summary.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/thawing_the_permafrost_of_icedid_summary.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/the_elastic_container_project.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/the_elastic_container_project.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/the_elastic_container_project.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/the_elastic_container_project.md diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/tricks_and_treats.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/tricks_and_treats.md new file mode 100644 index 0000000000000..d7a98fe2b7258 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/tricks_and_treats.md @@ -0,0 +1,141 @@ +--- +title: "Tricks and Treats: GHOSTPULSE’s new pixel-level deception" +slug: "tricks-and-treats" +date: "2024-10-19" +description: "The updated GHOSTPULSE malware has evolved to embed malicious data directly within pixel structures, making it harder to detect and requiring new analysis and detection techniques." +author: + - slug: salim-bitam +image: "tricks-and-treats.jpg" +category: + - slug: malware-analysis +tags: + - ghostpulse + - lummastealer + - ref8207 +--- + +## Update + +This research covers an update to stage 2 of GHOSTPULSE, [originally disclosed](https://www.elastic.co/security-labs/ghostpulse-haunts-victims-using-defense-evasion-bag-o-tricks#stage-2) by Elastic Security Labs in October 2023. + +## Key takeaways + +1. GHOSTPULSE has shifted from using the IDAT chunk of PNG files to embedding its encrypted configuration and payload within the pixel structure. +1. Recent campaigns involve tricking victims with creative social engineering techniques, such as CAPTCHA validations that trigger malicious commands through Windows keyboard shortcuts. +1. Elastic Security has enhanced its YARA rules and updated the configuration extractor tool to detect and analyze both the old and new versions of GHOSTPULSE. + +## Preamble + +The GHOSTPULSE malware family (also known as HIJACKLOADER or IDATLOADER) has continuously evolved since its discovery in 2023, evading detection with increasingly developed techniques. + +In its earlier iterations, GHOSTPULSE abused the IDAT chunk of PNG files to hide malicious payloads, as detailed in a [previous article from Elastic Security Labs](https://www.elastic.co/security-labs/ghostpulse-haunts-victims-using-defense-evasion-bag-o-tricks). However, recent analysis has uncovered a significant change in its algorithm. Instead of extracting the payload from the IDAT chunk, the latest version of GHOSTPULSE now parses the pixels of the image to retrieve its configuration and payload. This new approach involves embedding malicious data directly within the pixel structure. + +In this research publication, we’ll explore this new pixel-based algorithm and compare it with the previous IDAT chunk technique with updated detection rules. + +## Introduction + +Recently, we've observed several campaigns involving LUMMA STEALER using GHOSTPULSE as its loader, a topic also explored by [HarfangLab](https://harfanglab.io/insidethelab/hijackloader-abusing-genuine-certificates/). These campaigns stand out due to their [creative social engineering tactics](https://www.secureworks.com/blog/fake-human-verification-prompt-delivers-infostealers). Victims are tricked into validating a CAPTCHA, but the website instructs them to execute a series of Windows keyboard shortcuts instead of the usual process. These shortcuts trigger a command copied to the clipboard by malicious JavaScript. This leads to a PowerShell script being executed, initiating the infection chain by downloading and executing a GHOSTPULSE payload. + +![Social engineer lure website](/assets/images/tricks-and-treats/image1.png "Lure website") + +In previous versions of GHOSTPULSE, it was delivered as part of a multi-file package. This package typically contained a benign executable, an infected DLL loaded by the executable, and a PNG file storing the encrypted configuration. + +However, in the latest version, GHOSTPULSE has streamlined its deployment. Now, the entire package consists of a single file—a benign but compromised executable that includes the PNG file within its resources section. + +![Large embedded PNG file in the resources section](/assets/images/tricks-and-treats/image2.png "Large embedded PNG file in the resources section") + +## Technical analysis + +The updated second stage of the malware retains much of its previous structure, including using the same hashing algorithm for resolving Windows API names. However, the most significant change is in how the malware now locates its configuration, which holds both the payload and critical instructions for its deployment. + +The following is a screenshot showing the pseudocode of both implementations: + +![Pseudocode code comparison between old and new algorithm](/assets/images/tricks-and-treats/image4.png "Pseudocode code comparison between old and new algorithm") + +In earlier versions, GHOSTPULSE would parse a PNG file for an encrypted data blob, which was divided into chunks and stored sequentially. The malware’s parsing process was straightforward: it would search for a specific marker within the file—in this case, the IDAT string. Once found, the malware would check for a 4-byte tag that followed the string. The encrypted chunk would be extracted if this tag matched the expected value. This process continues for every occurrence of the IDAT string that comes after until the full encrypted payload is collected. + +In the new version, the encrypted configuration is stored in the pixels of the image. The malware constructs a byte array by extracting each pixel's `RED`, `GREEN`, and `BLUE` (RGB) values sequentially using standard Windows APIs from the [GdiPlus(GDI+)](https://learn.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-gdi-start) library. Once the byte array is built, the malware searches for the start of a structure that contains the encrypted GHOSTPULSE configuration, including the XOR key needed for decryption. It does this by looping through the byte array in 16-byte blocks. For each block, the first 4 bytes represent a CRC32 hash, and the next 12 bytes are the data to be hashed. The malware computes the CRC32 of the 12 bytes and checks if it matches the hash. If a match is found, it extracts the offset of the encrypted GHOSTPULSE configuration, its size, and the 4-byte XOR key, and then XOR decrypts it. + +The following diagram provides a visual breakdown of this process: + +![](/assets/images/tricks-and-treats/image5.png) + +## Updated configuration extractor + +Based on these findings, we have updated our configuration extractor to support both versions of GHOSTPULSE. This tool takes a PNG file as input and outputs the embedded payload. You can find the updated tool in our [labs-releases repository](https://github.com/elastic/labs-releases/tree/main/tools/ghostpulse). + +![](/assets/images/tricks-and-treats/image3.png) + +## Detecting GHOSTPULSE with YARA + +The original [GHOSTPULSE YARA](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_GhostPulse.yar) rule still prevents the final stage of an infection and is built into Elastic Defend. The updated sample can be detected using the following YARA rules and will be included with Elastic Defend in a future release. + +Elastic Security has updated the GHOSTPULSE YARA rules to identify this activity: + +``` +rule Windows_Trojan_GHOSTPULSE_1 { + meta: + author = "Elastic Security" + creation_date = "2024-10-15" + last_modified = "2024-10-15" + os = "Windows" + arch = "x86" + category_type = "Trojan" + family = "GHOSTPULSE" + threat_name = "Windows.Trojan.GHOSTPULSE" + license = "Elastic License v2" + + strings: + $stage_1 = { 49 63 D0 42 8B 0C 0A 41 03 CA 89 0C 1A 8B 05 ?? ?? ?? ?? 44 03 C0 8B 05 ?? ?? ?? ?? 44 3B C0 } + $stage_2 = { 48 89 01 48 8B 84 24 D8 00 00 00 48 8B 4C 24 78 8B 49 0C 89 08 C7 44 24 44 00 00 00 00 } + + condition: + any of them +} + +rule Windows_Trojan_GHOSTPULSE_2 { + meta: + author = "Elastic Security" + creation_date = "2024-10-10" + last_modified = "2024-10-10" + os = "Windows" + arch = "x86" + category_type = "Trojan" + family = "GHOSTPULSE" + threat_name = "Windows.Trojan.GHOSTPULSE" + license = "Elastic License v2" + + strings: + $a1 = { 48 83 EC 18 C7 04 24 00 00 00 00 8B 04 24 48 8B 4C 24 20 0F B7 04 41 85 C0 74 0A 8B 04 24 FF C0 89 04 24 EB E6 C7 44 24 08 00 00 00 00 8B 04 24 FF C8 8B C0 48 8B 4C 24 20 0F B7 04 41 83 F8 5C } + + condition: + all of them +} +``` + +## Conclusion + +In summary, the GHOSTPULSE malware family has evolved since its release in 2023, with this recent update marking one of the most significant changes. + +As attackers continue to innovate, defenders must adapt by utilizing updated tools and techniques to mitigate these threats effectively. We are excited to share our newly developed configuration extractor tool, designed to analyze the older and newer versions of GHOSTPULSE. This tool empowers researchers and cybersecurity professionals by providing enhanced capabilities for understanding and combating these evolving threats. As the landscape of cyber threats changes, collaboration, and innovation remain essential for effective protection. + +## Observations + +All observables are also available for [download](https://github.com/elastic/labs-releases/tree/main/indicators/ghostpulse) in both ECS and STIX format. + +The following observables were discussed in this research. + +| Observable | Type | Name | Reference | +|------------------------------------------------------------------|-------------|-----------------|------------------------------------------| +| `57ebf79c384366162cb0f13de0de4fc1300ebb733584e2d8887505f22f877077` | SHA-256 | `Setup.exe` | GHOSTPULSE sample | +| `b54d9db283e6c958697bfc4f97a5dd0ba585bc1d05267569264a2d700f0799ae` | SHA-256 | `Setup_light.exe` | GHOSTPULSE sample | +| `winrar01.b-cdn[.]net` | domain-name | | Infrastructure hosting GHOSTPULSE sample | +| `reinforcenh[.]shop` | domain-name | | LUMMASTEALER C2 | +| `stogeneratmns[.]shop` | domain-name | | LUMMASTEALER C2 | +| `fragnantbui[.]shop` | domain-name | | LUMMASTEALER C2 | +| `drawzhotdog[.]shop` | domain-name | | LUMMASTEALER C2 | +| `vozmeatillu[.]shop` | domain-name | | LUMMASTEALER C2 | +| `offensivedzvju[.]shop` | domain-name | | LUMMASTEALER C2 | +| `ghostreedmnu[.]shop` | domain-name | | LUMMASTEALER C2 | +| `gutterydhowi[.]shop` | domain-name | | LUMMASTEALER C2 | +| `riderratttinow[.]shop` | domain-name | | LUMMASTEALER C2 | \ No newline at end of file diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md similarity index 99% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md index 4775edad80247..1767d5edd4c94 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md @@ -230,7 +230,7 @@ PIPEDANCE is designed to conduct covert operations using named pipes and has var ### Detection -- [Suspicious Windows Service Execution](https://github.com/elastic/endpoint-rules/blob/main/rules/privilege_escalation_suspicious_services_child.toml) +- [Suspicious Windows Service Execution](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/windows/privilege_escalation_suspicious_windows_service_execution.toml) - [NullSessionPipe Registry Modification](https://www.elastic.co/guide/en/security/current/nullsessionpipe-registry-modification.html) - [Potential Lateral Tool Transfer via SMB Share](https://www.elastic.co/guide/en/security/master/potential-lateral-tool-transfer-via-smb-share.html) diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unlocking_power_safely_privilege_escalation_via_linux_process_capabilities.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unlocking_power_safely_privilege_escalation_via_linux_process_capabilities.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unlocking_power_safely_privilege_escalation_via_linux_process_capabilities.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unlocking_power_safely_privilege_escalation_via_linux_process_capabilities.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unmasking_financial_services_intrusion_ref0657.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unmasking_financial_services_intrusion_ref0657.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unmasking_financial_services_intrusion_ref0657.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unmasking_financial_services_intrusion_ref0657.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unpacking_icedid.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unpacking_icedid.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unpacking_icedid.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unpacking_icedid.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unveiling_malware_behavior_trends.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unveiling_malware_behavior_trends.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unveiling_malware_behavior_trends.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unveiling_malware_behavior_trends.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/update_to_the_ref2924_intrusion_set_and_related_campaigns.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/update_to_the_ref2924_intrusion_set_and_related_campaigns.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/update_to_the_ref2924_intrusion_set_and_related_campaigns.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/update_to_the_ref2924_intrusion_set_and_related_campaigns.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/upping_the_ante_detecting_in_memory_threats_with_kernel_call_stacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/upping_the_ante_detecting_in_memory_threats_with_kernel_call_stacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/upping_the_ante_detecting_in_memory_threats_with_kernel_call_stacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/upping_the_ante_detecting_in_memory_threats_with_kernel_call_stacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_and_esre_to_find_similar_user_sessions.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_and_esre_to_find_similar_user_sessions.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_and_esre_to_find_similar_user_sessions.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_and_esre_to_find_similar_user_sessions.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_to_summarize_user_sessions.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_to_summarize_user_sessions.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_to_summarize_user_sessions.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_to_summarize_user_sessions.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/vulnerability_summary_follina.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/vulnerability_summary_follina.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/vulnerability_summary_follina.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/vulnerability_summary_follina.md diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymization_fields.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymization_fields.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymization_fields.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymization_fields.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymized_alerts.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymized_alerts.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymized_alerts.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymized_alerts.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_attack_discoveries.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_attack_discoveries.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_attack_discoveries.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_attack_discoveries.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_examples.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_examples.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_examples.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_examples.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_experiment_connector.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_experiment_connector.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_experiment_connector.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_experiment_connector.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_runs.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_runs.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_runs.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_runs.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/constants.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/constants.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts new file mode 100644 index 0000000000000..14794ab893623 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts @@ -0,0 +1,122 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { Replacements } from '@kbn/elastic-assistant-common'; +import { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; +import type { ActionsClientLlm } from '@kbn/langchain/server'; +import type { CompiledStateGraph } from '@langchain/langgraph'; +import { END, START, StateGraph } from '@langchain/langgraph'; + +import { NodeType } from './constants'; +import { getGenerateOrEndEdge } from './edges/generate_or_end'; +import { getGenerateOrRefineOrEndEdge } from './edges/generate_or_refine_or_end'; +import { getRefineOrEndEdge } from './edges/refine_or_end'; +import { getRetrieveAnonymizedAlertsOrGenerateEdge } from './edges/retrieve_anonymized_alerts_or_generate'; +import { getDefaultGraphState } from './state'; +import { getGenerateNode } from './nodes/generate'; +import { getRefineNode } from './nodes/refine'; +import { getRetrieveAnonymizedAlertsNode } from './nodes/retriever'; +import type { GraphState } from './types'; + +export interface GetDefaultAttackDiscoveryGraphParams { + alertsIndexPattern?: string; + anonymizationFields: AnonymizationFieldResponse[]; + esClient: ElasticsearchClient; + llm: ActionsClientLlm; + logger?: Logger; + onNewReplacements?: (replacements: Replacements) => void; + replacements?: Replacements; + size: number; +} + +export type DefaultAttackDiscoveryGraph = ReturnType; + +/** + * This function returns a compiled state graph that represents the default + * Attack discovery graph. + * + * Refer to the following diagram for this graph: + * x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png + */ +export const getDefaultAttackDiscoveryGraph = ({ + alertsIndexPattern, + anonymizationFields, + esClient, + llm, + logger, + onNewReplacements, + replacements, + size, +}: GetDefaultAttackDiscoveryGraphParams): CompiledStateGraph< + GraphState, + Partial, + 'generate' | 'refine' | 'retrieve_anonymized_alerts' | '__start__' +> => { + try { + const graphState = getDefaultGraphState(); + + // get nodes: + const retrieveAnonymizedAlertsNode = getRetrieveAnonymizedAlertsNode({ + alertsIndexPattern, + anonymizationFields, + esClient, + logger, + onNewReplacements, + replacements, + size, + }); + + const generateNode = getGenerateNode({ + llm, + logger, + }); + + const refineNode = getRefineNode({ + llm, + logger, + }); + + // get edges: + const generateOrEndEdge = getGenerateOrEndEdge(logger); + + const generatOrRefineOrEndEdge = getGenerateOrRefineOrEndEdge(logger); + + const refineOrEndEdge = getRefineOrEndEdge(logger); + + const retrieveAnonymizedAlertsOrGenerateEdge = + getRetrieveAnonymizedAlertsOrGenerateEdge(logger); + + // create the graph: + const graph = new StateGraph({ channels: graphState }) + .addNode(NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, retrieveAnonymizedAlertsNode) + .addNode(NodeType.GENERATE_NODE, generateNode) + .addNode(NodeType.REFINE_NODE, refineNode) + .addConditionalEdges(START, retrieveAnonymizedAlertsOrGenerateEdge, { + generate: NodeType.GENERATE_NODE, + retrieve_anonymized_alerts: NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, + }) + .addConditionalEdges(NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, generateOrEndEdge, { + end: END, + generate: NodeType.GENERATE_NODE, + }) + .addConditionalEdges(NodeType.GENERATE_NODE, generatOrRefineOrEndEdge, { + end: END, + generate: NodeType.GENERATE_NODE, + refine: NodeType.REFINE_NODE, + }) + .addConditionalEdges(NodeType.REFINE_NODE, refineOrEndEdge, { + end: END, + refine: NodeType.REFINE_NODE, + }); + + // compile the graph: + return graph.compile(); + } catch (e) { + throw new Error(`Unable to compile AttackDiscoveryGraph\n${e}`); + } +}; diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_anonymization_fields.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_anonymization_fields.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_anonymization_fields.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_anonymization_fields.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_open_and_acknowledged_alerts_query_results.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_open_and_acknowledged_alerts_query_results.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_open_and_acknowledged_alerts_query_results.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_open_and_acknowledged_alerts_query_results.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/schema/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/schema/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/schema/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/schema/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.test.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.test.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.test.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.test.tsx diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.tsx diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/field_maps_configuration/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/field_maps_configuration/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/field_maps_configuration/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/field_maps_configuration/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_all_attack_discoveries/find_all_attack_discoveries.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_all_attack_discoveries/find_all_attack_discoveries.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_all_attack_discoveries/find_all_attack_discoveries.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_all_attack_discoveries/find_all_attack_discoveries.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/transforms/transforms.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/transforms/transforms.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/transforms/transforms.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/transforms/transforms.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/build_response/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/build_response/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/build_response/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/build_response/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/data_stream/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/data_stream/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/executor.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/executor.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/executor.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/executor.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/executor.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/executor.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/executor.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/executor.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/security_labs_loader.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/security_labs_loader.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/security_labs_loader.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/security_labs_loader.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/executors/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/executors/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/executors/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/constants.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/graph.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/graph.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/graph.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/graph.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/execute_tools.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/execute_tools.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/execute_tools.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/execute_tools.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/generate_chat_title.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/generate_chat_title.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/generate_chat_title.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/generate_chat_title.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/get_persisted_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/get_persisted_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/get_persisted_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/get_persisted_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/model_input.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/model_input.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/model_input.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/model_input.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/persist_conversation_changes.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/persist_conversation_changes.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/persist_conversation_changes.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/persist_conversation_changes.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/respond.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/respond.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/respond.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/respond.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/run_agent.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/run_agent.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/run_agent.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/run_agent.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/step_router.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/step_router.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/step_router.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/step_router.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/translations.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/translations.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/translations.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/translations.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/prompts.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/prompts.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/prompts.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/prompts.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/tracers/apm/with_assistant_span.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/tracers/apm/with_assistant_span.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/tracers/apm/with_assistant_span.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/tracers/apm/with_assistant_span.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/parse_stream.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/parse_stream.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/parse_stream.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/parse_stream.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/parse_stream.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/parse_stream.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/parse_stream.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/parse_stream.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts similarity index 84% rename from x-pack/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts index 92330b4960e76..03e9e1d225ae1 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts @@ -77,13 +77,16 @@ export const INVOKE_ASSISTANT_SUCCESS_EVENT: EventTypeOpts<{ actionTypeId: string; isEnabledKnowledgeBase: boolean; durationMs: number; - ['toolsInvoked.AlertCountsTool']?: number; - ['toolsInvoked.NaturalLanguageESQLTool']?: number; - ['toolsInvoked.KnowledgeBaseRetrievalTool']?: number; - ['toolsInvoked.KnowledgeBaseWriteTool']?: number; - ['toolsInvoked.OpenAndAcknowledgedAlertsTool']?: number; - ['toolsInvoked.SecurityLabsKnowledgeBaseTool']?: number; - ['toolsInvoked.CustomTool']?: number; + toolsInvoked: { + AlertCountsTool?: number; + NaturalLanguageESQLTool?: number; + KnowledgeBaseRetrievalTool?: number; + KnowledgeBaseWriteTool?: number; + OpenAndAcknowledgedAlertsTool?: number; + SecurityLabsKnowledgeBaseTool?: number; + ProductDocumentationTool?: number; + CustomTool?: number; + }; model?: string; isOssModel?: boolean; }> = { @@ -127,53 +130,64 @@ export const INVOKE_ASSISTANT_SUCCESS_EVENT: EventTypeOpts<{ description: 'The duration of the request.', }, }, - 'toolsInvoked.AlertCountsTool': { - type: 'long', - _meta: { - description: 'Number of times tool was invoked.', - optional: true, - }, - }, - 'toolsInvoked.NaturalLanguageESQLTool': { - type: 'long', - _meta: { - description: 'Number of times tool was invoked.', - optional: true, - }, - }, - 'toolsInvoked.KnowledgeBaseRetrievalTool': { - type: 'long', - _meta: { - description: 'Number of times tool was invoked.', - optional: true, - }, - }, - 'toolsInvoked.KnowledgeBaseWriteTool': { - type: 'long', - _meta: { - description: 'Number of times tool was invoked.', - optional: true, - }, - }, - 'toolsInvoked.OpenAndAcknowledgedAlertsTool': { - type: 'long', - _meta: { - description: 'Number of times tool was invoked.', - optional: true, - }, - }, - 'toolsInvoked.SecurityLabsKnowledgeBaseTool': { - type: 'long', - _meta: { - description: 'Number of times tool was invoked.', - optional: true, - }, - }, - 'toolsInvoked.CustomTool': { - type: 'long', - _meta: { - description: 'Number of times tool was invoked.', - optional: true, + toolsInvoked: { + properties: { + AlertCountsTool: { + type: 'long', + _meta: { + description: 'Number of times tool was invoked.', + optional: true, + }, + }, + NaturalLanguageESQLTool: { + type: 'long', + _meta: { + description: 'Number of times tool was invoked.', + optional: true, + }, + }, + ProductDocumentationTool: { + type: 'long', + _meta: { + description: 'Number of times tool was invoked.', + optional: true, + }, + }, + KnowledgeBaseRetrievalTool: { + type: 'long', + _meta: { + description: 'Number of times tool was invoked.', + optional: true, + }, + }, + KnowledgeBaseWriteTool: { + type: 'long', + _meta: { + description: 'Number of times tool was invoked.', + optional: true, + }, + }, + OpenAndAcknowledgedAlertsTool: { + type: 'long', + _meta: { + description: 'Number of times tool was invoked.', + optional: true, + }, + }, + SecurityLabsKnowledgeBaseTool: { + type: 'long', + _meta: { + description: 'Number of times tool was invoked.', + optional: true, + }, + }, + CustomTool: { + type: 'long', + _meta: { + description: 'Number of times tool was invoked.', + optional: true, + }, + }, }, }, }, diff --git a/x-pack/plugins/elastic_assistant/server/plugin.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/plugin.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/plugin.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/plugin.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/invoke_attack_discovery_graph/index.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/invoke_attack_discovery_graph/index.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/invoke_attack_discovery_graph/index.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/invoke_attack_discovery_graph/index.tsx diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.test.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.test.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.test.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.test.tsx diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.tsx diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/translations.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/translations.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/translations.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/translations.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/custom_http_request_error.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/custom_http_request_error.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/custom_http_request_error.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/custom_http_request_error.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/get_graphs_from_names/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_graphs_from_names/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/get_graphs_from_names/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_graphs_from_names/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/utils.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/utils.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/utils.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/utils.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/constants.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts similarity index 90% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts index 01e8c9ebf3f08..82c8b4e0148fd 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts @@ -6,7 +6,12 @@ */ import moment from 'moment'; -import { AnalyticsServiceSetup, IKibanaResponse, KibanaResponseFactory } from '@kbn/core/server'; +import { + AnalyticsServiceSetup, + AuditLogger, + IKibanaResponse, + KibanaResponseFactory, +} from '@kbn/core/server'; import { transformError } from '@kbn/securitysolution-es-utils'; import { @@ -20,6 +25,11 @@ import { } from '@kbn/elastic-assistant-common'; import { buildRouteValidationWithZod } from '@kbn/elastic-assistant-common/impl/schemas/common'; +import { + AUDIT_OUTCOME, + KnowledgeBaseAuditAction, + knowledgeBaseAuditEvent, +} from '../../../ai_assistant_data_clients/knowledge_base/audit_events'; import { CREATE_KNOWLEDGE_BASE_ENTRY_SUCCESS_EVENT } from '../../../lib/telemetry/event_based_telemetry'; import { performChecks } from '../../helpers'; import { KNOWLEDGE_BASE_ENTRIES_TABLE_MAX_PAGE_SIZE } from '../../../../common/constants'; @@ -62,7 +72,8 @@ const buildBulkResponse = ( deleted = [], skipped = [], }: KnowledgeBaseEntryBulkCrudActionResults & { errors: BulkOperationError[] }, - telemetry: AnalyticsServiceSetup + telemetry: AnalyticsServiceSetup, + auditLogger?: AuditLogger ): IKibanaResponse => { const numSucceeded = updated.length + created.length + deleted.length; const numSkipped = skipped.length; @@ -90,6 +101,39 @@ const buildBulkResponse = ( sharing: entry.users.length ? 'private' : 'global', ...(entry.type === 'document' ? { source: entry.source } : {}), }); + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: entry.id, + name: entry.name, + outcome: AUDIT_OUTCOME.SUCCESS, + }) + ); + }); + } + + if (updated.length) { + updated.forEach((entry) => { + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.UPDATE, + id: entry.id, + name: entry.name, + outcome: AUDIT_OUTCOME.SUCCESS, + }) + ); + }); + } + + if (deleted.length) { + deleted.forEach((deletedId) => { + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.DELETE, + id: deletedId, + outcome: AUDIT_OUTCOME.SUCCESS, + }) + ); }); } if (numFailed > 0) { @@ -308,7 +352,8 @@ export const bulkActionKnowledgeBaseEntriesRoute = (router: ElasticAssistantPlug skipped: [], errors, }, - ctx.elasticAssistant.telemetry + ctx.elasticAssistant.telemetry, + ctx.elasticAssistant.auditLogger ); } catch (err) { const error = transformError(err); diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts similarity index 98% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts index 8a4004e4a236a..cd1216713e18a 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts @@ -63,6 +63,7 @@ export const createKnowledgeBaseEntryRoute = (router: ElasticAssistantPluginRout const createResponse = await kbDataClient?.createKnowledgeBaseEntry({ knowledgeBaseEntry: request.body, global: request.body.users != null && request.body.users.length === 0, + auditLogger: ctx.elasticAssistant.auditLogger, telemetry: ctx.elasticAssistant.telemetry, }); diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/register_routes.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/register_routes.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/register_routes.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/request_context_factory.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/request_context_factory.ts similarity index 98% rename from x-pack/plugins/elastic_assistant/server/routes/request_context_factory.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/request_context_factory.ts index 30045b3da8ad9..08ef1bb1828d6 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/request_context_factory.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/request_context_factory.ts @@ -62,7 +62,7 @@ export class RequestContextFactory implements IRequestContextFactory { core: coreContext, actions: startPlugins.actions, - + auditLogger: coreStart.security.audit?.asScoped(request), logger: this.logger, getServerBasePath: () => core.http.basePath.serverBasePath, @@ -94,7 +94,6 @@ export class RequestContextFactory implements IRequestContextFactory { capabilityPath: 'securitySolutionAssistant.*', } ); - return this.assistantService.createAIAssistantKnowledgeBaseDataClient({ spaceId: getSpaceId(), logger: this.logger, diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts similarity index 97% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts index 5d75860c7e66f..b485125cc41e3 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts @@ -68,7 +68,7 @@ export const findUserConversationsRoute = (router: ElasticAssistantPluginRouter) const MAX_CONVERSATION_TOTAL = query.per_page; // TODO remove once we have pagination https://github.com/elastic/kibana/issues/192714 // do a separate search for default conversations and non-default conversations to ensure defaults always get included - // MUST MATCH THE LENGTH OF BASE_SECURITY_CONVERSATIONS from 'x-pack/plugins/security_solution/public/assistant/content/conversations/index.tsx' + // MUST MATCH THE LENGTH OF BASE_SECURITY_CONVERSATIONS from 'x-pack/solutions/security/plugins/security_solution/public/assistant/content/conversations/index.tsx' const MAX_DEFAULT_CONVERSATION_TOTAL = 7; const nonDefaultSize = MAX_CONVERSATION_TOTAL - MAX_DEFAULT_CONVERSATION_TOTAL; const result = await dataClient?.findDocuments({ diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/utils.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/utils.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/utils.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/utils.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/utils.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/utils.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/utils.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/utils.ts diff --git a/x-pack/plugins/elastic_assistant/server/services/app_context.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/services/app_context.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/services/app_context.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/services/app_context.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/types.ts new file mode 100755 index 0000000000000..1102d4b7b8441 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/types.ts @@ -0,0 +1,250 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + PluginSetupContract as ActionsPluginSetup, + PluginStartContract as ActionsPluginStart, +} from '@kbn/actions-plugin/server'; +import type { + AuthenticatedUser, + CoreRequestHandlerContext, + CoreSetup, + AnalyticsServiceSetup, + CustomRequestHandlerContext, + IRouter, + KibanaRequest, + Logger, + AuditLogger, +} from '@kbn/core/server'; +import type { LlmTasksPluginStart } from '@kbn/llm-tasks-plugin/server'; +import { type MlPluginSetup } from '@kbn/ml-plugin/server'; +import { DynamicStructuredTool, Tool } from '@langchain/core/tools'; +import { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; +import { TaskManagerSetupContract } from '@kbn/task-manager-plugin/server'; +import { ElasticsearchClient } from '@kbn/core/server'; +import { + AttackDiscoveryPostRequestBody, + DefendInsightsPostRequestBody, + AssistantFeatures, + ExecuteConnectorRequestBody, + Replacements, +} from '@kbn/elastic-assistant-common'; +import { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; +import { + LicensingApiRequestHandlerContext, + LicensingPluginStart, +} from '@kbn/licensing-plugin/server'; +import { + ActionsClientChatBedrockConverse, + ActionsClientChatOpenAI, + ActionsClientChatVertexAI, + ActionsClientGeminiChatModel, + ActionsClientLlm, +} from '@kbn/langchain/server'; +import type { InferenceServerStart } from '@kbn/inference-plugin/server'; + +import { ProductDocBaseStartContract } from '@kbn/product-doc-base-plugin/server'; +import type { GetAIAssistantKnowledgeBaseDataClientParams } from './ai_assistant_data_clients/knowledge_base'; +import { AttackDiscoveryDataClient } from './lib/attack_discovery/persistence'; +import { AIAssistantConversationsDataClient } from './ai_assistant_data_clients/conversations'; +import type { GetRegisteredFeatures, GetRegisteredTools } from './services/app_context'; +import { AIAssistantDataClient } from './ai_assistant_data_clients'; +import { AIAssistantKnowledgeBaseDataClient } from './ai_assistant_data_clients/knowledge_base'; +import type { DefendInsightsDataClient } from './ai_assistant_data_clients/defend_insights'; + +export const PLUGIN_ID = 'elasticAssistant' as const; + +/** The plugin setup interface */ +export interface ElasticAssistantPluginSetup { + actions: ActionsPluginSetup; +} + +/** The plugin start interface */ +export interface ElasticAssistantPluginStart { + /** + * Actions plugin start contract. + */ + actions: ActionsPluginStart; + /** + * Inference plugin start contract. + */ + inference: InferenceServerStart; + /** + * Register features to be used by the elastic assistant. + * + * Note: Be sure to use the pluginName that is sent in the request headers by your plugin to ensure it is extracted + * and the correct features are available. See {@link getPluginNameFromRequest} for more details. + * + * @param pluginName Name of the plugin the features should be registered to + * @param features Partial to be registered with for the given plugin + */ + registerFeatures: (pluginName: string, features: Partial) => void; + /** + * Get the registered features for a given plugin name. + * @param pluginName Name of the plugin to get the features for + */ + getRegisteredFeatures: GetRegisteredFeatures; + /** + * Register tools to be used by the elastic assistant. + * + * Note: Be sure to use the pluginName that is sent in the request headers by your plugin to ensure it is extracted + * and the correct tools are selected. See {@link getPluginNameFromRequest} for more details. + * + * @param pluginName Name of the plugin the tool should be registered to + * @param tools AssistantTools to be registered with for the given plugin + */ + registerTools: (pluginName: string, tools: AssistantTool[]) => void; + /** + * Get the registered tools for a given plugin name. + * @param pluginName Name of the plugin to get the tools for + */ + getRegisteredTools: GetRegisteredTools; +} + +export interface ElasticAssistantPluginSetupDependencies { + actions: ActionsPluginSetup; + ml: MlPluginSetup; + taskManager: TaskManagerSetupContract; + spaces?: SpacesPluginSetup; +} +export interface ElasticAssistantPluginStartDependencies { + actions: ActionsPluginStart; + llmTasks: LlmTasksPluginStart; + inference: InferenceServerStart; + spaces?: SpacesPluginStart; + licensing: LicensingPluginStart; + productDocBase: ProductDocBaseStartContract; +} + +export interface ElasticAssistantApiRequestHandlerContext { + core: CoreRequestHandlerContext; + actions: ActionsPluginStart; + auditLogger?: AuditLogger; + getRegisteredFeatures: GetRegisteredFeatures; + getRegisteredTools: GetRegisteredTools; + logger: Logger; + getServerBasePath: () => string; + getSpaceId: () => string; + getCurrentUser: () => AuthenticatedUser | null; + getAIAssistantConversationsDataClient: () => Promise; + getAIAssistantKnowledgeBaseDataClient: ( + params?: GetAIAssistantKnowledgeBaseDataClientParams + ) => Promise; + getAttackDiscoveryDataClient: () => Promise; + getDefendInsightsDataClient: () => Promise; + getAIAssistantPromptsDataClient: () => Promise; + getAIAssistantAnonymizationFieldsDataClient: () => Promise; + llmTasks: LlmTasksPluginStart; + inference: InferenceServerStart; + telemetry: AnalyticsServiceSetup; +} +/** + * @internal + */ +export type ElasticAssistantRequestHandlerContext = CustomRequestHandlerContext<{ + elasticAssistant: ElasticAssistantApiRequestHandlerContext; + licensing: LicensingApiRequestHandlerContext; +}>; + +export type ElasticAssistantPluginRouter = IRouter; + +export type ElasticAssistantPluginCoreSetupDependencies = CoreSetup< + ElasticAssistantPluginStartDependencies, + ElasticAssistantPluginStart +>; + +export type GetElser = () => Promise | never; + +export interface AssistantResourceNames { + componentTemplate: { + conversations: string; + knowledgeBase: string; + prompts: string; + anonymizationFields: string; + attackDiscovery: string; + defendInsights: string; + }; + indexTemplate: { + conversations: string; + knowledgeBase: string; + prompts: string; + anonymizationFields: string; + attackDiscovery: string; + defendInsights: string; + }; + aliases: { + conversations: string; + knowledgeBase: string; + prompts: string; + anonymizationFields: string; + attackDiscovery: string; + defendInsights: string; + }; + indexPatterns: { + conversations: string; + knowledgeBase: string; + prompts: string; + anonymizationFields: string; + attackDiscovery: string; + defendInsights: string; + }; + pipelines: { + knowledgeBase: string; + }; +} + +export interface IIndexPatternString { + pattern: string; + alias: string; + name: string; + basePattern: string; + validPrefixes?: string[]; + secondaryAlias?: string; +} + +/** + * Interfaces for registering tools to be used by the elastic assistant + */ + +export interface AssistantTool { + id: string; + name: string; + description: string; + sourceRegister: string; + isSupported: (params: AssistantToolParams) => boolean; + getTool: (params: AssistantToolParams) => Tool | DynamicStructuredTool | null; +} + +export type AssistantToolLlm = + | ActionsClientChatBedrockConverse + | ActionsClientChatOpenAI + | ActionsClientGeminiChatModel + | ActionsClientChatVertexAI; + +export interface AssistantToolParams { + alertsIndexPattern?: string; + anonymizationFields?: AnonymizationFieldResponse[]; + inference?: InferenceServerStart; + isEnabledKnowledgeBase: boolean; + connectorId?: string; + esClient: ElasticsearchClient; + kbDataClient?: AIAssistantKnowledgeBaseDataClient; + langChainTimeout?: number; + llm?: ActionsClientLlm | AssistantToolLlm; + llmTasks?: LlmTasksPluginStart; + isOssModel?: boolean; + logger: Logger; + onNewReplacements?: (newReplacements: Replacements) => void; + replacements?: Replacements; + request: KibanaRequest< + unknown, + unknown, + ExecuteConnectorRequestBody | AttackDiscoveryPostRequestBody | DefendInsightsPostRequestBody + >; + size?: number; + telemetry?: AnalyticsServiceSetup; +} diff --git a/x-pack/solutions/security/plugins/elastic_assistant/tsconfig.json b/x-pack/solutions/security/plugins/elastic_assistant/tsconfig.json new file mode 100644 index 0000000000000..c8bb305725e98 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/tsconfig.json @@ -0,0 +1,60 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "server/lib/**/*", + "server/**/*", + "scripts/**/*.ts", + // must declare *.json explicitly per https://github.com/microsoft/TypeScript/issues/25636 + "server/**/*.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/core-http-server", + "@kbn/licensing-plugin", + "@kbn/securitysolution-es-utils", + "@kbn/actions-plugin", + "@kbn/logging-mocks", + "@kbn/core-elasticsearch-server-mocks", + "@kbn/core-logging-server-mocks", + "@kbn/utility-types-jest", + "@kbn/utility-types", + "@kbn/tooling-log", + "@kbn/core-elasticsearch-server", + "@kbn/logging", + "@kbn/ml-plugin", + "@kbn/elastic-assistant-common", + "@kbn/core-http-router-server-mocks", + "@kbn/data-stream-adapter", + "@kbn/core-saved-objects-utils-server", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/task-manager-plugin", + "@kbn/es-query", + "@kbn/es-types", + "@kbn/config-schema", + "@kbn/spaces-plugin", + "@kbn/ml-response-stream", + "@kbn/data-plugin", + "@kbn/i18n", + "@kbn/core-security-common", + "@kbn/core-saved-objects-api-server", + "@kbn/langchain", + "@kbn/stack-connectors-plugin", + "@kbn/security-plugin", + "@kbn/apm-utils", + "@kbn/std", + "@kbn/zod", + "@kbn/inference-plugin", + "@kbn/data-views-plugin", + "@kbn/core-analytics-server", + "@kbn/llm-tasks-plugin", + "@kbn/product-doc-base-plugin" + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/kubernetes_security/.eslintrc.json b/x-pack/solutions/security/plugins/kubernetes_security/.eslintrc.json similarity index 100% rename from x-pack/plugins/kubernetes_security/.eslintrc.json rename to x-pack/solutions/security/plugins/kubernetes_security/.eslintrc.json diff --git a/x-pack/plugins/kubernetes_security/README.md b/x-pack/solutions/security/plugins/kubernetes_security/README.md similarity index 100% rename from x-pack/plugins/kubernetes_security/README.md rename to x-pack/solutions/security/plugins/kubernetes_security/README.md diff --git a/x-pack/plugins/kubernetes_security/common/constants.ts b/x-pack/solutions/security/plugins/kubernetes_security/common/constants.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/common/constants.ts rename to x-pack/solutions/security/plugins/kubernetes_security/common/constants.ts diff --git a/x-pack/plugins/kubernetes_security/common/translations.ts b/x-pack/solutions/security/plugins/kubernetes_security/common/translations.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/common/translations.ts rename to x-pack/solutions/security/plugins/kubernetes_security/common/translations.ts diff --git a/x-pack/plugins/kubernetes_security/common/types/index.ts b/x-pack/solutions/security/plugins/kubernetes_security/common/types/index.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/common/types/index.ts rename to x-pack/solutions/security/plugins/kubernetes_security/common/types/index.ts diff --git a/x-pack/plugins/kubernetes_security/common/types/latest.ts b/x-pack/solutions/security/plugins/kubernetes_security/common/types/latest.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/common/types/latest.ts rename to x-pack/solutions/security/plugins/kubernetes_security/common/types/latest.ts diff --git a/x-pack/plugins/kubernetes_security/common/types/v1.ts b/x-pack/solutions/security/plugins/kubernetes_security/common/types/v1.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/common/types/v1.ts rename to x-pack/solutions/security/plugins/kubernetes_security/common/types/v1.ts diff --git a/x-pack/solutions/security/plugins/kubernetes_security/jest.config.js b/x-pack/solutions/security/plugins/kubernetes_security/jest.config.js new file mode 100644 index 0000000000000..0ab8dfc19a081 --- /dev/null +++ b/x-pack/solutions/security/plugins/kubernetes_security/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/kubernetes_security'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/kubernetes_security', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/kubernetes_security/{common,public,server}/**/*.{ts,tsx}', + ], + setupFiles: ['jest-canvas-mock'], +}; diff --git a/x-pack/plugins/kubernetes_security/kibana.jsonc b/x-pack/solutions/security/plugins/kubernetes_security/kibana.jsonc similarity index 100% rename from x-pack/plugins/kubernetes_security/kibana.jsonc rename to x-pack/solutions/security/plugins/kubernetes_security/kibana.jsonc diff --git a/x-pack/solutions/security/plugins/kubernetes_security/package.json b/x-pack/solutions/security/plugins/kubernetes_security/package.json new file mode 100644 index 0000000000000..b54e2d0381c93 --- /dev/null +++ b/x-pack/solutions/security/plugins/kubernetes_security/package.json @@ -0,0 +1,11 @@ +{ + "author": "Elastic", + "name": "@kbn/kubernetes-security-plugin", + "version": "1.0.0", + "private": true, + "license": "Elastic License 2.0", + "scripts": { + "test:jest": "node ../../../../scripts/jest", + "test:coverage": "node ../../../../scripts/jest --coverage" + } +} diff --git a/x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/charts_toggle/index.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/charts_toggle/index.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/charts_toggle/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/charts_toggle/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/charts_toggle/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/container_name_row.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/hooks.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/hooks.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/container_name_widget/hooks.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/hooks.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/index.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/index.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/container_name_widget/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/container_name_widget/styles.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/styles.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/container_name_widget/styles.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/container_name_widget/styles.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/helpers.test.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/helpers.test.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/count_widget/helpers.test.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/helpers.test.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/helpers.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/helpers.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/count_widget/helpers.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/helpers.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/hooks.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/hooks.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/count_widget/hooks.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/hooks.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/index.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/count_widget/index.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/index.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/count_widget/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/count_widget/styles.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/styles.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/count_widget/styles.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/count_widget/styles.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/styles.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/kubernetes_security_routes/styles.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/styles.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/kubernetes_security_routes/styles.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/percent_widget/hooks.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/percent_widget/hooks.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/percent_widget/hooks.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/percent_widget/hooks.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/percent_widget/index.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/percent_widget/index.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/percent_widget/index.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/percent_widget/index.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/percent_widget/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/percent_widget/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/percent_widget/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/percent_widget/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/percent_widget/styles.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/percent_widget/styles.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/percent_widget/styles.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/percent_widget/styles.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/assets/illustration_product_no_results_magnifying_glass.svg b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/assets/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/assets/illustration_product_no_results_magnifying_glass.svg rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/assets/illustration_product_no_results_magnifying_glass.svg diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/helper.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/helper.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/helper.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/helper.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/helper.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/helper.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/helper.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/helper.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/styles.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/styles.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/styles.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/styles.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/contexts.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/contexts.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/contexts.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/contexts.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/helpers.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/hooks.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/hooks.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/hooks.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/hooks.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/styles.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/empty_state.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/empty_state.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/empty_state.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/empty_state.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/hooks.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/hooks.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/hooks.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/hooks.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/index.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/index.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/mocks.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/mocks.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/mocks.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/mocks.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/styles.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/styles.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/translations.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/translations.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/translations.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/translations.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.test.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.test.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.test.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.test.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/styles.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/styles.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/styles.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/styles.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/translations.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/translations.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/translations.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/translations.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/types.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/types.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/types.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/types.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_view_icon.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_view_icon.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_view_icon.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/components/tree_view_container/tree_view_icon.tsx diff --git a/x-pack/plugins/kubernetes_security/public/hooks/index.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/hooks/index.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/hooks/index.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/hooks/index.ts diff --git a/x-pack/plugins/kubernetes_security/public/hooks/use_eui_theme.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_eui_theme.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/hooks/use_eui_theme.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_eui_theme.ts diff --git a/x-pack/plugins/kubernetes_security/public/hooks/use_filter.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_filter.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/hooks/use_filter.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_filter.ts diff --git a/x-pack/plugins/kubernetes_security/public/hooks/use_last_updated.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_last_updated.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/hooks/use_last_updated.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_last_updated.ts diff --git a/x-pack/plugins/kubernetes_security/public/hooks/use_scroll.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_scroll.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/hooks/use_scroll.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/hooks/use_scroll.ts diff --git a/x-pack/plugins/kubernetes_security/public/index.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/index.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/index.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/index.ts diff --git a/x-pack/plugins/kubernetes_security/public/methods/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/methods/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/methods/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/methods/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/plugin.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/plugin.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/plugin.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/plugin.ts diff --git a/x-pack/plugins/kubernetes_security/public/test/index.tsx b/x-pack/solutions/security/plugins/kubernetes_security/public/test/index.tsx similarity index 100% rename from x-pack/plugins/kubernetes_security/public/test/index.tsx rename to x-pack/solutions/security/plugins/kubernetes_security/public/test/index.tsx diff --git a/x-pack/plugins/kubernetes_security/public/types.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/types.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/types.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/types.ts diff --git a/x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.test.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/utils/add_commas_to_number.test.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.test.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/utils/add_commas_to_number.test.ts diff --git a/x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/utils/add_commas_to_number.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/utils/add_commas_to_number.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/utils/add_commas_to_number.ts diff --git a/x-pack/plugins/kubernetes_security/public/utils/add_timerange_and_default_filter_to_query.test.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/utils/add_timerange_and_default_filter_to_query.test.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/utils/add_timerange_and_default_filter_to_query.test.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/utils/add_timerange_and_default_filter_to_query.test.ts diff --git a/x-pack/plugins/kubernetes_security/public/utils/add_timerange_and_default_filter_to_query.ts b/x-pack/solutions/security/plugins/kubernetes_security/public/utils/add_timerange_and_default_filter_to_query.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/public/utils/add_timerange_and_default_filter_to_query.ts rename to x-pack/solutions/security/plugins/kubernetes_security/public/utils/add_timerange_and_default_filter_to_query.ts diff --git a/x-pack/plugins/kubernetes_security/server/index.ts b/x-pack/solutions/security/plugins/kubernetes_security/server/index.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/server/index.ts rename to x-pack/solutions/security/plugins/kubernetes_security/server/index.ts diff --git a/x-pack/plugins/kubernetes_security/server/plugin.ts b/x-pack/solutions/security/plugins/kubernetes_security/server/plugin.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/server/plugin.ts rename to x-pack/solutions/security/plugins/kubernetes_security/server/plugin.ts diff --git a/x-pack/plugins/kubernetes_security/server/routes/aggregate.ts b/x-pack/solutions/security/plugins/kubernetes_security/server/routes/aggregate.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/server/routes/aggregate.ts rename to x-pack/solutions/security/plugins/kubernetes_security/server/routes/aggregate.ts diff --git a/x-pack/plugins/kubernetes_security/server/routes/count.ts b/x-pack/solutions/security/plugins/kubernetes_security/server/routes/count.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/server/routes/count.ts rename to x-pack/solutions/security/plugins/kubernetes_security/server/routes/count.ts diff --git a/x-pack/plugins/kubernetes_security/server/routes/index.ts b/x-pack/solutions/security/plugins/kubernetes_security/server/routes/index.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/server/routes/index.ts rename to x-pack/solutions/security/plugins/kubernetes_security/server/routes/index.ts diff --git a/x-pack/plugins/kubernetes_security/server/routes/multi_terms_aggregate.ts b/x-pack/solutions/security/plugins/kubernetes_security/server/routes/multi_terms_aggregate.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/server/routes/multi_terms_aggregate.ts rename to x-pack/solutions/security/plugins/kubernetes_security/server/routes/multi_terms_aggregate.ts diff --git a/x-pack/plugins/kubernetes_security/server/types.ts b/x-pack/solutions/security/plugins/kubernetes_security/server/types.ts similarity index 100% rename from x-pack/plugins/kubernetes_security/server/types.ts rename to x-pack/solutions/security/plugins/kubernetes_security/server/types.ts diff --git a/x-pack/solutions/security/plugins/kubernetes_security/tsconfig.json b/x-pack/solutions/security/plugins/kubernetes_security/tsconfig.json new file mode 100644 index 0000000000000..3acc6db4c9bd7 --- /dev/null +++ b/x-pack/solutions/security/plugins/kubernetes_security/tsconfig.json @@ -0,0 +1,42 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + // add all the folders containg files to be compiled + "common/**/*", + "public/**/*", + "server/**/*", + "server/**/*.json", + "scripts/**/*", + "package.json", + "storybook/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + // add references to other TypeScript projects the plugin depends on + + // requiredPlugins from ./kibana.json + "@kbn/data-plugin", + + // optionalPlugins from ./kibana.json + + // requiredBundles from ./kibana.json + "@kbn/kibana-react-plugin", + "@kbn/rule-registry-plugin", + "@kbn/session-view-plugin", + "@kbn/i18n", + "@kbn/timelines-plugin", + "@kbn/es-query", + "@kbn/ui-theme", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/securitysolution-es-utils", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/threat_intelligence/.storybook/main.js b/x-pack/solutions/security/plugins/security_solution/.storybook/main.js similarity index 100% rename from x-pack/plugins/threat_intelligence/.storybook/main.js rename to x-pack/solutions/security/plugins/security_solution/.storybook/main.js diff --git a/x-pack/solutions/security/plugins/security_solution/README.md b/x-pack/solutions/security/plugins/security_solution/README.md new file mode 100644 index 0000000000000..ebaaf6d7f347b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/README.md @@ -0,0 +1,144 @@ +# Security Solution + +Welcome to the Kibana Security Solution plugin! This README will go over getting started with development and testing. + +## Development + +## Tests + +The endpoint specific tests leverage the ingest manager to install the endpoint package. Before the api integration +and functional tests are run the ingest manager is initialized. This initialization process includes reaching out to +a package registry service to install the endpoint package. The endpoint tests support three different ways to run +the tests given the constraint on an available package registry. + +1. Using Docker +2. Running your own local package registry +3. Using the default external package registry + +These scenarios will be outlined the sections below. + +### Endpoint API Integration Tests Location + +The endpoint api integration tests are located [here](../../../../test/security_solution_endpoint_api_int) + +### Endpoint Functional Tests Location + +The endpoint functional tests are located [here](../../../../test/security_solution_endpoint) + +### Using Docker + +To run the tests using the recommended docker image version you must have `docker` installed. The testing infrastructure +will stand up a docker container using the image defined [here](../../../../test/fleet_api_integration/config.ts#L15) + +Make sure you're in the Kibana root directory. + +#### Endpoint API Integration Tests + +In one terminal, run: + +```bash +FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:server --config x-pack/test/security_solution_endpoint_api_int/config.ts +``` + +In another terminal, run: + +```bash +FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:runner --config x-pack/test/security_solution_endpoint_api_int/config.ts +``` + +#### Endpoint Functional Tests + +In one terminal, run: + +```bash +FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:server --config x-pack/test/security_solution_endpoint/config.ts +``` + +In another terminal, run: + +```bash +FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:runner --config x-pack/test/security_solution_endpoint/config.ts +``` + +### Running your own package registry + +If you are doing endpoint package development it will be useful to run your own package registry to serve the latest package you're building. +To do this use the following commands: + +Make sure you're in the Kibana root directory. + +#### Endpoint API Integration Tests + +In one terminal, run: + +```bash +PACKAGE_REGISTRY_URL_OVERRIDE= yarn test:ftr:server --config x-pack/test/security_solution_endpoint_api_int/config.ts +``` + +In another terminal, run: + +```bash +PACKAGE_REGISTRY_URL_OVERRIDE= yarn test:ftr:runner --config x-pack/test/security_solution_endpoint_api_int/config.ts +``` + +#### Endpoint Functional Tests + +In one terminal, run: + +```bash +PACKAGE_REGISTRY_URL_OVERRIDE= yarn test:ftr:server --config x-pack/test/security_solution_endpoint/config.ts +``` + +In another terminal, run: + +```bash +PACKAGE_REGISTRY_URL_OVERRIDE= yarn test:ftr:runner --config x-pack/test/security_solution_endpoint/config.ts +``` + +### Using the default public registry + +If you don't have docker installed and don't want to run your own registry, you can run the tests using the ingest manager's default public package registry. The actual package registry used is [here](../../../../plugins/fleet/common/constants/epm.ts#L9) + +Make sure you're in the Kibana root directory. + +#### Endpoint API Integration Tests + +In one terminal, run: + +```bash +yarn test:ftr:server --config x-pack/test/security_solution_endpoint_api_int/config.ts +``` + +In another terminal, run: + +```bash +yarn test:ftr:runner --config x-pack/test/security_solution_endpoint_api_int/config.ts +``` + +#### Endpoint Functional Tests + +In one terminal, run: + +```bash +yarn test:ftr:server --config x-pack/test/security_solution_endpoint/config.ts +``` + +In another terminal, run: + +```bash +yarn test:ftr:runner --config x-pack/test/security_solution_endpoint/config.ts +``` + +#### Generate huge amount of indices with huge amount of fields + +The result of this operation will be 10 separate bucket folders within `mappings_folder`. Each bucket folder will contain a `mappings.json` file describing 50 indices. + +```bash +yarn mappings:generate --fieldsCount=10000 --indexCount=500 --indexPrefix='.ds-huge' --unmappedRate=.2 --buckets=10 --outputDirectory='mappings_folder' +``` + +#### Load generated mappings + +```bash +yarn mappings:load --mappings-dir='mappings_folder' --es-url=http://username:password@localhost:9200 --kibana-url=http://username:password@localhost:5601/app +``` diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/mocks.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/mocks.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_assignees/set_alert_assignees_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/mocks.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/mocks.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/get_all_integrations/get_all_integrations_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/get_all_integrations/get_all_integrations_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/get_all_integrations/get_all_integrations_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/get_all_integrations/get_all_integrations_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/get_installed_integrations/get_installed_integrations_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/get_installed_integrations/get_installed_integrations_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/get_installed_integrations/get_installed_integrations_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/get_installed_integrations/get_installed_integrations_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/model/installed_integrations.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/model/installed_integrations.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/model/installed_integrations.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/model/installed_integrations.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/model/integrations.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/model/integrations.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/model/integrations.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/model/integrations.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/urls.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/urls.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations/urls.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/fleet_integrations/urls.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/delete_index/delete_index.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/delete_index/delete_index.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/delete_index/delete_index.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/delete_index/delete_index.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/delete_index/delete_index.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/delete_index/delete_index.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/delete_index/delete_index.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/delete_index/delete_index.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_alerts_index_exists/read_alerts_index_exists_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_alerts_index_exists/read_alerts_index_exists_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_alerts_index_exists/read_alerts_index_exists_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_alerts_index_exists/read_alerts_index_exists_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_privileges/read_privileges.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_privileges/read_privileges.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_privileges/read_privileges.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_privileges/read_privileges.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_privileges/read_privileges.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_privileges/read_privileges.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_privileges/read_privileges.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/index_management/read_privileges/read_privileges.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.0.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.0.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.0.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.0.0/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.12.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.12.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.12.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.12.0/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.13.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.13.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.13.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.13.0/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.16.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.16.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.16.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.16.0/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.4.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.4.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.4.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.4.0/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.6.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.6.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.6.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.6.0/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.7.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.7.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.7.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.7.0/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.8.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.8.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.8.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.8.0/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.9.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.9.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/8.9.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/8.9.0/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/README.md b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/README.md new file mode 100644 index 0000000000000..bd3fff96b167a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/README.md @@ -0,0 +1,54 @@ +# Summary + +Original PR: https://github.com/elastic/kibana/pull/127218 +The goal here is to create a system of schemas that are: + +- Easy to read +- Usable historical records of alert schemas from previous Kibana versions +- Accurate for every field +- Usable on both server and client side + +# Motivation - Development speed and quality + +We have already run into one bug (https://github.com/elastic/kibana/issues/125885) where a required field was not populated in some alert documents. Once a bug ships that creates documents incorrectly, any fix requires user action to initiate a re-index of the alerts in addition to the developer time to create and validate the fix. The changes proposed here would catch this bug at compile time. These sorts of bugs become harder to catch as the schema evolves over time and fields get added, removed, and changed. Keeping the schemas separated by version will help reduce the risk of repeated schema changes over time causing fields to be incorrectly included in or omitted from alert documents. + +We are also spending more time than necessary communicating details of the alerts schema over Slack and Zoom. It will be far more efficient for the code to clearly communicate more details about the alert schema. With a more comprehensive static schema, the knowledge will transfer to new developers more efficiently. + +Static types are a powerful tool for ensuring code correctness. However, each deviation of the static type from the actual runtime structure adds places where developers may need to cast, assert, or use conditional logic to satisfy the compiler. The current static types require frequent workarounds when the static types don't match what developers know or believe is true about the runtime type of the alert documents. These runtime workarounds establish patterns that evade the type system - costing developer time to create and maintain in addition to increasing the risk of bugs due to the additional complexity. Accurate static types are excellent documentation of the data structures we use but it's crucial that the static types are comprehensive to minimize cases where runtime checks are needed. + +# Structure - Common Alert Schema Directory + +The schemas in this directory have 2 primary purposes: (1) separate the alert document schemas from the FieldMaps, and (2) set up a code structure that enables easy versioning of alert schemas. During the Detection Engine migration to the rule registry we used the FieldMaps to define the alert schema, but ended up with numerous type casts and some bugs in the process. This common directory stores the various alert schemas by Kibana version. + +x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts initially contains index.ts and one folder, 8.0.0. index.ts imports the schemas from 8.0.0 and re-exports them as ...Latest, denoting that those are the "write" schemas. The reason for this is that as we add new schemas, there are many places server side where we want to ensure that we're writing the latest alert schema. By having index.ts re-export 8.0.0 schemas, when we add make a new alert schema in the future (e.g. adding an additional field in 8.x) we can simply update index.ts to re-export the new schema instead of the previous schema. index.ts also exports a DetectionAlert which is the "read" schema - this type will be maintained as a union of all versioned alert schemas, which is needed to accurately type alerts that are read from the alerts index. + +## Reading vs writing alerts + +When writing code that deals with creating a new alert document, always use the schema from alerts/index.ts, not from a specific version folder. This way when the schema is updated in the future, your code will automatically use the latest alert schema and the static type system will tell us if code is writing alerts that don't conform to the new schema. + +When writing code that deals with reading alerts, it must be able to handle alerts from any schema version. The "read schema" in index.ts DetectionAlert is a union of all of the versioned alert schemas since a valid alert from the .alerts index could be from any version. Initially there is only one versioned schema, so DetectionAlert is identical to DetectionAlert800. + +Generally, Solution code should not be directly importing alert schemas from a specific version. Alert writing code should use the latest schema, and alert reading code should use the union of all schemas. + +## Adding new schemas + +In the future, when we want to add new fields, we should create a new folder named with the version the field is being added in, create the updated schema in the new folder, and update index.ts to re-export the schemas for the new version instead of the previous version. Also, update the "read schema" DetectionAlert type in index.ts to include the new schema in addition to the previous schemas. The schema in the new version folder can either build on the previous version, e.g. 8.4.0 could import the schema from 8.0.0 and simply add a few new fields, or for larger changes the new version could build the schema from scratch. Old schemas should not change when new fields are added! + +## Changing existing schemas + +The schema in the 8.0.0 folder, and any future versioned folders after the version is released, should not be updated with new fields. Old schemas should only be updated if a bug is discovered and it is determined that the schema does not accurately represent the alert documents that were actually written by that version, e.g. if a field is typed as string in the schema but was actually written as string[]. The goal of these schemas is to represent documents accurately as they were written and since we aren't changing the documents that already exist, the schema should generally not change. + +## No changes + +If a version of Kibana makes no changes to the schema, a new folder for that version is not needed. + +# Design decisions + +- Why not combine the FieldMaps and alert schema, creating a single structure that can define both? + FieldMaps are integrated tightly with Elasticsearch mappings already, with minimal support for accurate TypeScript types of the fields. We want to avoid adding tons of extra information in to the FieldMaps that would not be used for the Elasticsearch mappings. Instead later we can write a bit of code to ensure that the alert schemas are compatible with the FieldMap schemas, essentially ensuring that the alert schemas extend the FieldMap schemas. + +- Why is | undefined used in field definitions instead of making fields optional? + Making all fields required, but some | undefined in the type, helps ensure that we don't forget to copy over fields that may be undefined. If the field is optional, e.g. [ALERT_RULE_NOTE]?: string, then the compiler won't complain if the field is completely left out when we build the alert document. However, when it's defined as [ALERT_RULE_NOTE]: string | undefined instead, the field must be explicitly provided when creating an object literal of the alert type - even if the value is undefined. This makes it harder to forget to populate all of the fields. This can be seen in build_alert.ts where removing one of the optional fields from the return value results in a compiler error. + +- Why do we need to version the schemas instead of adding all new fields as | undefined? + Adding new fields as | undefined when they're actually required reduces the accuracy of the schema, which makes it less useful and harder to work with. If we decide to add a new field and always populate it going forward then accurately representing that in the static type makes it easier to work with alerts during the alert creation process. When a field is typed as | undefined but a developer knows that it should always exist, it encourages patterns that fight the type system through type-casting, assertions, using ?? , etc. This makes the code harder to read, harder to reason about, and thus harder to maintain because the knowledge of "this field is typed as | undefined but actually always exists here" is not represented in the code and only lives in developers minds. Versioned alert schemas aim to turn the static types into an asset that precisely documents what the alert document structure is. diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/alerts/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/alerts/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/error_schema.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/error_schema.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/error_schema.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/error_schema.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/error_schema.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/error_schema.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/error_schema.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/pagination.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/pagination.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/pagination.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/pagination.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/pagination.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_response_actions/response_actions.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/mocks.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/mocks.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_response_schema.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/eql_attributes.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/eql_attributes.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/eql_attributes.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/eql_attributes.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/eql_attributes.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/eql_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/eql_attributes.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/eql_attributes.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/ml_attributes.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/ml_attributes.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/ml_attributes.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/ml_attributes.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/ml_attributes.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/ml_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/ml_attributes.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/ml_attributes.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/new_terms_attributes.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/new_terms_attributes.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/new_terms_attributes.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/new_terms_attributes.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/new_terms_attributes.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/new_terms_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/new_terms_attributes.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/new_terms_attributes.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threat_match_attributes.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threat_match_attributes.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threat_match_attributes.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threat_match_attributes.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threat_match_attributes.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threat_match_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threat_match_attributes.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threat_match_attributes.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threshold_attributes.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threshold_attributes.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threshold_attributes.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threshold_attributes.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threshold_attributes.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threshold_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threshold_attributes.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/specific_attributes/threshold_attributes.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/time_duration.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/time_duration.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/time_duration.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/time_duration.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/time_duration.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/time_duration.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/time_duration.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/time_duration.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/utils.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/utils.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/schemas.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/schemas.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/schemas.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/sorting.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/sorting.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/sorting.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/sorting.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/sorting.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/sorting.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/sorting.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/warning_schema.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/warning_schema.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/warning_schema.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/warning_schema.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/warning_schema.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/warning_schema.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/model/warning_schema.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/warning_schema.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/aggregated_prebuilt_rules_error.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/aggregated_prebuilt_rules_error.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/aggregated_prebuilt_rules_error.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/aggregated_prebuilt_rules_error.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_field_types.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_field_types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_field_types.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_field_types.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_rule.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_rule.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_rule.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/diffable_rule/diffable_rule.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/rule_diff/fields_diff.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/rule_diff/fields_diff.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/rule_diff/fields_diff.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/rule_diff/fields_diff.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/rule_diff/rule_diff.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/rule_diff/rule_diff.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/rule_diff/rule_diff.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/rule_diff/rule_diff.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_conflict.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_conflict.ts similarity index 78% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_conflict.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_conflict.ts index 541c51d4f571f..f116f27c18e84 100644 --- a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_conflict.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_conflict.ts @@ -12,7 +12,7 @@ * - NO_CONFLICT: * - current == target (value won't change) * - current != target && current == base (stock rule will get a new value) - * See RFC: https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/docs/rfcs/detection_response/prebuilt_rules_customization.md#concrete-field-diff-algorithms-by-type + * See RFC: https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/docs/rfcs/detection_response/prebuilt_rules_customization.md#concrete-field-diff-algorithms-by-type */ export enum ThreeWayDiffConflict { NONE = 'NONE', diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_outcome.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_outcome.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_outcome.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_diff_outcome.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_merge_outcome.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_merge_outcome.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_merge_outcome.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/diff/three_way_diff/three_way_merge_outcome.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/model/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_installation/perform_rule_installation_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_installation/perform_rule_installation_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_installation/perform_rule_installation_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_installation/perform_rule_installation_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts similarity index 99% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts index 0021aece67455..3ef53e7b7c67a 100644 --- a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts @@ -115,7 +115,7 @@ export const RuleUpgradeSpecifier = z.object({ export type UpgradeSpecificRulesRequest = z.infer; export const UpgradeSpecificRulesRequest = z.object({ mode: z.literal('SPECIFIC_RULES'), - rules: z.array(RuleUpgradeSpecifier), + rules: z.array(RuleUpgradeSpecifier).min(1), pick_version: PickVersionValues.optional(), }); diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/read_prebuilt_rules_and_timelines_status/read_prebuilt_rules_and_timelines_status_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/review_rule_installation/review_rule_installation_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/review_rule_installation/review_rule_installation_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/review_rule_installation/review_rule_installation_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/review_rule_installation/review_rule_installation_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/review_rule_upgrade/review_rule_upgrade_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/review_rule_upgrade/review_rule_upgrade_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/review_rule_upgrade/review_rule_upgrade_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/review_rule_upgrade/review_rule_upgrade_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/urls.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/urls.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/urls.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/prebuilt_rules/urls.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_rule_exceptions/create_rule_exceptions_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_shared_exceptions_list/create_shared_exceptions_list_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_shared_exceptions_list/create_shared_exceptions_list_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_shared_exceptions_list/create_shared_exceptions_list_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/create_shared_exceptions_list/create_shared_exceptions_list_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/find_exception_references/find_exception_references_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/find_exception_references/find_exception_references_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/find_exception_references/find_exception_references_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/find_exception_references/find_exception_references_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/find_exception_references/find_exception_references_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/find_exception_references/find_exception_references_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/find_exception_references/find_exception_references_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/find_exception_references/find_exception_references_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/urls.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/urls.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_exceptions/urls.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_exceptions/urls.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_types.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_types.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_types.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_create_rules/bulk_create_rules_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/bulk_crud/response_schema.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/coverage_overview/coverage_overview_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/create_rule_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/create_rule_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/create_rule_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/create_rule_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/create_rule_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/create_rule_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/create_rule_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/create_rule_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/request_schema_validation.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/request_schema_validation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/request_schema_validation.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/request_schema_validation.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/request_schema_validation.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/request_schema_validation.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/request_schema_validation.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/create_rule/request_schema_validation.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/delete_rule/delete_rule_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/delete_rule/delete_rule_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/delete_rule/delete_rule_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/delete_rule/delete_rule_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/delete_rule/delete_rule_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/delete_rule/delete_rule_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/delete_rule/delete_rule_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/delete_rule/delete_rule_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/request_schema_validation.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/request_schema_validation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/request_schema_validation.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/request_schema_validation.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/request_schema_validation.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/request_schema_validation.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/request_schema_validation.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/patch_rule/request_schema_validation.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/read_rule/read_rule_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/read_rule/read_rule_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/read_rule/read_rule_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/read_rule/read_rule_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/read_rule/read_rule_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/read_rule/read_rule_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/read_rule/read_rule_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/read_rule/read_rule_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/request_schema_validation.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/request_schema_validation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/request_schema_validation.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/request_schema_validation.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/request_schema_validation.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/request_schema_validation.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/request_schema_validation.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/request_schema_validation.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/update_rule_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/update_rule_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/update_rule_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/update_rule_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/update_rule_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/update_rule_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/update_rule_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/crud/update_rule/update_rule_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_details_schema.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/export_rules/export_rules_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/find_rules_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/find_rules/request_schema_validation.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/get_rule_management_filters/get_rule_management_filters_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/get_rule_management_filters/get_rule_management_filters_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/get_rule_management_filters/get_rule_management_filters_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/get_rule_management_filters/get_rule_management_filters_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/get_rule_management_filters/get_rule_management_filters_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/get_rule_management_filters/get_rule_management_filters_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/get_rule_management_filters/get_rule_management_filters_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/get_rule_management_filters/get_rule_management_filters_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/import_rules_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import_validation.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import_validation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import_validation.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import_validation.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import_validation.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import_validation.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import_validation.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import_validation.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/mocks.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/mocks.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/model/query_rule_by_ids_validation.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/model/query_rule_by_ids_validation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/model/query_rule_by_ids_validation.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/model/query_rule_by_ids_validation.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/model/query_rule_by_ids_validation.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/model/query_rule_by_ids_validation.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/model/query_rule_by_ids_validation.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/model/query_rule_by_ids_validation.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/read_tags/read_tags_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/read_tags/read_tags_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/read_tags/read_tags_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/read_tags/read_tags_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/read_tags/read_tags_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/read_tags/read_tags_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/read_tags/read_tags_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/read_tags/read_tags_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/urls.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/urls.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_management/urls.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/urls.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/README.md b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/README.md similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/README.md rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/README.md diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_cluster_health/get_cluster_health_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_cluster_health/get_cluster_health_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_cluster_health/get_cluster_health_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_cluster_health/get_cluster_health_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_rule_health/get_rule_health_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_rule_health/get_rule_health_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_rule_health/get_rule_health_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_rule_health/get_rule_health_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_space_health/get_space_health_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_space_health/get_space_health_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_space_health/get_space_health_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/get_space_health/get_space_health_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/health_data.md b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/health_data.md similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/health_data.md rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/health_data.md diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/health_endpoints.md b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/health_endpoints.md similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/health_endpoints.md rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/health_endpoints.md diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/cluster_health.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/cluster_health.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/cluster_health.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/cluster_health.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/cluster_health.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/cluster_health.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/cluster_health.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/cluster_health.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_interval.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_interval.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_interval.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_interval.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_metadata.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_metadata.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_metadata.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_metadata.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_stats.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_stats.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_stats.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_stats.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_stats.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_stats.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_stats.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/health_stats.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/rule_health.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/rule_health.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/rule_health.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/rule_health.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/rule_health.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/rule_health.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/rule_health.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/rule_health.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/space_health.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/space_health.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/space_health.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/space_health.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/space_health.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/space_health.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/space_health.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/model/space_health.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/setup_health/setup_health_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/setup_health/setup_health_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/setup_health/setup_health_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/detection_engine_health/setup_health/setup_health_route.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/mocks.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/mocks.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_event.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_metrics.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_result.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_run_type.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_run_type.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_run_type.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_run_type.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_run_type.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_run_type.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_run_type.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_run_type.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_settings.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_settings.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_settings.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_settings.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_status.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/execution_summary.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/log_level.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/log_level.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/log_level.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/model/log_level.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/urls.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/urls.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_monitoring/urls.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_monitoring/urls.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_preview/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_preview/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_preview/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_preview/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_preview/rule_preview.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_preview/rule_preview.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_preview/rule_preview.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_preview/rule_preview.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/rule_preview/rule_preview.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_preview/rule_preview.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/rule_preview/rule_preview.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_preview/rule_preview.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals/query_signals/query_signals_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/query_signals/query_signals_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals/query_signals/query_signals_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/query_signals/query_signals_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals/query_signals/query_signals_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/query_signals/query_signals_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals/query_signals/query_signals_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/query_signals/query_signals_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals/set_signal_status/set_signals_status_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/set_signal_status/set_signals_status_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals/set_signal_status/set_signals_status_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/set_signal_status/set_signals_status_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals/set_signal_status/set_signals_status_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/set_signal_status/set_signals_status_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals/set_signal_status/set_signals_status_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals/set_signal_status/set_signals_status_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/delete_signals_migration/delete_signals_migration.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/delete_signals_migration/delete_signals_migration.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/delete_signals_migration/delete_signals_migration.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/delete_signals_migration/delete_signals_migration.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/delete_signals_migration/delete_signals_migration.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/delete_signals_migration/delete_signals_migration.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/delete_signals_migration/delete_signals_migration.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/delete_signals_migration/delete_signals_migration.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/mocks.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/mocks.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status_route.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status_route.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status_route.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/signals_migration/read_signals_migration_status/read_signals_migration_status_route.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/users/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/users/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/users/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/users/index.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/users/suggest_user_profiles_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/users/suggest_user_profiles_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/users/suggest_user_profiles_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/users/suggest_user_profiles_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/users/suggest_user_profiles_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/users/suggest_user_profiles_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/detection_engine/users/suggest_user_profiles_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/users/suggest_user_profiles_route.schema.yaml diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/README.md b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/README.md new file mode 100644 index 0000000000000..947dcb98c7e46 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/README.md @@ -0,0 +1,63 @@ +## Elastic Defend related APIs developer reference + + +### Directory structure and files + +- All the OpenAPI schemas are located under this directory and organized by sub-directories that reflect the API domain. +- Note that the sub-directory names for individual APIs are defined using snake_case to match the associated API path. +- The `model/` directory stores common schemas for re-use across multiple APIs. + +- Each API has at least the following set of files: + +``` +index.ts +.ts +.gen.ts +.schema.yaml +``` + +#### `index.ts` file + +The `index.ts` file found under each API directory exports both the generated and the kibana config schemas. + + +#### `.ts` file + +This file contains the Kibana `schema` definition that is used on the server side when the route is registered. This file is manually updated whenever needed. + + +#### `.schema.yaml` file + +This file defines and describes the API using the OpenAPI standard. + + +#### `.gen.ts` file + +This is a generated file and should not be updated manually. It contains schema validation code generated using the [Zod library](https://github.com/colinhacks/zod). + + + + + +### Making changes + +1. Update the OpenAPI schema YML file and/or the Kibana schema file (see References below for help with OpenAPI YAML format) +2. Generate/re-generate the Zod schema validation modules: +```shell +yarn --cwd x-pack/solutions/security/plugins/security_solution openapi:generate +``` +3. Create a new bundle with the updated APIs: +```shell +yarn --cwd x-pack/solutions/security/plugins/security_solution openapi:bundle:endpoint-management +``` +4. Ensure that the newly generated files are commited to source + + + +### References + +- [Kibana OpenAPI generator Usage Guide](https://github.com/elastic/kibana/blob/main/packages/kbn-openapi-generator/docs/USAGE_GUIDE.md) +- [Open API documentation](https://spec.openapis.org/oas/v3.0.3#document-structure) +- [Swagger documentation](https://swagger.io/docs/specification/basic-structure/) + + diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/action_log/action_log.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/action_log/action_log.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/action_log/action_log.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/action_log/action_log.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/action_log/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/action_log/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/action_log/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/action_log/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/common/base.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/common/base.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/common/base.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/common/base.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/common/response_actions.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/common/response_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/common/response_actions.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/common/response_actions.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/details/details.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/details/details.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/details/details.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/details/details.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/details/details.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/details/details.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/details/details.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/details/details.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/details/details.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/details/details.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/details/details.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/details/details.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/details/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/details/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/details/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_download/file_download.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/file_download/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_download/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/file_download/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_download/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_info/file_info.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/file_info/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_info/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/file_info/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/file_info/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/list/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/list/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/list/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/list/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/list/list.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/list/list.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/list/list.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/list/list.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/list/list.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/list/list.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/list/list.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/list/list.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/list/list.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/list/list.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/list/list.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/list/list.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/execute.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/execute/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/get_file.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/get_file/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/isolate/isolate.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.ts similarity index 94% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.ts index 0d42cb8badda1..3bb193cc71092 100644 --- a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/kill_process/kill_process.ts @@ -11,7 +11,7 @@ import { BaseActionRequestSchema } from '../../common/base'; // -------------------------------------------------- // Tests for this module are at: -// x-pack/plugins/security_solution/common/endpoint/schema/actions.test.ts:604 +// x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/actions.test.ts:604 // -------------------------------------------------- export const KillProcessRouteRequestSchema = { diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/run_script.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/run_script.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/run_script.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/run_script.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/run_script.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/run_script.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/run_script.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/run_script/run_script.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/running_procs/running_procs.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/scan/scan.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/suspend_process/suspend_process.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/unisolate/unisolate.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/response_actions/upload/upload.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/state/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/state/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/state/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/state/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/state/state.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/state/state.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/state/state.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/state/state.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/state/state.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/state/state.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/state/state.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/state/state.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/status/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/status/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/status/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/status/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/status/status.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/status/status.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/status/status.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/status/status.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/status/status.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/status/status.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/status/status.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/status/status.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/actions/status/status.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/status/status.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/actions/status/status.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/actions/status/status.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/agent/get_agent_status_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/agent/get_agent_status_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/agent/get_agent_status_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/agent/get_agent_status_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/agent/get_agent_status_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/agent/get_agent_status_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/agent/get_agent_status_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/agent/get_agent_status_route.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/metadata/get_metadata.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/get_metadata.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/metadata/get_metadata.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/get_metadata.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/metadata/get_metadata.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/get_metadata.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/metadata/get_metadata.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/get_metadata.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/metadata/get_metadata.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/get_metadata.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/metadata/get_metadata.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/get_metadata.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/metadata/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/metadata/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/metadata/list_metadata.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/list_metadata.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/metadata/list_metadata.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/list_metadata.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/metadata/list_metadata.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/list_metadata.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/metadata/list_metadata.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/list_metadata.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/metadata/list_metadata.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/list_metadata.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/metadata/list_metadata.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/metadata/list_metadata.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/model/schema/common.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/model/schema/common.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/model/schema/common.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/model/schema/common.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/model/schema/common.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/model/schema/common.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/model/schema/common.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/model/schema/common.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/policy/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/policy/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/policy/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/policy/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/policy/policy_response.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/policy/policy_response.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/policy/policy_response.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/policy/policy_response.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/policy/policy_response.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/policy/policy_response.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/policy/policy_response.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/policy/policy_response.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/policy/policy_response.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/policy/policy_response.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/policy/policy_response.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/policy/policy_response.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/protection_updates_note/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/protection_updates_note/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/protection_updates_note/protection_updates_note.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/suggestions/get_suggestions.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/suggestions/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/suggestions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/suggestions/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/suggestions/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/index.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.test.ts diff --git a/x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.ts b/x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/endpoint/workflow_insights/workflow_insights.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/index.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/common/after_keys.schema.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/after_keys.schema.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/common/after_keys.schema.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/after_keys.schema.test.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/common/common.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/common.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/common/common.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/common.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/common/common.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/common.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/common/common.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/common.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/common/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/common/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/index.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/common/risk_weights.schema.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/risk_weights.schema.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/common/risk_weights.schema.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/common/risk_weights.schema.test.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/common.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/common.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/common.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/common.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/enable.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/enable.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/enable.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/enable.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/enable.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/enable.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/enable.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/enable.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/apply_dataview_indices.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/apply_dataview_indices.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/apply_dataview_indices.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/apply_dataview_indices.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/apply_dataview_indices.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/apply_dataview_indices.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/apply_dataview_indices.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/apply_dataview_indices.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/delete.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/delete.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/delete.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/delete.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/delete.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/delete.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/delete.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/delete.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get_privileges.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get_privileges.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get_privileges.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get_privileges.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get_privileges.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get_privileges.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get_privileges.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/get_privileges.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/index.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/init.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/init.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/init.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/init.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/init.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/init.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/init.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/init.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/list.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/list.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/list.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/list.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/list.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/list.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/list.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/list.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/start.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/start.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/start.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/start.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/start.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/start.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/start.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/start.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/stop.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/stop.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/stop.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/stop.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/stop.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/stop.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/engine/stop.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/engine/stop.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/common.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/common.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/common.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/common.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/common.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/common.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/common.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/common.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/index.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/list_entities.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/list_entities.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/list_entities.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/list_entities.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/list_entities.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/list_entities.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/entities/list_entities.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/entities/list_entities.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/index.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/status.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/status.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/status.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/status.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/status.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/status.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/entity_store/status.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/status.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/index.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/calculation_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/calculation_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/calculation_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/calculation_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/calculation_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/calculation_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/calculation_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/calculation_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_cleanup_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_cleanup_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_cleanup_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_cleanup_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_cleanup_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_cleanup_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_cleanup_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_cleanup_route.schema.yaml diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen.ts new file mode 100644 index 0000000000000..19e64986b822f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Risk Scoring API + * version: 2023-10-31 + */ + +import { z } from '@kbn/zod'; + +export type ConfigureRiskEngineSavedObjectErrorResponse = z.infer< + typeof ConfigureRiskEngineSavedObjectErrorResponse +>; +export const ConfigureRiskEngineSavedObjectErrorResponse = z.object({ + risk_engine_saved_object_configured: z.boolean(), + errors: z.array( + z.object({ + seq: z.number().int(), + error: z.string(), + }) + ), +}); + +export type ConfigureRiskEngineSavedObjectRequestBody = z.infer< + typeof ConfigureRiskEngineSavedObjectRequestBody +>; +export const ConfigureRiskEngineSavedObjectRequestBody = z.object({ + exclude_alert_statuses: z.array(z.string()).optional(), + range: z + .object({ + start: z.string().optional(), + end: z.string().optional(), + }) + .optional(), + exclude_alert_tags: z.array(z.string()).optional(), +}); +export type ConfigureRiskEngineSavedObjectRequestBodyInput = z.input< + typeof ConfigureRiskEngineSavedObjectRequestBody +>; + +export type ConfigureRiskEngineSavedObjectResponse = z.infer< + typeof ConfigureRiskEngineSavedObjectResponse +>; +export const ConfigureRiskEngineSavedObjectResponse = z.object({ + risk_engine_saved_object_configured: z.boolean().optional(), +}); diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.schema.yaml new file mode 100644 index 0000000000000..4c9a1cf1f3693 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.schema.yaml @@ -0,0 +1,81 @@ +openapi: 3.0.0 +info: + version: '2023-10-31' + title: Risk Scoring API + description: These APIs allow the consumer to configure the Risk Engine Saved Object. +paths: + /api/risk_score/engine/saved_object/configure: + patch: + x-labels: [ess, serverless] + x-codegen-enabled: true + operationId: ConfigureRiskEngineSavedObject + summary: Configure the Risk Engine Saved Object + description: Configuring the Risk Engine Saved Object + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + exclude_alert_statuses: + type: array + items: + type: string + range: + type: object + properties: + start: + type: string + end: + type: string + exclude_alert_tags: + type: array + items: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + '400': + description: Task manager is unavailable + content: + application/json: + schema: + $ref: '../common/common.schema.yaml#/components/schemas/TaskManagerUnavailableResponse' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/ConfigureRiskEngineSavedObjectErrorResponse' + +components: + schemas: + ConfigureRiskEngineSavedObjectErrorResponse: + type: object + required: + - risk_engine_saved_object_configured + - errors + properties: + risk_engine_saved_object_configured: + type: boolean + example: false + errors: + type: array + items: + type: object + required: + - seq + - error + properties: + seq: + type: integer + error: + type: string diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_schedule_now_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_schedule_now_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_schedule_now_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_schedule_now_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_schedule_now_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_schedule_now_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_schedule_now_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_schedule_now_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/get_risk_engine_privileges.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/get_risk_engine_privileges.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/get_risk_engine_privileges.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/get_risk_engine_privileges.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/get_risk_engine_privileges.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/get_risk_engine_privileges.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/get_risk_engine_privileges.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/get_risk_engine_privileges.schema.yaml diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts new file mode 100644 index 0000000000000..98d62fd1b5a9e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './engine_settings_route.gen'; +export * from './engine_status_route.gen'; +export * from './engine_init_route.gen'; +export * from './engine_disable_route.gen'; +export * from './engine_enable_route.gen'; +export * from './engine_status_route.gen'; +export * from './calculation_route.gen'; +export * from './preview_route.gen'; +export * from './entity_calculation_route.gen'; +export * from './get_risk_engine_privileges.gen'; +export * from './engine_cleanup_route.gen'; +export * from './engine_configure_saved_object_route.gen'; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts similarity index 93% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts index c58d2c02d562f..1b410a143683a 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts @@ -58,9 +58,11 @@ export const RiskScoresPreviewRequest = z.object({ /** * A list of alert statuses to exclude from the risk score calculation. If unspecified, all alert statuses are included. */ - excludeAlertStatuses: z - .array(z.enum(['open', 'closed', 'in-progress', 'acknowledged'])) - .optional(), + exclude_alert_statuses: z.array(z.string()).optional(), + /** + * A list of alert tags to exclude from the risk score calculation. If unspecified, all alert tags are included. + */ + exclude_alert_tags: z.array(z.string()).optional(), }); export type RiskScoresPreviewResponse = z.infer; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml similarity index 94% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml index a634a1a75975c..45d40a057f22c 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml @@ -58,16 +58,16 @@ components: description: Defines the time period over which scores will be evaluated. If unspecified, a range of `[now, now-30d]` will be used. weights: $ref: '../common/common.schema.yaml#/components/schemas/RiskScoreWeights' - excludeAlertStatuses: + exclude_alert_statuses: description: A list of alert statuses to exclude from the risk score calculation. If unspecified, all alert statuses are included. type: array items: type: string - enum: - - open - - closed - - in-progress - - acknowledged + exclude_alert_tags: + description: A list of alert tags to exclude from the risk score calculation. If unspecified, all alert tags are included. + type: array + items: + type: string RiskScoresPreviewResponse: diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/create_index/create_index_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/create_index/create_index_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/create_index/create_index_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/create_index/create_index_route.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/create_prebuilt_saved_objects/create_prebuilt_saved_objects_route.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/create_prebuilt_saved_objects/create_prebuilt_saved_objects_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/create_prebuilt_saved_objects/create_prebuilt_saved_objects_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/create_prebuilt_saved_objects/create_prebuilt_saved_objects_route.test.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/create_prebuilt_saved_objects/create_prebuilt_saved_objects_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/create_prebuilt_saved_objects/create_prebuilt_saved_objects_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/create_prebuilt_saved_objects/create_prebuilt_saved_objects_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/create_prebuilt_saved_objects/create_prebuilt_saved_objects_route.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/create_stored_script/create_stored_script_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/create_stored_script/create_stored_script_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/create_stored_script/create_stored_script_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/create_stored_script/create_stored_script_route.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/delete_indices/delete_indices_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/delete_indices/delete_indices_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/delete_indices/delete_indices_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/delete_indices/delete_indices_route.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/delete_prebuilt_saved_objects/delete_prebuilt_saved_objects_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/delete_prebuilt_saved_objects/delete_prebuilt_saved_objects_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/delete_prebuilt_saved_objects/delete_prebuilt_saved_objects_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/delete_prebuilt_saved_objects/delete_prebuilt_saved_objects_route.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/delete_stored_script/delete_stored_script_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/delete_stored_script/delete_stored_script_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/delete_stored_script/delete_stored_script_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/delete_stored_script/delete_stored_script_route.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/index.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/index_status/index_status_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/index_status/index_status_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/index_status/index_status_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/index_status/index_status_route.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/install_modules/install_modules_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/install_modules/install_modules_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/install_modules/install_modules_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/install_modules/install_modules_route.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/read_prebuilt_dev_tool_content/read_prebuilt_dev_tool_content_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/read_prebuilt_dev_tool_content/read_prebuilt_dev_tool_content_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/entity_analytics/risk_score/read_prebuilt_dev_tool_content/read_prebuilt_dev_tool_content_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/risk_score/read_prebuilt_dev_tool_content/read_prebuilt_dev_tool_content_route.ts diff --git a/x-pack/plugins/security_solution/common/api/model/alert.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/model/alert.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/model/alert.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/model/alert.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/model/alert.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/model/alert.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/model/alert.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/model/alert.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/model/error_responses.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/model/error_responses.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/model/error_responses.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/model/error_responses.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/model/error_responses.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/model/error_responses.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/model/error_responses.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/model/error_responses.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/model/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/model/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/model/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/model/index.ts diff --git a/x-pack/plugins/security_solution/common/api/model/primitives.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/model/primitives.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/model/primitives.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/model/primitives.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/model/primitives.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/model/primitives.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/model/primitives.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/model/primitives.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/quickstart_client.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/quickstart_client.gen.ts similarity index 98% rename from x-pack/plugins/security_solution/common/api/quickstart_client.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/quickstart_client.gen.ts index b5d72fc1ef207..fa315e3c421aa 100644 --- a/x-pack/plugins/security_solution/common/api/quickstart_client.gen.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/quickstart_client.gen.ts @@ -276,6 +276,10 @@ import type { GetEntityStoreStatusResponse, } from './entity_analytics/entity_store/status.gen'; import type { CleanUpRiskEngineResponse } from './entity_analytics/risk_engine/engine_cleanup_route.gen'; +import type { + ConfigureRiskEngineSavedObjectRequestBodyInput, + ConfigureRiskEngineSavedObjectResponse, +} from './entity_analytics/risk_engine/engine_configure_saved_object_route.gen'; import type { DisableRiskEngineResponse } from './entity_analytics/risk_engine/engine_disable_route.gen'; import type { EnableRiskEngineResponse } from './entity_analytics/risk_engine/engine_enable_route.gen'; import type { InitRiskEngineResponse } from './entity_analytics/risk_engine/engine_init_route.gen'; @@ -368,6 +372,8 @@ import type { GetRuleMigrationResourcesRequestQueryInput, GetRuleMigrationResourcesRequestParamsInput, GetRuleMigrationResourcesResponse, + GetRuleMigrationResourcesMissingRequestParamsInput, + GetRuleMigrationResourcesMissingResponse, GetRuleMigrationStatsRequestParamsInput, GetRuleMigrationStatsResponse, GetRuleMigrationTranslationStatsRequestParamsInput, @@ -600,6 +606,22 @@ If asset criticality records already exist for the specified entities, those rec }) .catch(catchAxiosErrorFormatAndThrow); } + /** + * Configuring the Risk Engine Saved Object + */ + async configureRiskEngineSavedObject(props: ConfigureRiskEngineSavedObjectProps) { + this.log.info(`${new Date().toISOString()} Calling API ConfigureRiskEngineSavedObject`); + return this.kbnClient + .request({ + path: '/api/risk_score/engine/saved_object/configure', + headers: { + [ELASTIC_HTTP_VERSION_HEADER]: '2023-10-31', + }, + method: 'PATCH', + body: props.body, + }) + .catch(catchAxiosErrorFormatAndThrow); + } /** * Copies and returns a timeline or timeline template. @@ -1471,6 +1493,24 @@ finalize it. }) .catch(catchAxiosErrorFormatAndThrow); } + /** + * Identifies missing resources from all the rules of an existing SIEM rules migration + */ + async getRuleMigrationResourcesMissing(props: GetRuleMigrationResourcesMissingProps) { + this.log.info(`${new Date().toISOString()} Calling API GetRuleMigrationResourcesMissing`); + return this.kbnClient + .request({ + path: replaceParams( + '/internal/siem_migrations/rules/{migration_id}/resources/missing', + props.params + ), + headers: { + [ELASTIC_HTTP_VERSION_HEADER]: '1', + }, + method: 'GET', + }) + .catch(catchAxiosErrorFormatAndThrow); + } /** * Retrieves the stats of a SIEM rules migration using the migration id provided */ @@ -2275,6 +2315,9 @@ export interface BulkUpsertAssetCriticalityRecordsProps { export interface CleanDraftTimelinesProps { body: CleanDraftTimelinesRequestBodyInput; } +export interface ConfigureRiskEngineSavedObjectProps { + body: ConfigureRiskEngineSavedObjectRequestBodyInput; +} export interface CopyTimelineProps { body: CopyTimelineRequestBodyInput; } @@ -2423,6 +2466,9 @@ export interface GetRuleMigrationResourcesProps { query: GetRuleMigrationResourcesRequestQueryInput; params: GetRuleMigrationResourcesRequestParamsInput; } +export interface GetRuleMigrationResourcesMissingProps { + params: GetRuleMigrationResourcesMissingRequestParamsInput; +} export interface GetRuleMigrationStatsProps { params: GetRuleMigrationStatsRequestParamsInput; } diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/asset_criticality/all.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/asset_criticality/all.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/asset_criticality/all.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/asset_criticality/all.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/cti/cti.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/cti/cti.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/cti/cti.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/cti/cti.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/cti/event_enrichment.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/cti/event_enrichment.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/cti/event_enrichment.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/cti/event_enrichment.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/cti/threat_intel_source.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/cti/threat_intel_source.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/cti/threat_intel_source.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/cti/threat_intel_source.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/endpoint_fields/endpoint_fields.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/endpoint_fields/endpoint_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/endpoint_fields/endpoint_fields.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/endpoint_fields/endpoint_fields.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/first_seen_last_seen/first_seen_last_seen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/first_seen_last_seen/first_seen_last_seen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/first_seen_last_seen/first_seen_last_seen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/first_seen_last_seen/first_seen_last_seen.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/hosts/all.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/all.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/hosts/all.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/all.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/hosts/details.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/details.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/hosts/details.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/details.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/hosts/hosts.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/hosts.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/hosts/hosts.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/hosts.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/hosts/model/sort.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/model/sort.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/hosts/model/sort.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/model/sort.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/hosts/overview.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/overview.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/hosts/overview.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/overview.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/hosts/uncommon_processes.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/uncommon_processes.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/hosts/uncommon_processes.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/hosts/uncommon_processes.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/index.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/matrix_histogram/matrix_histogram.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/matrix_histogram/matrix_histogram.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/matrix_histogram/matrix_histogram.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/matrix_histogram/matrix_histogram.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/factory_query_type.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/factory_query_type.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/factory_query_type.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/factory_query_type.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/filter_query.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/filter_query.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/filter_query.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/filter_query.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/inspect.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/inspect.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/inspect.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/inspect.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/order.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/order.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/order.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/order.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/pagination.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/pagination.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/pagination.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/pagination.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/request_basic_options.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/request_basic_options.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/request_basic_options.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/request_basic_options.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/request_paginated_options.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/request_paginated_options.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/request_paginated_options.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/request_paginated_options.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/runtime_mappings.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/runtime_mappings.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/runtime_mappings.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/runtime_mappings.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/sort.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/sort.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/sort.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/sort.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/model/timerange.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/timerange.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/model/timerange.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/model/timerange.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/details.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/details.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/details.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/details.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/dns.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/dns.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/dns.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/dns.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/http.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/http.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/http.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/http.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/model/flow_target.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/model/flow_target.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/model/flow_target.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/model/flow_target.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/model/top_tables_fields.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/model/top_tables_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/model/top_tables_fields.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/model/top_tables_fields.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/network.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/network.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/network.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/network.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/overview.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/overview.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/overview.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/overview.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/tls.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/tls.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/tls.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/tls.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/top_countries.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/top_countries.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/top_countries.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/top_countries.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/top_n_flow.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/top_n_flow.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/top_n_flow.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/top_n_flow.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/network/users.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/users.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/network/users.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/network/users.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/related_entities/related_entities.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/related_entities/related_entities.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/related_entities/related_entities.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/related_entities/related_entities.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/related_entities/related_hosts.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/related_entities/related_hosts.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/related_entities/related_hosts.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/related_entities/related_hosts.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/related_entities/related_users.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/related_entities/related_users.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/related_entities/related_users.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/related_entities/related_users.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/risk_score/all.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/risk_score/all.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/risk_score/all.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/risk_score/all.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/risk_score/kpi.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/risk_score/kpi.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/risk_score/kpi.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/risk_score/kpi.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/risk_score/model/risk_score_entity.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/risk_score/model/risk_score_entity.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/risk_score/model/risk_score_entity.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/risk_score/model/risk_score_entity.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/risk_score/risk_score.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/risk_score/risk_score.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/risk_score/risk_score.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/risk_score/risk_score.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/users/all.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/all.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/users/all.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/all.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/users/authentications.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/authentications.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/users/authentications.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/authentications.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/users/managed_details.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/managed_details.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/users/managed_details.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/managed_details.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/users/observed_details.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/observed_details.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/users/observed_details.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/observed_details.ts diff --git a/x-pack/plugins/security_solution/common/api/search_strategy/users/users.ts b/x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/users.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/search_strategy/users/users.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/search_strategy/users/users.ts diff --git a/x-pack/plugins/security_solution/common/api/tags/create_tag/create_tag_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/tags/create_tag/create_tag_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/tags/create_tag/create_tag_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/tags/create_tag/create_tag_route.ts diff --git a/x-pack/plugins/security_solution/common/api/tags/get_dashboards_by_tags/get_dashboards_by_tags_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/tags/get_dashboards_by_tags/get_dashboards_by_tags_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/tags/get_dashboards_by_tags/get_dashboards_by_tags_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/tags/get_dashboards_by_tags/get_dashboards_by_tags_route.ts diff --git a/x-pack/plugins/security_solution/common/api/tags/get_tags_by_name/get_tags_by_name_route.ts b/x-pack/solutions/security/plugins/security_solution/common/api/tags/get_tags_by_name/get_tags_by_name_route.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/tags/get_tags_by_name/get_tags_by_name_route.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/tags/get_tags_by_name/get_tags_by_name_route.ts diff --git a/x-pack/plugins/security_solution/common/api/tags/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/tags/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/tags/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/tags/index.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/copy_timeline/copy_timeline_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/copy_timeline/copy_timeline_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/copy_timeline/copy_timeline_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/copy_timeline/copy_timeline_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/copy_timeline/copy_timeline_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/copy_timeline/copy_timeline_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/copy_timeline/copy_timeline_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/copy_timeline/copy_timeline_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/create_timelines/create_timelines_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/create_timelines/create_timelines_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/create_timelines/create_timelines_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/create_timelines/create_timelines_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/create_timelines/create_timelines_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/create_timelines/create_timelines_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/create_timelines/create_timelines_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/create_timelines/create_timelines_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/delete_note/delete_note_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/delete_note/delete_note_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/delete_note/delete_note_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/delete_note/delete_note_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/delete_note/delete_note_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/delete_note/delete_note_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/delete_note/delete_note_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/delete_note/delete_note_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/delete_timelines/delete_timelines_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/delete_timelines/delete_timelines_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/delete_timelines/delete_timelines_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/delete_timelines/delete_timelines_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/delete_timelines/delete_timelines_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/delete_timelines/delete_timelines_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/delete_timelines/delete_timelines_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/delete_timelines/delete_timelines_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/export_timelines/export_timelines_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/export_timelines/export_timelines_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/export_timelines/export_timelines_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/export_timelines/export_timelines_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/export_timelines/export_timelines_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/export_timelines/export_timelines_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/export_timelines/export_timelines_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/export_timelines/export_timelines_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/get_draft_timelines/get_draft_timelines_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_draft_timelines/get_draft_timelines_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/get_draft_timelines/get_draft_timelines_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_draft_timelines/get_draft_timelines_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/get_draft_timelines/get_draft_timelines_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_draft_timelines/get_draft_timelines_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/get_draft_timelines/get_draft_timelines_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_draft_timelines/get_draft_timelines_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/get_notes/get_notes_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_notes/get_notes_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/get_notes/get_notes_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_notes/get_notes_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/get_notes/get_notes_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_notes/get_notes_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/get_notes/get_notes_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_notes/get_notes_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/get_timeline/get_timeline_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_timeline/get_timeline_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/get_timeline/get_timeline_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_timeline/get_timeline_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/get_timeline/get_timeline_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_timeline/get_timeline_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/get_timeline/get_timeline_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_timeline/get_timeline_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/get_timelines/get_timelines_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_timelines/get_timelines_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/get_timelines/get_timelines_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_timelines/get_timelines_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/get_timelines/get_timelines_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_timelines/get_timelines_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/get_timelines/get_timelines_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/get_timelines/get_timelines_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/import_timelines/import_timelines_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/import_timelines/import_timelines_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/import_timelines/import_timelines_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/import_timelines/import_timelines_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/import_timelines/import_timelines_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/import_timelines/import_timelines_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/import_timelines/import_timelines_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/import_timelines/import_timelines_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/index.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/index.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/install_prepackaged_timelines/install_prepackaged_timelines_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/install_prepackaged_timelines/install_prepackaged_timelines_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/install_prepackaged_timelines/install_prepackaged_timelines_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/install_prepackaged_timelines/install_prepackaged_timelines_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/install_prepackaged_timelines/install_prepackaged_timelines_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/install_prepackaged_timelines/install_prepackaged_timelines_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/install_prepackaged_timelines/install_prepackaged_timelines_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/install_prepackaged_timelines/install_prepackaged_timelines_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/model/api.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/api.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/model/api.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/api.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/model/components.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/components.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/model/components.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/components.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/model/components.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/components.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/model/components.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/components.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/error_schema.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/model/error_schema.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/error_schema.mock.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.test.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/error_schema.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/model/error_schema.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/error_schema.test.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/model/error_schema.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/error_schema.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/model/error_schema.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/model/error_schema.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/patch_timelines/patch_timeline_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/patch_timelines/patch_timeline_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/patch_timelines/patch_timeline_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/patch_timelines/patch_timeline_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/patch_timelines/patch_timeline_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/patch_timelines/patch_timeline_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/patch_timelines/patch_timeline_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/patch_timelines/patch_timeline_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/persist_favorite/persist_favorite_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/persist_favorite/persist_favorite_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/persist_favorite/persist_favorite_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/persist_favorite/persist_favorite_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/persist_favorite/persist_favorite_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/persist_favorite/persist_favorite_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/persist_favorite/persist_favorite_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/persist_favorite/persist_favorite_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/persist_note/persist_note_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/persist_note/persist_note_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/persist_note/persist_note_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/persist_note/persist_note_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/persist_note/persist_note_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/persist_note/persist_note_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/persist_note/persist_note_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/persist_note/persist_note_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/pinned_events/pinned_events_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/pinned_events/pinned_events_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/pinned_events/pinned_events_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/pinned_events/pinned_events_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/pinned_events/pinned_events_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/pinned_events/pinned_events_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/pinned_events/pinned_events_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/pinned_events/pinned_events_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/resolve_timeline/resolve_timeline_route.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/resolve_timeline/resolve_timeline_route.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/resolve_timeline/resolve_timeline_route.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/resolve_timeline/resolve_timeline_route.gen.ts diff --git a/x-pack/plugins/security_solution/common/api/timeline/resolve_timeline/resolve_timeline_route.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/resolve_timeline/resolve_timeline_route.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/resolve_timeline/resolve_timeline_route.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/resolve_timeline/resolve_timeline_route.schema.yaml diff --git a/x-pack/plugins/security_solution/common/api/timeline/routes.ts b/x-pack/solutions/security/plugins/security_solution/common/api/timeline/routes.ts similarity index 100% rename from x-pack/plugins/security_solution/common/api/timeline/routes.ts rename to x-pack/solutions/security/plugins/security_solution/common/api/timeline/routes.ts diff --git a/x-pack/plugins/security_solution/common/config_settings.ts b/x-pack/solutions/security/plugins/security_solution/common/config_settings.ts similarity index 100% rename from x-pack/plugins/security_solution/common/config_settings.ts rename to x-pack/solutions/security/plugins/security_solution/common/config_settings.ts diff --git a/x-pack/solutions/security/plugins/security_solution/common/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/constants.ts new file mode 100644 index 0000000000000..3818813d94a72 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/constants.ts @@ -0,0 +1,519 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RuleNotifyWhen } from '@kbn/alerting-plugin/common'; +import type { FilterControlConfig } from '@kbn/alerts-ui-shared'; +import * as i18n from './translations'; + +export { SecurityPageName } from '@kbn/security-solution-navigation'; +/** + * as const + * + * The const assertion ensures that type widening does not occur + * https://mariusschulz.com/blog/literal-type-widening-in-typescript + * Please follow this convention when adding to this file + */ +export const APP_ID = 'securitySolution' as const; +export const APP_UI_ID = 'securitySolutionUI' as const; +export const ASSISTANT_FEATURE_ID = 'securitySolutionAssistant' as const; +export const ATTACK_DISCOVERY_FEATURE_ID = 'securitySolutionAttackDiscovery' as const; +export const CASES_FEATURE_ID = 'securitySolutionCasesV2' as const; +export const SERVER_APP_ID = 'siem' as const; +export const APP_NAME = 'Security' as const; +export const APP_ICON = 'securityAnalyticsApp' as const; +export const APP_ICON_SOLUTION = 'logoSecurity' as const; +export const APP_PATH = `/app/security` as const; +export const APP_INTEGRATIONS_PATH = `/app/integrations` as const; +export const ADD_DATA_PATH = `${APP_INTEGRATIONS_PATH}/browse/security`; +export const ADD_THREAT_INTELLIGENCE_DATA_PATH = `${APP_INTEGRATIONS_PATH}/browse/threat_intel`; +export const DEFAULT_BYTES_FORMAT = 'format:bytes:defaultPattern' as const; +export const DEFAULT_DATE_FORMAT = 'dateFormat' as const; +export const DEFAULT_DATE_FORMAT_TZ = 'dateFormat:tz' as const; +export const DEFAULT_INDEX_KEY = 'securitySolution:defaultIndex' as const; +export const DEFAULT_NUMBER_FORMAT = 'format:number:defaultPattern' as const; +export const DEFAULT_DATA_VIEW_ID = 'security-solution' as const; +export const DEFAULT_TIME_FIELD = '@timestamp' as const; +export const DEFAULT_TIME_RANGE = 'timepicker:timeDefaults' as const; +export const DEFAULT_REFRESH_RATE_INTERVAL = 'timepicker:refreshIntervalDefaults' as const; +export const DEFAULT_APP_TIME_RANGE = 'securitySolution:timeDefaults' as const; +export const DEFAULT_APP_REFRESH_INTERVAL = 'securitySolution:refreshIntervalDefaults' as const; +export const DEFAULT_ALERTS_INDEX = '.alerts-security.alerts' as const; +export const DEFAULT_SIGNALS_INDEX = '.siem-signals' as const; +export const DEFAULT_PREVIEW_INDEX = '.preview.alerts-security.alerts' as const; +export const DEFAULT_LISTS_INDEX = '.lists' as const; +export const DEFAULT_ITEMS_INDEX = '.items' as const; +export const DEFAULT_RISK_SCORE_PAGE_SIZE = 1000 as const; +// The DEFAULT_MAX_SIGNALS value exists also in `x-pack/plugins/cases/common/constants.ts` +// If either changes, engineer should ensure both values are updated +export const DEFAULT_MAX_SIGNALS = 100 as const; +export const DEFAULT_SEARCH_AFTER_PAGE_SIZE = 100 as const; +export const DEFAULT_ANOMALY_SCORE = 'securitySolution:defaultAnomalyScore' as const; +export const DEFAULT_MAX_TABLE_QUERY_SIZE = 10000 as const; +export const DEFAULT_FROM = 'now/d' as const; +export const DEFAULT_TO = 'now/d' as const; +export const DEFAULT_INTERVAL_PAUSE = true as const; +export const DEFAULT_INTERVAL_TYPE = 'manual' as const; +export const DEFAULT_INTERVAL_VALUE = 300000 as const; // ms +export const DEFAULT_TIMEPICKER_QUICK_RANGES = 'timepicker:quickRanges' as const; +export const SCROLLING_DISABLED_CLASS_NAME = 'scrolling-disabled' as const; +export const NO_ALERT_INDEX = 'no-alert-index-049FC71A-4C2C-446F-9901-37XMC5024C51' as const; +export const ENDPOINT_METADATA_INDEX = 'metrics-endpoint.metadata-*' as const; +export const ENDPOINT_METRICS_INDEX = '.ds-metrics-endpoint.metrics-*' as const; +export const DEFAULT_RULE_REFRESH_INTERVAL_ON = true as const; +export const DEFAULT_RULE_REFRESH_INTERVAL_VALUE = 60000 as const; // ms +export const DEFAULT_RULE_NOTIFICATION_QUERY_SIZE = 100 as const; +export const SECURITY_FEATURE_ID = 'Security' as const; +export const SECURITY_TAG_NAME = 'Security Solution' as const; +export const SECURITY_TAG_DESCRIPTION = 'Security Solution auto-generated tag' as const; +export const DEFAULT_SPACE_ID = 'default' as const; +export const DEFAULT_RELATIVE_DATE_THRESHOLD = 24 as const; +export const DEFAULT_MAX_UNASSOCIATED_NOTES = 1000 as const; + +// Document path where threat indicator fields are expected. Fields are used +// to enrich signals, and are copied to threat.enrichments. +export const DEFAULT_INDICATOR_SOURCE_PATH = 'threat.indicator' as const; +export const ENRICHMENT_DESTINATION_PATH = 'threat.enrichments' as const; +export const DEFAULT_THREAT_INDEX_KEY = 'securitySolution:defaultThreatIndex' as const; +export const DEFAULT_THREAT_INDEX_VALUE = ['logs-ti_*'] as const; +export const DEFAULT_THREAT_MATCH_QUERY = '@timestamp >= "now-30d/d"' as const; + +export const EXPLORE_PATH = '/explore' as const; +export const DASHBOARDS_PATH = '/dashboards' as const; +export const MANAGE_PATH = '/manage' as const; +export const TIMELINES_PATH = '/timelines' as const; +export const CASES_PATH = '/cases' as const; +export const OVERVIEW_PATH = '/overview' as const; +export const ONBOARDING_PATH = '/get_started' as const; +export const DATA_QUALITY_PATH = '/data_quality' as const; +export const DETECTION_RESPONSE_PATH = '/detection_response' as const; +export const DETECTIONS_PATH = '/detections' as const; +export const ALERTS_PATH = '/alerts' as const; +export const ALERT_DETAILS_REDIRECT_PATH = `${ALERTS_PATH}/redirect` as const; +export const RULES_PATH = '/rules' as const; +export const RULES_LANDING_PATH = `${RULES_PATH}/landing` as const; +export const RULES_ADD_PATH = `${RULES_PATH}/add_rules` as const; +export const RULES_UPDATES = `${RULES_PATH}/updates` as const; +export const RULES_CREATE_PATH = `${RULES_PATH}/create` as const; +export const EXCEPTIONS_PATH = '/exceptions' as const; +export const EXCEPTION_LIST_DETAIL_PATH = `${EXCEPTIONS_PATH}/details/:detailName` as const; +export const HOSTS_PATH = '/hosts' as const; +export const ATTACK_DISCOVERY_PATH = '/attack_discovery' as const; +export const USERS_PATH = '/users' as const; +export const KUBERNETES_PATH = '/kubernetes' as const; +export const NETWORK_PATH = '/network' as const; +export const MANAGEMENT_PATH = '/administration' as const; +export const COVERAGE_OVERVIEW_PATH = '/rules_coverage_overview' as const; +export const THREAT_INTELLIGENCE_PATH = '/threat_intelligence' as const; +export const INVESTIGATIONS_PATH = '/investigations' as const; +export const MACHINE_LEARNING_PATH = '/ml' as const; +export const ASSETS_PATH = '/assets' as const; +export const CLOUD_DEFEND_PATH = '/cloud_defend' as const; +export const ENDPOINTS_PATH = `${MANAGEMENT_PATH}/endpoints` as const; +export const POLICIES_PATH = `${MANAGEMENT_PATH}/policy` as const; +export const TRUSTED_APPS_PATH = `${MANAGEMENT_PATH}/trusted_apps` as const; +export const EVENT_FILTERS_PATH = `${MANAGEMENT_PATH}/event_filters` as const; +export const HOST_ISOLATION_EXCEPTIONS_PATH = + `${MANAGEMENT_PATH}/host_isolation_exceptions` as const; +export const BLOCKLIST_PATH = `${MANAGEMENT_PATH}/blocklist` as const; +export const RESPONSE_ACTIONS_HISTORY_PATH = `${MANAGEMENT_PATH}/response_actions_history` as const; +export const ENTITY_ANALYTICS_PATH = '/entity_analytics' as const; +export const ENTITY_ANALYTICS_MANAGEMENT_PATH = `/entity_analytics_management` as const; +export const ENTITY_ANALYTICS_ASSET_CRITICALITY_PATH = + `/entity_analytics_asset_criticality` as const; +export const ENTITY_ANALYTICS_ENTITY_STORE_MANAGEMENT_PATH = + `/entity_analytics_entity_store` as const; +export const APP_ALERTS_PATH = `${APP_PATH}${ALERTS_PATH}` as const; +export const APP_CASES_PATH = `${APP_PATH}${CASES_PATH}` as const; +export const APP_ENDPOINTS_PATH = `${APP_PATH}${ENDPOINTS_PATH}` as const; +export const APP_POLICIES_PATH = `${APP_PATH}${POLICIES_PATH}` as const; +export const APP_TRUSTED_APPS_PATH = `${APP_PATH}${TRUSTED_APPS_PATH}` as const; +export const APP_EVENT_FILTERS_PATH = `${APP_PATH}${EVENT_FILTERS_PATH}` as const; +export const APP_HOST_ISOLATION_EXCEPTIONS_PATH = + `${APP_PATH}${HOST_ISOLATION_EXCEPTIONS_PATH}` as const; +export const APP_BLOCKLIST_PATH = `${APP_PATH}${BLOCKLIST_PATH}` as const; +export const APP_RESPONSE_ACTIONS_HISTORY_PATH = + `${APP_PATH}${RESPONSE_ACTIONS_HISTORY_PATH}` as const; +export const NOTES_PATH = `${MANAGEMENT_PATH}/notes` as const; +export const SIEM_MIGRATIONS_PATH = '/siem_migrations' as const; +export const SIEM_MIGRATIONS_RULES_PATH = `${SIEM_MIGRATIONS_PATH}/rules` as const; + +// cloud logs to exclude from default index pattern +export const EXCLUDE_ELASTIC_CLOUD_INDICES = ['-*elastic-cloud-logs-*']; + +/** The comma-delimited list of Elasticsearch indices from which the SIEM app collects events */ +export const INCLUDE_INDEX_PATTERN = [ + 'apm-*-transaction*', + 'auditbeat-*', + 'endgame-*', + 'filebeat-*', + 'logs-*', + 'packetbeat-*', + 'traces-apm*', + 'winlogbeat-*', +]; +/** The comma-delimited list of Elasticsearch indices from which the SIEM app collects events, and the exclude index pattern */ +export const DEFAULT_INDEX_PATTERN = [...INCLUDE_INDEX_PATTERN, ...EXCLUDE_ELASTIC_CLOUD_INDICES]; + +/** This Kibana Advanced Setting enables the `Security news` feed widget */ +export const ENABLE_NEWS_FEED_SETTING = 'securitySolution:enableNewsFeed' as const; + +/** This Kibana Advanced Setting allows users to enable/disable querying cold and frozen data tiers in analyzer */ +export const EXCLUDE_COLD_AND_FROZEN_TIERS_IN_ANALYZER = + 'securitySolution:excludeColdAndFrozenTiersInAnalyzer' as const; + +/** This Kibana Advanced Setting enables the warnings for CCS read permissions */ +export const ENABLE_CCS_READ_WARNING_SETTING = 'securitySolution:enableCcsWarning' as const; + +/** This Kibana Advanced Setting sets the auto refresh interval for the detections all rules table */ +export const DEFAULT_RULES_TABLE_REFRESH_SETTING = 'securitySolution:rulesTableRefresh' as const; + +/** This Kibana Advanced Setting specifies the URL of the News feed widget */ +export const NEWS_FEED_URL_SETTING = 'securitySolution:newsFeedUrl' as const; + +/** The default value for News feed widget */ +export const NEWS_FEED_URL_SETTING_DEFAULT = 'https://feeds.elastic.co/security-solution' as const; + +/** This Kibana Advanced Setting specifies the URLs of `IP Reputation Links`*/ +export const IP_REPUTATION_LINKS_SETTING = 'securitySolution:ipReputationLinks' as const; + +/** The default value for `IP Reputation Links` */ +export const IP_REPUTATION_LINKS_SETTING_DEFAULT = `[ + { "name": "virustotal.com", "url_template": "https://www.virustotal.com/gui/search/{{ip}}" }, + { "name": "talosIntelligence.com", "url_template": "https://talosintelligence.com/reputation_center/lookup?search={{ip}}" } +]`; + +/** This Kibana Advanced Setting shows related integrations on the Rules Table */ +export const SHOW_RELATED_INTEGRATIONS_SETTING = + 'securitySolution:showRelatedIntegrations' as const; + +/** This Kibana Advanced Setting enables extended rule execution logging to Event Log */ +export const EXTENDED_RULE_EXECUTION_LOGGING_ENABLED_SETTING = + 'securitySolution:extendedRuleExecutionLoggingEnabled' as const; + +/** This Kibana Advanced Setting sets minimum log level starting from which execution logs will be written to Event Log */ +export const EXTENDED_RULE_EXECUTION_LOGGING_MIN_LEVEL_SETTING = + 'securitySolution:extendedRuleExecutionLoggingMinLevel' as const; + +/** This Kibana Advanced Setting allows users to exclude selected data tiers from search during rule execution */ +export const EXCLUDED_DATA_TIERS_FOR_RULE_EXECUTION = + 'securitySolution:excludedDataTiersForRuleExecution' as const; + +/** This Kibana Advances setting allows users to define the maximum amount of unassociated notes (notes without a `timelineId`) */ +export const MAX_UNASSOCIATED_NOTES = 'securitySolution:maxUnassociatedNotes' as const; + +/** This Kibana Advanced Setting allows users to enable/disable the Visualizations in Flyout feature */ +export const ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING = + 'securitySolution:enableVisualizationsInFlyout' as const; + +/** + * Id for the notifications alerting type + * @deprecated Once we are confident all rules relying on side-car actions SO's have been migrated to SO references we should remove this function + */ +export const LEGACY_NOTIFICATIONS_ID = `siem.notifications` as const; + +/** + * Internal actions route + */ +export const UPDATE_OR_CREATE_LEGACY_ACTIONS = '/internal/api/detection/legacy/notifications'; + +/** + * Exceptions management routes + */ +export const SHARED_EXCEPTION_LIST_URL = `/api${EXCEPTIONS_PATH}/shared` as const; + +/** + * Detection engine routes + */ +export const DETECTION_ENGINE_URL = '/api/detection_engine' as const; +export const DETECTION_ENGINE_PRIVILEGES_URL = `${DETECTION_ENGINE_URL}/privileges` as const; +export const DETECTION_ENGINE_INDEX_URL = `${DETECTION_ENGINE_URL}/index` as const; + +export const DETECTION_ENGINE_RULES_URL = `${DETECTION_ENGINE_URL}/rules` as const; +export const DETECTION_ENGINE_RULES_URL_FIND = `${DETECTION_ENGINE_RULES_URL}/_find` as const; +export const DETECTION_ENGINE_TAGS_URL = `${DETECTION_ENGINE_URL}/tags` as const; +export const DETECTION_ENGINE_RULES_BULK_ACTION = + `${DETECTION_ENGINE_RULES_URL}/_bulk_action` as const; +export const DETECTION_ENGINE_RULES_PREVIEW = `${DETECTION_ENGINE_RULES_URL}/preview` as const; +export const DETECTION_ENGINE_RULES_BULK_DELETE = + `${DETECTION_ENGINE_RULES_URL}/_bulk_delete` as const; +export const DETECTION_ENGINE_RULES_BULK_CREATE = + `${DETECTION_ENGINE_RULES_URL}/_bulk_create` as const; +export const DETECTION_ENGINE_RULES_BULK_UPDATE = + `${DETECTION_ENGINE_RULES_URL}/_bulk_update` as const; + +export * from './entity_analytics/constants'; + +export const INTERNAL_DASHBOARDS_URL = `/internal/dashboards` as const; +export const INTERNAL_TAGS_URL = `/internal/tags`; + +/** + * Internal detection engine routes + */ +export const INTERNAL_DETECTION_ENGINE_URL = '/internal/detection_engine' as const; +export const DETECTION_ENGINE_ALERTS_INDEX_URL = + `${INTERNAL_DETECTION_ENGINE_URL}/signal/index` as const; +export const DETECTION_ENGINE_ALERT_SUGGEST_USERS_URL = + `${INTERNAL_DETECTION_ENGINE_URL}/users/_find` as const; + +/** + * Telemetry detection endpoint for any previews requested of what data we are + * providing through UI/UX and for e2e tests. + * curl http//localhost:5601/internal/security_solution/telemetry + * to see the contents + */ +export const SECURITY_TELEMETRY_URL = `/internal/security_solution/telemetry` as const; + +export const TIMELINE_RESOLVE_URL = '/api/timeline/resolve' as const; +export const TIMELINE_URL = '/api/timeline' as const; +export const TIMELINES_URL = '/api/timelines' as const; +export const TIMELINE_FAVORITE_URL = '/api/timeline/_favorite' as const; +export const TIMELINE_DRAFT_URL = `${TIMELINE_URL}/_draft` as const; +export const TIMELINE_EXPORT_URL = `${TIMELINE_URL}/_export` as const; +export const TIMELINE_IMPORT_URL = `${TIMELINE_URL}/_import` as const; +export const TIMELINE_PREPACKAGED_URL = `${TIMELINE_URL}/_prepackaged` as const; +export const TIMELINE_COPY_URL = `${TIMELINE_URL}/_copy` as const; + +export const NOTE_URL = '/api/note' as const; +export const PINNED_EVENT_URL = '/api/pinned_event' as const; +export const SOURCERER_API_URL = '/internal/security_solution/sourcerer' as const; +export const RISK_SCORE_INDEX_STATUS_API_URL = '/internal/risk_score/index_status' as const; + +/** + * Default signals index key for kibana.dev.yml + */ +export const SIGNALS_INDEX_KEY = 'signalsIndex' as const; + +export const DETECTION_ENGINE_SIGNALS_URL = `${DETECTION_ENGINE_URL}/signals` as const; +export const DETECTION_ENGINE_SIGNALS_STATUS_URL = + `${DETECTION_ENGINE_SIGNALS_URL}/status` as const; +export const DETECTION_ENGINE_QUERY_SIGNALS_URL = `${DETECTION_ENGINE_SIGNALS_URL}/search` as const; +export const DETECTION_ENGINE_SIGNALS_MIGRATION_URL = + `${DETECTION_ENGINE_SIGNALS_URL}/migration` as const; +export const DETECTION_ENGINE_SIGNALS_MIGRATION_STATUS_URL = + `${DETECTION_ENGINE_SIGNALS_URL}/migration_status` as const; +export const DETECTION_ENGINE_SIGNALS_FINALIZE_MIGRATION_URL = + `${DETECTION_ENGINE_SIGNALS_URL}/finalize_migration` as const; +export const DETECTION_ENGINE_ALERT_TAGS_URL = `${DETECTION_ENGINE_SIGNALS_URL}/tags` as const; +export const DETECTION_ENGINE_ALERT_ASSIGNEES_URL = + `${DETECTION_ENGINE_SIGNALS_URL}/assignees` as const; + +export const ALERTS_AS_DATA_URL = '/internal/rac/alerts' as const; +export const ALERTS_AS_DATA_FIND_URL = `${ALERTS_AS_DATA_URL}/find` as const; + +/** + * Security Integrations routes + */ +export const SECRUTIY_INTEGRATIONS_FLEET_MANAGED_INDEX_TEMPLATES_URL = + '/internal/fleet_index_templates' as const; + +export const SECURITY_INTEGRATIONS_CRIBL_ROUTING_PIPELINE = 'cribl-routing-pipeline' as const; + +/** + * Common naming convention for an unauthenticated user + */ +export const UNAUTHENTICATED_USER = 'Unauthenticated' as const; + +/** + Licensing requirements + */ +export const MINIMUM_ML_LICENSE = 'platinum' as const; + +/** + Machine Learning constants + */ +export const ML_GROUP_ID = 'security' as const; +export const LEGACY_ML_GROUP_ID = 'siem' as const; +export const ML_GROUP_IDS = [ML_GROUP_ID, LEGACY_ML_GROUP_ID] as const; + +/** + * Rule Actions + */ +export const NOTIFICATION_THROTTLE_NO_ACTIONS = 'no_actions' as const; +export const NOTIFICATION_THROTTLE_RULE = 'rule' as const; + +export const NOTIFICATION_DEFAULT_FREQUENCY = { + notifyWhen: RuleNotifyWhen.ACTIVE, + throttle: null, + summary: true, +}; + +export const showAllOthersBucket: string[] = [ + 'destination.ip', + 'event.action', + 'event.category', + 'event.dataset', + 'event.module', + 'signal.rule.threat.tactic.name', + 'source.ip', + 'destination.ip', + 'user.name', +]; + +export const RISKY_HOSTS_INDEX_PREFIX = 'ml_host_risk_score_' as const; + +export const RISKY_USERS_INDEX_PREFIX = 'ml_user_risk_score_' as const; + +export const TRANSFORM_STATES = { + ABORTING: 'aborting', + FAILED: 'failed', + INDEXING: 'indexing', + STARTED: 'started', + STOPPED: 'stopped', + STOPPING: 'stopping', + WAITING: 'waiting', +}; + +export const WARNING_TRANSFORM_STATES = new Set([ + TRANSFORM_STATES.ABORTING, + TRANSFORM_STATES.FAILED, + TRANSFORM_STATES.STOPPED, + TRANSFORM_STATES.STOPPING, +]); + +export const STARTED_TRANSFORM_STATES = new Set([ + TRANSFORM_STATES.INDEXING, + TRANSFORM_STATES.STARTED, +]); + +/** + * How many rules to update at a time is set to 50 from errors coming from + * the slow environments such as cloud when the rule updates are > 100 we were + * seeing timeout issues. + * + * Since there is not timeout options at the alerting API level right now, we are + * at the mercy of the Elasticsearch server client/server default timeouts and what + * we are doing could be considered a workaround to not being able to increase the timeouts. + * + * However, other bad effects and saturation of connections beyond 50 makes this a "noisy neighbor" + * if we don't limit its number of connections as we increase the number of rules that can be + * installed at a time. + * + * Lastly, we saw weird issues where Chrome on upstream 408 timeouts will re-call the REST route + * which in turn could create additional connections we want to avoid. + * + * See file import_rules_route.ts for another area where 50 was chosen, therefore I chose + * 50 here to mimic it as well. If you see this re-opened or what similar to it, consider + * reducing the 50 above to a lower number. + * + * See the original ticket here: + * https://github.com/elastic/kibana/issues/94418 + */ +export const MAX_RULES_TO_UPDATE_IN_PARALLEL = 50; + +export const LIMITED_CONCURRENCY_ROUTE_TAG_PREFIX = `${APP_ID}:limitedConcurrency`; + +/** + * Max number of rules to display on UI in table, max number of rules that can be edited in a single bulk edit API request + * We limit number of rules in bulk edit API, because rulesClient doesn't support bulkGet of rules by ids. + * Given this limitation, current implementation fetches each rule separately through rulesClient.resolve method. + * As max number of rules displayed on a page is 100, max 100 rules can be bulk edited by passing their ids to API. + * We decided add this limit(number of ids less than 100) in bulk edit API as well, to prevent a huge number of single rule fetches + */ +export const RULES_TABLE_MAX_PAGE_SIZE = 100; + +/** + * Local storage keys we use to store the state of our new features tours we currently show in the app. + * + * NOTE: As soon as we want to show tours for new features in the upcoming release, + * we will need to update these constants with the corresponding version. + */ +export const NEW_FEATURES_TOUR_STORAGE_KEYS = { + RULE_MANAGEMENT_PAGE: 'securitySolution.rulesManagementPage.newFeaturesTour.v8.13', + TIMELINES: 'securitySolution.security.timelineFlyoutHeader.saveTimelineTour', +}; + +export const RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_METRIC_COLUMNS_STORAGE_KEY = + 'securitySolution.ruleDetails.ruleExecutionLog.showMetrics.v8.2'; + +export const RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_SOURCE_EVENT_TIME_RANGE_STORAGE_KEY = + 'securitySolution.ruleDetails.ruleExecutionLog.showSourceEventTimeRange.v8.15'; + +// TODO: https://github.com/elastic/kibana/pull/142950 +/** + * Error codes that can be thrown during _bulk_action API dry_run call and be processed and displayed to end user + */ +export enum BulkActionsDryRunErrCode { + IMMUTABLE = 'IMMUTABLE', + MACHINE_LEARNING_AUTH = 'MACHINE_LEARNING_AUTH', + MACHINE_LEARNING_INDEX_PATTERN = 'MACHINE_LEARNING_INDEX_PATTERN', + ESQL_INDEX_PATTERN = 'ESQL_INDEX_PATTERN', + MANUAL_RULE_RUN_FEATURE = 'MANUAL_RULE_RUN_FEATURE', + MANUAL_RULE_RUN_DISABLED_RULE = 'MANUAL_RULE_RUN_DISABLED_RULE', +} + +export const MAX_NUMBER_OF_NEW_TERMS_FIELDS = 3; + +export const BULK_ADD_TO_TIMELINE_LIMIT = 2000; + +export const DEFAULT_DETECTION_PAGE_FILTERS: FilterControlConfig[] = [ + { + title: 'Status', + fieldName: 'kibana.alert.workflow_status', + selectedOptions: ['open'], + hideActionBar: true, + persist: true, + hideExists: true, + }, + { + title: 'Severity', + fieldName: 'kibana.alert.severity', + selectedOptions: [], + hideActionBar: true, + hideExists: true, + }, + { + title: 'User', + fieldName: 'user.name', + }, + { + title: 'Host', + fieldName: 'host.name', + }, +]; + +/** This local storage key stores the `Grid / Event rendered view` selection */ +export const ALERTS_TABLE_VIEW_SELECTION_KEY = 'securitySolution.alerts.table.view-selection'; + +export const VIEW_SELECTION = { + gridView: 'gridView', + eventRenderedView: 'eventRenderedView', +} as const; + +export const ALERTS_TABLE_REGISTRY_CONFIG_IDS = { + ALERTS_PAGE: `${APP_ID}-alerts-page`, + RULE_DETAILS: `${APP_ID}-rule-details`, + CASE: `${APP_ID}-case`, + RISK_INPUTS: `${APP_ID}-risk-inputs`, +} as const; + +export const DEFAULT_ALERT_TAGS_KEY = 'securitySolution:alertTags' as const; +export const DEFAULT_ALERT_TAGS_VALUE = [ + i18n.DUPLICATE, + i18n.FALSE_POSITIVE, + i18n.FURTHER_INVESTIGATION_REQUIRED, +] as const; + +/** + * Max length for the comments within security solution + */ +export const MAX_COMMENT_LENGTH = 30000 as const; + +/** + * Cases external attachment IDs + */ +export const CASE_ATTACHMENT_ENDPOINT_TYPE_ID = 'endpoint' as const; + +/** + * Rule gaps + */ +export const MAX_MANUAL_RULE_RUN_LOOKBACK_WINDOW_DAYS = 90; +export const MAX_MANUAL_RULE_RUN_BULK_SIZE = 100; + +/* + * Whether it is a Jest environment + */ +export const JEST_ENVIRONMENT = typeof jest !== 'undefined'; diff --git a/x-pack/plugins/security_solution/common/cti/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/cti/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/cti/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/cti/constants.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/constants.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts similarity index 99% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts index 1c15a07e765fe..2e012a6462dd7 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts @@ -118,7 +118,7 @@ const extractDiffableCommonFields = ( version: rule.version, // Main domain fields - name: rule.name, + name: rule.name.trim(), tags: rule.tags ?? [], description: rule.description, severity: rule.severity, diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_building_block_object.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_building_block_object.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_building_block_object.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_building_block_object.ts diff --git a/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.test.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.test.ts new file mode 100644 index 0000000000000..03dc7ecbe5331 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.test.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { KqlQueryType } from '../../../api/detection_engine'; +import { + extractRuleEqlQuery, + extractRuleEsqlQuery, + extractRuleKqlQuery, +} from './extract_rule_data_query'; + +describe('extract rule data queries', () => { + describe('extractRuleKqlQuery', () => { + it('extracts a trimmed version of the query field for inline query types', () => { + const extractedKqlQuery = extractRuleKqlQuery('\nevent.kind:alert\n', 'kuery', [], undefined); + + expect(extractedKqlQuery).toEqual({ + type: KqlQueryType.inline_query, + query: 'event.kind:alert', + language: 'kuery', + filters: [], + }); + }); + }); + + describe('extractRuleEqlQuery', () => { + it('extracts a trimmed version of the query field', () => { + const extractedEqlQuery = extractRuleEqlQuery({ + query: '\n\nquery where true\n\n', + language: 'eql', + filters: [], + eventCategoryOverride: undefined, + timestampField: undefined, + tiebreakerField: undefined, + }); + + expect(extractedEqlQuery).toEqual({ + query: 'query where true', + language: 'eql', + filters: [], + event_category_override: undefined, + timestamp_field: undefined, + tiebreaker_field: undefined, + }); + }); + }); + + describe('extractRuleEsqlQuery', () => { + it('extracts a trimmed version of the query field', () => { + const extractedEsqlQuery = extractRuleEsqlQuery('\nFROM * where true\t\n', 'esql'); + + expect(extractedEsqlQuery).toEqual({ + query: 'FROM * where true', + language: 'esql', + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts similarity index 96% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts index 99bb27b99357f..04460dd0cad75 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts @@ -46,7 +46,7 @@ export const extractInlineKqlQuery = ( ): InlineKqlQuery => { return { type: KqlQueryType.inline_query, - query: query ?? '', + query: query?.trim() ?? '', language: language ?? 'kuery', filters: filters ?? [], }; @@ -63,7 +63,7 @@ interface ExtractRuleEqlQueryParams { export const extractRuleEqlQuery = (params: ExtractRuleEqlQueryParams): RuleEqlQuery => { return { - query: params.query, + query: params.query.trim(), language: params.language, filters: params.filters ?? [], event_category_override: params.eventCategoryOverride, @@ -77,7 +77,7 @@ export const extractRuleEsqlQuery = ( language: EsqlQueryLanguage ): RuleEsqlQuery => { return { - query, + query: query.trim(), language, }; }; diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_source.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_source.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_source.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_source.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_name_override_object.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_name_override_object.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_name_override_object.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_name_override_object.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_schedule.test.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_schedule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_schedule.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_schedule.test.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_schedule.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_schedule.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_schedule.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_schedule.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_threat_array.test.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_threat_array.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_threat_array.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_threat_array.test.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_threat_array.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_threat_array.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_threat_array.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_threat_array.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_timeline_template_reference.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_timeline_template_reference.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_timeline_template_reference.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_timeline_template_reference.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_timestamp_override_object.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_timestamp_override_object.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_timestamp_override_object.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_timestamp_override_object.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/rule_management/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/rule_management/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/constants.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/rule_management/execution_log.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/execution_log.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/rule_management/execution_log.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/execution_log.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.test.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.test.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/rule_management/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/rule_management/utils.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/utils.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/schemas/types/lists.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/schemas/types/lists.mock.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/schemas/types/threat.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/schemas/types/threat.mock.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/transform_actions.test.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/transform_actions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/transform_actions.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/transform_actions.test.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/transform_actions.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/transform_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/transform_actions.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/transform_actions.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/types.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/types.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/types.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/utils.test.ts diff --git a/x-pack/plugins/security_solution/common/detection_engine/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/detection_engine/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/common/detection_engine/utils.ts rename to x-pack/solutions/security/plugins/security_solution/common/detection_engine/utils.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/constants.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/base_data_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/base_data_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/base_data_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/base_data_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/common/alerts_ecs_fields.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/common/alerts_ecs_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/common/alerts_ecs_fields.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/common/alerts_ecs_fields.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/common/artifact_list_item_entry_values.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/common/artifact_list_item_entry_values.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/common/artifact_list_item_entry_values.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/common/artifact_list_item_entry_values.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_exceptions_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_exceptions_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_exceptions_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_exceptions_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_metadata_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_metadata_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_metadata_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_metadata_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_policy_response_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_policy_response_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_policy_response_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_policy_response_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_rule_alert_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_rule_alert_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_rule_alert_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/endpoint_rule_alert_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/event_filters_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/event_filters_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/event_filters_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/event_filters_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/exceptions_list_item_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/exceptions_list_item_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/exceptions_list_item_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/exceptions_list_item_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/fleet_action_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_agent_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/fleet_agent_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_agent_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/fleet_agent_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_agent_policy_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/fleet_agent_policy_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_agent_policy_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/fleet_agent_policy_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_package_policy_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/fleet_package_policy_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_package_policy_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/fleet_package_policy_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/sentinelone_data_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/sentinelone_data_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/sentinelone_data_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/sentinelone_data_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/trusted_app_generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/trusted_app_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_generators/trusted_app_generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_generators/trusted_app_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_alerts.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_alerts.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_case.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_case.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_case.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_case.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_fleet_actions.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hearbeats.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hearbeats.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hearbeats.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hearbeats.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_hosts.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_policy_response.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_policy_response.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_policy_response.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_policy_response.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_rule_alerts.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_rule_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_rule_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_endpoint_rule_alerts.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_agent.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_fleet_agent.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_agent.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_fleet_agent.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_endpoint_policy.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_fleet_endpoint_policy.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_endpoint_policy.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_fleet_endpoint_policy.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_server.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_fleet_server.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/index_fleet_server.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/index_fleet_server.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/setup_fleet_for_endpoint.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/setup_fleet_for_endpoint.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/setup_fleet_for_endpoint.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/setup_fleet_for_endpoint.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/usage_tracker.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/usage_tracker.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/usage_tracker.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/usage_tracker.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_loaders/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/data_loaders/utils.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/utils.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/errors.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/errors.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/errors.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/format_axios_error.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/format_axios_error.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/format_axios_error.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/format_axios_error.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/generate_data.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/generate_data.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/generate_data.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/generate_data.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/generate_data.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/generate_data.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/generate_data.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/generate_data.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/index_data.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/index_data.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/index_data.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/index_data.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/models/ecs_safety_helpers.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/models/ecs_safety_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/models/ecs_safety_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/models/ecs_safety_helpers.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/models/event.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/models/event.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/models/event.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/models/event.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/models/event.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/models/event.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/models/event.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/models/event.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/models/node.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/models/node.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/models/node.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/models/node.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/models/policy_config.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/models/policy_config.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/models/policy_config_helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/models/policy_config_helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/models/policy_config_helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/models/policy_config_helpers.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/models/policy_config_helpers.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/models/policy_config_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/models/policy_config_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/models/policy_config_helpers.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/actions.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/actions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/schema/actions.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/actions.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/automated_actions.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/automated_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/schema/automated_actions.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/automated_actions.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/common.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/common.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/schema/common.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/common.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/manifest.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/manifest.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/schema/manifest.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/manifest.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/metadata.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/metadata.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/schema/metadata.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/metadata.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/resolver.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/resolver.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/schema/resolver.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/resolver.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/trusted_apps.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/trusted_apps.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/schema/trusted_apps.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/trusted_apps.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/trusted_apps.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/trusted_apps.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/schema/trusted_apps.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/schema/trusted_apps.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/artifacts/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/artifacts/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/constants.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/artifacts/index.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/artifacts/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/index.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/artifacts/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/artifacts/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/artifacts/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/artifacts/utils.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/artifacts/validations.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/validations.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/artifacts/validations.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/validations.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/authz/authz.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/authz/authz.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/authz/authz.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/authz/authz.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/authz/authz.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/authz/authz.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/authz/authz.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/authz/authz.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/authz/index.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/authz/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/authz/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/authz/index.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/authz/mocks.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/authz/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/authz/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/authz/mocks.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/policy/get_policy_data_for_update.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/policy/get_policy_data_for_update.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/policy/get_policy_data_for_update.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/policy/get_policy_data_for_update.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/policy/index.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/policy/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/policy/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/policy/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/constants.ts new file mode 100644 index 0000000000000..b6970222d0d55 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/constants.ts @@ -0,0 +1,213 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { EndpointAuthzKeyList } from '../../types/authz'; + +export const RESPONSE_ACTION_STATUS = ['failed', 'pending', 'successful'] as const; +export type ResponseActionStatus = (typeof RESPONSE_ACTION_STATUS)[number]; + +export const RESPONSE_ACTION_TYPE = ['automated', 'manual'] as const; +export type ResponseActionType = (typeof RESPONSE_ACTION_TYPE)[number]; + +export const RESPONSE_ACTION_AGENT_TYPE = ['endpoint', 'sentinel_one', 'crowdstrike'] as const; +export type ResponseActionAgentType = (typeof RESPONSE_ACTION_AGENT_TYPE)[number]; + +/** + * The Command names that are used in the API payload for the `{ command: '' }` attribute + */ +export const RESPONSE_ACTION_API_COMMANDS_NAMES = [ + 'isolate', + 'unisolate', + 'kill-process', + 'suspend-process', + 'running-processes', + 'get-file', + 'execute', + 'upload', + 'scan', + 'runscript', +] as const; + +export type ResponseActionsApiCommandNames = (typeof RESPONSE_ACTION_API_COMMANDS_NAMES)[number]; + +export const ENABLED_AUTOMATED_RESPONSE_ACTION_COMMANDS: ResponseActionsApiCommandNames[] = [ + 'isolate', + // TODO: TC- Uncomment these when we go GA with automated process actions + // 'kill-process', + // 'suspend-process' +]; + +export type EnabledAutomatedResponseActionsCommands = + (typeof ENABLED_AUTOMATED_RESPONSE_ACTION_COMMANDS)[number]; + +/** + * The list of possible capabilities, reported by the endpoint in the metadata document + */ +export const ENDPOINT_CAPABILITIES = [ + 'isolation', + 'kill_process', + 'suspend_process', + 'running_processes', + 'get_file', + 'execute', + 'upload_file', + 'scan', + 'runscript', +] as const; + +export type EndpointCapabilities = (typeof ENDPOINT_CAPABILITIES)[number]; + +/** + * The list of possible console command names that generate a Response Action to be dispatched + * to the Endpoint. (FYI: not all console commands are response actions) + */ +export const CONSOLE_RESPONSE_ACTION_COMMANDS = [ + 'isolate', + 'release', + 'processes', + 'kill-process', + 'suspend-process', + 'get-file', + 'execute', + 'upload', + 'scan', + 'runscript', +] as const; + +export type ConsoleResponseActionCommands = (typeof CONSOLE_RESPONSE_ACTION_COMMANDS)[number]; + +export type ResponseConsoleRbacControls = + | 'writeHostIsolation' + | 'writeHostIsolationRelease' + | 'writeProcessOperations' + | 'writeFileOperations' + | 'writeExecuteOperations' + | 'writeScanOperations'; + +/** + * maps the console command to the RBAC control (kibana feature control) that is required to access it via console + */ +export const RESPONSE_CONSOLE_ACTION_COMMANDS_TO_RBAC_FEATURE_CONTROL: Record< + ConsoleResponseActionCommands, + ResponseConsoleRbacControls +> = Object.freeze({ + isolate: 'writeHostIsolation', + release: 'writeHostIsolationRelease', + 'kill-process': 'writeProcessOperations', + 'suspend-process': 'writeProcessOperations', + processes: 'writeProcessOperations', + 'get-file': 'writeFileOperations', + execute: 'writeExecuteOperations', + upload: 'writeFileOperations', + scan: 'writeScanOperations', + runscript: 'writeExecuteOperations', +}); + +export const RESPONSE_ACTION_API_COMMAND_TO_CONSOLE_COMMAND_MAP = Object.freeze< + Record +>({ + isolate: 'isolate', + unisolate: 'release', + execute: 'execute', + 'get-file': 'get-file', + 'running-processes': 'processes', + 'kill-process': 'kill-process', + 'suspend-process': 'suspend-process', + upload: 'upload', + scan: 'scan', + runscript: 'runscript', +}); + +export const RESPONSE_CONSOLE_COMMAND_TO_API_COMMAND_MAP = Object.freeze< + Record +>({ + isolate: 'isolate', + release: 'unisolate', + execute: 'execute', + 'get-file': 'get-file', + processes: 'running-processes', + 'kill-process': 'kill-process', + 'suspend-process': 'suspend-process', + upload: 'upload', + scan: 'scan', + runscript: 'runscript', +}); + +export const RESPONSE_CONSOLE_ACTION_COMMANDS_TO_ENDPOINT_CAPABILITY = Object.freeze< + Record +>({ + isolate: 'isolation', + release: 'isolation', + execute: 'execute', + 'get-file': 'get_file', + processes: 'running_processes', + 'kill-process': 'kill_process', + 'suspend-process': 'suspend_process', + upload: 'upload_file', + scan: 'scan', + runscript: 'runscript', +}); + +/** + * The list of console commands mapped to the required EndpointAuthz to access that command + */ +export const RESPONSE_CONSOLE_ACTION_COMMANDS_TO_REQUIRED_AUTHZ = Object.freeze< + Record +>({ + isolate: 'canIsolateHost', + release: 'canUnIsolateHost', + execute: 'canWriteExecuteOperations', + 'get-file': 'canWriteFileOperations', + upload: 'canWriteFileOperations', + processes: 'canGetRunningProcesses', + 'kill-process': 'canKillProcess', + 'suspend-process': 'canSuspendProcess', + scan: 'canWriteScanOperations', + runscript: 'canWriteExecuteOperations', +}); + +// 4 hrs in seconds +// 4 * 60 * 60 +export const DEFAULT_EXECUTE_ACTION_TIMEOUT = 14400; + +/** + * The passcodes used for accessing the content of a zip file (ex. from a `get-file` response action) + */ +export const RESPONSE_ACTIONS_ZIP_PASSCODE: Readonly> = + Object.freeze({ + endpoint: 'elastic', + sentinel_one: 'Elastic@123', + crowdstrike: 'tbd..', + }); + +/** + * Map of Agent Type to alert fields that holds the Agent ID for that agent type. + * Multiple alert fields are supported since different data sources define the agent + * id in different paths. + * + * NOTE: there are utilities in `x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils` + * that facilitate working with alert (ECS) fields to determine if the give event/alert supports + * response actions, including: + * - `getAgentTypeForAgentIdField()` + * - `getEventDetailsAgentIdField()` + * - `isResponseActionsAlertAgentIdField()` + */ +export const RESPONSE_ACTIONS_ALERT_AGENT_ID_FIELDS: Readonly< + Record +> = Object.freeze({ + endpoint: ['agent.id'], + sentinel_one: [ + 'sentinel_one.alert.agent.id', + 'sentinel_one.threat.agent.id', + 'sentinel_one.activity.agent.id', + 'sentinel_one.agent.agent.id', + ], + crowdstrike: ['device.id'], +}); + +export const SUPPORTED_AGENT_ID_ALERT_FIELDS: Readonly = Object.values( + RESPONSE_ACTIONS_ALERT_AGENT_ID_FIELDS +).flat(); diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/get_file_download_id.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/get_file_download_id.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/response_actions/get_file_download_id.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/get_file_download_id.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/get_file_download_id.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/get_file_download_id.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/response_actions/get_file_download_id.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/get_file_download_id.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/is_response_action_supported.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/is_response_action_supported.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/response_actions/is_response_action_supported.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/is_response_action_supported.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/mocks/agent_status.mocks.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/mocks/agent_status.mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/response_actions/mocks/agent_status.mocks.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/mocks/agent_status.mocks.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/type_guards.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/type_guards.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/response_actions/type_guards.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/type_guards.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/response_actions/utils.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/response_actions/utils.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/service/trusted_apps/mapping.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/trusted_apps/mapping.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/service/trusted_apps/mapping.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/service/trusted_apps/mapping.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/actions.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/actions.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/actions.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/agents.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/agents.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/agents.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/agents.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/authz.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/authz.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/authz.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/authz.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/crowdstrike.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/crowdstrike.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/crowdstrike.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/crowdstrike.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/exception_list_items.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/exception_list_items.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/exception_list_items.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/exception_list_items.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/generator.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/generator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/generator.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/heartbeat.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/heartbeat.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/heartbeat.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/heartbeat.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/index.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/index.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/os.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/os.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/os.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/os.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/sentinel_one.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/sentinel_one.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/sentinel_one.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/sentinel_one.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/trusted_apps.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/trusted_apps.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/trusted_apps.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/trusted_apps.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/utility_types.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/utility_types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/utility_types.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/utility_types.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/types/workflow_insights.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/types/workflow_insights.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/types/workflow_insights.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/types/workflow_insights.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/controlled_artifact_rollout.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/controlled_artifact_rollout.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/controlled_artifact_rollout.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/controlled_artifact_rollout.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/controlled_artifact_rollout.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/controlled_artifact_rollout.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/controlled_artifact_rollout.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/controlled_artifact_rollout.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/fetch_fleet_version.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/fetch_fleet_version.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/fetch_fleet_version.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/fetch_fleet_version.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/index_name_utilities.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/index_name_utilities.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/index_name_utilities.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/index_name_utilities.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/index_name_utilities.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/index_name_utilities.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/index_name_utilities.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/index_name_utilities.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/is_valid_ip.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/is_valid_ip.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/is_valid_ip.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/is_valid_ip.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/kibana_status.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/kibana_status.ts similarity index 93% rename from x-pack/plugins/security_solution/common/endpoint/utils/kibana_status.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/kibana_status.ts index f1fcac6e758c0..1f8fc7b37b0a3 100644 --- a/x-pack/plugins/security_solution/common/endpoint/utils/kibana_status.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/kibana_status.ts @@ -12,7 +12,7 @@ import { catchAxiosErrorFormatAndThrow } from '../format_axios_error'; export const fetchKibanaStatus = async (kbnClient: KbnClient): Promise => { // We DO NOT use `kbnClient.status.get()` here because the `kbnClient` passed on input could be our enhanced - // client (created by `x-pack/plugins/security_solution/scripts/endpoint/common/stack_services.ts:267`) + // client (created by `x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/stack_services.ts:267`) // which could be using an API key (which the core KbnClient does not support) return kbnClient .request({ diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/package.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/package.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/package.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/package.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/package_v2.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/package_v2.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/package_v2.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/package_v2.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/transforms.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/transforms.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/transforms.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/transforms.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/update_antivirus_registration_enabled.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/update_antivirus_registration_enabled.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/update_antivirus_registration_enabled.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/update_antivirus_registration_enabled.test.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/update_antivirus_registration_enabled.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/update_antivirus_registration_enabled.ts similarity index 100% rename from x-pack/plugins/security_solution/common/endpoint/utils/update_antivirus_registration_enabled.ts rename to x-pack/solutions/security/plugins/security_solution/common/endpoint/utils/update_antivirus_registration_enabled.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/constants.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/index.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/index.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/indices.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/indices.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/indices.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/indices.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.test.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.test.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/types.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/asset_criticality/types.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/types.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/constants.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/entity_store/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/entity_store/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/entity_store/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/entity_store/constants.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/privileges.test.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/privileges.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/privileges.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/privileges.test.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/privileges.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/privileges.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/privileges.ts diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts new file mode 100644 index 0000000000000..9d71e984021f8 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { INTERNAL_RISK_SCORE_URL, PUBLIC_RISK_SCORE_URL } from '../risk_score/constants'; +export const RISK_ENGINE_URL = `${INTERNAL_RISK_SCORE_URL}/engine` as const; +export const RISK_ENGINE_STATUS_URL = `${RISK_ENGINE_URL}/status` as const; +export const RISK_ENGINE_INIT_URL = `${RISK_ENGINE_URL}/init` as const; +export const RISK_ENGINE_ENABLE_URL = `${RISK_ENGINE_URL}/enable` as const; +export const RISK_ENGINE_DISABLE_URL = `${RISK_ENGINE_URL}/disable` as const; +export const RISK_ENGINE_PRIVILEGES_URL = `${RISK_ENGINE_URL}/privileges` as const; +export const RISK_ENGINE_SETTINGS_URL = `${RISK_ENGINE_URL}/settings` as const; + +// Public Risk Score routes +export const PUBLIC_RISK_ENGINE_URL = `${PUBLIC_RISK_SCORE_URL}/engine` as const; +export const RISK_ENGINE_SCHEDULE_NOW_URL = `${RISK_ENGINE_URL}/schedule_now` as const; +export const RISK_ENGINE_CLEANUP_URL = `${PUBLIC_RISK_ENGINE_URL}/dangerously_delete_data` as const; +export const RISK_ENGINE_CONFIGURE_SO_URL = + `${PUBLIC_RISK_ENGINE_URL}/saved_object/configure` as const; + +type ClusterPrivilege = 'manage_index_templates' | 'manage_transform'; +export const RISK_ENGINE_REQUIRED_ES_CLUSTER_PRIVILEGES = [ + 'manage_index_templates', + 'manage_transform', +] as ClusterPrivilege[]; + +export const RISK_SCORE_INDEX_PATTERN = 'risk-score.risk-score-*'; + +export type RiskEngineIndexPrivilege = 'read' | 'write'; + +export const RISK_ENGINE_REQUIRED_ES_INDEX_PRIVILEGES = Object.freeze({ + [RISK_SCORE_INDEX_PATTERN]: ['read', 'write'] as RiskEngineIndexPrivilege[], +}); diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/identifier_types.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/identifier_types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/identifier_types.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/identifier_types.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/index.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/index.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/indices.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/indices.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/indices.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/indices.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/privileges.test.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/privileges.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/privileges.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/privileges.test.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/privileges.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/privileges.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/privileges.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/range.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/range.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/range.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/range.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_levels.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/risk_levels.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_levels.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/risk_levels.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_weights/index.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/risk_weights/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_weights/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/risk_weights/index.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_weights/types.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/risk_weights/types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_weights/types.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/risk_weights/types.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/types.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/types.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/types.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_engine/utils.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/utils.ts diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_score/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_score/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/entity_analytics/risk_score/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_score/constants.ts diff --git a/x-pack/plugins/security_solution/common/experimental_features.ts b/x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts similarity index 100% rename from x-pack/plugins/security_solution/common/experimental_features.ts rename to x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/8.0.0/alerts.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.0.0/alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/8.0.0/alerts.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/8.0.0/alerts.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/8.0.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.0.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/8.0.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/8.0.0/index.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/8.0.0/rules.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.0.0/rules.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/8.0.0/rules.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/8.0.0/rules.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/8.13.0/alerts.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.13.0/alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/8.13.0/alerts.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/8.13.0/alerts.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/8.13.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.13.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/8.13.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/8.13.0/index.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/8.16.0/alerts.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.16.0/alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/8.16.0/alerts.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/8.16.0/alerts.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/8.16.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.16.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/8.16.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/8.16.0/index.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/8.4.0/alerts.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.4.0/alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/8.4.0/alerts.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/8.4.0/alerts.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/8.4.0/index.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/8.4.0/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/8.4.0/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/8.4.0/index.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/field_names.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/field_names.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/field_names.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/field_names.ts diff --git a/x-pack/plugins/security_solution/common/field_maps/index.ts b/x-pack/solutions/security/plugins/security_solution/common/field_maps/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/field_maps/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/field_maps/index.ts diff --git a/x-pack/plugins/security_solution/common/guided_onboarding/siem_guide_config.test.ts b/x-pack/solutions/security/plugins/security_solution/common/guided_onboarding/siem_guide_config.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/guided_onboarding/siem_guide_config.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/guided_onboarding/siem_guide_config.test.ts diff --git a/x-pack/plugins/security_solution/common/guided_onboarding/siem_guide_config.ts b/x-pack/solutions/security/plugins/security_solution/common/guided_onboarding/siem_guide_config.ts similarity index 100% rename from x-pack/plugins/security_solution/common/guided_onboarding/siem_guide_config.ts rename to x-pack/solutions/security/plugins/security_solution/common/guided_onboarding/siem_guide_config.ts diff --git a/x-pack/plugins/security_solution/common/guided_onboarding/translations.ts b/x-pack/solutions/security/plugins/security_solution/common/guided_onboarding/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/common/guided_onboarding/translations.ts rename to x-pack/solutions/security/plugins/security_solution/common/guided_onboarding/translations.ts diff --git a/x-pack/plugins/security_solution/common/index.ts b/x-pack/solutions/security/plugins/security_solution/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/common/jest.config.js b/x-pack/solutions/security/plugins/security_solution/common/jest.config.js new file mode 100644 index 0000000000000..e5cfc70c6dde6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/common'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/common', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/common/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/common/license/index.ts b/x-pack/solutions/security/plugins/security_solution/common/license/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/license/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/license/index.ts diff --git a/x-pack/plugins/security_solution/common/license/license.ts b/x-pack/solutions/security/plugins/security_solution/common/license/license.ts similarity index 100% rename from x-pack/plugins/security_solution/common/license/license.ts rename to x-pack/solutions/security/plugins/security_solution/common/license/license.ts diff --git a/x-pack/plugins/security_solution/common/license/mocks.ts b/x-pack/solutions/security/plugins/security_solution/common/license/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/common/license/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/common/license/mocks.ts diff --git a/x-pack/plugins/security_solution/common/license/policy_config.test.ts b/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/license/policy_config.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/license/policy_config.test.ts diff --git a/x-pack/plugins/security_solution/common/license/policy_config.ts b/x-pack/solutions/security/plugins/security_solution/common/license/policy_config.ts similarity index 100% rename from x-pack/plugins/security_solution/common/license/policy_config.ts rename to x-pack/solutions/security/plugins/security_solution/common/license/policy_config.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/affected_job_ids.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/affected_job_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/affected_job_ids.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/affected_job_ids.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/empty_ml_capabilities.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/empty_ml_capabilities.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/empty_ml_capabilities.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/empty_ml_capabilities.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/has_ml_admin_permissions.test.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_admin_permissions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/has_ml_admin_permissions.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_admin_permissions.test.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/has_ml_admin_permissions.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_admin_permissions.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/has_ml_admin_permissions.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_admin_permissions.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/has_ml_license.test.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_license.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/has_ml_license.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_license.test.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/has_ml_license.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_license.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/has_ml_license.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_license.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/has_ml_user_permissions.test.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_user_permissions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/has_ml_user_permissions.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_user_permissions.test.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/has_ml_user_permissions.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_user_permissions.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/has_ml_user_permissions.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/has_ml_user_permissions.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/helpers.test.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/helpers.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/helpers.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/is_security_job.test.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/is_security_job.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/is_security_job.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/is_security_job.test.ts diff --git a/x-pack/plugins/security_solution/common/machine_learning/is_security_job.ts b/x-pack/solutions/security/plugins/security_solution/common/machine_learning/is_security_job.ts similarity index 100% rename from x-pack/plugins/security_solution/common/machine_learning/is_security_job.ts rename to x-pack/solutions/security/plugins/security_solution/common/machine_learning/is_security_job.ts diff --git a/x-pack/plugins/security_solution/common/notes/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/notes/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/common/notes/constants.ts rename to x-pack/solutions/security/plugins/security_solution/common/notes/constants.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/common/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/common/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/common/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/endpoint/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/endpoint/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/action.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/response_actions/action.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/action.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/response_actions/action.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/response_actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/response_actions/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/response.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/response_actions/response.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/response.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/response_actions/response.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/types.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/response_actions/types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/endpoint/response_actions/types.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/endpoint/response_actions/types.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/eql/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/eql/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/eql/validation/helpers.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/validation/helpers.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/eql/validation/helpers.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/validation/helpers.mock.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/eql/validation/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/validation/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/eql/validation/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/validation/helpers.test.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/eql/validation/helpers.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/validation/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/eql/validation/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/validation/helpers.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/eql/validation/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/validation/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/eql/validation/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/eql/validation/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/index_fields/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/cti/index.mock.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/cti/index.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/cti/index.mock.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/cti/index.mock.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/cti/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/cti/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/cti/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/cti/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/first_last_seen/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/first_last_seen/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/first_last_seen/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/first_last_seen/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/all/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/all/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/all/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/all/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/common/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/common/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/common/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/details/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/details/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/details/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/overview/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/overview/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/overview/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/overview/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/uncommon_processes/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/uncommon_processes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/uncommon_processes/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/hosts/uncommon_processes/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/common/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/common/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/common/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/details/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/details/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/details/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/dns/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/dns/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/dns/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/dns/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/http/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/http/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/http/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/http/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/overview/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/overview/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/overview/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/overview/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/tls/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/tls/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/tls/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/tls/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/top_countries/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/top_countries/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/top_countries/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/top_countries/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/top_n_flow/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/top_n_flow/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/top_n_flow/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/top_n_flow/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/network/users/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/users/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/network/users/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/network/users/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/related_entities/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/related_entities/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/related_entities/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/related_entities/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/related_entities/related_hosts/index.tsx b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/related_entities/related_hosts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/related_entities/related_hosts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/related_entities/related_hosts/index.tsx diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/related_entities/related_users/index.tsx b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/related_entities/related_users/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/related_entities/related_users/index.tsx rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/related_entities/related_users/index.tsx diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/common/index.test.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/common/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/common/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/common/index.test.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/common/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/common/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/common/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/kpi/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/kpi/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/kpi/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/kpi/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/users/all/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/all/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/users/all/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/all/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/users/authentications/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/authentications/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/users/authentications/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/authentications/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/users/common/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/users/common/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/common/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/users/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/users/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/users/managed_details/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/managed_details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/users/managed_details/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/managed_details/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/users/observed_details/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/observed_details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/security_solution/users/observed_details/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/users/observed_details/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/timeline/events/all/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/all/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/timeline/events/all/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/all/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/timeline/events/common/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/timeline/events/common/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/common/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/timeline/events/details/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/timeline/events/details/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/details/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/timeline/events/eql/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/eql/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/timeline/events/eql/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/eql/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/timeline/events/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/timeline/events/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/timeline/events/last_event_time/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/last_event_time/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/timeline/events/last_event_time/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/events/last_event_time/index.ts diff --git a/x-pack/plugins/security_solution/common/search_strategy/timeline/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/search_strategy/timeline/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline/index.ts diff --git a/x-pack/plugins/security_solution/common/security_integrations/cribl/translator.test.ts b/x-pack/solutions/security/plugins/security_solution/common/security_integrations/cribl/translator.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/security_integrations/cribl/translator.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/security_integrations/cribl/translator.test.ts diff --git a/x-pack/plugins/security_solution/common/security_integrations/cribl/translator.ts b/x-pack/solutions/security/plugins/security_solution/common/security_integrations/cribl/translator.ts similarity index 100% rename from x-pack/plugins/security_solution/common/security_integrations/cribl/translator.ts rename to x-pack/solutions/security/plugins/security_solution/common/security_integrations/cribl/translator.ts diff --git a/x-pack/plugins/security_solution/common/security_integrations/cribl/types.ts b/x-pack/solutions/security/plugins/security_solution/common/security_integrations/cribl/types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/security_integrations/cribl/types.ts rename to x-pack/solutions/security/plugins/security_solution/common/security_integrations/cribl/types.ts diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/constants.ts new file mode 100644 index 0000000000000..531669608ed8b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/constants.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Severity } from '@kbn/securitysolution-io-ts-alerting-types'; + +export const SIEM_MIGRATIONS_PATH = '/internal/siem_migrations' as const; +export const SIEM_RULE_MIGRATIONS_PATH = `${SIEM_MIGRATIONS_PATH}/rules` as const; + +export const SIEM_RULE_MIGRATIONS_ALL_STATS_PATH = `${SIEM_RULE_MIGRATIONS_PATH}/stats` as const; +export const SIEM_RULE_MIGRATION_CREATE_PATH = + `${SIEM_RULE_MIGRATIONS_PATH}/{migration_id?}` as const; +export const SIEM_RULE_MIGRATION_PATH = `${SIEM_RULE_MIGRATIONS_PATH}/{migration_id}` as const; +export const SIEM_RULE_MIGRATION_START_PATH = `${SIEM_RULE_MIGRATION_PATH}/start` as const; +export const SIEM_RULE_MIGRATION_RETRY_PATH = `${SIEM_RULE_MIGRATION_PATH}/retry` as const; +export const SIEM_RULE_MIGRATION_STATS_PATH = `${SIEM_RULE_MIGRATION_PATH}/stats` as const; +export const SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH = + `${SIEM_RULE_MIGRATION_PATH}/translation_stats` as const; +export const SIEM_RULE_MIGRATION_STOP_PATH = `${SIEM_RULE_MIGRATION_PATH}/stop` as const; +export const SIEM_RULE_MIGRATION_INSTALL_PATH = `${SIEM_RULE_MIGRATION_PATH}/install` as const; +export const SIEM_RULE_MIGRATION_INSTALL_TRANSLATED_PATH = + `${SIEM_RULE_MIGRATION_PATH}/install_translated` as const; +export const SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH = + `${SIEM_RULE_MIGRATION_PATH}/prebuilt_rules` as const; + +export const SIEM_RULE_MIGRATION_RESOURCES_PATH = `${SIEM_RULE_MIGRATION_PATH}/resources` as const; +export const SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH = + `${SIEM_RULE_MIGRATION_RESOURCES_PATH}/missing` as const; + +export enum SiemMigrationTaskStatus { + READY = 'ready', + RUNNING = 'running', + STOPPED = 'stopped', + FINISHED = 'finished', +} + +export enum SiemMigrationStatus { + PENDING = 'pending', + PROCESSING = 'processing', + COMPLETED = 'completed', + FAILED = 'failed', +} + +export enum SiemMigrationRuleTranslationResult { + FULL = 'full', + PARTIAL = 'partial', + UNTRANSLATABLE = 'untranslatable', +} + +export const DEFAULT_TRANSLATION_RISK_SCORE = 21; +export const DEFAULT_TRANSLATION_SEVERITY: Severity = 'low'; + +export const DEFAULT_TRANSLATION_FIELDS = { + risk_score: DEFAULT_TRANSLATION_RISK_SCORE, + severity: DEFAULT_TRANSLATION_SEVERITY, + from: 'now-360s', + to: 'now', + interval: '5m', +} as const; diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts new file mode 100644 index 0000000000000..47c06e1e02c7a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts @@ -0,0 +1,290 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: SIEM Rules Migration API + * version: 1 + */ + +import { z } from '@kbn/zod'; +import { ArrayFromString } from '@kbn/zod-helpers'; + +import { + UpdateRuleMigrationData, + RuleMigrationTaskStats, + OriginalRule, + RuleMigration, + RuleMigrationTranslationStats, + PrebuiltRuleVersion, + RuleMigrationResourceData, + RuleMigrationResourceType, + RuleMigrationResource, +} from '../../rule_migration.gen'; +import { NonEmptyString } from '../../../../api/model/primitives.gen'; +import { ConnectorId, LangSmithOptions } from '../../common.gen'; + +export type CreateRuleMigrationRequestParams = z.infer; +export const CreateRuleMigrationRequestParams = z.object({ + migration_id: NonEmptyString.optional(), +}); +export type CreateRuleMigrationRequestParamsInput = z.input< + typeof CreateRuleMigrationRequestParams +>; + +export type CreateRuleMigrationRequestBody = z.infer; +export const CreateRuleMigrationRequestBody = z.array(OriginalRule); +export type CreateRuleMigrationRequestBodyInput = z.input; + +export type CreateRuleMigrationResponse = z.infer; +export const CreateRuleMigrationResponse = z.object({ + /** + * The migration id created. + */ + migration_id: NonEmptyString, +}); + +export type GetAllStatsRuleMigrationResponse = z.infer; +export const GetAllStatsRuleMigrationResponse = z.array(RuleMigrationTaskStats); +export type GetRuleMigrationRequestQuery = z.infer; +export const GetRuleMigrationRequestQuery = z.object({ + page: z.coerce.number().optional(), + per_page: z.coerce.number().optional(), + sort_field: NonEmptyString.optional(), + sort_direction: z.enum(['asc', 'desc']).optional(), + search_term: z.string().optional(), + ids: ArrayFromString(NonEmptyString).optional(), +}); +export type GetRuleMigrationRequestQueryInput = z.input; + +export type GetRuleMigrationRequestParams = z.infer; +export const GetRuleMigrationRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type GetRuleMigrationRequestParamsInput = z.input; + +export type GetRuleMigrationResponse = z.infer; +export const GetRuleMigrationResponse = z.object({ + /** + * The total number of rules in migration. + */ + total: z.number(), + data: z.array(RuleMigration), +}); + +export type GetRuleMigrationPrebuiltRulesRequestParams = z.infer< + typeof GetRuleMigrationPrebuiltRulesRequestParams +>; +export const GetRuleMigrationPrebuiltRulesRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type GetRuleMigrationPrebuiltRulesRequestParamsInput = z.input< + typeof GetRuleMigrationPrebuiltRulesRequestParams +>; + +/** + * The map of prebuilt rules, with the rules id as a key + */ +export type GetRuleMigrationPrebuiltRulesResponse = z.infer< + typeof GetRuleMigrationPrebuiltRulesResponse +>; +export const GetRuleMigrationPrebuiltRulesResponse = z.object({}).catchall(PrebuiltRuleVersion); +export type GetRuleMigrationResourcesRequestQuery = z.infer< + typeof GetRuleMigrationResourcesRequestQuery +>; +export const GetRuleMigrationResourcesRequestQuery = z.object({ + type: RuleMigrationResourceType.optional(), + names: ArrayFromString(z.string()).optional(), + from: z.coerce.number().optional(), + size: z.coerce.number().optional(), +}); +export type GetRuleMigrationResourcesRequestQueryInput = z.input< + typeof GetRuleMigrationResourcesRequestQuery +>; + +export type GetRuleMigrationResourcesRequestParams = z.infer< + typeof GetRuleMigrationResourcesRequestParams +>; +export const GetRuleMigrationResourcesRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type GetRuleMigrationResourcesRequestParamsInput = z.input< + typeof GetRuleMigrationResourcesRequestParams +>; + +export type GetRuleMigrationResourcesResponse = z.infer; +export const GetRuleMigrationResourcesResponse = z.array(RuleMigrationResource); + +export type GetRuleMigrationResourcesMissingRequestParams = z.infer< + typeof GetRuleMigrationResourcesMissingRequestParams +>; +export const GetRuleMigrationResourcesMissingRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type GetRuleMigrationResourcesMissingRequestParamsInput = z.input< + typeof GetRuleMigrationResourcesMissingRequestParams +>; + +/** + * The identified resources missing + */ +export type GetRuleMigrationResourcesMissingResponse = z.infer< + typeof GetRuleMigrationResourcesMissingResponse +>; +export const GetRuleMigrationResourcesMissingResponse = z.array(RuleMigrationResourceData); + +export type GetRuleMigrationStatsRequestParams = z.infer; +export const GetRuleMigrationStatsRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type GetRuleMigrationStatsRequestParamsInput = z.input< + typeof GetRuleMigrationStatsRequestParams +>; + +export type GetRuleMigrationStatsResponse = z.infer; +export const GetRuleMigrationStatsResponse = RuleMigrationTaskStats; + +export type GetRuleMigrationTranslationStatsRequestParams = z.infer< + typeof GetRuleMigrationTranslationStatsRequestParams +>; +export const GetRuleMigrationTranslationStatsRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type GetRuleMigrationTranslationStatsRequestParamsInput = z.input< + typeof GetRuleMigrationTranslationStatsRequestParams +>; + +export type GetRuleMigrationTranslationStatsResponse = z.infer< + typeof GetRuleMigrationTranslationStatsResponse +>; +export const GetRuleMigrationTranslationStatsResponse = RuleMigrationTranslationStats; + +export type InstallMigrationRulesRequestParams = z.infer; +export const InstallMigrationRulesRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type InstallMigrationRulesRequestParamsInput = z.input< + typeof InstallMigrationRulesRequestParams +>; + +export type InstallMigrationRulesRequestBody = z.infer; +export const InstallMigrationRulesRequestBody = z.object({ + ids: z.array(NonEmptyString), + /** + * Indicates whether installed rules should be enabled + */ + enabled: z.boolean().optional(), +}); +export type InstallMigrationRulesRequestBodyInput = z.input< + typeof InstallMigrationRulesRequestBody +>; + +export type InstallMigrationRulesResponse = z.infer; +export const InstallMigrationRulesResponse = z.object({ + /** + * Indicates rules migrations have been installed. + */ + installed: z.boolean(), +}); + +export type InstallTranslatedMigrationRulesRequestParams = z.infer< + typeof InstallTranslatedMigrationRulesRequestParams +>; +export const InstallTranslatedMigrationRulesRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type InstallTranslatedMigrationRulesRequestParamsInput = z.input< + typeof InstallTranslatedMigrationRulesRequestParams +>; + +export type InstallTranslatedMigrationRulesResponse = z.infer< + typeof InstallTranslatedMigrationRulesResponse +>; +export const InstallTranslatedMigrationRulesResponse = z.object({ + /** + * Indicates rules migrations have been installed. + */ + installed: z.boolean(), +}); + +export type StartRuleMigrationRequestParams = z.infer; +export const StartRuleMigrationRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type StartRuleMigrationRequestParamsInput = z.input; + +export type StartRuleMigrationRequestBody = z.infer; +export const StartRuleMigrationRequestBody = z.object({ + connector_id: ConnectorId, + langsmith_options: LangSmithOptions.optional(), +}); +export type StartRuleMigrationRequestBodyInput = z.input; + +export type StartRuleMigrationResponse = z.infer; +export const StartRuleMigrationResponse = z.object({ + /** + * Indicates the migration has been started. `false` means the migration does not need to be started. + */ + started: z.boolean(), +}); + +export type StopRuleMigrationRequestParams = z.infer; +export const StopRuleMigrationRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type StopRuleMigrationRequestParamsInput = z.input; + +export type StopRuleMigrationResponse = z.infer; +export const StopRuleMigrationResponse = z.object({ + /** + * Indicates the migration has been stopped. + */ + stopped: z.boolean(), +}); + +export type UpdateRuleMigrationRequestBody = z.infer; +export const UpdateRuleMigrationRequestBody = z.array(UpdateRuleMigrationData); +export type UpdateRuleMigrationRequestBodyInput = z.input; + +export type UpdateRuleMigrationResponse = z.infer; +export const UpdateRuleMigrationResponse = z.object({ + /** + * Indicates rules migrations have been updated. + */ + updated: z.boolean(), +}); + +export type UpsertRuleMigrationResourcesRequestParams = z.infer< + typeof UpsertRuleMigrationResourcesRequestParams +>; +export const UpsertRuleMigrationResourcesRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type UpsertRuleMigrationResourcesRequestParamsInput = z.input< + typeof UpsertRuleMigrationResourcesRequestParams +>; + +export type UpsertRuleMigrationResourcesRequestBody = z.infer< + typeof UpsertRuleMigrationResourcesRequestBody +>; +export const UpsertRuleMigrationResourcesRequestBody = z.array(RuleMigrationResourceData); +export type UpsertRuleMigrationResourcesRequestBodyInput = z.input< + typeof UpsertRuleMigrationResourcesRequestBody +>; + +export type UpsertRuleMigrationResourcesResponse = z.infer< + typeof UpsertRuleMigrationResourcesResponse +>; +export const UpsertRuleMigrationResourcesResponse = z.object({ + /** + * The request has been processed correctly. + */ + acknowledged: z.boolean(), +}); diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml new file mode 100644 index 0000000000000..69e43b57dabd3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml @@ -0,0 +1,515 @@ +openapi: 3.0.3 +info: + title: SIEM Rules Migration API + version: '1' +paths: + # Rule migrations APIs + /internal/siem_migrations/rules: + put: + summary: Updates rules migrations + operationId: UpdateRuleMigration + x-codegen-enabled: true + x-internal: true + description: Updates rules migrations attributes + tags: + - SIEM Rule Migrations + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '../../rule_migration.schema.yaml#/components/schemas/UpdateRuleMigrationData' + responses: + 200: + description: Indicates rules migrations have been updated correctly. + content: + application/json: + schema: + type: object + required: + - updated + properties: + updated: + type: boolean + description: Indicates rules migrations have been updated. + + /internal/siem_migrations/rules/stats: + get: + summary: Retrieves the stats for all rule migrations + operationId: GetAllStatsRuleMigration + x-codegen-enabled: true + x-internal: true + description: Retrieves the rule migrations stats for all migrations stored in the system + tags: + - SIEM Rule Migrations + responses: + 200: + description: Indicates rule migrations have been retrieved correctly. + content: + application/json: + schema: + type: array + items: + $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationTaskStats' + + ## Specific rule migration APIs + + /internal/siem_migrations/rules/{migration_id}: + post: + summary: Creates a new rule migration + operationId: CreateRuleMigration + x-codegen-enabled: true + x-internal: true + description: Creates a new SIEM rules migration using the original vendor rules provided + tags: + - SIEM Rule Migrations + parameters: + - name: migration_id + in: path + required: false + schema: + description: The migration id to create rules for + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '../../rule_migration.schema.yaml#/components/schemas/OriginalRule' + responses: + 200: + description: Indicates migration have been created correctly. + content: + application/json: + schema: + type: object + required: + - migration_id + properties: + migration_id: + description: The migration id created. + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + get: + summary: Retrieves all the rules of a migration + operationId: GetRuleMigration + x-codegen-enabled: true + x-internal: true + description: Retrieves the rule documents stored in the system given the rule migration id + tags: + - SIEM Rule Migrations + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to start + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + - name: page + in: query + required: false + schema: + type: number + - name: per_page + in: query + required: false + schema: + type: number + - name: sort_field + in: query + required: false + schema: + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + - name: sort_direction + in: query + required: false + schema: + type: string + enum: + - asc + - desc + - name: search_term + in: query + required: false + schema: + type: string + - name: ids + in: query + required: false + schema: + type: array + items: + description: The rule migration id + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + + responses: + 200: + description: Indicates rule migration have been retrieved correctly. + content: + application/json: + schema: + type: object + required: + - total + - data + properties: + total: + type: number + description: The total number of rules in migration. + data: + type: array + items: + $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigration' + 204: + description: Indicates the migration id was not found. + + /internal/siem_migrations/rules/{migration_id}/install: + post: + summary: Installs translated migration rules + operationId: InstallMigrationRules + x-codegen-enabled: true + description: Installs migration rules + tags: + - SIEM Rule Migrations + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to install rules for + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - ids + properties: + ids: + type: array + items: + description: The rule migration id + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + enabled: + type: boolean + description: Indicates whether installed rules should be enabled + responses: + 200: + description: Indicates rules migrations have been installed correctly. + content: + application/json: + schema: + type: object + required: + - installed + properties: + installed: + type: boolean + description: Indicates rules migrations have been installed. + + /internal/siem_migrations/rules/{migration_id}/install_translated: + post: + summary: Installs all translated migration rules + operationId: InstallTranslatedMigrationRules + x-codegen-enabled: true + description: Installs all translated migration rules + tags: + - SIEM Rule Migrations + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to install translated rules for + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + responses: + 200: + description: Indicates rules migrations have been installed correctly. + content: + application/json: + schema: + type: object + required: + - installed + properties: + installed: + type: boolean + description: Indicates rules migrations have been installed. + + /internal/siem_migrations/rules/{migration_id}/start: + put: + summary: Starts a rule migration + operationId: StartRuleMigration + x-codegen-enabled: true + x-internal: true + description: Starts a SIEM rules migration using the migration id provided + tags: + - SIEM Rule Migrations + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to start + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - connector_id + properties: + connector_id: + $ref: '../../common.schema.yaml#/components/schemas/ConnectorId' + langsmith_options: + $ref: '../../common.schema.yaml#/components/schemas/LangSmithOptions' + responses: + 200: + description: Indicates the migration start request has been processed successfully. + content: + application/json: + schema: + type: object + required: + - started + properties: + started: + type: boolean + description: Indicates the migration has been started. `false` means the migration does not need to be started. + 204: + description: Indicates the migration id was not found. + + /internal/siem_migrations/rules/{migration_id}/stats: + get: + summary: Gets a rule migration task stats + operationId: GetRuleMigrationStats + x-codegen-enabled: true + x-internal: true + description: Retrieves the stats of a SIEM rules migration using the migration id provided + tags: + - SIEM Rule Migrations + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to fetch stats for + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + responses: + 200: + description: Indicates the migration stats has been retrieved correctly. + content: + application/json: + schema: + $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationTaskStats' + 204: + description: Indicates the migration id was not found. + + /internal/siem_migrations/rules/{migration_id}/translation_stats: + get: + summary: Gets a rule migration translation stats + operationId: GetRuleMigrationTranslationStats + x-codegen-enabled: true + description: Retrieves the translation stats of a SIEM rules migration using the migration id provided + tags: + - SIEM Rule Migrations + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to fetch translation stats for + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + responses: + 200: + description: Indicates the migration stats has been retrieved correctly. + content: + application/json: + schema: + $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationTranslationStats' + 204: + description: Indicates the migration id was not found. + + /internal/siem_migrations/rules/{migration_id}/stop: + put: + summary: Stops an existing rule migration + operationId: StopRuleMigration + x-codegen-enabled: true + x-internal: true + description: Stops a running SIEM rules migration using the migration id provided + tags: + - SIEM Rule Migrations + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to stop + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + responses: + 200: + description: Indicates migration task stop has been processed successfully. + content: + application/json: + schema: + type: object + required: + - stopped + properties: + stopped: + type: boolean + description: Indicates the migration has been stopped. + 204: + description: Indicates the migration id was not found running. + + /internal/siem_migrations/rules/{migration_id}/prebuilt_rules: + get: + summary: Retrieves all prebuilt rules for a specific migration + operationId: GetRuleMigrationPrebuiltRules + x-codegen-enabled: true + x-internal: true + description: Retrieves all available prebuilt rules (installed and installable) + tags: + - SIEM Rule Migrations + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to retrieve prebuilt rules for + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + responses: + 200: + description: Indicates prebuilt rules have been retrieved correctly. + content: + application/json: + schema: + type: object + description: The map of prebuilt rules, with the rules id as a key + additionalProperties: + $ref: '../../rule_migration.schema.yaml#/components/schemas/PrebuiltRuleVersion' + + # Rule migration resources APIs + + /internal/siem_migrations/rules/{migration_id}/resources: + post: + summary: Creates or updates rule migration resources for a migration + operationId: UpsertRuleMigrationResources + x-codegen-enabled: true + x-internal: true + description: Creates or updates resources for an existing SIEM rules migration + tags: + - SIEM Rule Migrations + - Resources + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to attach the resources + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationResourceData' + responses: + 200: + description: Indicates migration resources have been created or updated correctly. + content: + application/json: + schema: + type: object + required: + - acknowledged + properties: + acknowledged: + type: boolean + description: The request has been processed correctly. + + get: + summary: Gets rule migration resources for a migration + operationId: GetRuleMigrationResources + x-codegen-enabled: true + x-internal: true + description: Retrieves resources for an existing SIEM rules migration + tags: + - SIEM Rule Migrations + - Resources + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to attach the resources + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + - name: type + in: query + required: false + schema: + $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationResourceType' + - name: names + in: query + required: false + schema: + type: array + description: The names of the resource to retrieve + items: + type: string + - name: from + in: query + required: false + schema: + type: number + - name: size + in: query + required: false + schema: + type: number + responses: + 200: + description: Indicates migration resources have been retrieved correctly + content: + application/json: + schema: + type: array + items: + $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationResource' + + /internal/siem_migrations/rules/{migration_id}/resources/missing: + get: + summary: Gets missing rule migration resources for a migration + operationId: GetRuleMigrationResourcesMissing + x-codegen-enabled: true + x-internal: true + description: Identifies missing resources from all the rules of an existing SIEM rules migration + tags: + - SIEM Rule Migrations + - Resources + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to attach the resources + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + responses: + 200: + description: Indicates missing migration resources have been retrieved correctly + content: + application/json: + schema: + type: array + description: The identified resources missing + items: + $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationResourceData' diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/common.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/common.gen.ts similarity index 100% rename from x-pack/plugins/security_solution/common/siem_migrations/model/common.gen.ts rename to x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/common.gen.ts diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/common.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/common.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/common/siem_migrations/model/common.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/common.schema.yaml diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts new file mode 100644 index 0000000000000..d9c33ebbdf704 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts @@ -0,0 +1,380 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: SIEM Rule Migration components + * version: not applicable + */ + +import { z } from '@kbn/zod'; + +import { NonEmptyString } from '../../api/model/primitives.gen'; +import { RuleResponse } from '../../api/detection_engine/model/rule_schema/rule_schemas.gen'; + +/** + * The original rule vendor identifier. + */ +export type OriginalRuleVendor = z.infer; +export const OriginalRuleVendor = z.literal('splunk'); + +/** + * The original rule annotations containing additional information. + */ +export type OriginalRuleAnnotations = z.infer; +export const OriginalRuleAnnotations = z + .object({ + /** + * The original rule Mitre Attack IDs. + */ + mitre_attack: z.array(z.string()).optional(), + }) + .catchall(z.unknown()); + +/** + * The original rule to migrate. + */ +export type OriginalRule = z.infer; +export const OriginalRule = z.object({ + /** + * The original rule id. + */ + id: NonEmptyString, + /** + * The original rule vendor identifier. + */ + vendor: OriginalRuleVendor, + /** + * The original rule name. + */ + title: NonEmptyString, + /** + * The original rule description. + */ + description: z.string(), + /** + * The original rule query. + */ + query: z.string().min(1), + /** + * The original rule query language. + */ + query_language: z.string(), + /** + * The original rule annotations containing additional information. + */ + annotations: OriginalRuleAnnotations.optional(), +}); + +/** + * The migrated elastic rule. + */ +export type ElasticRule = z.infer; +export const ElasticRule = z.object({ + /** + * The migrated rule title. + */ + title: z.string(), + /** + * The migrated rule description. + */ + description: z.string().optional(), + /** + * The migrated rule severity. + */ + severity: z.string().optional(), + /** + * The translated elastic query. + */ + query: z.string().optional(), + /** + * The translated elastic query language. + */ + query_language: z.literal('esql').optional(), + /** + * The Elastic prebuilt rule id matched. + */ + prebuilt_rule_id: NonEmptyString.optional(), + /** + * The Elastic integration ID found to be most relevant to the splunk rule. + */ + integration_id: z.string().optional(), + /** + * The Elastic rule id installed as a result. + */ + id: NonEmptyString.optional(), +}); + +/** + * The partial version of the migrated elastic rule. + */ +export type ElasticRulePartial = z.infer; +export const ElasticRulePartial = ElasticRule.partial(); + +/** + * The prebuilt rule version. + */ +export type PrebuiltRuleVersion = z.infer; +export const PrebuiltRuleVersion = z.object({ + /** + * The latest available version of prebuilt rule. + */ + target: RuleResponse, + /** + * The currently installed version of prebuilt rule. + */ + current: RuleResponse.optional(), +}); + +/** + * The rule translation result. + */ +export type RuleMigrationTranslationResult = z.infer; +export const RuleMigrationTranslationResult = z.enum(['full', 'partial', 'untranslatable']); +export type RuleMigrationTranslationResultEnum = typeof RuleMigrationTranslationResult.enum; +export const RuleMigrationTranslationResultEnum = RuleMigrationTranslationResult.enum; + +/** + * The status of each rule migration. + */ +export type RuleMigrationStatus = z.infer; +export const RuleMigrationStatus = z.enum(['pending', 'processing', 'completed', 'failed']); +export type RuleMigrationStatusEnum = typeof RuleMigrationStatus.enum; +export const RuleMigrationStatusEnum = RuleMigrationStatus.enum; + +/** + * The comments for the migration including a summary from the LLM in markdown. + */ +export type RuleMigrationComments = z.infer; +export const RuleMigrationComments = z.array(z.string()); + +/** + * The rule migration document object. + */ +export type RuleMigrationData = z.infer; +export const RuleMigrationData = z.object({ + /** + * The moment of creation + */ + '@timestamp': z.string(), + /** + * The migration id. + */ + migration_id: NonEmptyString, + /** + * The username of the user who created the migration. + */ + created_by: NonEmptyString, + /** + * The original rule to migrate. + */ + original_rule: OriginalRule, + /** + * The migrated elastic rule. + */ + elastic_rule: ElasticRule.optional(), + /** + * The rule translation result. + */ + translation_result: RuleMigrationTranslationResult.optional(), + /** + * The status of the rule migration process. + */ + status: RuleMigrationStatus.default('pending'), + /** + * The comments for the migration including a summary from the LLM in markdown. + */ + comments: RuleMigrationComments.optional(), + /** + * The moment of the last update + */ + updated_at: z.string().optional(), + /** + * The user who last updated the migration + */ + updated_by: z.string().optional(), +}); + +/** + * The rule migration document object. + */ +export type RuleMigration = z.infer; +export const RuleMigration = z + .object({ + /** + * The rule migration id + */ + id: NonEmptyString, + }) + .merge(RuleMigrationData); + +/** + * The status of the migration task. + */ +export type RuleMigrationTaskStatus = z.infer; +export const RuleMigrationTaskStatus = z.enum(['ready', 'running', 'stopped', 'finished']); +export type RuleMigrationTaskStatusEnum = typeof RuleMigrationTaskStatus.enum; +export const RuleMigrationTaskStatusEnum = RuleMigrationTaskStatus.enum; + +/** + * The rule migration task stats object. + */ +export type RuleMigrationTaskStats = z.infer; +export const RuleMigrationTaskStats = z.object({ + /** + * The migration id + */ + id: NonEmptyString, + /** + * Indicates if the migration task status. + */ + status: RuleMigrationTaskStatus, + /** + * The rules migration stats. + */ + rules: z.object({ + /** + * The total number of rules to migrate. + */ + total: z.number().int(), + /** + * The number of rules that are pending migration. + */ + pending: z.number().int(), + /** + * The number of rules that are being migrated. + */ + processing: z.number().int(), + /** + * The number of rules that have been migrated successfully. + */ + completed: z.number().int(), + /** + * The number of rules that have failed migration. + */ + failed: z.number().int(), + }), + /** + * The moment the migration was created. + */ + created_at: z.string(), + /** + * The moment of the last update. + */ + last_updated_at: z.string(), +}); + +/** + * The rule migration translation stats object. + */ +export type RuleMigrationTranslationStats = z.infer; +export const RuleMigrationTranslationStats = z.object({ + /** + * The migration id + */ + id: NonEmptyString, + /** + * The rules migration translation stats. + */ + rules: z.object({ + /** + * The total number of rules to migrate. + */ + total: z.number().int(), + /** + * The number of rules that matched Elastic prebuilt rules. + */ + prebuilt: z.number().int(), + /** + * The number of rules that did not match Elastic prebuilt rules and will be installed as custom rules. + */ + custom: z.number().int(), + /** + * The number of rules that can be installed. + */ + installable: z.number().int(), + }), +}); + +/** + * The rule migration data object for rule update operation + */ +export type UpdateRuleMigrationData = z.infer; +export const UpdateRuleMigrationData = z.object({ + /** + * The rule migration id + */ + id: NonEmptyString, + /** + * The migrated elastic rule attributes to update. + */ + elastic_rule: ElasticRulePartial.optional(), + /** + * The rule translation result. + */ + translation_result: RuleMigrationTranslationResult.optional(), + /** + * The comments for the migration including a summary from the LLM in markdown. + */ + comments: RuleMigrationComments.optional(), +}); + +/** + * The type of the rule migration resource. + */ +export type RuleMigrationResourceType = z.infer; +export const RuleMigrationResourceType = z.enum(['macro', 'list']); +export type RuleMigrationResourceTypeEnum = typeof RuleMigrationResourceType.enum; +export const RuleMigrationResourceTypeEnum = RuleMigrationResourceType.enum; + +/** + * The rule migration resource data provided by the vendor. + */ +export type RuleMigrationResourceData = z.infer; +export const RuleMigrationResourceData = z.object({ + type: RuleMigrationResourceType, + /** + * The resource name identifier. + */ + name: z.string(), + /** + * The resource content value. + */ + content: z.string().optional(), + /** + * The resource arbitrary metadata. + */ + metadata: z.object({}).optional(), +}); + +/** + * The rule migration resource document object. + */ +export type RuleMigrationResource = z.infer; +export const RuleMigrationResource = RuleMigrationResourceData.merge( + z.object({ + /** + * The rule resource migration id + */ + id: NonEmptyString, + /** + * The migration id + */ + migration_id: NonEmptyString, + /** + * The moment of the last update + */ + updated_at: z.string().optional(), + /** + * The user who last updated the resource + */ + updated_by: z.string().optional(), + }) +); diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml new file mode 100644 index 0000000000000..6fce9f0d51f5d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml @@ -0,0 +1,344 @@ +openapi: 3.0.3 +info: + title: SIEM Rule Migration components + version: 'not applicable' +paths: {} +components: + x-codegen-enabled: true + schemas: + OriginalRuleVendor: + type: string + description: The original rule vendor identifier. + enum: + - splunk + + OriginalRuleAnnotations: + type: object + description: The original rule annotations containing additional information. + additionalProperties: true + properties: + mitre_attack: + type: array + description: The original rule Mitre Attack IDs. + items: + type: string + + OriginalRule: + type: object + description: The original rule to migrate. + required: + - id + - vendor + - title + - description + - query + - query_language + properties: + id: + description: The original rule id. + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + vendor: + description: The original rule vendor identifier. + $ref: '#/components/schemas/OriginalRuleVendor' + title: + description: The original rule name. + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + description: + type: string + description: The original rule description. + query: + type: string + minLength: 1 + description: The original rule query. + query_language: + type: string + description: The original rule query language. + annotations: + description: The original rule annotations containing additional information. + $ref: '#/components/schemas/OriginalRuleAnnotations' + + ElasticRule: + type: object + description: The migrated elastic rule. + required: + - title + properties: + title: + type: string + description: The migrated rule title. + description: + type: string + description: The migrated rule description. + severity: + type: string + description: The migrated rule severity. + query: + type: string + description: The translated elastic query. + query_language: + type: string + description: The translated elastic query language. + enum: + - esql + prebuilt_rule_id: + description: The Elastic prebuilt rule id matched. + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + integration_id: + type: string + description: The Elastic integration ID found to be most relevant to the splunk rule. + id: + description: The Elastic rule id installed as a result. + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + + ElasticRulePartial: + description: The partial version of the migrated elastic rule. + $ref: '#/components/schemas/ElasticRule' + x-modify: partial + + PrebuiltRuleVersion: + type: object + description: The prebuilt rule version. + required: + - target + properties: + target: + description: The latest available version of prebuilt rule. + $ref: '../../../common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml#/components/schemas/RuleResponse' + current: + description: The currently installed version of prebuilt rule. + $ref: '../../../common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml#/components/schemas/RuleResponse' + + RuleMigration: + description: The rule migration document object. + allOf: + - type: object + required: + - id + properties: + id: + description: The rule migration id + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + - $ref: '#/components/schemas/RuleMigrationData' + + RuleMigrationData: + type: object + description: The rule migration document object. + required: + - '@timestamp' + - migration_id + - original_rule + - status + - created_by + properties: + '@timestamp': + type: string + description: The moment of creation + migration_id: + description: The migration id. + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + created_by: + description: The username of the user who created the migration. + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + original_rule: + description: The original rule to migrate. + $ref: '#/components/schemas/OriginalRule' + elastic_rule: + description: The migrated elastic rule. + $ref: '#/components/schemas/ElasticRule' + translation_result: + description: The rule translation result. + $ref: '#/components/schemas/RuleMigrationTranslationResult' + status: + description: The status of the rule migration process. + $ref: '#/components/schemas/RuleMigrationStatus' + default: pending + comments: + description: The comments for the migration including a summary from the LLM in markdown. + $ref: '#/components/schemas/RuleMigrationComments' + updated_at: + type: string + description: The moment of the last update + updated_by: + type: string + description: The user who last updated the migration + + RuleMigrationTaskStats: + type: object + description: The rule migration task stats object. + required: + - id + - status + - rules + - created_at + - last_updated_at + properties: + id: + description: The migration id + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + status: + description: Indicates if the migration task status. + $ref: '#/components/schemas/RuleMigrationTaskStatus' + rules: + type: object + description: The rules migration stats. + required: + - total + - pending + - processing + - completed + - failed + properties: + total: + type: integer + description: The total number of rules to migrate. + pending: + type: integer + description: The number of rules that are pending migration. + processing: + type: integer + description: The number of rules that are being migrated. + completed: + type: integer + description: The number of rules that have been migrated successfully. + failed: + type: integer + description: The number of rules that have failed migration. + created_at: + type: string + description: The moment the migration was created. + last_updated_at: + type: string + description: The moment of the last update. + + RuleMigrationTaskStatus: + type: string + description: The status of the migration task. + enum: # should match SiemMigrationTaskStatus enum at ../constants.ts + - ready + - running + - stopped + - finished + + RuleMigrationTranslationStats: + type: object + description: The rule migration translation stats object. + required: + - id + - rules + properties: + id: + description: The migration id + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + rules: + type: object + description: The rules migration translation stats. + required: + - total + - prebuilt + - custom + - installable + properties: + total: + type: integer + description: The total number of rules to migrate. + prebuilt: + type: integer + description: The number of rules that matched Elastic prebuilt rules. + custom: + type: integer + description: The number of rules that did not match Elastic prebuilt rules and will be installed as custom rules. + installable: + type: integer + description: The number of rules that can be installed. + + RuleMigrationTranslationResult: + type: string + description: The rule translation result. + enum: # should match SiemMigrationRuleTranslationResult enum at ../constants.ts + - full + - partial + - untranslatable + + RuleMigrationStatus: + type: string + description: The status of each rule migration. + enum: # should match SiemMigrationsStatus enum at ../constants.ts + - pending + - processing + - completed + - failed + + RuleMigrationComments: + type: array + description: The comments for the migration including a summary from the LLM in markdown. + items: + type: string + + UpdateRuleMigrationData: + type: object + description: The rule migration data object for rule update operation + required: + - id + properties: + id: + description: The rule migration id + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + elastic_rule: + description: The migrated elastic rule attributes to update. + $ref: '#/components/schemas/ElasticRulePartial' + translation_result: + description: The rule translation result. + $ref: '#/components/schemas/RuleMigrationTranslationResult' + comments: + description: The comments for the migration including a summary from the LLM in markdown. + $ref: '#/components/schemas/RuleMigrationComments' + + ## Rule migration resources + + RuleMigrationResourceType: + type: string + description: The type of the rule migration resource. + enum: + - macro # Reusable part a query that can be customized and called from multiple rules + - list # A list of values that can be used inside queries reused in different rules + + RuleMigrationResourceData: + type: object + description: The rule migration resource data provided by the vendor. + required: + - type + - name + properties: + type: + $ref: '#/components/schemas/RuleMigrationResourceType' + name: + type: string + description: The resource name identifier. + content: + type: string + description: The resource content value. + metadata: + type: object + description: The resource arbitrary metadata. + + RuleMigrationResource: + description: The rule migration resource document object. + allOf: + - $ref: '#/components/schemas/RuleMigrationResourceData' + - type: object + required: + - id + - migration_id + properties: + id: + description: The rule resource migration id + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + migration_id: + description: The migration id + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + updated_at: + type: string + description: The moment of the last update + updated_by: + type: string + description: The user who last updated the resource diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/index.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/index.ts new file mode 100644 index 0000000000000..8ec7adf050bf3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/index.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + OriginalRule, + OriginalRuleVendor, + RuleMigrationResourceData, +} from '../../model/rule_migration.gen'; +import type { ResourceIdentifiers, RuleResource } from './types'; +import { splResourceIdentifiers } from './splunk'; + +const ruleResourceIdentifiers: Record = { + splunk: splResourceIdentifiers, +}; + +export const getRuleResourceIdentifier = (vendor: OriginalRuleVendor): ResourceIdentifiers => { + return ruleResourceIdentifiers[vendor]; +}; + +export class ResourceIdentifier { + private identifiers: ResourceIdentifiers; + + constructor(vendor: OriginalRuleVendor) { + // The constructor may need query_language as an argument for other vendors + this.identifiers = ruleResourceIdentifiers[vendor]; + } + + public fromOriginalRule(originalRule: OriginalRule): RuleResource[] { + return this.identifiers.fromOriginalRule(originalRule); + } + + public fromResource(resource: RuleMigrationResourceData): RuleResource[] { + return this.identifiers.fromResource(resource); + } + + public fromOriginalRules(originalRules: OriginalRule[]): RuleResource[] { + const lists = new Set(); + const macros = new Set(); + originalRules.forEach((rule) => { + const resources = this.identifiers.fromOriginalRule(rule); + resources.forEach((resource) => { + if (resource.type === 'macro') { + macros.add(resource.name); + } else if (resource.type === 'list') { + lists.add(resource.name); + } + }); + }); + return [ + ...Array.from(macros).map((name) => ({ type: 'macro', name })), + ...Array.from(lists).map((name) => ({ type: 'list', name })), + ]; + } + + public fromResources(resources: RuleMigrationResourceData[]): RuleResource[] { + const lists = new Set(); + const macros = new Set(); + resources.forEach((resource) => { + this.identifiers.fromResource(resource).forEach((identifiedResource) => { + if (identifiedResource.type === 'macro') { + macros.add(identifiedResource.name); + } else if (identifiedResource.type === 'list') { + lists.add(identifiedResource.name); + } + }); + }); + return [ + ...Array.from(macros).map((name) => ({ type: 'macro', name })), + ...Array.from(lists).map((name) => ({ type: 'list', name })), + ]; + } +} diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/splunk/index.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/splunk/index.ts new file mode 100644 index 0000000000000..a16c328da947a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/splunk/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ResourceIdentifiers } from '../types'; +import { splResourceIdentifier } from './splunk_identifier'; + +export const splResourceIdentifiers: ResourceIdentifiers = { + fromOriginalRule: (originalRule) => splResourceIdentifier(originalRule.query), + fromResource: (resource) => { + if (resource.type === 'macro' && resource.content) { + return splResourceIdentifier(resource.content); + } + return []; + }, +}; diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.test.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.test.ts new file mode 100644 index 0000000000000..5d144e5b8a38f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.test.ts @@ -0,0 +1,135 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { splResourceIdentifier } from './splunk_identifier'; + +describe('splResourceIdentifier', () => { + it('should extract macros correctly', () => { + const query = + '`macro_zero`, `macro_one(arg1)`, some search command `macro_two(arg1, arg2)` another command `macro_three(arg1, arg2, arg3)`'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_zero' }, + { type: 'macro', name: 'macro_one(1)' }, + { type: 'macro', name: 'macro_two(2)' }, + { type: 'macro', name: 'macro_three(3)' }, + ]); + }); + + it('should extract macros with double quotes parameters correctly', () => { + const query = '| `macro_one("90","2")` | `macro_two("20")`'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one(2)' }, + { type: 'macro', name: 'macro_two(1)' }, + ]); + }); + + it('should extract macros with single quotes parameters correctly', () => { + const query = "| `macro_one('90','2')` | `macro_two('20')`"; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one(2)' }, + { type: 'macro', name: 'macro_two(1)' }, + ]); + }); + + it('should extract lookup tables correctly', () => { + const query = + 'search ... | lookup my_lookup_table field AS alias OUTPUT new_field | lookup other_lookup_list | lookup third_lookup'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'list', name: 'my_lookup_table' }, + { type: 'list', name: 'other_lookup_list' }, + { type: 'list', name: 'third_lookup' }, + ]); + }); + + it('should extract both macros and lookup tables correctly', () => { + const query = + '`macro_one` some search command | lookup my_lookup_table field AS alias OUTPUT new_field | lookup other_lookup_list | lookup third_lookup'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'list', name: 'my_lookup_table' }, + { type: 'list', name: 'other_lookup_list' }, + { type: 'list', name: 'third_lookup' }, + ]); + }); + + it('should extract lookup correctly when there are modifiers', () => { + const query = + 'lookup my_lookup_1 field AS alias OUTPUT new_field | lookup local=true my_lookup_2 | lookup update=true my_lookup_3 | lookup local=true update=true my_lookup_4 | lookup update=false local=true my_lookup_5'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'list', name: 'my_lookup_1' }, + { type: 'list', name: 'my_lookup_2' }, + { type: 'list', name: 'my_lookup_3' }, + { type: 'list', name: 'my_lookup_4' }, + { type: 'list', name: 'my_lookup_5' }, + ]); + }); + + it('should return empty arrays if no macros or lookup tables are found', () => { + const query = 'search | stats count'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([]); + }); + + it('should handle queries with both macros and lookup tables mixed with other commands', () => { + const query = + 'search `macro_one` | `my_lookup_table` field AS alias myfakelookup new_field | lookup real_lookup_list | `third_macro`'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'macro', name: 'my_lookup_table' }, + { type: 'macro', name: 'third_macro' }, + { type: 'list', name: 'real_lookup_list' }, + ]); + }); + + it('should ignore macros or lookup tables inside string literals with double quotes', () => { + const query = + '`macro_one` | lookup my_lookup_table | search title="`macro_two` and lookup another_table"'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'list', name: 'my_lookup_table' }, + ]); + }); + + it('should ignore macros or lookup tables inside string literals with single quotes', () => { + const query = + "`macro_one` | lookup my_lookup_table | search title='`macro_two` and lookup another_table'"; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'list', name: 'my_lookup_table' }, + ]); + }); + + it('should ignore macros or lookup tables inside comments wrapped by ```', () => { + const query = + '`macro_one` ```this is a comment with `macro_two` and lookup another_table``` | lookup my_lookup_table ```this is another comment```'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'list', name: 'my_lookup_table' }, + ]); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.ts new file mode 100644 index 0000000000000..2ecc43321b11f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Important: + * This library uses regular expressions that are executed against arbitrary user input, they need to be safe from ReDoS attacks. + * Please make sure to test all regular expressions them before using them. + * At the time of writing, this tool can be used to test it: https://devina.io/redos-checker + */ + +import type { ResourceIdentifier, RuleResource } from '../types'; + +const listRegex = /\b(?:lookup)\s+([\w-]+)\b/g; // Captures only the lookup name +const macrosRegex = /`([\w-]+)(?:\(([^`]*?)\))?`/g; // Captures only the macro name and arguments + +export const splResourceIdentifier: ResourceIdentifier = (input) => { + // sanitize the query to avoid mismatching macro and list names inside comments or literal strings + const sanitizedInput = sanitizeInput(input); + + const resources: RuleResource[] = []; + let macroMatch; + while ((macroMatch = macrosRegex.exec(sanitizedInput)) !== null) { + const macroName = macroMatch[1] as string; + const args = macroMatch[2] as string; // This captures the content inside the parentheses + const argCount = args ? args.split(',').length : 0; // Count arguments if present + const macroWithArgs = argCount > 0 ? `${macroName}(${argCount})` : macroName; + resources.push({ type: 'macro', name: macroWithArgs }); + } + + let listMatch; + while ((listMatch = listRegex.exec(sanitizedInput)) !== null) { + resources.push({ type: 'list', name: listMatch[1] }); + } + + return resources; +}; + +// Comments should be removed before processing the query to avoid matching macro and list names inside them +const commentRegex = /```.*?```/g; +// Literal strings should be replaced with a placeholder to avoid matching macro and list names inside them +const doubleQuoteStrRegex = /".*?"/g; +const singleQuoteStrRegex = /'.*?'/g; +// lookup operator can have modifiers like local=true or update=false before the lookup name, we need to remove them +const lookupModifiers = /\blookup\b\s+((local|update)=\s*(?:true|false)\s*)+/gi; + +const sanitizeInput = (query: string) => { + return query + .replaceAll(commentRegex, '') + .replaceAll(doubleQuoteStrRegex, '"literal"') + .replaceAll(singleQuoteStrRegex, "'literal'") + .replaceAll(lookupModifiers, 'lookup '); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/types.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/types.ts new file mode 100644 index 0000000000000..70c6e3b72124f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/resources/types.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + OriginalRule, + RuleMigrationResourceData, + RuleMigrationResourceType, +} from '../../model/rule_migration.gen'; + +export interface RuleResource { + type: RuleMigrationResourceType; + name: string; +} +export type ResourceIdentifier = (input: string) => RuleResource[]; + +export interface ResourceIdentifiers { + fromOriginalRule: (originalRule: OriginalRule) => RuleResource[]; + fromResource: (resource: RuleMigrationResourceData) => RuleResource[]; +} diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/common/siem_migrations/rules/utils.ts rename to x-pack/solutions/security/plugins/security_solution/common/siem_migrations/rules/utils.ts diff --git a/x-pack/plugins/security_solution/common/test/ess_roles.json b/x-pack/solutions/security/plugins/security_solution/common/test/ess_roles.json similarity index 100% rename from x-pack/plugins/security_solution/common/test/ess_roles.json rename to x-pack/solutions/security/plugins/security_solution/common/test/ess_roles.json diff --git a/x-pack/plugins/security_solution/common/test/index.ts b/x-pack/solutions/security/plugins/security_solution/common/test/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/test/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/test/index.ts diff --git a/x-pack/plugins/security_solution/common/timelines/zod_errors.ts b/x-pack/solutions/security/plugins/security_solution/common/timelines/zod_errors.ts similarity index 100% rename from x-pack/plugins/security_solution/common/timelines/zod_errors.ts rename to x-pack/solutions/security/plugins/security_solution/common/timelines/zod_errors.ts diff --git a/x-pack/plugins/security_solution/common/translations.ts b/x-pack/solutions/security/plugins/security_solution/common/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/common/translations.ts rename to x-pack/solutions/security/plugins/security_solution/common/translations.ts diff --git a/x-pack/plugins/security_solution/common/typed_json.ts b/x-pack/solutions/security/plugins/security_solution/common/typed_json.ts similarity index 100% rename from x-pack/plugins/security_solution/common/typed_json.ts rename to x-pack/solutions/security/plugins/security_solution/common/typed_json.ts diff --git a/x-pack/plugins/security_solution/common/types/bulk_actions/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/bulk_actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/bulk_actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/bulk_actions/index.ts diff --git a/x-pack/plugins/security_solution/common/types/header_actions/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/header_actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/header_actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/header_actions/index.ts diff --git a/x-pack/plugins/security_solution/common/types/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/index.ts diff --git a/x-pack/plugins/security_solution/common/types/response_actions/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/response_actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/response_actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/response_actions/index.ts diff --git a/x-pack/plugins/security_solution/common/types/risk_scores.ts b/x-pack/solutions/security/plugins/security_solution/common/types/risk_scores.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/risk_scores.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/risk_scores.ts diff --git a/x-pack/plugins/security_solution/common/types/session_view/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/session_view/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/session_view/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/session_view/index.ts diff --git a/x-pack/plugins/security_solution/common/types/timeline/cells/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/timeline/cells/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/timeline/cells/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/timeline/cells/index.ts diff --git a/x-pack/plugins/security_solution/common/types/timeline/columns/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/timeline/columns/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/timeline/columns/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/timeline/columns/index.ts diff --git a/x-pack/plugins/security_solution/common/types/timeline/data_provider/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/timeline/data_provider/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/timeline/data_provider/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/timeline/data_provider/index.ts diff --git a/x-pack/plugins/security_solution/common/types/timeline/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/timeline/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/timeline/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/timeline/index.ts diff --git a/x-pack/plugins/security_solution/common/types/timeline/note/saved_object.ts b/x-pack/solutions/security/plugins/security_solution/common/types/timeline/note/saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/timeline/note/saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/timeline/note/saved_object.ts diff --git a/x-pack/plugins/security_solution/common/types/timeline/pinned_event/saved_object.ts b/x-pack/solutions/security/plugins/security_solution/common/types/timeline/pinned_event/saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/timeline/pinned_event/saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/timeline/pinned_event/saved_object.ts diff --git a/x-pack/plugins/security_solution/common/types/timeline/rows/index.ts b/x-pack/solutions/security/plugins/security_solution/common/types/timeline/rows/index.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/timeline/rows/index.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/timeline/rows/index.ts diff --git a/x-pack/plugins/security_solution/common/types/timeline/saved_object.ts b/x-pack/solutions/security/plugins/security_solution/common/types/timeline/saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/timeline/saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/timeline/saved_object.ts diff --git a/x-pack/plugins/security_solution/common/types/timeline/store.ts b/x-pack/solutions/security/plugins/security_solution/common/types/timeline/store.ts similarity index 100% rename from x-pack/plugins/security_solution/common/types/timeline/store.ts rename to x-pack/solutions/security/plugins/security_solution/common/types/timeline/store.ts diff --git a/x-pack/plugins/security_solution/common/utility_types.ts b/x-pack/solutions/security/plugins/security_solution/common/utility_types.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utility_types.ts rename to x-pack/solutions/security/plugins/security_solution/common/utility_types.ts diff --git a/x-pack/plugins/security_solution/common/utils/__snapshots__/risk_score_modules.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/common/utils/__snapshots__/risk_score_modules.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/common/utils/__snapshots__/risk_score_modules.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/common/utils/__snapshots__/risk_score_modules.test.ts.snap diff --git a/x-pack/plugins/security_solution/common/utils/alert_detail_path.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/alert_detail_path.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/alert_detail_path.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/alert_detail_path.ts diff --git a/x-pack/plugins/security_solution/common/utils/enum_from_string.test.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/enum_from_string.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/enum_from_string.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/enum_from_string.test.ts diff --git a/x-pack/plugins/security_solution/common/utils/enum_from_string.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/enum_from_string.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/enum_from_string.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/enum_from_string.ts diff --git a/x-pack/plugins/security_solution/common/utils/expand_dotted.test.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/expand_dotted.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/expand_dotted.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/expand_dotted.test.ts diff --git a/x-pack/plugins/security_solution/common/utils/expand_dotted.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/expand_dotted.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/expand_dotted.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/expand_dotted.ts diff --git a/x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.test.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/format_page_filter_search_param.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/format_page_filter_search_param.test.ts diff --git a/x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/format_page_filter_search_param.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/format_page_filter_search_param.ts diff --git a/x-pack/plugins/security_solution/common/utils/get_ramdom_color.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/get_ramdom_color.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/get_ramdom_color.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/get_ramdom_color.ts diff --git a/x-pack/plugins/security_solution/common/utils/invariant.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/invariant.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/invariant.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/invariant.ts diff --git a/x-pack/plugins/security_solution/common/utils/kql.test.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/kql.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/kql.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/kql.test.ts diff --git a/x-pack/plugins/security_solution/common/utils/kql.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/kql.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/kql.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/kql.ts diff --git a/x-pack/plugins/security_solution/common/utils/path_placeholder.test.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/path_placeholder.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/path_placeholder.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/path_placeholder.test.ts diff --git a/x-pack/plugins/security_solution/common/utils/path_placeholder.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/path_placeholder.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/path_placeholder.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/path_placeholder.ts diff --git a/x-pack/plugins/security_solution/common/utils/risk_score_modules.test.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/risk_score_modules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/risk_score_modules.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/risk_score_modules.test.ts diff --git a/x-pack/plugins/security_solution/common/utils/risk_score_modules.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/risk_score_modules.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/risk_score_modules.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/risk_score_modules.ts diff --git a/x-pack/plugins/security_solution/common/utils/sourcerer.test.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/sourcerer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/sourcerer.test.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/sourcerer.test.ts diff --git a/x-pack/plugins/security_solution/common/utils/sourcerer.ts b/x-pack/solutions/security/plugins/security_solution/common/utils/sourcerer.ts similarity index 100% rename from x-pack/plugins/security_solution/common/utils/sourcerer.ts rename to x-pack/solutions/security/plugins/security_solution/common/utils/sourcerer.ts diff --git a/x-pack/plugins/security_solution/docs/adrs/threat_hunting/0001_saving_of_timeline_associated_saved_objects.md b/x-pack/solutions/security/plugins/security_solution/docs/adrs/threat_hunting/0001_saving_of_timeline_associated_saved_objects.md similarity index 96% rename from x-pack/plugins/security_solution/docs/adrs/threat_hunting/0001_saving_of_timeline_associated_saved_objects.md rename to x-pack/solutions/security/plugins/security_solution/docs/adrs/threat_hunting/0001_saving_of_timeline_associated_saved_objects.md index a2d98fcb750e1..8f6ddf150c9db 100644 --- a/x-pack/plugins/security_solution/docs/adrs/threat_hunting/0001_saving_of_timeline_associated_saved_objects.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/adrs/threat_hunting/0001_saving_of_timeline_associated_saved_objects.md @@ -13,11 +13,11 @@ When commenting on an unsaved timeline or an event in a timeline or when pinning What's causing this bug is that the associated saved objects have a field `timelineId` that connects them to the timeline. When a (pin/note) save request comes in, the server checks for that field and if it doesn't exist, it will create a new timeline on the fly and return its `timelineId` and `timelineVersion` as part of the saved object's response. -https://github.com/elastic/kibana/blob/2df44b9f7f76f3d03f6e32be7f2a39034f97c22e/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts#L138-L148 +https://github.com/elastic/kibana/blob/2df44b9f7f76f3d03f6e32be7f2a39034f97c22e/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts#L138-L148 These two fields are currently not used in the timeline middleware: -https://github.com/elastic/kibana/blob/2df44b9f7f76f3d03f6e32be7f2a39034f97c22e/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_note.ts#L60 +https://github.com/elastic/kibana/blob/2df44b9f7f76f3d03f6e32be7f2a39034f97c22e/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_note.ts#L60 This gives the false impression that the associated saved object has been stored but it actually has been associated to a different timeline. Subsequent saves of the active timeline (which is not the associated timeline) will then create a new `timelineId`. When the page is reloaded, the associated saved objects will be gone from that timeline. diff --git a/x-pack/solutions/security/plugins/security_solution/docs/openapi/README.md b/x-pack/solutions/security/plugins/security_solution/docs/openapi/README.md new file mode 100644 index 0000000000000..4c3b55c8ab23d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/docs/openapi/README.md @@ -0,0 +1,66 @@ +# Security Solution API reference documentation + +Documentation about Security Solution OpenAPI bundling workflow and configuration. See [Kibana wide docs](../../../../../../../oas_docs/README.md) for general information. + +## Workflow + +Security Solution uses **specification first approach**. It means we define OpenAPI spec files describing individual API endpoints (also known as source OpenAPI specs) at first. After that we use tooling in particular [`kbn-openapi-bundler`](../../../../../../../packages/kbn-openapi-bundler/README.md) to process source OpenAPI specs to produce domain OpenAPI bundles. + +The workflow consists of multiple steps and visualized below + +![workflow diagram](workflow.png) + +This document describes **step 0** implemented on Security Solution's side. + +#### Bundling automation (CI integration) + +Bundling Security Solution domain OpenAPI bundles is **Step 0** of the workflow. To keep the domain OpenAPI bundles always up-to-date and in sync with the source OpenAPI specs, the bundling runs as part of the `Checks` step in CI on every PR build and on merge builds. If there are any changes to the source OpenAPI files, these changes get propagated to the domain OpenAPI bundles and CI commits the changes. In that case the build is marked as failed and needs to be restarted. + +### API Domains + +Security Solution has multiple API domains scattered across Kibana. Currently the following API domains are handled in the workflow: + +- Security AI Assistant + + - Bundling script: `x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/bundle.js` + - Bundles location: `x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/{ess|serverless}` + +- Security Detections + + - Bundling script: `x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections.js` + - Bundles location: `x-pack/solutions/security/plugins/security_solution/docs/openapi/{ess|serverless}` + +- Security Endpoint Exceptions + + - Bundling script: `packages/kbn-securitysolution-endpoint-exceptions-common/scripts/openapi_bundle.js` + - Bundles location: `packages/kbn-securitysolution-endpoint-exceptions-common/docs/openapi/{ess|serverless}` + +- Security Endpoint Management + + - Bundling script: `x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_endpoint_management.js` + - Bundles location: `x-pack/solutions/security/plugins/security_solution/docs/openapi/{ess|serverless}` + +- Security Endpoint Management + + - Bundling script: `x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_entity_analytics.js` + - Bundles location: `x-pack/solutions/security/plugins/security_solution/docs/openapi/{ess|serverless}` + +- Security Security Exceptions + + - Bundling script: `packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js` + - Bundles location: `packages/kbn-securitysolution-exceptions-common/docs/openapi/{ess|serverless}` + +- Security Lists + + - Bundling script: `packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js` + - Bundles location: `packages/kbn-securitysolution-lists-common/docs/openapi/{ess|serverless}` + +- Security Osquery + + - Bundling script: `x-pack/platform/plugins/shared/osquery/scripts/openapi/bundle.js` + - Bundles location: `x-pack/platform/plugins/shared/osquery/docs/openapi/{ess|serverless}` + +- Security Timeline + + - Bundling script: `x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_timeline.js` + - Bundles location: `x-pack/solutions/security/plugins/security_solution/docs/openapi/{ess|serverless}` diff --git a/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml new file mode 100644 index 0000000000000..6c865ab356c1d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml @@ -0,0 +1,7132 @@ +openapi: 3.0.3 +info: + description: >- + Use the detections APIs to create and manage detection rules. Detection + rules search events and external alerts sent to Elastic Security and + generate detection alerts from any hits. Alerts are displayed on the + **Alerts** page and can be assigned and triaged, using the alert status to + mark them as open, closed, or acknowledged. + title: Security Detections API (Elastic Cloud and self-hosted) + version: '2023-10-31' +servers: + - url: http://{kibana_host}:{port} + variables: + kibana_host: + default: localhost + port: + default: '5601' +paths: + /api/detection_engine/index: + delete: + operationId: DeleteAlertsIndex + responses: + '200': + content: + application/json: + schema: + type: object + properties: + acknowledged: + type: boolean + required: + - acknowledged + description: Successful response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Not enough permissions response + '404': + content: + application/json: + schema: + type: string + description: Index does not exist response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Delete an alerts index + tags: + - Security Detections API + - Alert index API + get: + operationId: ReadAlertsIndex + responses: + '200': + content: + application/json: + schema: + type: object + properties: + index_mapping_outdated: + nullable: true + type: boolean + name: + type: string + required: + - name + - index_mapping_outdated + description: Successful response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Not enough permissions response + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Not found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Reads the alert index name if it exists + tags: + - Security Detections API + - Alert index API + post: + operationId: CreateAlertsIndex + responses: + '200': + content: + application/json: + schema: + type: object + properties: + acknowledged: + type: boolean + required: + - acknowledged + description: Successful response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Not enough permissions response + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Not found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Create an alerts index + tags: + - Security Detections API + - Alert index API + /api/detection_engine/privileges: + get: + description: > + Retrieves whether or not the user is authenticated, and the user's + Kibana + + space and index privileges, which determine if the user can create an + + index for the Elastic Security alerts generated by + + detection engine rules. + operationId: ReadPrivileges + responses: + '200': + content: + application/json: + schema: + type: object + properties: + has_encryption_key: + type: boolean + is_authenticated: + type: boolean + required: + - is_authenticated + - has_encryption_key + description: Successful response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Returns user privileges for the Kibana space + tags: + - Security Detections API + - Privileges API + /api/detection_engine/rules: + delete: + description: Delete a detection rule using the `rule_id` or `id` field. + operationId: DeleteRule + parameters: + - description: The rule's `id` value. + in: query + name: id + required: false + schema: + $ref: '#/components/schemas/RuleObjectId' + - description: The rule's `rule_id` value. + in: query + name: rule_id + required: false + schema: + $ref: '#/components/schemas/RuleSignatureId' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Delete a detection rule + tags: + - Security Detections API + - Rules API + get: + description: Retrieve a detection rule using the `rule_id` or `id` field. + operationId: ReadRule + parameters: + - description: The rule's `id` value. + in: query + name: id + required: false + schema: + $ref: '#/components/schemas/RuleObjectId' + - description: The rule's `rule_id` value. + in: query + name: rule_id + required: false + schema: + $ref: '#/components/schemas/RuleSignatureId' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Retrieve a detection rule + tags: + - Security Detections API + - Rules API + patch: + description: >- + Update specific fields of an existing detection rule using the `rule_id` + or `id` field. + operationId: PatchRule + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RulePatchProps' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Patch a detection rule + tags: + - Security Detections API + - Rules API + post: + description: Create a new detection rule. + operationId: CreateRule + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RuleCreateProps' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Create a detection rule + tags: + - Security Detections API + - Rules API + put: + description: > + Update a detection rule using the `rule_id` or `id` field. The original + rule is replaced, and all unspecified fields are deleted. + + > info + + > You cannot modify the `id` or `rule_id` values. + operationId: UpdateRule + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RuleUpdateProps' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Update a detection rule + tags: + - Security Detections API + - Rules API + /api/detection_engine/rules/_bulk_action: + post: + description: >- + Apply a bulk action, such as bulk edit, duplicate, or delete, to + multiple detection rules. The bulk action is applied to all rules that + match the query or to the rules listed by their IDs. + operationId: PerformRulesBulkAction + parameters: + - description: Enables dry run mode for the request call. + in: query + name: dry_run + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/BulkDeleteRules' + - $ref: '#/components/schemas/BulkDisableRules' + - $ref: '#/components/schemas/BulkEnableRules' + - $ref: '#/components/schemas/BulkExportRules' + - $ref: '#/components/schemas/BulkDuplicateRules' + - $ref: '#/components/schemas/BulkManualRuleRun' + - $ref: '#/components/schemas/BulkEditRules' + responses: + '200': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/BulkEditActionResponse' + - $ref: '#/components/schemas/BulkExportActionResponse' + description: OK + summary: Apply a bulk action to detection rules + tags: + - Security Detections API + - Bulk API + /api/detection_engine/rules/_bulk_create: + post: + deprecated: true + description: Create new detection rules in bulk. + operationId: BulkCreateRules + requestBody: + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RuleCreateProps' + type: array + description: A JSON array of rules, where each rule contains the required fields. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BulkCrudRulesResponse' + description: Indicates a successful call. + summary: Create multiple detection rules + tags: + - Security Detections API + - Bulk API + /api/detection_engine/rules/_bulk_delete: + delete: + deprecated: true + description: Delete detection rules in bulk. + operationId: BulkDeleteRules + requestBody: + content: + application/json: + schema: + items: + type: object + properties: + id: + $ref: '#/components/schemas/RuleObjectId' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + type: array + description: >- + A JSON array of `id` or `rule_id` fields of the rules you want to + delete. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BulkCrudRulesResponse' + description: Indicates a successful call. + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Delete multiple detection rules + tags: + - Security Detections API + - Bulk API + post: + deprecated: true + description: Deletes multiple rules. + operationId: BulkDeleteRulesPost + requestBody: + content: + application/json: + schema: + items: + type: object + properties: + id: + $ref: '#/components/schemas/RuleObjectId' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + type: array + description: >- + A JSON array of `id` or `rule_id` fields of the rules you want to + delete. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BulkCrudRulesResponse' + description: Indicates a successful call. + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Delete multiple detection rules + tags: + - Security Detections API + - Bulk API + /api/detection_engine/rules/_bulk_update: + patch: + deprecated: true + description: >- + Update specific fields of existing detection rules using the `rule_id` + or `id` field. + operationId: BulkPatchRules + requestBody: + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RulePatchProps' + type: array + description: A JSON array of rules, where each rule contains the required fields. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BulkCrudRulesResponse' + description: Indicates a successful call. + summary: Patch multiple detection rules + tags: + - Security Detections API + - Bulk API + put: + deprecated: true + description: > + Update multiple detection rules using the `rule_id` or `id` field. The + original rules are replaced, and all unspecified fields are deleted. + + > info + + > You cannot modify the `id` or `rule_id` values. + operationId: BulkUpdateRules + requestBody: + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RuleUpdateProps' + type: array + description: >- + A JSON array where each element includes the `id` or `rule_id` field + of the rule you want to update and the fields you want to modify. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BulkCrudRulesResponse' + description: Indicates a successful call. + summary: Update multiple detection rules + tags: + - Security Detections API + - Bulk API + /api/detection_engine/rules/_export: + post: + description: > + Export detection rules to an `.ndjson` file. The following configuration + items are also included in the `.ndjson` file: + + - Actions + + - Exception lists + + > info + + > You cannot export prebuilt rules. + operationId: ExportRules + parameters: + - description: Determines whether a summary of the exported rules is returned. + in: query + name: exclude_export_details + required: false + schema: + default: false + type: boolean + - description: File name for saving the exported rules. + in: query + name: file_name + required: false + schema: + default: export.ndjson + type: string + requestBody: + content: + application/json: + schema: + nullable: true + type: object + properties: + objects: + description: >- + Array of `rule_id` fields. Exports all rules when + unspecified. + items: + type: object + properties: + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + required: + - rule_id + type: array + required: + - objects + required: false + responses: + '200': + content: + application/ndjson: + schema: + description: An `.ndjson` file containing the returned rules. + format: binary + type: string + description: Indicates a successful call. + summary: Export detection rules + tags: + - Security Detections API + - Import/Export API + /api/detection_engine/rules/_find: + get: + description: >- + Retrieve a paginated list of detection rules. By default, the first page + is returned, with 20 results per page. + operationId: FindRules + parameters: + - in: query + name: fields + required: false + schema: + items: + type: string + type: array + - description: Search query + in: query + name: filter + required: false + schema: + type: string + - description: Field to sort by + in: query + name: sort_field + required: false + schema: + $ref: '#/components/schemas/FindRulesSortField' + - description: Sort order + in: query + name: sort_order + required: false + schema: + $ref: '#/components/schemas/SortOrder' + - description: Page number + in: query + name: page + required: false + schema: + default: 1 + minimum: 1 + type: integer + - description: Rules per page + in: query + name: per_page + required: false + schema: + default: 20 + minimum: 0 + type: integer + responses: + '200': + content: + application/json: + schema: + type: object + properties: + data: + items: + $ref: '#/components/schemas/RuleResponse' + type: array + page: + type: integer + perPage: + type: integer + total: + type: integer + required: + - page + - perPage + - total + - data + description: Successful response + summary: List all detection rules + tags: + - Security Detections API + - Rules API + /api/detection_engine/rules/_import: + post: + description: > + Import detection rules from an `.ndjson` file, including actions and + exception lists. The request must include: + + - The `Content-Type: multipart/form-data` HTTP header. + + - A link to the `.ndjson` file containing the rules. + operationId: ImportRules + parameters: + - description: >- + Determines whether existing rules with the same `rule_id` are + overwritten. + in: query + name: overwrite + required: false + schema: + default: false + type: boolean + - description: >- + Determines whether existing exception lists with the same `list_id` + are overwritten. + in: query + name: overwrite_exceptions + required: false + schema: + default: false + type: boolean + - description: >- + Determines whether existing actions with the same + `kibana.alert.rule.actions.id` are overwritten. + in: query + name: overwrite_action_connectors + required: false + schema: + default: false + type: boolean + - description: Generates a new list ID for each imported exception list. + in: query + name: as_new_list + required: false + schema: + default: false + type: boolean + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + description: The `.ndjson` file containing the rules. + format: binary + type: string + required: true + responses: + '200': + content: + application/json: + schema: + additionalProperties: false + type: object + properties: + action_connectors_errors: + items: + $ref: '#/components/schemas/ErrorSchema' + type: array + action_connectors_success: + type: boolean + action_connectors_success_count: + minimum: 0 + type: integer + action_connectors_warnings: + items: + $ref: '#/components/schemas/WarningSchema' + type: array + errors: + items: + $ref: '#/components/schemas/ErrorSchema' + type: array + exceptions_errors: + items: + $ref: '#/components/schemas/ErrorSchema' + type: array + exceptions_success: + type: boolean + exceptions_success_count: + minimum: 0 + type: integer + rules_count: + minimum: 0 + type: integer + success: + type: boolean + success_count: + minimum: 0 + type: integer + required: + - exceptions_success + - exceptions_success_count + - exceptions_errors + - rules_count + - success + - success_count + - errors + - action_connectors_errors + - action_connectors_warnings + - action_connectors_success + - action_connectors_success_count + description: Indicates a successful call. + summary: Import detection rules + tags: + - Security Detections API + - Import/Export API + /api/detection_engine/rules/prepackaged: + put: + description: Install and update all Elastic prebuilt detection rules and Timelines. + operationId: InstallPrebuiltRulesAndTimelines + responses: + '200': + content: + application/json: + schema: + additionalProperties: false + type: object + properties: + rules_installed: + description: The number of rules installed + minimum: 0 + type: integer + rules_updated: + description: The number of rules updated + minimum: 0 + type: integer + timelines_installed: + description: The number of timelines installed + minimum: 0 + type: integer + timelines_updated: + description: The number of timelines updated + minimum: 0 + type: integer + required: + - rules_installed + - rules_updated + - timelines_installed + - timelines_updated + description: Indicates a successful call + summary: Install prebuilt detection rules and Timelines + tags: + - Security Detections API + - Prebuilt Rules API + /api/detection_engine/rules/prepackaged/_status: + get: + description: >- + Retrieve the status of all Elastic prebuilt detection rules and + Timelines. + operationId: ReadPrebuiltRulesAndTimelinesStatus + responses: + '200': + content: + application/json: + schema: + additionalProperties: false + type: object + properties: + rules_custom_installed: + description: The total number of custom rules + minimum: 0 + type: integer + rules_installed: + description: The total number of installed prebuilt rules + minimum: 0 + type: integer + rules_not_installed: + description: >- + The total number of available prebuilt rules that are not + installed + minimum: 0 + type: integer + rules_not_updated: + description: The total number of outdated prebuilt rules + minimum: 0 + type: integer + timelines_installed: + description: The total number of installed prebuilt timelines + minimum: 0 + type: integer + timelines_not_installed: + description: >- + The total number of available prebuilt timelines that are + not installed + minimum: 0 + type: integer + timelines_not_updated: + description: The total number of outdated prebuilt timelines + minimum: 0 + type: integer + required: + - rules_custom_installed + - rules_installed + - rules_not_installed + - rules_not_updated + - timelines_installed + - timelines_not_installed + - timelines_not_updated + description: Indicates a successful call + summary: Retrieve the status of prebuilt detection rules and Timelines + tags: + - Security Detections API + - Prebuilt Rules API + /api/detection_engine/rules/preview: + post: + operationId: RulePreview + parameters: + - description: >- + Enables logging and returning in response ES queries, performed + during rule execution + in: query + name: enable_logged_requests + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + anyOf: + - allOf: + - $ref: '#/components/schemas/EqlRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/QueryRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/SavedQueryRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/ThresholdRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/ThreatMatchRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/MachineLearningRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/NewTermsRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/EsqlRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + discriminator: + propertyName: type + description: >- + An object containing tags to add or remove and alert ids the changes + will be applied + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + isAborted: + type: boolean + logs: + items: + $ref: '#/components/schemas/RulePreviewLogs' + type: array + previewId: + $ref: '#/components/schemas/NonEmptyString' + required: + - logs + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Preview rule alerts generated on specified time range + tags: + - Security Detections API + - Rule preview API + /api/detection_engine/signals/assignees: + post: + description: | + Assign users to detection alerts, and unassign them from alerts. + > info + > You cannot add and remove the same assignee in the same request. + operationId: SetAlertAssignees + requestBody: + content: + application/json: + schema: + type: object + properties: + assignees: + $ref: '#/components/schemas/AlertAssignees' + description: Details about the assignees to assign and unassign. + ids: + $ref: '#/components/schemas/AlertIds' + description: List of alerts ids to assign and unassign passed assignees. + required: + - assignees + - ids + required: true + responses: + '200': + description: Indicates a successful call. + '400': + description: Invalid request. + summary: Assign and unassign users from detection alerts + tags: + - Security Detections API + /api/detection_engine/signals/finalize_migration: + post: + deprecated: true + description: > + Finalize successful migrations of detection alerts. This replaces the + original index's alias with the successfully migrated index's alias. + + The endpoint is idempotent; therefore, it can safely be used to poll a + given migration and, upon completion, + + finalize it. + operationId: FinalizeAlertsMigration + requestBody: + content: + application/json: + schema: + type: object + properties: + migration_ids: + items: + type: string + minItems: 1 + type: array + required: + - migration_ids + description: Array of `migration_id`s to finalize + required: true + responses: + '200': + content: + application/json: + schema: + items: + $ref: '#/components/schemas/MigrationFinalizationResult' + type: array + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Finalize detection alert migrations + tags: + - Security Detections API + - Alerts migration API + /api/detection_engine/signals/migration: + delete: + deprecated: true + description: > + Migrations favor data integrity over shard size. Consequently, unused or + orphaned indices are artifacts of + + the migration process. A successful migration will result in both the + old and new indices being present. + + As such, the old, orphaned index can (and likely should) be deleted. + + + While you can delete these indices manually, + + the endpoint accomplishes this task by applying a deletion policy to the + relevant index, causing it to be deleted + + after 30 days. It also deletes other artifacts specific to the migration + implementation. + operationId: AlertsMigrationCleanup + requestBody: + content: + application/json: + schema: + type: object + properties: + migration_ids: + items: + type: string + minItems: 1 + type: array + required: + - migration_ids + description: Array of `migration_id`s to cleanup + required: true + responses: + '200': + content: + application/json: + schema: + items: + $ref: '#/components/schemas/MigrationCleanupResult' + type: array + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Clean up detection alert migrations + tags: + - Security Detections API + - Alerts migration API + post: + deprecated: true + description: > + Initiate a migration of detection alerts. + + Migrations are initiated per index. While the process is neither + destructive nor interferes with existing data, it may be + resource-intensive. As such, it is recommended that you plan your + migrations accordingly. + operationId: CreateAlertsMigration + requestBody: + content: + application/json: + schema: + allOf: + - type: object + properties: + index: + items: + $ref: '#/components/schemas/NonEmptyString' + minItems: 1 + type: array + required: + - index + - $ref: '#/components/schemas/AlertsReindexOptions' + description: Alerts migration parameters + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + indices: + items: + oneOf: + - $ref: '#/components/schemas/AlertsIndexMigrationSuccess' + - $ref: '#/components/schemas/AlertsIndexMigrationError' + - $ref: '#/components/schemas/SkippedAlertsIndexMigration' + type: array + required: + - indices + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Initiate a detection alert migration + tags: + - Security Detections API + - Alerts migration API + /api/detection_engine/signals/migration_status: + post: + deprecated: true + description: >- + Retrieve indices that contain detection alerts of a particular age, + along with migration information for each of those indices. + operationId: ReadAlertsMigrationStatus + parameters: + - description: Maximum age of qualifying detection alerts + in: query + name: from + required: true + schema: + description: > + Time from which data is analyzed. For example, now-4200s means the + rule analyzes data from 70 minutes + + before its start time. Defaults to now-6m (analyzes data from 6 + minutes before the start time). + format: date-math + type: string + responses: + '200': + content: + application/json: + schema: + type: object + properties: + indices: + items: + $ref: '#/components/schemas/IndexMigrationStatus' + type: array + required: + - indices + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Retrieve the status of detection alert migrations + tags: + - Security Detections API + - Alerts migration API + /api/detection_engine/signals/search: + post: + description: Find and/or aggregate detection alerts that match the given query. + operationId: SearchAlerts + requestBody: + content: + application/json: + schema: + description: Elasticsearch query and aggregation request + type: object + properties: + _source: + oneOf: + - type: boolean + - type: string + - items: + type: string + type: array + aggs: + additionalProperties: true + type: object + fields: + items: + type: string + type: array + query: + additionalProperties: true + type: object + runtime_mappings: + additionalProperties: true + type: object + size: + minimum: 0 + type: integer + sort: + $ref: '#/components/schemas/AlertsSort' + track_total_hits: + type: boolean + description: Search and/or aggregation query + required: true + responses: + '200': + content: + application/json: + schema: + additionalProperties: true + description: Elasticsearch search response + type: object + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Find and/or aggregate detection alerts + tags: + - Security Detections API + - Alerts API + /api/detection_engine/signals/status: + post: + description: Set the status of one or more detection alerts. + operationId: SetAlertsStatus + requestBody: + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SetAlertsStatusByIds' + - $ref: '#/components/schemas/SetAlertsStatusByQuery' + description: >- + An object containing desired status and explicit alert ids or a query + to select alerts + required: true + responses: + '200': + content: + application/json: + schema: + additionalProperties: true + description: Elasticsearch update by query response + type: object + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Set a detection alert status + tags: + - Security Detections API + - Alerts API + /api/detection_engine/signals/tags: + post: + description: | + And tags to detection alerts, and remove them from alerts. + > info + > You cannot add and remove the same alert tag in the same request. + operationId: SetAlertTags + requestBody: + content: + application/json: + schema: + type: object + properties: + ids: + $ref: '#/components/schemas/AlertIds' + tags: + $ref: '#/components/schemas/SetAlertTags' + required: + - ids + - tags + description: >- + An object containing tags to add or remove and alert ids the changes + will be applied + required: true + responses: + '200': + content: + application/json: + schema: + additionalProperties: true + description: Elasticsearch update by query response + type: object + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Add and remove detection alert tags + tags: + - Security Detections API + - Alerts API + /api/detection_engine/tags: + get: + description: List all unique tags from all detection rules. + operationId: ReadTags + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleTagArray' + description: Indicates a successful call + summary: List all detection rule tags + tags: + - Security Detections API + - Tags API +components: + schemas: + AlertAssignees: + type: object + properties: + add: + description: A list of users ids to assign. + items: + $ref: '#/components/schemas/NonEmptyString' + type: array + remove: + description: A list of users ids to unassign. + items: + $ref: '#/components/schemas/NonEmptyString' + type: array + required: + - add + - remove + AlertIds: + description: A list of alerts ids. + items: + $ref: '#/components/schemas/NonEmptyString' + minItems: 1 + type: array + AlertsIndex: + deprecated: true + description: (deprecated) Has no effect. + type: string + AlertsIndexMigrationError: + type: object + properties: + error: + type: object + properties: + message: + type: string + status_code: + type: string + required: + - message + - status_code + index: + type: string + required: + - index + - error + AlertsIndexMigrationSuccess: + type: object + properties: + index: + type: string + migration_id: + type: string + migration_index: + type: string + required: + - index + - migration_id + - migration_index + AlertsIndexNamespace: + description: Has no effect. + type: string + AlertsReindexOptions: + type: object + properties: + requests_per_second: + minimum: 1 + type: integer + size: + minimum: 1 + type: integer + slices: + minimum: 1 + type: integer + AlertsSort: + oneOf: + - $ref: '#/components/schemas/AlertsSortCombinations' + - items: + $ref: '#/components/schemas/AlertsSortCombinations' + type: array + AlertsSortCombinations: + anyOf: + - type: string + - additionalProperties: true + type: object + AlertStatus: + enum: + - open + - closed + - acknowledged + - in-progress + type: string + AlertSuppression: + type: object + properties: + duration: + $ref: '#/components/schemas/AlertSuppressionDuration' + group_by: + $ref: '#/components/schemas/AlertSuppressionGroupBy' + missing_fields_strategy: + $ref: '#/components/schemas/AlertSuppressionMissingFieldsStrategy' + required: + - group_by + AlertSuppressionDuration: + type: object + properties: + unit: + $ref: '#/components/schemas/AlertSuppressionDurationUnit' + value: + minimum: 1 + type: integer + required: + - value + - unit + AlertSuppressionDurationUnit: + enum: + - s + - m + - h + type: string + AlertSuppressionGroupBy: + items: + type: string + maxItems: 3 + minItems: 1 + type: array + AlertSuppressionMissingFieldsStrategy: + description: >- + Describes how alerts will be generated for documents with missing + suppress by fields: + + doNotSuppress - per each document a separate alert will be created + + suppress - only alert will be created per suppress by bucket + enum: + - doNotSuppress + - suppress + type: string + AlertTag: + $ref: '#/components/schemas/NonEmptyString' + AlertTags: + items: + $ref: '#/components/schemas/AlertTag' + type: array + AlertVersion: + type: object + properties: + count: + type: integer + version: + type: integer + required: + - version + - count + AnomalyThreshold: + description: Anomaly threshold + minimum: 0 + type: integer + BuildingBlockType: + description: >- + Determines if the rule acts as a building block. By default, + building-block alerts are not displayed in the UI. These rules are used + as a foundation for other rules that do generate alerts. Its value must + be default. + type: string + BulkActionEditPayload: + anyOf: + - $ref: '#/components/schemas/BulkActionEditPayloadTags' + - $ref: '#/components/schemas/BulkActionEditPayloadIndexPatterns' + - $ref: '#/components/schemas/BulkActionEditPayloadInvestigationFields' + - $ref: '#/components/schemas/BulkActionEditPayloadTimeline' + - $ref: '#/components/schemas/BulkActionEditPayloadRuleActions' + - $ref: '#/components/schemas/BulkActionEditPayloadSchedule' + BulkActionEditPayloadIndexPatterns: + type: object + properties: + overwrite_data_views: + type: boolean + type: + enum: + - add_index_patterns + - delete_index_patterns + - set_index_patterns + type: string + value: + $ref: '#/components/schemas/IndexPatternArray' + required: + - type + - value + BulkActionEditPayloadInvestigationFields: + type: object + properties: + type: + enum: + - add_investigation_fields + - delete_investigation_fields + - set_investigation_fields + type: string + value: + $ref: '#/components/schemas/InvestigationFields' + required: + - type + - value + BulkActionEditPayloadRuleActions: + type: object + properties: + type: + enum: + - add_rule_actions + - set_rule_actions + type: string + value: + type: object + properties: + actions: + items: + $ref: '#/components/schemas/NormalizedRuleAction' + type: array + throttle: + $ref: '#/components/schemas/ThrottleForBulkActions' + required: + - actions + required: + - type + - value + BulkActionEditPayloadSchedule: + type: object + properties: + type: + enum: + - set_schedule + type: string + value: + type: object + properties: + interval: + description: >- + Interval in which the rule runs. For example, `"1h"` means the + rule runs every hour. + example: 1h + pattern: ^[1-9]\d*[smh]$ + type: string + lookback: + description: Lookback time for the rule + example: 1h + pattern: ^[1-9]\d*[smh]$ + type: string + required: + - interval + - lookback + required: + - type + - value + BulkActionEditPayloadTags: + type: object + properties: + type: + enum: + - add_tags + - delete_tags + - set_tags + type: string + value: + $ref: '#/components/schemas/RuleTagArray' + required: + - type + - value + BulkActionEditPayloadTimeline: + type: object + properties: + type: + enum: + - set_timeline + type: string + value: + type: object + properties: + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + required: + - timeline_id + - timeline_title + required: + - type + - value + BulkActionsDryRunErrCode: + enum: + - IMMUTABLE + - MACHINE_LEARNING_AUTH + - MACHINE_LEARNING_INDEX_PATTERN + - ESQL_INDEX_PATTERN + - MANUAL_RULE_RUN_FEATURE + - MANUAL_RULE_RUN_DISABLED_RULE + type: string + BulkActionSkipResult: + type: object + properties: + id: + type: string + name: + type: string + skip_reason: + $ref: '#/components/schemas/BulkEditSkipReason' + required: + - id + - skip_reason + BulkCrudRulesResponse: + items: + oneOf: + - $ref: '#/components/schemas/RuleResponse' + - $ref: '#/components/schemas/ErrorSchema' + type: array + BulkDeleteRules: + type: object + properties: + action: + enum: + - delete + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkDisableRules: + type: object + properties: + action: + enum: + - disable + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkDuplicateRules: + type: object + properties: + action: + enum: + - duplicate + type: string + duplicate: + type: object + properties: + include_exceptions: + description: Whether to copy exceptions from the original rule + type: boolean + include_expired_exceptions: + description: Whether to copy expired exceptions from the original rule + type: boolean + required: + - include_exceptions + - include_expired_exceptions + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkEditActionResponse: + type: object + properties: + attributes: + type: object + properties: + errors: + items: + $ref: '#/components/schemas/NormalizedRuleError' + type: array + results: + $ref: '#/components/schemas/BulkEditActionResults' + summary: + $ref: '#/components/schemas/BulkEditActionSummary' + required: + - results + - summary + message: + type: string + rules_count: + type: integer + status_code: + type: integer + success: + type: boolean + required: + - attributes + BulkEditActionResults: + type: object + properties: + created: + items: + $ref: '#/components/schemas/RuleResponse' + type: array + deleted: + items: + $ref: '#/components/schemas/RuleResponse' + type: array + skipped: + items: + $ref: '#/components/schemas/BulkActionSkipResult' + type: array + updated: + items: + $ref: '#/components/schemas/RuleResponse' + type: array + required: + - updated + - created + - deleted + - skipped + BulkEditActionSummary: + type: object + properties: + failed: + type: integer + skipped: + type: integer + succeeded: + type: integer + total: + type: integer + required: + - failed + - skipped + - succeeded + - total + BulkEditRules: + type: object + properties: + action: + enum: + - edit + type: string + edit: + description: Array of objects containing the edit operations + items: + $ref: '#/components/schemas/BulkActionEditPayload' + minItems: 1 + type: array + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + - edit + BulkEditSkipReason: + enum: + - RULE_NOT_MODIFIED + type: string + BulkEnableRules: + type: object + properties: + action: + enum: + - enable + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkExportActionResponse: + type: string + BulkExportRules: + type: object + properties: + action: + enum: + - export + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkManualRuleRun: + type: object + properties: + action: + enum: + - run + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + run: + type: object + properties: + end_date: + description: End date of the manual rule run + type: string + start_date: + description: Start date of the manual rule run + type: string + required: + - start_date + required: + - action + - run + ConcurrentSearches: + minimum: 1 + type: integer + DataViewId: + type: string + DefaultParams: + type: object + properties: + command: + enum: + - isolate + type: string + comment: + type: string + required: + - command + EcsMapping: + additionalProperties: + type: object + properties: + field: + type: string + value: + oneOf: + - type: string + - items: + type: string + type: array + type: object + EndpointResponseAction: + type: object + properties: + action_type_id: + enum: + - .endpoint + type: string + params: + oneOf: + - $ref: '#/components/schemas/DefaultParams' + - $ref: '#/components/schemas/ProcessesParams' + required: + - action_type_id + - params + EqlOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + event_category_override: + $ref: '#/components/schemas/EventCategoryOverride' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + tiebreaker_field: + $ref: '#/components/schemas/TiebreakerField' + timestamp_field: + $ref: '#/components/schemas/TimestampField' + EqlQueryLanguage: + enum: + - eql + type: string + EqlRequiredFields: + type: object + properties: + language: + $ref: '#/components/schemas/EqlQueryLanguage' + description: Query language to use + query: + $ref: '#/components/schemas/RuleQuery' + description: EQL query to execute + type: + description: Rule type + enum: + - eql + type: string + required: + - type + - query + - language + EqlRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/EqlRuleResponseFields' + EqlRuleCreateFields: + allOf: + - $ref: '#/components/schemas/EqlRequiredFields' + - $ref: '#/components/schemas/EqlOptionalFields' + EqlRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/EqlRuleCreateFields' + EqlRulePatchFields: + allOf: + - type: object + properties: + language: + $ref: '#/components/schemas/EqlQueryLanguage' + description: Query language to use + query: + $ref: '#/components/schemas/RuleQuery' + description: EQL query to execute + type: + description: Rule type + enum: + - eql + type: string + - $ref: '#/components/schemas/EqlOptionalFields' + EqlRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/EqlRulePatchFields' + EqlRuleResponseFields: + allOf: + - $ref: '#/components/schemas/EqlRequiredFields' + - $ref: '#/components/schemas/EqlOptionalFields' + EqlRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/EqlRuleCreateFields' + ErrorSchema: + additionalProperties: false + type: object + properties: + error: + type: object + properties: + message: + type: string + status_code: + minimum: 400 + type: integer + required: + - status_code + - message + id: + type: string + item_id: + minLength: 1 + type: string + list_id: + minLength: 1 + type: string + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + required: + - error + EsqlQueryLanguage: + enum: + - esql + type: string + EsqlRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/EsqlRuleResponseFields' + EsqlRuleCreateFields: + allOf: + - $ref: '#/components/schemas/EsqlRuleOptionalFields' + - $ref: '#/components/schemas/EsqlRuleRequiredFields' + EsqlRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/EsqlRuleCreateFields' + EsqlRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + EsqlRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + language: + $ref: '#/components/schemas/EsqlQueryLanguage' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + query: + $ref: '#/components/schemas/RuleQuery' + description: ESQL query to execute + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + type: + description: Rule type + enum: + - esql + type: string + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/EsqlRuleOptionalFields' + EsqlRuleRequiredFields: + type: object + properties: + language: + $ref: '#/components/schemas/EsqlQueryLanguage' + query: + $ref: '#/components/schemas/RuleQuery' + description: ESQL query to execute + type: + description: Rule type + enum: + - esql + type: string + required: + - type + - language + - query + EsqlRuleResponseFields: + allOf: + - $ref: '#/components/schemas/EsqlRuleOptionalFields' + - $ref: '#/components/schemas/EsqlRuleRequiredFields' + EsqlRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/EsqlRuleCreateFields' + EventCategoryOverride: + type: string + ExceptionListType: + description: The exception type + enum: + - detection + - rule_default + - endpoint + - endpoint_trusted_apps + - endpoint_events + - endpoint_host_isolation_exceptions + - endpoint_blocklists + type: string + ExternalRuleSource: + description: >- + Type of rule source for externally sourced rules, i.e. rules that have + an external source, such as the Elastic Prebuilt rules repo. + type: object + properties: + is_customized: + $ref: '#/components/schemas/IsExternalRuleCustomized' + type: + enum: + - external + type: string + required: + - type + - is_customized + FindRulesSortField: + enum: + - created_at + - createdAt + - enabled + - execution_summary.last_execution.date + - execution_summary.last_execution.metrics.execution_gap_duration_s + - execution_summary.last_execution.metrics.total_indexing_duration_ms + - execution_summary.last_execution.metrics.total_search_duration_ms + - execution_summary.last_execution.status + - name + - risk_score + - riskScore + - severity + - updated_at + - updatedAt + type: string + HistoryWindowStart: + $ref: '#/components/schemas/NonEmptyString' + IndexMigrationStatus: + type: object + properties: + index: + $ref: '#/components/schemas/NonEmptyString' + is_outdated: + type: boolean + migrations: + items: + $ref: '#/components/schemas/MigrationStatus' + type: array + signal_versions: + items: + $ref: '#/components/schemas/AlertVersion' + type: array + version: + type: integer + required: + - index + - version + - signal_versions + - migrations + - is_outdated + IndexPatternArray: + items: + type: string + type: array + InternalRuleSource: + description: >- + Type of rule source for internally sourced rules, i.e. created within + the Kibana apps. + type: object + properties: + type: + enum: + - internal + type: string + required: + - type + InvestigationFields: + description: > + Schema for fields relating to investigation fields. These are user + defined fields we use to highlight + + in various features in the UI such as alert details flyout and + exceptions auto-population from alert. + + Added in PR #163235 + + Right now we only have a single field but anticipate adding more related + fields to store various + + configuration states such as `override` - where a user might say if they + want only these fields to + + display, or if they want these fields + the fields we select. When + expanding this field, it may look + + something like: + + ```typescript + + const investigationFields = z.object({ + field_names: NonEmptyArray(NonEmptyString), + override: z.boolean().optional(), + }); + + ``` + type: object + properties: + field_names: + items: + $ref: '#/components/schemas/NonEmptyString' + minItems: 1 + type: array + required: + - field_names + InvestigationGuide: + description: Notes to help investigate alerts produced by the rule. + type: string + IsExternalRuleCustomized: + description: >- + Determines whether an external/prebuilt rule has been customized by the + user (i.e. any of its fields have been modified and diverged from the + base value). + type: boolean + IsRuleEnabled: + description: Determines whether the rule is enabled. + type: boolean + IsRuleImmutable: + deprecated: true + description: >- + This field determines whether the rule is a prebuilt Elastic rule. It + will be replaced with the `rule_source` field. + type: boolean + ItemsPerSearch: + minimum: 1 + type: integer + KqlQueryLanguage: + enum: + - kuery + - lucene + type: string + MachineLearningJobId: + description: Machine learning job ID + oneOf: + - type: string + - items: + type: string + minItems: 1 + type: array + MachineLearningRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/MachineLearningRuleResponseFields' + MachineLearningRuleCreateFields: + allOf: + - $ref: '#/components/schemas/MachineLearningRuleRequiredFields' + - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' + MachineLearningRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/MachineLearningRuleCreateFields' + MachineLearningRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + MachineLearningRulePatchFields: + allOf: + - type: object + properties: + anomaly_threshold: + $ref: '#/components/schemas/AnomalyThreshold' + machine_learning_job_id: + $ref: '#/components/schemas/MachineLearningJobId' + type: + description: Rule type + enum: + - machine_learning + type: string + - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' + MachineLearningRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/MachineLearningRulePatchFields' + MachineLearningRuleRequiredFields: + type: object + properties: + anomaly_threshold: + $ref: '#/components/schemas/AnomalyThreshold' + machine_learning_job_id: + $ref: '#/components/schemas/MachineLearningJobId' + type: + description: Rule type + enum: + - machine_learning + type: string + required: + - type + - machine_learning_job_id + - anomaly_threshold + MachineLearningRuleResponseFields: + allOf: + - $ref: '#/components/schemas/MachineLearningRuleRequiredFields' + - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' + MachineLearningRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/MachineLearningRuleCreateFields' + MaxSignals: + minimum: 1 + type: integer + MigrationCleanupResult: + type: object + properties: + destinationIndex: + type: string + error: + type: object + properties: + message: + type: string + status_code: + type: integer + required: + - message + - status_code + id: + type: string + sourceIndex: + type: string + status: + enum: + - success + - failure + - pending + type: string + updated: + format: date-time + type: string + version: + type: string + required: + - id + - destinationIndex + - status + - sourceIndex + - version + - updated + MigrationFinalizationResult: + type: object + properties: + completed: + type: boolean + destinationIndex: + type: string + error: + type: object + properties: + message: + type: string + status_code: + type: integer + required: + - message + - status_code + id: + type: string + sourceIndex: + type: string + status: + enum: + - success + - failure + - pending + type: string + updated: + format: date-time + type: string + version: + type: string + required: + - id + - completed + - destinationIndex + - status + - sourceIndex + - version + - updated + MigrationStatus: + type: object + properties: + id: + $ref: '#/components/schemas/NonEmptyString' + status: + enum: + - success + - failure + - pending + type: string + updated: + format: date-time + type: string + version: + type: integer + required: + - id + - status + - version + - updated + NewTermsFields: + items: + type: string + maxItems: 3 + minItems: 1 + type: array + NewTermsRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/NewTermsRuleResponseFields' + NewTermsRuleCreateFields: + allOf: + - $ref: '#/components/schemas/NewTermsRuleRequiredFields' + - $ref: '#/components/schemas/NewTermsRuleOptionalFields' + - $ref: '#/components/schemas/NewTermsRuleDefaultableFields' + NewTermsRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/NewTermsRuleCreateFields' + NewTermsRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + NewTermsRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + NewTermsRulePatchFields: + allOf: + - type: object + properties: + history_window_start: + $ref: '#/components/schemas/HistoryWindowStart' + new_terms_fields: + $ref: '#/components/schemas/NewTermsFields' + query: + $ref: '#/components/schemas/RuleQuery' + type: + description: Rule type + enum: + - new_terms + type: string + - $ref: '#/components/schemas/NewTermsRuleOptionalFields' + - $ref: '#/components/schemas/NewTermsRuleDefaultableFields' + NewTermsRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/NewTermsRulePatchFields' + NewTermsRuleRequiredFields: + type: object + properties: + history_window_start: + $ref: '#/components/schemas/HistoryWindowStart' + new_terms_fields: + $ref: '#/components/schemas/NewTermsFields' + query: + $ref: '#/components/schemas/RuleQuery' + type: + description: Rule type + enum: + - new_terms + type: string + required: + - type + - query + - new_terms_fields + - history_window_start + NewTermsRuleResponseFields: + allOf: + - $ref: '#/components/schemas/NewTermsRuleRequiredFields' + - $ref: '#/components/schemas/NewTermsRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + required: + - language + NewTermsRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/NewTermsRuleCreateFields' + NonEmptyString: + description: A string that does not contain only whitespace characters + format: nonempty + minLength: 1 + type: string + NormalizedRuleAction: + additionalProperties: false + type: object + properties: + alerts_filter: + $ref: '#/components/schemas/RuleActionAlertsFilter' + frequency: + $ref: '#/components/schemas/RuleActionFrequency' + group: + $ref: '#/components/schemas/RuleActionGroup' + id: + $ref: '#/components/schemas/RuleActionId' + params: + $ref: '#/components/schemas/RuleActionParams' + required: + - id + - params + NormalizedRuleError: + type: object + properties: + err_code: + $ref: '#/components/schemas/BulkActionsDryRunErrCode' + message: + type: string + rules: + items: + $ref: '#/components/schemas/RuleDetailsInError' + type: array + status_code: + type: integer + required: + - message + - status_code + - rules + OsqueryParams: + type: object + properties: + ecs_mapping: + $ref: '#/components/schemas/EcsMapping' + pack_id: + type: string + queries: + items: + $ref: '#/components/schemas/OsqueryQuery' + type: array + query: + type: string + saved_query_id: + type: string + timeout: + type: number + OsqueryQuery: + type: object + properties: + ecs_mapping: + $ref: '#/components/schemas/EcsMapping' + id: + description: Query ID + type: string + platform: + type: string + query: + description: Query to run + type: string + removed: + type: boolean + snapshot: + type: boolean + version: + description: Query version + type: string + required: + - id + - query + OsqueryResponseAction: + type: object + properties: + action_type_id: + enum: + - .osquery + type: string + params: + $ref: '#/components/schemas/OsqueryParams' + required: + - action_type_id + - params + PlatformErrorResponse: + type: object + properties: + error: + type: string + message: + type: string + statusCode: + type: integer + required: + - statusCode + - error + - message + ProcessesParams: + type: object + properties: + command: + enum: + - kill-process + - suspend-process + type: string + comment: + type: string + config: + type: object + properties: + field: + description: Field to use instead of process.pid + type: string + overwrite: + default: true + description: Whether to overwrite field with process.pid + type: boolean + required: + - field + required: + - command + - config + QueryRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/QueryRuleResponseFields' + QueryRuleCreateFields: + allOf: + - $ref: '#/components/schemas/QueryRuleRequiredFields' + - $ref: '#/components/schemas/QueryRuleOptionalFields' + - $ref: '#/components/schemas/QueryRuleDefaultableFields' + QueryRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/QueryRuleCreateFields' + QueryRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + query: + $ref: '#/components/schemas/RuleQuery' + QueryRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + saved_id: + $ref: '#/components/schemas/SavedQueryId' + QueryRulePatchFields: + allOf: + - type: object + properties: + type: + description: Rule type + enum: + - query + type: string + - $ref: '#/components/schemas/QueryRuleOptionalFields' + - $ref: '#/components/schemas/QueryRuleDefaultableFields' + QueryRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/QueryRulePatchFields' + QueryRuleRequiredFields: + type: object + properties: + type: + description: Rule type + enum: + - query + type: string + required: + - type + QueryRuleResponseFields: + allOf: + - $ref: '#/components/schemas/QueryRuleRequiredFields' + - $ref: '#/components/schemas/QueryRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + query: + $ref: '#/components/schemas/RuleQuery' + required: + - query + - language + QueryRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/QueryRuleCreateFields' + RelatedIntegration: + description: > + Related integration is a potential dependency of a rule. It's assumed + that if the user installs + + one of the related integrations of a rule, the rule might start to work + properly because it will + + have source events (generated by this integration) potentially matching + the rule's query. + + + NOTE: Proper work is not guaranteed, because a related integration, if + installed, can be + + configured differently or generate data that is not necessarily relevant + for this rule. + + + Related integration is a combination of a Fleet package and (optionally) + one of the + + package's "integrations" that this package contains. It is represented + by 3 properties: + + + - `package`: name of the package (required, unique id) + + - `version`: version of the package (required, semver-compatible) + + - `integration`: name of the integration of this package (optional, id + within the package) + + + There are Fleet packages like `windows` that contain only one + integration; in this case, + + `integration` should be unspecified. There are also packages like `aws` + and `azure` that contain + + several integrations; in this case, `integration` should be specified. + + + @example + + const x: RelatedIntegration = { + package: 'windows', + version: '1.5.x', + }; + + + @example + + const x: RelatedIntegration = { + package: 'azure', + version: '~1.1.6', + integration: 'activitylogs', + }; + type: object + properties: + integration: + $ref: '#/components/schemas/NonEmptyString' + package: + $ref: '#/components/schemas/NonEmptyString' + version: + $ref: '#/components/schemas/NonEmptyString' + required: + - package + - version + RelatedIntegrationArray: + items: + $ref: '#/components/schemas/RelatedIntegration' + type: array + RequiredField: + description: > + Describes an Elasticsearch field that is needed for the rule to + function. + + + Almost all types of Security rules check source event documents for a + match to some kind of + + query or filter. If a document has certain field with certain values, + then it's a match and + + the rule will generate an alert. + + + Required field is an event field that must be present in the source + indices of a given rule. + + + @example + + const standardEcsField: RequiredField = { + name: 'event.action', + type: 'keyword', + ecs: true, + }; + + + @example + + const nonEcsField: RequiredField = { + name: 'winlog.event_data.AttributeLDAPDisplayName', + type: 'keyword', + ecs: false, + }; + type: object + properties: + ecs: + description: Whether the field is an ECS field + type: boolean + name: + $ref: '#/components/schemas/NonEmptyString' + description: Name of an Elasticsearch field + type: + $ref: '#/components/schemas/NonEmptyString' + description: Type of the Elasticsearch field + required: + - name + - type + - ecs + RequiredFieldArray: + items: + $ref: '#/components/schemas/RequiredField' + type: array + RequiredFieldInput: + description: >- + Input parameters to create a RequiredField. Does not include the `ecs` + field, because `ecs` is calculated on the backend based on the field + name and type. + type: object + properties: + name: + $ref: '#/components/schemas/NonEmptyString' + description: Name of an Elasticsearch field + type: + $ref: '#/components/schemas/NonEmptyString' + description: Type of an Elasticsearch field + required: + - name + - type + ResponseAction: + oneOf: + - $ref: '#/components/schemas/OsqueryResponseAction' + - $ref: '#/components/schemas/EndpointResponseAction' + ResponseFields: + type: object + properties: + created_at: + format: date-time + type: string + created_by: + type: string + execution_summary: + $ref: '#/components/schemas/RuleExecutionSummary' + id: + $ref: '#/components/schemas/RuleObjectId' + immutable: + $ref: '#/components/schemas/IsRuleImmutable' + required_fields: + $ref: '#/components/schemas/RequiredFieldArray' + revision: + minimum: 0 + type: integer + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_source: + $ref: '#/components/schemas/RuleSource' + updated_at: + format: date-time + type: string + updated_by: + type: string + required: + - id + - rule_id + - immutable + - rule_source + - updated_at + - updated_by + - created_at + - created_by + - revision + - related_integrations + - required_fields + RiskScore: + description: Risk score (0 to 100) + maximum: 100 + minimum: 0 + type: integer + RiskScoreMapping: + description: >- + Overrides generated alerts' risk_score with a value from the source + event + items: + type: object + properties: + field: + type: string + operator: + enum: + - equals + type: string + risk_score: + $ref: '#/components/schemas/RiskScore' + value: + type: string + required: + - field + - operator + - value + type: array + RuleAction: + type: object + properties: + action_type_id: + description: The action type used for sending notifications. + type: string + alerts_filter: + $ref: '#/components/schemas/RuleActionAlertsFilter' + frequency: + $ref: '#/components/schemas/RuleActionFrequency' + group: + $ref: '#/components/schemas/RuleActionGroup' + id: + $ref: '#/components/schemas/RuleActionId' + params: + $ref: '#/components/schemas/RuleActionParams' + uuid: + $ref: '#/components/schemas/NonEmptyString' + required: + - action_type_id + - id + - params + RuleActionAlertsFilter: + additionalProperties: true + type: object + RuleActionFrequency: + description: >- + The action frequency defines when the action runs (for example, only on + rule execution or at specific time intervals). + type: object + properties: + notifyWhen: + $ref: '#/components/schemas/RuleActionNotifyWhen' + summary: + description: >- + Action summary indicates whether we will send a summary notification + about all the generate alerts or notification per individual alert + type: boolean + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + nullable: true + required: + - summary + - notifyWhen + - throttle + RuleActionGroup: + description: >- + Optionally groups actions by use cases. Use `default` for alert + notifications. + type: string + RuleActionId: + description: The connector ID. + type: string + RuleActionNotifyWhen: + description: >- + The condition for throttling the notification: `onActionGroupChange`, + `onActiveAlert`, or `onThrottleInterval` + enum: + - onActiveAlert + - onThrottleInterval + - onActionGroupChange + type: string + RuleActionParams: + additionalProperties: true + description: >- + Object containing the allowed connector fields, which varies according + to the connector type. + type: object + RuleActionThrottle: + description: Defines how often rule actions are taken. + oneOf: + - enum: + - no_actions + - rule + type: string + - description: Time interval in seconds, minutes, hours, or days. + example: 1h + pattern: ^[1-9]\d*[smhd]$ + type: string + RuleAuthorArray: + items: + type: string + type: array + RuleCreateProps: + anyOf: + - $ref: '#/components/schemas/EqlRuleCreateProps' + - $ref: '#/components/schemas/QueryRuleCreateProps' + - $ref: '#/components/schemas/SavedQueryRuleCreateProps' + - $ref: '#/components/schemas/ThresholdRuleCreateProps' + - $ref: '#/components/schemas/ThreatMatchRuleCreateProps' + - $ref: '#/components/schemas/MachineLearningRuleCreateProps' + - $ref: '#/components/schemas/NewTermsRuleCreateProps' + - $ref: '#/components/schemas/EsqlRuleCreateProps' + discriminator: + propertyName: type + RuleDescription: + minLength: 1 + type: string + RuleDetailsInError: + type: object + properties: + id: + type: string + name: + type: string + required: + - id + RuleExceptionList: + type: object + properties: + id: + $ref: '#/components/schemas/NonEmptyString' + description: ID of the exception container + list_id: + $ref: '#/components/schemas/NonEmptyString' + description: List ID of the exception container + namespace_type: + description: Determines the exceptions validity in rule's Kibana space + enum: + - agnostic + - single + type: string + type: + $ref: '#/components/schemas/ExceptionListType' + required: + - id + - list_id + - type + - namespace_type + RuleExecutionMetrics: + type: object + properties: + execution_gap_duration_s: + description: Duration in seconds of execution gap + minimum: 0 + type: integer + total_enrichment_duration_ms: + description: >- + Total time spent enriching documents during current rule execution + cycle + minimum: 0 + type: integer + total_indexing_duration_ms: + description: >- + Total time spent indexing documents during current rule execution + cycle + minimum: 0 + type: integer + total_search_duration_ms: + description: >- + Total time spent performing ES searches as measured by Kibana; + includes network latency and time spent serializing/deserializing + request/response + minimum: 0 + type: integer + RuleExecutionStatus: + description: >- + Custom execution status of Security rules that is different from the + status used in the Alerting Framework. We merge our custom status with + the Framework's status to determine the resulting status of a rule. + + - going to run - @deprecated Replaced by the 'running' status but left + for backwards compatibility with rule execution events already written + to Event Log in the prior versions of Kibana. Don't use when writing + rule status changes. + + - running - Rule execution started but not reached any intermediate or + final status. + + - partial failure - Rule can partially fail for various reasons either + in the middle of an execution (in this case we update its status right + away) or in the end of it. So currently this status can be both + intermediate and final at the same time. A typical reason for a partial + failure: not all the indices that the rule searches over actually exist. + + - failed - Rule failed to execute due to unhandled exception or a reason + defined in the business logic of its executor function. + + - succeeded - Rule executed successfully without any issues. Note: this + status is just an indication of a rule's "health". The rule might or + might not generate any alerts despite of it. + enum: + - going to run + - running + - partial failure + - failed + - succeeded + type: string + RuleExecutionStatusOrder: + type: integer + RuleExecutionSummary: + type: object + properties: + last_execution: + type: object + properties: + date: + description: Date of the last execution + format: date-time + type: string + message: + type: string + metrics: + $ref: '#/components/schemas/RuleExecutionMetrics' + status: + $ref: '#/components/schemas/RuleExecutionStatus' + description: Status of the last execution + status_order: + $ref: '#/components/schemas/RuleExecutionStatusOrder' + required: + - date + - status + - status_order + - message + - metrics + required: + - last_execution + RuleFalsePositiveArray: + items: + type: string + type: array + RuleFilterArray: + items: {} + type: array + RuleInterval: + description: >- + Frequency of rule execution, using a date math range. For example, "1h" + means the rule runs every hour. Defaults to 5m (5 minutes). + type: string + RuleIntervalFrom: + description: >- + Time from which data is analyzed each time the rule runs, using a date + math range. For example, now-4200s means the rule analyzes data from 70 + minutes before its start time. Defaults to now-6m (analyzes data from 6 + minutes before the start time). + format: date-math + type: string + RuleIntervalTo: + type: string + RuleLicense: + description: The rule's license. + type: string + RuleMetadata: + additionalProperties: true + type: object + RuleName: + minLength: 1 + type: string + RuleNameOverride: + description: Sets the source field for the alert's signal.rule.name value + type: string + RuleObjectId: + $ref: '#/components/schemas/UUID' + RulePatchProps: + anyOf: + - $ref: '#/components/schemas/EqlRulePatchProps' + - $ref: '#/components/schemas/QueryRulePatchProps' + - $ref: '#/components/schemas/SavedQueryRulePatchProps' + - $ref: '#/components/schemas/ThresholdRulePatchProps' + - $ref: '#/components/schemas/ThreatMatchRulePatchProps' + - $ref: '#/components/schemas/MachineLearningRulePatchProps' + - $ref: '#/components/schemas/NewTermsRulePatchProps' + - $ref: '#/components/schemas/EsqlRulePatchProps' + RulePreviewLoggedRequest: + type: object + properties: + description: + $ref: '#/components/schemas/NonEmptyString' + duration: + type: integer + request: + $ref: '#/components/schemas/NonEmptyString' + required: + - request + RulePreviewLogs: + type: object + properties: + duration: + description: Execution duration in milliseconds + type: integer + errors: + items: + $ref: '#/components/schemas/NonEmptyString' + type: array + requests: + items: + $ref: '#/components/schemas/RulePreviewLoggedRequest' + type: array + startedAt: + $ref: '#/components/schemas/NonEmptyString' + warnings: + items: + $ref: '#/components/schemas/NonEmptyString' + type: array + required: + - errors + - warnings + - duration + RulePreviewParams: + type: object + properties: + invocationCount: + type: integer + timeframeEnd: + format: date-time + type: string + required: + - invocationCount + - timeframeEnd + RuleQuery: + type: string + RuleReferenceArray: + items: + type: string + type: array + RuleResponse: + anyOf: + - $ref: '#/components/schemas/EqlRule' + - $ref: '#/components/schemas/QueryRule' + - $ref: '#/components/schemas/SavedQueryRule' + - $ref: '#/components/schemas/ThresholdRule' + - $ref: '#/components/schemas/ThreatMatchRule' + - $ref: '#/components/schemas/MachineLearningRule' + - $ref: '#/components/schemas/NewTermsRule' + - $ref: '#/components/schemas/EsqlRule' + discriminator: + propertyName: type + RuleSignatureId: + description: Could be any string, not necessarily a UUID + type: string + RuleSource: + description: >- + Discriminated union that determines whether the rule is internally + sourced (created within the Kibana app) or has an external source, such + as the Elastic Prebuilt rules repo. + discriminator: + propertyName: type + oneOf: + - $ref: '#/components/schemas/ExternalRuleSource' + - $ref: '#/components/schemas/InternalRuleSource' + RuleTagArray: + description: >- + String array containing words and phrases to help categorize, filter, + and search rules. Defaults to an empty array. + items: + type: string + type: array + RuleUpdateProps: + anyOf: + - $ref: '#/components/schemas/EqlRuleUpdateProps' + - $ref: '#/components/schemas/QueryRuleUpdateProps' + - $ref: '#/components/schemas/SavedQueryRuleUpdateProps' + - $ref: '#/components/schemas/ThresholdRuleUpdateProps' + - $ref: '#/components/schemas/ThreatMatchRuleUpdateProps' + - $ref: '#/components/schemas/MachineLearningRuleUpdateProps' + - $ref: '#/components/schemas/NewTermsRuleUpdateProps' + - $ref: '#/components/schemas/EsqlRuleUpdateProps' + discriminator: + propertyName: type + RuleVersion: + description: The rule's version number. + minimum: 1 + type: integer + SavedObjectResolveAliasPurpose: + enum: + - savedObjectConversion + - savedObjectImport + type: string + SavedObjectResolveAliasTargetId: + type: string + SavedObjectResolveOutcome: + enum: + - exactMatch + - aliasMatch + - conflict + type: string + SavedQueryId: + type: string + SavedQueryRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/SavedQueryRuleResponseFields' + SavedQueryRuleCreateFields: + allOf: + - $ref: '#/components/schemas/SavedQueryRuleRequiredFields' + - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' + - $ref: '#/components/schemas/SavedQueryRuleDefaultableFields' + SavedQueryRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/SavedQueryRuleCreateFields' + SavedQueryRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + SavedQueryRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + query: + $ref: '#/components/schemas/RuleQuery' + SavedQueryRulePatchFields: + allOf: + - type: object + properties: + saved_id: + $ref: '#/components/schemas/SavedQueryId' + type: + description: Rule type + enum: + - saved_query + type: string + - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' + - $ref: '#/components/schemas/SavedQueryRuleDefaultableFields' + SavedQueryRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/SavedQueryRulePatchFields' + SavedQueryRuleRequiredFields: + type: object + properties: + saved_id: + $ref: '#/components/schemas/SavedQueryId' + type: + description: Rule type + enum: + - saved_query + type: string + required: + - type + - saved_id + SavedQueryRuleResponseFields: + allOf: + - $ref: '#/components/schemas/SavedQueryRuleRequiredFields' + - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + required: + - language + SavedQueryRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/SavedQueryRuleCreateFields' + SetAlertsStatusByIds: + type: object + properties: + signal_ids: + items: + $ref: '#/components/schemas/NonEmptyString' + minItems: 1 + type: array + status: + $ref: '#/components/schemas/AlertStatus' + required: + - signal_ids + - status + SetAlertsStatusByQuery: + type: object + properties: + conflicts: + default: abort + enum: + - abort + - proceed + type: string + query: + additionalProperties: true + type: object + status: + $ref: '#/components/schemas/AlertStatus' + required: + - query + - status + SetAlertTags: + type: object + properties: + tags_to_add: + $ref: '#/components/schemas/AlertTags' + tags_to_remove: + $ref: '#/components/schemas/AlertTags' + required: + - tags_to_add + - tags_to_remove + SetupGuide: + type: string + Severity: + description: Severity of the rule + enum: + - low + - medium + - high + - critical + type: string + SeverityMapping: + description: Overrides generated alerts' severity with values from the source event + items: + type: object + properties: + field: + type: string + operator: + enum: + - equals + type: string + severity: + $ref: '#/components/schemas/Severity' + value: + type: string + required: + - field + - operator + - severity + - value + type: array + SiemErrorResponse: + type: object + properties: + message: + type: string + status_code: + type: integer + required: + - status_code + - message + SkippedAlertsIndexMigration: + type: object + properties: + index: + type: string + required: + - index + SortOrder: + enum: + - asc + - desc + type: string + Threat: + type: object + properties: + framework: + description: Relevant attack framework + type: string + tactic: + $ref: '#/components/schemas/ThreatTactic' + technique: + description: Array containing information on the attack techniques (optional) + items: + $ref: '#/components/schemas/ThreatTechnique' + type: array + required: + - framework + - tactic + ThreatArray: + items: + $ref: '#/components/schemas/Threat' + type: array + ThreatFilters: + items: + description: >- + Query and filter context array used to filter documents from the + Elasticsearch index containing the threat values + type: array + ThreatIndex: + items: + type: string + type: array + ThreatIndicatorPath: + description: >- + Defines the path to the threat indicator in the indicator documents + (optional) + type: string + ThreatMapping: + items: + type: object + properties: + entries: + items: + type: object + properties: + field: + $ref: '#/components/schemas/NonEmptyString' + type: + enum: + - mapping + type: string + value: + $ref: '#/components/schemas/NonEmptyString' + required: + - field + - type + - value + type: array + required: + - entries + minItems: 1 + type: array + ThreatMatchRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/ThreatMatchRuleResponseFields' + ThreatMatchRuleCreateFields: + allOf: + - $ref: '#/components/schemas/ThreatMatchRuleRequiredFields' + - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' + - $ref: '#/components/schemas/ThreatMatchRuleDefaultableFields' + ThreatMatchRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/ThreatMatchRuleCreateFields' + ThreatMatchRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + ThreatMatchRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + concurrent_searches: + $ref: '#/components/schemas/ConcurrentSearches' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + items_per_search: + $ref: '#/components/schemas/ItemsPerSearch' + saved_id: + $ref: '#/components/schemas/SavedQueryId' + threat_filters: + $ref: '#/components/schemas/ThreatFilters' + threat_indicator_path: + $ref: '#/components/schemas/ThreatIndicatorPath' + threat_language: + $ref: '#/components/schemas/KqlQueryLanguage' + ThreatMatchRulePatchFields: + allOf: + - type: object + properties: + query: + $ref: '#/components/schemas/RuleQuery' + threat_index: + $ref: '#/components/schemas/ThreatIndex' + threat_mapping: + $ref: '#/components/schemas/ThreatMapping' + threat_query: + $ref: '#/components/schemas/ThreatQuery' + type: + description: Rule type + enum: + - threat_match + type: string + - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' + - $ref: '#/components/schemas/ThreatMatchRuleDefaultableFields' + ThreatMatchRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/ThreatMatchRulePatchFields' + ThreatMatchRuleRequiredFields: + type: object + properties: + query: + $ref: '#/components/schemas/RuleQuery' + threat_index: + $ref: '#/components/schemas/ThreatIndex' + threat_mapping: + $ref: '#/components/schemas/ThreatMapping' + threat_query: + $ref: '#/components/schemas/ThreatQuery' + type: + description: Rule type + enum: + - threat_match + type: string + required: + - type + - query + - threat_query + - threat_mapping + - threat_index + ThreatMatchRuleResponseFields: + allOf: + - $ref: '#/components/schemas/ThreatMatchRuleRequiredFields' + - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + required: + - language + ThreatMatchRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/ThreatMatchRuleCreateFields' + ThreatQuery: + description: Query to run + type: string + ThreatSubtechnique: + type: object + properties: + id: + description: Subtechnique ID + type: string + name: + description: Subtechnique name + type: string + reference: + description: Subtechnique reference + type: string + required: + - id + - name + - reference + ThreatTactic: + type: object + properties: + id: + description: Tactic ID + type: string + name: + description: Tactic name + type: string + reference: + description: Tactic reference + type: string + required: + - id + - name + - reference + ThreatTechnique: + type: object + properties: + id: + description: Technique ID + type: string + name: + description: Technique name + type: string + reference: + description: Technique reference + type: string + subtechnique: + description: Array containing more specific information on the attack technique + items: + $ref: '#/components/schemas/ThreatSubtechnique' + type: array + required: + - id + - name + - reference + Threshold: + type: object + properties: + cardinality: + $ref: '#/components/schemas/ThresholdCardinality' + field: + $ref: '#/components/schemas/ThresholdField' + value: + $ref: '#/components/schemas/ThresholdValue' + required: + - field + - value + ThresholdAlertSuppression: + type: object + properties: + duration: + $ref: '#/components/schemas/AlertSuppressionDuration' + required: + - duration + ThresholdCardinality: + items: + type: object + properties: + field: + type: string + value: + minimum: 0 + type: integer + required: + - field + - value + type: array + ThresholdField: + description: Field to aggregate on + oneOf: + - type: string + - items: + type: string + type: array + ThresholdRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/ThresholdRuleResponseFields' + ThresholdRuleCreateFields: + allOf: + - $ref: '#/components/schemas/ThresholdRuleRequiredFields' + - $ref: '#/components/schemas/ThresholdRuleOptionalFields' + - $ref: '#/components/schemas/ThresholdRuleDefaultableFields' + ThresholdRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/ThresholdRuleCreateFields' + ThresholdRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + ThresholdRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/ThresholdAlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + saved_id: + $ref: '#/components/schemas/SavedQueryId' + ThresholdRulePatchFields: + allOf: + - type: object + properties: + query: + $ref: '#/components/schemas/RuleQuery' + threshold: + $ref: '#/components/schemas/Threshold' + type: + description: Rule type + enum: + - threshold + type: string + - $ref: '#/components/schemas/ThresholdRuleOptionalFields' + - $ref: '#/components/schemas/ThresholdRuleDefaultableFields' + ThresholdRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/ThresholdRulePatchFields' + ThresholdRuleRequiredFields: + type: object + properties: + query: + $ref: '#/components/schemas/RuleQuery' + threshold: + $ref: '#/components/schemas/Threshold' + type: + description: Rule type + enum: + - threshold + type: string + required: + - type + - query + - threshold + ThresholdRuleResponseFields: + allOf: + - $ref: '#/components/schemas/ThresholdRuleRequiredFields' + - $ref: '#/components/schemas/ThresholdRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + required: + - language + ThresholdRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/ThresholdRuleCreateFields' + ThresholdValue: + description: Threshold value + minimum: 1 + type: integer + ThrottleForBulkActions: + description: >- + The condition for throttling the notification: 'rule', 'no_actions', or + time duration + enum: + - rule + - 1h + - 1d + - 7d + type: string + TiebreakerField: + description: Sets a secondary field for sorting events + type: string + TimelineTemplateId: + description: Timeline template ID + type: string + TimelineTemplateTitle: + description: Timeline template title + type: string + TimestampField: + description: Contains the event timestamp used for sorting a sequence of events + type: string + TimestampOverride: + description: Sets the time field used to query indices + type: string + TimestampOverrideFallbackDisabled: + description: Disables the fallback to the event's @timestamp field + type: boolean + UUID: + description: A universally unique identifier + format: uuid + type: string + WarningSchema: + type: object + properties: + actionPath: + type: string + buttonLabel: + type: string + message: + type: string + type: + type: string + required: + - type + - message + - actionPath + securitySchemes: + BasicAuth: + scheme: basic + type: http +security: + - BasicAuth: [] +tags: + - description: > + Use the detections APIs to create and manage detection rules. Detection + rules search events and external alerts sent to Elastic Security and + generate detection alerts from any hits. Alerts are displayed on the + **Alerts** page and can be assigned and triaged, using the alert status to + mark them as open, closed, or acknowledged. + + > warn + + > If the API key used for authorization has different privileges than the + key that created or most recently updated a rule, the rule behavior might + change. + + + > If the API key that created a rule is deleted, or the user that created + the rule becomes inactive, the rule will stop running. + name: Security Detections API + x-displayName: Security detections diff --git a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_endpoint_management_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_endpoint_management_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/docs/openapi/ess/security_solution_endpoint_management_api_2023_10_31.bundled.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_endpoint_management_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml new file mode 100644 index 0000000000000..1db469620f680 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml @@ -0,0 +1,1292 @@ +openapi: 3.0.3 +info: + description: '' + title: Security Entity Analytics API (Elastic Cloud and self-hosted) + version: '2023-10-31' +servers: + - url: http://{kibana_host}:{port} + variables: + kibana_host: + default: localhost + port: + default: '5601' +paths: + /api/asset_criticality: + delete: + description: Delete the asset criticality record for a specific entity. + operationId: DeleteAssetCriticalityRecord + parameters: + - description: The ID value of the asset. + in: query + name: id_value + required: true + schema: + type: string + - description: The field representing the ID. + example: host.name + in: query + name: id_field + required: true + schema: + $ref: '#/components/schemas/IdField' + - description: If 'wait_for' the request will wait for the index refresh. + in: query + name: refresh + required: false + schema: + enum: + - wait_for + type: string + responses: + '200': + content: + application/json: + schema: + type: object + properties: + deleted: + description: >- + True if the record was deleted or false if the record did + not exist. + type: boolean + record: + $ref: '#/components/schemas/AssetCriticalityRecord' + description: The deleted record if it existed. + required: + - deleted + description: Successful response + '400': + description: Invalid request + summary: Delete an asset criticality record + tags: + - Security Entity Analytics API + get: + description: Get the asset criticality record for a specific entity. + operationId: GetAssetCriticalityRecord + parameters: + - description: The ID value of the asset. + in: query + name: id_value + required: true + schema: + type: string + - description: The field representing the ID. + example: host.name + in: query + name: id_field + required: true + schema: + $ref: '#/components/schemas/IdField' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AssetCriticalityRecord' + description: Successful response + '400': + description: Invalid request + '404': + description: Criticality record not found + summary: Get an asset criticality record + tags: + - Security Entity Analytics API + post: + description: > + Create or update an asset criticality record for a specific entity. + + + If a record already exists for the specified entity, that record is + overwritten with the specified value. If a record doesn't exist for the + specified entity, a new record is created. + operationId: CreateAssetCriticalityRecord + requestBody: + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/CreateAssetCriticalityRecord' + - type: object + properties: + refresh: + description: >- + If 'wait_for' the request will wait for the index + refresh. + enum: + - wait_for + type: string + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AssetCriticalityRecord' + description: Successful response + '400': + description: Invalid request + summary: Upsert an asset criticality record + tags: + - Security Entity Analytics API + /api/asset_criticality/bulk: + post: + description: > + Bulk upsert up to 1000 asset criticality records. + + + If asset criticality records already exist for the specified entities, + those records are overwritten with the specified values. If asset + criticality records don't exist for the specified entities, new records + are created. + operationId: BulkUpsertAssetCriticalityRecords + requestBody: + content: + application/json: + schema: + example: + records: + - criticality_level: low_impact + id_field: host.name + id_value: host-1 + - criticality_level: medium_impact + id_field: host.name + id_value: host-2 + type: object + properties: + records: + items: + $ref: '#/components/schemas/CreateAssetCriticalityRecord' + maxItems: 1000 + minItems: 1 + type: array + required: + - records + responses: + '200': + content: + application/json: + schema: + example: + errors: + - index: 0 + message: Invalid ID field + stats: + failed: 1 + successful: 1 + total: 2 + type: object + properties: + errors: + items: + $ref: '#/components/schemas/AssetCriticalityBulkUploadErrorItem' + type: array + stats: + $ref: '#/components/schemas/AssetCriticalityBulkUploadStats' + required: + - errors + - stats + description: Bulk upload successful + '413': + description: File too large + summary: Bulk upsert asset criticality records + tags: + - Security Entity Analytics API + /api/asset_criticality/list: + get: + description: List asset criticality records, paging, sorting and filtering as needed. + operationId: FindAssetCriticalityRecords + parameters: + - description: The field to sort by. + in: query + name: sort_field + required: false + schema: + enum: + - id_value + - id_field + - criticality_level + - \@timestamp + type: string + - description: The order to sort by. + in: query + name: sort_direction + required: false + schema: + enum: + - asc + - desc + type: string + - description: The page number to return. + in: query + name: page + required: false + schema: + minimum: 1 + type: integer + - description: The number of records to return per page. + in: query + name: per_page + required: false + schema: + maximum: 1000 + minimum: 1 + type: integer + - description: The kuery to filter by. + in: query + name: kuery + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + type: object + properties: + page: + minimum: 1 + type: integer + per_page: + maximum: 1000 + minimum: 1 + type: integer + records: + items: + $ref: '#/components/schemas/AssetCriticalityRecord' + type: array + total: + minimum: 0 + type: integer + required: + - records + - page + - per_page + - total + description: Bulk upload successful + summary: List asset criticality records + tags: + - Security Entity Analytics API + /api/entity_store/enable: + post: + operationId: InitEntityStore + requestBody: + content: + application/json: + schema: + type: object + properties: + fieldHistoryLength: + default: 10 + description: The number of historical values to keep for each field. + type: integer + filter: + type: string + indexPattern: + $ref: '#/components/schemas/IndexPattern' + description: Schema for the entity store initialization + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + engines: + items: + $ref: '#/components/schemas/EngineDescriptor' + type: array + succeeded: + type: boolean + description: Successful response + summary: Initialize the Entity Store + tags: + - Security Entity Analytics API + /api/entity_store/engines: + get: + operationId: ListEntityEngines + responses: + '200': + content: + application/json: + schema: + type: object + properties: + count: + type: integer + engines: + items: + $ref: '#/components/schemas/EngineDescriptor' + type: array + description: Successful response + summary: List the Entity Engines + tags: + - Security Entity Analytics API + /api/entity_store/engines/{entityType}: + delete: + operationId: DeleteEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + - description: Control flag to also delete the entity data. + in: query + name: data + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + type: object + properties: + deleted: + type: boolean + description: Successful response + summary: Delete the Entity Engine + tags: + - Security Entity Analytics API + get: + operationId: GetEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EngineDescriptor' + description: Successful response + summary: Get an Entity Engine + tags: + - Security Entity Analytics API + /api/entity_store/engines/{entityType}/init: + post: + operationId: InitEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + requestBody: + content: + application/json: + schema: + type: object + properties: + fieldHistoryLength: + default: 10 + description: The number of historical values to keep for each field. + type: integer + filter: + type: string + indexPattern: + $ref: '#/components/schemas/IndexPattern' + description: Schema for the engine initialization + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EngineDescriptor' + description: Successful response + summary: Initialize an Entity Engine + tags: + - Security Entity Analytics API + /api/entity_store/engines/{entityType}/start: + post: + operationId: StartEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + responses: + '200': + content: + application/json: + schema: + type: object + properties: + started: + type: boolean + description: Successful response + summary: Start an Entity Engine + tags: + - Security Entity Analytics API + /api/entity_store/engines/{entityType}/stop: + post: + operationId: StopEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + responses: + '200': + content: + application/json: + schema: + type: object + properties: + stopped: + type: boolean + description: Successful response + summary: Stop an Entity Engine + tags: + - Security Entity Analytics API + /api/entity_store/engines/apply_dataview_indices: + post: + operationId: ApplyEntityEngineDataviewIndices + responses: + '200': + content: + application/json: + schema: + type: object + properties: + result: + items: + $ref: '#/components/schemas/EngineDataviewUpdateResult' + type: array + success: + type: boolean + description: Successful response + '207': + content: + application/json: + schema: + type: object + properties: + errors: + items: + type: string + type: array + result: + items: + $ref: '#/components/schemas/EngineDataviewUpdateResult' + type: array + success: + type: boolean + description: Partial successful response + '500': + content: + application/json: + schema: + type: object + properties: + body: + type: string + statusCode: + type: number + description: Error response + summary: Apply DataView indices to all installed engines + tags: + - Security Entity Analytics API + /api/entity_store/entities/list: + get: + description: List entities records, paging, sorting and filtering as needed. + operationId: ListEntities + parameters: + - in: query + name: sort_field + required: false + schema: + type: string + - in: query + name: sort_order + required: false + schema: + enum: + - asc + - desc + type: string + - in: query + name: page + required: false + schema: + minimum: 1 + type: integer + - in: query + name: per_page + required: false + schema: + maximum: 10000 + minimum: 1 + type: integer + - description: An ES query to filter by. + in: query + name: filterQuery + required: false + schema: + type: string + - in: query + name: entities_types + required: true + schema: + items: + $ref: '#/components/schemas/EntityType' + type: array + responses: + '200': + content: + application/json: + schema: + type: object + properties: + inspect: + $ref: '#/components/schemas/InspectQuery' + page: + minimum: 1 + type: integer + per_page: + maximum: 1000 + minimum: 1 + type: integer + records: + items: + $ref: '#/components/schemas/Entity' + type: array + total: + minimum: 0 + type: integer + required: + - records + - page + - per_page + - total + description: Entities returned successfully + summary: List Entity Store Entities + tags: + - Security Entity Analytics API + /api/entity_store/status: + get: + operationId: GetEntityStoreStatus + parameters: + - description: >- + If true returns a detailed status of the engine including all it's + components + in: query + name: include_components + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + type: object + properties: + engines: + items: + allOf: + - $ref: '#/components/schemas/EngineDescriptor' + - type: object + properties: + components: + items: + $ref: '#/components/schemas/EngineComponentStatus' + type: array + type: array + status: + $ref: '#/components/schemas/StoreStatus' + required: + - status + - engines + description: Successful response + summary: Get the status of the Entity Store + tags: + - Security Entity Analytics API + /api/risk_score/engine/dangerously_delete_data: + delete: + description: >- + Cleaning up the the Risk Engine by removing the indices, mapping and + transforms + operationId: CleanUpRiskEngine + responses: + '200': + content: + application/json: + schema: + type: object + properties: + cleanup_successful: + type: boolean + description: Successful response + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json: + schema: + $ref: '#/components/schemas/CleanUpRiskEngineErrorResponse' + description: Unexpected error + summary: Cleanup the Risk Engine + tags: + - Security Entity Analytics API + /api/risk_score/engine/saved_object/configure: + patch: + description: Configuring the Risk Engine Saved Object + operationId: ConfigureRiskEngineSavedObject + requestBody: + content: + application/json: + schema: + type: object + properties: + exclude_alert_statuses: + items: + type: string + type: array + exclude_alert_tags: + items: + type: string + type: array + range: + type: object + properties: + end: + type: string + start: + type: string + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + description: Successful response + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json: + schema: + $ref: >- + #/components/schemas/ConfigureRiskEngineSavedObjectErrorResponse + description: Unexpected error + summary: Configure the Risk Engine Saved Object + tags: + - Security Entity Analytics API + /api/risk_score/engine/schedule_now: + post: + description: >- + Schedule the risk scoring engine to run as soon as possible. You can use + this to recalculate entity risk scores after updating their asset + criticality. + operationId: ScheduleRiskEngineNow + requestBody: + content: + application/json: {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RiskEngineScheduleNowResponse' + description: Successful response + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json: + schema: + $ref: '#/components/schemas/RiskEngineScheduleNowErrorResponse' + description: Unexpected error + summary: Run the risk scoring engine + tags: + - Security Entity Analytics API +components: + schemas: + AssetCriticalityBulkUploadErrorItem: + type: object + properties: + index: + type: integer + message: + type: string + required: + - message + - index + AssetCriticalityBulkUploadStats: + type: object + properties: + failed: + type: integer + successful: + type: integer + total: + type: integer + required: + - successful + - failed + - total + AssetCriticalityLevel: + description: The criticality level of the asset. + enum: + - low_impact + - medium_impact + - high_impact + - extreme_impact + type: string + AssetCriticalityRecord: + allOf: + - $ref: '#/components/schemas/CreateAssetCriticalityRecord' + - $ref: '#/components/schemas/AssetCriticalityRecordEcsParts' + - type: object + properties: + '@timestamp': + description: The time the record was created or updated. + example: '2017-07-21T17:32:28Z' + format: date-time + type: string + required: + - '@timestamp' + AssetCriticalityRecordEcsParts: + type: object + properties: + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - asset + host: + type: object + properties: + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality + name: + type: string + required: + - name + user: + type: object + properties: + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality + name: + type: string + required: + - name + required: + - asset + AssetCriticalityRecordIdParts: + type: object + properties: + id_field: + $ref: '#/components/schemas/IdField' + description: The field representing the ID. + example: host.name + id_value: + description: The ID value of the asset. + type: string + required: + - id_value + - id_field + CleanUpRiskEngineErrorResponse: + type: object + properties: + cleanup_successful: + example: false + type: boolean + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + required: + - cleanup_successful + - errors + ConfigureRiskEngineSavedObjectErrorResponse: + type: object + properties: + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + risk_engine_saved_object_configured: + example: false + type: boolean + required: + - risk_engine_saved_object_configured + - errors + CreateAssetCriticalityRecord: + allOf: + - $ref: '#/components/schemas/AssetCriticalityRecordIdParts' + - type: object + properties: + criticality_level: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality_level + EngineComponentResource: + enum: + - entity_engine + - entity_definition + - index + - component_template + - index_template + - ingest_pipeline + - enrich_policy + - task + - transform + type: string + EngineComponentStatus: + type: object + properties: + errors: + items: + type: object + properties: + message: + type: string + title: + type: string + type: array + health: + enum: + - green + - yellow + - red + - unknown + type: string + id: + type: string + installed: + type: boolean + resource: + $ref: '#/components/schemas/EngineComponentResource' + required: + - id + - installed + - resource + EngineDataviewUpdateResult: + type: object + properties: + changes: + type: object + properties: + indexPatterns: + items: + type: string + type: array + type: + type: string + required: + - type + EngineDescriptor: + type: object + properties: + error: + type: object + fieldHistoryLength: + type: integer + filter: + type: string + indexPattern: + $ref: '#/components/schemas/IndexPattern' + status: + $ref: '#/components/schemas/EngineStatus' + type: + $ref: '#/components/schemas/EntityType' + required: + - type + - indexPattern + - status + - fieldHistoryLength + EngineStatus: + enum: + - installing + - started + - stopped + - updating + - error + type: string + Entity: + oneOf: + - $ref: '#/components/schemas/UserEntity' + - $ref: '#/components/schemas/HostEntity' + EntityRiskLevels: + enum: + - Unknown + - Low + - Moderate + - High + - Critical + type: string + EntityRiskScoreRecord: + type: object + properties: + '@timestamp': + description: The time at which the risk score was calculated. + example: '2017-07-21T17:32:28Z' + format: date-time + type: string + calculated_level: + $ref: '#/components/schemas/EntityRiskLevels' + description: Lexical description of the entity's risk. + example: Critical + calculated_score: + description: The raw numeric value of the given entity's risk score. + format: double + type: number + calculated_score_norm: + description: >- + The normalized numeric value of the given entity's risk score. + Useful for comparing with other entities. + format: double + maximum: 100 + minimum: 0 + type: number + category_1_count: + description: >- + The number of risk input documents that contributed to the Category + 1 score (`category_1_score`). + format: integer + type: number + category_1_score: + description: >- + The contribution of Category 1 to the overall risk score + (`calculated_score`). Category 1 contains Detection Engine Alerts. + format: double + type: number + category_2_count: + format: integer + type: number + category_2_score: + format: double + type: number + criticality_level: + $ref: '#/components/schemas/AssetCriticalityLevel' + criticality_modifier: + format: double + type: number + id_field: + description: >- + The identifier field defining this risk score. Coupled with + `id_value`, uniquely identifies the entity being scored. + example: host.name + type: string + id_value: + description: >- + The identifier value defining this risk score. Coupled with + `id_field`, uniquely identifies the entity being scored. + example: example.host + type: string + inputs: + description: >- + A list of the highest-risk documents contributing to this risk + score. Useful for investigative purposes. + items: + $ref: '#/components/schemas/RiskScoreInput' + type: array + notes: + items: + type: string + type: array + required: + - '@timestamp' + - id_field + - id_value + - calculated_level + - calculated_score + - calculated_score_norm + - category_1_score + - category_1_count + - inputs + - notes + EntityType: + enum: + - user + - host + - service + type: string + HostEntity: + type: object + properties: + '@timestamp': + format: date-time + type: string + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality + entity: + type: object + properties: + name: + type: string + source: + type: string + required: + - name + - source + host: + type: object + properties: + architecture: + items: + type: string + type: array + domain: + items: + type: string + type: array + hostname: + items: + type: string + type: array + id: + items: + type: string + type: array + ip: + items: + type: string + type: array + mac: + items: + type: string + type: array + name: + type: string + risk: + $ref: '#/components/schemas/EntityRiskScoreRecord' + type: + items: + type: string + type: array + required: + - name + required: + - '@timestamp' + - host + - entity + IdField: + enum: + - host.name + - user.name + type: string + IndexPattern: + type: string + InspectQuery: + type: object + properties: + dsl: + items: + type: string + type: array + response: + items: + type: string + type: array + required: + - dsl + - response + RiskEngineScheduleNowErrorResponse: + type: object + properties: + full_error: + type: string + message: + type: string + required: + - message + - full_error + RiskEngineScheduleNowResponse: + type: object + properties: + success: + type: boolean + RiskScoreInput: + description: A generic representation of a document contributing to a Risk Score. + type: object + properties: + category: + description: The risk category of the risk input document. + example: category_1 + type: string + contribution_score: + format: double + type: number + description: + description: A human-readable description of the risk input document. + example: 'Generated from Detection Engine Rule: Malware Prevention Alert' + type: string + id: + description: The unique identifier (`_id`) of the original source document + example: 91a93376a507e86cfbf282166275b89f9dbdb1f0be6c8103c6ff2909ca8e1a1c + type: string + index: + description: The unique index (`_index`) of the original source document + example: .internal.alerts-security.alerts-default-000001 + type: string + risk_score: + description: The weighted risk score of the risk input document. + format: double + maximum: 100 + minimum: 0 + type: number + timestamp: + description: The @timestamp of the risk input document. + example: '2017-07-21T17:32:28Z' + type: string + required: + - id + - index + - description + - category + StoreStatus: + enum: + - not_installed + - installing + - running + - stopped + - error + type: string + TaskManagerUnavailableResponse: + description: Task manager is unavailable + type: object + properties: + message: + type: string + status_code: + minimum: 400 + type: integer + required: + - status_code + - message + UserEntity: + type: object + properties: + '@timestamp': + format: date-time + type: string + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality + entity: + type: object + properties: + name: + type: string + source: + type: string + required: + - name + - source + user: + type: object + properties: + domain: + items: + type: string + type: array + email: + items: + type: string + type: array + full_name: + items: + type: string + type: array + hash: + items: + type: string + type: array + id: + items: + type: string + type: array + name: + type: string + risk: + $ref: '#/components/schemas/EntityRiskScoreRecord' + roles: + items: + type: string + type: array + required: + - name + required: + - '@timestamp' + - user + - entity + securitySchemes: + BasicAuth: + scheme: basic + type: http +security: + - BasicAuth: [] +tags: + - description: '' + name: Security Entity Analytics API + x-displayName: Security entity analytics diff --git a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_timeline_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_timeline_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/docs/openapi/ess/security_solution_timeline_api_2023_10_31.bundled.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_timeline_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml new file mode 100644 index 0000000000000..583944c5b3435 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml @@ -0,0 +1,6274 @@ +openapi: 3.0.3 +info: + description: >- + Use the detections APIs to create and manage detection rules. Detection + rules search events and external alerts sent to Elastic Security and + generate detection alerts from any hits. Alerts are displayed on the + **Alerts** page and can be assigned and triaged, using the alert status to + mark them as open, closed, or acknowledged. + title: Security Detections API (Elastic Cloud Serverless) + version: '2023-10-31' +servers: + - url: http://{kibana_host}:{port} + variables: + kibana_host: + default: localhost + port: + default: '5601' +paths: + /api/detection_engine/privileges: + get: + description: > + Retrieves whether or not the user is authenticated, and the user's + Kibana + + space and index privileges, which determine if the user can create an + + index for the Elastic Security alerts generated by + + detection engine rules. + operationId: ReadPrivileges + responses: + '200': + content: + application/json: + schema: + type: object + properties: + has_encryption_key: + type: boolean + is_authenticated: + type: boolean + required: + - is_authenticated + - has_encryption_key + description: Successful response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Returns user privileges for the Kibana space + tags: + - Security Detections API + - Privileges API + /api/detection_engine/rules: + delete: + description: Delete a detection rule using the `rule_id` or `id` field. + operationId: DeleteRule + parameters: + - description: The rule's `id` value. + in: query + name: id + required: false + schema: + $ref: '#/components/schemas/RuleObjectId' + - description: The rule's `rule_id` value. + in: query + name: rule_id + required: false + schema: + $ref: '#/components/schemas/RuleSignatureId' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Delete a detection rule + tags: + - Security Detections API + - Rules API + get: + description: Retrieve a detection rule using the `rule_id` or `id` field. + operationId: ReadRule + parameters: + - description: The rule's `id` value. + in: query + name: id + required: false + schema: + $ref: '#/components/schemas/RuleObjectId' + - description: The rule's `rule_id` value. + in: query + name: rule_id + required: false + schema: + $ref: '#/components/schemas/RuleSignatureId' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Retrieve a detection rule + tags: + - Security Detections API + - Rules API + patch: + description: >- + Update specific fields of an existing detection rule using the `rule_id` + or `id` field. + operationId: PatchRule + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RulePatchProps' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Patch a detection rule + tags: + - Security Detections API + - Rules API + post: + description: Create a new detection rule. + operationId: CreateRule + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RuleCreateProps' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Create a detection rule + tags: + - Security Detections API + - Rules API + put: + description: > + Update a detection rule using the `rule_id` or `id` field. The original + rule is replaced, and all unspecified fields are deleted. + + > info + + > You cannot modify the `id` or `rule_id` values. + operationId: UpdateRule + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RuleUpdateProps' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleResponse' + description: Indicates a successful call. + summary: Update a detection rule + tags: + - Security Detections API + - Rules API + /api/detection_engine/rules/_bulk_action: + post: + description: >- + Apply a bulk action, such as bulk edit, duplicate, or delete, to + multiple detection rules. The bulk action is applied to all rules that + match the query or to the rules listed by their IDs. + operationId: PerformRulesBulkAction + parameters: + - description: Enables dry run mode for the request call. + in: query + name: dry_run + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/BulkDeleteRules' + - $ref: '#/components/schemas/BulkDisableRules' + - $ref: '#/components/schemas/BulkEnableRules' + - $ref: '#/components/schemas/BulkExportRules' + - $ref: '#/components/schemas/BulkDuplicateRules' + - $ref: '#/components/schemas/BulkManualRuleRun' + - $ref: '#/components/schemas/BulkEditRules' + responses: + '200': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/BulkEditActionResponse' + - $ref: '#/components/schemas/BulkExportActionResponse' + description: OK + summary: Apply a bulk action to detection rules + tags: + - Security Detections API + - Bulk API + /api/detection_engine/rules/_export: + post: + description: > + Export detection rules to an `.ndjson` file. The following configuration + items are also included in the `.ndjson` file: + + - Actions + + - Exception lists + + > info + + > You cannot export prebuilt rules. + operationId: ExportRules + parameters: + - description: Determines whether a summary of the exported rules is returned. + in: query + name: exclude_export_details + required: false + schema: + default: false + type: boolean + - description: File name for saving the exported rules. + in: query + name: file_name + required: false + schema: + default: export.ndjson + type: string + requestBody: + content: + application/json: + schema: + nullable: true + type: object + properties: + objects: + description: >- + Array of `rule_id` fields. Exports all rules when + unspecified. + items: + type: object + properties: + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + required: + - rule_id + type: array + required: + - objects + required: false + responses: + '200': + content: + application/ndjson: + schema: + description: An `.ndjson` file containing the returned rules. + format: binary + type: string + description: Indicates a successful call. + summary: Export detection rules + tags: + - Security Detections API + - Import/Export API + /api/detection_engine/rules/_find: + get: + description: >- + Retrieve a paginated list of detection rules. By default, the first page + is returned, with 20 results per page. + operationId: FindRules + parameters: + - in: query + name: fields + required: false + schema: + items: + type: string + type: array + - description: Search query + in: query + name: filter + required: false + schema: + type: string + - description: Field to sort by + in: query + name: sort_field + required: false + schema: + $ref: '#/components/schemas/FindRulesSortField' + - description: Sort order + in: query + name: sort_order + required: false + schema: + $ref: '#/components/schemas/SortOrder' + - description: Page number + in: query + name: page + required: false + schema: + default: 1 + minimum: 1 + type: integer + - description: Rules per page + in: query + name: per_page + required: false + schema: + default: 20 + minimum: 0 + type: integer + responses: + '200': + content: + application/json: + schema: + type: object + properties: + data: + items: + $ref: '#/components/schemas/RuleResponse' + type: array + page: + type: integer + perPage: + type: integer + total: + type: integer + required: + - page + - perPage + - total + - data + description: Successful response + summary: List all detection rules + tags: + - Security Detections API + - Rules API + /api/detection_engine/rules/_import: + post: + description: > + Import detection rules from an `.ndjson` file, including actions and + exception lists. The request must include: + + - The `Content-Type: multipart/form-data` HTTP header. + + - A link to the `.ndjson` file containing the rules. + operationId: ImportRules + parameters: + - description: >- + Determines whether existing rules with the same `rule_id` are + overwritten. + in: query + name: overwrite + required: false + schema: + default: false + type: boolean + - description: >- + Determines whether existing exception lists with the same `list_id` + are overwritten. + in: query + name: overwrite_exceptions + required: false + schema: + default: false + type: boolean + - description: >- + Determines whether existing actions with the same + `kibana.alert.rule.actions.id` are overwritten. + in: query + name: overwrite_action_connectors + required: false + schema: + default: false + type: boolean + - description: Generates a new list ID for each imported exception list. + in: query + name: as_new_list + required: false + schema: + default: false + type: boolean + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + description: The `.ndjson` file containing the rules. + format: binary + type: string + required: true + responses: + '200': + content: + application/json: + schema: + additionalProperties: false + type: object + properties: + action_connectors_errors: + items: + $ref: '#/components/schemas/ErrorSchema' + type: array + action_connectors_success: + type: boolean + action_connectors_success_count: + minimum: 0 + type: integer + action_connectors_warnings: + items: + $ref: '#/components/schemas/WarningSchema' + type: array + errors: + items: + $ref: '#/components/schemas/ErrorSchema' + type: array + exceptions_errors: + items: + $ref: '#/components/schemas/ErrorSchema' + type: array + exceptions_success: + type: boolean + exceptions_success_count: + minimum: 0 + type: integer + rules_count: + minimum: 0 + type: integer + success: + type: boolean + success_count: + minimum: 0 + type: integer + required: + - exceptions_success + - exceptions_success_count + - exceptions_errors + - rules_count + - success + - success_count + - errors + - action_connectors_errors + - action_connectors_warnings + - action_connectors_success + - action_connectors_success_count + description: Indicates a successful call. + summary: Import detection rules + tags: + - Security Detections API + - Import/Export API + /api/detection_engine/rules/preview: + post: + operationId: RulePreview + parameters: + - description: >- + Enables logging and returning in response ES queries, performed + during rule execution + in: query + name: enable_logged_requests + required: false + schema: + type: boolean + requestBody: + content: + application/json: + schema: + anyOf: + - allOf: + - $ref: '#/components/schemas/EqlRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/QueryRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/SavedQueryRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/ThresholdRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/ThreatMatchRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/MachineLearningRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/NewTermsRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + - allOf: + - $ref: '#/components/schemas/EsqlRuleCreateProps' + - $ref: '#/components/schemas/RulePreviewParams' + discriminator: + propertyName: type + description: >- + An object containing tags to add or remove and alert ids the changes + will be applied + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + isAborted: + type: boolean + logs: + items: + $ref: '#/components/schemas/RulePreviewLogs' + type: array + previewId: + $ref: '#/components/schemas/NonEmptyString' + required: + - logs + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Preview rule alerts generated on specified time range + tags: + - Security Detections API + - Rule preview API + /api/detection_engine/signals/assignees: + post: + description: | + Assign users to detection alerts, and unassign them from alerts. + > info + > You cannot add and remove the same assignee in the same request. + operationId: SetAlertAssignees + requestBody: + content: + application/json: + schema: + type: object + properties: + assignees: + $ref: '#/components/schemas/AlertAssignees' + description: Details about the assignees to assign and unassign. + ids: + $ref: '#/components/schemas/AlertIds' + description: List of alerts ids to assign and unassign passed assignees. + required: + - assignees + - ids + required: true + responses: + '200': + description: Indicates a successful call. + '400': + description: Invalid request. + summary: Assign and unassign users from detection alerts + tags: + - Security Detections API + /api/detection_engine/signals/search: + post: + description: Find and/or aggregate detection alerts that match the given query. + operationId: SearchAlerts + requestBody: + content: + application/json: + schema: + description: Elasticsearch query and aggregation request + type: object + properties: + _source: + oneOf: + - type: boolean + - type: string + - items: + type: string + type: array + aggs: + additionalProperties: true + type: object + fields: + items: + type: string + type: array + query: + additionalProperties: true + type: object + runtime_mappings: + additionalProperties: true + type: object + size: + minimum: 0 + type: integer + sort: + $ref: '#/components/schemas/AlertsSort' + track_total_hits: + type: boolean + description: Search and/or aggregation query + required: true + responses: + '200': + content: + application/json: + schema: + additionalProperties: true + description: Elasticsearch search response + type: object + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Find and/or aggregate detection alerts + tags: + - Security Detections API + - Alerts API + /api/detection_engine/signals/status: + post: + description: Set the status of one or more detection alerts. + operationId: SetAlertsStatus + requestBody: + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SetAlertsStatusByIds' + - $ref: '#/components/schemas/SetAlertsStatusByQuery' + description: >- + An object containing desired status and explicit alert ids or a query + to select alerts + required: true + responses: + '200': + content: + application/json: + schema: + additionalProperties: true + description: Elasticsearch update by query response + type: object + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Set a detection alert status + tags: + - Security Detections API + - Alerts API + /api/detection_engine/signals/tags: + post: + description: | + And tags to detection alerts, and remove them from alerts. + > info + > You cannot add and remove the same alert tag in the same request. + operationId: SetAlertTags + requestBody: + content: + application/json: + schema: + type: object + properties: + ids: + $ref: '#/components/schemas/AlertIds' + tags: + $ref: '#/components/schemas/SetAlertTags' + required: + - ids + - tags + description: >- + An object containing tags to add or remove and alert ids the changes + will be applied + required: true + responses: + '200': + content: + application/json: + schema: + additionalProperties: true + description: Elasticsearch update by query response + type: object + description: Successful response + '400': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/PlatformErrorResponse' + - $ref: '#/components/schemas/SiemErrorResponse' + description: Invalid input data response + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/PlatformErrorResponse' + description: Unsuccessful authentication response + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/SiemErrorResponse' + description: Internal server error response + summary: Add and remove detection alert tags + tags: + - Security Detections API + - Alerts API + /api/detection_engine/tags: + get: + description: List all unique tags from all detection rules. + operationId: ReadTags + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RuleTagArray' + description: Indicates a successful call + summary: List all detection rule tags + tags: + - Security Detections API + - Tags API +components: + schemas: + AlertAssignees: + type: object + properties: + add: + description: A list of users ids to assign. + items: + $ref: '#/components/schemas/NonEmptyString' + type: array + remove: + description: A list of users ids to unassign. + items: + $ref: '#/components/schemas/NonEmptyString' + type: array + required: + - add + - remove + AlertIds: + description: A list of alerts ids. + items: + $ref: '#/components/schemas/NonEmptyString' + minItems: 1 + type: array + AlertsIndex: + deprecated: true + description: (deprecated) Has no effect. + type: string + AlertsIndexNamespace: + description: Has no effect. + type: string + AlertsSort: + oneOf: + - $ref: '#/components/schemas/AlertsSortCombinations' + - items: + $ref: '#/components/schemas/AlertsSortCombinations' + type: array + AlertsSortCombinations: + anyOf: + - type: string + - additionalProperties: true + type: object + AlertStatus: + enum: + - open + - closed + - acknowledged + - in-progress + type: string + AlertSuppression: + type: object + properties: + duration: + $ref: '#/components/schemas/AlertSuppressionDuration' + group_by: + $ref: '#/components/schemas/AlertSuppressionGroupBy' + missing_fields_strategy: + $ref: '#/components/schemas/AlertSuppressionMissingFieldsStrategy' + required: + - group_by + AlertSuppressionDuration: + type: object + properties: + unit: + $ref: '#/components/schemas/AlertSuppressionDurationUnit' + value: + minimum: 1 + type: integer + required: + - value + - unit + AlertSuppressionDurationUnit: + enum: + - s + - m + - h + type: string + AlertSuppressionGroupBy: + items: + type: string + maxItems: 3 + minItems: 1 + type: array + AlertSuppressionMissingFieldsStrategy: + description: >- + Describes how alerts will be generated for documents with missing + suppress by fields: + + doNotSuppress - per each document a separate alert will be created + + suppress - only alert will be created per suppress by bucket + enum: + - doNotSuppress + - suppress + type: string + AlertTag: + $ref: '#/components/schemas/NonEmptyString' + AlertTags: + items: + $ref: '#/components/schemas/AlertTag' + type: array + AnomalyThreshold: + description: Anomaly threshold + minimum: 0 + type: integer + BuildingBlockType: + description: >- + Determines if the rule acts as a building block. By default, + building-block alerts are not displayed in the UI. These rules are used + as a foundation for other rules that do generate alerts. Its value must + be default. + type: string + BulkActionEditPayload: + anyOf: + - $ref: '#/components/schemas/BulkActionEditPayloadTags' + - $ref: '#/components/schemas/BulkActionEditPayloadIndexPatterns' + - $ref: '#/components/schemas/BulkActionEditPayloadInvestigationFields' + - $ref: '#/components/schemas/BulkActionEditPayloadTimeline' + - $ref: '#/components/schemas/BulkActionEditPayloadRuleActions' + - $ref: '#/components/schemas/BulkActionEditPayloadSchedule' + BulkActionEditPayloadIndexPatterns: + type: object + properties: + overwrite_data_views: + type: boolean + type: + enum: + - add_index_patterns + - delete_index_patterns + - set_index_patterns + type: string + value: + $ref: '#/components/schemas/IndexPatternArray' + required: + - type + - value + BulkActionEditPayloadInvestigationFields: + type: object + properties: + type: + enum: + - add_investigation_fields + - delete_investigation_fields + - set_investigation_fields + type: string + value: + $ref: '#/components/schemas/InvestigationFields' + required: + - type + - value + BulkActionEditPayloadRuleActions: + type: object + properties: + type: + enum: + - add_rule_actions + - set_rule_actions + type: string + value: + type: object + properties: + actions: + items: + $ref: '#/components/schemas/NormalizedRuleAction' + type: array + throttle: + $ref: '#/components/schemas/ThrottleForBulkActions' + required: + - actions + required: + - type + - value + BulkActionEditPayloadSchedule: + type: object + properties: + type: + enum: + - set_schedule + type: string + value: + type: object + properties: + interval: + description: >- + Interval in which the rule runs. For example, `"1h"` means the + rule runs every hour. + example: 1h + pattern: ^[1-9]\d*[smh]$ + type: string + lookback: + description: Lookback time for the rule + example: 1h + pattern: ^[1-9]\d*[smh]$ + type: string + required: + - interval + - lookback + required: + - type + - value + BulkActionEditPayloadTags: + type: object + properties: + type: + enum: + - add_tags + - delete_tags + - set_tags + type: string + value: + $ref: '#/components/schemas/RuleTagArray' + required: + - type + - value + BulkActionEditPayloadTimeline: + type: object + properties: + type: + enum: + - set_timeline + type: string + value: + type: object + properties: + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + required: + - timeline_id + - timeline_title + required: + - type + - value + BulkActionsDryRunErrCode: + enum: + - IMMUTABLE + - MACHINE_LEARNING_AUTH + - MACHINE_LEARNING_INDEX_PATTERN + - ESQL_INDEX_PATTERN + - MANUAL_RULE_RUN_FEATURE + - MANUAL_RULE_RUN_DISABLED_RULE + type: string + BulkActionSkipResult: + type: object + properties: + id: + type: string + name: + type: string + skip_reason: + $ref: '#/components/schemas/BulkEditSkipReason' + required: + - id + - skip_reason + BulkDeleteRules: + type: object + properties: + action: + enum: + - delete + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkDisableRules: + type: object + properties: + action: + enum: + - disable + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkDuplicateRules: + type: object + properties: + action: + enum: + - duplicate + type: string + duplicate: + type: object + properties: + include_exceptions: + description: Whether to copy exceptions from the original rule + type: boolean + include_expired_exceptions: + description: Whether to copy expired exceptions from the original rule + type: boolean + required: + - include_exceptions + - include_expired_exceptions + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkEditActionResponse: + type: object + properties: + attributes: + type: object + properties: + errors: + items: + $ref: '#/components/schemas/NormalizedRuleError' + type: array + results: + $ref: '#/components/schemas/BulkEditActionResults' + summary: + $ref: '#/components/schemas/BulkEditActionSummary' + required: + - results + - summary + message: + type: string + rules_count: + type: integer + status_code: + type: integer + success: + type: boolean + required: + - attributes + BulkEditActionResults: + type: object + properties: + created: + items: + $ref: '#/components/schemas/RuleResponse' + type: array + deleted: + items: + $ref: '#/components/schemas/RuleResponse' + type: array + skipped: + items: + $ref: '#/components/schemas/BulkActionSkipResult' + type: array + updated: + items: + $ref: '#/components/schemas/RuleResponse' + type: array + required: + - updated + - created + - deleted + - skipped + BulkEditActionSummary: + type: object + properties: + failed: + type: integer + skipped: + type: integer + succeeded: + type: integer + total: + type: integer + required: + - failed + - skipped + - succeeded + - total + BulkEditRules: + type: object + properties: + action: + enum: + - edit + type: string + edit: + description: Array of objects containing the edit operations + items: + $ref: '#/components/schemas/BulkActionEditPayload' + minItems: 1 + type: array + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + - edit + BulkEditSkipReason: + enum: + - RULE_NOT_MODIFIED + type: string + BulkEnableRules: + type: object + properties: + action: + enum: + - enable + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkExportActionResponse: + type: string + BulkExportRules: + type: object + properties: + action: + enum: + - export + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + required: + - action + BulkManualRuleRun: + type: object + properties: + action: + enum: + - run + type: string + ids: + description: Array of rule IDs + items: + type: string + minItems: 1 + type: array + query: + description: Query to filter rules + type: string + run: + type: object + properties: + end_date: + description: End date of the manual rule run + type: string + start_date: + description: Start date of the manual rule run + type: string + required: + - start_date + required: + - action + - run + ConcurrentSearches: + minimum: 1 + type: integer + DataViewId: + type: string + DefaultParams: + type: object + properties: + command: + enum: + - isolate + type: string + comment: + type: string + required: + - command + EcsMapping: + additionalProperties: + type: object + properties: + field: + type: string + value: + oneOf: + - type: string + - items: + type: string + type: array + type: object + EndpointResponseAction: + type: object + properties: + action_type_id: + enum: + - .endpoint + type: string + params: + oneOf: + - $ref: '#/components/schemas/DefaultParams' + - $ref: '#/components/schemas/ProcessesParams' + required: + - action_type_id + - params + EqlOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + event_category_override: + $ref: '#/components/schemas/EventCategoryOverride' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + tiebreaker_field: + $ref: '#/components/schemas/TiebreakerField' + timestamp_field: + $ref: '#/components/schemas/TimestampField' + EqlQueryLanguage: + enum: + - eql + type: string + EqlRequiredFields: + type: object + properties: + language: + $ref: '#/components/schemas/EqlQueryLanguage' + description: Query language to use + query: + $ref: '#/components/schemas/RuleQuery' + description: EQL query to execute + type: + description: Rule type + enum: + - eql + type: string + required: + - type + - query + - language + EqlRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/EqlRuleResponseFields' + EqlRuleCreateFields: + allOf: + - $ref: '#/components/schemas/EqlRequiredFields' + - $ref: '#/components/schemas/EqlOptionalFields' + EqlRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/EqlRuleCreateFields' + EqlRulePatchFields: + allOf: + - type: object + properties: + language: + $ref: '#/components/schemas/EqlQueryLanguage' + description: Query language to use + query: + $ref: '#/components/schemas/RuleQuery' + description: EQL query to execute + type: + description: Rule type + enum: + - eql + type: string + - $ref: '#/components/schemas/EqlOptionalFields' + EqlRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/EqlRulePatchFields' + EqlRuleResponseFields: + allOf: + - $ref: '#/components/schemas/EqlRequiredFields' + - $ref: '#/components/schemas/EqlOptionalFields' + EqlRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/EqlRuleCreateFields' + ErrorSchema: + additionalProperties: false + type: object + properties: + error: + type: object + properties: + message: + type: string + status_code: + minimum: 400 + type: integer + required: + - status_code + - message + id: + type: string + item_id: + minLength: 1 + type: string + list_id: + minLength: 1 + type: string + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + required: + - error + EsqlQueryLanguage: + enum: + - esql + type: string + EsqlRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/EsqlRuleResponseFields' + EsqlRuleCreateFields: + allOf: + - $ref: '#/components/schemas/EsqlRuleOptionalFields' + - $ref: '#/components/schemas/EsqlRuleRequiredFields' + EsqlRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/EsqlRuleCreateFields' + EsqlRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + EsqlRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + language: + $ref: '#/components/schemas/EsqlQueryLanguage' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + query: + $ref: '#/components/schemas/RuleQuery' + description: ESQL query to execute + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + type: + description: Rule type + enum: + - esql + type: string + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/EsqlRuleOptionalFields' + EsqlRuleRequiredFields: + type: object + properties: + language: + $ref: '#/components/schemas/EsqlQueryLanguage' + query: + $ref: '#/components/schemas/RuleQuery' + description: ESQL query to execute + type: + description: Rule type + enum: + - esql + type: string + required: + - type + - language + - query + EsqlRuleResponseFields: + allOf: + - $ref: '#/components/schemas/EsqlRuleOptionalFields' + - $ref: '#/components/schemas/EsqlRuleRequiredFields' + EsqlRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/EsqlRuleCreateFields' + EventCategoryOverride: + type: string + ExceptionListType: + description: The exception type + enum: + - detection + - rule_default + - endpoint + - endpoint_trusted_apps + - endpoint_events + - endpoint_host_isolation_exceptions + - endpoint_blocklists + type: string + ExternalRuleSource: + description: >- + Type of rule source for externally sourced rules, i.e. rules that have + an external source, such as the Elastic Prebuilt rules repo. + type: object + properties: + is_customized: + $ref: '#/components/schemas/IsExternalRuleCustomized' + type: + enum: + - external + type: string + required: + - type + - is_customized + FindRulesSortField: + enum: + - created_at + - createdAt + - enabled + - execution_summary.last_execution.date + - execution_summary.last_execution.metrics.execution_gap_duration_s + - execution_summary.last_execution.metrics.total_indexing_duration_ms + - execution_summary.last_execution.metrics.total_search_duration_ms + - execution_summary.last_execution.status + - name + - risk_score + - riskScore + - severity + - updated_at + - updatedAt + type: string + HistoryWindowStart: + $ref: '#/components/schemas/NonEmptyString' + IndexPatternArray: + items: + type: string + type: array + InternalRuleSource: + description: >- + Type of rule source for internally sourced rules, i.e. created within + the Kibana apps. + type: object + properties: + type: + enum: + - internal + type: string + required: + - type + InvestigationFields: + description: > + Schema for fields relating to investigation fields. These are user + defined fields we use to highlight + + in various features in the UI such as alert details flyout and + exceptions auto-population from alert. + + Added in PR #163235 + + Right now we only have a single field but anticipate adding more related + fields to store various + + configuration states such as `override` - where a user might say if they + want only these fields to + + display, or if they want these fields + the fields we select. When + expanding this field, it may look + + something like: + + ```typescript + + const investigationFields = z.object({ + field_names: NonEmptyArray(NonEmptyString), + override: z.boolean().optional(), + }); + + ``` + type: object + properties: + field_names: + items: + $ref: '#/components/schemas/NonEmptyString' + minItems: 1 + type: array + required: + - field_names + InvestigationGuide: + description: Notes to help investigate alerts produced by the rule. + type: string + IsExternalRuleCustomized: + description: >- + Determines whether an external/prebuilt rule has been customized by the + user (i.e. any of its fields have been modified and diverged from the + base value). + type: boolean + IsRuleEnabled: + description: Determines whether the rule is enabled. + type: boolean + IsRuleImmutable: + deprecated: true + description: >- + This field determines whether the rule is a prebuilt Elastic rule. It + will be replaced with the `rule_source` field. + type: boolean + ItemsPerSearch: + minimum: 1 + type: integer + KqlQueryLanguage: + enum: + - kuery + - lucene + type: string + MachineLearningJobId: + description: Machine learning job ID + oneOf: + - type: string + - items: + type: string + minItems: 1 + type: array + MachineLearningRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/MachineLearningRuleResponseFields' + MachineLearningRuleCreateFields: + allOf: + - $ref: '#/components/schemas/MachineLearningRuleRequiredFields' + - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' + MachineLearningRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/MachineLearningRuleCreateFields' + MachineLearningRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + MachineLearningRulePatchFields: + allOf: + - type: object + properties: + anomaly_threshold: + $ref: '#/components/schemas/AnomalyThreshold' + machine_learning_job_id: + $ref: '#/components/schemas/MachineLearningJobId' + type: + description: Rule type + enum: + - machine_learning + type: string + - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' + MachineLearningRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/MachineLearningRulePatchFields' + MachineLearningRuleRequiredFields: + type: object + properties: + anomaly_threshold: + $ref: '#/components/schemas/AnomalyThreshold' + machine_learning_job_id: + $ref: '#/components/schemas/MachineLearningJobId' + type: + description: Rule type + enum: + - machine_learning + type: string + required: + - type + - machine_learning_job_id + - anomaly_threshold + MachineLearningRuleResponseFields: + allOf: + - $ref: '#/components/schemas/MachineLearningRuleRequiredFields' + - $ref: '#/components/schemas/MachineLearningRuleOptionalFields' + MachineLearningRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/MachineLearningRuleCreateFields' + MaxSignals: + minimum: 1 + type: integer + NewTermsFields: + items: + type: string + maxItems: 3 + minItems: 1 + type: array + NewTermsRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/NewTermsRuleResponseFields' + NewTermsRuleCreateFields: + allOf: + - $ref: '#/components/schemas/NewTermsRuleRequiredFields' + - $ref: '#/components/schemas/NewTermsRuleOptionalFields' + - $ref: '#/components/schemas/NewTermsRuleDefaultableFields' + NewTermsRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/NewTermsRuleCreateFields' + NewTermsRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + NewTermsRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + NewTermsRulePatchFields: + allOf: + - type: object + properties: + history_window_start: + $ref: '#/components/schemas/HistoryWindowStart' + new_terms_fields: + $ref: '#/components/schemas/NewTermsFields' + query: + $ref: '#/components/schemas/RuleQuery' + type: + description: Rule type + enum: + - new_terms + type: string + - $ref: '#/components/schemas/NewTermsRuleOptionalFields' + - $ref: '#/components/schemas/NewTermsRuleDefaultableFields' + NewTermsRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/NewTermsRulePatchFields' + NewTermsRuleRequiredFields: + type: object + properties: + history_window_start: + $ref: '#/components/schemas/HistoryWindowStart' + new_terms_fields: + $ref: '#/components/schemas/NewTermsFields' + query: + $ref: '#/components/schemas/RuleQuery' + type: + description: Rule type + enum: + - new_terms + type: string + required: + - type + - query + - new_terms_fields + - history_window_start + NewTermsRuleResponseFields: + allOf: + - $ref: '#/components/schemas/NewTermsRuleRequiredFields' + - $ref: '#/components/schemas/NewTermsRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + required: + - language + NewTermsRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/NewTermsRuleCreateFields' + NonEmptyString: + description: A string that does not contain only whitespace characters + format: nonempty + minLength: 1 + type: string + NormalizedRuleAction: + additionalProperties: false + type: object + properties: + alerts_filter: + $ref: '#/components/schemas/RuleActionAlertsFilter' + frequency: + $ref: '#/components/schemas/RuleActionFrequency' + group: + $ref: '#/components/schemas/RuleActionGroup' + id: + $ref: '#/components/schemas/RuleActionId' + params: + $ref: '#/components/schemas/RuleActionParams' + required: + - id + - params + NormalizedRuleError: + type: object + properties: + err_code: + $ref: '#/components/schemas/BulkActionsDryRunErrCode' + message: + type: string + rules: + items: + $ref: '#/components/schemas/RuleDetailsInError' + type: array + status_code: + type: integer + required: + - message + - status_code + - rules + OsqueryParams: + type: object + properties: + ecs_mapping: + $ref: '#/components/schemas/EcsMapping' + pack_id: + type: string + queries: + items: + $ref: '#/components/schemas/OsqueryQuery' + type: array + query: + type: string + saved_query_id: + type: string + timeout: + type: number + OsqueryQuery: + type: object + properties: + ecs_mapping: + $ref: '#/components/schemas/EcsMapping' + id: + description: Query ID + type: string + platform: + type: string + query: + description: Query to run + type: string + removed: + type: boolean + snapshot: + type: boolean + version: + description: Query version + type: string + required: + - id + - query + OsqueryResponseAction: + type: object + properties: + action_type_id: + enum: + - .osquery + type: string + params: + $ref: '#/components/schemas/OsqueryParams' + required: + - action_type_id + - params + PlatformErrorResponse: + type: object + properties: + error: + type: string + message: + type: string + statusCode: + type: integer + required: + - statusCode + - error + - message + ProcessesParams: + type: object + properties: + command: + enum: + - kill-process + - suspend-process + type: string + comment: + type: string + config: + type: object + properties: + field: + description: Field to use instead of process.pid + type: string + overwrite: + default: true + description: Whether to overwrite field with process.pid + type: boolean + required: + - field + required: + - command + - config + QueryRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/QueryRuleResponseFields' + QueryRuleCreateFields: + allOf: + - $ref: '#/components/schemas/QueryRuleRequiredFields' + - $ref: '#/components/schemas/QueryRuleOptionalFields' + - $ref: '#/components/schemas/QueryRuleDefaultableFields' + QueryRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/QueryRuleCreateFields' + QueryRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + query: + $ref: '#/components/schemas/RuleQuery' + QueryRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + saved_id: + $ref: '#/components/schemas/SavedQueryId' + QueryRulePatchFields: + allOf: + - type: object + properties: + type: + description: Rule type + enum: + - query + type: string + - $ref: '#/components/schemas/QueryRuleOptionalFields' + - $ref: '#/components/schemas/QueryRuleDefaultableFields' + QueryRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/QueryRulePatchFields' + QueryRuleRequiredFields: + type: object + properties: + type: + description: Rule type + enum: + - query + type: string + required: + - type + QueryRuleResponseFields: + allOf: + - $ref: '#/components/schemas/QueryRuleRequiredFields' + - $ref: '#/components/schemas/QueryRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + query: + $ref: '#/components/schemas/RuleQuery' + required: + - query + - language + QueryRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/QueryRuleCreateFields' + RelatedIntegration: + description: > + Related integration is a potential dependency of a rule. It's assumed + that if the user installs + + one of the related integrations of a rule, the rule might start to work + properly because it will + + have source events (generated by this integration) potentially matching + the rule's query. + + + NOTE: Proper work is not guaranteed, because a related integration, if + installed, can be + + configured differently or generate data that is not necessarily relevant + for this rule. + + + Related integration is a combination of a Fleet package and (optionally) + one of the + + package's "integrations" that this package contains. It is represented + by 3 properties: + + + - `package`: name of the package (required, unique id) + + - `version`: version of the package (required, semver-compatible) + + - `integration`: name of the integration of this package (optional, id + within the package) + + + There are Fleet packages like `windows` that contain only one + integration; in this case, + + `integration` should be unspecified. There are also packages like `aws` + and `azure` that contain + + several integrations; in this case, `integration` should be specified. + + + @example + + const x: RelatedIntegration = { + package: 'windows', + version: '1.5.x', + }; + + + @example + + const x: RelatedIntegration = { + package: 'azure', + version: '~1.1.6', + integration: 'activitylogs', + }; + type: object + properties: + integration: + $ref: '#/components/schemas/NonEmptyString' + package: + $ref: '#/components/schemas/NonEmptyString' + version: + $ref: '#/components/schemas/NonEmptyString' + required: + - package + - version + RelatedIntegrationArray: + items: + $ref: '#/components/schemas/RelatedIntegration' + type: array + RequiredField: + description: > + Describes an Elasticsearch field that is needed for the rule to + function. + + + Almost all types of Security rules check source event documents for a + match to some kind of + + query or filter. If a document has certain field with certain values, + then it's a match and + + the rule will generate an alert. + + + Required field is an event field that must be present in the source + indices of a given rule. + + + @example + + const standardEcsField: RequiredField = { + name: 'event.action', + type: 'keyword', + ecs: true, + }; + + + @example + + const nonEcsField: RequiredField = { + name: 'winlog.event_data.AttributeLDAPDisplayName', + type: 'keyword', + ecs: false, + }; + type: object + properties: + ecs: + description: Whether the field is an ECS field + type: boolean + name: + $ref: '#/components/schemas/NonEmptyString' + description: Name of an Elasticsearch field + type: + $ref: '#/components/schemas/NonEmptyString' + description: Type of the Elasticsearch field + required: + - name + - type + - ecs + RequiredFieldArray: + items: + $ref: '#/components/schemas/RequiredField' + type: array + RequiredFieldInput: + description: >- + Input parameters to create a RequiredField. Does not include the `ecs` + field, because `ecs` is calculated on the backend based on the field + name and type. + type: object + properties: + name: + $ref: '#/components/schemas/NonEmptyString' + description: Name of an Elasticsearch field + type: + $ref: '#/components/schemas/NonEmptyString' + description: Type of an Elasticsearch field + required: + - name + - type + ResponseAction: + oneOf: + - $ref: '#/components/schemas/OsqueryResponseAction' + - $ref: '#/components/schemas/EndpointResponseAction' + ResponseFields: + type: object + properties: + created_at: + format: date-time + type: string + created_by: + type: string + execution_summary: + $ref: '#/components/schemas/RuleExecutionSummary' + id: + $ref: '#/components/schemas/RuleObjectId' + immutable: + $ref: '#/components/schemas/IsRuleImmutable' + required_fields: + $ref: '#/components/schemas/RequiredFieldArray' + revision: + minimum: 0 + type: integer + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_source: + $ref: '#/components/schemas/RuleSource' + updated_at: + format: date-time + type: string + updated_by: + type: string + required: + - id + - rule_id + - immutable + - rule_source + - updated_at + - updated_by + - created_at + - created_by + - revision + - related_integrations + - required_fields + RiskScore: + description: Risk score (0 to 100) + maximum: 100 + minimum: 0 + type: integer + RiskScoreMapping: + description: >- + Overrides generated alerts' risk_score with a value from the source + event + items: + type: object + properties: + field: + type: string + operator: + enum: + - equals + type: string + risk_score: + $ref: '#/components/schemas/RiskScore' + value: + type: string + required: + - field + - operator + - value + type: array + RuleAction: + type: object + properties: + action_type_id: + description: The action type used for sending notifications. + type: string + alerts_filter: + $ref: '#/components/schemas/RuleActionAlertsFilter' + frequency: + $ref: '#/components/schemas/RuleActionFrequency' + group: + $ref: '#/components/schemas/RuleActionGroup' + id: + $ref: '#/components/schemas/RuleActionId' + params: + $ref: '#/components/schemas/RuleActionParams' + uuid: + $ref: '#/components/schemas/NonEmptyString' + required: + - action_type_id + - id + - params + RuleActionAlertsFilter: + additionalProperties: true + type: object + RuleActionFrequency: + description: >- + The action frequency defines when the action runs (for example, only on + rule execution or at specific time intervals). + type: object + properties: + notifyWhen: + $ref: '#/components/schemas/RuleActionNotifyWhen' + summary: + description: >- + Action summary indicates whether we will send a summary notification + about all the generate alerts or notification per individual alert + type: boolean + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + nullable: true + required: + - summary + - notifyWhen + - throttle + RuleActionGroup: + description: >- + Optionally groups actions by use cases. Use `default` for alert + notifications. + type: string + RuleActionId: + description: The connector ID. + type: string + RuleActionNotifyWhen: + description: >- + The condition for throttling the notification: `onActionGroupChange`, + `onActiveAlert`, or `onThrottleInterval` + enum: + - onActiveAlert + - onThrottleInterval + - onActionGroupChange + type: string + RuleActionParams: + additionalProperties: true + description: >- + Object containing the allowed connector fields, which varies according + to the connector type. + type: object + RuleActionThrottle: + description: Defines how often rule actions are taken. + oneOf: + - enum: + - no_actions + - rule + type: string + - description: Time interval in seconds, minutes, hours, or days. + example: 1h + pattern: ^[1-9]\d*[smhd]$ + type: string + RuleAuthorArray: + items: + type: string + type: array + RuleCreateProps: + anyOf: + - $ref: '#/components/schemas/EqlRuleCreateProps' + - $ref: '#/components/schemas/QueryRuleCreateProps' + - $ref: '#/components/schemas/SavedQueryRuleCreateProps' + - $ref: '#/components/schemas/ThresholdRuleCreateProps' + - $ref: '#/components/schemas/ThreatMatchRuleCreateProps' + - $ref: '#/components/schemas/MachineLearningRuleCreateProps' + - $ref: '#/components/schemas/NewTermsRuleCreateProps' + - $ref: '#/components/schemas/EsqlRuleCreateProps' + discriminator: + propertyName: type + RuleDescription: + minLength: 1 + type: string + RuleDetailsInError: + type: object + properties: + id: + type: string + name: + type: string + required: + - id + RuleExceptionList: + type: object + properties: + id: + $ref: '#/components/schemas/NonEmptyString' + description: ID of the exception container + list_id: + $ref: '#/components/schemas/NonEmptyString' + description: List ID of the exception container + namespace_type: + description: Determines the exceptions validity in rule's Kibana space + enum: + - agnostic + - single + type: string + type: + $ref: '#/components/schemas/ExceptionListType' + required: + - id + - list_id + - type + - namespace_type + RuleExecutionMetrics: + type: object + properties: + execution_gap_duration_s: + description: Duration in seconds of execution gap + minimum: 0 + type: integer + total_enrichment_duration_ms: + description: >- + Total time spent enriching documents during current rule execution + cycle + minimum: 0 + type: integer + total_indexing_duration_ms: + description: >- + Total time spent indexing documents during current rule execution + cycle + minimum: 0 + type: integer + total_search_duration_ms: + description: >- + Total time spent performing ES searches as measured by Kibana; + includes network latency and time spent serializing/deserializing + request/response + minimum: 0 + type: integer + RuleExecutionStatus: + description: >- + Custom execution status of Security rules that is different from the + status used in the Alerting Framework. We merge our custom status with + the Framework's status to determine the resulting status of a rule. + + - going to run - @deprecated Replaced by the 'running' status but left + for backwards compatibility with rule execution events already written + to Event Log in the prior versions of Kibana. Don't use when writing + rule status changes. + + - running - Rule execution started but not reached any intermediate or + final status. + + - partial failure - Rule can partially fail for various reasons either + in the middle of an execution (in this case we update its status right + away) or in the end of it. So currently this status can be both + intermediate and final at the same time. A typical reason for a partial + failure: not all the indices that the rule searches over actually exist. + + - failed - Rule failed to execute due to unhandled exception or a reason + defined in the business logic of its executor function. + + - succeeded - Rule executed successfully without any issues. Note: this + status is just an indication of a rule's "health". The rule might or + might not generate any alerts despite of it. + enum: + - going to run + - running + - partial failure + - failed + - succeeded + type: string + RuleExecutionStatusOrder: + type: integer + RuleExecutionSummary: + type: object + properties: + last_execution: + type: object + properties: + date: + description: Date of the last execution + format: date-time + type: string + message: + type: string + metrics: + $ref: '#/components/schemas/RuleExecutionMetrics' + status: + $ref: '#/components/schemas/RuleExecutionStatus' + description: Status of the last execution + status_order: + $ref: '#/components/schemas/RuleExecutionStatusOrder' + required: + - date + - status + - status_order + - message + - metrics + required: + - last_execution + RuleFalsePositiveArray: + items: + type: string + type: array + RuleFilterArray: + items: {} + type: array + RuleInterval: + description: >- + Frequency of rule execution, using a date math range. For example, "1h" + means the rule runs every hour. Defaults to 5m (5 minutes). + type: string + RuleIntervalFrom: + description: >- + Time from which data is analyzed each time the rule runs, using a date + math range. For example, now-4200s means the rule analyzes data from 70 + minutes before its start time. Defaults to now-6m (analyzes data from 6 + minutes before the start time). + format: date-math + type: string + RuleIntervalTo: + type: string + RuleLicense: + description: The rule's license. + type: string + RuleMetadata: + additionalProperties: true + type: object + RuleName: + minLength: 1 + type: string + RuleNameOverride: + description: Sets the source field for the alert's signal.rule.name value + type: string + RuleObjectId: + $ref: '#/components/schemas/UUID' + RulePatchProps: + anyOf: + - $ref: '#/components/schemas/EqlRulePatchProps' + - $ref: '#/components/schemas/QueryRulePatchProps' + - $ref: '#/components/schemas/SavedQueryRulePatchProps' + - $ref: '#/components/schemas/ThresholdRulePatchProps' + - $ref: '#/components/schemas/ThreatMatchRulePatchProps' + - $ref: '#/components/schemas/MachineLearningRulePatchProps' + - $ref: '#/components/schemas/NewTermsRulePatchProps' + - $ref: '#/components/schemas/EsqlRulePatchProps' + RulePreviewLoggedRequest: + type: object + properties: + description: + $ref: '#/components/schemas/NonEmptyString' + duration: + type: integer + request: + $ref: '#/components/schemas/NonEmptyString' + required: + - request + RulePreviewLogs: + type: object + properties: + duration: + description: Execution duration in milliseconds + type: integer + errors: + items: + $ref: '#/components/schemas/NonEmptyString' + type: array + requests: + items: + $ref: '#/components/schemas/RulePreviewLoggedRequest' + type: array + startedAt: + $ref: '#/components/schemas/NonEmptyString' + warnings: + items: + $ref: '#/components/schemas/NonEmptyString' + type: array + required: + - errors + - warnings + - duration + RulePreviewParams: + type: object + properties: + invocationCount: + type: integer + timeframeEnd: + format: date-time + type: string + required: + - invocationCount + - timeframeEnd + RuleQuery: + type: string + RuleReferenceArray: + items: + type: string + type: array + RuleResponse: + anyOf: + - $ref: '#/components/schemas/EqlRule' + - $ref: '#/components/schemas/QueryRule' + - $ref: '#/components/schemas/SavedQueryRule' + - $ref: '#/components/schemas/ThresholdRule' + - $ref: '#/components/schemas/ThreatMatchRule' + - $ref: '#/components/schemas/MachineLearningRule' + - $ref: '#/components/schemas/NewTermsRule' + - $ref: '#/components/schemas/EsqlRule' + discriminator: + propertyName: type + RuleSignatureId: + description: Could be any string, not necessarily a UUID + type: string + RuleSource: + description: >- + Discriminated union that determines whether the rule is internally + sourced (created within the Kibana app) or has an external source, such + as the Elastic Prebuilt rules repo. + discriminator: + propertyName: type + oneOf: + - $ref: '#/components/schemas/ExternalRuleSource' + - $ref: '#/components/schemas/InternalRuleSource' + RuleTagArray: + description: >- + String array containing words and phrases to help categorize, filter, + and search rules. Defaults to an empty array. + items: + type: string + type: array + RuleUpdateProps: + anyOf: + - $ref: '#/components/schemas/EqlRuleUpdateProps' + - $ref: '#/components/schemas/QueryRuleUpdateProps' + - $ref: '#/components/schemas/SavedQueryRuleUpdateProps' + - $ref: '#/components/schemas/ThresholdRuleUpdateProps' + - $ref: '#/components/schemas/ThreatMatchRuleUpdateProps' + - $ref: '#/components/schemas/MachineLearningRuleUpdateProps' + - $ref: '#/components/schemas/NewTermsRuleUpdateProps' + - $ref: '#/components/schemas/EsqlRuleUpdateProps' + discriminator: + propertyName: type + RuleVersion: + description: The rule's version number. + minimum: 1 + type: integer + SavedObjectResolveAliasPurpose: + enum: + - savedObjectConversion + - savedObjectImport + type: string + SavedObjectResolveAliasTargetId: + type: string + SavedObjectResolveOutcome: + enum: + - exactMatch + - aliasMatch + - conflict + type: string + SavedQueryId: + type: string + SavedQueryRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/SavedQueryRuleResponseFields' + SavedQueryRuleCreateFields: + allOf: + - $ref: '#/components/schemas/SavedQueryRuleRequiredFields' + - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' + - $ref: '#/components/schemas/SavedQueryRuleDefaultableFields' + SavedQueryRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/SavedQueryRuleCreateFields' + SavedQueryRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + SavedQueryRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + query: + $ref: '#/components/schemas/RuleQuery' + SavedQueryRulePatchFields: + allOf: + - type: object + properties: + saved_id: + $ref: '#/components/schemas/SavedQueryId' + type: + description: Rule type + enum: + - saved_query + type: string + - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' + - $ref: '#/components/schemas/SavedQueryRuleDefaultableFields' + SavedQueryRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/SavedQueryRulePatchFields' + SavedQueryRuleRequiredFields: + type: object + properties: + saved_id: + $ref: '#/components/schemas/SavedQueryId' + type: + description: Rule type + enum: + - saved_query + type: string + required: + - type + - saved_id + SavedQueryRuleResponseFields: + allOf: + - $ref: '#/components/schemas/SavedQueryRuleRequiredFields' + - $ref: '#/components/schemas/SavedQueryRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + required: + - language + SavedQueryRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/SavedQueryRuleCreateFields' + SetAlertsStatusByIds: + type: object + properties: + signal_ids: + items: + $ref: '#/components/schemas/NonEmptyString' + minItems: 1 + type: array + status: + $ref: '#/components/schemas/AlertStatus' + required: + - signal_ids + - status + SetAlertsStatusByQuery: + type: object + properties: + conflicts: + default: abort + enum: + - abort + - proceed + type: string + query: + additionalProperties: true + type: object + status: + $ref: '#/components/schemas/AlertStatus' + required: + - query + - status + SetAlertTags: + type: object + properties: + tags_to_add: + $ref: '#/components/schemas/AlertTags' + tags_to_remove: + $ref: '#/components/schemas/AlertTags' + required: + - tags_to_add + - tags_to_remove + SetupGuide: + type: string + Severity: + description: Severity of the rule + enum: + - low + - medium + - high + - critical + type: string + SeverityMapping: + description: Overrides generated alerts' severity with values from the source event + items: + type: object + properties: + field: + type: string + operator: + enum: + - equals + type: string + severity: + $ref: '#/components/schemas/Severity' + value: + type: string + required: + - field + - operator + - severity + - value + type: array + SiemErrorResponse: + type: object + properties: + message: + type: string + status_code: + type: integer + required: + - status_code + - message + SortOrder: + enum: + - asc + - desc + type: string + Threat: + type: object + properties: + framework: + description: Relevant attack framework + type: string + tactic: + $ref: '#/components/schemas/ThreatTactic' + technique: + description: Array containing information on the attack techniques (optional) + items: + $ref: '#/components/schemas/ThreatTechnique' + type: array + required: + - framework + - tactic + ThreatArray: + items: + $ref: '#/components/schemas/Threat' + type: array + ThreatFilters: + items: + description: >- + Query and filter context array used to filter documents from the + Elasticsearch index containing the threat values + type: array + ThreatIndex: + items: + type: string + type: array + ThreatIndicatorPath: + description: >- + Defines the path to the threat indicator in the indicator documents + (optional) + type: string + ThreatMapping: + items: + type: object + properties: + entries: + items: + type: object + properties: + field: + $ref: '#/components/schemas/NonEmptyString' + type: + enum: + - mapping + type: string + value: + $ref: '#/components/schemas/NonEmptyString' + required: + - field + - type + - value + type: array + required: + - entries + minItems: 1 + type: array + ThreatMatchRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/ThreatMatchRuleResponseFields' + ThreatMatchRuleCreateFields: + allOf: + - $ref: '#/components/schemas/ThreatMatchRuleRequiredFields' + - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' + - $ref: '#/components/schemas/ThreatMatchRuleDefaultableFields' + ThreatMatchRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/ThreatMatchRuleCreateFields' + ThreatMatchRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + ThreatMatchRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/AlertSuppression' + concurrent_searches: + $ref: '#/components/schemas/ConcurrentSearches' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + items_per_search: + $ref: '#/components/schemas/ItemsPerSearch' + saved_id: + $ref: '#/components/schemas/SavedQueryId' + threat_filters: + $ref: '#/components/schemas/ThreatFilters' + threat_indicator_path: + $ref: '#/components/schemas/ThreatIndicatorPath' + threat_language: + $ref: '#/components/schemas/KqlQueryLanguage' + ThreatMatchRulePatchFields: + allOf: + - type: object + properties: + query: + $ref: '#/components/schemas/RuleQuery' + threat_index: + $ref: '#/components/schemas/ThreatIndex' + threat_mapping: + $ref: '#/components/schemas/ThreatMapping' + threat_query: + $ref: '#/components/schemas/ThreatQuery' + type: + description: Rule type + enum: + - threat_match + type: string + - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' + - $ref: '#/components/schemas/ThreatMatchRuleDefaultableFields' + ThreatMatchRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/ThreatMatchRulePatchFields' + ThreatMatchRuleRequiredFields: + type: object + properties: + query: + $ref: '#/components/schemas/RuleQuery' + threat_index: + $ref: '#/components/schemas/ThreatIndex' + threat_mapping: + $ref: '#/components/schemas/ThreatMapping' + threat_query: + $ref: '#/components/schemas/ThreatQuery' + type: + description: Rule type + enum: + - threat_match + type: string + required: + - type + - query + - threat_query + - threat_mapping + - threat_index + ThreatMatchRuleResponseFields: + allOf: + - $ref: '#/components/schemas/ThreatMatchRuleRequiredFields' + - $ref: '#/components/schemas/ThreatMatchRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + required: + - language + ThreatMatchRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/ThreatMatchRuleCreateFields' + ThreatQuery: + description: Query to run + type: string + ThreatSubtechnique: + type: object + properties: + id: + description: Subtechnique ID + type: string + name: + description: Subtechnique name + type: string + reference: + description: Subtechnique reference + type: string + required: + - id + - name + - reference + ThreatTactic: + type: object + properties: + id: + description: Tactic ID + type: string + name: + description: Tactic name + type: string + reference: + description: Tactic reference + type: string + required: + - id + - name + - reference + ThreatTechnique: + type: object + properties: + id: + description: Technique ID + type: string + name: + description: Technique name + type: string + reference: + description: Technique reference + type: string + subtechnique: + description: Array containing more specific information on the attack technique + items: + $ref: '#/components/schemas/ThreatSubtechnique' + type: array + required: + - id + - name + - reference + Threshold: + type: object + properties: + cardinality: + $ref: '#/components/schemas/ThresholdCardinality' + field: + $ref: '#/components/schemas/ThresholdField' + value: + $ref: '#/components/schemas/ThresholdValue' + required: + - field + - value + ThresholdAlertSuppression: + type: object + properties: + duration: + $ref: '#/components/schemas/AlertSuppressionDuration' + required: + - duration + ThresholdCardinality: + items: + type: object + properties: + field: + type: string + value: + minimum: 0 + type: integer + required: + - field + - value + type: array + ThresholdField: + description: Field to aggregate on + oneOf: + - type: string + - items: + type: string + type: array + ThresholdRule: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - version + - tags + - enabled + - risk_score_mapping + - severity_mapping + - interval + - from + - to + - actions + - exceptions_list + - author + - false_positives + - references + - max_signals + - threat + - setup + - related_integrations + - required_fields + - $ref: '#/components/schemas/ResponseFields' + - $ref: '#/components/schemas/ThresholdRuleResponseFields' + ThresholdRuleCreateFields: + allOf: + - $ref: '#/components/schemas/ThresholdRuleRequiredFields' + - $ref: '#/components/schemas/ThresholdRuleOptionalFields' + - $ref: '#/components/schemas/ThresholdRuleDefaultableFields' + ThresholdRuleCreateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/ThresholdRuleCreateFields' + ThresholdRuleDefaultableFields: + type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + ThresholdRuleOptionalFields: + type: object + properties: + alert_suppression: + $ref: '#/components/schemas/ThresholdAlertSuppression' + data_view_id: + $ref: '#/components/schemas/DataViewId' + filters: + $ref: '#/components/schemas/RuleFilterArray' + index: + $ref: '#/components/schemas/IndexPatternArray' + saved_id: + $ref: '#/components/schemas/SavedQueryId' + ThresholdRulePatchFields: + allOf: + - type: object + properties: + query: + $ref: '#/components/schemas/RuleQuery' + threshold: + $ref: '#/components/schemas/Threshold' + type: + description: Rule type + enum: + - threshold + type: string + - $ref: '#/components/schemas/ThresholdRuleOptionalFields' + - $ref: '#/components/schemas/ThresholdRuleDefaultableFields' + ThresholdRulePatchProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + - $ref: '#/components/schemas/ThresholdRulePatchFields' + ThresholdRuleRequiredFields: + type: object + properties: + query: + $ref: '#/components/schemas/RuleQuery' + threshold: + $ref: '#/components/schemas/Threshold' + type: + description: Rule type + enum: + - threshold + type: string + required: + - type + - query + - threshold + ThresholdRuleResponseFields: + allOf: + - $ref: '#/components/schemas/ThresholdRuleRequiredFields' + - $ref: '#/components/schemas/ThresholdRuleOptionalFields' + - type: object + properties: + language: + $ref: '#/components/schemas/KqlQueryLanguage' + required: + - language + ThresholdRuleUpdateProps: + allOf: + - type: object + properties: + actions: + items: + $ref: '#/components/schemas/RuleAction' + type: array + alias_purpose: + $ref: '#/components/schemas/SavedObjectResolveAliasPurpose' + alias_target_id: + $ref: '#/components/schemas/SavedObjectResolveAliasTargetId' + author: + $ref: '#/components/schemas/RuleAuthorArray' + building_block_type: + $ref: '#/components/schemas/BuildingBlockType' + description: + $ref: '#/components/schemas/RuleDescription' + enabled: + $ref: '#/components/schemas/IsRuleEnabled' + exceptions_list: + items: + $ref: '#/components/schemas/RuleExceptionList' + type: array + false_positives: + $ref: '#/components/schemas/RuleFalsePositiveArray' + from: + $ref: '#/components/schemas/RuleIntervalFrom' + id: + $ref: '#/components/schemas/RuleObjectId' + interval: + $ref: '#/components/schemas/RuleInterval' + investigation_fields: + $ref: '#/components/schemas/InvestigationFields' + license: + $ref: '#/components/schemas/RuleLicense' + max_signals: + $ref: '#/components/schemas/MaxSignals' + meta: + $ref: '#/components/schemas/RuleMetadata' + name: + $ref: '#/components/schemas/RuleName' + namespace: + $ref: '#/components/schemas/AlertsIndexNamespace' + note: + $ref: '#/components/schemas/InvestigationGuide' + outcome: + $ref: '#/components/schemas/SavedObjectResolveOutcome' + output_index: + $ref: '#/components/schemas/AlertsIndex' + references: + $ref: '#/components/schemas/RuleReferenceArray' + related_integrations: + $ref: '#/components/schemas/RelatedIntegrationArray' + required_fields: + items: + $ref: '#/components/schemas/RequiredFieldInput' + type: array + response_actions: + items: + $ref: '#/components/schemas/ResponseAction' + type: array + risk_score: + $ref: '#/components/schemas/RiskScore' + risk_score_mapping: + $ref: '#/components/schemas/RiskScoreMapping' + rule_id: + $ref: '#/components/schemas/RuleSignatureId' + rule_name_override: + $ref: '#/components/schemas/RuleNameOverride' + setup: + $ref: '#/components/schemas/SetupGuide' + severity: + $ref: '#/components/schemas/Severity' + severity_mapping: + $ref: '#/components/schemas/SeverityMapping' + tags: + $ref: '#/components/schemas/RuleTagArray' + threat: + $ref: '#/components/schemas/ThreatArray' + throttle: + $ref: '#/components/schemas/RuleActionThrottle' + timeline_id: + $ref: '#/components/schemas/TimelineTemplateId' + timeline_title: + $ref: '#/components/schemas/TimelineTemplateTitle' + timestamp_override: + $ref: '#/components/schemas/TimestampOverride' + timestamp_override_fallback_disabled: + $ref: '#/components/schemas/TimestampOverrideFallbackDisabled' + to: + $ref: '#/components/schemas/RuleIntervalTo' + version: + $ref: '#/components/schemas/RuleVersion' + required: + - name + - description + - risk_score + - severity + - $ref: '#/components/schemas/ThresholdRuleCreateFields' + ThresholdValue: + description: Threshold value + minimum: 1 + type: integer + ThrottleForBulkActions: + description: >- + The condition for throttling the notification: 'rule', 'no_actions', or + time duration + enum: + - rule + - 1h + - 1d + - 7d + type: string + TiebreakerField: + description: Sets a secondary field for sorting events + type: string + TimelineTemplateId: + description: Timeline template ID + type: string + TimelineTemplateTitle: + description: Timeline template title + type: string + TimestampField: + description: Contains the event timestamp used for sorting a sequence of events + type: string + TimestampOverride: + description: Sets the time field used to query indices + type: string + TimestampOverrideFallbackDisabled: + description: Disables the fallback to the event's @timestamp field + type: boolean + UUID: + description: A universally unique identifier + format: uuid + type: string + WarningSchema: + type: object + properties: + actionPath: + type: string + buttonLabel: + type: string + message: + type: string + type: + type: string + required: + - type + - message + - actionPath + securitySchemes: + BasicAuth: + scheme: basic + type: http +security: + - BasicAuth: [] +tags: + - description: > + Use the detections APIs to create and manage detection rules. Detection + rules search events and external alerts sent to Elastic Security and + generate detection alerts from any hits. Alerts are displayed on the + **Alerts** page and can be assigned and triaged, using the alert status to + mark them as open, closed, or acknowledged. + + > warn + + > If the API key used for authorization has different privileges than the + key that created or most recently updated a rule, the rule behavior might + change. + + + > If the API key that created a rule is deleted, or the user that created + the rule becomes inactive, the rule will stop running. + name: Security Detections API + x-displayName: Security detections diff --git a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_endpoint_management_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_endpoint_management_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_endpoint_management_api_2023_10_31.bundled.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_endpoint_management_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml new file mode 100644 index 0000000000000..184eb912ad7d1 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml @@ -0,0 +1,1292 @@ +openapi: 3.0.3 +info: + description: '' + title: Security Entity Analytics API (Elastic Cloud Serverless) + version: '2023-10-31' +servers: + - url: http://{kibana_host}:{port} + variables: + kibana_host: + default: localhost + port: + default: '5601' +paths: + /api/asset_criticality: + delete: + description: Delete the asset criticality record for a specific entity. + operationId: DeleteAssetCriticalityRecord + parameters: + - description: The ID value of the asset. + in: query + name: id_value + required: true + schema: + type: string + - description: The field representing the ID. + example: host.name + in: query + name: id_field + required: true + schema: + $ref: '#/components/schemas/IdField' + - description: If 'wait_for' the request will wait for the index refresh. + in: query + name: refresh + required: false + schema: + enum: + - wait_for + type: string + responses: + '200': + content: + application/json: + schema: + type: object + properties: + deleted: + description: >- + True if the record was deleted or false if the record did + not exist. + type: boolean + record: + $ref: '#/components/schemas/AssetCriticalityRecord' + description: The deleted record if it existed. + required: + - deleted + description: Successful response + '400': + description: Invalid request + summary: Delete an asset criticality record + tags: + - Security Entity Analytics API + get: + description: Get the asset criticality record for a specific entity. + operationId: GetAssetCriticalityRecord + parameters: + - description: The ID value of the asset. + in: query + name: id_value + required: true + schema: + type: string + - description: The field representing the ID. + example: host.name + in: query + name: id_field + required: true + schema: + $ref: '#/components/schemas/IdField' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AssetCriticalityRecord' + description: Successful response + '400': + description: Invalid request + '404': + description: Criticality record not found + summary: Get an asset criticality record + tags: + - Security Entity Analytics API + post: + description: > + Create or update an asset criticality record for a specific entity. + + + If a record already exists for the specified entity, that record is + overwritten with the specified value. If a record doesn't exist for the + specified entity, a new record is created. + operationId: CreateAssetCriticalityRecord + requestBody: + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/CreateAssetCriticalityRecord' + - type: object + properties: + refresh: + description: >- + If 'wait_for' the request will wait for the index + refresh. + enum: + - wait_for + type: string + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AssetCriticalityRecord' + description: Successful response + '400': + description: Invalid request + summary: Upsert an asset criticality record + tags: + - Security Entity Analytics API + /api/asset_criticality/bulk: + post: + description: > + Bulk upsert up to 1000 asset criticality records. + + + If asset criticality records already exist for the specified entities, + those records are overwritten with the specified values. If asset + criticality records don't exist for the specified entities, new records + are created. + operationId: BulkUpsertAssetCriticalityRecords + requestBody: + content: + application/json: + schema: + example: + records: + - criticality_level: low_impact + id_field: host.name + id_value: host-1 + - criticality_level: medium_impact + id_field: host.name + id_value: host-2 + type: object + properties: + records: + items: + $ref: '#/components/schemas/CreateAssetCriticalityRecord' + maxItems: 1000 + minItems: 1 + type: array + required: + - records + responses: + '200': + content: + application/json: + schema: + example: + errors: + - index: 0 + message: Invalid ID field + stats: + failed: 1 + successful: 1 + total: 2 + type: object + properties: + errors: + items: + $ref: '#/components/schemas/AssetCriticalityBulkUploadErrorItem' + type: array + stats: + $ref: '#/components/schemas/AssetCriticalityBulkUploadStats' + required: + - errors + - stats + description: Bulk upload successful + '413': + description: File too large + summary: Bulk upsert asset criticality records + tags: + - Security Entity Analytics API + /api/asset_criticality/list: + get: + description: List asset criticality records, paging, sorting and filtering as needed. + operationId: FindAssetCriticalityRecords + parameters: + - description: The field to sort by. + in: query + name: sort_field + required: false + schema: + enum: + - id_value + - id_field + - criticality_level + - \@timestamp + type: string + - description: The order to sort by. + in: query + name: sort_direction + required: false + schema: + enum: + - asc + - desc + type: string + - description: The page number to return. + in: query + name: page + required: false + schema: + minimum: 1 + type: integer + - description: The number of records to return per page. + in: query + name: per_page + required: false + schema: + maximum: 1000 + minimum: 1 + type: integer + - description: The kuery to filter by. + in: query + name: kuery + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + type: object + properties: + page: + minimum: 1 + type: integer + per_page: + maximum: 1000 + minimum: 1 + type: integer + records: + items: + $ref: '#/components/schemas/AssetCriticalityRecord' + type: array + total: + minimum: 0 + type: integer + required: + - records + - page + - per_page + - total + description: Bulk upload successful + summary: List asset criticality records + tags: + - Security Entity Analytics API + /api/entity_store/enable: + post: + operationId: InitEntityStore + requestBody: + content: + application/json: + schema: + type: object + properties: + fieldHistoryLength: + default: 10 + description: The number of historical values to keep for each field. + type: integer + filter: + type: string + indexPattern: + $ref: '#/components/schemas/IndexPattern' + description: Schema for the entity store initialization + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + engines: + items: + $ref: '#/components/schemas/EngineDescriptor' + type: array + succeeded: + type: boolean + description: Successful response + summary: Initialize the Entity Store + tags: + - Security Entity Analytics API + /api/entity_store/engines: + get: + operationId: ListEntityEngines + responses: + '200': + content: + application/json: + schema: + type: object + properties: + count: + type: integer + engines: + items: + $ref: '#/components/schemas/EngineDescriptor' + type: array + description: Successful response + summary: List the Entity Engines + tags: + - Security Entity Analytics API + /api/entity_store/engines/{entityType}: + delete: + operationId: DeleteEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + - description: Control flag to also delete the entity data. + in: query + name: data + required: false + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + type: object + properties: + deleted: + type: boolean + description: Successful response + summary: Delete the Entity Engine + tags: + - Security Entity Analytics API + get: + operationId: GetEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EngineDescriptor' + description: Successful response + summary: Get an Entity Engine + tags: + - Security Entity Analytics API + /api/entity_store/engines/{entityType}/init: + post: + operationId: InitEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + requestBody: + content: + application/json: + schema: + type: object + properties: + fieldHistoryLength: + default: 10 + description: The number of historical values to keep for each field. + type: integer + filter: + type: string + indexPattern: + $ref: '#/components/schemas/IndexPattern' + description: Schema for the engine initialization + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EngineDescriptor' + description: Successful response + summary: Initialize an Entity Engine + tags: + - Security Entity Analytics API + /api/entity_store/engines/{entityType}/start: + post: + operationId: StartEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + responses: + '200': + content: + application/json: + schema: + type: object + properties: + started: + type: boolean + description: Successful response + summary: Start an Entity Engine + tags: + - Security Entity Analytics API + /api/entity_store/engines/{entityType}/stop: + post: + operationId: StopEntityEngine + parameters: + - description: The entity type of the engine (either 'user' or 'host'). + in: path + name: entityType + required: true + schema: + $ref: '#/components/schemas/EntityType' + responses: + '200': + content: + application/json: + schema: + type: object + properties: + stopped: + type: boolean + description: Successful response + summary: Stop an Entity Engine + tags: + - Security Entity Analytics API + /api/entity_store/engines/apply_dataview_indices: + post: + operationId: ApplyEntityEngineDataviewIndices + responses: + '200': + content: + application/json: + schema: + type: object + properties: + result: + items: + $ref: '#/components/schemas/EngineDataviewUpdateResult' + type: array + success: + type: boolean + description: Successful response + '207': + content: + application/json: + schema: + type: object + properties: + errors: + items: + type: string + type: array + result: + items: + $ref: '#/components/schemas/EngineDataviewUpdateResult' + type: array + success: + type: boolean + description: Partial successful response + '500': + content: + application/json: + schema: + type: object + properties: + body: + type: string + statusCode: + type: number + description: Error response + summary: Apply DataView indices to all installed engines + tags: + - Security Entity Analytics API + /api/entity_store/entities/list: + get: + description: List entities records, paging, sorting and filtering as needed. + operationId: ListEntities + parameters: + - in: query + name: sort_field + required: false + schema: + type: string + - in: query + name: sort_order + required: false + schema: + enum: + - asc + - desc + type: string + - in: query + name: page + required: false + schema: + minimum: 1 + type: integer + - in: query + name: per_page + required: false + schema: + maximum: 10000 + minimum: 1 + type: integer + - description: An ES query to filter by. + in: query + name: filterQuery + required: false + schema: + type: string + - in: query + name: entities_types + required: true + schema: + items: + $ref: '#/components/schemas/EntityType' + type: array + responses: + '200': + content: + application/json: + schema: + type: object + properties: + inspect: + $ref: '#/components/schemas/InspectQuery' + page: + minimum: 1 + type: integer + per_page: + maximum: 1000 + minimum: 1 + type: integer + records: + items: + $ref: '#/components/schemas/Entity' + type: array + total: + minimum: 0 + type: integer + required: + - records + - page + - per_page + - total + description: Entities returned successfully + summary: List Entity Store Entities + tags: + - Security Entity Analytics API + /api/entity_store/status: + get: + operationId: GetEntityStoreStatus + parameters: + - description: >- + If true returns a detailed status of the engine including all it's + components + in: query + name: include_components + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + type: object + properties: + engines: + items: + allOf: + - $ref: '#/components/schemas/EngineDescriptor' + - type: object + properties: + components: + items: + $ref: '#/components/schemas/EngineComponentStatus' + type: array + type: array + status: + $ref: '#/components/schemas/StoreStatus' + required: + - status + - engines + description: Successful response + summary: Get the status of the Entity Store + tags: + - Security Entity Analytics API + /api/risk_score/engine/dangerously_delete_data: + delete: + description: >- + Cleaning up the the Risk Engine by removing the indices, mapping and + transforms + operationId: CleanUpRiskEngine + responses: + '200': + content: + application/json: + schema: + type: object + properties: + cleanup_successful: + type: boolean + description: Successful response + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json: + schema: + $ref: '#/components/schemas/CleanUpRiskEngineErrorResponse' + description: Unexpected error + summary: Cleanup the Risk Engine + tags: + - Security Entity Analytics API + /api/risk_score/engine/saved_object/configure: + patch: + description: Configuring the Risk Engine Saved Object + operationId: ConfigureRiskEngineSavedObject + requestBody: + content: + application/json: + schema: + type: object + properties: + exclude_alert_statuses: + items: + type: string + type: array + exclude_alert_tags: + items: + type: string + type: array + range: + type: object + properties: + end: + type: string + start: + type: string + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + description: Successful response + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json: + schema: + $ref: >- + #/components/schemas/ConfigureRiskEngineSavedObjectErrorResponse + description: Unexpected error + summary: Configure the Risk Engine Saved Object + tags: + - Security Entity Analytics API + /api/risk_score/engine/schedule_now: + post: + description: >- + Schedule the risk scoring engine to run as soon as possible. You can use + this to recalculate entity risk scores after updating their asset + criticality. + operationId: ScheduleRiskEngineNow + requestBody: + content: + application/json: {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RiskEngineScheduleNowResponse' + description: Successful response + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json: + schema: + $ref: '#/components/schemas/RiskEngineScheduleNowErrorResponse' + description: Unexpected error + summary: Run the risk scoring engine + tags: + - Security Entity Analytics API +components: + schemas: + AssetCriticalityBulkUploadErrorItem: + type: object + properties: + index: + type: integer + message: + type: string + required: + - message + - index + AssetCriticalityBulkUploadStats: + type: object + properties: + failed: + type: integer + successful: + type: integer + total: + type: integer + required: + - successful + - failed + - total + AssetCriticalityLevel: + description: The criticality level of the asset. + enum: + - low_impact + - medium_impact + - high_impact + - extreme_impact + type: string + AssetCriticalityRecord: + allOf: + - $ref: '#/components/schemas/CreateAssetCriticalityRecord' + - $ref: '#/components/schemas/AssetCriticalityRecordEcsParts' + - type: object + properties: + '@timestamp': + description: The time the record was created or updated. + example: '2017-07-21T17:32:28Z' + format: date-time + type: string + required: + - '@timestamp' + AssetCriticalityRecordEcsParts: + type: object + properties: + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - asset + host: + type: object + properties: + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality + name: + type: string + required: + - name + user: + type: object + properties: + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality + name: + type: string + required: + - name + required: + - asset + AssetCriticalityRecordIdParts: + type: object + properties: + id_field: + $ref: '#/components/schemas/IdField' + description: The field representing the ID. + example: host.name + id_value: + description: The ID value of the asset. + type: string + required: + - id_value + - id_field + CleanUpRiskEngineErrorResponse: + type: object + properties: + cleanup_successful: + example: false + type: boolean + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + required: + - cleanup_successful + - errors + ConfigureRiskEngineSavedObjectErrorResponse: + type: object + properties: + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + risk_engine_saved_object_configured: + example: false + type: boolean + required: + - risk_engine_saved_object_configured + - errors + CreateAssetCriticalityRecord: + allOf: + - $ref: '#/components/schemas/AssetCriticalityRecordIdParts' + - type: object + properties: + criticality_level: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality_level + EngineComponentResource: + enum: + - entity_engine + - entity_definition + - index + - component_template + - index_template + - ingest_pipeline + - enrich_policy + - task + - transform + type: string + EngineComponentStatus: + type: object + properties: + errors: + items: + type: object + properties: + message: + type: string + title: + type: string + type: array + health: + enum: + - green + - yellow + - red + - unknown + type: string + id: + type: string + installed: + type: boolean + resource: + $ref: '#/components/schemas/EngineComponentResource' + required: + - id + - installed + - resource + EngineDataviewUpdateResult: + type: object + properties: + changes: + type: object + properties: + indexPatterns: + items: + type: string + type: array + type: + type: string + required: + - type + EngineDescriptor: + type: object + properties: + error: + type: object + fieldHistoryLength: + type: integer + filter: + type: string + indexPattern: + $ref: '#/components/schemas/IndexPattern' + status: + $ref: '#/components/schemas/EngineStatus' + type: + $ref: '#/components/schemas/EntityType' + required: + - type + - indexPattern + - status + - fieldHistoryLength + EngineStatus: + enum: + - installing + - started + - stopped + - updating + - error + type: string + Entity: + oneOf: + - $ref: '#/components/schemas/UserEntity' + - $ref: '#/components/schemas/HostEntity' + EntityRiskLevels: + enum: + - Unknown + - Low + - Moderate + - High + - Critical + type: string + EntityRiskScoreRecord: + type: object + properties: + '@timestamp': + description: The time at which the risk score was calculated. + example: '2017-07-21T17:32:28Z' + format: date-time + type: string + calculated_level: + $ref: '#/components/schemas/EntityRiskLevels' + description: Lexical description of the entity's risk. + example: Critical + calculated_score: + description: The raw numeric value of the given entity's risk score. + format: double + type: number + calculated_score_norm: + description: >- + The normalized numeric value of the given entity's risk score. + Useful for comparing with other entities. + format: double + maximum: 100 + minimum: 0 + type: number + category_1_count: + description: >- + The number of risk input documents that contributed to the Category + 1 score (`category_1_score`). + format: integer + type: number + category_1_score: + description: >- + The contribution of Category 1 to the overall risk score + (`calculated_score`). Category 1 contains Detection Engine Alerts. + format: double + type: number + category_2_count: + format: integer + type: number + category_2_score: + format: double + type: number + criticality_level: + $ref: '#/components/schemas/AssetCriticalityLevel' + criticality_modifier: + format: double + type: number + id_field: + description: >- + The identifier field defining this risk score. Coupled with + `id_value`, uniquely identifies the entity being scored. + example: host.name + type: string + id_value: + description: >- + The identifier value defining this risk score. Coupled with + `id_field`, uniquely identifies the entity being scored. + example: example.host + type: string + inputs: + description: >- + A list of the highest-risk documents contributing to this risk + score. Useful for investigative purposes. + items: + $ref: '#/components/schemas/RiskScoreInput' + type: array + notes: + items: + type: string + type: array + required: + - '@timestamp' + - id_field + - id_value + - calculated_level + - calculated_score + - calculated_score_norm + - category_1_score + - category_1_count + - inputs + - notes + EntityType: + enum: + - user + - host + - service + type: string + HostEntity: + type: object + properties: + '@timestamp': + format: date-time + type: string + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality + entity: + type: object + properties: + name: + type: string + source: + type: string + required: + - name + - source + host: + type: object + properties: + architecture: + items: + type: string + type: array + domain: + items: + type: string + type: array + hostname: + items: + type: string + type: array + id: + items: + type: string + type: array + ip: + items: + type: string + type: array + mac: + items: + type: string + type: array + name: + type: string + risk: + $ref: '#/components/schemas/EntityRiskScoreRecord' + type: + items: + type: string + type: array + required: + - name + required: + - '@timestamp' + - host + - entity + IdField: + enum: + - host.name + - user.name + type: string + IndexPattern: + type: string + InspectQuery: + type: object + properties: + dsl: + items: + type: string + type: array + response: + items: + type: string + type: array + required: + - dsl + - response + RiskEngineScheduleNowErrorResponse: + type: object + properties: + full_error: + type: string + message: + type: string + required: + - message + - full_error + RiskEngineScheduleNowResponse: + type: object + properties: + success: + type: boolean + RiskScoreInput: + description: A generic representation of a document contributing to a Risk Score. + type: object + properties: + category: + description: The risk category of the risk input document. + example: category_1 + type: string + contribution_score: + format: double + type: number + description: + description: A human-readable description of the risk input document. + example: 'Generated from Detection Engine Rule: Malware Prevention Alert' + type: string + id: + description: The unique identifier (`_id`) of the original source document + example: 91a93376a507e86cfbf282166275b89f9dbdb1f0be6c8103c6ff2909ca8e1a1c + type: string + index: + description: The unique index (`_index`) of the original source document + example: .internal.alerts-security.alerts-default-000001 + type: string + risk_score: + description: The weighted risk score of the risk input document. + format: double + maximum: 100 + minimum: 0 + type: number + timestamp: + description: The @timestamp of the risk input document. + example: '2017-07-21T17:32:28Z' + type: string + required: + - id + - index + - description + - category + StoreStatus: + enum: + - not_installed + - installing + - running + - stopped + - error + type: string + TaskManagerUnavailableResponse: + description: Task manager is unavailable + type: object + properties: + message: + type: string + status_code: + minimum: 400 + type: integer + required: + - status_code + - message + UserEntity: + type: object + properties: + '@timestamp': + format: date-time + type: string + asset: + type: object + properties: + criticality: + $ref: '#/components/schemas/AssetCriticalityLevel' + required: + - criticality + entity: + type: object + properties: + name: + type: string + source: + type: string + required: + - name + - source + user: + type: object + properties: + domain: + items: + type: string + type: array + email: + items: + type: string + type: array + full_name: + items: + type: string + type: array + hash: + items: + type: string + type: array + id: + items: + type: string + type: array + name: + type: string + risk: + $ref: '#/components/schemas/EntityRiskScoreRecord' + roles: + items: + type: string + type: array + required: + - name + required: + - '@timestamp' + - user + - entity + securitySchemes: + BasicAuth: + scheme: basic + type: http +security: + - BasicAuth: [] +tags: + - description: '' + name: Security Entity Analytics API + x-displayName: Security entity analytics diff --git a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_timeline_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_timeline_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_timeline_api_2023_10_31.bundled.schema.yaml rename to x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_timeline_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/plugins/security_solution/docs/openapi/workflow.png b/x-pack/solutions/security/plugins/security_solution/docs/openapi/workflow.png similarity index 100% rename from x-pack/plugins/security_solution/docs/openapi/workflow.png rename to x-pack/solutions/security/plugins/security_solution/docs/openapi/workflow.png diff --git a/x-pack/plugins/security_solution/docs/rfcs/detection_response/prebuilt_rules_customization.md b/x-pack/solutions/security/plugins/security_solution/docs/rfcs/detection_response/prebuilt_rules_customization.md similarity index 89% rename from x-pack/plugins/security_solution/docs/rfcs/detection_response/prebuilt_rules_customization.md rename to x-pack/solutions/security/plugins/security_solution/docs/rfcs/detection_response/prebuilt_rules_customization.md index 97f7be2b8cd69..7ebf8a464df5f 100644 --- a/x-pack/plugins/security_solution/docs/rfcs/detection_response/prebuilt_rules_customization.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/rfcs/detection_response/prebuilt_rules_customization.md @@ -188,7 +188,7 @@ Notice, as well, that `immutable` and `rule_source` will continue to be part **o The OpenAPI schema will need to be modified so: -_Source: [x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml)_ +_Source: [x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/common_attributes.schema.yaml)_ ```yaml # [... file continues above...] @@ -242,7 +242,7 @@ RuleSource: # [... file continues below ...] ``` -_Source: [x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml)_ +_Source: [x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml)_ ```yaml # [... file continues above...] @@ -289,7 +289,7 @@ See the detailed explanation for this mechanism in the [Exporting and importing The `immutable` and `rule_source` fields will be ignored if passed in the request payload. -_Source: [x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts)_ +_Source: [x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/api/detection_engine/rule_management/import_rules/rule_to_import.ts)_ ```ts // [... file continues above...] @@ -314,7 +314,7 @@ export const RuleToImport = BaseCreateProps.and(TypeSpecificCreateProps).and( **The internal rule schema** needs to represent that the `immutable` and the new `ruleSource` field may not always exist, so they must be optional. -_Source: [x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts)_ +_Source: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts)_ ```ts export type BaseRuleParams = z.infer; @@ -331,7 +331,7 @@ export const BaseRuleParams = z.object({ In the internal rule schema, there are two additional important reasons why we need to make sure that these two fields optional: -- When rules are executed, a call to the method `validateRuleTypeParams` is done, which is a method that validates the passed rule's parameters using the validators defined in `x-pack/plugins/security_solution/server/lib/detection_engine/rule_types`, within each of the rule query types files (for [EQL rules](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/create_eql_alert_type.ts#L27), for example). The validation is done based on the internal rule schema `BaseRulesParams` displayed above. Having `ruleSource` as required field would cause custom rules or prebuilt rules that haven't had their schema migrated to fail during runtime. +- When rules are executed, a call to the method `validateRuleTypeParams` is done, which is a method that validates the passed rule's parameters using the validators defined in `x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types`, within each of the rule query types files (for [EQL rules](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/create_eql_alert_type.ts#L27), for example). The validation is done based on the internal rule schema `BaseRulesParams` displayed above. Having `ruleSource` as required field would cause custom rules or prebuilt rules that haven't had their schema migrated to fail during runtime. - The Rule Client `update` method also calls the `validateRuleTypeParams` to validate the rule's params. Since the Rule Client's `update` method is used in our endpoint handlers, such as and `/rules/patch` and `/_bulk_actions`, these would fail when executed against a payload of custom rule. #### Prebuilt Rule asset schema @@ -340,7 +340,7 @@ The `PrebuiltRuleAsset` type needs to be updated to include the new `source_upda Notice that this field will be a **top-level field in the Prebuilt Rule asset** schema, but will be part of the `rule_source` field in the API rule schema and internal rule schema. -_Source: [x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.ts)_ +_Source: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.ts)_ ```ts export const PrebuiltRuleAsset = BaseCreateProps.and(TypeSpecificCreateProps).and( @@ -375,7 +375,7 @@ Both the docs and the custom response header should communicate that the `immuta - is maintained for backwards compatibility reasons only - will be removed after a specific date/release -The endpoints should be updated to include a custom response header, using the [format we already use for our bulk CRUD endpoints.](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/deprecation.ts#L34-L43) +The endpoints should be updated to include a custom response header, using the [format we already use for our bulk CRUD endpoints.](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/deprecation.ts#L34-L43) ## Mapping changes @@ -385,7 +385,7 @@ No changes will be needed for the [mapping of rule saved objects](https://github **Security Rules (prebuilt rule assets) mapping** -No changes will be needed either for the `security-rule` [mapping](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_type.ts), our prebuilt rule assets. We currently have mappings for the `rule_id` and `version` fields, since we perform aggregations and filtering on those in the rule install and upgrade endpoints. No additional fields needs to be mapped in this phase. +No changes will be needed either for the `security-rule` [mapping](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_type.ts), our prebuilt rule assets. We currently have mappings for the `rule_id` and `version` fields, since we perform aggregations and filtering on those in the rule install and upgrade endpoints. No additional fields needs to be mapped in this phase. ## Plan for carrying out migrations of rule SOs @@ -403,9 +403,9 @@ Since the migration of rules will be performed as the user calls the pertinent e All endpoints belonging to Detection Rules Management that create and update -including upgrade of prebuilt rules to new version- use three CRUD methods under the hood: -- [`createRules`](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/crud/create_rules.ts) -- [`patchRules`](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/crud/patch_rules.ts) -- [`updateRules`](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/crud/update_rules.ts) +- [`createRules`](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/crud/create_rules.ts) +- [`patchRules`](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/crud/patch_rules.ts) +- [`updateRules`](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/crud/update_rules.ts) This "overuse" of these 3 methods for a variety of user actions makes their logic tightly coupled and creates a considerable amount of complexity to CRUD functions that should remain logically simple. @@ -464,7 +464,7 @@ The **normalization on read** will be carried out by a new `normalizeRuleSourceS Inside this method, we will use `normalizeRuleSourceSchemaOnRuleRead` to calculate the normalized values of `rule_source` and `immutable`. -_Source: [x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts)_ +_Source: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts)_ ```ts export const internalRuleToAPIResponse = (rule) => { @@ -488,7 +488,7 @@ export const commonParamsCamelToSnake = (params: BaseRuleParams) => { And the `normalizeRuleSourceSchemaOnRuleRead` can be defined so: -_Source: x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/prebuilt_rule_schema_migrations.ts_ (New file) +_Source: x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/prebuilt_rule_schema_migrations.ts_ (New file) ```ts interface OnReadNormalizationResult { @@ -833,13 +833,13 @@ As mentioned before, we need to assume that at any point in time, there will be This means that we will need to update the constants and KQL filters that we have hardcoded in our application to reflect the new schema: -_See source of rule params keys: [x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts)_ +_See source of rule params keys: [x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_fields.ts)_ -Will need to update the `x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts` file, where the `convertRulesFilterToKQL` method is defined. This method is used both in the frontend and in the serverside, and translates rule filter options to KQL filters that Elasticsearch can understand. +Will need to update the `x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts` file, where the `convertRulesFilterToKQL` method is defined. This method is used both in the frontend and in the serverside, and translates rule filter options to KQL filters that Elasticsearch can understand. Here, we need to update the KQL filters and the logic for fetching Elastic prebuilt and custom rules, relying on `rule_source` but with fallback to `immutable`: -_Source for `convertRulesFilterToKQL`: [x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts)_ +_Source for `convertRulesFilterToKQL`: [x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts)_ In order to retrieve Elastic prebuilt rules, we can filter for rules in which `alert.attributes.params.rule_source.type` is `external`, with a fallback to rules in which `alert.attributes.params.immutable` is `true`, for rules which have not had their schema migrated and `rule_source` does not still exists for them. @@ -861,46 +861,46 @@ Creating new methods for those unrelated actions should help clean the `createRu This endpoint currently depends on rules `alert.attributes.params.immutable` to fetch number of custom rules and number of prebuilt rules. We need to adapt its logic to rely on new `alert.attributes.params.rule_source` field, with fallback to the original, for backwards compatibility. -Specifically, the endpoint handler uses the [`findRules` utility](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts) to fetch rules based on their `immutable` param. +Specifically, the endpoint handler uses the [`findRules` utility](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts) to fetch rules based on their `immutable` param. This needs to be changed so that we rely on the `rule_source.type` param, but fallback to `immutable` if that parameter doesn't exist - i.e., in the case of non-migrated-on-write rules. We need to modify the KQL queries in a similar way to the already described in the section `KQL filters and the convertRulesFilterToKQL`. -We need to modify the `x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts` file; specifically the `fetchRulesCount` function, which contains the KQL query filters that should be updated. +We need to modify the `x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts` file; specifically the `fetchRulesCount` function, which contains the KQL query filters that should be updated. -_See Source: [x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts)_ +_See Source: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts)_ - **Coverage Overview** - `/rules_coverage_overview` (Internal): This endpoint is called to retrieve the data that populates the MITRE Coverage Overview table, and currently depends on the `immutable` field to fetch the user's installed rules. Similarly to what was described in the previous endpoint, we should update the logic so that we rely on the `rule_source.type` field, but fallback to `immutable` if that parameter doesn't exist - i.e., in the case of non-migrated-on-write rules. -This endpoint handler also uses the [`findRules` utility](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts) to fetch rules, but the KQL filter that is passed to that utility is created by the reusable [`convertRulesFilterToKQL` utility function](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts): +This endpoint handler also uses the [`findRules` utility](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts) to fetch rules, but the KQL filter that is passed to that utility is created by the reusable [`convertRulesFilterToKQL` utility function](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/detection_engine/rule_management/rule_filtering.ts): -_See Source: [x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.ts)_ +_See Source: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.ts)_ Therefor, it is enough to modify the `convertRulesFilterToKQL` utility logic as was described in the section above: [KQL filters and the `convertRulesFilterToKQL` method](#kql-filters-and-the-convertrulesfiltertokql-method) ### Prebuilt Rules endpoints -- [**(LEGACY) Get Prebuilt Rules and Timeline Status** - `/rules/prepackaged/_status`](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts) +- [**(LEGACY) Get Prebuilt Rules and Timeline Status** - `/rules/prepackaged/_status`](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts) This currently depends on rules `alert.attributes.params.immutable` to fetch the number of custom rules and number of prebuilt rules. We need to adapt these filters used in the `findRules` method used in the endpoint handler to rely on new `alert.attributes.params.rule_source.type` field, with fallback to the original, for backwards compatibility: -_See Source: [x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts)_ +_See Source: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts)_ As explained above, this endpoint fetches the installed prebuilt rules, as well, using the `getExistingPrepackagedRules` reusable utility. This function needs to be modified as well to update its KQL query filters: -_See source for `getExistingPrepackagedRules`: [x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.ts)_ +_See source for `getExistingPrepackagedRules`: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.ts)_ -- [**Get Prebuilt Rules Status** - `GET /prebuilt_rules/status` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts) +- [**Get Prebuilt Rules Status** - `GET /prebuilt_rules/status` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts) Uses `IPrebuiltRuleObjectsClient` to retrieve instances of prebuilt rules according to the `immutable` field. The Prebuilt Rule Objects client fetches prebuilt rules using the `getExistingPrepackagedRules` function mentioned above, so modifying it as described above will suffice: -_Source: [x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/prebuilt_rule_objects_client.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/prebuilt_rule_objects_client.ts)_ +_Source: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/prebuilt_rule_objects_client.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/prebuilt_rule_objects_client.ts)_ -- [**(LEGACY) Install Prebuilt Rules And Timelines** - `PUT /rules/prepackaged`](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts) +- [**(LEGACY) Install Prebuilt Rules And Timelines** - `PUT /rules/prepackaged`](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts) This endpoint fetches the installed prebuilt rules using the `getExistingPrepackagedRules` reusable utility, as well: -_Source: [x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts)_ +_Source: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts)_ Therefore, modifying the `getExistingPrepackagedRules` function as described above will suffice. @@ -910,11 +910,11 @@ All four endpoints use the Prebuilt Rule Saved Objects client (`IPrebuiltRuleObj Additionally: -- [**Review Rule Installation** - `POST /prebuilt_rules/installation/_review` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_installation/review_rule_installation_route.ts) +- [**Review Rule Installation** - `POST /prebuilt_rules/installation/_review` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_installation/review_rule_installation_route.ts) This endpoint uses the `convertPrebuiltRuleAssetToRuleResponse` method, which takes in a prebuilt rule asset and converts it to an object of type `RuleResponse`. This method has to be modified so that new prebuilt rules objects are returned by the endpoint with a `rule_source` field of type `external` and its other corresponding subfields, as well as the legacy `immutable` value of `true`. -_Source: [x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts)_ +_Source: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts)_ ```ts // [... file continues above ...] @@ -946,19 +946,19 @@ export const convertPrebuiltRuleAssetToRuleResponse = ( }; ``` -- [**Perform Rule Installation** - `POST /prebuilt_rules/installation/_install` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_installation/perform_rule_installation_route.ts) +- [**Perform Rule Installation** - `POST /prebuilt_rules/installation/_install` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_installation/perform_rule_installation_route.ts) -To install a new prebuilt rule, this endpoint uses the [`createPrebuiltRules` method](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts), which in turn calls the [`createRules` method](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/crud/create_rules.ts). +To install a new prebuilt rule, this endpoint uses the [`createPrebuiltRules` method](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts), which in turn calls the [`createRules` method](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/crud/create_rules.ts). This endpoint also suffers from the issue of tightly coupled logic explained above: using th `createRules` method for creating, importing and upgrading -in some cases- rules. We need to create a new CRUD method specifically for installing prebuilt rules, that extracts that responsibility out of the `createRules` method. -- [**Review Rule Upgrade** - `POST /prebuilt_rules/upgrade/_review` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_upgrade/review_rule_upgrade_route.ts) +- [**Review Rule Upgrade** - `POST /prebuilt_rules/upgrade/_review` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_upgrade/review_rule_upgrade_route.ts) This endpoint uses the `convertPrebuiltRuleAssetToRuleResponse` method to get a `RuleResponse`-type object from a target version of a rule provided from upstream. This method needs to be modified as described in the section that details the changes needed for the **Review Rule Installation** - `POST /prebuilt_rules/installation/_review`. This endpoint will need further changes, which will be detailed further down, and are out of the scope of Saved Object, migration and rule schema updates. -- [**Perform Rule Upgrade** - `POST /prebuilt_rules/upgrade/_perform` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts) +- [**Perform Rule Upgrade** - `POST /prebuilt_rules/upgrade/_perform` (Internal)](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts) This endpoint will require major changes to add the capability of letting users selecting a custom version of the rule with custom values for rule fields. This will be explained further below in the "Changes to upgrade `_review` and `_perform` endpoints" section. @@ -968,19 +968,19 @@ Again, this endpoint suffers from tightly coupled logic explained in [`Problem w ### Rule monitoring endpoints -- [**Detection Engine Health: Get Cluster Health** - `GET or POST /detection_engine/health/_cluster` (internal):](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts) +- [**Detection Engine Health: Get Cluster Health** - `GET or POST /detection_engine/health/_cluster` (internal):](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts) -This endpoint uses the [Detection Engine Health Client (`IDetectionEngineHealthClient`)](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client_interface.ts), calling its [`calculateClusterHealth` method](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client.ts) in the request handler. +This endpoint uses the [Detection Engine Health Client (`IDetectionEngineHealthClient`)](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client_interface.ts), calling its [`calculateClusterHealth` method](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client.ts) in the request handler. -The Detection Engine Health client receives as its parameter the [Rule Objects Health client (`IRuleObjectsHealthClient`)](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/rule_objects_health_client.ts), whose method `calculateClusterHealth` performs an aggregation on rule stats based on different rule attributes and parameters. +The Detection Engine Health client receives as its parameter the [Rule Objects Health client (`IRuleObjectsHealthClient`)](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/rule_objects_health_client.ts), whose method `calculateClusterHealth` performs an aggregation on rule stats based on different rule attributes and parameters. -This is done in the [`getRuleStatsAggregation` method](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts), where an aggregation is done over the `immutable` param. This needs to be updated to the new `rule_source.type` param, with a fallback to `immutable`: +This is done in the [`getRuleStatsAggregation` method](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts), where an aggregation is done over the `immutable` param. This needs to be updated to the new `rule_source.type` param, with a fallback to `immutable`: -_Source: x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts(https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts)_ +_Source: x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts(https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts)_ - **Detection Engine Health: Get Space Health** - `GET or POST /detection_engine/health/_space` (internal): -In this endpoint, the `getSpaceHealthAggregation` method of the Rule Objects Health client (`IRuleObjectsHealthClient`) is called instead, but it internally calls the same [`getRuleStatsAggregation` method](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts) as in the previous endpoint. +In this endpoint, the `getSpaceHealthAggregation` method of the Rule Objects Health client (`IRuleObjectsHealthClient`) is called instead, but it internally calls the same [`getRuleStatsAggregation` method](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts) as in the previous endpoint. Therefore, the update described in the endpoint above would cover this endpoint too. @@ -1017,8 +1017,8 @@ This normalization will take place within the `internalRuleToAPIResponse` method There are two helper functions used for exporting: -- [getExportByObjectIds](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts) -- [getExportAll](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts) +- [getExportByObjectIds](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts) +- [getExportAll](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts) The **Export Rules** - `POST /rules/_export` endpoint uses either the first or the second helper depending on the request payload, while **Bulk Actions** - `POST /rules/_bulk_action` uses only `getExportByObjectIds`. @@ -1026,10 +1026,10 @@ Both of these methods use `internalRuleToAPIResponse` internally to transform ru Also, in order to allow the endpoint to export both custom **and** prebuilt rules, we need to update the logic and remove the checks that we currently do server-side in both of these methods, and which filter out prebuilt rules from the response payload: -_Source for `getRulesFromObjects`: [x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts)_ +_Source for `getRulesFromObjects`: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts)_ -_Source for `getExportAll`: [x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts](https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts)_ +_Source for `getExportAll`: [x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts)_ ### Importing rules diff --git a/x-pack/plugins/security_solution/docs/siem_migration/README.md b/x-pack/solutions/security/plugins/security_solution/docs/siem_migration/README.md similarity index 100% rename from x-pack/plugins/security_solution/docs/siem_migration/README.md rename to x-pack/solutions/security/plugins/security_solution/docs/siem_migration/README.md diff --git a/x-pack/solutions/security/plugins/security_solution/docs/siem_migration/img/agent_graph.png b/x-pack/solutions/security/plugins/security_solution/docs/siem_migration/img/agent_graph.png new file mode 100644 index 0000000000000..74623e69af0c8 Binary files /dev/null and b/x-pack/solutions/security/plugins/security_solution/docs/siem_migration/img/agent_graph.png differ diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/README.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/README.md similarity index 100% rename from x-pack/plugins/security_solution/docs/testing/test_plans/README.md rename to x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/README.md diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/alerts/user_assignment.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/alerts/user_assignment.md similarity index 100% rename from x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/alerts/user_assignment.md rename to x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/alerts/user_assignment.md diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/exporting.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/exporting.md similarity index 100% rename from x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/exporting.md rename to x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/exporting.md diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/importing.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/importing.md similarity index 100% rename from x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/importing.md rename to x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/importing.md diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/installation_and_upgrade.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/installation_and_upgrade.md similarity index 100% rename from x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/installation_and_upgrade.md rename to x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/installation_and_upgrade.md diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/upgrade_review_algorithms.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/upgrade_review_algorithms.md similarity index 100% rename from x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/upgrade_review_algorithms.md rename to x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/upgrade_review_algorithms.md diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management/coverage_overview_dashboard.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management/coverage_overview_dashboard.md similarity index 100% rename from x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management/coverage_overview_dashboard.md rename to x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management/coverage_overview_dashboard.md diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management/todo b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management/todo similarity index 100% rename from x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management/todo rename to x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management/todo diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/test_plan_template.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/test_plan_template.md similarity index 100% rename from x-pack/plugins/security_solution/docs/testing/test_plans/test_plan_template.md rename to x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/test_plan_template.md diff --git a/x-pack/solutions/security/plugins/security_solution/jest.config.dev.js b/x-pack/solutions/security/plugins/security_solution/jest.config.dev.js new file mode 100644 index 0000000000000..af3cb65d0547c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/jest.config.dev.js @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../', + projects: [ + '/x-pack/solutions/security/plugins/security_solution/common/*/jest.config.js', + '/x-pack/solutions/security/plugins/security_solution/server/*/jest.config.js', + '/x-pack/solutions/security/plugins/security_solution/public/*/jest.config.js', + '/x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/*/jest.config.js', + ], +}; diff --git a/x-pack/solutions/security/plugins/security_solution/jest.integration.config.js b/x-pack/solutions/security/plugins/security_solution/jest.integration.config.js new file mode 100644 index 0000000000000..4fe389d2ec246 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/jest.integration.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test/jest_integration', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution'], +}; diff --git a/x-pack/plugins/security_solution/kibana.jsonc b/x-pack/solutions/security/plugins/security_solution/kibana.jsonc similarity index 100% rename from x-pack/plugins/security_solution/kibana.jsonc rename to x-pack/solutions/security/plugins/security_solution/kibana.jsonc diff --git a/x-pack/solutions/security/plugins/security_solution/package.json b/x-pack/solutions/security/plugins/security_solution/package.json new file mode 100644 index 0000000000000..b015d9ae3ac60 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/package.json @@ -0,0 +1,39 @@ +{ + "author": "Elastic", + "name": "@kbn/security-solution-plugin", + "version": "1.0.0", + "private": true, + "license": "Elastic License 2.0", + "scripts": { + "extract-mitre-attacks": "node scripts/extract_tactics_techniques_mitre.js && node ../../../../../scripts/eslint ./public/detections/mitre/mitre_tactics_techniques.ts --fix", + "build-beat-doc": "node scripts/beat_docs/build.js && node ../../../../../scripts/eslint ../timelines/server/utils/beat_schema/fields.ts --fix", + "cypress": "NODE_OPTIONS=--openssl-legacy-provider ../../../../../node_modules/.bin/cypress", + "cypress:burn": "yarn cypress:dw run --env burn=2 --headed", + "cypress:changed-specs-only": "yarn cypress:dw run --changed-specs-only --env burn=2", + "cypress:dw": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel --config-file plugins/security_solution/public/management/cypress/cypress.config.ts --ftr-config-file ../../../../test/defend_workflows_cypress/cli_config", + "cypress:dw:open": "yarn cypress:dw open", + "cypress:dw:run": "yarn cypress:dw run", + "cypress:dw:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel --config-file plugins/security_solution/public/management/cypress/cypress_serverless.config.ts --ftr-config-file ../../../../test/defend_workflows_cypress/serverless_config", + "cypress:dw:serverless:open": "yarn cypress:dw:serverless open", + "cypress:dw:serverless:run": "yarn cypress:dw:serverless run", + "cypress:dw:qa:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ./scripts/start_cypress_parallel_serverless --config-file plugins/security_solution/public/management/cypress/cypress_serverless_qa.config.ts", + "cypress:dw:qa:serverless:run": "yarn cypress:dw:qa:serverless run", + "cypress:dw:serverless:changed-specs-only": "yarn cypress:dw:serverless run --changed-specs-only --env burn=2", + "cypress:dw:endpoint": "echo '\n** WARNING **: Run script `cypress:dw:endpoint` no longer valid! Use `cypress:dw` instead\n'", + "cypress:dw:endpoint:run": "echo '\n** WARNING **: Run script `cypress:dw:endpoint:run` no longer valid! Use `cypress:dw:run` instead\n'", + "cypress:dw:endpoint:open": "echo '\n** WARNING **: Run script `cypress:dw:endpoint:open` no longer valid! Use `cypress:dw:open` instead\n'", + "junit:merge": "../../../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-security-solution/cypress/results/mochawesome*.json > ../../../target/kibana-security-solution/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-security-solution/cypress/results/output.json --reportDir ../../../target/kibana-security-solution/cypress/results && yarn junit:transform && mkdir -p ../../../target/junit && cp ../../../target/kibana-security-solution/cypress/results/*.xml ../../../target/junit/", + "test:generate": "node scripts/endpoint/resolver_generator", + "test:generate:serverless-dev": "NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings scripts/endpoint/resolver_generator --node https://elastic_serverless:changeme@127.0.0.1:9200 --kibana http://elastic_serverless:changeme@127.0.0.1:5601", + "mappings:generate": "node scripts/mappings/mappings_generator", + "mappings:load": "node scripts/mappings/mappings_loader", + "siem-migrations:graph:draw": "node scripts/siem_migration/draw_graphs", + "junit:transform": "node scripts/junit_transformer --pathPattern '../../../../../target/kibana-security-solution/cypress/results/*.xml' --rootDirectory ../../../ --reportName 'Security Solution Cypress' --writeInPlace", + "openapi:generate": "node scripts/openapi/generate", + "openapi:generate:debug": "node --inspect-brk scripts/openapi/generate", + "openapi:bundle:detections": "node scripts/openapi/bundle_detections", + "openapi:bundle:timeline": "node scripts/openapi/bundle_timeline", + "openapi:bundle:entity-analytics": "node scripts/openapi/bundle_entity_analytics", + "openapi:bundle:endpoint-management": "node scripts/openapi/bundle_endpoint_management" + } +} \ No newline at end of file diff --git a/x-pack/plugins/security_solution/public/app/404.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/404.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/404.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/404.tsx diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/add_to_timeline.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/add_to_timeline.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/add_to_timeline.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/add_to_timeline.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/add_to_timeline.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/add_to_timeline.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/add_to_timeline.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/add_to_timeline.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/investigate_in_new_timeline.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/investigate_in_new_timeline.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/investigate_in_new_timeline.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/investigate_in_new_timeline.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/investigate_in_new_timeline.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/investigate_in_new_timeline.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/investigate_in_new_timeline.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/cell_action/investigate_in_new_timeline.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/constants.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/data_provider.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/data_provider.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/data_provider.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/data_provider.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/discover/add_to_timeline.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/discover/add_to_timeline.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/discover/add_to_timeline.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/discover/add_to_timeline.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/discover/add_to_timeline.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/discover/add_to_timeline.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/discover/add_to_timeline.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/discover/add_to_timeline.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/index.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/index.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/lens/add_to_timeline.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/lens/add_to_timeline.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/lens/add_to_timeline.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/lens/add_to_timeline.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/add_to_timeline/lens/add_to_timeline.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/lens/add_to_timeline.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/add_to_timeline/lens/add_to_timeline.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/add_to_timeline/lens/add_to_timeline.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/constants.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/cell_action/copy_to_clipboard.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/cell_action/copy_to_clipboard.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/cell_action/copy_to_clipboard.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/cell_action/copy_to_clipboard.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/cell_action/copy_to_clipboard.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/cell_action/copy_to_clipboard.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/cell_action/copy_to_clipboard.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/cell_action/copy_to_clipboard.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/constants.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/discover/copy_to_clipboard.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/discover/copy_to_clipboard.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/discover/copy_to_clipboard.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/discover/copy_to_clipboard.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/discover/copy_to_clipboard.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/discover/copy_to_clipboard.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/discover/copy_to_clipboard.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/discover/copy_to_clipboard.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/index.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/index.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/lens/copy_to_clipboard.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/lens/copy_to_clipboard.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/lens/copy_to_clipboard.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/lens/copy_to_clipboard.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/lens/copy_to_clipboard.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/lens/copy_to_clipboard.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/copy_to_clipboard/lens/copy_to_clipboard.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/copy_to_clipboard/lens/copy_to_clipboard.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/cell_action/filter_in.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/cell_action/filter_in.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/cell_action/filter_in.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/cell_action/filter_in.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/cell_action/filter_in.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/cell_action/filter_in.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/cell_action/filter_in.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/cell_action/filter_in.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/cell_action/filter_out.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/cell_action/filter_out.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/cell_action/filter_out.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/cell_action/filter_out.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/cell_action/filter_out.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/cell_action/filter_out.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/cell_action/filter_out.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/cell_action/filter_out.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/discover/filter_in.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/discover/filter_in.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/discover/filter_in.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/discover/filter_in.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/discover/filter_in.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/discover/filter_in.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/discover/filter_in.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/discover/filter_in.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/discover/filter_out.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/discover/filter_out.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/discover/filter_out.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/discover/filter_out.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/discover/filter_out.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/discover/filter_out.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/discover/filter_out.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/discover/filter_out.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/index.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/index.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/lens/create_action.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/lens/create_action.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/lens/create_action.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/lens/create_action.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/lens/create_action.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/lens/create_action.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/lens/create_action.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/lens/create_action.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/lens/filter_in.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/lens/filter_in.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/lens/filter_in.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/lens/filter_in.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/filter/lens/filter_out.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/lens/filter_out.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/filter/lens/filter_out.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/filter/lens/filter_out.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/index.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/index.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/register.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/register.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/register.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/register.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/register_discover_histogram_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/register_discover_histogram_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/register_discover_histogram_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/register_discover_histogram_actions.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/show_top_n/cell_action/show_top_n.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/actions/show_top_n/cell_action/show_top_n.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/show_top_n/cell_action/show_top_n.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/show_top_n/cell_action/show_top_n.test.tsx diff --git a/x-pack/plugins/security_solution/public/app/actions/show_top_n/cell_action/show_top_n.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/actions/show_top_n/cell_action/show_top_n.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/show_top_n/cell_action/show_top_n.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/show_top_n/cell_action/show_top_n.tsx diff --git a/x-pack/plugins/security_solution/public/app/actions/show_top_n/index.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/show_top_n/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/show_top_n/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/show_top_n/index.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/telemetry.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/telemetry.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/telemetry.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/telemetry.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/telemetry.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/telemetry.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/telemetry.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/telemetry.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/toggle_asset_column/cell_action/toggle_asset_column.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_asset_column/cell_action/toggle_asset_column.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/toggle_asset_column/cell_action/toggle_asset_column.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_asset_column/cell_action/toggle_asset_column.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/toggle_asset_column/cell_action/toggle_asset_column.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_asset_column/cell_action/toggle_asset_column.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/toggle_asset_column/cell_action/toggle_asset_column.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_asset_column/cell_action/toggle_asset_column.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/toggle_asset_column/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_asset_column/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/toggle_asset_column/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_asset_column/index.tsx diff --git a/x-pack/plugins/security_solution/public/app/actions/toggle_column/cell_action/toggle_column.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_column/cell_action/toggle_column.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/toggle_column/cell_action/toggle_column.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_column/cell_action/toggle_column.test.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/toggle_column/cell_action/toggle_column.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_column/cell_action/toggle_column.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/toggle_column/cell_action/toggle_column.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_column/cell_action/toggle_column.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/toggle_column/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_column/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/toggle_column/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/toggle_column/index.tsx diff --git a/x-pack/plugins/security_solution/public/app/actions/types.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/types.ts diff --git a/x-pack/plugins/security_solution/public/app/actions/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/app/actions/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/actions/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/actions/utils.ts diff --git a/x-pack/plugins/security_solution/public/app/app.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/app.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/app.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/app.tsx diff --git a/x-pack/plugins/security_solution/public/app/app_routes.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/app_routes.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/app_routes.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/app_routes.test.tsx diff --git a/x-pack/plugins/security_solution/public/app/app_routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/app_routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/app_routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/app_routes.tsx diff --git a/x-pack/plugins/security_solution/public/app/components/top_values_popover/top_values_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/components/top_values_popover/top_values_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/components/top_values_popover/top_values_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/components/top_values_popover/top_values_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/app/components/top_values_popover/top_values_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/components/top_values_popover/top_values_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/components/top_values_popover/top_values_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/components/top_values_popover/top_values_popover.tsx diff --git a/x-pack/plugins/security_solution/public/app/components/top_values_popover/top_values_popover_service.ts b/x-pack/solutions/security/plugins/security_solution/public/app/components/top_values_popover/top_values_popover_service.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/components/top_values_popover/top_values_popover_service.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/components/top_values_popover/top_values_popover_service.ts diff --git a/x-pack/plugins/security_solution/public/app/home/global_header/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/home/global_header/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/home/global_header/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/home/global_header/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/app/home/global_header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/home/global_header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/home/global_header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/home/global_header/index.tsx diff --git a/x-pack/plugins/security_solution/public/app/home/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/home/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/home/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/home/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/app/home/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/home/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/home/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/home/index.tsx diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/home/template_wrapper/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/index.tsx diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/timeline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/timeline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/home/template_wrapper/timeline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/timeline/index.tsx diff --git a/x-pack/plugins/security_solution/public/app/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/index.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/app/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/app/jest.config.js new file mode 100644 index 0000000000000..41a934d84b16d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/app/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/app'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/app', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/app/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/app/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/routes.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/categories.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/categories.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/categories.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/categories.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/index.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/index.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/app_links.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/app_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/app_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/app_links.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/nav.links.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/nav.links.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/nav.links.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/nav.links.test.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/nav_links.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/nav_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/nav_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/nav_links.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/assets_links.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/assets_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/assets_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/assets_links.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/assets_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/assets_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/assets_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/assets_translations.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/dev_tools_links.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/dev_tools_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/dev_tools_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/dev_tools_links.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/dev_tools_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/dev_tools_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/dev_tools_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/dev_tools_translations.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/discover_links.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/discover_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/discover_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/discover_links.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/discover_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/discover_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/discover_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/discover_translations.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/chart_arrow.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/chart_arrow.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/chart_arrow.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/chart_arrow.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/dashboard.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/dashboard.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/dashboard.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/dashboard.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/data_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/data_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/data_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/data_view.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/ecctl.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/ecctl.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/ecctl.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/ecctl.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/endpoint.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/endpoint.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/endpoint.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/endpoint.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/filebeat.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/filebeat.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/filebeat.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/filebeat.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/filebeat_chart.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/filebeat_chart.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/filebeat_chart.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/filebeat_chart.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/fleet.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/fleet.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/fleet.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/fleet.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/infra.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/infra.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/infra.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/infra.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/intuitive.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/intuitive.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/intuitive.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/intuitive.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/jobs.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/jobs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/jobs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/jobs.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/keyword.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/keyword.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/keyword.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/keyword.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/lens.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/lens.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/lens.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/lens.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/manager.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/manager.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/manager.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/manager.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/marketing.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/marketing.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/marketing.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/marketing.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/osquery.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/osquery.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/osquery.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/osquery.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/rapid_bar_graph.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/rapid_bar_graph.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/rapid_bar_graph.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/rapid_bar_graph.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/replication.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/replication.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/replication.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/replication.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/settings.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/settings.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/settings.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/settings.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/timeline.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/visualization.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/visualization.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/icons/visualization.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/icons/visualization.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/investigations_links.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/investigations_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/investigations_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/investigations_links.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/investigations_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/investigations_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/investigations_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/investigations_translations.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/lazy_icons.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/lazy_icons.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/lazy_icons.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/lazy_icons.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/ml_links.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/ml_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/ml_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/ml_links.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/ml_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/ml_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/ml_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/ml_translations.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/settings_links.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/settings_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/settings_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/settings_links.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/settings_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/settings_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/links/sections/settings_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/settings_translations.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/navigation_tree.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/navigation_tree.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/navigation_tree.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/navigation_tree.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/solution_navigation.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/solution_navigation.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/solution_navigation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/solution_navigation.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/use_panel_side_nav_items.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/use_panel_side_nav_items.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/use_panel_side_nav_items.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/use_panel_side_nav_items.test.tsx diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/use_panel_side_nav_items.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/use_panel_side_nav_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/use_panel_side_nav_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/use_panel_side_nav_items.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/util.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/util.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/util.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/util.test.ts diff --git a/x-pack/plugins/security_solution/public/app/solution_navigation/util.ts b/x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/util.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/solution_navigation/util.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/util.ts diff --git a/x-pack/plugins/security_solution/public/app/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/app/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/translations.ts diff --git a/x-pack/plugins/security_solution/public/app/types.ts b/x-pack/solutions/security/plugins/security_solution/public/app/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/app/types.ts diff --git a/x-pack/plugins/security_solution/public/app_links.test.ts b/x-pack/solutions/security/plugins/security_solution/public/app_links.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app_links.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/app_links.test.ts diff --git a/x-pack/plugins/security_solution/public/app_links.ts b/x-pack/solutions/security/plugins/security_solution/public/app_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/app_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/app_links.ts diff --git a/x-pack/plugins/security_solution/public/assets/assets.tsx b/x-pack/solutions/security/plugins/security_solution/public/assets/assets.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assets/assets.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assets/assets.tsx diff --git a/x-pack/plugins/security_solution/public/assets/index.ts b/x-pack/solutions/security/plugins/security_solution/public/assets/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assets/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/assets/index.ts diff --git a/x-pack/plugins/security_solution/public/assets/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/assets/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assets/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assets/routes.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/comment_actions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/comment_actions/index.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/comment_actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/comment_actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/comment_actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/comment_actions/translations.ts diff --git a/x-pack/plugins/security_solution/public/assistant/content/conversations/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/content/conversations/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/content/conversations/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/content/conversations/index.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/content/conversations/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/content/conversations/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/content/conversations/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/content/conversations/translations.ts diff --git a/x-pack/plugins/security_solution/public/assistant/content/prompt_contexts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/content/prompt_contexts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/content/prompt_contexts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/content/prompt_contexts/index.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/content/prompt_contexts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/content/prompt_contexts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/content/prompt_contexts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/content/prompt_contexts/translations.ts diff --git a/x-pack/plugins/security_solution/public/assistant/content/prompts/user/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/content/prompts/user/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/content/prompts/user/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/content/prompts/user/translations.ts diff --git a/x-pack/plugins/security_solution/public/assistant/content/quick_prompts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/content/quick_prompts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/content/quick_prompts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/content/quick_prompts/index.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/content/quick_prompts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/content/quick_prompts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/content/quick_prompts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/content/quick_prompts/translations.ts diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/custom_codeblock/custom_code_block.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/custom_codeblock/custom_code_block.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/custom_codeblock/custom_code_block.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/custom_codeblock/custom_code_block.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/custom_codeblock/custom_codeblock_markdown_plugin.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/custom_codeblock/custom_codeblock_markdown_plugin.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/custom_codeblock/custom_codeblock_markdown_plugin.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/custom_codeblock/custom_codeblock_markdown_plugin.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/index.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/buttons/regenerate_response_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/buttons/regenerate_response_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/buttons/regenerate_response_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/buttons/regenerate_response_button.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/buttons/stop_generating_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/buttons/stop_generating_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/buttons/stop_generating_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/buttons/stop_generating_button.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/failed_to_load_response.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/failed_to_load_response.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/failed_to_load_response.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/failed_to_load_response.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/index.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/message_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/message_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/message_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/message_panel.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/message_text.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/message_text.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/message_text.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/message_text.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/stream_observable.test.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/stream_observable.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/stream_observable.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/stream_observable.test.ts diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/stream_observable.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/stream_observable.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/stream_observable.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/stream_observable.ts diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/types.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/types.ts diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx similarity index 94% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx index 9aa3491218f88..1293ddff34f75 100644 --- a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { useStream } from './use_stream'; const refetchCurrentConversation = jest.fn(); @@ -49,7 +49,7 @@ describe.skip('useStream', () => { }); it('Should stream response. isLoading/isStreaming are true while streaming, isLoading/isStreaming are false when streaming completes', async () => { - const { result, waitFor } = renderHook(() => useStream(defaultProps)); + const { result } = renderHook(() => useStream(defaultProps)); expect(reader).toHaveBeenCalledTimes(1); await waitFor(() => { expect(result.current).toEqual({ @@ -107,7 +107,7 @@ describe.skip('useStream', () => { releaseLock: jest.fn(), closed: jest.fn().mockResolvedValue(true), } as unknown as ReadableStreamDefaultReader; - const { result, waitForNextUpdate } = renderHook(() => + const { result } = renderHook(() => useStream({ ...defaultProps, reader: errorReader, @@ -115,7 +115,7 @@ describe.skip('useStream', () => { ); expect(result.current.error).toBeUndefined(); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); expect(result.current.error).toBe(errorMessage); expect(result.current.isLoading).toBe(false); diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/use_stream.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/use_stream.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/stream/use_stream.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/stream/use_stream.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/get_comments/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/get_comments/translations.ts diff --git a/x-pack/plugins/security_solution/public/assistant/header_link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/header_link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/header_link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/header_link.test.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/header_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/header_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/header_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/header_link.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/helpers.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/assistant/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/assistant/jest.config.js new file mode 100644 index 0000000000000..64d32fe9e0de5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/assistant/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/assistant'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/assistant', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/assistant/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/assistant/overlay.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/overlay.test.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/assistant/overlay.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/overlay.test.tsx index ca90d72b37157..eb9adf234e9fd 100644 --- a/x-pack/plugins/security_solution/public/assistant/overlay.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/assistant/overlay.test.tsx @@ -22,7 +22,14 @@ jest.mock('@kbn/elastic-assistant', () => ({ jest.mock('../common/hooks/use_experimental_features'); describe('AssistantOverlay', () => { - const queryClient = new QueryClient(); + const queryClient = new QueryClient({ + defaultOptions: { + queries: { + cacheTime: Infinity, + retry: false, + }, + }, + }); beforeEach(() => { jest.clearAllMocks(); diff --git a/x-pack/plugins/security_solution/public/assistant/overlay.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/overlay.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/overlay.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/overlay.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/assistant/provider.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/provider.test.tsx new file mode 100644 index 0000000000000..5108fb259cfb2 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/assistant/provider.test.tsx @@ -0,0 +1,208 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { waitFor, renderHook } from '@testing-library/react'; +import { httpServiceMock, type HttpSetupMock } from '@kbn/core-http-browser-mocks'; +import type { Storage } from '@kbn/kibana-utils-plugin/public'; +import { createConversations } from './provider'; +import { coreMock } from '@kbn/core/public/mocks'; +import { loadAllActions as loadConnectors } from '@kbn/triggers-actions-ui-plugin/public/common/constants'; + +jest.mock('./use_assistant_availability'); + +jest.mock('@kbn/elastic-assistant/impl/assistant/api'); +jest.mock('../common/hooks/use_license', () => ({ + useLicense: () => ({ + isEnterprise: () => true, + }), + licenseService: { + isEnterprise: () => true, + }, +})); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/constants'); +let http: HttpSetupMock = coreMock.createSetup().http; +export const mockConnectors = [ + { + id: 'my-gen-ai', + name: 'Captain Connector', + isMissingSecrets: false, + actionTypeId: '.gen-ai', + secrets: {}, + isPreconfigured: false, + isDeprecated: false, + isSystemAction: false, + config: { + apiProvider: 'OpenAI', + }, + }, + { + id: 'my-bedrock', + name: 'Professor Connector', + isMissingSecrets: false, + actionTypeId: '.bedrock', + secrets: {}, + isPreconfigured: false, + isDeprecated: false, + isSystemAction: false, + }, +]; +const conversations = { + 'Alert summary': { + id: 'Alert summary', + isDefault: true, + apiConfig: { + connectorId: 'my-bedrock', + defaultSystemPromptId: 'default-system-prompt', + }, + replacements: { + '2a39da36-f5f4-4265-90ff-a0b2df2eb932': '192.168.0.4', + 'c960d0e7-96b4-4b7a-b287-65f33fc7a812': '142.250.72.78', + '76d4a1d1-dbc3-4427-927e-b31b36856dc2': 'Test-MacBook-Pro.local', + '7bb8a91c-fcbb-4430-9742-cfaad2917d37': + '9d628163346d084eb8b3926cbf10cdee034b48e0cf83f0edf6921bc0dc83f0dd', + }, + messages: [ + { + content: + 'You are a helpful, expert assistant who answers questions about Elastic Security. Do not answer questions unrelated to Elastic Security.\nIf you answer a question related to KQL, EQL, or ES|QL, it should be immediately usable within an Elastic Security timeline; please always format the output correctly with back ticks. Any answer provided for Query DSL should also be usable in a security timeline. This means you should only ever include the "filter" portion of the query.\nUse the following context to answer questions:\n\nCONTEXT:\n"""\n@timestamp,2024-01-23T19:15:59.194Z\n_id,7bb8a91c-fcbb-4430-9742-cfaad2917d37\ndestination.ip,c960d0e7-96b4-4b7a-b287-65f33fc7a812\nevent.action,network_flow\nevent.category,network\nevent.dataset,flow\nevent.type,connection\nhost.name,76d4a1d1-dbc3-4427-927e-b31b36856dc2\nkibana.alert.last_detected,2024-01-23T19:15:59.230Z\nkibana.alert.risk_score,21\nkibana.alert.rule.description,a\nkibana.alert.rule.name,a\nkibana.alert.severity,low\nkibana.alert.workflow_status,open\nsource.ip,2a39da36-f5f4-4265-90ff-a0b2df2eb932\n"""\n\nEvaluate the event from the context above and format your output neatly in markdown syntax for my Elastic Security case.\nAdd your description, recommended actions and bulleted triage steps. Use the MITRE ATT&CK data provided to add more context and recommendations from MITRE, and hyperlink to the relevant pages on MITRE\'s website. Be sure to include the user and host risk score data from the context. Your response should include steps that point to Elastic Security specific features, including endpoint response actions, the Elastic Agent OSQuery manager integration (with example osquery queries), timelines and entity analytics and link to all the relevant Elastic Security documentation.', + role: 'user', + timestamp: '1/23/2024, 12:23:44 PM', + }, + { + role: 'assistant', + reader: {}, + timestamp: '1/23/2024, 3:29:46 PM', + isError: false, + content: '', + }, + ], + }, + 'Data Quality dashboard': { + id: 'Data Quality dashboard', + isDefault: true, + apiConfig: { + connectorId: 'my-gen-ai', + defaultSystemPromptId: 'default-system-prompt', + }, + messages: [ + { + content: + 'You are a helpful, expert assistant who answers questions about Elastic Security. ', + role: 'user', + timestamp: '18/03/2024, 12:05:03', + }, + { + role: 'assistant', + reader: {}, + timestamp: '19/03/2024, 12:05:03', + isError: false, + content: + 'Sure, here is an example of a KQL (Kibana Query Language) query that finds records where the `event.action` field contains the word "failure":\n\n```js\nevent.action: "failure"\n```\n\nIn Kibana, there are a variety of operators and techniques you can use to further enhance your search. For instance, you can combine multiple search terms or use wildcards.\n\nHere is an advanced example showing a combined search:\n\n```js\n(event.action: "failure") AND (user.name: "testuser")\n```\nThis will return only the events where `event.action` is "failure" and `user.name` is "testuser".\n\nFor more detailed information, you can check the official [Elasticsearch KQL documentation](https://www.elastic.co/guide/en/kibana/current/kuery-query.html)', + }, + ], + }, + 'Detection Rules': { + id: 'Detection Rules', + isDefault: true, + messages: [], + apiConfig: {}, + }, + 'Event summary': { + id: 'Event summary', + isDefault: true, + messages: [], + apiConfig: {}, + }, + Timeline: { + excludeFromLastConversationStorage: true, + id: 'Timeline', + isDefault: true, + messages: [], + apiConfig: {}, + }, + Welcome: { + id: 'Welcome', + isDefault: true, + theme: { + title: 'Elastic AI Assistant', + titleIcon: 'logoSecurity', + assistant: { + name: 'Elastic AI Assistant', + icon: 'logoSecurity', + }, + system: { + icon: 'logoElastic', + }, + user: {}, + }, + apiConfig: { + connectorId: 'my-gen-ai', + defaultSystemPromptId: 'default-system-prompt', + }, + messages: [], + }, +}; +const getItemStorageMock = jest.fn().mockReturnValue(conversations); +const mockStorage = { + store: jest.fn(), + set: jest.fn(), + remove: jest.fn(), + clear: jest.fn(), + get: getItemStorageMock, + getItem: jest.fn(), + setItem: jest.fn(), + removeItem: jest.fn(), +}; + +describe('createConversations', () => { + beforeEach(() => { + jest.clearAllMocks(); + http = httpServiceMock.createStartContract(); + (loadConnectors as jest.Mock).mockResolvedValue(mockConnectors); + }); + + it('should call bulk conversations with the transformed conversations from the local storage', async () => { + renderHook(() => + createConversations( + coreMock.createStart().notifications, + http, + mockStorage as unknown as Storage + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + expect(http.fetch.mock.calls[0][0]).toBe( + '/internal/elastic_assistant/current_user/conversations/_bulk_action' + ); + expect( + http.fetch.mock.calls[0].length > 1 + ? // eslint-disable-next-line @typescript-eslint/no-explicit-any + JSON.parse((http.fetch.mock.calls[0] as any[])[1]?.body).create.length + : 0 + ).toBe(2); + }); + + it('should add missing actionTypeId to apiConfig', async () => { + renderHook(() => + createConversations( + coreMock.createStart().notifications, + http, + mockStorage as unknown as Storage + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + expect(http.fetch.mock.calls[0][0]).toBe( + '/internal/elastic_assistant/current_user/conversations/_bulk_action' + ); + const createdConversations = + http.fetch.mock.calls[0].length > 1 + ? // eslint-disable-next-line @typescript-eslint/no-explicit-any + JSON.parse((http.fetch.mock.calls[0] as any[])[1]?.body)?.create + : []; + expect(createdConversations[0].apiConfig.actionTypeId).toEqual('.bedrock'); + expect(createdConversations[1].apiConfig.actionTypeId).toEqual('.gen-ai'); + }); +}); diff --git a/x-pack/plugins/security_solution/public/assistant/provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/provider.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/send_to_timeline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/send_to_timeline/index.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/stack_management/management_settings.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/stack_management/management_settings.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/stack_management/management_settings.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/stack_management/management_settings.test.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/stack_management/management_settings.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/stack_management/management_settings.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/stack_management/management_settings.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/stack_management/management_settings.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/update_query_in_form/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/update_query_in_form/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/update_query_in_form/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/update_query_in_form/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/update_query_in_form/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/update_query_in_form/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/update_query_in_form/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/update_query_in_form/index.tsx diff --git a/x-pack/plugins/security_solution/public/assistant/update_query_in_form/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/assistant/update_query_in_form/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/update_query_in_form/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/assistant/update_query_in_form/translations.ts diff --git a/x-pack/plugins/security_solution/public/assistant/use_assistant_availability/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/use_assistant_availability/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/use_assistant_availability/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/use_assistant_availability/index.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx new file mode 100644 index 0000000000000..269d09bfed0fc --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx @@ -0,0 +1,110 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react'; +import { useAssistantTelemetry } from '.'; +import { BASE_SECURITY_CONVERSATIONS } from '../content/conversations'; +import { createTelemetryServiceMock } from '../../common/lib/telemetry/telemetry_service.mock'; +import { AssistantEventTypes } from '../../common/lib/telemetry'; + +const customId = `My Convo`; +const mockedConversations = { + ...BASE_SECURITY_CONVERSATIONS, + [customId]: { + id: customId, + apiConfig: {}, + replacements: {}, + messages: [], + }, +}; + +const mockedTelemetry = { + ...createTelemetryServiceMock(), +}; + +jest.mock('../../common/lib/kibana', () => { + const original = jest.requireActual('../../common/lib/kibana'); + + return { + ...original, + useKibana: () => ({ + services: { + telemetry: mockedTelemetry, + }, + }), + }; +}); + +jest.mock('@kbn/elastic-assistant', () => ({ + getConversationById: jest.fn().mockReturnValue({ + id: customId, + title: 'Custom', + apiConfig: {}, + replacements: {}, + messages: [], + }), +})); + +const trackingFns = [ + { name: 'reportAssistantInvoked', eventType: AssistantEventTypes.AssistantInvoked }, + { name: 'reportAssistantMessageSent', eventType: AssistantEventTypes.AssistantMessageSent }, + { name: 'reportAssistantQuickPrompt', eventType: AssistantEventTypes.AssistantQuickPrompt }, +]; + +describe('useAssistantTelemetry', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should return the expected telemetry object with tracking functions', () => { + const { result } = renderHook(() => useAssistantTelemetry()); + trackingFns.forEach((fn) => { + expect(result.current).toHaveProperty(fn.name); + }); + }); + + describe.each(trackingFns)('Handles %s id masking', (fn) => { + it('Should call tracking with appropriate id when tracking is called with an isDefault=true conversation id', async () => { + const { result } = renderHook(() => useAssistantTelemetry()); + const validId = Object.keys(mockedConversations)[0]; + // @ts-ignore + const trackingFn = result.current[fn.name]; + await trackingFn({ conversationId: validId, invokedBy: 'shortcut' }); + // @ts-ignore + const trackingMockedFn = mockedTelemetry.reportEvent; + expect(trackingMockedFn).toHaveBeenCalledWith(fn.eventType, { + conversationId: validId, + invokedBy: 'shortcut', + }); + }); + + it('Should call tracking with "Custom" id when tracking is called with an isDefault=false conversation id', async () => { + const { result } = renderHook(() => useAssistantTelemetry()); + // @ts-ignore + const trackingFn = result.current[fn.name]; + await trackingFn({ conversationId: customId, invokedBy: 'shortcut' }); + // @ts-ignore + const trackingMockedFn = mockedTelemetry.reportEvent; + expect(trackingMockedFn).toHaveBeenCalledWith(fn.eventType, { + conversationId: 'Custom', + invokedBy: 'shortcut', + }); + }); + + it('Should call tracking with "Custom" id when tracking is called with an unknown conversation id', async () => { + const { result } = renderHook(() => useAssistantTelemetry()); + // @ts-ignore + const trackingFn = result.current[fn.name]; + await trackingFn({ conversationId: '123', invokedBy: 'shortcut' }); + // @ts-ignore + const trackingMockedFn = mockedTelemetry.reportEvent; + expect(trackingMockedFn).toHaveBeenCalledWith(fn.eventType, { + conversationId: 'Custom', + invokedBy: 'shortcut', + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/assistant/use_assistant_telemetry/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/use_assistant_telemetry/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/use_assistant_telemetry/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/use_assistant_telemetry/index.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx new file mode 100644 index 0000000000000..d93430e1552df --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react'; +import { useBaseConversations } from '.'; +import { useLinkAuthorized } from '../../common/links'; +import { useKibana as mockUseKibana } from '../../common/lib/kibana/__mocks__'; +import { useKibana } from '../../common/lib/kibana'; +import { BASE_SECURITY_CONVERSATIONS } from '../content/conversations'; +import { unset } from 'lodash/fp'; +import { DATA_QUALITY_DASHBOARD_CONVERSATION_ID } from '@kbn/ecs-data-quality-dashboard'; + +const BASE_CONVERSATIONS_WITHOUT_DATA_QUALITY = unset( + DATA_QUALITY_DASHBOARD_CONVERSATION_ID, + BASE_SECURITY_CONVERSATIONS +); + +jest.mock('../../common/links', () => ({ + useLinkAuthorized: jest.fn(), +})); + +jest.mock('@kbn/elastic-assistant', () => ({ + useFetchCurrentUserConversations: jest.fn().mockReturnValue({ + data: {}, + isLoading: false, + isError: false, + }), +})); + +const mockedUseKibana = { + ...mockUseKibana(), + services: { + ...mockUseKibana().services, + storage: { + ...mockUseKibana().services.storage, + get: jest.fn(), + set: jest.fn(), + }, + }, +}; + +jest.mock('../../common/lib/kibana', () => { + return { + useKibana: jest.fn(), + }; +}); + +describe('useBaseConversations', () => { + beforeEach(() => { + jest.clearAllMocks(); + + (useKibana as jest.Mock).mockReturnValue(mockedUseKibana); + }); + + it('should return conversations with "Data Quality dashboard" conversation', () => { + (useLinkAuthorized as jest.Mock).mockReturnValue(true); + const { result } = renderHook(() => useBaseConversations()); + + expect(result.current).toEqual(expect.objectContaining(BASE_SECURITY_CONVERSATIONS)); + }); + + it('should return conversations Without "Data Quality dashboard" conversation', () => { + (useLinkAuthorized as jest.Mock).mockReturnValue(false); + const { result } = renderHook(() => useBaseConversations()); + + expect(result.current).toEqual( + expect.objectContaining(BASE_CONVERSATIONS_WITHOUT_DATA_QUALITY) + ); + }); +}); diff --git a/x-pack/plugins/security_solution/public/assistant/use_conversation_store/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/assistant/use_conversation_store/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/assistant/use_conversation_store/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/assistant/use_conversation_store/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/helpers.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/index.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/jest.config.js new file mode 100644 index 0000000000000..8b15d99be93f2 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/attack_discovery'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/attack_discovery', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/links.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/links.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/links.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/links.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/links.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/links.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/alerts_settings/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/alerts_settings/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/alerts_settings/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/alerts_settings/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/alerts_settings/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/alerts_settings/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/alerts_settings/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/alerts_settings/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/footer/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/footer/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/footer/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/footer/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/footer/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/footer/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/footer/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/footer/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/is_tour_enabled/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/is_tour_enabled/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/is_tour_enabled/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/is_tour_enabled/index.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/is_tour_enabled/index.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/is_tour_enabled/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/is_tour_enabled/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/is_tour_enabled/index.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/status_bell/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/status_bell/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/status_bell/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/status_bell/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/status_bell/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/status_bell/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/status_bell/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/status_bell/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/header/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/header/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/helpers.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/generation_timing/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/generation_timing/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/generation_timing/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/generation_timing/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/generation_timing/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/generation_timing/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/generation_timing/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/generation_timing/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/helpers.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/last_times_popover/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/countdown/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/info_popover_body/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/info_popover_body/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/info_popover_body/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/info_popover_body/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/info_popover_body/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/info_popover_body/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/info_popover_body/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/info_popover_body/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/get_loading_callout_alerts_count/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/get_loading_callout_alerts_count/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/get_loading_callout_alerts_count/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/get_loading_callout_alerts_count/index.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/get_loading_callout_alerts_count/index.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/get_loading_callout_alerts_count/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/get_loading_callout_alerts_count/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/get_loading_callout_alerts_count/index.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/loading_messages/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/loading_callout/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/loading_callout/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/mock/mock_attack_discovery.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/mock/mock_attack_discovery.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/mock/mock_attack_discovery.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/mock/mock_attack_discovery.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/mock/mock_find_anonymization_fields_response.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/mock/mock_find_anonymization_fields_response.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/mock/mock_find_anonymization_fields_response.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/mock/mock_find_anonymization_fields_response.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/mock/mock_use_attack_discovery.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/mock/mock_use_attack_discovery.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/mock/mock_use_attack_discovery.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/mock/mock_use_attack_discovery.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/page_title/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/page_title/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/page_title/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/page_title/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/page_title/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/page_title/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/helpers.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/attack_discovery_markdown_parser/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_host_flyout_panel_props.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_host_flyout_panel_props.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_host_flyout_panel_props.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_host_flyout_panel_props.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_host_flyout_panel_props.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_host_flyout_panel_props.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_host_flyout_panel_props.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_host_flyout_panel_props.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_user_flyout_panel_props.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_user_flyout_panel_props.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_user_flyout_panel_props.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_user_flyout_panel_props.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_user_flyout_panel_props.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_user_flyout_panel_props.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_user_flyout_panel_props.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/get_user_flyout_panel_props.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/helpers.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/field_markdown_renderer/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/types.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_markdown_formatter/types.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actionable_summary/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actionable_summary/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actionable_summary/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actionable_summary/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actionable_summary/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actionable_summary/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actionable_summary/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actionable_summary/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/actions_placeholder/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/actions_placeholder/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/actions_placeholder/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/actions_placeholder/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/actions_placeholder/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/actions_placeholder/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/actions_placeholder/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/actions_placeholder/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/alerts_badge/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/alerts_badge/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/alerts_badge/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/alerts_badge/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/alerts_badge/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/alerts_badge/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/alerts_badge/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/alerts_badge/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/helpers.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/take_action/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx new file mode 100644 index 0000000000000..b9e5aadb018ad --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook, act } from '@testing-library/react'; + +import { useAddToNewCase } from '.'; +import { TestProviders } from '../../../../../../common/mock'; + +jest.mock('../../../../../../common/lib/kibana', () => ({ + useKibana: jest.fn().mockReturnValue({ + services: { + cases: { + hooks: { + useCasesAddToNewCaseFlyout: jest.fn().mockReturnValue({ + open: jest.fn(), + }), + }, + }, + }, + }), +})); + +describe('useAddToNewCase', () => { + it('disables the action when a user can NOT create and read cases', () => { + const canUserCreateAndReadCases = jest.fn().mockReturnValue(false); + + const { result } = renderHook( + () => + useAddToNewCase({ + canUserCreateAndReadCases, + title: 'Persistent Execution of Malicious Application', + }), + { + wrapper: TestProviders, + } + ); + + expect(result.current.disabled).toBe(true); + }); + + it('enables the action when a user can create and read cases', () => { + const canUserCreateAndReadCases = jest.fn().mockReturnValue(true); + + const { result } = renderHook( + () => + useAddToNewCase({ + canUserCreateAndReadCases, + title: 'Persistent Execution of Malicious Application', + }), + { + wrapper: TestProviders, + } + ); + + expect(result.current.disabled).toBe(false); + }); + + it('calls the onClick callback when provided', () => { + const onClick = jest.fn(); + const canUserCreateAndReadCases = jest.fn().mockReturnValue(true); + + const { result } = renderHook( + () => + useAddToNewCase({ + canUserCreateAndReadCases, + title: 'Persistent Execution of Malicious Application', + onClick, + }), + { + wrapper: TestProviders, + } + ); + + act(() => { + result.current.onAddToNewCase({ + alertIds: ['alert1', 'alert2'], + markdownComments: ['Comment 1', 'Comment 2'], + }); + }); + + expect(onClick).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx new file mode 100644 index 0000000000000..fd91ff132f204 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx @@ -0,0 +1,142 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook, act } from '@testing-library/react'; + +import { useAddToExistingCase } from '.'; +import { useKibana } from '../../../../../../common/lib/kibana'; +import { TestProviders } from '../../../../../../common/mock'; + +jest.mock('../../../../../../common/lib/kibana', () => ({ + useKibana: jest.fn().mockReturnValue({ + services: { + cases: { + hooks: { + useCasesAddToExistingCaseModal: jest.fn().mockReturnValue({ + open: jest.fn(), + }), + }, + }, + }, + }), +})); + +describe('useAddToExistingCase', () => { + const mockCanUserCreateAndReadCases = jest.fn(); + const mockOnClick = jest.fn(); + const mockAlertIds = ['alert1', 'alert2']; + const mockMarkdownComments = ['Comment 1', 'Comment 2']; + const mockReplacements = { alert1: 'replacement1', alert2: 'replacement2' }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('disables the action when a user can NOT create and read cases', () => { + mockCanUserCreateAndReadCases.mockReturnValue(false); + + const { result } = renderHook( + () => + useAddToExistingCase({ + canUserCreateAndReadCases: mockCanUserCreateAndReadCases, + onClick: mockOnClick, + }), + { + wrapper: TestProviders, + } + ); + + expect(result.current.disabled).toBe(true); + }); + + it('enables the action when a user can create and read cases', () => { + mockCanUserCreateAndReadCases.mockReturnValue(true); + + const { result } = renderHook( + () => + useAddToExistingCase({ + canUserCreateAndReadCases: mockCanUserCreateAndReadCases, + onClick: mockOnClick, + }), + { + wrapper: TestProviders, + } + ); + + expect(result.current.disabled).toBe(false); + }); + + it('calls the openSelectCaseModal function with the expected attachments', () => { + mockCanUserCreateAndReadCases.mockReturnValue(true); + const mockOpenSelectCaseModal = jest.fn(); + (useKibana as jest.Mock).mockReturnValue({ + services: { + cases: { + hooks: { + useCasesAddToExistingCaseModal: jest.fn().mockReturnValue({ + open: mockOpenSelectCaseModal, + }), + }, + }, + }, + }); + + const { result } = renderHook( + () => + useAddToExistingCase({ + canUserCreateAndReadCases: mockCanUserCreateAndReadCases, + onClick: mockOnClick, + }), + { + wrapper: TestProviders, + } + ); + + act(() => { + result.current.onAddToExistingCase({ + alertIds: mockAlertIds, + markdownComments: mockMarkdownComments, + replacements: mockReplacements, + }); + }); + + expect(mockOpenSelectCaseModal).toHaveBeenCalledWith({ + getAttachments: expect.any(Function), + }); + + const getAttachments = mockOpenSelectCaseModal.mock.calls[0][0].getAttachments; + const attachments = getAttachments(); + + expect(attachments).toHaveLength(4); + expect(attachments[0]).toEqual({ + comment: 'Comment 1', + type: 'user', + }); + expect(attachments[1]).toEqual({ + comment: 'Comment 2', + type: 'user', + }); + expect(attachments[2]).toEqual({ + alertId: 'replacement1', // <-- case attachment uses the replacement values + index: '', + rule: { + id: null, + name: null, + }, + type: 'alert', + }); + expect(attachments[3]).toEqual({ + alertId: 'replacement2', + index: '', + rule: { + id: null, + name: null, + }, + type: 'alert', + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/get_attack_discovery_markdown/get_attack_discovery_markdown.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/get_attack_discovery_markdown/get_attack_discovery_markdown.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/get_attack_discovery_markdown/get_attack_discovery_markdown.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/get_attack_discovery_markdown/get_attack_discovery_markdown.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/get_attack_discovery_markdown/get_attack_discovery_markdown.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/get_attack_discovery_markdown/get_attack_discovery_markdown.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/get_attack_discovery_markdown/get_attack_discovery_markdown.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/get_attack_discovery_markdown/get_attack_discovery_markdown.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/alerts_tab/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/alerts_tab/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/alerts_tab/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/alerts_tab/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/alerts_tab/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/alerts_tab/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/alerts_tab/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/alerts_tab/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/axis_tick/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/axis_tick/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/axis_tick/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/axis_tick/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/axis_tick/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/axis_tick/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/axis_tick/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/axis_tick/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/tactic/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/tactic/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/tactic/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/tactic/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/tactic/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/tactic/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/tactic/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/attack_chain/tactic/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/attack/mini_attack_chain/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/attack_discovery_tab/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/get_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/get_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/get_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/get_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/get_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/get_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/get_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/get_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/tabs/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts similarity index 98% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts index 86f243e9445f4..4d7d7316a9c9b 100644 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useAssistantOverlay } from '@kbn/elastic-assistant'; import { useAssistantAvailability } from '../../../../../assistant/use_assistant_availability'; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/failure/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/generate/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/generate/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/generate/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/generate/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/generate/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/generate/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/generate/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/generate/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/helpers/show_empty_states/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/helpers/show_empty_states/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/helpers/show_empty_states/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/helpers/show_empty_states/index.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/helpers/show_empty_states/index.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/helpers/show_empty_states/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/helpers/show_empty_states/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/helpers/show_empty_states/index.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/summary/summary_count/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/helpers.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx new file mode 100644 index 0000000000000..a21ff89827d4c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx @@ -0,0 +1,275 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useLoadConnectors } from '@kbn/elastic-assistant'; +import { useFetchAnonymizationFields } from '@kbn/elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields'; +import { renderHook, act } from '@testing-library/react'; +import React from 'react'; + +import { useKibana } from '../../../common/lib/kibana'; +import { usePollApi } from './use_poll_api/use_poll_api'; +import { useAttackDiscovery } from '.'; +import { ERROR_GENERATING_ATTACK_DISCOVERIES } from '../translations'; +import { useKibana as mockUseKibana } from '../../../common/lib/kibana/__mocks__'; + +jest.mock('../../../assistant/use_assistant_availability', () => ({ + useAssistantAvailability: jest.fn(() => ({ + hasAssistantPrivilege: true, + isAssistantEnabled: true, + })), +})); + +jest.mock( + '@kbn/elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields' +); +jest.mock('./use_poll_api/use_poll_api'); +jest.mock('../../../common/lib/kibana'); +const mockedUseKibana = mockUseKibana(); + +const mockAssistantAvailability = jest.fn(() => ({ + hasAssistantPrivilege: true, +})); +const mockConnectors: unknown[] = [ + { + id: 'test-id', + name: 'OpenAI connector', + actionTypeId: '.gen-ai', + }, +]; +jest.mock('@kbn/elastic-assistant', () => ({ + AssistantOverlay: () =>
, + useAssistantContext: () => ({ + alertsIndexPattern: 'alerts-index-pattern', + assistantAvailability: mockAssistantAvailability(), + knowledgeBase: { + latestAlerts: 20, + }, + }), + useLoadConnectors: jest.fn(() => ({ + isFetched: true, + data: mockConnectors, + })), +})); +const mockAttackDiscoveryPost = { + timestamp: '2024-06-13T17:50:59.409Z', + id: 'f48da2ca-b63e-4387-82d7-1423a68500aa', + backingIndex: '.ds-.kibana-elastic-ai-assistant-attack-discovery-default-2024.06.12-000001', + createdAt: '2024-06-13T17:50:59.409Z', + updatedAt: '2024-06-17T15:00:39.680Z', + lastViewedAt: '2024-06-17T15:00:39.680Z', + users: [ + { + id: 'u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0', + name: 'elastic', + }, + ], + namespace: 'default', + status: 'running', + alertsContextCount: 20, + apiConfig: { + connectorId: 'my-gpt4o-ai', + actionTypeId: '.gen-ai', + }, + attackDiscoveries: [], + replacements: { abcd: 'hostname' }, + generationIntervals: [ + { + date: '2024-06-13T17:52:47.619Z', + durationMs: 108214, + }, + ], + averageIntervalMs: 108214, +}; + +const mockAttackDiscoveries = [ + { + summaryMarkdown: + 'A critical malware incident involving {{ host.name c1f9889f-1f6b-4abc-8e65-02de89fe1054 }} and {{ user.name 71ca47cf-082e-4d35-a8e7-6e4fa4e175da }} has been detected. The malware, identified as AppPool.vbs, was executed with high privileges and attempted to evade detection.', + id: '2204421f-bb42-4b96-a200-016a5388a029', + title: 'Critical Malware Incident on Windows Host', + mitreAttackTactics: ['Initial Access', 'Execution', 'Defense Evasion'], + alertIds: [ + '43cf228ce034aeeb89a1ef41cd7fcdef1a3db574fa5237badf1fa9eaa3425c21', + '44ae9696784b3baeee75935f889e55ce77da338241230b5c488f90a8bace43e2', + '2479b1b1007952d3b6dc26344c89f44c1bb396de56f1655eca408135b3d05af8', + ], + detailsMarkdown: 'details', + entitySummaryMarkdown: + '{{ host.name c1f9889f-1f6b-4abc-8e65-02de89fe1054 }} and {{ user.name 71ca47cf-082e-4d35-a8e7-6e4fa4e175da }} are involved in a critical malware incident.', + timestamp: '2024-06-07T20:04:35.715Z', + }, +]; +const setLoadingConnectorId = jest.fn(); +const setStatus = jest.fn(); + +const SIZE = 20; + +describe('useAttackDiscovery', () => { + const mockPollApi = { + cancelAttackDiscovery: jest.fn(), + data: null, + pollApi: jest.fn(), + status: 'succeeded', + stats: null, + setStatus, + didInitialFetch: true, + }; + + beforeEach(() => { + jest.clearAllMocks(); + (useKibana as jest.Mock).mockReturnValue(mockedUseKibana); + (useFetchAnonymizationFields as jest.Mock).mockReturnValue({ data: [] }); + (usePollApi as jest.Mock).mockReturnValue(mockPollApi); + }); + + it('initializes with correct default values', () => { + const { result } = renderHook(() => + useAttackDiscovery({ + connectorId: 'test-id', + setLoadingConnectorId, + size: 20, + }) + ); + + expect(result.current.alertsContextCount).toBeNull(); + expect(result.current.approximateFutureTime).toBeNull(); + expect(result.current.attackDiscoveries).toEqual([]); + expect(result.current.failureReason).toBeNull(); + expect(result.current.generationIntervals).toEqual([]); + expect(result.current.isLoading).toBe(false); + expect(result.current.lastUpdated).toBeNull(); + expect(result.current.replacements).toEqual({}); + expect(mockPollApi.pollApi).toHaveBeenCalled(); + expect(setLoadingConnectorId).toHaveBeenCalledWith(null); + }); + + it('fetches attack discoveries and updates state correctly', async () => { + (mockedUseKibana.services.http.fetch as jest.Mock).mockResolvedValue(mockAttackDiscoveryPost); + + const { result } = renderHook(() => useAttackDiscovery({ connectorId: 'test-id', size: SIZE })); + + await act(async () => { + await result.current.fetchAttackDiscoveries(); + }); + expect(mockedUseKibana.services.http.fetch).toHaveBeenCalledWith( + '/internal/elastic_assistant/attack_discovery', + { + body: `{"alertsIndexPattern":"alerts-index-pattern","anonymizationFields":[],"replacements":{},"size":${SIZE},"subAction":"invokeAI","apiConfig":{"connectorId":"test-id","actionTypeId":".gen-ai"}}`, + method: 'POST', + version: '1', + } + ); + // called on mount + expect(mockPollApi.pollApi).toHaveBeenCalledTimes(1); + expect(setStatus).toHaveBeenCalledWith('running'); + expect(result.current.isLoadingPost).toBe(false); + }); + + it('handles fetch errors correctly', async () => { + const errorMessage = 'Fetch error'; + const error = new Error(errorMessage); + (mockedUseKibana.services.http.fetch as jest.Mock).mockRejectedValue(error); + + const { result } = renderHook(() => useAttackDiscovery({ connectorId: 'test-id', size: SIZE })); + + await act(async () => { + await result.current.fetchAttackDiscoveries(); + }); + + expect(mockedUseKibana.services.notifications.toasts.addDanger).toHaveBeenCalledWith(error, { + title: ERROR_GENERATING_ATTACK_DISCOVERIES, + text: errorMessage, + }); + expect(result.current.isLoading).toBe(false); + expect(result.current.isLoadingPost).toBe(false); + }); + + it('sets loading state based on poll status', async () => { + (usePollApi as jest.Mock).mockReturnValue({ ...mockPollApi, status: 'running' }); + const { result } = renderHook(() => + useAttackDiscovery({ + connectorId: 'test-id', + setLoadingConnectorId, + size: SIZE, + }) + ); + + expect(result.current.isLoading).toBe(true); + expect(setLoadingConnectorId).toHaveBeenCalledWith('test-id'); + }); + + it('sets state based off of poll data', () => { + (usePollApi as jest.Mock).mockReturnValue({ + ...mockPollApi, + data: { + ...mockAttackDiscoveryPost, + status: 'succeeded', + attackDiscoveries: mockAttackDiscoveries, + connectorId: 'test-id', + }, + status: 'succeeded', + }); + const { result } = renderHook(() => useAttackDiscovery({ connectorId: 'test-id', size: SIZE })); + + expect(result.current.alertsContextCount).toEqual(20); + // this is set from usePollApi + expect(result.current.approximateFutureTime).toBeNull(); + + expect(result.current.attackDiscoveries).toEqual(mockAttackDiscoveries); + expect(result.current.failureReason).toBeNull(); + expect(result.current.generationIntervals).toEqual(mockAttackDiscoveryPost.generationIntervals); + expect(result.current.isLoading).toBe(false); + expect(result.current.lastUpdated).toEqual(new Date(mockAttackDiscoveries[0].timestamp)); + expect(result.current.replacements).toEqual(mockAttackDiscoveryPost.replacements); + }); + + it('sets state based off of failed poll data', () => { + (usePollApi as jest.Mock).mockReturnValue({ + ...mockPollApi, + data: { + ...mockAttackDiscoveryPost, + status: 'failed', + failureReason: 'something bad', + connectorId: 'test-id', + }, + status: 'failed', + }); + const { result } = renderHook(() => useAttackDiscovery({ connectorId: 'test-id', size: SIZE })); + + expect(result.current.failureReason).toEqual('something bad'); + expect(result.current.isLoading).toBe(false); + expect(result.current.lastUpdated).toEqual(null); + }); + + describe('when zero connectors are configured', () => { + beforeEach(() => { + (useLoadConnectors as jest.Mock).mockReturnValue({ + isFetched: true, + data: [], // <-- zero connectors configured + }); + + renderHook(() => + useAttackDiscovery({ + connectorId: 'test-id', + setLoadingConnectorId, + size: SIZE, + }) + ); + }); + + afterEach(() => { + (useLoadConnectors as jest.Mock).mockReturnValue({ + isFetched: true, + data: mockConnectors, + }); + }); + + it('does NOT call pollApi when zero connectors are configured', () => { + expect(mockPollApi.pollApi).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx similarity index 99% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx index c243138d9ef5c..8d161657ae040 100644 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx @@ -7,7 +7,7 @@ import type { HttpSetupMock } from '@kbn/core-http-browser-mocks'; import { coreMock } from '@kbn/core/public/mocks'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { attackDiscoveryStatus, usePollApi } from './use_poll_api'; import moment from 'moment/moment'; import { kibanaMock } from '../../../../common/mock'; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/routes.tsx diff --git a/x-pack/plugins/security_solution/public/attack_discovery/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/attack_discovery/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/attack_discovery/translations.ts diff --git a/x-pack/plugins/security_solution/public/cases/attachments/external_reference.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/attachments/external_reference.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference.tsx diff --git a/x-pack/plugins/security_solution/public/cases/attachments/external_reference_children.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference_children.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/attachments/external_reference_children.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference_children.test.tsx diff --git a/x-pack/plugins/security_solution/public/cases/attachments/external_reference_children.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference_children.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/attachments/external_reference_children.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference_children.tsx diff --git a/x-pack/plugins/security_solution/public/cases/attachments/external_reference_event.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference_event.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/attachments/external_reference_event.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference_event.test.tsx diff --git a/x-pack/plugins/security_solution/public/cases/attachments/external_reference_event.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference_event.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/attachments/external_reference_event.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/attachments/external_reference_event.tsx diff --git a/x-pack/plugins/security_solution/public/cases/attachments/lazy_external_reference_children_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/attachments/lazy_external_reference_children_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/attachments/lazy_external_reference_children_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/attachments/lazy_external_reference_children_content.tsx diff --git a/x-pack/plugins/security_solution/public/cases/attachments/lazy_external_reference_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/attachments/lazy_external_reference_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/attachments/lazy_external_reference_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/attachments/lazy_external_reference_content.tsx diff --git a/x-pack/plugins/security_solution/public/cases/attachments/types.ts b/x-pack/solutions/security/plugins/security_solution/public/cases/attachments/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cases/attachments/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/cases/attachments/types.ts diff --git a/x-pack/plugins/security_solution/public/cases/components/use_insert_timeline/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/components/use_insert_timeline/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/components/use_insert_timeline/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/components/use_insert_timeline/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/cases/components/use_insert_timeline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/components/use_insert_timeline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/components/use_insert_timeline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/components/use_insert_timeline/index.tsx diff --git a/x-pack/plugins/security_solution/public/cases/index.ts b/x-pack/solutions/security/plugins/security_solution/public/cases/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cases/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/cases/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/cases/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/cases/jest.config.js new file mode 100644 index 0000000000000..cf6bc6e0ead89 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/cases/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/cases'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/cases', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/cases/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/cases/links.ts b/x-pack/solutions/security/plugins/security_solution/public/cases/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cases/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/cases/links.ts diff --git a/x-pack/plugins/security_solution/public/cases/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/cases/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/cases/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cases/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/cases/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/cases/pages/use_fetch_alert_data.ts b/x-pack/solutions/security/plugins/security_solution/public/cases/pages/use_fetch_alert_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cases/pages/use_fetch_alert_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/cases/pages/use_fetch_alert_data.ts diff --git a/x-pack/plugins/security_solution/public/cases/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/cases/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cases/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cases/routes.tsx diff --git a/x-pack/plugins/security_solution/public/cases_test_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/cases_test_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cases_test_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/cases_test_utils.ts diff --git a/x-pack/plugins/security_solution/public/cloud_defend/index.ts b/x-pack/solutions/security/plugins/security_solution/public/cloud_defend/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_defend/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/cloud_defend/index.ts diff --git a/x-pack/plugins/security_solution/public/cloud_defend/links.ts b/x-pack/solutions/security/plugins/security_solution/public/cloud_defend/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_defend/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/cloud_defend/links.ts diff --git a/x-pack/plugins/security_solution/public/cloud_defend/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_defend/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_defend/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_defend/routes.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/cloud_security_posture_pli_auth_block_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/cloud_security_posture_pli_auth_block_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/cloud_security_posture_pli_auth_block_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/cloud_security_posture_pli_auth_block_extension.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.test.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/alerts/alerts_preview.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/csp_details/alerts_findings_details_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/alerts_findings_details_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/csp_details/alerts_findings_details_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/alerts_findings_details_table.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/csp_details/insights_tab_csp.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/insights_tab_csp.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/csp_details/insights_tab_csp.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/insights_tab_csp.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/misconfiguration_findings_details_table.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/csp_details/vulnerabilities_findings_details_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/vulnerabilities_findings_details_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/csp_details/vulnerabilities_findings_details_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/csp_details/vulnerabilities_findings_details_table.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/entity_insight.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/entity_insight.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/entity_insight.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/entity_insight.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.test.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/misconfiguration/misconfiguration_preview.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.test.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/components/vulnerabilities/vulnerabilities_preview.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/hooks/use_entity_insight.ts b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/hooks/use_entity_insight.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/hooks/use_entity_insight.ts rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/hooks/use_entity_insight.ts diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/hooks/use_non_closed_alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/hooks/use_non_closed_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/hooks/use_non_closed_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/hooks/use_non_closed_alerts.ts diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/hooks/use_risk_score_data.ts b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/hooks/use_risk_score_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/hooks/use_risk_score_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/hooks/use_risk_score_data.ts diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/index.ts b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/jest.config.js new file mode 100644 index 0000000000000..de934c750ae5a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/jest.config.js @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: [ + '/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/lazy_cloud_security_posture_pli_auth_block_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/lazy_cloud_security_posture_pli_auth_block_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/lazy_cloud_security_posture_pli_auth_block_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/lazy_cloud_security_posture_pli_auth_block_extension.tsx diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/links.ts b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/links.ts diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture/routes.tsx diff --git a/x-pack/plugins/security_solution/public/common/__mocks__/experimental_features_service.ts b/x-pack/solutions/security/plugins/security_solution/public/common/__mocks__/experimental_features_service.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/__mocks__/experimental_features_service.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/__mocks__/experimental_features_service.ts diff --git a/x-pack/plugins/security_solution/public/common/__mocks__/query_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/__mocks__/query_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/__mocks__/query_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/__mocks__/query_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/common/breadcrumbs/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/common/breadcrumbs/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/breadcrumbs/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/breadcrumbs/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/common/breadcrumbs/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/breadcrumbs/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/breadcrumbs/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/breadcrumbs/index.ts diff --git a/x-pack/plugins/security_solution/public/common/breadcrumbs/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/breadcrumbs/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/breadcrumbs/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/breadcrumbs/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/accessibility/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/accessibility/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/interval_abbr_screen_reader/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/accessibility/tooltip_with_keyboard_shortcut/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/alert_count_by_rule_by_status.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/alert_count_by_rule_by_status.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/alert_count_by_rule_by_status.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/alert_count_by_rule_by_status.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/alert_count_by_rule_by_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/alert_count_by_rule_by_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/alert_count_by_rule_by_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/alert_count_by_rule_by_status.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/components/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/components/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/components/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/components/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/components/multiselect_popover/multiselect_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/components/multiselect_popover/multiselect_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/components/multiselect_popover/multiselect_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/components/multiselect_popover/multiselect_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/components/multiselect_popover/multiselect_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/components/multiselect_popover/multiselect_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/components/multiselect_popover/multiselect_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/components/multiselect_popover/multiselect_popover.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/use_alert_count_by_rule_by_status.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/use_alert_count_by_rule_by_status.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/use_alert_count_by_rule_by_status.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/use_alert_count_by_rule_by_status.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/alert_count_by_status/use_alert_count_by_rule_by_status.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/use_alert_count_by_rule_by_status.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/alert_count_by_status/use_alert_count_by_rule_by_status.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/alert_count_by_status/use_alert_count_by_rule_by_status.ts diff --git a/x-pack/plugins/security_solution/public/common/components/and_or_badge/__examples__/index.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/__examples__/index.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/and_or_badge/__examples__/index.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/__examples__/index.stories.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/and_or_badge/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/and_or_badge/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/and_or_badge/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/and_or_badge/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/and_or_badge/rounded_badge.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/rounded_badge.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/and_or_badge/rounded_badge.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/rounded_badge.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/and_or_badge/rounded_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/rounded_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/and_or_badge/rounded_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/rounded_badge.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/and_or_badge/rounded_badge_antenna.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/rounded_badge_antenna.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/and_or_badge/rounded_badge_antenna.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/rounded_badge_antenna.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/and_or_badge/rounded_badge_antenna.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/rounded_badge_antenna.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/and_or_badge/rounded_badge_antenna.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/rounded_badge_antenna.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/and_or_badge/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/and_or_badge/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/and_or_badge/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/assignees_apply_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/assignees_apply_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/assignees_apply_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/assignees_apply_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/assignees_apply_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/assignees_apply_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/assignees_apply_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/assignees_apply_panel.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/assignees_selectable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/assignees_selectable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/assignees_selectable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/assignees_selectable.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/assignees_selectable.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/assignees_selectable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/assignees_selectable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/assignees_selectable.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/constants.ts diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/mocks.ts diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/utils.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/utils.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/utils.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/utils.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/assignees/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/assignees/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/assignees/utils.ts diff --git a/x-pack/plugins/security_solution/public/common/components/auto_download/auto_download.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/auto_download/auto_download.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/auto_download/auto_download.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/auto_download/auto_download.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/auto_download/auto_download.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/auto_download/auto_download.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/auto_download/auto_download.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/auto_download/auto_download.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/autofocus_button/autofocus_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/autofocus_button/autofocus_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/autofocus_button/autofocus_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/autofocus_button/autofocus_button.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/callouts/callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/callouts/callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/callouts/callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/callouts/callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/callouts/callout_dismiss_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout_dismiss_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/callouts/callout_dismiss_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout_dismiss_button.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/callouts/callout_persistent_switcher.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout_persistent_switcher.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/callouts/callout_persistent_switcher.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout_persistent_switcher.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/callouts/callout_switcher.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout_switcher.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/callouts/callout_switcher.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout_switcher.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/callouts/callout_types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout_types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/callouts/callout_types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/callout_types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/callouts/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/callouts/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/callouts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/callouts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/callouts/use_callout_storage.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/use_callout_storage.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/callouts/use_callout_storage.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/callouts/use_callout_storage.ts diff --git a/x-pack/plugins/security_solution/public/common/components/cell_actions/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/cell_actions/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/cell_actions/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/cell_actions/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/cell_actions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/cell_actions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/cell_actions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/cell_actions/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/cell_actions/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/cell_actions/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/cell_actions/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/cell_actions/mocks.ts diff --git a/x-pack/plugins/security_solution/public/common/components/centered_loading_spinner/centered_loading_spinner.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/centered_loading_spinner/centered_loading_spinner.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/centered_loading_spinner/centered_loading_spinner.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/centered_loading_spinner/centered_loading_spinner.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/centered_loading_spinner/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/centered_loading_spinner/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/centered_loading_spinner/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/centered_loading_spinner/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/configurations/default/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/chart_settings_popover/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/chart_settings_popover/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/chart_settings_popover/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/chart_settings_popover/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/chart_settings_popover/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/chart_settings_popover/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/chart_settings_popover/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/charts/__snapshots__/areachart.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/__snapshots__/areachart.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/__snapshots__/areachart.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/__snapshots__/areachart.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/charts/__snapshots__/barchart.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/__snapshots__/barchart.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/__snapshots__/barchart.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/__snapshots__/barchart.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/charts/areachart.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/areachart.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/areachart.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/areachart.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/areachart.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/areachart.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/areachart.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/areachart.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/barchart.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/barchart.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/barchart.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/barchart.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/barchart.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/barchart.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/chart_place_holder.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/chart_place_holder.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/chart_place_holder.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/chart_place_holder.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/chart_place_holder.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/chart_place_holder.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/chart_place_holder.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/chart_place_holder.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/common.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/common.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/common.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/common.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/common.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/common.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/donutchart.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/donutchart.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/donutchart.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/donutchart.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/donutchart.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/donutchart.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/donutchart.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/donutchart_empty.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/donutchart_empty.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/donutchart_empty.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/donutchart_empty.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/donutchart_empty.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/donutchart_empty.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/donutchart_empty.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/donutchart_empty.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/draggable_legend.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/draggable_legend.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/draggable_legend.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/draggable_legend.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/draggable_legend.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/draggable_legend.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/draggable_legend_item.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/draggable_legend_item.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/legend.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/legend.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/legend.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/legend.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/legend_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/legend_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/legend_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/legend_item.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/charts/translation.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/charts/translation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/charts/translation.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/charts/translation.ts diff --git a/x-pack/plugins/security_solution/public/common/components/conditions_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/conditions_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/conditions_table/index.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/index.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/conditions_table/index.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/index.stories.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/conditions_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/conditions_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/conditions_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/conditions_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/conditions_table/test_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/test_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/conditions_table/test_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/conditions_table/test_utils.ts diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/checkbox.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/checkbox.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/control_columns/checkbox.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/checkbox.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/checkbox.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/checkbox.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/control_columns/checkbox.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/checkbox.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/control_columns/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/row_action/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/row_action/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/control_columns/row_action/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/row_action/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/row_action/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/row_action/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/control_columns/row_action/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/row_action/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/transform_control_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/transform_control_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/control_columns/transform_control_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/transform_control_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/transform_control_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/transform_control_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/control_columns/transform_control_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/transform_control_columns.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/control_columns/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/control_columns/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/current_license/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/current_license/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/current_license/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/current_license/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/discover_in_timeline/__mocks__/use_discover_in_timeline_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/__mocks__/use_discover_in_timeline_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/discover_in_timeline/__mocks__/use_discover_in_timeline_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/__mocks__/use_discover_in_timeline_actions.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/discover_in_timeline/__mocks__/use_discover_in_timeline_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/__mocks__/use_discover_in_timeline_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/discover_in_timeline/__mocks__/use_discover_in_timeline_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/__mocks__/use_discover_in_timeline_context.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/discover_in_timeline/context.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/discover_in_timeline/context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/context.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/discover_in_timeline/mocks/discover_in_timeline_provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/mocks/discover_in_timeline_provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/discover_in_timeline/mocks/discover_in_timeline_provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/mocks/discover_in_timeline_provider.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/discover_in_timeline/provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/discover_in_timeline/provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/provider.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/discover_in_timeline/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/discover_in_timeline/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_actions.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/discover_in_timeline/use_discover_in_timeline_context.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/drag_drop_context_wrapper.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/drag_drop_context_wrapper.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/drag_drop_context_wrapper.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/drag_drop_context_wrapper.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/draggable_wrapper.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/draggable_wrapper.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/draggable_wrapper.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/draggable_wrapper.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/droppable_wrapper.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/droppable_wrapper.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/droppable_wrapper.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/__snapshots__/droppable_wrapper.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/cell_actions_wrapper.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/cell_actions_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/cell_actions_wrapper.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/cell_actions_wrapper.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/cell_actions_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/cell_actions_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/cell_actions_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/cell_actions_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_keyboard_wrapper_hook/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/droppable_wrapper.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/droppable_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/droppable_wrapper.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/droppable_wrapper.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/droppable_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/droppable_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/droppable_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/droppable_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/provider_container.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/provider_container.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/provider_container.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/provider_container.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/drag_and_drop/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/field_badge/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/field_badge/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/draggables/field_badge/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/field_badge/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/field_badge/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/field_badge/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/draggables/field_badge/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/field_badge/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/draggables/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/draggables/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/draggables/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_page/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_page/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_page/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_page/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/empty_page/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_page/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_page/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_page/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_page/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_page/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_page/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_page/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_prompt/__mocks__/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/__mocks__/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_prompt/__mocks__/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/__mocks__/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_prompt/empty_prompt.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/empty_prompt.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_prompt/empty_prompt.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/empty_prompt.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_prompt/empty_prompt.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/empty_prompt.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_prompt/empty_prompt.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/empty_prompt.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_prompt/images/cloud1.svg b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/images/cloud1.svg similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_prompt/images/cloud1.svg rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/images/cloud1.svg diff --git a/x-pack/plugins/security_solution/public/common/components/empty_prompt/images/endpoint1.svg b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/images/endpoint1.svg similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_prompt/images/endpoint1.svg rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/images/endpoint1.svg diff --git a/x-pack/plugins/security_solution/public/common/components/empty_prompt/images/siem1.svg b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/images/siem1.svg similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_prompt/images/siem1.svg rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/images/siem1.svg diff --git a/x-pack/plugins/security_solution/public/common/components/empty_prompt/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_prompt/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_prompt/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_prompt/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_prompt/translations.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_value/__snapshots__/empty_value.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_value/__snapshots__/empty_value.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_value/__snapshots__/empty_value.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_value/__snapshots__/empty_value.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/empty_value/empty_value.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_value/empty_value.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_value/empty_value.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_value/empty_value.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_value/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_value/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_value/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_value/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/empty_value/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/empty_value/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/empty_value/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/empty_value/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/__snapshots__/link_to_app.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/__snapshots__/link_to_app.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/__snapshots__/link_to_app.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/__snapshots__/link_to_app.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_response_action_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_response_action_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_response_action_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_response_action_status.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_status.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_status.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_status.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_status.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/agent_status.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_status/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_status/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/agent_type_integration.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/agent_type_integration.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/agent_type_integration.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/agent_type_integration.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/agent_type_integration.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/agent_type_integration.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/agent_type_integration.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/agent_type_integration.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_integration/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/agent_type_vendor_logo.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/agent_type_vendor_logo.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/agent_type_vendor_logo.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/agent_type_vendor_logo.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/agent_type_vendor_logo.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/agent_type_vendor_logo.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/agent_type_vendor_logo.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/agent_type_vendor_logo.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/images/crowdstrike_logo.svg b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/images/crowdstrike_logo.svg similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/images/crowdstrike_logo.svg rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/images/crowdstrike_logo.svg diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/images/sentinelone_logo.svg b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/images/sentinelone_logo.svg similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/images/sentinelone_logo.svg rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/images/sentinelone_logo.svg diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/agents/agent_type_vendor_logo/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/action_completion_return_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/action_completion_return_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/action_completion_return_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/action_completion_return_button.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/__mocks__/use_host_isolation_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/__mocks__/use_host_isolation_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/__mocks__/use_host_isolation_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/__mocks__/use_host_isolation_action.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/host_isolation_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/host_isolation_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/host_isolation_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/host_isolation_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/host_isolation_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/host_isolation_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/host_isolation_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/host_isolation_panel.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/isolate.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/isolate.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/isolate.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/isolate.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/unisolate.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/unisolate.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/unisolate.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/unisolate.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_action.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_isolation_status.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_unisolation.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_unisolation.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_unisolation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_alerts/use_host_unisolation.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_cases/endpoint_host_isolation_cases_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_cases/endpoint_host_isolation_cases_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_cases/endpoint_host_isolation_cases_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_cases/endpoint_host_isolation_cases_context.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_cases/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_cases/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/from_cases/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/from_cases/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_form.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_success.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_success.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_success.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_success.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/unisolate_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/unisolate_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/unisolate_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/host_isolation/unisolate_form.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/link_to_app.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/link_to_app.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/link_to_app.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/link_to_app.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/link_to_app.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/link_to_app.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/link_to_app.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/link_to_app.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/use_responder_action_data.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/use_responder_action_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/use_responder_action_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/use_responder_action_data.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/use_responder_action_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/use_responder_action_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/use_responder_action_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/__mocks__/use_responder_action_item.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/responder_action_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/responder_action_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/responder_action_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/responder_action_button.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_data.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_data.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_data.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_data.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_data.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_data.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_item.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_item.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_item.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_item.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/from_alerts/use_responder_action_item.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/responder/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/responder/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/responder/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/route_capture.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/route_capture.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/endpoint/route_capture.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/endpoint/route_capture.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/error_toast_dispatcher/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/error_toast_dispatcher/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/error_toast_dispatcher/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/error_toast_dispatcher/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/error_toast_dispatcher/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/error_toast_dispatcher/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/error_toast_dispatcher/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/error_toast_dispatcher/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/event_id.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/event_id.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/event_id.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/event_id.ts diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/get_alert_summary_rows.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/investigate_in_timeline_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/investigate_in_timeline_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/investigate_in_timeline_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/investigate_in_timeline_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/investigate_in_timeline_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/investigate_in_timeline_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/investigate_in_timeline_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/investigate_in_timeline_button.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/mocks.ts diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/use_action_cell_data_provider.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/use_action_cell_data_provider.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/event_details/use_action_cell_data_provider.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/use_action_cell_data_provider.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/events_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_tab/histogram_configurations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/histogram_configurations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_tab/histogram_configurations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/histogram_configurations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_tab/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_tab/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_tab/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_tab/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/default_alert_headers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/default_alert_headers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/default_alert_headers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/default_alert_headers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/default_event_headers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/default_event_headers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/default_event_headers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/default_event_headers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/default_model.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/default_model.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/default_model.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/default_model.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/event_details_width_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/event_details_width_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/event_details_width_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/event_details_width_context.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/external_alerts_filter.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/external_alerts_filter.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/external_alerts_filter.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/external_alerts_filter.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/mock.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/right_top_menu.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/right_top_menu.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/right_top_menu.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/right_top_menu.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/selectors/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/selectors/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/selectors/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/selectors/index.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/selectors/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/selectors/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/selectors/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/selectors/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/selectors/mock_state.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/selectors/mock_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/selectors/mock_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/selectors/mock_state.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/shared/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/shared/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/shared/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/shared/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/stateful_event_context.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/stateful_event_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/stateful_event_context.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/stateful_event_context.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/styles.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/summary_view_select/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/summary_view_select/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/summary_view_select/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/summary_view_select/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/use_alert_bulk_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/use_alert_bulk_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/use_alert_bulk_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/use_alert_bulk_actions.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/events_viewer/use_timelines_events.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/use_timelines_events.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/events_viewer/use_timelines_events.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer/use_timelines_events.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/exit_full_screen/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/exit_full_screen/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/exit_full_screen/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/exit_full_screen/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/exit_full_screen/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/exit_full_screen/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/exit_full_screen/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/exit_full_screen/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/exit_full_screen/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/exit_full_screen/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/exit_full_screen/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/exit_full_screen/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/field_selection/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/field_selection/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/field_selection/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/field_selection/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/field_selection/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/field_selection/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/field_selection/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/field_selection/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/filter_bar/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/filter_bar/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/filter_bar/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/filter_bar/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/filter_by_assignees_popover/filter_by_assignees_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/filter_by_assignees_popover/filter_by_assignees_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/filter_by_assignees_popover/filter_by_assignees_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/filter_by_assignees_popover/filter_by_assignees_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/filter_by_assignees_popover/filter_by_assignees_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/filter_by_assignees_popover/filter_by_assignees_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/filter_by_assignees_popover/filter_by_assignees_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/filter_by_assignees_popover/filter_by_assignees_popover.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/filter_by_assignees_popover/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/filter_by_assignees_popover/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/filter_by_assignees_popover/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/filter_by_assignees_popover/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/common/components/filters_global/__snapshots__/filters_global.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/filters_global/__snapshots__/filters_global.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/filters_global/__snapshots__/filters_global.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/filters_global/__snapshots__/filters_global.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/filters_global/filters_global.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/filters_global/filters_global.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/filters_global/filters_global.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/filters_global/filters_global.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/filters_global/filters_global.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/filters_global/filters_global.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/filters_global/filters_global.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/filters_global/filters_global.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/filters_global/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/filters_global/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/filters_global/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/filters_global/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/first_last_seen/first_last_seen.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/first_last_seen/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/first_last_seen/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/first_last_seen/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/first_last_seen/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_bytes/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_bytes/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_bytes/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_bytes/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_bytes/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_bytes/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_bytes/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_bytes/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_bytes/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_bytes/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_bytes/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_bytes/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_date/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_date/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_date/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_date/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_date/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_date/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_date/maybe_date.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/maybe_date.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_date/maybe_date.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/maybe_date.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_date/maybe_date.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/maybe_date.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_date/maybe_date.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_date/maybe_date.ts diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_number/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_number/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_number/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_number/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/formatted_number/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_number/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/formatted_number/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/formatted_number/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/README.md b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/README.md similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/README.md rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/README.md diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/__mocks__/tour_step.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/__mocks__/tour_step.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/__mocks__/tour_step.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/__mocks__/tour_step.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/cases_tour_steps.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/cases_tour_steps.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/cases_tour_steps.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/cases_tour_steps.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/cases_tour_steps.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/cases_tour_steps.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/cases_tour_steps.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/cases_tour_steps.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_config.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_config.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_config.ts diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_step.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_step.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_step.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_step.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_step.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_step.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_step.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/tour_step.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/use_hidden_by_flyout.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/use_hidden_by_flyout.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour/use_hidden_by_flyout.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/guided_onboarding_tour/use_hidden_by_flyout.ts diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/action_icon_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/action_icon_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/action_icon_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/action_icon_item.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/actions.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/add_note_icon_item.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/add_note_icon_item.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/add_note_icon_item.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/add_note_icon_item.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/add_note_icon_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/add_note_icon_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/add_note_icon_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/add_note_icon_item.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/header_actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/header_actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/header_actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/header_actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/header_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/header_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/header_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/header_actions.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/pin_event_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/pin_event_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/pin_event_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/pin_event_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/pin_event_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/pin_event_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/pin_event_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/pin_event_action.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/__snapshots__/editable_title.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/__snapshots__/editable_title.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/__snapshots__/editable_title.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/__snapshots__/editable_title.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/__snapshots__/title.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/__snapshots__/title.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/__snapshots__/title.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/__snapshots__/title.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/editable_title.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/editable_title.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/editable_title.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/editable_title.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/editable_title.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/editable_title.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/editable_title.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/editable_title.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/title.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/title.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/title.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/title.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/title.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/title.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/title.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/title.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_page/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_page/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/header_section/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_section/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_section/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_section/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/header_section/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_section/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_section/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_section/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/header_section/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/header_section/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/header_section/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/header_section/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/health_truncate_text/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/health_truncate_text/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/health_truncate_text/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/health_truncate_text/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/health_truncate_text/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/health_truncate_text/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/health_truncate_text/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/health_truncate_text/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/help_menu/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/help_menu/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/help_menu/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/help_menu/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/hover_popover/hover_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/hover_popover/hover_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/hover_popover/hover_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/hover_popover/hover_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/hover_popover/hover_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/hover_popover/hover_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/hover_popover/hover_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/hover_popover/hover_popover.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/hover_popover/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/hover_popover/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/hover_popover/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/hover_popover/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/hover_visibility_container/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/hover_visibility_container/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/hover_visibility_container/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/hover_visibility_container/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/hover_visibility_container/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/hover_visibility_container/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/hover_visibility_container/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/hover_visibility_container/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/import_data_modal/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/__snapshots__/action_connectors_warning.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/__snapshots__/action_connectors_warning.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/__snapshots__/action_connectors_warning.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/__snapshots__/action_connectors_warning.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/action_connectors_warning.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/action_connectors_warning.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/action_connectors_warning.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/action_connectors_warning.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/action_connectors_warning/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/import_data_modal/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/import_data_modal/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/import_data_modal/utils.ts diff --git a/x-pack/plugins/security_solution/public/common/components/inspect/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/inspect/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/inspect/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/inspect/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/inspect/modal.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/modal.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/inspect/modal.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/modal.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/inspect/modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/inspect/modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/modal.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/inspect/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/inspect/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/inspect/use_inspect.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/use_inspect.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/inspect/use_inspect.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/inspect/use_inspect.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/item_details_card/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/item_details_card/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/item_details_card/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/item_details_card/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/item_details_card/index.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/item_details_card/index.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/item_details_card/index.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/item_details_card/index.stories.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/item_details_card/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/item_details_card/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/item_details_card/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/item_details_card/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/item_details_card/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/item_details_card/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/item_details_card/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/item_details_card/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/last_event_time/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/last_event_time/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/last_event_time/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/last_event_time/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/last_event_time/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/last_event_time/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/last_event_time/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/last_event_time/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/last_updated_at/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/last_updated_at/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/last_updated_at/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/last_updated_at/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/last_updated_at/last_updated_at.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/last_updated_at/last_updated_at.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/last_updated_at/last_updated_at.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/last_updated_at/last_updated_at.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/last_updated_at/last_updated_at.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/last_updated_at/last_updated_at.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/last_updated_at/last_updated_at.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/last_updated_at/last_updated_at.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/line_clamp/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/line_clamp/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/line_clamp/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/line_clamp/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/line_clamp/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/line_clamp/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/line_clamp/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/line_clamp/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/line_clamp/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/line_clamp/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/line_clamp/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/line_clamp/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/link_icon/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_icon/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_icon/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_icon/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/link_icon/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_icon/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_icon/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_icon/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/link_icon/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_icon/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_icon/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_icon/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_case.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_case.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_case.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_case.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_detection_engine.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_detection_engine.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_detection_engine.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_detection_engine.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_hosts.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_hosts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_hosts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_hosts.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_kubernetes.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_kubernetes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_kubernetes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_kubernetes.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_landing.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_landing.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_landing.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_landing.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_network.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_network.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_network.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_network.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_timelines.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_timelines.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_timelines.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_timelines.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_users.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_users.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/link_to/redirect_to_users.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/link_to/redirect_to_users.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links/__mocks__/link_props.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links/__mocks__/link_props.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links/__mocks__/link_props.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links/__mocks__/link_props.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links/link_props.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links/link_props.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links/link_props.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links/link_props.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/links/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/links_to_docs/doc_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/doc_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links_to_docs/doc_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/doc_link.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links_to_docs/external_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/external_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links_to_docs/external_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/external_link.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links_to_docs/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links_to_docs/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links_to_docs/links_components.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/links_components.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links_to_docs/links_components.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/links_components.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/links_to_docs/links_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/links_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/links_to_docs/links_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/links_to_docs/links_translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/loader/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/loader/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/loader/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/loader/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/loader/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/loader/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/loader/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/loader/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/loader/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/loader/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/loader/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/loader/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/local_storage/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/local_storage/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/local_storage/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/local_storage/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/local_storage/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/local_storage/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/local_storage/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/local_storage/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/local_storage/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/local_storage/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/local_storage/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/local_storage/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/local_storage/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/local_storage/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/local_storage/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/local_storage/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/localized_date_tooltip/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/localized_date_tooltip/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/localized_date_tooltip/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/localized_date_tooltip/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/localized_date_tooltip/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/localized_date_tooltip/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/localized_date_tooltip/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/localized_date_tooltip/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/editor.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/editor.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/editor.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/eui_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/eui_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/eui_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/eui_form.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/markdown_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/markdown_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/markdown_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/markdown_link.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/provider.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/provider.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/provider.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/provider.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/provider.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/provider.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/provider.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/provider.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/replace_params_query.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/replace_params_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/replace_params_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/replace_params_query.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_data_providers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_data_providers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_data_providers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_data_providers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_data_providers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_data_providers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_data_providers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_data_providers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_query.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_query.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_query.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_query.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_query.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/insight/use_insight_query.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/label_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/label_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/label_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/label_field.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/not_available_prompt.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/not_available_prompt.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/not_available_prompt.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/not_available_prompt.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/osquery_icon/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/osquery_icon/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/osquery_icon/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/osquery_icon/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/osquery_icon/osquery.svg b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/osquery_icon/osquery.svg similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/osquery_icon/osquery.svg rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/osquery_icon/osquery.svg diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/parser.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/parser.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/parser.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/parser.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/plugin.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/plugin.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/plugin.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/plugin.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/osquery/renderer.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/constants.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/parser.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/parser.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/parser.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/parser.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/plugin.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/plugin.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/plugin.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/plugin.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/processor.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/processor.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/processor.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/processor.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/renderer.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/markdown_editor/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/matrix_loader.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/matrix_loader.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/matrix_histogram/matrix_loader.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/matrix_loader.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/matrix_histogram/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/matrix_histogram/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/matrix_histogram/utils.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/__snapshots__/entity.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/__snapshots__/entity.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/__snapshots__/entity.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/__snapshots__/entity.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml/anomaly/anomaly_table_provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/anomaly_table_provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/anomaly/anomaly_table_provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/anomaly_table_provider.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/anomaly/get_interval_from_anomalies.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/get_interval_from_anomalies.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/anomaly/get_interval_from_anomalies.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/get_interval_from_anomalies.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/anomaly/get_interval_from_anomalies.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/get_interval_from_anomalies.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/anomaly/get_interval_from_anomalies.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/get_interval_from_anomalies.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/anomaly/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/anomaly/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_search.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_search.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_search.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_search.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_search.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_search.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_search.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_search.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_table_data.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_table_data.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_table_data.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_table_data.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_table_data.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_table_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_table_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/anomaly/use_anomalies_table_data.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/api/anomalies_search.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/anomalies_search.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/api/anomalies_search.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/anomalies_search.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/api/anomalies_table_data.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/anomalies_table_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/api/anomalies_table_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/anomalies_table_data.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/api/errors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/api/errors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/errors.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/api/get_jobs.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/get_jobs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/api/get_jobs.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/get_jobs.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/api/get_jobs_summary.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/get_jobs_summary.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/api/get_jobs_summary.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/get_jobs_summary.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/api/get_ml_capabilities.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/get_ml_capabilities.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/api/get_ml_capabilities.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/get_ml_capabilities.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/api/throw_if_not_ok.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/throw_if_not_ok.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/api/throw_if_not_ok.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/throw_if_not_ok.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/api/throw_if_not_ok.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/throw_if_not_ok.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/api/throw_if_not_ok.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/throw_if_not_ok.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/api/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/api/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/api/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/add_entities_to_kql.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/add_entities_to_kql.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/add_entities_to_kql.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/add_entities_to_kql.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/add_entities_to_kql.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/add_entities_to_kql.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/add_entities_to_kql.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/add_entities_to_kql.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/entity_helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/entity_helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/entity_helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/entity_helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/entity_helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/entity_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/entity_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/entity_helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/ml_host_conditional_container.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/ml_host_conditional_container.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/ml_host_conditional_container.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/ml_host_conditional_container.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/ml_network_conditional_container.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/ml_network_conditional_container.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/ml_network_conditional_container.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/ml_network_conditional_container.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/remove_kql_variables.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/remove_kql_variables.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/remove_kql_variables.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/remove_kql_variables.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/remove_kql_variables.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/remove_kql_variables.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/remove_kql_variables.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/remove_kql_variables.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_commas_with_or.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_commas_with_or.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_commas_with_or.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_commas_with_or.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_commas_with_or.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_commas_with_or.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_commas_with_or.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_commas_with_or.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_parts.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_parts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_parts.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_parts.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_parts.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_parts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_parts.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/replace_kql_parts.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/rison_helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/rison_helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/rison_helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/rison_helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/conditional_links/rison_helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/rison_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/conditional_links/rison_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/conditional_links/rison_helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_host_type.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_host_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_host_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_host_type.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_host_type.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_host_type.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_host_type.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_host_type.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_network_type.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_users_type.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_users_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_users_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_users_type.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_users_type.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_users_type.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_users_type.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/get_criteria_from_users_type.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/host_to_criteria.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/host_to_criteria.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/host_to_criteria.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/host_to_criteria.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/host_to_criteria.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/host_to_criteria.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/host_to_criteria.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/host_to_criteria.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/criteria/network_to_criteria.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/entity.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/entity.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/entity.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/entity.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/entity.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/entity.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/entity.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/entity.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/get_entries.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/get_entries.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/get_entries.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/get_entries.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/get_entries.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/get_entries.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/get_entries.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/get_entries.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/hooks/use_fetch_jobs_summary_query.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_fetch_jobs_summary_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/hooks/use_fetch_jobs_summary_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_fetch_jobs_summary_query.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/hooks/use_get_jobs.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_get_jobs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/hooks/use_get_jobs.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_get_jobs.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/hooks/use_get_ml_capabilities.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_get_ml_capabilities.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/hooks/use_get_ml_capabilities.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_get_ml_capabilities.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/hooks/use_installed_security_jobs.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_installed_security_jobs.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/hooks/use_installed_security_jobs.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_installed_security_jobs.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/hooks/use_installed_security_jobs.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_installed_security_jobs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/hooks/use_installed_security_jobs.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_installed_security_jobs.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/hooks/use_ml_capabilities.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_ml_capabilities.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/hooks/use_ml_capabilities.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_ml_capabilities.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_config.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_config.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_config.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_validations.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_validations.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_validations.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_validations.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_validations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_validations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_validations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/hooks/use_ml_rule_validations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/__snapshots__/create_influencers.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/__snapshots__/create_influencers.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/__snapshots__/create_influencers.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/__snapshots__/create_influencers.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/create_influencers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/create_influencers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/create_influencers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/create_influencers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/create_influencers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/create_influencers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/create_influencers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/create_influencers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/get_host_name_from_influencers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_host_name_from_influencers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/get_host_name_from_influencers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_host_name_from_influencers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/get_host_name_from_influencers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_host_name_from_influencers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/get_host_name_from_influencers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_host_name_from_influencers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/get_network_from_influencers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_network_from_influencers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/get_network_from_influencers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_network_from_influencers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/get_network_from_influencers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_network_from_influencers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/get_network_from_influencers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_network_from_influencers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/get_user_name_from_influencers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_user_name_from_influencers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/get_user_name_from_influencers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_user_name_from_influencers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/get_user_name_from_influencers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_user_name_from_influencers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/get_user_name_from_influencers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/get_user_name_from_influencers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/host_to_influencers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/host_to_influencers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/host_to_influencers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/host_to_influencers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/host_to_influencers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/host_to_influencers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/host_to_influencers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/host_to_influencers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/network_to_influencers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/network_to_influencers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/network_to_influencers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/network_to_influencers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/influencers/network_to_influencers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/network_to_influencers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/influencers/network_to_influencers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/influencers/network_to_influencers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/links/create_explorer_link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/links/create_explorer_link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/links/create_explorer_link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/links/create_explorer_link.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/links/create_explorer_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/links/create_explorer_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/links/create_explorer_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/links/create_explorer_link.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/links/create_series_link.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/links/create_series_link.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/links/create_series_link.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/links/create_series_link.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/links/create_series_link.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/links/create_series_link.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/links/create_series_link.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/links/create_series_link.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/mock.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/permissions/ml_capabilities_provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/permissions/ml_capabilities_provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/permissions/ml_capabilities_provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/permissions/ml_capabilities_provider.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/permissions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/permissions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/permissions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/permissions/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_scores.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_scores.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_scores.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/__snapshots__/anomaly_scores.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/score.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/__snapshots__/score.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/__snapshots__/score.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/__snapshots__/score.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/anomaly_score.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/anomaly_score.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/anomaly_score.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_score.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/anomaly_score.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_scores.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/anomaly_scores.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_scores.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/anomaly_scores.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_scores.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/anomaly_scores.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/anomaly_scores.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/anomaly_scores.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/create_description_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/create_description_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/create_description_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/create_description_list.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/create_descriptions_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/create_descriptions_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/create_descriptions_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/create_descriptions_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/create_entities_from_score.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/create_entities_from_score.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/create_entities_from_score.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/create_entities_from_score.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/create_entities_from_score.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/create_entities_from_score.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/create_entities_from_score.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/create_entities_from_score.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/get_score_string.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/get_score_string.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/get_score_string.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/get_score_string.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/get_top_severity.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/get_top_severity.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/get_top_severity.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/get_top_severity.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/get_top_severity.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/get_top_severity.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/get_top_severity.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/get_top_severity.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/score.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/score.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/score.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/score.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/score_health.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score_health.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/score_health.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score_health.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/score_interval_to_datetime.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score_interval_to_datetime.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/score_interval_to_datetime.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score_interval_to_datetime.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/score_interval_to_datetime.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score_interval_to_datetime.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/score_interval_to_datetime.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/score_interval_to_datetime.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/score/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/score/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/score/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_host_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_host_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_host_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_host_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_host_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_host_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_host_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_host_table.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_network_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_network_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_network_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_network_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_network_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_network_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_network_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_network_table.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_user_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_user_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_user_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_user_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_user_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_user_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/anomalies_user_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/anomalies_user_table.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/basic_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/basic_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/basic_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/basic_table.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_hosts.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_hosts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_hosts.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_hosts.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_hosts.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_hosts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_hosts.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_hosts.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_network.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_network.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_network.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_network.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_network.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_network.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_network.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_network.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_users.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_users.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_users.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_users.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_users.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_users.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_users.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/convert_anomalies_to_users.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/create_compound_key.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/create_compound_key.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/create_compound_key.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/create_compound_key.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/create_compound_key.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/create_compound_key.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/create_compound_key.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/create_compound_key.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_host_table_columns.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_network_table_columns.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_table_columns.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/get_anomalies_user_table_columns.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/job_id_filter.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/job_id_filter.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/job_id_filter.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/job_id_filter.stories.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/job_id_filter.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/job_id_filter.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/job_id_filter.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/job_id_filter.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/job_id_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/job_id_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/job_id_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/job_id_filter.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/select_interval.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/select_interval.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/select_interval.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/select_interval.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/select_interval.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/select_interval.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/select_interval.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/select_interval.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml/tables/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/tables/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/tables/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/types.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/types.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/types.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/types.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/__snapshots__/popover_description.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/__snapshots__/popover_description.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/__snapshots__/popover_description.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/__snapshots__/popover_description.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/api.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/api.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/api.mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/api.mock.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/api.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_enable_data_feed.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_enable_data_feed.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_enable_data_feed.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_enable_data_feed.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_enable_data_feed.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_enable_data_feed.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_enable_data_feed.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_enable_data_feed.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_fetch_modules_query.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_fetch_modules_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_fetch_modules_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_fetch_modules_query.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_fetch_recognizer_query.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_fetch_recognizer_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_fetch_recognizer_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_fetch_recognizer_query.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs_helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs_helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs_helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs_helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs_helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs_helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs_helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/hooks/use_security_jobs_helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/__snapshots__/job_switch.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/__snapshots__/job_switch.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/__snapshots__/job_switch.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/__snapshots__/job_switch.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/__snapshots__/showing_count.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/__snapshots__/showing_count.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/__snapshots__/showing_count.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/__snapshots__/showing_count.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/__snapshots__/groups_filter_popover.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/__snapshots__/groups_filter_popover.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/__snapshots__/groups_filter_popover.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/__snapshots__/groups_filter_popover.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/groups_filter_popover.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/jobs_table_filters.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/toggle_selected_group.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/toggle_selected_group.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/toggle_selected_group.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/toggle_selected_group.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/toggle_selected_group.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/toggle_selected_group.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/toggle_selected_group.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/toggle_selected_group.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/filters/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/job_switch.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/job_switch.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/job_switch.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/job_switch.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/job_switch.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/job_switch.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/job_switch.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/job_switch.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/jobs_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/jobs_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/jobs_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/jobs_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/jobs_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/jobs_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/jobs_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/jobs_table.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/showing_count.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/showing_count.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/showing_count.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/showing_count.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/showing_count.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/showing_count.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/showing_count.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/showing_count.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/jobs_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/jobs_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/ml_modules.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/ml_modules.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/ml_modules.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/ml_modules.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/ml_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/ml_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/ml_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/ml_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/ml_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/ml_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/ml_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/ml_popover.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/popover_description.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/popover_description.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/popover_description.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/popover_description.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/popover_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/popover_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/popover_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/popover_description.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/upgrade_contents.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/upgrade_contents.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/upgrade_contents.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/upgrade_contents.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/ml_popover/upgrade_contents.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/upgrade_contents.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/ml_popover/upgrade_contents.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/ml_popover/upgrade_contents.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/multiselect_filter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/multiselect_filter/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/multiselect_filter/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/multiselect_filter/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/__mocks__/use_url_state_query_params.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/__mocks__/use_url_state_query_params.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/__mocks__/use_url_state_query_params.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/__mocks__/use_url_state_query_params.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/trailing_breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/trailing_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/trailing_breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/trailing_breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/use_breadcrumbs_nav.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/use_breadcrumbs_nav.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/use_breadcrumbs_nav.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/use_breadcrumbs_nav.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/use_breadcrumbs_nav.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/use_breadcrumbs_nav.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/breadcrumbs/use_breadcrumbs_nav.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/breadcrumbs/use_breadcrumbs_nav.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/nav_item_beta_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/nav_item_beta_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/nav_item_beta_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/nav_item_beta_badge.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/categories.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/security_side_nav/categories.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/categories.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/security_side_nav/categories.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/security_side_nav/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/security_side_nav/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/security_side_nav/security_side_nav.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/tab_navigation/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/tab_navigation/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/tab_navigation.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/tab_navigation/tab_navigation.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/tab_navigation.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/tab_navigation/tab_navigation.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/tab_navigation.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/tab_navigation/tab_navigation.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/tab_navigation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/tab_navigation/tab_navigation.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/tab_navigation/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/tab_navigation/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/tab_navigation/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_security_solution_navigation.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_security_solution_navigation.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_security_solution_navigation.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_security_solution_navigation.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_security_solution_navigation.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_security_solution_navigation.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_security_solution_navigation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/use_security_solution_navigation/use_security_solution_navigation.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/navigation/use_url_state_query_params.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/use_url_state_query_params.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/navigation/use_url_state_query_params.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/navigation/use_url_state_query_params.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/news_feed/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/news_feed/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/news_feed/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/news_feed/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/news_feed/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/news_feed/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/news_feed/news_feed.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/news_feed.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/news_feed/news_feed.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/news_feed.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/news_feed/news_link/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/news_link/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/news_feed/news_link/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/news_link/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/news_feed/no_news/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/no_news/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/news_feed/no_news/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/no_news/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/news_feed/post/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/post/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/news_feed/post/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/post/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/news_feed/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/news_feed/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/news_feed/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/news_feed/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/news_feed/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/no_privileges/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/no_privileges/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/no_privileges/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/no_privileges/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/no_privileges/no_privileges.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/no_privileges/no_privileges.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/no_privileges/no_privileges.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/no_privileges/no_privileges.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/no_privileges/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/no_privileges/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/no_privileges/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/no_privileges/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/overview_description_list/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/overview_description_list/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/overview_description_list/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/overview_description_list/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/page/__mocks__/use_refetch_by_session.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/page/__mocks__/use_refetch_by_session.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/page/__mocks__/use_refetch_by_session.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/page/__mocks__/use_refetch_by_session.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/page/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/page/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/page/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/page/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/page/manage_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/page/manage_query.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/page/manage_query.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/page/manage_query.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/page/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/page/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/page/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/page/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/page/use_refetch_by_session.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/page/use_refetch_by_session.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/page/use_refetch_by_session.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/page/use_refetch_by_session.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/page/use_refetch_by_session.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/page/use_refetch_by_session.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/page/use_refetch_by_session.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/page/use_refetch_by_session.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/page_wrapper/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/page_wrapper/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/page_wrapper/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/page_wrapper/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/page_wrapper/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/page_wrapper/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/page_wrapper/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/page_wrapper/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/plugin_template_wrapper/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/plugin_template_wrapper/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/plugin_template_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/plugin_template_wrapper/plugin_template_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/plugin_template_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/plugin_template_wrapper/plugin_template_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/popover_items/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/popover_items/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/popover_items/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/popover_items/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/popover_items/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/popover_items/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/popover_items/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/popover_items/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/progress_inline/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/progress_inline/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/progress_inline/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/progress_inline/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/progress_inline/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/progress_inline/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/progress_inline/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/progress_inline/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/progress_inline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/progress_inline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/progress_inline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/progress_inline/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/query_bar/convert_to_query_type.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/query_bar/convert_to_query_type.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/query_bar/convert_to_query_type.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/query_bar/convert_to_query_type.ts diff --git a/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/query_bar/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/query_bar/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/query_bar/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/query_bar/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/response_actions/endpoint_action_results.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/endpoint_action_results.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/response_actions/endpoint_action_results.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/endpoint_action_results.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/response_actions/response_actions_empty_prompt.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/response_actions_empty_prompt.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/response_actions/response_actions_empty_prompt.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/response_actions_empty_prompt.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/response_actions/response_actions_results.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/response_actions_results.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/response_actions/response_actions_results.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/response_actions_results.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/response_actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/response_actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/response_actions/use_load_connectors/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/use_load_connectors/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/response_actions/use_load_connectors/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/response_actions/use_load_connectors/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/rule_name/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/rule_name/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/rule_name/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/rule_name/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/scroll_to_top/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/scroll_to_top/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/scroll_to_top/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/scroll_to_top/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/scroll_to_top/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/scroll_to_top/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/scroll_to_top/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/scroll_to_top/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/search_bar/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/search_bar/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/search_bar/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/search_bar/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/selectors.ts diff --git a/x-pack/plugins/security_solution/public/common/components/security_route_page_wrapper/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/security_route_page_wrapper/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/security_route_page_wrapper/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/security_route_page_wrapper/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/security_route_page_wrapper/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/security_route_page_wrapper/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/security_route_page_wrapper/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/security_route_page_wrapper/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/selectable_text/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/selectable_text/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/selectable_text/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/selectable_text/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/selectable_text/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/selectable_text/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/selectable_text/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/selectable_text/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/selectable_text/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/selectable_text/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/selectable_text/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/selectable_text/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/sessions_viewer/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/default_headers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/default_headers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/sessions_viewer/default_headers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/default_headers.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx new file mode 100644 index 0000000000000..264ad2bcdbf2f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx @@ -0,0 +1,207 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect } from 'react'; +import { waitFor, render } from '@testing-library/react'; +import { TestProviders } from '../../mock'; +import { TEST_ID, SessionsView, defaultSessionsFilter } from '.'; +import type { EntityType } from '@kbn/timelines-plugin/common'; +import type { SessionsComponentsProps } from './types'; +import { TableId } from '@kbn/securitysolution-data-table'; +import { licenseService } from '../../hooks/use_license'; +import { mount } from 'enzyme'; +import type { EventsViewerProps } from '../events_viewer'; + +jest.mock('../../lib/kibana'); +jest.mock('../../utils/normalize_time_range'); + +const startDate = '2022-03-22T22:10:56.794Z'; +const endDate = '2022-03-21T22:10:56.791Z'; + +const filterQuery = + '{"bool":{"must":[],"filter":[{"match_phrase":{"host.name":{"query":"ubuntu-impish"}}}],"should":[],"must_not":[]}}'; + +const testProps: SessionsComponentsProps = { + tableId: TableId.hostsPageSessions, + entityType: 'sessions', + pageFilters: [], + startDate, + endDate, + filterQuery, +}; + +type Props = Partial & { + start: string; + end: string; + entityType: EntityType; +}; + +const mockGetDefaultControlColumn = jest.fn(); +jest.mock('../../../timelines/components/timeline/body/control_columns', () => ({ + getDefaultControlColumn: (props: number) => mockGetDefaultControlColumn(props), +})); + +const TEST_PREFIX = 'security_solution:sessions_viewer:sessions_view'; + +const callFilters = jest.fn(); + +jest.mock('../../hooks/use_license', () => { + const licenseServiceInstance = { + isPlatinumPlus: jest.fn(), + isEnterprise: jest.fn(() => false), + }; + return { + licenseService: licenseServiceInstance, + useLicense: () => { + return licenseServiceInstance; + }, + }; +}); + +// creating a dummy component for testing data table to avoid mocking all the implementation details +// but still test if the data table will render properly +const SessionsViewerEventsViewer: React.FC = ({ + defaultModel, + start, + end, + tableId, + pageFilters, + entityType, +}) => { + useEffect(() => { + callFilters(pageFilters); + }, [pageFilters]); + + return ( +
+
{entityType}
+
{start}
+
{end}
+
{tableId}
+ {defaultModel?.columns?.map((header) => ( +
{header.display ?? header.id}
+ ))} +
+ ); +}; + +jest.mock('../events_viewer', () => { + return { + StatefulEventsViewer: SessionsViewerEventsViewer, + }; +}); + +mockGetDefaultControlColumn.mockReturnValue([ + { + headerCellRender: () => <>, + id: 'default-timeline-control-column', + rowCellRender: jest.fn(), + width: jest.fn(), + }, +]); + +describe('SessionsView', () => { + it('renders the session view', async () => { + const wrapper = mount( + + + + ); + + await waitFor(() => { + expect(wrapper.find(`[data-test-subj="${TEST_ID}"]`).exists()).toBeTruthy(); + }); + }); + + it('renders correctly against snapshot', async () => { + const { asFragment } = render( + + + + ); + + await waitFor(() => { + expect(asFragment()).toMatchSnapshot(); + }); + }); + + it('passes in the right parameters to EventsViewer', async () => { + const wrapper = render( + + + + ); + await waitFor(() => { + expect(wrapper.getByTestId(`${TEST_PREFIX}:entityType`)).toHaveTextContent('sessions'); + expect(wrapper.getByTestId(`${TEST_PREFIX}:startDate`)).toHaveTextContent(startDate); + expect(wrapper.getByTestId(`${TEST_PREFIX}:endDate`)).toHaveTextContent(endDate); + expect(wrapper.getByTestId(`${TEST_PREFIX}:timelineId`)).toHaveTextContent( + 'hosts-page-sessions-v2' + ); + }); + }); + + it('passes in the right filters to EventsViewer', async () => { + render( + + + + ); + await waitFor(() => { + expect(callFilters).toHaveBeenCalledWith([ + { + ...defaultSessionsFilter, + query: { + ...defaultSessionsFilter.query, + bool: { + ...defaultSessionsFilter.query.bool, + filter: defaultSessionsFilter.query.bool.filter.concat(JSON.parse(filterQuery)), + }, + }, + }, + ]); + }); + }); + it('Action tab should have 5 columns for non Enterprise users', async () => { + render( + + + + ); + + await waitFor(() => { + expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(5); + }); + }); + + it('Action tab should have 6 columns for Enterprise or above users', async () => { + const licenseServiceMock = licenseService as jest.Mocked; + + licenseServiceMock.isEnterprise.mockReturnValue(true); + render( + + + + ); + + await waitFor(() => { + expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(6); + }); + }); + + it('Action tab should have 6 columns when accessed via K8S dahsboard', async () => { + render( + + + + ); + + await waitFor(() => { + expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(6); + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/index.tsx new file mode 100644 index 0000000000000..76f72bb7ba28f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/index.tsx @@ -0,0 +1,177 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo, useEffect } from 'react'; +import type { Filter } from '@kbn/es-query'; +import { ENTRY_SESSION_ENTITY_ID_PROPERTY } from '@kbn/session-view-plugin/public'; +import { useDispatch } from 'react-redux'; +import { EVENT_ACTION } from '@kbn/rule-data-utils'; +import { TableId, dataTableActions } from '@kbn/securitysolution-data-table'; +import { useAddBulkToTimelineAction } from '../../../detections/components/alerts_table/timeline_actions/use_add_bulk_to_timeline'; +import type { SessionsComponentsProps } from './types'; +import type { ESBoolQuery } from '../../../../common/typed_json'; +import { StatefulEventsViewer } from '../events_viewer'; +import { getSessionsDefaultModel, sessionsHeaders } from './default_headers'; +import { defaultRowRenderers } from '../../../timelines/components/timeline/body/renderers'; +import { DefaultCellRenderer } from '../../../timelines/components/timeline/cell_rendering/default_cell_renderer'; +import * as i18n from './translations'; +import { SourcererScopeName } from '../../../sourcerer/store/model'; +import { getDefaultControlColumn } from '../../../timelines/components/timeline/body/control_columns'; +import { useLicense } from '../../hooks/use_license'; +import { eventsDefaultModel } from '../events_viewer/default_model'; +import type { BulkActionsProp } from '../toolbar/bulk_actions/types'; +import { SecurityCellActionsTrigger } from '../cell_actions'; +import { useIsExperimentalFeatureEnabled } from '../../hooks/use_experimental_features'; + +export const TEST_ID = 'security_solution:sessions_viewer:sessions_view'; + +export const defaultSessionsFilter: Required> = { + query: { + bool: { + filter: [ + { + bool: { + // show sessions table results by filtering events where event.action is fork, exec, or end + should: [ + { term: { [EVENT_ACTION]: 'exec' } }, // exec event.action is used by Endpoint and Cloud Defend + { term: { [EVENT_ACTION]: 'executed' } }, // executed event.action is used by auditbeat + { term: { [EVENT_ACTION]: 'fork' } }, + { term: { [EVENT_ACTION]: 'end' } }, + ], + }, + }, + { + bool: { + filter: { + exists: { + field: ENTRY_SESSION_ENTITY_ID_PROPERTY, // to exclude any records which have no entry_leader.entity_id + }, + }, + }, + }, + ], + must_not: [ + { + term: { + [ENTRY_SESSION_ENTITY_ID_PROPERTY]: '', + }, + }, + ], + }, + }, + meta: { + alias: null, + disabled: false, + key: ENTRY_SESSION_ENTITY_ID_PROPERTY, + negate: false, + params: {}, + type: 'string', + }, +}; + +const SessionsViewComponent: React.FC = ({ + tableId, + endDate, + entityType = 'sessions', + pageFilters, + startDate, + filterQuery, + columns = sessionsHeaders, + defaultColumns = sessionsHeaders, +}) => { + const dispatch = useDispatch(); + const parsedFilterQuery: ESBoolQuery = useMemo(() => { + if (filterQuery && filterQuery !== '') { + return JSON.parse(filterQuery); + } + return {}; + }, [filterQuery]); + + const sessionsFilter = useMemo( + () => [ + { + ...defaultSessionsFilter, + query: { + ...defaultSessionsFilter.query, + bool: { + ...defaultSessionsFilter.query.bool, + filter: defaultSessionsFilter.query.bool.filter.concat(parsedFilterQuery), + }, + }, + }, + ...pageFilters, + ], + [pageFilters, parsedFilterQuery] + ); + + useEffect(() => { + dispatch( + dataTableActions.initializeDataTableSettings({ + id: tableId, + title: i18n.SESSIONS_TITLE, + defaultColumns: eventsDefaultModel.columns, + showCheckboxes: true, + selectAll: true, + }) + ); + }, [dispatch, tableId]); + + const isEnterprisePlus = useLicense().isEnterprise(); + const securitySolutionNotesDisabled = useIsExperimentalFeatureEnabled( + 'securitySolutionNotesDisabled' + ); + let ACTION_BUTTON_COUNT = isEnterprisePlus || tableId === TableId.kubernetesPageSessions ? 6 : 5; + if (securitySolutionNotesDisabled) { + ACTION_BUTTON_COUNT--; + } + const leadingControlColumns = useMemo( + () => getDefaultControlColumn(ACTION_BUTTON_COUNT), + [ACTION_BUTTON_COUNT] + ); + + const addBulkToTimelineAction = useAddBulkToTimelineAction({ + localFilters: sessionsFilter, + tableId, + from: startDate, + to: endDate, + scopeId: SourcererScopeName.default, + }); + + const bulkActions = useMemo(() => { + return { + alertStatusActions: false, + customBulkActions: [addBulkToTimelineAction], + } as BulkActionsProp; + }, [addBulkToTimelineAction]); + + const unit = (c: number) => + c > 1 ? i18n.TOTAL_COUNT_OF_SESSIONS : i18n.SINGLE_COUNT_OF_SESSIONS; + + return ( +
+ +
+ ); +}; + +SessionsViewComponent.displayName = 'SessionsViewComponent'; + +export const SessionsView = React.memo(SessionsViewComponent); diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/sessions_viewer/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/sessions_viewer/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/sessions_viewer/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/severity_badge/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/severity_badge/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/severity_badge/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/severity_badge/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/severity_badge/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/severity_badge/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/severity_badge/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/severity_badge/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/sidebar_header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/sidebar_header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/sidebar_header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/sidebar_header/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/split_accordion/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/split_accordion/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/split_accordion/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/split_accordion/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/split_accordion/split_accordion.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/split_accordion/split_accordion.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/split_accordion/split_accordion.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/split_accordion/split_accordion.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/subtitle/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/subtitle/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/subtitle/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/subtitle/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/subtitle/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/subtitle/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/subtitle/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/subtitle/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/subtitle/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/subtitle/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/subtitle/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/subtitle/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/super_date_picker/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/super_date_picker/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/super_date_picker/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/super_date_picker/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/super_date_picker/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/super_date_picker/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/super_date_picker/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/super_date_picker/selectors.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/super_date_picker/selectors.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/super_date_picker/selectors.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/super_date_picker/selectors.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/super_date_picker/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/super_date_picker/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/super_date_picker/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/super_date_picker/selectors.ts diff --git a/x-pack/plugins/security_solution/public/common/components/tables/__snapshots__/helpers.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/tables/__snapshots__/helpers.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/tables/__snapshots__/helpers.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/tables/__snapshots__/helpers.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/tables/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/tables/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/tables/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/tables/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/tables/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/tables/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/tables/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/technical_preview_badge/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/technical_preview_badge/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/technical_preview_badge/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/technical_preview_badge/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/technical_preview_badge/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/technical_preview_badge/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/technical_preview_badge/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/technical_preview_badge/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/text_field_value/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/text_field_value/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/text_field_value/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/text_field_value/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/text_field_value/index.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/text_field_value/index.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/text_field_value/index.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/text_field_value/index.stories.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/text_field_value/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/text_field_value/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/text_field_value/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/text_field_value/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/text_field_value/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/text_field_value/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/text_field_value/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/text_field_value/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/and_badge.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/and_badge.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/and_badge.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/and_badge.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/and_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/and_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/and_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/and_badge.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/entry_delete_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_delete_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/entry_delete_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_delete_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/entry_delete_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_delete_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/entry_delete_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_delete_button.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/entry_item.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_item.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/entry_item.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_item.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/entry_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/entry_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/entry_item.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/list_item.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/list_item.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/list_item.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/list_item.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/list_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/list_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/list_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/list_item.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/logic_buttons.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/logic_buttons.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/logic_buttons.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/logic_buttons.stories.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/logic_buttons.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/logic_buttons.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/logic_buttons.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/logic_buttons.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/logic_buttons.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/logic_buttons.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/logic_buttons.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/logic_buttons.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/reducer.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/reducer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/reducer.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/reducer.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/reducer.ts diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/threat_match/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/threat_match/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/__snapshots__/modal_all_errors.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/__snapshots__/modal_all_errors.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toasters/__snapshots__/modal_all_errors.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/__snapshots__/modal_all_errors.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/errors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toasters/errors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/errors.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toasters/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/index.test.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/index.tsx new file mode 100644 index 0000000000000..28d506ac178c6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/index.tsx @@ -0,0 +1,181 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { EuiGlobalToastListToast as Toast } from '@elastic/eui'; +import { EuiButton, EuiGlobalToastList } from '@elastic/eui'; +import { noop } from 'lodash/fp'; +import type { Dispatch } from 'react'; +import React, { createContext, useContext, useReducer, useState } from 'react'; +import styled from 'styled-components'; + +import { ModalAllErrors } from './modal_all_errors'; +import * as i18n from './translations'; + +export * from './utils'; +export * from './errors'; + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +export interface AppToast extends Toast { + // FunFact: In a very rare case of errors this can be something other than array. We have a unit test case for it and am leaving it like this type for now. + errors?: string[]; +} + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +interface ToastState { + toasts: AppToast[]; +} + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +const initialToasterState: ToastState = { + toasts: [], +}; + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +export type ActionToaster = + | { type: 'addToaster'; toast: AppToast } + | { type: 'deleteToaster'; id: string } + | { type: 'toggleWaitToShowNextToast' }; + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +export const StateToasterContext = createContext<[ToastState, Dispatch]>([ + initialToasterState, + () => noop, +]); + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +export const useStateToaster = () => useContext(StateToasterContext); + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +interface ManageGlobalToasterProps { + children: React.ReactNode; +} + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +export const ManageGlobalToaster = ({ children }: ManageGlobalToasterProps) => { + const reducerToaster = (state: ToastState, action: ActionToaster) => { + switch (action.type) { + case 'addToaster': + return { ...state, toasts: [...state.toasts, action.toast] }; + case 'deleteToaster': + return { ...state, toasts: state.toasts.filter((msg) => msg.id !== action.id) }; + default: + return state; + } + }; + + return ( + + {children} + + ); +}; + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +const GlobalToasterListContainer = styled.div` + position: absolute; + right: 0; + bottom: 0; +`; + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +interface GlobalToasterProps { + toastLifeTimeMs?: number; +} + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +export const GlobalToaster = ({ toastLifeTimeMs = 5000 }: GlobalToasterProps) => { + const [{ toasts }, dispatch] = useStateToaster(); + const [isShowing, setIsShowing] = useState(false); + const [toastInModal, setToastInModal] = useState(null); + + const toggle = (toast: AppToast) => { + if (isShowing) { + dispatch({ type: 'deleteToaster', id: toast.id }); + setToastInModal(null); + } else { + setToastInModal(toast); + } + setIsShowing(!isShowing); + }; + + return ( + <> + {toasts.length > 0 && !isShowing && ( + + { + dispatch({ type: 'deleteToaster', id }); + }} + toastLifeTimeMs={toastLifeTimeMs} + /> + + )} + {toastInModal != null && ( + + )} + + ); +}; + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +const formatToErrorToastIfNeeded = ( + toast: AppToast, + toggle: (toast: AppToast) => void +): AppToast => { + if (toast != null && toast.errors != null && toast.errors.length > 0) { + toast.text = ( + + toast != null && toggle(toast)} + > + {i18n.SEE_ALL_ERRORS} + + + ); + } + return toast; +}; + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +const ErrorToastContainer = styled.div` + text-align: right; +`; + +/** + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + */ +ErrorToastContainer.displayName = 'ErrorToastContainer'; diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/modal_all_errors.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/modal_all_errors.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toasters/modal_all_errors.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/modal_all_errors.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/modal_all_errors.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/modal_all_errors.tsx similarity index 79% rename from x-pack/plugins/security_solution/public/common/components/toasters/modal_all_errors.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/modal_all_errors.tsx index da19968971ec9..1199a361a98a7 100644 --- a/x-pack/plugins/security_solution/public/common/components/toasters/modal_all_errors.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/modal_all_errors.tsx @@ -24,7 +24,7 @@ import type { AppToast } from '.'; import * as i18n from './translations'; /** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead */ interface FullErrorProps { isShowing: boolean; @@ -33,7 +33,7 @@ interface FullErrorProps { } /** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead */ const ModalAllErrorsComponent: React.FC = ({ isShowing, toast, toggle }) => { const handleClose = useCallback(() => toggle(toast), [toggle, toast]); @@ -73,18 +73,18 @@ const ModalAllErrorsComponent: React.FC = ({ isShowing, toast, t }; /** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead */ export const ModalAllErrors = React.memo(ModalAllErrorsComponent); /** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead */ const MyEuiCodeBlock = styled(EuiCodeBlock)` margin-top: 4px; `; /** - * @deprecated Use x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead */ MyEuiCodeBlock.displayName = 'MyEuiCodeBlock'; diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toasters/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toasters/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/utils.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/utils.ts new file mode 100644 index 0000000000000..a1b75a4b4af0c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/toasters/utils.ts @@ -0,0 +1,133 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type React from 'react'; +import { v4 as uuidv4 } from 'uuid'; +import { isError } from 'lodash/fp'; +import { isAppError } from '@kbn/securitysolution-t-grid'; + +import type { AppToast, ActionToaster } from '.'; +import { isToasterError } from './errors'; + +/** + * Displays an error toast for the provided title and message + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + * @param errorTitle Title of error to display in toaster and modal + * @param errorMessages Message to display in error modal when clicked + * @param dispatchToaster provided by useStateToaster() + */ +export const displayErrorToast = ( + errorTitle: string, + errorMessages: string[], + dispatchToaster: React.Dispatch, + id: string = uuidv4() +): void => { + const toast: AppToast = { + id, + title: errorTitle, + color: 'danger', + iconType: 'error', + errors: errorMessages, + }; + dispatchToaster({ + type: 'addToaster', + toast, + }); +}; + +/** + * Displays a success toast for the provided title and message + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + * @param title success message to display in toaster and modal + * @param dispatchToaster provided by useStateToaster() + */ +export const displaySuccessToast = ( + title: string, + dispatchToaster: React.Dispatch, + id: string = uuidv4() +): void => { + const toast: AppToast = { + id, + title, + color: 'success', + iconType: 'check', + }; + dispatchToaster({ + type: 'addToaster', + toast, + }); +}; + +export type ErrorToToasterArgs = Partial & { + error: unknown; + dispatchToaster: React.Dispatch; +}; + +/** + * Displays an error toast with messages parsed from the error. + * + * This has shortcomings and bugs compared to using the use_app_toasts because it takes naive guesses at the + * underlying data structure and does not display much about the error. This is not compatible with bsearch (async search) + * and sometimes can display to the user blank messages. + * + * The use_app_toasts has more feature rich logic and uses the Kibana toaster system to figure out which type of + * error you have in a more robust way then this function does and supersedes this function. + * + * @deprecated Use x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts instead + * @param title error message to display in toaster and modal + * @param error the error from which messages will be parsed + * @param dispatchToaster provided by useStateToaster() + */ +export const errorToToaster = ({ + id = uuidv4(), + title, + error, + color = 'danger', + iconType = 'error', + dispatchToaster, +}: ErrorToToasterArgs) => { + let toast: AppToast; + + if (isToasterError(error)) { + toast = { + id, + title, + color, + iconType, + errors: error.messages, + }; + } else if (isAppError(error)) { + toast = { + id, + title, + color, + iconType, + errors: [error.body.message], + }; + } else if (isError(error)) { + toast = { + id, + title, + color, + iconType, + errors: [error.message], + }; + } else { + toast = { + id, + title, + color, + iconType, + errors: ['Network Error'], + }; + } + + dispatchToaster({ + type: 'addToaster', + toast, + }); +}; diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_actions.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_assignees.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_assignees.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_assignees.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_assignees.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_assignees.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_assignees.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_assignees.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_assignees.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_tags.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_tags.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_tags.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_tags.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_tags.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_tags.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_tags.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/alert_bulk_tags.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/reducer.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/reducer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/reducer.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/reducer.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/reducer.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/update_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/update_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/update_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/update_alerts.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/update_alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/update_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/update_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/update_alerts.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_action_items.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_action_items.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_action_items.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_action_items.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_assignees_items.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_assignees_items.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_assignees_items.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_assignees_items.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_assignees_items.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_assignees_items.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_assignees_items.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_assignees_items.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_tags_items.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_tags_items.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_tags_items.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_tags_items.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_tags_items.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_tags_items.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_tags_items.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_bulk_alert_tags_items.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_set_alert_assignees.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_set_alert_assignees.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_set_alert_assignees.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_set_alert_assignees.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_set_alert_tags.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_set_alert_tags.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_set_alert_tags.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions/use_set_alert_tags.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/unit/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/unit/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/unit/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/unit/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/unit/styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/unit/styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/unit/styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/unit/styles.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/toolbar/unit/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/unit/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/toolbar/unit/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/unit/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/top_n/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/top_n/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/top_n/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/top_n.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/top_n/top_n.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/top_n.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/top_n.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/top_n.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/top_n/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/top_n/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/truncatable_text/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/truncatable_text/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/truncatable_text/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/truncatable_text/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/truncatable_text/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/truncatable_text/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/truncatable_text/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/truncatable_text/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/truncatable_text/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/truncatable_text/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/truncatable_text/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/truncatable_text/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/truncatable_text/truncatable_text.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/truncatable_text/truncatable_text.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/truncatable_text/truncatable_text.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/truncatable_text/truncatable_text.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/upselling_provider/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/upselling_provider/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/upselling_provider/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/upselling_provider/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/upselling_provider/upselling_provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/upselling_provider/upselling_provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/upselling_provider/upselling_provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/upselling_provider/upselling_provider.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/use_combo_box_reset/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/use_combo_box_reset/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/use_combo_box_reset/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/use_combo_box_reset/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/use_combo_box_reset/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/use_combo_box_reset/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/use_combo_box_reset/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/use_combo_box_reset/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/__mocks__/use_endpoint_privileges.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/__mocks__/use_endpoint_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/__mocks__/use_endpoint_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/__mocks__/use_endpoint_privileges.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/mocks.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/security_solution_start_dependencies.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/security_solution_start_dependencies.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/security_solution_start_dependencies.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/security_solution_start_dependencies.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/use_endpoint_privileges.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/use_endpoint_privileges.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/use_endpoint_privileges.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/use_endpoint_privileges.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/use_endpoint_privileges.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/use_endpoint_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/use_endpoint_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/use_endpoint_privileges.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/endpoint/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/endpoint/utils.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_privileges/user_privileges_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/user_privileges_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_privileges/user_privileges_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_privileges/user_privileges_context.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/__mocks__/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/__mocks__/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/__mocks__/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/__mocks__/api.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/api.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/api.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/api.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/api.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/api.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/mock.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/use_suggest_users.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_suggest_users.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/use_suggest_users.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_suggest_users.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/use_suggest_users.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_suggest_users.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/use_suggest_users.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/use_suggest_users.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/users_avatars_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/users_avatars_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/users_avatars_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/users_avatars_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/user_profiles/users_avatars_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/users_avatars_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/user_profiles/users_avatars_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/user_profiles/users_avatars_panel.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_action.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_action.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_action.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_action.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_group.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_group.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_group.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_group.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_section.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_section.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_section.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_section.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_text.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_text.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_text.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/__snapshots__/utility_bar_text.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/styles.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_action.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_group.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_group.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_group.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_group.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_group.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_group.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_group.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_group.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_section.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_section.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_section.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_spacer.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_spacer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_spacer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_spacer.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_text.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_text.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_text.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_text.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_text.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_text.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utility_bar/utility_bar_text.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utility_bar/utility_bar_text.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/utils.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/actions.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/lens_embeddable.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/lens_embeddable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/lens_embeddable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/lens_embeddable.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/use_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/use_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/use_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/use_actions.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/utils.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/visualization_embeddable.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/visualization_embeddable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/__mocks__/visualization_embeddable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__mocks__/visualization_embeddable.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/__snapshots__/utils.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__snapshots__/utils.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/__snapshots__/utils.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/__snapshots__/utils.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/actions.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/__snapshots__/authentication.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/__snapshots__/authentication.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/__snapshots__/authentication.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/__snapshots__/authentication.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/__snapshots__/external_alert.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/__snapshots__/external_alert.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/__snapshots__/external_alert.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/__snapshots__/external_alert.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_by_status_donut.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_by_status_donut.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_by_status_donut.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_by_status_donut.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_histogram.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_histogram.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_histogram.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_histogram.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_table.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_table.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_table.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/alerts_table.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/rule_preview.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/rule_preview.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/rule_preview.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/__snapshots__/rule_preview.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_by_status_donut.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_by_status_donut.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_by_status_donut.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_by_status_donut.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_by_status_donut.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_by_status_donut.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_by_status_donut.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_by_status_donut.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_histogram.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_histogram.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_histogram.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_histogram.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_histogram.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_histogram.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_histogram.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_histogram.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_table.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_table.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_table.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_table.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_table.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_table.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_table.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/alerts_table.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/rule_preview.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/rule_preview.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/rule_preview.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/rule_preview.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/rule_preview.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/rule_preview.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/rule_preview.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/alerts/rule_preview.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/authentication.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/authentication.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/authentication.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/authentication.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/authentication.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/authentication.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/authentication.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/authentication.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/event.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/event.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/event.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/event.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/events.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/events.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/events.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/events.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/external_alert.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/external_alert.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/external_alert.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/external_alert.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/external_alert.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/external_alert.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/external_alert.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/common/external_alert.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_host_area.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_host_area.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_host_area.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_host_area.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_host_metric.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_host_metric.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_host_metric.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_host_metric.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_area.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_area.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_area.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_area.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_bar.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_bar.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_bar.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_bar.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_destination_metric.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_destination_metric.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_destination_metric.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_destination_metric.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_source_metric.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_source_metric.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_source_metric.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/__snapshots__/kpi_unique_ips_source_metric.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_area.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_area.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_area.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_area.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_area.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_area.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_area.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_area.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_metric.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_metric.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_metric.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_metric.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_metric.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_metric.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_metric.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_host_metric.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_area.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_area.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_area.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_area.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_area.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_area.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_area.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_area.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_bar.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_bar.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_bar.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_bar.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_bar.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_bar.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_bar.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_bar.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_destination_metric.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_destination_metric.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_destination_metric.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_destination_metric.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_destination_metric.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_destination_metric.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_destination_metric.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_destination_metric.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_source_metric.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_source_metric.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_source_metric.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_source_metric.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_source_metric.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_source_metric.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_source_metric.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/hosts/kpi_unique_ips_source_metric.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/dns_top_domains.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/dns_top_domains.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/dns_top_domains.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/dns_top_domains.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_dns_queries.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_dns_queries.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_dns_queries.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_dns_queries.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_network_events.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_network_events.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_network_events.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_network_events.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_tls_handshakes.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_tls_handshakes.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_tls_handshakes.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_tls_handshakes.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_flow_ids.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_flow_ids.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_flow_ids.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_flow_ids.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_area.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_area.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_area.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_area.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_bar.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_bar.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_bar.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_bar.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_destination_metric.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_destination_metric.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_destination_metric.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_destination_metric.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_source_metric.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_source_metric.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_source_metric.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/__snapshots__/kpi_unique_private_ips_source_metric.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/dns_top_domains.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/dns_top_domains.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/dns_top_domains.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/dns_top_domains.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/dns_top_domains.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/dns_top_domains.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/dns_top_domains.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/dns_top_domains.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_dns_queries.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_dns_queries.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_dns_queries.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_dns_queries.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_dns_queries.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_dns_queries.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_dns_queries.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_dns_queries.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_network_events.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_network_events.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_network_events.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_network_events.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_network_events.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_network_events.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_network_events.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_network_events.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_tls_handshakes.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_tls_handshakes.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_tls_handshakes.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_tls_handshakes.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_tls_handshakes.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_tls_handshakes.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_tls_handshakes.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_tls_handshakes.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_flow_ids.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_flow_ids.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_flow_ids.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_flow_ids.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_flow_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_flow_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_flow_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_flow_ids.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_area.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_area.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_area.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_area.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_area.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_area.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_area.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_area.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_bar.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_bar.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_bar.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_bar.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_bar.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_bar.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_bar.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_bar.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_destination_metric.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_destination_metric.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_destination_metric.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_destination_metric.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_destination_metric.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_destination_metric.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_destination_metric.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_destination_metric.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_source_metric.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_source_metric.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_source_metric.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_source_metric.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_source_metric.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_source_metric.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_source_metric.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/network/kpi_unique_private_ips_source_metric.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/readme.md b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/readme.md similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/readme.md rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/readme.md diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_total_users_area.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_total_users_area.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_total_users_area.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_total_users_area.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_total_users_metric.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_total_users_metric.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_total_users_metric.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_total_users_metric.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentication_metric_failure.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentication_metric_failure.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentication_metric_failure.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentication_metric_failure.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_area.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_area.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_area.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_area.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_bar.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_bar.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_bar.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_bar.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_metric_success.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_metric_success.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_metric_success.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/__snapshots__/kpi_user_authentications_metric_success.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_area.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_area.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_area.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_area.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_area.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_area.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_area.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_area.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_metric.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_metric.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_metric.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_metric.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_metric.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_metric.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_metric.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_total_users_metric.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentication_metric_failure.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentication_metric_failure.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentication_metric_failure.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentication_metric_failure.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentication_metric_failure.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentication_metric_failure.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentication_metric_failure.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentication_metric_failure.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_area.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_area.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_area.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_area.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_area.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_area.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_area.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_area.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_bar.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_bar.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_bar.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_bar.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_bar.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_bar.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_bar.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_bar.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_metric_success.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_metric_success.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_metric_success.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_metric_success.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_metric_success.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_metric_success.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_metric_success.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_attributes/users/kpi_user_authentications_metric_success.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/mocks.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/mocks.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/mocks.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/mocks.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/types.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_actions.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_add_to_existing_case.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_add_to_new_case.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_embeddable_inspect.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_embeddable_inspect.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_embeddable_inspect.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_embeddable_inspect.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_lens_attributes.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_lens_attributes.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_lens_attributes.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_lens_attributes.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_lens_attributes.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_lens_attributes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_lens_attributes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_lens_attributes.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_redirect_to_dashboard_from_lens.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_redirect_to_dashboard_from_lens.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_redirect_to_dashboard_from_lens.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_redirect_to_dashboard_from_lens.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_visualization_response.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/utils.ts diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/visualization_embeddable.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/with_data_view/data_view_error.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_data_view/data_view_error.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/with_data_view/data_view_error.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_data_view/data_view_error.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/with_data_view/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_data_view/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/with_data_view/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_data_view/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/with_data_view/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_data_view/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/with_data_view/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_data_view/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/with_data_view/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_data_view/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/with_data_view/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_data_view/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/with_lazy_hook/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_lazy_hook/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/with_lazy_hook/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_lazy_hook/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/with_security_context/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_security_context/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/with_security_context/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_security_context/index.ts diff --git a/x-pack/plugins/security_solution/public/common/components/with_security_context/render_context_providers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_security_context/render_context_providers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/with_security_context/render_context_providers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_security_context/render_context_providers.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/with_security_context/store.ts b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_security_context/store.ts similarity index 96% rename from x-pack/plugins/security_solution/public/common/components/with_security_context/store.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_security_context/store.ts index 5a1179a4f5695..b6c98bf218542 100644 --- a/x-pack/plugins/security_solution/public/common/components/with_security_context/store.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_security_context/store.ts @@ -54,7 +54,7 @@ export const createFleetContextReduxStore = ({ additionalMiddleware = [], }: CreateFleetContextReduxStoreProps) => { // Most of the code here was copied form - // x-pack/plugins/security_solution/public/management/index.ts + // x-pack/solutions/security/plugins/security_solution/public/management/index.ts return createStore( combineReducers(reducersObject), preloadedState, diff --git a/x-pack/plugins/security_solution/public/common/components/with_security_context/with_security_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_security_context/with_security_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/with_security_context/with_security_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_security_context/with_security_context.tsx diff --git a/x-pack/plugins/security_solution/public/common/components/with_space_id/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/with_space_id/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/components/with_space_id/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/components/with_space_id/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/common/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/constants.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/alert_assignees/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/alert_assignees/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/alert_assignees/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/alert_assignees/api.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/alert_tags/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/alert_tags/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/alert_tags/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/alert_tags/api.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/histogram_configs.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/histogram_configs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/histogram_configs.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/histogram_configs.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/utils.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/dashboards/__mocks__/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/dashboards/__mocks__/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/dashboards/__mocks__/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/dashboards/__mocks__/api.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/dashboards/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/dashboards/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/dashboards/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/dashboards/api.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/events/last_event_time/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/events/last_event_time/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/events/last_event_time/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/events/last_event_time/index.test.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/events/last_event_time/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/events/last_event_time/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/events/last_event_time/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/events/last_event_time/index.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/events/last_event_time/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/events/last_event_time/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/events/last_event_time/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/events/last_event_time/mock.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/events/last_event_time/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/events/last_event_time/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/events/last_event_time/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/events/last_event_time/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/local_storage/use_messages_storage.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/local_storage/use_messages_storage.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/local_storage/use_messages_storage.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/local_storage/use_messages_storage.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/local_storage/use_messages_storage.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/local_storage/use_messages_storage.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/local_storage/use_messages_storage.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/local_storage/use_messages_storage.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/query_client/query_client_provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/query_client/query_client_provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/query_client/query_client_provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/query_client/query_client_provider.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/query_toggle/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/query_toggle/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/query_toggle/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/query_toggle/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/query_toggle/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/query_toggle/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/query_toggle/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/query_toggle/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/query_toggle/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/query_toggle/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/query_toggle/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/query_toggle/translations.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_hosts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_hosts/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_users/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_users/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_users/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_users/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_users/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/related_entities/related_users/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/source/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/source/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/source/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/source/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/source/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/source/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/source/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/source/mock.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/source/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/source/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/source/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/source/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/source/use_data_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/source/use_data_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/source/use_data_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/source/use_data_view.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/tags/__mocks__/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/tags/__mocks__/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/tags/__mocks__/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/tags/__mocks__/api.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/tags/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/tags/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/tags/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/tags/api.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/use_first_last_seen/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_first_last_seen/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_first_last_seen/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_first_last_seen/index.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/use_first_last_seen/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_first_last_seen/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_first_last_seen/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_first_last_seen/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/use_first_last_seen/use_first_last_seen.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_first_last_seen/use_first_last_seen.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_first_last_seen/use_first_last_seen.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_first_last_seen/use_first_last_seen.test.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/use_first_last_seen/use_first_last_seen.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_first_last_seen/use_first_last_seen.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_first_last_seen/use_first_last_seen.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_first_last_seen/use_first_last_seen.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/use_full_screen/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_full_screen/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_full_screen/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_full_screen/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/use_full_screen/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_full_screen/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_full_screen/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_full_screen/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/use_global_time/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_global_time/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_global_time/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_global_time/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/use_global_time/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_global_time/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_global_time/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_global_time/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/use_global_time/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_global_time/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_global_time/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_global_time/types.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/use_search_strategy/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_search_strategy/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_search_strategy/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_search_strategy/index.test.ts diff --git a/x-pack/plugins/security_solution/public/common/containers/use_search_strategy/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_search_strategy/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_search_strategy/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_search_strategy/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/containers/use_search_strategy/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/containers/use_search_strategy/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/containers/use_search_strategy/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/containers/use_search_strategy/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/creation.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/creation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/creation.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/creation.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/dns.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/dns.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/dns.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/dns.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/file_events.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/file_events.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/file_events.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/file_events.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/ipv4.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/ipv4.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/ipv4.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/ipv4.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/termination.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/termination.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/termination.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/termination.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/user_logon.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/user_logon.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/user_logon.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endgame_ecs/user_logon.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endpoint/library_load_event.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endpoint/library_load_event.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/endpoint/library_load_event.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endpoint/library_load_event.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endpoint/process_execution_malware_prevention_alert.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endpoint/process_execution_malware_prevention_alert.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/endpoint/process_execution_malware_prevention_alert.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endpoint/process_execution_malware_prevention_alert.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endpoint/registry_modification_event.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endpoint/registry_modification_event.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/endpoint/registry_modification_event.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/endpoint/registry_modification_event.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/netflow.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/netflow.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/netflow.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/netflow.ts diff --git a/x-pack/plugins/security_solution/public/common/demo_data/timeline.ts b/x-pack/solutions/security/plugins/security_solution/public/common/demo_data/timeline.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/demo_data/timeline.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/demo_data/timeline.ts diff --git a/x-pack/plugins/security_solution/public/common/experimental_features_service.ts b/x-pack/solutions/security/plugins/security_solution/public/common/experimental_features_service.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/experimental_features_service.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/experimental_features_service.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/__mocks__/use_data_table_filters.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/__mocks__/use_data_table_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/__mocks__/use_data_table_filters.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/__mocks__/use_data_table_filters.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/__mocks__/use_experimental_features.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/__mocks__/use_experimental_features.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/__mocks__/use_experimental_features.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/__mocks__/use_experimental_features.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/__mocks__/use_get_field_spec.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/__mocks__/use_get_field_spec.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/__mocks__/use_get_field_spec.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/__mocks__/use_get_field_spec.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/__mocks__/use_license.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/__mocks__/use_license.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/__mocks__/use_license.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/__mocks__/use_license.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/endpoint/__mocks__/use_alert_response_actions_support.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/__mocks__/use_alert_response_actions_support.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/endpoint/__mocks__/use_alert_response_actions_support.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/__mocks__/use_alert_response_actions_support.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/endpoint/use_alert_response_actions_support.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_alert_response_actions_support.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/endpoint/use_alert_response_actions_support.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_alert_response_actions_support.test.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/endpoint/use_alert_response_actions_support.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_alert_response_actions_support.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/endpoint/use_alert_response_actions_support.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_alert_response_actions_support.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/endpoint/use_navigate_by_router_event_handler.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_navigate_by_router_event_handler.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/endpoint/use_navigate_by_router_event_handler.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_navigate_by_router_event_handler.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/endpoint/use_navigate_by_router_event_handler.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_navigate_by_router_event_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/endpoint/use_navigate_by_router_event_handler.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_navigate_by_router_event_handler.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/endpoint/use_navigate_to_app_event_handler.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_navigate_to_app_event_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/endpoint/use_navigate_to_app_event_handler.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/endpoint/use_navigate_to_app_event_handler.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/eql/api.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/eql/api.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/eql/api.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/eql/api.test.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/eql/api.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/eql/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/eql/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/eql/api.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/esql/use_esql_availability.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/esql/use_esql_availability.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/esql/use_esql_availability.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/esql/use_esql_availability.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/is_in_security_app.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/is_in_security_app.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/is_in_security_app.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/is_in_security_app.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/search_bar/use_init_search_bar_url_params.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_init_search_bar_url_params.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/search_bar/use_init_search_bar_url_params.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_init_search_bar_url_params.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/search_bar/use_init_timerange_url_params.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_init_timerange_url_params.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/search_bar/use_init_timerange_url_params.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_init_timerange_url_params.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/search_bar/use_sync_search_bar_url_param.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_sync_search_bar_url_param.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/search_bar/use_sync_search_bar_url_param.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_sync_search_bar_url_param.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/search_bar/use_sync_timerange_url_param.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_sync_timerange_url_param.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/search_bar/use_sync_timerange_url_param.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_sync_timerange_url_param.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/search_bar/use_update_timerange_on_page_change.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_update_timerange_on_page_change.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/search_bar/use_update_timerange_on_page_change.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/search_bar/use_update_timerange_on_page_change.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/timeline/use_init_timeline_url_param.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_init_timeline_url_param.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/timeline/use_init_timeline_url_param.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_init_timeline_url_param.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/timeline/use_query_timeline_by_id_on_url_change.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_query_timeline_by_id_on_url_change.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/timeline/use_query_timeline_by_id_on_url_change.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_query_timeline_by_id_on_url_change.test.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/timeline/use_query_timeline_by_id_on_url_change.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_query_timeline_by_id_on_url_change.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/timeline/use_query_timeline_by_id_on_url_change.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_query_timeline_by_id_on_url_change.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/timeline/use_sync_timeline_url_param.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_sync_timeline_url_param.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/timeline/use_sync_timeline_url_param.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_sync_timeline_url_param.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/timeline/use_timeline_save_prompt.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_timeline_save_prompt.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/timeline/use_timeline_save_prompt.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/timeline/use_timeline_save_prompt.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/types.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_add_integrations_url.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_add_integrations_url.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_add_integrations_url.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_add_integrations_url.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.mock.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_app_toasts.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts new file mode 100644 index 0000000000000..b98adfb4a875c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_app_toasts.ts @@ -0,0 +1,241 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useRef, useMemo } from 'react'; +import { isString } from 'lodash/fp'; +import type { AppError } from '@kbn/securitysolution-t-grid'; +import { isAppError, isKibanaError, isSecurityAppError } from '@kbn/securitysolution-t-grid'; + +import { type IEsError, isEsError } from '@kbn/search-errors'; + +import type { ErrorToastOptions, ToastsStart, Toast } from '@kbn/core/public'; +import { useToasts } from '../lib/kibana'; + +export type UseAppToasts = Pick & { + api: ToastsStart; + addError: (error: unknown, options: ErrorToastOptions) => Toast; +}; + +/** + * This gives a better presentation of error data sent from the API (both general platform errors and app-specific errors). + * This uses platform's new Toasts service to prevent modal/toast z-index collision issues. + * This fixes some issues you can see with re-rendering since using a class such as notifications.toasts. + * This also has an adapter and transform for detecting if a bsearch's EsError is present and then adapts that to the + * Kibana error toaster model so that the network error message will be shown rather than a stack trace. + */ +export const useAppToasts = (): UseAppToasts => { + const toasts = useToasts(); + const addError = useRef(toasts.addError.bind(toasts)).current; + const addSuccess = useRef(toasts.addSuccess.bind(toasts)).current; + const addWarning = useRef(toasts.addWarning.bind(toasts)).current; + const remove = useRef(toasts.remove.bind(toasts)).current; + + const _addError = useCallback( + (error: unknown, options: ErrorToastOptions) => { + const adaptedError = errorToErrorStackAdapter(error); + return addError(adaptedError, options); + }, + [addError] + ); + + return useMemo( + () => ({ api: toasts, addError: _addError, addSuccess, addWarning, remove }), + [_addError, addSuccess, addWarning, remove, toasts] + ); +}; + +/** + * Given an error of one type vs. another type this tries to adapt + * the best it can to the existing error toaster which parses the .stack + * as its error when you click the button to show the full error message. + * @param error The error to adapt to. + * @returns The adapted toaster error message. + */ +export const errorToErrorStackAdapter = (error: unknown): Error => { + if (error != null && isEsError(error)) { + return esErrorToErrorStack(error); + } else if (isAppError(error)) { + return appErrorToErrorStack(error); + } else if (error instanceof Error) { + return errorToErrorStack(error); + } else { + return unknownToErrorStack(error); + } +}; + +/** + * See this file, we are not allowed to import files such as es_error. + * So instead we say maybe err is on there so that we can unwrap it and get + * our status code from it if possible within the error in our function. + * src/plugins/data/public/search/errors/es_error.tsx + */ +export type MaybeESError = IEsError & { err?: Record }; + +/** + * This attempts its best to map between an IEsError which comes from bsearch to a error_toaster + * See the file: src/core/public/notifications/toasts/error_toast.tsx + * + * NOTE: This is brittle at the moment from bsearch and the hope is that better support between + * the error message and formatting of bsearch and the error_toast.tsx from Kibana core will be + * supported in the future. However, for now, this is _hopefully_ temporary. + * + * Also see the file: + * x-pack/solutions/security/plugins/security_solution/public/app/home/setup.tsx + * + * Where this same technique of overriding and changing the stack is occurring. + */ +export const esErrorToErrorStack = (error: IEsError & MaybeESError): Error => { + const maybeUnWrapped = error.err != null ? error.err : error; + const statusCode = + error.err?.statusCode != null + ? `(${error.err.statusCode})` + : error.statusCode != null + ? `(${error.statusCode})` + : ''; + const stringifiedError = getStringifiedStack(maybeUnWrapped); + const adaptedError = new Error( + `${error.attributes?.error?.reason ?? error.message} ${statusCode}` + ); + adaptedError.name = error.attributes?.error?.reason ?? error.message; + if (stringifiedError != null) { + adaptedError.stack = stringifiedError; + } + return adaptedError; +}; + +/** + * This attempts its best to map between a Kibana application error which can come from backend + * REST API's that are typically of a particular format and form. + * + * The existing error_toaster code tries to consolidate network and software stack traces but really + * here and our toasters we are using them for network response errors so we can troubleshoot things + * as quick as possible. + * + * We override and use error.stack to be able to give _full_ network responses regardless of if they + * are from Kibana or if they are from elasticSearch since sometimes Kibana errors might wrap the errors. + * + * Sometimes the errors are wrapped from io-ts, Kibana Schema or something else and we want to show + * as full error messages as we can. + */ +export const appErrorToErrorStack = (error: AppError): Error => { + const statusCode = isKibanaError(error) + ? `(${error.body.statusCode})` + : isSecurityAppError(error) + ? `(${error.body.status_code})` + : ''; + const stringifiedError = getStringifiedStack(error); + const adaptedError = new Error( + `${String(error.body.message).trim() !== '' ? error.body.message : error.message} ${statusCode}` + ); + // Note although all the Typescript typings say that error.name is a string and exists, we still can encounter an undefined so we + // do an extra guard here and default to empty string if it is undefined + adaptedError.name = error.name != null ? error.name : ''; + if (stringifiedError != null) { + adaptedError.stack = stringifiedError; + } + return adaptedError; +}; + +/** + * Takes an error and tries to stringify it and use that as the stack for the error toaster + * @param error The error to convert into a message + * @returns The exception error to return back + */ +export const errorToErrorStack = (error: Error): Error => { + const stringifiedError = getStringifiedStack(error); + const adaptedError = new Error(error.message); + adaptedError.name = error.name; + if (stringifiedError != null) { + adaptedError.stack = stringifiedError; + } + return adaptedError; +}; + +/** + * Last ditch effort to take something unknown which could be a string, number, + * anything. This usually should not be called but just in case we do try our + * best to stringify it and give a message, name, and replace the stack of it. + * @param error The unknown error to convert into a message + * @returns The exception error to return back + */ +export const unknownToErrorStack = (error: unknown): Error => { + const stringifiedError = getStringifiedStack(error); + const message = isString(error) + ? error + : error instanceof Object && stringifiedError != null + ? stringifiedError + : String(error); + const adaptedError = new Error(message); + adaptedError.name = message; + if (stringifiedError != null) { + adaptedError.stack = stringifiedError; + } + return adaptedError; +}; + +/** + * Stringifies the error. However, since Errors can JSON.stringify into empty objects this will + * use a replacer to push those as enumerable properties so we can stringify them. + * @param error The error to get a string representation of + * @returns The string representation of the error + */ +export const getStringifiedStack = (error: unknown): string | undefined => { + try { + return JSON.stringify( + error, + (_, value) => { + const enumerable = convertErrorToEnumerable(value); + if (isEmptyObjectWhenStringified(enumerable)) { + return undefined; + } else { + return enumerable; + } + }, + 2 + ); + } catch (err) { + return undefined; + } +}; + +/** + * Converts an error if this is an error to have enumerable so it can stringified + * @param error The error which might not have enumerable properties. + * @returns Enumerable error + */ +export const convertErrorToEnumerable = (error: unknown): unknown => { + if (error instanceof Error) { + return { + ...error, + name: error.name, + message: error.message, + stack: error.stack, + }; + } else { + return error; + } +}; + +/** + * If the object strings into an empty object we shouldn't show it as it doesn't + * add value and sometimes different people/frameworks attach req,res,request,response + * objects which don't stringify into anything or can have circular references. + * @param item The item to see if we are empty or have a circular reference error with. + * @returns True if this is a good object to stringify, otherwise false + */ +export const isEmptyObjectWhenStringified = (item: unknown): boolean => { + if (item instanceof Object) { + try { + return JSON.stringify(item) === '{}'; + } catch (_) { + // Do nothing, return false if we have a circular reference or other oddness. + return false; + } + } else { + return false; + } +}; diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_bool_state.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_bool_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_bool_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_bool_state.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/confirm_validation_errors_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/confirm_validation_errors_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/confirm_validation_errors_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/confirm_validation_errors_modal.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/translations.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/use_confirm_validation_errors_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/use_confirm_validation_errors_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/use_confirm_validation_errors_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_confirm_validation_errors_modal/use_confirm_validation_errors_modal.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_contract_component.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_contract_component.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_contract_component.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_contract_component.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_dashboard_href.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_dashboard_href.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_dashboard_href.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_dashboard_href.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_data_table_filters.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_data_table_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_data_table_filters.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_data_table_filters.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_data_view_id.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_data_view_id.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_data_view_id.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_data_view_id.test.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_data_view_id.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_data_view_id.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_data_view_id.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_data_view_id.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_error_toast.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_error_toast.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_error_toast.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_error_toast.test.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_error_toast.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_error_toast.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_error_toast.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_error_toast.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_experimental_features.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_experimental_features.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_experimental_features.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_experimental_features.test.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_experimental_features.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_experimental_features.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_experimental_features.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_experimental_features.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_fetch/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_fetch/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_fetch/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_fetch/index.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_fetch/request_names.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_fetch/use_fetch.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_fetch/use_fetch.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_fetch/use_fetch.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_fetch/use_fetch.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_fetch/use_fetch.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_fetch/use_fetch.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_fetch/use_fetch.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_fetch/use_fetch.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/extract_validation_results.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/extract_validation_results.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/extract_validation_results.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/extract_validation_results.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/form_hook_with_warnings.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/form_hook_with_warnings.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/form_hook_with_warnings.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/form_hook_with_warnings.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/index.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/use_form_with_warnings.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/use_form_with_warnings.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/use_form_with_warnings.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/use_form_with_warnings.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/use_form_with_warnings.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/use_form_with_warnings.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/use_form_with_warnings.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/use_form_with_warnings.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/validation_results.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/validation_results.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_form_with_warnings/validation_results.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_form_with_warnings/validation_results.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_get_field_spec.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_get_field_spec.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_get_field_spec.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_get_field_spec.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_global_filter_query.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_global_filter_query.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_global_filter_query.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_global_filter_query.test.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_global_filter_query.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_global_filter_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_global_filter_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_global_filter_query.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_global_header_portal.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_global_header_portal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_global_header_portal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_global_header_portal.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_invalid_filter_query.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_invalid_filter_query.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_invalid_filter_query.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_invalid_filter_query.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_invalid_filter_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_invalid_filter_query.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_invalid_filter_query.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_invalid_filter_query.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_is_overflow.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_is_overflow.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_is_overflow.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_is_overflow.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_license.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_license.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_license.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_license.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.test.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_refetch_queries.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_refetch_queries.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_refetch_queries.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_refetch_queries.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_resolve_conflict.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_conflict.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_resolve_conflict.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_conflict.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_resolve_conflict.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_conflict.tsx similarity index 86% rename from x-pack/plugins/security_solution/public/common/hooks/use_resolve_conflict.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_conflict.tsx index c73b21c3b8418..fd148cf259786 100644 --- a/x-pack/plugins/security_solution/public/common/hooks/use_resolve_conflict.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_conflict.tsx @@ -18,14 +18,8 @@ import { useKibana } from '../lib/kibana'; import { URL_PARAM_KEY } from './use_url_state'; /** - * Unfortunately the url change initiated when clicking the button to otherObjectPath doesn't seem to be - * respected by the useSetInitialStateFromUrl here: x-pack/plugins/security_solution/public/common/components/url_state/initialize_redux_by_url.tsx - * - * FYI: It looks like the routing causes replaceStateInLocation to be called instead: - * x-pack/plugins/security_solution/public/common/components/url_state/helpers.ts - * * Potentially why the markdown component needs a click handler as well for timeline? - * see: /x-pack/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/processor.tsx + * see: x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor/plugins/timeline/processor.tsx */ export const useResolveConflict = () => { const { search, pathname } = useLocation(); diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_resolve_redirect.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_redirect.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_resolve_redirect.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_redirect.test.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_resolve_redirect.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_redirect.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_resolve_redirect.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_redirect.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_selector.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_selector.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_selector.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_selector.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_space_id.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_space_id.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_space_id.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_space_id.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_timeline_events_count.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_timeline_events_count.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_timeline_events_count.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_timeline_events_count.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_update_browser_title.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_update_browser_title.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_update_browser_title.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_update_browser_title.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_update_execution_context.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_update_execution_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_update_execution_context.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_update_execution_context.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_upselling.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_upselling.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_upselling.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_upselling.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_upselling.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_upselling.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_upselling.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_upselling.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_url_state.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_url_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_url_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_url_state.ts diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_value_changed.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_value_changed.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/hooks/use_value_changed.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_value_changed.ts diff --git a/x-pack/plugins/security_solution/public/common/icons/asset_criticality.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/asset_criticality.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/asset_criticality.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/asset_criticality.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/cloud_defend.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/cloud_defend.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/cloud_defend.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/cloud_defend.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/console.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/console.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/console.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/console.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/console_cloud.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/console_cloud.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/console_cloud.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/console_cloud.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/dashboards.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/dashboards.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/dashboards.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/dashboards.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/endpoints.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/endpoints.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/endpoints.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/endpoints.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/entity_analytics.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/entity_analytics.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/entity_analytics.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/entity_analytics.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/pipeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/pipeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/pipeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/pipeline.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/rollup.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/rollup.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/rollup.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/rollup.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/saved_object.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/saved_object.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/saved_object.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/saved_object.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/shield.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/shield.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/shield.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/shield.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/siem_migrations.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/siem_migrations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/siem_migrations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/siem_migrations.tsx diff --git a/x-pack/plugins/security_solution/public/common/icons/tool.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/icons/tool.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/icons/tool.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/icons/tool.tsx diff --git a/x-pack/plugins/security_solution/public/common/images/alerts.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/alerts.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/alerts.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/alerts.png diff --git a/x-pack/plugins/security_solution/public/common/images/cloud_native_vulnerability_management_dashboard_page.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/cloud_native_vulnerability_management_dashboard_page.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/cloud_native_vulnerability_management_dashboard_page.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/cloud_native_vulnerability_management_dashboard_page.png diff --git a/x-pack/plugins/security_solution/public/common/images/cloud_security_posture_dashboard_page.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/cloud_security_posture_dashboard_page.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/cloud_security_posture_dashboard_page.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/cloud_security_posture_dashboard_page.png diff --git a/x-pack/plugins/security_solution/public/common/images/data_quality_dashboard_page.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/data_quality_dashboard_page.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/data_quality_dashboard_page.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/data_quality_dashboard_page.png diff --git a/x-pack/plugins/security_solution/public/common/images/default.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/default.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/default.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/default.png diff --git a/x-pack/plugins/security_solution/public/common/images/detection_response_page.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/detection_response_page.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/detection_response_page.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/detection_response_page.png diff --git a/x-pack/plugins/security_solution/public/common/images/endpoint.svg b/x-pack/solutions/security/plugins/security_solution/public/common/images/endpoint.svg similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/endpoint.svg rename to x-pack/solutions/security/plugins/security_solution/public/common/images/endpoint.svg diff --git a/x-pack/plugins/security_solution/public/common/images/entity_analytics_dashboard.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/entity_analytics_dashboard.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/entity_analytics_dashboard.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/entity_analytics_dashboard.png diff --git a/x-pack/plugins/security_solution/public/common/images/hosts_page.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/hosts_page.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/hosts_page.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/hosts_page.png diff --git a/x-pack/plugins/security_solution/public/common/images/illustration_product_no_results_magnifying_glass.svg b/x-pack/solutions/security/plugins/security_solution/public/common/images/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/illustration_product_no_results_magnifying_glass.svg rename to x-pack/solutions/security/plugins/security_solution/public/common/images/illustration_product_no_results_magnifying_glass.svg diff --git a/x-pack/plugins/security_solution/public/common/images/kubernetes_page.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/kubernetes_page.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/kubernetes_page.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/kubernetes_page.png diff --git a/x-pack/plugins/security_solution/public/common/images/modified.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/modified.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/modified.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/modified.png diff --git a/x-pack/plugins/security_solution/public/common/images/network_page.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/network_page.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/network_page.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/network_page.png diff --git a/x-pack/plugins/security_solution/public/common/images/onboarding_tour_step_alerts.gif b/x-pack/solutions/security/plugins/security_solution/public/common/images/onboarding_tour_step_alerts.gif similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/onboarding_tour_step_alerts.gif rename to x-pack/solutions/security/plugins/security_solution/public/common/images/onboarding_tour_step_alerts.gif diff --git a/x-pack/plugins/security_solution/public/common/images/onboarding_tour_step_cases.gif b/x-pack/solutions/security/plugins/security_solution/public/common/images/onboarding_tour_step_cases.gif similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/onboarding_tour_step_cases.gif rename to x-pack/solutions/security/plugins/security_solution/public/common/images/onboarding_tour_step_cases.gif diff --git a/x-pack/plugins/security_solution/public/common/images/overview_page.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/overview_page.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/overview_page.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/overview_page.png diff --git a/x-pack/plugins/security_solution/public/common/images/siem.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/siem.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/siem.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/siem.png diff --git a/x-pack/plugins/security_solution/public/common/images/timeline.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/timeline.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/timeline.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/timeline.png diff --git a/x-pack/plugins/security_solution/public/common/images/timeline_alerts.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/timeline_alerts.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/timeline_alerts.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/timeline_alerts.png diff --git a/x-pack/plugins/security_solution/public/common/images/users_page.png b/x-pack/solutions/security/plugins/security_solution/public/common/images/users_page.png similarity index 100% rename from x-pack/plugins/security_solution/public/common/images/users_page.png rename to x-pack/solutions/security/plugins/security_solution/public/common/images/users_page.png diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/common/jest.config.js new file mode 100644 index 0000000000000..de509516f5538 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/common/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/common'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/common', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/common/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/common/lib/apm/__mocks__/use_start_transaction.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/__mocks__/use_start_transaction.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/apm/__mocks__/use_start_transaction.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/__mocks__/use_start_transaction.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/apm/__mocks__/use_track_http_request.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/__mocks__/use_track_http_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/apm/__mocks__/use_track_http_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/__mocks__/use_track_http_request.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/apm/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/apm/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/constants.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/apm/service.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/service.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/apm/service.mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/service.mock.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/apm/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/apm/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/apm/use_start_transaction.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/use_start_transaction.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/apm/use_start_transaction.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/use_start_transaction.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/apm/use_track_http_request.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/use_track_http_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/apm/use_track_http_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/use_track_http_request.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/apm/user_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/user_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/apm/user_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/apm/user_actions.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/capabilities/has_capabilities.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/capabilities/has_capabilities.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/capabilities/has_capabilities.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/capabilities/has_capabilities.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/capabilities/has_capabilities.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/capabilities/has_capabilities.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/capabilities/has_capabilities.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/capabilities/has_capabilities.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/capabilities/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/capabilities/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/capabilities/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/capabilities/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/cell_actions/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/lib/cell_actions/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/cell_actions/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/cell_actions/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/common/lib/cell_actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/cell_actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/cell_actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/cell_actions/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/clipboard/clipboard.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/lib/clipboard/clipboard.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/clipboard/clipboard.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/clipboard/clipboard.tsx diff --git a/x-pack/plugins/security_solution/public/common/lib/clipboard/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/clipboard/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/clipboard/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/clipboard/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/clipboard/with_copy_to_clipboard.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/lib/clipboard/with_copy_to_clipboard.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/clipboard/with_copy_to_clipboard.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/clipboard/with_copy_to_clipboard.tsx diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/index.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_isolation/mocks.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/endpoint_pending_actions.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/endpoint_pending_actions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/endpoint_pending_actions.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/endpoint_pending_actions.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/endpoint_pending_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/endpoint_pending_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/endpoint_pending_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/endpoint_pending_actions.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/endpoint_pending_actions/mocks.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_agent_type_for_agent_id_field.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_agent_type_for_agent_id_field.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_agent_type_for_agent_id_field.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_agent_type_for_agent_id_field.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_agent_type_for_agent_id_field.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_agent_type_for_agent_id_field.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_agent_type_for_agent_id_field.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_agent_type_for_agent_id_field.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_agent_id_field.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_agent_id_field.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_agent_id_field.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_agent_id_field.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_agent_id_field.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_agent_id_field.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_agent_id_field.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_agent_id_field.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_field_values.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_field_values.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_field_values.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_event_details_field_values.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_host_platform.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_host_platform.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_host_platform.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_host_platform.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_host_platform.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_host_platform.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/get_host_platform.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/get_host_platform.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/is_agent_type_and_action_supported.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/is_agent_type_and_action_supported.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/is_agent_type_and_action_supported.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/is_agent_type_and_action_supported.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/is_agent_type_and_action_supported.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/is_agent_type_and_action_supported.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/is_agent_type_and_action_supported.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/is_agent_type_and_action_supported.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/is_response_actions_alert_agent_id_field.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/is_response_actions_alert_agent_id_field.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/is_response_actions_alert_agent_id_field.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/is_response_actions_alert_agent_id_field.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/endpoint/utils/parse_ecs_field_path.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/parse_ecs_field_path.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/endpoint/utils/parse_ecs_field_path.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/endpoint/utils/parse_ecs_field_path.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/helpers/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/lib/helpers/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/helpers/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/helpers/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/lib/helpers/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/lib/helpers/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/helpers/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/helpers/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/lib/history/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/history/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/history/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/history/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/hooks.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/hooks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/kibana/hooks.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/hooks.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/kibana/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/kibana_react.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/kibana_react.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/services.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/services.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/kibana/services.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/services.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/kuery/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/kuery/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/kuery/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/kuery/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/local_storage/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/local_storage/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/local_storage/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/local_storage/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/local_storage/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/local_storage/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/local_storage/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/local_storage/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/note/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/note/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/note/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/note/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/process_actions/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/process_actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/process_actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/process_actions/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/constants.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/ai_assistant/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/ai_assistant/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/ai_assistant/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/ai_assistant/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/ai_assistant/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/ai_assistant/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/ai_assistant/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/ai_assistant/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/alerts_grouping/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/alerts_grouping/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/alerts_grouping/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/alerts_grouping/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/alerts_grouping/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/alerts_grouping/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/alerts_grouping/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/alerts_grouping/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/app/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/app/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/app/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/app/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/app/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/app/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/app/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/app/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/data_quality/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/data_quality/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/data_quality/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/data_quality/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/data_quality/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/data_quality/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/data_quality/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/data_quality/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/document_details/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/document_details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/document_details/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/document_details/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/document_details/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/document_details/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/document_details/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/document_details/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/entity_analytics/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/entity_analytics/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/entity_analytics/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/entity_analytics/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/entity_analytics/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/entity_analytics/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/entity_analytics/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/entity_analytics/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/event_log/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/event_log/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/event_log/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/event_log/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/event_log/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/event_log/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/event_log/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/event_log/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/manual_rule_run/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/manual_rule_run/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/manual_rule_run/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/manual_rule_run/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/manual_rule_run/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/manual_rule_run/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/manual_rule_run/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/manual_rule_run/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/notes/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/notes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/notes/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/notes/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/notes/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/notes/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/notes/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/notes/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/onboarding/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/onboarding/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/onboarding/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/onboarding/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/onboarding/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/onboarding/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/onboarding/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/onboarding/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/preview_rule/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/preview_rule/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/preview_rule/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/preview_rule/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/preview_rule/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/preview_rule/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/preview_rule/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/preview_rule/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/index.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/middleware.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/middleware.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/middleware.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/middleware.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.mock.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/track.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/track.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/track.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/track.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/trackers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/trackers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/trackers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/trackers.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/telemetry/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/telemetry/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/types.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/theme/use_eui_theme.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/lib/theme/use_eui_theme.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/theme/use_eui_theme.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/theme/use_eui_theme.tsx diff --git a/x-pack/plugins/security_solution/public/common/lib/triggers_actions_ui/alert_table_scope_config.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/triggers_actions_ui/alert_table_scope_config.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/triggers_actions_ui/alert_table_scope_config.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/triggers_actions_ui/alert_table_scope_config.test.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/triggers_actions_ui/alert_table_scope_config.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/triggers_actions_ui/alert_table_scope_config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/triggers_actions_ui/alert_table_scope_config.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/triggers_actions_ui/alert_table_scope_config.ts diff --git a/x-pack/plugins/security_solution/public/common/lib/triggers_actions_ui/register_alerts_table_configuration.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/lib/triggers_actions_ui/register_alerts_table_configuration.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/lib/triggers_actions_ui/register_alerts_table_configuration.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/lib/triggers_actions_ui/register_alerts_table_configuration.tsx diff --git a/x-pack/plugins/security_solution/public/common/links/deep_links.ts b/x-pack/solutions/security/plugins/security_solution/public/common/links/deep_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/deep_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/links/deep_links.ts diff --git a/x-pack/plugins/security_solution/public/common/links/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/links/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/links/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/links/links.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/links/links.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/links.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/links/links.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/links/links.ts b/x-pack/solutions/security/plugins/security_solution/public/common/links/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/links/links.ts diff --git a/x-pack/plugins/security_solution/public/common/links/nav_links.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/links/nav_links.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/nav_links.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/links/nav_links.test.ts diff --git a/x-pack/plugins/security_solution/public/common/links/nav_links.ts b/x-pack/solutions/security/plugins/security_solution/public/common/links/nav_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/nav_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/links/nav_links.ts diff --git a/x-pack/plugins/security_solution/public/common/links/test_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/links/test_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/test_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/links/test_utils.ts diff --git a/x-pack/plugins/security_solution/public/common/links/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts diff --git a/x-pack/plugins/security_solution/public/common/links/use_find_app_links_by_path.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/links/use_find_app_links_by_path.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/use_find_app_links_by_path.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/links/use_find_app_links_by_path.test.ts diff --git a/x-pack/plugins/security_solution/public/common/links/use_find_app_links_by_path.ts b/x-pack/solutions/security/plugins/security_solution/public/common/links/use_find_app_links_by_path.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/links/use_find_app_links_by_path.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/links/use_find_app_links_by_path.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/create_react_query_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/create_react_query_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/create_react_query_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/create_react_query_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/create_store.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/create_store.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/create_store.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/create_store.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/app_context_render.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/endpoint/app_root_provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/app_root_provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/endpoint/app_root_provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/app_root_provider.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/endpoint/endpoint_alert_data_mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/endpoint_alert_data_mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/endpoint/endpoint_alert_data_mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/endpoint_alert_data_mock.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/endpoint/http_handler_mock_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/http_handler_mock_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/endpoint/http_handler_mock_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/http_handler_mock_factory.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/endpoint/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/endpoint/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/endpoint/index.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/expandable_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/expandable_flyout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/expandable_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/expandable_flyout.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/formatted_relative.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/formatted_relative.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/formatted_relative.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/formatted_relative.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/global_state.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/global_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/global_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/global_state.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/header.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/header.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/header.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/header.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/hook_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/hook_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/hook_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/hook_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/index.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/index_pattern.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/index_pattern.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/index_pattern.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/index_pattern.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/intersection_observer_mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/intersection_observer_mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/intersection_observer_mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/intersection_observer_mock.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_assistant_provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_assistant_provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_assistant_provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_assistant_provider.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_detail_item.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_detail_item.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_detail_item.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_detail_item.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_detection_alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_detection_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_detection_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_detection_alerts.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_detection_alerts_aad.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_detection_alerts_aad.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_detection_alerts_aad.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_detection_alerts_aad.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_discover_state.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_discover_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_discover_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_discover_state.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_endgame_ecs_data.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_endgame_ecs_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_endgame_ecs_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_endgame_ecs_data.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_local_storage.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_local_storage.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_local_storage.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_local_storage.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_timeline_control_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_timeline_control_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_timeline_control_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_timeline_control_columns.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_timeline_data.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_timeline_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_timeline_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_timeline_data.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_timelines_plugin.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_timelines_plugin.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_timelines_plugin.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_timelines_plugin.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_triggers_actions_ui_plugin.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_triggers_actions_ui_plugin.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/mock_triggers_actions_ui_plugin.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_triggers_actions_ui_plugin.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/netflow.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/netflow.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/netflow.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/netflow.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/news.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/news.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/news.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/news.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/raw_news.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/raw_news.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/raw_news.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/raw_news.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/react_beautiful_dnd.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/react_beautiful_dnd.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/react_beautiful_dnd.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/react_beautiful_dnd.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/router.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/router.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/router.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/router.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/storybook_providers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/storybook_providers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/storybook_providers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/storybook_providers.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/test_providers.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/mock/test_providers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/test_providers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/test_providers.tsx diff --git a/x-pack/plugins/security_solution/public/common/mock/timeline_results.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/timeline_results.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/timeline_results.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/timeline_results.ts diff --git a/x-pack/plugins/security_solution/public/common/mock/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/mock/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/mock/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/mock/utils.ts diff --git a/x-pack/plugins/security_solution/public/common/store/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/actions.ts diff --git a/x-pack/plugins/security_solution/public/common/store/app/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/app/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/app/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/app/actions.ts diff --git a/x-pack/plugins/security_solution/public/common/store/app/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/app/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/app/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/app/index.ts diff --git a/x-pack/plugins/security_solution/public/common/store/app/model.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/app/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/app/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/app/model.ts diff --git a/x-pack/plugins/security_solution/public/common/store/app/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/app/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/app/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/app/reducer.ts diff --git a/x-pack/plugins/security_solution/public/common/store/app/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/app/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/app/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/app/selectors.ts diff --git a/x-pack/plugins/security_solution/public/common/store/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/constants.ts diff --git a/x-pack/plugins/security_solution/public/common/store/data_table/middleware_local_storage.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/data_table/middleware_local_storage.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/data_table/middleware_local_storage.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/data_table/middleware_local_storage.ts diff --git a/x-pack/plugins/security_solution/public/common/store/data_table/middlware_local_storage.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/data_table/middlware_local_storage.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/data_table/middlware_local_storage.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/data_table/middlware_local_storage.test.ts diff --git a/x-pack/plugins/security_solution/public/common/store/discover/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/discover/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/discover/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/discover/actions.ts diff --git a/x-pack/plugins/security_solution/public/common/store/discover/model.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/discover/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/discover/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/discover/model.ts diff --git a/x-pack/plugins/security_solution/public/common/store/discover/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/discover/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/discover/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/discover/reducer.ts diff --git a/x-pack/plugins/security_solution/public/common/store/discover/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/discover/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/discover/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/discover/selectors.ts diff --git a/x-pack/plugins/security_solution/public/common/store/drag_and_drop/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/drag_and_drop/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/actions.ts diff --git a/x-pack/plugins/security_solution/public/common/store/drag_and_drop/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/drag_and_drop/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/index.ts diff --git a/x-pack/plugins/security_solution/public/common/store/drag_and_drop/model.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/drag_and_drop/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/model.ts diff --git a/x-pack/plugins/security_solution/public/common/store/drag_and_drop/reducer.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/reducer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/drag_and_drop/reducer.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/reducer.test.ts diff --git a/x-pack/plugins/security_solution/public/common/store/drag_and_drop/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/drag_and_drop/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/reducer.ts diff --git a/x-pack/plugins/security_solution/public/common/store/drag_and_drop/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/drag_and_drop/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/drag_and_drop/selectors.ts diff --git a/x-pack/plugins/security_solution/public/common/store/global_url_param/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/global_url_param/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/actions.ts diff --git a/x-pack/plugins/security_solution/public/common/store/global_url_param/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/global_url_param/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/index.ts diff --git a/x-pack/plugins/security_solution/public/common/store/global_url_param/reducer.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/reducer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/global_url_param/reducer.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/reducer.test.ts diff --git a/x-pack/plugins/security_solution/public/common/store/global_url_param/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/global_url_param/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/reducer.ts diff --git a/x-pack/plugins/security_solution/public/common/store/global_url_param/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/global_url_param/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/global_url_param/selectors.ts diff --git a/x-pack/plugins/security_solution/public/common/store/grouping/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/grouping/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/actions.ts diff --git a/x-pack/plugins/security_solution/public/common/store/grouping/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/grouping/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/index.ts diff --git a/x-pack/plugins/security_solution/public/common/store/grouping/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/grouping/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/reducer.ts diff --git a/x-pack/plugins/security_solution/public/common/store/grouping/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/grouping/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/selectors.ts diff --git a/x-pack/plugins/security_solution/public/common/store/grouping/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/grouping/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/grouping/types.ts diff --git a/x-pack/plugins/security_solution/public/common/store/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/index.ts diff --git a/x-pack/plugins/security_solution/public/common/store/inputs/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/inputs/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/actions.ts diff --git a/x-pack/plugins/security_solution/public/common/store/inputs/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/inputs/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/constants.ts diff --git a/x-pack/plugins/security_solution/public/common/store/inputs/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/inputs/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/common/store/inputs/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/inputs/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/store/inputs/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/inputs/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/index.ts diff --git a/x-pack/plugins/security_solution/public/common/store/inputs/model.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/inputs/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/model.ts diff --git a/x-pack/plugins/security_solution/public/common/store/inputs/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/inputs/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/reducer.ts diff --git a/x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/inputs/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/inputs/selectors.ts diff --git a/x-pack/plugins/security_solution/public/common/store/middlewares.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/middlewares.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/middlewares.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/middlewares.ts diff --git a/x-pack/plugins/security_solution/public/common/store/model.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/model.ts diff --git a/x-pack/plugins/security_solution/public/common/store/reducer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/store/reducer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/reducer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/store/reducer.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/store/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/reducer.ts diff --git a/x-pack/plugins/security_solution/public/common/store/routing/action.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/routing/action.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/routing/action.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/routing/action.ts diff --git a/x-pack/plugins/security_solution/public/common/store/routing/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/routing/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/routing/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/routing/index.ts diff --git a/x-pack/plugins/security_solution/public/common/store/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/selectors.ts diff --git a/x-pack/plugins/security_solution/public/common/store/store.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/store.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/store.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/store.ts diff --git a/x-pack/plugins/security_solution/public/common/store/test_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/test_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/test_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/test_utils.ts diff --git a/x-pack/plugins/security_solution/public/common/store/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/store/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/store/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/store/types.ts diff --git a/x-pack/plugins/security_solution/public/common/test/eui/combobox.ts b/x-pack/solutions/security/plugins/security_solution/public/common/test/eui/combobox.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/test/eui/combobox.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/test/eui/combobox.ts diff --git a/x-pack/plugins/security_solution/public/common/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/types.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/__mocks__/normalize_time_range.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/__mocks__/normalize_time_range.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/__mocks__/normalize_time_range.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/__mocks__/normalize_time_range.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/alerts.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/alerts.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/alerts.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/alerts.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/alerts.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/clone_http_fetch_query.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/clone_http_fetch_query.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/clone_http_fetch_query.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/clone_http_fetch_query.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/clone_http_fetch_query.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/clone_http_fetch_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/clone_http_fetch_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/clone_http_fetch_query.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/default_date_settings.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/default_date_settings.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/default_date_settings.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/default_date_settings.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/default_date_settings.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/default_date_settings.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/default_date_settings.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/default_date_settings.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/download_blob.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/download_blob.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/download_blob.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/download_blob.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/exception_list_items/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/exception_list_items/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/exception_list_items/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/exception_list_items/index.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/exception_list_items/mappers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/exception_list_items/mappers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/exception_list_items/mappers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/exception_list_items/mappers.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/exceptions/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/exceptions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/exceptions/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/exceptions/index.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/get_mapped_non_ecs_value.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/get_mapped_non_ecs_value.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/get_mapped_non_ecs_value.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/get_mapped_non_ecs_value.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/get_mapped_non_ecs_value.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/get_mapped_non_ecs_value.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/get_mapped_non_ecs_value.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/get_mapped_non_ecs_value.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/get_time_range.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/get_time_range.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/get_time_range.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/get_time_range.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/get_time_range.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/get_time_range.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/get_time_range.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/get_time_range.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/global_query_string/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/global_query_string/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/global_query_string/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/global_query_string/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/global_query_string/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/global_query_string/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/global_query_string/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/global_query_string/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/global_query_string/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/global_query_string/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/global_query_string/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/global_query_string/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/global_query_string/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/global_query_string/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/global_query_string/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/global_query_string/index.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/lens.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/lens.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/lens.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/lens.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/logo_endpoint/64_color.svg b/x-pack/solutions/security/plugins/security_solution/public/common/utils/logo_endpoint/64_color.svg similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/logo_endpoint/64_color.svg rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/logo_endpoint/64_color.svg diff --git a/x-pack/plugins/security_solution/public/common/utils/normalize_time_range.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/normalize_time_range.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/normalize_time_range.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/normalize_time_range.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/normalize_time_range.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/normalize_time_range.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/normalize_time_range.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/normalize_time_range.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/privileges/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/privileges/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/privileges/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/privileges/index.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/privileges/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/privileges/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/privileges/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/privileges/index.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/resolve_path_variables.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/resolve_path_variables.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/resolve_path_variables.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/resolve_path_variables.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/resolve_path_variables.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/resolve_path_variables.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/resolve_path_variables.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/resolve_path_variables.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/route/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/route/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/route/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/route/helpers.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/route/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/route/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/route/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/route/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/route/manage_spy_routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/route/manage_spy_routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/route/manage_spy_routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/route/manage_spy_routes.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/route/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/route/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/route/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/route/mocks.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/route/spy_routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/route/spy_routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/route/spy_routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/route/spy_routes.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/route/types.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/route/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/route/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/route/types.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/route/use_route_spy.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/route/use_route_spy.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/route/use_route_spy.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/route/use_route_spy.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/saved_query_services/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/saved_query_services/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/saved_query_services/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/saved_query_services/index.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/shorten_count_into_string.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/shorten_count_into_string.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/shorten_count_into_string.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/shorten_count_into_string.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/shorten_count_into_string.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/shorten_count_into_string.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/shorten_count_into_string.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/shorten_count_into_string.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/timeline/use_show_timeline.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_show_timeline.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/timeline/use_show_timeline.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_show_timeline.test.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/timeline/use_show_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_show_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/timeline/use_show_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_show_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/timeline/use_show_timeline_for_path.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_show_timeline_for_path.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/timeline/use_show_timeline_for_path.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_show_timeline_for_path.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/timeline/use_timeline_click.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_timeline_click.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/timeline/use_timeline_click.tsx rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_timeline_click.tsx diff --git a/x-pack/plugins/security_solution/public/common/utils/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/use_mount_appended.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/use_mount_appended.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/use_mount_appended.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/use_mount_appended.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/validators/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/validators/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/validators/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/validators/index.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/validators/index.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/validators/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/validators/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/validators/index.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/validators/is_endpoint_host_isolated.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/validators/is_endpoint_host_isolated.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/validators/is_endpoint_host_isolated.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/validators/is_endpoint_host_isolated.test.ts diff --git a/x-pack/plugins/security_solution/public/common/utils/validators/is_endpoint_host_isolated.ts b/x-pack/solutions/security/plugins/security_solution/public/common/utils/validators/is_endpoint_host_isolated.ts similarity index 100% rename from x-pack/plugins/security_solution/public/common/utils/validators/is_endpoint_host_isolated.ts rename to x-pack/solutions/security/plugins/security_solution/public/common/utils/validators/is_endpoint_host_isolated.ts diff --git a/x-pack/plugins/security_solution/public/contract_components.ts b/x-pack/solutions/security/plugins/security_solution/public/contract_components.ts similarity index 100% rename from x-pack/plugins/security_solution/public/contract_components.ts rename to x-pack/solutions/security/plugins/security_solution/public/contract_components.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/components/dashboard_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/components/dashboard_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/components/dashboard_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/components/dashboard_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/components/dashboard_title.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_title.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/components/dashboard_title.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_title.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/components/dashboards_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboards_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/components/dashboards_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboards_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/components/dashboards_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboards_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/components/dashboards_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboards_table.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/components/status_prompt.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/status_prompt.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/components/status_prompt.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/components/status_prompt.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/components/status_prompt.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/status_prompt.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/components/status_prompt.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/components/status_prompt.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/containers/use_fetch_security_dashboards.test.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/containers/use_fetch_security_dashboards.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/containers/use_fetch_security_dashboards.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/containers/use_fetch_security_dashboards.test.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/containers/use_fetch_security_dashboards.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/containers/use_fetch_security_dashboards.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/containers/use_fetch_security_dashboards.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/containers/use_fetch_security_dashboards.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/containers/use_fetch_security_tags.test.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/containers/use_fetch_security_tags.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/containers/use_fetch_security_tags.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/containers/use_fetch_security_tags.test.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/containers/use_fetch_security_tags.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/containers/use_fetch_security_tags.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/containers/use_fetch_security_tags.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/containers/use_fetch_security_tags.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/context/dashboard_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/context/dashboard_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/context/dashboard_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/context/dashboard_context.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/hooks/use_create_security_dashboard_link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_create_security_dashboard_link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/hooks/use_create_security_dashboard_link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_create_security_dashboard_link.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/hooks/use_create_security_dashboard_link.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_create_security_dashboard_link.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/hooks/use_create_security_dashboard_link.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_create_security_dashboard_link.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/hooks/use_dashboard_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_dashboard_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/hooks/use_dashboard_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_dashboard_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/hooks/use_dashboard_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_dashboard_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/hooks/use_dashboard_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_dashboard_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/hooks/use_dashboard_view_prompt_state.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_dashboard_view_prompt_state.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/hooks/use_dashboard_view_prompt_state.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_dashboard_view_prompt_state.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/hooks/use_dashboard_view_prompt_state.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_dashboard_view_prompt_state.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/hooks/use_dashboard_view_prompt_state.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_dashboard_view_prompt_state.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/hooks/use_security_dashboards_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_security_dashboards_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/hooks/use_security_dashboards_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_security_dashboards_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/hooks/use_security_dashboards_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_security_dashboards_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/hooks/use_security_dashboards_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/hooks/use_security_dashboards_table.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/index.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/dashboards/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/dashboards/jest.config.js new file mode 100644 index 0000000000000..05eaceea239be --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/dashboards/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/dashboards'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/dashboards', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/dashboards/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/dashboards/links.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/links.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/pages/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/pages/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/pages/details/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/details/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/pages/details/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/details/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/pages/details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/pages/details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/details/index.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/pages/details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/details/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/pages/details/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/details/translations.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/pages/landing_page/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/pages/landing_page/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/pages/landing_page/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/pages/landing_page/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/index.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/pages/landing_page/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/pages/landing_page/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/translations.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/dashboards/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/routes.tsx diff --git a/x-pack/plugins/security_solution/public/dashboards/types.ts b/x-pack/solutions/security/plugins/security_solution/public/dashboards/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/dashboards/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/dashboards/types.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/endpoint_exceptions/endpoint_exceptions_viewer.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/endpoint_exceptions/endpoint_exceptions_viewer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/endpoint_exceptions/endpoint_exceptions_viewer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/endpoint_exceptions/endpoint_exceptions_viewer.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/endpoint_exceptions/use_get_endpoint_exceptions_unavailablle_component.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/endpoint_exceptions/use_get_endpoint_exceptions_unavailablle_component.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/endpoint_exceptions/use_get_endpoint_exceptions_unavailablle_component.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/endpoint_exceptions/use_get_endpoint_exceptions_unavailablle_component.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/__mocks__/api_client.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/__mocks__/api_client.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/__mocks__/api_client.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/__mocks__/api_client.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/api_client.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/api_client.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/api_client.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/api_client.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/api_client_interface.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/api_client_interface.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/api_client_interface.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/api_client_interface.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/api/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/api/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/fleet_integrations/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/fleet_integrations/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/jest.config.js new file mode 100644 index 0000000000000..0b7587837fd30 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/detection_engine'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/detection_engine', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/detection_engine/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/alert_suppression_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/alert_suppression_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/alert_suppression_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/alert_suppression_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/missing_fields_strategy_selector.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/missing_fields_strategy_selector.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/missing_fields_strategy_selector.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/missing_fields_strategy_selector.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_duration_selector.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_duration_selector.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_duration_selector.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_duration_selector.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_fields_selector.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_fields_selector.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_fields_selector.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_fields_selector.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_info_icon.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_info_icon.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_info_icon.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/suppression_info_icon.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/components/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/constants/default_duration.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/constants/default_duration.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/constants/default_duration.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/constants/default_duration.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/constants/fields.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/constants/fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/constants/fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/constants/fields.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/test_helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/test_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/test_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/alert_suppression_edit/test_helpers.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/duration_input/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/duration_input/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/duration_input/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/duration_input/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/duration_input/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/duration_input/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/duration_input/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/duration_input/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_overview_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_overview_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_overview_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_overview_link.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_bar.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/eql_query_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/errors_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/errors_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/errors_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/errors_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/errors_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/errors_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/errors_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/errors_popover.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/footer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/footer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/footer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/footer.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/footer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/footer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/footer.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/validators.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/validators.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/validators.mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/validators.mock.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/validators/eql_query_validator_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/validators/eql_query_validator_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/validators/eql_query_validator_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/eql_query_edit/validators/eql_query_validator_factory.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/esql_info_icon.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/esql_info_icon.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/esql_info_icon.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/esql_info_icon.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/esql_query_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/esql_query_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/esql_query_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/esql_query_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/error_codes.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/error_codes.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/error_codes.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/error_codes.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_required_validator.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_required_validator.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_required_validator.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_required_validator.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_validator_factory.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_validator_factory.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_validator_factory.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_validator_factory.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_validator_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_validator_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_validator_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/esql_query_validator_factory.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/esql_query_edit/validators/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/ml_audit_icon.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/ml_audit_icon.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/ml_audit_icon.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/ml_audit_icon.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/ml_audit_icon.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/ml_audit_icon.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/ml_audit_icon.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_audit_icon/ml_audit_icon.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/ml_job_link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/ml_job_link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/ml_job_link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/ml_job_link.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/ml_job_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/ml_job_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/ml_job_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_link/ml_job_link.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/help_text.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/help_text.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/help_text.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/help_text.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/help_text.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/help_text.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/help_text.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/help_text.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_select/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/ml_job_status_badge.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/ml_job_status_badge.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/ml_job_status_badge.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/ml_job_status_badge.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/ml_job_status_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/ml_job_status_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/ml_job_status_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/ml_job_status_badge.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_job_status_badge/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_job_description.integration.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_job_description.integration.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_job_description.integration.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_job_description.integration.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_job_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_job_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_job_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_job_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_jobs_description.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_jobs_description.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_jobs_description.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_jobs_description.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_jobs_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_jobs_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_jobs_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/admin/ml_admin_jobs_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_job_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_job_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_job_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_job_item.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_jobs_description.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_jobs_description.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_jobs_description.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_jobs_description.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_jobs_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_jobs_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_jobs_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/ml_jobs_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_job_description.integration.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_job_description.integration.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_job_description.integration.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_job_description.integration.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_job_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_job_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_job_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_job_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_jobs_description.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_jobs_description.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_jobs_description.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_jobs_description.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_jobs_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_jobs_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_jobs_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/ml_jobs_description/user/ml_user_jobs_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/pick_timeline/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/pick_timeline/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/pick_timeline/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/pick_timeline/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/pick_timeline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/pick_timeline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/pick_timeline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/pick_timeline/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/default_related_integration.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/default_related_integration.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/default_related_integration.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/default_related_integration.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/integration_status_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/integration_status_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/integration_status_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/integration_status_badge.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integration_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integration_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integration_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integration_field.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integration_field_row.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integration_field_row.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integration_field_row.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integration_field_row.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations_help_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations_help_info.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations_help_info.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/related_integrations_help_info.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/test_helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/test_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/test_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/test_helpers.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/validate_related_integration.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/validate_related_integration.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/validate_related_integration.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/validate_related_integration.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/validate_related_integration.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/validate_related_integration.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/validate_related_integration.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/related_integrations/validate_related_integration.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/make_validate_required_field.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/make_validate_required_field.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/make_validate_required_field.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/make_validate_required_field.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/name_combobox.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/name_combobox.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/name_combobox.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/name_combobox.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields_help_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields_help_info.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields_help_info.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields_help_info.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields_row.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields_row.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields_row.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/required_fields_row.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/type_combobox.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/type_combobox.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/type_combobox.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/type_combobox.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/utils.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/utils.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/utils.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/utils.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/required_fields/utils.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/rule_actions_field/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/schedule_item_form/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/styles.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/styles.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_about_rule_details/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_content_wrapper/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_content_wrapper/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_content_wrapper/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_content_wrapper/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_content_wrapper/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_content_wrapper/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_content_wrapper/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_content_wrapper/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/get_schema.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/get_schema.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/get_schema.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/get_schema.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/notification_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/notification_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/notification_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/notification_action.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/response_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/response_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/response_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/response_action.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/rule_snooze_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/rule_snooze_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/rule_snooze_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/rule_snooze_section.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/step_rule_actions/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/fields.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/fields.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/threshold_alert_suppression_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/threshold_alert_suppression_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/threshold_alert_suppression_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/threshold_alert_suppression_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/components/threshold_alert_suppression_edit/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/constants/validation_warning_codes.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/constants/validation_warning_codes.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/constants/validation_warning_codes.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/constants/validation_warning_codes.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/logic/esql_query_columns.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/logic/esql_query_columns.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/logic/esql_query_columns.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/logic/esql_query_columns.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/logic/extract_validation_messages.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/logic/extract_validation_messages.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation/logic/extract_validation_messages.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation/logic/extract_validation_messages.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/accordion_title/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/accordion_title/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/accordion_title/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/accordion_title/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/accordion_title/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/accordion_title/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/accordion_title/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/accordion_title/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/add_item_form/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/add_item_form/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/add_item_form/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/add_item_form/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/add_item_form/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/add_item_form/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/add_item_form/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/add_item_form/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/anomaly_threshold_slider/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/anomaly_threshold_slider/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/anomaly_threshold_slider/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/anomaly_threshold_slider/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/anomaly_threshold_slider/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/anomaly_threshold_slider/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/anomaly_threshold_slider/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/anomaly_threshold_slider/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/__mocks__/use_data_view_list_items.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/__mocks__/use_data_view_list_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/__mocks__/use_data_view_list_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/__mocks__/use_data_view_list_items.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/data_view_selector_field.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/data_view_selector_field.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/data_view_selector_field.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/data_view_selector_field.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/data_view_selector_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/data_view_selector_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/data_view_selector_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/data_view_selector_field.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/use_data_view_list_items.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/use_data_view_list_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/use_data_view_list_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/data_view_selector_field/use_data_view_list_items.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/actions_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/actions_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/actions_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/actions_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/alert_suppression_label.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/alert_suppression_label.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/alert_suppression_label.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/alert_suppression_label.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/alert_suppression_label.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/alert_suppression_label.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/alert_suppression_label.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/alert_suppression_label.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/assets/list_tree_icon.svg b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/assets/list_tree_icon.svg similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/assets/list_tree_icon.svg rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/assets/list_tree_icon.svg diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/build_ml_jobs_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/build_ml_jobs_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/build_ml_jobs_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/build_ml_jobs_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/threat_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/threat_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/threat_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/threat_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/throttle_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/throttle_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/throttle_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/throttle_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/types.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/es_field_selector_field/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/es_field_selector_field/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/es_field_selector_field/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/es_field_selector_field/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/esql_autocomplete.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/esql_autocomplete.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/esql_autocomplete.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/esql_autocomplete.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/use_esql_fields_options.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/use_esql_fields_options.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/use_esql_fields_options.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/use_esql_fields_options.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/use_esql_fields_options.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/use_esql_fields_options.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/use_esql_fields_options.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/esql_autocomplete/use_esql_fields_options.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/max_signals/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/max_signals/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/max_signals/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/max_signals/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/max_signals/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/max_signals/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/max_signals/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/max_signals/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/subtechnique_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/subtechnique_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/subtechnique_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/subtechnique_fields.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/technique_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/technique_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/technique_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/technique_fields.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/mitre/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/multi_select_fields/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/multi_select_fields/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/multi_select_fields/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/multi_select_fields/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/multi_select_fields/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/multi_select_fields/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/multi_select_fields/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/multi_select_fields/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/new_terms_fields/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/new_terms_fields/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/new_terms_fields/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/new_terms_fields/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/new_terms_fields/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/new_terms_fields/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/new_terms_fields/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/new_terms_fields/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/next_step/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/optional_field_label/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/optional_field_label/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/optional_field_label/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/optional_field_label/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/optional_field_label/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/optional_field_label/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/optional_field_label/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/optional_field_label/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/default_queries.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/default_queries.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/default_queries.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/default_queries.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/query_field.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/query_field.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/query_field.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/query_field.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/query_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/query_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/query_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/query_field.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/query_bar_field/types.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/default_risk_score.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/default_risk_score.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/default_risk_score.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/default_risk_score.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/risk_score_override.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/risk_score_override.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/risk_score_override.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/risk_score_override.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/risk_score_mapping/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/__mocks__/preview_logs.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/__mocks__/preview_logs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/__mocks__/preview_logs.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/__mocks__/preview_logs.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/loading_histogram.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/loading_histogram.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/loading_histogram.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/loading_histogram.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/logged_requests_item.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/optimized_accordion.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/optimized_accordion.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/optimized_accordion.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/optimized_accordion.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/optimized_accordion.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/optimized_accordion.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/optimized_accordion.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/optimized_accordion.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_histogram.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_histogram.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_histogram.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_histogram.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_histogram.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_histogram.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_histogram.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_histogram.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_logs.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_logs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_logs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_logs.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_table_cell_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_table_cell_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_table_cell_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_table_cell_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_table_control_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_table_control_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_table_control_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/preview_table_control_columns.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_accordion_styling.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_accordion_styling.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_accordion_styling.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_accordion_styling.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_invocation_count.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_invocation_count.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_invocation_count.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_invocation_count.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_route.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_route.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_route.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_route.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_rule.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_rule.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/rule_preview/use_preview_rule.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/ml_card_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/ml_card_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/ml_card_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/ml_card_description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/select_rule_type/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/default_severity.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/default_severity.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/default_severity.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/default_severity.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/severity_override.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/severity_override.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/severity_override.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/severity_override.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/styles.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/styles.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/severity_mapping/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/status_icon/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/status_icon/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/status_icon/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/status_icon/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/status_icon/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/status_icon/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/status_icon/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/status_icon/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/data.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/data.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/data.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/data.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/default_value.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/default_value.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/default_value.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/default_value.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/schema.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/schema.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/schema.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/schema.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_about_rule/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/mock_browser_fields.json b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/mock_browser_fields.json similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/mock_browser_fields.json rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/mock_browser_fields.json diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/schema.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/schema.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/schema.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/schema.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_experimental_feature_fields_transform.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_experimental_feature_fields_transform.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_experimental_feature_fields_transform.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_experimental_feature_fields_transform.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_persistent_alert_suppression_state.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_persistent_alert_suppression_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_persistent_alert_suppression_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_persistent_alert_suppression_state.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_persistent_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_persistent_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_persistent_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_persistent_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/utils.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/schema.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/schema.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/schema.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_schedule_rule/schema.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threatmatch_input/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threatmatch_input/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threatmatch_input/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threatmatch_input/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threshold_input/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threshold_input/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threshold_input/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threshold_input/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threshold_input/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threshold_input/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threshold_input/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/threshold_input/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/throttle_select_field/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/throttle_select_field/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/throttle_select_field/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/throttle_select_field/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/throttle_select_field/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/throttle_select_field/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/throttle_select_field/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/components/throttle_select_field/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts similarity index 98% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts index 51d9c145a97b3..d857665878672 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import type { DataViewFieldBase } from '@kbn/es-query'; import { useQuery } from '@tanstack/react-query'; import { useAllEsqlRuleFields } from './use_all_esql_rule_fields'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts similarity index 96% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts index eabd2050e7ba2..3d29970ad0547 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; + +import { renderHook } from '@testing-library/react'; import { useEsqlIndex } from './use_esql_index'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_query_for_about_step.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_query_for_about_step.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_query_for_about_step.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_query_for_about_step.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/form.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_editing/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_editing/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_editing/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_editing/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_editing/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_editing/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_editing/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_editing/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/alert_suppression_fields_validator_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/alert_suppression_fields_validator_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/alert_suppression_fields_validator_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/alert_suppression_fields_validator_factory.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/data_view_id_validator_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/data_view_id_validator_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/data_view_id_validator_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/data_view_id_validator_factory.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/default_risk_score_validator.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/default_risk_score_validator.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/default_risk_score_validator.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/default_risk_score_validator.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/index_pattern_validator_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/index_pattern_validator_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/index_pattern_validator_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/index_pattern_validator_factory.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/kuery_validator_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/kuery_validator_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/kuery_validator_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/kuery_validator_factory.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/max_signals_validator_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/max_signals_validator_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/max_signals_validator_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/max_signals_validator_factory.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/query_required_validator_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/query_required_validator_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/query_required_validator_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_creation_ui/validators/query_required_validator_factory.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/__mocks__/rule_details_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/__mocks__/rule_details_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/__mocks__/rule_details_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/__mocks__/rule_details_context.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/__snapshots__/execution_log_search_bar.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/__snapshots__/execution_log_search_bar.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/__snapshots__/execution_log_search_bar.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/__snapshots__/execution_log_search_bar.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_columns.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_search_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_search_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_search_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_search_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_search_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_search_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_search_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_search_bar.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/execution_log_table.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/rule_duration_format.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/rule_duration_format.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/rule_duration_format.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/rule_duration_format.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/rule_duration_format.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/rule_duration_format.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/rule_duration_format.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/rule_duration_format.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/execution_log_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/legacy_url_conflict_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/legacy_url_conflict_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/legacy_url_conflict_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/legacy_url_conflict_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/legacy_url_conflict_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/legacy_url_conflict_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/legacy_url_conflict_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/legacy_url_conflict_callout.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/rule_details_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/rule_details_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/rule_details_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/rule_details_context.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_redirect_legacy_url.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_redirect_legacy_url.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_redirect_legacy_url.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_redirect_legacy_url.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_redirect_legacy_url.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_redirect_legacy_url.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_redirect_legacy_url.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_redirect_legacy_url.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_rule_details_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_rule_details_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_rule_details_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_rule_details_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_rule_details_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_rule_details_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_rule_details_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/use_rule_details_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/reducer.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/use_add_new_exceptions.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/use_add_new_exceptions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/use_add_new_exceptions.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/use_add_new_exceptions.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/all_items.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/all_items.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/all_items.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/all_items.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/all_items.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/all_items.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/all_items.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/all_items.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/empty_viewer_state.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/empty_viewer_state.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/empty_viewer_state.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/empty_viewer_state.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/empty_viewer_state.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/empty_viewer_state.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/empty_viewer_state.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/empty_viewer_state.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/pagination.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/pagination.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/pagination.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/pagination.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/pagination.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/pagination.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/pagination.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/pagination.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/reducer.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/search_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/search_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/search_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/search_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/search_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/search_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/search_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/search_bar.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/reducer.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/use_edit_exception.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/use_edit_exception.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/use_edit_exception.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/use_edit_exception.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/error_callout/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/error_callout/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/error_callout/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/error_callout/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/error_callout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/error_callout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/error_callout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/error_callout/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/comments.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/comments.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/comments.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/comments.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/header.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/header.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/header.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/header.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/meta.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/meta.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/meta.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/meta.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/meta.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/meta.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/meta.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/meta.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_exception_to_rule_or_list/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_options/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/link_list_switch/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/link_list_switch/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/link_list_switch/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/link_list_switch/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/link_list_switch/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/link_list_switch/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/link_list_switch/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/link_list_switch/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/use_add_to_lists_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/use_add_to_lists_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/use_add_to_lists_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_lists_table/use_add_to_lists_table.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_options/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_options/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_options/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_options/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_options/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_options/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_options/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_options/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/link_rule_switch/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/link_rule_switch/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/link_rule_switch/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/link_rule_switch/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/link_rule_switch/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/link_rule_switch/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/link_rule_switch/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/link_rule_switch/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx index 8862c626ea6e4..55b10a34333aa 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx @@ -6,8 +6,7 @@ */ import React from 'react'; -import { fireEvent, render as rTLRender, waitFor, act } from '@testing-library/react'; -import { renderHook } from '@testing-library/react-hooks'; +import { fireEvent, render as rTLRender, waitFor, act, renderHook } from '@testing-library/react'; import type { EuiTableFieldDataColumnType } from '@elastic/eui'; import type { Rule } from '../../../../rule_management/logic/types'; import { getRulesSchemaMock } from '../../../../../../common/api/detection_engine/model/rule_schema/mocks'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/expire_time/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/expire_time/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/expire_time/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/expire_time/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/expire_time/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/expire_time/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/expire_time/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/expire_time/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/footer/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/header/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_conditions/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/item_meta_form/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_list/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/linked_to_rule/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/item_comments/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/__snapshots__/value_with_space_warning.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/__snapshots__/value_with_space_warning.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/__snapshots__/value_with_space_warning.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/__snapshots__/value_with_space_warning.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts similarity index 97% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts index 4c0df5f03e098..92a5e60bb5590 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useValueWithSpaceWarning } from '../use_value_with_space_warning'; describe('useValueWithSpaceWarning', () => { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/value_with_space_warning.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/value_with_space_warning.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/value_with_space_warning.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/value_with_space_warning.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/use_value_with_space_warning.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/use_value_with_space_warning.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/use_value_with_space_warning.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/use_value_with_space_warning.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/value_with_space_warning.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/value_with_space_warning.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/value_with_space_warning.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/value_with_space_warning.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_add_rule_exception.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_add_rule_exception.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_add_rule_exception.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_add_rule_exception.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_close_alerts.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_close_alerts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_close_alerts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_close_alerts.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_create_update_exception.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_create_update_exception.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_create_update_exception.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_create_update_exception.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_exception_flyout_data.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_exception_flyout_data.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_exception_flyout_data.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_exception_flyout_data.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx new file mode 100644 index 0000000000000..8ec41f5cb70f7 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx @@ -0,0 +1,284 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RenderHookResult } from '@testing-library/react'; +import { waitFor, renderHook } from '@testing-library/react'; + +import { coreMock } from '@kbn/core/public/mocks'; +import * as rulesApi from '../../rule_management/api/api'; +import * as listsApi from '@kbn/securitysolution-list-api'; +import { getExceptionListSchemaMock } from '@kbn/lists-plugin/common/schemas/response/exception_list_schema.mock'; +import { savedRuleMock } from '../../rule_management/logic/mock'; +import type { + ExceptionListType, + ListArray, + ExceptionListSchema, +} from '@kbn/securitysolution-io-ts-list-types'; +import { getListArrayMock } from '../../../../common/detection_engine/schemas/types/lists.mock'; +import type { + UseFetchOrCreateRuleExceptionListProps, + ReturnUseFetchOrCreateRuleExceptionList, +} from './use_fetch_or_create_rule_exception_list'; +import { useFetchOrCreateRuleExceptionList } from './use_fetch_or_create_rule_exception_list'; + +const mockKibanaHttpService = coreMock.createStart().http; +jest.mock('../../rule_management/api/api'); +jest.mock('@kbn/securitysolution-list-api'); + +describe('useFetchOrCreateRuleExceptionList', () => { + let fetchRuleById: jest.SpyInstance>; + let patchRule: jest.SpyInstance>; + let addExceptionList: jest.SpyInstance>; + let addEndpointExceptionList: jest.SpyInstance< + ReturnType + >; + let fetchExceptionListById: jest.SpyInstance>; + let render: ( + listType?: UseFetchOrCreateRuleExceptionListProps['exceptionListType'] + ) => RenderHookResult< + ReturnUseFetchOrCreateRuleExceptionList, + UseFetchOrCreateRuleExceptionListProps + >; + const onError = jest.fn(); + const onSuccess = jest.fn(); + const error = new Error('Something went wrong'); + const ruleId = 'myRuleId'; + const abortCtrl = new AbortController(); + const detectionListType: ExceptionListType = 'detection'; + const endpointListType: ExceptionListType = 'endpoint'; + const detectionExceptionList = { + ...getExceptionListSchemaMock(), + type: detectionListType, + }; + const endpointExceptionList = { + ...getExceptionListSchemaMock(), + type: endpointListType, + }; + const newDetectionExceptionList = { + ...detectionExceptionList, + name: 'new detection exception list', + }; + const newEndpointExceptionList = { + ...endpointExceptionList, + name: 'new endpoint exception list', + }; + const exceptionsListReferences: ListArray = getListArrayMock(); + const ruleWithExceptionLists = { + ...savedRuleMock, + exceptions_list: exceptionsListReferences, + }; + const ruleWithoutExceptionLists = { + ...savedRuleMock, + exceptions_list: [], + }; + + beforeEach(() => { + fetchRuleById = jest.spyOn(rulesApi, 'fetchRuleById').mockResolvedValue(ruleWithExceptionLists); + + patchRule = jest.spyOn(rulesApi, 'patchRule'); + + addExceptionList = jest + .spyOn(listsApi, 'addExceptionList') + .mockResolvedValue(newDetectionExceptionList); + + addEndpointExceptionList = jest + .spyOn(listsApi, 'addEndpointExceptionList') + .mockResolvedValue(newEndpointExceptionList); + + fetchExceptionListById = jest + .spyOn(listsApi, 'fetchExceptionListById') + .mockResolvedValue(detectionExceptionList); + + render = (listType = detectionListType) => + renderHook(() => + useFetchOrCreateRuleExceptionList({ + http: mockKibanaHttpService, + ruleId, + exceptionListType: listType, + onError, + onSuccess, + }) + ); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('initializes hook', async () => { + const { result } = render(); + + // Should set isLoading to true while fetching + expect(result.current).toEqual([true, null]); + + await waitFor(() => expect(result.current).toEqual([false, detectionExceptionList])); + }); + + it('fetches the rule with the given ruleId', async () => { + render(); + await waitFor(() => { + expect(fetchRuleById).toHaveBeenCalledTimes(1); + expect(fetchRuleById).toHaveBeenCalledWith({ + id: ruleId, + signal: abortCtrl.signal, + }); + }); + }); + + describe('when the rule does not have exception list references', () => { + beforeEach(() => { + fetchRuleById = jest + .spyOn(rulesApi, 'fetchRuleById') + .mockResolvedValue(ruleWithoutExceptionLists); + }); + + it('does not fetch the exceptions lists', async () => { + render(); + await waitFor(() => expect(fetchExceptionListById).not.toHaveBeenCalled()); + }); + + it('should create a new exception list', async () => { + render(); + await waitFor(() => expect(addExceptionList).toHaveBeenCalledTimes(1)); + }); + it('should update the rule', async () => { + render(); + await waitFor(() => expect(patchRule).toHaveBeenCalledTimes(1)); + }); + it('invokes onSuccess', async () => { + render(); + await waitFor(() => expect(onSuccess).toHaveBeenCalledWith(false)); + }); + }); + + describe("when the rule has exception list references and 'detection' is passed in", () => { + it('fetches the exceptions lists', async () => { + render(); + await waitFor(() => expect(fetchExceptionListById).toHaveBeenCalledTimes(2)); + }); + + it('does not create a new exception list', async () => { + render(); + await waitFor(() => expect(addExceptionList).not.toHaveBeenCalled()); + }); + + it('does not update the rule', async () => { + render(); + await waitFor(() => expect(patchRule).not.toHaveBeenCalled()); + }); + + it('should set the exception list to be the fetched list', async () => { + const { result } = render(); + await waitFor(() => expect(result.current[1]).toEqual(detectionExceptionList)); + }); + + it('invokes onSuccess indicating', async () => { + render(); + await waitFor(() => expect(onSuccess).toHaveBeenCalledWith(false)); + }); + + describe("but the rule does not have a reference to 'detection' type exception list", () => { + beforeEach(() => { + fetchExceptionListById = jest + .spyOn(listsApi, 'fetchExceptionListById') + .mockResolvedValue(endpointExceptionList); + }); + + it('should create a new exception list', async () => { + render(); + await waitFor(() => expect(addExceptionList).toHaveBeenCalledTimes(1)); + }); + it('should update the rule', async () => { + render(); + await waitFor(() => expect(patchRule).toHaveBeenCalledTimes(1)); + }); + it('should set the exception list to be the newly created list', async () => { + const { result } = render(); + await waitFor(() => expect(result.current[1]).toEqual(newDetectionExceptionList)); + }); + }); + }); + + describe("when the rule has exception list references and 'endpoint' is passed in", () => { + beforeEach(() => { + fetchExceptionListById = jest + .spyOn(listsApi, 'fetchExceptionListById') + .mockResolvedValue(endpointExceptionList); + + addExceptionList = jest + .spyOn(listsApi, 'addExceptionList') + .mockResolvedValue(newEndpointExceptionList); + }); + + it('fetches the exceptions lists', async () => { + render(endpointListType); + await waitFor(() => expect(fetchExceptionListById).toHaveBeenCalledTimes(2)); + }); + it('does not create a new exception list', async () => { + render(endpointListType); + await waitFor(() => expect(addExceptionList).not.toHaveBeenCalled()); + }); + it('does not update the rule', async () => { + render(endpointListType); + await waitFor(() => expect(patchRule).not.toHaveBeenCalled()); + }); + it('should set the exception list to be the fetched list', async () => { + const { result } = render(endpointListType); + await waitFor(() => expect(result.current[1]).toEqual(endpointExceptionList)); + }); + + describe("but the rule does not have a reference to 'endpoint' type exception list", () => { + beforeEach(() => { + fetchExceptionListById = jest + .spyOn(listsApi, 'fetchExceptionListById') + .mockResolvedValue(detectionExceptionList); + }); + + it('should create a new exception list', async () => { + render(endpointListType); + await waitFor(() => expect(addEndpointExceptionList).toHaveBeenCalledTimes(1)); + }); + it('should update the rule', async () => { + render(endpointListType); + await waitFor(() => expect(patchRule).toHaveBeenCalledTimes(1)); + }); + it('should set the exception list to be the newly created list', async () => { + const { result } = render(endpointListType); + await waitFor(() => expect(result.current[1]).toEqual(newEndpointExceptionList)); + }); + }); + }); + + describe('when rule api returns an error', () => { + beforeEach(() => { + fetchRuleById = jest.spyOn(rulesApi, 'fetchRuleById').mockRejectedValue(error); + }); + + it('exception list should be null', async () => { + const { result } = render(); + await waitFor(() => expect(result.current[1]).toBeNull()); + }); + + it('isLoading should be false', async () => { + const { result } = render(); + await waitFor(() => expect(result.current[0]).toEqual(false)); + }); + + it('should call error callback', async () => { + render(); + await waitFor(() => { + expect(onError).toHaveBeenCalledTimes(1); + expect(onError).toHaveBeenCalledWith(error, null, null); + }); + }); + + it('does not call onSuccess', async () => { + render(); + await waitFor(() => expect(onSuccess).not.toHaveBeenCalled()); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_find_references.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_find_references.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_find_references.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_find_references.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/constants.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/highlighted_fields_config.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/highlighted_fields_config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/highlighted_fields_config.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/highlighted_fields_config.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions/utils/types.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/__mocks__/api.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/__mocks__/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/__mocks__/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/__mocks__/api.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/api.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/api.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/api.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/api.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/api.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/api.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_delete_backfill.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_delete_backfill.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_delete_backfill.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_delete_backfill.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_find_backfills_for_rules.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_find_backfills_for_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_find_backfills_for_rules.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_find_backfills_for_rules.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx index 6c641ceb2ad9e..e67e479c38258 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx @@ -7,7 +7,7 @@ import moment from 'moment'; -import { act } from '@testing-library/react-hooks'; +import { act } from '@testing-library/react'; import { useScheduleRuleRunMutation } from './use_schedule_rule_run_mutation'; import { renderMutation } from '../../../../management/hooks/test_utils'; import { scheduleRuleRunMock } from '../../logic/__mocks__/mock'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/use_manual_rule_run_confirmation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/use_manual_rule_run_confirmation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/use_manual_rule_run_confirmation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/manual_rule_run/use_manual_rule_run_confirmation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/backfill_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/backfill_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/backfill_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/backfill_status.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/stop_backfill.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/stop_backfill.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/stop_backfill.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/stop_backfill.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/stop_backfill.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/stop_backfill.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/stop_backfill.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/stop_backfill.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/components/rule_backfills_info/utils.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/__mocks__/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/logic/__mocks__/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/__mocks__/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/logic/__mocks__/mock.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx new file mode 100644 index 0000000000000..d20d8e8e7642d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx @@ -0,0 +1,110 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook, act, waitFor } from '@testing-library/react'; +import moment from 'moment'; +import { useKibana } from '../../../common/lib/kibana'; +import { useKibana as mockUseKibana } from '../../../common/lib/kibana/__mocks__'; +import { TestProviders } from '../../../common/mock'; +import { useScheduleRuleRun } from './use_schedule_rule_run'; +import { ManualRuleRunEventTypes } from '../../../common/lib/telemetry'; + +const mockUseScheduleRuleRunMutation = jest.fn(); + +jest.mock('../../../common/lib/kibana'); +jest.mock('../api/hooks/use_schedule_rule_run_mutation', () => ({ + useScheduleRuleRunMutation: () => { + return { + mutateAsync: mockUseScheduleRuleRunMutation, + }; + }, +})); + +const mockedUseKibana = { + ...mockUseKibana(), + services: { + ...mockUseKibana().services, + telemetry: { + reportEvent: jest.fn(), + }, + }, +}; + +describe('When using the `useScheduleRuleRun()` hook', () => { + beforeEach(() => { + jest.clearAllMocks(); + (useKibana as jest.Mock).mockReturnValue(mockedUseKibana); + }); + + it('should send schedule rule run request', async () => { + const { result } = renderHook(() => useScheduleRuleRun(), { + wrapper: TestProviders, + }); + + const timeRange = { startDate: moment().subtract(1, 'd'), endDate: moment() }; + act(() => { + result.current.scheduleRuleRun({ ruleIds: ['rule-1'], timeRange }); + }); + + await waitFor(() => + expect(mockUseScheduleRuleRunMutation).toHaveBeenCalledWith( + expect.objectContaining({ + ruleIds: ['rule-1'], + timeRange, + }) + ) + ); + }); + + it('should call reportEvent with success status on success', async () => { + const { result } = renderHook(() => useScheduleRuleRun(), { + wrapper: TestProviders, + }); + + const timeRange = { startDate: moment().subtract(1, 'd'), endDate: moment() }; + mockUseScheduleRuleRunMutation.mockResolvedValueOnce([{ id: 'rule-1' }]); + + act(() => { + result.current.scheduleRuleRun({ ruleIds: ['rule-1'], timeRange }); + }); + + await waitFor(() => + expect(mockedUseKibana.services.telemetry.reportEvent).toHaveBeenCalledWith( + ManualRuleRunEventTypes.ManualRuleRunExecute, + { + rangeInMs: timeRange.endDate.diff(timeRange.startDate), + status: 'success', + rulesCount: 1, + } + ) + ); + }); + + it('should call reportEvent with error status on failure', async () => { + const { result } = renderHook(() => useScheduleRuleRun(), { + wrapper: TestProviders, + }); + + const timeRange = { startDate: moment().subtract(1, 'd'), endDate: moment() }; + mockUseScheduleRuleRunMutation.mockRejectedValueOnce(new Error('Error scheduling rule run')); + + act(() => { + result.current.scheduleRuleRun({ ruleIds: ['rule-1'], timeRange }); + }); + + await waitFor(() => + expect(mockedUseKibana.services.telemetry.reportEvent).toHaveBeenCalledWith( + ManualRuleRunEventTypes.ManualRuleRunExecute, + { + rangeInMs: timeRange.endDate.diff(timeRange.startDate), + status: 'error', + rulesCount: 1, + } + ) + ); + }); +}); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_gaps/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps/types.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/__mocks__/api.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/__mocks__/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/__mocks__/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/__mocks__/api.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/api.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/api.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/api.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/__mocks__/mock_react_query_response.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/__mocks__/mock_react_query_response.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/__mocks__/mock_react_query_response.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/__mocks__/mock_react_query_response.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/__mocks__/use_prebuilt_rules_status_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/__mocks__/use_prebuilt_rules_status_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/__mocks__/use_prebuilt_rules_status_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/__mocks__/use_prebuilt_rules_status_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/constants.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_install_review_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_install_review_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_install_review_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_install_review_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_status_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_status_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_status_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_status_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_upgrade_review_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_upgrade_review_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_upgrade_review_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_fetch_prebuilt_rules_upgrade_review_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_all_rules_install_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_all_rules_install_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_all_rules_install_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_all_rules_install_mutation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_specific_rules_install_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_specific_rules_install_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_specific_rules_install_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_specific_rules_install_mutation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_specific_rules_upgrade_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_specific_rules_upgrade_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_specific_rules_upgrade_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/prebuilt_rules/use_perform_specific_rules_upgrade_mutation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bootstrap_prebuilt_rules.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bootstrap_prebuilt_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bootstrap_prebuilt_rules.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bootstrap_prebuilt_rules.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_action_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_action_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_action_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_action_mutation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_export_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_export_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_export_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_bulk_export_mutation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_create_rule_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_create_rule_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_create_rule_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_create_rule_mutation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_connector_types_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_connector_types_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_connector_types_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_connector_types_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_connectors_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_connectors_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_connectors_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_connectors_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_coverage_overview_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_coverage_overview_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_coverage_overview_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_coverage_overview_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rule_by_id_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rule_by_id_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rule_by_id_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rule_by_id_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rule_management_filters_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rule_management_filters_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rule_management_filters_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rule_management_filters_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rules_snooze_settings_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rules_snooze_settings_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rules_snooze_settings_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_fetch_rules_snooze_settings_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_find_rules_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_find_rules_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_find_rules_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_find_rules_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_update_rule_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_update_rule_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_update_rule_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/api/hooks/use_update_rule_mutation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/badge_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/badge_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/badge_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/badge_list.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/constants.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/customized_prebuilt_rule_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/customized_prebuilt_rule_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/customized_prebuilt_rule_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/customized_prebuilt_rule_badge.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/field_diff.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/field_diff.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/field_diff.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/field_diff.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/header_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/header_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/header_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/header_bar.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/rule_diff_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/rule_diff_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/rule_diff_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/rule_diff_section.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts new file mode 100644 index 0000000000000..f7b25ee24a948 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { + REFERENCES_FIELD_LABEL, + RISK_SCORE_MAPPING_FIELD_LABEL, + SEVERITY_MAPPING_FIELD_LABEL, + THREAT_INDICATOR_PATH_LABEL, + INDEX_FIELD_LABEL, + DATA_VIEW_ID_FIELD_LABEL, + THREAT_FIELD_LABEL, + ANOMALY_THRESHOLD_FIELD_LABEL, + MACHINE_LEARNING_JOB_ID_FIELD_LABEL, + THREAT_INDEX_FIELD_LABEL, + THREAT_MAPPING_FIELD_LABEL, + HISTORY_WINDOW_SIZE_FIELD_LABEL, + DATA_SOURCE_FIELD_LABEL, + ALERT_SUPPRESSION_FIELD_LABEL, + INVESTIGATION_FIELDS_FIELD_LABEL, +} from '../translations'; + +/** + * Used when fields have different display names or formats than their corresponding rule object fields + */ +export const fieldToDisplayNameMap: Record = { + alert_suppression: ALERT_SUPPRESSION_FIELD_LABEL, + data_source: DATA_SOURCE_FIELD_LABEL, + note: i18n.translate('xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.noteLabel', { + defaultMessage: 'Investigation guide', + }), + severity_mapping: SEVERITY_MAPPING_FIELD_LABEL, + risk_score_mapping: RISK_SCORE_MAPPING_FIELD_LABEL, + references: REFERENCES_FIELD_LABEL, + threat_indicator_path: THREAT_INDICATOR_PATH_LABEL, + index_patterns: INDEX_FIELD_LABEL, + investigation_fields: INVESTIGATION_FIELDS_FIELD_LABEL, + data_view_id: DATA_VIEW_ID_FIELD_LABEL, + threat: THREAT_FIELD_LABEL, + eql_query: i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.eqlQueryLabel', + { + defaultMessage: 'EQL query', + } + ), + kql_query: i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.kqlQueryLabel', + { + defaultMessage: 'KQL query', + } + ), + threat_query: i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.threatQueryLabel', + { + defaultMessage: 'Indicator index query', + } + ), + esql_query: i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.esqlQueryLabel', + { + defaultMessage: 'ESQL query', + } + ), + anomaly_threshold: ANOMALY_THRESHOLD_FIELD_LABEL, + machine_learning_job_id: MACHINE_LEARNING_JOB_ID_FIELD_LABEL, + threat_index: THREAT_INDEX_FIELD_LABEL, + threat_mapping: THREAT_MAPPING_FIELD_LABEL, + history_window_start: HISTORY_WINDOW_SIZE_FIELD_LABEL, +}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/constants.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/diff_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/diff_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/diff_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/diff_view.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/hunks.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/hunks.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/hunks.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/hunks.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/json_diff.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/json_diff.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/json_diff.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/json_diff.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/mark_edits.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/mark_edits.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/mark_edits.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/mark_edits.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/unidiff.d.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/unidiff.d.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/unidiff.d.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/json_diff/unidiff.d.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_diff/get_field_diffs_for_grouped_fields.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_diff/get_field_diffs_for_grouped_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_diff/get_field_diffs_for_grouped_fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_diff/get_field_diffs_for_grouped_fields.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_diff/get_formatted_field_diff.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_diff/get_formatted_field_diff.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_diff/get_formatted_field_diff.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_diff/get_formatted_field_diff.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_rule_diff_tab.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_rule_diff_tab.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_rule_diff_tab.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_rule_diff_tab.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_rule_diff_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_rule_diff_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_rule_diff_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/per_field_rule_diff_tab.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/required_field_icon.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/required_field_icon.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/required_field_icon.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/required_field_icon.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx index 396811892610b..4dcc15677d24c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx @@ -26,7 +26,10 @@ import type { } from '@kbn/securitysolution-io-ts-alerting-types'; import { ALERT_RISK_SCORE } from '@kbn/rule-data-utils'; import { requiredOptional } from '@kbn/zod-helpers'; -import type { RuleResponse } from '../../../../../common/api/detection_engine/model/rule_schema'; +import type { + BuildingBlockType, + RuleResponse, +} from '../../../../../common/api/detection_engine/model/rule_schema'; import { SeverityBadge } from '../../../../common/components/severity_badge'; import { defaultToEmptyTag } from '../../../../common/components/empty_value'; import { filterEmptyThreats } from '../../../rule_creation_ui/pages/rule_creation/helpers'; @@ -76,9 +79,15 @@ export const Author = ({ author }: AuthorProps) => ( ); -export const BuildingBlock = () => ( +interface BuildingBlockProps { + type: BuildingBlockType | undefined; +} + +export const BuildingBlock = ({ type }: BuildingBlockProps) => ( - {i18n.BUILDING_BLOCK_FIELD_DESCRIPTION} + {type + ? i18n.BUILDING_BLOCK_ENABLED_FIELD_DESCRIPTION + : i18n.BUILDING_BLOCK_DISABLED_FIELD_DESCRIPTION} ); @@ -294,7 +303,7 @@ const prepareAboutSectionListItems = ( title: ( {i18n.BUILDING_BLOCK_FIELD_LABEL} ), - description: , + description: , }); } diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.styles.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx similarity index 94% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx index 7c7125a36dc5d..3425779926f7d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren, ReactNode } from 'react'; import React, { useMemo, useState, useEffect } from 'react'; import styled from 'styled-components'; import { css } from '@emotion/css'; @@ -107,6 +107,7 @@ export const TabContentPadding: FC> = ({ children }) interface RuleDetailsFlyoutProps { rule: RuleResponse; + subHeader?: ReactNode; ruleActions?: React.ReactNode; size?: EuiFlyoutProps['size']; extraTabs?: EuiTabbedContentTab[]; @@ -115,15 +116,16 @@ interface RuleDetailsFlyoutProps { closeFlyout: () => void; } -export const RuleDetailsFlyout = ({ +export function RuleDetailsFlyout({ rule, ruleActions, + subHeader, size = 'm', extraTabs = [], dataTestSubj, id, closeFlyout, -}: RuleDetailsFlyoutProps) => { +}: RuleDetailsFlyoutProps): JSX.Element { const { expandedOverviewSections, toggleOverviewSection } = useOverviewTabSections(); const overviewTab: EuiTabbedContentTab = useMemo( @@ -202,7 +204,13 @@ export const RuleDetailsFlyout = ({

{rule.name}

- + + {subHeader && ( + <> + {subHeader} + + + )} ); -}; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_diff_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_diff_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_diff_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_diff_tab.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_investigation_guide_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_investigation_guide_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_investigation_guide_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_investigation_guide_tab.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_overview_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_overview_tab.tsx similarity index 99% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_overview_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_overview_tab.tsx index 7fd3cc270286c..6ad182d722517 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_overview_tab.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_overview_tab.tsx @@ -88,7 +88,7 @@ const ExpandableSection = ({ title, isOpen, toggle, children }: ExpandableSectio }; interface RuleOverviewTabProps { - rule: RuleResponse; + rule: Partial; columnWidths?: EuiDescriptionListProps['columnWidths']; expandedOverviewSections: Record; toggleOverviewSection: Record void>; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_schedule_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_schedule_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_schedule_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_schedule_section.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_setup_guide_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_setup_guide_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_setup_guide_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_setup_guide_section.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/action_required.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/action_required.tsx new file mode 100644 index 0000000000000..d21136531fd07 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/action_required.tsx @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiBadge } from '@elastic/eui'; +import * as i18n from './translations'; + +export function ActionRequiredBadge(): JSX.Element { + return {i18n.ACTION_REQUIRED}; +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/modified_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/modified_badge.tsx new file mode 100644 index 0000000000000..bfe70af031835 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/modified_badge.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ReactNode } from 'react'; +import React from 'react'; +import { EuiBadge, EuiToolTip } from '@elastic/eui'; +import * as i18n from './translations'; + +interface ModifiedBadgeProps { + tooltip?: ReactNode; +} + +export function ModifiedBadge({ tooltip }: ModifiedBadgeProps): JSX.Element { + return ( + + + {i18n.MODIFIED} + + + ); +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/ready_for_upgrade_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/ready_for_upgrade_badge.tsx new file mode 100644 index 0000000000000..c5498fe04dcfe --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/ready_for_upgrade_badge.tsx @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { EuiBadgeProps } from '@elastic/eui'; +import { EuiBadge } from '@elastic/eui'; +import * as i18n from './translations'; + +interface ReadyForUpgradeBadgeProps { + color?: EuiBadgeProps['color']; +} + +export function ReadyForUpgradeBadge({ + color = 'success', +}: ReadyForUpgradeBadgeProps): JSX.Element { + return {i18n.READY_FOR_UPDATE}; +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/review_required_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/review_required_badge.tsx new file mode 100644 index 0000000000000..db02ce9a3615e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/review_required_badge.tsx @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiBadge } from '@elastic/eui'; +import * as i18n from './translations'; + +export function ReviewRequiredBadge(): JSX.Element { + return {i18n.REVIEW_REQUIRED}; +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/translations.ts new file mode 100644 index 0000000000000..f55b9ad2eef73 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/translations.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const READY_FOR_UPDATE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.badge.readyForUpdate', + { + defaultMessage: 'Ready for update', + } +); + +export const REVIEW_REQUIRED = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.badge.reviewRequired', + { + defaultMessage: 'Review required', + } +); + +export const ACTION_REQUIRED = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.badge.actionRequired', + { + defaultMessage: 'Action required', + } +); + +export const MODIFIED = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.badge.modified', + { + defaultMessage: 'Modified', + } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx new file mode 100644 index 0000000000000..37b23652bfcbe --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import useToggle from 'react-use/lib/useToggle'; +import { EuiPopover, EuiText, EuiButtonIcon } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { TITLE } from './translations'; +import type { VersionsPickerOptionEnum } from './versions_picker/versions_picker'; +import { useFieldUpgradeContext } from '../rule_upgrade/field_upgrade_context'; +import { getOptionDetails } from './utils'; + +/** + * Theme doesn't expose width variables. Using provided size variables will require + * multiplying it by another magic constant. + * + * 320px width looks + * like a [commonly used width in EUI](https://github.com/search?q=repo%3Aelastic%2Feui%20320&type=code). + */ +const POPOVER_WIDTH = 320; + +interface ComparisonSideHelpInfoProps { + options: VersionsPickerOptionEnum[]; +} + +export function ComparisonSideHelpInfo({ options }: ComparisonSideHelpInfoProps): JSX.Element { + const [isPopoverOpen, togglePopover] = useToggle(false); + + const { hasResolvedValueDifferentFromSuggested } = useFieldUpgradeContext(); + const optionsWithDescriptions = options.map((option) => + getOptionDetails(option, hasResolvedValueDifferentFromSuggested) + ); + + const button = ( + + ); + + return ( + + + {TITLE}, + versions: ( + <> +
+
    + {optionsWithDescriptions.map( + ({ title: displayName, description: explanation }) => ( +
  • + {displayName} {'-'} {explanation} +
  • + ) + )} +
+ + ), + }} + /> +
+
+ ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/constants.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.stories.tsx new file mode 100644 index 0000000000000..004b7ff25670b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.stories.tsx @@ -0,0 +1,309 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { Story } from '@storybook/react'; +import { FieldComparisonSide } from './field_comparison_side'; +import type { + ThreeWayDiff, + DiffableAllFields, + RuleKqlQuery, +} from '../../../../../../../common/api/detection_engine'; +import { + ThreeWayDiffOutcome, + ThreeWayMergeOutcome, + ThreeWayDiffConflict, + KqlQueryType, +} from '../../../../../../../common/api/detection_engine'; +export default { + component: FieldComparisonSide, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/ComparisonSide', + argTypes: { + fieldName: { + control: 'text', + description: 'Field name to compare', + }, + fieldThreeWayDiff: { + control: 'object', + description: 'Field ThreeWayDiff', + }, + resolvedValue: { + control: 'text', + description: 'Resolved value', + }, + }, +}; + +interface TemplateProps { + fieldName: FieldName; + fieldThreeWayDiff: ThreeWayDiff; + resolvedValue?: DiffableAllFields[FieldName]; +} + +const Template: Story> = () => { + return ; +}; + +export const NoBaseVersion = Template.bind({}); +NoBaseVersion.args = { + fieldName: 'rule_name_override', + fieldThreeWayDiff: { + has_base_version: false, + base_version: undefined, + current_version: { + field_name: 'rule.name', + }, + target_version: undefined, + merged_version: undefined, + diff_outcome: ThreeWayDiffOutcome.MissingBaseCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Target, + has_update: true, + conflict: ThreeWayDiffConflict.SOLVABLE, + }, +}; + +export const WithResolvedValue = Template.bind({}); +WithResolvedValue.args = { + fieldName: 'risk_score', + fieldThreeWayDiff: { + has_base_version: true, + base_version: 10, + current_version: 40, + target_version: 20, + merged_version: 40, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.NON_SOLVABLE, + }, + resolvedValue: 35, +}; +WithResolvedValue.argTypes = { + resolvedValue: { + control: 'number', + }, +}; + +/* Optional field becomes defined - was undefined in base version, but was then defined by user in current version */ +export const OptionalFieldBecomesDefined = Template.bind({}); +OptionalFieldBecomesDefined.args = { + fieldName: 'timestamp_override', + fieldThreeWayDiff: { + has_base_version: true, + base_version: undefined, + current_version: { + field_name: 'event.ingested', + fallback_disabled: true, + }, + target_version: undefined, + merged_version: { + field_name: 'event.ingested', + fallback_disabled: true, + }, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueNoUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: false, + conflict: ThreeWayDiffConflict.NONE, + }, +}; + +export const SubfieldsWithLabels = Template.bind({}); + +const subfieldsWithLabelsThreeWayDiff: ThreeWayDiff = { + has_base_version: true, + base_version: { + type: KqlQueryType.inline_query, + query: 'event.agent_id_status: *', + language: 'kuery', + filters: [], + }, + current_version: { + type: KqlQueryType.inline_query, + query: 'event.agent_id_status: *', + language: 'kuery', + filters: [], + }, + target_version: { + type: KqlQueryType.saved_query, + saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', + }, + merged_version: { + type: KqlQueryType.saved_query, + saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', + }, + diff_outcome: ThreeWayDiffOutcome.StockValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Target, + has_update: true, + conflict: ThreeWayDiffConflict.NONE, +}; + +SubfieldsWithLabels.args = { + fieldName: 'kql_query', + fieldThreeWayDiff: subfieldsWithLabelsThreeWayDiff, +}; + +/* Field type changes - in this example "kql_query" field was "inline" in base version, but became "saved" in the current version */ +export const FieldTypeChanges = Template.bind({}); + +const fieldTypeChangesThreeWayDiff: ThreeWayDiff = { + has_base_version: true, + base_version: { + type: KqlQueryType.inline_query, + query: 'event.agent_id_status: *', + language: 'kuery', + filters: [], + }, + current_version: { + type: KqlQueryType.saved_query, + saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', + }, + target_version: { + type: KqlQueryType.inline_query, + query: 'event.agent_id_status: *', + language: 'kuery', + filters: [], + }, + merged_version: { + type: KqlQueryType.saved_query, + saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', + }, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueNoUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: false, + conflict: ThreeWayDiffConflict.NONE, +}; + +FieldTypeChanges.args = { + fieldName: 'kql_query', + fieldThreeWayDiff: fieldTypeChangesThreeWayDiff, +}; + +export const SingleLineStringSubfieldChanges = Template.bind({}); +SingleLineStringSubfieldChanges.args = { + fieldName: 'name', + fieldThreeWayDiff: { + has_base_version: true, + base_version: 'Prebuilt rule', + current_version: 'Customized prebuilt rule', + target_version: 'Prebuilt rule with new changes', + merged_version: 'Customized prebuilt rule', + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.NON_SOLVABLE, + }, +}; + +export const MultiLineStringSubfieldChanges = Template.bind({}); +MultiLineStringSubfieldChanges.args = { + fieldName: 'note', + fieldThreeWayDiff: { + has_base_version: true, + base_version: 'My description.\f\nThis is a second\u2001 line.\f\nThis is a third line.', + current_version: + 'My GREAT description.\f\nThis is a second\u2001 line.\f\nThis is a third line.', + target_version: 'My description.\f\nThis is a second\u2001 line.\f\nThis is a GREAT line.', + merged_version: + 'My GREAT description.\f\nThis is a second\u2001 line.\f\nThis is a GREAT line.', + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Merged, + has_update: true, + conflict: ThreeWayDiffConflict.SOLVABLE, + }, +}; + +export const NumberSubfieldChanges = Template.bind({}); +NumberSubfieldChanges.args = { + fieldName: 'risk_score', + fieldThreeWayDiff: { + has_base_version: true, + base_version: 33, + current_version: 43, + target_version: 53, + merged_version: 43, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.NON_SOLVABLE, + }, +}; + +export const ArraySubfieldChanges = Template.bind({}); +ArraySubfieldChanges.args = { + fieldName: 'tags', + fieldThreeWayDiff: { + has_base_version: true, + base_version: ['one', 'two', 'three'], + current_version: ['two', 'three', 'four', 'five'], + target_version: ['one', 'three', 'four', 'six'], + merged_version: ['three', 'four', 'five', 'six'], + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.SOLVABLE, + }, +}; + +export const QuerySubfieldChanges = Template.bind({}); +QuerySubfieldChanges.args = { + fieldName: 'kql_query', + fieldThreeWayDiff: { + has_base_version: true, + base_version: { + type: KqlQueryType.inline_query, + query: + 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"servicePrincipalName"\n', + language: 'kuery', + filters: [], + }, + current_version: { + type: KqlQueryType.inline_query, + query: + 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" or winlog.event_data.OperationType:"%%14675" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"serviceSecondaryName"\n', + language: 'kuery', + filters: [], + }, + target_version: { + type: KqlQueryType.inline_query, + query: + 'event.action:("Directory Service Changes" or "Directory Service Modifications" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"servicePrincipalName"\n', + language: 'kuery', + filters: [], + }, + merged_version: { + type: KqlQueryType.inline_query, + query: + 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" or winlog.event_data.OperationType:"%%14675" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"serviceSecondaryName"\n', + language: 'kuery', + filters: [], + }, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.NON_SOLVABLE, + }, +}; + +export const SetupGuideSubfieldChanges = Template.bind({}); +SetupGuideSubfieldChanges.args = { + fieldName: 'setup', + fieldThreeWayDiff: { + has_base_version: true, + base_version: + '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect, either "Traditional Endpoints" or "Cloud Workloads".\n- Select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- We suggest selecting "Complete EDR (Endpoint Detection and Response)" as a configuration setting, that provides "All events; all preventions"\n- Enter a name for the agent policy in "New agent policy name". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. For example, you can use Auditbeat to collect and centralize audit events from the Linux Audit Framework. You can also use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n', + current_version: + '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n- Custom Windows Event Logs\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect.\n- Select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- Enter a name for the agent policy in "New agent policy name". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- The rule is now ready to run.\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. For example, you can use Auditbeat to collect and centralize audit events from the Linux Audit Framework. You can also use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for AXT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the AXT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n', + target_version: + '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect, either "Traditional Endpoints" or "Cloud Workloads".\n- Carefully select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- We suggest selecting "Complete EDR (Endpoint Detection and Response)" as a configuration setting, that provides "All events; all preventions"\n- Enter a title for the agent policy in "New agent policy title". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. You can use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n- Good luck!\n', + merged_version: + '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n- Custom Windows Event Logs\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect.\n- Carefully select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- Enter a title for the agent policy in "New agent policy title". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- The rule is now ready to run.\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. You can use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for AXT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the AXT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n- Good luck!\n', + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Merged, + has_update: true, + conflict: ThreeWayDiffConflict.SOLVABLE, + }, +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.tsx new file mode 100644 index 0000000000000..3f30ead78a73f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.tsx @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useEffect } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiTitle } from '@elastic/eui'; +import { isEqual } from 'lodash'; +import usePrevious from 'react-use/lib/usePrevious'; +import { VersionsPicker, VersionsPickerOptionEnum } from './versions_picker/versions_picker'; +import { FieldUpgradeSideHeader } from '../field_upgrade_side_header'; +import { useFieldUpgradeContext } from '../rule_upgrade/field_upgrade_context'; +import { + getComparisonOptionsForDiffOutcome, + getVersionsForComparison, + pickFieldValueForVersion, +} from './utils'; +import { getSubfieldChanges } from './get_subfield_changes'; +import { SubfieldChanges } from './subfield_changes'; +import { ComparisonSideHelpInfo } from './comparison_side_help_info'; +import * as i18n from './translations'; + +export function FieldComparisonSide(): JSX.Element { + const { fieldName, fieldDiff, finalDiffableRule, hasResolvedValueDifferentFromSuggested } = + useFieldUpgradeContext(); + const resolvedValue = finalDiffableRule[fieldName]; + + const options = getComparisonOptionsForDiffOutcome( + fieldDiff.diff_outcome, + fieldDiff.conflict, + hasResolvedValueDifferentFromSuggested + ); + const [selectedOption, setSelectedOption] = useState(options[0]); + + const [oldVersionType, newVersionType] = getVersionsForComparison( + selectedOption, + fieldDiff.has_base_version + ); + + const oldFieldValue = pickFieldValueForVersion(oldVersionType, fieldDiff, resolvedValue); + const newFieldValue = pickFieldValueForVersion(newVersionType, fieldDiff, resolvedValue); + + const subfieldChanges = getSubfieldChanges(fieldName, oldFieldValue, newFieldValue); + + /* Change selected option to "My changes" if user has modified resolved value */ + const prevResolvedValue = usePrevious(resolvedValue); + useEffect(() => { + if ( + selectedOption !== VersionsPickerOptionEnum.MyChanges && + !isEqual(prevResolvedValue, resolvedValue) + ) { + setSelectedOption(VersionsPickerOptionEnum.MyChanges); + } + }, [hasResolvedValueDifferentFromSuggested, selectedOption, prevResolvedValue, resolvedValue]); + + return ( + <> + + + + +

+ {i18n.TITLE} + +

+
+
+ + + +
+
+ + + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/building_block.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/building_block.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/building_block.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/building_block.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/data_source.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/data_source.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/data_source.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/data_source.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/eql_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/eql_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/eql_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/eql_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/esql_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/esql_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/esql_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/esql_query.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts new file mode 100644 index 0000000000000..0ac093b895a73 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts @@ -0,0 +1,113 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DiffableAllFields } from '../../../../../../../../common/api/detection_engine'; +import { stringifyToSortedJson } from '../utils'; +import { getSubfieldChangesForDataSource } from './data_source'; +import { getSubfieldChangesForKqlQuery } from './kql_query'; +import { getSubfieldChangesForEqlQuery } from './eql_query'; +import { getSubfieldChangesForEsqlQuery } from './esql_query'; +import { getSubfieldChangesForThreatQuery } from './threat_query'; +import { getSubfieldChangesForRuleSchedule } from './rule_schedule'; +import { getSubfieldChangesForRuleNameOverride } from './rule_name_override'; +import { getSubfieldChangesForTimestampOverride } from './timestamp_override'; +import { getSubfieldChangesForTimelineTemplate } from './timeline_template'; +import { getSubfieldChangesForBuildingBlock } from './building_block'; +import { getSubfieldChangesForThreshold } from './threshold'; +import type { SubfieldChanges } from '../types'; + +/** + * Splits a field into subfields and returns the changes between the old and new subfield values. + * + * @param fieldName - The name of the field for which subfield changes are to be computed. + * @param oldFieldValue - The old value of the field. + * @param newFieldValue - The new value of the field. + * @returns - An array of subfield changes. + */ +export const getSubfieldChanges = ( + fieldName: keyof DiffableAllFields, + oldFieldValue: unknown, + newFieldValue: unknown +): SubfieldChanges => { + switch (fieldName) { + /* + Typecasting `oldFieldValue` and `newFieldValue` to corresponding field + type `DiffableAllFields[*]` is required here since `oldFieldValue` and + `newFieldValue` concrete types depend on `fieldName` but TS doesn't track that. + */ + case 'data_source': + return getSubfieldChangesForDataSource( + oldFieldValue as DiffableAllFields['data_source'], + newFieldValue as DiffableAllFields['data_source'] + ); + case 'kql_query': + return getSubfieldChangesForKqlQuery( + oldFieldValue as DiffableAllFields['kql_query'], + newFieldValue as DiffableAllFields['kql_query'] + ); + case 'eql_query': + return getSubfieldChangesForEqlQuery( + oldFieldValue as DiffableAllFields['eql_query'], + newFieldValue as DiffableAllFields['eql_query'] + ); + case 'esql_query': + return getSubfieldChangesForEsqlQuery( + oldFieldValue as DiffableAllFields['esql_query'], + newFieldValue as DiffableAllFields['esql_query'] + ); + case 'threat_query': + return getSubfieldChangesForThreatQuery( + oldFieldValue as DiffableAllFields['threat_query'], + newFieldValue as DiffableAllFields['threat_query'] + ); + case 'rule_schedule': + return getSubfieldChangesForRuleSchedule( + oldFieldValue as DiffableAllFields['rule_schedule'], + newFieldValue as DiffableAllFields['rule_schedule'] + ); + case 'rule_name_override': + return getSubfieldChangesForRuleNameOverride( + oldFieldValue as DiffableAllFields['rule_name_override'], + newFieldValue as DiffableAllFields['rule_name_override'] + ); + case 'timestamp_override': + return getSubfieldChangesForTimestampOverride( + oldFieldValue as DiffableAllFields['timestamp_override'], + newFieldValue as DiffableAllFields['timestamp_override'] + ); + case 'timeline_template': + return getSubfieldChangesForTimelineTemplate( + oldFieldValue as DiffableAllFields['timeline_template'], + newFieldValue as DiffableAllFields['timeline_template'] + ); + case 'building_block': + return getSubfieldChangesForBuildingBlock( + oldFieldValue as DiffableAllFields['building_block'], + newFieldValue as DiffableAllFields['building_block'] + ); + case 'threshold': + return getSubfieldChangesForThreshold( + oldFieldValue as DiffableAllFields['threshold'], + newFieldValue as DiffableAllFields['threshold'] + ); + default: + const oldFieldValueStringified = stringifyToSortedJson(oldFieldValue); + const newFieldValueStringified = stringifyToSortedJson(newFieldValue); + + if (oldFieldValueStringified === newFieldValueStringified) { + return []; + } + + return [ + { + subfieldName: fieldName, + oldSubfieldValue: oldFieldValueStringified, + newSubfieldValue: newFieldValueStringified, + }, + ]; + } +}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/kql_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/kql_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/kql_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/kql_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/rule_name_override.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/rule_name_override.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/rule_name_override.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/rule_name_override.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/rule_schedule.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/rule_schedule.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/rule_schedule.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/rule_schedule.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/threat_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/threat_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/threat_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/threat_query.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/threshold.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/threshold.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/threshold.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/threshold.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/timeline_template.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/timeline_template.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/timeline_template.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/timeline_template.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/timestamp_override.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/timestamp_override.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/timestamp_override.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/timestamp_override.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/no_changes.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/no_changes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/no_changes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/no_changes.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx index af10edbe1c599..a5d44438f161c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React from 'react'; +import React, { Fragment } from 'react'; import { EuiHorizontalRule } from '@elastic/eui'; import type { SubfieldChanges } from './types'; import { Subfield } from './subfield'; @@ -28,16 +28,15 @@ export function SubfieldChanges({ fieldName, subfieldChanges }: SubfieldChangesP const shouldShowSeparator = index !== subfieldChanges.length - 1; return ( - <> + {shouldShowSeparator ? : null} - + ); })} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_header.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/translations.ts new file mode 100644 index 0000000000000..808ce32e7b88a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/translations.ts @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { FINAL_UPDATE } from '../field_final_side/components/translations'; + +export const TITLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.title', + { + defaultMessage: 'Diff view', + } +); + +export const NO_CHANGES = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.noChangesLabel', + { + defaultMessage: 'No changes', + } +); + +export const UPDATE_FROM_ELASTIC_TITLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.updateFromElasticTitle', + { + defaultMessage: 'Update from Elastic', + } +); + +export const UPDATE_FROM_ELASTIC_EXPLANATION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.updateFromElasticExplanation', + { + defaultMessage: 'view the changes in Elastic’s latest update', + } +); + +export const MY_CHANGES_TITLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.myChangesTitle', + { + defaultMessage: 'My changes', + } +); + +export const MY_CHANGES_EXPLANATION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.myChangesExplanation', + { + defaultMessage: `view what you have changed in your installed rule and in the {finalUpdateSectionLabel} section`, + values: { + finalUpdateSectionLabel: FINAL_UPDATE, + }, + } +); + +export const MY_CHANGES_IN_RULE_UPGRADE_WORKFLOW_EXPLANATION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.myChangesFinalUpdateOnlyExplanation', + { + defaultMessage: `view the changes you made in the {finalUpdateSectionLabel} section`, + values: { + finalUpdateSectionLabel: FINAL_UPDATE, + }, + } +); + +export const MERGED_CHANGES_TITLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.mergedChangesTitle', + { + defaultMessage: 'My changes merged with Elastic’s', + } +); + +export const MERGED_CHANGES_EXPLANATION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.mergedChangesExplanation', + { + defaultMessage: 'view an update suggestion that combines your changes with Elastic’s', + } +); + +export const MY_ORIGINAL_CHANGES_TITLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.myOriginalChangesTitle', + { + defaultMessage: 'My original changes', + } +); + +export const MY_ORIGINAL_CHANGES_EXPLANATION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.myCustomizationExplanation', + { + defaultMessage: `view what you have changed in your installed rule. Doesn’t include changes made in the {finalUpdateSectionLabel} section.`, + values: { + finalUpdateSectionLabel: FINAL_UPDATE, + }, + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/types.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts new file mode 100644 index 0000000000000..23bd893ba1e97 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts @@ -0,0 +1,179 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import stringify from 'json-stable-stringify'; +import { Version } from './versions_picker/constants'; +import { + ThreeWayDiffOutcome, + type ThreeWayDiff, + ThreeWayDiffConflict, +} from '../../../../../../../common/api/detection_engine'; +import { VersionsPickerOptionEnum } from './versions_picker/versions_picker'; +import { assertUnreachable } from '../../../../../../../common/utility_types'; +import * as i18n from './translations'; + +/** + * Picks the field value for a given version either from a three-way diff object or from a user-set resolved value. + * + * @param version - The version for which the field value is to be picked. + * @param fieldThreeWayDiff - The three-way diff object containing the field values for different versions. + * @param resolvedValue - A value field will be upgraded to. + * @returns - The field value for the specified version + */ +export function pickFieldValueForVersion( + version: Version, + fieldThreeWayDiff: ThreeWayDiff, + resolvedValue: unknown +): unknown { + if (version === Version.Final) { + return resolvedValue; + } + + const versionFieldToPick = `${version}_version` as const; + return fieldThreeWayDiff[versionFieldToPick]; +} + +/** + * Stringifies a field value to an alphabetically sorted JSON string. + */ +export const stringifyToSortedJson = (fieldValue: unknown): string => { + if (fieldValue === undefined) { + return ''; + } + + if (typeof fieldValue === 'string') { + return fieldValue; + } + + return stringify(fieldValue, { space: 2 }); +}; + +interface OptionDetails { + title: string; + description: string; +} + +/** + * Returns the title and description for a given versions picker option. + */ +export function getOptionDetails( + option: VersionsPickerOptionEnum, + hasResolvedValueDifferentFromSuggested: boolean +): OptionDetails { + switch (option) { + case VersionsPickerOptionEnum.MyChanges: + return hasResolvedValueDifferentFromSuggested + ? { + title: i18n.MY_CHANGES_TITLE, + description: i18n.MY_CHANGES_IN_RULE_UPGRADE_WORKFLOW_EXPLANATION, + } + : { + title: i18n.MY_CHANGES_TITLE, + description: i18n.MY_CHANGES_EXPLANATION, + }; + case VersionsPickerOptionEnum.MyOriginalChanges: + return { + title: i18n.MY_ORIGINAL_CHANGES_TITLE, + description: i18n.MY_ORIGINAL_CHANGES_EXPLANATION, + }; + case VersionsPickerOptionEnum.UpdateFromElastic: + return { + title: i18n.UPDATE_FROM_ELASTIC_TITLE, + description: i18n.UPDATE_FROM_ELASTIC_EXPLANATION, + }; + case VersionsPickerOptionEnum.Merged: + return { + title: i18n.MERGED_CHANGES_TITLE, + description: i18n.MERGED_CHANGES_EXPLANATION, + }; + default: + return assertUnreachable(option); + } +} + +/** + * Returns the versions to be compared based on the selected versions picker option. + */ +export function getVersionsForComparison( + selectedOption: VersionsPickerOptionEnum, + hasBaseVersion: boolean +): [Version, Version] { + switch (selectedOption) { + case VersionsPickerOptionEnum.MyChanges: + return hasBaseVersion ? [Version.Base, Version.Final] : [Version.Current, Version.Final]; + case VersionsPickerOptionEnum.MyOriginalChanges: + return [Version.Base, Version.Current]; + case VersionsPickerOptionEnum.UpdateFromElastic: + return hasBaseVersion ? [Version.Base, Version.Target] : [Version.Current, Version.Target]; + case VersionsPickerOptionEnum.Merged: + return [Version.Base, Version.Target]; + default: + return assertUnreachable(selectedOption); + } +} + +/** + * Returns the versions picker options available for a given field diff outcome. + */ +export const getComparisonOptionsForDiffOutcome = ( + diffOutcome: ThreeWayDiffOutcome, + conflict: ThreeWayDiffConflict, + hasResolvedValueDifferentFromSuggested: boolean +): VersionsPickerOptionEnum[] => { + switch (diffOutcome) { + case ThreeWayDiffOutcome.StockValueCanUpdate: { + const options = []; + + if (hasResolvedValueDifferentFromSuggested) { + options.push(VersionsPickerOptionEnum.MyChanges); + } + options.push(VersionsPickerOptionEnum.UpdateFromElastic); + + return options; + } + case ThreeWayDiffOutcome.CustomizedValueNoUpdate: + return [VersionsPickerOptionEnum.MyChanges]; + case ThreeWayDiffOutcome.CustomizedValueSameUpdate: + return [VersionsPickerOptionEnum.MyChanges, VersionsPickerOptionEnum.UpdateFromElastic]; + case ThreeWayDiffOutcome.CustomizedValueCanUpdate: { + if (conflict === ThreeWayDiffConflict.SOLVABLE) { + return [ + hasResolvedValueDifferentFromSuggested + ? VersionsPickerOptionEnum.MyChanges + : VersionsPickerOptionEnum.Merged, + VersionsPickerOptionEnum.UpdateFromElastic, + VersionsPickerOptionEnum.MyOriginalChanges, + ]; + } + + if (conflict === ThreeWayDiffConflict.NON_SOLVABLE) { + const options = [ + VersionsPickerOptionEnum.MyChanges, + VersionsPickerOptionEnum.UpdateFromElastic, + ]; + + if (hasResolvedValueDifferentFromSuggested) { + options.push(VersionsPickerOptionEnum.MyOriginalChanges); + } + + return options; + } + } + case ThreeWayDiffOutcome.MissingBaseCanUpdate: { + const options = []; + + if (hasResolvedValueDifferentFromSuggested) { + options.push(VersionsPickerOptionEnum.MyChanges); + } + options.push(VersionsPickerOptionEnum.UpdateFromElastic); + + return options; + } + default: + return []; + } +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/constants.ts new file mode 100644 index 0000000000000..9c6292451b47b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/constants.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export enum Version { + Base = 'base', + Current = 'current', + Target = 'target', + Final = 'final', +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/translations.ts new file mode 100644 index 0000000000000..0f63b8be2aa92 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/translations.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const BASE_VERSION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.baseVersionLabel', + { + defaultMessage: 'Original', + } +); + +export const CURRENT_VERSION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.currentVersionLabel', + { + defaultMessage: 'Current', + } +); + +export const TARGET_VERSION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.targetVersionLabel', + { + defaultMessage: 'Elastic update', + } +); + +export const FINAL_VERSION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.finalVersionLabel', + { + defaultMessage: 'Final', + } +); + +export const VERSION1_VS_VERSION2 = (version1: string, version2: string): string => { + return i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.version1VsVersion2', + { + defaultMessage: '{version1} vs {version2}', + values: { + version1, + version2, + }, + } + ); +}; + +export const VERSION_PICKER_ARIA_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel', + { + defaultMessage: 'Select versions to compare', + } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.stories.tsx new file mode 100644 index 0000000000000..75486d4176c82 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.stories.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { VersionsPicker, VersionsPickerOptionEnum } from './versions_picker'; + +export default { + component: VersionsPicker, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/VersionsPicker', +}; + +export const Default = () => { + const options = [VersionsPickerOptionEnum.MyChanges, VersionsPickerOptionEnum.UpdateFromElastic]; + const [selectedOption, setSelectedOption] = useState(options[0]); + + return ( + + ); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.tsx new file mode 100644 index 0000000000000..6fb33113bc36d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.tsx @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback } from 'react'; +import { css } from '@emotion/css'; +import { EuiSelect } from '@elastic/eui'; +import { getOptionDetails } from '../utils'; +import * as i18n from './translations'; + +export enum VersionsPickerOptionEnum { + MyChanges = 'MY_CHANGES', + MyOriginalChanges = 'MY_ORIGINAL_CHANGES', + UpdateFromElastic = 'UPDATE_FROM_ELASTIC', + Merged = 'MERGED', +} + +interface VersionsPickerProps { + options: VersionsPickerOptionEnum[]; + selectedOption: VersionsPickerOptionEnum; + onChange: (selectedOption: VersionsPickerOptionEnum) => void; + hasResolvedValueDifferentFromSuggested: boolean; +} + +export function VersionsPicker({ + options, + selectedOption, + onChange, + hasResolvedValueDifferentFromSuggested, +}: VersionsPickerProps) { + const euiSelectOptions = options.map((option) => { + const { title: displayName, description: explanation } = getOptionDetails( + option, + hasResolvedValueDifferentFromSuggested + ); + + return { + value: option, + text: displayName, + title: explanation, + }; + }); + + const handleChange = useCallback( + (changeEvent: React.ChangeEvent) => { + onChange(changeEvent.target.value as VersionsPickerOptionEnum); + }, + [onChange] + ); + + return ( + + ); +} + +const VERSIONS_PICKER_STYLES = css` + // Set min-width a bit wider than default + // to make English text in narrow screens readable + min-width: 300px; +`; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side.tsx new file mode 100644 index 0000000000000..8a6c312d74db0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side.tsx @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { FieldEditFormContextProvider } from '../context/field_edit_form_context'; +import { FieldFinalSideContent } from './field_final_side_content'; +import { FieldFinalSideHeader } from './field_final_side_header'; + +export function FieldFinalSide(): JSX.Element { + return ( + + + + + ); +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_content.tsx new file mode 100644 index 0000000000000..66fcee8547d7f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_content.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiButtonEmpty, EuiFlexGroup } from '@elastic/eui'; +import { FieldFinalReadOnly } from '../../final_readonly'; +import { FieldFinalEdit } from '../../final_edit'; +import { assertUnreachable } from '../../../../../../../../common/utility_types'; +import { + FieldFinalSideMode, + useFieldUpgradeContext, +} from '../../rule_upgrade/field_upgrade_context'; +import * as i18n from './translations'; + +export function FieldFinalSideContent(): JSX.Element { + const { rightSideMode, setEditMode, setReadOnlyMode } = useFieldUpgradeContext(); + + switch (rightSideMode) { + case FieldFinalSideMode.Readonly: + return ( + <> + + + {i18n.EDIT} + + + + + ); + case FieldFinalSideMode.Edit: + return ( + <> + + + {i18n.CANCEL} + + + + + ); + default: + return assertUnreachable(rightSideMode); + } +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_header.tsx new file mode 100644 index 0000000000000..0e70689b7c9db --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_header.tsx @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PropsWithChildren } from 'react'; +import React, { useCallback } from 'react'; +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiTitle } from '@elastic/eui'; +import type { DiffableAllFields } from '../../../../../../../../common/api/detection_engine'; +import { FieldUpgradeSideHeader } from '../../field_upgrade_side_header'; +import { assertUnreachable } from '../../../../../../../../common/utility_types'; +import { + FieldFinalSideMode, + useFieldUpgradeContext, +} from '../../rule_upgrade/field_upgrade_context'; +import { useFieldEditFormContext } from '../context/field_edit_form_context'; +import { FieldFinalSideHelpInfo } from './field_final_side_help_info'; +import * as i18n from './translations'; + +export function FieldFinalSideHeader(): JSX.Element { + const { fieldName, hasConflict, rightSideMode, finalDiffableRule, setRuleFieldResolvedValue } = + useFieldUpgradeContext(); + const { form } = useFieldEditFormContext(); + + const handleAccept = useCallback( + () => + setRuleFieldResolvedValue({ + ruleId: finalDiffableRule.rule_id, + fieldName: fieldName as keyof DiffableAllFields, + resolvedValue: finalDiffableRule[fieldName] as DiffableAllFields[typeof fieldName], + }), + [finalDiffableRule, fieldName, setRuleFieldResolvedValue] + ); + const handleSave = useCallback(() => form?.submit(), [form]); + + switch (rightSideMode) { + case FieldFinalSideMode.Readonly: + return ( + + + {hasConflict && ( + + {i18n.ACCEPT} + + )} + + + ); + case FieldFinalSideMode.Edit: + return ( + + + + {hasConflict ? i18n.SAVE_AND_ACCEPT : i18n.SAVE} + + + + ); + default: + return assertUnreachable(rightSideMode); + } +} + +function StaticHeaderContent({ children }: PropsWithChildren<{}>): JSX.Element { + return ( + + + + +

+ {i18n.FINAL_UPDATE} + +

+
+
+
+ {children} +
+ ); +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_help_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_help_info.tsx new file mode 100644 index 0000000000000..ef8cfc820535d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_help_info.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import useToggle from 'react-use/lib/useToggle'; +import { EuiPopover, EuiText, EuiButtonIcon } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import * as i18n from '../../../../../../rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations'; + +/** + * Theme doesn't expose width variables. Using provided size variables will require + * multiplying it by another magic constant. + * + * 320px width looks + * like a [commonly used width in EUI](https://github.com/search?q=repo%3Aelastic%2Feui%20320&type=code). + */ +const POPOVER_WIDTH = 320; + +export function FieldFinalSideHelpInfo(): JSX.Element { + const [isPopoverOpen, togglePopover] = useToggle(false); + + const button = ( + + ); + + return ( + + + {i18n.UPDATE_BUTTON_LABEL}, + }} + /> + + + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_component_props.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_component_props.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_component_props.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_component_props.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_form_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_form_wrapper.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_form_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_form_wrapper.tsx index a5f7eedc6114c..ab12f62cfa27b 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_form_wrapper.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_form_wrapper.tsx @@ -6,7 +6,6 @@ */ import React, { useCallback, useEffect } from 'react'; -import { EuiButtonEmpty, EuiFlexGroup } from '@elastic/eui'; import { extractValidationMessages } from '../../../../../../rule_creation/logic/extract_validation_messages'; import type { FormWithWarningsSubmitHandler } from '../../../../../../../common/hooks/use_form_with_warnings'; import { useFormWithWarnings } from '../../../../../../../common/hooks/use_form_with_warnings'; @@ -16,9 +15,8 @@ import type { DiffableAllFields, DiffableRule, } from '../../../../../../../../common/api/detection_engine'; -import { useFinalSideContext } from '../../final_side/final_side_context'; -import { useDiffableRuleContext } from '../../diffable_rule_context'; -import * as i18n from '../../translations'; +import { useFieldUpgradeContext } from '../../rule_upgrade/field_upgrade_context'; +import { useFieldEditFormContext } from '../context/field_edit_form_context'; import type { RuleFieldEditComponentProps } from './rule_field_edit_component_props'; import { useConfirmValidationErrorsModal } from '../../../../../../../common/hooks/use_confirm_validation_errors_modal'; import { @@ -55,8 +53,9 @@ export function RuleFieldEditFormWrapper({ deserializer, serializer, }: RuleFieldEditFormWrapperProps) { - const { fieldName, setReadOnlyMode } = useFinalSideContext(); - const { finalDiffableRule, setRuleFieldResolvedValue } = useDiffableRuleContext(); + const { registerForm } = useFieldEditFormContext(); + const { fieldName, finalDiffableRule, setReadOnlyMode, setRuleFieldResolvedValue } = + useFieldUpgradeContext(); const deserialize = useCallback( (defaultValue: FormData): FormData => @@ -104,6 +103,8 @@ export function RuleFieldEditFormWrapper({ }, }); + useEffect(() => registerForm(form), [registerForm, form]); + // form.isValid has `undefined` value until all fields are dirty. // Run the validation upfront to visualize form validity state. useEffect(() => { @@ -111,24 +112,14 @@ export function RuleFieldEditFormWrapper({ }, [form]); return ( - <> - - - {i18n.CANCEL_BUTTON_LABEL} - - - {i18n.SAVE_BUTTON_LABEL} - - +
{modal} - - - - + + ); } diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/translations.ts new file mode 100644 index 0000000000000..4c44629bf4268 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/translations.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const FINAL_UPDATE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate', + { + defaultMessage: 'Final update', + } +); + +export const SAVE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.field.save', + { + defaultMessage: 'Save', + } +); + +export const ACCEPT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.field.accept', + { + defaultMessage: 'Accept', + } +); + +export const SAVE_AND_ACCEPT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.field.saveAndAccept', + { + defaultMessage: 'Save and accept', + } +); + +export const CANCEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.cancelButtonLabel', + { + defaultMessage: 'Cancel', + } +); + +export const EDIT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel', + { + defaultMessage: 'Edit', + } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/context/field_edit_form_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/context/field_edit_form_context.tsx new file mode 100644 index 0000000000000..ba722107e8b9e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/context/field_edit_form_context.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { + createContext, + useContext, + type PropsWithChildren, + useState, + useCallback, + useRef, +} from 'react'; +import type { FormHook } from '../../../../../../../shared_imports'; +import { invariant } from '../../../../../../../../common/utils/invariant'; + +type FieldEditFormCleanUp = () => void; + +interface FieldEditFormContextType { + form: FormHook | undefined; + registerForm: (form: FormHook) => FieldEditFormCleanUp; +} + +const FieldEditFormContext = createContext(null); + +/** + * FieldEditFormContext helps to encapsulate form related logic in `field_final_side` folder. + * + * The only purpose is to obtain the recent form handler and provide it for consumers in + * in the `field_final_side` folder. + */ +export function FieldEditFormContextProvider({ children }: PropsWithChildren<{}>) { + // Using reference reduces unnecessary re-renders though we need to re-render children + // whenever something in the form changes like validity state to be able to reflect that changes. + const formRef = useRef(); + // Setting the state re-renders the component and its children. The state value is ignored since + // we use a ref here. In that case it doesn't re-render components upon form cleanup. In that case + // the edit component disappears and we aren't interested in the form's state anymore. + const [, setForm] = useState(); + const registerForm = useCallback( + (formToRegister: FormHook) => { + // Guard against subtle bugs. In attempt of using two forms throw an exception. + if (formRef.current) { + throw new Error( + 'Unexpected new form registration while the old one was not cleaned. Do you properly cleanup form by returning registerForm result from useEffect.' + ); + } + + formRef.current = formToRegister; + setForm(formToRegister); + + return () => (formRef.current = undefined); + }, + [formRef, setForm] + ); + + return ( + + {children} + + ); +} + +export function useFieldEditFormContext() { + const context = useContext(FieldEditFormContext); + + invariant( + context !== null, + 'useFieldEditFormContext must be used inside a FieldEditFormProvider' + ); + + return context; +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/index.ts new file mode 100644 index 0000000000000..bcab35a1c27b1 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './components/field_final_side'; +export type * from './components/rule_field_edit_component_props'; +export * from './components/rule_field_edit_form_wrapper'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_upgrade_side_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_upgrade_side_header.tsx new file mode 100644 index 0000000000000..3e0e60d3c4edf --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_upgrade_side_header.tsx @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PropsWithChildren } from 'react'; +import React from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/css'; + +export function FieldUpgradeSideHeader({ children }: PropsWithChildren<{}>) { + const { euiTheme } = useEuiTheme(); + + return ( + <> + + {children} + + + + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx index 3f10ce014d82e..0b8668e90a903 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { RuleFieldEditFormWrapper } from './fields/rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../field_final_side'; import type { UpgradeableCommonFields } from '../../../../model/prebuilt_rule_upgrade/fields'; import { BuildingBlockEdit, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/custom_query_rule_field_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/custom_query_rule_field_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/custom_query_rule_field_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/custom_query_rule_field_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/eql_rule_field_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/eql_rule_field_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/eql_rule_field_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/eql_rule_field_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/esql_rule_field_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/esql_rule_field_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/esql_rule_field_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/esql_rule_field_edit.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/field_final_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/field_final_edit.tsx new file mode 100644 index 0000000000000..542e9aabcddd2 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/field_final_edit.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { assertUnreachable } from '../../../../../../../common/utility_types'; +import type { + UpgradeableCustomQueryFields, + UpgradeableSavedQueryFields, + UpgradeableThreatMatchFields, + UpgradeableThresholdFields, + UpgradeableNewTermsFields, + UpgradeableEqlFields, + UpgradeableEsqlFields, + UpgradeableMachineLearningFields, +} from '../../../../model/prebuilt_rule_upgrade/fields'; +import { isCommonFieldName } from '../../../../model/prebuilt_rule_upgrade/fields'; +import { useFieldUpgradeContext } from '../rule_upgrade/field_upgrade_context'; +import { CommonRuleFieldEdit } from './common_rule_field_edit'; +import { CustomQueryRuleFieldEdit } from './custom_query_rule_field_edit'; +import { SavedQueryRuleFieldEdit } from './saved_query_rule_field_edit'; +import { ThreatMatchRuleFieldEdit } from './threat_match_rule_field_edit'; +import { ThresholdRuleFieldEdit } from './threshold_rule_field_edit'; +import { NewTermsRuleFieldEdit } from './new_terms_rule_field_edit'; +import { EqlRuleFieldEdit } from './eql_rule_field_edit'; +import { EsqlRuleFieldEdit } from './esql_rule_field_edit'; +import { MachineLearningRuleFieldEdit } from './machine_learning_rule_field_edit'; + +export function FieldFinalEdit(): JSX.Element { + const { + fieldName, + finalDiffableRule: { type: ruleType }, + } = useFieldUpgradeContext(); + + if (isCommonFieldName(fieldName)) { + return ; + } + + switch (ruleType) { + case 'query': + return ; + case 'saved_query': + return ; + case 'eql': + return ; + case 'esql': + return ; + case 'threat_match': + return ; + case 'threshold': + return ; + case 'machine_learning': + return ( + + ); + case 'new_terms': + return ; + default: + return assertUnreachable(ruleType); + } +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/form_schema.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/form_schema.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/form_schema.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/form_schema.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx index 6dfd38d5676d3..3100e5c21f8bb 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx @@ -11,7 +11,7 @@ import { getTermsAggregationFields } from '../../../../../../../rule_creation_ui import { isEsqlRule, isMlRule } from '../../../../../../../../../common/detection_engine/utils'; import { useAllEsqlRuleFields } from '../../../../../../../rule_creation_ui/hooks'; import { useMLRuleConfig } from '../../../../../../../../common/components/ml/hooks/use_ml_rule_config'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { useDiffableRuleDataView } from '../hooks/use_diffable_rule_data_view'; import * as i18n from './translations'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx new file mode 100644 index 0000000000000..e01db6f428887 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { + 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 { 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'; + +export function AlertSuppressionEditForm(): JSX.Element { + return ( + + ); +} + +function deserializer(defaultValue: FormData): AlertSuppressionFormData { + const alertSuppression = defaultValue.alert_suppression as AlertSuppression | undefined; + + return { + [ALERT_SUPPRESSION_FIELDS_FIELD_NAME]: alertSuppression?.group_by ?? [], + [ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME]: alertSuppression?.duration + ? AlertSuppressionDurationType.PerTimePeriod + : AlertSuppressionDurationType.PerRuleExecution, + [ALERT_SUPPRESSION_DURATION_FIELD_NAME]: + alertSuppression?.duration ?? ALERT_SUPPRESSION_DEFAULT_DURATION, + [ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME]: + alertSuppression?.missing_fields_strategy ?? DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY, + }; +} + +function serializer(formData: FormData): { alert_suppression?: AlertSuppression } { + const alertSuppressionFormData = formData as AlertSuppressionFormData; + + if (alertSuppressionFormData[ALERT_SUPPRESSION_FIELDS_FIELD_NAME].length === 0) { + return {}; + } + + return { + alert_suppression: { + group_by: alertSuppressionFormData[ALERT_SUPPRESSION_FIELDS_FIELD_NAME], + duration: + alertSuppressionFormData[ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME] === + AlertSuppressionDurationType.PerTimePeriod + ? alertSuppressionFormData[ALERT_SUPPRESSION_DURATION_FIELD_NAME] + : undefined, + missing_fields_strategy: + alertSuppressionFormData[ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME] || + DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY, + }, + }; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/building_block.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/building_block.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/building_block.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/building_block.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx index 2f697288221cf..7ff2b7fdbd6fd 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx @@ -11,7 +11,7 @@ import { css } from '@emotion/css'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { DataSourceType } from '../../../../../../../../../common/api/detection_engine/prebuilt_rules'; import { UseMultiFields } from '../../../../../../../../shared_imports'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { IndexPatternField } from './index_pattern_edit'; import { DataSourceInfoText } from './data_source_info_text'; import { DataViewField } from './data_view_field'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx index e30b713908a02..ec9e49bb7ab17 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx @@ -16,7 +16,7 @@ import { FIELD_TYPES, } from '../../../../../../../../shared_imports'; import { DataSourceType } from '../../../../../../../../../common/api/detection_engine/prebuilt_rules'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import { DataSourceEdit } from './data_source_edit'; import { INDEX_HELPER_TEXT } from '../../../../../../../rule_creation_ui/components/step_define_rule/translations'; import * as i18n from './translations'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_info_text.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_info_text.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_info_text.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_info_text.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx index 9e24fd6c56c77..3562e7de82d66 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx @@ -10,7 +10,7 @@ import type { EuiButtonGroupOptionProps } from '@elastic/eui'; import { EuiButtonGroup } from '@elastic/eui'; import { DataSourceType } from '../../../../../../../../../common/api/detection_engine/prebuilt_rules'; import type { FieldHook } from '../../../../../../../../shared_imports'; -import type { ResetFormFn } from '../rule_field_edit_component_props'; +import type { ResetFormFn } from '../../../field_final_side'; import * as i18n from './translations'; interface DataSourceTypeSelectorFieldProps { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_view_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_view_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_view_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_view_field.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/index_pattern_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/index_pattern_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/index_pattern_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/index_pattern_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/description.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx index cea9b9308c0df..73e7c553c9127 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx @@ -8,7 +8,7 @@ import React from 'react'; import type { DataViewBase } from '@kbn/es-query'; import { EqlQueryEdit } from '../../../../../../../rule_creation/components/eql_query_edit'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { useDiffableRuleDataView } from '../hooks/use_diffable_rule_data_view'; export function EqlQueryEditAdapter({ diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx index 4dd953006d39c..f357504af76f0 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx @@ -10,7 +10,7 @@ import type { Filter } from '@kbn/es-query'; import type { EqlOptions } from '@kbn/timelines-plugin/common'; import type { FieldValueQueryBar } from '../../../../../../../rule_creation_ui/components/query_bar_field'; import type { FormData, FormSchema } from '../../../../../../../../shared_imports'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import { type DiffableRule, RuleEqlQuery, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx index faf43d5b88b22..a3b1faf667d99 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx @@ -7,8 +7,8 @@ import React from 'react'; import type { DataViewBase } from '@kbn/es-query'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { EsqlQueryEdit } from '../../../../../../../rule_creation/components/esql_query_edit'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; import { useDiffableRuleDataView } from '../hooks/use_diffable_rule_data_view'; export function EsqlQueryEditAdapter({ diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx index a156ef747aedc..dd482b6962d8a 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx @@ -7,7 +7,7 @@ import React from 'react'; import type { FormData, FormSchema } from '../../../../../../../../shared_imports'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import type { FieldValueQueryBar } from '../../../../../../../rule_creation_ui/components/query_bar_field'; import { type DiffableRule, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/false_positives.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/false_positives.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/false_positives.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/false_positives.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/hooks/use_data_view.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/hooks/use_data_view.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/hooks/use_data_view.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/hooks/use_data_view.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/hooks/use_diffable_rule_data_view.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/hooks/use_diffable_rule_data_view.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/hooks/use_diffable_rule_data_view.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/hooks/use_diffable_rule_data_view.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/investigation_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/investigation_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/investigation_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/investigation_fields.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx index 27415855adfbe..f377e17d8e23b 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx @@ -18,7 +18,7 @@ import type { DiffableRule } from '../../../../../../../../../common/api/detecti 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 type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { useDiffableRuleDataView } from '../hooks/use_diffable_rule_data_view'; export function KqlQueryEdit({ diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx index 98ffc4b6bfdf0..a02fa9b9fd9d4 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx @@ -9,8 +9,8 @@ import React from 'react'; import type { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import type { FormData, FormSchema } from '../../../../../../../../shared_imports'; import { schema } from '../../../../../../../rule_creation_ui/components/step_define_rule/schema'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; import type { FieldValueQueryBar } from '../../../../../../../rule_creation_ui/components/query_bar_field'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import { KqlQueryLanguage, KqlQueryType, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/max_signals.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/max_signals.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/max_signals.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/max_signals.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/name.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/name.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/name.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/name.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/note.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/note.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/note.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/note.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/references.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/references.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/references.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/references.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/related_integrations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/related_integrations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/related_integrations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/related_integrations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/required_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/required_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/required_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/required_fields.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/risk_score.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/risk_score.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/risk_score.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/risk_score.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/risk_score_mapping.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/risk_score_mapping.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/risk_score_mapping.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/risk_score_mapping.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_name_override.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_name_override.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_name_override.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_name_override.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_schedule.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_schedule.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_schedule.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_schedule.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/setup.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/setup.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/setup.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/setup.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/severity.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/severity.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/severity.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/severity.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/severity_mapping.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/severity_mapping.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/severity_mapping.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/severity_mapping.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/tags.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/tags.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/tags.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/tags.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threat.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threat.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threat.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threat.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/form_schema.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/form_schema.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/form_schema.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/form_schema.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx new file mode 100644 index 0000000000000..0d4be2e421a5c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { + THRESHOLD_ALERT_SUPPRESSION_ENABLED, + ThresholdAlertSuppressionEdit, +} from '../../../../../../../rule_creation/components/threshold_alert_suppression_edit'; +import { ALERT_SUPPRESSION_DURATION_FIELD_NAME } from '../../../../../../../rule_creation/components/alert_suppression_edit'; +import { type FormData } from '../../../../../../../../shared_imports'; +import type { ThresholdAlertSuppression } from '../../../../../../../../../common/api/detection_engine'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; +import { + thresholdAlertSuppressionFormSchema, + type ThresholdAlertSuppressionFormData, +} from './form_schema'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; + +export function ThresholdAlertSuppressionEditForm(): JSX.Element { + return ( + + ); +} + +function ThresholdAlertSuppressionEditAdapter({ + finalDiffableRule, +}: RuleFieldEditComponentProps): JSX.Element { + if (finalDiffableRule.type !== 'threshold') { + throw new Error('Threshold rule type expected'); + } + + const suppressibleFields = [finalDiffableRule.threshold.field].flat(); + + return ; +} + +function deserializer(defaultValue: FormData): ThresholdAlertSuppressionFormData { + const alertSuppression = defaultValue.alert_suppression as ThresholdAlertSuppression | undefined; + + return { + [THRESHOLD_ALERT_SUPPRESSION_ENABLED]: Boolean(alertSuppression?.duration), + [ALERT_SUPPRESSION_DURATION_FIELD_NAME]: alertSuppression?.duration ?? { + value: 5, + unit: 'm', + }, + }; +} + +function serializer(formData: FormData): { alert_suppression?: ThresholdAlertSuppression } { + const alertSuppressionFormData = formData as ThresholdAlertSuppressionFormData; + + if (!alertSuppressionFormData[THRESHOLD_ALERT_SUPPRESSION_ENABLED]) { + return {}; + } + + return { + alert_suppression: { + duration: alertSuppressionFormData[ALERT_SUPPRESSION_DURATION_FIELD_NAME], + }, + }; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/timeline_template.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/timeline_template.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/timeline_template.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/timeline_template.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/timestamp_override.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/timestamp_override.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/timestamp_override.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/timestamp_override.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/index.ts new file mode 100644 index 0000000000000..cc252595beee6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './field_final_edit'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/machine_learning_rule_field_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/machine_learning_rule_field_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/machine_learning_rule_field_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/machine_learning_rule_field_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/new_terms_rule_field_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/new_terms_rule_field_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/new_terms_rule_field_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/new_terms_rule_field_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/saved_query_rule_field_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/saved_query_rule_field_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/saved_query_rule_field_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/saved_query_rule_field_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/threat_match_rule_field_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/threat_match_rule_field_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/threat_match_rule_field_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/threat_match_rule_field_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/threshold_rule_field_edit.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/threshold_rule_field_edit.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/threshold_rule_field_edit.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/threshold_rule_field_edit.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/utils.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/common_rule_field_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/common_rule_field_readonly.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/common_rule_field_readonly.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/common_rule_field_readonly.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/custom_query_rule_field_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/custom_query_rule_field_readonly.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/custom_query_rule_field_readonly.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/custom_query_rule_field_readonly.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/empty_field_value_placeholder.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/empty_field_value_placeholder.tsx new file mode 100644 index 0000000000000..4914d1b7226c2 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/empty_field_value_placeholder.tsx @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiText } from '@elastic/eui'; +import * as i18n from './translations'; + +export function EmptyFieldValuePlaceholder() { + return ( + + {`<${i18n.EMPTY_FIELD_VALUE_PLACEHOLDER}>`} + + ); +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/index.tsx new file mode 100644 index 0000000000000..0777bdb8d906d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/index.tsx @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { EmptyFieldValuePlaceholder } from './empty_field_value_placeholder'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/translations.ts new file mode 100644 index 0000000000000..52486dbefb1de --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/translations.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const EMPTY_FIELD_VALUE_PLACEHOLDER = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.emptyFieldValuePlaceholder', + { + defaultMessage: 'Field value is empty', + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/eql_rule_field_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/eql_rule_field_readonly.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/eql_rule_field_readonly.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/eql_rule_field_readonly.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/esql_rule_field_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/esql_rule_field_readonly.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/esql_rule_field_readonly.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/esql_rule_field_readonly.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_final_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_final_readonly.tsx new file mode 100644 index 0000000000000..33abbb4792946 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_final_readonly.tsx @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo } from 'react'; +import { DiffableCommonFields } from '../../../../../../../common/api/detection_engine'; +import type { + DiffableCustomQueryFields, + DiffableSavedQueryFields, + DiffableEqlFields, + DiffableThreatMatchFields, + DiffableThresholdFields, + DiffableNewTermsFields, + DiffableEsqlFields, + DiffableMachineLearningFields, +} from '../../../../../../../common/api/detection_engine'; +import { assertUnreachable } from '../../../../../../../common/utility_types'; +import { useFieldUpgradeContext } from '../rule_upgrade/field_upgrade_context'; +import { CustomQueryRuleFieldReadOnly } from './custom_query_rule_field_readonly'; +import { SavedQueryRuleFieldReadOnly } from './saved_query_rule_field_readonly'; +import { EqlRuleFieldReadOnly } from './eql_rule_field_readonly'; +import { EsqlRuleFieldReadOnly } from './esql_rule_field_readonly'; +import { ThreatMatchRuleFieldReadOnly } from './threat_match_rule_field_readonly'; +import { ThresholdRuleFieldReadOnly } from './threshold_rule_field_readonly'; +import { MachineLearningRuleFieldReadOnly } from './machine_learning_rule_field_readonly'; +import { NewTermsRuleFieldReadOnly } from './new_terms_rule_field_readonly'; +import { CommonRuleFieldReadOnly } from './common_rule_field_readonly'; + +export function FieldFinalReadOnly(): JSX.Element { + const { fieldName, finalDiffableRule } = useFieldUpgradeContext(); + + const { data: commonField } = useMemo( + () => DiffableCommonFields.keyof().safeParse(fieldName), + [fieldName] + ); + + if (commonField) { + return ( + + ); + } + + switch (finalDiffableRule.type) { + case 'query': + return ( + + ); + case 'saved_query': + return ( + + ); + case 'eql': + return ( + + ); + case 'esql': + return ( + + ); + case 'threat_match': + return ( + + ); + case 'threshold': + return ( + + ); + case 'machine_learning': + return ( + + ); + case 'new_terms': + return ( + + ); + default: + return assertUnreachable(finalDiffableRule); + } +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx new file mode 100644 index 0000000000000..8803bab21022d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { AlertSuppressionReadOnly } from './alert_suppression'; +import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; + +export default { + component: AlertSuppressionReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/alert_suppression', +}; + +export const OtherRuleTypes = () => ( + + + +); + +export const Threshold = () => ( + + + +); + +export const EmptyValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx similarity index 88% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx index 8c15347bc6d90..3cbe4018012a1 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx @@ -19,6 +19,7 @@ import { SuppressAlertsByField, SuppressAlertsDuration, } from '../../../../rule_definition_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface AlertSuppressionReadOnlyProps { alertSuppression?: AlertSuppression | ThresholdAlertSuppression; @@ -30,7 +31,16 @@ export function AlertSuppressionReadOnly({ ruleType, }: AlertSuppressionReadOnlyProps) { if (!alertSuppression) { - return null; + return ( + , + }, + ]} + /> + ); } const listItems = []; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx new file mode 100644 index 0000000000000..f52726450ae52 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { AnomalyThresholdReadOnly } from './anomaly_threshold'; + +export default { + component: AnomalyThresholdReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/anomaly_threshold', +}; + +export const Default = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx new file mode 100644 index 0000000000000..3f8d7b3c72a6c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { BuildingBlockReadOnly } from './building_block'; + +export default { + component: BuildingBlockReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/building_block', +}; + +export const Default = () => ; + +export const NoValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx similarity index 88% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx index 7e64c140e6d70..1a161737b6bbb 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx @@ -16,16 +16,12 @@ interface BuildingBlockReadOnlyProps { } export function BuildingBlockReadOnly({ buildingBlock }: BuildingBlockReadOnlyProps) { - if (!buildingBlock || !buildingBlock.type) { - return null; - } - return ( , + description: , }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx new file mode 100644 index 0000000000000..129a162ffd574 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; +import { + dataSourceWithDataView, + dataSourceWithIndexPatterns, + mockDataView, +} from '../../storybook/mocks'; +import { DataSourceReadOnly } from './data_source'; + +export default { + component: DataSourceReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/data_source', +}; + +export const DataSourceWithIndexPatterns = () => ( + +); + +export const DataSourceWithDataView = () => ( + mockDataView(), + }, + }, + }} + > + + +); + +export const NoValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx similarity index 85% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx index 2a7bff6ff8b2d..19fc97ae5dee9 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx @@ -12,6 +12,7 @@ import type { RuleDataSource } from '../../../../../../../../../common/api/detec import { Index, DataViewId, DataViewIndexPattern } from '../../../../rule_definition_section'; import * as ruleDetailsI18n from '../../../../translations'; import { assertUnreachable } from '../../../../../../../../../common/utility_types'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface DataSourceReadOnlyProps { dataSource?: RuleDataSource; @@ -19,7 +20,16 @@ interface DataSourceReadOnlyProps { export function DataSourceReadOnly({ dataSource }: DataSourceReadOnlyProps) { if (!dataSource) { - return null; + return ( + , + }, + ]} + /> + ); } if (dataSource.type === DataSourceType.index_patterns) { diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx new file mode 100644 index 0000000000000..2ba645fe576f0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { DescriptionReadOnly } from './description'; + +export default { + component: DescriptionReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/description', +}; + +export const Default = () => ( + +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx new file mode 100644 index 0000000000000..4b5210b62dd85 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; +import { EqlQueryReadOnly } from './eql_query'; +import { + dataSourceWithDataView, + dataSourceWithIndexPatterns, + eqlQuery, + mockDataView, +} from '../../storybook/mocks'; + +export default { + component: EqlQueryReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/eql_query', +}; + +export const EqlQueryWithIndexPatterns = () => ( + mockDataView(), + }, + }, + }} + > + + +); + +export const EqlQueryWithDataView = () => ( + mockDataView(), + }, + }, + }} + > + + +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx new file mode 100644 index 0000000000000..a3cce1fe6b2e3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EsqlQueryReadOnly } from './esql_query'; + +export default { + component: EsqlQueryReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/esql_query', +}; + +export const Default = () => ( + +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx new file mode 100644 index 0000000000000..8a116e564c543 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { FalsePositivesReadOnly } from './false_positives'; + +export default { + component: FalsePositivesReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/false_positives', +}; + +export const Default = () => ( + +); + +export const NoValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx similarity index 77% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx index 7480af5dff4c5..5c51852f1eb4e 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RuleFalsePositiveArray } from '../../../../../../../../../common/api/detection_engine'; import { FalsePositives } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface FalsePositivesReadOnlyProps { falsePositives: RuleFalsePositiveArray; } export function FalsePositivesReadOnly({ falsePositives }: FalsePositivesReadOnlyProps) { - if (falsePositives.length === 0) { - return null; - } - return ( , + description: falsePositives.length ? ( + + ) : ( + + ), }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx new file mode 100644 index 0000000000000..162b5e14bf6f5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { HistoryWindowStartReadOnly } from './history_window_start'; + +export default { + component: HistoryWindowStartReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/history_window_start', +}; + +export const Default = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx new file mode 100644 index 0000000000000..0c17672d589b4 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { InvestigationFieldsReadOnly } from './investigation_fields'; + +export default { + component: InvestigationFieldsReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/investigation_fields', +}; + +export const Default = () => ( + +); + +export const NoValue = () => ; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx new file mode 100644 index 0000000000000..e626f85461550 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiDescriptionList } from '@elastic/eui'; +import * as ruleDetailsI18n from '../../../../translations'; +import type { InvestigationFields } from '../../../../../../../../../common/api/detection_engine'; +import { InvestigationFields as InvestigationFieldsComponent } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; + +interface InvestigationFieldsReadOnlyProps { + investigationFields?: InvestigationFields; +} + +export function InvestigationFieldsReadOnly({ + investigationFields, +}: InvestigationFieldsReadOnlyProps) { + return ( + + ) : ( + + ), + }, + ]} + /> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/inline_kql_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/inline_kql_query.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/inline_kql_query.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/inline_kql_query.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx new file mode 100644 index 0000000000000..1b4b205891cfc --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx @@ -0,0 +1,119 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { KqlQueryReadOnly } from '.'; +import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; +import { + dataSourceWithDataView, + dataSourceWithIndexPatterns, + inlineKqlQuery, + mockDataView, + savedKqlQuery, + savedQueryResponse, +} from '../../storybook/mocks'; + +export default { + component: KqlQueryReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/kql_query', +}; + +export const InlineKqlQueryWithIndexPatterns = () => ( + mockDataView(), + }, + }, + }} + > + + +); + +export const InlineKqlQueryWithDataView = () => ( + mockDataView(), + }, + }, + }} + > + + +); + +/* + Filters should still be displayed if no `data_source` is provided. + Component would fall back to the default index pattern in such case. +*/ +export const InlineKqlQueryWithoutDataSource = () => ( + mockDataView(), + }, + }, + }} + > + + +); + +export const SavedKqlQueryWithIndexPatterns = () => ( + mockDataView(), + }, + }, + http: { + get: async () => savedQueryResponse, + }, + }} + > + + +); + +export const SavedKqlQueryWithDataView = () => ( + mockDataView(), + }, + }, + http: { + get: async () => savedQueryResponse, + }, + }} + > + + +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/saved_kql_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/saved_kql_query.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/saved_kql_query.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/saved_kql_query.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx new file mode 100644 index 0000000000000..dcb7e165b04fb --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { useQueryClient } from '@tanstack/react-query'; +import { MachineLearningJobIdReadOnly } from './machine_learning_job_id'; +import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; +import { GET_MODULES_QUERY_KEY } from '../../../../../../../../common/components/ml_popover/hooks/use_fetch_modules_query'; +import { GET_RECOGNIZER_QUERY_KEY } from '../../../../../../../../common/components/ml_popover/hooks/use_fetch_recognizer_query'; +import { GET_JOBS_SUMMARY_QUERY_KEY } from '../../../../../../../../common/components/ml/hooks/use_fetch_jobs_summary_query'; + +export default { + component: MachineLearningJobIdReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/machine_learning_job_id', +}; + +const mockedModulesData = [ + { + id: 'security_auth', + jobs: [ + { + id: 'auth_high_count_logon_events', + config: { + groups: [], + custom_settings: { + security_app_display_name: 'Spike in Logon Events', + }, + }, + }, + ], + }, +]; + +const mockedCompatibleModules = [ + { + id: 'security_auth', + }, +]; + +function MockMlData({ children }: { children: React.ReactNode }) { + const queryClient = useQueryClient(); + + queryClient.setQueryData([GET_JOBS_SUMMARY_QUERY_KEY, {}], []); + + queryClient.setQueryData([GET_MODULES_QUERY_KEY, {}], mockedModulesData); + + queryClient.setQueryData([GET_RECOGNIZER_QUERY_KEY, {}], mockedCompatibleModules); + + return <>{children}; +} + +export const Default = () => ( + + + + + +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx new file mode 100644 index 0000000000000..17d42acc1e650 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { MaxSignalsReadOnly } from './max_signals'; + +export default { + component: MaxSignalsReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/max_signals', +}; + +export const Default = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx new file mode 100644 index 0000000000000..7036644c57fb0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { NameReadOnly } from './name'; + +export default { + component: NameReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/name', +}; + +export const Default = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx new file mode 100644 index 0000000000000..e04d5a8286183 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { NewTermsFieldsReadOnly } from './new_terms_fields'; + +export default { + component: NewTermsFieldsReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/new_terms_fields', +}; + +export const Default = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx new file mode 100644 index 0000000000000..b993a3f1639ed --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { NoteReadOnly } from './note'; + +export default { + component: NoteReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/note', +}; + +export const Default = () => ( + +); + +export const EmptyStringValue = () => ; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx new file mode 100644 index 0000000000000..7a6702f906684 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiDescriptionList } from '@elastic/eui'; +import * as i18n from './translations'; +import type { InvestigationGuide } from '../../../../../../../../../common/api/detection_engine'; +import { MarkdownRenderer } from '../../../../../../../../common/components/markdown_editor'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; + +interface NoteReadOnlyProps { + note: InvestigationGuide; +} + +export function NoteReadOnly({ note }: NoteReadOnlyProps) { + return ( + : , + }, + ]} + /> + ); +} + +interface NoteProps { + note: InvestigationGuide; +} + +function Note({ note }: NoteProps) { + return {note}; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx new file mode 100644 index 0000000000000..25fd321e8204b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ReferencesReadOnly } from './references'; + +export default { + component: ReferencesReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/references', +}; + +export const Default = () => ( + +); + +export const EmptyArrayValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx similarity index 77% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx index d9bb50dcaeb0b..1353ba2c92012 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RuleReferenceArray } from '../../../../../../../../../common/api/detection_engine'; import { References } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface ReferencesReadOnlyProps { references: RuleReferenceArray; } export function ReferencesReadOnly({ references }: ReferencesReadOnlyProps) { - if (references.length === 0) { - return null; - } - return ( , + description: references.length ? ( + + ) : ( + + ), }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx new file mode 100644 index 0000000000000..af00990d8d01e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { useQueryClient } from '@tanstack/react-query'; +import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; +import { RelatedIntegrationsReadOnly } from './related_integrations'; + +export default { + component: RelatedIntegrationsReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/related_integrations', +}; + +const mockedIntegrationsData = [ + { + package_name: 'endpoint', + package_title: 'Elastic Defend', + latest_package_version: '8.15.1', + installed_package_version: '8.16.0-prerelease.1', + is_installed: true, + is_enabled: false, + }, +]; + +function MockRelatedIntegrationsData({ children }: { children: React.ReactNode }) { + const queryClient = useQueryClient(); + + queryClient.setQueryData(['integrations'], mockedIntegrationsData); + + return <>{children}; +} + +export const Default = () => ( + + + + + +); + +export const EmptyArrayValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx similarity index 77% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx index b9a7468072782..9fe4176079247 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import { RelatedIntegrationsDescription } from '../../../../../../../../detections/components/rules/related_integrations/integrations_description'; import type { RelatedIntegrationArray } from '../../../../../../../../../common/api/detection_engine'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface RelatedIntegrationsReadOnly { relatedIntegrations: RelatedIntegrationArray; } export function RelatedIntegrationsReadOnly({ relatedIntegrations }: RelatedIntegrationsReadOnly) { - if (!relatedIntegrations.length) { - return null; - } - return ( , + description: relatedIntegrations.length ? ( + + ) : ( + + ), }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx new file mode 100644 index 0000000000000..a4ed34254a211 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { RequiredFieldsReadOnly } from './required_fields'; + +export default { + component: RequiredFieldsReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/required_fields', +}; + +export const Default = () => ( + +); + +export const EmptyArrayValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx similarity index 77% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx index 4d60acc8d5f15..5c6db9ddfd488 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx @@ -10,6 +10,7 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RequiredFieldArray } from '../../../../../../../../../common/api/detection_engine'; import { RequiredFields } from '../../../../rule_definition_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface RequiredFieldsReadOnlyProps { requiredFields: RequiredFieldArray; @@ -21,7 +22,11 @@ export function RequiredFieldsReadOnly({ requiredFields }: RequiredFieldsReadOnl listItems={[ { title: ruleDetailsI18n.REQUIRED_FIELDS_FIELD_LABEL, - description: , + description: requiredFields.length ? ( + + ) : ( + + ), }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx new file mode 100644 index 0000000000000..348a75b563116 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { RiskScoreReadOnly } from './risk_score'; + +export default { + component: RiskScoreReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/risk_score', +}; + +export const Default = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx new file mode 100644 index 0000000000000..8a9a4de7eda6c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { RiskScoreMappingReadOnly } from './risk_score_mapping'; + +export default { + component: RiskScoreMappingReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/risk_score_mapping', +}; + +export const Default = () => ( + +); + +export const EmptyArrayValue = () => ; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx new file mode 100644 index 0000000000000..d1bca5a511e4e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { requiredOptional } from '@kbn/zod-helpers'; +import { EuiDescriptionList } from '@elastic/eui'; +import type { RiskScoreMapping } from '../../../../../../../../../common/api/detection_engine'; +import * as ruleDetailsI18n from '../../../../translations'; +import { RiskScoreMappingItem } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; + +export interface RiskScoreMappingReadProps { + riskScoreMapping: RiskScoreMapping; +} + +export const RiskScoreMappingReadOnly = ({ riskScoreMapping }: RiskScoreMappingReadProps) => { + const nonEmptyRiskScoreMappingItems = riskScoreMapping.filter( + (riskScoreMappingItem) => riskScoreMappingItem.field !== '' + ); + + if (nonEmptyRiskScoreMappingItems.length === 0) { + return ( + , + }, + ]} + /> + ); + } + + const listItems = nonEmptyRiskScoreMappingItems.map((riskScoreMappingItem, index) => ({ + title: index === 0 ? ruleDetailsI18n.RISK_SCORE_MAPPING_FIELD_LABEL : '', + description: ( + + ), + })); + + return ; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx new file mode 100644 index 0000000000000..36167c5c39240 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { RuleNameOverrideReadOnly } from './rule_name_override'; + +export default { + component: RuleNameOverrideReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/rule_name_override', +}; + +export const Default = () => ( + +); + +export const EmptyStringValue = () => ( + +); + +export const NoValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx similarity index 75% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx index 9090138ab91ee..5cf205c732569 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RuleNameOverrideObject } from '../../../../../../../../../common/api/detection_engine'; import { RuleNameOverride } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface RuleNameOverrideReadOnlyProps { ruleNameOverride?: RuleNameOverrideObject; } export function RuleNameOverrideReadOnly({ ruleNameOverride }: RuleNameOverrideReadOnlyProps) { - if (!ruleNameOverride) { - return null; - } - return ( , + description: ruleNameOverride?.field_name ? ( + + ) : ( + + ), }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx new file mode 100644 index 0000000000000..a49735a35b5be --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { RuleScheduleReadOnly } from './rule_schedule'; + +export default { + component: RuleScheduleReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/rule_schedule', +}; + +export const Default = () => ( + +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx new file mode 100644 index 0000000000000..07b3100f9d7ad --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { SetupReadOnly } from './setup'; + +export default { + component: SetupReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/setup', +}; + +export const Default = () => ( + \nAdministrative Templates >\nWindows PowerShell >\nTurn on PowerShell Script Block Logging (Enable)\n```\n\nSteps to implement the logging policy via registry:\n\n```\nreg add "hklm\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1\n```' + } + /> +); + +export const EmptyStringValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx similarity index 85% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx index feeb188da5ae8..52f3bee8988e2 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx @@ -10,22 +10,19 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { SetupGuide } from '../../../../../../../../../common/api/detection_engine'; import { MarkdownRenderer } from '../../../../../../../../common/components/markdown_editor'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface SetupReadOnlyProps { setup: SetupGuide; } export function SetupReadOnly({ setup }: SetupReadOnlyProps) { - if (!setup) { - return null; - } - return ( , + description: setup.trim() ? : , }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx new file mode 100644 index 0000000000000..646a04c1344c7 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { SeverityReadOnly } from './severity'; + +export default { + component: SeverityReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/severity', +}; + +export const Default = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx new file mode 100644 index 0000000000000..cf0ed52c6a8bb --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { SeverityMappingReadOnly } from './severity_mapping'; + +export default { + component: SeverityMappingReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/severity_mapping', +}; + +export const Default = () => ( + +); + +export const EmptyArrayValue = () => ; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx new file mode 100644 index 0000000000000..1f69873c2f486 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiDescriptionList } from '@elastic/eui'; +import type { SeverityMapping } from '../../../../../../../../../common/api/detection_engine'; +import * as ruleDetailsI18n from '../../../../translations'; +import { SeverityMappingItem } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; + +export interface SeverityMappingReadOnlyProps { + severityMapping: SeverityMapping; +} + +export const SeverityMappingReadOnly = ({ severityMapping }: SeverityMappingReadOnlyProps) => { + const nonEmptySeverityMappingItems = severityMapping.filter( + (severityMappingItem) => severityMappingItem.field !== '' + ); + + if (nonEmptySeverityMappingItems.length === 0) { + return ( + , + }, + ]} + /> + ); + } + + const listItems = nonEmptySeverityMappingItems.map((severityMappingItem, index) => ({ + title: index === 0 ? ruleDetailsI18n.SEVERITY_MAPPING_FIELD_LABEL : '', + description: , + })); + + return ; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx new file mode 100644 index 0000000000000..6d35d9059a62d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { TagsReadOnly } from './tags'; + +export default { + component: TagsReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/tags', +}; + +export const Default = () => ( + +); + +export const EmptyArrayValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx similarity index 82% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx index 452b6bf2d8b99..6153adf44653a 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx @@ -10,22 +10,19 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RuleTagArray } from '../../../../../../../../../common/api/detection_engine'; import { Tags } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface TagsReadOnlyProps { tags: RuleTagArray; } export function TagsReadOnly({ tags }: TagsReadOnlyProps) { - if (tags.length === 0) { - return null; - } - return ( , + description: tags.length ? : , }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx new file mode 100644 index 0000000000000..02a847cd335c9 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ThreatReadOnly } from './threat'; + +export default { + component: ThreatReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat', +}; + +export const Default = () => ( + +); + +export const EmptyArrayValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx index ec8ab846f0206..288f815926bbf 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx @@ -10,22 +10,19 @@ import { EuiDescriptionList } from '@elastic/eui'; import type { Threats } from '@kbn/securitysolution-io-ts-alerting-types'; import * as ruleDetailsI18n from '../../../../translations'; import { Threat } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; export interface ThreatReadOnlyProps { threat: Threats; } export const ThreatReadOnly = ({ threat }: ThreatReadOnlyProps) => { - if (threat.length === 0) { - return null; - } - return ( , + description: threat.length ? : , }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx new file mode 100644 index 0000000000000..baf532b0d6ad5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ThreatIndexReadOnly } from './threat_index'; + +export default { + component: ThreatIndexReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_index', +}; + +export const Default = () => ; + +export const EmptyArrayValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx similarity index 75% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx index 23bb2cdfc8bde..492796ad7e73f 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import { ThreatIndex } from '../../../../rule_definition_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; export interface ThreatIndexReadOnlyProps { threatIndex: string[]; @@ -20,7 +21,11 @@ export const ThreatIndexReadOnly = ({ threatIndex }: ThreatIndexReadOnlyProps) = listItems={[ { title: ruleDetailsI18n.THREAT_INDEX_FIELD_LABEL, - description: , + description: threatIndex.length ? ( + + ) : ( + + ), }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx new file mode 100644 index 0000000000000..02372dc538e55 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ThreatIndicatorPathReadOnly } from './threat_indicator_path'; + +export default { + component: ThreatIndicatorPathReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_indicator_path', +}; + +export const Default = () => ; + +export const NoValue = () => ; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx new file mode 100644 index 0000000000000..6c22a84d71169 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiDescriptionList } from '@elastic/eui'; +import * as ruleDetailsI18n from '../../../../translations'; +import { ThreatIndicatorPath } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; + +export interface ThreatIndicatorPathReadOnlyProps { + threatIndicatorPath?: string; +} + +export const ThreatIndicatorPathReadOnly = ({ + threatIndicatorPath, +}: ThreatIndicatorPathReadOnlyProps) => { + return ( + + ) : ( + + ), + }, + ]} + /> + ); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx new file mode 100644 index 0000000000000..42bea4ce552f5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ThreatMappingReadOnly } from './threat_mapping'; + +export default { + component: ThreatMappingReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_mapping', +}; + +export const Default = () => ( + +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx new file mode 100644 index 0000000000000..ab2b48457ba2d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ThreatQueryReadOnly } from './threat_query'; +import { + dataSourceWithDataView, + dataSourceWithIndexPatterns, + inlineKqlQuery, + mockDataView, +} from '../../storybook/mocks'; +import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; + +export default { + component: ThreatQueryReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_query', +}; + +export const ThreatQueryWithIndexPatterns = () => ( + mockDataView(), + }, + }, + }} + > + + +); + +export const ThreatQueryWithDataView = () => ( + mockDataView(), + }, + }, + }} + > + + +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx new file mode 100644 index 0000000000000..882a58237e912 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ThresholdReadOnly } from './threshold'; + +export default { + component: ThresholdReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threshold', +}; + +export const Default = () => ( + +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx new file mode 100644 index 0000000000000..9ca22b21ce192 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { TimelineTemplateReadOnly } from './timeline_template'; + +export default { + component: TimelineTemplateReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/timeline_template', +}; + +export const Default = () => ( + +); + +export const NoValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx similarity index 76% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx index d6cc75cec5843..9514bd95402a5 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { TimelineTemplateReference } from '../../../../../../../../../common/api/detection_engine'; import { TimelineTitle } from '../../../../rule_definition_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface TimelineTemplateReadOnlyProps { timelineTemplate?: TimelineTemplateReference; } export function TimelineTemplateReadOnly({ timelineTemplate }: TimelineTemplateReadOnlyProps) { - if (!timelineTemplate) { - return null; - } - return ( , + description: timelineTemplate ? ( + + ) : ( + + ), }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx new file mode 100644 index 0000000000000..fe4b8420a1a4e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { TimestampOverrideReadOnly } from './timestamp_override'; + +export default { + component: TimestampOverrideReadOnly, + title: + 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/timestamp_override', +}; + +export const Default = () => ( + +); + +export const EmptyStringValue = () => ( + +); + +export const NoValue = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx similarity index 75% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx index 5d4c6ba3e1d2b..20e6fe53180db 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { TimestampOverrideObject } from '../../../../../../../../../common/api/detection_engine'; import { TimestampOverride } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface TimestampOverrideReadOnlyProps { timestampOverride?: TimestampOverrideObject; } export function TimestampOverrideReadOnly({ timestampOverride }: TimestampOverrideReadOnlyProps) { - if (!timestampOverride) { - return null; - } - return ( , + description: timestampOverride?.field_name ? ( + + ) : ( + + ), }, ]} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx new file mode 100644 index 0000000000000..0103bff5a0a0e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { TypeReadOnly } from './type'; + +export default { + component: TypeReadOnly, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/type', +}; + +export const Default = () => ; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/index.ts new file mode 100644 index 0000000000000..4abd3b839ae2f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './field_final_readonly'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/machine_learning_rule_field_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/machine_learning_rule_field_readonly.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/machine_learning_rule_field_readonly.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/machine_learning_rule_field_readonly.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/new_terms_rule_field_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/new_terms_rule_field_readonly.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/new_terms_rule_field_readonly.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/new_terms_rule_field_readonly.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/saved_query_rule_field_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/saved_query_rule_field_readonly.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/saved_query_rule_field_readonly.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/saved_query_rule_field_readonly.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/mocks.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx similarity index 82% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx index 722f5ac9f6ada..4eb14440c056c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx @@ -15,9 +15,6 @@ import type { UpsellingService } from '@kbn/security-solution-upselling/service' import { createKibanaReactContext } from '@kbn/kibana-react-plugin/public'; import { ReactQueryClientProvider } from '../../../../../../../common/containers/query_client/query_client_provider'; import { UpsellingProvider } from '../../../../../../../common/components/upselling_provider'; -import { DiffableRuleContextProvider } from '../../diffable_rule_context'; -import type { DiffableRule } from '../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from './mocks'; function createKibanaServicesMock(overrides?: Partial) { const baseMock = { @@ -72,18 +69,14 @@ function createMockStore() { return store; } -const setRuleFieldResolvedValueMock = () => {}; - interface StorybookProvidersProps { children: React.ReactNode; kibanaServicesOverrides?: Record; - finalDiffableRule?: DiffableRule; } export function ThreeWayDiffStorybookProviders({ children, kibanaServicesOverrides, - finalDiffableRule = mockCustomQueryRule(), }: StorybookProvidersProps) { const kibanaServicesMock = createKibanaServicesMock(kibanaServicesOverrides); const KibanaReactContext = createKibanaReactContext(kibanaServicesMock); @@ -95,12 +88,7 @@ export function ThreeWayDiffStorybookProviders({ - - {children} - + {children} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/threat_match_rule_field_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/threat_match_rule_field_readonly.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/threat_match_rule_field_readonly.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/threat_match_rule_field_readonly.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/threshold_rule_field_readonly.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/threshold_rule_field_readonly.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/threshold_rule_field_readonly.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/threshold_rule_field_readonly.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/index.ts new file mode 100644 index 0000000000000..95e6836ca8f09 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { RuleUpgrade as RuleUpgradeTab } from './rule_upgrade'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade.tsx new file mode 100644 index 0000000000000..4f87cf0ff202a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade.tsx @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiSpacer, useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/css'; +import { SplitAccordion } from '../../../../../../common/components/split_accordion'; +import { FieldComparisonSide } from '../comparison_side/field_comparison_side'; +import { FieldFinalSide } from '../field_final_side'; +import { FieldUpgradeHeader } from './field_upgrade_header'; +import { useFieldUpgradeContext } from './field_upgrade_context'; + +export function FieldUpgrade(): JSX.Element { + const { euiTheme } = useEuiTheme(); + const { fieldName, fieldUpgradeState, hasConflict, isCustomized } = useFieldUpgradeContext(); + + return ( + <> + + } + initialIsOpen={hasConflict} + data-test-subj="ruleUpgradePerFieldDiff" + > + + + + + + + + + + + + + ); +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_context.tsx new file mode 100644 index 0000000000000..fd2811bdcce91 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_context.tsx @@ -0,0 +1,209 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { createContext, useContext, useMemo } from 'react'; +import { isEqual } from 'lodash'; +import { useBoolean } from '@kbn/react-hooks'; +import { assertUnreachable } from '../../../../../../../common/utility_types'; +import { + ThreeWayDiffOutcome, + type DiffableRule, + type FieldsDiff, + type ThreeWayDiff, +} from '../../../../../../../common/api/detection_engine'; +import { invariant } from '../../../../../../../common/utils/invariant'; +import { convertRuleToDiffable } from '../../../../../../../common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable'; +import type { SetRuleFieldResolvedValueFn } from '../../../../model/prebuilt_rule_upgrade/set_rule_field_resolved_value'; +import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; +import type { RuleUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; +import { FieldUpgradeStateEnum } from '../../../../model/prebuilt_rule_upgrade'; + +export enum FieldFinalSideMode { + Readonly = 'readonly', + Edit = 'edit', +} + +interface FieldUpgradeContextType { + /** + * Field name of an upgradable field from DiffableRule + */ + fieldName: UpgradeableDiffableFields; + /** + * Field's upgrade state + */ + fieldUpgradeState: FieldUpgradeStateEnum; + /** + * Whether the field has an unresolved conflict. This state is derived from `fieldUpgradeState`. + */ + hasConflict: boolean; + /** + * Whether field value is different from Elastic's suggestion. + * It's true only if user has made changes to the suggested field value. + */ + hasResolvedValueDifferentFromSuggested: boolean; + /** + * Whether the field was changed after prebuilt rule installation, i.e. customized + * It's true only if user has made changes to the suggested field value. + */ + isCustomized: boolean; + /** + * Field's three way diff + */ + fieldDiff: ThreeWayDiff; + /** + * Current final diffable rule including resolved values + */ + finalDiffableRule: DiffableRule; + /** + * Field final side view mode `Readonly` or `Editing` + */ + rightSideMode: FieldFinalSideMode; + /** + * Sets field's resolved value + */ + setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; + /** + * Sets field's right side `readonly` mode + */ + setReadOnlyMode: () => void; + /** + * Sets field's right side `edit` mode + */ + setEditMode: () => void; +} + +const FieldUpgradeContext = createContext(null); + +interface FieldUpgradeContextProviderProps { + ruleUpgradeState: RuleUpgradeState; + fieldName: UpgradeableDiffableFields; + setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; + children: React.ReactNode; +} + +export function FieldUpgradeContextProvider({ + ruleUpgradeState, + fieldName, + setRuleFieldResolvedValue, + children, +}: FieldUpgradeContextProviderProps) { + const { state: fieldUpgradeState } = ruleUpgradeState.fieldsUpgradeState[fieldName]; + const fieldDiff = ruleUpgradeState.diff.fields[fieldName]; + const initialRightSideMode = + fieldUpgradeState === FieldUpgradeStateEnum.NonSolvableConflict + ? FieldFinalSideMode.Edit + : FieldFinalSideMode.Readonly; + + const [editing, { on: setEditMode, off: setReadOnlyMode }] = useBoolean( + initialRightSideMode === FieldFinalSideMode.Edit + ); + + invariant(fieldDiff, `Field diff is not found for ${fieldName}.`); + + const finalDiffableRule = calcFinalDiffableRule(ruleUpgradeState); + + const contextValue: FieldUpgradeContextType = useMemo( + () => ({ + fieldName, + fieldUpgradeState, + hasConflict: + fieldUpgradeState === FieldUpgradeStateEnum.SolvableConflict || + fieldUpgradeState === FieldUpgradeStateEnum.NonSolvableConflict, + /* + Initially, we prefill the resolved value with the merged version. + If the current resolved value differs from the merged version, it indicates that the user has modified the suggestion. + */ + hasResolvedValueDifferentFromSuggested: !isEqual( + fieldDiff.merged_version, + finalDiffableRule[fieldName] + ), + isCustomized: calcIsCustomized(fieldDiff), + fieldDiff, + finalDiffableRule, + rightSideMode: editing ? FieldFinalSideMode.Edit : FieldFinalSideMode.Readonly, + setRuleFieldResolvedValue, + setReadOnlyMode, + setEditMode, + }), + [ + fieldName, + fieldUpgradeState, + fieldDiff, + finalDiffableRule, + editing, + setRuleFieldResolvedValue, + setReadOnlyMode, + setEditMode, + ] + ); + + return ( + {children} + ); +} + +export function useFieldUpgradeContext() { + const context = useContext(FieldUpgradeContext); + + invariant( + context !== null, + 'useFieldUpgradeContext must be used inside a FieldUpgradeContextProvider' + ); + + return context; +} + +function calcIsCustomized(fieldDiff: ThreeWayDiff): boolean { + switch (fieldDiff.diff_outcome) { + case ThreeWayDiffOutcome.StockValueNoUpdate: + case ThreeWayDiffOutcome.StockValueCanUpdate: + case ThreeWayDiffOutcome.MissingBaseCanUpdate: + case ThreeWayDiffOutcome.MissingBaseNoUpdate: + return false; + + case ThreeWayDiffOutcome.CustomizedValueCanUpdate: + case ThreeWayDiffOutcome.CustomizedValueSameUpdate: + case ThreeWayDiffOutcome.CustomizedValueNoUpdate: + return true; + + default: + return assertUnreachable(fieldDiff.diff_outcome); + } +} + +function calcFinalDiffableRule(ruleUpgradeState: RuleUpgradeState): DiffableRule { + const fieldsResolvedValues = Object.entries(ruleUpgradeState.fieldsUpgradeState).reduce< + Record + >((result, [fieldName, fieldState]) => { + if (fieldState.state === FieldUpgradeStateEnum.Accepted) { + result[fieldName] = fieldState.resolvedValue; + } + + return result; + }, {}); + + return { + ...convertRuleToDiffable(ruleUpgradeState.target_rule), + ...convertRuleFieldsDiffToDiffable(ruleUpgradeState.diff.fields), + ...fieldsResolvedValues, + } as DiffableRule; +} + +/** + * Assembles a `DiffableRule` from rule fields diff `merged_version`s. + */ +function convertRuleFieldsDiffToDiffable( + ruleFieldsDiff: FieldsDiff> +): Partial { + const mergeVersionRule: Record = {}; + + for (const fieldName of Object.keys(ruleFieldsDiff)) { + mergeVersionRule[fieldName] = ruleFieldsDiff[fieldName].merged_version; + } + + return mergeVersionRule; +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_header.tsx new file mode 100644 index 0000000000000..91339e25d5907 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_header.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { camelCase, startCase } from 'lodash'; +import { EuiFlexGroup, EuiTitle } from '@elastic/eui'; +import { fieldToDisplayNameMap } from '../../diff_components/translations'; +import type { FieldUpgradeStateEnum } from '../../../../model/prebuilt_rule_upgrade'; +import { FieldUpgradeStateInfo } from './field_upgrade_state_info'; +import { ModifiedBadge } from '../badges/modified_badge'; +import { FIELD_MODIFIED_BADGE_DESCRIPTION } from './translations'; + +interface FieldUpgradeHeaderProps { + fieldName: string; + fieldUpgradeState: FieldUpgradeStateEnum; + isCustomized: boolean; +} + +export function FieldUpgradeHeader({ + fieldName, + fieldUpgradeState, + isCustomized, +}: FieldUpgradeHeaderProps): JSX.Element { + return ( + + +
{fieldToDisplayNameMap[fieldName] ?? startCase(camelCase(fieldName))}
+
+ + {isCustomized && } + + +
+ ); +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/field_upgrade_state_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/field_upgrade_state_info.tsx new file mode 100644 index 0000000000000..ed2f7050a2c90 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/field_upgrade_state_info.tsx @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import { assertUnreachable } from '../../../../../../../../common/utility_types'; +import { FieldUpgradeStateEnum } from '../../../../../model/prebuilt_rule_upgrade'; +import { ReadyForUpgradeBadge } from '../../badges/ready_for_upgrade_badge'; +import { ReviewRequiredBadge } from '../../badges/review_required_badge'; +import { ActionRequiredBadge } from '../../badges/action_required'; +import * as i18n from './translations'; + +interface FieldUpgradeStateInfoProps { + state: FieldUpgradeStateEnum; +} + +export function FieldUpgradeStateInfo({ state }: FieldUpgradeStateInfoProps): JSX.Element { + const { color, badge, title, description } = useMemo(() => { + switch (state) { + case FieldUpgradeStateEnum.NoUpdate: + return { + color: 'success', + title: i18n.NO_UPDATE, + description: i18n.NO_UPDATE_DESCRIPTION, + }; + + case FieldUpgradeStateEnum.SameUpdate: + return { + color: 'success', + title: i18n.SAME_UPDATE, + description: i18n.SAME_UPDATE_DESCRIPTION, + }; + + case FieldUpgradeStateEnum.NoConflict: + return { + color: 'success', + badge: , + title: i18n.NO_CONFLICT, + description: i18n.NO_CONFLICT_DESCRIPTION, + }; + + case FieldUpgradeStateEnum.Accepted: + return { + color: 'success', + badge: , + title: i18n.REVIEWED_AND_ACCEPTED, + }; + + case FieldUpgradeStateEnum.SolvableConflict: + return { + color: 'warning', + badge: , + title: i18n.SOLVABLE_CONFLICT, + description: i18n.SOLVABLE_CONFLICT_DESCRIPTION, + }; + + case FieldUpgradeStateEnum.NonSolvableConflict: + return { + color: 'danger', + badge: , + title: i18n.NON_SOLVABLE_CONFLICT, + description: i18n.NON_SOLVABLE_CONFLICT_DESCRIPTION, + }; + + default: + return assertUnreachable(state); + } + }, [state]); + + return ( + + + {badge} + + {title} + + + {description && ( + + {i18n.SEPARATOR} {description} + + )} + + + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/translations.tsx new file mode 100644 index 0000000000000..0b67f590d3f64 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/translations.tsx @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const NO_UPDATE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.noUpdate', + { + defaultMessage: 'No update', + } +); + +export const NO_UPDATE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.noUpdateDescription', + { + defaultMessage: + 'The field was modified after rule installation but does not have Elastic update.', + } +); + +export const SAME_UPDATE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.sameUpdate', + { + defaultMessage: 'Matching update', + } +); + +export const SAME_UPDATE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.sameUpdateDescription', + { + defaultMessage: + 'The field was modified after rule installation, and your changes are the same as the update from Elastic.', + } +); + +export const NO_CONFLICT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.noConflict', + { + defaultMessage: 'No conflicts', + } +); + +export const NO_CONFLICT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.noConflictDescription', + { + defaultMessage: 'The update has no conflicts and has been applied to the final update.', + } +); + +export const REVIEWED_AND_ACCEPTED = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.reviewedAndAccepted', + { + defaultMessage: 'Reviewed and accepted', + } +); + +export const SOLVABLE_CONFLICT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict', + { + defaultMessage: 'Solved conflict', + } +); + +export const SOLVABLE_CONFLICT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription', + { + defaultMessage: + 'We have suggested an update for this modified field, please review before accepting.', + } +); + +export const NON_SOLVABLE_CONFLICT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict', + { + defaultMessage: 'Unsolved conflict', + } +); + +export const NON_SOLVABLE_CONFLICT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription', + { + defaultMessage: + 'Unable to suggest a merged version for the update. Current version is provided for you to edit.', + } +); + +export const SEPARATOR = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator', + { + defaultMessage: ' - ', + } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/index.ts new file mode 100644 index 0000000000000..af2bd34a7b6e8 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './rule_upgrade'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade.tsx new file mode 100644 index 0000000000000..73746f3c48211 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade.tsx @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo } from 'react'; +import { EuiSpacer } from '@elastic/eui'; +import { + FieldUpgradeStateEnum, + type RuleUpgradeState, + type SetRuleFieldResolvedValueFn, +} from '../../../../model/prebuilt_rule_upgrade'; +import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; +import { RuleUpgradeInfoBar } from './rule_upgrade_info_bar'; +import { RuleUpgradeCallout } from './rule_upgrade_callout'; +import { FieldUpgrade } from './field_upgrade'; +import { FieldUpgradeContextProvider } from './field_upgrade_context'; + +interface RuleUpgradeProps { + ruleUpgradeState: RuleUpgradeState; + setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; +} + +export const RuleUpgrade = memo(function RuleUpgrade({ + ruleUpgradeState, + setRuleFieldResolvedValue, +}: RuleUpgradeProps): JSX.Element { + const totalNumOfFields = calcTotalNumOfFields(ruleUpgradeState); + const numOfFieldsWithUpdates = calcNumOfFieldsWithUpdates(ruleUpgradeState); + const numOfSolvableConflicts = calcNumOfSolvableConflicts(ruleUpgradeState); + const numOfNonSolvableConflicts = calcNumOfNonSolvableConflicts(ruleUpgradeState); + const fieldNames = Object.keys( + ruleUpgradeState.fieldsUpgradeState + ) as UpgradeableDiffableFields[]; + + return ( + <> + + + + + + {fieldNames.map((fieldName) => ( + + + + ))} + + ); +}); + +function calcTotalNumOfFields(ruleUpgradeState: RuleUpgradeState): number { + return Object.keys(ruleUpgradeState.fieldsUpgradeState).length; +} + +function calcNumOfFieldsWithUpdates(ruleUpgradeState: RuleUpgradeState): number { + return Object.values(ruleUpgradeState.fieldsUpgradeState).filter( + ({ state }) => state !== FieldUpgradeStateEnum.NoUpdate + ).length; +} + +function calcNumOfSolvableConflicts(ruleUpgradeState: RuleUpgradeState): number { + return Object.values(ruleUpgradeState.fieldsUpgradeState).filter( + ({ state }) => state === FieldUpgradeStateEnum.SolvableConflict + ).length; +} + +function calcNumOfNonSolvableConflicts(ruleUpgradeState: RuleUpgradeState): number { + return Object.values(ruleUpgradeState.fieldsUpgradeState).filter( + ({ state }) => state === FieldUpgradeStateEnum.NonSolvableConflict + ).length; +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_callout.tsx new file mode 100644 index 0000000000000..3b3c0c7e49e51 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_callout.tsx @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiCallOut } from '@elastic/eui'; +import { ActionRequiredBadge } from '../badges/action_required'; +import { ReviewRequiredBadge } from '../badges/review_required_badge'; +import { ReadyForUpgradeBadge } from '../badges/ready_for_upgrade_badge'; +import * as i18n from './translations'; + +interface RuleUpgradeCalloutProps { + numOfSolvableConflicts: number; + numOfNonSolvableConflicts: number; +} + +export function RuleUpgradeCallout({ + numOfSolvableConflicts, + numOfNonSolvableConflicts, +}: RuleUpgradeCalloutProps): JSX.Element { + if (numOfNonSolvableConflicts > 0) { + return ( + + {i18n.UPGRADE_STATUS} +   + +   + {i18n.RULE_HAS_CONFLICTS(numOfNonSolvableConflicts + numOfSolvableConflicts)} + + } + color="danger" + size="s" + > +

{i18n.RULE_HAS_HARD_CONFLICTS_DESCRIPTION}

+
+ ); + } + + if (numOfSolvableConflicts > 0) { + return ( + + {i18n.UPGRADE_STATUS} +   + +   + {i18n.RULE_HAS_CONFLICTS(numOfSolvableConflicts)} + + } + color="warning" + size="s" + > +

{i18n.RULE_HAS_SOFT_CONFLICTS_DESCRIPTION}

+
+ ); + } + + return ( + + {i18n.UPGRADE_STATUS} +   + + + } + color="success" + size="s" + > +

{i18n.RULE_IS_READY_FOR_UPGRADE_DESCRIPTION}

+
+ ); +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_info_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_info_bar.tsx new file mode 100644 index 0000000000000..3520734b2b257 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_info_bar.tsx @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { + UtilityBar, + UtilityBarGroup, + UtilityBarSection, + UtilityBarText, +} from '../../../../../../common/components/utility_bar'; +import * as i18n from './translations'; + +interface RuleUpgradeInfoBarProps { + totalNumOfFields: number; + numOfFieldsWithUpdates: number; + numOfConflicts: number; +} + +export function RuleUpgradeInfoBar({ + totalNumOfFields, + numOfFieldsWithUpdates, + numOfConflicts, +}: RuleUpgradeInfoBarProps): JSX.Element { + return ( + + + + + {i18n.TOTAL_NUM_OF_FIELDS(totalNumOfFields)} + + + + + {i18n.NUM_OF_FIELDS_WITH_UPDATES(numOfFieldsWithUpdates)} + + + + + {i18n.NUM_OF_CONFLICTS(numOfConflicts)} + + + + + + + + + + ); +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/translations.tsx new file mode 100644 index 0000000000000..a54ced917de54 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/translations.tsx @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useKibana } from '../../../../../../common/lib/kibana/kibana_react'; + +export const TOTAL_NUM_OF_FIELDS = (count: number) => ( + {count}, count }} + /> +); + +export const NUM_OF_FIELDS_WITH_UPDATES = (count: number) => ( + {count}, count }} + /> +); + +export const NUM_OF_CONFLICTS = (count: number) => ( + {count}, count }} + /> +); + +const UPGRADE_RULES_DOCS_LINK = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink', + { + defaultMessage: 'update your rules', + } +); + +export function RuleUpgradeHelper(): JSX.Element { + const { + docLinks: { + links: { + securitySolution: { manageDetectionRules }, + }, + }, + } = useKibana().services; + const manageDetectionRulesUpdateRulesSection = `${manageDetectionRules}#edit-rules-settings`; + + return ( + + {UPGRADE_RULES_DOCS_LINK} + + ), + }} + /> + ); +} + +export const UPGRADE_STATUS = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.upgradeStatusTitle', + { + defaultMessage: 'Update status:', + } +); + +export const RULE_HAS_CONFLICTS = (count: number) => + i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasConflicts', + { + values: { count }, + defaultMessage: + '{count} {count, plural, one {field has a conflict} other {fields have conflicts}}. Please review and provide a final update.', + } + ); + +export const RULE_HAS_SOFT_CONFLICTS_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSoftConflictsDescription', + { + defaultMessage: + 'Please review and accept conflicts. You can also keep the current version without the updates, or accept the Elastic update but lose your modifications.', + } +); + +export const RULE_HAS_HARD_CONFLICTS_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasHardConflictsDescription', + { + defaultMessage: + 'Please provide an input for the conflicts. You can also keep the current version without the updates, or accept the Elastic update but lose your modifications.', + } +); + +export const RULE_IS_READY_FOR_UPGRADE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription', + { + defaultMessage: 'There are no conflicts and the update is ready to be applied.', + } +); + +export const FIELD_MODIFIED_BADGE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.fieldModifiedBadgeDescription', + { + defaultMessage: + "The field value was edited after rule's installation and differs from the value upon installation", + } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts new file mode 100644 index 0000000000000..c5183626a63a7 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts @@ -0,0 +1,421 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const OVERVIEW_TAB_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.overviewTabLabel', + { + defaultMessage: 'Overview', + } +); + +export const INVESTIGATION_GUIDE_TAB_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.investigationGuideTabLabel', + { + defaultMessage: 'Investigation guide', + } +); + +export const UPDATES_TAB_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.updatesTabLabel', + { + defaultMessage: 'Updates', + } +); + +export const JSON_VIEW_UPDATES_TAB_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.jsonViewUpdatesTabLabel', + { + defaultMessage: 'JSON view', + } +); + +export const DISMISS_BUTTON_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.dismissButtonLabel', + { + defaultMessage: 'Dismiss', + } +); + +export const ABOUT_SECTION_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.aboutSectionLabel', + { + defaultMessage: 'About', + } +); + +export const DEFINITION_SECTION_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.definitionSectionLabel', + { + defaultMessage: 'Definition', + } +); + +export const SCHEDULE_SECTION_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.scheduleSectionLabel', + { + defaultMessage: 'Schedule', + } +); + +export const SETUP_GUIDE_SECTION_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.setupGuideSectionLabel', + { + defaultMessage: 'Setup guide', + } +); + +export const NAME_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.nameFieldLabel', + { + defaultMessage: 'Name', + } +); + +export const DESCRIPTION_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.descriptionFieldLabel', + { + defaultMessage: 'Description', + } +); + +export const ALERT_SUPPRESSION_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.alertSuppressionFieldLabel', + { + defaultMessage: 'Alert suppression', + } +); + +export const AUTHOR_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.authorFieldLabel', + { + defaultMessage: 'Author', + } +); + +export const BUILDING_BLOCK_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldLabel', + { + defaultMessage: 'Building block', + } +); + +export const BUILDING_BLOCK_ENABLED_FIELD_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldDescription', + { + defaultMessage: 'All generated alerts will be marked as "building block" alerts', + } +); + +export const BUILDING_BLOCK_DISABLED_FIELD_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockDisabledFieldDescription', + { + defaultMessage: 'Will not mark alerts as "building block" alerts', + } +); + +export const DATA_SOURCE_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.dataSourceFieldLabel', + { + defaultMessage: 'Data source', + } +); + +export const SEVERITY_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.severityFieldLabel', + { + defaultMessage: 'Severity', + } +); + +export const SEVERITY_MAPPING_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.severityMappingFieldLabel', + { + defaultMessage: 'Severity override', + } +); + +export const RISK_SCORE_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.riskScoreFieldLabel', + { + defaultMessage: 'Risk score', + } +); + +export const RISK_SCORE_MAPPING_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.riskScoreMappingFieldLabel', + { + defaultMessage: 'Risk score override', + } +); + +export const REFERENCES_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.referencesFieldLabel', + { + defaultMessage: 'Reference URLs', + } +); + +export const FALSE_POSITIVES_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.falsePositivesFieldLabel', + { + defaultMessage: 'False positive examples', + } +); + +export const INVESTIGATION_FIELDS_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.investigationFieldsFieldLabel', + { + defaultMessage: 'Custom highlighted fields', + } +); + +export const LICENSE_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.licenseFieldLabel', + { + defaultMessage: 'License', + } +); + +export const RULE_NAME_OVERRIDE_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.ruleNameOverrideFieldLabel', + { + defaultMessage: 'Rule name override', + } +); + +export const RULE_NAME_OVERRIDE_DISABLED_FIELD_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.ruleNameOverrideDisabledFieldDescription', + { + defaultMessage: 'Rule name will not be overridden', + } +); + +export const THREAT_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.threatFieldLabel', + { + defaultMessage: 'MITRE ATT&CK\u2122', + } +); + +export const THREAT_INDICATOR_PATH_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.threatIndicatorPathFieldLabel', + { + defaultMessage: 'Indicator prefix override', + } +); + +export const TIMESTAMP_OVERRIDE_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.timestampOverrideFieldLabel', + { + defaultMessage: 'Timestamp override', + } +); + +export const TAGS_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.tagsFieldLabel', + { + defaultMessage: 'Tags', + } +); + +export const INDEX_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.indexFieldLabel', + { + defaultMessage: 'Index patterns', + } +); + +export const DATA_VIEW_ID_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.dataViewIdFieldLabel', + { + defaultMessage: 'Data view ID', + } +); + +export const DATA_VIEW_INDEX_PATTERN_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.dataViewIndexPatternFieldLabel', + { + defaultMessage: 'Data view index pattern', + } +); + +export const DATA_VIEW_INDEX_PATTERN_FETCH_ERROR_MESSAGE = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.dataViewIndexPatternFetchErrorMessage', + { + defaultMessage: 'Could not load data view index pattern', + } +); + +export const RULE_TYPE_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.ruleTypeFieldLabel', + { + defaultMessage: 'Rule type', + } +); + +export const THRESHOLD_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.thresholdFieldLabel', + { + defaultMessage: 'Threshold', + } +); + +export const MACHINE_LEARNING_JOB_ID_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.machineLearningJobIdFieldLabel', + { + defaultMessage: 'Machine Learning job', + } +); + +export const ANOMALY_THRESHOLD_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.anomalyThresholdFieldLabel', + { + defaultMessage: 'Anomaly score threshold', + } +); + +export const RELATED_INTEGRATIONS_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.relatedIntegrationsFieldLabel', + { + defaultMessage: 'Related integrations', + } +); + +export const REQUIRED_FIELDS_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.requiredFieldsFieldLabel', + { + defaultMessage: 'Required fields', + } +); + +export const TIMELINE_TITLE_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.timelineTitleFieldLabel', + { + defaultMessage: 'Timeline template', + } +); + +export const THREAT_INDEX_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.threatIndexFieldLabel', + { + defaultMessage: 'Indicator index patterns', + } +); + +export const THREAT_MAPPING_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.threatMappingFieldLabel', + { + defaultMessage: 'Indicator mapping', + } +); + +export const THREAT_FILTERS_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.threatFiltersFieldLabel', + { + defaultMessage: 'Indicator filters', + } +); + +export const SUPPRESS_ALERTS_BY_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.suppressAlertsByFieldLabel', + { + defaultMessage: 'Suppress alerts by', + } +); + +export const SUPPRESS_ALERTS_DURATION_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.suppressAlertsForFieldLabel', + { + defaultMessage: 'Suppress alerts for', + } +); + +export const SUPPRESSION_FIELD_MISSING_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.suppressionFieldMissingFieldLabel', + { + defaultMessage: 'If a suppression field is missing', + } +); + +export const NEW_TERMS_FIELDS_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.newTermsFieldsFieldLabel', + { + defaultMessage: 'Fields', + } +); + +export const HISTORY_WINDOW_SIZE_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.historyWindowSizeFieldLabel', + { + defaultMessage: 'History Window Size', + } +); + +export const INTERVAL_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.intervalFieldLabel', + { + defaultMessage: 'Runs every', + } +); + +export const FROM_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.fromFieldLabel', + { + defaultMessage: 'Additional look-back time', + } +); + +export const MAX_SIGNALS_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.maxAlertsFieldLabel', + { + defaultMessage: 'Max alerts per run', + } +); + +export const MODIFIED_PREBUILT_RULE_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.customizedPrebuiltRuleLabel', + { + defaultMessage: 'Modified Elastic rule', + } +); + +export const QUERY_LANGUAGE_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.queryLanguageLabel', + { + defaultMessage: 'Custom query language', + } +); + +export const THREAT_QUERY_LANGUAGE_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.threatQueryLanguageLabel', + { + defaultMessage: 'Indicator index query language', + } +); + +export const SAVED_QUERY_LANGUAGE_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.savedQueryLanguageLabel', + { + defaultMessage: 'Saved query language', + } +); + +export const KUERY_LANGUAGE_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.kqlLanguageLabel', + { + defaultMessage: 'KQL', + } +); + +export const LUCENE_LANGUAGE_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.luceneLanguageLabel', + { + defaultMessage: 'Lucene', + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/rule_snooze_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/rule_snooze_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/rule_snooze_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/rule_snooze_badge.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/use_rule_snooze_settings.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/use_rule_snooze_settings.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/use_rule_snooze_settings.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/components/rule_snooze_badge/use_rule_snooze_settings.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/hooks/use_default_index_pattern.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/hooks/use_default_index_pattern.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/hooks/use_default_index_pattern.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/hooks/use_default_index_pattern.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/hooks/use_is_prebuilt_rules_customization_enabled.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/hooks/use_is_prebuilt_rules_customization_enabled.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/hooks/use_is_prebuilt_rules_customization_enabled.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/hooks/use_is_prebuilt_rules_customization_enabled.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/__mocks__/use_bulk_export.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/__mocks__/use_bulk_export.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/__mocks__/use_bulk_export.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/__mocks__/use_bulk_export.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/__mocks__/use_execute_bulk_action.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/__mocks__/use_execute_bulk_action.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/__mocks__/use_execute_bulk_action.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/__mocks__/use_execute_bulk_action.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_bulk_export.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_guess_rule_ids_for_bulk_action.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_guess_rule_ids_for_bulk_action.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_guess_rule_ids_for_bulk_action.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_guess_rule_ids_for_bulk_action.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_error_toast.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_error_toast.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_error_toast.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_error_toast.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_success_toast.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_success_toast.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_success_toast.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/bulk_actions/use_show_bulk_success_toast.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_dashboard_model.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_dashboard_model.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_dashboard_model.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_dashboard_model.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_dashboard_model.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_dashboard_model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_dashboard_model.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_dashboard_model.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_mitre_graph.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_mitre_graph.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_mitre_graph.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_mitre_graph.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_mitre_graph.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_mitre_graph.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_mitre_graph.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/coverage_overview/build_coverage_overview_mitre_graph.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/mock.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_install.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_install.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_install.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_install.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_upgrade.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_upgrade.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_upgrade.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_perform_rule_upgrade.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_install_review.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_install_review.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_install_review.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_install_review.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_status.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_status.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_status.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_status.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_upgrade_review.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_upgrade_review.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_upgrade_review.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_upgrade_review.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_create_rule.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_create_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_create_rule.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_create_rule.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_disassociate_exception_list.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_disassociate_exception_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_disassociate_exception_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_disassociate_exception_list.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_dissasociate_exception_list.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_dissasociate_exception_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_dissasociate_exception_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_dissasociate_exception_list.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_find_rules.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_find_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_find_rules.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_find_rules.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_fields.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_fields.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_indices.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_indices.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_indices.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_indices.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_indices.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_indices.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_indices.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_indices.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_management_filters.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_management_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_management_filters.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_management_filters.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_with_fallback.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_with_fallback.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_with_fallback.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_with_fallback.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_with_fallback.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_with_fallback.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_with_fallback.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_rule_with_fallback.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_start_ml_jobs.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_start_ml_jobs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_start_ml_jobs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_start_ml_jobs.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_update_rule.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_update_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_update_rule.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_update_rule.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_security_packages.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_security_packages.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_security_packages.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/logic/use_upgrade_security_packages.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/dashboard.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/dashboard.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/dashboard.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/dashboard.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_subtechnique.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_subtechnique.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_subtechnique.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_subtechnique.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_subtechnique.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_subtechnique.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_subtechnique.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_subtechnique.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_tactic.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_tactic.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_tactic.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_tactic.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_technique.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_technique.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_technique.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_technique.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_technique.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_technique.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_technique.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/mitre_technique.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/rule.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/rule.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/rule.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/coverage_overview/rule.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state_enum.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state_enum.ts new file mode 100644 index 0000000000000..241bb1221a6f3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state_enum.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export enum FieldUpgradeStateEnum { + NoUpdate = 'NO_UPDATE', + SameUpdate = 'SAME_UPDATE', + NoConflict = 'NO_CONFLICT', + Accepted = 'ACCEPTED', + SolvableConflict = 'SOLVABLE_CONFLICT', + NonSolvableConflict = 'NON_SOLVABLE_CONFLICT', +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts new file mode 100644 index 0000000000000..88522bf559050 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DiffableAllFields } from '../../../../../common/api/detection_engine'; +import type { FieldUpgradeStateEnum } from './field_upgrade_state_enum'; + +export type FieldsUpgradeState = Record< + string, + | { + state: Exclude; + } + | { + state: FieldUpgradeStateEnum.Accepted; + resolvedValue: DiffableAllFields[keyof DiffableAllFields]; + } +>; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts new file mode 100644 index 0000000000000..0e5a631fde2e2 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './field_upgrade_state_enum'; +export * from './fields_upgrade_state'; +export * from './rule_upgrade_state'; +export * from './rules_upgrade_state'; +export * from './set_rule_field_resolved_value'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts new file mode 100644 index 0000000000000..7cd1f9c9ef843 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { type RuleUpgradeInfoForReview } from '../../../../../common/api/detection_engine'; +import type { FieldsUpgradeState } from './fields_upgrade_state'; + +export interface RuleUpgradeState extends RuleUpgradeInfoForReview { + /** + * Stores a record of customizable field names mapped to field upgrade state. + */ + fieldsUpgradeState: FieldsUpgradeState; + /** + * Indicates whether there are conflicts blocking rule upgrading. + */ + hasUnresolvedConflicts: boolean; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rules_upgrade_state.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rules_upgrade_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rules_upgrade_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rules_upgrade_state.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/set_rule_field_resolved_value.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/set_rule_field_resolved_value.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/set_rule_field_resolved_value.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/set_rule_field_resolved_value.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/rule_details/rule_field_diff.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/rule_details/rule_field_diff.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/model/rule_details/rule_field_diff.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management/model/rule_details/rule_field_diff.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/auto_refresh_button/auto_refresh_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/auto_refresh_button/auto_refresh_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/auto_refresh_button/auto_refresh_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/auto_refresh_button/auto_refresh_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/auto_refresh_button/auto_refresh_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/auto_refresh_button/auto_refresh_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/auto_refresh_button/auto_refresh_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/auto_refresh_button/auto_refresh_button.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/mini_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/mini_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/mini_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/mini_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/mini_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/mini_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/mini_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/mini_callout.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/mini_callout/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/ml_rule_warning_popover/ml_rule_warning_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/ml_rule_warning_popover/ml_rule_warning_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/ml_rule_warning_popover/ml_rule_warning_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/ml_rule_warning_popover/ml_rule_warning_popover.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rule_update_callouts/rule_update_callouts.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rule_update_callouts/rule_update_callouts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rule_update_callouts/rule_update_callouts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rule_update_callouts/rule_update_callouts.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/__mocks__/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/__mocks__/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/__mocks__/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/__mocks__/mock.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_header_buttons.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_header_buttons.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_header_buttons.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_header_buttons.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_install_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_install_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_install_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_install_button.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_no_items_message.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_no_items_message.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_no_items_message.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_no_items_message.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_context.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_filters.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_filters.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_filters.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_table_filters.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/add_prebuilt_rules_utils.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx similarity index 99% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx index a0a317e72b4c2..4e15de4011fab 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx @@ -55,7 +55,7 @@ export const RULE_NAME_COLUMN: TableColumn = { field: 'name', name: i18n.COLUMN_RULE, render: (value: RuleResponse['name'], rule: RuleResponse) => ( - + ), sortable: true, truncateText: true, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_filter_prebuilt_rules_to_install.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_filter_prebuilt_rules_to_install.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_filter_prebuilt_rules_to_install.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_filter_prebuilt_rules_to_install.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/alternative_tour/tour.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/alternative_tour/tour.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/alternative_tour/tour.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/alternative_tour/tour.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/alternative_tour/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/alternative_tour/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/alternative_tour/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/alternative_tour/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_dry_run_confirmation.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_dry_run_confirmation.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_dry_run_confirmation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_dry_run_confirmation.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_action_rule_errors_list.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_duplicate_exceptions_confirmation.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_duplicate_exceptions_confirmation.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_duplicate_exceptions_confirmation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_duplicate_exceptions_confirmation.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_edit_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_edit_flyout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_edit_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_edit_flyout.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_manual_rule_run_limit_error_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_manual_rule_run_limit_error_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_manual_rule_run_limit_error_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/bulk_manual_rule_run_limit_error_modal.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/bulk_edit_form_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/bulk_edit_form_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/bulk_edit_form_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/bulk_edit_form_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/index_patterns_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/index_patterns_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/index_patterns_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/index_patterns_form.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/investigation_fields_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/investigation_fields_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/investigation_fields_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/investigation_fields_form.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/rule_actions_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/rule_actions_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/rule_actions_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/rule_actions_form.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/schedule_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/schedule_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/schedule_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/schedule_form.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/tags_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/tags_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/tags_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/tags_form.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/timeline_template_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/timeline_template_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/timeline_template_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/forms/timeline_template_form.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/types.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_confirmation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_confirmation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_confirmation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_confirmation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_dry_run.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_dry_run.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_dry_run.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions_dry_run.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_duplicate_confirmation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_duplicate_confirmation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_duplicate_confirmation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_duplicate_confirmation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_edit_form_flyout.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_edit_form_flyout.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_edit_form_flyout.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_edit_form_flyout.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/compute_dry_run_edit_payload.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/dry_run_result.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/dry_run_result.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/dry_run_result.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/dry_run_result.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/prepare_search_params.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/prepare_search_params.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/prepare_search_params.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/prepare_search_params.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/prepare_search_params.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/prepare_search_params.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/prepare_search_params.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/utils/prepare_search_params.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/constants.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/README.md b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/README.md similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/README.md rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/README.md diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/rules_feature_tour.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/rules_feature_tour.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/rules_feature_tour.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/rules_feature_tour.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/feature_tour/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/ml_rule_warning_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/ml_rule_warning_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/ml_rule_warning_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/ml_rule_warning_popover.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/popover_tooltip.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/popover_tooltip.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/popover_tooltip.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/popover_tooltip.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_changelog_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_changelog_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_changelog_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_changelog_link.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/mock_rules_table_persistent_state.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/mock_rules_table_persistent_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/mock_rules_table_persistent_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/mock_rules_table_persistent_state.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/rules_table_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/rules_table_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/rules_table_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/rules_table_context.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/use_is_element_mounted.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/use_is_element_mounted.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/use_is_element_mounted.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/use_is_element_mounted.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_defaults.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_defaults.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_defaults.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_defaults.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_saved_state.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_saved_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_saved_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_saved_state.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_async_confirmation.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_async_confirmation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_async_confirmation.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_async_confirmation.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_rules_table_saved_state.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_sync_rules_table_saved_state.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_sync_rules_table_saved_state.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_sync_rules_table_saved_state.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_sync_rules_table_saved_state.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_sync_rules_table_saved_state.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_sync_rules_table_saved_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_sync_rules_table_saved_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table/use_sync_rules_table_saved_state.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_empty_column_name.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_empty_column_name.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_empty_column_name.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_empty_column_name.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_execution_status_selector.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_execution_status_selector.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_execution_status_selector.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_execution_status_selector.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_search_field.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_search_field.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_search_field.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_search_field.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_search_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_search_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_search_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rule_search_field.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rules_table_filters.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rules_table_filters.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rules_table_filters.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/rules_table_filters.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/tags_filter_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/tags_filter_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/tags_filter_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/tags_filter_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/tags_filter_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/tags_filter_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/tags_filter_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_filters/tags_filter_popover.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_toolbar.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_toolbar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_toolbar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_table_toolbar.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_tables.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_tables.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_tables.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/rules_tables.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/table_header_tooltip_cell.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/table_header_tooltip_cell.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/table_header_tooltip_cell.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/table_header_tooltip_cell.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/table_header_tooltip_cell.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/table_header_tooltip_cell.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/table_header_tooltip_cell.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/table_header_tooltip_cell.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx new file mode 100644 index 0000000000000..0111ceb40d38f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiCallOut } from '@elastic/eui'; +import { + RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION, + RULE_TYPE_CHANGE_CALLOUT_TITLE, + RULE_TYPE_CHANGE_WITH_CUSTOMIZATIONS_CALLOUT_DESCRIPTION, +} from './translations'; + +interface RuleTypeChangeCalloutProps { + hasCustomizations: boolean; +} + +export function RuleTypeChangeCallout({ + hasCustomizations, +}: RuleTypeChangeCalloutProps): JSX.Element { + return ( + +

+ {hasCustomizations + ? RULE_TYPE_CHANGE_WITH_CUSTOMIZATIONS_CALLOUT_DESCRIPTION + : RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION} +

+
+ ); +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.tsx new file mode 100644 index 0000000000000..4bcf0bd0a3b68 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.tsx @@ -0,0 +1,142 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import type { ReactNode } from 'react'; + +export const UPDATE_ALL = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll', + { + defaultMessage: 'Update all', + } +); + +export const UPDATE_SELECTED_RULES = (numberOfSelectedRules: number) => { + return i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected', + { + defaultMessage: 'Update {numberOfSelectedRules} selected rule(s)', + values: { numberOfSelectedRules }, + } + ); +}; + +export const BULK_UPDATE_BUTTON_TOOLTIP_NO_PERMISSIONS = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.noPermissions', + { + defaultMessage: "You don't have permissions to update rules", + } +); + +export const BULK_UPDATE_ALL_RULES_BUTTON_TOOLTIP_CONFLICTS = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.allRules.conflicts', + { + defaultMessage: 'All rules have conflicts. Update them individually.', + } +); + +export const BULK_UPDATE_SELECTED_RULES_BUTTON_TOOLTIP_CONFLICTS = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.selectedRules.conflicts', + { + defaultMessage: 'All selected rules have conflicts. Update them individually.', + } +); + +export const SEARCH_PLACEHOLDER = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder', + { + defaultMessage: 'Search by rule name', + } +); + +export const UPDATE_BUTTON_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.updateButtonLabel', + { + defaultMessage: 'Update', + } +); +export const UPDATE_ERROR = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.updateError', + { + defaultMessage: 'Update error', + } +); + +export const UPDATE_FLYOUT_PER_FIELD_TOOLTIP_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.perFieldTooltip', + { + defaultMessage: 'View changes field by field.', + } +); + +export const UPDATE_FLYOUT_JSON_VIEW_TOOLTIP_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.jsonViewTooltip', + { + defaultMessage: 'View the latest rule changes in JSON format.', + } +); + +export const RULE_TYPE_CHANGE_CALLOUT_TITLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeCalloutTitle', + { + defaultMessage: 'Rule type change', + } +); + +export const RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeCalloutDescription', + { + defaultMessage: 'Elastic update has rule type changed.', + } +); + +export const RULE_TYPE_CHANGE_WITH_CUSTOMIZATIONS_CALLOUT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeWithCustomizationCalloutDescription', + { + defaultMessage: + 'Your customization will be lost at update. Please take note of your customization or clone this rule before updating.', + } +); + +export const LAST_UPDATE = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.header.lastUpdate', + { + defaultMessage: 'Last update', + } +); + +export const UPDATED_BY_AND_WHEN = (updatedBy: ReactNode, updatedAt: ReactNode) => ( + +); + +export const SEVERITY = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.header.severity', + { + defaultMessage: 'Severity', + } +); + +export const FIELD_UPDATES = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.header.fieldUpdates', + { + defaultMessage: 'Field updates', + } +); + +export const RULE_MODIFIED_BADGE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.ruleModifiedBadgeDescription', + { + defaultMessage: + 'The rule was edited after installation and field values differs from the values upon installation', + } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_flyout_subheader.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_flyout_subheader.tsx new file mode 100644 index 0000000000000..bab43e55c2e00 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_flyout_subheader.tsx @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText } from '@elastic/eui'; +import { camelCase, startCase } from 'lodash'; +import type { FieldsDiff } from '../../../../../../common/api/detection_engine'; +import { FormattedDate } from '../../../../../common/components/formatted_date'; +import { SeverityBadge } from '../../../../../common/components/severity_badge'; +import { ModifiedBadge } from '../../../../rule_management/components/rule_details/three_way_diff/badges/modified_badge'; +import type { RuleUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; +import { fieldToDisplayNameMap } from '../../../../rule_management/components/rule_details/diff_components/translations'; +import * as i18n from './translations'; + +interface UpgradeFlyoutSubHeaderProps { + ruleUpgradeState: RuleUpgradeState; +} + +export const UpgradeFlyoutSubHeader = memo(function UpgradeFlyoutSubHeader({ + ruleUpgradeState, +}: UpgradeFlyoutSubHeaderProps): JSX.Element { + const lastUpdate = ( + + + {i18n.LAST_UPDATE} + {':'} + {' '} + {i18n.UPDATED_BY_AND_WHEN( + ruleUpgradeState.current_rule.updated_by, + + )} + + ); + + const severity = ( + + + + {i18n.SEVERITY} + {':'} + + + + + ); + + const customized = ruleUpgradeState.current_rule.rule_source.type === 'external' && + ruleUpgradeState.current_rule.rule_source.is_customized && ( + + ); + + const fieldsDiff: FieldsDiff> = ruleUpgradeState.diff.fields; + const fieldsNamesWithUpdates = Object.keys(ruleUpgradeState.fieldsUpgradeState).filter( + (fieldName) => fieldsDiff[fieldName].has_update + ); + const fieldUpdates = !fieldsDiff.type && fieldsNamesWithUpdates.length > 0 && ( + + + {i18n.FIELD_UPDATES} + {':'} + {' '} + {fieldsNamesWithUpdates + .map((fieldName) => fieldToDisplayNameMap[fieldName] ?? startCase(camelCase(fieldName))) + .join(', ')} + + ); + + return ( + <> + + {lastUpdate} + {severity} + + + + {customized && {customized}} + {fieldUpdates} + + + ); +}); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx index 2437a5e87866d..623f36c5ebb1d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx @@ -15,7 +15,7 @@ import { EuiSkeletonText, EuiSkeletonTitle, } from '@elastic/eui'; -import React, { useMemo, useState } from 'react'; +import React, { useState } from 'react'; import type { RuleUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations'; import { RULES_TABLE_INITIAL_PAGE_SIZE, RULES_TABLE_PAGE_SIZE_OPTIONS } from '../constants'; @@ -38,22 +38,17 @@ const NO_ITEMS_MESSAGE = ( * Table Component for displaying rules that have available updates */ export const UpgradePrebuiltRulesTable = React.memo(() => { - const upgradeRulesTableContext = useUpgradePrebuiltRulesTableContext(); - const [selected, setSelected] = useState([]); - const { state: { - rulesUpgradeState, + ruleUpgradeStates, hasRulesToUpgrade, isLoading, isRefetching, isUpgradingSecurityPackages, }, - } = upgradeRulesTableContext; - const ruleUpgradeStatesArray = useMemo( - () => Object.values(rulesUpgradeState), - [rulesUpgradeState] - ); + } = useUpgradePrebuiltRulesTableContext(); + const [selected, setSelected] = useState([]); + const rulesColumns = useUpgradePrebuiltRulesTableColumns(); const shouldShowProgress = isUpgradingSecurityPackages || isRefetching; @@ -102,7 +97,7 @@ export const UpgradePrebuiltRulesTable = React.memo(() => { { const { state: { - ruleUpgradeInfos, + ruleUpgradeStates, hasRulesToUpgrade, loadingRules, isRefetching, isUpgradingSecurityPackages, isPrebuiltRulesCustomizationEnabled, }, - actions: { upgradeRules }, + actions: { upgradeRules, upgradeAllRules }, } = useUpgradePrebuiltRulesTableContext(); const [{ loading: isUserDataLoading, canUserCRUD }] = useUserData(); const canUserEditRules = canUserCRUD && !isUserDataLoading; @@ -38,10 +38,13 @@ export const UpgradePrebuiltRulesTableButtons = ({ const isRuleUpgrading = loadingRules.length > 0; const isRequestInProgress = isRuleUpgrading || isRefetching || isUpgradingSecurityPackages; + const doAllSelectedRulesHaveConflicts = - isPrebuiltRulesCustomizationEnabled && isAllRuleHaveConflicts(selectedRules); + isPrebuiltRulesCustomizationEnabled && + selectedRules.every(({ hasUnresolvedConflicts }) => hasUnresolvedConflicts); const doAllRulesHaveConflicts = - isPrebuiltRulesCustomizationEnabled && isAllRuleHaveConflicts(ruleUpgradeInfos); + isPrebuiltRulesCustomizationEnabled && + ruleUpgradeStates.every(({ hasUnresolvedConflicts }) => hasUnresolvedConflicts); const { selectedRulesButtonTooltip, allRulesButtonTooltip } = useBulkUpdateButtonsTooltipContent({ canUserEditRules, @@ -55,12 +58,6 @@ export const UpgradePrebuiltRulesTableButtons = ({ [selectedRules, upgradeRules] ); - const upgradeAllRules = useCallback( - // Upgrade all rules, ignoring filter and selection - () => upgradeRules(ruleUpgradeInfos.map((rule) => rule.rule_id)), - [ruleUpgradeInfos, upgradeRules] - ); - return ( {shouldDisplayUpgradeSelectedRulesButton ? ( @@ -146,7 +143,3 @@ const useBulkUpdateButtonsTooltipContent = ({ allRulesButtonTooltip: undefined, }; }; - -function isAllRuleHaveConflicts(rules: Array<{ diff: { num_fields_with_conflicts: number } }>) { - return rules.every((rule) => rule.diff.num_fields_with_conflicts > 0); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx similarity index 80% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx index 6aad29f8b5792..751b24f865e61 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx @@ -10,49 +10,40 @@ import type { Dispatch, SetStateAction } from 'react'; import React, { createContext, useCallback, useContext, useMemo, useState } from 'react'; import type { RuleFieldsToUpgrade, - RuleUpgradeInfoForReview, RuleUpgradeSpecifier, } from '../../../../../../common/api/detection_engine'; +import { useIsPrebuiltRulesCustomizationEnabled } from '../../../../rule_management/hooks/use_is_prebuilt_rules_customization_enabled'; +import { useAppToasts } from '../../../../../common/hooks/use_app_toasts'; +import type { RuleUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; +import { RuleUpgradeTab } from '../../../../rule_management/components/rule_details/three_way_diff'; +import { PerFieldRuleDiffTab } from '../../../../rule_management/components/rule_details/per_field_rule_diff_tab'; +import { useIsUpgradingSecurityPackages } from '../../../../rule_management/logic/use_upgrade_security_packages'; import type { RuleResponse, RuleSignatureId, } from '../../../../../../common/api/detection_engine/model/rule_schema'; import { invariant } from '../../../../../../common/utils/invariant'; -import { useAppToasts } from '../../../../../common/hooks/use_app_toasts'; -import { PerFieldRuleDiffTab } from '../../../../rule_management/components/rule_details/per_field_rule_diff_tab'; import { TabContentPadding } from '../../../../rule_management/components/rule_details/rule_details_flyout'; -import { RuleDiffTab } from '../../../../rule_management/components/rule_details/rule_diff_tab'; -import { RuleUpgradeConflictsResolverTab } from '../../../../rule_management/components/rule_details/three_way_diff/rule_upgrade_conflicts_resolver_tab'; -import * as ruleDetailsI18n from '../../../../rule_management/components/rule_details/translations'; -import { useIsPrebuiltRulesCustomizationEnabled } from '../../../../rule_management/hooks/use_is_prebuilt_rules_customization_enabled'; import { usePerformUpgradeSpecificRules } from '../../../../rule_management/logic/prebuilt_rules/use_perform_rule_upgrade'; import { usePrebuiltRulesUpgradeReview } from '../../../../rule_management/logic/prebuilt_rules/use_prebuilt_rules_upgrade_review'; -import { useIsUpgradingSecurityPackages } from '../../../../rule_management/logic/use_upgrade_security_packages'; -import type { - RuleUpgradeState, - RulesUpgradeState, -} from '../../../../rule_management/model/prebuilt_rule_upgrade'; -import { FieldUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade/field_upgrade_state'; -import { isNonUpgradeableFieldName } from '../../../../rule_management/model/prebuilt_rule_upgrade/fields'; +import { RuleDiffTab } from '../../../../rule_management/components/rule_details/rule_diff_tab'; +import { FieldUpgradeStateEnum } from '../../../../rule_management/model/prebuilt_rule_upgrade/field_upgrade_state_enum'; import { useRulePreviewFlyout } from '../use_rule_preview_flyout'; -import { MlJobUpgradeModal } from './modals/ml_job_upgrade_modal'; -import { UpgradeConflictsModal } from './modals/upgrade_conflicts_modal'; -import * as i18n from './translations'; import type { UpgradePrebuiltRulesTableFilterOptions } from './use_filter_prebuilt_rules_to_upgrade'; import { useFilterPrebuiltRulesToUpgrade } from './use_filter_prebuilt_rules_to_upgrade'; import { usePrebuiltRulesUpgradeState } from './use_prebuilt_rules_upgrade_state'; -import { useMlJobUpgradeModal, useUpgradeConflictsModal } from './use_upgrade_modals'; +import { useOutdatedMlJobsUpgradeModal } from './use_ml_jobs_upgrade_modal'; +import { useUpgradeWithConflictsModal } from './use_upgrade_with_conflicts_modal'; import { RuleTypeChangeCallout } from './rule_type_change_callout'; +import { UpgradeFlyoutSubHeader } from './upgrade_flyout_subheader'; +import * as ruleDetailsI18n from '../../../../rule_management/components/rule_details/translations'; +import * as i18n from './translations'; export interface UpgradePrebuiltRulesTableState { - /** - * Rule upgrade state (all rules available for upgrade) - */ - ruleUpgradeInfos: RuleUpgradeInfoForReview[]; /** * Rule upgrade state after applying `filterOptions` */ - rulesUpgradeState: RulesUpgradeState; + ruleUpgradeStates: RuleUpgradeState[]; /** * Currently selected table filter */ @@ -101,6 +92,7 @@ export const PREBUILT_RULE_UPDATE_FLYOUT_ANCHOR = 'updatePrebuiltRulePreview'; export interface UpgradePrebuiltRulesTableActions { reFetchRules: () => void; upgradeRules: (ruleIds: RuleSignatureId[]) => void; + upgradeAllRules: () => void; setFilterOptions: Dispatch>; openRulePreview: (ruleId: string) => void; } @@ -146,28 +138,20 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ refetchInterval: false, // Disable automatic refetching since request is expensive keepPreviousData: true, // Use this option so that the state doesn't jump between "success" and "loading" on page change }); - const filteredRuleUpgradeInfos = useFilterPrebuiltRulesToUpgrade({ + const { rulesUpgradeState, setRuleFieldResolvedValue } = + usePrebuiltRulesUpgradeState(ruleUpgradeInfos); + const ruleUpgradeStates = useMemo(() => Object.values(rulesUpgradeState), [rulesUpgradeState]); + const filteredRuleUpgradeStates = useFilterPrebuiltRulesToUpgrade({ filterOptions, - rules: ruleUpgradeInfos, + data: ruleUpgradeStates, }); - const { rulesUpgradeState, setRuleFieldResolvedValue } = - usePrebuiltRulesUpgradeState(filteredRuleUpgradeInfos); const { - isVisible: isLegacyMLJobsModalVisible, - legacyJobsInstalled, + modal: confirmLegacyMlJobsUpgradeModal, confirmLegacyMLJobs, - handleConfirm: handleLegacyMLJobsConfirm, - handleCancel: handleLegacyMLJobsCancel, - loadingJobs, - } = useMlJobUpgradeModal(); - - const { - isVisible: isConflictsModalVisible, - confirmConflictsUpgrade, - handleConfirm: handleConflictsConfirm, - handleCancel: handleConflictsCancel, - } = useUpgradeConflictsModal(); + isLoading: areMlJobsLoading, + } = useOutdatedMlJobsUpgradeModal(); + const { modal: upgradeConflictsModal, confirmConflictsUpgrade } = useUpgradeWithConflictsModal(); const { mutateAsync: upgradeSpecificRulesRequest } = usePerformUpgradeSpecificRules(); @@ -263,6 +247,19 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ [isPrebuiltRulesCustomizationEnabled, upgradeRulesToResolved, upgradeRulesToTarget] ); + const upgradeAllRules = useCallback( + // Upgrade all rules, ignoring filter and selection + () => upgradeRules(ruleUpgradeInfos.map((rule) => rule.rule_id)), + [ruleUpgradeInfos, upgradeRules] + ); + + const subHeaderFactory = useCallback( + (rule: RuleResponse) => + rulesUpgradeState[rule.rule_id] ? ( + + ) : null, + [rulesUpgradeState] + ); const ruleActionsFactory = useCallback( (rule: RuleResponse, closeRulePreview: () => void) => { const ruleUpgradeState = rulesUpgradeState[rule.rule_id]; @@ -313,11 +310,19 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ } const hasRuleTypeChange = ruleUpgradeState.diff.fields.type?.has_update ?? false; + const hasCustomizations = + ruleUpgradeState.current_rule.rule_source.type === 'external' && + ruleUpgradeState.current_rule.rule_source.is_customized; const shouldShowRuleTypeChangeCallout = hasRuleTypeChange && isPrebuiltRulesCustomizationEnabled; + let updateTabContent = ( : null} + header={ + shouldShowRuleTypeChangeCallout && ( + + ) + } ruleDiff={ruleUpgradeState.diff} /> ); @@ -327,7 +332,7 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ // conflicts, only accept the target rule. if (isPrebuiltRulesCustomizationEnabled && !hasRuleTypeChange) { updateTabContent = ( - @@ -352,12 +357,12 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ ), content: ( - +
- +
), }; @@ -366,11 +371,12 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ [rulesUpgradeState, setRuleFieldResolvedValue, isPrebuiltRulesCustomizationEnabled] ); const filteredRules = useMemo( - () => filteredRuleUpgradeInfos.map((rule) => rule.target_rule), - [filteredRuleUpgradeInfos] + () => filteredRuleUpgradeStates.map(({ target_rule: targetRule }) => targetRule), + [filteredRuleUpgradeStates] ); const { rulePreviewFlyout, openRulePreview } = useRulePreviewFlyout({ rules: filteredRules, + subHeaderFactory, ruleActionsFactory, extraTabsFactory, flyoutProps: { @@ -383,22 +389,22 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ () => ({ reFetchRules: refetch, upgradeRules, + upgradeAllRules, setFilterOptions, openRulePreview, }), - [refetch, upgradeRules, openRulePreview] + [refetch, upgradeRules, upgradeAllRules, openRulePreview] ); - const providerValue = useMemo(() => { - return { + const providerValue = useMemo( + () => ({ state: { - ruleUpgradeInfos, - rulesUpgradeState, + ruleUpgradeStates: filteredRuleUpgradeStates, hasRulesToUpgrade: isFetched && ruleUpgradeInfos.length > 0, filterOptions, tags, isFetched, - isLoading: isLoading || loadingJobs, + isLoading: isLoading || areMlJobsLoading, isRefetching, isUpgradingSecurityPackages, loadingRules, @@ -406,39 +412,29 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ isPrebuiltRulesCustomizationEnabled, }, actions, - }; - }, [ - ruleUpgradeInfos, - rulesUpgradeState, - filterOptions, - tags, - isFetched, - isLoading, - loadingJobs, - isRefetching, - isUpgradingSecurityPackages, - loadingRules, - dataUpdatedAt, - actions, - isPrebuiltRulesCustomizationEnabled, - ]); + }), + [ + ruleUpgradeInfos.length, + filteredRuleUpgradeStates, + filterOptions, + tags, + isFetched, + isLoading, + areMlJobsLoading, + isRefetching, + isUpgradingSecurityPackages, + loadingRules, + dataUpdatedAt, + actions, + isPrebuiltRulesCustomizationEnabled, + ] + ); return ( <> - {isLegacyMLJobsModalVisible && ( - - )} - {isConflictsModalVisible && ( - - )} + {confirmLegacyMlJobsUpgradeModal} + {upgradeConflictsModal} {children} {rulePreviewFlyout} @@ -457,21 +453,15 @@ export const useUpgradePrebuiltRulesTableContext = (): UpgradePrebuiltRulesConte }; function constructRuleFieldsToUpgrade(ruleUpgradeState: RuleUpgradeState): RuleFieldsToUpgrade { - const finalRule = ruleUpgradeState.finalRule as Record; const ruleFieldsToUpgrade: Record = {}; - for (const fieldName of Object.keys(ruleUpgradeState.fieldsUpgradeState)) { - const fieldUpgradeState = ruleUpgradeState.fieldsUpgradeState[fieldName]; - - if (!isNonUpgradeableFieldName(fieldName) && fieldUpgradeState === FieldUpgradeState.Accepted) { - invariant( - fieldName in finalRule, - `Ready to upgrade field "${fieldName}" is not found in final rule` - ); - + for (const [fieldName, fieldUpgradeState] of Object.entries( + ruleUpgradeState.fieldsUpgradeState + )) { + if (fieldUpgradeState.state === FieldUpgradeStateEnum.Accepted) { ruleFieldsToUpgrade[fieldName] = { pick_version: 'RESOLVED', - resolved_value: finalRule[fieldName], + resolved_value: fieldUpgradeState.resolvedValue, }; } } diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_filters.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_filters.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_filters.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_filters.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_rule_customization_filter_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_rule_customization_filter_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_rule_customization_filter_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_rule_customization_filter_popover.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts similarity index 82% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts index b5a0e123d7510..a3dd45f8fabc0 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts @@ -6,7 +6,7 @@ */ import { useMemo } from 'react'; -import type { RuleUpgradeInfoForReview } from '../../../../../../common/api/detection_engine/prebuilt_rules'; +import type { RuleUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; import { RuleCustomizationEnum, type FilterOptions } from '../../../../rule_management/logic/types'; export type UpgradePrebuiltRulesTableFilterOptions = Pick< @@ -14,16 +14,19 @@ export type UpgradePrebuiltRulesTableFilterOptions = Pick< 'filter' | 'tags' | 'ruleSource' >; +interface UseFilterPrebuiltRulesToUpgradeParams { + data: RuleUpgradeState[]; + filterOptions: UpgradePrebuiltRulesTableFilterOptions; +} + export const useFilterPrebuiltRulesToUpgrade = ({ - rules, + data, filterOptions, -}: { - rules: RuleUpgradeInfoForReview[]; - filterOptions: UpgradePrebuiltRulesTableFilterOptions; -}) => { - const filteredRules = useMemo(() => { +}: UseFilterPrebuiltRulesToUpgradeParams): RuleUpgradeState[] => { + return useMemo(() => { const { filter, tags, ruleSource } = filterOptions; - return rules.filter((ruleInfo) => { + + return data.filter((ruleInfo) => { if (filter && !ruleInfo.current_rule.name.toLowerCase().includes(filter.toLowerCase())) { return false; } @@ -53,7 +56,5 @@ export const useFilterPrebuiltRulesToUpgrade = ({ return true; }); - }, [filterOptions, rules]); - - return filteredRules; + }, [filterOptions, data]); }; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/index.ts new file mode 100644 index 0000000000000..470224e90a547 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './use_ml_jobs_upgrade_modal'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/ml_jobs_upgrade_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/ml_jobs_upgrade_modal.tsx new file mode 100644 index 0000000000000..37d6a84728aea --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/ml_jobs_upgrade_modal.tsx @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo } from 'react'; +import { EuiConfirmModal } from '@elastic/eui'; +import type { MlSummaryJob } from '@kbn/ml-plugin/common'; +import styled from 'styled-components'; +import { rgba } from 'polished'; +import * as i18n from './translations'; + +const JobsUL = styled.ul` + max-height: 200px; + overflow-y: auto; + + &::-webkit-scrollbar { + height: ${({ theme }) => theme.eui.euiScrollBar}; + width: ${({ theme }) => theme.eui.euiScrollBar}; + } + + &::-webkit-scrollbar-thumb { + background-clip: content-box; + background-color: ${({ theme }) => rgba(theme.eui.euiColorDarkShade, 0.5)}; + border: ${({ theme }) => theme.eui.euiScrollBarCorner} solid transparent; + } + + &::-webkit-scrollbar-corner, + &::-webkit-scrollbar-track { + background-color: transparent; + } +`; + +interface OutdatedMlJobsUpgradeModalProps { + jobs: MlSummaryJob[]; + onCancel: () => void; + onConfirm: () => void; +} + +export const OutdatedMlJobsUpgradeModal = memo(function LegacyMlJobsUpgradeModal({ + jobs, + onCancel, + onConfirm, +}: OutdatedMlJobsUpgradeModalProps): JSX.Element { + return ( + + + {i18n.ML_JOB_UPGRADE_MODAL_AFFECTED_JOBS} + + {jobs.map((j) => { + return
  • {j.id}
  • ; + })} +
    +
    + ); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/translations.tsx new file mode 100644 index 0000000000000..8250591de71cc --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/translations.tsx @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { MlJobCompatibilityLink } from '../../../../../../common/components/links_to_docs'; + +export const ML_JOB_UPGRADE_MODAL_TITLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageTitle', + { + defaultMessage: 'ML rule updates may override your existing rules', + } +); + +export const ML_JOB_UPGRADE_MODAL_CANCEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.cancelTitle', + { + defaultMessage: 'Cancel', + } +); + +export const ML_JOB_UPGRADE_MODAL_CONFIRM = i18n.translate( + 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.confirmTitle', + { + defaultMessage: 'Load rules', + } +); + +export const ML_JOB_UPGRADE_MODAL_AFFECTED_JOBS = i18n.translate( + 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.affectedJobsTitle', + { + defaultMessage: 'Affected jobs:', + } +); + +export const MlJobUpgradeModalBody = () => ( + + +

    + ), + docs: ( +
      +
    • + +
    • +
    + ), + }} + /> +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/use_ml_jobs_upgrade_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/use_ml_jobs_upgrade_modal.tsx new file mode 100644 index 0000000000000..cb4682f49a603 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/use_ml_jobs_upgrade_modal.tsx @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ReactNode } from 'react'; +import React, { useCallback } from 'react'; +import { useBoolean } from '@kbn/react-hooks'; +import { useInstalledSecurityJobs } from '../../../../../../common/components/ml/hooks/use_installed_security_jobs'; +import { affectedJobIds } from '../../../../../../../common/machine_learning/affected_job_ids'; +import { useAsyncConfirmation } from '../../rules_table/use_async_confirmation'; +import { OutdatedMlJobsUpgradeModal } from './ml_jobs_upgrade_modal'; + +interface UseOutdatedMlJobsUpgradeModalResult { + modal: ReactNode; + isLoading: boolean; + confirmLegacyMLJobs: () => Promise; +} + +export function useOutdatedMlJobsUpgradeModal(): UseOutdatedMlJobsUpgradeModalResult { + const [isVisible, { on: showModal, off: hideModal }] = useBoolean(false); + const { loading, jobs } = useInstalledSecurityJobs(); + const legacyJobsInstalled = jobs.filter((job) => affectedJobIds.includes(job.id)); + const [confirmLegacyMLJobs, confirm, cancel] = useAsyncConfirmation({ + onInit: showModal, + onFinish: hideModal, + }); + + const handleLegacyMLJobsConfirm = useCallback(async () => { + if (legacyJobsInstalled.length > 0) { + return confirmLegacyMLJobs(); + } + + return true; + }, [confirmLegacyMLJobs, legacyJobsInstalled]); + + return { + modal: isVisible && ( + + ), + confirmLegacyMLJobs: handleLegacyMLJobsConfirm, + isLoading: loading, + }; +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts new file mode 100644 index 0000000000000..3412947426301 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useMemo, useState } from 'react'; +import { useIsPrebuiltRulesCustomizationEnabled } from '../../../../rule_management/hooks/use_is_prebuilt_rules_customization_enabled'; +import type { + RulesUpgradeState, + FieldsUpgradeState, + SetRuleFieldResolvedValueFn, +} from '../../../../rule_management/model/prebuilt_rule_upgrade'; +import { FieldUpgradeStateEnum } from '../../../../rule_management/model/prebuilt_rule_upgrade'; +import { + type FieldsDiff, + type DiffableAllFields, + type RuleUpgradeInfoForReview, + ThreeWayDiffConflict, + type RuleSignatureId, + NON_UPGRADEABLE_DIFFABLE_FIELDS, + ThreeWayDiffOutcome, +} from '../../../../../../common/api/detection_engine'; +import { assertUnreachable } from '../../../../../../common/utility_types'; + +type RuleResolvedConflicts = Partial; +type RulesResolvedConflicts = Record; + +interface UseRulesUpgradeStateResult { + rulesUpgradeState: RulesUpgradeState; + setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; +} + +export function usePrebuiltRulesUpgradeState( + ruleUpgradeInfos: RuleUpgradeInfoForReview[] +): UseRulesUpgradeStateResult { + const isPrebuiltRulesCustomizationEnabled = useIsPrebuiltRulesCustomizationEnabled(); + const [rulesResolvedConflicts, setRulesResolvedConflicts] = useState({}); + + const setRuleFieldResolvedValue = useCallback( + (...[params]: Parameters) => { + setRulesResolvedConflicts((prevRulesResolvedConflicts) => ({ + ...prevRulesResolvedConflicts, + [params.ruleId]: { + ...(prevRulesResolvedConflicts[params.ruleId] ?? {}), + [params.fieldName]: params.resolvedValue, + }, + })); + }, + [] + ); + + const rulesUpgradeState = useMemo(() => { + const state: RulesUpgradeState = {}; + + for (const ruleUpgradeInfo of ruleUpgradeInfos) { + const fieldsUpgradeState = calcFieldsState( + ruleUpgradeInfo.diff.fields, + rulesResolvedConflicts[ruleUpgradeInfo.rule_id] ?? {} + ); + + const hasRuleTypeChange = Boolean(ruleUpgradeInfo.diff.fields.type); + const hasFieldConflicts = Object.values(fieldsUpgradeState).some( + ({ state: fieldState }) => + fieldState === FieldUpgradeStateEnum.SolvableConflict || + fieldState === FieldUpgradeStateEnum.NonSolvableConflict + ); + + state[ruleUpgradeInfo.rule_id] = { + ...ruleUpgradeInfo, + fieldsUpgradeState, + hasUnresolvedConflicts: isPrebuiltRulesCustomizationEnabled + ? hasRuleTypeChange || hasFieldConflicts + : false, + }; + } + + return state; + }, [ruleUpgradeInfos, rulesResolvedConflicts, isPrebuiltRulesCustomizationEnabled]); + + return { + rulesUpgradeState, + setRuleFieldResolvedValue, + }; +} + +const NON_UPGRADEABLE_DIFFABLE_FIELDS_SET: Readonly> = new Set( + NON_UPGRADEABLE_DIFFABLE_FIELDS +); + +function calcFieldsState( + fieldsDiff: FieldsDiff>, + ruleResolvedConflicts: RuleResolvedConflicts +): FieldsUpgradeState { + const fieldsState: FieldsUpgradeState = {}; + + for (const fieldName of Object.keys(fieldsDiff)) { + if (NON_UPGRADEABLE_DIFFABLE_FIELDS_SET.has(fieldName)) { + // eslint-disable-next-line no-continue + continue; + } + + const fieldDiff = fieldsDiff[fieldName]; + + switch (fieldDiff.conflict) { + case ThreeWayDiffConflict.NONE: + if (fieldDiff.has_update) { + fieldsState[fieldName] = { + state: FieldUpgradeStateEnum.NoConflict, + }; + } else { + fieldsState[fieldName] = { + state: + fieldDiff.diff_outcome === ThreeWayDiffOutcome.CustomizedValueSameUpdate + ? FieldUpgradeStateEnum.SameUpdate + : FieldUpgradeStateEnum.NoUpdate, + }; + } + break; + + case ThreeWayDiffConflict.SOLVABLE: + fieldsState[fieldName] = { state: FieldUpgradeStateEnum.SolvableConflict }; + break; + + case ThreeWayDiffConflict.NON_SOLVABLE: + fieldsState[fieldName] = { state: FieldUpgradeStateEnum.NonSolvableConflict }; + break; + + default: + assertUnreachable(fieldDiff.conflict); + } + } + + for (const [fieldName, resolvedValue] of Object.entries(ruleResolvedConflicts)) { + fieldsState[fieldName] = { state: FieldUpgradeStateEnum.Accepted, resolvedValue }; + } + + return fieldsState; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx similarity index 99% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx index c2b1f8e3dbe46..919664c100b2f 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx @@ -59,7 +59,7 @@ const RULE_NAME_COLUMN: TableColumn = { field: 'current_rule.name', name: i18n.COLUMN_RULE, render: (value: RuleUpgradeState['current_rule']['name'], ruleUpgradeState: RuleUpgradeState) => ( - + ), sortable: true, truncateText: true, diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/index.ts new file mode 100644 index 0000000000000..7a01864683869 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './use_upgrade_modal'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/translations.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx new file mode 100644 index 0000000000000..3374ae5c16b4d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiConfirmModal, EuiText } from '@elastic/eui'; +import React, { memo } from 'react'; +import * as i18n from './translations'; + +interface UpgradeWithConflictsModalProps { + onCancel: () => void; + onConfirm: () => void; +} + +export const UpgradeWithConflictsModal = memo(function ConfirmUpgradeWithConflictsModal({ + onCancel, + onConfirm, +}: UpgradeWithConflictsModalProps): JSX.Element { + return ( + + {i18n.UPGRADE_CONFLICTS_MODAL_BODY} + + ); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/use_upgrade_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/use_upgrade_modal.tsx new file mode 100644 index 0000000000000..0714ba458d34e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/use_upgrade_modal.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ReactNode } from 'react'; +import React from 'react'; +import { useBoolean } from '@kbn/react-hooks'; +import { useAsyncConfirmation } from '../../rules_table/use_async_confirmation'; +import { UpgradeWithConflictsModal } from './upgrade_modal'; + +interface UseUpgradeWithConflictsModalResult { + modal: ReactNode; + confirmConflictsUpgrade: () => Promise; +} + +export function useUpgradeWithConflictsModal(): UseUpgradeWithConflictsModalResult { + const [isVisible, { on: showModal, off: hideModal }] = useBoolean(false); + const [confirmConflictsUpgrade, confirm, cancel] = useAsyncConfirmation({ + onInit: showModal, + onFinish: hideModal, + }); + + return { + modal: isVisible && , + confirmConflictsUpgrade, + }; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_has_actions_privileges.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_has_actions_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_has_actions_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_has_actions_privileges.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_has_ml_permissions.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_has_ml_permissions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_has_ml_permissions.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_has_ml_permissions.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx similarity index 86% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx index d6dcdd0592b85..0c16a5c6ed165 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx @@ -17,6 +17,7 @@ interface UseRulePreviewFlyoutParams { rules: RuleResponse[]; ruleActionsFactory: (rule: RuleResponse, closeRulePreview: () => void) => ReactNode; extraTabsFactory?: (rule: RuleResponse) => EuiTabbedContentTab[]; + subHeaderFactory?: (rule: RuleResponse) => ReactNode; flyoutProps: RulePreviewFlyoutProps; } @@ -38,10 +39,15 @@ export function useRulePreviewFlyout({ rules, extraTabsFactory, ruleActionsFactory, + subHeaderFactory, flyoutProps, }: UseRulePreviewFlyoutParams): UseRulePreviewFlyoutResult { const [rule, setRuleForPreview] = useState(); const closeRulePreview = useCallback(() => setRuleForPreview(undefined), []); + const subHeader = useMemo( + () => (rule ? subHeaderFactory?.(rule) : null), + [subHeaderFactory, rule] + ); const ruleActions = useMemo( () => rule && ruleActionsFactory(rule, closeRulePreview), [rule, ruleActionsFactory, closeRulePreview] @@ -61,13 +67,14 @@ export function useRulePreviewFlyout({ closeFlyout={closeRulePreview} ruleActions={ruleActions} extraTabs={extraTabs} + subHeader={subHeader} /> ), openRulePreview: useCallback( (ruleId: RuleSignatureId) => { - const ruleToShowInFlyout = rules.find((x) => x.id === ruleId); + const ruleToShowInFlyout = rules.find((x) => x.rule_id === ruleId); - invariant(ruleToShowInFlyout, `Rule with id ${ruleId} not found`); + invariant(ruleToShowInFlyout, `Rule with rule_id ${ruleId} not found`); setRuleForPreview(ruleToShowInFlyout); }, [rules, setRuleForPreview] diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rules_table_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rules_table_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rules_table_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rules_table_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table_utility_bar/rules_table_utility_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table_utility_bar/rules_table_utility_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table_utility_bar/rules_table_utility_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table_utility_bar/rules_table_utility_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table_utility_bar/rules_table_utility_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table_utility_bar/rules_table_utility_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table_utility_bar/rules_table_utility_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table_utility_bar/rules_table_utility_bar.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/add_rules/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/add_rules/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/add_rules/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/add_rules/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/add_rules/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/add_rules/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/add_rules/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/add_rules/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/constants.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_context.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/coverage_overview_dashboard_reducer.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/filter_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/filter_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/filter_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/filter_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/filters_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/filters_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/filters_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/filters_panel.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/rule_activity_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/rule_activity_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/rule_activity_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/rule_activity_filter.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/rule_source_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/rule_source_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/rule_source_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/rule_source_filter.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/dashboard_legend.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/dashboard_legend.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/dashboard_legend.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/dashboard_legend.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/panel_rule_stats.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/panel_rule_stats.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/panel_rule_stats.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/panel_rule_stats.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/popover_list_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/popover_list_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/popover_list_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/shared_components/popover_list_header.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/tactic_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/tactic_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/tactic_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/tactic_panel.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/technique_panel_popover.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/coverage_overview/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/rule_management/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/rule_management/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/rule_management/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/pages/rule_management/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/api_client.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/api_client.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/api_client.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/api_client.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client_interface.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client_interface.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client_interface.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/api_client_interface.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/api/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/api/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/event_type_filter/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_run_type_filter/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_status_filter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_status_filter/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_status_filter/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_status_filter/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_status_filter/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_status_filter/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_status_filter/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/execution_status_filter/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/log_level_filter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/log_level_filter/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/log_level_filter/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/log_level_filter/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/log_level_filter/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/log_level_filter/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/log_level_filter/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/log_level_filter/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/multiselect_filter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/multiselect_filter/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/multiselect_filter/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/filters/multiselect_filter/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/event_type_indicator/utils.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/execution_status_indicator/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/execution_status_indicator/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/execution_status_indicator/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/execution_status_indicator/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/index.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/indicators/log_level_indicator/utils.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_expandable_rows.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_expandable_rows.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_expandable_rows.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_expandable_rows.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_pagination.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_pagination.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_pagination.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_pagination.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_sorting.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_sorting.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_sorting.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/tables/use_sorting.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/text/text_block.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/text/text_block.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/text/text_block.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/text/text_block.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/text/truncated_text.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/text/truncated_text.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/text/truncated_text.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/basic/text/truncated_text.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/event_message_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/event_message_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/event_message_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/event_message_filter.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/event_message_filter/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/execution_events_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/execution_events_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/execution_events_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/execution_events_table.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/execution_events_table_row_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/execution_events_table_row_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/execution_events_table_row_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/execution_events_table_row_details.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_columns.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_execution_events.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_filters.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_filters.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_events_table/use_filters.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/use_execution_results.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/use_execution_results.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/use_execution_results.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/use_execution_results.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/use_execution_results.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/use_execution_results.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/use_execution_results.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/components/execution_results_table/use_execution_results.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/logic/detection_engine_health/use_setup_detection_engine_health_api.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/logic/detection_engine_health/use_setup_detection_engine_health_api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/logic/detection_engine_health/use_setup_detection_engine_health_api.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/logic/detection_engine_health/use_setup_detection_engine_health_api.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/logic/execution_settings/use_execution_settings.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/logic/execution_settings/use_execution_settings.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/logic/execution_settings/use_execution_settings.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/logic/execution_settings/use_execution_settings.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_monitoring/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring/mocks.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/constants.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/action_type_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/action_type_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/action_type_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/action_type_field.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/callout.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/check_permissions.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/check_permissions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/check_permissions.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/check_permissions.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/check_permissions.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/check_permissions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/check_permissions.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/check_permissions.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/comment_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/comment_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/comment_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/comment_field.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/config_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/config_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/config_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/config_fields.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/endpoint_response_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/endpoint_response_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/endpoint_response_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/endpoint_response_action.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/field_name.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/field_name.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/field_name.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/field_name.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/overwrite_process_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/overwrite_process_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/overwrite_process_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/overwrite_process_field.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/utils.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/utils.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/utils.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/utils.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/v.8.10.0_process.json b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/v.8.10.0_process.json similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/v.8.10.0_process.json rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/endpoint/v.8.10.0_process.json diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/get_supported_response_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/get_supported_response_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/get_supported_response_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/get_supported_response_actions.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_investigation_guide_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_investigation_guide_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_investigation_guide_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_investigation_guide_panel.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_response_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_response_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_response_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_response_action.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_response_action_form_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_response_action_form_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_response_action_form_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/osquery_response_action_form_field.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/osquery/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_add_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_add_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_add_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_add_button.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_type_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_type_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_type_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_action_type_form.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_form.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_form.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_form.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_form.test.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_form.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_header.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_list.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/response_actions_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/use_osquery_enabled.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/use_osquery_enabled.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/use_osquery_enabled.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/use_osquery_enabled.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/use_supported_response_action_types.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/use_supported_response_action_types.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/use_supported_response_action_types.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/use_supported_response_action_types.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/utils.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/utils.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_response_actions/utils.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_response_actions/utils.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/alerts_by_rule.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/alerts_by_rule.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/alerts_by_rule.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/alerts_by_rule.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/alerts_by_rule.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/alerts_by_rule.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/alerts_by_rule.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/alerts_by_rule.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/mock_rule_data.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/mock_rule_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/mock_rule_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/mock_rule_data.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_by_rule_panel/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_count_panel/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_histogram_panel/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/aggregations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/aggregations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/aggregations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/aggregations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/use_summary_chart_data.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/use_summary_chart_data.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/use_summary_chart_data.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/use_summary_chart_data.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/use_summary_chart_data.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/use_summary_chart_data.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/use_summary_chart_data.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_summary_charts_panel/use_summary_chart_data.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/chart_palette/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/chart_palette/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/chart_palette/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/chart_palette/index.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/chart_palette/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/chart_palette/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/chart_palette/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/chart_palette/index.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/flatten_bucket.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/flatten_bucket.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/flatten_bucket.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/flatten_bucket.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/flatten_bucket.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/flatten_bucket.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/flatten_bucket.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/flatten_bucket.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/get_flattened_buckets.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/get_flattened_buckets.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/get_flattened_buckets.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/get_flattened_buckets.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/get_flattened_buckets.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/get_flattened_buckets.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/get_flattened_buckets.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/get_flattened_buckets.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/mocks/mock_buckets.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/mocks/mock_buckets.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/mocks/mock_buckets.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/mocks/mock_buckets.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/mocks/mock_flattened_buckets.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/mocks/mock_flattened_buckets.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/mocks/mock_flattened_buckets.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/flatten/mocks/mock_flattened_buckets.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/labels/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/labels/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/labels/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/labels/index.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/labels/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/labels/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/labels/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/labels/index.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/layers/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/layers/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/layers/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/layers/index.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/layers/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/layers/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/layers/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/layers/index.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/get_flattened_legend_items.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/get_flattened_legend_items.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/get_flattened_legend_items.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/get_flattened_legend_items.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/get_flattened_legend_items.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/get_flattened_legend_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/get_flattened_legend_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/get_flattened_legend_items.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/index.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/legend/index.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/mocks/mock_alert_search_response.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/mocks/mock_alert_search_response.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/mocks/mock_alert_search_response.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/lib/mocks/mock_alert_search_response.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/no_data/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/no_data/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/no_data/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/no_data/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/no_data/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/no_data/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/no_data/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/no_data/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/query/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/query/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/query/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/query/index.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/query/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/query/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/query/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/query/index.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/alerts_treemap/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/alerts_treemap_panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/constants.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/alerts_local_storage/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_collapse/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_context_menu/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_context_menu/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_context_menu/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_context_menu/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_context_menu/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_context_menu/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_context_menu/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_context_menu/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/chart_select/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/chart_panels/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/components.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/components.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/components.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/components.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/components.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/components.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/components.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/components.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/config.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/config.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/config.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/hooks.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/hooks.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/hooks.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/hooks.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/hooks.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/hooks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/hooks.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/hooks.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/common/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/common/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/columns.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/severity_level_chart.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/severity_level_chart.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/severity_level_chart.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/severity_level_chart.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/severity_level_chart.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/severity_level_chart.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/severity_level_chart.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/severity_level_chart.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis/severity_level_panel/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/actions.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/additional_filters_action/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_filter_group/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_sub_grouping.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_sub_grouping.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_sub_grouping.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/alerts_sub_grouping.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/default_config.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/default_config.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/default_config.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/default_config.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_take_action_items.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/mock.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/helpers.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_resolver.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_bulk_to_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_bulk_to_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_bulk_to_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_bulk_to_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_flyout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_exception_flyout.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_add_to_case_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_assignees_actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_assignees_actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_assignees_actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_assignees_actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_assignees_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_assignees_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_assignees_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_assignees_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_tags_actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_tags_actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_tags_actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_tags_actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_tags_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_tags_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_tags_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alert_tags_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alerts_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alerts_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alerts_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_alerts_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_action.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_event_filter_modal.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/comma_separated_values.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/comma_separated_values.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/comma_separated_values.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/comma_separated_values.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/use_missing_privileges.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/use_missing_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/use_missing_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/missing_privileges_callout/use_missing_privileges.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/ml_job_compatibility_callout/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/need_admin_for_update_callout/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts/no_api_integration_callout/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/detection_engine_filters/detection_engine_filters.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/detection_engine_filters/detection_engine_filters.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/detection_engine_filters/detection_engine_filters.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/detection_engine_filters/detection_engine_filters.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/detection_engine_filters/detection_engine_filters.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/detection_engine_filters/detection_engine_filters.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/detection_engine_filters/detection_engine_filters.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/detection_engine_filters/detection_engine_filters.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/osquery/osquery_action_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/osquery_action_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/osquery/osquery_action_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/osquery_action_item.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/osquery/osquery_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/osquery_flyout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/osquery/osquery_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/osquery_flyout.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/osquery/osquery_flyout_footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/osquery_flyout_footer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/osquery/osquery_flyout_footer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/osquery_flyout_footer.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/osquery/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/osquery/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/osquery/use_osquery_context_action_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/use_osquery_context_action_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/osquery/use_osquery_context_action_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/osquery/use_osquery_context_action_item.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/add_elastic_rules_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/add_elastic_rules_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/add_elastic_rules_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/add_elastic_rules_button.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/load_empty_prompt.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/load_empty_prompt.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/load_empty_prompt.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/load_empty_prompt.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/pre_packaged_rules/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integration_details.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integration_details.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integration_details.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integration_details.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integration_details.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integration_details.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integration_details.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integration_details.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_link.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_status_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_status_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_status_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_status_badge.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_version_mismatch_icon.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_version_mismatch_icon.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_version_mismatch_icon.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_description/integration_version_mismatch_icon.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_popover/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_popover/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_popover/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/integrations_popover/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/mock.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/use_integrations.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/use_integrations.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/use_integrations.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/use_integrations.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/use_integrations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/use_integrations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/use_integrations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/use_integrations.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/use_related_integrations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/use_related_integrations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/related_integrations/use_related_integrations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/related_integrations/use_related_integrations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_actions_overflow/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_badge.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_badge.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_badge.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_badge.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_badge.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_failed_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_failed_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_failed_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_failed_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_failed_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_failed_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_failed_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/rule_status_failed_callout.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/utils.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/utils.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/utils.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/utils.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_execution_status/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_execution_status/utils.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_info/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_info/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_info/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_info/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_info/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_info/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_info/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_info/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_info/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_info/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_info/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_info/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_switch/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_switch/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_switch/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_switch/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_switch/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/rules/rule_switch/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_switch/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/severity/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/severity/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/severity/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/severity/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/severity/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/severity/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/severity/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/severity/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/status/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/status/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/status/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/status/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/status/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/status/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/status/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/status/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/user_info/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/user_info/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/user_info/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/user_info/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/user_info/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/user_info/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/user_info/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/user_info/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/user_privileges/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/user_privileges/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/user_privileges/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/user_privileges/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/user_privileges/use_fetch_detection_engine_privileges.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/user_privileges/use_fetch_detection_engine_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/user_privileges/use_fetch_detection_engine_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/user_privileges/use_fetch_detection_engine_privileges.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/user_privileges/use_fetch_list_privileges.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/user_privileges/use_fetch_list_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/user_privileges/use_fetch_list_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/user_privileges/use_fetch_list_privileges.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/flyout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/flyout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/flyout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/flyout.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/flyout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/flyout.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/form.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/form.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/form.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/form.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/form.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/form.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/reference_error_modal/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/reference_error_modal/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/reference_error_modal/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/reference_error_modal/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/reference_error_modal/reference_error_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/reference_error_modal/reference_error_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/reference_error_modal/reference_error_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/reference_error_modal/reference_error_modal.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/table_helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/table_helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/table_helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/table_helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/components/value_lists_management_flyout/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/components/value_lists_management_flyout/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/columns.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/columns.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/columns.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/columns.ts diff --git a/x-pack/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/index.ts diff --git a/x-pack/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/render_cell_value.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/render_cell_value.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/render_cell_value.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/render_cell_value.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/render_cell_value.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/render_cell_value.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/render_cell_value.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/observablity_alerts/render_cell_value.tsx diff --git a/x-pack/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/columns.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/columns.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/columns.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/columns.ts diff --git a/x-pack/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/index.ts diff --git a/x-pack/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/render_cell_value.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/render_cell_value.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/render_cell_value.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/render_cell_value.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/render_cell_value.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/render_cell_value.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/render_cell_value.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/examples/security_solution_rac/render_cell_value.tsx diff --git a/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/columns.ts diff --git a/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/fetch_page_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/fetch_page_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/fetch_page_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/fetch_page_context.tsx diff --git a/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/index.ts diff --git a/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/render_cell_value.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/render_cell_value.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/render_cell_value.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/render_cell_value.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/render_cell_value.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/render_cell_value.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/render_cell_value.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/render_cell_value.tsx diff --git a/x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/configurations/security_solution_detections/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/constants.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/constants.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_alerts_privileges.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_check_signal_index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_check_signal_index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_check_signal_index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_check_signal_index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_query.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_signal_index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/__mocks__/use_lists_config.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/__mocks__/use_lists_config.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/__mocks__/use_lists_config.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/__mocks__/use_lists_config.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.mock.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx index db1cd501bc3fc..48ae76514c288 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useKibana } from '../../../../common/lib/kibana'; import { useListsIndex } from './use_lists_index'; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_index.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_index.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_index.mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_index.mock.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_privileges.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_privileges.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_privileges.mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_privileges.mock.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_privileges.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_privileges.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_privileges.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_privileges.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/transforms.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/transforms.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/transforms.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/transforms.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/utils.ts diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/validate_rule_actions_field.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/validate_rule_actions_field.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/validate_rule_actions_field.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/validate_rule_actions_field.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/validate_rule_actions_field.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/validate_rule_actions_field.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/validate_rule_actions_field.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules/validate_rule_actions_field/validate_rule_actions_field.ts diff --git a/x-pack/plugins/security_solution/public/detections/hooks/alerts_visualization/use_alert_histogram_count.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/alerts_visualization/use_alert_histogram_count.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/alerts_visualization/use_alert_histogram_count.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/alerts_visualization/use_alert_histogram_count.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/hooks/alerts_visualization/use_alert_histogram_count.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/alerts_visualization/use_alert_histogram_count.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/alerts_visualization/use_alert_histogram_count.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/alerts_visualization/use_alert_histogram_count.ts diff --git a/x-pack/plugins/security_solution/public/detections/hooks/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/mock/data.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/mock/data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/mock/data.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/mock/data.ts diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_actions_column.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_actions_column.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_actions_column.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_actions_column.tsx diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_alert_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_alert_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_alert_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_alert_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_bulk_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_bulk_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_bulk_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_bulk_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_cell_actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_cell_actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_cell_actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_cell_actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_cell_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_cell_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_cell_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_cell_actions.tsx diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_persistent_controls.tsx diff --git a/x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_trigger_actions_browser_fields_options.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_trigger_actions_browser_fields_options.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_trigger_actions_browser_fields_options.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/hooks/trigger_actions_alert_table/use_trigger_actions_browser_fields_options.tsx diff --git a/x-pack/plugins/security_solution/public/detections/index.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/detections/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/detections/jest.config.js new file mode 100644 index 0000000000000..5a1c9b8dad1dc --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/detections/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/detections'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/detections', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/detections/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/detections/links.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/links.ts diff --git a/x-pack/plugins/security_solution/public/detections/migrations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/migrations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/migrations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/migrations.ts diff --git a/x-pack/plugins/security_solution/public/detections/mitre/mitre_tactics_techniques.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/mitre/mitre_tactics_techniques.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/mitre/mitre_tactics_techniques.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/mitre/mitre_tactics_techniques.ts diff --git a/x-pack/plugins/security_solution/public/detections/mitre/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/mitre/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/mitre/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/mitre/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/mitre/valid_threat_mock.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/mitre/valid_threat_mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/mitre/valid_threat_mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/mitre/valid_threat_mock.ts diff --git a/x-pack/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx index 01e52d3ab7505..b8dd2a4cdcdb6 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx @@ -26,7 +26,7 @@ export const AlertDetailsRedirect = () => { const timestamp = searchParams.get('timestamp'); // Although we use the 'default' space here when an index isn't provided or accidentally deleted // It's a safe catch all as we reset the '.internal.alerts-*` indices with the correct space in the flyout - // Here: x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/helpers.tsx + // Here: x-pack/solutions/security/plugins/security_solution/public/common/components/event_details/helpers.tsx const index = searchParams.get('index') ?? `.internal${DEFAULT_ALERTS_INDEX}-default`; const getInputSelector = useMemo(() => inputsSelectors.inputsSelector(), []); diff --git a/x-pack/plugins/security_solution/public/detections/pages/alerts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/alerts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/alerts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/alerts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/pages/alerts/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/alerts/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts/utils.ts diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_no_index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_no_index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_no_index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_no_index.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_no_index.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_no_index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_no_index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_no_index.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_user_unauthenticated.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_user_unauthenticated.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_user_unauthenticated.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_user_unauthenticated.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_user_unauthenticated.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_user_unauthenticated.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_user_unauthenticated.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine_user_unauthenticated.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/components/edit_rule_settings_button_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/details/components/edit_rule_settings_button_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/components/edit_rule_settings_button_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/details/components/edit_rule_settings_button_link.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/use_get_saved_query.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/use_get_saved_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/use_get_saved_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/use_get_saved_query.ts diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detections/pages/detection_engine/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/translations.ts diff --git a/x-pack/plugins/security_solution/public/detections/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/detections/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detections/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/detections/routes.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/api.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/api.ts new file mode 100644 index 0000000000000..f30b841277267 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/api.ts @@ -0,0 +1,336 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { + ENTITY_STORE_INTERNAL_PRIVILEGES_URL, + LIST_ENTITIES_URL, +} from '../../../common/entity_analytics/entity_store/constants'; +import type { UploadAssetCriticalityRecordsResponse } from '../../../common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen'; +import type { DisableRiskEngineResponse } from '../../../common/api/entity_analytics/risk_engine/engine_disable_route.gen'; +import type { RiskEngineStatusResponse } from '../../../common/api/entity_analytics/risk_engine/engine_status_route.gen'; +import type { InitRiskEngineResponse } from '../../../common/api/entity_analytics/risk_engine/engine_init_route.gen'; +import type { EnableRiskEngineResponse } from '../../../common/api/entity_analytics/risk_engine/engine_enable_route.gen'; +import type { RiskEngineScheduleNowResponse } from '../../../common/api/entity_analytics/risk_engine/engine_schedule_now_route.gen'; +import type { + RiskScoresPreviewRequest, + RiskScoresPreviewResponse, +} from '../../../common/api/entity_analytics/risk_engine/preview_route.gen'; +import type { + RiskScoresEntityCalculationRequest, + RiskScoresEntityCalculationResponse, +} from '../../../common/api/entity_analytics/risk_engine/entity_calculation_route.gen'; +import type { + AssetCriticalityRecord, + EntityAnalyticsPrivileges, +} from '../../../common/api/entity_analytics'; +import type { RiskScoreEntity } from '../../../common/search_strategy'; +import { + RISK_ENGINE_STATUS_URL, + RISK_SCORE_PREVIEW_URL, + RISK_ENGINE_ENABLE_URL, + RISK_ENGINE_DISABLE_URL, + RISK_ENGINE_INIT_URL, + RISK_ENGINE_PRIVILEGES_URL, + ASSET_CRITICALITY_INTERNAL_PRIVILEGES_URL, + ASSET_CRITICALITY_PUBLIC_URL, + RISK_SCORE_INDEX_STATUS_API_URL, + RISK_ENGINE_SETTINGS_URL, + ASSET_CRITICALITY_PUBLIC_CSV_UPLOAD_URL, + RISK_SCORE_ENTITY_CALCULATION_URL, + API_VERSIONS, + RISK_ENGINE_CLEANUP_URL, + RISK_ENGINE_SCHEDULE_NOW_URL, + RISK_ENGINE_CONFIGURE_SO_URL, +} from '../../../common/constants'; +import type { SnakeToCamelCase } from '../common/utils'; +import { useKibana } from '../../common/lib/kibana/kibana_react'; +import type { ReadRiskEngineSettingsResponse } from '../../../common/api/entity_analytics/risk_engine'; +import type { ListEntitiesResponse } from '../../../common/api/entity_analytics/entity_store/entities/list_entities.gen'; +import { type ListEntitiesRequestQuery } from '../../../common/api/entity_analytics/entity_store/entities/list_entities.gen'; + +export interface DeleteAssetCriticalityResponse { + deleted: true; +} +export const useEntityAnalyticsRoutes = () => { + const http = useKibana().services.http; + + return useMemo(() => { + /** + * Fetches preview risks scores + */ + const fetchRiskScorePreview = ({ + signal, + params, + }: { + signal?: AbortSignal; + params: RiskScoresPreviewRequest; + }) => + http.fetch(RISK_SCORE_PREVIEW_URL, { + version: '1', + method: 'POST', + body: JSON.stringify(params), + signal, + }); + + /** + * Fetches entities from the Entity Store + */ + const fetchEntitiesList = ({ + signal, + params, + }: { + signal?: AbortSignal; + params: FetchEntitiesListParams; + }) => + http.fetch(LIST_ENTITIES_URL, { + version: API_VERSIONS.public.v1, + method: 'GET', + query: { + entities_types: params.entitiesTypes, + sort_field: params.sortField, + sort_order: params.sortOrder, + page: params.page, + per_page: params.perPage, + filterQuery: params.filterQuery, + }, + signal, + }); + + /** + * Fetches risks engine status + */ + const fetchRiskEngineStatus = ({ signal }: { signal?: AbortSignal }) => + http.fetch(RISK_ENGINE_STATUS_URL, { + version: '1', + method: 'GET', + signal, + }); + + /** + * Init risk score engine + */ + const initRiskEngine = () => + http.fetch(RISK_ENGINE_INIT_URL, { + version: '1', + method: 'POST', + }); + + /** + * Enable risk score engine + */ + const enableRiskEngine = () => + http.fetch(RISK_ENGINE_ENABLE_URL, { + version: '1', + method: 'POST', + }); + + /** + * Disable risk score engine + */ + const disableRiskEngine = () => + http.fetch(RISK_ENGINE_DISABLE_URL, { + version: '1', + method: 'POST', + }); + + /** + * Enable risk score engine + */ + const scheduleNowRiskEngine = () => + http.fetch(RISK_ENGINE_SCHEDULE_NOW_URL, { + version: API_VERSIONS.public.v1, + method: 'POST', + }); + + /** + * Calculate and stores risk score for an entity + */ + const calculateEntityRiskScore = (params: RiskScoresEntityCalculationRequest) => { + return http.fetch(RISK_SCORE_ENTITY_CALCULATION_URL, { + version: '1', + method: 'POST', + body: JSON.stringify(params), + }); + }; + + /** + * Get risk engine privileges + */ + const fetchRiskEnginePrivileges = () => + http.fetch(RISK_ENGINE_PRIVILEGES_URL, { + version: '1', + method: 'GET', + }); + + /** + * Get asset criticality privileges + */ + const fetchAssetCriticalityPrivileges = () => + http.fetch(ASSET_CRITICALITY_INTERNAL_PRIVILEGES_URL, { + version: '1', + method: 'GET', + }); + + /** + * Get Entity Store privileges + */ + const fetchEntityStorePrivileges = () => + http.fetch(ENTITY_STORE_INTERNAL_PRIVILEGES_URL, { + version: '1', + method: 'GET', + }); + + /** + * Create asset criticality + */ + const createAssetCriticality = async ( + params: Pick & { + refresh?: 'wait_for'; + } + ): Promise => + http.fetch(ASSET_CRITICALITY_PUBLIC_URL, { + version: API_VERSIONS.public.v1, + method: 'POST', + body: JSON.stringify({ + id_value: params.idValue, + id_field: params.idField, + criticality_level: params.criticalityLevel, + refresh: params.refresh, + }), + }); + + const deleteAssetCriticality = async ( + params: Pick & { + refresh?: 'wait_for'; + } + ): Promise<{ deleted: true }> => { + await http.fetch(ASSET_CRITICALITY_PUBLIC_URL, { + version: API_VERSIONS.public.v1, + method: 'DELETE', + query: { + id_value: params.idValue, + id_field: params.idField, + refresh: params.refresh, + }, + }); + + // spoof a response to allow us to better distnguish a delete from a create in use_asset_criticality.ts + return { deleted: true }; + }; + + /** + * Get asset criticality + */ + const fetchAssetCriticality = async ( + params: Pick + ): Promise => { + return http.fetch(ASSET_CRITICALITY_PUBLIC_URL, { + version: API_VERSIONS.public.v1, + method: 'GET', + query: { id_value: params.idValue, id_field: params.idField }, + }); + }; + + const uploadAssetCriticalityFile = async ( + fileContent: string, + fileName: string + ): Promise => { + const file = new File([new Blob([fileContent])], fileName, { + type: 'text/csv', + }); + const body = new FormData(); + body.append('file', file); + + return http.fetch( + ASSET_CRITICALITY_PUBLIC_CSV_UPLOAD_URL, + { + version: API_VERSIONS.public.v1, + method: 'POST', + headers: { + 'Content-Type': undefined, // Lets the browser set the appropriate content type + }, + body, + } + ); + }; + + const getRiskScoreIndexStatus = ({ + query, + signal, + }: { + query: { + indexName: string; + entity: RiskScoreEntity; + }; + signal?: AbortSignal; + }): Promise<{ + isDeprecated: boolean; + isEnabled: boolean; + }> => + http.fetch<{ isDeprecated: boolean; isEnabled: boolean }>(RISK_SCORE_INDEX_STATUS_API_URL, { + version: '1', + method: 'GET', + query, + asSystemRequest: true, + signal, + }); + + /** + * Fetches risk engine settings + */ + const fetchRiskEngineSettings = () => + http.fetch(RISK_ENGINE_SETTINGS_URL, { + version: '1', + method: 'GET', + }); + + /** + * Deletes Risk engine installation and associated data + */ + + const cleanUpRiskEngine = () => + http.fetch(RISK_ENGINE_CLEANUP_URL, { + version: '1', + method: 'DELETE', + }); + + const updateSavedObjectConfiguration = (params: {}) => { + http.fetch(RISK_ENGINE_CONFIGURE_SO_URL, { + version: API_VERSIONS.public.v1, + method: 'PUT', + body: JSON.stringify(params), + }); + }; + + return { + fetchRiskScorePreview, + fetchRiskEngineStatus, + initRiskEngine, + enableRiskEngine, + disableRiskEngine, + scheduleNowRiskEngine, + fetchRiskEnginePrivileges, + fetchAssetCriticalityPrivileges, + fetchEntityStorePrivileges, + createAssetCriticality, + deleteAssetCriticality, + fetchAssetCriticality, + uploadAssetCriticalityFile, + getRiskScoreIndexStatus, + fetchRiskEngineSettings, + calculateEntityRiskScore, + cleanUpRiskEngine, + fetchEntitiesList, + updateSavedObjectConfiguration, + }; + }, [http]); +}; + +export type AssetCriticality = SnakeToCamelCase; + +export type FetchEntitiesListParams = SnakeToCamelCase; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/entity_store.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/entity_store.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/entity_store.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/entity_store.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_calculate_entity_risk_score.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_calculate_entity_risk_score.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_calculate_entity_risk_score.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_calculate_entity_risk_score.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_calculate_entity_risk_score.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_calculate_entity_risk_score.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_calculate_entity_risk_score.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_calculate_entity_risk_score.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_configure_risk_engine_saved_object.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_configure_risk_engine_saved_object.ts new file mode 100644 index 0000000000000..a45cc84075972 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_configure_risk_engine_saved_object.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { UseMutationOptions } from '@tanstack/react-query'; +import { useMutation } from '@tanstack/react-query'; +import type { TaskManagerUnavailableResponse } from '../../../../common/api/entity_analytics/common'; +import { useEntityAnalyticsRoutes } from '../api'; +import type { ConfigureRiskEngineSavedObjectResponse } from '../../../../common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen'; + +interface ConfigureRiskEngineParams { + includeClosedAlerts: boolean; + range: { start: string; end: string }; +} + +export const useConfigureSORiskEngineMutation = ( + options?: UseMutationOptions< + ConfigureRiskEngineSavedObjectResponse, + { body: ConfigureRiskEngineSavedObjectResponse | TaskManagerUnavailableResponse }, + ConfigureRiskEngineParams + > +) => { + const { updateSavedObjectConfiguration } = useEntityAnalyticsRoutes(); + + return useMutation< + ConfigureRiskEngineSavedObjectResponse, + { body: ConfigureRiskEngineSavedObjectResponse | TaskManagerUnavailableResponse }, + ConfigureRiskEngineParams + >(async (params: ConfigureRiskEngineParams) => { + await updateSavedObjectConfiguration({ + exclude_alert_statuses: params.includeClosedAlerts ? [] : ['closed'], + range: params.range, + }); + return { risk_engine_saved_object_configured: true }; + }, options); +}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts similarity index 87% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts index 96a4453815125..bc488786cff65 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts @@ -17,11 +17,12 @@ export const useRiskScorePreview = ({ data_view_id: dataViewId, range, filter, + exclude_alert_statuses: excludeAlertStatuses, }: UseRiskScorePreviewParams) => { const { fetchRiskScorePreview } = useEntityAnalyticsRoutes(); return useQuery( - ['POST', 'FETCH_PREVIEW_RISK_SCORE', range, filter], + ['POST', 'FETCH_PREVIEW_RISK_SCORE', range, filter, excludeAlertStatuses], async ({ signal }) => { if (!dataViewId) { return; @@ -49,6 +50,10 @@ export const useRiskScorePreview = ({ params.filter = filter; } + if (excludeAlertStatuses) { + params.exclude_alert_statuses = excludeAlertStatuses; + } + const response = await fetchRiskScorePreview({ signal, params }); return response; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_refetch_overview_page_risk_score.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_refetch_overview_page_risk_score.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_refetch_overview_page_risk_score.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_refetch_overview_page_risk_score.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_refetch_query_by_id.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_refetch_query_by_id.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_refetch_query_by_id.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_refetch_query_by_id.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_privileges.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_privileges.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_settings.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_settings.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_settings.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_settings.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts similarity index 83% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts index 14ab3fc7ca15b..3c1aececa8666 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts @@ -7,6 +7,8 @@ import type { UseQueryOptions } from '@tanstack/react-query'; import { useQuery, useQueryClient } from '@tanstack/react-query'; import { useCallback } from 'react'; +import moment from 'moment'; +import { i18n } from '@kbn/i18n'; import type { RiskEngineStatusResponse } from '../../../../common/api/entity_analytics/risk_engine/engine_status_route.gen'; import { RiskEngineStatusEnum } from '../../../../common/api/entity_analytics/risk_engine/engine_status_route.gen'; import { useEntityAnalyticsRoutes } from '../api'; @@ -38,6 +40,22 @@ export const useIsNewRiskScoreModuleInstalled = (): RiskScoreModuleStatus => { return { isLoading: false, installed: !!riskEngineStatus?.isNewRiskScoreModuleInstalled }; }; +export const useRiskEngineCountdownTime = ( + riskEngineStatus: RiskEngineStatus | undefined +): string => { + const { status, runAt } = riskEngineStatus?.risk_engine_task_status || {}; + const isRunning = status === 'running' || (!!runAt && new Date(runAt) < new Date()); + + return isRunning + ? i18n.translate( + 'xpack.securitySolution.entityAnalytics.assetCriticalityResultStep.riskEngine.nowRunningMessage', + { + defaultMessage: 'Now running', + } + ) + : moment(runAt).fromNow(true); +}; + export interface RiskEngineStatus extends RiskEngineStatusResponse { isUpdateAvailable: boolean; isNewRiskScoreModuleInstalled: boolean; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_feature_status.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_feature_status.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_feature_status.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_feature_status.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_feature_status.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_feature_status.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_feature_status.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_feature_status.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_kpi.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_kpi.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_kpi.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_kpi.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_schedule_now_risk_engine_mutation.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_schedule_now_risk_engine_mutation.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_schedule_now_risk_engine_mutation.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_schedule_now_risk_engine_mutation.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_schedule_now_risk_engine_mutation.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_schedule_now_risk_engine_mutation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_schedule_now_risk_engine_mutation.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/hooks/use_schedule_now_risk_engine_mutation.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/types.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/api/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/api/types.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/get_start_date_from_risk_score.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/get_start_date_from_risk_score.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/common/get_start_date_from_risk_score.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/get_start_date_from_risk_score.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/get_start_date_from_risk_score.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/get_start_date_from_risk_score.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/common/get_start_date_from_risk_score.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/get_start_date_from_risk_score.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/index.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/common/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/index.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/user_has_risk_engine_read_permissions.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/user_has_risk_engine_read_permissions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/common/user_has_risk_engine_read_permissions.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/user_has_risk_engine_read_permissions.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/user_has_risk_engine_read_permissions.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/user_has_risk_engine_read_permissions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/common/user_has_risk_engine_read_permissions.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/user_has_risk_engine_read_permissions.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/common/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/__snapshots__/risk_score_configuration_section.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/__snapshots__/risk_score_configuration_section.test.tsx.snap new file mode 100644 index 0000000000000..9115b2f118516 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/__snapshots__/risk_score_configuration_section.test.tsx.snap @@ -0,0 +1,41 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RiskScoreConfigurationSection renders correctly 1`] = ` + + +
    + +
    + +
    + +
    +
    + + +

    + Enable this option to factor both open and closed alerts into the risk engine + calculations. Including closed alerts helps provide a more comprehensive risk assessment + based on past incidents, leading to more accurate scoring and insights. +

    +
    +
    +`; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_filter.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.stories.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_selector.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/index.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/index.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/use_asset_criticality.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/asset_criticality_file_uploader.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/asset_criticality_file_uploader.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/asset_criticality_file_uploader.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/asset_criticality_file_uploader.stories.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/asset_criticality_file_uploader.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/asset_criticality_file_uploader.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/asset_criticality_file_uploader.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/asset_criticality_file_uploader.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.tsx index 432e03c231a4d..187dc67ff1beb 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/schedule_risk_engine_callout.tsx @@ -12,15 +12,17 @@ import { EuiText, EuiFlexItem, } from '@elastic/eui'; -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { RiskEngineStatusEnum } from '../../../../../common/api/entity_analytics'; import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; -import { formatTimeFromNow } from '../helpers'; import { useScheduleNowRiskEngineMutation } from '../../../api/hooks/use_schedule_now_risk_engine_mutation'; -import { useRiskEngineStatus } from '../../../api/hooks/use_risk_engine_status'; +import { + useRiskEngineStatus, + useRiskEngineCountdownTime, +} from '../../../api/hooks/use_risk_engine_status'; const TEN_SECONDS = 10000; @@ -29,7 +31,7 @@ export const ScheduleRiskEngineCallout: React.FC = () => { refetchInterval: TEN_SECONDS, structuralSharing: false, // Force the component to rerender after every Risk Engine Status API call }); - + const isRunning = riskEngineStatus?.risk_engine_task_status?.status === 'running'; const { addSuccess, addError } = useAppToasts(); const { isLoading: isLoadingRiskEngineSchedule, mutate: scheduleRiskEngineMutation } = useScheduleNowRiskEngineMutation({ @@ -53,25 +55,7 @@ export const ScheduleRiskEngineCallout: React.FC = () => { }), }); - const { status, runAt } = riskEngineStatus?.risk_engine_task_status || {}; - - const isRunning = useMemo( - () => status === 'running' || (!!runAt && new Date(runAt) < new Date()), - [runAt, status] - ); - - const countDownText = useMemo( - () => - isRunning - ? i18n.translate( - 'xpack.securitySolution.entityAnalytics.assetCriticalityResultStep.riskEngine.nowRunningMessage', - { - defaultMessage: 'Now running', - } - ) - : formatTimeFromNow(riskEngineStatus?.risk_engine_task_status?.runAt), - [isRunning, riskEngineStatus?.risk_engine_task_status?.runAt] - ); + const countDownText = useRiskEngineCountdownTime(riskEngineStatus); const scheduleRiskEngine = useCallback(() => { scheduleRiskEngineMutation(); diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/constants.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/helpers.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/index.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/index.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/types.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/types.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/enable_risk_score/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/enable_risk_score/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/enable_risk_score/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/enable_risk_score/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/enable_risk_score/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/enable_risk_score/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/enable_risk_score/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/enable_risk_score/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/anomalies_count_link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/anomalies_count_link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/anomalies_count_link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/anomalies_count_link.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/anomalies_count_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/anomalies_count_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/anomalies_count_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/anomalies_count_link.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/columns.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/anomalies_tab_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/anomalies_tab_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/anomalies_tab_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/anomalies_tab_link.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/enable_job.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/enable_job.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/enable_job.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/enable_job.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/enable_job.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/enable_job.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/enable_job.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/enable_job.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/total_anomalies.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/total_anomalies.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/total_anomalies.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/total_anomalies.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/total_anomalies.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/total_anomalies.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/total_anomalies.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/components/total_anomalies.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/query/index.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/query/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/query/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/query/index.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_anomalies/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_header/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/chart_content.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/chart_content.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/chart_content.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/chart_content.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/chart_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/chart_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/chart_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/chart_content.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/columns.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/header_content.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/header_content.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/header_content.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/header_content.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/header_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/header_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/header_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/header_content.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/use_entity.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/use_entity.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/use_entity.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/use_entity.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/use_entity.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/use_entity.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/use_entity.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_analytics_risk_score/use_entity.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/action_column.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/action_column.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/action_column.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/action_column.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/action_column.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/action_column.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/action_column.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/action_column.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/utility_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/utility_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/utility_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/utility_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/utility_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/utility_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/utility_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/components/utility_bar.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions_panels.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions_panels.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions_panels.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions_panels.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions_panels.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions_panels.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions_panels.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/hooks/use_risk_input_actions_panels.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/mocks/index.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/mocks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/mocks/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/mocks/index.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/index.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/index.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/risk_inputs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/risk_inputs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/risk_inputs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/risk_inputs.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/risk_inputs_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/risk_inputs_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/risk_inputs_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_details_flyout/tabs/risk_inputs/risk_inputs_tab.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_enablement_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_enablement_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_enablement_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_enablement_panel.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_entity_store_panels.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_entity_store_panels.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_entity_store_panels.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/dashboard_entity_store_panels.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/enablement_modal.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/enablement_modal.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/enablement_modal.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/enablement_modal.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/enablement_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/enablement_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/enablement_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/enablement_modal.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/components/engine_components_status.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/components/engine_components_status.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/components/engine_components_status.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/components/engine_components_status.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/components/engine_components_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/components/engine_components_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/components/engine_components_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/components/engine_components_status.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/hooks/use_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/hooks/use_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/hooks/use_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/hooks/use_columns.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/engines_status/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/entity_source_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/entity_source_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/entity_source_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/entity_source_filter.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/missing_privileges_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/missing_privileges_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/components/missing_privileges_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/components/missing_privileges_callout.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/constants.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/entities_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/entities_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/entities_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/entities_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/entities_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/entities_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/entities_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/entities_list.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_columns.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_query.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_query.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_query.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_query.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_query.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_query.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_query.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_query.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entity_engine_privileges.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entity_engine_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entity_engine_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entity_engine_privileges.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entity_store.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entity_store.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entity_store.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entity_store.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/types.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/entity_store/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/types.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/host_risk_score_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_details_tab_body/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/risk_engine_privileges_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/risk_engine_privileges_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/risk_engine_privileges_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/risk_engine_privileges_callout.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_engine_privileges_callout/translations.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_information/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_information/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_information/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_information/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_information/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_information/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score/constants.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.test.tsx new file mode 100644 index 0000000000000..93a7e0776d925 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.test.tsx @@ -0,0 +1,120 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { RiskScoreConfigurationSection } from './risk_score_configuration_section'; +import { shallow, mount } from 'enzyme'; +import { act } from 'react-dom/test-utils'; +import { EuiSuperDatePicker, EuiSwitch } from '@elastic/eui'; +import * as i18n from '../translations'; +import { useAppToasts } from '../../common/hooks/use_app_toasts'; +import { useConfigureSORiskEngineMutation } from '../api/hooks/use_configure_risk_engine_saved_object'; + +jest.mock('../../common/lib/kibana'); +jest.mock('../../common/hooks/use_app_toasts'); +jest.mock('../api/hooks/use_configure_risk_engine_saved_object'); + +describe('RiskScoreConfigurationSection', () => { + const mockConfigureSO = useConfigureSORiskEngineMutation as jest.Mock; + const defaultProps = { + includeClosedAlerts: false, + setIncludeClosedAlerts: jest.fn(), + from: 'now-30m', + to: 'now', + onDateChange: jest.fn(), + }; + + const mockAddSuccess = jest.fn(); + const mockMutate = jest.fn(); + + beforeEach(() => { + (useAppToasts as jest.Mock).mockReturnValue({ addSuccess: mockAddSuccess }); + mockConfigureSO.mockReturnValue({ mutate: mockMutate }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('renders correctly', () => { + const wrapper = shallow(); + expect(wrapper).toMatchSnapshot(); + }); + + it('toggles includeClosedAlerts', () => { + const wrapper = mount( + + ); + wrapper.find(EuiSwitch).simulate('click'); + expect(defaultProps.setIncludeClosedAlerts).toHaveBeenCalledWith(true); + }); + + it('calls onDateChange on date change', () => { + const wrapper = mount(); + wrapper.find(EuiSuperDatePicker).props().onTimeChange({ start: 'now-30m', end: 'now' }); + expect(defaultProps.onDateChange).toHaveBeenCalledWith({ start: 'now-30m', end: 'now' }); + }); + + it('shows bottom bar when changes are made', async () => { + const wrapper = mount( + + ); + wrapper.find(EuiSwitch).simulate('click'); + wrapper.find(EuiSuperDatePicker).props().onTimeChange({ start: 'now-14m', end: 'now' }); + wrapper.update(); + await new Promise((resolve) => setTimeout(resolve, 0)); // wait for the component to update + expect(wrapper.find('EuiBottomBar').exists()).toBe(true); + }); + + it('saves changes', () => { + const wrapper = mount( + + ); + + // Simulate clicking the switch + const closedAlertsToggle = wrapper.find('button[data-test-subj="includeClosedAlertsSwitch"]'); + expect(closedAlertsToggle.exists()).toBe(true); + closedAlertsToggle.simulate('click'); + + wrapper.update(); + + const saveChangesButton = wrapper.find('button[data-test-subj="riskScoreSaveButton"]'); + expect(saveChangesButton.exists()).toBe(true); + saveChangesButton.simulate('click'); + const callArgs = mockMutate.mock.calls[0][0]; + expect(callArgs).toEqual({ + includeClosedAlerts: true, + range: { start: 'now-30m', end: 'now' }, + }); + }); + + it('shows success toast on save', () => { + const wrapper = mount( + + ); + + act(() => { + wrapper.find('button[data-test-subj="includeClosedAlertsSwitch"]').simulate('click'); + }); + wrapper.update(); + + act(() => { + wrapper.find('button[data-test-subj="riskScoreSaveButton"]').simulate('click'); + }); + + act(() => { + mockMutate.mock.calls[0][1].onSuccess(); + }); + + expect(mockAddSuccess).toHaveBeenCalledWith( + i18n.RISK_ENGINE_SAVED_OBJECT_CONFIGURATION_SUCCESS, + { + toastLifeTimeMs: 5000, + } + ); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.tsx new file mode 100644 index 0000000000000..fa0f33e5b6040 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.tsx @@ -0,0 +1,199 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useEffect, useRef } from 'react'; +import { + EuiSuperDatePicker, + EuiButton, + EuiText, + EuiFlexGroup, + EuiSwitch, + EuiFlexItem, + EuiBottomBar, + EuiButtonEmpty, + EuiSpacer, + useEuiTheme, +} from '@elastic/eui'; +import useLocalStorage from 'react-use/lib/useLocalStorage'; +import { useAppToasts } from '../../common/hooks/use_app_toasts'; +import * as i18n from '../translations'; +import { useConfigureSORiskEngineMutation } from '../api/hooks/use_configure_risk_engine_saved_object'; +import { getEntityAnalyticsRiskScorePageStyles } from './risk_score_page_styles'; + +export const RiskScoreConfigurationSection = ({ + includeClosedAlerts, + setIncludeClosedAlerts, + from, + to, + onDateChange, +}: { + includeClosedAlerts: boolean; + setIncludeClosedAlerts: (value: boolean) => void; + from: string; + to: string; + onDateChange: ({ start, end }: { start: string; end: string }) => void; +}) => { + const { euiTheme } = useEuiTheme(); + const styles = getEntityAnalyticsRiskScorePageStyles(euiTheme); + const [start, setFrom] = useState(from); + const [end, setTo] = useState(to); + const [isLoading, setIsLoading] = useState(false); + const [showBar, setShowBar] = useState(false); + const { addSuccess } = useAppToasts(); + const initialIncludeClosedAlerts = useRef(includeClosedAlerts); + const initialStart = useRef(from); + const initialEnd = useRef(to); + + const [savedIncludeClosedAlerts, setSavedIncludeClosedAlerts] = useLocalStorage( + 'includeClosedAlerts', + includeClosedAlerts ?? false + ); + const [savedStart, setSavedStart] = useLocalStorage( + 'entityAnalytics:riskScoreConfiguration:fromDate', + from + ); + const [savedEnd, setSavedEnd] = useLocalStorage( + 'entityAnalytics:riskScoreConfiguration:toDate', + to + ); + + useEffect(() => { + if (savedIncludeClosedAlerts !== null && savedIncludeClosedAlerts !== undefined) { + initialIncludeClosedAlerts.current = savedIncludeClosedAlerts; + setIncludeClosedAlerts(savedIncludeClosedAlerts); + } + if (savedStart && savedEnd) { + initialStart.current = savedStart; + initialEnd.current = savedEnd; + setFrom(savedStart); + setTo(savedEnd); + } + }, [savedIncludeClosedAlerts, savedStart, savedEnd, setIncludeClosedAlerts]); + + const onRefresh = ({ start: newStart, end: newEnd }: { start: string; end: string }) => { + setFrom(newStart); + setTo(newEnd); + onDateChange({ start: newStart, end: newEnd }); + checkForChanges(newStart, newEnd, includeClosedAlerts); + }; + + const handleToggle = () => { + const newValue = !includeClosedAlerts; + setIncludeClosedAlerts(newValue); + checkForChanges(start, end, newValue); + }; + + const checkForChanges = (newStart: string, newEnd: string, newIncludeClosedAlerts: boolean) => { + if ( + newStart !== initialStart.current || + newEnd !== initialEnd.current || + newIncludeClosedAlerts !== initialIncludeClosedAlerts.current + ) { + setShowBar(true); + } else { + setShowBar(false); + } + }; + + const { mutate } = useConfigureSORiskEngineMutation(); + + const handleSave = () => { + setIsLoading(true); + mutate( + { + includeClosedAlerts, + range: { start, end }, + }, + { + onSuccess: () => { + setShowBar(false); + addSuccess(i18n.RISK_ENGINE_SAVED_OBJECT_CONFIGURATION_SUCCESS, { + toastLifeTimeMs: 5000, + }); + setIsLoading(false); + + initialStart.current = start; + initialEnd.current = end; + initialIncludeClosedAlerts.current = includeClosedAlerts; + + setSavedIncludeClosedAlerts(includeClosedAlerts); + setSavedStart(start); + setSavedEnd(end); + }, + onError: () => { + setIsLoading(false); + }, + } + ); + }; + + return ( + <> + +
    + +
    + +
    + +
    +
    + + +

    {i18n.RISK_ENGINE_INCLUDE_CLOSED_ALERTS_DESCRIPTION}

    +
    + {showBar && ( + + + + + { + setShowBar(false); + setFrom(initialStart.current); + setTo(initialEnd.current); + setIncludeClosedAlerts(initialIncludeClosedAlerts.current); + }} + > + {i18n.DISCARD_CHANGES} + + + + + {i18n.SAVE_CHANGES} + + + + + + )} + + ); +}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx similarity index 87% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx index 63ff39ebca7dc..1c245dc779d01 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx @@ -10,11 +10,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiHealth, - EuiHorizontalRule, - EuiLink, EuiSpacer, EuiSwitch, - EuiTitle, EuiLoadingSpinner, EuiBadge, EuiButtonEmpty, @@ -28,8 +25,6 @@ import { EuiCallOut, EuiAccordion, } from '@elastic/eui'; -import { LinkAnchor } from '@kbn/security-solution-navigation/links'; -import { SecurityPageName } from '@kbn/security-solution-navigation'; import type { RiskEngineStatus } from '../../../common/api/entity_analytics/risk_engine/engine_status_route.gen'; import { RiskEngineStatusEnum } from '../../../common/api/entity_analytics/risk_engine/engine_status_route.gen'; import * as i18n from '../translations'; @@ -38,8 +33,6 @@ import { useInitRiskEngineMutation } from '../api/hooks/use_init_risk_engine_mut import { useEnableRiskEngineMutation } from '../api/hooks/use_enable_risk_engine_mutation'; import { useDisableRiskEngineMutation } from '../api/hooks/use_disable_risk_engine_mutation'; import { useAppToasts } from '../../common/hooks/use_app_toasts'; -import { RiskInformationFlyout } from './risk_information'; -import { useOnOpenCloseHandler } from '../../helper_hooks'; import type { RiskEngineMissingPrivilegesResponse } from '../hooks/use_missing_risk_engine_privileges'; const MIN_WIDTH_TO_PREVENT_LABEL_FROM_MOVING = '50px'; @@ -144,12 +137,12 @@ const RiskEngineHealth: React.FC<{ currentRiskEngineStatus?: RiskEngineStatus | currentRiskEngineStatus, }) => { if (!currentRiskEngineStatus) { - return {'-'}; + return {'-'}; } if (currentRiskEngineStatus === RiskEngineStatusEnum.ENABLED) { return {i18n.RISK_SCORE_MODULE_STATUS_ON}; } - return {i18n.RISK_SCORE_MODULE_STATUS_OFF}; + return {i18n.RISK_SCORE_MODULE_STATUS_OFF}; }; const RiskEngineStatusRow: React.FC<{ @@ -181,7 +174,6 @@ const RiskEngineStatusRow: React.FC<{ data-test-subj="risk-score-switch" checked={currentRiskEngineStatus === RiskEngineStatusEnum.ENABLED} onChange={onSwitchClick} - compressed disabled={btnIsDisabled} aria-describedby={'switchRiskModule'} /> @@ -221,8 +213,6 @@ export const RiskScoreEnableSection: React.FC<{ const closeModal = () => setIsModalVisible(false); const showModal = () => setIsModalVisible(true); - const [isFlyoutVisible, handleOnOpen, handleOnClose] = useOnOpenCloseHandler(); - const isLoading = initRiskEngineMutation.isLoading || enableRiskEngineMutation.isLoading || @@ -254,9 +244,6 @@ export const RiskScoreEnableSection: React.FC<{ return ( <> <> - -

    {i18n.RISK_SCORE_MODULE_STATUS}

    -
    {initRiskEngineMutation.isError && } {disableRiskEngineMutation.isError && ( @@ -273,12 +260,10 @@ export const RiskScoreEnableSection: React.FC<{ isLoading={initRiskEngineMutation.isLoading} closeModal={closeModal} /> - - {i18n.ENTITY_RISK_SCORING} {isUpdateAvailable && {i18n.UPDATE_AVAILABLE}} @@ -304,35 +289,15 @@ export const RiskScoreEnableSection: React.FC<{ )} - - <> - -

    {i18n.USEFUL_LINKS}

    -
    - -
      -
    • - {i18n.EA_DASHBOARD_LINK} - -
    • -
    • - - {i18n.EA_DOCS_ENTITY_RISK_SCORE} - - {isFlyoutVisible && } - -
    • -
    - ); }; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/entity_analytics_doc_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/entity_analytics_doc_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/entity_analytics_doc_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/entity_analytics_doc_link.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_enable_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_enable_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_enable_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_enable_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_enable_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_enable_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_enable_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_enable_button.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_header_title.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_header_title.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_header_title.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_header_title.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_no_data_detected.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_no_data_detected.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_no_data_detected.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_no_data_detected.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_restart_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_restart_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_restart_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_restart_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_restart_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_restart_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_restart_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/risk_score_restart_button.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/use_risk_score_toast_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/use_risk_score_toast_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/use_risk_score_toast_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/use_risk_score_toast_content.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_onboarding/utils.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_over_time/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_page_styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_page_styles.tsx new file mode 100644 index 0000000000000..ea3bae7e87187 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_page_styles.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import styled from '@emotion/styled'; +import type { EuiThemeComputed } from '@elastic/eui'; +interface EntityAnalyticsRiskScorePageStyles { + VerticalSeparator: ReturnType; +} + +export const getEntityAnalyticsRiskScorePageStyles = ( + euiTheme: EuiThemeComputed +): EntityAnalyticsRiskScorePageStyles => ({ + VerticalSeparator: styled.div` + :before { + content: ''; + height: ${euiTheme.size.l}; + border-left: ${euiTheme.border.width.thin} solid ${euiTheme.colors.lightShade}; + } + `, +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx new file mode 100644 index 0000000000000..f818eaf429cd2 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx @@ -0,0 +1,209 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useMemo } from 'react'; +import { + EuiAccordion, + EuiPanel, + EuiSpacer, + EuiTitle, + EuiCallOut, + EuiButton, + EuiIcon, + EuiText, + EuiLoadingSpinner, + EuiFlexGroup, + EuiFlexItem, + EuiCode, +} from '@elastic/eui'; +import type { BoolQuery } from '@kbn/es-query'; +import { FormattedMessage } from '@kbn/i18n-react'; +import type { EntityRiskScoreRecord } from '../../../common/api/entity_analytics/common'; +import { + RiskScoreEntity, + RISK_SCORE_INDEX_PATTERN, +} from '../../../common/entity_analytics/risk_engine'; +import { RiskScorePreviewTable } from './risk_score_preview_table'; +import * as i18n from '../translations'; +import { useRiskScorePreview } from '../api/hooks/use_preview_risk_scores'; +import { SourcererScopeName } from '../../sourcerer/store/model'; +import { useSourcererDataView } from '../../sourcerer/containers'; +import type { RiskEngineMissingPrivilegesResponse } from '../hooks/use_missing_risk_engine_privileges'; +import { userHasRiskEngineReadPermissions } from '../common'; +interface IRiskScorePreviewPanel { + showMessage: string; + hideMessage: string; + isLoading: boolean; + items: EntityRiskScoreRecord[]; + type: RiskScoreEntity; +} + +const getRiskiestScores = (scores: EntityRiskScoreRecord[] = [], field: string) => + scores + ?.filter((item) => item?.id_field === field) + ?.sort((a, b) => b?.calculated_score_norm - a?.calculated_score_norm) + ?.slice(0, 5) || []; + +export const RiskScorePreviewSection: React.FC<{ + privileges: RiskEngineMissingPrivilegesResponse; + includeClosedAlerts: boolean; + from: string; + to: string; +}> = ({ privileges, includeClosedAlerts, from, to }) => { + const sectionBody = useMemo(() => { + if (privileges.isLoading) { + return ( + + + + + + ); + } + if (userHasRiskEngineReadPermissions(privileges)) { + return ; + } + + return ; + }, [privileges, includeClosedAlerts, from, to]); + + return ( + <> + +

    {i18n.PREVIEW}

    +
    + + {sectionBody} + + ); +}; + +const MissingPermissionsCallout = () => { + return ( + + + {RISK_SCORE_INDEX_PATTERN}, + }} + /> + + + ); +}; + +const RiskScorePreviewPanel = ({ + items, + showMessage, + hideMessage, + isLoading, + type, +}: IRiskScorePreviewPanel) => { + const [trigger, setTrigger] = useState<'closed' | 'open'>('open'); + const onToggle = (isOpen: boolean) => { + const newState = isOpen ? 'open' : 'closed'; + setTrigger(newState); + }; + + return ( + + } + > + <> + + + + + + ); +}; + +const RiskEnginePreview: React.FC<{ includeClosedAlerts: boolean; from: string; to: string }> = ({ + includeClosedAlerts, + from, + to, +}) => { + const [filters] = useState<{ bool: BoolQuery }>({ + bool: { must: [], filter: [], should: [], must_not: [] }, + }); + + const { sourcererDataView } = useSourcererDataView(SourcererScopeName.detections); + + const { data, isLoading, refetch, isError } = useRiskScorePreview({ + data_view_id: sourcererDataView.title, + filter: filters, + range: { + start: from, + end: to, + }, + exclude_alert_statuses: includeClosedAlerts ? [] : ['closed'], + }); + + const hosts = getRiskiestScores(data?.scores.host, 'host.name'); + const users = getRiskiestScores(data?.scores.user, 'user.name'); + + if (isError) { + return ( + +

    {i18n.PREVIEW_ERROR_MESSAGE}

    + refetch()} + > + {i18n.PREVIEW_ERROR_TRY_AGAIN} + +
    + ); + } + + return ( + <> + {i18n.PREVIEW_DESCRIPTION} + + + + + + + + + + + ); +}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_preview_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_preview_table.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_update_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_update_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_update_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_update_panel.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_useful_links_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_useful_links_section.tsx new file mode 100644 index 0000000000000..d03dea2679c27 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_useful_links_section.tsx @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { EuiLink, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { LinkAnchor } from '@kbn/security-solution-navigation/links'; +import { SecurityPageName } from '@kbn/security-solution-navigation'; +import styled from '@emotion/styled'; +import { euiThemeVars } from '@kbn/ui-theme'; +import * as i18n from '../translations'; +import { RiskInformationFlyout } from './risk_information'; + +const StyledList = styled.ul` + list-style-type: disc; + padding-left: ${euiThemeVars.euiSizeM}; +`; + +export const RiskScoreUsefulLinksSection = () => { + const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); + + const handleOnOpen = () => setIsFlyoutVisible(true); + const handleOnClose = () => setIsFlyoutVisible(false); + + return ( + <> + +

    {i18n.USEFUL_LINKS}

    +
    + + +
  • + {i18n.EA_DASHBOARD_LINK} + +
  • +
  • + + {i18n.EA_DOCS_ENTITY_RISK_SCORE} + + {isFlyoutVisible && } + +
  • +
    + + ); +}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/common.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/common.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/common.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/common.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.stories.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_filter.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_filter.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_filter.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_filter.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_filter.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/types.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/severity/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/types.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/styled_basic_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/styled_basic_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/styled_basic_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/styled_basic_table.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors_alerts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors_alerts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors_alerts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors_alerts/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors_alerts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors_alerts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors_alerts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/top_risk_score_contributors_alerts/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_tab_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_tab_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_tab_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_tab_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/user_risk_score_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/index.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/index.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/ingest_pipelines.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/ingest_pipelines.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/ingest_pipelines.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/ingest_pipelines.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/ingest_pipelines.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/ingest_pipelines.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/ingest_pipelines.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/ingest_pipelines.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/onboarding.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/onboarding.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/onboarding.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/onboarding.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/saved_objects.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/stored_scripts.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/stored_scripts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/stored_scripts.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/stored_scripts.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/stored_scripts.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/stored_scripts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/stored_scripts.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/stored_scripts.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/transforms.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/transforms.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/transforms.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/transforms.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/transforms.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/transforms.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/transforms.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/transforms.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/translations.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/types.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/deprecated_risk_engine/api/types.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_missing_risk_engine_privileges.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_missing_risk_engine_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/hooks/use_missing_risk_engine_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_missing_risk_engine_privileges.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_risk_contributing_alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_risk_contributing_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/hooks/use_risk_contributing_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_risk_contributing_alerts.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/images/entity_store_dashboard.png b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/images/entity_store_dashboard.png similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/images/entity_store_dashboard.png rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/images/entity_store_dashboard.png diff --git a/x-pack/plugins/security_solution/public/entity_analytics/index.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/jest.config.js new file mode 100644 index 0000000000000..c402b2783605e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/entity_analytics'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/entity_analytics', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_donut.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_donut.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_donut.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_donut.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_over_time_area.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_over_time_area.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_over_time_area.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_over_time_area.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_summary.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_summary.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_summary.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_summary.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_donut.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_donut.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_donut.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_donut.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_donut.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_donut.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_donut.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_donut.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_over_time_area.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_over_time_area.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_over_time_area.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_over_time_area.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_over_time_area.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_over_time_area.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_over_time_area.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_over_time_area.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.ts similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.ts rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_analytics_dashboard.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/pages/entity_analytics_dashboard.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/pages/entity_analytics_dashboard.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/pages/entity_analytics_dashboard.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx new file mode 100644 index 0000000000000..84ce908d94ee5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx @@ -0,0 +1,172 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useCallback } from 'react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiPageHeader, + EuiHorizontalRule, + EuiButton, + EuiText, + useEuiTheme, +} from '@elastic/eui'; +import moment from 'moment'; +import { RiskScorePreviewSection } from '../components/risk_score_preview_section'; +import { RiskScoreEnableSection } from '../components/risk_score_enable_section'; +import { ENTITY_ANALYTICS_RISK_SCORE } from '../../app/translations'; +import { RiskEnginePrivilegesCallOut } from '../components/risk_engine_privileges_callout'; +import { useMissingRiskEnginePrivileges } from '../hooks/use_missing_risk_engine_privileges'; +import { RiskScoreUsefulLinksSection } from '../components/risk_score_useful_links_section'; +import { RiskScoreConfigurationSection } from '../components/risk_score_configuration_section'; +import { useRiskEngineStatus } from '../api/hooks/use_risk_engine_status'; +import { useScheduleNowRiskEngineMutation } from '../api/hooks/use_schedule_now_risk_engine_mutation'; +import { useAppToasts } from '../../common/hooks/use_app_toasts'; +import * as i18n from '../translations'; +import { getEntityAnalyticsRiskScorePageStyles } from '../components/risk_score_page_styles'; + +const TEN_SECONDS = 10000; + +export const EntityAnalyticsManagementPage = () => { + const { euiTheme } = useEuiTheme(); + const styles = getEntityAnalyticsRiskScorePageStyles(euiTheme); + const privileges = useMissingRiskEnginePrivileges(); + const [includeClosedAlerts, setIncludeClosedAlerts] = useState(false); + const [from, setFrom] = useState(localStorage.getItem('dateStart') || 'now-30m'); + const [to, setTo] = useState(localStorage.getItem('dateEnd') || 'now'); + const { data: riskEngineStatus } = useRiskEngineStatus({ + refetchInterval: TEN_SECONDS, + structuralSharing: false, // Force the component to rerender after every Risk Engine Status API call + }); + const currentRiskEngineStatus = riskEngineStatus?.risk_engine_status; + const runEngineEnabled = currentRiskEngineStatus === 'ENABLED'; + const [isLoading, setIsLoading] = useState(false); + const { mutate: scheduleNowRiskEngine } = useScheduleNowRiskEngineMutation(); + const { addSuccess, addError } = useAppToasts(); + + const handleRunEngineClick = async () => { + setIsLoading(true); + try { + scheduleNowRiskEngine(); + + if (!isLoading) { + addSuccess(i18n.RISK_SCORE_ENGINE_RUN_SUCCESS, { toastLifeTimeMs: 5000 }); + } + } catch (error) { + addError(error, { + title: i18n.RISK_SCORE_ENGINE_RUN_FAILURE, + }); + } finally { + setIsLoading(false); + } + }; + + const handleIncludeClosedAlertsToggle = useCallback( + (value: boolean) => { + setIncludeClosedAlerts(value); + }, + [setIncludeClosedAlerts] + ); + + const handleDateChange = ({ start, end }: { start: string; end: string }) => { + setFrom(start); + setTo(end); + localStorage.setItem('dateStart', start); + localStorage.setItem('dateEnd', end); + }; + + const { status, runAt } = riskEngineStatus?.risk_engine_task_status || {}; + + const isRunning = status === 'running' || (!!runAt && new Date(runAt) < new Date()); + + const formatTimeFromNow = (time: string | undefined): string => { + if (!time) { + return ''; + } + return i18n.RISK_ENGINE_NEXT_RUN_TIME(moment(time).fromNow(true)); + }; + + const countDownText = isRunning + ? 'Now running' + : formatTimeFromNow(riskEngineStatus?.risk_engine_task_status?.runAt); + + return ( + <> + + + {/* Page Title */} + + {ENTITY_ANALYTICS_RISK_SCORE} + + + {/* Controls Section */} + + + {/* Run Engine Section */} + {runEngineEnabled && ( + <> + {/* Run Engine Button */} + + {i18n.RUN_RISK_SCORE_ENGINE} + + + {/* Vertical Line */} + + + {/* Countdown Text */} +
    + + {countDownText} + +
    + + )} + + {/* Risk Score Enable Section */} +
    + +
    +
    +
    +
    + } + /> + + + + + + + + + + + + + + ); +}; + +EntityAnalyticsManagementPage.displayName = 'EntityAnalyticsManagementPage'; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_store_management_page.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/pages/entity_store_management_page.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/pages/entity_store_management_page.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/pages/entity_store_management_page.test.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_store_management_page.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/pages/entity_store_management_page.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/pages/entity_store_management_page.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/pages/entity_store_management_page.tsx diff --git a/x-pack/plugins/security_solution/public/entity_analytics/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/entity_analytics/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/entity_analytics/routes.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts new file mode 100644 index 0000000000000..5d75b8f795d55 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts @@ -0,0 +1,365 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const SHOW_HOSTS_RISK_SCORE = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.hosts.show', + { + defaultMessage: 'Show hosts', + } +); + +export const HIDE_HOSTS_RISK_SCORE = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.hosts.hide', + { + defaultMessage: 'Hide hosts', + } +); + +export const SHOW_USERS_RISK_SCORE = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.users.show', + { + defaultMessage: 'Show users', + } +); + +export const HIDE_USERS_RISK_SCORE = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.users.hide', + { + defaultMessage: 'Hide users', + } +); + +export const RISK_SCORE_MODULE_STATUS = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.status', + { + defaultMessage: 'Status', + } +); + +export const RISK_SCORE_MODULE_STATUS_ON = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.statusOn', + { + defaultMessage: 'On', + } +); + +export const RISK_SCORE_MODULE_STATUS_OFF = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.statusOff', + { + defaultMessage: 'Off', + } +); + +export const ENTITY_RISK_SCORING = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.entityRiskScoring', + { + defaultMessage: 'Entity risk score', + } +); + +export const USEFUL_LINKS = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.usefulLinks', + { + defaultMessage: 'Useful links', + } +); + +export const EA_DASHBOARD_LINK = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.eaDocsDashboard', + { + defaultMessage: 'Entity Analytics dashboard', + } +); + +export const EA_DOCS_RISK_HOSTS = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.eaDocsHosts', + { + defaultMessage: 'Host risk score', + } +); + +export const EA_DOCS_RISK_USERS = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.eaDocsUsers', + { + defaultMessage: 'User risk score', + } +); + +export const EA_DOCS_ENTITY_RISK_SCORE = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.eaDocsEntities', + { + defaultMessage: 'How is the risk score calculated?', + } +); + +export const PREVIEW_MISSING_PERMISSIONS_TITLE = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.missingPermissionsCallout.title', + { + defaultMessage: 'Insufficient index privileges to preview data', + } +); + +export const PREVIEW = i18n.translate('xpack.securitySolution.riskScore.riskScorePreview.preview', { + defaultMessage: 'Preview', +}); + +export const PREVIEW_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.previewDescription', + { + defaultMessage: + 'The entities shown in the preview are the riskiest found in the 1000 sampled during your chosen timeframe. They may not be the riskiest entities across all of your data.', + } +); + +export const PREVIEW_ERROR_TITLE = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.errorTitle', + { + defaultMessage: 'Preview failed', + } +); + +export const PREVIEW_ERROR_MESSAGE = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.errorMessage', + { + defaultMessage: 'Something went wrong when creating the preview. Please try again.', + } +); + +export const PREVIEW_ERROR_TRY_AGAIN = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.tryAgain', + { + defaultMessage: 'Try again', + } +); + +export const PREVIEW_QUERY_ERROR_TITLE = i18n.translate( + 'xpack.securitySolution.riskScore.riskScorePreview.queryErrorTitle', + { + defaultMessage: 'Invalid query', + } +); + +export const UPDATE_AVAILABLE = i18n.translate('xpack.securitySolution.riskScore.updateAvailable', { + defaultMessage: 'Update available', +}); + +export const START_UPDATE = i18n.translate('xpack.securitySolution.riskScore.startUpdate', { + defaultMessage: 'Start update', +}); + +export const UPDATING_RISK_ENGINE = i18n.translate( + 'xpack.securitySolution.riskScore.updatingRiskEngine', + { + defaultMessage: 'Updating risk engine...', + } +); + +export const UPDATE_RISK_ENGINE_MODAL_TITLE = i18n.translate( + 'xpack.securitySolution.riskScore.updateRiskEngineModa.title', + { + defaultMessage: 'Do you want to update the entity risk engine?', + } +); + +export const UPDATE_RISK_ENGINE_MODAL_EXISTING_USER_HOST_1 = i18n.translate( + 'xpack.securitySolution.riskScore.updateRiskEngineModal.existingUserHost_1', + { + defaultMessage: 'Existing user and host risk score transforms will be deleted', + } +); + +export const UPDATE_RISK_ENGINE_MODAL_EXISTING_USER_HOST_2 = i18n.translate( + 'xpack.securitySolution.riskScore.updateRiskEngineModal.existingUserHost_2', + { + defaultMessage: ', as they are no longer required.', + } +); + +export const UPDATE_RISK_ENGINE_MODAL_EXISTING_DATA_1 = i18n.translate( + 'xpack.securitySolution.riskScore.updateRiskEngineModal.existingData_1', + { + defaultMessage: 'Legacy risk score data will not be deleted', + } +); + +export const UPDATE_RISK_ENGINE_MODAL_EXISTING_DATA_2 = i18n.translate( + 'xpack.securitySolution.riskScore.updateRiskEngineModal.existingData_2', + { + defaultMessage: + ', it will still exist in the index but will no longer be available in the user interface. You will need to remove legacy risk score data manually.', + } +); + +export const UPDATE_RISK_ENGINE_MODAL_BUTTON_NO = i18n.translate( + 'xpack.securitySolution.riskScore.updateRiskEngineModal.buttonNo', + { + defaultMessage: 'No, not yet', + } +); + +export const UPDATE_RISK_ENGINE_MODAL_BUTTON_YES = i18n.translate( + 'xpack.securitySolution.riskScore.updateRiskEngineModal.buttonYes', + { + defaultMessage: 'Yes, update now!', + } +); + +export const ERROR_PANEL_TITLE = i18n.translate( + 'xpack.securitySolution.riskScore.errorPanel.title', + { + defaultMessage: 'There was an error', + } +); + +export const ERROR_PANEL_MESSAGE = i18n.translate( + 'xpack.securitySolution.riskScore.errorPanel.message', + { + defaultMessage: 'The risk engine status could not be changed. Fix the following and try again:', + } +); + +export const ERROR_PANEL_ERRORS = i18n.translate( + 'xpack.securitySolution.riskScore.errorPanel.errors', + { + defaultMessage: 'Errors', + } +); + +export const UPDATE_PANEL_TITLE = i18n.translate( + 'xpack.securitySolution.riskScore.updatePanel.title', + { + defaultMessage: 'New entity risk scoring engine available', + } +); + +export const UPDATE_PANEL_MESSAGE = i18n.translate( + 'xpack.securitySolution.riskScore.updatePanel.message', + { + defaultMessage: + 'A new entity risk scoring engine is available. Update now to get the latest features.', + } +); + +export const UPDATE_PANEL_GO_TO_MANAGE = i18n.translate( + 'xpack.securitySolution.riskScore.updatePanel.goToManage', + { + defaultMessage: 'Manage', + } +); + +export const UPDATE_PANEL_GO_TO_DISMISS = i18n.translate( + 'xpack.securitySolution.riskScore.updatePanel.Dismiss', + { + defaultMessage: 'Dismiss', + } +); + +export const getMaxSpaceTitle = (maxSpaces: number) => + i18n.translate('xpack.securitySolution.riskScore.maxSpacePanel.title', { + defaultMessage: + 'You cannot enable entity risk scoring in more than {maxSpaces, plural, =1 {# Kibana space} other {# Kibana spaces}}.', + values: { maxSpaces }, + }); + +export const MAX_SPACE_PANEL_MESSAGE = i18n.translate( + 'xpack.securitySolution.riskScore.maxSpacePanel.message', + { + defaultMessage: + 'You can disable entity risk scoring in the space it is currently enabled before enabling it in this space', + } +); + +export const CHECK_PRIVILEGES = i18n.translate( + 'xpack.securitySolution.riskScore.errors.privileges.check', + { + defaultMessage: 'Check privileges', + } +); + +export const NEED_TO_HAVE = i18n.translate( + 'xpack.securitySolution.riskScore.errors.privileges.needToHave', + { + defaultMessage: 'You need to have:', + } +); + +export const RISK_SCORE_MODULE_TURNED_ON = i18n.translate( + 'xpack.securitySolution.riskScore.moduleTurnedOn', + { + defaultMessage: 'Entity risk score has been turned on', + } +); + +export const RISK_SCORE_MODULE_TURNED_OFF = i18n.translate( + 'xpack.securitySolution.riskScore.moduleTurnedOff', + { + defaultMessage: 'Entity risk score has been turned off', + } +); + +export const RISK_SCORE_ENGINE_RUN_SUCCESS = i18n.translate( + 'xpack.securitySolution.riskScore.engineRunSuccess', + { + defaultMessage: 'Entity risk score engine started successfully', + } +); + +export const RISK_ENGINE_SAVED_OBJECT_CONFIGURATION_SUCCESS = i18n.translate( + 'xpack.securitySolution.riskScore.savedObject.configurationSuccess', + { + defaultMessage: 'Risk engine Saved Object configuration updated successfully', + } +); + +export const INCLUDE_CLOSED_ALERTS_LABEL = i18n.translate( + 'xpack.securitySolution.riskScore.includeClosedAlertsLabel', + { + defaultMessage: 'Include closed alerts for risk scoring', + } +); + +export const RISK_ENGINE_INCLUDE_CLOSED_ALERTS_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.riskScore.includeClosedAlertsDescription', + { + defaultMessage: `Enable this option to factor both open and closed alerts into the risk engine + calculations. Including closed alerts helps provide a more comprehensive risk assessment + based on past incidents, leading to more accurate scoring and insights.`, + } +); + +export const RISK_ENGINE_NEXT_RUN_TIME = (timeInMinutes: string) => + i18n.translate('xpack.securitySolution.riskScore.engineNextRunTime', { + defaultMessage: `Next engine run in {timeInMinutes}`, + values: { timeInMinutes }, + }); + +export const RUN_RISK_SCORE_ENGINE = i18n.translate('xpack.securitySolution.riskScore.runEngine', { + defaultMessage: 'Run Engine', +}); + +export const SAVE_CHANGES = i18n.translate( + 'xpack.securitySolution.riskScore.engineSavedObjectsaveChanges', + { + defaultMessage: 'Save', + } +); + +export const DISCARD_CHANGES = i18n.translate( + 'xpack.securitySolution.riskScore.engineSavedObject.discardChanges', + { + defaultMessage: 'Discard', + } +); + +export const RISK_SCORE_ENGINE_RUN_FAILURE = i18n.translate( + 'xpack.securitySolution.riskScore.engineRunSuccess', + { + defaultMessage: 'Entity risk score engine failed to start', + } +); diff --git a/x-pack/plugins/security_solution/public/exceptions/api/exception_api.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/api/exception_api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/api/exception_api.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/api/exception_api.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/api/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/api/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/api/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/api/index.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/api/list_api.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/api/list_api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/api/list_api.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/api/list_api.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/api/types.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/api/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/api/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/api/types.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/components/create_shared_exception_list/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/create_shared_exception_list/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/create_shared_exception_list/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/create_shared_exception_list/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/exceptions_list_card/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/exceptions_list_card/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/exceptions_list_card/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/exceptions_list_card/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/exceptions_list_card/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/exceptions_list_card/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/exceptions_list_card/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/exceptions_list_card/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/exceptions_utility/exceptions_utility.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/exceptions_utility/exceptions_utility.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/exceptions_utility/exceptions_utility.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/exceptions_utility/exceptions_utility.test.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/exceptions_utility/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/exceptions_utility/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/exceptions_utility/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/exceptions_utility/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/expired_exceptions_list_items_modal/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/expired_exceptions_list_items_modal/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/expired_exceptions_list_items_modal/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/expired_exceptions_list_items_modal/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/expired_exceptions_list_items_modal/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/expired_exceptions_list_items_modal/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/expired_exceptions_list_items_modal/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/expired_exceptions_list_items_modal/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/import_exceptions_list_flyout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/import_exceptions_list_flyout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/import_exceptions_list_flyout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/import_exceptions_list_flyout/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/index.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/components/link_to_list_details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/link_to_list_details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/link_to_list_details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/link_to_list_details/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/link_to_rule_details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/link_to_rule_details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/link_to_rule_details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/link_to_rule_details/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/list_exception_items/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/list_exception_items/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/list_exception_items/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/list_exception_items/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/list_search_bar/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/list_search_bar/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/list_search_bar/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/list_search_bar/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/list_with_search/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/list_with_search/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/list_with_search/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/list_with_search/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/manage_rules/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/manage_rules/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/manage_rules/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/manage_rules/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/shared_list_utilty_bar/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/shared_list_utilty_bar/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/shared_list_utilty_bar/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/shared_list_utilty_bar/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/shared_list_utilty_bar/shared_lists_utility_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/shared_list_utilty_bar/shared_lists_utility_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/shared_list_utilty_bar/shared_lists_utility_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/shared_list_utilty_bar/shared_lists_utility_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/components/title_badge/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/components/title_badge/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/components/title_badge/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/components/title_badge/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/config/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/config/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/config/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/config/index.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/hooks/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/index.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/use_all_exception_lists/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_all_exception_lists/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/hooks/use_all_exception_lists/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_all_exception_lists/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/use_create_shared_list/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_create_shared_list/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/hooks/use_create_shared_list/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_create_shared_list/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/use_endpoint_exceptions_capability/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_endpoint_exceptions_capability/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/hooks/use_endpoint_exceptions_capability/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_endpoint_exceptions_capability/index.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx new file mode 100644 index 0000000000000..e56d31f24fbcb --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx @@ -0,0 +1,305 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useEffect, useMemo, useState } from 'react'; +import type { + ExceptionListItemSchema, + NamespaceType, +} from '@kbn/securitysolution-io-ts-list-types'; +import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; + +import { ViewerStatus } from '@kbn/securitysolution-exception-list-components'; +import { useGeneratedHtmlId } from '@elastic/eui'; +import { useGetSecuritySolutionLinkProps } from '../../../common/components/links'; +import { SecurityPageName } from '../../../../common/constants'; +import type { ExceptionListInfo } from '../use_all_exception_lists'; +import { useListExceptionItems } from '../use_list_exception_items'; +import * as i18n from '../../translations'; +import { checkIfListCannotBeEdited } from '../../utils/list.utils'; +import type { CheckExceptionTtlActionTypes } from '../../components/expired_exceptions_list_items_modal'; +import { CHECK_EXCEPTION_TTL_ACTION_TYPES } from '../../components/expired_exceptions_list_items_modal'; + +interface DuplicateListAction { + listId: string; + name: string; + namespaceType: NamespaceType; + includeExpiredExceptions: boolean; +} +interface ExportListAction { + id: string; + listId: string; + name: string; + namespaceType: NamespaceType; + includeExpiredExceptions: boolean; +} +interface ListAction { + id: string; + listId: string; + namespaceType: NamespaceType; +} +export const useExceptionsListCard = ({ + exceptionsList, + handleExport, + handleDelete, + handleDuplicate, + handleManageRules, +}: { + exceptionsList: ExceptionListInfo; + handleExport: ({ + id, + listId, + name, + namespaceType, + includeExpiredExceptions, + }: ExportListAction) => () => Promise; + handleDelete: ({ id, listId, namespaceType }: ListAction) => () => Promise; + handleDuplicate: ({ + listId, + name, + namespaceType, + includeExpiredExceptions, + }: DuplicateListAction) => () => Promise; + handleManageRules: () => void; +}) => { + const [viewerStatus, setViewerStatus] = useState(ViewerStatus.LOADING); + const [exceptionToEdit, setExceptionToEdit] = useState(); + const [showAddExceptionFlyout, setShowAddExceptionFlyout] = useState(false); + const [showEditExceptionFlyout, setShowEditExceptionFlyout] = useState(false); + const [showIncludeExpiredExceptionsModal, setShowIncludeExpiredExceptionsModal] = + useState(null); + + const { + name: listName, + list_id: listId, + rules: listRules, + type: listType, + created_by: createdBy, + created_at: createdAt, + description: listDescription, + } = exceptionsList; + + const onFinishFetchingExceptions = useCallback(() => { + setViewerStatus(''); + }, [setViewerStatus]); + + const onEditExceptionItem = (exception: ExceptionListItemSchema) => { + setExceptionToEdit(exception); + setShowEditExceptionFlyout(true); + }; + + const { + lastUpdated, + exceptionViewerStatus, + exceptions, + pagination, + ruleReferences, + fetchItems, + onDeleteException, + onPaginationChange, + } = useListExceptionItems({ + list: exceptionsList, + deleteToastTitle: i18n.EXCEPTION_ITEM_DELETE_TITLE, + deleteToastBody: (name) => i18n.EXCEPTION_ITEM_DELETE_TEXT(name), + errorToastBody: i18n.EXCEPTION_ERROR_DESCRIPTION, + errorToastTitle: i18n.EXCEPTION_ERROR_TITLE, + onEditListExceptionItem: onEditExceptionItem, + onFinishFetchingExceptions, + }); + + useEffect(() => { + fetchItems(null, ViewerStatus.LOADING); + }, [fetchItems]); + + const [toggleAccordion, setToggleAccordion] = useState(false); + const openAccordionId = useGeneratedHtmlId({ prefix: 'openAccordion' }); + + const listCannotBeEdited = checkIfListCannotBeEdited(exceptionsList); + + const emptyViewerTitle = useMemo(() => { + return viewerStatus === ViewerStatus.EMPTY ? i18n.EXCEPTION_LIST_EMPTY_VIEWER_TITLE : ''; + }, [viewerStatus]); + + const emptyViewerBody = useMemo(() => { + return viewerStatus === ViewerStatus.EMPTY + ? i18n.EXCEPTION_LIST_EMPTY_VIEWER_BODY(exceptionsList.name) + : ''; + }, [exceptionsList.name, viewerStatus]); + + const emptyViewerButtonText = useMemo(() => { + return exceptionsList.type === ExceptionListTypeEnum.ENDPOINT + ? i18n.EXCEPTION_LIST_EMPTY_VIEWER_BUTTON_ENDPOINT + : i18n.EXCEPTION_LIST_EMPTY_VIEWER_BUTTON; + }, [exceptionsList.type]); + + const menuActionItems = useMemo( + () => [ + { + key: 'Export', + icon: 'exportAction', + label: i18n.EXPORT_EXCEPTION_LIST, + onClick: (e: React.MouseEvent) => { + if (listType === ExceptionListTypeEnum.ENDPOINT) { + handleExport({ + id: exceptionsList.id, + listId: exceptionsList.list_id, + name: exceptionsList.name, + namespaceType: exceptionsList.namespace_type, + includeExpiredExceptions: true, + })(); + } else { + setShowIncludeExpiredExceptionsModal(CHECK_EXCEPTION_TTL_ACTION_TYPES.EXPORT); + } + }, + }, + { + key: 'Duplicate', + icon: 'copy', + label: i18n.DUPLICATE_EXCEPTION_LIST, + disabled: listCannotBeEdited, + onClick: (_: React.MouseEvent) => { + setShowIncludeExpiredExceptionsModal(CHECK_EXCEPTION_TTL_ACTION_TYPES.DUPLICATE); + }, + }, + { + key: 'Delete', + icon: 'trash', + disabled: listCannotBeEdited, + label: i18n.DELETE_EXCEPTION_LIST, + onClick: (e: React.MouseEvent) => { + handleDelete({ + id: exceptionsList.id, + listId: exceptionsList.list_id, + namespaceType: exceptionsList.namespace_type, + })(); + }, + }, + { + key: 'LinkRules', + icon: 'gear', + disabled: listCannotBeEdited, + label: i18n.LINK_RULES_OVERFLOW_BUTTON_TITLE, + onClick: (e: React.MouseEvent) => { + handleManageRules(); + }, + }, + ], + [ + listCannotBeEdited, + listType, + handleExport, + exceptionsList.id, + exceptionsList.list_id, + exceptionsList.name, + exceptionsList.namespace_type, + handleDelete, + handleManageRules, + ] + ); + + // Once details Page is added all of these methods will be used from it as well + // as their own states + const onAddExceptionClick = useCallback(() => { + setShowAddExceptionFlyout(true); + }, [setShowAddExceptionFlyout]); + + const handleCancelExceptionItemFlyout = () => { + setShowAddExceptionFlyout(false); + setShowEditExceptionFlyout(false); + }; + const handleConfirmExceptionFlyout = useCallback( + (didExceptionChange: boolean): void => { + setShowAddExceptionFlyout(false); + setShowEditExceptionFlyout(false); + if (!didExceptionChange) return; + fetchItems(); + }, + [fetchItems, setShowAddExceptionFlyout, setShowEditExceptionFlyout] + ); + + const onExportListClick = useCallback(() => { + setShowIncludeExpiredExceptionsModal(CHECK_EXCEPTION_TTL_ACTION_TYPES.EXPORT); + }, [setShowIncludeExpiredExceptionsModal]); + + const handleCancelExpiredExceptionsModal = () => { + setShowIncludeExpiredExceptionsModal(null); + }; + + const handleConfirmExpiredExceptionsModal = useCallback( + (includeExpiredExceptions: boolean): void => { + if (showIncludeExpiredExceptionsModal === CHECK_EXCEPTION_TTL_ACTION_TYPES.EXPORT) { + handleExport({ + id: exceptionsList.id, + listId: exceptionsList.list_id, + name: exceptionsList.name, + namespaceType: exceptionsList.namespace_type, + includeExpiredExceptions, + })(); + } + if (showIncludeExpiredExceptionsModal === CHECK_EXCEPTION_TTL_ACTION_TYPES.DUPLICATE) { + handleDuplicate({ + listId: exceptionsList.list_id, + name: exceptionsList.name, + namespaceType: exceptionsList.namespace_type, + includeExpiredExceptions, + })(); + } + }, + [ + showIncludeExpiredExceptionsModal, + handleExport, + exceptionsList.id, + exceptionsList.list_id, + exceptionsList.name, + exceptionsList.namespace_type, + handleDuplicate, + ] + ); + + // routes to x-pack/solutions/security/plugins/security_solution/public/exceptions/routes.tsx + // details component is here: x-pack/solutions/security/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx + const { onClick: goToExceptionDetail } = useGetSecuritySolutionLinkProps()({ + deepLinkId: SecurityPageName.exceptions, + path: `/details/${exceptionsList.list_id}`, + }); + return { + listId, + listName, + listDescription, + createdAt: new Date(createdAt).toDateString(), + createdBy, + listRulesCount: listRules.length.toString(), + exceptionItemsCount: pagination.totalItemCount.toString(), + listType, + menuActionItems, + showAddExceptionFlyout, + toggleAccordion, + openAccordionId, + viewerStatus, + exceptionToEdit, + showEditExceptionFlyout, + lastUpdated, + exceptions, + ruleReferences, + pagination, + exceptionViewerStatus, + onEditExceptionItem, + onDeleteException, + onPaginationChange, + setToggleAccordion, + onAddExceptionClick, + handleConfirmExceptionFlyout, + handleCancelExceptionItemFlyout, + goToExceptionDetail, + emptyViewerTitle, + emptyViewerBody, + emptyViewerButtonText, + showIncludeExpiredExceptionsModal, + onExportListClick, + handleCancelExpiredExceptionsModal, + handleConfirmExpiredExceptionsModal, + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_import_exception_list/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_import_exception_list/index.tsx new file mode 100644 index 0000000000000..be88970ed5b23 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_import_exception_list/index.tsx @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; + +import type { ImportExceptionsResponseSchema } from '@kbn/securitysolution-io-ts-list-types'; + +import type { HttpStart } from '@kbn/core/public'; +import { useAsync, withOptionalSignal } from '@kbn/securitysolution-hook-utils'; + +export const importExceptionList = async ({ + file, + http, + signal, + overwrite, + overwriteExceptions, + asNewList, +}: { + // TODO: Replace these with kbn packaged versions once we have those available to us + // These originally came from this location below before moving them to this hacked "any" types: + // import { HttpStart, NotificationsStart } from '../../../../../../../src/core/public'; + http: HttpStart; + signal: AbortSignal; + file: File; + overwrite: boolean; + overwriteExceptions: boolean; + asNewList: boolean; +}): Promise => { + const formData = new FormData(); + formData.append('file', file as Blob); + + const res = await http.post(`${EXCEPTION_LIST_URL}/_import`, { + version: '2023-10-31', + body: formData, + query: { overwrite, overwrite_exceptions: overwriteExceptions, as_new_list: asNewList }, + headers: { 'Content-Type': undefined }, + method: 'POST', + signal, + }); + return res; +}; + +const importListWithOptionalSignal = withOptionalSignal(importExceptionList); + +export const useImportExceptionList = () => useAsync(importListWithOptionalSignal); diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/use_list_detail_view/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_list_detail_view/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/hooks/use_list_detail_view/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_list_detail_view/index.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/use_list_exception_items/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_list_exception_items/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/hooks/use_list_exception_items/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_list_exception_items/index.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/use_list_with_search/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_list_with_search/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/hooks/use_list_with_search/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/hooks/use_list_with_search/index.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/exceptions/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/exceptions/jest.config.js new file mode 100644 index 0000000000000..e6eb3cebe4036 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/exceptions/jest.config.js @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/exceptions'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/exceptions', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/exceptions/**/*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/*.constants.{ts}', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/*mock*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/*.d.ts', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/*.config.ts', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/index.{js,ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/translations/*', + '!/x-pack/solutions/security/plugins/security_solution/public/exceptions/*.translations', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/exceptions/pages/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/pages/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/pages/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/pages/index.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/pages/shared_lists/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/pages/shared_lists/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/pages/shared_lists/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/pages/shared_lists/index.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/pages/shared_lists/shared_lists.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/pages/shared_lists/shared_lists.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/pages/shared_lists/shared_lists.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/pages/shared_lists/shared_lists.test.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/routes.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/translations/index.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/translations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/translations/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/translations/index.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/translations/list_details_view.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/translations/list_details_view.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/translations/list_details_view.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/translations/list_details_view.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/translations/list_exception_items.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/translations/list_exception_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/translations/list_exception_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/translations/list_exception_items.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/translations/shared_list.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/translations/shared_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/translations/shared_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/translations/shared_list.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/utils/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/utils/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/utils/list.utils.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/list.utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/utils/list.utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/list.utils.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/utils/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/utils/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/translations.ts diff --git a/x-pack/plugins/security_solution/public/exceptions/utils/ui.helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/ui.helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/utils/ui.helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/ui.helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/exceptions/utils/ui.helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/ui.helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/exceptions/utils/ui.helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/exceptions/utils/ui.helpers.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_user_table.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_user_table.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_user_table.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_user_table.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/authentications_host_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/authentications_host_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/authentication/authentications_host_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/authentications_host_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/authentications_host_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/authentications_host_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/authentication/authentications_host_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/authentications_host_table.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/authentications_user_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/authentications_user_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/authentication/authentications_user_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/authentications_user_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/authentications_user_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/authentications_user_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/authentication/authentications_user_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/authentications_user_table.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/authentication/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/authentication/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/authentication/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/authentication/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/components/kpi/__mocks__/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/kpi/__mocks__/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/kpi/__mocks__/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/kpi/__mocks__/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/kpi/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/kpi/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/kpi/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/kpi/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/paginated_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/paginated_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/components/paginated_table/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/paginated_table/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/components/paginated_table/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/paginated_table/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/helpers.ts diff --git a/x-pack/plugins/security_solution/public/explore/components/paginated_table/index.mock.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/index.mock.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/paginated_table/index.mock.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/index.mock.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/paginated_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/paginated_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/paginated_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/paginated_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/paginated_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/paginated_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/paginated_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/metric_embeddable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/metric_embeddable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/metric_embeddable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/metric_embeddable.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/metric_embeddable.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/metric_embeddable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/metric_embeddable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/metric_embeddable.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/stat_item_header.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/stat_item_header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/stat_item_header.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/stat_item_header.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/stat_item_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/stat_item_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/stat_item_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/stat_item_header.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/stat_items.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/stat_items.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/stat_items.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/stat_items.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/stat_items.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/stat_items.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/stat_items.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/stat_items.tsx diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/use_toggle_status.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/use_toggle_status.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/use_toggle_status.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/use_toggle_status.ts diff --git a/x-pack/plugins/security_solution/public/explore/components/stat_items/utils.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/utils.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/components/stat_items/utils.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/components/stat_items/utils.tsx diff --git a/x-pack/plugins/security_solution/public/explore/containers/authentications/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/containers/authentications/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/containers/authentications/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/containers/authentications/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/containers/authentications/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/containers/authentications/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/containers/authentications/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/containers/authentications/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/containers/authentications/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/containers/authentications/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/containers/authentications/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/containers/authentications/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/containers/fields/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/containers/fields/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/containers/fields/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/containers/fields/index.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/containers/fields/index.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/containers/fields/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/containers/fields/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/containers/fields/index.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/hosts_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/hosts_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/hosts/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/kpi_hosts/unique_ips/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/components/uncommon_process_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/details/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/details/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/hosts/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/containers/uncommon_processes/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/details/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/details/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/details/details_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/details_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/details/details_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/details_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/details/details_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/details_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/details/details_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/details_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/details/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/details/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/details/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/details/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/helpers.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/details/nav_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/nav_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/details/nav_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/nav_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/details/nav_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/nav_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/details/nav_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/nav_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/details/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/details/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/details/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/display.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/display.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/display.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/display.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/hosts.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/hosts.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/hosts.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/hosts.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/hosts.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/hosts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/hosts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/hosts.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/hosts_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/hosts_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/hosts_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/hosts_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/nav_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/nav_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/nav_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/nav_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/nav_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/nav_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/nav_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/nav_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/authentications_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/authentications_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/authentications_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/authentications_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/host_risk_score_tab_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/host_risk_score_tab_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/host_risk_score_tab_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/host_risk_score_tab_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/host_risk_score_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/host_risk_score_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/host_risk_score_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/host_risk_score_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/hosts_query_tab_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/hosts_query_tab_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/hosts_query_tab_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/hosts_query_tab_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/hosts_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/hosts_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/hosts_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/hosts_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/index.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/index.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/sessions_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/sessions_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/sessions_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/sessions_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/uncommon_process_query_tab_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/uncommon_process_query_tab_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/uncommon_process_query_tab_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/uncommon_process_query_tab_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/uncommon_process_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/uncommon_process_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/navigation/uncommon_process_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/navigation/uncommon_process_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/pages/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/pages/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/pages/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/store/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/store/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/actions.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/store/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/store/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/store/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/store/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/helpers.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/store/index.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/store/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/index.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/store/model.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/store/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/model.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/store/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/store/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/reducer.ts diff --git a/x-pack/plugins/security_solution/public/explore/hosts/store/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/hosts/store/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/hosts/store/selectors.ts diff --git a/x-pack/plugins/security_solution/public/explore/index.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/explore/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/explore/jest.config.js new file mode 100644 index 0000000000000..996b41f5d9114 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/explore/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/explore'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/explore', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/explore/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/explore/landing.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/landing.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/landing.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/landing.tsx diff --git a/x-pack/plugins/security_solution/public/explore/links.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/links.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/arrows/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/arrows/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/arrows/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/arrows/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/arrows/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/arrows/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/helpers.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/arrows/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/arrows/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/arrows/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/arrows/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/arrows/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/details/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/details/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/details/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/details/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/details/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/details/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/details/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/details/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/direction/direction.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/direction/direction.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/direction/direction.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/direction/direction.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/direction/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/direction/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/direction/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/direction/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/__mocks__/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/__mocks__/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/__mocks__/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/__mocks__/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/__snapshots__/embeddable.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/__snapshots__/embeddable.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/__snapshots__/embeddable.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/__snapshots__/embeddable.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/__snapshots__/index_patterns_missing_prompt.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/__snapshots__/index_patterns_missing_prompt.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/__snapshots__/index_patterns_missing_prompt.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/__snapshots__/index_patterns_missing_prompt.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embeddable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/embeddable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/embeddable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/embeddable.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embeddable.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/embeddable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/embeddable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/embeddable.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/index_patterns_missing_prompt.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/index_patterns_missing_prompt.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/index_patterns_missing_prompt.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/index_patterns_missing_prompt.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/index_patterns_missing_prompt.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/index_patterns_missing_prompt.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/index_patterns_missing_prompt.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/index_patterns_missing_prompt.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_config.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_config.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_config.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_config.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_config.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_config.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_config.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/line_tool_tip_content.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/line_tool_tip_content.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/line_tool_tip_content.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/line_tool_tip_content.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/map_tool_tip.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/map_tool_tip.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/map_tool_tip.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/map_tool_tip.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/point_tool_tip_content.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/point_tool_tip_content.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/point_tool_tip_content.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/point_tool_tip_content.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/tooltip_footer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/tooltip_footer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/tooltip_footer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/__snapshots__/tooltip_footer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/line_tool_tip_content.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/line_tool_tip_content.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/line_tool_tip_content.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/line_tool_tip_content.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/line_tool_tip_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/line_tool_tip_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/line_tool_tip_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/line_tool_tip_content.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/map_tool_tip.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/map_tool_tip.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/map_tool_tip.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/map_tool_tip.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/map_tool_tip.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/map_tool_tip.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/map_tool_tip.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/map_tool_tip.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/point_tool_tip_content.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/point_tool_tip_content.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/point_tool_tip_content.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/point_tool_tip_content.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/point_tool_tip_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/point_tool_tip_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/point_tool_tip_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/point_tool_tip_content.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/tooltip_footer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/tooltip_footer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/tooltip_footer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/tooltip_footer.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/tooltip_footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/tooltip_footer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/tooltip_footer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/map_tool_tip/tooltip_footer.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/embeddables/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/embeddables/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/__snapshots__/flow_direction_select.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/__snapshots__/flow_direction_select.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/flow_controls/__snapshots__/flow_direction_select.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/__snapshots__/flow_direction_select.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/__snapshots__/flow_target_select.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/__snapshots__/flow_target_select.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/flow_controls/__snapshots__/flow_target_select.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/__snapshots__/flow_target_select.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/flow_direction_select.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_target_select.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/flow_target_select.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_target_select.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/flow_target_select.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_target_select.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/flow_target_select.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/flow_controls/flow_target_select.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/flow_target_select.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_controls/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/flow_controls/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_controls/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_target_select_connected/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_target_select_connected/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/flow_target_select_connected/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_target_select_connected/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/flow_target_select_connected/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_target_select_connected/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/flow_target_select_connected/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/flow_target_select_connected/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/ip/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/ip/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/ip/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/ip/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/ip/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/ip/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/ip/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/ip/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/ip/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/ip/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/ip/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/ip/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/dns/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/dns/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/dns/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/dns/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/dns/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/dns/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/dns/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/dns/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/dns/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/dns/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/dns/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/dns/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/network_events/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/network_events/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/network_events/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/network_events/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/network_events/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/network_events/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/network_events/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/network_events/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/network_events/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/network_events/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/network_events/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/network_events/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/tls_handshakes/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_flows/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/kpi_network/unique_private_ips/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/__snapshots__/is_ptr_included.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/__snapshots__/is_ptr_included.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/__snapshots__/is_ptr_included.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/__snapshots__/is_ptr_included.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/is_ptr_included.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/is_ptr_included.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/is_ptr_included.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/is_ptr_included.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/is_ptr_included.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/is_ptr_included.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/is_ptr_included.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/is_ptr_included.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_dns_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_dns_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_http_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_http_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_http_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_http_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_http_table/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_http_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_http_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_http_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_countries_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_countries_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/network_top_n_flow_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/port/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/port/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/port/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/port/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/port/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/port/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/port/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/port/helpers.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/port/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/port/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/port/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/port/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/port/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/port/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/port/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/port/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/country_flag.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/country_flag.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/country_flag.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/country_flag.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/field_names.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/field_names.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/field_names.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/field_names.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/geo_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/geo_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/geo_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/geo_fields.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/ip_with_port.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/ip_with_port.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/ip_with_port.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/ip_with_port.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/label.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/label.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/label.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/label.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/network.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/network.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/network.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/network.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/source_destination_arrows.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/source_destination_arrows.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/source_destination_arrows.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/source_destination_arrows.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/source_destination_ip.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/source_destination_ip.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/source_destination_ip.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/source_destination_ip.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/source_destination_ip.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/source_destination_ip.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/source_destination_ip.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/source_destination_ip.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/source_destination_with_arrows.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/source_destination_with_arrows.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/source_destination_with_arrows.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/source_destination_with_arrows.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/source_destination/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/source_destination/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/source_destination/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/tls_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/tls_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/tls_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/tls_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/tls_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/tls_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/tls_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/tls_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/tls_table/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/tls_table/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/tls_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/tls_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/tls_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/users_table/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/users_table/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/explore/network/components/users_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/users_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/users_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/users_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/users_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/users_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/components/users_table/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/users_table/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/mock.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/components/users_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/components/users_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/components/users_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/details/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/details/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/details/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/details/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/details/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/details/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/details/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/details/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_dns/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_dns/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_dns/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_dns/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_dns/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_dns/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_dns/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_dns/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_dns/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_dns/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_dns/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_dns/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_http/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_http/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_http/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_http/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_http/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_http/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_http/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_http/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_http/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_http/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_http/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_http/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_top_countries/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_countries/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_top_countries/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_countries/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_top_countries/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_countries/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_top_countries/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_countries/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_top_countries/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_countries/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_top_countries/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_countries/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_top_n_flow/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_n_flow/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_top_n_flow/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_n_flow/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_top_n_flow/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_n_flow/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_top_n_flow/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_n_flow/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/network_top_n_flow/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_n_flow/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/network_top_n_flow/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/network_top_n_flow/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/tls/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/tls/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/tls/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/tls/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/tls/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/tls/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/tls/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/tls/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/tls/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/tls/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/tls/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/tls/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/users/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/users/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/users/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/users/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/users/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/users/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/users/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/users/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/containers/users/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/users/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/containers/users/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/containers/users/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/constants.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/details/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/details/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/details/details_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/details_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/details/details_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/details_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/details/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/details/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/details/nav_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/nav_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/details/nav_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/nav_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/details/nav_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/nav_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/details/nav_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/nav_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/details/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/details/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/details/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/conditional_flex_group.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/conditional_flex_group.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/conditional_flex_group.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/conditional_flex_group.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/countries_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/countries_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/countries_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/countries_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/dns_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/dns_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/dns_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/dns_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/http_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/http_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/http_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/http_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/index.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/index.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/ips_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/ips_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/ips_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/ips_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/nav_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/nav_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/nav_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/nav_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/network_routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/network_routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/network_routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/network_routes.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/network_routes_loading.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/network_routes_loading.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/network_routes_loading.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/network_routes_loading.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/tls_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/tls_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/tls_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/tls_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/users_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/users_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/users_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/users_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/navigation/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/navigation/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/navigation/utils.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/network.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/network.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/network.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/network.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.tsx diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/pages/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/store/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/store/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/store/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/store/actions.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/store/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/store/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/store/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/store/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/store/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/store/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/store/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/store/helpers.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/store/index.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/store/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/store/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/store/index.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/store/model.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/store/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/store/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/store/model.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/store/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/store/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/store/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/store/reducer.ts diff --git a/x-pack/plugins/security_solution/public/explore/network/store/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/network/store/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/network/store/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/network/store/selectors.ts diff --git a/x-pack/plugins/security_solution/public/explore/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/routes.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/components/all_users/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/all_users/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/all_users/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/all_users/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/components/all_users/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/all_users/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/all_users/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/all_users/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/components/all_users/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/all_users/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/all_users/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/all_users/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/components/kpi_users/authentications/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/authentications/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/kpi_users/authentications/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/authentications/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/components/kpi_users/authentications/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/authentications/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/kpi_users/authentications/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/authentications/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/components/kpi_users/authentications/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/authentications/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/kpi_users/authentications/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/authentications/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/components/kpi_users/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/kpi_users/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/components/kpi_users/total_users/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/total_users/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/kpi_users/total_users/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/total_users/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/components/kpi_users/total_users/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/total_users/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/kpi_users/total_users/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/total_users/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/components/kpi_users/total_users/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/total_users/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/kpi_users/total_users/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/total_users/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/components/kpi_users/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/components/kpi_users/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/components/kpi_users/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/containers/users/observed_details/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/containers/users/observed_details/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/containers/users/observed_details/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/containers/users/observed_details/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/containers/users/observed_details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/containers/users/observed_details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/containers/users/observed_details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/containers/users/observed_details/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/containers/users/observed_details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/containers/users/observed_details/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/containers/users/observed_details/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/containers/users/observed_details/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/constants.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/details/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/details/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/details/details_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/details_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/details/details_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/details_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/details/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/details/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/helpers.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/details/nav_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/nav_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/details/nav_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/nav_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/details/nav_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/nav_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/details/nav_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/nav_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/details/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/details/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/details/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/nav_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/nav_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/nav_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/nav_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/nav_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/nav_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/nav_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/nav_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/authentications_query_tab_body.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/index.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/navigation/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/index.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/navigation/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/navigation/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/navigation/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/types.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/types.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/users.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/users.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/users.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/users.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/users_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/users_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/users_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/users_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/users_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/users_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/pages/users_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/pages/users_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/explore/users/store/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/actions.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/constants.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/helpers.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/index.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/index.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/middleware_storage.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/middleware_storage.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/middleware_storage.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/middleware_storage.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/middleware_storage.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/middleware_storage.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/middleware_storage.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/middleware_storage.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/model.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/model.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/reducer.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/selectors.test.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/selectors.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/selectors.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/selectors.test.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/selectors.ts diff --git a/x-pack/plugins/security_solution/public/explore/users/store/storage.ts b/x-pack/solutions/security/plugins/security_solution/public/explore/users/store/storage.ts similarity index 100% rename from x-pack/plugins/security_solution/public/explore/users/store/storage.ts rename to x-pack/solutions/security/plugins/security_solution/public/explore/users/store/storage.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/README.md b/x-pack/solutions/security/plugins/security_solution/public/flyout/README.md new file mode 100644 index 0000000000000..f12169aef7fd3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/README.md @@ -0,0 +1,64 @@ +# Security Solution expandable flyouts + +For more info on the expandable flyout, see the `@kbn/expandable-flyout` package. + +## Description + +The Security Solution plugin aims at having a single instance of the expandable flyout. That instance can display as many panels as we need. This folder hosts all the panels that are can be displayed in the Security Solution flyout. Panels can be differentiated as to be displayed in different sections of the expandable flyout (right, left or preview), but ultimately, nothing prevents us from displaying a panel in any section we want. + +> Remember to add any new panels to the `index.tsx` at the root of the [flyout folder](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout). These are passed to the `@kbn/expandable-flyout` package as `registeredPanels`. Failing to do so will result in the panel not being rendered. + +## Folder Structure + +The structure of the `flyout` folder is intended to work as follows: +- multiple top level folders referring to the _type_ of flyout (for example document details, user, host, rule, cases...) and would contain all the panels for that flyout _type_. Each of these top level folders can be organized the way you want, but we recommend following a similar structure to the one we have for the `document_details` flyout type, where the `right`, `left` and `preview` folders correspond to the panels displayed in the right, left and preview flyout sections respectively. The `shared` folder contains any shared components/hooks/services/helpers that are used within the other folders. +``` +document_details +└─── right +└─── left +└─── preview +└─── shared +``` +- one top level `shared` folder containing all the components/hooks/services/helpers that are used across multiple flyout types. Putting code in this folder should be very deliberate, and should follow some guidelines: + - code built in isolation (meaning that it should not be built with a specific flyout type or usage in mind) + - extensively tested + - components should have storybook stories + +The `flyout` folder structure should therefore look like this: +``` +flyout +│ index.tsx +│ jest.config.js +│ README.md +│ +└─── document_details +│ └─── right +│ └─── left +│ └─── preview +│ +└─── new_type +│ └─── right +│ └─── preview +│ +└─── other_new_type +│ └─── right +│ └─── left +│ +└─── ... +│ +└─── shared + └─── components +``` + +## Shared flyout components + +Here's a non-exhaustive list of the reusable component in the top-level `shared` folder. We recommend using these components to create a unified flyout experience. + + - [FlyoutNavigation](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx): navigation menu on the **right panel** only, with expand/collapse button and option to pass in a list of actions to be displayed on top. Works best when used in combination with the header component below. + - [FlyoutHeader](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header.tsx): wrapper of `EuiFlyoutHeader`, setting the recommended `16px` padding using a EuiPanel. + - [FlyoutTitle](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_title.tsx): title component with optional icon to indicate the type of document, works when the title is link or pure text + - [FlyoutHeaderTabs](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.tsx): Wrapper of `EuiTabs`, setting bottom margin to align with the flyout header divider + - [FlyoutBody](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_body.tsx): wrapper of `EuiFlyoutHeader`, setting the recommended `16px` padding using a EuiPanel. + - [FlyoutFooter](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_footer.tsx): wrapper of `EuiFlyoutFooter`, setting the recommended `16px` padding using a EuiPanel. + - [FlyoutError](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx): displays a `EuiEmptyPrompt` for error messages, correctly positioned and sized when used in at the panel level (not for individual components) + - [FlyoutLoading](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx): displays an `EuiLoadingSpinner` component correctly positioned and sized when used in at the panel level (not for individual components) diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/alert_reason.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/alert_reason.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/alert_reason.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/alert_reason.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/alert_reason.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/alert_reason.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/alert_reason.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/alert_reason.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/context.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/context.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/mocks/mock_context.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/mocks/mock_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/mocks/mock_context.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/mocks/mock_context.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/alert_reason/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/alert_reason/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/analyzer_panels/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/analyzer_panels/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/analyzer_panels/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/analyzer_panels/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/content.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/context.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/context.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/header.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/header.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/header.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/isolate_host/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/attach_to_active_timeline.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/attach_to_active_timeline.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/attach_to_active_timeline.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/attach_to_active_timeline.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/attach_to_active_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/attach_to_active_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/attach_to_active_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/attach_to_active_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/entities_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/entities_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/entities_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/entities_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/entities_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/entities_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/entities_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/entities_details.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/graph_visualization.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/graph_visualization.tsx new file mode 100644 index 0000000000000..96374b81e18d5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/graph_visualization.tsx @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo } from 'react'; +import { css } from '@emotion/css'; +import { EuiLoadingSpinner } from '@elastic/eui'; +import { useGetScopedSourcererDataView } from '../../../../sourcerer/components/use_get_sourcerer_data_view'; +import { SourcererScopeName } from '../../../../sourcerer/store/model'; +import { useDocumentDetailsContext } from '../../shared/context'; +import { GRAPH_VISUALIZATION_TEST_ID } from './test_ids'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; + +const GraphInvestigationLazy = React.lazy(() => + import('@kbn/cloud-security-posture-graph').then((module) => ({ + default: module.GraphInvestigation, + })) +); + +export const GRAPH_ID = 'graph-visualization' as const; + +/** + * Graph visualization view displayed in the document details expandable flyout left section under the Visualize tab + */ +export const GraphVisualization: React.FC = memo(() => { + const dataView = useGetScopedSourcererDataView({ + sourcererScope: SourcererScopeName.default, + }); + const { getFieldsData, dataAsNestedObject } = useDocumentDetailsContext(); + const { eventIds, timestamp } = useGraphPreview({ + getFieldsData, + ecsData: dataAsNestedObject, + }); + + return ( +
    + {dataView && ( + }> + + + )} +
    + ); +}); + +GraphVisualization.displayName = 'GraphVisualization'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/host_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/host_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/host_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/host_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide_view.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide_view.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide_view.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide_view.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide_view.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/notes_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/notes_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/notes_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/notes_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/notes_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/notes_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/notes_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/notes_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_cases.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_cases.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_cases.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/related_cases.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/response_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/response_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/response_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/response_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/session_view.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/session_view.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/session_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/session_view.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts new file mode 100644 index 0000000000000..6979fa9cfa053 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts @@ -0,0 +1,139 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PREFIX } from '../../../shared/test_ids'; + +/* Visualization tab */ + +export const ANALYZER_GRAPH_TEST_ID = `${PREFIX}AnalyzerGraph` as const; +export const SESSION_VIEW_TEST_ID = `${PREFIX}SessionView` as const; +export const GRAPH_VISUALIZATION_TEST_ID = `${PREFIX}GraphVisualization` as const; + +/* Insights tab */ + +/* Prevalence */ + +const PREVALENCE_DETAILS_TEST_ID = `${PREFIX}PrevalenceDetails` as const; +export const PREVALENCE_DETAILS_DATE_PICKER_TEST_ID = + `${PREVALENCE_DETAILS_TEST_ID}DatePicker` as const; +export const PREVALENCE_DETAILS_UPSELL_TEST_ID = `${PREVALENCE_DETAILS_TEST_ID}Upsell` as const; +export const PREVALENCE_DETAILS_TABLE_TEST_ID = `${PREVALENCE_DETAILS_TEST_ID}Table` as const; +export const PREVALENCE_DETAILS_TABLE_FIELD_CELL_TEST_ID = + `${PREVALENCE_DETAILS_TABLE_TEST_ID}FieldCell` as const; +export const PREVALENCE_DETAILS_TABLE_VALUE_CELL_TEST_ID = + `${PREVALENCE_DETAILS_TABLE_TEST_ID}ValueCell` as const; +export const PREVALENCE_DETAILS_TABLE_PREVIEW_LINK_CELL_TEST_ID = + `${PREVALENCE_DETAILS_TABLE_TEST_ID}PreviewLinkCell` as const; +export const PREVALENCE_DETAILS_TABLE_ALERT_COUNT_CELL_TEST_ID = + `${PREVALENCE_DETAILS_TABLE_TEST_ID}AlertCountCell` as const; +export const PREVALENCE_DETAILS_TABLE_DOC_COUNT_CELL_TEST_ID = + `${PREVALENCE_DETAILS_TABLE_TEST_ID}DocCountCell` as const; +export const PREVALENCE_DETAILS_TABLE_HOST_PREVALENCE_CELL_TEST_ID = + `${PREVALENCE_DETAILS_TABLE_TEST_ID}HostPrevalenceCell` as const; +export const PREVALENCE_DETAILS_TABLE_USER_PREVALENCE_CELL_TEST_ID = + `${PREVALENCE_DETAILS_TABLE_TEST_ID}UserPrevalenceCell` as const; +export const PREVALENCE_DETAILS_TABLE_UPSELL_CELL_TEST_ID = + `${PREVALENCE_DETAILS_TABLE_TEST_ID}UpsellCell` as const; + +/* Entities */ + +export const ENTITIES_DETAILS_TEST_ID = `${PREFIX}EntitiesDetails` as const; +export const USER_DETAILS_TEST_ID = `${PREFIX}UsersDetails` as const; +export const USER_DETAILS_LINK_TEST_ID = `${USER_DETAILS_TEST_ID}TitleLink` as const; +export const USER_DETAILS_ALERT_COUNT_TEST_ID = `${USER_DETAILS_TEST_ID}AlertCount` as const; +export const USER_DETAILS_MISCONFIGURATIONS_TEST_ID = + `${USER_DETAILS_TEST_ID}Misconfigurations` as const; +export const USER_DETAILS_RELATED_HOSTS_TABLE_TEST_ID = + `${USER_DETAILS_TEST_ID}RelatedHostsTable` as const; +export const USER_DETAILS_RELATED_HOSTS_LINK_TEST_ID = + `${USER_DETAILS_TEST_ID}RelatedHostsLink` as const; +export const USER_DETAILS_RELATED_HOSTS_IP_LINK_TEST_ID = + `${USER_DETAILS_TEST_ID}RelatedHostsIPLink` as const; +export const USER_DETAILS_INFO_TEST_ID = 'user-overview' as const; + +export const HOST_DETAILS_TEST_ID = `${PREFIX}HostsDetails` as const; +export const HOST_DETAILS_LINK_TEST_ID = `${HOST_DETAILS_TEST_ID}TitleLink` as const; +export const HOST_DETAILS_ALERT_COUNT_TEST_ID = `${HOST_DETAILS_TEST_ID}AlertCount` as const; +export const HOST_DETAILS_MISCONFIGURATIONS_TEST_ID = + `${HOST_DETAILS_TEST_ID}Misconfigurations` as const; +export const HOST_DETAILS_VULNERABILITIES_TEST_ID = + `${HOST_DETAILS_TEST_ID}Vulnerabilities` as const; +export const HOST_DETAILS_RELATED_USERS_TABLE_TEST_ID = + `${HOST_DETAILS_TEST_ID}RelatedUsersTable` as const; +export const HOST_DETAILS_RELATED_USERS_LINK_TEST_ID = + `${HOST_DETAILS_TEST_ID}RelatedUsersLink` as const; +export const HOST_DETAILS_RELATED_USERS_IP_LINK_TEST_ID = + `${HOST_DETAILS_TEST_ID}RelatedUsersIPLink` as const; +export const HOST_DETAILS_INFO_TEST_ID = 'host-overview' as const; + +/* Threat Intelligence */ + +const THREAT_INTELLIGENCE_DETAILS_TEST_ID = `${PREFIX}ThreatIntelligenceDetails` as const; +export const THREAT_INTELLIGENCE_DETAILS_ENRICHMENTS_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}ThreatMatchDetected` as const; +export const THREAT_INTELLIGENCE_DETAILS_LOADING_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}Loading` as const; +export const THREAT_INTELLIGENCE_ENRICHMENTS_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichedWithThreatIntel` as const; +export const THREAT_INTELLIGENCE_MATCHES_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}MatchesWithNoType` as const; +export const THREAT_INTELLIGENCE_NO_ENRICHMENTS_FOUND_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}NoEnrichmentFound` as const; +export const THREAT_INTELLIGENCE_ENRICHMENTS_TITLE_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentTitle` as const; +export const THREAT_INTELLIGENCE_LOADING_ENRICHMENTS_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}LoadingEnrichment` as const; +export const THREAT_INTELLIGENCE_ENRICHMENTS_BUTTON_CONTENT_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentButtonContent` as const; +export const THREAT_INTELLIGENCE_ENRICHMENTS_ACCORDION_TABLE_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentAccordionTable` as const; +export const THREAT_INTELLIGENCE_ENRICHMENTS_RANGE_PICKER_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentRangePicker` as const; +export const THREAT_INTELLIGENCE_ENRICHMENTS_REFRESH_BUTTON_TEST_ID = + `${THREAT_INTELLIGENCE_DETAILS_TEST_ID}EnrichmentRefreshButton` as const; + +/* Correlations */ + +export const CORRELATIONS_DETAILS_TEST_ID = `${PREFIX}CorrelationsDetails` as const; + +export const CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}AlertsByAncestrySection` as const; +export const CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TABLE_TEST_ID = + `${CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID}Table` as const; +export const CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}AlertsBySourceSection` as const; +export const CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TABLE_TEST_ID = + `${CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID}Table` as const; +export const CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}AlertsBySessionSection` as const; +export const CORRELATIONS_DETAILS_BY_SESSION_SECTION_TABLE_TEST_ID = + `${CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID}Table` as const; +export const CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}CasesSection` as const; +export const CORRELATIONS_DETAILS_CASES_SECTION_TABLE_TEST_ID = + `${CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID}Table` as const; +export const CORRELATIONS_DETAILS_SUPPRESSED_ALERTS_SECTION_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}SuppressedAlertsSection` as const; +export const SUPPRESSED_ALERTS_SECTION_TECHNICAL_PREVIEW_TEST_ID = + `${CORRELATIONS_DETAILS_TEST_ID}SuppressedAlertsSectionTechnicalPreview` as const; + +/* Response */ + +const RESPONSE_TEST_ID = `${PREFIX}Response` as const; +export const RESPONSE_DETAILS_TEST_ID = `${RESPONSE_TEST_ID}Details` as const; +export const RESPONSE_NO_DATA_TEST_ID = `${RESPONSE_TEST_ID}NoData` as const; + +/* Investigation */ + +export const INVESTIGATION_GUIDE_TEST_ID = `${PREFIX}InvestigationGuide` as const; +export const INVESTIGATION_GUIDE_LOADING_TEST_ID = `${INVESTIGATION_GUIDE_TEST_ID}Loading` as const; + +/* Notes */ + +export const ATTACH_TO_TIMELINE_CALLOUT_TEST_ID = `${PREFIX}AttachToTimelineCallout` as const; +export const ATTACH_TO_TIMELINE_CHECKBOX_TEST_ID = `${PREFIX}AttachToTimelineCheckbox` as const; +export const SAVE_TIMELINE_BUTTON_TEST_ID = `${PREFIX}SaveTimelineButton` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion_group.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion_group.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion_group.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion_group.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion_group.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion_group.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion_group.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_accordion_group.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_button_content.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_button_content.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_button_content.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_button_content.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_button_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_button_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_button_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_button_content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_section.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_section.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_details_view_enrichment_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_view_enrichment_range_picker.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_view_enrichment_range_picker.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_view_enrichment_range_picker.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_view_enrichment_range_picker.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_view_enrichment_range_picker.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_view_enrichment_range_picker.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_view_enrichment_range_picker.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_view_enrichment_range_picker.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/user_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/user_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/user_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/components/user_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/content.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_paginated_alerts.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_paginated_alerts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_paginated_alerts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_paginated_alerts.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_pagination_and_sorting.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_pagination_and_sorting.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_pagination_and_sorting.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_pagination_and_sorting.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_response_actions_view.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_response_actions_view.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_response_actions_view.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_response_actions_view.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_response_actions_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_response_actions_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_response_actions_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_response_actions_view.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/mocks/indicator_with_nested_objects.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/mocks/indicator_with_nested_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/mocks/indicator_with_nested_objects.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/mocks/indicator_with_nested_objects.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/services/find_alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/services/find_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/services/find_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/services/find_alerts.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/insights_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/insights_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/insights_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/insights_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/investigation_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/investigation_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/investigation_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/investigation_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/notes_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/notes_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/notes_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/notes_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/response_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/response_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/response_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/response_tab.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts new file mode 100644 index 0000000000000..bc1ee586606de --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PREFIX } from '../../../shared/test_ids'; + +const VISUALIZE_TAB_TEST_ID = `${PREFIX}VisualizeTab` as const; +export const VISUALIZE_TAB_BUTTON_GROUP_TEST_ID = `${VISUALIZE_TAB_TEST_ID}ButtonGroup` as const; +export const VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID = + `${VISUALIZE_TAB_TEST_ID}SessionViewButton` as const; +export const VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID = + `${VISUALIZE_TAB_TEST_ID}GraphAnalyzerButton` as const; +export const VISUALIZE_TAB_GRAPH_VISUALIZATION_BUTTON_TEST_ID = + `${VISUALIZE_TAB_TEST_ID}GraphVisualizationButton` as const; +const INSIGHTS_TAB_TEST_ID = `${PREFIX}InsightsTab` as const; +export const INSIGHTS_TAB_BUTTON_GROUP_TEST_ID = `${INSIGHTS_TAB_TEST_ID}ButtonGroup` as const; +export const INSIGHTS_TAB_ENTITIES_BUTTON_TEST_ID = + `${INSIGHTS_TAB_TEST_ID}EntitiesButton` as const; +export const INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON_TEST_ID = + `${INSIGHTS_TAB_TEST_ID}ThreatIntelligenceButton` as const; +export const INSIGHTS_TAB_PREVALENCE_BUTTON_TEST_ID = + `${INSIGHTS_TAB_TEST_ID}PrevalenceButton` as const; +export const INSIGHTS_TAB_CORRELATIONS_BUTTON_TEST_ID = + `${INSIGHTS_TAB_TEST_ID}CorrelationsButton` as const; +export const INVESTIGATION_TAB_CONTENT_TEST_ID = `${PREFIX}InvestigationsTabContent` as const; +export const RESPONSE_TAB_CONTENT_TEST_ID = `${PREFIX}ResponseTabContent` as const; +export const NOTES_TAB_CONTENT_TEST_ID = `${PREFIX}NotesTabContent` as const; diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx new file mode 100644 index 0000000000000..89e00e06e3a49 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo, useState, useCallback, useEffect } from 'react'; +import { EuiButtonGroup, EuiSpacer } from '@elastic/eui'; +import type { EuiButtonGroupOptionProps } from '@elastic/eui/src/components/button/button_group/button_group'; +import { useExpandableFlyoutApi, useExpandableFlyoutState } from '@kbn/expandable-flyout'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { useDocumentDetailsContext } from '../../shared/context'; +import { useWhichFlyout } from '../../shared/hooks/use_which_flyout'; +import { DocumentDetailsAnalyzerPanelKey } from '../../shared/constants/panel_keys'; +import { + VISUALIZE_TAB_BUTTON_GROUP_TEST_ID, + VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID, + VISUALIZE_TAB_GRAPH_VISUALIZATION_BUTTON_TEST_ID, + VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID, +} from './test_ids'; +import { + ANALYZE_GRAPH_ID, + AnalyzeGraph, + ANALYZER_PREVIEW_BANNER, +} from '../components/analyze_graph'; +import { SESSION_VIEW_ID, SessionView } from '../components/session_view'; +import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; +import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; +import { GRAPH_ID, GraphVisualization } from '../components/graph_visualization'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; +import { GRAPH_VISUALIZATION_IN_FLYOUT_ENABLED_EXPERIMENTAL_FEATURE } from '../../shared/constants/experimental_features'; + +const visualizeButtons: EuiButtonGroupOptionProps[] = [ + { + id: SESSION_VIEW_ID, + label: ( + + ), + 'data-test-subj': VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID, + }, + { + id: ANALYZE_GRAPH_ID, + label: ( + + ), + 'data-test-subj': VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID, + }, +]; + +const graphVisualizationButton: EuiButtonGroupOptionProps = { + id: GRAPH_ID, + iconType: 'beaker', + iconSide: 'right', + toolTipProps: { + title: ( + + ), + }, + toolTipContent: i18n.translate( + 'xpack.securitySolution.flyout.left.visualize.graphVisualizationButton.technicalPreviewTooltip', + { + defaultMessage: + 'This functionality is in technical preview and may be changed or removed completely in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.', + } + ), + label: ( + + ), + 'data-test-subj': VISUALIZE_TAB_GRAPH_VISUALIZATION_BUTTON_TEST_ID, +}; + +/** + * Visualize view displayed in the document details expandable flyout left section + */ +export const VisualizeTab = memo(() => { + const { scopeId, getFieldsData, dataAsNestedObject } = useDocumentDetailsContext(); + const { openPreviewPanel } = useExpandableFlyoutApi(); + const panels = useExpandableFlyoutState(); + const [activeVisualizationId, setActiveVisualizationId] = useState( + panels.left?.path?.subTab ?? SESSION_VIEW_ID + ); + const key = useWhichFlyout() ?? 'memory'; + const { startTransaction } = useStartTransaction(); + const onChangeCompressed = useCallback( + (optionId: string) => { + setActiveVisualizationId(optionId); + if (optionId === ANALYZE_GRAPH_ID) { + startTransaction({ name: ALERTS_ACTIONS.OPEN_ANALYZER }); + openPreviewPanel({ + id: DocumentDetailsAnalyzerPanelKey, + params: { + resolverComponentInstanceID: `${key}-${scopeId}`, + banner: ANALYZER_PREVIEW_BANNER, + }, + }); + } + }, + [startTransaction, openPreviewPanel, key, scopeId] + ); + + useEffect(() => { + if (panels.left?.path?.subTab) { + setActiveVisualizationId(panels.left?.path?.subTab); + } + }, [panels.left?.path?.subTab]); + + // Decide whether to show the graph preview or not + const { hasGraphRepresentation } = useGraphPreview({ + getFieldsData, + ecsData: dataAsNestedObject, + }); + + const isGraphFeatureEnabled = useIsExperimentalFeatureEnabled( + GRAPH_VISUALIZATION_IN_FLYOUT_ENABLED_EXPERIMENTAL_FEATURE + ); + + const options = [...visualizeButtons]; + + if (hasGraphRepresentation && isGraphFeatureEnabled) { + options.push(graphVisualizationButton); + } + + return ( + <> + onChangeCompressed(id)} + buttonSize="compressed" + isFullWidth + data-test-subj={VISUALIZE_TAB_BUTTON_GROUP_TEST_ID} + /> + + {activeVisualizationId === SESSION_VIEW_ID && } + {activeVisualizationId === ANALYZE_GRAPH_ID && } + {activeVisualizationId === GRAPH_ID && } + + ); +}); + +VisualizeTab.displayName = 'VisualizeTab'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/left/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/left/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/preview/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/preview/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/constants.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/footer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/footer.test.tsx new file mode 100644 index 0000000000000..951d9916892f6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/footer.test.tsx @@ -0,0 +1,131 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { render } from '@testing-library/react'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { TestProviders } from '../../../common/mock'; +import { DocumentDetailsRightPanelKey } from '../shared/constants/panel_keys'; +import { mockFlyoutApi } from '../shared/mocks/mock_flyout_context'; +import { mockContextValue } from '../shared/mocks/mock_context'; +import { DocumentDetailsContext } from '../shared/context'; +import { PreviewPanelFooter } from './footer'; +import { PREVIEW_FOOTER_TEST_ID, PREVIEW_FOOTER_LINK_TEST_ID } from './test_ids'; +import { FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID } from '../shared/components/test_ids'; +import { createTelemetryServiceMock } from '../../../common/lib/telemetry/telemetry_service.mock'; +import { useKibana } from '../../../common/lib/kibana'; +import { useAlertExceptionActions } from '../../../detections/components/alerts_table/timeline_actions/use_add_exception_actions'; +import { useInvestigateInTimeline } from '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; +import { useAddToCaseActions } from '../../../detections/components/alerts_table/timeline_actions/use_add_to_case_actions'; + +jest.mock('@kbn/expandable-flyout'); +jest.mock('react-router-dom', () => { + const original = jest.requireActual('react-router-dom'); + return { + ...original, + useLocation: jest.fn().mockReturnValue({ search: '' }), + }; +}); + +jest.mock('../../../common/lib/kibana'); +jest.mock('../../../detections/components/alerts_table/timeline_actions/use_add_exception_actions'); +jest.mock( + '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline' +); +jest.mock('../../../detections/components/alerts_table/timeline_actions/use_add_to_case_actions'); + +const mockedTelemetry = createTelemetryServiceMock(); + +describe('', () => { + beforeEach(() => { + jest.mocked(useExpandableFlyoutApi).mockReturnValue(mockFlyoutApi); + (useKibana as jest.Mock).mockReturnValue({ + services: { + osquery: { isOsqueryAvailable: jest.fn() }, + telemetry: mockedTelemetry, + cases: { hooks: { useIsAddToCaseOpen: jest.fn().mockReturnValue(false) } }, + }, + }); + (useAlertExceptionActions as jest.Mock).mockReturnValue({ exceptionActionItems: [] }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineActionItems: [], + }); + (useAddToCaseActions as jest.Mock).mockReturnValue({ addToCaseActionItems: [] }); + }); + + it('should not render the take action dropdown if preview mode', () => { + const { queryByTestId } = render( + + + + + + ); + + expect(queryByTestId(PREVIEW_FOOTER_TEST_ID)).not.toBeInTheDocument(); + }); + + it('should render footer for alert', () => { + const { getByTestId } = render( + + + + + + ); + expect(getByTestId(PREVIEW_FOOTER_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(PREVIEW_FOOTER_LINK_TEST_ID)).toHaveTextContent('Show full alert details'); + }); + + it('should render footer for event', () => { + const { getByTestId } = render( + + 'event' }} + > + + + + ); + expect(getByTestId(PREVIEW_FOOTER_LINK_TEST_ID)).toHaveTextContent('Show full event details'); + }); + + it('should render the take action button', () => { + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineActionItems: [{ name: 'test', onClick: jest.fn() }], + }); + const { getByTestId } = render( + + + + + + ); + expect(getByTestId(FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID)).toBeInTheDocument(); + }); + + it('should open document details flyout when clicked', () => { + const { getByTestId } = render( + + + + + + ); + + getByTestId(PREVIEW_FOOTER_LINK_TEST_ID).click(); + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: mockContextValue.eventId, + indexName: mockContextValue.indexName, + scopeId: mockContextValue.scopeId, + }, + }, + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/footer.tsx new file mode 100644 index 0000000000000..1f05e368920f9 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/footer.tsx @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FC } from 'react'; +import React, { useCallback, useMemo } from 'react'; +import { EuiLink, EuiFlyoutFooter, EuiPanel, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { TakeActionButton } from '../shared/components/take_action_button'; +import { getField } from '../shared/utils'; +import { EventKind } from '../shared/constants/event_kinds'; +import { DocumentDetailsRightPanelKey } from '../shared/constants/panel_keys'; +import { useDocumentDetailsContext } from '../shared/context'; +import { PREVIEW_FOOTER_TEST_ID, PREVIEW_FOOTER_LINK_TEST_ID } from './test_ids'; +import { useKibana } from '../../../common/lib/kibana'; +import { DocumentEventTypes } from '../../../common/lib/telemetry'; + +/** + * Footer at the bottom of preview panel with a link to open document details flyout + */ +export const PreviewPanelFooter: FC = () => { + const { eventId, indexName, scopeId, getFieldsData, isPreview } = useDocumentDetailsContext(); + const { openFlyout } = useExpandableFlyoutApi(); + const { telemetry } = useKibana().services; + + const isAlert = useMemo( + () => getField(getFieldsData('event.kind')) === EventKind.signal, + [getFieldsData] + ); + + const openDocumentFlyout = useCallback(() => { + openFlyout({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + }); + telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutOpened, { + location: scopeId, + panel: 'right', + }); + }, [openFlyout, eventId, indexName, scopeId, telemetry]); + + const fullDetailsLink = useMemo( + () => ( + + <> + {i18n.translate('xpack.securitySolution.flyout.preview.openFlyoutLabel', { + values: { isAlert }, + defaultMessage: 'Show full {isAlert, select, true{alert} other{event}} details', + })} + + + ), + [isAlert, openDocumentFlyout] + ); + + if (isPreview) return null; + + return ( + + + + {fullDetailsLink} + + + + + + + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/preview/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/preview/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/preview/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/preview/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/preview/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/about_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/about_section.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/about_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/about_section.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/about_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/about_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/about_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/about_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_description.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_description.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_description.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_description.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_description.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_header_block.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_header_block.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_header_block.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_header_block.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_header_block.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_header_block.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_header_block.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_header_block.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_header_title.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_header_title.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_header_title.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_header_title.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_header_title.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_header_title.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/alert_header_title.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/alert_header_title.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.test.tsx new file mode 100644 index 0000000000000..8b12d95a25c6a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.test.tsx @@ -0,0 +1,344 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen } from '@testing-library/react'; +import { TestProviders } from '../../../../common/mock'; +import React from 'react'; +import { DocumentDetailsContext } from '../../shared/context'; +import { mockContextValue } from '../../shared/mocks/mock_context'; +import { AnalyzerPreviewContainer } from './analyzer_preview_container'; +import { useIsInvestigateInResolverActionEnabled } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; +import { ANALYZER_PREVIEW_TEST_ID } from './test_ids'; +import { useAlertPrevalenceFromProcessTree } from '../../shared/hooks/use_alert_prevalence_from_process_tree'; +import * as mock from '../mocks/mock_analyzer_data'; +import { + EXPANDABLE_PANEL_CONTENT_TEST_ID, + EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, + EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, + EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, + EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, +} from '../../../shared/components/test_ids'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; + +jest.mock( + '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver' +); +jest.mock('../../shared/hooks/use_alert_prevalence_from_process_tree'); +jest.mock( + '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline' +); +jest.mock('../../../../common/hooks/use_experimental_features'); + +const mockNavigateToAnalyzer = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_analyzer', () => { + return { useNavigateToAnalyzer: () => ({ navigateToAnalyzer: mockNavigateToAnalyzer }) }; +}); + +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useUiSetting$: () => mockUseUiSetting(), + }; +}); + +jest.mock('react-router-dom', () => { + const actual = jest.requireActual('react-router-dom'); + return { ...actual, useLocation: jest.fn().mockReturnValue({ pathname: '' }) }; +}); +jest.mock('react-redux', () => { + const original = jest.requireActual('react-redux'); + + return { + ...original, + useDispatch: () => jest.fn(), + }; +}); + +const mockUseUiSetting = jest.fn().mockReturnValue([false]); +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useUiSetting$: () => mockUseUiSetting(), + }; +}); + +const NO_ANALYZER_MESSAGE = + 'You can only visualize events triggered by hosts configured with the Elastic Defend integration or any sysmon data from winlogbeat. Refer to Visual event analyzer(external, opens in a new tab or window) for more information.'; + +const renderAnalyzerPreview = (context = mockContextValue) => + render( + + + + + + ); + +describe('AnalyzerPreviewContainer', () => { + beforeEach(() => { + jest.clearAllMocks(); + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(false); + }); + + it('should render component and link in header', () => { + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); + (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ + loading: false, + error: false, + alertIds: ['alertid'], + statsNodes: mock.mockStatsNodes, + }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + + const { getByTestId } = renderAnalyzerPreview(); + + expect(getByTestId(ANALYZER_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + screen.queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + screen.getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + screen.queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).not.toHaveTextContent(NO_ANALYZER_MESSAGE); + }); + + it('should render error message and text in header', () => { + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(false); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + + const { getByTestId } = renderAnalyzerPreview(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).toHaveTextContent(NO_ANALYZER_MESSAGE); + }); + + describe('when visualizationInFlyoutEnabled is disabled', () => { + it('should navigate to analyzer in timeline when clicking on title', () => { + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); + (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ + loading: false, + error: false, + alertIds: ['alertid'], + statsNodes: mock.mockStatsNodes, + }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + + const { getByTestId } = renderAnalyzerPreview(); + + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); + + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)).click(); + expect(investigateInTimelineAlertClick).toHaveBeenCalled(); + }); + + it('should not navigate to analyzer when in preview and clicking on title', () => { + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); + (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ + loading: false, + error: false, + alertIds: ['alertid'], + statsNodes: mock.mockStatsNodes, + }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + + const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreview: true }); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); + expect(investigateInTimelineAlertClick).not.toHaveBeenCalled(); + }); + + it('should not navigate to analyzer when in preview mode', () => { + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); + (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ + loading: false, + error: false, + alertIds: ['alertid'], + statsNodes: mock.mockStatsNodes, + }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + + const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreviewMode: true }); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); + expect(investigateInTimelineAlertClick).not.toHaveBeenCalled(); + }); + }); + + describe('when visualizationInFlyoutEnabled is enabled', () => { + it('should open left flyout visualization tab when clicking on title', () => { + mockUseUiSetting.mockReturnValue([true]); + + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); + (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ + loading: false, + error: false, + alertIds: ['alertid'], + statsNodes: mock.mockStatsNodes, + }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + + const { getByTestId } = renderAnalyzerPreview(); + + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)).click(); + expect(mockNavigateToAnalyzer).toHaveBeenCalled(); + }); + + it('should disable link when in rule preview', () => { + mockUseUiSetting.mockReturnValue([true]); + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); + (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ + loading: false, + error: false, + alertIds: ['alertid'], + statsNodes: mock.mockStatsNodes, + }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + + const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreview: true }); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + }); + + it('should disable link when in preview mode', () => { + mockUseUiSetting.mockReturnValue([true]); + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); + (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ + loading: false, + error: false, + alertIds: ['alertid'], + statsNodes: mock.mockStatsNodes, + }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + + const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreviewMode: true }); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + }); + }); + + describe('when new navigation is enabled', () => { + beforeEach(() => { + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(true); + }); + describe('when visualizationInFlyoutEnabled is enabled', () => { + beforeEach(() => { + mockUseUiSetting.mockReturnValue([true]); + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); + (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ + loading: false, + error: false, + alertIds: ['alertid'], + statsNodes: mock.mockStatsNodes, + }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + }); + it('should open left flyout visualization tab when clicking on title', () => { + const { getByTestId } = renderAnalyzerPreview(); + + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)).click(); + expect(mockNavigateToAnalyzer).toHaveBeenCalled(); + }); + + it('should disable link when in rule preview', () => { + const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreview: true }); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + }); + + it('should render link when in preview mode', () => { + const { getByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreviewMode: true }); + + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)).click(); + expect(mockNavigateToAnalyzer).toHaveBeenCalled(); + }); + }); + + describe('when visualizationInFlyoutEnabled is disabled', () => { + beforeEach(() => { + mockUseUiSetting.mockReturnValue([false]); + (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); + (useAlertPrevalenceFromProcessTree as jest.Mock).mockReturnValue({ + loading: false, + error: false, + alertIds: ['alertid'], + statsNodes: mock.mockStatsNodes, + }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + }); + it('should navigate to analyzer in timeline when clicking on title', () => { + const { getByTestId } = renderAnalyzerPreview(); + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); + + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)).click(); + expect(investigateInTimelineAlertClick).toHaveBeenCalled(); + }); + + it('should not navigate to analyzer when in preview and clicking on title', () => { + const { queryByTestId } = renderAnalyzerPreview({ ...mockContextValue, isPreview: true }); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); + expect(investigateInTimelineAlertClick).not.toHaveBeenCalled(); + }); + + it('should open analyzer in timelinewhen in preview mode', () => { + const { getByTestId } = renderAnalyzerPreview({ + ...mockContextValue, + isPreviewMode: true, + }); + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(ANALYZER_PREVIEW_TEST_ID)).click(); + expect(investigateInTimelineAlertClick).toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx new file mode 100644 index 0000000000000..1d11e8fb19951 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx @@ -0,0 +1,150 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; +import { useDispatch } from 'react-redux'; +import { TimelineTabs } from '@kbn/securitysolution-data-table'; +import { EuiLink, EuiMark } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; +import { ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING } from '../../../../../common/constants'; +import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; +import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; +import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; +import { getScopedActions } from '../../../../helpers'; +import { setActiveTabTimeline } from '../../../../timelines/store/actions'; +import { useDocumentDetailsContext } from '../../shared/context'; +import { useIsInvestigateInResolverActionEnabled } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; +import { AnalyzerPreview } from './analyzer_preview'; +import { ANALYZER_PREVIEW_TEST_ID } from './test_ids'; +import { useNavigateToAnalyzer } from '../../shared/hooks/use_navigate_to_analyzer'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; + +const timelineId = 'timeline-1'; + +/** + * Analyzer preview under Overview, Visualizations. It shows a tree representation of analyzer. + */ +export const AnalyzerPreviewContainer: React.FC = () => { + const { dataAsNestedObject, isPreview, eventId, indexName, scopeId, isPreviewMode } = + useDocumentDetailsContext(); + + const [visualizationInFlyoutEnabled] = useUiSetting$( + ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING + ); + const isNewNavigationEnabled = useIsExperimentalFeatureEnabled( + 'newExpandableFlyoutNavigationEnabled' + ); + // decide whether to show the analyzer preview or not + const isEnabled = useIsInvestigateInResolverActionEnabled(dataAsNestedObject); + + const dispatch = useDispatch(); + const { startTransaction } = useStartTransaction(); + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({ + ecsRowData: dataAsNestedObject, + }); + + // open timeline to the analyzer tab because the expandable flyout left panel Visualize => Analyzer tab is not ready + const goToAnalyzerTab = useCallback(async () => { + // open timeline + await investigateInTimelineAlertClick(); + + // open analyzer tab + startTransaction({ name: ALERTS_ACTIONS.OPEN_ANALYZER }); + const scopedActions = getScopedActions(timelineId); + if (scopedActions && dataAsNestedObject) { + dispatch( + scopedActions.updateGraphEventId({ id: timelineId, graphEventId: dataAsNestedObject._id }) + ); + } + dispatch(setActiveTabTimeline({ id: timelineId, activeTab: TimelineTabs.graph })); + }, [dataAsNestedObject, dispatch, investigateInTimelineAlertClick, startTransaction]); + + const { navigateToAnalyzer } = useNavigateToAnalyzer({ + eventId, + indexName, + isFlyoutOpen: true, + scopeId, + isPreviewMode, + }); + + const iconType = useMemo(() => { + const icon = visualizationInFlyoutEnabled ? 'arrowStart' : 'timeline'; + return !isPreviewMode ? icon : undefined; + }, [visualizationInFlyoutEnabled, isPreviewMode]); + + const isNavigationEnabled = useMemo(() => { + // if the analyzer is not enabled or in rule preview mode, the navigation is not enabled + if (!isEnabled || isPreview) { + return false; + } + // if the new navigation is enabled, the navigation is enabled (flyout or timeline) + if (isNewNavigationEnabled) { + return true; + } + // if the new navigation is not enabled, the navigation is enabled if the flyout is not in preview mode + return !isPreviewMode; + }, [isNewNavigationEnabled, isPreviewMode, isEnabled, isPreview]); + + return ( + + ), + iconType, + ...(isNavigationEnabled && { + link: { + callback: visualizationInFlyoutEnabled ? navigateToAnalyzer : goToAnalyzerTab, + tooltip: visualizationInFlyoutEnabled ? ( + + ) : ( + + ), + }, + }), + }} + data-test-subj={ANALYZER_PREVIEW_TEST_ID} + > + {isEnabled ? ( + + ) : ( + {'sysmon'}, + winlogbeat: {'winlogbeat'}, + link: ( + + + + ), + }} + /> + )} + + ); +}; + +AnalyzerPreviewContainer.displayName = 'AnalyzerPreviewContainer'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/assignees.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/assignees.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/assignees.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/assignees.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/assignees.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/assignees.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/assignees.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/assignees.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.test.tsx similarity index 86% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.test.tsx index ff8961a087801..fe8a2c9e7160b 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.test.tsx @@ -7,14 +7,9 @@ import React from 'react'; import { render } from '@testing-library/react'; -import type { ExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; import { DocumentDetailsContext } from '../../shared/context'; import { TestProviders } from '../../../../common/mock'; import { CorrelationsOverview } from './correlations_overview'; -import { CORRELATIONS_TAB_ID } from '../../left/components/correlations_details'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInsightsTab } from '../../left'; import { CORRELATIONS_RELATED_ALERTS_BY_ANCESTRY_TEST_ID, CORRELATIONS_RELATED_ALERTS_BY_SAME_SOURCE_EVENT_TEST_ID, @@ -35,6 +30,7 @@ import { useFetchRelatedAlertsBySameSourceEvent } from '../../shared/hooks/use_f import { useFetchRelatedAlertsBySession } from '../../shared/hooks/use_fetch_related_alerts_by_session'; import { useTimelineDataFilters } from '../../../../timelines/containers/use_timeline_data_filters'; import { useFetchRelatedCases } from '../../shared/hooks/use_fetch_related_cases'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; import { EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, @@ -53,6 +49,7 @@ jest.mock('../../shared/hooks/use_fetch_related_alerts_by_session'); jest.mock('../../shared/hooks/use_fetch_related_alerts_by_ancestry'); jest.mock('../../shared/hooks/use_fetch_related_alerts_by_same_source_event'); jest.mock('../../shared/hooks/use_fetch_related_cases'); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); const TOGGLE_ICON_TEST_ID = EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(CORRELATIONS_TEST_ID); const TITLE_LINK_TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(CORRELATIONS_TEST_ID); @@ -104,12 +101,6 @@ const renderCorrelationsOverview = (contextValue: DocumentDetailsContext) => ( const NO_DATA_MESSAGE = 'No correlations data available.'; -const flyoutContextValue = { - openLeftPanel: jest.fn(), -} as unknown as ExpandableFlyoutApi; - -jest.mock('@kbn/expandable-flyout'); - jest.mock('../../../../timelines/containers/use_timeline_data_filters', () => ({ useTimelineDataFilters: jest.fn(), })); @@ -120,10 +111,10 @@ jest.mock('../../../../common/components/guided_onboarding_tour', () => ({ })); const originalEventId = 'originalEventId'; +const mockNavigateToLeftPanel = jest.fn(); describe('', () => { - beforeAll(() => { - jest.mocked(useExpandableFlyoutApi).mockReturnValue(flyoutContextValue); + beforeEach(() => { jest.mocked(useTourContext).mockReturnValue({ hidden: false, setAllTourStepsHidden: jest.fn(), @@ -133,10 +124,6 @@ describe('', () => { isTourShown: jest.fn(), setStep: jest.fn(), }); - mockUseTimelineDataFilters.mockReturnValue({ selectedPatterns: ['index'] }); - }); - - it('should render wrapper component', () => { jest .mocked(useShowRelatedAlertsByAncestry) .mockReturnValue({ show: false, documentId: 'event-id' }); @@ -146,7 +133,14 @@ describe('', () => { jest.mocked(useShowRelatedAlertsBySession).mockReturnValue({ show: false }); jest.mocked(useShowRelatedCases).mockReturnValue(false); jest.mocked(useShowSuppressedAlerts).mockReturnValue({ show: false, alertSuppressionCount: 0 }); + mockUseTimelineDataFilters.mockReturnValue({ selectedPatterns: ['index'] }); + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); + }); + it('should render wrapper component', () => { const { getByTestId, queryByTestId } = render(renderCorrelationsOverview(panelContextValue)); expect(queryByTestId(TOGGLE_ICON_TEST_ID)).not.toBeInTheDocument(); expect(getByTestId(TITLE_LINK_TEST_ID)).toBeInTheDocument(); @@ -154,23 +148,23 @@ describe('', () => { expect(queryByTestId(TITLE_TEXT_TEST_ID)).not.toBeInTheDocument(); }); - it('should not render link when isPreviewMode is true', () => { - jest - .mocked(useShowRelatedAlertsByAncestry) - .mockReturnValue({ show: false, documentId: 'event-id' }); - jest - .mocked(useShowRelatedAlertsBySameSourceEvent) - .mockReturnValue({ show: false, originalEventId }); - jest.mocked(useShowRelatedAlertsBySession).mockReturnValue({ show: false }); - jest.mocked(useShowRelatedCases).mockReturnValue(false); - jest.mocked(useShowSuppressedAlerts).mockReturnValue({ show: false, alertSuppressionCount: 0 }); - + it('should render link without icon if in preview mode', () => { const { getByTestId, queryByTestId } = render( renderCorrelationsOverview({ ...panelContextValue, isPreviewMode: true }) ); + expect(getByTestId(TITLE_LINK_TEST_ID)).toBeInTheDocument(); + expect(queryByTestId(TITLE_ICON_TEST_ID)).not.toBeInTheDocument(); + }); + + it('should not render link when navigation is disabled', () => { + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: false, + }); + + const { getByTestId, queryByTestId } = render(renderCorrelationsOverview(panelContextValue)); expect(queryByTestId(TOGGLE_ICON_TEST_ID)).not.toBeInTheDocument(); expect(queryByTestId(TITLE_LINK_TEST_ID)).not.toBeInTheDocument(); - expect(queryByTestId(TITLE_ICON_TEST_ID)).not.toBeInTheDocument(); expect(getByTestId(TITLE_TEXT_TEST_ID)).toBeInTheDocument(); }); @@ -261,15 +255,7 @@ describe('', () => { ); getByTestId(TITLE_LINK_TEST_ID).click(); - expect(flyoutContextValue.openLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { tab: LeftPanelInsightsTab, subTab: CORRELATIONS_TAB_ID }, - params: { - id: panelContextValue.eventId, - indexName: panelContextValue.indexName, - scopeId: panelContextValue.scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); it('should navigate to the left section Insights tab automatically when active step is "view case"', () => { @@ -280,15 +266,6 @@ describe('', () => { ); - - expect(flyoutContextValue.openLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { tab: LeftPanelInsightsTab, subTab: CORRELATIONS_TAB_ID }, - params: { - id: panelContextValue.eventId, - indexName: panelContextValue.indexName, - scopeId: panelContextValue.scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.tsx similarity index 86% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.tsx index 4043230d5269e..9de274388a836 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.tsx @@ -6,12 +6,10 @@ */ import { get } from 'lodash'; -import React, { useCallback, useEffect, useMemo } from 'react'; +import React, { useEffect, useMemo } from 'react'; import { EuiFlexGroup } from '@elastic/eui'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; import { ALERT_RULE_TYPE } from '@kbn/rule-data-utils'; - import type { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { ExpandablePanel } from '../../../shared/components/expandable_panel'; import { useShowRelatedAlertsBySession } from '../../shared/hooks/use_show_related_alerts_by_session'; @@ -26,7 +24,6 @@ import { RelatedCases } from './related_cases'; import { useShowRelatedCases } from '../../shared/hooks/use_show_related_cases'; import { CORRELATIONS_TEST_ID } from './test_ids'; import { useDocumentDetailsContext } from '../../shared/context'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; import { LeftPanelInsightsTab } from '../../left'; import { CORRELATIONS_TAB_ID } from '../../left/components/correlations_details'; import { useTimelineDataFilters } from '../../../../timelines/containers/use_timeline_data_filters'; @@ -36,6 +33,7 @@ import { AlertsCasesTourSteps, SecurityStepId, } from '../../../../common/components/guided_onboarding_tour/tour_config'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; /** * Correlations section under Insights section, overview tab. @@ -43,34 +41,17 @@ import { * and the SummaryPanel component for data rendering. */ export const CorrelationsOverview: React.FC = () => { - const { - dataAsNestedObject, - eventId, - indexName, - getFieldsData, - scopeId, - isPreview, - isPreviewMode, - } = useDocumentDetailsContext(); - const { openLeftPanel } = useExpandableFlyoutApi(); + const { dataAsNestedObject, eventId, getFieldsData, scopeId, isPreview, isPreviewMode } = + useDocumentDetailsContext(); const { isTourShown, activeStep } = useTourContext(); const { selectedPatterns } = useTimelineDataFilters(isActiveTimeline(scopeId)); - const goToCorrelationsTab = useCallback(() => { - openLeftPanel({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: CORRELATIONS_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, + const { navigateToLeftPanel: goToCorrelationsTab, isEnabled: isLinkEnabled } = + useNavigateToLeftPanel({ + tab: LeftPanelInsightsTab, + subTab: CORRELATIONS_TAB_ID, }); - }, [eventId, openLeftPanel, indexName, scopeId]); useEffect(() => { if (isTourShown(SecurityStepId.alertsCases) && activeStep === AlertsCasesTourSteps.createCase) { @@ -105,7 +86,7 @@ export const CorrelationsOverview: React.FC = () => { const link = useMemo( () => - !isPreviewMode + isLinkEnabled ? { callback: goToCorrelationsTab, tooltip: ( @@ -116,7 +97,7 @@ export const CorrelationsOverview: React.FC = () => { ), } : undefined, - [isPreviewMode, goToCorrelationsTab] + [goToCorrelationsTab, isLinkEnabled] ); return ( diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.test.tsx similarity index 87% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.test.tsx index 92248c6de2828..e04acb5103ab9 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.test.tsx @@ -18,7 +18,7 @@ import { TestProviders } from '../../../../common/mock'; import { useFirstLastSeen } from '../../../../common/containers/use_first_last_seen'; import { useObservedUserDetails } from '../../../../explore/users/containers/users/observed_details'; import { useHostDetails } from '../../../../explore/hosts/containers/hosts/details'; -import { mockGetFieldsData } from '../../shared/mocks/mock_get_fields_data'; +import { mockContextValue } from '../../shared/mocks/mock_context'; import { EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, @@ -26,11 +26,14 @@ import { EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, } from '../../../shared/components/test_ids'; import { useRiskScore } from '../../../../entity_analytics/api/hooks/use_risk_score'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; const from = '2022-04-05T12:00:00.000Z'; const to = '2022-04-08T12:00:00.;000Z'; const selectedPatterns = 'alerts'; +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + const mockUseGlobalTime = jest.fn().mockReturnValue({ from, to }); jest.mock('../../../../common/containers/use_global_time', () => { return { @@ -62,12 +65,7 @@ const TITLE_LINK_TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(INSIGHTS_E const TITLE_ICON_TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(INSIGHTS_ENTITIES_TEST_ID); const TITLE_TEXT_TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(INSIGHTS_ENTITIES_TEST_ID); -const mockContextValue = { - eventId: 'event id', - indexName: 'index', - scopeId: 'scopeId', - getFieldsData: mockGetFieldsData, -} as unknown as DocumentDetailsContext; +const mockNavigateToLeftPanel = jest.fn(); const renderEntitiesOverview = (contextValue: DocumentDetailsContext) => render( @@ -86,6 +84,10 @@ describe('', () => { mockUseRiskScore.mockReturnValue({ data: null, isAuthorized: false }); mockUseHostDetails.mockReturnValue([false, { hostDetails: null }]); mockUseFirstLastSeen.mockReturnValue([false, { lastSeen: null }]); + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); }); it('should render wrapper component', () => { const { getByTestId, queryByTestId } = renderEntitiesOverview(mockContextValue); @@ -97,15 +99,25 @@ describe('', () => { expect(queryByTestId(TITLE_TEXT_TEST_ID)).not.toBeInTheDocument(); }); - it('should not render link if isPreviewMode is true', () => { + it('should render link without icon if in preview mode', () => { const { getByTestId, queryByTestId } = renderEntitiesOverview({ ...mockContextValue, isPreviewMode: true, }); - expect(queryByTestId(TOGGLE_ICON_TEST_ID)).not.toBeInTheDocument(); - expect(queryByTestId(TITLE_LINK_TEST_ID)).not.toBeInTheDocument(); + expect(getByTestId(TITLE_LINK_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(TITLE_LINK_TEST_ID)).toHaveTextContent('Entities'); expect(queryByTestId(TITLE_ICON_TEST_ID)).not.toBeInTheDocument(); + }); + + it('should not render link if navigation is disabled', () => { + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: false, + }); + const { getByTestId, queryByTestId } = renderEntitiesOverview(mockContextValue); + + expect(queryByTestId(TITLE_LINK_TEST_ID)).not.toBeInTheDocument(); expect(getByTestId(TITLE_TEXT_TEST_ID)).toBeInTheDocument(); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.tsx similarity index 77% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.tsx index 16fe6cbe1c1e0..6e0de2b902ac4 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.tsx @@ -5,9 +5,8 @@ * 2.0. */ -import React, { useCallback, useMemo } from 'react'; +import React, { useMemo } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; import { INSIGHTS_ENTITIES_TEST_ID } from './test_ids'; import { ExpandablePanel } from '../../../shared/components/expandable_panel'; @@ -15,39 +14,28 @@ import { useDocumentDetailsContext } from '../../shared/context'; import { getField } from '../../shared/utils'; import { HostEntityOverview } from './host_entity_overview'; import { UserEntityOverview } from './user_entity_overview'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; import { LeftPanelInsightsTab } from '../../left'; import { ENTITIES_TAB_ID } from '../../left/components/entities_details'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; /** * Entities section under Insights section, overview tab. It contains a preview of host and user information. */ export const EntitiesOverview: React.FC = () => { - const { eventId, getFieldsData, indexName, scopeId, isPreviewMode } = useDocumentDetailsContext(); - const { openLeftPanel } = useExpandableFlyoutApi(); + const { getFieldsData, isPreviewMode } = useDocumentDetailsContext(); const hostName = getField(getFieldsData('host.name')); const userName = getField(getFieldsData('user.name')); - const goToEntitiesTab = useCallback(() => { - openLeftPanel({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: ENTITIES_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }, [eventId, openLeftPanel, indexName, scopeId]); + const { navigateToLeftPanel, isEnabled: isLinkEnabled } = useNavigateToLeftPanel({ + tab: LeftPanelInsightsTab, + subTab: ENTITIES_TAB_ID, + }); const link = useMemo( () => - !isPreviewMode + isLinkEnabled ? { - callback: goToEntitiesTab, + callback: navigateToLeftPanel, tooltip: ( { ), } : undefined, - [goToEntitiesTab, isPreviewMode] + [navigateToLeftPanel, isLinkEnabled] ); return ( diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_category_description.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_category_description.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_category_description.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_category_description.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_category_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_category_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_category_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_category_description.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_header_title.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_header_title.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_header_title.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_header_title.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_header_title.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_header_title.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_header_title.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_header_title.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_kind_description.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_kind_description.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_kind_description.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_kind_description.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_kind_description.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_kind_description.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_kind_description.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_kind_description.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/event_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/event_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx similarity index 82% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx index 22ac27eaa4e00..2142d19c82870 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx @@ -36,10 +36,19 @@ describe('', () => { }); it('shows graph preview correctly when data is loaded', async () => { - const graphProps = { + const graphProps: GraphPreviewProps = { isLoading: false, isError: false, - data: { nodes: [], edges: [] }, + data: { + nodes: [ + { + id: '1', + color: 'primary', + shape: 'ellipse', + }, + ], + edges: [], + }, }; const { findByTestId } = renderGraphPreview(mockContextValue, graphProps); @@ -69,4 +78,15 @@ describe('', () => { expect(getByText(ERROR_MESSAGE)).toBeInTheDocument(); }); + + it('shows error message when data is empty', () => { + const graphProps = { + isLoading: false, + isError: false, + }; + + const { getByText } = renderGraphPreview(mockContextValue, graphProps); + + expect(getByText(ERROR_MESSAGE)).toBeInTheDocument(); + }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx index c3c6d65c7e986..dec3c40790ad8 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx @@ -5,7 +5,7 @@ * 2.0. */ import React, { memo, useMemo } from 'react'; -import { EuiSkeletonText } from '@elastic/eui'; +import { EuiPanel, EuiSkeletonText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -71,13 +71,19 @@ export const GraphPreview: React.FC = memo( return isLoading ? ( - ) : isError ? ( + ) : isError || memoizedNodes.length === 0 ? ( ) : ( - }> + + + + } + > { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useUiSetting$: () => mockUseUiSetting(), + }; +}); + +jest.mock('../../../../common/hooks/use_experimental_features', () => ({ + useIsExperimentalFeatureEnabled: jest.fn(), +})); + +const useIsExperimentalFeatureEnabledMock = useIsExperimentalFeatureEnabled as jest.Mock; + +jest.mock('../../shared/hooks/use_graph_preview'); +jest.mock('@kbn/cloud-security-posture-graph/src/hooks', () => ({ + useFetchGraphData: jest.fn(), +})); +const mockUseFetchGraphData = useFetchGraphData as jest.Mock; + +const mockGraph = () =>
    ; + +jest.mock('@kbn/cloud-security-posture-graph', () => { + return { Graph: mockGraph }; +}); + +const renderGraphPreview = (context = mockContextValue) => + render( + + + + + + ); + +const DEFAULT_NODES = [ + { + id: '1', + color: 'primary', + shape: 'ellipse', + }, +]; + +describe('', () => { + beforeEach(() => { + jest.clearAllMocks(); + useIsExperimentalFeatureEnabledMock.mockReturnValue(true); + }); + + it('should render component and link in header', async () => { + mockUseFetchGraphData.mockReturnValue({ + isLoading: false, + isError: false, + data: { nodes: DEFAULT_NODES, edges: [] }, + }); + + const timestamp = new Date().toISOString(); + + (useGraphPreview as jest.Mock).mockReturnValue({ + timestamp, + eventIds: [], + hasGraphRepresentation: true, + }); + + const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview(); + + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component + expect(await findByTestId(GRAPH_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect(mockUseFetchGraphData).toHaveBeenCalled(); + expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ + req: { + query: { + eventIds: [], + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: true, + refetchOnWindowFocus: false, + }, + }); + }); + + it('should render component and without link in header in preview panel', async () => { + mockUseFetchGraphData.mockReturnValue({ + isLoading: false, + isError: false, + data: { nodes: DEFAULT_NODES, edges: [] }, + }); + + const timestamp = new Date().toISOString(); + + (useGraphPreview as jest.Mock).mockReturnValue({ + timestamp, + eventIds: [], + hasGraphRepresentation: true, + }); + + const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview({ + ...mockContextValue, + isPreviewMode: true, + }); + + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component + expect(await findByTestId(GRAPH_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect(mockUseFetchGraphData).toHaveBeenCalled(); + expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ + req: { + query: { + eventIds: [], + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: true, + refetchOnWindowFocus: false, + }, + }); + }); + + it('should render component and without link in header in rule preview', async () => { + mockUseFetchGraphData.mockReturnValue({ + isLoading: false, + isError: false, + data: { nodes: DEFAULT_NODES, edges: [] }, + }); + + const timestamp = new Date().toISOString(); + + (useGraphPreview as jest.Mock).mockReturnValue({ + timestamp, + eventIds: [], + hasGraphRepresentation: true, + }); + + const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview({ + ...mockContextValue, + isPreview: true, + }); + + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component + expect(await findByTestId(GRAPH_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect(mockUseFetchGraphData).toHaveBeenCalled(); + expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ + req: { + query: { + eventIds: [], + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: true, + refetchOnWindowFocus: false, + }, + }); + }); + + it('should render component and without link in header when expanding flyout feature is disabled', async () => { + mockUseUiSetting.mockReturnValue([false]); + mockUseFetchGraphData.mockReturnValue({ + isLoading: false, + isError: false, + data: { nodes: DEFAULT_NODES, edges: [] }, + }); + + const timestamp = new Date().toISOString(); + + (useGraphPreview as jest.Mock).mockReturnValue({ + timestamp, + eventIds: [], + hasGraphRepresentation: true, + }); + + const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview(); + + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component + expect(await findByTestId(GRAPH_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect(mockUseFetchGraphData).toHaveBeenCalled(); + expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ + req: { + query: { + eventIds: [], + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: true, + refetchOnWindowFocus: false, + }, + }); + }); + + it('should not render when graph data is not available', async () => { + mockUseFetchGraphData.mockReturnValue({ + isLoading: false, + isError: false, + data: undefined, + }); + + const timestamp = new Date().toISOString(); + + (useGraphPreview as jest.Mock).mockReturnValue({ + timestamp, + eventIds: [], + hasGraphRepresentation: false, + }); + + const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview(); + + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component + expect( + await findByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect(mockUseFetchGraphData).toHaveBeenCalled(); + expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ + req: { + query: { + eventIds: [], + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: false, + refetchOnWindowFocus: false, + }, + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx new file mode 100644 index 0000000000000..90a0218778549 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx @@ -0,0 +1,128 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; +import { EuiBetaBadge } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { useFetchGraphData } from '@kbn/cloud-security-posture-graph/src/hooks'; +import { ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING } from '../../../../../common/constants'; +import { useDocumentDetailsContext } from '../../shared/context'; +import { GRAPH_PREVIEW_TEST_ID } from './test_ids'; +import { GraphPreview } from './graph_preview'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; +import { useNavigateToGraphVisualization } from '../../shared/hooks/use_navigate_to_graph_visualization'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; + +/** + * Graph preview under Overview, Visualizations. It shows a graph representation of entities. + */ +export const GraphPreviewContainer: React.FC = () => { + const { + dataAsNestedObject, + getFieldsData, + eventId, + indexName, + scopeId, + isPreview, + isPreviewMode, + } = useDocumentDetailsContext(); + + const [visualizationInFlyoutEnabled] = useUiSetting$( + ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING + ); + const allowFlyoutExpansion = visualizationInFlyoutEnabled && !isPreviewMode && !isPreview; + + const { navigateToGraphVisualization } = useNavigateToGraphVisualization({ + eventId, + indexName, + isFlyoutOpen: true, + scopeId, + }); + + const { + eventIds, + timestamp = new Date().toISOString(), + hasGraphRepresentation, + } = useGraphPreview({ + getFieldsData, + ecsData: dataAsNestedObject, + }); + + // TODO: default start and end might not capture the original event + const { isLoading, isError, data } = useFetchGraphData({ + req: { + query: { + eventIds, + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: hasGraphRepresentation, + refetchOnWindowFocus: false, + }, + }); + + return ( + + ), + headerContent: ( + + ), + iconType: allowFlyoutExpansion ? 'arrowStart' : 'indexMapping', + ...(allowFlyoutExpansion && { + link: { + callback: navigateToGraphVisualization, + tooltip: ( + + ), + }, + }), + }} + data-test-subj={GRAPH_PREVIEW_TEST_ID} + content={ + !isLoading && !isError + ? { + paddingSize: 'none', + } + : undefined + } + > + + + ); +}; + +GraphPreviewContainer.displayName = 'GraphPreviewContainer'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/header_actions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_actions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/header_actions.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/header_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/header_actions.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_section.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_section.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.test.tsx new file mode 100644 index 0000000000000..6f5b82200772d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.test.tsx @@ -0,0 +1,131 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; +import { InsightsSummaryRow } from './insights_summary_row'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; + +const mockNavigateToLeftPanel = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + +const testId = 'test'; +const textTestId = `${testId}Text`; +const buttonTestId = `${testId}Button`; +const valueTestId = `${testId}Value`; +const loadingTestId = `${testId}Loading`; + +describe('', () => { + beforeEach(() => { + jest.clearAllMocks(); + + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); + }); + + it('should render loading skeleton if loading is true', () => { + const { getByTestId } = render( + {'value for this'}
    } + data-test-subj={testId} + /> + ); + + expect(getByTestId(loadingTestId)).toBeInTheDocument(); + }); + + it('should only render null when error is true', () => { + const { container } = render( + {'value for this'}
    } /> + ); + + expect(container).toBeEmptyDOMElement(); + }); + + it('should render the value component', () => { + const { getByTestId, queryByTestId } = render( + + {'value for this'}
    } + data-test-subj={testId} + /> + + ); + + expect(getByTestId(textTestId)).toHaveTextContent('this is a test for red'); + expect(getByTestId(valueTestId)).toHaveTextContent('value for this'); + expect(queryByTestId(buttonTestId)).not.toBeInTheDocument(); + }); + + it('should render the value as EuiBadge and EuiButtonEmpty', () => { + const { getByTestId, queryByTestId } = render( + + + + ); + + expect(getByTestId(textTestId)).toHaveTextContent('this is a test for red'); + expect(getByTestId(buttonTestId)).toHaveTextContent('2'); + expect(queryByTestId(valueTestId)).not.toBeInTheDocument(); + }); + + it('should render big numbers formatted correctly', () => { + const { getByTestId } = render( + + + + ); + + expect(getByTestId(buttonTestId)).toHaveTextContent('2k'); + }); + + it('should open the expanded section to the correct tab when the number is clicked', () => { + const { getByTestId } = render( + + + + ); + getByTestId(buttonTestId).click(); + + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); + }); + + it('should disabled the click when navigation is disabled', () => { + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: undefined, + isEnabled: false, + }); + + const { getByTestId } = render( + + + + ); + const button = getByTestId(buttonTestId); + + expect(button).toHaveAttribute('disabled'); + + button.click(); + expect(mockNavigateToLeftPanel).not.toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.tsx index 56a19d2eca965..18e75651c6a86 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.tsx @@ -6,15 +6,13 @@ */ import type { ReactElement, VFC } from 'react'; -import React, { useMemo, useCallback } from 'react'; +import React, { useMemo } from 'react'; import { css } from '@emotion/react'; import { i18n } from '@kbn/i18n'; import { EuiBadge, EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiSkeletonText } from '@elastic/eui'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; import { LeftPanelInsightsTab } from '../../left'; import { FormattedCount } from '../../../../common/components/formatted_number'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; const LOADING = i18n.translate( 'xpack.securitySolution.flyout.right.insights.insightSummaryLoadingAriaLabel', @@ -66,23 +64,10 @@ export const InsightsSummaryRow: VFC = ({ expandedSubTab, 'data-test-subj': dataTestSubj, }) => { - const { eventId, indexName, scopeId, isPreviewMode } = useDocumentDetailsContext(); - const { openLeftPanel } = useExpandableFlyoutApi(); - - const onClick = useCallback(() => { - openLeftPanel({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: expandedSubTab, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }, [eventId, expandedSubTab, indexName, openLeftPanel, scopeId]); + const { navigateToLeftPanel: onClick, isEnabled: isLinkEnabled } = useNavigateToLeftPanel({ + tab: LeftPanelInsightsTab, + subTab: expandedSubTab, + }); const textDataTestSubj = useMemo(() => `${dataTestSubj}Text`, [dataTestSubj]); const loadingDataTestSubj = useMemo(() => `${dataTestSubj}Loading`, [dataTestSubj]); @@ -100,7 +85,7 @@ export const InsightsSummaryRow: VFC = ({ onClick={onClick} flush={'both'} size="xs" - disabled={isPreviewMode} + disabled={!isLinkEnabled} data-test-subj={buttonDataTestSubj} > @@ -111,7 +96,7 @@ export const InsightsSummaryRow: VFC = ({ )} ); - }, [dataTestSubj, isPreviewMode, onClick, value]); + }, [dataTestSubj, onClick, value, isLinkEnabled]); if (loading) { return ( diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.test.tsx similarity index 84% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.test.tsx index f70039230cc45..2b465c793c766 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.test.tsx @@ -16,16 +16,13 @@ import { INVESTIGATION_GUIDE_TEST_ID, } from './test_ids'; import { mockContextValue } from '../../shared/mocks/mock_context'; -import type { ExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; import { useInvestigationGuide } from '../../shared/hooks/use_investigation_guide'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInvestigationTab } from '../../left'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; jest.mock('../../shared/hooks/use_investigation_guide'); -jest.mock('@kbn/expandable-flyout'); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); -const mockFlyoutContextValue = { openLeftPanel: jest.fn() }; +const mockNavigateToLeftPanel = jest.fn(); const NO_DATA_MESSAGE = "Investigation guideThere's no investigation guide for this rule."; const PREVIEW_MESSAGE = 'Investigation guide is not available in alert preview.'; @@ -42,10 +39,11 @@ const renderInvestigationGuide = () => ); describe('', () => { - beforeAll(() => { - jest.mocked(useExpandableFlyoutApi).mockReturnValue({ - openLeftPanel: mockFlyoutContextValue.openLeftPanel, - } as unknown as ExpandableFlyoutApi); + beforeEach(() => { + jest.mocked(useNavigateToLeftPanel).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); }); it('should render investigation guide button correctly', () => { @@ -126,10 +124,14 @@ describe('', () => { expect(getByTestId(INVESTIGATION_GUIDE_TEST_ID)).toHaveTextContent(PREVIEW_MESSAGE); }); - it('should render open flyout message if isPreviewMode is true', () => { + it('should render open flyout message if navigation is disabled', () => { + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: undefined, + isEnabled: false, + }); const { queryByTestId, getByTestId } = render( - + @@ -150,16 +152,6 @@ describe('', () => { const { getByTestId } = renderInvestigationGuide(); getByTestId(INVESTIGATION_GUIDE_BUTTON_TEST_ID).click(); - expect(mockFlyoutContextValue.openLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInvestigationTab, - }, - params: { - id: mockContextValue.eventId, - indexName: mockContextValue.indexName, - scopeId: mockContextValue.scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.tsx similarity index 85% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.tsx index f490266113533..599c0a73a0dab 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.tsx @@ -4,47 +4,35 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React, { useCallback, useMemo } from 'react'; +import React, { useMemo } from 'react'; import { EuiButton, EuiSkeletonText, EuiCallOut } from '@elastic/eui'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { useInvestigationGuide } from '../../shared/hooks/use_investigation_guide'; import { useDocumentDetailsContext } from '../../shared/context'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; import { LeftPanelInvestigationTab } from '../../left'; import { INVESTIGATION_GUIDE_BUTTON_TEST_ID, INVESTIGATION_GUIDE_LOADING_TEST_ID, INVESTIGATION_GUIDE_TEST_ID, } from './test_ids'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; /** * Render either the investigation guide button that opens Investigation section in the left panel, * or a no-data message if investigation guide hasn't been set up on the rule */ export const InvestigationGuide: React.FC = () => { - const { openLeftPanel } = useExpandableFlyoutApi(); - const { eventId, indexName, scopeId, dataFormattedForFieldBrowser, isPreview, isPreviewMode } = - useDocumentDetailsContext(); + const { dataFormattedForFieldBrowser, isPreview } = useDocumentDetailsContext(); const { loading, error, basicAlertData, ruleNote } = useInvestigationGuide({ dataFormattedForFieldBrowser, }); - const goToInvestigationsTab = useCallback(() => { - openLeftPanel({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInvestigationTab, - }, - params: { - id: eventId, - indexName, - scopeId, - }, + const { navigateToLeftPanel: goToInvestigationsTab, isEnabled: isLinkEnabled } = + useNavigateToLeftPanel({ + tab: LeftPanelInvestigationTab, }); - }, [eventId, indexName, openLeftPanel, scopeId]); const hasInvestigationGuide = useMemo( () => !error && basicAlertData && basicAlertData.ruleId && ruleNote, @@ -88,7 +76,7 @@ export const InvestigationGuide: React.FC = () => { ); } - if (hasInvestigationGuide && isPreviewMode) { + if (hasInvestigationGuide && !isLinkEnabled) { return ( { /> ); - }, [loading, isPreview, isPreviewMode, goToInvestigationsTab, hasInvestigationGuide]); + }, [isPreview, loading, hasInvestigationGuide, isLinkEnabled, goToInvestigationsTab]); return
    {content}
    ; }; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.test.tsx similarity index 94% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.test.tsx index d97821428745f..9a25043abbdf4 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.test.tsx @@ -22,10 +22,12 @@ import { TestProvider } from '@kbn/expandable-flyout/src/test/provider'; import { mockContextValue } from '../../shared/mocks/mock_context'; import { useExpandSection } from '../hooks/use_expand_section'; import { useHighlightedFields } from '../../shared/hooks/use_highlighted_fields'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; jest.mock('../../../../detection_engine/rule_management/logic/use_rule_with_fallback'); jest.mock('../hooks/use_expand_section'); jest.mock('../../shared/hooks/use_highlighted_fields'); +jest.mock('../../../../common/hooks/use_experimental_features'); const panelContextValue = { ...mockContextValue, @@ -49,6 +51,7 @@ describe('', () => { beforeEach(() => { jest.clearAllMocks(); (useRuleWithFallback as jest.Mock).mockReturnValue({ rule: { note: 'test note' } }); + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(false); }); it('should render investigation component', () => { diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/notes.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/notes.test.tsx similarity index 80% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/notes.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/notes.test.tsx index 7ccc3477a9d5d..3e07d9df1f79d 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/notes.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/notes.test.tsx @@ -21,15 +21,15 @@ import { mockContextValue } from '../../shared/mocks/mock_context'; import { createMockStore, mockGlobalState, TestProviders } from '../../../../common/mock'; import { ReqStatus } from '../../../../notes'; import type { Note } from '../../../../../common/api/timeline'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelNotesTab } from '../../left'; import { getEmptyValue } from '../../../../common/components/empty_value'; import { useUserPrivileges } from '../../../../common/components/user_privileges'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; -jest.mock('@kbn/expandable-flyout'); jest.mock('../../../../common/components/user_privileges'); +const mockNavigateToLeftPanel = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + const mockAddError = jest.fn(); jest.mock('../../../../common/hooks/use_app_toasts', () => ({ useAppToasts: () => ({ @@ -48,15 +48,17 @@ jest.mock('react-redux', () => { describe('', () => { beforeEach(() => { + jest.clearAllMocks(); (useUserPrivileges as jest.Mock).mockReturnValue({ kibanaSecuritySolutionsPrivileges: { crud: true }, }); - jest.clearAllMocks(); + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); }); it('should render loading spinner', () => { - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: jest.fn() }); - const store = createMockStore({ ...mockGlobalState, notes: { @@ -83,9 +85,6 @@ describe('', () => { }); it('should render Add note button if no notes are present', () => { - const mockOpenLeftPanel = jest.fn(); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); - const { getByTestId } = render( @@ -99,29 +98,17 @@ describe('', () => { button.click(); - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { tab: LeftPanelNotesTab }, - params: { - id: mockContextValue.eventId, - indexName: mockContextValue.indexName, - scopeId: mockContextValue.scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); it('should disabled the Add note button if in preview mode', () => { - const contextValue = { - ...mockContextValue, - isPreviewMode: true, - }; - - const mockOpenLeftPanel = jest.fn(); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); - + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: undefined, + isEnabled: false, + }); const { getByTestId } = render( - + @@ -135,13 +122,10 @@ describe('', () => { button.click(); - expect(mockOpenLeftPanel).not.toHaveBeenCalled(); + expect(mockNavigateToLeftPanel).not.toHaveBeenCalled(); }); it('should render number of notes and plus button', () => { - const mockOpenLeftPanel = jest.fn(); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); - const contextValue = { ...mockContextValue, eventId: '1', @@ -163,25 +147,17 @@ describe('', () => { expect(button).toBeInTheDocument(); button.click(); - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { tab: LeftPanelNotesTab }, - params: { - id: contextValue.eventId, - indexName: mockContextValue.indexName, - scopeId: mockContextValue.scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); - it('should disable the plus button if in preview mode', () => { - const mockOpenLeftPanel = jest.fn(); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); - + it('should disable the plus button if navigation is disabled', () => { + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: undefined, + isEnabled: false, + }); const contextValue = { ...mockContextValue, eventId: '1', - isPreviewMode: true, }; const { getByTestId } = render( @@ -203,7 +179,7 @@ describe('', () => { button.click(); expect(button).toBeDisabled(); - expect(mockOpenLeftPanel).not.toHaveBeenCalled(); + expect(mockNavigateToLeftPanel).not.toHaveBeenCalled(); }); it('should render number of notes in scientific notation for big numbers', () => { @@ -257,8 +233,6 @@ describe('', () => { isPreview: true, }; - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: jest.fn() }); - const { getByText, queryByTestId } = render( @@ -309,9 +283,6 @@ describe('', () => { kibanaSecuritySolutionsPrivileges: { crud: false }, }); - const mockOpenLeftPanel = jest.fn(); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); - const contextValue = { ...mockContextValue, eventId: '1', @@ -337,15 +308,7 @@ describe('', () => { button.click(); - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { tab: LeftPanelNotesTab }, - params: { - id: contextValue.eventId, - indexName: mockContextValue.indexName, - scopeId: mockContextValue.scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); it('should show a - if user does not have the correct privileges and no notes have been created', () => { diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/notes.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/notes.tsx similarity index 83% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/notes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/notes.tsx index e10a1ff23919f..46377ee6db628 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/notes.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/notes.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { memo, useCallback, useEffect, useMemo } from 'react'; +import React, { memo, useEffect, useMemo } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; @@ -18,10 +18,8 @@ import { useEuiTheme, } from '@elastic/eui'; import { css } from '@emotion/react'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; import { useUserPrivileges } from '../../../../common/components/user_privileges'; import { getEmptyTagValue } from '../../../../common/components/empty_value'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; import { FormattedCount } from '../../../../common/components/formatted_number'; import { useDocumentDetailsContext } from '../../shared/context'; import { @@ -44,6 +42,7 @@ import { import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; import { AlertHeaderBlock } from './alert_header_block'; import { LeftPanelNotesTab } from '../../left'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; export const FETCH_NOTES_ERROR = i18n.translate( 'xpack.securitySolution.flyout.right.notes.fetchNotesErrorLabel', @@ -70,31 +69,23 @@ export const VIEW_NOTES_BUTTON_ARIA_LABEL = i18n.translate( export const Notes = memo(() => { const { euiTheme } = useEuiTheme(); const dispatch = useDispatch(); - const { eventId, indexName, scopeId, isPreview, isPreviewMode } = useDocumentDetailsContext(); + const { eventId, isPreview } = useDocumentDetailsContext(); const { addError: addErrorToast } = useAppToasts(); const { kibanaSecuritySolutionsPrivileges } = useUserPrivileges(); - const { openLeftPanel } = useExpandableFlyoutApi(); - const openExpandedFlyoutNotesTab = useCallback( - () => - openLeftPanel({ - id: DocumentDetailsLeftPanelKey, - path: { tab: LeftPanelNotesTab }, - params: { - id: eventId, - indexName, - scopeId, - }, - }), - [eventId, indexName, openLeftPanel, scopeId] - ); + const { navigateToLeftPanel: openExpandedFlyoutNotesTab, isEnabled: isLinkEnabled } = + useNavigateToLeftPanel({ + tab: LeftPanelNotesTab, + }); + + const isNotesDisabled = !isLinkEnabled || isPreview; useEffect(() => { // only fetch notes if we are not in a preview panel, or not in a rule preview workflow - if (!isPreviewMode && !isPreview) { + if (!isNotesDisabled) { dispatch(fetchNotesByDocumentIds({ documentIds: [eventId] })); } - }, [dispatch, eventId, isPreview, isPreviewMode]); + }, [dispatch, eventId, isNotesDisabled]); const fetchStatus = useSelector((state: State) => selectFetchNotesByDocumentIdsStatus(state)); const fetchError = useSelector((state: State) => selectFetchNotesByDocumentIdsError(state)); @@ -115,7 +106,7 @@ export const Notes = memo(() => { @@ -126,7 +117,7 @@ export const Notes = memo(() => { /> ), - [isPreview, isPreviewMode, notes.length, openExpandedFlyoutNotesTab] + [isNotesDisabled, notes.length, openExpandedFlyoutNotesTab] ); const addNoteButton = useMemo( () => ( @@ -134,21 +125,21 @@ export const Notes = memo(() => { iconType="plusInCircle" onClick={openExpandedFlyoutNotesTab} size="s" - disabled={isPreviewMode || isPreview} + disabled={isNotesDisabled} aria-label={ADD_NOTE_BUTTON} data-test-subj={NOTES_ADD_NOTE_BUTTON_TEST_ID} > {ADD_NOTE_BUTTON} ), - [isPreview, isPreviewMode, openExpandedFlyoutNotesTab] + [isNotesDisabled, openExpandedFlyoutNotesTab] ); const addNoteButtonIcon = useMemo( () => ( { ), [ euiTheme.size.xs, - isPreview, - isPreviewMode, + isNotesDisabled, kibanaSecuritySolutionsPrivileges.crud, openExpandedFlyoutNotesTab, ] diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.test.tsx similarity index 83% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.test.tsx index 57770b58e2fcb..ddf55daef882c 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.test.tsx @@ -13,11 +13,8 @@ import { SUMMARY_ROW_TEXT_TEST_ID, SUMMARY_ROW_VALUE_TEST_ID, } from './test_ids'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInsightsTab } from '../../left'; import React from 'react'; import { PrevalenceOverview } from './prevalence_overview'; -import { PREVALENCE_TAB_ID } from '../../left/components/prevalence_details'; import { EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, @@ -27,10 +24,13 @@ import { } from '../../../shared/components/test_ids'; import { usePrevalence } from '../../shared/hooks/use_prevalence'; import { mockContextValue } from '../../shared/mocks/mock_context'; -import { type ExpandableFlyoutApi, useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; jest.mock('../../shared/hooks/use_prevalence'); +const mockNavigateToLeftPanel = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + const TOGGLE_ICON_TEST_ID = EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(PREVALENCE_TEST_ID); const TITLE_LINK_TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(PREVALENCE_TEST_ID); const TITLE_ICON_TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(PREVALENCE_TEST_ID); @@ -38,15 +38,6 @@ const TITLE_TEXT_TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(PREVALENCE const NO_DATA_MESSAGE = 'No prevalence data available.'; -const flyoutContextValue = { - openLeftPanel: jest.fn(), -} as unknown as ExpandableFlyoutApi; - -jest.mock('@kbn/expandable-flyout', () => ({ - useExpandableFlyoutApi: jest.fn(), - ExpandableFlyoutProvider: ({ children }: React.PropsWithChildren<{}>) => <>{children}, -})); - const renderPrevalenceOverview = (contextValue: DocumentDetailsContext = mockContextValue) => render( @@ -57,17 +48,19 @@ const renderPrevalenceOverview = (contextValue: DocumentDetailsContext = mockCon ); describe('', () => { - beforeAll(() => { - jest.mocked(useExpandableFlyoutApi).mockReturnValue(flyoutContextValue); - }); - - it('should render wrapper component', () => { + beforeEach(() => { (usePrevalence as jest.Mock).mockReturnValue({ loading: false, error: false, data: [], }); + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); + }); + it('should render wrapper component', () => { const { getByTestId, queryByTestId } = renderPrevalenceOverview(); expect(queryByTestId(TOGGLE_ICON_TEST_ID)).not.toBeInTheDocument(); expect(getByTestId(TITLE_LINK_TEST_ID)).toBeInTheDocument(); @@ -76,20 +69,23 @@ describe('', () => { expect(queryByTestId(TITLE_TEXT_TEST_ID)).not.toBeInTheDocument(); }); - it('should not render link and icon if isPreviewMode is true', () => { - (usePrevalence as jest.Mock).mockReturnValue({ - loading: false, - error: false, - data: [], - }); - + it('should render link without icon if isPreviewMode is true', () => { const { getByTestId, queryByTestId } = renderPrevalenceOverview({ ...mockContextValue, isPreviewMode: true, }); - expect(queryByTestId(TOGGLE_ICON_TEST_ID)).not.toBeInTheDocument(); - expect(queryByTestId(TITLE_LINK_TEST_ID)).not.toBeInTheDocument(); + expect(getByTestId(TITLE_LINK_TEST_ID)).toBeInTheDocument(); expect(queryByTestId(TITLE_ICON_TEST_ID)).not.toBeInTheDocument(); + }); + + it('should not render link if navigation is disabled', () => { + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: false, + }); + + const { getByTestId, queryByTestId } = renderPrevalenceOverview(mockContextValue); + expect(queryByTestId(TITLE_LINK_TEST_ID)).not.toBeInTheDocument(); expect(getByTestId(TITLE_TEXT_TEST_ID)).toBeInTheDocument(); }); @@ -193,14 +189,6 @@ describe('', () => { const { getByTestId } = renderPrevalenceOverview(); getByTestId(TITLE_LINK_TEST_ID).click(); - expect(flyoutContextValue.openLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { tab: LeftPanelInsightsTab, subTab: PREVALENCE_TAB_ID }, - params: { - id: 'eventId', - indexName: 'index', - scopeId: 'scopeId', - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.tsx similarity index 80% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.tsx index 966df0293db77..b24c22e5ebbd1 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.tsx @@ -6,18 +6,17 @@ */ import type { FC } from 'react'; -import React, { useCallback, useMemo } from 'react'; +import React, { useMemo } from 'react'; import { EuiBadge, EuiFlexGroup } from '@elastic/eui'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; import { ExpandablePanel } from '../../../shared/components/expandable_panel'; import { usePrevalence } from '../../shared/hooks/use_prevalence'; import { PREVALENCE_TEST_ID } from './test_ids'; import { useDocumentDetailsContext } from '../../shared/context'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; import { LeftPanelInsightsTab } from '../../left'; import { PREVALENCE_TAB_ID } from '../../left/components/prevalence_details'; import { InsightsSummaryRow } from './insights_summary_row'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; const UNCOMMON = ( { - const { - eventId, - indexName, - dataFormattedForFieldBrowser, - scopeId, - investigationFields, - isPreviewMode, - } = useDocumentDetailsContext(); - const { openLeftPanel } = useExpandableFlyoutApi(); + const { dataFormattedForFieldBrowser, investigationFields, isPreviewMode } = + useDocumentDetailsContext(); - const goPrevalenceTab = useCallback(() => { - openLeftPanel({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: PREVALENCE_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, + const { navigateToLeftPanel: goToPrevalenceTab, isEnabled: isLinkEnabled } = + useNavigateToLeftPanel({ + tab: LeftPanelInsightsTab, + subTab: PREVALENCE_TAB_ID, }); - }, [eventId, openLeftPanel, indexName, scopeId]); const { loading, error, data } = usePrevalence({ dataFormattedForFieldBrowser, @@ -82,9 +65,9 @@ export const PrevalenceOverview: FC = () => { ); const link = useMemo( () => - !isPreviewMode + isLinkEnabled ? { - callback: goPrevalenceTab, + callback: goToPrevalenceTab, tooltip: ( { ), } : undefined, - [goPrevalenceTab, isPreviewMode] + [goToPrevalenceTab, isLinkEnabled] ); return ( diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/reason.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/reason.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/reason.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/reason.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/reason.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/reason.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/reason.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/reason.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.test.tsx similarity index 76% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.test.tsx index 38efe27b16ea9..93f470331e352 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.test.tsx @@ -16,22 +16,16 @@ import { } from './test_ids'; import { RelatedAlertsByAncestry } from './related_alerts_by_ancestry'; import { useFetchRelatedAlertsByAncestry } from '../../shared/hooks/use_fetch_related_alerts_by_ancestry'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInsightsTab } from '../../left'; -import { CORRELATIONS_TAB_ID } from '../../left/components/correlations_details'; -import { useDocumentDetailsContext } from '../../shared/context'; - -jest.mock('@kbn/expandable-flyout'); -jest.mock('../../shared/context'); +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; + jest.mock('../../shared/hooks/use_fetch_related_alerts_by_ancestry'); -const mockOpenLeftPanel = jest.fn(); +const mockNavigateToLeftPanel = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + const documentId = 'documentId'; const indices = ['indices']; const scopeId = 'scopeId'; -const eventId = 'eventId'; -const indexName = 'indexName'; const TEXT_TEST_ID = SUMMARY_ROW_TEXT_TEST_ID(CORRELATIONS_RELATED_ALERTS_BY_ANCESTRY_TEST_ID); const BUTTON_TEST_ID = SUMMARY_ROW_BUTTON_TEST_ID(CORRELATIONS_RELATED_ALERTS_BY_ANCESTRY_TEST_ID); @@ -49,14 +43,10 @@ const renderRelatedAlertsByAncestry = () => describe('', () => { beforeEach(() => { jest.clearAllMocks(); - - (useDocumentDetailsContext as jest.Mock).mockReturnValue({ - eventId, - indexName, - scopeId, - isPreviewMode: false, + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, }); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); }); it('should render single related alert correctly', () => { @@ -112,17 +102,6 @@ describe('', () => { const { getByTestId } = renderRelatedAlertsByAncestry(); getByTestId(BUTTON_TEST_ID).click(); - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: CORRELATIONS_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.test.tsx similarity index 77% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.test.tsx index 80e7c99a60917..c3e646a2c1cdf 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.test.tsx @@ -16,21 +16,15 @@ import { } from './test_ids'; import { useFetchRelatedAlertsBySameSourceEvent } from '../../shared/hooks/use_fetch_related_alerts_by_same_source_event'; import { RelatedAlertsBySameSourceEvent } from './related_alerts_by_same_source_event'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInsightsTab } from '../../left'; -import { CORRELATIONS_TAB_ID } from '../../left/components/correlations_details'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; - -jest.mock('@kbn/expandable-flyout'); -jest.mock('../../shared/context'); +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; + jest.mock('../../shared/hooks/use_fetch_related_alerts_by_same_source_event'); -const mockOpenLeftPanel = jest.fn(); +const mockNavigateToLeftPanel = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + const originalEventId = 'originalEventId'; const scopeId = 'scopeId'; -const eventId = 'eventId'; -const indexName = 'indexName'; const TEXT_TEST_ID = SUMMARY_ROW_TEXT_TEST_ID( CORRELATIONS_RELATED_ALERTS_BY_SAME_SOURCE_EVENT_TEST_ID @@ -53,13 +47,10 @@ describe('', () => { beforeEach(() => { jest.clearAllMocks(); - (useDocumentDetailsContext as jest.Mock).mockReturnValue({ - eventId, - indexName, - scopeId, - isPreviewMode: false, + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, }); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); }); it('should render single related alert correctly', () => { @@ -117,17 +108,6 @@ describe('', () => { const { getByTestId } = renderRelatedAlertsBySameSourceEvent(); getByTestId(BUTTON_TEST_ID).click(); - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: CORRELATIONS_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.test.tsx similarity index 75% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.test.tsx index 4aeeef1feb8b1..8328099e1b316 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.test.tsx @@ -16,19 +16,13 @@ import { } from './test_ids'; import { RelatedAlertsBySession } from './related_alerts_by_session'; import { useFetchRelatedAlertsBySession } from '../../shared/hooks/use_fetch_related_alerts_by_session'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInsightsTab } from '../../left'; -import { CORRELATIONS_TAB_ID } from '../../left/components/correlations_details'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; - -jest.mock('@kbn/expandable-flyout'); -jest.mock('../../shared/context'); +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; + jest.mock('../../shared/hooks/use_fetch_related_alerts_by_session'); -const mockOpenLeftPanel = jest.fn(); -const eventId = 'eventId'; -const indexName = 'indexName'; +const mockNavigateToLeftPanel = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + const entityId = 'entityId'; const scopeId = 'scopeId'; @@ -47,13 +41,10 @@ describe('', () => { beforeEach(() => { jest.clearAllMocks(); - (useDocumentDetailsContext as jest.Mock).mockReturnValue({ - eventId, - indexName, - scopeId, - isPreviewMode: false, + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, }); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); }); it('should render single related alerts correctly', () => { @@ -109,17 +100,6 @@ describe('', () => { const { getByTestId } = renderRelatedAlertsBySession(); getByTestId(BUTTON_TEST_ID).click(); - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: CORRELATIONS_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_cases.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_cases.test.tsx new file mode 100644 index 0000000000000..3d4b42e275368 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_cases.test.tsx @@ -0,0 +1,104 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; +import { render } from '@testing-library/react'; +import { + CORRELATIONS_RELATED_CASES_TEST_ID, + SUMMARY_ROW_TEXT_TEST_ID, + SUMMARY_ROW_LOADING_TEST_ID, + SUMMARY_ROW_BUTTON_TEST_ID, +} from './test_ids'; +import { RelatedCases } from './related_cases'; +import { useFetchRelatedCases } from '../../shared/hooks/use_fetch_related_cases'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; + +jest.mock('../../shared/hooks/use_fetch_related_cases'); + +const mockNavigateToLeftPanel = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + +const eventId = 'eventId'; + +const TEXT_TEST_ID = SUMMARY_ROW_TEXT_TEST_ID(CORRELATIONS_RELATED_CASES_TEST_ID); +const BUTTON_TEST_ID = SUMMARY_ROW_BUTTON_TEST_ID(CORRELATIONS_RELATED_CASES_TEST_ID); +const LOADING_TEST_ID = SUMMARY_ROW_LOADING_TEST_ID(CORRELATIONS_RELATED_CASES_TEST_ID); + +const renderRelatedCases = () => + render( + + + + ); + +describe('', () => { + beforeEach(() => { + jest.clearAllMocks(); + + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); + }); + + it('should render single related case correctly', () => { + (useFetchRelatedCases as jest.Mock).mockReturnValue({ + loading: false, + error: false, + dataCount: 1, + }); + + const { getByTestId } = renderRelatedCases(); + expect(getByTestId(TEXT_TEST_ID)).toHaveTextContent('Related case'); + expect(getByTestId(BUTTON_TEST_ID)).toHaveTextContent('1'); + }); + + it('should render multiple related cases correctly', () => { + (useFetchRelatedCases as jest.Mock).mockReturnValue({ + loading: false, + error: false, + dataCount: 2, + }); + + const { getByTestId } = renderRelatedCases(); + expect(getByTestId(TEXT_TEST_ID)).toHaveTextContent('Related cases'); + expect(getByTestId(BUTTON_TEST_ID)).toHaveTextContent('2'); + }); + + it('should render loading skeleton', () => { + (useFetchRelatedCases as jest.Mock).mockReturnValue({ + loading: true, + }); + + const { getByTestId } = renderRelatedCases(); + expect(getByTestId(LOADING_TEST_ID)).toBeInTheDocument(); + }); + + it('should render null if error', () => { + (useFetchRelatedCases as jest.Mock).mockReturnValue({ + loading: false, + error: true, + }); + + const { container } = renderRelatedCases(); + expect(container).toBeEmptyDOMElement(); + }); + + it('should open the expanded section to the correct tab when the number is clicked', () => { + (useFetchRelatedCases as jest.Mock).mockReturnValue({ + loading: false, + error: false, + dataCount: 1, + }); + + const { getByTestId } = renderRelatedCases(); + getByTestId(BUTTON_TEST_ID).click(); + + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_cases.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_cases.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_cases.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/related_cases.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_button.test.tsx similarity index 88% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_button.test.tsx index 3765daec05496..7e01abfd2002f 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_button.test.tsx @@ -14,6 +14,9 @@ import { mockContextValue } from '../../shared/mocks/mock_context'; import { ResponseButton } from './response_button'; import type { SearchHit } from '../../../../../common/search_strategy'; import { TestProvider } from '@kbn/expandable-flyout/src/test/provider'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; + +jest.mock('../../../../common/hooks/use_experimental_features'); const mockValidSearchHit = { fields: { @@ -42,6 +45,7 @@ const renderResponseButton = (panelContextValue: DocumentDetailsContext = mockCo ); describe('', () => { it('should render response button correctly', () => { + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(false); const panelContextValue = { ...mockContextValue, searchHit: mockValidSearchHit }; const { getByTestId, queryByTestId } = renderResponseButton(panelContextValue); expect(getByTestId(RESPONSE_BUTTON_TEST_ID)).toBeInTheDocument(); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_button.tsx new file mode 100644 index 0000000000000..eb744a22158de --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_button.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { EuiButton } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { LeftPanelResponseTab } from '../../left'; +import { RESPONSE_BUTTON_TEST_ID } from './test_ids'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; + +/** + * Response button that opens Response section in the left panel + */ +export const ResponseButton: React.FC = () => { + const { navigateToLeftPanel: goToResponseTab } = useNavigateToLeftPanel({ + tab: LeftPanelResponseTab, + }); + + return ( + <> + + + + + ); +}; + +ResponseButton.displayName = 'ResponseButton'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_section.test.tsx similarity index 76% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_section.test.tsx index 5ae2e2741f5bf..d3201d37fa060 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_section.test.tsx @@ -18,8 +18,18 @@ import { mockContextValue } from '../../shared/mocks/mock_context'; import { ResponseSection } from './response_section'; import { TestProvider } from '@kbn/expandable-flyout/src/test/provider'; import { useExpandSection } from '../hooks/use_expand_section'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; +import { useKibana } from '../../../../common/lib/kibana'; jest.mock('../hooks/use_expand_section'); +jest.mock('../../../../common/lib/kibana'); +jest.mock('../../../../common/hooks/use_experimental_features'); + +const mockedUseKibana = mockUseKibana(); +(useKibana as jest.Mock).mockReturnValue(mockedUseKibana); + +const mockUseIsExperimentalFeatureEnabled = useIsExperimentalFeatureEnabled as jest.Mock; const PREVIEW_MESSAGE = 'Response is not available in alert preview.'; const OPEN_FLYOUT_MESSAGE = 'Open alert details to access response actions.'; @@ -36,6 +46,10 @@ const renderResponseSection = () => ); describe('', () => { + beforeEach(() => { + mockUseIsExperimentalFeatureEnabled.mockReturnValue(false); + }); + it('should render response component', () => { const { getByTestId } = renderResponseSection(); @@ -100,7 +114,7 @@ describe('', () => { expect(getByTestId(RESPONSE_SECTION_CONTENT_TEST_ID)).toHaveTextContent(PREVIEW_MESSAGE); }); - it('should render open details flyout message if flyout is in preview', () => { + it('should render open details flyout message if flyout is in preview mode', () => { (useExpandSection as jest.Mock).mockReturnValue(true); const { getByTestId } = render( @@ -140,4 +154,25 @@ describe('', () => { ); expect(container).toBeEmptyDOMElement(); }); + + describe('newExpandableFlyoutNavigationEnabled', () => { + beforeEach(() => { + mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + }); + + it('should render if isPreviewMode is true', () => { + const { getByTestId } = render( + + + + + + + + ); + expect(getByTestId(RESPONSE_SECTION_HEADER_TEST_ID)).toBeInTheDocument(); + expect(getByTestId(RESPONSE_SECTION_HEADER_TEST_ID)).toHaveTextContent('Response'); + expect(getByTestId(RESPONSE_SECTION_CONTENT_TEST_ID)).toBeInTheDocument(); + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_section.tsx similarity index 90% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_section.tsx index 168e5b05357b5..6e4a52f61559e 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/response_section.tsx @@ -16,6 +16,7 @@ import { useDocumentDetailsContext } from '../../shared/context'; import { getField } from '../../shared/utils'; import { EventKind } from '../../shared/constants/event_kinds'; import { RESPONSE_SECTION_TEST_ID } from './test_ids'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; const KEY = 'response'; @@ -28,6 +29,10 @@ export const ResponseSection = memo(() => { const expanded = useExpandSection({ title: KEY, defaultValue: false }); const eventKind = getField(getFieldsData('event.kind')); + const isNewNavigationEnabled = useIsExperimentalFeatureEnabled( + 'newExpandableFlyoutNavigationEnabled' + ); + const content = useMemo(() => { if (isPreview) { return ( @@ -53,7 +58,7 @@ export const ResponseSection = memo(() => { ); } - if (isPreviewMode) { + if (!isNewNavigationEnabled && isPreviewMode) { return ( { } return ; - }, [isPreview, isPreviewMode]); + }, [isPreview, isPreviewMode, isNewNavigationEnabled]); if (eventKind !== EventKind.signal) { return null; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/risk_score.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/risk_score.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/risk_score.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/risk_score.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/risk_score.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/risk_score.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/risk_score.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/risk_score.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.test.tsx new file mode 100644 index 0000000000000..73cf7202b50c1 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.test.tsx @@ -0,0 +1,349 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen } from '@testing-library/react'; +import { TestProviders } from '../../../../common/mock'; +import React from 'react'; +import { DocumentDetailsContext } from '../../shared/context'; +import { SessionPreviewContainer } from './session_preview_container'; +import { useSessionPreview } from '../hooks/use_session_preview'; +import { useLicense } from '../../../../common/hooks/use_license'; +import { SESSION_PREVIEW_TEST_ID } from './test_ids'; +import { + EXPANDABLE_PANEL_CONTENT_TEST_ID, + EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, + EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, + EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, + EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, +} from '../../../shared/components/test_ids'; +import { mockContextValue } from '../../shared/mocks/mock_context'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; + +jest.mock('../hooks/use_session_preview'); +jest.mock('../../../../common/hooks/use_license'); +jest.mock('../../../../common/hooks/use_experimental_features'); +jest.mock( + '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline' +); + +const mockNavigateToSessionView = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_session_view', () => { + return { useNavigateToSessionView: () => ({ navigateToSessionView: mockNavigateToSessionView }) }; +}); + +const mockUseUiSetting = jest.fn().mockReturnValue([false]); +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useUiSetting$: () => mockUseUiSetting(), + }; +}); + +jest.mock('react-redux', () => { + const original = jest.requireActual('react-redux'); + + return { + ...original, + useDispatch: () => jest.fn(), + }; +}); + +const NO_DATA_MESSAGE = + 'You can only view Linux session details if you’ve enabled the Include session data setting in your Elastic Defend integration policy. Refer to Enable Session View data(external, opens in a new tab or window) for more information.'; + +const UPSELL_TEXT = 'This feature requires an Enterprise subscription'; + +const sessionViewConfig = { + index: {}, + sessionEntityId: 'sessionEntityId', + sessionStartTime: 'sessionStartTime', +}; + +const renderSessionPreview = (context = mockContextValue) => + render( + + + + + + ); + +describe('SessionPreviewContainer', () => { + beforeEach(() => { + jest.clearAllMocks(); + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(false); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineAlertClick: jest.fn(), + }); + }); + + it('should render component and link in header', () => { + (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); + + const { getByTestId } = renderSessionPreview(); + + expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + + expect( + screen.queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + screen.getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + screen.queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + screen.queryByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toHaveTextContent(NO_DATA_MESSAGE); + expect( + screen.queryByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toHaveTextContent(UPSELL_TEXT); + }); + + it('should render error message and text in header if no sessionConfig', () => { + (useSessionPreview as jest.Mock).mockReturnValue(null); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); + + const { getByTestId, queryByTestId } = renderSessionPreview(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toHaveTextContent(NO_DATA_MESSAGE); + + expect( + screen.queryByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toHaveTextContent(UPSELL_TEXT); + expect(queryByTestId(SESSION_PREVIEW_TEST_ID)).not.toBeInTheDocument(); + }); + + it('should render upsell message in header if no correct license', () => { + (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => false }); + + const { getByTestId, queryByTestId } = renderSessionPreview(); + + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + screen.getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toHaveTextContent(UPSELL_TEXT); + + expect( + screen.queryByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toHaveTextContent(NO_DATA_MESSAGE); + expect(queryByTestId(SESSION_PREVIEW_TEST_ID)).not.toBeInTheDocument(); + }); + + it('should not render link to session viewer if flyout is open in preview', () => { + (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); + + const { getByTestId, queryByTestId } = renderSessionPreview({ + ...mockContextValue, + isPreview: true, + }); + + expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + }); + + it('should not render link to session viewer if flyout is open in preview mode', () => { + (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); + + const { getByTestId, queryByTestId } = renderSessionPreview({ + ...mockContextValue, + isPreviewMode: true, + }); + + expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + }); + + describe('when visualization in flyout flag is enabled', () => { + it('should open left panel vizualization tab when visualization in flyout flag is on', () => { + mockUseUiSetting.mockReturnValue([true]); + (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); + + const { getByTestId } = renderSessionPreview(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)).click(); + + expect(mockNavigateToSessionView).toHaveBeenCalled(); + }); + + it('should not render link to session viewer if flyout is open in rule preview', () => { + (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); + + const { getByTestId, queryByTestId } = renderSessionPreview({ + ...mockContextValue, + isPreview: true, + }); + + expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + }); + + it('should not render link to session viewer if flyout is open in preview mode', () => { + (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); + + const { getByTestId, queryByTestId } = renderSessionPreview({ + ...mockContextValue, + isPreview: true, + }); + + expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + }); + }); + + describe('when new navigation is enabled', () => { + describe('when visualization in flyout flag is enabled', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseUiSetting.mockReturnValue([true]); + (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(true); + }); + + it('should open left panel vizualization tab when visualization in flyout flag is on', () => { + const { getByTestId } = renderSessionPreview(); + + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)).click(); + + expect(mockNavigateToSessionView).toHaveBeenCalled(); + }); + + it('should not render link to session viewer if flyout is open in rule preview', () => { + const { getByTestId, queryByTestId } = renderSessionPreview({ + ...mockContextValue, + isPreview: true, + }); + + expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + }); + + it('should render link to session viewer if flyout is open in preview mode', () => { + const { getByTestId } = renderSessionPreview({ + ...mockContextValue, + isPreviewMode: true, + }); + + expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)).click(); + expect(mockNavigateToSessionView).toHaveBeenCalled(); + }); + }); + + describe('when visualization in flyout flag is not enabled', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseUiSetting.mockReturnValue([false]); + (useSessionPreview as jest.Mock).mockReturnValue(sessionViewConfig); + (useLicense as jest.Mock).mockReturnValue({ isEnterprise: () => true }); + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(true); + }); + + it('should open session viewer in timeline', () => { + const { getByTestId } = renderSessionPreview(); + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)).click(); + + expect(investigateInTimelineAlertClick).toHaveBeenCalled(); + }); + + it('should not render link to session viewer if flyout is open in rule preview', () => { + const { getByTestId, queryByTestId } = renderSessionPreview({ + ...mockContextValue, + isPreview: true, + }); + + expect(getByTestId(SESSION_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + }); + + it('should render link to open session viewer in timeline if flyout is open in preview mode', () => { + const { getByTestId } = renderSessionPreview({ + ...mockContextValue, + isPreviewMode: true, + }); + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({}); + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(SESSION_PREVIEW_TEST_ID)).click(); + expect(investigateInTimelineAlertClick).toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx new file mode 100644 index 0000000000000..2b9ffc32b871e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx @@ -0,0 +1,145 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { type FC, useCallback, useMemo } from 'react'; +import { TimelineTabs } from '@kbn/securitysolution-data-table'; +import { useDispatch } from 'react-redux'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; +import { ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING } from '../../../../../common/constants'; +import { useLicense } from '../../../../common/hooks/use_license'; +import { SessionPreview } from './session_preview'; +import { useSessionPreview } from '../hooks/use_session_preview'; +import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; +import { useDocumentDetailsContext } from '../../shared/context'; +import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; +import { SESSION_PREVIEW_TEST_ID } from './test_ids'; +import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; +import { setActiveTabTimeline } from '../../../../timelines/store/actions'; +import { getScopedActions } from '../../../../helpers'; +import { useNavigateToSessionView } from '../../shared/hooks/use_navigate_to_session_view'; +import { SessionViewNoDataMessage } from '../../shared/components/session_view_no_data_message'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; + +const timelineId = 'timeline-1'; + +/** + * Checks if the SessionView component is available, if so render it or else render an error message + */ +export const SessionPreviewContainer: FC = () => { + const { + eventId, + indexName, + scopeId, + dataAsNestedObject, + getFieldsData, + isPreview, + isPreviewMode, + dataFormattedForFieldBrowser, + } = useDocumentDetailsContext(); + + const [visualizationInFlyoutEnabled] = useUiSetting$( + ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING + ); + + // decide whether to show the session view or not + const sessionViewConfig = useSessionPreview({ getFieldsData, dataFormattedForFieldBrowser }); + const isEnterprisePlus = useLicense().isEnterprise(); + const isEnabled = sessionViewConfig && isEnterprisePlus; + + const isNewNavigationEnabled = useIsExperimentalFeatureEnabled( + 'newExpandableFlyoutNavigationEnabled' + ); + + const dispatch = useDispatch(); + const { startTransaction } = useStartTransaction(); + const scopedActions = getScopedActions(timelineId); + const { investigateInTimelineAlertClick } = useInvestigateInTimeline({ + ecsRowData: dataAsNestedObject, + }); + + const goToSessionViewTab = useCallback(async () => { + // open timeline + await investigateInTimelineAlertClick(); + + // open session view tab + startTransaction({ name: ALERTS_ACTIONS.OPEN_SESSION_VIEW }); + if (sessionViewConfig !== null) { + dispatch(setActiveTabTimeline({ id: timelineId, activeTab: TimelineTabs.session })); + if (scopedActions) { + dispatch(scopedActions.updateSessionViewConfig({ id: timelineId, sessionViewConfig })); + } + } + }, [ + dispatch, + investigateInTimelineAlertClick, + scopedActions, + sessionViewConfig, + startTransaction, + ]); + + const { navigateToSessionView } = useNavigateToSessionView({ + eventId, + indexName, + isFlyoutOpen: true, + scopeId, + }); + + const iconType = useMemo(() => { + const icon = visualizationInFlyoutEnabled ? 'arrowStart' : 'timeline'; + return !isPreviewMode ? icon : undefined; + }, [visualizationInFlyoutEnabled, isPreviewMode]); + + const isNavigationEnabled = useMemo(() => { + // if the session view is not enabled or in rule preview mode, the navigation is not enabled + if (!isEnabled || isPreview) { + return false; + } + // if the new navigation is enabled, the navigation is enabled (flyout or timeline) + if (isNewNavigationEnabled) { + return true; + } + // if the new navigation is not enabled, the navigation is enabled if the flyout is not in preview mode + return !isPreviewMode; + }, [isNewNavigationEnabled, isPreviewMode, isEnabled, isPreview]); + + return ( + + ), + iconType, + ...(isNavigationEnabled && { + link: { + callback: visualizationInFlyoutEnabled ? navigateToSessionView : goToSessionViewTab, + tooltip: ( + + ), + }, + }), + }} + data-test-subj={SESSION_PREVIEW_TEST_ID} + > + {isEnabled ? ( + + ) : ( + + )} + + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/severity.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/severity.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/severity.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/severity.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/status.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/status.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/status.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/status_popover_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/status_popover_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/status_popover_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/status_popover_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/status_popover_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/status_popover_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/status_popover_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/status_popover_button.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.test.tsx new file mode 100644 index 0000000000000..17b351690ba0f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.test.tsx @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; +import { render } from '@testing-library/react'; +import { + SUMMARY_ROW_TEXT_TEST_ID, + CORRELATIONS_SUPPRESSED_ALERTS_TEST_ID, + CORRELATIONS_SUPPRESSED_ALERTS_TECHNICAL_PREVIEW_TEST_ID, + SUMMARY_ROW_BUTTON_TEST_ID, +} from './test_ids'; +import { SuppressedAlerts } from './suppressed_alerts'; +import { isSuppressionRuleInGA } from '../../../../../common/detection_engine/utils'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; + +jest.mock('../../shared/context'); +jest.mock('../../../../../common/detection_engine/utils', () => ({ + isSuppressionRuleInGA: jest.fn().mockReturnValue(false), +})); + +const mockNavigateToLeftPanel = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + +const TEXT_TEST_ID = SUMMARY_ROW_TEXT_TEST_ID(CORRELATIONS_SUPPRESSED_ALERTS_TEST_ID); +const BUTTON_TEST_ID = SUMMARY_ROW_BUTTON_TEST_ID(CORRELATIONS_SUPPRESSED_ALERTS_TEST_ID); + +const renderSuppressedAlerts = (alertSuppressionCount: number) => + render( + + + + ); + +const isSuppressionRuleInGAMock = isSuppressionRuleInGA as jest.Mock; + +describe('', () => { + beforeEach(() => { + jest.clearAllMocks(); + + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); + }); + + it('should render single suppressed alert correctly', () => { + const { getByTestId } = renderSuppressedAlerts(1); + + expect(getByTestId(TEXT_TEST_ID)).toHaveTextContent('Suppressed alert'); + expect(getByTestId(BUTTON_TEST_ID)).toHaveTextContent('1'); + expect( + getByTestId(CORRELATIONS_SUPPRESSED_ALERTS_TECHNICAL_PREVIEW_TEST_ID) + ).toBeInTheDocument(); + }); + + it('should render multiple suppressed alerts row correctly', () => { + const { getByTestId } = renderSuppressedAlerts(2); + + expect(getByTestId(TEXT_TEST_ID)).toHaveTextContent('Suppressed alerts'); + expect(getByTestId(BUTTON_TEST_ID)).toHaveTextContent('2'); + }); + + it('should not render Technical Preview badge if rule type is in GA', () => { + isSuppressionRuleInGAMock.mockReturnValueOnce(true); + const { queryByTestId } = renderSuppressedAlerts(2); + + expect( + queryByTestId(CORRELATIONS_SUPPRESSED_ALERTS_TECHNICAL_PREVIEW_TEST_ID) + ).not.toBeInTheDocument(); + }); + + it('should open the expanded section to the correct tab when the number is clicked', () => { + const { getByTestId } = renderSuppressedAlerts(1); + getByTestId(BUTTON_TEST_ID).click(); + + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/table_field_name_cell.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/table_field_name_cell.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/table_field_name_cell.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/table_field_name_cell.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/table_field_name_cell.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/table_field_name_cell.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/table_field_name_cell.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/table_field_name_cell.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/table_field_value_cell.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/table_field_value_cell.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/table_field_value_cell.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/table_field_value_cell.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/table_field_value_cell.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/table_field_value_cell.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/table_field_value_cell.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/table_field_value_cell.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.test.tsx similarity index 79% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.test.tsx index 1d19dacc39d42..1a48713701761 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.test.tsx @@ -8,13 +8,9 @@ import React from 'react'; import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; import { render } from '@testing-library/react'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; import { useDocumentDetailsContext } from '../../shared/context'; import { ThreatIntelligenceOverview } from './threat_intelligence_overview'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; -import { LeftPanelInsightsTab } from '../../left'; import { useFetchThreatIntelligence } from '../hooks/use_fetch_threat_intelligence'; -import { THREAT_INTELLIGENCE_TAB_ID } from '../../left/components/threat_intelligence_details'; import { INSIGHTS_THREAT_INTELLIGENCE_ENRICHED_WITH_THREAT_INTELLIGENCE_TEST_ID, INSIGHTS_THREAT_INTELLIGENCE_TEST_ID, @@ -29,11 +25,14 @@ import { EXPANDABLE_PANEL_LOADING_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, } from '../../../shared/components/test_ids'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; -jest.mock('@kbn/expandable-flyout'); jest.mock('../../shared/context'); jest.mock('../hooks/use_fetch_threat_intelligence'); +const mockNavigateToLeftPanel = jest.fn(); +jest.mock('../../shared/hooks/use_navigate_to_left_panel'); + const TOGGLE_ICON_TEST_ID = EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID( INSIGHTS_THREAT_INTELLIGENCE_TEST_ID ); @@ -60,10 +59,6 @@ const ENRICHED_WITH_THREAT_INTELLIGENCE_BUTTON_TEST_ID = SUMMARY_ROW_BUTTON_TEST INSIGHTS_THREAT_INTELLIGENCE_ENRICHED_WITH_THREAT_INTELLIGENCE_TEST_ID ); -const mockOpenLeftPanel = jest.fn(); -const eventId = 'eventId'; -const indexName = 'indexName'; -const scopeId = 'scopeId'; const dataFormattedForFieldBrowser = ['scopeId']; const renderThreatIntelligenceOverview = () => @@ -76,22 +71,20 @@ const renderThreatIntelligenceOverview = () => describe('', () => { beforeEach(() => { jest.clearAllMocks(); - (useDocumentDetailsContext as jest.Mock).mockReturnValue({ - eventId, - indexName, - scopeId, dataFormattedForFieldBrowser, isPreviewMode: false, }); - (useExpandableFlyoutApi as jest.Mock).mockReturnValue({ openLeftPanel: mockOpenLeftPanel }); - }); - - it('should render wrapper component', () => { (useFetchThreatIntelligence as jest.Mock).mockReturnValue({ loading: false, }); + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); + }); + it('should render wrapper component', () => { const { getByTestId, queryByTestId } = renderThreatIntelligenceOverview(); expect(queryByTestId(TOGGLE_ICON_TEST_ID)).not.toBeInTheDocument(); @@ -100,22 +93,28 @@ describe('', () => { expect(queryByTestId(TITLE_TEXT_TEST_ID)).not.toBeInTheDocument(); }); - it('should not render link if isPreviewMode is true', () => { + it('should render link without icon if in preview mode', () => { (useDocumentDetailsContext as jest.Mock).mockReturnValue({ - eventId, - indexName, - scopeId, dataFormattedForFieldBrowser, isPreviewMode: true, }); - (useFetchThreatIntelligence as jest.Mock).mockReturnValue({ - loading: false, + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: true, + }); + const { getByTestId, queryByTestId } = renderThreatIntelligenceOverview(); + expect(queryByTestId(TITLE_ICON_TEST_ID)).not.toBeInTheDocument(); + expect(getByTestId(TITLE_LINK_TEST_ID)).toBeInTheDocument(); + }); + + it('should not render link if navigation is not enabled', () => { + (useNavigateToLeftPanel as jest.Mock).mockReturnValue({ + navigateToLeftPanel: mockNavigateToLeftPanel, + isEnabled: false, }); const { getByTestId, queryByTestId } = renderThreatIntelligenceOverview(); - expect(queryByTestId(TOGGLE_ICON_TEST_ID)).not.toBeInTheDocument(); - expect(queryByTestId(TITLE_ICON_TEST_ID)).not.toBeInTheDocument(); expect(queryByTestId(TITLE_LINK_TEST_ID)).not.toBeInTheDocument(); expect(getByTestId(TITLE_TEXT_TEST_ID)).toBeInTheDocument(); }); @@ -175,18 +174,7 @@ describe('', () => { const { getByTestId } = renderThreatIntelligenceOverview(); getByTestId(TITLE_LINK_TEST_ID).click(); - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: THREAT_INTELLIGENCE_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); it('should open the expanded section to the correct tab when the number is clicked', () => { @@ -199,32 +187,10 @@ describe('', () => { const { getByTestId } = renderThreatIntelligenceOverview(); getByTestId(THREAT_MATCHES_BUTTON_TEST_ID).click(); - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: THREAT_INTELLIGENCE_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); getByTestId(ENRICHED_WITH_THREAT_INTELLIGENCE_BUTTON_TEST_ID).click(); - expect(mockOpenLeftPanel).toHaveBeenCalledWith({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: THREAT_INTELLIGENCE_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); + expect(mockNavigateToLeftPanel).toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.tsx similarity index 82% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.tsx index 73dfc62520c32..0399ddbd5466c 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.tsx @@ -6,9 +6,8 @@ */ import type { FC } from 'react'; -import React, { useCallback, useMemo } from 'react'; +import React, { useMemo } from 'react'; import { EuiFlexGroup } from '@elastic/eui'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; import { ExpandablePanel } from '../../../shared/components/expandable_panel'; import { useFetchThreatIntelligence } from '../hooks/use_fetch_threat_intelligence'; @@ -19,9 +18,9 @@ import { INSIGHTS_THREAT_INTELLIGENCE_TEST_ID, INSIGHTS_THREAT_INTELLIGENCE_THREAT_MATCHES_TEST_ID, } from './test_ids'; -import { DocumentDetailsLeftPanelKey } from '../../shared/constants/panel_keys'; import { LeftPanelInsightsTab } from '../../left'; import { THREAT_INTELLIGENCE_TAB_ID } from '../../left/components/threat_intelligence_details'; +import { useNavigateToLeftPanel } from '../../shared/hooks/use_navigate_to_left_panel'; const TITLE = ( { - const { eventId, indexName, scopeId, dataFormattedForFieldBrowser, isPreviewMode } = - useDocumentDetailsContext(); - const { openLeftPanel } = useExpandableFlyoutApi(); + const { dataFormattedForFieldBrowser, isPreviewMode } = useDocumentDetailsContext(); - const goToThreatIntelligenceTab = useCallback(() => { - openLeftPanel({ - id: DocumentDetailsLeftPanelKey, - path: { - tab: LeftPanelInsightsTab, - subTab: THREAT_INTELLIGENCE_TAB_ID, - }, - params: { - id: eventId, - indexName, - scopeId, - }, + const { navigateToLeftPanel: goToThreatIntelligenceTab, isEnabled: isLinkEnabled } = + useNavigateToLeftPanel({ + tab: LeftPanelInsightsTab, + subTab: THREAT_INTELLIGENCE_TAB_ID, }); - }, [eventId, openLeftPanel, indexName, scopeId]); const { loading, threatMatchesCount, threatEnrichmentsCount } = useFetchThreatIntelligence({ dataFormattedForFieldBrowser, @@ -67,13 +55,13 @@ export const ThreatIntelligenceOverview: FC = () => { const link = useMemo( () => - !isPreviewMode + isLinkEnabled ? { callback: goToThreatIntelligenceTab, tooltip: TOOLTIP, } : undefined, - [isPreviewMode, goToThreatIntelligenceTab] + [goToThreatIntelligenceTab, isLinkEnabled] ); const threatMatchCountText = useMemo( diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx similarity index 82% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx index 3aeb7d30f8e48..6fb4d5d30b897 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx @@ -8,6 +8,7 @@ import React from 'react'; import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; import { render } from '@testing-library/react'; +import { useFetchGraphData } from '@kbn/cloud-security-posture-graph/src/hooks'; import { ANALYZER_PREVIEW_TEST_ID, SESSION_PREVIEW_TEST_ID, @@ -25,9 +26,8 @@ import { TestProvider } from '@kbn/expandable-flyout/src/test/provider'; import { useExpandSection } from '../hooks/use_expand_section'; import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; import { useIsInvestigateInResolverActionEnabled } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; -import { useGraphPreview } from '../hooks/use_graph_preview'; -import { useFetchGraphData } from '../hooks/use_fetch_graph_data'; jest.mock('../hooks/use_expand_section'); jest.mock('../../shared/hooks/use_alert_prevalence_from_process_tree', () => ({ @@ -53,6 +53,7 @@ jest.mock( jest.mock( '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver' ); + jest.mock('../../../../common/hooks/use_experimental_features', () => ({ useIsExperimentalFeatureEnabled: jest.fn(), })); @@ -67,11 +68,11 @@ jest.mock('@kbn/kibana-react-plugin/public', () => { useUiSetting$: () => mockUseUiSetting(), }; }); -jest.mock('../hooks/use_graph_preview'); +jest.mock('../../shared/hooks/use_graph_preview'); const mockUseGraphPreview = useGraphPreview as jest.Mock; -jest.mock('../hooks/use_fetch_graph_data', () => ({ +jest.mock('@kbn/cloud-security-posture-graph/src/hooks', () => ({ useFetchGraphData: jest.fn(), })); @@ -95,6 +96,7 @@ const renderVisualizationsSection = (contextValue = panelContextValue) => describe('', () => { beforeEach(() => { + mockUseUiSetting.mockReturnValue([false]); mockUseTimelineDataFilters.mockReturnValue({ selectedPatterns: ['index'] }); mockUseAlertPrevalenceFromProcessTree.mockReturnValue({ loading: false, @@ -103,7 +105,7 @@ describe('', () => { statsNodes: undefined, }); mockUseGraphPreview.mockReturnValue({ - isAuditLog: true, + hasGraphRepresentation: true, }); mockUseFetchGraphData.mockReturnValue({ isLoading: false, @@ -136,6 +138,7 @@ describe('', () => { }); (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); (useExpandSection as jest.Mock).mockReturnValue(true); + mockUseUiSetting.mockReturnValue([false]); useIsExperimentalFeatureEnabledMock.mockReturnValue(false); const { getByTestId, queryByTestId } = renderVisualizationsSection(); @@ -148,10 +151,31 @@ describe('', () => { it('should render the graph preview component if the feature is enabled', () => { (useExpandSection as jest.Mock).mockReturnValue(true); + mockUseUiSetting.mockReturnValue([true]); useIsExperimentalFeatureEnabledMock.mockReturnValue(true); const { getByTestId } = renderVisualizationsSection(); expect(getByTestId(`${GRAPH_PREVIEW_TEST_ID}LeftSection`)).toBeInTheDocument(); }); + + it('should not render the graph preview component if the experimental feature is disabled', () => { + (useExpandSection as jest.Mock).mockReturnValue(true); + mockUseUiSetting.mockReturnValue([true]); + useIsExperimentalFeatureEnabledMock.mockReturnValue(false); + + const { queryByTestId } = renderVisualizationsSection(); + + expect(queryByTestId(`${GRAPH_PREVIEW_TEST_ID}LeftSection`)).not.toBeInTheDocument(); + }); + + it('should not render the graph preview component if the flyout feature is disabled', () => { + (useExpandSection as jest.Mock).mockReturnValue(true); + mockUseUiSetting.mockReturnValue([false]); + useIsExperimentalFeatureEnabledMock.mockReturnValue(true); + + const { queryByTestId } = renderVisualizationsSection(); + + expect(queryByTestId(`${GRAPH_PREVIEW_TEST_ID}LeftSection`)).not.toBeInTheDocument(); + }); }); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx new file mode 100644 index 0000000000000..23bea1f8fecdd --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo } from 'react'; +import { EuiSpacer } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; +import { useExpandSection } from '../hooks/use_expand_section'; +import { AnalyzerPreviewContainer } from './analyzer_preview_container'; +import { SessionPreviewContainer } from './session_preview_container'; +import { ExpandableSection } from './expandable_section'; +import { VISUALIZATIONS_TEST_ID } from './test_ids'; +import { GraphPreviewContainer } from './graph_preview_container'; +import { useDocumentDetailsContext } from '../../shared/context'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING } from '../../../../../common/constants'; +import { GRAPH_VISUALIZATION_IN_FLYOUT_ENABLED_EXPERIMENTAL_FEATURE } from '../../shared/constants/experimental_features'; + +const KEY = 'visualizations'; + +/** + * Visualizations section in overview. It contains analyzer preview and session view preview. + */ +export const VisualizationsSection = memo(() => { + const expanded = useExpandSection({ title: KEY, defaultValue: false }); + const { dataAsNestedObject, getFieldsData } = useDocumentDetailsContext(); + + const [visualizationInFlyoutEnabled] = useUiSetting$( + ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING + ); + + const isGraphFeatureEnabled = useIsExperimentalFeatureEnabled( + GRAPH_VISUALIZATION_IN_FLYOUT_ENABLED_EXPERIMENTAL_FEATURE + ); + + // Decide whether to show the graph preview or not + const { hasGraphRepresentation } = useGraphPreview({ + getFieldsData, + ecsData: dataAsNestedObject, + }); + + const shouldShowGraphPreview = + visualizationInFlyoutEnabled && isGraphFeatureEnabled && hasGraphRepresentation; + + return ( + + } + localStorageKey={KEY} + data-test-subj={VISUALIZATIONS_TEST_ID} + > + + + + {shouldShowGraphPreview && ( + <> + + + + )} + + ); +}); + +VisualizationsSection.displayName = 'VisualizationsSection'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/content.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/content.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/footer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/footer.test.tsx new file mode 100644 index 0000000000000..026abf135e3ee --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/footer.test.tsx @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { render } from '@testing-library/react'; +import { PanelFooter } from './footer'; +import { TestProviders } from '../../../common/mock'; +import { mockContextValue } from '../shared/mocks/mock_context'; +import { DocumentDetailsContext } from '../shared/context'; +import { FLYOUT_FOOTER_TEST_ID } from './test_ids'; +import { FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID } from '../shared/components/test_ids'; +import { useKibana } from '../../../common/lib/kibana'; +import { useAlertExceptionActions } from '../../../detections/components/alerts_table/timeline_actions/use_add_exception_actions'; +import { useInvestigateInTimeline } from '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; +import { useAddToCaseActions } from '../../../detections/components/alerts_table/timeline_actions/use_add_to_case_actions'; + +jest.mock('../../../common/lib/kibana'); +jest.mock('react-router-dom', () => { + const original = jest.requireActual('react-router-dom'); + return { + ...original, + useLocation: jest.fn().mockReturnValue({ search: '' }), + }; +}); +jest.mock('../../../detections/components/alerts_table/timeline_actions/use_add_exception_actions'); +jest.mock( + '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline' +); +jest.mock('../../../detections/components/alerts_table/timeline_actions/use_add_to_case_actions'); + +describe('PanelFooter', () => { + it('should not render the take action dropdown if preview mode', () => { + const { queryByTestId } = render( + + + + + + ); + + expect(queryByTestId(FLYOUT_FOOTER_TEST_ID)).not.toBeInTheDocument(); + }); + + it('should render the take action dropdown', () => { + (useKibana as jest.Mock).mockReturnValue({ + services: { + osquery: { isOsqueryAvailable: jest.fn() }, + cases: { hooks: { useIsAddToCaseOpen: jest.fn().mockReturnValue(false) } }, + }, + }); + (useAlertExceptionActions as jest.Mock).mockReturnValue({ exceptionActionItems: [] }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineActionItems: [{ name: 'test', onClick: jest.fn() }], + }); + (useAddToCaseActions as jest.Mock).mockReturnValue({ addToCaseActionItems: [] }); + + const wrapper = render( + + + + + + ); + expect(wrapper.getByTestId(FLYOUT_FOOTER_TEST_ID)).toBeInTheDocument(); + expect(wrapper.getByTestId(FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID)).toBeInTheDocument(); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/footer.tsx new file mode 100644 index 0000000000000..ce955a0b87ddc --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/footer.tsx @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FC } from 'react'; +import React from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiFlyoutFooter, EuiPanel } from '@elastic/eui'; +import { FLYOUT_FOOTER_TEST_ID } from './test_ids'; +import { TakeActionButton } from '../shared/components/take_action_button'; + +interface PanelFooterProps { + /** + * Boolean that indicates whether flyout is in preview and action should be hidden + */ + isPreview: boolean; +} + +/** + * Bottom section of the flyout that contains the take action button + */ +export const PanelFooter: FC = ({ isPreview }) => { + if (isPreview) return null; + + return ( + + + + + + + + + + ); +}; + +PanelFooter.displayName = 'PanelFooter'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/header.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/header.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/header.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_expand_section.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_expand_section.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_expand_section.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_expand_section.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_expand_section.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_expand_section.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_expand_section.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_expand_section.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.ts similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.ts index 7f9f26cb89da1..323540ce33d37 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.ts @@ -58,7 +58,7 @@ export const useFetchThreatIntelligence = ({ const { isAlert } = useBasicDataFromDetailsData(dataFormattedForFieldBrowser); // retrieve the threat enrichment fields with value for the current document - // (see https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/cti/constants.ts#L35) + // (see https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/cti/constants.ts#L35) const eventFields = useMemo( () => getEnrichmentFields(dataFormattedForFieldBrowser || []), [dataFormattedForFieldBrowser] diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_flyout_is_expandable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_flyout_is_expandable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_flyout_is_expandable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_flyout_is_expandable.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_flyout_is_expandable.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_flyout_is_expandable.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_flyout_is_expandable.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_flyout_is_expandable.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_get_flyout_link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_get_flyout_link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_get_flyout_link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_get_flyout_link.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_get_flyout_link.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_get_flyout_link.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_get_flyout_link.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_get_flyout_link.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_refetch_by_scope.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_refetch_by_scope.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_refetch_by_scope.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_refetch_by_scope.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_tabs.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_tabs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_tabs.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/hooks/use_tabs.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/mocks/mock_analyzer_data.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/mocks/mock_analyzer_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/mocks/mock_analyzer_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/mocks/mock_analyzer_data.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/navigation.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/navigation.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/navigation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/navigation.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/overview_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/overview_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/overview_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/overview_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/tabs/test_ids.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/test_ids.ts new file mode 100644 index 0000000000000..ebfb197b319a3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/test_ids.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PREFIX } from '../../shared/test_ids'; + +export const FLYOUT_BODY_TEST_ID = `${PREFIX}Body` as const; +export const FLYOUT_FOOTER_TEST_ID = `${PREFIX}Footer` as const; +export const OVERVIEW_TAB_TEST_ID = `${PREFIX}OverviewTab` as const; +export const TABLE_TAB_TEST_ID = `${PREFIX}TableTab` as const; +export const JSON_TAB_TEST_ID = `${PREFIX}JsonTab` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/utils/enriched_field_info.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/enriched_field_info.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/utils/enriched_field_info.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/enriched_field_info.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/utils/event_utils.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/event_utils.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/utils/event_utils.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/event_utils.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/utils/event_utils.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/event_utils.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/utils/event_utils.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/event_utils.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/utils/get_field_format.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/get_field_format.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/utils/get_field_format.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/right/utils/get_field_format.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/alert_count_insight.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/alert_count_insight.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/alert_count_insight.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/alert_count_insight.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/alert_count_insight.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/alert_count_insight.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/alert_count_insight.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/alert_count_insight.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/cell_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/cell_actions.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/insight_distribution_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/insight_distribution_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/insight_distribution_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/insight_distribution_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/insight_distribution_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/insight_distribution_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/insight_distribution_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/insight_distribution_bar.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/misconfiguration_insight.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/misconfiguration_insight.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/misconfiguration_insight.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/misconfiguration_insight.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/misconfiguration_insight.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/misconfiguration_insight.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/misconfiguration_insight.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/misconfiguration_insight.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/session_view_no_data_message.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/session_view_no_data_message.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/session_view_no_data_message.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/session_view_no_data_message.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/session_view_no_data_message.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/session_view_no_data_message.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/components/session_view_no_data_message.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/session_view_no_data_message.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_button.test.tsx new file mode 100644 index 0000000000000..4326a60c4a0cf --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_button.test.tsx @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { render } from '@testing-library/react'; +import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; +import { TakeActionButton } from './take_action_button'; +import { TestProviders } from '../../../../common/mock'; +import { mockContextValue } from '../mocks/mock_context'; +import { DocumentDetailsContext } from '../context'; +import { FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID } from './test_ids'; +import { useKibana } from '../../../../common/lib/kibana'; +import { useAlertExceptionActions } from '../../../../detections/components/alerts_table/timeline_actions/use_add_exception_actions'; +import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; +import { useAddToCaseActions } from '../../../../detections/components/alerts_table/timeline_actions/use_add_to_case_actions'; + +jest.mock('../../../../common/lib/kibana'); +jest.mock('react-router-dom', () => { + const original = jest.requireActual('react-router-dom'); + return { + ...original, + useLocation: jest.fn().mockReturnValue({ search: '' }), + }; +}); +jest.mock( + '../../../../detections/components/alerts_table/timeline_actions/use_add_exception_actions' +); +jest.mock( + '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline' +); +jest.mock( + '../../../../detections/components/alerts_table/timeline_actions/use_add_to_case_actions' +); + +describe('TakeActionButton', () => { + it('should render the take action button', () => { + (useKibana as jest.Mock).mockReturnValue({ + services: { + osquery: { isOsqueryAvailable: jest.fn() }, + cases: { hooks: { useIsAddToCaseOpen: jest.fn().mockReturnValue(false) } }, + }, + }); + (useAlertExceptionActions as jest.Mock).mockReturnValue({ exceptionActionItems: [] }); + (useInvestigateInTimeline as jest.Mock).mockReturnValue({ + investigateInTimelineActionItems: [{ name: 'test', onClick: jest.fn() }], + }); + (useAddToCaseActions as jest.Mock).mockReturnValue({ addToCaseActionItems: [] }); + + const { getByTestId } = render( + + + + + + ); + expect(getByTestId(FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID)).toBeInTheDocument(); + }); + + it('should not render the take action button if dataAsNestedObject is null', () => { + const { queryByTestId } = render( + + + + + + ); + expect(queryByTestId(FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID)).not.toBeInTheDocument(); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_button.tsx new file mode 100644 index 0000000000000..10595f732fcda --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_button.tsx @@ -0,0 +1,220 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FC } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { useEuiTheme } from '@elastic/eui'; +import { find } from 'lodash/fp'; +import type { Status } from '../../../../../common/api/detection_engine'; +import { getAlertDetailsFieldValue } from '../../../../common/lib/endpoint/utils/get_event_details_field_values'; +import { TakeActionDropdown } from './take_action_dropdown'; +import { AddExceptionFlyoutWrapper } from '../../../../detections/components/alerts_table/timeline_actions/alert_context_menu'; +import { EventFiltersFlyout } from '../../../../management/pages/event_filters/view/components/event_filters_flyout'; +import { OsqueryFlyout } from '../../../../detections/components/osquery/osquery_flyout'; +import { useDocumentDetailsContext } from '../context'; +import { useHostIsolation } from '../hooks/use_host_isolation'; +import { DocumentDetailsIsolateHostPanelKey } from '../constants/panel_keys'; +import { useRefetchByScope } from '../../right/hooks/use_refetch_by_scope'; +import { useExceptionFlyout } from '../../../../detections/components/alerts_table/timeline_actions/use_add_exception_flyout'; +import { isActiveTimeline } from '../../../../helpers'; +import { useEventFilterModal } from '../../../../detections/components/alerts_table/timeline_actions/use_event_filter_modal'; + +interface AlertSummaryData { + /** + * Status of the alert (open, closed...) + */ + alertStatus: Status; + /** + * Id of the document + */ + eventId: string; + /** + * Id of the rule + */ + ruleId: string; + /** + * Property ruleId on the rule + */ + ruleRuleId: string; + /** + * Name of the rule + */ + ruleName: string; +} + +/** + * Take action button in the panel footer + */ +export const TakeActionButton: FC = () => { + const { euiTheme } = useEuiTheme(); + // we need this flyout to be above the timeline flyout (which has a z-index of 1002) + const flyoutZIndex = useMemo( + () => ({ style: `z-index: ${(euiTheme.levels.flyout as number) + 3}` }), + [euiTheme] + ); + + const { closeFlyout, openRightPanel } = useExpandableFlyoutApi(); + const { + eventId, + indexName, + dataFormattedForFieldBrowser, + dataAsNestedObject, + refetchFlyoutData, + scopeId, + } = useDocumentDetailsContext(); + + // host isolation interaction + const { isHostIsolationPanelOpen, showHostIsolationPanel } = useHostIsolation(); + const showHostIsolationPanelCallback = useCallback( + (action: 'isolateHost' | 'unisolateHost' | undefined) => { + showHostIsolationPanel(action); + openRightPanel({ + id: DocumentDetailsIsolateHostPanelKey, + params: { + id: eventId, + indexName, + scopeId, + isolateAction: action, + }, + }); + }, + [eventId, indexName, openRightPanel, scopeId, showHostIsolationPanel] + ); + + const { refetch: refetchAll } = useRefetchByScope({ scopeId }); + + // exception interaction + const ruleIndexRaw = useMemo( + () => + find({ category: 'signal', field: 'signal.rule.index' }, dataFormattedForFieldBrowser) + ?.values ?? + find( + { category: 'kibana', field: 'kibana.alert.rule.parameters.index' }, + dataFormattedForFieldBrowser + )?.values, + [dataFormattedForFieldBrowser] + ); + const ruleIndex = useMemo( + (): string[] | undefined => (Array.isArray(ruleIndexRaw) ? ruleIndexRaw : undefined), + [ruleIndexRaw] + ); + const ruleDataViewIdRaw = useMemo( + () => + find({ category: 'signal', field: 'signal.rule.data_view_id' }, dataFormattedForFieldBrowser) + ?.values ?? + find( + { category: 'kibana', field: 'kibana.alert.rule.parameters.data_view_id' }, + dataFormattedForFieldBrowser + )?.values, + [dataFormattedForFieldBrowser] + ); + const ruleDataViewId = useMemo( + (): string | undefined => (Array.isArray(ruleDataViewIdRaw) ? ruleDataViewIdRaw[0] : undefined), + [ruleDataViewIdRaw] + ); + const alertSummaryData = useMemo( + () => + [ + { category: 'signal', field: 'signal.rule.id', name: 'ruleId' }, + { category: 'signal', field: 'signal.rule.rule_id', name: 'ruleRuleId' }, + { category: 'signal', field: 'signal.rule.name', name: 'ruleName' }, + { category: 'signal', field: 'kibana.alert.workflow_status', name: 'alertStatus' }, + { category: '_id', field: '_id', name: 'eventId' }, + ].reduce( + (acc, curr) => ({ + ...acc, + [curr.name]: getAlertDetailsFieldValue( + { category: curr.category, field: curr.field }, + dataFormattedForFieldBrowser + ), + }), + {} as AlertSummaryData + ), + [dataFormattedForFieldBrowser] + ); + const { + exceptionFlyoutType, + openAddExceptionFlyout, + onAddExceptionTypeClick, + onAddExceptionCancel, + onAddExceptionConfirm, + } = useExceptionFlyout({ + refetch: refetchAll, + isActiveTimelines: isActiveTimeline(scopeId), + }); + + // event filter interaction + const { closeAddEventFilterModal, isAddEventFilterModalOpen, onAddEventFilterClick } = + useEventFilterModal(); + + // osquery interaction + const [isOsqueryFlyoutOpenWithAgentId, setOsqueryFlyoutOpenWithAgentId] = useState( + null + ); + const closeOsqueryFlyout = useCallback(() => { + setOsqueryFlyoutOpenWithAgentId(null); + }, [setOsqueryFlyoutOpenWithAgentId]); + const alertId = useMemo( + () => (dataAsNestedObject?.kibana?.alert ? dataAsNestedObject?._id : null), + [dataAsNestedObject?._id, dataAsNestedObject?.kibana?.alert] + ); + + return ( + <> + {dataAsNestedObject && ( + + )} + + {openAddExceptionFlyout && + alertSummaryData.ruleId != null && + alertSummaryData.ruleRuleId != null && + alertSummaryData.eventId != null && ( + + )} + + {isAddEventFilterModalOpen && dataAsNestedObject != null && ( + + )} + + {isOsqueryFlyoutOpenWithAgentId && dataAsNestedObject != null && ( + + )} + + ); +}; + +TakeActionButton.displayName = 'TakeActionButton'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/take_action_dropdown.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_dropdown.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/take_action_dropdown.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_dropdown.test.tsx index 6189f1b353ec8..ffed3e064d7f5 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/take_action_dropdown.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_dropdown.test.tsx @@ -27,7 +27,7 @@ import { ALERT_ASSIGNEES_CONTEXT_MENU_ITEM_TITLE, ALERT_TAGS_CONTEXT_MENU_ITEM_TITLE, } from '../../../../common/components/toolbar/bulk_actions/translations'; -import { FLYOUT_FOOTER_DEOPDOEN_BUTTON_TEST_ID } from '../test_ids'; +import { FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID } from './test_ids'; jest.mock('../../../../common/components/endpoint/host_isolation'); jest.mock('../../../../common/components/endpoint/responder'); @@ -128,7 +128,7 @@ describe('take action dropdown', () => { ); expect( - wrapper.find(`[data-test-subj="${FLYOUT_FOOTER_DEOPDOEN_BUTTON_TEST_ID}"]`).exists() + wrapper.find(`[data-test-subj="${FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID}"]`).exists() ).toBeTruthy(); }); @@ -139,7 +139,7 @@ describe('take action dropdown', () => { ); expect( - wrapper.find(`[data-test-subj="${FLYOUT_FOOTER_DEOPDOEN_BUTTON_TEST_ID}"]`).first().text() + wrapper.find(`[data-test-subj="${FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID}"]`).first().text() ).toEqual('Take action'); }); @@ -153,7 +153,7 @@ describe('take action dropdown', () => { ); wrapper - .find(`button[data-test-subj="${FLYOUT_FOOTER_DEOPDOEN_BUTTON_TEST_ID}"]`) + .find(`button[data-test-subj="${FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID}"]`) .simulate('click'); }); test('should render "Add to existing case"', async () => { @@ -325,7 +325,7 @@ describe('take action dropdown', () => { ); wrapper - .find(`button[data-test-subj="${FLYOUT_FOOTER_DEOPDOEN_BUTTON_TEST_ID}"]`) + .find(`button[data-test-subj="${FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID}"]`) .simulate('click'); return wrapper; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/take_action_dropdown.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_dropdown.tsx similarity index 99% rename from x-pack/plugins/security_solution/public/flyout/document_details/right/components/take_action_dropdown.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_dropdown.tsx index dbc21e82220de..da94ec6e02e99 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/take_action_dropdown.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/components/take_action_dropdown.tsx @@ -12,7 +12,7 @@ import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; import { TableId } from '@kbn/securitysolution-data-table'; import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; import { i18n } from '@kbn/i18n'; -import { FLYOUT_FOOTER_DEOPDOEN_BUTTON_TEST_ID } from '../test_ids'; +import { FLYOUT_FOOTER_DROPDOWN_BUTTON_TEST_ID } from './test_ids'; import { getAlertDetailsFieldValue } from '../../../../common/lib/endpoint/utils/get_event_details_field_values'; import { GuidedOnboardingTourStep } from '../../../../common/components/guided_onboarding_tour/tour_step'; import { @@ -362,7 +362,7 @@ export const TakeActionDropdown = memo( tourId={SecurityStepId.alertsCases} > { const dotRegx = RegExp('[.]', 'g'); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.test.tsx new file mode 100644 index 0000000000000..453f897d4e188 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.test.tsx @@ -0,0 +1,226 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RenderHookResult } from '@testing-library/react'; +import { renderHook } from '@testing-library/react'; +import type { UseGraphPreviewParams, UseGraphPreviewResult } from './use_graph_preview'; +import { useGraphPreview } from './use_graph_preview'; +import type { GetFieldsData } from './use_get_fields_data'; +import { mockFieldData } from '../mocks/mock_get_fields_data'; + +const mockGetFieldsData: GetFieldsData = (field: string) => { + if (field === 'kibana.alert.original_event.id') { + return 'eventId'; + } else if (field === 'actor.entity.id') { + return 'actorId'; + } else if (field === 'target.entity.id') { + return 'targetId'; + } + + return mockFieldData[field]; +}; + +describe('useGraphPreview', () => { + let hookResult: RenderHookResult; + + it(`should return false when missing actor`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === 'actor.entity.id') { + return; + } + return mockGetFieldsData(field); + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual([]); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(['action']); + }); + + it(`should return false when missing event.action`, () => { + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData: mockGetFieldsData, + ecsData: { + _id: 'id', + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(undefined); + }); + + it(`should return false when missing target`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === 'target.entity.id') { + return; + } + return mockGetFieldsData(field); + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual([]); + expect(action).toEqual(undefined); + }); + + it(`should return false when missing original_event.id`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === 'kibana.alert.original_event.id') { + return; + } + + return mockGetFieldsData(field); + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual([]); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(['action']); + }); + + it(`should return false when timestamp is missing`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === '@timestamp') { + return; + } + + return mockGetFieldsData(field); + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(null); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(['action']); + }); + + it(`should return true when alert is has graph preview`, () => { + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData: mockGetFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(true); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(['action']); + }); + + it(`should return true when alert is has graph preview with multiple values`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === 'kibana.alert.original_event.id') { + return ['id1', 'id2']; + } else if (field === 'actor.entity.id') { + return ['actorId1', 'actorId2']; + } else if (field === 'target.entity.id') { + return ['targetId1', 'targetId2']; + } + + return mockFieldData[field]; + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action1', 'action2'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(true); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['id1', 'id2']); + expect(actorIds).toEqual(['actorId1', 'actorId2']); + expect(action).toEqual(['action1', 'action2']); + expect(targetIds).toEqual(['targetId1', 'targetId2']); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.ts new file mode 100644 index 0000000000000..48233afab02df --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.ts @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; +import { get } from 'lodash/fp'; +import type { GetFieldsData } from './use_get_fields_data'; +import { getField, getFieldArray } from '../utils'; + +export interface UseGraphPreviewParams { + /** + * Retrieves searchHit values for the provided field + */ + getFieldsData: GetFieldsData; + + /** + * An object with top level fields from the ECS object + */ + ecsData: Ecs; +} +/** + * Interface for the result of the useGraphPreview hook + */ +export interface UseGraphPreviewResult { + /** + * The timestamp of the event + */ + timestamp: string | null; + + /** + * Array of event IDs associated with the alert + */ + eventIds: string[]; + + /** + * Array of actor entity IDs associated with the alert + */ + actorIds: string[]; + + /** + * Array of target entity IDs associated with the alert + */ + targetIds: string[]; + + /** + * Action associated with the event + */ + action?: string[]; + + /** + * Boolean indicating if the event is has a graph representation (contains event ids, actor ids and action) + */ + hasGraphRepresentation: boolean; +} + +/** + * Hook that returns the graph view configuration if the graph view is available for the alert + */ +export const useGraphPreview = ({ + getFieldsData, + ecsData, +}: UseGraphPreviewParams): UseGraphPreviewResult => { + const timestamp = getField(getFieldsData('@timestamp')); + const originalEventId = getFieldsData('kibana.alert.original_event.id'); + const eventId = getFieldsData('event.id'); + const eventIds = originalEventId ? getFieldArray(originalEventId) : getFieldArray(eventId); + + const actorIds = getFieldArray(getFieldsData('actor.entity.id')); + const targetIds = getFieldArray(getFieldsData('target.entity.id')); + const action: string[] | undefined = get(['event', 'action'], ecsData); + const hasGraphRepresentation = + Boolean(timestamp) && + Boolean(action?.length) && + actorIds.length > 0 && + eventIds.length > 0 && + targetIds.length > 0; + + return { timestamp, eventIds, actorIds, action, targetIds, hasGraphRepresentation }; +}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_host_isolation.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_host_isolation.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_host_isolation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_host_isolation.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_enrichment.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_enrichment.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_enrichment.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_enrichment.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_enrichment.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_enrichment.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_enrichment.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_enrichment.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.test.tsx new file mode 100644 index 0000000000000..f73d154ff7dba --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.test.tsx @@ -0,0 +1,357 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { useNavigateToAnalyzer } from './use_navigate_to_analyzer'; +import { mockFlyoutApi } from '../mocks/mock_flyout_context'; +import { useWhichFlyout } from './use_which_flyout'; +import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; +import { useKibana } from '../../../../common/lib/kibana'; +import { + DocumentDetailsRightPanelKey, + DocumentDetailsLeftPanelKey, + DocumentDetailsAnalyzerPanelKey, +} from '../constants/panel_keys'; +import { ANALYZE_GRAPH_ID, ANALYZER_PREVIEW_BANNER } from '../../left/components/analyze_graph'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; + +jest.mock('@kbn/expandable-flyout'); +jest.mock('../../../../common/lib/kibana'); +jest.mock('./use_which_flyout'); +jest.mock('../../../../common/hooks/use_experimental_features'); + +const mockedUseKibana = mockUseKibana(); +(useKibana as jest.Mock).mockReturnValue(mockedUseKibana); + +const mockUseWhichFlyout = useWhichFlyout as jest.Mock; +const FLYOUT_KEY = 'SecuritySolution'; +const TIMELINE_FLYOUT_KEY = 'Timeline'; + +const eventId = 'eventId1'; +const indexName = 'index1'; +const scopeId = 'scopeId1'; + +describe('useNavigateToAnalyzer', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.mocked(useExpandableFlyoutApi).mockReturnValue(mockFlyoutApi); + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(false); + }); + + it('when isFlyoutOpen is true and not in preview mode, should return callback that opens left and preview panels', () => { + mockUseWhichFlyout.mockReturnValue(FLYOUT_KEY); + const hookResult = renderHook(() => + useNavigateToAnalyzer({ + isFlyoutOpen: true, + eventId, + indexName, + scopeId, + isPreviewMode: false, + }) + ); + hookResult.result.current.navigateToAnalyzer(); + + expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: ANALYZE_GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + + expect(mockFlyoutApi.openPreviewPanel).toHaveBeenCalledWith({ + id: DocumentDetailsAnalyzerPanelKey, + params: { + resolverComponentInstanceID: `${FLYOUT_KEY}-${scopeId}`, + banner: ANALYZER_PREVIEW_BANNER, + }, + }); + }); + + it('when isFlyoutOpen is true and in preview mode, navigation is not enabled', () => { + mockUseWhichFlyout.mockReturnValue(FLYOUT_KEY); + const hookResult = renderHook(() => + useNavigateToAnalyzer({ + isFlyoutOpen: true, + eventId, + indexName, + scopeId, + isPreviewMode: true, + }) + ); + hookResult.result.current.navigateToAnalyzer(); + expect(mockFlyoutApi.openLeftPanel).not.toHaveBeenCalled(); + expect(mockFlyoutApi.openPreviewPanel).not.toHaveBeenCalled(); + }); + + it('when isFlyoutOpen is false and scopeId is not timeline, should return callback that opens a new flyout', () => { + mockUseWhichFlyout.mockReturnValue(null); + + const hookResult = renderHook(() => + useNavigateToAnalyzer({ + isFlyoutOpen: false, + eventId, + indexName, + scopeId, + isPreviewMode: true, + }) + ); + hookResult.result.current.navigateToAnalyzer(); + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: ANALYZE_GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + preview: { + id: DocumentDetailsAnalyzerPanelKey, + params: { + resolverComponentInstanceID: `${FLYOUT_KEY}-${scopeId}`, + banner: ANALYZER_PREVIEW_BANNER, + }, + }, + }); + }); + + it('when isFlyoutOpen is false and scopeId is current timeline, should return callback that opens a new flyout in timeline', () => { + mockUseWhichFlyout.mockReturnValue(null); + const timelineId = 'timeline-1'; + const hookResult = renderHook(() => + useNavigateToAnalyzer({ + isFlyoutOpen: false, + eventId, + indexName, + scopeId: timelineId, + isPreviewMode: true, + }) + ); + hookResult.result.current.navigateToAnalyzer(); + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId: timelineId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: ANALYZE_GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId: timelineId, + }, + }, + preview: { + id: DocumentDetailsAnalyzerPanelKey, + params: { + resolverComponentInstanceID: `${TIMELINE_FLYOUT_KEY}-${timelineId}`, + banner: ANALYZER_PREVIEW_BANNER, + }, + }, + }); + }); + + describe('when new navigation is enabled', () => { + beforeEach(() => { + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(true); + }); + + it('when isFlyoutOpen is true and not in preview mode, should return callback that opens left and preview panels', () => { + mockUseWhichFlyout.mockReturnValue(FLYOUT_KEY); + const hookResult = renderHook(() => + useNavigateToAnalyzer({ + isFlyoutOpen: true, + eventId, + indexName, + scopeId, + isPreviewMode: false, + }) + ); + hookResult.result.current.navigateToAnalyzer(); + + expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: ANALYZE_GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + + expect(mockFlyoutApi.openPreviewPanel).toHaveBeenCalledWith({ + id: DocumentDetailsAnalyzerPanelKey, + params: { + resolverComponentInstanceID: `${FLYOUT_KEY}-${scopeId}`, + banner: ANALYZER_PREVIEW_BANNER, + }, + }); + }); + + it('when isFlyoutOpen is true and in preview mode, should return callback that opens new flyout', () => { + mockUseWhichFlyout.mockReturnValue(FLYOUT_KEY); + const hookResult = renderHook(() => + useNavigateToAnalyzer({ + isFlyoutOpen: true, + eventId, + indexName, + scopeId, + isPreviewMode: true, + }) + ); + hookResult.result.current.navigateToAnalyzer(); + + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: ANALYZE_GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + preview: { + id: DocumentDetailsAnalyzerPanelKey, + params: { + resolverComponentInstanceID: `${FLYOUT_KEY}-${scopeId}`, + banner: ANALYZER_PREVIEW_BANNER, + }, + }, + }); + }); + + it('when isFlyoutOpen is false and scopeId is not timeline, should return callback that opens a new flyout', () => { + mockUseWhichFlyout.mockReturnValue(null); + + const hookResult = renderHook(() => + useNavigateToAnalyzer({ + isFlyoutOpen: false, + eventId, + indexName, + scopeId, + isPreviewMode: true, + }) + ); + hookResult.result.current.navigateToAnalyzer(); + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: ANALYZE_GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + preview: { + id: DocumentDetailsAnalyzerPanelKey, + params: { + resolverComponentInstanceID: `${FLYOUT_KEY}-${scopeId}`, + banner: ANALYZER_PREVIEW_BANNER, + }, + }, + }); + }); + + it('when isFlyoutOpen is false and scopeId is current timeline, should return callback that opens a new flyout in timeline', () => { + mockUseWhichFlyout.mockReturnValue(null); + const timelineId = 'timeline-1'; + const hookResult = renderHook(() => + useNavigateToAnalyzer({ + isFlyoutOpen: false, + eventId, + indexName, + scopeId: timelineId, + isPreviewMode: true, + }) + ); + hookResult.result.current.navigateToAnalyzer(); + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId: timelineId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: ANALYZE_GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId: timelineId, + }, + }, + preview: { + id: DocumentDetailsAnalyzerPanelKey, + params: { + resolverComponentInstanceID: `${TIMELINE_FLYOUT_KEY}-${timelineId}`, + banner: ANALYZER_PREVIEW_BANNER, + }, + }, + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx index a4539ed7e6415..0a075a1d792b8 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx @@ -20,6 +20,7 @@ import { import { Flyouts } from '../constants/flyouts'; import { isTimelineScope } from '../../../../helpers'; import { DocumentEventTypes } from '../../../../common/lib/telemetry'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; export interface UseNavigateToAnalyzerParams { /** @@ -39,6 +40,10 @@ export interface UseNavigateToAnalyzerParams { * Scope id of the page */ scopeId: string; + /** + * Whether the preview mode is enabled + */ + isPreviewMode?: boolean; } export interface UseNavigateToAnalyzerResult { @@ -49,16 +54,21 @@ export interface UseNavigateToAnalyzerResult { } /** - * Hook that returns the a callback to navigate to the analyzer in the flyout + * Hook that returns a callback to navigate to the analyzer in the flyout */ export const useNavigateToAnalyzer = ({ isFlyoutOpen, eventId, indexName, scopeId, + isPreviewMode, }: UseNavigateToAnalyzerParams): UseNavigateToAnalyzerResult => { const { telemetry } = useKibana().services; const { openLeftPanel, openPreviewPanel, openFlyout } = useExpandableFlyoutApi(); + + const isNewNavigationEnabled = useIsExperimentalFeatureEnabled( + 'newExpandableFlyoutNavigationEnabled' + ); let key = useWhichFlyout() ?? 'memory'; if (!isFlyoutOpen) { @@ -105,7 +115,8 @@ export const useNavigateToAnalyzer = ({ ); const navigateToAnalyzer = useCallback(() => { - if (isFlyoutOpen) { + // open left panel and preview panel if not in preview mode + if (isFlyoutOpen && !isPreviewMode) { openLeftPanel(left); openPreviewPanel(preview); telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutTabClicked, { @@ -113,7 +124,10 @@ export const useNavigateToAnalyzer = ({ panel: 'left', tabId: 'visualize', }); - } else { + } + // if flyout is not currently open, open flyout with right, left and preview panel + // if new navigation is enabled and in preview mode, open flyout with right, left and preview panel + else if (!isFlyoutOpen || (isNewNavigationEnabled && isPreviewMode)) { openFlyout({ right, left, @@ -134,6 +148,8 @@ export const useNavigateToAnalyzer = ({ scopeId, telemetry, isFlyoutOpen, + isNewNavigationEnabled, + isPreviewMode, ]); return useMemo(() => ({ navigateToAnalyzer }), [navigateToAnalyzer]); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.test.tsx new file mode 100644 index 0000000000000..929dc208f3b38 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.test.tsx @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { mockFlyoutApi } from '../mocks/mock_flyout_context'; +import { useWhichFlyout } from './use_which_flyout'; +import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; +import { useKibana } from '../../../../common/lib/kibana'; +import { DocumentDetailsRightPanelKey, DocumentDetailsLeftPanelKey } from '../constants/panel_keys'; +import { useNavigateToGraphVisualization } from './use_navigate_to_graph_visualization'; +import { GRAPH_ID } from '../../left/components/graph_visualization'; + +jest.mock('@kbn/expandable-flyout'); +jest.mock('../../../../common/lib/kibana'); +jest.mock('./use_which_flyout'); + +const mockedUseKibana = mockUseKibana(); +(useKibana as jest.Mock).mockReturnValue(mockedUseKibana); + +const mockUseWhichFlyout = useWhichFlyout as jest.Mock; +const FLYOUT_KEY = 'SecuritySolution'; + +const eventId = 'eventId1'; +const indexName = 'index1'; +const scopeId = 'scopeId1'; + +describe('useNavigateToGraphVisualization', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.mocked(useExpandableFlyoutApi).mockReturnValue(mockFlyoutApi); + }); + + it('when isFlyoutOpen is true, should return callback that opens left and preview panels', () => { + mockUseWhichFlyout.mockReturnValue(FLYOUT_KEY); + const hookResult = renderHook(() => + useNavigateToGraphVisualization({ isFlyoutOpen: true, eventId, indexName, scopeId }) + ); + + // Act + hookResult.result.current.navigateToGraphVisualization(); + + expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + }); + + it('when isFlyoutOpen is false and scopeId is not timeline, should return callback that opens a new flyout', () => { + mockUseWhichFlyout.mockReturnValue(null); + + const hookResult = renderHook(() => + useNavigateToGraphVisualization({ isFlyoutOpen: false, eventId, indexName, scopeId }) + ); + + // Act + hookResult.result.current.navigateToGraphVisualization(); + + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.tsx new file mode 100644 index 0000000000000..bb61ae6f97073 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.tsx @@ -0,0 +1,105 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useMemo } from 'react'; +import type { FlyoutPanelProps } from '@kbn/expandable-flyout'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import type { Maybe } from '@kbn/timelines-plugin/common/search_strategy/common'; +import { useKibana } from '../../../../common/lib/kibana'; +import { DocumentDetailsLeftPanelKey, DocumentDetailsRightPanelKey } from '../constants/panel_keys'; +import { DocumentEventTypes } from '../../../../common/lib/telemetry'; +import { GRAPH_ID } from '../../left/components/graph_visualization'; + +export interface UseNavigateToGraphVisualizationParams { + /** + * When flyout is already open, call open left panel only + * When flyout is not open, open a new flyout + */ + isFlyoutOpen: boolean; + /** + * Id of the document + */ + eventId: string; + /** + * Name of the index used in the parent's page + */ + indexName: Maybe | undefined; + /** + * Scope id of the page + */ + scopeId: string; +} + +export interface UseNavigateToGraphVisualizationResult { + /** + * Callback to open analyzer in visualize tab + */ + navigateToGraphVisualization: () => void; +} + +/** + * Hook that returns a callback to navigate to the graph visualization in the flyout + */ +export const useNavigateToGraphVisualization = ({ + isFlyoutOpen, + eventId, + indexName, + scopeId, +}: UseNavigateToGraphVisualizationParams): UseNavigateToGraphVisualizationResult => { + const { telemetry } = useKibana().services; + const { openLeftPanel, openFlyout } = useExpandableFlyoutApi(); + + const right: FlyoutPanelProps = useMemo( + () => ({ + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }), + [eventId, indexName, scopeId] + ); + + const left: FlyoutPanelProps = useMemo( + () => ({ + id: DocumentDetailsLeftPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + path: { + tab: 'visualize', + subTab: GRAPH_ID, + }, + }), + [eventId, indexName, scopeId] + ); + + const navigateToGraphVisualization = useCallback(() => { + if (isFlyoutOpen) { + openLeftPanel(left); + telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutTabClicked, { + location: scopeId, + panel: 'left', + tabId: 'visualize', + }); + } else { + openFlyout({ + right, + left, + }); + telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutOpened, { + location: scopeId, + panel: 'left', + }); + } + }, [openFlyout, openLeftPanel, right, left, scopeId, telemetry, isFlyoutOpen]); + + return useMemo(() => ({ navigateToGraphVisualization }), [navigateToGraphVisualization]); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_left_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_left_panel.test.tsx new file mode 100644 index 0000000000000..41c0d85fa660f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_left_panel.test.tsx @@ -0,0 +1,156 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useNavigateToLeftPanel } from './use_navigate_to_left_panel'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { renderHook } from '@testing-library/react-hooks'; +import { useDocumentDetailsContext } from '../context'; +import { mockFlyoutApi } from '../mocks/mock_flyout_context'; +import { DocumentDetailsRightPanelKey, DocumentDetailsLeftPanelKey } from '../constants/panel_keys'; +import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; +import { useKibana } from '../../../../common/lib/kibana'; + +const mockUseIsExperimentalFeatureEnabled = useIsExperimentalFeatureEnabled as jest.Mock; +jest.mock('../../../../common/hooks/use_experimental_features'); + +jest.mock('../../../../common/lib/kibana'); + +const mockedUseKibana = mockUseKibana(); +(useKibana as jest.Mock).mockReturnValue(mockedUseKibana); + +jest.mock('@kbn/expandable-flyout'); +jest.mock('../context'); + +const eventId = 'eventId'; +const indexName = 'indexName'; +const scopeId = 'scopeId'; + +describe('useNavigateToLeftPanel', () => { + describe('newExpandableFlyoutNavigationEnabled is not enabled', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseIsExperimentalFeatureEnabled.mockReturnValue(false); + jest.mocked(useExpandableFlyoutApi).mockReturnValue(mockFlyoutApi); + }); + + it('should enable navigation if isPreviewMode is false', () => { + (useDocumentDetailsContext as jest.Mock).mockReturnValue({ + eventId, + indexName, + scopeId, + isPreviewMode: false, + }); + const hookResult = renderHook(() => useNavigateToLeftPanel({ tab: 'tab', subTab: 'subTab' })); + expect(hookResult.result.current.isEnabled).toEqual(true); + + hookResult.result.current.navigateToLeftPanel(); + + expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'tab', + subTab: 'subTab', + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + expect(mockFlyoutApi.openFlyout).not.toHaveBeenCalled(); + }); + + it('should disable navigation if isPreviewMode is true', () => { + (useDocumentDetailsContext as jest.Mock).mockReturnValue({ + eventId, + indexName, + scopeId, + isPreviewMode: true, + }); + + const hookResult = renderHook(() => useNavigateToLeftPanel({ tab: 'tab', subTab: 'subTab' })); + expect(hookResult.result.current.isEnabled).toEqual(false); + + hookResult.result.current.navigateToLeftPanel(); + + expect(mockFlyoutApi.openLeftPanel).not.toHaveBeenCalled(); + expect(mockFlyoutApi.openFlyout).not.toHaveBeenCalled(); + }); + }); + + describe('newExpandableFlyoutNavigationEnabled', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + }); + + it('should enable navigation if isPreviewMode is false', () => { + (useDocumentDetailsContext as jest.Mock).mockReturnValue({ + eventId, + indexName, + scopeId, + isPreviewMode: false, + }); + const hookResult = renderHook(() => useNavigateToLeftPanel({ tab: 'tab', subTab: 'subTab' })); + expect(hookResult.result.current.isEnabled).toEqual(true); + + hookResult.result.current.navigateToLeftPanel(); + + expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'tab', + subTab: 'subTab', + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + expect(mockFlyoutApi.openFlyout).not.toHaveBeenCalled(); + }); + + it('should open new flyout if isPreviewMode is true', () => { + (useDocumentDetailsContext as jest.Mock).mockReturnValue({ + eventId, + indexName, + scopeId, + isPreviewMode: true, + }); + const hookResult = renderHook(() => useNavigateToLeftPanel({ tab: 'tab', subTab: 'subTab' })); + expect(hookResult.result.current.isEnabled).toEqual(true); + + hookResult.result.current.navigateToLeftPanel(); + + expect(mockFlyoutApi.openLeftPanel).not.toHaveBeenCalled(); + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'tab', + subTab: 'subTab', + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + }); + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_left_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_left_panel.tsx new file mode 100644 index 0000000000000..59c5c20d36213 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_left_panel.tsx @@ -0,0 +1,114 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useMemo } from 'react'; +import type { FlyoutPanelProps } from '@kbn/expandable-flyout'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { DocumentEventTypes } from '../../../../common/lib/telemetry/types'; +import { useKibana } from '../../../../common/lib/kibana'; +import { DocumentDetailsLeftPanelKey, DocumentDetailsRightPanelKey } from '../constants/panel_keys'; +import { useDocumentDetailsContext } from '../context'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +export interface UseNavigateToLeftPanelParams { + /** + * The tab to navigate to + */ + tab: string; + /** + * Optional sub tab to navigate to + */ + subTab?: string; +} + +export interface UseNavigateToLeftPanelResult { + /** + * Callback to open analyzer in visualize tab + */ + navigateToLeftPanel: () => void; + /** + * Whether the button should be disabled + */ + isEnabled: boolean; +} + +/** + * Hook that returns the a callback to navigate to the analyzer in the flyout + */ +export const useNavigateToLeftPanel = ({ + tab, + subTab, +}: UseNavigateToLeftPanelParams): UseNavigateToLeftPanelResult => { + const { telemetry } = useKibana().services; + const { openLeftPanel, openFlyout } = useExpandableFlyoutApi(); + const { eventId, indexName, scopeId, isPreviewMode } = useDocumentDetailsContext(); + + const isNewNavigationEnabled = useIsExperimentalFeatureEnabled( + 'newExpandableFlyoutNavigationEnabled' + ); + + const isEnabled = isNewNavigationEnabled || (!isNewNavigationEnabled && !isPreviewMode); + + const right: FlyoutPanelProps = useMemo( + () => ({ + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }), + [eventId, indexName, scopeId] + ); + + const left: FlyoutPanelProps = useMemo( + () => ({ + id: DocumentDetailsLeftPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + path: { + tab, + subTab, + }, + }), + [eventId, indexName, scopeId, tab, subTab] + ); + + const navigateToLeftPanel = useCallback(() => { + if (!isPreviewMode) { + openLeftPanel(left); + telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutTabClicked, { + location: scopeId, + panel: 'left', + tabId: tab, + }); + } else if (isNewNavigationEnabled && isPreviewMode) { + openFlyout({ + right, + left, + }); + telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutOpened, { + location: scopeId, + panel: 'left', + }); + } + }, [ + openFlyout, + openLeftPanel, + right, + left, + scopeId, + telemetry, + isPreviewMode, + tab, + isNewNavigationEnabled, + ]); + + return useMemo(() => ({ navigateToLeftPanel, isEnabled }), [navigateToLeftPanel, isEnabled]); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.test.tsx new file mode 100644 index 0000000000000..b655badf2beeb --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.test.tsx @@ -0,0 +1,193 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { useNavigateToSessionView } from './use_navigate_to_session_view'; +import { mockFlyoutApi } from '../mocks/mock_flyout_context'; +import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; +import { useKibana } from '../../../../common/lib/kibana'; +import { DocumentDetailsRightPanelKey, DocumentDetailsLeftPanelKey } from '../constants/panel_keys'; +import { SESSION_VIEW_ID } from '../../left/components/session_view'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; + +jest.mock('@kbn/expandable-flyout'); +jest.mock('../../../../common/lib/kibana'); +jest.mock('../../../../common/hooks/use_experimental_features'); + +const mockedUseKibana = mockUseKibana(); +(useKibana as jest.Mock).mockReturnValue(mockedUseKibana); + +const eventId = 'eventId1'; +const indexName = 'index1'; +const scopeId = 'scopeId1'; + +describe('useNavigateToSessionView', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.mocked(useExpandableFlyoutApi).mockReturnValue(mockFlyoutApi); + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(false); + }); + + it('when isFlyoutOpen is true, should return callback that opens left panel', () => { + const hookResult = renderHook(() => + useNavigateToSessionView({ isFlyoutOpen: true, eventId, indexName, scopeId }) + ); + hookResult.result.current.navigateToSessionView(); + expect(mockFlyoutApi.openFlyout).not.toHaveBeenCalled(); + expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: SESSION_VIEW_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + }); + + it('when isFlyoutOpen is true and in preview mode, navigation is disabled', () => { + const hookResult = renderHook(() => + useNavigateToSessionView({ + isFlyoutOpen: true, + eventId, + indexName, + scopeId, + isPreviewMode: true, + }) + ); + hookResult.result.current.navigateToSessionView(); + + expect(mockFlyoutApi.openLeftPanel).not.toHaveBeenCalled(); + expect(mockFlyoutApi.openFlyout).not.toHaveBeenCalled(); + }); + + it('when isFlyoutOpen is false, should return callback that opens a new flyout', () => { + const hookResult = renderHook(() => + useNavigateToSessionView({ isFlyoutOpen: false, eventId, indexName, scopeId }) + ); + hookResult.result.current.navigateToSessionView(); + expect(mockFlyoutApi.openLeftPanel).not.toHaveBeenCalled(); + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: SESSION_VIEW_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + }); + }); + + describe('when new navigation is enabled', () => { + beforeEach(() => { + (useIsExperimentalFeatureEnabled as jest.Mock).mockReturnValue(true); + }); + it('when isFlyoutOpen is true, should return callback that opens left panel', () => { + const hookResult = renderHook(() => + useNavigateToSessionView({ isFlyoutOpen: true, eventId, indexName, scopeId }) + ); + hookResult.result.current.navigateToSessionView(); + expect(mockFlyoutApi.openFlyout).not.toHaveBeenCalled(); + expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: SESSION_VIEW_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + }); + + it('when isFlyoutOpen is true and in preview mode, should return callback that opens a new flyout', () => { + const hookResult = renderHook(() => + useNavigateToSessionView({ + isFlyoutOpen: true, + eventId, + indexName, + scopeId, + isPreviewMode: true, + }) + ); + hookResult.result.current.navigateToSessionView(); + + expect(mockFlyoutApi.openLeftPanel).not.toHaveBeenCalled(); + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: SESSION_VIEW_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + }); + }); + + it('when isFlyoutOpen is false, should return callback that opens a new flyout', () => { + const hookResult = renderHook(() => + useNavigateToSessionView({ isFlyoutOpen: false, eventId, indexName, scopeId }) + ); + hookResult.result.current.navigateToSessionView(); + expect(mockFlyoutApi.openLeftPanel).not.toHaveBeenCalled(); + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: SESSION_VIEW_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx similarity index 75% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx index f0b2733998c97..21171c1393c65 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx @@ -13,6 +13,7 @@ import { useKibana } from '../../../../common/lib/kibana'; import { SESSION_VIEW_ID } from '../../left/components/session_view'; import { DocumentDetailsLeftPanelKey, DocumentDetailsRightPanelKey } from '../constants/panel_keys'; import { DocumentEventTypes } from '../../../../common/lib/telemetry'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; export interface UseNavigateToSessionViewParams { /** @@ -32,6 +33,10 @@ export interface UseNavigateToSessionViewParams { * Scope id of the page */ scopeId: string; + /** + * Whether the preview mode is enabled + */ + isPreviewMode?: boolean; } export interface UseNavigateToSessionViewResult { @@ -42,17 +47,22 @@ export interface UseNavigateToSessionViewResult { } /** - * Hook that returns the a callback to navigate to session view in the flyout + * Hook that returns a callback to navigate to session view in the flyout */ export const useNavigateToSessionView = ({ isFlyoutOpen, eventId, indexName, scopeId, + isPreviewMode, }: UseNavigateToSessionViewParams): UseNavigateToSessionViewResult => { const { telemetry } = useKibana().services; const { openLeftPanel, openFlyout } = useExpandableFlyoutApi(); + const isNewNavigationEnabled = useIsExperimentalFeatureEnabled( + 'newExpandableFlyoutNavigationEnabled' + ); + const right: FlyoutPanelProps = useMemo( () => ({ id: DocumentDetailsRightPanelKey, @@ -82,14 +92,18 @@ export const useNavigateToSessionView = ({ ); const navigateToSessionView = useCallback(() => { - if (isFlyoutOpen) { + // open left panel if not in preview mode + if (isFlyoutOpen && !isPreviewMode) { openLeftPanel(left); telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutTabClicked, { location: scopeId, panel: 'left', tabId: 'visualize', }); - } else { + } + // if flyout is not currently open, open flyout with right and left panels + // if new navigation is enabled and in preview mode, open flyout with right and left panels + else if (!isFlyoutOpen || (isNewNavigationEnabled && isPreviewMode)) { openFlyout({ right, left, @@ -99,7 +113,17 @@ export const useNavigateToSessionView = ({ panel: 'left', }); } - }, [openFlyout, openLeftPanel, right, left, scopeId, telemetry, isFlyoutOpen]); + }, [ + openFlyout, + openLeftPanel, + right, + left, + scopeId, + telemetry, + isFlyoutOpen, + isNewNavigationEnabled, + isPreviewMode, + ]); return useMemo(() => ({ navigateToSessionView }), [navigateToSessionView]); }; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_rule_details_link.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_rule_details_link.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_rule_details_link.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_rule_details_link.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_rule_details_link.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_rule_details_link.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_rule_details_link.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_rule_details_link.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_which_flyout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_which_flyout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_which_flyout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_which_flyout.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_which_flyout.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_which_flyout.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_which_flyout.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_which_flyout.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_context.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_context.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_context.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_as_nested_object.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_as_nested_object.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_as_nested_object.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_as_nested_object.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_formatted_for_field_browser.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_formatted_for_field_browser.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_formatted_for_field_browser.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_formatted_for_field_browser.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_flyout_context.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_flyout_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_flyout_context.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_flyout_context.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_get_fields_data.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_get_fields_data.ts similarity index 89% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_get_fields_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_get_fields_data.ts index bf8b8cbeae422..00e4385bf7f25 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_get_fields_data.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_get_fields_data.ts @@ -30,7 +30,7 @@ export const mockFieldData: Record = { }; /** - * Returns mocked data for field (mock this method: x-pack/plugins/security_solution/public/common/hooks/use_get_fields_data.ts) + * Returns mocked data for field (mock this method: x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_get_fields_data.ts) * @param field * @returns string[] */ diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_search_hit.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_search_hit.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_search_hit.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_search_hit.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/services/threat_intelligence.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/services/threat_intelligence.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/services/threat_intelligence.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/services/threat_intelligence.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/types.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/types.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/types.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/types.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/utils.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils.tsx similarity index 94% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/utils.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils.tsx index 9953fa0fbbfb1..e200519184b53 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils.tsx @@ -9,7 +9,7 @@ import { startCase } from 'lodash'; import type { GetFieldsData } from './hooks/use_get_fields_data'; /** - * Helper function to retrieve a field's value (used in combination with the custom hook useGetFieldsData (https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/public/common/hooks/use_get_fields_data.ts) + * Helper function to retrieve a field's value (used in combination with the custom hook useGetFieldsData (x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/hooks/use_get_fields_data.ts) * @param field type unknown or unknown[] * @param emptyValue optional parameter to return if field is incorrect * @return the field's value, or null/emptyValue diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/build_requests.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/build_requests.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/build_requests.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/build_requests.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/fetch_data.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/fetch_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/fetch_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/fetch_data.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/threat_intelligence.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/threat_intelligence.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/threat_intelligence.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/threat_intelligence.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/threat_intelligence.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/threat_intelligence.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/threat_intelligence.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/document_details/shared/utils/threat_intelligence.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_details_left/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_details_left/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_details_left/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_details_left/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_preview/footer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_preview/footer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_preview/footer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_preview/footer.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_preview/footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_preview/footer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_preview/footer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_preview/footer.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/content.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/content.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/basic_host_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/basic_host_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/basic_host_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/basic_host_fields.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/cloud_fields.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/cloud_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/cloud_fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/cloud_fields.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/fields/translations.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/header.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/host_right/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/mocks/index.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/mocks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/mocks/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/mocks/index.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/common.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/common.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/common.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/common.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/columns.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/types.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/types.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/types.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/types.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/constants.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/hooks/use_managed_user.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/hooks/use_managed_user.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/hooks/use_managed_user.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/hooks/use_managed_user.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/hooks/use_managed_user.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/hooks/use_managed_user.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/hooks/use_managed_user.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/hooks/use_managed_user.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/shared/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/translations.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/asset_document.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/asset_document.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/asset_document.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/asset_document.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/asset_document.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/asset_document.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/asset_document.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/asset_document.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_details_left/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_preview/footer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_preview/footer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_preview/footer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_preview/footer.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_preview/footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_preview/footer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_preview/footer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_preview/footer.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user_accordion.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user_accordion.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user_accordion.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user_accordion.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user_accordion.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user_accordion.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user_accordion.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/components/managed_user_accordion.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/constants.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/content.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/content.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/content.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/content.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/content.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/header.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/header.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/header.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/translations.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_managed_user_items.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_managed_user_items.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_managed_user_items.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_managed_user_items.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_managed_user_items.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_managed_user_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_managed_user_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_managed_user_items.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/mocks/index.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/mocks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/mocks/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/mocks/index.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/translations.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/types.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/types.ts diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/index.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/flyout/jest.config.js new file mode 100644 index 0000000000000..be8045c6b5af1 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/flyout'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/flyout', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/flyout/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/flyout/network_details/components/network_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/network_details/components/network_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/network_details/components/network_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/network_details/components/network_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/network_details/content.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/network_details/content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/network_details/content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/network_details/content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/network_details/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/network_details/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/network_details/header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/network_details/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/network_details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/network_details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/network_details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/network_details/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/hooks/use_rule_details.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/hooks/use_rule_details.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/hooks/use_rule_details.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/hooks/use_rule_details.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/hooks/use_rule_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/hooks/use_rule_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/hooks/use_rule_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/hooks/use_rule_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/preview/footer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/preview/footer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/preview/footer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/preview/footer.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/preview/footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/preview/footer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/preview/footer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/preview/footer.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/preview/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/preview/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/preview/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/preview/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/right/content.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/content.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/right/content.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/content.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/right/content.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/right/content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/right/header.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/right/header.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/header.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/right/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/right/header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/right/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/right/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/right/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/right/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/rule_details/right/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/rule_details/right/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details/right/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/alert_preview_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/alert_preview_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/alert_preview_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/alert_preview_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/alert_preview_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/alert_preview_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/alert_preview_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/alert_preview_button.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/expandable_panel.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/expandable_panel.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/expandable_panel.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/expandable_panel.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/expandable_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/expandable_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/expandable_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/expandable_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/expandable_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/expandable_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/expandable_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/expandable_panel.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_body.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_error.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_error.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_error.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_error.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_footer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_footer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_footer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_footer.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_footer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_footer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_footer.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_header_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_history.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_history.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_history.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_history.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_history.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_history.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_history.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_history.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_history_row.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_history_row.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_history_row.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_history_row.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_history_row.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_history_row.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_history_row.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_history_row.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_loading.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_loading.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_loading.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_loading.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_navigation.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_navigation.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_navigation.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_navigation.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx index 89798687c3e62..63fc411c347b0 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx @@ -63,12 +63,12 @@ export const FlyoutNavigation: FC = memo( const { euiTheme } = useEuiTheme(); const history = useExpandableFlyoutHistory(); - const isFlyoutHistoryEnabled = useIsExperimentalFeatureEnabled( + const isNewNavigationEnabled = useIsExperimentalFeatureEnabled( 'newExpandableFlyoutNavigationEnabled' ); const historyArray = useMemo(() => getProcessedHistory({ history, maxCount: 10 }), [history]); // Don't show history in rule preview - const hasHistory = !isPreview && isFlyoutHistoryEnabled; + const hasHistory = !isPreview && isNewNavigationEnabled; const panels = useExpandableFlyoutState(); const isExpanded: boolean = !!panels.left; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_title.stories.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_title.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_title.stories.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_title.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_title.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_title.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_title.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_title.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_title.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_title.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/flyout_title.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/flyout_title.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/preview_link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/preview_link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/preview_link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/preview_link.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/preview_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/preview_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/preview_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/preview_link.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/components/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts similarity index 90% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts index e763bb222bc7a..526382372ab4d 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts @@ -19,7 +19,7 @@ export interface UseOnCloseParams { /** * Hook to abstract the logic of listening to the onClose event for the Security Solution application. - * The kbn-expandable-flyout package provides the onClose callback, but has there are only 2 instances of the expandable flyout in Security Solution (normal and timeline) + * The expandable-flyout package provides the onClose callback, but has there are only 2 instances of the expandable flyout in Security Solution (normal and timeline) * we need a way to propagate the onClose event to all other components. * 2 event names are available, we pick the correct one depending on which flyout is open (if the timeline flyout is open, it is always on top, so we choose that one). */ diff --git a/x-pack/plugins/security_solution/public/flyout/shared/mocks/index.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/mocks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/mocks/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/mocks/index.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/utils/history_utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/utils/history_utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/utils/history_utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/utils/history_utils.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/utils/history_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/shared/utils/history_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/utils/history_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/flyout/shared/utils/history_utils.ts diff --git a/x-pack/plugins/security_solution/public/helper_hooks.tsx b/x-pack/solutions/security/plugins/security_solution/public/helper_hooks.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/helper_hooks.tsx rename to x-pack/solutions/security/plugins/security_solution/public/helper_hooks.tsx diff --git a/x-pack/plugins/security_solution/public/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/index.ts b/x-pack/solutions/security/plugins/security_solution/public/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/index.ts diff --git a/x-pack/plugins/security_solution/public/investigations/index.ts b/x-pack/solutions/security/plugins/security_solution/public/investigations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/investigations/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/investigations/index.ts diff --git a/x-pack/plugins/security_solution/public/investigations/investigations.tsx b/x-pack/solutions/security/plugins/security_solution/public/investigations/investigations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/investigations/investigations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/investigations/investigations.tsx diff --git a/x-pack/plugins/security_solution/public/investigations/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/investigations/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/investigations/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/investigations/routes.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/jest.config.js new file mode 100644 index 0000000000000..322cf3147f2bc --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/jest.config.js @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + /** all nested directories have their own Jest config file */ + testMatch: [ + '/x-pack/solutions/security/plugins/security_solution/public/*.test.{js,mjs,ts,tsx}', + ], + roots: ['/x-pack/solutions/security/plugins/security_solution/public'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/**/*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution/public/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution/public/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!/x-pack/solutions/security/plugins/security_solution/public/*mock*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution/public/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution/public/*.d.ts', + '!/x-pack/solutions/security/plugins/security_solution/public/*.config.ts', + '!/x-pack/solutions/security/plugins/security_solution/public/index.{js,ts,tsx}', + ], + + moduleNameMapper: require('../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/kubernetes/index.ts b/x-pack/solutions/security/plugins/security_solution/public/kubernetes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/kubernetes/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/kubernetes/index.ts diff --git a/x-pack/plugins/security_solution/public/kubernetes/links.ts b/x-pack/solutions/security/plugins/security_solution/public/kubernetes/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/kubernetes/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/kubernetes/links.ts diff --git a/x-pack/plugins/security_solution/public/kubernetes/pages/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/kubernetes/pages/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/constants.ts diff --git a/x-pack/plugins/security_solution/public/kubernetes/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/kubernetes/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/kubernetes/pages/utils/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/utils/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/kubernetes/pages/utils/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/utils/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/kubernetes/pages/utils/data_view_spec_to_index_pattern.ts b/x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/utils/data_view_spec_to_index_pattern.ts similarity index 100% rename from x-pack/plugins/security_solution/public/kubernetes/pages/utils/data_view_spec_to_index_pattern.ts rename to x-pack/solutions/security/plugins/security_solution/public/kubernetes/pages/utils/data_view_spec_to_index_pattern.ts diff --git a/x-pack/plugins/security_solution/public/kubernetes/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/kubernetes/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/kubernetes/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/kubernetes/routes.tsx diff --git a/x-pack/plugins/security_solution/public/lazy_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/lazy_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/lazy_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/lazy_actions.ts diff --git a/x-pack/plugins/security_solution/public/lazy_application_dependencies.tsx b/x-pack/solutions/security/plugins/security_solution/public/lazy_application_dependencies.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/lazy_application_dependencies.tsx rename to x-pack/solutions/security/plugins/security_solution/public/lazy_application_dependencies.tsx diff --git a/x-pack/plugins/security_solution/public/lazy_assistant_settings_management.tsx b/x-pack/solutions/security/plugins/security_solution/public/lazy_assistant_settings_management.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/lazy_assistant_settings_management.tsx rename to x-pack/solutions/security/plugins/security_solution/public/lazy_assistant_settings_management.tsx diff --git a/x-pack/plugins/security_solution/public/lazy_sub_plugins.tsx b/x-pack/solutions/security/plugins/security_solution/public/lazy_sub_plugins.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/lazy_sub_plugins.tsx rename to x-pack/solutions/security/plugins/security_solution/public/lazy_sub_plugins.tsx diff --git a/x-pack/plugins/security_solution/public/machine_learning/index.ts b/x-pack/solutions/security/plugins/security_solution/public/machine_learning/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/machine_learning/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/machine_learning/index.ts diff --git a/x-pack/plugins/security_solution/public/machine_learning/machine_learning.tsx b/x-pack/solutions/security/plugins/security_solution/public/machine_learning/machine_learning.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/machine_learning/machine_learning.tsx rename to x-pack/solutions/security/plugins/security_solution/public/machine_learning/machine_learning.tsx diff --git a/x-pack/plugins/security_solution/public/machine_learning/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/machine_learning/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/machine_learning/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/machine_learning/routes.tsx diff --git a/x-pack/plugins/security_solution/public/management/common/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution/public/management/common/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/constants.ts diff --git a/x-pack/plugins/security_solution/public/management/common/hooks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/hooks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/hooks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/hooks.ts diff --git a/x-pack/plugins/security_solution/public/management/common/routing.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/routing.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/routing.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/routing.ts diff --git a/x-pack/plugins/security_solution/public/management/common/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/common/url_routing/artifact_list_page_routing.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/url_routing/artifact_list_page_routing.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/url_routing/artifact_list_page_routing.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/url_routing/artifact_list_page_routing.test.ts diff --git a/x-pack/plugins/security_solution/public/management/common/url_routing/artifact_list_page_routing.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/url_routing/artifact_list_page_routing.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/url_routing/artifact_list_page_routing.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/url_routing/artifact_list_page_routing.ts diff --git a/x-pack/plugins/security_solution/public/management/common/url_routing/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/url_routing/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/url_routing/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/url_routing/index.ts diff --git a/x-pack/plugins/security_solution/public/management/common/url_routing/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/url_routing/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/url_routing/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/url_routing/utils.ts diff --git a/x-pack/plugins/security_solution/public/management/common/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/management/common/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/common/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/common/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/common/utils.ts diff --git a/x-pack/plugins/security_solution/public/management/components/actions_context_menu/actions_context_menu.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/actions_context_menu/actions_context_menu.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/actions_context_menu/actions_context_menu.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/actions_context_menu/actions_context_menu.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/actions_context_menu/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/actions_context_menu/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/actions_context_menu/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/actions_context_menu/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/administration_list_page.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/administration_list_page.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/administration_list_page.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/administration_list_page.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_card_grid/artifact_card_grid.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_card_grid/artifact_card_grid.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_card_grid/artifact_card_grid.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_card_grid/artifact_card_grid.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_card_grid/artifact_card_grid.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_card_grid/artifact_card_grid.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_card_grid/artifact_card_grid.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_card_grid/artifact_card_grid.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_card_grid/components/grid_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_card_grid/components/grid_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_card_grid/components/grid_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_card_grid/components/grid_header.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_card_grid/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_card_grid/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_card_grid/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_card_grid/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card_minified.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card_minified.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card_minified.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card_minified.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card_minified.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card_minified.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card_minified.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_card_minified.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_collapsible_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_collapsible_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_collapsible_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_collapsible_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_collapsible_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_collapsible_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_collapsible_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/artifact_entry_collapsible_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_actions_flex_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_actions_flex_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_actions_flex_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_actions_flex_item.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_comments.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_comments.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_comments.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_comments.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_compressed_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_compressed_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_compressed_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_compressed_header.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_container_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_container_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_container_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_container_panel.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_decorators/event_filters_process_descendant_indicator.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_decorators/event_filters_process_descendant_indicator.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_decorators/event_filters_process_descendant_indicator.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_decorators/event_filters_process_descendant_indicator.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_decorators/event_filters_process_descendant_indicator.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_decorators/event_filters_process_descendant_indicator.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_decorators/event_filters_process_descendant_indicator.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_decorators/event_filters_process_descendant_indicator.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_expand_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_expand_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_expand_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_expand_button.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_header.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_section_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_section_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_section_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_section_panel.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_sub_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_sub_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/card_sub_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/card_sub_header.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/criteria_conditions.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/criteria_conditions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/criteria_conditions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/criteria_conditions.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/date_field_value.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/date_field_value.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/date_field_value.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/date_field_value.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/description_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/description_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/description_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/description_field.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/effect_scope.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/effect_scope.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/effect_scope.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/effect_scope.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/text_value_display.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/text_value_display.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/text_value_display.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/text_value_display.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/touched_by_users.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/touched_by_users.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/touched_by_users.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/touched_by_users.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/components/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/components/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_collapsed_css_class_names.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_collapsed_css_class_names.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_collapsed_css_class_names.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_collapsed_css_class_names.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_endpoint_policies_to_artifact_policies.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_endpoint_policies_to_artifact_policies.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_endpoint_policies_to_artifact_policies.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_endpoint_policies_to_artifact_policies.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_normalized_artifact.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_normalized_artifact.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_normalized_artifact.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_normalized_artifact.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_policy_nav_links.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_policy_nav_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_policy_nav_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/hooks/use_policy_nav_links.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/test_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/test_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/test_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/test_utils.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/types.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/utils/get_formatted_comments.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/utils/get_formatted_comments.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/utils/get_formatted_comments.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/utils/get_formatted_comments.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/utils/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/utils/is_trusted_app.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/utils/is_trusted_app.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/utils/is_trusted_app.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/utils/is_trusted_app.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_entry_card/utils/map_to_artifact_info.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/utils/map_to_artifact_info.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_entry_card/utils/map_to_artifact_info.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_entry_card/utils/map_to_artifact_info.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/artifact_list_page.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/artifact_list_page.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/artifact_list_page.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/artifact_list_page.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_confirm_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_confirm_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_confirm_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_confirm_modal.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_delete_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_delete_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_delete_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_delete_modal.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx index 3fe20be2cbd64..8d801d5e07e3c 100644 --- a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx @@ -26,6 +26,9 @@ import { import type { EuiFlyoutSize } from '@elastic/eui/src/components/flyout/flyout'; import type { IHttpFetchError } from '@kbn/core-http-browser'; import { useIsMounted } from '@kbn/securitysolution-hook-utils'; +import { useLocation } from 'react-router-dom'; +import { useMarkInsightAsRemediated } from '../hooks/use_mark_workflow_insight_as_remediated'; +import type { WorkflowInsightRouteState } from '../../../pages/endpoint_hosts/types'; import { useUrlParams } from '../../../hooks/use_url_params'; import { useIsFlyoutOpened } from '../hooks/use_is_flyout_opened'; import { useTestIdGenerator } from '../../../hooks/use_test_id_generator'; @@ -197,6 +200,11 @@ export const ArtifactFlyout = memo( links: { securitySolution }, }, } = useKibana().services; + + const location = useLocation(); + const [sourceInsight, setSourceInsight] = useState<{ id: string; back_url: string } | null>( + null + ); const getTestId = useTestIdGenerator(dataTestSubj); const toasts = useToasts(); const isFlyoutOpened = useIsFlyoutOpened(); @@ -225,6 +233,10 @@ export const ArtifactFlyout = memo( error: internalSubmitError, } = useWithArtifactSubmitData(apiClient, formMode); + const { mutateAsync: markInsightAsRemediated } = useMarkInsightAsRemediated( + sourceInsight?.back_url + ); + const isSubmittingData = useMemo(() => { return submitHandler ? externalIsSubmittingData : internalIsSubmittingData; }, [externalIsSubmittingData, internalIsSubmittingData, submitHandler]); @@ -286,13 +298,23 @@ export const ArtifactFlyout = memo( ); const handleSuccess = useCallback( - (result: ExceptionListItemSchema) => { + async (result: ExceptionListItemSchema) => { toasts.addSuccess( isEditFlow ? labels.flyoutEditSubmitSuccess(result) : labels.flyoutCreateSubmitSuccess(result) ); + // Check if this artifact creation was opened from an endpoint insight + try { + if (sourceInsight?.id) { + await markInsightAsRemediated({ insightId: sourceInsight.id }); + return; + } + } catch { + setSourceInsight(null); + } + if (isMounted()) { // Close the flyout // `undefined` will cause params to be dropped from url @@ -301,7 +323,17 @@ export const ArtifactFlyout = memo( onSuccess(); } }, - [isEditFlow, isMounted, labels, onSuccess, setUrlParams, toasts, urlParams] + [ + isEditFlow, + isMounted, + labels, + markInsightAsRemediated, + onSuccess, + setUrlParams, + sourceInsight, + toasts, + urlParams, + ] ); const handleSubmitClick = useCallback(() => { @@ -357,6 +389,19 @@ export const ArtifactFlyout = memo( } }, [formState, confirmModalOnSuccess]); + // If this form was opened from an endpoint insight, prepopulate the form with the insight data + useEffect(() => { + if (location.state?.insight?.id && location.state?.insight?.item) { + setSourceInsight({ + id: location.state.insight.id, + back_url: location.state.insight.back_url, + }); + setFormState({ isValid: true, item: location.state.insight.item }); + + location.state.insight = undefined; + } + }, [apiClient.listId, location.state, location.state?.insight]); + // If we don't have the actual Artifact data yet for edit (in initialization phase - ex. came in with an // ID in the url that was not in the list), then retrieve it now useEffect(() => { diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/integration_tests/artifact_delete_modal.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/integration_tests/artifact_delete_modal.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/integration_tests/artifact_delete_modal.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/integration_tests/artifact_delete_modal.test.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/no_data_empty_state.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/no_data_empty_state.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/no_data_empty_state.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/no_data_empty_state.test.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/no_data_empty_state.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/no_data_empty_state.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/no_data_empty_state.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/no_data_empty_state.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_artifact_card_props_provider.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_artifact_card_props_provider.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_artifact_card_props_provider.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_artifact_card_props_provider.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_is_artifact_allowed_per_policy_usage.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_is_artifact_allowed_per_policy_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_is_artifact_allowed_per_policy_usage.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_is_artifact_allowed_per_policy_usage.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_is_flyout_opened.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_is_flyout_opened.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_is_flyout_opened.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_is_flyout_opened.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_kuery_from_exceptions_search_filter.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_kuery_from_exceptions_search_filter.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_kuery_from_exceptions_search_filter.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_kuery_from_exceptions_search_filter.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_mark_workflow_insight_as_remediated.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_mark_workflow_insight_as_remediated.ts new file mode 100644 index 0000000000000..9e53b8df055b5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_mark_workflow_insight_as_remediated.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMutation } from '@tanstack/react-query'; +import { WORKFLOW_INSIGHTS } from '../../../pages/endpoint_hosts/view/translations'; +import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; +import { ActionType } from '../../../../../common/endpoint/types/workflow_insights'; +import { resolvePathVariables } from '../../../../common/utils/resolve_path_variables'; +import { WORKFLOW_INSIGHTS_UPDATE_ROUTE } from '../../../../../common/endpoint/constants'; +import { useKibana, useToasts } from '../../../../common/lib/kibana'; + +export const useMarkInsightAsRemediated = (backUrl?: string) => { + const toasts = useToasts(); + const { + application: { navigateToUrl }, + http, + } = useKibana().services; + return useMutation( + ({ insightId }: { insightId: string }) => + http.put( + resolvePathVariables(WORKFLOW_INSIGHTS_UPDATE_ROUTE, { insightId }), + { + version: '1', + body: JSON.stringify({ + action: { + type: ActionType.Remediated, + }, + }), + } + ), + { + onError: (err) => { + toasts.addDanger({ + title: WORKFLOW_INSIGHTS.toasts.updateInsightError, + text: err?.message, + }); + }, + onSuccess: () => { + if (backUrl) return navigateToUrl(backUrl); + }, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_set_url_params.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_set_url_params.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_set_url_params.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_set_url_params.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_delete_item.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_delete_item.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_delete_item.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_delete_item.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_list_data.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_list_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_list_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_list_data.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_submit_data.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_submit_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_submit_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_with_artifact_submit_data.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/integration_tests/artifact_list_page.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/integration_tests/artifact_list_page.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/integration_tests/artifact_list_page.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/integration_tests/artifact_list_page.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/mocks.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/mocks.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/mocks.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/mocks.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/artifact_list_page/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/types.ts diff --git a/x-pack/plugins/security_solution/public/management/components/back_to_external_app_button/back_to_external_app_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/back_to_external_app_button/back_to_external_app_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/back_to_external_app_button/back_to_external_app_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/back_to_external_app_button/back_to_external_app_button.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/back_to_external_app_button/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/back_to_external_app_button/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/back_to_external_app_button/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/back_to_external_app_button/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/back_to_external_app_secondary_button/back_to_external_app_secondary_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/back_to_external_app_secondary_button/back_to_external_app_secondary_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/back_to_external_app_secondary_button/back_to_external_app_secondary_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/back_to_external_app_secondary_button/back_to_external_app_secondary_button.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/back_to_external_app_secondary_button/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/back_to_external_app_secondary_button/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/back_to_external_app_secondary_button/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/back_to_external_app_secondary_button/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/README.md b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/README.md similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/README.md rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/README.md diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/bad_argument.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/bad_argument.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/bad_argument.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/bad_argument.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/bad_argument.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/bad_argument.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/bad_argument.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/bad_argument.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/builtin_commands/clear_command.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/builtin_commands/clear_command.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/builtin_commands/clear_command.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/builtin_commands/clear_command.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/builtin_commands/help_command.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/builtin_commands/help_command.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/builtin_commands/help_command.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/builtin_commands/help_command.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/builtin_commands/help_command_argument.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/builtin_commands/help_command_argument.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/builtin_commands/help_command_argument.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/builtin_commands/help_command_argument.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_execution_output.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_execution_output.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_execution_output.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_execution_output.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_execution_output.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_execution_output.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_execution_output.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_execution_output.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_execution_result.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_execution_result.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_execution_result.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_execution_result.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/argument_selector_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/argument_selector_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/argument_selector_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/argument_selector_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/command_input_clear_history.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/command_input_clear_history.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/command_input_clear_history.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/command_input_clear_history.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/command_input_history.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/command_input_history.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/command_input_history.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/command_input_history.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/input_area_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/input_area_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/input_area_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/input_area_popover.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/input_capture.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/input_capture.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/input_capture.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/input_capture.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/input_display.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/input_display.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/input_display.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/input_display.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/input_placeholder.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/input_placeholder.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/components/input_placeholder.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/components/input_placeholder.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/hooks/use_input_hints.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/hooks/use_input_hints.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/hooks/use_input_hints.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/hooks/use_input_hints.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/integration_tests/command_input.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/integration_tests/command_input.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/integration_tests/command_input.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/integration_tests/command_input.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/lib/entered_input.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/lib/entered_input.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/lib/entered_input.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/lib/entered_input.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/lib/entered_input.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/lib/entered_input.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_input/lib/entered_input.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_input/lib/entered_input.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_list.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_usage.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_usage.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/command_usage.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/command_usage.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_code_block.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_code_block.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_code_block.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_code_block.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_footer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_footer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_footer.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_header.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_header.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_header.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_header.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_manager/components/console_page_overlay.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/components/console_page_overlay.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_manager/components/console_page_overlay.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/components/console_page_overlay.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_manager/components/page_layout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/components/page_layout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_manager/components/page_layout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/components/page_layout.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_manager/console_manager.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/console_manager.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_manager/console_manager.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/console_manager.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_manager/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_manager/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_manager/integration_tests/console_manager.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/integration_tests/console_manager.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_manager/integration_tests/console_manager.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/integration_tests/console_manager.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_manager/mocks.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/mocks.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_manager/mocks.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/mocks.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_manager/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_manager/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_manager/types.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/console_state.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/console_state.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/console_state.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/console_state.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/hooks/use_stored_input_history.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/hooks/use_stored_input_history.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/hooks/use_stored_input_history.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/hooks/use_stored_input_history.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_reducer.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_input_area_state.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_input_area_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_input_area_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_input_area_state.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_side_panel.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_side_panel.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_side_panel.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_side_panel.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_update_command_state.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_update_command_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_update_command_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_update_command_state.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/translations.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_state/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_state/types.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_text.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_text.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/console_text.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/console_text.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/help_output.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/help_output.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/help_output.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/help_output.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/history_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/history_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/history_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/history_item.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/history_output.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/history_output.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/history_output.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/history_output.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/long_running_command_hint.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/long_running_command_hint.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/long_running_command_hint.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/long_running_command_hint.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_layout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_layout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_layout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_layout.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_flex_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_flex_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_flex_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_flex_item.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/unknown_comand.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/unknown_comand.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/unknown_comand.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/unknown_comand.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/unsupported_message_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/unsupported_message_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/unsupported_message_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/unsupported_message_callout.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/user_command_input.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/user_command_input.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/user_command_input.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/user_command_input.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/validation_error.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/validation_error.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/validation_error.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/validation_error.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/validation_error.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/validation_error.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/components/validation_error.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/components/validation_error.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/console.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/console.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/console.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/console.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/console.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/console.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/console.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/console.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_command_history.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_command_history.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_command_history.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_command_history.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_console_state_dispatch.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_console_state_dispatch.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_console_state_dispatch.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_console_state_dispatch.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_data_test_subj.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_data_test_subj.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_data_test_subj.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_data_test_subj.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_command_argument_state.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_command_argument_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_command_argument_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_command_argument_state.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_command_list.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_command_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_command_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_command_list.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_custom_help_component.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_custom_help_component.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_custom_help_component.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_custom_help_component.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_footer_content.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_footer_content.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_footer_content.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_footer_content.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_command_entered.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_command_entered.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_command_entered.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_command_entered.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_history.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_history.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_history.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_history.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_placeholder.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_placeholder.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_placeholder.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_placeholder.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_show_popover.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_show_popover.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_show_popover.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_show_popover.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_text_entered.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_text_entered.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_text_entered.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_text_entered.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_visible_state.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_visible_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_visible_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_input_visible_state.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_side_panel.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_side_panel.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_side_panel.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/state_selectors/use_with_side_panel.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/hooks/use_storage_key.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/use_storage_key.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/hooks/use_storage_key.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/hooks/use_storage_key.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/mocks.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/mocks.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/mocks.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/mocks.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/service/builtin_commands.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/builtin_commands.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/service/builtin_commands.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/builtin_commands.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console/service/parse_command_input.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/parse_command_input.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/service/parse_command_input.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/parse_command_input.test.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/service/parsed_command_input.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/parsed_command_input.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/service/parsed_command_input.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/parsed_command_input.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/service/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/service/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/types.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/service/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/service/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/service/utils.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console/types.ts diff --git a/x-pack/plugins/security_solution/public/management/components/console_argument_selectors/file_selector.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/console_argument_selectors/file_selector.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console_argument_selectors/file_selector.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console_argument_selectors/file_selector.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/console_argument_selectors/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/console_argument_selectors/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/console_argument_selectors/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/console_argument_selectors/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_item_nav_by_router.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_item_nav_by_router.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_item_nav_by_router.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_item_nav_by_router.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_with_router_support.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_with_router_support.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_with_router_support.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_with_router_support.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_with_router_support.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_with_router_support.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_with_router_support.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/context_menu_with_router_support/context_menu_with_router_support.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/context_menu_with_router_support/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/context_menu_with_router_support/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/context_menu_with_router_support/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/context_menu_with_router_support/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/effected_policy_select/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/effected_policy_select/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/effected_policy_select/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/test_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/effected_policy_select/test_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/effected_policy_select/test_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/effected_policy_select/test_utils.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_action_failure_message/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_action_failure_message/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response_output.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response_output.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response_output.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response_output.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_execute_action/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_execute_action/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_policy_link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_policy_link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_policy_link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_policy_link.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_policy_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_policy_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_policy_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_policy_link.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/execute_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/execute_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/execute_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/execute_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/get_file_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/get_file_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/get_file_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/get_file_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/get_processes_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/get_processes_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/get_processes_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/get_processes_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/execute_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/execute_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/execute_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/execute_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/get_file_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/get_file_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/get_file_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/get_file_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/get_processes_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/get_processes_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/get_processes_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/get_processes_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/isolate_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/isolate_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/isolate_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/isolate_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/kill_process_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/kill_process_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/kill_process_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/kill_process_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/release_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/release_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/release_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/release_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/scan_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/scan_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/scan_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/scan_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/status_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/status_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/status_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/status_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/suspend_process_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/suspend_process_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/suspend_process_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/suspend_process_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/upload_action.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/upload_action.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/upload_action.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/upload_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/isolate_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/isolate_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/isolate_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/isolate_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/kill_process_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/kill_process_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/kill_process_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/kill_process_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/release_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/release_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/release_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/release_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/scan_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/scan_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/scan_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/scan_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/status_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/status_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/status_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/status_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/suspend_process_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/suspend_process_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/suspend_process_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/suspend_process_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/upload_action.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/upload_action.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/upload_action.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/upload_action.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_error.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/action_error.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_error.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/action_error.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_log_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/action_log_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_log_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/action_log_button.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_success.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/action_success.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_success.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/action_success.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/agent_info/agent_info.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/agent_info/agent_info.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/agent_info/agent_info.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/agent_info/agent_info.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/agent_info/agent_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/agent_info/agent_info.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/agent_info/agent_info.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/agent_info/agent_info.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/endpoint/header_endpoint_info.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/endpoint/header_endpoint_info.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/endpoint/header_endpoint_info.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/endpoint/header_endpoint_info.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/endpoint/header_endpoint_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/endpoint/header_endpoint_info.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/endpoint/header_endpoint_info.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/endpoint/header_endpoint_info.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/header_agent_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/header_agent_info.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/header_agent_info.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/header_agent_info.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/linux.svg b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/linux.svg similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/linux.svg rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/linux.svg diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/macos.svg b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/macos.svg similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/macos.svg rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/macos.svg diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/windows.svg b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/windows.svg similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/windows.svg rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/logos/windows.svg diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/platform_icon.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/platform_icon.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/platform_icon.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/platform_icon.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/platform_icon.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/platform_icon.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/platform_icon.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/header_info/platforms/platform_icon.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/offline_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/offline_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/offline_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/offline_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/offline_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/offline_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/offline_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/components/offline_callout.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/console_commands_definition.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/console_commands_definition.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/console_commands_definition.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/console_commands_definition.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/constants.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/constants.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/constants.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/constants.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/endpoint_action_response_codes.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/endpoint_action_response_codes.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/endpoint_action_response_codes.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/endpoint_action_response_codes.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/get_command_about_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/get_command_about_info.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/get_command_about_info.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/get_command_about_info.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/integration_tests/console_commands_definition.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/integration_tests/console_commands_definition.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/integration_tests/console_commands_definition.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/integration_tests/console_commands_definition.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/lib/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/lib/utils.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_responder/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_responder/types.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_date_range_picker.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_date_range_picker.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_date_range_picker.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_date_range_picker.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_empty_state.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_empty_state.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_empty_state.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_empty_state.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filter_popover.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filters.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filters.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filters.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_filters.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_table.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_users_filter.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_users_filter.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_users_filter.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_users_filter.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_users_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_users_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_users_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/actions_log_users_filter.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/clear_all_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/clear_all_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/clear_all_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/clear_all_button.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/hooks.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/hooks.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/hooks.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/hooks.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/response_action_status_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/response_action_status_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/response_action_status_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/response_action_status_badge.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/use_action_history_url_params.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/use_action_history_url_params.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/use_action_history_url_params.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/use_action_history_url_params.test.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/use_action_history_url_params.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/use_action_history_url_params.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/use_action_history_url_params.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/use_action_history_url_params.ts diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/integration_tests/response_actions_log.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/integration_tests/response_actions_log.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/integration_tests/response_actions_log.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/integration_tests/response_actions_log.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/mocks.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/mocks.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/mocks.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/mocks.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/response_actions_log.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/response_actions_log.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/response_actions_log.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/response_actions_log.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_upload_action_result/endpoint_upload_action_result.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_upload_action_result/endpoint_upload_action_result.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_upload_action_result/endpoint_upload_action_result.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_upload_action_result/endpoint_upload_action_result.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_upload_action_result/endpoint_upload_action_result.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_upload_action_result/endpoint_upload_action_result.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_upload_action_result/endpoint_upload_action_result.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_upload_action_result/endpoint_upload_action_result.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_upload_action_result/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_upload_action_result/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/endpoint_upload_action_result/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/endpoint_upload_action_result/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/formatted_error/formatted_error.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/formatted_error/formatted_error.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/formatted_error/formatted_error.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/formatted_error/formatted_error.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/formatted_error/formatted_error.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/formatted_error/formatted_error.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/formatted_error/formatted_error.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/formatted_error/formatted_error.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/formatted_error/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/formatted_error/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/formatted_error/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/formatted_error/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/key_value_display/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/key_value_display/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/key_value_display/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/key_value_display/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/key_value_display/key_value_display.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/key_value_display/key_value_display.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/key_value_display/key_value_display.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/key_value_display/key_value_display.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/management_empty_state.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/management_empty_state.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/management_empty_state.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/management_empty_state.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/management_empty_state_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/management_empty_state_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/management_empty_state_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/management_empty_state_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/management_page_loader.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/management_page_loader.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/management_page_loader.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/management_page_loader.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/missing_encryption_key_callout/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/missing_encryption_key_callout/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/missing_encryption_key_callout/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/missing_encryption_key_callout/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/missing_encryption_key_callout/missing_encryption_key_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/missing_encryption_key_callout/missing_encryption_key_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/missing_encryption_key_callout/missing_encryption_key_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/missing_encryption_key_callout/missing_encryption_key_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/missing_encryption_key_callout/missing_encryption_key_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/missing_encryption_key_callout/missing_encryption_key_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/missing_encryption_key_callout/missing_encryption_key_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/missing_encryption_key_callout/missing_encryption_key_callout.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/package_action_item/package_action.formatter.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/package_action_item/package_action.formatter.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/package_action_item/package_action.formatter.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/package_action_item/package_action.formatter.test.ts diff --git a/x-pack/plugins/security_solution/public/management/components/package_action_item/package_action_formatter.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/package_action_item/package_action_formatter.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/package_action_item/package_action_formatter.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/package_action_item/package_action_formatter.ts diff --git a/x-pack/plugins/security_solution/public/management/components/package_action_item/package_action_item_error.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/package_action_item/package_action_item_error.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/package_action_item/package_action_item_error.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/package_action_item/package_action_item_error.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/page_overlay/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/page_overlay/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/page_overlay/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/page_overlay/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/page_overlay/page_overlay.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/page_overlay/page_overlay.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/page_overlay/page_overlay.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/page_overlay/page_overlay.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/page_overlay/page_overlay.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/page_overlay/page_overlay.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/page_overlay/page_overlay.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/page_overlay/page_overlay.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/paginated_content/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/paginated_content/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/paginated_content/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/paginated_content/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/paginated_content/paginated_content.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/paginated_content/paginated_content.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/paginated_content/paginated_content.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/paginated_content/paginated_content.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/paginated_content/paginated_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/paginated_content/paginated_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/paginated_content/paginated_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/paginated_content/paginated_content.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/policies_selector/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/policies_selector/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policies_selector/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policies_selector/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/policies_selector/policies_selector.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/policies_selector/policies_selector.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policies_selector/policies_selector.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policies_selector/policies_selector.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/policies_selector/policies_selector.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/policies_selector/policies_selector.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policies_selector/policies_selector.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policies_selector/policies_selector.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policy_response/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/integration_tests/policy_response_wrapper.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/integration_tests/policy_response_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policy_response/integration_tests/policy_response_wrapper.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/integration_tests/policy_response_wrapper.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policy_response/policy_response.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_action_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response_action_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_action_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response_action_item.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_artifact_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response_artifact_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_artifact_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response_artifact_item.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_friendly_names.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response_friendly_names.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_friendly_names.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response_friendly_names.ts diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/policy_response/policy_response_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/privileged_route/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/privileged_route/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/privileged_route/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/privileged_route/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/privileged_route/privileged_route.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/privileged_route/privileged_route.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/privileged_route/privileged_route.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/privileged_route/privileged_route.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/privileged_route/privileged_route.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/privileged_route/privileged_route.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/privileged_route/privileged_route.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/privileged_route/privileged_route.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/response_action_file_download_link/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/response_action_file_download_link/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/response_action_file_download_link/response_action_file_download_link.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/running_processes_action_results/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/running_processes_action_results/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/running_processes_action_results/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/running_processes_action_results/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/running_processes_action_results/running_processes_action_results.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/running_processes_action_results/running_processes_action_results.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/running_processes_action_results/running_processes_action_results.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/running_processes_action_results/running_processes_action_results.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/running_processes_action_results/running_processes_action_results.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/running_processes_action_results/running_processes_action_results.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/running_processes_action_results/running_processes_action_results.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/running_processes_action_results/running_processes_action_results.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/search_exceptions/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/components/search_exceptions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/search_exceptions/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/components/search_exceptions/index.ts diff --git a/x-pack/plugins/security_solution/public/management/components/search_exceptions/search_exceptions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/search_exceptions/search_exceptions.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/search_exceptions/search_exceptions.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/search_exceptions/search_exceptions.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/components/search_exceptions/search_exceptions.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/components/search_exceptions/search_exceptions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/components/search_exceptions/search_exceptions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/components/search_exceptions/search_exceptions.tsx diff --git a/x-pack/plugins/security_solution/public/management/cypress/.eslintrc.json b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/.eslintrc.json similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/.eslintrc.json rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/.eslintrc.json diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/cypress/README.md b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/README.md new file mode 100644 index 0000000000000..f6bac6d11618a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/README.md @@ -0,0 +1,202 @@ +# Cypress Tests + +The `solutions/security/plugins/security_solution/public/management/cypress` directory contains functional UI tests that execute +using [Cypress](https://www.cypress.io/). + +## Pre-requisites + +Good to have before you run the tests: + +- Docker CLI, as Docker desktop doesn't install it by default. Install using `brew`: + +```shell +brew install docker +``` + +- [Multipass](https://multipass.run/) for running the tests against real endpoint. Install using `brew`: + +```shell +brew install multipass +``` + +If you also want to run the tests against real endpoints as on the CI pipeline, then you need to have the following: + +- [Vagrant](https://developer.hashicorp.com/vagrant/docs/installation) +- [Vagrant provider for VMware](https://developer.hashicorp.com/vagrant/docs/providers/vmware/installation) +- [Vagrant VMware Utility](https://developer.hashicorp.com/vagrant/docs/providers/vmware/vagrant-vmware-utility) +- [VMware Fusion](https://www.vmware.com/products/fusion/fusion-evaluation.html) + +See [running interactive tests on real endpoint with vagrant](#cypress-interactive-with-real-endpoints-using-vagrant) +for more information. + +## Adding new tests - tagging for ESS vs Serverless + +Similarly to Security Solution cypress tests, we use tags in order to select which tests we want to execute on which environment: + +- `@serverless` includes a test in the Serverless test suite. You need to explicitly add this tag to any test you want to run against a Serverless environment. +- `@serverlessQA` includes a test in the Serverless test suite for the Kibana release process of serverless. You need to explicitly add this tag to any test you want you run in CI for the Kibana QA quality gate. These tests should be stable, otherwise they will be blocking the release pipeline. They should be also critical enough, so that when they fail, there's a high chance of an SDH or blocker issue to be reported. +- `@ess` includes a test in the normal, non-Serverless test suite. You need to explicitly add this tag to any test you want to run against a non-Serverless environment. +- `@brokenInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Indicates that a test should run in Serverless, but currently is broken. +- `@skipInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Indicates that we don't want to run the given test in Serverless. +- `@skipInServerlessMKI` excludes a test from any MKI environment, but it will continue being executed as part of the PR process if the `@serverless` tag is present. + +Important: if you don't provide any tag, your test won't be executed. + +## Running the tests + +There are currently three ways to run the tests, comprised of two execution modes and two target environments, which +will be detailed below. + +### Environment Variables + +The test suites are set up with defaults for Kibana and Elasticsearch. The following environment variables can be set to +changes those defaults and target a run against different instances of the stack: + +``` +CYPRESS_KIBANA_URL +CYPRESS_KIBANA_USERNAME +CYPRESS_KIBANA_PASSWORD +CYPRESS_ELASTICSEARCH_URL +CYPRESS_ELASTICSEARCH_USERNAME +CYPRESS_ELASTICSEARCH_PASSWORD +CYPRESS_BASE_URL +``` + +Some notes: + +- The `ELASTICSEARCH_USERNAME` and `ELASTICSEARCH_PASSWORD` should have sufficient privileges to CRUD on restricted indices. +- Both URL variables should **NOT** include credentials in the url +- `KIBANA_URL` and `BASE_URL` will almost always be the same + +Example: + +```shell +yarn --cwd x-pack/solutions/security/plugins/security_solution +CYPRESS_BASE_URL=http://localhost:5601 \ +CYPRESS_KIBANA_URL=http://localhost:5601 \ +CYPRESS_KIBANA_USERNAME=elastic \ +CYPRESS_KIBANA_PASSWORD=changeme \ +CYPRESS_ELASTICSEARCH_USERNAME=system_indices_superuser \ +CYPRESS_ELASTICSEARCH_PASSWORD=changeme \ +CYPRESS_ELASTICSEARCH_URL=http://localhost:9200 cypress:dw:open +``` + +### Execution modes + +#### Interactive mode + +When you run Cypress in interactive mode, an interactive runner is displayed that allows you to see commands as they +execute while also viewing the application under test. For more information, please +see [cypress documentation](https://docs.cypress.io/guides/core-concepts/test-runner.html#Overview). + +#### Headless mode + +A headless browser is a browser simulation program that does not have a user interface. These programs operate like any +other browser but do not display any UI. So when you are executing the tests on this mode you are not +going to see the application under test. Just the output of the test is displayed on the terminal once the execution is +finished. + +### Target environments + +#### FTR (CI) + +This is the configuration used by CI. It uses the FTR to spawn both a Kibana instance (http://localhost:5620) and an +Elasticsearch instance (http://localhost:9220) with a preloaded minimum set of data (see preceding "Test data" section), +and then executes cypress against this stack. You can find this configuration in `x-pack/test/defend_workflows_cypress` + +### Test Execution: Examples + +#### Cypress + Headless (Chrome) + +Since this is how tests are run on CI, this will likely be the configuration you want to use in order to reproduce +failures locally, etc. + +```shell +# bootstrap kibana from the project root and build the plugins/assets that cypress will execute against +yarn kbn bootstrap && node scripts/build_kibana_platform_plugins + +# launch the cypress test runner against ESS +yarn --cwd x-pack/solutions/security/plugins/security_solution cypress:dw:run + +# or against Serverless +yarn --cwd x-pack/solutions/security/plugins/security_solution cypress:dw:serverless:run +``` + +#### Cypress + +This is the preferred mode for developing new tests against mocked data + +```shell +# bootstrap kibana from the project root and build the plugins/assets that cypress will execute against +yarn kbn bootstrap && node scripts/build_kibana_platform_plugins + +# launch the cypress test runner against ESS +yarn --cwd x-pack/solutions/security/plugins/security_solution cypress:dw:open + +# or against Serverless +yarn --cwd x-pack/solutions/security/plugins/security_solution cypress:dw:serverless:open +``` + +## Folder Structure + +### e2e/ + +Contains all the tests. Within it are two sub-folders: + +### integration/ + +Cypress convention. Contains the specs that are going to be executed. + +### fixtures/ + +Cypress convention. Fixtures are used as external pieces of static data when we stub responses. + +### support/ + +Cypress convention. As a convenience, by default Cypress will automatically include the plugins file +cypress/plugins/index.js before every single spec file it runs. +Directory also holds Cypress Plugins that are then initialized via `setupNodeEvents()` in the Cypress configuration. + +### screens/ + +Contains the elements we want to interact with within our tests. +Each file inside the screens folder represents a screen in our application. + +### tasks/ + +_Tasks_ are functions that may be reused across tests. + +Each file inside the tasks folder represents a screen of our application. + +## Test data + +The data the tests need: + +- Is generated on the fly using our application APIs (preferred way) + +## Development Best Practices + +### Clean up the state + +Remember to clean up the state of the test after its execution. Be mindful of failure scenarios, as well: if your test +fails, will it leave the environment in a recoverable state? + +### Minimize the use of es_archive + +When possible, create all the data that you need for executing the tests using the application APIS or the UI. + +### Speed up test execution time + +Loading the web page takes a big amount of time, in order to minimize that impact, the following points should be +taken into consideration until another solution is implemented: + +- Group the tests that are similar in different contexts. +- For every context login only once, and clean the state between tests if needed without reloading the page. +- All tests in a spec file must be order-independent. + +Remember that by minimizing the number of times the web page is loaded, we minimize the execution time as well. + +## Linting + +Optional linting rules for Cypress and linting setup can be +found [here](https://github.com/cypress-io/eslint-plugin-cypress#usage) diff --git a/x-pack/plugins/security_solution/public/management/cypress/common/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/common/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/common/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/common/constants.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/cypress.config.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress.config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/cypress.config.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress.config.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress.d.ts similarity index 96% rename from x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress.d.ts index eb42649827908..f5bb7071d859f 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress.d.ts @@ -11,6 +11,7 @@ import type { CasePostRequest } from '@kbn/cases-plugin/common/api'; import type { UsageRecord } from '@kbn/security-solution-serverless/server/types'; +import type { HostVmTransferResponse } from '../../../scripts/endpoint/common/types'; import type { DeletedEndpointHeartbeats, IndexedEndpointHeartbeats, @@ -30,6 +31,7 @@ import type { UninstallAgentFromHostTaskOptions, IsAgentAndEndpointUninstalledFromHostTaskOptions, LogItTaskOptions, + CaptureHostVmAgentDiagnosticsOptions, } from './types'; import type { DeleteIndexedFleetEndpointPoliciesResponse, @@ -267,6 +269,12 @@ declare global { arg: LogItTaskOptions, options?: Partial ): Chainable; + + task( + name: 'captureHostVmAgentDiagnostics', + arg: CaptureHostVmAgentDiagnosticsOptions, + options?: Partial + ): Chainable>; } } } diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress_base.config.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress_base.config.ts new file mode 100644 index 0000000000000..0b64db4c29801 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress_base.config.ts @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// @ts-expect-error +import registerDataSession from 'cypress-data-session/src/plugin'; +import { merge } from 'lodash'; + +import { transparentApiProxy } from './support/transparent_api_proxy'; +import { samlAuthentication } from './support/saml_authentication'; +import { getVideosForFailedSpecs } from './support/filter_videos'; +import { setupToolingLogLevel } from './support/setup_tooling_log_level'; +import { createToolingLogger } from '../../../common/endpoint/data_loaders/utils'; +import { dataLoaders, dataLoadersForRealEndpoints } from './support/data_loaders'; +import { responseActionTasks } from './support/response_actions'; +import { agentActions } from './support/agent_actions'; +import { usageTracker } from '../../../common/endpoint/data_loaders/usage_tracker'; + +export const getCypressBaseConfig = ( + overrides: Cypress.ConfigOptions = {} +): Cypress.ConfigOptions => { + return merge( + { + reporter: '../../../../../../node_modules/cypress-multi-reporters', + reporterOptions: { + configFile: './public/management/reporter_config.json', + }, + + chromeWebSecurity: false, + defaultCommandTimeout: 60000, + execTimeout: 120000, + pageLoadTimeout: 12000, + + retries: { + runMode: 1, + openMode: 0, + }, + + screenshotsFolder: + '../../../target/kibana-security-solution/public/management/cypress/screenshots', + trashAssetsBeforeRuns: false, + video: true, + videoCompression: 15, + videosFolder: '../../../target/kibana-security-solution/public/management/cypress/videos', + viewportHeight: 1200, + viewportWidth: 1920, + experimentalStudio: true, + + env: { + KIBANA_URL: 'http://localhost:5601', + ELASTICSEARCH_URL: 'http://localhost:9200', + FLEET_SERVER_URL: 'https://localhost:8220', + KIBANA_USERNAME: 'system_indices_superuser', + KIBANA_PASSWORD: 'changeme', + ELASTICSEARCH_USERNAME: 'system_indices_superuser', + ELASTICSEARCH_PASSWORD: 'changeme', + + // Default log level for instance of `ToolingLog` created via `crateToolingLog()`. Set this + // to `debug` or `verbose` when wanting to debug tooling used by tests (ex. data indexer functions). + TOOLING_LOG_LEVEL: 'info', + + // Variable works in conjunction with the Cypress parallel runner. When set to true, fleet server + // will be setup right after the Kibana stack, so that by the time cypress tests `.run()`/`.open()`, + // the env. will be all setup and we don't have to explicitly setup fleet from a test file + WITH_FLEET_SERVER: true, + + // grep related configs + grepFilterSpecs: true, + grepOmitFiltered: true, + IS_CI: process.env.CI, + }, + + e2e: { + // baseUrl: To override, set Env. variable `CYPRESS_BASE_URL` + baseUrl: 'http://localhost:5601', + supportFile: 'public/management/cypress/support/e2e.ts', + specPattern: 'public/management/cypress/e2e/**/*.cy.{js,jsx,ts,tsx}', + experimentalRunAllSpecs: true, + experimentalMemoryManagement: true, + experimentalInteractiveRunEvents: true, + setupNodeEvents: (on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions) => { + on('before:browser:launch', (browser, launchOptions) => { + if (browser.name === 'chrome' && browser.isHeadless) { + launchOptions.args.push('--window-size=1920,1200'); + return launchOptions; + } + if (browser.family === 'chromium') { + launchOptions.args.push( + '--js-flags="--max_old_space_size=4096 --max_semi_space_size=1024"' + ); + } + return launchOptions; + }); + registerDataSession(on, config); + // IMPORTANT: setting the log level should happen before any tooling is called + setupToolingLogLevel(config); + samlAuthentication(on, config); + + dataLoaders(on, config); + + transparentApiProxy(on, config); + + // Data loaders specific to "real" Endpoint testing + dataLoadersForRealEndpoints(on, config); + + agentActions(on); + + responseActionTasks(on, config); + + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('@cypress/grep/src/plugin')(config); + + on('after:spec', (_, results) => { + getVideosForFailedSpecs(results); + createToolingLogger().info( + 'Tooling Usage Tracking summary:\n', + usageTracker.toSummaryTable() + ); + }); + + return config; + }, + }, + }, + overrides + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/cypress/cypress_serverless.config.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress_serverless.config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/cypress_serverless.config.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress_serverless.config.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/cypress_serverless_qa.config.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress_serverless_qa.config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/cypress_serverless_qa.config.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/cypress_serverless_qa.config.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/blocklist.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/blocklist.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/blocklist.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/blocklist.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/event_filters.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/event_filters.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/event_filters.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/event_filters.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/trusted_apps.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/trusted_apps.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/trusted_apps.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/artifacts/trusted_apps.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/form.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/form.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/form.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/form.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/history_log.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/history_log.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/history_log.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/history_log.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/no_license.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/no_license.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/no_license.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/no_license.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/results.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/results.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/results.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/results.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_alerts.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_alerts.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_alerts.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_alerts.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints_mocked_data.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints_mocked_data.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints_mocked_data.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints_mocked_data.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints_rbac_mocked_data.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints_rbac_mocked_data.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints_rbac_mocked_data.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints_rbac_mocked_data.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/policy_response.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_list/policy_response.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/policy_response.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/endpoint_list/policy_response.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details_mocked_data.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/policy/policy_details_mocked_data.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details_mocked_data.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/policy/policy_details_mocked_data.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_experimental_features_disabled.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/policy/policy_experimental_features_disabled.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_experimental_features_disabled.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/policy/policy_experimental_features_disabled.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_list.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/policy/policy_list.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_list.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/policy/policy_list.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/rbac/endpoint_role_rbac.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/rbac/endpoint_role_rbac.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/rbac/endpoint_role_rbac.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/rbac/endpoint_role_rbac.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/rbac/endpoint_role_rbac_with_space_awareness.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/rbac/endpoint_role_rbac_with_space_awareness.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/rbac/endpoint_role_rbac_with_space_awareness.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/rbac/endpoint_role_rbac_with_space_awareness.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/alerts_response_console.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/alerts_response_console.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/alerts_response_console.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/alerts_response_console.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/document_signing.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/document_signing.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/document_signing.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/document_signing.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/endpoints_list_response_console.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/endpoints_list_response_console.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/endpoints_list_response_console.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/endpoints_list_response_console.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/isolate.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/isolate.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/isolate.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/isolate.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/isolate_mocked_data.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/isolate_mocked_data.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/isolate_mocked_data.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/isolate_mocked_data.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/responder.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/responder.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/responder.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/responder.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_actions_history.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_actions_history.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_actions_history.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_actions_history.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/execute.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/execute.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/execute.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/execute.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts similarity index 94% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts index ef252cbce01aa..5fbb9118370e8 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts @@ -66,6 +66,15 @@ describe('Response console', { tags: ['@ess', '@serverless'] }, () => { } }); + afterEach(function () { + if (Cypress.env('IS_CI') && this.currentTest?.isFailed() && createdHost) { + cy.task('captureHostVmAgentDiagnostics', { + hostname: createdHost.hostname, + fileNamePrefix: this.currentTest?.fullTitle(), + }); + } + }); + it('"get-file --path" - should retrieve a file', () => { const downloadsFolder = Cypress.config('downloadsFolder'); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/isolate.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/isolate.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/isolate.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/isolate.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/process_operations.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/process_operations.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/process_operations.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/process_operations.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/release.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/release.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/release.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/release.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/scan.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/scan.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/scan.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/scan.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/execute.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/execute.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/execute.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/execute.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/get_file.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/get_file.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/get_file.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/get_file.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/isolate.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/isolate.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/isolate.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/isolate.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/kill_process.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/kill_process.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/kill_process.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/kill_process.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/processes.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/processes.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/processes.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/processes.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/release.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/release.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/release.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/release.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/suspend_process.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/suspend_process.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/suspend_process.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console_mocked/suspend_process.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/sentinelone/isolate.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/sentinelone/isolate.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/sentinelone/isolate.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/sentinelone/isolate.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/README.md b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/README.md similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/README.md rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/README.md diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/api/agent_policy_settings_complete.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/api/agent_policy_settings_complete.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/api/agent_policy_settings_complete.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/api/agent_policy_settings_complete.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/api/agent_policy_settings_essentials.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/api/agent_policy_settings_essentials.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/api/agent_policy_settings_essentials.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/api/agent_policy_settings_essentials.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/agent_policy_settings_complete.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/agent_policy_settings_complete.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/agent_policy_settings_complete.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/agent_policy_settings_complete.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/agent_policy_settings_essentials.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/agent_policy_settings_essentials.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/agent_policy_settings_essentials.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/agent_policy_settings_essentials.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/policy_details_endpoint_complete.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/policy_details_endpoint_complete.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/policy_details_endpoint_complete.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/policy_details_endpoint_complete.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/policy_details_endpoint_essentials.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/policy_details_endpoint_essentials.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/policy_details_endpoint_essentials.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/components/policy_details_endpoint_essentials.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/metering.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/metering.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/metering.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/metering.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/policy_details_with_security_essentials.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/disabled/unenroll_agent_from_fleet.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/disabled/unenroll_agent_from_fleet.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/disabled/unenroll_agent_from_fleet.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/disabled/unenroll_agent_from_fleet.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/disabled/uninstall_agent_from_host.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/disabled/uninstall_agent_from_host.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/disabled/uninstall_agent_from_host.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/disabled/uninstall_agent_from_host.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/unenroll_agent_from_fleet.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/unenroll_agent_from_fleet.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/unenroll_agent_from_fleet.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/unenroll_agent_from_fleet.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/uninstall_agent_from_host.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/uninstall_agent_from_host.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/uninstall_agent_from_host.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/enabled/uninstall_agent_from_host.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_disabled_to_enabled.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_disabled.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_disabled.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_disabled.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_disabled.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_enabled.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_enabled.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_enabled.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/unenroll_agent_from_fleet_changing_policy_from_enabled_to_enabled.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_disabled_to_enabled.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_disabled.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_disabled.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_disabled.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_disabled.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/e2e/tamper_protection/switching_policies/uninstall_agent_from_host_changing_policy_from_enabled_to_enabled.cy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/fixtures/artifacts_page.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/fixtures/artifacts_page.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/fixtures/artifacts_page.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/fixtures/artifacts_page.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/fixtures/example.json b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/fixtures/example.json similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/fixtures/example.json rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/fixtures/example.json diff --git a/x-pack/plugins/security_solution/public/management/cypress/fixtures/role_with_artifact_read_privilege.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/fixtures/role_with_artifact_read_privilege.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/fixtures/role_with_artifact_read_privilege.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/fixtures/role_with_artifact_read_privilege.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/alerts.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/artifacts.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/artifacts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/artifacts.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/artifacts.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/common.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/common.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/common.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/common.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/endpoint_list.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/endpoint_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/endpoint_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/endpoint_list.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/fleet/agent_details.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/agent_details.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/fleet/agent_details.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/agent_details.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/fleet/agent_list.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/agent_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/fleet/agent_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/agent_list.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/fleet/agent_settings.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/agent_settings.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/fleet/agent_settings.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/agent_settings.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/fleet/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/fleet/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/index.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/fleet/permission_denied.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/permission_denied.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/fleet/permission_denied.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/fleet/permission_denied.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/index.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/navigation.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/navigation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/navigation.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/navigation.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/page_reference.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/page_reference.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/page_reference.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/page_reference.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/policy_details.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/policy_details.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/policy_details.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/policy_details.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/policy_list.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/policy_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/policy_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/policy_list.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/responder.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/responder.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/responder.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/responder.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/stack_management/role_page.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/stack_management/role_page.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/stack_management/role_page.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/stack_management/role_page.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/screens/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/screens/types.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/agent_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/agent_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/support/agent_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/agent_actions.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/common.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/common.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/support/common.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/common.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/create_and_enroll_endpoint_host_ci.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/create_and_enroll_endpoint_host_ci.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/support/create_and_enroll_endpoint_host_ci.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/create_and_enroll_endpoint_host_ci.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/data_loaders.ts similarity index 87% rename from x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/data_loaders.ts index 3abf04765ca5e..a85feb74f1d9e 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/data_loaders.ts @@ -11,6 +11,10 @@ import type { CasePostRequest } from '@kbn/cases-plugin/common'; import execa from 'execa'; import type { KbnClient } from '@kbn/test'; import type { ToolingLog } from '@kbn/tooling-log'; +import { REPO_ROOT } from '@kbn/repo-info'; +// This is a Cypress module and only used by Cypress, so disabling "should" be safe +// eslint-disable-next-line import/no-nodejs-modules +import { mkdir } from 'node:fs/promises'; import type { IndexedEndpointHeartbeats } from '../../../../common/endpoint/data_loaders/index_endpoint_hearbeats'; import { deleteIndexedEndpointHeartbeats, @@ -53,6 +57,7 @@ import type { LoadUserAndRoleCyTaskOptions, CreateUserAndRoleCyTaskOptions, LogItTaskOptions, + CaptureHostVmAgentDiagnosticsOptions, } from '../types'; import type { DeletedIndexedEndpointRuleAlerts, @@ -75,6 +80,7 @@ import { deleteAgentPolicy, fetchAgentPolicyEnrollmentKey, getOrCreateDefaultAgentPolicy, + setAgentLoggingLevel, } from '../../../../scripts/endpoint/common/fleet_services'; import { startElasticAgentWithDocker } from '../../../../scripts/endpoint/common/elastic_agent_service'; import type { IndexedFleetEndpointPolicyResponse } from '../../../../common/endpoint/data_loaders/index_fleet_endpoint_policy'; @@ -433,6 +439,7 @@ ${s1Info.status} log, kbnClient, }); + await setAgentLoggingLevel(kbnClient, newHost.agentId, 'debug', log); await waitForEndpointToStreamData(kbnClient, newHost.agentId, 360000); return newHost; } catch (err) { @@ -531,5 +538,65 @@ ${s1Info.status} await startEndpointHost(hostName); return null; }, + + /** + * Generates an Agent Diagnostics archive (ZIP) directly on the Host VM and saves it to a directory + * that is then included with the list of Artifacts that are captured with Buildkite job. + * + * ### Usage: + * + * This task is best used from a `afterEach()` by checking if the test failed and if so (and it + * was a test that was running against a host VM), then capture the diagnostics file + * + * @param hostname + * + * @example + * + * describe('something', () => { + * let hostVm; + * + * afterEach(function() { // << Important: Note the use of `function()` here instead of arrow function + * if (this.currentTest?.isFailed() && hostVm) { + * cy.task('captureHostVmAgentDiagnostics', { hostname: hostVm.hostname }); + * } + * }); + * + * //... + * }) + */ + captureHostVmAgentDiagnostics: async ({ + hostname, + fileNamePrefix = '', + }: CaptureHostVmAgentDiagnosticsOptions) => { + const { log } = await stackServicesPromise; + + log.info(`Capturing agent diagnostics for host VM [${hostname}]`); + + const vmClient = getHostVmClient(hostname, undefined, undefined, log); + const fileName = `elastic-agent-diagnostics-${hostname}-${new Date() + .toISOString() + .replace(/:/g, '.')}.zip`; + const vmDiagnosticsFile = `/tmp/${fileName}`; + const localDiagnosticsDir = `${REPO_ROOT}/target/test_failures`; + const localDiagnosticsFile = `${localDiagnosticsDir}/${ + fileNamePrefix + ? // Insure the file name prefix does not have characters that can't be used in file names + `${fileNamePrefix.replace(/[><:"/\\|?*'`{} ]/g, '_')}-` + : '' + }${fileName}`; + + await mkdir(localDiagnosticsDir, { recursive: true }); + + // generate diagnostics file on the host and then download it + await vmClient.exec( + `sudo /opt/Elastic/Agent/elastic-agent diagnostics --file ${vmDiagnosticsFile}` + ); + return vmClient.download(vmDiagnosticsFile, localDiagnosticsFile).then((response) => { + log.info(`Agent diagnostic file for host [${hostname}] has been downloaded and is available at: + ${response.filePath} +`); + return { filePath: response.filePath }; + }); + }, }); }; diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/e2e.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/support/e2e.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/e2e.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/filter_videos.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/filter_videos.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/support/filter_videos.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/filter_videos.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/plugin_handlers/endpoint_data_loader.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/plugin_handlers/endpoint_data_loader.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/support/plugin_handlers/endpoint_data_loader.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/plugin_handlers/endpoint_data_loader.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/response_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/response_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/support/response_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/response_actions.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/saml_authentication.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/saml_authentication.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/support/saml_authentication.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/saml_authentication.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts new file mode 100644 index 0000000000000..a8c85fad1c3a7 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createToolingLogger } from '../../../../common/endpoint/data_loaders/utils'; + +/** + * Sets the default log level for `ToolingLog` instances crated via `createToolingLogger()` + * based on the `TOOLING_LOG_LEVEL` env. variable in the cypress config + * @param config + */ +export const setupToolingLogLevel = (config: Cypress.PluginConfigOptions) => { + const log = createToolingLogger(); + const defaultToolingLogLevel = config.env.TOOLING_LOG_LEVEL; + + log.info(` + +Cypress Configuration File: ${config.configFile} + +'env.TOOLING_LOG_LEVEL' set to: ${defaultToolingLogLevel} + +*** FYI: *** To help with test failures, an environmental variable named 'TOOLING_LOG_LEVEL' can be set + with a value of 'verbose' in order to capture more data in the logs. This environment + property can be set either in the runtime environment (ex. local shell or buildkite) or + directly in the Cypress configuration file \`env: {}\` section. + + `); + + if (defaultToolingLogLevel && defaultToolingLogLevel !== createToolingLogger.defaultLogLevel) { + createToolingLogger.defaultLogLevel = defaultToolingLogLevel; + } +}; diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/transparent_api_proxy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/transparent_api_proxy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/support/transparent_api_proxy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/support/transparent_api_proxy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/add_alerts_to_case.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/add_alerts_to_case.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/add_alerts_to_case.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/add_alerts_to_case.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/alerts.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/api_fixtures.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/api_fixtures.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/api_fixtures.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/api_fixtures.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/artifacts.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/artifacts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/artifacts.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/artifacts.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/common.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/common.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/common.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/common.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/create_endpoint_host.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/create_endpoint_host.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/create_endpoint_host.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/create_endpoint_host.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/delete_all_endpoint_data.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/delete_all_endpoint_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/delete_all_endpoint_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/delete_all_endpoint_data.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/endpoint_policy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/endpoint_policy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/endpoint_policy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/endpoint_policy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/fleet.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/fleet.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/fleet.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/index_endpoint_heartbeats.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/index_endpoint_heartbeats.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/index_endpoint_heartbeats.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/index_endpoint_heartbeats.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/index_endpoint_hosts.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/index_endpoint_hosts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/index_endpoint_hosts.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/index_endpoint_hosts.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/index_endpoint_rule_alerts.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/index_endpoint_rule_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/index_endpoint_rule_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/index_endpoint_rule_alerts.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/index_new_case.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/index_new_case.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/index_new_case.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/index_new_case.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/isolate.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/isolate.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/isolate.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/isolate.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/logger.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/logger.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/logger.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/logger.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/login.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/login.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/login.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/login.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/navigation.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/navigation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/navigation.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/navigation.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/perform_user_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/perform_user_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/perform_user_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/perform_user_actions.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/response_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/response_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/response_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/response_actions.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/response_console.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/response_console.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/response_console.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/response_console.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/run_endpoint_loader.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/run_endpoint_loader.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/run_endpoint_loader.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/run_endpoint_loader.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/spaces.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/spaces.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/spaces.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/spaces.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/toasts.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/toasts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/toasts.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/toasts.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/transparent_api_proxy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/transparent_api_proxy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/transparent_api_proxy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/transparent_api_proxy.ts diff --git a/x-pack/plugins/security_solution/public/management/cypress/tasks/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/tasks/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/tasks/utils.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tsconfig.json b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tsconfig.json new file mode 100644 index 0000000000000..690631e032d0a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/tsconfig.json @@ -0,0 +1,39 @@ +{ + "extends": "../../../../../../../../tsconfig.base.json", + "include": [ + "**/*", + ], + "exclude": [ + "target/**/*" + ], + "compilerOptions": { + "outDir": "target/types", + "types": [ + "cypress", + "node", + ], + }, + "kbn_references": [ + // this cypress project uses code from the parent ts project + // in a way that can't be auto-matically deteceted at this time + // so we have to force the inclusion of this reference + { + "path": "../../../tsconfig.json", + "force": true + }, + "@kbn/security-plugin", + "@kbn/securitysolution-list-constants", + "@kbn/fleet-plugin", + "@kbn/securitysolution-io-ts-list-types", + "@kbn/cypress-config", + "@kbn/test-subj-selector", + "@kbn/cases-plugin", + "@kbn/test", + "@kbn/repo-info", + "@kbn/tooling-log", + "@kbn/security-solution-serverless", + "@kbn/dev-utils", + "@kbn/spaces-plugin", + "@kbn/test-suites-xpack/security_solution_cypress/cypress", + ] +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/cypress/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/types.ts new file mode 100644 index 0000000000000..e23ff82fa8479 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/types.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import type { Role } from '@kbn/security-plugin/common'; +import type { ToolingLog } from '@kbn/tooling-log'; +import type { ActionDetails } from '../../../common/endpoint/types'; +import type { CyLoadEndpointDataOptions } from './support/plugin_handlers/endpoint_data_loader'; +import type { SecurityTestUser } from './common/constants'; + +type PossibleChainable = + | Cypress.Chainable + | ((args?: any) => Cypress.Chainable) + | ((args?: any) => Promise>); + +/** + * Extracts out the subject that the Chainable resolves to (when `Chainable.then()` is used). + * + * @example + * // With a Cypress.chainable object + * const value: Cypress.Chainable; + * const t: ReturnTypeFromChainable; // SomeType + * + * // With function + * const value: () => Cypress.Chainable; + * const t: ReturnTypeFromChainable; // SomeType + * + * // With function that returns a promise + * const value: () => Promise>; + * const t: ReturnTypeFromChainable; // SomeType + */ +export type ReturnTypeFromChainable = C extends Cypress.Chainable< + infer Value +> + ? Value + : C extends (args?: any) => Cypress.Chainable + ? ValueFromFnResponse + : C extends (args?: any) => Promise> + ? ValueFromPromiseChainable + : never; + +export type IndexEndpointHostsCyTaskOptions = Partial< + { + count: number; + withResponseActions: boolean; + numResponseActions?: number; + alertIds?: string[]; + } & Pick +>; + +export interface HostActionResponse { + data: { + action: ActionDetails; + state: { state?: 'success' | 'failure' }; + }; +} + +export interface LoadUserAndRoleCyTaskOptions { + name: SecurityTestUser; +} + +export interface CreateUserAndRoleCyTaskOptions { + role: Role; +} + +export interface UninstallAgentFromHostTaskOptions { + hostname: string; + uninstallToken: string; +} + +export interface IsAgentAndEndpointUninstalledFromHostTaskOptions { + hostname: string; +} + +export interface LogItTaskOptions { + level: keyof Pick; + data: any; +} + +export interface CaptureHostVmAgentDiagnosticsOptions { + hostname: string; + fileNamePrefix?: string; +} diff --git a/x-pack/plugins/security_solution/public/management/cypress/typings.d.ts b/x-pack/solutions/security/plugins/security_solution/public/management/cypress/typings.d.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/cypress/typings.d.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/cypress/typings.d.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/agents/__mocks__/use_get_agent_status.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/agents/__mocks__/use_get_agent_status.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/agents/__mocks__/use_get_agent_status.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/agents/__mocks__/use_get_agent_status.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/agents/use_get_agent_status.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/agents/use_get_agent_status.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/agents/use_get_agent_status.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/agents/use_get_agent_status.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/agents/use_get_agent_status.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/agents/use_get_agent_status.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/agents/use_get_agent_status.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/agents/use_get_agent_status.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_bulk_delete_artifact.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_bulk_update_artifact.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_create_artifact.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_delete_artifact.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_get_artifact.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_updated_tags.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_get_updated_tags.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_updated_tags.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_get_updated_tags.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_updated_tags.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_get_updated_tags.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_get_updated_tags.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_get_updated_tags.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_host_isolation_exceptions_access.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_host_isolation_exceptions_access.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_host_isolation_exceptions_access.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_host_isolation_exceptions_access.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_host_isolation_exceptions_access.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_host_isolation_exceptions_access.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_host_isolation_exceptions_access.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_host_isolation_exceptions_access.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_list_artifact.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_summary_artifact.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/artifacts/use_update_artifact.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_details.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_details.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_details.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_details.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_details.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_details.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_details.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_details.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_policy_response.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_policy_response.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_policy_response.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_policy_response.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_policy_response.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_policy_response.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_policy_response.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoint_policy_response.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/endpoint/use_get_endpoints_list.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/index.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy_agent_summary.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy_agent_summary.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy_agent_summary.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy_agent_summary.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy_agent_summary.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy_agent_summary.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy_agent_summary.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_fetch_endpoint_policy_agent_summary.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/policy/use_update_endpoint_policy.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_update_endpoint_policy.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/policy/use_update_endpoint_policy.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_update_endpoint_policy.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/policy/use_update_endpoint_policy.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_update_endpoint_policy.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/policy/use_update_endpoint_policy.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/policy/use_update_endpoint_policy.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_automated_action_list.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_automated_action_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_automated_action_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_automated_action_list.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_action_list.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_action_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_action_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_action_list.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_action_list.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_action_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_action_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_action_list.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_pending_actions_summary.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_pending_actions_summary.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_pending_actions_summary.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_pending_actions_summary.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_pending_actions_summary.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_pending_actions_summary.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_pending_actions_summary.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_endpoint_pending_actions_summary.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_get_file_info.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_execute_endpoint_request.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_execute_endpoint_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_execute_endpoint_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_execute_endpoint_request.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_endpoint_processes_request.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_get_endpoint_processes_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_endpoint_processes_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_get_endpoint_processes_request.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_file_request.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_get_file_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_get_file_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_get_file_request.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_isolate_endpoint_request.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_isolate_endpoint_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_isolate_endpoint_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_isolate_endpoint_request.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_kill_process_endpoint_request.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_kill_process_endpoint_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_kill_process_endpoint_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_kill_process_endpoint_request.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_release_endpoint_request.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_release_endpoint_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_release_endpoint_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_release_endpoint_request.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_scan_request.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_scan_request.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_scan_request.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_scan_request.test.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_scan_request.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_scan_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_scan_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_scan_request.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_suspend_process_endpoint_request.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_suspend_process_endpoint_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_suspend_process_endpoint_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_suspend_process_endpoint_request.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_upload_endpoint_request.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_upload_endpoint_request.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/response_actions/use_send_upload_endpoint_request.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/response_actions/use_send_upload_endpoint_request.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/test_utils.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/test_utils.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/test_utils.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/test_utils.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/translations.tsx diff --git a/x-pack/plugins/security_solution/public/management/hooks/use_get_action_state.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_get_action_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/use_get_action_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_get_action_state.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/use_old_url_search_pagination_replace.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_old_url_search_pagination_replace.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/use_old_url_search_pagination_replace.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_old_url_search_pagination_replace.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/use_suggestions.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_suggestions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/use_suggestions.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_suggestions.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/use_test_id_generator.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_test_id_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/use_test_id_generator.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_test_id_generator.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/use_url_pagination.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_url_pagination.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/use_url_pagination.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_url_pagination.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/use_url_params.ts b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_url_params.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/use_url_params.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_url_params.ts diff --git a/x-pack/plugins/security_solution/public/management/hooks/use_with_show_responder.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_with_show_responder.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/hooks/use_with_show_responder.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/hooks/use_with_show_responder.tsx diff --git a/x-pack/plugins/security_solution/public/management/images/security_administration_onboarding.svg b/x-pack/solutions/security/plugins/security_solution/public/management/images/security_administration_onboarding.svg similarity index 100% rename from x-pack/plugins/security_solution/public/management/images/security_administration_onboarding.svg rename to x-pack/solutions/security/plugins/security_solution/public/management/images/security_administration_onboarding.svg diff --git a/x-pack/plugins/security_solution/public/management/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/management/jest.config.js new file mode 100644 index 0000000000000..59646de5f8996 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/management'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/management', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/management/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/management/links.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/links.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/links.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/links.test.ts diff --git a/x-pack/plugins/security_solution/public/management/links.ts b/x-pack/solutions/security/plugins/security_solution/public/management/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/links.ts diff --git a/x-pack/plugins/security_solution/public/management/mocks/agent_status_http_mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/mocks/agent_status_http_mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/mocks/agent_status_http_mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/mocks/agent_status_http_mocks.ts diff --git a/x-pack/plugins/security_solution/public/management/mocks/exceptions_list_http_mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/mocks/exceptions_list_http_mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/mocks/exceptions_list_http_mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/mocks/exceptions_list_http_mocks.ts diff --git a/x-pack/plugins/security_solution/public/management/mocks/fleet_mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/mocks/fleet_mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/mocks/fleet_mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/mocks/fleet_mocks.ts diff --git a/x-pack/plugins/security_solution/public/management/mocks/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/mocks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/mocks/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/mocks/index.ts diff --git a/x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/mocks/response_actions_http_mocks.ts diff --git a/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts diff --git a/x-pack/plugins/security_solution/public/management/mocks/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/mocks/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/mocks/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/mocks/utils.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/constants.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/services/blocklists_api_client.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/services/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/services/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/services/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/services/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/view/blocklist.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/blocklist.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/view/blocklist.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/blocklist.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/view/blocklist.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/blocklist.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/view/blocklist.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/blocklist.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/blocklist/view/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/blocklist/view/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/mocks.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/models/index_pattern.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/models/index_pattern.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/models/index_pattern.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/models/index_pattern.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/builders.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/builders.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/builders.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/builders.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/endpoint_pagination.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/endpoint_pagination.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/endpoint_pagination.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/endpoint_pagination.test.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/index.test.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.test.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/mock_endpoint_result_list.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/mock_endpoint_result_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/mock_endpoint_result_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/mock_endpoint_result_list.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/reducer.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/store/utils.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts new file mode 100644 index 0000000000000..6573cfb9f7c64 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts @@ -0,0 +1,166 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DataViewBase } from '@kbn/es-query'; +import type { GetInfoResponse } from '@kbn/fleet-plugin/common'; +import type { CreateExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; +import type { + AppLocation, + EndpointPendingActions, + EndpointSortableField, + HostInfo, + Immutable, + PolicyData, + ResponseActionApiResponse, +} from '../../../../common/endpoint/types'; +import type { ServerApiError } from '../../../common/types'; +import type { AsyncResourceState } from '../../state'; +import { TRANSFORM_STATES } from '../../../../common/constants'; + +export interface EndpointState { + /** list of host **/ + hosts: HostInfo[]; + /** number of items per page */ + pageSize: number; + /** which page to show */ + pageIndex: number; + /** field used for sorting */ + sortField: EndpointSortableField; + /** direction of sorting */ + sortDirection: 'asc' | 'desc'; + /** total number of hosts returned */ + total: number; + /** list page is retrieving data */ + loading: boolean; + /** api error from retrieving host list */ + error?: ServerApiError; + /** current location info */ + location?: Immutable; + /** policies */ + policyItems: PolicyData[]; + /** policies are loading */ + policyItemsLoading: boolean; + /** the selected policy ID in the onboarding flow */ + selectedPolicyId?: string; + /** Endpoint package info */ + endpointPackageInfo: AsyncResourceState; + /** Tracks the list of policy IDs used in Host metadata that may no longer exist */ + nonExistingPolicies: NonExistingPolicies; + /** Tracks whether hosts exist and helps control if onboarding should be visible */ + endpointsExist: boolean; + /** index patterns for query bar */ + patterns: DataViewBase[]; + /** api error from retrieving index patters for query bar */ + patternsError?: ServerApiError; + /** Is auto-refresh enabled? */ + isAutoRefreshEnabled: boolean; + /** The current auto refresh interval for data in ms */ + autoRefreshInterval: number; + /** The total Agents that contain an Endpoint package */ + agentsWithEndpointsTotal: number; + /** api error for total Agents that contain an Endpoint package */ + agentsWithEndpointsTotalError?: ServerApiError; + /** The total, actual number of Endpoints regardless of any filtering */ + endpointsTotal: number; + /** api error for total, actual Endpoints */ + endpointsTotalError?: ServerApiError; + /** Host isolation request state for a single endpoint */ + isolationRequestState: AsyncResourceState; + // Metadata transform stats to checking transform state + metadataTransformStats: AsyncResourceState; + isInitialized: boolean; +} + +export type AgentIdsPendingActions = Map; + +/** + * Set containing Package Policy IDs which are used but do not exist anymore + */ +export type NonExistingPolicies = Set; + +/** + * Query params on the host page parsed from the URL + */ +export interface EndpointIndexUIQueryParams { + /** Selected endpoint id shows host details flyout */ + selected_endpoint?: string; + /** How many items to show in list */ + page_size?: string; + /** Which page to show */ + page_index?: string; + /** Field used for sorting */ + sort_field?: EndpointSortableField; + /** Direction of sorting */ + sort_direction?: 'asc' | 'desc'; + /** show the policy response or host details */ + show?: 'policy_response' | 'activity_log' | 'details' | 'isolate' | 'unisolate'; + /** Query text from search bar*/ + admin_query?: string; +} + +const transformStates = Object.values(TRANSFORM_STATES); +export type TransformState = (typeof transformStates)[number]; + +export interface TransformStats { + id: string; + checkpointing: { + last: { + checkpoint: number; + timestamp_millis?: number; + }; + next?: { + checkpoint: number; + checkpoint_progress?: { + total_docs: number; + docs_remaining: number; + percent_complete: number; + }; + }; + operations_behind: number; + }; + node?: { + id: string; + name: string; + ephemeral_id: string; + transport_address: string; + attributes: Record; + }; + stats: { + delete_time_in_ms: number; + documents_deleted: number; + documents_indexed: number; + documents_processed: number; + index_failures: number; + index_time_in_ms: number; + index_total: number; + pages_processed: number; + search_failures: number; + search_time_in_ms: number; + search_total: number; + trigger_count: number; + processing_time_in_ms: number; + processing_total: number; + exponential_avg_checkpoint_duration_ms: number; + exponential_avg_documents_indexed: number; + exponential_avg_documents_processed: number; + }; + reason?: string; + state: TransformState; +} + +export interface TransformStatsResponse { + count: number; + transforms: TransformStats[]; +} + +export interface WorkflowInsightRouteState { + insight?: { + back_url: string; + id: string; + item: CreateExceptionListItemSchema; + }; +} diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/utils.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/back_to_policy_list_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/back_to_policy_list_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/back_to_policy_list_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/back_to_policy_list_button.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/endpoint_list_nav_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/endpoint_list_nav_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/endpoint_list_nav_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/endpoint_list_nav_link.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/integration_tests/search_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/integration_tests/search_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/integration_tests/search_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/integration_tests/search_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/search_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/search_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/search_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/search_bar.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/table_row_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/table_row_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/table_row_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/table_row_actions.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/transform_failed_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/transform_failed_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/transform_failed_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/transform_failed_callout.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/actions_menu.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/actions_menu.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/actions_menu.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/actions_menu.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/actions_menu.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/actions_menu.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/actions_menu.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/actions_menu.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/back_to_endpoint_details_flyout_subheader.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/back_to_endpoint_details_flyout_subheader.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/back_to_endpoint_details_flyout_subheader.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/back_to_endpoint_details_flyout_subheader.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/endpoint_details_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/endpoint_details_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/endpoint_details_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/endpoint_details_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/endpoint_isolate_flyout_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/endpoint_isolate_flyout_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/endpoint_isolate_flyout_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/endpoint_isolate_flyout_panel.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/flyout_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/flyout_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/flyout_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/flyout_header.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx new file mode 100644 index 0000000000000..b145573ccf745 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx @@ -0,0 +1,118 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiHorizontalRule, EuiAccordion, EuiSpacer, EuiText } from '@elastic/eui'; +import React, { useState, useEffect, useCallback, useMemo } from 'react'; +import moment from 'moment'; +import { useFetchInsights } from '../../../hooks/insights/use_fetch_insights'; +import { useTriggerScan } from '../../../hooks/insights/use_trigger_scan'; +import { useFetchOngoingScans } from '../../../hooks/insights/use_fetch_ongoing_tasks'; +import { WorkflowInsightsResults } from './workflow_insights_results'; +import { WorkflowInsightsScanSection } from './workflow_insights_scan'; +import { WORKFLOW_INSIGHTS } from '../../../translations'; + +interface WorkflowInsightsProps { + endpointId: string; +} + +export const WorkflowInsights = React.memo(({ endpointId }: WorkflowInsightsProps) => { + const [isScanButtonDisabled, setIsScanButtonDisabled] = useState(true); + const [scanCompleted, setIsScanCompleted] = useState(false); + const [userTriggeredScan, setUserTriggeredScan] = useState(false); + + const disableScanButton = () => { + setIsScanButtonDisabled(true); + }; + + const [setScanOngoing, setScanCompleted] = [ + () => setIsScanCompleted(false), + () => setIsScanCompleted(true), + ]; + + const { data: insights, refetch: refetchInsights } = useFetchInsights({ + endpointId, + onSuccess: setScanCompleted, + }); + + const { + data: ongoingScans, + isLoading: isLoadingOngoingScans, + refetch: refetchOngoingScans, + } = useFetchOngoingScans({ + endpointId, + isPolling: isScanButtonDisabled, + onSuccess: refetchInsights, + }); + + const { mutate: triggerScan } = useTriggerScan({ + onSuccess: refetchOngoingScans, + onMutate: disableScanButton, + }); + + useEffect(() => { + setIsScanButtonDisabled(!!ongoingScans?.length || isLoadingOngoingScans); + }, [ongoingScans, isLoadingOngoingScans]); + + const lastResultCaption = useMemo(() => { + if (!insights?.length) { + return null; + } + + const latestTimestamp = insights + .map((insight) => moment.utc(insight['@timestamp'])) + .sort((a, b) => b.diff(a))[0]; + + return ( + + {`${WORKFLOW_INSIGHTS.titleRight} ${latestTimestamp.local().fromNow()}`} + + ); + }, [insights]); + + const onScanButtonClick = useCallback( + ({ actionTypeId, connectorId }: { actionTypeId: string; connectorId: string }) => { + setScanOngoing(); + if (!userTriggeredScan) { + setUserTriggeredScan(true); + } + triggerScan({ endpointId, actionTypeId, connectorId }); + }, + [setScanOngoing, userTriggeredScan, triggerScan, endpointId] + ); + + return ( + <> + +

    {WORKFLOW_INSIGHTS.title}

    + + } + initialIsOpen + extraAction={lastResultCaption} + paddingSize={'none'} + > + + + + + +
    + + + ); +}); + +WorkflowInsights.displayName = 'WorkflowInsights'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx new file mode 100644 index 0000000000000..719c56b0ad033 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx @@ -0,0 +1,165 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, useState, useCallback, useMemo } from 'react'; +import styled from 'styled-components'; +import { + EuiButtonIcon, + EuiCallOut, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiPanel, + EuiSpacer, + EuiText, +} from '@elastic/eui'; +import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; +import { WORKFLOW_INSIGHTS } from '../../../translations'; + +interface WorkflowInsightsResultsProps { + results?: SecurityWorkflowInsight[]; + scanCompleted: boolean; + endpointId: string; +} +import type { WorkflowInsightRouteState } from '../../../../types'; +import { getEndpointDetailsPath } from '../../../../../../common/routing'; +import { useKibana } from '../../../../../../../common/lib/kibana'; +import { APP_PATH, TRUSTED_APPS_PATH } from '../../../../../../../../common/constants'; +import type { + ExceptionListRemediationType, + SecurityWorkflowInsight, +} from '../../../../../../../../common/endpoint/types/workflow_insights'; + +const CustomEuiCallOut = styled(EuiCallOut)` + & .euiButtonIcon { + margin-top: 5px; /* Lower the close button */ + } +`; + +export const WorkflowInsightsResults = ({ + results, + scanCompleted, + endpointId, +}: WorkflowInsightsResultsProps) => { + const [showEmptyResultsCallout, setShowEmptyResultsCallout] = useState(false); + const hideEmptyStateCallout = () => setShowEmptyResultsCallout(false); + + const { + application: { navigateToUrl }, + } = useKibana().services; + + useEffect(() => { + setShowEmptyResultsCallout(results?.length === 0 && scanCompleted); + }, [results, scanCompleted]); + + const openArtifactCreationPage = useCallback( + ({ remediation, id }: { remediation: ExceptionListRemediationType; id: string }) => { + const getUrlBasedOnListId = (listId: string) => { + switch (listId) { + case ENDPOINT_ARTIFACT_LISTS.trustedApps.id: + default: + return TRUSTED_APPS_PATH; + } + }; + + const url = `${APP_PATH}${getUrlBasedOnListId(remediation.list_id)}?show=create`; + + const state: WorkflowInsightRouteState = { + insight: { + id, + back_url: `${APP_PATH}${getEndpointDetailsPath({ + name: 'endpointDetails', + selected_endpoint: endpointId, + })}`, + item: { + comments: [], + description: remediation.description, + entries: remediation.entries, + list_id: remediation.list_id, + name: remediation.name, + namespace_type: 'agnostic', + tags: remediation.tags, + type: 'simple', + os_types: remediation.os_types, + }, + }, + }; + + navigateToUrl(url, { + state, + }); + }, + [endpointId, navigateToUrl] + ); + + const insights = useMemo(() => { + if (showEmptyResultsCallout) { + return ( + + {WORKFLOW_INSIGHTS.issues.emptyResults} + + ); + } else if (results?.length) { + return results.flatMap((insight, index) => { + return (insight.remediation.exception_list_items ?? []).map((item) => { + return ( + + + + + + + + + + {insight.value} + + + {insight.message} + + + {item.entries[0].type === 'match' && item.entries[0].value} + + + + + + ) => { + e.preventDefault(); + if (insight.id) { + openArtifactCreationPage({ remediation: item, id: insight.id }); + } + }} + /> + + + + ); + }); + }); + } + return null; + }, [openArtifactCreationPage, results, showEmptyResultsCallout]); + + return ( + <> + {showEmptyResultsCallout || results?.length ? ( + <> + +

    {WORKFLOW_INSIGHTS.issues.title}

    +
    + + + ) : null} + {insights} + + ); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx new file mode 100644 index 0000000000000..74b1147531a01 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx @@ -0,0 +1,133 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiPanel, EuiText } from '@elastic/eui'; +import { + AssistantAvatar, + DEFEND_INSIGHTS_STORAGE_KEY, + ConnectorSelectorInline, + DEFAULT_ASSISTANT_NAMESPACE, + useLoadConnectors, +} from '@kbn/elastic-assistant'; +import { noop } from 'lodash/fp'; +import useLocalStorage from 'react-use/lib/useLocalStorage'; +import { some } from 'lodash'; +import { useSpaceId } from '../../../../../../../common/hooks/use_space_id'; +import { WORKFLOW_INSIGHTS } from '../../../translations'; +import { useKibana } from '../../../../../../../common/lib/kibana'; + +interface WorkflowInsightsScanSectionProps { + isScanButtonDisabled: boolean; + onScanButtonClick: ({ + actionTypeId, + connectorId, + }: { + actionTypeId: string; + connectorId: string; + }) => void; +} + +export const WorkflowInsightsScanSection = ({ + isScanButtonDisabled, + onScanButtonClick, +}: WorkflowInsightsScanSectionProps) => { + const CONNECTOR_ID_LOCAL_STORAGE_KEY = 'connectorId'; + + const spaceId = useSpaceId() ?? 'default'; + const { http } = useKibana().services; + const { data: aiConnectors } = useLoadConnectors({ + http, + }); + + // Store the selected connector id in local storage so that it persists across page reloads + const [localStorageWorkflowInsightsConnectorId, setLocalStorageWorkflowInsightsConnectorId] = + useLocalStorage( + `${DEFAULT_ASSISTANT_NAMESPACE}.${DEFEND_INSIGHTS_STORAGE_KEY}.${spaceId}.${CONNECTOR_ID_LOCAL_STORAGE_KEY}` + ); + + const [connectorId, setConnectorId] = React.useState( + localStorageWorkflowInsightsConnectorId + ); + + const onConnectorIdSelected = useCallback( + (selectedConnectorId: string) => { + setConnectorId(selectedConnectorId); + setLocalStorageWorkflowInsightsConnectorId(selectedConnectorId); + }, + [setLocalStorageWorkflowInsightsConnectorId] + ); + + // Check if the selected connector exists in the list of connectors, i.e. it is not deleted + const connectorExists = useMemo( + () => some(aiConnectors, ['id', connectorId]), + [aiConnectors, connectorId] + ); + + const selectedConnectorActionTypeId = useMemo(() => { + const selectedConnector = aiConnectors?.find((connector) => connector.id === connectorId); + return selectedConnector?.actionTypeId; + }, [aiConnectors, connectorId]); + + // Render the scan button only if a connector is selected + const scanButton = useMemo(() => { + if (!connectorExists) { + return null; + } + return ( + + { + if (!connectorId || !selectedConnectorActionTypeId) return; + onScanButtonClick({ connectorId, actionTypeId: selectedConnectorActionTypeId }); + }} + > + {isScanButtonDisabled ? WORKFLOW_INSIGHTS.scan.loading : WORKFLOW_INSIGHTS.scan.button} + + + ); + }, [ + connectorExists, + connectorId, + isScanButtonDisabled, + onScanButtonClick, + selectedConnectorActionTypeId, + ]); + + return ( + + + + + + + + + +

    {WORKFLOW_INSIGHTS.scan.title}

    +
    +
    +
    +
    + + + + + + {scanButton} + + +
    +
    + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx index c329c5c603bf6..eff9ec800ac6a 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx @@ -15,6 +15,7 @@ import { } from '@elastic/eui'; import React, { memo, useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useIsExperimentalFeatureEnabled } from '../../../../../common/hooks/use_experimental_features'; import { WorkflowInsights } from './components/insights/workflow_insights'; import { isPolicyOutOfDate } from '../../utils'; import { AgentStatus } from '../../../../../common/components/endpoint/agents/agent_status'; @@ -42,6 +43,7 @@ interface EndpointDetailsContentProps { export const EndpointDetailsContent = memo( ({ hostInfo, policyInfo }) => { + const isWorkflowInsightsEnabled = useIsExperimentalFeatureEnabled('defendInsights'); const queryParams = useEndpointSelector(uiQueryParams); const policyStatus = useMemo( () => hostInfo.metadata.Endpoint.policy.applied.status, @@ -181,10 +183,9 @@ export const EndpointDetailsContent = memo( }, ]; }, [hostInfo, policyInfo, missingPolicies, policyStatus, policyStatusClickHandler]); - return (
    - + {isWorkflowInsightsEnabled && } void; +} + +export const useFetchInsights = ({ endpointId, onSuccess }: UseFetchInsightsConfig) => { + const { http } = useKibana().services; + const toasts = useToasts(); + + return useQuery( + [`fetchInsights-${endpointId}`], + async () => { + try { + const result = await http.get(WORKFLOW_INSIGHTS_ROUTE, { + version: ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, + query: { + actionTypes: JSON.stringify([ActionType.Refreshed]), + targetIds: JSON.stringify([endpointId]), + }, + }); + onSuccess(); + return result; + } catch (error) { + toasts.addDanger({ + title: WORKFLOW_INSIGHTS.toasts.fetchInsightsError, + text: error?.message, + }); + return []; + } + }, + { + refetchOnWindowFocus: false, // We need full control over when to refetch + } + ); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_fetch_ongoing_tasks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_fetch_ongoing_tasks.ts new file mode 100644 index 0000000000000..6969ca0531f6c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_fetch_ongoing_tasks.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { useQuery } from '@tanstack/react-query'; +import { + DEFEND_INSIGHTS, + type DefendInsightsResponse, + DefendInsightStatusEnum, + ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, +} from '@kbn/elastic-assistant-common'; +import { useEffect, useRef } from 'react'; +import { WORKFLOW_INSIGHTS } from '../../translations'; +import { useKibana, useToasts } from '../../../../../../common/lib/kibana'; + +interface UseFetchOngoingScansConfig { + isPolling: boolean; + endpointId: string; + onSuccess: () => void; +} + +export const useFetchOngoingScans = ({ + isPolling, + endpointId, + onSuccess, +}: UseFetchOngoingScansConfig) => { + const { http } = useKibana().services; + const toasts = useToasts(); + + // Ref to track if polling was active in the previous render + const wasPolling = useRef(isPolling); + + useEffect(() => { + // If polling was active and isPolling is false, it means the condition has been met and we can run onSuccess logic (i.e. refetch insights) + if (wasPolling.current && !isPolling) { + onSuccess(); + } + wasPolling.current = isPolling; + }, [isPolling, onSuccess]); + + return useQuery( + [`fetchOngoingTasks-${endpointId}`], + async () => { + try { + const response = await http.get<{ data: DefendInsightsResponse[] }>(DEFEND_INSIGHTS, { + version: ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, + query: { + status: DefendInsightStatusEnum.running, + endpoint_ids: [endpointId], + }, + }); + return response.data; + } catch (error) { + toasts.addDanger({ + title: WORKFLOW_INSIGHTS.toasts.fetchPendingInsightsError, + text: error?.body?.error, + }); + return []; + } + }, + { + refetchOnWindowFocus: false, + refetchInterval: isPolling ? 2000 : false, + } + ); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_trigger_scan.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_trigger_scan.ts new file mode 100644 index 0000000000000..efa5a937d442c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_trigger_scan.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMutation } from '@tanstack/react-query'; +import type { DefendInsightsResponse } from '@kbn/elastic-assistant-common'; +import { + DEFEND_INSIGHTS, + DefendInsightTypeEnum, + ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, +} from '@kbn/elastic-assistant-common'; +import { useFetchAnonymizationFields } from '@kbn/elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields'; +import { useKibana, useToasts } from '../../../../../../common/lib/kibana'; +import { WORKFLOW_INSIGHTS } from '../../translations'; + +interface UseTriggerScanPayload { + endpointId: string; + connectorId: string; + actionTypeId: string; +} + +interface UseTriggerScanConfig { + onMutate: () => void; + onSuccess: () => void; +} + +export const useTriggerScan = ({ onMutate, onSuccess }: UseTriggerScanConfig) => { + const { http } = useKibana().services; + const toasts = useToasts(); + + const { data: anonymizationFields } = useFetchAnonymizationFields(); + + return useMutation( + ({ endpointId, connectorId, actionTypeId }: UseTriggerScanPayload) => + http.post(DEFEND_INSIGHTS, { + version: ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, + body: JSON.stringify({ + endpointIds: [endpointId], + insightType: DefendInsightTypeEnum.incompatible_antivirus, + anonymizationFields: anonymizationFields.data, + replacements: {}, + subAction: 'invokeAI', + apiConfig: { + connectorId, + actionTypeId, + }, + }), + }), + { + onMutate, + onSuccess, + onError: (err) => { + toasts.addDanger({ + title: WORKFLOW_INSIGHTS.toasts.scanError, + text: err.body?.error, + }); + }, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/host_constants.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/host_constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/host_constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/host_constants.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts new file mode 100644 index 0000000000000..e397f0030f1db --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts @@ -0,0 +1,192 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const OVERVIEW = i18n.translate('xpack.securitySolution.endpointDetails.overview', { + defaultMessage: 'Overview', +}); + +export const WORKFLOW_INSIGHTS = { + title: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.sectionTitle', { + defaultMessage: 'Issues', + }), + titleRight: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.extraAction', + { + defaultMessage: 'Last scans:', + } + ), + scan: { + title: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.scan.title', { + defaultMessage: 'AI-Powered issue scan', + }), + button: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.scan.button', { + defaultMessage: 'Scan', + }), + loading: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.scan.loading', + { + defaultMessage: 'Loading...', + } + ), + }, + issues: { + title: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.issues.title', { + defaultMessage: 'Issues', + }), + emptyResults: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.issues.emptyResults', + { + defaultMessage: 'No issues had been found', + } + ), + insightRemediationButtonAriaLabel: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.issues.insightRemediationButtonAriaLabel', + { + defaultMessage: 'Create trusted app', + } + ), + }, + toasts: { + scanError: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.toast.error', + { + defaultMessage: 'Failed to start scan', + } + ), + fetchInsightsError: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.toast.fetchInsightsError', + { + defaultMessage: 'Failed to fetch insights', + } + ), + fetchPendingInsightsError: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.toast.fetchPendingInsightsError', + { + defaultMessage: 'Failed to retrieve insights in the generation process', + } + ), + updateInsightError: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.toast.updateInsightError', + { + defaultMessage: 'Failed to mark insight as remediated', + } + ), + }, +}; + +export const ACTIVITY_LOG = { + tabTitle: i18n.translate('xpack.securitySolution.endpointDetails.responseActionsHistory', { + defaultMessage: 'Response actions history', + }), + LogEntry: { + endOfLog: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.endOfLog', + { + defaultMessage: 'Nothing more to show', + } + ), + dateRangeMessage: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.dateRangeMessage.title', + { + defaultMessage: + 'Nothing to show for selected date range, please select another and try again.', + } + ), + emptyState: { + title: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.emptyState.title', + { + defaultMessage: 'No logged actions', + } + ), + body: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.emptyState.body', + { + defaultMessage: 'No actions have been logged for this endpoint.', + } + ), + }, + action: { + isolatedAction: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.isolated', + { + defaultMessage: 'submitted request: Isolate host', + } + ), + unisolatedAction: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.unisolated', + { + defaultMessage: 'submitted request: Release host', + } + ), + failedEndpointReleaseAction: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.failedEndpointReleaseAction', + { + defaultMessage: 'failed to submit request: Release host', + } + ), + failedEndpointIsolateAction: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.action.failedEndpointIsolateAction', + { + defaultMessage: 'failed to submit request: Isolate host', + } + ), + }, + response: { + isolationCompletedAndSuccessful: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.isolationCompletedAndSuccessful', + { + defaultMessage: 'Host isolation request completed by Endpoint', + } + ), + isolationCompletedAndUnsuccessful: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.isolationCompletedAndUnsuccessful', + { + defaultMessage: 'Host isolation request completed by Endpoint with errors', + } + ), + unisolationCompletedAndSuccessful: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.unisolationCompletedAndSuccessful', + { + defaultMessage: 'Release request completed by Endpoint', + } + ), + unisolationCompletedAndUnsuccessful: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.unisolationCompletedAndUnsuccessful', + { + defaultMessage: 'Release request completed by Endpoint with errors', + } + ), + isolationSuccessful: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.isolationSuccessful', + { + defaultMessage: 'Host isolation request received by Endpoint', + } + ), + isolationFailed: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.isolationFailed', + { + defaultMessage: 'Host isolation request received by Endpoint with errors', + } + ), + unisolationSuccessful: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.unisolationSuccessful', + { + defaultMessage: 'Release host request received by Endpoint', + } + ), + unisolationFailed: i18n.translate( + 'xpack.securitySolution.endpointDetails.activityLog.logEntry.response.unisolationFailed', + { + defaultMessage: 'Release host request received by Endpoint with errors', + } + ), + }, + }, +}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/url_from_query_params.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/url_from_query_params.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/url_from_query_params.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/endpoint_hosts/view/url_from_query_params.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/constants.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/service/api_client.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/api_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/service/api_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/api_client.test.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/service/api_client.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/api_client.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/service/api_client.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/api_client.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/test_utils/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/test_utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/test_utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/test_utils/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filters_flyout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/event_filters_flyout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filters_flyout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/event_filters_flyout.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filters_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/event_filters_flyout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filters_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/event_filters_flyout.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/form.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/form.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/process_descendant_tooltip.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/process_descendant_tooltip.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/process_descendant_tooltip.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/components/process_descendant_tooltip.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/integration_tests/event_filters_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/integration_tests/event_filters_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/view/integration_tests/event_filters_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/integration_tests/event_filters_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/view/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/event_filters/view/utils.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/host_isolation_exceptions_api_client.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/form.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/form.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/integration_tests/form.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/integration_tests/form.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/integration_tests/form.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/integration_tests/form.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/host_isolation_exceptions_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/host_isolation_exceptions_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/host_isolation_exceptions_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/host_isolation_exceptions_list.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/integration_tests/host_isolation_exceptions_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/integration_tests/host_isolation_exceptions_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/integration_tests/host_isolation_exceptions_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/integration_tests/host_isolation_exceptions_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/integration_tests/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/integration_tests/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/integration_tests/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/integration_tests/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/landing.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/landing.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/landing.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/landing.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/notes/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/notes/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/notes/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/notes/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/action/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/action/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/action/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/action/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/action/policy_settings_action.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/action/policy_settings_action.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/action/policy_settings_action.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/action/policy_settings_action.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/middleware/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/middleware/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/middleware/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/middleware/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/middleware/policy_settings_middleware.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/middleware/policy_settings_middleware.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/middleware/policy_settings_middleware.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/middleware/policy_settings_middleware.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/initial_policy_details_state.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/initial_policy_details_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/initial_policy_details_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/initial_policy_details_state.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/policy_settings_reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/policy_settings_reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/policy_settings_reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/reducer/policy_settings_reducer.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_common_selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_common_selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_common_selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_common_selectors.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_settings_selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_settings_selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_settings_selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_settings_selectors.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/test_mock_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/test_mock_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/store/test_mock_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/store/test_mock_utils.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/test_utils/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/test_utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/test_utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/test_utils/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/test_utils/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/test_utils/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/test_utils/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/test_utils/mocks.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/types.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/assignable/policy_artifacts_assignable_list.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/policy_artifacts_delete_modal.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/delete_modal/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/policy_artifacts_empty_unassigned.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/policy_artifacts_empty_unassigned.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/policy_artifacts_empty_unassigned.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/policy_artifacts_empty_unassigned.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/policy_artifacts_empty_unexisting.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/policy_artifacts_empty_unexisting.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/policy_artifacts_empty_unexisting.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/policy_artifacts_empty_unexisting.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/use_policy_artifacts_empty_hooks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/use_policy_artifacts_empty_hooks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/use_policy_artifacts_empty_hooks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/empty/use_policy_artifacts_empty_hooks.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/policy_artifacts_flyout.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/flyout/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/policy_artifacts_layout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/policy_artifacts_layout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/policy_artifacts_layout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/policy_artifacts_layout.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/policy_artifacts_layout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/policy_artifacts_layout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/policy_artifacts_layout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/policy_artifacts_layout.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/layout/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/list/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/list/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/list/policy_artifacts_list.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/list/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/list/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/list/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/artifacts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/artifacts/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/components/agents_summary.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/components/agents_summary.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/components/agents_summary.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/components/agents_summary.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/components/policy_endpoint_count.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/components/policy_endpoint_count.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/components/policy_endpoint_count.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/components/policy_endpoint_count.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/exception_items_summary.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/exception_items_summary.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/exception_items_summary.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/exception_items_summary.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/exception_items_summary.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/exception_items_summary.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/exception_items_summary.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/exception_items_summary.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/link_with_icon.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/link_with_icon.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/link_with_icon.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/components/link_with_icon.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_agent_tamper_protection_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_agent_tamper_protection_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_agent_tamper_protection_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_agent_tamper_protection_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_custom_assets_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_custom_assets_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_custom_assets_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_custom_assets_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_generic_errors_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_generic_errors_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_generic_errors_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_generic_errors_list.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/fleet_artifacts_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/fleet_artifacts_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/fleet_artifacts_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/fleet_artifacts_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/fleet_artifacts_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/fleet_artifacts_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/fleet_artifacts_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/fleet_artifacts_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/styled_components.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/styled_components.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/styled_components.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/styled_components.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/endpoint_package_custom_extension.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/endpoint_package_custom_extension.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/endpoint_package_custom_extension.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/endpoint_package_custom_extension.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/endpoint_package_custom_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/endpoint_package_custom_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/endpoint_package_custom_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/endpoint_package_custom_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/translations.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/components/endpoint_event_collection_preset.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/components/endpoint_event_collection_preset.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/components/endpoint_event_collection_preset.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/components/endpoint_event_collection_preset.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/components/help_text_with_padding.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/components/help_text_with_padding.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/components/help_text_with_padding.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/components/help_text_with_padding.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/constants.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/endpoint_policy_create_extension.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/endpoint_policy_create_extension.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/endpoint_policy_create_extension.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/endpoint_policy_create_extension.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/endpoint_policy_create_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/endpoint_policy_create_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/endpoint_policy_create_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/endpoint_policy_create_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_extension/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_multi_step_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_multi_step_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_multi_step_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_multi_step_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/endpoint_policy_artifact_cards.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/endpoint_policy_artifact_cards.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/endpoint_policy_artifact_cards.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/endpoint_policy_artifact_cards.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/fleet_integration_artifacts_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/fleet_integration_artifacts_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/fleet_integration_artifacts_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/fleet_integration_artifacts_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/fleet_integration_artifacts_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/fleet_integration_artifacts_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/fleet_integration_artifacts_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/components/fleet_integration_artifacts_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/endpoint_policy_edit_extension.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/endpoint_policy_edit_extension.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/endpoint_policy_edit_extension.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/endpoint_policy_edit_extension.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/endpoint_policy_edit_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/endpoint_policy_edit_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/endpoint_policy_edit_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/endpoint_policy_edit_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_edit_extension/translations.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_response_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_response_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_response_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_response_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/hooks/use_can_access_some_artifacts.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/hooks/use_can_access_some_artifacts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/hooks/use_can_access_some_artifacts.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/hooks/use_can_access_some_artifacts.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_agent_tamper_protection_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_agent_tamper_protection_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_agent_tamper_protection_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_agent_tamper_protection_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_custom_assets_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_custom_assets_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_custom_assets_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_custom_assets_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_generic_errors_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_generic_errors_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_generic_errors_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_generic_errors_list.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_package_custom_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_package_custom_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_package_custom_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_package_custom_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_multi_step_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_multi_step_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_multi_step_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_multi_step_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_edit_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_edit_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_edit_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_edit_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_response_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_response_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_response_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_response_extension.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/mocks.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/mocks.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/mocks.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/mocks.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/integration_tests/policy_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/integration_tests/policy_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/integration_tests/policy_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/integration_tests/policy_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_details.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_list.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/advanced_section.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/antivirus_registration_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/antivirus_registration_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/antivirus_registration_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/antivirus_registration_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/antivirus_registration_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/antivirus_registration_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/antivirus_registration_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/antivirus_registration_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/attack_surface_reduction_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/attack_surface_reduction_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/attack_surface_reduction_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/attack_surface_reduction_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/attack_surface_reduction_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/attack_surface_reduction_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/attack_surface_reduction_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/attack_surface_reduction_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/behaviour_protection_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/behaviour_protection_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/behaviour_protection_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/behaviour_protection_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/linux_event_collection_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/linux_event_collection_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/linux_event_collection_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/linux_event_collection_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/linux_event_collection_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/linux_event_collection_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/linux_event_collection_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/linux_event_collection_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/mac_event_collection_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/mac_event_collection_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/mac_event_collection_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/mac_event_collection_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/mac_event_collection_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/mac_event_collection_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/mac_event_collection_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/mac_event_collection_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/malware_protections_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/malware_protections_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/malware_protections_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/malware_protections_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/malware_protections_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/malware_protections_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/malware_protections_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/malware_protections_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/memory_protection_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/memory_protection_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/memory_protection_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/memory_protection_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/memory_protection_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/memory_protection_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/memory_protection_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/memory_protection_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/protection_seetings_card/behaviour_protection_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/protection_seetings_card/behaviour_protection_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/protection_seetings_card/behaviour_protection_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/protection_seetings_card/behaviour_protection_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/protection_seetings_card/components/reputation_service.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/protection_seetings_card/components/reputation_service.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/protection_seetings_card/components/reputation_service.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/protection_seetings_card/components/reputation_service.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/ransomware_protection_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/ransomware_protection_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/ransomware_protection_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/ransomware_protection_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/ransomware_protection_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/ransomware_protection_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/ransomware_protection_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/ransomware_protection_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/windows_event_collection_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/windows_event_collection_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/windows_event_collection_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/windows_event_collection_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/windows_event_collection_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/windows_event_collection_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/windows_event_collection_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/cards/windows_event_collection_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/detect_prevent_protection_level.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/detect_prevent_protection_level.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/detect_prevent_protection_level.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/detect_prevent_protection_level.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/detect_prevent_protection_level.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/detect_prevent_protection_level.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/detect_prevent_protection_level.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/detect_prevent_protection_level.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_collection_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/event_merging_banner.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/notify_user_option.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/notify_user_option.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/notify_user_option.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/notify_user_option.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/notify_user_option.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/notify_user_option.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/notify_user_option.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/notify_user_option.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/protection_setting_card_switch.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/protection_setting_card_switch.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/protection_setting_card_switch.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/protection_setting_card_switch.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/protection_setting_card_switch.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/protection_setting_card_switch.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/protection_setting_card_switch.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/protection_setting_card_switch.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/related_detection_rules_callout.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_locked_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_locked_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_locked_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_locked_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_locked_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_locked_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_locked_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/components/setting_locked_card.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/constants.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/hooks/use_get_custom_notification_unavailable_component.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/hooks/use_get_custom_notification_unavailable_component.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/hooks/use_get_custom_notification_unavailable_component.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/hooks/use_get_custom_notification_unavailable_component.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/hooks/use_get_protections_unavailable_component.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/hooks/use_get_protections_unavailable_component.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/hooks/use_get_protections_unavailable_component.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/hooks/use_get_protections_unavailable_component.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/mocks.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/policy_settings_form.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/policy_settings_form.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/policy_settings_form.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/policy_settings_form.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/policy_settings_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/policy_settings_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/policy_settings_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/policy_settings_form.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/protection_notice_supported_endpoint_version.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/protection_notice_supported_endpoint_version.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/protection_notice_supported_endpoint_version.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/protection_notice_supported_endpoint_version.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_form/types.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/components/policy_form_confirm_update.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/components/policy_form_confirm_update.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/components/policy_form_confirm_update.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/components/policy_form_confirm_update.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/components/protection_updates_bottom_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/components/protection_updates_bottom_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/components/protection_updates_bottom_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/components/protection_updates_bottom_bar.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/components/protection_updates_warning_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/components/protection_updates_warning_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/components/protection_updates_warning_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/components/protection_updates_warning_panel.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_note.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_note.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_note.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_note.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_unavailable_component.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_unavailable_component.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_unavailable_component.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_get_protection_updates_unavailable_component.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_post_protection_updates_note.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_post_protection_updates_note.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_post_protection_updates_note.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/hooks/use_post_protection_updates_note.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/blocklists_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/blocklists_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/blocklists_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/blocklists_translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/event_filters_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/event_filters_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/event_filters_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/event_filters_translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/host_isolation_exceptions_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/host_isolation_exceptions_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/host_isolation_exceptions_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/host_isolation_exceptions_translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/policy_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/policy_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/policy_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/policy_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/trusted_apps_translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/trusted_apps_translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/trusted_apps_translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/trusted_apps_translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/unsaved_changes_confirm_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/unsaved_changes_confirm_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/unsaved_changes_confirm_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/policy/view/tabs/unsaved_changes_confirm_modal.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/response_actions/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/response_actions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/response_actions/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/response_actions/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/response_actions/view/response_actions_list_page.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/constants.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/service/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/service/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/state/type_guards.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/state/type_guards.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/state/type_guards.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/state/type_guards.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/artifacts_docs_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/artifacts_docs_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/artifacts_docs_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/artifacts_docs_link.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_entry_input/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_entry_input/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_entry_input/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_entry_input/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_entry_input/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_entry_input/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_entry_input/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_entry_input/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_group/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_group/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_group/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_group/index.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/empty_state.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/empty_state.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/empty_state.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/empty_state.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/form.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/form.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/form.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/form.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/form.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/form.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/logical_condition/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/logical_condition/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/logical_condition/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/logical_condition/index.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/logical_condition/logical_condition_builder.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/logical_condition/logical_condition_builder.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/logical_condition/logical_condition_builder.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/components/logical_condition/logical_condition_builder.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/translations.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_list.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/management/reporter_config.json b/x-pack/solutions/security/plugins/security_solution/public/management/reporter_config.json new file mode 100644 index 0000000000000..6155a3bbd802a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/management/reporter_config.json @@ -0,0 +1,16 @@ +{ + "reporterEnabled": "mochawesome, mocha-junit-reporter, buildkite-test-collector/mocha/reporter", + "buildkiteTestCollectorMochaReporterReporterOptions": { + "token_name": "BK_ANALYTICS_API_KEY", + "follow-symlinks": true, + "timeout": 120, + "upload-concurrency": 50 + }, + "reporterOptions": { + "html": false, + "json": true, + "mochaFile": "../../../../../target/kibana-security-solution/cypress/results/TEST-security-solution-cypress-[hash].xml", + "overwrite": false, + "reportDir": "../../../../../target/kibana-security-solution/cypress/results" + } +} diff --git a/x-pack/plugins/security_solution/public/management/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/management/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/management/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/management/routes.tsx diff --git a/x-pack/plugins/security_solution/public/management/services/exceptions_list/check_artifact_has_data.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/exceptions_list/check_artifact_has_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/exceptions_list/check_artifact_has_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/exceptions_list/check_artifact_has_data.ts diff --git a/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.test.ts diff --git a/x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/exceptions_list/exceptions_list_api_client.ts diff --git a/x-pack/plugins/security_solution/public/management/services/policies/hooks.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/policies/hooks.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/policies/hooks.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/policies/hooks.test.ts diff --git a/x-pack/plugins/security_solution/public/management/services/policies/hooks.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/policies/hooks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/policies/hooks.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/policies/hooks.ts diff --git a/x-pack/plugins/security_solution/public/management/services/policies/ingest.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/policies/ingest.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/policies/ingest.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/policies/ingest.test.ts diff --git a/x-pack/plugins/security_solution/public/management/services/policies/ingest.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/policies/ingest.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/policies/ingest.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/policies/ingest.ts diff --git a/x-pack/plugins/security_solution/public/management/services/policies/policies.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/policies/policies.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/policies/policies.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/policies/policies.test.ts diff --git a/x-pack/plugins/security_solution/public/management/services/policies/policies.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/policies/policies.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/policies/policies.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/policies/policies.ts diff --git a/x-pack/plugins/security_solution/public/management/services/policies/test_mock_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/management/services/policies/test_mock_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/services/policies/test_mock_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/services/policies/test_mock_utils.ts diff --git a/x-pack/plugins/security_solution/public/management/state/README.md b/x-pack/solutions/security/plugins/security_solution/public/management/state/README.md similarity index 100% rename from x-pack/plugins/security_solution/public/management/state/README.md rename to x-pack/solutions/security/plugins/security_solution/public/management/state/README.md diff --git a/x-pack/plugins/security_solution/public/management/state/async_resource_builders.ts b/x-pack/solutions/security/plugins/security_solution/public/management/state/async_resource_builders.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/state/async_resource_builders.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/state/async_resource_builders.ts diff --git a/x-pack/plugins/security_solution/public/management/state/async_resource_state.test.ts b/x-pack/solutions/security/plugins/security_solution/public/management/state/async_resource_state.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/state/async_resource_state.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/state/async_resource_state.test.ts diff --git a/x-pack/plugins/security_solution/public/management/state/async_resource_state.ts b/x-pack/solutions/security/plugins/security_solution/public/management/state/async_resource_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/state/async_resource_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/state/async_resource_state.ts diff --git a/x-pack/plugins/security_solution/public/management/state/index.ts b/x-pack/solutions/security/plugins/security_solution/public/management/state/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/state/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/state/index.ts diff --git a/x-pack/plugins/security_solution/public/management/store/middleware.ts b/x-pack/solutions/security/plugins/security_solution/public/management/store/middleware.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/store/middleware.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/store/middleware.ts diff --git a/x-pack/plugins/security_solution/public/management/store/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/management/store/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/store/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/store/reducer.ts diff --git a/x-pack/plugins/security_solution/public/management/types.ts b/x-pack/solutions/security/plugins/security_solution/public/management/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/management/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/management/types.ts diff --git a/x-pack/plugins/security_solution/public/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/mocks.ts diff --git a/x-pack/plugins/security_solution/public/notes/api/api.test.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/api/api.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/api/api.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/api/api.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/notes/api/api.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/api/api.ts new file mode 100644 index 0000000000000..b09398054a04d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/notes/api/api.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + BareNote, + GetNotesResponse, + PersistNoteRouteResponse, +} from '../../../common/api/timeline'; +import type { AssociatedFilter } from '../../../common/notes/constants'; +import { KibanaServices } from '../../common/lib/kibana'; +import { NOTE_URL } from '../../../common/constants'; + +/** + * Adds a new note. + * This code is very close to the persistNote found in x-pack/solutions/security/plugins/security_solution/public/timelines/containers/notes/api.ts. + * // TODO remove the old method when the transition to the new notes system is complete + */ +export const createNote = async ({ note }: { note: BareNote }) => { + try { + const response = await KibanaServices.get().http.patch(NOTE_URL, { + method: 'PATCH', + body: JSON.stringify({ note }), + version: '2023-10-31', + }); + return response.note; + } catch (err) { + throw new Error(('message' in err && err.message) || 'Request failed'); + } +}; + +export const fetchNotes = async ({ + page, + perPage, + sortField, + sortOrder, + filter, + createdByFilter, + associatedFilter, + search, +}: { + page: number; + perPage: number; + sortField: string; + sortOrder: string; + filter: string; + createdByFilter: string; + associatedFilter: AssociatedFilter; + search: string; +}) => { + const response = await KibanaServices.get().http.get(NOTE_URL, { + query: { + page, + perPage, + sortField, + sortOrder, + filter, + createdByFilter, + associatedFilter, + search, + }, + version: '2023-10-31', + }); + return response; +}; + +/** + * Fetches all the notes for an array of document ids + */ +export const fetchNotesByDocumentIds = async (documentIds: string[]) => { + const response = await KibanaServices.get().http.get(NOTE_URL, { + query: { documentIds }, + version: '2023-10-31', + }); + return response; +}; + +/** + * Fetches all the notes for an array of saved object ids + */ +export const fetchNotesBySaveObjectIds = async (savedObjectIds: string[]) => { + const response = await KibanaServices.get().http.get(NOTE_URL, { + query: { savedObjectIds }, + version: '2023-10-31', + }); + return response; +}; + +/** + * Deletes multiple notes + */ +export const deleteNotes = async (noteIds: string[]) => { + const response = await KibanaServices.get().http.delete(NOTE_URL, { + body: JSON.stringify({ noteIds }), + version: '2023-10-31', + }); + return response; +}; diff --git a/x-pack/plugins/security_solution/public/notes/components/add_note.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/add_note.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/add_note.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/add_note.test.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/add_note.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/add_note.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/add_note.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/add_note.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/created_by_filter_dropdown.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/created_by_filter_dropdown.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/created_by_filter_dropdown.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/created_by_filter_dropdown.test.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/created_by_filter_dropdown.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/created_by_filter_dropdown.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/created_by_filter_dropdown.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/created_by_filter_dropdown.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/delete_confirm_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/delete_confirm_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/delete_confirm_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/delete_confirm_modal.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/delete_note_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/delete_note_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/delete_note_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/delete_note_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/delete_note_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/delete_note_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/delete_note_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/delete_note_button.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/note_content.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/note_content.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/note_content.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/note_content.test.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/note_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/note_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/note_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/note_content.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/notes_list.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/notes_list.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/notes_list.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/notes_list.test.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/notes_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/notes_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/notes_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/notes_list.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/open_flyout_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/open_flyout_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/open_flyout_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/open_flyout_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/open_flyout_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/open_flyout_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/open_flyout_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/open_flyout_button.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/open_timeline_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/open_timeline_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/open_timeline_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/open_timeline_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/open_timeline_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/open_timeline_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/open_timeline_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/open_timeline_button.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/search_row.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/search_row.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/search_row.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/search_row.test.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/search_row.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/search_row.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/search_row.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/search_row.tsx diff --git a/x-pack/plugins/security_solution/public/notes/components/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/components/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/notes/components/utility_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/components/utility_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/components/utility_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/components/utility_bar.tsx diff --git a/x-pack/plugins/security_solution/public/notes/hooks/use_fetch_notes.test.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/hooks/use_fetch_notes.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/hooks/use_fetch_notes.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/hooks/use_fetch_notes.test.ts diff --git a/x-pack/plugins/security_solution/public/notes/hooks/use_fetch_notes.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/hooks/use_fetch_notes.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/hooks/use_fetch_notes.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/hooks/use_fetch_notes.ts diff --git a/x-pack/plugins/security_solution/public/notes/index.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/notes/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/notes/jest.config.js new file mode 100644 index 0000000000000..c3f3cd3b77735 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/notes/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/notes'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/notes', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/notes/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/notes/links.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/links.ts diff --git a/x-pack/plugins/security_solution/public/notes/pages/note_management_page.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/pages/note_management_page.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/pages/note_management_page.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/pages/note_management_page.tsx diff --git a/x-pack/plugins/security_solution/public/notes/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/notes/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/notes/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/notes/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/notes/routes.tsx diff --git a/x-pack/plugins/security_solution/public/notes/store/normalize.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/store/normalize.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/store/normalize.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/store/normalize.ts diff --git a/x-pack/plugins/security_solution/public/notes/store/notes.slice.test.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/store/notes.slice.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/store/notes.slice.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/store/notes.slice.test.ts diff --git a/x-pack/plugins/security_solution/public/notes/store/notes.slice.ts b/x-pack/solutions/security/plugins/security_solution/public/notes/store/notes.slice.ts similarity index 100% rename from x-pack/plugins/security_solution/public/notes/store/notes.slice.ts rename to x-pack/solutions/security/plugins/security_solution/public/notes/store/notes.slice.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/__mocks__/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/__mocks__/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/__mocks__/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/__mocks__/mocks.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/__mocks__/onboarding_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/__mocks__/onboarding_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/__mocks__/onboarding_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/__mocks__/onboarding_context.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/__snapshots__/onboarding_context.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/__snapshots__/onboarding_context.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/__snapshots__/onboarding_context.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/__snapshots__/onboarding_context.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/onboarding/components/hooks/use_onboarding_service.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/hooks/use_onboarding_service.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/hooks/use_onboarding_service.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/hooks/use_onboarding_service.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/hooks/use_stored_state.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/hooks/use_stored_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/hooks/use_stored_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/hooks/use_stored_state.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/hooks/use_topic_id.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/hooks/use_topic_id.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/hooks/use_topic_id.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/hooks/use_topic_id.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/hooks/use_url_detail.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/hooks/use_url_detail.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/hooks/use_url_detail.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/hooks/use_url_detail.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/lib/__mocks__/telemetry.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/lib/__mocks__/telemetry.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/lib/__mocks__/telemetry.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/lib/__mocks__/telemetry.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/lib/telemetry.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/lib/telemetry.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/lib/telemetry.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/lib/telemetry.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_banner/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_banner/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_banner/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_banner/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_banner/onboarding_banner.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_banner/onboarding_banner.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_banner/onboarding_banner.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_banner/onboarding_banner.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/body_config.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/body_config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/body_config.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/body_config.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/alerts_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/alerts_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/alerts_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/alerts_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/alerts_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/alerts_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/alerts_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/alerts_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/images/alerts.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/images/alerts.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/images/alerts.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/images/alerts.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/images/alerts_icon.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/images/alerts_icon.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/images/alerts_icon.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/images/alerts_icon.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/alerts/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/assistant_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/assistant_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/assistant_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/assistant_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/assistant_check_complete.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/assistant_check_complete.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/assistant_check_complete.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/assistant_check_complete.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/types.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/types.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/attack_discover_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/attack_discover_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/attack_discover_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/attack_discover_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/attack_discovery_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/attack_discovery_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/attack_discovery_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/attack_discovery_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/images/attack_discovery.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/images/attack_discovery.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/images/attack_discovery.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/images/attack_discovery.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/images/attack_discovery_icon.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/images/attack_discovery_icon.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/images/attack_discovery_icon.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/images/attack_discovery_icon.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/attack_discovery/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_callout.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_callout.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_callout.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_callout.styles.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_image_panel.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_image_panel.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_image_panel.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_image_panel.styles.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_image_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_image_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_image_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_image_panel.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_panel.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_panel.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_panel.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_panel.styles.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_content_panel.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_link_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_link_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_link_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_link_button.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_subdued_text.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_subdued_text.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_subdued_text.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/card_subdued_text.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/connector_cards.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/connector_cards.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/connector_cards.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/connector_cards.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/connector_setup.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/connector_setup.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/connector_setup.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/connector_setup.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/constants.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/create_connector_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/create_connector_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/create_connector_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/create_connector_popover.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/hooks/use_load_action_types.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/hooks/use_load_action_types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/hooks/use_load_action_types.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/hooks/use_load_action_types.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/missing_privileges.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/missing_privileges.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/missing_privileges.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/missing_privileges.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/common/connectors/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/dashboards_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/dashboards_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/dashboards_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/dashboards_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/dashboards_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/dashboards_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/dashboards_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/dashboards_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/images/dashboards.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/images/dashboards.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/images/dashboards.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/images/dashboards.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/images/dashboards_icon.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/images/dashboards_icon.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/images/dashboards_icon.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/images/dashboards_icon.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/__mocks__/integration_card_grid_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/__mocks__/integration_card_grid_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/__mocks__/integration_card_grid_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/__mocks__/integration_card_grid_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/__mocks__/package_list_grid.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/__mocks__/package_list_grid.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/__mocks__/package_list_grid.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/__mocks__/package_list_grid.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/agent_required_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/agent_required_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/agent_required_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/agent_required_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/agentless_available_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/agentless_available_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/agentless_available_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/agentless_available_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/endpoint_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/endpoint_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/endpoint_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/endpoint_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/installed_integrations_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/installed_integrations_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/installed_integrations_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/installed_integrations_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/integration_card_top_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/integration_card_top_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/integration_card_top_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/integration_card_top_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/manage_integrations_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/manage_integrations_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/manage_integrations_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/__mocks__/manage_integrations_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agent_required_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agent_required_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agent_required_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agent_required_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agent_required_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agent_required_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agent_required_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agent_required_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agentless_available_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agentless_available_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agentless_available_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agentless_available_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agentless_available_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agentless_available_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agentless_available_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/agentless_available_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/endpoint_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/endpoint_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/endpoint_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/endpoint_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/endpoint_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/endpoint_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/endpoint_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/endpoint_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/installed_integrations_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/installed_integrations_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/installed_integrations_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/installed_integrations_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/installed_integrations_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/installed_integrations_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/installed_integrations_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/installed_integrations_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/integration_card_top_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/integration_card_top_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/integration_card_top_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/integration_card_top_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/integration_card_top_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/integration_card_top_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/integration_card_top_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/integration_card_top_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/manage_integrations_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/manage_integrations_callout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/manage_integrations_callout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/manage_integrations_callout.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/manage_integrations_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/manage_integrations_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/manage_integrations_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/callouts/manage_integrations_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/constants.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/images/integrations_icon.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/images/integrations_icon.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/images/integrations_icon.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/images/integrations_icon.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_card_grid_tabs.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_card_grid_tabs.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_card_grid_tabs.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_card_grid_tabs.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_card_grid_tabs.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_card_grid_tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_card_grid_tabs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_card_grid_tabs.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_tabs_configs.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_tabs_configs.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_tabs_configs.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integration_tabs_configs.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_check_complete.test.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_check_complete.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_check_complete.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_check_complete.test.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_check_complete.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_check_complete.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_check_complete.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/integrations_check_complete.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/types.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/types.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/use_integration_card_list.test.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/use_integration_card_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/use_integration_card_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/use_integration_card_list.test.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/use_integration_card_list.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/use_integration_card_list.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/use_integration_card_list.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/integrations/use_integration_card_list.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/images/rules.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/images/rules.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/images/rules.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/images/rules.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/images/rules_icon.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/images/rules_icon.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/images/rules_icon.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/images/rules_icon.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_check_complete.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_check_complete.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_check_complete.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/rules_check_complete.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/rules/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/ai_connector_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/ai_connector_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/ai_connector_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/ai_connector_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/connectors_check_complete.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/connectors_check_complete.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/connectors_check_complete.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/connectors_check_complete.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/types.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/types.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/context.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/context.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/images/card_header_icon.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/images/card_header_icon.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/images/card_header_icon.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/images/card_header_icon.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/missing_ai_connector_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/missing_ai_connector_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/missing_ai_connector_callout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/missing_ai_connector_callout.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_progress_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_progress_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_progress_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_progress_panel.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_ready_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_ready_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_ready_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_ready_panel.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_result_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_result_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_result_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_result_panel.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/upload_rules_panel.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/upload_rules_panel.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/upload_rules_panel.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/upload_rules_panel.styles.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/upload_rules_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/upload_rules_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/upload_rules_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/upload_rules_panel.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.styles.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx similarity index 80% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx index c1e7539c8e101..a8d7aa78d0c93 100644 --- a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx @@ -5,8 +5,9 @@ * 2.0. */ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { EuiSpacer, EuiText } from '@elastic/eui'; +import { SiemMigrationTaskStatus } from '../../../../../../../common/siem_migrations/constants'; import { OnboardingCardId } from '../../../../../constants'; import type { RuleMigrationTaskStats } from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; import { useLatestStats } from '../../../../../../siem_migrations/rules/service/hooks/use_latest_stats'; @@ -21,22 +22,29 @@ import * as i18n from './translations'; import { MissingAIConnectorCallout } from './missing_ai_connector_callout'; export const StartMigrationCard: OnboardingCardComponent = React.memo( - ({ checkComplete, isCardComplete, setExpandedCardId }) => { + ({ setComplete, isCardComplete, setExpandedCardId }) => { const styles = useStyles(); - const { data: migrationsStats, isLoading } = useLatestStats(); + const { data: migrationsStats, isLoading, refreshStats } = useLatestStats(); const [isFlyoutOpen, setIsFlyoutOpen] = useState(); const [flyoutMigrationStats, setFlyoutMigrationStats] = useState< RuleMigrationTaskStats | undefined >(); + useEffect(() => { + // Set card complete if any migration is finished + if (!isCardComplete(OnboardingCardId.siemMigrationsStart) && migrationsStats) { + if (migrationsStats.some(({ status }) => status === SiemMigrationTaskStatus.FINISHED)) { + setComplete(true); + } + } + }, [isCardComplete, migrationsStats, setComplete]); + const closeFlyout = useCallback(() => { setIsFlyoutOpen(false); setFlyoutMigrationStats(undefined); - if (!isCardComplete(OnboardingCardId.siemMigrationsStart)) { - checkComplete(); - } - }, [checkComplete, isCardComplete]); + refreshStats(); + }, [refreshStats]); const openFlyout = useCallback((migrationStats?: RuleMigrationTaskStats) => { setFlyoutMigrationStats(migrationStats); diff --git a/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts new file mode 100644 index 0000000000000..79a7238b9554e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SiemMigrationTaskStatus } from '../../../../../../../common/siem_migrations/constants'; +import type { OnboardingCardCheckComplete } from '../../../../../types'; + +export const checkStartMigrationCardComplete: OnboardingCardCheckComplete = async ({ + siemMigrations, +}) => { + const migrationsStats = await siemMigrations.rules.getRuleMigrationsStats(); + const isComplete = migrationsStats.some( + (migrationStats) => migrationStats.status === SiemMigrationTaskStatus.FINISHED + ); + return isComplete; +}; diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx index 95b53d921fd1f..6d011fc5fbb5b 100644 --- a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx @@ -28,7 +28,7 @@ export const UploadRulesPanels = React.memo(({ migration {migrationsStats.map((migrationStats) => ( - + {migrationStats.status === SiemMigrationTaskStatus.READY && ( )} diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_body_config.test.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_body_config.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_body_config.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_body_config.test.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_body_config.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_body_config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_body_config.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_body_config.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_completed_cards.test.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_completed_cards.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_completed_cards.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_completed_cards.test.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_completed_cards.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_completed_cards.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_completed_cards.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_completed_cards.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_expanded_card.test.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_expanded_card.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_expanded_card.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_expanded_card.test.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_expanded_card.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_expanded_card.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_expanded_card.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/hooks/use_expanded_card.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_body.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_group.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_group.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_group.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_group.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.styles.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/onboarding_card_panel.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_context.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_context.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_context.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_context.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_context.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/constants.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/footer_items.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/footer_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/footer_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/footer_items.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/demo.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/demo.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/demo.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/demo.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/demo_dark.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/demo_dark.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/demo_dark.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/demo_dark.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/documentation.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/documentation.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/documentation.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/documentation.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/documentation_dark.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/documentation_dark.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/documentation_dark.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/documentation_dark.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/forum.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/forum.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/forum.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/forum.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/forum_dark.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/forum_dark.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/forum_dark.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/forum_dark.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/labs.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/labs.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/labs.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/labs.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/labs_dark.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/labs_dark.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/images/labs_dark.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/images/labs_dark.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.styles.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_footer/onboarding_footer.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.styles.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.test.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/common/link_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/demo_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/demo_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/demo_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/demo_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/images/demo_card.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/images/demo_card.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/images/demo_card.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/images/demo_card.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/images/demo_card_dark.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/images/demo_card_dark.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/images/demo_card_dark.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/images/demo_card_dark.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/demo_card/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/images/teammates_card.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/images/teammates_card.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/images/teammates_card.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/images/teammates_card.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/images/teammates_card_dark.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/images/teammates_card_dark.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/images/teammates_card_dark.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/images/teammates_card_dark.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/teammates_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/teammates_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/teammates_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/teammates_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/teammates_card/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/images/video_card.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/images/video_card.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/images/video_card.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/images/video_card.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/images/video_card_dark.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/images/video_card_dark.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/images/video_card_dark.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/images/video_card_dark.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/video_card.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/video_card.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/video_card.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/video_card.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/video_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/video_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/video_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/cards/video_card/video_modal.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/constants.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/images/header_rocket.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/images/header_rocket.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/images/header_rocket.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/images/header_rocket.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/images/header_rocket_dark.png b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/images/header_rocket_dark.png similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/images/header_rocket_dark.png rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/images/header_rocket_dark.png diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header.styles.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header.styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header.styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header.styles.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header_topic_selector.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header_topic_selector.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header_topic_selector.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/onboarding_header_topic_selector.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_header/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_header/translations.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_route.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_route.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/components/onboarding_route.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_route.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/config.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/config.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/config.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/config.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/constants.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/onboarding/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/onboarding/jest.config.js new file mode 100644 index 0000000000000..fcee8bbf04e00 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/onboarding/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/onboarding'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/onboarding', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/onboarding/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/onboarding/links.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/links.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/onboarding/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/routes.tsx diff --git a/x-pack/plugins/security_solution/public/onboarding/service/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/service/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/service/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/service/index.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/service/onboarding_service.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/service/onboarding_service.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/service/onboarding_service.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/service/onboarding_service.ts diff --git a/x-pack/plugins/security_solution/public/onboarding/types.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/onboarding/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/onboarding/types.ts diff --git a/x-pack/plugins/security_solution/public/one_discover/app_wrapper/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/one_discover/app_wrapper/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/one_discover/app_wrapper/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/one_discover/app_wrapper/index.tsx diff --git a/x-pack/plugins/security_solution/public/one_discover/cell_renderers/cell_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/one_discover/cell_renderers/cell_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/one_discover/cell_renderers/cell_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/one_discover/cell_renderers/cell_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/one_discover/cell_renderers/cell_renderers.tsx b/x-pack/solutions/security/plugins/security_solution/public/one_discover/cell_renderers/cell_renderers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/one_discover/cell_renderers/cell_renderers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/one_discover/cell_renderers/cell_renderers.tsx diff --git a/x-pack/plugins/security_solution/public/one_discover/cell_renderers/index.ts b/x-pack/solutions/security/plugins/security_solution/public/one_discover/cell_renderers/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/one_discover/cell_renderers/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/one_discover/cell_renderers/index.ts diff --git a/x-pack/plugins/security_solution/public/one_discover/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/one_discover/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/one_discover/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/one_discover/constants.ts diff --git a/x-pack/plugins/security_solution/public/one_discover/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/one_discover/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/one_discover/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/one_discover/index.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/one_discover/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/one_discover/jest.config.js new file mode 100644 index 0000000000000..0e60495a03ccf --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/one_discover/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/one_discover'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/one_discover', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/one_discover/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/overview/components/common.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/common.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/common.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/common.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/alerts_by_status.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/chart_label.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/chart_label.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/chart_label.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/chart_label.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/index.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/index.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/types.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/types.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status_visualization_data.test.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status_visualization_data.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status_visualization_data.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status_visualization_data.test.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status_visualization_data.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status_visualization_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status_visualization_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/use_alerts_by_status_visualization_data.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/cases_by_status.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_by_status/use_cases_by_status.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/cases_table.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/index.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/index.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/status_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/status_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/status_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/status_badge.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.test.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.test.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/cases_table/use_case_items.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/hooks/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/hooks/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/hooks/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/hooks/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/hooks/use_navigate_to_timeline.test.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/hooks/use_navigate_to_timeline.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/hooks/use_navigate_to_timeline.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/hooks/use_navigate_to_timeline.test.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/hooks/use_navigate_to_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/hooks/use_navigate_to_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/hooks/use_navigate_to_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/hooks/use_navigate_to_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/host_alerts_table.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/index.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/index.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.test.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.test.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/host_alerts_table/use_host_alerts_items.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/rule_alerts_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/rule_alerts_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/rule_alerts_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/rule_alerts_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/rule_alerts_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/rule_alerts_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/rule_alerts_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/rule_alerts_table.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/use_rule_alerts_items.test.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/use_rule_alerts_items.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/use_rule_alerts_items.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/use_rule_alerts_items.test.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/use_rule_alerts_items.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/use_rule_alerts_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/use_rule_alerts_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/rule_alerts_table/use_rule_alerts_items.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/date_picker_lock/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/date_picker_lock/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/date_picker_lock/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/date_picker_lock/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/date_picker_lock/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/date_picker_lock/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/date_picker_lock/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/date_picker_lock/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/helpers.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/stat_reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/stat_reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/stat_reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/stat_reducer.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_cases_mttr.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_cases_mttr.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_cases_mttr.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_cases_mttr.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_cases_mttr.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_cases_mttr.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_cases_mttr.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_cases_mttr.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_critical_alerts.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_critical_alerts.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_critical_alerts.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_critical_alerts.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_critical_alerts.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_critical_alerts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_critical_alerts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_critical_alerts.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_soc_trends.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_soc_trends.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_soc_trends.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_soc_trends.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_soc_trends.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_soc_trends.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_soc_trends.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/hooks/use_soc_trends.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/soc_trends.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/soc_trends.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/soc_trends.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/soc_trends.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/soc_trends/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/soc_trends/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/index.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/index.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/mock_data.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/mock_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/mock_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/mock_data.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.test.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.test.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/use_user_alerts_items.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/user_alerts_table/user_alerts_table.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/utils.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/utils.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/detection_response/utils.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/detection_response/utils.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/endpoint_notice/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/endpoint_notice/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/endpoint_notice/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/endpoint_notice/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/event_counts/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/event_counts/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/event_counts/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/event_counts/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/event_counts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/event_counts/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/host_overview/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/endpoint_overview/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/host_overview/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/host_overview/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/mock.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/host_overview/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/host_overview/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/disabled_link_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/disabled_link_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/disabled_link_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/disabled_link_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/disabled_link_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/disabled_link_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/disabled_link_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/disabled_link_panel.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/helpers.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/index.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/index.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/link.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/link.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/link.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/link.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/link.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/link.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/link_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/link_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/link_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/link_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/link_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/link_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/link_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/link_panel.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/types.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/link_panel/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/link_panel/types.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/loading_placeholders/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/loading_placeholders/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/loading_placeholders/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/loading_placeholders/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/cti_disabled_module.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/cti_disabled_module.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/cti_disabled_module.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/cti_disabled_module.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/cti_disabled_module.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/cti_disabled_module.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/cti_disabled_module.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/cti_disabled_module.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/cti_enabled_module.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/cti_enabled_module.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/cti_enabled_module.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/cti_enabled_module.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/cti_enabled_module.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/cti_enabled_module.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/cti_enabled_module.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/cti_enabled_module.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/mock.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/threat_intel_panel_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/threat_intel_panel_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/threat_intel_panel_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/threat_intel_panel_view.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/use_integrations_page_link.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/use_integrations_page_link.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_cti_links/use_integrations_page_link.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_cti_links/use_integrations_page_link.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_host/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_host/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_host/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_host/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_host_stats/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host_stats/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_host_stats/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host_stats/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_host_stats/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host_stats/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_host_stats/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host_stats/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_host_stats/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host_stats/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_host_stats/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host_stats/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_host_stats/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host_stats/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_host_stats/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_host_stats/mock.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_network/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_network/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_network/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_network/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_network_stats/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network_stats/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_network_stats/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network_stats/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_network_stats/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network_stats/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_network_stats/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network_stats/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_network_stats/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network_stats/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_network_stats/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network_stats/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_network_stats/mock.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network_stats/mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/overview_network_stats/mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/overview_network_stats/mock.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/recent_cases/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_cases/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/recent_cases/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_cases/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/recent_timelines/counts/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/counts/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/recent_timelines/counts/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/counts/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/recent_timelines/filters/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/filters/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/recent_timelines/filters/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/filters/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/recent_timelines/header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/recent_timelines/header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/header/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/recent_timelines/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/recent_timelines/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/recent_timelines/recent_timelines.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/recent_timelines.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/recent_timelines/recent_timelines.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/recent_timelines.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/recent_timelines/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/recent_timelines/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/recent_timelines/types.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/recent_timelines/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/recent_timelines/types.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/sidebar/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/sidebar/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/sidebar/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/sidebar/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/sidebar/sidebar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/sidebar/sidebar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/sidebar/sidebar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/sidebar/sidebar.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/sidebar/sidebar.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/sidebar/sidebar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/sidebar/sidebar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/sidebar/sidebar.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/signals_by_category/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/signals_by_category/index.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/signals_by_category/signals_by_category.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/use_filters_for_signals_by_category.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/signals_by_category/use_filters_for_signals_by_category.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/signals_by_category/use_filters_for_signals_by_category.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/signals_by_category/use_filters_for_signals_by_category.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/stat_value.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/stat_value.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/stat_value.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/stat_value.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/types.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/types.ts diff --git a/x-pack/plugins/security_solution/public/overview/components/user_overview/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/overview/components/user_overview/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/user_overview/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/user_overview/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/overview/components/user_overview/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/user_overview/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/user_overview/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/user_overview/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/components/user_overview/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/user_overview/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/components/user_overview/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/components/user_overview/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/components/user_overview/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/components/user_overview/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/containers/overview_cti_links/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_cti_links/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/containers/overview_cti_links/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_cti_links/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/containers/overview_cti_links/use_all_ti_data_sources.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_cti_links/use_all_ti_data_sources.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/containers/overview_cti_links/use_all_ti_data_sources.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_cti_links/use_all_ti_data_sources.ts diff --git a/x-pack/plugins/security_solution/public/overview/containers/overview_cti_links/use_ti_data_sources.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_cti_links/use_ti_data_sources.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/containers/overview_cti_links/use_ti_data_sources.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_cti_links/use_ti_data_sources.ts diff --git a/x-pack/plugins/security_solution/public/overview/containers/overview_host/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_host/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/containers/overview_host/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_host/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/containers/overview_host/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_host/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/containers/overview_host/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_host/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/containers/overview_host/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_host/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/containers/overview_host/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_host/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/containers/overview_network/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_network/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/containers/overview_network/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_network/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/containers/overview_network/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_network/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/containers/overview_network/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_network/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/containers/overview_network/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_network/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/containers/overview_network/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/containers/overview_network/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/index.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/overview/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/overview/jest.config.js new file mode 100644 index 0000000000000..b7348132cd6af --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/overview/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/overview'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/overview', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/overview/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/overview/links.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/links.ts diff --git a/x-pack/plugins/security_solution/public/overview/pages/data_quality.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/pages/data_quality.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/pages/data_quality.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/pages/data_quality.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/pages/data_quality.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/pages/data_quality.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/pages/data_quality.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/pages/data_quality.tsx diff --git a/x-pack/plugins/security_solution/public/overview/pages/detection_response.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/pages/detection_response.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/pages/detection_response.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/pages/detection_response.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/pages/detection_response.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/pages/detection_response.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/pages/detection_response.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/pages/detection_response.tsx diff --git a/x-pack/plugins/security_solution/public/overview/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/overview/pages/overview.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/pages/overview.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/pages/overview.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/pages/overview.test.tsx diff --git a/x-pack/plugins/security_solution/public/overview/pages/overview.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/pages/overview.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/pages/overview.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/pages/overview.tsx diff --git a/x-pack/plugins/security_solution/public/overview/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/overview/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/overview/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/overview/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/overview/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/overview/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/overview/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/overview/routes.tsx diff --git a/x-pack/plugins/security_solution/public/plugin.tsx b/x-pack/solutions/security/plugins/security_solution/public/plugin.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/plugin.tsx rename to x-pack/solutions/security/plugins/security_solution/public/plugin.tsx diff --git a/x-pack/plugins/security_solution/public/plugin_contract.ts b/x-pack/solutions/security/plugins/security_solution/public/plugin_contract.ts similarity index 100% rename from x-pack/plugins/security_solution/public/plugin_contract.ts rename to x-pack/solutions/security/plugins/security_solution/public/plugin_contract.ts diff --git a/x-pack/plugins/security_solution/public/plugin_services.ts b/x-pack/solutions/security/plugins/security_solution/public/plugin_services.ts similarity index 100% rename from x-pack/plugins/security_solution/public/plugin_services.ts rename to x-pack/solutions/security/plugins/security_solution/public/plugin_services.ts diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/factory.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/data_access_layer/factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/factory.ts diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/emptify_mock.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/emptify_mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/emptify_mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/emptify_mock.ts diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/generator_tree.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/generator_tree.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/generator_tree.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/generator_tree.ts diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children.ts diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_in_index_called_awesome_index.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_in_index_called_awesome_index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_in_index_called_awesome_index.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_in_index_called_awesome_index.ts diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_with_related_events_on_origin.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_with_related_events_on_origin.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_with_related_events_on_origin.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_with_related_events_on_origin.ts diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/one_node_with_paginated_related_events.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/one_node_with_paginated_related_events.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/one_node_with_paginated_related_events.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/one_node_with_paginated_related_events.ts diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/pausify_mock.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/pausify_mock.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/pausify_mock.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/data_access_layer/mocks/pausify_mock.ts diff --git a/x-pack/plugins/security_solution/public/resolver/documentation/camera.md b/x-pack/solutions/security/plugins/security_solution/public/resolver/documentation/camera.md similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/documentation/camera.md rename to x-pack/solutions/security/plugins/security_solution/public/resolver/documentation/camera.md diff --git a/x-pack/plugins/security_solution/public/resolver/documentation/loading_node_data.md b/x-pack/solutions/security/plugins/security_solution/public/resolver/documentation/loading_node_data.md similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/documentation/loading_node_data.md rename to x-pack/solutions/security/plugins/security_solution/public/resolver/documentation/loading_node_data.md diff --git a/x-pack/plugins/security_solution/public/resolver/documentation/schema.md b/x-pack/solutions/security/plugins/security_solution/public/resolver/documentation/schema.md similarity index 95% rename from x-pack/plugins/security_solution/public/resolver/documentation/schema.md rename to x-pack/solutions/security/plugins/security_solution/public/resolver/documentation/schema.md index 61b923d25d3e3..30149ec218f9c 100644 --- a/x-pack/plugins/security_solution/public/resolver/documentation/schema.md +++ b/x-pack/solutions/security/plugins/security_solution/public/resolver/documentation/schema.md @@ -12,7 +12,7 @@ for the elastic endpoint and winlogbeat's sysmon data. ## Schema Format -The predefined schemas are located here +The predefined schemas are located here ```typescript const supportedSchemas: SupportedSchema[] = [ diff --git a/x-pack/plugins/security_solution/public/resolver/index.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/resolver/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/resolver/jest.config.js new file mode 100644 index 0000000000000..20362b9254459 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/resolver/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/resolver'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/resolver', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/resolver/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/resolver/lib/date.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/lib/date.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/lib/date.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/lib/date.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/lib/date.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/lib/date.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/lib/date.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/lib/date.ts diff --git a/x-pack/plugins/security_solution/public/resolver/lib/math.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/lib/math.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/lib/math.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/lib/math.ts diff --git a/x-pack/plugins/security_solution/public/resolver/lib/transformation.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/lib/transformation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/lib/transformation.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/lib/transformation.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/lib/transformation.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/lib/transformation.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/lib/transformation.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/lib/transformation.ts diff --git a/x-pack/plugins/security_solution/public/resolver/lib/tree_sequencers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/lib/tree_sequencers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/lib/tree_sequencers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/lib/tree_sequencers.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/lib/tree_sequencers.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/lib/tree_sequencers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/lib/tree_sequencers.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/lib/tree_sequencers.ts diff --git a/x-pack/plugins/security_solution/public/resolver/mocks/endpoint_event.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/endpoint_event.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/mocks/endpoint_event.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/endpoint_event.ts diff --git a/x-pack/plugins/security_solution/public/resolver/mocks/generator.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/generator.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/mocks/generator.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/generator.ts diff --git a/x-pack/plugins/security_solution/public/resolver/mocks/resolver_node.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/resolver_node.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/mocks/resolver_node.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/resolver_node.ts diff --git a/x-pack/plugins/security_solution/public/resolver/mocks/resolver_tree.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/resolver_tree.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/mocks/resolver_tree.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/resolver_tree.ts diff --git a/x-pack/plugins/security_solution/public/resolver/mocks/tree_fetcher_parameters.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/tree_fetcher_parameters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/mocks/tree_fetcher_parameters.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/tree_fetcher_parameters.ts diff --git a/x-pack/plugins/security_solution/public/resolver/mocks/tree_schema.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/tree_schema.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/mocks/tree_schema.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/tree_schema.ts diff --git a/x-pack/plugins/security_solution/public/resolver/mocks/ui_setting.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/ui_setting.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/mocks/ui_setting.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/mocks/ui_setting.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/aabb.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/aabb.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/aabb.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/aabb.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/aabb.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/aabb.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/aabb.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/aabb.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/__snapshots__/isometric_taxi_layout.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/__snapshots__/isometric_taxi_layout.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/__snapshots__/isometric_taxi_layout.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/__snapshots__/isometric_taxi_layout.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/index.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/index.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/index.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/isometric_taxi_layout.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/isometric_taxi_layout.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/isometric_taxi_layout.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/isometric_taxi_layout.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/isometric_taxi_layout.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/isometric_taxi_layout.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/indexed_process_tree/isometric_taxi_layout.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/indexed_process_tree/isometric_taxi_layout.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/location_search.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/location_search.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/location_search.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/location_search.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/matrix3.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/matrix3.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/matrix3.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/matrix3.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/matrix3.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/matrix3.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/matrix3.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/matrix3.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/node_data.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/node_data.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/node_data.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/node_data.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/node_data.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/node_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/node_data.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/node_data.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/process_event.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/process_event.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/process_event.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/process_event.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/process_event.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/process_event.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/process_event.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/process_event.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/process_event_test_helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/process_event_test_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/process_event_test_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/process_event_test_helpers.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/resolver_tree.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/resolver_tree.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/resolver_tree.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/resolver_tree.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/schema.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/schema.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/schema.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/schema.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/schema.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/schema.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/schema.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/schema.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/time_range.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/time_range.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/time_range.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/time_range.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/time_range.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/time_range.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/time_range.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/time_range.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/tree_fetcher_parameters.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/tree_fetcher_parameters.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/tree_fetcher_parameters.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/tree_fetcher_parameters.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/tree_fetcher_parameters.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/tree_fetcher_parameters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/tree_fetcher_parameters.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/tree_fetcher_parameters.ts diff --git a/x-pack/plugins/security_solution/public/resolver/models/vector2.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/models/vector2.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/models/vector2.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/models/vector2.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/actions.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/action.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/action.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/action.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/action.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/animation.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/animation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/animation.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/animation.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/index.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/index.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/inverse_projection_matrix.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/inverse_projection_matrix.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/inverse_projection_matrix.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/inverse_projection_matrix.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/methods.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/methods.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/methods.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/methods.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/panning.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/panning.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/panning.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/panning.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/projection_matrix.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/projection_matrix.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/projection_matrix.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/projection_matrix.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/reducer.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/scale_to_zoom.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/scale_to_zoom.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/scale_to_zoom.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/scale_to_zoom.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/scaling_constants.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/scaling_constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/scaling_constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/scaling_constants.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/selectors.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/test_helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/test_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/test_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/test_helpers.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/zooming.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/zooming.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/camera/zooming.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/camera/zooming.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/action.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/action.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/data/action.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/action.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/node_events_in_category_model.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/node_events_in_category_model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/data/node_events_in_category_model.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/node_events_in_category_model.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/reducer.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/reducer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/data/reducer.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/reducer.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/reducer.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/selectors.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/data/selectors.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/selectors.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/selectors.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/visible_entities.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/visible_entities.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/data/visible_entities.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/data/visible_entities.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/helpers.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/index.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/index.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/middleware/current_related_event_fetcher.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/current_related_event_fetcher.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/middleware/current_related_event_fetcher.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/current_related_event_fetcher.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/middleware/index.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/middleware/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/index.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/middleware/node_data_fetcher.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/node_data_fetcher.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/middleware/node_data_fetcher.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/node_data_fetcher.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/middleware/related_events_fetcher.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/related_events_fetcher.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/middleware/related_events_fetcher.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/related_events_fetcher.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/middleware/resolver_tree_fetcher.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/resolver_tree_fetcher.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/middleware/resolver_tree_fetcher.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/middleware/resolver_tree_fetcher.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/panel_view_and_parameters.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/panel_view_and_parameters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/panel_view_and_parameters.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/panel_view_and_parameters.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/parameter_name.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/parameter_name.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/parameter_name.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/parameter_name.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/reducer.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/selectors.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/selectors.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/selectors.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/selectors.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/selectors.ts diff --git a/x-pack/plugins/security_solution/public/resolver/store/ui/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/store/ui/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/store/ui/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/store/ui/selectors.ts diff --git a/x-pack/plugins/security_solution/public/resolver/test_utilities/extend_jest.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/extend_jest.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/test_utilities/extend_jest.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/extend_jest.ts diff --git a/x-pack/plugins/security_solution/public/resolver/test_utilities/simulator/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/simulator/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/test_utilities/simulator/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/simulator/index.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/test_utilities/simulator/mock_resolver.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/simulator/mock_resolver.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/test_utilities/simulator/mock_resolver.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/simulator/mock_resolver.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/test_utilities/spy_middleware_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/spy_middleware_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/test_utilities/spy_middleware_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/spy_middleware_factory.ts diff --git a/x-pack/plugins/security_solution/public/resolver/test_utilities/url_search.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/url_search.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/test_utilities/url_search.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/test_utilities/url_search.ts diff --git a/x-pack/plugins/security_solution/public/resolver/types.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/types.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/clickthrough.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/clickthrough.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/clickthrough.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/clickthrough.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/date_picker.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/date_picker.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/controls/date_picker.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/date_picker.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/controls/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/controls/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/index.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/legend.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/legend.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/controls/legend.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/legend.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/schema.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/schema.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/controls/schema.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/schema.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/show_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/show_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/controls/show_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/show_panel.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/sourcerer_selection.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/sourcerer_selection.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/controls/sourcerer_selection.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/sourcerer_selection.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/controls/styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/controls/styles.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/details_panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/details_panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/details_panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/details_panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/details_panel.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/details_panel.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/details_panel.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/details_panel.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/edge_line.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/edge_line.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/edge_line.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/edge_line.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/font_size.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/font_size.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/font_size.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/font_size.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/generated_text.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/generated_text.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/generated_text.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/generated_text.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/index.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/limit_warnings.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/limit_warnings.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/limit_warnings.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/limit_warnings.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/node.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/node.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/node.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/node.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panel.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panel.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panel.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panel.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/breadcrumbs.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/breadcrumbs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/breadcrumbs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/breadcrumbs.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/cube_for_process.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/cube_for_process.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/cube_for_process.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/cube_for_process.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/deep_object_entries.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/deep_object_entries.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/deep_object_entries.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/deep_object_entries.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/deep_object_entries.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/deep_object_entries.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/deep_object_entries.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/deep_object_entries.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/descriptive_name.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/descriptive_name.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/descriptive_name.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/descriptive_name.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/descriptive_name.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/descriptive_name.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/descriptive_name.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/descriptive_name.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/event_detail.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/event_detail.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/index.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/node_detail.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_detail.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/node_detail.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_detail.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/node_events.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_events.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/node_events.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_events.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/node_events_of_type.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_events_of_type.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/node_events_of_type.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_events_of_type.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/node_events_of_type.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_events_of_type.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/node_events_of_type.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_events_of_type.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/node_list.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_list.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/node_list.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/node_list.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_error.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/panel_content_error.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_error.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/panel_content_error.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_loading.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/panel_loading.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/panel_loading.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/panel_loading.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_states.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/panel_states.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/panel_states.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/panel_states.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/styles.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/use_formatted_date.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/use_formatted_date.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/use_formatted_date.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/use_formatted_date.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/use_formatted_date.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/use_formatted_date.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/panels/use_formatted_date.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/panels/use_formatted_date.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/process_event_dot.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/process_event_dot.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/process_event_dot.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/process_event_dot.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/query_params.test.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/query_params.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/query_params.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/query_params.test.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/resolver_loading_state.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/resolver_loading_state.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/resolver_loading_state.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/resolver_loading_state.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/resolver_no_process_events.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/resolver_no_process_events.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/resolver_no_process_events.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/resolver_no_process_events.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/resolver_without_providers.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/resolver_without_providers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/resolver_without_providers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/resolver_without_providers.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/side_effect_context.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/side_effect_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/side_effect_context.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/side_effect_context.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/side_effect_simulator_factory.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/side_effect_simulator_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/side_effect_simulator_factory.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/side_effect_simulator_factory.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/styles.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/submenu.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/submenu.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/submenu.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/submenu.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/symbol_definitions.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/symbol_definitions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/symbol_definitions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/symbol_definitions.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_autotune_timerange.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_autotune_timerange.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_autotune_timerange.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_autotune_timerange.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_camera.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_camera.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_camera.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_camera.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_camera.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_camera.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_camera.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_camera.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_colors.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_colors.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_cube_assets.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_cube_assets.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_cube_assets.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_cube_assets.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_link_props.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_link_props.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_link_props.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_link_props.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_navigate_or_replace.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_navigate_or_replace.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_navigate_or_replace.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_navigate_or_replace.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_paint_server_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_paint_server_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_paint_server_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_paint_server_ids.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_resolver_query_params_cleaner.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_resolver_query_params_cleaner.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_resolver_query_params_cleaner.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_resolver_query_params_cleaner.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_state_syncing_actions.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_state_syncing_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_state_syncing_actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_state_syncing_actions.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_symbol_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_symbol_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_symbol_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_symbol_ids.ts diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_sync_selected_node.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_sync_selected_node.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_sync_selected_node.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_sync_selected_node.test.tsx diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_sync_selected_node.ts b/x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_sync_selected_node.ts similarity index 100% rename from x-pack/plugins/security_solution/public/resolver/view/use_sync_selected_node.ts rename to x-pack/solutions/security/plugins/security_solution/public/resolver/view/use_sync_selected_node.ts diff --git a/x-pack/plugins/security_solution/public/rules/index.ts b/x-pack/solutions/security/plugins/security_solution/public/rules/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/rules/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/rules/index.ts diff --git a/x-pack/plugins/security_solution/public/rules/landing.tsx b/x-pack/solutions/security/plugins/security_solution/public/rules/landing.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/rules/landing.tsx rename to x-pack/solutions/security/plugins/security_solution/public/rules/landing.tsx diff --git a/x-pack/plugins/security_solution/public/rules/links.ts b/x-pack/solutions/security/plugins/security_solution/public/rules/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/rules/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/rules/links.ts diff --git a/x-pack/plugins/security_solution/public/rules/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/rules/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/rules/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/rules/routes.tsx diff --git a/x-pack/plugins/security_solution/public/rules/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/rules/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/rules/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/rules/translations.ts diff --git a/x-pack/plugins/security_solution/public/security_integrations/cribl/api/api.ts b/x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/api/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/security_integrations/cribl/api/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/api/api.ts diff --git a/x-pack/plugins/security_solution/public/security_integrations/cribl/components/custom_cribl_form.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/custom_cribl_form.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/security_integrations/cribl/components/custom_cribl_form.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/custom_cribl_form.test.tsx diff --git a/x-pack/plugins/security_solution/public/security_integrations/cribl/components/custom_cribl_form.tsx b/x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/custom_cribl_form.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/security_integrations/cribl/components/custom_cribl_form.tsx rename to x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/custom_cribl_form.tsx diff --git a/x-pack/plugins/security_solution/public/security_integrations/cribl/components/lazy_custom_cribl_extension.tsx b/x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/lazy_custom_cribl_extension.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/security_integrations/cribl/components/lazy_custom_cribl_extension.tsx rename to x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/lazy_custom_cribl_extension.tsx diff --git a/x-pack/plugins/security_solution/public/security_integrations/cribl/components/util/validator.test.ts b/x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/util/validator.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/security_integrations/cribl/components/util/validator.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/util/validator.test.ts diff --git a/x-pack/plugins/security_solution/public/security_integrations/cribl/components/util/validator.ts b/x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/util/validator.ts similarity index 100% rename from x-pack/plugins/security_solution/public/security_integrations/cribl/components/util/validator.ts rename to x-pack/solutions/security/plugins/security_solution/public/security_integrations/cribl/components/util/validator.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/security_integrations/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/security_integrations/jest.config.js new file mode 100644 index 0000000000000..f71f00e8dfd4f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/security_integrations/jest.config.js @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: [ + '/x-pack/solutions/security/plugins/security_solution/public/security_integrations', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/security_integrations', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/security_integrations/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/shared_imports.ts b/x-pack/solutions/security/plugins/security_solution/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/security_solution/public/shared_imports.ts rename to x-pack/solutions/security/plugins/security_solution/public/shared_imports.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/common/icon/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/common/icon/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/common/icon/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/common/icon/index.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/common/icon/siem_migrations.svg b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/common/icon/siem_migrations.svg similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/common/icon/siem_migrations.svg rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/common/icon/siem_migrations.svg diff --git a/x-pack/plugins/security_solution/public/siem_migrations/index.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/jest.config.js new file mode 100644 index 0000000000000..f3adf88b73019 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/siem_migrations'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/siem_migrations', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/links.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/links.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/routes.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/api/index.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/api/index.ts new file mode 100644 index 0000000000000..02fb423b05279 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/api/index.ts @@ -0,0 +1,298 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { replaceParams } from '@kbn/openapi-common/shared'; + +import type { UpdateRuleMigrationData } from '../../../../common/siem_migrations/model/rule_migration.gen'; +import type { LangSmithOptions } from '../../../../common/siem_migrations/model/common.gen'; +import { KibanaServices } from '../../../common/lib/kibana'; + +import { + SIEM_RULE_MIGRATIONS_PATH, + SIEM_RULE_MIGRATIONS_ALL_STATS_PATH, + SIEM_RULE_MIGRATION_INSTALL_TRANSLATED_PATH, + SIEM_RULE_MIGRATION_INSTALL_PATH, + SIEM_RULE_MIGRATION_PATH, + SIEM_RULE_MIGRATION_START_PATH, + SIEM_RULE_MIGRATION_STATS_PATH, + SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH, + SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH, + SIEM_RULE_MIGRATION_RESOURCES_PATH, + SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH, +} from '../../../../common/siem_migrations/constants'; +import type { + CreateRuleMigrationRequestBody, + CreateRuleMigrationResponse, + GetAllStatsRuleMigrationResponse, + GetRuleMigrationResponse, + GetRuleMigrationTranslationStatsResponse, + InstallTranslatedMigrationRulesResponse, + InstallMigrationRulesResponse, + StartRuleMigrationRequestBody, + GetRuleMigrationStatsResponse, + GetRuleMigrationResourcesMissingResponse, + UpsertRuleMigrationResourcesRequestBody, + UpsertRuleMigrationResourcesResponse, + GetRuleMigrationPrebuiltRulesResponse, + UpdateRuleMigrationResponse, +} from '../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; + +export interface GetRuleMigrationStatsParams { + /** `id` of the migration to get stats for */ + migrationId: string; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Retrieves the stats for all the existing migrations, aggregated by `migration_id`. */ +export const getRuleMigrationStats = async ({ + migrationId, + signal, +}: GetRuleMigrationStatsParams): Promise => { + return KibanaServices.get().http.get( + replaceParams(SIEM_RULE_MIGRATION_STATS_PATH, { migration_id: migrationId }), + { version: '1', signal } + ); +}; + +export interface GetRuleMigrationsStatsAllParams { + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Retrieves the stats for all the existing migrations, aggregated by `migration_id`. */ +export const getRuleMigrationsStatsAll = async ({ + signal, +}: GetRuleMigrationsStatsAllParams = {}): Promise => { + return KibanaServices.get().http.get( + SIEM_RULE_MIGRATIONS_ALL_STATS_PATH, + { version: '1', signal } + ); +}; + +export interface CreateRuleMigrationParams { + /** Optional `id` of migration to add the rules to. + * The id is necessary only for batching the migration creation in multiple requests */ + migrationId?: string; + /** The body containing the `connectorId` to use for the migration */ + body: CreateRuleMigrationRequestBody; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Starts a new migration with the provided rules. */ +export const createRuleMigration = async ({ + migrationId, + body, + signal, +}: CreateRuleMigrationParams): Promise => { + return KibanaServices.get().http.post( + `${SIEM_RULE_MIGRATIONS_PATH}${migrationId ? `/${migrationId}` : ''}`, + { body: JSON.stringify(body), version: '1', signal } + ); +}; + +export interface GetRuleMigrationMissingResourcesParams { + /** `id` of the migration to get missing resources for */ + migrationId: string; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Retrieves all missing resources of a specific migration. */ +export const getMissingResources = async ({ + migrationId, + signal, +}: GetRuleMigrationMissingResourcesParams): Promise => { + return KibanaServices.get().http.get( + replaceParams(SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH, { migration_id: migrationId }), + { version: '1', signal } + ); +}; + +export interface UpsertResourcesParams { + /** Optional `id` of migration to add the resources to. */ + migrationId: string; + /** The body containing the `connectorId` to use for the migration */ + body: UpsertRuleMigrationResourcesRequestBody; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Updates or creates resources for a specific migration. */ +export const upsertMigrationResources = async ({ + migrationId, + body, + signal, +}: UpsertResourcesParams): Promise => { + return KibanaServices.get().http.post( + replaceParams(SIEM_RULE_MIGRATION_RESOURCES_PATH, { migration_id: migrationId }), + { body: JSON.stringify(body), version: '1', signal } + ); +}; + +export interface StartRuleMigrationParams { + /** `id` of the migration to start */ + migrationId: string; + /** The connector id to use for the migration */ + connectorId: string; + /** Optional LangSmithOptions to use for the for the migration */ + langSmithOptions?: LangSmithOptions; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Starts a new migration with the provided rules. */ +export const startRuleMigration = async ({ + migrationId, + connectorId, + langSmithOptions, + signal, +}: StartRuleMigrationParams): Promise => { + const body: StartRuleMigrationRequestBody = { connector_id: connectorId }; + if (langSmithOptions) { + body.langsmith_options = langSmithOptions; + } + return KibanaServices.get().http.put( + replaceParams(SIEM_RULE_MIGRATION_START_PATH, { migration_id: migrationId }), + { body: JSON.stringify(body), version: '1', signal } + ); +}; + +export interface GetRuleMigrationParams { + /** `id` of the migration to get rules documents for */ + migrationId: string; + /** Optional page number to retrieve */ + page?: number; + /** Optional number of documents per page to retrieve */ + perPage?: number; + /** Optional field of the rule migration object to sort results by */ + sortField?: string; + /** Optional direction to sort results by */ + sortDirection?: 'asc' | 'desc'; + /** Optional search term to filter documents */ + searchTerm?: string; + /** Optional rules ids to filter documents */ + ids?: string[]; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Retrieves all the migration rule documents of a specific migration. */ +export const getRuleMigrations = async ({ + migrationId, + page, + perPage, + sortField, + sortDirection, + searchTerm, + ids, + signal, +}: GetRuleMigrationParams): Promise => { + return KibanaServices.get().http.get( + replaceParams(SIEM_RULE_MIGRATION_PATH, { migration_id: migrationId }), + { + version: '1', + query: { + page, + per_page: perPage, + sort_field: sortField, + sort_direction: sortDirection, + search_term: searchTerm, + ids, + }, + signal, + } + ); +}; + +export interface GetRuleMigrationTranslationStatsParams { + /** `id` of the migration to get translation stats for */ + migrationId: string; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** + * Retrieves the translation stats for the migration. + */ +export const getRuleMigrationTranslationStats = async ({ + migrationId, + signal, +}: GetRuleMigrationTranslationStatsParams): Promise => { + return KibanaServices.get().http.get( + replaceParams(SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH, { migration_id: migrationId }), + { version: '1', signal } + ); +}; + +export interface InstallRulesParams { + /** `id` of the migration to install rules for */ + migrationId: string; + /** The rule ids to install */ + ids: string[]; + /** Optional indicator to enable the installed rule */ + enabled?: boolean; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Installs the provided rule ids for a specific migration. */ +export const installMigrationRules = async ({ + migrationId, + ids, + enabled, + signal, +}: InstallRulesParams): Promise => { + return KibanaServices.get().http.post( + replaceParams(SIEM_RULE_MIGRATION_INSTALL_PATH, { migration_id: migrationId }), + { version: '1', body: JSON.stringify({ ids, enabled }), signal } + ); +}; + +export interface InstallTranslatedRulesParams { + /** `id` of the migration to install rules for */ + migrationId: string; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Installs all the translated rules for a specific migration. */ +export const installTranslatedMigrationRules = async ({ + migrationId, + signal, +}: InstallTranslatedRulesParams): Promise => { + return KibanaServices.get().http.post( + replaceParams(SIEM_RULE_MIGRATION_INSTALL_TRANSLATED_PATH, { migration_id: migrationId }), + { version: '1', signal } + ); +}; + +export interface GetRuleMigrationsPrebuiltRulesParams { + /** `id` of the migration to install rules for */ + migrationId: string; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Retrieves all prebuilt rules matched within a specific migration. */ +export const getRuleMigrationsPrebuiltRules = async ({ + migrationId, + signal, +}: GetRuleMigrationsPrebuiltRulesParams): Promise => { + return KibanaServices.get().http.get( + replaceParams(SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH, { migration_id: migrationId }), + { version: '1', signal } + ); +}; + +export interface UpdateRulesParams { + /** The list of migration rules data to update */ + rulesToUpdate: UpdateRuleMigrationData[]; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Updates provided migration rules. */ +export const updateMigrationRules = async ({ + rulesToUpdate, + signal, +}: UpdateRulesParams): Promise => { + return KibanaServices.get().http.put(SIEM_RULE_MIGRATIONS_PATH, { + version: '1', + body: JSON.stringify(rulesToUpdate), + signal, + }); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts new file mode 100644 index 0000000000000..d390b395ed98f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const SPLUNK_RULES_COLUMNS = [ + 'id', + 'title', + 'search', + 'description', + 'action.escu.eli5', + 'action.correlationsearch.annotations', +] as const; + +export const RULES_SPLUNK_QUERY = `| rest /servicesNS/-/-/saved/searches +| search action.correlationsearch.enabled = "1" OR (eai:acl.app = "Splunk_Security_Essentials" AND is_scheduled=1) +| where disabled=0 +| table ${SPLUNK_RULES_COLUMNS.join(', ')}`; + +export const SPLUNK_MACROS_COLUMNS = ['title', 'definition'] as const; + +export const MACROS_SPLUNK_QUERY = `| rest /servicesNS/-/-/admin/macros count=0 +| table ${SPLUNK_MACROS_COLUMNS.join(', ')}`; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx new file mode 100644 index 0000000000000..ffc40c59d495a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx @@ -0,0 +1,159 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useState } from 'react'; +import { + EuiFlyoutResizable, + EuiFlyoutHeader, + EuiTitle, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlexGroup, + EuiFlexItem, + EuiButton, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import type { + RuleMigrationResourceData, + RuleMigrationTaskStats, +} from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import { RulesDataInput } from './steps/rules/rules_data_input'; +import { useStartMigration } from '../../service/hooks/use_start_migration'; +import { DataInputStep } from './types'; +import { MacrosDataInput } from './steps/macros/macros_data_input'; + +interface MissingResourcesIndexed { + macros: string[]; + lookups: string[]; +} + +export interface MigrationDataInputFlyoutProps { + onClose: () => void; + migrationStats?: RuleMigrationTaskStats; +} +export const MigrationDataInputFlyout = React.memo( + ({ onClose, migrationStats: initialMigrationSats }) => { + const [migrationStats, setMigrationStats] = useState( + initialMigrationSats + ); + const [missingResourcesIndexed, setMissingResourcesIndexed] = useState< + MissingResourcesIndexed | undefined + >(); + + const { startMigration, isLoading: isStartLoading } = useStartMigration(onClose); + const onStartMigration = useCallback(() => { + if (migrationStats?.id) { + startMigration(migrationStats.id); + } + }, [migrationStats, startMigration]); + + const [dataInputStep, setDataInputStep] = useState(DataInputStep.Rules); + + const onMigrationCreated = useCallback((createdMigrationStats: RuleMigrationTaskStats) => { + setMigrationStats(createdMigrationStats); + }, []); + + const onMissingResourcesFetched = useCallback( + (missingResources: RuleMigrationResourceData[]) => { + const newMissingResourcesIndexed = missingResources.reduce( + (acc, { type, name }) => { + if (type === 'macro') { + acc.macros.push(name); + } else if (type === 'list') { + acc.lookups.push(name); + } + return acc; + }, + { macros: [], lookups: [] } + ); + setMissingResourcesIndexed(newMissingResourcesIndexed); + if (newMissingResourcesIndexed.macros.length) { + setDataInputStep(DataInputStep.Macros); + return; + } + if (newMissingResourcesIndexed.lookups.length) { + setDataInputStep(DataInputStep.Lookups); + return; + } + setDataInputStep(DataInputStep.End); + }, + [] + ); + + const onMacrosCreated = useCallback(() => { + setDataInputStep(DataInputStep.Lookups); + }, []); + + return ( + + + +

    + +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    + ); + } +); +MigrationDataInputFlyout.displayName = 'MigrationDataInputFlyout'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/index.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/get_status.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/get_status.ts new file mode 100644 index 0000000000000..f9f14298d00be --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/get_status.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { EuiStepStatus } from '@elastic/eui'; + +export const getStatus = (step: number, currentStep: number): EuiStepStatus => { + if (step === currentStep) { + return 'current'; + } + if (step < currentStep) { + return 'complete'; + } + return 'incomplete'; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx index 438134b0ad99a..fc0bd0e8c3b44 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx @@ -16,11 +16,11 @@ const style = css` } `; -export const SubStepWrapper = React.memo>(({ children }) => { +export const SubStepsWrapper = React.memo>(({ children }) => { return ( {children} ); }); -SubStepWrapper.displayName = 'SubStepWrapper'; +SubStepsWrapper.displayName = 'SubStepsWrapper'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/use_parse_file_input.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/use_parse_file_input.ts new file mode 100644 index 0000000000000..b99cf826194f9 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/use_parse_file_input.ts @@ -0,0 +1,117 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useState, useCallback } from 'react'; +import { FILE_UPLOAD_ERROR } from '../../translations'; + +export interface SplunkRow { + result: T; +} + +export type OnFileParsed = (content: SplunkRow[]) => void; + +export const useParseFileInput = (onFileParsed: OnFileParsed) => { + const [isParsing, setIsParsing] = useState(false); + const [error, setError] = useState(); + + const parseFile = useCallback( + (files: FileList | null) => { + if (!files) { + return; + } + + setError(undefined); + + const rulesFile = files[0]; + const reader = new FileReader(); + + reader.onloadstart = () => setIsParsing(true); + reader.onloadend = () => setIsParsing(false); + + reader.onload = function (e) { + // We can safely cast to string since we call `readAsText` to load the file. + const fileContent = e.target?.result as string | undefined; + + if (fileContent == null) { + setError(FILE_UPLOAD_ERROR.CAN_NOT_READ); + return; + } + + if (fileContent === '' && e.loaded > 100000) { + // V8-based browsers can't handle large files and return an empty string + // instead of an error; see https://stackoverflow.com/a/61316641 + setError(FILE_UPLOAD_ERROR.TOO_LARGE_TO_PARSE); + return; + } + + try { + const parsedData = parseContent(fileContent); + onFileParsed(parsedData); + } catch (err) { + setError(err.message); + } + }; + + const handleReaderError = function () { + const message = reader.error?.message; + if (message) { + setError(FILE_UPLOAD_ERROR.CAN_NOT_READ_WITH_REASON(message)); + } else { + setError(FILE_UPLOAD_ERROR.CAN_NOT_READ); + } + }; + + reader.onerror = handleReaderError; + reader.onabort = handleReaderError; + + reader.readAsText(rulesFile); + }, + [onFileParsed] + ); + + return { parseFile, isParsing, error }; +}; + +const parseContent = (fileContent: string): SplunkRow[] => { + const trimmedContent = fileContent.trim(); + let arrayContent: SplunkRow[]; + if (trimmedContent.startsWith('[')) { + arrayContent = parseJSONArray(trimmedContent); + } else { + arrayContent = parseNDJSON(trimmedContent); + } + if (arrayContent.length === 0) { + throw new Error(FILE_UPLOAD_ERROR.EMPTY); + } + return arrayContent; +}; + +const parseNDJSON = (fileContent: string): SplunkRow[] => { + return fileContent + .split(/\n(?=\{)/) // split at newline followed by '{'. + .filter((entry) => entry.trim() !== '') // Remove empty entries. + .map(parseJSON); // Parse each entry as JSON. +}; + +const parseJSONArray = (fileContent: string): SplunkRow[] => { + const parsedContent = parseJSON(fileContent); + if (!Array.isArray(parsedContent)) { + throw new Error(FILE_UPLOAD_ERROR.NOT_ARRAY); + } + return parsedContent; +}; + +const parseJSON = (fileContent: string) => { + try { + return JSON.parse(fileContent); + } catch (error) { + if (error instanceof RangeError) { + throw new Error(FILE_UPLOAD_ERROR.TOO_LARGE_TO_PARSE); + } + throw new Error(FILE_UPLOAD_ERROR.CAN_NOT_PARSE); + } +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/macros_data_input.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/macros_data_input.tsx new file mode 100644 index 0000000000000..f19e704b96710 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/macros_data_input.tsx @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { EuiStepProps } from '@elastic/eui'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiPanel, + EuiStepNumber, + EuiSteps, + EuiTitle, +} from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; +import type { RuleMigrationTaskStats } from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { SubStepsWrapper } from '../common/sub_step_wrapper'; +import type { OnResourcesCreated, OnMissingResourcesFetched, DataInputStep } from '../../types'; +import { getStatus } from '../common/get_status'; +import { useCopyExportQueryStep } from './sub_steps/copy_export_query'; +import { useMacrosFileUploadStep } from './sub_steps/macros_file_upload'; +import * as i18n from './translations'; +import { useCheckResourcesStep } from './sub_steps/check_resources'; + +const DataInputStepNumber: DataInputStep = 2; + +interface MacrosDataInputSubStepsProps { + migrationStats: RuleMigrationTaskStats; + missingMacros: string[]; + onMacrosCreated: OnResourcesCreated; + onMissingResourcesFetched: OnMissingResourcesFetched; +} +interface MacrosDataInputProps + extends Omit { + dataInputStep: DataInputStep; + migrationStats?: RuleMigrationTaskStats; + missingMacros?: string[]; +} +export const MacrosDataInput = React.memo( + ({ + dataInputStep, + migrationStats, + missingMacros, + onMacrosCreated, + onMissingResourcesFetched, + }) => { + const dataInputStatus = useMemo( + () => getStatus(DataInputStepNumber, dataInputStep), + [dataInputStep] + ); + + return ( + + + + + + + + + + {i18n.MACROS_DATA_INPUT_TITLE} + + + + + {dataInputStatus === 'current' && migrationStats && missingMacros && ( + + + + )} + + + ); + } +); +MacrosDataInput.displayName = 'MacrosDataInput'; + +const END = 10 as const; +type SubStep = 1 | 2 | 3 | typeof END; +export const MacrosDataInputSubSteps = React.memo( + ({ migrationStats, missingMacros, onMacrosCreated, onMissingResourcesFetched }) => { + const [subStep, setSubStep] = useState(missingMacros.length ? 1 : 3); + + // Copy query step + const onCopied = useCallback(() => { + setSubStep(2); + }, []); + const copyStep = useCopyExportQueryStep({ status: getStatus(1, subStep), onCopied }); + + // Upload macros step + const onMacrosCreatedStep = useCallback(() => { + onMacrosCreated(); + setSubStep(3); + }, [onMacrosCreated]); + const uploadStep = useMacrosFileUploadStep({ + status: getStatus(2, subStep), + migrationStats, + missingMacros, + onMacrosCreated: onMacrosCreatedStep, + }); + + // Check missing resources step + const onMissingResourcesFetchedStep = useCallback( + (newMissingResources) => { + onMissingResourcesFetched(newMissingResources); + setSubStep(END); + }, + [onMissingResourcesFetched] + ); + const resourcesStep = useCheckResourcesStep({ + status: getStatus(3, subStep), + migrationStats, + onMissingResourcesFetched: onMissingResourcesFetchedStep, + }); + + const steps = useMemo( + () => [copyStep, uploadStep, resourcesStep], + [copyStep, uploadStep, resourcesStep] + ); + + return ( + + + + ); + } +); +MacrosDataInputSubSteps.displayName = 'MacrosDataInputActive'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/index.tsx new file mode 100644 index 0000000000000..d83890e1f260c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/index.tsx @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, useMemo } from 'react'; +import { EuiText, type EuiStepProps, type EuiStepStatus } from '@elastic/eui'; +// import { useGetMissingResources } from '../../../../../../logic/use_get_migration_missing_resources'; +import type { RuleMigrationTaskStats } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { useGetMissingResources } from '../../../../../../service/hooks/use_get_missing_resources'; +import type { OnMissingResourcesFetched } from '../../../../types'; +import * as i18n from './translations'; + +export interface CheckResourcesStepProps { + status: EuiStepStatus; + migrationStats: RuleMigrationTaskStats | undefined; + onMissingResourcesFetched: OnMissingResourcesFetched; +} +export const useCheckResourcesStep = ({ + status, + migrationStats, + onMissingResourcesFetched, +}: CheckResourcesStepProps): EuiStepProps => { + const { getMissingResources, isLoading, error } = + useGetMissingResources(onMissingResourcesFetched); + + useEffect(() => { + if (status === 'current' && migrationStats?.id) { + getMissingResources(migrationStats.id); + } + }, [getMissingResources, status, migrationStats?.id]); + + const uploadStepStatus = useMemo(() => { + if (isLoading) { + return 'loading'; + } + if (error) { + return 'danger'; + } + return status; + }, [isLoading, error, status]); + + return { + title: i18n.RULES_DATA_INPUT_CHECK_RESOURCES_TITLE, + status: uploadStepStatus, + children: ( + + {i18n.RULES_DATA_INPUT_CHECK_RESOURCES_DESCRIPTION} + + ), + }; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/copy_export_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/copy_export_query.tsx new file mode 100644 index 0000000000000..93f2ce715184c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/copy_export_query.tsx @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback } from 'react'; +import { EuiCodeBlock, EuiSpacer, EuiText } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { MACROS_SPLUNK_QUERY } from '../../../../constants'; +import * as i18n from './translations'; + +interface CopyExportQueryProps { + onCopied: () => void; +} +export const CopyExportQuery = React.memo(({ onCopied }) => { + const onClick: React.MouseEventHandler = useCallback( + (ev) => { + // The only button inside the element is the "copy" button. + if ((ev.target as Element).tagName === 'BUTTON') { + onCopied(); + } + }, + [onCopied] + ); + + return ( + <> + {/* The click event is also dispatched when using the keyboard actions (space or enter) for "copy" button. + No need to use keyboard specific events, disabling the a11y lint rule:*/} + {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */} +
    + {/* onCopy react event is dispatched when the user copies text manually */} + + {MACROS_SPLUNK_QUERY} + +
    + + + {i18n.RULES_DATA_INPUT_COPY_DESCRIPTION_SECTION}, + format: {'JSON'}, + }} + /> + + + ); +}); +CopyExportQuery.displayName = 'CopyExportQuery'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/index.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/translations.ts new file mode 100644 index 0000000000000..71466a54dd138 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/translations.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const RULES_DATA_INPUT_COPY_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.copyExportQuery.title', + { defaultMessage: 'Copy macros query' } +); + +export const RULES_DATA_INPUT_COPY_DESCRIPTION_SECTION = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.copyExportQuery.description.section', + { defaultMessage: 'Search and Reporting' } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/index.tsx new file mode 100644 index 0000000000000..f2353e3f0276a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/index.tsx @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; +import type { EuiStepProps, EuiStepStatus } from '@elastic/eui'; +import { ResourceIdentifier } from '../../../../../../../../../common/siem_migrations/rules/resources'; +import { useUpsertResources } from '../../../../../../service/hooks/use_upsert_resources'; +import type { + RuleMigrationResourceData, + RuleMigrationTaskStats, +} from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import type { OnResourcesCreated } from '../../../../types'; +import { MacrosFileUpload } from './macros_file_upload'; +import * as i18n from './translations'; + +export interface RulesFileUploadStepProps { + status: EuiStepStatus; + migrationStats: RuleMigrationTaskStats; + missingMacros: string[]; + onMacrosCreated: OnResourcesCreated; +} +export const useMacrosFileUploadStep = ({ + status, + migrationStats, + missingMacros, + onMacrosCreated, +}: RulesFileUploadStepProps): EuiStepProps => { + const { upsertResources, isLoading, error } = useUpsertResources(onMacrosCreated); + + const upsertMigrationResources = useCallback( + (macrosFromFile: RuleMigrationResourceData[]) => { + const macrosIndexed: Record = Object.fromEntries( + macrosFromFile.map((macro) => [macro.name, macro]) + ); + const resourceIdentifier = new ResourceIdentifier('splunk'); + const macrosToUpsert: RuleMigrationResourceData[] = []; + let missingMacrosIt: string[] = missingMacros; + + while (missingMacrosIt.length > 0) { + const macros: RuleMigrationResourceData[] = []; + missingMacrosIt.forEach((macroName) => { + const macro = macrosIndexed[macroName]; + if (macro) { + macros.push(macro); + } else { + // Macro missing from file + } + }); + macrosToUpsert.push(...macros); + + missingMacrosIt = resourceIdentifier + .fromResources(macros) + .reduce((acc, resource) => { + if (resource.type === 'macro') { + acc.push(resource.name); + } + return acc; + }, []); + } + + if (macrosToUpsert.length === 0) { + return; // No missing macros provided + } + upsertResources(migrationStats.id, macrosToUpsert); + }, + [upsertResources, migrationStats, missingMacros] + ); + + const uploadStepStatus = useMemo(() => { + if (isLoading) { + return 'loading'; + } + if (error) { + return 'danger'; + } + return status; + }, [isLoading, error, status]); + + return { + title: i18n.RULES_DATA_INPUT_FILE_UPLOAD_TITLE, + status: uploadStepStatus, + children: ( + + ), + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/macros_file_upload.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/macros_file_upload.tsx new file mode 100644 index 0000000000000..b8d7022d9b454 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/macros_file_upload.tsx @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; +import { EuiFilePicker, EuiFormRow, EuiText } from '@elastic/eui'; +import { isPlainObject } from 'lodash'; +import type { RuleMigrationResourceData } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { FILE_UPLOAD_ERROR } from '../../../../translations'; +import type { SPLUNK_MACROS_COLUMNS } from '../../../../constants'; +import { useParseFileInput, type SplunkRow } from '../../../common/use_parse_file_input'; +import * as i18n from './translations'; + +type SplunkMacroResult = Partial>; + +export interface MacrosFileUploadProps { + createResources: (resources: RuleMigrationResourceData[]) => void; + apiError?: string; + isLoading?: boolean; +} +export const MacrosFileUpload = React.memo( + ({ createResources, apiError, isLoading }) => { + const onFileParsed = useCallback( + (content: Array>) => { + const rules = content.map(formatMacroRow); + createResources(rules); + }, + [createResources] + ); + + const { parseFile, isParsing, error: fileError } = useParseFileInput(onFileParsed); + + const error = useMemo(() => { + if (apiError) { + return apiError; + } + return fileError; + }, [apiError, fileError]); + + return ( + + {error} + + } + isInvalid={error != null} + fullWidth + > + + + {i18n.RULES_DATA_INPUT_FILE_UPLOAD_PROMPT} + + + } + accept="application/json, application/x-ndjson" + onChange={parseFile} + display="large" + aria-label="Upload logs sample file" + isLoading={isParsing || isLoading} + disabled={isParsing || isLoading} + data-test-subj="macrosFilePicker" + data-loading={isParsing} + /> + + ); + } +); +MacrosFileUpload.displayName = 'MacrosFileUpload'; + +const formatMacroRow = (row: SplunkRow): RuleMigrationResourceData => { + if (!isPlainObject(row.result)) { + throw new Error(FILE_UPLOAD_ERROR.NOT_OBJECT); + } + const macroResource: Partial = { + type: 'macro', + name: row.result.title, + content: row.result.definition, + }; + // resource document format validation delegated to API + return macroResource as RuleMigrationResourceData; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/translations.ts new file mode 100644 index 0000000000000..25b64787d6dcd --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/translations.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const RULES_DATA_INPUT_FILE_UPLOAD_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.macrosFileUpload.title', + { defaultMessage: 'Update your macros export' } +); +export const RULES_DATA_INPUT_FILE_UPLOAD_PROMPT = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.macrosFileUpload.prompt', + { defaultMessage: 'Select or drag and drop the exported JSON file' } +); + +export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.macrosFileUpload.createSuccess', + { defaultMessage: 'Macros uploaded successfully' } +); +export const RULES_DATA_INPUT_CREATE_MIGRATION_ERROR = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.macrosFileUpload.createError', + { defaultMessage: 'Failed to upload macros file' } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/translations.ts new file mode 100644 index 0000000000000..7061e91311308 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/translations.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const MACROS_DATA_INPUT_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.title', + { defaultMessage: 'Upload identified macros' } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx new file mode 100644 index 0000000000000..acc22a030b02f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx @@ -0,0 +1,131 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { EuiStepProps } from '@elastic/eui'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiPanel, + EuiStepNumber, + EuiSteps, + EuiTitle, +} from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; +import type { RuleMigrationTaskStats } from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { SubStepsWrapper } from '../common/sub_step_wrapper'; +import type { OnMigrationCreated, OnMissingResourcesFetched, DataInputStep } from '../../types'; +import { useCopyExportQueryStep } from './sub_steps/copy_export_query'; +import { useRulesFileUploadStep } from './sub_steps/rules_file_upload'; +import * as i18n from './translations'; +import { useCheckResourcesStep } from './sub_steps/check_resources'; +import { getStatus } from '../common/get_status'; + +const DataInputStepNumber: DataInputStep = 1; + +interface RulesDataInputSubStepsProps { + migrationStats?: RuleMigrationTaskStats; + onMigrationCreated: OnMigrationCreated; + onMissingResourcesFetched: OnMissingResourcesFetched; +} +interface RulesDataInputProps extends RulesDataInputSubStepsProps { + dataInputStep: DataInputStep; +} +export const RulesDataInput = React.memo( + ({ dataInputStep, migrationStats, onMigrationCreated, onMissingResourcesFetched }) => { + const dataInputStatus = useMemo( + () => getStatus(DataInputStepNumber, dataInputStep), + [dataInputStep] + ); + + return ( + + + + + + + + + + {i18n.RULES_DATA_INPUT_TITLE} + + + + + {dataInputStatus === 'current' && ( + + + + )} + + + ); + } +); +RulesDataInput.displayName = 'RulesDataInput'; + +const END = 10 as const; +type SubStep = 1 | 2 | 3 | typeof END; +export const RulesDataInputSubSteps = React.memo( + ({ migrationStats, onMigrationCreated, onMissingResourcesFetched }) => { + const [subStep, setSubStep] = useState(migrationStats ? 3 : 1); + + // Copy query step + const onCopied = useCallback(() => { + setSubStep(2); + }, []); + const copyStep = useCopyExportQueryStep({ status: getStatus(1, subStep), onCopied }); + + // Upload rules step + const onMigrationCreatedStep = useCallback( + (stats) => { + onMigrationCreated(stats); + setSubStep(3); + }, + [onMigrationCreated] + ); + const uploadStep = useRulesFileUploadStep({ + status: getStatus(2, subStep), + migrationStats, + onMigrationCreated: onMigrationCreatedStep, + }); + + // Check missing resources step + const onMissingResourcesFetchedStep = useCallback( + (missingResources) => { + onMissingResourcesFetched(missingResources); + setSubStep(END); + }, + [onMissingResourcesFetched] + ); + const resourcesStep = useCheckResourcesStep({ + status: getStatus(3, subStep), + migrationStats, + onMissingResourcesFetched: onMissingResourcesFetchedStep, + }); + + const steps = useMemo( + () => [copyStep, uploadStep, resourcesStep], + [copyStep, uploadStep, resourcesStep] + ); + + return ( + + + + ); + } +); +RulesDataInputSubSteps.displayName = 'RulesDataInputActive'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx new file mode 100644 index 0000000000000..02aa109872f4a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, useMemo } from 'react'; +import { EuiText, type EuiStepProps, type EuiStepStatus } from '@elastic/eui'; +import type { RuleMigrationTaskStats } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { useGetMissingResources } from '../../../../../../service/hooks/use_get_missing_resources'; +import type { OnMissingResourcesFetched } from '../../../../types'; +import * as i18n from './translations'; + +export interface CheckResourcesStepProps { + status: EuiStepStatus; + migrationStats: RuleMigrationTaskStats | undefined; + onMissingResourcesFetched: OnMissingResourcesFetched; +} +export const useCheckResourcesStep = ({ + status, + migrationStats, + onMissingResourcesFetched, +}: CheckResourcesStepProps): EuiStepProps => { + const { getMissingResources, isLoading, error } = + useGetMissingResources(onMissingResourcesFetched); + + useEffect(() => { + if (status === 'current' && migrationStats?.id) { + getMissingResources(migrationStats.id); + } + }, [getMissingResources, status, migrationStats?.id]); + + const uploadStepStatus = useMemo(() => { + if (isLoading) { + return 'loading'; + } + if (error) { + return 'danger'; + } + return status; + }, [isLoading, error, status]); + + return { + title: i18n.RULES_DATA_INPUT_CHECK_RESOURCES_TITLE, + status: uploadStepStatus, + children: ( + + {i18n.RULES_DATA_INPUT_CHECK_RESOURCES_DESCRIPTION} + + ), + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/translations.ts new file mode 100644 index 0000000000000..159b4033fafd6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/translations.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const RULES_DATA_INPUT_CHECK_RESOURCES_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.checkResources.title', + { defaultMessage: 'Check for macros and lookups' } +); + +export const RULES_DATA_INPUT_CHECK_RESOURCES_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.checkResources.description', + { + defaultMessage: `For best translation results, we will automatically review your rules for macros and lookups and ask you to upload them. Once uploaded, we'll be able to deliver a more complete rule translation for all rules using those macros or lookups.`, + } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/copy_export_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/copy_export_query.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/copy_export_query.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/copy_export_query.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/index.tsx new file mode 100644 index 0000000000000..3d2adcc78857b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/index.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { EuiStepProps, EuiStepStatus } from '@elastic/eui'; +import { CopyExportQuery } from './copy_export_query'; +import * as i18n from './translations'; + +export interface CopyExportQueryStepProps { + status: EuiStepStatus; + onCopied: () => void; +} +export const useCopyExportQueryStep = ({ + status, + onCopied, +}: CopyExportQueryStepProps): EuiStepProps => { + return { + title: i18n.RULES_DATA_INPUT_COPY_TITLE, + status, + children: , + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts new file mode 100644 index 0000000000000..78a0636661604 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const RULES_DATA_INPUT_COPY_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.copyExportQuery.title', + { defaultMessage: 'Copy rules query' } +); + +export const RULES_DATA_INPUT_COPY_DESCRIPTION_SECTION = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.copyExportQuery.description.section', + { defaultMessage: 'Search and Reporting' } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx new file mode 100644 index 0000000000000..97dfd903e499e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo, useState } from 'react'; +import type { EuiStepProps, EuiStepStatus } from '@elastic/eui'; +import type { RuleMigrationTaskStats } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import type { OnMigrationCreated } from '../../../../types'; +import { RulesFileUpload } from './rules_file_upload'; +import { + useCreateMigration, + type OnSuccess, +} from '../../../../../../service/hooks/use_create_migration'; +import * as i18n from './translations'; + +export interface RulesFileUploadStepProps { + status: EuiStepStatus; + migrationStats?: RuleMigrationTaskStats; + onMigrationCreated: OnMigrationCreated; +} +export const useRulesFileUploadStep = ({ + status, + migrationStats, + onMigrationCreated, +}: RulesFileUploadStepProps): EuiStepProps => { + const [isCreated, setIsCreated] = useState(!!migrationStats); + const onSuccess = useCallback( + (stats) => { + setIsCreated(true); + onMigrationCreated(stats); + }, + [onMigrationCreated] + ); + const { createMigration, isLoading, error } = useCreateMigration(onSuccess); + + const uploadStepStatus = useMemo(() => { + if (isLoading) { + return 'loading'; + } + if (error) { + return 'danger'; + } + return status; + }, [isLoading, error, status]); + + return { + title: i18n.RULES_DATA_INPUT_FILE_UPLOAD_TITLE, + status: uploadStepStatus, + children: ( + + ), + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx new file mode 100644 index 0000000000000..bec9182420073 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx @@ -0,0 +1,102 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; +import { EuiFilePicker, EuiFormRow, EuiText } from '@elastic/eui'; +import { isPlainObject } from 'lodash'; +import type { OriginalRule } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import type { CreateMigration } from '../../../../../../service/hooks/use_create_migration'; +import * as i18n from './translations'; +import { FILE_UPLOAD_ERROR } from '../../../../translations'; +import { useParseFileInput, type SplunkRow } from '../../../common/use_parse_file_input'; +import type { SPLUNK_RULES_COLUMNS } from '../../../../constants'; + +type SplunkRulesResult = Partial>; + +export interface RulesFileUploadProps { + createMigration: CreateMigration; + apiError?: string; + isLoading?: boolean; + isCreated?: boolean; +} +export const RulesFileUpload = React.memo( + ({ createMigration, apiError, isLoading, isCreated }) => { + const onFileParsed = useCallback( + (content: Array>) => { + const rules = content.map(formatRuleRow); + createMigration(rules); + }, + [createMigration] + ); + + const { parseFile, isParsing, error: fileError } = useParseFileInput(onFileParsed); + + const error = useMemo(() => { + if (apiError) { + return apiError; + } + return fileError; + }, [apiError, fileError]); + + return ( + + {error} + + } + isInvalid={error != null} + fullWidth + > + + + {i18n.RULES_DATA_INPUT_FILE_UPLOAD_PROMPT} + + + } + accept="application/json, application/x-ndjson" + onChange={parseFile} + display="large" + aria-label="Upload rules file" + isLoading={isParsing || isLoading} + disabled={isLoading || isCreated} + data-test-subj="rulesFilePicker" + data-loading={isParsing} + /> + + ); + } +); +RulesFileUpload.displayName = 'RulesFileUpload'; + +const formatRuleRow = (row: SplunkRow): OriginalRule => { + if (!isPlainObject(row.result)) { + throw new Error(FILE_UPLOAD_ERROR.NOT_OBJECT); + } + const originalRule: Partial = { + id: row.result.id, + vendor: 'splunk', + title: row.result.title, + query: row.result.search, + query_language: 'spl', + description: row.result['action.escu.eli5']?.trim() || row.result.description, + }; + + if (row.result['action.correlationsearch.annotations']) { + try { + originalRule.annotations = JSON.parse(row.result['action.correlationsearch.annotations']); + } catch (error) { + delete originalRule.annotations; + } + } + // rule document format validation delegated to API + return originalRule as OriginalRule; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts new file mode 100644 index 0000000000000..b560849ca1cd7 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const RULES_DATA_INPUT_FILE_UPLOAD_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.title', + { defaultMessage: 'Update your rules export' } +); +export const RULES_DATA_INPUT_FILE_UPLOAD_PROMPT = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.prompt', + { defaultMessage: 'Select or drag and drop the exported JSON file' } +); + +export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.createSuccess', + { defaultMessage: 'Rules uploaded successfully' } +); +export const RULES_DATA_INPUT_CREATE_MIGRATION_ERROR = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.createError', + { defaultMessage: 'Failed to upload rules file' } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/translations.ts new file mode 100644 index 0000000000000..1e7988b596e42 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/translations.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const FILE_UPLOAD_ERROR = { + CAN_NOT_READ: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.canNotRead', + { defaultMessage: 'Failed to read file' } + ), + CAN_NOT_READ_WITH_REASON: (reason: string) => + i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.canNotReadWithReason', + { + defaultMessage: 'An error occurred when reading file: {reason}', + values: { reason }, + } + ), + CAN_NOT_PARSE: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.canNotParse', + { defaultMessage: 'Cannot parse the file as either a JSON file or NDJSON file' } + ), + TOO_LARGE_TO_PARSE: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.tooLargeToParse', + { defaultMessage: 'This file is too large to parse' } + ), + NOT_ARRAY: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.notArray', + { defaultMessage: 'The file content is not an array' } + ), + EMPTY: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.empty', + { defaultMessage: 'The file is empty' } + ), + NOT_OBJECT: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.notObject', + { defaultMessage: 'The file contains non-object entries' } + ), + WRONG_FORMAT: (formatError: string) => { + return i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.wrongFormat', + { + defaultMessage: 'The file has wrong format: {formatError}', + values: { formatError }, + } + ); + }, +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts new file mode 100644 index 0000000000000..b293a9394ba54 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + RuleMigrationResourceData, + RuleMigrationTaskStats, +} from '../../../../../common/siem_migrations/model/rule_migration.gen'; + +export type OnMigrationCreated = (migrationStats: RuleMigrationTaskStats) => void; +export type OnResourcesCreated = () => void; +export type OnMissingResourcesFetched = (missingResources: RuleMigrationResourceData[]) => void; + +export enum DataInputStep { + Rules = 1, + Macros = 2, + Lookups = 3, + End = 10, +} diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/header_buttons/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/header_buttons/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/header_buttons/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/header_buttons/index.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/header_buttons/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/header_buttons/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/header_buttons/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/header_buttons/translations.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/constants.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx new file mode 100644 index 0000000000000..584a5fb9320f3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx @@ -0,0 +1,268 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FC, PropsWithChildren } from 'react'; +import React, { useMemo, useState, useEffect, useCallback } from 'react'; +import { css } from '@emotion/css'; +import { euiThemeVars } from '@kbn/ui-theme'; +import { + EuiButtonEmpty, + EuiTitle, + EuiFlyout, + EuiFlyoutHeader, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiTabbedContent, + EuiSpacer, + EuiFlexGroup, + EuiFlexItem, + useGeneratedHtmlId, + EuiSkeletonLoading, + EuiSkeletonTitle, + EuiSkeletonText, +} from '@elastic/eui'; +import type { EuiTabbedContentTab, EuiTabbedContentProps, EuiFlyoutProps } from '@elastic/eui'; + +import type { RuleMigration } from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; +import { + RuleOverviewTab, + useOverviewTabSections, +} from '../../../../detection_engine/rule_management/components/rule_details/rule_overview_tab'; +import type { RuleResponse } from '../../../../../common/api/detection_engine/model/rule_schema'; + +import * as logicI18n from '../../logic/translations'; +import * as i18n from './translations'; +import { + DEFAULT_DESCRIPTION_LIST_COLUMN_WIDTHS, + LARGE_DESCRIPTION_LIST_COLUMN_WIDTHS, +} from './constants'; +import { SummaryTab, TranslationTab } from './tabs'; +import { + convertMigrationCustomRuleToSecurityRulePayload, + isMigrationCustomRule, +} from '../../../../../common/siem_migrations/rules/utils'; +import { useUpdateMigrationRules } from '../../logic/use_update_migration_rules'; + +/* + * Fixes tabs to the top and allows the content to scroll. + */ +const ScrollableFlyoutTabbedContent = (props: EuiTabbedContentProps) => ( + + + + + +); + +const tabPaddingClassName = css` + padding: 0 ${euiThemeVars.euiSizeM} ${euiThemeVars.euiSizeXL} ${euiThemeVars.euiSizeM}; +`; + +export const TabContentPadding: FC> = ({ children }) => ( +
    {children}
    +); + +interface MigrationRuleDetailsFlyoutProps { + ruleMigration: RuleMigration; + ruleActions?: React.ReactNode; + matchedPrebuiltRule?: RuleResponse; + size?: EuiFlyoutProps['size']; + extraTabs?: EuiTabbedContentTab[]; + isDataLoading?: boolean; + closeFlyout: () => void; +} + +export const MigrationRuleDetailsFlyout: React.FC = React.memo( + ({ + ruleActions, + ruleMigration, + matchedPrebuiltRule, + size = 'm', + extraTabs = [], + isDataLoading, + closeFlyout, + }: MigrationRuleDetailsFlyoutProps) => { + const { addError } = useAppToasts(); + + const { expandedOverviewSections, toggleOverviewSection } = useOverviewTabSections(); + + const { mutateAsync: updateMigrationRules } = useUpdateMigrationRules( + ruleMigration.migration_id + ); + + const [isUpdating, setIsUpdating] = useState(false); + const isLoading = isDataLoading || isUpdating; + + const handleTranslationUpdate = useCallback( + async (ruleName: string, ruleQuery: string) => { + if (!ruleMigration || isLoading) { + return; + } + setIsUpdating(true); + try { + await updateMigrationRules([ + { + id: ruleMigration.id, + elastic_rule: { + title: ruleName, + query: ruleQuery, + }, + }, + ]); + } catch (error) { + addError(error, { title: logicI18n.UPDATE_MIGRATION_RULES_FAILURE }); + } finally { + setIsUpdating(false); + } + }, + [addError, ruleMigration, isLoading, updateMigrationRules] + ); + + const ruleDetailsToOverview = useMemo(() => { + const elasticRule = ruleMigration?.elastic_rule; + if (isMigrationCustomRule(elasticRule)) { + return convertMigrationCustomRuleToSecurityRulePayload(elasticRule, false); + } + return matchedPrebuiltRule; + }, [ruleMigration, matchedPrebuiltRule]); + + const translationTab: EuiTabbedContentTab = useMemo( + () => ({ + id: 'translation', + name: i18n.TRANSLATION_TAB_LABEL, + content: ( + + {ruleMigration && ( + + )} + + ), + }), + [ruleMigration, handleTranslationUpdate, matchedPrebuiltRule] + ); + + const overviewTab: EuiTabbedContentTab = useMemo( + () => ({ + id: 'overview', + name: i18n.OVERVIEW_TAB_LABEL, + content: ( + + {ruleDetailsToOverview && ( + + )} + + ), + }), + [ruleDetailsToOverview, size, expandedOverviewSections, toggleOverviewSection] + ); + + const summaryTab: EuiTabbedContentTab = useMemo( + () => ({ + id: 'summary', + name: i18n.SUMMARY_TAB_LABEL, + content: ( + + + + ), + }), + [ruleMigration] + ); + + const tabs = useMemo(() => { + return [...extraTabs, translationTab, overviewTab, summaryTab]; + }, [extraTabs, translationTab, overviewTab, summaryTab]); + + const [selectedTabId, setSelectedTabId] = useState(tabs[0].id); + const selectedTab = tabs.find((tab) => tab.id === selectedTabId) ?? tabs[0]; + + useEffect(() => { + if (!tabs.find((tab) => tab.id === selectedTabId)) { + // Switch to first tab if currently selected tab is not available for this rule + setSelectedTabId(tabs[0].id); + } + }, [tabs, selectedTabId]); + + const onTabClick = (tab: EuiTabbedContentTab) => { + setSelectedTabId(tab.id); + }; + + const tabsContent = useMemo(() => { + return ( + + ); + }, [selectedTab, tabs]); + + const migrationsRulesFlyoutTitleId = useGeneratedHtmlId({ + prefix: 'migrationRulesFlyoutTitle', + }); + + return ( + + + +

    + {ruleDetailsToOverview?.name ?? + ruleMigration?.original_rule.title ?? + i18n.UNKNOWN_MIGRATION_RULE_TITLE} +

    +
    + +
    + + + + + + } + loadedContent={tabsContent} + /> + + + + + + {i18n.DISMISS_BUTTON_LABEL} + + + {ruleActions} + + +
    + ); + } +); +MigrationRuleDetailsFlyout.displayName = 'MigrationRuleDetailsFlyout'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/index.tsx new file mode 100644 index 0000000000000..ca8e8121f0f63 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/index.tsx @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './summary'; +export * from './translation'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx new file mode 100644 index 0000000000000..8561eff458a26 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo } from 'react'; +import type { EuiCommentProps } from '@elastic/eui'; +import { EuiAvatar, EuiCommentList, EuiMarkdownFormat, EuiSpacer } from '@elastic/eui'; +import moment from 'moment'; +import { AssistantAvatar } from '@kbn/elastic-assistant'; +import { + RuleMigrationStatusEnum, + type RuleMigration, +} from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import * as i18n from './translations'; + +interface SummaryTabProps { + ruleMigration: RuleMigration; +} + +export const SummaryTab: React.FC = React.memo(({ ruleMigration }) => { + const timestamp = useMemo( + // Date formats https://momentjs.com/docs/#/displaying/format/ + () => moment(ruleMigration['@timestamp']).format('ll'), + [ruleMigration] + ); + const comments: EuiCommentProps[] | undefined = useMemo(() => { + return ruleMigration.comments?.map((comment) => { + return { + username: i18n.ASSISTANT_USERNAME, + timelineAvatarAriaLabel: i18n.ASSISTANT_USERNAME, + timelineAvatar: ( + + ), + event: + ruleMigration.status === RuleMigrationStatusEnum.failed + ? i18n.COMMENT_EVENT_FAILED + : i18n.COMMENT_EVENT_TRANSLATED, + timestamp, + children: {comment}, + }; + }); + }, [ruleMigration, timestamp]); + + return ( + <> + + + + ); +}); +SummaryTab.displayName = 'SummaryTab'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/translations.ts new file mode 100644 index 0000000000000..87d0840ac0efb --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/translations.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const ASSISTANT_USERNAME = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTab.assistantUsername', + { + defaultMessage: 'Assistant', + } +); + +export const ASSISTANT_COMMENTS = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTab.commentsLabel', + { + defaultMessage: 'Assistant comments', + } +); + +export const COMMENT_EVENT_TRANSLATED = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTab.commentEvent.translatedLabel', + { + defaultMessage: 'created a final translation', + } +); + +export const COMMENT_EVENT_FAILED = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTab.commentEvent.failedLabel', + { + defaultMessage: 'failed to translate', + } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/callout.tsx new file mode 100644 index 0000000000000..9c81cbc4f8dca --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/callout.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FC } from 'react'; +import React from 'react'; +import type { IconType } from '@elastic/eui'; +import { EuiCallOut } from '@elastic/eui'; +import { + RuleMigrationTranslationResultEnum, + type RuleMigrationTranslationResult, +} from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import * as i18n from './translations'; + +const getCallOutInfo = ( + translationResult: RuleMigrationTranslationResult +): { title: string; message?: string; icon: IconType; color: 'success' | 'warning' | 'danger' } => { + switch (translationResult) { + case RuleMigrationTranslationResultEnum.full: + return { + title: i18n.CALLOUT_TRANSLATED_RULE_TITLE, + icon: 'checkInCircleFilled', + color: 'success', + }; + case RuleMigrationTranslationResultEnum.partial: + return { + title: i18n.CALLOUT_PARTIALLY_TRANSLATED_RULE_TITLE, + message: i18n.CALLOUT_PARTIALLY_TRANSLATED_RULE_DESCRIPTION, + icon: 'warningFilled', + color: 'warning', + }; + case RuleMigrationTranslationResultEnum.untranslatable: + return { + title: i18n.CALLOUT_NOT_TRANSLATED_RULE_TITLE, + message: i18n.CALLOUT_NOT_TRANSLATED_RULE_DESCRIPTION, + icon: 'checkInCircleFilled', + color: 'danger', + }; + } +}; + +export interface TranslationCallOutProps { + translationResult: RuleMigrationTranslationResult; +} + +export const TranslationCallOut: FC = React.memo( + ({ translationResult }) => { + const { title, message, icon, color } = getCallOutInfo(translationResult); + + return ( + + {message} + + ); + } +); +TranslationCallOut.displayName = 'TranslationCallOut'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/header.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/header.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/index.tsx new file mode 100644 index 0000000000000..4328e1b888dfd --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/index.tsx @@ -0,0 +1,132 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo } from 'react'; +import { + EuiAccordion, + EuiBadge, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiSplitPanel, + EuiTitle, + useEuiTheme, +} from '@elastic/eui'; +import { css } from '@emotion/css'; +import { FormattedMessage } from '@kbn/i18n-react'; +import type { RuleResponse } from '../../../../../../../common/api/detection_engine'; +import type { RuleMigration } from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { TranslationTabHeader } from './header'; +import { MigrationRuleQuery } from './migration_rule_query'; +import * as i18n from './translations'; +import { + convertTranslationResultIntoColor, + convertTranslationResultIntoText, +} from '../../../../utils/helpers'; +import { TranslationCallOut } from './callout'; + +interface TranslationTabProps { + ruleMigration: RuleMigration; + matchedPrebuiltRule?: RuleResponse; + onTranslationUpdate?: (ruleName: string, ruleQuery: string) => Promise; +} + +export const TranslationTab: React.FC = React.memo( + ({ ruleMigration, matchedPrebuiltRule, onTranslationUpdate }) => { + const { euiTheme } = useEuiTheme(); + + const isInstalled = !!ruleMigration.elastic_rule?.id; + const canEdit = !matchedPrebuiltRule && !isInstalled; + + const ruleName = matchedPrebuiltRule?.name ?? ruleMigration.elastic_rule?.title; + const originalQuery = ruleMigration.original_rule.query; + const elasticQuery = useMemo(() => { + let query = ruleMigration.elastic_rule?.query; + if (matchedPrebuiltRule && matchedPrebuiltRule.type !== 'machine_learning') { + query = matchedPrebuiltRule.query; + } + return query ?? ''; + }, [matchedPrebuiltRule, ruleMigration.elastic_rule?.query]); + + return ( + <> + + {ruleMigration.translation_result && !isInstalled && ( + <> + + + + )} + } + initialIsOpen={true} + > + + + + + + + +

    + +

    +
    +
    + + {}} + onClickAriaLabel={'Click to update translation status'} + > + {isInstalled + ? i18n.INSTALLED_LABEL + : convertTranslationResultIntoText(ruleMigration.translation_result)} + + +
    +
    + + + + + + + + + + + +
    +
    +
    + + ); + } +); +TranslationTab.displayName = 'TranslationTab'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/migration_rule_query.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/migration_rule_query.tsx new file mode 100644 index 0000000000000..51a1907da6541 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/migration_rule_query.tsx @@ -0,0 +1,171 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo, useState } from 'react'; +import { + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiMarkdownFormat, + EuiSpacer, + EuiTitle, + useEuiTheme, +} from '@elastic/eui'; +import { css } from '@emotion/react'; +import { VALIDATION_WARNING_CODES } from '../../../../../../detection_engine/rule_creation/constants/validation_warning_codes'; +import { useFormWithWarnings } from '../../../../../../common/hooks/use_form_with_warnings'; +import { EsqlQueryEdit } from '../../../../../../detection_engine/rule_creation/components/esql_query_edit'; +import { Field, Form, getUseField } from '../../../../../../shared_imports'; +import type { RuleTranslationSchema } from './types'; +import { schema } from './schema'; +import * as i18n from './translations'; + +const CommonUseField = getUseField({ component: Field }); + +interface MigrationRuleQueryProps { + title: string; + ruleName?: string; + query: string; + canEdit?: boolean; + onTranslationUpdate?: (ruleName: string, ruleQuery: string) => Promise; +} + +export const MigrationRuleQuery: React.FC = React.memo( + ({ title, ruleName, query, canEdit, onTranslationUpdate }) => { + const { euiTheme } = useEuiTheme(); + + const formDefaultValue: RuleTranslationSchema = useMemo(() => { + return { + ruleName: ruleName ?? '', + queryBar: { + query: { + query, + language: 'esql', + }, + }, + }; + }, [query, ruleName]); + const { form } = useFormWithWarnings({ + defaultValue: formDefaultValue, + options: { stripEmptyFields: false, warningValidationCodes: VALIDATION_WARNING_CODES }, + schema, + }); + + const [editMode, setEditMode] = useState(false); + const onCancel = useCallback(() => setEditMode(false), []); + const onEdit = useCallback(() => { + form.reset({ defaultValue: formDefaultValue }); + setEditMode(true); + }, [form, formDefaultValue]); + const onSave = useCallback(async () => { + const { data, isValid } = await form.submit(); + if (isValid) { + await onTranslationUpdate?.(data.ruleName, data.queryBar.query.query); + setEditMode(false); + } + }, [form, onTranslationUpdate]); + + const headerComponent = useMemo(() => { + return ( + + + +

    {title}

    +
    +
    +
    + ); + }, [euiTheme, title]); + + const readQueryComponent = useMemo(() => { + if (editMode) { + return null; + } + return ( + <> + {canEdit ? ( + + + + {i18n.EDIT} + + + + ) : ( + + )} + +

    {ruleName}

    +
    + + {query} + + ); + }, [canEdit, editMode, onEdit, query, ruleName]); + + const editQueryComponent = useMemo(() => { + if (!editMode) { + return null; + } + return ( +
    + + + + {i18n.CANCEL} + + + + + {i18n.SAVE} + + + + + + + + ); + }, [editMode, form, onCancel, onSave]); + + return ( + <> + {headerComponent} + + {readQueryComponent} + {editQueryComponent} + + ); + } +); +MigrationRuleQuery.displayName = 'MigrationRuleQuery'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/schema.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/schema.tsx new file mode 100644 index 0000000000000..4307f919cbde1 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/schema.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { queryRequiredValidatorFactory } from '../../../../../../detection_engine/rule_creation_ui/validators/query_required_validator_factory'; +import { FIELD_TYPES, fieldValidators, type FormSchema } from '../../../../../../shared_imports'; +import type { RuleTranslationSchema } from './types'; +import * as i18n from './translations'; + +export const schema: FormSchema = { + ruleName: { + type: FIELD_TYPES.TEXT, + label: i18n.NAME_LABEL, + validations: [ + { + validator: fieldValidators.emptyField(i18n.NAME_REQUIRED_ERROR_MESSAGE), + }, + ], + }, + queryBar: { + fieldsToValidateOnChange: ['queryBar'], + validations: [ + { + validator: (...args) => { + return queryRequiredValidatorFactory('esql')(...args); + }, + }, + ], + }, +}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/translations.ts new file mode 100644 index 0000000000000..70325c76b9325 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/translations.ts @@ -0,0 +1,118 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const TAB_HEADER_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.title', + { + defaultMessage: 'Translation', + } +); + +export const NAME_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.nameLabel', + { + defaultMessage: 'Name', + } +); + +export const NAME_REQUIRED_ERROR_MESSAGE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.nameFieldRequiredError', + { + defaultMessage: 'A name is required.', + } +); + +export const SPLUNK_QUERY_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.splunkQueryTitle', + { + defaultMessage: 'Splunk query', + } +); + +export const ESQL_TRANSLATION_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.esqlTranslationTitle', + { + defaultMessage: 'ES|QL translation', + } +); + +export const TRANSLATED_QUERY_AREAL_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.queryArealLabel', + { + defaultMessage: 'Translated query', + } +); + +export const INSTALLED_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.installedLabel', + { + defaultMessage: 'Installed', + } +); + +export const EDIT = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.editButtonLabel', + { + defaultMessage: 'Edit', + } +); + +export const SAVE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.saveButtonLabel', + { + defaultMessage: 'Save', + } +); + +export const CANCEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.cancelButtonLabel', + { + defaultMessage: 'Cancel', + } +); + +export const CALLOUT_TRANSLATED_RULE_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.translatedRuleCalloutTitle', + { + defaultMessage: + 'This rule has been fully translated. Install rule to finish migration. Once installed, you’ll be able to fine tune the rule.', + } +); + +export const CALLOUT_PARTIALLY_TRANSLATED_RULE_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.partiallyTranslatedRuleCalloutTitle', + { + defaultMessage: + 'Parts of the query couldn’t be translated, please complete to Install the rule and finish migrating.', + } +); + +export const CALLOUT_PARTIALLY_TRANSLATED_RULE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.partiallyTranslatedRuleCalloutDescription', + { + defaultMessage: + 'In order to save this SIEM Rule to Elastic, you’ll need to finish the query and define the rule severity below. Complete the required fields and finalize the query to save as Rule. Or if you need help, please reach out to Elastic support.', + } +); + +export const CALLOUT_NOT_TRANSLATED_RULE_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.notTranslatedRuleCalloutTitle', + { + defaultMessage: + 'This query couldn’t be translated, please complete to Install the rule and finish migrating.', + } +); + +export const CALLOUT_NOT_TRANSLATED_RULE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.notTranslatedRuleCalloutDescription', + { + defaultMessage: + 'When a query cannot be partially translated, there could be a misalignment in features between the SIEM product.', + } +); diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/types.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/types.ts new file mode 100644 index 0000000000000..1b509a71f47a6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/types.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +type EsqlLanguage = 'esql'; + +export interface RuleTranslationSchema { + ruleName: string; + // The type is compatible with the validation function used in form schema + queryBar: { query: { query: string; language: EsqlLanguage } }; +} diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts new file mode 100644 index 0000000000000..fe6543f683e66 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const UNKNOWN_MIGRATION_RULE_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.unknownMigrationRuleTitle', + { + defaultMessage: 'Unknown migration rule', + } +); + +export const OVERVIEW_TAB_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.overviewTabLabel', + { + defaultMessage: 'Overview', + } +); + +export const SUMMARY_TAB_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTabLabel', + { + defaultMessage: 'Summary', + } +); + +export const TRANSLATION_TAB_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTabLabel', + { + defaultMessage: 'Translation', + } +); + +export const DISMISS_BUTTON_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.dismissButtonLabel', + { + defaultMessage: 'Dismiss', + } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/bulk_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/bulk_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/bulk_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/bulk_actions.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/empty_migration.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/empty_migration.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/empty_migration.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/empty_migration.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx new file mode 100644 index 0000000000000..07ba44d4d167e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx @@ -0,0 +1,302 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { CriteriaWithPagination, EuiTableSelectionType } from '@elastic/eui'; +import { + EuiSkeletonLoading, + EuiSkeletonTitle, + EuiSkeletonText, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiBasicTable, + EuiButton, +} from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; + +import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; +import type { RuleMigration } from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import { EmptyMigration } from './empty_migration'; +import { useMigrationRulesTableColumns } from '../../hooks/use_migration_rules_table_columns'; +import { useMigrationRuleDetailsFlyout } from '../../hooks/use_migration_rule_preview_flyout'; +import { useInstallMigrationRules } from '../../logic/use_install_migration_rules'; +import { useGetMigrationRules } from '../../logic/use_get_migration_rules'; +import { useInstallTranslatedMigrationRules } from '../../logic/use_install_translated_migration_rules'; +import { useGetMigrationTranslationStats } from '../../logic/use_get_migration_translation_stats'; +import { useGetMigrationPrebuiltRules } from '../../logic/use_get_migration_prebuilt_rules'; +import * as logicI18n from '../../logic/translations'; +import { BulkActions } from './bulk_actions'; +import { SearchField } from './search_field'; +import { SiemMigrationRuleTranslationResult } from '../../../../../common/siem_migrations/constants'; +import * as i18n from './translations'; + +const DEFAULT_PAGE_SIZE = 10; +const DEFAULT_SORT_FIELD = 'translation_result'; +const DEFAULT_SORT_DIRECTION = 'desc'; + +export interface MigrationRulesTableProps { + /** + * Selected rule migration id + */ + migrationId: string; +} + +/** + * Table Component for displaying SIEM rules migrations + */ +export const MigrationRulesTable: React.FC = React.memo( + ({ migrationId }) => { + const { addError } = useAppToasts(); + + const [pageIndex, setPageIndex] = useState(0); + const [pageSize, setPageSize] = useState(DEFAULT_PAGE_SIZE); + const [sortField, setSortField] = useState(DEFAULT_SORT_FIELD); + const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>(DEFAULT_SORT_DIRECTION); + const [searchTerm, setSearchTerm] = useState(); + + const { data: translationStats, isLoading: isStatsLoading } = + useGetMigrationTranslationStats(migrationId); + + const { data: prebuiltRules = {}, isLoading: isPrebuiltRulesLoading } = + useGetMigrationPrebuiltRules(migrationId); + + const { + data: { ruleMigrations, total } = { ruleMigrations: [], total: 0 }, + isLoading: isDataLoading, + } = useGetMigrationRules({ + migrationId, + page: pageIndex, + perPage: pageSize, + sortField, + sortDirection, + searchTerm, + }); + + const [selectedRuleMigrations, setSelectedRuleMigrations] = useState([]); + const tableSelection: EuiTableSelectionType = useMemo( + () => ({ + selectable: (item: RuleMigration) => { + return ( + !item.elastic_rule?.id && + item.translation_result === SiemMigrationRuleTranslationResult.FULL + ); + }, + selectableMessage: (selectable: boolean, item: RuleMigration) => { + if (selectable) { + return ''; + } + return item.elastic_rule?.id + ? i18n.ALREADY_TRANSLATED_RULE_TOOLTIP + : i18n.NOT_FULLY_TRANSLATED_RULE_TOOLTIP; + }, + onSelectionChange: setSelectedRuleMigrations, + selected: selectedRuleMigrations, + }), + [selectedRuleMigrations] + ); + + const pagination = useMemo(() => { + return { + pageIndex, + pageSize, + totalItemCount: total, + }; + }, [pageIndex, pageSize, total]); + + const sorting = useMemo(() => { + return { + sort: { + field: sortField, + direction: sortDirection, + }, + }; + }, [sortDirection, sortField]); + + const onTableChange = useCallback(({ page, sort }: CriteriaWithPagination) => { + if (page) { + setPageIndex(page.index); + setPageSize(page.size); + } + if (sort) { + const { field, direction } = sort; + setSortField(field); + setSortDirection(direction); + } + }, []); + + const handleOnSearch = useCallback((value: string) => { + setSearchTerm(value.trim()); + }, []); + + const { mutateAsync: installMigrationRules } = useInstallMigrationRules(migrationId); + const { mutateAsync: installTranslatedMigrationRules } = + useInstallTranslatedMigrationRules(migrationId); + + const [isTableLoading, setTableLoading] = useState(false); + const installSingleRule = useCallback( + async (migrationRule: RuleMigration, enabled = false) => { + setTableLoading(true); + try { + await installMigrationRules({ ids: [migrationRule.id], enabled }); + } catch (error) { + addError(error, { title: logicI18n.INSTALL_MIGRATION_RULES_FAILURE }); + } finally { + setTableLoading(false); + } + }, + [addError, installMigrationRules] + ); + + const installSelectedRule = useCallback( + async (enabled = false) => { + setTableLoading(true); + try { + await installMigrationRules({ + ids: selectedRuleMigrations.map((rule) => rule.id), + enabled, + }); + } catch (error) { + addError(error, { title: logicI18n.INSTALL_MIGRATION_RULES_FAILURE }); + } finally { + setTableLoading(false); + setSelectedRuleMigrations([]); + } + }, + [addError, installMigrationRules, selectedRuleMigrations] + ); + + const installTranslatedRules = useCallback( + async (enable?: boolean) => { + setTableLoading(true); + try { + await installTranslatedMigrationRules(); + } catch (error) { + addError(error, { title: logicI18n.INSTALL_MIGRATION_RULES_FAILURE }); + } finally { + setTableLoading(false); + } + }, + [addError, installTranslatedMigrationRules] + ); + + const isLoading = isStatsLoading || isPrebuiltRulesLoading || isDataLoading || isTableLoading; + + const ruleActionsFactory = useCallback( + (ruleMigration: RuleMigration, closeRulePreview: () => void) => { + const canMigrationRuleBeInstalled = + !isLoading && + !ruleMigration.elastic_rule?.id && + ruleMigration.translation_result === SiemMigrationRuleTranslationResult.FULL; + return ( + + + { + installSingleRule(ruleMigration); + closeRulePreview(); + }} + data-test-subj="installMigrationRuleFromFlyoutButton" + > + {i18n.INSTALL_WITHOUT_ENABLING_BUTTON_LABEL} + + + + { + installSingleRule(ruleMigration, true); + closeRulePreview(); + }} + fill + data-test-subj="installAndEnableMigrationRuleFromFlyoutButton" + > + {i18n.INSTALL_AND_ENABLE_BUTTON_LABEL} + + + + ); + }, + [installSingleRule, isLoading] + ); + + const getMigrationRule = useCallback( + (ruleId: string) => { + if (!isLoading && ruleMigrations.length) { + return ruleMigrations.find((item) => item.id === ruleId); + } + }, + [isLoading, ruleMigrations] + ); + + const { + migrationRuleDetailsFlyout: rulePreviewFlyout, + openMigrationRuleDetails: openRulePreview, + } = useMigrationRuleDetailsFlyout({ + isLoading, + prebuiltRules, + getMigrationRule, + ruleActionsFactory, + }); + + const rulesColumns = useMigrationRulesTableColumns({ + disableActions: isTableLoading, + openMigrationRuleDetails: openRulePreview, + installMigrationRule: installSingleRule, + }); + + return ( + <> + + + + + } + loadedContent={ + !translationStats?.rules.total ? ( + + ) : ( + <> + + + + + + + + + + + loading={isTableLoading} + items={ruleMigrations} + pagination={pagination} + sorting={sorting} + onChange={onTableChange} + selection={tableSelection} + itemId={'id'} + data-test-subj={'rules-translation-table'} + columns={rulesColumns} + /> + + ) + } + /> + {rulePreviewFlyout} + + ); + } +); +MigrationRulesTable.displayName = 'MigrationRulesTable'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/search_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/search_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/search_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/search_field.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/actions.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/author.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/author.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/author.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/author.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/constants.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/constants.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/constants.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/constants.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/index.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx similarity index 84% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx index dd77636521eda..ce0e1d3c99d8d 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { EuiLink } from '@elastic/eui'; +import { EuiLink, EuiText } from '@elastic/eui'; import type { RuleMigration } from '../../../../../common/siem_migrations/model/rule_migration.gen'; import * as i18n from './translations'; import type { TableColumn } from './constants'; @@ -17,6 +17,13 @@ interface NameProps { } const Name = ({ rule, openMigrationRuleDetails }: NameProps) => { + if (!rule.elastic_rule) { + return ( + + {rule.original_rule.title} + + ); + } return ( { @@ -24,7 +31,7 @@ const Name = ({ rule, openMigrationRuleDetails }: NameProps) => { }} data-test-subj="ruleName" > - {rule.elastic_rule?.title} + {rule.elastic_rule.title} ); }; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/risk_score.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/risk_score.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/risk_score.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/risk_score.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/severity.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/severity.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/severity.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/severity.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx index 5daec1f1b4fa9..2936878c93b8b 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx @@ -15,9 +15,7 @@ export const createStatusColumn = (): TableColumn => { return { field: 'translation_result', name: i18n.COLUMN_STATUS, - render: (value: RuleMigration['translation_result'], rule: RuleMigration) => ( - - ), + render: (_, rule: RuleMigration) => , sortable: true, truncateText: true, width: '15%', diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/translations.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/updated.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/updated.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/updated.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/updated.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx new file mode 100644 index 0000000000000..f1f435c7e14ad --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { euiLightVars } from '@kbn/ui-theme'; + +import { EuiFlexGroup, EuiFlexItem, EuiHealth, EuiIcon, EuiToolTip } from '@elastic/eui'; +import { css } from '@emotion/css'; +import { + RuleMigrationStatusEnum, + type RuleMigration, + type RuleMigrationTranslationResult, +} from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import { convertTranslationResultIntoText } from '../../utils/helpers'; +import * as i18n from './translations'; + +const statusTextWrapperClassName = css` + width: 100%; + display: inline-grid; +`; + +const { euiColorVis0, euiColorVis7, euiColorVis9 } = euiLightVars; +const statusToColorMap: Record = { + full: euiColorVis0, + partial: euiColorVis7, + untranslatable: euiColorVis9, +}; + +interface StatusBadgeProps { + migrationRule: RuleMigration; + 'data-test-subj'?: string; +} + +export const StatusBadge: React.FC = React.memo( + ({ migrationRule, 'data-test-subj': dataTestSubj = 'translation-result' }) => { + // Installed + if (migrationRule.elastic_rule?.id) { + return ( + + + + + + {i18n.RULE_STATUS_INSTALLED} + + + ); + } + + // Failed + if (migrationRule.status === RuleMigrationStatusEnum.failed) { + return ( + + + + + + {i18n.RULE_STATUS_FAILED} + + + ); + } + + const translationResult = migrationRule.translation_result ?? 'untranslatable'; + const displayValue = convertTranslationResultIntoText(translationResult); + const color = statusToColorMap[translationResult]; + + return ( + + +
    + {displayValue} +
    +
    +
    + ); + } +); +StatusBadge.displayName = 'StatusBadge'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts new file mode 100644 index 0000000000000..a84fd298ed364 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const RULE_STATUS_INSTALLED = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.status.installedLabel', + { + defaultMessage: 'Installed', + } +); + +export const RULE_STATUS_FAILED = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.status.failedLabel', + { + defaultMessage: 'Error', + } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/unknown_migration/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/unknown_migration/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/unknown_migration/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/unknown_migration/index.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/unknown_migration/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/unknown_migration/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/unknown_migration/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/components/unknown_migration/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx new file mode 100644 index 0000000000000..4efaa4aba7181 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ReactNode } from 'react'; +import React, { useCallback, useState, useMemo } from 'react'; +import type { EuiTabbedContentTab } from '@elastic/eui'; +import type { + PrebuiltRuleVersion, + RuleMigration, +} from '../../../../common/siem_migrations/model/rule_migration.gen'; +import { MigrationRuleDetailsFlyout } from '../components/rule_details_flyout'; + +interface UseMigrationRuleDetailsFlyoutParams { + isLoading?: boolean; + prebuiltRules: Record; + getMigrationRule: (ruleId: string) => RuleMigration | undefined; + ruleActionsFactory: (ruleMigration: RuleMigration, closeRulePreview: () => void) => ReactNode; + extraTabsFactory?: (ruleMigration: RuleMigration) => EuiTabbedContentTab[]; +} + +interface UseMigrationRuleDetailsFlyoutResult { + migrationRuleDetailsFlyout: ReactNode; + openMigrationRuleDetails: (rule: RuleMigration) => void; + closeMigrationRuleDetails: () => void; +} + +export function useMigrationRuleDetailsFlyout({ + isLoading, + prebuiltRules, + getMigrationRule, + extraTabsFactory, + ruleActionsFactory, +}: UseMigrationRuleDetailsFlyoutParams): UseMigrationRuleDetailsFlyoutResult { + const [migrationRuleId, setMigrationRuleId] = useState(); + + const ruleMigration = useMemo(() => { + if (migrationRuleId) { + return getMigrationRule(migrationRuleId); + } + }, [getMigrationRule, migrationRuleId]); + const matchedPrebuiltRule = useMemo(() => { + if (ruleMigration) { + // Find matched prebuilt rule if any and prioritize its installed version + const matchedPrebuiltRuleVersion = ruleMigration.elastic_rule?.prebuilt_rule_id + ? prebuiltRules[ruleMigration.elastic_rule.prebuilt_rule_id] + : undefined; + return matchedPrebuiltRuleVersion?.current ?? matchedPrebuiltRuleVersion?.target; + } + }, [prebuiltRules, ruleMigration]); + + const openMigrationRuleDetails = useCallback((rule: RuleMigration) => { + setMigrationRuleId(rule.id); + }, []); + const closeMigrationRuleDetails = useCallback(() => setMigrationRuleId(undefined), []); + + const ruleActions = useMemo( + () => ruleMigration && ruleActionsFactory(ruleMigration, closeMigrationRuleDetails), + [ruleMigration, ruleActionsFactory, closeMigrationRuleDetails] + ); + const extraTabs = useMemo( + () => (ruleMigration && extraTabsFactory ? extraTabsFactory(ruleMigration) : []), + [ruleMigration, extraTabsFactory] + ); + + return { + migrationRuleDetailsFlyout: ruleMigration && ( + + ), + openMigrationRuleDetails, + closeMigrationRuleDetails, + }; +} diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rules_table_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rules_table_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rules_table_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rules_table_columns.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/logic/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/constants.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts new file mode 100644 index 0000000000000..ef3521fd37301 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const GET_MIGRATION_PREBUILT_RULES_FAILURE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.getMigrationPrebuiltRulesFailDescription', + { + defaultMessage: 'Failed to fetch prebuilt rules', + } +); + +export const GET_MIGRATION_RULES_FAILURE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.getMigrationRulesFailDescription', + { + defaultMessage: 'Failed to fetch migration rules', + } +); + +export const GET_MIGRATION_TRANSLATION_STATS_FAILURE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.getMigrationTranslationStatsFailDescription', + { + defaultMessage: 'Failed to fetch migration translation stats', + } +); + +export const INSTALL_MIGRATION_RULES_FAILURE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.installMigrationRulesFailDescription', + { + defaultMessage: 'Failed to install migration rules', + } +); + +export const UPDATE_MIGRATION_RULES_FAILURE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.updateMigrationRulesFailDescription', + { + defaultMessage: 'Failed to update migration rules', + } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_prebuilt_rules.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_prebuilt_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_prebuilt_rules.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_prebuilt_rules.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts similarity index 96% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts index 4109575459233..b06f041e2c58e 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts @@ -18,9 +18,10 @@ export const useGetMigrationRules = (params: { migrationId: string; page?: number; perPage?: number; - sortField: string; - sortDirection: 'asc' | 'desc'; + sortField?: string; + sortDirection?: 'asc' | 'desc'; searchTerm?: string; + ids?: string[]; }) => { const { addError } = useAppToasts(); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_translation_stats.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_translation_stats.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_translation_stats.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_translation_stats.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_install_migration_rules.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_install_migration_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_install_migration_rules.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_install_migration_rules.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_install_translated_migration_rules.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_install_translated_migration_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_install_translated_migration_rules.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_install_translated_migration_rules.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_update_migration_rules.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_update_migration_rules.ts new file mode 100644 index 0000000000000..1e0fa22c466f0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/logic/use_update_migration_rules.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMutation } from '@tanstack/react-query'; +import type { UpdateRuleMigrationData } from '../../../../common/siem_migrations/model/rule_migration.gen'; +import { SIEM_RULE_MIGRATIONS_PATH } from '../../../../common/siem_migrations/constants'; +import type { UpdateRuleMigrationResponse } from '../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import { useAppToasts } from '../../../common/hooks/use_app_toasts'; +import * as i18n from './translations'; +import { useInvalidateGetMigrationRules } from './use_get_migration_rules'; +import { useInvalidateGetMigrationTranslationStats } from './use_get_migration_translation_stats'; +import { updateMigrationRules } from '../api'; + +export const UPDATE_MIGRATION_RULES_MUTATION_KEY = ['PUT', SIEM_RULE_MIGRATIONS_PATH]; + +export const useUpdateMigrationRules = (migrationId: string) => { + const { addError } = useAppToasts(); + + const invalidateGetRuleMigrations = useInvalidateGetMigrationRules(migrationId); + const invalidateGetMigrationTranslationStats = + useInvalidateGetMigrationTranslationStats(migrationId); + + return useMutation( + (rulesToUpdate) => updateMigrationRules({ rulesToUpdate }), + { + mutationKey: UPDATE_MIGRATION_RULES_MUTATION_KEY, + onError: (error) => { + addError(error, { title: i18n.UPDATE_MIGRATION_RULES_FAILURE }); + }, + onSettled: () => { + invalidateGetRuleMigrations(); + invalidateGetMigrationTranslationStats(); + }, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/pages/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/pages/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/pages/translations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/pages/translations.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/common/api_request_reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/common/api_request_reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/common/api_request_reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/common/api_request_reducer.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/translations.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts similarity index 77% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts index 94082cf59d359..18a4ebe47bf8d 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts @@ -12,10 +12,15 @@ import type { CreateRuleMigrationRequestBody } from '../../../../../common/siem_ import { useKibana } from '../../../../common/lib/kibana/kibana_react'; import { reducer, initialState } from './common/api_request_reducer'; -export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.service.createRuleSuccess', - { defaultMessage: 'Rules uploaded successfully' } +export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.service.createRuleSuccess.title', + { defaultMessage: 'Rule migration created successfully' } ); +export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS_DESCRIPTION = (rules: number) => + i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.service.createRuleSuccess.description', + { defaultMessage: '{rules} rules uploaded', values: { rules } } + ); export const RULES_DATA_INPUT_CREATE_MIGRATION_ERROR = i18n.translate( 'xpack.securitySolution.siemMigrations.rules.service.createRuleError', { defaultMessage: 'Failed to upload rules file' } @@ -36,7 +41,10 @@ export const useCreateMigration = (onSuccess: OnSuccess) => { const migrationId = await siemMigrations.rules.createRuleMigration(data); const stats = await siemMigrations.rules.getRuleMigrationStats(migrationId); - notifications.toasts.addSuccess(RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS); + notifications.toasts.addSuccess({ + title: RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS_TITLE, + text: RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS_DESCRIPTION(data.length), + }); onSuccess(stats); dispatch({ type: 'success' }); } catch (err) { diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_get_missing_resources.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_get_missing_resources.ts new file mode 100644 index 0000000000000..a0679aa1e8bd2 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_get_missing_resources.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useReducer } from 'react'; +import { i18n } from '@kbn/i18n'; +import type { RuleMigrationResourceData } from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import { useKibana } from '../../../../common/lib/kibana/kibana_react'; +import { reducer, initialState } from './common/api_request_reducer'; + +export const RULES_DATA_INPUT_CREATE_MIGRATION_ERROR = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.service.getMissingResourcesError', + { defaultMessage: 'Failed to fetch missing macros & lookups' } +); + +export type GetMissingResources = (migrationId: string) => void; +export type OnSuccess = (missingResources: RuleMigrationResourceData[]) => void; + +export const useGetMissingResources = (onSuccess: OnSuccess) => { + const { siemMigrations, notifications } = useKibana().services; + const [state, dispatch] = useReducer(reducer, initialState); + + const getMissingResources = useCallback( + (migrationId) => { + (async () => { + try { + dispatch({ type: 'start' }); + const missingResources = await siemMigrations.rules.getMissingResources(migrationId); + + onSuccess(missingResources); + dispatch({ type: 'success' }); + } catch (err) { + const apiError = err.body ?? err; + notifications.toasts.addError(apiError, { + title: RULES_DATA_INPUT_CREATE_MIGRATION_ERROR, + }); + dispatch({ type: 'error', error: apiError }); + } + })(); + }, + [siemMigrations.rules, notifications.toasts, onSuccess] + ); + + return { isLoading: state.loading, error: state.error, getMissingResources }; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts similarity index 76% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts index 8b692f07eb3cb..88c6b798e2f40 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts @@ -6,7 +6,7 @@ */ import useObservable from 'react-use/lib/useObservable'; -import { useEffect, useMemo } from 'react'; +import { useCallback, useEffect, useMemo } from 'react'; import { useKibana } from '../../../../common/lib/kibana/kibana_react'; export const useLatestStats = () => { @@ -16,8 +16,12 @@ export const useLatestStats = () => { siemMigrations.rules.startPolling(); }, [siemMigrations.rules]); + const refreshStats = useCallback(() => { + siemMigrations.rules.getRuleMigrationsStats(); // this updates latestStats$ internally + }, [siemMigrations.rules]); + const latestStats$ = useMemo(() => siemMigrations.rules.getLatestStats$(), [siemMigrations]); const latestStats = useObservable(latestStats$, null); - return { data: latestStats ?? [], isLoading: latestStats === null }; + return { data: latestStats ?? [], isLoading: latestStats === null, refreshStats }; }; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_start_migration.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_start_migration.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_start_migration.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_start_migration.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_upsert_resources.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_upsert_resources.ts new file mode 100644 index 0000000000000..eab3888422bae --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_upsert_resources.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useReducer } from 'react'; +import { i18n } from '@kbn/i18n'; +import type { UpsertRuleMigrationResourcesRequestBody } from '../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import { useKibana } from '../../../../common/lib/kibana/kibana_react'; +import { reducer, initialState } from './common/api_request_reducer'; + +export const RULES_DATA_INPUT_UPSERT_MIGRATION_RESOURCES_ERROR = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.service.upsertRuleMigrationResourcesError', + { defaultMessage: 'Failed to upload rule migration resources' } +); + +export type UpsertResources = ( + migrationId: string, + data: UpsertRuleMigrationResourcesRequestBody +) => void; +export type OnSuccess = () => void; + +export const useUpsertResources = (onSuccess: OnSuccess) => { + const { siemMigrations, notifications } = useKibana().services; + const [state, dispatch] = useReducer(reducer, initialState); + + const upsertResources = useCallback( + (migrationId, data) => { + (async () => { + try { + dispatch({ type: 'start' }); + await siemMigrations.rules.upsertMigrationResources(migrationId, data); + + onSuccess(); + dispatch({ type: 'success' }); + } catch (err) { + const apiError = err.body ?? err; + notifications.toasts.addError(apiError, { + title: RULES_DATA_INPUT_UPSERT_MIGRATION_RESOURCES_ERROR, + }); + dispatch({ type: 'error', error: apiError }); + } + })(); + }, + [siemMigrations.rules, notifications.toasts, onSuccess] + ); + + return { isLoading: state.loading, error: state.error, upsertResources }; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts similarity index 88% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts index c13b0606d771d..75b7887db6525 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts @@ -13,11 +13,15 @@ import { TRACE_OPTIONS_SESSION_STORAGE_KEY, } from '@kbn/elastic-assistant/impl/assistant_context/constants'; import type { LangSmithOptions } from '../../../../common/siem_migrations/model/common.gen'; -import type { RuleMigrationTaskStats } from '../../../../common/siem_migrations/model/rule_migration.gen'; +import type { + RuleMigrationResourceData, + RuleMigrationTaskStats, +} from '../../../../common/siem_migrations/model/rule_migration.gen'; import type { CreateRuleMigrationRequestBody, GetAllStatsRuleMigrationResponse, GetRuleMigrationStatsResponse, + UpsertRuleMigrationResourcesRequestBody, } from '../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; import { SiemMigrationTaskStatus } from '../../../../common/siem_migrations/constants'; import type { StartPluginsDependencies } from '../../../types'; @@ -29,6 +33,8 @@ import { getRuleMigrationsStatsAll, startRuleMigration, type GetRuleMigrationsStatsAllParams, + getMissingResources, + upsertMigrationResources, } from '../api'; import type { RuleMigrationStats } from '../types'; import { getSuccessToast } from './success_notification'; @@ -99,6 +105,20 @@ export class SiemRulesMigrationsService { return migrationId as string; } + public async upsertMigrationResources( + migrationId: string, + body: UpsertRuleMigrationResourcesRequestBody + ): Promise { + if (body.length === 0) { + throw new Error(i18n.EMPTY_RULES_ERROR); + } + // Batching creation to avoid hitting the max payload size limit of the API + for (let i = 0; i < body.length; i += CREATE_MIGRATION_BODY_BATCH_SIZE) { + const bodyBatch = body.slice(i, i + CREATE_MIGRATION_BODY_BATCH_SIZE); + await upsertMigrationResources({ migrationId, body: bodyBatch }); + } + } + public async startRuleMigration(migrationId: string): Promise { const connectorId = this.connectorIdStorage.get(); if (!connectorId) { @@ -135,6 +155,10 @@ export class SiemRulesMigrationsService { return results; } + public async getMissingResources(migrationId: string): Promise { + return getMissingResources({ migrationId }); + } + private async getRuleMigrationsStatsWithRetry( params: GetRuleMigrationsStatsAllParams = {}, sleepSecs?: number diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/storage.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/storage.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/service/storage.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/storage.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/success_notification.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/success_notification.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/service/success_notification.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/success_notification.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/service/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/service/translations.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/types.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/types.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/utils/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/utils/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/utils/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/utils/helpers.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts new file mode 100644 index 0000000000000..03f76cb833818 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const SIEM_TRANSLATION_RESULT_FULL_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationResult.full', + { + defaultMessage: 'Translated', + } +); + +export const SIEM_TRANSLATION_RESULT_PARTIAL_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationResult.partially', + { + defaultMessage: 'Partially translated', + } +); + +export const SIEM_TRANSLATION_RESULT_UNTRANSLATABLE_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationResult.untranslatable', + { + defaultMessage: 'Not translated', + } +); + +export const SIEM_TRANSLATION_RESULT_UNKNOWN_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationResult.unknown', + { + defaultMessage: 'Unknown', + } +); + +export const SIEM_TRANSLATION_RESULT_UNKNOWN_ERROR = (status?: string) => { + return i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationResult.unknownError', + { + defaultMessage: 'Unknown translation result status: ({status})', + values: { status }, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/service/index.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/service/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/service/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/service/index.ts diff --git a/x-pack/plugins/security_solution/public/siem_migrations/service/siem_migrations_service.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/service/siem_migrations_service.ts similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/service/siem_migrations_service.ts rename to x-pack/solutions/security/plugins/security_solution/public/siem_migrations/service/siem_migrations_service.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/alerts_sourcerer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/alerts_sourcerer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/alerts_sourcerer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/alerts_sourcerer.test.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/index.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/misc.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/misc.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/misc.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/misc.test.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/readme.md b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/readme.md similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/readme.md rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/readme.md diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/refresh_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/refresh_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/refresh_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/refresh_button.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/sourcerer_integration.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/sourcerer_integration.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/sourcerer_integration.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/sourcerer_integration.test.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/sub_components.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/sub_components.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/sub_components.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/sub_components.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/temporary.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/temporary.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/temporary.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/temporary.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/timeline_sourcerer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/timeline_sourcerer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/timeline_sourcerer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/timeline_sourcerer.test.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/translations.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/trigger.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/trigger.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/trigger.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/trigger.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/update_default_data_view_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/update_default_data_view_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/update_default_data_view_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/update_default_data_view_modal.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/use_get_sourcerer_data_view.test.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_get_sourcerer_data_view.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/use_get_sourcerer_data_view.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_get_sourcerer_data_view.test.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/use_get_sourcerer_data_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_get_sourcerer_data_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/use_get_sourcerer_data_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_get_sourcerer_data_view.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/use_pick_index_patterns.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_pick_index_patterns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/use_pick_index_patterns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_pick_index_patterns.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/use_update_data_view.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_update_data_view.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/use_update_data_view.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_update_data_view.test.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/use_update_data_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_update_data_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/use_update_data_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/use_update_data_view.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/components/utils.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/utils.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/components/utils.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/components/utils.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/get_sourcerer_data_view.test.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/get_sourcerer_data_view.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/get_sourcerer_data_view.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/get_sourcerer_data_view.test.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/get_sourcerer_data_view.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/get_sourcerer_data_view.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/get_sourcerer_data_view.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/get_sourcerer_data_view.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/hooks.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/hooks.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/hooks.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/hooks.test.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/index.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/mocks.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/readme.md b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/readme.md similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/readme.md rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/readme.md diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/sourcerer_paths.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/sourcerer_paths.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/sourcerer_paths.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/sourcerer_paths.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/use_init_sourcerer.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/use_init_sourcerer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/use_init_sourcerer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/use_init_sourcerer.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/use_signal_helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/use_signal_helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/use_signal_helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/use_signal_helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/sourcerer/containers/use_signal_helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/use_signal_helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/containers/use_signal_helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/use_signal_helpers.tsx diff --git a/x-pack/solutions/security/plugins/security_solution/public/sourcerer/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/jest.config.js new file mode 100644 index 0000000000000..087e58a095847 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/sourcerer'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/sourcerer', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/sourcerer/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/sourcerer/store/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/store/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/actions.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/store/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/store/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/store/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/store/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/helpers.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/store/index.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/store/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/index.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/store/model.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/store/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/model.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/store/readme.md b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/readme.md similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/store/readme.md rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/readme.md diff --git a/x-pack/plugins/security_solution/public/sourcerer/store/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/store/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/reducer.ts diff --git a/x-pack/plugins/security_solution/public/sourcerer/store/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/sourcerer/store/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/sourcerer/store/selectors.ts diff --git a/x-pack/plugins/security_solution/public/threat_intelligence/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/threat_intelligence/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/index.tsx diff --git a/x-pack/plugins/security_solution/public/threat_intelligence/links.ts b/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/threat_intelligence/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/links.ts diff --git a/x-pack/plugins/security_solution/public/threat_intelligence/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/threat_intelligence/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/routes.tsx diff --git a/x-pack/plugins/security_solution/public/threat_intelligence/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/threat_intelligence/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts b/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts new file mode 100644 index 0000000000000..7ae6c41ebd124 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts @@ -0,0 +1,108 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback } from 'react'; +import { timelineDefaults } from '../timelines/store/defaults'; +import { APP_UI_ID } from '../../common/constants'; +import type { DataProvider } from '../../common/types'; +import { TimelineId } from '../../common/types/timeline'; +import { TimelineTypeEnum } from '../../common/api/timeline'; +import { useStartTransaction } from '../common/lib/apm/use_start_transaction'; +import { useCreateTimeline } from '../timelines/hooks/use_create_timeline'; +import type { CreateTimelineProps } from '../detections/components/alerts_table/types'; +import { useUpdateTimeline } from '../timelines/components/open_timeline/use_update_timeline'; + +interface UseInvestigateInTimelineActionProps { + /** + * Created when the user clicks on the Investigate in Timeline button. + * DataProvider contain the field(s) and value(s) displayed in the timeline. + */ + dataProviders: DataProvider[]; + /** + * Start date used in the createTimeline method. + */ + from: string; + /** + * End date used in the createTimeline method. + */ + to: string; +} + +/** + * Hook passed down to the Threat Intelligence plugin, via context. + * This code is closely duplicated from here: https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/use_investigate_in_timeline.tsx, + * the main changes being: + * - no exceptions are handled at the moment + * - we use dataProviders, from and to directly instead of consuming ecsData + */ +export const useInvestigateInTimeline = ({ + dataProviders, + from, + to, +}: UseInvestigateInTimelineActionProps) => { + const { startTransaction } = useStartTransaction(); + + const clearActiveTimeline = useCreateTimeline({ + timelineId: TimelineId.active, + timelineType: TimelineTypeEnum.default, + }); + + const updateTimeline = useUpdateTimeline(); + + const createTimeline = useCallback( + async ({ from: fromTimeline, timeline, to: toTimeline, ruleNote }: CreateTimelineProps) => { + await clearActiveTimeline(); + updateTimeline({ + duplicate: true, + from: fromTimeline, + id: TimelineId.active, + notes: [], + timeline: { + ...timeline, + indexNames: timeline.indexNames ?? [], + show: true, + }, + to: toTimeline, + ruleNote, + }); + }, + [updateTimeline, clearActiveTimeline] + ); + + const investigateInTimelineClick = useCallback(async () => { + startTransaction({ name: `${APP_UI_ID} threat indicator investigateInTimeline` }); + createTimeline({ + from, + notes: null, + timeline: { + ...timelineDefaults, + dataProviders, + id: TimelineId.active, + indexNames: [], + dateRange: { + start: from, + end: to, + }, + eventType: 'all', + filters: [], + kqlQuery: { + filterQuery: { + kuery: { + kind: 'kuery', + expression: '', + }, + serializedQuery: '', + }, + }, + }, + to, + ruleNote: '', + }); + }, [startTransaction, createTimeline, dataProviders, from, to]); + + return investigateInTimelineClick; +}; diff --git a/x-pack/plugins/security_solution/public/timelines/components/add_to_favorites/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/add_to_favorites/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/add_to_favorites/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/add_to_favorites/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/add_to_favorites/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/add_to_favorites/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/add_to_favorites/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/add_to_favorites/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/bottom_bar/add_timeline_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/add_timeline_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/bottom_bar/add_timeline_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/add_timeline_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/bottom_bar/add_timeline_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/add_timeline_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/bottom_bar/add_timeline_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/add_timeline_button.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/bottom_bar/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/bottom_bar/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/bottom_bar/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/bottom_bar/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/bottom_bar/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/bottom_bar/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/bottom_bar/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/certificate_fingerprint/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/certificate_fingerprint/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/duration/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/duration/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/duration/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/duration/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/duration/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/duration/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/duration/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/duration/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/components/components.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/components/components.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/components/components.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/components/components.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/components/controlled_combobox_input.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/components/controlled_combobox_input.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/components/controlled_combobox_input.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/components/controlled_combobox_input.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/components/controlled_default_input.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/components/controlled_default_input.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/components/controlled_default_input.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/components/controlled_default_input.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/components/index.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/components/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/components/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/components/index.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/edit_data_provider/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/edit_data_provider/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/__snapshots__/field_renderers.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/__snapshots__/field_renderers.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/field_renderers/__snapshots__/field_renderers.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/__snapshots__/field_renderers.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/default_renderer/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/default_renderer/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/field_renderers/default_renderer/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/default_renderer/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/default_renderer/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/default_renderer/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/field_renderers/default_renderer/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/default_renderer/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/field_renderers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/more_container/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/more_container/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/field_renderers/more_container/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/more_container/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/field_renderers/more_container/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/more_container/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/field_renderers/more_container/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/field_renderers/more_container/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/field_table_columns/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/fields_browser/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/fields_browser/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/fields_browser/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/formatted_duration/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/formatted_duration/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/formatted_duration/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/formatted_duration/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/formatted_duration/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/formatted_duration/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/formatted_duration/tooltip/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/tooltip/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/formatted_duration/tooltip/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/tooltip/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/formatted_duration/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/formatted_duration/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_duration/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_ip/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_ip/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_ip/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/formatted_ip/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/formatted_ip/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/graph_overlay/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/graph_overlay/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/graph_overlay/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/graph_overlay/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/graph_overlay/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/graph_overlay/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/graph_overlay/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/graph_overlay/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/ja3_fingerprint/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/ja3_fingerprint/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/lazy_accordion/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/lazy_accordion/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/lazy_accordion/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/lazy_accordion/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/loading/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/loading/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/loading/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/loading/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/attach_to_case_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/attach_to_case_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/attach_to_case_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/attach_to_case_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/attach_to_case_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/attach_to_case_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/attach_to_case_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/attach_to_case_button.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/new_timeline_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/new_timeline_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/new_timeline_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/new_timeline_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/new_timeline_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/new_timeline_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/new_timeline_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/new_timeline_button.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/open_timeline_button.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_button.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_button.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_button.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_button.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_button.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_modal.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_modal.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_modal.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_modal.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/save_timeline_modal.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/schema.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/schema.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/schema.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/schema.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/actions/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/actions/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/custom_portal.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/custom_portal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/custom_portal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/custom_portal.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/header/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/header/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/header/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/header/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/header/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/index.styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/index.styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/index.styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/index.styles.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/modal/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/modal/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/modal/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/netflow/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/fingerprints/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/fingerprints/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/netflow/fingerprints/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/fingerprints/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/netflow/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/netflow/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/duration_event_start_end.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/netflow_columns/duration_event_start_end.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/duration_event_start_end.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/netflow_columns/duration_event_start_end.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/netflow_columns/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/netflow_columns/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/types.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/netflow_columns/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/netflow_columns/types.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/user_process.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/netflow_columns/user_process.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/netflow/netflow_columns/user_process.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/netflow_columns/user_process.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/types.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/netflow/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/netflow/types.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/new_timeline/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/new_timeline/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/new_timeline/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/new_timeline/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/new_timeline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/new_timeline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/new_timeline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/new_timeline/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/add_note/__snapshots__/new_note.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/__snapshots__/new_note.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/add_note/__snapshots__/new_note.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/__snapshots__/new_note.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/add_note/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/add_note/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/add_note/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/add_note/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/add_note/new_note.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/new_note.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/add_note/new_note.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/new_note.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/add_note/new_note.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/new_note.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/add_note/new_note.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/add_note/new_note.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/note_cards/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/note_cards/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/note_cards/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/note_cards/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/note_cards/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/note_cards/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/note_cards/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/note_cards/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/old_notes.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/old_notes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/old_notes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/old_notes.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/participants.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/participants.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/participants.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/participants.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/participants.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/participants.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/participants.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/participants.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/save_timeline.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/save_timeline.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/save_timeline.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/save_timeline.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/save_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/save_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/save_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/save_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/test_ids.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/test_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/test_ids.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/test_ids.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/notes/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/notes/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/notes/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/constants.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/delete_timeline_modal.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/delete_timeline_modal.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/delete_timeline_modal.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/delete_timeline_modal.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/delete_timeline_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/delete_timeline_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/delete_timeline_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/delete_timeline_modal.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/delete_timeline_modal/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/edit_timeline_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/edit_timeline_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/edit_timeline_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/edit_timeline_actions.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/edit_timeline_batch_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/edit_timeline_batch_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/edit_timeline_batch_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/edit_timeline_batch_actions.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/export_timeline.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/export_timeline.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/export_timeline.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/export_timeline.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/export_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/export_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/export_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/export_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/export_timeline/mocks.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/helpers.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/hooks/use_delete_note.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/hooks/use_delete_note.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/hooks/use_delete_note.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/hooks/use_delete_note.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/hooks/use_delete_note.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/hooks/use_delete_note.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/hooks/use_delete_note.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/hooks/use_delete_note.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/note_previews/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/note_previews/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/search_row/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/actions_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/actions_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/actions_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/actions_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/actions_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/actions_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/actions_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/actions_columns.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_columns.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_styles.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_styles.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_styles.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/common_styles.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/extended_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/extended_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/extended_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/extended_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/extended_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/extended_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/extended_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/extended_columns.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/icon_header_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/icon_header_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/icon_header_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/icon_header_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/icon_header_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/icon_header_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/icon_header_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/icon_header_columns.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/mocks.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/timelines_table/mocks.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/types.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/types.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_status.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_timeline_types.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_update_timeline.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_update_timeline.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_update_timeline.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_update_timeline.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_update_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_update_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/open_timeline/use_update_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/open_timeline/use_update_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderer_switch/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderer_switch/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderer_switch/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderer_switch/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderer_switch/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderer_switch/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderer_switch/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderer_switch/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderer_switch/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderer_switch/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderer_switch/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderer_switch/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/constants.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/catalog/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/constants.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/row_renderers_browser.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/row_renderers_browser.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/row_renderers_browser.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/row_renderers_browser.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/row_renderers_browser/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/save_status/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/save_status/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/save_status/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/save_status/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/save_status/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/save_status/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/save_status/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/save_status/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/default_headers.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/default_headers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/default_headers.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/default_headers.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/events_select/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/helpers.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_headers/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_headers/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_id.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_id.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/column_id.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/column_id.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/constants.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/constants.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/control_columns/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/use_stateful_row_renderer.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/use_stateful_row_renderer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/use_stateful_row_renderer.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/events/stateful_row_renderer/use_stateful_row_renderer.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/events/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/events/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/use_stateful_event_focus/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/events/use_stateful_event_focus/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/use_stateful_event_focus/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/events/use_stateful_event_focus/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/args.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/args.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/args.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/args.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/empty_column_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/empty_column_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/empty_column_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/empty_column_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/formatted_field.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/formatted_field.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/formatted_field.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/formatted_field.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/get_column_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/get_column_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/get_column_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/get_column_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/get_row_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/get_row_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/get_row_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/get_row_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/host_working_dir.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/host_working_dir.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/host_working_dir.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/host_working_dir.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/plain_column_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/plain_column_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/plain_column_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/plain_column_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/plain_row_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/plain_row_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/plain_row_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/plain_row_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/process_draggable.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/process_draggable.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/process_draggable.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/process_draggable.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/unknown_column_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/unknown_column_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/unknown_column_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/unknown_column_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/user_host_working_dir.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/user_host_working_dir.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/user_host_working_dir.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/__snapshots__/user_host_working_dir.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/alert_field_badge/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/alert_field_badge/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/alert_field_badge/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/alert_field_badge/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/alert_field_badge/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/alert_field_badge/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/alert_field_badge/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/alert_field_badge/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/alert_field/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/helpers/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/helpers/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/helpers/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/helpers/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/helpers/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/helpers/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/helpers/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/helpers/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/alert_renderer/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/args.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_details.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_details.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_details.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_details.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_file_details.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_file_details.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_file_details.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_file_details.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_row_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_row_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_row_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/generic_row_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/primary_secondary_user_info.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/primary_secondary_user_info.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/primary_secondary_user_info.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/primary_secondary_user_info.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/session_user_host_working_dir.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/session_user_host_working_dir.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/session_user_host_working_dir.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/__snapshots__/session_user_host_working_dir.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_file_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/generic_row_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/primary_secondary_user_info.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/session_user_host_working_dir.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/auditd/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/bytes/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/column_renderer.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/column_renderer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/column_renderer.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/column_renderer.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/combine_renderers/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/combine_renderers/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/combine_renderers/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/combine_renderers/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/combine_renderers/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/combine_renderers/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/combine_renderers/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/combine_renderers/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/constants.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/constants.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/constants.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/constants.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/__snapshots__/threat_match_row.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/__snapshots__/threat_match_row.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/__snapshots__/threat_match_row.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/__snapshots__/threat_match_row.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/helpers.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/indicator_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/indicator_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/indicator_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/indicator_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/match_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/match_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/match_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/match_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_row_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/dns_request_event_details_line.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/dns/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/empty_column_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/endgame_security_event_details_line.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/helpers.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/endgame/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/event_summary_column_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/event_summary_column_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/event_summary_column_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/event_summary_column_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/exit_code_draggable.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_draggable.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/file_hash.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_udt.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_udt.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_udt.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_udt.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_udt.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_udt.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_udt.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/formatted_field_udt.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_column_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_column_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_column_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_column_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_column_renderer.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_column_renderer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_column_renderer.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_column_renderer.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_working_dir.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/index.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/index.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/__snapshots__/netflow_row_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/__snapshots__/netflow_row_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/__snapshots__/netflow_row_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/__snapshots__/netflow_row_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/netflow/netflow_row_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parent_process_draggable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parent_process_draggable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parent_process_draggable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parent_process_draggable.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parent_process_draggable.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parent_process_draggable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parent_process_draggable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parent_process_draggable.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_query_value.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_query_value.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_query_value.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_query_value.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_query_value.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_query_value.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_query_value.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_query_value.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_value.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_value.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_value.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_value.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_value.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_value.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_value.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/parse_value.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_column_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_column_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_column_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_column_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_column_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_column_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_column_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_column_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/plain_row_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_draggable.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/process_hash.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/reason_column_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/registry_event_details_line.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/registry/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/row_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/row_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/row_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/row_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/rule_status.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_details.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_details.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_details.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_details.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_row_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_row_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_row_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_row_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_signature.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_signature.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_signature.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/__snapshots__/suricata_signature.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_links.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_links.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_links.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_links.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_links.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_links.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_links.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_refs.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_refs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_refs.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_refs.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_signature.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/auth_ssh.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/auth_ssh.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/auth_ssh.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/auth_ssh.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_details.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_details.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_details.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_details.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_file_details.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_file_details.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_file_details.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_file_details.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_row_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_row_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_row_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/generic_row_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/package.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/package.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/package.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/__snapshots__/package.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/auth_ssh.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_file_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/package.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/unknown_column_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/unknown_column_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/unknown_column_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/unknown_column_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/unknown_column_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/unknown_column_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/unknown_column_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/unknown_column_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_host_working_dir.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_name.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_name.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_name.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_name.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_name.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_name.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_name.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_name.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_profile_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_profile_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_profile_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/user_profile_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_details.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_details.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_details.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_details.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_row_renderer.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_row_renderer.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_row_renderer.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_row_renderer.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_signature.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_signature.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_signature.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/__snapshots__/zeek_signature.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/selectors/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/selectors/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/selectors/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/selectors/index.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/selectors/index.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/selectors/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/selectors/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/selectors/index.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/unified_timeline_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/unified_timeline_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/unified_timeline_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/unified_timeline_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/unified_timeline_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/unified_timeline_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/body/unified_timeline_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/unified_timeline_body.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/cell_rendering/default_cell_renderer.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/cell_rendering/default_cell_renderer.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/cell_rendering/default_cell_renderer.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/cell_rendering/default_cell_renderer.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/cell_rendering/default_cell_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/cell_rendering/default_cell_renderer.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/cell_rendering/default_cell_renderer.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/cell_rendering/default_cell_renderer.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/cell_rendering/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/cell_rendering/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/cell_rendering/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/cell_rendering/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/empty.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/empty.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/empty.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/empty.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/provider.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/provider.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/provider.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/provider.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/providers.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/providers.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/providers.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/providers.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__tests__/add_data_provider_popover.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/__tests__/add_data_provider_popover.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__tests__/add_data_provider_popover.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/__tests__/add_data_provider_popover.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/add_data_provider_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/add_data_provider_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/add_data_provider_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/add_data_provider_popover.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/data_provider.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/data_provider.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/data_provider.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/data_provider.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/mock/mock_and_providers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/mock/mock_and_providers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/mock/mock_and_providers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/mock/mock_and_providers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/mock/mock_data_providers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/mock/mock_data_providers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/mock/mock_data_providers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/mock/mock_data_providers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_badge.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_actions.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_badge.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_badge.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/provider_item_badge.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/providers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/data_providers/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/date_picker_lock/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/date_picker_lock/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/date_picker_lock/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/date_picker_lock/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/date_picker_lock/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/date_picker_lock/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/date_picker_lock/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/date_picker_lock/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/events.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/events.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/events.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/events.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/footer/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/footer/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/footer/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/footer/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/footer/last_updated.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/last_updated.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/footer/last_updated.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/last_updated.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/footer/last_updated.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/last_updated.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/footer/last_updated.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/last_updated.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/footer/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/footer/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/footer/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/kpi_container.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/kpi_container.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/kpi_container.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/kpi_container.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/kpis.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/kpis.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/kpis.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/kpis.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/kpi/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/kpi/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/pin/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/pin/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/pin/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/pin/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/pin/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/pin/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/pin/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/pin/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/notes_flyout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/notes_flyout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/properties/notes_flyout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/notes_flyout.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/notes_flyout.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/notes_flyout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/properties/notes_flyout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/notes_flyout.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/notes_size.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/notes_size.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/properties/notes_size.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/notes_size.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/properties/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/use_notes_in_flyout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/use_notes_in_flyout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/properties/use_notes_in_flyout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/use_notes_in_flyout.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/use_notes_in_flyout.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/use_notes_in_flyout.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/properties/use_notes_in_flyout.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/properties/use_notes_in_flyout.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/eql/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/eql/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/eql/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/eql/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/eql/selectors.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/eql/selectors.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/eql/selectors.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/eql/selectors.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/query_bar/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/query_bar/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/refetch_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/refetch_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/refetch_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/refetch_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/search_or_filter.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/search_or_filter.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/search_or_filter.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/search_or_filter.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_or_filter/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_super_select/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_super_select/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/search_super_select/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/search_super_select/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/selectable_timeline/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/styles.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/eql/header/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/eql/header/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/eql/header/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/eql/header/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/eql/header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/eql/header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/eql/header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/eql/header/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/eql/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/eql/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/eql/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/eql/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/eql/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/eql/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/eql/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/eql/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/__mocks__/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/__mocks__/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/__mocks__/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/__mocks__/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/mock.data.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/mock.data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/mock.data.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/mock.data.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_histogram_customizations.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_histogram_customizations.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_histogram_customizations.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_histogram_customizations.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_histogram_customizations.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_histogram_customizations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_histogram_customizations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_histogram_customizations.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_search_bar_customizations.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_search_bar_customizations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_search_bar_customizations.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_search_bar_customizations.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_set_discover_customizations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_set_discover_customizations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_set_discover_customizations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/customizations/use_set_discover_customizations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/mocks/esql_tab_content.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/mocks/esql_tab_content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/mocks/esql_tab_content.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/mocks/esql_tab_content.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/mocks/index.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/mocks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/mocks/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/mocks/index.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/styles.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_discover_state.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_discover_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_discover_state.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_discover_state.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_get_stateful_query_bar.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_get_stateful_query_bar.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_get_stateful_query_bar.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_get_stateful_query_bar.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_get_stateful_query_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_get_stateful_query_bar.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_get_stateful_query_bar.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/use_get_stateful_query_bar.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/index.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/index.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/test_utils.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/test_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/test_utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/esql/utils/test_utils.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/graph/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/graph/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/graph/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/graph/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/notes/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/notes/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/notes/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/notes/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/notes/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/notes/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/notes/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/notes/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/notes/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/notes/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/notes/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/notes/selectors.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/pinned/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/pinned/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/pinned/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/pinned/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/pinned/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/pinned/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/pinned/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/pinned/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/header/translations.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.test.tsx new file mode 100644 index 0000000000000..eb13527385739 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.test.tsx @@ -0,0 +1,1327 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ComponentProps, FunctionComponent } from 'react'; +import React, { useEffect } from 'react'; +import QueryTabContent from '.'; +import { defaultRowRenderers } from '../../body/renderers'; +import { TimelineId } from '../../../../../../common/types/timeline'; +import { useTimelineEvents } from '../../../../containers'; +import { useTimelineEventsDetails } from '../../../../containers/details'; +import { useSourcererDataView } from '../../../../../sourcerer/containers'; +import { mockSourcererScope } from '../../../../../sourcerer/containers/mocks'; +import { + createMockStore, + createSecuritySolutionStorageMock, + mockGlobalState, + mockTimelineData, + TestProviders, +} from '../../../../../common/mock'; +import { DefaultCellRenderer } from '../../cell_rendering/default_cell_renderer'; +import { render, screen, waitFor, fireEvent, within, cleanup } from '@testing-library/react'; +import { createStartServicesMock } from '../../../../../common/lib/kibana/kibana_react.mock'; +import type { StartServices } from '../../../../../types'; +import { useKibana } from '../../../../../common/lib/kibana'; +import { useDispatch } from 'react-redux'; +import type { ExperimentalFeatures } from '../../../../../../common'; +import { allowedExperimentalValues } from '../../../../../../common'; +import { useIsExperimentalFeatureEnabled } from '../../../../../common/hooks/use_experimental_features'; +import { + defaultUdtHeaders, + defaultColumnHeaderType, +} from '../../body/column_headers/default_headers'; +import { useUserPrivileges } from '../../../../../common/components/user_privileges'; +import { getEndpointPrivilegesInitialStateMock } from '../../../../../common/components/user_privileges/endpoint/mocks'; +import * as timelineActions from '../../../../store/actions'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { createExpandableFlyoutApiMock } from '../../../../../common/mock/expandable_flyout'; +import { OPEN_FLYOUT_BUTTON_TEST_ID } from '../../../../../notes/components/test_ids'; +import { userEvent } from '@testing-library/user-event'; +import * as notesApi from '../../../../../notes/api/api'; + +jest.mock('../../../../../common/components/user_privileges'); + +jest.mock('../../../../containers', () => ({ + useTimelineEvents: jest.fn(), +})); + +jest.mock('../../../../containers/details'); + +jest.mock('../../../fields_browser', () => ({ + useFieldBrowserOptions: jest.fn(), +})); + +jest.mock('../../../../../sourcerer/containers'); +jest.mock('../../../../../sourcerer/containers/use_signal_helpers', () => ({ + useSignalHelpers: () => ({ signalIndexNeedsInit: false }), +})); + +jest.mock('../../../../../common/lib/kuery'); + +jest.mock('../../../../../common/hooks/use_experimental_features'); + +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: jest.fn(() => ({ + pathname: '', + search: '', + })), +})); + +// These tests can take more than standard timeout of 5s +// that is why we are increasing it. +const SPECIAL_TEST_TIMEOUT = 50000; + +const useIsExperimentalFeatureEnabledMock = jest.fn((feature: keyof ExperimentalFeatures) => { + return allowedExperimentalValues[feature]; +}); + +jest.mock('../../../../../common/lib/kibana'); + +// unified-field-list is reporting multiple analytics events +jest.mock(`@elastic/ebt/client`); + +const mockOpenFlyout = jest.fn(); +const mockCloseFlyout = jest.fn(); +jest.mock('@kbn/expandable-flyout'); + +const TestComponent = (props: Partial>) => { + const testComponentDefaultProps: ComponentProps = { + timelineId: TimelineId.test, + renderCellValue: DefaultCellRenderer, + rowRenderers: defaultRowRenderers, + }; + + const dispatch = useDispatch(); + + useEffect(() => { + // Unified field list can be a culprit for long load times, so we wait for the timeline to be interacted with to load + dispatch(timelineActions.showTimeline({ id: TimelineId.test, show: true })); + + // populating timeline so that it is not blank + dispatch( + timelineActions.applyKqlFilterQuery({ + id: TimelineId.test, + filterQuery: { + kuery: { + kind: 'kuery', + expression: '*', + }, + serializedQuery: '*', + }, + }) + ); + }, [dispatch]); + + return ; +}; + +const customColumnOrder = [ + ...defaultUdtHeaders, + { + columnHeaderType: defaultColumnHeaderType, + id: 'event.severity', + }, +]; + +const mockState = { + ...structuredClone(mockGlobalState), +}; + +mockState.timeline.timelineById[TimelineId.test].columns = customColumnOrder; + +const TestWrapper: FunctionComponent> = ({ children }) => { + return {children}; +}; + +const renderTestComponents = (props?: Partial>) => { + return render(, { + wrapper: TestWrapper, + }); +}; + +const loadPageMock = jest.fn(); + +const useSourcererDataViewMocked = jest.fn().mockReturnValue({ + ...mockSourcererScope, +}); + +const { storage: storageMock } = createSecuritySolutionStorageMock(); + +let useTimelineEventsMock = jest.fn(); + +describe('query tab with unified timeline', () => { + const fetchNotesMock = jest.spyOn(notesApi, 'fetchNotesByDocumentIds'); + beforeAll(() => { + fetchNotesMock.mockImplementation(jest.fn()); + jest.mocked(useExpandableFlyoutApi).mockImplementation(() => ({ + ...createExpandableFlyoutApiMock(), + openFlyout: mockOpenFlyout, + closeFlyout: mockCloseFlyout, + })); + + // https://github.com/atlassian/react-beautiful-dnd/blob/4721a518356f72f1dac45b5fd4ee9d466aa2996b/docs/guides/setup-problem-detection-and-error-recovery.md#disable-logging + Object.defineProperty(window, '__@hello-pangea/dnd-disable-dev-warnings', { + get() { + return true; + }, + }); + }); + const kibanaServiceMock: StartServices = { + ...createStartServicesMock(), + storage: storageMock, + }; + + afterEach(() => { + jest.clearAllMocks(); + storageMock.clear(); + fetchNotesMock.mockClear(); + cleanup(); + localStorage.clear(); + }); + + beforeEach(() => { + useTimelineEventsMock = jest.fn(() => [ + false, + { + events: structuredClone(mockTimelineData.slice(0, 1)), + pageInfo: { + activePage: 0, + totalPages: 3, + }, + refreshedAt: Date.now(), + totalCount: 3, + loadPage: loadPageMock, + }, + ]); + + HTMLElement.prototype.getBoundingClientRect = jest.fn(() => { + return { + width: 1000, + height: 1000, + x: 0, + y: 0, + } as DOMRect; + }); + + (useKibana as jest.Mock).mockImplementation(() => { + return { + services: kibanaServiceMock, + }; + }); + + (useTimelineEvents as jest.Mock).mockImplementation(useTimelineEventsMock); + + (useTimelineEventsDetails as jest.Mock).mockImplementation(() => [false, {}]); + + (useSourcererDataView as jest.Mock).mockImplementation(useSourcererDataViewMocked); + + (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( + useIsExperimentalFeatureEnabledMock + ); + + (useUserPrivileges as jest.Mock).mockReturnValue({ + kibanaSecuritySolutionsPrivileges: { crud: true, read: true }, + endpointPrivileges: getEndpointPrivilegesInitialStateMock(), + detectionEnginePrivileges: { loading: false, error: undefined, result: undefined }, + }); + }); + + describe('render', () => { + it( + 'should render unifiedDataTable in timeline', + async () => { + renderTestComponents(); + await waitFor(() => { + expect(screen.getByTestId('discoverDocTable')).toBeVisible(); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should render unified-field-list in timeline', + async () => { + renderTestComponents(); + await waitFor(() => { + expect(screen.getByTestId('timeline-sidebar')).toBeVisible(); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + it( + 'should show row-renderers correctly by default', + async () => { + renderTestComponents(); + await waitFor(() => { + expect(screen.getByTestId('discoverDocTable')).toBeVisible(); + }); + + expect(screen.getByTestId('timeline-row-renderer-0')).toBeVisible(); + }, + + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should hide row-renderers when disabled', + async () => { + renderTestComponents(); + await waitFor(() => { + expect(screen.getByTestId('discoverDocTable')).toBeVisible(); + }); + + expect(screen.getByTestId('timeline-row-renderer-0')).toBeVisible(); + + fireEvent.click(screen.getByTestId('show-row-renderers-gear')); + expect(screen.getByTestId('row-renderers-modal')).toBeVisible(); + + fireEvent.click(screen.getByTestId('disable-all')); + + expect( + within(screen.getAllByTestId('renderer-checkbox')[0]).getByRole('checkbox') + ).not.toBeChecked(); + + fireEvent.click(screen.getByLabelText('Closes this modal window')); + + expect(screen.queryByTestId('row-renderers-modal')).not.toBeInTheDocument(); + + expect(screen.queryByTestId('timeline-row-renderer-0')).not.toBeInTheDocument(); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + + describe('pagination', () => { + beforeEach(() => { + // pagination tests need more than 1 record so here + // we return 5 records instead of just 1. + useTimelineEventsMock = jest.fn(() => [ + false, + { + events: structuredClone(mockTimelineData.slice(0, 5)), + pageInfo: { + activePage: 0, + totalPages: 5, + }, + refreshedAt: Date.now(), + /* + * `totalCount` could be any number w.r.t this test + * and actually means total hits on elastic search + * and not the fecthed number of records. + * + * This helps in testing `sampleSize` and `loadMore` + */ + totalCount: 50, + loadPage: loadPageMock, + }, + ]); + + (useTimelineEvents as jest.Mock).mockImplementation(useTimelineEventsMock); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it( + 'should paginate correctly', + async () => { + const mockStateWithNoteInTimeline = { + ...mockGlobalState, + timeline: { + ...mockGlobalState.timeline, + timelineById: { + [TimelineId.test]: { + ...mockGlobalState.timeline.timelineById[TimelineId.test], + /* 1 record for each page */ + itemsPerPage: 1, + itemsPerPageOptions: [1, 2, 3, 4, 5], + savedObjectId: 'timeline-1', // match timelineId in mocked notes data + pinnedEventIds: { '1': true }, + }, + }, + }, + }; + + render( + + + + ); + + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + expect(screen.getByTestId('pagination-button-previous')).toBeVisible(); + + expect(screen.getByTestId('tablePaginationPopoverButton')).toHaveTextContent( + 'Rows per page: 1' + ); + + expect(screen.getByTestId('pagination-button-0')).toHaveAttribute('aria-current', 'true'); + expect(screen.getByTestId('pagination-button-4')).toBeVisible(); + expect(screen.queryByTestId('pagination-button-5')).toBeNull(); + + fireEvent.click(screen.getByTestId('pagination-button-4')); + + await waitFor(() => { + expect(screen.getByTestId('pagination-button-4')).toHaveAttribute('aria-current', 'true'); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should load more records according to sample size correctly', + async () => { + const mockStateWithNoteInTimeline = { + ...mockGlobalState, + timeline: { + ...mockGlobalState.timeline, + timelineById: { + [TimelineId.test]: { + ...mockGlobalState.timeline.timelineById[TimelineId.test], + itemsPerPage: 1, + /* + * `sampleSize` is the max number of records that are fetched from elasticsearch + * in one request. If hits > sampleSize, you can fetch more records ( <= sampleSize) + */ + sampleSize: 5, + itemsPerPageOptions: [1, 2, 3, 4, 5], + savedObjectId: 'timeline-1', // match timelineId in mocked notes data + pinnedEventIds: { '1': true }, + }, + }, + }, + }; + + render( + + + + ); + + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + await waitFor(() => { + expect(screen.getByTestId('pagination-button-0')).toHaveAttribute('aria-current', 'true'); + expect(screen.getByTestId('pagination-button-4')).toBeVisible(); + }); + // Go to last page + fireEvent.click(screen.getByTestId('pagination-button-4')); + await waitFor(() => { + expect(screen.getByTestId('dscGridSampleSizeFetchMoreLink')).toBeVisible(); + }); + fireEvent.click(screen.getByTestId('dscGridSampleSizeFetchMoreLink')); + expect(loadPageMock).toHaveBeenNthCalledWith(1, 1); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should load notes for current page only', + async () => { + const mockStateWithNoteInTimeline = { + ...mockGlobalState, + timeline: { + ...mockGlobalState.timeline, + timelineById: { + [TimelineId.test]: { + ...mockGlobalState.timeline.timelineById[TimelineId.test], + /* 1 record for each page */ + itemsPerPage: 1, + pageIndex: 0, + itemsPerPageOptions: [1, 2, 3, 4, 5], + savedObjectId: 'timeline-1', // match timelineId in mocked notes data + pinnedEventIds: { '1': true }, + }, + }, + }, + }; + + render( + + + + ); + + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getByTestId('pagination-button-previous')).toBeVisible(); + + expect(screen.getByTestId('pagination-button-0')).toHaveAttribute('aria-current', 'true'); + expect(fetchNotesMock).toHaveBeenCalledWith(['1']); + + // Page : 2 + + fetchNotesMock.mockClear(); + expect(screen.getByTestId('pagination-button-1')).toBeVisible(); + + fireEvent.click(screen.getByTestId('pagination-button-1')); + + await waitFor(() => { + expect(screen.getByTestId('pagination-button-1')).toHaveAttribute('aria-current', 'true'); + + expect(fetchNotesMock).toHaveBeenNthCalledWith(1, [mockTimelineData[1]._id]); + }); + + // Page : 3 + + fetchNotesMock.mockClear(); + expect(screen.getByTestId('pagination-button-2')).toBeVisible(); + fireEvent.click(screen.getByTestId('pagination-button-2')); + + await waitFor(() => { + expect(screen.getByTestId('pagination-button-2')).toHaveAttribute('aria-current', 'true'); + + expect(fetchNotesMock).toHaveBeenNthCalledWith(1, [mockTimelineData[2]._id]); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should load notes for correct page size', + async () => { + const mockStateWithNoteInTimeline = { + ...mockGlobalState, + timeline: { + ...mockGlobalState.timeline, + timelineById: { + [TimelineId.test]: { + ...mockGlobalState.timeline.timelineById[TimelineId.test], + /* 1 record for each page */ + itemsPerPage: 1, + pageIndex: 0, + itemsPerPageOptions: [1, 2, 3, 4, 5], + savedObjectId: 'timeline-1', // match timelineId in mocked notes data + pinnedEventIds: { '1': true }, + }, + }, + }, + }; + + render( + + + + ); + + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getByTestId('pagination-button-previous')).toBeVisible(); + + expect(screen.getByTestId('pagination-button-0')).toHaveAttribute('aria-current', 'true'); + expect(screen.getByTestId('tablePaginationPopoverButton')).toHaveTextContent( + 'Rows per page: 1' + ); + fireEvent.click(screen.getByTestId('tablePaginationPopoverButton')); + + await waitFor(() => { + expect(screen.getByTestId('tablePagination-2-rows')).toBeVisible(); + }); + + fetchNotesMock.mockClear(); + fireEvent.click(screen.getByTestId('tablePagination-2-rows')); + + await waitFor(() => { + expect(fetchNotesMock).toHaveBeenNthCalledWith(1, [ + mockTimelineData[0]._id, + mockTimelineData[1]._id, + ]); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + + describe('columns', () => { + it( + 'should move column left/right correctly ', + async () => { + const { container } = renderTestComponents(); + + await waitFor(() => { + expect(screen.getByTestId('discoverDocTable')).toBeVisible(); + }); + + const messageColumnIndex = + customColumnOrder.findIndex((header) => header.id === 'message') + 3; + // 3 is the offset for additional leading columns on left + + expect(container.querySelector('[data-gridcell-column-id="message"]')).toHaveAttribute( + 'data-gridcell-column-index', + String(messageColumnIndex) + ); + + expect(container.querySelector('[data-gridcell-column-id="message"]')).toBeInTheDocument(); + + fireEvent.click(screen.getByTestId('dataGridHeaderCellActionButton-message')); + + await waitFor(() => { + expect(screen.getByTitle('Move left')).toBeEnabled(); + }); + + fireEvent.click(screen.getByTitle('Move left')); + + await waitFor(() => { + expect(container.querySelector('[data-gridcell-column-id="message"]')).toHaveAttribute( + 'data-gridcell-column-index', + String(messageColumnIndex - 1) + ); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should remove column', + async () => { + const { container } = renderTestComponents(); + + await waitFor(() => { + expect(screen.getByTestId('discoverDocTable')).toBeVisible(); + }); + + expect(container.querySelector('[data-gridcell-column-id="message"]')).toBeInTheDocument(); + + fireEvent.click(screen.getByTestId('dataGridHeaderCellActionButton-message')); + + await waitFor(() => { + expect(screen.getByTitle('Remove column')).toBeVisible(); + }); + + fireEvent.click(screen.getByTitle('Remove column')); + + await waitFor(() => { + expect( + container.querySelector('[data-gridcell-column-id="message"]') + ).not.toBeInTheDocument(); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should sort date column', + async () => { + const { container } = renderTestComponents(); + await waitFor(() => { + expect(screen.getByTestId('discoverDocTable')).toBeVisible(); + }); + + expect( + container.querySelector('[data-gridcell-column-id="@timestamp"]') + ).toBeInTheDocument(); + + fireEvent.click(screen.getByTestId('dataGridHeaderCellActionButton-@timestamp')); + + await waitFor(() => { + expect(screen.getByTitle('Sort Old-New')).toBeVisible(); + }); + expect(screen.getByTitle('Unsort New-Old')).toBeVisible(); + + useTimelineEventsMock.mockClear(); + + fireEvent.click(screen.getByTitle('Sort Old-New')); + + await waitFor(() => { + expect(useTimelineEventsMock).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + sort: [ + { + direction: 'asc', + esTypes: ['date'], + field: '@timestamp', + type: 'date', + }, + ], + }) + ); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should sort string column correctly', + async () => { + const { container } = renderTestComponents(); + await waitFor(() => { + expect(screen.getByTestId('discoverDocTable')).toBeVisible(); + }); + + expect( + container.querySelector('[data-gridcell-column-id="host.name"]') + ).toBeInTheDocument(); + + fireEvent.click(screen.getByTestId('dataGridHeaderCellActionButton-host.name')); + + await waitFor(() => { + expect(screen.getByTestId('dataGridHeaderCellActionGroup-host.name')).toBeVisible(); + }); + + expect(screen.getByTitle('Sort A-Z')).toBeVisible(); + expect(screen.getByTitle('Sort Z-A')).toBeVisible(); + + useTimelineEventsMock.mockClear(); + + fireEvent.click(screen.getByTitle('Sort A-Z')); + + await waitFor(() => { + expect(useTimelineEventsMock).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + sort: [ + { + direction: 'desc', + esTypes: ['date'], + field: '@timestamp', + type: 'date', + }, + { + direction: 'asc', + esTypes: [], + field: 'host.name', + type: 'string', + }, + ], + }) + ); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should sort number column', + async () => { + const field = { + name: 'event.severity', + type: 'number', + }; + + const { container } = renderTestComponents(); + await waitFor(() => { + expect(screen.getByTestId('discoverDocTable')).toBeVisible(); + }); + + expect( + container.querySelector(`[data-gridcell-column-id="${field.name}"]`) + ).toBeInTheDocument(); + + fireEvent.click(screen.getByTestId(`dataGridHeaderCellActionButton-${field.name}`)); + + await waitFor(() => { + expect(screen.getByTestId(`dataGridHeaderCellActionGroup-${field.name}`)).toBeVisible(); + }); + + expect(screen.getByTitle('Sort Low-High')).toBeVisible(); + expect(screen.getByTitle('Sort High-Low')).toBeVisible(); + + useTimelineEventsMock.mockClear(); + + fireEvent.click(screen.getByTitle('Sort Low-High')); + + await waitFor(() => { + expect(useTimelineEventsMock).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + sort: [ + { + direction: 'desc', + esTypes: ['date'], + field: '@timestamp', + type: 'date', + }, + { + direction: 'asc', + esTypes: [], + field: field.name, + type: field.type, + }, + ], + }) + ); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + + describe('left controls', () => { + it( + 'should clear all sorting', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getByTestId('dataGridColumnSortingButton')).toBeVisible(); + expect( + within(screen.getByTestId('dataGridColumnSortingButton')).getByRole('marquee') + ).toHaveTextContent('1'); + + fireEvent.click(screen.getByTestId('dataGridColumnSortingButton')); + + // // timestamp sorting indicators + expect( + await screen.findByTestId('euiDataGridColumnSorting-sortColumn-@timestamp') + ).toBeInTheDocument(); + + expect(screen.getByTestId('dataGridHeaderCellSortingIcon-@timestamp')).toBeInTheDocument(); + + fireEvent.click(screen.getByTestId('dataGridColumnSortingClearButton')); + + await waitFor(() => { + expect(screen.queryByTestId('dataGridHeaderCellSortingIcon-@timestamp')).toBeNull(); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should be able to sort by multiple columns', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getByTestId('dataGridColumnSortingButton')).toBeVisible(); + expect( + within(screen.getByTestId('dataGridColumnSortingButton')).getByRole('marquee') + ).toHaveTextContent('1'); + + fireEvent.click(screen.getByTestId('dataGridColumnSortingButton')); + + // // timestamp sorting indicators + expect( + await screen.findByTestId('euiDataGridColumnSorting-sortColumn-@timestamp') + ).toBeInTheDocument(); + + expect(screen.getByTestId('dataGridHeaderCellSortingIcon-@timestamp')).toBeInTheDocument(); + + // add more columns to sorting + fireEvent.click(screen.getByText(/Pick fields to sort by/)); + + await waitFor(() => { + expect( + screen.getByTestId('dataGridColumnSortingPopoverColumnSelection-event.severity') + ).toBeInTheDocument(); + }); + + fireEvent.click( + screen.getByTestId('dataGridColumnSortingPopoverColumnSelection-event.severity') + ); + + // check new columns for sorting validity + await waitFor(() => { + expect( + screen.getByTestId('dataGridHeaderCellSortingIcon-event.severity') + ).toBeInTheDocument(); + }); + expect( + screen.getByTestId('euiDataGridColumnSorting-sortColumn-event.severity') + ).toBeInTheDocument(); + + expect(screen.getByTestId('dataGridHeaderCellSortingIcon-@timestamp')).toBeInTheDocument(); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + + describe('unified fields list', () => { + it( + 'should remove the column when clicked on X sign', + async () => { + const field = { + name: 'event.severity', + }; + + renderTestComponents(); + expect(await screen.findByTestId('timeline-sidebar')).toBeVisible(); + + await waitFor(() => { + expect(screen.getByTestId('fieldListGroupedSelectedFields-count')).toHaveTextContent( + String(customColumnOrder.length) + ); + }); + + // column exists in the table + expect(screen.getByTestId(`dataGridHeaderCell-${field.name}`)).toBeVisible(); + + fireEvent.click(screen.getAllByTestId(`fieldToggle-${field.name}`)[0]); + + // column not longer exists in the table + await waitFor(() => { + expect(screen.getByTestId('fieldListGroupedSelectedFields-count')).toHaveTextContent( + String(customColumnOrder.length - 1) + ); + }); + expect(screen.queryAllByTestId(`dataGridHeaderCell-${field.name}`)).toHaveLength(0); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should add the column when clicked on ⊕ sign', + async () => { + const field = { + name: 'agent.id', + }; + + renderTestComponents(); + expect(await screen.findByTestId('timeline-sidebar')).toBeVisible(); + + await waitFor(() => { + expect(screen.getByTestId('fieldListGroupedSelectedFields-count')).toHaveTextContent( + String(customColumnOrder.length) + ); + }); + + expect(screen.queryAllByTestId(`dataGridHeaderCell-${field.name}`)).toHaveLength(0); + + // column exists in the table + const availableFields = screen.getByTestId('fieldListGroupedAvailableFields'); + + fireEvent.click(within(availableFields).getByTestId(`fieldToggle-${field.name}`)); + + await waitFor(() => { + expect(screen.getByTestId('fieldListGroupedSelectedFields-count')).toHaveTextContent( + String(customColumnOrder.length + 1) + ); + }); + expect(screen.queryAllByTestId(`dataGridHeaderCell-${field.name}`)).toHaveLength(1); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should should show callout when field search does not matches any field', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('timeline-sidebar')).toBeVisible(); + + await waitFor(() => { + expect(screen.getByTestId('fieldListGroupedAvailableFields-count')).toHaveTextContent( + '37' + ); + }); + + fireEvent.change(screen.getByTestId('fieldListFiltersFieldSearch'), { + target: { value: 'fake_field' }, + }); + + await waitFor(() => { + expect( + screen.getByTestId('fieldListGroupedAvailableFieldsNoFieldsCallout-noFieldsMatch') + ).toBeVisible(); + }); + + expect(screen.getByTestId('fieldListGroupedAvailableFields-count')).toHaveTextContent('0'); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should toggle side bar correctly', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('timeline-sidebar')).toBeVisible(); + + expect(screen.getByTestId('fieldListGroupedFieldGroups')).toBeVisible(); + + fireEvent.click(screen.getByTitle('Hide sidebar')); + + await waitFor(() => { + expect(screen.queryByTestId('fieldListGroupedFieldGroups')).not.toBeInTheDocument(); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + + describe('Leading actions - expand event', () => { + it( + 'should expand and collapse event correctly', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getByTestId('docTableExpandToggleColumn').firstChild).toHaveAttribute( + 'data-euiicon-type', + 'expand' + ); + + // Open Flyout + fireEvent.click(screen.getByTestId('docTableExpandToggleColumn')); + + await waitFor(() => { + expect(mockOpenFlyout).toHaveBeenNthCalledWith(1, { + right: { + id: 'document-details-right', + params: { + id: '1', + indexName: '', + scopeId: TimelineId.test, + }, + }, + }); + }); + + expect(screen.getByTestId('docTableExpandToggleColumn').firstChild).toHaveAttribute( + 'data-euiicon-type', + 'minimize' + ); + + // Close Flyout + fireEvent.click(screen.getByTestId('docTableExpandToggleColumn')); + + await waitFor(() => { + expect(mockCloseFlyout).toHaveBeenNthCalledWith(1); + expect(screen.getByTestId('docTableExpandToggleColumn').firstChild).toHaveAttribute( + 'data-euiicon-type', + 'expand' + ); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + + describe('Leading actions - notes', () => { + describe('securitySolutionNotesDisabled = false', () => { + beforeEach(() => { + (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( + jest.fn((feature: keyof ExperimentalFeatures) => { + if (feature === 'securitySolutionNotesDisabled') { + return false; + } + return allowedExperimentalValues[feature]; + }) + ); + }); + + // Flaky: https://github.com/elastic/kibana/issues/189794 + it.skip( + 'should have the notification dot & correct tooltip', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getAllByTestId('timeline-notes-button-small')).toHaveLength(1); + expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); + + expect(screen.getByTestId('timeline-notes-notification-dot')).toBeVisible(); + + userEvent.hover(screen.getByTestId('timeline-notes-button-small')); + + await waitFor(() => { + expect(screen.getByTestId('timeline-notes-tool-tip')).toBeInTheDocument(); + expect(screen.getByTestId('timeline-notes-tool-tip')).toHaveTextContent( + '1 Note available. Click to view it & add more.' + ); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + it( + 'should be able to add notes through expandable flyout', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + await waitFor(() => { + expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); + }); + + fireEvent.click(screen.getByTestId('timeline-notes-button-small')); + + await waitFor(() => { + expect(mockOpenFlyout).toHaveBeenCalled(); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + + describe('securitySolutionNotesDisabled = true', () => { + beforeEach(() => { + (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( + jest.fn((feature: keyof ExperimentalFeatures) => { + if (feature === 'securitySolutionNotesDisabled') { + return true; + } + return allowedExperimentalValues[feature]; + }) + ); + }); + + // Flaky: https://github.com/elastic/kibana/issues/189794 + it.skip( + 'should have the notification dot & correct tooltip', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getAllByTestId('timeline-notes-button-small')).toHaveLength(1); + expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); + + expect(screen.getByTestId('timeline-notes-notification-dot')).toBeVisible(); + + fireEvent.mouseOver(screen.getByTestId('timeline-notes-button-small')); + + await waitFor(() => { + expect(screen.getByTestId('timeline-notes-tool-tip')).toBeVisible(); + expect(screen.getByTestId('timeline-notes-tool-tip')).toHaveTextContent( + '1 Note available. Click to view it & add more.' + ); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + it( + 'should be able to add notes using EuiFlyout', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + await waitFor(() => { + expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); + }); + + fireEvent.click(screen.getByTestId('timeline-notes-button-small')); + + await waitFor(() => { + expect(screen.getByTestId('add-note-container')).toBeVisible(); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should cancel adding notes', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + await waitFor(() => { + expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); + }); + + fireEvent.click(screen.getByTestId('timeline-notes-button-small')); + + await waitFor(() => { + expect(screen.getByTestId('add-note-container')).toBeVisible(); + }); + + expect(screen.getByTestId('cancel')).not.toBeDisabled(); + + fireEvent.click(screen.getByTestId('cancel')); + + await waitFor(() => { + expect(screen.queryByTestId('add-note-container')).not.toBeInTheDocument(); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should be able to delete notes', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + await waitFor(() => { + expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); + }); + + fireEvent.click(screen.getByTestId('timeline-notes-button-small')); + + await waitFor(() => { + expect(screen.getByTestId('delete-note')).toBeVisible(); + }); + + const noteDeleteSpy = jest.spyOn(timelineActions, 'setConfirmingNoteId'); + + fireEvent.click(screen.getByTestId('delete-note')); + + await waitFor(() => { + expect(noteDeleteSpy).toHaveBeenCalled(); + expect(noteDeleteSpy).toHaveBeenCalledWith({ + confirmingNoteId: '1', + id: TimelineId.test, + }); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should not show toggle event details action', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + await waitFor(() => { + expect(screen.getByTestId('timeline-notes-button-small')).not.toBeDisabled(); + }); + + fireEvent.click(screen.getByTestId('timeline-notes-button-small')); + + await waitFor(() => { + expect(screen.queryByTestId(OPEN_FLYOUT_BUTTON_TEST_ID)).not.toBeInTheDocument(); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + }); + + describe('Leading actions - pin', () => { + describe('securitySolutionNotesDisabled = false', () => { + beforeEach(() => { + (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( + jest.fn((feature: keyof ExperimentalFeatures) => { + if (feature === 'securitySolutionNotesDisabled') { + return false; + } + return allowedExperimentalValues[feature]; + }) + ); + }); + it( + 'should disable pinning when event has notes attached in timeline', + async () => { + const mockStateWithNoteInTimeline = { + ...mockGlobalState, + timeline: { + ...mockGlobalState.timeline, + timelineById: { + [TimelineId.test]: { + ...mockGlobalState.timeline.timelineById[TimelineId.test], + savedObjectId: 'timeline-1', // match timelineId in mocked notes data + pinnedEventIds: { '1': true }, + }, + }, + }, + }; + + render( + + + + ); + + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getAllByTestId('pin')).toHaveLength(1); + // disabled because it is already pinned + expect(screen.getByTestId('pin')).toBeDisabled(); + + fireEvent.mouseOver(screen.getByTestId('pin')); + + await waitFor(() => { + expect(screen.getByTestId('timeline-action-pin-tool-tip')).toBeVisible(); + expect(screen.getByTestId('timeline-action-pin-tool-tip')).toHaveTextContent( + 'This event cannot be unpinned because it has notes in Timeline' + ); + /* + * Above event is alert and not an event but `getEventType` in + * x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx + * returns it has event and not an alert even though, it has event.kind as signal. + * Need to see if it is okay + * + * */ + }); + }, + SPECIAL_TEST_TIMEOUT + ); + + it( + 'should allow pinning when event has notes but notes are not attached in current timeline', + async () => { + renderTestComponents(); + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getAllByTestId('pin')).toHaveLength(1); + expect(screen.getByTestId('pin')).not.toBeDisabled(); + + fireEvent.mouseOver(screen.getByTestId('pin')); + await waitFor(() => { + expect(screen.getByTestId('timeline-action-pin-tool-tip')).toBeVisible(); + expect(screen.getByTestId('timeline-action-pin-tool-tip')).toHaveTextContent( + 'Pin event' + ); + }); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + + describe('securitySolutionNotesDisabled = true', () => { + beforeEach(() => { + (useIsExperimentalFeatureEnabled as jest.Mock).mockImplementation( + jest.fn((feature: keyof ExperimentalFeatures) => { + if (feature === 'securitySolutionNotesDisabled') { + return true; + } + return allowedExperimentalValues[feature]; + }) + ); + }); + + it( + 'should have the pin button with correct tooltip', + async () => { + renderTestComponents(); + + expect(await screen.findByTestId('discoverDocTable')).toBeVisible(); + + expect(screen.getAllByTestId('pin')).toHaveLength(1); + // disabled because it is already pinned + expect(screen.getByTestId('pin')).toBeDisabled(); + + fireEvent.mouseOver(screen.getByTestId('pin')); + + await waitFor(() => { + expect(screen.getByTestId('timeline-action-pin-tool-tip')).toBeVisible(); + expect(screen.getByTestId('timeline-action-pin-tool-tip')).toHaveTextContent( + 'This event cannot be unpinned because it has notes' + ); + /* + * Above event is alert and not an event but `getEventType` in + * x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/helpers.tsx + * returns it has event and not an alert even though, it has event.kind as signal. + * Need to see if it is okay + * + * */ + }); + }, + SPECIAL_TEST_TIMEOUT + ); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/selectors.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/session/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/session/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/session/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/session/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/session/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/session/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/session/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/session/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/session/use_session_view.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/session/use_session_view.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/session/use_session_view.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/session/use_session_view.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/session/use_session_view.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/session/use_session_view.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/session/use_session_view.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/session/use_session_view.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/__snapshots__/use_timeline_columns.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/__snapshots__/use_timeline_columns.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/__snapshots__/use_timeline_columns.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/__snapshots__/use_timeline_columns.test.ts.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/__snapshots__/use_timeline_control_columns.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/__snapshots__/use_timeline_control_columns.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/__snapshots__/use_timeline_control_columns.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/__snapshots__/use_timeline_control_columns.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/layout.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/layout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/layout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/layout.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/types.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/types.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_columns.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_columns.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_columns.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_columns.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_columns.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_control_columns.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_control_columns.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_control_columns.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_control_columns.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_control_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_control_columns.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_control_columns.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/use_timeline_control_columns.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/shared/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/shared/utils.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/tabs/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/types.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/types.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/__snapshots__/custom_timeline_data_grid_body.test.tsx.snap b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/__snapshots__/custom_timeline_data_grid_body.test.tsx.snap similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/__snapshots__/custom_timeline_data_grid_body.test.tsx.snap rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/__snapshots__/custom_timeline_data_grid_body.test.tsx.snap diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/control_column_cell_render.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/control_column_cell_render.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/control_column_cell_render.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/control_column_cell_render.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/custom_timeline_data_grid_body.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/custom_timeline_data_grid_body.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/custom_timeline_data_grid_body.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/custom_timeline_data_grid_body.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/custom_timeline_data_grid_body.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/custom_timeline_data_grid_body.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/custom_timeline_data_grid_body.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/custom_timeline_data_grid_body.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/get_event_type_row_classname.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/get_event_type_row_classname.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/get_event_type_row_classname.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/get_event_type_row_classname.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/get_event_type_row_classname.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/get_event_type_row_classname.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/get_event_type_row_classname.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/get_event_type_row_classname.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/timeline_event_detail_row.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/timeline_event_detail_row.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/timeline_event_detail_row.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/timeline_event_detail_row.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/timeline_event_detail_row.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/timeline_event_detail_row.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/timeline_event_detail_row.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/timeline_event_detail_row.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/toolbar_additional_controls.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/toolbar_additional_controls.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/toolbar_additional_controls.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/toolbar_additional_controls.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/use_timeline_unified_data_table_context.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/use_timeline_unified_data_table_context.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/use_timeline_unified_data_table_context.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/data_table/use_timeline_unified_data_table_context.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/get_fields_list_creation_options.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/get_fields_list_creation_options.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/get_fields_list_creation_options.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/get_fields_list_creation_options.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/resizable_layout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/resizable_layout.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/resizable_layout.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/resizable_layout.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/resizable_layout.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/resizable_layout.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/resizable_layout.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/resizable_layout.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/styles.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/styles.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/styles.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/styles.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/utils.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/components/timeline/unified_components/utils.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/unified_components/utils.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/active_timeline_context.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/active_timeline_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/active_timeline_context.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/active_timeline_context.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/all/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/all/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/all/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/all/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/containers/api.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/api.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/api.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/api.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/api.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/api.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/details/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/details/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/details/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/details/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/containers/details/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/details/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/details/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/details/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/helpers.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/containers/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/containers/kpis/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/kpis/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/kpis/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/kpis/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/containers/kpis/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/kpis/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/kpis/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/kpis/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/local_storage/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/local_storage/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/index.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/local_storage/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/local_storage/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/containers/local_storage/migrate_alert_page_contorls.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/migrate_alert_page_contorls.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/local_storage/migrate_alert_page_contorls.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/migrate_alert_page_contorls.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/local_storage/migrate_alert_page_controls.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/migrate_alert_page_controls.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/local_storage/migrate_alert_page_controls.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/migrate_alert_page_controls.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/local_storage/migrates_risk_level_title.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/migrates_risk_level_title.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/local_storage/migrates_risk_level_title.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/migrates_risk_level_title.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/containers/local_storage/migrates_risk_level_title.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/migrates_risk_level_title.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/local_storage/migrates_risk_level_title.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/migrates_risk_level_title.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/containers/local_storage/test.data.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/test.data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/local_storage/test.data.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/test.data.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/local_storage/types.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/local_storage/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/local_storage/types.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/notes/api.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/notes/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/notes/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/notes/api.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/pinned_event/api.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/pinned_event/api.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/pinned_event/api.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/pinned_event/api.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.ts diff --git a/x-pack/plugins/security_solution/public/timelines/hooks/use_create_timeline.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/hooks/use_create_timeline.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/hooks/use_create_timeline.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/hooks/use_create_timeline.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/hooks/use_create_timeline.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/hooks/use_create_timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/hooks/use_create_timeline.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/hooks/use_create_timeline.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/timelines/jest.config.js b/x-pack/solutions/security/plugins/security_solution/public/timelines/jest.config.js new file mode 100644 index 0000000000000..51ce8fb028b76 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/public/timelines/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/public/timelines'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/public/timelines', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/public/timelines/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../../server/__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/public/timelines/links.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/links.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/links.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/links.ts diff --git a/x-pack/plugins/security_solution/public/timelines/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/pages/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/pages/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/pages/index.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/pages/timelines_page.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/pages/timelines_page.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/pages/timelines_page.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/pages/timelines_page.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/pages/timelines_page.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/pages/timelines_page.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/pages/timelines_page.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/pages/timelines_page.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/pages/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/pages/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/pages/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/pages/translations.ts diff --git a/x-pack/plugins/security_solution/public/timelines/routes.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/routes.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/routes.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/routes.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/store/actions.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/actions.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/actions.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/defaults.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/defaults.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/defaults.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/defaults.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/helpers.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/index.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/index.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/index.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/create_timeline_middlewares.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/create_timeline_middlewares.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/create_timeline_middlewares.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/create_timeline_middlewares.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/helpers.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/helpers.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_changed.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_changed.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_changed.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_changed.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_changed.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_changed.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_changed.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_changed.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_favorite.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_favorite.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_favorite.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_favorite.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_favorite.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_favorite.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_favorite.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_favorite.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_note.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_note.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_note.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_note.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_note.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_note.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_note.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_note.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_pinned_event.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_pinned_event.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_pinned_event.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_pinned_event.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_pinned_event.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_pinned_event.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_pinned_event.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_pinned_event.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_save.test.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_save.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_save.test.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_save.test.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_save.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_save.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/middlewares/timeline_save.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/middlewares/timeline_save.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/model.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/model.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/model.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/reducer.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/reducer.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/reducer.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/reducer.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/selectors.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/selectors.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/selectors.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/selectors.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/types.ts b/x-pack/solutions/security/plugins/security_solution/public/timelines/store/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/store/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/timelines/store/types.ts diff --git a/x-pack/plugins/security_solution/public/timelines/wrapper/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/wrapper/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/wrapper/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/wrapper/index.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/wrapper/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/wrapper/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/timelines/wrapper/index.tsx rename to x-pack/solutions/security/plugins/security_solution/public/timelines/wrapper/index.tsx diff --git a/x-pack/plugins/security_solution/public/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/translations.ts diff --git a/x-pack/plugins/security_solution/public/types.ts b/x-pack/solutions/security/plugins/security_solution/public/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/types.ts diff --git a/x-pack/plugins/security_solution/public/use_readonly_header.ts b/x-pack/solutions/security/plugins/security_solution/public/use_readonly_header.ts similarity index 100% rename from x-pack/plugins/security_solution/public/use_readonly_header.ts rename to x-pack/solutions/security/plugins/security_solution/public/use_readonly_header.ts diff --git a/x-pack/plugins/security_solution/public/value_list/components/add_list_item_popover.tsx b/x-pack/solutions/security/plugins/security_solution/public/value_list/components/add_list_item_popover.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/components/add_list_item_popover.tsx rename to x-pack/solutions/security/plugins/security_solution/public/value_list/components/add_list_item_popover.tsx diff --git a/x-pack/plugins/security_solution/public/value_list/components/delete_list_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/value_list/components/delete_list_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/components/delete_list_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/value_list/components/delete_list_item.tsx diff --git a/x-pack/plugins/security_solution/public/value_list/components/info.tsx b/x-pack/solutions/security/plugins/security_solution/public/value_list/components/info.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/components/info.tsx rename to x-pack/solutions/security/plugins/security_solution/public/value_list/components/info.tsx diff --git a/x-pack/plugins/security_solution/public/value_list/components/inline_edit_list_item_value.tsx b/x-pack/solutions/security/plugins/security_solution/public/value_list/components/inline_edit_list_item_value.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/components/inline_edit_list_item_value.tsx rename to x-pack/solutions/security/plugins/security_solution/public/value_list/components/inline_edit_list_item_value.tsx diff --git a/x-pack/plugins/security_solution/public/value_list/components/list_item_table.tsx b/x-pack/solutions/security/plugins/security_solution/public/value_list/components/list_item_table.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/components/list_item_table.tsx rename to x-pack/solutions/security/plugins/security_solution/public/value_list/components/list_item_table.tsx diff --git a/x-pack/plugins/security_solution/public/value_list/components/show_value_list_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/value_list/components/show_value_list_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/components/show_value_list_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/value_list/components/show_value_list_modal.tsx diff --git a/x-pack/plugins/security_solution/public/value_list/components/upload_list_item.tsx b/x-pack/solutions/security/plugins/security_solution/public/value_list/components/upload_list_item.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/components/upload_list_item.tsx rename to x-pack/solutions/security/plugins/security_solution/public/value_list/components/upload_list_item.tsx diff --git a/x-pack/plugins/security_solution/public/value_list/components/value_list_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/value_list/components/value_list_modal.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/components/value_list_modal.tsx rename to x-pack/solutions/security/plugins/security_solution/public/value_list/components/value_list_modal.tsx diff --git a/x-pack/plugins/security_solution/public/value_list/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/value_list/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/translations.ts rename to x-pack/solutions/security/plugins/security_solution/public/value_list/translations.ts diff --git a/x-pack/plugins/security_solution/public/value_list/types.ts b/x-pack/solutions/security/plugins/security_solution/public/value_list/types.ts similarity index 100% rename from x-pack/plugins/security_solution/public/value_list/types.ts rename to x-pack/solutions/security/plugins/security_solution/public/value_list/types.ts diff --git a/x-pack/plugins/security_solution/scripts/beat_docs/build.js b/x-pack/solutions/security/plugins/security_solution/scripts/beat_docs/build.js similarity index 99% rename from x-pack/plugins/security_solution/scripts/beat_docs/build.js rename to x-pack/solutions/security/plugins/security_solution/scripts/beat_docs/build.js index db766e6f738a6..f3a1c7c224b6e 100644 --- a/x-pack/plugins/security_solution/scripts/beat_docs/build.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/beat_docs/build.js @@ -5,7 +5,7 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); // eslint-disable-next-line import/no-extraneous-dependencies const extract = require('extract-zip'); diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/README.md b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/README.md new file mode 100644 index 0000000000000..253b0b296e7e1 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/README.md @@ -0,0 +1,18 @@ +# Resolver Generator Script + +This script makes it easy to create the endpoint metadata, alert, and event documents needed to test Resolver in Kibana. +The default behavior is to create 1 endpoint with 1 alert and a moderate number of events (random, typically on the order of 20). +A seed value can be provided as a string for the random number generator for repeatable behavior, useful for demos etc. +Use the `-d` option if you want to delete and remake the indices, otherwise it will add documents to existing indices. + +Example command sequence to get ES and kibana running with sample data after installing ts-node: + +`yarn es snapshot` -> starts ES + +`npx yarn start --no-base-path` -> starts kibana. Note: you may need other configurations steps to start the security solution with endpoint support. + +`cd x-pack/solutions/security/plugins/security_solution/scripts/endpoint` + +`yarn test:generate` -> run the resolver_generator.ts script + +To see Resolver generator CLI options, run `yarn test:generate --help`. diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_downloader.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader.js similarity index 85% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_downloader.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader.js index 050be8e0cf071..37512b9ddab26 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/agent_downloader.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./agent_downloader_cli').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_downloader_cli/agent_downloader.test.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader_cli/agent_downloader.test.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_downloader_cli/agent_downloader.test.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader_cli/agent_downloader.test.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_downloader_cli/agent_downloader.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader_cli/agent_downloader.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_downloader_cli/agent_downloader.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader_cli/agent_downloader.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_downloader_cli/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader_cli/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_downloader_cli/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_downloader_cli/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/agent_emulator.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/agent_emulator.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/agent_emulator.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/agent_emulator.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/constants.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/constants.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/constants.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/actions_responder.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/actions_responder.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/actions_responder.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/actions_responder.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/components/run_service_status_formatter.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/components/run_service_status_formatter.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/components/run_service_status_formatter.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/components/run_service_status_formatter.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/load_endpoints.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/load_endpoints.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/load_endpoints.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/load_endpoints.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/main.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/main.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/main.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/main.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/policy_responder.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/policy_responder.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/screens/policy_responder.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/screens/policy_responder.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/action_responder.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/action_responder.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/action_responder.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/action_responder.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/agent_keep_alive.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/agent_keep_alive.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/agent_keep_alive.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/agent_keep_alive.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/emulator_run_context.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/emulator_run_context.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/emulator_run_context.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/emulator_run_context.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_loader.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_loader.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_loader.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_loader.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_response_actions.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_response_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_response_actions.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/services/endpoint_response_actions.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/types.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/types.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_emulator/types.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_emulator/types.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/agent_policy_generator/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_policy_generator/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/agent_policy_generator/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/agent_policy_generator/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/README.md b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/README.md new file mode 100644 index 0000000000000..e104b4c7c07c7 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/README.md @@ -0,0 +1,67 @@ +# API Emulator + +API Emulator is a framework wrapped around [Hapi](https://hapi.dev/) that enables developer to quickly create API interfaces for development and testing purposes. Emulator plugins (a wrapper around [Hapi plugins](https://hapi.dev/api/?v=21.3.3#plugins)) is the mechanism used to create an given set of APIs for emulation, and these are then added to the server framework which makes them available via the server's routes. + +The following script can be used to start the External EDR Server Emulator from the command line: + +```shell +node x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_external_edr_server_emulator.js +``` + +Use the `--help` option to view what arguments can be used + +For usages other than the command line, see the Development section below. + + + +## Development + +### Adding an new Plugin + +Plugins are the mechanism for adding API emulators into this framework. Each plugin is defined via an object that includes at a minimum the `name` and a `register()` callback. This callback for registering the plugin will be provided with an interface that allows the plugin to interact with the HTTP server and provide access to "core" services available at the server level for use by all plugins. + +Example: A method that returns the definition for a plugin + +```typescript + +export const getFooPluginRegistration = () => { + return { + name: 'foo', // [1] + register(server) { + // register routes + server.router.route({ + path: '/api/get', // [2] + method: 'GET', + handler: async (req, h) => { + return 'alive!'; + } + }) + } + } +} +``` + +In the above example: + +1. a plugin with the name `foo` [1] will be registered. The name of the plugin will also be the default `prefix` to all API routes (an optional attributed named `prefix` is also available if wanting to use a different value for the namespacing the routes). +2. the `register()` callback will be given a `server` argument that provides access to server level services like the HTTP `router` +3. a new route is registered [2], which will be mounted at `/foo/api/get` - note the use of the plugin name as the route prefix + + +#### Plugin HTTP routes + +HTTP route handlers work very similar to the route handlers in Kibana today. You are given a `Request` and a Response Factory by the Hapi framework - see the [HAPI docs on Lifecycle Methods](https://hapi.dev/api/?v=21.3.3#lifecycle-methods) for more details. + +This emulator framework will expose the core services (ex. for the EDR server emulator, this would include Kibana and Elasticsearch clients) to each route under `request.pre` (pre-handler methods). + +Example: a route handler under the EDR server emulator that returns the version of kibana + +```typescript + +const handler = async (req, h) => { + const kbnStatus = await req.pre.services.kbnClient.status.get(); + + return kbnStatus.version.number; +} + +``` diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/mocks.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/mocks.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_init_rtr_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_init_rtr_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_init_rtr_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_init_rtr_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_refresh_rtr_session_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_refresh_rtr_session_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_refresh_rtr_session_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_refresh_rtr_session_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_rtr_command_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_rtr_command_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_rtr_command_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/batch_rtr_command_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_agent_details_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_agent_details_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_agent_details_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_agent_details_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_agent_online_status_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_agent_online_status_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_agent_online_status_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_agent_online_status_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_rtr_command_details_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_rtr_command_details_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_rtr_command_details_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_rtr_command_details_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_scripts_details_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_scripts_details_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_scripts_details_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_scripts_details_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_scripts_ids_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_scripts_ids_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_scripts_ids_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_scripts_ids_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_token_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_token_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_token_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/get_token_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/host_actions_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/host_actions_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/host_actions_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/host_actions_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/init_rtr_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/init_rtr_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/init_rtr_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/init_rtr_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/refresh_rtr_session_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/refresh_rtr_session_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/refresh_rtr_session_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/refresh_rtr_session_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/rtr_admin_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/rtr_admin_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/rtr_admin_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/rtr_admin_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/rtr_command_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/rtr_command_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/rtr_command_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/rtr_command_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/utils.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/utils.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/crowdstrike/routes/utils.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/activities_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/activities_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/activities_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/activities_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agent_action_connect_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agent_action_connect_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agent_action_connect_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agent_action_connect_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agent_action_disconnect_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agent_action_disconnect_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agent_action_disconnect_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agent_action_disconnect_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agents_route.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agents_route.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agents_route.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/agents_route.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/utils.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/utils.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/emulator_plugins/sentinelone/routes/utils.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/external_edr_server_emulator.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/external_edr_server_emulator.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/external_edr_server_emulator.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/external_edr_server_emulator.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/external_edr_server_emulator.types.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/external_edr_server_emulator.types.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/external_edr_server_emulator.types.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/external_edr_server_emulator.types.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/lib/emulator_server.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/lib/emulator_server.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/lib/emulator_server.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/lib/emulator_server.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/api_emulator/lib/emulator_server.types.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/lib/emulator_server.types.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/api_emulator/lib/emulator_server.types.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/api_emulator/lib/emulator_server.types.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/blocklists/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.test.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.test.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.test.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/agent_downloads_service.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/base_running_service.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/base_running_service.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/base_running_service.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/base_running_service.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/connectors_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/connectors_services.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/connectors_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/connectors_services.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/constants.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/constants.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/constants.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/delete_all_endpoint_data.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/delete_all_endpoint_data.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/delete_all_endpoint_data.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/delete_all_endpoint_data.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/detection_rules_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/detection_rules_services.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/detection_rules_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/detection_rules_services.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/elastic_agent_service.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/elastic_agent_service.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/elastic_agent_service.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/elastic_agent_service.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_artifact_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/endpoint_artifact_services.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_artifact_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/endpoint_artifact_services.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_host_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/endpoint_host_services.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_host_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/endpoint_host_services.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_metadata_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/endpoint_metadata_services.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/endpoint_metadata_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/endpoint_metadata_services.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/execution_throttler.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/execution_throttler.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/execution_throttler.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/execution_throttler.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server.yml b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server.yml similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server.yml rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server.yml diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts similarity index 97% rename from x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts index 51260c5ac6053..cc9a75148d9dc 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts @@ -277,6 +277,7 @@ const startFleetServerWithDocker = async ({ const isServerless = await isServerlessKibanaFlavor(kbnClient); const esURL = new URL(await getFleetElasticsearchOutputHost(kbnClient)); const containerName = `dev-fleet-server.${port}`; + let fleetServerVersionInfo = ''; log.info( `Starting a new fleet server using Docker\n Agent version: ${agentVersion}\n Server URL: ${fleetServerUrl}` @@ -284,10 +285,11 @@ const startFleetServerWithDocker = async ({ let retryAttempt = isServerless ? 0 : 1; const attemptServerlessFleetServerSetup = async (): Promise => { + fleetServerVersionInfo = ''; + return log.indent(4, async () => { const hostname = `dev-fleet-server.${port}.${Math.random().toString(32).substring(2, 6)}`; let containerId = ''; - let fleetServerVersionInfo = ''; if (isLocalhost(esURL.hostname)) { esURL.hostname = localhostRealIp; @@ -361,8 +363,17 @@ const startFleetServerWithDocker = async ({ } fleetServerVersionInfo = isServerless - ? // `/usr/bin/fleet-server` process does not seem to support a `--version` type of argument - 'Running latest standalone fleet server' + ? ( + await execa + .command(`docker exec ${containerName} /usr/bin/fleet-server --version`) + .catch((err) => { + log.verbose( + `Failed to retrieve fleet-server (serverless/standalone) version information from running instance.`, + err + ); + return { stdout: 'Unable to retrieve version information (serverless)' }; + }) + ).stdout : ( await execa('docker', [ 'exec', @@ -424,7 +435,7 @@ Kill container: ${chalk.cyan(`docker kill ${containerId}`)} const response: StartedServer = await attemptServerlessFleetServerSetup(); - log.info(`Done. Fleet server up and running`); + log.info(`Done. Fleet server up and running (version: ${fleetServerVersionInfo})`); return response; }; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts similarity index 94% rename from x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts index a07823194fa69..7c89beec9150b 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/fleet_services.ts @@ -56,12 +56,14 @@ import type { DeleteAgentPolicyResponse, EnrollmentAPIKey, GenerateServiceTokenResponse, + GetActionStatusResponse, GetAgentsRequest, GetEnrollmentAPIKeysResponse, GetOutputsResponse, PostAgentUnenrollResponse, UpdateAgentPolicyRequest, UpdateAgentPolicyResponse, + PostNewAgentActionResponse, } from '@kbn/fleet-plugin/common/types'; import semver from 'semver'; import axios from 'axios'; @@ -1499,3 +1501,92 @@ export const updateAgentPolicy = async ( .catch(catchAxiosErrorFormatAndThrow) .then((response) => response.data.item); }; + +/** + * Sets the log level on a Fleet agent and waits a bit of time to allow it for to + * complete (but does not error if it does not complete) + * + * @param kbnClient + * @param agentId + * @param logLevel + * @param log + */ +export const setAgentLoggingLevel = async ( + kbnClient: KbnClient, + agentId: string, + logLevel: 'debug' | 'info' | 'warning' | 'error', + log: ToolingLog = createToolingLogger() +): Promise => { + log.debug(`Setting fleet agent [${agentId}] logging level to [${logLevel}]`); + + const response = await kbnClient + .request({ + method: 'POST', + path: `/api/fleet/agents/${agentId}/actions`, + body: { action: { type: 'SETTINGS', data: { log_level: logLevel } } }, + headers: { 'Elastic-Api-Version': API_VERSIONS.public.v1 }, + }) + .then((res) => res.data); + + // Wait to see if the action completes, but don't `throw` if it does not + await waitForFleetAgentActionToComplete(kbnClient, response.item.id) + .then(() => { + log.debug(`Fleet action to set agent [${agentId}] logging level to [${logLevel}] completed!`); + }) + .catch((err) => { + log.debug(err.message); + }); + + return response; +}; + +/** + * Retrieve fleet agent action statuses + * @param kbnClient + */ +export const fetchFleetAgentActionStatus = async ( + kbnClient: KbnClient +): Promise => { + return kbnClient + .request({ + method: 'GET', + path: agentRouteService.getActionStatusPath(), + query: { perPage: 1000 }, + headers: { 'Elastic-Api-Version': API_VERSIONS.public.v1 }, + }) + .then((response) => response.data); +}; + +/** + * Check and wait until a Fleet Agent action is complete. + * @param kbnClient + * @param actionId + * @param timeout + * + * @throws + */ +export const waitForFleetAgentActionToComplete = async ( + kbnClient: KbnClient, + actionId: string, + timeout: number = 20_000 +): Promise => { + await pRetry( + async (attempts) => { + const { items: actionList } = await fetchFleetAgentActionStatus(kbnClient); + const actionInfo = actionList.find((action) => action.actionId === actionId); + + if (!actionInfo) { + throw new Error( + `Fleet Agent action id [${actionId}] was not found in list of actions retrieved from fleet!` + ); + } + + if (actionInfo.status === 'IN_PROGRESS') { + throw new Error( + `Fleet agent action id [${actionId}] remains in progress after [${attempts}] attempts to check its status` + ); + } + }, + { maxTimeout: 2_000, maxRetryTime: timeout } + ); +}; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/is_localhost.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/is_localhost.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/is_localhost.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/is_localhost.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/network_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/network_services.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/network_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/network_services.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/nodejs_utils.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/nodejs_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/nodejs_utils.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/nodejs_utils.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/response_actions.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/response_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/response_actions.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/response_actions.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/role_and_user_loader.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/role_and_user_loader.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/role_and_user_loader.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/role_and_user_loader.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/detections_engineer.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/detections_engineer.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/detections_engineer.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/detections_engineer.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_operations_analyst.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_operations_analyst.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_operations_analyst.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_operations_analyst.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_security_policy_manager.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_security_policy_manager.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_security_policy_manager.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/endpoint_security_policy_manager.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/hunter.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/hunter.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/hunter.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/hunter.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/platform_engineer.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/platform_engineer.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/platform_engineer.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/platform_engineer.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/rule_author.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/rule_author.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/rule_author.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/rule_author.ts diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/README.md b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/README.md new file mode 100644 index 0000000000000..c99105e60862d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/README.md @@ -0,0 +1,47 @@ +# Security Solution Serverless Resources + +Directory contains ES serverless resources that can be used to override the defaults that are loaded when ES is started in serverless mode. For more information on how these are used [packages/kbn-es/src/serverless_resources/README.md](https://github.com/elastic/kibana/blob/main/packages/kbn-es/src/serverless_resources/README.md) + +> **ℹ️ NOTE** +> +> The files referenced via `--resources` argument will be bound and mounted to the ES docker containers that are running ES. This means that any changes to the files done on the host machine will be automatically (after a delay - 5s by default) picked up by Elasticsearch and applied to the ES docker nodes. + +## Usage + +Example executed from the root directory of Kibana: + +```shell +yarn es serverless \ +--clean \ +--kill \ +-E xpack.security.authc.api_key.enabled=true \ +-E http.host=0.0.0.0 \ +--resources=./x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml \ +--resources=./x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users \ +--resources=./x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users_roles +``` + +> **💡️TIP** +> +> If needing to make custom changes to any of the ES resources for personal dev. purposes, copy the files located in this folder to your own local directly, make changes there and then use those file paths when starting ES + + + +## Files + +### `roles.yml` + +The list of Roles that are loaded into security serverless projects. The values in this file should match those in the [project controller](https://github.com/elastic/project-controller/blob/main/internal/project/security/config/roles.yml) and should remain in sync. + +### `users` + +List of users that are loaded into ES for serverless. This file currently includes a user for each of the Security Project roles (same name as the role). All users in this file have their password set to `changeme` + +Format: `user:encrypted_password` + +### `users_roles` + +A map of role names (should match those define in the `roles.yml`) to list of users (values found in the `users` file). All Security serverless roles are listed in this file along with one user by the same name. + +Format: `role_name:username,username,username` + diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users_roles b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users_roles similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users_roles rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/users_roles diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/soc_manager.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/soc_manager.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/soc_manager.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/soc_manager.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/t1_analyst.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/t1_analyst.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/t1_analyst.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/t1_analyst.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/t2_analyst.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/t2_analyst.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/t2_analyst.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/t2_analyst.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/t3_analyst.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/t3_analyst.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/t3_analyst.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/t3_analyst.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/threat_intelligence_analyst.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/threat_intelligence_analyst.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/threat_intelligence_analyst.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/threat_intelligence_analyst.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/with_artifact_read_privileges_role.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/with_artifact_read_privileges_role.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/with_artifact_read_privileges_role.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/with_artifact_read_privileges_role.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/with_response_actions_role.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/with_response_actions_role.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/with_response_actions_role.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/with_response_actions_role.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/without_response_actions_role.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/without_response_actions_role.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/roles_users/without_response_actions_role.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/without_response_actions_role.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/choice_menu_formatter.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/choice_menu_formatter.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/choice_menu_formatter.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/choice_menu_formatter.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/column_layout_formatter.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/column_layout_formatter.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/column_layout_formatter.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/column_layout_formatter.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/common_choices.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/common_choices.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/common_choices.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/common_choices.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/constants.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/constants.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/constants.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/data_formatter.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/data_formatter.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/data_formatter.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/data_formatter.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/layout.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/layout.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/layout.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/layout.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/progress_formatter.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/progress_formatter.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/progress_formatter.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/progress_formatter.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/screen_base_class.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/screen_base_class.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/screen_base_class.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/screen_base_class.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/type_gards.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/type_gards.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/type_gards.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/type_gards.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/screen/types.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/types.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/screen/types.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/screen/types.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/security_user_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/security_user_services.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/security_user_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/security_user_services.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/settings_storage.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/settings_storage.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/settings_storage.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/settings_storage.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/spaces.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/spaces.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/spaces.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/spaces.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/stack_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/stack_services.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/stack_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/stack_services.ts diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/types.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/types.ts new file mode 100644 index 0000000000000..e3e41c41b77f3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/types.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Generic common interface for a Host Virtual Machine. + */ +export interface HostVm { + type: SupportedVmManager; + name: string; + exec: (command: string) => Promise; + mount: (localDir: string, hostVmDir: string) => Promise; + unmount: (hostVmDir: string) => Promise; + /** @deprecated use `upload` */ + transfer: (localFilePath: string, destFilePath: string) => Promise; + /** Uploads/copies a file from the local machine to the VM */ + upload: (localFilePath: string, destFilePath: string) => Promise; + /** Downloads a file from the host VM to the local machine */ + download: (vmFilePath: string, localFilePath: string) => Promise; + destroy: () => Promise; + info: () => string; + stop: () => void; + start: () => void; +} + +export type SupportedVmManager = 'multipass' | 'vagrant'; +export interface HostVmExecResponse { + stdout: string; + stderr: string; + exitCode: number; +} +export interface HostVmMountResponse { + hostDir: string; + unmount: () => Promise; +} +export interface HostVmTransferResponse { + /** The path of the file that was either uploaded to the host VM or downloaded to the local machine from the VM */ + filePath: string; + /** Delete the file from the host VM or from the local machine depending on what client method was used */ + delete: () => Promise; +} diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/utils.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/utils.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/utils.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/vm_services.ts similarity index 79% rename from x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/vm_services.ts index 084e068768e8f..9e133c69700c6 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/vm_services.ts @@ -8,15 +8,19 @@ import type { ToolingLog } from '@kbn/tooling-log'; import execa from 'execa'; import chalk from 'chalk'; +import path from 'path'; import { userInfo } from 'os'; -import { join as pathJoin, dirname } from 'path'; +import { unlink as deleteFile } from 'fs/promises'; +import { dump } from './utils'; import type { DownloadedAgentInfo } from './agent_downloads_service'; import { BaseDataGenerator } from '../../../common/endpoint/data_generators/base_data_generator'; import { createToolingLogger } from '../../../common/endpoint/data_loaders/utils'; import type { HostVm, HostVmExecResponse, SupportedVmManager } from './types'; const baseGenerator = new BaseDataGenerator(); -export const DEFAULT_VAGRANTFILE = pathJoin(__dirname, 'vagrant', 'Vagrantfile'); +export const DEFAULT_VAGRANTFILE = path.join(__dirname, 'vagrant', 'Vagrantfile'); + +const MAX_BUFFER = 1024 * 1024 * 5; // 5MB export interface BaseVmCreateOptions { name: string; @@ -75,9 +79,16 @@ export const createMultipassHostVmClient = ( log: ToolingLog = createToolingLogger() ): HostVm => { const exec = async (command: string): Promise => { - const execResponse = await execa.command(`multipass exec ${name} -- ${command}`); - - log.verbose(execResponse); + const execResponse = await execa + .command(`multipass exec ${name} -- ${command}`, { maxBuffer: MAX_BUFFER }) + .catch((e) => { + log.error(dump(e)); + throw e; + }); + + log.verbose( + `exec response from host [${name}] for command [${command}]:\n${dump(execResponse)}` + ); return { stdout: execResponse.stdout, @@ -125,11 +136,11 @@ export const createMultipassHostVmClient = ( log.verbose(`multipass stop response:\n`, response); }; - const transfer: HostVm['transfer'] = async (localFilePath, destFilePath) => { + const upload: HostVm['upload'] = async (localFilePath, destFilePath) => { const response = await execa.command( `multipass transfer ${localFilePath} ${name}:${destFilePath}` ); - log.verbose(`Transferred file to VM [${name}]:`, response); + log.verbose(`Uploaded file to VM [${name}]:`, response); return { filePath: destFilePath, @@ -139,6 +150,27 @@ export const createMultipassHostVmClient = ( }; }; + const download: HostVm['download'] = async (vmFilePath: string, localFilePath: string) => { + const localFileAbsolutePath = path.resolve(localFilePath); + const response = await execa.command( + `multipass transfer ${name}:${vmFilePath} ${localFilePath}` + ); + log.verbose(`Downloaded file from VM [${name}]:`, response); + + return { + filePath: localFileAbsolutePath, + delete: async () => { + return deleteFile(localFileAbsolutePath).then(() => { + return { + stdout: 'success', + stderr: '', + exitCode: 0, + }; + }); + }, + }; + }; + return { type: 'multipass', name, @@ -147,7 +179,9 @@ export const createMultipassHostVmClient = ( info, mount, unmount, - transfer, + transfer: upload, + upload, + download, start, stop, }; @@ -197,7 +231,7 @@ interface CreateVagrantVmOptions extends BaseVmCreateOptions { agentDownload: DownloadedAgentInfo; /** * The path to the Vagrantfile to use to provision the VM. Defaults to Vagrantfile under: - * `x-pack/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile` + * `x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/vagrant/Vagrantfile` */ vagrantFile?: string; log?: ToolingLog; @@ -217,7 +251,7 @@ const createVagrantVm = async ({ }: CreateVagrantVmOptions): Promise => { log.debug(`Using Vagrantfile: ${vagrantFile}`); - const VAGRANT_CWD = dirname(vagrantFile); + const VAGRANT_CWD = path.dirname(vagrantFile); // Destroy the VM running (if any) with the provided vagrant file before re-creating it try { @@ -273,18 +307,24 @@ export const createVagrantHostVmClient = ( vagrantFile: string = DEFAULT_VAGRANTFILE, log: ToolingLog = createToolingLogger() ): HostVm => { - const VAGRANT_CWD = dirname(vagrantFile); + const VAGRANT_CWD = path.dirname(vagrantFile); const execaOptions: execa.Options = { env: { VAGRANT_CWD, }, stdio: ['inherit', 'pipe', 'pipe'], + maxBuffer: MAX_BUFFER, }; log.debug(`Creating Vagrant VM client for [${name}] with vagrantfile [${vagrantFile}]`); const exec = async (command: string): Promise => { - const execResponse = await execa.command(`vagrant ssh -- ${command}`, execaOptions); + const execResponse = await execa + .command(`vagrant ssh -- ${command}`, execaOptions) + .catch((e) => { + log.error(dump(e)); + throw e; + }); log.verbose(execResponse); @@ -328,12 +368,12 @@ export const createVagrantHostVmClient = ( log.verbose('vagrant suspend response:\n', response); }; - const transfer: HostVm['transfer'] = async (localFilePath, destFilePath) => { + const upload: HostVm['upload'] = async (localFilePath, destFilePath) => { const response = await execa.command( `vagrant upload ${localFilePath} ${destFilePath}`, execaOptions ); - log.verbose(`Transferred file to VM [${name}]:`, response); + log.verbose(`Uploaded file to VM [${name}]:`, response); return { filePath: destFilePath, @@ -343,6 +383,34 @@ export const createVagrantHostVmClient = ( }; }; + const download: HostVm['download'] = async (vmFilePath, localFilePath) => { + const localFileAbsolutePath = path.resolve(localFilePath); + + // Vagrant will auto-mount the directory that includes the Vagrant file to the VM under `/vagrant`, + // and it keeps that sync'd to the local system. So we first copy the file in the VM there so we + // can retrieve it from the local machine + await exec(`cp ${vmFilePath} /vagrant`).catch((e) => { + log.error(`Error while attempting to copy file on VM:\n${dump(e)}`); + throw e; + }); + + // Now move the file from the local vagrant directory to the desired location + await execa.command(`mv ${VAGRANT_CWD}/${path.basename(vmFilePath)} ${localFileAbsolutePath}`); + + return { + filePath: localFileAbsolutePath, + delete: async () => { + return deleteFile(localFileAbsolutePath).then(() => { + return { + stdout: 'success', + stderr: '', + exitCode: 0, + }; + }); + }, + }; + }; + return { type: 'vagrant', name, @@ -351,7 +419,9 @@ export const createVagrantHostVmClient = ( info, mount, unmount, - transfer, + transfer: upload, + upload, + download, start, stop, }; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_emulator.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_emulator.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_emulator.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_emulator.js index 9eacefa57a2b9..a259d98a78f93 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_emulator.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_emulator.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./agent_emulator').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/elastic_endpoint.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/elastic_endpoint.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/elastic_endpoint.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/elastic_endpoint.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/pre_check.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/pre_check.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/pre_check.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/pre_check.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/runtime.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/runtime.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/runtime.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/runtime.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/setup.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/setup.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/setup.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/setup.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/types.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/types.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/types.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_agent_runner/types.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/endpoint_policies/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_policies/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/endpoint_policies/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/endpoint_policies/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/create_artifacts.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/create_artifacts.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/create_artifacts.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/create_artifacts.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/create_policies.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/create_policies.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/create_policies.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/create_policies.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/load.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/load.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/load.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/load.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/progress_reporter.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/progress_reporter.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/progress_reporter.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/progress_reporter.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/types.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/types.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/types.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/types.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/utils.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/env_data_loader/src/utils.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/env_data_loader/src/utils.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/es_serverless/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/es_serverless/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/es_serverless/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/es_serverless/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/event_filters/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/fleet_server/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/fleet_server/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/fleet_server/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/fleet_server/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/load_agent_policies.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_agent_policies.js similarity index 85% rename from x-pack/plugins/security_solution/scripts/endpoint/load_agent_policies.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_agent_policies.js index 0ead7ec978eda..2647a83288ec8 100755 --- a/x-pack/plugins/security_solution/scripts/endpoint/load_agent_policies.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_agent_policies.js @@ -7,5 +7,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./agent_policy_generator').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/load_blocklists.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_blocklists.js similarity index 85% rename from x-pack/plugins/security_solution/scripts/endpoint/load_blocklists.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_blocklists.js index 46777ae8ccf7f..912f1743bfb45 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/load_blocklists.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_blocklists.js @@ -7,5 +7,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./blocklists').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/load_endpoint_policies.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_endpoint_policies.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/endpoint/load_endpoint_policies.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_endpoint_policies.js index b982fa4eaeaa3..1b7482fbcb75f 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/load_endpoint_policies.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_endpoint_policies.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./endpoint_policies').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/load_env_data.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_env_data.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/endpoint/load_env_data.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_env_data.js index 6568d3465432f..3f012e59ecdde 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/load_env_data.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_env_data.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./env_data_loader').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/load_event_filters.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_event_filters.js similarity index 85% rename from x-pack/plugins/security_solution/scripts/endpoint/load_event_filters.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_event_filters.js index ca0f4ff9365c5..e7645ecb35a78 100755 --- a/x-pack/plugins/security_solution/scripts/endpoint/load_event_filters.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_event_filters.js @@ -7,5 +7,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./event_filters').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/load_host_isolation_exceptions.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_host_isolation_exceptions.js similarity index 86% rename from x-pack/plugins/security_solution/scripts/endpoint/load_host_isolation_exceptions.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_host_isolation_exceptions.js index 13fedecb690ca..a8edbd96686ea 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/load_host_isolation_exceptions.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_host_isolation_exceptions.js @@ -7,5 +7,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./host_isolation_exceptions').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/load_trusted_apps.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_trusted_apps.js similarity index 85% rename from x-pack/plugins/security_solution/scripts/endpoint/load_trusted_apps.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_trusted_apps.js index 2b5f63bba8d3d..eec61b588483a 100755 --- a/x-pack/plugins/security_solution/scripts/endpoint/load_trusted_apps.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/load_trusted_apps.js @@ -7,5 +7,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./trusted_apps').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/resolver_generator.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/endpoint/resolver_generator.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/resolver_generator.js index 5a43286ae144e..fda2fd4d4d935 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/resolver_generator.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./resolver_generator_script'); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/run_endpoint_agent.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/run_endpoint_agent.js similarity index 85% rename from x-pack/plugins/security_solution/scripts/endpoint/run_endpoint_agent.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/run_endpoint_agent.js index 1a79b1456b9c6..2398bffe1b694 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/run_endpoint_agent.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/run_endpoint_agent.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./endpoint_agent_runner').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/run_sentinelone_host.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/run_sentinelone_host.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/endpoint/run_sentinelone_host.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/run_sentinelone_host.js index 56847abe9a920..5eeb6392ca012 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/run_sentinelone_host.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/run_sentinelone_host.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./sentinelone_host').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/common.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/sentinelone_host/common.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/common.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/sentinelone_host/common.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/types.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/sentinelone_host/types.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/types.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/sentinelone_host/types.ts diff --git a/x-pack/plugins/security_solution/scripts/endpoint/start_es_serverless_with_security_users.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_es_serverless_with_security_users.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/endpoint/start_es_serverless_with_security_users.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_es_serverless_with_security_users.js index 14169bc43ed08..3ef76c2c55797 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/start_es_serverless_with_security_users.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_es_serverless_with_security_users.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./es_serverless').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/start_external_edr_server_emulator.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_external_edr_server_emulator.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/endpoint/start_external_edr_server_emulator.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_external_edr_server_emulator.js index 5874264a85e2b..9003e614a6c3b 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/start_external_edr_server_emulator.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_external_edr_server_emulator.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./api_emulator').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/start_fleet_server.js b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_fleet_server.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/endpoint/start_fleet_server.js rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_fleet_server.js index d83c8a350f9e9..640944f27fb47 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/start_fleet_server.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/start_fleet_server.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./fleet_server').cli(); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts diff --git a/x-pack/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js b/x-pack/solutions/security/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js similarity index 99% rename from x-pack/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js rename to x-pack/solutions/security/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js index 6bb1b52a92043..9ce8fbb72cff6 100644 --- a/x-pack/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js @@ -5,7 +5,7 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); const fs = require('fs'); // eslint-disable-next-line import/no-extraneous-dependencies diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/jest.config.js b/x-pack/solutions/security/plugins/security_solution/scripts/jest.config.js new file mode 100644 index 0000000000000..a5a3c19eee9e0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/scripts'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/scripts', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/scripts/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/security_solution/scripts/junit_transformer/README.md b/x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/README.md similarity index 100% rename from x-pack/plugins/security_solution/scripts/junit_transformer/README.md rename to x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/README.md diff --git a/x-pack/plugins/security_solution/scripts/junit_transformer/__snapshots__/junit_transformer.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/__snapshots__/junit_transformer.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/scripts/junit_transformer/__snapshots__/junit_transformer.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/__snapshots__/junit_transformer.test.ts.snap diff --git a/x-pack/plugins/security_solution/scripts/junit_transformer/fixtures/suite_with_failing_test.xml b/x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/fixtures/suite_with_failing_test.xml similarity index 100% rename from x-pack/plugins/security_solution/scripts/junit_transformer/fixtures/suite_with_failing_test.xml rename to x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/fixtures/suite_with_failing_test.xml diff --git a/x-pack/plugins/security_solution/scripts/junit_transformer/index.js b/x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/index.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/junit_transformer/index.js rename to x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/index.js index f1b0280c4ede8..ed880f3f8bc83 100644 --- a/x-pack/plugins/security_solution/scripts/junit_transformer/index.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/index.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./junit_transformer'); diff --git a/x-pack/plugins/security_solution/scripts/junit_transformer/junit_transformer.test.ts b/x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/junit_transformer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/junit_transformer/junit_transformer.test.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/junit_transformer.test.ts diff --git a/x-pack/plugins/security_solution/scripts/junit_transformer/junit_transformer.ts b/x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/junit_transformer.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/junit_transformer/junit_transformer.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/junit_transformer.ts diff --git a/x-pack/plugins/security_solution/scripts/junit_transformer/lib.ts b/x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/lib.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/junit_transformer/lib.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/junit_transformer/lib.ts diff --git a/x-pack/plugins/security_solution/scripts/loop_cypress_tests.js b/x-pack/solutions/security/plugins/security_solution/scripts/loop_cypress_tests.js similarity index 100% rename from x-pack/plugins/security_solution/scripts/loop_cypress_tests.js rename to x-pack/solutions/security/plugins/security_solution/scripts/loop_cypress_tests.js diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/mappings/README.md b/x-pack/solutions/security/plugins/security_solution/scripts/mappings/README.md new file mode 100644 index 0000000000000..f4bff842fb603 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/mappings/README.md @@ -0,0 +1,37 @@ +# Huge Indices with Unmapped Fields Generator/Loader Scripts + +This script makes it easy to generate and load big amount of indices with huge amount of fields. +It is also easy to specify what portion of those fields should be unmapped across various indices. +The purpose of this scripts is to be able to test `_field_caps` APIs which we use to fetch fields, +especially with `include_unmapped` options set. + +There are two different scripts: +1. `mappings_generator.js` which generates indices +2. `mappings_loader.js` which loads all generated indices to ES + +## Examples. + +### Generate 1k indices (split into 10 buckets with 100 indices each) with 10k fields (with 20% randomly unmapped fields within each index) + +> `node mappings_generator.js --fieldsCount=10000 --indexCount=1000 --indexPrefix='.ds-huge' --unmappedRate=.2 --buckets=10 --outputDirectory='test_unmapped'` + +The result of this operation will be 10 separate bucket folders within `test_unmapped`. Each bucket folder will contain a `mappings.json` file describing 100 indices. + +Available attributes: +* `--fieldsCount` (*required*): the number of fields in generated index +* `--indexCount` (*required*): the number of indices to be generated +* `--indexPrefix` (*required*): the prefix for the generated indices +* `--unmappedRate` (*required*): the percentage of unmapped fields in each index (value ranges from 0.0 to 1.0) +* `--buckets` (*optional, default value is 1*): it is possible to split the generated indices mappings into the smaller chunks +* `--outputDirectory` (*required*): the output folder +* `--purgeOutputDirectory` (*optional, default value is false*): the flag indicating whether we should purge output folder before generating new mappings + +### Load all generated buckets generated via previous command + +> `node mappings_loader.js --mappings-dir='test_unmapped' --es-url=http://elastic:changeme@localhost:9200 --kibana-url=http://elastic:changeme@localhost:5601/kbn/app` + + +This script will go through each folder in the provided root folder (via `--mappings-dir`) and load each folder with mappings inside using `es_archiver` tool. + + +**NOTE:** The path to `es_archiver` is adjusted for the call of this script using `x-pack/solutions/security/plugins/security_solution/package.json`. If you call this script directly, you will need to adjust it accordingly. diff --git a/x-pack/plugins/security_solution/scripts/mappings/mappings_generator.js b/x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_generator.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/mappings/mappings_generator.js rename to x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_generator.js index a97b2e707f07b..5fe455148f16a 100644 --- a/x-pack/plugins/security_solution/scripts/mappings/mappings_generator.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_generator.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./mappings_generator_script'); diff --git a/x-pack/plugins/security_solution/scripts/mappings/mappings_generator_script.ts b/x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_generator_script.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/mappings/mappings_generator_script.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_generator_script.ts diff --git a/x-pack/plugins/security_solution/scripts/mappings/mappings_loader.js b/x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_loader.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/mappings/mappings_loader.js rename to x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_loader.js index 8e54207074d0e..62beb5c0aaccb 100644 --- a/x-pack/plugins/security_solution/scripts/mappings/mappings_loader.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_loader.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./mappings_loader_script'); diff --git a/x-pack/plugins/security_solution/scripts/mappings/mappings_loader_script.ts b/x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_loader_script.ts similarity index 92% rename from x-pack/plugins/security_solution/scripts/mappings/mappings_loader_script.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_loader_script.ts index d8767d21a677c..a8150f25ca4c9 100644 --- a/x-pack/plugins/security_solution/scripts/mappings/mappings_loader_script.ts +++ b/x-pack/solutions/security/plugins/security_solution/scripts/mappings/mappings_loader_script.ts @@ -17,8 +17,8 @@ if (requireMain) { appDir = path.dirname(requireMain.filename); } -const CONFIG_PATH = path.resolve(appDir, '../../../../../test/functional/config.base.js'); -const ES_ARCHIVER_PATH = path.resolve(appDir, '../../../../../scripts/es_archiver'); +const CONFIG_PATH = path.resolve(appDir, '../../../../../../../test/functional/config.base.js'); +const ES_ARCHIVER_PATH = path.resolve(appDir, '../../../../../../../scripts/es_archiver'); const loadAllIndices = (esUrl: string, kibanaUrl: string, mappingsDir: string) => { const exec = (cmd: string) => execSync(cmd, { stdio: 'inherit' }); diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections.js b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections.js new file mode 100644 index 0000000000000..fe17772f5ffbc --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections.js @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../../../../src/setup_node_env'); +const { bundle } = require('@kbn/openapi-bundler'); +const { join, resolve } = require('path'); + +const ROOT = resolve(__dirname, '../..'); + +(async () => { + await bundle({ + sourceGlob: join(ROOT, 'common/api/detection_engine/**/*.schema.yaml'), + outputFilePath: join( + ROOT, + 'docs/openapi/serverless/security_solution_detections_api_{version}.bundled.schema.yaml' + ), + options: { + includeLabels: ['serverless'], + prototypeDocument: join( + ROOT, + 'scripts/openapi/bundle_detections_info/detections_serverless.info.yaml' + ), + }, + }); + + await bundle({ + sourceGlob: join(ROOT, 'common/api/detection_engine/**/*.schema.yaml'), + outputFilePath: join( + ROOT, + 'docs/openapi/ess/security_solution_detections_api_{version}.bundled.schema.yaml' + ), + options: { + includeLabels: ['ess'], + prototypeDocument: join( + ROOT, + 'scripts/openapi/bundle_detections_info/detections_ess.info.yaml' + ), + }, + }); +})(); diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_ess.info.yaml b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_ess.info.yaml new file mode 100644 index 0000000000000..bb3f8830dc35a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_ess.info.yaml @@ -0,0 +1,14 @@ +openapi: 3.0.3 +info: + title: "Security Detections API (Elastic Cloud and self-hosted)" + description: "Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged." + +tags: + - name: "Security Detections API" + x-displayName: "Security detections" + description: | + Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged. + > warn + > If the API key used for authorization has different privileges than the key that created or most recently updated a rule, the rule behavior might change. + + > If the API key that created a rule is deleted, or the user that created the rule becomes inactive, the rule will stop running. \ No newline at end of file diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_serverless.info.yaml b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_serverless.info.yaml new file mode 100644 index 0000000000000..a90f669b4ed28 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_serverless.info.yaml @@ -0,0 +1,14 @@ +openapi: 3.0.3 +info: + title: "Security Detections API (Elastic Cloud Serverless)" + description: "Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged." + +tags: + - name: "Security Detections API" + x-displayName: "Security detections" + description: | + Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged. + > warn + > If the API key used for authorization has different privileges than the key that created or most recently updated a rule, the rule behavior might change. + + > If the API key that created a rule is deleted, or the user that created the rule becomes inactive, the rule will stop running. \ No newline at end of file diff --git a/x-pack/plugins/security_solution/scripts/openapi/bundle_endpoint_management.js b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_endpoint_management.js similarity index 97% rename from x-pack/plugins/security_solution/scripts/openapi/bundle_endpoint_management.js rename to x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_endpoint_management.js index 481e3df4803d5..52c82ab7bd067 100644 --- a/x-pack/plugins/security_solution/scripts/openapi/bundle_endpoint_management.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_endpoint_management.js @@ -5,7 +5,7 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); const { bundle } = require('@kbn/openapi-bundler'); const { join, resolve } = require('path'); diff --git a/x-pack/plugins/security_solution/scripts/openapi/bundle_entity_analytics.js b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_entity_analytics.js similarity index 97% rename from x-pack/plugins/security_solution/scripts/openapi/bundle_entity_analytics.js rename to x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_entity_analytics.js index 89a60e1a8a0bb..21d8c6d397ae0 100644 --- a/x-pack/plugins/security_solution/scripts/openapi/bundle_entity_analytics.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_entity_analytics.js @@ -5,7 +5,7 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); const { bundle } = require('@kbn/openapi-bundler'); const { join, resolve } = require('path'); diff --git a/x-pack/plugins/security_solution/scripts/openapi/bundle_timeline.js b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_timeline.js similarity index 97% rename from x-pack/plugins/security_solution/scripts/openapi/bundle_timeline.js rename to x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_timeline.js index e2a439b81b322..a6e9655cbb091 100644 --- a/x-pack/plugins/security_solution/scripts/openapi/bundle_timeline.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/bundle_timeline.js @@ -5,7 +5,7 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); const { bundle } = require('@kbn/openapi-bundler'); const { join, resolve } = require('path'); diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/openapi/generate.js b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/generate.js new file mode 100644 index 0000000000000..8192f7ca6131f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/openapi/generate.js @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../../../../src/setup_node_env'); +const { generate } = require('@kbn/openapi-generator'); +const { REPO_ROOT } = require('@kbn/repo-info'); +const { resolve, join } = require('path'); + +const SECURITY_SOLUTION_ROOT = resolve(__dirname, '../..'); + +// This script is also run in CI: to track down the scripts that run it in CI, code search for `yarn openapi:generate` in the `.buildkite` top level directory + +(async () => { + await generate({ + title: 'API route schemas', + rootDir: SECURITY_SOLUTION_ROOT, + sourceGlob: './common/**/*.schema.yaml', + templateName: 'zod_operation_schema', + }); + + await generate({ + title: 'API client for tests', + rootDir: SECURITY_SOLUTION_ROOT, + sourceGlob: './common/**/*.schema.yaml', + templateName: 'api_client_supertest', + skipLinting: true, + bundle: { + outFile: join(REPO_ROOT, 'x-pack/test/api_integration/services/security_solution_api.gen.ts'), + }, + }); + + await generate({ + title: 'API client for quickstart', + rootDir: SECURITY_SOLUTION_ROOT, + sourceGlob: './common/**/*.schema.yaml', + templateName: 'api_client_quickstart', + skipLinting: false, + bundle: { + outFile: join( + REPO_ROOT, + 'x-pack/solutions/security/plugins/security_solution/common/api/quickstart_client.gen.ts' + ), + }, + }); +})(); diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/README.md b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/README.md new file mode 100644 index 0000000000000..2225f5e18a87d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/README.md @@ -0,0 +1,136 @@ +# Quickstart for Developers + +These tools make it fast and easy to create detection rules, exceptions, value lists, and source data for testing. + +## Usage + +`node x-pack/solutions/security/plugins/security_solution/scripts/quickstart/run.js`: Runs the script defined in `scratchpad.ts` +Options: +--username: User name to be used for auth against elasticsearch and kibana (Default: elastic). +--password: User name Password (Default: changeme) +--kibana: The url to Kibana (Default: http://127.0.0.1:5601). In most cases you'll want to set this URL to include the basepath as well. +--apikey: The API key for authentication, overrides username/password - use for serverless projects + +`scratchpad.ts` already contains code to set up clients for Elasticsearch and Kibana. In addition it provides clients for Security Solution, Lists, and Exceptions APIs, built on top of the Kibana client. However, it does not create any rules/exceptions/lists/data - it's a blank slate for you to immediately begin creating the resources you want for testing. Please don't commit data-generating code to `scratchpad.ts`! Instead, when you have built a data-generating script that might be useful to others, please extract the useful components to the `quickstart/modules` folder and leave `scratchpad.ts` empty for the next developer. + +### Environments + +The API clients are designed to work with any delivery method - local, cloud, or serverless deployments. For deployments that do not allow username/password auth, use an API key. + +## Modules + +Extracting data-generating logic into reusable modules that other people will actually use is the hardest part of sharing these scripts. To that end, it's crucial that the modules are organized as neatly as possible and extremely clear about what they do. If the modules are even slightly confusing, it will be faster for people to rebuild the same logic than to figure out how the existing scripts work. + +### Data + +Functions to create documents with various properties. This initial implementation has a function to create a document with an arbitrary number of fields and arbitrary amount of data in each field, but should be extended with more functions to create sets of documents with specific relationships such as X total documents with Y number of unique hosts etc. + +### Entity Analytics + +Functions to help install fake entity analytics data. Useful for testing alert enrichment based on entity analytics. + +### Exceptions + +Functions to help create exceptions with various properties. For example, one helper takes an array of values and automatically creates a value list exception item from that array - internally, it creates the value list and an exception item that references the list. + +### Frozen (TODO) + +Functions to help create frozen tier data quickly. These functions (once implemented) will take existing data and immediately move it to frozen for test purposes. + +### Lists + +Functions to help interact with the Lists APIs. The initial helper function makes it easy to import a value list from an array, since the process of attaching a file to a request (as the API expects) is not that intuitive. + +### Mappings + +Functions to help setup mappings. Provides the ECS mapping as well as helpers to generate mappings with tons of fields. + +### Rules + +Functions to help create rules along with data specific to each rule (WIP). Each sample rule defined in this folder should have an associated function to generate data that triggers alerts for the rule. + +## Speed + +To run a number of API requests in parallel, use `concurrentlyExec` from @kbn/securitysolution-utils. + +## Examples + +### Create a Rule + +``` +// Extra imports +import { concurrentlyExec } from '@kbn/securitysolution-utils/src/client_concurrency'; +import { basicRule } from './modules/rules/new_terms/basic_rule'; +import { duplicateRuleParams } from './modules/rules'; + +// ... omitted client setup stuff + +// Core logic +const ruleCopies = duplicateRuleParams(basicRule, 200); +const functions = ruleCopies.map((rule) => () => detectionsClient.createRule({ body: rule })); +const responses = await concurrentlyExec(functions); +``` + +### Create 200 Rules and an Exception for each one + +``` +// Extra imports +import { concurrentlyExec } from '@kbn/securitysolution-utils/src/client_concurrency'; +import { basicRule } from './modules/rules/new_terms/basic_rule'; +import { duplicateRuleParams } from './modules/rules'; +import { buildCreateRuleExceptionListItemsProps } from './modules/exceptions'; + +// ... omitted client setup stuff + +// Core logic +const ruleCopies = duplicateRuleParams(basicRule, 200); +const response = await detectionsClient.bulkCreateRules({ body: ruleCopies }); +const createdRules: RuleResponse[] = response.data.filter( +(r) => r.id != null +) as RuleResponse[]; + +// This map looks a bit confusing, but the concept is simple: take the rules we just created and +// create a *function* per rule to create an exception for that rule. We want a function to call later instead of just +// calling the API immediately to limit the number of requests in flight (with `concurrentlyExec`) +const exceptionsFunctions = createdRules.map( +(r) => () => + exceptionsClient.createRuleExceptionListItems( + buildCreateRuleExceptionListItemsProps({ id: r.id }) + ) +); +const exceptionsResponses = await concurrentlyExec(exceptionsFunctions); +``` + +### Run 10 Rule Preview Requests Simultaneously + +``` +const previewPromises = range(50).map( + (idx) => () => + detectionsClient.rulePreview({ + body: { + ...getBasicRuleMetadata(), + type: 'query', + timeframeEnd: '2024-08-21T20:37:37.114Z', + invocationCount: 1, + from: 'now-6m', + interval: '5m', + index: [index], + query: '*', + }, + }) +); + +const results = (await concurrentlyExec(previewPromises, 50)).map( + (result) => result.data.logs +); +``` + +## Future Work + +### Interactive Mode + +It may be useful to have a mode where the CLI waits for input from the user and creates resources selected from a predefined list. + +### Resource Tracking/Cleanup + +It may also be useful to have the tooling automatically keep track of the created resources so they can be deleted automatically when finished. diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/data/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/data/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/data/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/data/index.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/entity_analytics/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/entity_analytics/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/entity_analytics/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/entity_analytics/index.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/exceptions/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/exceptions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/exceptions/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/exceptions/index.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/lists/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/lists/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/lists/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/lists/index.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/mappings/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/mappings/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/mappings/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/mappings/index.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/rules/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/rules/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/index.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/rules/new_terms/basic_rule.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/new_terms/basic_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/rules/new_terms/basic_rule.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/new_terms/basic_rule.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/rules/query/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/query/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/rules/query/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/query/index.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/rules/threat_match/index.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/threat_match/index.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/rules/threat_match/index.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/threat_match/index.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/modules/rules/utils.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/modules/rules/utils.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/modules/rules/utils.ts diff --git a/x-pack/plugins/security_solution/scripts/quickstart/run.js b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/run.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/quickstart/run.js rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/run.js index ba2cb48a06cf9..cefed62e07972 100644 --- a/x-pack/plugins/security_solution/scripts/quickstart/run.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/run.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./scratchpad').cli(); diff --git a/x-pack/plugins/security_solution/scripts/quickstart/scratchpad.ts b/x-pack/solutions/security/plugins/security_solution/scripts/quickstart/scratchpad.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/quickstart/scratchpad.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/quickstart/scratchpad.ts diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/get_ftr_config.ts b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/get_ftr_config.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/run_cypress/get_ftr_config.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/get_ftr_config.ts diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/parallel.ts similarity index 97% rename from x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/parallel.ts index 0f93e4fceb10c..ef3f6093ea452 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts +++ b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/parallel.ts @@ -32,7 +32,7 @@ import { createKbnClient } from '../endpoint/common/stack_services'; import type { StartedFleetServer } from '../endpoint/common/fleet_server/fleet_server_services'; import { startFleetServer } from '../endpoint/common/fleet_server/fleet_server_services'; import { renderSummaryTable } from './print_run'; -import { parseTestFileConfig, retrieveIntegrations } from './utils'; +import { parseTestFileConfig, retrieveIntegrations, setDefaultToolingLoggingLevel } from './utils'; import { getFTRConfig } from './get_ftr_config'; export const cli = () => { @@ -67,12 +67,12 @@ ${JSON.stringify(argv, null, 2)} `); const isOpen = argv._.includes('open'); - const cypressConfigFilePath = require.resolve(`../../${argv.configFile}`) as string; + const cypressConfigFilePath = require.resolve(`../../../../${argv.configFile}`) as string; const cypressConfigFile = await import(cypressConfigFilePath); - if (cypressConfigFile.env?.TOOLING_LOG_LEVEL) { - createToolingLogger.defaultLogLevel = cypressConfigFile.env.TOOLING_LOG_LEVEL; - } + // Adjust tooling log level based on the `TOOLING_LOG_LEVEL` property, which can be + // defined in the cypress config file or set in the `env` + setDefaultToolingLoggingLevel(cypressConfigFile?.env?.TOOLING_LOG_LEVEL); const log = prefixedOutputLogger('cy.parallel()', createToolingLogger()); diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts similarity index 98% rename from x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts index 0b426cf1e8c20..90ea733edd552 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts +++ b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts @@ -28,7 +28,12 @@ import { INITIAL_REST_VERSION } from '@kbn/data-views-plugin/server/constants'; import { catchAxiosErrorFormatAndThrow } from '../../common/endpoint/format_axios_error'; import { createToolingLogger } from '../../common/endpoint/data_loaders/utils'; import { renderSummaryTable } from './print_run'; -import { getOnBeforeHook, parseTestFileConfig, retrieveIntegrations } from './utils'; +import { + getOnBeforeHook, + parseTestFileConfig, + retrieveIntegrations, + setDefaultToolingLoggingLevel, +} from './utils'; import { prefixedOutputLogger } from '../endpoint/common/utils'; import type { ProductType, Credentials, ProjectHandler } from './project_handler/project_handler'; @@ -352,7 +357,7 @@ ${JSON.stringify(argv, null, 2)} `); const isOpen = argv._.includes('open'); - const cypressConfigFilePath = require.resolve(`../../${argv.configFile}`) as string; + const cypressConfigFilePath = require.resolve(`../../../../${argv.configFile}`) as string; const cypressConfigFile = await import(cypressConfigFilePath); // if KIBANA_MKI_QUALITY_GATE exists and has a value, we are running the tests against the Kibana QA quality gate. @@ -363,9 +368,8 @@ ${JSON.stringify(argv, null, 2)} cypressConfigFile.env.grepTags = '@serverlessQA --@skipInServerless --@skipInServerlessMKI'; } - if (cypressConfigFile.env?.TOOLING_LOG_LEVEL) { - createToolingLogger.defaultLogLevel = cypressConfigFile.env.TOOLING_LOG_LEVEL; - } + setDefaultToolingLoggingLevel(cypressConfigFile?.env?.TOOLING_LOG_LEVEL); + // eslint-disable-next-line require-atomic-updates log = prefixedOutputLogger('cy.parallel(svl)', createToolingLogger()); diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/print_run.ts b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/print_run.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/run_cypress/print_run.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/print_run.ts diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/project_handler/cloud_project_handler.ts b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/project_handler/cloud_project_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/run_cypress/project_handler/cloud_project_handler.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/project_handler/cloud_project_handler.ts diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/project_handler/project_handler.ts b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/project_handler/project_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/run_cypress/project_handler/project_handler.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/project_handler/project_handler.ts diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/project_handler/proxy_project_handler.ts b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/project_handler/proxy_project_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/run_cypress/project_handler/proxy_project_handler.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/project_handler/proxy_project_handler.ts diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/utils.ts b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/utils.ts new file mode 100644 index 0000000000000..56a9463ecc698 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/run_cypress/utils.ts @@ -0,0 +1,179 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import _ from 'lodash'; +import * as fs from 'fs'; +import * as parser from '@babel/parser'; +import generate from '@babel/generator'; +import type { ExpressionStatement, ObjectExpression, ObjectProperty } from '@babel/types'; +import { schema, type TypeOf } from '@kbn/config-schema'; +import chalk from 'chalk'; +import type { ToolingLogTextWriterConfig } from '@kbn/tooling-log'; +import { createToolingLogger } from '../../common/endpoint/data_loaders/utils'; + +/** + * Retrieve test files using a glob pattern. + * If process.env.RUN_ALL_TESTS is true, returns all matching files, otherwise, return files that should be run by this job based on process.env.BUILDKITE_PARALLEL_JOB_COUNT and process.env.BUILDKITE_PARALLEL_JOB + */ +export const retrieveIntegrations = (integrationsPaths: string[]) => { + const nonSkippedSpecs = integrationsPaths.filter((filePath) => !isSkipped(filePath)); + + if (process.env.RUN_ALL_TESTS === 'true') { + return nonSkippedSpecs; + } else { + // The number of instances of this job were created + const chunksTotal: number = process.env.BUILDKITE_PARALLEL_JOB_COUNT + ? parseInt(process.env.BUILDKITE_PARALLEL_JOB_COUNT, 10) + : 1; + // An index which uniquely identifies this instance of the job + const chunkIndex: number = process.env.BUILDKITE_PARALLEL_JOB + ? parseInt(process.env.BUILDKITE_PARALLEL_JOB, 10) + : 0; + + const nonSkippedSpecsForChunk: string[] = []; + + for (let i = chunkIndex; i < nonSkippedSpecs.length; i += chunksTotal) { + nonSkippedSpecsForChunk.push(nonSkippedSpecs[i]); + } + + return nonSkippedSpecsForChunk; + } +}; + +export const isSkipped = (filePath: string): boolean => { + const testFile = fs.readFileSync(filePath, { encoding: 'utf8' }); + + const ast = parser.parse(testFile, { + sourceType: 'module', + plugins: ['typescript'], + }); + + const expressionStatement = _.find(ast.program.body, ['type', 'ExpressionStatement']) as + | ExpressionStatement + | undefined; + + const callExpression = expressionStatement?.expression; + + // @ts-expect-error + return callExpression?.callee?.property?.name === 'skip'; +}; + +export const parseTestFileConfig = (filePath: string): SecuritySolutionDescribeBlockFtrConfig => { + const testFile = fs.readFileSync(filePath, { encoding: 'utf8' }); + + const ast = parser.parse(testFile, { + sourceType: 'module', + plugins: ['typescript'], + }); + + const expressionStatement = _.find(ast.program.body, { + type: 'ExpressionStatement', + expression: { callee: { name: 'describe' } }, + }) as ExpressionStatement | undefined; + + const callExpression = expressionStatement?.expression; + // @ts-expect-error + if (expressionStatement?.expression?.arguments?.length === 3) { + // @ts-expect-error + const callExpressionArguments = _.find(callExpression?.arguments, [ + 'type', + 'ObjectExpression', + ]) as ObjectExpression | undefined; + + const callExpressionProperties = _.find(callExpressionArguments?.properties, [ + 'key.name', + 'env', + ]) as ObjectProperty[] | undefined; + // @ts-expect-error + const ftrConfig = _.find(callExpressionProperties?.value?.properties, [ + 'key.name', + 'ftrConfig', + ]); + + if (!ftrConfig) { + return {}; + } + + const ftrConfigCode = generate(ftrConfig.value, { jsonCompatibleStrings: true }).code; + + try { + // TODO:PT need to assess implication of using this approach to get the JSON back out + // eslint-disable-next-line no-new-func + const ftrConfigJson = new Function(`return ${ftrConfigCode}`)(); + return TestFileFtrConfigSchema.validate(ftrConfigJson); + } catch (err) { + throw new Error( + `Failed to parse 'ftrConfig' value defined in 'describe()' at ${filePath}. ${err.message}\nCode: ${ftrConfigCode}` + ); + } + } + + return {}; +}; + +const TestFileFtrConfigSchema = schema.object( + { + license: schema.maybe(schema.string()), + kbnServerArgs: schema.maybe(schema.arrayOf(schema.string())), + productTypes: schema.maybe( + // TODO:PT write validate function to ensure that only the correct combinations are used + schema.arrayOf( + schema.object({ + product_line: schema.oneOf([ + schema.literal('security'), + schema.literal('endpoint'), + schema.literal('cloud'), + ]), + + product_tier: schema.oneOf([schema.literal('essentials'), schema.literal('complete')]), + }) + ) + ), + }, + { defaultValue: {}, unknowns: 'forbid' } +); + +export type SecuritySolutionDescribeBlockFtrConfig = TypeOf; + +export const getOnBeforeHook = (module: unknown, beforeSpecFilePath: string): Function => { + if (typeof module !== 'object' || module === null) { + throw new Error( + `${chalk.bold( + beforeSpecFilePath + )} expected to explicitly export function member named "onBeforeHook"` + ); + } + + if (!('onBeforeHook' in module) || typeof module.onBeforeHook !== 'function') { + throw new Error( + `${chalk.bold('onBeforeHook')} exported from ${chalk.bold( + beforeSpecFilePath + )} is not a function` + ); + } + + return module.onBeforeHook; +}; + +/** + * Sets the default log level for `ToolingLog` instances created by `createToolingLogger()`: + * `x-pack/solutions/security/plugins/security_solution/common/endpoint/data_loaders/utils.ts:148`. + * It will first check the NodeJs `process.env` to see if an Environment Variable was set + * and then, if provided, it will use the value defined in the Cypress Config. file. + */ +export const setDefaultToolingLoggingLevel = (defaultFallbackLoggingLevel?: string) => { + const logLevel = + process.env.TOOLING_LOG_LEVEL || + process.env.CYPRESS_TOOLING_LOG_LEVEL || + defaultFallbackLoggingLevel || + ''; + + if (logLevel) { + createToolingLogger('info').info(`Setting tooling log level to [${logLevel}]`); + createToolingLogger.defaultLogLevel = logLevel as ToolingLogTextWriterConfig['level']; + } +}; diff --git a/x-pack/plugins/security_solution/scripts/run_playwright/playwright.ts b/x-pack/solutions/security/plugins/security_solution/scripts/run_playwright/playwright.ts similarity index 97% rename from x-pack/plugins/security_solution/scripts/run_playwright/playwright.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/run_playwright/playwright.ts index 3b51cf7c67a49..351a6572392ff 100644 --- a/x-pack/plugins/security_solution/scripts/run_playwright/playwright.ts +++ b/x-pack/solutions/security/plugins/security_solution/scripts/run_playwright/playwright.ts @@ -324,7 +324,7 @@ ${JSON.stringify(playwrightConfigFile, null, 2)} if (isOpen) { await execa.command( - `../../../node_modules/.bin/playwright test --config ${playwrightConfigFilePath} --ui --project ${project}`, + `../../../../../node_modules/.bin/playwright test --config ${playwrightConfigFilePath} --ui --project ${project}`, { env: { ...playwrightCustomEnv, @@ -334,7 +334,7 @@ ${JSON.stringify(playwrightConfigFile, null, 2)} ); } else { await execa.command( - `../../../node_modules/.bin/playwright test --config ${playwrightConfigFilePath} --project ${project} --grep @${project}`, + `../../../../../node_modules/.bin/playwright test --config ${playwrightConfigFilePath} --project ${project} --grep @${project}`, { env: { ...playwrightCustomEnv, diff --git a/x-pack/plugins/security_solution/scripts/run_playwright/start_playwright.js b/x-pack/solutions/security/plugins/security_solution/scripts/run_playwright/start_playwright.js similarity index 84% rename from x-pack/plugins/security_solution/scripts/run_playwright/start_playwright.js rename to x-pack/solutions/security/plugins/security_solution/scripts/run_playwright/start_playwright.js index e69f8aa37a89d..d1cf01a6669e5 100644 --- a/x-pack/plugins/security_solution/scripts/run_playwright/start_playwright.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/run_playwright/start_playwright.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./playwright').cli(); diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/siem_migration/draw_graphs.js b/x-pack/solutions/security/plugins/security_solution/scripts/siem_migration/draw_graphs.js new file mode 100644 index 0000000000000..9d6101cf5c8ae --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/siem_migration/draw_graphs.js @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../../../../src/setup_node_env'); +require('./draw_graphs_script').draw(); diff --git a/x-pack/plugins/security_solution/scripts/siem_migration/draw_graphs_script.ts b/x-pack/solutions/security/plugins/security_solution/scripts/siem_migration/draw_graphs_script.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/siem_migration/draw_graphs_script.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/siem_migration/draw_graphs_script.ts diff --git a/x-pack/plugins/security_solution/scripts/start_cypress_parallel.js b/x-pack/solutions/security/plugins/security_solution/scripts/start_cypress_parallel.js similarity index 85% rename from x-pack/plugins/security_solution/scripts/start_cypress_parallel.js rename to x-pack/solutions/security/plugins/security_solution/scripts/start_cypress_parallel.js index 7054754bc79c1..4bcb0fdeb2f0a 100644 --- a/x-pack/plugins/security_solution/scripts/start_cypress_parallel.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/start_cypress_parallel.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); require('./run_cypress/parallel').cli(); diff --git a/x-pack/plugins/security_solution/scripts/start_cypress_parallel_serverless.js b/x-pack/solutions/security/plugins/security_solution/scripts/start_cypress_parallel_serverless.js similarity index 86% rename from x-pack/plugins/security_solution/scripts/start_cypress_parallel_serverless.js rename to x-pack/solutions/security/plugins/security_solution/scripts/start_cypress_parallel_serverless.js index ab8850323536d..88b7ddbc1a828 100644 --- a/x-pack/plugins/security_solution/scripts/start_cypress_parallel_serverless.js +++ b/x-pack/solutions/security/plugins/security_solution/scripts/start_cypress_parallel_serverless.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); require('./run_cypress/parallel_serverless').cli(); diff --git a/x-pack/plugins/security_solution/scripts/storybook.js b/x-pack/solutions/security/plugins/security_solution/scripts/storybook.js similarity index 100% rename from x-pack/plugins/security_solution/scripts/storybook.js rename to x-pack/solutions/security/plugins/security_solution/scripts/storybook.js diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/telemetry/README.md b/x-pack/solutions/security/plugins/security_solution/scripts/telemetry/README.md new file mode 100644 index 0000000000000..a8a47ace8439e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/scripts/telemetry/README.md @@ -0,0 +1,38 @@ +## Telemetry data view generation script + +The purpose of the script is to map telemetry fields to runtime fields on the appropriate security solution ebt data views on the staging cluster. This can be used to automate the addition of new fields to the data views. + +### Events +- The browser ebt events come from `telemetryEvents` imported from `x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/telemetry_events` +- The server ebt events come from: + - `events` imported from `x-pack/plugins/elastic-assistant/server/lib/telemetry/event_based_telemetry` + - `telemetryEvents` imported from `x-pack/solutions/security/plugins/security_solution_serverless/server/telemetry/event_based_telemetry` + - `events` imported from `x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/event_based/events` + +If you have further events to be included in the data views, please update the script to include the event schema. + +### Usage + +1. Login with Vault (`vault login -method oidc`), ensure you have siem-team access. If you have never accessed Vault before, follow [these instructions](https://github.com/elastic/infra/blob/master/docs/vault/README.md) +2. cd into this directory +3. Run the script with the appropriate arguments. By default, the script will run for the `security-solution-ebt-kibana-browser` data view in the `securitysolution` space. If you want to run the script for the server data view, pass the `--telemetry_type` argument with the value `server`. + +```bash +# Run the script for the security-solution-ebt-kibana-browser data view +./build_ebt_data_view.sh + +# Run the script for the security-solution-ebt-server data view +./build_ebt_data_view.sh --telemetry_type=server +``` + +### Data view recovery + +If a security solution ebt data view is for some reason deleted, upload the saved object that is committed in this directory to the staging cluster. This will recreate the data view with the correct mappings. Then you can run this script to ensure any new fields get added. + +#### Why upload the saved object? Why not just run this script? + +There are some fields not covered by this script, at least for the security-solution-ebt-kibana-browser data view (ex: `day_of_week`). I'm not sure where they came from. In order to be on the safe side, the data view saved objects will be updated per minor release to ensure that all fields are covered. + +### Production data views + +This script manages the staging data views. To make updates to the production data views, export the saved objects from staging and upload them to production. diff --git a/x-pack/plugins/security_solution/scripts/telemetry/build_ebt_data_view.sh b/x-pack/solutions/security/plugins/security_solution/scripts/telemetry/build_ebt_data_view.sh similarity index 100% rename from x-pack/plugins/security_solution/scripts/telemetry/build_ebt_data_view.sh rename to x-pack/solutions/security/plugins/security_solution/scripts/telemetry/build_ebt_data_view.sh diff --git a/x-pack/plugins/security_solution/scripts/telemetry/build_ebt_data_view.ts b/x-pack/solutions/security/plugins/security_solution/scripts/telemetry/build_ebt_data_view.ts similarity index 100% rename from x-pack/plugins/security_solution/scripts/telemetry/build_ebt_data_view.ts rename to x-pack/solutions/security/plugins/security_solution/scripts/telemetry/build_ebt_data_view.ts diff --git a/x-pack/plugins/security_solution/scripts/telemetry/saved_objects/security_solution_ebt_kibana_browser.ndjson b/x-pack/solutions/security/plugins/security_solution/scripts/telemetry/saved_objects/security_solution_ebt_kibana_browser.ndjson similarity index 100% rename from x-pack/plugins/security_solution/scripts/telemetry/saved_objects/security_solution_ebt_kibana_browser.ndjson rename to x-pack/solutions/security/plugins/security_solution/scripts/telemetry/saved_objects/security_solution_ebt_kibana_browser.ndjson diff --git a/x-pack/plugins/security_solution/scripts/telemetry/saved_objects/security_solution_ebt_kibana_server.ndjson b/x-pack/solutions/security/plugins/security_solution/scripts/telemetry/saved_objects/security_solution_ebt_kibana_server.ndjson similarity index 100% rename from x-pack/plugins/security_solution/scripts/telemetry/saved_objects/security_solution_ebt_kibana_server.ndjson rename to x-pack/solutions/security/plugins/security_solution/scripts/telemetry/saved_objects/security_solution_ebt_kibana_server.ndjson diff --git a/x-pack/plugins/security_solution/server/__mocks__/action.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/__mocks__/action.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/__mocks__/action.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/__mocks__/action.mock.ts diff --git a/x-pack/plugins/security_solution/server/__mocks__/alert.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/__mocks__/alert.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/__mocks__/alert.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/__mocks__/alert.mock.ts diff --git a/x-pack/plugins/security_solution/server/__mocks__/core.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/__mocks__/core.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/__mocks__/core.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/__mocks__/core.mock.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/__mocks__/module_name_map.js b/x-pack/solutions/security/plugins/security_solution/server/__mocks__/module_name_map.js new file mode 100644 index 0000000000000..eb94f64d51305 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/__mocks__/module_name_map.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// See: https://github.com/elastic/kibana/issues/117255, this moduleNameMapper creates +// mocks to avoid memory leaks from kibana core. +module.exports = { + '^@kbn/core/server$': + '/x-pack/solutions/security/plugins/security_solution/server/__mocks__/core.mock.ts', + '^@kbn/task-manager-plugin/server$': + '/x-pack/solutions/security/plugins/security_solution/server/__mocks__/task_manager.mock.ts', + '^@kbn/alerting-plugin/server$': + '/x-pack/solutions/security/plugins/security_solution/server/__mocks__/alert.mock.ts', + '^@kbn/actions-plugin/server$': + '/x-pack/solutions/security/plugins/security_solution/server/__mocks__/action.mock.ts', +}; diff --git a/x-pack/plugins/security_solution/server/__mocks__/task_manager.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/__mocks__/task_manager.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/__mocks__/task_manager.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/__mocks__/task_manager.mock.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/assistant/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/assistant/jest.config.js new file mode 100644 index 0000000000000..a81358134a905 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/assistant/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/server/assistant'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server/assistant', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/assistant/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/assistant/tools/alert_counts/alert_counts_tool.test.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/alert_counts/alert_counts_tool.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/alert_counts/alert_counts_tool.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/alert_counts/alert_counts_tool.test.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/alert_counts/alert_counts_tool.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/alert_counts/alert_counts_tool.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/alert_counts/alert_counts_tool.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/alert_counts/alert_counts_tool.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/alert_counts/get_alert_counts_query.test.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/alert_counts/get_alert_counts_query.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/alert_counts/get_alert_counts_query.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/alert_counts/get_alert_counts_query.test.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/alert_counts/get_alert_counts_query.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/alert_counts/get_alert_counts_query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/alert_counts/get_alert_counts_query.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/alert_counts/get_alert_counts_query.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/errors.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/defend_insights/errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/errors.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/get_file_events_query.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.test.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/get_events/index.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/defend_insights/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/index.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/index.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/index.ts new file mode 100644 index 0000000000000..d09e8d8f8c8a7 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/index.ts @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PromptTemplate } from '@langchain/core/prompts'; +import { DynamicTool } from '@langchain/core/tools'; +import { LLMChain } from 'langchain/chains'; +import { OutputFixingParser } from 'langchain/output_parsers'; + +import type { AssistantTool, AssistantToolParams } from '@kbn/elastic-assistant-plugin/server'; +import type { + DefendInsight, + DefendInsightType, + DefendInsightsPostRequestBody, +} from '@kbn/elastic-assistant-common'; +import type { KibanaRequest } from '@kbn/core/server'; + +import { requestHasRequiredAnonymizationParams } from '@kbn/elastic-assistant-plugin/server/lib/langchain/helpers'; +import { DEFEND_INSIGHTS_TOOL_ID } from '@kbn/elastic-assistant-common'; + +import { APP_UI_ID } from '../../../../common'; +import { securityWorkflowInsightsService } from '../../../endpoint/services'; +import { getAnonymizedEvents } from './get_events'; +import { getDefendInsightsOutputParser } from './output_parsers'; +import { getDefendInsightsPrompt } from './prompts'; + +export const DEFEND_INSIGHTS_TOOL_DESCRIPTION = 'Call this for Elastic Defend insights.'; + +export interface DefendInsightsToolParams extends AssistantToolParams { + endpointIds: string[]; + insightType: DefendInsightType; + request: KibanaRequest; +} + +/** + * Returns a tool for generating Elastic Defend configuration insights + */ +export const DEFEND_INSIGHTS_TOOL: AssistantTool = Object.freeze({ + id: DEFEND_INSIGHTS_TOOL_ID, + name: 'defendInsightsTool', + description: DEFEND_INSIGHTS_TOOL_DESCRIPTION, + sourceRegister: APP_UI_ID, + + isSupported: (params: AssistantToolParams): boolean => { + const { llm, request } = params; + + return requestHasRequiredAnonymizationParams(request) && llm != null; + }, + + getTool(params: AssistantToolParams): DynamicTool | null { + if (!this.isSupported(params)) return null; + + const { + endpointIds, + insightType, + anonymizationFields, + esClient, + langChainTimeout, + llm, + onNewReplacements, + replacements, + request, + } = params as DefendInsightsToolParams; + + return new DynamicTool({ + name: 'DefendInsightsTool', + description: DEFEND_INSIGHTS_TOOL_DESCRIPTION, + func: async () => { + if (llm == null) { + throw new Error('LLM is required for Defend Insights'); + } + + const anonymizedEvents = await getAnonymizedEvents({ + endpointIds, + type: insightType, + anonymizationFields, + esClient, + onNewReplacements, + replacements, + }); + + const eventsContextCount = anonymizedEvents.length; + if (eventsContextCount === 0) { + return JSON.stringify({ eventsContextCount, insights: [] }, null, 2); + } + + const outputParser = getDefendInsightsOutputParser({ type: insightType }); + const outputFixingParser = OutputFixingParser.fromLLM(llm, outputParser); + + const prompt = new PromptTemplate({ + template: `Answer the user's question as best you can:\n{format_instructions}\n{query}`, + inputVariables: ['query'], + partialVariables: { + format_instructions: outputFixingParser.getFormatInstructions(), + }, + }); + + const answerFormattingChain = new LLMChain({ + llm, + prompt, + outputKey: 'records', + outputParser: outputFixingParser, + }); + + const result = await answerFormattingChain.call({ + query: getDefendInsightsPrompt({ + type: insightType, + events: anonymizedEvents, + }), + timeout: langChainTimeout, + }); + const insights: DefendInsight[] = result.records; + + await securityWorkflowInsightsService.createFromDefendInsights(insights, request); + + return JSON.stringify({ eventsContextCount, insights }, null, 2); + }, + tags: [DEFEND_INSIGHTS_TOOL_ID], + }); + }, +}); diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/output_parsers/incompatible_antivirus.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/output_parsers/incompatible_antivirus.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/defend_insights/output_parsers/incompatible_antivirus.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/output_parsers/incompatible_antivirus.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/output_parsers/index.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/output_parsers/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/defend_insights/output_parsers/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/output_parsers/index.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/prompts/incompatible_antivirus.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/prompts/incompatible_antivirus.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/defend_insights/prompts/incompatible_antivirus.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/prompts/incompatible_antivirus.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/prompts/index.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/prompts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/defend_insights/prompts/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/defend_insights/prompts/index.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/esql/common.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/esql/common.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/esql/common.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/esql/common.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/esql/nl_to_esql_tool.test.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/esql/nl_to_esql_tool.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/esql/nl_to_esql_tool.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/esql/nl_to_esql_tool.test.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/esql/nl_to_esql_tool.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/esql/nl_to_esql_tool.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/esql/nl_to_esql_tool.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/esql/nl_to_esql_tool.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/index.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/index.ts new file mode 100644 index 0000000000000..dd2aa8e54ebdf --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/index.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PRODUCT_DOCUMENTATION_TOOL } from './product_docs/product_documentation_tool'; +import { NL_TO_ESQL_TOOL } from './esql/nl_to_esql_tool'; +import { ALERT_COUNTS_TOOL } from './alert_counts/alert_counts_tool'; +import { OPEN_AND_ACKNOWLEDGED_ALERTS_TOOL } from './open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool'; +import { DEFEND_INSIGHTS_TOOL } from './defend_insights'; +import { KNOWLEDGE_BASE_RETRIEVAL_TOOL } from './knowledge_base/knowledge_base_retrieval_tool'; +import { KNOWLEDGE_BASE_WRITE_TOOL } from './knowledge_base/knowledge_base_write_tool'; +import { SECURITY_LABS_KNOWLEDGE_BASE_TOOL } from './security_labs/security_labs_tool'; + +// any new tool should also be added to telemetry schema in +// x-pack/solutions/security/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts +export const assistantTools = [ + ALERT_COUNTS_TOOL, + DEFEND_INSIGHTS_TOOL, + KNOWLEDGE_BASE_RETRIEVAL_TOOL, + KNOWLEDGE_BASE_WRITE_TOOL, + NL_TO_ESQL_TOOL, + OPEN_AND_ACKNOWLEDGED_ALERTS_TOOL, + PRODUCT_DOCUMENTATION_TOOL, + SECURITY_LABS_KNOWLEDGE_BASE_TOOL, +]; diff --git a/x-pack/plugins/security_solution/server/assistant/tools/knowledge_base/knowledge_base_retrieval_tool.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/knowledge_base/knowledge_base_retrieval_tool.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/knowledge_base/knowledge_base_retrieval_tool.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/knowledge_base/knowledge_base_retrieval_tool.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/knowledge_base/knowledge_base_write_tool.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/knowledge_base/knowledge_base_write_tool.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/knowledge_base/knowledge_base_write_tool.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/knowledge_base/knowledge_base_write_tool.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool.test.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool.test.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/open_and_acknowledged_alerts/open_and_acknowledged_alerts_tool.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/product_docs/product_documentation_tool.test.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/product_docs/product_documentation_tool.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/product_docs/product_documentation_tool.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/product_docs/product_documentation_tool.test.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/product_docs/product_documentation_tool.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/product_docs/product_documentation_tool.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/product_docs/product_documentation_tool.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/product_docs/product_documentation_tool.ts diff --git a/x-pack/plugins/security_solution/server/assistant/tools/security_labs/security_labs_tool.ts b/x-pack/solutions/security/plugins/security_solution/server/assistant/tools/security_labs/security_labs_tool.ts similarity index 100% rename from x-pack/plugins/security_solution/server/assistant/tools/security_labs/security_labs_tool.ts rename to x-pack/solutions/security/plugins/security_solution/server/assistant/tools/security_labs/security_labs_tool.ts diff --git a/x-pack/plugins/security_solution/server/client/client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/client/client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/client/client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/client/client.test.ts diff --git a/x-pack/plugins/security_solution/server/client/client.ts b/x-pack/solutions/security/plugins/security_solution/server/client/client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/client/client.ts rename to x-pack/solutions/security/plugins/security_solution/server/client/client.ts diff --git a/x-pack/plugins/security_solution/server/client/factory.test.ts b/x-pack/solutions/security/plugins/security_solution/server/client/factory.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/client/factory.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/client/factory.test.ts diff --git a/x-pack/plugins/security_solution/server/client/factory.ts b/x-pack/solutions/security/plugins/security_solution/server/client/factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/client/factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/client/factory.ts diff --git a/x-pack/plugins/security_solution/server/client/index.ts b/x-pack/solutions/security/plugins/security_solution/server/client/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/client/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/client/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/client/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/client/jest.config.js new file mode 100644 index 0000000000000..5b769a23ecb63 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/client/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/server/client'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server/client', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/client/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/config.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/config.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/config.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/config.mock.ts diff --git a/x-pack/plugins/security_solution/server/config.test.ts b/x-pack/solutions/security/plugins/security_solution/server/config.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/config.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/config.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/config.ts b/x-pack/solutions/security/plugins/security_solution/server/config.ts new file mode 100644 index 0000000000000..8b31a21f1e221 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/config.ts @@ -0,0 +1,229 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { TypeOf } from '@kbn/config-schema'; +import { schema } from '@kbn/config-schema'; +import type { PluginInitializerContext } from '@kbn/core/server'; +import { SIGNALS_INDEX_KEY, DEFAULT_SIGNALS_INDEX } from '../common/constants'; +import type { ExperimentalFeatures } from '../common/experimental_features'; +import { parseExperimentalConfigValue } from '../common/experimental_features'; +import { parseConfigSettings, type ConfigSettings } from '../common/config_settings'; + +/** + * Validates if the value provided is a valid duration for use with Task Manager (ex. 5m, 4s) + */ +const isValidTaskManagerDuration = (value: string): string | undefined => { + if (/^\d+[s,m]{1}$/.test(value)) { + return `Invalid duration [${value}]. Value must be a number followed by either 's' for seconds or 'm' for minutes `; + } +}; + +export const configSchema = schema.object({ + maxRuleImportExportSize: schema.number({ defaultValue: 10000 }), + maxRuleImportPayloadBytes: schema.number({ defaultValue: 10485760 }), + maxTimelineImportExportSize: schema.number({ defaultValue: 10000 }), + maxTimelineImportPayloadBytes: schema.number({ defaultValue: 10485760 }), + + /** + * This is used within the merge strategies: + * server/lib/detection_engine/rule_types/utils/source_fields_merging + * + * For determining which strategy for merging "fields" and "_source" together to get + * runtime fields, constant keywords, etc... + * + * "missingFields" (default) This will only merge fields that are missing from the _source and exist in the fields. + * "noFields" This will turn off all merging of runtime fields, constant keywords from fields. + * "allFields" This will merge and overwrite anything found within "fields" into "_source" before indexing the data. + */ + alertMergeStrategy: schema.oneOf( + [schema.literal('allFields'), schema.literal('missingFields'), schema.literal('noFields')], + { + defaultValue: 'missingFields', + } + ), + + /** + * This is used within the merge strategies: + * server/lib/detection_engine/rule_types/utils/source_fields_merging + * + * For determining if we need to ignore particular "fields" and not merge them with "_source" such as + * runtime fields, constant keywords, etc... + * + * This feature and functionality is mostly as "safety feature" meaning that we have had bugs in the past + * where something down the stack unexpectedly ends up in the fields API which causes documents to not + * be indexable. Rather than changing alertMergeStrategy to be "noFields", you can use this array to add + * any problematic values. + * + * You can use plain dotted notation strings such as "host.name" or a regular expression such as "/host\..+/" + */ + alertIgnoreFields: schema.arrayOf(schema.string(), { + defaultValue: [], + validate(ignoreFields) { + const errors = ignoreFields.flatMap((ignoreField, index) => { + if (ignoreField.startsWith('/') && ignoreField.endsWith('/')) { + try { + new RegExp(ignoreField.slice(1, -1)); + return []; + } catch (error) { + return [`"${error.message}" at array position ${index}`]; + } + } else { + return []; + } + }); + if (errors.length !== 0) { + return errors.join('. '); + } else { + return undefined; + } + }, + }), + [SIGNALS_INDEX_KEY]: schema.string({ defaultValue: DEFAULT_SIGNALS_INDEX }), + + /** + * For internal use. A list of string values (comma delimited) that will enable experimental + * type of functionality that is not yet released. Valid values for this settings need to + * be defined in: + * `x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts` + * under the `allowedExperimentalValues` object + * + * @example + * xpack.securitySolution.enableExperimental: + * - someCrazyFeature + * - someEvenCrazierFeature + */ + enableExperimental: schema.arrayOf(schema.string(), { + defaultValue: () => [], + }), + + /** + * Endpoint Artifacts Configuration: the interval between runs of the task that builds the + * artifacts and associated manifest. + */ + packagerTaskInterval: schema.string({ defaultValue: '60s' }), + + /** + * Endpoint Artifacts Configuration: timeout value for how long the task should run. + */ + packagerTaskTimeout: schema.string({ defaultValue: '20m' }), + + /** + * Artifacts Configuration for package policy update concurrency + */ + packagerTaskPackagePolicyUpdateBatchSize: schema.number({ defaultValue: 25, max: 50, min: 1 }), + + /** + * Complete External Response Actions task: interval duration + */ + completeExternalResponseActionsTaskInterval: schema.string({ + defaultValue: '60s', + validate: isValidTaskManagerDuration, + }), + + /** + * Complete External Response Actions task: Timeout value for how long the task should run + */ + completeExternalResponseActionsTaskTimeout: schema.string({ + defaultValue: '5m', + validate: isValidTaskManagerDuration, + }), + + /** + * For internal use. Specify which version of the Detection Rules fleet package to install + * when upgrading rules. If not provided, the latest compatible package will be installed, + * or if running from a dev environment or -SNAPSHOT build, the latest pre-release package + * will be used (if fleet is available or not within an airgapped environment). + * + * Note: This is for `upgrade only`, which occurs by means of the `useUpgradeSecurityPackages` + * hook when navigating to a Security Solution page. The package version specified in + * `fleet_packages.json` in project root will always be installed first on Kibana start if + * the package is not already installed. + */ + prebuiltRulesPackageVersion: schema.maybe(schema.string()), + enabled: schema.boolean({ defaultValue: true }), + enableUiSettingsValidations: schema.boolean({ defaultValue: false }), + + /** + * The Max number of Bytes allowed for the `upload` endpoint response action + */ + maxUploadResponseActionFileBytes: schema.number({ + defaultValue: 26214400, // 25MB, + max: 104857600, // 100MB, + }), + /** + * Defines the settings for a specific offering of the Security Solution app. + * They override the default values. + * @example + * xpack.securitySolution.offeringSettings: { + * "ILMEnabled": false, + * } + */ + offeringSettings: schema.recordOf(schema.string(), schema.boolean(), { + defaultValue: {}, + }), + entityAnalytics: schema.object({ + riskEngine: schema.object({ + alertSampleSizePerShard: schema.number({ defaultValue: 10_000 }), + }), + assetCriticality: schema.object({ + csvUpload: schema.object({ + errorRetries: schema.number({ defaultValue: 1 }), + maxBulkRequestBodySizeBytes: schema.number({ defaultValue: 100_000 }), // 100KB + }), + }), + entityStore: schema.object({ + syncDelay: schema.duration({ defaultValue: '60s' }), + frequency: schema.duration({ defaultValue: '60s' }), + developer: schema.object({ + pipelineDebugMode: schema.boolean({ defaultValue: false }), + }), + }), + }), +}); + +export type ConfigSchema = TypeOf; + +export type ConfigType = Omit & { + experimentalFeatures: ExperimentalFeatures; + settings: ConfigSettings; + enableUiSettingsValidations: boolean; +}; + +export const createConfig = (context: PluginInitializerContext): ConfigType => { + const pluginConfig = context.config.get>(); + const logger = context.logger.get('config'); + + const { invalid, features: experimentalFeatures } = parseExperimentalConfigValue( + pluginConfig.enableExperimental + ); + + if (invalid.length) { + logger.warn(`Unsupported "xpack.securitySolution.enableExperimental" values detected. +The following configuration values are no longer supported and should be removed from the kibana configuration file: + + xpack.securitySolution.enableExperimental: +${invalid.map((key) => ` - ${key}`).join('\n')} +`); + } + + const { invalid: invalidConfigSettings, settings } = parseConfigSettings( + pluginConfig.offeringSettings + ); + + if (invalidConfigSettings.length) { + logger.warn(`Unsupported "xpack.securitySolution.offeringSettings" values detected. +The following configuration values are no longer supported and should be removed from the kibana configuration file: +${invalidConfigSettings.map((key) => ` - ${key}`).join('\n')} +`); + } + + return { + ...pluginConfig, + experimentalFeatures, + settings, + }; +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/endpoint_app_context_services.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/endpoint_app_context_services.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/errors.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/errors.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/endpoint/jest.config.js new file mode 100644 index 0000000000000..558473988dc0b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/server/endpoint'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server/endpoint', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/endpoint/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/common.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/common.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/common.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/common.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/manifest.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/manifest.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/manifest.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/manifest.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/migrations.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/migrations.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/migrations.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/migrations.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/migrations.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/migrations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/migrations.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/migrations.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/task.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/task.mock.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/task.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/task.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/task.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/artifacts/task.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/metadata/check_metadata_transforms_task.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/check_metadata_transforms_task.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/metadata/check_metadata_transforms_task.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/check_metadata_transforms_task.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/metadata/check_metadata_transforms_task.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/check_metadata_transforms_task.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/metadata/check_metadata_transforms_task.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/check_metadata_transforms_task.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/metadata/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/metadata/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/metadata/task_state.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/task_state.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/metadata/task_state.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/task_state.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/metadata/task_state.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/task_state.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/metadata/task_state.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/metadata/task_state.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/policy/license_watch.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/protection_updates_note/saved_object_mappings.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/protection_updates_note/saved_object_mappings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/protection_updates_note/saved_object_mappings.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/protection_updates_note/saved_object_mappings.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task_runner.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task_runner.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task_runner.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task_runner.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task_runner.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task_runner.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task_runner.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/complete_external_actions_task_runner.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/response_actions/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/response_actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/response_actions/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/simple_mem_cache.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/simple_mem_cache.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/simple_mem_cache.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/simple_mem_cache.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/simple_mem_cache.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/simple_mem_cache.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/lib/simple_mem_cache.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/lib/simple_mem_cache.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/migrations/ensure_indices_exists_for_policies.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/ensure_indices_exists_for_policies.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/migrations/ensure_indices_exists_for_policies.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/ensure_indices_exists_for_policies.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/migrations/ensure_indices_exists_for_policies.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/ensure_indices_exists_for_policies.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/migrations/ensure_indices_exists_for_policies.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/ensure_indices_exists_for_policies.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/migrations/turn_off_agent_policy_features.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/turn_off_agent_policy_features.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/migrations/turn_off_agent_policy_features.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/turn_off_agent_policy_features.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/migrations/turn_off_agent_policy_features.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/turn_off_agent_policy_features.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/migrations/turn_off_agent_policy_features.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/turn_off_agent_policy_features.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/migrations/turn_off_policy_protections.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/turn_off_policy_protections.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/migrations/turn_off_policy_protections.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/turn_off_policy_protections.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/migrations/turn_off_policy_protections.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/turn_off_policy_protections.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/migrations/turn_off_policy_protections.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/migrations/turn_off_policy_protections.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/mocks/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/mocks/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/utils.mock.ts similarity index 93% rename from x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/utils.mock.ts index e4de97523a84a..d8d043c29ec67 100644 --- a/x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/utils.mock.ts @@ -6,7 +6,7 @@ */ import type { ElasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; -import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; +import type { OpenPointInTimeResponse, SearchResponse } from '@elastic/elasticsearch/lib/api/types'; import { v4 as uuidV4 } from 'uuid'; import { BaseDataGenerator } from '../../../common/endpoint/data_generators/base_data_generator'; @@ -45,14 +45,14 @@ export const applyEsClientSearchMock = ({ const pitResponse = { id: `mock:pit:${index}:${uuidV4()}` }; openedPitIds.add(pitResponse.id); - return pitResponse; + return pitResponse as OpenPointInTimeResponse; } if (priorOpenPointInTimeImplementation) { return priorOpenPointInTimeImplementation(...args); } - return { id: 'mock' }; + return { id: 'mock' } as OpenPointInTimeResponse; }); esClientMock.closePointInTime.mockImplementation(async (...args) => { diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/details.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/details.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/details.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/details.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/details.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/details.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/details.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/details.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/list.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/list_handler.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list_handler.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/list_handler.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list_handler.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/list_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/list_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/list_handler.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/state.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/state.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/state.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/state.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/state.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/state.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/state.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/state.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/status.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/status.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/status.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/status.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/status.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/status.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/status.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/actions/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/actions/utils.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/agent/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/agent/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/agent/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/agent/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/error_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/error_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/error_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/error_handler.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/handlers.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/handlers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/handlers.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/handlers.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/query_builders.fixtures.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/query_builders.fixtures.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/query_builders.fixtures.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/query_builders.fixtures.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/query_builders.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/query_builders.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/query_builders.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/query_builders.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/query_builders.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/query_builders.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/query_builders.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/query_builders.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/route_schema_test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/route_schema_test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/route_schema_test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/route_schema_test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/agent_status.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/agent_status.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/agent_status.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/agent_status.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/agent_status.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/agent_status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/agent_status.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/agent_status.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/query_strategies.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/query_strategies.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/query_strategies.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/query_strategies.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/test_support.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/test_support.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/test_support.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/test_support.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/policy/handlers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/handlers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/policy/handlers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/handlers.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/policy/handlers.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/handlers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/policy/handlers.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/handlers.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/policy/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/policy/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/policy/service.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/service.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/policy/service.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/service.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/policy/service.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/policy/service.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/policy/service.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/handlers.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/README.md b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/README.md rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/README.md diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_ancestry.png b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_ancestry.png similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_ancestry.png rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_ancestry.png diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_loop.png b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_loop.png similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_loop.png rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_loop.png diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_pagination.png b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_pagination.png similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_pagination.png rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_pagination.png diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_pagination_with_after.png b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_pagination_with_after.png similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_pagination_with_after.png rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_pagination_with_after.png diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_simple.png b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_simple.png similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_simple.png rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/docs/resolver_tree_children_simple.png diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/entity/handler.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/entity/handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/entity/handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/entity/handler.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/entity/utils/build_resolver_entity.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/entity/utils/build_resolver_entity.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/entity/utils/build_resolver_entity.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/entity/utils/build_resolver_entity.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/entity/utils/supported_schemas.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/entity/utils/supported_schemas.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/entity/utils/supported_schemas.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/entity/utils/supported_schemas.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/events.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/events.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/events.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/events.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/events.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/queries/events.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/events.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/queries/events.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/handler.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/handler.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/base.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/base.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/base.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/base.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/descendants.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/descendants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/descendants.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/descendants.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/lifecycle.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/lifecycle.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/lifecycle.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/lifecycle.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/stats.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/stats.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/stats.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/queries/stats.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/fetch.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/fetch.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/fetch.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/fetch.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/fetch.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/fetch.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/fetch.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/fetch.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/index.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/tree/utils/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/shared_filters.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/utils/shared_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/shared_filters.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/resolver/utils/shared_filters.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/suggestions/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/suggestions/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/suggestions/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/suggestions/index.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/suggestions/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/suggestions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/suggestions/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/suggestions/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/with_endpoint_authz.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/with_endpoint_authz.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/with_endpoint_authz.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/with_endpoint_authz.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/with_endpoint_authz.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/with_endpoint_authz.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/with_endpoint_authz.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/with_endpoint_authz.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts similarity index 96% rename from x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts index 6f928ee599b34..f5ca060eb2be3 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts @@ -66,8 +66,8 @@ describe('Get Insights Route Handler', () => { describe('with valid privileges', () => { it('should fetch insights and return them', async () => { const mockInsights = [ - { _source: { id: 1, name: 'Insight 1' } }, - { _source: { id: 2, name: 'Insight 2' } }, + { _id: 1, _source: { name: 'Insight 1' } }, + { _id: 2, _source: { name: 'Insight 2' } }, ]; fetchMock.mockResolvedValue(mockInsights); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts similarity index 94% rename from x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts index 910df9b593fad..9723ac3afe422 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts @@ -70,7 +70,9 @@ export const getInsightsRouteHandler = ( request.query as SearchParams ); - const body = insightsResponse.flatMap((insight) => insight._source || []); + const body = insightsResponse.flatMap((insight) => + insight._source ? { ...insight._source, id: insight._id } : [] + ); return response.ok({ body }); } catch (e) { diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/common.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/common.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/common.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/common.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/lists.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/lists.mock.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/manifest.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/manifest.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/manifest.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/manifest.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.mock.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/schemas/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/schemas/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/action_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/action_list.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/action_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/action_list.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/crowdstrike_actions_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/crowdstrike_actions_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/crowdstrike_actions_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/crowdstrike_actions_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/crowdstrike_actions_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/crowdstrike_actions_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/crowdstrike_actions_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/crowdstrike_actions_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/crowdstrike/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/endpoint_actions_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/endpoint_actions_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/endpoint_actions_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/endpoint_actions_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/endpoint_actions_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/endpoint_actions_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/endpoint_actions_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/endpoint_actions_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/endpoint/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/errors.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/errors.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/normalized_external_connector_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/normalized_external_connector_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/normalized_external_connector_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/normalized_external_connector_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/normalized_external_connector_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/normalized_external_connector_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/normalized_external_connector_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/normalized_external_connector_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/types.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/lib/types.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/types.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/types.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/constants.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/pending_actions_summary.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/pending_actions_summary.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/pending_actions_summary.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/pending_actions_summary.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_request_by_id.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_request_by_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_request_by_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_request_by_id.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_requests.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_requests.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_requests.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_requests.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_requests.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_requests.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_requests.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_requests.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_responses.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_responses.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_responses.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_responses.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_responses.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_responses.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_responses.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/fetch_action_responses.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/get_action_agent_type.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/get_action_agent_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/get_action_agent_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/get_action_agent_type.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/get_action_agent_type.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/get_action_agent_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/get_action_agent_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/get_action_agent_type.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/actions/utils/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/actions/utils/utils.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/crowdstrike_agent_status_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/crowdstrike_agent_status_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/crowdstrike_agent_status_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/crowdstrike_agent_status_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/crowdstrike_agent_status_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/crowdstrike_agent_status_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/crowdstrike_agent_status_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/crowdstrike_agent_status_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/types.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/crowdstrike/types.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.test.ts similarity index 97% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.test.ts index 821f7e6a43d42..15d5157cd9ede 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.test.ts @@ -53,7 +53,7 @@ describe('EndpointAgentStatusClient', () => { // FIXME:PT need to remove the need for this mock. It appears in several test files on our side. // Its currently needed due to the direct use of Fleet's `buildAgentStatusRuntimeField()` in - // `x-pack/plugins/security_solution/server/endpoint/routes/metadata/query_builders.ts:239` + // `x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/query_builders.ts:239` (soClient.find as jest.Mock).mockResolvedValue({ saved_objects: [] }); fleetAppContextService.start( fleetCreateAppContextStartContractMock({}, false, { diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/endpoint/endpoint_agent_status_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/errors.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/errors.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/get_agent_status_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/get_agent_status_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/get_agent_status_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/get_agent_status_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/get_agent_status_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/get_agent_status_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/get_agent_status_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/get_agent_status_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/lib/base_agent_status_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/lib/base_agent_status_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/lib/base_agent_status_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/lib/base_agent_status_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/lib/types.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/lib/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/lib/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/lib/types.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/sentinel_one/sentinel_one_agent_status_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/sentinel_one/sentinel_one_agent_status_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/sentinel_one/sentinel_one_agent_status_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/sentinel_one/sentinel_one_agent_status_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/clients/sentinel_one/types.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/sentinel_one/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/clients/sentinel_one/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/clients/sentinel_one/types.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/agent/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/agent/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/agent/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/errors.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/errors.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.mock.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/unified_manifes_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/unified_manifes_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/unified_manifes_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/unified_manifes_client.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/unified_manifest_client.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/unified_manifest_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/unified_manifest_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/unified_manifest_client.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts/utils.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts_exception_list/does_artifact_have_data.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts_exception_list/does_artifact_have_data.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts_exception_list/does_artifact_have_data.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts_exception_list/does_artifact_have_data.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts_exception_list/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts_exception_list/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/artifacts_exception_list/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/artifacts_exception_list/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/feature_keys.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/feature_usage/feature_keys.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/feature_usage/feature_keys.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/feature_usage/feature_keys.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/feature_usage/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/feature_usage/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/feature_usage/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/feature_usage/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/feature_usage/mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/feature_usage/service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/feature_usage/service.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/fleet/endpoint_fleet_services_factory.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/fleet/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/fleet/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/fleet/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/fleet/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/endpoint_metadata_service.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/metadata/errors.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/metadata/errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/errors.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/metadata/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/metadata/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/mocks.ts new file mode 100644 index 0000000000000..18c5f53f32c0c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/metadata/mocks.ts @@ -0,0 +1,189 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SavedObjectsServiceStart } from '@kbn/core/server'; +import { coreMock, type ElasticsearchClientMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import type { createPackagePolicyServiceMock } from '@kbn/fleet-plugin/server/mocks'; +import type { AgentPolicyServiceInterface, AgentService } from '@kbn/fleet-plugin/server'; +import type { Agent, GetAgentPoliciesResponseItem } from '@kbn/fleet-plugin/common'; +import type { + PolicyData, + UnitedAgentMetadataPersistedData, +} from '../../../../common/endpoint/types'; +import { FleetAgentPolicyGenerator } from '../../../../common/endpoint/data_generators/fleet_agent_policy_generator'; +import { FleetAgentGenerator } from '../../../../common/endpoint/data_generators/fleet_agent_generator'; +import { FleetPackagePolicyGenerator } from '../../../../common/endpoint/data_generators/fleet_package_policy_generator'; +import { applyEsClientSearchMock } from '../../mocks/utils.mock'; +import type { EndpointInternalFleetServicesInterfaceMocked } from '../fleet/endpoint_fleet_services_factory.mocks'; +import { createEndpointFleetServicesFactoryMock } from '../fleet/endpoint_fleet_services_factory.mocks'; +import { createMockEndpointAppContextServiceStartContract } from '../../mocks'; +import { EndpointMetadataService } from './endpoint_metadata_service'; +import { SavedObjectsClientFactory } from '../saved_objects'; +import { + METADATA_UNITED_INDEX, + metadataCurrentIndexPattern, +} from '../../../../common/endpoint/constants'; +import { EndpointMetadataGenerator } from '../../../../common/endpoint/data_generators/endpoint_metadata_generator'; + +/** + * Endpoint Metadata Service test context. Includes an instance of `EndpointMetadataService` along with the + * dependencies that were used to initialize that instance. + */ +export interface EndpointMetadataServiceTestContextMock { + savedObjectsStart: jest.Mocked; + agentService: jest.Mocked; + agentPolicyService: jest.Mocked; + packagePolicyService: ReturnType; + endpointMetadataService: EndpointMetadataService; + fleetServices: EndpointInternalFleetServicesInterfaceMocked; + logger: ReturnType['get']>; + esClient: ElasticsearchClientMock; + applyMetadataMocks: typeof applyMetadataMocks; +} + +export const createEndpointMetadataServiceTestContextMock = + (): EndpointMetadataServiceTestContextMock => { + const logger = loggingSystemMock.create().get(); + const { esClient, fleetStartServices, savedObjectsServiceStart } = + createMockEndpointAppContextServiceStartContract(); + const savedObjectsServiceFactory = new SavedObjectsClientFactory( + savedObjectsServiceStart, + coreMock.createSetup().http + ); + const fleetServices = createEndpointFleetServicesFactoryMock({ + fleetDependencies: fleetStartServices, + savedObjects: savedObjectsServiceFactory, + }).service.asInternalUser(); + const endpointMetadataService = new EndpointMetadataService( + esClient, + savedObjectsServiceFactory.createInternalScopedSoClient({ readonly: false }), + fleetServices, + logger + ); + + fleetServices.packagePolicy.list.mockImplementation(async (_, options) => { + return { + items: [], + total: 0, + page: options.page ?? 1, + perPage: options.perPage ?? 10, + }; + }); + + return { + savedObjectsStart: savedObjectsServiceStart, + agentService: { + asInternalUser: fleetServices.agent, + asScoped: jest.fn().mockReturnValue(fleetServices.agent), + asInternalScopedUser: jest.fn().mockReturnValue(fleetServices.agent), + }, + agentPolicyService: fleetServices.agentPolicy, + packagePolicyService: fleetServices.packagePolicy, + logger, + endpointMetadataService, + fleetServices, + applyMetadataMocks, + esClient: esClient as ElasticsearchClientMock, + }; + }; + +export interface ApplyMetadataMocksResponse { + unitedMetadata: UnitedAgentMetadataPersistedData; + integrationPolicies: PolicyData[]; + agentPolicies: GetAgentPoliciesResponseItem[]; + agents: Agent[]; +} + +/** + * Apply mocks to the various services used to retrieve metadata via the EndpointMetadataService. + * Returns the data that is used in the mocks, thus allowing manipulation of it before running the + * test. + * @param esClientMock + * @param fleetServices + */ +export const applyMetadataMocks = ( + esClientMock: ElasticsearchClientMock, + fleetServices: EndpointInternalFleetServicesInterfaceMocked +): ApplyMetadataMocksResponse => { + const metadataGenerator = new EndpointMetadataGenerator('seed'); + const fleetIntegrationPolicyGenerator = new FleetPackagePolicyGenerator('seed'); + const fleetAgentGenerator = new FleetAgentGenerator('seed'); + const fleetAgentPolicyGenerator = new FleetAgentPolicyGenerator('seed'); + + const unitedMetadata = metadataGenerator.generateUnitedAgentMetadata(); + const integrationPolicies = [ + fleetIntegrationPolicyGenerator.generateEndpointPackagePolicy({ + id: unitedMetadata.united.endpoint.Endpoint.policy.applied.id, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + policy_ids: [unitedMetadata.united.agent.policy_id!], + }), + ]; + const agentPolicies = [ + fleetAgentPolicyGenerator.generate({ id: unitedMetadata.united.agent.policy_id }), + ]; + const agents = [ + fleetAgentGenerator.generate({ + id: unitedMetadata.agent.id, + policy_id: agentPolicies[0].id, + }), + ]; + + applyEsClientSearchMock({ + esClientMock, + index: METADATA_UNITED_INDEX, + response: metadataGenerator.toEsSearchResponse([ + metadataGenerator.toEsSearchHit(unitedMetadata, METADATA_UNITED_INDEX), + ]), + }); + + applyEsClientSearchMock({ + esClientMock, + index: metadataCurrentIndexPattern, + response: metadataGenerator.toEsSearchResponse([ + metadataGenerator.toEsSearchHit(unitedMetadata.united.endpoint, metadataCurrentIndexPattern), + ]), + }); + + fleetServices.packagePolicy.list.mockImplementation(async (_, { page = 1 }) => { + // FYI: need to implement returning an empty list of items after page 1 due to how + // `getAllEndpointPackagePolicies()` is currently looping through all policies + // See `x-pack/solutions/security/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.ts` + return { + items: page === 1 ? integrationPolicies : [], + page: 1, + total: 1, + perPage: 20, + }; + }); + + fleetServices.packagePolicy.get.mockImplementation(async () => { + return integrationPolicies[0]; + }); + + fleetServices.agentPolicy.getByIds.mockImplementation(async () => { + return agentPolicies; + }); + + fleetServices.agentPolicy.get.mockImplementation(async () => { + return agentPolicies[0]; + }); + + fleetServices.agent.getByIds.mockImplementation(async () => { + return agents; + }); + + fleetServices.agent.getAgent.mockImplementation(async () => { + return agents[0]; + }); + + return { + unitedMetadata, + integrationPolicies, + agentPolicies, + agents, + }; +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/saved_objects/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/saved_objects/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/saved_objects/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/saved_objects/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/saved_objects/saved_objects_client_factory.mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/saved_objects/saved_objects_client_factory.mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/saved_objects/saved_objects_client_factory.mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/saved_objects/saved_objects_client_factory.mocks.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/saved_objects/saved_objects_client_factory.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/saved_objects/saved_objects_client_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/saved_objects/saved_objects_client_factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/saved_objects/saved_objects_client_factory.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.test.ts new file mode 100644 index 0000000000000..41b833be05fc0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.test.ts @@ -0,0 +1,133 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment'; + +import type { KibanaRequest } from '@kbn/core/server'; +import type { DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; + +import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; + +import type { BuildWorkflowInsightParams } from '.'; + +import { + Category, + SourceType, + TargetType, + ActionType, +} from '../../../../../common/endpoint/types/workflow_insights'; +import { createMockEndpointAppContext } from '../../../mocks'; +import type { EndpointMetadataService } from '../../metadata'; +import { groupEndpointIdsByOS } from '../helpers'; +import { buildIncompatibleAntivirusWorkflowInsights } from './incompatible_antivirus'; + +jest.mock('../helpers', () => ({ + groupEndpointIdsByOS: jest.fn(), +})); + +describe('buildIncompatibleAntivirusWorkflowInsights', () => { + let params: BuildWorkflowInsightParams; + + beforeEach(() => { + const mockEndpointAppContextService = createMockEndpointAppContext().service; + mockEndpointAppContextService.getEndpointMetadataService = jest.fn().mockReturnValue({ + getMetadataForEndpoints: jest.fn(), + }); + const endpointMetadataService = + mockEndpointAppContextService.getEndpointMetadataService() as jest.Mocked; + + params = { + defendInsights: [ + { + group: 'AVGAntivirus', + events: [ + { + id: 'lqw5opMB9Ke6SNgnxRSZ', + endpointId: 'f6e2f338-6fb7-4c85-9c23-d20e9f96a051', + value: '/Applications/AVGAntivirus.app/Contents/Backend/services/com.avg.activity', + }, + ], + }, + ], + request: { + body: { + insightType: 'incompatible_antivirus', + endpointIds: ['endpoint-1'], + apiConfig: { + connectorId: 'connector-id-1', + actionTypeId: 'action-type-id-1', + model: 'model-1', + }, + anonymizationFields: [], + subAction: 'invokeAI', + }, + } as unknown as KibanaRequest, + endpointMetadataService, + }; + + (groupEndpointIdsByOS as jest.Mock).mockResolvedValue({ + windows: ['endpoint-1'], + }); + }); + + it('should correctly build workflow insights', async () => { + const result = await buildIncompatibleAntivirusWorkflowInsights(params); + + expect(result).toEqual([ + expect.objectContaining({ + '@timestamp': expect.any(moment), + message: 'Incompatible antiviruses detected', + category: Category.Endpoint, + type: 'incompatible_antivirus', + source: { + type: SourceType.LlmConnector, + id: 'connector-id-1', + data_range_start: expect.any(moment), + data_range_end: expect.any(moment), + }, + target: { + type: TargetType.Endpoint, + ids: ['endpoint-1'], + }, + action: { + type: ActionType.Refreshed, + timestamp: expect.any(moment), + }, + value: 'AVGAntivirus', + remediation: { + exception_list_items: [ + { + list_id: ENDPOINT_ARTIFACT_LISTS.trustedApps.id, + name: 'AVGAntivirus', + description: 'Suggested by Security Workflow Insights', + entries: [ + { + field: 'process.executable.caseless', + operator: 'included', + type: 'match', + value: + '/Applications/AVGAntivirus.app/Contents/Backend/services/com.avg.activity', + }, + ], + tags: ['policy:all'], + os_types: ['windows'], + }, + ], + }, + metadata: { + notes: { + llm_model: 'model-1', + }, + }, + }), + ]); + expect(groupEndpointIdsByOS).toHaveBeenCalledWith( + ['endpoint-1'], + params.endpointMetadataService + ); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.ts new file mode 100644 index 0000000000000..64485995c578d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment'; + +import type { DefendInsight } from '@kbn/elastic-assistant-common'; + +import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; + +import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; +import type { SupportedHostOsType } from '../../../../../common/endpoint/constants'; +import type { BuildWorkflowInsightParams } from '.'; + +import { + ActionType, + Category, + SourceType, + TargetType, +} from '../../../../../common/endpoint/types/workflow_insights'; +import { groupEndpointIdsByOS } from '../helpers'; + +export async function buildIncompatibleAntivirusWorkflowInsights( + params: BuildWorkflowInsightParams +): Promise { + const currentTime = moment(); + const { defendInsights, request, endpointMetadataService } = params; + const { insightType, endpointIds, apiConfig } = request.body; + + const osEndpointIdsMap = await groupEndpointIdsByOS(endpointIds, endpointMetadataService); + return defendInsights.flatMap((defendInsight: DefendInsight) => { + const filePaths = Array.from(new Set((defendInsight.events ?? []).map((event) => event.value))); + + return Object.keys(osEndpointIdsMap).flatMap((os) => + filePaths.map((filePath) => ({ + '@timestamp': currentTime, + // TODO add i18n support + message: 'Incompatible antiviruses detected', + category: Category.Endpoint, + type: insightType, + source: { + type: SourceType.LlmConnector, + id: apiConfig.connectorId, + // TODO use actual time range when we add support + data_range_start: currentTime, + data_range_end: currentTime.clone().add(24, 'hours'), + }, + target: { + type: TargetType.Endpoint, + ids: endpointIds, + }, + action: { + type: ActionType.Refreshed, + timestamp: currentTime, + }, + value: defendInsight.group, + remediation: { + exception_list_items: [ + { + list_id: ENDPOINT_ARTIFACT_LISTS.trustedApps.id, + name: defendInsight.group, + description: 'Suggested by Security Workflow Insights', + entries: [ + { + field: 'process.executable.caseless', + operator: 'included', + type: 'match', + value: filePath, + }, + ], + // TODO add per policy support + tags: ['policy:all'], + os_types: [os as SupportedHostOsType], + }, + ], + }, + metadata: { + notes: { + llm_model: apiConfig.model ?? '', + }, + }, + })) + ); + }); +} diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/index.ts new file mode 100644 index 0000000000000..1f00d152f1f12 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/builders/index.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { KibanaRequest } from '@kbn/core/server'; + +import type { DefendInsight, DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; + +import { DefendInsightType } from '@kbn/elastic-assistant-common'; + +import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; + +import { InvalidDefendInsightTypeError } from '../../../../assistant/tools/defend_insights/errors'; +import type { EndpointMetadataService } from '../../metadata'; +import { buildIncompatibleAntivirusWorkflowInsights } from './incompatible_antivirus'; + +export interface BuildWorkflowInsightParams { + defendInsights: DefendInsight[]; + request: KibanaRequest; + endpointMetadataService: EndpointMetadataService; +} + +export function buildWorkflowInsights( + params: BuildWorkflowInsightParams +): Promise { + if (params.request.body.insightType === DefendInsightType.Enum.incompatible_antivirus) { + return buildIncompatibleAntivirusWorkflowInsights(params); + } + + throw new InvalidDefendInsightTypeError(); +} diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/constants.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/errors.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/errors.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts similarity index 99% rename from x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts index 32cc845ab00d2..98dce60b73c89 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts @@ -66,7 +66,7 @@ export const securityWorkflowInsightsFieldMap: FieldMap = { required: true, }, // endpoint, policy, etc - 'target.id': { + 'target.ids': { type: 'keyword', array: true, required: true, diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts new file mode 100644 index 0000000000000..50184413063cf --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts @@ -0,0 +1,265 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment'; +import { merge } from 'lodash'; + +import type { ElasticsearchClient } from '@kbn/core/server'; + +import { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; +import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; +import { kibanaPackageJson } from '@kbn/repo-info'; +import { DefendInsightType } from '@kbn/elastic-assistant-common'; + +import type { HostMetadata } from '../../../../common/endpoint/types'; +import type { + SearchParams, + SecurityWorkflowInsight, +} from '../../../../common/endpoint/types/workflow_insights'; + +import { + ActionType, + Category, + SourceType, + TargetType, +} from '../../../../common/endpoint/types/workflow_insights'; +import type { EndpointMetadataService } from '../metadata'; +import { + buildEsQueryParams, + createDatastream, + createPipeline, + generateInsightId, + groupEndpointIdsByOS, +} from './helpers'; +import { + COMPONENT_TEMPLATE_NAME, + DATA_STREAM_PREFIX, + INDEX_TEMPLATE_NAME, + INGEST_PIPELINE_NAME, + TOTAL_FIELDS_LIMIT, +} from './constants'; +import { securityWorkflowInsightsFieldMap } from './field_map_configurations'; +import { createMockEndpointAppContext } from '../../mocks'; + +jest.mock('@kbn/data-stream-adapter', () => ({ + DataStreamSpacesAdapter: jest.fn().mockImplementation(() => ({ + setComponentTemplate: jest.fn(), + setIndexTemplate: jest.fn(), + })), +})); + +function getDefaultInsight(overrides?: Partial): SecurityWorkflowInsight { + const defaultInsight = { + '@timestamp': moment(), + message: 'This is a test message', + category: Category.Endpoint, + type: DefendInsightType.Enum.incompatible_antivirus, + source: { + type: SourceType.LlmConnector, + id: 'openai-connector-id', + data_range_start: moment(), + data_range_end: moment(), + }, + target: { + type: TargetType.Endpoint, + ids: ['endpoint-1', 'endpoint-2'], + }, + action: { + type: ActionType.Refreshed, + timestamp: moment(), + }, + value: 'unique-key', + remediation: { + exception_list_items: [ + { + list_id: 'example-list-id', + name: 'Example List Name', + description: 'Example description', + entries: [ + { + field: 'example-field', + operator: 'included', + type: 'match', + value: 'example-value', + }, + ], + tags: ['example-tag'], + os_types: ['windows', 'linux'], + }, + ], + }, + metadata: { + notes: { + key1: 'value1', + key2: 'value2', + }, + message_variables: ['variable1', 'variable2'], + }, + }; + return merge(defaultInsight, overrides); +} + +describe('helpers', () => { + describe('createDatastream', () => { + it('should create a DataStreamSpacesAdapter with the correct configuration', () => { + const kibanaVersion = kibanaPackageJson.version; + const ds = createDatastream(kibanaVersion); + + expect(DataStreamSpacesAdapter).toHaveBeenCalledTimes(1); + expect(DataStreamSpacesAdapter).toHaveBeenCalledWith(DATA_STREAM_PREFIX, { + kibanaVersion, + totalFieldsLimit: TOTAL_FIELDS_LIMIT, + }); + expect(ds.setComponentTemplate).toHaveBeenCalledTimes(1); + expect(ds.setComponentTemplate).toHaveBeenCalledWith({ + name: COMPONENT_TEMPLATE_NAME, + fieldMap: securityWorkflowInsightsFieldMap, + }); + expect(ds.setIndexTemplate).toHaveBeenCalledTimes(1); + expect(ds.setIndexTemplate).toHaveBeenCalledWith({ + name: INDEX_TEMPLATE_NAME, + componentTemplateRefs: [COMPONENT_TEMPLATE_NAME], + template: { + settings: { + default_pipeline: INGEST_PIPELINE_NAME, + }, + }, + hidden: true, + }); + }); + }); + + describe('createPipeline', () => { + let esClient: ElasticsearchClient; + + beforeEach(() => { + esClient = elasticsearchServiceMock.createElasticsearchClient(); + }); + + it('should create an ingest pipeline with the correct configuration', async () => { + await createPipeline(esClient); + + expect(esClient.ingest.putPipeline).toHaveBeenCalledTimes(1); + expect(esClient.ingest.putPipeline).toHaveBeenCalledWith({ + id: INGEST_PIPELINE_NAME, + processors: [], + _meta: { + managed: true, + }, + }); + }); + }); + + describe('buildEsQueryParams', () => { + it('should build query with valid keys', () => { + const searchParams: SearchParams = { + ids: ['id1', 'id2'], + categories: [Category.Endpoint], + types: ['incompatible_antivirus'], + sourceTypes: [SourceType.LlmConnector], + sourceIds: ['source1'], + targetIds: ['target1'], + actionTypes: [ActionType.Refreshed], + }; + const result = buildEsQueryParams(searchParams); + expect(result).toEqual([ + { terms: { _id: ['id1', 'id2'] } }, + { terms: { categories: ['endpoint'] } }, + { terms: { types: ['incompatible_antivirus'] } }, + { nested: { path: 'source', query: { terms: { 'source.type': ['llm-connector'] } } } }, + { nested: { path: 'source', query: { terms: { 'source.id': ['source1'] } } } }, + { nested: { path: 'target', query: { terms: { 'target.ids': ['target1'] } } } }, + { nested: { path: 'action', query: { terms: { 'action.type': ['refreshed'] } } } }, + ]); + }); + + it('should ignore invalid keys', () => { + const searchParams = { + invalidKey: 'invalidValue', + ids: ['id1'], + } as unknown as SearchParams; + const result = buildEsQueryParams(searchParams); + expect(result).toEqual([{ terms: { _id: ['id1'] } }]); + }); + + it('should handle empty searchParams', () => { + const searchParams: SearchParams = {}; + const result = buildEsQueryParams(searchParams); + expect(result).toEqual([]); + }); + + it('should handle nested query for actionTypes', () => { + const searchParams: SearchParams = { + actionTypes: [ActionType.Refreshed], + }; + const result = buildEsQueryParams(searchParams); + expect(result).toEqual([ + { nested: { path: 'action', query: { terms: { 'action.type': ['refreshed'] } } } }, + ]); + }); + + it('should handle nested query for targetIds', () => { + const searchParams: SearchParams = { + targetIds: ['target1'], + }; + const result = buildEsQueryParams(searchParams); + expect(result).toEqual([ + { nested: { path: 'target', query: { terms: { 'target.ids': ['target1'] } } } }, + ]); + }); + }); + + describe('groupEndpointIdsByOS', () => { + let endpointMetadataService: jest.Mocked; + + beforeEach(() => { + const mockEndpointAppContextService = createMockEndpointAppContext().service; + mockEndpointAppContextService.getEndpointMetadataService = jest.fn().mockReturnValue({ + getMetadataForEndpoints: jest.fn(), + }); + endpointMetadataService = + mockEndpointAppContextService.getEndpointMetadataService() as jest.Mocked; + }); + + it('should correctly group endpoint IDs by OS type', async () => { + const endpointIds = ['endpoint1', 'endpoint2', 'endpoint3']; + const metadata = [ + { + host: { os: { name: 'Windows' } }, + agent: { id: 'agent1' }, + }, + { + host: { os: { name: 'Linux' } }, + agent: { id: 'agent2' }, + }, + { + host: { os: { name: 'MacOS' } }, + agent: { id: 'agent3' }, + }, + ] as HostMetadata[]; + + endpointMetadataService.getMetadataForEndpoints.mockResolvedValue(metadata); + + const result = await groupEndpointIdsByOS(endpointIds, endpointMetadataService); + + expect(result).toEqual({ + windows: ['agent1'], + linux: ['agent2'], + macos: ['agent3'], + }); + }); + }); + + describe('generateInsightId', () => { + it('should generate the correct hashed id', () => { + const insight = getDefaultInsight(); + const result = generateInsightId(insight); + const expectedHash = '6b1a7a9625decbf899db4fbf78105a0eff9ef98e3f2dadc2781d59996b55445e'; + expect(result).toBe(expectedHash); + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts new file mode 100644 index 0000000000000..f7b477a17018d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts @@ -0,0 +1,151 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createHash } from 'crypto'; +import { get as _get } from 'lodash'; + +import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; +import type { ElasticsearchClient } from '@kbn/core/server'; + +import { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; + +import type { + SearchParams, + SecurityWorkflowInsight, +} from '../../../../common/endpoint/types/workflow_insights'; +import type { SupportedHostOsType } from '../../../../common/endpoint/constants'; + +import type { EndpointMetadataService } from '../metadata'; +import { + COMPONENT_TEMPLATE_NAME, + DATA_STREAM_PREFIX, + INDEX_TEMPLATE_NAME, + INGEST_PIPELINE_NAME, + TOTAL_FIELDS_LIMIT, +} from './constants'; +import { securityWorkflowInsightsFieldMap } from './field_map_configurations'; + +export function createDatastream(kibanaVersion: string): DataStreamSpacesAdapter { + const ds = new DataStreamSpacesAdapter(DATA_STREAM_PREFIX, { + kibanaVersion, + totalFieldsLimit: TOTAL_FIELDS_LIMIT, + }); + ds.setComponentTemplate({ + name: COMPONENT_TEMPLATE_NAME, + fieldMap: securityWorkflowInsightsFieldMap, + }); + ds.setIndexTemplate({ + name: INDEX_TEMPLATE_NAME, + componentTemplateRefs: [COMPONENT_TEMPLATE_NAME], + template: { + settings: { + default_pipeline: INGEST_PIPELINE_NAME, + }, + }, + hidden: true, + }); + return ds; +} + +export async function createPipeline(esClient: ElasticsearchClient): Promise { + const response = await esClient.ingest.putPipeline({ + id: INGEST_PIPELINE_NAME, + processors: [ + // requires @elastic/elasticsearch 8.16.0 + // { + // fingerprint: { + // fields: ['type', 'category', 'value', 'target.type', 'target.id'], + // target_field: '_id', + // method: 'SHA-256', + // if: 'ctx._id == null', + // }, + // }, + ], + _meta: { + managed: true, + }, + }); + return response.acknowledged; +} + +const validKeys = new Set([ + 'ids', + 'categories', + 'types', + 'sourceTypes', + 'sourceIds', + 'targetTypes', + 'targetIds', + 'actionTypes', +]); + +const paramFieldMap = { + ids: '_id', + sourceTypes: 'source.type', + sourceIds: 'source.id', + targetTypes: 'target.type', + targetIds: 'target.ids', + actionTypes: 'action.type', +}; +const nestedKeys = new Set(['source', 'target', 'action']); +export function buildEsQueryParams(searchParams: SearchParams): QueryDslQueryContainer[] { + return Object.entries(searchParams).reduce((acc: object[], [k, v]) => { + if (!validKeys.has(k)) { + return acc; + } + + const paramKey = _get(paramFieldMap, k, k); + + const topKey = paramKey.split('.')[0]; + if (nestedKeys.has(topKey)) { + const nestedQuery = { + nested: { + path: topKey, + query: { + terms: { [paramKey]: v }, + }, + }, + }; + return [...acc, nestedQuery]; + } + + const next = { terms: { [paramKey]: v } }; + return [...acc, next]; + }, []); +} + +export async function groupEndpointIdsByOS( + endpointIds: string[], + endpointMetadataService: EndpointMetadataService +): Promise> { + const metadata = await endpointMetadataService.getMetadataForEndpoints(endpointIds); + return metadata.reduce>((acc, m) => { + const os = m.host.os.name.toLowerCase() as SupportedHostOsType; + if (!acc[os]) { + acc[os] = []; + } + + acc[os].push(m.agent.id); + + return acc; + }, {}); +} + +export function generateInsightId(insight: SecurityWorkflowInsight): string { + const { type, category, value, target } = insight; + const targetType = target.type; + const targetIds = target.ids.join(','); + + const hash = createHash('sha256'); + hash.update(type); + hash.update(category); + hash.update(value); + hash.update(targetType); + hash.update(targetIds); + + return hash.digest('hex'); +} diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts new file mode 100644 index 0000000000000..849c6431a09a8 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts @@ -0,0 +1,445 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { merge, cloneDeep } from 'lodash'; +import moment from 'moment'; +import { ReplaySubject } from 'rxjs'; + +import type { ElasticsearchClient, KibanaRequest, Logger } from '@kbn/core/server'; +import type { DefendInsight, DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; +import type { SearchHit, UpdateResponse } from '@elastic/elasticsearch/lib/api/types'; + +import { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; +import { DefendInsightType } from '@kbn/elastic-assistant-common'; +import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; +import { kibanaPackageJson } from '@kbn/repo-info'; +import { loggerMock } from '@kbn/logging-mocks'; + +import type { + SearchParams, + SecurityWorkflowInsight, +} from '../../../../common/endpoint/types/workflow_insights'; +import type { EndpointAppContextService } from '../../endpoint_app_context_services'; + +import { + Category, + SourceType, + TargetType, + ActionType, +} from '../../../../common/endpoint/types/workflow_insights'; +import { createMockEndpointAppContext } from '../../mocks'; +import { createDatastream, createPipeline, generateInsightId } from './helpers'; +import { securityWorkflowInsightsService } from '.'; +import { DATA_STREAM_NAME } from './constants'; +import { buildWorkflowInsights } from './builders'; + +jest.mock('./helpers', () => { + const original = jest.requireActual('./helpers'); + return { + ...original, + createDatastream: jest.fn(), + createPipeline: jest.fn(), + }; +}); + +jest.mock('./builders', () => { + const original = jest.requireActual('./builders'); + return { + ...original, + buildWorkflowInsights: jest.fn(), + }; +}); + +function getDefaultInsight(overrides?: Partial): SecurityWorkflowInsight { + const defaultInsight = { + '@timestamp': moment(), + message: 'This is a test message', + category: Category.Endpoint, + type: DefendInsightType.Enum.incompatible_antivirus, + source: { + type: SourceType.LlmConnector, + id: 'openai-connector-id', + data_range_start: moment(), + data_range_end: moment(), + }, + target: { + type: TargetType.Endpoint, + ids: ['endpoint-1', 'endpoint-2'], + }, + action: { + type: ActionType.Refreshed, + timestamp: moment(), + }, + value: 'unique-key', + remediation: { + exception_list_items: [ + { + list_id: 'example-list-id', + name: 'Example List Name', + description: 'Example description', + entries: [ + { + field: 'example-field', + operator: 'included', + type: 'match', + value: 'example-value', + }, + ], + tags: ['example-tag'], + os_types: ['windows', 'linux'], + }, + ], + }, + metadata: { + notes: { + key1: 'value1', + key2: 'value2', + }, + message_variables: ['variable1', 'variable2'], + }, + }; + return merge(defaultInsight, overrides); +} + +describe('SecurityWorkflowInsightsService', () => { + let logger: Logger; + let esClient: ElasticsearchClient; + let mockEndpointAppContextService: jest.Mocked; + let isInitializedSpy: jest.SpyInstance, [], boolean>; + + beforeEach(() => { + logger = loggerMock.create(); + esClient = elasticsearchServiceMock.createElasticsearchClient(); + + mockEndpointAppContextService = createMockEndpointAppContext() + .service as jest.Mocked; + + isInitializedSpy = jest + .spyOn(securityWorkflowInsightsService, 'isInitialized', 'get') + .mockResolvedValueOnce([undefined, undefined]); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + describe('setup', () => { + it('should set up the data stream', () => { + const createDatastreamMock = createDatastream as jest.Mock; + createDatastreamMock.mockReturnValueOnce( + new DataStreamSpacesAdapter(DATA_STREAM_NAME, { + kibanaVersion: kibanaPackageJson.version, + }) + ); + + securityWorkflowInsightsService.setup({ + kibanaVersion: kibanaPackageJson.version, + logger, + isFeatureEnabled: true, + endpointContext: mockEndpointAppContextService, + }); + + expect(createDatastreamMock).toHaveBeenCalledTimes(1); + expect(createDatastreamMock).toHaveBeenCalledWith(kibanaPackageJson.version); + }); + + it('should log a warning if createDatastream throws an error', () => { + const createDatastreamMock = createDatastream as jest.Mock; + createDatastreamMock.mockImplementation(() => { + throw new Error('test error'); + }); + + securityWorkflowInsightsService.setup({ + kibanaVersion: kibanaPackageJson.version, + logger, + isFeatureEnabled: true, + endpointContext: mockEndpointAppContextService, + }); + + expect(logger.warn).toHaveBeenCalledTimes(1); + expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('test error')); + }); + }); + + describe('start', () => { + it('should start the service', async () => { + const createDatastreamMock = createDatastream as jest.Mock; + const ds = new DataStreamSpacesAdapter(DATA_STREAM_NAME, { + kibanaVersion: kibanaPackageJson.version, + }); + const dsInstallSpy = jest.spyOn(ds, 'install'); + dsInstallSpy.mockResolvedValueOnce(); + createDatastreamMock.mockReturnValueOnce(ds); + const createPipelineMock = createPipeline as jest.Mock; + createPipelineMock.mockResolvedValueOnce(true); + const createDataStreamMock = esClient.indices.createDataStream as jest.Mock; + + securityWorkflowInsightsService.setup({ + kibanaVersion: kibanaPackageJson.version, + logger, + isFeatureEnabled: true, + endpointContext: mockEndpointAppContextService, + }); + expect(createDatastreamMock).toHaveBeenCalledTimes(1); + expect(createDatastreamMock).toHaveBeenCalledWith(kibanaPackageJson.version); + + await securityWorkflowInsightsService.start({ esClient }); + + expect(createPipelineMock).toHaveBeenCalledTimes(1); + expect(createPipelineMock).toHaveBeenCalledWith(esClient); + expect(dsInstallSpy).toHaveBeenCalledTimes(1); + expect(dsInstallSpy).toHaveBeenCalledWith({ + logger, + esClient, + pluginStop$: expect.any(ReplaySubject), + }); + expect(createDataStreamMock).toHaveBeenCalledTimes(1); + expect(createDataStreamMock).toHaveBeenCalledWith({ name: DATA_STREAM_NAME }); + }); + + it('should log a warning if createPipeline or ds.install throws an error', async () => { + securityWorkflowInsightsService.setup({ + kibanaVersion: kibanaPackageJson.version, + logger, + isFeatureEnabled: true, + endpointContext: mockEndpointAppContextService, + }); + + const createPipelineMock = createPipeline as jest.Mock; + createPipelineMock.mockImplementationOnce(() => { + throw new Error('test error'); + }); + + await securityWorkflowInsightsService.start({ esClient }); + + expect(logger.warn).toHaveBeenCalledTimes(2); + expect(logger.warn).toHaveBeenNthCalledWith(1, expect.stringContaining('test error')); + }); + }); + + describe('createFromDefendInsights', () => { + it('should create workflow insights from defend insights', async () => { + const defendInsights: DefendInsight[] = [ + { + group: 'AVGAntivirus', + events: [ + { + id: 'lqw5opMB9Ke6SNgnxRSZ', + endpointId: 'f6e2f338-6fb7-4c85-9c23-d20e9f96a051', + value: '/Applications/AVGAntivirus.app/Contents/Backend/services/com.avg.activity', + }, + ], + }, + ]; + + const request = {} as KibanaRequest; + const workflowInsights: SecurityWorkflowInsight[] = [getDefaultInsight()]; + + const buildWorkflowInsightsMock = buildWorkflowInsights as jest.Mock; + buildWorkflowInsightsMock.mockResolvedValueOnce(workflowInsights); + + const esClientIndexResp = { + _index: DATA_STREAM_NAME, + _id: '1', + result: 'created' as const, + _shards: { + total: 1, + successful: 1, + failed: 0, + }, + _version: 1, + }; + jest.spyOn(esClient, 'index').mockResolvedValue(esClientIndexResp); + await securityWorkflowInsightsService.start({ esClient }); + const result = await securityWorkflowInsightsService.createFromDefendInsights( + defendInsights, + request + ); + + // three since it calls securityWorkflowInsightsService.create + fetch + expect(isInitializedSpy).toHaveBeenCalledTimes(3); + expect(buildWorkflowInsightsMock).toHaveBeenCalledWith({ + defendInsights, + request, + endpointMetadataService: expect.any(Object), + }); + expect(result).toEqual(workflowInsights.map(() => esClientIndexResp)); + }); + }); + + describe('create', () => { + it('should index the doc correctly', async () => { + await securityWorkflowInsightsService.start({ esClient }); + const insight = getDefaultInsight(); + await securityWorkflowInsightsService.create(insight); + + // two since it calls fetch as well + expect(isInitializedSpy).toHaveBeenCalledTimes(2); + // indexes the doc + expect(esClient.index).toHaveBeenCalledTimes(1); + expect(esClient.index).toHaveBeenCalledWith({ + index: DATA_STREAM_NAME, + body: { ...insight, id: generateInsightId(insight) }, + refresh: 'wait_for', + }); + }); + + it('should call update instead if insight already exists', async () => { + const indexName = 'backing-index'; + const fetchSpy = jest + .spyOn(securityWorkflowInsightsService, 'fetch') + .mockResolvedValueOnce([{ _index: indexName }] as Array< + SearchHit + >); + const updateSpy = jest + .spyOn(securityWorkflowInsightsService, 'update') + .mockResolvedValueOnce({} as UpdateResponse); + await securityWorkflowInsightsService.start({ esClient }); + const insight = getDefaultInsight(); + await securityWorkflowInsightsService.create(insight); + + const expectedInsight = cloneDeep(insight); + expectedInsight['@timestamp'] = expect.any(moment); + expectedInsight.action.timestamp = expect.any(moment); + expectedInsight.source.data_range_start = expect.any(moment); + expectedInsight.source.data_range_end = expect.any(moment); + + // ensure it waits for initialization first + expect(isInitializedSpy).toHaveBeenCalledTimes(1); + expect(fetchSpy).toHaveBeenCalledTimes(1); + expect(updateSpy).toHaveBeenCalledTimes(1); + expect(updateSpy).toHaveBeenCalledWith( + generateInsightId(insight), + expect.objectContaining(insight), + indexName + ); + }); + }); + + describe('update', () => { + it('should update the doc correctly', async () => { + await securityWorkflowInsightsService.start({ esClient }); + const insightId = 'some-insight-id'; + const insight = getDefaultInsight(); + const indexName = 'backing-index-name'; + await securityWorkflowInsightsService.update(insightId, insight, indexName); + + // ensure it waits for initialization first + expect(isInitializedSpy).toHaveBeenCalledTimes(1); + // updates the doc + expect(esClient.update).toHaveBeenCalledTimes(1); + expect(esClient.update).toHaveBeenCalledWith({ + index: indexName, + id: insightId, + body: { doc: insight }, + refresh: 'wait_for', + }); + }); + }); + + describe('fetch', () => { + it('should fetch the docs with the correct params', async () => { + await securityWorkflowInsightsService.start({ esClient }); + const searchParams: SearchParams = { + size: 50, + from: 50, + ids: ['id1', 'id2'], + categories: [Category.Endpoint], + types: [DefendInsightType.Enum.incompatible_antivirus], + sourceTypes: [SourceType.LlmConnector], + sourceIds: ['source-id1', 'source-id2'], + targetTypes: [TargetType.Endpoint], + targetIds: ['target-id1', 'target-id2'], + actionTypes: [ActionType.Refreshed, ActionType.Remediated], + }; + await securityWorkflowInsightsService.fetch(searchParams); + + // ensure it waits for initialization first + expect(isInitializedSpy).toHaveBeenCalledTimes(1); + // fetches the doc + expect(esClient.search).toHaveBeenCalledTimes(1); + expect(esClient.search).toHaveBeenCalledWith({ + index: DATA_STREAM_NAME, + body: { + query: { + bool: { + must: [ + { + terms: { + _id: ['id1', 'id2'], + }, + }, + { + terms: { + categories: ['endpoint'], + }, + }, + { + terms: { + types: ['incompatible_antivirus'], + }, + }, + { + nested: { + path: 'source', + query: { + terms: { + 'source.type': ['llm-connector'], + }, + }, + }, + }, + { + nested: { + path: 'source', + query: { + terms: { + 'source.id': ['source-id1', 'source-id2'], + }, + }, + }, + }, + { + nested: { + path: 'target', + query: { + terms: { + 'target.type': ['endpoint'], + }, + }, + }, + }, + { + nested: { + path: 'target', + query: { + terms: { + 'target.ids': ['target-id1', 'target-id2'], + }, + }, + }, + }, + { + nested: { + path: 'action', + query: { + terms: { + 'action.type': ['refreshed', 'remediated'], + }, + }, + }, + }, + ], + }, + }, + size: searchParams.size, + from: searchParams.from, + }, + }); + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts new file mode 100644 index 0000000000000..1baeaf74e00f0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts @@ -0,0 +1,230 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ReplaySubject, firstValueFrom, combineLatest } from 'rxjs'; + +import type { + SearchHit, + UpdateResponse, + WriteResponseBase, +} from '@elastic/elasticsearch/lib/api/types'; +import type { ElasticsearchClient, KibanaRequest, Logger } from '@kbn/core/server'; +import type { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; +import type { DefendInsight, DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; + +import type { + SearchParams, + SecurityWorkflowInsight, +} from '../../../../common/endpoint/types/workflow_insights'; +import type { EndpointAppContextService } from '../../endpoint_app_context_services'; + +import { SecurityWorkflowInsightsFailedInitialized } from './errors'; +import { buildEsQueryParams, createDatastream, createPipeline, generateInsightId } from './helpers'; +import { DATA_STREAM_NAME } from './constants'; +import { buildWorkflowInsights } from './builders'; + +const DEFAULT_PAGE_SIZE = 10; + +interface SetupInterface { + kibanaVersion: string; + logger: Logger; + isFeatureEnabled: boolean; + endpointContext: EndpointAppContextService; +} + +interface StartInterface { + esClient: ElasticsearchClient; +} + +class SecurityWorkflowInsightsService { + private setup$ = new ReplaySubject(1); + private start$ = new ReplaySubject(1); + private stop$ = new ReplaySubject(1); + private ds: DataStreamSpacesAdapter | undefined; + private _esClient: ElasticsearchClient | undefined; + private _endpointContext: EndpointAppContextService | undefined; + private _logger: Logger | undefined; + private _isInitialized: Promise<[void, void]> = firstValueFrom( + combineLatest<[void, void]>([this.setup$, this.start$]) + ); + private isFeatureEnabled = false; + + public get isInitialized() { + return this._isInitialized; + } + + public setup({ kibanaVersion, logger, isFeatureEnabled, endpointContext }: SetupInterface) { + this.isFeatureEnabled = isFeatureEnabled; + if (!isFeatureEnabled) { + return; + } + + this._logger = logger; + this._endpointContext = endpointContext; + + try { + this.ds = createDatastream(kibanaVersion); + } catch (err) { + this.logger.warn(new SecurityWorkflowInsightsFailedInitialized(err.message).message); + return; + } + + this.setup$.next(); + } + + public async start({ esClient }: StartInterface) { + if (!this.isFeatureEnabled) { + return; + } + + this._esClient = esClient; + await firstValueFrom(this.setup$); + + try { + await createPipeline(esClient); + await this.ds?.install({ + logger: this.logger, + esClient, + pluginStop$: this.stop$, + }); + + try { + await esClient.indices.createDataStream({ name: DATA_STREAM_NAME }); + } catch (err) { + if (err?.body?.error?.type === 'resource_already_exists_exception') { + this.logger.debug(`Datastream ${DATA_STREAM_NAME} already exists`); + } else { + throw new SecurityWorkflowInsightsFailedInitialized(err.message); + } + } + } catch (err) { + this.logger.warn(err.message); + return; + } + + this.start$.next(); + } + + public stop() { + this.setup$.next(); + this.setup$.complete(); + this.start$.next(); + this.start$.complete(); + this.stop$.next(); + this.stop$.complete(); + } + + public async createFromDefendInsights( + defendInsights: DefendInsight[], + request: KibanaRequest + ): Promise { + await this.isInitialized; + + const workflowInsights = await buildWorkflowInsights({ + defendInsights, + request, + endpointMetadataService: this.endpointContext.getEndpointMetadataService(), + }); + return Promise.all(workflowInsights.map((insight) => this.create(insight))); + } + + public async create(insight: SecurityWorkflowInsight): Promise { + await this.isInitialized; + + const id = generateInsightId(insight); + + // if insight already exists, update instead + const existingInsights = await this.fetch({ ids: [id] }); + if (existingInsights.length) { + return this.update(id, insight, existingInsights[0]._index); + } + + const response = await this.esClient.index({ + index: DATA_STREAM_NAME, + body: { ...insight, id }, + refresh: 'wait_for', + }); + + return response; + } + + public async update( + id: string, + insight: Partial, + backingIndex?: string + ): Promise { + await this.isInitialized; + + let index = backingIndex; + if (!index) { + const retrievedInsight = (await this.fetch({ ids: [id] }))[0]; + index = retrievedInsight?._index; + } + + if (!index) { + throw new Error('invalid backing index for updating workflow insight'); + } + + const response = await this.esClient.update({ + index, + id, + body: { doc: insight }, + refresh: 'wait_for', + }); + + return response; + } + + public async fetch(params?: SearchParams): Promise>> { + await this.isInitialized; + + const size = params?.size ?? DEFAULT_PAGE_SIZE; + const from = params?.from ?? 0; + + const termFilters = params ? buildEsQueryParams(params) : []; + const response = await this.esClient.search({ + index: DATA_STREAM_NAME, + body: { + query: { + bool: { + must: termFilters, + }, + }, + size, + from, + }, + }); + + return response?.hits?.hits ?? []; + } + + private get esClient(): ElasticsearchClient { + if (!this._esClient) { + throw new SecurityWorkflowInsightsFailedInitialized('no elasticsearch client found'); + } + + return this._esClient; + } + + private get logger(): Logger { + if (!this._logger) { + throw new SecurityWorkflowInsightsFailedInitialized('no logger found'); + } + + return this._logger; + } + + private get endpointContext(): EndpointAppContextService { + if (!this._endpointContext) { + throw new SecurityWorkflowInsightsFailedInitialized('no endpoint context found'); + } + + return this._endpointContext; + } +} + +export const securityWorkflowInsightsService = new SecurityWorkflowInsightsService(); diff --git a/x-pack/plugins/security_solution/server/endpoint/types.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/types.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/create_es_search_iterable.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/create_es_search_iterable.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/create_es_search_iterable.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/create_es_search_iterable.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/create_so_find_iterable.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/create_so_find_iterable.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/create_so_find_iterable.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/create_so_find_iterable.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/fleet_agent_status_to_endpoint_host_status.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/fleet_agent_status_to_endpoint_host_status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/fleet_agent_status_to_endpoint_host_status.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/fleet_agent_status_to_endpoint_host_status.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/index.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/normalize_kuery.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/normalize_kuery.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/normalize_kuery.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/normalize_kuery.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/normalize_kuery.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/normalize_kuery.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/normalize_kuery.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/normalize_kuery.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/queue_processor.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/queue_processor.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/queue_processor.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/queue_processor.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/stringify.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/stringify.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/stringify.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/stringify.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/translations.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/translations.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/translations.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/wrap_errors.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/wrap_errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/wrap_errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/wrap_errors.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/yes_no_data_stream.test.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/yes_no_data_stream.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/yes_no_data_stream.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/yes_no_data_stream.test.ts diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/yes_no_data_stream.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/yes_no_data_stream.ts similarity index 100% rename from x-pack/plugins/security_solution/server/endpoint/utils/yes_no_data_stream.ts rename to x-pack/solutions/security/plugins/security_solution/server/endpoint/utils/yes_no_data_stream.ts diff --git a/x-pack/plugins/security_solution/server/fixtures.ts b/x-pack/solutions/security/plugins/security_solution/server/fixtures.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fixtures.ts rename to x-pack/solutions/security/plugins/security_solution/server/fixtures.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/constants.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/fleet_integration.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_policy_artifact_manifest.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_policy_artifact_manifest.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/create_policy_artifact_manifest.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_policy_artifact_manifest.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_policy_datastreams.test.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_policy_datastreams.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/create_policy_datastreams.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_policy_datastreams.test.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_policy_datastreams.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_policy_datastreams.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/create_policy_datastreams.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/create_policy_datastreams.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/install_prepackaged_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/install_prepackaged_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/install_prepackaged_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/install_prepackaged_rules.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_policy_from_artifacts.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/remove_policy_from_artifacts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_policy_from_artifacts.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/remove_policy_from_artifacts.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_protection_updates_note.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/remove_protection_updates_note.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/remove_protection_updates_note.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/remove_protection_updates_note.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_endpoint_package_policy.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/validate_endpoint_package_policy.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_endpoint_package_policy.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/validate_endpoint_package_policy.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_integration_config.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/validate_integration_config.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_integration_config.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/validate_integration_config.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_policy_against_license.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/validate_policy_against_license.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_policy_against_license.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/validate_policy_against_license.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_policy_against_product_features.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/validate_policy_against_product_features.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/handlers/validate_policy_against_product_features.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/handlers/validate_policy_against_product_features.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/index.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/jest.config.js new file mode 100644 index 0000000000000..a8580071e50e2 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/server/fleet_integration'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server/fleet_integration', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/fleet_integration/notify_protection_feature_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/notify_protection_feature_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/notify_protection_feature_usage.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/notify_protection_feature_usage.ts diff --git a/x-pack/plugins/security_solution/server/fleet_integration/types.ts b/x-pack/solutions/security/plugins/security_solution/server/fleet_integration/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/fleet_integration/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/fleet_integration/types.ts diff --git a/x-pack/plugins/security_solution/server/index.ts b/x-pack/solutions/security/plugins/security_solution/server/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/index.ts diff --git a/x-pack/plugins/security_solution/server/integration_tests/__mocks__/alerts-detections-request.json b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/alerts-detections-request.json similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/__mocks__/alerts-detections-request.json rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/alerts-detections-request.json diff --git a/x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-alert.json b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-alert.json similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-alert.json rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-alert.json diff --git a/x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-meta-telemetry-request.json b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-meta-telemetry-request.json similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-meta-telemetry-request.json rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-meta-telemetry-request.json diff --git a/x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-metadata.json b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-metadata.json similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-metadata.json rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-metadata.json diff --git a/x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-metrics.json b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-metrics.json similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-metrics.json rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-metrics.json diff --git a/x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-policy.json b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-policy.json similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/__mocks__/endpoint-policy.json rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/endpoint-policy.json diff --git a/x-pack/plugins/security_solution/server/integration_tests/__mocks__/fleet-agents.json b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/fleet-agents.json similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/__mocks__/fleet-agents.json rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/fleet-agents.json diff --git a/x-pack/plugins/security_solution/server/integration_tests/__mocks__/prebuilt-rules-events.json b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/prebuilt-rules-events.json similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/__mocks__/prebuilt-rules-events.json rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/prebuilt-rules-events.json diff --git a/x-pack/plugins/security_solution/server/integration_tests/__mocks__/rule.json b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/rule.json similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/__mocks__/rule.json rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/__mocks__/rule.json diff --git a/x-pack/solutions/security/plugins/security_solution/server/integration_tests/configuration.test.ts b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/configuration.test.ts new file mode 100644 index 0000000000000..8629b54c7524d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/configuration.test.ts @@ -0,0 +1,152 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import Path from 'path'; +import axios from 'axios'; + +import { cloneDeep } from 'lodash'; + +import { telemetryConfiguration } from '../lib/telemetry/configuration'; +import { + TaskManagerPlugin, + type TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server/plugin'; + +import { + setupTestServers, + removeFile, + mockAxiosPost, + DEFAULT_GET_ROUTES, + mockAxiosGet, + getRandomInt, +} from './lib/helpers'; + +import { + type TestElasticsearchUtils, + type TestKibanaUtils, +} from '@kbn/core-test-helpers-kbn-server'; +import { Plugin as SecuritySolutionPlugin } from '../plugin'; +import { getTelemetryTasks, runSoonConfigTask } from './lib/telemetry_helpers'; +import type { SecurityTelemetryTask } from '../lib/telemetry/task'; + +jest.mock('axios'); + +const logFilePath = Path.join(__dirname, 'config.logs.log'); +const taskManagerStartSpy = jest.spyOn(TaskManagerPlugin.prototype, 'start'); +const securitySolutionStartSpy = jest.spyOn(SecuritySolutionPlugin.prototype, 'start'); + +const mockedAxiosGet = jest.spyOn(axios, 'get'); +const mockedAxiosPost = jest.spyOn(axios, 'post'); + +const securitySolutionPlugin = jest.spyOn(SecuritySolutionPlugin.prototype, 'start'); + +describe('configuration', () => { + let esServer: TestElasticsearchUtils; + let kibanaServer: TestKibanaUtils; + let taskManagerPlugin: TaskManagerStartContract; + let tasks: SecurityTelemetryTask[]; + + beforeAll(async () => { + await removeFile(logFilePath); + + const servers = await setupTestServers(logFilePath); + + esServer = servers.esServer; + kibanaServer = servers.kibanaServer; + + expect(taskManagerStartSpy).toHaveBeenCalledTimes(1); + taskManagerPlugin = taskManagerStartSpy.mock.results[0].value; + + expect(securitySolutionStartSpy).toHaveBeenCalledTimes(1); + + tasks = getTelemetryTasks(securitySolutionStartSpy); + + expect(securitySolutionPlugin).toHaveBeenCalledTimes(1); + }); + + afterAll(async () => { + if (kibanaServer) { + await kibanaServer.stop(); + } + if (esServer) { + await esServer.stop(); + } + }); + + beforeEach(async () => { + jest.clearAllMocks(); + mockAxiosPost(mockedAxiosPost); + }); + + afterEach(async () => {}); + + describe('configuration task', () => { + it('should keep default values when no new config was provided', async () => { + const before = cloneDeep(telemetryConfiguration); + + await runSoonConfigTask(tasks, taskManagerPlugin); + + expect(telemetryConfiguration).toEqual(before); + }); + + it('should update values with new manifest', async () => { + const expected = { + telemetry_max_buffer_size: getRandomInt(1, 100), + max_security_list_telemetry_batch: getRandomInt(1, 100), + max_endpoint_telemetry_batch: getRandomInt(1, 100), + max_detection_rule_telemetry_batch: getRandomInt(1, 100), + max_detection_alerts_batch: getRandomInt(1, 100), + use_async_sender: true, + pagination_config: { + max_page_size_bytes: getRandomInt(1, 100), + num_docs_to_sample: getRandomInt(1, 100), + }, + sender_channels: { + default: { + buffer_time_span_millis: getRandomInt(1, 100), + inflight_events_threshold: getRandomInt(1, 100), + max_payload_size_bytes: getRandomInt(1, 100), + }, + }, + indices_metadata_config: { + indices_threshold: getRandomInt(1, 100), + datastreams_threshold: getRandomInt(1, 100), + max_prefixes: getRandomInt(1, 100), + max_group_size: getRandomInt(1, 100), + }, + }; + + mockAxiosGet(mockedAxiosGet, [ + ...DEFAULT_GET_ROUTES, + [/.*telemetry-buffer-and-batch-sizes-v1.*/, { status: 200, data: cloneDeep(expected) }], + ]); + + await runSoonConfigTask(tasks, taskManagerPlugin); + + expect(telemetryConfiguration.telemetry_max_buffer_size).toEqual( + expected.telemetry_max_buffer_size + ); + expect(telemetryConfiguration.max_security_list_telemetry_batch).toEqual( + expected.max_security_list_telemetry_batch + ); + expect(telemetryConfiguration.max_endpoint_telemetry_batch).toEqual( + expected.max_endpoint_telemetry_batch + ); + expect(telemetryConfiguration.max_detection_rule_telemetry_batch).toEqual( + expected.max_detection_rule_telemetry_batch + ); + expect(telemetryConfiguration.max_detection_alerts_batch).toEqual( + expected.max_detection_alerts_batch + ); + expect(telemetryConfiguration.use_async_sender).toEqual(expected.use_async_sender); + expect(telemetryConfiguration.sender_channels).toEqual(expected.sender_channels); + expect(telemetryConfiguration.pagination_config).toEqual(expected.pagination_config); + expect(telemetryConfiguration.indices_metadata_config).toEqual( + expected.indices_metadata_config + ); + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/integration_tests/lib/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/lib/helpers.ts new file mode 100644 index 0000000000000..3f25322b9e017 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/lib/helpers.ts @@ -0,0 +1,175 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { v4 as uuidGen } from 'uuid'; +import Fs from 'fs'; +import Util from 'util'; +import type { ElasticsearchClient } from '@kbn/core/server'; +import deepmerge from 'deepmerge'; +import { createTestServers, createRootWithCorePlugins } from '@kbn/core-test-helpers-kbn-server'; + +export const DEFAULT_GET_ROUTES: Array<[RegExp, unknown]> = [ + [new RegExp('.*/ping$'), { status: 200 }], + [ + /.*kibana\/manifest\/artifacts.*/, + { + status: 200, + data: 'x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', + }, + ], +]; + +export const DEFAULT_POST_ROUTES: Array<[RegExp, unknown]> = [[/.*/, { status: 200 }]]; + +const asyncUnlink = Util.promisify(Fs.unlink); + +/** + * Eventually runs a callback until it succeeds or times out. + * Inspired in https://kotest.io/docs/assertions/eventually.html + * + * @param cb The callback to run/retry + * @param duration The maximum duration to run the callback, default 10000 millisecs + * @param interval The interval between each run, default 100 millisecs + */ +export async function eventually( + cb: () => Promise, + duration: number = 120000, + interval: number = 3000 +) { + let elapsed = 0; + + while (true) { + const startedAt: number = performance.now(); + try { + return await cb(); + } catch (e) { + if (elapsed >= duration) { + throw e; + } + } + await new Promise((resolve) => setTimeout(resolve, interval)); + elapsed += performance.now() - startedAt; + } +} + +export async function setupTestServers(logFilePath: string, settings = {}) { + const { startES } = createTestServers({ + adjustTimeout: (t) => jest.setTimeout(t), + settings: { + es: { + license: 'trial', + }, + }, + }); + + const esServer = await startES(); + + const root = createRootWithCorePlugins( + deepmerge( + { + logging: { + appenders: { + file: { + type: 'file', + fileName: logFilePath, + layout: { + type: 'json', + }, + }, + }, + root: { + level: 'warn', + }, + loggers: [ + { + name: 'plugins.taskManager', + level: 'warn', + appenders: ['file'], + }, + { + name: 'plugins.securitySolution.telemetry_events', + level: 'all', + appenders: ['file'], + }, + ], + }, + }, + settings + ), + { oss: false } + ); + + await root.preboot(); + const coreSetup = await root.setup(); + const coreStart = await root.start(); + + return { + esServer, + kibanaServer: { + root, + coreSetup, + coreStart, + stop: async () => root.shutdown(), + }, + }; +} + +export async function removeFile(path: string) { + await asyncUnlink(path).catch(() => void 0); +} + +export async function bulkInsert( + esClient: ElasticsearchClient, + index: string, + data: unknown[], + ids: string[] = [] +): Promise { + const bulk = data.flatMap((d, i) => { + const _id = ids[i] ?? uuidGen(); + return [{ create: { _index: index, _id } }, d]; + }); + await esClient.bulk({ body: bulk, refresh: 'wait_for' }).catch(() => {}); +} + +export function updateTimestamps(data: object[]): object[] { + const currentTimeMillis = new Date().getTime(); + return data.map((d, i) => { + // wait a couple of millisecs to not make timestamps overlap + return { ...d, '@timestamp': new Date(currentTimeMillis + (i + 1) * 100) }; + }); +} + +export function mockAxiosPost( + postSpy: jest.SpyInstance, + routes: Array<[RegExp, unknown]> = DEFAULT_POST_ROUTES +) { + postSpy.mockImplementation(async (url: string) => { + for (const [route, returnValue] of routes) { + if (route.test(url)) { + return returnValue; + } + } + return { status: 404 }; + }); +} + +export function mockAxiosGet( + getSpy: jest.SpyInstance, + routes: Array<[RegExp, unknown]> = DEFAULT_GET_ROUTES +) { + getSpy.mockImplementation(async (url: string) => { + for (const [route, returnValue] of routes) { + if (route.test(url)) { + return returnValue; + } + } + return { status: 404 }; + }); +} + +export function getRandomInt(min: number, max: number): number { + return Math.floor(Math.random() * (max - min + 1)) + min; +} diff --git a/x-pack/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts similarity index 93% rename from x-pack/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts index a36d5e1be38de..8dc9f1cbbca49 100644 --- a/x-pack/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts @@ -25,13 +25,13 @@ import { deleteExceptionListItem, } from '@kbn/lists-plugin/server/services/exception_lists'; import { LEGACY_AGENT_POLICY_SAVED_OBJECT_TYPE } from '@kbn/fleet-plugin/common/constants'; +import type { TaskManagerStartContract } from '@kbn/task-manager-plugin/server'; import { packagePolicyService } from '@kbn/fleet-plugin/server/services'; import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; import { DETECTION_TYPE, NAMESPACE_TYPE } from '@kbn/lists-plugin/common/constants.mock'; -import { DEFAULT_DIAGNOSTIC_INDEX_PATTERN } from '../../../common/endpoint/constants'; -import { bulkInsert, updateTimestamps } from './helpers'; +import { bulkInsert, eventually, updateTimestamps } from './helpers'; import { TelemetryEventsSender } from '../../lib/telemetry/sender'; import type { SecuritySolutionPluginStart, @@ -41,6 +41,7 @@ import type { SecurityTelemetryTask } from '../../lib/telemetry/task'; import { Plugin as SecuritySolutionPlugin } from '../../plugin'; import { AsyncTelemetryEventsSender } from '../../lib/telemetry/async_sender'; import { type ITelemetryReceiver, TelemetryReceiver } from '../../lib/telemetry/receiver'; +import { DEFAULT_DIAGNOSTIC_INDEX_PATTERN } from '../../../common/endpoint/constants'; import mockEndpointAlert from '../__mocks__/endpoint-alert.json'; import mockedRule from '../__mocks__/rule.json'; import fleetAgents from '../__mocks__/fleet-agents.json'; @@ -417,3 +418,24 @@ export function getTelemetryTaskType(task: SecurityTelemetryTask): string { return ''; } } + +export async function runSoonConfigTask( + tasks: SecurityTelemetryTask[], + taskManagerPlugin: TaskManagerStartContract +) { + const configTaskType = 'security:telemetry-configuration'; + const configTask = getTelemetryTask(tasks, configTaskType); + const runAfter = new Date(); + await eventually(async () => { + await taskManagerPlugin.runSoon(configTask.getTaskId()); + }); + + // wait until the task finishes + await eventually(async () => { + const hasRun = await taskManagerPlugin + .get(configTask.getTaskId()) + .then((t) => new Date(t.state.lastExecutionTimestamp) > runAfter) + .catch(() => false); + expect(hasRun).toBe(true); + }); +} diff --git a/x-pack/plugins/security_solution/server/integration_tests/receiver.test.ts b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/receiver.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/integration_tests/receiver.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/receiver.test.ts diff --git a/x-pack/plugins/security_solution/server/integration_tests/telemetry.test.ts b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/telemetry.test.ts similarity index 94% rename from x-pack/plugins/security_solution/server/integration_tests/telemetry.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/integration_tests/telemetry.test.ts index 801926adbf948..409eb867e833b 100644 --- a/x-pack/plugins/security_solution/server/integration_tests/telemetry.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/integration_tests/telemetry.test.ts @@ -20,7 +20,14 @@ import { TELEMETRY_CHANNEL_ENDPOINT_META, } from '../lib/telemetry/constants'; -import { eventually, setupTestServers, removeFile } from './lib/helpers'; +import { + eventually, + setupTestServers, + removeFile, + mockAxiosGet, + mockAxiosPost, + DEFAULT_GET_ROUTES, +} from './lib/helpers'; import { cleanupMockedAlerts, cleanupMockedExceptionLists, @@ -37,6 +44,7 @@ import { mockEndpointData, getTelemetryReceiver, mockPrebuiltRulesData, + runSoonConfigTask, } from './lib/telemetry_helpers'; import { @@ -99,6 +107,7 @@ describe('telemetry tasks', () => { }, }, }); + esServer = servers.esServer; kibanaServer = servers.kibanaServer; @@ -134,7 +143,17 @@ describe('telemetry tasks', () => { beforeEach(async () => { jest.clearAllMocks(); - mockAxiosGet(); + mockAxiosPost(mockedAxiosPost); + mockAxiosGet(mockedAxiosGet, [ + ...DEFAULT_GET_ROUTES, + [ + /.*telemetry-buffer-and-batch-sizes-v1.*/, + { + status: 200, + data: fakeBufferAndSizesConfigAsyncDisabled, + }, + ], + ]); deferred = []; }); @@ -208,21 +227,17 @@ describe('telemetry tasks', () => { }); it('should use new sender when configured', async () => { - const configTaskType = 'security:telemetry-configuration'; - const configTask = getTelemetryTask(tasks, configTaskType); + mockAxiosPost(mockedAxiosPost); - mockAxiosGet(fakeBufferAndSizesConfigAsyncEnabled); - await eventually(async () => { - await taskManagerPlugin.runSoon(configTask.getTaskId()); - }); + mockAxiosGet(mockedAxiosGet, [ + ...DEFAULT_GET_ROUTES, + [ + /.*telemetry-buffer-and-batch-sizes-v1.*/, + { status: 200, data: fakeBufferAndSizesConfigAsyncEnabled }, + ], + ]); - // wait until the task finishes - await eventually(async () => { - const found = (await taskManagerPlugin.fetch()).docs.find( - (t) => t.taskType === configTaskType - ); - expect(found).toBeFalsy(); - }); + await runSoonConfigTask(tasks, taskManagerPlugin); const [task, started] = await mockAndScheduleDetectionRulesTask(); @@ -238,13 +253,20 @@ describe('telemetry tasks', () => { it('should update sender queue config', async () => { const expectedConfig = fakeBufferAndSizesConfigWithQueues.sender_channels['task-metrics']; - const configTaskType = 'security:telemetry-configuration'; - const configTask = getTelemetryTask(tasks, configTaskType); - mockAxiosGet(fakeBufferAndSizesConfigWithQueues); - await eventually(async () => { - await taskManagerPlugin.runSoon(configTask.getTaskId()); - }); + mockAxiosPost(mockedAxiosPost); + mockAxiosGet(mockedAxiosGet, [ + ...DEFAULT_GET_ROUTES, + [ + /.*telemetry-buffer-and-batch-sizes-v1.*/, + { + status: 200, + data: fakeBufferAndSizesConfigWithQueues, + }, + ], + ]); + + await runSoonConfigTask(tasks, taskManagerPlugin); await eventually(async () => { /* eslint-disable dot-notation */ @@ -838,31 +860,6 @@ describe('telemetry tasks', () => { }); } - function mockAxiosGet(bufferConfig: unknown = fakeBufferAndSizesConfigAsyncDisabled) { - mockedAxiosPost.mockImplementation( - async (_url: string, _data?: unknown, _config?: AxiosRequestConfig | undefined) => { - return { status: 200 }; - } - ); - - mockedAxiosGet.mockImplementation(async (url: string) => { - if (url.startsWith(ENDPOINT_STAGING) && url.endsWith('ping')) { - return { status: 200 }; - } else if (url.indexOf('kibana/manifest/artifacts') !== -1) { - return { - status: 200, - data: 'x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', - }; - } else if (url.indexOf('telemetry-buffer-and-batch-sizes-v1') !== -1) { - return { - status: 200, - data: bufferConfig, - }; - } - return { status: 404 }; - }); - } - async function getTaskMetricsRequests( task: SecurityTelemetryTask, olderThan: number diff --git a/x-pack/solutions/security/plugins/security_solution/server/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/jest.config.js new file mode 100644 index 0000000000000..8709a95766831 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/jest.config.js @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + /** all nested directories have their own Jest config file */ + testMatch: [ + '/x-pack/solutions/security/plugins/security_solution/server/*.test.{js,mjs,ts,tsx}', + ], + roots: ['/x-pack/solutions/security/plugins/security_solution/server'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/**/*.{ts,tsx}', + ], + moduleNameMapper: require('./__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/lib/dashboards/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/dashboards/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/dashboards/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/dashboards/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts diff --git a/x-pack/plugins/security_solution/server/lib/dashboards/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/dashboards/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/dashboards/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/dashboards/routes/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/README.md new file mode 100644 index 0000000000000..f159a2c5b2480 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/README.md @@ -0,0 +1,176 @@ +README.md for developers working on the backend detection engine on how to get started +using the CURL scripts in the scripts folder. + +The scripts rely on CURL and jq: + +- [CURL](https://curl.haxx.se) +- [jq](https://stedolan.github.io/jq/) + +Install curl and jq + +```sh +brew update +brew install curl +brew install jq +``` + +Open `$HOME/.zshrc` or `${HOME}.bashrc` depending on your SHELL output from `echo $SHELL` +and add these environment variables: + +```sh +export ELASTICSEARCH_USERNAME=${user} +export ELASTICSEARCH_PASSWORD=${password} +export ELASTICSEARCH_URL=https://${ip}:9200 +export KIBANA_URL=http://localhost:5601 +export TASK_MANAGER_INDEX=.kibana-task-manager-${your user id} +export KIBANA_INDEX=.kibana-${your user id} +``` + +source `$HOME/.zshrc` or `${HOME}.bashrc` to ensure variables are set: + +```sh +source ~/.zshrc +``` + +Open your `kibana.dev.yml` file and add these lines: + +```sh +xpack.securitySolution.signalsIndex: .siem-signals-${your user id} +``` + +Restart Kibana and ensure that you are using `--no-base-path` as changing the base path is a feature but will +get in the way of the CURL scripts written as is. You should see alerting and actions starting up like so afterwards + +```sh +server log [22:05:22.277] [info][status][plugin:alerting@8.0.0] Status changed from uninitialized to green - Ready +server log [22:05:22.270] [info][status][plugin:actions@8.0.0] Status changed from uninitialized to green - Ready +``` + +Go to the scripts folder `cd kibana/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts` and run: + +```sh +./hard_reset.sh +./post_rule.sh +``` + +which will: + +- Delete any existing actions you have +- Delete any existing alerts you have +- Delete any existing alert tasks you have +- Delete any existing signal mapping, policies, and template, you might have previously had. +- Add the latest signal index and its mappings using your settings from `kibana.dev.yml` environment variable of `xpack.securitySolution.signalsIndex`. +- Posts the sample rule from `./rules/queries/query_with_rule_id.json` +- The sample rule checks for root or admin every 5 minutes and reports that as a signal if it is a positive hit + +Now you can run + +```sh +./find_rules.sh +``` + +You should see the new rules created like so: + +```sh +{ + "page": 1, + "perPage": 20, + "total": 1, + "data": [ + { + "created_by": "elastic", + "description": "Detecting root and admin users", + "enabled": true, + "false_positives": [], + "from": "now-6m", + "id": "a556065c-0656-4ba1-ad64-a77ca9d2013b", + "immutable": false, + "index": [ + "auditbeat-*", + "filebeat-*", + "packetbeat-*", + "winlogbeat-*" + ], + "interval": "5m", + "rule_id": "rule-1", + "language": "kuery", + "output_index": ".siem-signals-some-name", + "max_signals": 100, + "risk_score": 1, + "name": "Detect Root/Admin Users", + "query": "user.name: root or user.name: admin", + "references": [ + "http://www.example.com", + "https://ww.example.com" + ], + "severity": "high", + "updated_by": "elastic", + "tags": [], + "to": "now", + "type": "query" + } + ] +} +``` + +Every 5 minutes if you get positive hits you will see messages on info like so: + +```sh +server log [09:54:59.013] [info][plugins][siem] Total signals found from signal rule "id: a556065c-0656-4ba1-ad64-a77ca9d2013b", "ruleId: rule-1": 10000 +``` + +Rules are [space aware](https://www.elastic.co/guide/en/kibana/master/xpack-spaces.html) and default +to the "default" (empty) URL space if you do not export the variable of `SPACE_URL`. Example, if you want to +post rules to `test-space` you set `SPACE_URL` to be: + +```sh +export SPACE_URL=/s/test-space +``` + +The `${SPACE_URL}` is in front of all the APIs to correctly create, modify, delete, and update +them from within the defined space. If this variable is not defined the default which is the url of an +empty string will be used. + +Add the `.siem-signals-${your user id}` to your advanced SIEM settings to see any signals +created which should update once every 5 minutes at this point. + +Also add the `.siem-signals-${your user id}` as a kibana index for Maps to be able to see the +signals + +Optionally you can add these debug statements to your `kibana.dev.yml` to see more information when running the detection +engine + +```sh +logging.verbose: true +logging.events: + { + log: ['security_solution', 'info', 'warning', 'error', 'fatal'], + request: ['info', 'warning', 'error', 'fatal'], + error: '*', + ops: __no-ops__, + } +``` + +See these two README.md's pages for more references on the alerting and actions API: +https://github.com/elastic/kibana/blob/main/x-pack/plugins/alerting/README.md +https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions + +### Signals API + +To update the status of a signal or group of signals, the following scripts provide an example of how to +go about doing so. +`cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts` +`./signals/put_signal_doc.sh` will post a sample signal doc into the signals index to play with +`./signals/set_status_with_id.sh closed` will update the status of the sample signal to closed +`./signals/set_status_with_id.sh open` will update the status of the sample signal to open +`./signals/set_status_with_query.sh closed` will update the status of the signals in the result of the query to closed. +`./signals/set_status_with_query.sh open` will update the status of the signals in the result of the query to open. + +### Large List Exceptions + +To test out the functionality of large lists with rules, the user will need to import a list and post a rule with a reference to that exception list. The following outlines an example using the sample json rule provided in the repo. + +* First, set the appropriate env var in order to enable exceptions features`export ELASTIC_XPACK_SECURITY_SOLUTION_LISTS_FEATURE=true` and `export ELASTIC_XPACK_SECURITY_SOLUTION_EXCEPTIONS_LISTS=true` and start kibana +* Second, import a list of ips from a file called `ci-badguys.txt`. The command should look like this: +`cd $HOME/kibana/x-pack/plugins/lists/server/scripts && ./import_list_items_by_filename.sh ip ~/ci-badguys.txt` +* Then, from the detection engine scripts folder (`cd kibana/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts`) run `./post_rule.sh rules/queries/lists/query_with_list_plugin.json` diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/extract_integrations.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/extract_integrations.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/extract_integrations.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/extract_integrations.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/extract_integrations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/extract_integrations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/extract_integrations.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/extract_integrations.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/sort_integrations_by_status.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/sort_integrations_by_status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/sort_integrations_by_status.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/sort_integrations_by_status.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/sort_packages_by_security_category.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/sort_packages_by_security_category.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/sort_packages_by_security_category.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_all_integrations/sort_packages_by_security_category.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/installed_integration_set.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/installed_integration_set.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/installed_integration_set.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/installed_integration_set.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/get_installed_integrations/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/register_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/register_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/register_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/api/register_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/fleet_integrations/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/fleet_integrations/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.ts similarity index 91% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.ts index 45098f8dea239..04f15570434a3 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration.ts @@ -14,7 +14,6 @@ import type { SignalsMigrationSO } from './saved_objects_schema'; /** * Deletes a completed migration: * * deletes the migration SO - * * deletes the underlying task document * * applies deletion policy to the relevant index * * @param esClient An {@link ElasticsearchClient} @@ -40,7 +39,7 @@ export const deleteMigration = async ({ return migration; } - const { destinationIndex, sourceIndex, taskId } = migration.attributes; + const { destinationIndex, sourceIndex } = migration.attributes; if (isMigrationFailed(migration)) { await applyMigrationCleanupPolicy({ @@ -57,7 +56,6 @@ export const deleteMigration = async ({ }); } - await esClient.delete({ index: '.tasks', id: taskId }); await deleteMigrationSavedObject({ id: migration.id, soClient }); return migration; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration_saved_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration_saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration_saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/delete_migration_saved_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts similarity index 95% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts index 6c855a5b77748..51f81ad75e405 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts @@ -40,6 +40,7 @@ describe('finalizeMigration', () => { signalsAlias: 'my-signals-alias', soClient, username: 'username', + legacySiemSignalsAlias: '.siem-signals-default', }); expect(updateMigrationSavedObject).not.toHaveBeenCalled(); @@ -54,6 +55,7 @@ describe('finalizeMigration', () => { signalsAlias: 'my-signals-alias', soClient, username: 'username', + legacySiemSignalsAlias: '.siem-signals-default', }); expect(updateMigrationSavedObject).not.toHaveBeenCalled(); @@ -72,6 +74,7 @@ describe('finalizeMigration', () => { signalsAlias: 'my-signals-alias', soClient, username: 'username', + legacySiemSignalsAlias: '.siem-signals-default', }); expect(updateMigrationSavedObject).toHaveBeenCalledWith( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts similarity index 97% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts index e9ce2a4a641a6..3aca53c1422d8 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts @@ -35,12 +35,14 @@ export const finalizeMigration = async ({ signalsAlias, soClient, username, + legacySiemSignalsAlias, }: { esClient: ElasticsearchClient; migration: SignalsMigrationSO; signalsAlias: string; soClient: SavedObjectsClientContract; username: string; + legacySiemSignalsAlias: string; }): Promise => { if (!isMigrationPending(migration)) { return migration; @@ -86,6 +88,7 @@ export const finalizeMigration = async ({ esClient, newIndex: destinationIndex, oldIndex: sourceIndex, + legacySiemSignalsAlias, }); const updatedMigration = await updateMigrationSavedObject({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_alias_per_space.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_alias_per_space.test.ts new file mode 100644 index 0000000000000..a2361c6b7aeee --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_alias_per_space.test.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; +import { getIndexAliasPerSpace } from './get_index_alias_per_space'; + +describe('getIndexAliasPerSpace', () => { + let esClient: ReturnType; + + beforeEach(() => { + esClient = elasticsearchServiceMock.createElasticsearchClient(); + }); + + it('returns object with index alias and space', async () => { + esClient.indices.getAlias.mockResponseOnce({ + '.siem-signals-default-old-one': { + aliases: { + '.siem-signals-default': { + is_write_index: false, + }, + }, + }, + '.siem-signals-another-1-legacy': { + aliases: { + '.siem-signals-another-1': { + is_write_index: false, + }, + }, + }, + }); + + const result = await getIndexAliasPerSpace({ + esClient, + signalsIndex: '.siem-signals', + signalsAliasAllSpaces: '.siem-signals-*', + }); + + expect(result).toEqual({ + '.siem-signals-another-1-legacy': { + alias: '.siem-signals-another-1', + indexName: '.siem-signals-another-1-legacy', + space: 'another-1', + }, + '.siem-signals-default-old-one': { + alias: '.siem-signals-default', + indexName: '.siem-signals-default-old-one', + space: 'default', + }, + }); + }); + + it('filters out .internal.alert indices', async () => { + esClient.indices.getAlias.mockResponseOnce({ + '.siem-signals-default-old-one': { + aliases: { + '.siem-signals-default': { + is_write_index: false, + }, + }, + }, + '.internal.alerts-security.alerts-another-2-000001': { + aliases: { + '.siem-signals-another-2': { + is_write_index: false, + }, + }, + }, + }); + + const result = await getIndexAliasPerSpace({ + esClient, + signalsIndex: '.siem-signals', + signalsAliasAllSpaces: '.siem-signals-*', + }); + + expect(result).toEqual({ + '.siem-signals-default-old-one': { + alias: '.siem-signals-default', + indexName: '.siem-signals-default-old-one', + space: 'default', + }, + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_alias_per_space.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_alias_per_space.ts new file mode 100644 index 0000000000000..04895f0d74f39 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_alias_per_space.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { ElasticsearchClient } from '@kbn/core/server'; + +interface IndexAlias { + alias: string; + space: string; + indexName: string; +} + +/** + * Retrieves index, its alias and Kibana space + */ +export const getIndexAliasPerSpace = async ({ + esClient, + signalsIndex, + signalsAliasAllSpaces, +}: { + esClient: ElasticsearchClient; + signalsIndex: string; + signalsAliasAllSpaces: string; +}): Promise> => { + const response = await esClient.indices.getAlias( + { + name: signalsAliasAllSpaces, + }, + { meta: true } + ); + + const indexAliasesMap = Object.keys(response.body).reduce>( + (acc, indexName) => { + if (!indexName.startsWith('.internal.alerts-')) { + const alias = Object.keys(response.body[indexName].aliases)[0]; + + acc[indexName] = { + alias, + space: alias.replace(`${signalsIndex}-`, ''), + indexName, + }; + } + + return acc; + }, + {} + ); + + return indexAliasesMap; +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_index_versions_by_index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_versions_by_index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_index_versions_by_index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_versions_by_index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_index_versions_by_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_versions_by_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_index_versions_by_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_index_versions_by_index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_latest_index_template_version.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_latest_index_template_version.test.ts new file mode 100644 index 0000000000000..ea48c51aabcc5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_latest_index_template_version.test.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { IndicesGetIndexTemplateResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; +import { getLatestIndexTemplateVersion } from './get_latest_index_template_version'; + +describe('getIndexAliasPerSpace', () => { + let esClient: ReturnType; + + beforeEach(() => { + esClient = elasticsearchServiceMock.createElasticsearchClient(); + }); + + it('returns latest index template version', async () => { + esClient.indices.getIndexTemplate.mockResponseOnce({ + index_templates: [ + { index_template: { version: 77 } }, + { index_template: { version: 10 } }, + { index_template: { version: 23 } }, + { index_template: { version: 0 } }, + ], + } as IndicesGetIndexTemplateResponse); + + const version = await getLatestIndexTemplateVersion({ + esClient, + name: '.siem-signals-*', + }); + + expect(version).toBe(77); + }); + + it('returns 0 if templates empty', async () => { + esClient.indices.getIndexTemplate.mockResponseOnce({ + index_templates: [], + }); + + const version = await getLatestIndexTemplateVersion({ + esClient, + name: '.siem-signals-*', + }); + + expect(version).toBe(0); + }); + + it('returns 0 if request fails', async () => { + esClient.indices.getIndexTemplate.mockRejectedValueOnce('Failure'); + + const version = await getLatestIndexTemplateVersion({ + esClient, + name: '.siem-signals-*', + }); + + expect(version).toBe(0); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_latest_index_template_version.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_latest_index_template_version.ts new file mode 100644 index 0000000000000..b06a14adc2ce2 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_latest_index_template_version.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { ElasticsearchClient } from '@kbn/core/server'; + +/** + * Retrieves the latest version of index template + * There are can be multiple index templates across different Kibana spaces, + * so we get them all and return the latest(greatest) number + */ +export const getLatestIndexTemplateVersion = async ({ + esClient, + name, +}: { + esClient: ElasticsearchClient; + name: string; +}): Promise => { + let latestTemplateVersion: number; + try { + const response = await esClient.indices.getIndexTemplate({ name }); + const versions = response.index_templates.map( + (template) => template.index_template.version ?? 0 + ); + + latestTemplateVersion = versions.length ? Math.max(...versions) : 0; + } catch (e) { + latestTemplateVersion = 0; + } + + return latestTemplateVersion; +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_non_migrated_signals_info.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_non_migrated_signals_info.test.ts new file mode 100644 index 0000000000000..36252ab792342 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_non_migrated_signals_info.test.ts @@ -0,0 +1,177 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; +import { loggerMock } from '@kbn/logging-mocks'; + +import { getNonMigratedSignalsInfo } from './get_non_migrated_signals_info'; +import { getIndexVersionsByIndex } from './get_index_versions_by_index'; +import { getSignalVersionsByIndex } from './get_signal_versions_by_index'; +import { getLatestIndexTemplateVersion } from './get_latest_index_template_version'; +import { getIndexAliasPerSpace } from './get_index_alias_per_space'; + +jest.mock('./get_index_versions_by_index', () => ({ getIndexVersionsByIndex: jest.fn() })); +jest.mock('./get_signal_versions_by_index', () => ({ getSignalVersionsByIndex: jest.fn() })); +jest.mock('./get_latest_index_template_version', () => ({ + getLatestIndexTemplateVersion: jest.fn(), +})); +jest.mock('./get_index_alias_per_space', () => ({ getIndexAliasPerSpace: jest.fn() })); + +const getIndexVersionsByIndexMock = getIndexVersionsByIndex as jest.Mock; +const getSignalVersionsByIndexMock = getSignalVersionsByIndex as jest.Mock; +const getLatestIndexTemplateVersionMock = getLatestIndexTemplateVersion as jest.Mock; +const getIndexAliasPerSpaceMock = getIndexAliasPerSpace as jest.Mock; + +const TEMPLATE_VERSION = 77; + +describe('getNonMigratedSignalsInfo', () => { + let esClient: ReturnType; + const logger = loggerMock.create(); + + beforeEach(() => { + esClient = elasticsearchServiceMock.createElasticsearchClient(); + + getLatestIndexTemplateVersionMock.mockReturnValue(TEMPLATE_VERSION); + getIndexVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': 10, + '.siem-signals-default-old-one': 42, + }); + getSignalVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': [{ count: 2, version: 10 }], + }); + getIndexAliasPerSpaceMock.mockReturnValue({ + '.siem-signals-another-1-legacy': { + alias: '.siem-signals-another-1', + indexName: '.siem-signals-another-1-legacy', + space: 'another-1', + }, + '.siem-signals-default-old-one': { + alias: '.siem-signals-default', + indexName: '.siem-signals-default-old-one', + space: 'default', + }, + }); + }); + + it('returns empty results if no siem indices found', async () => { + getIndexAliasPerSpaceMock.mockReturnValue({}); + + const result = await getNonMigratedSignalsInfo({ + esClient, + signalsIndex: 'siem-signals', + logger, + }); + + expect(result).toEqual({ + isMigrationRequired: false, + spaces: [], + indices: [], + }); + }); + + it('returns empty when error happens', async () => { + getLatestIndexTemplateVersionMock.mockRejectedValueOnce(new Error('Test failure')); + const debugSpy = jest.spyOn(logger, 'debug'); + + const result = await getNonMigratedSignalsInfo({ + esClient, + signalsIndex: 'siem-signals', + logger, + }); + + expect(result).toEqual({ + isMigrationRequired: false, + spaces: [], + indices: [], + }); + expect(debugSpy).toHaveBeenCalledWith(expect.stringContaining('Test failure')); + }); + + it('returns empty results if no siem indices or signals outdated', async () => { + getIndexVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': TEMPLATE_VERSION, + '.siem-signals-default-old-one': TEMPLATE_VERSION, + }); + getSignalVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': [{ count: 2, version: TEMPLATE_VERSION }], + }); + + const result = await getNonMigratedSignalsInfo({ + esClient, + signalsIndex: 'siem-signals', + logger, + }); + + expect(result).toEqual({ + isMigrationRequired: false, + spaces: [], + indices: [], + }); + }); + it('returns results for outdated index', async () => { + getIndexVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': TEMPLATE_VERSION, + '.siem-signals-default-old-one': 16, + }); + getSignalVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': [{ count: 2, version: TEMPLATE_VERSION }], + }); + + const result = await getNonMigratedSignalsInfo({ + esClient, + signalsIndex: 'siem-signals', + logger, + }); + + expect(result).toEqual({ + indices: ['.siem-signals-default-old-one'], + isMigrationRequired: true, + spaces: ['default'], + }); + }); + it('returns results for outdated signals in index', async () => { + getIndexVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': TEMPLATE_VERSION, + '.siem-signals-default-old-one': TEMPLATE_VERSION, + }); + getSignalVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': [{ count: 2, version: 12 }], + }); + + const result = await getNonMigratedSignalsInfo({ + esClient, + signalsIndex: 'siem-signals', + logger, + }); + + expect(result).toEqual({ + indices: ['.siem-signals-another-1-legacy'], + isMigrationRequired: true, + spaces: ['another-1'], + }); + }); + it('returns indices in multiple spaces', async () => { + getIndexVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': 11, + '.siem-signals-default-old-one': 11, + }); + getSignalVersionsByIndexMock.mockReturnValue({ + '.siem-signals-another-1-legacy': [{ count: 2, version: 11 }], + }); + + const result = await getNonMigratedSignalsInfo({ + esClient, + signalsIndex: 'siem-signals', + logger, + }); + + expect(result).toEqual({ + indices: ['.siem-signals-another-1-legacy', '.siem-signals-default-old-one'], + isMigrationRequired: true, + spaces: ['another-1', 'default'], + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_non_migrated_signals_info.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_non_migrated_signals_info.ts new file mode 100644 index 0000000000000..d1f561fb3846c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_non_migrated_signals_info.ts @@ -0,0 +1,131 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ElasticsearchClient, Logger } from '@kbn/core/server'; + +import type { IndexVersionsByIndex } from './get_index_versions_by_index'; +import { getIndexVersionsByIndex } from './get_index_versions_by_index'; +import { + getSignalVersionsByIndex, + type SignalVersionsByIndex, +} from './get_signal_versions_by_index'; +import { isOutdated as getIsOutdated, signalsAreOutdated } from './helpers'; +import { getLatestIndexTemplateVersion } from './get_latest_index_template_version'; +import { getIndexAliasPerSpace } from './get_index_alias_per_space'; + +interface OutdatedSpaces { + isMigrationRequired: boolean; + spaces: string[]; + indices: string[]; +} + +/** + * gets lists of spaces and non-migrated signal indices + */ +export const getNonMigratedSignalsInfo = async ({ + esClient, + signalsIndex, + logger, +}: { + esClient: ElasticsearchClient; + signalsIndex: string; + logger: Logger; +}): Promise => { + const signalsAliasAllSpaces = `${signalsIndex}-*`; + + try { + const latestTemplateVersion = await getLatestIndexTemplateVersion({ + esClient, + name: signalsAliasAllSpaces, + }); + const indexAliasesMap = await getIndexAliasPerSpace({ + esClient, + signalsAliasAllSpaces, + signalsIndex, + }); + + const indices = Object.keys(indexAliasesMap); + + if (indices.length === 0) { + return { + isMigrationRequired: false, + spaces: [], + indices: [], + }; + } + + let indexVersionsByIndex: IndexVersionsByIndex = {}; + try { + indexVersionsByIndex = await getIndexVersionsByIndex({ + esClient, + index: indices, + }); + } catch (e) { + logger.debug( + `Getting information about legacy siem signals index version failed:"${e?.message}"` + ); + } + + let signalVersionsByIndex: SignalVersionsByIndex = {}; + try { + signalVersionsByIndex = await getSignalVersionsByIndex({ + esClient, + index: indices, + }); + } catch (e) { + logger.debug(`Getting information about legacy siem signals versions failed:"${e?.message}"`); + } + + const outdatedIndices = indices.reduce>( + (acc, indexName) => { + const version = indexVersionsByIndex[indexName] ?? 0; + const signalVersions = signalVersionsByIndex[indexName] ?? []; + + const isOutdated = + getIsOutdated({ current: version, target: latestTemplateVersion }) || + signalsAreOutdated({ signalVersions, target: latestTemplateVersion }); + + if (isOutdated) { + acc.push({ + indexName, + space: indexAliasesMap[indexName].space, + }); + } + + return acc; + }, + [] + ); + + const outdatedIndexNames = outdatedIndices.map((outdatedIndex) => outdatedIndex.indexName); + + // remove duplicated spaces + const spaces = [...new Set(outdatedIndices.map((indexStatus) => indexStatus.space))]; + const isMigrationRequired = outdatedIndices.length > 0; + + logger.debug( + isMigrationRequired + ? `Legacy siem signals indices require migration: "${outdatedIndexNames.join( + ', ' + )}" in "${spaces.join(', ')}" spaces` + : 'No legacy siem indices require migration' + ); + + return { + isMigrationRequired, + spaces, + indices: outdatedIndexNames, + }; + } catch (e) { + logger.debug(`Getting information about legacy siem signals failed:"${e?.message}"`); + return { + isMigrationRequired: false, + spaces: [], + indices: [], + }; + } +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_signal_versions_by_index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_signal_versions_by_index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_signal_versions_by_index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_signal_versions_by_index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_signal_versions_by_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_signal_versions_by_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_signal_versions_by_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_signal_versions_by_index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_signals_indices_in_range.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_signals_indices_in_range.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_signals_indices_in_range.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_signals_indices_in_range.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_signals_indices_in_range.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_signals_indices_in_range.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_signals_indices_in_range.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/get_signals_indices_in_range.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/migration_cleanup.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/migration_cleanup.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/migration_cleanup.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/migration_cleanup.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/migration_cleanup_policy.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/migration_cleanup_policy.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/migration_cleanup_policy.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/migration_cleanup_policy.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/migration_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/migration_service.ts similarity index 94% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/migration_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/migration_service.ts index 5a4399bd6389c..5530f0a80c5d2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/migration_service.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/migration_service.ts @@ -22,6 +22,7 @@ export interface CreateParams { export interface FinalizeParams { signalsAlias: string; migration: SignalsMigrationSO; + legacySiemSignalsAlias: string; } export interface DeleteParams { @@ -59,13 +60,14 @@ export const signalsMigrationService = ({ username, }); }, - finalize: ({ migration, signalsAlias }) => + finalize: ({ migration, signalsAlias, legacySiemSignalsAlias }) => finalizeMigration({ esClient, migration, signalsAlias, soClient, username, + legacySiemSignalsAlias, }), delete: ({ migration, signalsAlias }) => deleteMigration({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/replace_signals_index_alias.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/replace_signals_index_alias.ts similarity index 86% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/replace_signals_index_alias.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/replace_signals_index_alias.ts index ad77e64a55ac7..984707959005c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/replace_signals_index_alias.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/replace_signals_index_alias.ts @@ -26,11 +26,13 @@ export const replaceSignalsIndexAlias = async ({ esClient, newIndex, oldIndex, + legacySiemSignalsAlias, }: { alias: string; esClient: ElasticsearchClient; newIndex: string; oldIndex: string; + legacySiemSignalsAlias: string; }): Promise => { await esClient.indices.updateAliases({ body: { @@ -40,12 +42,11 @@ export const replaceSignalsIndexAlias = async ({ ], }, }); - // TODO: space-aware? await esClient.indices.updateAliases({ body: { actions: [ - { remove: { index: oldIndex, alias: '.siem-signals-default' } }, - { add: { index: newIndex, alias: '.siem-signals-default', is_write_index: false } }, + { remove: { index: oldIndex, alias: legacySiemSignalsAlias } }, + { add: { index: newIndex, alias: legacySiemSignalsAlias, is_write_index: false } }, ], }, }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_and_timelines_status/get_prebuilt_rules_and_timelines_status_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rules_status/get_prebuilt_rules_status_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_and_timelines_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_package.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_package.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_package.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/install_prebuilt_rules_and_timelines/install_prebuilt_rules_package.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_installation/perform_rule_installation_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_installation/perform_rule_installation_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_installation/perform_rule_installation_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_installation/perform_rule_installation_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_diffable_fields_match_rule_type.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_diffable_fields_match_rule_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_diffable_fields_match_rule_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_diffable_fields_match_rule_type.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_diffable_fields_match_rule_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_diffable_fields_match_rule_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_diffable_fields_match_rule_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_diffable_fields_match_rule_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_pick_version_is_target.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_pick_version_is_target.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_pick_version_is_target.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_pick_version_is_target.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_pick_version_is_target.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_pick_version_is_target.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_pick_version_is_target.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_pick_version_is_target.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_field_upgrade_specifier.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_field_upgrade_specifier.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_field_upgrade_specifier.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_field_upgrade_specifier.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_field_upgrade_specifier.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_field_upgrade_specifier.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_field_upgrade_specifier.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_field_upgrade_specifier.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_props_to_rule_type_map.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_props_to_rule_type_map.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_props_to_rule_type_map.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_props_to_rule_type_map.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_upgradeable_rules_payload.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_upgradeable_rules_payload.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_upgradeable_rules_payload.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/create_upgradeable_rules_payload.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/diffable_rule_fields_mappings.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/diffable_rule_fields_mappings.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/diffable_rule_fields_mappings.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/diffable_rule_fields_mappings.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/diffable_rule_fields_mappings.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/diffable_rule_fields_mappings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/diffable_rule_fields_mappings.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/diffable_rule_fields_mappings.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_field_predefined_value.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_field_predefined_value.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_field_predefined_value.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_field_predefined_value.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_field_predefined_value.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_field_predefined_value.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_field_predefined_value.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_field_predefined_value.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_upgradeable_rules.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_upgradeable_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_upgradeable_rules.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_upgradeable_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_upgradeable_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_upgradeable_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_upgradeable_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_upgradeable_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_value_for_field.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_value_for_field.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_value_for_field.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_value_for_field.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_value_from_rule_version.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_value_from_rule_version.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_value_from_rule_version.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/get_value_from_rule_version.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/perform_rule_upgrade_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/register_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/register_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/register_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/register_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_installation/review_rule_installation_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_installation/review_rule_installation_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_installation/review_rule_installation_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_installation/review_rule_installation_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_upgrade/review_rule_upgrade_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_upgrade/review_rule_upgrade_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_upgrade/review_rule_upgrade_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/review_rule_upgrade/review_rule_upgrade_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/constants.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/README.md new file mode 100644 index 0000000000000..102e762422d0b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/README.md @@ -0,0 +1,184 @@ + + +### How to on board a new prepackage timelines: + + + +1. [Have the env params set up](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/README.md) + +2. Create a new timelines template into `x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines` + + ##### 2.a : Create a new template from UI and export it. + + 1. Go to Security Solution app in Kibana + 2. Go to timelines > templates > custom templates (a filter on the right) + 3. Click `Create new timeline template` + 4. Edit your template + 5. Export only **one** timeline template each time and put that in `x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines`. (For potential update requirement in the future, we put one timeline in each file to keep nice and clear) + 6. Rename the file extension to `.json` + 7. Check the chapter of `Fields to hightlight for on boarding a new prepackaged timeline` in this readme and update your template + + + + + ##### 2.b : Create a new template from scratch + Please note that below template is just an example, please replace all your fields with whatever makes sense. Do check `Fields to hightlight for on boarding a new prepackaged timeline` to make sure the template can be created as expected. + + + cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines + + + + echo '{"savedObjectId":null,"version":null,"columns":[{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"@timestamp","searchable":null},{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"kibana.alert.rule.description","searchable":null},{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"event.action","searchable":null},{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"process.name","searchable":null},{"indexes":null,"aggregatable":true,"name":null,"description":"The working directory of the process.","columnHeaderType":"not-filtered","id":"process.working_directory","category":"process","type":"string","searchable":null,"example":"/home/alice"},{"indexes":null,"aggregatable":true,"name":null,"description":"Array of process arguments, starting with the absolute path to\nthe executable.\n\nMay be filtered to protect sensitive information.","columnHeaderType":"not-filtered","id":"process.args","category":"process","type":"string","searchable":null,"example":"[\"/usr/bin/ssh\",\"-l\",\"user\",\"10.0.0.16\"]"},{"indexes":null,"name":null,"columnHeaderType":"not-filtered","id":"process.pid","searchable":null},{"indexes":null,"aggregatable":true,"name":null,"description":"Absolute path to the process executable.","columnHeaderType":"not-filtered","id":"process.parent.executable","category":"process","type":"string","searchable":null,"example":"/usr/bin/ssh"},{"indexes":null,"aggregatable":true,"name":null,"description":"Array of process arguments.\n\nMay be filtered to protect sensitive information.","columnHeaderType":"not-filtered","id":"process.parent.args","category":"process","type":"string","searchable":null,"example":"[\"ssh\",\"-l\",\"user\",\"10.0.0.16\"]"},{"indexes":null,"aggregatable":true,"name":null,"description":"Process id.","columnHeaderType":"not-filtered","id":"process.parent.pid","category":"process","type":"number","searchable":null,"example":"4242"},{"indexes":null,"aggregatable":true,"name":null,"description":"Short name or login of the user.","columnHeaderType":"not-filtered","id":"user.name","category":"user","type":"string","searchable":null,"example":"albert"},{"indexes":null,"aggregatable":true,"name":null,"description":"Name of the host.\n\nIt can contain what `hostname` returns on Unix systems, the fully qualified\ndomain name, or a name specified by the user. The sender decides which value\nto use.","columnHeaderType":"not-filtered","id":"host.name","category":"host","type":"string","searchable":null}],"dataProviders":[{"excluded":false,"and":[],"kqlQuery":"","name":"590eb946a7fdbacaa587ed0f6b1a16f5ad3d659ec47ef35ad0826c47af133bde","queryMatch":{"displayValue":null,"field":"_id","displayField":null,"value":"590eb946a7fdbacaa587ed0f6b1a16f5ad3d659ec47ef35ad0826c47af133bde","operator":":"},"id":"send-signal-to-timeline-action-default-draggable-event-details-value-formatted-field-value-timeline-1-signal-id-590eb946a7fdbacaa587ed0f6b1a16f5ad3d659ec47ef35ad0826c47af133bde","enabled":true}],"description":"","eventType":"all","filters":[],"kqlMode":"filter","kqlQuery":{"filterQuery":{"kuery":{"kind":"kuery","expression":""},"serializedQuery":""}},"title":"Generic Process Timeline","dateRange":{"start":1588161020848,"end":1588162280848},"savedQueryId":null,"sort":{"columnId":"@timestamp","sortDirection":"desc"},"created":1588162404153,"createdBy":"Elastic","updated":1588604767818,"updatedBy":"Elastic","eventNotes":[],"globalNotes":[],"pinnedEventIds":[],"timelineType":"template","status":"immutable","templateTimelineId":"2c7e0663-5a91-0004-aa15-26bf756d2c40","templateTimelineVersion":1}' > my_new_template.json``` + + #### Note that the json has to be minified. + #### Fields to hightlight for on boarding a new prepackaged timeline: + + - savedObjectId: null + + - version: null + + - templateTimelineId: Specify an unique uuid e.g.: `2c7e0663-5a91-0004-aa15-26bf756d2c40` + + - templateTimelineVersion: start from `1`, bump it on update + + - timelineType: `template` + + - status: `immutable` + + - indexNames: [] + + + +3. ```cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts``` + +4. ```sh ./timelines/regen_prepackage_timelines_index.sh``` + +(this will update `x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/index.ndjson`) + + + +5. Go to `http://localhost:5601/app/security#/detections/rules` and click on `Install Elastic prebuild rules` + +or run + +``` +cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts + +sh ./timelines/add_prepackaged_timelines.sh + +``` + + + +6. Check in UI or run the script below to see if prepackaged timelines on-boarded correctly. + +``` + +sh ./timelines/find_timeline_by_filter.sh immutable template elastic + +``` + + + +### How to update an existing prepackage timeline: + +1. ```cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines``` + +2. Open the json file you wish to update, and remember to bump the `templateTimelineVersion` + +3. Go to ```cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts```, run ```sh ./timelines/regen_prepackage_timelines_index.sh``` + +4. Go to `http://localhost:5601/app/security#/detections/rules` and click on `Install Elastic prebuild rules` + +or run + +``` + +sh ./timelines/add_prepackaged_timelines.sh + +``` + + + +5. Check in UI or run the script below to see if the prepackaged timeline updated correctly. + +``` + +sh ./timelines/find_timeline_by_filter.sh immutable template elastic + +``` + + + + +### How to install prepackaged timelines: + +1. ```cd x-pack/plugins/siem/server/lib/detection_engine/scripts``` + +2. ```sh ./timelines/add_prepackaged_timelines.sh``` + +3. ```sh ./timelines/find_timeline_by_filter.sh immutable template elastic``` + + + +### Get timeline by id: + +``` + +cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts + +sh ./timelines/get_timeline_by_id.sh {id} + +``` + + + + +### Get timeline by templateTimelineId: + +``` + +cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts + +sh ./timelines/get_timeline_by_template_timeline_id.sh {template_timeline_id} + +``` + + + + +### Get all custom timelines: + +``` + +cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts + +sh ./timelines/get_all_timelines.sh + +``` + + + + +### Delete all timelines: + +``` + +cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts + +sh ./timelines/delete_all_timelines.sh + +``` + + + +### Delete timeline by timeline id: + +``` + +cd x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts + +./timelines/delete_all_alerts.sh {timeline_id} + +``` diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/alerts_host.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/alerts_host.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/alerts_host.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/alerts_host.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/alerts_user.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/alerts_user.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/alerts_user.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/alerts_user.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/endpoint.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/endpoint.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/endpoint.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/endpoint.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/file_ex.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/file_ex.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/file_ex.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/file_ex.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/index.ndjson b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/index.ndjson similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/index.ndjson rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/index.ndjson diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/network.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/network.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/network.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/network.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/network_ex.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/network_ex.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/network_ex.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/network_ex.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/process.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/process.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/process.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/process.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/process_ex.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/process_ex.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/process_ex.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/process_ex.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/registry_ex.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/registry_ex.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/registry_ex.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/registry_ex.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/threat.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/threat.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/threat.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/content/prepackaged_timelines/threat.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/aggregate_prebuilt_rule_errors.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/aggregate_prebuilt_rule_errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/aggregate_prebuilt_rule_errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/aggregate_prebuilt_rule_errors.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculate_rule_diff.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculate_rule_diff.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculate_rule_diff.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculate_rule_diff.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/data_source_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/data_source_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/data_source_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/data_source_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/data_source_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/data_source_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/data_source_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/data_source_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/eql_query_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/eql_query_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/eql_query_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/eql_query_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/eql_query_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/eql_query_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/eql_query_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/eql_query_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/esql_query_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/esql_query_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/esql_query_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/esql_query_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/esql_query_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/esql_query_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/esql_query_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/esql_query_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/force_target_version_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/force_target_version_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/force_target_version_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/force_target_version_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/force_target_version_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/force_target_version_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/force_target_version_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/force_target_version_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/kql_query_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/kql_query_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/kql_query_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/kql_query_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/kql_query_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/kql_query_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/kql_query_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/kql_query_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/multi_line_string_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/number_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/number_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/number_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/number_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/number_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/number_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/number_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/number_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/rule_type_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/rule_type_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/rule_type_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/rule_type_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/rule_type_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/rule_type_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/rule_type_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/rule_type_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/scalar_array_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/scalar_array_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/scalar_array_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/scalar_array_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/scalar_array_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/scalar_array_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/scalar_array_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/scalar_array_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/simple_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/simple_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/simple_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/simple_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/single_line_string_diff_algorithm.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/single_line_string_diff_algorithm.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/single_line_string_diff_algorithm.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/single_line_string_diff_algorithm.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/single_line_string_diff_algorithm.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/single_line_string_diff_algorithm.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/single_line_string_diff_algorithm.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/algorithms/single_line_string_diff_algorithm.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/calculate_rule_fields_diff.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/calculate_rule_fields_diff.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/calculate_rule_fields_diff.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/calculate_rule_fields_diff.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/diff_calculation_helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/diff_calculation_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/diff_calculation_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/diff/calculation/diff_calculation_helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/ensure_latest_rules_package_installed.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/ensure_latest_rules_package_installed.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/ensure_latest_rules_package_installed.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/ensure_latest_rules_package_installed.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_install.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_install.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_install.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_install.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_install.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_install.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_install.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_install.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_update.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_update.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_update.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_update.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_update.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_update.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_update.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/get_rules_to_update.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/perform_timelines_installation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/perform_timelines_installation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/perform_timelines_installation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/perform_timelines_installation.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/__mocks__/prebuilt_rule_assets_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/__mocks__/prebuilt_rule_assets_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/__mocks__/prebuilt_rule_assets_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/__mocks__/prebuilt_rule_assets_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_validation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_validation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_validation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_validation.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/prebuilt_rule_objects_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/prebuilt_rule_objects_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/prebuilt_rule_objects_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/prebuilt_rule_objects_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/upgrade_prebuilt_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/upgrade_prebuilt_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/upgrade_prebuilt_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/upgrade_prebuilt_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/fetch_rule_versions_triad.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/fetch_rule_versions_triad.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/fetch_rule_versions_triad.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/fetch_rule_versions_triad.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/rule_version_specifier.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/rule_version_specifier.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/rule_version_specifier.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/rule_version_specifier.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/zip_rule_versions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/zip_rule_versions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/zip_rule_versions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_versions/zip_rule_versions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/mocks.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset_validate_type_dependents.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset_validate_type_dependents.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset_validate_type_dependents.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset_validate_type_dependents.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset_validate_type_dependents.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset_validate_type_dependents.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset_validate_type_dependents.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_assets/prebuilt_rule_asset_validate_type_dependents.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_groups/get_rule_groups.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_groups/get_rule_groups.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_groups/get_rule_groups.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/model/rule_groups/get_rule_groups.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts similarity index 97% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts index 3c99cebbbe8fb..e8a1e915f43dd 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts @@ -15,7 +15,7 @@ import type { AlertingApiRequestHandlerContext } from '@kbn/alerting-plugin/serv import { rulesClientMock } from '@kbn/alerting-plugin/server/mocks'; // See: https://github.com/elastic/kibana/issues/117255, the moduleNameMapper creates mocks to avoid memory leaks from kibana core. -// We cannot import from "../../../../../../actions/server" directly here or we have a really bad memory issue. We cannot add this to the existing mocks we created, this fix must be here. +// We cannot import from "../../../../../../../../actions/server" directly here or we have a really bad memory issue. We cannot add this to the existing mocks we created, this fix must be here. import { actionsClientMock } from '@kbn/actions-plugin/server/actions_client/actions_client.mock'; import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; import { listMock } from '@kbn/lists-plugin/server/mocks'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/response_factory.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/response_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/response_factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/response_factory.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/server.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/server.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/server.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/server.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/test_adapters.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/test_adapters.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/test_adapters.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/test_adapters.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/__snapshots__/get_signals_template.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/__snapshots__/get_signals_template.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/__snapshots__/get_signals_template.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/__snapshots__/get_signals_template.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/check_template_version.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/check_template_version.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/check_template_version.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/check_template_version.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/ecs_mapping.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/ecs_mapping.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/ecs_mapping.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/ecs_mapping.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_index_version.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/get_index_version.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_index_version.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/get_index_version.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_signals_template.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/get_signals_template.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_signals_template.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/get_signals_template.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_signals_template.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/get_signals_template.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_signals_template.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/get_signals_template.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/other_mappings.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/other_mappings.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/other_mappings.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/other_mappings.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/preview_policy.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/preview_policy.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/preview_policy.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/preview_policy.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_alerts_index_exists_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/read_alerts_index_exists_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_alerts_index_exists_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/read_alerts_index_exists_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signal_aad_mapping.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/signal_aad_mapping.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signal_aad_mapping.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/signal_aad_mapping.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signal_extra_fields.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/signal_extra_fields.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signal_extra_fields.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/signal_extra_fields.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signals_mapping.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/signals_mapping.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signals_mapping.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/signals_mapping.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signals_policy.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/signals_policy.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/signals_policy.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/index/signals_policy.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts similarity index 97% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts index 0ff0220056e73..4421a116def76 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts @@ -74,6 +74,7 @@ export const finalizeSignalsMigrationRoute = ( }); const spaceId = securitySolution.getSpaceId(); + const legacySiemSignalsAlias = appClient.getSignalsIndex(); const signalsAlias = ruleDataService.getResourceName(`security.alerts-${spaceId}`); const finalizeResults = await Promise.all( migrations.map(async (migration) => { @@ -81,6 +82,7 @@ export const finalizeSignalsMigrationRoute = ( const finalizedMigration = await migrationService.finalize({ migration, signalsAlias, + legacySiemSignalsAlias, }); if (isMigrationFailed(finalizedMigration)) { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts similarity index 96% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts index 15f64c7f96c41..8bee9b1947c2f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts @@ -65,7 +65,11 @@ export const getSignalsMigrationStatusRoute = ( const signalsAlias = appClient.getSignalsIndex(); const currentVersion = await getTemplateVersion({ alias: signalsAlias, esClient }); - const indexAliases = await getIndexAliases({ alias: signalsAlias, esClient }); + const indexAliases = await getIndexAliases({ + alias: signalsAlias, + esClient, + index: `${signalsAlias}-*`, + }); const signalsIndices = indexAliases.map((indexAlias) => indexAlias.index); const indicesInRange = await getSignalsIndicesInRange({ esClient, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_assignees_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/translations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/translations.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/signals/translations.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts similarity index 88% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts index 8013b2af9742b..4fd990e7f24fb 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts @@ -15,6 +15,7 @@ import { getDetectionRulesPreview } from './utils/get_detecton_rules_preview'; import { getSecurityListsPreview } from './utils/get_security_lists_preview'; import { getEndpointPreview } from './utils/get_endpoint_preview'; import { getDiagnosticsPreview } from './utils/get_diagnostics_preview'; +import { getIndicesMetadataPreview } from './utils/get_indices_metadata_preview'; export const telemetryDetectionRulesPreviewRoute = ( router: SecuritySolutionPluginRouter, @@ -62,12 +63,19 @@ export const telemetryDetectionRulesPreviewRoute = ( telemetrySender, }); + const indicesMetadata = await getIndicesMetadataPreview({ + logger, + telemetryReceiver, + telemetrySender, + }); + return response.ok({ body: { detection_rules: detectionRules, security_lists: securityLists, endpoints, diagnostics, + indices_metadata: indicesMetadata, }, }); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_detecton_rules_preview.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_detecton_rules_preview.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_detecton_rules_preview.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_detecton_rules_preview.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_diagnostics_preview.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_diagnostics_preview.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_diagnostics_preview.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_diagnostics_preview.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_endpoint_preview.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_endpoint_preview.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_endpoint_preview.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_endpoint_preview.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_indices_metadata_preview.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_indices_metadata_preview.ts new file mode 100644 index 0000000000000..7144034f91e71 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_indices_metadata_preview.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger } from '@kbn/core/server'; + +import { PreviewTelemetryEventsSender } from '../../../../telemetry/preview_sender'; +import type { ITelemetryReceiver } from '../../../../telemetry/receiver'; +import { PreviewTaskMetricsService } from '../../../../telemetry/preview_task_metrics'; +import type { ITelemetryEventsSender } from '../../../../telemetry/sender'; +import { createTelemetryIndicesMetadataTaskConfig } from '../../../../telemetry/tasks/indices.metadata'; + +export const getIndicesMetadataPreview = async ({ + logger, + telemetryReceiver, + telemetrySender, +}: { + logger: Logger; + telemetryReceiver: ITelemetryReceiver; + telemetrySender: ITelemetryEventsSender; +}): Promise> => { + const taskExecutionPeriod = { + last: new Date(0).toISOString(), + current: new Date().toISOString(), + }; + + const taskSender = new PreviewTelemetryEventsSender(logger, telemetrySender); + const taskMetricsService = new PreviewTaskMetricsService(logger, taskSender); + const task = createTelemetryIndicesMetadataTaskConfig(); + await task.runTask( + 'indices-metadata-telemetry', + logger, + telemetryReceiver, + taskSender, + taskMetricsService, + taskExecutionPeriod + ); + return taskSender.getEbtEventsSent(); +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_security_lists_preview.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_security_lists_preview.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_security_lists_preview.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_security_lists_preview.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/parse_ndjson.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/parse_ndjson.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/parse_ndjson.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/parse_ndjson.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/users/suggest_user_profiles_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/routes/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/register_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/register_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/register_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/register_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/build_signals_query.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/build_signals_query.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/build_signals_query.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/build_signals_query.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/build_signals_query.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/build_signals_query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/build_signals_query.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/build_signals_query.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/get_signals.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/get_signals.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/get_signals.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/get_signals.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_create_notifications.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_create_notifications.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_create_notifications.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_create_notifications.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_create_notifications.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_create_notifications.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_create_notifications.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_create_notifications.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_find_notifications.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_find_notifications.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_find_notifications.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_find_notifications.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_find_notifications.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_find_notifications.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_find_notifications.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_find_notifications.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_read_notifications.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_read_notifications.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_read_notifications.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_read_notifications.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_read_notifications.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_read_notifications.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_read_notifications.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_read_notifications.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_rules_notification_rule_type.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_rules_notification_rule_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_rules_notification_rule_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_rules_notification_rule_type.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_rules_notification_rule_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_rules_notification_rule_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_rules_notification_rule_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_rules_notification_rule_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_references.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_references.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_references.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_references.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_references.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_references.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_references.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_references.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_rule_id.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_rule_id.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_rule_id.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_rule_id.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_rule_id.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_rule_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_rule_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_extract_rule_id.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_references.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_references.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_references.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_references.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_references.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_references.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_references.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_references.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_rule_id_references.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_rule_id_references.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_rule_id_references.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_rule_id_references.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_rule_id_references.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_rule_id_references.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_rule_id_references.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_saved_object_references/legacy_inject_rule_id_references.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/legacy_types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_notification_actions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_notification_actions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_notification_actions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_notification_actions.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_notification_actions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_notification_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_notification_actions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_notification_actions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_throttle_notification_actions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_throttle_notification_actions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_throttle_notification_actions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_throttle_notification_actions.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_throttle_notification_actions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_throttle_notification_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_throttle_notification_actions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/schedule_throttle_notification_actions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/notifications/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_create_rule_actions_saved_object.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_create_rule_actions_saved_object.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_create_rule_actions_saved_object.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_create_rule_actions_saved_object.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_create_rule_actions_saved_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_create_rule_actions_saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_create_rule_actions_saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_create_rule_actions_saved_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_get_rule_actions_saved_object.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_get_rule_actions_saved_object.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_get_rule_actions_saved_object.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_get_rule_actions_saved_object.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_get_rule_actions_saved_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_get_rule_actions_saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_get_rule_actions_saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_get_rule_actions_saved_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_update_or_create_rule_actions_saved_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_update_or_create_rule_actions_saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_update_or_create_rule_actions_saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_update_or_create_rule_actions_saved_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_update_rule_actions_saved_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_update_rule_actions_saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_update_rule_actions_saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_update_rule_actions_saved_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/find_exception_references/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/register_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/register_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/register_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/register_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_exceptions/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/deprecation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/deprecation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/deprecation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/deprecation.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/register_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/register_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/register_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/register_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_actions_response.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_actions_response.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_actions_response.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_actions_response.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_enable_disable_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_enable_disable_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_enable_disable_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_enable_disable_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_schedule_rule_run.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_schedule_rule_run.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_schedule_rule_run.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/bulk_schedule_rule_run.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/fetch_rules_by_query_or_ids.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/fetch_rules_by_query_or_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/fetch_rules_by_query_or_ids.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/fetch_rules_by_query_or_ids.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/get_duplicates.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/get_duplicates.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/get_duplicates.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/get_duplicates.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/get_duplicates.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/get_duplicates.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/get_duplicates.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/get_duplicates.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/handle_coverage_overview_request.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/coverage_overview/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/export_rules/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/export_rules/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/export_rules/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/export_rules/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/filters/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/find_rules/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/read_tags.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/read_tags.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/read_tags.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/read_tags.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/read_tags.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/read_tags.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/read_tags.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/read_tags.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/tags/read_tags/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/timeouts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/timeouts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/timeouts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/timeouts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_exceptions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_exceptions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_exceptions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_exceptions.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_exceptions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_exceptions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_exceptions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_exceptions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_rule.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/actions/duplicate_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/action_to_rules_client_operation.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/dry_run.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/dry_run.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/dry_run.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/dry_run.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/rule_params_modifier.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/split_bulk_edit_actions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/validations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/validations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/validations.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/validations.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/detection_rules_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/detection_rules_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/detection_rules_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/detection_rules_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/read_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/read_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/read_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/read_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/common_params_camel_to_snake.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/common_params_camel_to_snake.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/common_params_camel_to_snake.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/common_params_camel_to_snake.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/common_params_camel_to_snake.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/common_params_camel_to_snake.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/common_params_camel_to_snake.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/common_params_camel_to_snake.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_alerting_rule_to_rule_response.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_alerting_rule_to_rule_response.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_alerting_rule_to_rule_response.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_alerting_rule_to_rule_response.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_prebuilt_rule_asset_to_rule_response.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_prebuilt_rule_asset_to_rule_response.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_prebuilt_rule_asset_to_rule_response.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_prebuilt_rule_asset_to_rule_response.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_prebuilt_rule_asset_to_rule_response.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_prebuilt_rule_asset_to_rule_response.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_prebuilt_rule_asset_to_rule_response.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_prebuilt_rule_asset_to_rule_response.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_rule_response_to_alerting_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_rule_response_to_alerting_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_rule_response_to_alerting_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/convert_rule_response_to_alerting_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/internal_rule_to_api_response.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/internal_rule_to_api_response.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/internal_rule_to_api_response.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/internal_rule_to_api_response.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/normalize_rule_params.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/normalize_rule_params.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/normalize_rule_params.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/normalize_rule_params.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/normalize_rule_params.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/normalize_rule_params.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/normalize_rule_params.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/normalize_rule_params.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/type_specific_camel_to_snake.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/type_specific_camel_to_snake.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/type_specific_camel_to_snake.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/type_specific_camel_to_snake.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/type_specific_camel_to_snake.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/type_specific_camel_to_snake.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/type_specific_camel_to_snake.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/converters/type_specific_camel_to_snake.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_custom_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_custom_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_custom_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_custom_rule.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_prebuilt_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_prebuilt_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_prebuilt_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_prebuilt_rule.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.delete_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.delete_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.delete_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.delete_rule.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rule.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rules.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rules.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.patch_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.patch_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.patch_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.patch_rule.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.update_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.update_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.update_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.update_rule.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.upgrade_prebuilt_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.upgrade_prebuilt_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.upgrade_prebuilt_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.upgrade_prebuilt_rule.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_defaults.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_defaults.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_defaults.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_defaults.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_patch.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_patch.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_patch.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_patch.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_patch.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_patch.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_patch.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_patch.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_update.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_update.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_update.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/apply_rule_update.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_is_customized.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_is_customized.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_is_customized.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_is_customized.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_rule_source.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_rule_source.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_rule_source.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_rule_source.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_rule_source.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_rule_source.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_rule_source.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/mergers/rule_source/calculate_rule_source.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/__mocks__/get_rule_by_rule_id.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/__mocks__/get_rule_by_rule_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/__mocks__/get_rule_by_rule_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/__mocks__/get_rule_by_rule_id.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/delete_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/delete_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/delete_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/delete_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_id.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_id.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_id_or_rule_id.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_id_or_rule_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_id_or_rule_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_id_or_rule_id.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_rule_id.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_rule_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_rule_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/get_rule_by_rule_id.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/patch_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/patch_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/patch_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/patch_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/update_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/update_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/update_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/update_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/upgrade_prebuilt_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/upgrade_prebuilt_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/upgrade_prebuilt_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/upgrade_prebuilt_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/check_for_default_rule_exception_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/check_for_default_rule_exception_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/check_for_default_rule_exception_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/check_for_default_rule_exception_list.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/check_for_default_rule_exception_list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/check_for_default_rule_exception_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/check_for_default_rule_exception_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/check_for_default_rule_exception_list.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rule_default_exception_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rule_default_exception_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rule_default_exception_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rule_default_exception_list.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rule_default_exception_list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rule_default_exception_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rule_default_exception_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rule_default_exception_list.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rules_with_duplicated_default_exceptions_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rules_with_duplicated_default_exceptions_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rules_with_duplicated_default_exceptions_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rules_with_duplicated_default_exceptions_list.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rules_with_duplicated_default_exceptions_list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rules_with_duplicated_default_exceptions_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rules_with_duplicated_default_exceptions_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/exceptions/validate_rules_with_duplicated_default_exceptions_list.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/exportable_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/exportable_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/exportable_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/exportable_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_all.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_by_object_ids.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_details_ndjson.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_details_ndjson.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_details_ndjson.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_details_ndjson.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_details_ndjson.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_details_ndjson.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_details_ndjson.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_details_ndjson.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_action_connectors.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_action_connectors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_action_connectors.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_action_connectors.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_exceptions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_exceptions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_exceptions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_exceptions.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_exceptions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_exceptions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_exceptions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/get_export_rule_exceptions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/transform_rule_to_exportable_format.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/transform_rule_to_exportable_format.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/transform_rule_to_exportable_format.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/export/transform_rule_to_exportable_format.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/utils/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_for_import.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_for_import.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_for_import.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_for_import.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_for_import.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_for_import.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_for_import.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_for_import.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_from_asset.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_from_asset.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_from_asset.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_from_asset.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_from_asset.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_from_asset.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_from_asset.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/calculate_rule_source_from_asset.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/check_rule_exception_references.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/check_rule_exception_references.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/check_rule_exception_references.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/check_rule_exception_references.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/check_rule_exception_references.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/check_rule_exception_references.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/check_rule_exception_references.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/check_rule_exception_references.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/converters/convert_rule_to_import_to_rule_response.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/converters/convert_rule_to_import_to_rule_response.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/converters/convert_rule_to_import_to_rule_response.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/converters/convert_rule_to_import_to_rule_response.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/converters/convert_rule_to_import_to_rule_response.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/converters/convert_rule_to_import_to_rule_response.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/converters/convert_rule_to_import_to_rule_response.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/converters/convert_rule_to_import_to_rule_response.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_promise_from_rule_import_stream.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_promise_from_rule_import_stream.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_promise_from_rule_import_stream.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_promise_from_rule_import_stream.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_promise_from_rule_import_stream.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_promise_from_rule_import_stream.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_promise_from_rule_import_stream.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_promise_from_rule_import_stream.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/errors.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/errors.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/gather_referenced_exceptions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/gather_referenced_exceptions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/gather_referenced_exceptions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/gather_referenced_exceptions.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/gather_referenced_exceptions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/gather_referenced_exceptions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/gather_referenced_exceptions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/gather_referenced_exceptions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rule_exceptions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rule_exceptions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rule_exceptions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rule_exceptions.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rule_exceptions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rule_exceptions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rule_exceptions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rule_exceptions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_legacy.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_legacy.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_legacy.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_legacy.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_legacy.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_legacy.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_legacy.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_legacy.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer_interface.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer_interface.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer_interface.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/rule_source_importer/rule_source_importer_interface.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/enrich_filter_with_rule_type_mappings.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/enrich_filter_with_rule_type_mappings.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/enrich_filter_with_rule_type_mappings.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/enrich_filter_with_rule_type_mappings.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/enrich_filter_with_rule_type_mappings.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/enrich_filter_with_rule_type_mappings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/enrich_filter_with_rule_type_mappings.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/enrich_filter_with_rule_type_mappings.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/find_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/get_existing_prepackaged_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/transform_sort_field.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/transform_sort_field.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/transform_sort_field.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/search/transform_sort_field.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_actions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_actions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_actions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_actions.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_actions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_actions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_actions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/utils/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/utils/validate.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_request.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_request.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_request.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_request.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_request.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_request.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_request.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_request.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_request.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_request.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_request.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_request.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/health_interval.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/health_interval.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/health_interval.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/health_interval.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/health_timings.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/health_timings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/health_timings.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/health_timings.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/setup/setup_health_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/setup/setup_health_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/setup/setup_health_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/setup/setup_health_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/register_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/register_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/register_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/register_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/README.md new file mode 100644 index 0000000000000..7e5022d6cbbd4 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/README.md @@ -0,0 +1,48 @@ +# Detection Engine health logic + +See [README](../../../../../../common/api/detection_engine/rule_monitoring/detection_engine_health/README.md) in the common folder for info about the Detection Engine health API. + +This logic provides the following functionality via the `IDetectionEngineHealthClient` interface: + +- Calculating health snapshots for different "slices" of rules in the cluster: + - the whole cluster: all detection rules in all Kibana spaces + - a given space: all rules in the current Kibana space + - a given rule: an individual rule specified by id +- Installing assets for monitoring health, such as Kibana dashboards, etc. + +## Assets for monitoring health + +The assets' sources are located in the repo under `x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets`. + +### Assets are installed on behalf of the internal user + +The important aspect to know about is that we install these assets via the saved objects `import()` method, and do it on behalf of the internal Kibana user (which is `kibana_system` by default). This user has privileges for writing saved objects out of the box, which allows our users to be able to install the assets without configuring any additional RBAC. + +See `createDetectionEngineHealthClient` and `installAssetsForMonitoringHealth` for the implementation details. + +### Assets' source files are JSON + +Another thing to consider is that the assets are stored as `.json` files in the repo. This has pros and cons, but the important benefit here is that it allows you to make changes in the assets faster. Especially it applies to Kibana dashboards, which are large objects, and it's hard to construct a dashboard manually in the code. + +### Updating the rule monitoring dashboard + +For example, let's talk about updating the `dashboard_rule_monitoring.json`. It is very convenient to be able to install this dashboard via calling the `_setup` endpoint, and then go edit it in Kibana, save it, export it, and update the source file based on the exported `.ndjson` file. + +Only a few adjustments would need to be done after that manually in the source file: + +- obviously, formatting to JSON +- the dashboard's id has to be updated to `security-detection-rule-monitoring-` +- you have to make sure the references to tags are specified correctly: + + ```json + { + "id": "fleet-managed-", + "name": "tag-ref-fleet-managed", + "type": "tag" + }, + { + "id": "security-solution-", + "name": "tag-ref-security-solution", + "type": "tag" + } + ``` diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/assets.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/assets.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/assets.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/assets.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/dashboard_rule_monitoring.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/dashboard_rule_monitoring.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/dashboard_rule_monitoring.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/dashboard_rule_monitoring.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/data_view_kibana_event_log.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/data_view_kibana_event_log.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/data_view_kibana_event_log.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/data_view_kibana_event_log.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/install_assets_for_rule_monitoring.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/install_assets_for_rule_monitoring.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/install_assets_for_rule_monitoring.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/install_assets_for_rule_monitoring.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/tag_managed.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/tag_managed.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/tag_managed.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/tag_managed.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/tag_security_solution.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/tag_security_solution.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/tag_security_solution.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/assets/tag_security_solution.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client_interface.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client_interface.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client_interface.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/detection_engine_health_client_interface.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/health_stats_for_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/health_stats_for_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/health_stats_for_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/health_stats_for_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/rule_execution_stats.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/rule_execution_stats.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/rule_execution_stats.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/aggregations/rule_execution_stats.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/event_log_health_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/event_log_health_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/event_log_health_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/event_log/event_log_health_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/health_stats_for_cluster.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/health_stats_for_cluster.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/health_stats_for_cluster.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/health_stats_for_cluster.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/health_stats_for_space.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/health_stats_for_space.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/health_stats_for_space.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/health_stats_for_space.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/aggregations/rule_stats.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/fetch_rule_by_id.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/fetch_rule_by_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/fetch_rule_by_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/fetch_rule_by_id.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/filters.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/filters.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/filters.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/filters.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/rule_objects_health_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/rule_objects_health_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/rule_objects_health_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/rule_objects_health_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_spaces/aggregations/spaces.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_spaces/aggregations/spaces.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_spaces/aggregations/spaces.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_spaces/aggregations/spaces.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_spaces/rule_spaces_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_spaces/rule_spaces_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_spaces/rule_spaces_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_spaces/rule_spaces_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/event_log_constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/event_log_constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/event_log_constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/event_log_constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/event_log_fields.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/event_log_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/event_log_fields.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/event_log_fields.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/register_event_log_provider.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/register_event_log_provider.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/register_event_log_provider.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/event_log/register_event_log_provider.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client_interface.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client_interface.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client_interface.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/client_interface.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/correlation_ids.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/correlation_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/correlation_ids.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_executors/correlation_ids.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_routes/client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_routes/client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_routes/client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_routes/client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_routes/client_interface.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_routes/client_interface.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_routes/client_interface.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/client_for_routes/client_interface.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/create_rule_execution_summary.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/create_rule_execution_summary.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/create_rule_execution_summary.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/create_rule_execution_summary.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/aggregations/execution_results/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_reader.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_reader.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_reader.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_reader.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_writer.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_writer.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_writer.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/event_log/event_log_writer.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/execution_settings/fetch_rule_execution_settings.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/execution_settings/fetch_rule_execution_settings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/execution_settings/fetch_rule_execution_settings.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/execution_settings/fetch_rule_execution_settings.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/rule_execution_log/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/service.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/service_interface.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/service_interface.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/service_interface.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/service_interface.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/console_logging.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/console_logging.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/console_logging.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/console_logging.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/es_aggregations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/es_aggregations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/es_aggregations.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/es_aggregations.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/kql.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/kql.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/kql.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/kql.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/normalization.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/normalization.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/normalization.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/utils/normalization.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_monitoring/mocks.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/alert_instance_factory_stub.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/alert_instance_factory_stub.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/alert_instance_factory_stub.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/alert_instance_factory_stub.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/preview_rule_execution_logger.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/preview_rule_execution_logger.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/preview_rule_execution_logger.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/preview_rule_execution_logger.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_scoped_cluster_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_scoped_cluster_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_scoped_cluster_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_scoped_cluster_client.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_scoped_cluster_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_scoped_cluster_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_scoped_cluster_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_scoped_cluster_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/register_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/register_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/register_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/api/register_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_preview/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/endpoint_response_action.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/endpoint_response_action.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/endpoint_response_action.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/endpoint_response_action.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/osquery_response_action.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/osquery_response_action.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/osquery_response_action.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/osquery_response_action.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/schedule_notification_response_actions.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_response_actions/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/mocks.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_alert_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_alert_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_alert_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_alert_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/empty_signal_source_hit.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/empty_signal_source_hit.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/empty_signal_source_hit.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/empty_signal_source_hit.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/es_results.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/es_results.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/es_results.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/es_results.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/threshold.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/threshold.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/threshold.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/threshold.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/create_eql_alert_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/create_eql_alert_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/create_eql_alert_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/create_eql_alert_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/wrap_sequences_factory.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/wrap_sequences_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/wrap_sequences_factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/wrap_sequences_factory.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/build_esql_search_request.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/build_esql_search_request.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/build_esql_search_request.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/build_esql_search_request.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/create_esql_alert_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/create_esql_alert_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/create_esql_alert_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/create_esql_alert_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/esql.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/esql.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/esql.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/esql.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/esql_request.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/esql_request.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/esql_request.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/esql_request.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/fetch_source_documents.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/fetch_source_documents.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/fetch_source_documents.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/fetch_source_documents.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/generate_alert_id.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/generate_alert_id.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/generate_alert_id.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/generate_alert_id.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/generate_alert_id.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/generate_alert_id.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/generate_alert_id.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/generate_alert_id.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/row_to_document.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/row_to_document.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/row_to_document.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/row_to_document.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/row_to_document.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/row_to_document.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/row_to_document.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/utils/row_to_document.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_esql_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_esql_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_esql_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_esql_alerts.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_esql_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_esql_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_esql_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_esql_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_suppressed_esql_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_suppressed_esql_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_suppressed_esql_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_suppressed_esql_alerts.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_suppressed_esql_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_suppressed_esql_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_suppressed_esql_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/esql/wrap_suppressed_esql_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/bulk_create_factory.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/bulk_create_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/bulk_create_factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/bulk_create_factory.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/__snapshots__/build_alert.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/__snapshots__/build_alert.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/__snapshots__/build_alert.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/__snapshots__/build_alert.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/build_alert.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_boolean_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_boolean_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_boolean_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_boolean_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_date_type.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_date_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_date_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_date_type.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_date_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_date_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_date_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_date_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_ip_type.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_ip_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_ip_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_ip_type.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_ip_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_ip_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_ip_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_ip_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_long_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_long_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_long_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_long_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_numeric_type.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_numeric_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_numeric_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_numeric_type.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_numeric_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_numeric_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_numeric_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/ecs_types_validators/is_valid_numeric_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/generate_building_block_ids.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/generate_building_block_ids.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/generate_building_block_ids.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/generate_building_block_ids.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/transform_hit_to_alert.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/transform_hit_to_alert.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/transform_hit_to_alert.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/transform_hit_to_alert.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/transform_hit_to_alert.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/transform_hit_to_alert.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/transform_hit_to_alert.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/transform_hit_to_alert.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/traverse_and_mutate_doc.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/traverse_and_mutate_doc.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/traverse_and_mutate_doc.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/traverse_and_mutate_doc.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/traverse_and_mutate_doc.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/traverse_and_mutate_doc.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/traverse_and_mutate_doc.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/utils/traverse_and_mutate_doc.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/wrap_hits_factory.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/wrap_hits_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/factories/wrap_hits_factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/factories/wrap_hits_factory.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/create_indicator_match_alert_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/create_indicator_match_alert_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/create_indicator_match_alert_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/create_indicator_match_alert_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/indicator_match.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/indicator_match.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/indicator_match.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/indicator_match.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_enrichment.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_enrichment.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_enrichment.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_enrichment.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/build_threat_mapping_filter.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_event_signal.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_event_signal.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_event_signal.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_event_signal.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signal.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signal.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signal.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signal.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/enrich_signal_threat_matches.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_allowed_fields_for_terms_query.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_allowed_fields_for_terms_query.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_allowed_fields_for_terms_query.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_allowed_fields_for_terms_query.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_allowed_fields_for_terms_query.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_allowed_fields_for_terms_query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_allowed_fields_for_terms_query.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_allowed_fields_for_terms_query.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_event_count.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_event_count.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_event_count.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_event_count.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_event_count.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_event_count.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_event_count.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_event_count.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_mapping_filters.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_mapping_filters.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_mapping_filters.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_mapping_filters.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_mapping_filters.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_mapping_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_mapping_filters.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_mapping_filters.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_signals_map_from_threat_index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_threat_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_threat_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_threat_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_threat_list.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_threat_list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_threat_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_threat_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/get_threat_list.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/threat_enrichment_factory.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/threat_enrichment_factory.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/threat_enrichment_factory.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/threat_enrichment_factory.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/threat_enrichment_factory.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/threat_enrichment_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/threat_enrichment_factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/threat_enrichment_factory.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/bulk_create_ml_signals.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/bulk_create_ml_signals.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/bulk_create_ml_signals.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/bulk_create_ml_signals.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/bulk_create_ml_signals.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/bulk_create_ml_signals.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/bulk_create_ml_signals.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/bulk_create_ml_signals.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/create_ml_alert_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/create_ml_alert_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/create_ml_alert_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/create_ml_alert_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/find_ml_signals.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/find_ml_signals.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/find_ml_signals.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/find_ml_signals.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/ml.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/ml.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/ml.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/ml.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/ml.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/ml.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/ml/ml.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/ml/ml.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/__snapshots__/build_new_terms_aggregation.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/__snapshots__/build_new_terms_aggregation.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/__snapshots__/build_new_terms_aggregation.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/__snapshots__/build_new_terms_aggregation.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/build_new_terms_aggregation.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/build_new_terms_aggregation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/build_new_terms_aggregation.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/build_new_terms_aggregation.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/build_new_terms_aggregation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/build_new_terms_aggregation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/build_new_terms_aggregation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/build_new_terms_aggregation.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts similarity index 95% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts index efa8e95c522a5..a2db4a5981412 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts @@ -59,7 +59,7 @@ export interface BulkCreateSuppressedAlertsParams /** * wraps, bulk create and suppress alerts in memory, also takes care of missing fields logic. * If parameter alertSuppression.missingFieldsStrategy configured not to be suppressed, regular alerts will be created for such events without suppression - * This function is similar to x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts, but + * This function is similar to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts, but * it operates with new terms specific eventsAndTerms{@link EventsAndTerms} parameter property, instead of regular events as common utility */ export const bulkCreateSuppressedNewTermsAlertsInMemory = async ({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/create_new_terms_alert_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/create_new_terms_alert_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/create_new_terms_alert_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/create_new_terms_alert_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/multi_terms_composite.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/multi_terms_composite.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/multi_terms_composite.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/multi_terms_composite.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_new_terms_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_new_terms_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_new_terms_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_new_terms_alerts.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_new_terms_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_new_terms_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_new_terms_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_new_terms_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/__snapshots__/build_group_by_field_aggregation.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/__snapshots__/build_group_by_field_aggregation.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/__snapshots__/build_group_by_field_aggregation.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/__snapshots__/build_group_by_field_aggregation.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/__snapshots__/group_and_bulk_create.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/__snapshots__/group_and_bulk_create.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/__snapshots__/group_and_bulk_create.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/__snapshots__/group_and_bulk_create.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/build_group_by_field_aggregation.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/build_group_by_field_aggregation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/build_group_by_field_aggregation.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/build_group_by_field_aggregation.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/build_group_by_field_aggregation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/build_group_by_field_aggregation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/build_group_by_field_aggregation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/build_group_by_field_aggregation.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/bulk_create_unsuppressed_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/bulk_create_unsuppressed_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/bulk_create_unsuppressed_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/bulk_create_unsuppressed_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/group_and_bulk_create.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/group_and_bulk_create.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/group_and_bulk_create.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/group_and_bulk_create.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/group_and_bulk_create.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/group_and_bulk_create.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/group_and_bulk_create.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/group_and_bulk_create.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/wrap_suppressed_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/wrap_suppressed_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/wrap_suppressed_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/wrap_suppressed_alerts.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/wrap_suppressed_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/wrap_suppressed_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/wrap_suppressed_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/alert_suppression/wrap_suppressed_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/create_query_alert_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_data_view.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_data_view.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_data_view.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_data_view.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_data_view.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_data_view.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_data_view.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_data_view.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_exceptions_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_exceptions_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_exceptions_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_exceptions_list.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_exceptions_list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_exceptions_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_exceptions_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_exceptions_list.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_references.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_references.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_references.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_references.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_references.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_references.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_references.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/extract_references.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_data_view.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_data_view.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_data_view.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_data_view.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_data_view.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_data_view.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_data_view.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_data_view.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_exceptions_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_exceptions_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_exceptions_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_exceptions_list.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_exceptions_list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_exceptions_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_exceptions_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_exceptions_list.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_references.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_references.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_references.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_references.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_references.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_references.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_references.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/inject_references.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern_for_exception_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern_for_exception_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern_for_exception_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern_for_exception_list.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern_for_exception_list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern_for_exception_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern_for_exception_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_name_pattern_for_exception_list.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_data_view.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_data_view.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_data_view.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_data_view.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_data_view.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_data_view.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_data_view.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_data_view.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_exceptions_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_exceptions_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_exceptions_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_exceptions_list.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_exceptions_list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_exceptions_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_exceptions_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/get_saved_object_reference_for_exceptions_list.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/log_missing_saved_object_error.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/log_missing_saved_object_error.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/log_missing_saved_object_error.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/log_missing_saved_object_error.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/log_missing_saved_object_error.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/log_missing_saved_object_error.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/log_missing_saved_object_error.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/saved_object_references/utils/log_missing_saved_object_error.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_eql.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_eql.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_eql.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_eql.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_indicator_match.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_indicator_match.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_indicator_match.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_indicator_match.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_ml.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_ml.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_ml.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_ml.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_query.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_query.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_query.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_query.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_threshold.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_threshold.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_threshold.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/scripts/create_rule_threshold.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/__snapshots__/get_threshold_signal_history.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/__snapshots__/get_threshold_signal_history.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/__snapshots__/get_threshold_signal_history.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/__snapshots__/get_threshold_signal_history.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_signal_history.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_signal_history.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_signal_history.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_signal_history.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_signal_history.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_signal_history.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_signal_history.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_signal_history.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_threshold_aggregation.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_threshold_aggregation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_threshold_aggregation.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_threshold_aggregation.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_threshold_aggregation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_threshold_aggregation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_threshold_aggregation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/build_threshold_aggregation.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_suppressed_threshold_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_suppressed_threshold_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_suppressed_threshold_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_suppressed_threshold_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_threshold_signals.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_threshold_signals.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_threshold_signals.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_threshold_signals.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_threshold_signals.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_threshold_signals.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_threshold_signals.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/bulk_create_threshold_signals.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/create_threshold_alert_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/create_threshold_alert_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/create_threshold_alert_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/create_threshold_alert_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/find_threshold_signals.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/find_threshold_signals.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/find_threshold_signals.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/find_threshold_signals.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/find_threshold_signals.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/find_threshold_signals.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/find_threshold_signals.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/find_threshold_signals.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_bucket_filters.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_bucket_filters.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_bucket_filters.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_bucket_filters.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_bucket_filters.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_bucket_filters.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_bucket_filters.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_bucket_filters.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_signal_history.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_signal_history.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_signal_history.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_signal_history.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_signal_history.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_signal_history.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_signal_history.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/get_threshold_signal_history.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/wrap_suppressed_threshold_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/wrap_suppressed_threshold_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/wrap_suppressed_threshold_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/wrap_suppressed_threshold_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/translations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/translations.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/translations.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/__snapshots__/build_timestamp_runtime_mapping.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/__snapshots__/build_timestamp_runtime_mapping.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/__snapshots__/build_timestamp_runtime_mapping.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/__snapshots__/build_timestamp_runtime_mapping.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_events_query.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_events_query.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_events_query.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_events_query.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_events_query.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_events_query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_events_query.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_events_query.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_timestamp_runtime_mapping.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_timestamp_runtime_mapping.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_timestamp_runtime_mapping.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_timestamp_runtime_mapping.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_timestamp_runtime_mapping.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_timestamp_runtime_mapping.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_timestamp_runtime_mapping.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/build_timestamp_runtime_mapping.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_with_suppression.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_with_suppression.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_with_suppression.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_with_suppression.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/__mocks__/alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/__mocks__/alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/__mocks__/alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/__mocks__/alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/create_single_field_match_enrichment.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/create_single_field_match_enrichment.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/create_single_field_match_enrichment.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/create_single_field_match_enrichment.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/create_single_field_match_enrichment.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/create_single_field_match_enrichment.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/create_single_field_match_enrichment.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/create_single_field_match_enrichment.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/asset_criticality.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/asset_criticality.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/asset_criticality.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/asset_criticality.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/host_risk.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/host_risk.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/host_risk.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/host_risk.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/user_risk.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/user_risk.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/user_risk.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/enrichment_by_type/user_risk.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/search_enrichments.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/search_enrichments.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/search_enrichments.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/search_enrichments.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/events.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/events.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/events.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/events.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/events.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/events.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/events.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/events.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/is_index_exist.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/is_index_exist.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/is_index_exist.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/is_index_exist.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/requests.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/requests.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/requests.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/requests.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/requests.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/requests.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/requests.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/requests.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/transforms.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/transforms.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/transforms.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/transforms.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/transforms.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/transforms.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/transforms.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/enrichments/utils/transforms.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_data_tier_filter.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_data_tier_filter.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_data_tier_filter.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_data_tier_filter.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_data_tier_filter.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_data_tier_filter.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_data_tier_filter.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_data_tier_filter.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_input_output_index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_input_output_index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_input_output_index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_input_output_index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_input_output_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_input_output_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_input_output_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_input_output_index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_list_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_list_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_list_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_list_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_number_of_suppressed_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_number_of_suppressed_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_number_of_suppressed_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_number_of_suppressed_alerts.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_number_of_suppressed_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_number_of_suppressed_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_number_of_suppressed_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_number_of_suppressed_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_fields.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_fields.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_fields.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter_load_fields.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter_load_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter_load_fields.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter_load_fields.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_field_and_set_tuples.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_field_and_set_tuples.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_field_and_set_tuples.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_field_and_set_tuples.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_field_and_set_tuples.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_field_and_set_tuples.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_field_and_set_tuples.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_field_and_set_tuples.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_set_to_filter_against.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_set_to_filter_against.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_set_to_filter_against.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_set_to_filter_against.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_set_to_filter_against.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_set_to_filter_against.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_set_to_filter_against.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/create_set_to_filter_against.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events_against_list.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events_against_list.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events_against_list.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events_against_list.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events_against_list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events_against_list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events_against_list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/filter_events_against_list.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/large_list_filters/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_eql.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_eql.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_eql.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_eql.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_esql.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_esql.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_esql.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_esql.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_query.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_query.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/logged_requests/log_query.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_risk_score_from_mapping.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_risk_score_from_mapping.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_risk_score_from_mapping.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_risk_score_from_mapping.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_risk_score_from_mapping.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_risk_score_from_mapping.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_risk_score_from_mapping.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_risk_score_from_mapping.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_rule_name_from_mapping.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_rule_name_from_mapping.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_rule_name_from_mapping.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_rule_name_from_mapping.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_rule_name_from_mapping.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_rule_name_from_mapping.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_rule_name_from_mapping.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_rule_name_from_mapping.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_severity_from_mapping.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_severity_from_mapping.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_severity_from_mapping.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_severity_from_mapping.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_severity_from_mapping.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_severity_from_mapping.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_severity_from_mapping.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/mappings/build_severity_from_mapping.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatter.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatter.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatter.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatter.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatters.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatters.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatters.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/reason_formatters.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_factory.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_factory.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_suppressed_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_suppressed_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_suppressed_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_suppressed_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/siem_rule_action_groups.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/siem_rule_action_groups.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/siem_rule_action_groups.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/siem_rule_action_groups.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/single_search_after.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/single_search_after.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/single_search_after.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/single_search_after.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/single_search_after.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/single_search_after.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/single_search_after.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/single_search_after.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/get_strategy.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/get_strategy.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/get_strategy.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/get_strategy.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_all_fields_with_source.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_all_fields_with_source.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_all_fields_with_source.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_all_fields_with_source.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_all_fields_with_source.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_all_fields_with_source.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_all_fields_with_source.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_all_fields_with_source.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_missing_fields_with_source.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_missing_fields_with_source.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_missing_fields_with_source.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_missing_fields_with_source.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_missing_fields_with_source.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_missing_fields_with_source.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_missing_fields_with_source.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_missing_fields_with_source.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_no_fields.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_no_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_no_fields.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/strategies/merge_no_fields.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/array_in_path_exists.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/array_in_path_exists.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/array_in_path_exists.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/array_in_path_exists.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/array_in_path_exists.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/array_in_path_exists.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/array_in_path_exists.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/array_in_path_exists.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/filter_field_entry.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/filter_field_entry.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/filter_field_entry.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/filter_field_entry.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/filter_field_entry.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/filter_field_entry.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/filter_field_entry.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/filter_field_entry.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_array_of_primitives.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_array_of_primitives.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_array_of_primitives.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_array_of_primitives.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_array_of_primitives.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_array_of_primitives.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_array_of_primitives.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_array_of_primitives.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_eql_bug_77152.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_eql_bug_77152.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_eql_bug_77152.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_eql_bug_77152.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_eql_bug_77152.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_eql_bug_77152.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_eql_bug_77152.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_eql_bug_77152.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_ignored.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_ignored.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_ignored.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_ignored.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_ignored.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_ignored.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_ignored.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_ignored.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_invalid_key.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_invalid_key.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_invalid_key.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_invalid_key.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_invalid_key.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_invalid_key.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_invalid_key.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_invalid_key.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_multifield.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_multifield.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_multifield.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_multifield.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_multifield.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_multifield.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_multifield.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_multifield.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_nested_object.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_nested_object.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_nested_object.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_nested_object.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_nested_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_nested_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_nested_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_nested_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_objectlike_or_array_of_objectlikes.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_objectlike_or_array_of_objectlikes.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_objectlike_or_array_of_objectlikes.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_objectlike_or_array_of_objectlikes.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_objectlike_or_array_of_objectlikes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_objectlike_or_array_of_objectlikes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_objectlike_or_array_of_objectlikes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_objectlike_or_array_of_objectlikes.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_path_valid.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_path_valid.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_path_valid.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_path_valid.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_path_valid.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_path_valid.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_path_valid.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_path_valid.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_primitive.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_primitive.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_primitive.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_primitive.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_primitive.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_primitive.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_primitive.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_primitive.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_type_object.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_type_object.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_type_object.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_type_object.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_type_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_type_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_type_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/is_type_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/recursive_unboxing_fields.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/recursive_unboxing_fields.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/recursive_unboxing_fields.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/recursive_unboxing_fields.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/recursive_unboxing_fields.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/recursive_unboxing_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/recursive_unboxing_fields.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/recursive_unboxing_fields.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/robust_field_access.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/robust_field_access.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/robust_field_access.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/robust_field_access.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/robust_field_access.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/robust_field_access.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/robust_field_access.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/source_fields_merging/utils/robust_field_access.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/validate_mutated_params.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/validate_mutated_params.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/validate_mutated_params.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/validate_mutated_params.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/add_prepackaged_rules.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/add_prepackaged_rules.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/add_prepackaged_rules.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/add_prepackaged_rules.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/check_env_variables.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/check_env_variables.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/check_env_variables.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/check_env_variables.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/create_threat_data.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/create_threat_data.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/create_threat_data.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/create_threat_data.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/create_threat_mapping.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/create_threat_mapping.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/create_threat_mapping.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/create_threat_mapping.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_actions.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_actions.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_actions.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_actions.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_alert_tasks.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_alert_tasks.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_alert_tasks.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_alert_tasks.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_alerts.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_alerts.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_alerts.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_alerts.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_api_keys.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_api_keys.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_api_keys.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_api_keys.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_rule_execution_data.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_rule_execution_data.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_rule_execution_data.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_all_rule_execution_data.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_bulk.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_bulk.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_bulk.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_bulk.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_rule_by_id.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_rule_by_id.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_rule_by_id.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_rule_by_id.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_rule_by_rule_id.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_rule_by_rule_id.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_rule_by_rule_id.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_rule_by_rule_id.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_rules_by_query.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_rules_by_query.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_rules_by_query.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_rules_by_query.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_signal_index.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_signal_index.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_signal_index.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_signal_index.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_threat_list.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_threat_list.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/delete_threat_list.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/delete_threat_list.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/disable_rules_by_query.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/disable_rules_by_query.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/disable_rules_by_query.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/disable_rules_by_query.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/duplicate_rules_by_query.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/duplicate_rules_by_query.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/duplicate_rules_by_query.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/duplicate_rules_by_query.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/enable_rules_by_query.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/enable_rules_by_query.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/enable_rules_by_query.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/enable_rules_by_query.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_query.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_query.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_query.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_query.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_rule_id.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_rule_id.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_rule_id.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_rule_id.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_rule_id_to_file.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_rule_id_to_file.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_rule_id_to_file.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_by_rule_id_to_file.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_to_file.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_to_file.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_to_file.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_rules_to_file.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_timelines_to_file.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_timelines_to_file.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/export_timelines_to_file.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/export_timelines_to_file.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_alerting_rules.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_alerting_rules.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_alerting_rules.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_alerting_rules.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_rule_by_filter.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_rule_by_filter.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_rule_by_filter.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_rule_by_filter.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_rules.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_rules.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_rules.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_rules.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_rules_sort.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_rules_sort.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_rules_sort.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_rules_sort.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_saved_object.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_saved_object.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/find_saved_object.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/find_saved_object.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_action_instances.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_action_instances.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_action_instances.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_action_instances.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_action_types.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_action_types.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_action_types.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_action_types.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_alert_tasks.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_alert_tasks.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_alert_tasks.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_alert_tasks.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_alerting_rule_types.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_alerting_rule_types.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_alerting_rule_types.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_alerting_rule_types.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_prepackaged_rules_status.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_prepackaged_rules_status.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_prepackaged_rules_status.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_prepackaged_rules_status.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_privileges.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_privileges.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_privileges.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_privileges.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_rule_by_id.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_rule_by_id.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_rule_by_id.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_rule_by_id.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_rule_by_rule_id.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_rule_by_rule_id.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_rule_by_rule_id.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_rule_by_rule_id.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_saved_objects.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_saved_objects.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_saved_objects.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_saved_objects.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_signal_index.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_signal_index.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_signal_index.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_signal_index.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_tags.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_tags.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/get_tags.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/get_tags.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/hard_reset.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/hard_reset.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/hard_reset.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/hard_reset.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/import_rules.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/import_rules.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/import_rules.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/import_rules.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/import_rules_no_overwrite.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/import_rules_no_overwrite.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/import_rules_no_overwrite.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/import_rules_no_overwrite.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/legacy_notifications/one_action.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/legacy_notifications/one_action.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/legacy_notifications/one_action.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/legacy_notifications/one_action.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/patch_rule.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/patch_rule.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/patch_rule.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/patch_rule.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/patch_rule_bulk.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/patch_rule_bulk.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/patch_rule_bulk.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/patch_rule_bulk.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_legacy_notification.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_legacy_notification.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_legacy_notification.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_legacy_notification.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_rule.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_rule.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_rule.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_rule.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_rule_bulk.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_rule_bulk.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_rule_bulk.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_rule_bulk.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_rule_preview.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_rule_preview.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_rule_preview.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_rule_preview.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_signal_index.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_signal_index.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_signal_index.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_signal_index.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_x_rules.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_x_rules.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/post_x_rules.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/post_x_rules.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/roles_users/create_role_and_user.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/delete_by_rule_id.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/delete_by_rule_id.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/delete_by_rule_id.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/delete_by_rule_id.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/multiple_ruleid_queries.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/multiple_ruleid_queries.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/multiple_ruleid_queries.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/multiple_ruleid_queries.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/multiple_simplest_queries.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/multiple_simplest_queries.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/multiple_simplest_queries.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/multiple_simplest_queries.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/patch_names.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/patch_names.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/patch_names.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/bulk/patch_names.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/export/ruleid_queries.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/export/ruleid_queries.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/export/ruleid_queries.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/export/ruleid_queries.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/import/multiple_ruleid_queries.ndjson b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/import/multiple_ruleid_queries.ndjson similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/import/multiple_ruleid_queries.ndjson rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/import/multiple_ruleid_queries.ndjson diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/disable_rule.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/disable_rule.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/disable_rule.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/disable_rule.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/enabled_rule.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/enabled_rule.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/enabled_rule.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/enabled_rule.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_update_risk_score_by_id.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_update_risk_score_by_id.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_update_risk_score_by_id.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_update_risk_score_by_id.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_update_risk_score_by_rule_id.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_update_risk_score_by_rule_id.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_update_risk_score_by_rule_id.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_update_risk_score_by_rule_id.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_updated_name.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_updated_name.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_updated_name.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/simplest_updated_name.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_interval.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_interval.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_interval.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_interval.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_list.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_list.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_list.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_list.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_machine_learning.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_machine_learning.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_machine_learning.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_machine_learning.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_note.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_note.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_note.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_note.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_query_everything.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_query_everything.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_query_everything.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_query_everything.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_tags.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_tags.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_tags.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_tags.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_timelineid.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_timelineid.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_timelineid.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_timelineid.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_version.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_version.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_version.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/patches/update_version.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_disabled.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_disabled.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_disabled.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_disabled.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_eql.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_eql.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_eql.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_eql.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_lucene.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_lucene.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_lucene.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_lucene.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_mitre_attack.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_mitre_attack.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_mitre_attack.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_mitre_attack.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_preview_threat_match.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_preview_threat_match.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_preview_threat_match.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_preview_threat_match.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_timelineid.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_timelineid.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_timelineid.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_timelineid.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_everything.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_everything.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_everything.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_everything.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_filter.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_filter.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_filter.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_filter.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_list.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_list.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_list.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_list.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_machine_learning.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_machine_learning.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_machine_learning.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_machine_learning.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_mappings.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_mappings.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_mappings.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_mappings.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_max_signals.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_max_signals.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_max_signals.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_max_signals.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_meta_data.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_meta_data.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_meta_data.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_meta_data.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_note.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_note.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_note.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_note.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_rule_id.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_rule_id.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_rule_id.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_rule_id.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_tags.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_tags.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_tags.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_tags.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_threat_mapping.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_threat_mapping.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_threat_mapping.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_threat_mapping.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_threat_mapping_perf.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_threat_mapping_perf.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_threat_mapping_perf.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/query_with_threat_mapping_perf.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/references/query_with_multiple_exception_lists.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/references/query_with_multiple_exception_lists.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/references/query_with_multiple_exception_lists.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/references/query_with_multiple_exception_lists.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/references/query_with_single_exception_list.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/references/query_with_single_exception_list.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/references/query_with_single_exception_list.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/references/query_with_single_exception_list.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/sequence_eql_query.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/sequence_eql_query.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/sequence_eql_query.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/sequence_eql_query.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/sequence_eql_query_no_duration.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/sequence_eql_query_no_duration.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/sequence_eql_query_no_duration.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/sequence_eql_query_no_duration.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/simplest_filters.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/simplest_filters.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/simplest_filters.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/simplest_filters.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/simplest_query.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/simplest_query.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/simplest_query.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/queries/simplest_query.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_by_rule_id.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_by_rule_id.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_by_rule_id.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_by_rule_id.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_everything.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_everything.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_everything.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_everything.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_filters.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_filters.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_filters.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_filters.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_query.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_query.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_query.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_query.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_query_filter.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_query_filter.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_query_filter.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/saved_query_with_query_filter.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/simplest_saved_query.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/simplest_saved_query.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/simplest_saved_query.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/saved_queries/simplest_saved_query.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/imports/multiple_ruleid_queries_corrupted.ndjson b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/imports/multiple_ruleid_queries_corrupted.ndjson similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/imports/multiple_ruleid_queries_corrupted.ndjson rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/imports/multiple_ruleid_queries_corrupted.ndjson diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/action_without_meta.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/action_without_meta.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/action_without_meta.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/action_without_meta.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/filter_with_empty_query.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/filter_with_empty_query.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/filter_with_empty_query.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/filter_with_empty_query.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/filter_without_query.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/filter_without_query.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/filter_without_query.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/filter_without_query.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_filter_ui_meatadata_lucene.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_filter_ui_meatadata_lucene.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_filter_ui_meatadata_lucene.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_filter_ui_meatadata_lucene.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_filter_ui_metadata.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_filter_ui_metadata.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_filter_ui_metadata.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_filter_ui_metadata.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_with_errors.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_with_errors.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_with_errors.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/query_with_errors.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/saved_query_ui_meta_empty_query.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/saved_query_ui_meta_empty_query.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/saved_query_ui_meta_empty_query.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/queries/saved_query_ui_meta_empty_query.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/query_single_id.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/query_single_id.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/query_single_id.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/query_single_id.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/signal_on_signal_depth_1.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/signal_on_signal_depth_1.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/signal_on_signal_depth_1.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/signal_on_signal_depth_1.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/signal_on_signal_depth_2.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/signal_on_signal_depth_2.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/signal_on_signal_depth_2.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/depth_test/signal_on_signal_depth_2.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/query_single_id.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/query_single_id.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/query_single_id.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/query_single_id.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/signal_on_signal.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/signal_on_signal.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/signal_on_signal.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/test_cases/signals_on_signals/halting_test/signal_on_signal.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/README.md b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/README.md similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/README.md rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/README.md diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/disable_rule.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/disable_rule.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/disable_rule.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/disable_rule.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/enabled_rule.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/enabled_rule.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/enabled_rule.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/enabled_rule.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_update_risk_score_by_id.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_update_risk_score_by_id.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_update_risk_score_by_id.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_update_risk_score_by_id.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_update_risk_score_by_rule_id.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_update_risk_score_by_rule_id.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_update_risk_score_by_rule_id.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_update_risk_score_by_rule_id.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_updated_name.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_updated_name.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_updated_name.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/simplest_updated_name.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_interval.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_interval.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_interval.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_interval.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_list.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_list.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_list.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_list.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_machine_learning.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_machine_learning.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_machine_learning.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_machine_learning.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_note.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_note.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_note.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_note.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_query_everything.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_query_everything.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_query_everything.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_query_everything.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_tags.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_tags.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_tags.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_tags.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_timelineid.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_timelineid.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_timelineid.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_timelineid.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_version.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_version.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_version.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/rules/updates/update_version.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signal_index_exists.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signal_index_exists.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signal_index_exists.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signal_index_exists.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/aggs_signals.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/aggs_signals.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/aggs_signals.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/aggs_signals.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/create_signals_migration.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/create_signals_migration.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/create_signals_migration.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/create_signals_migration.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/delete_signals_migration.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/delete_signals_migration.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/delete_signals_migration.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/delete_signals_migration.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/finalize_signals_migration.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/finalize_signals_migration.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/finalize_signals_migration.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/finalize_signals_migration.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/get_migration_status.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/get_migration_status.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/get_migration_status.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/get_migration_status.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/put_signal_doc.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/put_signal_doc.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/put_signal_doc.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/put_signal_doc.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/query_signals.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/query_signals.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/query_signals.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/query_signals.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/sample_signal.json b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/sample_signal.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/sample_signal.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/sample_signal.json diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/set_status_with_id.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/set_status_with_id.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/set_status_with_id.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/set_status_with_id.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/set_status_with_query.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/set_status_with_query.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/signals/set_status_with_query.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/signals/set_status_with_query.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/add_prepackaged_timelines.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/add_prepackaged_timelines.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/add_prepackaged_timelines.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/add_prepackaged_timelines.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_all_timelines.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_all_timelines.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_all_timelines.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_all_timelines.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_timeline_by_timeline_id.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_timeline_by_timeline_id.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_timeline_by_timeline_id.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/delete_timeline_by_timeline_id.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/find_timeline_by_filter.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/find_timeline_by_filter.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/find_timeline_by_filter.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/find_timeline_by_filter.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_all_timelines.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_all_timelines.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_all_timelines.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_all_timelines.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_timeline_by_id.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_timeline_by_id.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_timeline_by_id.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_timeline_by_id.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_timeline_by_template_timeline_id.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_timeline_by_template_timeline_id.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_timeline_by_template_timeline_id.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/get_timeline_by_template_timeline_id.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/regen_prepackage_timelines_index.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/regen_prepackage_timelines_index.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/timelines/regen_prepackage_timelines_index.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/timelines/regen_prepackage_timelines_index.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/update_rule.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/update_rule.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/update_rule.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/update_rule.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/scripts/update_rule_bulk.sh b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/update_rule_bulk.sh similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/scripts/update_rule_bulk.sh rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/scripts/update_rule_bulk.sh diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_migration_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_migration_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_migration_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_migration_client.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_migration_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_migration_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_migration_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_migration_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/audit.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/audit.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/audit.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/audit.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/check_and_init_asset_criticality_resources.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/check_and_init_asset_criticality_resources.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/check_and_init_asset_criticality_resources.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/check_and_init_asset_criticality_resources.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/check_and_init_asset_criticality_resources.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/check_and_init_asset_criticality_resources.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/check_and_init_asset_criticality_resources.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/check_and_init_asset_criticality_resources.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/get_user_asset_criticality_privileges.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/get_user_asset_criticality_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/get_user_asset_criticality_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/get_user_asset_criticality_privileges.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/migrations/schedule_ecs_compliancy_migration.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/migrations/schedule_ecs_compliancy_migration.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/migrations/schedule_ecs_compliancy_migration.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/migrations/schedule_ecs_compliancy_migration.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/migrations/schedule_ecs_compliancy_migration.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/migrations/schedule_ecs_compliancy_migration.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/migrations/schedule_ecs_compliancy_migration.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/migrations/schedule_ecs_compliancy_migration.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/privileges.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/privileges.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/privileges.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/register_asset_criticality_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/register_asset_criticality_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/register_asset_criticality_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/register_asset_criticality_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/audit.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/audit.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/audit.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/audit.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/__snapshots__/entity_store_data_client.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/__snapshots__/entity_store_data_client.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/__snapshots__/entity_store_data_client.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/__snapshots__/entity_store_data_client.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/auditing/actions.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/auditing/actions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/auditing/actions.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/auditing/actions.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/component_template.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/component_template.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/component_template.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/component_template.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/enrich_policy.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/enrich_policy.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/enrich_policy.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/enrich_policy.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/entity_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/entity_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/entity_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/entity_index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_pipeline.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_pipeline.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_pipeline.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_pipeline.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/debug_deep_copy_context_step.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/debug_deep_copy_context_step.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/debug_deep_copy_context_step.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/debug_deep_copy_context_step.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/get_dot_expander_steps.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/get_dot_expander_steps.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/get_dot_expander_steps.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/get_dot_expander_steps.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/get_remove_empty_field_steps.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/get_remove_empty_field_steps.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/get_remove_empty_field_steps.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/get_remove_empty_field_steps.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/remove_entity_definition_fields_step.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/remove_entity_definition_fields_step.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/remove_entity_definition_fields_step.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/remove_entity_definition_fields_step.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/retention_definition_to_ingest_processor_steps.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/retention_definition_to_ingest_processor_steps.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/retention_definition_to_ingest_processor_steps.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/elasticsearch_assets/ingest_processor_steps/retention_definition_to_ingest_processor_steps.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/collect_values.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/collect_values.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/collect_values.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/collect_values.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/operator_to_ingest_processor.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/operator_to_ingest_processor.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/operator_to_ingest_processor.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/operator_to_ingest_processor.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/prefer_newest_value.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/prefer_newest_value.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/prefer_newest_value.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/prefer_newest_value.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/prefer_oldest_value.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/prefer_oldest_value.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/prefer_oldest_value.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/prefer_oldest_value.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/field_retention_definition/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/is_field_missing_or_empty.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/is_field_missing_or_empty.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/is_field_missing_or_empty.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/is_field_missing_or_empty.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/path_utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/path_utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/path_utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/path_utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/path_utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/path_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/path_utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/painless/path_utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/apply_dataview_indices.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/apply_dataview_indices.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/apply_dataview_indices.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/apply_dataview_indices.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/delete.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/delete.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/delete.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/delete.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/enablement.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/enablement.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/enablement.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/enablement.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/entities/list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/entities/list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/entities/list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/entities/list.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/get.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/get.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/get.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/get.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/init.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/init.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/init.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/init.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/list.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/list.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/list.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/list.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/privileges.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/privileges.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/privileges.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/register_entity_store_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/register_entity_store_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/register_entity_store_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/register_entity_store_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/start.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/start.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/start.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/start.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/status.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/status.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/status.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/stop.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/stop.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/stop.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/stop.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/engine_descriptor.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/engine_descriptor.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/engine_descriptor.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/engine_descriptor.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/engine_descriptor_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/engine_descriptor_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/engine_descriptor_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/engine_descriptor_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/saved_object/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/field_retention_enrichment_task.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/state.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/state.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/task/state.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/task/state.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/definition_utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/definition_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/definition_utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/definition_utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/common.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/common.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/common.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/common.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/host.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/host.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/host.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/host.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/service.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/user.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/user.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/user.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/entity_types/user.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/get_united_definition.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/get_united_definition.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/get_united_definition.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/get_united_definition.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/get_united_definition.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/get_united_definition.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/get_united_definition.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/get_united_definition.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/united_entity_definition.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/united_entity_definition.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/united_entity_definition.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/united_entity_definitions/united_entity_definition.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/entity_utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/entity_utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/entity_utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/entity_utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/get_entity_store_privileges.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/get_entity_store_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/get_entity_store_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/get_entity_store_privileges.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/utils/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/migrations/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/migrations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/migrations/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/migrations/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/register_entity_analytics_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/register_entity_analytics_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/register_entity_analytics_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/register_entity_analytics_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts similarity index 92% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts index 9ade355d54bf3..3fc2f6d48923c 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts @@ -17,4 +17,5 @@ export enum RiskEngineAuditActions { RISK_ENGINE_DISABLE_LEGACY_ENGINE = 'risk_engine_disable_legacy_engine', RISK_ENGINE_REMOVE_TASK = 'risk_engine_remove_task', RISK_ENGINE_SCHEDULE_NOW = 'risk_engine_schedule_now', + RISK_ENGINE_CONFIGURE_SAVED_OBJECT = 'risk_engine_configure_saved_object', } diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts similarity index 92% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts index 241523f62e12c..09ef77d3df6ac 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts @@ -82,10 +82,13 @@ export class RiskEngineDataClient { } try { - await initSavedObjects({ + const soResult = await initSavedObjects({ savedObjectsClient: this.options.soClient, namespace, }); + this.options.logger.info( + `Risk engine savedObject configuration: ${JSON.stringify(soResult, null, 2)}` + ); result.riskEngineConfigurationCreated = true; } catch (e) { result.errors.push(e.message); @@ -319,4 +322,25 @@ export class RiskEngineDataClient { return RiskEngineStatusEnum.ENABLED; } + + public async updateRiskEngineSavedObject(attributes: {}) { + try { + const configuration = await this.getConfiguration(); + if (!configuration) { + await initSavedObjects({ + savedObjectsClient: this.options.soClient, + namespace: this.options.namespace, + }); + } + return await updateSavedObjectAttribute({ + savedObjectsClient: this.options.soClient, + attributes, + }); + } catch (e) { + this.options.logger.error( + `Error updating risk score engine saved object attributes: ${e.message}` + ); + throw e; + } + } } diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_privileges.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_privileges.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_privileges.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_privileges.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_privileges.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_privileges.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.test.ts new file mode 100644 index 0000000000000..c70af5c70c7af --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.test.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + serverMock, + requestContextMock, + requestMock, +} from '../../../detection_engine/routes/__mocks__'; +import { riskEnginePrivilegesMock } from './risk_engine_privileges.mock'; +import { riskEngineDataClientMock } from '../risk_engine_data_client.mock'; +import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; +import { RISK_ENGINE_CONFIGURE_SO_URL } from '../../../../../common/constants'; +import { riskEngineConfigureSavedObjectRoute } from './configure_saved_object'; + +describe('riskEnginConfigureSavedObjectRoute', () => { + let server: ReturnType; + let context: ReturnType; + let mockTaskManagerStart: ReturnType; + let mockRiskEngineDataClient: ReturnType; + let getStartServicesMock: jest.Mock; + + beforeEach(() => { + jest.resetAllMocks(); + + server = serverMock.create(); + const { clients } = requestContextMock.createTools(); + mockRiskEngineDataClient = riskEngineDataClientMock.create(); + mockRiskEngineDataClient.updateRiskEngineSavedObject = jest.fn(); + context = requestContextMock.convertContext( + requestContextMock.create({ + ...clients, + riskEngineDataClient: mockRiskEngineDataClient, + }) + ); + mockTaskManagerStart = taskManagerMock.createStart(); + getStartServicesMock = jest.fn().mockResolvedValue([ + {}, + { + taskManager: mockTaskManagerStart, + security: riskEnginePrivilegesMock.createMockSecurityStartWithFullRiskEngineAccess(), + }, + ]); + riskEngineConfigureSavedObjectRoute(server.router, getStartServicesMock); + }); + + const buildRequest = (body: {}) => { + return requestMock.create({ + method: 'put', + path: RISK_ENGINE_CONFIGURE_SO_URL, + body, + }); + }; + + it('should call the router with the correct route and handler', async () => { + const request = buildRequest({}); + await server.inject(request, context); + expect(mockRiskEngineDataClient.updateRiskEngineSavedObject).toHaveBeenCalled(); + }); + + it('returns a 200 when the saved object is updated successfully', async () => { + const request = buildRequest({ + exclude_alert_statuses: ['open'], + range: { start: 'now-30d', end: 'now' }, + exclude_alert_tags: ['tag1'], + }); + const response = await server.inject(request, context); + expect(response.status).toEqual(200); + expect(response.body).toEqual({ risk_engine_saved_object_configured: true }); + expect(mockRiskEngineDataClient.updateRiskEngineSavedObject).toHaveBeenCalledWith({ + excludeAlertStatuses: ['open'], + range: { start: 'now-30d', end: 'now' }, + excludeAlertTags: ['tag1'], + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.ts new file mode 100644 index 0000000000000..5a1e847637522 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.ts @@ -0,0 +1,110 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; +import type { IKibanaResponse } from '@kbn/core-http-server'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import type { ConfigureRiskEngineSavedObjectResponse } from '../../../../../common/api/entity_analytics'; +import { ConfigureRiskEngineSavedObjectRequestBody } from '../../../../../common/api/entity_analytics'; +import { + RISK_ENGINE_CONFIGURE_SO_URL, + APP_ID, + API_VERSIONS, +} from '../../../../../common/constants'; +import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations'; +import { withRiskEnginePrivilegeCheck } from '../risk_engine_privileges'; +import type { EntityAnalyticsRoutesDeps } from '../../types'; +import { RiskEngineAuditActions } from '../audit'; +import { AUDIT_CATEGORY, AUDIT_OUTCOME, AUDIT_TYPE } from '../../audit'; + +export const riskEngineConfigureSavedObjectRoute = ( + router: EntityAnalyticsRoutesDeps['router'], + getStartServices: EntityAnalyticsRoutesDeps['getStartServices'] +) => { + router.versioned + .put({ + access: 'public', + path: RISK_ENGINE_CONFIGURE_SO_URL, + security: { + authz: { + requiredPrivileges: ['securitySolution', `${APP_ID}-entity-analytics`], + }, + }, + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { + request: { body: buildRouteValidationWithZod(ConfigureRiskEngineSavedObjectRequestBody) }, + }, + }, + withRiskEnginePrivilegeCheck( + getStartServices, + async ( + context, + request, + response + ): Promise> => { + const securitySolution = await context.securitySolution; + + securitySolution.getAuditLogger()?.log({ + message: 'User attempted to configure the saved object of the risk engine', + event: { + action: RiskEngineAuditActions.RISK_ENGINE_CONFIGURE_SAVED_OBJECT, + category: AUDIT_CATEGORY.DATABASE, + type: AUDIT_TYPE.CHANGE, + outcome: AUDIT_OUTCOME.UNKNOWN, + }, + }); + + const siemResponse = buildSiemResponse(response); + const [_, { taskManager }] = await getStartServices(); + const riskEngineClient = securitySolution.getRiskEngineDataClient(); + + if (!taskManager) { + securitySolution.getAuditLogger()?.log({ + message: + 'User attempted to configure the saved object of the risk engine, but the Kibana Task Manager was unavailable', + event: { + action: RiskEngineAuditActions.RISK_ENGINE_CONFIGURE_SAVED_OBJECT, + category: AUDIT_CATEGORY.DATABASE, + type: AUDIT_TYPE.CHANGE, + outcome: AUDIT_OUTCOME.FAILURE, + }, + error: { + message: + 'User attempted to configure the saved object of the risk engine, but the Kibana Task Manager was unavailable', + }, + }); + + return siemResponse.error({ + statusCode: 400, + body: TASK_MANAGER_UNAVAILABLE_ERROR, + }); + } + + try { + await riskEngineClient.updateRiskEngineSavedObject({ + excludeAlertStatuses: request.body.exclude_alert_statuses, + range: request.body.range, + excludeAlertTags: request.body.exclude_alert_tags, + }); + return response.ok({ body: { risk_engine_saved_object_configured: true } }); + } catch (e) { + const error = transformError(e); + + return siemResponse.error({ + statusCode: error.statusCode, + body: { message: error.message, full_error: JSON.stringify(e) }, + bypassErrorFormat: true, + }); + } + } + ) + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/delete.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/privileges.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/privileges.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/privileges.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts similarity index 89% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts index f4edb7d798188..a82ca38f7e1fd 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts @@ -13,6 +13,7 @@ import { riskEngineSettingsRoute } from './settings'; import type { EntityAnalyticsRoutesDeps } from '../../types'; import { riskEngineScheduleNowRoute } from './schedule_now'; import { riskEngineCleanupRoute } from './delete'; +import { riskEngineConfigureSavedObjectRoute } from './configure_saved_object'; export const registerRiskEngineRoutes = ({ router, @@ -26,4 +27,5 @@ export const registerRiskEngineRoutes = ({ riskEngineSettingsRoute(router); riskEnginePrivilegesRoute(router, getStartServices); riskEngineCleanupRoute(router, getStartServices); + riskEngineConfigureSavedObjectRoute(router, getStartServices); }; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_privileges.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_privileges.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_privileges.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/risk_engine_privileges.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/schedule_now.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/schedule_now.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/schedule_now.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/schedule_now.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/status.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/status.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/status.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/translations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/translations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/translations.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/translations.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/risk_engine_configuration_type.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/risk_engine_configuration_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/risk_engine_configuration_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/saved_object/risk_engine_configuration_type.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts similarity index 95% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts index 4282e0a793f47..a72835a92c1f4 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts @@ -42,7 +42,10 @@ export const updateSavedObjectAttribute = async ({ attributes, }: SavedObjectsClientArg & { attributes: { - enabled: boolean; + enabled?: boolean; + excludeAlertIds?: string[]; + range?: { start: string; end: string }; + excludeAlertTags?: string[]; }; }) => { const savedObjectConfiguration = await getConfigurationSavedObject({ diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/audit.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/audit.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/audit.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/audit.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts similarity index 97% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts index ff1062393c935..3981781ca3fac 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts @@ -14,6 +14,7 @@ import type { ElasticsearchClient, Logger } from '@kbn/core/server'; import { ALERT_RISK_SCORE, ALERT_WORKFLOW_STATUS, + ALERT_WORKFLOW_TAGS, } from '@kbn/rule-registry-plugin/common/technical_rule_data_field_names'; import type { AssetCriticalityRecord, @@ -219,6 +220,7 @@ export const calculateRiskScores = async ({ weights, alertSampleSizePerShard = 10_000, excludeAlertStatuses = [], + excludeAlertTags = [], }: { assetCriticalityService: AssetCriticalityService; esClient: ElasticsearchClient; @@ -236,6 +238,11 @@ export const calculateRiskScores = async ({ if (!isEmpty(userFilter)) { filter.push(userFilter as QueryDslQueryContainer); } + if (excludeAlertTags.length > 0) { + filter.push({ + bool: { must_not: { terms: { [ALERT_WORKFLOW_TAGS]: excludeAlertTags } } }, + }); + } const identifierTypes: IdentifierType[] = identifierType ? [identifierType] : ['host', 'user']; const request = { size: 0, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/configurations.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/configurations.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/configurations.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/configurations.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/configurations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/configurations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/configurations.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/configurations.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/get_risk_inputs_index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/helpers.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.test.ts new file mode 100644 index 0000000000000..5936f75339e30 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.test.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getPainlessScripts } from '.'; + +describe('getPainlessScripts', () => { + // to update snapshot run `yarn test:jest x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.test.ts -u` + test('Scripts should not have changed. If this change is intentional, ensure that Serverless scripted metric allowlists are updated', async () => { + const scripts = await getPainlessScripts(); + + expect(scripts).toMatchInlineSnapshot(` + Object { + "combine": "return state;", + "init": "state.inputs = []", + "map": "Map fields = new HashMap();fields.put('id', doc['kibana.alert.uuid'].value);fields.put('index', doc['_index'].value);fields.put('time', doc['@timestamp'].value);fields.put('rule_name', doc['kibana.alert.rule.name'].value);fields.put('category', doc['event.kind'].value);fields.put('score', doc['kibana.alert.risk_score'].value);state.inputs.add(fields); ", + "reduce": "Map results = new HashMap();results['notes'] = [];results['category_1_score'] = 0.0;results['category_1_count'] = 0;results['risk_inputs'] = [];results['score'] = 0.0;def inputs = states[0].inputs;Collections.sort(inputs, (a, b) -> b.get('score').compareTo(a.get('score')));for (int i = 0; i < inputs.length; i++) { double current_score = inputs[i].score / Math.pow(i + 1, params.p); if (i < 10) { inputs[i]['contribution'] = current_score / params.risk_cap; results['risk_inputs'].add(inputs[i]); } results['category_1_score'] += current_score; results['category_1_count'] += 1; results['score'] += current_score;}results['score'] *= params.global_identifier_type_weight;results['normalized_score'] = results['score'] / params.risk_cap;return results;", + } + `); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_combine.painless b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_combine.painless similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_combine.painless rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_combine.painless diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_init.painless b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_init.painless similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_init.painless rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_init.painless diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_map.painless b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_map.painless similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_map.painless rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_map.painless diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_reduce.painless b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_reduce.painless similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_reduce.painless rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/painless/risk_scoring_reduce.painless diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_data_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/entity_calculation.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts similarity index 88% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts index b5ff9c3487a07..6aa2339b999d6 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts @@ -250,5 +250,35 @@ describe('POST risk_engine/preview route', () => { expect(result.ok).toHaveBeenCalledWith(expect.objectContaining({ after_keys: {} })); }); }); + + describe('exclude_alert_statuses', () => { + it('respects the provided exclude_alert_statuses', async () => { + const request = buildRequest({ + exclude_alert_statuses: ['open'], + }); + + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.calculateScores).toHaveBeenCalledWith( + expect.objectContaining({ excludeAlertStatuses: ['open'] }) + ); + }); + }); + + describe('exclude_alert_tags', () => { + it('respects the provided exclude_alert_tags', async () => { + const request = buildRequest({ + exclude_alert_tags: ['tag1'], + }); + + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.calculateScores).toHaveBeenCalledWith( + expect.objectContaining({ excludeAlertTags: ['tag1'] }) + ); + }); + }); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts similarity index 94% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts index 5ab6791a300c3..eb4cd433b74c2 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts @@ -65,7 +65,8 @@ export const riskScorePreviewRoute = ( filter, range: userRange, weights, - excludeAlertStatuses, + exclude_alert_statuses: excludedStatuses, + exclude_alert_tags: excludedTags, } = request.body; const entityAnalyticsConfig = await riskScoreService.getConfigurationWithDefaults( @@ -84,6 +85,8 @@ export const riskScorePreviewRoute = ( const afterKeys = userAfterKeys ?? {}; const range = userRange ?? { start: 'now-15d', end: 'now' }; const pageSize = userPageSize ?? DEFAULT_RISK_SCORE_PAGE_SIZE; + const excludeAlertStatuses = excludedStatuses || ['closed']; + const excludeAlertTags = excludedTags || []; const result = await riskScoreService.calculateScores({ afterKeys, @@ -97,6 +100,7 @@ export const riskScorePreviewRoute = ( weights, alertSampleSizePerShard, excludeAlertStatuses, + excludeAlertTags, }); securityContext.getAuditLogger()?.log({ diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/register_risk_score_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/register_risk_score_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/register_risk_score_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/register_risk_score_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.mock.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts similarity index 99% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts index 4230b8fa05e2d..06ec89061e7e5 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts @@ -257,6 +257,7 @@ export const runTask = async ({ const configuration = await riskScoreService.getConfigurationWithDefaults( entityAnalyticsConfig ); + log(`Risk engine running with configuration : ${JSON.stringify(configuration, null, 2)}`); if (configuration == null) { log( 'Risk engine configuration not found; exiting task. Please reinitialize the risk engine and try again' diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/state.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/state.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/state.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/state.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/types.ts new file mode 100644 index 0000000000000..48ddc9b4a7698 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/types.ts @@ -0,0 +1,105 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger, StartServicesAccessor } from '@kbn/core/server'; +import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/types'; +import type { + AfterKeys, + EntityAfterKey, + RiskScoreWeights, +} from '../../../common/api/entity_analytics/common'; +import type { IdentifierType, Range } from '../../../common/entity_analytics/risk_engine'; +import type { ConfigType } from '../../config'; +import type { StartPlugins } from '../../plugin'; +import type { SecuritySolutionPluginRouter } from '../../types'; +export type EntityAnalyticsConfig = ConfigType['entityAnalytics']; + +export interface EntityAnalyticsRoutesDeps { + router: SecuritySolutionPluginRouter; + logger: Logger; + config: ConfigType; + getStartServices: StartServicesAccessor; +} + +export interface CalculateRiskScoreAggregations { + user?: { + after_key: EntityAfterKey; + buckets: RiskScoreBucket[]; + }; + host?: { + after_key: EntityAfterKey; + buckets: RiskScoreBucket[]; + }; +} + +export interface SearchHitRiskInput { + id: string; + index: string; + rule_name?: string; + time?: string; + score?: number; + contribution?: number; +} + +export interface RiskScoreBucket { + key: { [identifierField: string]: string }; + doc_count: number; + top_inputs: { + doc_count: number; + risk_details: { + value: { + score: number; + normalized_score: number; + notes: string[]; + category_1_score: number; + category_1_count: number; + risk_inputs: SearchHitRiskInput[]; + }; + }; + }; +} + +export interface RiskEngineConfiguration { + dataViewId: string; + enabled: boolean; + filter: unknown; + identifierType: IdentifierType | undefined; + interval: string; + pageSize: number; + range: Range; + alertSampleSizePerShard?: number; +} + +export interface CalculateScoresParams { + afterKeys: AfterKeys; + debug?: boolean; + index: string; + filter?: unknown; + identifierType?: IdentifierType; + pageSize: number; + range: { start: string; end: string }; + runtimeMappings: MappingRuntimeFields; + weights?: RiskScoreWeights; + alertSampleSizePerShard?: number; + excludeAlertStatuses?: string[]; + excludeAlertTags?: string[]; +} + +export interface CalculateAndPersistScoresParams { + afterKeys: AfterKeys; + debug?: boolean; + index: string; + filter?: unknown; + identifierType: IdentifierType; + pageSize: number; + range: Range; + runtimeMappings: MappingRuntimeFields; + weights?: RiskScoreWeights; + alertSampleSizePerShard?: number; + returnScores?: boolean; + refresh?: 'wait_for'; +} diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/utils/assert_advanced_setting_enabled.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/assert_advanced_setting_enabled.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/utils/assert_advanced_setting_enabled.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/assert_advanced_setting_enabled.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/utils/check_and_format_privileges.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/check_and_format_privileges.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/utils/check_and_format_privileges.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/check_and_format_privileges.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/utils/check_and_format_privileges.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/check_and_format_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/utils/check_and_format_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/check_and_format_privileges.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/utils/create_datastream.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/create_datastream.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/utils/create_datastream.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/create_datastream.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/utils/create_or_update_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/create_or_update_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/utils/create_or_update_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/create_or_update_index.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/utils/retry_transient_es_errors.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/retry_transient_es_errors.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/utils/retry_transient_es_errors.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/retry_transient_es_errors.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/utils/retry_transient_es_errors.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/retry_transient_es_errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/utils/retry_transient_es_errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/retry_transient_es_errors.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/utils/transforms.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/transforms.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/utils/transforms.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/transforms.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/utils/transforms.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/transforms.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/utils/transforms.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/utils/transforms.ts diff --git a/x-pack/plugins/security_solution/server/lib/exceptions/api/manage_exceptions/route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/exceptions/api/manage_exceptions/route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/exceptions/api/manage_exceptions/route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/exceptions/api/manage_exceptions/route.ts diff --git a/x-pack/plugins/security_solution/server/lib/exceptions/api/register_routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/exceptions/api/register_routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/exceptions/api/register_routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/exceptions/api/register_routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/framework/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/framework/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/framework/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/framework/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/framework/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/framework/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/framework/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/framework/types.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/lib/jest.config.js new file mode 100644 index 0000000000000..e9dc836a6a47c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/server/lib'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server/lib', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/lib/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/lib/license/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/license/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/license/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/license/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/__mocks__/authz.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/__mocks__/authz.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/__mocks__/authz.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/__mocks__/authz.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/__mocks__/validation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/__mocks__/validation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/__mocks__/validation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/__mocks__/validation.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/authz.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/authz.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/authz.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/authz.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/authz.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/authz.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/authz.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/authz.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/cache.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/cache.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/cache.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/cache.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/cache.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/cache.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/cache.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/cache.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/mocks.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/validation.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/validation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/validation.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/validation.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/validation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/validation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/machine_learning/validation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/machine_learning/validation.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/cases_privileges.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/cases_privileges.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/cases_privileges.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/cases_privileges.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/mocks.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/product_features.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/product_features.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/product_features.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/product_features.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/product_features_config_merger.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features_config_merger.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/product_features_config_merger.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features_config_merger.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/product_features_config_merger.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features_config_merger.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/product_features_config_merger.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features_config_merger.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features_service.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/product_features_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/security_saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/security_saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/security_saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/security_saved_objects.ts diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/product_features_service/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/product_features_service/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/index_status/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/index_status/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/index_status/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/index_status/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/index_status/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/index_status/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/index_status/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/index_status/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/indices/create_index_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/create_index_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/indices/create_index_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/create_index_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/indices/create_index_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/create_index_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/indices/create_index_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/create_index_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/delete_indices_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/indices/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/indices/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/indices/lib/create_index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/lib/create_index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/indices/lib/create_index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/lib/create_index.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/indices/lib/delete_indices.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/lib/delete_indices.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/indices/lib/delete_indices.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/indices/lib/delete_indices.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/onboarding/helpers/ingest_pipeline.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/helpers/ingest_pipeline.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/onboarding/helpers/ingest_pipeline.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/helpers/ingest_pipeline.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/onboarding/helpers/install_risk_score_module.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/helpers/install_risk_score_module.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/onboarding/helpers/install_risk_score_module.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/helpers/install_risk_score_module.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/onboarding/routes/__snapshots__/install_risk_scores.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/routes/__snapshots__/install_risk_scores.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/onboarding/routes/__snapshots__/install_risk_scores.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/routes/__snapshots__/install_risk_scores.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/onboarding/routes/install_risk_scores.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_mappings.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_mappings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_mappings.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_mappings.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_templates/enable_host_risk_score.mustache b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_templates/enable_host_risk_score.mustache similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_templates/enable_host_risk_score.mustache rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_templates/enable_host_risk_score.mustache diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_templates/enable_user_risk_score.mustache b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_templates/enable_user_risk_score.mustache similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_templates/enable_user_risk_score.mustache rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/console_templates/enable_user_risk_score.mustache diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/__snapshots__/read_prebuilt_dev_tool_content_route.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/__snapshots__/read_prebuilt_dev_tool_content_route.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/__snapshots__/read_prebuilt_dev_tool_content_route.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/__snapshots__/read_prebuilt_dev_tool_content_route.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/routes/read_prebuilt_dev_tool_content_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/schema.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/schema.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/schema.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/schema.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_dev_tool_content/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/bulk_create_saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/bulk_create_saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/bulk_create_saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/bulk_create_saved_objects.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/bulk_delete_saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/bulk_delete_saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/bulk_delete_saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/bulk_delete_saved_objects.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/create_risk_score_tag.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/create_risk_score_tag.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/create_risk_score_tag.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/create_risk_score_tag.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/helpers/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/__snapshots__/create_prebuilt_saved_objects.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/__snapshots__/create_prebuilt_saved_objects.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/__snapshots__/create_prebuilt_saved_objects.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/__snapshots__/create_prebuilt_saved_objects.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/create_prebuilt_saved_objects.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/routes/delete_prebuilt_saved_objects.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/types.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/readme.md b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/readme.md new file mode 100644 index 0000000000000..98768753bd9e3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/readme.md @@ -0,0 +1,488 @@ + +# Version +|Version|Risk Score Entity|Scripts created|Ingest pipelines created|Transforms created|Behind feature flag|Notes| +|-------|------|-------|----------------|----------|----|----| +|8.3`deprecated`|host|1.ml_hostriskscore_levels_script_{spacename} 2.ml_hostriskscore_map_script_{spacename} 3.ml_hostriskscore_reduce_script_{spacename} 4.ml_hostriskscore_init_script_{spacename}|ml_hostriskscore_ingest_pipeline_{spacename}|1.ml_hostriskscore_pivot_transform_{spacename} Destination Index: `ml_host_risk_score_{spacename}` 2.ml_hostriskscore_latest_transform_{spacename} Destination Index: `ml_host_risk_score_latest_{spacename}`| Yes|https://github.com/elastic/detection-rules/blob/main/docs/experimental-machine-learning/host-risk-score.md| +|8.3`deprecated`|user|1.ml_userriskscore_levels_script_{spacename} 2.ml_userriskscore_map_script_{spacename} 3.ml_userriskscore_reduce_script_{spacename}|ml_userriskscore_ingest_pipeline_{spacename}|1.ml_userriskscore_pivot_transform_{spacename} Destination index: `ml_user_risk_score_{spacename}` 2.ml_userriskscore_latest_transform_{spacename} Destination index: `ml_user_risk_score_latest_{spacename}`|Yes|https://github.com/elastic/detection-rules/blob/main/docs/experimental-machine-learning/user-risk-score.md| +|8.4`deprecated`|host|1.ml_hostriskscore_levels_script 2.ml_hostriskscore_map_script 3.ml_hostriskscore_reduce_script 4.ml_hostriskscore_init_script|ml_hostriskscore_ingest_pipeline|1.ml_hostriskscore_pivot_transform_{spacename} Destination Index: `ml_host_risk_score_{spacename}` 2.ml_hostriskscore_latest_transform_{spacename} Destination Index: `ml_host_risk_score_latest_{spacename}`|Yes|Installation via dev tools releasesd. https://github.com/elastic/kibana/blob/8.4/x-pack/solutions/security/plugins/security_solution/server/lib/prebuilt_dev_tool_content/console_templates/enable_host_risk_score.console| +|8.4`deprecated`|user|1.ml_userriskscore_levels_script_{spacename} 2.ml_userriskscore_map_script_{spacename} 3.ml_userriskscore_reduce_script_{spacename}|ml_userriskscore_ingest_pipeline_{spacename}|1.ml_userriskscore_pivot_transform_{spacename} Destination index: `ml_user_risk_score_{spacename}` 2.ml_userriskscore_latest_transform_{spacename} Destination index: `ml_user_risk_score_latest_{spacename}`|Yes|Installation via dev tools not available yet (Installation via dev tools is availble in 8.5). +|8.5+|host|1.ml_hostriskscore_levels_script_{spacename} 2.ml_hostriskscore_map_script_{spacename} 3.ml_hostriskscore_reduce_script_{spacename} 4.ml_hostriskscore_init_script_{spacename}|ml_hostriskscore_ingest_pipeline_{spacename}|1.ml_hostriskscore_pivot_transform_{spacename} Destination Index: `ml_host_risk_score_{spacename}` 2.ml_hostriskscore_latest_transform_{spacename} Destination Index: `ml_host_risk_score_latest_{spacename}`| No|`Breaking Chang`: New schema for Destination indices| +|8.5+|user|1.ml_userriskscore_levels_script_{spacename} 2.ml_userriskscore_map_script_{spacename} 3.ml_userriskscore_reduce_script_{spacename}|ml_userriskscore_ingest_pipeline_{spacename}|1.ml_userriskscore_pivot_transform_{spacename} Destination index: `ml_user_risk_score_{spacename}` 2.ml_userriskscore_latest_transform_{spacename} Destination index: `ml_user_risk_score_latest_{spacename}`|No|`Breaking Chang`: New schema for Destination indices| +# Risk Score API + +### API usage + +#### 1. GET /internal/risk_score/index_status - `getRiskScoreIndexStatusRoute` +##### REQUEST: +```typescript + GET /internal/risk_score/index_status + { + indexName: 'ml_host_risk_score_latest' + } +``` +##### RESPONSE: +```typescript + { + isDeprecated: boolean; + isEnabled: boolean; + } +``` +##### This route is called from `useRiskScore` hook. + +#### 2. PUT - /internal/risk_score/indices/create + +example: +##### REQUEST: + +``` +PUT /internal/risk_score/indices/create +{ + "index": "ml_host_risk_score_latest_default-test", + "mappings": { + "properties": { + "host.name": { + "type": "keyword" + }, + "@timestamp": { + "type": "date" + }, + "ingest_timestamp": { + "type": "date" + }, + "risk": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "risk_stats": { + "properties": { + "risk_score": { + "type": "float" + } + } + } + } + } +} +``` + + +##### RESPONSE: +``` +{ + "index": "ml_host_risk_score_latest_default-test", + "mappings": { + "properties": { + "host.name": { + "type": "keyword" + }, + "@timestamp": { + "type": "date" + }, + "ingest_timestamp": { + "type": "date" + }, + "risk": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "risk_stats": { + "properties": { + "risk_score": { + "type": "float" + } + } + } + } + } +} +``` + +#### 3. POST - /internal/risk_score/indices/delete + +example: + +##### REQUEST: +``` + POST /internal/risk_score/indices/delete + { + "indices": ["ml_host_risk_score_latest_default-test"] + } +``` + +##### RESPONSE: +``` + { + "deleted": [ + "ml_host_risk_score_latest_default-test" + ] + } +``` + +#### 4. POST - /internal/risk_score + +Onboard host or user risk score. +##### Option: + +|Body|description| +|--|--| +|riskScoreEntity|value: `host` or `user`| + +example: + +##### REQUEST: +``` + POST /internal/risk_score + { + "riskScoreEntity": host + } +``` +##### RESPONSE: + +``` +[ + { + "ml_hostriskscore_levels_script_default": { + "success": true, + "error": null + } + }, + { + "ml_hostriskscore_ingest_pipeline_default": { + "success": true, + "error": null + } + }, + { + "ml_hostriskscore_init_script_default": { + "success": true, + "error": null + } + }, + { + "ml_hostriskscore_map_script_default": { + "success": true, + "error": null + } + }, + { + "ml_hostriskscore_reduce_script_default": { + "success": true, + "error": null + } + }, + { + "ml_host_risk_score_default": { + "success": true, + "error": null + } + }, + { + "ml_host_risk_score_latest_default": { + "success": true, + "error": null + } + }, + { + "ml_hostriskscore_pivot_transform_default": { + "success": true, + "error": null + } + }, + { + "ml_hostriskscore_latest_transform_default": { + "success": true, + "error": null + } + } +] +``` + +#### 5. GET - /internal/risk_score/prebuilt_content/dev_tool/{console_id} + +Get scripts for onboarding host or user risk score + +##### Option: + +|Param|description| +|--|--| +|console_id|value: `enable_host_risk_score` or `enable_user_risk_score`| + +example: + +##### REQUEST: + +``` +GET /internal/risk_score/prebuilt_content/dev_tool/enable_host_risk_score +``` + +##### RESPONSE: + +``` +# Click the run button of each step to enable the module +# Upload scripts +# 1. Script to assign risk level based on risk score +PUT _scripts/ml_hostriskscore_levels_script_default +{ +"script": { +"lang": "painless", +"source": "double risk_score = (def)ctx.getByPath(params.risk_score);\nif (risk_score < 20) {\n + ctx['host']['risk']['calculated_level']='Unknown' \n}\nelse if (risk_score>= 20 && risk_score < 40) {\n + ctx['host']['risk']['calculated_level']='Low' \n}\nelse if (risk_score>= 40 && risk_score < 70) {\n + ctx['host']['risk']['calculated_level']='Moderate' \n}\nelse if (risk_score>= 70 && risk_score < 90) {\n + ctx['host']['risk']['calculated_level']='High' \n}\nelse if (risk_score>= 90) {\n + ctx['host']['risk']['calculated_level'] = 'Critical'\n}" + } + } + + # 2. Script to setup initial state for the Host Risk Score scripted metric aggregation + PUT _scripts/ml_hostriskscore_init_script_default + { + "script": { + "lang": "painless", + "source": "state.rule_risk_stats = new HashMap();\nstate.host_variant_set = false;\nstate.host_variant = + new String();\nstate.tactic_ids = new HashSet();" + } + } + + # 3. Map script for the Host Risk Score transform + PUT _scripts/ml_hostriskscore_map_script_default + { + "script": { + "lang": "painless", + "source": "// Get the host variant\nif (state.host_variant_set == false) {\n if + (doc.containsKey(\"host.os.full\") && doc[\"host.os.full\"].size() != 0) {\n state.host_variant = + doc[\"host.os.full\"].value;\n state.host_variant_set = true;\n }\n}\n// Aggregate all the tactics seen + on the host\nif (doc.containsKey(\"signal.rule.threat.tactic.id\") && + doc[\"signal.rule.threat.tactic.id\"].size() != 0) {\n + state.tactic_ids.add(doc[\"signal.rule.threat.tactic.id\"].value);\n}\n// Get running sum of + time-decayed risk score per rule name per shard\nString rule_name = + doc[\"signal.rule.name\"].value;\ndef stats = state.rule_risk_stats.getOrDefault(rule_name, + [0.0,\"\",false]);\nint time_diff = (int)((System.currentTimeMillis() - + doc[\"@timestamp\"].value.toInstant().toEpochMilli()) / (1000.0 * 60.0 * 60.0));\ndouble risk_derate = + Math.min(1, Math.exp((params.lookback_time - time_diff) / params.time_decay_constant));\nstats[0] = + Math.max(stats[0], doc[\"signal.rule.risk_score\"].value * risk_derate);\nif (stats[2] == false) {\n + stats[1] = doc[\"kibana.alert.rule.uuid\"].value;\n stats[2] = + true;\n}\nstate.rule_risk_stats.put(rule_name, stats);" + } + } + + # 4. Reduce script for the Host Risk Score transform + PUT _scripts/ml_hostriskscore_reduce_script_default + { + "script": { + "lang": "painless", + "source": "// Consolidating time decayed risks and tactics from across all shards\nMap total_risk_stats + = new HashMap();\nString host_variant = new String();\ndef tactic_ids = new HashSet();\nfor (state in + states) {\n for (key in state.rule_risk_stats.keySet()) {\n def rule_stats = + state.rule_risk_stats.get(key);\n def stats = total_risk_stats.getOrDefault(key, [0.0,\"\",false]);\n + stats[0] = Math.max(stats[0], rule_stats[0]);\n if (stats[2] == false) {\n stats[1] = rule_stats[1];\n + stats[2] = true;\n } \n total_risk_stats.put(key, stats);\n }\n if (host_variant.length() == 0) {\n + host_variant = state.host_variant;\n }\n tactic_ids.addAll(state.tactic_ids);\n}\n// Consolidating + individual rule risks and arranging them in decreasing order\nList risks = new ArrayList();\nfor (key in + total_risk_stats.keySet()) {\n risks.add(total_risk_stats[key][0])\n}\nCollections.sort(risks, + Collections.reverseOrder());\n// Calculating total host risk score\ndouble total_risk = 0.0;\ndouble + risk_cap = params.max_risk * params.zeta_constant;\nfor (int i=0;i= 40 && total_norm_risk < 50) {\n total_norm_risk=85 + + (total_norm_risk - 40);\n}\nelse {\n total_norm_risk=95 + (total_norm_risk - 50) / 10;\n}\n// + Calculating multipliers to the host risk score\ndouble risk_multiplier=1.0;\nList + multipliers=new ArrayList();\n// Add a multiplier if host is a server\nif + (host_variant.toLowerCase().contains(\"server\")) {\n risk_multiplier + *=params.server_multiplier;\n multipliers.add(\"Host is a server\");\n}\n// Add multipliers + based on number and diversity of tactics seen on the host\nfor (String tactic : tactic_ids) {\n + multipliers.add(\"Tactic \"+tactic);\n risk_multiplier *=1 + params.tactic_base_multiplier * + params.tactic_weights.getOrDefault(tactic, 0);\n}\n// Calculating final risk\ndouble + final_risk=total_norm_risk;\nif (risk_multiplier> 1.0) {\n double prior_odds = (total_norm_risk) + / (100 - total_norm_risk);\n double updated_odds = prior_odds * risk_multiplier; \n final_risk = + 100 * updated_odds / (1 + updated_odds);\n}\n// Adding additional metadata\nList rule_stats = + new ArrayList();\nfor (key in total_risk_stats.keySet()) {\n Map temp = new HashMap();\n + temp[\"rule_name\"] = key;\n temp[\"rule_risk\"] = total_risk_stats[key][0];\n temp[\"rule_id\"] + = total_risk_stats[key][1];\n rule_stats.add(temp);\n}\n\nreturn [\"calculated_score_norm\": + final_risk, \"rule_risks\": rule_stats, \"multipliers\": multipliers];" + } + } + + # 5. Upload the ingest pipeline + # Ingest pipeline to add ingest timestamp and risk level to documents + PUT _ingest/pipeline/ml_hostriskscore_ingest_pipeline_default + { + "processors": + [{"set":{"field":"ingest_timestamp","value":"{{_ingest.timestamp}}"}},{"fingerprint":{"fields":["@timestamp","_id"],"method":"SHA-256","target_field":"_id"}},{"script":{"id":"ml_hostriskscore_levels_script_default","params":{"risk_score":"host.risk.calculated_score_norm"}}}] + } + + # 6. Create mappings for the destination index of the Host Risk Score pivot transform + PUT ml_host_risk_score_default + { + "mappings": + {"properties":{"host":{"properties":{"name":{"type":"keyword"},"risk":{"properties":{"calculated_score_norm":{"type":"float"},"calculated_level":{"type":"keyword"},"multipliers":{"type":"keyword"},"rule_risks":{"properties":{"rule_name":{"type":"text","fields":{"keyword":{"type":"keyword"}}},"rule_risk":{"type":"float"},"rule_id":{"type":"keyword"}}}}}}},"ingest_timestamp":{"type":"date"},"@timestamp":{"type":"date"}}} + } + + # 7. Upload the Host Risk Score pivot transform + # This transform runs hourly and calculates a risk score and risk level for hosts in a Kibana + space + PUT _transform/ml_hostriskscore_pivot_transform_default + {"dest":{"index":"ml_host_risk_score_default","pipeline":"ml_hostriskscore_ingest_pipeline_default"},"frequency":"1h","pivot":{"aggregations":{"@timestamp":{"max":{"field":"@timestamp"}},"host.risk":{"scripted_metric":{"combine_script":"return + state","init_script":{"id":"ml_hostriskscore_init_script_default"},"map_script":{"id":"ml_hostriskscore_map_script_default"},"params":{"lookback_time":72,"max_risk":100,"p":1.5,"server_multiplier":1.5,"tactic_base_multiplier":0.25,"tactic_weights":{"TA0001":1,"TA0002":2,"TA0003":3,"TA0004":4,"TA0005":4,"TA0006":4,"TA0007":4,"TA0008":5,"TA0009":6,"TA0010":7,"TA0011":6,"TA0040":8,"TA0042":1,"TA0043":1},"time_decay_constant":6,"zeta_constant":2.612},"reduce_script":{"id":"ml_hostriskscore_reduce_script_default"}}}},"group_by":{"host.name":{"terms":{"field":"host.name"}}}},"source":{"index":[".alerts-security.alerts-default"],"query":{"bool":{"filter":[{"range":{"@timestamp":{"gte":"now-5d"}}}]}}},"sync":{"time":{"delay":"120s","field":"@timestamp"}}} + + + # 8. Start the pivot transform + POST _transform/ml_hostriskscore_pivot_transform_default/_start + + # 9. Create mappings for the destination index of the Host Risk Score latest transform + PUT ml_host_risk_score_latest_default + { + "mappings": + {"properties":{"host":{"properties":{"name":{"type":"keyword"},"risk":{"properties":{"calculated_score_norm":{"type":"float"},"calculated_level":{"type":"keyword"},"multipliers":{"type":"keyword"},"rule_risks":{"properties":{"rule_name":{"type":"text","fields":{"keyword":{"type":"keyword"}}},"rule_risk":{"type":"float"},"rule_id":{"type":"keyword"}}}}}}},"ingest_timestamp":{"type":"date"},"@timestamp":{"type":"date"}}} + } + + # 10. Upload the latest transform + # This transform gets the latest risk information about hosts in a Kibana space + PUT _transform/ml_hostriskscore_latest_transform_default + {"dest":{"index":"ml_host_risk_score_latest_default"},"frequency":"1h","latest":{"sort":"@timestamp","unique_key":["host.name"]},"source":{"index":["ml_host_risk_score_default"]},"sync":{"time":{"delay":"2s","field":"ingest_timestamp"}}} + + # 11. Start the latest transform + POST _transform/ml_hostriskscore_latest_transform_default/_start + + # Hint: If you don't see data after running any of the transforms, stop and restart the + transforms + # Stop the pivot transform + POST _transform/ml_hostriskscore_pivot_transform_default/_stop + + # Start the pivot transform + POST _transform/ml_hostriskscore_pivot_transform_default/_start + + # Stop the latest transform + POST _transform/ml_hostriskscore_latest_transform_default/_stop + + # Start the latest transform + POST _transform/ml_hostriskscore_latest_transform_default/_start +``` + +#### 6. POST - /internal/risk_score/prebuilt_content/saved_objects/_bulk_create/{template_name} + +Import saved objects for host or user risk score +##### Option: + +|Param|description| +|--|--| +|template_name|value: `hostRiskScoreDashboards` or `userRiskScoreDashboards`| + +example: + +##### REQUEST: + +``` +POST /internal/risk_score/prebuilt_content/saved_objects/_bulk_create/hostRiskScoreDashboards +``` + +##### RESPONSE: + +``` +{ + "hostRiskScoreDashboards": { + "success": true, + "error": null, + "body": [ + { + "id": "259ef77a-0ea2-4ba2-bb77-f33fae4ec8aa", + "type": "index-pattern", + "title": "ml_host_risk_score_default" + }, + { + "id": "0adfc3b7-efa0-470e-ac31-27b1d8e01c48", + "type": "lens", + "title": "Host Risk Score (Max Risk Score Histogram)" + }, + { + "id": "e1a4d5f1-e59f-4ee6-918b-a1a1b48bf8de", + "type": "index-pattern", + "title": ".alerts-security.alerts-default" + }, + { + "id": "7799bfdf-9318-4f85-b840-678ccfbd9f79", + "type": "visualization", + "title": "Host Risk Score (Rule Breakdown)" + }, + { + "id": "acbc71e9-de52-47cd-ade6-33be0efdb1dc", + "type": "visualization", + "title": "Associated Users (Rule Breakdown)" + }, + { + "id": "0fb7224d-5e32-4f3d-b408-ee6acfd3f0c6", + "type": "visualization", + "title": "Host Risk Score (Tactic Breakdown)- Verbose" + }, + { + "id": "53e4c2cd-9f34-48dd-ab87-f48b8c5dec22", + "type": "tag", + "name": "experimental" + }, + { + "id": "2175ffc6-c53c-46ac-b15d-be9b849881ac", + "type": "dashboard", + "title": "Drilldown of Host Risk Score" + }, + { + "id": "d9d560b4-beed-4c27-9989-95187e64d79b", + "type": "index-pattern", + "title": "ml_host_risk_score_latest_default" + }, + { + "id": "927a8467-ccc6-4374-85a4-0aab6c1c0613", + "type": "lens", + "title": "Current Risk Score for Hosts" + }, + { + "id": "aa7acd4e-b4e1-4730-acac-f73992034b0d", + "type": "dashboard", + "title": "Current Risk Score for Hosts" + } + ] + } +} +``` + +#### 7. POST - /internal/risk_score/prebuilt_content/saved_objects/_bulk_delete/{template_name} + +Import saved objects for host or user risk score +##### Option: + +|Param|description| +|--|--| +|template_name|value: `hostRiskScoreDashboards` or `userRiskScoreDashboards`| + +example: + +##### REQUEST: + +``` +POST /internal/risk_score/prebuilt_content/saved_objects/_bulk_delete/hostRiskScoreDashboards +``` + +##### RESPONSE: + +``` +[ + "Saved object [index-pattern/ml-host-risk-score-default-index-pattern] not found", + "Saved object [lens/d3f72670-d3a0-11eb-bd37-7bb50422e346] not found", + "Saved object [index-pattern/alerts-default-index-pattern] not found", + "Saved object [visualization/42371d00-cf7a-11eb-9a96-05d89f94ad96] not found", + "Saved object [visualization/a62d3ed0-cf92-11eb-a0ff-1763d16cbda7] not found", + "Saved object [visualization/b2dbc9b0-cf94-11eb-bd37-7bb50422e346] not found", + "Saved object [tag/1d00ebe0-f3b2-11eb-beb2-b91666445a94] not found", + "Saved object [dashboard/6f05c8c0-cf77-11eb-9a96-05d89f94ad96] not found", + "Saved object [index-pattern/ml-host-risk-score-latest-default-index-pattern] not found", + "Saved object [lens/dc289c10-d4ff-11eb-a0ff-1763d16cbda7] not found", + "Saved object [dashboard/27b483b0-d500-11eb-a0ff-1763d16cbda7] not found" +] +``` \ No newline at end of file diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/routes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/create_script_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/delete_script_route.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/lib/create_script.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/lib/create_script.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/lib/create_script.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/lib/create_script.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/lib/delete_script.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/lib/delete_script.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/stored_scripts/lib/delete_script.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/stored_scripts/lib/delete_script.ts diff --git a/x-pack/plugins/security_solution/server/lib/risk_score/transform/helpers/transforms.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/transform/helpers/transforms.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/risk_score/transform/helpers/transforms.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/risk_score/transform/helpers/transforms.ts diff --git a/x-pack/plugins/security_solution/server/lib/security_integrations/cribl/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/security_integrations/cribl/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/security_integrations/cribl/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/security_integrations/cribl/routes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/security_integrations/cribl/util/pipeline_builder.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/security_integrations/cribl/util/pipeline_builder.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/security_integrations/cribl/util/pipeline_builder.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/security_integrations/cribl/util/pipeline_builder.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/security_integrations/cribl/util/pipeline_builder.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/security_integrations/cribl/util/pipeline_builder.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/security_integrations/cribl/util/pipeline_builder.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/security_integrations/cribl/util/pipeline_builder.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/__mocks__/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/__mocks__/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/__mocks__/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/__mocks__/mocks.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/__mocks__/siem_migrations_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/__mocks__/siem_migrations_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/__mocks__/siem_migrations_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/__mocks__/siem_migrations_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/routes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/routes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/routes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/routes.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/__mocks__/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/__mocks__/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/__mocks__/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/__mocks__/mocks.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/__mocks__/siem_rule_migrations_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/__mocks__/siem_rule_migrations_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/__mocks__/siem_rule_migrations_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/__mocks__/siem_rule_migrations_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/constants.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts new file mode 100644 index 0000000000000..1e0a2fc5cb8c5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { IKibanaResponse, Logger } from '@kbn/core/server'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import { v4 as uuidV4 } from 'uuid'; +import { ResourceIdentifier } from '../../../../../common/siem_migrations/rules/resources'; +import { SIEM_RULE_MIGRATION_CREATE_PATH } from '../../../../../common/siem_migrations/constants'; +import { + CreateRuleMigrationRequestBody, + CreateRuleMigrationRequestParams, + type CreateRuleMigrationResponse, +} from '../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import type { SecuritySolutionPluginRouter } from '../../../../types'; +import type { CreateRuleMigrationInput } from '../data/rule_migrations_data_rules_client'; +import { withLicense } from './util/with_license'; + +export const registerSiemRuleMigrationsCreateRoute = ( + router: SecuritySolutionPluginRouter, + logger: Logger +) => { + router.versioned + .post({ + path: SIEM_RULE_MIGRATION_CREATE_PATH, + access: 'internal', + security: { authz: { requiredPrivileges: ['securitySolution'] } }, + }) + .addVersion( + { + version: '1', + validate: { + request: { + body: buildRouteValidationWithZod(CreateRuleMigrationRequestBody), + params: buildRouteValidationWithZod(CreateRuleMigrationRequestParams), + }, + }, + }, + withLicense( + async (context, req, res): Promise> => { + const originalRules = req.body; + const migrationId = req.params.migration_id ?? uuidV4(); + try { + const [firstOriginalRule] = originalRules; + if (!firstOriginalRule) { + return res.noContent(); + } + + const ctx = await context.resolve(['securitySolution']); + const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); + + const ruleMigrations = originalRules.map((originalRule) => ({ + migration_id: migrationId, + original_rule: originalRule, + })); + + await ruleMigrationsClient.data.rules.create(ruleMigrations); + + // Create identified resource documents without content to keep track of them + const resourceIdentifier = new ResourceIdentifier(firstOriginalRule.vendor); + const resources = resourceIdentifier + .fromOriginalRules(originalRules) + .map((resource) => ({ ...resource, migration_id: migrationId })); + + if (resources.length > 0) { + await ruleMigrationsClient.data.resources.create(resources); + } + + return res.ok({ body: { migration_id: migrationId } }); + } catch (err) { + logger.error(err); + return res.badRequest({ body: err.message }); + } + } + ) + ); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts new file mode 100644 index 0000000000000..2450bd02edadc --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { IKibanaResponse, Logger } from '@kbn/core/server'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import { + GetRuleMigrationRequestParams, + GetRuleMigrationRequestQuery, + type GetRuleMigrationResponse, +} from '../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import { SIEM_RULE_MIGRATION_PATH } from '../../../../../common/siem_migrations/constants'; +import type { SecuritySolutionPluginRouter } from '../../../../types'; +import type { RuleMigrationGetOptions } from '../data/rule_migrations_data_rules_client'; +import { withLicense } from './util/with_license'; + +export const registerSiemRuleMigrationsGetRoute = ( + router: SecuritySolutionPluginRouter, + logger: Logger +) => { + router.versioned + .get({ + path: SIEM_RULE_MIGRATION_PATH, + access: 'internal', + security: { authz: { requiredPrivileges: ['securitySolution'] } }, + }) + .addVersion( + { + version: '1', + validate: { + request: { + params: buildRouteValidationWithZod(GetRuleMigrationRequestParams), + query: buildRouteValidationWithZod(GetRuleMigrationRequestQuery), + }, + }, + }, + withLicense(async (context, req, res): Promise> => { + const { migration_id: migrationId } = req.params; + const { + page, + per_page: perPage, + sort_field: sortField, + sort_direction: sortDirection, + search_term: searchTerm, + ids, + } = req.query; + try { + const ctx = await context.resolve(['securitySolution']); + const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); + + const options: RuleMigrationGetOptions = { + filters: { searchTerm, ids }, + sort: { sortField, sortDirection }, + size: perPage, + from: page && perPage ? page * perPage : 0, + }; + + const result = await ruleMigrationsClient.data.rules.get(migrationId, options); + + return res.ok({ body: result }); + } catch (err) { + logger.error(err); + return res.badRequest({ body: err.message }); + } + }) + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get_prebuilt_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/get_prebuilt_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get_prebuilt_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/get_prebuilt_rules.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts new file mode 100644 index 0000000000000..241e59ac02a27 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger } from '@kbn/core/server'; +import type { SecuritySolutionPluginRouter } from '../../../../types'; +import { registerSiemRuleMigrationsCreateRoute } from './create'; +import { registerSiemRuleMigrationsUpdateRoute } from './update'; +import { registerSiemRuleMigrationsGetRoute } from './get'; +import { registerSiemRuleMigrationsStartRoute } from './start'; +import { registerSiemRuleMigrationsStatsRoute } from './stats'; +import { registerSiemRuleMigrationsTranslationStatsRoute } from './translation_stats'; +import { registerSiemRuleMigrationsStopRoute } from './stop'; +import { registerSiemRuleMigrationsStatsAllRoute } from './stats_all'; +import { registerSiemRuleMigrationsResourceUpsertRoute } from './resources/upsert'; +import { registerSiemRuleMigrationsResourceGetRoute } from './resources/get'; +import { registerSiemRuleMigrationsRetryRoute } from './retry'; +import { registerSiemRuleMigrationsInstallRoute } from './install'; +import { registerSiemRuleMigrationsInstallTranslatedRoute } from './install_translated'; +import { registerSiemRuleMigrationsResourceGetMissingRoute } from './resources/missing'; +import { registerSiemRuleMigrationsPrebuiltRulesRoute } from './get_prebuilt_rules'; + +export const registerSiemRuleMigrationsRoutes = ( + router: SecuritySolutionPluginRouter, + logger: Logger +) => { + registerSiemRuleMigrationsCreateRoute(router, logger); + registerSiemRuleMigrationsUpdateRoute(router, logger); + registerSiemRuleMigrationsStatsAllRoute(router, logger); + registerSiemRuleMigrationsPrebuiltRulesRoute(router, logger); + registerSiemRuleMigrationsGetRoute(router, logger); + registerSiemRuleMigrationsStartRoute(router, logger); + registerSiemRuleMigrationsRetryRoute(router, logger); + registerSiemRuleMigrationsStatsRoute(router, logger); + registerSiemRuleMigrationsTranslationStatsRoute(router, logger); + registerSiemRuleMigrationsStopRoute(router, logger); + registerSiemRuleMigrationsInstallRoute(router, logger); + registerSiemRuleMigrationsInstallTranslatedRoute(router, logger); + + registerSiemRuleMigrationsResourceUpsertRoute(router, logger); + registerSiemRuleMigrationsResourceGetRoute(router, logger); + registerSiemRuleMigrationsResourceGetMissingRoute(router, logger); +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/install.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/install.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/install.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/install.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/install_translated.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/install_translated.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/install_translated.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/install_translated.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts new file mode 100644 index 0000000000000..8d1e1d353e32d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { IKibanaResponse, Logger } from '@kbn/core/server'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import { + GetRuleMigrationResourcesRequestParams, + GetRuleMigrationResourcesRequestQuery, + type GetRuleMigrationResourcesResponse, +} from '../../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import { SIEM_RULE_MIGRATION_RESOURCES_PATH } from '../../../../../../common/siem_migrations/constants'; +import type { SecuritySolutionPluginRouter } from '../../../../../types'; +import { withLicense } from '../util/with_license'; + +export const registerSiemRuleMigrationsResourceGetRoute = ( + router: SecuritySolutionPluginRouter, + logger: Logger +) => { + router.versioned + .get({ + path: SIEM_RULE_MIGRATION_RESOURCES_PATH, + access: 'internal', + security: { authz: { requiredPrivileges: ['securitySolution'] } }, + }) + .addVersion( + { + version: '1', + validate: { + request: { + params: buildRouteValidationWithZod(GetRuleMigrationResourcesRequestParams), + query: buildRouteValidationWithZod(GetRuleMigrationResourcesRequestQuery), + }, + }, + }, + withLicense( + async (context, req, res): Promise> => { + const migrationId = req.params.migration_id; + const { type, names, from, size } = req.query; + try { + const ctx = await context.resolve(['securitySolution']); + const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); + + const options = { filters: { type, names }, from, size }; + const resources = await ruleMigrationsClient.data.resources.get(migrationId, options); + + return res.ok({ body: resources }); + } catch (err) { + logger.error(err); + return res.badRequest({ body: err.message }); + } + } + ) + ); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/missing.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/missing.ts new file mode 100644 index 0000000000000..0c9ad11f4cce6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/missing.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { IKibanaResponse, Logger } from '@kbn/core/server'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import type { RuleMigrationResourceData } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { + GetRuleMigrationResourcesMissingRequestParams, + type GetRuleMigrationResourcesMissingResponse, +} from '../../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import { SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH } from '../../../../../../common/siem_migrations/constants'; +import type { SecuritySolutionPluginRouter } from '../../../../../types'; +import { withLicense } from '../util/with_license'; + +export const registerSiemRuleMigrationsResourceGetMissingRoute = ( + router: SecuritySolutionPluginRouter, + logger: Logger +) => { + router.versioned + .get({ + path: SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH, + access: 'internal', + security: { authz: { requiredPrivileges: ['securitySolution'] } }, + }) + .addVersion( + { + version: '1', + validate: { + request: { + params: buildRouteValidationWithZod(GetRuleMigrationResourcesMissingRequestParams), + }, + }, + }, + withLicense( + async ( + context, + req, + res + ): Promise> => { + const migrationId = req.params.migration_id; + try { + const ctx = await context.resolve(['securitySolution']); + const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); + + const options = { filters: { hasContent: false } }; + const batches = ruleMigrationsClient.data.resources.searchBatches(migrationId, options); + + const missingResources: RuleMigrationResourceData[] = []; + let results = await batches.next(); + while (results.length) { + missingResources.push(...results.map(({ type, name }) => ({ type, name }))); + results = await batches.next(); + } + + return res.ok({ body: missingResources }); + } catch (err) { + logger.error(err); + return res.badRequest({ body: err.message }); + } + } + ) + ); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts new file mode 100644 index 0000000000000..9557c5cfd652f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { IKibanaResponse, Logger } from '@kbn/core/server'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import { ResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources'; +import { + UpsertRuleMigrationResourcesRequestBody, + UpsertRuleMigrationResourcesRequestParams, + type UpsertRuleMigrationResourcesResponse, +} from '../../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import { SIEM_RULE_MIGRATION_RESOURCES_PATH } from '../../../../../../common/siem_migrations/constants'; +import type { SecuritySolutionPluginRouter } from '../../../../../types'; +import type { CreateRuleMigrationResourceInput } from '../../data/rule_migrations_data_resources_client'; +import { withLicense } from '../util/with_license'; + +export const registerSiemRuleMigrationsResourceUpsertRoute = ( + router: SecuritySolutionPluginRouter, + logger: Logger +) => { + router.versioned + .post({ + path: SIEM_RULE_MIGRATION_RESOURCES_PATH, + access: 'internal', + security: { authz: { requiredPrivileges: ['securitySolution'] } }, + }) + .addVersion( + { + version: '1', + validate: { + request: { + params: buildRouteValidationWithZod(UpsertRuleMigrationResourcesRequestParams), + body: buildRouteValidationWithZod(UpsertRuleMigrationResourcesRequestBody), + }, + }, + }, + withLicense( + async ( + context, + req, + res + ): Promise> => { + const resources = req.body; + const migrationId = req.params.migration_id; + try { + const ctx = await context.resolve(['securitySolution']); + const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); + + // Check if the migration exists + const { data } = await ruleMigrationsClient.data.rules.get(migrationId, { size: 1 }); + const [rule] = data; + if (!rule) { + return res.notFound({ body: { message: 'Migration not found' } }); + } + + // Upsert identified resource documents with content + const ruleMigrations = resources.map((resource) => ({ + ...resource, + migration_id: migrationId, + })); + await ruleMigrationsClient.data.resources.upsert(ruleMigrations); + + // Create identified resource documents without content to keep track of them + const resourceIdentifier = new ResourceIdentifier(rule.original_rule.vendor); + const resourcesToCreate = resourceIdentifier + .fromResources(resources) + .map((resource) => ({ + ...resource, + migration_id: migrationId, + })); + await ruleMigrationsClient.data.resources.create(resourcesToCreate); + + return res.ok({ body: { acknowledged: true } }); + } catch (err) { + logger.error(err); + return res.badRequest({ body: err.message }); + } + } + ) + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/retry.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/retry.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/retry.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/retry.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/start.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/start.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/start.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/start.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/stats.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/stats.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/stats.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/stats.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/stats_all.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/stats_all.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/stats_all.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/stats_all.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/stop.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/stop.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/stop.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/stop.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/translation_stats.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/translation_stats.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/translation_stats.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/translation_stats.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/update.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/update.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/update.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/update.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts similarity index 94% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts index 8716c83ce6ba3..de95d818dd18d 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts @@ -7,13 +7,13 @@ import type { Logger, SavedObjectsClientContract } from '@kbn/core/server'; import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { UpdateRuleMigrationData } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; import { initPromisePool } from '../../../../../utils/promise_pool'; import type { SecuritySolutionApiRequestHandlerContext } from '../../../../..'; import { performTimelinesInstallation } from '../../../../detection_engine/prebuilt_rules/logic/perform_timelines_installation'; import { createPrebuiltRules } from '../../../../detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules'; import type { IDetectionRulesClient } from '../../../../detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface'; import type { RuleResponse } from '../../../../../../common/api/detection_engine'; -import type { UpdateRuleMigrationInput } from '../../data/rule_migrations_data_rules_client'; import type { StoredRuleMigration } from '../../types'; import { getPrebuiltRules, getUniquePrebuiltRuleIds } from './prebuilt_rules'; import { @@ -32,7 +32,7 @@ const installPrebuiltRules = async ( rulesClient: RulesClient, savedObjectsClient: SavedObjectsClientContract, detectionRulesClient: IDetectionRulesClient -): Promise => { +): Promise => { // Get required prebuilt rules const prebuiltRulesIds = getUniquePrebuiltRuleIds(rulesToInstall); const prebuiltRules = await getPrebuiltRules(rulesClient, savedObjectsClient, prebuiltRulesIds); @@ -66,7 +66,7 @@ const installPrebuiltRules = async ( ]; // Create migration rules updates templates - const rulesToUpdate: UpdateRuleMigrationInput[] = []; + const rulesToUpdate: UpdateRuleMigrationData[] = []; installedRules.forEach((installedRule) => { const filteredRules = rulesToInstall.filter( (rule) => rule.elastic_rule?.prebuilt_rule_id === installedRule.rule_id @@ -89,8 +89,8 @@ export const installCustomRules = async ( enabled: boolean, detectionRulesClient: IDetectionRulesClient, logger: Logger -): Promise => { - const rulesToUpdate: UpdateRuleMigrationInput[] = []; +): Promise => { + const rulesToUpdate: UpdateRuleMigrationData[] = []; const createCustomRulesOutcome = await initPromisePool({ concurrency: MAX_CUSTOM_RULES_TO_CREATE_IN_PARALLEL, items: rulesToInstall, @@ -211,10 +211,7 @@ export const installTranslated = async ({ logger ); - const rulesToUpdate: UpdateRuleMigrationInput[] = [ - ...updatedPrebuiltRules, - ...updatedCustomRules, - ]; + const rulesToUpdate: UpdateRuleMigrationData[] = [...updatedPrebuiltRules, ...updatedCustomRules]; if (rulesToUpdate.length) { await ruleMigrationsClient.data.rules.update(rulesToUpdate); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/prebuilt_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/util/prebuilt_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/prebuilt_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/util/prebuilt_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/with_license.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/util/with_license.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/with_license.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/api/util/with_license.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts new file mode 100644 index 0000000000000..77ed5e87084e9 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RuleMigrationsDataRulesClient } from '../rule_migrations_data_rules_client'; + +// Rule migrations data rules client +export const mockRuleMigrationsDataRulesClient = { + create: jest.fn().mockResolvedValue(undefined), + get: jest.fn().mockResolvedValue([]), + searchBatches: jest.fn().mockReturnValue({ + next: jest.fn().mockResolvedValue([]), + all: jest.fn().mockResolvedValue([]), + }), + takePending: jest.fn().mockResolvedValue([]), + saveCompleted: jest.fn().mockResolvedValue(undefined), + saveError: jest.fn().mockResolvedValue(undefined), + releaseProcessing: jest.fn().mockResolvedValue(undefined), + updateStatus: jest.fn().mockResolvedValue(undefined), + getStats: jest.fn().mockResolvedValue(undefined), + getAllStats: jest.fn().mockResolvedValue([]), +} as unknown as RuleMigrationsDataRulesClient; +export const MockRuleMigrationsDataRulesClient = jest + .fn() + .mockImplementation(() => mockRuleMigrationsDataRulesClient); + +// Rule migrations data resources client +export const mockRuleMigrationsDataResourcesClient = { + upsert: jest.fn().mockResolvedValue(undefined), + get: jest.fn().mockResolvedValue(undefined), + searchBatches: jest.fn().mockReturnValue({ + next: jest.fn().mockResolvedValue([]), + all: jest.fn().mockResolvedValue([]), + }), +}; +export const MockRuleMigrationsDataResourcesClient = jest + .fn() + .mockImplementation(() => mockRuleMigrationsDataResourcesClient); + +export const mockRuleMigrationsDataIntegrationsClient = { + retrieveIntegrations: jest.fn().mockResolvedValue([]), +}; + +// Rule migrations data client +export const mockRuleMigrationsDataClient = { + rules: mockRuleMigrationsDataRulesClient, + resources: mockRuleMigrationsDataResourcesClient, + integrations: mockRuleMigrationsDataIntegrationsClient, +}; + +export const MockRuleMigrationsDataClient = jest + .fn() + .mockImplementation(() => mockRuleMigrationsDataClient); + +// Rule migrations data service +export const mockIndexName = 'mocked_siem_rule_migrations_index_name'; +export const mockInstall = jest.fn().mockResolvedValue(undefined); +export const mockCreateClient = jest.fn().mockReturnValue(mockRuleMigrationsDataClient); + +export const MockRuleMigrationsDataService = jest.fn().mockImplementation(() => ({ + createAdapter: jest.fn(), + install: mockInstall, + createClient: mockCreateClient, + createIndexNameProvider: jest.fn().mockResolvedValue(mockIndexName), +})); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_resources_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_resources_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_resources_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_resources_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_rules_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_rules_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_rules_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_rules_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/rule_migrations_data_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/integrations_temp.json b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/integrations_temp.json similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/integrations_temp.json rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/integrations_temp.json diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts new file mode 100644 index 0000000000000..31931fce0b1d9 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + SearchHit, + SearchRequest, + SearchResponse, + Duration, +} from '@elastic/elasticsearch/lib/api/types'; +import type { ElasticsearchClient, Logger } from '@kbn/core/server'; +import assert from 'assert'; +import type { Stored } from '../types'; +import type { IndexNameProvider } from './rule_migrations_data_client'; + +const DEFAULT_PIT_KEEP_ALIVE: Duration = '30s' as const; + +export class RuleMigrationsDataBaseClient { + constructor( + protected getIndexName: IndexNameProvider, + protected username: string, + protected esClient: ElasticsearchClient, + protected logger: Logger + ) {} + + protected processResponseHits( + response: SearchResponse, + override?: Partial + ): Array> { + return this.processHits(response.hits.hits, override); + } + + protected processHits( + hits: Array> = [], + override: Partial = {} + ): Array> { + return hits.map(({ _id, _source }) => { + assert(_id, 'document should have _id'); + assert(_source, 'document should have _source'); + return { ..._source, ...override, id: _id }; + }); + } + + protected getTotalHits(response: SearchResponse) { + return typeof response.hits.total === 'number' + ? response.hits.total + : response.hits.total?.value ?? 0; + } + + /** Returns functions to iterate over all the search results in batches */ + protected getSearchBatches( + search: SearchRequest, + keepAlive: Duration = DEFAULT_PIT_KEEP_ALIVE + ) { + const pitPromise = this.getIndexName().then((index) => + this.esClient + .openPointInTime({ index, keep_alive: keepAlive }) + .then(({ id }) => ({ id, keep_alive: keepAlive })) + ); + + let currentBatchSearch: Promise> | undefined; + /* Returns the next batch of search results */ + const next = async (): Promise>> => { + const pit = await pitPromise; + if (!currentBatchSearch) { + currentBatchSearch = this.esClient.search({ ...search, pit }); + } else { + currentBatchSearch = currentBatchSearch.then((previousResponse) => { + if (previousResponse.hits.hits.length === 0) { + return previousResponse; + } + const lastSort = previousResponse.hits.hits[previousResponse.hits.hits.length - 1].sort; + return this.esClient.search({ ...search, pit, search_after: lastSort }); + }); + } + const response = await currentBatchSearch; + return this.processResponseHits(response); + }; + + /** Returns all the search results */ + const all = async (): Promise>> => { + const allResults: Array> = []; + let results = await next(); + while (results.length) { + allResults.push(...results); + results = await next(); + } + return allResults; + }; + + return { next, all }; + } +} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_integrations_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_integrations_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_integrations_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_integrations_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_prebuilt_rules_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_prebuilt_rules_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_prebuilt_rules_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_prebuilt_rules_client.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts new file mode 100644 index 0000000000000..97e51e9bafdb0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts @@ -0,0 +1,159 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { sha256 } from 'js-sha256'; +import type { QueryDslQueryContainer, Duration } from '@elastic/elasticsearch/lib/api/types'; +import type { + RuleMigrationResource, + RuleMigrationResourceType, +} from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import type { StoredRuleMigrationResource } from '../types'; +import { RuleMigrationsDataBaseClient } from './rule_migrations_data_base_client'; + +export type CreateRuleMigrationResourceInput = Pick< + RuleMigrationResource, + 'migration_id' | 'type' | 'name' | 'metadata' +> & { + content?: string; +}; +export interface RuleMigrationResourceFilters { + type?: RuleMigrationResourceType; + names?: string[]; + hasContent?: boolean; +} +export interface RuleMigrationResourceGetOptions { + filters?: RuleMigrationResourceFilters; + size?: number; + from?: number; +} + +/* BULK_MAX_SIZE defines the number to break down the bulk operations by. + * The 500 number was chosen as a reasonable number to avoid large payloads. It can be adjusted if needed. + */ +const BULK_MAX_SIZE = 500 as const; +/* DEFAULT_SEARCH_BATCH_SIZE defines the default number of documents to retrieve per search operation + * when retrieving search results in batches. */ +const DEFAULT_SEARCH_BATCH_SIZE = 500 as const; + +export class RuleMigrationsDataResourcesClient extends RuleMigrationsDataBaseClient { + public async upsert(resources: CreateRuleMigrationResourceInput[]): Promise { + const index = await this.getIndexName(); + + let resourcesSlice: CreateRuleMigrationResourceInput[]; + + const createdAt = new Date().toISOString(); + while ((resourcesSlice = resources.splice(0, BULK_MAX_SIZE)).length > 0) { + await this.esClient + .bulk({ + refresh: 'wait_for', + operations: resourcesSlice.flatMap((resource) => [ + { update: { _id: this.createId(resource), _index: index } }, + { + doc: { + ...resource, + '@timestamp': createdAt, + updated_by: this.username, + updated_at: createdAt, + }, + doc_as_upsert: true, + }, + ]), + }) + .catch((error) => { + this.logger.error(`Error upsert resources: ${error.message}`); + throw error; + }); + } + } + + /** Creates the resources in the index only if they do not exist */ + public async create(resources: CreateRuleMigrationResourceInput[]): Promise { + const index = await this.getIndexName(); + + let resourcesSlice: CreateRuleMigrationResourceInput[]; + const createdAt = new Date().toISOString(); + while ((resourcesSlice = resources.splice(0, BULK_MAX_SIZE)).length > 0) { + await this.esClient + .bulk({ + refresh: 'wait_for', + operations: resourcesSlice.flatMap((resource) => [ + { create: { _id: this.createId(resource), _index: index } }, + { + ...resource, + '@timestamp': createdAt, + updated_by: this.username, + updated_at: createdAt, + }, + ]), + }) + .catch((error) => { + this.logger.error(`Error upsert resources: ${error.message}`); + throw error; + }); + } + } + + public async get( + migrationId: string, + options: RuleMigrationResourceGetOptions = {} + ): Promise { + const { filters, size, from } = options; + const index = await this.getIndexName(); + const query = this.getFilterQuery(migrationId, filters); + + return this.esClient + .search({ index, query, size, from }) + .then(this.processResponseHits.bind(this)) + .catch((error) => { + this.logger.error(`Error searching resources: ${error.message}`); + throw error; + }); + } + + /** Returns batching functions to traverse all the migration resources search results */ + searchBatches( + migrationId: string, + options: { scroll?: Duration; size?: number; filters?: RuleMigrationResourceFilters } = {} + ) { + const { size = DEFAULT_SEARCH_BATCH_SIZE, filters = {}, scroll } = options; + const query = this.getFilterQuery(migrationId, filters); + const search = { query, sort: '_doc', scroll, size }; // sort by _doc to ensure consistent order + try { + return this.getSearchBatches(search); + } catch (error) { + this.logger.error(`Error scrolling rule migration resources: ${error.message}`); + throw error; + } + } + + private createId(resource: CreateRuleMigrationResourceInput): string { + const key = `${resource.migration_id}-${resource.type}-${resource.name}`; + return sha256.create().update(key).hex(); + } + + private getFilterQuery( + migrationId: string, + filters: RuleMigrationResourceFilters = {} + ): QueryDslQueryContainer { + const filter: QueryDslQueryContainer[] = [{ term: { migration_id: migrationId } }]; + if (filters.type) { + filter.push({ term: { type: filters.type } }); + } + if (filters.names) { + filter.push({ terms: { name: filters.names } }); + } + if (filters.hasContent != null) { + const existContent = { exists: { field: 'content' } }; + if (filters.hasContent) { + filter.push(existContent); + } else { + filter.push({ bool: { must_not: existContent } }); + } + } + return { bool: { filter } }; + } +} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts similarity index 88% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts index 1eeb3ced0572a..b483b3bdd4fbb 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts @@ -13,27 +13,25 @@ import type { AggregationsStringTermsAggregate, AggregationsStringTermsBucket, QueryDslQueryContainer, + Duration, } from '@elastic/elasticsearch/lib/api/types'; import type { StoredRuleMigration } from '../types'; import { SiemMigrationStatus } from '../../../../../common/siem_migrations/constants'; -import type { - ElasticRule, - RuleMigration, - RuleMigrationTaskStats, - RuleMigrationTranslationStats, +import { + type RuleMigration, + type RuleMigrationTaskStats, + type RuleMigrationTranslationStats, + type UpdateRuleMigrationData, } from '../../../../../common/siem_migrations/model/rule_migration.gen'; import { RuleMigrationsDataBaseClient } from './rule_migrations_data_base_client'; import { getSortingOptions, type RuleMigrationSort } from './sort'; import { conditions as searchConditions } from './search'; +import { convertEsqlQueryToTranslationResult } from './utils'; export type CreateRuleMigrationInput = Omit< RuleMigration, '@timestamp' | 'id' | 'status' | 'created_by' >; -export type UpdateRuleMigrationInput = { elastic_rule?: Partial } & Pick< - RuleMigration, - 'id' | 'translation_result' | 'comments' ->; export type RuleMigrationDataStats = Omit; export type RuleMigrationAllDataStats = RuleMigrationDataStats[]; @@ -52,9 +50,11 @@ export interface RuleMigrationGetOptions { } /* BULK_MAX_SIZE defines the number to break down the bulk operations by. - * The 500 number was chosen as a reasonable number to avoid large payloads. It can be adjusted if needed. - */ + * The 500 number was chosen as a reasonable number to avoid large payloads. It can be adjusted if needed. */ const BULK_MAX_SIZE = 500 as const; +/* DEFAULT_SEARCH_BATCH_SIZE defines the default number of documents to retrieve per search operation + * when retrieving search results in batches. */ +const DEFAULT_SEARCH_BATCH_SIZE = 500 as const; export class RuleMigrationsDataRulesClient extends RuleMigrationsDataBaseClient { /** Indexes an array of rule migrations to be processed */ @@ -87,22 +87,30 @@ export class RuleMigrationsDataRulesClient extends RuleMigrationsDataBaseClient } /** Updates an array of rule migrations to be processed */ - async update(ruleMigrations: UpdateRuleMigrationInput[]): Promise { + async update(ruleMigrations: UpdateRuleMigrationData[]): Promise { const index = await this.getIndexName(); - let ruleMigrationsSlice: UpdateRuleMigrationInput[]; + let ruleMigrationsSlice: UpdateRuleMigrationData[]; const updatedAt = new Date().toISOString(); while ((ruleMigrationsSlice = ruleMigrations.splice(0, BULK_MAX_SIZE)).length) { await this.esClient .bulk({ refresh: 'wait_for', operations: ruleMigrationsSlice.flatMap((ruleMigration) => { - const { id, ...rest } = ruleMigration; + const { + id, + translation_result: translationResult, + elastic_rule: elasticRule, + ...rest + } = ruleMigration; return [ { update: { _index: index, _id: id } }, { doc: { ...rest, + elastic_rule: elasticRule, + translation_result: + translationResult ?? convertEsqlQueryToTranslationResult(elasticRule?.query), updated_by: this.username, updated_at: updatedAt, }, @@ -123,7 +131,7 @@ export class RuleMigrationsDataRulesClient extends RuleMigrationsDataBaseClient { filters = {}, sort = {}, from, size }: RuleMigrationGetOptions = {} ): Promise<{ total: number; data: StoredRuleMigration[] }> { const index = await this.getIndexName(); - const query = this.getFilterQuery(migrationId, { ...filters }); + const query = this.getFilterQuery(migrationId, filters); const result = await this.esClient .search({ @@ -143,6 +151,22 @@ export class RuleMigrationsDataRulesClient extends RuleMigrationsDataBaseClient }; } + /** Returns batching functions to traverse all the migration rules search results */ + searchBatches( + migrationId: string, + options: { scroll?: Duration; size?: number; filters?: RuleMigrationFilters } = {} + ) { + const { size = DEFAULT_SEARCH_BATCH_SIZE, filters = {}, scroll } = options; + const query = this.getFilterQuery(migrationId, filters); + const search = { query, sort: '_doc', scroll, size }; // sort by _doc to ensure consistent order + try { + return this.getSearchBatches(search); + } catch (error) { + this.logger.error(`Error scrolling rule migrations: ${error.message}`); + throw error; + } + } + /** * Retrieves `pending` rule migrations with the provided id and updates their status to `processing`. * This operation is not atomic at migration level: diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_service.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_service.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_service.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts similarity index 97% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts index 952663c36123c..c03b7ef52e784 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts @@ -27,7 +27,7 @@ export const ruleMigrationsFieldMap: FieldMap { + const { isEsqlQueryAggregating, hasMetadataOperator, errors } = parseEsqlQuery(esqlQuery); + + // Check if there are any syntax errors + if (errors.length) { + return false; + } + + // non-aggregating query which does not have metadata, is not a valid one + if (!isEsqlQueryAggregating && !hasMetadataOperator) { + return false; + } + + return true; +}; + +export const convertEsqlQueryToTranslationResult = ( + esqlQuery?: string +): RuleMigrationTranslationResult | undefined => { + if (esqlQuery === undefined) { + return undefined; + } + if (esqlQuery === '') { + return RuleMigrationTranslationResultEnum.untranslatable; + } + return isValidEsqlQuery(esqlQuery) + ? RuleMigrationTranslationResultEnum.full + : RuleMigrationTranslationResultEnum.partial; +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/siem_rule_migrations_service.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/siem_rule_migrations_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/siem_rule_migrations_service.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/siem_rule_migrations_service.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/siem_rule_migrations_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/siem_rule_migrations_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/siem_rule_migrations_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/siem_rule_migrations_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/mocks.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/rule_migrations_task_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/rule_migrations_task_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/rule_migrations_task_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/rule_migrations_task_client.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/rule_migrations_task_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/rule_migrations_task_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/rule_migrations_task_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/__mocks__/rule_migrations_task_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts new file mode 100644 index 0000000000000..942adcfcc89ec --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { END, START, StateGraph } from '@langchain/langgraph'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../common/siem_migrations/constants'; +import { getCreateSemanticQueryNode } from './nodes/create_semantic_query'; +import { getMatchPrebuiltRuleNode } from './nodes/match_prebuilt_rule'; +import { getProcessQueryNode } from './nodes/process_query'; + +import { migrateRuleState } from './state'; +import { getTranslateRuleGraph } from './sub_graphs/translate_rule'; +import type { MigrateRuleGraphParams, MigrateRuleState } from './types'; + +export function getRuleMigrationAgent({ + model, + inferenceClient, + ruleMigrationsRetriever, + connectorId, + logger, +}: MigrateRuleGraphParams) { + const matchPrebuiltRuleNode = getMatchPrebuiltRuleNode({ + model, + logger, + ruleMigrationsRetriever, + }); + const translationSubGraph = getTranslateRuleGraph({ + model, + inferenceClient, + ruleMigrationsRetriever, + connectorId, + logger, + }); + const createSemanticQueryNode = getCreateSemanticQueryNode({ model }); + const processQueryNode = getProcessQueryNode({ model, ruleMigrationsRetriever }); + + const siemMigrationAgentGraph = new StateGraph(migrateRuleState) + // Nodes + .addNode('processQuery', processQueryNode) + .addNode('createSemanticQuery', createSemanticQueryNode) + .addNode('matchPrebuiltRule', matchPrebuiltRuleNode) + .addNode('translationSubGraph', translationSubGraph) + // Edges + .addEdge(START, 'createSemanticQuery') + .addEdge('createSemanticQuery', 'matchPrebuiltRule') + .addConditionalEdges('matchPrebuiltRule', matchedPrebuiltRuleConditional, ['processQuery', END]) + .addEdge('processQuery', 'translationSubGraph') + .addEdge('translationSubGraph', END); + + const graph = siemMigrationAgentGraph.compile(); + graph.name = 'Rule Migration Graph'; // Customizes the name displayed in LangSmith + return graph; +} + +/* + * If the original splunk rule has no prebuilt rule match, we will start processing the query, unless it is related to input/outputlookups. + */ +const matchedPrebuiltRuleConditional = (state: MigrateRuleState) => { + if (state.elastic_rule?.prebuilt_rule_id) { + return END; + } + if (state.translation_result === SiemMigrationRuleTranslationResult.UNTRANSLATABLE) { + return END; + } + return 'processQuery'; +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/create_semantic_query.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/create_semantic_query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/create_semantic_query.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/create_semantic_query.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts new file mode 100644 index 0000000000000..6f1e39f938692 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ChatPromptTemplate } from '@langchain/core/prompts'; +export const CREATE_SEMANTIC_QUERY_PROMPT = ChatPromptTemplate.fromMessages([ + [ + 'system', + `You are a helpful assistant that helps in translating provided titles, descriptions and data sources into a single summary of keywords specifically crafted to be used as a semantic search query, which are usually short and includes keywords that are valid for the usecase. +The data provided are collected from SIEM detection rules, and it is trying to match the description of a list of data sources, so provide good keywords that match this usecase. +Try to also detect what sort of vendor, solution or technology is required and add these as keywords as well. +Some examples would be to identify if its cloud, which vendor, network, host, endpoint, etc.`, + ], + [ + 'human', + ` +Title: {title} +Description: {description} +Query: {query} + + +Go through the relevant title, description and data sources from the above query and create a collection of keywords specifically crafted to be used as a semantic search query. + + +- The query should be short and concise. +- Include keywords that are relevant to the use case. +- Add related keywords you detected from the above query, like one or more vendor, product, cloud provider, OS platform etc. +- Always reply with a JSON object with the key "semantic_query" and the value as the semantic search query inside three backticks as shown in the below example. +- If the related query focuses on Endpoint datamodel, make sure that "endpoint", "security" keywords are included. + + + +U: +Title: Processes created by netsh +Description: This search looks for processes launching netsh.exe to execute various commands via the netsh command-line utility. Netsh.exe is a command-line scripting utility that allows you to, either locally or remotely, display or modify the network configuration of a computer that is currently running. Netsh can be used as a persistence proxy technique to execute a helper .dll when netsh.exe is executed. In this search, we are looking for processes spawned by netsh.exe that are executing commands via the command line. Deprecated because we have another detection of the same type. +Data Sources: + +A: Please find the semantic_query keywords JSON object below: +\`\`\`json +{{"semantic_query": "windows host endpoint netsh.exe process creation command-line utility network configuration persistence proxy dll execution sysmon event id 1"}} +\`\`\` +`, + ], + ['ai', 'Please find the semantic_query keywords JSON object below:'], +]); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts new file mode 100644 index 0000000000000..e4b2162249cae --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger } from '@kbn/core/server'; +import { JsonOutputParser } from '@langchain/core/output_parsers'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../../../common/siem_migrations/constants'; +import type { RuleMigrationsRetriever } from '../../../retrievers'; +import type { ChatModel } from '../../../util/actions_client_chat'; +import type { GraphNode } from '../../types'; +import { MATCH_PREBUILT_RULE_PROMPT } from './prompts'; + +interface GetMatchPrebuiltRuleNodeParams { + model: ChatModel; + logger: Logger; + ruleMigrationsRetriever: RuleMigrationsRetriever; +} + +interface GetMatchedRuleResponse { + match: string; +} + +export const getMatchPrebuiltRuleNode = ({ + model, + ruleMigrationsRetriever, + logger, +}: GetMatchPrebuiltRuleNodeParams): GraphNode => { + return async (state) => { + const query = state.semantic_query; + const techniqueIds = state.original_rule.annotations?.mitre_attack || []; + const prebuiltRules = await ruleMigrationsRetriever.prebuiltRules.getRules( + query, + techniqueIds.join(',') + ); + + const outputParser = new JsonOutputParser(); + const mostRelevantRule = MATCH_PREBUILT_RULE_PROMPT.pipe(model).pipe(outputParser); + + const elasticSecurityRules = prebuiltRules.map((rule) => { + return { + name: rule.name, + description: rule.description, + }; + }); + + const splunkRule = { + title: state.original_rule.title, + description: state.original_rule.description, + }; + + /* + * Takes the most relevant rule from the array of rule(s) returned by the semantic query, returns either the most relevant or none. + */ + const response = (await mostRelevantRule.invoke({ + rules: JSON.stringify(elasticSecurityRules, null, 2), + splunk_rule: JSON.stringify(splunkRule, null, 2), + })) as GetMatchedRuleResponse; + if (response.match) { + const matchedRule = prebuiltRules.find((r) => r.name === response.match); + if (matchedRule) { + return { + elastic_rule: { + title: matchedRule.name, + description: matchedRule.description, + id: matchedRule.installedRuleId, + prebuilt_rule_id: matchedRule.rule_id, + }, + translation_result: SiemMigrationRuleTranslationResult.FULL, + }; + } + } + const lookupTypes = ['inputlookup', 'outputlookup']; + if ( + state.original_rule?.query && + lookupTypes.some((type) => state.original_rule.query.includes(type)) + ) { + logger.debug( + `Rule: ${state.original_rule?.title} did not match any prebuilt rule, but contains inputlookup, dropping` + ); + return { translation_result: SiemMigrationRuleTranslationResult.UNTRANSLATABLE }; + } + return {}; + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts new file mode 100644 index 0000000000000..12fb7ec70febf --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ChatPromptTemplate } from '@langchain/core/prompts'; +export const MATCH_PREBUILT_RULE_PROMPT = ChatPromptTemplate.fromMessages([ + [ + 'system', + `You are an expert assistant in Cybersecurity, your task is to help migrating a SIEM detection rule, from Splunk Security to Elastic Security. +You will be provided with a Splunk Detection Rule name by the user, your goal is to try find an Elastic Detection Rule that covers the same threat, if any. +Here are some context for you to reference for your task, read it carefully as you will get questions about it later: + + + +{rules} + + +`, + ], + [ + 'human', + `See the below description of the relevant splunk rule and try to match it with any of the elastic detection rules with similar names. + +{splunk_rule} + + + +- Always reply with a JSON object with the key "match" and the value being the most relevant matched elastic detection rule name. Do not reply with anything else. +- Only reply with exact matches, if you are unsure or do not find a very confident match, always reply with an empty string value in the match key, do not guess or reply with anything else. +- If there is one Elastic rule in the list that covers the same usecase, set the name of the matching rule as a value of the match key. Do not reply with anything else. +- If there are multiple rules in the list that cover the same usecase, answer with the most specific of them, for example: "Linux User Account Creation" is more specific than "User Account Creation". + + + +U: +Title: Linux Auditd Add User Account Type +Description: The following analytic detects the suspicious add user account type. + +A: Please find the match JSON object below: +\`\`\`json +{{"match": "Linux User Account Creation"}} +\`\`\` + +`, + ], + ['ai', 'Please find the match JSON object below:'], +]); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/process_query.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/process_query.ts similarity index 97% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/process_query.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/process_query.ts index 27a9bca16390d..e4b7e64e85b00 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/process_query.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/process_query.ts @@ -32,7 +32,6 @@ export const getProcessQueryNode = ({ const response = await replaceQueryResourcePrompt.invoke({ query: state.original_rule.query, macros: resourceContext.macros, - lookup_tables: resourceContext.lists, }); const splQuery = response.match(/```spl\n([\s\S]*?)\n```/)?.[1] ?? ''; if (splQuery) { diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/prompts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/prompts.ts new file mode 100644 index 0000000000000..68eaaeffd11b1 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/process_query/prompts.ts @@ -0,0 +1,117 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ChatPromptTemplate } from '@langchain/core/prompts'; +import type { RuleMigrationResources } from '../../../retrievers/rule_resource_retriever'; + +interface ResourceContext { + macros: string; + lists: string; +} + +export const getResourcesContext = (resources: RuleMigrationResources): ResourceContext => { + const result: ResourceContext = { macros: '', lists: '' }; + + // Process macros + if (resources.macro?.length) { + const macrosMap = resources.macro.reduce((acc, macro) => { + acc[macro.name] = macro.content; + return acc; + }, {} as Record); + + result.macros = JSON.stringify(macrosMap, null, 2); + } + + // Process lists + if (resources.list?.length) { + const listsMap = resources.list.reduce((acc, list) => { + acc[list.name] = list.content; + return acc; + }, {} as Record); + + result.lists = JSON.stringify(listsMap, null, 2); + } + + return result; +}; + +export const REPLACE_QUERY_RESOURCE_PROMPT = ChatPromptTemplate.fromMessages([ + [ + 'system', + `You are an agent expert in Splunk SPL (Search Processing Language). +Your task is to inline a set of macros syntax using its values in a SPL query. +Here are some context for you to reference for your task, read it carefully as you will get questions about it later: + + + + +Always follow the below guidelines when replacing macros: +- Macros names have the number of arguments in parentheses, e.g., \`macroName(2)\`. You must replace the correct macro accounting for the number of arguments. + +Having the following macros: + \`someSource\`: sourcetype="somesource" + \`searchTitle(1)\`: search title="$value$" + \`searchTitle\`: search title=* + \`searchType\`: search type=* +And the following SPL query: + \`\`\`spl + \`someSource\` \`someFilter\` + | \`searchTitle("sometitle")\` + | \`searchType("sometype")\` + | table * + \`\`\` +The correct replacement would be: + \`\`\`spl + sourcetype="somesource" \`someFilter\` + | search title="sometitle" + | \`searchType("sometype")\` + | table * + \`\`\` + +`, + ], + [ + 'human', + `Go through the SPL query and identify all the macros that are used. + +{macros} + + + +\`\`\`spl +{query} +\`\`\` + + +Divide the query up into separate section and go through each section one at a time to identify the macros used that need to be replaced using one of two scenarios: +- The macro is provided in the list of available macros: Replace it using its actual content. +- The macro is not in the list of available macros: Do not replace it, keep it in the query as it is. + + +- You will be provided with a SPL query and also the related macros used in the query. +- You have to replace the macros syntax in the SPL query and use their values inline, if provided. +- The original and modified queries must be equivalent. +- You must respond only with the modified query inside a \`\`\`spl code block, nothing else similar to the example response below. + + + +A: Please find the modified SPL query below: +\`\`\`spl +sourcetype="linux:audit" \`linux_auditd_normalized_proctitle_process\` +| rename host as dest +| where LIKE (process_exec, "%chown root%") +| stats count min(_time) as firstTime max(_time) as lastTime by process_exec proctitle normalized_proctitle_delimiter dest +| convert timeformat="%Y-%m-%dT%H:%M:%S" ctime(firstTime) +| convert timeformat="%Y-%m-%dT%H:%M:%S" ctime(lastTime) +| search * +\`\`\` + + +`, + ], + ['ai', 'Please find the modified SPL query below:'], +]); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts new file mode 100644 index 0000000000000..a9047c9dc5439 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { BaseMessage } from '@langchain/core/messages'; +import { Annotation, messagesStateReducer } from '@langchain/langgraph'; +import type { SiemMigrationRuleTranslationResult } from '../../../../../../common/siem_migrations/constants'; +import type { + ElasticRule, + OriginalRule, + RuleMigration, +} from '../../../../../../common/siem_migrations/model/rule_migration.gen'; + +export const migrateRuleState = Annotation.Root({ + messages: Annotation({ + reducer: messagesStateReducer, + default: () => [], + }), + original_rule: Annotation(), + elastic_rule: Annotation({ + reducer: (state, action) => ({ ...state, ...action }), + }), + semantic_query: Annotation({ + reducer: (current, value) => value ?? current, + default: () => '', + }), + inline_query: Annotation({ + reducer: (current, value) => value ?? current, + default: () => '', + }), + translation_result: Annotation(), + comments: Annotation({ + reducer: (current, value) => (value ? (current ?? []).concat(value) : current), + default: () => [], + }), + response: Annotation(), +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts new file mode 100644 index 0000000000000..463de671552c1 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { END, START, StateGraph } from '@langchain/langgraph'; +import { isEmpty } from 'lodash/fp'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../../../common/siem_migrations/constants'; +import { getEcsMappingNode } from './nodes/ecs_mapping'; +import { getFilterIndexPatternsNode } from './nodes/filter_index_patterns'; +import { getFixQueryErrorsNode } from './nodes/fix_query_errors'; +import { getRetrieveIntegrationsNode } from './nodes/retrieve_integrations'; +import { getTranslateRuleNode } from './nodes/translate_rule'; +import { getValidationNode } from './nodes/validation'; +import { translateRuleState } from './state'; +import type { TranslateRuleGraphParams, TranslateRuleState } from './types'; + +// How many times we will try to self-heal when validation fails, to prevent infinite graph recursions +const MAX_VALIDATION_ITERATIONS = 3; + +export function getTranslateRuleGraph({ + model, + inferenceClient, + connectorId, + ruleMigrationsRetriever, + logger, +}: TranslateRuleGraphParams) { + const translateRuleNode = getTranslateRuleNode({ + inferenceClient, + connectorId, + logger, + }); + const validationNode = getValidationNode({ logger }); + const fixQueryErrorsNode = getFixQueryErrorsNode({ inferenceClient, connectorId, logger }); + const retrieveIntegrationsNode = getRetrieveIntegrationsNode({ model, ruleMigrationsRetriever }); + const ecsMappingNode = getEcsMappingNode({ inferenceClient, connectorId, logger }); + const filterIndexPatternsNode = getFilterIndexPatternsNode({ logger }); + + const translateRuleGraph = new StateGraph(translateRuleState) + // Nodes + .addNode('translateRule', translateRuleNode) + .addNode('validation', validationNode) + .addNode('fixQueryErrors', fixQueryErrorsNode) + .addNode('retrieveIntegrations', retrieveIntegrationsNode) + .addNode('ecsMapping', ecsMappingNode) + .addNode('filterIndexPatterns', filterIndexPatternsNode) + // Edges + .addEdge(START, 'retrieveIntegrations') + .addEdge('retrieveIntegrations', 'translateRule') + .addEdge('translateRule', 'validation') + .addEdge('fixQueryErrors', 'validation') + .addEdge('ecsMapping', 'validation') + .addConditionalEdges('validation', validationRouter, [ + 'fixQueryErrors', + 'ecsMapping', + 'filterIndexPatterns', + ]) + .addEdge('filterIndexPatterns', END); + + const graph = translateRuleGraph.compile(); + graph.name = 'Translate Rule Graph'; + return graph; +} + +const validationRouter = (state: TranslateRuleState) => { + if ( + state.validation_errors.iterations <= MAX_VALIDATION_ITERATIONS && + state.translation_result === SiemMigrationRuleTranslationResult.FULL + ) { + if (!isEmpty(state.validation_errors?.esql_errors)) { + return 'fixQueryErrors'; + } + if (!state.translation_finalized) { + return 'ecsMapping'; + } + } + return 'filterIndexPatterns'; +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/cim_ecs_map.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/cim_ecs_map.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/cim_ecs_map.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/cim_ecs_map.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/ecs_mapping.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/ecs_mapping.ts new file mode 100644 index 0000000000000..6acc45a95d17b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/ecs_mapping.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger } from '@kbn/core/server'; +import type { InferenceClient } from '@kbn/inference-plugin/server'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../../../../../common/siem_migrations/constants'; +import { getEsqlKnowledgeBase } from '../../../../../util/esql_knowledge_base_caller'; +import type { GraphNode } from '../../types'; +import { SIEM_RULE_MIGRATION_CIM_ECS_MAP } from './cim_ecs_map'; +import { ESQL_TRANSLATE_ECS_MAPPING_PROMPT } from './prompts'; + +interface GetEcsMappingNodeParams { + inferenceClient: InferenceClient; + connectorId: string; + logger: Logger; +} + +export const getEcsMappingNode = ({ + inferenceClient, + connectorId, + logger, +}: GetEcsMappingNodeParams): GraphNode => { + const esqlKnowledgeBaseCaller = getEsqlKnowledgeBase({ inferenceClient, connectorId, logger }); + return async (state) => { + const elasticRule = { + title: state.elastic_rule.title, + description: state.elastic_rule.description, + query: state.elastic_rule.query, + }; + + const prompt = await ESQL_TRANSLATE_ECS_MAPPING_PROMPT.format({ + field_mapping: SIEM_RULE_MIGRATION_CIM_ECS_MAP, + splunk_query: state.inline_query, + elastic_rule: JSON.stringify(elasticRule, null, 2), + }); + + const response = await esqlKnowledgeBaseCaller(prompt); + + const updatedQuery = response.match(/```esql\n([\s\S]*?)\n```/)?.[1] ?? ''; + const ecsSummary = response.match(/## Field Mapping Summary[\s\S]*$/)?.[0] ?? ''; + + const translationResult = getTranslationResult(updatedQuery); + + return { + response, + comments: [ecsSummary], + translation_finalized: true, + translation_result: translationResult, + elastic_rule: { + ...state.elastic_rule, + query: updatedQuery, + }, + }; + }; +}; + +const getTranslationResult = (esqlQuery: string): SiemMigrationRuleTranslationResult => { + if (esqlQuery.match(/\[(macro):[\s\S]*\]/)) { + return SiemMigrationRuleTranslationResult.PARTIAL; + } + return SiemMigrationRuleTranslationResult.FULL; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/index.ts new file mode 100644 index 0000000000000..339e6d3dd8e7a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +export { getEcsMappingNode } from './ecs_mapping'; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/prompts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/prompts.ts new file mode 100644 index 0000000000000..1e89cda884ca0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/prompts.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ChatPromptTemplate } from '@langchain/core/prompts'; + +export const ESQL_TRANSLATE_ECS_MAPPING_PROMPT = + ChatPromptTemplate.fromTemplate(`You are a helpful cybersecurity (SIEM) expert agent. Your task is to migrate "detection rules" from Splunk SPL to Elasticsearch ESQL. +Your task is to look at the new ESQL query already generated from its initial Splunk SPL query and translate the Splunk CIM field names to the Elastic Common Schema (ECS) fields. +Below is the relevant context used when deciding which Elastic Common Schema field to use when translating from Splunk CIM fields: + + + +{field_mapping} + + +{splunk_query} + + +{elastic_rule} + + + +Go through the current esql query above and translate the current field names that originated from a Splunk CIM/SPL query to the equivalent Elastic Common Schema (ECS) fields by following these steps: +- Analyze all the information about the related esql rule especially the query and try to determine the intent of the rule, which should help in choosing which fields to map to ECS. +- Try to determine if and which datamodel is being used by looking at the initial splunk query, the query usually contains the datamodel name, its object and related fields. +- Go through each part of the ESQL query, if a part is determined to be related to a splunk CIM field or datamodel use the cim to ecs map above to determine the equivalent ECS field. +- If a field is not in the cim to ecs map, or no datamodel is used, try to use your existing knowledge about Elastic Common Schema to determine if and which ECS field to use. +- Do not reuse the same ECS field name for multiple Splunk CIM fields, always try to find the most appropriate ECS field. +- If you are uncertain about a field mapping, leave it as is and mention it in the summary. + + +- If a field is found in the CIM to ECS map, replace the field name with the ECS field name. If not, try to determine if and what equivalent ECS field can be used. +- Only translate the field names, do not modify the structure of the query. +- Only translate when you are certain about the field mapping, if uncertain, leave the field as is and mention it in the summary. +- Only use and modify the current ESQL query, do not create a new one or modify any other part of the rule. + + + +- First, the updated ES|QL query inside an \`\`\`esql code block. +- At the end, the summary of the the field mapping process followed in markdown, starting with "## Field Mapping Summary". This would include the reason, original field names, the target ECS field name and any fields that were left as is. + +`); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/filter_index_patterns.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/filter_index_patterns.ts new file mode 100644 index 0000000000000..bb1e086bf4937 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/filter_index_patterns.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger } from '@kbn/core/server'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../../../../../common/siem_migrations/constants'; +import type { GraphNode } from '../../types'; + +interface GetFilterIndexPatternsNodeParams { + logger: Logger; +} + +/** + * When rule translation happens without any related integrations found we reuse the logs-* pattern to make validation easier. + * However we want to replace this with a value to notify the end user that it needs to be replaced. + */ +export const getFilterIndexPatternsNode = ({ + logger, +}: GetFilterIndexPatternsNodeParams): GraphNode => { + return async (state) => { + const query = state.elastic_rule?.query; + + if (query && query.includes('logs-*')) { + logger.debug('Replacing logs-* with a placeholder value'); + const newQuery = query.replace('logs-*', '[indexPattern:logs-*]'); + return { + elastic_rule: { + ...state.elastic_rule, + query: newQuery, + translation_result: SiemMigrationRuleTranslationResult.PARTIAL, + }, + }; + } + + return {}; + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/index.ts new file mode 100644 index 0000000000000..6e7762633b7fd --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +export { getFilterIndexPatternsNode } from './filter_index_patterns'; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/fix_query_errors.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/fix_query_errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/fix_query_errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/fix_query_errors.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/prompts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/prompts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/prompts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/fix_query_errors/prompts.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/prompts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/prompts.ts new file mode 100644 index 0000000000000..d562bb31b1628 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/prompts.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ChatPromptTemplate } from '@langchain/core/prompts'; +export const MATCH_INTEGRATION_PROMPT = ChatPromptTemplate.fromMessages([ + [ + 'system', + `You are an expert assistant in Cybersecurity, your task is to help migrating a SIEM detection rule, from Splunk Security to Elastic Security. +You will be provided with a Splunk Detection Rule name by the user, your goal is to try to find the most relevant Elastic Integration from the integration list below if any, and return either the most relevant. If none seems relevant you should always return empty. +Here are some context for you to reference for your task, read it carefully as you will get questions about it later: + + + +{integrations} + + +`, + ], + [ + 'human', + `See the below description of the relevant splunk rule and try to match it with any of the Elastic Integrations from before, do not guess or reply with anything else, only reply with the most relevant Elastic Integration if any. + +{splunk_rule} + + + +- Always reply with a JSON object with the key "match" and the value being the most relevant matched integration title. Do not reply with anything else. +- Only reply with exact matches, if you are unsure or do not find a very confident match, always reply with an empty string value in the match key, do not guess or reply with anything else. +- If there is one elastic integration in the list that covers the relevant usecase, set the title of the matching integration as a value of the match key. Do not reply with anything else. +- If there are multiple elastic integrations in the list that cover the same usecase, answer with the most specific of them, for example if the rule is related to "Sysmon" then the Sysmon integration is more specific than Windows. + + + +U: +Linux Auditd Add User Account Type + +A: Please find the match JSON object below: +\`\`\`json +{{"match": "auditd_manager"}} +\`\`\` + +`, + ], + ['ai', 'Please find the match JSON object below:'], +]); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts new file mode 100644 index 0000000000000..74c9055bd7665 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { JsonOutputParser } from '@langchain/core/output_parsers'; +import type { RuleMigrationsRetriever } from '../../../../../retrievers'; +import type { ChatModel } from '../../../../../util/actions_client_chat'; +import type { GraphNode } from '../../types'; +import { MATCH_INTEGRATION_PROMPT } from './prompts'; + +interface GetRetrieveIntegrationsNodeParams { + model: ChatModel; + ruleMigrationsRetriever: RuleMigrationsRetriever; +} + +interface GetMatchedIntegrationResponse { + match: string; +} + +export const getRetrieveIntegrationsNode = ({ + model, + ruleMigrationsRetriever, +}: GetRetrieveIntegrationsNodeParams): GraphNode => { + return async (state) => { + const query = state.semantic_query; + + const integrations = await ruleMigrationsRetriever.integrations.getIntegrations(query); + + const outputParser = new JsonOutputParser(); + const mostRelevantIntegration = MATCH_INTEGRATION_PROMPT.pipe(model).pipe(outputParser); + + const elasticSecurityIntegrations = integrations.map((integration) => { + return { + title: integration.title, + description: integration.description, + }; + }); + const splunkRule = { + title: state.original_rule.title, + description: state.original_rule.description, + }; + + /* + * Takes the most relevant integration from the array of integration(s) returned by the semantic query, returns either the most relevant or none. + */ + const response = (await mostRelevantIntegration.invoke({ + integrations: JSON.stringify(elasticSecurityIntegrations, null, 2), + splunk_rule: JSON.stringify(splunkRule, null, 2), + })) as GetMatchedIntegrationResponse; + if (response.match) { + const matchedIntegration = integrations.find((r) => r.title === response.match); + if (matchedIntegration) { + return { integration: matchedIntegration }; + } + } + return {}; + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/cim_ecs_map.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/cim_ecs_map.ts new file mode 100644 index 0000000000000..3bafaf2fc6518 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/cim_ecs_map.ts @@ -0,0 +1,181 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const SIEM_RULE_MIGRATION_CIM_ECS_MAP = ` +datamodel,object,source_field,ecs_field,data_type +Application_State,All_Application_State,dest,service.node.name,string +Application_State,All_Application_State,process,process.title,string +Application_State,All_Application_State,user,user.name,string +Application_State,Ports,dest_port,destination.port,number +Application_State,Ports,transport,network.transport,string +Application_State,Ports,transport_dest_port,destination.port,string +Application_State,Services,service,service.name,string +Application_State,Services,service_id,service.id,string +Application_State,Services,status,service.state,string +Authentication,Authentication,action,event.action,string +Authentication,Authentication,app,process.name,string +Authentication,Authentication,dest,host.name,string +Authentication,Authentication,duration,event.duration,number +Authentication,Authentication,signature,event.code,string +Authentication,Authentication,signature_id,event.reason,string +Authentication,Authentication,src,source.address,string +Authentication,Authentication,src_nt_domain,source.domain,string +Authentication,Authentication,user,user.name,string +Certificates,All_Certificates,dest_port,destination.port,number +Certificates,All_Certificates,duration,event.duration,number +Certificates,All_Certificates,src,source.address,string +Certificates,All_Certificates,src_port,source.port,number +Certificates,All_Certificates,transport,network.protocol,string +Certificates,SSL,ssl_end_time,tls.server.not_after,time +Certificates,SSL,ssl_hash,tls.server.hash,string +Certificates,SSL,ssl_issuer_common_name,tls.server.issuer,string +Certificates,SSL,ssl_issuer_locality,x509.issuer.locality,string +Certificates,SSL,ssl_issuer_organization,x509.issuer.organization,string +Certificates,SSL,ssl_issuer_state,x509.issuer.state_or_province,string +Certificates,SSL,ssl_issuer_unit,x509.issuer.organizational_unit,string +Certificates,SSL,ssl_publickey_algorithm,x509.public_key_algorithm,string +Certificates,SSL,ssl_serial,x509.serial_number,string +Certificates,SSL,ssl_signature_algorithm,x509.signature_algorithm,string +Certificates,SSL,ssl_start_time,x509.not_before,time +Certificates,SSL,ssl_subject,x509.subject.distinguished_name,string +Certificates,SSL,ssl_subject_common_name,x509.subject.common_name,string +Certificates,SSL,ssl_subject_locality,x509.subject.locality,string +Certificates,SSL,ssl_subject_organization,x509.subject.organization,string +Certificates,SSL,ssl_subject_state,x509.subject.state_or_province,string +Certificates,SSL,ssl_subject_unit,x509.subject.organizational_unit,string +Certificates,SSL,ssl_version,tls.version,string +Change,All_Changes,action,event.action,string +Change,Account_Management,dest_nt_domain,destination.domain,string +Change,Account_Management,src_nt_domain,source.domain,string +Change,Account_Management,src_user,source.user,string +Intrusion_Detection,IDS_Attacks,action,event.action,string +Intrusion_Detection,IDS_Attacks,dest,destination.address,string +Intrusion_Detection,IDS_Attacks,dest_port,destination.port,number +Intrusion_Detection,IDS_Attacks,dvc,observer.hostname,string +Intrusion_Detection,IDS_Attacks,severity,event.severity,string +Intrusion_Detection,IDS_Attacks,src,source.ip,string +Intrusion_Detection,IDS_Attacks,user,source.user,string +JVM,OS,os,host.os.name,string +JVM,OS,os_architecture,host.architecture,string +JVM,OS,os_version,host.os.version,string +Malware,Malware_Attacks,action,event.action,string +Malware,Malware_Attacks,date,event.created,string +Malware,Malware_Attacks,dest,host.hostname,string +Malware,Malware_Attacks,file_hash,file.hash.*,string +Malware,Malware_Attacks,file_name,file.name,string +Malware,Malware_Attacks,file_path,file.path,string +Malware,Malware_Attacks,Sender,source.user.email,string +Malware,Malware_Attacks,src,source.ip,string +Malware,Malware_Attacks,user,related.user,string +Malware,Malware_Attacks,url,rule.reference,string +Network_Resolution,DNS,answer,dns.answers,string +Network_Resolution,DNS,dest,destination.address,string +Network_Resolution,DNS,dest_port,destination.port,number +Network_Resolution,DNS,duration,event.duration,number +Network_Resolution,DNS,message_type,dns.type,string +Network_Resolution,DNS,name,dns.question.name,string +Network_Resolution,DNS,query,dns.question.name,string +Network_Resolution,DNS,query_type,dns.op_code,string +Network_Resolution,DNS,record_type,dns.question.type,string +Network_Resolution,DNS,reply_code,dns.response_code,string +Network_Resolution,DNS,reply_code_id,dns.id,number +Network_Resolution,DNS,response_time,event.duration,number +Network_Resolution,DNS,src,source.address,string +Network_Resolution,DNS,src_port,source.port,number +Network_Resolution,DNS,transaction_id,dns.id,number +Network_Resolution,DNS,transport,network.transport,string +Network_Resolution,DNS,ttl,dns.answers.ttl,number +Network_Sessions,All_Sessions,action,event.action,string +Network_Sessions,All_Sessions,dest_ip,destination.ip,string +Network_Sessions,All_Sessions,dest_mac,destination.mac,string +Network_Sessions,All_Sessions,duration,event.duration,number +Network_Sessions,All_Sessions,src_dns,source.registered_domain,string +Network_Sessions,All_Sessions,src_ip,source.ip,string +Network_Sessions,All_Sessions,src_mac,source.mac,string +Network_Sessions,All_Sessions,user,user.name,string +Network_Traffic,All_Traffic,action,event.action,string +Network_Traffic,All_Traffic,app,network.protocol,string +Network_Traffic,All_Traffic,bytes,network.bytes,number +Network_Traffic,All_Traffic,dest,destination.ip,string +Network_Traffic,All_Traffic,dest_ip,destination.ip,string +Network_Traffic,All_Traffic,dest_mac,destination.mac,string +Network_Traffic,All_Traffic,dest_port,destination.port,number +Network_Traffic,All_Traffic,dest_translated_ip,destination.nat.ip,string +Network_Traffic,All_Traffic,dest_translated_port,destination.nat.port,number +Network_Traffic,All_Traffic,direction,network.direction,string +Network_Traffic,All_Traffic,duration,event.duration,number +Network_Traffic,All_Traffic,dvc,observer.name,string +Network_Traffic,All_Traffic,dvc_ip,observer.ip,string +Network_Traffic,All_Traffic,dvc_mac,observer.mac,string +Network_Traffic,All_Traffic,dvc_zone,observer.egress.zone,string +Network_Traffic,All_Traffic,packets,network.packets,number +Network_Traffic,All_Traffic,packets_in,source.packets,number +Network_Traffic,All_Traffic,packets_out,destination.packets,number +Network_Traffic,All_Traffic,protocol,network.protocol,string +Network_Traffic,All_Traffic,rule,rule.name,string +Network_Traffic,All_Traffic,src,source.address,string +Network_Traffic,All_Traffic,src_ip,source.ip,string +Network_Traffic,All_Traffic,src_mac,source.mac,string +Network_Traffic,All_Traffic,src_port,source.port,number +Network_Traffic,All_Traffic,src_translated_ip,source.nat.ip,string +Network_Traffic,All_Traffic,src_translated_port,source.nat.port,number +Network_Traffic,All_Traffic,transport,network.transport,string +Network_Traffic,All_Traffic,vlan,vlan.name,string +Vulnerabilities,Vulnerabilities,category,vulnerability.category,string +Vulnerabilities,Vulnerabilities,cve,vulnerability.id,string +Vulnerabilities,Vulnerabilities,cvss,vulnerability.score.base,number +Vulnerabilities,Vulnerabilities,dest,host.name,string +Vulnerabilities,Vulnerabilities,dvc,vulnerability.scanner.vendor,string +Vulnerabilities,Vulnerabilities,severity,vulnerability.severity,string +Vulnerabilities,Vulnerabilities,url,vulnerability.reference,string +Vulnerabilities,Vulnerabilities,user,related.user,string +Vulnerabilities,Vulnerabilities,vendor_product,vulnerability.scanner.vendor,string +Endpoint,Ports,creation_time,@timestamp,timestamp +Endpoint,Ports,dest_port,destination.port,number +Endpoint,Ports,process_id,process.pid,string +Endpoint,Ports,transport,network.transport,string +Endpoint,Ports,transport_dest_port,destination.port,string +Endpoint,Processes,action,event.action,string +Endpoint,Processes,os,os.full,string +Endpoint,Processes,parent_process_exec,process.parent.name,string +Endpoint,Processes,parent_process_id,process.ppid,number +Endpoint,Processes,parent_process_guid,process.parent.entity_id,string +Endpoint,Processes,parent_process_path,process.parent.executable,string +Endpoint,Processes,process_current_directory,process.parent.working_directory, +Endpoint,Processes,process_exec,process.name,string +Endpoint,Processes,process_hash,process.hash.*,string +Endpoint,Processes,process_guid,process.entity_id,string +Endpoint,Processes,process_id,process.pid,number +Endpoint,Processes,process_path,process.executable,string +Endpoint,Processes,user_id,related.user,string +Endpoint,Services,description,service.name,string +Endpoint,Services,process_id,service.id,string +Endpoint,Services,service_dll,dll.name,string +Endpoint,Services,service_dll_path,dll.path,string +Endpoint,Services,service_dll_hash,dll.hash.*,string +Endpoint,Services,service_dll_signature_exists,dll.code_signature.exists,boolean +Endpoint,Services,service_dll_signature_verified,dll.code_signature.valid,boolean +Endpoint,Services,service_exec,service.name,string +Endpoint,Services,service_hash,hash.*,string +Endpoint,Filesystem,file_access_time,file.accessed,timestamp +Endpoint,Filesystem,file_create_time,file.created,timestamp +Endpoint,Filesystem,file_modify_time,file.mtime,timestamp +Endpoint,Filesystem,process_id,process.pid,string +Endpoint,Registry,process_id,process.id,string +Web,Web,action,event.action,string +Web,Web,app,observer.product,string +Web,Web,bytes_in,http.request.bytes,number +Web,Web,bytes_out,http.response.bytes,number +Web,Web,dest,destination.ip,string +Web,Web,duration,event.duration,number +Web,Web,http_method,http.request.method,string +Web,Web,http_referrer,http.request.referrer,string +Web,Web,http_user_agent,user_agent.name,string +Web,Web,status,http.response.status_code,string +Web,Web,url,url.full,string +Web,Web,user,url.username,string +Web,Web,vendor_product,observer.product,string`; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts new file mode 100644 index 0000000000000..626251c3c8259 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ChatPromptTemplate } from '@langchain/core/prompts'; + +export const ESQL_SYNTAX_TRANSLATION_PROMPT = + ChatPromptTemplate.fromTemplate(`You are a helpful cybersecurity (SIEM) expert agent. Your task is to migrate "detection rules" from Splunk SPL to Elasticsearch ES|QL. +Your goal is to translate the SPL query syntax into an equivalent Elastic Search Query Language (ES|QL) query without changing any of the field names except lookup lists and macros when relevant and focusing only on translating the syntax and structure. + +Here are some context for you to reference for your task, read it carefully as you will get questions about it later: + + +{splunk_rule} + + +If, in the SPL query, you find a macro call, mention it in the summary and add a placeholder in the query with the format [macro:(argumentCount)] including the [] keys, + Examples: + - \`get_duration(firstDate,secondDate)\` -> [macro:get_duration(2)] + + +If in an SPL query you identify a looku list call, it should be translated the following way: +\`\`\`spl +... | lookup users uid OUTPUTNEW username, department +\`\`\` + +In the above example it uses the following syntax: +lookup 'index_name' 'field_to_match' OUTPUTNEW 'field1', 'field2' + +However in the ES|QL query, some of the information is removed and should be used in the following way: +\`\`\`esql +... | LOOKUP JOIN 'index_name' ON 'field_to_match' +\`\`\` +We do not define OUTPUTNEW or which fields is returned, only the index name and the field to match. + + + +Go through each step and part of the splunk rule and query while following the below guide to produce the resulting ES|QL query: +- Analyze all the information about the related splunk rule and try to determine the intent of the rule, in order to translate into an equivalent ES|QL rule. +- Go through each part of the SPL query and determine the steps required to produce the same end results using ES|QL. Only focus on translating the structure without modifying any of the field names. +- Do NOT map any of the fields to the Elastic Common Schema (ECS), this will happen in a later step. +- Always remember to translate any lookup list using the lookup_syntax above +- Always remember to replace macro call with the appropriate placeholder as defined in the macro info. + + + +- Analyze the SPL query and identify the key components. +- Do NOT translate the field names of the SPL query. +- Always start the resulting ES|QL query by filtering using FROM and with these index patterns: {indexPatterns}. +- Always remember to translate any lookup list using the lookup_syntax above +- Always remember to replace macro call with the appropriate placeholder as defined in the macro info. + + + +- First, the ES|QL query inside an \`\`\`esql code block. +- At the end, the summary of the translation process followed in markdown, starting with "## Translation Summary". + +`); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts new file mode 100644 index 0000000000000..d613da223038c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger } from '@kbn/core/server'; +import type { InferenceClient } from '@kbn/inference-plugin/server'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../../../../../common/siem_migrations/constants'; +import { getEsqlKnowledgeBase } from '../../../../../util/esql_knowledge_base_caller'; +import type { GraphNode } from '../../types'; +import { ESQL_SYNTAX_TRANSLATION_PROMPT } from './prompts'; + +interface GetTranslateRuleNodeParams { + inferenceClient: InferenceClient; + connectorId: string; + logger: Logger; +} + +export const getTranslateRuleNode = ({ + inferenceClient, + connectorId, + logger, +}: GetTranslateRuleNodeParams): GraphNode => { + const esqlKnowledgeBaseCaller = getEsqlKnowledgeBase({ inferenceClient, connectorId, logger }); + return async (state) => { + const indexPatterns = + state.integration?.data_streams?.map((dataStream) => dataStream.index_pattern).join(',') || + 'logs-*'; + const integrationId = state.integration?.id || ''; + + const splunkRule = { + title: state.original_rule.title, + description: state.original_rule.description, + inline_query: state.inline_query, + }; + + const prompt = await ESQL_SYNTAX_TRANSLATION_PROMPT.format({ + splunk_rule: JSON.stringify(splunkRule, null, 2), + indexPatterns, + }); + const response = await esqlKnowledgeBaseCaller(prompt); + + const esqlQuery = response.match(/```esql\n([\s\S]*?)\n```/)?.[1] ?? ''; + const translationSummary = response.match(/## Translation Summary[\s\S]*$/)?.[0] ?? ''; + + const translationResult = getTranslationResult(esqlQuery); + + return { + response, + comments: [translationSummary], + translation_result: translationResult, + elastic_rule: { + title: state.original_rule.title, + integration_id: integrationId, + description: state.original_rule.description, + severity: 'low', + query: esqlQuery, + query_language: 'esql', + }, + }; + }; +}; + +const getTranslationResult = (esqlQuery: string): SiemMigrationRuleTranslationResult => { + if (esqlQuery.match(/\[(macro):[\s\S]*\]/)) { + return SiemMigrationRuleTranslationResult.PARTIAL; + } + return SiemMigrationRuleTranslationResult.FULL; +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/validation/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/validation/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/validation/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/validation/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/validation/validation.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/validation/validation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/validation/validation.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/validation/validation.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts new file mode 100644 index 0000000000000..ea46238002178 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { BaseMessage } from '@langchain/core/messages'; +import { Annotation, messagesStateReducer } from '@langchain/langgraph'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../../../common/siem_migrations/constants'; +import type { + ElasticRule, + OriginalRule, + RuleMigration, +} from '../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import type { Integration } from '../../../../types'; +import type { TranslateRuleValidationErrors } from './types'; + +export const translateRuleState = Annotation.Root({ + messages: Annotation({ + reducer: messagesStateReducer, + default: () => [], + }), + original_rule: Annotation(), + integration: Annotation({ + reducer: (current, value) => value ?? current, + default: () => ({} as Integration), + }), + translation_finalized: Annotation({ + reducer: (current, value) => value ?? current, + default: () => false, + }), + inline_query: Annotation({ + reducer: (current, value) => value ?? current, + default: () => '', + }), + semantic_query: Annotation({ + reducer: (current, value) => value ?? current, + default: () => '', + }), + elastic_rule: Annotation({ + reducer: (state, action) => ({ ...state, ...action }), + default: () => ({} as ElasticRule), + }), + validation_errors: Annotation({ + reducer: (current, value) => value ?? current, + default: () => ({ iterations: 0 } as TranslateRuleValidationErrors), + }), + translation_result: Annotation({ + reducer: (current, value) => value ?? current, + default: () => SiemMigrationRuleTranslationResult.UNTRANSLATABLE, + }), + comments: Annotation({ + reducer: (current, value) => (value ? (current ?? []).concat(value) : current), + default: () => [], + }), + response: Annotation({ + reducer: (current, value) => value ?? current, + default: () => '', + }), +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts new file mode 100644 index 0000000000000..0a3435d496736 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger } from '@kbn/core/server'; +import type { InferenceClient } from '@kbn/inference-plugin/server'; +import type { RuleMigrationsRetriever } from '../../../retrievers'; +import type { ChatModel } from '../../../util/actions_client_chat'; +import type { translateRuleState } from './state'; + +export type TranslateRuleState = typeof translateRuleState.State; +export type GraphNode = (state: TranslateRuleState) => Promise>; + +export interface TranslateRuleGraphParams { + model: ChatModel; + inferenceClient: InferenceClient; + connectorId: string; + ruleMigrationsRetriever: RuleMigrationsRetriever; + logger: Logger; +} + +export interface TranslateRuleValidationErrors { + iterations: number; + esql_errors?: string; +} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/integration_retriever.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/integration_retriever.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/integration_retriever.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/integration_retriever.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/integration_retriever.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/integration_retriever.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/integration_retriever.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/integration_retriever.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/prebuilt_rules_retriever.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/prebuilt_rules_retriever.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/prebuilt_rules_retriever.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/prebuilt_rules_retriever.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts new file mode 100644 index 0000000000000..29852558cda48 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { SavedObjectsClientContract } from '@kbn/core/server'; +import type { RuleMigrationsDataClient } from '../../data/rule_migrations_data_client'; +import { IntegrationRetriever } from './integration_retriever'; +import { PrebuiltRulesRetriever } from './prebuilt_rules_retriever'; +import { RuleResourceRetriever } from './rule_resource_retriever'; + +interface RuleMigrationsRetrieverDeps { + data: RuleMigrationsDataClient; + rules: RulesClient; + savedObjects: SavedObjectsClientContract; +} + +export class RuleMigrationsRetriever { + public readonly resources: RuleResourceRetriever; + public readonly integrations: IntegrationRetriever; + public readonly prebuiltRules: PrebuiltRulesRetriever; + + constructor(migrationId: string, private readonly clients: RuleMigrationsRetrieverDeps) { + this.resources = new RuleResourceRetriever(migrationId, this.clients.data); + this.integrations = new IntegrationRetriever(this.clients.data); + this.prebuiltRules = new PrebuiltRulesRetriever(this.clients.data); + } + + public async initialize() { + await Promise.all([ + this.resources.initialize(), + // Populates the indices used for RAG searches on prebuilt rules and integrations. + this.clients.data.prebuiltRules.create({ + rulesClient: this.clients.rules, + soClient: this.clients.savedObjects, + }), + // Will use Fleet API client for integration retrieval as an argument once feature is available + this.clients.data.integrations.create(), + ]).catch((error) => { + throw new Error(`Failed to initialize RuleMigrationsRetriever: ${error}`); + }); + } +} diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts new file mode 100644 index 0000000000000..1e02eec2315e7 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts @@ -0,0 +1,128 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RuleResourceRetriever } from './rule_resource_retriever'; // Adjust path as needed +import type { OriginalRule } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { ResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources'; +import type { RuleMigrationsDataClient } from '../../data/rule_migrations_data_client'; + +jest.mock('../../data/rule_migrations_data_service'); +jest.mock('../../../../../../common/siem_migrations/rules/resources'); + +const MockResourceIdentifier = ResourceIdentifier as jest.Mock; + +describe('RuleResourceRetriever', () => { + let retriever: RuleResourceRetriever; + let mockDataClient: jest.Mocked; + let mockResourceIdentifier: jest.Mocked; + + beforeEach(() => { + mockDataClient = { + resources: { searchBatches: jest.fn().mockReturnValue({ next: jest.fn(() => []) }) }, + } as unknown as RuleMigrationsDataClient; + + retriever = new RuleResourceRetriever('mockMigrationId', mockDataClient); + + MockResourceIdentifier.mockImplementation(() => ({ + fromOriginalRule: jest.fn().mockReturnValue([]), + fromResources: jest.fn().mockReturnValue([]), + })); + mockResourceIdentifier = new MockResourceIdentifier( + 'splunk' + ) as jest.Mocked; + }); + + it('throws an error if initialize is not called before getResources', async () => { + const originalRule = { vendor: 'splunk' } as unknown as OriginalRule; + + await expect(retriever.getResources(originalRule)).rejects.toThrow( + 'initialize must be called before calling getResources' + ); + }); + + it('returns an empty object if no matching resources are found', async () => { + const originalRule = { vendor: 'splunk' } as unknown as OriginalRule; + + // Mock the resource identifier to return no resources + mockResourceIdentifier.fromOriginalRule.mockReturnValue([]); + await retriever.initialize(); // Pretend initialize has been called + + const result = await retriever.getResources(originalRule); + expect(result).toEqual({}); + }); + + it('returns matching macro and list resources', async () => { + const mockExistingResources = { + macro: { macro1: { name: 'macro1', type: 'macro' } }, + list: { list1: { name: 'list1', type: 'list' } }, + }; + // Inject existing resources manually + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (retriever as any).existingResources = mockExistingResources; + + const mockResourcesIdentified = [ + { name: 'macro1', type: 'macro' as const }, + { name: 'list1', type: 'list' as const }, + ]; + MockResourceIdentifier.mockImplementation(() => ({ + fromOriginalRule: jest.fn().mockReturnValue(mockResourcesIdentified), + fromResources: jest.fn().mockReturnValue([]), + })); + + const originalRule = { vendor: 'splunk' } as unknown as OriginalRule; + + const result = await retriever.getResources(originalRule); + expect(result).toEqual({ + macro: [{ name: 'macro1', type: 'macro' }], + list: [{ name: 'list1', type: 'list' }], + }); + }); + + it('handles nested resources properly', async () => { + const originalRule = { vendor: 'splunk' } as unknown as OriginalRule; + + const mockExistingResources = { + macro: { + macro1: { name: 'macro1', type: 'macro' }, + macro2: { name: 'macro2', type: 'macro' }, + }, + list: { + list1: { name: 'list1', type: 'list' }, + list2: { name: 'list2', type: 'list' }, + }, + }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (retriever as any).existingResources = mockExistingResources; + + const mockResourcesIdentifiedFromRule = [ + { name: 'macro1', type: 'macro' as const }, + { name: 'list1', type: 'list' as const }, + ]; + + const mockNestedResources = [ + { name: 'macro2', type: 'macro' as const }, + { name: 'list2', type: 'list' as const }, + ]; + + MockResourceIdentifier.mockImplementation(() => ({ + fromOriginalRule: jest.fn().mockReturnValue(mockResourcesIdentifiedFromRule), + fromResources: jest.fn().mockReturnValue([]).mockReturnValueOnce(mockNestedResources), + })); + + const result = await retriever.getResources(originalRule); + expect(result).toEqual({ + macro: [ + { name: 'macro1', type: 'macro' }, + { name: 'macro2', type: 'macro' }, + ], + list: [ + { name: 'list1', type: 'list' }, + { name: 'list2', type: 'list' }, + ], + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts new file mode 100644 index 0000000000000..b89939e199e5a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources'; +import type { + OriginalRule, + RuleMigrationResource, + RuleMigrationResourceType, +} from '../../../../../../common/siem_migrations/model/rule_migration.gen'; +import type { RuleMigrationsDataClient } from '../../data/rule_migrations_data_client'; + +export interface RuleMigrationDefinedResource extends RuleMigrationResource { + content: string; // ensures content exists +} +export type RuleMigrationResources = Partial< + Record +>; +interface ExistingResources { + macro: Record; + list: Record; +} + +export class RuleResourceRetriever { + private existingResources?: ExistingResources; + + constructor( + private readonly migrationId: string, + private readonly dataClient: RuleMigrationsDataClient + ) {} + + public async initialize(): Promise { + const batches = this.dataClient.resources.searchBatches( + this.migrationId, + { filters: { hasContent: true } } + ); + + const existingRuleResources: ExistingResources = { macro: {}, list: {} }; + let resources; + do { + resources = await batches.next(); + resources.forEach((resource) => { + existingRuleResources[resource.type][resource.name] = resource; + }); + } while (resources.length > 0); + + this.existingResources = existingRuleResources; + } + + public async getResources(originalRule: OriginalRule): Promise { + const existingResources = this.existingResources; + if (!existingResources) { + throw new Error('initialize must be called before calling getResources'); + } + + const resourceIdentifier = new ResourceIdentifier(originalRule.vendor); + const resourcesIdentifiedFromRule = resourceIdentifier.fromOriginalRule(originalRule); + + const macrosFound = new Map(); + const listsFound = new Map(); + resourcesIdentifiedFromRule.forEach((resource) => { + const existingResource = existingResources[resource.type][resource.name]; + if (existingResource) { + if (resource.type === 'macro') { + macrosFound.set(resource.name, existingResource); + } else if (resource.type === 'list') { + listsFound.set(resource.name, existingResource); + } + } + }); + + const resourcesFound = [...macrosFound.values(), ...listsFound.values()]; + if (!resourcesFound.length) { + return {}; + } + + let nestedResourcesFound = resourcesFound; + do { + const nestedResourcesIdentified = resourceIdentifier.fromResources(nestedResourcesFound); + + nestedResourcesFound = []; + nestedResourcesIdentified.forEach((resource) => { + const existingResource = existingResources[resource.type][resource.name]; + if (existingResource) { + nestedResourcesFound.push(existingResource); + if (resource.type === 'macro') { + macrosFound.set(resource.name, existingResource); + } else if (resource.type === 'list') { + listsFound.set(resource.name, existingResource); + } + } + }); + } while (nestedResourcesFound.length > 0); + + return { + ...(macrosFound.size > 0 ? { macro: Array.from(macrosFound.values()) } : {}), + ...(listsFound.size > 0 ? { list: Array.from(listsFound.values()) } : {}), + }; + } +} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts similarity index 80% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts index 6dbee5c64ee47..1edd1b449070c 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts @@ -20,15 +20,14 @@ import type { MigrateRuleState } from './agent/types'; import { RuleMigrationsRetriever } from './retrievers'; import type { MigrationAgent, - RuleMigrationTaskPrepareParams, - RuleMigrationTaskRunParams, RuleMigrationTaskStartParams, + RuleMigrationTaskCreateAgentParams, RuleMigrationTaskStartResult, RuleMigrationTaskStopResult, } from './types'; import { ActionsClientChat } from './util/actions_client_chat'; -const ITERATION_BATCH_SIZE = 50 as const; +const ITERATION_BATCH_SIZE = 15 as const; const ITERATION_SLEEP_SECONDS = 10 as const; type MigrationsRunning = Map; @@ -63,82 +62,40 @@ export class RuleMigrationsTaskClient { return { exists: true, started: false }; } - const abortController = new AbortController(); - - // Retrieve agent from prepare and pass it to run right after without awaiting but using .then - this.prepare({ ...params, abortController }) - .then((agent) => this.run({ ...params, agent, abortController })) - .catch((error) => { - this.logger.error(`Error starting migration ID:${migrationId} with error:${error}`, error); - }); - - return { exists: true, started: true }; - } - - private async prepare({ - migrationId, - connectorId, - inferenceClient, - actionsClient, - rulesClient, - soClient, - abortController, - }: RuleMigrationTaskPrepareParams): Promise { - await Promise.all([ - // Populates the indices used for RAG searches on prebuilt rules and integrations. - await this.data.prebuiltRules.create({ rulesClient, soClient }), - // Will use Fleet API client for integration retrieval as an argument once feature is available - await this.data.integrations.create(), - ]).catch((error) => { - this.logger.error(`Error preparing RAG indices for migration ID:${migrationId}`, error); - throw error; + // run the migration without awaiting it to execute it in the background + this.run(params).catch((error) => { + this.logger.error(`Error executing migration ID:${migrationId}`, error); }); - const ruleMigrationsRetriever = new RuleMigrationsRetriever(this.data, migrationId); - - const actionsClientChat = new ActionsClientChat(connectorId, actionsClient, this.logger); - const model = await actionsClientChat.createModel({ - signal: abortController.signal, - temperature: 0.05, - }); - - const agent = getRuleMigrationAgent({ - connectorId, - model, - inferenceClient, - ruleMigrationsRetriever, - logger: this.logger, - }); - return agent; + return { exists: true, started: true }; } - private async run({ - migrationId, - agent, - invocationConfig, - abortController, - }: RuleMigrationTaskRunParams): Promise { + private async run(params: RuleMigrationTaskStartParams): Promise { + const { migrationId, invocationConfig } = params; if (this.migrationsRunning.has(migrationId)) { // This should never happen, but just in case throw new Error(`Task already running for migration ID:${migrationId} `); } this.logger.info(`Starting migration ID:${migrationId}`); + const abortController = new AbortController(); this.migrationsRunning.set(migrationId, { user: this.currentUser.username, abortController }); - const config: RunnableConfig = { - ...invocationConfig, - // signal: abortController.signal, // not working properly https://github.com/langchain-ai/langgraphjs/issues/319 - }; const abortPromise = abortSignalToPromise(abortController.signal); + const withAbortRace = async (task: Promise) => Promise.race([task, abortPromise.promise]); + + const sleep = async (seconds: number) => { + this.logger.debug(`Sleeping ${seconds}s for migration ID:${migrationId}`); + await withAbortRace(new Promise((resolve) => setTimeout(resolve, seconds * 1000))); + }; try { - const sleep = async (seconds: number) => { - this.logger.debug(`Sleeping ${seconds}s for migration ID:${migrationId}`); - await Promise.race([ - new Promise((resolve) => setTimeout(resolve, seconds * 1000)), - abortPromise.promise, - ]); + this.logger.debug(`Creating agent for migration ID:${migrationId}`); + const agent = await withAbortRace(this.createAgent({ ...params, abortController })); + + const config: RunnableConfig = { + ...invocationConfig, + // signal: abortController.signal, // not working properly https://github.com/langchain-ai/langgraphjs/issues/319 }; let isDone: boolean = false; @@ -154,10 +111,12 @@ export class RuleMigrationsTaskClient { try { const start = Date.now(); - const migrationResult: MigrateRuleState = await Promise.race([ - agent.invoke({ original_rule: ruleMigration.original_rule }, config), - abortPromise.promise, // workaround for the issue with the langGraph signal - ]); + const invocation = agent.invoke( + { original_rule: ruleMigration.original_rule }, + config + ); + // using withAbortRace is a workaround for the issue with the langGraph signal not working properly + const migrationResult = await withAbortRace(invocation); const duration = (Date.now() - start) / 1000; this.logger.debug( @@ -211,6 +170,38 @@ export class RuleMigrationsTaskClient { } } + private async createAgent({ + migrationId, + connectorId, + inferenceClient, + actionsClient, + rulesClient, + soClient, + abortController, + }: RuleMigrationTaskCreateAgentParams): Promise { + const actionsClientChat = new ActionsClientChat(connectorId, actionsClient, this.logger); + const model = await actionsClientChat.createModel({ + signal: abortController.signal, + temperature: 0.05, + }); + + const ruleMigrationsRetriever = new RuleMigrationsRetriever(migrationId, { + data: this.data, + rules: rulesClient, + savedObjects: soClient, + }); + await ruleMigrationsRetriever.initialize(); + + const agent = getRuleMigrationAgent({ + connectorId, + model, + inferenceClient, + ruleMigrationsRetriever, + logger: this.logger, + }); + return agent; + } + /** Updates all the rules in a migration to be re-executed */ public async updateToRetry(migrationId: string): Promise<{ updated: boolean }> { if (this.migrationsRunning.has(migrationId)) { diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_service.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts new file mode 100644 index 0000000000000..7ddb08f1e47d6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { AuthenticatedUser, SavedObjectsClientContract } from '@kbn/core/server'; +import type { RunnableConfig } from '@langchain/core/runnables'; +import type { InferenceClient } from '@kbn/inference-plugin/server'; +import type { ActionsClient } from '@kbn/actions-plugin/server'; +import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { RuleMigrationsDataClient } from '../data/rule_migrations_data_client'; +import type { getRuleMigrationAgent } from './agent'; + +export type MigrationAgent = ReturnType; + +export interface RuleMigrationTaskCreateClientParams { + currentUser: AuthenticatedUser; + dataClient: RuleMigrationsDataClient; +} + +export interface RuleMigrationTaskStartParams { + migrationId: string; + connectorId: string; + invocationConfig: RunnableConfig; + inferenceClient: InferenceClient; + actionsClient: ActionsClient; + rulesClient: RulesClient; + soClient: SavedObjectsClientContract; +} + +export interface RuleMigrationTaskCreateAgentParams extends RuleMigrationTaskStartParams { + abortController: AbortController; +} + +export interface RuleMigrationTaskStartResult { + started: boolean; + exists: boolean; +} + +export interface RuleMigrationTaskStopResult { + stopped: boolean; + exists: boolean; +} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/util/actions_client_chat.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/util/actions_client_chat.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/util/actions_client_chat.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/util/actions_client_chat.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/util/esql_knowledge_base_caller.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/util/esql_knowledge_base_caller.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/util/esql_knowledge_base_caller.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/task/util/esql_knowledge_base_caller.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/rules/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/rules/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/siem_migrations_service.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/siem_migrations_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/siem_migrations_service.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/siem_migrations_service.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/siem_migrations_service.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/siem_migrations_service.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/siem_migrations_service.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/siem_migrations_service.ts diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/siem_migrations/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/siem_migrations/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/tags/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/tags/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/tags/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/tags/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/create_tag.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/create_tag.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/create_tag.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/create_tag.ts diff --git a/x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts diff --git a/x-pack/plugins/security_solution/server/lib/tags/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/tags/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/tags/routes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/tags/saved_objects/create_tag.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/tags/saved_objects/create_tag.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/tags/saved_objects/create_tag.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/tags/saved_objects/create_tag.ts diff --git a/x-pack/plugins/security_solution/server/lib/tags/saved_objects/find_tags_by_name.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/tags/saved_objects/find_tags_by_name.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/tags/saved_objects/find_tags_by_name.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/tags/saved_objects/find_tags_by_name.ts diff --git a/x-pack/plugins/security_solution/server/lib/tags/saved_objects/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/tags/saved_objects/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/tags/saved_objects/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/tags/saved_objects/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/fleet_agent_response.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/fleet_agent_response.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/fleet_agent_response.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/fleet_agent_response.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/metrics.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/metrics.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/prebuilt_rule_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/prebuilt_rule_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/prebuilt_rule_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/prebuilt_rule_alerts.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/staging_indices.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/staging_indices.ts new file mode 100644 index 0000000000000..e7fe78336ad06 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/staging_indices.ts @@ -0,0 +1,1160 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const stagingIndices = [ + 'apm-7.14.2-profile-000011', + 'apm-7.14.2-profile-000012', + 'apm-7.14.2-profile-000013', + '.ds-logs-elastic_agent.filebeat-default-2023.07.22-000002', + 'apm-7.16.2-error-000010', + 'apm-7.16.2-error-000011', + '.ds-security_lists_telemetry_elastic-2024.04.15-000052', + 'security_solution_signals_test', + '.ds-v2_enrichment_data_cloud-2023.09.14-000012', + '.internal.alerts-transform.health.alerts-default-000001', + '.ds-security_lists_telemetry_elastic-2024.03.16-000050', + 'apm-7.16.2-span-000001', + 'apm-7.16.2-span-000002', + 'apm-7.16.2-span-000003', + 'apm-7.16.2-span-000004', + 'apm-7.16.2-span-000005', + 'apm-7.16.2-span-000006', + 'apm-7.16.2-span-000007', + 'apm-7.16.2-span-000008', + 'apm-7.16.2-span-000009', + '.ds-metrics-elastic_agent.filebeat-default-2023.08.21-000003', + '.ds-detonate_results_telemetry-2022.08.18-000009', + 'apm-7.14.2-span-000001', + 'apm-7.14.2-span-000002', + 'apm-7.14.2-span-000003', + '.ds-task_metrics_elastic-2023.10.18-000010', + 'apm-7.14.2-span-000004', + 'apm-7.14.2-span-000006', + 'apm-7.14.2-span-000005', + 'apm-7.14.2-span-000008', + 'apm-7.14.2-span-000007', + 'apm-7.14.2-span-000009', + 'apm-7.16.2-span-000010', + 'apm-7.16.2-span-000011', + 'shrink-0gwu-.ds-alert_telemetry_elastic-2023.10.31-000041', + '.ds-security_lists_telemetry_elastic-2023.11.17-000042', + 'shrink-y3pl-.ds-alert_telemetry_elastic-2023.11.30-000044', + '.ds-metrics-elastic_agent.filebeat-default-2023.07.22-000002', + '.ds-detonate_results_telemetry-2022.07.19-000008', + 'apm-7.16.1-profile-000001', + 'apm-7.16.1-profile-000002', + 'apm-7.16.1-profile-000003', + 'apm-7.16.1-profile-000004', + 'apm-7.16.1-profile-000005', + 'apm-7.16.1-profile-000006', + 'apm-7.16.1-profile-000007', + 'apm-7.16.1-profile-000008', + 'apm-7.16.1-profile-000009', + 'apm-7.14.2-span-000011', + '.ds-metrics-apm.app.apm_server-default-2024.06.24-000012', + 'apm-7.14.2-span-000010', + 'apm-7.14.2-span-000013', + 'apm-7.14.2-span-000012', + 'apm-7.14.2-error-000001', + 'apm-7.14.2-error-000002', + 'apm-7.14.2-error-000003', + 'apm-7.14.2-error-000004', + 'apm-7.14.2-error-000005', + 'apm-7.14.2-error-000006', + 'apm-7.14.2-error-000007', + 'apm-7.14.2-error-000008', + 'apm-7.14.2-error-000009', + 'shrink-kbvc-.ds-kibana-snapshot-2024.04.24-000046', + '.kibana-observability-ai-assistant-conversations-000001', + 'apm-7.16.1-profile-000010', + '.kibana_7.12.0_001', + 'apm-7.16.1-profile-000011', + 'apm-7.14.2-error-000010', + 'apm-7.14.2-error-000011', + 'apm-7.14.2-error-000012', + 'apm-7.14.2-error-000013', + '.ds-yaas_alert_telemetry-2022.06.11-000009', + '.ds-cluster_telemetry_elastic-2024.06.05-000058', + '.ds-detections_alert_telemetry_elastic-2024.09.29-000079', + 'apm-7.13.2-profile-000001', + 'apm-7.13.2-profile-000002', + 'apm-7.13.2-profile-000003', + 'apm-7.13.2-profile-000004', + 'apm-7.13.2-profile-000005', + 'apm-7.13.2-profile-000006', + 'apm-7.13.2-profile-000007', + 'apm-7.13.2-profile-000008', + 'apm-7.13.2-profile-000009', + 'model_tracking_latest-1', + 'model_tracking_latest-2', + 'model_tracking_latest-3', + 'model_tracking_latest-6', + '.ds-yaas_alert_telemetry-2022.05.12-000008', + '.ds-cluster_telemetry_elastic-2024.05.06-000056', + 'model_tracking_latest-8', + 'ia-cti-triaged-alerts', + 'apm-7.13.2-profile-000010', + 'apm-7.13.2-profile-000011', + 'apm-7.13.2-profile-000012', + 'apm-7.13.2-profile-000013', + 'apm-7.13.2-profile-000014', + 'apm-7.13.2-profile-000015', + 'apm-7.13.2-profile-000016', + 'apm-7.13.2-profile-000017', + '.ds-alert_timelines_elastic-2024.04.28-000050', + 'shrink-iriq-.ds-kibana-snapshot-2024.03.25-000043', + '.ds-detection_rule_cluster_details-2022.11.05-000010', + 'apm-7.15.1-transaction-000004', + 'apm-7.10.0-transaction-000001', + 'apm-7.10.0-transaction-000002', + 'apm-7.10.0-transaction-000003', + 'apm-7.10.0-transaction-000004', + 'apm-7.10.0-transaction-000005', + 'apm-7.10.0-transaction-000006', + 'apm-7.10.0-transaction-000007', + 'apm-7.10.0-transaction-000008', + 'apm-7.10.0-transaction-000009', + '.ds-metrics-fleet_server.agent_status-default-2024.07.20-000002', + '.ds-yaas_alert_telemetry-2022.09.09-000012', + '.ds-alert_timelines_elastic-2024.03.29-000047', + 'apm-7.15.1-transaction-000009', + 'apm-7.15.1-transaction-000008', + 'apm-7.15.1-transaction-000007', + 'apm-7.15.1-transaction-000006', + 'apm-7.15.1-transaction-000005', + 'apm-7.15.1-transaction-000003', + 'apm-7.15.1-transaction-000002', + 'model_tracking_latest-a', + 'apm-7.15.1-transaction-000001', + 'model_tracking_latest-d', + 'model_tracking_latest-e', + 'test_metadata', + '.ds-endpoint_metadata_telemetry_elastic-2024.02.18-000055', + 'apm-7.15.1-transaction-000011', + 'apm-7.15.1-transaction-000012', + 'apm-7.15.1-transaction-000013', + 'apm-7.10.0-transaction-000010', + 'apm-7.10.0-transaction-000011', + 'apm-7.10.0-transaction-000012', + 'apm-7.10.0-transaction-000013', + 'apm-7.10.0-transaction-000014', + 'apm-7.10.0-transaction-000015', + 'apm-7.10.0-transaction-000016', + 'apm-7.10.0-transaction-000017', + 'apm-7.10.0-transaction-000018', + 'apm-7.10.0-transaction-000019', + 'apm-7.15.1-transaction-000010', + '.ds-endpoint_metadata_telemetry_elastic-2024.01.19-000053', + 'apm-7.10.0-transaction-000020', + 'apm-7.10.0-transaction-000021', + 'apm-7.10.0-transaction-000022', + 'apm-7.10.0-transaction-000023', + 'apm-7.10.0-transaction-000024', + '.ds-alert_telemetry_elastic-2024.05.28-000069', + '.ds-alert_telemetry_elastic-2024.06.27-000072', + 'apm-7.16.1-error-000001', + 'apm-7.16.1-error-000002', + 'apm-7.16.1-error-000003', + 'apm-7.16.1-error-000004', + 'apm-7.16.1-error-000005', + 'apm-7.16.1-error-000006', + 'apm-7.16.1-error-000007', + 'apm-7.16.1-error-000008', + 'apm-7.16.1-error-000009', + '.ds-endpoint_metadata_telemetry_elastic-2024.09.15-000072', + 'apm-7.15.1-profile-000001', + 'apm-7.15.1-profile-000002', + 'apm-7.15.1-profile-000003', + 'apm-7.15.1-profile-000004', + 'apm-7.15.1-profile-000005', + 'apm-7.15.1-profile-000006', + 'apm-7.15.1-profile-000007', + 'apm-7.15.1-profile-000008', + 'apm-7.15.1-profile-000009', + 'shrink-ujrr-.ds-detections_alert_telemetry_elastic-2024.01.03-000046', + 'apm-7.16.1-error-000010', + 'apm-7.16.1-error-000011', + '.internal.alerts-ml.anomaly-detection.alerts-default-000001', + '.ds-endpoint_metadata_telemetry_elastic-2024.08.16-000070', + '.ds-security_lists_telemetry_elastic-2024.02.15-000048', + '.ds-endpoint_metadata_telemetry_elastic-2024.07.17-000068', + '.ds-v2_enrichment_data_cloud-2023.10.14-000013', + 'apm-7.15.1-profile-000010', + 'apm-7.15.1-profile-000011', + 'apm-7.15.1-profile-000012', + 'apm-7.15.1-profile-000013', + 'us-airports', + '.ds-insights_telemetry_elastic-2024.03.10-000042', + 'apm-7.13.2-onboarding-2021.06.15', + '.ds-security_lists_telemetry_elastic-2024.01.16-000046', + '.ds-detonate_results_telemetry-2022.10.17-000011', + '.ds-security_lists_telemetry_elastic-2024.09.12-000062', + 'test-index-1', + 'filebeat-7.12.0-2021.04.08', + '.siem-signals-default-000001', + '.siem-signals-default-000002', + '.siem-signals-default-000003', + '.siem-signals-default-000004', + '.siem-signals-default-000005', + '.siem-signals-default-000006', + '.siem-signals-default-000007', + '.siem-signals-default-000008', + '.siem-signals-default-000009', + 'shrink-b_x8-.ds-detections_alert_telemetry_elastic-2023.10.05-000037', + '.ds-security_lists_telemetry_elastic-2024.08.13-000060', + '.ds-security_lists_telemetry_elastic-2024.07.14-000058', + '.siem-signals-default-000010', + '.siem-signals-default-000011', + '.siem-signals-default-000012', + '.siem-signals-default-000013', + '.siem-signals-default-000014', + '.siem-signals-default-000015', + '.siem-signals-default-000016', + '.siem-signals-default-000017', + '.ds-sample-tags-tracking-2022.06.08-000006', + '.siem-signals-default-000018', + '.siem-signals-default-000019', + '.ds-inline_lookup_decision_tracking-2022.06.05-000006', + '.slm-history-3-000004', + '.kibana_task_manager_7.17.0_001', + 'apm-7.13.2-span-000001', + 'apm-7.13.2-span-000002', + 'apm-7.13.2-span-000003', + 'apm-7.13.2-span-000004', + 'apm-7.13.2-span-000005', + 'apm-7.13.2-span-000006', + '.siem-signals-default-000020', + '.siem-signals-default-000021', + '.siem-signals-default-000022', + '.siem-signals-default-000023', + 'apm-7.13.2-span-000008', + 'apm-7.13.2-span-000009', + 'apm-7.13.2-span-000007', + '.ds-inline_lookup_decision_tracking-2022.05.06-000005', + '.ds-sample-tags-tracking-2022.05.09-000005', + 'latest-cluster_telemetry_elastic', + '.ds-detection_rule_cluster_metrics-2022.11.05-000010', + 'apm-7.11.0-error-000001', + 'apm-7.11.0-error-000002', + 'apm-7.11.0-error-000003', + '.ds-logs-elastic_agent.metricbeat-default-2023.08.21-000003', + 'apm-7.11.0-error-000005', + 'apm-7.11.0-error-000006', + 'apm-7.11.0-error-000007', + 'apm-7.11.0-error-000008', + 'apm-7.11.0-transaction-000001', + '.ds-metrics-fleet_server.agent_status-default-2024.09.18-000004', + 'apm-7.11.0-transaction-000003', + 'apm-7.11.0-transaction-000002', + 'apm-7.11.0-transaction-000005', + 'apm-7.11.0-transaction-000006', + 'apm-7.11.0-transaction-000007', + 'apm-7.11.0-transaction-000008', + '.ds-cluster_telemetry_elastic-2023.10.09-000042', + 'apm-7.11.0-transaction-000009', + 'apm-7.11.0-transaction-000004', + 'apm-7.11.0-error-000009', + 'apm-7.11.0-error-000004', + 'apm-7.12.0-profile-000008', + 'apm-7.12.0-profile-000009', + 'apm-7.12.0-profile-000001', + 'apm-7.12.0-profile-000002', + 'apm-7.12.0-profile-000003', + 'apm-7.12.0-profile-000004', + 'apm-7.12.0-profile-000005', + 'apm-7.12.0-profile-000006', + 'apm-7.12.0-profile-000007', + 'apm-7.11.0-error-000010', + '.kibana_7.16.1_001', + 'apm-7.11.0-error-000012', + 'apm-7.11.0-error-000011', + 'apm-7.11.0-error-000014', + 'apm-7.11.0-error-000015', + '.ds-metrics-fleet_server.agent_status-default-2024.08.19-000003', + 'rollup-cluster_telemetry_elastic', + 'apm-7.11.0-error-000018', + 'apm-7.11.0-error-000019', + 'apm-7.11.0-error-000017', + 'apm-7.11.0-error-000016', + 'apm-7.11.0-error-000013', + 'apm-7.12.0-profile-000010', + 'apm-7.12.0-profile-000011', + '.ds-telemetry_usage-2024.06.01-000046', + 'apm-7.12.0-profile-000012', + 'apm-7.12.0-profile-000013', + 'apm-7.12.0-profile-000014', + 'apm-7.12.0-profile-000015', + 'apm-7.12.0-profile-000016', + 'apm-7.12.0-profile-000019', + 'apm-7.12.0-profile-000017', + 'apm-7.12.0-profile-000018', + 'apm-7.13.2-span-000015', + 'apm-7.13.2-span-000016', + 'apm-7.13.2-span-000013', + 'shrink-h4sx-.ds-detections_alert_telemetry_elastic-2024.03.03-000052', + 'apm-7.13.2-span-000014', + 'apm-7.13.2-span-000011', + 'apm-7.13.2-span-000012', + 'apm-7.11.0-error-000020', + 'apm-7.11.0-error-000021', + 'apm-7.11.0-error-000022', + 'apm-7.13.2-span-000010', + 'apm-7.13.2-span-000017', + 'apm-7.11.0-transaction-000014', + 'apm-7.11.0-transaction-000013', + 'apm-7.11.0-transaction-000012', + 'apm-7.11.0-transaction-000011', + 'apm-7.11.0-transaction-000010', + 'apm-7.11.0-transaction-000019', + 'apm-7.11.0-transaction-000018', + 'apm-7.12.0-profile-000020', + 'apm-7.11.0-transaction-000017', + 'apm-7.11.0-transaction-000016', + '.ds-alert_timelines_elastic-2024.09.25-000066', + 'apm-7.11.0-transaction-000015', + 'apm-7.11.0-transaction-000022', + 'apm-7.11.0-transaction-000021', + 'apm-7.11.0-transaction-000020', + 'shrink-wl9p-.ds-alert_telemetry_elastic-2024.02.28-000053', + '.ds-logs-elastic_agent.metricbeat-default-2023.07.22-000002', + '.ds-telemetry_usage-2023.09.05-000028', + 'apm-7.12.0-metric-000001', + 'apm-7.12.0-metric-000002', + 'apm-7.12.0-metric-000003', + 'apm-7.12.0-metric-000004', + 'apm-7.12.0-metric-000005', + 'apm-7.12.0-metric-000006', + 'apm-7.12.0-metric-000007', + 'apm-7.12.0-metric-000008', + 'apm-7.12.0-metric-000009', + '.ds-alert_timelines_elastic-2024.08.26-000063', + '.ds-logs-elastic_agent-default-2023.08.21-000003', + 'apm-7.17.0-span-000001', + 'apm-7.17.0-span-000002', + 'apm-7.17.0-span-000003', + 'apm-7.17.0-span-000004', + 'apm-7.17.0-span-000005', + 'apm-7.17.0-span-000006', + '.lists-default-000001', + 'apm-7.17.0-span-000008', + 'apm-7.17.0-span-000009', + 'apm-7.17.0-span-000007', + '.ds-download_stats_telemetry_elastic-2023.03.09-000018', + 'apm-7.12.0-metric-000010', + 'apm-7.12.0-metric-000011', + 'apm-7.12.0-metric-000012', + 'apm-7.12.0-metric-000013', + 'apm-7.12.0-metric-000014', + 'apm-7.12.0-metric-000015', + 'apm-7.12.0-metric-000016', + 'apm-7.12.0-metric-000017', + 'apm-7.12.0-metric-000018', + 'apm-7.12.0-metric-000019', + '.ds-alert_timelines_elastic-2024.07.27-000060', + 'detection_alert_telemetry_elastic', + '.kibana_7.14.2_001', + '.ds-logs-elastic_agent-default-2023.07.22-000002', + 'failed-docs-000001', + 'apm-7.12.0-metric-000020', + '.ds-insights_telemetry_elastic-2024.01.10-000038', + 'metrics-endpoint.metadata_current_default', + '.ds-detections_alert_telemetry_elastic-2024.07.01-000067', + 'apm-7.16.2-transaction-000001', + 'apm-7.16.2-transaction-000002', + 'apm-7.16.2-transaction-000003', + 'apm-7.16.2-transaction-000004', + 'apm-7.16.2-transaction-000005', + 'apm-7.16.2-transaction-000006', + 'apm-7.16.2-transaction-000007', + 'apm-7.16.2-transaction-000008', + 'apm-7.16.2-transaction-000009', + 'apm-7.10.2-metric-000001', + 'apm-7.10.2-metric-000002', + 'apm-7.10.2-metric-000003', + 'apm-7.10.2-metric-000004', + 'apm-7.10.2-metric-000005', + 'apm-7.10.2-metric-000006', + 'apm-7.10.2-metric-000007', + 'apm-7.10.2-metric-000008', + 'apm-7.10.2-metric-000009', + '.kibana_task_manager_7.12.0_001', + '.ds-logs-generic-default-2023.09.07-000002', + 'apm-7.13.2-transaction-000001', + 'apm-7.13.2-transaction-000002', + 'apm-7.13.2-transaction-000003', + 'apm-7.13.2-transaction-000004', + 'apm-7.13.2-transaction-000005', + 'apm-7.13.2-transaction-000006', + 'apm-7.13.2-transaction-000007', + 'apm-7.13.2-transaction-000008', + 'apm-7.13.2-transaction-000009', + 'apm-7.16.2-transaction-000011', + 'apm-7.16.2-transaction-000010', + 'apm-7.10.0-metric-000004', + 'apm-7.10.0-metric-000003', + 'apm-7.10.0-metric-000002', + 'apm-7.10.0-metric-000001', + 'apm-7.10.2-metric-000010', + 'apm-7.10.2-metric-000011', + 'apm-7.10.2-metric-000012', + 'apm-7.10.2-metric-000013', + 'apm-7.10.2-metric-000014', + 'apm-7.10.2-metric-000015', + 'apm-7.10.2-metric-000016', + 'apm-7.10.2-metric-000017', + 'apm-7.10.2-metric-000018', + 'apm-7.10.2-metric-000019', + 'apm-7.10.0-metric-000008', + 'apm-7.10.0-metric-000007', + 'apm-7.10.0-metric-000006', + 'shrink-_z0f-.ds-alert_timelines_elastic-2024.02.28-000044', + '.ds-security_lists_telemetry_elastic-2023.12.17-000044', + 'apm-7.13.2-transaction-000010', + 'apm-7.13.2-transaction-000011', + 'apm-7.13.2-transaction-000012', + 'apm-7.13.2-transaction-000013', + 'apm-7.13.2-transaction-000014', + 'apm-7.13.2-transaction-000015', + 'apm-7.13.2-transaction-000016', + 'apm-7.13.2-transaction-000017', + '.ds-metrics-fleet_server.agent_versions-default-2024.09.18-000004', + 'apm-7.10.0-metric-000005', + 'apm-7.10.0-metric-000011', + 'apm-7.10.0-metric-000010', + '.ds-kibana-snapshot-2024.09.21-000059', + 'apm-7.10.0-metric-000015', + 'apm-7.10.0-metric-000014', + 'apm-7.10.0-metric-000013', + 'apm-7.10.2-metric-000020', + 'apm-7.10.2-metric-000021', + 'apm-7.10.2-metric-000022', + 'apm-7.10.2-metric-000023', + 'apm-7.10.0-metric-000012', + 'apm-7.10.0-metric-000019', + 'test-rollup', + 'apm-7.10.0-metric-000018', + 'apm-7.10.0-metric-000017', + 'apm-7.10.0-metric-000016', + 'apm-7.10.0-metric-000009', + 'idx_processed_security-endpoint-metadata', + '.ds-logs-generic-default-2023.08.08-000001', + '.ds-metrics-fleet_server.agent_versions-default-2024.08.19-000003', + '.ds-detonate_results_telemetry-2022.05.20-000006', + 'apm-7.10.0-metric-000020', + 'apm-7.10.0-metric-000021', + 'apm-7.10.0-metric-000022', + 'apm-7.10.0-metric-000023', + 'apm-7.10.0-metric-000024', + '.ds-kibana-snapshot-2024.08.22-000057', + 'shrink-u5p4-.ds-kibana-snapshot-2024.05.24-000049', + '.ds-yaas_alert_telemetry-2022.02.11-000005', + '.ds-kibana-snapshot-2024.07.23-000054', + '.ds-detonate_results_telemetry-2022.09.17-000010', + '.kibana_7.13.2_001', + 'apm-7.15.1-metric-000001', + 'apm-7.15.1-metric-000002', + 'apm-7.15.1-metric-000003', + 'apm-7.15.1-metric-000004', + 'apm-7.15.1-metric-000005', + 'apm-7.15.1-metric-000006', + 'apm-7.15.1-metric-000007', + 'apm-7.15.1-metric-000008', + 'apm-7.15.1-metric-000009', + '.ds-logs-ingest-vt-reports-test-default-2023.06.23-000001', + '.ds-yaas_alert_telemetry-2022.01.12-000004', + '.internal.alerts-default.alerts-default-000001', + 'apm-7.15.1-metric-000010', + 'apm-7.15.1-metric-000011', + 'apm-7.15.1-metric-000012', + 'apm-7.15.1-metric-000013', + '.ds-telemetry_usage-2023.11.04-000032', + 'apm-7.10.2-span-000001', + 'apm-7.10.2-span-000002', + 'apm-7.10.2-span-000003', + 'apm-7.10.2-span-000004', + 'apm-7.10.2-span-000005', + 'apm-7.10.2-span-000006', + 'apm-7.10.2-span-000007', + 'apm-7.10.2-span-000008', + 'apm-7.10.2-span-000009', + '.ds-telemetry_usage-2023.10.05-000030', + 'apm-7.10.2-span-000010', + 'apm-7.10.2-span-000011', + 'apm-7.10.2-span-000012', + '.fleet-enrollment-api-keys-7', + 'apm-7.10.2-span-000013', + 'apm-7.10.2-span-000014', + 'apm-7.10.2-span-000016', + 'apm-7.10.2-span-000017', + 'apm-7.10.2-span-000018', + 'apm-7.10.2-span-000019', + 'apm-7.10.2-span-000015', + 'summary-cluster_telemetry_elastic', + '.ds-metrics-elastic_agent.elastic_agent-default-2023.08.21-000003', + '.ds-detections_alert_telemetry_elastic_v2-2023.01.11-000001', + 'apm-7.10.2-span-000020', + '.ds-v2_alert_telemetry_elastic-2023.01.11-000001', + 'apm-7.10.2-span-000021', + 'apm-7.10.2-span-000023', + 'apm-7.10.2-span-000022', + '.ds-metrics-elastic_agent.elastic_agent-default-2023.07.22-000002', + '.fleet-artifacts-7', + '.kibana_7.16.2_001', + '.ds-machine_learning_cluster_details-2022.11.07-000010', + '.ds-cluster_telemetry_elastic-2023.09.09-000040', + 'threatintel-2021.08.19-000001', + 'ilm-history-3-000004', + 'my-index-permissions', + '.ds-detections_alert_telemetry_elastic-2024.04.02-000058', + '.ds-alert_telemetry_endgame-2022.11.05-000086', + '.ds-endpoint_metadata_telemetry_elastic-2023.09.21-000045', + 'shrink-jwq5-.ds-alert_timelines_elastic-2024.01.29-000041', + '.ds-insights_telemetry_elastic-2024.09.06-000054', + 'kibana_snapshot', + '.ds-insights_telemetry_elastic-2023.12.11-000036', + 'metrics-index_pattern_placeholder', + '.ds-insights_telemetry_elastic-2024.08.07-000052', + 'shrink-48kl-.ds-detections_alert_telemetry_elastic-2023.12.04-000043', + 'apm-7.17.0-metric-000001', + 'failure-alert_telemetry_unified', + 'apm-7.17.0-metric-000002', + 'apm-7.17.0-metric-000003', + 'apm-7.17.0-metric-000004', + 'apm-7.17.0-metric-000005', + '.ds-insights_telemetry_elastic-2024.07.08-000050', + 'apm-7.17.0-metric-000006', + 'shrink-gqzj-.ds-detections_alert_telemetry_elastic-2024.02.02-000049', + 'apm-7.17.0-metric-000007', + 'apm-7.17.0-metric-000008', + 'apm-7.17.0-metric-000009', + '.ds-inline_lookup_decision_tracking-2022.02.05-000002', + '.ds-sample-tags-tracking-2021.12.21-000001', + '.kibana_task_manager_7.16.1_001', + '.ds-sample-tags-tracking-2022.02.08-000002', + '.ds-model_tracking_historical-2021.05.11-000004', + 'my-index-000001', + 'my-index-000002', + 'shrink-cgef-.ds-alert_telemetry_elastic-2024.01.29-000050', + '.ds-inline_lookup_decision_tracking-2022.01.06-000001', + '.security-tokens-7', + '.ds-telemetry_usage-2024.01.03-000036', + 'shrink-ixws-.ds-alert_timelines_elastic-2023.12.21-000037', + 'shrink-ud5m-.ds-alert_timelines_elastic-2023.12.30-000038', + '.ds-sample-tags-tracking-2022.03.10-000003', + 'apm-7.10.2-error-000001', + 'apm-7.10.2-error-000002', + 'apm-7.10.2-error-000003', + 'apm-7.10.2-error-000004', + 'apm-7.10.2-error-000005', + 'apm-7.10.2-error-000006', + 'apm-7.10.2-error-000007', + 'apm-7.10.2-error-000008', + 'apm-7.10.2-error-000009', + '.transform-notifications-000002', + '.ds-cluster_telemetry_elastic-2024.04.06-000054', + 'apm-7.17.0-profile-000001', + 'apm-7.17.0-profile-000002', + 'apm-7.17.0-profile-000003', + 'apm-7.17.0-profile-000004', + 'apm-7.17.0-profile-000005', + 'apm-7.17.0-profile-000006', + 'apm-7.17.0-profile-000007', + 'apm-7.17.0-profile-000008', + 'apm-7.17.0-profile-000009', + 'apm-7.10.2-error-000015', + 'apm-7.10.2-error-000014', + 'apm-7.10.2-error-000017', + 'apm-7.10.2-error-000016', + 'apm-7.10.2-error-000011', + 'apm-7.10.2-error-000010', + 'apm-7.10.2-error-000013', + 'apm-7.10.2-error-000012', + 'apm-7.10.2-error-000019', + 'apm-7.10.2-error-000018', + 'shrink-pcsa-.ds-alert_telemetry_elastic-2023.10.27-000040', + '.ds-yaas_alert_telemetry-2022.03.13-000006', + '.ds-metrics-fleet_server.agent_status-default-2024.06.20-000001', + 'shrink-d-hy-.ds-alert_telemetry_elastic-2023.12.30-000047', + '.ds-cluster_telemetry_elastic-2024.03.07-000052', + 'alert_telemetry_labels', + 'apm-7.10.2-error-000020', + 'apm-7.10.2-error-000021', + 'apm-7.10.2-error-000022', + 'apm-7.10.2-error-000023', + '.ds-yaas_alert_telemetry-2021.12.13-000003', + '.security-7', + '.ds-cluster_telemetry_elastic-2023.11.08-000044', + 'apm-7.16.2-profile-000001', + 'apm-7.16.2-profile-000002', + 'apm-7.16.2-profile-000003', + 'apm-7.16.2-profile-000004', + 'apm-7.16.2-profile-000005', + 'apm-7.16.2-profile-000006', + 'apm-7.16.2-profile-000007', + 'apm-7.16.2-profile-000008', + 'apm-7.16.2-profile-000009', + 'apm-7.16.1-transaction-000001', + 'apm-7.16.1-transaction-000003', + 'apm-7.16.1-transaction-000006', + 'apm-7.16.1-transaction-000007', + 'apm-7.16.1-transaction-000008', + 'apm-7.16.1-transaction-000009', + 'apm-7.16.1-transaction-000002', + 'apm-7.16.1-transaction-000005', + 'apm-7.16.1-transaction-000004', + 'apm-7.10.2-onboarding-2021.02.03', + 'apm-7.10.2-onboarding-2021.02.04', + '.ds-alert_telemetry_elastic-2024.04.28-000066', + 'apm-7.16.2-profile-000010', + 'apm-7.16.2-profile-000011', + '.ds-logs-vt_reports_gold_table_export-default-2023.06.22-000001', + 'apm-7.16.1-transaction-000010', + 'apm-7.16.1-transaction-000011', + '.ds-endpoint_metadata_telemetry_elastic-2023.11.20-000049', + '.internal.alerts-ml.anomaly-detection-health.alerts-default-000001', + '.ds-enrichment_data_cloud-2022.12.02-000013', + '.ds-alert_telemetry_elastic-2024.03.29-000062', + '.kibana_task_manager_7.15.1_001', + '.ds-endpoint_metadata_telemetry_elastic-2023.10.21-000047', + '.ds-endpoint_metadata_telemetry_elastic-2024.06.17-000066', + '.internal.alerts-stack.alerts-default-000001', + 'apm-7.13.2-metric-000001', + 'apm-7.13.2-metric-000002', + 'apm-7.13.2-metric-000003', + 'apm-7.13.2-metric-000004', + 'apm-7.13.2-metric-000005', + 'apm-7.13.2-metric-000006', + 'apm-7.13.2-metric-000007', + 'apm-7.13.2-metric-000008', + 'apm-7.13.2-metric-000009', + '.enrich-enrich-alerts-cust-info-1618854141382', + '.enrich-enrich-alerts-hash-1618853111243', + '.ds-endpoint_metadata_telemetry_elastic-2024.05.18-000064', + 'apm-7.13.2-metric-000010', + 'apm-7.13.2-metric-000011', + 'apm-7.13.2-metric-000012', + 'apm-7.13.2-metric-000013', + 'apm-7.13.2-metric-000014', + 'apm-7.13.2-metric-000015', + 'apm-7.13.2-metric-000016', + 'apm-7.13.2-metric-000017', + 'security_solution_signals_test2', + 'security_solution_signals_test0', + 'security_solution_signals_test9', + '.internal.alerts-observability.apm.alerts-default-000001', + '.kibana_task_manager_7.13.2_001', + 'apm-7.13.2-error-000001', + 'apm-7.13.2-error-000002', + 'apm-7.13.2-error-000003', + 'apm-7.13.2-error-000004', + 'apm-7.13.2-error-000005', + 'apm-7.13.2-error-000006', + 'apm-7.13.2-error-000007', + 'apm-7.13.2-error-000008', + 'apm-7.13.2-error-000009', + '.ds-insights_telemetry_elastic-2024.04.09-000044', + '.ds-security_lists_telemetry_elastic-2024.06.14-000056', + 'apm-7.11.0-span-000001', + 'apm-7.11.0-span-000002', + 'apm-7.11.0-span-000003', + 'apm-7.11.0-span-000004', + 'apm-7.11.0-span-000005', + 'apm-7.11.0-span-000006', + 'apm-7.11.0-span-000007', + 'apm-7.11.0-span-000008', + 'apm-7.11.0-span-000009', + '.internal.alerts-observability.uptime.alerts-default-000001', + 'apm-7.13.2-error-000010', + 'apm-7.13.2-error-000011', + 'apm-7.13.2-error-000012', + 'apm-7.13.2-error-000013', + 'apm-7.13.2-error-000014', + 'apm-7.13.2-error-000015', + 'apm-7.13.2-error-000016', + 'apm-7.13.2-error-000017', + 'apm-7.10.2-onboarding-2021.01.14', + '.fleet-servers-7', + '.ds-security_lists_telemetry_elastic-2024.05.15-000054', + 'apm-7.11.0-span-000010', + 'apm-7.11.0-profile-000001', + 'apm-7.11.0-profile-000002', + 'apm-7.11.0-profile-000003', + 'apm-7.11.0-profile-000004', + 'apm-7.11.0-profile-000005', + 'apm-7.11.0-profile-000006', + 'apm-7.11.0-profile-000007', + 'apm-7.11.0-profile-000008', + 'apm-7.11.0-profile-000009', + 'apm-7.11.0-span-000014', + 'apm-7.11.0-span-000013', + 'apm-7.11.0-span-000016', + 'apm-7.11.0-span-000015', + 'apm-7.11.0-span-000018', + 'apm-7.11.0-span-000017', + 'apm-7.11.0-span-000019', + 'apm-7.11.0-span-000012', + 'apm-7.11.0-span-000011', + '.fleet-policies-leader-7', + '.ds-metrics-fleet_server.agent_versions-default-2024.06.20-000001', + '.ds-sample-tags-tracking-2022.04.09-000004', + 'security-rollups-hourly', + 'test-bq-export', + '.internal.alerts-observability.slo.alerts-default-000001', + 'apm-7.11.0-profile-000010', + 'apm-7.11.0-profile-000011', + 'apm-7.11.0-profile-000012', + 'apm-7.11.0-profile-000013', + 'apm-7.11.0-profile-000014', + 'apm-7.11.0-profile-000015', + 'apm-7.11.0-profile-000016', + 'apm-7.11.0-profile-000017', + 'apm-7.11.0-profile-000018', + 'apm-7.11.0-profile-000019', + 'apm-7.11.0-span-000021', + 'apm-7.11.0-span-000020', + '.ds-inline_lookup_decision_tracking-2022.03.07-000003', + 'apm-7.11.0-span-000022', + 'apm-7.10.2-transaction-000001', + 'apm-7.10.2-profile-000001', + 'apm-7.10.2-profile-000002', + 'apm-7.10.2-profile-000003', + 'apm-7.10.2-profile-000004', + '.ds-cluster_telemetry_elastic-2024.02.06-000050', + 'apm-7.10.2-profile-000005', + 'apm-7.10.2-profile-000006', + 'apm-7.10.2-profile-000008', + 'apm-7.10.2-profile-000009', + '.ds-cluster_telemetry_elastic-2024.01.07-000048', + 'apm-7.10.2-profile-000007', + 'alerts-detections', + 'apm-7.10.2-transaction-000002', + 'apm-7.10.2-transaction-000004', + 'apm-7.11.0-profile-000020', + 'apm-7.11.0-profile-000021', + 'apm-7.11.0-profile-000022', + 'apm-7.10.2-transaction-000003', + 'apm-7.10.2-transaction-000009', + 'apm-7.10.2-transaction-000006', + 'apm-7.10.2-transaction-000005', + 'apm-7.10.2-transaction-000008', + 'apm-7.10.2-transaction-000007', + '.ds-logs-elastic_agent.metricbeat-default-2023.06.22-000001', + '.ds-logs-ingest-vt-reports-test-default-2023.07.23-000002', + 'apm-7.10.2-transaction-000010', + 'apm-7.10.2-profile-000010', + 'apm-7.10.2-profile-000011', + 'apm-7.10.2-profile-000012', + 'apm-7.10.2-profile-000013', + 'apm-7.10.2-profile-000014', + 'apm-7.10.2-profile-000015', + 'apm-7.10.2-profile-000016', + 'apm-7.10.2-profile-000017', + 'apm-7.10.2-profile-000018', + 'apm-7.10.2-profile-000019', + '.kibana_task_manager_7.16.2_001', + 'apm-7.10.2-transaction-000013', + 'apm-7.10.2-transaction-000012', + 'apm-7.10.2-transaction-000015', + 'apm-7.10.2-transaction-000014', + 'apm-7.10.2-transaction-000011', + 'apm-7.10.2-transaction-000017', + 'apm-7.10.2-transaction-000016', + 'apm-7.10.2-transaction-000019', + 'apm-7.10.2-transaction-000018', + '.fleet-policies-7', + 'apm-7.12.0-transaction-000009', + 'apm-7.12.0-transaction-000005', + 'apm-7.12.0-transaction-000006', + 'apm-7.12.0-transaction-000007', + 'apm-7.12.0-transaction-000008', + 'apm-7.12.0-transaction-000001', + '.internal.alerts-observability.metrics.alerts-default-000001', + 'apm-7.15.1-error-000002', + 'apm-7.15.1-error-000001', + '.ds-telemetry_usage-2024.04.02-000042', + 'apm-7.10.2-profile-000020', + 'apm-7.10.2-profile-000021', + 'apm-7.10.2-profile-000022', + 'apm-7.10.2-profile-000023', + '.ds-yaas_alert_telemetry-2022.08.10-000011', + 'apm-7.10.2-transaction-000023', + 'apm-7.10.2-transaction-000020', + 'apm-7.10.2-transaction-000022', + 'apm-7.10.2-transaction-000021', + 'apm-7.15.1-error-000004', + 'apm-7.15.1-error-000003', + 'apm-7.15.1-error-000006', + 'apm-7.15.1-error-000005', + 'apm-7.15.1-error-000008', + 'apm-7.15.1-error-000007', + 'apm-7.15.1-error-000009', + 'apm-7.12.0-transaction-000002', + 'apm-7.12.0-transaction-000003', + 'apm-7.12.0-transaction-000004', + 'apm-7.12.0-transaction-000016', + 'apm-7.12.0-transaction-000017', + 'apm-7.12.0-transaction-000018', + 'apm-7.12.0-transaction-000019', + 'apm-7.12.0-transaction-000012', + 'apm-7.12.0-transaction-000013', + '.ds-telemetry_usage-2024.03.03-000040', + 'apm-7.15.1-error-000010', + 'onweek_rules_browser_index', + 'apm-7.15.1-error-000011', + '.ds-yaas_alert_telemetry-2022.07.11-000010', + 'apm-7.15.1-error-000013', + 'apm-7.15.1-error-000012', + '.ds-alert_timelines_elastic-2024.06.27-000057', + 'apm-7.12.0-transaction-000014', + 'apm-7.12.0-transaction-000015', + 'apm-7.12.0-transaction-000010', + 'apm-7.12.0-transaction-000011', + 'apm-7.16.1-onboarding-2021.12.16', + 'apm-7.16.1-onboarding-2021.12.15', + 'apm-7.12.0-transaction-000020', + '.ds-alert_timelines_elastic-2024.05.28-000053', + 'apm-7.12.0-error-000001', + 'apm-7.12.0-error-000002', + 'apm-7.12.0-error-000003', + 'apm-7.12.0-error-000004', + 'apm-7.12.0-error-000005', + 'apm-7.12.0-error-000006', + 'apm-7.12.0-error-000007', + 'apm-7.12.0-error-000008', + 'apm-7.12.0-error-000009', + 'failure-alert_telemetry_elastic', + '.ds-logs-elastic_agent-default-2023.06.22-000001', + '.ds-metrics-elastic_agent.filebeat-default-2023.11.27-000004', + 'apm-7.10.0-profile-000001', + 'apm-7.10.0-profile-000002', + 'apm-7.10.0-profile-000003', + 'apm-7.10.0-profile-000004', + 'apm-7.10.0-profile-000005', + 'apm-7.10.0-profile-000006', + 'apm-7.10.0-profile-000007', + 'apm-7.10.0-profile-000008', + 'apm-7.10.0-profile-000009', + 'apm-7.12.0-onboarding-2021.03.23', + 'apm-7.12.0-error-000010', + 'apm-7.12.0-error-000011', + 'apm-7.12.0-error-000012', + 'apm-7.12.0-error-000013', + 'apm-7.12.0-error-000014', + 'apm-7.12.0-error-000015', + 'apm-7.12.0-error-000016', + 'apm-7.12.0-error-000017', + 'apm-7.12.0-error-000018', + '.ds-alert_timelines_elastic_v2-2022.10.20-000002', + 'apm-7.12.0-error-000019', + '.ds-alert_telemetry_elastic-2024.09.25-000087', + '.ds-alert_telemetry_elastic-2024.08.26-000078', + 'dead-letter', + '.ds-detections_alert_telemetry_elastic-2024.06.01-000064', + 'apm-7.10.0-profile-000010', + 'apm-7.10.0-profile-000011', + 'apm-7.10.0-profile-000012', + 'apm-7.10.0-profile-000013', + 'apm-7.10.0-profile-000014', + 'apm-7.10.0-profile-000015', + 'apm-7.10.0-profile-000016', + 'apm-7.10.0-profile-000017', + 'apm-7.10.0-profile-000018', + 'apm-7.10.0-profile-000019', + 'data-dictionaries', + 'apm-7.12.0-error-000020', + '.ds-alert_telemetry_elastic-2024.07.27-000075', + '.ds-detections_alert_telemetry_elastic-2024.05.02-000061', + 'apm-7.10.0-profile-000020', + 'apm-7.10.0-profile-000021', + 'apm-7.10.0-profile-000022', + 'apm-7.10.0-profile-000023', + 'apm-7.10.0-profile-000024', + 'apm-7.17.0-error-000001', + 'shrink-e4jt-.ds-alert_timelines_elastic-2023.11.21-000034', + 'apm-7.17.0-error-000003', + 'apm-7.17.0-error-000002', + 'apm-7.17.0-error-000005', + 'apm-7.17.0-error-000006', + 'apm-7.17.0-error-000007', + 'apm-7.17.0-error-000008', + 'apm-7.17.0-error-000009', + 'apm-7.17.0-error-000004', + 'apm-7.16.1-span-000001', + 'apm-7.16.1-span-000002', + 'apm-7.16.1-span-000003', + 'apm-7.16.1-span-000004', + 'apm-7.16.1-span-000005', + 'apm-7.16.1-span-000006', + 'apm-7.16.1-span-000007', + 'apm-7.16.1-span-000008', + 'apm-7.16.1-span-000009', + '.ds-insights_telemetry_elastic-2024.02.09-000040', + '.ds-metrics-elastic_agent.elastic_agent-default-2023.11.27-000004', + '.ds-logs-elastic_agent.filebeat-default-2023.06.22-000001', + 'ia-signatures', + 'apm-7.16.2-onboarding-2021.12.20', + 'apm-7.14.2-transaction-000001', + 'apm-7.14.2-transaction-000002', + 'apm-7.14.2-transaction-000003', + 'apm-7.14.2-transaction-000005', + 'apm-7.14.2-transaction-000006', + 'apm-7.14.2-transaction-000007', + 'apm-7.14.2-transaction-000008', + 'apm-7.14.2-transaction-000009', + '.ds-security_lists_telemetry_elastic-2023.10.18-000040', + 'apm-7.14.2-transaction-000004', + 'apm-7.16.1-span-000011', + 'apm-7.10.0-error-000001', + 'apm-7.10.0-error-000002', + 'apm-7.10.0-error-000003', + 'apm-7.10.0-error-000004', + 'apm-7.10.0-error-000005', + 'apm-7.10.0-error-000006', + 'apm-7.10.0-error-000007', + 'apm-7.10.0-error-000008', + 'apm-7.10.0-error-000009', + '.ds-insights_telemetry_elastic-2023.09.12-000030', + '.ds-detonate_results_telemetry-2022.04.20-000003', + 'apm-7.12.0-span-000001', + 'apm-7.12.0-span-000005', + 'apm-7.12.0-span-000006', + 'apm-7.12.0-span-000007', + 'apm-7.12.0-span-000008', + 'apm-7.12.0-span-000002', + 'apm-7.12.0-span-000003', + 'apm-7.12.0-span-000004', + 'apm-7.12.0-span-000009', + 'apm-7.14.2-transaction-000012', + 'apm-7.14.2-transaction-000013', + 'apm-7.14.2-transaction-000010', + 'apm-7.14.2-transaction-000011', + 'apm-7.16.1-span-000010', + 'apm-7.10.0-span-000001', + 'apm-7.10.0-span-000002', + '.ds-sample-tags-tracking-2022.09.06-000009', + 'apm-7.10.0-error-000010', + 'apm-7.10.0-error-000011', + 'apm-7.10.0-error-000012', + 'apm-7.10.0-error-000014', + 'apm-7.10.0-error-000015', + 'apm-7.10.0-error-000013', + 'apm-7.10.0-error-000016', + 'apm-7.10.0-error-000018', + 'apm-7.10.0-error-000019', + 'apm-7.10.0-error-000017', + 'apm-7.10.0-span-000009', + 'apm-7.10.0-span-000007', + 'apm-7.10.0-span-000008', + 'apm-7.10.0-span-000005', + 'apm-7.10.0-span-000006', + 'apm-7.10.0-span-000003', + 'apm-7.10.0-span-000004', + 'apm-7.12.0-span-000016', + 'apm-7.12.0-span-000017', + 'apm-7.12.0-span-000018', + 'apm-7.12.0-span-000019', + 'apm-7.12.0-span-000012', + 'apm-7.12.0-span-000013', + 'apm-7.12.0-span-000014', + 'apm-7.12.0-span-000015', + 'apm-7.12.0-span-000010', + '.ds-sample-tags-tracking-2022.08.07-000008', + 'apm-7.10.0-span-000010', + 'apm-7.10.0-span-000011', + 'apm-7.10.0-span-000012', + 'apm-7.10.0-error-000020', + 'apm-7.10.0-error-000021', + 'apm-7.10.0-error-000022', + 'apm-7.10.0-error-000023', + 'apm-7.10.0-error-000024', + 'apm-7.10.0-span-000013', + 'apm-7.12.0-span-000011', + 'apm-7.10.0-span-000018', + 'apm-7.12.0-span-000020', + '.ds-detonate_results_telemetry-2022.06.19-000007', + 'apm-7.10.0-span-000019', + 'apm-7.10.0-span-000016', + 'apm-7.10.0-span-000017', + 'apm-7.10.0-span-000014', + 'apm-7.10.0-span-000015', + '.ds-inline_lookup_decision_tracking-2022.08.04-000008', + '.transform-internal-007', + '.transform-internal-006', + '.transform-internal-005', + '.ds-inline_lookup_decision_tracking-2022.09.03-000009', + '.ds-kibana-snapshot-2024.06.23-000052', + '.ds-inline_lookup_decision_tracking-2022.07.05-000007', + '.ds-metrics-elastic_agent.filebeat-default-2023.06.22-000001', + 'event-type-index', + '.ds-sample-tags-tracking-2022.07.08-000007', + '.ds-telemetry_usage-2024.02.02-000038', + 'apm-7.10.0-span-000020', + 'apm-7.10.0-span-000021', + 'apm-7.10.0-span-000022', + 'apm-7.10.0-span-000023', + 'apm-7.10.0-span-000024', + '.ds-cluster_telemetry_elastic-2023.12.08-000046', + '.ds-yaas_alert_telemetry-2022.04.12-000007', + '.kibana_task_manager_7.14.2_001', + '.ds-metrics-elastic_agent.elastic_agent-default-2023.06.22-000001', + '.ds-logs-vt_reports_gold_table_export-default-2023.07.22-000002', + 'apm-7.16.2-metric-000001', + 'apm-7.16.2-metric-000002', + 'apm-7.16.2-metric-000003', + 'apm-7.16.2-metric-000004', + 'apm-7.16.2-metric-000005', + 'apm-7.16.2-metric-000006', + 'apm-7.16.2-metric-000007', + 'apm-7.16.2-metric-000008', + 'apm-7.16.2-metric-000009', + '.internal.alerts-observability.threshold.alerts-default-000001', + 'apm-7.17.0-onboarding-2022.02.24', + '.ds-endpoint_metadata_telemetry_elastic-2023.12.20-000051', + '.internal.alerts-observability.logs.alerts-default-000001', + '.ds-machine_learning_cluster_metrics-2022.11.07-000010', + 'apm-7.16.2-metric-000010', + 'apm-7.16.2-metric-000011', + '.ds-osquery_packs_telemetry_elastic-2022.03.24-000001', + 'shrink-yvq6-.ds-alert_timelines_elastic-2023.10.22-000031', + 'apm-7.14.2-onboarding-2021.10.13', + 'ia-cs_extract', + 'idx_processed_security-stats', + '.ds-insights_telemetry_elastic-2023.11.11-000034', + 'machine_learning_cluster_metric', + '.ds-insights_telemetry_elastic-2024.06.08-000048', + '.kibana-observability-ai-assistant-kb-000001', + '.ds-insights_telemetry_elastic-2023.10.12-000032', + 'detection_rule_cluster_metric', + '.ds-insights_telemetry_elastic-2024.05.09-000046', + '.ds-inline_lookup_decision_tracking-2022.11.02-000011', + '.internal.alerts-security.alerts-default-000001', + '.ds-sample-tags-tracking-2022.11.05-000011', + 'apm-7.14.2-metric-000001', + 'apm-7.14.2-metric-000002', + 'apm-7.14.2-metric-000003', + 'apm-7.14.2-metric-000004', + 'data-dict-index', + 'apm-7.14.2-metric-000005', + 'apm-7.14.2-metric-000006', + 'apm-7.17.0-transaction-000001', + 'apm-7.17.0-transaction-000002', + 'apm-7.17.0-transaction-000003', + 'apm-7.17.0-transaction-000004', + 'apm-7.17.0-transaction-000005', + 'apm-7.17.0-transaction-000006', + 'apm-7.17.0-transaction-000007', + 'apm-7.17.0-transaction-000008', + 'apm-7.17.0-transaction-000009', + 'apm-7.14.2-metric-000009', + 'apm-7.14.2-metric-000007', + 'apm-7.14.2-metric-000008', + 'idx_processed_security-telemetry-usage', + '.ds-inline_lookup_decision_tracking-2022.10.03-000010', + 'shrink-imua-.ds-alert_timelines_elastic-2023.09.22-000028', + 'apm-7.15.1-span-000003', + 'apm-7.15.1-span-000004', + 'apm-7.15.1-span-000005', + 'apm-7.15.1-span-000006', + 'apm-7.15.1-span-000007', + 'apm-7.15.1-span-000008', + 'apm-7.15.1-span-000009', + 'apm-7.15.1-span-000001', + 'apm-7.15.1-span-000002', + 'apm-7.14.2-metric-000010', + 'apm-7.14.2-metric-000012', + 'apm-7.14.2-metric-000013', + 'apm-7.14.2-metric-000011', + '.ds-sample-tags-tracking-2022.10.06-000010', + '.ds-metrics-fleet_server.agent_versions-default-2024.07.20-000002', + 'apm-7.11.0-onboarding-2021.02.10', + 'apm-7.15.1-span-000010', + 'apm-7.15.1-span-000011', + 'apm-7.15.1-span-000012', + 'apm-7.15.1-span-000013', + 'logs-index_pattern_placeholder', + 'awesome-test', + '.ds-yaas_alert_telemetry-2022.10.09-000013', + 'test-vt-reports-export', + '.ds-task_metrics_elastic-2023.09.18-000005', + '.fleet-agents-7', + '.ds-security_lists_telemetry_elastic-2023.09.18-000038', + '.ds-inline_lookup_decision_tracking-2022.04.06-000004', + 'shrink-abnc-.ds-alert_telemetry_elastic-2023.09.27-000037', + 'shrink-5phn-.ds-detections_alert_telemetry_elastic-2023.11.04-000039', + '.ds-yaas_alert_telemetry-2021.11.13-000002', + '.ds-telemetry_usage-2024.05.02-000044', + 'apm-7.11.0-metric-000001', + 'apm-7.11.0-metric-000002', + 'apm-7.11.0-metric-000003', + 'apm-7.11.0-metric-000004', + 'apm-7.11.0-metric-000005', + 'apm-7.11.0-metric-000006', + 'apm-7.11.0-metric-000007', + 'apm-7.11.0-metric-000008', + 'apm-7.11.0-metric-000009', + '.ds-yaas_alert_telemetry-2021.10.14-000001', + '.ds-detections_alert_telemetry_elastic-2024.08.30-000073', + 'apm-7.15.1-onboarding-2021.10.19', + 'apm-7.11.0-metric-000010', + 'apm-7.11.0-metric-000011', + 'apm-7.11.0-metric-000012', + 'apm-7.11.0-metric-000013', + 'apm-7.11.0-metric-000014', + 'apm-7.11.0-metric-000015', + 'apm-7.11.0-metric-000016', + 'apm-7.11.0-metric-000017', + 'apm-7.11.0-metric-000018', + 'apm-7.11.0-metric-000019', + '.ds-detections_alert_telemetry_elastic-2024.07.31-000070', + '.ds-telemetry_usage-2023.12.04-000034', + '.kibana_7.17.0_001', + 'apm-7.11.0-metric-000021', + 'apm-7.11.0-metric-000022', + 'apm-7.11.0-metric-000020', + 'detection-rules-test', + '.ds-v2_detections_alert_telemetry_elastic-2022.09.11-000002', + 'apm-7.16.1-metric-000001', + 'apm-7.16.1-metric-000002', + 'apm-7.16.1-metric-000003', + 'apm-7.16.1-metric-000004', + 'apm-7.16.1-metric-000005', + 'apm-7.16.1-metric-000006', + 'apm-7.16.1-metric-000007', + 'apm-7.16.1-metric-000008', + 'apm-7.16.1-metric-000009', + '.ds-endpoint_metadata_telemetry_elastic-2024.04.18-000062', + 'machine_learning_cluster_detail', + '.items-default-000001', + 'apm-7.10.0-onboarding-2020.12.03', + 'apm-7.16.1-metric-000010', + 'apm-7.16.1-metric-000011', + '.ds-endpoint_metadata_telemetry_elastic-2024.03.19-000060', + 'apm-7.10.0-onboarding-2020.12.04', + 'apm-7.14.2-profile-000001', + 'apm-7.14.2-profile-000002', + 'apm-7.14.2-profile-000003', + 'apm-7.14.2-profile-000004', + 'apm-7.14.2-profile-000005', + 'apm-7.14.2-profile-000006', + 'apm-7.14.2-profile-000007', + 'apm-7.14.2-profile-000008', + 'apm-7.14.2-profile-000009', + '.ds-logs-elastic_agent.filebeat-default-2023.08.21-000003', + 'detection_rule_cluster_detail', + '.ds-alert_telemetry_unified-2022.11.10-000048', + '.kibana_7.15.1_001', + 'apm-7.16.2-error-000001', + 'apm-7.16.2-error-000002', + 'apm-7.16.2-error-000003', + 'apm-7.16.2-error-000004', + 'apm-7.16.2-error-000005', + 'apm-7.16.2-error-000006', + 'apm-7.16.2-error-000007', + 'apm-7.16.2-error-000008', + 'apm-7.16.2-error-000009', + 'apm-7.14.2-profile-000010', +]; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/timeline.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/timeline.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/timeline.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/timeline.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/artifact.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/artifact.test.ts similarity index 93% rename from x-pack/plugins/security_solution/server/lib/telemetry/artifact.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/artifact.test.ts index d3aabc5b28d41..af7d96b6ac311 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/artifact.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/artifact.test.ts @@ -66,7 +66,7 @@ describe('telemetry artifact test', () => { await artifact.start(mockTelemetryReceiver); const axiosResponse = { status: 200, - data: 'x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', + data: 'x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', }; mockedAxios.get.mockImplementationOnce(() => Promise.resolve(axiosResponse)); await expect(async () => artifact.getArtifact('artifactThatDoesNotExist')).rejects.toThrow( @@ -80,7 +80,7 @@ describe('telemetry artifact test', () => { await artifact.start(mockTelemetryReceiver); const axiosResponse = { status: 200, - data: 'x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', + data: 'x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', }; mockedAxios.get .mockImplementationOnce(() => Promise.resolve(axiosResponse)) @@ -111,7 +111,7 @@ describe('telemetry artifact test', () => { const fakeEtag = '123'; const axiosResponse = { status: 200, - data: 'x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', + data: 'x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', headers: { etag: fakeEtag }, }; const artifact = new Artifact(); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/artifact.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/artifact.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/artifact.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/artifact.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/async_sender.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.ts similarity index 96% rename from x-pack/plugins/security_solution/server/lib/telemetry/async_sender.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.ts index edbd5d21e3aea..107ca457b2cfb 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.ts @@ -8,7 +8,7 @@ import axios from 'axios'; import * as rx from 'rxjs'; import _, { cloneDeep } from 'lodash'; -import type { Logger, LogMeta } from '@kbn/core/server'; +import type { AnalyticsServiceSetup, EventTypeOpts, Logger, LogMeta } from '@kbn/core/server'; import type { TelemetryPluginSetup, TelemetryPluginStart } from '@kbn/telemetry-plugin/server'; import { type IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; import type { ITelemetryReceiver } from './receiver'; @@ -17,7 +17,7 @@ import { type QueueConfig, type RetryConfig, } from './async_sender.types'; -import { TelemetryChannel, TelemetryCounter } from './types'; +import { type Nullable, TelemetryChannel, TelemetryCounter } from './types'; import * as collections from './collections_helpers'; import { CachedSubject, retryOnError$ } from './rxjs_helpers'; import { SenderUtils } from './sender_helpers'; @@ -55,6 +55,8 @@ export class AsyncTelemetryEventsSender implements IAsyncTelemetryEventsSender { private telemetryUsageCounter?: IUsageCounter; private senderUtils: SenderUtils | undefined; + private analytics: Nullable; + constructor(logger: Logger) { this.logger = newTelemetryLogger(logger.get('telemetry_events.async_sender')); } @@ -64,7 +66,8 @@ export class AsyncTelemetryEventsSender implements IAsyncTelemetryEventsSender { fallbackQueueConfig: QueueConfig, telemetryReceiver: ITelemetryReceiver, telemetrySetup?: TelemetryPluginSetup, - telemetryUsageCounter?: IUsageCounter + telemetryUsageCounter?: IUsageCounter, + analytics?: AnalyticsServiceSetup ): void { this.logger.l(`Setting up ${AsyncTelemetryEventsSender.name}`); @@ -77,6 +80,7 @@ export class AsyncTelemetryEventsSender implements IAsyncTelemetryEventsSender { this.telemetryReceiver = telemetryReceiver; this.telemetrySetup = telemetrySetup; this.telemetryUsageCounter = telemetryUsageCounter; + this.analytics = analytics; this.updateStatus(ServiceStatus.CONFIGURED); } @@ -201,6 +205,13 @@ export class AsyncTelemetryEventsSender implements IAsyncTelemetryEventsSender { } } + public reportEBT(eventTypeOpts: EventTypeOpts, eventData: T): void { + if (!this.analytics) { + throw Error('analytics is unavailable'); + } + this.analytics.reportEvent(eventTypeOpts.eventType, eventData as object); + } + // internal methods private queue$( upstream$: rx.Observable, diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.types.ts similarity index 89% rename from x-pack/plugins/security_solution/server/lib/telemetry/async_sender.types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.types.ts index 249493cfdbfc8..89ce55d102859 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.types.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/async_sender.types.ts @@ -6,6 +6,7 @@ */ import type { TelemetryPluginSetup, TelemetryPluginStart } from '@kbn/telemetry-plugin/server'; import { type IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; +import type { AnalyticsServiceSetup, EventTypeOpts } from '@kbn/core-analytics-server'; import { type TelemetryChannel } from './types'; import type { ITelemetryReceiver } from './receiver'; @@ -20,7 +21,8 @@ export interface IAsyncTelemetryEventsSender { fallbackQueueConfig: QueueConfig, telemetryReceiver: ITelemetryReceiver, telemetrySetup?: TelemetryPluginSetup, - telemetryUsageCounter?: IUsageCounter + telemetryUsageCounter?: IUsageCounter, + analytics?: AnalyticsServiceSetup ) => void; start: (telemetryStart?: TelemetryPluginStart) => void; stop: () => Promise; @@ -28,6 +30,7 @@ export interface IAsyncTelemetryEventsSender { simulateSend: (channel: TelemetryChannel, events: unknown[]) => string[]; updateQueueConfig: (channel: TelemetryChannel, config: QueueConfig) => void; updateDefaultQueueConfig: (config: QueueConfig) => void; + reportEBT: (eventTypeOpts: EventTypeOpts, eventData: T) => void; } /** diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts new file mode 100644 index 0000000000000..987c088d289fe --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts @@ -0,0 +1,190 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { stagingIndices } from './__mocks__/staging_indices'; +import { + type CommonPrefixesConfig, + chunked, + chunkedBy, + findCommonPrefixes, + chunkStringsByMaxLength, +} from './collections_helpers'; + +describe('telemetry.utils.chunked', () => { + it('should chunk simple case', async () => { + const input = [1, 2, 3, 4, 5, 6, 7, 8, 9]; + const output = chunked(input, 3); + expect(output).toEqual([ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9], + ]); + }); + + it('should chunk with remainder', async () => { + const input = [1, 2, 3, 4, 5, 6, 7, 8, 9]; + const output = chunked(input, 4); + expect(output).toEqual([[1, 2, 3, 4], [5, 6, 7, 8], [9]]); + }); + + it('should chunk with empty list', async () => { + const input: unknown[] = []; + const output = chunked(input, 4); + expect(output).toEqual([]); + }); + + it('should chunk with single element', async () => { + const input = [1]; + const output = chunked(input, 4); + expect(output).toEqual([[1]]); + }); + + it('should chunk with single element and chunk size 1', async () => { + const input = [1]; + const output = chunked(input, 1); + expect(output).toEqual([[1]]); + }); + + it('should chunk arrays smaller than the chunk size', async () => { + const input = [1]; + const output = chunked(input, 10); + expect(output).toEqual([[1]]); + }); +}); + +describe('telemetry.utils.chunkedBy', () => { + it('should chunk simple case', async () => { + const input = ['aa', 'b', 'ccc', 'ddd']; + const output = chunkedBy(input, 3, (v) => v.length); + expect(output).toEqual([['aa', 'b'], ['ccc'], ['ddd']]); + }); + + it('should chunk with remainder', async () => { + const input = ['aaa', 'b']; + const output = chunkedBy(input, 3, (v) => v.length); + expect(output).toEqual([['aaa'], ['b']]); + }); + + it('should chunk with empty list', async () => { + const input: string[] = []; + const output = chunkedBy(input, 3, (v) => v.length); + expect(output).toEqual([]); + }); + + it('should chunk with single element smaller than max weight', async () => { + const input = ['aa']; + const output = chunkedBy(input, 3, (v) => v.length); + expect(output).toEqual([['aa']]); + }); + + it('should chunk with single element bigger than max weight', async () => { + const input = ['aaaa']; + const output = chunkedBy(input, 3, (v) => v.length); + expect(output).toEqual([['aaaa']]); + }); +}); + +describe('telemetry.utils.findCommonPrefixes', () => { + it('should find common prefixes in simple case', async () => { + const indices = ['aaa', 'b', 'aa']; + const config: CommonPrefixesConfig = { + maxPrefixes: 10, + maxGroupSize: 10, + minPrefixSize: 1, + }; + + const output = findCommonPrefixes(indices, config); + + expect(output).toHaveLength(2); + expect(output.find((v, _) => v.parts.length === 1 && v.parts[0] === 'a')?.indexCount).toEqual( + 2 + ); + expect(output.find((v, _) => v.parts.length === 1 && v.parts[0] === 'b')?.indexCount).toEqual( + 1 + ); + }); + + it('should find common prefixes with different minPrefixSize', async () => { + const indices = ['.ds-AA-0001', '.ds-AA-0002', '.ds-BB-0003']; + const config: CommonPrefixesConfig = { + maxPrefixes: 10, + maxGroupSize: 3, + minPrefixSize: 5, + }; + + const output = findCommonPrefixes(indices, config); + + expect(output).toHaveLength(2); + expect( + output.find((v, _) => v.parts.length === 1 && v.parts[0] === '.ds-A')?.indexCount + ).toEqual(2); + expect( + output.find((v, _) => v.parts.length === 1 && v.parts[0] === '.ds-B')?.indexCount + ).toEqual(1); + }); + + it('should discard extra indices', async () => { + const indices = ['aaa', 'aaaaaa', 'aa']; + const config: CommonPrefixesConfig = { + maxPrefixes: 1, + maxGroupSize: 2, + minPrefixSize: 3, + }; + + const output = findCommonPrefixes(indices, config); + + expect(output).toHaveLength(1); + expect(output.find((v, _) => v.parts.length === 1 && v.parts[0] === 'aaa')?.indexCount).toEqual( + 2 + ); + }); + + it('should group many indices', async () => { + const indices = stagingIndices; + const config: CommonPrefixesConfig = { + maxPrefixes: 8, + maxGroupSize: 100, + minPrefixSize: 3, + }; + + const output = findCommonPrefixes(indices, config); + + expect(output).toHaveLength(config.maxPrefixes); + expect(output.map((v, _) => v.indexCount).reduce((acc, i) => acc + i, 0)).toBe(indices.length); + }); +}); + +describe('telemetry.utils.splitIndicesByNameLength', () => { + it('should chunk simple case', async () => { + const input = ['aa', 'b', 'ccc', 'ddd']; + const output = chunkStringsByMaxLength(input, 5); + expect(output).toEqual([['aa', 'b'], ['ccc'], ['ddd']]); + }); + + it('should chunk with remainder', async () => { + const input = ['aaa', 'b']; + const output = chunkStringsByMaxLength(input, 10); + expect(output).toEqual([['aaa', 'b']]); + }); + + it('should chunk with empty list', async () => { + const input: string[] = []; + const output = chunkStringsByMaxLength(input, 3); + expect(output).toEqual([]); + }); + + it('should chunk with single element smaller than max weight', async () => { + const input = ['aa']; + const output = chunkStringsByMaxLength(input, 3); + expect(output).toEqual([['aa']]); + }); + + it('should chunk with single element bigger than max weight', async () => { + const input = ['aaaa', 'bb']; + const output = chunkStringsByMaxLength(input, 4); + expect(output).toEqual([['aaaa'], ['bb']]); + }); +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/collections_helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/collections_helpers.ts new file mode 100644 index 0000000000000..3d945667fd3cb --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/collections_helpers.ts @@ -0,0 +1,215 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Splits the list into a list of lists each not exceeding the given size. + * The order of the elements is preserved. + * + * @param list - The list to split + * @param size - The maximum size of each chunk + * + * @returns - The list of chunks + */ +export const chunked = function (list: T[], size: number): T[][] { + return chunkedBy(list, size, () => 1); +}; + +/** + * Splits the list into a list of lists each not exceeding the given size. + * The size of each element is determined by the weight function, that is called + * for each element in the list. + * The sum of the weights of the elements in each chunk will not exceed the given size. + * The order of the elements is preserved. + * + * @param list - The list to split + * @param size - The maximum size of each chunk + * @param weight - The function that determines the weight of each element + * @returns - The list of chunks + */ +export const chunkedBy = function (list: T[], size: number, weight: (v: T) => number): T[][] { + function chunk(acc: Chunked, value: T): Chunked { + const currentWeight = weight(value); + if (acc.weight + currentWeight <= size) { + acc.current.push(value); + acc.weight += currentWeight; + } else { + acc.chunks.push(acc.current); + acc.current = [value]; + acc.weight = currentWeight; + } + return acc; + } + + return list.reduce(chunk, new Chunked()).flush(); +}; + +/** + * Helper class used internally. + */ +class Chunked { + public weight: number = 0; + + constructor(public chunks: T[][] = [], public current: T[] = []) {} + + public flush(): T[][] { + if (this.current.length !== 0) { + this.chunks.push(this.current); + this.current = []; + } + return this.chunks.filter((chunk) => chunk.length > 0); + } +} + +export interface CommonPrefixesConfig { + maxPrefixes: number; + maxGroupSize: number; + minPrefixSize: number; +} + +interface TrieNode { + char: string; + prefix: string; + children: { [key: string]: TrieNode }; + count: number; + isEnd: boolean; + id: number; +} + +interface Group { + parts: string[]; + indexCount: number; +} + +function newTrieNode(char: string = '', prefix: string = '', id: number = 0): TrieNode { + return { + char, + children: {}, + count: 0, + id, + isEnd: false, + prefix, + }; +} + +/** + * Finds and groups common prefixes from a list of strings. + * + * @param {string[]} indices - An array of strings from which common prefixes will be extracted. + * @param {CommonPrefixesConfig} config - A configuration object that defines the rules for grouping. + * + * The `config` object contains the following properties: + * - maxGroupSize {number}: The maximum number of indices allowed in a group. + * - maxPrefixes {number}: The maximum number of prefix groups to return. + * - minPrefixSize {number}: The minimum length of a prefix required to form a group. It avoid cases like returning + * a single character prefix, e.g., ['.ds-...1', '.ds-....2', ....] -> returns a single group '.' + * + * @returns {Group[]} - An array of groups where each group contains a list of prefix parts and the count of indices that share that prefix. + * + * Example usage: + * + * ```typescript + * const indices = ['apple', 'appetizer', 'application', 'banana', 'band', 'bandage']; + * const config = { + * maxGroupSize: 5, + * maxPrefixes: 3, + * minPrefixSize: 3 + * }; + * + * const result = findCommonPrefixes(indices, config); + * //result = [ + * // { parts: [ 'ban' ], indexCount: 3 }, + * // { parts: [ 'app' ], indexCount: 3 } + * //] + * ``` + */ + +export function findCommonPrefixes(indices: string[], config: CommonPrefixesConfig): Group[] { + const idCounter = function* (): Generator { + let id = 0; + while (true) { + yield id++; + } + }; + + const idGen = idCounter(); + + const root = newTrieNode('', '', idGen.next().value); + for (const index of indices) { + let node = root; + node.count++; + for (const char of index) { + if (!node.children[char]) { + node.children[char] = newTrieNode(char, node.prefix + char, idGen.next().value); + } + node = node.children[char]; + node.count++; + } + node.isEnd = true; + } + + const nodes = [root]; + const prefixes: Group[] = []; + + while (nodes.length > 0) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const node = nodes.pop()!; + if ( + (node.count <= config.maxGroupSize && node.prefix.length >= config.minPrefixSize) || + (Object.keys(node.children).length === 0 && node.prefix.length >= config.minPrefixSize) + ) { + const group: Group = { + parts: [node.prefix], + indexCount: node.count, + }; + prefixes.push(group); + } else { + for (const child of Object.values(node.children)) { + nodes.push(child); + } + } + } + + if (prefixes.length > config.maxPrefixes) { + prefixes.sort((a, b) => a.indexCount - b.indexCount); + + while (prefixes.length > config.maxPrefixes) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const g1 = prefixes.shift()!; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const g2 = prefixes.shift()!; + const mergedGroup: Group = { + parts: g1.parts.concat(g2.parts), + indexCount: g1.indexCount + g2.indexCount, + }; + prefixes.push(mergedGroup); + prefixes.sort((a, b) => a.indexCount - b.indexCount); + } + } + + return prefixes; +} + +/** + * Splits an array of strings into chunks where the total length of strings in each chunk + * does not exceed the specified `maxLength`. + * + * @param strings - An array of strings to be chunked. + * @param maxLength - The maximum total length allowed for strings in each chunk. Defaults to 1024. + * @returns A two-dimensional array where each inner array is a chunk of strings. + * + * @example + * ```typescript + * const strings = ["hello", "world", "this", "is", "a", "test"]; + * const chunks = chunkStringsByMaxLength(strings, 10); + * console.log(chunks); + * // Output: [["hello", "world"], ["this", "is"], ["a", "test"]] + * ``` + */ +export function chunkStringsByMaxLength(strings: string[], maxLength: number = 3072): string[][] { + // plus 1 for the comma separator + return chunkedBy(strings, maxLength, (index) => index.length + 1); +} diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/configuration.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/configuration.ts new file mode 100644 index 0000000000000..963addde2afb4 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/configuration.ts @@ -0,0 +1,134 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import os from 'os'; +import type { + IndicesMetadataConfiguration, + PaginationConfiguration, + TelemetrySenderChannelConfiguration, +} from './types'; + +class TelemetryConfigurationDTO { + private readonly DEFAULT_TELEMETRY_MAX_BUFFER_SIZE = 100; + private readonly DEFAULT_MAX_SECURITY_LIST_TELEMETRY_BATCH = 100; + private readonly DEFAULT_MAX_ENDPOINT_TELEMETRY_BATCH = 300; + private readonly DEFAULT_MAX_DETECTION_RULE_TELEMETRY_BATCH = 1_000; + private readonly DEFAULT_MAX_DETECTION_ALERTS_BATCH = 50; + private readonly DEFAULT_ASYNC_SENDER = false; + private readonly DEFAULT_SENDER_CHANNELS = {}; + private readonly DEFAULT_PAGINATION_CONFIG = { + // default to 2% of host's total memory or 80MiB, whichever is smaller + max_page_size_bytes: Math.min(os.totalmem() * 0.02, 80 * 1024 * 1024), + num_docs_to_sample: 10, + }; + private readonly DEFAULT_INDICES_METADATA_CONFIG = { + indices_threshold: 10000, + datastreams_threshold: 1000, + + max_prefixes: 10, // @deprecated + max_group_size: 100, // @deprecated + min_group_size: 5, // @deprecated + }; + + private _telemetry_max_buffer_size = this.DEFAULT_TELEMETRY_MAX_BUFFER_SIZE; + private _max_security_list_telemetry_batch = this.DEFAULT_MAX_SECURITY_LIST_TELEMETRY_BATCH; + private _max_endpoint_telemetry_batch = this.DEFAULT_MAX_ENDPOINT_TELEMETRY_BATCH; + private _max_detection_rule_telemetry_batch = this.DEFAULT_MAX_DETECTION_RULE_TELEMETRY_BATCH; + private _max_detection_alerts_batch = this.DEFAULT_MAX_DETECTION_ALERTS_BATCH; + private _use_async_sender = this.DEFAULT_ASYNC_SENDER; + private _sender_channels: { + [key: string]: TelemetrySenderChannelConfiguration; + } = this.DEFAULT_SENDER_CHANNELS; + private _pagination_config: PaginationConfiguration = this.DEFAULT_PAGINATION_CONFIG; + private _indices_metadata_config: IndicesMetadataConfiguration = + this.DEFAULT_INDICES_METADATA_CONFIG; + + public get telemetry_max_buffer_size(): number { + return this._telemetry_max_buffer_size; + } + + public set telemetry_max_buffer_size(num: number) { + this._telemetry_max_buffer_size = num; + } + + public get max_security_list_telemetry_batch(): number { + return this._max_security_list_telemetry_batch; + } + + public set max_security_list_telemetry_batch(num: number) { + this._max_security_list_telemetry_batch = num; + } + + public get max_endpoint_telemetry_batch(): number { + return this._max_endpoint_telemetry_batch; + } + + public set max_endpoint_telemetry_batch(num: number) { + this._max_endpoint_telemetry_batch = num; + } + + public get max_detection_rule_telemetry_batch(): number { + return this._max_detection_rule_telemetry_batch; + } + + public set max_detection_rule_telemetry_batch(num: number) { + this._max_detection_rule_telemetry_batch = num; + } + + public get max_detection_alerts_batch(): number { + return this._max_detection_alerts_batch; + } + + public set max_detection_alerts_batch(num: number) { + this._max_detection_alerts_batch = num; + } + + public get use_async_sender(): boolean { + return this._use_async_sender; + } + + public set use_async_sender(num: boolean) { + this._use_async_sender = num; + } + + public set sender_channels(config: { [key: string]: TelemetrySenderChannelConfiguration }) { + this._sender_channels = config; + } + + public get sender_channels(): { [key: string]: TelemetrySenderChannelConfiguration } { + return this._sender_channels; + } + + public set pagination_config(paginationConfiguration: PaginationConfiguration) { + this._pagination_config = paginationConfiguration; + } + + public get pagination_config(): PaginationConfiguration { + return this._pagination_config; + } + + public set indices_metadata_config(paginationConfiguration: IndicesMetadataConfiguration) { + this._indices_metadata_config = paginationConfiguration; + } + + public get indices_metadata_config(): IndicesMetadataConfiguration { + return this._indices_metadata_config; + } + + public resetAllToDefault() { + this._telemetry_max_buffer_size = this.DEFAULT_TELEMETRY_MAX_BUFFER_SIZE; + this._max_security_list_telemetry_batch = this.DEFAULT_MAX_SECURITY_LIST_TELEMETRY_BATCH; + this._max_endpoint_telemetry_batch = this.DEFAULT_MAX_ENDPOINT_TELEMETRY_BATCH; + this._max_detection_rule_telemetry_batch = this.DEFAULT_MAX_DETECTION_RULE_TELEMETRY_BATCH; + this._max_detection_alerts_batch = this.DEFAULT_MAX_DETECTION_ALERTS_BATCH; + this._sender_channels = this.DEFAULT_SENDER_CHANNELS; + this._pagination_config = this.DEFAULT_PAGINATION_CONFIG; + this._indices_metadata_config = this.DEFAULT_INDICES_METADATA_CONFIG; + } +} + +export const telemetryConfiguration = new TelemetryConfigurationDTO(); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/constants.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/event_based/events.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/event_based/events.ts new file mode 100644 index 0000000000000..662704bc59bc9 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/event_based/events.ts @@ -0,0 +1,700 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { EventTypeOpts } from '@kbn/core/server'; +import type { + ResponseActionAgentType, + ResponseActionStatus, + ResponseActionsApiCommandNames, +} from '../../../../common/endpoint/service/response_actions/constants'; +import type { BulkUpsertAssetCriticalityRecordsResponse } from '../../../../common/api/entity_analytics'; +import type { DataStreams, IlmPolicies, IlmsStats, IndicesStats } from '../indices.metadata.types'; + +export const RISK_SCORE_EXECUTION_SUCCESS_EVENT: EventTypeOpts<{ + scoresWritten: number; + taskDurationInSeconds: number; + interval: string; + alertSampleSizePerShard: number; +}> = { + eventType: 'risk_score_execution_success', + schema: { + scoresWritten: { + type: 'long', + _meta: { + description: 'Number of risk scores written during this scoring task execution', + }, + }, + taskDurationInSeconds: { + type: 'long', + _meta: { + description: 'Duration (in seconds) of the current risk scoring task execution', + }, + }, + interval: { + type: 'keyword', + _meta: { + description: `Configured interval for the current risk scoring task`, + }, + }, + alertSampleSizePerShard: { + type: 'long', + _meta: { + description: `Number of alerts to sample per shard for the current risk scoring task`, + }, + }, + }, +}; + +export const RISK_SCORE_EXECUTION_ERROR_EVENT: EventTypeOpts<{}> = { + eventType: 'risk_score_execution_error', + schema: {}, +}; + +export const RISK_SCORE_EXECUTION_CANCELLATION_EVENT: EventTypeOpts<{ + scoresWritten: number; + taskDurationInSeconds: number; + interval: string; + alertSampleSizePerShard: number; +}> = { + eventType: 'risk_score_execution_cancellation', + schema: { + scoresWritten: { + type: 'long', + _meta: { + description: 'Number of risk scores written during this scoring task execution', + }, + }, + taskDurationInSeconds: { + type: 'long', + _meta: { + description: 'Duration (in seconds) of the current risk scoring task execution', + }, + }, + interval: { + type: 'keyword', + _meta: { + description: `Configured interval for the current risk scoring task`, + }, + }, + alertSampleSizePerShard: { + type: 'long', + _meta: { + description: `Number of alerts to sample per shard for the current risk scoring task`, + }, + }, + }, +}; + +interface AssetCriticalitySystemProcessedAssignmentFileEvent { + processing: { + startTime: string; + endTime: string; + tookMs: number; + }; + result?: BulkUpsertAssetCriticalityRecordsResponse['stats']; + status: 'success' | 'partial_success' | 'fail'; +} + +export const ASSET_CRITICALITY_SYSTEM_PROCESSED_ASSIGNMENT_FILE_EVENT: EventTypeOpts = + { + eventType: 'Asset Criticality Csv Upload Processed', + schema: { + processing: { + properties: { + startTime: { type: 'date', _meta: { description: 'Processing start time' } }, + endTime: { type: 'date', _meta: { description: 'Processing end time' } }, + tookMs: { type: 'long', _meta: { description: 'How long processing took ms' } }, + }, + }, + result: { + properties: { + successful: { + type: 'long', + _meta: { description: 'Number of criticality records successfully created or updated' }, + }, + failed: { + type: 'long', + _meta: { description: 'Number of criticality records which had errors' }, + }, + total: { type: 'long', _meta: { description: 'Total number of lines in the file' } }, + }, + }, + status: { + type: 'keyword', + _meta: { description: 'Status of the processing either success, partial_success or fail' }, + }, + }, + }; + +export const FIELD_RETENTION_ENRICH_POLICY_EXECUTION_EVENT: EventTypeOpts<{ + duration: number; + interval: string; +}> = { + eventType: 'field_retention_enrich_policy_execution', + schema: { + duration: { + type: 'long', + _meta: { + description: 'Duration (in seconds) of the field retention enrich policy execution time', + }, + }, + interval: { + type: 'keyword', + _meta: { + description: 'Configured interval for the field retention enrich policy task', + }, + }, + }, +}; + +export const ENTITY_ENGINE_RESOURCE_INIT_FAILURE_EVENT: EventTypeOpts<{ + error: string; +}> = { + eventType: 'entity_engine_resource_init_failure', + schema: { + error: { + type: 'keyword', + _meta: { + description: 'Error message for a resource initialization failure', + }, + }, + }, +}; + +export const ENTITY_ENGINE_INITIALIZATION_EVENT: EventTypeOpts<{ + duration: number; +}> = { + eventType: 'entity_engine_initialization', + schema: { + duration: { + type: 'long', + _meta: { + description: 'Duration (in seconds) of the entity engine initialization', + }, + }, + }, +}; + +export const ENTITY_STORE_USAGE_EVENT: EventTypeOpts<{ + storeSize: number; +}> = { + eventType: 'entity_store_usage', + schema: { + storeSize: { + type: 'long', + _meta: { + description: 'Number of entities stored in the entity store', + }, + }, + }, +}; + +export const ALERT_SUPPRESSION_EVENT: EventTypeOpts<{ + suppressionAlertsCreated: number; + suppressionAlertsSuppressed: number; + suppressionRuleName: string; + suppressionDuration: number; + suppressionGroupByFieldsNumber: number; + suppressionGroupByFields: string[]; + suppressionRuleType: string; + suppressionMissingFields: boolean; + suppressionRuleId: string; +}> = { + eventType: 'alert_suppression_on_rule_execution', + schema: { + suppressionAlertsCreated: { + type: 'long', + _meta: { + description: + 'Number of alerts created during rule execution with configured alert suppression', + }, + }, + suppressionAlertsSuppressed: { + type: 'long', + _meta: { + description: + 'Number of alerts suppressed during rule execution with configured alert suppression', + }, + }, + suppressionRuleName: { + type: 'keyword', + _meta: { + description: 'Name of rule', + }, + }, + suppressionDuration: { + type: 'long', + _meta: { + description: 'Duration in seconds of suppression period. -1 for per rule execution config', + }, + }, + suppressionGroupByFieldsNumber: { + type: 'long', + _meta: { + description: 'Number of Suppress by fields', + }, + }, + suppressionGroupByFields: { + type: 'array', + items: { + type: 'keyword', + _meta: { + description: 'Tag attached to the element...', + optional: false, + }, + }, + _meta: { + description: 'List of tags attached to the element...', + optional: false, + }, + }, + suppressionRuleType: { + type: 'keyword', + _meta: { + description: 'Rule type', + }, + }, + suppressionMissingFields: { + type: 'boolean', + _meta: { + description: 'Suppression of missing fields enabled', + }, + }, + suppressionRuleId: { + type: 'keyword', + _meta: { + description: 'ruleId', + }, + }, + }, +}; + +export const TELEMETRY_DATA_STREAM_EVENT: EventTypeOpts = { + eventType: 'telemetry_data_stream_event', + schema: { + items: { + type: 'array', + items: { + properties: { + datastream_name: { + type: 'keyword', + _meta: { description: 'Name of the data stream' }, + }, + indices: { + type: 'array', + items: { + properties: { + index_name: { type: 'date', _meta: { description: 'Index name' } }, + ilm_policy: { type: 'date', _meta: { optional: true, description: 'ILM policy' } }, + }, + }, + _meta: { optional: true, description: 'Indices associated with the data stream' }, + }, + }, + }, + _meta: { description: 'Datastreams' }, + }, + }, +}; + +export const TELEMETRY_INDEX_STATS_EVENT: EventTypeOpts = { + eventType: 'telemetry_index_stats_event', + schema: { + items: { + type: 'array', + items: { + properties: { + index_name: { + type: 'keyword', + _meta: { description: 'The name of the index being monitored.' }, + }, + query_total: { + type: 'long', + _meta: { + optional: true, + description: 'The total number of search queries executed on the index.', + }, + }, + query_time_in_millis: { + type: 'long', + _meta: { + optional: true, + description: + 'The total time spent on query execution across all search requests, measured in milliseconds.', + }, + }, + docs_count: { + type: 'long', + _meta: { + optional: true, + description: 'The total number of documents currently stored in the index.', + }, + }, + docs_deleted: { + type: 'long', + _meta: { + optional: true, + description: + 'The total number of documents that have been marked as deleted in the index.', + }, + }, + docs_total_size_in_bytes: { + type: 'long', + _meta: { + optional: true, + description: + 'The total size, in bytes, of all documents stored in the index, including storage overhead.', + }, + }, + }, + }, + _meta: { description: 'Datastreams' }, + }, + }, +}; + +export const TELEMETRY_ILM_POLICY_EVENT: EventTypeOpts = { + eventType: 'telemetry_ilm_policy_event', + schema: { + items: { + type: 'array', + items: { + properties: { + policy_name: { + type: 'keyword', + _meta: { description: 'The name of the ILM policy.' }, + }, + modified_date: { + type: 'date', + _meta: { description: 'The date when the ILM policy was last modified.' }, + }, + phases: { + properties: { + cold: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "cold" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "cold" phase of the ILM policy, applied when data is infrequently accessed.', + }, + }, + delete: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "delete" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "delete" phase of the ILM policy, specifying when the index should be removed.', + }, + }, + frozen: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "frozen" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "frozen" phase of the ILM policy, where data is fully searchable but stored with a reduced resource footprint.', + }, + }, + hot: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "hot" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "hot" phase of the ILM policy, applied to actively written and queried data.', + }, + }, + warm: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "warm" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "warm" phase of the ILM policy, used for read-only data that is less frequently accessed.', + }, + }, + }, + _meta: { + description: + 'The different phases of the ILM policy that define how the index is managed over time.', + }, + }, + }, + }, + _meta: { description: 'Datastreams' }, + }, + }, +}; + +export const TELEMETRY_ILM_STATS_EVENT: EventTypeOpts = { + eventType: 'telemetry_ilm_stats_event', + schema: { + items: { + type: 'array', + items: { + properties: { + index_name: { + type: 'keyword', + _meta: { description: 'The name of the index currently managed by the ILM policy.' }, + }, + phase: { + type: 'keyword', + _meta: { + optional: true, + description: + 'The current phase of the ILM policy that the index is in (e.g., hot, warm, cold, frozen, or delete).', + }, + }, + age: { + type: 'text', + _meta: { + optional: true, + description: + 'The age of the index since its creation, indicating how long it has existed.', + }, + }, + policy_name: { + type: 'keyword', + _meta: { + optional: true, + description: 'The name of the ILM policy applied to this index.', + }, + }, + }, + }, + _meta: { description: 'Datastreams' }, + }, + }, +}; + +interface CreateAssetCriticalityProcessedFileEvent { + result?: BulkUpsertAssetCriticalityRecordsResponse['stats']; + startTime: Date; + endTime: Date; +} +export const createAssetCriticalityProcessedFileEvent = ({ + result, + startTime, + endTime, +}: CreateAssetCriticalityProcessedFileEvent): [ + string, + AssetCriticalitySystemProcessedAssignmentFileEvent +] => { + const status = getUploadStatus(result); + + const processing = { + startTime: startTime.toISOString(), + endTime: endTime.toISOString(), + tookMs: endTime.getTime() - startTime.getTime(), + }; + + return [ + ASSET_CRITICALITY_SYSTEM_PROCESSED_ASSIGNMENT_FILE_EVENT.eventType, + { + processing, + result, + status, + }, + ]; +}; + +const getUploadStatus = (stats?: BulkUpsertAssetCriticalityRecordsResponse['stats']) => { + if (!stats) { + return 'fail'; + } + + if (stats.failed === 0) { + return 'success'; + } + + if (stats.successful > 0) { + return 'partial_success'; + } + + return 'fail'; +}; + +export const ENDPOINT_RESPONSE_ACTION_SENT_ERROR_EVENT: EventTypeOpts<{ + responseActions: { + agentType: ResponseActionAgentType; + command: ResponseActionsApiCommandNames; + error: string; + }; +}> = { + eventType: 'endpoint_response_action_sent_error', + schema: { + responseActions: { + properties: { + agentType: { + type: 'keyword', + _meta: { + description: 'The type of agent that the action was sent to', + optional: false, + }, + }, + command: { + type: 'keyword', + _meta: { + description: 'The command that was sent to the endpoint', + optional: false, + }, + }, + error: { + type: 'text', + _meta: { + description: 'The error message for the response action', + }, + }, + }, + }, + }, +}; + +export const ENDPOINT_RESPONSE_ACTION_SENT_EVENT: EventTypeOpts<{ + responseActions: { + actionId: string; + agentType: ResponseActionAgentType; + command: ResponseActionsApiCommandNames; + isAutomated: boolean; + }; +}> = { + eventType: 'endpoint_response_action_sent', + schema: { + responseActions: { + properties: { + actionId: { + type: 'keyword', + _meta: { + description: 'The ID of the action that was sent to the endpoint', + optional: false, + }, + }, + agentType: { + type: 'keyword', + _meta: { + description: 'The type of agent that the action was sent to', + optional: false, + }, + }, + command: { + type: 'keyword', + _meta: { + description: 'The command that was sent to the endpoint', + optional: false, + }, + }, + isAutomated: { + type: 'boolean', + _meta: { + description: 'Whether the action was auto-initiated by a pre-configured rule', + optional: false, + }, + }, + }, + }, + }, +}; + +export const ENDPOINT_RESPONSE_ACTION_STATUS_CHANGE_EVENT: EventTypeOpts<{ + responseActions: { + actionId: string; + agentType: ResponseActionAgentType; + actionStatus: ResponseActionStatus; + command: ResponseActionsApiCommandNames; + }; +}> = { + eventType: 'endpoint_response_action_status_change_event', + schema: { + responseActions: { + properties: { + actionId: { + type: 'keyword', + _meta: { + description: 'The ID of the action that was sent to the endpoint', + optional: false, + }, + }, + agentType: { + type: 'keyword', + _meta: { + description: 'The type of agent that the action was sent to', + optional: false, + }, + }, + actionStatus: { + type: 'keyword', + _meta: { + description: 'The status of the action', + optional: false, + }, + }, + command: { + type: 'keyword', + _meta: { + description: 'The command that was sent to the endpoint', + optional: false, + }, + }, + }, + }, + }, +}; + +export const events = [ + RISK_SCORE_EXECUTION_SUCCESS_EVENT, + RISK_SCORE_EXECUTION_ERROR_EVENT, + RISK_SCORE_EXECUTION_CANCELLATION_EVENT, + ASSET_CRITICALITY_SYSTEM_PROCESSED_ASSIGNMENT_FILE_EVENT, + ALERT_SUPPRESSION_EVENT, + ENDPOINT_RESPONSE_ACTION_SENT_EVENT, + ENDPOINT_RESPONSE_ACTION_SENT_ERROR_EVENT, + ENDPOINT_RESPONSE_ACTION_STATUS_CHANGE_EVENT, + FIELD_RETENTION_ENRICH_POLICY_EXECUTION_EVENT, + ENTITY_ENGINE_RESOURCE_INIT_FAILURE_EVENT, + ENTITY_ENGINE_INITIALIZATION_EVENT, + ENTITY_STORE_USAGE_EVENT, + TELEMETRY_DATA_STREAM_EVENT, + TELEMETRY_ILM_POLICY_EVENT, + TELEMETRY_ILM_STATS_EVENT, + TELEMETRY_INDEX_STATS_EVENT, +]; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/endpoint_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/endpoint_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/filterlists/endpoint_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/endpoint_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/exception_lists.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/exception_lists.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/filterlists/exception_lists.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/exception_lists.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/filterlists/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/filterlists/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/prebuilt_rules_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/prebuilt_rules_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/filterlists/prebuilt_rules_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/prebuilt_rules_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/filterlists/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/filterlists/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/filterlists/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/helpers.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/indices.metadata.types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/indices.metadata.types.ts new file mode 100644 index 0000000000000..fe669c6693d2a --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/indices.metadata.types.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DateTime } from '@elastic/elasticsearch/lib/api/types'; +import type { Nullable } from './types'; + +export interface IlmPolicies { + items: IlmPolicy[]; +} + +export interface IlmPolicy { + policy_name: string; + modified_date: DateTime; + phases: IlmPhases; +} + +export interface IlmPhases { + cold: Nullable; + delete: Nullable; + frozen: Nullable; + hot: Nullable; + warm: Nullable; +} + +export interface IlmPhase { + min_age: string; +} + +export interface IlmsStats { + items: IlmStats[]; +} + +export interface IlmStats { + index_name: string; + phase?: string; + age?: string; + policy_name?: string; +} + +export interface IndicesStats { + items: IndexStats[]; +} + +export interface IndexStats { + index_name: string; + query_total?: number; + query_time_in_millis?: number; + docs_count?: number; + docs_deleted?: number; + docs_total_size_in_bytes?: number; +} + +export interface Index { + index_name: string; + ilm_policy?: string; +} + +export interface DataStreams { + items: DataStream[]; +} +export interface DataStream { + datastream_name: string; + indices?: Index[]; +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/insights/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/insights/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/insights/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/insights/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/insights/insights.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/insights/insights.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/insights/insights.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/insights/insights.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/preview_sender.ts similarity index 91% rename from x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/preview_sender.ts index fc195098787dd..66161274fe45c 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/preview_sender.ts @@ -7,7 +7,7 @@ import type { AxiosInstance, AxiosResponse } from 'axios'; import axios, { AxiosHeaders } from 'axios'; -import type { Logger } from '@kbn/core/server'; +import type { EventTypeOpts, Logger } from '@kbn/core/server'; import type { TelemetryPluginStart, TelemetryPluginSetup } from '@kbn/telemetry-plugin/server'; import type { UsageCounter } from '@kbn/usage-collection-plugin/server'; @@ -37,6 +37,9 @@ export class PreviewTelemetryEventsSender implements ITelemetryEventsSender { /** Last sent message */ private sentMessages: string[] = []; + /** Last sent EBT events */ + private ebtEventsSent: Array<{ eventType: string; eventData: object }> = []; + /** Logger for this class */ private logger: Logger; @@ -87,6 +90,10 @@ export class PreviewTelemetryEventsSender implements ITelemetryEventsSender { return this.sentMessages; } + public getEbtEventsSent(): Array<{ eventType: string; eventData: object }> { + return this.ebtEventsSent; + } + public setup( telemetryReceiver: ITelemetryReceiver, telemetrySetup?: TelemetryPluginSetup, @@ -174,4 +181,12 @@ export class PreviewTelemetryEventsSender implements ITelemetryEventsSender { public updateDefaultQueueConfig(config: QueueConfig): void { this.composite.updateDefaultQueueConfig(config); } + + public reportEBT(eventTypeOpts: EventTypeOpts, eventData: T): void { + this.ebtEventsSent.push({ + eventType: eventTypeOpts.eventType, + eventData: eventData as object, + }); + this.composite.reportEBT(eventTypeOpts, eventData); + } } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/preview_task_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/preview_task_metrics.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/preview_task_metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/preview_task_metrics.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/receiver.ts similarity index 83% rename from x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/receiver.ts index 4d2ff971eeb62..db023a593f14b 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/receiver.ts @@ -18,6 +18,7 @@ import type { } from '@kbn/core/server'; import type { AggregationsAggregate, + IlmExplainLifecycleRequest, OpenPointInTimeResponse, SearchRequest, SearchResponse, @@ -38,6 +39,10 @@ import type { SearchHit, SearchRequest as ESSearchRequest, SortResults, + IndicesGetDataStreamRequest, + IndicesStatsRequest, + IlmGetLifecycleRequest, + IndicesGetRequest, } from '@elastic/elasticsearch/lib/api/types'; import type { TransportResult } from '@elastic/elasticsearch'; import type { AgentPolicy, Installation } from '@kbn/fleet-plugin/common'; @@ -87,6 +92,16 @@ import { telemetryConfiguration } from './configuration'; import { ENDPOINT_METRICS_INDEX } from '../../../common/constants'; import { PREBUILT_RULES_PACKAGE_NAME } from '../../../common/detection_engine/constants'; import type { TelemetryLogger } from './telemetry_logger'; +import type { + DataStream, + IlmPhase, + IlmPhases, + IlmPolicy, + IlmStats, + Index, + IndexStats, +} from './indices.metadata.types'; +import { chunkStringsByMaxLength } from './collections_helpers'; export interface ITelemetryReceiver { start( @@ -238,6 +253,12 @@ export interface ITelemetryReceiver { setMaxPageSizeBytes(bytes: number): void; setNumDocsToSample(n: number): void; + + getIndices(): Promise; + getDataStreams(): Promise; + getIndicesStats(indices: string[]): AsyncGenerator; + getIlmsStats(indices: string[]): AsyncGenerator; + getIlmsPolicies(ilms: string[]): AsyncGenerator; } export class TelemetryReceiver implements ITelemetryReceiver { @@ -532,7 +553,6 @@ export class TelemetryReceiver implements ITelemetryReceiver { const buckets = endpointMetadataResponse?.aggregations?.endpoint_metadata?.buckets ?? []; return buckets.reduce((cache, endpointAgentId) => { - // const id = endpointAgentId.latest_metadata.hits.hits[0]._id; const doc = endpointAgentId.latest_metadata.hits.hits[0]._source; cache.set(endpointAgentId.key, doc); return cache; @@ -541,7 +561,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { } public async *fetchDiagnosticAlertsBatch(executeFrom: string, executeTo: string) { - this.logger.debug('Searching diagnostic alerts', { + this.logger.l('Searching diagnostic alerts', { from: executeFrom, to: executeTo, } as LogMeta); @@ -585,10 +605,10 @@ export class TelemetryReceiver implements ITelemetryReceiver { fetchMore = false; } - this.logger.debug('Diagnostic alerts to return', { numOfHits } as LogMeta); + this.logger.l('Diagnostic alerts to return', { numOfHits } as LogMeta); fetchMore = numOfHits > 0 && numOfHits < telemetryConfiguration.telemetry_max_buffer_size; } catch (e) { - this.logger.l('Error fetching alerts', { error: JSON.stringify(e) }); + this.logger.warn('Error fetching alerts', { error_message: e.message } as LogMeta); fetchMore = false; } @@ -761,7 +781,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { executeFrom: string, executeTo: string ) { - this.logger.debug('Searching prebuilt rule alerts from', { + this.logger.l('Searching prebuilt rule alerts from', { executeFrom, executeTo, } as LogMeta); @@ -899,14 +919,14 @@ export class TelemetryReceiver implements ITelemetryReceiver { pitId = response?.pit_id; } - this.logger.debug('Prebuilt rule alerts to return', { alerts: alerts.length } as LogMeta); + this.logger.l('Prebuilt rule alerts to return', { alerts: alerts.length } as LogMeta); yield alerts; } } catch (e) { // to keep backward compatibility with the previous implementation, silent return // once we start using `paginate` this error should be managed downstream - this.logger.l('Error fetching alerts', { error: JSON.stringify(e) }); + this.logger.warn('Error fetching alerts', { error_message: e.message } as LogMeta); return; } finally { await this.closePointInTime(pitId); @@ -930,10 +950,10 @@ export class TelemetryReceiver implements ITelemetryReceiver { try { await this.esClient().closePointInTime({ id: pitId }); } catch (error) { - this.logger.l('Error trying to close point in time', { + this.logger.warn('Error trying to close point in time', { pit: pitId, - error: JSON.stringify(error), - }); + error_message: error.message, + } as LogMeta); } } @@ -1019,7 +1039,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { fetchMore = numOfHits > 0; } catch (e) { - this.logger.l('Error fetching alerts', { error: JSON.stringify(e) }); + this.logger.warn('Error fetching alerts', { error_message: e.message } as LogMeta); fetchMore = false; } @@ -1034,11 +1054,11 @@ export class TelemetryReceiver implements ITelemetryReceiver { try { await this.esClient().closePointInTime({ id: pitId }); } catch (error) { - this.logger.l('Error trying to close point in time', { + this.logger.warn('Error trying to close point in time', { pit: pitId, - error: JSON.stringify(error), + error_message: error.message, keepAlive, - }); + } as LogMeta); } this.logger.l('Timeline alerts to return', { alerts: alertsToReturn.length }); @@ -1232,7 +1252,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { return ret.license; } catch (err) { - this.logger.l('failed retrieving license', { error: JSON.stringify(err) }); + this.logger.warn('failed retrieving license', { error_message: err.message } as LogMeta); return undefined; } } @@ -1293,7 +1313,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { yield data; } while (esQuery.search_after !== undefined); } catch (e) { - this.logger.l('Error running paginated query', { error: JSON.stringify(e) }); + this.logger.warn('Error running paginated query', { error_message: e.message } as LogMeta); throw e; } finally { await this.closePointInTime(pit.id); @@ -1320,4 +1340,198 @@ export class TelemetryReceiver implements ITelemetryReceiver { } return this._esClient; } + + public async getIndices(): Promise { + const es = this.esClient(); + + this.logger.l('Fetching indices'); + + const request: IndicesGetRequest = { + index: '*', + expand_wildcards: ['open', 'hidden'], + filter_path: ['*.settings.index.provided_name'], + }; + + return es.indices + .get(request) + .then((indices) => Array.from(Object.keys(indices))) + .catch((error) => { + this.logger.warn('Error fetching indices', { error_message: error } as LogMeta); + throw error; + }); + } + + public async getDataStreams(): Promise { + const es = this.esClient(); + + this.logger.l('Fetching datstreams'); + + const request: IndicesGetDataStreamRequest = { + name: '*', + expand_wildcards: ['open', 'hidden'], + filter_path: ['data_streams.name', 'data_streams.indices'], + }; + + return es.indices + .getDataStream(request) + .then((response) => + response.data_streams.map((ds) => { + return { + datastream_name: ds.name, + indices: + ds.indices?.map((index) => { + return { + index_name: index.index_name, + ilm_policy: index.ilm_policy, + } as Index; + }) ?? [], + } as DataStream; + }) + ) + .catch((error) => { + this.logger.warn('Error fetching datastreams', { error_message: error } as LogMeta); + throw error; + }); + } + + public async *getIndicesStats(indices: string[]) { + const es = this.esClient(); + + this.logger.l('Fetching indices stats'); + + const groupedIndices = chunkStringsByMaxLength(indices); + + this.logger.l('Splitted indices into groups', { + groups: groupedIndices.length, + indices: indices.length, + } as LogMeta); + + for (const group of groupedIndices) { + const request: IndicesStatsRequest = { + index: group, + level: 'indices', + metric: ['docs', 'search', 'store'], + expand_wildcards: ['open', 'hidden'], + filter_path: [ + 'indices.*.total.search.query_total', + 'indices.*.total.search.query_time_in_millis', + 'indices.*.total.docs.count', + 'indices.*.total.docs.deleted', + 'indices.*.total.store.size_in_bytes', + ], + }; + + try { + const response = await es.indices.stats(request); + for (const [indexName, stats] of Object.entries(response.indices ?? {})) { + yield { + index_name: indexName, + query_total: stats.total?.search?.query_total, + query_time_in_millis: stats.total?.search?.query_time_in_millis, + docs_count: stats.total?.docs?.count, + docs_deleted: stats.total?.docs?.deleted, + docs_total_size_in_bytes: stats.total?.store?.size_in_bytes, + } as IndexStats; + } + } catch (error) { + this.logger.warn('Error fetching indices stats', { error_message: error } as LogMeta); + throw error; + } + } + } + + public async *getIlmsStats(indices: string[]) { + const es = this.esClient(); + + const groupedIndices = chunkStringsByMaxLength(indices); + + this.logger.l('Splitted ilms into groups', { + groups: groupedIndices.length, + indices: indices.length, + } as LogMeta); + + for (const group of groupedIndices) { + const request: IlmExplainLifecycleRequest = { + index: group.join(','), + only_managed: false, + filter_path: ['indices.*.phase', 'indices.*.age', 'indices.*.policy'], + }; + + const data = await es.ilm.explainLifecycle(request); + + try { + for (const [indexName, stats] of Object.entries(data.indices ?? {})) { + const entry = { + index_name: indexName, + phase: ('phase' in stats && stats.phase) || undefined, + age: ('age' in stats && stats.age) || undefined, + policy_name: ('policy' in stats && stats.policy) || undefined, + } as IlmStats; + + yield entry; + } + } catch (error) { + this.logger.warn('Error fetching ilm stats', { error_message: error } as LogMeta); + throw error; + } + } + } + + public async *getIlmsPolicies(ilms: string[]) { + const es = this.esClient(); + + const phase = (obj: unknown): Nullable => { + let value: Nullable; + if (obj !== null && obj !== undefined && typeof obj === 'object' && 'min_age' in obj) { + value = { + min_age: obj.min_age, + } as IlmPhase; + } + return value; + }; + + const groupedIlms = chunkStringsByMaxLength(ilms); + + this.logger.l('Splitted ilms into groups', { + groups: groupedIlms.length, + ilms: ilms.length, + } as LogMeta); + + for (const group of groupedIlms) { + this.logger.l('Fetching ilm policies'); + const request: IlmGetLifecycleRequest = { + name: group.join(','), + filter_path: [ + '*.policy.phases.cold.min_age', + '*.policy.phases.delete.min_age', + '*.policy.phases.frozen.min_age', + '*.policy.phases.hot.min_age', + '*.policy.phases.warm.min_age', + '*.modified_date', + ], + }; + + const response = await es.ilm.getLifecycle(request); + try { + for (const [policyName, stats] of Object.entries(response ?? {})) { + yield { + policy_name: policyName, + modified_date: stats.modified_date, + phases: { + cold: phase(stats.policy.phases.cold), + delete: phase(stats.policy.phases.delete), + frozen: phase(stats.policy.phases.frozen), + hot: phase(stats.policy.phases.hot), + warm: phase(stats.policy.phases.warm), + } as IlmPhases, + } as IlmPolicy; + } + } catch (error) { + this.logger.warn('Error fetching ilm policies', { + error_message: error.message, + } as LogMeta); + throw error; + } + } + } } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/rxjs_helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/rxjs_helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/rxjs_helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/rxjs_helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/rxjs_helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/rxjs_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/rxjs_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/rxjs_helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender.ts new file mode 100644 index 0000000000000..8e99a9e12981c --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender.ts @@ -0,0 +1,519 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { cloneDeep } from 'lodash'; +import { URL } from 'url'; +import { transformDataToNdjson } from '@kbn/securitysolution-utils'; + +import type { EventTypeOpts, Logger, LogMeta } from '@kbn/core/server'; +import type { TelemetryPluginStart, TelemetryPluginSetup } from '@kbn/telemetry-plugin/server'; +import type { UsageCounter } from '@kbn/usage-collection-plugin/server'; +import type { AxiosInstance } from 'axios'; +import axios from 'axios'; +import type { + TaskManagerSetupContract, + TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server'; +import { exhaustMap, Subject, takeUntil, timer } from 'rxjs'; +import type { ITelemetryReceiver } from './receiver'; +import { copyAllowlistedFields, filterList } from './filterlists'; +import { createTelemetryTaskConfigs } from './tasks'; +import { copyLicenseFields, createUsageCounterLabel, newTelemetryLogger } from './helpers'; +import { type TelemetryLogger } from './telemetry_logger'; +import type { TelemetryChannel, TelemetryEvent } from './types'; +import type { SecurityTelemetryTaskConfig } from './task'; +import { SecurityTelemetryTask } from './task'; +import { telemetryConfiguration } from './configuration'; +import type { IAsyncTelemetryEventsSender, QueueConfig } from './async_sender.types'; +import { TaskMetricsService } from './task_metrics'; + +const usageLabelPrefix: string[] = ['security_telemetry', 'sender']; + +export interface ITelemetryEventsSender { + setup( + telemetryReceiver: ITelemetryReceiver, + telemetrySetup?: TelemetryPluginSetup, + taskManager?: TaskManagerSetupContract, + telemetryUsageCounter?: UsageCounter, + asyncTelemetrySender?: IAsyncTelemetryEventsSender + ): void; + + getTelemetryUsageCluster(): UsageCounter | undefined; + getClusterID(): string | undefined; + + start( + telemetryStart?: TelemetryPluginStart, + taskManager?: TaskManagerStartContract, + receiver?: ITelemetryReceiver + ): void; + + stop(): void; + /** + * @deprecated Use `sendAsync` instead. + */ + queueTelemetryEvents(events: TelemetryEvent[]): void; + isTelemetryOptedIn(): Promise; + isTelemetryServicesReachable(): Promise; + sendIfDue(axiosInstance?: AxiosInstance): Promise; + processEvents(events: TelemetryEvent[]): TelemetryEvent[]; + sendOnDemand(channel: string, toSend: unknown[], axiosInstance?: AxiosInstance): Promise; + getV3UrlFromV2(v2url: string, channel: string): string; + + // As a transition to the new sender, `IAsyncTelemetryEventsSender`, we wrap + // its "public API" here to expose a single Sender interface to the rest + // of the code. The `queueTelemetryEvents` is deprecated in favor of + // `sendAsync`. + + /** + * Sends events to a given telemetry channel asynchronously. + */ + sendAsync: (channel: TelemetryChannel, events: unknown[]) => void; + + /** + * Simulates sending events to a given telemetry channel asynchronously + * and returns the request that should be sent to the server + */ + simulateSendAsync: (channel: TelemetryChannel, events: unknown[]) => string[]; + + /** + * Updates the queue configuration for a given channel. + */ + updateQueueConfig: (channel: TelemetryChannel, config: QueueConfig) => void; + + /** + * Updates the default queue configuration. + */ + updateDefaultQueueConfig: (config: QueueConfig) => void; + + /** + * Reports EBT events + */ + reportEBT: (eventTypeOpts: EventTypeOpts, eventData: T) => void; +} + +export class TelemetryEventsSender implements ITelemetryEventsSender { + private readonly initialCheckDelayMs = 10 * 1000; + private readonly checkIntervalMs = 60 * 1000; + private readonly logger: TelemetryLogger; + private readonly stop$ = new Subject(); + private maxQueueSize = telemetryConfiguration.telemetry_max_buffer_size; + private telemetryStart?: TelemetryPluginStart; + private telemetrySetup?: TelemetryPluginSetup; + private isSending = false; + private receiver: ITelemetryReceiver | undefined; + private queue: TelemetryEvent[] = []; + + // Assume both true until the first check + private isOptedIn?: boolean = true; + private isElasticTelemetryReachable?: boolean = true; + + private telemetryUsageCounter?: UsageCounter; + private telemetryTasks?: SecurityTelemetryTask[]; + + private asyncTelemetrySender?: IAsyncTelemetryEventsSender; + + constructor(logger: Logger) { + this.logger = newTelemetryLogger(logger.get('telemetry_events.sender')); + } + + public setup( + telemetryReceiver: ITelemetryReceiver, + telemetrySetup?: TelemetryPluginSetup, + taskManager?: TaskManagerSetupContract, + telemetryUsageCounter?: UsageCounter, + asyncTelemetrySender?: IAsyncTelemetryEventsSender + ) { + this.telemetrySetup = telemetrySetup; + this.telemetryUsageCounter = telemetryUsageCounter; + if (taskManager) { + const taskMetricsService = new TaskMetricsService(this.logger, this); + this.telemetryTasks = createTelemetryTaskConfigs().map( + (config: SecurityTelemetryTaskConfig) => { + const task = new SecurityTelemetryTask( + config, + this.logger, + this, + telemetryReceiver, + taskMetricsService + ); + task.register(taskManager); + return task; + } + ); + } + this.asyncTelemetrySender = asyncTelemetrySender; + } + + public getTelemetryUsageCluster(): UsageCounter | undefined { + return this.telemetryUsageCounter; + } + + public getClusterID(): string | undefined { + return this.receiver?.getClusterInfo()?.cluster_uuid; + } + + public start( + telemetryStart?: TelemetryPluginStart, + taskManager?: TaskManagerStartContract, + receiver?: ITelemetryReceiver + ) { + this.telemetryStart = telemetryStart; + this.receiver = receiver; + if (taskManager && this.telemetryTasks) { + this.logger.l('Starting security telemetry tasks'); + this.telemetryTasks.forEach((task) => task.start(taskManager)); + } + + this.logger.l('Starting local task'); + timer(this.initialCheckDelayMs, this.checkIntervalMs) + .pipe( + takeUntil(this.stop$), + exhaustMap(() => this.sendIfDue()) + ) + .subscribe(); + } + + public stop() { + this.stop$.next(); + } + + public queueTelemetryEvents(events: TelemetryEvent[]) { + const qlength = this.queue.length; + this.logger.debug('Enqueuing events', { + queue_length: qlength, + events: events.length, + } as LogMeta); + if (events.length === 0) { + this.logger.l('No events to queue'); + return; + } + + if (qlength >= this.maxQueueSize) { + // we're full already + this.logger.l('Queue length is greater than max queue size'); + return; + } + if (events.length > this.maxQueueSize - qlength) { + this.logger.l('Events exceed remaining queue size', { + max_queue_size: this.maxQueueSize, + queue_length: qlength, + }); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['queue_stats'])), + counterType: 'docs_lost', + incrementBy: events.length, + }); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['queue_stats'])), + counterType: 'num_capacity_exceeded', + incrementBy: 1, + }); + this.queue.push(...this.processEvents(events.slice(0, this.maxQueueSize - qlength))); + } else { + this.logger.debug('Events fit within queue size'); + this.queue.push(...this.processEvents(events)); + } + } + + public async isTelemetryOptedIn() { + this.isOptedIn = await this.telemetryStart?.getIsOptedIn(); + return this.isOptedIn === true; + } + + /** + * Issue: https://github.com/elastic/kibana/issues/133321 + * + * As of 8.3 - Telemetry is opted in by default, but the Kibana instance may + * be deployed in a network where outbound connections are restricted. This + * causes hanging connections in backend telemetry code. A previous bugfix + * included a default timeout for the client, but this code shouldn't be + * reachable if we cannot connect to Elastic Telemetry Services. This + * function call can be utilized to check if the Kibana instance can + * call out. + * + * Please note that this function should be used with care. DO NOT call this + * function in a way that does not take into consideration if the deployment + * opted out of telemetry. For example, + * + * DO NOT + * -------- + * + * if (isTelemetryServicesReachable() && isTelemetryOptedIn()) { + * ... + * } + * + * DO + * -------- + * + * if (isTelemetryOptedIn() && isTelemetryServicesReachable()) { + * ... + * } + * + * Is ok because the call to `isTelemetryServicesReachable()` is never called + * because `isTelemetryOptedIn()` short-circuits the conditional. + * + * DO NOT + * -------- + * + * const [optedIn, isReachable] = await Promise.all([ + * isTelemetryOptedIn(), + * isTelemetryServicesReachable(), + * ]); + * + * As it does not take into consideration the execution order and makes a redundant + * network call to Elastic Telemetry Services. + * + * Staging URL: https://telemetry-staging.elastic.co/ping + * Production URL: https://telemetry.elastic.co/ping + */ + public async isTelemetryServicesReachable() { + try { + const telemetryUrl = await this.fetchTelemetryPingUrl(); + const resp = await axios.get(telemetryUrl, { timeout: 3000 }); + if (resp.status === 200) { + this.logger.debug('Elastic telemetry services are reachable'); + return true; + } + + return false; + } catch (e) { + this.logger.warn('Error pinging telemetry services', { + error: e.message, + } as LogMeta); + + return false; + } + } + + public async sendIfDue(axiosInstance: AxiosInstance = axios) { + if (this.isSending) { + return; + } + + if (this.queue.length === 0) { + return; + } + + try { + this.isSending = true; + + this.isOptedIn = await this.isTelemetryOptedIn(); + if (!this.isOptedIn) { + this.logger.l('Telemetry is not opted-in.'); + this.queue = []; + this.isSending = false; + return; + } + + this.isElasticTelemetryReachable = await this.isTelemetryServicesReachable(); + if (!this.isElasticTelemetryReachable) { + this.logger.l('Telemetry Services are not reachable.'); + this.queue = []; + this.isSending = false; + return; + } + + const clusterInfo = this.receiver?.getClusterInfo(); + + const [telemetryUrl, licenseInfo] = await Promise.all([ + this.fetchTelemetryUrl('alerts-endpoint'), + this.receiver?.fetchLicenseInfo(), + ]); + + this.logger.debug('Telemetry URL', { + url: telemetryUrl, + } as LogMeta); + + const toSend: TelemetryEvent[] = cloneDeep(this.queue).map((event) => ({ + ...event, + ...(licenseInfo ? { license: copyLicenseFields(licenseInfo) } : {}), + cluster_uuid: clusterInfo?.cluster_uuid, + cluster_name: clusterInfo?.cluster_name, + })); + this.queue = []; + + await this.sendEvents( + toSend, + telemetryUrl, + 'alerts-endpoint', + clusterInfo?.cluster_uuid, + clusterInfo?.cluster_name, + clusterInfo?.version?.number, + licenseInfo?.uid, + axiosInstance + ); + } catch (err) { + this.logger.warn(`Error sending telemetry events data: ${err}`); + this.queue = []; + } + this.isSending = false; + } + + public processEvents(events: TelemetryEvent[]): TelemetryEvent[] { + return events.map(function (obj: TelemetryEvent): TelemetryEvent { + return copyAllowlistedFields(filterList.endpointAlerts, obj); + }); + } + + /** + * This function sends events to the elastic telemetry channel. Caution is required + * because it does no allowlist filtering at send time. The function call site is + * responsible for ensuring sure no sensitive material is in telemetry events. + * + * @param channel the elastic telemetry channel + * @param toSend telemetry events + */ + public async sendOnDemand( + channel: string, + toSend: unknown[], + axiosInstance: AxiosInstance = axios + ) { + const clusterInfo = this.receiver?.getClusterInfo(); + try { + const [telemetryUrl, licenseInfo] = await Promise.all([ + this.fetchTelemetryUrl(channel), + this.receiver?.fetchLicenseInfo(), + ]); + + this.logger.l('Telemetry URL', { + url: telemetryUrl, + }); + + await this.sendEvents( + toSend, + telemetryUrl, + channel, + clusterInfo?.cluster_uuid, + clusterInfo?.cluster_name, + clusterInfo?.version?.number, + licenseInfo?.uid, + axiosInstance + ); + } catch (err) { + this.logger.warn(`Error sending telemetry events data: ${err}`); + } + } + + private async fetchTelemetryUrl(channel: string): Promise { + const telemetryUrl = await this.telemetrySetup?.getTelemetryUrl(); + if (!telemetryUrl) { + throw Error("Couldn't get telemetry URL"); + } + return this.getV3UrlFromV2(telemetryUrl.toString(), channel); + } + + // Forms URLs like: + // https://telemetry.elastic.co/v3/send/my-channel-name or + // https://telemetry-staging.elastic.co/v3-dev/send/my-channel-name + public getV3UrlFromV2(v2url: string, channel: string): string { + const url = new URL(v2url); + if (!url.hostname.includes('staging')) { + url.pathname = `/v3/send/${channel}`; + } else { + url.pathname = `/v3-dev/send/${channel}`; + } + return url.toString(); + } + + public sendAsync(channel: TelemetryChannel, events: unknown[]): void { + this.getAsyncTelemetrySender().send(channel, events); + } + + public simulateSendAsync(channel: TelemetryChannel, events: unknown[]): string[] { + return this.getAsyncTelemetrySender().simulateSend(channel, events); + } + + public updateQueueConfig(channel: TelemetryChannel, config: QueueConfig): void { + this.getAsyncTelemetrySender().updateQueueConfig(channel, config); + } + + public updateDefaultQueueConfig(config: QueueConfig): void { + this.getAsyncTelemetrySender().updateDefaultQueueConfig(config); + } + + public reportEBT(eventTypeOpts: EventTypeOpts, eventData: T): void { + this.getAsyncTelemetrySender().reportEBT(eventTypeOpts, eventData); + } + + private getAsyncTelemetrySender(): IAsyncTelemetryEventsSender { + if (!this.asyncTelemetrySender) { + throw new Error('Telemetry Sender V2 not initialized'); + } + return this.asyncTelemetrySender; + } + + private async fetchTelemetryPingUrl(): Promise { + const telemetryUrl = await this.telemetrySetup?.getTelemetryUrl(); + if (!telemetryUrl) { + throw Error("Couldn't get telemetry URL"); + } + + telemetryUrl.pathname = `/ping`; + return telemetryUrl.toString(); + } + + private async sendEvents( + events: unknown[], + telemetryUrl: string, + channel: string, + clusterUuid: string | undefined, + clusterName: string | undefined, + clusterVersionNumber: string | undefined, + licenseId: string | undefined, + axiosInstance: AxiosInstance = axios + ) { + const ndjson = transformDataToNdjson(events); + + try { + this.logger.debug('Sending telemetry events', { + events: events.length, + channel, + } as LogMeta); + const resp = await axiosInstance.post(telemetryUrl, ndjson, { + headers: { + 'Content-Type': 'application/x-ndjson', + ...(clusterUuid ? { 'X-Elastic-Cluster-ID': clusterUuid } : undefined), + ...(clusterName ? { 'X-Elastic-Cluster-Name': clusterName } : undefined), + 'X-Elastic-Stack-Version': clusterVersionNumber ? clusterVersionNumber : '8.0.0', + ...(licenseId ? { 'X-Elastic-License-ID': licenseId } : {}), + }, + timeout: 10000, + }); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), + counterType: resp.status.toString(), + incrementBy: 1, + }); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), + counterType: 'docs_sent', + incrementBy: events.length, + }); + this.logger.l('Events sent!. Response', { status: resp.status }); + } catch (err) { + this.logger.l('Error sending events', { error: JSON.stringify(err) }); + const errorStatus = err?.response?.status; + if (errorStatus !== undefined && errorStatus !== null) { + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), + counterType: errorStatus.toString(), + incrementBy: 1, + }); + } + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), + counterType: 'docs_lost', + incrementBy: events.length, + }); + this.telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(usageLabelPrefix.concat(['payloads', channel])), + counterType: 'num_exceptions', + incrementBy: 1, + }); + } + } +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/sender_helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/sender_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/sender_helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task.test.ts similarity index 98% rename from x-pack/plugins/security_solution/server/lib/telemetry/task.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task.test.ts index 91cb7d881d4c9..7efb2ea1297a6 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/task.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task.test.ts @@ -16,6 +16,7 @@ import { createMockTaskMetrics, createMockSecurityTelemetryTask, } from './__mocks__'; +import { newTelemetryLogger } from './helpers'; describe('test security telemetry task', () => { let logger: ReturnType; @@ -66,7 +67,7 @@ describe('test security telemetry task', () => { expect(mockTelemetryTaskConfig.runTask).toHaveBeenCalledWith( telemetryTask.getTaskId(), - logger, + newTelemetryLogger(logger.get('task')), mockTelemetryReceiver, mockTelemetryEventsSender, mockTaskMetrics, diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task.ts similarity index 85% rename from x-pack/plugins/security_solution/server/lib/telemetry/task.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task.ts index 62d827930e6a9..55c83243adcbc 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/task.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task.ts @@ -6,7 +6,7 @@ */ import moment from 'moment'; -import type { Logger } from '@kbn/core/server'; +import type { Logger, LogMeta } from '@kbn/core/server'; import type { ConcreteTaskInstance, TaskManagerSetupContract, @@ -15,8 +15,9 @@ import type { import type { ITelemetryReceiver } from './receiver'; import type { ITelemetryEventsSender } from './sender'; import type { ITaskMetricsService } from './task_metrics.types'; -import { tlog } from './helpers'; import { stateSchemaByVersion, emptyState, type LatestTaskStateSchema } from './task_state'; +import { newTelemetryLogger } from './helpers'; +import { type TelemetryLogger } from './telemetry_logger'; export interface SecurityTelemetryTaskConfig { type: string; @@ -49,7 +50,7 @@ export type LastExecutionTimestampCalculator = ( export class SecurityTelemetryTask { private readonly config: SecurityTelemetryTaskConfig; - private readonly logger: Logger; + private readonly logger: TelemetryLogger; private readonly sender: ITelemetryEventsSender; private readonly receiver: ITelemetryReceiver; private readonly taskMetricsService: ITaskMetricsService; @@ -62,7 +63,7 @@ export class SecurityTelemetryTask { taskMetricsService: ITaskMetricsService ) { this.config = config; - this.logger = logger; + this.logger = newTelemetryLogger(logger.get('task')); this.sender = sender; this.receiver = receiver; this.taskMetricsService = taskMetricsService; @@ -122,7 +123,7 @@ export class SecurityTelemetryTask { public start = async (taskManager: TaskManagerStartContract) => { const taskId = this.getTaskId(); - tlog(this.logger, `[task ${taskId}]: attempting to schedule`); + this.logger.debug('Attempting to schedule task', { taskId } as LogMeta); try { await taskManager.ensureScheduled({ id: taskId, @@ -135,30 +136,32 @@ export class SecurityTelemetryTask { params: { version: this.config.version }, }); } catch (e) { - this.logger.error(`[task ${taskId}]: error scheduling task, received ${e.message}`); + this.logger.error('Error scheduling task', { + error: e.message, + } as LogMeta); } }; public runTask = async (taskId: string, executionPeriod: TaskExecutionPeriod) => { - tlog(this.logger, `[task ${taskId}]: attempting to run`); + this.logger.debug('Attempting to run', { taskId } as LogMeta); if (taskId !== this.getTaskId()) { - tlog(this.logger, `[task ${taskId}]: outdated task`); + this.logger.info('outdated task', { taskId } as LogMeta); return 0; } const isOptedIn = await this.sender.isTelemetryOptedIn(); if (!isOptedIn) { - tlog(this.logger, `[task ${taskId}]: telemetry is not opted-in`); + this.logger.info('Telemetry is not opted-in', { taskId } as LogMeta); return 0; } const isTelemetryServicesReachable = await this.sender.isTelemetryServicesReachable(); if (!isTelemetryServicesReachable) { - tlog(this.logger, `[task ${taskId}]: cannot reach telemetry services`); + this.logger.info('Cannot reach telemetry services', { taskId } as LogMeta); return 0; } - tlog(this.logger, `[task ${taskId}]: running task`); + this.logger.debug('Running task', { taskId } as LogMeta); return this.config.runTask( taskId, this.logger, diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_metrics.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_metrics.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_metrics.ts similarity index 91% rename from x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_metrics.ts index 3306633bcfbb2..966eb0888f45e 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_metrics.ts @@ -29,7 +29,11 @@ export class TaskMetricsService implements ITaskMetricsService { public async end(trace: Trace, error?: Error): Promise { const event = this.createTaskMetric(trace, error); - this.logger.l(`Task ${event.name} complete. Task run took ${event.time_executed_in_ms}ms`); + this.logger.l('Task completed', { + task_name: event.name, + time_executed_in_ms: event.time_executed_in_ms, + error_message: event.error_message, + }); if (telemetryConfiguration.use_async_sender) { this.sender.sendAsync(TelemetryChannel.TASK_METRICS, [event]); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_metrics.types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_metrics.types.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task_state.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_state.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/task_state.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_state.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task_state.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_state.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/task_state.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/task_state.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/configuration.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/configuration.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/configuration.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/configuration.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts new file mode 100644 index 0000000000000..502c27fd3e2a6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts @@ -0,0 +1,127 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Logger } from '@kbn/core/server'; +import type { ITelemetryEventsSender } from '../sender'; +import { TelemetryChannel, type TelemetryConfiguration } from '../types'; +import type { ITelemetryReceiver } from '../receiver'; +import type { TaskExecutionPeriod } from '../task'; +import type { ITaskMetricsService } from '../task_metrics.types'; +import { artifactService } from '../artifact'; +import { telemetryConfiguration } from '../configuration'; +import { newTelemetryLogger } from '../helpers'; + +export function createTelemetryConfigurationTaskConfig() { + const taskName = 'Security Solution Telemetry Configuration Task'; + const taskType = 'security:telemetry-configuration'; + return { + type: taskType, + title: taskName, + interval: '1h', + timeout: '1m', + version: '1.0.0', + runTask: async ( + taskId: string, + logger: Logger, + _receiver: ITelemetryReceiver, + sender: ITelemetryEventsSender, + taskMetricsService: ITaskMetricsService, + taskExecutionPeriod: TaskExecutionPeriod + ) => { + const mdc = { task_id: taskId, task_execution_period: taskExecutionPeriod }; + const log = newTelemetryLogger(logger.get('configuration'), mdc); + const trace = taskMetricsService.start(taskType); + + log.l('Running telemetry task'); + + try { + const artifactName = 'telemetry-buffer-and-batch-sizes-v1'; + const manifest = await artifactService.getArtifact(artifactName); + + if (manifest.notModified) { + log.debug('No new configuration artifact found, skipping...'); + await taskMetricsService.end(trace); + return 0; + } + + const configArtifact = manifest.data as unknown as TelemetryConfiguration; + + log.l('Got telemetry configuration artifact', { + artifact: configArtifact ?? '', + }); + + telemetryConfiguration.max_detection_alerts_batch = + configArtifact.max_detection_alerts_batch; + telemetryConfiguration.telemetry_max_buffer_size = configArtifact.telemetry_max_buffer_size; + telemetryConfiguration.max_detection_rule_telemetry_batch = + configArtifact.max_detection_rule_telemetry_batch; + telemetryConfiguration.max_endpoint_telemetry_batch = + configArtifact.max_endpoint_telemetry_batch; + telemetryConfiguration.max_security_list_telemetry_batch = + configArtifact.max_security_list_telemetry_batch; + + if (configArtifact.use_async_sender) { + telemetryConfiguration.use_async_sender = configArtifact.use_async_sender; + } + + if (configArtifact.sender_channels) { + log.l('Updating sender channels configuration'); + telemetryConfiguration.sender_channels = configArtifact.sender_channels; + const channelsDict = Object.values(TelemetryChannel).reduce( + (acc, channel) => acc.set(channel as string, channel), + new Map() + ); + + Object.entries(configArtifact.sender_channels).forEach(([channelName, config]) => { + if (channelName === 'default') { + log.l('Updating default configuration'); + sender.updateDefaultQueueConfig({ + bufferTimeSpanMillis: config.buffer_time_span_millis, + inflightEventsThreshold: config.inflight_events_threshold, + maxPayloadSizeBytes: config.max_payload_size_bytes, + }); + } else { + const channel = channelsDict.get(channelName); + if (!channel) { + log.l('Ignoring unknown channel', { channel: channelName }); + } else { + log.l('Updating configuration for channel', { channel: channelName }); + sender.updateQueueConfig(channel, { + bufferTimeSpanMillis: config.buffer_time_span_millis, + inflightEventsThreshold: config.inflight_events_threshold, + maxPayloadSizeBytes: config.max_payload_size_bytes, + }); + } + } + }); + } + + if (configArtifact.pagination_config) { + log.l('Updating pagination configuration'); + telemetryConfiguration.pagination_config = configArtifact.pagination_config; + _receiver.setMaxPageSizeBytes(configArtifact.pagination_config.max_page_size_bytes); + _receiver.setNumDocsToSample(configArtifact.pagination_config.num_docs_to_sample); + } + + if (configArtifact.indices_metadata_config) { + log.l('Updating indices metadata configuration'); + telemetryConfiguration.indices_metadata_config = configArtifact.indices_metadata_config; + } + + await taskMetricsService.end(trace); + + log.l('Updated TelemetryConfiguration', { configuration: telemetryConfiguration }); + return 0; + } catch (err) { + log.l('Failed to set telemetry configuration', { error: err.message }); + telemetryConfiguration.resetAllToDefault(); + await taskMetricsService.end(trace, err); + return 0; + } + }, + }; +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/detection_rule.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/diagnostic.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/endpoint.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/endpoint.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/endpoint.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/filterlists.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/filterlists.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/filterlists.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/filterlists.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/index.ts new file mode 100644 index 0000000000000..0cf3c610dbc8b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/index.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SecurityTelemetryTaskConfig } from '../task'; +import { createTelemetryDiagnosticsTaskConfig } from './diagnostic'; +import { createTelemetryEndpointTaskConfig } from './endpoint'; +import { createTelemetrySecurityListTaskConfig } from './security_lists'; +import { createTelemetryDetectionRuleListsTaskConfig } from './detection_rule'; +import { createTelemetryPrebuiltRuleAlertsTaskConfig } from './prebuilt_rule_alerts'; +import { createTelemetryTimelineTaskConfig } from './timelines'; +import { createTelemetryDiagnosticTimelineTaskConfig } from './timelines_diagnostic'; +import { createTelemetryConfigurationTaskConfig } from './configuration'; +import { telemetryConfiguration } from '../configuration'; +import { createTelemetryFilterListArtifactTaskConfig } from './filterlists'; +import { createTelemetryIndicesMetadataTaskConfig } from './indices.metadata'; + +export function createTelemetryTaskConfigs(): SecurityTelemetryTaskConfig[] { + return [ + createTelemetryDiagnosticsTaskConfig(), + createTelemetryEndpointTaskConfig(telemetryConfiguration.max_security_list_telemetry_batch), + createTelemetrySecurityListTaskConfig(telemetryConfiguration.max_endpoint_telemetry_batch), + createTelemetryDetectionRuleListsTaskConfig( + telemetryConfiguration.max_detection_rule_telemetry_batch + ), + createTelemetryPrebuiltRuleAlertsTaskConfig(telemetryConfiguration.max_detection_alerts_batch), + createTelemetryTimelineTaskConfig(), + createTelemetryDiagnosticTimelineTaskConfig(), + createTelemetryConfigurationTaskConfig(), + createTelemetryFilterListArtifactTaskConfig(), + createTelemetryIndicesMetadataTaskConfig(), + ]; +} diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/indices.metadata.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/indices.metadata.ts new file mode 100644 index 0000000000000..8c90205fa890e --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/indices.metadata.ts @@ -0,0 +1,192 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { LogMeta, Logger } from '@kbn/core/server'; +import type { ITelemetryEventsSender } from '../sender'; +import type { ITelemetryReceiver } from '../receiver'; +import type { TaskExecutionPeriod } from '../task'; +import type { ITaskMetricsService } from '../task_metrics.types'; +import { + createUsageCounterLabel, + getPreviousDailyTaskTimestamp, + newTelemetryLogger, +} from '../helpers'; +import { + TELEMETRY_DATA_STREAM_EVENT, + TELEMETRY_ILM_POLICY_EVENT, + TELEMETRY_ILM_STATS_EVENT, + TELEMETRY_INDEX_STATS_EVENT, +} from '../event_based/events'; +import { telemetryConfiguration } from '../configuration'; +import type { + DataStream, + DataStreams, + IlmPolicies, + IlmsStats, + IndicesStats, +} from '../indices.metadata.types'; +import { TelemetryCounter } from '../types'; + +const COUNTER_LABELS = ['security_solution', 'indices-metadata']; + +export function createTelemetryIndicesMetadataTaskConfig() { + const taskType = 'security:indices-metadata-telemetry'; + return { + type: taskType, + title: 'Security Solution Telemetry Indices Metadata task', + interval: '24h', + timeout: '1m', + version: '1.0.0', + getLastExecutionTime: getPreviousDailyTaskTimestamp, + runTask: async ( + taskId: string, + logger: Logger, + receiver: ITelemetryReceiver, + sender: ITelemetryEventsSender, + taskMetricsService: ITaskMetricsService, + taskExecutionPeriod: TaskExecutionPeriod + ) => { + const mdc = { task_id: taskId, task_execution_period: taskExecutionPeriod }; + const log = newTelemetryLogger(logger.get('indices-metadata'), mdc); + const trace = taskMetricsService.start(taskType); + + const taskConfig = telemetryConfiguration.indices_metadata_config; + + const publishDatastreamsStats = (stats: DataStream[]): number => { + const events: DataStreams = { + items: stats, + }; + sender.reportEBT(TELEMETRY_DATA_STREAM_EVENT, events); + log.info(`Sent data streams`, { count: events.items.length } as LogMeta); + return events.items.length; + }; + + const publishIndicesStats = async (indices: string[]): Promise => { + const indicesStats: IndicesStats = { + items: [], + }; + + for await (const stat of receiver.getIndicesStats(indices)) { + indicesStats.items.push(stat); + } + sender.reportEBT(TELEMETRY_INDEX_STATS_EVENT, indicesStats); + log.info(`Sent indices stats`, { count: indicesStats.items.length } as LogMeta); + return indicesStats.items.length; + }; + + const publishIlmStats = async (indices: string[]): Promise> => { + const ilmNames = new Set(); + const ilmsStats: IlmsStats = { + items: [], + }; + + for await (const stat of receiver.getIlmsStats(indices)) { + if (stat.policy_name !== undefined) { + ilmNames.add(stat.policy_name); + ilmsStats.items.push(stat); + } + } + + sender.reportEBT(TELEMETRY_ILM_STATS_EVENT, ilmsStats); + log.info(`Sent ILM stats`, { count: ilmNames.size } as LogMeta); + + return ilmNames; + }; + + const publishIlmPolicies = async (ilmNames: Set): Promise => { + const ilmPolicies: IlmPolicies = { + items: [], + }; + + for await (const policy of receiver.getIlmsPolicies(Array.from(ilmNames.values()))) { + ilmPolicies.items.push(policy); + } + sender.reportEBT(TELEMETRY_ILM_POLICY_EVENT, ilmPolicies); + log.info('Sent ILM policies', { count: ilmPolicies.items.length } as LogMeta); + return ilmPolicies.items.length; + }; + + const incrementCounter = (type: TelemetryCounter, name: string, value: number) => { + const telemetryUsageCounter = sender.getTelemetryUsageCluster(); + telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(COUNTER_LABELS.concat(name)), + counterType: type, + incrementBy: value, + }); + }; + + try { + // 1. Get cluster stats and list of indices and datastreams + const [indices, dataStreams] = await Promise.all([ + receiver.getIndices(), + receiver.getDataStreams(), + ]); + + // 2. Publish datastreams stats + const dsCount = publishDatastreamsStats( + dataStreams.slice(0, taskConfig.datastreams_threshold) + ); + incrementCounter(TelemetryCounter.DOCS_SENT, 'datastreams-stats', dsCount); + + // 3. Get and publish indices stats + const indicesCount: number = await publishIndicesStats( + indices.slice(0, taskConfig.indices_threshold) + ) + .then((count) => { + incrementCounter(TelemetryCounter.DOCS_SENT, 'indices-stats', count); + return count; + }) + .catch((err) => { + log.warn(`Error getting indices stats`, { error: err.message } as LogMeta); + incrementCounter(TelemetryCounter.RUNTIME_ERROR, 'indices-stats', 1); + return 0; + }); + + // 4. Get ILM stats and publish them + const ilmNames = await publishIlmStats(indices.slice(0, taskConfig.indices_threshold)) + .then((names) => { + incrementCounter(TelemetryCounter.DOCS_SENT, 'ilm-stats', names.size); + return names; + }) + .catch((err) => { + log.warn(`Error getting ILM stats`, { error: err.message } as LogMeta); + incrementCounter(TelemetryCounter.RUNTIME_ERROR, 'ilm-stats', 1); + return new Set(); + }); + + // 5. Publish ILM policies + const policyCount = await publishIlmPolicies(ilmNames) + .then((count) => { + incrementCounter(TelemetryCounter.DOCS_SENT, 'ilm-policies', count); + return count; + }) + .catch((err) => { + log.warn(`Error getting ILM policies`, { error: err.message } as LogMeta); + incrementCounter(TelemetryCounter.RUNTIME_ERROR, 'ilm-policies', 1); + return 0; + }); + + log.info(`Sent EBT events`, { + datastreams: dsCount, + ilms: ilmNames.size, + indices: indicesCount, + policies: policyCount, + } as LogMeta); + + await taskMetricsService.end(trace); + + return indicesCount; + } catch (err) { + log.warn(`Error running indices metadata task`, { + error: err.message, + } as LogMeta); + await taskMetricsService.end(trace, err); + return 0; + } + }, + }; +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/security_lists.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/security_lists.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/security_lists.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/tasks.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/tasks.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/tasks.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/tasks.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/timelines.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/timelines.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/timelines.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines_diagnostic.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/timelines_diagnostic.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines_diagnostic.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/timelines_diagnostic.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines_diagnostic.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/timelines_diagnostic.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/tasks/timelines_diagnostic.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/timelines_diagnostic.ts diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/telemetry_logger.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/telemetry_logger.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/telemetry/telemetry_logger.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/telemetry_logger.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/types.ts new file mode 100644 index 0000000000000..7741db5721c78 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/types.ts @@ -0,0 +1,526 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Agent } from '@kbn/fleet-plugin/common'; + +import type { AlertEvent, ResolverNode, SafeResolverEvent } from '../../../common/endpoint/types'; +import type { AllowlistFields } from './filterlists/types'; + +type BaseSearchTypes = string | number | boolean | object; +export type SearchTypes = BaseSearchTypes | BaseSearchTypes[] | undefined; + +// For getting cluster info. Copied from telemetry_collection/get_cluster_info.ts +export interface ESClusterInfo { + cluster_uuid: string; + cluster_name: string; + version?: { + number: string; + build_flavor: string; + build_type: string; + build_hash: string; + build_date: string; + build_snapshot?: boolean; + lucene_version: string; + minimum_wire_compatibility_version: string; + minimum_index_compatibility_version: string; + }; +} + +// From https://www.elastic.co/guide/en/elasticsearch/reference/current/get-license.html +export interface ESLicense { + status: string; + uid: string; + type: string; + issue_date?: string; + issue_date_in_millis?: number; + expiry_date?: string; + expirty_date_in_millis?: number; + max_nodes?: number; + issued_to?: string; + issuer?: string; + start_date_in_millis?: number; +} + +// Telemetry +export interface TelemetryEvent { + [key: string]: SearchTypes; + '@timestamp'?: string; + data_stream?: { + [key: string]: SearchTypes; + dataset?: string; + }; + cluster_name?: string; + cluster_uuid?: string; + package_version?: string; + file?: { + [key: string]: SearchTypes; + Ext?: { + [key: string]: SearchTypes; + }; + }; + license?: ESLicense; + event?: { + id?: string; + kind?: string; + }; + kubernetes?: { + audit?: { + user?: { + username?: string; + groups?: string[]; + }; + impersonated_user?: { + username?: string; + groups?: string[]; + }; + pod?: SearchTypes; + }; + }; +} + +/** + * List of supported telemetry channels. + */ +export enum TelemetryChannel { + LISTS = 'security-lists-v2', + ENDPOINT_META = 'endpoint-metadata', + ENDPOINT_ALERTS = 'alerts-endpoint', + DETECTION_ALERTS = 'alerts-detections', + TIMELINE = 'alerts-timeline', + INSIGHTS = 'security-insights-v1', + TASK_METRICS = 'task-metrics', +} + +export enum TelemetryCounter { + DOCS_SENT = 'docs_sent', + DOCS_LOST = 'docs_lost', + DOCS_DROPPED = 'docs_dropped', + HTTP_STATUS = 'http_status', + RUNTIME_ERROR = 'runtime_error', + FATAL_ERROR = 'fatal_error', + TELEMETRY_OPTED_OUT = 'telemetry_opted_out', + TELEMETRY_NOT_REACHABLE = 'telemetry_not_reachable', + NUM_ENDPOINT = 'num_endpoint', +} + +// EP Policy Response + +export interface EndpointPolicyResponseAggregation { + hits: { + total: { value: number }; + }; + aggregations: { + policy_responses: { + buckets: Array<{ + key: string; + doc_count: number; + latest_response: EndpointPolicyResponseHits; + }>; + }; + }; +} + +interface EndpointPolicyResponseHits { + hits: { + total: { value: number }; + hits: Array<{ _source: EndpointPolicyResponseDocument }>; + }; +} + +interface NonPolicyConfiguration { + isolation: boolean; +} + +export interface EndpointPolicyResponseDocument { + agent: { + id: string; + }; + event: { + agent_id_status: string; + }; + Endpoint: { + policy: { + applied: { + actions: Array<{ + name: string; + message: string; + status: string; + }>; + artifacts: { + global: { + version: string; + }; + }; + status: string; + }; + }; + configuration: NonPolicyConfiguration; + state: NonPolicyConfiguration; + }; +} + +// EP Metrics + +export interface EndpointMetricsAggregation { + hits: { + total: { value: number }; + }; + aggregations: { + endpoint_agents: { + buckets: Array<{ key: string; doc_count: number; latest_metrics: EndpointMetricHits }>; + }; + endpoint_count: { value: number }; + }; +} + +interface EndpointMetricHits { + hits: { + total: { value: number }; + hits: Array<{ _id: string; _source: EndpointMetricDocument }>; + }; +} + +export interface EndpointMetricDocument { + '@timestamp': string; + agent: { + id: string; + version: string; + }; + Endpoint: { + metrics: EndpointMetrics; + }; + elastic: { + agent: { + id: string; + }; + }; + host: { + os: EndpointMetricOS; + }; + event: { + agent_id_status: string; + }; +} + +export interface EndpointMetricsAbstract { + endpointMetricIds: string[]; + totalEndpoints: number; +} + +interface DocumentsVolumeMetrics { + suppressed_count: number; + suppressed_bytes: number; + sent_count: number; + sent_bytes: number; +} + +interface SystemImpactEventsMetrics { + week_ms: number; +} + +export interface EndpointMetrics { + memory: { + endpoint: { + private: { + mean: number; + latest: number; + }; + }; + }; + cpu: { + endpoint: { + histogram: { + counts: number[]; + values: number[]; + }; + mean: number; + latest: number; + }; + }; + uptime: { + endpoint: number; + system: number; + }; + documents_volume: { + file_events: DocumentsVolumeMetrics; + library_events: DocumentsVolumeMetrics; + process_events: DocumentsVolumeMetrics; + registry_events: DocumentsVolumeMetrics; + network_events: DocumentsVolumeMetrics; + overall: DocumentsVolumeMetrics; + alerts: DocumentsVolumeMetrics; + diagnostic_alerts: DocumentsVolumeMetrics; + dns_events: DocumentsVolumeMetrics; + security_events: DocumentsVolumeMetrics; + }; + malicious_behavior_rules: Array<{ id: string; endpoint_uptime_percent: number }>; + system_impact: Array<{ + process: { + code_signature: Array<{ + trusted: boolean; + subject_name: string; + exists: boolean; + status: string; + }>; + executable: string; + }; + malware?: SystemImpactEventsMetrics; + process_events?: SystemImpactEventsMetrics; + registry_events?: SystemImpactEventsMetrics; + dns_events?: SystemImpactEventsMetrics; + network_events?: SystemImpactEventsMetrics; + overall?: SystemImpactEventsMetrics; + library_load_events?: SystemImpactEventsMetrics; + }>; + threads: Array<{ name: string; cpu: { mean: number } }>; + event_filter: { + active_global_count: number; + active_user_count: number; + }; +} + +interface EndpointMetricOS { + Ext: { + variant: string; + }; + kernel: string; + name: string; + family: string; + version: string; + platform: string; + full: string; +} + +// EP Metadata + +export interface EndpointMetadataAggregation { + hits: { + total: { value: number }; + }; + aggregations: { + endpoint_metadata: { + buckets: Array<{ key: string; doc_count: number; latest_metadata: EndpointMetadataHits }>; + }; + }; +} + +interface EndpointMetadataHits { + hits: { + total: { value: number }; + hits: Array<{ _source: EndpointMetadataDocument }>; + }; +} + +export interface EndpointMetadataDocument { + '@timestamp': string; + agent: { + id: string; + version: string; + }; + Endpoint: { + capabilities: string[]; + }; + elastic: { + agent: { + id: string; + }; + }; +} + +export interface GetEndpointListResponse { + per_page: number; + page: number; + total: number; + data: ExceptionListItem[]; +} + +// Telemetry List types + +export interface ExceptionListItem { + id: string; + rule_version?: number; + name: string; + created_at: string; + updated_at: string; + entries: object; + os_types: object; +} + +export interface ListTemplate { + '@timestamp': string; + cluster_uuid: string; + cluster_name: string; + license_id: string | undefined; + detection_rule?: TelemetryEvent; + endpoint_exception?: TelemetryEvent; + endpoint_event_filter?: TelemetryEvent; + trusted_application?: TelemetryEvent; +} + +// Detection Rule types + +interface ExceptionListEntry { + id: string; + list_id: string; + type: string; + namespace_type: string; +} + +interface DetectionRuleParms { + ruleId: string; + version: number; + type: string; + exceptionsList: ExceptionListEntry[]; +} + +export interface RuleSearchResult { + alert: { + name: string; + enabled: boolean; + tags: string[]; + createdAt: string; + updatedAt: string; + params: DetectionRuleParms; + }; +} + +// EP Timeline telemetry + +export type EnhancedAlertEvent = AlertEvent & { 'event.id': string; 'kibana.alert.uuid': string }; + +export type TimelineTelemetryEvent = ResolverNode & { event: SafeResolverEvent | undefined }; + +export interface TimelineTelemetryTemplate { + '@timestamp': string; + cluster_uuid: string; + cluster_name: string; + version: string | undefined; + license_uuid: string | undefined; + alert_id: string | undefined; + event_id: string; + timeline: TimelineTelemetryEvent[]; +} + +export interface ValueListMetaData { + total_list_count: number; + types: Array<{ + type: string; + count: number; + }>; + lists: Array<{ + id: string; + count: number; + }>; + included_in_exception_lists_count: number; + used_in_indicator_match_rule_count: number; +} + +export interface ValueListResponseAggregation { + aggregations: { + total_value_list_count: { value: number }; + type_breakdown: { + buckets: Array<{ + key: string; + doc_count: number; + }>; + }; + }; +} + +export interface ValueListItemsResponseAggregation { + aggregations: { + value_list_item_count: { + buckets: Array<{ + key: string; + doc_count: number; + }>; + }; + }; +} + +export interface ValueListExceptionListResponseAggregation { + aggregations: { + vl_included_in_exception_lists_count: { value: number }; + }; +} + +export interface ValueListIndicatorMatchResponseAggregation { + aggregations: { + vl_used_in_indicator_match_rule_count: { value: number }; + }; +} + +export interface TelemetryConfiguration { + telemetry_max_buffer_size: number; + max_security_list_telemetry_batch: number; + max_endpoint_telemetry_batch: number; + max_detection_rule_telemetry_batch: number; + max_detection_alerts_batch: number; + use_async_sender: boolean; + sender_channels?: { + [key: string]: TelemetrySenderChannelConfiguration; + }; + pagination_config?: PaginationConfiguration; + indices_metadata_config?: IndicesMetadataConfiguration; +} + +export interface IndicesMetadataConfiguration { + indices_threshold: number; + datastreams_threshold: number; + max_prefixes: number; + max_group_size: number; + min_group_size: number; +} + +export interface PaginationConfiguration { + max_page_size_bytes: number; + num_docs_to_sample: number; +} + +export interface TelemetrySenderChannelConfiguration { + buffer_time_span_millis: number; + inflight_events_threshold: number; + max_payload_size_bytes: number; +} + +export interface TelemetryFilterListArtifact { + endpoint_alerts: AllowlistFields; + exception_lists: AllowlistFields; + prebuilt_rules_alerts: AllowlistFields; +} + +export interface ValueListResponse { + listMetricsResponse: ValueListResponseAggregation; + itemMetricsResponse: ValueListItemsResponseAggregation; + exceptionListMetricsResponse: ValueListExceptionListResponseAggregation; + indicatorMatchMetricsResponse: ValueListIndicatorMatchResponseAggregation; +} + +export type Nullable = T | null | undefined; + +export interface ExtraInfo { + clusterInfo: ESClusterInfo; + licenseInfo: Nullable; +} + +export interface TimeFrame { + startOfDay: string; + endOfDay: string; +} + +export interface TimelineResult { + nodes: number; + events: number; + timeline: TimelineTelemetryTemplate | undefined; +} + +export interface FleetAgentResponse { + agents: Agent[]; + total: number; + page: number; + perPage: number; +} diff --git a/x-pack/plugins/security_solution/server/lib/timeline/__mocks__/create_timelines.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/create_timelines.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/__mocks__/create_timelines.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/create_timelines.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/__mocks__/import_timelines.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/import_timelines.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/__mocks__/import_timelines.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/import_timelines.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/__mocks__/prepackaged_timelines.ndjson b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/prepackaged_timelines.ndjson similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/__mocks__/prepackaged_timelines.ndjson rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/prepackaged_timelines.ndjson diff --git a/x-pack/plugins/security_solution/server/lib/timeline/__mocks__/request_responses.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/request_responses.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/__mocks__/request_responses.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/request_responses.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/__mocks__/resolve_timeline.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/resolve_timeline.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/__mocks__/resolve_timeline.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/__mocks__/resolve_timeline.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/constants.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/delete_note.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/delete_note.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/notes/delete_note.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/delete_note.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts new file mode 100644 index 0000000000000..7211db1f6cdd5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts @@ -0,0 +1,248 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { IKibanaResponse } from '@kbn/core-http-server'; +import { transformError } from '@kbn/securitysolution-es-utils'; +import type { SortOrder } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import type { + SavedObjectsFindOptions, + SavedObjectsFindOptionsReference, +} from '@kbn/core-saved-objects-api-server'; +import type { KueryNode } from '@kbn/es-query'; +import { nodeBuilder, nodeTypes } from '@kbn/es-query'; +import type { StartServicesAccessor } from '@kbn/core-lifecycle-server'; +import type { UserProfile } from '@kbn/core-user-profile-common'; +import type { StartPlugins } from '../../../../plugin_contract'; +import { AssociatedFilter } from '../../../../../common/notes/constants'; +import { timelineSavedObjectType } from '../../saved_object_mappings'; +import type { SecuritySolutionPluginRouter } from '../../../../types'; +import { MAX_UNASSOCIATED_NOTES, NOTE_URL } from '../../../../../common/constants'; + +import { buildSiemResponse } from '../../../detection_engine/routes/utils'; +import { buildFrameworkRequest } from '../../utils/common'; +import { getAllSavedNote } from '../../saved_object/notes'; +import { noteSavedObjectType } from '../../saved_object_mappings/notes'; +import { GetNotesRequestQuery, type GetNotesResponse } from '../../../../../common/api/timeline'; + +/* eslint-disable complexity */ +export const getNotesRoute = ( + router: SecuritySolutionPluginRouter, + startServices: StartServicesAccessor +) => { + router.versioned + .get({ + path: NOTE_URL, + security: { + authz: { + requiredPrivileges: ['securitySolution'], + }, + }, + access: 'public', + }) + .addVersion( + { + validate: { + request: { query: buildRouteValidationWithZod(GetNotesRequestQuery) }, + }, + version: '2023-10-31', + }, + async (context, request, response): Promise> => { + try { + const queryParams = request.query; + const frameworkRequest = await buildFrameworkRequest(context, request); + const { + uiSettings: { client: uiSettingsClient }, + } = await frameworkRequest.context.core; + const maxUnassociatedNotes = await uiSettingsClient.get(MAX_UNASSOCIATED_NOTES); + + // if documentIds is provided, we will search for all the notes associated with the documentIds + const documentIds = queryParams.documentIds ?? null; + if (documentIds != null) { + // search for multiple document ids (like retrieving all the notes for all the alerts within a table) + if (Array.isArray(documentIds)) { + const options: SavedObjectsFindOptions = { + type: noteSavedObjectType, + filter: nodeBuilder.or( + documentIds.map((documentId: string) => + nodeBuilder.is(`${noteSavedObjectType}.attributes.eventId`, documentId) + ) + ), + page: 1, + perPage: maxUnassociatedNotes, + }; + const res = await getAllSavedNote(frameworkRequest, options); + return response.ok({ body: res }); + } + + // searching for all the notes associated with a specific document id + const options: SavedObjectsFindOptions = { + type: noteSavedObjectType, + filter: nodeBuilder.is(`${noteSavedObjectType}.attributes.eventId`, documentIds), + page: 1, + perPage: maxUnassociatedNotes, + }; + const res = await getAllSavedNote(frameworkRequest, options); + return response.ok({ body: res }); + } + + // if savedObjectIds is provided, we will search for all the notes associated with the savedObjectIds + const savedObjectIds = queryParams.savedObjectIds ?? null; + if (savedObjectIds != null) { + // search for multiple saved object ids + if (Array.isArray(savedObjectIds)) { + const options: SavedObjectsFindOptions = { + type: noteSavedObjectType, + hasReference: savedObjectIds.map((savedObjectId: string) => ({ + type: timelineSavedObjectType, + id: savedObjectId, + })), + page: 1, + perPage: maxUnassociatedNotes, + }; + const res = await getAllSavedNote(frameworkRequest, options); + return response.ok({ body: res }); + } + + // searching for all the notes associated with a specific saved object id + const options: SavedObjectsFindOptions = { + type: noteSavedObjectType, + hasReference: { + type: timelineSavedObjectType, + id: savedObjectIds, + }, + perPage: maxUnassociatedNotes, + }; + const res = await getAllSavedNote(frameworkRequest, options); + return response.ok({ body: res }); + } + + // retrieving all the notes following the query parameters + const perPage = queryParams?.perPage ? parseInt(queryParams.perPage, 10) : 10; + const page = queryParams?.page ? parseInt(queryParams.page, 10) : 1; + const search = queryParams?.search ?? undefined; + const sortField = queryParams?.sortField ?? undefined; + const sortOrder = (queryParams?.sortOrder as SortOrder) ?? undefined; + const filter = queryParams?.filter; + const options: SavedObjectsFindOptions = { + type: noteSavedObjectType, + perPage, + page, + search, + sortField, + sortOrder, + filter, + }; + + // we need to combine the associatedFilter with the filter query + // we have to type case here because the filter is a string (from the schema) and that cannot be changed as it would be a breaking change + const filterAsKueryNode: KueryNode = (filter || '') as unknown as KueryNode; + const filterKueryNodeArray = [filterAsKueryNode]; + + // retrieve all the notes created by a specific user + // the createdByFilter value is the uuid of the user + const createdByFilter = queryParams?.createdByFilter; // now uuid + if (createdByFilter) { + // because the notes createdBy property can be either full_name, email or username + // see pickSaveNote (https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts#L302) + // which uses the getUserDisplayName (https://github.com/elastic/kibana/blob/main/packages/kbn-user-profile-components/src/user_profile.ts#L138) + const [_, { security }] = await startServices(); + const users: UserProfile[] = await security.userProfiles.bulkGet({ + uids: new Set([createdByFilter]), + }); + // once we retrieve the user by the uuid we can search all the notes that have the createdBy property with full_name, email or username values + if (users && users.length > 0) { + const { + user: { email, full_name: fullName, username: userName }, + } = users[0]; + const createdByNodeArray = []; + if (fullName) { + createdByNodeArray.push( + nodeBuilder.is(`${noteSavedObjectType}.attributes.createdBy`, fullName) + ); + } + if (userName) { + createdByNodeArray.push( + nodeBuilder.is(`${noteSavedObjectType}.attributes.createdBy`, userName) + ); + } + if (email) { + createdByNodeArray.push( + nodeBuilder.is(`${noteSavedObjectType}.attributes.createdBy`, email) + ); + } + filterKueryNodeArray.push(nodeBuilder.or(createdByNodeArray)); + } else { + throw new Error(`User with uid ${createdByFilter} not found`); + } + } + + const associatedFilter = queryParams?.associatedFilter; + if (associatedFilter) { + // select documents that have or don't have a reference to an empty value + // used in combination with hasReference (not associated with a timeline) or hasNoReference (associated with a timeline) + const referenceToATimeline: SavedObjectsFindOptionsReference = { + type: timelineSavedObjectType, + id: '', + }; + + // select documents that don't have a value in the eventId field (not associated with a document) + const emptyDocumentIdFilter: KueryNode = nodeBuilder.is( + `${noteSavedObjectType}.attributes.eventId`, + '' + ); + + switch (associatedFilter) { + case AssociatedFilter.documentOnly: + // select documents that have a reference to an empty saved object id (not associated with a timeline) + // and have a value in the eventId field (associated with a document) + options.hasReference = referenceToATimeline; + filterKueryNodeArray.push( + nodeTypes.function.buildNode('not', emptyDocumentIdFilter) + ); + break; + case AssociatedFilter.savedObjectOnly: + // select documents that don't have a reference to an empty saved object id (associated with a timeline) + // and don't have a value in the eventId field (not associated with a document) + options.hasNoReference = referenceToATimeline; + filterKueryNodeArray.push(emptyDocumentIdFilter); + break; + case AssociatedFilter.documentAndSavedObject: + // select documents that don't have a reference to an empty saved object id (associated with a timeline) + // and have a value in the eventId field (associated with a document) + options.hasNoReference = referenceToATimeline; + filterKueryNodeArray.push( + nodeTypes.function.buildNode('not', emptyDocumentIdFilter) + ); + break; + case AssociatedFilter.orphan: + // select documents that have a reference to an empty saved object id (not associated with a timeline) + // and don't have a value in the eventId field (not associated with a document) + options.hasReference = referenceToATimeline; + // TODO we might want to also check for the existence of the eventId field, on top of getting eventId having empty values + filterKueryNodeArray.push(emptyDocumentIdFilter); + break; + } + } + + // combine all filters + options.filter = nodeBuilder.and(filterKueryNodeArray); + + const res = await getAllSavedNote(frameworkRequest, options); + return response.ok({ body: res }); + } catch (err) { + const error = transformError(err); + const siemResponse = buildSiemResponse(response); + + return siemResponse.error({ + body: error.message, + statusCode: error.statusCode, + }); + } + } + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/notes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/pinned_events/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/pinned_events/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/copy_timeline/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/copy_timeline/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/copy_timeline/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/copy_timeline/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/get_timelines_from_stream.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/get_timelines_from_stream.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/get_timelines_from_stream.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/get_timelines_from_stream.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/resolve_timeline/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/resolve_timeline/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/resolve_timeline/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/timelines/resolve_timeline/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/field_migrator.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/field_migrator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/field_migrator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/field_migrator.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/get_overridable_note.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/get_overridable_note.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/get_overridable_note.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/get_overridable_note.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/persist_notes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/persist_notes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/persist_notes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/persist_notes.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/notes/saved_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/field_migrator.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/field_migrator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/field_migrator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/field_migrator.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/pinned_events/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/saved_search/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/saved_search/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/saved_search/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/saved_search/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/convert_saved_object_to_savedtimeline.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/convert_saved_object_to_savedtimeline.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/convert_saved_object_to_savedtimeline.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/convert_saved_object_to_savedtimeline.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/field_migrator.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/field_migrator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/field_migrator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/field_migrator.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/pick_saved_timeline.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/pick_saved_timeline.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/pick_saved_timeline.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/pick_saved_timeline.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/pick_saved_timeline.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/pick_saved_timeline.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/pick_saved_timeline.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object/timelines/pick_saved_timeline.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/index.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/notes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/notes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/notes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/notes.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/pinned_events.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/pinned_events.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/pinned_events.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/pinned_events.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/timelines.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/timelines.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/timelines.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/timelines.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/timelines.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/timelines.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/timelines.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/timelines.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/types.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/utils.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/utils.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/utils.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/utils.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/utils.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/migrations/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/check_timelines_status.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/check_timelines_status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/check_timelines_status.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/check_timelines_status.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/common.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/common.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/compare_timelines_status.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/compare_timelines_status.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/compare_timelines_status.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/compare_timelines_status.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/compare_timelines_status.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/compare_timelines_status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/compare_timelines_status.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/compare_timelines_status.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/default_timeline.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/default_timeline.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/default_timeline.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/default_timeline.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/default_timeline_headers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/default_timeline_headers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/default_timeline_headers.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/default_timeline_headers.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/failure_cases.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/failure_cases.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/failure_cases.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/failure_cases.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/failure_cases.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/failure_cases.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/failure_cases.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/failure_cases.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/migrator.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/migrator.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/migrator.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/migrator.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/migrator.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/migrator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/migrator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/migrator.ts diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/timeline_object.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/timeline_object.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/timeline/utils/timeline_object.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/timeline/utils/timeline_object.ts diff --git a/x-pack/plugins/security_solution/server/lib/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lib/types.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_create_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_create_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_create_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_create_handler.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_delete_item_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_delete_item_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_delete_item_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_delete_item_handler.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_export_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_export_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_export_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_export_handler.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_get_one_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_get_one_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_get_one_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_get_one_handler.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_import_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_import_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_import_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_import_handler.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_multi_list_find_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_multi_list_find_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_multi_list_find_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_multi_list_find_handler.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_single_list_find_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_single_list_find_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_single_list_find_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_single_list_find_handler.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_summary_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_summary_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_summary_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_summary_handler.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_update_handler.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_update_handler.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_update_handler.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/handlers/exceptions_pre_update_handler.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/register_endpoint_extension_points.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/register_endpoint_extension_points.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/register_endpoint_extension_points.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/register_endpoint_extension_points.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/types.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/types.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.test.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/blocklist_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/blocklist_validator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/blocklist_validator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/blocklist_validator.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exception_errors.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exception_errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exception_errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exception_errors.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exceptions_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exceptions_validator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exceptions_validator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exceptions_validator.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/errors.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/errors.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/errors.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/errors.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/index.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/mocks.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts diff --git a/x-pack/plugins/security_solution/server/lists_integration/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lists_integration/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/lists_integration/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/jest.config.js new file mode 100644 index 0000000000000..8a9fc57682cad --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/server/lists_integration'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server/lists_integration', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/lists_integration/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/mocks.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/plugin.ts b/x-pack/solutions/security/plugins/security_solution/server/plugin.ts new file mode 100644 index 0000000000000..d8fa5c61ee7f3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/plugin.ts @@ -0,0 +1,755 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Observable } from 'rxjs'; +import { QUERY_RULE_TYPE_ID, SAVED_QUERY_RULE_TYPE_ID } from '@kbn/securitysolution-rules'; +import type { Logger } from '@kbn/core/server'; +import { SavedObjectsClient } from '@kbn/core/server'; +import type { UsageCounter } from '@kbn/usage-collection-plugin/server'; +import { ECS_COMPONENT_TEMPLATE_NAME } from '@kbn/alerting-plugin/server'; +import { mappingFromFieldMap } from '@kbn/alerting-plugin/common'; +import type { IRuleDataClient } from '@kbn/rule-registry-plugin/server'; +import { Dataset } from '@kbn/rule-registry-plugin/server'; +import type { ListPluginSetup } from '@kbn/lists-plugin/server'; +import type { ILicense } from '@kbn/licensing-plugin/server'; +import type { NewPackagePolicy, UpdatePackagePolicy } from '@kbn/fleet-plugin/common'; +import { FLEET_ENDPOINT_PACKAGE } from '@kbn/fleet-plugin/common'; + +import { ensureIndicesExistsForPolicies } from './endpoint/migrations/ensure_indices_exists_for_policies'; +import { CompleteExternalResponseActionsTask } from './endpoint/lib/response_actions'; +import { registerAgentRoutes } from './endpoint/routes/agent'; +import { endpointPackagePoliciesStatsSearchStrategyProvider } from './search_strategy/endpoint_package_policies_stats'; +import { turnOffPolicyProtectionsIfNotSupported } from './endpoint/migrations/turn_off_policy_protections'; +import { endpointSearchStrategyProvider } from './search_strategy/endpoint'; +import { getScheduleNotificationResponseActionsService } from './lib/detection_engine/rule_response_actions/schedule_notification_response_actions'; +import { siemGuideId, getSiemGuideConfig } from '../common/guided_onboarding/siem_guide_config'; +import { + createEqlAlertType, + createEsqlAlertType, + createIndicatorMatchAlertType, + createMlAlertType, + createNewTermsAlertType, + createQueryAlertType, + createThresholdAlertType, +} from './lib/detection_engine/rule_types'; +import { initRoutes } from './routes'; +import { registerLimitedConcurrencyRoutes } from './routes/limited_concurrency'; +import { ManifestTask } from './endpoint/lib/artifacts'; +import { CheckMetadataTransformsTask } from './endpoint/lib/metadata'; +import { initSavedObjects } from './saved_objects'; +import { AppClientFactory } from './client'; +import type { ConfigType } from './config'; +import { createConfig } from './config'; +import { initUiSettings } from './ui_settings'; +import { + APP_ID, + APP_UI_ID, + CASE_ATTACHMENT_ENDPOINT_TYPE_ID, + DEFAULT_ALERTS_INDEX, + SERVER_APP_ID, +} from '../common/constants'; +import { registerEndpointRoutes } from './endpoint/routes/metadata'; +import { registerPolicyRoutes } from './endpoint/routes/policy'; +import { registerActionRoutes } from './endpoint/routes/actions'; +import { registerEndpointSuggestionsRoutes } from './endpoint/routes/suggestions'; +import { + EndpointArtifactClient, + ManifestManager, + securityWorkflowInsightsService, +} from './endpoint/services'; +import { EndpointAppContextService } from './endpoint/endpoint_app_context_services'; +import type { EndpointAppContext } from './endpoint/types'; +import { initUsageCollectors } from './usage'; +import type { SecuritySolutionRequestHandlerContext } from './types'; +import { securitySolutionSearchStrategyProvider } from './search_strategy/security_solution'; +import type { ITelemetryEventsSender } from './lib/telemetry/sender'; +import { type IAsyncTelemetryEventsSender } from './lib/telemetry/async_sender.types'; +import { TelemetryEventsSender } from './lib/telemetry/sender'; +import { + DEFAULT_QUEUE_CONFIG, + DEFAULT_RETRY_CONFIG, + AsyncTelemetryEventsSender, +} from './lib/telemetry/async_sender'; +import type { ITelemetryReceiver } from './lib/telemetry/receiver'; +import { TelemetryReceiver } from './lib/telemetry/receiver'; +import { licenseService } from './lib/license'; +import { PolicyWatcher } from './endpoint/lib/policy/license_watch'; +import previewPolicy from './lib/detection_engine/routes/index/preview_policy.json'; +import type { IRuleMonitoringService } from './lib/detection_engine/rule_monitoring'; +import { createRuleMonitoringService } from './lib/detection_engine/rule_monitoring'; +import type { CreateRuleOptions } from './lib/detection_engine/rule_types/types'; +// eslint-disable-next-line no-restricted-imports +import { + isLegacyNotificationRuleExecutor, + legacyRulesNotificationRuleType, +} from './lib/detection_engine/rule_actions_legacy'; +import { + createSecurityRuleTypeWrapper, + securityRuleTypeFieldMap, +} from './lib/detection_engine/rule_types/create_security_rule_type_wrapper'; + +import { RequestContextFactory } from './request_context_factory'; + +import type { + ISecuritySolutionPlugin, + PluginInitializerContext, + SecuritySolutionPluginCoreSetupDependencies, + SecuritySolutionPluginCoreStartDependencies, + SecuritySolutionPluginSetup, + SecuritySolutionPluginSetupDependencies, + SecuritySolutionPluginStart, + SecuritySolutionPluginStartDependencies, +} from './plugin_contract'; +import { featureUsageService } from './endpoint/services/feature_usage'; +import { setIsElasticCloudDeployment } from './lib/telemetry/helpers'; +import { artifactService } from './lib/telemetry/artifact'; +import { events } from './lib/telemetry/event_based/events'; +import { endpointFieldsProvider } from './search_strategy/endpoint_fields'; +import { + ENDPOINT_FIELDS_SEARCH_STRATEGY, + ENDPOINT_PACKAGE_POLICIES_STATS_STRATEGY, + ENDPOINT_SEARCH_STRATEGY, +} from '../common/endpoint/constants'; + +import { ProductFeaturesService } from './lib/product_features_service/product_features_service'; +import { registerRiskScoringTask } from './lib/entity_analytics/risk_score/tasks/risk_scoring_task'; +import { registerEntityStoreFieldRetentionEnrichTask } from './lib/entity_analytics/entity_store/task'; +import { registerProtectionUpdatesNoteRoutes } from './endpoint/routes/protection_updates_note'; +import { + latestRiskScoreIndexPattern, + allRiskScoreIndexPattern, +} from '../common/entity_analytics/risk_engine'; +import { isEndpointPackageV2 } from '../common/endpoint/utils/package_v2'; +import { assistantTools } from './assistant/tools'; +import { turnOffAgentPolicyFeatures } from './endpoint/migrations/turn_off_agent_policy_features'; +import { getCriblPackagePolicyPostCreateOrUpdateCallback } from './security_integrations'; +import { scheduleEntityAnalyticsMigration } from './lib/entity_analytics/migrations'; +import { SiemMigrationsService } from './lib/siem_migrations/siem_migrations_service'; + +export type { SetupPlugins, StartPlugins, PluginSetup, PluginStart } from './plugin_contract'; + +export class Plugin implements ISecuritySolutionPlugin { + private readonly pluginContext: PluginInitializerContext; + private readonly config: ConfigType; + private readonly logger: Logger; + private readonly appClientFactory: AppClientFactory; + private readonly productFeaturesService: ProductFeaturesService; + + private readonly ruleMonitoringService: IRuleMonitoringService; + private readonly endpointAppContextService = new EndpointAppContextService(); + private readonly siemMigrationsService: SiemMigrationsService; + private readonly telemetryReceiver: ITelemetryReceiver; + private readonly telemetryEventsSender: ITelemetryEventsSender; + private readonly asyncTelemetryEventsSender: IAsyncTelemetryEventsSender; + + private lists: ListPluginSetup | undefined; // TODO: can we create ListPluginStart? + private licensing$!: Observable; + private policyWatcher?: PolicyWatcher; + + private manifestTask: ManifestTask | undefined; + private completeExternalResponseActionsTask: CompleteExternalResponseActionsTask; + private checkMetadataTransformsTask: CheckMetadataTransformsTask | undefined; + private telemetryUsageCounter?: UsageCounter; + private endpointContext: EndpointAppContext; + + constructor(context: PluginInitializerContext) { + const serverConfig = createConfig(context); + + this.pluginContext = context; + this.config = serverConfig; + this.logger = context.logger.get(); + this.appClientFactory = new AppClientFactory(); + this.productFeaturesService = new ProductFeaturesService( + this.logger, + this.config.experimentalFeatures + ); + this.siemMigrationsService = new SiemMigrationsService( + this.config, + this.pluginContext.logger, + this.pluginContext.env.packageInfo.version + ); + + this.ruleMonitoringService = createRuleMonitoringService(this.config, this.logger); + this.telemetryEventsSender = new TelemetryEventsSender(this.logger); + this.asyncTelemetryEventsSender = new AsyncTelemetryEventsSender(this.logger); + this.telemetryReceiver = new TelemetryReceiver(this.logger); + + this.logger.debug('plugin initialized'); + this.endpointContext = { + logFactory: this.pluginContext.logger, + service: this.endpointAppContextService, + config: (): Promise => Promise.resolve(this.config), + get serverConfig() { + return serverConfig; + }, + experimentalFeatures: this.config.experimentalFeatures, + }; + this.completeExternalResponseActionsTask = new CompleteExternalResponseActionsTask({ + endpointAppContext: this.endpointContext, + }); + } + + public setup( + core: SecuritySolutionPluginCoreSetupDependencies, + plugins: SecuritySolutionPluginSetupDependencies + ): SecuritySolutionPluginSetup { + this.logger.debug('plugin setup'); + + const { appClientFactory, productFeaturesService, pluginContext, config, logger } = this; + const experimentalFeatures = config.experimentalFeatures; + + initSavedObjects(core.savedObjects); + initUiSettings(core.uiSettings, experimentalFeatures, config.enableUiSettingsValidations); + productFeaturesService.init(plugins.features); + + events.forEach((eventConfig) => { + core.analytics.registerEventType(eventConfig); + }); + + this.ruleMonitoringService.setup(core, plugins); + + if (experimentalFeatures.riskScoringPersistence) { + registerRiskScoringTask({ + getStartServices: core.getStartServices, + kibanaVersion: pluginContext.env.packageInfo.version, + logger: this.logger, + auditLogger: plugins.security?.audit.withoutRequest, + taskManager: plugins.taskManager, + telemetry: core.analytics, + entityAnalyticsConfig: config.entityAnalytics, + }); + } + + scheduleEntityAnalyticsMigration({ + getStartServices: core.getStartServices, + taskManager: plugins.taskManager, + logger: this.logger, + auditLogger: plugins.security?.audit.withoutRequest, + }).catch((err) => { + logger.error(`Error scheduling entity analytics migration: ${err}`); + }); + + if (!experimentalFeatures.entityStoreDisabled) { + registerEntityStoreFieldRetentionEnrichTask({ + getStartServices: core.getStartServices, + logger: this.logger, + telemetry: core.analytics, + taskManager: plugins.taskManager, + }); + } + + const requestContextFactory = new RequestContextFactory({ + config, + logger, + core, + plugins, + endpointAppContextService: this.endpointAppContextService, + ruleMonitoringService: this.ruleMonitoringService, + siemMigrationsService: this.siemMigrationsService, + kibanaVersion: pluginContext.env.packageInfo.version, + kibanaBranch: pluginContext.env.packageInfo.branch, + buildFlavor: pluginContext.env.packageInfo.buildFlavor, + }); + + productFeaturesService.registerApiAccessControl(core.http); + const router = core.http.createRouter(); + core.http.registerRouteHandlerContext( + APP_ID, + (context, request) => requestContextFactory.create(context, request) + ); + + this.endpointAppContextService.setup({ + securitySolutionRequestContextFactory: requestContextFactory, + cloud: plugins.cloud, + loggerFactory: this.pluginContext.logger, + telemetry: core.analytics, + httpServiceSetup: core.http, + }); + + initUsageCollectors({ + core, + eventLogIndex: plugins.eventLog.getIndexPattern(), + signalsIndex: DEFAULT_ALERTS_INDEX, + ml: plugins.ml, + usageCollection: plugins.usageCollection, + logger, + riskEngineIndexPatterns: { + all: allRiskScoreIndexPattern, + latest: latestRiskScoreIndexPattern, + }, + legacySignalsIndex: config.signalsIndex, + }); + + this.telemetryUsageCounter = plugins.usageCollection?.createUsageCounter(APP_ID); + plugins.cases.attachmentFramework.registerExternalReference({ + id: CASE_ATTACHMENT_ENDPOINT_TYPE_ID, + }); + + const { ruleDataService } = plugins.ruleRegistry; + let ruleDataClient: IRuleDataClient | null = null; + let previewRuleDataClient: IRuleDataClient | null = null; + + // rule options are used both to create and preview rules. + const ruleOptions: CreateRuleOptions = { + experimentalFeatures, + logger: this.logger, + ml: plugins.ml, + eventsTelemetry: this.telemetryEventsSender, + version: pluginContext.env.packageInfo.version, + licensing: plugins.licensing, + scheduleNotificationResponseActionsService: getScheduleNotificationResponseActionsService({ + endpointAppContextService: this.endpointAppContextService, + osqueryCreateActionService: plugins.osquery.createActionService, + }), + }; + + const ruleDataServiceOptions = { + feature: SERVER_APP_ID, + registrationContext: 'security', + dataset: Dataset.alerts, + componentTemplateRefs: [ECS_COMPONENT_TEMPLATE_NAME], + componentTemplates: [ + { + name: 'mappings', + mappings: mappingFromFieldMap(securityRuleTypeFieldMap, false), + }, + ], + secondaryAlias: config.signalsIndex, + }; + + ruleDataClient = ruleDataService.initializeIndex(ruleDataServiceOptions); + const previewIlmPolicy = previewPolicy.policy; + + previewRuleDataClient = ruleDataService.initializeIndex({ + ...ruleDataServiceOptions, + additionalPrefix: '.preview', + ilmPolicy: previewIlmPolicy, + secondaryAlias: undefined, + }); + + const securityRuleTypeOptions = { + lists: plugins.lists, + actions: plugins.actions, + logger: this.logger, + config: this.config, + publicBaseUrl: core.http.basePath.publicBaseUrl, + ruleDataClient, + ruleExecutionLoggerFactory: + this.ruleMonitoringService.createRuleExecutionLogClientForExecutors, + version: pluginContext.env.packageInfo.version, + experimentalFeatures: config.experimentalFeatures, + alerting: plugins.alerting, + analytics: core.analytics, + }; + + const securityRuleTypeWrapper = createSecurityRuleTypeWrapper(securityRuleTypeOptions); + + plugins.alerting.registerType(securityRuleTypeWrapper(createEqlAlertType({ ...ruleOptions }))); + if (!experimentalFeatures.esqlRulesDisabled) { + plugins.alerting.registerType( + securityRuleTypeWrapper(createEsqlAlertType({ ...ruleOptions })) + ); + } + plugins.alerting.registerType( + securityRuleTypeWrapper( + createQueryAlertType({ + ...ruleOptions, + id: SAVED_QUERY_RULE_TYPE_ID, + name: 'Saved Query Rule', + }) + ) + ); + plugins.alerting.registerType( + securityRuleTypeWrapper(createIndicatorMatchAlertType(ruleOptions)) + ); + plugins.alerting.registerType(securityRuleTypeWrapper(createMlAlertType(ruleOptions))); + plugins.alerting.registerType( + securityRuleTypeWrapper( + createQueryAlertType({ + ...ruleOptions, + id: QUERY_RULE_TYPE_ID, + name: 'Custom Query Rule', + }) + ) + ); + plugins.alerting.registerType(securityRuleTypeWrapper(createThresholdAlertType(ruleOptions))); + plugins.alerting.registerType( + securityRuleTypeWrapper(createNewTermsAlertType({ ...ruleOptions })) + ); + + // TODO We need to get the endpoint routes inside of initRoutes + initRoutes( + router, + config, + plugins.encryptedSavedObjects?.canEncrypt === true, + plugins.security, + this.telemetryEventsSender, + plugins.ml, + ruleDataService, + logger, + ruleDataClient, + ruleOptions, + core.getStartServices, + securityRuleTypeOptions, + previewRuleDataClient, + this.telemetryReceiver, + this.pluginContext.env.packageInfo.buildFlavor === 'serverless', + core.docLinks, + this.endpointContext + ); + + registerEndpointRoutes(router, this.endpointContext); + registerEndpointSuggestionsRoutes( + router, + plugins.unifiedSearch.autocomplete.getInitializerContextConfig().create(), + this.endpointContext + ); + registerLimitedConcurrencyRoutes(core); + registerPolicyRoutes(router, this.endpointContext); + registerProtectionUpdatesNoteRoutes(router, this.endpointContext); + registerActionRoutes( + router, + this.endpointContext, + plugins.encryptedSavedObjects?.canEncrypt === true + ); + registerAgentRoutes(router, this.endpointContext); + + if (plugins.alerting != null) { + const ruleNotificationType = legacyRulesNotificationRuleType({ logger }); + + if (isLegacyNotificationRuleExecutor(ruleNotificationType)) { + plugins.alerting.registerType(ruleNotificationType); + } + } + + const exceptionListsSetupEnabled = () => { + return plugins.taskManager && plugins.lists; + }; + + if (exceptionListsSetupEnabled()) { + this.lists = plugins.lists; + this.manifestTask = new ManifestTask({ + endpointAppContext: this.endpointContext, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + taskManager: plugins.taskManager!, + }); + } + + if (plugins.taskManager) { + this.completeExternalResponseActionsTask.setup({ taskManager: plugins.taskManager }); + } + + core + .getStartServices() + .then(async ([coreStart, depsStart]) => { + appClientFactory.setup({ + getSpaceId: depsStart.spaces?.spacesService?.getSpaceId, + config, + kibanaVersion: pluginContext.env.packageInfo.version, + kibanaBranch: pluginContext.env.packageInfo.branch, + buildFlavor: pluginContext.env.packageInfo.buildFlavor, + }); + + const endpointFieldsStrategy = endpointFieldsProvider( + this.endpointAppContextService, + depsStart.data.indexPatterns + ); + plugins.data.search.registerSearchStrategy( + ENDPOINT_FIELDS_SEARCH_STRATEGY, + endpointFieldsStrategy + ); + + const endpointPackagePoliciesStatsStrategy = + endpointPackagePoliciesStatsSearchStrategyProvider(this.endpointAppContextService); + plugins.data.search.registerSearchStrategy( + ENDPOINT_PACKAGE_POLICIES_STATS_STRATEGY, + endpointPackagePoliciesStatsStrategy + ); + + const securitySolutionSearchStrategy = securitySolutionSearchStrategyProvider( + depsStart.data, + this.endpointContext, + depsStart.spaces?.spacesService?.getSpaceId, + ruleDataClient + ); + + plugins.data.search.registerSearchStrategy( + 'securitySolutionSearchStrategy', + securitySolutionSearchStrategy + ); + const endpointSearchStrategy = endpointSearchStrategyProvider( + depsStart.data, + this.endpointContext + ); + + plugins.data.search.registerSearchStrategy( + ENDPOINT_SEARCH_STRATEGY, + endpointSearchStrategy + ); + + /** + * Register a config for the security guide + */ + plugins.guidedOnboarding?.registerGuideConfig(siemGuideId, getSiemGuideConfig()); + + this.siemMigrationsService.setup({ esClusterClient: coreStart.elasticsearch.client }); + }) + .catch(() => {}); // it shouldn't reject, but just in case + + setIsElasticCloudDeployment(plugins.cloud.isCloudEnabled ?? false); + + this.asyncTelemetryEventsSender.setup( + DEFAULT_RETRY_CONFIG, + DEFAULT_QUEUE_CONFIG, + this.telemetryReceiver, + plugins.telemetry, + this.telemetryUsageCounter, + core.analytics + ); + + this.telemetryEventsSender.setup( + this.telemetryReceiver, + plugins.telemetry, + plugins.taskManager, + this.telemetryUsageCounter, + this.asyncTelemetryEventsSender + ); + + this.checkMetadataTransformsTask = new CheckMetadataTransformsTask({ + endpointAppContext: this.endpointContext, + core, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + taskManager: plugins.taskManager!, + }); + + featureUsageService.setup(plugins.licensing); + + securityWorkflowInsightsService.setup({ + kibanaVersion: pluginContext.env.packageInfo.version, + logger: this.logger, + isFeatureEnabled: config.experimentalFeatures.defendInsights, + endpointContext: this.endpointContext.service, + }); + + return { + setProductFeaturesConfigurator: + productFeaturesService.setProductFeaturesConfigurator.bind(productFeaturesService), + experimentalFeatures: { ...config.experimentalFeatures }, + }; + } + + public start( + core: SecuritySolutionPluginCoreStartDependencies, + plugins: SecuritySolutionPluginStartDependencies + ): SecuritySolutionPluginStart { + const { config, logger, productFeaturesService } = this; + + this.ruleMonitoringService.start(core, plugins); + + const savedObjectsClient = new SavedObjectsClient(core.savedObjects.createInternalRepository()); + const registerIngestCallback = plugins.fleet?.registerExternalCallback; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const exceptionListClient = this.lists!.getExceptionListClient( + savedObjectsClient, + 'kibana', + // execution of Lists plugin server extension points callbacks should be turned off + // here because most of the uses of this client will be in contexts where some endpoint + // validations (specifically those around authz) can not be done (due ot the lack of a `KibanaRequest` + // from where authz can be derived) + false + ); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const fleetStartServices = plugins.fleet!; + + const { packageService } = fleetStartServices; + + this.licensing$ = plugins.licensing.license$; + + // Assistant Tool and Feature Registration + plugins.elasticAssistant.registerTools(APP_UI_ID, assistantTools); + const features = { + assistantModelEvaluation: config.experimentalFeatures.assistantModelEvaluation, + }; + plugins.elasticAssistant.registerFeatures(APP_UI_ID, features); + plugins.elasticAssistant.registerFeatures('management', features); + + const manifestManager = new ManifestManager({ + savedObjectsClient, + exceptionListClient, + artifactClient: new EndpointArtifactClient( + fleetStartServices.createArtifactsClient('endpoint') + ), + packagePolicyService: fleetStartServices.packagePolicyService, + logger: this.pluginContext.logger.get('ManifestManager'), + experimentalFeatures: config.experimentalFeatures, + packagerTaskPackagePolicyUpdateBatchSize: config.packagerTaskPackagePolicyUpdateBatchSize, + esClient: core.elasticsearch.client.asInternalUser, + productFeaturesService, + }); + + this.endpointAppContextService.start({ + fleetStartServices, + security: core.security, + alerting: plugins.alerting, + config, + cases: plugins.cases, + manifestManager, + licenseService, + exceptionListsClient: exceptionListClient, + registerListsServerExtension: this.lists?.registerExtension, + featureUsageService, + experimentalFeatures: config.experimentalFeatures, + esClient: core.elasticsearch.client.asInternalUser, + productFeaturesService, + savedObjectsServiceStart: core.savedObjects, + connectorActions: plugins.actions, + }); + + if (this.lists && plugins.taskManager && plugins.fleet) { + // Exceptions, Artifacts and Manifests start + const taskManager = plugins.taskManager; + + plugins.fleet + .fleetSetupCompleted() + .then(async () => { + logger.info('Dependent plugin setup complete'); + + if (this.manifestTask) { + logger.info('Starting ManifestTask'); + await this.manifestTask.start({ + taskManager, + }); + } else { + logger.error(new Error('User artifacts task not available.')); + } + + const fleetServices = this.endpointAppContextService.getInternalFleetServices(); + + await turnOffPolicyProtectionsIfNotSupported( + core.elasticsearch.client.asInternalUser, + fleetServices, + productFeaturesService, + logger + ); + + await turnOffAgentPolicyFeatures(fleetServices, productFeaturesService, logger); + + // Ensure policies have backing DOT indices (We don't need to `await` this. + // It can run in the background) + ensureIndicesExistsForPolicies(this.endpointAppContextService).catch(() => {}); + }) + .catch(() => {}); + + // License related start + licenseService.start(this.licensing$); + + featureUsageService.start(plugins.licensing); + + this.policyWatcher = new PolicyWatcher( + plugins.fleet.packagePolicyService, + core.savedObjects, + core.elasticsearch, + logger + ); + this.policyWatcher.start(licenseService); + } + + if (plugins.taskManager) { + this.completeExternalResponseActionsTask + .start({ + taskManager: plugins.taskManager, + esClient: core.elasticsearch.client.asInternalUser, + }) + .catch(() => {}); // it shouldn't refuse, but just in case + } + + this.telemetryReceiver + .start( + core, + (type: string) => core.savedObjects.getIndexForType(type), + DEFAULT_ALERTS_INDEX, + this.endpointAppContextService, + exceptionListClient, + packageService + ) + .catch(() => {}); + + artifactService.start(this.telemetryReceiver).catch(() => {}); + + this.asyncTelemetryEventsSender.start(plugins.telemetry); + + this.telemetryEventsSender.start( + plugins.telemetry, + plugins.taskManager, + this.telemetryReceiver + ); + + securityWorkflowInsightsService + .start({ + esClient: core.elasticsearch.client.asInternalUser, + }) + .catch(() => {}); + + const endpointPkgInstallationPromise = this.endpointContext.service + .getInternalFleetServices() + .packages.getInstallation(FLEET_ENDPOINT_PACKAGE); + Promise.all([endpointPkgInstallationPromise, plugins.fleet?.fleetSetupCompleted()]) + .then(async ([endpointPkgInstallation]) => { + if (plugins.taskManager) { + if ( + endpointPkgInstallation?.version && + isEndpointPackageV2(endpointPkgInstallation.version) + ) { + return; + } + + await this.checkMetadataTransformsTask?.start({ taskManager: plugins.taskManager }); + } + }) + .catch(() => {}); // it shouldn't reject, but just in case + + if (registerIngestCallback) { + registerIngestCallback( + 'packagePolicyCreate', + async (packagePolicy: NewPackagePolicy): Promise => { + await getCriblPackagePolicyPostCreateOrUpdateCallback( + core.elasticsearch.client.asInternalUser, + packagePolicy, + this.logger + ); + return packagePolicy; + } + ); + + registerIngestCallback( + 'packagePolicyUpdate', + async (packagePolicy: UpdatePackagePolicy): Promise => { + await getCriblPackagePolicyPostCreateOrUpdateCallback( + core.elasticsearch.client.asInternalUser, + packagePolicy, + this.logger + ); + return packagePolicy; + } + ); + } + + return {}; + } + + public stop() { + this.logger.debug('Stopping plugin'); + this.asyncTelemetryEventsSender.stop().catch(() => {}); + this.telemetryEventsSender.stop(); + this.endpointAppContextService.stop(); + this.policyWatcher?.stop(); + this.completeExternalResponseActionsTask.stop().catch(() => {}); + this.siemMigrationsService.stop(); + securityWorkflowInsightsService.stop(); + licenseService.stop(); + } +} diff --git a/x-pack/plugins/security_solution/server/plugin_contract.ts b/x-pack/solutions/security/plugins/security_solution/server/plugin_contract.ts similarity index 100% rename from x-pack/plugins/security_solution/server/plugin_contract.ts rename to x-pack/solutions/security/plugins/security_solution/server/plugin_contract.ts diff --git a/x-pack/plugins/security_solution/server/request_context_factory.mock.ts b/x-pack/solutions/security/plugins/security_solution/server/request_context_factory.mock.ts similarity index 100% rename from x-pack/plugins/security_solution/server/request_context_factory.mock.ts rename to x-pack/solutions/security/plugins/security_solution/server/request_context_factory.mock.ts diff --git a/x-pack/plugins/security_solution/server/request_context_factory.ts b/x-pack/solutions/security/plugins/security_solution/server/request_context_factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/request_context_factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/request_context_factory.ts diff --git a/x-pack/plugins/security_solution/server/routes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/routes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/routes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/routes/index.ts diff --git a/x-pack/plugins/security_solution/server/routes/limited_concurrency.ts b/x-pack/solutions/security/plugins/security_solution/server/routes/limited_concurrency.ts similarity index 100% rename from x-pack/plugins/security_solution/server/routes/limited_concurrency.ts rename to x-pack/solutions/security/plugins/security_solution/server/routes/limited_concurrency.ts diff --git a/x-pack/plugins/security_solution/server/saved_objects.ts b/x-pack/solutions/security/plugins/security_solution/server/saved_objects.ts similarity index 100% rename from x-pack/plugins/security_solution/server/saved_objects.ts rename to x-pack/solutions/security/plugins/security_solution/server/saved_objects.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/actions/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/actions/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/actions/query.all_actions.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/actions/query.all_actions.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/actions/query.all_actions.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/actions/query.all_actions.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/results/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/results/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/results/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/results/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/results/query.action_results.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/results/query.action_results.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/results/query.action_results.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/response_actions/results/query.action_results.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/types.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint/factory/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/factory/types.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.test.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts new file mode 100644 index 0000000000000..4e950a4202c68 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { from } from 'rxjs'; +import type { + DataViewsServerPluginStart, + ISearchStrategy, + SearchStrategyDependencies, +} from '@kbn/data-plugin/server'; + +import { requestIndexFieldSearch } from '@kbn/timelines-plugin/server/search_strategy/index_fields'; + +import { eventsIndexPattern, METADATA_UNITED_INDEX } from '../../../common/endpoint/constants'; +import type { + BeatFields, + IndexFieldsStrategyRequest, + IndexFieldsStrategyResponse, +} from '../../../common/search_strategy'; +import type { EndpointAppContextService } from '../../endpoint/endpoint_app_context_services'; +import { EndpointAuthorizationError } from '../../endpoint/errors'; +import { parseRequest } from './parse_request'; + +/** + * EndpointFieldProvider mimics indexField provider from timeline plugin: x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts + * but it uses ES internalUser instead to avoid adding extra index privileges for users with event filters permissions. + * It is used to retrieve index patterns for event filters form. + */ +export const endpointFieldsProvider = ( + context: EndpointAppContextService, + indexPatterns: DataViewsServerPluginStart +): ISearchStrategy, IndexFieldsStrategyResponse> => { + // require the fields once we actually need them, rather than ahead of time, and pass + // them to createFieldItem to reduce the amount of work done as much as possible + const beatFields: BeatFields = + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('@kbn/timelines-plugin/server/utils/beat_schema/fields.json').fieldsBeat; + + return { + search: (request, _, deps) => + from(requestEndpointFieldsSearch(context, request, deps, beatFields, indexPatterns)), + }; +}; + +export const requestEndpointFieldsSearch = async ( + context: EndpointAppContextService, + request: IndexFieldsStrategyRequest<'indices'>, + deps: SearchStrategyDependencies, + beatFields: BeatFields, + indexPatterns: DataViewsServerPluginStart +): Promise => { + const parsedRequest = parseRequest(request); + + if ( + parsedRequest.indices.length > 1 || + (parsedRequest.indices[0] !== eventsIndexPattern && + parsedRequest.indices[0] !== METADATA_UNITED_INDEX) + ) { + throw new Error(`Invalid indices request ${request.indices.join(', ')}`); + } + + const { canWriteEventFilters, canReadEndpointList } = await context.getEndpointAuthz( + deps.request + ); + + if ( + (!canWriteEventFilters && parsedRequest.indices[0] === eventsIndexPattern) || + (!canReadEndpointList && parsedRequest.indices[0] === METADATA_UNITED_INDEX) + ) { + throw new EndpointAuthorizationError(); + } + + return requestIndexFieldSearch(parsedRequest, deps, beatFields, indexPatterns, true); +}; diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/parse_request.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/parse_request.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/parse_request.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_fields/parse_request.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint_package_policies_stats/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_package_policies_stats/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint_package_policies_stats/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_package_policies_stats/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint_package_policies_stats/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_package_policies_stats/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/endpoint_package_policies_stats/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/endpoint_package_policies_stats/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/helpers/format_response_object_values.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/helpers/format_response_object_values.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/helpers/format_response_object_values.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/helpers/format_response_object_values.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/helpers/format_response_object_values.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/helpers/format_response_object_values.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/helpers/format_response_object_values.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/helpers/format_response_object_values.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/helpers/get_flattened_fields.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/helpers/get_flattened_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/helpers/get_flattened_fields.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/helpers/get_flattened_fields.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/search_strategy/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/jest.config.js new file mode 100644 index 0000000000000..f6d5aafd60dda --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/server/search_strategy'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server/search_strategy', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/search_strategy/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/asset_criticality/query.asset_criticality.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/asset_criticality/query.asset_criticality.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/asset_criticality/query.asset_criticality.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/asset_criticality/query.asset_criticality.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/factory.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/factory.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/factory.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/factory.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/query.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/query.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/query.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/query.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/query.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/query.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/query.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/event_enrichment/response.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/query.threat_intel_source.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/query.threat_intel_source.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/query.threat_intel_source.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/query.threat_intel_source.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/query.threat_intel_source.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/query.threat_intel_source.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/query.threat_intel_source.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/cti/threat_intel_source/query.threat_intel_source.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/query.all_hosts.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/query.all_hosts.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/query.all_hosts.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/query.all_hosts.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/query.all_hosts.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/query.all_hosts.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/query.all_hosts.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/all/query.all_hosts.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/helper.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/helper.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/helper.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/helper.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/query.host_details.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/query.host_details.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/query.host_details.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/query.host_details.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/query.host_details.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/query.host_details.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/query.host_details.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/query.host_details.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/query.overview_host.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/query.overview_host.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/query.overview_host.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/query.overview_host.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/query.overview_host.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/query.overview_host.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/query.overview_host.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/overview/query.overview_host.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/dsl/query.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/dsl/query.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/dsl/query.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/dsl/query.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/dsl/query.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/dsl/query.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/dsl/query.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/dsl/query.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/uncommon_processes/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/query.first_or_last_seen.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/query.first_or_last_seen.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/query.first_or_last_seen.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/query.first_or_last_seen.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/query.first_or_last_seen.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/query.first_or_last_seen.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/query.first_or_last_seen.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/last_first_seen/query.first_or_last_seen.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/query.details_network.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/query.details_network.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/query.details_network.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/query.details_network.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/query.details_network.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/query.details_network.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/query.details_network.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/details/query.details_network.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/query.dns_network.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/query.dns_network.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/query.dns_network.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/query.dns_network.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/query.dns_network.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/query.dns_network.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/query.dns_network.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/dns/query.dns_network.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/query.http_network.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/query.http_network.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/query.http_network.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/query.http_network.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/query.http_network.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/query.http_network.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/query.http_network.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/http/query.http_network.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/query.overview_network.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/query.overview_network.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/query.overview_network.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/query.overview_network.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/query.overview_network.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/query.overview_network.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/query.overview_network.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/overview/query.overview_network.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/query.tls_network.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/query.tls_network.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/query.tls_network.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/query.tls_network.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/query.tls_network.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/query.tls_network.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/query.tls_network.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/tls/query.tls_network.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/query.top_countries_network.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/query.top_countries_network.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/query.top_countries_network.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/query.top_countries_network.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/query.top_countries_network.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/query.top_countries_network.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/query.top_countries_network.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_countries/query.top_countries_network.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/query.top_n_flow_network.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/query.top_n_flow_network.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/query.top_n_flow_network.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/query.top_n_flow_network.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/query.top_n_flow_network.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/query.top_n_flow_network.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/query.top_n_flow_network.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/top_n_flow/query.top_n_flow_network.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/query.users_network.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/query.users_network.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/query.users_network.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/query.users_network.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/query.users_network.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/query.users_network.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/query.users_network.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/network/users/query.users_network.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/query.related_hosts.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/query.related_hosts.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/query.related_hosts.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/query.related_hosts.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/query.related_hosts.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/query.related_hosts.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/query.related_hosts.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_hosts/query.related_hosts.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/query.related_users.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/query.related_users.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/query.related_users.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/query.related_users.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/query.related_users.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/query.related_users.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/query.related_users.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/related_entities/related_users/query.related_users.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/query.risk_score.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/query.risk_score.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/query.risk_score.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/all/query.risk_score.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/query.kpi_risk_score.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/query.kpi_risk_score.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/query.kpi_risk_score.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score/kpi/query.kpi_risk_score.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/types.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/types.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__snapshots__/index.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__snapshots__/index.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__snapshots__/index.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__snapshots__/index.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__snapshots__/query.all_users.dsl.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__snapshots__/query.all_users.dsl.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__snapshots__/query.all_users.dsl.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/__snapshots__/query.all_users.dsl.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/query.all_users.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/query.all_users.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/query.all_users.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/query.all_users.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/query.all_users.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/query.all_users.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/query.all_users.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/all/query.all_users.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/dsl/query.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/dsl/query.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/dsl/query.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/dsl/query.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/dsl/query.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/dsl/query.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/dsl/query.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/dsl/query.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/helpers.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/helpers.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/helpers.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/index.tsx b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/index.tsx rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/authentications/index.tsx diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/__snapshots__/index.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/__snapshots__/index.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/__snapshots__/index.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/__snapshots__/index.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/__snapshots__/query.managed_user_details.dsl.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/__snapshots__/query.managed_user_details.dsl.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/__snapshots__/query.managed_user_details.dsl.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/__snapshots__/query.managed_user_details.dsl.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/query.managed_user_details.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/query.managed_user_details.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/query.managed_user_details.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/query.managed_user_details.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/query.managed_user_details.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/query.managed_user_details.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/query.managed_user_details.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/managed_details/query.managed_user_details.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__mocks__/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__mocks__/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__mocks__/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__snapshots__/index.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__snapshots__/index.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__snapshots__/index.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__snapshots__/index.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__snapshots__/query.observed_user_details.dsl.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__snapshots__/query.observed_user_details.dsl.test.ts.snap similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__snapshots__/query.observed_user_details.dsl.test.ts.snap rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/__snapshots__/query.observed_user_details.dsl.test.ts.snap diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/helper.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/helper.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/helper.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/helper.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/helpers.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/index.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/index.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/index.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/index.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/index.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/query.observed_user_details.dsl.test.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/query.observed_user_details.dsl.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/query.observed_user_details.dsl.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/query.observed_user_details.dsl.test.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/query.observed_user_details.dsl.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/query.observed_user_details.dsl.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/query.observed_user_details.dsl.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/factory/users/observed_details/query.observed_user_details.dsl.ts diff --git a/x-pack/plugins/security_solution/server/search_strategy/security_solution/index.ts b/x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/search_strategy/security_solution/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/search_strategy/security_solution/index.ts diff --git a/x-pack/plugins/security_solution/server/security_integrations/handlers/put_cribl_routing_pipeline.ts b/x-pack/solutions/security/plugins/security_solution/server/security_integrations/handlers/put_cribl_routing_pipeline.ts similarity index 100% rename from x-pack/plugins/security_solution/server/security_integrations/handlers/put_cribl_routing_pipeline.ts rename to x-pack/solutions/security/plugins/security_solution/server/security_integrations/handlers/put_cribl_routing_pipeline.ts diff --git a/x-pack/plugins/security_solution/server/security_integrations/index.ts b/x-pack/solutions/security/plugins/security_solution/server/security_integrations/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/security_integrations/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/security_integrations/index.ts diff --git a/x-pack/plugins/security_solution/server/security_integrations/security_integrations.ts b/x-pack/solutions/security/plugins/security_solution/server/security_integrations/security_integrations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/security_integrations/security_integrations.ts rename to x-pack/solutions/security/plugins/security_solution/server/security_integrations/security_integrations.ts diff --git a/x-pack/plugins/security_solution/server/types.ts b/x-pack/solutions/security/plugins/security_solution/server/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/types.ts diff --git a/x-pack/plugins/security_solution/server/ui_settings.ts b/x-pack/solutions/security/plugins/security_solution/server/ui_settings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/ui_settings.ts rename to x-pack/solutions/security/plugins/security_solution/server/ui_settings.ts diff --git a/x-pack/plugins/security_solution/server/usage/collector.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/collector.ts similarity index 99% rename from x-pack/plugins/security_solution/server/usage/collector.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/collector.ts index ca016d07d5099..aa507cd683db5 100644 --- a/x-pack/plugins/security_solution/server/usage/collector.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/collector.ts @@ -32,6 +32,7 @@ export const registerCollector: RegisterCollector = ({ usageCollection, logger, riskEngineIndexPatterns, + legacySignalsIndex, }) => { if (!usageCollection) { logger.debug('Usage collection is undefined, therefore returning early without registering it'); @@ -3076,6 +3077,21 @@ export const registerCollector: RegisterCollector = ({ }, }, }, + legacy_siem_signals: { + non_migrated_indices_total: { + type: 'long', + _meta: { + description: 'Total number of non migrated legacy siem signals indices', + }, + }, + spaces_total: { + type: 'long', + _meta: { + description: + 'Total number of Kibana spaces that have non migrated legacy siem signals indices', + }, + }, + }, }, endpointMetrics: { unique_endpoint_count: { @@ -3130,6 +3146,7 @@ export const registerCollector: RegisterCollector = ({ savedObjectsClient, logger, mlClient: ml, + legacySignalsIndex, }), getEndpointMetrics({ esClient, logger }), getDashboardMetrics({ diff --git a/x-pack/plugins/security_solution/server/usage/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/constants.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/constants.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/constants.ts diff --git a/x-pack/plugins/security_solution/server/usage/dashboards/get_dashboards_metrics.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/dashboards/get_dashboards_metrics.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/dashboards/get_dashboards_metrics.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/dashboards/get_dashboards_metrics.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/dashboards/get_dashboards_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/dashboards/get_dashboards_metrics.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/dashboards/get_dashboards_metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/dashboards/get_dashboards_metrics.ts diff --git a/x-pack/plugins/security_solution/server/usage/dashboards/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/dashboards/mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/dashboards/mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/dashboards/mocks.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/usage/detections/get_initial_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/get_initial_usage.ts new file mode 100644 index 0000000000000..538ea2509c463 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/get_initial_usage.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DetectionMetrics } from './types'; + +import { getInitialMlJobUsage } from './ml_jobs/get_initial_usage'; +import { getInitialEventLogUsage, getInitialRulesUsage } from './rules/get_initial_usage'; +// eslint-disable-next-line no-restricted-imports +import { getInitialLegacySiemSignalsUsage } from './legacy_siem_signals/get_initial_usage'; + +/** + * Initial detection metrics initialized. + */ +export const getInitialDetectionMetrics = (): DetectionMetrics => ({ + ml_jobs: { + ml_job_usage: getInitialMlJobUsage(), + ml_job_metrics: [], + }, + detection_rules: { + detection_rule_detail: [], + detection_rule_usage: getInitialRulesUsage(), + detection_rule_status: getInitialEventLogUsage(), + }, + legacy_siem_signals: getInitialLegacySiemSignalsUsage(), +}); diff --git a/x-pack/plugins/security_solution/server/usage/detections/get_metrics.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/get_metrics.test.ts similarity index 98% rename from x-pack/plugins/security_solution/server/usage/detections/get_metrics.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/get_metrics.test.ts index be5044fbb4e21..cb5006799a1cf 100644 --- a/x-pack/plugins/security_solution/server/usage/detections/get_metrics.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/get_metrics.test.ts @@ -57,6 +57,7 @@ describe('Detections Usage and Metrics', () => { savedObjectsClient, logger, mlClient, + legacySignalsIndex: '', }); expect(result).toEqual(getInitialDetectionMetrics()); }); @@ -79,6 +80,7 @@ describe('Detections Usage and Metrics', () => { savedObjectsClient, logger, mlClient, + legacySignalsIndex: '', }); expect(result).toEqual({ @@ -154,6 +156,7 @@ describe('Detections Usage and Metrics', () => { savedObjectsClient, logger, mlClient, + legacySignalsIndex: '', }); expect(result).toEqual({ @@ -210,6 +213,7 @@ describe('Detections Usage and Metrics', () => { savedObjectsClient, logger, mlClient, + legacySignalsIndex: '', }); expect(result).toEqual({ @@ -290,6 +294,7 @@ describe('Detections Usage and Metrics', () => { savedObjectsClient, logger, mlClient, + legacySignalsIndex: '', }); expect(result).toEqual(getInitialDetectionMetrics()); }); @@ -329,6 +334,7 @@ describe('Detections Usage and Metrics', () => { savedObjectsClient, logger, mlClient, + legacySignalsIndex: '', }); expect(result).toEqual( diff --git a/x-pack/solutions/security/plugins/security_solution/server/usage/detections/get_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/get_metrics.ts new file mode 100644 index 0000000000000..61badd153c65f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/get_metrics.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ElasticsearchClient, SavedObjectsClientContract, Logger } from '@kbn/core/server'; +import type { MlPluginSetup } from '@kbn/ml-plugin/server'; +import type { DetectionMetrics } from './types'; + +import { getMlJobMetrics } from './ml_jobs/get_metrics'; +import { getRuleMetrics } from './rules/get_metrics'; +import { getInitialEventLogUsage, getInitialRulesUsage } from './rules/get_initial_usage'; +import { getInitialMlJobUsage } from './ml_jobs/get_initial_usage'; +// eslint-disable-next-line no-restricted-imports +import { getInitialLegacySiemSignalsUsage } from './legacy_siem_signals/get_initial_usage'; +// eslint-disable-next-line no-restricted-imports +import { getLegacySiemSignalsUsage } from './legacy_siem_signals/get_legacy_siem_signals_metrics'; + +export interface GetDetectionsMetricsOptions { + signalsIndex: string; + esClient: ElasticsearchClient; + savedObjectsClient: SavedObjectsClientContract; + logger: Logger; + mlClient: MlPluginSetup | undefined; + eventLogIndex: string; + legacySignalsIndex: string; +} + +export const getDetectionsMetrics = async ({ + eventLogIndex, + signalsIndex, + esClient, + savedObjectsClient, + logger, + mlClient, + legacySignalsIndex, +}: GetDetectionsMetricsOptions): Promise => { + const [mlJobMetrics, detectionRuleMetrics, legacySiemSignalsUsage] = await Promise.allSettled([ + getMlJobMetrics({ mlClient, savedObjectsClient, logger }), + getRuleMetrics({ signalsIndex, eventLogIndex, esClient, savedObjectsClient, logger }), + getLegacySiemSignalsUsage({ signalsIndex: legacySignalsIndex, esClient, logger }), + ]); + + return { + ml_jobs: + mlJobMetrics.status === 'fulfilled' + ? mlJobMetrics.value + : { ml_job_metrics: [], ml_job_usage: getInitialMlJobUsage() }, + detection_rules: + detectionRuleMetrics.status === 'fulfilled' + ? detectionRuleMetrics.value + : { + detection_rule_detail: [], + detection_rule_usage: getInitialRulesUsage(), + detection_rule_status: getInitialEventLogUsage(), + }, + legacy_siem_signals: + legacySiemSignalsUsage.status === 'fulfilled' + ? legacySiemSignalsUsage.value + : getInitialLegacySiemSignalsUsage(), + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/usage/detections/legacy_siem_signals/get_initial_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/legacy_siem_signals/get_initial_usage.ts new file mode 100644 index 0000000000000..df222f9750490 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/legacy_siem_signals/get_initial_usage.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { LegacySiemSignals } from './types'; + +export const getInitialLegacySiemSignalsUsage = (): LegacySiemSignals => ({ + non_migrated_indices_total: 0, + spaces_total: 0, +}); diff --git a/x-pack/solutions/security/plugins/security_solution/server/usage/detections/legacy_siem_signals/get_legacy_siem_signals_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/legacy_siem_signals/get_legacy_siem_signals_metrics.ts new file mode 100644 index 0000000000000..a6d2b8bf06aff --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/legacy_siem_signals/get_legacy_siem_signals_metrics.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { getNonMigratedSignalsInfo } from '../../../lib/detection_engine/migrations/get_non_migrated_signals_info'; +import type { LegacySiemSignals } from './types'; + +export interface GetLegacySiemSignalsUsageOptions { + signalsIndex: string; + esClient: ElasticsearchClient; + logger: Logger; +} + +export const getLegacySiemSignalsUsage = async ({ + signalsIndex, + esClient, + logger, +}: GetLegacySiemSignalsUsageOptions): Promise => { + const { indices, spaces } = await getNonMigratedSignalsInfo({ + esClient, + signalsIndex, + logger, + }); + + return { + non_migrated_indices_total: indices.length, + spaces_total: spaces.length, + }; +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/usage/detections/legacy_siem_signals/types.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/legacy_siem_signals/types.ts new file mode 100644 index 0000000000000..b4351b2e7808f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/legacy_siem_signals/types.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +export interface LegacySiemSignals { + non_migrated_indices_total: number; + spaces_total: number; +} diff --git a/x-pack/plugins/security_solution/server/usage/detections/ml_jobs/get_initial_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/get_initial_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/ml_jobs/get_initial_usage.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/get_initial_usage.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/ml_jobs/get_metrics.mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/get_metrics.mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/ml_jobs/get_metrics.mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/get_metrics.mocks.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/ml_jobs/get_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/get_metrics.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/ml_jobs/get_metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/get_metrics.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/ml_jobs/transform_utils/get_job_correlations.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/transform_utils/get_job_correlations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/ml_jobs/transform_utils/get_job_correlations.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/transform_utils/get_job_correlations.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/ml_jobs/types.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/ml_jobs/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/types.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/ml_jobs/update_usage.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/update_usage.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/ml_jobs/update_usage.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/update_usage.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/ml_jobs/update_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/update_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/ml_jobs/update_usage.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/ml_jobs/update_usage.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/get_initial_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_initial_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/get_initial_usage.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_initial_usage.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_metrics.mocks.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/get_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_metrics.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/get_metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/get_metrics.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/transform_utils/get_alert_id_to_count_map.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/transform_utils/get_alert_id_to_count_map.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/transform_utils/get_alert_id_to_count_map.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/transform_utils/get_alert_id_to_count_map.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_id_to_cases_map.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_id_to_cases_map.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_id_to_cases_map.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_id_to_cases_map.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_id_to_enabled_map.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_id_to_enabled_map.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_id_to_enabled_map.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_id_to_enabled_map.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_object_correlations.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_object_correlations.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_object_correlations.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/transform_utils/get_rule_object_correlations.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/types.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/types.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/update_usage.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/update_usage.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/update_usage.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/update_usage.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/update_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/update_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/update_usage.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/update_usage.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/get_alert_suppression_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/get_alert_suppression_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/get_alert_suppression_usage.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/get_alert_suppression_usage.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/get_notifications_enabled_disabled.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/get_notifications_enabled_disabled.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/get_notifications_enabled_disabled.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/get_notifications_enabled_disabled.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/update_alert_suppression_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/update_alert_suppression_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/update_alert_suppression_usage.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/update_alert_suppression_usage.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/update_query_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/update_query_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/update_query_usage.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/update_query_usage.ts diff --git a/x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/update_total_usage.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/update_total_usage.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/detections/rules/usage_utils/update_total_usage.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/detections/rules/usage_utils/update_total_usage.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/usage/detections/types.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/types.ts new file mode 100644 index 0000000000000..3edbd028b6321 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/detections/types.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { MlJobUsageMetric } from './ml_jobs/types'; +import type { RuleAdoption } from './rules/types'; +// eslint-disable-next-line no-restricted-imports +import type { LegacySiemSignals } from './legacy_siem_signals/types'; + +export interface DetectionMetrics { + ml_jobs: MlJobUsageMetric; + detection_rules: RuleAdoption; + legacy_siem_signals: LegacySiemSignals; +} diff --git a/x-pack/plugins/security_solution/server/usage/endpoint/get_metrics.mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/endpoint/get_metrics.mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/endpoint/get_metrics.mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/endpoint/get_metrics.mocks.ts diff --git a/x-pack/plugins/security_solution/server/usage/endpoint/get_metrics.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/endpoint/get_metrics.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/endpoint/get_metrics.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/endpoint/get_metrics.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/endpoint/get_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/endpoint/get_metrics.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/endpoint/get_metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/endpoint/get_metrics.ts diff --git a/x-pack/plugins/security_solution/server/usage/endpoint/types.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/endpoint/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/endpoint/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/endpoint/types.ts diff --git a/x-pack/plugins/security_solution/server/usage/get_internal_saved_objects_client.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/get_internal_saved_objects_client.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/get_internal_saved_objects_client.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/get_internal_saved_objects_client.ts diff --git a/x-pack/plugins/security_solution/server/usage/index.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/usage/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/usage/jest.config.js new file mode 100644 index 0000000000000..be2b9bb6736b8 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/server/usage'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server/usage', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/usage/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/usage/queries/get_alerts.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/get_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/get_alerts.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/get_alerts.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/get_case_comments.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/get_case_comments.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/get_case_comments.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/get_case_comments.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/get_detection_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/get_detection_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/get_detection_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/get_detection_rules.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/get_event_log_by_type_and_status.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/get_event_log_by_type_and_status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/get_event_log_by_type_and_status.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/get_event_log_by_type_and_status.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/legacy_get_rule_actions.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/legacy_get_rule_actions.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/legacy_get_rule_actions.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/legacy_get_rule_actions.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/count_totals.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/count_totals.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/count_totals.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/count_totals.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/count_totals.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/count_totals.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/count_totals.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/count_totals.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type_metrics.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type_metrics.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type_metrics.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type_metrics.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type_metrics.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type_metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_type_metrics.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types_metrics.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types_metrics.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types_metrics.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types_metrics.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types_metrics.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types_metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_rule_types_metrics.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_status.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_status.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_status.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_status.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_status.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_status.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_status.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_statuses.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_statuses.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_statuses.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_statuses.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_statuses.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_statuses.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_statuses.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_agg_by_statuses.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_by_type_and_status.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_by_type_and_status.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_event_log_by_type_and_status.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_event_log_by_type_and_status.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_all_rules.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_all_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_all_rules.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_all_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_all_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_all_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_all_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_all_rules.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_custom_rules.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_custom_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_custom_rules.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_custom_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_custom_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_custom_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_custom_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_custom_rules.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_elastic_rules.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_elastic_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_elastic_rules.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_elastic_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_elastic_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_elastic_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/get_search_for_elastic_rules.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/get_search_for_elastic_rules.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/transform_categories.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_categories.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/transform_categories.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_categories.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/transform_categories.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_categories.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/transform_categories.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_categories.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/transform_category_bucket.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_category_bucket.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/transform_category_bucket.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_category_bucket.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/transform_category_bucket.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_category_bucket.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/transform_category_bucket.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_category_bucket.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/transform_event_log_type_status.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_event_log_type_status.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/transform_event_log_type_status.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_event_log_type_status.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/transform_event_log_type_status.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_event_log_type_status.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/transform_event_log_type_status.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_event_log_type_status.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/transform_single_rule_metric.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_single_rule_metric.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/transform_single_rule_metric.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_single_rule_metric.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/queries/utils/transform_single_rule_metric.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_single_rule_metric.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/queries/utils/transform_single_rule_metric.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/queries/utils/transform_single_rule_metric.ts diff --git a/x-pack/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.mocks.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.mocks.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.mocks.ts diff --git a/x-pack/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.test.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.test.ts diff --git a/x-pack/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/get_risk_engine_metrics.ts diff --git a/x-pack/plugins/security_solution/server/usage/risk_engine/schema.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/schema.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/risk_engine/schema.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/schema.ts diff --git a/x-pack/plugins/security_solution/server/usage/risk_engine/types.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/usage/risk_engine/types.ts rename to x-pack/solutions/security/plugins/security_solution/server/usage/risk_engine/types.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/usage/types.ts b/x-pack/solutions/security/plugins/security_solution/server/usage/types.ts new file mode 100644 index 0000000000000..fdaaac663ad41 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/usage/types.ts @@ -0,0 +1,170 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { CoreSetup, Logger } from '@kbn/core/server'; +import type { SanitizedRule } from '@kbn/alerting-plugin/common'; +import type { RuleParams } from '../lib/detection_engine/rule_schema'; +import type { SetupPlugins } from '../plugin'; + +export interface DashboardUsage { + created_at: string | undefined; + dashboard_id: string; + error_message?: string; + error_status_code?: number; +} +export interface DashboardMetrics { + dashboard_tag?: { + created_at: string | undefined; + linked_dashboards_count: number; + }; + dashboards?: DashboardUsage[]; +} + +export type CollectorDependencies = { + signalsIndex: string; + core: CoreSetup; + logger: Logger; + eventLogIndex: string; + riskEngineIndexPatterns: { + all: string; + latest: string; + }; + legacySignalsIndex: string; +} & Pick; + +export interface AlertBucket { + key: { + detectionAlerts: string; + }; + doc_count: number; +} + +export interface AlertAggs { + buckets?: { + after_key?: { + detectionAlerts: string; + }; + buckets: AlertBucket[]; + }; +} + +/** + * This type is _very_ similar to "RawRule". However, that type is not exposed in a non-restricted-path + * and it does not support generics well. Trying to use "RawRule" directly with TypeScript Omit does not work well. + * If at some point the rules client API supports cross spaces for gathering metrics, then we should remove our use + * of SavedObject types and this type below and instead natively use the rules client. + * + * NOTE: There are additional types not expressed below such as "apiKey" or there could be other slight differences + * but this will the easiest way to keep these in sync and I see other code that is similar to this pattern. + * {@see RawRule} + */ +export type RuleSearchResult = Omit< + SanitizedRule, + 'createdBy' | 'updatedBy' | 'createdAt' | 'updatedAt' +> & { + createdBy: string | null; + updatedBy: string | null; + createdAt: string; + updatedAt: string; +}; + +export type RuleStatus = 'running' | 'succeeded' | 'partial failure' | 'failed'; + +export interface CountCardinality { + doc_count: number; + cardinality: { + value: number | null; + }; +} + +export interface Categories { + buckets: Array<{ doc_count: number; key: string }>; +} +export interface CountCardinalityWithCategories extends CountCardinality { + categories: Categories; +} + +export interface SingleEVentLogTypeStatusAgg { + doc_count: number; + 'siem.queryRule': CountCardinality; + 'siem.savedQueryRule': CountCardinality; + 'siem.eqlRule': CountCardinality; + 'siem.thresholdRule': CountCardinality; + 'siem.mlRule': CountCardinality; + 'siem.indicatorRule': CountCardinality; +} + +export interface SingleEVentLogTypeStatusAggWithCategories { + doc_count: number; + 'siem.queryRule': CountCardinalityWithCategories; + 'siem.savedQueryRule': CountCardinalityWithCategories; + 'siem.eqlRule': CountCardinalityWithCategories; + 'siem.thresholdRule': CountCardinalityWithCategories; + 'siem.mlRule': CountCardinalityWithCategories; + 'siem.indicatorRule': CountCardinalityWithCategories; +} + +export interface SingleExecutionMetricAgg { + doc_count: number; + maxTotalIndexDuration: { + value: number | null; + }; + avgTotalIndexDuration: { + value: number | null; + }; + minTotalIndexDuration: { + value: number | null; + }; + gapCount: { + value: number | null; + }; + maxGapDuration: { + value: number | null; + }; + avgGapDuration: { + value: number | null; + }; + minGapDuration: { + value: number | null; + }; + maxTotalSearchDuration: { + value: number | null; + }; + avgTotalSearchDuration: { + value: number | null; + }; + minTotalSearchDuration: { + value: number | null; + }; + maxTotalEnrichmentDuration: { + value: number | null; + }; + avgTotalEnrichmentDuration: { + value: number | null; + }; + minTotalEnrichmentDuration: { + value: number | null; + }; +} + +export interface EventLogTypeStatusAggs { + eventActionStatusChange: { + doc_count: number; + 'partial failure': SingleEVentLogTypeStatusAggWithCategories; + failed: SingleEVentLogTypeStatusAggWithCategories; + succeeded: SingleEVentLogTypeStatusAgg; + }; + eventActionExecutionMetrics: { + doc_count: number; + 'siem.queryRule': SingleExecutionMetricAgg; + 'siem.savedQueryRule': SingleExecutionMetricAgg; + 'siem.eqlRule': SingleExecutionMetricAgg; + 'siem.thresholdRule': SingleExecutionMetricAgg; + 'siem.mlRule': SingleExecutionMetricAgg; + 'siem.indicatorRule': SingleExecutionMetricAgg; + }; +} diff --git a/x-pack/plugins/security_solution/server/utils/build_query/calculate_timeseries_interval.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/build_query/calculate_timeseries_interval.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/build_query/calculate_timeseries_interval.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/build_query/calculate_timeseries_interval.ts diff --git a/x-pack/plugins/security_solution/server/utils/build_query/filters.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/build_query/filters.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/build_query/filters.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/build_query/filters.ts diff --git a/x-pack/plugins/security_solution/server/utils/build_query/index.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/build_query/index.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/build_query/index.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/build_query/index.ts diff --git a/x-pack/plugins/security_solution/server/utils/build_query/merge_fields_with_hits.test.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/build_query/merge_fields_with_hits.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/build_query/merge_fields_with_hits.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/build_query/merge_fields_with_hits.test.ts diff --git a/x-pack/plugins/security_solution/server/utils/build_query/merge_fields_with_hits.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/build_query/merge_fields_with_hits.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/build_query/merge_fields_with_hits.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/build_query/merge_fields_with_hits.ts diff --git a/x-pack/plugins/security_solution/server/utils/build_query/reduce_fields.test.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/build_query/reduce_fields.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/build_query/reduce_fields.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/build_query/reduce_fields.test.ts diff --git a/x-pack/plugins/security_solution/server/utils/build_query/reduce_fields.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/build_query/reduce_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/build_query/reduce_fields.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/build_query/reduce_fields.ts diff --git a/x-pack/plugins/security_solution/server/utils/build_validation/route_validation.test.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/build_validation/route_validation.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/build_validation/route_validation.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/build_validation/route_validation.test.ts diff --git a/x-pack/plugins/security_solution/server/utils/build_validation/route_validation.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/build_validation/route_validation.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/build_validation/route_validation.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/build_validation/route_validation.ts diff --git a/x-pack/plugins/security_solution/server/utils/custom_http_request_error.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/custom_http_request_error.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/custom_http_request_error.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/custom_http_request_error.ts diff --git a/x-pack/plugins/security_solution/server/utils/error_helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/error_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/error_helpers.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/error_helpers.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/utils/jest.config.js b/x-pack/solutions/security/plugins/security_solution/server/utils/jest.config.js new file mode 100644 index 0000000000000..aac14976a7e7f --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/utils/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution/server/utils'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution/server/utils', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution/server/utils/**/*.{ts,tsx}', + ], + moduleNameMapper: require('../__mocks__/module_name_map'), +}; diff --git a/x-pack/plugins/security_solution/server/utils/object_case_converters.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/object_case_converters.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/object_case_converters.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/object_case_converters.ts diff --git a/x-pack/plugins/security_solution/server/utils/promise_pool.test.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/promise_pool.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/promise_pool.test.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/promise_pool.test.ts diff --git a/x-pack/plugins/security_solution/server/utils/promise_pool.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/promise_pool.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/promise_pool.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/promise_pool.ts diff --git a/x-pack/plugins/security_solution/server/utils/read_stream/create_stream_from_ndjson.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/read_stream/create_stream_from_ndjson.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/read_stream/create_stream_from_ndjson.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/read_stream/create_stream_from_ndjson.ts diff --git a/x-pack/plugins/security_solution/server/utils/route_limited_concurrency_tag.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/route_limited_concurrency_tag.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/route_limited_concurrency_tag.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/route_limited_concurrency_tag.ts diff --git a/x-pack/plugins/security_solution/server/utils/runtime_types.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/runtime_types.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/runtime_types.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/runtime_types.ts diff --git a/x-pack/plugins/security_solution/server/utils/serialized_query.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/serialized_query.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/serialized_query.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/serialized_query.ts diff --git a/x-pack/plugins/security_solution/server/utils/typed_elasticsearch_mappings.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/typed_elasticsearch_mappings.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/typed_elasticsearch_mappings.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/typed_elasticsearch_mappings.ts diff --git a/x-pack/plugins/security_solution/server/utils/with_security_span.ts b/x-pack/solutions/security/plugins/security_solution/server/utils/with_security_span.ts similarity index 100% rename from x-pack/plugins/security_solution/server/utils/with_security_span.ts rename to x-pack/solutions/security/plugins/security_solution/server/utils/with_security_span.ts diff --git a/x-pack/solutions/security/plugins/security_solution/tsconfig.json b/x-pack/solutions/security/plugins/security_solution/tsconfig.json new file mode 100644 index 0000000000000..82bde9dc795d0 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/tsconfig.json @@ -0,0 +1,239 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "scripts/**/*", + // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 + "common/**/*.json", + "server/**/*.json", + "scripts/**/*.json", + "public/**/*.json", + "../../../../../typings/**/*" + ], + "exclude": [ + "target/**/*", + "**/cypress/**", + "public/management/cypress.config.ts" + ], + "kbn_references": [ + "@kbn/core", + { + "path": "../../../../../src/setup_node_env/tsconfig.json" + }, + "@kbn/data-plugin", + "@kbn/embeddable-plugin", + "@kbn/files-plugin", + "@kbn/home-plugin", + "@kbn/inspector-plugin", + "@kbn/ui-actions-plugin", + "@kbn/newsfeed-plugin", + "@kbn/usage-collection-plugin", + "@kbn/telemetry-plugin", + "@kbn/data-view-field-editor-plugin", + "@kbn/unified-search-plugin", + "@kbn/actions-plugin", + "@kbn/alerting-plugin", + "@kbn/cases-plugin", + "@kbn/cloud-security-posture-plugin", + "@kbn/encrypted-saved-objects-plugin", + "@kbn/features-plugin", + "@kbn/fleet-plugin", + "@kbn/kubernetes-security-plugin", + "@kbn/licensing-plugin", + "@kbn/lists-plugin", + "@kbn/maps-plugin", + "@kbn/ml-plugin", + "@kbn/osquery-plugin", + "@kbn/session-view-plugin", + "@kbn/security-plugin", + "@kbn/spaces-plugin", + "@kbn/threat-intelligence-plugin", + "@kbn/timelines-plugin", + "@kbn/es-query", + "@kbn/utility-types", + "@kbn/securitysolution-list-utils", + "@kbn/securitysolution-io-ts-list-types", + "@kbn/securitysolution-io-ts-alerting-types", + "@kbn/test", + "@kbn/std", + "@kbn/rule-data-utils", + "@kbn/securitysolution-t-grid", + "@kbn/rule-registry-plugin", + "@kbn/securitysolution-utils", + "@kbn/securitysolution-list-constants", + "@kbn/config-schema", + "@kbn/triggers-actions-ui-plugin", + "@kbn/securitysolution-io-ts-types", + "@kbn/securitysolution-io-ts-utils", + "@kbn/osquery-io-ts-types", + "@kbn/core-capabilities-common", + "@kbn/es-ui-shared-plugin", + "@kbn/i18n", + "@kbn/kibana-utils-plugin", + "@kbn/lens-plugin", + "@kbn/dashboard-plugin", + "@kbn/saved-objects-tagging-oss-plugin", + "@kbn/guided-onboarding-plugin", + "@kbn/i18n-react", + "@kbn/kibana-react-plugin", + "@kbn/ecs-data-quality-dashboard", + "@kbn/elastic-assistant", + "@kbn/elastic-assistant-plugin", + "@kbn/data-views-plugin", + "@kbn/datemath", + "@kbn/ui-theme", + "@kbn/securitysolution-list-api", + "@kbn/core-http-browser", + "@kbn/core-http-browser-mocks", + "@kbn/securitysolution-list-hooks", + "@kbn/securitysolution-exception-list-components", + "@kbn/securitysolution-exceptions-common", + "@kbn/rison", + "@kbn/shared-ux-page-kibana-template", + "@kbn/securitysolution-hook-utils", + "@kbn/test-jest-helpers", + "@kbn/safer-lodash-set", + "@kbn/securitysolution-autocomplete", + "@kbn/core-application-browser", + "@kbn/expect", + "@kbn/share-plugin", + "@kbn/analytics", + "@kbn/core-notifications-browser", + "@kbn/doc-links", + "@kbn/react-field", + "@kbn/field-types", + "@kbn/securitysolution-rules", + "@kbn/cases-components", + "@kbn/event-log-plugin", + "@kbn/task-manager-plugin", + "@kbn/cloud-plugin", + "@kbn/core-saved-objects-utils-server", + "@kbn/core-http-router-server-mocks", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/apm-utils", + "@kbn/core-saved-objects-server", + "@kbn/es-types", + "@kbn/utils", + "@kbn/logging-mocks", + "@kbn/securitysolution-es-utils", + "@kbn/logging", + "@kbn/utility-types-jest", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-api-server", + "@kbn/core-http-server", + "@kbn/dev-cli-runner", + "@kbn/dev-cli-errors", + "@kbn/dev-utils", + "@kbn/tooling-log", + "@kbn/core-status-common", + "@kbn/repo-info", + "@kbn/storybook", + "@kbn/controls-plugin", + "@kbn/core-saved-objects-common", + "@kbn/core-saved-objects-import-export-server-mocks", + "@kbn/user-profile-components", + "@kbn/guided-onboarding", + "@kbn/securitysolution-ecs", + "@kbn/cell-actions", + "@kbn/shared-ux-router", + "@kbn/charts-plugin", + "@kbn/alerts-as-data-utils", + "@kbn/cloud-defend-plugin", + "@kbn/expandable-flyout", + "@kbn/grouping", + "@kbn/securitysolution-data-table", + "@kbn/core-analytics-server", + "@kbn/security-solution-side-nav", + "@kbn/ml-anomaly-utils", + "@kbn/discover-plugin", + "@kbn/field-formats-plugin", + "@kbn/expressions-plugin", + "@kbn/dev-proc-runner", + "@kbn/alerts-ui-shared", + "@kbn/security-solution-navigation", + "@kbn/security-solution-upselling", + "@kbn/discover-plugin", + "@kbn/data-view-editor-plugin", + "@kbn/alerts-ui-shared", + "@kbn/saved-search-plugin", + "@kbn/unified-histogram-plugin", + "@kbn/navigation-plugin", + "@kbn/core-logging-server-mocks", + "@kbn/core-lifecycle-browser", + "@kbn/security-solution-features", + "@kbn/content-management-plugin", + "@kbn/discover-utils", + "@kbn/core-application-common", + "@kbn/openapi-generator", + "@kbn/openapi-bundler", + "@kbn/es", + "@kbn/react-kibana-mount", + "@kbn/react-kibana-context-styled", + "@kbn/unified-doc-viewer-plugin", + "@kbn/openapi-generator", + "@kbn/unified-data-table", + "@kbn/unified-doc-viewer", + "@kbn/dom-drag-drop", + "@kbn/unified-field-list", + "@kbn/resizable-layout", + "@kbn/zod-helpers", + "@kbn/core-http-common", + "@kbn/search-errors", + "@kbn/stack-connectors-plugin", + "@kbn/elastic-assistant-common", + "@kbn/core-elasticsearch-server-mocks", + "@kbn/lens-embeddable-utils", + "@kbn/esql-utils", + "@kbn/core-test-helpers-kbn-server", + "@kbn/core-ui-settings-server", + "@kbn/core-http-request-handler-context-server", + "@kbn/core-http-server-mocks", + "@kbn/data-service", + "@kbn/core-chrome-browser", + "@kbn/shared-ux-chrome-navigation", + "@kbn/core-ui-settings-browser-mocks", + "@kbn/management-plugin", + "@kbn/security-plugin-types-server", + "@kbn/deeplinks-security", + "@kbn/react-kibana-context-render", + "@kbn/search-types", + "@kbn/field-utils", + "@kbn/core-saved-objects-api-server-mocks", + "@kbn/core-analytics-browser", + "@kbn/core-i18n-browser", + "@kbn/core-theme-browser", + "@kbn/integration-assistant-plugin", + "@kbn/avc-banner", + "@kbn/config", + "@kbn/openapi-common", + "@kbn/securitysolution-lists-common", + "@kbn/cbor", + "@kbn/zod", + "@kbn/cloud-security-posture", + "@kbn/security-solution-distribution-bar", + "@kbn/cloud-security-posture-common", + "@kbn/cloud-security-posture-graph", + "@kbn/presentation-publishing", + "@kbn/entityManager-plugin", + "@kbn/entities-schema", + "@kbn/inference-plugin", + "@kbn/core-saved-objects-server-mocks", + "@kbn/core-security-server-mocks", + "@kbn/serverless", + "@kbn/core-user-profile-browser", + "@kbn/data-stream-adapter", + "@kbn/core-lifecycle-server", + "@kbn/core-user-profile-common", + "@kbn/langchain", + "@kbn/discover-shared-plugin", + "@kbn/react-hooks", + "@kbn/index-adapter", + "@kbn/core-http-server-utils", + "@kbn/llm-tasks-plugin" + ] +} diff --git a/x-pack/plugins/security_solution_serverless/.gitignore b/x-pack/solutions/security/plugins/security_solution_ess/.gitignore similarity index 100% rename from x-pack/plugins/security_solution_serverless/.gitignore rename to x-pack/solutions/security/plugins/security_solution_ess/.gitignore diff --git a/x-pack/solutions/security/plugins/security_solution_ess/README.md b/x-pack/solutions/security/plugins/security_solution_ess/README.md new file mode 100755 index 0000000000000..e2d5bdcb699f3 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_ess/README.md @@ -0,0 +1,76 @@ +# **Security Solution ESS Plugin** + +## **Table of Contents** +- [Introduction](#introduction) +- [Purpose](#purpose) +- [Architecture](#architecture) +- [Contributing](#contributing) +- [License](#license) + +## **Introduction** +The `security_solution_ess` plugin is an internal plugin for Kibana's Security Solution, designed to encapsulate ESS-specific logic. +This plugin is only enabled when the application is built for stateful deployments (ESS or on-prem), keeping the main `security_solution` plugin clean and agnostic of the offering model. + +> The term ESS used by this plugin is not strictly referring to Cloud deployments, it's used to refer to all stateful deployments (non-serverless), including on-prem instances. + +## **Purpose** +The primary goal of the `security_solution_ess` plugin is to: +- Isolate ess-specific code and configuration from the main `security_solution` plugin. +- Enable seamless integration with the non-serverless environment without affecting the serverless build of the Security Solution. +- Provide a modular approach by encapsulating ess-related functionality, thereby maintaining the codebase's cleanliness and modularity. + +## **Architecture** +The `security_solution_ess` plugin depends on the main `security_solution` plugin, it can import code from it though the use of agnostic packages is preferred, and they interact through the plugin lifecycle contract. +This architecture allows the `security_solution_ess` plugin to: +- Modify the behavior of the main plugin by providing ess-specific content. +- Ensure that the `security_solution` plugin remains offering-agnostic by using APIs for ess-specific behavior only when necessary. + +### **Plugin Interaction** +- **Generic Plugin (`security_solution`)**: Exposes an API in its plugin lifecycle contract for components and configurations that depend on the offering. +- **ESS Plugin (`security_solution_ess`)**: Utilizes the exposed API to inject or modify the application according to ess-specific content and logic. +- **Other Plugins**: Other plugins may also expose contract APIs to configure ess-specific content for Security. + +#### **Example** + +The following example demonstrates how the `security_solution_ess` plugin interacts with the main `security_solution` plugin via a contract API. + +It exposes a setter to the contract API for `usersUrl`, which is an offering-specific value. The `security_solution_ess` plugin uses these APIs to inject the ess-specific URL into the main plugin. + +The `PluginContract` class in the main Security Solution plugin simplifies the usage of contract APIs, storing the values and providing a getter to the application using the Kibana services context. + +___security_solution/public/plugin_contract.ts___ +```typescript +export class PluginContract { + usersUrl: string; + + public getStartContract() { + return { + setUsersUrl: (url: string) => { + this.usersUrl = url; + } + }; + } + + public getStartServices() { + return { + getUsersUrl: () => this.usersUrl; // available via useKibana().services.getUsersUrl() + }; + } +} +``` + +___security_solution_ess/public/plugin.ts___ +```typescript +export class Plugin { + + public start(core: CoreStart, deps: SecuritySolutionEssStartDeps) { + deps.securitySolution.setUsersUrl(deps.application.getUrlForApp('management', { path: 'security/users' })); + } +} +``` + +## **Contributing** +If you're looking to contribute to this plugin, please follow the standard contribution guidelines of the Security Solution plugin. Ensure that all changes are tested in a ESS environment. + +## **License** +This plugin is licensed under the Elastic License. See the [LICENSE](../../../../../LICENSE.txt) file for more details. diff --git a/x-pack/plugins/security_solution_ess/common/index.ts b/x-pack/solutions/security/plugins/security_solution_ess/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/common/index.ts rename to x-pack/solutions/security/plugins/security_solution_ess/common/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution_ess/jest.config.dev.js b/x-pack/solutions/security/plugins/security_solution_ess/jest.config.dev.js new file mode 100644 index 0000000000000..7a6d250e65f6d --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_ess/jest.config.dev.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../', + projects: [ + '/x-pack/solutions/security/plugins/security_solution_ess/public/jest.config.js', + ], +}; diff --git a/x-pack/plugins/security_solution_ess/kibana.jsonc b/x-pack/solutions/security/plugins/security_solution_ess/kibana.jsonc similarity index 100% rename from x-pack/plugins/security_solution_ess/kibana.jsonc rename to x-pack/solutions/security/plugins/security_solution_ess/kibana.jsonc diff --git a/x-pack/solutions/security/plugins/security_solution_ess/package.json b/x-pack/solutions/security/plugins/security_solution_ess/package.json new file mode 100644 index 0000000000000..c37b45313f1cc --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_ess/package.json @@ -0,0 +1,11 @@ +{ + "name": "@kbn/security-solution-ess", + "version": "1.0.0", + "license": "Elastic License 2.0", + "private": true, + "scripts": { + "build": "yarn plugin-helpers build", + "plugin-helpers": "node ../../../../../scripts/plugin_helpers", + "kbn": "node ../../../../../scripts/kbn" + } +} diff --git a/x-pack/plugins/security_solution_ess/public/common/__mocks__/services.mock.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/common/__mocks__/services.mock.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/common/__mocks__/services.mock.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/common/__mocks__/services.mock.ts diff --git a/x-pack/plugins/security_solution_ess/public/common/__mocks__/services.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/common/__mocks__/services.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/common/__mocks__/services.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/common/__mocks__/services.tsx diff --git a/x-pack/plugins/security_solution_ess/public/common/services.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/common/services.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/common/services.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/common/services.tsx diff --git a/x-pack/plugins/security_solution_ess/public/index.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/index.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/index.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution_ess/public/jest.config.js b/x-pack/solutions/security/plugins/security_solution_ess/public/jest.config.js new file mode 100644 index 0000000000000..81d13b77725ca --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_ess/public/jest.config.js @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + /** all nested directories have their own Jest config file */ + testMatch: [ + '/x-pack/solutions/security/plugins/security_solution_ess/public/**/*.test.{js,mjs,ts,tsx}', + ], + roots: ['/x-pack/solutions/security/plugins/security_solution_ess/public'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution_ess/public', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution_ess/public/**/*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_ess/public/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_ess/public/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!/x-pack/solutions/security/plugins/security_solution_ess/public/*mock*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_ess/public/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_ess/public/*.d.ts', + '!/x-pack/solutions/security/plugins/security_solution_ess/public/*.config.ts', + '!/x-pack/solutions/security/plugins/security_solution_ess/public/index.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/security_solution_ess/public/navigation/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/navigation/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/navigation/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/navigation/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution_ess/public/navigation/index.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/navigation/index.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/navigation/index.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/navigation/index.ts diff --git a/x-pack/plugins/security_solution_ess/public/navigation/side_navigation.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/navigation/side_navigation.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/navigation/side_navigation.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/navigation/side_navigation.ts diff --git a/x-pack/plugins/security_solution_ess/public/onboarding/index.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/onboarding/index.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/onboarding/index.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/onboarding/index.ts diff --git a/x-pack/plugins/security_solution_ess/public/onboarding/onboarding.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/onboarding/onboarding.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/onboarding/onboarding.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/onboarding/onboarding.ts diff --git a/x-pack/plugins/security_solution_ess/public/plugin.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/plugin.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/plugin.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/plugin.ts diff --git a/x-pack/plugins/security_solution_ess/public/types.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/types.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/types.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/types.ts diff --git a/x-pack/plugins/security_solution_ess/public/upselling/lazy_upselling.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/lazy_upselling.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/lazy_upselling.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/lazy_upselling.tsx diff --git a/x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/index.test.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/index.test.tsx diff --git a/x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/index.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/index.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/index.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/index.tsx diff --git a/x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/translations.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/translations.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/translations.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/translations.ts diff --git a/x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/index.test.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/index.test.tsx diff --git a/x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/index.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/index.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/index.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/index.tsx diff --git a/x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/translations.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/translations.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/translations.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/attack_discovery/upgrade_actions/translations.ts diff --git a/x-pack/plugins/security_solution_ess/public/upselling/pages/entity_analytics_upselling.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/entity_analytics_upselling.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/pages/entity_analytics_upselling.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/pages/entity_analytics_upselling.tsx diff --git a/x-pack/plugins/security_solution_ess/public/upselling/register_upsellings.test.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/register_upsellings.test.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/register_upsellings.test.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/register_upsellings.test.tsx diff --git a/x-pack/plugins/security_solution_ess/public/upselling/register_upsellings.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/register_upsellings.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/register_upsellings.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/register_upsellings.tsx diff --git a/x-pack/plugins/security_solution_ess/public/upselling/sections/entity_analytics_upselling.tsx b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/sections/entity_analytics_upselling.tsx similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/sections/entity_analytics_upselling.tsx rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/sections/entity_analytics_upselling.tsx diff --git a/x-pack/plugins/security_solution_ess/public/upselling/translations.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/upselling/translations.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/public/upselling/translations.ts rename to x-pack/solutions/security/plugins/security_solution_ess/public/upselling/translations.ts diff --git a/x-pack/plugins/security_solution_ess/server/config.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/config.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/config.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/config.ts diff --git a/x-pack/plugins/security_solution_ess/server/constants.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/constants.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/constants.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/constants.ts diff --git a/x-pack/plugins/security_solution_ess/server/index.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/index.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/index.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/index.ts diff --git a/x-pack/plugins/security_solution_ess/server/plugin.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/plugin.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/plugin.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/plugin.ts diff --git a/x-pack/plugins/security_solution_ess/server/product_features/assistant_product_features_config.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/product_features/assistant_product_features_config.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/product_features/assistant_product_features_config.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/product_features/assistant_product_features_config.ts diff --git a/x-pack/plugins/security_solution_ess/server/product_features/attack_discovery_product_features_config.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/product_features/attack_discovery_product_features_config.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/product_features/attack_discovery_product_features_config.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/product_features/attack_discovery_product_features_config.ts diff --git a/x-pack/plugins/security_solution_ess/server/product_features/cases_product_features_config.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/product_features/cases_product_features_config.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/product_features/cases_product_features_config.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/product_features/cases_product_features_config.ts diff --git a/x-pack/plugins/security_solution_ess/server/product_features/index.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/product_features/index.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/product_features/index.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/product_features/index.ts diff --git a/x-pack/plugins/security_solution_ess/server/product_features/security_product_features_config.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/product_features/security_product_features_config.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/product_features/security_product_features_config.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/product_features/security_product_features_config.ts diff --git a/x-pack/plugins/security_solution_ess/server/types.ts b/x-pack/solutions/security/plugins/security_solution_ess/server/types.ts similarity index 100% rename from x-pack/plugins/security_solution_ess/server/types.ts rename to x-pack/solutions/security/plugins/security_solution_ess/server/types.ts diff --git a/x-pack/solutions/security/plugins/security_solution_ess/tsconfig.json b/x-pack/solutions/security/plugins/security_solution_ess/tsconfig.json new file mode 100644 index 0000000000000..e3bba4e78f9c9 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_ess/tsconfig.json @@ -0,0 +1,30 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "common/**/*.ts", + "public/**/*.ts", + "public/**/*.tsx", + "server/**/*.ts", + "../../../../../typings/**/*" + ], + "exclude": ["target/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/config-schema", + "@kbn/security-solution-plugin", + "@kbn/kibana-react-plugin", + "@kbn/security-solution-features", + "@kbn/cases-plugin", + "@kbn/security-solution-navigation", + "@kbn/licensing-plugin", + "@kbn/security-solution-upselling", + "@kbn/i18n", + "@kbn/navigation-plugin", + "@kbn/management-plugin", + "@kbn/core-chrome-browser", + ] +} diff --git a/x-pack/plugins/serverless_observability/.gitignore b/x-pack/solutions/security/plugins/security_solution_serverless/.gitignore similarity index 100% rename from x-pack/plugins/serverless_observability/.gitignore rename to x-pack/solutions/security/plugins/security_solution_serverless/.gitignore diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/README.md b/x-pack/solutions/security/plugins/security_solution_serverless/README.md new file mode 100755 index 0000000000000..68dded9c003d6 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_serverless/README.md @@ -0,0 +1,78 @@ +# **Security Solution Serverless Plugin** + +## **Table of Contents** +- [Introduction](#introduction) +- [Purpose](#purpose) +- [Architecture](#architecture) +- [Contributing](#contributing) +- [License](#license) + +## **Introduction** +The `security_solution_serverless` plugin is an internal plugin for Kibana's Security Solution, designed to encapsulate serverless-specific logic. +This plugin is only enabled when the application is built for serverless project, keeping the main `security_solution` plugin clean and agnostic of the offering model. + +This plugin contains configuration and code used to create a Serverless Security project. +It leverages universal configuration and other APIs in the [`serverless`](../serverless/README.mdx) plugin to configure Kibana. + +## **Purpose** +The primary goal of the `security_solution_serverless` plugin is to: +- Isolate serverless-specific code and configuration from the main `security_solution` plugin. +- Enable seamless integration with the serverless environment without affecting the non-serverless build of the Security Solution. +- Provide a modular approach by encapsulating serverless-related functionality, thereby maintaining the codebase's cleanliness and modularity. + +## **Architecture** +The `security_solution_serverless` plugin depends on the main `security_solution` plugin, it can import code from it thought the use of agnostic packages is preferred, +and they interact through the plugin lifecycle contract. +This architecture allows the `security_solution_serverless` plugin to: +- Modify the behavior of the main plugin by providing serverless-specific content. +- Ensure that the `security_solution` plugin remains offering-agnostic by using APIs for serverless-specific behavior only when necessary. + +### **Plugin Interaction** +- **Generic Plugin (`security_solution`)**: Exposes an API in its plugin lifecycle contract for components and configurations that depend on the offering. +- **Serverless Plugin (`security_solution_serverless`)**: Utilizes the exposed API to inject or modify the application according to serverless-specific content and logic. +- **Other Plugins**: Other plugins may also expose contract APIs to configure serverless-specific content for Security. + +#### **Example** + +The following example demonstrates how the `security_solution_serverless` plugin interacts with the main `security_solution` plugin via a contract API. + +It exposes a setter to the contract API for `usersUrl`, which is an offering-specific value. The `security_solution_serverless` plugin uses these APIs to inject the serverless-specific URL into the main plugin. + +The `PluginContract` class in the main Security Solution plugin simplifies the usage of contract APIs, storing the values and providing a getter to the application using the Kibana services context. + +___security_solution/public/plugin_contract.ts___ +```typescript +export class PluginContract { + usersUrl: string; + + public getStartContract() { + return { + setUsersUrl: (url: string) => { + this.usersUrl = url; + } + }; + } + + public getStartServices() { + return { + getUsersUrl: () => this.usersUrl; // available via useKibana().services.getUsersUrl() + }; + } +} +``` + +___security_solution_serverless/public/plugin.ts___ +```typescript +export class Plugin { + + public start(core: CoreStart, deps: SecuritySolutionServerlessStartDeps) { + deps.securitySolution.setUsersUrl(deps.cloud.usersAndRolesUrl); + } +} +``` + +## **Contributing** +If you're looking to contribute to this plugin, please follow the standard contribution guidelines of the Security Solution plugin. Ensure that all changes are tested in a serverless environment. + +## **License** +This plugin is licensed under the Elastic License. See the [LICENSE](../../../../../LICENSE.txt) file for more details. diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/common/config.ts b/x-pack/solutions/security/plugins/security_solution_serverless/common/config.ts new file mode 100644 index 0000000000000..2f0cc03ccb320 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_serverless/common/config.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { schema, type TypeOf } from '@kbn/config-schema'; +import { ProductLine, ProductTier } from './product'; + +export const productLine = schema.oneOf([ + schema.literal(ProductLine.security), + schema.literal(ProductLine.endpoint), + schema.literal(ProductLine.cloud), +]); + +export type SecurityProductLine = TypeOf; + +export const productTier = schema.oneOf([ + schema.literal(ProductTier.essentials), + schema.literal(ProductTier.complete), +]); +export type SecurityProductTier = TypeOf; + +export const productType = schema.object({ + product_line: productLine, + product_tier: productTier, +}); +export type SecurityProductType = TypeOf; + +export const productTypes = schema.arrayOf(productType, { + defaultValue: [], +}); +export type SecurityProductTypes = TypeOf; + +export const configSchema = schema.object({ + enabled: schema.boolean({ defaultValue: false }), + productTypes, + /** + * For internal use. A list of string values (comma delimited) that will enable experimental + * type of functionality that is not yet released. Valid values for this settings need to + * be defined in: + * `x-pack/solutions/security/plugins/security_solution_serverless/common/experimental_features.ts` + * under the `allowedExperimentalValues` object + * + * @example + * xpack.securitySolutionServerless.enableExperimental: + * - someCrazyFeature + * - someEvenCrazierFeature + */ + enableExperimental: schema.arrayOf(schema.string(), { + defaultValue: () => [], + }), +}); + +export type ServerlessSecurityConfigSchema = TypeOf; diff --git a/x-pack/plugins/security_solution_serverless/common/experimental_features.ts b/x-pack/solutions/security/plugins/security_solution_serverless/common/experimental_features.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/common/experimental_features.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/common/experimental_features.ts diff --git a/x-pack/plugins/security_solution_serverless/common/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/common/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/common/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/common/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/common/jest.config.js b/x-pack/solutions/security/plugins/security_solution_serverless/common/jest.config.js new file mode 100644 index 0000000000000..fb7f353ad2f94 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_serverless/common/jest.config.js @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution_serverless/common'], + testMatch: [ + '/x-pack/solutions/security/plugins/security_solution_serverless/common/**/*.test.{js,mjs,ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution_serverless/common', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution_serverless/common/**/*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_serverless/common/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_serverless/common/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!/x-pack/solutions/security/plugins/security_solution_serverless/common/*mock*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_serverless/common/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_serverless/common/*.d.ts', + '!/x-pack/solutions/security/plugins/security_solution_serverless/common/*.config.ts', + '!/x-pack/solutions/security/plugins/security_solution_serverless/common/index.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts b/x-pack/solutions/security/plugins/security_solution_serverless/common/pli/pli_config.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/common/pli/pli_config.ts diff --git a/x-pack/plugins/security_solution_serverless/common/pli/pli_features.test.ts b/x-pack/solutions/security/plugins/security_solution_serverless/common/pli/pli_features.test.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/common/pli/pli_features.test.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/common/pli/pli_features.test.ts diff --git a/x-pack/plugins/security_solution_serverless/common/pli/pli_features.ts b/x-pack/solutions/security/plugins/security_solution_serverless/common/pli/pli_features.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/common/pli/pli_features.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/common/pli/pli_features.ts diff --git a/x-pack/plugins/security_solution_serverless/common/product.ts b/x-pack/solutions/security/plugins/security_solution_serverless/common/product.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/common/product.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/common/product.ts diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/jest.config.dev.js b/x-pack/solutions/security/plugins/security_solution_serverless/jest.config.dev.js new file mode 100644 index 0000000000000..326469a6e7bbb --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_serverless/jest.config.dev.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../', + projects: [ + '/x-pack/solutions/security/plugins/security_solution_serverless/public/jest.config.js', + ], +}; diff --git a/x-pack/plugins/security_solution_serverless/kibana.jsonc b/x-pack/solutions/security/plugins/security_solution_serverless/kibana.jsonc similarity index 100% rename from x-pack/plugins/security_solution_serverless/kibana.jsonc rename to x-pack/solutions/security/plugins/security_solution_serverless/kibana.jsonc diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/package.json b/x-pack/solutions/security/plugins/security_solution_serverless/package.json new file mode 100644 index 0000000000000..7ac83f5c8f5d5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_serverless/package.json @@ -0,0 +1,11 @@ +{ + "name": "@kbn/security-solution-serverless", + "version": "1.0.0", + "license": "Elastic License 2.0", + "private": true, + "scripts": { + "build": "yarn plugin-helpers build", + "plugin-helpers": "node ../../../../../scripts/plugin_helpers", + "kbn": "node ../../../../../scripts/kbn" + } +} \ No newline at end of file diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/chart_arrow.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/chart_arrow.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/chart_arrow.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/chart_arrow.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/dashboard.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/dashboard.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/dashboard.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/dashboard.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/data_view.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/data_view.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/data_view.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/data_view.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/ecctl.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/ecctl.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/ecctl.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/ecctl.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/endpoint.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/endpoint.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/endpoint.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/endpoint.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/filebeat.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/filebeat.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/filebeat.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/filebeat.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/filebeat_chart.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/filebeat_chart.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/filebeat_chart.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/filebeat_chart.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/fleet.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/fleet.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/fleet.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/fleet.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/infra.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/infra.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/infra.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/infra.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/intuitive.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/intuitive.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/intuitive.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/intuitive.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/jobs.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/jobs.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/jobs.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/jobs.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/keyword.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/keyword.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/keyword.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/keyword.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/lens.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/lens.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/lens.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/lens.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/manager.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/manager.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/manager.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/manager.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/marketing.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/marketing.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/marketing.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/marketing.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/osquery.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/osquery.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/osquery.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/osquery.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/rapid_bar_graph.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/rapid_bar_graph.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/rapid_bar_graph.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/rapid_bar_graph.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/replication.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/replication.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/replication.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/replication.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/settings.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/settings.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/settings.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/settings.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/timeline.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/timeline.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/timeline.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/timeline.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/icons/visualization.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/visualization.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/icons/visualization.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/icons/visualization.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/lazy_icons.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/lazy_icons.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/lazy_icons.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/lazy_icons.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/lib/__mocks__/storage.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/lib/__mocks__/storage.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/lib/__mocks__/storage.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/lib/__mocks__/storage.ts diff --git a/x-pack/plugins/security_solution_serverless/public/common/lib/storage.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/lib/storage.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/lib/storage.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/lib/storage.ts diff --git a/x-pack/plugins/security_solution_serverless/public/common/services/__mocks__/index.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/__mocks__/index.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/services/__mocks__/index.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/__mocks__/index.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/services/__mocks__/services.mock.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/__mocks__/services.mock.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/services/__mocks__/services.mock.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/__mocks__/services.mock.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/services/create_services.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/create_services.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/services/create_services.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/create_services.ts diff --git a/x-pack/plugins/security_solution_serverless/public/common/services/index.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/index.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/services/index.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/index.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/services/services.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/services.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/services/services.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/services.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/common/services/types.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/types.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/common/services/types.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/common/services/types.ts diff --git a/x-pack/plugins/security_solution_serverless/public/components/dashboards_landing_callout/dashboard_landing_callout.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/components/dashboards_landing_callout/dashboard_landing_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/components/dashboards_landing_callout/dashboard_landing_callout.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/components/dashboards_landing_callout/dashboard_landing_callout.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/components/dashboards_landing_callout/index.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/components/dashboards_landing_callout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/components/dashboards_landing_callout/index.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/components/dashboards_landing_callout/index.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/components/dashboards_landing_callout/lazy.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/components/dashboards_landing_callout/lazy.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/components/dashboards_landing_callout/lazy.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/components/dashboards_landing_callout/lazy.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/components/enablement_modal_callout/enablement_modal_callout.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/components/enablement_modal_callout/enablement_modal_callout.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/components/enablement_modal_callout/enablement_modal_callout.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/components/enablement_modal_callout/enablement_modal_callout.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/components/enablement_modal_callout/index.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/components/enablement_modal_callout/index.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/components/enablement_modal_callout/index.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/components/enablement_modal_callout/index.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/components/enablement_modal_callout/lazy.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/components/enablement_modal_callout/lazy.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/components/enablement_modal_callout/lazy.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/components/enablement_modal_callout/lazy.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/public/jest.config.js b/x-pack/solutions/security/plugins/security_solution_serverless/public/jest.config.js new file mode 100644 index 0000000000000..f9c3f86ffddb5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_serverless/public/jest.config.js @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + /** all nested directories have their own Jest config file */ + testMatch: [ + '/x-pack/solutions/security/plugins/security_solution_serverless/public/**/*.test.{js,mjs,ts,tsx}', + ], + roots: ['/x-pack/solutions/security/plugins/security_solution_serverless/public'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/security_solution_serverless/public', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/security_solution_serverless/public/**/*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_serverless/public/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_serverless/public/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!/x-pack/solutions/security/plugins/security_solution_serverless/public/*mock*.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_serverless/public/*.test.{ts,tsx}', + '!/x-pack/solutions/security/plugins/security_solution_serverless/public/*.d.ts', + '!/x-pack/solutions/security/plugins/security_solution_serverless/public/*.config.ts', + '!/x-pack/solutions/security/plugins/security_solution_serverless/public/index.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/security_solution_serverless/public/navigation/breadcrumbs.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/navigation/breadcrumbs.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/breadcrumbs.ts diff --git a/x-pack/plugins/security_solution_serverless/public/navigation/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/navigation/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/index.ts diff --git a/x-pack/plugins/security_solution_serverless/public/navigation/management_cards.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/management_cards.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/navigation/management_cards.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/management_cards.ts diff --git a/x-pack/plugins/security_solution_serverless/public/navigation/side_navigation.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/side_navigation.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/navigation/side_navigation.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/side_navigation.ts diff --git a/x-pack/plugins/security_solution_serverless/public/navigation/util.test.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/util.test.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/navigation/util.test.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/util.test.ts diff --git a/x-pack/plugins/security_solution_serverless/public/navigation/util.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/util.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/navigation/util.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/util.ts diff --git a/x-pack/plugins/security_solution_serverless/public/onboarding/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/onboarding/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/onboarding/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/onboarding/index.ts diff --git a/x-pack/plugins/security_solution_serverless/public/onboarding/onboarding.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/onboarding/onboarding.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/onboarding/onboarding.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/onboarding/onboarding.ts diff --git a/x-pack/plugins/security_solution_serverless/public/plugin.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/plugin.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/plugin.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/plugin.ts diff --git a/x-pack/plugins/security_solution_serverless/public/types.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/types.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/types.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/types.ts diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/hooks/use_product_type_by_pli.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/hooks/use_product_type_by_pli.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/hooks/use_product_type_by_pli.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/hooks/use_product_type_by_pli.ts diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/index.ts diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/lazy_upselling.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/lazy_upselling.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/lazy_upselling.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/lazy_upselling.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/index.test.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/index.test.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/index.test.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/index.test.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/index.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/index.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/index.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/index.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/translations.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/translations.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/translations.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/attack_discovery/translations.ts diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/pages/endpoint_management/endpoint_exceptions_details.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/endpoint_management/endpoint_exceptions_details.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/pages/endpoint_management/endpoint_exceptions_details.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/endpoint_management/endpoint_exceptions_details.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/pages/osquery_automated_response_actions.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/osquery_automated_response_actions.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/pages/osquery_automated_response_actions.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/osquery_automated_response_actions.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/pages/threat_intelligence_paywall.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/threat_intelligence_paywall.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/pages/threat_intelligence_paywall.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/threat_intelligence_paywall.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/register_upsellings.test.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/register_upsellings.test.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/register_upsellings.test.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/register_upsellings.test.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/register_upsellings.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/register_upsellings.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/register_upsellings.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/register_upsellings.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/cloud_security_posture/cloud_security_posture_integration_pli_block.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/cloud_security_posture/cloud_security_posture_integration_pli_block.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/cloud_security_posture/cloud_security_posture_integration_pli_block.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/cloud_security_posture/cloud_security_posture_integration_pli_block.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/cloud_security_posture/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/cloud_security_posture/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/cloud_security_posture/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/cloud_security_posture/index.ts diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_agent_tamper_protection.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_agent_tamper_protection.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_agent_tamper_protection.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_agent_tamper_protection.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_custom_notification.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_custom_notification.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_custom_notification.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_custom_notification.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_policy_protections.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_policy_protections.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_policy_protections.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_policy_protections.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_protection_updates.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_protection_updates.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_protection_updates.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/endpoint_protection_updates.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/index.ts diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/rule_details_endpoint_exceptions.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/rule_details_endpoint_exceptions.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/rule_details_endpoint_exceptions.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/endpoint_management/rule_details_endpoint_exceptions.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/integration_assistant/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/integration_assistant/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/integration_assistant/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/integration_assistant/index.ts diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/sections/integration_assistant/integration_assistant.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/integration_assistant/integration_assistant.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/sections/integration_assistant/integration_assistant.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/sections/integration_assistant/integration_assistant.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/translations.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/translations.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/translations.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/translations.ts diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/upsellings.test.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/upsellings.test.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/upsellings.test.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/upsellings.test.tsx diff --git a/x-pack/plugins/security_solution_serverless/public/upselling/upsellings.tsx b/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/upsellings.tsx similarity index 100% rename from x-pack/plugins/security_solution_serverless/public/upselling/upsellings.tsx rename to x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/upsellings.tsx diff --git a/x-pack/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering.ts diff --git a/x-pack/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task.test.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task.test.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task.test.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task.test.ts diff --git a/x-pack/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task.ts diff --git a/x-pack/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task_config.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task_config.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task_config.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/cloud_security_metering_task_config.ts diff --git a/x-pack/plugins/security_solution_serverless/server/cloud_security/constants.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/constants.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/cloud_security/constants.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/constants.ts diff --git a/x-pack/plugins/security_solution_serverless/server/cloud_security/defend_for_containers_metering.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/defend_for_containers_metering.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/cloud_security/defend_for_containers_metering.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/defend_for_containers_metering.ts diff --git a/x-pack/plugins/security_solution_serverless/server/cloud_security/types.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/types.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/cloud_security/types.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/cloud_security/types.ts diff --git a/x-pack/plugins/security_solution_serverless/server/common/services/usage_reporting_service.test.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/common/services/usage_reporting_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/common/services/usage_reporting_service.test.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/common/services/usage_reporting_service.test.ts diff --git a/x-pack/plugins/security_solution_serverless/server/common/services/usage_reporting_service.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/common/services/usage_reporting_service.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/common/services/usage_reporting_service.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/common/services/usage_reporting_service.ts diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/server/config.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/config.ts new file mode 100644 index 0000000000000..b47df2f29795b --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_serverless/server/config.ts @@ -0,0 +1,127 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { TypeOf } from '@kbn/config-schema'; +import type { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; +import type { SecuritySolutionPluginSetup } from '@kbn/security-solution-plugin/server/plugin_contract'; + +import { schema } from '@kbn/config-schema'; + +import type { ExperimentalFeatures } from '../common/experimental_features'; + +import { productTypes } from '../common/config'; +import { parseExperimentalConfigValue } from '../common/experimental_features'; + +const tlsConfig = schema.object({ + certificate: schema.string(), + key: schema.string(), + ca: schema.string(), +}); +export type TlsConfigSchema = TypeOf; + +const usageApiConfig = schema.object({ + enabled: schema.boolean({ defaultValue: false }), + url: schema.maybe(schema.string()), + tls: schema.maybe(tlsConfig), +}); +export type UsageApiConfigSchema = TypeOf; + +export const configSchema = schema.object({ + enabled: schema.boolean({ defaultValue: false }), + productTypes, + /** + * Usage Reporting: the interval between runs of the endpoint task + */ + + usageReportingTaskInterval: schema.string({ defaultValue: '5m' }), + + /** + * Usage Reporting: the interval between runs of the cloud security task + */ + + cloudSecurityUsageReportingTaskInterval: schema.string({ defaultValue: '30m' }), + + /** + * Usage Reporting: timeout value for how long the task should run. + */ + usageReportingTaskTimeout: schema.string({ defaultValue: '1m' }), + + /** + * For internal use. A list of string values (comma delimited) that will enable experimental + * type of functionality that is not yet released. Valid values for this settings need to + * be defined in: + * `x-pack/solutions/security/plugins/security_solution_serverless/common/experimental_features.ts` + * under the `allowedExperimentalValues` object + * + * @example + * xpack.securitySolutionServerless.enableExperimental: + * - someCrazyServerlessFeature + * - someEvenCrazierServerlessFeature + */ + enableExperimental: schema.arrayOf(schema.string(), { + defaultValue: () => [], + }), + + usageApi: usageApiConfig, +}); +export type ServerlessSecuritySchema = TypeOf; + +export const config: PluginConfigDescriptor = { + exposeToBrowser: { + enableExperimental: true, + productTypes: true, + }, + schema: configSchema, + deprecations: ({ renameFromRoot }) => [ + renameFromRoot( + 'xpack.serverless.security.productTypes', + 'xpack.securitySolutionServerless.productTypes', + { silent: true, level: 'warning' } + ), + ], +}; + +export type ServerlessSecurityConfig = Omit & { + experimentalFeatures: ExperimentalFeatures; +}; + +export const createConfig = ( + context: PluginInitializerContext, + securitySolution: SecuritySolutionPluginSetup +): ServerlessSecurityConfig => { + const { enableExperimental, ...pluginConfig } = context.config.get(); + const logger = context.logger.get('config'); + + const { + invalid, + duplicated, + features: experimentalFeatures, + } = parseExperimentalConfigValue(enableExperimental, securitySolution.experimentalFeatures); + + if (invalid.length) { + logger.warn(`Unsupported "xpack.securitySolutionServerless.enableExperimental" values detected. +The following configuration values are not supported and should be removed from the configuration: + + xpack.securitySolutionServerless.enableExperimental: +${invalid.map((key) => ` - ${key}`).join('\n')} +`); + } + + if (duplicated.length) { + logger.warn(`Duplicated "xpack.securitySolutionServerless.enableExperimental" values detected. +The following configuration values are should only be defined using the generic "xpack.securitySolution.enableExperimental": + + xpack.securitySolutionServerless.enableExperimental: +${duplicated.map((key) => ` - ${key}`).join('\n')} +`); + } + + return { + ...pluginConfig, + experimentalFeatures, + }; +}; diff --git a/x-pack/plugins/security_solution_serverless/server/constants.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/constants.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/constants.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/constants.ts diff --git a/x-pack/plugins/security_solution_serverless/server/endpoint/constants/metering.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/constants/metering.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/endpoint/constants/metering.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/constants/metering.ts diff --git a/x-pack/plugins/security_solution_serverless/server/endpoint/services/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/endpoint/services/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/index.ts diff --git a/x-pack/plugins/security_solution_serverless/server/endpoint/services/metering_service.test.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/metering_service.test.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/endpoint/services/metering_service.test.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/metering_service.test.ts diff --git a/x-pack/plugins/security_solution_serverless/server/endpoint/services/metering_service.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/metering_service.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/endpoint/services/metering_service.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/metering_service.ts diff --git a/x-pack/plugins/security_solution_serverless/server/endpoint/services/set_package_policy_flag.test.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/set_package_policy_flag.test.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/endpoint/services/set_package_policy_flag.test.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/set_package_policy_flag.test.ts diff --git a/x-pack/plugins/security_solution_serverless/server/endpoint/services/set_package_policy_flag.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/set_package_policy_flag.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/endpoint/services/set_package_policy_flag.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/endpoint/services/set_package_policy_flag.ts diff --git a/x-pack/plugins/security_solution_serverless/server/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/index.ts diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/server/jest.config.js b/x-pack/solutions/security/plugins/security_solution_serverless/server/jest.config.js new file mode 100644 index 0000000000000..8d59fc2802cf4 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_serverless/server/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** @type {import('@jest/types').Config.InitialOptions} */ +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/solutions/security/plugins/security_solution_serverless/server/'], +}; diff --git a/x-pack/plugins/security_solution_serverless/server/plugin.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/plugin.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/plugin.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/plugin.ts diff --git a/x-pack/plugins/security_solution_serverless/server/product_features/assistant_product_features_config.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/assistant_product_features_config.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/product_features/assistant_product_features_config.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/assistant_product_features_config.ts diff --git a/x-pack/plugins/security_solution_serverless/server/product_features/attack_discovery_product_features_config.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/attack_discovery_product_features_config.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/product_features/attack_discovery_product_features_config.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/attack_discovery_product_features_config.ts diff --git a/x-pack/plugins/security_solution_serverless/server/product_features/cases_product_features_config.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/cases_product_features_config.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/product_features/cases_product_features_config.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/cases_product_features_config.ts diff --git a/x-pack/plugins/security_solution_serverless/server/product_features/index.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/index.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/product_features/index.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/index.ts diff --git a/x-pack/plugins/security_solution_serverless/server/product_features/security_product_features_config.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/security_product_features_config.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/product_features/security_product_features_config.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/product_features/security_product_features_config.ts diff --git a/x-pack/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts diff --git a/x-pack/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/nlp_cleanup_task/nlp_cleanup_task.ts diff --git a/x-pack/plugins/security_solution_serverless/server/task_manager/task_state.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/task_state.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/task_manager/task_state.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/task_state.ts diff --git a/x-pack/plugins/security_solution_serverless/server/task_manager/usage_reporting_task.test.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/usage_reporting_task.test.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/task_manager/usage_reporting_task.test.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/usage_reporting_task.test.ts diff --git a/x-pack/plugins/security_solution_serverless/server/task_manager/usage_reporting_task.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/usage_reporting_task.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/task_manager/usage_reporting_task.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/task_manager/usage_reporting_task.ts diff --git a/x-pack/plugins/security_solution_serverless/server/telemetry/event_based_telemetry.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/telemetry/event_based_telemetry.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/telemetry/event_based_telemetry.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/telemetry/event_based_telemetry.ts diff --git a/x-pack/plugins/security_solution_serverless/server/types.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/types.ts similarity index 100% rename from x-pack/plugins/security_solution_serverless/server/types.ts rename to x-pack/solutions/security/plugins/security_solution_serverless/server/types.ts diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/tsconfig.json b/x-pack/solutions/security/plugins/security_solution_serverless/tsconfig.json new file mode 100644 index 0000000000000..7b9a77199aeec --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution_serverless/tsconfig.json @@ -0,0 +1,52 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "common/**/*.ts", + "public/**/*.ts", + "public/**/*.tsx", + "server/**/*.ts", + "../../../../../typings/**/*" + ], + "exclude": ["target/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/config-schema", + "@kbn/management-plugin", + "@kbn/security-plugin", + "@kbn/security-solution-ess", + "@kbn/security-solution-plugin", + "@kbn/server-http-tools", + "@kbn/serverless", + "@kbn/security-solution-navigation", + "@kbn/security-solution-upselling", + "@kbn/kibana-react-plugin", + "@kbn/core-chrome-browser", + "@kbn/i18n-react", + "@kbn/i18n", + "@kbn/shared-ux-page-kibana-template", + "@kbn/features-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/task-manager-plugin", + "@kbn/cloud-plugin", + "@kbn/cloud-security-posture-plugin", + "@kbn/security-solution-features", + "@kbn/cases-plugin", + "@kbn/fleet-plugin", + "@kbn/serverless-security-settings", + "@kbn/core-elasticsearch-server", + "@kbn/cloud-defend-plugin", + "@kbn/core-logging-server-mocks", + "@kbn/stack-connectors-plugin", + "@kbn/actions-plugin", + "@kbn/management-cards-navigation", + "@kbn/discover-plugin", + "@kbn/logging", + "@kbn/integration-assistant-plugin", + "@kbn/cloud-security-posture-common", + "@kbn/dev-utils" + ] +} diff --git a/x-pack/plugins/session_view/.eslintrc.json b/x-pack/solutions/security/plugins/session_view/.eslintrc.json similarity index 100% rename from x-pack/plugins/session_view/.eslintrc.json rename to x-pack/solutions/security/plugins/session_view/.eslintrc.json diff --git a/x-pack/solutions/security/plugins/session_view/README.md b/x-pack/solutions/security/plugins/session_view/README.md new file mode 100644 index 0000000000000..7c83a3dcf42ac --- /dev/null +++ b/x-pack/solutions/security/plugins/session_view/README.md @@ -0,0 +1,36 @@ +# Session View + +Session View is meant to provide a visualization into what is going on in a particular Linux environment where the agent is running. It looks likes a terminal emulator; however, it is a tool for introspecting process activity and understanding user and service behaviour in your Linux servers and infrastructure. It is a time-ordered series of process executions displayed in a tree over time. + +It provides an audit trail of: + +- Interactive processes being entered by a user into the terminal - User Input +- Processes and services which do not have a controlling tty (ie are not interactive) +- Output which is generated as a result of process activity - Output +- Nested sessions inside the entry session - Nested session (Note: For now nested sessions will display as they did at Cmd with no special handling for TMUX) +- Full telemetry about the process initiated event. This will include the information specified in the Linux logical event model +- Who executed the session or process, even if the user changes. + +## Development + +## Tests + +### Unit tests + +From kibana path in your terminal go to this plugin root: + +```bash +cd x-pack/solutions/security/plugins/session_view +``` + +Then run jest with: + +```bash +yarn test:jest +``` + +Or if running from kibana root, you can specify the `-i` to specify the path: + +```bash +yarn test:jest -i x-pack/solutions/security/plugins/session_view/ +``` diff --git a/x-pack/plugins/session_view/common/constants.ts b/x-pack/solutions/security/plugins/session_view/common/constants.ts similarity index 100% rename from x-pack/plugins/session_view/common/constants.ts rename to x-pack/solutions/security/plugins/session_view/common/constants.ts diff --git a/x-pack/plugins/session_view/common/index.ts b/x-pack/solutions/security/plugins/session_view/common/index.ts similarity index 100% rename from x-pack/plugins/session_view/common/index.ts rename to x-pack/solutions/security/plugins/session_view/common/index.ts diff --git a/x-pack/plugins/session_view/common/mocks/constants/session_view_process.mock.ts b/x-pack/solutions/security/plugins/session_view/common/mocks/constants/session_view_process.mock.ts similarity index 100% rename from x-pack/plugins/session_view/common/mocks/constants/session_view_process.mock.ts rename to x-pack/solutions/security/plugins/session_view/common/mocks/constants/session_view_process.mock.ts diff --git a/x-pack/plugins/session_view/common/mocks/responses/session_view_io_events.mock.ts b/x-pack/solutions/security/plugins/session_view/common/mocks/responses/session_view_io_events.mock.ts similarity index 100% rename from x-pack/plugins/session_view/common/mocks/responses/session_view_io_events.mock.ts rename to x-pack/solutions/security/plugins/session_view/common/mocks/responses/session_view_io_events.mock.ts diff --git a/x-pack/plugins/session_view/common/mocks/responses/session_view_process_events.mock.ts b/x-pack/solutions/security/plugins/session_view/common/mocks/responses/session_view_process_events.mock.ts similarity index 100% rename from x-pack/plugins/session_view/common/mocks/responses/session_view_process_events.mock.ts rename to x-pack/solutions/security/plugins/session_view/common/mocks/responses/session_view_process_events.mock.ts diff --git a/x-pack/plugins/session_view/common/mocks/responses/session_view_process_events_merged.mock.ts b/x-pack/solutions/security/plugins/session_view/common/mocks/responses/session_view_process_events_merged.mock.ts similarity index 100% rename from x-pack/plugins/session_view/common/mocks/responses/session_view_process_events_merged.mock.ts rename to x-pack/solutions/security/plugins/session_view/common/mocks/responses/session_view_process_events_merged.mock.ts diff --git a/x-pack/plugins/session_view/common/translations.ts b/x-pack/solutions/security/plugins/session_view/common/translations.ts similarity index 100% rename from x-pack/plugins/session_view/common/translations.ts rename to x-pack/solutions/security/plugins/session_view/common/translations.ts diff --git a/x-pack/plugins/session_view/common/types/latest.ts b/x-pack/solutions/security/plugins/session_view/common/types/latest.ts similarity index 100% rename from x-pack/plugins/session_view/common/types/latest.ts rename to x-pack/solutions/security/plugins/session_view/common/types/latest.ts diff --git a/x-pack/plugins/session_view/common/types/v1.ts b/x-pack/solutions/security/plugins/session_view/common/types/v1.ts similarity index 100% rename from x-pack/plugins/session_view/common/types/v1.ts rename to x-pack/solutions/security/plugins/session_view/common/types/v1.ts diff --git a/x-pack/plugins/session_view/common/utils/alert_icon_tooltip_content.test.ts b/x-pack/solutions/security/plugins/session_view/common/utils/alert_icon_tooltip_content.test.ts similarity index 100% rename from x-pack/plugins/session_view/common/utils/alert_icon_tooltip_content.test.ts rename to x-pack/solutions/security/plugins/session_view/common/utils/alert_icon_tooltip_content.test.ts diff --git a/x-pack/plugins/session_view/common/utils/alert_icon_tooltip_content.ts b/x-pack/solutions/security/plugins/session_view/common/utils/alert_icon_tooltip_content.ts similarity index 100% rename from x-pack/plugins/session_view/common/utils/alert_icon_tooltip_content.ts rename to x-pack/solutions/security/plugins/session_view/common/utils/alert_icon_tooltip_content.ts diff --git a/x-pack/plugins/session_view/common/utils/expand_dotted_object.test.ts b/x-pack/solutions/security/plugins/session_view/common/utils/expand_dotted_object.test.ts similarity index 100% rename from x-pack/plugins/session_view/common/utils/expand_dotted_object.test.ts rename to x-pack/solutions/security/plugins/session_view/common/utils/expand_dotted_object.test.ts diff --git a/x-pack/plugins/session_view/common/utils/expand_dotted_object.ts b/x-pack/solutions/security/plugins/session_view/common/utils/expand_dotted_object.ts similarity index 100% rename from x-pack/plugins/session_view/common/utils/expand_dotted_object.ts rename to x-pack/solutions/security/plugins/session_view/common/utils/expand_dotted_object.ts diff --git a/x-pack/plugins/session_view/common/utils/sort_processes.test.ts b/x-pack/solutions/security/plugins/session_view/common/utils/sort_processes.test.ts similarity index 100% rename from x-pack/plugins/session_view/common/utils/sort_processes.test.ts rename to x-pack/solutions/security/plugins/session_view/common/utils/sort_processes.test.ts diff --git a/x-pack/plugins/session_view/common/utils/sort_processes.ts b/x-pack/solutions/security/plugins/session_view/common/utils/sort_processes.ts similarity index 100% rename from x-pack/plugins/session_view/common/utils/sort_processes.ts rename to x-pack/solutions/security/plugins/session_view/common/utils/sort_processes.ts diff --git a/x-pack/solutions/security/plugins/session_view/jest.config.js b/x-pack/solutions/security/plugins/session_view/jest.config.js new file mode 100644 index 0000000000000..b4881f48bbf6a --- /dev/null +++ b/x-pack/solutions/security/plugins/session_view/jest.config.js @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/session_view'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/session_view', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/session_view/{common,public,server}/**/*.{ts,tsx}', + ], + setupFiles: ['jest-canvas-mock'], +}; diff --git a/x-pack/plugins/session_view/kibana.jsonc b/x-pack/solutions/security/plugins/session_view/kibana.jsonc similarity index 100% rename from x-pack/plugins/session_view/kibana.jsonc rename to x-pack/solutions/security/plugins/session_view/kibana.jsonc diff --git a/x-pack/solutions/security/plugins/session_view/package.json b/x-pack/solutions/security/plugins/session_view/package.json new file mode 100644 index 0000000000000..a9e4ab1ca6236 --- /dev/null +++ b/x-pack/solutions/security/plugins/session_view/package.json @@ -0,0 +1,11 @@ +{ + "author": "Elastic", + "name": "@kbn/session-view-plugin", + "version": "1.0.0", + "private": true, + "license": "Elastic License 2.0", + "scripts": { + "test:jest": "node ../../../../scripts/jest", + "test:coverage": "node ../../../../scripts/jest --coverage" + } +} diff --git a/x-pack/plugins/session_view/public/components/back_to_investigated_alert/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/back_to_investigated_alert/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/back_to_investigated_alert/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/back_to_investigated_alert/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/back_to_investigated_alert/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/back_to_investigated_alert/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/back_to_investigated_alert/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/back_to_investigated_alert/index.tsx diff --git a/x-pack/plugins/session_view/public/components/back_to_investigated_alert/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/back_to_investigated_alert/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/back_to_investigated_alert/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/back_to_investigated_alert/styles.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_accordion/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_accordion/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_accordion/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_accordion/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_accordion/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_accordion/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_accordion/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_accordion/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_accordion/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_accordion/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_accordion/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_accordion/styles.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_actions/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_alert_actions/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_actions/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_alert_actions/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_actions/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_alert_actions/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_actions/styles.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_group_item/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_group_item/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_alert_group_item/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_group_item/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_list_item/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_list_item/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_alert_list_item/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_list_item/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_list_item/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_list_item/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_alert_list_item/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_list_item/styles.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_tab/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_tab/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_alert_tab/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_tab/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_tab/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_tab/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_alert_tab/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_tab/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_alert_tab/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_tab/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_alert_tab/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_alert_tab/styles.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_copy/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_copy/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_copy/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_copy/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/session_view/public/components/detail_panel_copy/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_copy/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_copy/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_copy/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_copy/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_copy/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_copy/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_copy/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_copy/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_copy/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_copy/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_copy/styles.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_description_list/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_description_list/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_description_list/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_description_list/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_description_list/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_description_list/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_description_list/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_description_list/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_description_list/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_description_list/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_description_list/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_description_list/styles.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_list_item/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_list_item/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_list_item/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_list_item/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_list_item/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_list_item/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_list_item/styles.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/helpers.test.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/helpers.test.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/helpers.test.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/helpers.test.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/helpers.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/helpers.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/helpers.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/helpers.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_metadata_tab/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_metadata_tab/styles.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.test.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/helpers.test.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.test.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/helpers.test.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/helpers.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_process_tab/helpers.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/helpers.ts diff --git a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_process_tab/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/index.tsx diff --git a/x-pack/plugins/session_view/public/components/detail_panel_process_tab/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/detail_panel_process_tab/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/detail_panel_process_tab/styles.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree/helpers.test.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree/helpers.test.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree/helpers.test.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree/helpers.test.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree/helpers.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree/helpers.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree/helpers.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree/helpers.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree/hooks.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree/hooks.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree/hooks.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree/hooks.test.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree/hooks.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree/hooks.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree/hooks.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree/hooks.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree/index.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree/styles.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap diff --git a/x-pack/plugins/session_view/public/components/process_tree_alert/helpers.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/helpers.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alert/helpers.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/helpers.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree_alert/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alert/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_alert/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alert/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/index.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_alert/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alert/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alert/styles.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree_alerts/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alerts/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_alerts/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alerts/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts/index.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_alerts/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alerts/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts/styles.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree_alerts_filter/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts_filter/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alerts_filter/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts_filter/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_alerts_filter/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts_filter/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alerts_filter/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts_filter/index.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_alerts_filter/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts_filter/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alerts_filter/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts_filter/styles.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree_alerts_filter/translations.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts_filter/translations.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_alerts_filter/translations.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_alerts_filter/translations.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree_load_more_button/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_load_more_button/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_load_more_button/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_load_more_button/index.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_load_more_button/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_load_more_button/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_load_more_button/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_load_more_button/styles.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/buttons.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/buttons.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/buttons.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/buttons.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/index.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/nbsp.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/nbsp.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/nbsp.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/nbsp.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/split_text.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/split_text.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/split_text.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/split_text.test.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/split_text.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/split_text.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/split_text.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/split_text.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/styles.ts diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/text_highlight.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/text_highlight.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/text_highlight.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/text_highlight.test.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/text_highlight.tsx b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/text_highlight.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/text_highlight.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/text_highlight.tsx diff --git a/x-pack/plugins/session_view/public/components/process_tree_node/use_button_styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/use_button_styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/process_tree_node/use_button_styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/process_tree_node/use_button_styles.ts diff --git a/x-pack/plugins/session_view/public/components/session_view/hooks.ts b/x-pack/solutions/security/plugins/session_view/public/components/session_view/hooks.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view/hooks.ts rename to x-pack/solutions/security/plugins/session_view/public/components/session_view/hooks.ts diff --git a/x-pack/plugins/session_view/public/components/session_view/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/session_view/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/session_view/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/session_view/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/session_view/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/session_view/index.tsx diff --git a/x-pack/plugins/session_view/public/components/session_view/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/session_view/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/session_view/styles.ts diff --git a/x-pack/plugins/session_view/public/components/session_view/translations.ts b/x-pack/solutions/security/plugins/session_view/public/components/session_view/translations.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view/translations.ts rename to x-pack/solutions/security/plugins/session_view/public/components/session_view/translations.ts diff --git a/x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.test.ts b/x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/helpers.test.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.test.ts rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/helpers.test.ts diff --git a/x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.ts b/x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/helpers.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_detail_panel/helpers.ts rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/helpers.ts diff --git a/x-pack/plugins/session_view/public/components/session_view_detail_panel/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_detail_panel/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/session_view_detail_panel/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_detail_panel/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/index.tsx diff --git a/x-pack/plugins/session_view/public/components/session_view_detail_panel/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_detail_panel/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_detail_panel/styles.ts diff --git a/x-pack/plugins/session_view/public/components/session_view_display_options/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/session_view_display_options/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_display_options/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_display_options/index.tsx diff --git a/x-pack/plugins/session_view/public/components/session_view_display_options/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/session_view_display_options/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_display_options/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_display_options/styles.ts diff --git a/x-pack/plugins/session_view/public/components/session_view_search_bar/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/session_view_search_bar/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_search_bar/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_search_bar/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/session_view_search_bar/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/session_view_search_bar/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_search_bar/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_search_bar/index.tsx diff --git a/x-pack/plugins/session_view/public/components/session_view_search_bar/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/session_view_search_bar/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/session_view_search_bar/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/session_view_search_bar/styles.ts diff --git a/x-pack/plugins/session_view/public/components/tty_player/ansi_helpers.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/ansi_helpers.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player/ansi_helpers.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player/ansi_helpers.ts diff --git a/x-pack/plugins/session_view/public/components/tty_player/hooks.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/hooks.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player/hooks.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player/hooks.test.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_player/hooks.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/hooks.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player/hooks.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player/hooks.ts diff --git a/x-pack/plugins/session_view/public/components/tty_player/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_player/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player/index.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_player/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player/styles.ts diff --git a/x-pack/plugins/session_view/public/components/tty_player/translations.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/translations.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player/translations.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player/translations.ts diff --git a/x-pack/plugins/session_view/public/components/tty_player/xterm_search.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player/xterm_search.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player/xterm_search.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player/xterm_search.ts diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player_controls/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player_controls/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/index.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player_controls/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/styles.ts diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/translations.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/translations.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player_controls/translations.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/translations.ts diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/index.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/play_head.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/play_head.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/play_head.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/play_head.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_player_controls/tty_player_controls_markers/styles.ts diff --git a/x-pack/plugins/session_view/public/components/tty_search_bar/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_search_bar/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_search_bar/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_search_bar/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_search_bar/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_search_bar/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_search_bar/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_search_bar/index.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_text_sizer/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_text_sizer/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_text_sizer/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_text_sizer/index.test.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_text_sizer/index.tsx b/x-pack/solutions/security/plugins/session_view/public/components/tty_text_sizer/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_text_sizer/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/components/tty_text_sizer/index.tsx diff --git a/x-pack/plugins/session_view/public/components/tty_text_sizer/styles.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_text_sizer/styles.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_text_sizer/styles.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_text_sizer/styles.ts diff --git a/x-pack/plugins/session_view/public/components/tty_text_sizer/translations.ts b/x-pack/solutions/security/plugins/session_view/public/components/tty_text_sizer/translations.ts similarity index 100% rename from x-pack/plugins/session_view/public/components/tty_text_sizer/translations.ts rename to x-pack/solutions/security/plugins/session_view/public/components/tty_text_sizer/translations.ts diff --git a/x-pack/plugins/session_view/public/constants.ts b/x-pack/solutions/security/plugins/session_view/public/constants.ts similarity index 100% rename from x-pack/plugins/session_view/public/constants.ts rename to x-pack/solutions/security/plugins/session_view/public/constants.ts diff --git a/x-pack/plugins/session_view/public/hooks/index.ts b/x-pack/solutions/security/plugins/session_view/public/hooks/index.ts similarity index 100% rename from x-pack/plugins/session_view/public/hooks/index.ts rename to x-pack/solutions/security/plugins/session_view/public/hooks/index.ts diff --git a/x-pack/plugins/session_view/public/hooks/use_date_format.ts b/x-pack/solutions/security/plugins/session_view/public/hooks/use_date_format.ts similarity index 100% rename from x-pack/plugins/session_view/public/hooks/use_date_format.ts rename to x-pack/solutions/security/plugins/session_view/public/hooks/use_date_format.ts diff --git a/x-pack/plugins/session_view/public/hooks/use_eui_theme.ts b/x-pack/solutions/security/plugins/session_view/public/hooks/use_eui_theme.ts similarity index 100% rename from x-pack/plugins/session_view/public/hooks/use_eui_theme.ts rename to x-pack/solutions/security/plugins/session_view/public/hooks/use_eui_theme.ts diff --git a/x-pack/plugins/session_view/public/hooks/use_scroll.ts b/x-pack/solutions/security/plugins/session_view/public/hooks/use_scroll.ts similarity index 100% rename from x-pack/plugins/session_view/public/hooks/use_scroll.ts rename to x-pack/solutions/security/plugins/session_view/public/hooks/use_scroll.ts diff --git a/x-pack/plugins/session_view/public/hooks/use_visible.ts b/x-pack/solutions/security/plugins/session_view/public/hooks/use_visible.ts similarity index 100% rename from x-pack/plugins/session_view/public/hooks/use_visible.ts rename to x-pack/solutions/security/plugins/session_view/public/hooks/use_visible.ts diff --git a/x-pack/plugins/session_view/public/index.ts b/x-pack/solutions/security/plugins/session_view/public/index.ts similarity index 100% rename from x-pack/plugins/session_view/public/index.ts rename to x-pack/solutions/security/plugins/session_view/public/index.ts diff --git a/x-pack/plugins/session_view/public/methods/index.test.tsx b/x-pack/solutions/security/plugins/session_view/public/methods/index.test.tsx similarity index 100% rename from x-pack/plugins/session_view/public/methods/index.test.tsx rename to x-pack/solutions/security/plugins/session_view/public/methods/index.test.tsx diff --git a/x-pack/plugins/session_view/public/methods/index.tsx b/x-pack/solutions/security/plugins/session_view/public/methods/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/methods/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/methods/index.tsx diff --git a/x-pack/plugins/session_view/public/plugin.ts b/x-pack/solutions/security/plugins/session_view/public/plugin.ts similarity index 100% rename from x-pack/plugins/session_view/public/plugin.ts rename to x-pack/solutions/security/plugins/session_view/public/plugin.ts diff --git a/x-pack/plugins/session_view/public/shared_imports.ts b/x-pack/solutions/security/plugins/session_view/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/session_view/public/shared_imports.ts rename to x-pack/solutions/security/plugins/session_view/public/shared_imports.ts diff --git a/x-pack/plugins/session_view/public/test/index.tsx b/x-pack/solutions/security/plugins/session_view/public/test/index.tsx similarity index 100% rename from x-pack/plugins/session_view/public/test/index.tsx rename to x-pack/solutions/security/plugins/session_view/public/test/index.tsx diff --git a/x-pack/plugins/session_view/public/types.ts b/x-pack/solutions/security/plugins/session_view/public/types.ts similarity index 100% rename from x-pack/plugins/session_view/public/types.ts rename to x-pack/solutions/security/plugins/session_view/public/types.ts diff --git a/x-pack/plugins/session_view/public/utils/alert_category_display_test.test.ts b/x-pack/solutions/security/plugins/session_view/public/utils/alert_category_display_test.test.ts similarity index 100% rename from x-pack/plugins/session_view/public/utils/alert_category_display_test.test.ts rename to x-pack/solutions/security/plugins/session_view/public/utils/alert_category_display_test.test.ts diff --git a/x-pack/plugins/session_view/public/utils/alert_category_display_text.ts b/x-pack/solutions/security/plugins/session_view/public/utils/alert_category_display_text.ts similarity index 100% rename from x-pack/plugins/session_view/public/utils/alert_category_display_text.ts rename to x-pack/solutions/security/plugins/session_view/public/utils/alert_category_display_text.ts diff --git a/x-pack/plugins/session_view/public/utils/data_or_dash.test.ts b/x-pack/solutions/security/plugins/session_view/public/utils/data_or_dash.test.ts similarity index 100% rename from x-pack/plugins/session_view/public/utils/data_or_dash.test.ts rename to x-pack/solutions/security/plugins/session_view/public/utils/data_or_dash.test.ts diff --git a/x-pack/plugins/session_view/public/utils/data_or_dash.ts b/x-pack/solutions/security/plugins/session_view/public/utils/data_or_dash.ts similarity index 100% rename from x-pack/plugins/session_view/public/utils/data_or_dash.ts rename to x-pack/solutions/security/plugins/session_view/public/utils/data_or_dash.ts diff --git a/x-pack/plugins/session_view/server/index.ts b/x-pack/solutions/security/plugins/session_view/server/index.ts similarity index 100% rename from x-pack/plugins/session_view/server/index.ts rename to x-pack/solutions/security/plugins/session_view/server/index.ts diff --git a/x-pack/plugins/session_view/server/plugin.ts b/x-pack/solutions/security/plugins/session_view/server/plugin.ts similarity index 100% rename from x-pack/plugins/session_view/server/plugin.ts rename to x-pack/solutions/security/plugins/session_view/server/plugin.ts diff --git a/x-pack/plugins/session_view/server/routes/alert_status_route.test.ts b/x-pack/solutions/security/plugins/session_view/server/routes/alert_status_route.test.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/alert_status_route.test.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/alert_status_route.test.ts diff --git a/x-pack/plugins/session_view/server/routes/alert_status_route.ts b/x-pack/solutions/security/plugins/session_view/server/routes/alert_status_route.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/alert_status_route.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/alert_status_route.ts diff --git a/x-pack/plugins/session_view/server/routes/alerts_client_mock.test.ts b/x-pack/solutions/security/plugins/session_view/server/routes/alerts_client_mock.test.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/alerts_client_mock.test.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/alerts_client_mock.test.ts diff --git a/x-pack/plugins/session_view/server/routes/alerts_route.test.ts b/x-pack/solutions/security/plugins/session_view/server/routes/alerts_route.test.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/alerts_route.test.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/alerts_route.test.ts diff --git a/x-pack/plugins/session_view/server/routes/alerts_route.ts b/x-pack/solutions/security/plugins/session_view/server/routes/alerts_route.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/alerts_route.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/alerts_route.ts diff --git a/x-pack/plugins/session_view/server/routes/get_total_io_bytes_route.ts b/x-pack/solutions/security/plugins/session_view/server/routes/get_total_io_bytes_route.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/get_total_io_bytes_route.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/get_total_io_bytes_route.ts diff --git a/x-pack/plugins/session_view/server/routes/index.ts b/x-pack/solutions/security/plugins/session_view/server/routes/index.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/index.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/index.ts diff --git a/x-pack/plugins/session_view/server/routes/io_events_route.test.ts b/x-pack/solutions/security/plugins/session_view/server/routes/io_events_route.test.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/io_events_route.test.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/io_events_route.test.ts diff --git a/x-pack/plugins/session_view/server/routes/io_events_route.ts b/x-pack/solutions/security/plugins/session_view/server/routes/io_events_route.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/io_events_route.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/io_events_route.ts diff --git a/x-pack/plugins/session_view/server/routes/process_events_route.test.ts b/x-pack/solutions/security/plugins/session_view/server/routes/process_events_route.test.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/process_events_route.test.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/process_events_route.test.ts diff --git a/x-pack/plugins/session_view/server/routes/process_events_route.ts b/x-pack/solutions/security/plugins/session_view/server/routes/process_events_route.ts similarity index 100% rename from x-pack/plugins/session_view/server/routes/process_events_route.ts rename to x-pack/solutions/security/plugins/session_view/server/routes/process_events_route.ts diff --git a/x-pack/plugins/session_view/server/types.ts b/x-pack/solutions/security/plugins/session_view/server/types.ts similarity index 100% rename from x-pack/plugins/session_view/server/types.ts rename to x-pack/solutions/security/plugins/session_view/server/types.ts diff --git a/x-pack/solutions/security/plugins/session_view/tsconfig.json b/x-pack/solutions/security/plugins/session_view/tsconfig.json new file mode 100644 index 0000000000000..80cbd97282268 --- /dev/null +++ b/x-pack/solutions/security/plugins/session_view/tsconfig.json @@ -0,0 +1,46 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + // add all the folders containg files to be compiled + "common/**/*", + "public/**/*", + "server/**/*", + "server/**/*.json", + "scripts/**/*", + "package.json", + "storybook/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + // add references to other TypeScript projects the plugin depends on + + // requiredPlugins from ./kibana.json + + // optionalPlugins from ./kibana.json + "@kbn/security-plugin", + + // requiredBundles from ./kibana.json + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/rule-registry-plugin", + "@kbn/i18n", + "@kbn/std", + "@kbn/ui-theme", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/alerting-plugin", + "@kbn/rule-data-utils", + "@kbn/securitysolution-es-utils", + "@kbn/shared-ux-router", + "@kbn/usage-collection-plugin", + "@kbn/analytics", + "@kbn/securitysolution-rules", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/solutions/security/plugins/threat_intelligence/.storybook/main.js b/x-pack/solutions/security/plugins/threat_intelligence/.storybook/main.js new file mode 100644 index 0000000000000..86b48c32f103e --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/.storybook/main.js @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = require('@kbn/storybook').defaultConfig; diff --git a/x-pack/plugins/threat_intelligence/CONTRIBUTING.md b/x-pack/solutions/security/plugins/threat_intelligence/CONTRIBUTING.md similarity index 98% rename from x-pack/plugins/threat_intelligence/CONTRIBUTING.md rename to x-pack/solutions/security/plugins/threat_intelligence/CONTRIBUTING.md index e7408742371e8..ae7357bef4d0a 100644 --- a/x-pack/plugins/threat_intelligence/CONTRIBUTING.md +++ b/x-pack/solutions/security/plugins/threat_intelligence/CONTRIBUTING.md @@ -127,7 +127,7 @@ If changes are made to how developers build, test, interact with, or release cod **Unit tests:** -`npm run test:jest --config ./x-pack/plugins/threat_intelligence` +`npm run test:jest --config ./x-pack/solutions/security/plugins/threat_intelligence` **E2E tests:** diff --git a/x-pack/solutions/security/plugins/threat_intelligence/README.md b/x-pack/solutions/security/plugins/threat_intelligence/README.md new file mode 100755 index 0000000000000..c8b5de6a0289c --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/README.md @@ -0,0 +1,91 @@ +# Threat Intelligence + +Elastic Threat Intelligence makes it easy to analyze and investigate potential security threats by aggregating data from multiple sources in one place. You’ll be able to view data from all activated threat intelligence feeds and take action. + +### Where to find the UI for this plugin? + +The Threat Intelligence UI is displayed in Kibana Security, under the Explore section. + +## Development setup + +### Kibana development in general + +Best source - [internal Kibana docs](https://docs.elastic.dev/kibana-dev-docs/getting-started/welcome). If you have any issues with setting up your Kibana dev environment [#kibana](https://elastic.slack.com/archives/C0D8P2XK5) Slack channel is a good way to get help. + +### Essential `kibana.yml` settings + +You can make a copy of `kibana.yml` file into `kibana.dev.yml` and make adjustments to the settings. External documentation on the flags available is [here](https://www.elastic.co/guide/en/kibana/current/settings.html) + +It is recommended to set `server.basePath: "/kbn"` to make you local instance persist the base Kibana path. If you don't do it, the base path will be a random string every time you start Kibana. Any other value than `/kbn` will also work. + +### Getting Threat Intelligence feeds data into Kibana + +There are many ways to get data for you local development. We first focus on getting Threat Intelligence data specifically. + +### Setting up filebeat threatintel integrations locally + +1. install [mage](https://github.com/magefile/mage). It is a Go build tool used to build `beats`. Installation from the sources requires Go lang set up. A simpler option might be to install it from a package manager available in your system (eg. `brew` on MacOs) or use their [binary distribution](https://github.com/magefile/mage/releases) +1. start Elasticsearch and Kibana +1. clone [beats](https://github.com/elastic/beats) repository +1. inside beats repository, update `x-pack/filebeat/filebeat.yml` with your local Elasticsearch and Kibana connection configs + + ``` + output.elasticsearch: + hosts: ["localhost:9200"] + username: "elastic" + password: "changeme" + + setup.kibana: + host: "localhost:5601" // make sure to run Kibana with --no-base-path option or specify server.basePath in Kibana config and use it here as a path, eg. localhost:5601/kbn + ``` + +1. go into `x-pack/filebeat` (that's where security related modules live) +1. build filebeat `mage build` +1. enable `threatintel` module by running `./filebeat modules enable threatintel` +1. enable specific Threat Intelligence integrations by updating `modules.d/threatintel.yml`. Update `enable` to `true` in every integration you want to enable and configs specific for these integrations. The bare minimum is to enable Abuse.CH feeds `abuseurl`, `abusemalware` and `malwarebazaar`. +1. run `./filebeat setup -E setup.dashboards.directory=build/kibana` to set up predefined dashboards +1. run `./filebeat -e` to start filebeat +1. to validate that the set up works, wait for some Threat Intel data to be ingested and then go in Analytics > Discover in your local Kibana to search `event.category : threat and event.type : indicator`. You should see some documents returned by this search. Abuse.CH feeds are up to date so you should see the results from the last 7 days. + +### More ways to get data + +There are many more tools available for getting the data for testing or local development, depending on the data type and usecase. + +- Kibana development docs > [Add data](https://docs.elastic.dev/kibana-dev-docs/getting-started/sample-data) +- [Dev/Design/Testing Environments and Frameworks](https://docs.google.com/document/d/1DGCcLMnVKQ_STlkbS4E0m4kbPivNtR8iMlg_IoCuCEw/edit#) gathered by Security Engineering Productivity team + +### Generate fixtures for local testing + +You can generate large volumes of threat indicators on demand with the following script: + +``` +node scripts/generate_indicators.js +``` + +see the file in order to adjust the amount of indicators generated. The default is one million. + +## E2E + +### Running locally + +Cypress tests are integrated with the Security Solution ones. Please refer to https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/cypress/README.md for more information + +## FAQ + +### How is the Threat Intelligence code loaded in Kibana? + +The Threat Intelligence plugin is loaded lazily within the [security_solution](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/security_solution) plugin, +from `x-pack/solutions/security/plugins/security_solution/public/threat_intelligence` owned by the Threat Hunting Investigations Team. + +## QA and demo for implemented features + +One way to QA and demo the feature merged into `main` branch is to run the latest `main` locally. +Another option is to deploy a Staging instance. For Staging environment snapshots are being build every night with the latest state of the `main` branch. More documentation can be found [here](https://cloud.elastic.dev/environments/Staging/#automatic-termination-of-staging-deployments) + +## Contributing + +See [CONTRIBUTING.md](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/threat_intelligence/CONTRIBUTING.md) for information on contributing. + +## Issues + +Please report any issues in [this GitHub project](https://github.com/orgs/elastic/projects/758/). \ No newline at end of file diff --git a/x-pack/plugins/threat_intelligence/common/constants.ts b/x-pack/solutions/security/plugins/threat_intelligence/common/constants.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/common/constants.ts rename to x-pack/solutions/security/plugins/threat_intelligence/common/constants.ts diff --git a/x-pack/plugins/threat_intelligence/common/types/indicator.ts b/x-pack/solutions/security/plugins/threat_intelligence/common/types/indicator.ts similarity index 98% rename from x-pack/plugins/threat_intelligence/common/types/indicator.ts rename to x-pack/solutions/security/plugins/threat_intelligence/common/types/indicator.ts index 81fa375c45301..b126275799151 100644 --- a/x-pack/plugins/threat_intelligence/common/types/indicator.ts +++ b/x-pack/solutions/security/plugins/threat_intelligence/common/types/indicator.ts @@ -52,7 +52,7 @@ export enum RawIndicatorFieldId { /** * Threat indicator field map to Enriched Event. - * (reverse of https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/common/cti/constants.ts#L35) + * (reverse of https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/security_solution/common/cti/constants.ts#L35) */ export const IndicatorFieldEventEnrichmentMap: { [id: string]: string[] } = { [RawIndicatorFieldId.FileSha256]: ['file.hash.sha256'], diff --git a/x-pack/solutions/security/plugins/threat_intelligence/jest.config.js b/x-pack/solutions/security/plugins/threat_intelligence/jest.config.js new file mode 100644 index 0000000000000..9524dca683991 --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../', + roots: ['/x-pack/solutions/security/plugins/threat_intelligence'], +}; diff --git a/x-pack/plugins/threat_intelligence/kibana.jsonc b/x-pack/solutions/security/plugins/threat_intelligence/kibana.jsonc similarity index 100% rename from x-pack/plugins/threat_intelligence/kibana.jsonc rename to x-pack/solutions/security/plugins/threat_intelligence/kibana.jsonc diff --git a/x-pack/plugins/threat_intelligence/package.json b/x-pack/solutions/security/plugins/threat_intelligence/package.json similarity index 100% rename from x-pack/plugins/threat_intelligence/package.json rename to x-pack/solutions/security/plugins/threat_intelligence/package.json diff --git a/x-pack/plugins/threat_intelligence/public/components/date_formatter.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/date_formatter.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/date_formatter.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/date_formatter.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/date_formatter.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/date_formatter.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/empty_state.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/empty_state.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/empty_state.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/empty_state.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/empty_state.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/empty_state.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/empty_state.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/empty_state.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/layout.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/layout.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/layout.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/layout.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/layout.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/layout.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/no_results.svg b/x-pack/solutions/security/plugins/threat_intelligence/public/components/no_results.svg similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/no_results.svg rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/no_results.svg diff --git a/x-pack/plugins/threat_intelligence/public/components/paywall.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/paywall.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/paywall.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/paywall.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/paywall.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/paywall.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/paywall.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/paywall.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/components/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/components/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/components/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/components/update_status.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/update_status.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/update_status.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/update_status.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/update_status.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/update_status.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/update_status.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/update_status.tsx diff --git a/x-pack/plugins/threat_intelligence/public/constants/common.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/constants/common.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/constants/common.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/constants/common.ts diff --git a/x-pack/plugins/threat_intelligence/public/constants/navigation.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/constants/navigation.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/constants/navigation.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/constants/navigation.ts diff --git a/x-pack/plugins/threat_intelligence/public/constants/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/constants/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/constants/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/constants/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/containers/enterprise_guard.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/enterprise_guard.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/enterprise_guard.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/enterprise_guard.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/enterprise_guard.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/enterprise_guard.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/enterprise_guard.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/enterprise_guard.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/field_types_provider.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/field_types_provider.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/field_types_provider.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/field_types_provider.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/filters_global.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/filters_global.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/filters_global.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/filters_global.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/indicators_page_wrapper.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/indicators_page_wrapper.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/indicators_page_wrapper.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/indicators_page_wrapper.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/inspector.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/inspector.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/inspector.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/inspector.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/integrations_guard.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/integrations_guard.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/integrations_guard.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/integrations_guard.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/integrations_guard.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/integrations_guard.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/integrations_guard.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/integrations_guard.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/security_solution_context.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_context.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/security_solution_context.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_context.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/security_solution_page_wrapper.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_page_wrapper.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/security_solution_page_wrapper.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_page_wrapper.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/security_solution_plugin_template_wrapper.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_plugin_template_wrapper.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/security_solution_plugin_template_wrapper.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_plugin_template_wrapper.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_documentation_link.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_documentation_link.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_documentation_link.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_documentation_link.tsx diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_field_types.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_field_types.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_field_types.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_field_types.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_inspector.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_inspector.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_inspector.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_inspector.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_integrations.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_integrations.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_integrations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_integrations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_integrations_page_link.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations_page_link.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_integrations_page_link.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations_page_link.tsx diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_kibana.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_kibana.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_kibana.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_kibana_ui_settings.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_kibana_ui_settings.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_kibana_ui_settings.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_kibana_ui_settings.tsx diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_security_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_security_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_security_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_security_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/index.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/index.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/index.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/index.ts diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_field_type_map.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_field_type_map.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_field_type_map.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_field_type_map.ts diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_indicators_filters_context.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_indicators_filters_context.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_indicators_filters_context.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_indicators_filters_context.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_timelines_service.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_timelines_service.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_timelines_service.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_timelines_service.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_triggers_actions_ui_service.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_triggers_actions_ui_service.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_triggers_actions_ui_service.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_triggers_actions_ui_service.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_ui_settings_service.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_ui_settings_service.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_ui_settings_service.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_ui_settings_service.ts diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_security_context.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_security_context.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_use_kibana_for_filters.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_use_kibana_for_filters.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_use_kibana_for_filters.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_use_kibana_for_filters.ts diff --git a/x-pack/plugins/threat_intelligence/public/mocks/story_providers.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/story_providers.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/story_providers.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/story_providers.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/test_providers.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/test_providers.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/test_providers.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/test_providers.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx similarity index 87% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx index fd8c1a81fa02f..3c97a4c2c673a 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx @@ -25,8 +25,8 @@ export interface BlockListFlyoutProps { /** * Component calling the block list flyout (retrieved from the SecuritySolution plugin via context). * This reuses a lot of components passed down via context from the Security Solution plugin: - * - the flyout component: https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx - * - the form component: https://github.com/elastic/kibana/blob/main/x-pack/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.tsx + * - the flyout component: x-pack/solutions/security/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx + * - the form component: x-pack/solutions/security/plugins/security_solution/public/management/pages/blocklist/view/components/blocklist_form.tsx */ export const BlockListFlyout: VFC = ({ indicatorFileHash }) => { const { setBlockListIndicatorValue } = useBlockListContext(); diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/containers/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/containers/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/containers/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/containers/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_set_url_params.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_set_url_params.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_set_url_params.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_set_url_params.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/attachment_children.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/attachment_children.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/attachment_children.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/attachment_children.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/styles.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/styles.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/styles.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/styles.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/utils/attachments.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/utils/attachments.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/utils/attachments.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/utils/attachments.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/utils/attachments.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/utils/attachments.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/utils/attachments.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/utils/attachments.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/integrations_light.svg b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/integrations_light.svg similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/integrations_light.svg rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/integrations_light.svg diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/styles.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/styles.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/styles.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/styles.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_label.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_label.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_label.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_label.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/highlighted_values_table.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/highlighted_values_table.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/highlighted_values_table.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/highlighted_values_table.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/actions_row_cell.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/actions_row_cell.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/actions_row_cell.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/actions_row_cell.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_actions.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_actions.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_actions.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_actions.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_popover_renderer.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_popover_renderer.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_popover_renderer.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_popover_renderer.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_renderer.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_renderer.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_renderer.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_renderer.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/styles.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/styles.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/styles.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/styles.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/containers/block_list_provider.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/containers/block_list_provider.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/containers/block_list_provider.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/containers/block_list_provider.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/containers/filters.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/containers/filters.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/containers/filters.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/containers/filters.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_block_list_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_block_list_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_block_list_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_block_list_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_filters_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_filters_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_filters_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_filters_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_flyout_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_flyout_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_flyout_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_flyout_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_table_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_table_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_table_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_table_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/pages/indicators.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/pages/indicators.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/field_value.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/field_value.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/field_value.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/field_value.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/field_value.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/field_value.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/field_value.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/field_value.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/get_field_schema.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/get_field_schema.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/get_field_schema.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/get_field_schema.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/get_indicator_query_params.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/get_indicator_query_params.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/get_indicator_query_params.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/get_indicator_query_params.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/query_bar.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/query_bar.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/query_bar.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/query_bar.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filters.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filters.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filters.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filters.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/utils/filter.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/utils/filter.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/utils/filter.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/utils/filter.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/utils/filter.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/utils/filter.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/utils/filter.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/utils/filter.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx similarity index 89% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx index 2bd794c49adcd..e894fa99c9e6c 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx @@ -28,7 +28,7 @@ export interface InvestigateInTimelineProps { } /** - * Investigate in timeline button, uses the InvestigateInTimelineAction component (x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx) + * Investigate in timeline button, uses the InvestigateInTimelineAction component (x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx) * retrieved from the SecuritySolutionContext. * * This component renders an {@link EuiContextMenu}. @@ -65,7 +65,7 @@ export const InvestigateInTimelineContextMenu: VFC = }; /** - * Investigate in timeline button uses the InvestigateInTimelineAction component (x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx) + * Investigate in timeline button uses the InvestigateInTimelineAction component (x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/investigate_in_timeline_action.tsx) * retrieved from the SecuritySolutionContext. * * This component renders an {@link EuiButtonIcon}. diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/styles.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/styles.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/styles.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/styles.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts similarity index 94% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts index f40df09a49830..9ee485ea7bf52 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts @@ -33,7 +33,7 @@ export interface UseAddToTimelineValue { /** * Custom hook that gets an {@link Indicator}, retrieves the field (from the RawIndicatorFieldId.Name) * and value, then creates DataProviders used to do the Investigate in Timeline logic - * (see /kibana/x-pack/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts) + * (see /kibana/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts) */ export const useAddToTimeline = ({ indicator, diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.test.tsx diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts new file mode 100644 index 0000000000000..b59e932e0007d --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useContext } from 'react'; +import moment from 'moment'; +import { DataProvider } from '@kbn/timelines-plugin/common'; +import { generateDataProvider } from '../utils/data_provider'; +import { SecuritySolutionContext } from '../../../containers/security_solution_context'; +import { fieldAndValueValid, getIndicatorFieldAndValue } from '../../indicators/utils/field_value'; +import { unwrapValue } from '../../indicators/utils/unwrap_value'; +import { + Indicator, + IndicatorFieldEventEnrichmentMap, + RawIndicatorFieldId, +} from '../../../../common/types/indicator'; + +export interface UseInvestigateInTimelineParam { + /** + * Indicator used to retrieve the field and value then passed to the Investigate in Timeline logic + */ + indicator: Indicator; +} + +export interface UseInvestigateInTimelineValue { + /** + * Investigate in Timeline function to run on click event. + */ + investigateInTimelineFn: (() => Promise) | undefined; +} + +/** + * Custom hook that gets an {@link Indicator}, retrieves the field (from the RawIndicatorFieldId.Name) + * and value, then creates DataProviders used to do the Investigate in Timeline logic + * (see /kibana/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/use_investigate_in_timeline.ts) + */ +export const useInvestigateInTimeline = ({ + indicator, +}: UseInvestigateInTimelineParam): UseInvestigateInTimelineValue => { + const securitySolutionContext = useContext(SecuritySolutionContext); + + const { key, value } = getIndicatorFieldAndValue(indicator, RawIndicatorFieldId.Name); + const sourceEventField = IndicatorFieldEventEnrichmentMap[key]; + + if (!fieldAndValueValid(key, value) || !sourceEventField) { + return {} as unknown as UseInvestigateInTimelineValue; + } + + const dataProviders: DataProvider[] = [...sourceEventField, key].map((e: string) => + generateDataProvider(e, value as string) + ); + + const indicatorTimestamp: string = unwrapValue( + indicator, + RawIndicatorFieldId.TimeStamp + ) as string; + + const from = moment(indicatorTimestamp).subtract(7, 'd').toISOString(); + const to = moment(indicatorTimestamp).add(7, 'd').toISOString(); + + if (!to || !from) { + return {} as unknown as UseInvestigateInTimelineValue; + } + + const investigateInTimelineFn = securitySolutionContext?.getUseInvestigateInTimeline({ + dataProviders, + from, + to, + }); + + return { + investigateInTimelineFn, + }; +}; diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.ts diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/plugin.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/plugin.tsx new file mode 100755 index 0000000000000..9db7fc34f3be0 --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/plugin.tsx @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; +import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { Provider as ReduxStoreProvider } from 'react-redux'; +import React, { Suspense } from 'react'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; +import { ExternalReferenceAttachmentType } from '@kbn/cases-plugin/public/client/attachment_framework/types'; +import { generateAttachmentType } from './modules/cases/utils/attachments'; +import { KibanaContextProvider } from './hooks/use_kibana'; +import { + SecuritySolutionPluginContext, + Services, + SetupPlugins, + ThreatIntelligencePluginSetup, + ThreatIntelligencePluginStart, + ThreatIntelligencePluginStartDeps, +} from './types'; +import { SecuritySolutionContext } from './containers/security_solution_context'; +import { EnterpriseGuard } from './containers/enterprise_guard'; + +interface AppProps { + securitySolutionContext: SecuritySolutionPluginContext; +} + +const LazyIndicatorsPageWrapper = React.lazy(() => import('./containers/indicators_page_wrapper')); + +/** + * This is used here: + * x-pack/solutions/security/plugins/security_solution/public/threat_intelligence/routes.tsx + */ +export const createApp = + (services: Services) => + () => + ({ securitySolutionContext }: AppProps) => + ( + + + + + + }> + + + + + + + + ); + +export class ThreatIntelligencePlugin implements Plugin { + public async setup( + _core: CoreSetup, + plugins: SetupPlugins + ): Promise { + const externalAttachmentType: ExternalReferenceAttachmentType = generateAttachmentType(); + plugins.cases.attachmentFramework.registerExternalReference(externalAttachmentType); + + return {}; + } + + public start( + core: CoreStart, + plugins: ThreatIntelligencePluginStartDeps + ): ThreatIntelligencePluginStart { + const localPluginServices = { + storage: new Storage(localStorage), + }; + + const services: Services = { + ...localPluginServices, + ...core, + ...plugins, + }; + + return { + getComponent: createApp(services), + }; + } + + public stop() {} +} diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/types.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/types.ts new file mode 100644 index 0000000000000..aec8b52187131 --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/types.ts @@ -0,0 +1,196 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ComponentType, NamedExoticComponent, ReactElement, ReactNode, VFC } from 'react'; +import { CoreStart } from '@kbn/core/public'; +import { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import { + DataViewField, + type DataViewSpec, + DataViewsPublicPluginStart, + FieldSpec, +} from '@kbn/data-views-plugin/public'; +import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { TimelinesUIStart } from '@kbn/timelines-plugin/public'; +import type { TriggersAndActionsUIPublicPluginStart as TriggersActionsStart } from '@kbn/triggers-actions-ui-plugin/public'; +import { DataViewBase, Filter, Query, TimeRange } from '@kbn/es-query'; +import { BrowserField } from '@kbn/rule-registry-plugin/common'; +import { Store } from 'redux'; +import { DataProvider } from '@kbn/timelines-plugin/common'; +import { Start as InspectorPluginStart } from '@kbn/inspector-plugin/public'; +import { CasesPublicSetup, CasesPublicStart } from '@kbn/cases-plugin/public/types'; +import { CreateExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; +import { Policy } from './modules/block_list/hooks/use_policies'; + +export interface SecuritySolutionDataViewBase extends DataViewBase { + fields: Array; +} + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ThreatIntelligencePluginSetup {} + +export interface SetupPlugins { + cases: CasesPublicSetup; +} + +export interface ThreatIntelligencePluginStart { + getComponent: () => (props: { + securitySolutionContext: SecuritySolutionPluginContext; + }) => ReactElement; +} + +export interface ThreatIntelligencePluginStartDeps { + data: DataPublicPluginStart; + cases: CasesPublicStart; + dataViews: DataViewsPublicPluginStart; + triggersActionsUi: TriggersActionsStart; + timelines: TimelinesUIStart; + securityLayout: any; + inspector: InspectorPluginStart; +} + +export interface Services extends CoreStart, ThreatIntelligencePluginStartDeps { + storage: Storage; +} + +export interface LicenseAware { + isEnterprise(): boolean; + isPlatinumPlus(): boolean; +} + +export type BrowserFields = Readonly>>; + +export interface SelectedDataView { + sourcererDataView: DataViewSpec; + indexPattern: SecuritySolutionDataViewBase; + browserFields: BrowserFields; + selectedPatterns: string[]; + loading: boolean; +} + +export interface UseInvestigateInTimelineProps { + dataProviders: DataProvider[]; + from: string; + to: string; +} + +export interface BlockListFlyoutProps { + apiClient: unknown; + item: CreateExceptionListItemSchema; + policies: Policy[]; + policiesIsLoading: boolean; + FormComponent: NamedExoticComponent; + onClose: () => void; +} + +export interface BlockListFormProps { + item: CreateExceptionListItemSchema; +} + +export interface Blocking { + canWriteBlocklist: boolean; + exceptionListApiClient: unknown; + useSetUrlParams: () => ( + params: Record, + replace?: boolean | undefined + ) => void; + getFlyoutComponent: () => NamedExoticComponent; + getFormComponent: () => NamedExoticComponent; +} + +/** + * Methods exposed from the security solution to the threat intelligence application. + */ +export interface SecuritySolutionPluginContext { + /** + * Gets the `FiltersGlobal` component for embedding a filter bar in the security solution application. + * */ + getFiltersGlobalComponent: () => ComponentType<{ children: ReactNode }>; + + /** + * Gets the `PageWrapper` component for embedding a filter bar in the security solution application. + * */ + getPageWrapper: () => ComponentType<{ children: ReactNode }>; + + /** + * Get the user's license to drive the Threat Intelligence plugin's visibility. + */ + licenseService: LicenseAware; + + /** + * Gets Security Solution shared information like browerFields, indexPattern and selectedPatterns in DataView. + */ + sourcererDataView: SelectedDataView; + + /** + * Security Solution store + */ + securitySolutionStore: Store; + + /** + * Pass UseInvestigateInTimeline functionality to TI plugin + */ + getUseInvestigateInTimeline: ({ + dataProviders, + from, + to, + }: UseInvestigateInTimelineProps) => () => Promise; + + useQuery: () => Query; + + useFilters: () => Filter[]; + + useGlobalTime: () => TimeRange; + + SiemSearchBar: VFC; + + /** + * Register query in security solution store for tracking and centralized refresh support + */ + registerQuery: (query: { id: string; loading: boolean; refetch: VoidFunction }) => void; + + /** + * Deregister stale query + */ + deregisterQuery: (query: { id: string }) => void; + + /** + * Add to blocklist feature + */ + blockList: Blocking; +} + +/** + * All the names for the threat intelligence pages. + * + * Example to add more names: + * export type TIPage = 'indicators' | 'feed'; + */ +export type TIPage = 'indicators'; + +/** + * All the IDs for the threat intelligence pages. + * This needs to match the threat intelligence page entries in SecurityPageName` (x-pack/solutions/security/plugins/security_solution/common/constants.ts). + * + * Example to add more IDs: + * export type TIPageId = 'threat_intelligence' | 'threat_intelligence-feed'; + */ +export type TIPageId = 'threat_intelligence'; + +/** + * A record of all the properties that will be used to build deeplinks, links and navtabs objects. + */ +export interface TIPageProperties { + id: TIPageId; + readonly oldNavigationName: string; // delete when the old navigation is removed + readonly newNavigationName: string; // rename to name when the old navigation is removed + readonly path: string; + readonly disabled: boolean; + readonly description: string; + readonly globalSearchKeywords: string[]; + readonly keywords: string[]; +} diff --git a/x-pack/plugins/threat_intelligence/public/utils/dates.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/dates.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/dates.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/dates.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/dates.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/dates.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/dates.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/dates.tsx diff --git a/x-pack/plugins/threat_intelligence/public/utils/filter_integrations.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/filter_integrations.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/filter_integrations.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/filter_integrations.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/filter_integrations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/filter_integrations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/filter_integrations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/filter_integrations.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/search.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/search.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/search.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/search.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/security_solution_links.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/security_solution_links.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/security_solution_links.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.ts similarity index 93% rename from x-pack/plugins/threat_intelligence/public/utils/security_solution_links.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.ts index 87d7c7239d533..598cd13ff562f 100644 --- a/x-pack/plugins/threat_intelligence/public/utils/security_solution_links.ts +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.ts @@ -10,7 +10,7 @@ import { threatIntelligencePages } from '../constants/navigation'; /** * Properties used in the Security Solution plugin to add links to the navigation. - * The properties come from LinkItem (x-pack/plugins/security_solution/public/common/links/types.ts). + * The properties come from LinkItem (x-pack/solutions/security/plugins/security_solution/public/common/links/types.ts). * * If we want to control more from within the Threat Intelligence plugin, we can keep growing this interface. */ diff --git a/x-pack/plugins/threat_intelligence/scripts/generate_indicators.js b/x-pack/solutions/security/plugins/threat_intelligence/scripts/generate_indicators.js similarity index 100% rename from x-pack/plugins/threat_intelligence/scripts/generate_indicators.js rename to x-pack/solutions/security/plugins/threat_intelligence/scripts/generate_indicators.js diff --git a/x-pack/plugins/threat_intelligence/server/index.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/index.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/index.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/index.ts diff --git a/x-pack/plugins/threat_intelligence/server/plugin.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/plugin.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/plugin.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/plugin.ts diff --git a/x-pack/plugins/threat_intelligence/server/search_strategy.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/search_strategy.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/search_strategy.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/search_strategy.ts diff --git a/x-pack/plugins/threat_intelligence/server/types.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/types.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/types.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/types.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.test.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/get_indicator_query_params.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/get_indicator_query_params.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/get_indicator_query_params.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/get_indicator_query_params.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/get_runtime_mappings.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/get_runtime_mappings.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/get_runtime_mappings.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/get_runtime_mappings.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/indicator_name.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/indicator_name.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/indicator_name.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/indicator_name.test.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/indicator_name.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/indicator_name.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/indicator_name.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/indicator_name.ts diff --git a/x-pack/solutions/security/plugins/threat_intelligence/tsconfig.json b/x-pack/solutions/security/plugins/threat_intelligence/tsconfig.json new file mode 100644 index 0000000000000..ffac934023eb6 --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/tsconfig.json @@ -0,0 +1,39 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "scripts/**/*", + "public/**/*.json", + "server/**/*.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/cases-plugin", + "@kbn/timelines-plugin", + "@kbn/core", + "@kbn/data-plugin", + "@kbn/unified-search-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/i18n-react", + "@kbn/data-views-plugin", + "@kbn/es-query", + "@kbn/rule-registry-plugin", + "@kbn/inspector-plugin", + "@kbn/shared-ux-page-kibana-template-types", + "@kbn/doc-links", + "@kbn/i18n", + "@kbn/kibana-react-plugin", + "@kbn/utility-types", + "@kbn/ui-theme", + "@kbn/securitysolution-io-ts-list-types", + "@kbn/core-ui-settings-browser", + "@kbn/search-types" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/timelines/README.md b/x-pack/solutions/security/plugins/timelines/README.md similarity index 100% rename from x-pack/plugins/timelines/README.md rename to x-pack/solutions/security/plugins/timelines/README.md diff --git a/x-pack/plugins/timelines/common/api/search_strategy/index.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/index.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/index.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/index_fields.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/index_fields.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/index_fields.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/index_fields.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/filter_query.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/filter_query.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/filter_query.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/filter_query.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/language.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/language.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/language.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/language.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/order.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/order.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/order.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/order.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/pagination.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/pagination.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/pagination.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/pagination.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/runtime_mappings.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/runtime_mappings.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/runtime_mappings.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/runtime_mappings.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/sort.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/sort.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/sort.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/sort.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/timerange.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timerange.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/timerange.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timerange.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_paginated.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_paginated.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/request_paginated.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_paginated.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/timeline.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/timeline.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/timeline.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/timeline.ts diff --git a/x-pack/plugins/timelines/common/constants.ts b/x-pack/solutions/security/plugins/timelines/common/constants.ts similarity index 100% rename from x-pack/plugins/timelines/common/constants.ts rename to x-pack/solutions/security/plugins/timelines/common/constants.ts diff --git a/x-pack/plugins/timelines/common/experimental_features.ts b/x-pack/solutions/security/plugins/timelines/common/experimental_features.ts similarity index 100% rename from x-pack/plugins/timelines/common/experimental_features.ts rename to x-pack/solutions/security/plugins/timelines/common/experimental_features.ts diff --git a/x-pack/plugins/timelines/common/index.ts b/x-pack/solutions/security/plugins/timelines/common/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/index.ts rename to x-pack/solutions/security/plugins/timelines/common/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/common/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/common/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.mock.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.mock.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.mock.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.mock.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.test.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.test.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.test.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/validation/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/validation/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/index.ts diff --git a/x-pack/plugins/timelines/common/typed_json.ts b/x-pack/solutions/security/plugins/timelines/common/typed_json.ts similarity index 100% rename from x-pack/plugins/timelines/common/typed_json.ts rename to x-pack/solutions/security/plugins/timelines/common/typed_json.ts diff --git a/x-pack/plugins/timelines/common/types/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/index.ts diff --git a/x-pack/plugins/timelines/common/types/timeline/actions/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/actions/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/timeline/actions/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/timeline/actions/index.ts diff --git a/x-pack/solutions/security/plugins/timelines/common/types/timeline/cells/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/cells/index.ts new file mode 100644 index 0000000000000..c8f0bedfa5852 --- /dev/null +++ b/x-pack/solutions/security/plugins/timelines/common/types/timeline/cells/index.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiDataGridCellValueElementProps } from '@elastic/eui'; +import type { Filter } from '@kbn/es-query'; +import { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; +import { ColumnHeaderOptions, DeprecatedRowRenderer } from '../..'; +import { BrowserFields, TimelineNonEcsData } from '../../../search_strategy'; + +/** + * The following props are provided to the function called by `renderCellValue`. + * Warning: This type might be outdated. Therefore, migrate to the new one from + * `solutions/security/plugins/security_solution/common/types/timeline/cells/index.ts`. + * @deprecated + */ +export type DeprecatedCellValueElementProps = EuiDataGridCellValueElementProps & { + asPlainText?: boolean; + browserFields?: BrowserFields; + data: TimelineNonEcsData[]; + ecsData?: Ecs; + eventId: string; // _id + globalFilters?: Filter[]; + header: ColumnHeaderOptions; + isDraggable: boolean; + isTimeline?: boolean; // Default cell renderer is used for both the alert table and timeline. This allows us to cheaply separate concerns + linkValues: string[] | undefined; + rowRenderers?: DeprecatedRowRenderer[]; + setFlyoutAlert?: (alertId: string) => void; + scopeId: string; + truncate?: boolean; + key?: string; + closeCellPopover?: () => void; + enableActions?: boolean; +}; diff --git a/x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts diff --git a/x-pack/plugins/timelines/common/types/timeline/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/timeline/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/timeline/index.ts diff --git a/x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts new file mode 100644 index 0000000000000..6c3449ad59d35 --- /dev/null +++ b/x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; +import { DeprecatedRowRendererId } from '..'; + +/** + * This interface should not be used anymore. + * Use the one from `solutions/security/plugins/security_solution/common/types/timeline`. + * @deprecated + */ +export interface DeprecatedRowRenderer { + id: DeprecatedRowRendererId; + isInstance: (data: Ecs) => boolean; + renderRow: ({ + contextId, + data, + isDraggable, + scopeId, + }: { + contextId?: string; + data: Ecs; + isDraggable: boolean; + scopeId: string; + }) => React.ReactNode; +} diff --git a/x-pack/plugins/timelines/common/utility_types.ts b/x-pack/solutions/security/plugins/timelines/common/utility_types.ts similarity index 100% rename from x-pack/plugins/timelines/common/utility_types.ts rename to x-pack/solutions/security/plugins/timelines/common/utility_types.ts diff --git a/x-pack/plugins/timelines/common/utils/accessibility/helpers.test.tsx b/x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.test.tsx similarity index 100% rename from x-pack/plugins/timelines/common/utils/accessibility/helpers.test.tsx rename to x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.test.tsx diff --git a/x-pack/plugins/timelines/common/utils/accessibility/helpers.ts b/x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/accessibility/helpers.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts diff --git a/x-pack/plugins/timelines/common/utils/accessibility/index.ts b/x-pack/solutions/security/plugins/timelines/common/utils/accessibility/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/accessibility/index.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/accessibility/index.ts diff --git a/x-pack/plugins/timelines/common/utils/api.ts b/x-pack/solutions/security/plugins/timelines/common/utils/api.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/api.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/api.ts diff --git a/x-pack/plugins/timelines/common/utils/field_formatters.test.ts b/x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/field_formatters.test.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.test.ts diff --git a/x-pack/plugins/timelines/common/utils/field_formatters.ts b/x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/field_formatters.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts diff --git a/x-pack/plugins/timelines/common/utils/index.ts b/x-pack/solutions/security/plugins/timelines/common/utils/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/index.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/index.ts diff --git a/x-pack/plugins/timelines/common/utils/to_array.ts b/x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/to_array.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts diff --git a/x-pack/solutions/security/plugins/timelines/jest.config.js b/x-pack/solutions/security/plugins/timelines/jest.config.js new file mode 100644 index 0000000000000..5ce00c1a0a303 --- /dev/null +++ b/x-pack/solutions/security/plugins/timelines/jest.config.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/timelines'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/timelines', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/timelines/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/timelines/kibana.jsonc b/x-pack/solutions/security/plugins/timelines/kibana.jsonc similarity index 100% rename from x-pack/plugins/timelines/kibana.jsonc rename to x-pack/solutions/security/plugins/timelines/kibana.jsonc diff --git a/x-pack/plugins/timelines/public/assets/illustration_product_no_results_magnifying_glass.svg b/x-pack/solutions/security/plugins/timelines/public/assets/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from x-pack/plugins/timelines/public/assets/illustration_product_no_results_magnifying_glass.svg rename to x-pack/solutions/security/plugins/timelines/public/assets/illustration_product_no_results_magnifying_glass.svg diff --git a/x-pack/plugins/timelines/public/components/clipboard/clipboard.tsx b/x-pack/solutions/security/plugins/timelines/public/components/clipboard/clipboard.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/clipboard/clipboard.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/clipboard/clipboard.tsx diff --git a/x-pack/plugins/timelines/public/components/clipboard/translations.ts b/x-pack/solutions/security/plugins/timelines/public/components/clipboard/translations.ts similarity index 100% rename from x-pack/plugins/timelines/public/components/clipboard/translations.ts rename to x-pack/solutions/security/plugins/timelines/public/components/clipboard/translations.ts diff --git a/x-pack/plugins/timelines/public/components/clipboard/with_copy_to_clipboard.tsx b/x-pack/solutions/security/plugins/timelines/public/components/clipboard/with_copy_to_clipboard.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/clipboard/with_copy_to_clipboard.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/clipboard/with_copy_to_clipboard.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.test.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.test.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.test.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.test.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/copy.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/copy.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/copy.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/copy.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.test.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/overflow.test.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.test.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/overflow.test.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/overflow.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/overflow.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/translations.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/translations.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/translations.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/translations.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/types.ts b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/types.ts similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/types.ts rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/types.ts diff --git a/x-pack/plugins/timelines/public/components/hover_actions/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/index.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/utils.ts b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/utils.ts similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/utils.ts rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/utils.ts diff --git a/x-pack/plugins/timelines/public/components/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/index.tsx diff --git a/x-pack/plugins/timelines/public/components/last_updated/index.test.tsx b/x-pack/solutions/security/plugins/timelines/public/components/last_updated/index.test.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/last_updated/index.test.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/last_updated/index.test.tsx diff --git a/x-pack/plugins/timelines/public/components/last_updated/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/last_updated/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/last_updated/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/last_updated/index.tsx diff --git a/x-pack/plugins/timelines/public/components/last_updated/translations.ts b/x-pack/solutions/security/plugins/timelines/public/components/last_updated/translations.ts similarity index 100% rename from x-pack/plugins/timelines/public/components/last_updated/translations.ts rename to x-pack/solutions/security/plugins/timelines/public/components/last_updated/translations.ts diff --git a/x-pack/plugins/timelines/public/components/loading/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/loading/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/loading/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/loading/index.tsx diff --git a/x-pack/plugins/timelines/public/components/tooltip_with_keyboard_shortcut/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/tooltip_with_keyboard_shortcut/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/tooltip_with_keyboard_shortcut/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/tooltip_with_keyboard_shortcut/index.tsx diff --git a/x-pack/plugins/timelines/public/hooks/use_add_to_timeline.ts b/x-pack/solutions/security/plugins/timelines/public/hooks/use_add_to_timeline.ts similarity index 100% rename from x-pack/plugins/timelines/public/hooks/use_add_to_timeline.ts rename to x-pack/solutions/security/plugins/timelines/public/hooks/use_add_to_timeline.ts diff --git a/x-pack/solutions/security/plugins/timelines/public/hooks/use_app_toasts.ts b/x-pack/solutions/security/plugins/timelines/public/hooks/use_app_toasts.ts new file mode 100644 index 0000000000000..3ef00461dbd40 --- /dev/null +++ b/x-pack/solutions/security/plugins/timelines/public/hooks/use_app_toasts.ts @@ -0,0 +1,237 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useRef } from 'react'; +import { isString } from 'lodash/fp'; +import { isAppError, isKibanaError, isSecurityAppError } from '@kbn/securitysolution-t-grid'; +import type { AppError } from '@kbn/securitysolution-t-grid'; + +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import type { ErrorToastOptions, ToastsStart, Toast, NotificationsStart } from '@kbn/core/public'; +import { IEsError, isEsError } from '@kbn/search-errors'; + +export type UseAppToasts = Pick & { + api: ToastsStart; + addError: (error: unknown, options: ErrorToastOptions) => Toast; +}; + +/** + * This gives a better presentation of error data sent from the API (both general platform errors and app-specific errors). + * This uses platform's new Toasts service to prevent modal/toast z-index collision issues. + * This fixes some issues you can see with re-rendering since using a class such as notifications.toasts. + * This also has an adapter and transform for detecting if a bsearch's EsError is present and then adapts that to the + * Kibana error toaster model so that the network error message will be shown rather than a stack trace. + */ +export const useAppToasts = (): UseAppToasts => { + const { toasts } = useKibana<{ + notifications: NotificationsStart; + }>().services.notifications; + const addError = useRef(toasts?.addError.bind(toasts)).current; + const addSuccess = useRef(toasts?.addSuccess.bind(toasts)).current; + const addWarning = useRef(toasts?.addWarning.bind(toasts)).current; + + const _addError = useCallback( + (error: unknown, options: ErrorToastOptions) => { + const adaptedError = errorToErrorStackAdapter(error); + return addError(adaptedError, options); + }, + [addError] + ); + return { api: toasts, addError: _addError, addSuccess, addWarning }; +}; + +/** + * Given an error of one type vs. another type this tries to adapt + * the best it can to the existing error toaster which parses the .stack + * as its error when you click the button to show the full error message. + * @param error The error to adapt to. + * @returns The adapted toaster error message. + */ +export const errorToErrorStackAdapter = (error: unknown): Error => { + if (error != null && isEsError(error)) { + return esErrorToErrorStack(error); + } else if (isAppError(error)) { + return appErrorToErrorStack(error); + } else if (error instanceof Error) { + return errorToErrorStack(error); + } else { + return unknownToErrorStack(error); + } +}; + +/** + * See this file, we are not allowed to import files such as es_error. + * So instead we say maybe err is on there so that we can unwrap it and get + * our status code from it if possible within the error in our function. + * src/plugins/data/public/search/errors/es_error.tsx + */ +export type MaybeESError = IEsError & { err?: Record }; + +/** + * This attempts its best to map between an IEsError which comes from bsearch to a error_toaster + * See the file: src/core/public/notifications/toasts/error_toast.tsx + * + * NOTE: This is brittle at the moment from bsearch and the hope is that better support between + * the error message and formatting of bsearch and the error_toast.tsx from Kibana core will be + * supported in the future. However, for now, this is _hopefully_ temporary. + * + * Also see the file: + * x-pack/solutions/security/plugins/security_solution/public/app/home/setup.tsx + * + * Where this same technique of overriding and changing the stack is occurring. + */ +export const esErrorToErrorStack = (error: IEsError & MaybeESError): Error => { + const maybeUnWrapped = error.err != null ? error.err : error; + const statusCode = + error.err?.statusCode != null + ? `(${error.err.statusCode})` + : error.statusCode != null + ? `(${error.statusCode})` + : ''; + const stringifiedError = getStringifiedStack(maybeUnWrapped); + const adaptedError = new Error( + `${error.attributes?.error?.reason ?? error.message} ${statusCode}` + ); + adaptedError.name = error.attributes?.error?.reason ?? error.message; + if (stringifiedError != null) { + adaptedError.stack = stringifiedError; + } + return adaptedError; +}; + +/** + * This attempts its best to map between a Kibana application error which can come from backend + * REST API's that are typically of a particular format and form. + * + * The existing error_toaster code tries to consolidate network and software stack traces but really + * here and our toasters we are using them for network response errors so we can troubleshoot things + * as quick as possible. + * + * We override and use error.stack to be able to give _full_ network responses regardless of if they + * are from Kibana or if they are from elasticSearch since sometimes Kibana errors might wrap the errors. + * + * Sometimes the errors are wrapped from io-ts, Kibana Schema or something else and we want to show + * as full error messages as we can. + */ +export const appErrorToErrorStack = (error: AppError): Error => { + const statusCode = isKibanaError(error) + ? `(${error.body.statusCode})` + : isSecurityAppError(error) + ? `(${error.body.status_code})` + : ''; + const stringifiedError = getStringifiedStack(error); + const adaptedError = new Error( + `${String(error.body.message).trim() !== '' ? error.body.message : error.message} ${statusCode}` + ); + // Note although all the Typescript typings say that error.name is a string and exists, we still can encounter an undefined so we + // do an extra guard here and default to empty string if it is undefined + adaptedError.name = error.name != null ? error.name : ''; + if (stringifiedError != null) { + adaptedError.stack = stringifiedError; + } + return adaptedError; +}; + +/** + * Takes an error and tries to stringify it and use that as the stack for the error toaster + * @param error The error to convert into a message + * @returns The exception error to return back + */ +export const errorToErrorStack = (error: Error): Error => { + const stringifiedError = getStringifiedStack(error); + const adaptedError = new Error(error.message); + adaptedError.name = error.name; + if (stringifiedError != null) { + adaptedError.stack = stringifiedError; + } + return adaptedError; +}; + +/** + * Last ditch effort to take something unknown which could be a string, number, + * anything. This usually should not be called but just in case we do try our + * best to stringify it and give a message, name, and replace the stack of it. + * @param error The unknown error to convert into a message + * @returns The exception error to return back + */ +export const unknownToErrorStack = (error: unknown): Error => { + const stringifiedError = getStringifiedStack(error); + const message = isString(error) + ? error + : error instanceof Object && stringifiedError != null + ? stringifiedError + : String(error); + const adaptedError = new Error(message); + adaptedError.name = message; + if (stringifiedError != null) { + adaptedError.stack = stringifiedError; + } + return adaptedError; +}; + +/** + * Stringifies the error. However, since Errors can JSON.stringify into empty objects this will + * use a replacer to push those as enumerable properties so we can stringify them. + * @param error The error to get a string representation of + * @returns The string representation of the error + */ +export const getStringifiedStack = (error: unknown): string | undefined => { + try { + return JSON.stringify( + error, + (_, value) => { + const enumerable = convertErrorToEnumerable(value); + if (isEmptyObjectWhenStringified(enumerable)) { + return undefined; + } else { + return enumerable; + } + }, + 2 + ); + } catch (err) { + return undefined; + } +}; + +/** + * Converts an error if this is an error to have enumerable so it can stringified + * @param error The error which might not have enumerable properties. + * @returns Enumerable error + */ +export const convertErrorToEnumerable = (error: unknown): unknown => { + if (error instanceof Error) { + return { + ...error, + name: error.name, + message: error.message, + stack: error.stack, + }; + } else { + return error; + } +}; + +/** + * If the object strings into an empty object we shouldn't show it as it doesn't + * add value and sometimes different people/frameworks attach req,res,request,response + * objects which don't stringify into anything or can have circular references. + * @param item The item to see if we are empty or have a circular reference error with. + * @returns True if this is a good object to stringify, otherwise false + */ +export const isEmptyObjectWhenStringified = (item: unknown): boolean => { + if (item instanceof Object) { + try { + return JSON.stringify(item) === '{}'; + } catch (_) { + // Do nothing, return false if we have a circular reference or other oddness. + return false; + } + } else { + return false; + } +}; diff --git a/x-pack/plugins/timelines/public/hooks/use_selector.tsx b/x-pack/solutions/security/plugins/timelines/public/hooks/use_selector.tsx similarity index 100% rename from x-pack/plugins/timelines/public/hooks/use_selector.tsx rename to x-pack/solutions/security/plugins/timelines/public/hooks/use_selector.tsx diff --git a/x-pack/plugins/timelines/public/index.ts b/x-pack/solutions/security/plugins/timelines/public/index.ts similarity index 100% rename from x-pack/plugins/timelines/public/index.ts rename to x-pack/solutions/security/plugins/timelines/public/index.ts diff --git a/x-pack/plugins/timelines/public/methods/index.tsx b/x-pack/solutions/security/plugins/timelines/public/methods/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/methods/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/methods/index.tsx diff --git a/x-pack/plugins/timelines/public/mock/browser_fields.ts b/x-pack/solutions/security/plugins/timelines/public/mock/browser_fields.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/browser_fields.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/browser_fields.ts diff --git a/x-pack/plugins/timelines/public/mock/index.ts b/x-pack/solutions/security/plugins/timelines/public/mock/index.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/index.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/index.ts diff --git a/x-pack/plugins/timelines/public/mock/index_pattern.ts b/x-pack/solutions/security/plugins/timelines/public/mock/index_pattern.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/index_pattern.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/index_pattern.ts diff --git a/x-pack/plugins/timelines/public/mock/kibana_react.mock.ts b/x-pack/solutions/security/plugins/timelines/public/mock/kibana_react.mock.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/kibana_react.mock.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/kibana_react.mock.ts diff --git a/x-pack/plugins/timelines/public/mock/mock_and_providers.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/mock_and_providers.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/mock_and_providers.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/mock_and_providers.tsx diff --git a/x-pack/plugins/timelines/public/mock/mock_data_providers.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/mock_data_providers.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/mock_data_providers.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/mock_data_providers.tsx diff --git a/x-pack/plugins/timelines/public/mock/mock_hover_actions.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/mock_hover_actions.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/mock_hover_actions.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/mock_hover_actions.tsx diff --git a/x-pack/plugins/timelines/public/mock/mock_local_storage.ts b/x-pack/solutions/security/plugins/timelines/public/mock/mock_local_storage.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/mock_local_storage.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/mock_local_storage.ts diff --git a/x-pack/plugins/timelines/public/mock/plugin_mock.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/plugin_mock.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/plugin_mock.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/plugin_mock.tsx diff --git a/x-pack/plugins/timelines/public/mock/test_providers.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/test_providers.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/test_providers.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/test_providers.tsx diff --git a/x-pack/plugins/timelines/public/plugin.ts b/x-pack/solutions/security/plugins/timelines/public/plugin.ts similarity index 100% rename from x-pack/plugins/timelines/public/plugin.ts rename to x-pack/solutions/security/plugins/timelines/public/plugin.ts diff --git a/x-pack/plugins/timelines/public/store/timeline/actions.ts b/x-pack/solutions/security/plugins/timelines/public/store/timeline/actions.ts similarity index 100% rename from x-pack/plugins/timelines/public/store/timeline/actions.ts rename to x-pack/solutions/security/plugins/timelines/public/store/timeline/actions.ts diff --git a/x-pack/plugins/timelines/public/store/timeline/helpers.ts b/x-pack/solutions/security/plugins/timelines/public/store/timeline/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/public/store/timeline/helpers.ts rename to x-pack/solutions/security/plugins/timelines/public/store/timeline/helpers.ts diff --git a/x-pack/plugins/timelines/public/store/timeline/index.ts b/x-pack/solutions/security/plugins/timelines/public/store/timeline/index.ts similarity index 100% rename from x-pack/plugins/timelines/public/store/timeline/index.ts rename to x-pack/solutions/security/plugins/timelines/public/store/timeline/index.ts diff --git a/x-pack/plugins/timelines/public/store/timeline/reducer.ts b/x-pack/solutions/security/plugins/timelines/public/store/timeline/reducer.ts similarity index 100% rename from x-pack/plugins/timelines/public/store/timeline/reducer.ts rename to x-pack/solutions/security/plugins/timelines/public/store/timeline/reducer.ts diff --git a/x-pack/plugins/timelines/public/types.ts b/x-pack/solutions/security/plugins/timelines/public/types.ts similarity index 100% rename from x-pack/plugins/timelines/public/types.ts rename to x-pack/solutions/security/plugins/timelines/public/types.ts diff --git a/x-pack/plugins/timelines/server/config.ts b/x-pack/solutions/security/plugins/timelines/server/config.ts similarity index 100% rename from x-pack/plugins/timelines/server/config.ts rename to x-pack/solutions/security/plugins/timelines/server/config.ts diff --git a/x-pack/solutions/security/plugins/timelines/server/index.ts b/x-pack/solutions/security/plugins/timelines/server/index.ts new file mode 100644 index 0000000000000..5a0f514fd8048 --- /dev/null +++ b/x-pack/solutions/security/plugins/timelines/server/index.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; +import { schema } from '@kbn/config-schema'; +import { ConfigSchema } from './config'; + +export async function plugin(initializerContext: PluginInitializerContext) { + const { TimelinesPlugin } = await import('./plugin'); + return new TimelinesPlugin(initializerContext); +} + +export type { TimelinesPluginUI, TimelinesPluginStart } from './types'; + +const configSchema = schema.object({ + /** + * For internal use. A list of string values (comma delimited) that will enable experimental + * type of functionality that is not yet released. Valid values for this settings need to + * be defined in: + * `x-pack/solutions/security/plugins/timelines/common/experimental_features.ts` + * under the `allowedExperimentalValues` object + * + * @example + * xpack.timelines.enableExperimental: + * - someCrazyFeature + * - someEvenCrazierFeature + */ + enableExperimental: schema.arrayOf(schema.string(), { + defaultValue: () => [], + }), +}); + +export const config: PluginConfigDescriptor = { + exposeToBrowser: { + enableExperimental: true, + }, + schema: configSchema, +}; diff --git a/x-pack/plugins/timelines/server/plugin.ts b/x-pack/solutions/security/plugins/timelines/server/plugin.ts similarity index 100% rename from x-pack/plugins/timelines/server/plugin.ts rename to x-pack/solutions/security/plugins/timelines/server/plugin.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/index.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/index_fields/index.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/mock.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/mock.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/index_fields/mock.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/mock.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/parse_options.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/parse_options.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/index_fields/parse_options.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/parse_options.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/__mocks__/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/__mocks__/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/__mocks__/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/helpers.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/parse_options.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/parse_options.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/parse_options.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/parse_options.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/query.kpi.dsl.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/query.kpi.dsl.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/query.kpi.dsl.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/query.kpi.dsl.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_timestamp.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_timestamp.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_timestamp.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_timestamp.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/is_agg_cardinality_aggregate.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/is_agg_cardinality_aggregate.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/is_agg_cardinality_aggregate.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/is_agg_cardinality_aggregate.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/types.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/types.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/types.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/types.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/index.ts diff --git a/x-pack/plugins/timelines/server/types.ts b/x-pack/solutions/security/plugins/timelines/server/types.ts similarity index 100% rename from x-pack/plugins/timelines/server/types.ts rename to x-pack/solutions/security/plugins/timelines/server/types.ts diff --git a/x-pack/plugins/timelines/server/utils/beat_schema/fields.json b/x-pack/solutions/security/plugins/timelines/server/utils/beat_schema/fields.json similarity index 100% rename from x-pack/plugins/timelines/server/utils/beat_schema/fields.json rename to x-pack/solutions/security/plugins/timelines/server/utils/beat_schema/fields.json diff --git a/x-pack/plugins/timelines/server/utils/beat_schema/fields.json.d.ts b/x-pack/solutions/security/plugins/timelines/server/utils/beat_schema/fields.json.d.ts similarity index 100% rename from x-pack/plugins/timelines/server/utils/beat_schema/fields.json.d.ts rename to x-pack/solutions/security/plugins/timelines/server/utils/beat_schema/fields.json.d.ts diff --git a/x-pack/plugins/timelines/server/utils/build_query.ts b/x-pack/solutions/security/plugins/timelines/server/utils/build_query.ts similarity index 100% rename from x-pack/plugins/timelines/server/utils/build_query.ts rename to x-pack/solutions/security/plugins/timelines/server/utils/build_query.ts diff --git a/x-pack/plugins/timelines/server/utils/filters.ts b/x-pack/solutions/security/plugins/timelines/server/utils/filters.ts similarity index 100% rename from x-pack/plugins/timelines/server/utils/filters.ts rename to x-pack/solutions/security/plugins/timelines/server/utils/filters.ts diff --git a/x-pack/solutions/security/plugins/timelines/tsconfig.json b/x-pack/solutions/security/plugins/timelines/tsconfig.json new file mode 100644 index 0000000000000..fa908c501885a --- /dev/null +++ b/x-pack/solutions/security/plugins/timelines/tsconfig.json @@ -0,0 +1,47 @@ + +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 + "server/**/*.json", + "public/**/*.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/data-plugin", + "@kbn/cases-plugin", + "@kbn/alerting-plugin", + "@kbn/utility-types", + "@kbn/es-query", + "@kbn/securitysolution-ecs", + "@kbn/securitysolution-t-grid", + "@kbn/rule-data-utils", + "@kbn/rule-registry-plugin", + "@kbn/data-views-plugin", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/ui-theme", + "@kbn/i18n-react", + "@kbn/i18n", + "@kbn/security-plugin", + "@kbn/safer-lodash-set", + "@kbn/alerts-as-data-utils", + "@kbn/logging", + "@kbn/search-errors", + "@kbn/search-types", + "@kbn/react-kibana-mount", + "@kbn/field-formats-plugin", + "@kbn/config-schema", + "@kbn/zod" + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/x-pack/test/accessibility/apps/group1/spaces.ts b/x-pack/test/accessibility/apps/group1/spaces.ts index 324e3bcbcdccd..87cedf0f7d47c 100644 --- a/x-pack/test/accessibility/apps/group1/spaces.ts +++ b/x-pack/test/accessibility/apps/group1/spaces.ts @@ -54,6 +54,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.spaceSelector.clickCreateSpace(); await PageObjects.spaceSelector.clickEnterSpaceName(); await PageObjects.spaceSelector.addSpaceName('space_a'); + await PageObjects.spaceSelector.changeSolutionView('classic'); await a11y.testAppSnapshot(); }); @@ -90,6 +91,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.spaceSelector.clickCreateSpace(); await PageObjects.spaceSelector.clickEnterSpaceName(); await PageObjects.spaceSelector.addSpaceName('space_b'); + await PageObjects.spaceSelector.changeSolutionView('classic'); await PageObjects.spaceSelector.clickSaveSpaceCreation(); await PageObjects.common.navigateToApp('home'); await PageObjects.spaceSelector.openSpacesNav(); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts index dc85feb741eb8..777479a631ec9 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts @@ -23,18 +23,6 @@ export default function alertingTests({ loadTestFile, getService }: FtrProviderC loadTestFile(require.resolve('./backfill')); loadTestFile(require.resolve('./find')); loadTestFile(require.resolve('./find_internal')); - loadTestFile(require.resolve('./create')); - loadTestFile(require.resolve('./delete')); - loadTestFile(require.resolve('./disable')); - loadTestFile(require.resolve('./enable')); - loadTestFile(require.resolve('./execution_status')); - loadTestFile(require.resolve('./get')); - loadTestFile(require.resolve('./get_alert_state')); - loadTestFile(require.resolve('./get_alert_summary')); - loadTestFile(require.resolve('./rule_types')); - loadTestFile(require.resolve('./retain_api_key')); - loadTestFile(require.resolve('./bulk_untrack')); - loadTestFile(require.resolve('./bulk_untrack_by_query')); }); }); } diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get_all.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get_all.ts index 39da3ab33a6ea..b354f0f962d84 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get_all.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get_all.ts @@ -6,7 +6,6 @@ */ import expect from '@kbn/expect'; -import { RULE_SAVED_OBJECT_TYPE } from '@kbn/alerting-plugin/server'; import { UserAtSpaceScenarios } from '../../../scenarios'; import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../../common/lib'; import { FtrProviderContext } from '../../../../common/ftr_provider_context'; @@ -199,7 +198,7 @@ export default function getAllConnectorTests({ getService }: FtrProviderContext) }) ) .expect(200); - objectRemover.add(space.id, createdAlert.id, RULE_SAVED_OBJECT_TYPE, 'alerts'); + objectRemover.add(space.id, createdAlert.id, 'rule', 'alerting'); const response = await supertestWithoutAuth .get(`${getUrlPrefix(space.id)}/api/actions/connectors`) diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get_all_system.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get_all_system.ts index e19ade26171b1..860ab6daf3eca 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get_all_system.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/get_all_system.ts @@ -6,7 +6,6 @@ */ import expect from '@kbn/expect'; -import { RULE_SAVED_OBJECT_TYPE } from '@kbn/alerting-plugin/server'; import { SuperuserAtSpace1, UserAtSpaceScenarios } from '../../../scenarios'; import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../../common/lib'; import { FtrProviderContext } from '../../../../common/ftr_provider_context'; @@ -244,7 +243,7 @@ export default function getAllConnectorTests({ getService }: FtrProviderContext) }) ) .expect(200); - objectRemover.add(space.id, createdAlert.id, RULE_SAVED_OBJECT_TYPE, 'alerts'); + objectRemover.add(space.id, createdAlert.id, 'rule', 'alerting'); const response = await supertestWithoutAuth .get(`${getUrlPrefix(space.id)}/internal/actions/connectors`) diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group5/config.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/config.ts new file mode 100644 index 0000000000000..f999da061b90b --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group5/config.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createTestConfig } from '../../common/config'; + +// eslint-disable-next-line import/no-default-export +export default createTestConfig('security_and_spaces', { + disabledPlugins: [], + license: 'trial', + ssl: true, + enableActionsProxy: true, + publicBaseUrl: true, + testFiles: [require.resolve('./tests')], + useDedicatedTaskRunner: true, +}); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/bulk_untrack.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/bulk_untrack.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/bulk_untrack.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/bulk_untrack.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/bulk_untrack_by_query.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/bulk_untrack_by_query.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/bulk_untrack_by_query.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/bulk_untrack_by_query.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/create.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/create.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/create.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/create.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/delete.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/delete.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/delete.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/delete.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/disable.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/disable.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/disable.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/disable.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/enable.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/enable.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/enable.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/enable.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/execution_status.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/execution_status.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/execution_status.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/execution_status.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_state.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get_alert_state.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_state.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get_alert_state.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_summary.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get_alert_summary.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_summary.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get_alert_summary.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/index.ts new file mode 100644 index 0000000000000..cdc805dfa0b92 --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/index.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { setupSpacesAndUsers, tearDown } from '../../../setup'; + +// eslint-disable-next-line import/no-default-export +export default function alertingApiIntegrationTests({ + loadTestFile, + getService, +}: FtrProviderContext) { + describe('Alerts - Group 5', function () { + before(async () => { + await setupSpacesAndUsers(getService); + }); + + after(async () => { + await tearDown(getService); + }); + + loadTestFile(require.resolve('./create')); + loadTestFile(require.resolve('./delete')); + loadTestFile(require.resolve('./disable')); + loadTestFile(require.resolve('./enable')); + loadTestFile(require.resolve('./execution_status')); + loadTestFile(require.resolve('./get')); + loadTestFile(require.resolve('./get_alert_state')); + loadTestFile(require.resolve('./get_alert_summary')); + loadTestFile(require.resolve('./rule_types')); + loadTestFile(require.resolve('./retain_api_key')); + loadTestFile(require.resolve('./bulk_untrack')); + loadTestFile(require.resolve('./bulk_untrack_by_query')); + }); +} diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/retain_api_key.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/retain_api_key.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/retain_api_key.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/retain_api_key.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/rule_types.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/rule_types.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/rule_types.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/rule_types.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/index.ts new file mode 100644 index 0000000000000..b48e5d216a544 --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function alertingApiIntegrationTests({ loadTestFile }: FtrProviderContext) { + describe('alerting api integration security and spaces enabled', function () { + loadTestFile(require.resolve('./alerting')); + }); +} diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/connector_types/stack/preconfigured_alert_history_connector.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/connector_types/stack/preconfigured_alert_history_connector.ts index 22f81d7bb7e96..2e98d9129b553 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/connector_types/stack/preconfigured_alert_history_connector.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/connector_types/stack/preconfigured_alert_history_connector.ts @@ -137,10 +137,10 @@ export default function preconfiguredAlertHistoryConnectorTests({ expect().fail(`waiting for alert ${id} statuses ${Array.from(statuses)} timed out`); } - const response = await supertest.get(`/api/alerts/alert/${id}`); + const response = await supertest.get(`/api/alerting/rule/${id}`); expect(response.status).to.eql(200); - const { executionStatus } = response.body || {}; + const { execution_status: executionStatus } = response.body || {}; const { status } = executionStatus || {}; const message = `waitForStatus(${Array.from(statuses)}): got ${JSON.stringify( diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/create.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/create.ts index 5a6385a3895d2..ecef6541f7181 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/create.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/create.ts @@ -720,104 +720,5 @@ export default function createAlertTests({ getService }: FtrProviderContext) { }); }); }); - - describe('legacy', function () { - this.tags('skipFIPS'); - it('should handle create alert request appropriately', async () => { - const { body: createdAction } = await supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/api/actions/connector`) - .set('kbn-xsrf', 'foo') - .send({ - name: 'MY action', - connector_type_id: 'test.noop', - config: {}, - secrets: {}, - }) - .expect(200); - - const { - rule_type_id: alertTypeId, - notify_when: notifyWhen, - ...testAlert - } = getTestRuleData({ - actions: [ - { - id: createdAction.id, - group: 'default', - params: {}, - }, - ], - }); - const response = await supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert`) - .set('kbn-xsrf', 'foo') - .send({ - ...testAlert, - alertTypeId, - notifyWhen, - }); - - expect(response.status).to.eql(200); - objectRemover.add(Spaces.space1.id, response.body.id, 'rule', 'alerting'); - expect(response.body).to.eql({ - id: response.body.id, - name: 'abc', - tags: ['foo'], - actions: [ - { - id: createdAction.id, - actionTypeId: createdAction.connector_type_id, - group: 'default', - params: {}, - uuid: response.body.actions[0].uuid, - }, - ], - enabled: true, - alertTypeId: 'test.noop', - consumer: 'alertsFixture', - params: {}, - createdBy: null, - schedule: { interval: '1m' }, - scheduledTaskId: response.body.scheduledTaskId, - updatedBy: null, - apiKeyOwner: null, - apiKeyCreatedByUser: null, - throttle: '1m', - notifyWhen: 'onThrottleInterval', - muteAll: false, - mutedInstanceIds: [], - createdAt: response.body.createdAt, - updatedAt: response.body.updatedAt, - executionStatus: response.body.executionStatus, - revision: 0, - running: false, - ...(response.body.next_run ? { next_run: response.body.next_run } : {}), - ...(response.body.last_run ? { last_run: response.body.last_run } : {}), - }); - expect(Date.parse(response.body.createdAt)).to.be.greaterThan(0); - expect(Date.parse(response.body.updatedAt)).to.be.greaterThan(0); - expect(Date.parse(response.body.updatedAt)).to.eql(Date.parse(response.body.createdAt)); - if (response.body.next_run) { - expect(Date.parse(response.body.next_run)).to.be.greaterThan(0); - } - expect(typeof response.body.scheduledTaskId).to.be('string'); - const taskRecord = await getScheduledTask(response.body.scheduledTaskId); - expect(taskRecord.type).to.eql('task'); - expect(taskRecord.task.taskType).to.eql('alerting:test.noop'); - expect(JSON.parse(taskRecord.task.params)).to.eql({ - alertId: response.body.id, - spaceId: Spaces.space1.id, - consumer: 'alertsFixture', - }); - expect(taskRecord.task.enabled).to.eql(true); - // Ensure AAD isn't broken - await checkAAD({ - supertest, - spaceId: Spaces.space1.id, - type: RULE_SAVED_OBJECT_TYPE, - id: response.body.id, - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/delete.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/delete.ts index 811fbbf2b1732..37f482a5d512e 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/delete.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/delete.ts @@ -65,27 +65,5 @@ export default function createDeleteTests({ getService }: FtrProviderContext) { message: `Saved object [alert/${createdAlert.id}] not found`, }); }); - - describe('legacy', () => { - it('should handle delete alert request appropriately', async () => { - const { body: createdAlert } = await supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData()) - .expect(200); - - await supertest - .delete(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdAlert.id}`) - .set('kbn-xsrf', 'foo') - .expect(204, ''); - - try { - await getScheduledTask(createdAlert.scheduledTaskId); - throw new Error('Should have removed scheduled task'); - } catch (e) { - expect(e.meta.statusCode).to.eql(404); - } - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/disable.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/disable.ts index 01fa746b65f2a..846c4a719522f 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/disable.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/disable.ts @@ -266,50 +266,5 @@ export default function createDisableRuleTests({ getService }: FtrProviderContex id: createdRule.id, }); }); - - describe('legacy', function () { - it('should handle disable rule request appropriately', async () => { - const { body: createdRule } = await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData({ enabled: true })) - .expect(200); - objectRemover.add(Spaces.space1.id, createdRule.id, 'rule', 'alerting'); - - await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdRule.id}/_disable`) - .set('kbn-xsrf', 'foo') - .expect(204); - - // task doc should still exist but be disabled - await retry.try(async () => { - const taskRecord = await getScheduledTask(createdRule.scheduled_task_id); - expect(taskRecord.type).to.eql('task'); - expect(taskRecord.task.taskType).to.eql('alerting:test.noop'); - expect(JSON.parse(taskRecord.task.params)).to.eql({ - alertId: createdRule.id, - spaceId: Spaces.space1.id, - consumer: 'alertsFixture', - }); - expect(taskRecord.task.enabled).to.eql(false); - }); - - const { body: disabledRule } = await supertestWithoutAuth - .get(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule/${createdRule.id}`) - .set('kbn-xsrf', 'foo') - .expect(200); - - // Ensure revision was not updated - expect(disabledRule.revision).to.eql(0); - - // Ensure AAD isn't broken - await checkAAD({ - supertest: supertestWithoutAuth, - spaceId: Spaces.space1.id, - type: RULE_SAVED_OBJECT_TYPE, - id: createdRule.id, - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/enable.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/enable.ts index 74b8fd0307a86..8eae2dfe7022b 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/enable.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/enable.ts @@ -94,48 +94,5 @@ export default function createEnableAlertTests({ getService }: FtrProviderContex }); }); }); - - describe('legacy', function () { - this.tags('skipFIPS'); - it('should handle enable alert request appropriately', async () => { - const { body: createdAlert } = await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData({ enabled: false })) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdAlert.id}/_enable`) - .set('kbn-xsrf', 'foo') - .expect(204); - - const { body: updatedAlert } = await supertestWithoutAuth - .get(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule/${createdAlert.id}`) - .set('kbn-xsrf', 'foo') - .expect(200); - expect(typeof updatedAlert.scheduled_task_id).to.eql('string'); - const taskRecord = await getScheduledTask(updatedAlert.scheduled_task_id); - expect(taskRecord.type).to.eql('task'); - expect(taskRecord.task.taskType).to.eql('alerting:test.noop'); - expect(JSON.parse(taskRecord.task.params)).to.eql({ - alertId: createdAlert.id, - spaceId: Spaces.space1.id, - consumer: 'alertsFixture', - }); - expect(taskRecord.task.enabled).to.eql(true); - - // Ensure revision was not updated - expect(updatedAlert.revision).to.eql(0); - - // Ensure AAD isn't broken - await checkAAD({ - supertest: supertestWithoutAuth, - spaceId: Spaces.space1.id, - type: RULE_SAVED_OBJECT_TYPE, - id: createdAlert.id, - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/find.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/find.ts index f6b48df9b9f17..c902355b68fcc 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/find.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/find.ts @@ -336,58 +336,5 @@ export default function createFindTests({ getService }: FtrProviderContext) { }); }); }); - - describe('legacy', function () { - this.tags('skipFIPS'); - it('should handle find alert request appropriately', async () => { - const { body: createdAlert } = await supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData()) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - const response = await supertest.get( - `${getUrlPrefix( - Spaces.space1.id - )}/api/alerts/_find?search=test.noop&search_fields=alertTypeId` - ); - - expect(response.status).to.eql(200); - expect(response.body.page).to.equal(1); - expect(response.body.perPage).to.be.greaterThan(0); - expect(response.body.total).to.be.greaterThan(0); - const match = response.body.data.find((obj: any) => obj.id === createdAlert.id); - expect(match).to.eql({ - id: createdAlert.id, - name: 'abc', - tags: ['foo'], - alertTypeId: 'test.noop', - consumer: 'alertsFixture', - schedule: { interval: '1m' }, - enabled: true, - actions: [], - params: {}, - createdBy: null, - apiKeyOwner: null, - apiKeyCreatedByUser: null, - scheduledTaskId: match.scheduledTaskId, - updatedBy: null, - throttle: '1m', - notifyWhen: 'onThrottleInterval', - muteAll: false, - mutedInstanceIds: [], - createdAt: match.createdAt, - updatedAt: match.updatedAt, - executionStatus: match.executionStatus, - revision: 0, - running: false, - ...(match.nextRun ? { nextRun: match.nextRun } : {}), - ...(match.lastRun ? { lastRun: match.lastRun } : {}), - }); - expect(Date.parse(match.createdAt)).to.be.greaterThan(0); - expect(Date.parse(match.updatedAt)).to.be.greaterThan(0); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/find_internal.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/find_internal.ts index 7c10b9be598bb..e8dc9ac696842 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/find_internal.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/find_internal.ts @@ -337,54 +337,5 @@ export default function createFindTests({ getService }: FtrProviderContext) { expect(response.body.total).to.equal(1); expect(response.body.data[0].consumer).to.eql('alertsRestrictedFixture'); }); - - describe('legacy', function () { - this.tags('skipFIPS'); - it('should handle find alert request appropriately', async () => { - const { body: createdAlert } = await supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData()) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - const response = await supertest.get(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/_find`); - - expect(response.status).to.eql(200); - expect(response.body.page).to.equal(1); - expect(response.body.perPage).to.be.greaterThan(0); - expect(response.body.total).to.be.greaterThan(0); - const match = response.body.data.find((obj: any) => obj.id === createdAlert.id); - expect(match).to.eql({ - id: createdAlert.id, - name: 'abc', - tags: ['foo'], - alertTypeId: 'test.noop', - consumer: 'alertsFixture', - schedule: { interval: '1m' }, - enabled: true, - actions: [], - params: {}, - createdBy: null, - apiKeyOwner: null, - apiKeyCreatedByUser: null, - scheduledTaskId: match.scheduledTaskId, - updatedBy: null, - throttle: '1m', - notifyWhen: 'onThrottleInterval', - muteAll: false, - mutedInstanceIds: [], - createdAt: match.createdAt, - updatedAt: match.updatedAt, - executionStatus: match.executionStatus, - revision: 0, - running: false, - ...(match.nextRun ? { nextRun: match.nextRun } : {}), - ...(match.lastRun ? { lastRun: match.lastRun } : {}), - }); - expect(Date.parse(match.createdAt)).to.be.greaterThan(0); - expect(Date.parse(match.updatedAt)).to.be.greaterThan(0); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get.ts index e559b1d17f196..58fdbf377ecf1 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get.ts @@ -124,55 +124,5 @@ export default function createGetTests({ getService }: FtrProviderContext) { getTestUtils('public', objectRemover, supertest); getTestUtils('internal', objectRemover, supertest); - - describe('legacy', function () { - this.tags('skipFIPS'); - it('should handle get alert request appropriately', async () => { - const { body: createdAlert } = await supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData()) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - const response = await supertest.get( - `${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdAlert.id}` - ); - - expect(response.status).to.eql(200); - expect(response.body).to.eql({ - id: createdAlert.id, - name: 'abc', - tags: ['foo'], - alertTypeId: 'test.noop', - consumer: 'alertsFixture', - schedule: { interval: '1m' }, - enabled: true, - actions: [], - params: {}, - createdBy: null, - scheduledTaskId: response.body.scheduledTaskId, - updatedBy: null, - apiKeyOwner: null, - apiKeyCreatedByUser: null, - throttle: '1m', - notifyWhen: 'onThrottleInterval', - muteAll: false, - mutedInstanceIds: [], - createdAt: response.body.createdAt, - updatedAt: response.body.updatedAt, - executionStatus: response.body.executionStatus, - revision: 0, - running: false, - ...(response.body.nextRun ? { nextRun: response.body.nextRun } : {}), - ...(response.body.lastRun ? { lastRun: response.body.lastRun } : {}), - }); - expect(Date.parse(response.body.createdAt)).to.be.greaterThan(0); - expect(Date.parse(response.body.updatedAt)).to.be.greaterThan(0); - if (response.body.nextRun) { - expect(Date.parse(response.body.nextRun)).to.be.greaterThan(0); - } - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get_alert_state.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get_alert_state.ts index 6082e6ff69eb8..87a8449fb37e1 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get_alert_state.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get_alert_state.ts @@ -91,53 +91,5 @@ export default function createGetAlertStateTests({ getService }: FtrProviderCont message: 'Saved object [alert/1] not found', }); }); - - describe('legacy', () => { - it('should fetch updated state', async () => { - const { body: createdAlert } = await supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send({ - enabled: true, - name: 'abc', - tags: ['foo'], - rule_type_id: 'test.cumulative-firing', - consumer: 'alertsFixture', - schedule: { interval: '5s' }, - throttle: '5s', - actions: [], - params: {}, - notify_when: 'onThrottleInterval', - }) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - // wait for alert to actually execute - await retry.try(async () => { - const response = await supertest.get( - `${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdAlert.id}/state` - ); - - expect(response.status).to.eql(200); - expect(response.body).to.key('alertInstances', 'alertTypeState', 'previousStartedAt'); - expect(response.body.alertTypeState.runCount).to.greaterThan(1); - }); - - const response = await supertest.get( - `${getUrlPrefix(Spaces.space1.id)}/internal/alerting/rule/${createdAlert.id}/state` - ); - - expect(response.body.rule_type_state.runCount).to.greaterThan(0); - - const alertInstances = Object.entries>(response.body.alerts); - expect(alertInstances.length).to.eql(response.body.rule_type_state.runCount); - alertInstances.forEach(([key, value], index) => { - expect(key).to.eql(`instance-${index}`); - expect(value.state.instanceStateValue).to.be(true); - expect(value.state.start).not.to.be(undefined); - expect(value.state.duration).not.to.be(undefined); - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get_alert_summary.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get_alert_summary.ts index 86444543bde73..cee5e44afcc8d 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get_alert_summary.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/get_alert_summary.ts @@ -384,78 +384,6 @@ export default function createGetAlertSummaryTests({ getService }: FtrProviderCo expect(actualAlerts).to.eql(expectedAlerts); }); }); - - describe('legacy', function () { - this.tags('skipFIPS'); - it('handles multi-alert status', async () => { - // wait so cache expires - await setTimeoutAsync(TEST_CACHE_EXPIRATION_TIME); - - // pattern of when the alert should fire - const pattern = { - alertA: [true, true, true, true], - alertB: [true, true, false, false], - alertC: [true, true, true, true], - }; - - const { body: createdRule } = await supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send( - getTestRuleData({ - rule_type_id: 'test.patternFiring', - params: { pattern }, - schedule: { interval: '1s' }, - }) - ) - .expect(200); - objectRemover.add(Spaces.space1.id, createdRule.id, 'rule', 'alerting'); - - await alertUtils.muteInstance(createdRule.id, 'alertC'); - await alertUtils.muteInstance(createdRule.id, 'alertD'); - await waitForEvents(createdRule.id, ['new-instance', 'recovered-instance']); - const response = await supertest.get( - `${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdRule.id}/_instance_summary` - ); - - const actualAlerts = checkAndCleanActualAlerts(response.body.instances, [ - 'alertA', - 'alertB', - 'alertC', - ]); - const expectedAlerts = { - alertA: { - status: 'Active', - muted: false, - actionGroupId: 'default', - activeStartDate: actualAlerts.alertA.activeStartDate, - flapping: false, - tracked: true, - }, - alertB: { - status: 'OK', - muted: false, - flapping: false, - tracked: true, - }, - alertC: { - status: 'Active', - muted: true, - actionGroupId: 'default', - activeStartDate: actualAlerts.alertC.activeStartDate, - flapping: false, - tracked: true, - }, - alertD: { - status: 'OK', - muted: true, - flapping: false, - tracked: true, - }, - }; - expect(actualAlerts).to.eql(expectedAlerts); - }); - }); }); async function waitForEvents(id: string, actions: string[]) { diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/rule_types.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/rule_types.ts index e722d058e8b7c..9a0ad8133c02c 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/rule_types.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group1/rule_types.ts @@ -103,46 +103,5 @@ export default function listRuleTypes({ getService }: FtrProviderContext) { params: [], }); }); - - describe('legacy', () => { - it('should return 200 with list of alert types', async () => { - const response = await supertest.get( - `${getUrlPrefix(Spaces.space1.id)}/api/alerts/list_alert_types` - ); - expect(response.status).to.eql(200); - const { authorizedConsumers, ...fixtureAlertType } = response.body.find( - (alertType: any) => alertType.id === 'test.noop' - ); - expect(fixtureAlertType).to.eql({ - actionGroups: [ - { id: 'default', name: 'Default' }, - { id: 'recovered', name: 'Recovered' }, - ], - defaultActionGroupId: 'default', - doesSetRecoveryContext: false, - id: 'test.noop', - name: 'Test: Noop', - actionVariables: { - state: [], - params: [], - context: [], - }, - recoveryActionGroup: { - id: 'recovered', - name: 'Recovered', - }, - category: 'kibana', - producer: 'alertsFixture', - minimumLicenseRequired: 'basic', - isExportable: true, - enabledInLicense: true, - hasFieldsForAAD: false, - hasAlertsMappings: false, - ruleTaskTimeout: '5m', - validLegacyConsumers: ['alerts'], - }); - expect(Object.keys(authorizedConsumers)).to.contain('alertsFixture'); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/mute_all.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/mute_all.ts index e4cbec75460b0..09a12a1371454 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/mute_all.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/mute_all.ts @@ -51,35 +51,5 @@ export default function createMuteTests({ getService }: FtrProviderContext) { id: createdAlert.id, }); }); - - describe('legacy', () => { - it('should handle mute alert request appropriately', async () => { - const { body: createdAlert } = await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData({ enabled: false })) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdAlert.id}/_mute_all`) - .set('kbn-xsrf', 'foo') - .expect(204); - - const { body: updatedAlert } = await supertestWithoutAuth - .get(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule/${createdAlert.id}`) - .set('kbn-xsrf', 'foo') - .expect(200); - expect(updatedAlert.mute_all).to.eql(true); - - // Ensure AAD isn't broken - await checkAAD({ - supertest: supertestWithoutAuth, - spaceId: Spaces.space1.id, - type: RULE_SAVED_OBJECT_TYPE, - id: createdAlert.id, - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/mute_instance.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/mute_instance.ts index ac580ad335c51..65791c86e833b 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/mute_instance.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/mute_instance.ts @@ -52,39 +52,5 @@ export default function createMuteInstanceTests({ getService }: FtrProviderConte id: createdAlert.id, }); }); - - describe('legacy', () => { - it('should handle mute alert instance request appropriately', async () => { - const { body: createdAlert } = await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData({ enabled: false })) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - await supertestWithoutAuth - .post( - `${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${ - createdAlert.id - }/alert_instance/1/_mute` - ) - .set('kbn-xsrf', 'foo') - .expect(204); - - const { body: updatedAlert } = await supertestWithoutAuth - .get(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule/${createdAlert.id}`) - .set('kbn-xsrf', 'foo') - .expect(200); - expect(updatedAlert.muted_alert_ids).to.eql(['1']); - - // Ensure AAD isn't broken - await checkAAD({ - supertest: supertestWithoutAuth, - spaceId: Spaces.space1.id, - type: RULE_SAVED_OBJECT_TYPE, - id: createdAlert.id, - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/transform_rule_types/transform_health/rule.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/transform_rule_types/transform_health/rule.ts index f760ac26f40c7..ca0ba9a92f64a 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/transform_rule_types/transform_health/rule.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/transform_rule_types/transform_health/rule.ts @@ -82,7 +82,6 @@ export default function ruleTests({ getService }: FtrProviderContext) { const objectRemover = new ObjectRemover(supertest); let connectorId: string; const transformId = 'test_transform_01'; - const destinationIndex = generateDestIndex(transformId); beforeEach(async () => { await esTestIndexTool.destroy(); @@ -98,8 +97,11 @@ export default function ruleTests({ getService }: FtrProviderContext) { connectorId = await createConnector(); - await transform.api.createIndices(destinationIndex); await createTransform(transformId); + + // Create additional transforms to exclude from the rule + await createTransform('exclude_transform_01'); + await createTransform('exclude_transform_02'); }); afterEach(async () => { @@ -112,10 +114,12 @@ export default function ruleTests({ getService }: FtrProviderContext) { it('runs correctly', async () => { await stopTransform(transformId); + await stopTransform('exclude_transform_01'); const ruleId = await createRule({ name: 'Test all transforms', includeTransforms: ['*'], + excludeTransforms: ['exclude_transform_*'], }); log.debug('Checking created alerts...'); @@ -160,6 +164,8 @@ export default function ruleTests({ getService }: FtrProviderContext) { } async function createTransform(id: string) { + const destinationIndex = generateDestIndex(id); + await transform.api.createIndices(destinationIndex); const config = generateTransformConfig(id); await transform.api.createAndRunTransform(id, config); } @@ -183,20 +189,20 @@ export default function ruleTests({ getService }: FtrProviderContext) { }, }; + const { name, ...transformHealthRuleParams } = params; + const { status, body: createdRule } = await supertest .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) .set('kbn-xsrf', 'foo') .send({ - name: params.name, + name, consumer: 'alerts', enabled: true, rule_type_id: RULE_TYPE_ID, schedule: { interval: '1d' }, actions: [action], notify_when: 'onActiveAlert', - params: { - includeTransforms: params.includeTransforms, - }, + params: transformHealthRuleParams, }); // will print the error body, if an error occurred diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/unmute_all.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/unmute_all.ts index 363086e1549fe..42bca18c07bfc 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/unmute_all.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/unmute_all.ts @@ -53,39 +53,5 @@ export default function createUnmuteTests({ getService }: FtrProviderContext) { id: createdAlert.id, }); }); - - describe('legacy', () => { - it('should handle unmute alert request appropriately', async () => { - const { body: createdAlert } = await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData({ enabled: false })) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdAlert.id}/_mute_all`) - .set('kbn-xsrf', 'foo') - .expect(204); - await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdAlert.id}/_unmute_all`) - .set('kbn-xsrf', 'foo') - .expect(204); - - const { body: updatedAlert } = await supertestWithoutAuth - .get(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule/${createdAlert.id}`) - .set('kbn-xsrf', 'foo') - .expect(200); - expect(updatedAlert.mute_all).to.eql(false); - - // Ensure AAD isn't broken - await checkAAD({ - supertest: supertestWithoutAuth, - spaceId: Spaces.space1.id, - type: RULE_SAVED_OBJECT_TYPE, - id: createdAlert.id, - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/unmute_instance.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/unmute_instance.ts index 5655e52aa4d09..4b54c6c0c134f 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/unmute_instance.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/unmute_instance.ts @@ -53,47 +53,5 @@ export default function createUnmuteInstanceTests({ getService }: FtrProviderCon id: createdAlert.id, }); }); - - describe('legacy', () => { - it('should handle unmute alert instance request appropriately', async () => { - const { body: createdAlert } = await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData({ enabled: false })) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - await supertestWithoutAuth - .post( - `${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${ - createdAlert.id - }/alert_instance/1/_mute` - ) - .set('kbn-xsrf', 'foo') - .expect(204); - await supertestWithoutAuth - .post( - `${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${ - createdAlert.id - }/alert_instance/1/_unmute` - ) - .set('kbn-xsrf', 'foo') - .expect(204); - - const { body: updatedAlert } = await supertestWithoutAuth - .get(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule/${createdAlert.id}`) - .set('kbn-xsrf', 'foo') - .expect(200); - expect(updatedAlert.muted_alert_ids).to.eql([]); - - // Ensure AAD isn't broken - await checkAAD({ - supertest: supertestWithoutAuth, - spaceId: Spaces.space1.id, - type: RULE_SAVED_OBJECT_TYPE, - id: createdAlert.id, - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/update.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/update.ts index 025fa3b693dce..24fdf571f070d 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/update.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/update.ts @@ -408,75 +408,5 @@ export default function createUpdateTests({ getService }: FtrProviderContext) { .expect(400); }); }); - - describe('legacy', function () { - this.tags('skipFIPS'); - it('should handle update alert request appropriately', async () => { - const { body: createdAlert } = await supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData()) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - const updatedData = { - name: 'bcd', - tags: ['bar'], - params: { - foo: true, - }, - schedule: { interval: '12s' }, - actions: [], - throttle: '1m', - notifyWhen: 'onThrottleInterval', - }; - - const response = await supertest - .put(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdAlert.id}`) - .set('kbn-xsrf', 'foo') - .send(updatedData) - .expect(200); - - expect(response.body).to.eql({ - ...updatedData, - id: createdAlert.id, - tags: ['bar'], - alertTypeId: 'test.noop', - consumer: 'alertsFixture', - createdBy: null, - enabled: true, - updatedBy: null, - apiKeyOwner: null, - apiKeyCreatedByUser: null, - muteAll: false, - mutedInstanceIds: [], - notifyWhen: 'onThrottleInterval', - scheduledTaskId: createdAlert.scheduled_task_id, - createdAt: response.body.createdAt, - updatedAt: response.body.updatedAt, - executionStatus: response.body.executionStatus, - revision: 1, - running: false, - ...(response.body.nextRun ? { nextRun: response.body.nextRun } : {}), - ...(response.body.lastRun ? { lastRun: response.body.lastRun } : {}), - }); - expect(Date.parse(response.body.createdAt)).to.be.greaterThan(0); - expect(Date.parse(response.body.updatedAt)).to.be.greaterThan(0); - expect(Date.parse(response.body.updatedAt)).to.be.greaterThan( - Date.parse(response.body.createdAt) - ); - if (response.body.nextRun) { - expect(Date.parse(response.body.nextRun)).to.be.greaterThan(0); - } - - // Ensure AAD isn't broken - await checkAAD({ - supertest, - spaceId: Spaces.space1.id, - type: RULE_SAVED_OBJECT_TYPE, - id: createdAlert.id, - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/update_api_key.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/update_api_key.ts index 0aa9ec3354acd..e588d0e606543 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/update_api_key.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group2/update_api_key.ts @@ -79,41 +79,5 @@ export default function createUpdateApiKeyTests({ getService }: FtrProviderConte }); }); }); - - describe('legacy', function () { - this.tags('skipFIPS'); - it('should handle update alert api key appropriately', async () => { - const { body: createdAlert } = await supertestWithoutAuth - .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule`) - .set('kbn-xsrf', 'foo') - .send(getTestRuleData()) - .expect(200); - objectRemover.add(Spaces.space1.id, createdAlert.id, 'rule', 'alerting'); - - await supertestWithoutAuth - .post( - `${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert/${createdAlert.id}/_update_api_key` - ) - .set('kbn-xsrf', 'foo') - .expect(204); - - const { body: updatedAlert } = await supertestWithoutAuth - .get(`${getUrlPrefix(Spaces.space1.id)}/api/alerting/rule/${createdAlert.id}`) - .set('kbn-xsrf', 'foo') - .expect(200); - expect(updatedAlert.api_key_owner).to.eql(null); - - // Ensure revision is not incremented when API key is updated - expect(updatedAlert.revision).to.eql(0); - - // Ensure AAD isn't broken - await checkAAD({ - supertest: supertestWithoutAuth, - spaceId: Spaces.space1.id, - type: RULE_SAVED_OBJECT_TYPE, - id: createdAlert.id, - }); - }); - }); }); } diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/query_dsl_only.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/query_dsl_only.ts index 6fcdf9be2f40f..b25368b14ae74 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/query_dsl_only.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group3/builtin_alert_types/es_query/query_dsl_only.ts @@ -33,7 +33,7 @@ export default function ruleTests({ getService }: FtrProviderContext) { const { es, esTestIndexTool, esTestIndexToolOutput, createEsDocumentsInGroups, waitForDocs } = getRuleServices(getService); - describe('rule', () => { + describe('Query DSL only', () => { let endDate: string; let connectorId: string; const objectRemover = new ObjectRemover(supertest); diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/config.ts b/x-pack/test/api_integration/apis/cloud_security_posture/config.ts index 5f335f116fefe..28ac1f643041b 100644 --- a/x-pack/test/api_integration/apis/cloud_security_posture/config.ts +++ b/x-pack/test/api_integration/apis/cloud_security_posture/config.ts @@ -5,13 +5,27 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test'; +import { FtrConfigProviderContext, getKibanaCliLoggers } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const baseIntegrationTestsConfig = await readConfigFile(require.resolve('../../config.ts')); + const baseConfig = await readConfigFile(require.resolve('../../config.ts')); return { - ...baseIntegrationTestsConfig.getAll(), + ...baseConfig.getAll(), testFiles: [require.resolve('.')], + kbnTestServer: { + ...baseConfig.get('kbnTestServer'), + serverArgs: [ + ...baseConfig.get('kbnTestServer.serverArgs'), + `--logging.loggers=${JSON.stringify([ + ...getKibanaCliLoggers(baseConfig.get('kbnTestServer.serverArgs')), + { + name: 'plugins.cloudSecurityPosture', + level: 'all', + appenders: ['default'], + }, + ])}`, + ], + }, }; } diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/graph.ts b/x-pack/test/api_integration/apis/cloud_security_posture/graph.ts new file mode 100644 index 0000000000000..4ff483bff343d --- /dev/null +++ b/x-pack/test/api_integration/apis/cloud_security_posture/graph.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + ELASTIC_HTTP_VERSION_HEADER, + X_ELASTIC_INTERNAL_ORIGIN_REQUEST, +} from '@kbn/core-http-common'; +import type { Agent } from 'supertest'; +import type { GraphRequest } from '@kbn/cloud-security-posture-common/types/graph/latest'; +import { FtrProviderContext } from '@kbn/ftr-common-functional-services'; +import { result } from '../../../cloud_security_posture_api/utils'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + + const logger = getService('log'); + const supertest = getService('supertest'); + + const postGraph = (agent: Agent, body: GraphRequest, auth?: { user: string; pass: string }) => { + let req = agent + .post('/internal/cloud_security_posture/graph') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .set('kbn-xsrf', 'xxxx'); + + if (auth) { + req = req.auth(auth.user, auth.pass); + } + + return req.send(body); + }; + + describe('POST /internal/cloud_security_posture/graph', () => { + // TODO: fix once feature flag is enabled for the API + describe.skip('Feature flag', () => { + it('should return 404 when feature flag is not toggled', async () => { + await postGraph(supertest, { + query: { + eventIds: [], + start: 'now-1d/d', + end: 'now/d', + }, + }).expect(result(404, logger)); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/index.ts b/x-pack/test/api_integration/apis/cloud_security_posture/index.ts index fa11aab67b279..46f594be3ed38 100644 --- a/x-pack/test/api_integration/apis/cloud_security_posture/index.ts +++ b/x-pack/test/api_integration/apis/cloud_security_posture/index.ts @@ -20,6 +20,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./benchmark/v2')); loadTestFile(require.resolve('./rules/v1')); loadTestFile(require.resolve('./rules/v2')); + loadTestFile(require.resolve('./graph')); // Place your tests files under this directory and add the following here: // loadTestFile(require.resolve('./your test name')); diff --git a/x-pack/test/api_integration/apis/entity_manager/count.ts b/x-pack/test/api_integration/apis/entity_manager/count.ts new file mode 100644 index 0000000000000..710457651d732 --- /dev/null +++ b/x-pack/test/api_integration/apis/entity_manager/count.ts @@ -0,0 +1,462 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment'; +import expect from 'expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { + createEntityTypeDefinition, + createEntitySourceDefinition, + countEntities, +} from './helpers/request'; +import { createIndexWithDocuments, createIndexWithEntities } from './helpers/data_generation'; +import { clearEntityDefinitions } from './helpers/clear_entity_definitions'; + +export default function ({ getService }: FtrProviderContext) { + const esClient = getService('es'); + const supertest = getService('supertest'); + + describe('_count API', () => { + let cleanup: Function[] = []; + + before(() => clearEntityDefinitions(esClient)); + + afterEach(async () => { + await Promise.all([clearEntityDefinitions(esClient), ...cleanup.map((fn) => fn())]); + cleanup = []; + }); + + it('returns correct count for single source definition', async () => { + const source = { + id: 'source-1-with-services', + type_id: '20-services', + index_patterns: ['index-1-with-services'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: 'custom_timestamp', + }; + await createEntityTypeDefinition(supertest, { + type: { id: '20-services', display_name: '20-services' }, + }); + await createEntitySourceDefinition(supertest, { source }); + + cleanup.push( + await createIndexWithEntities(esClient, { + index: 'index-1-with-services', + count: 20, + source, + }) + ); + + const result = await countEntities(supertest, {}, 200); + + expect(result).toEqual({ total: 20, types: { '20-services': 20 }, errors: [] }); + }); + + it('aggregates total count across types', async () => { + const sourceType1 = { + id: 'source-1-with-20-chumbles', + type_id: 'chumble', + index_patterns: ['index-1-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: 'custom_timestamp', + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'chumble', display_name: 'chumble' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType1 }); + + const sourceType2 = { + id: 'source-1-with-15-shleems', + type_id: 'shleem', + index_patterns: ['index-1-with-shleems'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'shleem', display_name: 'shleem' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType2 }); + + const sourceType3 = { + id: 'source-1-with-25-shmuckles', + type_id: 'shmuckle', + index_patterns: ['index-1-with-shmuckles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'shmuckle', display_name: 'shmuckle' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType3 }); + + cleanup = await Promise.all([ + createIndexWithEntities(esClient, { + index: 'index-1-with-chumbles', + count: 20, + source: sourceType1, + }), + createIndexWithEntities(esClient, { + index: 'index-1-with-shleems', + count: 15, + source: sourceType2, + }), + createIndexWithEntities(esClient, { + index: 'index-1-with-shmuckles', + count: 25, + source: sourceType3, + }), + ]); + + // counts all existing types + let result = await countEntities(supertest, {}, 200); + + expect(result).toEqual({ + total: 60, + types: { + shleem: 15, + chumble: 20, + shmuckle: 25, + }, + errors: [], + }); + + // only counts requested types + result = await countEntities(supertest, { types: ['shleem', 'shmuckle'] }, 200); + + expect(result).toEqual({ + total: 40, + types: { + shleem: 15, + shmuckle: 25, + }, + errors: [], + }); + }); + + it('aggregates type count across sources', async () => { + await createEntityTypeDefinition(supertest, { type: { id: 'fleeb', display_name: 'fleeb' } }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-5-fleebs', + type_id: 'fleeb', + index_patterns: ['index-1-with-fleebs'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'source-2-with-5-fleebs', + type_id: 'fleeb', + index_patterns: ['index-2-with-fleebs'], + identity_fields: ['servicename_field'], + metadata_fields: [], + filters: [], + timestamp_field: 'custom_timestamp', + }, + }), + ]); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-fleebs', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + }, + documents: [ + { '@timestamp': moment().toISOString(), 'service.name': 'service-one' }, + { '@timestamp': moment().toISOString(), 'service.name': 'service-two' }, + { '@timestamp': moment().toISOString(), 'service.name': 'service-three' }, + { '@timestamp': moment().toISOString(), 'service.name': 'service-four' }, + { '@timestamp': moment().toISOString(), 'service.name': 'service-five' }, + ], + }), + createIndexWithDocuments(esClient, { + index: 'index-2-with-fleebs', + properties: { + custom_timestamp: { type: 'date' }, + servicename_field: { type: 'keyword' }, + }, + documents: [ + { custom_timestamp: moment().toISOString(), servicename_field: 'service-three' }, + { custom_timestamp: moment().toISOString(), servicename_field: 'service-four' }, + { custom_timestamp: moment().toISOString(), servicename_field: 'service-five' }, + { custom_timestamp: moment().toISOString(), servicename_field: 'service-six' }, + { custom_timestamp: moment().toISOString(), servicename_field: 'service-seven' }, + ], + }), + ]); + + const result = await countEntities(supertest, { types: ['fleeb'] }, 200); + + expect(result).toEqual({ total: 7, types: { fleeb: 7 }, errors: [] }); + }); + + it('respects start and end parameters', async () => { + const now = moment(); + + await createEntityTypeDefinition(supertest, { + type: { id: 'grumbo', display_name: 'grumbo' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-grumbos', + type_id: 'grumbo', + index_patterns: ['index-1-with-grumbos'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }); + + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-grumbos', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + }, + documents: [ + { '@timestamp': moment(now).toISOString(), 'service.name': 'service-one' }, + { + '@timestamp': moment(now).subtract(10, 'minute').toISOString(), + 'service.name': 'service-two', + }, + { + '@timestamp': moment(now).subtract(20, 'minute').toISOString(), + 'service.name': 'service-three', + }, + { + '@timestamp': moment(now).subtract(30, 'minute').toISOString(), + 'service.name': 'service-four', + }, + { + '@timestamp': moment(now).subtract(30, 'minute').toISOString(), + 'service.name': 'service-five', + }, + ], + }) + ); + + const result = await countEntities( + supertest, + { + start: moment(now).subtract(25, 'minute').toISOString(), + end: now.toISOString(), + }, + 200 + ); + + expect(result).toEqual({ total: 3, types: { grumbo: 3 }, errors: [] }); + }); + + it('respects filters parameters', async () => { + const sourceType1 = { + id: 'source-1-with-chumbles', + type_id: 'chumble', + index_patterns: ['index-1-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'chumble', display_name: 'chumble' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType1 }); + + const sourceType2 = { + id: 'source-1-with-shleems', + type_id: 'shleem', + index_patterns: ['index-1-with-shleems'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'shleem', display_name: 'shleem' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType2 }); + + const sourceType3 = { + id: 'source-1-with-shmuckles', + type_id: 'shmuckle', + index_patterns: ['index-1-with-shmuckles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'shmuckle', display_name: 'shmuckle' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType3 }); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-chumbles', + properties: { + 'service.name': { type: 'keyword' }, + 'service.environment': { type: 'keyword' }, + }, + documents: [ + { 'service.name': 'service-one', 'service.environment': 'prod' }, + { 'service.name': 'service-one' }, + ], + }), + createIndexWithDocuments(esClient, { + index: 'index-1-with-shleems', + properties: { + 'service.name': { type: 'keyword' }, + 'service.environment': { type: 'keyword' }, + }, + documents: [ + { 'service.name': 'service-two', 'service.environment': 'staging' }, + { 'service.name': 'service-three', 'service.environment': 'prod' }, + { 'service.name': 'service-three', 'service.environment': 'dev' }, + ], + }), + createIndexWithDocuments(esClient, { + index: 'index-1-with-shmuckles', + properties: { + 'service.name': { type: 'keyword' }, + }, + documents: [ + { 'service.name': 'service-two' }, + { 'service.name': 'service-three' }, + { 'service.name': 'service-three' }, + ], + }), + ]); + + const result = await countEntities( + supertest, + { filters: ['service.environment: prod'] }, + 200 + ); + + expect(result).toEqual({ + total: 2, + types: { + chumble: 1, + shleem: 1, + shmuckle: 0, + }, + errors: [], + }); + }); + + it('is resilient to partially valid sources', async () => { + await createEntityTypeDefinition(supertest, { + type: { id: 'chumble', display_name: 'chumble' }, + }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'source-with-chumbles', + type_id: 'chumble', + index_patterns: ['index-1-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'invalid-source-with-chumbles', + type_id: 'chumble', + index_patterns: ['index-2-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }, + }), + ]); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-chumbles', + properties: { + 'service.name': { type: 'keyword' }, + }, + documents: [{ 'service.name': 'service-one' }], + }), + createIndexWithDocuments(esClient, { + index: 'index-2-with-chumbles', + properties: { + 'service.environment': { type: 'keyword' }, + }, + documents: [{ 'service.name': 'service-two' }], + }), + ]); + + const result = await countEntities(supertest, {}, 200); + + expect(result).toEqual({ + total: 1, + types: { + chumble: 1, + }, + errors: [ + 'Mandatory fields [service.name] are not mapped for source [source: invalid-source-with-chumbles, type: chumble] with index patterns [index-2-with-chumbles]', + ], + }); + }); + + it('is resilient to no valid sources', async () => { + await createEntityTypeDefinition(supertest, { + type: { id: 'chumble', display_name: 'chumble' }, + }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'source1-with-chumbles', + type_id: 'chumble', + index_patterns: ['index-1-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'source2-with-chumbles', + type_id: 'chumble', + index_patterns: ['index-2-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }, + }), + ]); + + const result = await countEntities(supertest, {}, 200); + + expect(result).toEqual({ + total: 0, + types: { + chumble: 0, + }, + errors: expect.arrayContaining([ + 'No index found for source [source: source1-with-chumbles, type: chumble] with index patterns [index-1-with-chumbles]', + 'No index found for source [source: source2-with-chumbles, type: chumble] with index patterns [index-2-with-chumbles]', + ]), + }); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/entity_manager/helpers/clear_entity_definitions.ts b/x-pack/test/api_integration/apis/entity_manager/helpers/clear_entity_definitions.ts new file mode 100644 index 0000000000000..5306e2b6d932a --- /dev/null +++ b/x-pack/test/api_integration/apis/entity_manager/helpers/clear_entity_definitions.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { DEFINITIONS_ALIAS } from '@kbn/entityManager-plugin/server/lib/v2/constants'; + +export async function clearEntityDefinitions(esClient: ElasticsearchClient) { + await esClient.deleteByQuery({ + index: DEFINITIONS_ALIAS, + query: { + match_all: {}, + }, + refresh: true, + }); +} diff --git a/x-pack/test/api_integration/apis/entity_manager/helpers/data_generation.ts b/x-pack/test/api_integration/apis/entity_manager/helpers/data_generation.ts new file mode 100644 index 0000000000000..2f784e6a75533 --- /dev/null +++ b/x-pack/test/api_integration/apis/entity_manager/helpers/data_generation.ts @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment'; +import { v4 as uuidv4 } from 'uuid'; +import { Client } from '@elastic/elasticsearch'; +import { MappingProperty, PropertyName } from '@elastic/elasticsearch/lib/api/types'; +import { EntitySourceDefinition } from '@kbn/entityManager-plugin/server/lib/v2/types'; + +export async function createIndexWithDocuments( + client: Client, + options: { + index: string; + properties: Record; + documents: Array>; + } +) { + await client.indices.create({ + index: options.index, + mappings: { + dynamic: false, + properties: options.properties, + }, + }); + + const bulkActions = options.documents.flatMap((doc) => { + return [{ create: { _index: options.index } }, doc]; + }); + + await client.bulk({ + body: bulkActions, + refresh: 'wait_for', + }); + + return () => client.indices.delete({ index: options.index }); +} + +export async function createIndexWithEntities( + client: Client, + options: { + index: string; + source: EntitySourceDefinition; + count: number; + } +) { + const { source, index, count } = options; + const documents = new Array(count).fill(null).map(() => { + return { + ...(source.timestamp_field ? { [source.timestamp_field]: moment().toISOString() } : {}), + ...source.identity_fields.concat(source.metadata_fields).reduce((fields, field) => { + fields[field] = uuidv4(); + return fields; + }, {} as Record), + }; + }); + + return createIndexWithDocuments(client, { + index, + documents, + properties: { + ...(source.timestamp_field ? { [source.timestamp_field]: { type: 'date' } } : {}), + ...source.identity_fields.concat(source.metadata_fields).reduce((fields, field) => { + fields[field] = { type: 'keyword' }; + return fields; + }, {} as Record), + }, + }); +} diff --git a/x-pack/test/api_integration/apis/entity_manager/helpers/request.ts b/x-pack/test/api_integration/apis/entity_manager/helpers/request.ts index c21f33cc8793a..3ef606320cb08 100644 --- a/x-pack/test/api_integration/apis/entity_manager/helpers/request.ts +++ b/x-pack/test/api_integration/apis/entity_manager/helpers/request.ts @@ -8,6 +8,7 @@ import { Agent } from 'supertest'; import { EntityDefinition, EntityDefinitionUpdate } from '@kbn/entities-schema'; import { EntityDefinitionWithState } from '@kbn/entityManager-plugin/server/lib/entities/types'; +import { EntitySourceDefinition } from '@kbn/entityManager-plugin/server/lib/v2/types'; export interface Auth { username: string; @@ -89,3 +90,69 @@ export const upgradeBuiltinDefinitions = async ( .expect(200); return response.body; }; + +export const createEntityTypeDefinition = ( + supertest: Agent, + params: { + type: { + id: string; + display_name: string; + }; + } +) => { + return supertest + .post('/internal/entities/v2/definitions/types') + .set('kbn-xsrf', 'xxx') + .send({ type: params.type }) + .expect(201); +}; + +export const createEntitySourceDefinition = ( + supertest: Agent, + params: { + source: EntitySourceDefinition; + } +) => { + return supertest + .post('/internal/entities/v2/definitions/sources') + .set('kbn-xsrf', 'xxx') + .send({ source: params.source }) + .expect(201); +}; + +export const searchEntities = async ( + supertest: Agent, + params: { + type: string; + start?: string; + end?: string; + metadata_fields?: string[]; + filters?: string[]; + }, + expectedCode?: number +) => { + const response = await supertest + .post('/internal/entities/v2/_search') + .set('kbn-xsrf', 'xxx') + .send(params) + .expect(expectedCode ?? 200); + return response.body; +}; + +export const countEntities = async ( + supertest: Agent, + params: { + types?: string[]; + filters?: string[]; + start?: string; + end?: string; + }, + expectedCode?: number +) => { + const response = await supertest + .post('/internal/entities/v2/_count') + .set('kbn-xsrf', 'xxx') + .send(params) + .expect(expectedCode ?? 200); + return response.body; +}; diff --git a/x-pack/test/api_integration/apis/entity_manager/index.ts b/x-pack/test/api_integration/apis/entity_manager/index.ts index 8f7af35e5c8ad..960eedb25df5f 100644 --- a/x-pack/test/api_integration/apis/entity_manager/index.ts +++ b/x-pack/test/api_integration/apis/entity_manager/index.ts @@ -13,5 +13,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./builtin_definitions')); loadTestFile(require.resolve('./definitions')); + loadTestFile(require.resolve('./count')); + loadTestFile(require.resolve('./search')); }); } diff --git a/x-pack/test/api_integration/apis/entity_manager/search.ts b/x-pack/test/api_integration/apis/entity_manager/search.ts new file mode 100644 index 0000000000000..a20364c7256e4 --- /dev/null +++ b/x-pack/test/api_integration/apis/entity_manager/search.ts @@ -0,0 +1,816 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment from 'moment'; +import expect from 'expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { + createEntitySourceDefinition, + createEntityTypeDefinition, + searchEntities, +} from './helpers/request'; +import { createIndexWithDocuments } from './helpers/data_generation'; +import { clearEntityDefinitions } from './helpers/clear_entity_definitions'; + +export default function ({ getService }: FtrProviderContext) { + const esClient = getService('es'); + const supertest = getService('supertest'); + + describe('_search API', () => { + let cleanup: Function[] = []; + + before(() => clearEntityDefinitions(esClient)); + + afterEach(async () => { + await Promise.all([clearEntityDefinitions(esClient), ...cleanup.map((fn) => fn())]); + cleanup = []; + }); + + it('returns 404 when no matching sources', async () => { + await searchEntities(supertest, { type: 'undefined-type' }, 404); + }); + + it('resolves entities from sources with timestamp', async () => { + const now = moment(); + + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-services', + properties: { + custom_timestamp: { type: 'date' }, + 'service.name': { type: 'keyword' }, + }, + documents: [ + { + custom_timestamp: moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-one', + }, + { + custom_timestamp: moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-two', + }, + { + custom_timestamp: moment(now).subtract(1, 'hour').toISOString(), + 'service.name': 'service-three', + }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'services-with-timestamp', display_name: 'services-with-timestamp' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-services', + type_id: 'services-with-timestamp', + index_patterns: ['index-1-with-services'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: 'custom_timestamp', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'services-with-timestamp', + start: moment(now).subtract(10, 'minute').toISOString(), + end: now.toISOString(), + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'service-one', + 'entity.display_name': 'service-one', + 'entity.type': 'services-with-timestamp', + 'service.name': 'service-one', + }, + { + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'entity.id': 'service-two', + 'entity.display_name': 'service-two', + 'entity.type': 'services-with-timestamp', + 'service.name': 'service-two', + }, + ]); + }); + + it('resolves entities from sources without timestamp', async () => { + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-home-appliances', + properties: { 'appliance.name': { type: 'keyword' } }, + documents: [ + { 'appliance.name': 'rice cooker' }, + { 'appliance.name': 'kettle' }, + { 'appliance.name': 'dishwasher' }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'home-appliances', display_name: 'home-appliances' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'appliances-no-timestamp', + type_id: 'home-appliances', + index_patterns: ['index-1-with-home-appliances'], + identity_fields: ['appliance.name'], + metadata_fields: [], + filters: [], + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'home-appliances', + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.id': 'dishwasher', + 'entity.display_name': 'dishwasher', + 'entity.type': 'home-appliances', + 'appliance.name': 'dishwasher', + }, + { + 'entity.id': 'kettle', + 'entity.display_name': 'kettle', + 'entity.type': 'home-appliances', + 'appliance.name': 'kettle', + }, + { + 'entity.id': 'rice cooker', + 'entity.display_name': 'rice cooker', + 'entity.type': 'home-appliances', + 'appliance.name': 'rice cooker', + }, + ]); + }); + + it('merges entities from different sources', async () => { + const now = moment(); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-hosts', + properties: { + '@timestamp': { type: 'date' }, + 'host.name': { type: 'keyword' }, + 'agent.name': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'host.name': 'host-uno', + 'agent.name': 'agent-a', + }, + { + '@timestamp': moment(now).subtract(3, 'minute').toISOString(), + 'host.name': 'host-uno', + 'agent.name': 'agent-b', + }, + { + '@timestamp': moment(now).subtract(3, 'minute').toISOString(), + 'host.name': 'host-dos', + 'agent.name': 'agent-3', + }, + { + '@timestamp': moment(now).subtract(4, 'minute').toISOString(), + 'host.name': 'host-tres', + }, + ], + }), + + createIndexWithDocuments(esClient, { + index: 'index-2-with-hosts', + properties: { + timestamp: { type: 'date' }, + hostname_field: { type: 'keyword' }, + 'agent.name': { type: 'keyword' }, + }, + documents: [ + { + timestamp: moment(now).subtract(2, 'minute').toISOString(), + hostname_field: 'host-uno', + 'agent.name': 'agent-1', + }, + { + timestamp: moment(now).subtract(2, 'minute').toISOString(), + hostname_field: 'host-dos', + 'agent.name': 'agent-k', + }, + { + timestamp: moment(now).subtract(5, 'minute').toISOString(), + hostname_field: 'host-four', + }, + ], + }), + ]); + + await createEntityTypeDefinition(supertest, { + type: { id: 'hosts-with-agents', display_name: 'hosts-with-agents' }, + }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'hosts-with-agents-1', + type_id: 'hosts-with-agents', + index_patterns: ['index-1-with-hosts'], + identity_fields: ['host.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'hosts-with-agents-2', + type_id: 'hosts-with-agents', + index_patterns: ['index-2-with-hosts'], + identity_fields: ['hostname_field'], + metadata_fields: [], + filters: [], + timestamp_field: 'timestamp', + }, + }), + ]); + + const { entities, errors } = await searchEntities(supertest, { + type: 'hosts-with-agents', + start: moment(now).subtract(10, 'minute').toISOString(), + end: moment(now).toISOString(), + metadata_fields: ['agent.name'], + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.id': 'host-uno', + 'entity.display_name': 'host-uno', + 'entity.type': 'hosts-with-agents', + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'host.name': 'host-uno', + hostname_field: 'host-uno', + 'agent.name': expect.arrayContaining(['agent-a', 'agent-b', 'agent-1']), + }, + { + 'entity.id': 'host-dos', + 'entity.display_name': 'host-dos', + 'entity.type': 'hosts-with-agents', + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'host.name': 'host-dos', + hostname_field: 'host-dos', + 'agent.name': expect.arrayContaining(['agent-3', 'agent-k']), + }, + { + 'entity.id': 'host-tres', + 'entity.display_name': 'host-tres', + 'entity.type': 'hosts-with-agents', + 'entity.last_seen_timestamp': moment(now).subtract(4, 'minute').toISOString(), + 'host.name': 'host-tres', + 'agent.name': null, + }, + { + 'entity.id': 'host-four', + 'entity.display_name': 'host-four', + 'entity.type': 'hosts-with-agents', + 'entity.last_seen_timestamp': moment(now).subtract(5, 'minute').toISOString(), + hostname_field: 'host-four', + 'agent.name': null, + }, + ]); + }); + + it('includes source and additional metadata fields', async () => { + const now = moment(); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-services', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + 'agent.name': { type: 'keyword' }, + 'host.name': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-one', + 'agent.name': 'agent-one', + 'host.name': 'host-one', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-one', + 'agent.name': 'agent-one', + 'host.name': 'host-one', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-one', + 'host.name': 'host-two', + }, + { + '@timestamp': moment(now).subtract(3, 'minute').toISOString(), + 'service.name': 'service-two', + 'host.name': 'host-three', + }, + ], + }), + + createIndexWithDocuments(esClient, { + index: 'index-2-with-services', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + 'agent.name': { type: 'keyword' }, + 'host.name': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-one', + 'agent.name': 'agent-one', + 'host.name': 'host-one', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-one', + 'agent.name': 'agent-ten', + 'host.name': 'host-ten', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-two', + 'agent.name': 'agent-nine', + 'host.name': 'host-nine', + }, + ], + }), + ]); + + await createEntityTypeDefinition(supertest, { + type: { id: 'services-with-hosts', display_name: 'services-with-hosts' }, + }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-services', + type_id: 'services-with-hosts', + index_patterns: ['index-1-with-services'], + identity_fields: ['service.name'], + metadata_fields: ['host.name'], + filters: [], + timestamp_field: '@timestamp', + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'source-2-with-services', + type_id: 'services-with-hosts', + index_patterns: ['index-2-with-services'], + identity_fields: ['service.name'], + metadata_fields: ['host.name'], + filters: [], + timestamp_field: '@timestamp', + }, + }), + ]); + + const { entities, errors } = await searchEntities(supertest, { + type: 'services-with-hosts', + metadata_fields: ['agent.name', 'non.existing.metadata.field'], + start: moment(now).subtract(5, 'minute').toISOString(), + end: moment(now).toISOString(), + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'service-one', + 'entity.display_name': 'service-one', + 'entity.type': 'services-with-hosts', + 'service.name': 'service-one', + 'agent.name': expect.arrayContaining(['agent-one', 'agent-ten']), + 'host.name': expect.arrayContaining(['host-one', 'host-two', 'host-ten']), + }, + { + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'entity.id': 'service-two', + 'entity.display_name': 'service-two', + 'entity.type': 'services-with-hosts', + 'service.name': 'service-two', + 'agent.name': 'agent-nine', + 'host.name': expect.arrayContaining(['host-three', 'host-nine']), + }, + ]); + }); + + it('respects filters', async () => { + const now = moment(); + + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-services', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + 'service.environment': { type: 'keyword' }, + 'service.url': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-one', + 'service.environment': 'prod', + 'service.url': 'http://prod.service-one.com', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-one', + 'service.environment': 'staging', + 'service.url': 'http://staging.service-one.com', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-two', + 'service.environment': 'prod', + 'service.url': 'http://prod.service-two.com', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-two', + 'service.environment': 'staging', + 'service.url': 'http://staging.service-two.com', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-three', + 'service.environment': 'prod', + 'service.url': 'http://prod.service-three.com', + }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'service-one-type', display_name: 'service-one-type' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-services', + type_id: 'service-one-type', + index_patterns: ['index-1-with-services'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: ['service.name: service-one'], + timestamp_field: '@timestamp', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'service-one-type', + start: moment(now).subtract(5, 'minute').toISOString(), + end: moment(now).toISOString(), + filters: ['service.environment: prod'], + metadata_fields: ['service.environment', 'service.url'], + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'service-one', + 'entity.display_name': 'service-one', + 'entity.type': 'service-one-type', + 'service.name': 'service-one', + 'service.environment': 'prod', + 'service.url': 'http://prod.service-one.com', + }, + ]); + }); + + it('resolves entities with multiple identity fields', async () => { + const now = moment(); + + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-cars', + properties: { + '@timestamp': { type: 'date' }, + 'car.brand': { type: 'keyword' }, + 'car.model': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'car.brand': 'Fiat', + 'car.model': 'Multipla', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'car.brand': 'Citroen', + 'car.model': 'ZX break', + }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'most-refined-cars', display_name: 'most-refined-cars' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-cars', + type_id: 'most-refined-cars', + index_patterns: ['index-1-with-cars'], + identity_fields: ['car.brand', 'car.model'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + display_name: 'car.model', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'most-refined-cars', + start: moment(now).subtract(5, 'minute').toISOString(), + end: moment(now).toISOString(), + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'Citroen:ZX break', + 'entity.display_name': 'ZX break', + 'entity.type': 'most-refined-cars', + 'car.brand': 'Citroen', + 'car.model': 'ZX break', + }, + { + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'entity.id': 'Fiat:Multipla', + 'entity.display_name': 'Multipla', + 'entity.type': 'most-refined-cars', + 'car.brand': 'Fiat', + 'car.model': 'Multipla', + }, + ]); + }); + + it('resolves entities with multiple identity fields across sources', async () => { + const now = moment(); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-cars', + properties: { + '@timestamp': { type: 'date' }, + 'car.brand': { type: 'keyword' }, + 'car.model': { type: 'keyword' }, + 'car.color': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'car.brand': 'Fiat', + 'car.model': 'Multipla', + 'car.color': 'cyan', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'car.brand': 'Citroen', + 'car.model': 'ZX break', + 'car.color': 'white', + }, + ], + }), + + createIndexWithDocuments(esClient, { + index: 'index-2-with-cars', + properties: { + '@timestamp': { type: 'date' }, + car_brand: { type: 'keyword' }, + car_model: { type: 'keyword' }, + 'car.color': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + car_brand: 'Fiat', + car_model: 'Multipla', + 'car.color': 'purple', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + car_brand: 'Citroen', + car_model: 'ZX break', + 'car.color': 'orange', + }, + ], + }), + ]); + + await createEntityTypeDefinition(supertest, { + type: { id: 'most-refined-cars', display_name: 'most-refined-cars' }, + }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-cars', + type_id: 'most-refined-cars', + index_patterns: ['index-1-with-cars'], + identity_fields: ['car.brand', 'car.model'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'source-2-with-cars', + type_id: 'most-refined-cars', + index_patterns: ['index-2-with-cars'], + identity_fields: ['car_brand', 'car_model'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }), + ]); + + const { entities, errors } = await searchEntities(supertest, { + type: 'most-refined-cars', + start: moment(now).subtract(5, 'minute').toISOString(), + end: moment(now).toISOString(), + metadata_fields: ['car.color'], + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'Citroen:ZX break', + 'entity.display_name': 'Citroen:ZX break', + 'entity.type': 'most-refined-cars', + 'car.brand': 'Citroen', + 'car.model': 'ZX break', + car_brand: 'Citroen', + car_model: 'ZX break', + 'car.color': expect.arrayContaining(['white', 'orange']), + }, + { + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'entity.id': 'Fiat:Multipla', + 'entity.display_name': 'Fiat:Multipla', + 'entity.type': 'most-refined-cars', + 'car.brand': 'Fiat', + 'car.model': 'Multipla', + car_brand: 'Fiat', + car_model: 'Multipla', + 'car.color': expect.arrayContaining(['cyan', 'purple']), + }, + ]); + }); + + it('casts conflicting mappings to keywords', async () => { + cleanup = await Promise.all([ + await createIndexWithDocuments(esClient, { + index: 'index-service-name-as-keyword', + properties: { 'service.name': { type: 'keyword' } }, + documents: [{ 'service.name': 'service-name-as-keyword' }], + }), + + await createIndexWithDocuments(esClient, { + index: 'index-service-name-as-text', + properties: { 'service.name': { type: 'text' } }, + documents: [{ 'service.name': 'service-name-as-text' }], + }), + + await createIndexWithDocuments(esClient, { + index: 'index-service-name-as-long', + properties: { 'service.name': { type: 'long' } }, + documents: [{ 'service.name': 123 }], + }), + ]); + + await createEntityTypeDefinition(supertest, { + type: { + id: 'type-with-conflicting-mappings', + display_name: 'type-with-conflicting-mappings', + }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'conflicting-mappings', + type_id: 'type-with-conflicting-mappings', + index_patterns: ['index-service-name-as-*'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'type-with-conflicting-mappings', + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.id': '123', + 'entity.display_name': '123', + 'entity.type': 'type-with-conflicting-mappings', + 'service.name': '123', + }, + { + 'entity.id': 'service-name-as-keyword', + 'entity.display_name': 'service-name-as-keyword', + 'entity.type': 'type-with-conflicting-mappings', + 'service.name': 'service-name-as-keyword', + }, + { + 'entity.id': 'service-name-as-text', + 'entity.display_name': 'service-name-as-text', + 'entity.type': 'type-with-conflicting-mappings', + 'service.name': 'service-name-as-text', + }, + ]); + }); + + it('returns error if index does not exist', async () => { + await createEntityTypeDefinition(supertest, { + type: { id: 'type-with-non-existing-index', display_name: 'type-with-non-existing-index' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'non-existing-index', + type_id: 'type-with-non-existing-index', + index_patterns: ['non-existing-index-pattern*', 'non-existing-index'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'type-with-non-existing-index', + }); + expect(errors).toEqual([ + 'No index found for source [source: non-existing-index, type: type-with-non-existing-index] with index patterns [non-existing-index-pattern*, non-existing-index]', + ]); + expect(entities).toEqual([]); + }); + + it('returns error if mandatory fields are not mapped', async () => { + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'unmapped-id-fields', + properties: { 'service.environment': { type: 'keyword' } }, + documents: [ + { + '@timestamp': moment().toISOString(), + 'service.name': 'service-one', + 'service.environment': 'prod', + }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'type-with-unmapped-id-fields', display_name: 'type-with-unmapped-id-fields' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'unmapped-fields', + type_id: 'type-with-unmapped-id-fields', + index_patterns: ['unmapped-id-fields'], + identity_fields: ['service.name', 'service.environment'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'type-with-unmapped-id-fields', + }); + expect(errors).toEqual([ + 'Mandatory fields [service.name, @timestamp] are not mapped for source [source: unmapped-fields, type: type-with-unmapped-id-fields] with index patterns [unmapped-id-fields]', + ]); + expect(entities).toEqual([]); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/management/index_management/inference_endpoints.ts b/x-pack/test/api_integration/apis/management/index_management/inference_endpoints.ts index 586c546414850..f1e1a381fb3ba 100644 --- a/x-pack/test/api_integration/apis/management/index_management/inference_endpoints.ts +++ b/x-pack/test/api_integration/apis/management/index_management/inference_endpoints.ts @@ -17,7 +17,7 @@ export default function ({ getService }: FtrProviderContext) { const ml = getService('ml'); const inferenceId = 'my-elser-model'; const taskType = 'sparse_embedding'; - const service = 'elser'; + const service = 'elasticsearch'; const modelId = '.elser_model_2'; describe('Inference endpoints', function () { diff --git a/x-pack/test/api_integration/apis/streams/classic.ts b/x-pack/test/api_integration/apis/streams/classic.ts new file mode 100644 index 0000000000000..25a7238a757ca --- /dev/null +++ b/x-pack/test/api_integration/apis/streams/classic.ts @@ -0,0 +1,163 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { JsonObject } from '@kbn/utility-types'; +import { + deleteStream, + enableStreams, + fetchDocument, + getStream, + indexDocument, + listStreams, + putStream, +} from './helpers/requests'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { waitForDocumentInIndex } from '../../../alerting_api_integration/observability/helpers/alerting_wait_for_helpers'; +import { cleanUpRootStream } from './helpers/cleanup'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const esClient = getService('es'); + const retryService = getService('retry'); + const logger = getService('log'); + + describe('Classic streams', () => { + after(async () => { + await cleanUpRootStream(esClient); + }); + + before(async () => { + await enableStreams(supertest); + }); + + it('Shows non-wired data streams', async () => { + const doc = { + message: '2023-01-01T00:00:10.000Z error test', + }; + const response = await indexDocument(esClient, 'logs-test-default', doc); + expect(response.result).to.eql('created'); + const streams = await listStreams(supertest); + const classicStream = streams.definitions.find( + (stream: JsonObject) => stream.id === 'logs-test-default' + ); + expect(classicStream).to.eql({ + id: 'logs-test-default', + managed: false, + children: [], + fields: [], + processing: [], + }); + }); + + it('Allows setting processing on classic streams', async () => { + const response = await putStream(supertest, 'logs-test-default', { + managed: false, + children: [], + fields: [], + processing: [ + { + config: { + type: 'grok', + field: 'message', + patterns: [ + '%{TIMESTAMP_ISO8601:inner_timestamp} %{LOGLEVEL:log.level} %{GREEDYDATA:message2}', + ], + }, + }, + ], + }); + expect(response).to.have.property('acknowledged', true); + const streamBody = await getStream(supertest, 'logs-test-default'); + expect(streamBody).to.eql({ + id: 'logs-test-default', + managed: false, + children: [], + inheritedFields: [], + fields: [], + processing: [ + { + config: { + type: 'grok', + field: 'message', + patterns: [ + '%{TIMESTAMP_ISO8601:inner_timestamp} %{LOGLEVEL:log.level} %{GREEDYDATA:message2}', + ], + }, + }, + ], + }); + }); + + it('Executes processing on classic streams', async () => { + const doc = { + '@timestamp': '2024-01-01T00:00:10.000Z', + message: '2023-01-01T00:00:10.000Z error test', + }; + const response = await indexDocument(esClient, 'logs-test-default', doc); + expect(response.result).to.eql('created'); + await waitForDocumentInIndex({ + esClient, + indexName: 'logs-test-default', + retryService, + logger, + docCountTarget: 2, + }); + const result = await fetchDocument(esClient, 'logs-test-default', response._id); + expect(result._source).to.eql({ + '@timestamp': '2024-01-01T00:00:10.000Z', + message: '2023-01-01T00:00:10.000Z error test', + inner_timestamp: '2023-01-01T00:00:10.000Z', + message2: 'test', + log: { + level: 'error', + }, + }); + }); + + it('Allows removing processing on classic streams', async () => { + const response = await putStream(supertest, 'logs-test-default', { + managed: false, + children: [], + fields: [], + processing: [], + }); + expect(response).to.have.property('acknowledged', true); + }); + + it('Executes processing on classic streams after removing processing', async () => { + const doc = { + // default logs pipeline fills in timestamp with current date if not set + message: '2023-01-01T00:00:10.000Z info mylogger this is the message', + }; + const response = await indexDocument(esClient, 'logs-test-default', doc); + expect(response.result).to.eql('created'); + await waitForDocumentInIndex({ + esClient, + indexName: 'logs-test-default', + retryService, + logger, + docCountTarget: 3, + }); + const result = await fetchDocument(esClient, 'logs-test-default', response._id); + expect(result._source).to.eql({ + // accept any date + '@timestamp': (result._source as { [key: string]: unknown })['@timestamp'], + message: '2023-01-01T00:00:10.000Z info mylogger this is the message', + }); + }); + + it('Allows deleting classic streams', async () => { + await deleteStream(supertest, 'logs-test-default'); + const streams = await listStreams(supertest); + const classicStream = streams.definitions.find( + (stream: JsonObject) => stream.id === 'logs-test-default' + ); + expect(classicStream).to.eql(undefined); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/streams/helpers/requests.ts b/x-pack/test/api_integration/apis/streams/helpers/requests.ts index 7d656e4aacf5e..43e7f02b7a750 100644 --- a/x-pack/test/api_integration/apis/streams/helpers/requests.ts +++ b/x-pack/test/api_integration/apis/streams/helpers/requests.ts @@ -42,6 +42,18 @@ export async function putStream(supertest: Agent, name: string, body: JsonObject return response.body; } +export async function getStream(supertest: Agent, name: string) { + const req = supertest.get(`/api/streams/${name}`).set('kbn-xsrf', 'xxx'); + const response = await req.send().expect(200); + return response.body; +} + +export async function listStreams(supertest: Agent) { + const req = supertest.get(`/api/streams`).set('kbn-xsrf', 'xxx'); + const response = await req.send().expect(200); + return response.body; +} + export async function deleteStream(supertest: Agent, id: string) { const req = supertest.delete(`/api/streams/${id}`).set('kbn-xsrf', 'xxx'); const response = await req.send().expect(200); diff --git a/x-pack/test/api_integration/apis/streams/index.ts b/x-pack/test/api_integration/apis/streams/index.ts index 4ef3fce385248..14decb2400196 100644 --- a/x-pack/test/api_integration/apis/streams/index.ts +++ b/x-pack/test/api_integration/apis/streams/index.ts @@ -11,6 +11,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('Streams Endpoints', () => { loadTestFile(require.resolve('./full_flow')); loadTestFile(require.resolve('./enrichment')); + loadTestFile(require.resolve('./classic')); loadTestFile(require.resolve('./flush_config')); }); } diff --git a/x-pack/test/api_integration/apis/upgrade_assistant/es_deprecation_logs.ts b/x-pack/test/api_integration/apis/upgrade_assistant/es_deprecation_logs.ts index 875164e8f8945..68ab3e78c2793 100644 --- a/x-pack/test/api_integration/apis/upgrade_assistant/es_deprecation_logs.ts +++ b/x-pack/test/api_integration/apis/upgrade_assistant/es_deprecation_logs.ts @@ -21,7 +21,8 @@ export default function ({ getService }: FtrProviderContext) { const { createDeprecationLog, deleteDeprecationLogs } = initHelpers(getService); - describe('Elasticsearch deprecation logs', function () { + // Skipped to enable ES promotion + describe.skip('Elasticsearch deprecation logs', function () { describe('GET /api/upgrade_assistant/deprecation_logging', () => { describe('/count', () => { it('should filter out the deprecation from Elastic products', async () => { diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/index.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/index.ts new file mode 100644 index 0000000000000..8afdd96ad6455 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) { + describe('ElasticSearch query rule', () => { + loadTestFile(require.resolve('./query_dsl')); + loadTestFile(require.resolve('./query_dsl_with_group_by')); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/query_dsl.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/query_dsl.ts new file mode 100644 index 0000000000000..58d082497faef --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/query_dsl.ts @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { RoleCredentials, InternalRequestHeader } from '@kbn/ftr-common-functional-services'; +import { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + const esClient = getService('es'); + const samlAuth = getService('samlAuth'); + const supertestWithoutAuth = getService('supertestWithoutAuth'); + const esDeleteAllIndices = getService('esDeleteAllIndices'); + const alertingApi = getService('alertingApi'); + const config = getService('config'); + const isServerless = config.get('serverless'); + const expectedConsumer = isServerless ? 'observability' : 'logs'; + + let adminRoleAuthc: RoleCredentials; + let internalReqHeader: InternalRequestHeader; + + describe('Query DSL', () => { + const RULE_TYPE_ID = '.es-query'; + const ALERT_ACTION_INDEX = 'alert-action-es-query'; + const RULE_ALERT_INDEX = '.alerts-stack.alerts-default'; + let actionId: string; + let ruleId: string; + + before(async () => { + adminRoleAuthc = await samlAuth.createM2mApiKeyWithRoleScope('admin'); + internalReqHeader = samlAuth.getInternalRequestHeader(); + }); + + after(async () => { + await supertestWithoutAuth + .delete(`/api/alerting/rule/${ruleId}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(internalReqHeader); + await supertestWithoutAuth + .delete(`/api/actions/connector/${actionId}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(internalReqHeader); + await esClient.deleteByQuery({ + index: RULE_ALERT_INDEX, + query: { term: { 'kibana.alert.rule.uuid': ruleId } }, + conflicts: 'proceed', + }); + await esClient.deleteByQuery({ + index: '.kibana-event-log-*', + query: { term: { 'rule.id': ruleId } }, + conflicts: 'proceed', + }); + await esDeleteAllIndices([ALERT_ACTION_INDEX]); + await samlAuth.invalidateM2mApiKeyWithRoleScope(adminRoleAuthc); + }); + + describe('Rule creation', () => { + it('creates rule successfully', async () => { + actionId = await alertingApi.createIndexConnector({ + roleAuthc: adminRoleAuthc, + name: 'Index Connector: Alerting API test', + indexName: ALERT_ACTION_INDEX, + }); + + const createdRule = await alertingApi.helpers.createEsQueryRule({ + roleAuthc: adminRoleAuthc, + consumer: expectedConsumer, + name: 'always fire', + ruleTypeId: RULE_TYPE_ID, + params: { + size: 100, + thresholdComparator: '>', + threshold: [-1], + index: ['alert-test-data'], + timeField: 'date', + esQuery: `{\n \"query\":{\n \"match_all\" : {}\n }\n}`, + timeWindowSize: 20, + timeWindowUnit: 's', + }, + actions: [ + { + group: 'query matched', + id: actionId, + params: { + documents: [ + { + ruleId: '{{rule.id}}', + ruleName: '{{rule.name}}', + ruleParams: '{{rule.params}}', + spaceId: '{{rule.spaceId}}', + tags: '{{rule.tags}}', + alertId: '{{alert.id}}', + alertActionGroup: '{{alert.actionGroup}}', + instanceContextValue: '{{context.instanceContextValue}}', + instanceStateValue: '{{state.instanceStateValue}}', + }, + ], + }, + frequency: { + notify_when: 'onActiveAlert', + throttle: null, + summary: false, + }, + }, + ], + }); + ruleId = createdRule.id; + expect(ruleId).not.to.be(undefined); + }); + + it('should be active', async () => { + const executionStatus = await alertingApi.waitForRuleStatus({ + roleAuthc: adminRoleAuthc, + ruleId, + expectedStatus: 'active', + }); + expect(executionStatus).to.be('active'); + }); + + it('should find the created rule with correct information about the consumer', async () => { + const match = await alertingApi.findInRules(adminRoleAuthc, ruleId); + expect(match).not.to.be(undefined); + expect(match.consumer).to.be(expectedConsumer); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/query_dsl_with_group_by.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/query_dsl_with_group_by.ts new file mode 100644 index 0000000000000..db91ba5780dad --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/query_dsl_with_group_by.ts @@ -0,0 +1,207 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { cleanup, generate, Dataset, PartialConfig } from '@kbn/data-forge'; +import { RoleCredentials, InternalRequestHeader } from '@kbn/ftr-common-functional-services'; +import { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; +import { ActionDocument } from './types'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + const esClient = getService('es'); + const logger = getService('log'); + const samlAuth = getService('samlAuth'); + const supertestWithoutAuth = getService('supertestWithoutAuth'); + const esDeleteAllIndices = getService('esDeleteAllIndices'); + const alertingApi = getService('alertingApi'); + const config = getService('config'); + const isServerless = config.get('serverless'); + const expectedConsumer = isServerless ? 'observability' : 'logs'; + + let adminRoleAuthc: RoleCredentials; + let internalReqHeader: InternalRequestHeader; + + describe('Query DQL with group by field', () => { + const RULE_TYPE_ID = '.es-query'; + const ALERT_ACTION_INDEX = 'alert-action-es-query'; + const RULE_ALERT_INDEX = '.alerts-stack.alerts-default'; + const INDEX = 'kbn-data-forge-fake_hosts.fake_hosts-*'; + let dataForgeConfig: PartialConfig; + let dataForgeIndices: string[]; + let actionId: string; + let ruleId: string; + + before(async () => { + adminRoleAuthc = await samlAuth.createM2mApiKeyWithRoleScope('admin'); + internalReqHeader = samlAuth.getInternalRequestHeader(); + dataForgeConfig = { + schedule: [ + { + template: 'good', + start: 'now-10m', + end: 'now+5m', + metrics: [ + { name: 'system.cpu.user.pct', method: 'linear', start: 2.5, end: 2.5 }, + { name: 'system.cpu.total.pct', method: 'linear', start: 0.5, end: 0.5 }, + { name: 'system.cpu.total.norm.pct', method: 'linear', start: 0.8, end: 0.8 }, + ], + }, + ], + indexing: { + dataset: 'fake_hosts' as Dataset, + eventsPerCycle: 1, + interval: 60000, + alignEventsToInterval: true, + }, + }; + dataForgeIndices = await generate({ client: esClient, config: dataForgeConfig, logger }); + await alertingApi.waitForDocumentInIndex({ + indexName: dataForgeIndices.join(','), + docCountTarget: 45, + }); + }); + + after(async () => { + await supertestWithoutAuth + .delete(`/api/alerting/rule/${ruleId}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(internalReqHeader); + await supertestWithoutAuth + .delete(`/api/actions/connector/${actionId}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(internalReqHeader); + await esClient.deleteByQuery({ + index: RULE_ALERT_INDEX, + query: { term: { 'kibana.alert.rule.uuid': ruleId } }, + conflicts: 'proceed', + }); + await esClient.deleteByQuery({ + index: '.kibana-event-log-*', + query: { term: { 'rule.id': ruleId } }, + conflicts: 'proceed', + }); + await esDeleteAllIndices([ALERT_ACTION_INDEX, ...dataForgeIndices]); + await cleanup({ client: esClient, config: dataForgeConfig, logger }); + await samlAuth.invalidateM2mApiKeyWithRoleScope(adminRoleAuthc); + }); + + describe('Rule creation', () => { + it('creates rule successfully', async () => { + actionId = await alertingApi.createIndexConnector({ + roleAuthc: adminRoleAuthc, + name: 'Index Connector: Alerting API test', + indexName: ALERT_ACTION_INDEX, + }); + + const createdRule = await alertingApi.helpers.createEsQueryRule({ + roleAuthc: adminRoleAuthc, + consumer: expectedConsumer, + name: 'always fire', + ruleTypeId: RULE_TYPE_ID, + params: { + size: 100, + thresholdComparator: '>', + threshold: [1], + index: [INDEX], + timeField: '@timestamp', + esQuery: `{\n \"query\":{\n \"match_all\" : {}\n }\n}`, + timeWindowSize: 1, + timeWindowUnit: 'm', + groupBy: 'top', + termField: 'host.name', + termSize: 1, + }, + actions: [ + { + group: 'query matched', + id: actionId, + params: { + documents: [ + { + ruleId: '{{rule.id}}', + ruleName: '{{rule.name}}', + ruleParams: '{{rule.params}}', + spaceId: '{{rule.spaceId}}', + tags: '{{rule.tags}}', + alertId: '{{alert.id}}', + alertActionGroup: '{{alert.actionGroup}}', + instanceContextValue: '{{context.instanceContextValue}}', + instanceStateValue: '{{state.instanceStateValue}}', + }, + ], + }, + frequency: { + notify_when: 'onActiveAlert', + throttle: null, + summary: false, + }, + }, + ], + }); + ruleId = createdRule.id; + expect(ruleId).not.to.be(undefined); + }); + + it('should be active', async () => { + const executionStatus = await alertingApi.waitForRuleStatus({ + roleAuthc: adminRoleAuthc, + ruleId, + expectedStatus: 'active', + }); + expect(executionStatus).to.be('active'); + }); + + it('should find the created rule with correct information about the consumer', async () => { + const match = await alertingApi.findInRules(adminRoleAuthc, ruleId); + expect(match).not.to.be(undefined); + expect(match.consumer).to.be(expectedConsumer); + }); + + it('should set correct information in the alert document', async () => { + const resp = await alertingApi.waitForAlertInIndex({ + indexName: RULE_ALERT_INDEX, + ruleId, + }); + + expect(resp.hits.hits[0]._source).property('host.name', 'host-0'); + expect(resp.hits.hits[0]._source).property('kibana.alert.rule.consumer', expectedConsumer); + expect(resp.hits.hits[0]._source).property( + 'kibana.alert.reason', + 'Document count is 3 in the last 1m for host-0 in kbn-data-forge-fake_hosts.fake_hosts-* index. Alert when greater than 1.' + ); + expect(resp.hits.hits[0]._source).property( + 'kibana.alert.evaluation.conditions', + 'Number of matching documents for group "host-0" is greater than 1' + ); + expect(resp.hits.hits[0]._source).property('kibana.alert.evaluation.value', '3'); + expect(resp.hits.hits[0]._source).property('kibana.alert.evaluation.threshold', 1); + expect(resp.hits.hits[0]._source).property('kibana.alert.rule.name', 'always fire'); + expect(resp.hits.hits[0]._source).property('event.action', 'open'); + expect(resp.hits.hits[0]._source).property('kibana.alert.action_group', 'query matched'); + expect(resp.hits.hits[0]._source).property('kibana.alert.status', 'active'); + expect(resp.hits.hits[0]._source).property('kibana.alert.workflow_status', 'open'); + expect(resp.hits.hits[0]._source).property( + 'kibana.alert.rule.category', + 'Elasticsearch query' + ); + }); + + it('should set correct action variables', async () => { + const resp = await alertingApi.waitForDocumentInIndex({ + indexName: ALERT_ACTION_INDEX, + }); + + expect(resp.hits.hits[0]._source?.ruleId).eql(ruleId); + expect(resp.hits.hits[0]._source?.ruleName).eql('always fire'); + expect(resp.hits.hits[0]._source?.ruleParams).eql( + '{"size":100,"thresholdComparator":">","threshold":[1],"index":["kbn-data-forge-fake_hosts.fake_hosts-*"],"timeField":"@timestamp","esQuery":"{\\n \\"query\\":{\\n \\"match_all\\" : {}\\n }\\n}","timeWindowSize":1,"timeWindowUnit":"m","groupBy":"top","termField":"host.name","termSize":1,"excludeHitsFromPreviousRun":true,"aggType":"count","searchType":"esQuery"}' + ); + expect(resp.hits.hits[0]._source?.alertActionGroup).eql('query matched'); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/types.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/types.ts new file mode 100644 index 0000000000000..939ff17b775d7 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query/types.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export interface ActionDocument { + ruleId: string; + ruleName: string; + ruleParams: string; + spaceId: string; + tags: string; + alertId: string; + alertActionGroup: string; +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query_rule.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query_rule.ts deleted file mode 100644 index 1484158a9a991..0000000000000 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/es_query_rule.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { RoleCredentials, InternalRequestHeader } from '@kbn/ftr-common-functional-services'; -import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; - -export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { - const esClient = getService('es'); - const samlAuth = getService('samlAuth'); - const supertestWithoutAuth = getService('supertestWithoutAuth'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); - const alertingApi = getService('alertingApi'); - const config = getService('config'); - const isServerless = config.get('serverless'); - const expectedConsumer = isServerless ? 'observability' : 'logs'; - - let adminRoleAuthc: RoleCredentials; - let internalReqHeader: InternalRequestHeader; - - describe('ElasticSearch query rule', () => { - const RULE_TYPE_ID = '.es-query'; - const ALERT_ACTION_INDEX = 'alert-action-es-query'; - const RULE_ALERT_INDEX = '.alerts-stack.alerts-default'; - let actionId: string; - let ruleId: string; - - before(async () => { - adminRoleAuthc = await samlAuth.createM2mApiKeyWithRoleScope('admin'); - internalReqHeader = samlAuth.getInternalRequestHeader(); - }); - - after(async () => { - await supertestWithoutAuth - .delete(`/api/alerting/rule/${ruleId}`) - .set(adminRoleAuthc.apiKeyHeader) - .set(internalReqHeader); - await supertestWithoutAuth - .delete(`/api/actions/connector/${actionId}`) - .set(adminRoleAuthc.apiKeyHeader) - .set(internalReqHeader); - await esClient.deleteByQuery({ - index: RULE_ALERT_INDEX, - query: { term: { 'kibana.alert.rule.uuid': ruleId } }, - conflicts: 'proceed', - }); - await esClient.deleteByQuery({ - index: '.kibana-event-log-*', - query: { term: { 'rule.id': ruleId } }, - conflicts: 'proceed', - }); - await esDeleteAllIndices([ALERT_ACTION_INDEX]); - await samlAuth.invalidateM2mApiKeyWithRoleScope(adminRoleAuthc); - }); - - describe('Rule creation', () => { - it('creates rule successfully', async () => { - actionId = await alertingApi.createIndexConnector({ - roleAuthc: adminRoleAuthc, - name: 'Index Connector: Alerting API test', - indexName: ALERT_ACTION_INDEX, - }); - - const createdRule = await alertingApi.helpers.createEsQueryRule({ - roleAuthc: adminRoleAuthc, - consumer: expectedConsumer, - name: 'always fire', - ruleTypeId: RULE_TYPE_ID, - params: { - size: 100, - thresholdComparator: '>', - threshold: [-1], - index: ['alert-test-data'], - timeField: 'date', - esQuery: `{\n \"query\":{\n \"match_all\" : {}\n }\n}`, - timeWindowSize: 20, - timeWindowUnit: 's', - }, - actions: [ - { - group: 'query matched', - id: actionId, - params: { - documents: [ - { - ruleId: '{{rule.id}}', - ruleName: '{{rule.name}}', - ruleParams: '{{rule.params}}', - spaceId: '{{rule.spaceId}}', - tags: '{{rule.tags}}', - alertId: '{{alert.id}}', - alertActionGroup: '{{alert.actionGroup}}', - instanceContextValue: '{{context.instanceContextValue}}', - instanceStateValue: '{{state.instanceStateValue}}', - }, - ], - }, - frequency: { - notify_when: 'onActiveAlert', - throttle: null, - summary: false, - }, - }, - ], - }); - ruleId = createdRule.id; - expect(ruleId).not.to.be(undefined); - }); - - it('should be active', async () => { - const executionStatus = await alertingApi.waitForRuleStatus({ - roleAuthc: adminRoleAuthc, - ruleId, - expectedStatus: 'active', - }); - expect(executionStatus).to.be('active'); - }); - - it('should find the created rule with correct information about the consumer', async () => { - const match = await alertingApi.findInRules(adminRoleAuthc, ruleId); - expect(match).not.to.be(undefined); - expect(match.consumer).to.be(expectedConsumer); - }); - }); - }); -} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/index.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/index.ts index e425aa1010a6d..d8061694e7be4 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/alerting/index.ts @@ -10,7 +10,7 @@ import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_cont export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) { describe('Observability Alerting', () => { loadTestFile(require.resolve('./burn_rate_rule')); - loadTestFile(require.resolve('./es_query_rule')); + loadTestFile(require.resolve('./es_query')); loadTestFile(require.resolve('./custom_threshold')); }); } diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor.ts new file mode 100644 index 0000000000000..1e985975db1d4 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor.ts @@ -0,0 +1,304 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import expect from '@kbn/expect'; +import { RoleCredentials, SamlAuthProviderType } from '@kbn/ftr-common-functional-services'; +import epct from 'expect'; +import moment from 'moment/moment'; +import { v4 as uuidv4 } from 'uuid'; +import { omit, omitBy } from 'lodash'; +import { + ConfigKey, + MonitorTypeEnum, + HTTPFields, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { formatKibanaNamespace } from '@kbn/synthetics-plugin/common/formatters'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { DEFAULT_FIELDS } from '@kbn/synthetics-plugin/common/constants/monitor_defaults'; +import { + removeMonitorEmptyValues, + transformPublicKeys, +} from '@kbn/synthetics-plugin/server/routes/monitor_cruds/formatters/saved_object_to_monitor'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export const addMonitorAPIHelper = async ( + supertestAPI: any, + monitor: any, + statusCode = 200, + roleAuthc: RoleCredentials, + samlAuth: SamlAuthProviderType +) => { + const result = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(roleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(statusCode); + + if (statusCode === 200) { + const { created_at: createdAt, updated_at: updatedAt, id, config_id: configId } = result.body; + expect(id).not.empty(); + expect(configId).not.empty(); + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + return { + rawBody: result.body, + body: { + ...omit(result.body, ['created_at', 'updated_at', 'id', 'config_id', 'form_monitor_type']), + }, + }; + } + return result.body; +}; + +export const keyToOmitList = [ + 'created_at', + 'updated_at', + 'id', + 'config_id', + 'form_monitor_type', + 'spaceId', + 'private_locations', +]; + +export const omitMonitorKeys = (monitor: any) => { + return omitBy(omit(transformPublicKeys(monitor), keyToOmitList), removeMonitorEmptyValues); +}; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('AddNewMonitorsUI', function () { + const supertestAPI = getService('supertestWithoutAuth'); + const samlAuth = getService('samlAuth'); + const kibanaServer = getService('kibanaServer'); + const monitorTestService = new SyntheticsMonitorTestService(getService); + const privateLocationsService = new PrivateLocationTestService(getService); + + let privateLocation: PrivateLocation; + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + let editorRoleAuthc: RoleCredentials; + + const addMonitorAPI = async (monitor: any, statusCode = 200) => { + return addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorRoleAuthc, samlAuth); + }; + + const deleteMonitor = async ( + monitorId?: string | string[], + statusCode = 200, + spaceId?: string + ) => { + return monitorTestService.deleteMonitor(editorRoleAuthc, monitorId, statusCode, spaceId); + }; + + before(async () => { + _httpMonitorJson = getFixtureJson('http_monitor'); + await kibanaServer.savedObjects.cleanStandardList(); + editorRoleAuthc = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(async () => { + privateLocation = await privateLocationsService.addTestPrivateLocation(); + httpMonitorJson = { + ..._httpMonitorJson, + locations: [privateLocation], + }; + }); + + it('returns the newly added monitor', async () => { + const newMonitor = httpMonitorJson; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql(omitMonitorKeys(newMonitor)); + }); + + it('returns bad request if payload is invalid for HTTP monitor', async () => { + // Delete a required property to make payload invalid + const newMonitor = { ...httpMonitorJson, 'check.request.headers': null }; + await addMonitorAPI(newMonitor, 400); + }); + + it('returns bad request if monitor type is invalid', async () => { + const newMonitor = { ...httpMonitorJson, type: 'invalid-data-steam' }; + + const apiResponse = await addMonitorAPI(newMonitor, 400); + + expect(apiResponse.message).eql('Invalid value "invalid-data-steam" supplied to "type"'); + }); + + it('can create valid monitors without all defaults', async () => { + // Delete a required property to make payload invalid + const newMonitor = { + name: 'Sample name', + type: 'http', + urls: 'https://elastic.co', + locations: [privateLocation], + }; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql( + omitMonitorKeys({ + ...DEFAULT_FIELDS[MonitorTypeEnum.HTTP], + ...newMonitor, + }) + ); + }); + + it('can disable retries', async () => { + const maxAttempts = 1; + const newMonitor = { + max_attempts: maxAttempts, + urls: 'https://elastic.co', + name: `Sample name ${uuidv4()}`, + type: 'http', + locations: [privateLocation], + }; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + epct(apiResponse).toEqual(epct.objectContaining({ retest_on_failure: false })); + }); + + it('can enable retries with max attempts', async () => { + const maxAttempts = 2; + const newMonitor = { + max_attempts: maxAttempts, + urls: 'https://elastic.co', + name: `Sample name ${uuidv4()}`, + type: 'http', + locations: [privateLocation], + }; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + epct(apiResponse).toEqual(epct.objectContaining({ retest_on_failure: true })); + }); + + it('can enable retries', async () => { + const newMonitor = { + retest_on_failure: false, + urls: 'https://elastic.co', + name: `Sample name ${uuidv4()}`, + type: 'http', + locations: [privateLocation], + }; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + epct(apiResponse).toEqual(epct.objectContaining({ retest_on_failure: false })); + }); + + it('cannot create a invalid monitor without a monitor type', async () => { + // Delete a required property to make payload invalid + const newMonitor = { + name: 'Sample name', + url: 'https://elastic.co', + locations: [privateLocation], + }; + await addMonitorAPI(newMonitor, 400); + }); + + it('omits unknown keys', async () => { + // Delete a required property to make payload invalid + const newMonitor = { + name: 'Sample name', + url: 'https://elastic.co', + unknownKey: 'unknownValue', + type: 'http', + locations: [privateLocation], + }; + const apiResponse = await addMonitorAPI(newMonitor, 400); + expect(apiResponse.message).not.to.have.keys( + 'Invalid monitor key(s) for http type: unknownKey","attributes":{"details":"Invalid monitor key(s) for http type: unknownKey' + ); + }); + + it('sets namespace to Kibana space when not set to a custom namespace', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const EXPECTED_NAMESPACE = formatKibanaNamespace(SPACE_ID); + privateLocation = await privateLocationsService.addTestPrivateLocation(SPACE_ID); + const monitor = { + ...httpMonitorJson, + [ConfigKey.NAMESPACE]: 'default', + locations: [privateLocation], + }; + let monitorId = ''; + + try { + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + const apiResponse = await supertestAPI + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + monitorId = apiResponse.body.id; + expect(apiResponse.body[ConfigKey.NAMESPACE]).eql(EXPECTED_NAMESPACE); + } finally { + await deleteMonitor(monitorId, 200, SPACE_ID); + } + }); + + it('preserves the passed namespace when preserve_namespace is passed', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + privateLocation = await privateLocationsService.addTestPrivateLocation(SPACE_ID); + const monitor = { + ...httpMonitorJson, + [ConfigKey.NAMESPACE]: 'default', + locations: [privateLocation], + }; + let monitorId = ''; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + try { + const apiResponse = await supertestAPI + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ preserve_namespace: true }) + .set(editorRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + monitorId = apiResponse.body.id; + expect(apiResponse.body[ConfigKey.NAMESPACE]).eql('default'); + } finally { + await deleteMonitor(monitorId, 200, SPACE_ID); + } + }); + + it('sets namespace to custom namespace when set', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + privateLocation = await privateLocationsService.addTestPrivateLocation(SPACE_ID); + const monitor = { + ...httpMonitorJson, + locations: [privateLocation], + }; + let monitorId = ''; + + try { + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + const apiResponse = await supertestAPI + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + monitorId = apiResponse.body.id; + expect(apiResponse.body[ConfigKey.NAMESPACE]).eql(monitor[ConfigKey.NAMESPACE]); + } finally { + await deleteMonitor(monitorId, 200, SPACE_ID); + } + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_private_location.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_private_location.ts new file mode 100644 index 0000000000000..a940a5aec756b --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_private_location.ts @@ -0,0 +1,562 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import moment from 'moment'; +import semver from 'semver'; +import { v4 as uuidv4 } from 'uuid'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + HTTPFields, + PrivateLocation, + ServiceLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { omit } from 'lodash'; +import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { comparePolicies, getTestSyntheticsPolicy } from './sample_data/test_policy'; +import { + INSTALLED_VERSION, + PrivateLocationTestService, +} from '../../../services/synthetics_private_location'; +import { addMonitorAPIHelper, keyToOmitList, omitMonitorKeys } from './create_monitor'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('PrivateLocationAddMonitor', function () { + // see details: https://github.com/elastic/kibana/issues/204204 + this.tags(['failsOnMKI']); + const kibanaServer = getService('kibanaServer'); + const supertestAPI = getService('supertestWithoutAuth'); + const supertestWithAuth = getService('supertest'); + const samlAuth = getService('samlAuth'); + + let testFleetPolicyID: string; + let editorUser: RoleCredentials; + let privateLocations: PrivateLocation[] = []; + const testPolicyName = 'Fleet test server policy' + Date.now(); + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + const monitorTestService = new SyntheticsMonitorTestService(getService); + const testPrivateLocations = new PrivateLocationTestService(getService); + + const addMonitorAPI = async (monitor: any, statusCode = 200) => { + return addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorUser, samlAuth); + }; + + const deleteMonitor = async ( + monitorId?: string | string[], + statusCode = 200, + spaceId?: string + ) => { + return monitorTestService.deleteMonitor(editorUser, monitorId, statusCode, spaceId); + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await testPrivateLocations.installSyntheticsPackage(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + + _httpMonitorJson = getFixtureJson('http_monitor'); + }); + + beforeEach(() => { + httpMonitorJson = { + ..._httpMonitorJson, + locations: privateLocations ? [privateLocations[0]] : [], + }; + }); + + it('adds a test fleet policy', async () => { + const apiResponse = await testPrivateLocations.addFleetPolicy(testPolicyName); + testFleetPolicyID = apiResponse.body.item.id; + }); + + it('add a test private location', async () => { + privateLocations = await testPrivateLocations.setTestLocations([testFleetPolicyID]); + + const apiResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.SERVICE_LOCATIONS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const testResponse: Array = [ + { + id: testFleetPolicyID, + isServiceManaged: false, + isInvalid: false, + label: privateLocations[0].label, + geo: { + lat: 0, + lon: 0, + }, + agentPolicyId: testFleetPolicyID, + }, + ]; + + rawExpect(apiResponse.body.locations).toEqual(rawExpect.arrayContaining(testResponse)); + }); + + it('does not add a monitor if there is an error in creating integration', async () => { + const newMonitor = { ...httpMonitorJson }; + const invalidName = 'invalid name'; + + const location = { + id: 'invalidLocation', + label: privateLocations[0].label, + isServiceManaged: false, + geo: { + lat: 0, + lon: 0, + }, + }; + + newMonitor.name = invalidName; + + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ ...newMonitor, locations: [location] }) + .expect(400); + + expect(apiResponse.body).eql({ + statusCode: 400, + error: 'Bad Request', + message: `Invalid locations specified. Private Location(s) 'invalidLocation' not found. Available private locations are '${privateLocations[0].label}'`, + }); + + const apiGetResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + `?query="${invalidName}"`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + // verify that no monitor was added + expect(apiGetResponse.body.monitors?.length).eql(0); + }); + + let newMonitorId: string; + + it('adds a monitor in private location', async () => { + const newMonitor = { + ...httpMonitorJson, + locations: [privateLocations[0]], + }; + + const { body, rawBody } = await addMonitorAPI(newMonitor); + + expect(body).eql(omitMonitorKeys(newMonitor)); + newMonitorId = rawBody.id; + }); + + it('added an integration for previously added monitor', async () => { + const apiResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy?.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newMonitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + }) + ); + }); + + let testFleetPolicyID2: string; + let newLocations: PrivateLocation[] = []; + + it('edits a monitor with additional private location', async () => { + const resPolicy = await testPrivateLocations.addFleetPolicy(testPolicyName + 1); + testFleetPolicyID2 = resPolicy.body.item.id; + + newLocations = await testPrivateLocations.setTestLocations([ + testFleetPolicyID, + testFleetPolicyID2, + ]); + + httpMonitorJson.locations.push({ + id: testFleetPolicyID2, + agentPolicyId: testFleetPolicyID2, + label: newLocations[1].label, + isServiceManaged: false, + geo: { + lat: 0, + lon: 0, + }, + }); + + const apiResponse = await supertestAPI + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + newMonitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(httpMonitorJson); + + const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(omit(apiResponse.body, keyToOmitList)).eql( + omitMonitorKeys({ + ...omit(httpMonitorJson, ['urls']), + url: httpMonitorJson.urls, + updated_at: updatedAt, + revision: 2, + }) + ); + }); + + it('added an integration for second location in edit monitor', async () => { + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + let packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newMonitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + }) + ); + + packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID2 + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID2); + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newMonitorId, + location: { + name: newLocations[1].label, + id: testFleetPolicyID2, + }, + }) + ); + }); + + it('deletes integration for a removed location from monitor', async () => { + httpMonitorJson.locations = httpMonitorJson.locations.filter( + ({ id }) => id !== testFleetPolicyID2 + ); + + await supertestAPI + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + newMonitorId + '?internal=true') + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(httpMonitorJson) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + let packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newMonitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + }) + ); + + packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID2 + '-default' + ); + + expect(packagePolicy).eql(undefined); + }); + + it('deletes integration for a deleted monitor', async () => { + await deleteMonitor(newMonitorId); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy).eql(undefined); + }); + + // it('handles spaces', async () => { + // const username = 'admin'; + // const password = `${username}-password`; + // const roleName = 'uptime-role'; + // const SPACE_ID = `test-space-${uuidv4()}`; + // const SPACE_NAME = `test-space-name ${uuidv4()}`; + // let monitorId = ''; + // const monitor = { + // ...httpMonitorJson, + // name: `Test monitor ${uuidv4()}`, + // [ConfigKey.NAMESPACE]: 'default', + // locations: [ + // { + // id: testFleetPolicyID, + // agentPolicyId: testFleetPolicyID, + // label: 'Test private location 0', + // isServiceManaged: false, + // geo: { + // lat: 0, + // lon: 0, + // }, + // }, + // ], + // }; + + // try { + // await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + // await security.role.create(roleName, { + // kibana: [ + // { + // feature: { + // uptime: ['all'], + // actions: ['all'], + // }, + // spaces: ['*'], + // }, + // ], + // }); + // await security.user.create(username, { + // password, + // roles: [roleName], + // full_name: 'a kibana user', + // }); + // const apiResponse = await supertestWithoutAuth + // .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + // .auth(username, password) + // .set('kbn-xsrf', 'true') + // .send(monitor) + // .expect(200); + + // const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + // expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + // expect(omit(apiResponse.body, keyToOmitList)).eql( + // omitMonitorKeys({ + // ...monitor, + // [ConfigKey.NAMESPACE]: formatKibanaNamespace(SPACE_ID), + // url: apiResponse.body.url, + // }) + // ); + // monitorId = apiResponse.body.id; + + // const policyResponse = await supertestWithAuth.get( + // '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + // ); + + // const packagePolicy = policyResponse.body.items.find( + // (pkgPolicy: PackagePolicy) => + // pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-${SPACE_ID}` + // ); + + // expect(packagePolicy.policy_id).eql(testFleetPolicyID); + // expect(packagePolicy.name).eql(`${monitor.name}-Test private location 0-${SPACE_ID}`); + // comparePolicies( + // packagePolicy, + // getTestSyntheticsPolicy({ + // name: monitor.name, + // id: monitorId, + // location: { id: testFleetPolicyID }, + // namespace: formatKibanaNamespace(SPACE_ID), + // spaceId: SPACE_ID, + // }) + // ); + // await supertestWithoutAuth + // .delete(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + // .auth(username, password) + // .set('kbn-xsrf', 'true') + // .send({ ids: [monitorId] }) + // .expect(200); + // } finally { + // await security.user.delete(username); + // await security.role.delete(roleName); + // } + // }); + + it('handles is_tls_enabled true', async () => { + let monitorId = ''; + + const monitor = { + ...httpMonitorJson, + locations: [ + { + id: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + }, + ], + [ConfigKey.METADATA]: { + is_tls_enabled: true, + }, + }; + + try { + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + monitorId = apiResponse.body.id; + + const policyResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = policyResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: monitor.name, + id: monitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + isTLSEnabled: true, + }) + ); + } finally { + await deleteMonitor(monitorId); + } + }); + + it('handles is_tls_enabled false', async () => { + let monitorId = ''; + + const monitor = { + ...httpMonitorJson, + locations: [ + { + id: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + }, + ], + [ConfigKey.METADATA]: { + is_tls_enabled: false, + }, + }; + + try { + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + monitorId = apiResponse.body.id; + + const policyResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = policyResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: monitor.name, + id: monitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + }) + ); + } finally { + await deleteMonitor(monitorId); + } + }); + + it('handles auto upgrading policies', async () => { + let monitorId = ''; + + const monitor = { + ...httpMonitorJson, + name: `Test monitor ${uuidv4()}`, + [ConfigKey.NAMESPACE]: 'default', + locations: [ + { + id: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + }, + ], + }; + + try { + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + monitorId = apiResponse.body.id; + + const policyResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = policyResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + + expect(packagePolicy.package.version).eql(INSTALLED_VERSION); + + await supertestWithAuth.post('/api/fleet/setup').set('kbn-xsrf', 'true').send().expect(200); + const policyResponseAfterUpgrade = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + const packagePolicyAfterUpgrade = policyResponseAfterUpgrade.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + expect(semver.gte(packagePolicyAfterUpgrade.package.version, INSTALLED_VERSION)).eql(true); + } finally { + await deleteMonitor(monitorId); + } + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project.ts new file mode 100644 index 0000000000000..d8f7e78607293 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project.ts @@ -0,0 +1,2194 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { v4 as uuidv4 } from 'uuid'; +import expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + ProjectMonitorsRequest, + PrivateLocation, + ServiceLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { formatKibanaNamespace } from '@kbn/synthetics-plugin/common/formatters'; +import { REQUEST_TOO_LARGE } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/add_monitor_project'; +import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import { + PROFILE_VALUES_ENUM, + PROFILES_MAP, +} from '@kbn/synthetics-plugin/common/constants/monitor_defaults'; +import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { comparePolicies } from './sample_data/test_policy'; +import { + getTestProjectSyntheticsPolicy, + getTestProjectSyntheticsPolicyLightweight, +} from './sample_data/test_project_monitor_policy'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('AddProjectMonitors', function () { + const supertest = getService('supertestWithoutAuth'); + const supertestWithAuth = getService('supertest'); + const kibanaServer = getService('kibanaServer'); + const monitorTestService = new SyntheticsMonitorTestService(getService); + const testPrivateLocations = new PrivateLocationTestService(getService); + const samlAuth = getService('samlAuth'); + + let projectMonitors: ProjectMonitorsRequest; + let httpProjectMonitors: ProjectMonitorsRequest; + let tcpProjectMonitors: ProjectMonitorsRequest; + let icmpProjectMonitors: ProjectMonitorsRequest; + let editorUser: RoleCredentials; + let viewerUser: RoleCredentials; + let privateLocations: PrivateLocation[] = []; + + let testPolicyId1 = ''; + let testPolicyId2 = ''; + const testPolicyName = 'Fleet test server policy' + Date.now(); + + const setUniqueIds = (request: ProjectMonitorsRequest) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ ...monitor, id: uuidv4() })), + }; + }; + + const deleteMonitor = async ( + journeyId: string, + projectId: string, + space: string = 'default' + ) => { + try { + const response = await supertest + .get(`/s/${space}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: "${journeyId}" AND ${syntheticsMonitorType}.attributes.project_id: "${projectId}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { monitors } = response.body; + if (monitors[0]?.config_id) { + await monitorTestService.deleteMonitor(editorUser, monitors[0].config_id, 200, space); + } + } catch (e) { + // eslint-disable-next-line no-console + console.error(e); + } + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + viewerUser = await samlAuth.createM2mApiKeyWithRoleScope('viewer'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + await testPrivateLocations.installSyntheticsPackage(); + + const apiResponse1 = await testPrivateLocations.addFleetPolicy(testPolicyName); + const apiResponse2 = await testPrivateLocations.addFleetPolicy(`${testPolicyName}-2`); + testPolicyId1 = apiResponse1.body.item.id; + testPolicyId2 = apiResponse2.body.item.id; + privateLocations = await testPrivateLocations.setTestLocations([ + testPolicyId1, + testPolicyId2, + ]); + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'testGlobalParam', value: 'testGlobalParamValue' }) + .expect(200); + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'testGlobalParam2', value: 'testGlobalParamValue2' }) + .expect(200); + const spaces = (await kibanaServer.spaces.list()) as Array<{ + id: string; + }>; + for (let i = 0; i < spaces.length; i++) { + if (spaces[i].id !== 'default') await kibanaServer.spaces.delete(spaces[i].id); + } + }); + + beforeEach(async () => { + await kibanaServer.savedObjects.clean({ + types: ['synthetics-monitor', 'ingest-package-policies'], + }); + const formatLocations = (monitors: ProjectMonitorsRequest['monitors']) => { + return monitors.map((monitor) => { + return { + ...monitor, + /* cannot configure public locations for deployment agnostic tests + * they would fail in MKI and ESS due to missing mock location */ + locations: [], + privateLocations: [privateLocations[0].label], + }; + }); + }; + projectMonitors = setUniqueIds({ + monitors: formatLocations(getFixtureJson('project_browser_monitor').monitors), + }); + httpProjectMonitors = setUniqueIds({ + monitors: formatLocations(getFixtureJson('project_http_monitor').monitors), + }); + tcpProjectMonitors = setUniqueIds({ + monitors: formatLocations(getFixtureJson('project_tcp_monitor').monitors), + }); + icmpProjectMonitors = setUniqueIds({ + monitors: formatLocations(getFixtureJson('project_icmp_monitor').monitors), + }); + }); + + it('project monitors - returns 404 for non-existing spaces', async () => { + const project = `test-project-${uuidv4()}`; + await supertest + .put( + `/s/i_dont_exist${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(404); + }); + + it('project monitors - handles browser monitors', async () => { + const successfulMonitors = [projectMonitors.monitors[0]]; + const project = `test-project-${uuidv4()}`; + + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const decryptedCreatedMonitor = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { + internal: true, + user: editorUser, + } + ); + + expect(decryptedCreatedMonitor.rawBody).to.eql({ + __ui: { + script_source: { + file_name: '', + is_generated_script: false, + }, + }, + config_id: decryptedCreatedMonitor.rawBody.config_id, + custom_heartbeat_id: `${journeyId}-${project}-default`, + enabled: true, + alert: { + status: { + enabled: true, + }, + tls: { + enabled: true, + }, + }, + 'filter_journeys.match': 'check if title is present', + 'filter_journeys.tags': [], + form_monitor_type: 'multistep', + ignore_https_errors: false, + journey_id: journeyId, + locations: [ + { + geo: { + lat: 0, + lon: 0, + }, + id: testPolicyId1, + agentPolicyId: testPolicyId1, + isServiceManaged: false, + label: privateLocations[0].label, + }, + ], + name: 'check if title is present', + namespace: 'default', + origin: 'project', + original_space: 'default', + playwright_options: '{"headless":true,"chromiumSandbox":false}', + playwright_text_assertion: '', + project_id: project, + params: '', + revision: 1, + schedule: { + number: '10', + unit: 'm', + }, + screenshots: 'on', + 'service.name': '', + synthetics_args: [], + tags: [], + throttling: PROFILES_MAP[PROFILE_VALUES_ENUM.DEFAULT], + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'full', + 'ssl.key': '', + 'ssl.key_passphrase': '', + 'source.inline.script': '', + 'source.project.content': + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + timeout: null, + type: 'browser', + 'url.port': null, + urls: '', + id: `${journeyId}-${project}-default`, + hash: 'ekrjelkjrelkjre', + max_attempts: 2, + updated_at: decryptedCreatedMonitor.rawBody.updated_at, + created_at: decryptedCreatedMonitor.rawBody.created_at, + labels: {}, + }); + } + }); + + it('project monitors - allows throttling false for browser monitors', async () => { + const successfulMonitors = [projectMonitors.monitors[0]]; + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...projectMonitors, + monitors: [{ ...projectMonitors.monitors[0], throttling: false }], + }) + .expect(200); + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const decryptedCreatedMonitor = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { user: editorUser } + ); + + expect(decryptedCreatedMonitor.body.throttling).to.eql({ + value: null, + id: 'no-throttling', + label: 'No throttling', + }); + } + } finally { + await Promise.all([ + successfulMonitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - handles http monitors', async () => { + const kibanaVersion = await kibanaServer.version.get(); + const successfulMonitors = [httpProjectMonitors.monitors[1]]; + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(httpProjectMonitors) + .expect(200); + + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [ + { + id: httpProjectMonitors.monitors[0].id, + details: `\`http\` project monitors must have exactly one value for field \`urls\` in version \`${kibanaVersion}\`. Your monitor was not created or updated.`, + reason: 'Invalid Heartbeat configuration', + }, + { + id: httpProjectMonitors.monitors[0].id, + details: `The following Heartbeat options are not supported for ${httpProjectMonitors.monitors[0].type} project monitors in ${kibanaVersion}: check.response.body|unsupportedKey.nestedUnsupportedKey. You monitor was not created or updated.`, + reason: 'Unsupported Heartbeat option', + }, + ], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const isTLSEnabled = Object.keys(monitor).some((key) => key.includes('ssl')); + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { rawBody: decryptedCreatedMonitor } = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { + internal: true, + user: editorUser, + } + ); + + expect(decryptedCreatedMonitor).to.eql({ + __ui: { + is_tls_enabled: isTLSEnabled, + }, + 'check.request.method': 'POST', + 'check.response.status': ['200'], + config_id: decryptedCreatedMonitor.config_id, + custom_heartbeat_id: `${journeyId}-${project}-default`, + 'check.response.body.negative': [], + 'check.response.body.positive': ['${testLocal1}', 'saved'], + 'check.response.json': [ + { description: 'check status', expression: 'foo.bar == "myValue"' }, + ], + 'check.response.headers': {}, + proxy_url: '${testGlobalParam2}', + 'check.request.body': { + type: 'text', + value: '', + }, + params: JSON.stringify({ + testLocal1: 'testLocalParamsValue', + testGlobalParam2: 'testGlobalParamOverwrite', + }), + 'check.request.headers': { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + enabled: false, + alert: { + status: { + enabled: true, + }, + tls: { + enabled: true, + }, + }, + form_monitor_type: 'http', + journey_id: journeyId, + locations: [ + { + geo: { + lat: 0, + lon: 0, + }, + id: testPolicyId1, + agentPolicyId: testPolicyId1, + isServiceManaged: false, + label: privateLocations[0].label, + }, + ], + max_redirects: '0', + name: monitor.name, + namespace: 'default', + origin: 'project', + original_space: 'default', + project_id: project, + username: '', + password: '', + proxy_headers: {}, + 'response.include_body': 'always', + 'response.include_headers': false, + 'response.include_body_max_bytes': '900', + revision: 1, + schedule: { + number: '60', + unit: 'm', + }, + 'service.name': '', + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': isTLSEnabled ? 'strict' : 'full', + 'ssl.key': '', + 'ssl.key_passphrase': '', + tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), + timeout: '80', + type: 'http', + urls: Array.isArray(monitor.urls) ? monitor.urls?.[0] : monitor.urls, + 'url.port': null, + id: `${journeyId}-${project}-default`, + hash: 'ekrjelkjrelkjre', + mode: 'any', + ipv6: true, + ipv4: true, + max_attempts: 2, + labels: {}, + updated_at: decryptedCreatedMonitor.updated_at, + created_at: decryptedCreatedMonitor.created_at, + }); + } + } finally { + await Promise.all([ + successfulMonitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - handles tcp monitors', async () => { + const successfulMonitors = [tcpProjectMonitors.monitors[0], tcpProjectMonitors.monitors[1]]; + const kibanaVersion = await kibanaServer.version.get(); + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(tcpProjectMonitors) + .expect(200); + + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [ + { + id: tcpProjectMonitors.monitors[2].id, + details: `\`tcp\` project monitors must have exactly one value for field \`hosts\` in version \`${kibanaVersion}\`. Your monitor was not created or updated.`, + reason: 'Invalid Heartbeat configuration', + }, + { + id: tcpProjectMonitors.monitors[2].id, + details: `The following Heartbeat options are not supported for ${tcpProjectMonitors.monitors[0].type} project monitors in ${kibanaVersion}: ports|unsupportedKey.nestedUnsupportedKey. You monitor was not created or updated.`, + reason: 'Unsupported Heartbeat option', + }, + ], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const isTLSEnabled = Object.keys(monitor).some((key) => key.includes('ssl')); + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { rawBody: decryptedCreatedMonitor } = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { + internal: true, + user: editorUser, + } + ); + + expect(decryptedCreatedMonitor).to.eql({ + __ui: { + is_tls_enabled: isTLSEnabled, + }, + config_id: decryptedCreatedMonitor.config_id, + custom_heartbeat_id: `${journeyId}-${project}-default`, + 'check.receive': '', + 'check.send': '', + enabled: true, + alert: { + status: { + enabled: true, + }, + tls: { + enabled: true, + }, + }, + form_monitor_type: 'tcp', + journey_id: journeyId, + locations: [ + { + geo: { + lat: 0, + lon: 0, + }, + id: testPolicyId1, + agentPolicyId: testPolicyId1, + isServiceManaged: false, + label: privateLocations[0].label, + }, + ], + name: monitor.name, + namespace: 'default', + origin: 'project', + original_space: 'default', + project_id: project, + revision: 1, + schedule: { + number: '1', + unit: 'm', + }, + proxy_url: '', + proxy_use_local_resolver: false, + 'service.name': '', + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': isTLSEnabled ? 'strict' : 'full', + 'ssl.key': '', + 'ssl.key_passphrase': '', + tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), + timeout: '16', + type: 'tcp', + hosts: Array.isArray(monitor.hosts) ? monitor.hosts?.[0] : monitor.hosts, + 'url.port': null, + urls: '', + id: `${journeyId}-${project}-default`, + hash: 'ekrjelkjrelkjre', + mode: 'any', + ipv6: true, + ipv4: true, + params: '', + max_attempts: 2, + labels: {}, + updated_at: decryptedCreatedMonitor.updated_at, + created_at: decryptedCreatedMonitor.created_at, + }); + } + } finally { + await Promise.all([ + successfulMonitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - handles icmp monitors', async () => { + const successfulMonitors = [icmpProjectMonitors.monitors[0], icmpProjectMonitors.monitors[1]]; + const kibanaVersion = await kibanaServer.version.get(); + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(icmpProjectMonitors) + .expect(200); + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [ + { + id: icmpProjectMonitors.monitors[2].id, + details: `\`icmp\` project monitors must have exactly one value for field \`hosts\` in version \`${kibanaVersion}\`. Your monitor was not created or updated.`, + reason: 'Invalid Heartbeat configuration', + }, + { + id: icmpProjectMonitors.monitors[2].id, + details: `The following Heartbeat options are not supported for ${icmpProjectMonitors.monitors[0].type} project monitors in ${kibanaVersion}: unsupportedKey.nestedUnsupportedKey. You monitor was not created or updated.`, + reason: 'Unsupported Heartbeat option', + }, + ], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { rawBody: decryptedCreatedMonitor } = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { + internal: true, + user: editorUser, + } + ); + + expect(decryptedCreatedMonitor).to.eql({ + config_id: decryptedCreatedMonitor.config_id, + custom_heartbeat_id: `${journeyId}-${project}-default`, + enabled: true, + alert: { + status: { + enabled: true, + }, + tls: { + enabled: true, + }, + }, + form_monitor_type: 'icmp', + journey_id: journeyId, + locations: [ + { + geo: { + lat: 0, + lon: 0, + }, + id: testPolicyId1, + agentPolicyId: testPolicyId1, + isServiceManaged: false, + label: privateLocations[0].label, + }, + ], + name: monitor.name, + namespace: 'default', + origin: 'project', + original_space: 'default', + project_id: project, + revision: 1, + schedule: { + number: '1', + unit: 'm', + }, + 'service.name': '', + tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), + timeout: '16', + type: 'icmp', + hosts: Array.isArray(monitor.hosts) ? monitor.hosts?.[0] : monitor.hosts, + wait: + monitor.wait?.slice(-1) === 's' + ? monitor.wait?.slice(0, -1) + : `${parseInt(monitor.wait?.slice(0, -1) || '1', 10) * 60}`, + id: `${journeyId}-${project}-default`, + hash: 'ekrjelkjrelkjre', + mode: 'any', + ipv4: true, + ipv6: true, + params: '', + max_attempts: 2, + updated_at: decryptedCreatedMonitor.updated_at, + created_at: decryptedCreatedMonitor.created_at, + labels: {}, + }); + } + } finally { + await Promise.all([ + successfulMonitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - returns a list of successfully created monitors', async () => { + const project = `test-project-${uuidv4()}`; + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + expect(body).eql({ + updatedMonitors: [], + failedMonitors: [], + createdMonitors: projectMonitors.monitors.map((monitor) => monitor.id), + }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - returns a list of successfully updated monitors', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + expect(body).eql({ + createdMonitors: [], + failedMonitors: [], + updatedMonitors: projectMonitors.monitors.map((monitor) => monitor.id), + }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - validates monitor type', async () => { + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: [{ ...projectMonitors.monitors[0], schedule: '3m', tags: '' }] }) + .expect(200); + + expect(body).eql({ + updatedMonitors: [], + failedMonitors: [ + { + details: 'Invalid value "3m" supplied to "schedule"', + id: projectMonitors.monitors[0].id, + payload: { + content: + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + filter: { + match: 'check if title is present', + }, + id: projectMonitors.monitors[0].id, + locations: [], + privateLocations: [privateLocations[0].label], + name: 'check if title is present', + params: {}, + playwrightOptions: { + chromiumSandbox: false, + headless: true, + }, + schedule: '3m', + tags: '', + throttling: { + download: 5, + latency: 20, + upload: 3, + }, + type: 'browser', + hash: 'ekrjelkjrelkjre', + max_attempts: 2, + }, + reason: "Couldn't save or update monitor because of an invalid configuration.", + }, + ], + createdMonitors: [], + }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - saves space as data stream namespace', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + // expect monitor not to have been deleted + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.NAMESPACE]).eql(formatKibanaNamespace(SPACE_ID)); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project, SPACE_ID); + } + }); + + it('project monitors - browser - handles custom namespace', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const customNamespace = 'custom.namespace'; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + namespace: customNamespace, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + // expect monitor not to have been deleted + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.NAMESPACE]).eql(customNamespace); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project, SPACE_ID); + } + }); + + it('project monitors - lightweight - handles custom namespace', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const customNamespace = 'custom.namespace'; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + namespace: customNamespace, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + + // expect monitor not to have been deleted + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${httpProjectMonitors.monitors[1].id}`, + }) + .set('kbn-xsrf', 'true') + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.NAMESPACE]).eql(customNamespace); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project, SPACE_ID); + } + }); + + it('project monitors - browser - handles custom namespace errors', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const customNamespace = 'custom-namespace'; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + const { body } = await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + namespace: customNamespace, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + // expect monitor not to have been deleted + expect(body).to.eql({ + createdMonitors: [], + failedMonitors: [ + { + details: 'Namespace contains invalid characters', + id: projectMonitors.monitors[0].id, + reason: 'Invalid namespace', + }, + ], + updatedMonitors: [], + }); + }); + + it('project monitors - lightweight - handles custom namespace errors', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const customNamespace = 'custom-namespace'; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + const { body } = await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + namespace: customNamespace, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + // expect monitor not to have been deleted + expect(body).to.eql({ + createdMonitors: [], + failedMonitors: [ + { + details: 'Namespace contains invalid characters', + id: httpProjectMonitors.monitors[1].id, + reason: 'Invalid namespace', + }, + ], + updatedMonitors: [], + }); + }); + + it('project monitors - handles editing with spaces', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: projectMonitors.monitors.map((monitor) => ({ + ...monitor, + privateLocations: [spaceScopedPrivateLocation.label], + })), + }) + .expect(200); + // expect monitor not to have been deleted + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set('kbn-xsrf', 'true') + .expect(200); + + const decryptedCreatedMonitor = await monitorTestService.getMonitor( + getResponse.body.monitors[0].config_id, + { internal: true, space: SPACE_ID, user: editorUser } + ); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(decryptedCreatedMonitor.body[ConfigKey.SOURCE_PROJECT_CONTENT]).eql( + projectMonitors.monitors[0].content + ); + + const updatedSource = 'updatedSource'; + // update monitor + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...projectMonitors, + monitors: [ + { + ...projectMonitors.monitors[0], + content: updatedSource, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + const getResponseUpdated = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .expect(200); + const { monitors: monitorsUpdated } = getResponseUpdated.body; + expect(monitorsUpdated.length).eql(1); + + const decryptedUpdatedMonitor = await monitorTestService.getMonitor( + monitorsUpdated[0].config_id, + { internal: true, space: SPACE_ID, user: editorUser } + ); + expect(decryptedUpdatedMonitor.body[ConfigKey.SOURCE_PROJECT_CONTENT]).eql(updatedSource); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project, SPACE_ID); + } + }); + + it('project monitors - formats custom id appropriately', async () => { + const project = `test project ${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]).eql( + `${projectMonitors.monitors[0].id}-${project}-${SPACE_ID}` + ); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project, SPACE_ID); + } + }); + + it('project monitors - is able to decrypt monitor when updated after hydration', async () => { + const project = `test-project-${uuidv4()}`; + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + const response = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { monitors } = response.body; + + // update project monitor via push api + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + expect(body).eql({ + updatedMonitors: [projectMonitors.monitors[0].id], + createdMonitors: [], + failedMonitors: [], + }); + + // ensure that monitor can still be decrypted + await monitorTestService.getMonitor(monitors[0]?.config_id, { user: editorUser }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => deleteMonitor(monitor.id, project)), + ]); + } + }); + + it('project monitors - is able to enable and disable monitors', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...projectMonitors, + monitors: [ + { + ...projectMonitors.monitors[0], + enabled: false, + }, + ], + }) + .expect(200); + const response = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { monitors } = response.body; + expect(monitors[0].enabled).eql(false); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - cannot update project monitors with read only privileges', async () => { + const project = `test-project-${uuidv4()}`; + + const secondMonitor = { + ...projectMonitors.monitors[0], + id: 'test-id-2', + privateLocations: [privateLocations[0].label], + }; + const testMonitors = [projectMonitors.monitors[0], secondMonitor]; + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(viewerUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: testMonitors }) + .expect(403); + }); + + it('creates integration policies for project monitors with private locations', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...projectMonitors, + monitors: [ + { ...projectMonitors.monitors[0], privateLocations: [privateLocations[0].label] }, + ], + }) + .expect(200); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + expect(packagePolicy.name).eql( + `${projectMonitors.monitors[0].id}-${project}-default-${privateLocations[0].label}` + ); + expect(packagePolicy.policy_id).eql(testPolicyId1); + + const configId = monitorsResponse.body.monitors[0].config_id; + const id = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + + comparePolicies( + packagePolicy, + getTestProjectSyntheticsPolicy({ + inputs: {}, + name: `check if title is present-${privateLocations[0].label}`, + id, + configId, + projectId: project, + locationId: testPolicyId1, + locationName: privateLocations[0].label, + }) + ); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project); + + const packagesResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + expect(packagesResponse.body.items.length).eql(0); + } + }); + + it('creates integration policies for project monitors with private locations - lightweight', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...httpProjectMonitors, + monitors: [ + { + ...httpProjectMonitors.monitors[1], + 'check.request.body': '${testGlobalParam}', + privateLocations: [privateLocations[0].label], + }, + ], + }) + .expect(200); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${httpProjectMonitors.monitors[1].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + expect(packagePolicy.name).eql( + `${httpProjectMonitors.monitors[1].id}-${project}-default-${privateLocations[0].label}` + ); + expect(packagePolicy.policy_id).eql(testPolicyId1); + + const configId = monitorsResponse.body.monitors[0].config_id; + const id = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + + comparePolicies( + packagePolicy, + getTestProjectSyntheticsPolicyLightweight({ + inputs: {}, + name: 'My Monitor 3', + id, + configId, + projectId: project, + locationName: privateLocations[0].label, + locationId: testPolicyId1, + }) + ); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + + const packagesResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + expect(packagesResponse.body.items.length).eql(0); + } + }); + + it('deletes integration policies for project monitors when private location is removed from the monitor - lightweight', async () => { + const project = `test-project-${uuidv4()}`; + + const monitorRequest = { + monitors: [ + { + ...httpProjectMonitors.monitors[1], + privateLocations: [privateLocations[0].label, privateLocations[1].label], + }, + ], + }; + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitorRequest) + .expect(200); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${monitorRequest.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + + expect(packagePolicy.policy_id).eql(testPolicyId1); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { ...monitorRequest.monitors[0], privateLocations: [privateLocations[1].label] }, + ], + }) + .expect(200); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy2 = apiResponsePolicy2.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + + expect(packagePolicy2).eql(undefined); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project); + } + }); + + it('deletes integration policies for project monitors when private location is removed from the monitor', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + privateLocations: [privateLocations[0].label, privateLocations[1].label], + }, + ], + }) + .expect(200); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + + expect(packagePolicy.policy_id).eql(testPolicyId1); + + const configId = monitorsResponse.body.monitors[0].config_id; + const id = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + + comparePolicies( + packagePolicy, + getTestProjectSyntheticsPolicy({ + inputs: {}, + name: `check if title is present-${privateLocations[0].label}`, + id, + configId, + projectId: project, + locationId: testPolicyId1, + locationName: privateLocations[0].label, + }) + ); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { ...projectMonitors.monitors[0], privateLocations: [privateLocations[1].label] }, + ], + }) + .expect(200); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy2 = apiResponsePolicy2.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + + expect(packagePolicy2).eql(undefined); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + expect(apiResponsePolicy2.body.items.length).eql(0); + } + }); + + it('handles updating package policies when project monitors are updated', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + privateLocations: [privateLocations[0].label], + }, + ], + }); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const configId = monitorsResponse.body.monitors[0].id; + const id = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + const policyId = `${id}-${testPolicyId1}`; + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => pkgPolicy.id === policyId + ); + + expect(packagePolicy.policy_id).eql(testPolicyId1); + + comparePolicies( + packagePolicy, + getTestProjectSyntheticsPolicy({ + inputs: {}, + name: `check if title is present-${privateLocations[0].label}`, + id, + configId, + projectId: project, + locationId: testPolicyId1, + locationName: privateLocations[0].label, + }) + ); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + namespace: 'custom_namespace', + privateLocations: [privateLocations[0].label], + enabled: false, + }, + ], + }); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const configId2 = monitorsResponse.body.monitors[0].id; + const id2 = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + const policyId2 = `${id}-${testPolicyId1}`; + + const packagePolicy2 = apiResponsePolicy2.body.items.find( + (pkgPolicy: PackagePolicy) => pkgPolicy.id === policyId2 + ); + + comparePolicies( + packagePolicy2, + getTestProjectSyntheticsPolicy({ + inputs: { enabled: { value: false, type: 'bool' } }, + name: `check if title is present-${privateLocations[0].label}`, + id: id2, + configId: configId2, + projectId: project, + locationId: testPolicyId1, + locationName: privateLocations[0].label, + namespace: 'custom_namespace', + }) + ); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + expect(apiResponsePolicy2.body.items.length).eql(0); + } + }); + + // this test is skipped because it would fail in MKI due to public locations not being available + it.skip('handles location formatting for both private and public locations', async () => { + const project = `test-project-${uuidv4()}`; + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { ...projectMonitors.monitors[0], privateLocations: [privateLocations[0].label] }, + ], + }); + + const updatedMonitorsResponse = await Promise.all( + projectMonitors.monitors.map((monitor) => { + return supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${monitor.id}`, + internal: true, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + }) + ); + + updatedMonitorsResponse.forEach( + (response: { + body: { monitors: Array<{ locations: Array }> }; + }) => { + expect(response.body.monitors[0].locations).eql([ + { + id: 'dev', + label: 'Dev Service', + geo: { lat: 0, lon: 0 }, + isServiceManaged: true, + }, + { + label: privateLocations[0].label, + isServiceManaged: false, + agentPolicyId: testPolicyId1, + id: testPolicyId1, + geo: { + lat: 0, + lon: 0, + }, + }, + ]); + } + ); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('only allows 250 requests at a time', async () => { + const project = `test-project-${uuidv4()}`; + const monitors = []; + for (let i = 0; i < 251; i++) { + monitors.push({ + ...projectMonitors.monitors[0], + id: `test-id-${i}`, + name: `test-name-${i}`, + }); + } + + try { + const { + body: { message }, + } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors, + }) + .expect(400); + + expect(message).to.eql(REQUEST_TOO_LARGE); + } finally { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ ...projectMonitors, project }); + } + }); + + it('project monitors - cannot update a monitor of one type to another type', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [{ ...httpProjectMonitors.monitors[1], id: projectMonitors.monitors[0].id }], + }) + .expect(200); + expect(body).eql({ + createdMonitors: [], + updatedMonitors: [], + failedMonitors: [ + { + details: `Monitor ${projectMonitors.monitors[0].id} of type browser cannot be updated to type http. Please delete the monitor first and try again.`, + payload: { + 'check.request': { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + method: 'POST', + }, + 'check.response': { + body: { + positive: ['${testLocal1}', 'saved'], + }, + status: [200], + json: [{ description: 'check status', expression: 'foo.bar == "myValue"' }], + }, + enabled: false, + hash: 'ekrjelkjrelkjre', + id: projectMonitors.monitors[0].id, + locations: [], + privateLocations: [privateLocations[0].label], + name: 'My Monitor 3', + response: { + include_body: 'always', + include_body_max_bytes: 900, + }, + 'response.include_headers': false, + schedule: 60, + timeout: '80s', + type: 'http', + tags: 'tag2,tag2', + urls: ['http://localhost:9200'], + 'ssl.verification_mode': 'strict', + params: { + testGlobalParam2: 'testGlobalParamOverwrite', + testLocal1: 'testLocalParamsValue', + }, + proxy_url: '${testGlobalParam2}', + max_attempts: 2, + }, + reason: 'Cannot update monitor to different type.', + }, + ], + }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - handles alert config without adding arbitrary fields', async () => { + const project = `test-project-${uuidv4()}`; + const testAlert = { + status: { + enabled: false, + doesnotexit: true, + tls: { + enabled: true, + }, + }, + }; + try { + await supertest + .put( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + alert: testAlert, + }, + ], + }) + .expect(200); + const getResponse = await supertest + .get(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${httpProjectMonitors.monitors[1].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.ALERT_CONFIG]).eql({ + status: { + enabled: testAlert.status.enabled, + }, + tls: { + enabled: true, + }, + }); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + } + }); + + it('project monitors - handles sending invalid public location', async () => { + const project = `test-project-${uuidv4()}`; + try { + const response = await supertest + .put( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + locations: ['does not exist'], + }, + ], + }) + .expect(200); + rawExpect(response.body).toEqual({ + createdMonitors: [], + failedMonitors: [ + { + details: rawExpect.stringContaining( + "Invalid locations specified. Elastic managed Location(s) 'does not exist' not found." + ), + id: httpProjectMonitors.monitors[1].id, + payload: { + 'check.request': { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + method: 'POST', + }, + 'check.response': { + body: { + positive: ['${testLocal1}', 'saved'], + }, + status: [200], + json: [ + { + description: 'check status', + expression: 'foo.bar == "myValue"', + }, + ], + }, + enabled: false, + hash: 'ekrjelkjrelkjre', + id: httpProjectMonitors.monitors[1].id, + locations: ['does not exist'], + privateLocations: [privateLocations[0].label], + name: 'My Monitor 3', + response: { + include_body: 'always', + include_body_max_bytes: 900, + }, + 'response.include_headers': false, + schedule: 60, + 'ssl.verification_mode': 'strict', + tags: 'tag2,tag2', + timeout: '80s', + type: 'http', + urls: ['http://localhost:9200'], + params: { + testGlobalParam2: 'testGlobalParamOverwrite', + testLocal1: 'testLocalParamsValue', + }, + proxy_url: '${testGlobalParam2}', + max_attempts: 2, + }, + reason: "Couldn't save or update monitor because of an invalid configuration.", + }, + ], + updatedMonitors: [], + }); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + } + }); + + it('project monitors - handles sending invalid private locations', async () => { + const project = `test-project-${uuidv4()}`; + try { + const response = await supertest + .put( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + locations: [], + privateLocations: ['does not exist'], + }, + ], + }) + .expect(200); + expect(response.body).eql({ + createdMonitors: [], + failedMonitors: [ + { + details: `Invalid locations specified. Private Location(s) 'does not exist' not found. Available private locations are '${privateLocations[0].label}|${privateLocations[1].label}'`, + id: httpProjectMonitors.monitors[1].id, + payload: { + 'check.request': { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + method: 'POST', + }, + 'check.response': { + body: { + positive: ['${testLocal1}', 'saved'], + }, + status: [200], + json: [ + { + description: 'check status', + expression: 'foo.bar == "myValue"', + }, + ], + }, + enabled: false, + hash: 'ekrjelkjrelkjre', + id: httpProjectMonitors.monitors[1].id, + privateLocations: ['does not exist'], + name: 'My Monitor 3', + response: { + include_body: 'always', + include_body_max_bytes: 900, + }, + 'response.include_headers': false, + schedule: 60, + 'ssl.verification_mode': 'strict', + tags: 'tag2,tag2', + timeout: '80s', + type: 'http', + urls: ['http://localhost:9200'], + locations: [], + params: { + testGlobalParam2: 'testGlobalParamOverwrite', + testLocal1: 'testLocalParamsValue', + }, + proxy_url: '${testGlobalParam2}', + max_attempts: 2, + }, + reason: "Couldn't save or update monitor because of an invalid configuration.", + }, + ], + updatedMonitors: [], + }); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + } + }); + + it('project monitors - handles no locations specified', async () => { + const project = `test-project-${uuidv4()}`; + try { + const response = await supertest + .put( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + privateLocations: [], + locations: [], + }, + ], + }) + .expect(200); + expect(response.body).eql({ + createdMonitors: [], + failedMonitors: [ + { + details: 'You must add at least one location or private location to this monitor.', + id: httpProjectMonitors.monitors[1].id, + payload: { + 'check.request': { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + method: 'POST', + }, + 'check.response': { + body: { + positive: ['${testLocal1}', 'saved'], + }, + status: [200], + json: [ + { + description: 'check status', + expression: 'foo.bar == "myValue"', + }, + ], + }, + enabled: false, + hash: 'ekrjelkjrelkjre', + id: httpProjectMonitors.monitors[1].id, + privateLocations: [], + name: 'My Monitor 3', + response: { + include_body: 'always', + include_body_max_bytes: 900, + }, + 'response.include_headers': false, + schedule: 60, + 'ssl.verification_mode': 'strict', + tags: 'tag2,tag2', + timeout: '80s', + type: 'http', + urls: ['http://localhost:9200'], + locations: [], + params: { + testGlobalParam2: 'testGlobalParamOverwrite', + testLocal1: 'testLocalParamsValue', + }, + proxy_url: '${testGlobalParam2}', + max_attempts: 2, + }, + reason: "Couldn't save or update monitor because of an invalid configuration.", + }, + ], + updatedMonitors: [], + }); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + } + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project_private_location.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project_private_location.ts new file mode 100644 index 0000000000000..a8f98dac2bf61 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project_private_location.ts @@ -0,0 +1,162 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { v4 as uuidv4 } from 'uuid'; +import expect from '@kbn/expect'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { ProjectMonitorsRequest } from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('AddProjectMonitorsPrivateLocations', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + let projectMonitors: ProjectMonitorsRequest; + let editorUser: RoleCredentials; + + const monitorTestService = new SyntheticsMonitorTestService(getService); + + let testPolicyId; + let testPrivateLocationName: string; + const testPolicyName = `Fleet test server policy ${uuidv4()}`; + const testPrivateLocationsService = new PrivateLocationTestService(getService); + + const setUniqueIds = (request: ProjectMonitorsRequest) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ ...monitor, id: uuidv4() })), + }; + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + await testPrivateLocationsService.installSyntheticsPackage(); + + const apiResponse = await testPrivateLocationsService.addFleetPolicy(testPolicyName); + testPolicyId = apiResponse.body.item.id; + const testPrivateLocations = await testPrivateLocationsService.setTestLocations([ + testPolicyId, + ]); + testPrivateLocationName = testPrivateLocations[0].label; + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + + beforeEach(() => { + projectMonitors = setUniqueIds({ + monitors: getFixtureJson('project_browser_monitor').monitors.map( + (monitor: Record) => { + return { + ...monitor, + name: `test-monitor-${uuidv4()}`, + type: 'browser', + locations: [], + privateLocations: [testPrivateLocationName], + }; + } + ), + }); + }); + + it('project monitors - returns a failed monitor when creating integration fails', async () => { + const project = `test-project-${uuidv4()}`; + + const secondMonitor = { + ...projectMonitors.monitors[0], + id: 'test-id-2', + privateLocations: ['Test private location 7'], + }; + const testMonitors = [ + projectMonitors.monitors[0], + { + ...secondMonitor, + name: '!@#$%^&*()_++[\\-\\]- wow name', + }, + ]; + try { + const { body, status } = await monitorTestService.addProjectMonitors( + project, + testMonitors, + editorUser + ); + expect(status).eql(200); + expect(body.createdMonitors.length).eql(1); + expect(body.failedMonitors[0].reason).eql( + "Couldn't save or update monitor because of an invalid configuration." + ); + } finally { + await Promise.all([ + testMonitors.map((monitor) => { + return monitorTestService.deleteMonitorByJourney( + monitor.id, + project, + 'default', + editorUser + ); + }), + ]); + } + }); + + it('project monitors - returns a failed monitor when editing integration fails', async () => { + const project = `test-project-${uuidv4()}`; + + const secondMonitor = { + ...projectMonitors.monitors[0], + id: 'test-id-2', + privateLocations: [testPrivateLocationName], + }; + const testMonitors = [projectMonitors.monitors[0], secondMonitor]; + const { body, status: status0 } = await monitorTestService.addProjectMonitors( + project, + testMonitors, + editorUser + ); + expect(status0).eql(200); + + expect(body.createdMonitors.length).eql(2); + const { body: editedBody, status: editedStatus } = + await monitorTestService.addProjectMonitors(project, testMonitors, editorUser); + expect(editedStatus).eql(200); + + expect(editedBody.createdMonitors.length).eql(0); + expect(editedBody.updatedMonitors.length).eql(2); + + testMonitors[1].name = '!@#$%^&*()_++[\\-\\]- wow name'; + testMonitors[1].privateLocations = ['Test private location 8']; + + const { body: editedBodyError, status } = await monitorTestService.addProjectMonitors( + project, + testMonitors, + editorUser + ); + expect(status).eql(200); + expect(editedBodyError.createdMonitors.length).eql(0); + expect(editedBodyError.updatedMonitors.length).eql(1); + expect(editedBodyError.failedMonitors.length).eql(1); + expect(editedBodyError.failedMonitors[0].details).eql( + `Invalid locations specified. Private Location(s) 'Test private location 8' not found. Available private locations are '${testPrivateLocationName}'` + ); + expect(editedBodyError.failedMonitors[0].reason).eql( + "Couldn't save or update monitor because of an invalid configuration." + ); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_public_api.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_public_api.ts new file mode 100644 index 0000000000000..2c41d5c58f298 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_public_api.ts @@ -0,0 +1,280 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { v4 as uuidv4 } from 'uuid'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { PrivateLocation } from '@kbn/synthetics-plugin/common/runtime_types'; +import { DEFAULT_FIELDS } from '@kbn/synthetics-plugin/common/constants/monitor_defaults'; +import { LOCATION_REQUIRED_ERROR } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/monitor_validation'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { addMonitorAPIHelper, omitMonitorKeys } from './create_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('AddNewMonitorsPublicAPI', function () { + const supertestAPI = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + const privateLocationTestService = new PrivateLocationTestService(getService); + + async function addMonitorAPI(monitor: any, statusCode: number = 200) { + return await addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorUser, samlAuth); + } + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + privateLocation = await privateLocationTestService.addTestPrivateLocation(); + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + + it('should return error for empty monitor', async function () { + const { message } = await addMonitorAPI({}, 400); + expect(message).eql('Invalid value "undefined" supplied to "type"'); + }); + + it('return error if no location specified', async () => { + const { message } = await addMonitorAPI({ type: 'http' }, 400); + expect(message).eql(LOCATION_REQUIRED_ERROR); + }); + + it('return error if invalid location specified', async () => { + const { message } = await addMonitorAPI({ type: 'http', locations: ['mars'] }, 400); + rawExpect(message).toContain( + "Invalid locations specified. Elastic managed Location(s) 'mars' not found." + ); + }); + + it('return error if invalid private location specified', async () => { + const { message } = await addMonitorAPI( + { + type: 'http', + locations: ['mars'], + privateLocations: ['moon'], + }, + 400 + ); + expect(message).eql('Invalid monitor key(s) for http type: privateLocations'); + + const result = await addMonitorAPI( + { + type: 'http', + locations: ['mars'], + private_locations: ['moon'], + }, + 400 + ); + rawExpect(result.message).toContain("Private Location(s) 'moon' not found."); + }); + + it('return error for origin project', async () => { + const { message } = await addMonitorAPI( + { + type: 'http', + locations: ['dev'], + url: 'https://www.google.com', + origin: 'project', + }, + 400 + ); + expect(message).eql('Unsupported origin type project, only ui type is supported via API.'); + }); + + describe('HTTP Monitor', () => { + const defaultFields = DEFAULT_FIELDS.http; + it('return error empty http', async () => { + const { message, attributes } = await addMonitorAPI( + { + type: 'http', + locations: [], + private_locations: [privateLocation.id], + }, + 400 + ); + + expect(message).eql('Monitor is not a valid monitor of type http'); + expect(attributes).eql({ + details: + 'Invalid field "url", must be a non-empty string. | Invalid value "undefined" supplied to "name"', + payload: { type: 'http' }, + }); + }); + + it('base http monitor', async () => { + const monitor = { + type: 'http', + private_locations: [privateLocation.id], + url: 'https://www.google.com', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name: 'https://www.google.com', + }) + ); + }); + + it('can enable retries', async () => { + const name = `test name ${uuidv4()}`; + const monitor = { + type: 'http', + private_locations: [privateLocation.id], + url: 'https://www.google.com', + name, + retest_on_failure: true, + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name, + retest_on_failure: true, + }) + ); + }); + + it('can disable retries', async () => { + const name = `test name ${uuidv4()}`; + const monitor = { + type: 'http', + private_locations: [privateLocation.id], + url: 'https://www.google.com', + name, + retest_on_failure: false, + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name, + max_attempts: 1, + retest_on_failure: undefined, // this key is not part of the SO and should not be defined + }) + ); + }); + }); + + describe('TCP Monitor', () => { + const defaultFields = DEFAULT_FIELDS.tcp; + + it('base tcp monitor', async () => { + const monitor = { + type: 'tcp', + private_locations: [privateLocation.id], + host: 'https://www.google.com/', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name: 'https://www.google.com/', + }) + ); + }); + }); + + describe('ICMP Monitor', () => { + const defaultFields = DEFAULT_FIELDS.icmp; + + it('base icmp monitor', async () => { + const monitor = { + type: 'icmp', + private_locations: [privateLocation.id], + host: 'https://8.8.8.8', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name: 'https://8.8.8.8', + }) + ); + }); + }); + + describe('Browser Monitor', () => { + const defaultFields = DEFAULT_FIELDS.browser; + + it('empty browser monitor', async () => { + const monitor = { + type: 'browser', + private_locations: [privateLocation.id], + name: 'simple journey', + }; + const result = await addMonitorAPI(monitor, 400); + + expect(result).eql({ + statusCode: 400, + error: 'Bad Request', + message: 'Monitor is not a valid monitor of type browser', + attributes: { + details: 'source.inline.script: Script is required for browser monitor.', + payload: { type: 'browser', name: 'simple journey' }, + }, + }); + }); + + it('base browser monitor', async () => { + const monitor = { + type: 'browser', + private_locations: [privateLocation.id], + name: 'simple journey', + 'source.inline.script': 'step("simple journey", async () => {});', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + }) + ); + }); + + it('base browser monitor with inline_script', async () => { + const monitor = { + type: 'browser', + private_locations: [privateLocation.id], + name: 'simple journey inline_script', + inline_script: 'step("simple journey", async () => {});', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + }) + ); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_update_params.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_update_params.ts new file mode 100644 index 0000000000000..4f4068008cd40 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_update_params.ts @@ -0,0 +1,385 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { v4 as uuidv4 } from 'uuid'; +import { pick } from 'lodash'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { syntheticsParamType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +function assertHas(actual: unknown, expected: object) { + expect(pick(actual, Object.keys(expected))).eql(expected); +} + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe.skip('AddEditParams', function () { + const samlAuth = getService('samlAuth'); + const supertest = getService('supertestWithoutAuth'); + let adminRoleAuthc: RoleCredentials; + + const kServer = getService('kibanaServer'); + const testParam = { + key: 'test', + value: 'test', + }; + const testPrivateLocations = new PrivateLocationTestService(getService); + + before(async () => { + await testPrivateLocations.installSyntheticsPackage(); + adminRoleAuthc = await samlAuth.createM2mApiKeyWithRoleScope('admin'); + await kServer.savedObjects.clean({ types: [syntheticsParamType] }); + }); + + it('adds a test param', async () => { + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + assertHas(getResponse.body[0], testParam); + }); + + it('handles tags and description', async () => { + const tagsAndDescription = { + tags: ['a tag'], + description: 'test description', + }; + const testParam2 = { + ...testParam, + ...tagsAndDescription, + }; + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .send(testParam2) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + assertHas(getResponse.body[0], testParam2); + }); + + it('handles editing a param', async () => { + const expectedUpdatedParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const param = getResponse.body[0]; + assertHas(param, testParam); + + await supertest + .put(SYNTHETICS_API_URLS.PARAMS + '/' + param.id) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({}) + .expect(400); + + await supertest + .put(SYNTHETICS_API_URLS.PARAMS + '/' + param.id) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const updatedGetResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const actualUpdatedParam = updatedGetResponse.body[0]; + assertHas(actualUpdatedParam, expectedUpdatedParam); + }); + + it('handles partial editing a param', async () => { + const newParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + const response = await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(newParam) + .expect(200); + const paramId = response.body.id; + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS + '/' + paramId) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + assertHas(getResponse.body, newParam); + + await supertest + .put(SYNTHETICS_API_URLS.PARAMS + '/' + paramId) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + key: 'testUpdated', + }) + .expect(200); + + await supertest + .put(SYNTHETICS_API_URLS.PARAMS + '/' + paramId) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + key: 'testUpdatedAgain', + value: 'testUpdatedAgain', + }) + .expect(200); + + const updatedGetResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS + '/' + paramId) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + assertHas(updatedGetResponse.body, { + ...newParam, + key: 'testUpdatedAgain', + value: 'testUpdatedAgain', + }); + }); + + it('handles spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(getResponse.body[0].namespaces).eql([SPACE_ID]); + assertHas(getResponse.body[0], testParam); + }); + + it('handles editing a param in spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + const expectedUpdatedParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const param = getResponse.body[0]; + assertHas(param, testParam); + + await supertest + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}/${param.id}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(expectedUpdatedParam) + .expect(200); + + const updatedGetResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const actualUpdatedParam = updatedGetResponse.body[0]; + assertHas(actualUpdatedParam, expectedUpdatedParam); + }); + + it('does not allow editing a param in created in one space in a different space', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const SPACE_ID_TWO = `test-space-${uuidv4()}-two`; + const SPACE_NAME_TWO = `test-space-name ${uuidv4()} 2`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + await kServer.spaces.create({ id: SPACE_ID_TWO, name: SPACE_NAME_TWO }); + + const updatedParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const param = getResponse.body[0]; + assertHas(param, testParam); + + // space does exist so get request should be 200 + await supertest + .get(`/s/${SPACE_ID_TWO}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + await supertest + .put(`/s/${SPACE_ID_TWO}${SYNTHETICS_API_URLS.PARAMS}/${param.id}}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(updatedParam) + .expect(404); + + const updatedGetResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const actualUpdatedParam = updatedGetResponse.body[0]; + assertHas(actualUpdatedParam, testParam); + }); + + it('handles invalid spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + await supertest + .post(`/s/doesnotexist${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(404); + }); + + it('handles editing with invalid spaces', async () => { + const updatedParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const param = getResponse.body[0]; + assertHas(param, testParam); + + await supertest + .put(`/s/doesnotexist${SYNTHETICS_API_URLS.PARAMS}/${param.id}}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(updatedParam) + .expect(404); + }); + + it('handles share across spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ ...testParam, share_across_spaces: true }) + .expect(200); + + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(getResponse.body[0].namespaces).eql(['*']); + assertHas(getResponse.body[0], testParam); + }); + + it('should not return values for non admin user', async () => { + const resp = await supertest + .get(`${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const params = resp.body; + expect(params.length).to.eql(6); + params.forEach((param: any) => { + expect(param.value).to.eql(undefined); + expect(param.key).to.not.empty(); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor.ts new file mode 100644 index 0000000000000..3e1582ea3ec2b --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor.ts @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + EncryptedSyntheticsSavedMonitor, + HTTPFields, + MonitorFields, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('DeleteMonitorRoute', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + const testPrivateLocations = new PrivateLocationTestService(getService); + const monitorTestService = new SyntheticsMonitorTestService(getService); + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + let editorUser: RoleCredentials; + let testPolicyId = ''; + let privateLocations: PrivateLocation[]; + + const saveMonitor = async ( + monitor: MonitorFields + ): Promise => { + const res = await supertest + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor); + + expect(res.status).to.eql(200, JSON.stringify(res.body)); + + return res.body; + }; + + const deleteMonitor = async (monitorId?: string | string[], statusCode = 200) => { + return monitorTestService.deleteMonitor(editorUser, monitorId, statusCode, 'default'); + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await testPrivateLocations.installSyntheticsPackage(); + const testPolicyName = 'Fleet test server policy' + Date.now(); + const apiResponse = await testPrivateLocations.addFleetPolicy(testPolicyName); + testPolicyId = apiResponse.body.item.id; + privateLocations = await testPrivateLocations.setTestLocations([testPolicyId]); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + + _httpMonitorJson = getFixtureJson('http_monitor'); + }); + + beforeEach(() => { + httpMonitorJson = { + ..._httpMonitorJson, + locations: [privateLocations[0]], + }; + }); + + it('deletes monitor by id', async () => { + const { id: monitorId } = await saveMonitor(httpMonitorJson as MonitorFields); + + const deleteResponse = await deleteMonitor(monitorId); + + expect(deleteResponse.body).eql([{ id: monitorId, deleted: true }]); + + // Hit get endpoint and expect 404 as well + await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(404); + }); + + it('deletes monitor by param id', async () => { + const { id: monitorId } = await saveMonitor(httpMonitorJson as MonitorFields); + + const deleteResponse = await monitorTestService.deleteMonitorByIdParam( + editorUser, + monitorId, + 200, + 'default' + ); + + expect(deleteResponse.body).eql([{ id: monitorId, deleted: true }]); + + // Hit get endpoint and expect 404 as well + await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(404); + }); + + it('throws error if both body and param are missing', async () => { + await supertest + .delete(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .send() + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(400); + }); + + it('deletes multiple monitors by id', async () => { + const { id: monitorId } = await saveMonitor(httpMonitorJson as MonitorFields); + const { id: monitorId2 } = await saveMonitor({ + ...httpMonitorJson, + name: 'another -2', + } as MonitorFields); + + const deleteResponse = await deleteMonitor([monitorId2, monitorId]); + + expect( + deleteResponse.body.sort((a: { id: string }, b: { id: string }) => (a.id > b.id ? 1 : -1)) + ).eql( + [ + { id: monitorId2, deleted: true }, + { id: monitorId, deleted: true }, + ].sort((a, b) => (a.id > b.id ? 1 : -1)) + ); + + // Hit get endpoint and expect 404 as well + await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(404); + }); + + it('returns 404 if monitor id is not found', async () => { + const invalidMonitorId = 'invalid-id'; + const expected404Message = `Monitor id ${invalidMonitorId} not found!`; + + const deleteResponse = await deleteMonitor(invalidMonitorId); + + expect(deleteResponse.status).eql(200); + expect(deleteResponse.body).eql([ + { + id: invalidMonitorId, + deleted: false, + error: expected404Message, + }, + ]); + }); + + it('validates empty monitor id', async () => { + await deleteMonitor(undefined, 400); + await deleteMonitor([], 400); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor_project.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor_project.ts new file mode 100644 index 0000000000000..e2eecb91cb154 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor_project.ts @@ -0,0 +1,521 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { v4 as uuidv4 } from 'uuid'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + ProjectMonitorsRequest, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { REQUEST_TOO_LARGE } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/delete_monitor_project'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import expect from '@kbn/expect'; +import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('DeleteProjectMonitors', function () { + const supertest = getService('supertestWithoutAuth'); + const supertestWithAuth = getService('supertest'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + let projectMonitors: ProjectMonitorsRequest; + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + const testPrivateLocationsService = new PrivateLocationTestService(getService); + + const setUniqueIdsAndLocations = ( + request: ProjectMonitorsRequest, + privateLocations: PrivateLocation[] = [] + ) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ + ...monitor, + id: uuidv4(), + locations: [], + privateLocations: privateLocations.map((location) => location.label), + })), + }; + }; + + before(async () => { + await testPrivateLocationsService.installSyntheticsPackage(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(async () => { + await kibanaServer.savedObjects.clean({ types: ['synthetics-private-location'] }); + privateLocation = await testPrivateLocationsService.addTestPrivateLocation(); + projectMonitors = setUniqueIdsAndLocations(getFixtureJson('project_browser_monitor'), [ + privateLocation, + ]); + }); + + it('only allows 250 requests at a time', async () => { + const project = 'test-brower-suite'; + const monitors = []; + for (let i = 0; i < 251; i++) { + monitors.push({ + ...projectMonitors.monitors[0], + id: `test-id-${i}`, + name: `test-name-${i}`, + }); + } + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitors.slice(0, 250) }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitors.slice(250, 251) }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + expect(total).to.eql(251); + + const response = await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(400); + const { message } = response.body; + expect(message).to.eql(REQUEST_TOO_LARGE); + } finally { + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 251) }) + .expect(200); + } + }); + + it('project monitors - handles browser monitors', async () => { + const monitorToDelete = 'second-monitor-id'; + const monitors = [ + projectMonitors.monitors[0], + { + ...projectMonitors.monitors[0], + id: monitorToDelete, + }, + ]; + const project = 'test-brower-suite'; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + expect(total).to.eql(2); + const monitorsToDelete = [monitorToDelete]; + + const response = await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + expect(response.body.deleted_monitors).to.eql(monitorsToDelete); + + const responseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total: totalAfterDeletion } = responseAfterDeletion.body; + expect(totalAfterDeletion).to.eql(1); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + } + }); + + it('does not delete monitors from a different project', async () => { + const monitors = [...projectMonitors.monitors]; + const project = 'test-brower-suite'; + const secondProject = 'second-project'; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + secondProject + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondProjectSavedObjectResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${secondProject}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + const { total: secondProjectTotal } = secondProjectSavedObjectResponse.body; + expect(total).to.eql(monitors.length); + expect(secondProjectTotal).to.eql(monitors.length); + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + const response = await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + expect(response.body.deleted_monitors).to.eql(monitorsToDelete); + + const responseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondResponseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${secondProject}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total: totalAfterDeletion } = responseAfterDeletion.body; + const { total: secondProjectTotalAfterDeletion } = secondResponseAfterDeletion.body; + expect(totalAfterDeletion).to.eql(0); + expect(secondProjectTotalAfterDeletion).to.eql(monitors.length); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + secondProject + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + } + }); + + it('does not delete monitors from the same project in a different space project', async () => { + const monitors = [...projectMonitors.monitors]; + const project = 'test-brower-suite'; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocationsService.addTestPrivateLocation( + SPACE_ID + ); + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.map((monitor) => ({ + ...monitor, + privateLocations: [privateLocation.label], + })), + }) + .expect(200); + + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.map((monitor) => ({ + ...monitor, + privateLocations: [spaceScopedPrivateLocation.label], + })), + }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondSpaceProjectSavedObjectResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + const { total: secondSpaceTotal } = secondSpaceProjectSavedObjectResponse.body; + + expect(total).to.eql(monitors.length); + expect(secondSpaceTotal).to.eql(monitors.length); + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + const response = await supertest + .delete( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + expect(response.body.deleted_monitors).to.eql(monitorsToDelete); + + const responseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondSpaceResponseAfterDeletion = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total: totalAfterDeletion } = responseAfterDeletion.body; + const { total: secondProjectTotalAfterDeletion } = secondSpaceResponseAfterDeletion.body; + expect(totalAfterDeletion).to.eql(monitors.length); + expect(secondProjectTotalAfterDeletion).to.eql(0); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + } + }); + + it('deletes integration policies when project monitors are deleted', async () => { + const monitors = [ + { ...projectMonitors.monitors[0], privateLocations: [privateLocation.label] }, + ]; + const project = 'test-brower-suite'; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + expect(total).to.eql(monitors.length); + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + savedObjectsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID] + + '-' + + privateLocation.id + ); + expect(packagePolicy.policy_id).to.be(privateLocation.id); + + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + const response = await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + expect(response.body.deleted_monitors).to.eql(monitorsToDelete); + + const responseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total: totalAfterDeletion } = responseAfterDeletion.body; + expect(totalAfterDeletion).to.eql(0); + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy2 = apiResponsePolicy2.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + savedObjectsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID] + + '-' + + privateLocation.id + ); + expect(packagePolicy2).to.be(undefined); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + } + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor.ts new file mode 100644 index 0000000000000..755fdad3aa196 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor.ts @@ -0,0 +1,370 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import moment from 'moment'; +import { v4 as uuidv4 } from 'uuid'; +import { omit } from 'lodash'; +import { + ConfigKey, + EncryptedSyntheticsSavedMonitor, + HTTPFields, + MonitorFields, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { omitResponseTimestamps, omitEmptyValues } from './helpers/monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('EditMonitorAPI', function () { + const supertestWithAuth = getService('supertest'); + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + const testPrivateLocations = new PrivateLocationTestService(getService); + const monitorTestService = new SyntheticsMonitorTestService(getService); + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + let testPolicyId = ''; + let editorUser: RoleCredentials; + let privateLocations: PrivateLocation[]; + + const saveMonitor = async (monitor: MonitorFields, spaceId?: string) => { + const apiURL = spaceId + ? `/s/${spaceId}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}` + : SYNTHETICS_API_URLS.SYNTHETICS_MONITORS; + const res = await supertest + .post(apiURL + '?internal=true') + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + const { url, created_at: createdAt, updated_at: updatedAt, ...rest } = res.body; + + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + return rest as EncryptedSyntheticsSavedMonitor; + }; + + const editMonitor = async (modifiedMonitor: MonitorFields, monitorId: string) => { + const res = await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId + '?internal=true') + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(modifiedMonitor); + + expect(res.status).eql(200, JSON.stringify(res.body)); + + const { created_at: createdAt, updated_at: updatedAt } = res.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + return omit(res.body, ['created_at', 'updated_at']); + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await supertestWithAuth.post('/api/fleet/setup').set('kbn-xsrf', 'true').send().expect(200); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const testPolicyName = 'Fleet test server policy' + Date.now(); + const apiResponse = await testPrivateLocations.addFleetPolicy(testPolicyName); + testPolicyId = apiResponse.body.item.id; + privateLocations = await testPrivateLocations.setTestLocations([testPolicyId]); + _httpMonitorJson = getFixtureJson('http_monitor'); + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + + beforeEach(() => { + httpMonitorJson = { ..._httpMonitorJson, locations: [privateLocations[0]] }; + }); + + it('edits the monitor', async () => { + const newMonitor = httpMonitorJson; + + const savedMonitor = await saveMonitor(newMonitor as MonitorFields); + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; + + expect(omitResponseTimestamps(savedMonitor)).eql( + omitEmptyValues({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_ID]: monitorId, + }) + ); + + const updates: Partial = { + [ConfigKey.URLS]: 'https://modified-host.com', + [ConfigKey.NAME]: 'Modified name', + [ConfigKey.LOCATIONS]: [privateLocations[0]], + [ConfigKey.REQUEST_HEADERS_CHECK]: { + sampleHeader2: 'sampleValue2', + }, + [ConfigKey.METADATA]: { + script_source: { + is_generated_script: false, + file_name: 'test-file.name', + }, + }, + }; + + const modifiedMonitor = { + ...savedMonitor, + ...updates, + [ConfigKey.METADATA]: { + ...newMonitor[ConfigKey.METADATA], + ...updates[ConfigKey.METADATA], + }, + } as any; + + const editResponse = await editMonitor(modifiedMonitor, monitorId); + + expect(editResponse).eql( + omitEmptyValues({ + ...modifiedMonitor, + revision: 2, + }) + ); + }); + + it('strips unknown keys from monitor edits', async () => { + const newMonitor = { ...httpMonitorJson, name: 'yet another' }; + + const savedMonitor = await saveMonitor(newMonitor as MonitorFields); + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; + + const { created_at: createdAt, updated_at: updatedAt } = savedMonitor; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(omitResponseTimestamps(savedMonitor)).eql( + omitEmptyValues({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_ID]: monitorId, + }) + ); + + const updates: Partial = { + [ConfigKey.URLS]: 'https://modified-host.com', + [ConfigKey.NAME]: 'Modified name like that', + [ConfigKey.LOCATIONS]: [privateLocations[0]], + [ConfigKey.REQUEST_HEADERS_CHECK]: { + sampleHeader2: 'sampleValue2', + }, + [ConfigKey.METADATA]: { + script_source: { + is_generated_script: false, + file_name: 'test-file.name', + }, + }, + unknownkey: 'unknownvalue', + } as Partial; + + const modifiedMonitor = omit( + { + ...updates, + [ConfigKey.METADATA]: { + ...newMonitor[ConfigKey.METADATA], + ...updates[ConfigKey.METADATA], + }, + }, + ['unknownkey'] + ); + + const editResponse = await editMonitor(modifiedMonitor as MonitorFields, monitorId); + + expect(editResponse).eql( + omitEmptyValues({ + ...savedMonitor, + ...modifiedMonitor, + revision: 2, + }) + ); + expect(editResponse).not.to.have.keys('unknownkey'); + }); + + it('returns 404 if monitor id is not present', async () => { + const invalidMonitorId = 'invalid-id'; + const expected404Message = `Monitor id ${invalidMonitorId} not found!`; + + const editResponse = await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + invalidMonitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(httpMonitorJson) + .expect(404); + + expect(editResponse.body.message).eql(expected404Message); + }); + + it('returns bad request if payload is invalid for HTTP monitor', async () => { + const { id: monitorId, ...savedMonitor } = await saveMonitor( + httpMonitorJson as MonitorFields + ); + + // Delete a required property to make payload invalid + const toUpdate = { ...savedMonitor, 'check.request.headers': null }; + + const apiResponse = await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(toUpdate); + + expect(apiResponse.status).eql(400); + }); + + it('returns bad request if monitor type is invalid', async () => { + const { id: monitorId, ...savedMonitor } = await saveMonitor({ + ...httpMonitorJson, + name: 'test monitor - 11', + } as MonitorFields); + + const toUpdate = { ...savedMonitor, type: 'invalid-data-steam' }; + + const apiResponse = await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(toUpdate); + + expect(apiResponse.status).eql(400); + expect(apiResponse.body.message).eql( + 'Monitor type cannot be changed from http to invalid-data-steam.' + ); + }); + + it('sets config hash to empty string on edits', async () => { + const newMonitor = httpMonitorJson; + const configHash = 'djrhefje'; + + const savedMonitor = await saveMonitor({ + ...(newMonitor as MonitorFields), + [ConfigKey.CONFIG_HASH]: configHash, + name: 'test monitor - 12', + }); + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; + const { created_at: createdAt, updated_at: updatedAt } = savedMonitor; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(savedMonitor).eql( + omitEmptyValues({ + ...newMonitor, + [ConfigKey.CONFIG_ID]: monitorId, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + name: 'test monitor - 12', + hash: configHash, + }) + ); + + const updates: Partial = { + [ConfigKey.URLS]: 'https://modified-host.com', + name: 'test monitor - 12', + } as Partial; + + const modifiedMonitor = { + ...newMonitor, + ...updates, + [ConfigKey.METADATA]: { + ...newMonitor[ConfigKey.METADATA], + ...updates[ConfigKey.METADATA], + }, + }; + + const editResponse = await editMonitor(modifiedMonitor as MonitorFields, monitorId); + + expect(editResponse).eql( + omitEmptyValues({ + ...modifiedMonitor, + [ConfigKey.CONFIG_ID]: monitorId, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_HASH]: '', + revision: 2, + }) + ); + expect(editResponse).not.to.have.keys('unknownkey'); + }); + + it('handles spaces', async () => { + const name = 'Monitor with private location'; + + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + const newMonitor = { + name, + type: 'http', + urls: 'https://elastic.co', + locations: [spaceScopedPrivateLocation], + }; + + const savedMonitor = await saveMonitor(newMonitor as MonitorFields, SPACE_ID); + + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; + const toUpdate = { + ...savedMonitor, + urls: 'https://google.com', + }; + await supertest + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}/${monitorId}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(toUpdate) + .expect(200); + + const updatedResponse = await monitorTestService.getMonitor(monitorId, { + space: SPACE_ID, + internal: true, + user: editorUser, + }); + + // ensure monitor was updated + expect(updatedResponse.body.urls).eql(toUpdate.urls); + + // update a second time, ensures AAD was not corrupted + const toUpdate2 = { + ...savedMonitor, + urls: 'https://google.com', + }; + + await supertest + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}/${monitorId}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(toUpdate2) + .expect(200); + + const updatedResponse2 = await monitorTestService.getMonitor(monitorId, { + space: SPACE_ID, + internal: true, + user: editorUser, + }); + + // ensure monitor was updated + expect(updatedResponse2.body.urls).eql(toUpdate2.urls); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor_public_api.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor_public_api.ts new file mode 100644 index 0000000000000..bb659523a5132 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor_public_api.ts @@ -0,0 +1,301 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { v4 as uuidv4 } from 'uuid'; +import { omit } from 'lodash'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { DEFAULT_FIELDS } from '@kbn/synthetics-plugin/common/constants/monitor_defaults'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import moment from 'moment'; +import { PrivateLocation } from '@kbn/synthetics-plugin/common/runtime_types'; +import { LOCATION_REQUIRED_ERROR } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/monitor_validation'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { addMonitorAPIHelper, omitMonitorKeys } from './create_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('EditMonitorsPublicAPI', function () { + const supertestAPI = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + const testPrivateLocations = new PrivateLocationTestService(getService); + let editorUser: RoleCredentials; + let privateLocation1: PrivateLocation; + let privateLocation2: PrivateLocation; + + async function addMonitorAPI(monitor: any, statusCode: number = 200) { + return await addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorUser, samlAuth); + } + + async function editMonitorAPI(id: string, monitor: any, statusCode: number = 200) { + return await editMonitorAPIHelper(id, monitor, statusCode); + } + + async function editMonitorAPIHelper(monitorId: string, monitor: any, statusCode = 200) { + const result = await supertestAPI + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + `/${monitorId}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor); + + expect(result.status).eql(statusCode, JSON.stringify(result.body)); + + if (statusCode === 200) { + const { + created_at: createdAt, + updated_at: updatedAt, + id, + config_id: configId, + } = result.body; + expect(id).not.empty(); + expect(configId).not.empty(); + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + return { + rawBody: result.body, + body: { + ...omit(result.body, [ + 'created_at', + 'updated_at', + 'id', + 'config_id', + 'form_monitor_type', + ]), + }, + }; + } + return result.body; + } + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await testPrivateLocations.installSyntheticsPackage(); + privateLocation1 = await testPrivateLocations.addTestPrivateLocation(); + privateLocation2 = await testPrivateLocations.addTestPrivateLocation(); + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + let monitorId = 'test-id'; + + const defaultFields = DEFAULT_FIELDS.http; + + it('adds test monitor', async () => { + const monitor = { + type: 'http', + private_locations: [privateLocation1.id], + url: 'https://www.google.com', + }; + const { body: result, rawBody } = await addMonitorAPI(monitor); + monitorId = rawBody.id; + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation1], + name: 'https://www.google.com', + }) + ); + }); + + it('should return error for empty monitor', async function () { + const errMessage = 'Monitor must be a non-empty object'; + const testCases = [{}, null, undefined, false, [], '']; + for (const testCase of testCases) { + const { message } = await editMonitorAPI(monitorId, testCase, 400); + expect(message).eql(errMessage); + } + }); + + it('return error if type is being changed', async () => { + const { message } = await editMonitorAPI(monitorId, { type: 'tcp' }, 400); + expect(message).eql('Monitor type cannot be changed from http to tcp.'); + }); + + it('return error if monitor not found', async () => { + const { message } = await editMonitorAPI('invalid-monitor-id', { type: 'tcp' }, 404); + expect(message).eql('Monitor id invalid-monitor-id not found!'); + }); + + it('return error if invalid location specified', async () => { + const { message } = await editMonitorAPI( + monitorId, + { type: 'http', locations: ['mars'] }, + 400 + ); + rawExpect(message).toContain( + "Invalid locations specified. Elastic managed Location(s) 'mars' not found." + ); + }); + + it('return error if invalid private location specified', async () => { + const { message } = await editMonitorAPI( + monitorId, + { + type: 'http', + locations: ['mars'], + privateLocations: ['moon'], + }, + 400 + ); + expect(message).eql('Invalid monitor key(s) for http type: privateLocations'); + + const result = await editMonitorAPI( + monitorId, + { + type: 'http', + locations: ['mars'], + private_locations: ['moon'], + }, + 400 + ); + rawExpect(result.message).toContain("Private Location(s) 'moon' not found."); + }); + + it('throws an error if empty locations', async () => { + const monitor = { + locations: [], + private_locations: [], + }; + const { message } = await editMonitorAPI(monitorId, monitor, 400); + + expect(message).eql(LOCATION_REQUIRED_ERROR); + }); + + it('cannot change origin type', async () => { + const monitor = { + origin: 'project', + }; + const result = await editMonitorAPI(monitorId, monitor, 400); + + expect(result).eql({ + statusCode: 400, + error: 'Bad Request', + message: 'Unsupported origin type project, only ui type is supported via API.', + attributes: { + details: 'Unsupported origin type project, only ui type is supported via API.', + payload: { origin: 'project' }, + }, + }); + }); + + const updates: any = {}; + + it('can change name of monitor', async () => { + updates.name = `updated name ${uuidv4()}`; + const monitor = { + name: updates.name, + }; + const { body: result } = await editMonitorAPI(monitorId, monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + ...updates, + locations: [privateLocation1], + revision: 2, + url: 'https://www.google.com', + }) + ); + }); + + it('prevents duplicate name of monitor', async () => { + const name = `test name ${uuidv4()}`; + const monitor = { + name, + type: 'http', + private_locations: [privateLocation1.id], + url: 'https://www.google.com', + }; + // create one monitor with one name + await addMonitorAPI(monitor); + // create another monitor with a different name + const { body: result, rawBody } = await addMonitorAPI({ + ...monitor, + name: 'test name', + }); + const newMonitorId = rawBody.id; + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation1], + name: 'test name', + }) + ); + + const editResult = await editMonitorAPI( + newMonitorId, + { + name, + }, + 400 + ); + + expect(editResult).eql({ + statusCode: 400, + error: 'Bad Request', + message: `Monitor name must be unique, "${name}" already exists.`, + attributes: { + details: `Monitor name must be unique, "${name}" already exists.`, + }, + }); + }); + + it('can add a second private location to existing monitor', async () => { + const monitor = { + private_locations: [privateLocation1.id, privateLocation2.id], + }; + + const { body: result } = await editMonitorAPI(monitorId, monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...updates, + revision: 3, + url: 'https://www.google.com', + locations: [privateLocation1, privateLocation2], + }) + ); + }); + + it('can remove private location from existing monitor', async () => { + const monitor = { + private_locations: [privateLocation2.id], + }; + + const { body: result } = await editMonitorAPI(monitorId, monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...updates, + revision: 4, + url: 'https://www.google.com', + locations: [privateLocation2], + }) + ); + }); + + it('can not remove all locations', async () => { + const monitor = { + locations: [], + private_locations: [], + }; + + const { message } = await editMonitorAPI(monitorId, monitor, 400); + + expect(message).eql(LOCATION_REQUIRED_ERROR); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/enable_default_alerting.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/enable_default_alerting.ts new file mode 100644 index 0000000000000..231195be88e44 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/enable_default_alerting.ts @@ -0,0 +1,330 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { omit } from 'lodash'; +import { HTTPFields, PrivateLocation } from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { DYNAMIC_SETTINGS_DEFAULTS } from '@kbn/synthetics-plugin/common/constants/settings_defaults'; + +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { addMonitorAPIHelper, omitMonitorKeys } from './create_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('EnableDefaultAlerting', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const retry = getService('retry'); + const samlAuth = getService('samlAuth'); + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + const privateLocationTestService = new PrivateLocationTestService(getService); + + const addMonitorAPI = async (monitor: any, statusCode = 200) => { + return addMonitorAPIHelper(supertest, monitor, statusCode, editorUser, samlAuth); + }; + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + _httpMonitorJson = getFixtureJson('http_monitor'); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + privateLocation = await privateLocationTestService.addTestPrivateLocation(); + httpMonitorJson = { + ..._httpMonitorJson, + locations: [privateLocation], + }; + await supertest + .put(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(DYNAMIC_SETTINGS_DEFAULTS) + .expect(200); + }); + + it('returns the created alerted when called', async () => { + const apiResponse = await supertest + .post(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const omitFields = [ + 'apiKeyOwner', + 'createdBy', + 'updatedBy', + 'id', + 'updatedAt', + 'createdAt', + 'scheduledTaskId', + 'executionStatus', + 'monitoring', + 'nextRun', + 'lastRun', + 'snoozeSchedule', + 'viewInAppRelativeUrl', + ]; + + const statusRule = apiResponse.body.statusRule; + const tlsRule = apiResponse.body.tlsRule; + + rawExpect(omit(statusRule, omitFields)).toEqual( + omit(defaultAlertRules.statusRule, omitFields) + ); + rawExpect(omit(tlsRule, omitFields)).toEqual(omit(defaultAlertRules.tlsRule, omitFields)); + }); + + it('enables alert when new monitor is added', async () => { + const newMonitor = httpMonitorJson; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql(omitMonitorKeys({ ...newMonitor, spaceId: 'default' })); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule.ruleTypeId).eql('xpack.synthetics.alerts.monitorStatus'); + expect(res.body.tlsRule.ruleTypeId).eql('xpack.synthetics.alerts.tls'); + }); + }); + + it('deletes (and recreates) the default rule when settings are updated', async () => { + const newMonitor = httpMonitorJson; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql(omitMonitorKeys(newMonitor)); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule.ruleTypeId).eql('xpack.synthetics.alerts.monitorStatus'); + expect(res.body.tlsRule.ruleTypeId).eql('xpack.synthetics.alerts.tls'); + }); + const settings = await supertest + .put(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + defaultStatusRuleEnabled: false, + defaultTLSRuleEnabled: false, + }); + + expect(settings.body.defaultStatusRuleEnabled).eql(false); + expect(settings.body.defaultTLSRuleEnabled).eql(false); + + await supertest + .put(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule).eql(null); + expect(res.body.tlsRule).eql(null); + }); + + const settings2 = await supertest + .put(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + defaultStatusRuleEnabled: true, + defaultTLSRuleEnabled: true, + }) + .expect(200); + + expect(settings2.body.defaultStatusRuleEnabled).eql(true); + expect(settings2.body.defaultTLSRuleEnabled).eql(true); + + await supertest + .put(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule.ruleTypeId).eql('xpack.synthetics.alerts.monitorStatus'); + expect(res.body.tlsRule.ruleTypeId).eql('xpack.synthetics.alerts.tls'); + }); + }); + + it('doesnt throw errors when rule has already been deleted', async () => { + const newMonitor = httpMonitorJson; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql(omitMonitorKeys(newMonitor)); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule.ruleTypeId).eql('xpack.synthetics.alerts.monitorStatus'); + expect(res.body.tlsRule.ruleTypeId).eql('xpack.synthetics.alerts.tls'); + }); + + const settings = await supertest + .put(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + defaultStatusRuleEnabled: false, + defaultTLSRuleEnabled: false, + }) + .expect(200); + + expect(settings.body.defaultStatusRuleEnabled).eql(false); + expect(settings.body.defaultTLSRuleEnabled).eql(false); + + await supertest + .put(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule).eql(null); + expect(res.body.tlsRule).eql(null); + }); + + // call api again with the same settings, make sure its 200 + await supertest + .put(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule).eql(null); + expect(res.body.tlsRule).eql(null); + }); + }); + }); +} + +const defaultAlertRules = { + statusRule: { + id: '574e82f0-1672-11ee-8e7d-c985c0ef6c2e', + notifyWhen: null, + consumer: 'uptime', + alertTypeId: 'xpack.synthetics.alerts.monitorStatus', + tags: ['SYNTHETICS_DEFAULT_ALERT'], + name: 'Synthetics status internal rule', + enabled: true, + throttle: null, + apiKeyOwner: 'any', + apiKeyCreatedByUser: true, + createdBy: 'any', + updatedBy: 'any', + muteAll: false, + mutedInstanceIds: [], + revision: 0, + running: false, + schedule: { interval: '1m' }, + actions: [], + params: {}, + snoozeSchedule: [], + updatedAt: '2023-06-29T11:44:44.488Z', + createdAt: '2023-06-29T11:44:44.488Z', + scheduledTaskId: '574e82f0-1672-11ee-8e7d-c985c0ef6c2e', + executionStatus: { + status: 'ok', + lastExecutionDate: '2023-06-29T11:47:55.331Z', + lastDuration: 64, + }, + ruleTypeId: 'xpack.synthetics.alerts.monitorStatus', + viewInAppRelativeUrl: '/app/observability/alerts/rules/574e82f0-1672-11ee-8e7d-c985c0ef6c2e', + }, + tlsRule: { + id: '574eaa00-1672-11ee-8e7d-c985c0ef6c2e', + notifyWhen: null, + consumer: 'uptime', + alertTypeId: 'xpack.synthetics.alerts.tls', + tags: ['SYNTHETICS_DEFAULT_ALERT'], + name: 'Synthetics internal TLS rule', + enabled: true, + throttle: null, + apiKeyOwner: 'elastic_admin', + apiKeyCreatedByUser: true, + createdBy: 'elastic_admin', + updatedBy: 'elastic_admin', + muteAll: false, + mutedInstanceIds: [], + revision: 0, + running: false, + schedule: { interval: '1m' }, + actions: [], + params: {}, + snoozeSchedule: [], + updatedAt: '2023-06-29T11:44:44.489Z', + createdAt: '2023-06-29T11:44:44.489Z', + scheduledTaskId: '574eaa00-1672-11ee-8e7d-c985c0ef6c2e', + executionStatus: { + status: 'ok', + lastExecutionDate: '2023-06-29T11:44:46.214Z', + lastDuration: 193, + }, + ruleTypeId: 'xpack.synthetics.alerts.tls', + viewInAppRelativeUrl: '/app/observability/alerts/rules/574e82f0-1672-11ee-8e7d-c985c0ef6c2e', + }, +}; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/browser_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/browser_monitor.json new file mode 100644 index 0000000000000..1cb2d39685bf2 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/browser_monitor.json @@ -0,0 +1,60 @@ +{ + "type": "browser", + "enabled": true, + "alert": { + "status": { + "enabled": true + } + }, + "journey_id": "", + "project_id": "", + "schedule": { + "number": "3", + "unit": "m" + }, + "service.name": "", + "config_id": "", + "tags": ["cookie-test", "browser"], + "timeout": "16", + "__ui": { + "script_source": { + "is_generated_script": false, + "file_name": "" + }, + "is_tls_enabled": false + }, + "source.inline.script": "step(\"Visit /users api route\", async () => {\\n const response = await page.goto('https://nextjs-test-synthetics.vercel.app/api/users');\\n expect(response.status()).toEqual(200);\\n});", + "source.project.content": "", + "params": "", + "screenshots": "on", + "synthetics_args": [], + "filter_journeys.match": "", + "filter_journeys.tags": [], + "ignore_https_errors": false, + "throttling": { + "value": { + "download": "5", + "latency": "20", + "upload": "3" + }, + "id": "default", + "label": "Default" + }, + "locations": ["dev"], + "name": "Test HTTP Monitor 03", + "namespace": "testnamespace", + "origin": "ui", + "form_monitor_type": "multistep", + "url.port": null, + "id": "", + "hash": "", + "playwright_options": "", + "playwright_text_assertion": "", + "ssl.certificate": "", + "ssl.certificate_authorities": "", + "ssl.supported_protocols": ["TLSv1.1", "TLSv1.2", "TLSv1.3"], + "ssl.verification_mode": "full", + "revision": 1, + "max_attempts": 2, + "labels": {} +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/http_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/http_monitor.json new file mode 100644 index 0000000000000..47d0637a7cd91 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/http_monitor.json @@ -0,0 +1,83 @@ +{ + "type": "http", + "enabled": true, + "alert": { + "status": { + "enabled": true + } + }, + "tags": [ + "tag1", + "tag2" + ], + "schedule": { + "number": "5", + "unit": "m" + }, + "service.name": "", + "config_id": "", + "timeout": "180", + "__ui": { + "is_tls_enabled": false + }, + "max_attempts": 2, + "max_redirects": "3", + "password": "test", + "urls": "https://nextjs-test-synthetics.vercel.app/api/users", + "url.port": null, + "proxy_url": "http://proxy.com", + "proxy_headers": {}, + "check.response.body.negative": [], + "check.response.body.positive": [], + "check.response.json": [], + "response.include_body": "never", + "response.include_body_max_bytes": "1024", + "check.request.headers": { + "sampleHeader": "sampleHeaderValue" + }, + "response.include_headers": true, + "check.response.status": [ + "200", + "201" + ], + "check.request.body": { + "value": "testValue", + "type": "json" + }, + "check.response.headers": {}, + "check.request.method": "", + "username": "test-username", + "ssl.certificate_authorities": "t.string", + "ssl.certificate": "t.string", + "ssl.key": "t.string", + "ssl.key_passphrase": "t.string", + "ssl.verification_mode": "certificate", + "ssl.supported_protocols": [ + "TLSv1.1", + "TLSv1.2" + ], + "name": "test-monitor-name", + "locations": [ + { + "id": "dev", + "label": "Dev Service", + "geo": { + "lat": 0, + "lon": 0 + }, + "isServiceManaged": true + } + ], + "namespace": "testnamespace", + "revision": 1, + "origin": "ui", + "form_monitor_type": "http", + "journey_id": "", + "id": "", + "hash": "", + "mode": "any", + "ipv4": true, + "ipv6": true, + "params": "", + "labels": {} +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/icmp_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/icmp_monitor.json new file mode 100644 index 0000000000000..8f97e8de7424d --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/icmp_monitor.json @@ -0,0 +1,35 @@ +{ + "type": "icmp", + "locations": ["dev"], + "journey_id": "", + "enabled": true, + "alert": { + "status": { + "enabled": true + } + }, + "schedule": { + "number": "3", + "unit": "m" + }, + "config_id": "", + "service.name": "example-service-name", + "tags": [ + "tagT1", + "tagT2" + ], + "timeout": "16", + "hosts": "192.33.22.111:3333", + "wait": "1", + "name": "Test HTTP Monitor 04", + "namespace": "testnamespace", + "origin": "ui", + "form_monitor_type": "icmp", + "id": "", + "hash": "", + "mode": "any", + "ipv4": true, + "ipv6": true, + "params": "", + "max_attempts": 2 +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/inspect_browser_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/inspect_browser_monitor.json new file mode 100644 index 0000000000000..2307e4dcbfaf8 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/inspect_browser_monitor.json @@ -0,0 +1,85 @@ +{ + "type": "browser", + "form_monitor_type": "multistep", + "enabled": true, + "alert": { + "status": { + "enabled": true + } + }, + "schedule": { + "number": "10", + "unit": "m" + }, + "service.name": "", + "config_id": "0088b13c-9bb0-4fc6-a0b5-63b9b024eabb", + "tags": [], + "timeout": null, + "name": "check if title is present", + "locations": [ + { + "id": "dev", + "label": "Dev Service", + "geo": { + "lat": 0, + "lon": 0 + }, + "isServiceManaged": true + } + ], + "namespace": "default", + "origin": "project", + "journey_id": "bb82f7de-d832-4b14-8097-38a464d5fe49", + "hash": "ekrjelkjrelkjre", + "id": "bb82f7de-d832-4b14-8097-38a464d5fe49-test-project-cb47c83a-45e7-416a-9301-cb476b5bff01-default", + "params": "", + "project_id": "test-project-cb47c83a-45e7-416a-9301-cb476b5bff01", + "playwright_options": "{\"headless\":true,\"chromiumSandbox\":false}", + "__ui": { + "script_source": { + "is_generated_script": false, + "file_name": "" + } + }, + "url.port": null, + "source.inline.script": "", + "source.project.content": "UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA", + "playwright_text_assertion": "", + "urls": "", + "screenshots": "on", + "synthetics_args": [], + "filter_journeys.match": "check if title is present", + "filter_journeys.tags": [], + "ignore_https_errors": false, + "throttling": { + "value": { + "download": "5", + "upload": "3", + "latency": "20" + }, + "id": "default", + "label": "Default" + }, + "ssl.certificate_authorities": "", + "ssl.certificate": "", + "ssl.key": "", + "ssl.key_passphrase": "", + "ssl.verification_mode": "full", + "ssl.supported_protocols": [ + "TLSv1.1", + "TLSv1.2", + "TLSv1.3" + ], + "original_space": "default", + "custom_heartbeat_id": "bb82f7de-d832-4b14-8097-38a464d5fe49-test-project-cb47c83a-45e7-416a-9301-cb476b5bff01-default", + "revision": 1, + "source.inline": { + "type": "inline", + "script": "", + "fileName": "" + }, + "service": { + "name": "" + }, + "max_attempts": 2 +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_browser_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_browser_monitor.json new file mode 100644 index 0000000000000..18cea933e7974 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_browser_monitor.json @@ -0,0 +1,30 @@ +{ + "keep_stale": true, + "project": "test-suite", + "monitors": [{ + "throttling": { + "download": 5, + "upload": 3, + "latency": 20 + }, + "schedule": 10, + "locations": [ + "dev" + ], + "params": {}, + "playwrightOptions": { + "headless": true, + "chromiumSandbox": false + }, + "name": "check if title is present", + "id": "check-if-title-is-present", + "tags": [], + "content": "UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA", + "filter": { + "match": "check if title is present" + }, + "hash": "ekrjelkjrelkjre", + "max_attempts": 2, + "type": "browser" + }] +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_http_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_http_monitor.json new file mode 100644 index 0000000000000..05e1ebed01aec --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_http_monitor.json @@ -0,0 +1,86 @@ +{ + "project": "test-suite", + "keep_stale": false, + "monitors": [ + { + "locations": ["dev"], + "type": "http", + "enabled": false, + "id": "my-monitor-2", + "name": "My Monitor 2", + "urls": [ + "http://localhost:9200", + "http://anotherurl:9200" + ], + "schedule": 60, + "timeout": "80s", + "check.request": { + "method": "POST", + "headers": { + "Content-Type": "application/x-www-form-urlencoded" + } + }, + "response": { + "include_body": "always" + }, + "response.include_headers": false, + "check.response": { + "status": [ + 200 + ], + "body": [ + "Saved", + "saved" + ] + }, + "unsupportedKey": { + "nestedUnsupportedKey": "unsupportedValue" + }, + "hash": "ekrjelkjrelkjre" + }, + { + "locations": ["dev"], + "type": "http", + "enabled": false, + "id": "my-monitor-3", + "name": "My Monitor 3", + "proxy_url": "${testGlobalParam2}", + "urls": [ + "http://localhost:9200" + ], + "schedule": 60, + "timeout": "80s", + "check.request": { + "method": "POST", + "headers": { + "Content-Type": "application/x-www-form-urlencoded" + } + }, + "response": { + "include_body": "always", + "include_body_max_bytes": 900 + }, + "tags": "tag2,tag2", + "response.include_headers": false, + "check.response": { + "status": [ + 200 + ], + "body":{ + "positive": [ + "${testLocal1}", + "saved" + ] + }, + "json": [{"description":"check status","expression":"foo.bar == \"myValue\""}] + }, + "hash": "ekrjelkjrelkjre", + "ssl.verification_mode": "strict", + "params": { + "testLocal1": "testLocalParamsValue", + "testGlobalParam2": "testGlobalParamOverwrite" + }, + "max_attempts": 2 + } + ] +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_icmp_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_icmp_monitor.json new file mode 100644 index 0000000000000..63e4215e46cca --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_icmp_monitor.json @@ -0,0 +1,47 @@ + + + +{ + "project": "test-suite", + "keep_stale": true, + "monitors": [ + { + "locations": [ "dev" ], + "type": "icmp", + "id": "Cloudflare-DNS", + "name": "Cloudflare DNS", + "hosts": [ "1.1.1.1" ], + "schedule": 1, + "tags": [ "service:smtp", "org:google" ], + "privateLocations": [ "Test private location 0" ], + "wait": "30s", + "hash": "ekrjelkjrelkjre" + }, + { + "locations": [ "dev" ], + "type": "icmp", + "id": "Cloudflare-DNS-2", + "name": "Cloudflare DNS 2", + "hosts": "1.1.1.1", + "schedule": 1, + "tags": "tag1,tag2", + "privateLocations": [ "Test private location 0" ], + "wait": "1m", + "hash": "ekrjelkjrelkjre" + }, + { + "locations": [ "dev" ], + "type": "icmp", + "id": "Cloudflare-DNS-3", + "name": "Cloudflare DNS 3", + "hosts": "1.1.1.1,2.2.2.2", + "schedule": 1, + "tags": "tag1,tag2", + "privateLocations": [ "Test private location 0" ], + "unsupportedKey": { + "nestedUnsupportedKey": "unnsuportedValue" + }, + "hash": "ekrjelkjrelkjre" + } + ] +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_tcp_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_tcp_monitor.json new file mode 100644 index 0000000000000..26382b010ec3e --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_tcp_monitor.json @@ -0,0 +1,44 @@ +{ + "project": "test-suite", + "keep_stale": true, + "monitors": [ + { + "locations": [ "dev" ], + "type": "tcp", + "id": "gmail-smtp", + "name": "GMail SMTP", + "hosts": [ "smtp.gmail.com:587" ], + "schedule": 1, + "tags": [ "service:smtp", "org:google" ], + "privateLocations": [ ], + "hash": "ekrjelkjrelkjre", + "ssl.verification_mode": "strict" + }, + { + "locations": [ "dev" ], + "type": "tcp", + "id": "always-down", + "name": "Always Down", + "hosts": "localhost:18278", + "schedule": 1, + "tags": "tag1,tag2", + "privateLocations": [ ], + "hash": "ekrjelkjrelkjre" + }, + { + "locations": [ "dev" ], + "type": "tcp", + "id": "always-down", + "name": "Always Down", + "hosts": ["localhost", "anotherhost"], + "ports": ["5698"], + "schedule": 1, + "tags": "tag1,tag2", + "privateLocations": [ ], + "unsupportedKey": { + "nestedUnsupportedKey": "unnsuportedValue" + }, + "hash": "ekrjelkjrelkjre" + } + ] +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/tcp_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/tcp_monitor.json new file mode 100644 index 0000000000000..9cc646a36c943 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/tcp_monitor.json @@ -0,0 +1,43 @@ +{ + "type": "tcp", + "locations": ["dev"], + "enabled": true, + "config_id": "", + "schedule": { + "number": "3", + "unit": "m" + }, + "service.name": "", + "tags": [], + "timeout": "16", + "__ui": { + "is_tls_enabled": true + }, + "hosts": "example-host:40", + "urls": "example-host:40", + "url.port": null, + "proxy_url": "", + "proxy_use_local_resolver": false, + "check.receive": "", + "check.send": "", + "ssl.certificate_authorities": "", + "ssl.certificate": "", + "ssl.key": "", + "ssl.key_passphrase": "examplepassphrase", + "ssl.verification_mode": "full", + "ssl.supported_protocols": [ + "TLSv1.1", + "TLSv1.3" + ], + "name": "Test HTTP Monitor 04", + "namespace": "testnamespace", + "origin": "ui", + "form_monitor_type": "tcp", + "id": "", + "hash": "", + "mode": "any", + "ipv4": true, + "ipv6": true, + "params": "", + "max_attempts": 2 +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_filters.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_filters.ts new file mode 100644 index 0000000000000..cd6f8ff2f7275 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_filters.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import expect from '@kbn/expect'; +import { PrivateLocation } from '@kbn/synthetics-plugin/common/runtime_types'; +import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('getMonitorFilters', function () { + const kibanaServer = getService('kibanaServer'); + const supertest = getService('supertestWithoutAuth'); + const samlAuth = getService('samlAuth'); + + const privateLocationTestService = new PrivateLocationTestService(getService); + + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + after(async () => { + await kibanaServer.savedObjects.clean({ types: [syntheticsMonitorType] }); + }); + + before(async () => { + await kibanaServer.savedObjects.clean({ types: [syntheticsMonitorType] }); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + privateLocation = await privateLocationTestService.addTestPrivateLocation(); + }); + + it('get list of filters', async () => { + const apiResponse = await supertest + .get(SYNTHETICS_API_URLS.FILTERS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(apiResponse.body).eql({ + monitorTypes: [], + tags: [], + locations: [], + projects: [], + schedules: [], + }); + }); + + it('get list of filters with monitorTypes', async () => { + const newMonitor = { + name: 'Sample name', + type: 'http', + urls: 'https://elastic.co', + tags: ['apm', 'synthetics'], + locations: [privateLocation], + }; + + await supertest + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(newMonitor) + .expect(200); + + const apiResponse = await supertest + .get(SYNTHETICS_API_URLS.FILTERS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(apiResponse.body).eql({ + monitorTypes: [{ label: 'http', count: 1 }], + tags: [ + { label: 'apm', count: 1 }, + { label: 'synthetics', count: 1 }, + ], + locations: [{ label: privateLocation.id, count: 1 }], + projects: [], + schedules: [{ label: '3', count: 1 }], + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor.ts new file mode 100644 index 0000000000000..93018d604c269 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor.ts @@ -0,0 +1,355 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { omit } from 'lodash'; +import moment from 'moment'; +import { v4 as uuidv4 } from 'uuid'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + EncryptedSyntheticsSavedMonitor, + MonitorFields, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { secretKeys } from '@kbn/synthetics-plugin/common/constants/monitor_management'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; +import { omitMonitorKeys } from './create_monitor'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { getFixtureJson } from './helpers/get_fixture_json'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + // Failing: See https://github.com/elastic/kibana/issues/204158 + describe.skip('getSyntheticsMonitors', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const retry = getService('retry'); + const samlAuth = getService('samlAuth'); + const monitorTestService = new SyntheticsMonitorTestService(getService); + const privateLocationTestService = new PrivateLocationTestService(getService); + + let _monitors: MonitorFields[]; + let monitors: MonitorFields[]; + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + const saveMonitor = async (monitor: MonitorFields, spaceId?: string) => { + let url = SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '?internal=true'; + if (spaceId) { + url = '/s/' + spaceId + url; + } + const res = await supertest + .post(url) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor); + + expect(res.status).eql(200, JSON.stringify(res.body)); + + return res.body as EncryptedSyntheticsSavedMonitor; + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + privateLocation = await privateLocationTestService.addTestPrivateLocation(); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + _monitors = [ + getFixtureJson('icmp_monitor'), + getFixtureJson('tcp_monitor'), + getFixtureJson('http_monitor'), + getFixtureJson('browser_monitor'), + ].map((mon) => ({ + ...mon, + locations: [privateLocation], + })); + }); + + beforeEach(() => { + monitors = _monitors; + }); + + // FLAKY: https://github.com/elastic/kibana/issues/204069 + describe.skip('get many monitors', () => { + it('without params', async () => { + const uuid = uuidv4(); + const [mon1, mon2] = await Promise.all( + monitors.map((mon, i) => saveMonitor({ ...mon, name: `${mon.name}-${uuid}-${i}` })) + ); + + const apiResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '?perPage=1000&internal=true') // 1000 to sort of load all saved monitors + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const found: MonitorFields[] = apiResponse.body.monitors.filter(({ id }: MonitorFields) => + [mon1.id, mon2.id].includes(id) + ); + found.sort(({ id: a }) => (a === mon2.id ? 1 : a === mon1.id ? -1 : 0)); + const foundMonitors = found.map( + (fields) => fields as unknown as EncryptedSyntheticsSavedMonitor + ); + + const expected = [mon1, mon2]; + + /** + * These dates are dynamically generated by the server, so we can't + * compare them directly. Instead, we'll just check that they're valid. + */ + foundMonitors.forEach(({ updated_at: updatedAt, created_at: createdAt }) => { + expect(moment(createdAt).isValid()).to.be(true); + expect(moment(updatedAt).isValid()).to.be(true); + }); + + expect(foundMonitors.map((fm) => omit(fm, 'updated_at', 'created_at', 'spaceId'))).eql( + expected.map((expectedMon) => + omit(expectedMon, ['updated_at', 'created_at', ...secretKeys]) + ) + ); + }); + + it('with page params', async () => { + const allMonitors = [...monitors, ...monitors]; + for (const mon of allMonitors) { + await saveMonitor({ ...mon, name: mon.name + Date.now() }); + } + + await retry.try(async () => { + const firstPageResp = await supertest + .get(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=2`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondPageResp = await supertest + .get(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=2&perPage=3`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(firstPageResp.body.total).greaterThan(6); + expect(firstPageResp.body.monitors.length).eql(2); + expect(secondPageResp.body.monitors.length).eql(3); + + expect(firstPageResp.body.monitors[0].id).not.eql(secondPageResp.body.monitors[0].id); + }); + }); + + it('with single monitorQueryId filter', async () => { + const uuid = uuidv4(); + const [_, { id: id2 }] = await Promise.all( + monitors + .map((mon, i) => ({ ...mon, name: `mon.name-${uuid}-${i}` })) + .map((mon) => saveMonitor(mon)) + ); + + const resp = await supertest + .get( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=10&monitorQueryIds=${id2}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const resultMonitorIds = resp.body.monitors.map(({ id }: Partial) => id); + expect(resultMonitorIds.length).eql(1); + expect(resultMonitorIds).eql([id2]); + }); + + it('with multiple monitorQueryId filter', async () => { + const uuid = uuidv4(); + const [_, { id: id2 }, { id: id3 }] = await Promise.all( + monitors + .map((mon, i) => ({ ...mon, name: `${mon.name}-${uuid}-${i}` })) + .map((monT) => saveMonitor(monT)) + ); + + const resp = await supertest + .get( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=10&sortField=name.keyword&sortOrder=asc&monitorQueryIds=${id2}&monitorQueryIds=${id3}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const resultMonitorIds = resp.body.monitors.map(({ id }: Partial) => id); + + expect(resultMonitorIds.length).eql(2); + expect(resultMonitorIds).eql([id2, id3]); + }); + + it('monitorQueryId respects custom_heartbeat_id while filtering', async () => { + const customHeartbeatId0 = 'custom-heartbeat-id-test-01'; + const customHeartbeatId1 = 'custom-heartbeat-id-test-02'; + await Promise.all( + [ + { + ...monitors[0], + [ConfigKey.CUSTOM_HEARTBEAT_ID]: customHeartbeatId0, + [ConfigKey.NAME]: `NAME-${customHeartbeatId0}`, + }, + { + ...monitors[1], + [ConfigKey.CUSTOM_HEARTBEAT_ID]: customHeartbeatId1, + [ConfigKey.NAME]: `NAME-${customHeartbeatId1}`, + }, + ].map((monT) => saveMonitor(monT)) + ); + + const resp = await supertest + .get( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=10&sortField=name.keyword&sortOrder=asc&monitorQueryIds=${customHeartbeatId0}&monitorQueryIds=${customHeartbeatId1}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const resultMonitorIds = resp.body.monitors + .map(({ id }: Partial) => id) + .filter((id: string, index: number, arr: string[]) => arr.indexOf(id) === index); // Filter only unique + expect(resultMonitorIds.length).eql(2); + expect(resultMonitorIds).eql([customHeartbeatId0, customHeartbeatId1]); + }); + + it('gets monitors from all spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await privateLocationTestService.addTestPrivateLocation( + SPACE_ID + ); + + const allMonitors = [...monitors, ...monitors]; + for (const mon of allMonitors) { + await saveMonitor( + { ...mon, name: mon.name + Date.now(), locations: [spaceScopedPrivateLocation] }, + SPACE_ID + ); + } + + const firstPageResp = await supertest + .get(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=1000`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const defaultSpaceMons = firstPageResp.body.monitors.filter( + ({ spaceId }: { spaceId: string }) => spaceId === 'default' + ); + const testSpaceMons = firstPageResp.body.monitors.filter( + ({ spaceId }: { spaceId: string }) => spaceId === SPACE_ID + ); + + expect(defaultSpaceMons.length).to.eql(22); + expect(testSpaceMons.length).to.eql(0); + + const res = await supertest + .get( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=1000&showFromAllSpaces=true` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const defaultSpaceMons1 = res.body.monitors.filter( + ({ spaceId }: { spaceId: string }) => spaceId === 'default' + ); + const testSpaceMons1 = res.body.monitors.filter( + ({ spaceId }: { spaceId: string }) => spaceId === SPACE_ID + ); + + expect(defaultSpaceMons1.length).to.eql(22); + expect(testSpaceMons1.length).to.eql(8); + }); + }); + + describe('get one monitor', () => { + it('should get by id', async () => { + const uuid = uuidv4(); + const [{ id: id1 }] = await Promise.all( + monitors + .map((mon, i) => ({ ...mon, name: `${mon.name}-${uuid}-${i}` })) + .map((monT) => saveMonitor(monT)) + ); + + const apiResponse = await monitorTestService.getMonitor(id1, { user: editorUser }); + + expect(apiResponse.body).eql( + omitMonitorKeys({ + ...monitors[0], + [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, + [ConfigKey.CONFIG_ID]: apiResponse.body.id, + revision: 1, + locations: [privateLocation], + name: `${monitors[0].name}-${uuid}-0`, + }) + ); + }); + + it('should get by id with ui query param', async () => { + const uuid = uuidv4(); + const [{ id: id1 }] = await Promise.all( + monitors + .map((mon, i) => ({ ...mon, name: `${mon.name}-${uuid}-${i}` })) + .map((monT) => saveMonitor(monT)) + ); + + const apiResponse = await monitorTestService.getMonitor(id1, { + internal: true, + user: editorUser, + }); + + expect(apiResponse.body).eql( + omit( + { + ...monitors[0], + form_monitor_type: 'icmp', + revision: 1, + locations: [privateLocation], + name: `${monitors[0].name}-${uuid}-0`, + hosts: '192.33.22.111:3333', + hash: '', + journey_id: '', + max_attempts: 2, + labels: {}, + }, + ['config_id', 'id', 'form_monitor_type'] + ) + ); + }); + + it('returns 404 if monitor id is not found', async () => { + const invalidMonitorId = 'invalid-id'; + const expected404Message = `Monitor id ${invalidMonitorId} not found!`; + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace('{monitorId}', invalidMonitorId)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(404); + + expect(getResponse.body.message).eql(expected404Message); + }); + + it('validates param length', async () => { + const veryLargeMonId = new Array(1050).fill('1').join(''); + + await supertest + .get(SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace('{monitorId}', veryLargeMonId)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(400); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor_project.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor_project.ts new file mode 100644 index 0000000000000..0678731a4202e --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor_project.ts @@ -0,0 +1,741 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { v4 as uuidv4 } from 'uuid'; +import type SuperTest from 'supertest'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + LegacyProjectMonitorsRequest, + ProjectMonitor, + ProjectMonitorMetaData, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('GetProjectMonitors', function () { + const supertest = getService('supertestWithoutAuth'); + const samlAuth = getService('samlAuth'); + + let projectMonitors: LegacyProjectMonitorsRequest; + let httpProjectMonitors: LegacyProjectMonitorsRequest; + let tcpProjectMonitors: LegacyProjectMonitorsRequest; + let icmpProjectMonitors: LegacyProjectMonitorsRequest; + let testPolicyId = ''; + let editorUser: RoleCredentials; + let testPrivateLocations: PrivateLocation[] = []; + + const testPrivateLocationsService = new PrivateLocationTestService(getService); + + const setUniqueIds = ( + request: LegacyProjectMonitorsRequest, + privateLocations: PrivateLocation[] = [] + ) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ + ...monitor, + id: uuidv4(), + locations: [], + privateLocations: privateLocations.map((location) => location.label), + })), + }; + }; + + before(async () => { + await testPrivateLocationsService.installSyntheticsPackage(); + + const testPolicyName = 'Fleet test server policy' + Date.now(); + const apiResponse = await testPrivateLocationsService.addFleetPolicy(testPolicyName); + testPolicyId = apiResponse.body.item.id; + testPrivateLocations = await testPrivateLocationsService.setTestLocations([testPolicyId]); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(() => { + projectMonitors = setUniqueIds( + getFixtureJson('project_browser_monitor'), + testPrivateLocations + ); + httpProjectMonitors = setUniqueIds( + getFixtureJson('project_http_monitor'), + testPrivateLocations + ); + tcpProjectMonitors = setUniqueIds( + getFixtureJson('project_tcp_monitor'), + testPrivateLocations + ); + icmpProjectMonitors = setUniqueIds( + getFixtureJson('project_icmp_monitor'), + testPrivateLocations + ); + }); + + it('project monitors - fetches all monitors - browser', async () => { + const monitors = []; + const project = 'test-brower-suite'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...projectMonitors.monitors[0], + id: `test browser id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + const firstPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ per_page: 500 }) + .send() + .expect(200); + + const { monitors: firstPageMonitors, total, after_key: afterKey } = firstPageResponse.body; + expect(firstPageMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test browser id 548'); + + const secondPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageMonitors } = secondPageResponse.body; + expect(secondPageMonitors.length).to.eql(100); + checkFields([...firstPageMonitors, ...secondPageMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - fetches all monitors - http', async () => { + const monitors = []; + const project = 'test-http-suite'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...httpProjectMonitors.monitors[1], + id: `test http id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + const firstPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ per_page: 500 }) + .send() + .expect(200); + + const { + monitors: firstPageProjectMonitors, + after_key: afterKey, + total, + } = firstPageResponse.body; + expect(firstPageProjectMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test http id 548'); + + const secondPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageProjectMonitors } = secondPageResponse.body; + expect(secondPageProjectMonitors.length).to.eql(100); + checkFields([...firstPageProjectMonitors, ...secondPageProjectMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - fetches all monitors - tcp', async () => { + const monitors = []; + const project = 'test-tcp-suite'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...tcpProjectMonitors.monitors[0], + id: `test tcp id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + const firstPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .query({ per_page: 500 }) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const { + monitors: firstPageProjectMonitors, + after_key: afterKey, + total, + } = firstPageResponse.body; + expect(firstPageProjectMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test tcp id 548'); + + const secondPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageProjectMonitors } = secondPageResponse.body; + expect(secondPageProjectMonitors.length).to.eql(100); + checkFields([...firstPageProjectMonitors, ...secondPageProjectMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - fetches all monitors - icmp', async () => { + const monitors = []; + const project = 'test-icmp-suite'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...icmpProjectMonitors.monitors[0], + id: `test icmp id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + const firstPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .query({ per_page: 500 }) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const { + monitors: firstPageProjectMonitors, + after_key: afterKey, + total, + } = firstPageResponse.body; + expect(firstPageProjectMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test icmp id 548'); + + const secondPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageProjectMonitors } = secondPageResponse.body; + expect(secondPageProjectMonitors.length).to.eql(100); + + checkFields([...firstPageProjectMonitors, ...secondPageProjectMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - handles url ecoded project names', async () => { + const monitors = []; + const projectName = 'Test project'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...icmpProjectMonitors.monitors[0], + id: `test url id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + projectName + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + projectName + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + projectName + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + const firstPageResponse = await supertest + .get( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .query({ per_page: 500 }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const { + monitors: firstPageProjectMonitors, + after_key: afterKey, + total, + } = firstPageResponse.body; + expect(firstPageProjectMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test url id 548'); + + const secondPageResponse = await supertest + .get( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageProjectMonitors } = secondPageResponse.body; + expect(secondPageProjectMonitors.length).to.eql(100); + + checkFields([...firstPageProjectMonitors, ...secondPageProjectMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - handles per_page parameter', async () => { + const monitors = []; + const project = 'test-suite'; + const perPage = 250; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...icmpProjectMonitors.monitors[0], + id: `test-id-${i}`, + name: `test-name-${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + let count = Number.MAX_VALUE; + let afterId; + const fullResponse: ProjectMonitorMetaData[] = []; + let page = 1; + while (count >= 250) { + const response: SuperTest.Response = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + per_page: perPage, + search_after: afterId, + }) + .send() + .expect(200); + + const { monitors: monitorsResponse, after_key: afterKey, total } = response.body; + expect(total).to.eql(600); + count = monitorsResponse.length; + fullResponse.push(...monitorsResponse); + if (page < 3) { + expect(count).to.eql(perPage); + } else { + expect(count).to.eql(100); + } + page++; + + afterId = afterKey; + } + // expect(fullResponse.length).to.eql(600); + // checkFields(fullResponse, monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + }); +} + +const checkFields = (monitorMetaData: ProjectMonitorMetaData[], monitors: ProjectMonitor[]) => { + monitors.forEach((monitor) => { + const configIsCorrect = monitorMetaData.some((ndjson: Record) => { + return ndjson.journey_id === monitor.id && ndjson.hash === monitor.hash; + }); + expect(configIsCorrect).to.eql(true); + }); +}; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/get_fixture_json.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/get_fixture_json.ts new file mode 100644 index 0000000000000..9cc1640b7a583 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/get_fixture_json.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import fs from 'fs'; +import { join } from 'path'; + +const fixturesDir = join(__dirname, '..', 'fixtures'); + +export function getFixtureJson(fixtureName: string) { + try { + const fixturePath = join(fixturesDir, `${fixtureName}.json`); + const fileContents = fs.readFileSync(fixturePath, 'utf8'); + return JSON.parse(fileContents); + } catch (e) { + return {}; + } +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/monitor.ts new file mode 100644 index 0000000000000..8c10fa78d9834 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/monitor.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { omit } from 'lodash'; + +export function omitResponseTimestamps(monitor: object) { + return omit(monitor, ['created_at', 'updated_at']); +} + +export function omitEmptyValues(monitor: object) { + const { url, ...rest } = omit(monitor, ['created_at', 'updated_at']) as any; + + return { + ...rest, + ...(url ? { url } : {}), + }; +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/index.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/index.ts new file mode 100644 index 0000000000000..c15f73cf4e6db --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/index.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) { + describe('SyntheticsAPITests', () => { + loadTestFile(require.resolve('./create_monitor')); + loadTestFile(require.resolve('./create_monitor_private_location')); + loadTestFile(require.resolve('./create_monitor_project')); + loadTestFile(require.resolve('./create_monitor_project_private_location')); + loadTestFile(require.resolve('./create_monitor_public_api')); + loadTestFile(require.resolve('./create_update_params')); + loadTestFile(require.resolve('./delete_monitor_project')); + loadTestFile(require.resolve('./delete_monitor')); + loadTestFile(require.resolve('./edit_monitor')); + loadTestFile(require.resolve('./edit_monitor_public_api')); + loadTestFile(require.resolve('./enable_default_alerting')); + loadTestFile(require.resolve('./get_filters')); + loadTestFile(require.resolve('./get_monitor_project')); + loadTestFile(require.resolve('./get_monitor')); + loadTestFile(require.resolve('./synthetics_enablement')); + loadTestFile(require.resolve('./inspect_monitor')); + loadTestFile(require.resolve('./suggestions.ts')); + loadTestFile(require.resolve('./sync_global_params')); + loadTestFile(require.resolve('./test_now_monitor')); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/inspect_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/inspect_monitor.ts new file mode 100644 index 0000000000000..99788e2b0d0fc --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/inspect_monitor.ts @@ -0,0 +1,246 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { MonitorFields } from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import rawExpect from 'expect'; +import expect from '@kbn/expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('inspectSyntheticsMonitor', function () { + const supertest = getService('supertestWithoutAuth'); + + const monitorTestService = new SyntheticsMonitorTestService(getService); + const testPrivateLocations = new PrivateLocationTestService(getService); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + let _monitors: MonitorFields[]; + let editorUser: RoleCredentials; + let adminUser: RoleCredentials; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await kibanaServer.savedObjects.clean({ types: ['synthetics-param'] }); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + adminUser = await samlAuth.createM2mApiKeyWithRoleScope('admin'); + await testPrivateLocations.installSyntheticsPackage(); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + _monitors = [getFixtureJson('http_monitor'), getFixtureJson('inspect_browser_monitor')]; + }); + + // tests public locations which fails in MKI + it.skip('inspect http monitor', async () => { + const apiResponse = await monitorTestService.inspectMonitor(adminUser, { + ..._monitors[0], + locations: [ + { + id: 'dev', + label: 'Dev Service', + isServiceManaged: true, + }, + ], + }); + + rawExpect(apiResponse).toEqual({ + result: { + publicConfigs: [ + rawExpect.objectContaining({ + monitors: [ + { + type: 'http', + schedule: '@every 5m', + enabled: true, + data_stream: { namespace: 'testnamespace' }, + streams: [ + { + data_stream: { dataset: 'http', type: 'synthetics' }, + type: 'http', + enabled: true, + schedule: '@every 5m', + tags: ['tag1', 'tag2'], + timeout: '180s', + name: 'test-monitor-name', + namespace: 'testnamespace', + origin: 'ui', + urls: 'https://nextjs-test-synthetics.vercel.app/api/users', + max_redirects: '3', + max_attempts: 2, + password: 'test', + proxy_url: 'http://proxy.com', + 'response.include_body': 'never', + 'response.include_headers': true, + 'check.response.status': ['200', '201'], + 'check.request.body': 'testValue', + 'check.request.headers': { sampleHeader: 'sampleHeaderValue' }, + username: 'test-username', + mode: 'any', + 'response.include_body_max_bytes': '1024', + ipv4: true, + ipv6: true, + fields: { + meta: { space_id: 'default' }, + }, + fields_under_root: true, + }, + ], + }, + ], + output: { hosts: [] }, + }), + ], + privateConfig: null, + }, + decodedCode: '', + }); + }); + + // tests public locations which fails in MKI + it.skip('inspect project browser monitor', async () => { + const apiResponse = await monitorTestService.inspectMonitor(editorUser, { + ..._monitors[1], + params: JSON.stringify({ + username: 'elastic', + password: 'changeme', + }), + locations: [ + { + id: 'dev', + label: 'Dev Service', + isServiceManaged: true, + }, + ], + }); + rawExpect(apiResponse).toEqual({ + result: { + publicConfigs: [ + rawExpect.objectContaining({ + monitors: [ + { + type: 'browser', + schedule: '@every 10m', + enabled: true, + data_stream: { namespace: 'default' }, + streams: [ + { + data_stream: { dataset: 'browser', type: 'synthetics' }, + type: 'browser', + enabled: true, + schedule: '@every 10m', + name: 'check if title is present', + namespace: 'default', + origin: 'project', + params: { + username: '"********"', + password: '"********"', + }, + playwright_options: { headless: true, chromiumSandbox: false }, + 'source.project.content': + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + screenshots: 'on', + 'filter_journeys.match': 'check if title is present', + ignore_https_errors: false, + throttling: { download: 5, upload: 3, latency: 20 }, + original_space: 'default', + fields: { + meta: { space_id: 'default' }, + 'monitor.project.name': 'test-project-cb47c83a-45e7-416a-9301-cb476b5bff01', + 'monitor.project.id': 'test-project-cb47c83a-45e7-416a-9301-cb476b5bff01', + }, + fields_under_root: true, + max_attempts: 2, + }, + ], + }, + ], + license_level: rawExpect.any(String), + cloud_id: 'ftr_fake_cloud_id', + output: { hosts: [] }, + }), + ], + privateConfig: null, + }, + decodedCode: + '// asset:/Users/vigneshh/elastic/synthetics/examples/todos/basic.journey.ts\nimport { journey, step, expect } from "@elastic/synthetics";\njourney("check if title is present", ({ page, params }) => {\n step("launch app", async () => {\n await page.goto(params.url);\n });\n step("assert title", async () => {\n const header = await page.$("h1");\n expect(await header.textContent()).toBe("todos");\n });\n});\n', + }); + }); + + it('inspect http monitor in private location', async () => { + const location = await testPrivateLocations.addTestPrivateLocation(); + const apiResponse = await monitorTestService.inspectMonitor(editorUser, { + ..._monitors[0], + locations: [ + { + id: location.id, + label: location.label, + isServiceManaged: false, + }, + ], + }); + + const privateConfig = apiResponse.result.privateConfig!; + + const enabledStream = privateConfig.inputs + .find((input) => input.enabled) + ?.streams.find((stream) => stream.enabled); + + const compiledStream = enabledStream?.compiled_stream; + + delete compiledStream.id; + delete compiledStream.processors[0].add_fields.fields.config_id; + + expect(enabledStream?.compiled_stream).eql({ + __ui: { is_tls_enabled: false }, + type: 'http', + name: 'test-monitor-name', + origin: 'ui', + 'run_from.id': location.id, + 'run_from.geo.name': location.label, + enabled: true, + urls: 'https://nextjs-test-synthetics.vercel.app/api/users', + schedule: '@every 5m', + timeout: '180s', + max_redirects: 3, + max_attempts: 2, + proxy_url: 'http://proxy.com', + tags: ['tag1', 'tag2'], + username: 'test-username', + password: 'test', + 'response.include_headers': true, + 'response.include_body': 'never', + 'response.include_body_max_bytes': 1024, + 'check.request.method': null, + 'check.request.headers': { sampleHeader: 'sampleHeaderValue' }, + 'check.request.body': 'testValue', + 'check.response.status': ['200', '201'], + mode: 'any', + ipv4: true, + ipv6: true, + processors: [ + { + add_fields: { + target: '', + fields: { + meta: { space_id: 'default' }, + 'monitor.fleet_managed': true, + }, + }, + }, + ], + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_policy.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_policy.ts new file mode 100644 index 0000000000000..338d666d35517 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_policy.ts @@ -0,0 +1,575 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import expect from 'expect'; +import { omit, sortBy } from 'lodash'; +import { PackagePolicy, PackagePolicyConfigRecord } from '@kbn/fleet-plugin/common'; +import { INSTALLED_VERSION } from '../../../../services/synthetics_private_location'; +import { commonVars } from './test_project_monitor_policy'; + +interface PolicyProps { + name?: string; + id: string; + configId?: string; + projectId?: string; + location: { name?: string; id?: string }; + namespace?: string; + isTLSEnabled?: boolean; + proxyUrl?: string; + params?: Record; + isBrowser?: boolean; + spaceId?: string; +} + +export const getTestSyntheticsPolicy = (props: PolicyProps): PackagePolicy => { + const { namespace } = props; + return { + id: '2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + version: 'WzE2MjYsMV0=', + name: 'test-monitor-name-Test private location 0-default', + namespace: namespace ?? 'testnamespace', + package: { name: 'synthetics', title: 'Elastic Synthetics', version: INSTALLED_VERSION }, + enabled: true, + policy_id: '5347cd10-0368-11ed-8df7-a7424c6f5167', + policy_ids: ['5347cd10-0368-11ed-8df7-a7424c6f5167'], + inputs: [ + getHttpInput(props), + { + type: 'synthetics/tcp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'tcp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'tcp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + proxy_url: { type: 'text' }, + processors: { type: 'yaml' }, + proxy_use_local_resolver: { value: false, type: 'bool' }, + tags: { type: 'yaml' }, + 'check.send': { type: 'text' }, + 'check.receive': { type: 'text' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_name: { value: 'Fleet managed', type: 'text' }, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: 'synthetics/tcp-tcp-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + }, + ], + }, + { + type: 'synthetics/icmp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'icmp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'icmp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + wait: { value: '1s', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + location_name: { value: 'Fleet managed', type: 'text' }, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: 'synthetics/icmp-icmp-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + }, + ], + }, + getBrowserInput(props), + ], + is_managed: true, + revision: 1, + created_at: '2022-08-23T14:09:17.176Z', + created_by: 'system', + updated_at: '2022-08-23T14:09:17.176Z', + updated_by: 'system', + }; +}; + +export const getHttpInput = ({ + projectId, + id, + location, + proxyUrl, + isTLSEnabled, + isBrowser, + spaceId, + namespace, + name = 'check if title is present-Test private location 0', +}: PolicyProps) => { + const enabled = !isBrowser; + const baseVars: PackagePolicyConfigRecord = { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'http', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + urls: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + max_redirects: { type: 'integer' }, + proxy_url: { type: 'text' }, + processors: { type: 'yaml' }, + proxy_headers: { type: 'yaml' }, + tags: { type: 'yaml' }, + username: { type: 'text' }, + password: { type: 'password' }, + 'response.include_headers': { type: 'bool' }, + 'response.include_body': { type: 'text' }, + 'response.include_body_max_bytes': { type: 'text' }, + 'check.request.method': { type: 'text' }, + 'check.request.headers': { type: 'yaml' }, + 'check.request.body': { type: 'yaml' }, + 'check.response.status': { type: 'yaml' }, + 'check.response.headers': { type: 'yaml' }, + 'check.response.body.positive': { type: 'yaml' }, + 'check.response.body.negative': { type: 'yaml' }, + 'check.response.json': { type: 'yaml' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }; + + const enabledVars = { + __ui: { + value: `{"is_tls_enabled":${isTLSEnabled || false}}`, + type: 'yaml', + }, + enabled: { value: true, type: 'bool' }, + type: { value: 'http', type: 'text' }, + name: { value: JSON.stringify(name), type: 'text' }, + schedule: { value: '"@every 5m"', type: 'text' }, + urls: { value: '"https://nextjs-test-synthetics.vercel.app/api/users"', type: 'text' }, + 'service.name': { value: null, type: 'text' }, + timeout: { value: '180s', type: 'text' }, + max_redirects: { value: '3', type: 'integer' }, + processors: { + type: 'yaml', + value: JSON.stringify([ + { + add_fields: { + fields: { + 'monitor.fleet_managed': true, + config_id: id, + meta: { space_id: spaceId ?? 'default' }, + 'monitor.project.name': projectId, + 'monitor.project.id': projectId, + }, + target: '', + }, + }, + ]), + }, + proxy_url: { value: proxyUrl ?? '"http://proxy.com"', type: 'text' }, + proxy_headers: { value: null, type: 'yaml' }, + tags: { value: '["tag1","tag2"]', type: 'yaml' }, + username: { value: '"test-username"', type: 'text' }, + password: { value: '"test"', type: 'password' }, + 'response.include_headers': { value: true, type: 'bool' }, + 'response.include_body': { value: 'never', type: 'text' }, + 'response.include_body_max_bytes': { value: '1024', type: 'text' }, + 'check.request.method': { value: '', type: 'text' }, + 'check.request.headers': { + value: '{"sampleHeader":"sampleHeaderValue"}', + type: 'yaml', + }, + 'check.request.body': { value: '"testValue"', type: 'yaml' }, + 'check.response.status': { value: '["200","201"]', type: 'yaml' }, + 'check.response.headers': { value: null, type: 'yaml' }, + 'check.response.body.positive': { value: null, type: 'yaml' }, + 'check.response.body.negative': { value: null, type: 'yaml' }, + 'check.response.json': { value: null, type: 'yaml' }, + 'ssl.certificate_authorities': { + value: isTLSEnabled ? '"t.string"' : null, + type: 'yaml', + }, + 'ssl.certificate': { value: isTLSEnabled ? '"t.string"' : null, type: 'yaml' }, + 'ssl.key': { value: isTLSEnabled ? '"t.string"' : null, type: 'yaml' }, + 'ssl.key_passphrase': { value: isTLSEnabled ? 't.string' : null, type: 'text' }, + 'ssl.verification_mode': { value: isTLSEnabled ? 'certificate' : null, type: 'text' }, + 'ssl.supported_protocols': { + value: isTLSEnabled ? '["TLSv1.1","TLSv1.2"]' : null, + type: 'yaml', + }, + location_id: { + type: 'text', + value: location.id ?? 'aaa3c150-f94d-11ed-9895-d36d5472fafd', + }, + location_name: { + value: JSON.stringify(location.name) ?? '"Test private location 0"', + type: 'text', + }, + ...commonVars, + id: { value: JSON.stringify(id), type: 'text' }, + origin: { value: projectId ? 'project' : 'ui', type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text', value: 'any' }, + }; + + const compiledHttpStream = { + __ui: { + is_tls_enabled: isTLSEnabled || false, + }, + type: 'http', + name, + id, + origin: projectId ? 'project' : 'ui', + enabled: true, + urls: 'https://nextjs-test-synthetics.vercel.app/api/users', + schedule: '@every 5m', + timeout: '180s', + max_redirects: 3, + max_attempts: 2, + proxy_url: proxyUrl ?? 'http://proxy.com', + tags: ['tag1', 'tag2'], + username: 'test-username', + password: 'test', + 'run_from.geo.name': location?.name ?? 'Test private location 0', + 'run_from.id': location?.id ?? 'Test private location 0', + 'response.include_headers': true, + 'response.include_body': 'never', + 'response.include_body_max_bytes': 1024, + 'check.request.method': null, + 'check.request.headers': { sampleHeader: 'sampleHeaderValue' }, + 'check.request.body': 'testValue', + 'check.response.status': ['200', '201'], + ipv4: true, + ipv6: true, + mode: 'any', + ...(isTLSEnabled + ? { + 'ssl.certificate': 't.string', + 'ssl.certificate_authorities': 't.string', + 'ssl.key': 't.string', + 'ssl.key_passphrase': 't.string', + 'ssl.verification_mode': 'certificate', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2'], + } + : {}), + processors: [ + { + add_fields: { + fields: { + config_id: id, + meta: { + space_id: spaceId ?? 'default', + }, + 'monitor.fleet_managed': true, + ...(projectId + ? { 'monitor.project.id': projectId, 'monitor.project.name': projectId } + : {}), + }, + target: '', + }, + }, + ], + }; + + return { + type: 'synthetics/http', + policy_template: 'synthetics', + enabled, + streams: [ + { + enabled, + data_stream: { + type: 'synthetics', + dataset: 'http', + ...(enabled + ? { + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + } + : {}), + }, + vars: enabled ? enabledVars : baseVars, + id: 'synthetics/http-http-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + ...(enabled ? { compiled_stream: compiledHttpStream } : {}), + }, + ], + }; +}; + +export const getBrowserInput = ({ id, params, isBrowser, projectId }: PolicyProps) => { + const compiledBrowser = isBrowser + ? { + __ui: { + script_source: { is_generated_script: false, file_name: '' }, + is_tls_enabled: false, + }, + type: 'browser', + name: 'Test HTTP Monitor 03', + id, + origin: 'ui', + 'run_from.id': 'Test private location 0', + 'run_from.geo.name': 'Test private location 0', + enabled: true, + schedule: '@every 3m', + timeout: '16s', + throttling: { download: 5, upload: 3, latency: 20 }, + tags: ['cookie-test', 'browser'], + 'source.inline.script': + 'step("Visit /users api route", async () => {\\n const response = await page.goto(\'https://nextjs-test-synthetics.vercel.app/api/users\');\\n expect(response.status()).toEqual(200);\\n});', + ...(params ? { params } : {}), + screenshots: 'on', + processors: [ + { + add_fields: { + target: '', + fields: { + 'monitor.fleet_managed': true, + config_id: id, + }, + }, + }, + ], + } + : { + __ui: null, + type: 'browser', + name: null, + enabled: true, + schedule: '@every 3m', + 'run_from.id': 'Fleet managed', + 'run_from.geo.name': 'Fleet managed', + timeout: null, + throttling: null, + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }; + + const browserVars = isBrowser + ? { + __ui: { + value: + '{"script_source":{"is_generated_script":false,"file_name":""},"is_tls_enabled":false}', + type: 'yaml', + }, + enabled: { value: true, type: 'bool' }, + type: { value: 'browser', type: 'text' }, + name: { value: 'Test HTTP Monitor 03', type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + 'service.name': { value: '', type: 'text' }, + timeout: { value: '16s', type: 'text' }, + tags: { value: '["cookie-test","browser"]', type: 'yaml' }, + 'source.zip_url.url': { type: 'text' }, + 'source.zip_url.username': { type: 'text' }, + 'source.zip_url.folder': { type: 'text' }, + 'source.zip_url.password': { type: 'password' }, + 'source.inline.script': { + value: + '"step(\\"Visit /users api route\\", async () => {\\\\n const response = await page.goto(\'https://nextjs-test-synthetics.vercel.app/api/users\');\\\\n expect(response.status()).toEqual(200);\\\\n});"', + type: 'yaml', + }, + 'source.project.content': { value: '', type: 'text' }, + params: { value: params ? JSON.stringify(params) : '', type: 'yaml' }, + playwright_options: { value: '', type: 'yaml' }, + screenshots: { value: 'on', type: 'text' }, + synthetics_args: { value: null, type: 'text' }, + ignore_https_errors: { value: false, type: 'bool' }, + 'throttling.config': { + value: JSON.stringify({ download: 5, upload: 3, latency: 20 }), + type: 'text', + }, + 'filter_journeys.tags': { value: null, type: 'yaml' }, + 'filter_journeys.match': { value: null, type: 'text' }, + 'source.zip_url.ssl.certificate_authorities': { type: 'yaml' }, + 'source.zip_url.ssl.certificate': { type: 'yaml' }, + 'source.zip_url.ssl.key': { type: 'yaml' }, + 'source.zip_url.ssl.key_passphrase': { type: 'text' }, + 'source.zip_url.ssl.verification_mode': { type: 'text' }, + 'source.zip_url.ssl.supported_protocols': { type: 'yaml' }, + 'source.zip_url.proxy_url': { type: 'text' }, + location_id: { + type: 'text', + value: 'fleet_managed', + }, + location_name: { value: 'Test private location 0', type: 'text' }, + id: { value: id, type: 'text' }, + origin: { value: 'ui', type: 'text' }, + } + : { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'browser', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + 'source.zip_url.url': { type: 'text' }, + 'source.zip_url.username': { type: 'text' }, + 'source.zip_url.folder': { type: 'text' }, + 'source.zip_url.password': { type: 'password' }, + 'source.inline.script': { type: 'yaml' }, + 'source.project.content': { type: 'text' }, + params: { type: 'yaml' }, + playwright_options: { type: 'yaml' }, + screenshots: { type: 'text' }, + synthetics_args: { type: 'text' }, + ignore_https_errors: { type: 'bool' }, + 'throttling.config': { type: 'text' }, + 'filter_journeys.tags': { type: 'yaml' }, + 'filter_journeys.match': { type: 'text' }, + 'source.zip_url.ssl.certificate_authorities': { type: 'yaml' }, + 'source.zip_url.ssl.certificate': { type: 'yaml' }, + 'source.zip_url.ssl.key': { type: 'yaml' }, + 'source.zip_url.ssl.key_passphrase': { type: 'text' }, + 'source.zip_url.ssl.verification_mode': { type: 'text' }, + 'source.zip_url.ssl.supported_protocols': { type: 'yaml' }, + 'source.zip_url.proxy_url': { type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + location_id: { value: 'Fleet managed', type: 'text' }, + id: { type: 'text' }, + origin: { type: 'text' }, + }; + + return { + type: 'synthetics/browser', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: true, + data_stream: getDataStream('browser'), + vars: browserVars, + id: 'synthetics/browser-browser-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + compiled_stream: compiledBrowser, + }, + { + enabled: true, + data_stream: getDataStream('browser.network'), + id: 'synthetics/browser-browser.network-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + { + enabled: true, + data_stream: getDataStream('browser.screenshot'), + id: 'synthetics/browser-browser.screenshot-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + ], + }; +}; + +export const getDataStream = (dataset: string) => ({ + dataset, + type: 'synthetics', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, +}); + +export const omitIds = (policy: PackagePolicy) => { + policy.inputs = sortBy(policy.inputs, 'type'); + + policy.inputs.forEach((input) => { + input.streams = sortBy(input.streams, 'data_stream.dataset'); + input.streams.forEach((stream) => { + stream.id = ''; + }); + }); + + return omit(policy, ignoreTestFields); +}; + +export const comparePolicies = (aPolicy: PackagePolicy, bPolicy: PackagePolicy) => { + const a = omitIds(aPolicy); + const b = omitIds(bPolicy); + + const aHttpInput = a.inputs?.find((input) => input.type === 'synthetics/http'); + const aTcpInput = b.inputs?.find((input) => input.type === 'synthetics/tcp'); + const aIcmpInput = b.inputs?.find((input) => input.type === 'synthetics/icmp'); + const aBrowserInput = b.inputs?.find((input) => input.type === 'synthetics/browser'); + + const bHttpInput = b.inputs?.find((input) => input.type === 'synthetics/http'); + const bTcpInput = b.inputs?.find((input) => input.type === 'synthetics/tcp'); + const bIcmpInput = b.inputs?.find((input) => input.type === 'synthetics/icmp'); + const bBrowserInput = b.inputs?.find((input) => input.type === 'synthetics/browser'); + + expect(aHttpInput).toEqual(bHttpInput); + expect(aTcpInput).toEqual(bTcpInput); + expect(aIcmpInput).toEqual(bIcmpInput); + expect(aBrowserInput).toEqual(bBrowserInput); + + // delete inputs to compare rest of policy + delete a.inputs; + delete b.inputs; + + // delete package to compare rest of policy + delete a.package; + delete b.package; + + expect(a).toEqual(b); +}; + +export const ignoreTestFields = [ + 'id', + 'name', + 'created_at', + 'created_by', + 'updated_at', + 'updated_by', + 'policy_id', + 'policy_ids', + 'version', + 'revision', +]; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_project_monitor_policy.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_project_monitor_policy.ts new file mode 100644 index 0000000000000..cf9025fb8ce7f --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_project_monitor_policy.ts @@ -0,0 +1,803 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import { INSTALLED_VERSION } from '../../../../services/synthetics_private_location'; +import { getDataStream } from './test_policy'; + +export const commonVars = { + max_attempts: { + type: 'integer', + value: 2, + }, +}; + +export const getTestProjectSyntheticsPolicyLightweight = ( + { + name, + inputs = {}, + configId, + id, + locationId, + projectId = 'test-suite', + locationName = 'Fleet Managed', + namespace, + }: { + name?: string; + inputs: Record; + configId: string; + id: string; + projectId?: string; + locationId: string; + locationName?: string; + namespace?: string; + } = { + name: 'My Monitor 3', + inputs: {}, + configId: '', + id: '', + locationId: 'fleet_managed', + locationName: 'Fleet Managed', + } +): PackagePolicy => ({ + id: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + version: 'WzEzMDksMV0=', + name: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-${locationName}`, + namespace: namespace || undefined, + package: { name: 'synthetics', title: 'Elastic Synthetics', version: INSTALLED_VERSION }, + enabled: true, + policy_id: '46034710-0ba6-11ed-ba04-5f123b9faa8b', + policy_ids: ['46034710-0ba6-11ed-ba04-5f123b9faa8b'], + inputs: [ + { + type: 'synthetics/http', + policy_template: 'synthetics', + enabled: true, + streams: [ + { + enabled: true, + data_stream: { + type: 'synthetics', + dataset: 'http', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + }, + vars: { + __ui: { + type: 'yaml', + value: '{"is_tls_enabled":true}', + }, + 'check.request.body': { + type: 'yaml', + value: '"testGlobalParamValue"', + }, + 'check.request.headers': { + type: 'yaml', + value: '{"Content-Type":"application/x-www-form-urlencoded"}', + }, + 'check.request.method': { + type: 'text', + value: 'POST', + }, + 'check.response.body.negative': { + type: 'yaml', + value: null, + }, + 'check.response.body.positive': { + type: 'yaml', + value: '["testLocalParamsValue","saved"]', + }, + 'check.response.headers': { + type: 'yaml', + value: null, + }, + 'check.response.json': { + type: 'yaml', + value: '[{"description":"check status","expression":"foo.bar == \\"myValue\\""}]', + }, + 'check.response.status': { + type: 'yaml', + value: '["200"]', + }, + enabled: { + type: 'bool', + value: false, + }, + id: { + type: 'text', + value: JSON.stringify(id), + }, + ipv4: { + type: 'bool', + value: true, + }, + ipv6: { + type: 'bool', + value: true, + }, + location_id: { + type: 'text', + value: locationId ?? 'fleet_managed', + }, + location_name: { + type: 'text', + value: `"${locationName}"`, + }, + max_redirects: { + type: 'integer', + value: '0', + }, + ...commonVars, + mode: { + type: 'text', + value: 'any', + }, + name: { + type: 'text', + value: JSON.stringify(name), + }, + origin: { + type: 'text', + value: 'project', + }, + password: { + type: 'password', + value: null, + }, + processors: { + type: 'yaml', + value: JSON.stringify([ + { + add_fields: { + fields: { + 'monitor.fleet_managed': true, + config_id: configId, + 'monitor.project.name': projectId, + 'monitor.project.id': projectId, + meta: { space_id: 'default' }, + }, + target: '', + }, + }, + ]), + }, + proxy_headers: { + type: 'yaml', + value: null, + }, + proxy_url: { + type: 'text', + value: JSON.stringify('testGlobalParamOverwrite'), + }, + 'response.include_body': { + type: 'text', + value: 'always', + }, + 'response.include_body_max_bytes': { + type: 'text', + value: '900', + }, + 'response.include_headers': { + type: 'bool', + value: false, + }, + schedule: { + type: 'text', + value: '"@every 60m"', + }, + 'service.name': { + type: 'text', + value: null, + }, + 'ssl.certificate': { + type: 'yaml', + value: null, + }, + 'ssl.certificate_authorities': { + type: 'yaml', + value: null, + }, + 'ssl.key': { + type: 'yaml', + value: null, + }, + 'ssl.key_passphrase': { + type: 'text', + value: null, + }, + 'ssl.supported_protocols': { + type: 'yaml', + value: '["TLSv1.1","TLSv1.2","TLSv1.3"]', + }, + 'ssl.verification_mode': { + type: 'text', + value: 'strict', + }, + tags: { + type: 'yaml', + value: '["tag2","tag2"]', + }, + timeout: { + type: 'text', + value: '80s', + }, + type: { + type: 'text', + value: 'http', + }, + urls: { + type: 'text', + value: '"http://localhost:9200"', + }, + username: { + type: 'text', + value: null, + }, + }, + compiled_stream: { + __ui: { + is_tls_enabled: true, + }, + type: 'http', + name, + id, + origin: 'project', + enabled: false, + urls: 'http://localhost:9200', + schedule: '@every 60m', + timeout: '80s', + max_redirects: 0, + max_attempts: 2, + tags: ['tag2', 'tag2'], + proxy_url: 'testGlobalParamOverwrite', + 'run_from.geo.name': locationName ?? 'Test private location 0', + 'run_from.id': locationId ?? 'Test private location 0', + 'response.include_headers': false, + 'response.include_body': 'always', + 'response.include_body_max_bytes': 900, + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'strict', + 'check.request.method': 'POST', + 'check.request.headers': { 'Content-Type': 'application/x-www-form-urlencoded' }, + 'check.response.body.positive': ['testLocalParamsValue', 'saved'], + 'check.response.json': [ + { + description: 'check status', + expression: 'foo.bar == "myValue"', + }, + ], + 'check.response.status': ['200'], + 'check.request.body': 'testGlobalParamValue', + ipv4: true, + ipv6: true, + mode: 'any', + processors: [ + { + add_fields: { + fields: { + config_id: configId, + 'monitor.fleet_managed': true, + 'monitor.project.id': projectId, + 'monitor.project.name': projectId, + meta: { space_id: 'default' }, + }, + target: '', + }, + }, + ], + }, + id: `synthetics/http-http-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/tcp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'tcp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'tcp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + proxy_url: { type: 'text' }, + proxy_use_local_resolver: { value: false, type: 'bool' }, + tags: { type: 'yaml' }, + 'check.send': { type: 'text' }, + 'check.receive': { type: 'text' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/tcp-tcp-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/icmp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'icmp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'icmp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + wait: { value: '1s', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/icmp-icmp-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/browser', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: true, + data_stream: { + type: 'synthetics', + dataset: 'browser', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + }, + vars: { + __ui: { + type: 'yaml', + }, + enabled: { value: true, type: 'bool' }, + type: { value: 'browser', type: 'text' }, + name: { type: 'text' }, + schedule: { value: JSON.stringify('@every 3m'), type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + 'source.zip_url.url': { type: 'text' }, + 'source.zip_url.username': { type: 'text' }, + 'source.zip_url.folder': { type: 'text' }, + 'source.zip_url.password': { type: 'password' }, + 'source.inline.script': { type: 'yaml' }, + 'source.project.content': { + type: 'text', + }, + params: { + type: 'yaml', + }, + playwright_options: { + type: 'yaml', + }, + screenshots: { type: 'text' }, + synthetics_args: { type: 'text' }, + ignore_https_errors: { type: 'bool' }, + 'throttling.config': { + type: 'text', + }, + 'filter_journeys.tags': { type: 'yaml' }, + 'filter_journeys.match': { type: 'text' }, + 'source.zip_url.ssl.certificate_authorities': { type: 'yaml' }, + 'source.zip_url.ssl.certificate': { type: 'yaml' }, + 'source.zip_url.ssl.key': { type: 'yaml' }, + 'source.zip_url.ssl.key_passphrase': { type: 'text' }, + 'source.zip_url.ssl.verification_mode': { type: 'text' }, + 'source.zip_url.ssl.supported_protocols': { type: 'yaml' }, + 'source.zip_url.proxy_url': { type: 'text' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ...inputs, + }, + id: `synthetics/browser-browser-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + __ui: null, + type: 'browser', + name: null, + enabled: true, + schedule: '@every 3m', + timeout: null, + throttling: null, + processors: [ + { + add_fields: { + target: '', + fields: { + 'monitor.fleet_managed': true, + }, + }, + }, + ], + 'run_from.geo.name': 'Fleet managed', + 'run_from.id': 'Fleet managed', + ...Object.keys(inputs).reduce((acc: Record, key) => { + acc[key] = inputs[key].value; + return acc; + }, {}), + }, + }, + { + enabled: true, + data_stream: { + type: 'synthetics', + dataset: 'browser.network', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + }, + id: `synthetics/browser-browser.network-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + { + enabled: true, + data_stream: { + type: 'synthetics', + dataset: 'browser.screenshot', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + }, + id: `synthetics/browser-browser.screenshot-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + ], + }, + ], + is_managed: true, + revision: 1, + created_at: '2022-08-23T13:52:42.531Z', + created_by: 'system', + updated_at: '2022-08-23T13:52:42.531Z', + updated_by: 'system', +}); + +export const getTestProjectSyntheticsPolicy = ( + { + name, + inputs = {}, + configId, + id, + projectId = 'test-suite', + locationId, + locationName = 'Fleet Managed', + namespace, + }: { + name?: string; + inputs: Record; + configId: string; + id: string; + projectId?: string; + locationName?: string; + locationId: string; + namespace?: string; + } = { + name: 'check if title is present-Test private location 0', + inputs: {}, + configId: '', + id: '', + locationId: 'fleet_managed', + locationName: 'Fleet Managed', + } +): PackagePolicy => ({ + id: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + version: 'WzEzMDksMV0=', + name: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-Test private location 0`, + namespace: namespace || undefined, + package: { name: 'synthetics', title: 'Elastic Synthetics', version: INSTALLED_VERSION }, + enabled: true, + policy_id: '46034710-0ba6-11ed-ba04-5f123b9faa8b', + policy_ids: ['46034710-0ba6-11ed-ba04-5f123b9faa8b'], + inputs: [ + { + type: 'synthetics/http', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'http', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'http', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + urls: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + max_redirects: { type: 'integer' }, + proxy_url: { type: 'text' }, + processors: { type: 'yaml' }, + proxy_headers: { type: 'yaml' }, + tags: { type: 'yaml' }, + username: { type: 'text' }, + password: { type: 'password' }, + 'response.include_headers': { type: 'bool' }, + 'response.include_body': { type: 'text' }, + 'response.include_body_max_bytes': { type: 'text' }, + 'check.request.method': { type: 'text' }, + 'check.request.headers': { type: 'yaml' }, + 'check.request.body': { type: 'yaml' }, + 'check.response.status': { type: 'yaml' }, + 'check.response.headers': { type: 'yaml' }, + 'check.response.body.positive': { type: 'yaml' }, + 'check.response.body.negative': { type: 'yaml' }, + 'check.response.json': { type: 'yaml' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/http-http-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/tcp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'tcp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'tcp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + proxy_url: { type: 'text' }, + proxy_use_local_resolver: { value: false, type: 'bool' }, + tags: { type: 'yaml' }, + 'check.send': { type: 'text' }, + 'check.receive': { type: 'text' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/tcp-tcp-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/icmp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'icmp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'icmp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + wait: { value: '1s', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + location_name: { value: 'Fleet managed', type: 'text' }, + max_attempts: { + type: 'integer', + value: 2, + }, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/icmp-icmp-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/browser', + policy_template: 'synthetics', + enabled: true, + streams: [ + { + enabled: true, + data_stream: getDataStream('browser'), + vars: { + __ui: { + value: '{"script_source":{"is_generated_script":false,"file_name":""}}', + type: 'yaml', + }, + enabled: { value: true, type: 'bool' }, + type: { value: 'browser', type: 'text' }, + name: { value: '"check if title is present"', type: 'text' }, + schedule: { value: '"@every 10m"', type: 'text' }, + 'service.name': { value: null, type: 'text' }, + timeout: { value: null, type: 'text' }, + tags: { value: null, type: 'yaml' }, + 'source.zip_url.url': { type: 'text' }, + 'source.zip_url.username': { type: 'text' }, + 'source.zip_url.folder': { type: 'text' }, + 'source.zip_url.password': { type: 'password' }, + 'source.inline.script': { value: null, type: 'yaml' }, + 'source.project.content': { + value: + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + type: 'text', + }, + params: { + value: + '{"testGlobalParam2":"testGlobalParamValue2","testGlobalParam":"testGlobalParamValue"}', + type: 'yaml', + }, + playwright_options: { + value: '{"headless":true,"chromiumSandbox":false}', + type: 'yaml', + }, + screenshots: { value: 'on', type: 'text' }, + synthetics_args: { value: null, type: 'text' }, + ignore_https_errors: { value: false, type: 'bool' }, + 'throttling.config': { + value: JSON.stringify({ download: 5, upload: 3, latency: 20 }), + type: 'text', + }, + 'filter_journeys.tags': { value: null, type: 'yaml' }, + 'filter_journeys.match': { value: '"check if title is present"', type: 'text' }, + 'source.zip_url.ssl.certificate_authorities': { type: 'yaml' }, + 'source.zip_url.ssl.certificate': { type: 'yaml' }, + 'source.zip_url.ssl.key': { type: 'yaml' }, + 'source.zip_url.ssl.key_passphrase': { type: 'text' }, + 'source.zip_url.ssl.verification_mode': { type: 'text' }, + 'source.zip_url.ssl.supported_protocols': { type: 'yaml' }, + 'source.zip_url.proxy_url': { type: 'text' }, + location_name: { value: 'Test private location 0', type: 'text' }, + ...commonVars, + location_id: { value: 'fleet_managed', type: 'text' }, + id: { value: id, type: 'text' }, + origin: { value: 'project', type: 'text' }, + ...inputs, + }, + id: `synthetics/browser-browser-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + __ui: { + script_source: { is_generated_script: false, file_name: '' }, + }, + type: 'browser', + name: 'check if title is present', + id, + origin: 'project', + enabled: true, + schedule: '@every 10m', + 'run_from.geo.name': locationName, + 'run_from.id': locationId, + timeout: null, + throttling: { download: 5, upload: 3, latency: 20 }, + 'source.project.content': + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + playwright_options: { headless: true, chromiumSandbox: false }, + screenshots: 'on', + 'filter_journeys.match': 'check if title is present', + params: { + testGlobalParam: 'testGlobalParamValue', + testGlobalParam2: 'testGlobalParamValue2', + }, + ...Object.keys(inputs).reduce((acc: Record, key) => { + acc[key] = inputs[key].value; + return acc; + }, {}), + }, + }, + { + enabled: true, + data_stream: getDataStream('browser.network'), + id: `synthetics/browser-browser.network-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + { + enabled: true, + data_stream: getDataStream('browser.screenshot'), + id: `synthetics/browser-browser.screenshot-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + ], + }, + ], + is_managed: true, + revision: 1, + created_at: '2022-08-23T13:52:42.531Z', + created_by: 'system', + updated_at: '2022-08-23T13:52:42.531Z', + updated_by: 'system', +}); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/suggestions.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/suggestions.ts new file mode 100644 index 0000000000000..d6a42b6cc8972 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/suggestions.ts @@ -0,0 +1,276 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { v4 as uuidv4 } from 'uuid'; +import expect from 'expect'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + MonitorFields, + EncryptedSyntheticsSavedMonitor, + ProjectMonitorsRequest, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('SyntheticsSuggestions', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + const privateLocationsTestService = new PrivateLocationTestService(getService); + + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + let projectMonitors: ProjectMonitorsRequest; + let _monitors: MonitorFields[]; + let monitors: MonitorFields[]; + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + const setUniqueIds = (request: ProjectMonitorsRequest) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ + ...monitor, + id: uuidv4(), + locations: [], + privateLocations: [privateLocation.label], + })), + }; + }; + + const saveMonitor = async (monitor: MonitorFields) => { + const res = await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor); + + return res.body as EncryptedSyntheticsSavedMonitor; + }; + + before(async () => { + await kibanaServer.savedObjects.clean({ + types: [ + syntheticsMonitorType, + 'ingest-agent-policies', + 'ingest-package-policies', + 'synthetics-private-location', + ], + }); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + privateLocation = await privateLocationsTestService.addTestPrivateLocation(SPACE_ID); + _monitors = [getFixtureJson('http_monitor')].map((monitor) => ({ + ...monitor, + locations: [privateLocation], + })); + projectMonitors = setUniqueIds({ + monitors: getFixtureJson('project_icmp_monitor') + .monitors.slice(0, 2) + .map((monitor: any) => ({ + ...monitor, + privateLocations: [privateLocation.label], + locations: [], + })), + }); + }); + + beforeEach(async () => { + await kibanaServer.savedObjects.clean({ + types: [syntheticsMonitorType, 'ingest-package-policies'], + }); + + monitors = []; + for (let i = 0; i < 20; i++) { + monitors.push({ + ..._monitors[0], + locations: [privateLocation], + name: `${_monitors[0].name} ${i}`, + }); + } + }); + + after(async () => { + await kibanaServer.spaces.delete(SPACE_ID); + }); + + it('returns the suggestions', async () => { + const project = `test-project-${uuidv4()}`; + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + for (let i = 0; i < monitors.length; i++) { + await saveMonitor(monitors[i]); + } + const apiResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SUGGESTIONS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + expect(apiResponse.body).toEqual({ + locations: [ + { + count: 22, + label: privateLocation.label, + value: privateLocation.id, + }, + ], + monitorIds: expect.arrayContaining([ + ...monitors.map((monitor) => ({ + count: 1, + label: monitor.name, + value: expect.any(String), + })), + ...projectMonitors.monitors.slice(0, 2).map((monitor) => ({ + count: 1, + label: monitor.name, + value: expect.any(String), + })), + ]), + monitorTypes: [ + { + count: 20, + label: 'http', + value: 'http', + }, + { + count: 2, + label: 'icmp', + value: 'icmp', + }, + ], + projects: [ + { + count: 2, + label: project, + value: project, + }, + ], + tags: expect.arrayContaining([ + { + count: 21, + label: 'tag1', + value: 'tag1', + }, + { + count: 21, + label: 'tag2', + value: 'tag2', + }, + { + count: 1, + label: 'org:google', + value: 'org:google', + }, + { + count: 1, + label: 'service:smtp', + value: 'service:smtp', + }, + ]), + }); + }); + + it('handles query params for projects', async () => { + for (let i = 0; i < monitors.length; i++) { + await saveMonitor(monitors[i]); + } + const project = `test-project-${uuidv4()}`; + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + const apiResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SUGGESTIONS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + projects: [project], + }) + .expect(200); + + expect(apiResponse.body).toEqual({ + locations: [ + { + count: 2, + label: privateLocation.label, + value: privateLocation.id, + }, + ], + monitorIds: expect.arrayContaining( + projectMonitors.monitors.map((monitor) => ({ + count: 1, + label: monitor.name, + value: expect.any(String), + })) + ), + monitorTypes: [ + { + count: 2, + label: 'icmp', + value: 'icmp', + }, + ], + projects: [ + { + count: 2, + label: project, + value: project, + }, + ], + tags: expect.arrayContaining([ + { + count: 1, + label: 'tag1', + value: 'tag1', + }, + { + count: 1, + label: 'tag2', + value: 'tag2', + }, + { + count: 1, + label: 'org:google', + value: 'org:google', + }, + { + count: 1, + label: 'service:smtp', + value: 'service:smtp', + }, + ]), + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sync_global_params.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sync_global_params.ts new file mode 100644 index 0000000000000..425eb0c704b50 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sync_global_params.ts @@ -0,0 +1,354 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + HTTPFields, + LocationStatus, + PrivateLocation, + ServiceLocation, + SyntheticsParams, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import expect from '@kbn/expect'; +import { syntheticsParamType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { comparePolicies, getTestSyntheticsPolicy } from './sample_data/test_policy'; +import { addMonitorAPIHelper, omitMonitorKeys } from './create_monitor'; + +export const LOCAL_LOCATION = { + id: 'dev', + label: 'Dev Service', + geo: { + lat: 0, + lon: 0, + }, + isServiceManaged: true, +}; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe.skip('SyncGlobalParams', function () { + this.tags('skipCloud'); + const supertestAPI = getService('supertestWithoutAuth'); + const supertestWithAuth = getService('supertest'); + const kServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + let testFleetPolicyID: string; + let _browserMonitorJson: HTTPFields; + let browserMonitorJson: HTTPFields; + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + + let newMonitorId: string; + let newHttpMonitorId: string; + let privateLocations: PrivateLocation[] = []; + + let editorUser: RoleCredentials; + + const testPrivateLocations = new PrivateLocationTestService(getService); + const params: Record = {}; + + const addMonitorAPI = async (monitor: any, statusCode = 200) => { + return addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorUser, samlAuth); + }; + + before(async () => { + await kServer.savedObjects.cleanStandardList(); + await testPrivateLocations.installSyntheticsPackage(); + + _browserMonitorJson = getFixtureJson('browser_monitor'); + _httpMonitorJson = getFixtureJson('http_monitor'); + await kServer.savedObjects.clean({ types: [syntheticsParamType] }); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(() => { + browserMonitorJson = _browserMonitorJson; + httpMonitorJson = _httpMonitorJson; + }); + + const testPolicyName = 'Fleet test server policy' + Date.now(); + + it('adds a test fleet policy', async () => { + const apiResponse = await testPrivateLocations.addFleetPolicy(testPolicyName); + testFleetPolicyID = apiResponse.body.item.id; + }); + + it('add a test private location', async () => { + privateLocations = await testPrivateLocations.setTestLocations([testFleetPolicyID]); + + const apiResponse = await supertestAPI.get(SYNTHETICS_API_URLS.SERVICE_LOCATIONS); + + const testLocations: Array = [ + { + id: 'dev', + label: 'Dev Service', + geo: { lat: 0, lon: 0 }, + url: 'mockDevUrl', + isServiceManaged: true, + status: LocationStatus.EXPERIMENTAL, + isInvalid: false, + }, + { + id: 'dev2', + label: 'Dev Service 2', + geo: { lat: 0, lon: 0 }, + url: 'mockDevUrl', + isServiceManaged: true, + status: LocationStatus.EXPERIMENTAL, + isInvalid: false, + }, + { + id: testFleetPolicyID, + isInvalid: false, + isServiceManaged: false, + label: privateLocations[0].label, + geo: { + lat: 0, + lon: 0, + }, + agentPolicyId: testFleetPolicyID, + }, + ]; + + expect(apiResponse.body.locations).eql(testLocations); + }); + + it('adds a monitor in private location', async () => { + const newMonitor = browserMonitorJson; + + const pvtLoc = { + id: testFleetPolicyID, + agentPolicyId: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + geo: { + lat: 0, + lon: 0, + }, + }; + + newMonitor.locations.push(pvtLoc); + + const apiResponse = await addMonitorAPI(newMonitor); + + expect(apiResponse.body).eql( + omitMonitorKeys({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, + [ConfigKey.CONFIG_ID]: apiResponse.body.id, + locations: [LOCAL_LOCATION, pvtLoc], + }) + ); + newMonitorId = apiResponse.rawBody.id; + }); + + it('added an integration for previously added monitor', async () => { + const apiResponse = await supertestAPI.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy?.policy_id).eql( + testFleetPolicyID, + JSON.stringify({ testFleetPolicyID, newMonitorId }) + ); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: browserMonitorJson.name, + id: newMonitorId, + isBrowser: true, + location: { id: testFleetPolicyID }, + }) + ); + }); + + it('adds a test param', async () => { + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'test', value: 'http://proxy.com' }); + + expect(apiResponse.status).eql(200); + }); + + it('get list of params', async () => { + const apiResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'test', value: 'http://proxy.com' }); + + expect(apiResponse.status).eql(200); + + apiResponse.body.forEach(({ key, value }: SyntheticsParams) => { + params[key] = value; + }); + }); + + it('sync global params', async () => { + const apiResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.SYNC_GLOBAL_PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'test', value: 'test' }); + + expect(apiResponse.status).eql(200); + }); + + it('added params to for previously added integration', async () => { + const apiResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: browserMonitorJson.name, + id: newMonitorId, + params, + isBrowser: true, + location: { id: testFleetPolicyID }, + }) + ); + }); + + it('add a http monitor using param', async () => { + const newMonitor = httpMonitorJson; + const pvtLoc = { + id: testFleetPolicyID, + agentPolicyId: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + geo: { + lat: 0, + lon: 0, + }, + }; + newMonitor.locations.push(pvtLoc); + + newMonitor.proxy_url = '${test}'; + + const apiResponse = await addMonitorAPI(newMonitor); + + expect(apiResponse.body).eql( + omitMonitorKeys({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, + [ConfigKey.CONFIG_ID]: apiResponse.body.id, + locations: [LOCAL_LOCATION, pvtLoc], + }) + ); + newHttpMonitorId = apiResponse.rawBody.id; + }); + + it('parsed params for previously added http monitors', async () => { + const apiResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newHttpMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + const pPolicy = getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newHttpMonitorId, + isTLSEnabled: false, + namespace: 'testnamespace', + location: { id: testFleetPolicyID }, + }); + + comparePolicies(packagePolicy, pPolicy); + }); + + it('delete all params and sync again', async () => { + await supertestAPI + .post(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'get', value: 'test' }); + const getResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(getResponse.body.length).eql(2); + + const paramsResponse = getResponse.body || []; + const ids = paramsResponse.map((param: any) => param.id); + + const deleteResponse = await supertestAPI + .delete(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ ids }) + .expect(200); + + expect(deleteResponse.body).to.have.length(2); + + const getResponseAfterDelete = await supertestAPI + .get(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(getResponseAfterDelete.body.length).eql(0); + + await supertestAPI + .get(SYNTHETICS_API_URLS.SYNC_GLOBAL_PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: browserMonitorJson.name, + id: newMonitorId, + isBrowser: true, + location: { id: testFleetPolicyID }, + }) + ); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/synthetics_enablement.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/synthetics_enablement.ts new file mode 100644 index 0000000000000..cb2197bf54169 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/synthetics_enablement.ts @@ -0,0 +1,352 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { v4 as uuidv4 } from 'uuid'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { SupertestWithRoleScopeType } from '../../../services'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + const config = getService('config'); + const isServerless = config.get('serverless'); + const correctPrivileges = { + applications: [], + cluster: ['monitor', 'read_pipeline', ...(!isServerless ? ['read_ilm'] : [])], + indices: [ + { + allow_restricted_indices: false, + names: ['synthetics-*'], + privileges: ['view_index_metadata', 'create_doc', 'auto_configure', 'read'], + }, + ], + metadata: {}, + run_as: [], + transient_metadata: { + enabled: true, + }, + }; + + describe('SyntheticsEnablement', function () { + /* temporarily skip MKI. Public locations appear to be disabled in QA causing failures + * in isServiceAllowed check */ + this.tags(['skipMKI']); + + const roleScopedSupertest = getService('roleScopedSupertest'); + const kibanaServer = getService('kibanaServer'); + + let supertestWithEditorScope: SupertestWithRoleScopeType; + let supertestWithAdminScope: SupertestWithRoleScopeType; + + const getApiKeys = async () => { + const { body } = await supertestWithAdminScope + .post('/internal/security/api_key/_query') + .send({ + query: { + bool: { + filter: [ + { + term: { + name: 'synthetics-api-key (required for Synthetics App)', + }, + }, + ], + }, + }, + sort: { field: 'creation', direction: 'desc' }, + from: 0, + size: 25, + filters: {}, + }) + .expect(200); + + const apiKeys = body.apiKeys || []; + return apiKeys.filter( + (apiKey: any) => apiKey.name.includes('synthetics-api-key') && apiKey.invalidated === false + ); + }; + + before(async () => { + supertestWithEditorScope = await roleScopedSupertest.getSupertestWithRoleScope('editor', { + withInternalHeaders: true, + useCookieHeader: true, + }); + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + useCookieHeader: true, + }); + }); + + describe('[PUT] /internal/uptime/service/enablement', () => { + before(async () => { + supertestWithEditorScope = await roleScopedSupertest.getSupertestWithRoleScope('editor', { + withInternalHeaders: true, + useCookieHeader: true, + }); + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + useCookieHeader: true, + }); + }); + + beforeEach(async () => { + const apiKeys = await getApiKeys(); + if (apiKeys.length) { + await supertestWithAdminScope + .delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + } + }); + + after(async () => { + // always invalidate API key for the scoped role in the end + await supertestWithAdminScope.destroy(); + await supertestWithEditorScope.destroy(); + }); + + it(`returns response when user cannot manage api keys`, async () => { + const apiResponse = await supertestWithEditorScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: false, + canEnable: false, + isEnabled: false, + isValidApiKey: false, + isServiceAllowed: true, + }); + }); + + it(`returns response for an admin with privilege`, async () => { + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + const validApiKeys = await getApiKeys(); + expect(validApiKeys.length).eql(1); + expect(validApiKeys[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + }); + + it(`does not create excess api keys`, async () => { + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + const validApiKeys = await getApiKeys(); + expect(validApiKeys.length).eql(1); + expect(validApiKeys[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + + // call api a second time + const apiResponse2 = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse2.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + const validApiKeys2 = await getApiKeys(); + expect(validApiKeys2.length).eql(1); + expect(validApiKeys2[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + }); + + it(`auto re-enables api key when invalidated`, async () => { + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + const validApiKeys = await getApiKeys(); + expect(validApiKeys.length).eql(1); + expect(validApiKeys[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + + // delete api key + await supertestWithAdminScope + .post('/internal/security/api_key/invalidate') + .send({ + apiKeys: validApiKeys.map((apiKey: { id: string; name: string }) => ({ + id: apiKey.id, + name: apiKey.name, + })), + isAdmin: true, + }) + .expect(200); + + const validApiKeysAferDeletion = await getApiKeys(); + expect(validApiKeysAferDeletion.length).eql(0); + + // call api a second time + const apiResponse2 = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse2.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + const validApiKeys2 = await getApiKeys(); + expect(validApiKeys2.length).eql(1); + expect(validApiKeys2[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + }); + + it('returns response for an uptime all user without admin privileges', async () => { + const apiResponse = await supertestWithEditorScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: false, + canEnable: false, + isEnabled: false, + isValidApiKey: false, + isServiceAllowed: true, + }); + }); + }); + + describe('[DELETE] /internal/uptime/service/enablement', () => { + beforeEach(async () => { + const apiKeys = await getApiKeys(); + if (apiKeys.length) { + await supertestWithAdminScope + .delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + } + }); + + it('with an admin', async () => { + await supertestWithAdminScope.put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT).expect(200); + const delResponse = await supertestWithAdminScope + .delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + expect(delResponse.body).eql({}); + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + }); + + it('with an uptime user', async () => { + await supertestWithAdminScope.put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT).expect(200); + await supertestWithEditorScope + .delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(403); + const apiResponse = await supertestWithEditorScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: false, + canEnable: false, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + }); + + it('is space agnostic', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name-${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + // can enable synthetics in default space when enabled in a non default space + const apiResponseGet = await supertestWithAdminScope + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT}`) + .expect(200); + + expect(apiResponseGet.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + await supertestWithAdminScope + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT}`) + .expect(200); + await supertestWithAdminScope.delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT).expect(200); + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + // can disable synthetics in non default space when enabled in default space + await supertestWithAdminScope.put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT).expect(200); + await supertestWithAdminScope + .delete(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT}`) + .expect(200); + const apiResponse2 = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse2.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/test_now_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/test_now_monitor.ts new file mode 100644 index 0000000000000..1efe174a2c666 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/test_now_monitor.ts @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { MonitorFields } from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { omit } from 'lodash'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export const LOCAL_LOCATION = { + id: 'dev', + label: 'Dev Service', + geo: { + lat: 0, + lon: 0, + }, + isServiceManaged: true, +}; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('RunTestManually', function () { + this.tags(['skipMKI', 'skipCloud']); + + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + const monitorTestService = new SyntheticsMonitorTestService(getService); + + let newMonitor: MonitorFields; + let editorUser: RoleCredentials; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + newMonitor = getFixtureJson('http_monitor'); + }); + + it('runs test manually', async () => { + const resp = await monitorTestService.addMonitor(newMonitor, editorUser); + + const res = await supertest + .post(SYNTHETICS_API_URLS.TRIGGER_MONITOR + `/${resp.id}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const result = res.body; + expect(typeof result.testRunId).to.eql('string'); + expect(typeof result.configId).to.eql('string'); + expect(result.schedule).to.eql({ number: '5', unit: 'm' }); + expect(result.locations).to.eql([LOCAL_LOCATION]); + + expect(omit(result.monitor, ['id', 'config_id'])).to.eql( + omit(newMonitor, ['id', 'config_id']) + ); + }); + + it('works in non default space', async () => { + const { SPACE_ID } = await monitorTestService.addNewSpace(); + + const resp = await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(newMonitor) + .expect(200); + + const res = await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.TRIGGER_MONITOR}/${resp.body.id}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const result = res.body; + expect(typeof result.testRunId).to.eql('string'); + expect(typeof result.configId).to.eql('string'); + expect(result.schedule).to.eql({ number: '5', unit: 'm' }); + expect(result.locations).to.eql([LOCAL_LOCATION]); + + expect(omit(result.monitor, ['id', 'config_id'])).to.eql( + omit(newMonitor, ['id', 'config_id']) + ); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts b/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts index abd875f8c17cf..7544d7d90f1d5 100644 --- a/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts @@ -20,5 +20,6 @@ export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) loadTestFile(require.resolve('../../apis/painless_lab')); loadTestFile(require.resolve('../../apis/saved_objects_management')); loadTestFile(require.resolve('../../apis/observability/slo')); + loadTestFile(require.resolve('../../apis/observability/synthetics')); }); } diff --git a/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts b/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts index 4f21d708d4186..4f666fc5b3ebe 100644 --- a/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts @@ -13,6 +13,7 @@ export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) loadTestFile(require.resolve('../../apis/observability/alerting')); loadTestFile(require.resolve('../../apis/observability/dataset_quality')); loadTestFile(require.resolve('../../apis/observability/slo')); + loadTestFile(require.resolve('../../apis/observability/synthetics')); loadTestFile(require.resolve('../../apis/observability/infra')); }); } diff --git a/x-pack/test/api_integration/deployment_agnostic/default_configs/serverless.config.base.ts b/x-pack/test/api_integration/deployment_agnostic/default_configs/serverless.config.base.ts index e7df37f5aa312..8d3432f2e504e 100644 --- a/x-pack/test/api_integration/deployment_agnostic/default_configs/serverless.config.base.ts +++ b/x-pack/test/api_integration/deployment_agnostic/default_configs/serverless.config.base.ts @@ -113,6 +113,11 @@ export function createServerlessTestConfig; + private getService: DeploymentAgnosticFtrProviderContext['getService']; + public apiKey: string | undefined = ''; + public samlAuth: SamlAuthProviderType; + + constructor(getService: DeploymentAgnosticFtrProviderContext['getService']) { + this.supertest = getService('supertestWithoutAuth'); + this.samlAuth = getService('samlAuth'); + this.getService = getService; + } + + generateProjectAPIKey = async (accessToPublicLocations = true, user: RoleCredentials) => { + const res = await this.supertest + .get( + SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY + + '?accessToElasticManagedLocations=' + + accessToPublicLocations + ) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(200); + const result = res.body as ProjectAPIKeyResponse; + expect(result).to.have.property('apiKey'); + const apiKey = result.apiKey?.encoded; + expect(apiKey).to.not.be.empty(); + this.apiKey = apiKey; + return apiKey; + }; + + async getMonitor( + monitorId: string, + { + statusCode = 200, + space, + internal, + user, + }: { + statusCode?: number; + space?: string; + internal?: boolean; + user: RoleCredentials; + } + ) { + let url = SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace('{monitorId}', monitorId); + if (space) { + url = '/s/' + space + url; + } + if (internal) { + url += `?internal=${internal}`; + } + const apiResponse = await this.supertest + .get(url) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(apiResponse.status).eql(statusCode, JSON.stringify(apiResponse.body)); + + if (statusCode === 200) { + const { + created_at: createdAt, + updated_at: updatedAt, + id, + config_id: configId, + spaceId, + } = apiResponse.body; + expect(id).not.empty(); + expect(configId).not.empty(); + expect(spaceId).not.empty(); + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + return { + rawBody: omit(apiResponse.body, ['spaceId']), + body: { + ...omit(apiResponse.body, [ + 'created_at', + 'updated_at', + 'id', + 'config_id', + 'form_monitor_type', + 'spaceId', + ]), + }, + }; + } + return apiResponse.body; + } + + async addMonitor(monitor: any, user: RoleCredentials) { + const res = await this.supertest + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + return res.body as EncryptedSyntheticsSavedMonitor; + } + + async inspectMonitor(user: RoleCredentials, monitor: any, hideParams: boolean = true) { + const res = await this.supertest + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITOR_INSPECT) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + // remove the id and config_id from the response + delete res.body.result?.publicConfigs?.[0].monitors[0].id; + delete res.body.result?.publicConfigs?.[0].monitors[0].streams[0].id; + delete res.body.result?.publicConfigs?.[0].monitors[0].streams[0].config_id; + delete res.body.result?.publicConfigs?.[0].monitors[0].streams[0].fields.config_id; + delete res.body.result?.publicConfigs?.[0].output.api_key; + delete res.body.result?.publicConfigs?.[0].license_issued_to; + delete res.body.result?.publicConfigs?.[0].stack_version; + + return res.body as { result: MonitorInspectResponse; decodedCode: string }; + } + + async addProjectMonitors(project: string, monitors: any, user: RoleCredentials) { + if (this.apiKey) { + return this.supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(this.samlAuth.getInternalRequestHeader()) + .set('authorization', `ApiKey ${this.apiKey}`) + .send({ monitors }); + } else { + return this.supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .send({ monitors }); + } + } + + async deleteMonitorByJourney( + journeyId: string, + projectId: string, + space: string = 'default', + user: RoleCredentials + ) { + try { + const response = await this.supertest + .get(`/s/${space}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: "${journeyId}" AND ${syntheticsMonitorType}.attributes.project_id: "${projectId}"`, + }) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(200); + + const { monitors } = response.body; + if (monitors[0]?.id) { + await this.supertest + .delete(`/s/${space}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .send({ ids: monitors.map((monitor: { id: string }) => monitor.id) }) + .expect(200); + } + } catch (e) { + // eslint-disable-next-line no-console + console.error(e); + } + } + + async addNewSpace() { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + const kibanaServer = this.getService('kibanaServer'); + + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + return { SPACE_ID }; + } + + async deleteMonitor( + user: RoleCredentials, + monitorId?: string | string[], + statusCode = 200, + spaceId?: string + ) { + const deleteResponse = await this.supertest + .delete( + spaceId + ? `/s/${spaceId}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}` + : SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + ) + .send({ ids: Array.isArray(monitorId) ? monitorId : [monitorId] }) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(statusCode); + + return deleteResponse; + } + + async deleteMonitorByIdParam( + user: RoleCredentials, + monitorId?: string, + statusCode = 200, + spaceId?: string + ) { + const deleteResponse = await this.supertest + .delete( + spaceId + ? `/s/${spaceId}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}/${monitorId}` + : SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId + ) + .send() + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(statusCode); + + return deleteResponse; + } +} diff --git a/x-pack/test/api_integration/deployment_agnostic/services/synthetics_private_location.ts b/x-pack/test/api_integration/deployment_agnostic/services/synthetics_private_location.ts new file mode 100644 index 0000000000000..8b3c95e0b9489 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/services/synthetics_private_location.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { v4 as uuidv4 } from 'uuid'; +import { RetryService } from '@kbn/ftr-common-functional-services'; +import { X_ELASTIC_INTERNAL_ORIGIN_REQUEST } from '@kbn/core-http-common'; +import { privateLocationSavedObjectName } from '@kbn/synthetics-plugin/common/saved_objects/private_locations'; +import { SyntheticsPrivateLocations } from '@kbn/synthetics-plugin/common/runtime_types'; +import { KibanaSupertestProvider } from '@kbn/ftr-common-functional-services'; +import { DeploymentAgnosticFtrProviderContext } from '../ftr_provider_context'; + +export const INSTALLED_VERSION = '1.1.1'; + +export class PrivateLocationTestService { + private supertestWithAuth: ReturnType; + private readonly retry: RetryService; + + constructor(getService: DeploymentAgnosticFtrProviderContext['getService']) { + this.supertestWithAuth = getService('supertest'); + this.retry = getService('retry'); + } + + async installSyntheticsPackage() { + await this.supertestWithAuth + .post('/api/fleet/setup') + .set('kbn-xsrf', 'true') + .send() + .expect(200); + const response = await this.supertestWithAuth + .get(`/api/fleet/epm/packages/synthetics/${INSTALLED_VERSION}`) + .set('kbn-xsrf', 'true') + .expect(200); + if (response.body.item.status !== 'installed') { + await this.supertestWithAuth + .post(`/api/fleet/epm/packages/synthetics/${INSTALLED_VERSION}`) + .set('kbn-xsrf', 'true') + .send({ force: true }) + .expect(200); + } + } + + async addTestPrivateLocation(spaceId?: string) { + const apiResponse = await this.addFleetPolicy(uuidv4()); + const testPolicyId = apiResponse.body.item.id; + return (await this.setTestLocations([testPolicyId], spaceId))[0]; + } + + async addFleetPolicy(name: string) { + return await this.retry.try(async () => { + const response = await this.supertestWithAuth + .post('/api/fleet/agent_policies?sys_monitoring=true') + .set('kbn-xsrf', 'true') + .send({ + name, + description: '', + namespace: 'default', + monitoring_enabled: [], + }); + return response; + }); + } + + async setTestLocations(testFleetPolicyIds: string[], spaceId?: string) { + const locations: SyntheticsPrivateLocations = testFleetPolicyIds.map((id, index) => ({ + label: `Test private location ${id}`, + agentPolicyId: id, + id, + geo: { + lat: 0, + lon: 0, + }, + isServiceManaged: false, + })); + + await this.supertestWithAuth + .post(`/s/${spaceId || 'default'}/api/saved_objects/_bulk_create`) + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .set('kbn-xsrf', 'true') + .send( + locations.map((location) => ({ + type: privateLocationSavedObjectName, + id: location.id, + attributes: location, + initialNamespaces: [spaceId ? spaceId : 'default'], + })) + ) + .expect(200); + + return locations; + } +} diff --git a/x-pack/test/api_integration/services/security_solution_api.gen.ts b/x-pack/test/api_integration/services/security_solution_api.gen.ts index a6d0ac86a810c..9ffdc1c43a2a1 100644 --- a/x-pack/test/api_integration/services/security_solution_api.gen.ts +++ b/x-pack/test/api_integration/services/security_solution_api.gen.ts @@ -28,6 +28,7 @@ import { BulkPatchRulesRequestBodyInput } from '@kbn/security-solution-plugin/co import { BulkUpdateRulesRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.gen'; import { BulkUpsertAssetCriticalityRecordsRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen'; import { CleanDraftTimelinesRequestBodyInput } from '@kbn/security-solution-plugin/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.gen'; +import { ConfigureRiskEngineSavedObjectRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen'; import { CopyTimelineRequestBodyInput } from '@kbn/security-solution-plugin/common/api/timeline/copy_timeline/copy_timeline_route.gen'; import { CreateAlertsMigrationRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.gen'; import { CreateAssetCriticalityRecordRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen'; @@ -104,6 +105,7 @@ import { GetRuleMigrationResourcesRequestQueryInput, GetRuleMigrationResourcesRequestParamsInput, } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; +import { GetRuleMigrationResourcesMissingRequestParamsInput } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; import { GetRuleMigrationStatsRequestParamsInput } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; import { GetRuleMigrationTranslationStatsRequestParamsInput } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; import { GetTimelineRequestQueryInput } from '@kbn/security-solution-plugin/common/api/timeline/get_timeline/get_timeline_route.gen'; @@ -313,6 +315,20 @@ If asset criticality records already exist for the specified entities, those rec .set(ELASTIC_HTTP_VERSION_HEADER, '2023-10-31') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); }, + /** + * Configuring the Risk Engine Saved Object + */ + configureRiskEngineSavedObject( + props: ConfigureRiskEngineSavedObjectProps, + kibanaSpace: string = 'default' + ) { + return supertest + .patch(routeWithNamespace('/api/risk_score/engine/saved_object/configure', kibanaSpace)) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '2023-10-31') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(props.body as object); + }, /** * Copies and returns a timeline or timeline template. @@ -998,6 +1014,27 @@ finalize it. .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .query(props.query); }, + /** + * Identifies missing resources from all the rules of an existing SIEM rules migration + */ + getRuleMigrationResourcesMissing( + props: GetRuleMigrationResourcesMissingProps, + kibanaSpace: string = 'default' + ) { + return supertest + .get( + routeWithNamespace( + replaceParams( + '/internal/siem_migrations/rules/{migration_id}/resources/missing', + props.params + ), + kibanaSpace + ) + ) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, /** * Retrieves the stats of a SIEM rules migration using the migration id provided */ @@ -1612,6 +1649,9 @@ export interface BulkUpsertAssetCriticalityRecordsProps { export interface CleanDraftTimelinesProps { body: CleanDraftTimelinesRequestBodyInput; } +export interface ConfigureRiskEngineSavedObjectProps { + body: ConfigureRiskEngineSavedObjectRequestBodyInput; +} export interface CopyTimelineProps { body: CopyTimelineRequestBodyInput; } @@ -1760,6 +1800,9 @@ export interface GetRuleMigrationResourcesProps { query: GetRuleMigrationResourcesRequestQueryInput; params: GetRuleMigrationResourcesRequestParamsInput; } +export interface GetRuleMigrationResourcesMissingProps { + params: GetRuleMigrationResourcesMissingRequestParamsInput; +} export interface GetRuleMigrationStatsProps { params: GetRuleMigrationStatsRequestParamsInput; } diff --git a/x-pack/test/apm_api_integration/tests/settings/anomaly_detection/no_access_user.spec.ts b/x-pack/test/apm_api_integration/tests/settings/anomaly_detection/no_access_user.spec.ts index 06be441facd25..f8b370dc18860 100644 --- a/x-pack/test/apm_api_integration/tests/settings/anomaly_detection/no_access_user.spec.ts +++ b/x-pack/test/apm_api_integration/tests/settings/anomaly_detection/no_access_user.spec.ts @@ -38,7 +38,9 @@ export default function apiTest({ getService }: FtrProviderContext) { const err = await expectToReject(() => getJobs()); expect(err.res.status).to.be(403); - expect(err.res.body.message).eql('Forbidden'); + expect(err.res.body.message).eql( + 'API [GET /internal/apm/settings/anomaly-detection/jobs] is unauthorized for user, this action is granted by the Kibana privileges [apm,ml:canGetJobs]' + ); }); }); @@ -49,7 +51,9 @@ export default function apiTest({ getService }: FtrProviderContext) { ); expect(err.res.status).to.be(403); - expect(err.res.body.message).eql('Forbidden'); + expect(err.res.body.message).eql( + 'API [POST /internal/apm/settings/anomaly-detection/jobs] is unauthorized for user, this action is granted by the Kibana privileges [apm,apm_settings_write,ml:canCreateJob]' + ); }); }); }); diff --git a/x-pack/test/automatic_import_api_integration/security/config_basic.ts b/x-pack/test/automatic_import_api_integration/apis/config_basic.ts similarity index 80% rename from x-pack/test/automatic_import_api_integration/security/config_basic.ts rename to x-pack/test/automatic_import_api_integration/apis/config_basic.ts index ebda3390790e3..85abda4f2a7ba 100644 --- a/x-pack/test/automatic_import_api_integration/security/config_basic.ts +++ b/x-pack/test/automatic_import_api_integration/apis/config_basic.ts @@ -7,8 +7,7 @@ import { createTestConfig } from '../common/config'; -// eslint-disable-next-line import/no-default-export -export default createTestConfig('security', { +export default createTestConfig('apis', { license: 'basic', ssl: true, testFiles: [require.resolve('./tests/basic')], diff --git a/x-pack/test/automatic_import_api_integration/apis/config_graphs.ts b/x-pack/test/automatic_import_api_integration/apis/config_graphs.ts new file mode 100644 index 0000000000000..c572c62bfb21f --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/config_graphs.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createTestConfig } from '../common/config'; + +export default createTestConfig('apis', { + license: 'trial', + ssl: true, + testFiles: [require.resolve('./tests/graphs')], + publicBaseUrl: true, +}); diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/analyze_logs.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/analyze_logs.ts similarity index 95% rename from x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/analyze_logs.ts rename to x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/analyze_logs.ts index 6fb3abf127747..9f842247161cc 100644 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/analyze_logs.ts +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/analyze_logs.ts @@ -9,7 +9,6 @@ import { postAnalyzeLogs } from '../../../../common/lib/api/analyze_logs'; import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { User } from '../../../../common/lib/authentication/types'; -// eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/categorization.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/categorization.ts new file mode 100644 index 0000000000000..0420822a8dfae --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/categorization.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { postCategorization } from '../../../../common/lib/api/categorization'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; +import { User } from '../../../../common/lib/authentication/types'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + + describe('Run categorization', () => { + it('should get 404 when trying to run categorization with basic license', async () => { + return await postCategorization({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['sample1', 'sample2'], + samplesFormat: { + name: 'json', + }, + connectorId: 'bedrock-connector', + currentPipeline: { + processors: [], + }, + }, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + }); + }); +}; diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/ecs.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/ecs.ts similarity index 95% rename from x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/ecs.ts rename to x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/ecs.ts index f55efceb3d04c..b6381a6ac7af8 100644 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/ecs.ts +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/ecs.ts @@ -9,7 +9,6 @@ import { postEcsMapping } from '../../../../common/lib/api/ecs'; import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { User } from '../../../../common/lib/authentication/types'; -// eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); @@ -27,6 +26,7 @@ export default ({ getService }: FtrProviderContext): void => { }, connectorId: 'bedrock-connector', }, + expectedHttpCode: 404, auth: { user: { username: 'elastic', password: 'elastic' } as User, }, diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/related.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/related.ts new file mode 100644 index 0000000000000..45c1b5935cb49 --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/related.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { postRelated } from '../../../../common/lib/api/related'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; +import { User } from '../../../../common/lib/authentication/types'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + + describe('Run related', () => { + it('should get 404 when trying to run related graph with basic license', async () => { + return await postRelated({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['sample1', 'sample2'], + samplesFormat: { + name: 'json', + }, + connectorId: 'bedrock-connector', + currentPipeline: { + processors: [], + }, + }, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + }); + }); +}; diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/basic/index.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/index.ts new file mode 100644 index 0000000000000..f0e61f713a6ac --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/index.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { + createUsersAndRoles, + deleteUsersAndRoles, + activateUserProfiles, +} from '../../../common/lib/authentication'; + +export default ({ loadTestFile, getService }: FtrProviderContext): void => { + describe('Automatic Import enabled: basic', function () { + before(async () => { + await createUsersAndRoles(getService); + // once a user profile is created the only way to remove it is to delete the user and roles, so best to activate + // before all the tests + await activateUserProfiles(getService); + }); + + after(async () => { + await deleteUsersAndRoles(getService); + }); + + // Basic + loadTestFile(require.resolve('./graphs/ecs')); + }); +}; diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/graphs/categorization.ts b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/categorization.ts new file mode 100644 index 0000000000000..5fed052da894a --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/categorization.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { postCategorization } from '../../../common/lib/api/categorization'; +import { User } from '../../../common/lib/authentication/types'; +import { BadRequestError } from '../../../common/lib/error/error'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const supertest = getService('supertest'); + describe('Run categorization', () => { + it('should get 400 when trying to run categorization with invalid json', async () => { + const response = await postCategorization({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-bedrock', + currentPipeline: { processors: [] }, + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be("Expected property name or '}' in JSON at position 1"); + } else { + expect().fail('Expected BadRequestError'); + } + }); + it('should get 400 when trying to run categorization without connector action', async () => { + const response = await postCategorization({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-dummy', + currentPipeline: { processors: [] }, + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be('Saved object [action/preconfigured-dummy] not found'); + } else { + expect().fail('Expected BadRequestError'); + } + }); + }); +} diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/graphs/ecs_mapping.ts b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/ecs_mapping.ts new file mode 100644 index 0000000000000..33281794109e2 --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/ecs_mapping.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { postEcsMapping } from '../../../common/lib/api/ecs'; +import { User } from '../../../common/lib/authentication/types'; +import { BadRequestError } from '../../../common/lib/error/error'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const supertest = getService('supertest'); + describe('Run ecs_mapping', () => { + it('should get 400 when trying to run ecs_mapping with invalid json', async () => { + const response = await postEcsMapping({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-bedrock', + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be("Expected property name or '}' in JSON at position 1"); + } else { + expect().fail('Expected BadRequestError'); + } + }); + it('should get 400 when trying to run ecs_mapping without connector action', async () => { + const response = await postEcsMapping({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-dummy', + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be('Saved object [action/preconfigured-dummy] not found'); + } else { + expect().fail('Expected BadRequestError'); + } + }); + }); +} diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/graphs/index.ts b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/index.ts new file mode 100644 index 0000000000000..c48b1da1d86e3 --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/index.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { + createUsersAndRoles, + deleteUsersAndRoles, + activateUserProfiles, +} from '../../../common/lib/authentication'; + +export default ({ loadTestFile, getService }: FtrProviderContext): void => { + describe('Automatic Import enabled: basic', function () { + before(async () => { + await createUsersAndRoles(getService); + // once a user profile is created the only way to remove it is to delete the user and roles, so best to activate + // before all the tests + await activateUserProfiles(getService); + }); + + after(async () => { + await deleteUsersAndRoles(getService); + }); + + // Basic + loadTestFile(require.resolve('./ecs_mapping')); + loadTestFile(require.resolve('./categorization')); + loadTestFile(require.resolve('./related')); + }); +}; diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/graphs/related.ts b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/related.ts new file mode 100644 index 0000000000000..9698017a2a3fb --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/related.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { postRelated } from '../../../common/lib/api/related'; +import { User } from '../../../common/lib/authentication/types'; +import { BadRequestError } from '../../../common/lib/error/error'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const supertest = getService('supertest'); + describe('Run related', () => { + it('should get 400 when trying to run related with invalid json', async () => { + const response = await postRelated({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-bedrock', + currentPipeline: { processors: [] }, + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be("Expected property name or '}' in JSON at position 1"); + } else { + expect().fail('Expected BadRequestError'); + } + }); + it('should get 400 when trying to run related without connector action', async () => { + const response = await postRelated({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-dummy', + currentPipeline: { processors: [] }, + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be('Saved object [action/preconfigured-dummy] not found'); + } else { + expect().fail('Expected BadRequestError'); + } + }); + }); +} diff --git a/x-pack/test/automatic_import_api_integration/common/lib/api/categorization.ts b/x-pack/test/automatic_import_api_integration/common/lib/api/categorization.ts index f14efc63ee8a0..38bc7ddafe320 100644 --- a/x-pack/test/automatic_import_api_integration/common/lib/api/categorization.ts +++ b/x-pack/test/automatic_import_api_integration/common/lib/api/categorization.ts @@ -12,6 +12,7 @@ import { } from '@kbn/integration-assistant-plugin/common'; import { superUser } from '../authentication/users'; import { User } from '../authentication/types'; +import { BadRequestError } from '../error/error'; export const postCategorization = async ({ supertest, @@ -23,7 +24,7 @@ export const postCategorization = async ({ req: CategorizationRequestBody; expectedHttpCode?: number; auth: { user: User }; -}): Promise => { +}): Promise => { const { body: response } = await supertest .post(`${CATEGORIZATION_GRAPH_PATH}`) .send(req) @@ -32,5 +33,9 @@ export const postCategorization = async ({ .auth(auth.user.username, auth.user.password) .expect(expectedHttpCode); + if (response.statusCode === 400) { + return new BadRequestError(response.message); + } + return response; }; diff --git a/x-pack/test/automatic_import_api_integration/common/lib/api/ecs.ts b/x-pack/test/automatic_import_api_integration/common/lib/api/ecs.ts index 3169659d7e2f3..82888d0861659 100644 --- a/x-pack/test/automatic_import_api_integration/common/lib/api/ecs.ts +++ b/x-pack/test/automatic_import_api_integration/common/lib/api/ecs.ts @@ -12,6 +12,7 @@ import { } from '@kbn/integration-assistant-plugin/common'; import { superUser } from '../authentication/users'; import { User } from '../authentication/types'; +import { BadRequestError } from '../error/error'; export const postEcsMapping = async ({ supertest, @@ -23,7 +24,7 @@ export const postEcsMapping = async ({ req: EcsMappingRequestBody; expectedHttpCode?: number; auth: { user: User }; -}): Promise => { +}): Promise => { const { body: response } = await supertest .post(`${ECS_GRAPH_PATH}`) .send(req) @@ -32,5 +33,9 @@ export const postEcsMapping = async ({ .auth(auth.user.username, auth.user.password) .expect(expectedHttpCode); + if (response.statusCode === 400) { + return new BadRequestError(response.message); + } + return response; }; diff --git a/x-pack/test/automatic_import_api_integration/common/lib/api/related.ts b/x-pack/test/automatic_import_api_integration/common/lib/api/related.ts index 7ebe3d3bf89c2..0620d98fcb269 100644 --- a/x-pack/test/automatic_import_api_integration/common/lib/api/related.ts +++ b/x-pack/test/automatic_import_api_integration/common/lib/api/related.ts @@ -12,6 +12,7 @@ import { } from '@kbn/integration-assistant-plugin/common'; import { superUser } from '../authentication/users'; import { User } from '../authentication/types'; +import { BadRequestError } from '../error/error'; export const postRelated = async ({ supertest, @@ -23,7 +24,7 @@ export const postRelated = async ({ req: RelatedRequestBody; expectedHttpCode?: number; auth: { user: User }; -}): Promise => { +}): Promise => { const { body: response } = await supertest .post(`${RELATED_GRAPH_PATH}`) .send(req) @@ -32,5 +33,9 @@ export const postRelated = async ({ .auth(auth.user.username, auth.user.password) .expect(expectedHttpCode); + if (response.statusCode === 400) { + return new BadRequestError(response.message); + } + return response; }; diff --git a/x-pack/test/automatic_import_api_integration/common/lib/error/error.ts b/x-pack/test/automatic_import_api_integration/common/lib/error/error.ts new file mode 100644 index 0000000000000..d0a19d0d8dfdb --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/common/lib/error/error.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export class BadRequestError { + statusCode: number = 400; + error: string | undefined; + message: string | undefined; + + constructor(message: string) { + this.message = message; + } +} diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/categorization.ts b/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/categorization.ts deleted file mode 100644 index 4d9a3a0853109..0000000000000 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/categorization.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { postCategorization } from '../../../../common/lib/api/categorization'; -import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; -import { User } from '../../../../common/lib/authentication/types'; - -// eslint-disable-next-line import/no-default-export -export default ({ getService }: FtrProviderContext): void => { - const supertest = getService('supertest'); - - describe('Run categorization', () => { - it('should get 404 when trying to run categorization with basic license', async () => { - return await postCategorization({ - supertest, - req: { - packageName: 'some-package', - dataStreamName: 'some-data-stream', - rawSamples: ['sample1', 'sample2'], - samplesFormat: { - name: 'json', - }, - connectorId: 'bedrock-connector', - currentPipeline: { - processors: [], - }, - }, - auth: { - user: { username: 'elastic', password: 'elastic' } as User, - }, - }); - }); - }); -}; diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/related.ts b/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/related.ts deleted file mode 100644 index 6091b64f7c224..0000000000000 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/related.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { postRelated } from '../../../../common/lib/api/related'; -import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; -import { User } from '../../../../common/lib/authentication/types'; - -// eslint-disable-next-line import/no-default-export -export default ({ getService }: FtrProviderContext): void => { - const supertest = getService('supertest'); - - describe('Run related', () => { - it('should get 404 when trying to run related graph with basic license', async () => { - return await postRelated({ - supertest, - req: { - packageName: 'some-package', - dataStreamName: 'some-data-stream', - rawSamples: ['sample1', 'sample2'], - samplesFormat: { - name: 'json', - }, - connectorId: 'bedrock-connector', - currentPipeline: { - processors: [], - }, - }, - auth: { - user: { username: 'elastic', password: 'elastic' } as User, - }, - }); - }); - }); -}; diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/index.ts b/x-pack/test/automatic_import_api_integration/security/tests/basic/index.ts deleted file mode 100644 index 7391c1e3ae9ed..0000000000000 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { - createUsersAndRoles, - deleteUsersAndRoles, - activateUserProfiles, -} from '../../../common/lib/authentication'; - -// eslint-disable-next-line import/no-default-export -export default ({ loadTestFile, getService }: FtrProviderContext): void => { - describe('Automatic Import enabled: basic', function () { - before(async () => { - await createUsersAndRoles(getService); - // once a user profile is created the only way to remove it is to delete the user and roles, so best to activate - // before all the tests - await activateUserProfiles(getService); - }); - - after(async () => { - await deleteUsersAndRoles(getService); - }); - - // Basic - loadTestFile(require.resolve('./graphs/ecs')); - }); -}; diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/find_cases.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/find_cases.ts index 0578e4f68b986..ccfae3068f5dc 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/find_cases.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/find_cases.ts @@ -62,7 +62,6 @@ export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); const es = getService('es'); const supertestWithoutAuth = getService('supertestWithoutAuth'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); describe('find_cases', () => { @@ -560,16 +559,11 @@ export default ({ getService }: FtrProviderContext): void => { }); describe('alerts', () => { - const defaultSignalsIndex = '.siem-signals-default-000001'; + const defaultSignalsIndex = 'siem-signals-default-000001'; const signalID = '4679431ee0ba3209b6fcd60a255a696886fe0a7d18f5375de510ff5b68fa6b78'; const signalID2 = '1023bcfea939643c5e51fd8df53797e0ea693cee547db579ab56d96402365c1e'; - beforeEach(async () => { - await esArchiver.load('x-pack/test/functional/es_archives/cases/signals/default'); - }); - afterEach(async () => { - await esArchiver.unload('x-pack/test/functional/es_archives/cases/signals/default'); await deleteAllCaseItems(es); }); @@ -592,11 +586,6 @@ export default ({ getService }: FtrProviderContext): void => { owner: 'securitySolutionFixture', }, }); - - // There is potential for the alert index to not be refreshed by the time the second comment is created - // which could attempt to update the alert status again and will encounter a conflict so this will - // ensure that the index is up to date before we try to update the next alert status - await es.indices.refresh({ index: defaultSignalsIndex }); } const patchedCase = await createComment({ diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts index 53d7712b4fc15..1c3640626436a 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/cases/patch_cases.ts @@ -545,7 +545,7 @@ export default ({ getService }: FtrProviderContext): void => { caseId: postedCase.id, params: { alertId: '4679431ee0ba3209b6fcd60a255a696886fe0a7d18f5375de510ff5b68fa6b78', - index: '.siem-signals-default-000001', + index: 'siem-signals-default-000001', rule: { id: 'test-rule-id', name: 'test-index-id' }, type: AttachmentType.alert, owner: 'securitySolutionFixture', @@ -593,7 +593,7 @@ export default ({ getService }: FtrProviderContext): void => { caseId: postedCaseId, params: { alertId: '4679431ee0ba3209b6fcd60a255a696886fe0a7d18f5375de510ff5b68fa6b78', - index: '.siem-signals-default-000001', + index: 'siem-signals-default-000001', rule: { id: 'test-rule-id', name: 'test-index-id' }, type: AttachmentType.alert, owner: 'securitySolutionFixture', @@ -1528,7 +1528,7 @@ export default ({ getService }: FtrProviderContext): void => { describe('alerts', () => { describe('Update', () => { - const defaultSignalsIndex = '.siem-signals-default-000001'; + const defaultSignalsIndex = 'siem-signals-default-000001'; beforeEach(async () => { await esArchiver.load('x-pack/test/functional/es_archives/cases/signals/default'); @@ -1662,7 +1662,7 @@ export default ({ getService }: FtrProviderContext): void => { }); describe('No update', () => { - const defaultSignalsIndex = '.siem-signals-default-000001'; + const defaultSignalsIndex = 'siem-signals-default-000001'; beforeEach(async () => { await esArchiver.load('x-pack/test/functional/es_archives/cases/signals/duplicate_ids'); @@ -1681,12 +1681,12 @@ export default ({ getService }: FtrProviderContext): void => { }); }; - // this id exists only in .siem-signals-default-000001 + // this id exists only in siem-signals-default-000001 const signalIDInFirstIndex = 'cae78067e65582a3b277c1ad46ba3cb29044242fe0d24bbf3fcde757fdd31d1c'; - // This id exists in both .siem-signals-default-000001 and .siem-signals-default-000002 + // This id exists in both siem-signals-default-000001 and siem-signals-default-000002 const signalIDInSecondIndex = 'duplicate-signal-id'; - const signalsIndex2 = '.siem-signals-default-000002'; + const signalsIndex2 = 'siem-signals-default-000002'; const individualCase = await createCase(supertest, { ...postCaseReq, diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/client/update_alert_status.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/client/update_alert_status.ts index 522a4d88e12c9..0e2a977aceed2 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/client/update_alert_status.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/client/update_alert_status.ts @@ -24,7 +24,7 @@ export default ({ getService }: FtrProviderContext): void => { const esArchiver = getService('esArchiver'); describe('update_alert_status', () => { - const defaultSignalsIndex = '.siem-signals-default-000001'; + const defaultSignalsIndex = 'siem-signals-default-000001'; beforeEach(async () => { await esArchiver.load('x-pack/test/functional/es_archives/cases/signals/default'); diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/internal/metrics/get_case_metrics_alerts.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/internal/metrics/get_case_metrics_alerts.ts index f8ee2e8bc66fb..acfe0e1be6c3c 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/common/internal/metrics/get_case_metrics_alerts.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/common/internal/metrics/get_case_metrics_alerts.ts @@ -233,12 +233,12 @@ export default ({ getService }: FtrProviderContext): void => { '48bdf505176b47705da896fb58bc2070768c072778f5412f162abec2ff6ca67b', ], index: [ - '.siem-signals-default-000001', - '.siem-signals-default-000001', - '.siem-signals-default-000001', - '.siem-signals-default-000001', - '.siem-signals-default-000001', - '.siem-signals-default-000001', + 'siem-signals-default-000001', + 'siem-signals-default-000001', + 'siem-signals-default-000001', + 'siem-signals-default-000001', + 'siem-signals-default-000001', + 'siem-signals-default-000001', ], }, }); diff --git a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/cases/push_case.ts b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/cases/push_case.ts index da1416cbb9430..23a6850326234 100644 --- a/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/cases/push_case.ts +++ b/x-pack/test/cases_api_integration/security_and_spaces/tests/trial/cases/push_case.ts @@ -615,7 +615,7 @@ export default ({ getService }: FtrProviderContext): void => { }); describe('alerts', () => { - const defaultSignalsIndex = '.siem-signals-default-000001'; + const defaultSignalsIndex = 'siem-signals-default-000001'; const signalID = '4679431ee0ba3209b6fcd60a255a696886fe0a7d18f5375de510ff5b68fa6b78'; const signalID2 = '1023bcfea939643c5e51fd8df53797e0ea693cee547db579ab56d96402365c1e'; diff --git a/x-pack/test/cloud_security_posture_api/routes/graph.ts b/x-pack/test/cloud_security_posture_api/routes/graph.ts index 95625b24fa59a..08adf73839ea2 100644 --- a/x-pack/test/cloud_security_posture_api/routes/graph.ts +++ b/x-pack/test/cloud_security_posture_api/routes/graph.ts @@ -28,14 +28,14 @@ export default function (providerContext: FtrProviderContext) { const cspSecurity = CspSecurityCommonProvider(providerContext); const postGraph = (agent: Agent, body: GraphRequest, auth?: { user: string; pass: string }) => { - const req = agent + let req = agent .post('/internal/cloud_security_posture/graph') .set(ELASTIC_HTTP_VERSION_HEADER, '1') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .set('kbn-xsrf', 'xxxx'); if (auth) { - req.auth(auth.user, auth.pass); + req = req.auth(auth.user, auth.pass); } return req.send(body); diff --git a/x-pack/test/cloud_security_posture_functional/config.ts b/x-pack/test/cloud_security_posture_functional/config.ts index 7e80788ffccfe..bea81dd38dc15 100644 --- a/x-pack/test/cloud_security_posture_functional/config.ts +++ b/x-pack/test/cloud_security_posture_functional/config.ts @@ -38,6 +38,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { * 1. release a new package to EPR * 2. merge the updated version number change to kibana */ + `--uiSettings.overrides.securitySolution:enableVisualizationsInFlyout=true`, `--xpack.securitySolution.enableExperimental=${JSON.stringify([ 'graphVisualizationInFlyoutEnabled', ])}`, diff --git a/x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit/data.json b/x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit/data.json index 5e3d4cdfdffd5..e5b83d55c15ae 100644 --- a/x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit/data.json +++ b/x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit/data.json @@ -90,6 +90,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin@example.com" + ], "ip": [ "10.0.0.1" ], @@ -215,6 +220,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin2@example.com" + ], "ip": [ "10.0.0.1" ], @@ -340,6 +350,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin3@example.com" + ], "ip": [ "10.0.0.1" ], @@ -465,6 +480,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin3@example.com" + ], "ip": [ "10.0.0.1" ], @@ -599,6 +619,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin4@example.com" + ], "ip": [ "10.0.0.1" ], diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/alerts_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/alerts_page.ts index f3a9f7b1448a8..6ebd496fca365 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/alerts_page.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/alerts_page.ts @@ -10,7 +10,7 @@ import { FtrService } from '../../functional/ftr_provider_context'; const ALERT_TABLE_ROW_CSS_SELECTOR = '[data-test-subj="alertsTable"] .euiDataGridRow'; const VISUALIZATIONS_SECTION_HEADER_TEST_ID = 'securitySolutionFlyoutVisualizationsHeader'; -const GRAPH_PREVIEW_TEST_ID = 'securitySolutionFlyoutGraphPreview'; +const GRAPH_PREVIEW_CONTENT_TEST_ID = 'securitySolutionFlyoutGraphPreviewContent'; const GRAPH_PREVIEW_LOADING_TEST_ID = 'securitySolutionFlyoutGraphPreviewLoading'; export class AlertsPageObject extends FtrService { @@ -89,12 +89,12 @@ export class AlertsPageObject extends FtrService { }, assertGraphPreviewVisible: async () => { - return await this.testSubjects.existOrFail(GRAPH_PREVIEW_TEST_ID); + return await this.testSubjects.existOrFail(GRAPH_PREVIEW_CONTENT_TEST_ID); }, assertGraphNodesNumber: async (expected: number) => { await this.flyout.waitGraphIsLoaded(); - const graph = await this.testSubjects.find(GRAPH_PREVIEW_TEST_ID); + const graph = await this.testSubjects.find(GRAPH_PREVIEW_CONTENT_TEST_ID); await graph.scrollIntoView(); const nodes = await graph.findAllByCssSelector('.react-flow__nodes .react-flow__node'); expect(nodes.length).to.be(expected); diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/expanded_flyout.ts b/x-pack/test/cloud_security_posture_functional/page_objects/expanded_flyout.ts new file mode 100644 index 0000000000000..5829e9083a8cf --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/page_objects/expanded_flyout.ts @@ -0,0 +1,112 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; +import type { FilterBarService } from '@kbn/test-suites-src/functional/services/filter_bar'; +import { FtrService } from '../../functional/ftr_provider_context'; + +const GRAPH_PREVIEW_TITLE_LINK_TEST_ID = 'securitySolutionFlyoutGraphPreviewTitleLink'; +const NODE_EXPAND_BUTTON_TEST_ID = 'nodeExpandButton'; +const GRAPH_INVESTIGATION_TEST_ID = 'cloudSecurityGraphGraphInvestigation'; +const GRAPH_NODE_EXPAND_POPOVER_TEST_ID = `${GRAPH_INVESTIGATION_TEST_ID}GraphNodeExpandPopover`; +const GRAPH_NODE_POPOVER_EXPLORE_RELATED_TEST_ID = `${GRAPH_INVESTIGATION_TEST_ID}ExploreRelatedEntities`; +const GRAPH_NODE_POPOVER_SHOW_ACTIONS_BY_TEST_ID = `${GRAPH_INVESTIGATION_TEST_ID}ShowActionsByEntity`; +const GRAPH_NODE_POPOVER_SHOW_ACTIONS_ON_TEST_ID = `${GRAPH_INVESTIGATION_TEST_ID}ShowActionsOnEntity`; +type Filter = Parameters[0]; + +export class ExpandedFlyout extends FtrService { + private readonly pageObjects = this.ctx.getPageObjects(['common', 'header']); + private readonly testSubjects = this.ctx.getService('testSubjects'); + private readonly filterBar = this.ctx.getService('filterBar'); + + async expandGraph(): Promise { + await this.testSubjects.click(GRAPH_PREVIEW_TITLE_LINK_TEST_ID); + } + + async waitGraphIsLoaded(): Promise { + await this.testSubjects.existOrFail(GRAPH_INVESTIGATION_TEST_ID, { timeout: 10000 }); + } + + async assertGraphNodesNumber(expected: number): Promise { + await this.waitGraphIsLoaded(); + const graph = await this.testSubjects.find(GRAPH_INVESTIGATION_TEST_ID); + await graph.scrollIntoView(); + const nodes = await graph.findAllByCssSelector('.react-flow__nodes .react-flow__node'); + expect(nodes.length).to.be(expected); + } + + async selectNode(nodeId: string): Promise { + await this.waitGraphIsLoaded(); + const graph = await this.testSubjects.find(GRAPH_INVESTIGATION_TEST_ID); + await graph.scrollIntoView(); + const nodes = await graph.findAllByCssSelector( + `.react-flow__nodes .react-flow__node[data-id="${nodeId}"]` + ); + expect(nodes.length).to.be(1); + await nodes[0].moveMouseTo(); + return nodes[0]; + } + + async clickOnNodeExpandButton(nodeId: string): Promise { + const node = await this.selectNode(nodeId); + const expandButton = await node.findByTestSubject(NODE_EXPAND_BUTTON_TEST_ID); + await expandButton.click(); + await this.testSubjects.existOrFail(GRAPH_NODE_EXPAND_POPOVER_TEST_ID); + } + + async showActionsByEntity(nodeId: string): Promise { + await this.clickOnNodeExpandButton(nodeId); + await this.testSubjects.click(GRAPH_NODE_POPOVER_SHOW_ACTIONS_BY_TEST_ID); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + async showActionsOnEntity(nodeId: string): Promise { + await this.clickOnNodeExpandButton(nodeId); + await this.testSubjects.click(GRAPH_NODE_POPOVER_SHOW_ACTIONS_ON_TEST_ID); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + async exploreRelatedEntities(nodeId: string): Promise { + await this.clickOnNodeExpandButton(nodeId); + await this.testSubjects.click(GRAPH_NODE_POPOVER_EXPLORE_RELATED_TEST_ID); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + async expectFilterTextEquals(filterIdx: number, expected: string): Promise { + const filters = await this.filterBar.getFiltersLabel(); + expect(filters.length).to.be.greaterThan(filterIdx); + expect(filters[filterIdx]).to.be(expected); + } + + async expectFilterPreviewEquals(filterIdx: number, expected: string): Promise { + await this.clickEditFilter(filterIdx); + + const filterPreview = await this.filterBar.getFilterEditorPreview(); + expect(filterPreview).to.be(expected); + + await this.filterBar.ensureFieldEditorModalIsClosed(); + } + + async clickEditFilter(filterIdx: number): Promise { + await this.filterBar.clickEditFilterById(filterIdx.toString()); + } + + async clearAllFilters(): Promise { + await this.testSubjects.click(`${GRAPH_INVESTIGATION_TEST_ID} > showQueryBarMenu`); + await this.testSubjects.click('filter-sets-removeAllFilters'); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + async addFilter(filter: Filter): Promise { + await this.testSubjects.click(`${GRAPH_INVESTIGATION_TEST_ID} > addFilter`); + await this.filterBar.createFilter(filter); + await this.testSubjects.scrollIntoView('saveFilter'); + await this.testSubjects.clickWhenNotDisabled('saveFilter'); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } +} diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/index.ts b/x-pack/test/cloud_security_posture_functional/page_objects/index.ts index b7c20632e82f5..fdc904e31aac0 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/index.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/index.ts @@ -14,9 +14,13 @@ import { BenchmarkPagePageProvider } from './benchmark_page'; import { CspSecurityCommonProvider } from './security_common'; import { RulePagePageProvider } from './rule_page'; import { AlertsPageObject } from './alerts_page'; +import { NetworkEventsPageObject } from './network_events_page'; +import { ExpandedFlyout } from './expanded_flyout'; export const cloudSecurityPosturePageObjects = { alerts: AlertsPageObject, + networkEvents: NetworkEventsPageObject, + expandedFlyout: ExpandedFlyout, findings: FindingsPageProvider, cloudPostureDashboard: CspDashboardPageProvider, cisAddIntegration: AddCisIntegrationFormPageProvider, diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/network_events_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/network_events_page.ts new file mode 100644 index 0000000000000..8e03fae7eb7e0 --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/page_objects/network_events_page.ts @@ -0,0 +1,107 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrService } from '../../functional/ftr_provider_context'; + +const EVENTS_TABLE_ROW_CSS_SELECTOR = '[data-test-subj="events-viewer-panel"] .euiDataGridRow'; +const VISUALIZATIONS_SECTION_HEADER_TEST_ID = 'securitySolutionFlyoutVisualizationsHeader'; +const GRAPH_PREVIEW_CONTENT_TEST_ID = 'securitySolutionFlyoutGraphPreviewContent'; +const GRAPH_PREVIEW_LOADING_TEST_ID = 'securitySolutionFlyoutGraphPreviewLoading'; + +export class NetworkEventsPageObject extends FtrService { + private readonly retry = this.ctx.getService('retry'); + private readonly pageObjects = this.ctx.getPageObjects(['common', 'header']); + private readonly testSubjects = this.ctx.getService('testSubjects'); + private readonly defaultTimeoutMs = this.ctx.getService('config').get('timeouts.waitFor'); + + async navigateToNetworkEventsPage(urlQueryParams: string = ''): Promise { + await this.pageObjects.common.navigateToUrlWithBrowserHistory( + 'securitySolution', + '/network/events', + `${urlQueryParams && `?${urlQueryParams}`}`, + { + ensureCurrentUrl: false, + } + ); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + getAbsoluteTimerangeFilter(from: string, to: string) { + return `timerange=(global:(linkTo:!(),timerange:(from:%27${from}%27,kind:absolute,to:%27${to}%27)))`; + } + + getFlyoutFilter(eventId: string) { + return `flyout=(preview:!(),right:(id:document-details-right,params:(id:%27${eventId}%27,indexName:logs-gcp.audit-default,scopeId:network-page-events)))`; + } + + /** + * Clicks the refresh button on the network events page and waits for it to complete + */ + async clickRefresh(): Promise { + await this.ensureOnNetworkEventsPage(); + await this.testSubjects.click('querySubmitButton'); + + // wait for refresh to complete + await this.retry.waitFor( + 'Network events pages refresh button to be enabled', + async (): Promise => { + const refreshButton = await this.testSubjects.find('querySubmitButton'); + + return (await refreshButton.isDisplayed()) && (await refreshButton.isEnabled()); + } + ); + } + + async ensureOnNetworkEventsPage(): Promise { + await this.testSubjects.existOrFail('network-details-headline'); + } + + async waitForListToHaveEvents(timeoutMs?: number): Promise { + const allEventRows = await this.testSubjects.findService.allByCssSelector( + EVENTS_TABLE_ROW_CSS_SELECTOR + ); + + if (!Boolean(allEventRows.length)) { + await this.retry.waitForWithTimeout( + 'waiting for events to show up on network events page', + timeoutMs ?? this.defaultTimeoutMs, + async (): Promise => { + await this.clickRefresh(); + + const allEventRowsInner = await this.testSubjects.findService.allByCssSelector( + EVENTS_TABLE_ROW_CSS_SELECTOR + ); + + return Boolean(allEventRowsInner.length); + } + ); + } + } + + flyout = { + expandVisualizations: async (): Promise => { + await this.testSubjects.click(VISUALIZATIONS_SECTION_HEADER_TEST_ID); + }, + + assertGraphPreviewVisible: async () => { + return await this.testSubjects.existOrFail(GRAPH_PREVIEW_CONTENT_TEST_ID); + }, + + assertGraphNodesNumber: async (expected: number) => { + await this.flyout.waitGraphIsLoaded(); + const graph = await this.testSubjects.find(GRAPH_PREVIEW_CONTENT_TEST_ID); + await graph.scrollIntoView(); + const nodes = await graph.findAllByCssSelector('.react-flow__nodes .react-flow__node'); + expect(nodes.length).to.be(expected); + }, + + waitGraphIsLoaded: async () => { + await this.testSubjects.missingOrFail(GRAPH_PREVIEW_LOADING_TEST_ID, { timeout: 10000 }); + }, + }; +} diff --git a/x-pack/test/cloud_security_posture_functional/pages/alerts_flyout.ts b/x-pack/test/cloud_security_posture_functional/pages/alerts_flyout.ts index 63eafc4107bc1..35f9578929ada 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/alerts_flyout.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/alerts_flyout.ts @@ -14,8 +14,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const logger = getService('log'); const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); - const pageObjects = getPageObjects(['common', 'header', 'alerts']); + const pageObjects = getPageObjects(['common', 'header', 'alerts', 'expandedFlyout']); const alertsPage = pageObjects.alerts; + const expandedFlyout = pageObjects.expandedFlyout; describe('Security Alerts Page - Graph visualization', function () { this.tags(['cloud_security_posture_graph_viz']); @@ -54,9 +55,52 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { ); }); - it('should render graph visualization', async () => { + it('expanded flyout - filter by node', async () => { await alertsPage.flyout.assertGraphPreviewVisible(); await alertsPage.flyout.assertGraphNodesNumber(3); + + await expandedFlyout.expandGraph(); + await expandedFlyout.waitGraphIsLoaded(); + await expandedFlyout.assertGraphNodesNumber(3); + + // Show actions by entity + await expandedFlyout.showActionsByEntity('admin@example.com'); + await expandedFlyout.expectFilterTextEquals(0, 'actor.entity.id: admin@example.com'); + await expandedFlyout.expectFilterPreviewEquals(0, 'actor.entity.id: admin@example.com'); + + // Show actions on entity + await expandedFlyout.showActionsOnEntity('admin@example.com'); + await expandedFlyout.expectFilterTextEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com' + ); + await expandedFlyout.expectFilterPreviewEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com' + ); + + // Explore related entities + await expandedFlyout.exploreRelatedEntities('admin@example.com'); + await expandedFlyout.expectFilterTextEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com OR related.entity: admin@example.com' + ); + await expandedFlyout.expectFilterPreviewEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com OR related.entity: admin@example.com' + ); + + // Clear filters + await expandedFlyout.clearAllFilters(); + + // Add custom filter + await expandedFlyout.addFilter({ + field: 'actor.entity.id', + operation: 'is', + value: 'admin2@example.com', + }); + await pageObjects.header.waitUntilLoadingHasFinished(); + await expandedFlyout.assertGraphNodesNumber(5); }); }); } diff --git a/x-pack/test/cloud_security_posture_functional/pages/events_flyout.ts b/x-pack/test/cloud_security_posture_functional/pages/events_flyout.ts new file mode 100644 index 0000000000000..0848307ca26d2 --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/pages/events_flyout.ts @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { waitForPluginInitialized } from '../../cloud_security_posture_api/utils'; +import type { FtrProviderContext } from '../ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const retry = getService('retry'); + const logger = getService('log'); + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + const pageObjects = getPageObjects(['common', 'header', 'networkEvents', 'expandedFlyout']); + const networkEventsPage = pageObjects.networkEvents; + const expandedFlyout = pageObjects.expandedFlyout; + + describe('Security Network Page - Graph visualization', function () { + this.tags(['cloud_security_posture_graph_viz']); + + before(async () => { + await esArchiver.load( + 'x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit' + ); + + await waitForPluginInitialized({ retry, supertest, logger }); + + // Setting the timerange to fit the data and open the flyout for a specific alert + await networkEventsPage.navigateToNetworkEventsPage( + `${networkEventsPage.getAbsoluteTimerangeFilter( + '2024-09-01T00:00:00.000Z', + '2024-09-02T00:00:00.000Z' + )}&${networkEventsPage.getFlyoutFilter('1')}` + ); + + await networkEventsPage.waitForListToHaveEvents(); + + await networkEventsPage.flyout.expandVisualizations(); + }); + + after(async () => { + await esArchiver.unload( + 'x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit' + ); + }); + + it('expanded flyout - filter by node', async () => { + await networkEventsPage.flyout.assertGraphPreviewVisible(); + await networkEventsPage.flyout.assertGraphNodesNumber(3); + + await expandedFlyout.expandGraph(); + await expandedFlyout.waitGraphIsLoaded(); + await expandedFlyout.assertGraphNodesNumber(3); + + // Show actions by entity + await expandedFlyout.showActionsByEntity('admin@example.com'); + await expandedFlyout.expectFilterTextEquals(0, 'actor.entity.id: admin@example.com'); + await expandedFlyout.expectFilterPreviewEquals(0, 'actor.entity.id: admin@example.com'); + + // Show actions on entity + await expandedFlyout.showActionsOnEntity('admin@example.com'); + await expandedFlyout.expectFilterTextEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com' + ); + await expandedFlyout.expectFilterPreviewEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com' + ); + + // Explore related entities + await expandedFlyout.exploreRelatedEntities('admin@example.com'); + await expandedFlyout.expectFilterTextEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com OR related.entity: admin@example.com' + ); + await expandedFlyout.expectFilterPreviewEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com OR related.entity: admin@example.com' + ); + + // Clear filters + await expandedFlyout.clearAllFilters(); + + // Add custom filter + await expandedFlyout.addFilter({ + field: 'actor.entity.id', + operation: 'is', + value: 'admin2@example.com', + }); + await pageObjects.header.waitUntilLoadingHasFinished(); + await expandedFlyout.assertGraphNodesNumber(5); + }); + }); +} diff --git a/x-pack/test/cloud_security_posture_functional/pages/index.ts b/x-pack/test/cloud_security_posture_functional/pages/index.ts index 0114b6a8ce4dc..67c06d979002f 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/index.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/index.ts @@ -37,5 +37,6 @@ export default function ({ getPageObjects, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./vulnerabilities_grouping')); loadTestFile(require.resolve('./benchmark')); loadTestFile(require.resolve('./alerts_flyout')); + loadTestFile(require.resolve('./events_flyout')); }); } diff --git a/x-pack/test/common/utils/security_solution/detections_response/index.ts b/x-pack/test/common/utils/security_solution/detections_response/index.ts index 43c2a54900c15..45efc2cee3b4c 100644 --- a/x-pack/test/common/utils/security_solution/detections_response/index.ts +++ b/x-pack/test/common/utils/security_solution/detections_response/index.ts @@ -5,9 +5,10 @@ * 2.0. */ -export * from './rules'; export * from './alerts'; -export * from './delete_all_anomalies'; export * from './count_down_test'; +export * from './delete_all_anomalies'; export * from './route_with_namespace'; +export * from './rules'; +export * from './tasks'; export * from './wait_for'; diff --git a/x-pack/test/common/utils/security_solution/detections_response/tasks/index.ts b/x-pack/test/common/utils/security_solution/detections_response/tasks/index.ts new file mode 100644 index 0000000000000..128f0cfe9b93a --- /dev/null +++ b/x-pack/test/common/utils/security_solution/detections_response/tasks/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './indices_metadata'; +export * from './task_manager'; diff --git a/x-pack/test/common/utils/security_solution/detections_response/tasks/indices_metadata.ts b/x-pack/test/common/utils/security_solution/detections_response/tasks/indices_metadata.ts new file mode 100644 index 0000000000000..0c4d90749e423 --- /dev/null +++ b/x-pack/test/common/utils/security_solution/detections_response/tasks/indices_metadata.ts @@ -0,0 +1,108 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Client } from '@elastic/elasticsearch'; + +const DS_PREFIX = 'testing-datastream'; +const ILM_PREFIX = 'testing-ilm'; + +export const randomDatastream = async (es: Client, policyName?: string): Promise => { + const name = `${DS_PREFIX}-${Date.now()}`; + + let settings = {}; + + if (policyName) { + settings = { + ...settings, + 'index.lifecycle.name': policyName, + }; + } + + const indexTemplateBody = { + index_patterns: [`${DS_PREFIX}-*`], + data_stream: {}, + template: { + settings, + }, + }; + + await es.indices.putIndexTemplate({ + name: DS_PREFIX, + body: indexTemplateBody, + }); + + await es.indices.createDataStream({ name }); + + return name; +}; + +export const randomIlmPolicy = async (es: Client): Promise => { + const name = `${ILM_PREFIX}-${Date.now()}`; + + const policy = { + phases: { + hot: { + actions: { + rollover: { + max_size: '50gb', + max_age: '30d', + }, + }, + }, + warm: { + min_age: '30d', + actions: { + forcemerge: { + max_num_segments: 1, + }, + shrink: { + number_of_shards: 1, + }, + allocate: { + number_of_replicas: 1, + }, + }, + }, + delete: { + min_age: '90d', + actions: { + delete: {}, + }, + }, + }, + }; + + await es.ilm.putLifecycle({ name, policy }); + + return name; +}; + +export const ensureBackingIndices = async (dsName: string, count: number, es: Client) => { + const stats = await es.indices.dataStreamsStats({ name: dsName }); + if (stats.data_streams.length !== 1) { + throw new Error('Data stream not found'); + } + const current = stats.data_streams[0].backing_indices; + + if (current < count) { + for (let i = current; i < count; i++) { + await es.indices.rollover({ alias: dsName }); + } + } else if (current > count) { + throw new Error('Cannot reduce the number of backing indices'); + } +}; + +export const cleanupDatastreams = async (es: Client) => { + await es.indices.deleteDataStream({ name: `${DS_PREFIX}*` }); +}; + +export const cleanupPolicies = async (es: Client) => { + const policies = await es.ilm.getLifecycle({ name: `${ILM_PREFIX}*` }); + + await Promise.all(Object.entries(policies).map(([name, _]) => es.ilm.deleteLifecycle({ name }))); +}; diff --git a/x-pack/test/common/utils/security_solution/detections_response/tasks/task_manager.ts b/x-pack/test/common/utils/security_solution/detections_response/tasks/task_manager.ts new file mode 100644 index 0000000000000..84015fa7b0b62 --- /dev/null +++ b/x-pack/test/common/utils/security_solution/detections_response/tasks/task_manager.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { TaskStatus } from '@kbn/task-manager-plugin/server'; +import { KbnClient } from '@kbn/test'; +import { ToolingLog } from '@kbn/tooling-log'; + +export const taskHasRun = async (taskId: string, kbn: KbnClient, after: Date): Promise => { + const task = await kbn.savedObjects.get({ + type: 'task', + id: taskId, + }); + + const runAt = new Date(task.attributes.runAt); + const status = task.attributes.status; + + return runAt > after && status === TaskStatus.Idle; +}; + +export const launchTask = async ( + taskId: string, + kbn: KbnClient, + logger: ToolingLog, + delayMillis: number = 1_000 +): Promise => { + logger.info(`Launching task ${taskId}`); + const task = await kbn.savedObjects.get({ + type: 'task', + id: taskId, + }); + + const runAt = new Date(Date.now() + delayMillis).toISOString(); + + await kbn.savedObjects.update({ + type: 'task', + id: taskId, + attributes: { + ...task.attributes, + runAt, + scheduledAt: runAt, + status: TaskStatus.Idle, + }, + }); + + logger.info(`Task ${taskId} launched`); + + return new Date(runAt); +}; diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/ml_model/test/default.json b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/ml_model/test/default.json index ce77f56845a5f..2e59da56a81d3 100644 --- a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/ml_model/test/default.json +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/ml_model/test/default.json @@ -1,6 +1,6 @@ { "model_id": "default", - "estimated_heap_memory_usage_bytes": 365968, + "model_size_bytes": 365968, "description": "for api test", "compressed_definition": "H4sIAAAAAAAA/9S9W5Mc15Gl+1dkeJgndtq+xL6E3goXApAAAgcFEmSPjdHQZJGCDQVqQLB7aG3672d9nlm4VEYscGSaPna6ZZSYkRUZsbdvvy5f/p+3/vbm6m9vfv7u6pdffn7zy60//vf/vPXDm6v/9evV6+9++1b/+Pn7V69/vPVHffrq6qfvb/3x1p2Xb968unpz67NbP1y9fPvrm6tvX7/869X7C9+++3O+8u5Wf335N+7y51f/9vL1yz9cvHrz06vXV/q9dCh1HcvodUl9XVLq7bNbj37+8Ze3L3/5C9/7j5e/Hb/Wak9z5Qtr7Yu+de/yX3R9+9qfrt7e1uNt/uXf//73z/7z1tuXb368evvtX69evv7Ee35/9cPLX396++2/v/zp1ytumMscbUlltlp77uvuUhx/g5/Qba5/8LgQHz5gLi2NJa1dt1xaWZcP323j4tbybHxtY61zXdM6xrJoRdZUrtfC7/jdq1/e6iZ/+/nN24d3z/f9o8t+97958oKnSLn3seQxWhtLmzVrwx7eeX68lEvvLOuUUORZdeny4ou4lNpsc1mXmceipW/1s1vPLo9/lYo2ufRR6tAXah+f3brz/PJ4w5r6XJeV1+6jlvnZredfpRzXShr1w9vqzx7ce3S8o1aolTLaWFet2dSl21/cO17S0n10V93y6Vf3j782U+m5jqm/aovEjQf5cu8ZHz5/fHqzJY255NrXdXY9yWe37j56cLyUa8va1bqUZe29pKLnf5KPz6+HWLSXy1LWtdQqQbx7/fjna3X5p9NzzNbLklvT/o/ZkJQHX9w9Pf1aJBzL0Ju1wnt9+fDJ8coyR269Dm1cL7PoKZ49Pj1FWlJrc+akv516fv3Ug4vT/XSwx5rron2uM+kBv3h22metRSl5lKzX0hlCBC7unu7XdFT1VlqnOUfVAz6+/GZvDS/vfr536elFqqdrI9W1aMu0Y7XoeT+7dfHsKFWlLlq5sRat/ZIXZFFvVk5CkNsiGc36m7XkzHY+vPPFzlvf+9d7e3e88829+3tP+dWznE67mVdJjoStaLNb1vLfvp/21vjei2e7z/jVvdSOj6InaWVqgSWLa9alRw9PIncuw48enO44c85DoiYBHuvQVj9+eNrqrdP5zbNdifvqKDwl96rnapKrdWlr0Ya+uDhqgjIl9lM7UyXBOjVaj8/vPDk94ZqXOnRTPUYrLONXD+/trdTdF3dOh/Ncei4f3dk9S08fPNrbmPuPnx4v9Zr0KLNoEecinaB9efSVuePnu0J3/1oMdL60fpKRooPVE7rgWpVt7Mztzx/uvtzXD49H46OfyieFdbH7JN+8OD5JnVWStdSk904LW3Pn7q6oPrj8avcZJSOnQzN6zzlNvdUykzSATv3XD25/eTob2vBey5CUYEH1h39++PXeMj/74smujN/98vaeon7+5eWuSD5/tLtxXz96fC15esRR3jkmcie+uL2n0P712VFRL2suWUs2xqhjaAMkyc8udh//9pPTOdywGLefXEvJuSI86fes15YCX/X/uppYxztPH+z+2hf3n+y+9u37z3aF68nlo10j+uWjvW17eu/P+792rT43rt15Z6FuKqBvvtx97duPTo8vU6I3aLnJhmbtnJ7j4UkNblivR8+/2LOGl9/c3VGej7+8c7rfUvTSWul1leZa9Bh/+nz/nZ89vLMnj19cnBS8hKePrnMolSZriEZ7/mJ3Xx7febgrPd988697G/Pg9GZZUiofNun5Fp2eUDEv9lXMw5N7sPVulxdf7WmL219+vi9Yzz7fv+XnT3bV1uW9i72lvH95rSzOFMKdR/f2he7pvt69++WzXdV098sdw3zn5ApuKsl7j3df7fZFKvsb/uf9N3h87R+fHZtH91/sKLRHF5e797t/vSIb1+5+fa11z5XMnevnON+Apw++3nXS7n69ryQfPN5dkfv33rlG56v16OHek1zeebQvXBf7onD5+e3dv7tzkcbuIXhyuXvPRxdf73sRD5/vvd3zp/tm/c79L/aF7/LprtK4eHjn8d7BuvdsXzU8fnixe8+7l493n+X2kzR3b/r0xf4p+dPFvv24/+4Ft9bzYv9h7j7aX7Tbl7vPeXHtTGxt0td7135f+uFm0L2RhJCD1bNCv5YmYf0nAnOTizg9q7yXtfW+xMMmPfW7N9y4clqXjSun1dy4ctqDjSunndu4ctrvrbsdpWTrCU7CtXHpJJNbL7T7cCf531qe06nZut3uG52O6MaV08HeXLnnO1dOOmRzFfZ26FpfbVw6qbmtKxd7j3BSqVuL8Ghv5a6199ZzP9hb05Op2LryYO/KnV35OZmyrYd7ur/ae2t6MrVbi7D7BCejvrUGJ19g64/u7S3PyfHYuHJyVrYW4ejhbN1tdxFO3tTmMX6yJyP39kT75O1tXDn5iFvL8+XelZM7unHl5MRu3e3FnpSe/OWNKycne2t/7uzd7eTQb1y5jgK2tu4YO2xpxmPEsfUIX+79zXVos5b24X/6u3hoU/cco6itlXu0Jz2ngG1Lev60J4un0HDrEe7tverz3d85ha5bv3N/76lPYfLmaXiwex53f+fJ3nk8Bf8bV04pg40rpzxDzvJS5JvVnNfSe36Xm9j4k+uExpYg7Br2U/JkU1fs/dApT7Nx5ZTc2Xq465TQaMvIXTG7PH/9S3ufSto6kZd75/uUttqSxWOqi9iIj+YslQLJ8i5BtvV0x6xaznKFS1OsXFuvJb/PxW1pmMs9jXlK+20arl0d92jvTU95yc277e3qKQW6tasv9q6csq0lzbUpiqpzprb2dX2Xot34m1NeNy+py/d+93/zXTJ4UyntncfrvPOWvX2w90enDPfWC12nxc/V3ymbvqktdnXzdeY+9yWPNSddkEeuc/k+4b/lTh7LBLnVufT3/3xXWdg6X493D8SpjFGqgoH1/T+X99WPrRW/uyd1p0LLlnRf7NnCU0ln63ce7J2v6+LRxqVTyWnr8O+a8Mtdo3J3Vz1fV9FuqAWCzFPxbWsVnu96X8/3HuHprl92qihuver+Y3+1K4+nkufWcu+qpstd7/RUkd1SqE+2HZnfW0x+oTj1L1sQgg8u+kLynZ+uXh6r48tapyL9ssp8pNmknJ69fPV659Ldl399+aMe6A8vXr3+fuc7d376+dfvf9u5+ODq5b//9ofPf/5x5/rzv/z6+vurN3/4b3949OrHv7x9HS+/faeXr37auXT56+vX2w/w+1MH75f4PHEwimxtH21tJVN2tttg0gbvn7PMpfZSS6sjkwH64PXOL+2t0cZNPlrt8+sfbNX5xfO9Pv/OO1HZuve1hN289nuk/POfeLW7Vz+9/O35b3+7Opf0G1/w0v7Fz3+Ib/I4XSpKJkPPUpfRqdc9evn2CpDHd29e/vDWffGLi0t3+bTj779yo8jasJMnZMsHX/oYQbEgv1ff/frm1dvfPviSNMWsWsJZyiJ/6nfmwM5X8VyY89LBsYBa6EvAXj6x0k6gzx4816GnXRPZRJ2UurEA+eP/K21jJXXcylhTXylALXm2G5uRy7rqmCetd13SDC9me1c3vvmhdJxd/v3C+vzVX68e/Pzrhlb++LoX1TwOrcsRyutouecldn8rP1oPTb6Szpaed1lmz7vfzFnbkArIGH139v0v6rfbqPLAgNDoT8b+V+Ux6ZeXXKv8P0rgu19tBxAK2jPKvX1d9n+/LAfpiNqp5yf5EmP/prkcJFL6KI+0lDHM25eDTgx1yNlr1W3r/lfrQcvT9F0dt0X/wzzqYZVoUx5ZJJf6j7nrIVUq2yNRCi3D3bXKFZ46iG2tUgdpf/1LPoyWZp9Nby9hMZtaDz21pWphx8z6ut9/hZIyl00Gc2Tz+/OgtdRGTX2pt7QvprontQ0FfyBUpAj2vzoOWqLSZ0m5EaOvTqKBOs4p7ZKkMboV1C6vdOqTLh9r7BdN8oEKSWnaLYoxVlDKQSs0OgLYqz4zj3rQj5eqt09LH4oD9x+gE4SgjaXost5r/6alHbSZrfS+KqbWfrmVksmoUepoSad7f6W6vqnnY5sUfMoWuAct4eg3LVVqeTXndNFBITyTCzZS6u6c6PTrnZZF/6QqnPe/uh5W6smxA3qSaja1HLosNeBOnWy91v77r4chI6XjxH4qAvTKrylg1cEDb7g2I/5I1bqMCkZLZ9qJH6hY8HxSlqPNvn9O50GxFoGyvtdBAhndKwGR2qO2nnI3qkcPKv2UZ9XZbxLCdX/1J6AnSZW8lizNNvalbyFIl4PTgWf2ar6ZZHnWLoGSmyRtttT9JV11onIj4JTL0pK5KcdU9rFo8alhFnPTflhaX3RlTP2XDre7qY6nFMqQS6edHfvnRKoX30+CIsunk9X3v7rKmlO1l0ZLgTEwdl9adC766rIC4nl30/PSK2qyS5WA0h3cybxVP2iDSpdNlZelS26lMNEB7plSveb1dUwHkCAZiqaHc2qiyfJnNn6V5pluU6X6FElI95e86M3MTRM2WgG2Qg7gTMs0xxTVK9PTlx7V97a7puthSodLrKnRD2d4pc72d0ZWCb9hAhvsSJyTtwo2Lp3A8uYIpwPasOnf5erIjpqbopZAoUp/yzWRF+ckQxosKTJJgHKL20U5JUP6Ez9Hxmk4t0BvNQO4Ccw3ZbcA6bDIGkrQtYsTHeG8kkBg62CsiwTK+RpFni5fU+izyjrv71U/dP14rmHFe5tG3ywSjilfp6FDdZydwGXt0NS5GDpIqRnkUpdqSARoEhh5JYuxS+1AGUD6Rv7zKv08jBjLzMjbkVgBxFvdSjX6ShR3JaI4IygSv6qtl5ptiiqNClsPZHqBzqHwR93f+ykvd53AXPVfSzYugZRNOI/yhhS+VRO6lMNUlLk2Cb10vrbVetnxtULuSHG6sd7zkAfuuHTtwjI752XReZef0YuskgyEkyd9LAsrV1cyWN3r1wOARGkS6cXoDnFSQtC/ajmbTKNzCvBzADc3OSbY0WJVqEQZxLl0CifAWSUMomQlt06GxJ3nrF+OApKExciJ3AdKADI0knu0z/5OKciU77j2MmVq5L3uv70OnpSZDKi+z0uZ3U/I6SLB0znNxQWu9WDUskSDWIm6pMKQbhw7KeWxEFBL1WuBmrlpxL9tNO23FF1zFkROwCRTJb1Y2bP939fHYKbk0eaO52L11zrkgKFDZJ4Ug5pvyv1dCVWTLlQrbDq7uCnyUxUqTGOUdNM04nby/uWCurdfSg2PThGFvj6dvGXw/oClI6+RXFStz6W7WfwVu2wcxiInTHsq905PIsVsYpB60L3mXIiDSqf065SoDkWVAk3yOFYjxxJjHTe9mlywpXBGnAGd+hb9Ux2goHl/hYvywxTRSj/V2az9UuRZcR5S1EOMU6Df560Su5VlFPdN3cTUrYqUtKq4bfurr3BBx28S1cp+VecUHQgV5TzIVVTAXsxCSd21BUzrZBMIL82a8vjSS5lutFysrZ20vyhgK/Kv5ds6IyLXQWIie6MnKEZQlve66XwZKxueQeZKyet4VLOP5bAuc61N6rhrH13SRbetc50NKRoyyjaUXvQ9+g30FxL6/ReRHPUqQdYzaD2HUU4oEjIIjeZPRR7F6bHOCZK8U/nRibdZD1LIkvdV9kgX99dqOaxHeHWj262Yb0qPyglZptSjLkigPpF1kQgvOkmyctMlKA54NvLamlSfPnV3lc6R35DDcaN51+o8WhMV90vmZCSMez8OERwuchwWHX2jyeW3gJ8g6UALkQu8SOLJKva00qnr0iMJB4f0mDbJxSsSKRlROQxFYTQH2gXoS5b6TNJ3k1jIrOh1iLiBt9Z2r/T8dVylbFOcB44a1lgHI2UbIkptLtpAqhtyL/bXUDGX7I/8M72rYhqTt1LMIVMpG7uQN1zNwnAqOgmehuulYMqLmhYZXIgMzGjOvBbgIyRO8bt1xeViFblLJcinl/RK15hnlbIZhaLFSjrEpk2x6jKEEzssabM5NoIEGQOMq8J/8/tyBZYZLd7y0LUQzmrIBVO8qWhWLlNyL6WgW6suG6yv63BkXzWQFS4Kzyuvb1OM2p+GtkOLOkt4qB00mDwWWdiyL3zzwNGR/tBp00O4ihUZNpxleSItWAqMb6VTRs5sUms18ZGCPllVHqAQoWWjP2RaZYHHoF4j+2odBplMHTzgUsHS4K2nIn6S1omzsv+kqC+ET0GXotSyThN0HRQXFm3Q7IojZZadayvPKhd6ibSndPS5QF5+igJPvRNb6nzQQlWF9yoUxa0TKPdT/roMiAyetLgLuhVUKOinaqk9239QXHB5LLJypUmVVj2tFSoJfOtrKUnbmkzGpxwk0Yo5O33Wq0tGTvmWjUhSkrWSPjeLWnSSso6nHoH2bSdUM8yRjGyPkqXbVf0q2lERRiGb4eRPFiihfOUuy4I7+9W17JQBFYVSNnVhmI69dKQ0f280o7t4QftEeamuVG1NfmaRQ1LJ7pOOX9O+RtGOTvKXNPx0clnOH2m4lwoVM2UrE4Ovh4Y3RKqV4oKxkcTVmVoJ+dPVVut09jBkWVK3uFdHS8hdlo+F7MnTMl/Nh4Qwk5yjadxVgZZDJX2qTZ8QnZiUS14PbDuvVJtiJSf6sB3o6CmwlZY2fnsFf4BdnGRktVz7S6qjTxInE3zqrDjXTVISRkxvVOQmmCKIfBkd0REhOJQK5qbpQMSg0EvKZKXp2DrjNCTT2K7gP5mwbhwiXqFgWICu7X/z2m88bxpcD+GIZXqvnTMPiBeZJNbVKXZCUWUSOGcDpoPVuCJRAKj6mMhnZCeU/UDX3aKdk5FRAGR25QAwaaRRKS3IYd9f6nSgoICqx/bhT5usAMwNo0Uta3XB1ARhL2WkEzwBkZid1u9TZJaSU6CkGMWuFD49dWZ8YRsiNwWT2mWtpo5vLc1FSDqOi04OvadU/txKLYDNBjEXrqtNLct2A51BhXaXr9X2y2OVi7WsiGV3Wl7fhcokHD2FPeZZZeZ5p0WLoFiZirNRycReU6pmyNmrJmyoB5ejhTdFZ1saMJM1tYEKsB6ZCUUpq6l5SAks8r7knuMIZV9FanhzS2QBFU/Y1JpcNfgyFMvJXXVuVac2RrpQak0C6jb8QF2gFBkVMlvNQAHKBNwFvGod4dW63LY+7Y2UYaekYhYA4G6juJ5ZU+OqDwUKOux6yMhEunobWbhGSWzpRNhe3HtoX20/roWrY4G+U5Sofyfid57ayNTFdAU0UHLul0yw4qiFwszKIXUZKdmJXiDrwFlJTttJy3IypJaBDVht1yfhcQX9OM1hbwf40sirtmGzLMejLrMmDzmAKNb5B1Ur9VkU1hB829ij80oUFeSCWq8KpQSpTNFhzvvbJJcmA6mak0yUqz8kIFDk4Va21EXSUl6SYhSX/OnuFO0MZEejYyqR0HByr/OuILbJHpK2sxrZVYYGx3tSswJba2FUiQgr4hwJXHNFHLnaBJtrJylkMgervB2oaBZgYatxtipLiPXV1gypJePs9cOkrip5UDhK6srWxRQ3SLkTQ8oHcOCkGkgfxULU+LqL88aB4KqADNTXxrRrOrWHCbxdmIT9lRr0kMmBJYOw4q5Zu5pQNWANM3GUfYBlUkFYQokkk3seBxjZmgzYUPhUnWPMAkh+ZRJJs7mStdyK4LDrYNq7yzHyoIuizJWyqFxdY2dlkPIaye8wtT7FJwHBBdO3mxSJy7AmyI/IPEPBlh3es0mqUZ45HrYZbQOCe9AVQdla9t54KyPUjfY9kzvVA1vHPniQqvwSqZNPZOmb4ifK4ArduymThFRHNYV0vj536k5PR9paj7BkW8OVlwX+QyKYkBiXO9GpU7QCZIc4zimfjInTCdBeWWyePldARqZLurSaoALdl2Bj08pLA1Xr43QQqZy8YKO0ZrbJyEmpzFhUW79bUzQcVXjTXAGbxKWWlFoAeZPFWBDwKvDByBhXPAeTY230qVE1ICWFvXVrCp4qU5GVsCyuvKCfLhX7HejgxXU6jEOX8A0g/CPDw2S2n9JGBxg8C+raucPygnHJ5Yri7LpFLbmTOFOwuqCnzVsBnE6EKtIoABnMolYdTgU+EOrCrmZuuoZ2DCAnND7GG9eqJlI9We/WRnKHD1RhDpR/DQPkrPQAggUtoVbUYtrk3svJJvVA3t6Y3iLVByq6pFWax+xTc/4LRZIEEJVajsd2UHvCd5DGpV3LG3D56A0OLSnSYrLfNYCZUkuyovhtHgYv3y/BbdVHNb4yYkmGXCuoIzdckX2lX0EqoQWYbhgVAq4GaQQHDpTJPiesk2NyQylHXw3WWQdX26ucBx1Rt0/U7Gm/IazJLgMKhBFwMxXZTABq7bdiFIm6vHVKEM59AWi50i4yg7LPLUDiawp6A43gHrUfdHjllC3ynHXefb+AdGLCNFXJltOLZZLmqkASqMo7Q6t7ao1axzdKRvZ3yXGpnsn7oIIFxNNlm5cDzpwCnpU8ezb1owqSe4LpJbuTHZJeZ1J3TKSLZlDVuhUkd6//QHYMcNc5Cw0wXgevOW0Xz7E3pUP1Ry+F+33dVf6vDKYkQ2JhOk4K2LBOq13HuzFlTlCD8uhDCeY4cM7/zgonKmD2xio4JSxHkdB4kWdBZsbddOCkSTASxthZK4rgcuoWKcTxibymjJncCT0pvWm+L1C2WvpLBghPyKkPwLLUBFuwtTk/lcYdEt8LC/YuK79REJUBpJNUXiLFq2bc5AEqUwKtTSLd7gAGSX5yxpduZG6mzd3I8lEOptWLpLHJHErJySLo2ppIc1n1ncDfSk4pHcoFNr/fyCBgPyT4rswln7om+PEgK8gW/07mauAjDqp3iw0T5HWthD9ROTNWVmqWO0rqgUFkG9AC2siQdJJgBQlu9pQCgYyxrLak2vUaFrJ8K/58oc5n0Js6z2lGka2RuTMrWqiA6vUVpCaXkArEhhzKSVtoWlwqVoF3B8omZxUpNYmHgUenY0D2geSReSN6AsktR6fl4oo0g7whncBZCiU5lGfFFlX6zesaEEZXtpezMov2qOFQr65IgECDyKRyxvlzeYcBExFl6BK90y7voKBT7zTpNfsEtEefQUIMsr5Np6FTRIkIHY25q7OQMtCZFIFkKlUiJue2AhjSaZJ7SQ+IcxzJ90ikWgLIaDJ0M9ofejQLwA2w//PXK7OFG6Udp0e/2gR1b51k7YZcAilx4HPmq/Uge9kou0uUpfDcO0TeuWE8qnOTEOGF7uNeKCm7YoqUNys49elEedne++gqlS+yKooykDdtYCUTGRU+SA7sOpGElfstQZdcfsLFiBkAKNni2mIoM5LKX6OnG//JrVQhyUWZFQy6jYiluCbuMfNjhqvI6QGkanD6UWM9mQeYpEQq5SEtqT51zT4G0ixfCb0mq06txTorZAAHdlDnJVtNKO1acRDhxZJ6tzmgTplDR5sgyuJEE+iZwNLOAS7Dut90JQNOoOHVJpWlU8ZAv622hR/skFyJSmcynBPVeL/RHQrPAAK/vO8r23TAZpMebDJqFQop226PUMimUUdZHBiS5iI2SkoBRLPL/8u46LQvsld0DFGwt+EPfengSDIlPHs4VzK1idAw4QRbd0WqKTgMMgK9f9cixy7LWyBXHkVwi6iXoICqaIAsm4ULUELCsW/kit2JL4cA2C3AQNbpmvuA7pKiDkioxMVF8JNWbr0RCL7pMXEwM0T7DDTnJls52dXWFQAQ/piSllwb3QuQDDtQDcwORBguQwBbmjspBSxyKgvNlwGqMb9O9o3eXxCGi0tIyf+XPOP9S/qm66JeMCEI6oAWxvjU8wCsOzFaB64Xi+4l3u3oZaoODgmxHBAksCSrxHn4jihOfCZKnbna5HujUXqFQAW/0t+U3DuhZ1nKB4iiDdWDXwPuqbJXPZtsggRPmmwQU9Df5zKqOs207MlvUfwnFWEFSl+j9RoOj+p7NXFvKqwoNThU3Lkb+giIkhx2kPBWnwIzLPQ/6r2MMukH0J2h0bv8LaMiSF2tiXVlegho2/1nTaHPg5AH13p1mLwlnnV0VG+Vvdp3ClcFKxVIW5KfKam2kED9z0mnI+0Iw+kocJZ07s0U8ykcgQm5l1XqMTM+wm5WxfTDspEJgIsDjpNmDdwm/XaSFQeUk58tnyxyreusJlUv2w+kKybxjMWmeYFUkTPUItAkZEIQRWCAoaXTJFQ4x06rHFPRaw3fy5+q33kAaNcl9iUpK1fO2D3qVIgz7ZsQfpg0zUrHBoSgqMHmsLvzIKt8pMSpQXnnRIouXN0O7lKFG9YnLoluckISfcGkiVYYDbRREn6SpCbJHJUDCd5AAukH8DDXlSptHJQPyEa2w6cCEnf0SveAgcRIqUpVFWpVsL6aBITUDzGO7rtS/HbCL9NLFwiZsiIDYBJaRNX0OQMolamapmkE7iwpKZ190AQtmaXC/K0AcgYt7a4YVA9w3BSMOaxgtmGpw1OtgL7TE9pdpkhuF22usnyc6U/08dFuR8K5RXOP8yjAnciPUgwpa2UbXBRDKGokgJZ1ew+8ODe/BeAYVl/+AixWluoHZB/4CMVeLpZaAQk3sDwjk9F1/WrQ63SKIMDmfJNto6CaM7iL7JJPwTMEaSDRmRxUF3Vx4GBcxFfLFkelvQcLN4DSmAwllDSd/vZJ3jUZ/xQkPj0w2hDE3jn80ruK3+htp7nEEexBZSMV2eQmVUrE7q6wDKEmlxEUA5/gIwJaSOJCO+/YuMC46TFp4aUWZ9SJ9r4Dy2iDOHY1ilfRwWwMg8X0yqrsSwmV3UHxrEDi6VoWdM8K4qITQCk0dw4ifXfQ0uh5ae8wb7Qy5jEFMmV1PdElxxg3XGl6/KszUOshcg309S1S/K4DaDkQFy1Ee7XjSrm7ykAcP0/dAQkaZFwrXZL09zv4tRaKdjKp0pEnkaTlgahADYa0Y50ObLXS/jX0caZkno0lkc6VI5/AQ67M3rRIbbqHe4xuxElzXfhgOqNZaIl6kzv4VOMKjUBJytz2VCUo2KjLSvsl45ut8s2k9oY8FJB2Buo2DnRI0vu7hmB7uGyn45Wqdl2awQpIm4AFhcKmT39G9VV4vQBkNjA0RutqpeQ9AiqvXQvlQCzBIZW0o4XeNqd32iEoCLXyOky0KtqAl5aqSmNTKxZupGOaJtG5zv70CdMkdRa1jBJOrLPOKfxIGkUDWeAcCU4fjK4A20HH2qxQI8lZSzCWrpYyUocuQ9lCG6CrYWpX50pyv9ArtzjnPACsco0ztcEGm5n7KuRZHL4FDgzHL5cruAoGD0tbOVzchO9Hjwm5pyu0kxWSNiXTzOBLU/DqByYkJugL9G0HNTxSC8LBM+OmJtwnJdzpEaGxkBjWOQiYxhJabUmW8kjLdKyp8JzJ5S5xTzh8k2lr05Rq2iHpaOYVUm0a6i14ABlRBB/Tjz39LhihQoc+FEQmK9ZBKTVCDZr6prH5hRxrGsH+qSjKmQg5241m2hHUAMtiLPTA56hAztIq/9AVI+gQBDrA2FVubhafXookvQ/QeF1MWEKpRB4fDR3InkmHDzAeNZInEkKHXdWpwy9TELEe6Z/dg7ZIsK4j2mlclxnaFBWp4Il42yleNEShJIwLWR3N4H68EhZhobQ7kvccQPTjM0CdNVw7PPTxDB+SuyjbSc3eSCW4PQpPNTr79l+20rfVCP6pUygWdUEQbCG0DkPwViz4JcDEpL2DU8c694rlqXtpt6sB6VDmZXq1zIZ8geQBHTU4YSeM1Itrsp2HAakepdYWxNA2o5igHZTwQtLjbKFeaekpAPcAIVzVjzo9nQfwlg8TVeqYFVgK5QpK23TXdXFEY64ApOQHVftVqBDoWdO3Kb4ZjCfswRR65QgfHU2X0qmAFJZwshQ62twn4T9ZNWh8anIGViG9tGG0Yi2L6drXN8n6rytWzjWtwSwiweuk3SCQtqSwTGKgFb7T/NGNQI9DjLueIBJAczmMtIJfGOO7/lNWxy2RaeZlwHtndoiT/RREuwzHLkw/8DtKuhmWSMqzDvsSLNMzaklQ85r2HCq5dMHT+k0YbtHcC4kcGqnpDjPw2n6AZFmBSNz6E4zAMrANJ4RozBFz0bHZcCth4Fgk/FZMK1QVGegftHmfaA+C2rBBmdMswUKiSgMWRQIAaY/Fg2gtySnMoIU3yQqJH1mFCmncsjgWHIVsrYKOqmT9nTGJsQmQBI/AKRVjOkHep+gMWePXLVeULIPUs7ZKcio1bAP23Ci7w+HlZ1bIqY9OskTfrOMAmuBGKoAheBtcabzBLCK/Mg+oI1zZES563koXITKzKdIVUWJqQ2WYkwsswr0YENJRpvSF+UElixCUoRnOFVuhSJFDtIAgsIU0Np6ucsrj7pDgNMnq0RMYA0ZcsiAvvBMpGB1qS9sNOq/DWAm5h/t5OddHrswEabujdWEOACMldEQp+nsAA2UxqSfdGvSlR5EuK5kHOR1YNNubRZs04KYePNbO7JPvlF9fKL14OYHpGjFpkDuaoHoeYhbOAjHyUs02LYeFPmkyOjp7xfiQVMbkvEZLBa6kC6n1XdL9GMfo13eB3QCPG7SWsOc5Bhgpx4ZmZmRDsy5PpStTXl9GRuikc486SVRINS0DwIuBcByOviF08KCjba8hdHdUEBUMORirVMQoZJ8gFGvGkLCi0D3joMmbtA4vaAu+NhOtSo78qpRj80QPZtdsSXWm5IROA5oX3n9ziz+807SbqKNScHayl+U8DIINhbbFRE8LjYYKfRU60UHqAuCF1gXg0E0PTL+Mi5XlFowFglE5fe85IjZgITxqilZPyWqzEEy6bDO0NAto1W4n5UyYmle9O5gHi8s9EvLDWyPXyFY8QjOT8loTXqf5deBwMrcg0WghNpYE9AxTcsh/uMpUgnpJIeaKHi1QBZubFgjUMsW2RefJjnSJfDfFM+gMLZWczgeNT1EWdIyxFDqhG5S9aQw5sGwSKUH8QDu2DqF1ISVPdIbB5VgcIETGWe4w5FA0CFqUFRyfBbo1kt8uPb1Q5pWbS0KA9h4XE9HfGnDqo2/mXkknA/QAv93dkKDBuLaSYjsjWeYWn6QJJEvQPrteGBLZGFz6bBkFYeLMyUgROmtyhhLfqdJJ5gnIBolXT0ALNwmAJWqNTp70+YoinQzTmXbu0BGHmpu8csi5XINLUfgGNdqAtYDtMm8PB1Lw0sGg4+nhoEUPzmmyyc4xAQMAFHCAsRwesApmg5yRvANCMyN95L+0AMzyWlyCiRaT2mJaB+RnDjRGwlXSUWI4sqOW6FB2gSGHSE1y7YIsOoYYmTA5zyYZMg9aeUiwZjQhmr4+WOQg2oZplpSUu6cWnRaGSvtyNzTNcNNDmCbHnWKH8aBwNOVgk5dfANc5sDRdleBrGjjoxcgoPY1U+dqERijbm3LuF/gcWvQnmxBzJXSSmWUALlBM8/MVsBTsOMwR774zZA0KRbLOzDu0hoSiDKAN8N8GBpQOlKwpngbxt0Fh0agJAAyqp5aTbY2IgcnrgPucwR0+uVegblVcROnerD6j2YIOGLw+44zMk2orCYmoS/T3dd6t/Hdj1sE66djSqbJdEpK9RP0IuJKddkbXqSxDpyUc7maXhYT9DpLRxn87npbgz6TGu0LdW8yarvDOL8CFCh3x/pQMMIhjQrcI0bIXPgDQjNSBMsFqM8LB1qJLodvhVGSi5ELmYCTQI1uPhyqHhFnvpQexBJDkAhisxLg9+foO2giqlwzrEigLJ9SlMoBHoSu8Ts2BcTBRNPAr4CQV5Jx4UNgMP1povUnGiWXWqPTkglOcbZs2zn6DaIA5glTcXEBeYe2GwhTAvOnX65GJghQNb3tauHzk1+DdrNARu2FdkO/Q/aEgnwZ0F+wg/4OxpAtjbB2jFxCfHBEZE1SyL+LhlxYqnY0ss6f9p5Of/wxKs6fzt0FvH03dlVF3sP80R59QQles0F61cL2NM6MFYNgiiAAgs9aRjrOU6HWDwHFf/0VUrp0CNsAUJMsowOQSpuIEvNaeFBkTKGnpQVkpWjjrp1VSjEnJcEQOxZkKuo6o99Ph4OArZI8UmdQMCFZK0LIXktuEAFWCrQ20SZljhxYuZWmWKWwNphXYj8CluX7LGGEyFGyCClKA5uxfgncUj77TguSSCDEYBk1BvwJU0+auzPyD7SWmn3iiBji6Bnj9khylBSOr6JamPF1pBjEIihyc7FMBNHUoj5hdud8iHyT6MIysMmyHIRmA6+GbdKZCagqaa4Je4G7Wo4T9Avz5ZLSdH+2WoqeI0LM7AwwDQo7YhAlb5udTtHWABlwGlE3mqDLwk8l/OGCAOJz6gZ8Jm4oPQLeGyV6SZZMvG5SkqyPFJnVNNxu03PBFWPMPQAANvBB0mZhbFhU3YcIz2qsLZcEDjqiBp2O/glso8jIMe4WU3fp0TKIOYD1m8hP9hPCzBJ8jBtgZStDy9Org1WbYwZ3yAebRmZueKW5atoQWU2HlhDFgw2SEcan7sS29kh31fapYuhotnc0hfOn95czpOMlXdoyWGMoVxioojeWFuZQw3ZYTJGRMrzL0G+AqPphfZjMeZEUyxHNLdXxEgfXJ0FHJsKVibjoBhFHX64manb9nwASw1HQK+QGMRIcdnm65Fa5ukCNxryNNmOAHTpFGGHDxUxWxlZiYLzGYiU5l1bmy0p+D0AvZGybhgCkh5KK0CD+kM2UMrqdNqdHQnY3XD+lOIcklvdPw/9zaI2/yDyewNY9UoLR0pKJqw1UtRkxRgk0mD0apusQ1nib/Lu1MmcEdZSh7c0AKplPPcM4nZn7CU7c64whob4HZjc9HdpyDjTZ6eTBH1l5HD08vFTM48E47yEn7+4TvwQ7iZ7Yxh68d+bqZ7WiTGA5Bgzmm3sVM9cQ4Mhu6F2YvZlBB01UfFDlNTEIHbwHTv9vEmKKIc4Wtc5UvUrsSXWaKx9ctf4qcJikvea3ytk0ekBkH0b1EeAErlZMi8H00WyxM03Akk3onSRyNU4xDtiFW0LgHNx5gYtfGQNMe02mAnCfrCjM1l/gCpKh7ec4aoHAtU0KCXZlEDjiA+6wlGi4BLs29MgEaCgzFoo53BTBtZywMc4n0EE4lMt5BqynLCdTDpiyCVzgagtPqktr6vBPTEN8WO16aQWuMsQRlhFRbhRyCDNkjPpbzbsO+F3KVfNH1TYaY4IdhEBWKOTQrtKGpMOMClJ2xHSByKowNLSp/droGcLDgHyG596lBIPIsgHtkonsTsrcDvIwVGlySoM54EQgwmhRikWi2c73QTBkokbCmPcjnF3OMFpGVywzUsa+VGIfHCDWa0h2CiJoa0EUqb8z/9BxBg/Hu2tzOQAPrkigGDHmF5tVZ5TVm2eBj0Ua1WibJkfQZQxipP1mCW9jaMnRGpDedg93g4WAoBuT81icIJmbwCeQWUWq+8M0sWdI0UqrDhbcgWaDnp0kixrruf5VWS6Yog+aADdDFgnLHSAtRggFOY3UqJDBUjGBUcpAbnJdSqdLB8WMbt6GKpttD95wOxATcqilYprt6mQ72r59HUTBprzHPdhhMJGgCgBEwVE0HesDTGiVO86AGYzvTGj4mlofD6oSPuEpaPSjAmbfnqYgXgLYxyc9TARCygzdTdENvmgvuqQL0Sc5Ut3ZT4SaVXFleQMm2N6dA8EGDQmOcr1SKazaMzacMBxu2Cxml0yvNDmBeaAdw4QhNMbS70djga1CYfirVJAuH8fqWQ+GUylQ0imaurNdncJVzFdfdwrZ13DrJIlnp1ZsJJjssR5ok+dnF5FYUOihmYZowyaLpyWoha+k5RqMVB/eavFYiWdFpy7NECGvQwkn7T3tLPafM+YTEF3/GoGHlTaQUgIc6ZPfdtDEUL0Oo8Gh60OG4r5IsLHRiKNKzbb4BiKV7mUIpUxucnBIEA42B3sIRMS4HZglEmyGBlmcqRjcOaGAb0HXnIAOQIL6cFXNqpI88HXAXGKQZI+ooI4hWg1Z5WVyEq3eSG89cQsYNusa08HsGLx7NZo4CdZCsZBr8Woqsr0kqL4c6SNZU2q2mq7+sB9Bw8JBWWLD8lE/YAuhtL0BUbPZ3IYDIoCepwbkzkkrIfZ40ZjokS0wAZp5G/URj0XoAcBK0AUGL6LriQCLi88nogJVwZ4TgoEpGg1TWNQVyV2CTzJBvjviNc0c9ZaWayGiDTzhHWqeC00320UUnK6TtPQi7mkNa9gMTFhktiBPZjcddDkPvzvgHALYOachscDDjjXmILTXXVyTZq1CEw5YKQMmyh+YYlQ2WZl2bR3xBs05rIqBM50boEzyDSq5KMbIfsllKNOHIODb386us80L7wWDEmStSLLLOsI5LWIBTeVQirdK/Z+B6Jgk31hiOVIvr6INNO7gEIUAZjnc7DBlT9zqlh+rn4wQRKlBPMoAGY4wdZ/AJqzoplnq4XcF7qjHF3pKEQU/TgyujOYdngbiVxpsYjrNYGQWSxAzATAbpE9O4jpxv0djuks8LeNgWjkQCZ+3yUcyGlA3FOaQZwhk8vGyKjXKlVjdGinPHt0rMVXeuARMrgm8cJgpZPI8fTNAlNMA5WixzmpnZ2uE9A3ewunnVeikiZyZAgOJzbEq00tKlF7hUP1SehHopUPSsMQXZYjKJiYjcmEDuqhkL+ecJgz9tn9PmGLNisobWUwwHNNBpU6DDM+a5r0GGYN24oGaVxZs4CNY+0zEeVJLyuY3eH4x1h6cFetzlPZniJsCegQvgsig+JYuMJMUKix2NLXYUX0adwSYmTwLOXZeP1ZmH7xKObLIyTv6Zd7UEhrQkN5tNYRnUCkzUXD6ZFItZQ8FSiGKz7AqDXFAhJpYCNns6Di1Gy3RYnhcn/7CpD45oUPNmx22iWLvQrtJJXTRMlUv0rNIpMMkyNDW7/GWS4a0QykMElF2mB36HshA+ZJombAEEJmpKRFqu1U7Skj3BSAWEAefc2bOUGOMHNHVOy5U0ItFNVAQy3KG3SR4yQgIondyU1eQv5J+CDIFqt4aPYl5fVg+uXyYUQtXnXNkKpdhgqKnWrBtNTVJWMTwDH+ksdfB5mLH19toC4sjqt6pBGU4vv55gmkRTgVWKhp3YsMUxXCSchMK0eqY4FhfGkZXnMUl1owls25C8CEbOpUFDffdhhyw1xZgJ4tE1n0c9G+LJSv+/7IVbgYr8AaaNSXKOiiUxTSsoAikXLyYztLIDjNBOaEuHegHzA5GBPkuYFudVwD3EdHvS/aur0S/6fMGcBElwMT/fwR00GKMK4+CN64lNizl6jUp1dxGaVAUUaEyzXmGXsUO/CSC1AJO2NccrBuKKcddRofeJ1hR5Y5k9xXwtuyminWAiy1cIiIzLCtKv2JsCv5VBzNn1SVccReBmMfRtGBQh/ZrQr0UihxjZrJPislmhsFeY7mqh7QDJOMmzHNljF0nKOarB2gPld/Nj3Qbt18yml8VspvoO+x6xYYzomI6BCh6elWpogm98OlY3iIwZu8Fgt+z6amHKiobqDltXs/ScxDIExywC6Ub39gvMzJEfKPQCm30KoOEkJQv0xEEPgkoADiaaYB2EtMhLoduf1u+yNDfEXqp/YcQwMwSYzuVqvMeaYeEsy7Mz8WE+BPEcg6KjFdXSfwEfWqjyyVFzlVNG3Xa6SqOv3bIb0QiZGQobKQ/HmNSOE38UdaZoAvXl6CWG7fSo2rnh6wpnJsR/kRFvpsBP4FfWSCQBUrKOX+RPyE0VJlkm1znWAJvK3DD4fUxHrhQYcoZqY5+A031igC/paOLO5MavS51r/zMksjRcuMivHmLGtNR/5FwsLp4G/awFkDpPBlsC5AundwAGSYtNjjAmMnpyPOUGAj1GJ0hopbryXlBuAO+N0SF9cc1TiiXo/CachsfDduuidIO6nSkeVplmWoQ7iFSiH4sIZhobEFryTQ7ljSWHFwPlw0gEy0CGgtIegcqTQnDbRB8K3GM1TIQlsMY1CHIaequNjgQP3muiaj4AmlrCHQC2M+q1a/1ENxwOLJDQBcp1OzimrDFkKwhnHHIbbhR9KNdU0aQzj5RiZBxB5eHvWK3P4KxMPWDC0+DbkWhRl35U5Kk9sPTlCoqAG6bw5R0eOtgUoxOgxvB6X7aiBDyoLjJv1hwoeoWhCWTI++LwwIqNB914MneAjf00dliM2E9AGDKS5pjC0jhh0eXe1Y9qmmh++scYdoHfZ3MOvcToykHE73OocMINuBLwO7w670DXO2XTYLEz+6pId2mMMYuhKKYUniLpURb6y1O1Det4vYSRMn7BVOHCY/wjHT6gvB4duQBgZWq0lG+16IJ6CF9bbiLVSwt0X0B35Zj3NktxxLsdBOIKjVGGXcBCi+BZGjW6Ahk16r5KLaIA2WMglKkHyplBTwbL4VLsnh5nV8a/NGan242S2FHtGdHk7cwUzROVAE1GoFVnUwhPwvDJ7aB1xLL5Su8o2iTeRbW4sYBrNLkU8DKxAjY4lC8ru1YDPOLXf1JdzzHqww+FqMG3xLCbxXFex0yYddAxXTgDdhQtrFQ0buUgDHGLj37StrKwjLuxWTQEmfUvESbtf1WCkoBMLFhKHVXPqkHnUnQiMWnFLT5dsPJ85CBUF3OsNOOtcruYS4GvtvtNSMwZr0Wn4qBtym4o4wZ7pFqLi3hDR0E/ENwfNt0PWlXBwRLDW5sFwBY6kODtpNBsUPHAECKEkkEBU+uzYjk4KhoTni3l0yHH0KAS/LzsqTf9Cxx7PUhljUAje7TLRfMCNL0WCYF4xjAikBMuLbcc4OPU5wzwcGlJWVMqLRkswOp7cSreZAaoS03iE6luSBkb4xFLdeyBDdLYwNTSNFQtCQR4uiODeRpu98m2KIKiWX+FZdLUuGEuDb4IuEAZYmEdZApsGV58+ECthgR0jctPhdsUxQqp9gg5GNllydYOlEzk9SVyQvDrOm+uAz6ErAR6JM8DQL6BQXmdFI0riYXLHXXmVO3U2EoXILqHLkxX5IwZTFr5eoS/7t8SOhfKMDGFrxkZoa8QfjmaWpkbYxELUjWyoAw27HKRnWsiaQNJuh7bcSzuXGs+AgsAz6I5yzTrUVtfYFns7iw1wPTRVxqIfscpgA9LnCMfTqfKmmZ+Hrg/zDvNf7XCwUxBXJpXIuhw5xDY0e0BV8PaXNOHIh7GgBAYgSqzjZXSo1CrJmao2o4bEl3cjZ1VEL243OmBU6Rob83BbO3bGSrgFpQJuXbT1Q0cgJS9QkTQp65dUaY0MTTmSM3tENrwv5Qg72utRS+6Dc9o110BqkLCYKr8NQjfmTlMUsjlr+jHwoNjMHDtDq6GiYADmRkOdcz36M8tXgFIbz6gu7elW/wNxmlOrJpngMmJt8KNyqXs8xpkNxt3UilCi7Lm0xwO9oYgDN7hBojaWQWA+IDjBj6+gaZCzkD/jv6VLKDRN/JzIIpFgQNjN4YOup/ZE8AHUkcOJtEg7wqqjYlPYFcbGRvQMygWcpN61gNeANAweGEc87PMQgOhAl0pG+NKSqQpE3WFwBub8AawK7RxbbLVrqoA+2vGZ6chjiY3y/IFoSgEiFBK+/wSGMJ1Bc0y5Dt4uhOaVOW16t+dApOTk5G9prCZlkQneMAjmCMvV8j6OA1KLvjyyEVB72j8thZuIwRvMSLNOU49YuXO9I/uOanoDqYXA3Cma7BZga4vC8Ufohs7mW5do1WzM5zQD3FlKHKAyejZK7YNE+5fYPaQ2TfLPCxFQxYCpo2FkqYbZ7WvkRhMVKDgqvRKOnQvfKtrC3qrMuwgSgj+cX5hrFgYJuT2MDO+iKxfTJCxHCCAvJgFFhyRDhHHyM4YVzkjTWAGI0FdvknOuiUajU70sgaIxBJ2MTSWyi0EG59om08HHV/8RKbBSTvb3m25KwAXmVznHHUQAQxPa8FB5YrXIKYLDKWhF7udtmPJuvHJoCdjYJrZmRVwvraa+sIkhnSPVnJe5ReCwnJA+vANgmixwb9vXhcROnIjQNmdjBZi+B9thlpBUDXG/rVwtyazwhQ3o2LsXuM+QHMaQxUt/ijaEqJi5+ZehPxC7Yr5rbbzPwfcNzCyjqR9wAwCqW401DtovGJM0m+VnvFabfGxBZgLWrbFTTQrkHZmwCzQ8tFv4pJLazAcoqnLJ+o6sNfAHwWQ31XTo8UAPt95hPHbKE9htb636m9cKxhqmm7lBdQzs0mdgiHtu0CKgSZ05eyMN0EOkNF7ydHOL9gTmDPB07jhOQyzYzyaXqcAunRYhsHhoA9r6rgZoYsRCvBwQl3ZHJKC7DsVQpmNshI7ePoShcEYVJIrrkzJTJyF3tOldOaeOcZ/HR/GjQW5bnMtsOUwoDZDgeBJGT4YuR3gVwhvY1iWRRGx9DI/DNnJ74fHnhvsfoiRFPQ3yVNyrJkI/kDdMGSmu3WiFQoWOQU4+PvdKZwOiJAZZa1Q1bFkUIm8ju48KOebEWVSt52WOYD5zAm0qUp4b1GhC2wVLq3a4SJsdJcyZ8nx49OuWiO61TL5GV3UiGl9B26YDOCmkylm6BcBJqMkvXuIq8BowuAycSE7RS9a0SAXJJSwqMQYBUz2O9kJ55CmsU3E4EwccE7YSka3xahlW/csLQZXR0Gf/KI1oUG5AdUM+RDH6MF0wMIkLgj2mlPmCXY1mW65lTov2QWmkFYdydVGjH21hQJQ8VXnTw+brC6Xp4wDoWAjQLRWSdDoQQ6oOLWbDsyt1PNBgRU96DYFA/EJaMeFC36ExwqpGezPcvAt5iMTmbH6GWIJa/MkxzI30Nlb94Xh9iUYeGmvqwZLAJ/EGpRh0vy035u1545rYEfpxLWuI6Rm9FXDfeEI6uWaSJfJK0oSu24z6uVAJYXCD0NZutE7oDeZyqJjh312XS46+aw7QIZoL/TsYrjWOM+KfYbDztegS4QhPPqCLAcndSREb4nRrFadLbAF9sSUN8azOBVNlxWDw+GPcg0pDFIImnQQ9vI57E61Upi4yekbniO+hL/ZYEiCDc+uP82nI0Hb1SyMI9OPwwBfYB/kO9z6gyFL8BgxzdOdqQW2asanEK7bYbsUQErMraag5IjoroWq5HXFSrr+0ihorsHdxRCf5HLQ0qiVgbh6OQZd2WQxA4Ehl6s1xgg59PZohMoyEEBpPeghbrXCFD8WR20sRxruU4WkFFeKQ/lThGFq/KRd2g45Zwzj5KSmYacpzGNaCDa4LqViHH5Sp5SqAM8mi02R9KdoAoL5YSaH8ZeeXJiFVPHRpnM78BD6wnYCCWeAso0zdaho3WQ2j3E68ZAyM6M6AzUs69XCfDMCI+oZi0NmLeA95MPkGKBbbQe8XgQDQeWfqWDmmwxiKgsFb/o8LGHhjLGiTA+W4XcpE/D6KaJ2HSsTamJNcM6lyZi8kGx3SSO7uRaYoSGKdToq5gMEVXVz/n6M42bgRzuiYt3OE2EH5b+c6WGSboDRccrA7DMt1X0z8klMkFlJNTtvVxsOlaoirm7jtwq+PjHbPjEs0J66QXIQUhwo1W0NZg1gs84w/qmxzuSARpBJg8dmFJpHL1FBz1Q96XE0ekynKcGMNuCTtzifTg+q4lykzhSytZ0dXnjYvCHUd/eE7hZCOEqOJrUkWarcLEjmpHbdbtIl0gK0TV+NJbIodJ5RqJLHZ8KMgC/gZgTZFp1qLmEVo60ZydJpRDSnU8c8GvlneDuW8COvjS65tQV3nB1YRn4ww/VEtcQiQqADlPsCdaIjsa80VDUJfKYMlB2TbEyClvqKCmo0lto82AojfwE9o/jA5RWZBxIUlym7xaf9JwiM8bSjqdm8FMTdswUlUvIsodBXTwh/FTzZ1l+K/Z30FkWwKGuadxqZlOqk8dv6GQ2aq8JERyh3F4PXH2BSOjWJhXqqAzeSeyb1itsizexGCCyHxvy3GZhBa+1iKgyQ7RkWyvKIQMdHI2vEJHBJuAVYmYKnoBDWGzeYAV3KnA9aeiC8clqiw03DyFt0hKndFJgHgMrCPKAgyoVP1D8TeDTkZHWzEuXmBrgKuKwd+dyYApeYAM8QAeicrXkitbJEpINKtVmzFQZ9GizoAbRhNo1senutVLMneoG+KjixtFraVjsl9Tj2ls4jbK/b0hg7yyRbWlac8wwHZqXleSbLsEdESiMlUgobral/FkYZjxgzQ1Ru83uwbqxzrBFCe3LZman7MBiFPknn6LZEwlTRVQASrTqNtHaQoSnIstNj6A3sMWmkdjc6Cr8sMYeOaa7JlV/Y0AGHyIyZ29bRZZxnpfxzBO+4bWIKXYwqYbSka5WQiSAenxAouQoA4sQ0oJnBDLpGAeZ2wKvGhCemktiW25hDkWgsAAe+/5iKHEAYrsGTbDuz54E+W6bbddhFXeULdCOkeivDGmn9dApqCVaEaH6pzpHI+njJQb8rAwE/utNlDWwf85l1Qly/P3O7IgcDkUbxczNo/KFFFCDm9MjeBLFpoom62eIX02gYhJAH/EHrJwj+0qAEBO5ndeXRTm82jEwrNje7ua+02/8uZaLnnDjujchAq2XLCmswBa9477ZLjHkBU4FQo6zkMlY08BOxaY8WSqVG5wdQHypEemnBhzloBRMQaBWDFYncoXHO5D1Ef4iUWUxEcHpvwL+8xHslN+KhHTKUpiu3pL7gzj7+KA2/MiRIqtPlILCB/cjtKtaR0uGfNEdjxMlEfWL+ph5VnvEqIbSNZ/PITx4cUsOWKjKsx9H1RFuXZYDVMw4MdDu66GahaHdntlvUVcyTBrdih+ylca7cjtKgGtxBK+M4qjN6TKLTxzO4jpJTUvA0M0MbvhtmLVi6gQIL3pj03IakuByglAOwr0mixbU/SPf+XghHZiQFCUMdQTwZl4ZPwVgqi5tAF9nY7KBIC16MyDF1d/7oOyZzAFgfKl4bGB83npYi2LbcQS2wMTI1jhmX9q46exJrmG21VeSjjAQyU3Iu80jA7/BxEsGqiJdBDvAuOXdiQQSkUyBBpa/JwasjgKbnnMytLapqnwr8STHgz1n0DGGvNpUph522DXes5oKTBm4ZXib3Tl1GagaFGsUNZ/sVcigkVrA1AbMajwYzTTO3vA+4xkwQD36LtteGRVXgY2uAJHlgGdT3oUcyqx/wocq4OEabOqoxec9AH+BHiHEZRvqD4SwBOqKw7DZfclrgTQ2mcBNvdjiJZHiYrDSY1WxzGPhzRIeUqh0qDFIqyFpBeoMMtpFpTD4Af9mLo1GIhSroJzYUwKQ5pz1HM2OHIAH2BedN638XxlQDsLcqlWoaJLQQmw9HIsFswcpUN0AAEn87KLoGbSf+bF5c4/nASs8FMMmAksqP2ZnkJBI9p83Ny2RiaYaYhzCGPtX9t2r6KgaV2R+RHXO/zzcbozLo0Hd99wfaE2X3GGgxixt/QWlHLzQCgdu72VNoS6NBljH1jvRAt2wkMRYogIsbxhTd2eCT6OfSIbBo72BipP1nLvabsJpnpvWSwJif4DohV46eSAH1d7IHchxIAUVwFx1E0VvGLGamuX2nryGhmhvMVS7FDPfzJB3J+D3jSKxApAfURWFMLEM+2pNMIM7RutqJylLeMUsbilEXvxNtgfCX2u8Mi7Pncy2kuKOkpDhin7OyQ8GLKh3QB3XH7ibjCC5sofrPU1g3CvprvVcBJO7omGYQUco3xJHygPwS08Q79beJ1+Fne/WA8eGagFW3j0oheXZ5kxA279+VzC0VjnXCb5g83o6BvpTegxLLcqZG1wrNzvDJ2xB6gWGB0Tg5ZjnZ5FWKGaUx9Mi13CIpiZm1ma4DO3Hn0Jh3Sg6DPGOzhMEdnBfnsy528mYPLybnUcORdb3+HGg6/1AlmXFOzjjSL0XjEEkMTxcYaGDOdMPjN+qkdB2YQUYKSJGZDrF71GAr0F4AgGXSa3b5fGYCky+Qlk/B0OmgvbQOYmLQSg44UhieUDtwmODns8heObcNilZAyw65AlZaWoFhk5XjZplMM1QdTI9s1JVs5aHQXT7g6ljcnGHpZJzFTGU6IiybqySrVWjmm573DJj2LCPR9eDD4ET1lqmdlEcdqQgIK+kECoTRfGZpLbSR5F5iaJEve8ljk0kiVacldfAa2rlibi+w0ezSqnQTBJtcjsc10SKTo3sAu1fwK67m6pw5wndosKWqIvnj/IkY50HkJZXh8q2dSeFQPFK3dfgPnWzGdAc1ymK9GZJTeS7RE5AoYZmEG5WAGI9ExJ9dDpnSWXAgKzaoLosAsCDGz/bZcBRdbpCKDGG8oj0tgpvTC/4khlSQGXKwS9xTkhKwSyc0ttlQegY7hTuYkSzBZD1Ec3xlPgyt6tamU7OblCMDyG+eFLArtasmWWequlsoBn1BtFZTpHGtm0gvu047JNtu85eg64PBaaFv2GQm1sNKMQq2FxjPHGADSAVcK4qMKAqbb4bNeVeKdfQMmRQPTGN0bDl0LqGx3KgxcAFkPOyQXoInWhLGaHDWuygKFsRWow9bX7AdBHJ7igIOCd8yXM+wrH9MXobhrqVPjJ0ZKdQIj7BYauvAHEN70cjkOS7KmKpL9pSp70Wusm05xLYy1Jel7Z7MIuin5U+VCsOkzeLCo0B7F+NgXcMe+nsyJKiBXTGqr0FQoJNPakSRrzvRoaPhJErkRpxDHzINYIE+F09zRdn+w1y/85Lx/KB25mMbJMQs90y3ay4M8nNQMZgYmXtfg5jJZNsC2ySpptJI0t+PUGRwoDSE/iJ1N9mXfFMOVvsU/RkOH13JzUTHr/T/NPkm/ORotejH4RrGcYSPs8i/TKQRZH+dl1UDVaUgca12WnG0TU+meDEY08JrpFMYHVkYe8UkLZtDi4kmSwyeSe6cyB+kdCuPFT6LZoBAAFRzJDtYfuPhxoikmKeB+nO9nfnY5UY1iGSXa1usMVRlYX5ipIZtqwszt+nJgrbY0ZsWOYAxfoTRR+8U71ZTOkpM7xTYw2r79WGCYyZcZdqskabEjE8o6+R0dVBQ7uAxhVQuDGkxmjOcKw4KoaMjYWJzWD0A/IzcYp54pGjc4kOXW+Sf4XVYZoUC+X6AtZh1utgZ6WtfsGUJ7kDnn0ArXfuMFA5hk8uIwxgGEW1Ak90opQPzedhTeliKM1BMT1QsoPgGWJNviWdKiJ6Srq2l28kXhcOUO+vPNCH3TthF/PJGwtHgO+hJybic0rpBhmoC6z7gDqrkbnXuTGqq1ANAOXKDkJFVTwTLzBOy4XAbuyFFEOyRXJd+AjfhWo3GYULUOY60LsM1Y5ZDcJBquYhvbX9v1abqnivM+zQHOacruNdpBV3IDrngAEIPKEAGgykdESKk2sxsHjFwz/lnk0bkhVhdDldzNAvUrWLEIzTU3XHvr4wuZcggjREjuabVcmBeqxQK82P1cr5yQWELgskGz5wF9TGOkWmUMF25ySsVm9sijSgdsLpJizTrjx4IYcZkOJkuR3SVxASHzqE2It/aSQ52glkLLYN/XFYU1ok1gDbm+AfskTIsE24dIcc8Yhwm00GqG2aEd47CbzrToMxM2bzR3Q1BBbkB2KmclYKxuQBmJ8FkpF+eBJKCcya11k1fiLzDUJBaqArXnDvSx4aopp1dcOds+xDZeFrBe9C/e4LHShooKJvlSFtOiRTDybSigE9dsaNHkw8guMZApU8QVg96AvWvw/VZxYT5wN5L8nN3O0UGp8pKwTwCV4fzPJYUpBsKIvRF2ij33woW4k7Njs6T1Y14J4k/l1VqdQ1mOOekwFuTA3YNo7+Dl4wCrTpFubzaUTYx/QA2LwYjZgfChPqKmn3jBOic+B6iSls3w6GYKuDeiYGQhBLaWPx0S6y84HRn+It8Yogu17RS5qWMtLim+RwNsUw+qCnOgTU+sEwOxqsv2ZawgLdJocuiQxdSTF1IkiIVpcOiPSjT5rVhWZp6UNCalBxtaSJHfwAEVI5mEmZ3qsDMfFLo47AQHe7MGWQ2EAsbd67QpUFOhpifNg3LFxKoQkadYq9sj3cD+hwOih7aJDDTkd1gDaio46FtB2bB1gUMqMTfHNLJiAzwWlH7cEx29Mfo3TPTtXGSXKIVdAlOwmhkBquJDUE3TGZIBfa8duvO0aGTOt3gEMvYqbQ5Jg5RY55+kCVc/QyV0D4RnTiHgrQoiTHwQiuazU55njmw2mDGbEco3eiJ6geSP+zYI0VdMbpVWp0Ssh+3ikNHp2e0lDgnEaAYLbaEx54PlM6PQqIzSKbdjHcGeVKzGFDgM5vWeSl0D/4eWvWA9+B0gFyBSnI3Psf1lCmjxbuR7nYvhawwoIaBx8NOvgkG/iWGyPUKzYAVlQ4FETKwmEhe5ryPGC4OgIPsmPt1+OTpkAKx5RIZJAYlJ1I/AHbdlJgCvx2T4wNqMewryUcNwsMGY/hiJz7q45JigGdlFr0D67cDxPfaK+jZ8jSQkBJIpFroVFnlWFkyCoiNE31s8r3eV2U22YqYqHFM4tIhaSfe0UBcgoRbqs2S0UpFQXk4g6NzcULF5zG4O1hgLL5KEjCRP9gTqFDY1HCSO7lARE9MZbslaGsoTD2c2gZbfu6QIRDLUewwVSGGcgeteo48nvG9qMswmBD+M3mffiI81RDmPAd/sTOTcT7gF+j6aDHahx6AEfofey6LYVX6OoOxnF7a5swf0dxQlCQZgzfZdWkFBj8FR5seo9u3KoQIs0WOinkRdqfgt6SeDmGZTbbjTeB7JAAFBojIzD/djjbNARrXDpQie99iSEl1yYQlIDGwRU267oxKUSxPp468zklu0nG21EMckEGnELhq80Y0NKHMqeyvTvcdYkgFXDT0Hn6KhWSi0Vec+mxhNiiShXkScEtbEmFZCWkuUL2jutzgxJOHNyIFjbB7o0mZQfFW0WO6PsYJs3U5phErs9mMgizU14+tP2ARnIGodL2tzBSQ5FmKvq4wF1LqHi6ty3Zm8kHEvBIlp0r0oHR04JzSpOjjDdL2VdYuM53GIqphAMGVyagdw/a7yOOjDCIXCaYuU2KhNbKsZDlrpKashGb45xmiUuH93X97Rk7BYxhU21CxOENGBIEiWRl2N30YVQHWJdyOdVo/ssREi1Xx/tA/3SwbBfGwGjHEjNHhRvLpfClhbGKAp/F5mORVo4lrgdauuoMP08ERq8pQ0NXRDwf6XU4EPE2LfH4bxxHFQDkY9KBO64d7KqvHBnCs3KEaBxlH8NzxT6d6FojtB7PhanB9W1eKVmdaaaG1K27qFK9VYNZCr61OBCEOIdO1BMCmuW57Gtqkd1FAOBTJpNHofcm0EhGlrLahbuLJ06bBkOdPjBxEo9JMETPM3a/DhAIKhi8Wk0Tq4CsztCAFZlqHrWIgtRwe5r3KP3TzYyV9irOLotMj8M0G8oBA5UJWaDddZogp6wz9yzB66u08pR4MUKUDLHb4lnQ4lm6oXTKZ0Zhy1N8SnZSK4u0QuwoMC9ZRfhoX0QWx0N41EuIKAbJlPiTWG/SSVttKJCcOl4TUKSREbkIPzONgIKhHIX/WiwQtTEhAF+9qKmILc3cgyKbA2zwfC2luvVZjQN7qJnge6KGApnCl69SDmzqYegbkwDnrog3GM0UrW46JVtmyN8c0Tqk82KOH63kFXIEqoRjJ1FEfxEqaqPN3EPYWhsM8SuIHfD7XcxzDd5gYThyXulORFFrWoI6JubzOkQPTxTTaBTYcO7kYfnqmrC5ghswpYRY2ri7BQ3FQReANDKNkoAhZYYsrGgxzQTuNWdyEFGiJq6S5hhs33CEhKpNySA1vxlI7HXmJG8E2FEeOi0dmf6XhV/ZWb4WqsL4Erm4mNZq6o34beMcw/NDOlF1juNzTsi4TZDKRnqPHB2a+RkJ2guG2iVZYJGMScYSQNtFChWEGJJpRrpbvNnH49e8yVNbl0NFfZ1DRjGCZt9ErzTSVKY/gmS0ZTJ/HPkYpKUefkKPCvQ753Pqay9wzOjQxCSVQFrgz1pLRjaCDmo+Uhs4+gS6hhRRkowMNtENwMkd5TwfVHqkBhSx2mczVNNtfD3pxRpushIfZwsrSQXoRPZHJnDqCJ2zECvY6R43FyJRcs+M4ZKmAWRyzWj8GfMxkxJcyCcF5SPRbEr2DFTM1e7Kx1PUYSAkTj5/HO0kvUI2Fb9OsKHiiGM+mp1i6UZIK9GdMi5FzpCAt+25H8PYzBgLQZ+IkmoSVdFnv1AN9JZzB6gHTD4yHBSwxbDDiGB7EOdtt9iAaHoFGs2Q4LLs2aWGKmvPOxgEORWqB0lS1m4UKou+YrbMEiaoDANJLuKTjCLECMcG+pDDlF7aq6MrOroszJucSF8LvlqtrPGOrAJfRJ1Dp0rQAyMkY4gR5SafU75JCCYIPRnskJrSYBaAAK6U36aSwNXsAtXJOoy+646Q4c1YZgQGBDhlBh8IiwYhAd6ZRuJsCvYYRhBRb4CWdQgUEpD0qPZKX5vRxnjHNrcXsWhfCDViA6OeEydbZSDke0riFuZiwHBnvVK8PCoKvrtDDutdnVgu08TQ80/jgkl01en0pstAV7RtkCnhyOWiTcUxOpIM9QSaa0qXn7NJqDrQOAyxdM9aMaI9pn2Q63ayjogg2XH146Lhgp0gS4naG8h57b60r+yEOw6NQ5BkyExEUZHYxrNRPy0QcgCWBtpvfX6ObkliS4MzyVnV8A74FK5TN31AEyTMG9jAZ1+UaGIjZmJquI2hiIzQPLy6Xh/mU0yH/KTDKnJJw4LX81PAVFA5EsfCHOWeWFNrA6ZpB2OlTqCmAx2Ags6VOibnRdKYV8I2u8yGIu2jix6NZpIMstinkKSaJVltgZTBrZapeX2PMhlPTnQoMUQrkEK6bKTj0Z6/Atkii2mxPNJYybBLH11SYgrCQ/mAEahSTGQGtmtFnUAgolvPNPFAu40pGftQpP3pJepBvBsuZLxuRkUeu5QXYGXTgupD+QRuwR9ZlvQzFICAz0/bn0YZ8AoqvBEnWTaOHsUjxrjReeqIpWOsy4M6IkB1ir4GBZgrVCmrEUgfRy0AjC0fa4WUVTbX4uBfSM24mNL18DNtDYVQ7FQ/fl1rxpL7dXAWDuANsRYNGgWYqe1cZKobSUmIcjsC/wwgl7580ax82N6Tf11bK8sPh300zHSlpphKz/oHysAcFvCLkRS48y7hIfFSCZsQDpgB16pYK+mBY8koSQC9UdB1yfLOgQXx9pI7JdGp4Iw3FVznOubHJ6xSYAixKocbrhJRGP/oTV9ioHLCrrwp14cbgDLr0LY1UMrxBs5Zw0W3+FEyfzMkEheg5ZTvA00S/diVS8ievM4eSW06HP+4wwkASzgFNrlyv3S8TCFaKnhbrzYEWXOhhS9rS4lKIneEtk0HXU9+3s8VA/sjd1TPQ+2VNhIwoawTTia2wLo1B0PRlL5CGOgeRxnFqzPTJ8PvOQ+IpCaKpRrgiH76MfpxZ0AO4hGUQkYMGBjEPFKrJNjZme4FrStF/4ECdwNQHQTTOcX3PLraBVcuH4NCX7SXd7QdsKiwliRj0/D7bRFsmCUmKd+aUpIgNF+BsddTqUAjExjBWKpbBpjoaNpQ+ujnTIcUAa+t0EUY1/E3SaBaBygGJAQ4L4zvcW8FNHIleOEuHQcCUQwoJpY2yTDdtYURTPEMaQbdZ9NVyiMnQQPvqtEPQcFBG4MogpJFGcfqEObTkRuFDc/0UCiNXaILRUNJBJuKLESstpl/K3XSt5owOaTBmMUKUkTQuOJEXFW1UKWDqVvjWGkWTTIbMNT7AMgXuvOL4U5mwcdTk/WV8GQXsLCQsE1SgU/AbDj8jmUQ/w93IS7r2SHkSFJdpKoDDwc3sGWjzynx36nyLMxJkPBSe0HY3V8mKH08efLHA1SIz7iL+2ei6igYAWzeNSQpAABTw0AJgBbXTScZEGLpTPUyW4uqEvWJUF/GvEJs2EL1oVYfoLuFyrrCmMHE+m5eiFj2jiYv6FWtmfn/oC0uZivkJ5N1EU20QqWF68pnxZxtZC82+jEDUQ3jafb0OcWQb3TLU43ZF60GG1hzv/BMBt/5NSjXA/9bvKYHuygon8+omBMAWHBC0GN1kw/gqN+HIvEQ4293MeVrYoW6bEaEVj6nkoMhOVuLJbLo05MziyxUInWg9sr48AyxSTDeTY+NUVTmQuW/hTC42kpWDTsJJT8lGNQOF6AdaSGNMKGN0LFM72SudJ12k7dC1XTL0gjoHeBGCNPtOeciUJ7AA3eAGZE+lxwal8xX+COefSuhGpe91IaSwzf7wpJNHOsI1repToDWj60Hqx+FEC5QocObJBJB2cDwTdhwIXIolDckneFeXtKGeh7MLVZqjqgtyasJwqiAQu9nKZpWKIRxkMoGb5gfWuIMPA2ss4+CUiJwy+gwgoCIlZculIBnoykhBAeRqwNxuoQyXp97KDUNCM7CNk7Y8gPQ2HI/y28pE+cWRRlTAzssoZKwz8EPPABgjqFYYk9wAskL3aqYfk5miduBvJXQnCT2lH7IDSa1BYw3iCx5r7xUOwAwJXEHTBrikMRBiCH9pH5tGgxa4qugca/DaFDvXi7sC/VgUapOPsUlbWrejf7Uz7sO1xcSMCQYRQSduLWjUVGWWkX2LkE3h7IGh7+C4LYm0/PxC7A5fiLNK5XBEO8o3YJesUwpHaK4QJXbPRJHkP9LeD/SERI+VKPpFqWoFL7untFzGGlMKMxxMbqPKIXKADc88rJM50onMHqSIMKB5vv2AUCZmIxASulBj0uEcPIuLM3VNH9O5yBpJXXgp7QzFlAWBmNny31DUWye4G4r1LhtAVmUNiJ50pW0wJvuKN7bAumtbbACFNqYNK2o0PnaKNWpV7hD3dFzPMBYw66AEgTe0Ke6ISo3LecbBJ8tgRf94mHMMU6ymUj1+NxdmP1B8h/FwkGFxSLoaHX70DGUpXufkEw+SLQ9KRtAqxneaJLgo1+GRUKu2R6/CAENlT6Gb8zTo2+1BI70wvcS2LRfIdxg4DfXrdBOHFwprC3SuFKsWSxkCrRGDBTvNYK4f8OiTMfNXgWN1w2HZAeJ8bDkZXoM4pgaL105pmTSPTS9DzgeHPzBVl7SNYq3szgTSsDIg3EUklZqWIo01Gs2cR5wQVD0mE64sAxWp6EJ/F3MeqtvVLCtBlRYKe4YTmJCo6q2oftWFmSzdDTuhhSfpf4Nmo23cVUEarBkL/fC0mrs2r8wY5wZME8p9Rgg5z5eSYuZ5qUJ7AUhpQIETCCyTkmk0eg0ZXdKXEkKbZJSPKj85AS2RHFjCKn2Cjex0JzlCZzTAh3bKufNL+LtLjNBpdrRkJ1cPXVrB83BuL7Nj6ANdesybt9WdFGQZhJmQSjqtXoAfAVZZmIzty3VMbsA3hubGnSk6AkY46D07pFA4Xkzgg3e2dDs6TDKdIcyYjNuGis1tKdjoSuPmEYLrlGoejLiC9pE5Qp8YdoHekZjm1h355ohReA32tc4Ye5c6QusnprHJY/AdiUzPqKSZSkouHwtpRaLBX8EUORxbNJHvIS8aQgRF5k5NMFkUWqEYNOZgamWRnEDURV/ecKAKkLc48gqMKP86htpOfEjhPdERlFxVWR7qEsTEGT6U7mp7gdQYFe5o0tYWnB/jBxMDwlNxfkrkDojQYWtjCK11VKLbAajkBK1qD0qQGcqdAf9RTeDBZPYRTPbEJ85MwoLUobWg4635dpcMPACyZyZD2GTYmB/SRTmRqpB2AJWo8L+tTlDrYcDLylkNWJu1JzF0euKBzuEYDoKklyJIGwxPcUJFy0Xw6ulIE1T5gVi0xYFqhNDULABjSSa8Pkyg1QZYJusjVWQLfq3F4h8oKMPAQYd5N5NdA6RaYjI7XAB+HByVEI7TCmWhOf0NLl94dRZmjVXHQgQPAfhk+khjGKtdU+oVpFs6U+dddqpFFhp+d5iTbMMTFbtGFgvqb2ujJxiRGrOCPUqNdLF2HiL4YcPOFCDZKK4xJcEVwcHwM2SowPrczYNOZszh+Baa0iy3Bgk/ZixFwW46xh5FvUTFTKwilWi0JCnjFgsl/ZcdSigRS8DNLYNLLdDx1XD2gjKIASbdZcbKYTBHfVDeBS/gB27QP0FjHozbNrtOR5JUCWHSGLbJXMaE9AnOSfFDhnKNCdEKJpvVO/qcqaKAj7Sv1phV5iviyQXsPltjOoKqbFmDBcfQFNJwojieFkZ8aUv2PlMq7NFAk7lUJzW4SfcazCbd9ZhrQ2vKwXUeEzv9dEP5sfIPgwXBzoDVksIRRBsHVVvjyCa4ophTDHt/h6fSkzO36LNtjJd0o+Aq5BIro4ag9pmW/fDYlcVi4SQb3RPdIfoemDcQuOaU4hwBUSLmTSbbth6kH37XOO8cfZbripIiP2MC7gKXMZNScRC1t0aX90OOxH2hi2y4htAoVrVonF3L8gl4Jj6fghN6nhY3AIQsVgdtvKKmhytWt9inqOjCWOSln4E8ieoW1WpL+qw7ydVew/N0FUjQL0xq5PjxsNaSgkyXloAg0Y7LlYpkHEXtOPOtu/5NyExxoxiKtEw7lAjwVwseAn3oMe8LpFZyJuhOGdkOQE4V/GyD56K58RFYcshWA54PCstlUOi/18d94vf40YqQRiQQLXMtn+pKBCdFYX9amj5yqAzBpBEZH9mJdD5wSoLPh7215A4rrGMxI2eRYreJAblxK8lD+BltWkge90JMwuFP2XU8gDiHwTtmksS8VPPVoJ3UYcnhHzk2T2pL3JFyrcE0JAgblhnYI4Jol+4F06BdgiMsxYHZF+lC375UGQD9NTn40UBSaAYvoNWSr0BXZlLQ5QxzjWPIJNupaEM/TII8GwctRQqbNqu1BMGBH7NDaYD0IdT43o/uWJ1ZKjNjrdelswz+oNDD4KB/MReAOWdrwZVPJofPsFrwHB0Gku6AKpQQKtRCJEWkWmzb/tqCP74cg3inUYAGVoVkuLQuJ1QCejTZ0tUdUskz2iGAZ2Cznc9DWAQ1GCOgu2tepGyLnw/znZS1nXGBzmnBzOtqkY24gIRwxjl10yBgn2EGHTR+NO7vZs7//ve/f/aft354c/W/fr16/d1v3+ofP3//6vWPt/6oT19d/fT9rT/eevLm1Y+vXl+8evO3n9+8fXj31me3frh6+fbXN1ffvn7516vzL3z77nZ89d2t//ryb9z19v1TKxP99MCxR/TBrr18duurZzkdH7TDAUcvGaBpAtbPbt355t790x9WuBUkp0TcOi2f3br3r/fiEp2lrdCMCHto7vqrR8+PdywMJJWwwmsHCfVntx7e+WLvQZ49PuWbACIDM6RjsSt00NpePDv9WXSRgKxbmMKedMfLr57s3fHx3RfH58jSmyTK5iqB11PyjM+/PF4b0GpRwhygYLTXesjnj/ce5MEXd49/JgcEuBhdIqBX9Rx/+nLvOe7ee7S3iE8fXhzvx7BuIvQS50YP+Oji692Hv3h45/Heetx79nBXRJ9//ej09Gcg7Ltf3t6747Mvnpy2cwR3R2DpAXi2z279+eHpKemFgoeC3gU8FK3wxRd7P3b7ye4Cf/7s4nQpQ1xMqEc2Tn905+mz4/3o+qLeqEcgZmFBnn51f++37jy/1mvnj/j1o8enV6ORXnEF5EmTmJ5nvK58n9/z6cOTpTp/ysdf3tn7q0fPdxfk8pujWGXmPcHj0gtMnPH8Tx/sSNwX90+Sz/z6NZCJofNZ4Puntdpa/IvrOtWG6D++93h3kZ9/dd0QefYod55f7q3j5bUYkH6GXLtDJabgQYJ1uasnHj+8zoCc79rlN8925fHLh6c1OT800i97j//Fs+d7B/TywcXept178Wz3hH5171pCztXBo4ePdy89ON2SKAMAhrTrgA8cJfLF3mL96Yvbe4Jwcfv/2RWEuy/u7L3153ee7CzVVw/v7W3n5Z1Hu1t28Xx3qW4/OZ7d8/e6+/zFrjBe3N39sccXd/cW8YuLaxGG8pJBbDJadBrr1+5fPtlb4DuP7u0+/uW9i92HvHN3Vy1982LXsN7+Yv+Otz8/afdcm4JFuhGg4ZYHJ7N1fZzOD+H9kxlP8A8VhlCB21mn3u3zFxe7EvL03p9PK5llFzrZjHVIVvUcJzt+fuXOtR08NyQXj49a4qOfgZFEe3b5dPcp7lxcx89n0vj40cO99/rmm3/dNT8PH+391e0Hj3d1y9O7X++u/f17aVdfffPlo70Vuf3o2c4yPr63a6ofX2vUDf195+lJBtpsM3I0EEjVVrHwz3Zdr7tf7on+o/sv9m746OJyV04fXBu0cwv/8NqFOnN5br/YF24ZhLKzVA8uv9r1eO5+fXtHdJ48+3z36R9ffrN73h9ea5ctXfDozu61+4+f7u7a0weP9s31o692JfLrh9/s3vPiywd7Avn8y0e7r/7k8tGe8nzwTiRvruXtL+7t/dGd+9eee+lkWBUeLfBP6TFeXLzY+6tnT+7sK9VrX29jQZ5/ebl77fL5oz0h//rB7Wvn/Uwb/+nzP+/92dOLa9dyI3S6vPv53t89e3hnV87vXyvCjTd4fOfh/ps/ufZuNmTh7qMHuz/4zZMXe2rhX5892Nu723d3F/Py89u7P3Z58dXutT9d7Do4t59c7qiMpy8e756cy8/345b7T/cdkruXj3evPX34fPeeD+88332Wx7cv917u/rPb+wb4wa4QPb6OHDeW68vPd1/g8Z/v7e7As8/v7l57/vRif1Ee7BvGi+tTt6Gcnzy7u/PmxxTJ25dvfrx6++1fr16+/p1Jku+vfnj5609vv/33lz/9esW9M8M0mZfBsCyJ+CfzKMff5Cd1u+sHOGZRTo+bo1WxoAYbfbv13UtuXDktzcaV04JuXDltw8aV0+ZtXDlt+dbfPNz7nZNwbVw5ieTW3Y5yvHHlJP1bv/Nw78rppG09wdO9vzmd6q3febF3t5P+2LhyUjpbv3NUVZtPsLc6J624ceWkSjeunPTv1uo82vuba2W/tUFHG7G1pEfLsiVwR3u09ap390Tk2vZtrenRYm5cubazW7+0e4RONn3jyskT2HqjJ3tvdHI6tu52f08UTu7NxpWTS7Rx5eRHbb7P3pWTy7a1cEdHb+vZHu2J6cmp3JKEx3uScHJgt473xa5Sutx7tpOLvSXaX+8doZMzv6nIjhHA1iK82BP6U7Cx9UPf7F05xTVbV+7vCc8pgtp61WPYtSVwuzru8a5WerwrcKdQckvD7ArcddS6JT139wzXKUTeuvJw74dOwfjWCz3a27rrsH9T5PYE+JRi2Lrdn/Z26JTL2FqEe3ua7JQ12VzTPaV0ys9sPcHne4twygVtLemLvd85ZZ22jve9vbudMlybZmPP3l4n0zYFeNdV2jWRp2zfpvk+vtB8l0jcerc7ezc+pSy3dvHO3rudcqNbL3DMqG7ZvS/2lNopd7ulUR7sndpTlnjrfU655Y1Lp5T01vI82Nv6U/J7S6k93nUzTnn2rR/6Zu8RrnP6W7+0ezQud1XhqeawZWG/2hfMe7vK61QW2bp0f++VTiWYTeW+Z8sv9w3P8121/+WeOF6XojaPzbGCteVPnApfm8u669g93fW3TrW5rSP2bE/uTkXATc2/tw6ncuOWBH2xe5S/3DuWp3Lo1jl6tqeQr0uvm37D3sM93Y3B7u7a88tde/Vg16c5Fa43d3Xvbqci+dYTfLW3pKdy/LbK2DtFD3fN7AkvsLUPJ4wBlOUf/uc9MmFLP54QDZsneUcz/H5Mxourl2//cvVmD5FxuuzxGM//8uvr76/e/OG//eHRqx//8vZ1/JCeioHe4zgreF0KebY7P/386/e/7Vx8cPXy33/7w+c/7/3xg5evftq5dPnr69d7t7378q8v9SY//uHFq9ff7z7X1cs3O9eevXz1evPS/0lW5/0yn+d0GvC6OSozYVKv9RNbYVI67x61TODUlTnFmdTWh294fu18hc6/836Fz6+925iNSx/t6dZjvROI84t7cnXzm8eN+Pn11bd/+fnt79oEvndas9PC3Fjk46fvn+/scnx8tnQ3vvbx1euFuvGl+PCjlbr5hXdXroXxxhfiw3dbdOPi8dOdxbzx3a3vfHpxP/+JL9+9+unlb89/+9vVx8v76OXbqz9cvHrz3ZuXP7z9Q3zp/E++3foWHvnl7l+8v6bv/bz/tetLn36Nu1e/vLUS8sEXzuXj44s70vHhl3Zk48OvbEjGR5fP5eLDyzek4sNLXiY+/OY/JhF3Xr558+rmMt67/Bft8Pur354+UKRx9fa2fu+XD669+0h+yM8//vL25S9/QT7+4+VvH37r7JIe7X9IKb7Rq199/+1ff/7+6id++ur1L1d//befruIZP9Ctutd/v3Xx7z8+f/Xd/7x6+/TNq++Q3o1nYEm2wYkfX/lIN7vd3tjmva3d2NNP7ZC+8UoL8/q7q8evfrriBT44F4/jFg5wua0KvWrb1Gn7euzTekeW8uVvT354cXX1P0OOfn3z7c8/fKvPbmmHv/vp5S+/vPrh1Xcv3776+fW3P738t6ufYjOTvps3vvEfV9yYr6QD/MFrdJJ1Wgjr8lk+pP/xzpa+RYf98cYNbt2QKu4k2//malOm/i/9/tXVt7+8ffPrd/xW/P5rPcq3Wv+r/y27+Nmt17/+9d+0mr+8/Ovf2PU/lpJlRbV9P1x7G/+SDyvjbNOAxBRe9PH3/3F0Y3Ze5XfI2v4uuxOwI5H/Jz91dqhuCP3eidqU1Q+lbed0bp8WL5r/H278L3/76dXbb08bGt87fvJj2Armtw0a00di7Av+1tu/vLn65S8//xQ+YHvvqv509cPbW3/UA1zx2XevfuHFTk/709tbiNgPb7/97i+v+Mv82a03vPL1vxek68PnzRvPq+Dl7HnzjeeFMxB8VXD2QhL0T3rgeuOBl5sPXM4fOFOX/vBg0RjMzCoo12eHwOLmXerGXdZUz167nG3TStspJBb0Ko3xT3rtduO1+80HXjYeeDkXq3rjeWlAGTlpFQA2TZAEHzxvLf+4YI0bT5znzUduG488Rjp75uVsjVMHm8NIu1Ra/yct8c0HPnvevvG8xH8fS1ZrkwaMUnRe25zrzbuMLfkEhXjjrdv5gcorPPkzZv+09k967fXmPqWbTzy3ROtcA/SPHzjR1zwgnolunJw/VlnQ3BwYrAvpBRz5/+Djl5vPX8+ef908Gv3sBcbZii9Mks+yA5jfdf6zdO5NpZvPte6Gmcj1fM3rzTVnbqdU28gnarqPHrkt//Azl5uno5wdj7xhKkBonz30vLHO+UDT1hqTFOmD/6fZtpu2Ip8Zi7xlLco4e+T1TG1KZrN0z5yZWVAfi8Y/rjXLmT0+F40t01TyuTjnGy7EelhW5n/SwA9/wj/LNOWbtimfGae8ZZ3ameqsDP+ilYXpM+PcKOcti5F59Rte84REAr7JRhtuO9PBeUuVp3PLk296NRBVrDHKqEHnk26uYUorlPvwstFUzXv/Y3Jwc03L+ZpuGZL3D/z+HW64KCXmdurZC4jwWj4+bSX/43JwUxOXM02cN0wJZ+djMSgZsDCDE2QdQPSd3WZLo29sX7mpHZlC1SFAXOXSz7X+s45Avalp6rlbuqXR8w3JhX8SdhFGpbUi7/ls18uGkm3nK0hH84SBpEAPfH6XDbW3oajPxX+J7m85aQkk5ZnwzzKZwX5kL1zrP6wFby5nOV/ODS3IEn+8DrBeQi6xjs5MyzOFUjb00nIjCFfQB+dF7ymmXNczaSwbWgmA6cePkgKcGqO1oFc7v8uGSur95l0YjzmBiOvcMrfi7C5bSgEk7I3oRzfJsDj0BDnT2V22jmk6k1WoT2EHn9r0Rqv9uZxtHtRPuo5S4JKhVZK0NgaRpuVjN0YizXCnJUnX0hz9j57am8a2nq1n3Ti1y5mYQUnE/JQMk4gcsHx2m41T29dzaQX5DxPIypufyXzdOLU344/MpOeKH8U8o9bONUjdODlrPhO0mdfcoYZY4Q47j483Ts7N7FViZkWCezjRtzMlbp9KX51ld3fqPP+knK9Lq36YKNpO636Uv/r/US6JaXdrCmqcBOvEDTO4NsZbLkwLnzkK1/9lmaW8tnMrfjMTBk8gTEShAhlr/vHTV9j5IKupbeJI/hfmmcqWDb259p3BXFOBg86Vnr7+VyWItsKGuREFnzlNdHTCoUX9tunJl/+yxMOGjmnLp2PgtGa4puGHW4dE6uYSM60dEYI8Yugr9Lr838kYbXgG/29tZ7eaQAwF4fs+Sy/yc7LZPI1IkUUoWIq+f+ezheKegCG0BW+qLGrck5lPdybF6sYkKboSKjCjTPPxAHgqbk8v2RJLtTbqmbxM6SiD7PTFSqB4WLh4l9w2d5AeCnLqM0gPpKIj0S4mHT/EY6Jnq+bgBjVVJSA5jDLR3brqWUeJZi0sSX55dlUn8YwM5/PBm6k41FQl2bpRdv5ovtA1kDJsGVvmrH0cgK9dWpM6WK+4zYPSHj3S6Har+2kgwdAoxb4niZKEMzuAZ+lN9RbYkckoR8AnpIZ7MPDuRZBt/X/OpcdvqmMY/IAJclEprJByiNW74N54TM+xJuXBmhQknpGd8GdfUYxwoM5AtOhGWaTetZCdSr69tvEhfhPNv4cNWS4Ja02KIKxDEMXr+0UnJQl1VPNC3kewhpkfB+5UMgpeaMpqqa3fEG+3U5H2yGWeC61eIU+fTANspjOWU/Xb7Z7ekju1kDNIll6Nj2qMKcB1+FYDV1inWas2wEW7gKVjsqzS31ZpbCDBegSwJMve/LZIEGkL7LjBOlig59aczyryRdgsgsTzam6v7HEOGUxv13S+pHtzQJYDGAIdtePoCRArNNuTrxuz4ddkU47b9nnajtfT4XK7ftyueLf3yyYDdH476B6tN8vHv39djxzO689NR9HfyxcUO/PXt88BAA==", "tags": [ diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/elasticsearch/ml_model/test/default.json b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/elasticsearch/ml_model/test/default.json index ce77f56845a5f..2e59da56a81d3 100644 --- a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/elasticsearch/ml_model/test/default.json +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/elasticsearch/ml_model/test/default.json @@ -1,6 +1,6 @@ { "model_id": "default", - "estimated_heap_memory_usage_bytes": 365968, + "model_size_bytes": 365968, "description": "for api test", "compressed_definition": "H4sIAAAAAAAA/9S9W5Mc15Gl+1dkeJgndtq+xL6E3goXApAAAgcFEmSPjdHQZJGCDQVqQLB7aG3672d9nlm4VEYscGSaPna6ZZSYkRUZsbdvvy5f/p+3/vbm6m9vfv7u6pdffn7zy60//vf/vPXDm6v/9evV6+9++1b/+Pn7V69/vPVHffrq6qfvb/3x1p2Xb968unpz67NbP1y9fPvrm6tvX7/869X7C9+++3O+8u5Wf335N+7y51f/9vL1yz9cvHrz06vXV/q9dCh1HcvodUl9XVLq7bNbj37+8Ze3L3/5C9/7j5e/Hb/Wak9z5Qtr7Yu+de/yX3R9+9qfrt7e1uNt/uXf//73z/7z1tuXb368evvtX69evv7Ee35/9cPLX396++2/v/zp1ytumMscbUlltlp77uvuUhx/g5/Qba5/8LgQHz5gLi2NJa1dt1xaWZcP323j4tbybHxtY61zXdM6xrJoRdZUrtfC7/jdq1/e6iZ/+/nN24d3z/f9o8t+97958oKnSLn3seQxWhtLmzVrwx7eeX68lEvvLOuUUORZdeny4ou4lNpsc1mXmceipW/1s1vPLo9/lYo2ufRR6tAXah+f3brz/PJ4w5r6XJeV1+6jlvnZredfpRzXShr1w9vqzx7ce3S8o1aolTLaWFet2dSl21/cO17S0n10V93y6Vf3j782U+m5jqm/aovEjQf5cu8ZHz5/fHqzJY255NrXdXY9yWe37j56cLyUa8va1bqUZe29pKLnf5KPz6+HWLSXy1LWtdQqQbx7/fjna3X5p9NzzNbLklvT/o/ZkJQHX9w9Pf1aJBzL0Ju1wnt9+fDJ8coyR269Dm1cL7PoKZ49Pj1FWlJrc+akv516fv3Ug4vT/XSwx5rron2uM+kBv3h22metRSl5lKzX0hlCBC7unu7XdFT1VlqnOUfVAz6+/GZvDS/vfr536elFqqdrI9W1aMu0Y7XoeT+7dfHsKFWlLlq5sRat/ZIXZFFvVk5CkNsiGc36m7XkzHY+vPPFzlvf+9d7e3e88829+3tP+dWznE67mVdJjoStaLNb1vLfvp/21vjei2e7z/jVvdSOj6InaWVqgSWLa9alRw9PIncuw48enO44c85DoiYBHuvQVj9+eNrqrdP5zbNdifvqKDwl96rnapKrdWlr0Ya+uDhqgjIl9lM7UyXBOjVaj8/vPDk94ZqXOnRTPUYrLONXD+/trdTdF3dOh/Ncei4f3dk9S08fPNrbmPuPnx4v9Zr0KLNoEecinaB9efSVuePnu0J3/1oMdL60fpKRooPVE7rgWpVt7Mztzx/uvtzXD49H46OfyieFdbH7JN+8OD5JnVWStdSk904LW3Pn7q6oPrj8avcZJSOnQzN6zzlNvdUykzSATv3XD25/eTob2vBey5CUYEH1h39++PXeMj/74smujN/98vaeon7+5eWuSD5/tLtxXz96fC15esRR3jkmcie+uL2n0P712VFRL2suWUs2xqhjaAMkyc8udh//9pPTOdywGLefXEvJuSI86fes15YCX/X/uppYxztPH+z+2hf3n+y+9u37z3aF68nlo10j+uWjvW17eu/P+792rT43rt15Z6FuKqBvvtx97duPTo8vU6I3aLnJhmbtnJ7j4UkNblivR8+/2LOGl9/c3VGej7+8c7rfUvTSWul1leZa9Bh/+nz/nZ89vLMnj19cnBS8hKePrnMolSZriEZ7/mJ3Xx7febgrPd988697G/Pg9GZZUiofNun5Fp2eUDEv9lXMw5N7sPVulxdf7WmL219+vi9Yzz7fv+XnT3bV1uW9i72lvH95rSzOFMKdR/f2he7pvt69++WzXdV098sdw3zn5ApuKsl7j3df7fZFKvsb/uf9N3h87R+fHZtH91/sKLRHF5e797t/vSIb1+5+fa11z5XMnevnON+Apw++3nXS7n69ryQfPN5dkfv33rlG56v16OHek1zeebQvXBf7onD5+e3dv7tzkcbuIXhyuXvPRxdf73sRD5/vvd3zp/tm/c79L/aF7/LprtK4eHjn8d7BuvdsXzU8fnixe8+7l493n+X2kzR3b/r0xf4p+dPFvv24/+4Ft9bzYv9h7j7aX7Tbl7vPeXHtTGxt0td7135f+uFm0L2RhJCD1bNCv5YmYf0nAnOTizg9q7yXtfW+xMMmPfW7N9y4clqXjSun1dy4ctqDjSunndu4ctrvrbsdpWTrCU7CtXHpJJNbL7T7cCf531qe06nZut3uG52O6MaV08HeXLnnO1dOOmRzFfZ26FpfbVw6qbmtKxd7j3BSqVuL8Ghv5a6199ZzP9hb05Op2LryYO/KnV35OZmyrYd7ur/ae2t6MrVbi7D7BCejvrUGJ19g64/u7S3PyfHYuHJyVrYW4ejhbN1tdxFO3tTmMX6yJyP39kT75O1tXDn5iFvL8+XelZM7unHl5MRu3e3FnpSe/OWNKycne2t/7uzd7eTQb1y5jgK2tu4YO2xpxmPEsfUIX+79zXVos5b24X/6u3hoU/cco6itlXu0Jz2ngG1Lev60J4un0HDrEe7tverz3d85ha5bv3N/76lPYfLmaXiwex53f+fJ3nk8Bf8bV04pg40rpzxDzvJS5JvVnNfSe36Xm9j4k+uExpYg7Br2U/JkU1fs/dApT7Nx5ZTc2Xq465TQaMvIXTG7PH/9S3ufSto6kZd75/uUttqSxWOqi9iIj+YslQLJ8i5BtvV0x6xaznKFS1OsXFuvJb/PxW1pmMs9jXlK+20arl0d92jvTU95yc277e3qKQW6tasv9q6csq0lzbUpiqpzprb2dX2Xot34m1NeNy+py/d+93/zXTJ4UyntncfrvPOWvX2w90enDPfWC12nxc/V3ymbvqktdnXzdeY+9yWPNSddkEeuc/k+4b/lTh7LBLnVufT3/3xXWdg6X493D8SpjFGqgoH1/T+X99WPrRW/uyd1p0LLlnRf7NnCU0ln63ce7J2v6+LRxqVTyWnr8O+a8Mtdo3J3Vz1fV9FuqAWCzFPxbWsVnu96X8/3HuHprl92qihuver+Y3+1K4+nkufWcu+qpstd7/RUkd1SqE+2HZnfW0x+oTj1L1sQgg8u+kLynZ+uXh6r48tapyL9ssp8pNmknJ69fPV659Ldl399+aMe6A8vXr3+fuc7d376+dfvf9u5+ODq5b//9ofPf/5x5/rzv/z6+vurN3/4b3949OrHv7x9HS+/faeXr37auXT56+vX2w/w+1MH75f4PHEwimxtH21tJVN2tttg0gbvn7PMpfZSS6sjkwH64PXOL+2t0cZNPlrt8+sfbNX5xfO9Pv/OO1HZuve1hN289nuk/POfeLW7Vz+9/O35b3+7Opf0G1/w0v7Fz3+Ib/I4XSpKJkPPUpfRqdc9evn2CpDHd29e/vDWffGLi0t3+bTj779yo8jasJMnZMsHX/oYQbEgv1ff/frm1dvfPviSNMWsWsJZyiJ/6nfmwM5X8VyY89LBsYBa6EvAXj6x0k6gzx4816GnXRPZRJ2UurEA+eP/K21jJXXcylhTXylALXm2G5uRy7rqmCetd13SDC9me1c3vvmhdJxd/v3C+vzVX68e/Pzrhlb++LoX1TwOrcsRyutouecldn8rP1oPTb6Szpaed1lmz7vfzFnbkArIGH139v0v6rfbqPLAgNDoT8b+V+Ux6ZeXXKv8P0rgu19tBxAK2jPKvX1d9n+/LAfpiNqp5yf5EmP/prkcJFL6KI+0lDHM25eDTgx1yNlr1W3r/lfrQcvT9F0dt0X/wzzqYZVoUx5ZJJf6j7nrIVUq2yNRCi3D3bXKFZ46iG2tUgdpf/1LPoyWZp9Nby9hMZtaDz21pWphx8z6ut9/hZIyl00Gc2Tz+/OgtdRGTX2pt7QvprontQ0FfyBUpAj2vzoOWqLSZ0m5EaOvTqKBOs4p7ZKkMboV1C6vdOqTLh9r7BdN8oEKSWnaLYoxVlDKQSs0OgLYqz4zj3rQj5eqt09LH4oD9x+gE4SgjaXost5r/6alHbSZrfS+KqbWfrmVksmoUepoSad7f6W6vqnnY5sUfMoWuAct4eg3LVVqeTXndNFBITyTCzZS6u6c6PTrnZZF/6QqnPe/uh5W6smxA3qSaja1HLosNeBOnWy91v77r4chI6XjxH4qAvTKrylg1cEDb7g2I/5I1bqMCkZLZ9qJH6hY8HxSlqPNvn9O50GxFoGyvtdBAhndKwGR2qO2nnI3qkcPKv2UZ9XZbxLCdX/1J6AnSZW8lizNNvalbyFIl4PTgWf2ar6ZZHnWLoGSmyRtttT9JV11onIj4JTL0pK5KcdU9rFo8alhFnPTflhaX3RlTP2XDre7qY6nFMqQS6edHfvnRKoX30+CIsunk9X3v7rKmlO1l0ZLgTEwdl9adC766rIC4nl30/PSK2qyS5WA0h3cybxVP2iDSpdNlZelS26lMNEB7plSveb1dUwHkCAZiqaHc2qiyfJnNn6V5pluU6X6FElI95e86M3MTRM2WgG2Qg7gTMs0xxTVK9PTlx7V97a7puthSodLrKnRD2d4pc72d0ZWCb9hAhvsSJyTtwo2Lp3A8uYIpwPasOnf5erIjpqbopZAoUp/yzWRF+ckQxosKTJJgHKL20U5JUP6Ez9Hxmk4t0BvNQO4Ccw3ZbcA6bDIGkrQtYsTHeG8kkBg62CsiwTK+RpFni5fU+izyjrv71U/dP14rmHFe5tG3ywSjilfp6FDdZydwGXt0NS5GDpIqRnkUpdqSARoEhh5JYuxS+1AGUD6Rv7zKv08jBjLzMjbkVgBxFvdSjX6ShR3JaI4IygSv6qtl5ptiiqNClsPZHqBzqHwR93f+ykvd53AXPVfSzYugZRNOI/yhhS+VRO6lMNUlLk2Cb10vrbVetnxtULuSHG6sd7zkAfuuHTtwjI752XReZef0YuskgyEkyd9LAsrV1cyWN3r1wOARGkS6cXoDnFSQtC/ajmbTKNzCvBzADc3OSbY0WJVqEQZxLl0CifAWSUMomQlt06GxJ3nrF+OApKExciJ3AdKADI0knu0z/5OKciU77j2MmVq5L3uv70OnpSZDKi+z0uZ3U/I6SLB0znNxQWu9WDUskSDWIm6pMKQbhw7KeWxEFBL1WuBmrlpxL9tNO23FF1zFkROwCRTJb1Y2bP939fHYKbk0eaO52L11zrkgKFDZJ4Ug5pvyv1dCVWTLlQrbDq7uCnyUxUqTGOUdNM04nby/uWCurdfSg2PThGFvj6dvGXw/oClI6+RXFStz6W7WfwVu2wcxiInTHsq905PIsVsYpB60L3mXIiDSqf065SoDkWVAk3yOFYjxxJjHTe9mlywpXBGnAGd+hb9Ux2goHl/hYvywxTRSj/V2az9UuRZcR5S1EOMU6Df560Su5VlFPdN3cTUrYqUtKq4bfurr3BBx28S1cp+VecUHQgV5TzIVVTAXsxCSd21BUzrZBMIL82a8vjSS5lutFysrZ20vyhgK/Kv5ds6IyLXQWIie6MnKEZQlve66XwZKxueQeZKyet4VLOP5bAuc61N6rhrH13SRbetc50NKRoyyjaUXvQ9+g30FxL6/ReRHPUqQdYzaD2HUU4oEjIIjeZPRR7F6bHOCZK8U/nRibdZD1LIkvdV9kgX99dqOaxHeHWj262Yb0qPyglZptSjLkigPpF1kQgvOkmyctMlKA54NvLamlSfPnV3lc6R35DDcaN51+o8WhMV90vmZCSMez8OERwuchwWHX2jyeW3gJ8g6UALkQu8SOLJKva00qnr0iMJB4f0mDbJxSsSKRlROQxFYTQH2gXoS5b6TNJ3k1jIrOh1iLiBt9Z2r/T8dVylbFOcB44a1lgHI2UbIkptLtpAqhtyL/bXUDGX7I/8M72rYhqTt1LMIVMpG7uQN1zNwnAqOgmehuulYMqLmhYZXIgMzGjOvBbgIyRO8bt1xeViFblLJcinl/RK15hnlbIZhaLFSjrEpk2x6jKEEzssabM5NoIEGQOMq8J/8/tyBZYZLd7y0LUQzmrIBVO8qWhWLlNyL6WgW6suG6yv63BkXzWQFS4Kzyuvb1OM2p+GtkOLOkt4qB00mDwWWdiyL3zzwNGR/tBp00O4ihUZNpxleSItWAqMb6VTRs5sUms18ZGCPllVHqAQoWWjP2RaZYHHoF4j+2odBplMHTzgUsHS4K2nIn6S1omzsv+kqC+ET0GXotSyThN0HRQXFm3Q7IojZZadayvPKhd6ibSndPS5QF5+igJPvRNb6nzQQlWF9yoUxa0TKPdT/roMiAyetLgLuhVUKOinaqk9239QXHB5LLJypUmVVj2tFSoJfOtrKUnbmkzGpxwk0Yo5O33Wq0tGTvmWjUhSkrWSPjeLWnSSso6nHoH2bSdUM8yRjGyPkqXbVf0q2lERRiGb4eRPFiihfOUuy4I7+9W17JQBFYVSNnVhmI69dKQ0f280o7t4QftEeamuVG1NfmaRQ1LJ7pOOX9O+RtGOTvKXNPx0clnOH2m4lwoVM2UrE4Ovh4Y3RKqV4oKxkcTVmVoJ+dPVVut09jBkWVK3uFdHS8hdlo+F7MnTMl/Nh4Qwk5yjadxVgZZDJX2qTZ8QnZiUS14PbDuvVJtiJSf6sB3o6CmwlZY2fnsFf4BdnGRktVz7S6qjTxInE3zqrDjXTVISRkxvVOQmmCKIfBkd0REhOJQK5qbpQMSg0EvKZKXp2DrjNCTT2K7gP5mwbhwiXqFgWICu7X/z2m88bxpcD+GIZXqvnTMPiBeZJNbVKXZCUWUSOGcDpoPVuCJRAKj6mMhnZCeU/UDX3aKdk5FRAGR25QAwaaRRKS3IYd9f6nSgoICqx/bhT5usAMwNo0Uta3XB1ARhL2WkEzwBkZid1u9TZJaSU6CkGMWuFD49dWZ8YRsiNwWT2mWtpo5vLc1FSDqOi04OvadU/txKLYDNBjEXrqtNLct2A51BhXaXr9X2y2OVi7WsiGV3Wl7fhcokHD2FPeZZZeZ5p0WLoFiZirNRycReU6pmyNmrJmyoB5ejhTdFZ1saMJM1tYEKsB6ZCUUpq6l5SAks8r7knuMIZV9FanhzS2QBFU/Y1JpcNfgyFMvJXXVuVac2RrpQak0C6jb8QF2gFBkVMlvNQAHKBNwFvGod4dW63LY+7Y2UYaekYhYA4G6juJ5ZU+OqDwUKOux6yMhEunobWbhGSWzpRNhe3HtoX20/roWrY4G+U5Sofyfid57ayNTFdAU0UHLul0yw4qiFwszKIXUZKdmJXiDrwFlJTttJy3IypJaBDVht1yfhcQX9OM1hbwf40sirtmGzLMejLrMmDzmAKNb5B1Ur9VkU1hB829ij80oUFeSCWq8KpQSpTNFhzvvbJJcmA6mak0yUqz8kIFDk4Va21EXSUl6SYhSX/OnuFO0MZEejYyqR0HByr/OuILbJHpK2sxrZVYYGx3tSswJba2FUiQgr4hwJXHNFHLnaBJtrJylkMgervB2oaBZgYatxtipLiPXV1gypJePs9cOkrip5UDhK6srWxRQ3SLkTQ8oHcOCkGkgfxULU+LqL88aB4KqADNTXxrRrOrWHCbxdmIT9lRr0kMmBJYOw4q5Zu5pQNWANM3GUfYBlUkFYQokkk3seBxjZmgzYUPhUnWPMAkh+ZRJJs7mStdyK4LDrYNq7yzHyoIuizJWyqFxdY2dlkPIaye8wtT7FJwHBBdO3mxSJy7AmyI/IPEPBlh3es0mqUZ45HrYZbQOCe9AVQdla9t54KyPUjfY9kzvVA1vHPniQqvwSqZNPZOmb4ifK4ArduymThFRHNYV0vj536k5PR9paj7BkW8OVlwX+QyKYkBiXO9GpU7QCZIc4zimfjInTCdBeWWyePldARqZLurSaoALdl2Bj08pLA1Xr43QQqZy8YKO0ZrbJyEmpzFhUW79bUzQcVXjTXAGbxKWWlFoAeZPFWBDwKvDByBhXPAeTY230qVE1ICWFvXVrCp4qU5GVsCyuvKCfLhX7HejgxXU6jEOX8A0g/CPDw2S2n9JGBxg8C+raucPygnHJ5Yri7LpFLbmTOFOwuqCnzVsBnE6EKtIoABnMolYdTgU+EOrCrmZuuoZ2DCAnND7GG9eqJlI9We/WRnKHD1RhDpR/DQPkrPQAggUtoVbUYtrk3svJJvVA3t6Y3iLVByq6pFWax+xTc/4LRZIEEJVajsd2UHvCd5DGpV3LG3D56A0OLSnSYrLfNYCZUkuyovhtHgYv3y/BbdVHNb4yYkmGXCuoIzdckX2lX0EqoQWYbhgVAq4GaQQHDpTJPiesk2NyQylHXw3WWQdX26ucBx1Rt0/U7Gm/IazJLgMKhBFwMxXZTABq7bdiFIm6vHVKEM59AWi50i4yg7LPLUDiawp6A43gHrUfdHjllC3ynHXefb+AdGLCNFXJltOLZZLmqkASqMo7Q6t7ao1axzdKRvZ3yXGpnsn7oIIFxNNlm5cDzpwCnpU8ezb1owqSe4LpJbuTHZJeZ1J3TKSLZlDVuhUkd6//QHYMcNc5Cw0wXgevOW0Xz7E3pUP1Ry+F+33dVf6vDKYkQ2JhOk4K2LBOq13HuzFlTlCD8uhDCeY4cM7/zgonKmD2xio4JSxHkdB4kWdBZsbddOCkSTASxthZK4rgcuoWKcTxibymjJncCT0pvWm+L1C2WvpLBghPyKkPwLLUBFuwtTk/lcYdEt8LC/YuK79REJUBpJNUXiLFq2bc5AEqUwKtTSLd7gAGSX5yxpduZG6mzd3I8lEOptWLpLHJHErJySLo2ppIc1n1ncDfSk4pHcoFNr/fyCBgPyT4rswln7om+PEgK8gW/07mauAjDqp3iw0T5HWthD9ROTNWVmqWO0rqgUFkG9AC2siQdJJgBQlu9pQCgYyxrLak2vUaFrJ8K/58oc5n0Js6z2lGka2RuTMrWqiA6vUVpCaXkArEhhzKSVtoWlwqVoF3B8omZxUpNYmHgUenY0D2geSReSN6AsktR6fl4oo0g7whncBZCiU5lGfFFlX6zesaEEZXtpezMov2qOFQr65IgECDyKRyxvlzeYcBExFl6BK90y7voKBT7zTpNfsEtEefQUIMsr5Np6FTRIkIHY25q7OQMtCZFIFkKlUiJue2AhjSaZJ7SQ+IcxzJ90ikWgLIaDJ0M9ofejQLwA2w//PXK7OFG6Udp0e/2gR1b51k7YZcAilx4HPmq/Uge9kou0uUpfDcO0TeuWE8qnOTEOGF7uNeKCm7YoqUNys49elEedne++gqlS+yKooykDdtYCUTGRU+SA7sOpGElfstQZdcfsLFiBkAKNni2mIoM5LKX6OnG//JrVQhyUWZFQy6jYiluCbuMfNjhqvI6QGkanD6UWM9mQeYpEQq5SEtqT51zT4G0ixfCb0mq06txTorZAAHdlDnJVtNKO1acRDhxZJ6tzmgTplDR5sgyuJEE+iZwNLOAS7Dut90JQNOoOHVJpWlU8ZAv622hR/skFyJSmcynBPVeL/RHQrPAAK/vO8r23TAZpMebDJqFQop226PUMimUUdZHBiS5iI2SkoBRLPL/8u46LQvsld0DFGwt+EPfengSDIlPHs4VzK1idAw4QRbd0WqKTgMMgK9f9cixy7LWyBXHkVwi6iXoICqaIAsm4ULUELCsW/kit2JL4cA2C3AQNbpmvuA7pKiDkioxMVF8JNWbr0RCL7pMXEwM0T7DDTnJls52dXWFQAQ/piSllwb3QuQDDtQDcwORBguQwBbmjspBSxyKgvNlwGqMb9O9o3eXxCGi0tIyf+XPOP9S/qm66JeMCEI6oAWxvjU8wCsOzFaB64Xi+4l3u3oZaoODgmxHBAksCSrxHn4jihOfCZKnbna5HujUXqFQAW/0t+U3DuhZ1nKB4iiDdWDXwPuqbJXPZtsggRPmmwQU9Df5zKqOs207MlvUfwnFWEFSl+j9RoOj+p7NXFvKqwoNThU3Lkb+giIkhx2kPBWnwIzLPQ/6r2MMukH0J2h0bv8LaMiSF2tiXVlegho2/1nTaHPg5AH13p1mLwlnnV0VG+Vvdp3ClcFKxVIW5KfKam2kED9z0mnI+0Iw+kocJZ07s0U8ykcgQm5l1XqMTM+wm5WxfTDspEJgIsDjpNmDdwm/XaSFQeUk58tnyxyreusJlUv2w+kKybxjMWmeYFUkTPUItAkZEIQRWCAoaXTJFQ4x06rHFPRaw3fy5+q33kAaNcl9iUpK1fO2D3qVIgz7ZsQfpg0zUrHBoSgqMHmsLvzIKt8pMSpQXnnRIouXN0O7lKFG9YnLoluckISfcGkiVYYDbRREn6SpCbJHJUDCd5AAukH8DDXlSptHJQPyEa2w6cCEnf0SveAgcRIqUpVFWpVsL6aBITUDzGO7rtS/HbCL9NLFwiZsiIDYBJaRNX0OQMolamapmkE7iwpKZ190AQtmaXC/K0AcgYt7a4YVA9w3BSMOaxgtmGpw1OtgL7TE9pdpkhuF22usnyc6U/08dFuR8K5RXOP8yjAnciPUgwpa2UbXBRDKGokgJZ1ew+8ODe/BeAYVl/+AixWluoHZB/4CMVeLpZaAQk3sDwjk9F1/WrQ63SKIMDmfJNto6CaM7iL7JJPwTMEaSDRmRxUF3Vx4GBcxFfLFkelvQcLN4DSmAwllDSd/vZJ3jUZ/xQkPj0w2hDE3jn80ruK3+htp7nEEexBZSMV2eQmVUrE7q6wDKEmlxEUA5/gIwJaSOJCO+/YuMC46TFp4aUWZ9SJ9r4Dy2iDOHY1ilfRwWwMg8X0yqrsSwmV3UHxrEDi6VoWdM8K4qITQCk0dw4ifXfQ0uh5ae8wb7Qy5jEFMmV1PdElxxg3XGl6/KszUOshcg309S1S/K4DaDkQFy1Ee7XjSrm7ykAcP0/dAQkaZFwrXZL09zv4tRaKdjKp0pEnkaTlgahADYa0Y50ObLXS/jX0caZkno0lkc6VI5/AQ67M3rRIbbqHe4xuxElzXfhgOqNZaIl6kzv4VOMKjUBJytz2VCUo2KjLSvsl45ut8s2k9oY8FJB2Buo2DnRI0vu7hmB7uGyn45Wqdl2awQpIm4AFhcKmT39G9VV4vQBkNjA0RutqpeQ9AiqvXQvlQCzBIZW0o4XeNqd32iEoCLXyOky0KtqAl5aqSmNTKxZupGOaJtG5zv70CdMkdRa1jBJOrLPOKfxIGkUDWeAcCU4fjK4A20HH2qxQI8lZSzCWrpYyUocuQ9lCG6CrYWpX50pyv9ArtzjnPACsco0ztcEGm5n7KuRZHL4FDgzHL5cruAoGD0tbOVzchO9Hjwm5pyu0kxWSNiXTzOBLU/DqByYkJugL9G0HNTxSC8LBM+OmJtwnJdzpEaGxkBjWOQiYxhJabUmW8kjLdKyp8JzJ5S5xTzh8k2lr05Rq2iHpaOYVUm0a6i14ABlRBB/Tjz39LhihQoc+FEQmK9ZBKTVCDZr6prH5hRxrGsH+qSjKmQg5241m2hHUAMtiLPTA56hAztIq/9AVI+gQBDrA2FVubhafXookvQ/QeF1MWEKpRB4fDR3InkmHDzAeNZInEkKHXdWpwy9TELEe6Z/dg7ZIsK4j2mlclxnaFBWp4Il42yleNEShJIwLWR3N4H68EhZhobQ7kvccQPTjM0CdNVw7PPTxDB+SuyjbSc3eSCW4PQpPNTr79l+20rfVCP6pUygWdUEQbCG0DkPwViz4JcDEpL2DU8c694rlqXtpt6sB6VDmZXq1zIZ8geQBHTU4YSeM1Itrsp2HAakepdYWxNA2o5igHZTwQtLjbKFeaekpAPcAIVzVjzo9nQfwlg8TVeqYFVgK5QpK23TXdXFEY64ApOQHVftVqBDoWdO3Kb4ZjCfswRR65QgfHU2X0qmAFJZwshQ62twn4T9ZNWh8anIGViG9tGG0Yi2L6drXN8n6rytWzjWtwSwiweuk3SCQtqSwTGKgFb7T/NGNQI9DjLueIBJAczmMtIJfGOO7/lNWxy2RaeZlwHtndoiT/RREuwzHLkw/8DtKuhmWSMqzDvsSLNMzaklQ85r2HCq5dMHT+k0YbtHcC4kcGqnpDjPw2n6AZFmBSNz6E4zAMrANJ4RozBFz0bHZcCth4Fgk/FZMK1QVGegftHmfaA+C2rBBmdMswUKiSgMWRQIAaY/Fg2gtySnMoIU3yQqJH1mFCmncsjgWHIVsrYKOqmT9nTGJsQmQBI/AKRVjOkHep+gMWePXLVeULIPUs7ZKcio1bAP23Ci7w+HlZ1bIqY9OskTfrOMAmuBGKoAheBtcabzBLCK/Mg+oI1zZES563koXITKzKdIVUWJqQ2WYkwsswr0YENJRpvSF+UElixCUoRnOFVuhSJFDtIAgsIU0Np6ucsrj7pDgNMnq0RMYA0ZcsiAvvBMpGB1qS9sNOq/DWAm5h/t5OddHrswEabujdWEOACMldEQp+nsAA2UxqSfdGvSlR5EuK5kHOR1YNNubRZs04KYePNbO7JPvlF9fKL14OYHpGjFpkDuaoHoeYhbOAjHyUs02LYeFPmkyOjp7xfiQVMbkvEZLBa6kC6n1XdL9GMfo13eB3QCPG7SWsOc5Bhgpx4ZmZmRDsy5PpStTXl9GRuikc486SVRINS0DwIuBcByOviF08KCjba8hdHdUEBUMORirVMQoZJ8gFGvGkLCi0D3joMmbtA4vaAu+NhOtSo78qpRj80QPZtdsSXWm5IROA5oX3n9ziz+807SbqKNScHayl+U8DIINhbbFRE8LjYYKfRU60UHqAuCF1gXg0E0PTL+Mi5XlFowFglE5fe85IjZgITxqilZPyWqzEEy6bDO0NAto1W4n5UyYmle9O5gHi8s9EvLDWyPXyFY8QjOT8loTXqf5deBwMrcg0WghNpYE9AxTcsh/uMpUgnpJIeaKHi1QBZubFgjUMsW2RefJjnSJfDfFM+gMLZWczgeNT1EWdIyxFDqhG5S9aQw5sGwSKUH8QDu2DqF1ISVPdIbB5VgcIETGWe4w5FA0CFqUFRyfBbo1kt8uPb1Q5pWbS0KA9h4XE9HfGnDqo2/mXkknA/QAv93dkKDBuLaSYjsjWeYWn6QJJEvQPrteGBLZGFz6bBkFYeLMyUgROmtyhhLfqdJJ5gnIBolXT0ALNwmAJWqNTp70+YoinQzTmXbu0BGHmpu8csi5XINLUfgGNdqAtYDtMm8PB1Lw0sGg4+nhoEUPzmmyyc4xAQMAFHCAsRwesApmg5yRvANCMyN95L+0AMzyWlyCiRaT2mJaB+RnDjRGwlXSUWI4sqOW6FB2gSGHSE1y7YIsOoYYmTA5zyYZMg9aeUiwZjQhmr4+WOQg2oZplpSUu6cWnRaGSvtyNzTNcNNDmCbHnWKH8aBwNOVgk5dfANc5sDRdleBrGjjoxcgoPY1U+dqERijbm3LuF/gcWvQnmxBzJXSSmWUALlBM8/MVsBTsOMwR774zZA0KRbLOzDu0hoSiDKAN8N8GBpQOlKwpngbxt0Fh0agJAAyqp5aTbY2IgcnrgPucwR0+uVegblVcROnerD6j2YIOGLw+44zMk2orCYmoS/T3dd6t/Hdj1sE66djSqbJdEpK9RP0IuJKddkbXqSxDpyUc7maXhYT9DpLRxn87npbgz6TGu0LdW8yarvDOL8CFCh3x/pQMMIhjQrcI0bIXPgDQjNSBMsFqM8LB1qJLodvhVGSi5ELmYCTQI1uPhyqHhFnvpQexBJDkAhisxLg9+foO2giqlwzrEigLJ9SlMoBHoSu8Ts2BcTBRNPAr4CQV5Jx4UNgMP1povUnGiWXWqPTkglOcbZs2zn6DaIA5glTcXEBeYe2GwhTAvOnX65GJghQNb3tauHzk1+DdrNARu2FdkO/Q/aEgnwZ0F+wg/4OxpAtjbB2jFxCfHBEZE1SyL+LhlxYqnY0ss6f9p5Of/wxKs6fzt0FvH03dlVF3sP80R59QQles0F61cL2NM6MFYNgiiAAgs9aRjrOU6HWDwHFf/0VUrp0CNsAUJMsowOQSpuIEvNaeFBkTKGnpQVkpWjjrp1VSjEnJcEQOxZkKuo6o99Ph4OArZI8UmdQMCFZK0LIXktuEAFWCrQ20SZljhxYuZWmWKWwNphXYj8CluX7LGGEyFGyCClKA5uxfgncUj77TguSSCDEYBk1BvwJU0+auzPyD7SWmn3iiBji6Bnj9khylBSOr6JamPF1pBjEIihyc7FMBNHUoj5hdud8iHyT6MIysMmyHIRmA6+GbdKZCagqaa4Je4G7Wo4T9Avz5ZLSdH+2WoqeI0LM7AwwDQo7YhAlb5udTtHWABlwGlE3mqDLwk8l/OGCAOJz6gZ8Jm4oPQLeGyV6SZZMvG5SkqyPFJnVNNxu03PBFWPMPQAANvBB0mZhbFhU3YcIz2qsLZcEDjqiBp2O/glso8jIMe4WU3fp0TKIOYD1m8hP9hPCzBJ8jBtgZStDy9Org1WbYwZ3yAebRmZueKW5atoQWU2HlhDFgw2SEcan7sS29kh31fapYuhotnc0hfOn95czpOMlXdoyWGMoVxioojeWFuZQw3ZYTJGRMrzL0G+AqPphfZjMeZEUyxHNLdXxEgfXJ0FHJsKVibjoBhFHX64manb9nwASw1HQK+QGMRIcdnm65Fa5ukCNxryNNmOAHTpFGGHDxUxWxlZiYLzGYiU5l1bmy0p+D0AvZGybhgCkh5KK0CD+kM2UMrqdNqdHQnY3XD+lOIcklvdPw/9zaI2/yDyewNY9UoLR0pKJqw1UtRkxRgk0mD0apusQ1nib/Lu1MmcEdZSh7c0AKplPPcM4nZn7CU7c64whob4HZjc9HdpyDjTZ6eTBH1l5HD08vFTM48E47yEn7+4TvwQ7iZ7Yxh68d+bqZ7WiTGA5Bgzmm3sVM9cQ4Mhu6F2YvZlBB01UfFDlNTEIHbwHTv9vEmKKIc4Wtc5UvUrsSXWaKx9ctf4qcJikvea3ytk0ekBkH0b1EeAErlZMi8H00WyxM03Akk3onSRyNU4xDtiFW0LgHNx5gYtfGQNMe02mAnCfrCjM1l/gCpKh7ec4aoHAtU0KCXZlEDjiA+6wlGi4BLs29MgEaCgzFoo53BTBtZywMc4n0EE4lMt5BqynLCdTDpiyCVzgagtPqktr6vBPTEN8WO16aQWuMsQRlhFRbhRyCDNkjPpbzbsO+F3KVfNH1TYaY4IdhEBWKOTQrtKGpMOMClJ2xHSByKowNLSp/droGcLDgHyG596lBIPIsgHtkonsTsrcDvIwVGlySoM54EQgwmhRikWi2c73QTBkokbCmPcjnF3OMFpGVywzUsa+VGIfHCDWa0h2CiJoa0EUqb8z/9BxBg/Hu2tzOQAPrkigGDHmF5tVZ5TVm2eBj0Ua1WibJkfQZQxipP1mCW9jaMnRGpDedg93g4WAoBuT81icIJmbwCeQWUWq+8M0sWdI0UqrDhbcgWaDnp0kixrruf5VWS6Yog+aADdDFgnLHSAtRggFOY3UqJDBUjGBUcpAbnJdSqdLB8WMbt6GKpttD95wOxATcqilYprt6mQ72r59HUTBprzHPdhhMJGgCgBEwVE0HesDTGiVO86AGYzvTGj4mlofD6oSPuEpaPSjAmbfnqYgXgLYxyc9TARCygzdTdENvmgvuqQL0Sc5Ut3ZT4SaVXFleQMm2N6dA8EGDQmOcr1SKazaMzacMBxu2Cxml0yvNDmBeaAdw4QhNMbS70djga1CYfirVJAuH8fqWQ+GUylQ0imaurNdncJVzFdfdwrZ13DrJIlnp1ZsJJjssR5ok+dnF5FYUOihmYZowyaLpyWoha+k5RqMVB/eavFYiWdFpy7NECGvQwkn7T3tLPafM+YTEF3/GoGHlTaQUgIc6ZPfdtDEUL0Oo8Gh60OG4r5IsLHRiKNKzbb4BiKV7mUIpUxucnBIEA42B3sIRMS4HZglEmyGBlmcqRjcOaGAb0HXnIAOQIL6cFXNqpI88HXAXGKQZI+ooI4hWg1Z5WVyEq3eSG89cQsYNusa08HsGLx7NZo4CdZCsZBr8Woqsr0kqL4c6SNZU2q2mq7+sB9Bw8JBWWLD8lE/YAuhtL0BUbPZ3IYDIoCepwbkzkkrIfZ40ZjokS0wAZp5G/URj0XoAcBK0AUGL6LriQCLi88nogJVwZ4TgoEpGg1TWNQVyV2CTzJBvjviNc0c9ZaWayGiDTzhHWqeC00320UUnK6TtPQi7mkNa9gMTFhktiBPZjcddDkPvzvgHALYOachscDDjjXmILTXXVyTZq1CEw5YKQMmyh+YYlQ2WZl2bR3xBs05rIqBM50boEzyDSq5KMbIfsllKNOHIODb386us80L7wWDEmStSLLLOsI5LWIBTeVQirdK/Z+B6Jgk31hiOVIvr6INNO7gEIUAZjnc7DBlT9zqlh+rn4wQRKlBPMoAGY4wdZ/AJqzoplnq4XcF7qjHF3pKEQU/TgyujOYdngbiVxpsYjrNYGQWSxAzATAbpE9O4jpxv0djuks8LeNgWjkQCZ+3yUcyGlA3FOaQZwhk8vGyKjXKlVjdGinPHt0rMVXeuARMrgm8cJgpZPI8fTNAlNMA5WixzmpnZ2uE9A3ewunnVeikiZyZAgOJzbEq00tKlF7hUP1SehHopUPSsMQXZYjKJiYjcmEDuqhkL+ecJgz9tn9PmGLNisobWUwwHNNBpU6DDM+a5r0GGYN24oGaVxZs4CNY+0zEeVJLyuY3eH4x1h6cFetzlPZniJsCegQvgsig+JYuMJMUKix2NLXYUX0adwSYmTwLOXZeP1ZmH7xKObLIyTv6Zd7UEhrQkN5tNYRnUCkzUXD6ZFItZQ8FSiGKz7AqDXFAhJpYCNns6Di1Gy3RYnhcn/7CpD45oUPNmx22iWLvQrtJJXTRMlUv0rNIpMMkyNDW7/GWS4a0QykMElF2mB36HshA+ZJombAEEJmpKRFqu1U7Skj3BSAWEAefc2bOUGOMHNHVOy5U0ItFNVAQy3KG3SR4yQgIondyU1eQv5J+CDIFqt4aPYl5fVg+uXyYUQtXnXNkKpdhgqKnWrBtNTVJWMTwDH+ksdfB5mLH19toC4sjqt6pBGU4vv55gmkRTgVWKhp3YsMUxXCSchMK0eqY4FhfGkZXnMUl1owls25C8CEbOpUFDffdhhyw1xZgJ4tE1n0c9G+LJSv+/7IVbgYr8AaaNSXKOiiUxTSsoAikXLyYztLIDjNBOaEuHegHzA5GBPkuYFudVwD3EdHvS/aur0S/6fMGcBElwMT/fwR00GKMK4+CN64lNizl6jUp1dxGaVAUUaEyzXmGXsUO/CSC1AJO2NccrBuKKcddRofeJ1hR5Y5k9xXwtuyminWAiy1cIiIzLCtKv2JsCv5VBzNn1SVccReBmMfRtGBQh/ZrQr0UihxjZrJPislmhsFeY7mqh7QDJOMmzHNljF0nKOarB2gPld/Nj3Qbt18yml8VspvoO+x6xYYzomI6BCh6elWpogm98OlY3iIwZu8Fgt+z6amHKiobqDltXs/ScxDIExywC6Ub39gvMzJEfKPQCm30KoOEkJQv0xEEPgkoADiaaYB2EtMhLoduf1u+yNDfEXqp/YcQwMwSYzuVqvMeaYeEsy7Mz8WE+BPEcg6KjFdXSfwEfWqjyyVFzlVNG3Xa6SqOv3bIb0QiZGQobKQ/HmNSOE38UdaZoAvXl6CWG7fSo2rnh6wpnJsR/kRFvpsBP4FfWSCQBUrKOX+RPyE0VJlkm1znWAJvK3DD4fUxHrhQYcoZqY5+A031igC/paOLO5MavS51r/zMksjRcuMivHmLGtNR/5FwsLp4G/awFkDpPBlsC5AundwAGSYtNjjAmMnpyPOUGAj1GJ0hopbryXlBuAO+N0SF9cc1TiiXo/CachsfDduuidIO6nSkeVplmWoQ7iFSiH4sIZhobEFryTQ7ljSWHFwPlw0gEy0CGgtIegcqTQnDbRB8K3GM1TIQlsMY1CHIaequNjgQP3muiaj4AmlrCHQC2M+q1a/1ENxwOLJDQBcp1OzimrDFkKwhnHHIbbhR9KNdU0aQzj5RiZBxB5eHvWK3P4KxMPWDC0+DbkWhRl35U5Kk9sPTlCoqAG6bw5R0eOtgUoxOgxvB6X7aiBDyoLjJv1hwoeoWhCWTI++LwwIqNB914MneAjf00dliM2E9AGDKS5pjC0jhh0eXe1Y9qmmh++scYdoHfZ3MOvcToykHE73OocMINuBLwO7w670DXO2XTYLEz+6pId2mMMYuhKKYUniLpURb6y1O1Det4vYSRMn7BVOHCY/wjHT6gvB4duQBgZWq0lG+16IJ6CF9bbiLVSwt0X0B35Zj3NktxxLsdBOIKjVGGXcBCi+BZGjW6Ahk16r5KLaIA2WMglKkHyplBTwbL4VLsnh5nV8a/NGan242S2FHtGdHk7cwUzROVAE1GoFVnUwhPwvDJ7aB1xLL5Su8o2iTeRbW4sYBrNLkU8DKxAjY4lC8ru1YDPOLXf1JdzzHqww+FqMG3xLCbxXFex0yYddAxXTgDdhQtrFQ0buUgDHGLj37StrKwjLuxWTQEmfUvESbtf1WCkoBMLFhKHVXPqkHnUnQiMWnFLT5dsPJ85CBUF3OsNOOtcruYS4GvtvtNSMwZr0Wn4qBtym4o4wZ7pFqLi3hDR0E/ENwfNt0PWlXBwRLDW5sFwBY6kODtpNBsUPHAECKEkkEBU+uzYjk4KhoTni3l0yHH0KAS/LzsqTf9Cxx7PUhljUAje7TLRfMCNL0WCYF4xjAikBMuLbcc4OPU5wzwcGlJWVMqLRkswOp7cSreZAaoS03iE6luSBkb4xFLdeyBDdLYwNTSNFQtCQR4uiODeRpu98m2KIKiWX+FZdLUuGEuDb4IuEAZYmEdZApsGV58+ECthgR0jctPhdsUxQqp9gg5GNllydYOlEzk9SVyQvDrOm+uAz6ErAR6JM8DQL6BQXmdFI0riYXLHXXmVO3U2EoXILqHLkxX5IwZTFr5eoS/7t8SOhfKMDGFrxkZoa8QfjmaWpkbYxELUjWyoAw27HKRnWsiaQNJuh7bcSzuXGs+AgsAz6I5yzTrUVtfYFns7iw1wPTRVxqIfscpgA9LnCMfTqfKmmZ+Hrg/zDvNf7XCwUxBXJpXIuhw5xDY0e0BV8PaXNOHIh7GgBAYgSqzjZXSo1CrJmao2o4bEl3cjZ1VEL243OmBU6Rob83BbO3bGSrgFpQJuXbT1Q0cgJS9QkTQp65dUaY0MTTmSM3tENrwv5Qg72utRS+6Dc9o110BqkLCYKr8NQjfmTlMUsjlr+jHwoNjMHDtDq6GiYADmRkOdcz36M8tXgFIbz6gu7elW/wNxmlOrJpngMmJt8KNyqXs8xpkNxt3UilCi7Lm0xwO9oYgDN7hBojaWQWA+IDjBj6+gaZCzkD/jv6VLKDRN/JzIIpFgQNjN4YOup/ZE8AHUkcOJtEg7wqqjYlPYFcbGRvQMygWcpN61gNeANAweGEc87PMQgOhAl0pG+NKSqQpE3WFwBub8AawK7RxbbLVrqoA+2vGZ6chjiY3y/IFoSgEiFBK+/wSGMJ1Bc0y5Dt4uhOaVOW16t+dApOTk5G9prCZlkQneMAjmCMvV8j6OA1KLvjyyEVB72j8thZuIwRvMSLNOU49YuXO9I/uOanoDqYXA3Cma7BZga4vC8Ufohs7mW5do1WzM5zQD3FlKHKAyejZK7YNE+5fYPaQ2TfLPCxFQxYCpo2FkqYbZ7WvkRhMVKDgqvRKOnQvfKtrC3qrMuwgSgj+cX5hrFgYJuT2MDO+iKxfTJCxHCCAvJgFFhyRDhHHyM4YVzkjTWAGI0FdvknOuiUajU70sgaIxBJ2MTSWyi0EG59om08HHV/8RKbBSTvb3m25KwAXmVznHHUQAQxPa8FB5YrXIKYLDKWhF7udtmPJuvHJoCdjYJrZmRVwvraa+sIkhnSPVnJe5ReCwnJA+vANgmixwb9vXhcROnIjQNmdjBZi+B9thlpBUDXG/rVwtyazwhQ3o2LsXuM+QHMaQxUt/ijaEqJi5+ZehPxC7Yr5rbbzPwfcNzCyjqR9wAwCqW401DtovGJM0m+VnvFabfGxBZgLWrbFTTQrkHZmwCzQ8tFv4pJLazAcoqnLJ+o6sNfAHwWQ31XTo8UAPt95hPHbKE9htb636m9cKxhqmm7lBdQzs0mdgiHtu0CKgSZ05eyMN0EOkNF7ydHOL9gTmDPB07jhOQyzYzyaXqcAunRYhsHhoA9r6rgZoYsRCvBwQl3ZHJKC7DsVQpmNshI7ePoShcEYVJIrrkzJTJyF3tOldOaeOcZ/HR/GjQW5bnMtsOUwoDZDgeBJGT4YuR3gVwhvY1iWRRGx9DI/DNnJ74fHnhvsfoiRFPQ3yVNyrJkI/kDdMGSmu3WiFQoWOQU4+PvdKZwOiJAZZa1Q1bFkUIm8ju48KOebEWVSt52WOYD5zAm0qUp4b1GhC2wVLq3a4SJsdJcyZ8nx49OuWiO61TL5GV3UiGl9B26YDOCmkylm6BcBJqMkvXuIq8BowuAycSE7RS9a0SAXJJSwqMQYBUz2O9kJ55CmsU3E4EwccE7YSka3xahlW/csLQZXR0Gf/KI1oUG5AdUM+RDH6MF0wMIkLgj2mlPmCXY1mW65lTov2QWmkFYdydVGjH21hQJQ8VXnTw+brC6Xp4wDoWAjQLRWSdDoQQ6oOLWbDsyt1PNBgRU96DYFA/EJaMeFC36ExwqpGezPcvAt5iMTmbH6GWIJa/MkxzI30Nlb94Xh9iUYeGmvqwZLAJ/EGpRh0vy035u1545rYEfpxLWuI6Rm9FXDfeEI6uWaSJfJK0oSu24z6uVAJYXCD0NZutE7oDeZyqJjh312XS46+aw7QIZoL/TsYrjWOM+KfYbDztegS4QhPPqCLAcndSREb4nRrFadLbAF9sSUN8azOBVNlxWDw+GPcg0pDFIImnQQ9vI57E61Upi4yekbniO+hL/ZYEiCDc+uP82nI0Hb1SyMI9OPwwBfYB/kO9z6gyFL8BgxzdOdqQW2asanEK7bYbsUQErMraag5IjoroWq5HXFSrr+0ihorsHdxRCf5HLQ0qiVgbh6OQZd2WQxA4Ehl6s1xgg59PZohMoyEEBpPeghbrXCFD8WR20sRxruU4WkFFeKQ/lThGFq/KRd2g45Zwzj5KSmYacpzGNaCDa4LqViHH5Sp5SqAM8mi02R9KdoAoL5YSaH8ZeeXJiFVPHRpnM78BD6wnYCCWeAso0zdaho3WQ2j3E68ZAyM6M6AzUs69XCfDMCI+oZi0NmLeA95MPkGKBbbQe8XgQDQeWfqWDmmwxiKgsFb/o8LGHhjLGiTA+W4XcpE/D6KaJ2HSsTamJNcM6lyZi8kGx3SSO7uRaYoSGKdToq5gMEVXVz/n6M42bgRzuiYt3OE2EH5b+c6WGSboDRccrA7DMt1X0z8klMkFlJNTtvVxsOlaoirm7jtwq+PjHbPjEs0J66QXIQUhwo1W0NZg1gs84w/qmxzuSARpBJg8dmFJpHL1FBz1Q96XE0ekynKcGMNuCTtzifTg+q4lykzhSytZ0dXnjYvCHUd/eE7hZCOEqOJrUkWarcLEjmpHbdbtIl0gK0TV+NJbIodJ5RqJLHZ8KMgC/gZgTZFp1qLmEVo60ZydJpRDSnU8c8GvlneDuW8COvjS65tQV3nB1YRn4ww/VEtcQiQqADlPsCdaIjsa80VDUJfKYMlB2TbEyClvqKCmo0lto82AojfwE9o/jA5RWZBxIUlym7xaf9JwiM8bSjqdm8FMTdswUlUvIsodBXTwh/FTzZ1l+K/Z30FkWwKGuadxqZlOqk8dv6GQ2aq8JERyh3F4PXH2BSOjWJhXqqAzeSeyb1itsizexGCCyHxvy3GZhBa+1iKgyQ7RkWyvKIQMdHI2vEJHBJuAVYmYKnoBDWGzeYAV3KnA9aeiC8clqiw03DyFt0hKndFJgHgMrCPKAgyoVP1D8TeDTkZHWzEuXmBrgKuKwd+dyYApeYAM8QAeicrXkitbJEpINKtVmzFQZ9GizoAbRhNo1senutVLMneoG+KjixtFraVjsl9Tj2ls4jbK/b0hg7yyRbWlac8wwHZqXleSbLsEdESiMlUgobral/FkYZjxgzQ1Ru83uwbqxzrBFCe3LZman7MBiFPknn6LZEwlTRVQASrTqNtHaQoSnIstNj6A3sMWmkdjc6Cr8sMYeOaa7JlV/Y0AGHyIyZ29bRZZxnpfxzBO+4bWIKXYwqYbSka5WQiSAenxAouQoA4sQ0oJnBDLpGAeZ2wKvGhCemktiW25hDkWgsAAe+/5iKHEAYrsGTbDuz54E+W6bbddhFXeULdCOkeivDGmn9dApqCVaEaH6pzpHI+njJQb8rAwE/utNlDWwf85l1Qly/P3O7IgcDkUbxczNo/KFFFCDm9MjeBLFpoom62eIX02gYhJAH/EHrJwj+0qAEBO5ndeXRTm82jEwrNje7ua+02/8uZaLnnDjujchAq2XLCmswBa9477ZLjHkBU4FQo6zkMlY08BOxaY8WSqVG5wdQHypEemnBhzloBRMQaBWDFYncoXHO5D1Ef4iUWUxEcHpvwL+8xHslN+KhHTKUpiu3pL7gzj7+KA2/MiRIqtPlILCB/cjtKtaR0uGfNEdjxMlEfWL+ph5VnvEqIbSNZ/PITx4cUsOWKjKsx9H1RFuXZYDVMw4MdDu66GahaHdntlvUVcyTBrdih+ylca7cjtKgGtxBK+M4qjN6TKLTxzO4jpJTUvA0M0MbvhtmLVi6gQIL3pj03IakuByglAOwr0mixbU/SPf+XghHZiQFCUMdQTwZl4ZPwVgqi5tAF9nY7KBIC16MyDF1d/7oOyZzAFgfKl4bGB83npYi2LbcQS2wMTI1jhmX9q46exJrmG21VeSjjAQyU3Iu80jA7/BxEsGqiJdBDvAuOXdiQQSkUyBBpa/JwasjgKbnnMytLapqnwr8STHgz1n0DGGvNpUph522DXes5oKTBm4ZXib3Tl1GagaFGsUNZ/sVcigkVrA1AbMajwYzTTO3vA+4xkwQD36LtteGRVXgY2uAJHlgGdT3oUcyqx/wocq4OEabOqoxec9AH+BHiHEZRvqD4SwBOqKw7DZfclrgTQ2mcBNvdjiJZHiYrDSY1WxzGPhzRIeUqh0qDFIqyFpBeoMMtpFpTD4Af9mLo1GIhSroJzYUwKQ5pz1HM2OHIAH2BedN638XxlQDsLcqlWoaJLQQmw9HIsFswcpUN0AAEn87KLoGbSf+bF5c4/nASs8FMMmAksqP2ZnkJBI9p83Ny2RiaYaYhzCGPtX9t2r6KgaV2R+RHXO/zzcbozLo0Hd99wfaE2X3GGgxixt/QWlHLzQCgdu72VNoS6NBljH1jvRAt2wkMRYogIsbxhTd2eCT6OfSIbBo72BipP1nLvabsJpnpvWSwJif4DohV46eSAH1d7IHchxIAUVwFx1E0VvGLGamuX2nryGhmhvMVS7FDPfzJB3J+D3jSKxApAfURWFMLEM+2pNMIM7RutqJylLeMUsbilEXvxNtgfCX2u8Mi7Pncy2kuKOkpDhin7OyQ8GLKh3QB3XH7ibjCC5sofrPU1g3CvprvVcBJO7omGYQUco3xJHygPwS08Q79beJ1+Fne/WA8eGagFW3j0oheXZ5kxA279+VzC0VjnXCb5g83o6BvpTegxLLcqZG1wrNzvDJ2xB6gWGB0Tg5ZjnZ5FWKGaUx9Mi13CIpiZm1ma4DO3Hn0Jh3Sg6DPGOzhMEdnBfnsy528mYPLybnUcORdb3+HGg6/1AlmXFOzjjSL0XjEEkMTxcYaGDOdMPjN+qkdB2YQUYKSJGZDrF71GAr0F4AgGXSa3b5fGYCky+Qlk/B0OmgvbQOYmLQSg44UhieUDtwmODns8heObcNilZAyw65AlZaWoFhk5XjZplMM1QdTI9s1JVs5aHQXT7g6ljcnGHpZJzFTGU6IiybqySrVWjmm573DJj2LCPR9eDD4ET1lqmdlEcdqQgIK+kECoTRfGZpLbSR5F5iaJEve8ljk0kiVacldfAa2rlibi+w0ezSqnQTBJtcjsc10SKTo3sAu1fwK67m6pw5wndosKWqIvnj/IkY50HkJZXh8q2dSeFQPFK3dfgPnWzGdAc1ymK9GZJTeS7RE5AoYZmEG5WAGI9ExJ9dDpnSWXAgKzaoLosAsCDGz/bZcBRdbpCKDGG8oj0tgpvTC/4khlSQGXKwS9xTkhKwSyc0ttlQegY7hTuYkSzBZD1Ec3xlPgyt6tamU7OblCMDyG+eFLArtasmWWequlsoBn1BtFZTpHGtm0gvu047JNtu85eg64PBaaFv2GQm1sNKMQq2FxjPHGADSAVcK4qMKAqbb4bNeVeKdfQMmRQPTGN0bDl0LqGx3KgxcAFkPOyQXoInWhLGaHDWuygKFsRWow9bX7AdBHJ7igIOCd8yXM+wrH9MXobhrqVPjJ0ZKdQIj7BYauvAHEN70cjkOS7KmKpL9pSp70Wusm05xLYy1Jel7Z7MIuin5U+VCsOkzeLCo0B7F+NgXcMe+nsyJKiBXTGqr0FQoJNPakSRrzvRoaPhJErkRpxDHzINYIE+F09zRdn+w1y/85Lx/KB25mMbJMQs90y3ay4M8nNQMZgYmXtfg5jJZNsC2ySpptJI0t+PUGRwoDSE/iJ1N9mXfFMOVvsU/RkOH13JzUTHr/T/NPkm/ORotejH4RrGcYSPs8i/TKQRZH+dl1UDVaUgca12WnG0TU+meDEY08JrpFMYHVkYe8UkLZtDi4kmSwyeSe6cyB+kdCuPFT6LZoBAAFRzJDtYfuPhxoikmKeB+nO9nfnY5UY1iGSXa1usMVRlYX5ipIZtqwszt+nJgrbY0ZsWOYAxfoTRR+8U71ZTOkpM7xTYw2r79WGCYyZcZdqskabEjE8o6+R0dVBQ7uAxhVQuDGkxmjOcKw4KoaMjYWJzWD0A/IzcYp54pGjc4kOXW+Sf4XVYZoUC+X6AtZh1utgZ6WtfsGUJ7kDnn0ArXfuMFA5hk8uIwxgGEW1Ak90opQPzedhTeliKM1BMT1QsoPgGWJNviWdKiJ6Srq2l28kXhcOUO+vPNCH3TthF/PJGwtHgO+hJybic0rpBhmoC6z7gDqrkbnXuTGqq1ANAOXKDkJFVTwTLzBOy4XAbuyFFEOyRXJd+AjfhWo3GYULUOY60LsM1Y5ZDcJBquYhvbX9v1abqnivM+zQHOacruNdpBV3IDrngAEIPKEAGgykdESKk2sxsHjFwz/lnk0bkhVhdDldzNAvUrWLEIzTU3XHvr4wuZcggjREjuabVcmBeqxQK82P1cr5yQWELgskGz5wF9TGOkWmUMF25ySsVm9sijSgdsLpJizTrjx4IYcZkOJkuR3SVxASHzqE2It/aSQ52glkLLYN/XFYU1ok1gDbm+AfskTIsE24dIcc8Yhwm00GqG2aEd47CbzrToMxM2bzR3Q1BBbkB2KmclYKxuQBmJ8FkpF+eBJKCcya11k1fiLzDUJBaqArXnDvSx4aopp1dcOds+xDZeFrBe9C/e4LHShooKJvlSFtOiRTDybSigE9dsaNHkw8guMZApU8QVg96AvWvw/VZxYT5wN5L8nN3O0UGp8pKwTwCV4fzPJYUpBsKIvRF2ij33woW4k7Njs6T1Y14J4k/l1VqdQ1mOOekwFuTA3YNo7+Dl4wCrTpFubzaUTYx/QA2LwYjZgfChPqKmn3jBOic+B6iSls3w6GYKuDeiYGQhBLaWPx0S6y84HRn+It8Yogu17RS5qWMtLim+RwNsUw+qCnOgTU+sEwOxqsv2ZawgLdJocuiQxdSTF1IkiIVpcOiPSjT5rVhWZp6UNCalBxtaSJHfwAEVI5mEmZ3qsDMfFLo47AQHe7MGWQ2EAsbd67QpUFOhpifNg3LFxKoQkadYq9sj3cD+hwOih7aJDDTkd1gDaio46FtB2bB1gUMqMTfHNLJiAzwWlH7cEx29Mfo3TPTtXGSXKIVdAlOwmhkBquJDUE3TGZIBfa8duvO0aGTOt3gEMvYqbQ5Jg5RY55+kCVc/QyV0D4RnTiHgrQoiTHwQiuazU55njmw2mDGbEco3eiJ6geSP+zYI0VdMbpVWp0Ssh+3ikNHp2e0lDgnEaAYLbaEx54PlM6PQqIzSKbdjHcGeVKzGFDgM5vWeSl0D/4eWvWA9+B0gFyBSnI3Psf1lCmjxbuR7nYvhawwoIaBx8NOvgkG/iWGyPUKzYAVlQ4FETKwmEhe5ryPGC4OgIPsmPt1+OTpkAKx5RIZJAYlJ1I/AHbdlJgCvx2T4wNqMewryUcNwsMGY/hiJz7q45JigGdlFr0D67cDxPfaK+jZ8jSQkBJIpFroVFnlWFkyCoiNE31s8r3eV2U22YqYqHFM4tIhaSfe0UBcgoRbqs2S0UpFQXk4g6NzcULF5zG4O1hgLL5KEjCRP9gTqFDY1HCSO7lARE9MZbslaGsoTD2c2gZbfu6QIRDLUewwVSGGcgeteo48nvG9qMswmBD+M3mffiI81RDmPAd/sTOTcT7gF+j6aDHahx6AEfofey6LYVX6OoOxnF7a5swf0dxQlCQZgzfZdWkFBj8FR5seo9u3KoQIs0WOinkRdqfgt6SeDmGZTbbjTeB7JAAFBojIzD/djjbNARrXDpQie99iSEl1yYQlIDGwRU267oxKUSxPp468zklu0nG21EMckEGnELhq80Y0NKHMqeyvTvcdYkgFXDT0Hn6KhWSi0Vec+mxhNiiShXkScEtbEmFZCWkuUL2jutzgxJOHNyIFjbB7o0mZQfFW0WO6PsYJs3U5phErs9mMgizU14+tP2ARnIGodL2tzBSQ5FmKvq4wF1LqHi6ty3Zm8kHEvBIlp0r0oHR04JzSpOjjDdL2VdYuM53GIqphAMGVyagdw/a7yOOjDCIXCaYuU2KhNbKsZDlrpKashGb45xmiUuH93X97Rk7BYxhU21CxOENGBIEiWRl2N30YVQHWJdyOdVo/ssREi1Xx/tA/3SwbBfGwGjHEjNHhRvLpfClhbGKAp/F5mORVo4lrgdauuoMP08ERq8pQ0NXRDwf6XU4EPE2LfH4bxxHFQDkY9KBO64d7KqvHBnCs3KEaBxlH8NzxT6d6FojtB7PhanB9W1eKVmdaaaG1K27qFK9VYNZCr61OBCEOIdO1BMCmuW57Gtqkd1FAOBTJpNHofcm0EhGlrLahbuLJ06bBkOdPjBxEo9JMETPM3a/DhAIKhi8Wk0Tq4CsztCAFZlqHrWIgtRwe5r3KP3TzYyV9irOLotMj8M0G8oBA5UJWaDddZogp6wz9yzB66u08pR4MUKUDLHb4lnQ4lm6oXTKZ0Zhy1N8SnZSK4u0QuwoMC9ZRfhoX0QWx0N41EuIKAbJlPiTWG/SSVttKJCcOl4TUKSREbkIPzONgIKhHIX/WiwQtTEhAF+9qKmILc3cgyKbA2zwfC2luvVZjQN7qJnge6KGApnCl69SDmzqYegbkwDnrog3GM0UrW46JVtmyN8c0Tqk82KOH63kFXIEqoRjJ1FEfxEqaqPN3EPYWhsM8SuIHfD7XcxzDd5gYThyXulORFFrWoI6JubzOkQPTxTTaBTYcO7kYfnqmrC5ghswpYRY2ri7BQ3FQReANDKNkoAhZYYsrGgxzQTuNWdyEFGiJq6S5hhs33CEhKpNySA1vxlI7HXmJG8E2FEeOi0dmf6XhV/ZWb4WqsL4Erm4mNZq6o34beMcw/NDOlF1juNzTsi4TZDKRnqPHB2a+RkJ2guG2iVZYJGMScYSQNtFChWEGJJpRrpbvNnH49e8yVNbl0NFfZ1DRjGCZt9ErzTSVKY/gmS0ZTJ/HPkYpKUefkKPCvQ753Pqay9wzOjQxCSVQFrgz1pLRjaCDmo+Uhs4+gS6hhRRkowMNtENwMkd5TwfVHqkBhSx2mczVNNtfD3pxRpushIfZwsrSQXoRPZHJnDqCJ2zECvY6R43FyJRcs+M4ZKmAWRyzWj8GfMxkxJcyCcF5SPRbEr2DFTM1e7Kx1PUYSAkTj5/HO0kvUI2Fb9OsKHiiGM+mp1i6UZIK9GdMi5FzpCAt+25H8PYzBgLQZ+IkmoSVdFnv1AN9JZzB6gHTD4yHBSwxbDDiGB7EOdtt9iAaHoFGs2Q4LLs2aWGKmvPOxgEORWqB0lS1m4UKou+YrbMEiaoDANJLuKTjCLECMcG+pDDlF7aq6MrOroszJucSF8LvlqtrPGOrAJfRJ1Dp0rQAyMkY4gR5SafU75JCCYIPRnskJrSYBaAAK6U36aSwNXsAtXJOoy+646Q4c1YZgQGBDhlBh8IiwYhAd6ZRuJsCvYYRhBRb4CWdQgUEpD0qPZKX5vRxnjHNrcXsWhfCDViA6OeEydbZSDke0riFuZiwHBnvVK8PCoKvrtDDutdnVgu08TQ80/jgkl01en0pstAV7RtkCnhyOWiTcUxOpIM9QSaa0qXn7NJqDrQOAyxdM9aMaI9pn2Q63ayjogg2XH146Lhgp0gS4naG8h57b60r+yEOw6NQ5BkyExEUZHYxrNRPy0QcgCWBtpvfX6ObkliS4MzyVnV8A74FK5TN31AEyTMG9jAZ1+UaGIjZmJquI2hiIzQPLy6Xh/mU0yH/KTDKnJJw4LX81PAVFA5EsfCHOWeWFNrA6ZpB2OlTqCmAx2Ags6VOibnRdKYV8I2u8yGIu2jix6NZpIMstinkKSaJVltgZTBrZapeX2PMhlPTnQoMUQrkEK6bKTj0Z6/Atkii2mxPNJYybBLH11SYgrCQ/mAEahSTGQGtmtFnUAgolvPNPFAu40pGftQpP3pJepBvBsuZLxuRkUeu5QXYGXTgupD+QRuwR9ZlvQzFICAz0/bn0YZ8AoqvBEnWTaOHsUjxrjReeqIpWOsy4M6IkB1ir4GBZgrVCmrEUgfRy0AjC0fa4WUVTbX4uBfSM24mNL18DNtDYVQ7FQ/fl1rxpL7dXAWDuANsRYNGgWYqe1cZKobSUmIcjsC/wwgl7580ax82N6Tf11bK8sPh300zHSlpphKz/oHysAcFvCLkRS48y7hIfFSCZsQDpgB16pYK+mBY8koSQC9UdB1yfLOgQXx9pI7JdGp4Iw3FVznOubHJ6xSYAixKocbrhJRGP/oTV9ioHLCrrwp14cbgDLr0LY1UMrxBs5Zw0W3+FEyfzMkEheg5ZTvA00S/diVS8ievM4eSW06HP+4wwkASzgFNrlyv3S8TCFaKnhbrzYEWXOhhS9rS4lKIneEtk0HXU9+3s8VA/sjd1TPQ+2VNhIwoawTTia2wLo1B0PRlL5CGOgeRxnFqzPTJ8PvOQ+IpCaKpRrgiH76MfpxZ0AO4hGUQkYMGBjEPFKrJNjZme4FrStF/4ECdwNQHQTTOcX3PLraBVcuH4NCX7SXd7QdsKiwliRj0/D7bRFsmCUmKd+aUpIgNF+BsddTqUAjExjBWKpbBpjoaNpQ+ujnTIcUAa+t0EUY1/E3SaBaBygGJAQ4L4zvcW8FNHIleOEuHQcCUQwoJpY2yTDdtYURTPEMaQbdZ9NVyiMnQQPvqtEPQcFBG4MogpJFGcfqEObTkRuFDc/0UCiNXaILRUNJBJuKLESstpl/K3XSt5owOaTBmMUKUkTQuOJEXFW1UKWDqVvjWGkWTTIbMNT7AMgXuvOL4U5mwcdTk/WV8GQXsLCQsE1SgU/AbDj8jmUQ/w93IS7r2SHkSFJdpKoDDwc3sGWjzynx36nyLMxJkPBSe0HY3V8mKH08efLHA1SIz7iL+2ei6igYAWzeNSQpAABTw0AJgBbXTScZEGLpTPUyW4uqEvWJUF/GvEJs2EL1oVYfoLuFyrrCmMHE+m5eiFj2jiYv6FWtmfn/oC0uZivkJ5N1EU20QqWF68pnxZxtZC82+jEDUQ3jafb0OcWQb3TLU43ZF60GG1hzv/BMBt/5NSjXA/9bvKYHuygon8+omBMAWHBC0GN1kw/gqN+HIvEQ4293MeVrYoW6bEaEVj6nkoMhOVuLJbLo05MziyxUInWg9sr48AyxSTDeTY+NUVTmQuW/hTC42kpWDTsJJT8lGNQOF6AdaSGNMKGN0LFM72SudJ12k7dC1XTL0gjoHeBGCNPtOeciUJ7AA3eAGZE+lxwal8xX+COefSuhGpe91IaSwzf7wpJNHOsI1repToDWj60Hqx+FEC5QocObJBJB2cDwTdhwIXIolDckneFeXtKGeh7MLVZqjqgtyasJwqiAQu9nKZpWKIRxkMoGb5gfWuIMPA2ss4+CUiJwy+gwgoCIlZculIBnoykhBAeRqwNxuoQyXp97KDUNCM7CNk7Y8gPQ2HI/y28pE+cWRRlTAzssoZKwz8EPPABgjqFYYk9wAskL3aqYfk5miduBvJXQnCT2lH7IDSa1BYw3iCx5r7xUOwAwJXEHTBrikMRBiCH9pH5tGgxa4qugca/DaFDvXi7sC/VgUapOPsUlbWrejf7Uz7sO1xcSMCQYRQSduLWjUVGWWkX2LkE3h7IGh7+C4LYm0/PxC7A5fiLNK5XBEO8o3YJesUwpHaK4QJXbPRJHkP9LeD/SERI+VKPpFqWoFL7untFzGGlMKMxxMbqPKIXKADc88rJM50onMHqSIMKB5vv2AUCZmIxASulBj0uEcPIuLM3VNH9O5yBpJXXgp7QzFlAWBmNny31DUWye4G4r1LhtAVmUNiJ50pW0wJvuKN7bAumtbbACFNqYNK2o0PnaKNWpV7hD3dFzPMBYw66AEgTe0Ke6ISo3LecbBJ8tgRf94mHMMU6ymUj1+NxdmP1B8h/FwkGFxSLoaHX70DGUpXufkEw+SLQ9KRtAqxneaJLgo1+GRUKu2R6/CAENlT6Gb8zTo2+1BI70wvcS2LRfIdxg4DfXrdBOHFwprC3SuFKsWSxkCrRGDBTvNYK4f8OiTMfNXgWN1w2HZAeJ8bDkZXoM4pgaL105pmTSPTS9DzgeHPzBVl7SNYq3szgTSsDIg3EUklZqWIo01Gs2cR5wQVD0mE64sAxWp6EJ/F3MeqtvVLCtBlRYKe4YTmJCo6q2oftWFmSzdDTuhhSfpf4Nmo23cVUEarBkL/fC0mrs2r8wY5wZME8p9Rgg5z5eSYuZ5qUJ7AUhpQIETCCyTkmk0eg0ZXdKXEkKbZJSPKj85AS2RHFjCKn2Cjex0JzlCZzTAh3bKufNL+LtLjNBpdrRkJ1cPXVrB83BuL7Nj6ANdesybt9WdFGQZhJmQSjqtXoAfAVZZmIzty3VMbsA3hubGnSk6AkY46D07pFA4Xkzgg3e2dDs6TDKdIcyYjNuGis1tKdjoSuPmEYLrlGoejLiC9pE5Qp8YdoHekZjm1h355ohReA32tc4Ye5c6QusnprHJY/AdiUzPqKSZSkouHwtpRaLBX8EUORxbNJHvIS8aQgRF5k5NMFkUWqEYNOZgamWRnEDURV/ecKAKkLc48gqMKP86htpOfEjhPdERlFxVWR7qEsTEGT6U7mp7gdQYFe5o0tYWnB/jBxMDwlNxfkrkDojQYWtjCK11VKLbAajkBK1qD0qQGcqdAf9RTeDBZPYRTPbEJ85MwoLUobWg4635dpcMPACyZyZD2GTYmB/SRTmRqpB2AJWo8L+tTlDrYcDLylkNWJu1JzF0euKBzuEYDoKklyJIGwxPcUJFy0Xw6ulIE1T5gVi0xYFqhNDULABjSSa8Pkyg1QZYJusjVWQLfq3F4h8oKMPAQYd5N5NdA6RaYjI7XAB+HByVEI7TCmWhOf0NLl94dRZmjVXHQgQPAfhk+khjGKtdU+oVpFs6U+dddqpFFhp+d5iTbMMTFbtGFgvqb2ujJxiRGrOCPUqNdLF2HiL4YcPOFCDZKK4xJcEVwcHwM2SowPrczYNOZszh+Baa0iy3Bgk/ZixFwW46xh5FvUTFTKwilWi0JCnjFgsl/ZcdSigRS8DNLYNLLdDx1XD2gjKIASbdZcbKYTBHfVDeBS/gB27QP0FjHozbNrtOR5JUCWHSGLbJXMaE9AnOSfFDhnKNCdEKJpvVO/qcqaKAj7Sv1phV5iviyQXsPltjOoKqbFmDBcfQFNJwojieFkZ8aUv2PlMq7NFAk7lUJzW4SfcazCbd9ZhrQ2vKwXUeEzv9dEP5sfIPgwXBzoDVksIRRBsHVVvjyCa4ophTDHt/h6fSkzO36LNtjJd0o+Aq5BIro4ag9pmW/fDYlcVi4SQb3RPdIfoemDcQuOaU4hwBUSLmTSbbth6kH37XOO8cfZbripIiP2MC7gKXMZNScRC1t0aX90OOxH2hi2y4htAoVrVonF3L8gl4Jj6fghN6nhY3AIQsVgdtvKKmhytWt9inqOjCWOSln4E8ieoW1WpL+qw7ydVew/N0FUjQL0xq5PjxsNaSgkyXloAg0Y7LlYpkHEXtOPOtu/5NyExxoxiKtEw7lAjwVwseAn3oMe8LpFZyJuhOGdkOQE4V/GyD56K58RFYcshWA54PCstlUOi/18d94vf40YqQRiQQLXMtn+pKBCdFYX9amj5yqAzBpBEZH9mJdD5wSoLPh7215A4rrGMxI2eRYreJAblxK8lD+BltWkge90JMwuFP2XU8gDiHwTtmksS8VPPVoJ3UYcnhHzk2T2pL3JFyrcE0JAgblhnYI4Jol+4F06BdgiMsxYHZF+lC375UGQD9NTn40UBSaAYvoNWSr0BXZlLQ5QxzjWPIJNupaEM/TII8GwctRQqbNqu1BMGBH7NDaYD0IdT43o/uWJ1ZKjNjrdelswz+oNDD4KB/MReAOWdrwZVPJofPsFrwHB0Gku6AKpQQKtRCJEWkWmzb/tqCP74cg3inUYAGVoVkuLQuJ1QCejTZ0tUdUskz2iGAZ2Cznc9DWAQ1GCOgu2tepGyLnw/znZS1nXGBzmnBzOtqkY24gIRwxjl10yBgn2EGHTR+NO7vZs7//ve/f/aft354c/W/fr16/d1v3+ofP3//6vWPt/6oT19d/fT9rT/eevLm1Y+vXl+8evO3n9+8fXj31me3frh6+fbXN1ffvn7516vzL3z77nZ89d2t//ryb9z19v1TKxP99MCxR/TBrr18duurZzkdH7TDAUcvGaBpAtbPbt355t790x9WuBUkp0TcOi2f3br3r/fiEp2lrdCMCHto7vqrR8+PdywMJJWwwmsHCfVntx7e+WLvQZ49PuWbACIDM6RjsSt00NpePDv9WXSRgKxbmMKedMfLr57s3fHx3RfH58jSmyTK5iqB11PyjM+/PF4b0GpRwhygYLTXesjnj/ce5MEXd49/JgcEuBhdIqBX9Rx/+nLvOe7ee7S3iE8fXhzvx7BuIvQS50YP+Oji692Hv3h45/Heetx79nBXRJ9//ej09Gcg7Ltf3t6747Mvnpy2cwR3R2DpAXi2z279+eHpKemFgoeC3gU8FK3wxRd7P3b7ye4Cf/7s4nQpQ1xMqEc2Tn905+mz4/3o+qLeqEcgZmFBnn51f++37jy/1mvnj/j1o8enV6ORXnEF5EmTmJ5nvK58n9/z6cOTpTp/ysdf3tn7q0fPdxfk8pujWGXmPcHj0gtMnPH8Tx/sSNwX90+Sz/z6NZCJofNZ4Puntdpa/IvrOtWG6D++93h3kZ9/dd0QefYod55f7q3j5bUYkH6GXLtDJabgQYJ1uasnHj+8zoCc79rlN8925fHLh6c1OT800i97j//Fs+d7B/TywcXept178Wz3hH5171pCztXBo4ePdy89ON2SKAMAhrTrgA8cJfLF3mL96Yvbe4Jwcfv/2RWEuy/u7L3153ee7CzVVw/v7W3n5Z1Hu1t28Xx3qW4/OZ7d8/e6+/zFrjBe3N39sccXd/cW8YuLaxGG8pJBbDJadBrr1+5fPtlb4DuP7u0+/uW9i92HvHN3Vy1982LXsN7+Yv+Otz8/afdcm4JFuhGg4ZYHJ7N1fZzOD+H9kxlP8A8VhlCB21mn3u3zFxe7EvL03p9PK5llFzrZjHVIVvUcJzt+fuXOtR08NyQXj49a4qOfgZFEe3b5dPcp7lxcx89n0vj40cO99/rmm3/dNT8PH+391e0Hj3d1y9O7X++u/f17aVdfffPlo70Vuf3o2c4yPr63a6ofX2vUDf195+lJBtpsM3I0EEjVVrHwz3Zdr7tf7on+o/sv9m746OJyV04fXBu0cwv/8NqFOnN5br/YF24ZhLKzVA8uv9r1eO5+fXtHdJ48+3z36R9ffrN73h9ea5ctXfDozu61+4+f7u7a0weP9s31o692JfLrh9/s3vPiywd7Avn8y0e7r/7k8tGe8nzwTiRvruXtL+7t/dGd+9eee+lkWBUeLfBP6TFeXLzY+6tnT+7sK9VrX29jQZ5/ebl77fL5oz0h//rB7Wvn/Uwb/+nzP+/92dOLa9dyI3S6vPv53t89e3hnV87vXyvCjTd4fOfh/ps/ufZuNmTh7qMHuz/4zZMXe2rhX5892Nu723d3F/Py89u7P3Z58dXutT9d7Do4t59c7qiMpy8e756cy8/345b7T/cdkruXj3evPX34fPeeD+88332Wx7cv917u/rPb+wb4wa4QPb6OHDeW68vPd1/g8Z/v7e7As8/v7l57/vRif1Ee7BvGi+tTt6Gcnzy7u/PmxxTJ25dvfrx6++1fr16+/p1Jku+vfnj5609vv/33lz/9esW9M8M0mZfBsCyJ+CfzKMff5Cd1u+sHOGZRTo+bo1WxoAYbfbv13UtuXDktzcaV04JuXDltw8aV0+ZtXDlt+dbfPNz7nZNwbVw5ieTW3Y5yvHHlJP1bv/Nw78rppG09wdO9vzmd6q3febF3t5P+2LhyUjpbv3NUVZtPsLc6J624ceWkSjeunPTv1uo82vuba2W/tUFHG7G1pEfLsiVwR3u09ap390Tk2vZtrenRYm5cubazW7+0e4RONn3jyskT2HqjJ3tvdHI6tu52f08UTu7NxpWTS7Rx5eRHbb7P3pWTy7a1cEdHb+vZHu2J6cmp3JKEx3uScHJgt473xa5Sutx7tpOLvSXaX+8doZMzv6nIjhHA1iK82BP6U7Cx9UPf7F05xTVbV+7vCc8pgtp61WPYtSVwuzru8a5WerwrcKdQckvD7ArcddS6JT139wzXKUTeuvJw74dOwfjWCz3a27rrsH9T5PYE+JRi2Lrdn/Z26JTL2FqEe3ua7JQ12VzTPaV0ys9sPcHne4twygVtLemLvd85ZZ22jve9vbudMlybZmPP3l4n0zYFeNdV2jWRp2zfpvk+vtB8l0jcerc7ezc+pSy3dvHO3rudcqNbL3DMqG7ZvS/2lNopd7ulUR7sndpTlnjrfU655Y1Lp5T01vI82Nv6U/J7S6k93nUzTnn2rR/6Zu8RrnP6W7+0ezQud1XhqeawZWG/2hfMe7vK61QW2bp0f++VTiWYTeW+Z8sv9w3P8121/+WeOF6XojaPzbGCteVPnApfm8u669g93fW3TrW5rSP2bE/uTkXATc2/tw6ncuOWBH2xe5S/3DuWp3Lo1jl6tqeQr0uvm37D3sM93Y3B7u7a88tde/Vg16c5Fa43d3Xvbqci+dYTfLW3pKdy/LbK2DtFD3fN7AkvsLUPJ4wBlOUf/uc9MmFLP54QDZsneUcz/H5Mxourl2//cvVmD5FxuuzxGM//8uvr76/e/OG//eHRqx//8vZ1/JCeioHe4zgreF0KebY7P/386/e/7Vx8cPXy33/7w+c/7/3xg5evftq5dPnr69d7t7378q8v9SY//uHFq9ff7z7X1cs3O9eevXz1evPS/0lW5/0yn+d0GvC6OSozYVKv9RNbYVI67x61TODUlTnFmdTWh294fu18hc6/836Fz6+925iNSx/t6dZjvROI84t7cnXzm8eN+Pn11bd/+fnt79oEvndas9PC3Fjk46fvn+/scnx8tnQ3vvbx1euFuvGl+PCjlbr5hXdXroXxxhfiw3dbdOPi8dOdxbzx3a3vfHpxP/+JL9+9+unlb89/+9vVx8v76OXbqz9cvHrz3ZuXP7z9Q3zp/E++3foWHvnl7l+8v6bv/bz/tetLn36Nu1e/vLUS8sEXzuXj44s70vHhl3Zk48OvbEjGR5fP5eLDyzek4sNLXiY+/OY/JhF3Xr558+rmMt67/Bft8Pur354+UKRx9fa2fu+XD669+0h+yM8//vL25S9/QT7+4+VvH37r7JIe7X9IKb7Rq199/+1ff/7+6id++ur1L1d//befruIZP9Ctutd/v3Xx7z8+f/Xd/7x6+/TNq++Q3o1nYEm2wYkfX/lIN7vd3tjmva3d2NNP7ZC+8UoL8/q7q8evfrriBT44F4/jFg5wua0KvWrb1Gn7euzTekeW8uVvT354cXX1P0OOfn3z7c8/fKvPbmmHv/vp5S+/vPrh1Xcv3776+fW3P738t6ufYjOTvps3vvEfV9yYr6QD/MFrdJJ1Wgjr8lk+pP/xzpa+RYf98cYNbt2QKu4k2//malOm/i/9/tXVt7+8ffPrd/xW/P5rPcq3Wv+r/y27+Nmt17/+9d+0mr+8/Ovf2PU/lpJlRbV9P1x7G/+SDyvjbNOAxBRe9PH3/3F0Y3Ze5XfI2v4uuxOwI5H/Jz91dqhuCP3eidqU1Q+lbed0bp8WL5r/H278L3/76dXbb08bGt87fvJj2Armtw0a00di7Av+1tu/vLn65S8//xQ+YHvvqv509cPbW3/UA1zx2XevfuHFTk/709tbiNgPb7/97i+v+Mv82a03vPL1vxek68PnzRvPq+Dl7HnzjeeFMxB8VXD2QhL0T3rgeuOBl5sPXM4fOFOX/vBg0RjMzCoo12eHwOLmXerGXdZUz167nG3TStspJBb0Ko3xT3rtduO1+80HXjYeeDkXq3rjeWlAGTlpFQA2TZAEHzxvLf+4YI0bT5znzUduG488Rjp75uVsjVMHm8NIu1Ra/yct8c0HPnvevvG8xH8fS1ZrkwaMUnRe25zrzbuMLfkEhXjjrdv5gcorPPkzZv+09k967fXmPqWbTzy3ROtcA/SPHzjR1zwgnolunJw/VlnQ3BwYrAvpBRz5/+Djl5vPX8+ef908Gv3sBcbZii9Mks+yA5jfdf6zdO5NpZvPte6Gmcj1fM3rzTVnbqdU28gnarqPHrkt//Azl5uno5wdj7xhKkBonz30vLHO+UDT1hqTFOmD/6fZtpu2Ip8Zi7xlLco4e+T1TG1KZrN0z5yZWVAfi8Y/rjXLmT0+F40t01TyuTjnGy7EelhW5n/SwA9/wj/LNOWbtimfGae8ZZ3ameqsDP+ilYXpM+PcKOcti5F59Rte84REAr7JRhtuO9PBeUuVp3PLk296NRBVrDHKqEHnk26uYUorlPvwstFUzXv/Y3Jwc03L+ZpuGZL3D/z+HW64KCXmdurZC4jwWj4+bSX/43JwUxOXM02cN0wJZ+djMSgZsDCDE2QdQPSd3WZLo29sX7mpHZlC1SFAXOXSz7X+s45Avalp6rlbuqXR8w3JhX8SdhFGpbUi7/ls18uGkm3nK0hH84SBpEAPfH6XDbW3oajPxX+J7m85aQkk5ZnwzzKZwX5kL1zrP6wFby5nOV/ODS3IEn+8DrBeQi6xjs5MyzOFUjb00nIjCFfQB+dF7ymmXNczaSwbWgmA6cePkgKcGqO1oFc7v8uGSur95l0YjzmBiOvcMrfi7C5bSgEk7I3oRzfJsDj0BDnT2V22jmk6k1WoT2EHn9r0Rqv9uZxtHtRPuo5S4JKhVZK0NgaRpuVjN0YizXCnJUnX0hz9j57am8a2nq1n3Ti1y5mYQUnE/JQMk4gcsHx2m41T29dzaQX5DxPIypufyXzdOLU344/MpOeKH8U8o9bONUjdODlrPhO0mdfcoYZY4Q47j483Ts7N7FViZkWCezjRtzMlbp9KX51ld3fqPP+knK9Lq36YKNpO636Uv/r/US6JaXdrCmqcBOvEDTO4NsZbLkwLnzkK1/9lmaW8tnMrfjMTBk8gTEShAhlr/vHTV9j5IKupbeJI/hfmmcqWDb259p3BXFOBg86Vnr7+VyWItsKGuREFnzlNdHTCoUX9tunJl/+yxMOGjmnLp2PgtGa4puGHW4dE6uYSM60dEYI8Yugr9Lr838kYbXgG/29tZ7eaQAwF4fs+Sy/yc7LZPI1IkUUoWIq+f+ezheKegCG0BW+qLGrck5lPdybF6sYkKboSKjCjTPPxAHgqbk8v2RJLtTbqmbxM6SiD7PTFSqB4WLh4l9w2d5AeCnLqM0gPpKIj0S4mHT/EY6Jnq+bgBjVVJSA5jDLR3brqWUeJZi0sSX55dlUn8YwM5/PBm6k41FQl2bpRdv5ovtA1kDJsGVvmrH0cgK9dWpM6WK+4zYPSHj3S6Har+2kgwdAoxb4niZKEMzuAZ+lN9RbYkckoR8AnpIZ7MPDuRZBt/X/OpcdvqmMY/IAJclEprJByiNW74N54TM+xJuXBmhQknpGd8GdfUYxwoM5AtOhGWaTetZCdSr69tvEhfhPNv4cNWS4Ja02KIKxDEMXr+0UnJQl1VPNC3kewhpkfB+5UMgpeaMpqqa3fEG+3U5H2yGWeC61eIU+fTANspjOWU/Xb7Z7ekju1kDNIll6Nj2qMKcB1+FYDV1inWas2wEW7gKVjsqzS31ZpbCDBegSwJMve/LZIEGkL7LjBOlig59aczyryRdgsgsTzam6v7HEOGUxv13S+pHtzQJYDGAIdtePoCRArNNuTrxuz4ddkU47b9nnajtfT4XK7ftyueLf3yyYDdH476B6tN8vHv39djxzO689NR9HfyxcUO/PXt88BAA==", "tags": [ diff --git a/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts b/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts index df3aa6f8f257b..519ae1109e511 100644 --- a/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts +++ b/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts @@ -6,7 +6,10 @@ */ import expect from '@kbn/expect'; +import { v4 as uuidV4 } from 'uuid'; +import { Client } from '@elastic/elasticsearch'; import { CreateAgentPolicyResponse, GetOnePackagePolicyResponse } from '@kbn/fleet-plugin/common'; +import { FleetServerAgentAction } from '@kbn/fleet-plugin/common/types'; import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; import { skipIfNoDockerRegistry } from '../../helpers'; import { SpaceTestApiClient } from './api_helper'; @@ -19,6 +22,33 @@ import { } from './helpers'; import { testUsers, setupTestUsers } from '../test_users'; +export async function createFleetAction(esClient: Client, agentId: string, spaceId?: string) { + const actionResponse = await esClient.index({ + index: '.fleet-actions', + refresh: 'wait_for', + body: { + '@timestamp': new Date().toISOString(), + expiration: new Date().toISOString(), + agents: [agentId], + action_id: uuidV4(), + data: {}, + type: 'UPGRADE', + namespaces: spaceId ? [spaceId] : undefined, + }, + }); + + return actionResponse._id; +} + +async function getFleetActionDoc(esClient: Client, actionId: string) { + const actionResponse = await esClient.get({ + index: '.fleet-actions', + id: actionId, + }); + + return actionResponse; +} + export default function (providerContext: FtrProviderContext) { const { getService } = providerContext; const supertest = getService('supertest'); @@ -39,6 +69,9 @@ export default function (providerContext: FtrProviderContext) { let policy1AgentId: string; let policy2AgentId: string; + let agent1ActionId: string; + let agent2ActionId: string; + before(async () => { TEST_SPACE_1 = spaces.getDefaultTestSpace(); await setupTestUsers(getService('security'), true); @@ -63,6 +96,9 @@ export default function (providerContext: FtrProviderContext) { policy1AgentId = await createFleetAgent(esClient, defaultSpacePolicy1.item.id); policy2AgentId = await createFleetAgent(esClient, defaultSpacePolicy2.item.id); + agent1ActionId = await createFleetAction(esClient, policy1AgentId, 'default'); + agent2ActionId = await createFleetAction(esClient, policy2AgentId, 'default'); + const packagePolicyRes = await apiClient.createPackagePolicy(undefined, { policy_ids: [defaultSpacePolicy1.item.id], name: `test-nginx-${Date.now()}`, @@ -172,6 +208,15 @@ export default function (providerContext: FtrProviderContext) { } } + async function assertActionSpaces(actionId: string, expectedSpaces: string[]) { + const actionDoc = await getFleetActionDoc(esClient, actionId); + if (expectedSpaces.length === 1 && expectedSpaces[0] === 'default') { + expect(actionDoc._source?.namespaces ?? ['default']).to.eql(expectedSpaces); + } else { + expect(actionDoc._source?.namespaces).to.eql(expectedSpaces); + } + } + it('should allow set policy in multiple space', async () => { await apiClient.putAgentPolicy(defaultSpacePolicy1.item.id, { name: 'tata', @@ -189,6 +234,9 @@ export default function (providerContext: FtrProviderContext) { await assertAgentSpaces(policy1AgentId, ['default', TEST_SPACE_1]); await assertAgentSpaces(policy2AgentId, ['default']); + await assertActionSpaces(agent1ActionId, ['default', TEST_SPACE_1]); + await assertActionSpaces(agent2ActionId, ['default']); + await assertEnrollemntApiKeysForSpace('default', [ defaultSpacePolicy1.item.id, defaultSpacePolicy2.item.id, @@ -213,6 +261,10 @@ export default function (providerContext: FtrProviderContext) { await assertPackagePolicyNotAvailableInSpace(); await assertAgentSpaces(policy1AgentId, [TEST_SPACE_1]); await assertAgentSpaces(policy2AgentId, ['default']); + + await assertActionSpaces(agent1ActionId, [TEST_SPACE_1]); + await assertActionSpaces(agent2ActionId, ['default']); + await assertEnrollemntApiKeysForSpace('default', [defaultSpacePolicy2.item.id]); await assertEnrollemntApiKeysForSpace(TEST_SPACE_1, [defaultSpacePolicy1.item.id]); // Ensure no side effect on other policies diff --git a/x-pack/test/fleet_api_integration/apis/space_awareness/helpers.ts b/x-pack/test/fleet_api_integration/apis/space_awareness/helpers.ts index 92f4e3a387678..e4e5ff2563cc1 100644 --- a/x-pack/test/fleet_api_integration/apis/space_awareness/helpers.ts +++ b/x-pack/test/fleet_api_integration/apis/space_awareness/helpers.ts @@ -49,6 +49,12 @@ export async function cleanFleetIndices(esClient: Client) { ignore_unavailable: true, refresh: true, }), + esClient.deleteByQuery({ + index: AGENT_ACTIONS_INDEX, + q: '*', + ignore_unavailable: true, + refresh: true, + }), ]); } diff --git a/x-pack/test/functional/apps/dev_tools/searchprofiler_editor.ts b/x-pack/test/functional/apps/dev_tools/searchprofiler_editor.ts index 87c36de62bba6..184e979595f68 100644 --- a/x-pack/test/functional/apps/dev_tools/searchprofiler_editor.ts +++ b/x-pack/test/functional/apps/dev_tools/searchprofiler_editor.ts @@ -36,7 +36,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('correctly parses triple quotes in JSON', async () => { // The below inputs are written to work _with_ ace's autocomplete unlike console's unit test - // counterparts in src/legacy/core_plugins/console/public/tests/src/editor.test.js + // counterparts in src/legacy/core_platform/plugins/shared/console/public/tests/src/editor.test.js const okInputs = [ `{ diff --git a/x-pack/test/functional/apps/index_management/feature_controls/index_management_security.ts b/x-pack/test/functional/apps/index_management/feature_controls/index_management_security.ts index 9d267f2ed7c33..8458ad6991541 100644 --- a/x-pack/test/functional/apps/index_management/feature_controls/index_management_security.ts +++ b/x-pack/test/functional/apps/index_management/feature_controls/index_management_security.ts @@ -73,7 +73,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { // The index_management_user has been given permissions to advanced settings for Stack Management Tests. // https://github.com/elastic/kibana/pull/113078/ - expect(sections).to.have.length(2); + expect(sections).to.have.length(3); expect(sections[0]).to.eql({ sectionId: 'data', sectionLinks: ['index_management', 'transform'], diff --git a/x-pack/test/functional/apps/lens/group4/color_mapping.ts b/x-pack/test/functional/apps/lens/group4/color_mapping.ts index 008ffa1cb53e1..d14505fb0b147 100644 --- a/x-pack/test/functional/apps/lens/group4/color_mapping.ts +++ b/x-pack/test/functional/apps/lens/group4/color_mapping.ts @@ -6,17 +6,15 @@ */ import expect from '@kbn/expect'; -import { - EUI_AMSTERDAM_PALETTE_COLORS, - ELASTIC_BRAND_PALETTE_COLORS, - EUIAmsterdamColorBlindPalette, - ElasticBrandPalette, -} from '@kbn/coloring/src/shared_components/color_mapping/palettes'; +import { getKbnPalettes, KbnPalette } from '@kbn/palettes'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const { visualize, lens } = getPageObjects(['visualize', 'lens']); const elasticChart = getService('elasticChart'); + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + const defaultPalette = palettes.get(KbnPalette.Default); + const classicPalette = palettes.get(KbnPalette.ElasticClassic); describe('lens color mapping', () => { before(async () => { @@ -34,7 +32,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', operation: 'terms', field: 'extension.raw', - palette: { mode: 'colorMapping', id: ElasticBrandPalette.id }, + palette: { mode: 'colorMapping', id: classicPalette.id }, keepOpen: true, }); }); @@ -43,18 +41,25 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const chart = await lens.getCurrentChartDebugState('xyVisChart'); const legendColors = chart?.legend?.items?.map((item) => item.color.toLowerCase()) ?? []; expect(legendColors).to.eql( - ELASTIC_BRAND_PALETTE_COLORS.slice(0, 5).map((c) => c.toLowerCase()) + classicPalette + .colors() + .slice(0, 5) + .map((c) => c.toLowerCase()) ); }); + it('should allow switching color mapping palette', async () => { await lens.changeColorMappingPalette( 'lnsXY_splitDimensionPanel > lnsLayerPanel-dimensionLink', - EUIAmsterdamColorBlindPalette.id + defaultPalette.id ); const chart = await lens.getCurrentChartDebugState('xyVisChart'); const legendColors = chart?.legend?.items?.map((item) => item.color.toLowerCase()) ?? []; expect(legendColors).to.eql( - EUI_AMSTERDAM_PALETTE_COLORS.slice(0, 5).map((c) => c.toLowerCase()) + defaultPalette + .colors() + .slice(0, 5) + .map((c) => c.toLowerCase()) ); }); @@ -66,7 +71,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); const chart = await lens.getCurrentChartDebugState('xyVisChart'); const firstLegendItemColor = chart?.legend?.items?.[0]?.color?.toLowerCase() ?? 'NONE'; - expect(firstLegendItemColor).to.eql(EUI_AMSTERDAM_PALETTE_COLORS[3].toLowerCase()); + expect(firstLegendItemColor).to.eql(defaultPalette.colors()[3].toLowerCase()); }); }); } diff --git a/x-pack/test/functional/apps/lens/group4/colors.ts b/x-pack/test/functional/apps/lens/group4/colors.ts index 5c5bbea4ba2c5..68e0ce9f88560 100644 --- a/x-pack/test/functional/apps/lens/group4/colors.ts +++ b/x-pack/test/functional/apps/lens/group4/colors.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { ElasticBrandPalette } from '@kbn/coloring'; +import { KbnPalette } from '@kbn/palettes'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects }: FtrProviderContext) { @@ -57,25 +57,25 @@ export default function ({ getPageObjects }: FtrProviderContext) { dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', operation: 'terms', field: '@message.raw', - palette: { mode: 'colorMapping', id: ElasticBrandPalette.id }, + palette: { mode: 'colorMapping', id: KbnPalette.ElasticClassic }, keepOpen: true, }); - await lens.assertPalette(ElasticBrandPalette.id, false); + await lens.assertPalette(KbnPalette.ElasticClassic, false); await lens.closeDimensionEditor(); }); it('should carry over palette to the pie chart', async () => { await lens.switchToVisualization('pie'); await lens.openDimensionEditor('lnsPie_sliceByDimensionPanel > lns-dimensionTrigger'); - await lens.assertPalette(ElasticBrandPalette.id, false); + await lens.assertPalette(KbnPalette.ElasticClassic, false); await lens.closeDimensionEditor(); }); it('should carry palette back to the bar chart', async () => { await lens.switchToVisualization('bar'); await lens.openDimensionEditor('lnsXY_splitDimensionPanel > lns-dimensionTrigger'); - await lens.assertPalette(ElasticBrandPalette.id, false); + await lens.assertPalette(KbnPalette.ElasticClassic, false); }); }); } diff --git a/x-pack/test/functional/apps/management/config.ts b/x-pack/test/functional/apps/management/config.ts index e4a06d30f260d..7ca5d972aa064 100644 --- a/x-pack/test/functional/apps/management/config.ts +++ b/x-pack/test/functional/apps/management/config.ts @@ -15,10 +15,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { testFiles: [require.resolve('.')], kbnTestServer: { ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - '--xpack.spaces.experimental.forceSolutionVisibility=true', - ], + serverArgs: [...functionalConfig.get('kbnTestServer.serverArgs')], }, }; } diff --git a/x-pack/test/functional/apps/spaces/create_edit_space/create_edit_space.ts b/x-pack/test/functional/apps/spaces/create_edit_space/create_edit_space.ts index 4b100595a38c6..a2c00647adf92 100644 --- a/x-pack/test/functional/apps/spaces/create_edit_space/create_edit_space.ts +++ b/x-pack/test/functional/apps/spaces/create_edit_space/create_edit_space.ts @@ -15,6 +15,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const spacesServices = getService('spaces'); const log = getService('log'); + const find = getService('find'); describe('Spaces Management: Create and Edit', () => { before(async () => { @@ -43,6 +44,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('create a space with a given name', async () => { await PageObjects.spaceSelector.addSpaceName(spaceName); + await PageObjects.spaceSelector.changeSolutionView('classic'); await PageObjects.spaceSelector.clickSaveSpaceCreation(); await testSubjects.existOrFail(`spacesListTableRow-${spaceId}`); }); @@ -60,6 +62,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { name: spaceName, disabledFeatures: [], color: '#AABBCC', + solution: 'classic', }); await PageObjects.common.navigateToApp('spacesManagement'); @@ -103,14 +106,100 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); describe('solution view', () => { - it('does not show solution view panel', async () => { + it('does show the solution view panel', async () => { await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { shouldUseHashForSubUrl: false, }); await testSubjects.existOrFail('spaces-view-page'); await testSubjects.existOrFail('spaces-view-page > generalPanel'); - await testSubjects.missingOrFail('spaces-view-page > navigationPanel'); // xpack.spaces.allowSolutionVisibility is not enabled, so the solution view picker should not appear + await testSubjects.existOrFail('spaces-view-page > navigationPanel'); + }); + + it('changes the space solution and updates the side navigation', async () => { + await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { + shouldUseHashForSubUrl: false, + }); + + // Make sure we are on the classic side nav + await testSubjects.existOrFail('mgtSideBarNav'); + await testSubjects.missingOrFail('searchSideNav'); + + // change to Enterprise Search + await PageObjects.spaceSelector.changeSolutionView('es'); + await PageObjects.spaceSelector.clickSaveSpaceCreation(); + await PageObjects.spaceSelector.confirmModal(); + + await find.waitForDeletedByCssSelector('.kibanaWelcomeLogo'); + + // Search side nav is loaded + await testSubjects.existOrFail('searchSideNav'); + await testSubjects.missingOrFail('mgtSideBarNav'); + + // change back to classic + await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { + shouldUseHashForSubUrl: false, + }); + + await testSubjects.missingOrFail('space-edit-page-user-impact-warning'); + await PageObjects.spaceSelector.changeSolutionView('classic'); + await testSubjects.existOrFail('space-edit-page-user-impact-warning'); // Warn that the change will impact other users + + await PageObjects.spaceSelector.clickSaveSpaceCreation(); + await PageObjects.spaceSelector.confirmModal(); + + await testSubjects.existOrFail('mgtSideBarNav'); + await testSubjects.missingOrFail('searchSideNav'); + }); + }); + + describe('API-created Space', () => { + before(async () => { + await spacesServices.create({ + id: 'foo-space', + name: 'Foo Space', + disabledFeatures: [], + color: '#AABBCC', + }); + }); + + after(async () => { + await spacesServices.delete('foo-space'); + }); + + it('enabled features can be changed while the solution view remains unselected', async () => { + const securityFeatureCheckboxId = 'featureCategoryCheckbox_securitySolution'; + + await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/foo-space', { + shouldUseHashForSubUrl: false, + }); + + await testSubjects.existOrFail('spaces-view-page'); + + // ensure security feature is selected by default + expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(true); + + // Do not set a solution view first! + + await PageObjects.spaceSelector.toggleFeatureCategoryCheckbox('securitySolution'); + // + // ensure security feature now unselected + expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(false); + + await testSubjects.existOrFail('space-edit-page-user-impact-warning'); + + await PageObjects.spaceSelector.clickSaveSpaceCreation(); + + await testSubjects.click('confirmModalConfirmButton'); + + await testSubjects.existOrFail('spaces-view-page'); + + await testSubjects.click('foo-space-hyperlink'); + + await testSubjects.existOrFail('spaces-view-page'); + + // ensure security feature is still unselected + expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(false); }); }); }); diff --git a/x-pack/test/functional/apps/spaces/index.ts b/x-pack/test/functional/apps/spaces/index.ts index 3fe77a1a4528b..4a9334ab30486 100644 --- a/x-pack/test/functional/apps/spaces/index.ts +++ b/x-pack/test/functional/apps/spaces/index.ts @@ -15,5 +15,6 @@ export default function spacesApp({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./enter_space')); loadTestFile(require.resolve('./create_edit_space')); loadTestFile(require.resolve('./spaces_grid')); + loadTestFile(require.resolve('./solution_tour')); }); } diff --git a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts b/x-pack/test/functional/apps/spaces/solution_tour.ts similarity index 98% rename from x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts rename to x-pack/test/functional/apps/spaces/solution_tour.ts index ac8281f45a56e..862fe9146ee69 100644 --- a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts +++ b/x-pack/test/functional/apps/spaces/solution_tour.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import type { SolutionView, Space } from '@kbn/spaces-plugin/common'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); diff --git a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/config.ts b/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/config.ts deleted file mode 100644 index f99c2daf38960..0000000000000 --- a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/config.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrConfigProviderContext } from '@kbn/test'; - -/** - * NOTE: The solution view is currently only available in the cloud environment. - * This test suite fakes a cloud environement by setting the cloud.id and cloud.base_url - */ - -export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); - - return { - ...functionalConfig.getAll(), - testFiles: [require.resolve('.')], - kbnTestServer: { - ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - // Note: the base64 string in the cloud.id config contains the ES endpoint required in the functional tests - '--xpack.cloud.id=ftr_fake_cloud_id:aGVsbG8uY29tOjQ0MyRFUzEyM2FiYyRrYm4xMjNhYmM=', - '--xpack.cloud.base_url=https://cloud.elastic.co', - '--xpack.cloud.deployment_url=/deployments/deploymentId', - ], - }, - }; -} diff --git a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/create_edit_space.ts b/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/create_edit_space.ts deleted file mode 100644 index 8695077eae74e..0000000000000 --- a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/create_edit_space.ts +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; - -export default function ({ getPageObjects, getService }: FtrProviderContext) { - const kibanaServer = getService('kibanaServer'); - const PageObjects = getPageObjects(['common', 'settings', 'security', 'spaceSelector']); - const testSubjects = getService('testSubjects'); - const spacesService = getService('spaces'); - const find = getService('find'); - - describe('edit space', () => { - before(async () => { - await kibanaServer.savedObjects.cleanStandardList(); - }); - - after(async () => { - await kibanaServer.savedObjects.cleanStandardList(); - }); - - describe('solution view', () => { - it('does show the solution view panel', async () => { - await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { - shouldUseHashForSubUrl: false, - }); - - await testSubjects.existOrFail('spaces-view-page'); - await testSubjects.existOrFail('spaces-view-page > generalPanel'); - await testSubjects.existOrFail('spaces-view-page > navigationPanel'); - }); - - it('changes the space solution and updates the side navigation', async () => { - await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { - shouldUseHashForSubUrl: false, - }); - - // Make sure we are on the classic side nav - await testSubjects.existOrFail('mgtSideBarNav'); - await testSubjects.missingOrFail('searchSideNav'); - - // change to Enterprise Search - await PageObjects.spaceSelector.changeSolutionView('es'); - await PageObjects.spaceSelector.clickSaveSpaceCreation(); - await PageObjects.spaceSelector.confirmModal(); - - await find.waitForDeletedByCssSelector('.kibanaWelcomeLogo'); - - // Search side nav is loaded - await testSubjects.existOrFail('searchSideNav'); - await testSubjects.missingOrFail('mgtSideBarNav'); - - // change back to classic - await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { - shouldUseHashForSubUrl: false, - }); - - await testSubjects.missingOrFail('space-edit-page-user-impact-warning'); - await PageObjects.spaceSelector.changeSolutionView('classic'); - await testSubjects.existOrFail('space-edit-page-user-impact-warning'); // Warn that the change will impact other users - - await PageObjects.spaceSelector.clickSaveSpaceCreation(); - await PageObjects.spaceSelector.confirmModal(); - - await testSubjects.existOrFail('mgtSideBarNav'); - await testSubjects.missingOrFail('searchSideNav'); - }); - }); - - describe('API-created Space', () => { - before(async () => { - await spacesService.create({ - id: 'foo-space', - name: 'Foo Space', - disabledFeatures: [], - color: '#AABBCC', - }); - }); - - after(async () => { - await spacesService.delete('foo-space'); - }); - - it('enabled features can be changed while the solution view remains unselected', async () => { - const securityFeatureCheckboxId = 'featureCategoryCheckbox_securitySolution'; - - await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/foo-space', { - shouldUseHashForSubUrl: false, - }); - - await testSubjects.existOrFail('spaces-view-page'); - - // ensure security feature is selected by default - expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(true); - - // Do not set a solution view first! - - await PageObjects.spaceSelector.toggleFeatureCategoryCheckbox('securitySolution'); - // - // ensure security feature now unselected - expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(false); - - await testSubjects.existOrFail('space-edit-page-user-impact-warning'); - - await PageObjects.spaceSelector.clickSaveSpaceCreation(); - - await testSubjects.click('confirmModalConfirmButton'); - - await testSubjects.existOrFail('spaces-view-page'); - - await testSubjects.click('foo-space-hyperlink'); - - await testSubjects.existOrFail('spaces-view-page'); - - // ensure security feature is still unselected - expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(false); - }); - }); - }); -} diff --git a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/index.ts b/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/index.ts deleted file mode 100644 index 45a8f78387154..0000000000000 --- a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrProviderContext } from '../../../ftr_provider_context'; - -export default function spacesApp({ loadTestFile }: FtrProviderContext) { - describe('Spaces app (with solution view)', function spacesAppTestSuite() { - loadTestFile(require.resolve('./create_edit_space')); - loadTestFile(require.resolve('./solution_tour')); - }); -} diff --git a/x-pack/test/functional/config.base.js b/x-pack/test/functional/config.base.js index eb13de1c0c9e8..b3d2ddc1e2f78 100644 --- a/x-pack/test/functional/config.base.js +++ b/x-pack/test/functional/config.base.js @@ -401,7 +401,14 @@ export default async function ({ readConfigFile }) { indices: [ { names: ['*'], - privileges: ['create', 'read', 'view_index_metadata', 'monitor', 'create_index'], + privileges: [ + 'create', + 'read', + 'view_index_metadata', + 'monitor', + 'create_index', + 'manage', + ], }, ], }, diff --git a/x-pack/test/functional/es_archives/cases/signals/default/data.json.gz b/x-pack/test/functional/es_archives/cases/signals/default/data.json.gz index 51a1c96980e77..67b565fa091d0 100644 Binary files a/x-pack/test/functional/es_archives/cases/signals/default/data.json.gz and b/x-pack/test/functional/es_archives/cases/signals/default/data.json.gz differ diff --git a/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/data.json.gz b/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/data.json.gz index 8ee8a3250d73a..f179d2dd52c77 100644 Binary files a/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/data.json.gz and b/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/data.json.gz differ diff --git a/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/mappings.json b/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/mappings.json index 6ec0622bfce71..c852f69741874 100644 --- a/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/mappings.json +++ b/x-pack/test/functional/es_archives/cases/signals/duplicate_ids/mappings.json @@ -5,11 +5,11 @@ ".alerts-security.alerts-default": { "is_write_index": false }, - ".siem-signals-default": { + "siem-signals-default": { "is_write_index": true } }, - "index": ".siem-signals-default-000001", + "index": "siem-signals-default-000001", "mappings": { "_meta": { "aliases_version": 1, @@ -4981,8 +4981,8 @@ "settings": { "index": { "lifecycle": { - "name": ".siem-signals-default", - "rollover_alias": ".siem-signals-default" + "name": "siem-signals-default", + "rollover_alias": "siem-signals-default" }, "mapping": { "total_fields": { @@ -5001,7 +5001,7 @@ "value": { "aliases": { }, - "index": ".siem-signals-default-000002", + "index": "siem-signals-default-000002", "mappings": { "_meta": { "aliases_version": 1, @@ -9973,8 +9973,8 @@ "settings": { "index": { "lifecycle": { - "name": ".siem-signals-default", - "rollover_alias": ".siem-signals-default" + "name": "siem-signals-default", + "rollover_alias": "siem-signals-default" }, "mapping": { "total_fields": { diff --git a/x-pack/test/functional/es_archives/cases/signals/hosts_users/data.json.gz b/x-pack/test/functional/es_archives/cases/signals/hosts_users/data.json.gz index a85b74a389209..cb82021edbcc7 100644 Binary files a/x-pack/test/functional/es_archives/cases/signals/hosts_users/data.json.gz and b/x-pack/test/functional/es_archives/cases/signals/hosts_users/data.json.gz differ diff --git a/x-pack/test/functional/es_archives/cases/signals/hosts_users/mappings.json b/x-pack/test/functional/es_archives/cases/signals/hosts_users/mappings.json index 83d67d913f589..0f57f37c40fd6 100644 --- a/x-pack/test/functional/es_archives/cases/signals/hosts_users/mappings.json +++ b/x-pack/test/functional/es_archives/cases/signals/hosts_users/mappings.json @@ -5,11 +5,11 @@ ".alerts-security.alerts-default": { "is_write_index": false }, - ".siem-signals-default": { + "siem-signals-default": { "is_write_index": true } }, - "index": ".siem-signals-default-000001", + "index": "siem-signals-default-000001", "mappings": { "_meta": { "aliases_version": 1, @@ -4981,8 +4981,8 @@ "settings": { "index": { "lifecycle": { - "name": ".siem-signals-default", - "rollover_alias": ".siem-signals-default" + "name": "siem-signals-default", + "rollover_alias": "siem-signals-default" }, "mapping": { "total_fields": { diff --git a/x-pack/test/functional/services/monitoring/alerts.js b/x-pack/test/functional/services/monitoring/alerts.js index c480cc0c45c03..5e5d880da102c 100644 --- a/x-pack/test/functional/services/monitoring/alerts.js +++ b/x-pack/test/functional/services/monitoring/alerts.js @@ -10,12 +10,12 @@ export function MonitoringAlertsProvider({ getService }) { return new (class MonitoringAlerts { async deleteAlerts() { - const apiResponse = await supertest.get('/api/alerts/_find?per_page=20'); + const apiResponse = await supertest.get('/api/alerting/rules/_find?per_page=20'); const alerts = apiResponse.body.data.filter(({ consumer }) => consumer === 'monitoring'); return await Promise.all( alerts.map(async (alert) => - supertest.delete(`/api/alerts/alert/${alert.id}`).set('kbn-xsrf', 'true').expect(204) + supertest.delete(`/api/alerting/rule/${alert.id}`).set('kbn-xsrf', 'true').expect(204) ) ); } diff --git a/x-pack/test/functional_search/config.ts b/x-pack/test/functional_search/config.ts index c7708363766b0..808edc73d97a6 100644 --- a/x-pack/test/functional_search/config.ts +++ b/x-pack/test/functional_search/config.ts @@ -30,12 +30,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { }, kbnTestServer: { ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - // Note: the base64 string in the cloud.id config contains the ES endpoint required in the functional tests - '--xpack.cloud.id=ftr_fake_cloud_id:aGVsbG8uY29tOjQ0MyRFUzEyM2FiYyRrYm4xMjNhYmM=', - '--xpack.cloud.base_url=https://cloud.elastic.co', - ], + serverArgs: [...functionalConfig.get('kbnTestServer.serverArgs')], }, }; } diff --git a/x-pack/test/functional_search/tests/classic_navigation.ts b/x-pack/test/functional_search/tests/classic_navigation.ts index a290f7523f49c..118fb4b7b2a4f 100644 --- a/x-pack/test/functional_search/tests/classic_navigation.ts +++ b/x-pack/test/functional_search/tests/classic_navigation.ts @@ -26,7 +26,10 @@ export default function searchSolutionNavigation({ }); // Create a space with the search solution and navigate to its home page - ({ cleanUp, space: spaceCreated } = await spaces.create({ solution: 'classic' })); + ({ cleanUp, space: spaceCreated } = await spaces.create({ + name: 'search-classic-ftr', + solution: 'classic', + })); await browser.navigateTo(spaces.getRootUrl(spaceCreated.id)); await common.navigateToApp('enterpriseSearch'); }); diff --git a/x-pack/test/functional_search/tests/solution_navigation.ts b/x-pack/test/functional_search/tests/solution_navigation.ts index 03a4614017ba2..5517a9513ea48 100644 --- a/x-pack/test/functional_search/tests/solution_navigation.ts +++ b/x-pack/test/functional_search/tests/solution_navigation.ts @@ -14,10 +14,8 @@ export default function searchSolutionNavigation({ const { common, solutionNavigation } = getPageObjects(['common', 'solutionNavigation']); const spaces = getService('spaces'); const browser = getService('browser'); - const kibanaServer = getService('kibanaServer'); - // FLAKY: https://github.com/elastic/kibana/issues/201037 - describe.skip('Search Solution Navigation', () => { + describe('Search Solution Navigation', () => { let cleanUp: () => Promise; let spaceCreated: { id: string } = { id: '' }; @@ -28,20 +26,14 @@ export default function searchSolutionNavigation({ }); // Create a space with the search solution and navigate to its home page - ({ cleanUp, space: spaceCreated } = await spaces.create({ solution: 'es' })); + ({ cleanUp, space: spaceCreated } = await spaces.create({ + name: 'search-ftr', + solution: 'es', + })); await browser.navigateTo(spaces.getRootUrl(spaceCreated.id)); - - // canvas application is only available when installation contains canvas workpads - await kibanaServer.importExport.load( - 'x-pack/test/functional/fixtures/kbn_archiver/canvas/default' - ); }); after(async () => { - await kibanaServer.importExport.unload( - 'x-pack/test/functional/fixtures/kbn_archiver/canvas/default' - ); - // Clean up space created await cleanUp(); }); @@ -59,8 +51,6 @@ export default function searchSolutionNavigation({ await solutionNavigation.sidenav.expectLinkExists({ text: 'Search applications' }); await solutionNavigation.sidenav.expectLinkExists({ text: 'Behavioral Analytics' }); await solutionNavigation.sidenav.expectLinkExists({ text: 'Inference Endpoints' }); - await solutionNavigation.sidenav.expectLinkExists({ text: 'App Search' }); - await solutionNavigation.sidenav.expectLinkExists({ text: 'Workplace Search' }); await solutionNavigation.sidenav.expectLinkExists({ text: 'Other tools' }); }); @@ -210,38 +200,9 @@ export default function searchSolutionNavigation({ deepLinkId: 'searchInferenceEndpoints:inferenceEndpoints', }); - // check Enterprise Search - // > App Search - await solutionNavigation.sidenav.clickLink({ - deepLinkId: 'appSearch:engines', - }); - await solutionNavigation.sidenav.expectLinkActive({ - deepLinkId: 'appSearch:engines', - }); - // ent-search node not running for FTRs, so we see setup guide without breadcrumbs - // await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ - // text: 'App Search', - // }); - await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ - deepLinkId: 'appSearch:engines', - }); - // > Workplace Search - await solutionNavigation.sidenav.clickLink({ - deepLinkId: 'workplaceSearch', - }); - await solutionNavigation.sidenav.expectLinkActive({ - deepLinkId: 'workplaceSearch', - }); - // ent-search node not running for FTRs, so we see setup guide without breadcrumbs - // await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ - // text: 'Workplace Search', - // }); - await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ - deepLinkId: 'workplaceSearch', - }); - // Other tools await solutionNavigation.sidenav.openSection('search_project_nav.otherTools'); + await solutionNavigation.sidenav.expectSectionOpen('search_project_nav.otherTools'); // > Maps await solutionNavigation.sidenav.clickLink({ deepLinkId: 'maps', @@ -256,20 +217,6 @@ export default function searchSolutionNavigation({ await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ deepLinkId: 'maps', }); - // > Canvas - await solutionNavigation.sidenav.clickLink({ - deepLinkId: 'canvas', - }); - await solutionNavigation.sidenav.expectLinkActive({ - deepLinkId: 'canvas', - }); - await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Other tools' }); - await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ - text: 'Canvas', - }); - await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ - deepLinkId: 'canvas', - }); // > Graph await solutionNavigation.sidenav.clickLink({ deepLinkId: 'graph', @@ -292,6 +239,9 @@ export default function searchSolutionNavigation({ it('renders only expected items', async () => { await solutionNavigation.sidenav.openSection('search_project_nav.otherTools'); await solutionNavigation.sidenav.openSection('project_settings_project_nav'); + await solutionNavigation.sidenav.expectSectionOpen('search_project_nav.otherTools'); + await solutionNavigation.sidenav.expectSectionOpen('project_settings_project_nav'); + await solutionNavigation.sidenav.expectOnlyDefinedLinks([ 'search_project_nav', 'enterpriseSearch', @@ -309,12 +259,8 @@ export default function searchSolutionNavigation({ 'enterpriseSearchAnalytics', 'relevance', 'searchInferenceEndpoints:inferenceEndpoints', - 'entsearch', - 'appSearch:engines', - 'workplaceSearch', 'otherTools', 'maps', - 'canvas', 'graph', 'project_settings_project_nav', 'ml:modelManagement', diff --git a/x-pack/test/functional_solution_sidenav/config.ts b/x-pack/test/functional_solution_sidenav/config.ts index f997aaea7c5e2..031fb55d192b7 100644 --- a/x-pack/test/functional_solution_sidenav/config.ts +++ b/x-pack/test/functional_solution_sidenav/config.ts @@ -20,12 +20,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { testFiles: [require.resolve('.')], kbnTestServer: { ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - // Note: the base64 string in the cloud.id config contains the ES endpoint required in the functional tests - '--xpack.cloud.id=ftr_fake_cloud_id:aGVsbG8uY29tOjQ0MyRFUzEyM2FiYyRrYm4xMjNhYmM=', - '--xpack.cloud.base_url=https://cloud.elastic.co', - ], + serverArgs: [...functionalConfig.get('kbnTestServer.serverArgs')], }, }; } diff --git a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/alert_flyout.ts b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/alert_flyout.ts index 25f77cb8d41ef..8126a3e42d815 100644 --- a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/alert_flyout.ts +++ b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/alert_flyout.ts @@ -98,7 +98,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await retry.tryForTime(60 * 1000, async () => { // add a delay before next call to not overload the server await setTimeoutAsync(1500); - const apiResponse = await supertest.get('/api/alerts/_find?search=uptime-test'); + const apiResponse = await supertest.get('/api/alerting/rules/_find?search=uptime-test'); const alertsFromThisTest = apiResponse.body.data.filter( ({ name }: { name: string }) => name === 'uptime-test' ); @@ -111,7 +111,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { // for our test helper to input into the flyout. const { actions, - alertTypeId, + rule_type_id: alertTypeId, consumer, id, params: { numTimes, timerangeUnit, timerangeCount, filters }, @@ -134,7 +134,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { `{"tags":[],"url.port":["5678"],"observer.geo.name":["mpls"],"monitor.type":["http"]}` ); } finally { - await supertest.delete(`/api/alerts/alert/${id}`).set('kbn-xsrf', 'true').expect(204); + await supertest.delete(`/api/alerting/rule/${id}`).set('kbn-xsrf', 'true').expect(204); } }); }); @@ -178,7 +178,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('has created a valid alert with expected parameters', async () => { let alert: any; await retry.tryForTime(60 * 1000, async () => { - const apiResponse = await supertest.get(`/api/alerts/_find?search=${alertId}`); + const apiResponse = await supertest.get(`/api/alerting/rules/_find?search=${alertId}`); const alertsFromThisTest = apiResponse.body.data.filter( ({ name }: { name: string }) => name === alertId ); @@ -191,7 +191,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { // for our test helper to input into the flyout. const { actions, - alertTypeId, + rule_type_id: alertTypeId, consumer, id, params, @@ -206,7 +206,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { expect(params).to.eql({}); expect(interval).to.eql('11m'); } finally { - await supertest.delete(`/api/alerts/alert/${id}`).set('kbn-xsrf', 'true').expect(204); + await supertest.delete(`/api/alerting/rule/${id}`).set('kbn-xsrf', 'true').expect(204); } }); }); diff --git a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts index e5efd66060e31..d1c4c2c7742fd 100644 --- a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts +++ b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts @@ -83,7 +83,9 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('has created a valid simple alert with expected parameters', async () => { let alert: any; await retry.tryForTime(15000, async () => { - const apiResponse = await supertest.get(`/api/alerts/_find?search=Simple status alert`); + const apiResponse = await supertest.get( + `/api/alerting/rules/_find?search=Simple status alert` + ); const alertsFromThisTest = apiResponse.body.data.filter(({ params }: { params: any }) => params.search.includes(monitorId) ); @@ -91,10 +93,10 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { alert = alertsFromThisTest[0]; }); - const { actions, alertTypeId, consumer, tags } = alert ?? {}; + const { actions, rule_type_id: alertTypeId, consumer, tags } = alert ?? {}; expect(actions).to.eql([ { - actionTypeId: '.slack', + connector_type_id: '.slack', group: 'recovered', params: { message: MonitorStatusTranslations.defaultRecoveryMessage, @@ -103,7 +105,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { uuid: actions[0].uuid, }, { - actionTypeId: '.slack', + connector_type_id: '.slack', group: 'xpack.uptime.alerts.actionGroups.monitorStatus', params: { message: MonitorStatusTranslations.defaultActionMessage, diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/general.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/general.ts index 25e6e169ec4a4..1e0123f7e9741 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/general.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/general.ts @@ -321,7 +321,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex }, supertest ); - objectRemover.add(rule.id, 'alert', 'alerts'); + objectRemover.add(rule.id, 'rule', 'alerting'); // refresh to see rule await browser.refresh(); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/slack.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/slack.ts index a7ea6aef95c8a..6e89bcf411121 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/slack.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/slack.ts @@ -115,7 +115,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const getRuleIdByName = async (name: string) => { const response = await supertest - .get(`/api/alerts/_find?search=${name}&search_fields=name`) + .get(`/api/alerting/rules/_find?search=${name}&search_fields=name`) .expect(200); return response.body.data[0].id; }; diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts index 56150e5693a39..ebe0007b1a4ef 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts @@ -47,7 +47,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { .set('kbn-xsrf', 'foo') .send(getTestAlertData(overwrites)) .expect(200); - objectRemover.add(createdRule.id, 'alert', 'alerts'); + objectRemover.add(createdRule.id, 'rule', 'alerting'); return createdRule; } @@ -62,7 +62,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }) ) .expect(200); - objectRemover.add(createdRule.id, 'alert', 'alerts'); + objectRemover.add(createdRule.id, 'rule', 'alerting'); return createdRule; } diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/rules_list.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/rules_list.ts index a9de637cd691a..b73659839c9e3 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/rules_list.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/rules_list.ts @@ -223,7 +223,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex ) .expect(200); - objectRemover.add(createdRule.id, 'alert', 'alerts'); + objectRemover.add(createdRule.id, 'rule', 'alerting'); await retry.try(async () => { const { alerts: alertInstances } = await getAlertSummary(createdRule.id); @@ -265,7 +265,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex ) .expect(200); - objectRemover.add(createdRule.id, 'alert', 'alerts'); + objectRemover.add(createdRule.id, 'rule', 'alerting'); await retry.try(async () => { const { alerts: alertInstances } = await getAlertSummary(createdRule.id); diff --git a/x-pack/test/functional_with_es_ssl/lib/alert_api_actions.ts b/x-pack/test/functional_with_es_ssl/lib/alert_api_actions.ts index 09b875b43a359..72e1521b4f613 100644 --- a/x-pack/test/functional_with_es_ssl/lib/alert_api_actions.ts +++ b/x-pack/test/functional_with_es_ssl/lib/alert_api_actions.ts @@ -51,7 +51,7 @@ export async function createAlert({ overwrites?: Record; }) { const createdAlert = await createAlertManualCleanup({ supertest, overwrites }); - objectRemover.add(createdAlert.id, 'alert', 'alerts'); + objectRemover.add(createdAlert.id, 'rule', 'alerting'); return createdAlert; } diff --git a/x-pack/test/observability_ai_assistant_api_integration/tests/chat/chat.spec.ts b/x-pack/test/observability_ai_assistant_api_integration/tests/chat/chat.spec.ts index b1865f944f6a1..04139a574a216 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/tests/chat/chat.spec.ts +++ b/x-pack/test/observability_ai_assistant_api_integration/tests/chat/chat.spec.ts @@ -137,57 +137,6 @@ export default function ApiTest({ getService }: FtrProviderContext) { ]); }); - it.skip('returns a useful error if the request fails', async () => { - const interceptor = proxy.intercept('conversation', () => true); - - const passThrough = new PassThrough(); - - supertest - .post(CHAT_API_URL) - .set('kbn-xsrf', 'foo') - .send({ - name: 'my_api_call', - messages, - connectorId, - functions: [], - scopes: ['all'], - }) - .expect(200) - .pipe(passThrough); - - let data: string = ''; - - passThrough.on('data', (chunk) => { - data += chunk.toString('utf-8'); - }); - - const simulator = await interceptor.waitForIntercept(); - - await simulator.status(400); - - await simulator.rawWrite( - JSON.stringify({ - error: { - code: 'context_length_exceeded', - message: - "This model's maximum context length is 8192 tokens. However, your messages resulted in 11036 tokens. Please reduce the length of the messages.", - param: 'messages', - type: 'invalid_request_error', - }, - }) - ); - - await simulator.rawEnd(); - - await new Promise((resolve) => passThrough.on('end', () => resolve())); - - const response = JSON.parse(data.trim()); - - expect(response.error.message).to.be( - `Token limit reached. Token limit is 8192, but the current conversation has 11036 tokens.` - ); - }); - describe('security roles and access privileges', () => { it('should deny access for users without the ai_assistant privilege', async () => { try { diff --git a/x-pack/test/observability_ai_assistant_api_integration/tests/complete/functions/alerts.spec.ts b/x-pack/test/observability_ai_assistant_api_integration/tests/complete/functions/alerts.spec.ts new file mode 100644 index 0000000000000..60c28aab6781b --- /dev/null +++ b/x-pack/test/observability_ai_assistant_api_integration/tests/complete/functions/alerts.spec.ts @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { MessageRole, MessageAddEvent } from '@kbn/observability-ai-assistant-plugin/common'; +import expect from '@kbn/expect'; +import { LlmProxy, createLlmProxy } from '../../../common/create_llm_proxy'; +import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { getMessageAddedEvents, invokeChatCompleteWithFunctionRequest } from './helpers'; +import { + createProxyActionConnector, + deleteActionConnector, +} from '../../../common/action_connectors'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const log = getService('log'); + const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantAPIClient'); + + describe('when calling the alerts function', () => { + let proxy: LlmProxy; + let connectorId: string; + let alertsEvents: MessageAddEvent[]; + + const start = 'now-100h'; + const end = 'now'; + + before(async () => { + proxy = await createLlmProxy(log); + connectorId = await createProxyActionConnector({ supertest, log, port: proxy.getPort() }); + + void proxy + .intercept('conversation', () => true, 'Hello from LLM Proxy') + .completeAfterIntercept(); + + const alertsResponseBody = await invokeChatCompleteWithFunctionRequest({ + connectorId, + observabilityAIAssistantAPIClient, + functionCall: { + name: 'alerts', + trigger: MessageRole.Assistant, + arguments: JSON.stringify({ start, end }), + }, + }); + + await proxy.waitForAllInterceptorsSettled(); + + alertsEvents = getMessageAddedEvents(alertsResponseBody); + }); + + after(async () => { + proxy.close(); + await deleteActionConnector({ supertest, connectorId, log }); + }); + + // This test ensures that invoking the alerts function does not result in an error. + it('should execute the function without any errors', async () => { + const alertsFunctionResponse = alertsEvents[0]; + expect(alertsFunctionResponse.message.message.name).to.be('alerts'); + + const parsedAlertsResponse = JSON.parse(alertsFunctionResponse.message.message.content!); + + expect(parsedAlertsResponse).not.to.have.property('error'); + expect(parsedAlertsResponse).to.have.property('total'); + expect(parsedAlertsResponse).to.have.property('alerts'); + expect(parsedAlertsResponse.alerts).to.be.an('array'); + expect(parsedAlertsResponse.total).to.be(0); + expect(parsedAlertsResponse.alerts.length).to.be(0); + }); + }); +} diff --git a/x-pack/test/observability_functional/apps/observability/index.ts b/x-pack/test/observability_functional/apps/observability/index.ts index f061fe68649d5..dce84cee32dfa 100644 --- a/x-pack/test/observability_functional/apps/observability/index.ts +++ b/x-pack/test/observability_functional/apps/observability/index.ts @@ -17,6 +17,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./pages/alerts/rule_stats')); loadTestFile(require.resolve('./pages/alerts/state_synchronization')); loadTestFile(require.resolve('./pages/alerts/table_storage')); + loadTestFile(require.resolve('./pages/alerts/custom_threshold_preview_chart')); loadTestFile(require.resolve('./pages/alerts/custom_threshold')); loadTestFile(require.resolve('./pages/cases/case_details')); loadTestFile(require.resolve('./pages/overview/alert_table')); diff --git a/x-pack/test/observability_functional/apps/observability/pages/alerts/custom_threshold_preview_chart.ts b/x-pack/test/observability_functional/apps/observability/pages/alerts/custom_threshold_preview_chart.ts new file mode 100644 index 0000000000000..6bc0564c711c1 --- /dev/null +++ b/x-pack/test/observability_functional/apps/observability/pages/alerts/custom_threshold_preview_chart.ts @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from 'expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default ({ getService, getPageObject }: FtrProviderContext) => { + const common = getPageObject('common'); + const esArchiver = getService('esArchiver'); + const testSubjects = getService('testSubjects'); + const kibanaServer = getService('kibanaServer'); + const supertest = getService('supertest'); + const find = getService('find'); + const logger = getService('log'); + const retry = getService('retry'); + + describe('Custom threshold preview chart', () => { + const observability = getService('observability'); + const DATA_VIEW_1 = 'metricbeat-*'; + const DATA_VIEW_1_ID = 'data-view-id_1'; + const DATA_VIEW_1_NAME = 'test-data-view-name_1'; + + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'); + await observability.alerts.common.createDataView({ + supertest, + name: DATA_VIEW_1_NAME, + id: DATA_VIEW_1_ID, + title: DATA_VIEW_1, + logger, + }); + await observability.alerts.common.navigateToRulesPage(); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs'); + // This also deletes the created data views + await kibanaServer.savedObjects.cleanStandardList(); + }); + + it('does render the empty chart only once at bootstrap', async () => { + await observability.alerts.rulesPage.clickCreateRuleButton(); + await observability.alerts.rulesPage.clickOnObservabilityCategory(); + await observability.alerts.rulesPage.clickOnCustomThresholdRule(); + await common.sleep(1000); + expect(await find.existsByCssSelector('[data-rendering-count="2"]')).toBe(true); + }); + + it('does render the correct error message', async () => { + await testSubjects.setValue('ruleNameInput', 'test custom threshold rule'); + + await testSubjects.click('customEquation'); + const customEquationField = await find.byCssSelector( + '[data-test-subj="thresholdRuleCustomEquationEditorFieldText"]' + ); + await customEquationField.click(); + // set an invalid equation + await customEquationField.type('A + '); + + await testSubjects.click('o11yClosablePopoverTitleButton'); + + await testSubjects.existOrFail('embeddable-lens-failure'); + const el = await find.byCssSelector('[data-test-subj="embeddable-lens-failure"] p'); + const textContent = await el.getVisibleText(); + expect(textContent).toBe('An error occurred while rendering the chart'); + }); + + it('does render the chart after fixing the error', async () => { + await testSubjects.click('customEquation'); + const customEquationField = await find.byCssSelector( + '[data-test-subj="thresholdRuleCustomEquationEditorFieldText"]' + ); + await customEquationField.click(); + // fix the equation + await customEquationField.type('A'); + await testSubjects.click('o11yClosablePopoverTitleButton'); + + // check no error is visible + await testSubjects.missingOrFail('embeddable-lens-failure'); + await retry.waitFor('Chart rendered correctly', () => { + return find.existsByCssSelector('[data-render-complete="true"]'); + }); + }); + }); +}; diff --git a/x-pack/test/plugin_api_integration/config.ts b/x-pack/test/plugin_api_integration/config.ts index 896b2c41ca1bc..8f145b346d402 100644 --- a/x-pack/test/plugin_api_integration/config.ts +++ b/x-pack/test/plugin_api_integration/config.ts @@ -34,8 +34,6 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { '--xpack.eventLog.logEntries=true', '--xpack.eventLog.indexEntries=true', '--xpack.task_manager.monitored_aggregated_stats_refresh_rate=5000', - '--xpack.task_manager.ephemeral_tasks.enabled=false', - '--xpack.task_manager.ephemeral_tasks.request_capacity=100', `--xpack.stack_connectors.enableExperimental=${JSON.stringify([ 'crowdstrikeConnectorOn', 'inferenceConnectorOn', diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts index c5927d894911c..89a75eba663a0 100644 --- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts +++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts @@ -216,45 +216,6 @@ export function initRoutes( } ); - router.post( - { - path: `/api/sample_tasks/ephemeral_run_now`, - validate: { - body: schema.object({ - task: schema.object({ - taskType: schema.string(), - state: schema.recordOf(schema.string(), schema.any()), - params: schema.recordOf(schema.string(), schema.any()), - }), - }), - }, - }, - async function ( - context: RequestHandlerContext, - req: KibanaRequest< - any, - any, - { - task: { - taskType: string; - params: Record; - state: Record; - }; - }, - any - >, - res: KibanaResponseFactory - ): Promise> { - const { task } = req.body; - try { - const taskManager = await taskManagerStart; - return res.ok({ body: await taskManager.ephemeralRunNow(task) }); - } catch (err) { - return res.ok({ body: { task, error: `${err}` } }); - } - } - ); - router.post( { path: `/api/sample_tasks/ensure_scheduled`, diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts index 809f7307ab8aa..9604ad6732e58 100644 --- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts +++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts @@ -15,7 +15,6 @@ import { TaskManagerSetupContract, TaskManagerStartContract, ConcreteTaskInstance, - EphemeralTask, } from '@kbn/task-manager-plugin/server'; import { DEFAULT_MAX_WORKERS } from '@kbn/task-manager-plugin/server/config'; import { getDeleteTaskRunResult, TaskPriority } from '@kbn/task-manager-plugin/server/task'; @@ -40,8 +39,6 @@ export class SampleTaskManagerFixturePlugin const taskTestingEvents = new EventEmitter(); taskTestingEvents.setMaxListeners(DEFAULT_MAX_WORKERS * 2); - const tmStart = this.taskManagerStart; - const defaultSampleTaskConfig = { timeout: '1m', // This task allows tests to specify its behavior (whether it reschedules itself, whether it errors, etc) @@ -345,37 +342,6 @@ export class SampleTaskManagerFixturePlugin 'A task that can only have two concurrent instance and tracks its execution timing.', ...taskWithTiming, }, - taskWhichExecutesOtherTasksEphemerally: { - title: 'Task Which Executes Other Tasks Ephemerally', - description: 'A sample task used to validate how ephemeral tasks are executed.', - maxAttempts: 1, - timeout: '60s', - createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => ({ - async run() { - const { - params: { tasks = [] }, - } = taskInstance; - - const tm = await tmStart; - const executions = await Promise.all( - (tasks as EphemeralTask[]).map(async (task) => { - return tm - .ephemeralRunNow(task) - .then((result) => ({ - result, - })) - .catch((error) => ({ - error, - })); - }) - ); - - return { - state: { executions }, - }; - }, - }), - }, }); taskManager.addMiddleware({ diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts index e8e24f53551e8..4242048d00664 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts @@ -30,7 +30,6 @@ export default function ({ getService }: FtrProviderContext) { 'sampleTaskWithLimitedConcurrency', 'sampleTaskWithSingleConcurrency', 'singleAttemptSampleTask', - 'taskWhichExecutesOtherTasksEphemerally', 'timedTask', 'timedTaskWithLimitedConcurrency', 'timedTaskWithSingleConcurrency', @@ -164,6 +163,7 @@ export default function ({ getService }: FtrProviderContext) { 'security-solution-ea-asset-criticality-ecs-migration', 'security:endpoint-diagnostics', 'security:endpoint-meta-telemetry', + 'security:indices-metadata-telemetry', 'security:telemetry-configuration', 'security:telemetry-detection-rules', 'security:telemetry-diagnostic-timelines', diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/health_route.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/health_route.ts index 8aba3d1624730..d27e339487584 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/health_route.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/health_route.ts @@ -302,7 +302,6 @@ export default function ({ getService }: FtrProviderContext) { expect(typeof execution.duration.sampleTask.p95).to.eql('number'); expect(typeof execution.duration.sampleTask.p99).to.eql('number'); - expect(typeof execution.persistence.ephemeral).to.eql('number'); expect(typeof execution.persistence.non_recurring).to.eql('number'); expect(typeof execution.persistence.recurring).to.eql('number'); diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/metrics_route.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/metrics_route.ts index 50568fe1c206c..b456e35d5d673 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/metrics_route.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/metrics_route.ts @@ -301,7 +301,7 @@ export default function ({ getService }: FtrProviderContext) { // update apiKey to fix decryption error await request - .post(`/api/alerts/alert/${ruleId}/_update_api_key`) + .post(`/api/alerting/rule/${ruleId}/_update_api_key`) .set('kbn-xsrf', 'xxx') .expect(204); diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts index d291e6cfb7103..34ef9c2481bc1 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts @@ -197,20 +197,6 @@ export default function ({ getService }: FtrProviderContext) { .then((response: { body: BulkUpdateTaskResult }) => response.body); } - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // function runEphemeralTaskNow(task: { - // taskType: string; - // params: Record; - // state: Record; - // }) { - // return supertest - // .post('/api/sample_tasks/ephemeral_run_now') - // .set('kbn-xsrf', 'xxx') - // .send({ task }) - // .expect(200) - // .then((response) => response.body); - // } - function scheduleTaskIfNotExists(task: Partial) { return supertest .post('/api/sample_tasks/ensure_scheduled') @@ -919,196 +905,6 @@ export default function ({ getService }: FtrProviderContext) { expect(task.runAt).to.eql(scheduledRunAt); }); }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('should return the resulting task state when asked to run an ephemeral task now', async () => { - // const ephemeralTask = await runEphemeralTaskNow({ - // taskType: 'sampleTask', - // params: {}, - // state: {}, - // }); - - // await retry.try(async () => { - // expect( - // (await historyDocs()).filter((taskDoc) => taskDoc._source.taskId === ephemeralTask.id) - // .length - // ).to.eql(1); - - // expect(ephemeralTask.state.count).to.eql(1); - // }); - - // const secondEphemeralTask = await runEphemeralTaskNow({ - // taskType: 'sampleTask', - // params: {}, - // // pass state from previous ephemeral run as input for the second run - // state: ephemeralTask.state, - // }); - - // // ensure state is cumulative - // expect(secondEphemeralTask.state.count).to.eql(2); - - // await retry.try(async () => { - // // ensure new id is produced for second task execution - // expect( - // (await historyDocs()).filter((taskDoc) => taskDoc._source.taskId === ephemeralTask.id) - // .length - // ).to.eql(1); - // expect( - // (await historyDocs()).filter( - // (taskDoc) => taskDoc._source.taskId === secondEphemeralTask.id - // ).length - // ).to.eql(1); - // }); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Epheemral task run should only run one instance of a task if its maxConcurrency is 1', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: [ - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // ], - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with any other task - // 0 - // ); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Ephemeral task run should only run as many instances of a task as its maxConcurrency will allow', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: [ - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // ], - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with, at most, 1 other task - // 1 - // ); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Ephemeral task executions cant exceed the max workes in Task Manager', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: times(20, () => ({ - // taskType: 'timedTask', - // params: { delay: 100 }, - // state: {}, - // })), - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with, at most, 9 other tasks (as max workes is 10) - // 9 - // ); - // }); }); // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 diff --git a/x-pack/test/rule_registry/common/lib/helpers/create_alert.ts b/x-pack/test/rule_registry/common/lib/helpers/create_alert.ts index 40d43ac80d210..b758ac4b1a041 100644 --- a/x-pack/test/rule_registry/common/lib/helpers/create_alert.ts +++ b/x-pack/test/rule_registry/common/lib/helpers/create_alert.ts @@ -17,7 +17,7 @@ export const createAlert = async ( ) => { const supertest = getService('supertestWithoutAuth'); const { body: response, status } = await supertest - .post(`${getSpaceUrlPrefix(spaceId)}/api/alerts/alert`) + .post(`${getSpaceUrlPrefix(spaceId)}/api/alerting/rule`) .auth(user.username, user.password) .send(alertDef) .set('kbn-xsrf', 'foo'); diff --git a/x-pack/test/rule_registry/common/lib/helpers/delete_alert.ts b/x-pack/test/rule_registry/common/lib/helpers/delete_alert.ts index 209b182a958c5..b373d0ffe8667 100644 --- a/x-pack/test/rule_registry/common/lib/helpers/delete_alert.ts +++ b/x-pack/test/rule_registry/common/lib/helpers/delete_alert.ts @@ -22,7 +22,7 @@ export const deleteAlert = async ( const { body: targetIndices } = await getAlertsTargetIndices(getService, user, spaceId); if (id) { const { body, status } = await supertest - .delete(`${getSpaceUrlPrefix(spaceId)}/api/alerts/alert/${id}`) + .delete(`${getSpaceUrlPrefix(spaceId)}/api/alerting/rule/${id}`) .auth(user.username, user.password) .set('kbn-xsrf', 'foo'); diff --git a/x-pack/test/rule_registry/common/lib/helpers/wait_until_next_execution.ts b/x-pack/test/rule_registry/common/lib/helpers/wait_until_next_execution.ts index 73e15c6cdbaeb..08613ba2c143d 100644 --- a/x-pack/test/rule_registry/common/lib/helpers/wait_until_next_execution.ts +++ b/x-pack/test/rule_registry/common/lib/helpers/wait_until_next_execution.ts @@ -27,7 +27,7 @@ export async function waitUntilNextExecution( }); const { body, status } = await supertest - .get(`${getSpaceUrlPrefix(spaceId)}/api/alerts/alert/${alert.id}`) + .get(`${getSpaceUrlPrefix(spaceId)}/api/alerting/rule/${alert.id}`) .auth(user.username, user.password) .set('kbn-xsrf', 'foo'); diff --git a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/_find.ts b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/_find.ts index 2ce44324f9bfe..7209af7343d1e 100644 --- a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/_find.ts +++ b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/_find.ts @@ -80,8 +80,9 @@ export default function (ftrContext: FtrProviderContext) { USERS.DEFAULT_SPACE_DASHBOARD_READ_USER, USERS.DEFAULT_SPACE_VISUALIZE_READ_USER, USERS.DEFAULT_SPACE_MAPS_READ_USER, + USERS.DEFAULT_SPACE_ADVANCED_SETTINGS_READ_USER, ], - noResults: [USERS.DEFAULT_SPACE_ADVANCED_SETTINGS_READ_USER], + noResults: [], unauthorized: [USERS.NOT_A_KIBANA_USER], }; diff --git a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get.ts b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get.ts index 25debcb2cc538..9348e458652e7 100644 --- a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get.ts +++ b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get.ts @@ -69,7 +69,7 @@ export default function (ftrContext: FtrProviderContext) { USERS.DEFAULT_SPACE_VISUALIZE_READ_USER, USERS.DEFAULT_SPACE_MAPS_READ_USER, ], - unauthorized: [USERS.NOT_A_KIBANA_USER, USERS.DEFAULT_SPACE_ADVANCED_SETTINGS_READ_USER], + unauthorized: [USERS.NOT_A_KIBANA_USER], }; const createUserTest = ( diff --git a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get_all.ts b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get_all.ts index 124fcea644c79..2d344a7179d9c 100644 --- a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get_all.ts +++ b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get_all.ts @@ -86,7 +86,7 @@ export default function (ftrContext: FtrProviderContext) { USERS.DEFAULT_SPACE_VISUALIZE_READ_USER, USERS.DEFAULT_SPACE_MAPS_READ_USER, ], - unauthorized: [USERS.NOT_A_KIBANA_USER, USERS.DEFAULT_SPACE_ADVANCED_SETTINGS_READ_USER], + unauthorized: [USERS.NOT_A_KIBANA_USER], }; const createUserTest = ( diff --git a/x-pack/test/security_solution_api_integration/config/ess/config.base.ts b/x-pack/test/security_solution_api_integration/config/ess/config.base.ts index 25b7a40c9701e..8314b841e2533 100644 --- a/x-pack/test/security_solution_api_integration/config/ess/config.base.ts +++ b/x-pack/test/security_solution_api_integration/config/ess/config.base.ts @@ -5,6 +5,8 @@ * 2.0. */ +import path from 'path'; + import { CA_CERT_PATH } from '@kbn/dev-utils'; import { FtrConfigProviderContext, kbnTestConfig, kibanaTestUser } from '@kbn/test'; import { services as baseServices } from './services'; @@ -86,6 +88,11 @@ export function createTestConfig(options: CreateTestConfigOptions, testFiles?: s 'riskScoringRoutesEnabled', 'alertSuppressionForSequenceEqlRuleEnabled', ])}`, + `--plugin-path=${path.resolve( + __dirname, + '../../../../../test/analytics/plugins/analytics_ftr_helpers' + )}`, + '--xpack.task_manager.poll_interval=1000', `--xpack.actions.preconfigured=${JSON.stringify(PRECONFIGURED_ACTION_CONNECTORS)}`, ...(ssl diff --git a/x-pack/test/security_solution_api_integration/config/ess/services.ts b/x-pack/test/security_solution_api_integration/config/ess/services.ts index e5f66d5c1928a..80d88350e6dd2 100644 --- a/x-pack/test/security_solution_api_integration/config/ess/services.ts +++ b/x-pack/test/security_solution_api_integration/config/ess/services.ts @@ -5,12 +5,14 @@ * 2.0. */ +import { KibanaEBTServerProvider } from '@kbn/test-suites-src/analytics/services/kibana_ebt'; +import { SecuritySolutionESSUtils } from '../services/security_solution_ess_utils'; import { SpacesServiceProvider } from '../../../common/services/spaces'; import { services as essServices } from '../../../api_integration/services'; -import { SecuritySolutionESSUtils } from '../services/security_solution_ess_utils'; export const services = { ...essServices, spaces: SpacesServiceProvider, securitySolutionUtils: SecuritySolutionESSUtils, + kibana_ebt_server: KibanaEBTServerProvider, }; diff --git a/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts b/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts index c2371984512e1..8d3bea36a968b 100644 --- a/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts +++ b/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts @@ -4,6 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import path from 'path'; + import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; import { PRECONFIGURED_ACTION_CONNECTORS } from '../shared'; @@ -13,6 +15,7 @@ export interface CreateTestConfigOptions { junit: { reportName: string }; kbnTestServerArgs?: string[]; kbnTestServerEnv?: Record; + suiteTags?: { include?: string[]; exclude?: string[] }; } export function createTestConfig(options: CreateTestConfigOptions) { @@ -22,6 +25,7 @@ export function createTestConfig(options: CreateTestConfigOptions) { ); return { ...svlSharedConfig.getAll(), + suiteTags: options.suiteTags, services: { ...services, }, @@ -32,6 +36,10 @@ export function createTestConfig(options: CreateTestConfigOptions) { '--serverless=security', `--xpack.actions.preconfigured=${JSON.stringify(PRECONFIGURED_ACTION_CONNECTORS)}`, ...(options.kbnTestServerArgs || []), + `--plugin-path=${path.resolve( + __dirname, + '../../../../../test/analytics/plugins/analytics_ftr_helpers' + )}`, ], env: { ...svlSharedConfig.get('kbnTestServer.env'), diff --git a/x-pack/test/security_solution_api_integration/config/serverless/services.ts b/x-pack/test/security_solution_api_integration/config/serverless/services.ts index a7e9be3588842..bfef9e1d4424b 100644 --- a/x-pack/test/security_solution_api_integration/config/serverless/services.ts +++ b/x-pack/test/security_solution_api_integration/config/serverless/services.ts @@ -7,6 +7,7 @@ import { SearchSecureService } from '@kbn/test-suites-serverless/shared/services/search_secure'; import { services as serverlessServices } from '@kbn/test-suites-serverless/api_integration/services'; +import { KibanaEBTServerProvider } from '@kbn/test-suites-src/analytics/services/kibana_ebt'; import { SpacesServiceProvider } from '../../../common/services/spaces'; import { SecuritySolutionServerlessUtils } from '../services/security_solution_serverless_utils'; import { SecuritySolutionServerlessSuperTest } from '../services/security_solution_serverless_supertest'; @@ -17,4 +18,5 @@ export const services = { secureSearch: SearchSecureService, securitySolutionUtils: SecuritySolutionServerlessUtils, supertest: SecuritySolutionServerlessSuperTest, + kibana_ebt_server: KibanaEBTServerProvider, }; diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/ess_specific_index_logic/migrations/delete_alerts_migrations.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/ess_specific_index_logic/migrations/delete_alerts_migrations.ts index 85911fc8ef7de..13c8ffc3c8ad0 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/ess_specific_index_logic/migrations/delete_alerts_migrations.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/ess_specific_index_logic/migrations/delete_alerts_migrations.ts @@ -13,7 +13,7 @@ import { DETECTION_ENGINE_SIGNALS_MIGRATION_URL, } from '@kbn/security-solution-plugin/common/constants'; import { ROLES } from '@kbn/security-solution-plugin/common/test'; -import { deleteMigrations, getIndexNameFromLoad } from '../../../../../utils'; +import { deleteMigrationsIfExistent, getIndexNameFromLoad } from '../../../../../utils'; import { createAlertsIndex, deleteAllAlerts, @@ -84,10 +84,12 @@ export default ({ getService }: FtrProviderContext): void => { afterEach(async () => { await esArchiver.unload('x-pack/test/functional/es_archives/signals/outdated_signals_index'); - await deleteMigrations({ + await deleteMigrationsIfExistent({ kbnClient, ids: [createdMigration.migration_id], }); + // we need to delete migrated index, otherwise create migration call(in beforeEach hook) will fail + await es.indices.delete({ index: createdMigration.migration_index }); await deleteAllAlerts(supertest, log, es); }); @@ -99,6 +101,7 @@ export default ({ getService }: FtrProviderContext): void => { .expect(200); const deletedMigration = body.migrations[0]; + expect(deletedMigration.error).to.eql(undefined); expect(deletedMigration.id).to.eql(createdMigration.migration_id); expect(deletedMigration.sourceIndex).to.eql(outdatedAlertsIndexName); }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/eql_alert_suppression.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/eql_alert_suppression.ts index 71403ad7a3728..2cf9c439b21c4 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/eql_alert_suppression.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/eql_alert_suppression.ts @@ -1965,7 +1965,7 @@ export default ({ getService }: FtrProviderContext) => { // the second sequence alert will have null as the value for // suppression field host.name because of logic defined in the // objectPairIntersection function defined in - // x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts + // x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts await indexListOfSourceDocuments([ doc1, @@ -2064,7 +2064,7 @@ export default ({ getService }: FtrProviderContext) => { // sequence alert 2 will be doc1WithLaterTimestamp and doc2WithNoHost // sequence alert 3 will be doc2WithNoHost and doc3WithNoHost // This logic is defined in objectPairIntersection - // x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts + // x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts // Any sequence comprised of events where one field contains a value, followed by any number of // events in the sequence where the value is null or undefined will have that field // stripped from the sequence alert. So given that, we expect three alerts here @@ -2275,7 +2275,7 @@ export default ({ getService }: FtrProviderContext) => { it('does not suppress alerts when "doNotSuppress" is set and suppression field value is undefined for a sequence alert in a given rule execution', async () => { // This logic should be understood within the confines of the // objectPairIntersection function defined in - // x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts + // x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_alert_group_from_sequence.ts // Any sequence comprised of events where one field contains a value, followed by any number of // events in the sequence where the value is null or undefined will have that field // stripped from the sequence alert. So given that, we expect three alerts here diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/bootstrap_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/bootstrap_prebuilt_rules.ts index 97287ef0cdb93..a437561ef0a04 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/bootstrap_prebuilt_rules.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/bootstrap_prebuilt_rules.ts @@ -18,7 +18,8 @@ export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); const securitySolutionApi = getService('securitySolutionApi'); - describe('@ess @serverless @skipInServerlessMKI Bootstrap Prebuilt Rules', () => { + // FLAKY: https://github.com/elastic/kibana/issues/203632 + describe.skip('@ess @serverless @skipInServerlessMKI Bootstrap Prebuilt Rules', () => { beforeEach(async () => { await deletePrebuiltRulesFleetPackage(supertest); await deleteEndpointFleetPackage(supertest); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.eql_query_fields.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.eql_query_fields.ts index eef3e4b6b7ce4..6c49f8722abd4 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.eql_query_fields.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.eql_query_fields.ts @@ -80,6 +80,46 @@ export default ({ getService }: FtrProviderContext): void => { expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); }); + + it('should trim all whitespace before version comparison', async () => { + // Install base prebuilt detection rule + await createHistoricalPrebuiltRuleAssetSavedObjects(es, getRuleAssetSavedObjects()); + await installPrebuiltRules(es, supertest); + + // Customize an eql_query field on the installed rule + await updateRule(supertest, { + ...getPrebuiltRuleMock(), + rule_id: 'rule-1', + type: 'eql', + query: '\nquery where true\n', + language: 'eql', + filters: [], + } as RuleUpdateProps); + + // Add a v2 rule asset to make the upgrade possible, do NOT update the related eql_query field, and create the new rule assets + const updatedRuleAssetSavedObjects = [ + createRuleAssetSavedObject({ + rule_id: 'rule-1', + version: 2, + type: 'eql', + query: '\nquery where true', + language: 'eql', + filters: [], + }), + ]; + await createHistoricalPrebuiltRuleAssetSavedObjects(es, updatedRuleAssetSavedObjects); + + // Call the upgrade review prebuilt rules endpoint and check that there is 1 rule eligible for update but eql_query field is NOT returned + const reviewResponse = await reviewPrebuiltRulesToUpgrade(supertest); + const fieldDiffObject = reviewResponse.rules[0].diff.fields as AllFieldsDiff; + expect(fieldDiffObject.eql_query).toBeUndefined(); + + expect(reviewResponse.rules[0].diff.num_fields_with_updates).toBe(1); // `version` is considered an updated field + expect(reviewResponse.rules[0].diff.num_fields_with_conflicts).toBe(0); + expect(reviewResponse.rules[0].diff.num_fields_with_non_solvable_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); + }); }); describe("when rule field doesn't have an update but has a custom value - scenario ABA", () => { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.esql_query_fields.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.esql_query_fields.ts index 9561393e84549..d8329ce023ea6 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.esql_query_fields.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.esql_query_fields.ts @@ -78,6 +78,44 @@ export default ({ getService }: FtrProviderContext): void => { expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); }); + + it('should trim all whitespace before version comparison', async () => { + // Install base prebuilt detection rule + await createHistoricalPrebuiltRuleAssetSavedObjects(es, getRuleAssetSavedObjects()); + await installPrebuiltRules(es, supertest); + + // Customize an esql_query field on the installed rule + await updateRule(supertest, { + ...getPrebuiltRuleMock(), + rule_id: 'rule-1', + type: 'esql', + query: '\tFROM query WHERE true\t', + language: 'esql', + } as RuleUpdateProps); + + // Add a v2 rule asset to make the upgrade possible, do NOT update the related esql_query field, and create the new rule assets + const updatedRuleAssetSavedObjects = [ + createRuleAssetSavedObject({ + rule_id: 'rule-1', + version: 2, + type: 'esql', + query: '\n\nFROM query WHERE true\n\n', + language: 'esql', + }), + ]; + await createHistoricalPrebuiltRuleAssetSavedObjects(es, updatedRuleAssetSavedObjects); + + // Call the upgrade review prebuilt rules endpoint and check that there is 1 rule eligible for update but esql_query field is NOT returned + const reviewResponse = await reviewPrebuiltRulesToUpgrade(supertest); + const fieldDiffObject = reviewResponse.rules[0].diff.fields as AllFieldsDiff; + expect(fieldDiffObject.esql_query).toBeUndefined(); + + expect(reviewResponse.rules[0].diff.num_fields_with_updates).toBe(1); // `version` is considered an updated field + expect(reviewResponse.rules[0].diff.num_fields_with_conflicts).toBe(0); + expect(reviewResponse.rules[0].diff.num_fields_with_non_solvable_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); + }); }); describe("when rule field doesn't have an update but has a custom value - scenario ABA", () => { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.kql_query_fields.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.kql_query_fields.ts index e8f9d2f48b9e0..d00d2d842f2ba 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.kql_query_fields.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.kql_query_fields.ts @@ -133,6 +133,52 @@ export default ({ getService }: FtrProviderContext): void => { expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); }); }); + + describe('when all query versions have different surrounding whitespace', () => { + it('should not show in the upgrade/_review API response', async () => { + // Install base prebuilt detection rule + await createHistoricalPrebuiltRuleAssetSavedObjects( + es, + getQueryRuleAssetSavedObjects() + ); + await installPrebuiltRules(es, supertest); + + // Customize a kql_query field on the installed rule + await updateRule(supertest, { + ...getPrebuiltRuleMock(), + rule_id: 'rule-1', + type: 'query', + query: '\nquery string = true', + language: 'kuery', + filters: [], + saved_id: undefined, + } as RuleUpdateProps); + + // Add a v2 rule asset to make the upgrade possible, do NOT update the related kql_query field, and create the new rule assets + const updatedRuleAssetSavedObjects = [ + createRuleAssetSavedObject({ + rule_id: 'rule-1', + version: 2, + type: 'query', + query: 'query string = true\n', + language: 'kuery', + filters: [], + }), + ]; + await createHistoricalPrebuiltRuleAssetSavedObjects(es, updatedRuleAssetSavedObjects); + + // Call the upgrade review prebuilt rules endpoint and check that there is 1 rule eligible for update but kql_query field is NOT returned + const reviewResponse = await reviewPrebuiltRulesToUpgrade(supertest); + const fieldDiffObject = reviewResponse.rules[0].diff.fields as AllFieldsDiff; + expect(fieldDiffObject.kql_query).toBeUndefined(); + + expect(reviewResponse.rules[0].diff.num_fields_with_updates).toBe(1); // `version` is considered an updated field + expect(reviewResponse.rules[0].diff.num_fields_with_conflicts).toBe(0); + expect(reviewResponse.rules[0].diff.num_fields_with_non_solvable_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); + }); + }); }); describe("when rule field doesn't have an update but has a custom value - scenario ABA", () => { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.single_line_string_fields.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.single_line_string_fields.ts index 6fe10b9fa6012..6d32d8df7bc72 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.single_line_string_fields.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.single_line_string_fields.ts @@ -69,6 +69,41 @@ export default ({ getService }: FtrProviderContext): void => { expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); }); + + it('should trim all whitespace before version comparison', async () => { + // Install base prebuilt detection rule + await createHistoricalPrebuiltRuleAssetSavedObjects(es, getRuleAssetSavedObjects()); + await installPrebuiltRules(es, supertest); + + // Customize a single line string field on the installed rule + await patchRule(supertest, log, { + rule_id: 'rule-1', + name: 'A\n', + }); + + // Increment the version of the installed rule, do NOT update the related single line string field, and create the new rule assets + const updatedRuleAssetSavedObjects = [ + createRuleAssetSavedObject({ + rule_id: 'rule-1', + name: '\nA', + version: 2, + }), + ]; + await createHistoricalPrebuiltRuleAssetSavedObjects(es, updatedRuleAssetSavedObjects); + + // Call the upgrade review prebuilt rules endpoint and check that there is 1 rule eligible for update + // but single line string field (name) is NOT returned + const reviewResponse = await reviewPrebuiltRulesToUpgrade(supertest); + expect(reviewResponse.rules[0].diff.fields.name).toBeUndefined(); + + expect(reviewResponse.rules[0].diff.num_fields_with_updates).toBe(1); + expect(reviewResponse.rules[0].diff.num_fields_with_conflicts).toBe(0); + expect(reviewResponse.rules[0].diff.num_fields_with_non_solvable_conflicts).toBe(0); + + expect(reviewResponse.stats.num_rules_to_upgrade_total).toBe(1); + expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); + }); }); describe("when rule field doesn't have an update but has a custom value - scenario ABA", () => { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/task_based/all_types.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/task_based/all_types.ts index d13e74724c818..4b22a4b590621 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/task_based/all_types.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/task_based/all_types.ts @@ -47,40 +47,70 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getSecurityTelemetryStats(supertest, log); removeExtraFieldsFromTelemetryStats(stats); - expect(stats).to.eql({ - detection_rules: [ - [ - { - name: 'security:telemetry-detection-rules', - passed: true, - }, - ], + + expect(stats.detection_rules).to.eql([ + [ + { + name: 'security:telemetry-detection-rules', + passed: true, + }, ], - security_lists: [ - [ - { - name: 'security:telemetry-lists', - passed: true, - }, - ], + ]); + + expect(stats.security_lists).to.eql([ + [ + { + name: 'security:telemetry-lists', + passed: true, + }, ], - endpoints: [ - [ - { - name: 'security:endpoint-meta-telemetry', - passed: true, - }, - ], + ]); + + expect(stats.endpoints).to.eql([ + [ + { + name: 'security:endpoint-meta-telemetry', + passed: true, + }, ], - diagnostics: [ - [ - { - name: 'security:endpoint-diagnostics', - passed: true, - }, - ], + ]); + + expect(stats.diagnostics).to.eql([ + [ + { + name: 'security:endpoint-diagnostics', + passed: true, + }, ], - }); + ]); + + expect(stats.indices_metadata).to.be.an('array'); + const events = stats.indices_metadata as any[]; + + expect(events).to.not.be.empty(); + + const eventTypes = events.map((e) => e.eventType); + expect(eventTypes).to.contain('telemetry_index_stats_event'); + expect(eventTypes).to.contain('telemetry_data_stream_event'); + + const indicesStats = events.find((e) => e.eventType === 'telemetry_index_stats_event'); + expect(indicesStats).to.be.ok(); + expect(indicesStats.eventData).to.be.ok(); + expect(indicesStats.eventData.items).to.not.be.empty(); + expect(indicesStats.eventData.items[0]).to.have.keys( + 'index_name', + 'query_total', + 'query_time_in_millis', + 'docs_count', + 'docs_deleted', + 'docs_total_size_in_bytes' + ); + + const dataStreamStats = events.find((e) => e.eventType === 'telemetry_data_stream_event'); + expect(dataStreamStats).to.be.ok(); + expect(dataStreamStats.eventData).to.be.ok(); + expect(dataStreamStats.eventData.items).to.not.be.empty(); + expect(dataStreamStats.eventData.items[0]).to.have.keys('datastream_name', 'indices'); }); }); }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/migrations/delete_migrations.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/migrations/delete_migrations.ts index 9da2e76aba4f9..da230c862889c 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/migrations/delete_migrations.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/migrations/delete_migrations.ts @@ -25,3 +25,28 @@ export const deleteMigrations = async ({ ) ); }; + +export const deleteMigrationsIfExistent = async ({ + ids, + kbnClient, +}: { + ids: string[]; + kbnClient: KbnClient; +}): Promise => { + await Promise.all( + ids.map(async (id) => { + try { + const res = await kbnClient.savedObjects.delete({ + id, + type: signalsMigrationType, + }); + return res; + } catch (e) { + // do not throw error when migration already deleted/not found + if (e?.response?.status !== 404) { + throw e; + } + } + }) + ); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/wait_for_alert_to_complete.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/wait_for_alert_to_complete.ts index d6799e6be611c..c4a9b7d2a8548 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/wait_for_alert_to_complete.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/wait_for_alert_to_complete.ts @@ -17,7 +17,9 @@ export const waitForAlertToComplete = async ( ): Promise => { await waitFor( async () => { - const response = await supertest.get(`/api/alerts/alert/${id}/state`).set('kbn-xsrf', 'true'); + const response = await supertest + .get(`/internal/alerting/rule/${id}/state`) + .set('kbn-xsrf', 'true'); if (response.status !== 200) { log.debug( `Did not get an expected 200 "ok" when waiting for an alert to complete (waitForAlertToComplete). CI issues could happen. Suspect this line if you are seeing CI issues. body: ${JSON.stringify( @@ -25,7 +27,7 @@ export const waitForAlertToComplete = async ( )}, status: ${JSON.stringify(response.status)}` ); } - return response.body.previousStartedAt != null; + return response.body.previous_started_at != null; }, 'waitForAlertToComplete', log diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/telemetry/remove_time_fields_from_telemetry_stats.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/telemetry/remove_time_fields_from_telemetry_stats.ts index 2d27b375684ba..b835832fcb550 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/telemetry/remove_time_fields_from_telemetry_stats.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/telemetry/remove_time_fields_from_telemetry_stats.ts @@ -5,19 +5,29 @@ * 2.0. */ -import { unset } from 'lodash'; - export const removeExtraFieldsFromTelemetryStats = (stats: any) => { - Object.entries(stats).forEach(([, value]: [unknown, any]) => { - value.forEach((entry: any, i: number) => { - entry.forEach((_e: any, j: number) => { - unset(value, `[${i}][${j}].time_executed_in_ms`); - unset(value, `[${i}][${j}].start_time`); - unset(value, `[${i}][${j}].end_time`); - unset(value, `[${i}][${j}].cluster_uuid`); - unset(value, `[${i}][${j}].cluster_name`); - unset(value, `[${i}][${j}].license`); - }); - }); - }); + removeExtraFields(stats, [ + 'time_executed_in_ms', + 'start_time', + 'end_time', + 'cluster_uuid', + 'cluster_name', + 'license', + ]); }; + +function removeExtraFields(obj: any, fields: string[]): void { + function traverseAndRemove(o: any): void { + if (typeof o !== 'object' || o === null) return; + + for (const key in o) { + if (fields.includes(key)) { + delete o[key]; + } else if (typeof o[key] === 'object') { + traverseAndRemove(o[key]); + } + } + } + + traverseAndRemove(obj); +} diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/utils/ingest.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/utils/ingest.ts index 24f7d759190b5..aec5812332ab2 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/utils/ingest.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/utils/ingest.ts @@ -31,7 +31,6 @@ export const applyIngestProcessorToDoc = async ( const firstDoc = res.docs?.[0]; - // @ts-expect-error error is not in the types const error = firstDoc?.error; if (error) { log.error('Full painless error below: '); diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/index.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/index.ts index 2aa04a898a449..3aee9687843bf 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/index.ts @@ -21,5 +21,6 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./asset_criticality_csv_upload')); loadTestFile(require.resolve('./risk_score_entity_calculation')); loadTestFile(require.resolve('./risk_engine_schedule_now')); + loadTestFile(require.resolve('./risk_engine_so_config')); }); } diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/risk_engine_so_config.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/risk_engine_so_config.ts new file mode 100644 index 0000000000000..8b780d0540dca --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/risk_engine_so_config.ts @@ -0,0 +1,143 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { riskEngineConfigurationTypeName } from '@kbn/security-solution-plugin/server/lib/entity_analytics/risk_engine/saved_object'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; +import { + riskEngineRouteHelpersFactory, + getRiskEngineConfigSO, + waitForRiskEngineRun, + waitForRiskEngineTaskToBeGone, +} from '../../utils'; + +export default ({ getService }: FtrProviderContext) => { + const spaceName = 'space1'; + const supertest = getService('supertest'); + const riskEngineRoutes = riskEngineRouteHelpersFactory(supertest); + const riskEngineRoutesForNamespace = riskEngineRouteHelpersFactory(supertest, spaceName); + const kibanaServer = getService('kibanaServer'); + const esArchiver = getService('esArchiver'); + + describe('@ess @ serverless @serverless QA risk_engine_so_update_config', () => { + before(async () => { + const soId = await kibanaServer.savedObjects.find({ + type: riskEngineConfigurationTypeName, + space: spaceName, + }); + if (soId.saved_objects.length !== 0) { + await kibanaServer.savedObjects.delete({ + type: riskEngineConfigurationTypeName, + space: spaceName, + id: soId.saved_objects[0].id, + }); + } + const soId2 = await kibanaServer.savedObjects.find({ + type: riskEngineConfigurationTypeName, + }); + if (soId2.saved_objects.length !== 0) { + await kibanaServer.savedObjects.delete({ + type: riskEngineConfigurationTypeName, + id: soId2.saved_objects[0].id, + }); + } + await esArchiver.load('x-pack/test/functional/es_archives/security_solution/ecs_compliant'); + }); + + after(async () => { + const soId = await kibanaServer.savedObjects.find({ + type: riskEngineConfigurationTypeName, + space: spaceName, + }); + if (soId.saved_objects.length !== 0) { + await kibanaServer.savedObjects.delete({ + type: riskEngineConfigurationTypeName, + space: spaceName, + id: soId.saved_objects[0].id, + }); + } + const soId2 = await kibanaServer.savedObjects.find({ + type: riskEngineConfigurationTypeName, + }); + if (soId2.saved_objects.length !== 0) { + await kibanaServer.savedObjects.delete({ + type: riskEngineConfigurationTypeName, + id: soId2.saved_objects[0].id, + }); + } + await esArchiver.unload('x-pack/test/functional/es_archives/security_solution/ecs_compliant'); + }); + + it('should include the right keys as per the update', async () => { + await riskEngineRoutes.init(); + await waitForRiskEngineRun; + + const currentSoConfig = await getRiskEngineConfigSO({ kibanaServer }); + + expect(currentSoConfig.attributes).to.not.have.property('excludeAlertTags'); + expect(currentSoConfig.attributes).to.not.have.property('excludeAlertStatuses'); + + const updatedSoBody = { + exclude_alert_tags: ['False Positive'], + exclude_alert_statuses: ['open'], + }; + + await riskEngineRoutes.soConfig(updatedSoBody, 200); + const currentSoConfig2 = await getRiskEngineConfigSO({ kibanaServer }); + + expect(currentSoConfig2.attributes).to.have.property('excludeAlertTags'); + expect(currentSoConfig2.attributes).to.have.property('excludeAlertStatuses'); + + await riskEngineRoutes.disable(); + await waitForRiskEngineTaskToBeGone; + + updatedSoBody.exclude_alert_statuses = []; + + await riskEngineRoutes.soConfig(updatedSoBody, 200); + + await riskEngineRoutes.enable(); + await waitForRiskEngineRun; + + const currentSoConfig3 = await getRiskEngineConfigSO({ kibanaServer }); + expect(JSON.stringify(currentSoConfig3.attributes.excludeAlertStatuses)).to.equal( + JSON.stringify(updatedSoBody.exclude_alert_statuses) + ); + }); + + it('should succeed while updating the saved object', async () => { + await riskEngineRoutes.init(); + await waitForRiskEngineRun; + + const updatedSoBody = { + exclude_alert_tags: ['False Positive'], + exclude_alert_statuses: ['open'], + }; + const response = await riskEngineRoutes.soConfig(updatedSoBody); + expect(response.status).to.equal(200); + }); + + it('should update the config in the right space', async () => { + await riskEngineRoutesForNamespace.init(); + await riskEngineRoutes.init(); + await waitForRiskEngineRun; + + const updatedSoBody = { + exclude_alert_tags: ['False Positive'], + exclude_alert_statuses: ['open', 'closed'], + }; + + await riskEngineRoutesForNamespace.soConfig(updatedSoBody, 200); + const currentSoConfig = await getRiskEngineConfigSO({ kibanaServer, space: 'space1' }); + + expect(currentSoConfig.namespaces).to.eql(['space1']); + expect(currentSoConfig.attributes.excludeAlertTags).to.eql(updatedSoBody.exclude_alert_tags); + expect(currentSoConfig.attributes.excludeAlertStatuses).to.eql( + updatedSoBody.exclude_alert_statuses + ); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts index 0a88e9fbe2518..b90ef13a735f7 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts @@ -24,6 +24,7 @@ import { RISK_ENGINE_PRIVILEGES_URL, RISK_ENGINE_CLEANUP_URL, RISK_ENGINE_SCHEDULE_NOW_URL, + RISK_ENGINE_CONFIGURE_SO_URL, } from '@kbn/security-solution-plugin/common/constants'; import { MappingTypeMapping } from '@elastic/elasticsearch/lib/api/types'; import { removeLegacyTransforms } from '@kbn/security-solution-plugin/server/lib/entity_analytics/utils/transforms'; @@ -365,9 +366,16 @@ export const waitForRiskScoresToBeGone = async ({ ); }; -export const getRiskEngineConfigSO = async ({ kibanaServer }: { kibanaServer: KbnClient }) => { +export const getRiskEngineConfigSO = async ({ + kibanaServer, + space, +}: { + kibanaServer: KbnClient; + space?: string; +}) => { const soResponse = await kibanaServer.savedObjects.find({ type: riskEngineConfigurationTypeName, + space, }); return soResponse?.saved_objects?.[0]; @@ -580,6 +588,17 @@ export const riskEngineRouteHelpersFactory = (supertest: SuperTest.Agent, namesp assertStatusCode(expectStatusCode, response); return response; }, + + soConfig: async (configParams: {}, expectStatusCode: number = 200) => { + const response = await supertest + .put(routeWithNamespace(RISK_ENGINE_CONFIGURE_SO_URL, namespace)) + .set('kbn-xsrf', 'true') + .set('elastic-api-version', '2023-10-31') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(configParams); + assertStatusCode(expectStatusCode, response); + return response; + }, }; }; diff --git a/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/ess.config.ts b/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/ess.config.ts new file mode 100644 index 0000000000000..5a4bfb39f41f0 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/ess.config.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile( + require.resolve('../../../config/ess/config.base.basic') + ); + + return { + ...functionalConfig.getAll(), + uiSettings: {}, + testFiles: [require.resolve('..')], + junit: { + reportName: 'Security Solution - Telemetry Integration Tests - ESS Env', + }, + }; +} diff --git a/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/serverless.config.ts new file mode 100644 index 0000000000000..5c47f36439393 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/serverless.config.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createTestConfig } from '../../../config/serverless/config.base'; + +export default createTestConfig({ + testFiles: [require.resolve('..')], + suiteTags: { exclude: ['skipServerless'] }, + junit: { + reportName: 'Security Solution - Telemetry Integration Tests - Serverless Env', + }, +}); diff --git a/x-pack/test/security_solution_api_integration/test_suites/telemetry/index.ts b/x-pack/test/security_solution_api_integration/test_suites/telemetry/index.ts new file mode 100644 index 0000000000000..ff88de12d7124 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/telemetry/index.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('Security Solution - Telemetry', function () { + loadTestFile(require.resolve('./tasks/indices_metadata')); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/telemetry/tasks/indices_metadata.ts b/x-pack/test/security_solution_api_integration/test_suites/telemetry/tasks/indices_metadata.ts new file mode 100644 index 0000000000000..c7d365baab767 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/telemetry/tasks/indices_metadata.ts @@ -0,0 +1,175 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + TELEMETRY_DATA_STREAM_EVENT, + TELEMETRY_ILM_POLICY_EVENT, + TELEMETRY_ILM_STATS_EVENT, + TELEMETRY_INDEX_STATS_EVENT, +} from '@kbn/security-solution-plugin/server/lib/telemetry/event_based/events'; + +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { + cleanupDatastreams, + cleanupPolicies, + ensureBackingIndices, + launchTask, + randomDatastream, + randomIlmPolicy, + taskHasRun, + waitFor, +} from '../../../../common/utils/security_solution'; + +const TASK_ID = 'security:indices-metadata-telemetry:1.0.0'; +const NUM_INDICES = 5; + +export default ({ getService }: FtrProviderContext) => { + const ebtServer = getService('kibana_ebt_server'); + const kibanaServer = getService('kibanaServer'); + const logger = getService('log'); + const es = getService('es'); + + describe('Indices metadata task telemetry', function () { + let dsName: string; + let policyName: string; + + describe('@ess @serverless indices metadata', () => { + beforeEach(async () => { + dsName = await randomDatastream(es); + await ensureBackingIndices(dsName, NUM_INDICES, es); + }); + + afterEach(async () => { + await cleanupDatastreams(es); + }); + + it('should publish data stream events', async () => { + const runAt = await launchTask(TASK_ID, kibanaServer, logger); + + const opts = { + eventTypes: [TELEMETRY_DATA_STREAM_EVENT.eventType], + withTimeoutMs: 1000, + fromTimestamp: new Date().toISOString(), + }; + + await waitFor( + async () => { + const events = await ebtServer + .getEvents(Number.MAX_SAFE_INTEGER, opts) + .then((result) => result.map((ev) => ev.properties.items)) + .then((result) => result.flat()) + .then((result) => result.filter((ev) => (ev as any).datastream_name === dsName)); + + const hasRun = await taskHasRun(TASK_ID, kibanaServer, runAt); + const eventCount = events.length; + + return hasRun && eventCount === 1; + }, + 'waitForTaskToRun', + logger + ); + }); + + it('should publish index stats events', async () => { + const runAt = await launchTask(TASK_ID, kibanaServer, logger); + + const opts = { + eventTypes: [TELEMETRY_INDEX_STATS_EVENT.eventType], + withTimeoutMs: 1000, + fromTimestamp: new Date().toISOString(), + }; + + // .ds--YYYY.MM.DD-NNNNNN + const regex = new RegExp(`^\.ds-${dsName}-\\d{4}.\\d{2}.\\d{2}-\\d{6}$`); + await waitFor( + async () => { + const events = await ebtServer + .getEvents(Number.MAX_SAFE_INTEGER, opts) + .then((result) => result.map((ev) => ev.properties.items)) + .then((result) => result.flat()) + .then((result) => + result.filter((ev) => regex.test((ev as any).index_name as string)) + ); + + const hasRun = await taskHasRun(TASK_ID, kibanaServer, runAt); + + return hasRun && events.length === NUM_INDICES; + }, + 'waitForTaskToRun', + logger + ); + }); + }); + + describe('@ess indices metadata', function () { + this.tags('skipServerless'); + + beforeEach(async () => { + policyName = await randomIlmPolicy(es); + dsName = await randomDatastream(es, policyName); + await ensureBackingIndices(dsName, NUM_INDICES, es); + }); + + afterEach(async () => { + await cleanupDatastreams(es); + await cleanupPolicies(es); + }); + + it('should publish ilm policy events', async () => { + const runAt = await launchTask(TASK_ID, kibanaServer, logger); + + const opts = { + eventTypes: [TELEMETRY_ILM_POLICY_EVENT.eventType], + withTimeoutMs: 1000, + fromTimestamp: new Date().toISOString(), + }; + + await waitFor( + async () => { + const events = await ebtServer + .getEvents(Number.MAX_SAFE_INTEGER, opts) + .then((result) => result.map((ev) => ev.properties.items)) + .then((result) => result.flat()) + .then((result) => result.filter((ev) => (ev as any).policy_name === policyName)); + + const hasRun = await taskHasRun(TASK_ID, kibanaServer, runAt); + + return hasRun && events.length === 1; + }, + 'waitForTaskToRun', + logger + ); + }); + + it('should publish ilm stats events', async () => { + const runAt = await launchTask(TASK_ID, kibanaServer, logger); + + const opts = { + eventTypes: [TELEMETRY_ILM_STATS_EVENT.eventType], + withTimeoutMs: 1000, + fromTimestamp: new Date().toISOString(), + }; + + await waitFor( + async () => { + const events = await ebtServer + .getEvents(Number.MAX_SAFE_INTEGER, opts) + .then((result) => result.map((ev) => ev.properties.items)) + .then((result) => result.flat()) + .then((result) => result.filter((ev) => (ev as any).policy_name === policyName)); + + const hasRun = await taskHasRun(TASK_ID, kibanaServer, runAt); + + return hasRun && events.length === NUM_INDICES; + }, + 'waitForTaskToRun', + logger + ); + }); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/tsconfig.json b/x-pack/test/security_solution_api_integration/tsconfig.json index e13f4bd61520d..26f1ee30916dc 100644 --- a/x-pack/test/security_solution_api_integration/tsconfig.json +++ b/x-pack/test/security_solution_api_integration/tsconfig.json @@ -52,5 +52,6 @@ "@kbn/ftr-common-functional-ui-services", "@kbn/spaces-plugin", "@kbn/elastic-assistant-plugin", + "@kbn/test-suites-src", ] } diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/ai_assistant/conversations.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/ai_assistant/conversations.cy.ts index 4d87cce1fdaa8..42bb91650c5b3 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/ai_assistant/conversations.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/ai_assistant/conversations.cy.ts @@ -47,7 +47,9 @@ import { } from '../../screens/ai_assistant'; import { visit, visitGetStartedPage } from '../../tasks/navigation'; -describe('AI Assistant Conversations', { tags: ['@ess', '@serverless'] }, () => { +// Failing: See https://github.com/elastic/kibana/issues/204167 +// Failing: See https://github.com/elastic/kibana/issues/204167 +describe.skip('AI Assistant Conversations', { tags: ['@ess', '@serverless'] }, () => { beforeEach(() => { deleteConnectors(); deleteConversations(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts index b8d222471c87e..5059eab2cfb41 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts @@ -7,15 +7,9 @@ import { PAGE_TITLE, - HOST_RISK_PREVIEW_TABLE, - HOST_RISK_PREVIEW_TABLE_ROWS, - USER_RISK_PREVIEW_TABLE, - USER_RISK_PREVIEW_TABLE_ROWS, RISK_PREVIEW_ERROR, - LOCAL_QUERY_BAR_SELECTOR, RISK_SCORE_ERROR_PANEL, RISK_SCORE_STATUS, - LOCAL_QUERY_BAR_SEARCH_INPUT_SELECTOR, } from '../../screens/entity_analytics_management'; import { deleteRiskScore, installRiskScoreModule } from '../../tasks/api_calls/risk_scores'; @@ -31,8 +25,6 @@ import { interceptRiskPreviewSuccess, interceptRiskInitError, } from '../../tasks/api_calls/risk_engine'; -import { updateDateRangeInLocalDatePickers } from '../../tasks/date_picker'; -import { submitLocalSearch } from '../../tasks/search_bar'; import { riskEngineStatusChange, upgradeRiskEngine, @@ -65,31 +57,6 @@ describe( }); describe('Risk preview', () => { - it('risk scores reacts on change in datepicker', () => { - const START_DATE = 'Jan 18, 2019 @ 20:33:29.186'; - const END_DATE = 'Jan 19, 2019 @ 20:33:29.186'; - - cy.get(HOST_RISK_PREVIEW_TABLE_ROWS).should('have.length', 5); - cy.get(USER_RISK_PREVIEW_TABLE_ROWS).should('have.length', 5); - - updateDateRangeInLocalDatePickers(LOCAL_QUERY_BAR_SELECTOR, START_DATE, END_DATE); - - cy.get(HOST_RISK_PREVIEW_TABLE).contains('No items found'); - cy.get(USER_RISK_PREVIEW_TABLE).contains('No items found'); - }); - - it('risk scores reacts on change in search bar query', () => { - cy.get(HOST_RISK_PREVIEW_TABLE_ROWS).should('have.length', 5); - cy.get(USER_RISK_PREVIEW_TABLE_ROWS).should('have.length', 5); - cy.get(LOCAL_QUERY_BAR_SEARCH_INPUT_SELECTOR).type('host.name: "test-host1"'); - submitLocalSearch(LOCAL_QUERY_BAR_SELECTOR); - - cy.get(HOST_RISK_PREVIEW_TABLE_ROWS).should('have.length', 1); - cy.get(HOST_RISK_PREVIEW_TABLE_ROWS).contains('test-host1'); - cy.get(USER_RISK_PREVIEW_TABLE_ROWS).should('have.length', 1); - cy.get(USER_RISK_PREVIEW_TABLE_ROWS).contains('test1'); - }); - it('show error panel if API returns error and then try to refetch data', () => { interceptRiskPreviewError(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts index 9d5b77919d548..efd8635d78cd6 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts @@ -40,7 +40,8 @@ import { closeTimeline, openTimelineById } from '../../../tasks/timeline'; const siemDataViewTitle = 'Security Default Data View'; const dataViews = ['logs-*', 'metrics-*', '.kibana-event-log-*']; -describe('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { +// FLAKY: https://github.com/elastic/kibana/issues/198944 +describe.skip('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { before(() => { waitForRulesBootstrap(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/tsconfig.json b/x-pack/test/security_solution_cypress/cypress/tsconfig.json index b117f42efceae..35779da01ac6d 100644 --- a/x-pack/test/security_solution_cypress/cypress/tsconfig.json +++ b/x-pack/test/security_solution_cypress/cypress/tsconfig.json @@ -14,7 +14,7 @@ // in a way that can't be auto-matically deteceted at this time // so we have to force the inclusion of this reference { - "path": "../../../plugins/security_solution/tsconfig.json", + "path": "../../../solutions/security/plugins/security_solution/tsconfig.json", "force": true }, "@kbn/rison", diff --git a/x-pack/test/security_solution_cypress/package.json b/x-pack/test/security_solution_cypress/package.json index 68d7454b62e51..79f07c2d07a60 100644 --- a/x-pack/test/security_solution_cypress/package.json +++ b/x-pack/test/security_solution_cypress/package.json @@ -6,24 +6,24 @@ "license": "Elastic License 2.0", "scripts": { "cypress": "NODE_OPTIONS=--openssl-legacy-provider ../../../node_modules/.bin/cypress", - "cypress:open:ess": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../plugins/security_solution/scripts/start_cypress_parallel open --spec './cypress/e2e/**/*.cy.ts' --config-file ../../test/security_solution_cypress/cypress/cypress.config.ts --ftr-config-file ../../test/security_solution_cypress/cli_config", + "cypress:open:ess": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../solutions/security/plugins/security_solution/scripts/start_cypress_parallel open --spec './cypress/e2e/**/*.cy.ts' --config-file ../../test/security_solution_cypress/cypress/cypress.config.ts --ftr-config-file ../../test/security_solution_cypress/cli_config", "cypress:entity_analytics:run:ess": "yarn cypress:ess --spec './cypress/e2e/entity_analytics/**/*.cy.ts'", "cypress:run:cases:ess": "yarn cypress:ess --spec './cypress/e2e/explore/cases/*.cy.ts'", - "cypress:ess": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../plugins/security_solution/scripts/start_cypress_parallel run --config-file ../../test/security_solution_cypress/cypress/cypress_ci.config.ts --ftr-config-file ../../test/security_solution_cypress/cli_config", - "cypress:rule_management:run:ess":"yarn cypress:ess --spec './cypress/e2e/detection_response/rule_management/!(prebuilt_rules)/**/*.cy.ts'", + "cypress:ess": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../solutions/security/plugins/security_solution/scripts/start_cypress_parallel run --config-file ../../test/security_solution_cypress/cypress/cypress_ci.config.ts --ftr-config-file ../../test/security_solution_cypress/cli_config", + "cypress:rule_management:run:ess": "yarn cypress:ess --spec './cypress/e2e/detection_response/rule_management/!(prebuilt_rules)/**/*.cy.ts'", "cypress:rule_management:prebuilt_rules:run:ess": "yarn cypress:ess --spec './cypress/e2e/detection_response/rule_management/prebuilt_rules/**/*.cy.ts'", - "cypress:detection_engine:run:ess":"yarn cypress:ess --spec './cypress/e2e/detection_response/detection_engine/!(exceptions)/**/*.cy.ts'", + "cypress:detection_engine:run:ess": "yarn cypress:ess --spec './cypress/e2e/detection_response/detection_engine/!(exceptions)/**/*.cy.ts'", "cypress:detection_engine:exceptions:run:ess": "yarn cypress:ess --spec './cypress/e2e/detection_response/detection_engine/exceptions/**/*.cy.ts'", - "cypress:ai_assistant:run:ess":"yarn cypress:ess --spec './cypress/e2e/ai_assistant/**/*.cy.ts'", + "cypress:ai_assistant:run:ess": "yarn cypress:ess --spec './cypress/e2e/ai_assistant/**/*.cy.ts'", "cypress:run:respops:ess": "yarn cypress:ess --spec './cypress/e2e/detection_response/**/*.cy.ts'", "cypress:investigations:run:ess": "yarn cypress:ess --spec './cypress/e2e/investigations/**/*.cy.ts'", "cypress:explore:run:ess": "yarn cypress:ess --spec './cypress/e2e/explore/**/*.cy.ts'", "cypress:changed-specs-only:ess": "yarn cypress:ess --changed-specs-only --env burn=5", "cypress:cloud_security_posture:run:ess": "yarn cypress:ess --spec './cypress/e2e/cloud_security_posture/**/*.cy.ts'", "cypress:burn:ess": "yarn cypress:ess --env burn=5", - "junit:merge": "../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-security-solution/cypress/results/mochawesome*.json > ../../../target/kibana-security-solution/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-security-solution/cypress/results/output.json --reportDir ../../../target/kibana-security-solution/cypress/results && yarn junit:transform && mkdir -p ../../../target/junit && cp ../../../target/kibana-security-solution/cypress/results/*.xml ../../../target/junit/", - "junit:transform": "node ../../plugins/security_solution/scripts/junit_transformer --pathPattern '../../../target/kibana-security-solution/cypress/results/*.xml' --rootDirectory ../../../ --reportName 'Security Solution Cypress' --writeInPlace", - "cypress:serverless": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../plugins/security_solution/scripts/start_cypress_parallel --config-file ../../test/security_solution_cypress/cypress/cypress_ci_serverless.config.ts --ftr-config-file ../../test/security_solution_cypress/serverless_config", + "junit:merge": "../../../node_modules/.bin/mochawesome-merge ../../../../../target/kibana-security-solution/cypress/results/mochawesome*.json > ../../../../../target/kibana-security-solution/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../../../target/kibana-security-solution/cypress/results/output.json --reportDir ../../../../../target/kibana-security-solution/cypress/results && yarn junit:transform && mkdir -p ../../../../../target/junit && cp ../../../../../target/kibana-security-solution/cypress/results/*.xml ../../../../../target/junit/", + "junit:transform": "node ../../solutions/security/plugins/security_solution/scripts/junit_transformer --pathPattern '../../../target/kibana-security-solution/cypress/results/*.xml' --rootDirectory ../../../ --reportName 'Security Solution Cypress' --writeInPlace", + "cypress:serverless": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../solutions/security/plugins/security_solution/scripts/start_cypress_parallel --config-file ../../test/security_solution_cypress/cypress/cypress_ci_serverless.config.ts --ftr-config-file ../../test/security_solution_cypress/serverless_config", "cypress:cloud:serverless": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider NODE_TLS_REJECT_UNAUTHORIZED=0 ../../../node_modules/.bin/cypress", "cypress:open:cloud:serverless": "yarn cypress:cloud:serverless open --config-file ./cypress/cypress_serverless.config.ts --env CLOUD_SERVERLESS=true", "cypress:open:serverless": "yarn cypress:serverless open --config-file ../../test/security_solution_cypress/cypress/cypress_serverless.config.ts --spec './cypress/e2e/**/*.cy.ts'", @@ -39,7 +39,7 @@ "cypress:changed-specs-only:serverless": "yarn cypress:serverless --changed-specs-only --env burn=5", "cypress:cloud_security_posture:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/cloud_security_posture/**/*.cy.ts'", "cypress:burn:serverless": "yarn cypress:serverless --env burn=2", - "cypress:qa:serverless": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../plugins/security_solution/scripts/start_cypress_parallel_serverless --config-file ../../test/security_solution_cypress/cypress/cypress_ci_serverless_qa.config.ts", + "cypress:qa:serverless": "TZ=UTC NODE_OPTIONS=--openssl-legacy-provider node ../../solutions/security/plugins/security_solution/scripts/start_cypress_parallel_serverless --config-file ../../test/security_solution_cypress/cypress/cypress_ci_serverless_qa.config.ts", "cypress:open:qa:serverless": "yarn cypress:qa:serverless open", "cypress:run:qa:serverless:entity_analytics": "yarn cypress:qa:serverless --spec './cypress/e2e/entity_analytics/**/*.cy.ts'", "cypress:run:qa:serverless:investigations": "yarn cypress:qa:serverless --spec './cypress/e2e/investigations/**/*.cy.ts'", @@ -51,4 +51,4 @@ "cypress:run:qa:serverless:ai_assistant": "yarn cypress:qa:serverless --spec './cypress/e2e/ai_assistant/**/*.cy.ts'", "cypress:run:qa:serverless:cloud_security_posture": "yarn cypress:qa:serverless --spec './cypress/e2e/cloud_security_posture/**/*.cy.ts" } -} \ No newline at end of file +} diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts index f11b032d6351b..f25d362f0d798 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts @@ -12,7 +12,9 @@ import { FtrProviderContext } from '../../configs/ftr_provider_context'; export default function (providerContext: FtrProviderContext) { const { loadTestFile, getService, getPageObjects } = providerContext; - describe('endpoint', function () { + // FLAKY: https://github.com/elastic/kibana/issues/180401 + // FLAKY: https://github.com/elastic/kibana/issues/203894 + describe.skip('endpoint', function () { const ingestManager = getService('ingestManager'); const log = getService('log'); const endpointTestResources = getService('endpointTestResources'); diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/index.ts b/x-pack/test/security_solution_endpoint/apps/integrations/index.ts index 037ee3d60ec3e..5024b6d16739b 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/index.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/index.ts @@ -12,7 +12,9 @@ import { FtrProviderContext } from '../../configs/ftr_provider_context'; export default function (providerContext: FtrProviderContext) { const { loadTestFile, getService, getPageObjects } = providerContext; - describe('integrations', function () { + // FLAKY: https://github.com/elastic/kibana/issues/203916 + // FLAKY: https://github.com/elastic/kibana/issues/180401 + describe.skip('integrations', function () { const ingestManager = getService('ingestManager'); const log = getService('log'); const endpointTestResources = getService('endpointTestResources'); diff --git a/x-pack/test/security_solution_endpoint/page_objects/policy_page.ts b/x-pack/test/security_solution_endpoint/page_objects/policy_page.ts index a18a5110bb7aa..2785d0efbfaec 100644 --- a/x-pack/test/security_solution_endpoint/page_objects/policy_page.ts +++ b/x-pack/test/security_solution_endpoint/page_objects/policy_page.ts @@ -108,7 +108,7 @@ export function EndpointPolicyPageProvider({ getService, getPageObjects }: FtrPr await this.ensureIsOnDetailsPage(); // Sometimes, data retrieval errors may have been encountered by other security solution processes - // (ex. index fields search here: `x-pack/plugins/security_solution/public/common/containers/source/index.tsx:181`) + // (ex. index fields search here: `x-pack/solutions/security/plugins/security_solution/public/common/containers/source/index.tsx:181`) // which are displayed using one or more Toast messages. This in turn prevents the user from // actually clicking the Save button. Because those errors are not associated with Policy details, // we'll first check that all toasts are cleared diff --git a/x-pack/test/security_solution_playwright/package.json b/x-pack/test/security_solution_playwright/package.json index 10b1c01fb8fb3..a974a43ae2335 100644 --- a/x-pack/test/security_solution_playwright/package.json +++ b/x-pack/test/security_solution_playwright/package.json @@ -5,8 +5,8 @@ "private": true, "license": "Elastic License 2.0", "scripts": { - "playwright:open": "node ../../plugins/security_solution/scripts/run_playwright/start_playwright open --config-file ../../test/security_solution_playwright/playwright.config.ts", - "playwright:run": "node ../../plugins/security_solution/scripts/run_playwright/start_playwright run --config-file ../../test/security_solution_playwright/playwright.config.ts", + "playwright:open": "node ../../solutions/security/plugins/security_solution/scripts/run_playwright/start_playwright open --config-file ../../test/security_solution_playwright/playwright.config.ts", + "playwright:run": "node ../../solutions/security/plugins/security_solution/scripts/run_playwright/start_playwright run --config-file ../../test/security_solution_playwright/playwright.config.ts", "open:ess": "npm run playwright:open -- --ftr-config-file ../security_solution_cypress/cli_config", "run:ess": "npm run playwright:run -- --ftr-config-file ../security_solution_cypress/cli_config", "open:serverless": "npm run playwright:open -- --ftr-config-file ../security_solution_cypress/serverless_config", diff --git a/x-pack/test/security_solution_playwright/tsconfig.json b/x-pack/test/security_solution_playwright/tsconfig.json index bd7a213584195..ec4474cbef181 100644 --- a/x-pack/test/security_solution_playwright/tsconfig.json +++ b/x-pack/test/security_solution_playwright/tsconfig.json @@ -7,7 +7,7 @@ "include": ["index.d.ts"], "kbn_references": [ { - "path": "../../plugins/security_solution/tsconfig.json", + "path": "../../solutions/security/plugins/security_solution/tsconfig.json", "force": true }, ], diff --git a/x-pack/test/task_manager_claimer_update_by_query/config.ts b/x-pack/test/task_manager_claimer_update_by_query/config.ts index ddae0d7b04d36..0d6f89b1c11a3 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/config.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/config.ts @@ -30,8 +30,6 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { '--xpack.eventLog.indexEntries=true', '--xpack.task_manager.claim_strategy="update_by_query"', '--xpack.task_manager.monitored_aggregated_stats_refresh_rate=5000', - '--xpack.task_manager.ephemeral_tasks.enabled=false', - '--xpack.task_manager.ephemeral_tasks.request_capacity=100', '--xpack.task_manager.metrics_reset_interval=40000', `--xpack.stack_connectors.enableExperimental=${JSON.stringify([ 'crowdstrikeConnectorOn', diff --git a/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/init_routes.ts b/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/init_routes.ts index acdbae0b00337..77cfc468f3f13 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/init_routes.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/init_routes.ts @@ -219,45 +219,6 @@ export function initRoutes( } ); - router.post( - { - path: `/api/sample_tasks/ephemeral_run_now`, - validate: { - body: schema.object({ - task: schema.object({ - taskType: schema.string(), - state: schema.recordOf(schema.string(), schema.any()), - params: schema.recordOf(schema.string(), schema.any()), - }), - }), - }, - }, - async function ( - context: RequestHandlerContext, - req: KibanaRequest< - any, - any, - { - task: { - taskType: string; - params: Record; - state: Record; - }; - }, - any - >, - res: KibanaResponseFactory - ): Promise> { - const { task } = req.body; - try { - const taskManager = await taskManagerStart; - return res.ok({ body: await taskManager.ephemeralRunNow(task) }); - } catch (err) { - return res.ok({ body: { task, error: `${err}` } }); - } - } - ); - router.post( { path: `/api/sample_tasks/ensure_scheduled`, diff --git a/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/plugin.ts b/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/plugin.ts index eceb750c207b8..c390d9388c937 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/plugin.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/plugin.ts @@ -15,7 +15,6 @@ import { TaskManagerSetupContract, TaskManagerStartContract, ConcreteTaskInstance, - EphemeralTask, } from '@kbn/task-manager-plugin/server'; import { DEFAULT_MAX_WORKERS } from '@kbn/task-manager-plugin/server/config'; import { TaskPriority } from '@kbn/task-manager-plugin/server/task'; @@ -45,8 +44,6 @@ export class SampleTaskManagerFixturePlugin const taskTestingEvents = new EventEmitter(); taskTestingEvents.setMaxListeners(DEFAULT_MAX_WORKERS * 2); - const tmStart = this.taskManagerStart; - const defaultSampleTaskConfig = { timeout: '1m', // This task allows tests to specify its behavior (whether it reschedules itself, whether it errors, etc) @@ -311,37 +308,6 @@ export class SampleTaskManagerFixturePlugin 'A task that can only have two concurrent instance and tracks its execution timing.', ...taskWithTiming, }, - taskWhichExecutesOtherTasksEphemerally: { - title: 'Task Which Executes Other Tasks Ephemerally', - description: 'A sample task used to validate how ephemeral tasks are executed.', - maxAttempts: 1, - timeout: '60s', - createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => ({ - async run() { - const { - params: { tasks = [] }, - } = taskInstance; - - const tm = await tmStart; - const executions = await Promise.all( - (tasks as EphemeralTask[]).map(async (task) => { - return tm - .ephemeralRunNow(task) - .then((result) => ({ - result, - })) - .catch((error) => ({ - error, - })); - }) - ); - - return { - state: { executions }, - }; - }, - }), - }, }); taskManager.addMiddleware({ diff --git a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/health_route.ts b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/health_route.ts index c5efe2622055e..607a67f92f68d 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/health_route.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/health_route.ts @@ -299,7 +299,6 @@ export default function ({ getService }: FtrProviderContext) { expect(typeof execution.duration.sampleTask.p95).to.eql('number'); expect(typeof execution.duration.sampleTask.p99).to.eql('number'); - expect(typeof execution.persistence.ephemeral).to.eql('number'); expect(typeof execution.persistence.non_recurring).to.eql('number'); expect(typeof execution.persistence.recurring).to.eql('number'); diff --git a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/metrics_route.ts b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/metrics_route.ts index 3e37c488e5190..2bab3cf0dc577 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/metrics_route.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/metrics_route.ts @@ -296,7 +296,7 @@ export default function ({ getService }: FtrProviderContext) { // update apiKey to fix decryption error await request - .post(`/api/alerts/alert/${ruleId}/_update_api_key`) + .post(`/api/alerting/rule/${ruleId}/_update_api_key`) .set('kbn-xsrf', 'xxx') .expect(204); diff --git a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts index f03023fb10ee8..33c72ffd1de95 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts @@ -200,20 +200,6 @@ export default function ({ getService }: FtrProviderContext) { .then((response: { body: BulkUpdateTaskResult }) => response.body); } - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // function runEphemeralTaskNow(task: { - // taskType: string; - // params: Record; - // state: Record; - // }) { - // return supertest - // .post('/api/sample_tasks/ephemeral_run_now') - // .set('kbn-xsrf', 'xxx') - // .send({ task }) - // .expect(200) - // .then((response) => response.body); - // } - function scheduleTaskIfNotExists(task: Partial) { return supertest .post('/api/sample_tasks/ensure_scheduled') @@ -915,196 +901,6 @@ export default function ({ getService }: FtrProviderContext) { expect(task.runAt).to.eql(scheduledRunAt); }); }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('should return the resulting task state when asked to run an ephemeral task now', async () => { - // const ephemeralTask = await runEphemeralTaskNow({ - // taskType: 'sampleTask', - // params: {}, - // state: {}, - // }); - - // await retry.try(async () => { - // expect( - // (await historyDocs()).filter((taskDoc) => taskDoc._source.taskId === ephemeralTask.id) - // .length - // ).to.eql(1); - - // expect(ephemeralTask.state.count).to.eql(1); - // }); - - // const secondEphemeralTask = await runEphemeralTaskNow({ - // taskType: 'sampleTask', - // params: {}, - // // pass state from previous ephemeral run as input for the second run - // state: ephemeralTask.state, - // }); - - // // ensure state is cumulative - // expect(secondEphemeralTask.state.count).to.eql(2); - - // await retry.try(async () => { - // // ensure new id is produced for second task execution - // expect( - // (await historyDocs()).filter((taskDoc) => taskDoc._source.taskId === ephemeralTask.id) - // .length - // ).to.eql(1); - // expect( - // (await historyDocs()).filter( - // (taskDoc) => taskDoc._source.taskId === secondEphemeralTask.id - // ).length - // ).to.eql(1); - // }); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Epheemral task run should only run one instance of a task if its maxConcurrency is 1', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: [ - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // ], - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with any other task - // 0 - // ); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Ephemeral task run should only run as many instances of a task as its maxConcurrency will allow', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: [ - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // ], - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with, at most, 1 other task - // 1 - // ); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Ephemeral task executions cant exceed the max workes in Task Manager', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: times(20, () => ({ - // taskType: 'timedTask', - // params: { delay: 100 }, - // state: {}, - // })), - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with, at most, 9 other tasks (as max workes is 10) - // 9 - // ); - // }); }); // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index 95178eca83172..ce202abc9738a 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -137,10 +137,8 @@ "@kbn/stack-connectors-plugin", "@kbn/stack-alerts-plugin", "@kbn/apm-data-access-plugin", - "@kbn/coloring", "@kbn/profiling-utils", "@kbn/profiling-data-access-plugin", - "@kbn/coloring", "@kbn/es", "@kbn/metrics-data-access-plugin", "@kbn/dataset-quality-plugin", @@ -188,8 +186,10 @@ "@kbn/ai-assistant-common", "@kbn/core-deprecations-common", "@kbn/usage-collection-plugin", + "@kbn/palettes", "@kbn/sse-utils-server", "@kbn/gen-ai-functional-testing", - "@kbn/integration-assistant-plugin" + "@kbn/integration-assistant-plugin", + "@kbn/core-elasticsearch-server" ] } diff --git a/x-pack/test/upgrade_assistant_integration/config.ts b/x-pack/test/upgrade_assistant_integration/config.ts index 0794f4d0b9ada..df798a701b6b4 100644 --- a/x-pack/test/upgrade_assistant_integration/config.ts +++ b/x-pack/test/upgrade_assistant_integration/config.ts @@ -38,8 +38,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { }, esTestCluster: { ...xPackFunctionalTestsConfig.get('esTestCluster'), - // this archive can not be loaded into 8.0+ - // dataArchive: path.resolve(__dirname, './fixtures/data_archives/upgrade_assistant.zip'), + dataArchive: path.resolve(__dirname, './fixtures/data_archives/upgrade_assistant.zip'), }, }; } diff --git a/x-pack/test/upgrade_assistant_integration/fixtures/data_archives/upgrade_assistant.zip b/x-pack/test/upgrade_assistant_integration/fixtures/data_archives/upgrade_assistant.zip index bf2104fc59953..bc0208152dae4 100644 Binary files a/x-pack/test/upgrade_assistant_integration/fixtures/data_archives/upgrade_assistant.zip and b/x-pack/test/upgrade_assistant_integration/fixtures/data_archives/upgrade_assistant.zip differ diff --git a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/api_deprecations.ts b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/api_deprecations.ts index 74c3064f9341d..6a0f8aad4686e 100644 --- a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/api_deprecations.ts +++ b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/api_deprecations.ts @@ -17,9 +17,15 @@ import type { import { FtrProviderContext } from '../../common/ftr_provider_context'; const getApiDeprecations = (allDeprecations: DomainDeprecationDetails[]) => { - return allDeprecations.filter( - (deprecation) => deprecation.deprecationType === 'api' - ) as unknown as Array>; + return ( + allDeprecations + .filter( + (deprecation): deprecation is DomainDeprecationDetails => + deprecation.deprecationType === 'api' + ) + // Ensure consistent sorting + .sort((a, b) => a.title.localeCompare(b.title)) + ); }; export default function ({ getService }: FtrProviderContext) { @@ -28,8 +34,7 @@ export default function ({ getService }: FtrProviderContext) { const retry = getService('retry'); const es = getService('es'); - // FLAKY: https://github.com/elastic/kibana/issues/199782 - describe.skip('Kibana API Deprecations', function () { + describe('Kibana API Deprecations', function () { // bail on first error in this suite since cases sequentially depend on each other this.bail(true); diff --git a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/reindexing.js b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/reindexing.js deleted file mode 100644 index b8f689edb6a31..0000000000000 --- a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/reindexing.js +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; - -import { ReindexStatus, REINDEX_OP_TYPE } from '@kbn/upgrade-assistant-plugin/common/types'; -import { generateNewIndexName } from '@kbn/upgrade-assistant-plugin/server/lib/reindexing/index_settings'; -import { getIndexState } from '@kbn/upgrade-assistant-plugin/common/get_index_state'; - -export default function ({ getService }) { - const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const es = getService('es'); - - // Utility function that keeps polling API until reindex operation has completed or failed. - const waitForReindexToComplete = async (indexName) => { - console.log(`Waiting for reindex to complete...`); - let lastState; - - while (true) { - lastState = (await supertest.get(`/api/upgrade_assistant/reindex/${indexName}`).expect(200)) - .body.reindexOp; - // Once the operation is completed or failed and unlocked, stop polling. - if (lastState.status !== ReindexStatus.inProgress && lastState.locked === null) { - break; - } - await new Promise((resolve) => setTimeout(resolve, 1000)); - } - - return lastState; - }; - - describe.skip('reindexing', () => { - afterEach(() => { - // Cleanup saved objects - return es.deleteByQuery({ - index: '.kibana', - refresh: true, - body: { - query: { - simple_query_string: { - query: REINDEX_OP_TYPE, - fields: ['type'], - }, - }, - }, - }); - }); - - it('should create a new index with the same documents', async () => { - await esArchiver.load('x-pack/test/functional/es_archives/upgrade_assistant/reindex'); - const { body } = await supertest - .post(`/api/upgrade_assistant/reindex/dummydata`) - .set('kbn-xsrf', 'xxx') - .expect(200); - - expect(body.indexName).to.equal('dummydata'); - expect(body.status).to.equal(ReindexStatus.inProgress); - - const lastState = await waitForReindexToComplete('dummydata'); - expect(lastState.errorMessage).to.equal(null); - expect(lastState.status).to.equal(ReindexStatus.completed); - - const { newIndexName } = lastState; - const indexSummary = await es.indices.get({ index: 'dummydata' }); - - // The new index was created - expect(indexSummary[newIndexName]).to.be.an('object'); - // The original index name is aliased to the new one - expect(indexSummary[newIndexName].aliases.dummydata).to.be.an('object'); - // Verify mappings exist on new index - expect(indexSummary[newIndexName].mappings.properties).to.be.an('object'); - // The number of documents in the new index matches what we expect - expect((await es.count({ index: lastState.newIndexName })).count).to.be(3); - - // Cleanup newly created index - await es.indices.delete({ - index: lastState.newIndexName, - }); - }); - - it('can resume after reindexing was stopped right after creating the new index', async () => { - await esArchiver.load('x-pack/test/functional/es_archives/upgrade_assistant/reindex'); - - // This new index is the new soon to be created reindexed index. We create it - // upfront to simulate a situation in which the user restarted kibana half - // way through the reindex process and ended up with an extra index. - await es.indices.create({ index: 'reindexed-v7-dummydata' }); - - const { body } = await supertest - .post(`/api/upgrade_assistant/reindex/dummydata`) - .set('kbn-xsrf', 'xxx') - .expect(200); - - expect(body.indexName).to.equal('dummydata'); - expect(body.status).to.equal(ReindexStatus.inProgress); - - const lastState = await waitForReindexToComplete('dummydata'); - expect(lastState.errorMessage).to.equal(null); - expect(lastState.status).to.equal(ReindexStatus.completed); - - // Cleanup newly created index - await es.indices.delete({ - index: lastState.newIndexName, - }); - }); - - it('should update any aliases', async () => { - await esArchiver.load('x-pack/test/functional/es_archives/upgrade_assistant/reindex'); - - // Add aliases and ensure each returns the right number of docs - await es.indices.updateAliases({ - body: { - actions: [ - { add: { index: 'dummydata', alias: 'myAlias' } }, - { add: { index: 'dummy*', alias: 'wildcardAlias' } }, - { - add: { index: 'dummydata', alias: 'myHttpsAlias', filter: { term: { https: true } } }, - }, - ], - }, - }); - expect((await es.count({ index: 'myAlias' })).count).to.be(3); - expect((await es.count({ index: 'wildcardAlias' })).count).to.be(3); - expect((await es.count({ index: 'myHttpsAlias' })).count).to.be(2); - - // Reindex - await supertest - .post(`/api/upgrade_assistant/reindex/dummydata`) - .set('kbn-xsrf', 'xxx') - .expect(200); - const lastState = await waitForReindexToComplete('dummydata'); - - // The regular aliases should still return 3 docs - expect((await es.count({ index: 'myAlias' })).count).to.be(3); - expect((await es.count({ index: 'wildcardAlias' })).count).to.be(3); - // The filtered alias should still return 2 docs - expect((await es.count({ index: 'myHttpsAlias' })).count).to.be(2); - - // Cleanup newly created index - await es.indices.delete({ - index: lastState.newIndexName, - }); - }); - - it('shows no warnings', async () => { - const resp = await supertest.get(`/api/upgrade_assistant/reindex/7.0-data`); - // By default all reindexing operations will replace an index with an alias (with the same name) - // pointing to a newly created "reindexed" index. - expect(resp.body.warnings.length).to.be(1); - expect(resp.body.warnings[0].warningType).to.be('replaceIndexWithAlias'); - }); - - it('reindexes old 7.0 index', async () => { - const { body } = await supertest - .post(`/api/upgrade_assistant/reindex/7.0-data`) - .set('kbn-xsrf', 'xxx') - .expect(200); - - expect(body.indexName).to.equal('7.0-data'); - expect(body.status).to.equal(ReindexStatus.inProgress); - - const lastState = await waitForReindexToComplete('7.0-data'); - expect(lastState.errorMessage).to.equal(null); - expect(lastState.status).to.equal(ReindexStatus.completed); - }); - - it('should reindex a batch in order and report queue state', async () => { - const assertQueueState = async (firstInQueueIndexName, queueLength) => { - const response = await supertest - .get(`/api/upgrade_assistant/reindex/batch/queue`) - .set('kbn-xsrf', 'xxx') - .expect(200); - - const { queue } = response.body; - - const [firstInQueue] = queue; - - if (!firstInQueueIndexName) { - expect(firstInQueueIndexName).to.be(undefined); - } else { - expect(firstInQueue.indexName).to.be(firstInQueueIndexName); - } - - expect(queue.length).to.be(queueLength); - }; - - const test1 = 'batch-reindex-test1'; - const test2 = 'batch-reindex-test2'; - const test3 = 'batch-reindex-test3'; - - const cleanupReindex = async (indexName) => { - try { - await es.indices.delete({ index: generateNewIndexName(indexName) }); - } catch (e) { - try { - await es.indices.delete({ index: indexName }); - } catch (e) { - // Ignore - } - } - }; - - try { - // Set up indices for the batch - await es.indices.create({ index: test1 }); - await es.indices.create({ index: test2 }); - await es.indices.create({ index: test3 }); - - await es.indices.close({ index: test1 }); - - const result = await supertest - .post(`/api/upgrade_assistant/reindex/batch`) - .set('kbn-xsrf', 'xxx') - .send({ indexNames: [test1, test2, test3] }) - .expect(200); - - expect(result.body.enqueued.length).to.equal(3); - expect(result.body.errors.length).to.equal(0); - - const [{ newIndexName: nameOfIndexThatShouldBeClosed }] = result.body.enqueued; - - await assertQueueState(test1, 3); - await waitForReindexToComplete(test1); - - await assertQueueState(test2, 2); - await waitForReindexToComplete(test2); - - await assertQueueState(test3, 1); - await waitForReindexToComplete(test3); - - await assertQueueState(undefined, 0); - - // Check that the closed index is still closed after reindexing - const resolvedIndices = await es.indices.resolveIndex({ - name: nameOfIndexThatShouldBeClosed, - }); - - const test1ReindexedState = getIndexState(nameOfIndexThatShouldBeClosed, resolvedIndices); - expect(test1ReindexedState).to.be('closed'); - } finally { - await cleanupReindex(test1); - await cleanupReindex(test2); - await cleanupReindex(test3); - } - }); - }); -} diff --git a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/reindexing.ts b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/reindexing.ts new file mode 100644 index 0000000000000..f78ac7cb2521d --- /dev/null +++ b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/reindexing.ts @@ -0,0 +1,262 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; + +import { + ReindexStatus, + REINDEX_OP_TYPE, + type ResolveIndexResponseFromES, +} from '@kbn/upgrade-assistant-plugin/common/types'; +import { generateNewIndexName } from '@kbn/upgrade-assistant-plugin/server/lib/reindexing/index_settings'; +import { getIndexState } from '@kbn/upgrade-assistant-plugin/common/get_index_state'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + const es = getService('es'); + + // Utility function that keeps polling API until reindex operation has completed or failed. + const waitForReindexToComplete = async (indexName: string) => { + let lastState; + + while (true) { + lastState = (await supertest.get(`/api/upgrade_assistant/reindex/${indexName}`).expect(200)) + .body.reindexOp; + // Once the operation is completed or failed and unlocked, stop polling. + if (lastState.status !== ReindexStatus.inProgress && lastState.locked === null) { + break; + } + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + + return lastState; + }; + + describe('reindexing', () => { + afterEach(() => { + // Cleanup saved objects + return es.deleteByQuery({ + index: '.kibana', + refresh: true, + body: { + query: { + simple_query_string: { + query: REINDEX_OP_TYPE, + fields: ['type'], + }, + }, + }, + }); + }); + + it('should create a new index with the same documents', async () => { + await esArchiver.load('x-pack/test/functional/es_archives/upgrade_assistant/reindex'); + const { body } = await supertest + .post(`/api/upgrade_assistant/reindex/dummydata`) + .set('kbn-xsrf', 'xxx') + .expect(200); + + expect(body.indexName).to.equal('dummydata'); + expect(body.status).to.equal(ReindexStatus.inProgress); + + const lastState = await waitForReindexToComplete('dummydata'); + expect(lastState.errorMessage).to.equal(null); + expect(lastState.status).to.equal(ReindexStatus.completed); + + const { newIndexName } = lastState; + const indexSummary = await es.indices.get({ index: 'dummydata' }); + + // The new index was created + expect(indexSummary[newIndexName]).to.be.an('object'); + // The original index name is aliased to the new one + expect(indexSummary[newIndexName].aliases?.dummydata).to.be.an('object'); + // Verify mappings exist on new index + expect(indexSummary[newIndexName].mappings?.properties).to.be.an('object'); + // The number of documents in the new index matches what we expect + expect((await es.count({ index: lastState.newIndexName })).count).to.be(3); + + // Cleanup newly created index + await es.indices.delete({ + index: lastState.newIndexName, + }); + }); + + it('can resume after reindexing was stopped right after creating the new index', async () => { + await esArchiver.load('x-pack/test/functional/es_archives/upgrade_assistant/reindex'); + + // This new index is the new soon to be created reindexed index. We create it + // upfront to simulate a situation in which the user restarted kibana half + // way through the reindex process and ended up with an extra index. + await es.indices.create({ index: 'reindexed-v9-dummydata' }); + + const { body } = await supertest + .post(`/api/upgrade_assistant/reindex/dummydata`) + .set('kbn-xsrf', 'xxx') + .expect(200); + + expect(body.indexName).to.equal('dummydata'); + expect(body.status).to.equal(ReindexStatus.inProgress); + + const lastState = await waitForReindexToComplete('dummydata'); + expect(lastState.errorMessage).to.equal(null); + expect(lastState.status).to.equal(ReindexStatus.completed); + + // Cleanup newly created index + await es.indices.delete({ + index: lastState.newIndexName, + }); + }); + + it('should update any aliases', async () => { + await esArchiver.load('x-pack/test/functional/es_archives/upgrade_assistant/reindex'); + + // Add aliases and ensure each returns the right number of docs + await es.indices.updateAliases({ + body: { + actions: [ + { add: { index: 'dummydata', alias: 'myAlias' } }, + { add: { index: 'dummy*', alias: 'wildcardAlias' } }, + { + add: { index: 'dummydata', alias: 'myHttpsAlias', filter: { term: { https: true } } }, + }, + ], + }, + }); + expect((await es.count({ index: 'myAlias' })).count).to.be(3); + expect((await es.count({ index: 'wildcardAlias' })).count).to.be(3); + expect((await es.count({ index: 'myHttpsAlias' })).count).to.be(2); + + // Reindex + await supertest + .post(`/api/upgrade_assistant/reindex/dummydata`) + .set('kbn-xsrf', 'xxx') + .expect(200); + const lastState = await waitForReindexToComplete('dummydata'); + + // The regular aliases should still return 3 docs + expect((await es.count({ index: 'myAlias' })).count).to.be(3); + expect((await es.count({ index: 'wildcardAlias' })).count).to.be(3); + // The filtered alias should still return 2 docs + expect((await es.count({ index: 'myHttpsAlias' })).count).to.be(2); + + // Cleanup newly created index + await es.indices.delete({ + index: lastState.newIndexName, + }); + }); + + it('shows no warnings', async () => { + const resp = await supertest.get(`/api/upgrade_assistant/reindex/reindexed-v8-6.0-data`); // reusing the index previously migrated in v8->v9 UA tests + // By default, all reindexing operations will replace an index with an alias (with the same name) + // pointing to a newly created "reindexed" index. + expect(resp.body.warnings.length).to.be(1); + expect(resp.body.warnings[0].warningType).to.be('replaceIndexWithAlias'); + }); + + it('reindexes old 7.0 index', async () => { + const { body } = await supertest + .post(`/api/upgrade_assistant/reindex/reindexed-v8-6.0-data`) // reusing the index previously migrated in v8->v9 UA tests + .set('kbn-xsrf', 'xxx') + .expect(200); + + expect(body.indexName).to.equal('reindexed-v8-6.0-data'); + expect(body.status).to.equal(ReindexStatus.inProgress); + + const lastState = await waitForReindexToComplete('reindexed-v8-6.0-data'); + expect(lastState.errorMessage).to.equal(null); + expect(lastState.status).to.equal(ReindexStatus.completed); + }); + + it('should reindex a batch in order and report queue state', async () => { + const assertQueueState = async ( + firstInQueueIndexName: string | undefined, + queueLength: number + ) => { + const response = await supertest + .get(`/api/upgrade_assistant/reindex/batch/queue`) + .set('kbn-xsrf', 'xxx') + .expect(200); + + const { queue } = response.body; + + const [firstInQueue] = queue; + + if (!firstInQueueIndexName) { + expect(firstInQueueIndexName).to.be(undefined); + } else { + expect(firstInQueue.indexName).to.be(firstInQueueIndexName); + } + + expect(queue.length).to.be(queueLength); + }; + + const test1 = 'batch-reindex-test1'; + const test2 = 'batch-reindex-test2'; + const test3 = 'batch-reindex-test3'; + + const cleanupReindex = async (indexName: string) => { + try { + await es.indices.delete({ index: generateNewIndexName(indexName) }); + } catch (e) { + try { + await es.indices.delete({ index: indexName }); + } catch (_err) { + // Ignore + } + } + }; + + try { + // Set up indices for the batch + await es.indices.create({ index: test1 }); + await es.indices.create({ index: test2 }); + await es.indices.create({ index: test3 }); + + await es.indices.close({ index: test1 }); + + const result = await supertest + .post(`/api/upgrade_assistant/reindex/batch`) + .set('kbn-xsrf', 'xxx') + .send({ indexNames: [test1, test2, test3] }) + .expect(200); + + expect(result.body.enqueued.length).to.equal(3); + expect(result.body.errors.length).to.equal(0); + + const [{ newIndexName: nameOfIndexThatShouldBeClosed }] = result.body.enqueued; + + await assertQueueState(test1, 3); + await waitForReindexToComplete(test1); + + await assertQueueState(test2, 2); + await waitForReindexToComplete(test2); + + await assertQueueState(test3, 1); + await waitForReindexToComplete(test3); + + await assertQueueState(undefined, 0); + + // Check that the closed index is still closed after reindexing + const resolvedIndices = await es.indices.resolveIndex({ + name: nameOfIndexThatShouldBeClosed, + }); + + const test1ReindexedState = getIndexState( + nameOfIndexThatShouldBeClosed, + resolvedIndices as ResolveIndexResponseFromES + ); + expect(test1ReindexedState).to.be('closed'); + } finally { + await cleanupReindex(test1); + await cleanupReindex(test2); + await cleanupReindex(test3); + } + }); + }); +} diff --git a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/mock_data.ts b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/mock_data.ts index 7bd4b7f3e7a22..e0f6c5d43e788 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/mock_data.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/mock_data.ts @@ -15,6 +15,14 @@ export const mockAutoOpsResponse = { [1726862130000, 14657904], ], }, + { + name: 'metrics-system.core.total.pct-default', + error: null, + data: [ + [1726858530000, 13756849], + [1726862130000, 14657904], + ], + }, { name: 'logs-nginx.access-default', error: null, @@ -33,6 +41,14 @@ export const mockAutoOpsResponse = { [1726862130000, 13956423], ], }, + { + name: 'metrics-system.core.total.pct-default', + error: null, + data: [ + [1726858530000, 13756849], + [1726862130000, 14657904], + ], + }, { name: 'logs-nginx.access-default', error: null, diff --git a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/data_streams.ts b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/data_streams.ts index b4dd8d51c331a..e591d23b125e4 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/data_streams.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/data_streams.ts @@ -54,10 +54,7 @@ export default function ({ getService }: FtrProviderContext) { const res = await supertestAdminWithCookieCredentials .get(DATA_USAGE_DATA_STREAMS_API_ROUTE) .set('elastic-api-version', '1'); - const dataStreams: DataStreamsResponseBodySchemaBody = res.body; - const foundStream = dataStreams.find((stream) => stream.name === testDataStreamName); - expect(res.statusCode).to.be(200); - expect(foundStream).to.be(undefined); + expect(res.statusCode).to.be(404); }); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/metrics.ts b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/metrics.ts index 5460b750a5b21..6a0774ea2e8f4 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/metrics.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/metrics.ts @@ -29,7 +29,7 @@ export default function ({ getService }: FtrProviderContext) { const mockAutoopsApiService = setupMockServer(); describe('Metrics', function () { let mockApiServer: http.Server; - // due to the plugin depending on yml config (xpack.dataUsage.enabled), we cannot test in MKI until it is on by default + // MKI has a different config in the QA environment and will ignore the mock service this.tags(['skipMKI']); before(async () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/common/telemetry/telemetry_config.ts b/x-pack/test_serverless/api_integration/test_suites/common/telemetry/telemetry_config.ts index 33726b6af0f64..6819dd0c0e8f7 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/telemetry/telemetry_config.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/telemetry/telemetry_config.ts @@ -59,12 +59,12 @@ export default function telemetryConfigTest({ getService }: FtrProviderContext) .send({ 'telemetry.labels.journeyName': 'my-ftr-test' }) .expect(200, { ok: true }); - await supertestAdminWithApiKey.get('/api/telemetry/v2/config').expect(200, { - ...initialConfig, - labels: { - ...initialConfig.labels, - journeyName: 'my-ftr-test', - }, + await retry.tryForTime(retryTimeout, async function retryTelemetryConfigGetRequest() { + const { body } = await supertestAdminWithApiKey.get('/api/telemetry/v2/config').expect(200); + expect(body).to.eql( + { ...initialConfig, labels: { ...initialConfig.labels, journeyName: 'my-ftr-test' } }, + `Expected the response body to include the dynamically set telemetry.labels.journeyName, but got: [${body}]` + ); }); // Sends "null" to remove the label @@ -78,7 +78,7 @@ export default function telemetryConfigTest({ getService }: FtrProviderContext) const { body } = await supertestAdminWithApiKey.get('/api/telemetry/v2/config').expect(200); expect(body).to.eql( initialConfig, - `Expected the response body to match the intitial config, but got: [${body}]` + `Expected the response body to match the initial config, but got: [${body}]` ); }); }); diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts index 04f0110527c79..f3a3acb9f805c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts @@ -94,6 +94,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:apm/show", "ui:apm/save", "ui:apm/alerting:show", @@ -1572,6 +1577,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:apm/show", "ui:apm/save", "ui:apm/alerting:show", @@ -3041,6 +3051,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:apm/show", "ui:apm/alerting:show", "alerting:apm.error_rate/apm/rule/get", @@ -3651,6 +3666,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:apm/show", "ui:apm/alerting:show", "alerting:apm.error_rate/apm/rule/get", @@ -4896,6 +4916,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:config-global/find", "saved_object:config-global/open_point_in_time", "saved_object:config-global/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/save", "ui:discover/saveQuery", @@ -6103,6 +6128,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/save", "ui:discover/saveQuery", @@ -7278,6 +7308,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "api:rac", "app:observability", @@ -7777,6 +7812,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:telemetry/find", "saved_object:telemetry/open_point_in_time", "saved_object:telemetry/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/createShortUrl", "api:rac", @@ -8879,6 +8919,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:fleetv2/read", "ui:fleetv2/all", "ui:fleetv2/agents_read", @@ -9370,6 +9415,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:fleetv2/read", "ui:fleetv2/all", "api:infra", @@ -9763,6 +9813,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:fleetv2/read", "api:infra", "api:rac", @@ -9982,6 +10037,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:fleetv2/read", "ui:fleetv2/agents_read", "ui:fleetv2/agent_policies_read", @@ -10402,6 +10462,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:infrastructure/show", "ui:infrastructure/configureSource", "ui:infrastructure/save", @@ -11920,6 +11985,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:infrastructure/show", "ui:infrastructure/configureSource", "ui:infrastructure/save", @@ -13417,6 +13487,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:infrastructure/show", "alerting:metrics.alert.threshold/infrastructure/rule/get", "alerting:metrics.alert.threshold/infrastructure/rule/getRuleState", @@ -14042,6 +14117,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:infrastructure/show", "alerting:metrics.alert.threshold/infrastructure/rule/get", "alerting:metrics.alert.threshold/infrastructure/rule/getRuleState", @@ -14650,6 +14730,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -14685,6 +14770,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -14713,6 +14803,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], "read": Array [ "login:", @@ -14736,6 +14831,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], }, "slo": Object { @@ -14801,6 +14901,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:slo/read", "ui:slo/write", "alerting:slo.rules.burnRate/slo/rule/get", @@ -16025,6 +16130,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:slo/read", "ui:slo/write", "alerting:slo.rules.burnRate/slo/rule/get", @@ -17227,6 +17337,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:slo/read", "alerting:slo.rules.burnRate/slo/rule/get", "alerting:slo.rules.burnRate/slo/rule/getRuleState", @@ -17727,6 +17842,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:slo/read", "alerting:slo.rules.burnRate/slo/rule/get", "alerting:slo.rules.burnRate/slo/rule/getRuleState", @@ -18315,6 +18435,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:uptime/save", "ui:uptime/configureSettings", "ui:uptime/show", @@ -19791,6 +19916,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:uptime/save", "ui:uptime/configureSettings", "ui:uptime/show", @@ -21189,6 +21319,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:uptime/show", "ui:uptime/alerting:save", "alerting:xpack.uptime.alerts.tls/uptime/rule/get", @@ -21784,6 +21919,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:uptime/show", "ui:uptime/alerting:save", "alerting:xpack.uptime.alerts.tls/uptime/rule/get", diff --git a/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts index ed9fdd30cbdae..c3fad6aa67ca8 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts @@ -703,6 +703,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:config-global/find", "saved_object:config-global/open_point_in_time", "saved_object:config-global/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/save", "ui:discover/saveQuery", @@ -782,6 +787,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/save", "ui:discover/saveQuery", @@ -829,6 +839,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", ], "read": Array [ @@ -881,6 +896,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:telemetry/find", "saved_object:telemetry/open_point_in_time", "saved_object:telemetry/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/createShortUrl", ], @@ -949,6 +969,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -984,6 +1009,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -1012,6 +1042,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], "read": Array [ "login:", @@ -1035,6 +1070,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], }, } diff --git a/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts index 1f9a7f74fd572..dac4ff0604a1e 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts @@ -67,6 +67,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -102,6 +107,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -130,6 +140,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], "read": Array [ "login:", @@ -153,6 +168,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], }, "siem": Object { @@ -436,6 +456,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:siem/show", "ui:siem/crud", "ui:siem/entity-analytics", @@ -843,11 +868,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:map/find", "saved_object:map/open_point_in_time", "saved_object:map/close_point_in_time", - "saved_object:tag/bulk_get", - "saved_object:tag/get", - "saved_object:tag/find", - "saved_object:tag/open_point_in_time", - "saved_object:tag/close_point_in_time", "ui:dashboard/createNew", "ui:dashboard/show", "ui:dashboard/showWriteControls", @@ -1295,6 +1315,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:siem/show", "ui:siem/crud", "ui:siem/entity-analytics", @@ -1700,11 +1725,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:map/find", "saved_object:map/open_point_in_time", "saved_object:map/close_point_in_time", - "saved_object:tag/bulk_get", - "saved_object:tag/get", - "saved_object:tag/find", - "saved_object:tag/open_point_in_time", - "saved_object:tag/close_point_in_time", "ui:dashboard/createNew", "ui:dashboard/show", "ui:dashboard/showWriteControls", @@ -1876,6 +1896,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:siem/show", "ui:siem/entity-analytics", "ui:siem/investigation-guide", @@ -2065,11 +2090,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:dashboard/find", "saved_object:dashboard/open_point_in_time", "saved_object:dashboard/close_point_in_time", - "saved_object:tag/bulk_get", - "saved_object:tag/get", - "saved_object:tag/find", - "saved_object:tag/open_point_in_time", - "saved_object:tag/close_point_in_time", "ui:dashboard/show", "ui:dashboard/createShortUrl", "app:visualize", @@ -2243,6 +2263,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:siem/show", "ui:siem/entity-analytics", "ui:siem/investigation-guide", @@ -2433,11 +2458,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:dashboard/find", "saved_object:dashboard/open_point_in_time", "saved_object:dashboard/close_point_in_time", - "saved_object:tag/bulk_get", - "saved_object:tag/get", - "saved_object:tag/find", - "saved_object:tag/open_point_in_time", - "saved_object:tag/close_point_in_time", "ui:dashboard/show", "ui:dashboard/createShortUrl", "app:visualize", diff --git a/x-pack/test_serverless/functional/page_objects/index.ts b/x-pack/test_serverless/functional/page_objects/index.ts index e10e98529b8bf..5c00c95b73a1d 100644 --- a/x-pack/test_serverless/functional/page_objects/index.ts +++ b/x-pack/test_serverless/functional/page_objects/index.ts @@ -26,6 +26,7 @@ import { SvlSearchElasticsearchStartPageProvider } from './svl_search_elasticsea import { SvlApiKeysProvider } from './svl_api_keys'; import { SvlSearchCreateIndexPageProvider } from './svl_search_create_index_page'; import { SvlSearchInferenceManagementPageProvider } from './svl_search_inference_management_page'; +import { SvlDataUsagePageProvider } from './svl_data_usage'; export const pageObjects = { ...xpackFunctionalPageObjects, @@ -49,4 +50,5 @@ export const pageObjects = { svlApiKeys: SvlApiKeysProvider, svlSearchCreateIndexPage: SvlSearchCreateIndexPageProvider, svlSearchInferenceManagementPage: SvlSearchInferenceManagementPageProvider, + svlDataUsagePage: SvlDataUsagePageProvider, }; diff --git a/x-pack/test_serverless/functional/page_objects/svl_data_usage.ts b/x-pack/test_serverless/functional/page_objects/svl_data_usage.ts new file mode 100644 index 0000000000000..ccece1e10e113 --- /dev/null +++ b/x-pack/test_serverless/functional/page_objects/svl_data_usage.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; +import { FtrProviderContext } from '../ftr_provider_context'; + +export function SvlDataUsagePageProvider({ getService }: FtrProviderContext) { + const testSubjects = getService('testSubjects'); + + return { + async assertDataUsagePageExists(): Promise { + return await testSubjects.exists('data-usage-page'); + }, + async clickDatastreamsDropdown() { + await testSubjects.click('data-usage-metrics-filter-dataStreams-popoverButton'); + }, + async findDatastreamsDropdownOptions() { + return await testSubjects.findAll('dataStreams-filter-option'); + }, + async findDatastreamsDropdownFilterButton() { + return await testSubjects.find('data-usage-metrics-filter-dataStreams-popoverButton'); + }, + async findIngestRateChart() { + return await testSubjects.find('ingest_rate-chart'); + }, + async storageRetainedChart() { + return await testSubjects.find('storage_retained-chart'); + }, + async findLegendItemsInChart(chartElement: WebElementWrapper) { + return await chartElement.findAllByCssSelector('li.echLegendItem'); + }, + async findLegendActionButton(legendItemElement: WebElementWrapper) { + return legendItemElement.findByTestSubject('legendActionButton'); + }, + async clickLegendActionButtonAtIndex(chartElement: WebElementWrapper, index: number) { + const legendItems = await this.findLegendItemsInChart(chartElement); + if (index < 0 || index >= legendItems.length) { + throw new Error( + `Invalid legend item index: ${index}. There are only ${legendItems.length} legend items.` + ); + } + const legendItem = legendItems[index]; + const actionButton = await this.findLegendActionButton(legendItem); + await actionButton.click(); + }, + + async assertLegendActionPopoverExists() { + await testSubjects.existOrFail('legendActionPopover'); + }, + }; +} diff --git a/x-pack/test_serverless/functional/page_objects/svl_search_connectors_page.ts b/x-pack/test_serverless/functional/page_objects/svl_search_connectors_page.ts index 2e754337c03fe..96155e592ee94 100644 --- a/x-pack/test_serverless/functional/page_objects/svl_search_connectors_page.ts +++ b/x-pack/test_serverless/functional/page_objects/svl_search_connectors_page.ts @@ -12,6 +12,7 @@ export function SvlSearchConnectorsPageProvider({ getService }: FtrProviderConte const browser = getService('browser'); const retry = getService('retry'); const es = getService('es'); + const comboBox = getService('comboBox'); return { helpers: { async deleteAllConnectors() { @@ -63,10 +64,7 @@ export function SvlSearchConnectorsPageProvider({ getService }: FtrProviderConte async editType(type: string) { await testSubjects.existOrFail('serverlessSearchEditConnectorType'); await testSubjects.existOrFail('serverlessSearchEditConnectorTypeChoices'); - await testSubjects.click('serverlessSearchEditConnectorTypeChoices'); - await testSubjects.setValue('serverlessSearchEditConnectorTypeChoices', type); - await testSubjects.exists(`serverlessSearchConnectorServiceType-${type}`); - await testSubjects.click(`serverlessSearchConnectorServiceType-${type}`); + await comboBox.filterOptionsList('serverlessSearchEditConnectorTypeChoices', type); }, async expectConnectorIdToMatchUrl(connectorId: string) { expect(await browser.getCurrentUrl()).contain(`/app/connectors/${connectorId}`); diff --git a/x-pack/test_serverless/functional/services/index.ts b/x-pack/test_serverless/functional/services/index.ts index 770cdbb88c97a..198b6be56934d 100644 --- a/x-pack/test_serverless/functional/services/index.ts +++ b/x-pack/test_serverless/functional/services/index.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { ComboBoxService } from '@kbn/test-suites-src/functional/services/combo_box'; import { services as deploymentAgnosticFunctionalServices } from './deployment_agnostic_services'; import { services as svlSharedServices } from '../../shared/services'; import { SvlCommonNavigationServiceProvider } from './svl_common_navigation'; @@ -35,4 +36,6 @@ export const services = { // log services svlLogsSynthtraceClient: LogsSynthtraceProvider, alertingApi: SvlApiIntegrationSvcs.alertingApi, + // EUI components + comboBox: ComboBoxService, }; diff --git a/x-pack/test_serverless/functional/test_suites/common/data_usage/main.ts b/x-pack/test_serverless/functional/test_suites/common/data_usage/main.ts index 0b59557229cd4..438bf5ab7ee84 100644 --- a/x-pack/test_serverless/functional/test_suites/common/data_usage/main.ts +++ b/x-pack/test_serverless/functional/test_suites/common/data_usage/main.ts @@ -4,30 +4,200 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - +import expect from '@kbn/expect'; +import http from 'http'; +import { InterceptResponseFactory } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../../ftr_provider_context'; +import { setupMockServer } from '../../../../api_integration/test_suites/common/data_usage/mock_api'; export default ({ getPageObjects, getService }: FtrProviderContext) => { - const pageObjects = getPageObjects(['svlCommonPage', 'svlManagementPage', 'common']); + const pageObjects = getPageObjects([ + 'svlDataUsagePage', + 'svlCommonPage', + 'svlManagementPage', + 'common', + ]); const testSubjects = getService('testSubjects'); const retry = getService('retry'); + const mockAutoopsApiService = setupMockServer(); + const es = getService('es'); + const browser = getService('browser'); + let mockApiServer: http.Server; + const dataStreamsMockResponse = [ + { + name: 'metrics-system.cpu-default', + storageSizeBytes: 6197, + }, + { + name: 'metrics-system.core.total.pct-default', + storageSizeBytes: 5197, + }, + { + name: 'logs-nginx.access-default', + storageSizeBytes: 1938, + }, + ]; describe('Main page', function () { this.tags(['skipMKI']); before(async () => { + // create test data streams from the mock data streams response + // so the metrics api can verify they exist + for (const { name } of dataStreamsMockResponse) { + await es.indices.putIndexTemplate({ + name, + body: { + index_patterns: [name], + data_stream: {}, + priority: 200, + }, + }); + await es.indices.createDataStream({ name }); + } await pageObjects.svlCommonPage.loginAsAdmin(); await pageObjects.common.navigateToApp('management'); await retry.waitFor('page to be visible', async () => { return await testSubjects.exists('cards-navigation-page'); }); await pageObjects.svlManagementPage.assertDataUsageManagementCardExists(); - await pageObjects.svlManagementPage.clickDataUsageManagementCard(); + + // mock external API request to autoops + mockApiServer = mockAutoopsApiService.listen(9000); + + // intercept the data_streams request to bypass waiting for the metering api to aggregate a response + // otherwise storage sizes get filtered out if they are 0 + await browser.interceptRequest( + '*data_streams*', + (responseFactory: InterceptResponseFactory) => { + return responseFactory.fulfill({ + responseCode: 200, + responseHeaders: [{ name: 'Content-Type', value: 'application/json' }], + body: Buffer.from(JSON.stringify(dataStreamsMockResponse)).toString('base64'), + }); + }, + async () => { + await pageObjects.svlManagementPage.clickDataUsageManagementCard(); + } + ); + }); + after(async () => { + mockApiServer.close(); + for (const { name } of dataStreamsMockResponse) { + await es.indices.deleteDataStream({ name }); + } }); it('renders data usage page', async () => { await retry.waitFor('page to be visible', async () => { - return await testSubjects.exists('DataUsagePage'); + return await pageObjects.svlDataUsagePage.assertDataUsagePageExists(); + }); + }); + it('shows 3 data streams in the filter dropdown', async () => { + // Click the dropdown button to show the options + await pageObjects.svlDataUsagePage.clickDatastreamsDropdown(); + + const options = await pageObjects.svlDataUsagePage.findDatastreamsDropdownOptions(); + + // Assert that exactly 3 elements are present + expect(options.length).to.eql(3); + + // Assert that each option is checked + for (const option of options) { + const ariaChecked = await option.getAttribute('aria-checked'); + expect(ariaChecked).to.be('true'); + } + + // Locate the filter button using its data-test-subj + const datastreamsDropdownFilterButton = + await pageObjects.svlDataUsagePage.findDatastreamsDropdownFilterButton(); + + // Find the badge element within the button (using its CSS class) + const notificationBadge = await datastreamsDropdownFilterButton.findByCssSelector( + '.euiNotificationBadge' + ); + + // Retrieve the text content of the badge + const activeFiltersCount = await notificationBadge.getVisibleText(); + + // Assert the badge displays the expected count + expect(activeFiltersCount).to.be('3'); + }); + it('renders charts', async () => { + // Data is coming from the mocked autoops API + const chartContainer = await testSubjects.find('data-usage-metrics'); + await testSubjects.existOrFail('data-usage-metrics'); + + // Check 2 charts rendered + await retry.waitFor('chart to render', async () => { + const chartStatus = await chartContainer.findAllByCssSelector( + '.echChartStatus[data-ech-render-complete="true"]' + ); + return chartStatus.length === 2; + }); + }); + it('renders legend', async () => { + const ingestRateChart = await pageObjects.svlDataUsagePage.findIngestRateChart(); + const storageRetainedChart = await pageObjects.svlDataUsagePage.storageRetainedChart(); + + const ingestLegendItems = await pageObjects.svlDataUsagePage.findLegendItemsInChart( + ingestRateChart + ); + + expect(ingestLegendItems.length).to.eql(4); // 3 data streams + 1 Total line series + + const storageLegendItems = await pageObjects.svlDataUsagePage.findLegendItemsInChart( + storageRetainedChart + ); + expect(storageLegendItems.length).to.eql(4); // same number of data streams + total line series + }); + it('renders actions popover with correct links', async () => { + // Open the first legend item actions popover + const ingestRateChart = await pageObjects.svlDataUsagePage.findIngestRateChart(); + await pageObjects.svlDataUsagePage.clickLegendActionButtonAtIndex(ingestRateChart, 0); + await pageObjects.svlDataUsagePage.assertLegendActionPopoverExists(); + // Check for links + await testSubjects.existOrFail('copyDataStreamNameAction'); + await testSubjects.existOrFail('manageDataStreamAction'); + await testSubjects.existOrFail('DatasetQualityAction'); + + const manageLink = await testSubjects.find('manageDataStreamAction'); + await manageLink.click(); + + // Wait for navigation to the data stream details page + await retry.waitFor('URL to update (index management)', async () => { + const currentUrl = await browser.getCurrentUrl(); + return currentUrl.includes( + `/app/management/data/index_management/data_streams/${dataStreamsMockResponse[0].name}` + ); + }); + await browser.goBack(); + // test second link to ensure state changed + await pageObjects.svlDataUsagePage.clickLegendActionButtonAtIndex(ingestRateChart, 1); + await pageObjects.svlDataUsagePage.assertLegendActionPopoverExists(); + + await manageLink.click(); + + // Wait for navigation to the data stream details page + await retry.waitFor('URL to update (index management)', async () => { + const currentUrl = await browser.getCurrentUrl(); + return currentUrl.includes( + `/app/management/data/index_management/data_streams/${dataStreamsMockResponse[1].name}` + ); + }); + await browser.goBack(); + + // Test navigation for the data quality link + await pageObjects.svlDataUsagePage.clickLegendActionButtonAtIndex(ingestRateChart, 0); + await pageObjects.svlDataUsagePage.assertLegendActionPopoverExists(); + const dataQualityLink = await testSubjects.find('DatasetQualityAction'); + await dataQualityLink.click(); + + // Wait for navigation to the data quality details page + await retry.waitFor('URL to update (data quality)', async () => { + const currentUrl = await browser.getCurrentUrl(); + return currentUrl.includes('/app/management/data/data_quality/details'); }); + await browser.goBack(); }); }); }; diff --git a/x-pack/test_serverless/functional/test_suites/common/data_usage/privileges.ts b/x-pack/test_serverless/functional/test_suites/common/data_usage/privileges.ts index 4efcdd2586a85..dab301dff34ea 100644 --- a/x-pack/test_serverless/functional/test_suites/common/data_usage/privileges.ts +++ b/x-pack/test_serverless/functional/test_suites/common/data_usage/privileges.ts @@ -30,11 +30,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { if (expectedVisible) { await pageObjects.svlManagementPage.assertDataUsageManagementCardExists(); await pageObjects.common.navigateToApp(dataUsageAppUrl); - await testSubjects.exists('DataUsagePage'); + await testSubjects.exists('data-usage-page'); } else { await pageObjects.svlManagementPage.assertDataUsageManagementCardDoesNotExist(); await pageObjects.common.navigateToApp(dataUsageAppUrl); - await testSubjects.missingOrFail('DataUsagePage'); + await testSubjects.missingOrFail('data-usage-page'); } }; diff --git a/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/__snapshots__/reporting.snap b/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/__snapshots__/reporting.snap index b1c827636da6e..41c122d9ec398 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/__snapshots__/reporting.snap +++ b/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/__snapshots__/reporting.snap @@ -905,908 +905,1169 @@ exports[`discover Discover CSV Export Generate CSV: archived search generates a `; exports[`discover Discover CSV Export Generate CSV: new search generates a large export 1`] = ` -"\\"_id\\",\\"_ignored\\",\\"_index\\",\\"_score\\",category,\\"category.keyword\\",currency,\\"customer_first_name\\",\\"customer_first_name.keyword\\",\\"customer_full_name\\",\\"customer_full_name.keyword\\",\\"customer_gender\\",\\"customer_id\\",\\"customer_last_name\\",\\"customer_last_name.keyword\\",\\"customer_phone\\",\\"day_of_week\\",\\"day_of_week_i\\",email,\\"geoip.city_name\\",\\"geoip.continent_name\\",\\"geoip.country_iso_code\\",\\"geoip.location\\",\\"geoip.region_name\\",manufacturer,\\"manufacturer.keyword\\",\\"order_date\\",\\"order_id\\",\\"products._id\\",\\"products._id.keyword\\",\\"products.base_price\\",\\"products.base_unit_price\\",\\"products.category\\",\\"products.category.keyword\\",\\"products.created_on\\",\\"products.discount_amount\\",\\"products.discount_percentage\\",\\"products.manufacturer\\",\\"products.manufacturer.keyword\\",\\"products.min_price\\",\\"products.price\\",\\"products.product_id\\",\\"products.product_name\\",\\"products.product_name.keyword\\",\\"products.quantity\\",\\"products.sku\\",\\"products.tax_amount\\",\\"products.taxful_price\\",\\"products.taxless_price\\",\\"products.unit_discount_amount\\",sku,\\"taxful_total_price\\",\\"taxless_total_price\\",\\"total_quantity\\",\\"total_unique_products\\",type,user -3AMtOW0BH63Xcmy432DJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing, Women's Accessories, Men's Accessories\\",\\"Men's Shoes, Men's Clothing, Women's Accessories, Men's Accessories\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Boone\\",\\"Sultan Al Boone\\",MALE,19,Boone,Boone,\\"(empty)\\",Saturday,5,\\"sultan al@boone-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Angeldale, Oceanavigations, Microlutions\\",\\"Angeldale, Oceanavigations, Microlutions\\",\\"Jul 12, 2019 @ 00:00:00.000\\",716724,\\"sold_product_716724_23975, sold_product_716724_6338, sold_product_716724_14116, sold_product_716724_15290\\",\\"sold_product_716724_23975, sold_product_716724_6338, sold_product_716724_14116, sold_product_716724_15290\\",\\"80, 60, 21.984, 11.992\\",\\"80, 60, 21.984, 11.992\\",\\"Men's Shoes, Men's Clothing, Women's Accessories, Men's Accessories\\",\\"Men's Shoes, Men's Clothing, Women's Accessories, Men's Accessories\\",\\"Dec 31, 2016 @ 00:00:00.000, Dec 31, 2016 @ 00:00:00.000, Dec 31, 2016 @ 00:00:00.000, Dec 31, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Angeldale, Oceanavigations, Microlutions, Oceanavigations\\",\\"Angeldale, Oceanavigations, Microlutions, Oceanavigations\\",\\"42.375, 33, 10.344, 6.109\\",\\"80, 60, 21.984, 11.992\\",\\"23,975, 6,338, 14,116, 15,290\\",\\"Winter boots - cognac, Trenchcoat - black, Watch - black, Hat - light grey multicolor\\",\\"Winter boots - cognac, Trenchcoat - black, Watch - black, Hat - light grey multicolor\\",\\"1, 1, 1, 1\\",\\"ZO0687606876, ZO0290502905, ZO0126701267, ZO0308503085\\",\\"0, 0, 0, 0\\",\\"80, 60, 21.984, 11.992\\",\\"80, 60, 21.984, 11.992\\",\\"0, 0, 0, 0\\",\\"ZO0687606876, ZO0290502905, ZO0126701267, ZO0308503085\\",174,174,4,4,order,sultan -9gMtOW0BH63Xcmy432DJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Pia,Pia,\\"Pia Richards\\",\\"Pia Richards\\",FEMALE,45,Richards,Richards,\\"(empty)\\",Saturday,5,\\"pia@richards-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jul 12, 2019 @ 00:00:00.000\\",591503,\\"sold_product_591503_14761, sold_product_591503_11632\\",\\"sold_product_591503_14761, sold_product_591503_11632\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 31, 2016 @ 00:00:00.000, Dec 31, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"10.703, 9.867\\",\\"20.984, 20.984\\",\\"14,761, 11,632\\",\\"Classic heels - blue, Summer dress - coral/pink\\",\\"Classic heels - blue, Summer dress - coral/pink\\",\\"1, 1\\",\\"ZO0006400064, ZO0150601506\\",\\"0, 0\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"0, 0\\",\\"ZO0006400064, ZO0150601506\\",\\"41.969\\",\\"41.969\\",2,2,order,pia -BgMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Meyer\\",\\"Brigitte Meyer\\",FEMALE,12,Meyer,Meyer,\\"(empty)\\",Saturday,5,\\"brigitte@meyer-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jul 12, 2019 @ 00:00:00.000\\",591709,\\"sold_product_591709_20734, sold_product_591709_7539\\",\\"sold_product_591709_20734, sold_product_591709_7539\\",\\"7.988, 33\\",\\"7.988, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 31, 2016 @ 00:00:00.000, Dec 31, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"3.6, 17.484\\",\\"7.988, 33\\",\\"20,734, 7,539\\",\\"Basic T-shirt - dark blue, Summer dress - scarab\\",\\"Basic T-shirt - dark blue, Summer dress - scarab\\",\\"1, 1\\",\\"ZO0638206382, ZO0038800388\\",\\"0, 0\\",\\"7.988, 33\\",\\"7.988, 33\\",\\"0, 0\\",\\"ZO0638206382, ZO0038800388\\",\\"40.969\\",\\"40.969\\",2,2,order,brigitte -KQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Mccarthy\\",\\"Abd Mccarthy\\",MALE,52,Mccarthy,Mccarthy,\\"(empty)\\",Saturday,5,\\"abd@mccarthy-family.zzz\\",Cairo,Africa,EG,\\"POINT" +"\\"order_date\\",\\"order_id\\" +\\"Jul 12, 2019 @ 00:00:00.000\\",590807 +\\"Jul 12, 2019 @ 00:00:00.000\\",590809 +\\"Jul 12, 2019 @ 00:00:00.000\\",590823 +\\"Jul 12, 2019 @ 00:00:00.000\\",590832 +\\"Jul 12, 2019 @ 00:00:00.000\\",590834 +\\"Jul 12, 2019 @ 00:00:00.000\\",590853 +\\"Jul 12, 2019 @ 00:00:00.000\\",590860 +\\"Jul 12, 2019 @ 00:00:00.000\\",590864 +\\"Jul 12, 2019 @ 00:00:00.000\\",590883 +\\"Jul 12, 2019 @ 00:00:00.000\\",590892 +\\"Jul 12, 2019 @ 00:00:00.000\\",590906 +\\"Jul 12, 2019 @ 00:00:00.000\\",590907 +\\"Jul 12, 2019 @ 00:00:00.000\\",590924 +\\"Jul 12, 2019 @ 00:00:00.000\\",590927 +\\"Jul 12, 2019 @ 00:00:00.000\\",590937 +\\"Jul 12, 2019 @ 00:00:00.000\\",590953 +\\"Jul 12, 2019 @ 00:00:00.000\\",590955 +\\"Jul 12, 2019 @ 00:00:00.000\\",590970 +\\"Jul 12, 2019 @ 00:00:00.000\\",590972 +\\"Jul 12, 2019 @ 00:00:00.000\\",590976 +\\"Jul 12, 2019 @ 00:00:00.000\\",590996 +\\"Jul 12, 2019 @ 00:00:00.000\\",591006 +\\"Jul 12, 2019 @ 00:00:00.000\\",591010 +\\"Jul 12, 2019 @ 00:00:00.000\\",591013 +\\"Jul 12, 2019 @ 00:00:00.000\\",591022 +\\"Jul 12, 2019 @ 00:00:00.000\\",591038 +\\"Jul 12, 2019 @ 00:00:00.000\\",591041 +\\"Jul 12, 2019 @ 00:00:00.000\\",591044 +\\"Jul 12, 2019 @ 00:00:00.000\\",591074 +\\"Jul 12, 2019 @ 00:00:00.000\\",591080 +\\"Jul 12, 2019 @ 00:00:00.000\\",591085 +\\"Jul 12, 2019 @ 00:00:00.000\\",591088 +\\"Jul 12, 2019 @ 00:00:00.000\\",591090 +\\"Jul 12, 2019 @ 00:00:00.000\\",591128 +\\"Jul 12, 2019 @ 00:00:00.000\\",591133 +\\"Jul 12, 2019 @ 00:00:00.000\\",591148 +\\"Jul 12, 2019 @ 00:00:00.000\\",591149 +\\"Jul 12, 2019 @ 00:00:00.000\\",591161 +\\"Jul 12, 2019 @ 00:00:00.000\\",591175 +\\"Jul 12, 2019 @ 00:00:00.000\\",591188 +\\"Jul 12, 2019 @ 00:00:00.000\\",591195 +\\"Jul 12, 2019 @ 00:00:00.000\\",591201 +\\"Jul 12, 2019 @ 00:00:00.000\\",591219 +\\"Jul 12, 2019 @ 00:00:00.000\\",591230 +\\"Jul 12, 2019 @ 00:00:00.000\\",591263 +\\"Jul 12, 2019 @ 00:00:00.000\\",591283 +\\"Jul 12, 2019 @ 00:00:00.000\\",591295 +\\"Jul 12, 2019 @ 00:00:00.000\\",591297 +\\"Jul 12, 2019 @ 00:00:00.000\\",591299 +\\"Jul 12, 2019 @ 00:00:00.000\\",591300 +\\"Jul 12, 2019 @ 00:00:00.000\\",591317 +\\"Jul 12, 2019 @ 00:00:00.000\\",591324 +\\"Jul 12, 2019 @ 00:00:00.000\\",591337 +\\"Jul 12, 2019 @ 00:00:00.000\\",591344 +\\"Jul 12, 2019 @ 00:00:00.000\\",591349 +\\"Jul 12, 2019 @ 00:00:00.000\\",591361 +\\"Jul 12, 2019 @ 00:00:00.000\\",591362 +\\"Jul 12, 2019 @ 00:00:00.000\\",591374 +\\"Jul 12, 2019 @ 00:00:00.000\\",591389 +\\"Jul 12, 2019 @ 00:00:00.000\\",591406 +\\"Jul 12, 2019 @ 00:00:00.000\\",591411 +\\"Jul 12, 2019 @ 00:00:00.000\\",591416 +\\"Jul 12, 2019 @ 00:00:00.000\\",591417 +\\"Jul 12, 2019 @ 00:00:00.000\\",591418 +\\"Jul 12, 2019 @ 00:00:00.000\\",591423 +\\"Jul 12, 2019 @ 00:00:00.000\\",591445 +\\"Jul 12, 2019 @ 00:00:00.000\\",591451 +\\"Jul 12, 2019 @ 00:00:00.000\\",591472 +\\"Jul 12, 2019 @ 00:00:00.000\\",591477 +\\"Jul 12, 2019 @ 00:00:00.000\\",591498 +\\"Jul 12, 2019 @ 00:00:00.000\\",591503 +\\"Jul 12, 2019 @ 00:00:00.000\\",591511 +\\"Jul 12, 2019 @ 00:00:00.000\\",591528 +\\"Jul 12, 2019 @ 00:00:00.000\\",591533 +\\"Jul 12, 2019 @ 00:00:00.000\\",591539 +\\"Jul 12, 2019 @ 00:00:00.000\\",591557 +\\"Jul 12, 2019 @ 00:00:00.000\\",591562 +\\"Jul 12, 2019 @ 00:00:00.000\\",591568 +\\"Jul 12, 2019 @ 00:00:00.000\\",591571 +\\"Jul 12, 2019 @ 00:00:00.000\\",591598 +\\"Jul 12, 2019 @ 00:00:00.000\\",591599 +\\"Jul 12, 2019 @ 00:00:00.000\\",591625 +\\"Jul 12, 2019 @ 00:00:00.000\\",591636 +\\"Jul 12, 2019 @ 00:00:00.000\\",591651 +\\"Jul 12, 2019 @ 00:00:00.000\\",591661 +\\"Jul 12, 2019 @ 00:00:00.000\\",591671 +\\"Jul 12, 2019 @ 00:00:00.000\\",591683 +\\"Jul 12, 2019 @ 00:00:00.000\\",591686 +\\"Jul 12, 2019 @ 00:00:00.000\\",591709 +\\"Jul 12, 2019 @ 00:00:00.000\\",591717 +\\"Jul 12, 2019 @ 00:00:00.000\\",591734 +\\"Jul 12, 2019 @ 00:00:00.000\\",591735 +\\"Jul 12, 2019 @ 00:00:00.000\\",591748 +\\"Jul 12, 2019 @ 00:00:00.000\\",591754 +\\"Jul 12, 2019 @ 00:00:00.000\\",591768 +\\"Jul 12, 2019 @ 00:00:00.000\\",591780 +\\"Jul 12, 2019 @ 00:00:00.000\\",591790 +\\"Jul 12, 2019 @ 00:00:00.000\\",591803 +\\"Jul 12, 2019 @ 00:00:00.000\\",591810 +\\"Jul 12, 2019 @ 00:00:00.000\\",591813 +\\"Jul 12, 2019 @ 00:00:00.000\\",591834 +\\"Jul 12, 2019 @ 00:00:00.000\\",591850 +\\"Jul 12, 2019 @ 00:00:00.000\\",591853 +\\"Jul 12, 2019 @ 00:00:00.000\\",591864 +\\"Jul 12, 2019 @ 00:00:00.000\\",591866 +\\"Jul 12, 2019 @ 00:00:00.000\\",591868 +\\"Jul 12, 2019 @ 00:00:00.000\\",591896 +\\"Jul 12, 2019 @ 00:00:00.000\\",591899 +\\"Jul 12, 2019 @ 00:00:00.000\\",591912 +\\"Jul 12, 2019 @ 00:00:00.000\\",591915 +\\"Jul 12, 2019 @ 00:00:00.000\\",591919 +\\"Jul 12, 2019 @ 00:00:00.000\\",591924 +\\"Jul 12, 2019 @ 00:00:00.000\\",591933 +\\"Jul 12, 2019 @ 00:00:00.000\\",591947 +\\"Jul 12, 2019 @ 00:00:00.000\\",591949 +\\"Jul 12, 2019 @ 00:00:00.000\\",591962 +\\"Jul 12, 2019 @ 00:00:00.000\\",591964 +\\"Jul 12, 2019 @ 00:00:00.000\\",591976 +\\"Jul 12, 2019 @ 00:00:00.000\\",591989 +\\"Jul 12, 2019 @ 00:00:00.000\\",592015 +\\"Jul 12, 2019 @ 00:00:00.000\\",592043 +\\"Jul 12, 2019 @ 00:00:00.000\\",592046 +\\"Jul 12, 2019 @ 00:00:00.000\\",592049 +\\"Jul 12, 2019 @ 00:00:00.000\\",592064 +\\"Jul 12, 2019 @ 00:00:00.000\\",592079 +\\"Jul 12, 2019 @ 00:00:00.000\\",592082 +\\"Jul 12, 2019 @ 00:00:00.000\\",592088 +\\"Jul 12, 2019 @ 00:00:00.000\\",592097 +\\"Jul 12, 2019 @ 00:00:00.000\\",592109 +\\"Jul 12, 2019 @ 00:00:00.000\\",713746 +\\"Jul 12, 2019 @ 00:00:00.000\\",714827 +\\"Jul 12, 2019 @ 00:00:00.000\\",716724 +\\"Jul 12, 2019 @ 00:00:00.000\\",717374 +\\"Jul 12, 2019 @ 00:00:00.000\\",718874 +\\"Jul 12, 2019 @ 00" `; exports[`discover Discover CSV Export Generate CSV: new search generates a large export 2`] = ` -" 11.992\\",\\"13,181, 23,660\\",\\"Briefcase - navy, Sports shirt - Seashell\\",\\"Briefcase - navy, Sports shirt - Seashell\\",\\"1, 1\\",\\"ZO0466704667, ZO0617306173\\",\\"0, 0\\",\\"42, 11.992\\",\\"42, 11.992\\",\\"0, 0\\",\\"ZO0466704667, ZO0617306173\\",\\"53.969\\",\\"53.969\\",2,2,order,kamal -7QMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Elyssa,Elyssa,\\"Elyssa Graves\\",\\"Elyssa Graves\\",FEMALE,27,Graves,Graves,\\"(empty)\\",Thursday,3,\\"elyssa@graves-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Pyramidustries,Pyramidustries,\\"Jun 12, 2019 @ 00:00:00.000\\",551204,\\"sold_product_551204_16805, sold_product_551204_12896\\",\\"sold_product_551204_16805, sold_product_551204_12896\\",\\"13.992, 20.984\\",\\"13.992, 20.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 1, 2016 @ 00:00:00.000, Dec 1, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"7.129, 9.656\\",\\"13.992, 20.984\\",\\"16,805, 12,896\\",\\"Bustier - white, Across body bag - cognac\\",\\"Bustier - white, Across body bag - cognac\\",\\"1, 1\\",\\"ZO0212602126, ZO0200702007\\",\\"0, 0\\",\\"13.992, 20.984\\",\\"13.992, 20.984\\",\\"0, 0\\",\\"ZO0212602126, ZO0200702007\\",\\"34.969\\",\\"34.969\\",2,2,order,elyssa -7gMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Pia,Pia,\\"Pia Rose\\",\\"Pia Rose\\",FEMALE,45,Rose,Rose,\\"(empty)\\",Thursday,3,\\"pia@rose-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Primemaster\\",\\"Oceanavigations, Primemaster\\",\\"Jun 12, 2019 @ 00:00:00.000\\",550466,\\"sold_product_550466_19198, sold_product_550466_16409\\",\\"sold_product_550466_19198, sold_product_550466_16409\\",\\"50, 100\\",\\"50, 100\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 1, 2016 @ 00:00:00.000, Dec 1, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Primemaster\\",\\"Oceanavigations, Primemaster\\",\\"24, 52\\",\\"50, 100\\",\\"19,198, 16,409\\",\\"Summer dress - grey, Boots - passion\\",\\"Summer dress - grey, Boots - passion\\",\\"1, 1\\",\\"ZO0260702607, ZO0363203632\\",\\"0, 0\\",\\"50, 100\\",\\"50, 100\\",\\"0, 0\\",\\"ZO0260702607, ZO0363203632\\",150,150,2,2,order,pia -7wMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Boone\\",\\"Wagdi Boone\\",MALE,15,Boone,Boone,\\"(empty)\\",Thursday,3,\\"wagdi@boone-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",Elitelligence,Elitelligence,\\"Jun 12, 2019 @ 00:00:00.000\\",550503,\\"sold_product_550503_13211, sold_product_550503_24369\\",\\"sold_product_550503_13211, sold_product_550503_24369\\",\\"34, 11.992\\",\\"34, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 1, 2016 @ 00:00:00.000, Dec 1, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"15.641, 6.109\\",\\"34, 11.992\\",\\"13,211, 24,369\\",\\"Tracksuit top - black, Print T-shirt - khaki\\",\\"Tracksuit top - black, Print T-shirt - khaki\\",\\"1, 1\\",\\"ZO0587505875, ZO0566405664\\",\\"0, 0\\",\\"34, 11.992\\",\\"34, 11.992\\",\\"0, 0\\",\\"ZO0587505875, ZO0566405664\\",\\"45.969\\",\\"45.969\\",2,2,order,wagdi -8AMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Hale\\",\\"Elyssa Hale\\",FEMALE,27,Hale,Hale,\\"(empty)\\",Thursday,3,\\"elyssa@hale-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"Jun 12, 2019 @ 00:00:00.000\\",550538,\\"sold_product_550538_15047, sold_product_550538_18189\\",\\"sold_product_550538_15047, sold_product_550538_18189\\",\\"75, 60\\",\\"75, 60\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 1, 2016 @ 00:00:00.000, Dec 1, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"34.5, 28.797\\",\\"75, 60\\",\\"15,047, 18,189\\",\\"Handbag - black, Ankle boots - grey\\",\\"Handbag - black, Ankle boots - grey\\",\\"1, 1\\",\\"ZO0699406994, ZO0246202462\\",\\"0, 0\\",\\"75, 60\\",\\"75, 60\\",\\"0, 0\\",\\"ZO0699406994, ZO0246202462\\",135,135,2,2,order,elyssa -8QMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Love\\",\\"Jackson Love\\",MALE,13,Love,Love,\\"(empty)\\",Thursday,3,\\"jackson@love-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 12, 2019 @ 00:00:00.000\\",550568,\\"sold_product_550568_17210, sold_product_550568_12524\\",\\"sold_product_550568_17210, sold_product_550568_12524\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 1, 2016 @ 00:00:00.000, Dec 1, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"25, 12.492\\",\\"50, 24.984\\",\\"17,210, 12,524\\",\\"Casual lace-ups - navy, Jumper - dark grey multicolor\\",\\"Casual lace-ups - navy, Jumper - dark grey multicolor\\",\\"1, 1\\",\\"ZO0388403884, ZO0447604476\\",\\"0, 0\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"0, 0\\",\\"ZO0388403884, ZO0447604476\\",75,75,2,2,order,jackson +"0473 +\\"Jun 12, 2019 @ 00:00:00.000\\",550503 +\\"Jun 12, 2019 @ 00:00:00.000\\",550519 +\\"Jun 12, 2019 @ 00:00:00.000\\",550521 +\\"Jun 12, 2019 @ 00:00:00.000\\",550522 +\\"Jun 12, 2019 @ 00:00:00.000\\",550538 +\\"Jun 12, 2019 @ 00:00:00.000\\",550542 +\\"Jun 12, 2019 @ 00:00:00.000\\",550568 +\\"Jun 12, 2019 @ 00:00:00.000\\",550569 +\\"Jun 12, 2019 @ 00:00:00.000\\",550578 +\\"Jun 12, 2019 @ 00:00:00.000\\",550580 +\\"Jun 12, 2019 @ 00:00:00.000\\",550588 +\\"Jun 12, 2019 @ 00:00:00.000\\",550609 +\\"Jun 12, 2019 @ 00:00:00.000\\",550622 +\\"Jun 12, 2019 @ 00:00:00.000\\",550644 +\\"Jun 12, 2019 @ 00:00:00.000\\",550653 +\\"Jun 12, 2019 @ 00:00:00.000\\",550659 +\\"Jun 12, 2019 @ 00:00:00.000\\",550663 +\\"Jun 12, 2019 @ 00:00:00.000\\",550670 +\\"Jun 12, 2019 @ 00:00:00.000\\",550687 +\\"Jun 12, 2019 @ 00:00:00.000\\",550694 +\\"Jun 12, 2019 @ 00:00:00.000\\",550708 +\\"Jun 12, 2019 @ 00:00:00.000\\",550709 +\\"Jun 12, 2019 @ 00:00:00.000\\",550710 +\\"Jun 12, 2019 @ 00:00:00.000\\",550718 +\\"Jun 12, 2019 @ 00:00:00.000\\",550724 +\\"Jun 12, 2019 @ 00:00:00.000\\",550728 +\\"Jun 12, 2019 @ 00:00:00.000\\",550736 +\\"Jun 12, 2019 @ 00:00:00.000\\",550743 +\\"Jun 12, 2019 @ 00:00:00.000\\",550771 +\\"Jun 12, 2019 @ 00:00:00.000\\",550784 +\\"Jun 12, 2019 @ 00:00:00.000\\",550810 +\\"Jun 12, 2019 @ 00:00:00.000\\",550817 +\\"Jun 12, 2019 @ 00:00:00.000\\",550828 +\\"Jun 12, 2019 @ 00:00:00.000\\",550833 +\\"Jun 12, 2019 @ 00:00:00.000\\",550841 +\\"Jun 12, 2019 @ 00:00:00.000\\",550861 +\\"Jun 12, 2019 @ 00:00:00.000\\",550864 +\\"Jun 12, 2019 @ 00:00:00.000\\",550884 +\\"Jun 12, 2019 @ 00:00:00.000\\",550892 +\\"Jun 12, 2019 @ 00:00:00.000\\",550896 +\\"Jun 12, 2019 @ 00:00:00.000\\",550900 +\\"Jun 12, 2019 @ 00:00:00.000\\",550921 +\\"Jun 12, 2019 @ 00:00:00.000\\",550936 +\\"Jun 12, 2019 @ 00:00:00.000\\",550942 +\\"Jun 12, 2019 @ 00:00:00.000\\",550951 +\\"Jun 12, 2019 @ 00:00:00.000\\",550955 +\\"Jun 12, 2019 @ 00:00:00.000\\",550957 +\\"Jun 12, 2019 @ 00:00:00.000\\",550984 +\\"Jun 12, 2019 @ 00:00:00.000\\",550989 +\\"Jun 12, 2019 @ 00:00:00.000\\",550990 +\\"Jun 12, 2019 @ 00:00:00.000\\",551008 +\\"Jun 12, 2019 @ 00:00:00.000\\",551018 +\\"Jun 12, 2019 @ 00:00:00.000\\",551026 +\\"Jun 12, 2019 @ 00:00:00.000\\",551032 +\\"Jun 12, 2019 @ 00:00:00.000\\",551038 +\\"Jun 12, 2019 @ 00:00:00.000\\",551042 +\\"Jun 12, 2019 @ 00:00:00.000\\",551064 +\\"Jun 12, 2019 @ 00:00:00.000\\",551068 +\\"Jun 12, 2019 @ 00:00:00.000\\",551077 +\\"Jun 12, 2019 @ 00:00:00.000\\",551095 +\\"Jun 12, 2019 @ 00:00:00.000\\",551108 +\\"Jun 12, 2019 @ 00:00:00.000\\",551111 +\\"Jun 12, 2019 @ 00:00:00.000\\",551114 +\\"Jun 12, 2019 @ 00:00:00.000\\",551115 +\\"Jun 12, 2019 @ 00:00:00.000\\",551133 +\\"Jun 12, 2019 @ 00:00:00.000\\",551137 +\\"Jun 12, 2019 @ 00:00:00.000\\",551141 +\\"Jun 12, 2019 @ 00:00:00.000\\",551153 +\\"Jun 12, 2019 @ 00:00:00.000\\",551154 +\\"Jun 12, 2019 @ 00:00:00.000\\",551183 +\\"Jun 12, 2019 @ 00:00:00.000\\",551185 +\\"Jun 12, 2019 @ 00:00:00.000\\",551189 +\\"Jun 12, 2019 @ 00:00:00.000\\",551194 +\\"Jun 12, 2019 @ 00:00:00.000\\",551204 +\\"Jun 12, 2019 @ 00:00:00.000\\",551220 +\\"Jun 12, 2019 @ 00:00:00.000\\",551222 +\\"Jun 12, 2019 @ 00:00:00.000\\",551237 +\\"Jun 12, 2019 @ 00:00:00.000\\",551251 +\\"Jun 12, 2019 @ 00:00:00.000\\",551271 +\\"Jun 12, 2019 @ 00:00:00.000\\",551279 +\\"Jun 12, 2019 @ 00:00:00.000\\",551281 +\\"Jun 12, 2019 @ 00:00:00.000\\",551285 +\\"Jun 12, 2019 @ 00:00:00.000\\",551295 +\\"Jun 12, 2019 @ 00:00:00.000\\",551324 +\\"Jun 12, 2019 @ 00:00:00.000\\",551329 +\\"Jun 12, 2019 @ 00:00:00.000\\",551338 +\\"Jun 12, 2019 @ 00:00:00.000\\",551346 +\\"Jun 12, 2019 @ 00:00:00.000\\",551355 +\\"Jun 12, 2019 @ 00:00:00.000\\",551374 +\\"Jun 12, 2019 @ 00:00:00.000\\",551396 +\\"Jun 12, 2019 @ 00:00:00.000\\",551404 +\\"Jun 12, 2019 @ 00:00:00.000\\",551410 +\\"Jun 12, 2019 @ 00:00:00.000\\",551427 +\\"Jun 12, 2019 @ 00:00:00.000\\",551432 +\\"Jun 12, 2019 @ 00:00:00.000\\",551439 +\\"Jun 12, 2019 @ 00:00:00.000\\",551449 +\\"Jun 12, 2019 @ 00:00:00.000\\",551457 +\\"Jun 12, 2019 @ 00:00:00.000\\",551461 +\\"Jun 12, 2019 @ 00:00:00.000\\",551473 +\\"Jun 12, 2019 @ 00:00:00.000\\",551480 +\\"Jun 12, 2019 @ 00:00:00.000\\",551488 +\\"Jun 12, 2019 @ 00:00:00.000\\",551496 +\\"Jun 12, 2019 @ 00:00:00.000\\",551504 +\\"Jun 12, 2019 @ 00:00:00.000\\",551507 +\\"Jun 12, 2019 @ 00:00:00.000\\",551525 +\\"Jun 12, 2019 @ 00:00:00.000\\",551531 +\\"Jun 12, 2019 @ 00:00:00.000\\",551542 +\\"Jun 12, 2019 @ 00:00:00.000\\",551556 +\\"Jun 12, 2019 @ 00:00:00.000\\",551559 +\\"Jun 12, 2019 @ 00:00:00.000\\",551566 +\\"Jun 12, 2019 @ 00:00:00.000\\",551605 +\\"Jun 12, 2019 @ 00:00:00.000\\",551609 +\\"Jun 12, 2019 @ 00:00:00.000\\",551620 +\\"Jun 12, 2019 @ 00:00:00.000\\",551624 +\\"Jun 12, 2019 @ 00:00:00.000\\",551647 +\\"Jun 12, 2019 @ 00:00:00.000\\",551655 +\\"Jun 12, 2019 @ 00:00:00.000\\",551659 +\\"Jun 12, 2019 @ 00:00:00.000\\",551674 +\\"Jun 12, 2019 @ 00:00:00.000\\",551677 +\\"Jun 12, 2019 @ 00:00:00.000\\",551689 +\\"Jun 12, 2019 @ 00:00:00.000\\",551695 +\\"Jun 12, 2019 @ 00:00:00.000\\",551697 +\\"Jun 12, 2019 @ 00:00:00.000\\",719265 +\\"Jun 12, 2019 @ 00:00:00.000\\",722809 +\\"Jun 12, 2019 @ 00:00:00.000\\",723304 +\\"Jun 12, 2019 @ 00:00:00.000\\",723321 +\\"Jun 12, 2019 @ 00:00:00.000\\",725553 +\\"Jun 12, 2019 @ 00:00:00.000\\",726062 +\\"Jun 12, 2019 @ 00:00:00.000\\",726702 +\\"Jun 12, 2019 @ 00:00:00.000\\",728387 +\\"Jun 12, 2019 @ 00:00:00.000\\",729030 +\\"Jun 12, 2019 @ 00:00:00.000\\",730078 +\\"Jun 12, 2019 @ 00:00:00.000\\",730372 +\\"Jun 12, 2019 @ 00:00:00.000\\",731007 +\\"Jun 12, 2019 @ 00:00:00.000\\",731056 " `; exports[`discover Discover CSV Export Generate CSV: new search generates a report from a new search with data: default 1`] = ` -"\\"_id\\",\\"_ignored\\",\\"_index\\",\\"_score\\",category,\\"category.keyword\\",currency,\\"customer_first_name\\",\\"customer_first_name.keyword\\",\\"customer_full_name\\",\\"customer_full_name.keyword\\",\\"customer_gender\\",\\"customer_id\\",\\"customer_last_name\\",\\"customer_last_name.keyword\\",\\"customer_phone\\",\\"day_of_week\\",\\"day_of_week_i\\",email,\\"geoip.city_name\\",\\"geoip.continent_name\\",\\"geoip.country_iso_code\\",\\"geoip.location\\",\\"geoip.region_name\\",manufacturer,\\"manufacturer.keyword\\",\\"order_date\\",\\"order_id\\",\\"products._id\\",\\"products._id.keyword\\",\\"products.base_price\\",\\"products.base_unit_price\\",\\"products.category\\",\\"products.category.keyword\\",\\"products.created_on\\",\\"products.discount_amount\\",\\"products.discount_percentage\\",\\"products.manufacturer\\",\\"products.manufacturer.keyword\\",\\"products.min_price\\",\\"products.price\\",\\"products.product_id\\",\\"products.product_name\\",\\"products.product_name.keyword\\",\\"products.quantity\\",\\"products.sku\\",\\"products.tax_amount\\",\\"products.taxful_price\\",\\"products.taxless_price\\",\\"products.unit_discount_amount\\",sku,\\"taxful_total_price\\",\\"taxless_total_price\\",\\"total_quantity\\",\\"total_unique_products\\",type,user -9AMtOW0BH63Xcmy432DJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Boris,Boris,\\"Boris Bradley\\",\\"Boris Bradley\\",MALE,36,Bradley,Bradley,\\"(empty)\\",Wednesday,2,\\"boris@bradley-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568397,\\"sold_product_568397_24419, sold_product_568397_20207\\",\\"sold_product_568397_24419, sold_product_568397_20207\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"17.484, 13.922\\",\\"33, 28.984\\",\\"24,419, 20,207\\",\\"Cargo trousers - oliv, Trousers - black\\",\\"Cargo trousers - oliv, Trousers - black\\",\\"1, 1\\",\\"ZO0112101121, ZO0530405304\\",\\"0, 0\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"0, 0\\",\\"ZO0112101121, ZO0530405304\\",\\"61.969\\",\\"61.969\\",2,2,order,boris -9QMtOW0BH63Xcmy432DJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Oliver,Oliver,\\"Oliver Hubbard\\",\\"Oliver Hubbard\\",MALE,7,Hubbard,Hubbard,\\"(empty)\\",Wednesday,2,\\"oliver@hubbard-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Spritechnologies, Microlutions\\",\\"Spritechnologies, Microlutions\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568044,\\"sold_product_568044_12799, sold_product_568044_18008\\",\\"sold_product_568044_12799, sold_product_568044_18008\\",\\"14.992, 16.984\\",\\"14.992, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Microlutions\\",\\"Spritechnologies, Microlutions\\",\\"6.898, 8.828\\",\\"14.992, 16.984\\",\\"12,799, 18,008\\",\\"Undershirt - dark grey multicolor, Long sleeved top - purple\\",\\"Undershirt - dark grey multicolor, Long sleeved top - purple\\",\\"1, 1\\",\\"ZO0630406304, ZO0120201202\\",\\"0, 0\\",\\"14.992, 16.984\\",\\"14.992, 16.984\\",\\"0, 0\\",\\"ZO0630406304, ZO0120201202\\",\\"31.984\\",\\"31.984\\",2,2,order,oliver -OAMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,Betty,Betty,\\"Betty Reese\\",\\"Betty Reese\\",FEMALE,44,Reese,Reese,\\"(empty)\\",Wednesday,2,\\"betty@reese-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",Pyramidustries,Pyramidustries,\\"Jun 25, 2019 @ 00:00:00.000\\",568229,\\"sold_product_568229_24991, sold_product_568229_12039\\",\\"sold_product_568229_24991, sold_product_568229_12039\\",\\"11.992, 10.992\\",\\"11.992, 10.992\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"6.352, 5.82\\",\\"11.992, 10.992\\",\\"24,991, 12,039\\",\\"Scarf - rose/white, Scarf - nude/black/turquoise\\",\\"Scarf - rose/white, Scarf - nude/black/turquoise\\",\\"1, 1\\",\\"ZO0192201922, ZO0192801928\\",\\"0, 0\\",\\"11.992, 10.992\\",\\"11.992, 10.992\\",\\"0, 0\\",\\"ZO0192201922, ZO0192801928\\",\\"22.984\\",\\"22.984\\",2,2,order,betty -OQMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Recip,Recip,\\"Recip Salazar\\",\\"Recip Salazar\\",MALE,10,Salazar,Salazar,\\"(empty)\\",Wednesday,2,\\"recip@salazar-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,Elitelligence,Elitelligence,\\"Jun 25, 2019 @ 00:00:00.000\\",568292,\\"sold_product_568292_23627, sold_product_568292_11149\\",\\"sold_product_568292_23627, sold_product_568292_11149\\",\\"24.984, 10.992\\",\\"24.984, 10.992\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"12.492, 5.059\\",\\"24.984, 10.992\\",\\"23,627, 11,149\\",\\"Slim fit jeans - grey, Sunglasses - black\\",\\"Slim fit jeans - grey, Sunglasses - black\\",\\"1, 1\\",\\"ZO0534205342, ZO0599605996\\",\\"0, 0\\",\\"24.984, 10.992\\",\\"24.984, 10.992\\",\\"0, 0\\",\\"ZO0534205342, ZO0599605996\\",\\"35.969\\",\\"35.969\\",2,2,order,recip -jwMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Harper\\",\\"Jackson Harper\\",MALE,13,Harper,Harper,\\"(empty)\\",Wednesday,2,\\"jackson@harper-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568386,\\"sold_product_568386_11959, sold_product_568386_2774\\",\\"sold_product_568386_11959, sold_product_568386_2774\\",\\"24.984, 85\\",\\"24.984, 85\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"12.742, 45.875\\",\\"24.984, 85\\",\\"11,959, 2,774\\",\\"SLIM FIT - Formal shirt - lila, Classic coat - black\\",\\"SLIM FIT - Formal shirt - lila, Classic coat - black\\",\\"1, 1\\",\\"ZO0422404224, ZO0291702917\\",\\"0, 0\\",\\"24.984, 85\\",\\"24.984, 85\\",\\"0, 0\\",\\"ZO0422404224, ZO0291702917\\",110,110,2,2,order,jackson -kAMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Betty,Betty,\\"Betty Brewer\\",\\"Betty Brewer\\",FEMALE,44,Brewer,Brewer,\\"(empty)\\",Wednesday,2,\\"betty@brewer-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568023,\\"sold_product_568023_22309, sold_product_568023_22315\\",\\"sold_product_568023_22309, sold_product_568023_22315\\",\\"11.992, 16.984\\",\\"11.992, 16.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"5.879, 8.656\\",\\"11.992, 16.984\\",\\"22,309, 22,315\\",\\"Wallet - brown, Summer dress - black\\",\\"Wallet - brown, Summer dress - black\\",\\"1, 1\\",\\"ZO0075900759, ZO0489304893\\",\\"0, 0\\",\\"11.992, 16.984\\",\\"11.992, 16.984\\",\\"0, 0\\",\\"ZO0075900759, ZO0489304893\\",\\"28.984\\",\\"28.984\\",2,2,order,betty -9wMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,Selena,Selena,\\"Selena Hernandez\\",\\"Selena Hernandez\\",FEMALE,42,Hernandez,Hernandez,\\"(empty)\\",Wednesday,2,\\"selena@hernandez-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568789,\\"sold_product_568789_11481, sold_product_568789_17046\\",\\"sold_product_568789_11481, sold_product_568789_17046\\",\\"24.984, 30.984\\",\\"24.984, 30.984\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"12.492, 15.797\\",\\"24.984, 30.984\\",\\"11,481, 17,046\\",\\"Tote bag - black, SET - Watch - rose gold-coloured\\",\\"Tote bag - black, SET - Watch - rose gold-coloured\\",\\"1, 1\\",\\"ZO0197501975, ZO0079300793\\",\\"0, 0\\",\\"24.984, 30.984\\",\\"24.984, 30.984\\",\\"0, 0\\",\\"ZO0197501975, ZO0079300793\\",\\"55.969\\",\\"55.969\\",2,2,order,selena -\\"-AMtOW0BH63Xcmy432HJ\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Kamal,Kamal,\\"Kamal Greene\\",\\"Kamal Greene\\",MALE,39,Greene,Greene,\\"(empty)\\",Wednesday,2,\\"kamal@greene-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568331,\\"sold_product_568331_11375, sold_product_568331_14190\\",\\"sold_product_568331_11375, sold_product_568331_14190\\",\\"42, 28.984\\",\\"42, 28.984\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"19.734, 13.344\\",\\"42, 28.984\\",\\"11,375, 14,190\\",\\"Lace-ups - Midnight Blue, Trainers - grey\\",\\"Lace-ups - Midnight Blue, Trainers - grey\\",\\"1, 1\\",\\"ZO0385903859, ZO0516605166\\",\\"0, 0\\",\\"42, 28.984\\",\\"42, 28.984\\",\\"0, 0\\",\\"ZO0385903859, ZO0516605166\\",71,71,2,2,order,kamal -\\"-QMtOW0BH63Xcmy432HJ\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Kamal,Kamal,\\"Kamal Ryan\\",\\"Kamal Ryan\\",MALE,39,Ryan,Ryan,\\"(empty)\\",Wednesday,2,\\"kamal@ryan-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568524,\\"sold_product_568524_17644, sold_product_568524_12625\\",\\"sold_product_568524_17644, sold_product_568524_12625\\",\\"60, 60\\",\\"60, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"29.406, 31.188\\",\\"60, 60\\",\\"17,644, 12,625\\",\\"Suit jacket - dark blue, T-bar sandals - cognac\\",\\"Suit jacket - dark blue, T-bar sandals - cognac\\",\\"1, 1\\",\\"ZO0424104241, ZO0694706947\\",\\"0, 0\\",\\"60, 60\\",\\"60, 60\\",\\"0, 0\\",\\"ZO0424104241, ZO0694706947\\",120,120,2,2,order,kamal -\\"-gMtOW0BH63Xcmy432HJ\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Recip,Recip,\\"Recip Reese\\",\\"Recip Reese\\",MALE,10,Reese,Reese,\\"(empty)\\",Wednesday,2,\\"recip@reese-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568589,\\"sold_product_568589_19575, sold_product_568589_21053\\",\\"sold_product_568589_19575, sold_product_568589_21053\\",\\"65, 10.992\\",\\"65, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"35.094, 5.391\\",\\"65, 10.992\\",\\"19,575, 21,053\\",\\"Short coat - oliv, Print T-shirt - white/blue\\",\\"Short coat - oliv, Print T-shirt - white/blue\\",\\"1, 1\\",\\"ZO0114401144, ZO0564705647\\",\\"0, 0\\",\\"65, 10.992\\",\\"65, 10.992\\",\\"0, 0\\",\\"ZO0114401144, ZO0564705647\\",76,76,2,2,order,recip -\\"-wMtOW0BH63Xcmy432HJ\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Oliver,Oliver,\\"Oliver Pope\\",\\"Oliver Pope\\",MALE,7,Pope,Pope,\\"(empty)\\",Wednesday,2,\\"oliver@pope-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568640,\\"sold_product_568640_20196, sold_product_568640_12339\\",\\"sold_product_568640_20196, sold_product_568640_12339\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"13.344, 10.906\\",\\"28.984, 20.984\\",\\"20,196, 12,339\\",\\"Sweatshirt - bright white, Polo shirt - grey multicolor\\",\\"Sweatshirt - bright white, Polo shirt - grey multicolor\\",\\"1, 1\\",\\"ZO0125901259, ZO0443204432\\",\\"0, 0\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"0, 0\\",\\"ZO0125901259, ZO0443204432\\",\\"49.969\\",\\"49.969\\",2,2,order,oliver -\\"_AMtOW0BH63Xcmy432HJ\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Irwin,Irwin,\\"Irwin Henderson\\",\\"Irwin Henderson\\",MALE,14,Henderson,Henderson,\\"(empty)\\",Wednesday,2,\\"irwin@henderson-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568682,\\"sold_product_568682_21985, sold_product_568682_15522\\",\\"sold_product_568682_21985, sold_product_568682_15522\\",\\"60, 42\\",\\"60, 42\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"28.797, 19.734\\",\\"60, 42\\",\\"21,985, 15,522\\",\\"Smart lace-ups - black, Smart lace-ups - cognac\\",\\"Smart lace-ups - black, Smart lace-ups - cognac\\",\\"1, 1\\",\\"ZO0680706807, ZO0392603926\\",\\"0, 0\\",\\"60, 42\\",\\"60, 42\\",\\"0, 0\\",\\"ZO0680706807, ZO0392603926\\",102,102,2,2,order,irwin -XQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Miller\\",\\"Rabbia Al Miller\\",FEMALE,5,Miller,Miller,\\"(empty)\\",Wednesday,2,\\"rabbia al@miller-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Gnomehouse, Low Tide Media\\",\\"Gnomehouse, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569259,\\"sold_product_569259_18845, sold_product_569259_21703\\",\\"sold_product_569259_18845, sold_product_569259_21703\\",\\"55, 60\\",\\"55, 60\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Low Tide Media\\",\\"Gnomehouse, Low Tide Media\\",\\"25.844, 28.203\\",\\"55, 60\\",\\"18,845, 21,703\\",\\"Summer dress - navy blazer, Ankle boots - tan \\",\\"Summer dress - navy blazer, Ankle boots - tan \\",\\"1, 1\\",\\"ZO0335503355, ZO0381003810\\",\\"0, 0\\",\\"55, 60\\",\\"55, 60\\",\\"0, 0\\",\\"ZO0335503355, ZO0381003810\\",115,115,2,2,order,rabbia -HAMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Hicham,Hicham,\\"Hicham Washington\\",\\"Hicham Washington\\",MALE,8,Washington,Washington,\\"(empty)\\",Wednesday,2,\\"hicham@washington-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568793,\\"sold_product_568793_17004, sold_product_568793_20936\\",\\"sold_product_568793_17004, sold_product_568793_20936\\",\\"33, 7.988\\",\\"33, 7.988\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"18.141, 4.23\\",\\"33, 7.988\\",\\"17,004, 20,936\\",\\"Watch - dark brown, Basic T-shirt - dark blue\\",\\"Watch - dark brown, Basic T-shirt - dark blue\\",\\"1, 1\\",\\"ZO0312503125, ZO0545505455\\",\\"0, 0\\",\\"33, 7.988\\",\\"33, 7.988\\",\\"0, 0\\",\\"ZO0312503125, ZO0545505455\\",\\"40.969\\",\\"40.969\\",2,2,order,hicham -HQMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Youssef,Youssef,\\"Youssef Porter\\",\\"Youssef Porter\\",MALE,31,Porter,Porter,\\"(empty)\\",Wednesday,2,\\"youssef@porter-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568350,\\"sold_product_568350_14392, sold_product_568350_24934\\",\\"sold_product_568350_14392, sold_product_568350_24934\\",\\"42, 50\\",\\"42, 50\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"21.406, 22.5\\",\\"42, 50\\",\\"14,392, 24,934\\",\\"Zantos - Wash bag - black, Lace-up boots - resin coffee\\",\\"Zantos - Wash bag - black, Lace-up boots - resin coffee\\",\\"1, 1\\",\\"ZO0317303173, ZO0403504035\\",\\"0, 0\\",\\"42, 50\\",\\"42, 50\\",\\"0, 0\\",\\"ZO0317303173, ZO0403504035\\",92,92,2,2,order,youssef -HgMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Moss\\",\\"Youssef Moss\\",MALE,31,Moss,Moss,\\"(empty)\\",Wednesday,2,\\"youssef@moss-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"(empty), Low Tide Media\\",\\"(empty), Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568531,\\"sold_product_568531_12837, sold_product_568531_13153\\",\\"sold_product_568531_12837, sold_product_568531_13153\\",\\"165, 24.984\\",\\"165, 24.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"(empty), Low Tide Media\\",\\"(empty), Low Tide Media\\",\\"77.563, 12\\",\\"165, 24.984\\",\\"12,837, 13,153\\",\\"Smart lace-ups - cognac, Cardigan - grey\\",\\"Smart lace-ups - cognac, Cardigan - grey\\",\\"1, 1\\",\\"ZO0482104821, ZO0447104471\\",\\"0, 0\\",\\"165, 24.984\\",\\"165, 24.984\\",\\"0, 0\\",\\"ZO0482104821, ZO0447104471\\",190,190,2,2,order,youssef -HwMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Robert,Robert,\\"Robert Cross\\",\\"Robert Cross\\",MALE,29,Cross,Cross,\\"(empty)\\",Wednesday,2,\\"robert@cross-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568578,\\"sold_product_568578_17925, sold_product_568578_16500\\",\\"sold_product_568578_17925, sold_product_568578_16500\\",\\"47, 33\\",\\"47, 33\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"24.438, 16.813\\",\\"47, 33\\",\\"17,925, 16,500\\",\\"Boots - tan, Casual Cuffed Pants\\",\\"Boots - tan, Casual Cuffed Pants\\",\\"1, 1\\",\\"ZO0520005200, ZO0421104211\\",\\"0, 0\\",\\"47, 33\\",\\"47, 33\\",\\"0, 0\\",\\"ZO0520005200, ZO0421104211\\",80,80,2,2,order,robert -IAMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Phil,Phil,\\"Phil Cunningham\\",\\"Phil Cunningham\\",MALE,50,Cunningham,Cunningham,\\"(empty)\\",Wednesday,2,\\"phil@cunningham-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568609,\\"sold_product_568609_11893, sold_product_568609_2361\\",\\"sold_product_568609_11893, sold_product_568609_2361\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"5.172, 30\\",\\"10.992, 60\\",\\"11,893, 2,361\\",\\"Polo shirt - dark blue, Lace-up boots - dark brown\\",\\"Polo shirt - dark blue, Lace-up boots - dark brown\\",\\"1, 1\\",\\"ZO0570405704, ZO0256102561\\",\\"0, 0\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"0, 0\\",\\"ZO0570405704, ZO0256102561\\",71,71,2,2,order,phil -IQMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Thad,Thad,\\"Thad Carr\\",\\"Thad Carr\\",MALE,30,Carr,Carr,\\"(empty)\\",Wednesday,2,\\"thad@carr-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568652,\\"sold_product_568652_23582, sold_product_568652_20196\\",\\"sold_product_568652_23582, sold_product_568652_20196\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"24, 13.344\\",\\"50, 28.984\\",\\"23,582, 20,196\\",\\"Boots - black, Sweatshirt - bright white\\",\\"Boots - black, Sweatshirt - bright white\\",\\"1, 1\\",\\"ZO0403304033, ZO0125901259\\",\\"0, 0\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"0, 0\\",\\"ZO0403304033, ZO0125901259\\",79,79,2,2,order,thad -TAMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Muniz,Muniz,\\"Muniz Jackson\\",\\"Muniz Jackson\\",MALE,37,Jackson,Jackson,\\"(empty)\\",Wednesday,2,\\"muniz@jackson-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Elitelligence,Elitelligence,\\"Jun 25, 2019 @ 00:00:00.000\\",568068,\\"sold_product_568068_12333, sold_product_568068_15128\\",\\"sold_product_568068_12333, sold_product_568068_15128\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"7.648, 5.059\\",\\"16.984, 10.992\\",\\"12,333, 15,128\\",\\"Tracksuit top - black, Wallet - brown\\",\\"Tracksuit top - black, Wallet - brown\\",\\"1, 1\\",\\"ZO0583005830, ZO0602706027\\",\\"0, 0\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"0, 0\\",\\"ZO0583005830, ZO0602706027\\",\\"27.984\\",\\"27.984\\",2,2,order,muniz -jgMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,George,George,\\"George Pope\\",\\"George Pope\\",MALE,32,Pope,Pope,\\"(empty)\\",Wednesday,2,\\"george@pope-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568070,\\"sold_product_568070_14421, sold_product_568070_13685\\",\\"sold_product_568070_14421, sold_product_568070_13685\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"10.703, 8.328\\",\\"20.984, 16.984\\",\\"14,421, 13,685\\",\\"Jumper - mottled grey/camel/khaki, Print T-shirt - grey multicolor\\",\\"Jumper - mottled grey/camel/khaki, Print T-shirt - grey multicolor\\",\\"1, 1\\",\\"ZO0575605756, ZO0293302933\\",\\"0, 0\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"0, 0\\",\\"ZO0575605756, ZO0293302933\\",\\"37.969\\",\\"37.969\\",2,2,order,george -jwMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Duncan\\",\\"Selena Duncan\\",FEMALE,42,Duncan,Duncan,\\"(empty)\\",Wednesday,2,\\"selena@duncan-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568106,\\"sold_product_568106_8745, sold_product_568106_15742\\",\\"sold_product_568106_8745, sold_product_568106_15742\\",\\"33, 8.992\\",\\"33, 8.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"17.156, 4.941\\",\\"33, 8.992\\",\\"8,745, 15,742\\",\\"Cardigan - mottled brown, Tights - dark navy\\",\\"Cardigan - mottled brown, Tights - dark navy\\",\\"1, 1\\",\\"ZO0068700687, ZO0101301013\\",\\"0, 0\\",\\"33, 8.992\\",\\"33, 8.992\\",\\"0, 0\\",\\"ZO0068700687, ZO0101301013\\",\\"41.969\\",\\"41.969\\",2,2,order,selena -swMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Jensen\\",\\"Wilhemina St. Jensen\\",FEMALE,17,Jensen,Jensen,\\"(empty)\\",Wednesday,2,\\"wilhemina st.@jensen-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568439,\\"sold_product_568439_16712, sold_product_568439_5602\\",\\"sold_product_568439_16712, sold_product_568439_5602\\",\\"20.984, 100\\",\\"20.984, 100\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"9.656, 46\\",\\"20.984, 100\\",\\"16,712, 5,602\\",\\"Blouse - black/pink/blue, Winter boots - black\\",\\"Blouse - black/pink/blue, Winter boots - black\\",\\"1, 1\\",\\"ZO0170601706, ZO0251502515\\",\\"0, 0\\",\\"20.984, 100\\",\\"20.984, 100\\",\\"0, 0\\",\\"ZO0170601706, ZO0251502515\\",121,121,2,2,order,wilhemina -tAMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Thad,Thad,\\"Thad Lawrence\\",\\"Thad Lawrence\\",MALE,30,Lawrence,Lawrence,\\"(empty)\\",Wednesday,2,\\"thad@lawrence-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568507,\\"sold_product_568507_6098, sold_product_568507_24890\\",\\"sold_product_568507_6098, sold_product_568507_24890\\",\\"75, 18.984\\",\\"75, 18.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"41.25, 10.438\\",\\"75, 18.984\\",\\"6,098, 24,890\\",\\"Parka - black, Shirt - mottled grey\\",\\"Parka - black, Shirt - mottled grey\\",\\"1, 1\\",\\"ZO0431304313, ZO0523605236\\",\\"0, 0\\",\\"75, 18.984\\",\\"75, 18.984\\",\\"0, 0\\",\\"ZO0431304313, ZO0523605236\\",94,94,2,2,order,thad -KgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Marwan,Marwan,\\"Marwan Daniels\\",\\"Marwan Daniels\\",MALE,51,Daniels,Daniels,\\"(empty)\\",Wednesday,2,\\"marwan@daniels-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568236,\\"sold_product_568236_6221, sold_product_568236_11869\\",\\"sold_product_568236_6221, sold_product_568236_11869\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"15.07, 10.906\\",\\"28.984, 20.984\\",\\"6,221, 11,869\\",\\"Shirt - dark blue, Sweatshirt - grey multicolor\\",\\"Shirt - dark blue, Sweatshirt - grey multicolor\\",\\"1, 1\\",\\"ZO0416604166, ZO0581605816\\",\\"0, 0\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"0, 0\\",\\"ZO0416604166, ZO0581605816\\",\\"49.969\\",\\"49.969\\",2,2,order,marwan -KwMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Meyer\\",\\"Brigitte Meyer\\",FEMALE,12,Meyer,Meyer,\\"(empty)\\",Wednesday,2,\\"brigitte@meyer-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568275,\\"sold_product_568275_17190, sold_product_568275_15978\\",\\"sold_product_568275_17190, sold_product_568275_15978\\",\\"60, 6.988\\",\\"60, 6.988\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"27, 3.43\\",\\"60, 6.988\\",\\"17,190, 15,978\\",\\"Pleated skirt - grey, 2 PACK - Socks - black \\",\\"Pleated skirt - grey, 2 PACK - Socks - black \\",\\"1, 1\\",\\"ZO0330903309, ZO0214802148\\",\\"0, 0\\",\\"60, 6.988\\",\\"60, 6.988\\",\\"0, 0\\",\\"ZO0330903309, ZO0214802148\\",67,67,2,2,order,brigitte -LAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Padilla\\",\\"Elyssa Padilla\\",FEMALE,27,Padilla,Padilla,\\"(empty)\\",Wednesday,2,\\"elyssa@padilla-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Primemaster, Tigress Enterprises\\",\\"Primemaster, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568434,\\"sold_product_568434_15265, sold_product_568434_22206\\",\\"sold_product_568434_15265, sold_product_568434_22206\\",\\"145, 14.992\\",\\"145, 14.992\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Primemaster, Tigress Enterprises\\",\\"Primemaster, Tigress Enterprises\\",\\"78.313, 7.051\\",\\"145, 14.992\\",\\"15,265, 22,206\\",\\"High heeled boots - brown, Ballet pumps - navy\\",\\"High heeled boots - brown, Ballet pumps - navy\\",\\"1, 1\\",\\"ZO0362203622, ZO0000300003\\",\\"0, 0\\",\\"145, 14.992\\",\\"145, 14.992\\",\\"0, 0\\",\\"ZO0362203622, ZO0000300003\\",160,160,2,2,order,elyssa -LQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Elyssa,Elyssa,\\"Elyssa Dawson\\",\\"Elyssa Dawson\\",FEMALE,27,Dawson,Dawson,\\"(empty)\\",Wednesday,2,\\"elyssa@dawson-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Pyramidustries,Pyramidustries,\\"Jun 25, 2019 @ 00:00:00.000\\",568458,\\"sold_product_568458_19261, sold_product_568458_24302\\",\\"sold_product_568458_19261, sold_product_568458_24302\\",\\"13.992, 10.992\\",\\"13.992, 10.992\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"7, 5.711\\",\\"13.992, 10.992\\",\\"19,261, 24,302\\",\\"Vest - black, Snood - dark grey/light grey\\",\\"Vest - black, Snood - dark grey/light grey\\",\\"1, 1\\",\\"ZO0164501645, ZO0195501955\\",\\"0, 0\\",\\"13.992, 10.992\\",\\"13.992, 10.992\\",\\"0, 0\\",\\"ZO0164501645, ZO0195501955\\",\\"24.984\\",\\"24.984\\",2,2,order,elyssa -LgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Betty,Betty,\\"Betty Bryant\\",\\"Betty Bryant\\",FEMALE,44,Bryant,Bryant,\\"(empty)\\",Wednesday,2,\\"betty@bryant-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568503,\\"sold_product_568503_12451, sold_product_568503_22678\\",\\"sold_product_568503_12451, sold_product_568503_22678\\",\\"7.988, 60\\",\\"7.988, 60\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"3.68, 31.188\\",\\"7.988, 60\\",\\"12,451, 22,678\\",\\"Vest - black, Ankle boots - Midnight Blue\\",\\"Vest - black, Ankle boots - Midnight Blue\\",\\"1, 1\\",\\"ZO0643306433, ZO0376203762\\",\\"0, 0\\",\\"7.988, 60\\",\\"7.988, 60\\",\\"0, 0\\",\\"ZO0643306433, ZO0376203762\\",68,68,2,2,order,betty -fQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing, Men's Shoes\\",\\"Men's Accessories, Men's Clothing, Men's Shoes\\",EUR,Tariq,Tariq,\\"Tariq Salazar\\",\\"Tariq Salazar\\",MALE,25,Salazar,Salazar,\\"(empty)\\",Wednesday,2,\\"tariq@salazar-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Oceanavigations, Low Tide Media, Angeldale\\",\\"Oceanavigations, Low Tide Media, Angeldale\\",\\"Jun 25, 2019 @ 00:00:00.000\\",714149,\\"sold_product_714149_19588, sold_product_714149_6158, sold_product_714149_1422, sold_product_714149_18002\\",\\"sold_product_714149_19588, sold_product_714149_6158, sold_product_714149_1422, sold_product_714149_18002\\",\\"13.992, 22.984, 65, 42\\",\\"13.992, 22.984, 65, 42\\",\\"Men's Accessories, Men's Clothing, Men's Shoes, Men's Shoes\\",\\"Men's Accessories, Men's Clothing, Men's Shoes, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Oceanavigations, Low Tide Media, Angeldale, Low Tide Media\\",\\"Oceanavigations, Low Tide Media, Angeldale, Low Tide Media\\",\\"7.41, 11.492, 33.781, 21.406\\",\\"13.992, 22.984, 65, 42\\",\\"19,588, 6,158, 1,422, 18,002\\",\\"Belt - black, Shirt - black, Lace-ups - cognac, Boots - brown\\",\\"Belt - black, Shirt - black, Lace-ups - cognac, Boots - brown\\",\\"1, 1, 1, 1\\",\\"ZO0309503095, ZO0411904119, ZO0683306833, ZO0397103971\\",\\"0, 0, 0, 0\\",\\"13.992, 22.984, 65, 42\\",\\"13.992, 22.984, 65, 42\\",\\"0, 0, 0, 0\\",\\"ZO0309503095, ZO0411904119, ZO0683306833, ZO0397103971\\",144,144,4,4,order,tariq -QAMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Wise\\",\\"Wagdi Wise\\",MALE,15,Wise,Wise,\\"(empty)\\",Wednesday,2,\\"wagdi@wise-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568232,\\"sold_product_568232_18129, sold_product_568232_19774\\",\\"sold_product_568232_18129, sold_product_568232_19774\\",\\"37, 11.992\\",\\"37, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"18.859, 5.879\\",\\"37, 11.992\\",\\"18,129, 19,774\\",\\"Trousers - grey, Print T-shirt - black/orange\\",\\"Trousers - grey, Print T-shirt - black/orange\\",\\"1, 1\\",\\"ZO0282902829, ZO0566605666\\",\\"0, 0\\",\\"37, 11.992\\",\\"37, 11.992\\",\\"0, 0\\",\\"ZO0282902829, ZO0566605666\\",\\"48.969\\",\\"48.969\\",2,2,order,wagdi -QQMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Reyes\\",\\"Robbie Reyes\\",MALE,48,Reyes,Reyes,\\"(empty)\\",Wednesday,2,\\"robbie@reyes-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568269,\\"sold_product_568269_19175, sold_product_568269_2764\\",\\"sold_product_568269_19175, sold_product_568269_2764\\",\\"33, 135\\",\\"33, 135\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"15.844, 67.5\\",\\"33, 135\\",\\"19,175, 2,764\\",\\"Watch - dark brown, Suit - dark blue\\",\\"Watch - dark brown, Suit - dark blue\\",\\"1, 1\\",\\"ZO0318603186, ZO0407904079\\",\\"0, 0\\",\\"33, 135\\",\\"33, 135\\",\\"0, 0\\",\\"ZO0318603186, ZO0407904079\\",168,168,2,2,order,robbie -QgMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Yasmine,Yasmine,\\"Yasmine Stokes\\",\\"Yasmine Stokes\\",FEMALE,43,Stokes,Stokes,\\"(empty)\\",Wednesday,2,\\"yasmine@stokes-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568301,\\"sold_product_568301_20011, sold_product_568301_20152\\",\\"sold_product_568301_20011, sold_product_568301_20152\\",\\"33, 42\\",\\"33, 42\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"15.844, 22.25\\",\\"33, 42\\",\\"20,011, 20,152\\",\\"Jumpsuit - black, Platform boots - dark blue\\",\\"Jumpsuit - black, Platform boots - dark blue\\",\\"1, 1\\",\\"ZO0146401464, ZO0014700147\\",\\"0, 0\\",\\"33, 42\\",\\"33, 42\\",\\"0, 0\\",\\"ZO0146401464, ZO0014700147\\",75,75,2,2,order,yasmine -QwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Ryan\\",\\"Clarice Ryan\\",FEMALE,18,Ryan,Ryan,\\"(empty)\\",Wednesday,2,\\"clarice@ryan-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568469,\\"sold_product_568469_10902, sold_product_568469_8739\\",\\"sold_product_568469_10902, sold_product_568469_8739\\",\\"26.984, 28.984\\",\\"26.984, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"13.758, 15.938\\",\\"26.984, 28.984\\",\\"10,902, 8,739\\",\\"Pyjamas - black, Jumper - anthractie multicolor\\",\\"Pyjamas - black, Jumper - anthractie multicolor\\",\\"1, 1\\",\\"ZO0659806598, ZO0070100701\\",\\"0, 0\\",\\"26.984, 28.984\\",\\"26.984, 28.984\\",\\"0, 0\\",\\"ZO0659806598, ZO0070100701\\",\\"55.969\\",\\"55.969\\",2,2,order,clarice -RAMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Shaw\\",\\"Sultan Al Shaw\\",MALE,19,Shaw,Shaw,\\"(empty)\\",Wednesday,2,\\"sultan al@shaw-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568499,\\"sold_product_568499_23865, sold_product_568499_17752\\",\\"sold_product_568499_23865, sold_product_568499_17752\\",\\"11.992, 37\\",\\"11.992, 37\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"5.879, 17.391\\",\\"11.992, 37\\",\\"23,865, 17,752\\",\\"2 PACK - Basic T-shirt - dark grey multicolor, Slim fit jeans - black denim\\",\\"2 PACK - Basic T-shirt - dark grey multicolor, Slim fit jeans - black denim\\",\\"1, 1\\",\\"ZO0474604746, ZO0113801138\\",\\"0, 0\\",\\"11.992, 37\\",\\"11.992, 37\\",\\"0, 0\\",\\"ZO0474604746, ZO0113801138\\",\\"48.969\\",\\"48.969\\",2,2,order,sultan -UQMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Austin\\",\\"Wilhemina St. Austin\\",FEMALE,17,Austin,Austin,\\"(empty)\\",Wednesday,2,\\"wilhemina st.@austin-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568083,\\"sold_product_568083_14459, sold_product_568083_18901\\",\\"sold_product_568083_14459, sold_product_568083_18901\\",\\"11.992, 16.984\\",\\"11.992, 16.984\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"5.762, 8.328\\",\\"11.992, 16.984\\",\\"14,459, 18,901\\",\\"Across body bag - cognac, Clutch - white/black\\",\\"Across body bag - cognac, Clutch - white/black\\",\\"1, 1\\",\\"ZO0200902009, ZO0092300923\\",\\"0, 0\\",\\"11.992, 16.984\\",\\"11.992, 16.984\\",\\"0, 0\\",\\"ZO0200902009, ZO0092300923\\",\\"28.984\\",\\"28.984\\",2,2,order,wilhemina -VAMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Abd,Abd,\\"Abd Lamb\\",\\"Abd Lamb\\",MALE,52,Lamb,Lamb,\\"(empty)\\",Wednesday,2,\\"abd@lamb-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Angeldale,Angeldale,\\"Jun 25, 2019 @ 00:00:00.000\\",569163,\\"sold_product_569163_1774, sold_product_569163_23724\\",\\"sold_product_569163_1774, sold_product_569163_23724\\",\\"60, 75\\",\\"60, 75\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Angeldale\\",\\"Angeldale, Angeldale\\",\\"27.594, 37.5\\",\\"60, 75\\",\\"1,774, 23,724\\",\\"Lace-ups - cognac, Lace-ups - bordeaux\\",\\"Lace-ups - cognac, Lace-ups - bordeaux\\",\\"1, 1\\",\\"ZO0681106811, ZO0682706827\\",\\"0, 0\\",\\"60, 75\\",\\"60, 75\\",\\"0, 0\\",\\"ZO0681106811, ZO0682706827\\",135,135,2,2,order,abd -VQMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Clarice,Clarice,\\"Clarice Potter\\",\\"Clarice Potter\\",FEMALE,18,Potter,Potter,\\"(empty)\\",Wednesday,2,\\"clarice@potter-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569214,\\"sold_product_569214_15372, sold_product_569214_13660\\",\\"sold_product_569214_15372, sold_product_569214_13660\\",\\"20.984, 25.984\\",\\"20.984, 25.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"10.703, 13.25\\",\\"20.984, 25.984\\",\\"15,372, 13,660\\",\\"Jersey dress - khaki, Across body bag - brown\\",\\"Jersey dress - khaki, Across body bag - brown\\",\\"1, 1\\",\\"ZO0490104901, ZO0087200872\\",\\"0, 0\\",\\"20.984, 25.984\\",\\"20.984, 25.984\\",\\"0, 0\\",\\"ZO0490104901, ZO0087200872\\",\\"46.969\\",\\"46.969\\",2,2,order,clarice -VgMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Lawrence\\",\\"Fitzgerald Lawrence\\",MALE,11,Lawrence,Lawrence,\\"(empty)\\",Wednesday,2,\\"fitzgerald@lawrence-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568875,\\"sold_product_568875_22460, sold_product_568875_12482\\",\\"sold_product_568875_22460, sold_product_568875_12482\\",\\"7.988, 60\\",\\"7.988, 60\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"3.92, 30\\",\\"7.988, 60\\",\\"22,460, 12,482\\",\\"3 PACK - Socks - white, Across body bag - black\\",\\"3 PACK - Socks - white, Across body bag - black\\",\\"1, 1\\",\\"ZO0613606136, ZO0463804638\\",\\"0, 0\\",\\"7.988, 60\\",\\"7.988, 60\\",\\"0, 0\\",\\"ZO0613606136, ZO0463804638\\",68,68,2,2,order,fuzzy -VwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Wagdi,Wagdi,\\"Wagdi Griffin\\",\\"Wagdi Griffin\\",MALE,15,Griffin,Griffin,\\"(empty)\\",Wednesday,2,\\"wagdi@griffin-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568943,\\"sold_product_568943_22910, sold_product_568943_1665\\",\\"sold_product_568943_22910, sold_product_568943_1665\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"13.242, 31.203\\",\\"24.984, 65\\",\\"22,910, 1,665\\",\\"Cardigan - black, Boots - light brown\\",\\"Cardigan - black, Boots - light brown\\",\\"1, 1\\",\\"ZO0445804458, ZO0686106861\\",\\"0, 0\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"0, 0\\",\\"ZO0445804458, ZO0686106861\\",90,90,2,2,order,wagdi -WAMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Yahya,Yahya,\\"Yahya Dennis\\",\\"Yahya Dennis\\",MALE,23,Dennis,Dennis,\\"(empty)\\",Wednesday,2,\\"yahya@dennis-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569046,\\"sold_product_569046_15527, sold_product_569046_3489\\",\\"sold_product_569046_15527, sold_product_569046_3489\\",\\"33, 22.984\\",\\"33, 22.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"15.844, 12.18\\",\\"33, 22.984\\",\\"15,527, 3,489\\",\\"Lace-ups - black, Tights - black\\",\\"Lace-ups - black, Tights - black\\",\\"1, 1\\",\\"ZO0393103931, ZO0619906199\\",\\"0, 0\\",\\"33, 22.984\\",\\"33, 22.984\\",\\"0, 0\\",\\"ZO0393103931, ZO0619906199\\",\\"55.969\\",\\"55.969\\",2,2,order,yahya -WQMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Cortez\\",\\"Brigitte Cortez\\",FEMALE,12,Cortez,Cortez,\\"(empty)\\",Wednesday,2,\\"brigitte@cortez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569103,\\"sold_product_569103_23059, sold_product_569103_19509\\",\\"sold_product_569103_23059, sold_product_569103_19509\\",\\"21.984, 28.984\\",\\"21.984, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"11.648, 15.648\\",\\"21.984, 28.984\\",\\"23,059, 19,509\\",\\"Jumper dress - bordeaux, Blouse - dark red\\",\\"Jumper dress - bordeaux, Blouse - dark red\\",\\"1, 1\\",\\"ZO0636506365, ZO0345503455\\",\\"0, 0\\",\\"21.984, 28.984\\",\\"21.984, 28.984\\",\\"0, 0\\",\\"ZO0636506365, ZO0345503455\\",\\"50.969\\",\\"50.969\\",2,2,order,brigitte -WgMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Morgan\\",\\"Abdulraheem Al Morgan\\",MALE,33,Morgan,Morgan,\\"(empty)\\",Wednesday,2,\\"abdulraheem al@morgan-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Elitelligence, (empty)\\",\\"Elitelligence, (empty)\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568993,\\"sold_product_568993_21293, sold_product_568993_13143\\",\\"sold_product_568993_21293, sold_product_568993_13143\\",\\"24.984, 155\\",\\"24.984, 155\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, (empty)\\",\\"Elitelligence, (empty)\\",\\"12.742, 79.063\\",\\"24.984, 155\\",\\"21,293, 13,143\\",\\"Trainers - white, Slip-ons - black\\",\\"Trainers - white, Slip-ons - black\\",\\"1, 1\\",\\"ZO0510505105, ZO0482604826\\",\\"0, 0\\",\\"24.984, 155\\",\\"24.984, 155\\",\\"0, 0\\",\\"ZO0510505105, ZO0482604826\\",180,180,2,2,order,abdulraheem -EAMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Lloyd\\",\\"Sultan Al Lloyd\\",MALE,19,Lloyd,Lloyd,\\"(empty)\\",Wednesday,2,\\"sultan al@lloyd-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",720661,\\"sold_product_720661_22855, sold_product_720661_15602, sold_product_720661_15204, sold_product_720661_22811\\",\\"sold_product_720661_22855, sold_product_720661_15602, sold_product_720661_15204, sold_product_720661_22811\\",\\"22.984, 42, 42, 24.984\\",\\"22.984, 42, 42, 24.984\\",\\"Men's Clothing, Men's Accessories, Men's Accessories, Men's Clothing\\",\\"Men's Clothing, Men's Accessories, Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Low Tide Media, Oceanavigations, Low Tide Media\\",\\"Low Tide Media, Low Tide Media, Oceanavigations, Low Tide Media\\",\\"10.813, 21.828, 21.406, 11.5\\",\\"22.984, 42, 42, 24.984\\",\\"22,855, 15,602, 15,204, 22,811\\",\\"Shorts - black, Weekend bag - black , Weekend bag - black, Cardigan - beige multicolor\\",\\"Shorts - black, Weekend bag - black , Weekend bag - black, Cardigan - beige multicolor\\",\\"1, 1, 1, 1\\",\\"ZO0423004230, ZO0471604716, ZO0315303153, ZO0445604456\\",\\"0, 0, 0, 0\\",\\"22.984, 42, 42, 24.984\\",\\"22.984, 42, 42, 24.984\\",\\"0, 0, 0, 0\\",\\"ZO0423004230, ZO0471604716, ZO0315303153, ZO0445604456\\",132,132,4,4,order,sultan -RQMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Perkins\\",\\"Betty Perkins\\",FEMALE,44,Perkins,Perkins,\\"(empty)\\",Wednesday,2,\\"betty@perkins-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Microlutions, Champion Arts\\",\\"Microlutions, Champion Arts\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569144,\\"sold_product_569144_9379, sold_product_569144_15599\\",\\"sold_product_569144_9379, sold_product_569144_15599\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Champion Arts\\",\\"Microlutions, Champion Arts\\",\\"16.813, 15.648\\",\\"33, 28.984\\",\\"9,379, 15,599\\",\\"Trousers - black, Tracksuit top - dark grey multicolor\\",\\"Trousers - black, Tracksuit top - dark grey multicolor\\",\\"1, 1\\",\\"ZO0108101081, ZO0501105011\\",\\"0, 0\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"0, 0\\",\\"ZO0108101081, ZO0501105011\\",\\"61.969\\",\\"61.969\\",2,2,order,betty -RgMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Muniz,Muniz,\\"Muniz Mullins\\",\\"Muniz Mullins\\",MALE,37,Mullins,Mullins,\\"(empty)\\",Wednesday,2,\\"muniz@mullins-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569198,\\"sold_product_569198_13676, sold_product_569198_6033\\",\\"sold_product_569198_13676, sold_product_569198_6033\\",\\"28.984, 18.984\\",\\"28.984, 18.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"15.938, 9.117\\",\\"28.984, 18.984\\",\\"13,676, 6,033\\",\\"Across body bag - brown , Sweatshirt - white\\",\\"Across body bag - brown , Sweatshirt - white\\",\\"1, 1\\",\\"ZO0464304643, ZO0581905819\\",\\"0, 0\\",\\"28.984, 18.984\\",\\"28.984, 18.984\\",\\"0, 0\\",\\"ZO0464304643, ZO0581905819\\",\\"47.969\\",\\"47.969\\",2,2,order,muniz -RwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Yahya,Yahya,\\"Yahya Brady\\",\\"Yahya Brady\\",MALE,23,Brady,Brady,\\"(empty)\\",Wednesday,2,\\"yahya@brady-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Spherecords, Oceanavigations\\",\\"Spherecords, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568845,\\"sold_product_568845_11493, sold_product_568845_18854\\",\\"sold_product_568845_11493, sold_product_568845_18854\\",\\"20.984, 85\\",\\"20.984, 85\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Oceanavigations\\",\\"Spherecords, Oceanavigations\\",\\"10.078, 46.75\\",\\"20.984, 85\\",\\"11,493, 18,854\\",\\"Tracksuit bottoms - light grey multicolor, Boots - Midnight Blue\\",\\"Tracksuit bottoms - light grey multicolor, Boots - Midnight Blue\\",\\"1, 1\\",\\"ZO0657906579, ZO0258102581\\",\\"0, 0\\",\\"20.984, 85\\",\\"20.984, 85\\",\\"0, 0\\",\\"ZO0657906579, ZO0258102581\\",106,106,2,2,order,yahya -SAMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,rania,rania,\\"rania Byrd\\",\\"rania Byrd\\",FEMALE,24,Byrd,Byrd,\\"(empty)\\",Wednesday,2,\\"rania@byrd-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Pyramidustries,Pyramidustries,\\"Jun 25, 2019 @ 00:00:00.000\\",568894,\\"sold_product_568894_21617, sold_product_568894_16951\\",\\"sold_product_568894_21617, sold_product_568894_16951\\",\\"42, 20.984\\",\\"42, 20.984\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"21, 11.117\\",\\"42, 20.984\\",\\"21,617, 16,951\\",\\"Cowboy/Biker boots - black, Clutch - black\\",\\"Cowboy/Biker boots - black, Clutch - black\\",\\"1, 1\\",\\"ZO0141801418, ZO0206302063\\",\\"0, 0\\",\\"42, 20.984\\",\\"42, 20.984\\",\\"0, 0\\",\\"ZO0141801418, ZO0206302063\\",\\"62.969\\",\\"62.969\\",2,2,order,rani -SQMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Carpenter\\",\\"rania Carpenter\\",FEMALE,24,Carpenter,Carpenter,\\"(empty)\\",Wednesday,2,\\"rania@carpenter-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Spherecords,Spherecords,\\"Jun 25, 2019 @ 00:00:00.000\\",568938,\\"sold_product_568938_18398, sold_product_568938_19241\\",\\"sold_product_568938_18398, sold_product_568938_19241\\",\\"10.992, 16.984\\",\\"10.992, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Spherecords\\",\\"Spherecords, Spherecords\\",\\"5.391, 9.172\\",\\"10.992, 16.984\\",\\"18,398, 19,241\\",\\"Vest - black, Tracksuit bottoms - navy\\",\\"Vest - black, Tracksuit bottoms - navy\\",\\"1, 1\\",\\"ZO0642806428, ZO0632506325\\",\\"0, 0\\",\\"10.992, 16.984\\",\\"10.992, 16.984\\",\\"0, 0\\",\\"ZO0642806428, ZO0632506325\\",\\"27.984\\",\\"27.984\\",2,2,order,rani -SgMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories\\",\\"Men's Accessories\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Meyer\\",\\"Fitzgerald Meyer\\",MALE,11,Meyer,Meyer,\\"(empty)\\",Wednesday,2,\\"fitzgerald@meyer-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569045,\\"sold_product_569045_17857, sold_product_569045_12592\\",\\"sold_product_569045_17857, sold_product_569045_12592\\",\\"85, 14.992\\",\\"85, 14.992\\",\\"Men's Accessories, Men's Accessories\\",\\"Men's Accessories, Men's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"39.938, 7.051\\",\\"85, 14.992\\",\\"17,857, 12,592\\",\\"Laptop bag - black, Belt - dark brown \\",\\"Laptop bag - black, Belt - dark brown \\",\\"1, 1\\",\\"ZO0315903159, ZO0461104611\\",\\"0, 0\\",\\"85, 14.992\\",\\"85, 14.992\\",\\"0, 0\\",\\"ZO0315903159, ZO0461104611\\",100,100,2,2,order,fuzzy -SwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Thad,Thad,\\"Thad Munoz\\",\\"Thad Munoz\\",MALE,30,Munoz,Munoz,\\"(empty)\\",Wednesday,2,\\"thad@munoz-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, (empty)\\",\\"Elitelligence, (empty)\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569097,\\"sold_product_569097_20740, sold_product_569097_12607\\",\\"sold_product_569097_20740, sold_product_569097_12607\\",\\"33, 155\\",\\"33, 155\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, (empty)\\",\\"Elitelligence, (empty)\\",\\"14.852, 83.688\\",\\"33, 155\\",\\"20,740, 12,607\\",\\"High-top trainers - beige, Smart slip-ons - black\\",\\"High-top trainers - beige, Smart slip-ons - black\\",\\"1, 1\\",\\"ZO0511605116, ZO0483004830\\",\\"0, 0\\",\\"33, 155\\",\\"33, 155\\",\\"0, 0\\",\\"ZO0511605116, ZO0483004830\\",188,188,2,2,order,thad -dwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Franklin\\",\\"Elyssa Franklin\\",FEMALE,27,Franklin,Franklin,\\"(empty)\\",Wednesday,2,\\"elyssa@franklin-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Angeldale, Gnomehouse, Tigress Enterprises\\",\\"Angeldale, Gnomehouse, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",727370,\\"sold_product_727370_24280, sold_product_727370_20519, sold_product_727370_18829, sold_product_727370_16904\\",\\"sold_product_727370_24280, sold_product_727370_20519, sold_product_727370_18829, sold_product_727370_16904\\",\\"85, 50, 37, 33\\",\\"85, 50, 37, 33\\",\\"Women's Shoes, Women's Shoes, Women's Clothing, Women's Shoes\\",\\"Women's Shoes, Women's Shoes, Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Angeldale, Gnomehouse, Tigress Enterprises, Tigress Enterprises\\",\\"Angeldale, Gnomehouse, Tigress Enterprises, Tigress Enterprises\\",\\"45.875, 24.5, 17.391, 15.508\\",\\"85, 50, 37, 33\\",\\"24,280, 20,519, 18,829, 16,904\\",\\"Boots - black, Classic heels - Midnight Blue, Jersey dress - Blue Violety/black, Trainers - black\\",\\"Boots - black, Classic heels - Midnight Blue, Jersey dress - Blue Violety/black, Trainers - black\\",\\"1, 1, 1, 1\\",\\"ZO0680206802, ZO0321703217, ZO0049900499, ZO0029400294\\",\\"0, 0, 0, 0\\",\\"85, 50, 37, 33\\",\\"85, 50, 37, 33\\",\\"0, 0, 0, 0\\",\\"ZO0680206802, ZO0321703217, ZO0049900499, ZO0029400294\\",205,205,4,4,order,elyssa -kwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Frances,Frances,\\"Frances Davidson\\",\\"Frances Davidson\\",FEMALE,49,Davidson,Davidson,\\"(empty)\\",Wednesday,2,\\"frances@davidson-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568751,\\"sold_product_568751_22085, sold_product_568751_22963\\",\\"sold_product_568751_22085, sold_product_568751_22963\\",\\"11.992, 7.988\\",\\"11.992, 7.988\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"6.352, 4.148\\",\\"11.992, 7.988\\",\\"22,085, 22,963\\",\\"Hat - black, 3 PACK - Socks - grey/white/black\\",\\"Hat - black, 3 PACK - Socks - grey/white/black\\",\\"1, 1\\",\\"ZO0308703087, ZO0613106131\\",\\"0, 0\\",\\"11.992, 7.988\\",\\"11.992, 7.988\\",\\"0, 0\\",\\"ZO0308703087, ZO0613106131\\",\\"19.984\\",\\"19.984\\",2,2,order,frances -oQMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Nash\\",\\"Yasmine Nash\\",FEMALE,43,Nash,Nash,\\"(empty)\\",Wednesday,2,\\"yasmine@nash-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569010,\\"sold_product_569010_17948, sold_product_569010_22803\\",\\"sold_product_569010_17948, sold_product_569010_22803\\",\\"28.984, 33\\",\\"28.984, 33\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"15.359, 17.484\\",\\"28.984, 33\\",\\"17,948, 22,803\\",\\"Tote bag - old rose, Blouse - red\\",\\"Tote bag - old rose, Blouse - red\\",\\"1, 1\\",\\"ZO0090700907, ZO0265002650\\",\\"0, 0\\",\\"28.984, 33\\",\\"28.984, 33\\",\\"0, 0\\",\\"ZO0090700907, ZO0265002650\\",\\"61.969\\",\\"61.969\\",2,2,order,yasmine -uwMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Women's Accessories\\",\\"Men's Clothing, Women's Accessories\\",EUR,Tariq,Tariq,\\"Tariq Rivera\\",\\"Tariq Rivera\\",MALE,25,Rivera,Rivera,\\"(empty)\\",Wednesday,2,\\"tariq@rivera-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568745,\\"sold_product_568745_24487, sold_product_568745_17279\\",\\"sold_product_568745_24487, sold_product_568745_17279\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"Men's Clothing, Women's Accessories\\",\\"Men's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"10.906, 6.109\\",\\"20.984, 11.992\\",\\"24,487, 17,279\\",\\"Chinos - grey, Hat - navy\\",\\"Chinos - grey, Hat - navy\\",\\"1, 1\\",\\"ZO0528305283, ZO0309203092\\",\\"0, 0\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"0, 0\\",\\"ZO0528305283, ZO0309203092\\",\\"32.969\\",\\"32.969\\",2,2,order,tariq -AwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories, Women's Clothing\\",\\"Women's Shoes, Women's Accessories, Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Simpson\\",\\"Rabbia Al Simpson\\",FEMALE,5,Simpson,Simpson,\\"(empty)\\",Wednesday,2,\\"rabbia al@simpson-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 25, 2019 @ 00:00:00.000\\",728962,\\"sold_product_728962_24881, sold_product_728962_18382, sold_product_728962_14470, sold_product_728962_18450\\",\\"sold_product_728962_24881, sold_product_728962_18382, sold_product_728962_14470, sold_product_728962_18450\\",\\"42, 24.984, 28.984, 50\\",\\"42, 24.984, 28.984, 50\\",\\"Women's Shoes, Women's Accessories, Women's Clothing, Women's Clothing\\",\\"Women's Shoes, Women's Accessories, Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises, Tigress Enterprises, Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Tigress Enterprises, Tigress Enterprises, Gnomehouse\\",\\"20.578, 12.992, 15.648, 22.5\\",\\"42, 24.984, 28.984, 50\\",\\"24,881, 18,382, 14,470, 18,450\\",\\"Ankle boots - black, Across body bag - taupe/black/pink, Cardigan - tan, Summer dress - flame scarlet\\",\\"Ankle boots - black, Across body bag - taupe/black/pink, Cardigan - tan, Summer dress - flame scarlet\\",\\"1, 1, 1, 1\\",\\"ZO0019800198, ZO0089200892, ZO0069700697, ZO0332303323\\",\\"0, 0, 0, 0\\",\\"42, 24.984, 28.984, 50\\",\\"42, 24.984, 28.984, 50\\",\\"0, 0, 0, 0\\",\\"ZO0019800198, ZO0089200892, ZO0069700697, ZO0332303323\\",146,146,4,4,order,rabbia -XAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yahya,Yahya,\\"Yahya Love\\",\\"Yahya Love\\",MALE,23,Love,Love,\\"(empty)\\",Wednesday,2,\\"yahya@love-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Elitelligence,Elitelligence,\\"Jun 25, 2019 @ 00:00:00.000\\",568069,\\"sold_product_568069_14245, sold_product_568069_19287\\",\\"sold_product_568069_14245, sold_product_568069_19287\\",\\"28.984, 21.984\\",\\"28.984, 21.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"13.922, 10.563\\",\\"28.984, 21.984\\",\\"14,245, 19,287\\",\\"Trousers - grey, Chinos - dark blue\\",\\"Trousers - grey, Chinos - dark blue\\",\\"1, 1\\",\\"ZO0530305303, ZO0528405284\\",\\"0, 0\\",\\"28.984, 21.984\\",\\"28.984, 21.984\\",\\"0, 0\\",\\"ZO0530305303, ZO0528405284\\",\\"50.969\\",\\"50.969\\",2,2,order,yahya -jQMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Massey\\",\\"Rabbia Al Massey\\",FEMALE,5,Massey,Massey,\\"(empty)\\",Wednesday,2,\\"rabbia al@massey-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises MAMA, Champion Arts, Microlutions, Primemaster\\",\\"Tigress Enterprises MAMA, Champion Arts, Microlutions, Primemaster\\",\\"Jun 25, 2019 @ 00:00:00.000\\",732546,\\"sold_product_732546_17971, sold_product_732546_18249, sold_product_732546_18483, sold_product_732546_18726\\",\\"sold_product_732546_17971, sold_product_732546_18249, sold_product_732546_18483, sold_product_732546_18726\\",\\"36, 24.984, 20.984, 140\\",\\"36, 24.984, 20.984, 140\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises MAMA, Champion Arts, Microlutions, Primemaster\\",\\"Tigress Enterprises MAMA, Champion Arts, Microlutions, Primemaster\\",\\"19.063, 13.742, 10.078, 64.375\\",\\"36, 24.984, 20.984, 140\\",\\"17,971, 18,249, 18,483, 18,726\\",\\"Jersey dress - navy/offwhite, Hoodie - off-white, Print T-shirt - olive night, High heeled boots - stone\\",\\"Jersey dress - navy/offwhite, Hoodie - off-white, Print T-shirt - olive night, High heeled boots - stone\\",\\"1, 1, 1, 1\\",\\"ZO0228602286, ZO0502605026, ZO0108901089, ZO0362503625\\",\\"0, 0, 0, 0\\",\\"36, 24.984, 20.984, 140\\",\\"36, 24.984, 20.984, 140\\",\\"0, 0, 0, 0\\",\\"ZO0228602286, ZO0502605026, ZO0108901089, ZO0362503625\\",222,222,4,4,order,rabbia -BwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Simpson\\",\\"Wilhemina St. Simpson\\",FEMALE,17,Simpson,Simpson,\\"(empty)\\",Wednesday,2,\\"wilhemina st.@simpson-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Pyramidustries active, Tigress Enterprises\\",\\"Pyramidustries active, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568218,\\"sold_product_568218_10736, sold_product_568218_16297\\",\\"sold_product_568218_10736, sold_product_568218_16297\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Tigress Enterprises\\",\\"Pyramidustries active, Tigress Enterprises\\",\\"16.172, 9.344\\",\\"33, 16.984\\",\\"10,736, 16,297\\",\\"Tracksuit top - grey multicolor , Watch - nude\\",\\"Tracksuit top - grey multicolor , Watch - nude\\",\\"1, 1\\",\\"ZO0227402274, ZO0079000790\\",\\"0, 0\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"0, 0\\",\\"ZO0227402274, ZO0079000790\\",\\"49.969\\",\\"49.969\\",2,2,order,wilhemina -CAMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Perkins\\",\\"Robbie Perkins\\",MALE,48,Perkins,Perkins,\\"(empty)\\",Wednesday,2,\\"robbie@perkins-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568278,\\"sold_product_568278_6696, sold_product_568278_21136\\",\\"sold_product_568278_6696, sold_product_568278_21136\\",\\"33, 33\\",\\"33, 33\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"15.844, 17.813\\",\\"33, 33\\",\\"6,696, 21,136\\",\\"Slim fit jeans - dark blue, Jumper - dark blue\\",\\"Slim fit jeans - dark blue, Jumper - dark blue\\",\\"1, 1\\",\\"ZO0536705367, ZO0449804498\\",\\"0, 0\\",\\"33, 33\\",\\"33, 33\\",\\"0, 0\\",\\"ZO0536705367, ZO0449804498\\",66,66,2,2,order,robbie -CQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Boris,Boris,\\"Boris Ruiz\\",\\"Boris Ruiz\\",MALE,36,Ruiz,Ruiz,\\"(empty)\\",Wednesday,2,\\"boris@ruiz-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568428,\\"sold_product_568428_22274, sold_product_568428_12864\\",\\"sold_product_568428_22274, sold_product_568428_12864\\",\\"65, 22.984\\",\\"65, 22.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"34.438, 11.719\\",\\"65, 22.984\\",\\"22,274, 12,864\\",\\"Suit jacket - black, SLIM FIT - Formal shirt - black\\",\\"Suit jacket - black, SLIM FIT - Formal shirt - black\\",\\"1, 1\\",\\"ZO0408404084, ZO0422304223\\",\\"0, 0\\",\\"65, 22.984\\",\\"65, 22.984\\",\\"0, 0\\",\\"ZO0408404084, ZO0422304223\\",88,88,2,2,order,boris -CgMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Hopkins\\",\\"Abigail Hopkins\\",FEMALE,46,Hopkins,Hopkins,\\"(empty)\\",Wednesday,2,\\"abigail@hopkins-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568492,\\"sold_product_568492_21002, sold_product_568492_19078\\",\\"sold_product_568492_21002, sold_product_568492_19078\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"17.156, 8.828\\",\\"33, 16.984\\",\\"21,002, 19,078\\",\\"Shirt - Dark Turquoise, Print T-shirt - black\\",\\"Shirt - Dark Turquoise, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0346103461, ZO0054100541\\",\\"0, 0\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"0, 0\\",\\"ZO0346103461, ZO0054100541\\",\\"49.969\\",\\"49.969\\",2,2,order,abigail -GgMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Greene\\",\\"Abdulraheem Al Greene\\",MALE,33,Greene,Greene,\\"(empty)\\",Wednesday,2,\\"abdulraheem al@greene-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569262,\\"sold_product_569262_11467, sold_product_569262_11510\\",\\"sold_product_569262_11467, sold_product_569262_11510\\",\\"12.992, 10.992\\",\\"12.992, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"6.109, 5.82\\",\\"12.992, 10.992\\",\\"11,467, 11,510\\",\\"3 PACK - Shorts - black/royal/mint, Sports shirt - black\\",\\"3 PACK - Shorts - black/royal/mint, Sports shirt - black\\",\\"1, 1\\",\\"ZO0609906099, ZO0614806148\\",\\"0, 0\\",\\"12.992, 10.992\\",\\"12.992, 10.992\\",\\"0, 0\\",\\"ZO0609906099, ZO0614806148\\",\\"23.984\\",\\"23.984\\",2,2,order,abdulraheem -GwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Mckenzie\\",\\"Abd Mckenzie\\",MALE,52,Mckenzie,Mckenzie,\\"(empty)\\",Wednesday,2,\\"abd@mckenzie-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569306,\\"sold_product_569306_13753, sold_product_569306_19486\\",\\"sold_product_569306_13753, sold_product_569306_19486\\",\\"24.984, 85\\",\\"24.984, 85\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"13.742, 44.188\\",\\"24.984, 85\\",\\"13,753, 19,486\\",\\"Formal shirt - white/blue, Snowboard jacket - black\\",\\"Formal shirt - white/blue, Snowboard jacket - black\\",\\"1, 1\\",\\"ZO0412004120, ZO0625406254\\",\\"0, 0\\",\\"24.984, 85\\",\\"24.984, 85\\",\\"0, 0\\",\\"ZO0412004120, ZO0625406254\\",110,110,2,2,order,abd -0gMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Yuri,Yuri,\\"Yuri Perry\\",\\"Yuri Perry\\",MALE,21,Perry,Perry,\\"(empty)\\",Wednesday,2,\\"yuri@perry-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569223,\\"sold_product_569223_12715, sold_product_569223_20466\\",\\"sold_product_569223_12715, sold_product_569223_20466\\",\\"18.984, 7.988\\",\\"18.984, 7.988\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"8.742, 4.23\\",\\"18.984, 7.988\\",\\"12,715, 20,466\\",\\"Polo shirt - off-white, Hat - black\\",\\"Polo shirt - off-white, Hat - black\\",\\"1, 1\\",\\"ZO0444004440, ZO0596805968\\",\\"0, 0\\",\\"18.984, 7.988\\",\\"18.984, 7.988\\",\\"0, 0\\",\\"ZO0444004440, ZO0596805968\\",\\"26.984\\",\\"26.984\\",2,2,order,yuri -GAMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Muniz,Muniz,\\"Muniz Perkins\\",\\"Muniz Perkins\\",MALE,37,Perkins,Perkins,\\"(empty)\\",Wednesday,2,\\"muniz@perkins-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568039,\\"sold_product_568039_13197, sold_product_568039_11137\\",\\"sold_product_568039_13197, sold_product_568039_11137\\",\\"10.992, 28.984\\",\\"10.992, 28.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"5.172, 15.359\\",\\"10.992, 28.984\\",\\"13,197, 11,137\\",\\"Sunglasses - black/silver-coloured, Shirt - white\\",\\"Sunglasses - black/silver-coloured, Shirt - white\\",\\"1, 1\\",\\"ZO0599705997, ZO0416704167\\",\\"0, 0\\",\\"10.992, 28.984\\",\\"10.992, 28.984\\",\\"0, 0\\",\\"ZO0599705997, ZO0416704167\\",\\"39.969\\",\\"39.969\\",2,2,order,muniz -YgMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Abd,Abd,\\"Abd Parker\\",\\"Abd Parker\\",MALE,52,Parker,Parker,\\"(empty)\\",Wednesday,2,\\"abd@parker-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568117,\\"sold_product_568117_13602, sold_product_568117_20020\\",\\"sold_product_568117_13602, sold_product_568117_20020\\",\\"20.984, 60\\",\\"20.984, 60\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"10.289, 28.797\\",\\"20.984, 60\\",\\"13,602, 20,020\\",\\"Across body bag - dark brown, Boots - navy\\",\\"Across body bag - dark brown, Boots - navy\\",\\"1, 1\\",\\"ZO0315203152, ZO0406304063\\",\\"0, 0\\",\\"20.984, 60\\",\\"20.984, 60\\",\\"0, 0\\",\\"ZO0315203152, ZO0406304063\\",81,81,2,2,order,abd -YwMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Figueroa\\",\\"Clarice Figueroa\\",FEMALE,18,Figueroa,Figueroa,\\"(empty)\\",Wednesday,2,\\"clarice@figueroa-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568165,\\"sold_product_568165_22895, sold_product_568165_20510\\",\\"sold_product_568165_22895, sold_product_568165_20510\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"13.492, 28.797\\",\\"24.984, 60\\",\\"22,895, 20,510\\",\\"Vest - moroccan blue, Dress - navy blazer\\",\\"Vest - moroccan blue, Dress - navy blazer\\",\\"1, 1\\",\\"ZO0065600656, ZO0337003370\\",\\"0, 0\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"0, 0\\",\\"ZO0065600656, ZO0337003370\\",85,85,2,2,order,clarice -hQMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Mccarthy\\",\\"Elyssa Mccarthy\\",FEMALE,27,Mccarthy,Mccarthy,\\"(empty)\\",Wednesday,2,\\"elyssa@mccarthy-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568393,\\"sold_product_568393_5224, sold_product_568393_18968\\",\\"sold_product_568393_5224, sold_product_568393_18968\\",\\"85, 50\\",\\"85, 50\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"41.656, 25\\",\\"85, 50\\",\\"5,224, 18,968\\",\\"Boots - cognac, High heeled sandals - black\\",\\"Boots - cognac, High heeled sandals - black\\",\\"1, 1\\",\\"ZO0374103741, ZO0242102421\\",\\"0, 0\\",\\"85, 50\\",\\"85, 50\\",\\"0, 0\\",\\"ZO0374103741, ZO0242102421\\",135,135,2,2,order,elyssa -1QMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Cunningham\\",\\"Gwen Cunningham\\",FEMALE,26,Cunningham,Cunningham,\\"(empty)\\",Wednesday,2,\\"gwen@cunningham-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Tigress Enterprises Curvy, Tigress Enterprises\\",\\"Tigress Enterprises Curvy, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",567996,\\"sold_product_567996_21740, sold_product_567996_20451\\",\\"sold_product_567996_21740, sold_product_567996_20451\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises Curvy, Tigress Enterprises\\",\\"Tigress Enterprises Curvy, Tigress Enterprises\\",\\"11.25, 15.648\\",\\"24.984, 28.984\\",\\"21,740, 20,451\\",\\"Print T-shirt - scarab, Jersey dress - port royal\\",\\"Print T-shirt - scarab, Jersey dress - port royal\\",\\"1, 1\\",\\"ZO0105401054, ZO0046200462\\",\\"0, 0\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"0, 0\\",\\"ZO0105401054, ZO0046200462\\",\\"53.969\\",\\"53.969\\",2,2,order,gwen -BwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Marwan,Marwan,\\"Marwan Carr\\",\\"Marwan Carr\\",MALE,51,Carr,Carr,\\"(empty)\\",Wednesday,2,\\"marwan@carr-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569173,\\"sold_product_569173_17602, sold_product_569173_2924\\",\\"sold_product_569173_17602, sold_product_569173_2924\\",\\"24.984, 37\\",\\"24.984, 37\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"11.75, 18.125\\",\\"24.984, 37\\",\\"17,602, 2,924\\",\\"Jumper - mulitcoloured/dark blue, Tracksuit - navy blazer\\",\\"Jumper - mulitcoloured/dark blue, Tracksuit - navy blazer\\",\\"1, 1\\",\\"ZO0452204522, ZO0631206312\\",\\"0, 0\\",\\"24.984, 37\\",\\"24.984, 37\\",\\"0, 0\\",\\"ZO0452204522, ZO0631206312\\",\\"61.969\\",\\"61.969\\",2,2,order,marwan -CAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Frances,Frances,\\"Frances Wells\\",\\"Frances Wells\\",FEMALE,49,Wells,Wells,\\"(empty)\\",Wednesday,2,\\"frances@wells-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569209,\\"sold_product_569209_16819, sold_product_569209_24934\\",\\"sold_product_569209_16819, sold_product_569209_24934\\",\\"42, 50\\",\\"42, 50\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"19.734, 22.5\\",\\"42, 50\\",\\"16,819, 24,934\\",\\"Weekend bag - cognac, Lace-up boots - resin coffee\\",\\"Weekend bag - cognac, Lace-up boots - resin coffee\\",\\"1, 1\\",\\"ZO0472304723, ZO0403504035\\",\\"0, 0\\",\\"42, 50\\",\\"42, 50\\",\\"0, 0\\",\\"ZO0472304723, ZO0403504035\\",92,92,2,2,order,frances -CQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Gibbs\\",\\"Jackson Gibbs\\",MALE,13,Gibbs,Gibbs,\\"(empty)\\",Wednesday,2,\\"jackson@gibbs-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568865,\\"sold_product_568865_15772, sold_product_568865_13481\\",\\"sold_product_568865_15772, sold_product_568865_13481\\",\\"11.992, 10.992\\",\\"11.992, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"6.23, 5.281\\",\\"11.992, 10.992\\",\\"15,772, 13,481\\",\\"Print T-shirt - white, Print T-shirt - white\\",\\"Print T-shirt - white, Print T-shirt - white\\",\\"1, 1\\",\\"ZO0294502945, ZO0560605606\\",\\"0, 0\\",\\"11.992, 10.992\\",\\"11.992, 10.992\\",\\"0, 0\\",\\"ZO0294502945, ZO0560605606\\",\\"22.984\\",\\"22.984\\",2,2,order,jackson -CgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yahya,Yahya,\\"Yahya Holland\\",\\"Yahya Holland\\",MALE,23,Holland,Holland,\\"(empty)\\",Wednesday,2,\\"yahya@holland-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Oceanavigations,Oceanavigations,\\"Jun 25, 2019 @ 00:00:00.000\\",568926,\\"sold_product_568926_19082, sold_product_568926_17588\\",\\"sold_product_568926_19082, sold_product_568926_17588\\",\\"70, 20.984\\",\\"70, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"37.094, 10.906\\",\\"70, 20.984\\",\\"19,082, 17,588\\",\\"Jumper - ecru, Sweatshirt - mustard\\",\\"Jumper - ecru, Sweatshirt - mustard\\",\\"1, 1\\",\\"ZO0298302983, ZO0300003000\\",\\"0, 0\\",\\"70, 20.984\\",\\"70, 20.984\\",\\"0, 0\\",\\"ZO0298302983, ZO0300003000\\",91,91,2,2,order,yahya -CwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Haynes\\",\\"Selena Haynes\\",FEMALE,42,Haynes,Haynes,\\"(empty)\\",Wednesday,2,\\"selena@haynes-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568955,\\"sold_product_568955_7789, sold_product_568955_11911\\",\\"sold_product_568955_7789, sold_product_568955_11911\\",\\"28.984, 11.992\\",\\"28.984, 11.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"15.359, 6\\",\\"28.984, 11.992\\",\\"7,789, 11,911\\",\\"Cardigan - blue grey, Leggings - black/white\\",\\"Cardigan - blue grey, Leggings - black/white\\",\\"1, 1\\",\\"ZO0068900689, ZO0076200762\\",\\"0, 0\\",\\"28.984, 11.992\\",\\"28.984, 11.992\\",\\"0, 0\\",\\"ZO0068900689, ZO0076200762\\",\\"40.969\\",\\"40.969\\",2,2,order,selena -DAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Yasmine,Yasmine,\\"Yasmine Roberson\\",\\"Yasmine Roberson\\",FEMALE,43,Roberson,Roberson,\\"(empty)\\",Wednesday,2,\\"yasmine@roberson-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569056,\\"sold_product_569056_18276, sold_product_569056_16315\\",\\"sold_product_569056_18276, sold_product_569056_16315\\",\\"10.992, 33\\",\\"10.992, 33\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"5.82, 16.813\\",\\"10.992, 33\\",\\"18,276, 16,315\\",\\"Print T-shirt - dark grey, Handbag - taupe\\",\\"Print T-shirt - dark grey, Handbag - taupe\\",\\"1, 1\\",\\"ZO0494804948, ZO0096000960\\",\\"0, 0\\",\\"10.992, 33\\",\\"10.992, 33\\",\\"0, 0\\",\\"ZO0494804948, ZO0096000960\\",\\"43.969\\",\\"43.969\\",2,2,order,yasmine -DQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Hudson\\",\\"Yasmine Hudson\\",FEMALE,43,Hudson,Hudson,\\"(empty)\\",Wednesday,2,\\"yasmine@hudson-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569083,\\"sold_product_569083_17188, sold_product_569083_11983\\",\\"sold_product_569083_17188, sold_product_569083_11983\\",\\"13.992, 24.984\\",\\"13.992, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"7.551, 12.492\\",\\"13.992, 24.984\\",\\"17,188, 11,983\\",\\"Bustier - dark blue, Summer dress - red\\",\\"Bustier - dark blue, Summer dress - red\\",\\"1, 1\\",\\"ZO0099000990, ZO0631606316\\",\\"0, 0\\",\\"13.992, 24.984\\",\\"13.992, 24.984\\",\\"0, 0\\",\\"ZO0099000990, ZO0631606316\\",\\"38.969\\",\\"38.969\\",2,2,order,yasmine -EgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jackson,Jackson,\\"Jackson Conner\\",\\"Jackson Conner\\",MALE,13,Conner,Conner,\\"(empty)\\",Wednesday,2,\\"jackson@conner-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, (empty), Low Tide Media\\",\\"Oceanavigations, (empty), Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",717726,\\"sold_product_717726_23932, sold_product_717726_12833, sold_product_717726_20363, sold_product_717726_13390\\",\\"sold_product_717726_23932, sold_product_717726_12833, sold_product_717726_20363, sold_product_717726_13390\\",\\"28.984, 155, 50, 24.984\\",\\"28.984, 155, 50, 24.984\\",\\"Men's Clothing, Men's Shoes, Men's Shoes, Men's Clothing\\",\\"Men's Clothing, Men's Shoes, Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Oceanavigations, (empty), Low Tide Media, Oceanavigations\\",\\"Oceanavigations, (empty), Low Tide Media, Oceanavigations\\",\\"13.922, 79.063, 24, 12\\",\\"28.984, 155, 50, 24.984\\",\\"23,932, 12,833, 20,363, 13,390\\",\\"SVEN - Jeans Tapered Fit - light blue, Smart lace-ups - cognac, Boots - Lime, Chinos - military green\\",\\"SVEN - Jeans Tapered Fit - light blue, Smart lace-ups - cognac, Boots - Lime, Chinos - military green\\",\\"1, 1, 1, 1\\",\\"ZO0284902849, ZO0481204812, ZO0398403984, ZO0282402824\\",\\"0, 0, 0, 0\\",\\"28.984, 155, 50, 24.984\\",\\"28.984, 155, 50, 24.984\\",\\"0, 0, 0, 0\\",\\"ZO0284902849, ZO0481204812, ZO0398403984, ZO0282402824\\",259,259,4,4,order,jackson -QwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,rania,rania,\\"rania Chapman\\",\\"rania Chapman\\",FEMALE,24,Chapman,Chapman,\\"(empty)\\",Wednesday,2,\\"rania@chapman-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Gnomehouse, Angeldale\\",\\"Gnomehouse, Angeldale\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568149,\\"sold_product_568149_12205, sold_product_568149_24905\\",\\"sold_product_568149_12205, sold_product_568149_24905\\",\\"33, 80\\",\\"33, 80\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Angeldale\\",\\"Gnomehouse, Angeldale\\",\\"15.18, 42.375\\",\\"33, 80\\",\\"12,205, 24,905\\",\\"Jacket - black, Lace-up boots - black\\",\\"Jacket - black, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0342503425, ZO0675206752\\",\\"0, 0\\",\\"33, 80\\",\\"33, 80\\",\\"0, 0\\",\\"ZO0342503425, ZO0675206752\\",113,113,2,2,order,rani -RAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Howell\\",\\"Rabbia Al Howell\\",FEMALE,5,Howell,Howell,\\"(empty)\\",Wednesday,2,\\"rabbia al@howell-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Crystal Lighting, Gnomehouse\\",\\"Crystal Lighting, Gnomehouse\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568192,\\"sold_product_568192_23290, sold_product_568192_11670\\",\\"sold_product_568192_23290, sold_product_568192_11670\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Crystal Lighting, Gnomehouse\\",\\"Crystal Lighting, Gnomehouse\\",\\"10.703, 9.867\\",\\"20.984, 20.984\\",\\"23,290, 11,670\\",\\"Wool jumper - dark blue, Hat - beige\\",\\"Wool jumper - dark blue, Hat - beige\\",\\"1, 1\\",\\"ZO0485504855, ZO0355603556\\",\\"0, 0\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"0, 0\\",\\"ZO0485504855, ZO0355603556\\",\\"41.969\\",\\"41.969\\",2,2,order,rabbia -YQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Gibbs\\",\\"Elyssa Gibbs\\",FEMALE,27,Gibbs,Gibbs,\\"(empty)\\",Wednesday,2,\\"elyssa@gibbs-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569183,\\"sold_product_569183_12081, sold_product_569183_8623\\",\\"sold_product_569183_12081, sold_product_569183_8623\\",\\"10.992, 17.984\\",\\"10.992, 17.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"5.172, 8.102\\",\\"10.992, 17.984\\",\\"12,081, 8,623\\",\\"Long sleeved top - dark brown, Long sleeved top - red ochre\\",\\"Long sleeved top - dark brown, Long sleeved top - red ochre\\",\\"1, 1\\",\\"ZO0641206412, ZO0165301653\\",\\"0, 0\\",\\"10.992, 17.984\\",\\"10.992, 17.984\\",\\"0, 0\\",\\"ZO0641206412, ZO0165301653\\",\\"28.984\\",\\"28.984\\",2,2,order,elyssa -YgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Kamal,Kamal,\\"Kamal Mckinney\\",\\"Kamal Mckinney\\",MALE,39,Mckinney,Mckinney,\\"(empty)\\",Wednesday,2,\\"kamal@mckinney-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568818,\\"sold_product_568818_12415, sold_product_568818_24390\\",\\"sold_product_568818_12415, sold_product_568818_24390\\",\\"18.984, 16.984\\",\\"18.984, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"9.313, 8.828\\",\\"18.984, 16.984\\",\\"12,415, 24,390\\",\\"Polo shirt - mottled grey, Jumper - dark brown multicolor\\",\\"Polo shirt - mottled grey, Jumper - dark brown multicolor\\",\\"1, 1\\",\\"ZO0294802948, ZO0451404514\\",\\"0, 0\\",\\"18.984, 16.984\\",\\"18.984, 16.984\\",\\"0, 0\\",\\"ZO0294802948, ZO0451404514\\",\\"35.969\\",\\"35.969\\",2,2,order,kamal -YwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Robert,Robert,\\"Robert Rivera\\",\\"Robert Rivera\\",MALE,29,Rivera,Rivera,\\"(empty)\\",Wednesday,2,\\"robert@rivera-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Spritechnologies, Oceanavigations\\",\\"Spritechnologies, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568854,\\"sold_product_568854_12479, sold_product_568854_1820\\",\\"sold_product_568854_12479, sold_product_568854_1820\\",\\"10.992, 75\\",\\"10.992, 75\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Oceanavigations\\",\\"Spritechnologies, Oceanavigations\\",\\"5.059, 36.75\\",\\"10.992, 75\\",\\"12,479, 1,820\\",\\"Print T-shirt - black, Smart slip-ons - oro\\",\\"Print T-shirt - black, Smart slip-ons - oro\\",\\"1, 1\\",\\"ZO0616706167, ZO0255402554\\",\\"0, 0\\",\\"10.992, 75\\",\\"10.992, 75\\",\\"0, 0\\",\\"ZO0616706167, ZO0255402554\\",86,86,2,2,order,robert -ZAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,\\"Ahmed Al\\",\\"Ahmed Al\\",\\"Ahmed Al Carpenter\\",\\"Ahmed Al Carpenter\\",MALE,4,Carpenter,Carpenter,\\"(empty)\\",Wednesday,2,\\"ahmed al@carpenter-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568901,\\"sold_product_568901_13181, sold_product_568901_23144\\",\\"sold_product_568901_13181, sold_product_568901_23144\\",\\"42, 28.984\\",\\"42, 28.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"21, 15.359\\",\\"42, 28.984\\",\\"13,181, 23,144\\",\\"Briefcase - navy, Slim fit jeans - grey\\",\\"Briefcase - navy, Slim fit jeans - grey\\",\\"1, 1\\",\\"ZO0466704667, ZO0427104271\\",\\"0, 0\\",\\"42, 28.984\\",\\"42, 28.984\\",\\"0, 0\\",\\"ZO0466704667, ZO0427104271\\",71,71,2,2,order,ahmed -ZQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Mostafa,Mostafa,\\"Mostafa Hansen\\",\\"Mostafa Hansen\\",MALE,9,Hansen,Hansen,\\"(empty)\\",Wednesday,2,\\"mostafa@hansen-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568954,\\"sold_product_568954_591, sold_product_568954_1974\\",\\"sold_product_568954_591, sold_product_568954_1974\\",\\"65, 60\\",\\"65, 60\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"29.906, 28.203\\",\\"65, 60\\",\\"591, 1,974\\",\\"Lace-up boots - black barro, Lace-up boots - black\\",\\"Lace-up boots - black barro, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0399603996, ZO0685906859\\",\\"0, 0\\",\\"65, 60\\",\\"65, 60\\",\\"0, 0\\",\\"ZO0399603996, ZO0685906859\\",125,125,2,2,order,mostafa -ZgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Pia,Pia,\\"Pia Palmer\\",\\"Pia Palmer\\",FEMALE,45,Palmer,Palmer,\\"(empty)\\",Wednesday,2,\\"pia@palmer-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Primemaster\\",\\"Tigress Enterprises, Primemaster\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569033,\\"sold_product_569033_7233, sold_product_569033_18726\\",\\"sold_product_569033_7233, sold_product_569033_18726\\",\\"50, 140\\",\\"50, 140\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Primemaster\\",\\"Tigress Enterprises, Primemaster\\",\\"26.484, 64.375\\",\\"50, 140\\",\\"7,233, 18,726\\",\\"Over-the-knee boots - cognac, High heeled boots - stone\\",\\"Over-the-knee boots - cognac, High heeled boots - stone\\",\\"1, 1\\",\\"ZO0015700157, ZO0362503625\\",\\"0, 0\\",\\"50, 140\\",\\"50, 140\\",\\"0, 0\\",\\"ZO0015700157, ZO0362503625\\",190,190,2,2,order,pia -ZwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Mcdonald\\",\\"Fitzgerald Mcdonald\\",MALE,11,Mcdonald,Mcdonald,\\"(empty)\\",Wednesday,2,\\"fitzgerald@mcdonald-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569091,\\"sold_product_569091_13103, sold_product_569091_12677\\",\\"sold_product_569091_13103, sold_product_569091_12677\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"17.156, 8.492\\",\\"33, 16.984\\",\\"13,103, 12,677\\",\\"T-bar sandals - black, Long sleeved top - black\\",\\"T-bar sandals - black, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0258602586, ZO0552205522\\",\\"0, 0\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"0, 0\\",\\"ZO0258602586, ZO0552205522\\",\\"49.969\\",\\"49.969\\",2,2,order,fuzzy -aAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,\\"Ahmed Al\\",\\"Ahmed Al\\",\\"Ahmed Al Gibbs\\",\\"Ahmed Al Gibbs\\",MALE,4,Gibbs,Gibbs,\\"(empty)\\",Wednesday,2,\\"ahmed al@gibbs-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569003,\\"sold_product_569003_13719, sold_product_569003_12174\\",\\"sold_product_569003_13719, sold_product_569003_12174\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"13.242, 27\\",\\"24.984, 60\\",\\"13,719, 12,174\\",\\"Shirt - blue/grey, Smart lace-ups - Dark Red\\",\\"Shirt - blue/grey, Smart lace-ups - Dark Red\\",\\"1, 1\\",\\"ZO0414704147, ZO0387503875\\",\\"0, 0\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"0, 0\\",\\"ZO0414704147, ZO0387503875\\",85,85,2,2,order,ahmed -bQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Jim,Jim,\\"Jim Potter\\",\\"Jim Potter\\",MALE,41,Potter,Potter,\\"(empty)\\",Wednesday,2,\\"jim@potter-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568707,\\"sold_product_568707_24723, sold_product_568707_24246\\",\\"sold_product_568707_24723, sold_product_568707_24246\\",\\"33, 65\\",\\"33, 65\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"17.484, 33.781\\",\\"33, 65\\",\\"24,723, 24,246\\",\\"High-top trainers - multicolor, Lace-up boots - black\\",\\"High-top trainers - multicolor, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0513305133, ZO0253302533\\",\\"0, 0\\",\\"33, 65\\",\\"33, 65\\",\\"0, 0\\",\\"ZO0513305133, ZO0253302533\\",98,98,2,2,order,jim -eQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,George,George,\\"George Underwood\\",\\"George Underwood\\",MALE,32,Underwood,Underwood,\\"(empty)\\",Wednesday,2,\\"george@underwood-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,Elitelligence,Elitelligence,\\"Jun 25, 2019 @ 00:00:00.000\\",568019,\\"sold_product_568019_17179, sold_product_568019_20306\\",\\"sold_product_568019_17179, sold_product_568019_20306\\",\\"28.984, 11.992\\",\\"28.984, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"15.07, 5.52\\",\\"28.984, 11.992\\",\\"17,179, 20,306\\",\\"Chinos - black, Long sleeved top - mottled dark grey\\",\\"Chinos - black, Long sleeved top - mottled dark grey\\",\\"1, 1\\",\\"ZO0530805308, ZO0563905639\\",\\"0, 0\\",\\"28.984, 11.992\\",\\"28.984, 11.992\\",\\"0, 0\\",\\"ZO0530805308, ZO0563905639\\",\\"40.969\\",\\"40.969\\",2,2,order,george -qQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Ruiz\\",\\"Yasmine Ruiz\\",FEMALE,43,Ruiz,Ruiz,\\"(empty)\\",Wednesday,2,\\"yasmine@ruiz-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Gnomehouse, Spherecords\\",\\"Gnomehouse, Spherecords\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568182,\\"sold_product_568182_18562, sold_product_568182_21438\\",\\"sold_product_568182_18562, sold_product_568182_21438\\",\\"42, 10.992\\",\\"42, 10.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Spherecords\\",\\"Gnomehouse, Spherecords\\",\\"18.906, 5.711\\",\\"42, 10.992\\",\\"18,562, 21,438\\",\\"Jersey dress - black, Long sleeved top - light grey multicolor\\",\\"Jersey dress - black, Long sleeved top - light grey multicolor\\",\\"1, 1\\",\\"ZO0338603386, ZO0641006410\\",\\"0, 0\\",\\"42, 10.992\\",\\"42, 10.992\\",\\"0, 0\\",\\"ZO0338603386, ZO0641006410\\",\\"52.969\\",\\"52.969\\",2,2,order,yasmine -CwMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jim,Jim,\\"Jim Munoz\\",\\"Jim Munoz\\",MALE,41,Munoz,Munoz,\\"(empty)\\",Wednesday,2,\\"jim@munoz-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569299,\\"sold_product_569299_18493, sold_product_569299_22273\\",\\"sold_product_569299_18493, sold_product_569299_22273\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"15.18, 5.93\\",\\"33, 10.992\\",\\"18,493, 22,273\\",\\"Lace-up boots - camel, Shorts - black\\",\\"Lace-up boots - camel, Shorts - black\\",\\"1, 1\\",\\"ZO0519605196, ZO0630806308\\",\\"0, 0\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"0, 0\\",\\"ZO0519605196, ZO0630806308\\",\\"43.969\\",\\"43.969\\",2,2,order,jim -DAMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Watkins\\",\\"Jackson Watkins\\",MALE,13,Watkins,Watkins,\\"(empty)\\",Wednesday,2,\\"jackson@watkins-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569123,\\"sold_product_569123_15429, sold_product_569123_23856\\",\\"sold_product_569123_15429, sold_product_569123_23856\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"10.703, 5.398\\",\\"20.984, 11.992\\",\\"15,429, 23,856\\",\\"Rucksack - black, Polo shirt - dark grey multicolor\\",\\"Rucksack - black, Polo shirt - dark grey multicolor\\",\\"1, 1\\",\\"ZO0609006090, ZO0441504415\\",\\"0, 0\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"0, 0\\",\\"ZO0609006090, ZO0441504415\\",\\"32.969\\",\\"32.969\\",2,2,order,jackson -kAMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Austin\\",\\"Elyssa Austin\\",FEMALE,27,Austin,Austin,\\"(empty)\\",Wednesday,2,\\"elyssa@austin-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Tigress Enterprises, Pyramidustries active\\",\\"Pyramidustries, Tigress Enterprises, Pyramidustries active\\",\\"Jun 25, 2019 @ 00:00:00.000\\",728335,\\"sold_product_728335_15156, sold_product_728335_21016, sold_product_728335_24932, sold_product_728335_18891\\",\\"sold_product_728335_15156, sold_product_728335_21016, sold_product_728335_24932, sold_product_728335_18891\\",\\"24.984, 33, 21.984, 33\\",\\"24.984, 33, 21.984, 33\\",\\"Women's Shoes, Women's Shoes, Women's Clothing, Women's Shoes\\",\\"Women's Shoes, Women's Shoes, Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Pyramidustries, Tigress Enterprises, Pyramidustries active, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises, Pyramidustries active, Tigress Enterprises\\",\\"12.992, 15.844, 12.094, 18.141\\",\\"24.984, 33, 21.984, 33\\",\\"15,156, 21,016, 24,932, 18,891\\",\\"Classic heels - light blue, Ankle boots - black, Tights - grey multicolor, Ankle boots - black\\",\\"Classic heels - light blue, Ankle boots - black, Tights - grey multicolor, Ankle boots - black\\",\\"1, 1, 1, 1\\",\\"ZO0134701347, ZO0026200262, ZO0223102231, ZO0022900229\\",\\"0, 0, 0, 0\\",\\"24.984, 33, 21.984, 33\\",\\"24.984, 33, 21.984, 33\\",\\"0, 0, 0, 0\\",\\"ZO0134701347, ZO0026200262, ZO0223102231, ZO0022900229\\",\\"112.938\\",\\"112.938\\",4,4,order,elyssa -mgMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Powell\\",\\"Rabbia Al Powell\\",FEMALE,5,Powell,Powell,\\"(empty)\\",Wednesday,2,\\"rabbia al@powell-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Primemaster, Tigress Enterprises, Spherecords Maternity, Champion Arts\\",\\"Primemaster, Tigress Enterprises, Spherecords Maternity, Champion Arts\\",\\"Jun 25, 2019 @ 00:00:00.000\\",726874,\\"sold_product_726874_12603, sold_product_726874_14008, sold_product_726874_16407, sold_product_726874_23268\\",\\"sold_product_726874_12603, sold_product_726874_14008, sold_product_726874_16407, sold_product_726874_23268\\",\\"140, 37, 13.992, 42\\",\\"140, 37, 13.992, 42\\",\\"Women's Shoes, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Women's Shoes, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Primemaster, Tigress Enterprises, Spherecords Maternity, Champion Arts\\",\\"Primemaster, Tigress Enterprises, Spherecords Maternity, Champion Arts\\",\\"70, 18.5, 7, 19.734\\",\\"140, 37, 13.992, 42\\",\\"12,603, 14,008, 16,407, 23,268\\",\\"Boots - Midnight Blue, Summer dress - rose/black, Maxi skirt - mid grey multicolor, Light jacket - black/off-white\\",\\"Boots - Midnight Blue, Summer dress - rose/black, Maxi skirt - mid grey multicolor, Light jacket - black/off-white\\",\\"1, 1, 1, 1\\",\\"ZO0362303623, ZO0035400354, ZO0705207052, ZO0504005040\\",\\"0, 0, 0, 0\\",\\"140, 37, 13.992, 42\\",\\"140, 37, 13.992, 42\\",\\"0, 0, 0, 0\\",\\"ZO0362303623, ZO0035400354, ZO0705207052, ZO0504005040\\",233,233,4,4,order,rabbia -vAMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Benson\\",\\"Stephanie Benson\\",FEMALE,6,Benson,Benson,\\"(empty)\\",Wednesday,2,\\"stephanie@benson-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Spherecords, Champion Arts\\",\\"Spherecords, Champion Arts\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569218,\\"sold_product_569218_18040, sold_product_569218_14398\\",\\"sold_product_569218_18040, sold_product_569218_14398\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Champion Arts\\",\\"Spherecords, Champion Arts\\",\\"12.25, 10.906\\",\\"24.984, 20.984\\",\\"18,040, 14,398\\",\\"Trousers - black, Tracksuit bottoms - dark grey\\",\\"Trousers - black, Tracksuit bottoms - dark grey\\",\\"1, 1\\",\\"ZO0633206332, ZO0488604886\\",\\"0, 0\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"0, 0\\",\\"ZO0633206332, ZO0488604886\\",\\"45.969\\",\\"45.969\\",2,2,order,stephanie -0wMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Nash\\",\\"Jackson Nash\\",MALE,13,Nash,Nash,\\"(empty)\\",Wednesday,2,\\"jackson@nash-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Spritechnologies, Low Tide Media, Elitelligence\\",\\"Spritechnologies, Low Tide Media, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",722613,\\"sold_product_722613_11046, sold_product_722613_11747, sold_product_722613_16568, sold_product_722613_15828\\",\\"sold_product_722613_11046, sold_product_722613_11747, sold_product_722613_16568, sold_product_722613_15828\\",\\"20.984, 20.984, 28.984, 10.992\\",\\"20.984, 20.984, 28.984, 10.992\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Spritechnologies, Low Tide Media, Elitelligence, Low Tide Media\\",\\"Spritechnologies, Low Tide Media, Elitelligence, Low Tide Media\\",\\"9.453, 10.906, 15.938, 5.172\\",\\"20.984, 20.984, 28.984, 10.992\\",\\"11,046, 11,747, 16,568, 15,828\\",\\"Tracksuit bottoms - black, Polo shirt - blue, Chinos - dark blue, Tie - black\\",\\"Tracksuit bottoms - black, Polo shirt - blue, Chinos - dark blue, Tie - black\\",\\"1, 1, 1, 1\\",\\"ZO0618806188, ZO0442804428, ZO0530705307, ZO0410804108\\",\\"0, 0, 0, 0\\",\\"20.984, 20.984, 28.984, 10.992\\",\\"20.984, 20.984, 28.984, 10.992\\",\\"0, 0, 0, 0\\",\\"ZO0618806188, ZO0442804428, ZO0530705307, ZO0410804108\\",\\"81.938\\",\\"81.938\\",4,4,order,jackson -1AMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Kim\\",\\"Sonya Kim\\",FEMALE,28,Kim,Kim,\\"(empty)\\",Wednesday,2,\\"sonya@kim-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568152,\\"sold_product_568152_16870, sold_product_568152_17608\\",\\"sold_product_568152_16870, sold_product_568152_17608\\",\\"37, 28.984\\",\\"37, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"17.391, 14.211\\",\\"37, 28.984\\",\\"16,870, 17,608\\",\\"Blouse - multicolored, Summer dress - black/berry\\",\\"Blouse - multicolored, Summer dress - black/berry\\",\\"1, 1\\",\\"ZO0349303493, ZO0043900439\\",\\"0, 0\\",\\"37, 28.984\\",\\"37, 28.984\\",\\"0, 0\\",\\"ZO0349303493, ZO0043900439\\",66,66,2,2,order,sonya -1QMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Irwin,Irwin,\\"Irwin Hampton\\",\\"Irwin Hampton\\",MALE,14,Hampton,Hampton,\\"(empty)\\",Wednesday,2,\\"irwin@hampton-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Elitelligence, Angeldale\\",\\"Elitelligence, Angeldale\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568212,\\"sold_product_568212_19457, sold_product_568212_1471\\",\\"sold_product_568212_19457, sold_product_568212_1471\\",\\"25.984, 60\\",\\"25.984, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Angeldale\\",\\"Elitelligence, Angeldale\\",\\"12.219, 30\\",\\"25.984, 60\\",\\"19,457, 1,471\\",\\"Slim fit jeans - khaki, Lace-up boots - tan\\",\\"Slim fit jeans - khaki, Lace-up boots - tan\\",\\"1, 1\\",\\"ZO0536405364, ZO0688306883\\",\\"0, 0\\",\\"25.984, 60\\",\\"25.984, 60\\",\\"0, 0\\",\\"ZO0536405364, ZO0688306883\\",86,86,2,2,order,irwin -5AMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Gomez\\",\\"Abdulraheem Al Gomez\\",MALE,33,Gomez,Gomez,\\"(empty)\\",Wednesday,2,\\"abdulraheem al@gomez-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568228,\\"sold_product_568228_17075, sold_product_568228_21129\\",\\"sold_product_568228_17075, sold_product_568228_21129\\",\\"60, 22.984\\",\\"60, 22.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"31.797, 11.039\\",\\"60, 22.984\\",\\"17,075, 21,129\\",\\"Smart lace-ups - cognac, Jumper - khaki\\",\\"Smart lace-ups - cognac, Jumper - khaki\\",\\"1, 1\\",\\"ZO0387103871, ZO0580005800\\",\\"0, 0\\",\\"60, 22.984\\",\\"60, 22.984\\",\\"0, 0\\",\\"ZO0387103871, ZO0580005800\\",83,83,2,2,order,abdulraheem -5QMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Robert,Robert,\\"Robert Lloyd\\",\\"Robert Lloyd\\",MALE,29,Lloyd,Lloyd,\\"(empty)\\",Wednesday,2,\\"robert@lloyd-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568455,\\"sold_product_568455_13779, sold_product_568455_15022\\",\\"sold_product_568455_13779, sold_product_568455_15022\\",\\"22.984, 60\\",\\"22.984, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"11.273, 30.594\\",\\"22.984, 60\\",\\"13,779, 15,022\\",\\"Formal shirt - light blue, Lace-ups - cognac\\",\\"Formal shirt - light blue, Lace-ups - cognac\\",\\"1, 1\\",\\"ZO0413104131, ZO0392303923\\",\\"0, 0\\",\\"22.984, 60\\",\\"22.984, 60\\",\\"0, 0\\",\\"ZO0413104131, ZO0392303923\\",83,83,2,2,order,robert -7wMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Evans\\",\\"Abdulraheem Al Evans\\",MALE,33,Evans,Evans,\\"(empty)\\",Wednesday,2,\\"abdulraheem al@evans-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",567994,\\"sold_product_567994_12464, sold_product_567994_14037\\",\\"sold_product_567994_12464, sold_product_567994_14037\\",\\"75, 140\\",\\"75, 140\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"33.75, 68.625\\",\\"75, 140\\",\\"12,464, 14,037\\",\\"Short coat - dark grey, Leather jacket - black\\",\\"Short coat - dark grey, Leather jacket - black\\",\\"1, 1\\",\\"ZO0430904309, ZO0288402884\\",\\"0, 0\\",\\"75, 140\\",\\"75, 140\\",\\"0, 0\\",\\"ZO0430904309, ZO0288402884\\",215,215,2,2,order,abdulraheem -CAMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Hayes\\",\\"Elyssa Hayes\\",FEMALE,27,Hayes,Hayes,\\"(empty)\\",Wednesday,2,\\"elyssa@hayes-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568045,\\"sold_product_568045_16186, sold_product_568045_24601\\",\\"sold_product_568045_16186, sold_product_568045_24601\\",\\"11.992, 28.984\\",\\"11.992, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"5.762, 14.492\\",\\"11.992, 28.984\\",\\"16,186, 24,601\\",\\"Print T-shirt - white, Cardigan - white/black\\",\\"Print T-shirt - white, Cardigan - white/black\\",\\"1, 1\\",\\"ZO0160501605, ZO0069500695\\",\\"0, 0\\",\\"11.992, 28.984\\",\\"11.992, 28.984\\",\\"0, 0\\",\\"ZO0160501605, ZO0069500695\\",\\"40.969\\",\\"40.969\\",2,2,order,elyssa -VQMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Bryant\\",\\"Elyssa Bryant\\",FEMALE,27,Bryant,Bryant,\\"(empty)\\",Wednesday,2,\\"elyssa@bryant-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568308,\\"sold_product_568308_15499, sold_product_568308_17990\\",\\"sold_product_568308_15499, sold_product_568308_17990\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"29.906, 12.992\\",\\"65, 24.984\\",\\"15,499, 17,990\\",\\"Over-the-knee boots - black, Ankle boots - cognac\\",\\"Over-the-knee boots - black, Ankle boots - cognac\\",\\"1, 1\\",\\"ZO0138701387, ZO0024600246\\",\\"0, 0\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"0, 0\\",\\"ZO0138701387, ZO0024600246\\",90,90,2,2,order,elyssa -VgMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Stephanie,Stephanie,\\"Stephanie Chapman\\",\\"Stephanie Chapman\\",FEMALE,6,Chapman,Chapman,\\"(empty)\\",Wednesday,2,\\"stephanie@chapman-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568515,\\"sold_product_568515_19990, sold_product_568515_18594\\",\\"sold_product_568515_19990, sold_product_568515_18594\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"5.762, 34.438\\",\\"11.992, 65\\",\\"19,990, 18,594\\",\\"Vest - Forest Green, Classic heels - black\\",\\"Vest - Forest Green, Classic heels - black\\",\\"1, 1\\",\\"ZO0159901599, ZO0238702387\\",\\"0, 0\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"0, 0\\",\\"ZO0159901599, ZO0238702387\\",77,77,2,2,order,stephanie -dgMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie Marshall\\",\\"Eddie Marshall\\",MALE,38,Marshall,Marshall,\\"(empty)\\",Wednesday,2,\\"eddie@marshall-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Elitelligence,Elitelligence,\\"Jun 25, 2019 @ 00:00:00.000\\",721706,\\"sold_product_721706_21844, sold_product_721706_11106, sold_product_721706_1850, sold_product_721706_22242\\",\\"sold_product_721706_21844, sold_product_721706_11106, sold_product_721706_1850, sold_product_721706_22242\\",\\"33, 10.992, 28.984, 24.984\\",\\"33, 10.992, 28.984, 24.984\\",\\"Men's Shoes, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, Elitelligence, Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence, Elitelligence, Elitelligence\\",\\"17.484, 5.711, 14.211, 12.992\\",\\"33, 10.992, 28.984, 24.984\\",\\"21,844, 11,106, 1,850, 22,242\\",\\"Lace-up boots - red, 2 PACK - Shorts - black/stripe, Trainers - black/grey, Sweatshirt - black\\",\\"Lace-up boots - red, 2 PACK - Shorts - black/stripe, Trainers - black/grey, Sweatshirt - black\\",\\"1, 1, 1, 1\\",\\"ZO0519005190, ZO0610206102, ZO0514405144, ZO0586505865\\",\\"0, 0, 0, 0\\",\\"33, 10.992, 28.984, 24.984\\",\\"33, 10.992, 28.984, 24.984\\",\\"0, 0, 0, 0\\",\\"ZO0519005190, ZO0610206102, ZO0514405144, ZO0586505865\\",\\"97.938\\",\\"97.938\\",4,4,order,eddie -fQMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Roberson\\",\\"Wilhemina St. Roberson\\",FEMALE,17,Roberson,Roberson,\\"(empty)\\",Wednesday,2,\\"wilhemina st.@roberson-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Tigress Enterprises MAMA, Tigress Enterprises\\",\\"Tigress Enterprises MAMA, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569250,\\"sold_product_569250_22975, sold_product_569250_16886\\",\\"sold_product_569250_22975, sold_product_569250_16886\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises MAMA, Tigress Enterprises\\",\\"Tigress Enterprises MAMA, Tigress Enterprises\\",\\"17.484, 14.781\\",\\"33, 28.984\\",\\"22,975, 16,886\\",\\"Jersey dress - Medium Sea Green, Wedges - black\\",\\"Jersey dress - Medium Sea Green, Wedges - black\\",\\"1, 1\\",\\"ZO0228902289, ZO0005400054\\",\\"0, 0\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"0, 0\\",\\"ZO0228902289, ZO0005400054\\",\\"61.969\\",\\"61.969\\",2,2,order,wilhemina -3wMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Thad,Thad,\\"Thad Washington\\",\\"Thad Washington\\",MALE,30,Washington,Washington,\\"(empty)\\",Wednesday,2,\\"thad@washington-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spritechnologies, Oceanavigations\\",\\"Spritechnologies, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568776,\\"sold_product_568776_22271, sold_product_568776_18957\\",\\"sold_product_568776_22271, sold_product_568776_18957\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Oceanavigations\\",\\"Spritechnologies, Oceanavigations\\",\\"5.711, 11.75\\",\\"10.992, 24.984\\",\\"22,271, 18,957\\",\\"Sports shirt - dark green, Jumper - black\\",\\"Sports shirt - dark green, Jumper - black\\",\\"1, 1\\",\\"ZO0616906169, ZO0296902969\\",\\"0, 0\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"0, 0\\",\\"ZO0616906169, ZO0296902969\\",\\"35.969\\",\\"35.969\\",2,2,order,thad -\\"-wMtOW0BH63Xcmy4524Z\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Samir,Samir,\\"Samir Moran\\",\\"Samir Moran\\",MALE,34,Moran,Moran,\\"(empty)\\",Wednesday,2,\\"samir@moran-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,Elitelligence,Elitelligence,\\"Jun 25, 2019 @ 00:00:00.000\\",568014,\\"sold_product_568014_6401, sold_product_568014_19633\\",\\"sold_product_568014_6401, sold_product_568014_19633\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"10.078, 6.352\\",\\"20.984, 11.992\\",\\"6,401, 19,633\\",\\"Shirt - Blue Violety, Long sleeved top - white and red\\",\\"Shirt - Blue Violety, Long sleeved top - white and red\\",\\"1, 1\\",\\"ZO0523905239, ZO0556605566\\",\\"0, 0\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"0, 0\\",\\"ZO0523905239, ZO0556605566\\",\\"32.969\\",\\"32.969\\",2,2,order,samir -8wMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Riley\\",\\"Elyssa Riley\\",FEMALE,27,Riley,Riley,\\"(empty)\\",Wednesday,2,\\"elyssa@riley-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Pyramidustries,Pyramidustries,\\"Jun 25, 2019 @ 00:00:00.000\\",568702,\\"sold_product_568702_18286, sold_product_568702_14025\\",\\"sold_product_568702_18286, sold_product_568702_14025\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"16.5, 11.5\\",\\"33, 24.984\\",\\"18,286, 14,025\\",\\"Ankle boots - black, Blazer - black\\",\\"Ankle boots - black, Blazer - black\\",\\"1, 1\\",\\"ZO0142801428, ZO0182801828\\",\\"0, 0\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"0, 0\\",\\"ZO0142801428, ZO0182801828\\",\\"57.969\\",\\"57.969\\",2,2,order,elyssa -HwMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Diane,Diane,\\"Diane Lloyd\\",\\"Diane Lloyd\\",FEMALE,22,Lloyd,Lloyd,\\"(empty)\\",Wednesday,2,\\"diane@lloyd-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568128,\\"sold_product_568128_11766, sold_product_568128_22927\\",\\"sold_product_568128_11766, sold_product_568128_22927\\",\\"24.984, 34\\",\\"24.984, 34\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"12.992, 17.672\\",\\"24.984, 34\\",\\"11,766, 22,927\\",\\"Tote bag - berry, Lace-ups - black\\",\\"Tote bag - berry, Lace-ups - black\\",\\"1, 1\\",\\"ZO0087500875, ZO0007100071\\",\\"0, 0\\",\\"24.984, 34\\",\\"24.984, 34\\",\\"0, 0\\",\\"ZO0087500875, ZO0007100071\\",\\"58.969\\",\\"58.969\\",2,2,order,diane -IAMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jackson,Jackson,\\"Jackson Fleming\\",\\"Jackson Fleming\\",MALE,13,Fleming,Fleming,\\"(empty)\\",Wednesday,2,\\"jackson@fleming-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568177,\\"sold_product_568177_15382, sold_product_568177_18515\\",\\"sold_product_568177_15382, sold_product_568177_18515\\",\\"37, 65\\",\\"37, 65\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"19.594, 31.844\\",\\"37, 65\\",\\"15,382, 18,515\\",\\"Tracksuit top - mottled grey, Lace-up boots - tan\\",\\"Tracksuit top - mottled grey, Lace-up boots - tan\\",\\"1, 1\\",\\"ZO0584505845, ZO0403804038\\",\\"0, 0\\",\\"37, 65\\",\\"37, 65\\",\\"0, 0\\",\\"ZO0584505845, ZO0403804038\\",102,102,2,2,order,jackson -cwMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Franklin\\",\\"rania Franklin\\",FEMALE,24,Franklin,Franklin,\\"(empty)\\",Wednesday,2,\\"rania@franklin-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569178,\\"sold_product_569178_15398, sold_product_569178_23456\\",\\"sold_product_569178_15398, sold_product_569178_23456\\",\\"28.984, 50\\",\\"28.984, 50\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"15.359, 25.484\\",\\"28.984, 50\\",\\"15,398, 23,456\\",\\"Jumper - offwhite, Maxi dress - black/white\\",\\"Jumper - offwhite, Maxi dress - black/white\\",\\"1, 1\\",\\"ZO0177001770, ZO0260502605\\",\\"0, 0\\",\\"28.984, 50\\",\\"28.984, 50\\",\\"0, 0\\",\\"ZO0177001770, ZO0260502605\\",79,79,2,2,order,rani -dAMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Griffin\\",\\"Sonya Griffin\\",FEMALE,28,Griffin,Griffin,\\"(empty)\\",Wednesday,2,\\"sonya@griffin-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568877,\\"sold_product_568877_19521, sold_product_568877_19378\\",\\"sold_product_568877_19521, sold_product_568877_19378\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"11.5, 13.492\\",\\"24.984, 24.984\\",\\"19,521, 19,378\\",\\"Classic heels - cognac, Long sleeved top - winternude\\",\\"Classic heels - cognac, Long sleeved top - winternude\\",\\"1, 1\\",\\"ZO0132401324, ZO0058200582\\",\\"0, 0\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"0, 0\\",\\"ZO0132401324, ZO0058200582\\",\\"49.969\\",\\"49.969\\",2,2,order,sonya -dQMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Little\\",\\"Abdulraheem Al Little\\",MALE,33,Little,Little,\\"(empty)\\",Wednesday,2,\\"abdulraheem al@little-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",Elitelligence,Elitelligence,\\"Jun 25, 2019 @ 00:00:00.000\\",568898,\\"sold_product_568898_11865, sold_product_568898_21764\\",\\"sold_product_568898_11865, sold_product_568898_21764\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"25.984, 15.359\\",\\"50, 28.984\\",\\"11,865, 21,764\\",\\"Down jacket - gru00fcn, Trainers - black\\",\\"Down jacket - gru00fcn, Trainers - black\\",\\"1, 1\\",\\"ZO0542205422, ZO0517805178\\",\\"0, 0\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"0, 0\\",\\"ZO0542205422, ZO0517805178\\",79,79,2,2,order,abdulraheem -dgMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Selena,Selena,\\"Selena Padilla\\",\\"Selena Padilla\\",FEMALE,42,Padilla,Padilla,\\"(empty)\\",Wednesday,2,\\"selena@padilla-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568941,\\"sold_product_568941_14120, sold_product_568941_8820\\",\\"sold_product_568941_14120, sold_product_568941_8820\\",\\"11.992, 28.984\\",\\"11.992, 28.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"5.641, 13.344\\",\\"11.992, 28.984\\",\\"14,120, 8,820\\",\\"3 PACK - Belt - black/red/gunmetal, Jumper - peacoat/light blue\\",\\"3 PACK - Belt - black/red/gunmetal, Jumper - peacoat/light blue\\",\\"1, 1\\",\\"ZO0076600766, ZO0068800688\\",\\"0, 0\\",\\"11.992, 28.984\\",\\"11.992, 28.984\\",\\"0, 0\\",\\"ZO0076600766, ZO0068800688\\",\\"40.969\\",\\"40.969\\",2,2,order,selena -dwMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Ramsey\\",\\"Brigitte Ramsey\\",FEMALE,12,Ramsey,Ramsey,\\"(empty)\\",Wednesday,2,\\"brigitte@ramsey-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569027,\\"sold_product_569027_15733, sold_product_569027_20410\\",\\"sold_product_569027_15733, sold_product_569027_20410\\",\\"75, 18.984\\",\\"75, 18.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"36, 9.492\\",\\"75, 18.984\\",\\"15,733, 20,410\\",\\"Boots - tan, Long sleeved top - black\\",\\"Boots - tan, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0245402454, ZO0060100601\\",\\"0, 0\\",\\"75, 18.984\\",\\"75, 18.984\\",\\"0, 0\\",\\"ZO0245402454, ZO0060100601\\",94,94,2,2,order,brigitte -eAMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Morgan\\",\\"Sonya Morgan\\",FEMALE,28,Morgan,Morgan,\\"(empty)\\",Wednesday,2,\\"sonya@morgan-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569055,\\"sold_product_569055_12453, sold_product_569055_13828\\",\\"sold_product_569055_12453, sold_product_569055_13828\\",\\"60, 33\\",\\"60, 33\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"31.797, 15.18\\",\\"60, 33\\",\\"12,453, 13,828\\",\\"Ankle boots - Midnight Blue, Jumper - white/black\\",\\"Ankle boots - Midnight Blue, Jumper - white/black\\",\\"1, 1\\",\\"ZO0375903759, ZO0269402694\\",\\"0, 0\\",\\"60, 33\\",\\"60, 33\\",\\"0, 0\\",\\"ZO0375903759, ZO0269402694\\",93,93,2,2,order,sonya -eQMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Hubbard\\",\\"Pia Hubbard\\",FEMALE,45,Hubbard,Hubbard,\\"(empty)\\",Wednesday,2,\\"pia@hubbard-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Gnomehouse, Champion Arts\\",\\"Gnomehouse, Champion Arts\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569107,\\"sold_product_569107_24376, sold_product_569107_8430\\",\\"sold_product_569107_24376, sold_product_569107_8430\\",\\"60, 60\\",\\"60, 60\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Champion Arts\\",\\"Gnomehouse, Champion Arts\\",\\"27, 30.594\\",\\"60, 60\\",\\"24,376, 8,430\\",\\"Fun and Flowery Dress, Winter coat - red\\",\\"Fun and Flowery Dress, Winter coat - red\\",\\"1, 1\\",\\"ZO0339603396, ZO0504705047\\",\\"0, 0\\",\\"60, 60\\",\\"60, 60\\",\\"0, 0\\",\\"ZO0339603396, ZO0504705047\\",120,120,2,2,order,pia -iQMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Tariq,Tariq,\\"Tariq Clayton\\",\\"Tariq Clayton\\",MALE,25,Clayton,Clayton,\\"(empty)\\",Wednesday,2,\\"tariq@clayton-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Oceanavigations, Low Tide Media\\",\\"Elitelligence, Oceanavigations, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",714385,\\"sold_product_714385_13039, sold_product_714385_16435, sold_product_714385_15502, sold_product_714385_6719\\",\\"sold_product_714385_13039, sold_product_714385_16435, sold_product_714385_15502, sold_product_714385_6719\\",\\"24.984, 21.984, 33, 28.984\\",\\"24.984, 21.984, 33, 28.984\\",\\"Men's Clothing, Men's Accessories, Men's Accessories, Men's Clothing\\",\\"Men's Clothing, Men's Accessories, Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, Elitelligence, Oceanavigations, Low Tide Media\\",\\"Elitelligence, Elitelligence, Oceanavigations, Low Tide Media\\",\\"12.492, 12.094, 15.844, 15.359\\",\\"24.984, 21.984, 33, 28.984\\",\\"13,039, 16,435, 15,502, 6,719\\",\\"Sweatshirt - dark blue, Across body bag - dark grey, Watch - black, Trousers - dark blue\\",\\"Sweatshirt - dark blue, Across body bag - dark grey, Watch - black, Trousers - dark blue\\",\\"1, 1, 1, 1\\",\\"ZO0586805868, ZO0609106091, ZO0310903109, ZO0420104201\\",\\"0, 0, 0, 0\\",\\"24.984, 21.984, 33, 28.984\\",\\"24.984, 21.984, 33, 28.984\\",\\"0, 0, 0, 0\\",\\"ZO0586805868, ZO0609106091, ZO0310903109, ZO0420104201\\",\\"108.938\\",\\"108.938\\",4,4,order,tariq -hQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Mcdonald\\",\\"Abd Mcdonald\\",MALE,52,Mcdonald,Mcdonald,\\"(empty)\\",Wednesday,2,\\"abd@mcdonald-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Low Tide Media, Elitelligence\\",\\"Oceanavigations, Low Tide Media, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",723213,\\"sold_product_723213_6457, sold_product_723213_19528, sold_product_723213_12063, sold_product_723213_14510\\",\\"sold_product_723213_6457, sold_product_723213_19528, sold_product_723213_12063, sold_product_723213_14510\\",\\"28.984, 20.984, 20.984, 33\\",\\"28.984, 20.984, 20.984, 33\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Oceanavigations, Low Tide Media, Elitelligence, Oceanavigations\\",\\"Oceanavigations, Low Tide Media, Elitelligence, Oceanavigations\\",\\"15.359, 11.117, 9.867, 15.18\\",\\"28.984, 20.984, 20.984, 33\\",\\"6,457, 19,528, 12,063, 14,510\\",\\"Jumper - offwhite, Sweatshirt - navy, Cardigan - offwhite multicolor, Shirt - grey multicolor\\",\\"Jumper - offwhite, Sweatshirt - navy, Cardigan - offwhite multicolor, Shirt - grey multicolor\\",\\"1, 1, 1, 1\\",\\"ZO0297802978, ZO0456704567, ZO0572105721, ZO0280502805\\",\\"0, 0, 0, 0\\",\\"28.984, 20.984, 20.984, 33\\",\\"28.984, 20.984, 20.984, 33\\",\\"0, 0, 0, 0\\",\\"ZO0297802978, ZO0456704567, ZO0572105721, ZO0280502805\\",\\"103.938\\",\\"103.938\\",4,4,order,abd -zQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Thad,Thad,\\"Thad Carr\\",\\"Thad Carr\\",MALE,30,Carr,Carr,\\"(empty)\\",Wednesday,2,\\"thad@carr-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568325,\\"sold_product_568325_11553, sold_product_568325_17851\\",\\"sold_product_568325_11553, sold_product_568325_17851\\",\\"140, 50\\",\\"140, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"72.813, 25.984\\",\\"140, 50\\",\\"11,553, 17,851\\",\\"Leather jacket - camel, Casual lace-ups - dark blue\\",\\"Leather jacket - camel, Casual lace-ups - dark blue\\",\\"1, 1\\",\\"ZO0288202882, ZO0391803918\\",\\"0, 0\\",\\"140, 50\\",\\"140, 50\\",\\"0, 0\\",\\"ZO0288202882, ZO0391803918\\",190,190,2,2,order,thad -zgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Cook\\",\\"Wagdi Cook\\",MALE,15,Cook,Cook,\\"(empty)\\",Wednesday,2,\\"wagdi@cook-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568360,\\"sold_product_568360_13315, sold_product_568360_18355\\",\\"sold_product_568360_13315, sold_product_568360_18355\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"5.398, 32.5\\",\\"11.992, 65\\",\\"13,315, 18,355\\",\\"5 PACK - Socks - blue/red/grey/green/black, Suit jacket - offwhite\\",\\"5 PACK - Socks - blue/red/grey/green/black, Suit jacket - offwhite\\",\\"1, 1\\",\\"ZO0480304803, ZO0274402744\\",\\"0, 0\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"0, 0\\",\\"ZO0480304803, ZO0274402744\\",77,77,2,2,order,wagdi -EAMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Meyer\\",\\"Brigitte Meyer\\",FEMALE,12,Meyer,Meyer,\\"(empty)\\",Wednesday,2,\\"brigitte@meyer-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",569278,\\"sold_product_569278_7811, sold_product_569278_19226\\",\\"sold_product_569278_7811, sold_product_569278_19226\\",\\"100, 18.984\\",\\"100, 18.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"48, 9.68\\",\\"100, 18.984\\",\\"7,811, 19,226\\",\\"Short coat - dark blue multicolor, Print T-shirt - black\\",\\"Short coat - dark blue multicolor, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0271802718, ZO0057100571\\",\\"0, 0\\",\\"100, 18.984\\",\\"100, 18.984\\",\\"0, 0\\",\\"ZO0271802718, ZO0057100571\\",119,119,2,2,order,brigitte -UgMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Underwood\\",\\"Gwen Underwood\\",FEMALE,26,Underwood,Underwood,\\"(empty)\\",Wednesday,2,\\"gwen@underwood-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Pyramidustries, Microlutions\\",\\"Pyramidustries, Microlutions\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568816,\\"sold_product_568816_24602, sold_product_568816_21413\\",\\"sold_product_568816_24602, sold_product_568816_21413\\",\\"21.984, 37\\",\\"21.984, 37\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Microlutions\\",\\"Pyramidustries, Microlutions\\",\\"12.094, 18.5\\",\\"21.984, 37\\",\\"24,602, 21,413\\",\\"Trousers - black, Jersey dress - black\\",\\"Trousers - black, Jersey dress - black\\",\\"1, 1\\",\\"ZO0146601466, ZO0108601086\\",\\"0, 0\\",\\"21.984, 37\\",\\"21.984, 37\\",\\"0, 0\\",\\"ZO0146601466, ZO0108601086\\",\\"58.969\\",\\"58.969\\",2,2,order,gwen -UwMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Women's Accessories\\",\\"Men's Clothing, Women's Accessories\\",EUR,Yuri,Yuri,\\"Yuri Carr\\",\\"Yuri Carr\\",MALE,21,Carr,Carr,\\"(empty)\\",Wednesday,2,\\"yuri@carr-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568375,\\"sold_product_568375_11121, sold_product_568375_14185\\",\\"sold_product_568375_11121, sold_product_568375_14185\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"Men's Clothing, Women's Accessories\\",\\"Men's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"30.547, 11.75\\",\\"65, 24.984\\",\\"11,121, 14,185\\",\\"Winter jacket - black, Rucksack - washed black/black\\",\\"Winter jacket - black, Rucksack - washed black/black\\",\\"1, 1\\",\\"ZO0623606236, ZO0605306053\\",\\"0, 0\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"0, 0\\",\\"ZO0623606236, ZO0605306053\\",90,90,2,2,order,yuri -VAMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie Taylor\\",\\"Eddie Taylor\\",MALE,38,Taylor,Taylor,\\"(empty)\\",Wednesday,2,\\"eddie@taylor-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568559,\\"sold_product_568559_17305, sold_product_568559_15031\\",\\"sold_product_568559_17305, sold_product_568559_15031\\",\\"11.992, 33\\",\\"11.992, 33\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"6.109, 16.813\\",\\"11.992, 33\\",\\"17,305, 15,031\\",\\"Belt - black, Wool - black\\",\\"Belt - black, Wool - black\\",\\"1, 1\\",\\"ZO0599005990, ZO0626506265\\",\\"0, 0\\",\\"11.992, 33\\",\\"11.992, 33\\",\\"0, 0\\",\\"ZO0599005990, ZO0626506265\\",\\"44.969\\",\\"44.969\\",2,2,order,eddie -VQMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Pia,Pia,\\"Pia Valdez\\",\\"Pia Valdez\\",FEMALE,45,Valdez,Valdez,\\"(empty)\\",Wednesday,2,\\"pia@valdez-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568611,\\"sold_product_568611_12564, sold_product_568611_12268\\",\\"sold_product_568611_12564, sold_product_568611_12268\\",\\"38, 42\\",\\"38, 42\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"17.484, 19.734\\",\\"38, 42\\",\\"12,564, 12,268\\",\\"Short coat - black, Tote bag - light brown\\",\\"Short coat - black, Tote bag - light brown\\",\\"1, 1\\",\\"ZO0174701747, ZO0305103051\\",\\"0, 0\\",\\"38, 42\\",\\"38, 42\\",\\"0, 0\\",\\"ZO0174701747, ZO0305103051\\",80,80,2,2,order,pia -VgMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jason,Jason,\\"Jason Hodges\\",\\"Jason Hodges\\",MALE,16,Hodges,Hodges,\\"(empty)\\",Wednesday,2,\\"jason@hodges-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568638,\\"sold_product_568638_18188, sold_product_568638_6975\\",\\"sold_product_568638_18188, sold_product_568638_6975\\",\\"33, 18.984\\",\\"33, 18.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"17.484, 8.742\\",\\"33, 18.984\\",\\"18,188, 6,975\\",\\"Smart lace-ups - cognac, Pyjama bottoms - green\\",\\"Smart lace-ups - cognac, Pyjama bottoms - green\\",\\"1, 1\\",\\"ZO0388003880, ZO0478304783\\",\\"0, 0\\",\\"33, 18.984\\",\\"33, 18.984\\",\\"0, 0\\",\\"ZO0388003880, ZO0478304783\\",\\"51.969\\",\\"51.969\\",2,2,order,jason -VwMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Mary,Mary,\\"Mary Hampton\\",\\"Mary Hampton\\",FEMALE,20,Hampton,Hampton,\\"(empty)\\",Wednesday,2,\\"mary@hampton-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Gnomehouse\\",\\"Angeldale, Gnomehouse\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568706,\\"sold_product_568706_15826, sold_product_568706_11255\\",\\"sold_product_568706_15826, sold_product_568706_11255\\",\\"110, 50\\",\\"110, 50\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Gnomehouse\\",\\"Angeldale, Gnomehouse\\",\\"55, 25.984\\",\\"110, 50\\",\\"15,826, 11,255\\",\\"Over-the-knee boots - black, Jersey dress - dark navy and white\\",\\"Over-the-knee boots - black, Jersey dress - dark navy and white\\",\\"1, 1\\",\\"ZO0672206722, ZO0331903319\\",\\"0, 0\\",\\"110, 50\\",\\"110, 50\\",\\"0, 0\\",\\"ZO0672206722, ZO0331903319\\",160,160,2,2,order,mary -mgMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories, Men's Clothing\\",\\"Men's Shoes, Men's Accessories, Men's Clothing\\",EUR,Tariq,Tariq,\\"Tariq Banks\\",\\"Tariq Banks\\",MALE,25,Banks,Banks,\\"(empty)\\",Wednesday,2,\\"tariq@banks-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, (empty), Low Tide Media\\",\\"Elitelligence, (empty), Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",716889,\\"sold_product_716889_21293, sold_product_716889_12288, sold_product_716889_22189, sold_product_716889_19058\\",\\"sold_product_716889_21293, sold_product_716889_12288, sold_product_716889_22189, sold_product_716889_19058\\",\\"24.984, 155, 10.992, 16.984\\",\\"24.984, 155, 10.992, 16.984\\",\\"Men's Shoes, Men's Shoes, Men's Accessories, Men's Clothing\\",\\"Men's Shoes, Men's Shoes, Men's Accessories, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, (empty), Elitelligence, Low Tide Media\\",\\"Elitelligence, (empty), Elitelligence, Low Tide Media\\",\\"12.742, 71.313, 5.82, 7.648\\",\\"24.984, 155, 10.992, 16.984\\",\\"21,293, 12,288, 22,189, 19,058\\",\\"Trainers - white, Smart slip-ons - brown, Wallet - black, Jumper - dark grey multicolor\\",\\"Trainers - white, Smart slip-ons - brown, Wallet - black, Jumper - dark grey multicolor\\",\\"1, 1, 1, 1\\",\\"ZO0510505105, ZO0482404824, ZO0602306023, ZO0445904459\\",\\"0, 0, 0, 0\\",\\"24.984, 155, 10.992, 16.984\\",\\"24.984, 155, 10.992, 16.984\\",\\"0, 0, 0, 0\\",\\"ZO0510505105, ZO0482404824, ZO0602306023, ZO0445904459\\",208,208,4,4,order,tariq -1wMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Butler\\",\\"Rabbia Al Butler\\",FEMALE,5,Butler,Butler,\\"(empty)\\",Wednesday,2,\\"rabbia al@butler-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Pyramidustries, Champion Arts, Tigress Enterprises\\",\\"Pyramidustries, Champion Arts, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",728580,\\"sold_product_728580_12102, sold_product_728580_24113, sold_product_728580_22614, sold_product_728580_19229\\",\\"sold_product_728580_12102, sold_product_728580_24113, sold_product_728580_22614, sold_product_728580_19229\\",\\"10.992, 33, 28.984, 16.984\\",\\"10.992, 33, 28.984, 16.984\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Pyramidustries, Champion Arts, Tigress Enterprises, Tigress Enterprises\\",\\"Pyramidustries, Champion Arts, Tigress Enterprises, Tigress Enterprises\\",\\"5.059, 15.508, 13.633, 7.988\\",\\"10.992, 33, 28.984, 16.984\\",\\"12,102, 24,113, 22,614, 19,229\\",\\"Vest - white, Cardigan - dark blue/off-white, Cardigan - black, Clutch - black\\",\\"Vest - white, Cardigan - dark blue/off-white, Cardigan - black, Clutch - black\\",\\"1, 1, 1, 1\\",\\"ZO0156601566, ZO0498004980, ZO0070700707, ZO0086700867\\",\\"0, 0, 0, 0\\",\\"10.992, 33, 28.984, 16.984\\",\\"10.992, 33, 28.984, 16.984\\",\\"0, 0, 0, 0\\",\\"ZO0156601566, ZO0498004980, ZO0070700707, ZO0086700867\\",\\"89.938\\",\\"89.938\\",4,4,order,rabbia -3wMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Diane,Diane,\\"Diane King\\",\\"Diane King\\",FEMALE,22,King,King,\\"(empty)\\",Wednesday,2,\\"diane@king-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568762,\\"sold_product_568762_22428, sold_product_568762_9391\\",\\"sold_product_568762_22428, sold_product_568762_9391\\",\\"37, 33\\",\\"37, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"17.391, 17.484\\",\\"37, 33\\",\\"22,428, 9,391\\",\\"Jersey dress - royal blue, Shirt - white\\",\\"Jersey dress - royal blue, Shirt - white\\",\\"1, 1\\",\\"ZO0052200522, ZO0265602656\\",\\"0, 0\\",\\"37, 33\\",\\"37, 33\\",\\"0, 0\\",\\"ZO0052200522, ZO0265602656\\",70,70,2,2,order,diane -6QMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Graves\\",\\"Abigail Graves\\",FEMALE,46,Graves,Graves,\\"(empty)\\",Wednesday,2,\\"abigail@graves-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568571,\\"sold_product_568571_23698, sold_product_568571_23882\\",\\"sold_product_568571_23698, sold_product_568571_23882\\",\\"33, 33\\",\\"33, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"17.156, 16.813\\",\\"33, 33\\",\\"23,698, 23,882\\",\\"Pleated skirt - black, Long sleeved top - chinese red\\",\\"Pleated skirt - black, Long sleeved top - chinese red\\",\\"1, 1\\",\\"ZO0034100341, ZO0343103431\\",\\"0, 0\\",\\"33, 33\\",\\"33, 33\\",\\"0, 0\\",\\"ZO0034100341, ZO0343103431\\",66,66,2,2,order,abigail -6gMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Diane,Diane,\\"Diane Hale\\",\\"Diane Hale\\",FEMALE,22,Hale,Hale,\\"(empty)\\",Wednesday,2,\\"diane@hale-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Spherecords, Pyramidustries active\\",\\"Spherecords, Pyramidustries active\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568671,\\"sold_product_568671_18674, sold_product_568671_9937\\",\\"sold_product_568671_18674, sold_product_568671_9937\\",\\"5.988, 11.992\\",\\"5.988, 11.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries active\\",\\"Spherecords, Pyramidustries active\\",\\"2.76, 6.352\\",\\"5.988, 11.992\\",\\"18,674, 9,937\\",\\"Vest - white, Sports shirt - black \\",\\"Vest - white, Sports shirt - black \\",\\"1, 1\\",\\"ZO0637406374, ZO0219002190\\",\\"0, 0\\",\\"5.988, 11.992\\",\\"5.988, 11.992\\",\\"0, 0\\",\\"ZO0637406374, ZO0219002190\\",\\"17.984\\",\\"17.984\\",2,2,order,diane -9AMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Summers\\",\\"Elyssa Summers\\",FEMALE,27,Summers,Summers,\\"(empty)\\",Wednesday,2,\\"elyssa@summers-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568774,\\"sold_product_568774_24937, sold_product_568774_24748\\",\\"sold_product_568774_24937, sold_product_568774_24748\\",\\"34, 60\\",\\"34, 60\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"17, 33\\",\\"34, 60\\",\\"24,937, 24,748\\",\\"Jersey dress - dark green, Lace-ups - bianco\\",\\"Jersey dress - dark green, Lace-ups - bianco\\",\\"1, 1\\",\\"ZO0037200372, ZO0369303693\\",\\"0, 0\\",\\"34, 60\\",\\"34, 60\\",\\"0, 0\\",\\"ZO0037200372, ZO0369303693\\",94,94,2,2,order,elyssa -9QMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jackson,Jackson,\\"Jackson Summers\\",\\"Jackson Summers\\",MALE,13,Summers,Summers,\\"(empty)\\",Wednesday,2,\\"jackson@summers-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568319,\\"sold_product_568319_16715, sold_product_568319_24934\\",\\"sold_product_568319_16715, sold_product_568319_24934\\",\\"28.984, 50\\",\\"28.984, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"14.492, 22.5\\",\\"28.984, 50\\",\\"16,715, 24,934\\",\\"Slim fit jeans - black, Lace-up boots - resin coffee\\",\\"Slim fit jeans - black, Lace-up boots - resin coffee\\",\\"1, 1\\",\\"ZO0535105351, ZO0403504035\\",\\"0, 0\\",\\"28.984, 50\\",\\"28.984, 50\\",\\"0, 0\\",\\"ZO0535105351, ZO0403504035\\",79,79,2,2,order,jackson -9gMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Gregory\\",\\"Sultan Al Gregory\\",MALE,19,Gregory,Gregory,\\"(empty)\\",Wednesday,2,\\"sultan al@gregory-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568363,\\"sold_product_568363_19188, sold_product_568363_14507\\",\\"sold_product_568363_19188, sold_product_568363_14507\\",\\"20.984, 115\\",\\"20.984, 115\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"9.453, 59.781\\",\\"20.984, 115\\",\\"19,188, 14,507\\",\\"Swimming shorts - dark grey , Weekend bag - black\\",\\"Swimming shorts - dark grey , Weekend bag - black\\",\\"1, 1\\",\\"ZO0629806298, ZO0467104671\\",\\"0, 0\\",\\"20.984, 115\\",\\"20.984, 115\\",\\"0, 0\\",\\"ZO0629806298, ZO0467104671\\",136,136,2,2,order,sultan -9wMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Thad,Thad,\\"Thad Garner\\",\\"Thad Garner\\",MALE,30,Garner,Garner,\\"(empty)\\",Wednesday,2,\\"thad@garner-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568541,\\"sold_product_568541_14083, sold_product_568541_11234\\",\\"sold_product_568541_14083, sold_product_568541_11234\\",\\"75, 42\\",\\"75, 42\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"35.25, 21.828\\",\\"75, 42\\",\\"14,083, 11,234\\",\\"Light jacket - dark blue, Tracksuit top - black\\",\\"Light jacket - dark blue, Tracksuit top - black\\",\\"1, 1\\",\\"ZO0428904289, ZO0588205882\\",\\"0, 0\\",\\"75, 42\\",\\"75, 42\\",\\"0, 0\\",\\"ZO0428904289, ZO0588205882\\",117,117,2,2,order,thad -\\"-AMtOW0BH63Xcmy46HLV\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Selena,Selena,\\"Selena Simmons\\",\\"Selena Simmons\\",FEMALE,42,Simmons,Simmons,\\"(empty)\\",Wednesday,2,\\"selena@simmons-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises MAMA, Pyramidustries\\",\\"Tigress Enterprises MAMA, Pyramidustries\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568586,\\"sold_product_568586_14747, sold_product_568586_15677\\",\\"sold_product_568586_14747, sold_product_568586_15677\\",\\"33, 18.984\\",\\"33, 18.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises MAMA, Pyramidustries\\",\\"Tigress Enterprises MAMA, Pyramidustries\\",\\"16.5, 8.742\\",\\"33, 18.984\\",\\"14,747, 15,677\\",\\"Blouse - pomegranate, Across body bag - black\\",\\"Blouse - pomegranate, Across body bag - black\\",\\"1, 1\\",\\"ZO0232202322, ZO0208402084\\",\\"0, 0\\",\\"33, 18.984\\",\\"33, 18.984\\",\\"0, 0\\",\\"ZO0232202322, ZO0208402084\\",\\"51.969\\",\\"51.969\\",2,2,order,selena -\\"-QMtOW0BH63Xcmy46HLV\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Carr\\",\\"Gwen Carr\\",FEMALE,26,Carr,Carr,\\"(empty)\\",Wednesday,2,\\"gwen@carr-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Champion Arts, (empty)\\",\\"Champion Arts, (empty)\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568636,\\"sold_product_568636_17497, sold_product_568636_11982\\",\\"sold_product_568636_17497, sold_product_568636_11982\\",\\"42, 50\\",\\"42, 50\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, (empty)\\",\\"Champion Arts, (empty)\\",\\"23.094, 22.5\\",\\"42, 50\\",\\"17,497, 11,982\\",\\"Winter jacket - navy, Blazer - white\\",\\"Winter jacket - navy, Blazer - white\\",\\"1, 1\\",\\"ZO0503905039, ZO0631806318\\",\\"0, 0\\",\\"42, 50\\",\\"42, 50\\",\\"0, 0\\",\\"ZO0503905039, ZO0631806318\\",92,92,2,2,order,gwen -\\"-gMtOW0BH63Xcmy46HLV\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Diane,Diane,\\"Diane Rice\\",\\"Diane Rice\\",FEMALE,22,Rice,Rice,\\"(empty)\\",Wednesday,2,\\"diane@rice-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 25, 2019 @ 00:00:00.000\\",568674,\\"sold_product_568674_16704, sold_product_568674_16971\\",\\"sold_product_568674_16704, sold_product_568674_16971\\",\\"10.992, 28.984\\",\\"10.992, 28.984\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 14, 2016 @ 00:00:00.000, Dec 14, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"5.711, 13.922\\",\\"10.992, 28.984\\",\\"16,704, 16,971\\",\\"Scarf - black/white, High heeled sandals - black\\",\\"Scarf - black/white, High heeled sandals - black\\",\\"1, 1\\",\\"ZO0192301923, ZO0011400114\\",\\"0, 0\\",\\"10.992, 28.984\\",\\"10.992, 28.984\\",\\"0, 0\\",\\"ZO0192301923, ZO0011400114\\",\\"39.969\\",\\"39.969\\",2,2,order,diane -NwMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Lambert\\",\\"Mostafa Lambert\\",MALE,9,Lambert,Lambert,\\"(empty)\\",Tuesday,1,\\"mostafa@lambert-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567868,\\"sold_product_567868_15827, sold_product_567868_6221\\",\\"sold_product_567868_15827, sold_product_567868_6221\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"9.867, 15.07\\",\\"20.984, 28.984\\",\\"15,827, 6,221\\",\\"Belt - black/brown, Shirt - dark blue\\",\\"Belt - black/brown, Shirt - dark blue\\",\\"1, 1\\",\\"ZO0310403104, ZO0416604166\\",\\"0, 0\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"0, 0\\",\\"ZO0310403104, ZO0416604166\\",\\"49.969\\",\\"49.969\\",2,2,order,mostafa -SgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Selena,Selena,\\"Selena Lewis\\",\\"Selena Lewis\\",FEMALE,42,Lewis,Lewis,\\"(empty)\\",Tuesday,1,\\"selena@lewis-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567446,\\"sold_product_567446_12751, sold_product_567446_12494\\",\\"sold_product_567446_12751, sold_product_567446_12494\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"31.844, 11.25\\",\\"65, 24.984\\",\\"12,751, 12,494\\",\\"Lace-ups - black, Classic heels - cognac/beige\\",\\"Lace-ups - black, Classic heels - cognac/beige\\",\\"1, 1\\",\\"ZO0322803228, ZO0002700027\\",\\"0, 0\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"0, 0\\",\\"ZO0322803228, ZO0002700027\\",90,90,2,2,order,selena -bwMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Oliver,Oliver,\\"Oliver Martin\\",\\"Oliver Martin\\",MALE,7,Martin,Martin,\\"(empty)\\",Tuesday,1,\\"oliver@martin-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567340,\\"sold_product_567340_3840, sold_product_567340_14835\\",\\"sold_product_567340_3840, sold_product_567340_14835\\",\\"16.984, 42\\",\\"16.984, 42\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"7.82, 21.406\\",\\"16.984, 42\\",\\"3,840, 14,835\\",\\"Sports shirt - dark grey multicolor, High-top trainers - grey\\",\\"Sports shirt - dark grey multicolor, High-top trainers - grey\\",\\"1, 1\\",\\"ZO0615606156, ZO0514905149\\",\\"0, 0\\",\\"16.984, 42\\",\\"16.984, 42\\",\\"0, 0\\",\\"ZO0615606156, ZO0514905149\\",\\"58.969\\",\\"58.969\\",2,2,order,oliver -5AMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Kamal,Kamal,\\"Kamal Salazar\\",\\"Kamal Salazar\\",MALE,39,Salazar,Salazar,\\"(empty)\\",Tuesday,1,\\"kamal@salazar-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Spherecords, Spritechnologies\\",\\"Spherecords, Spritechnologies\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567736,\\"sold_product_567736_24718, sold_product_567736_24306\\",\\"sold_product_567736_24718, sold_product_567736_24306\\",\\"11.992, 75\\",\\"11.992, 75\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Spritechnologies\\",\\"Spherecords, Spritechnologies\\",\\"6.109, 36.75\\",\\"11.992, 75\\",\\"24,718, 24,306\\",\\"Pyjama bottoms - light grey multicolor, Waterproof trousers - scarlet\\",\\"Pyjama bottoms - light grey multicolor, Waterproof trousers - scarlet\\",\\"1, 1\\",\\"ZO0663706637, ZO0620906209\\",\\"0, 0\\",\\"11.992, 75\\",\\"11.992, 75\\",\\"0, 0\\",\\"ZO0663706637, ZO0620906209\\",87,87,2,2,order,kamal -EQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Kamal,Kamal,\\"Kamal Fleming\\",\\"Kamal Fleming\\",MALE,39,Fleming,Fleming,\\"(empty)\\",Tuesday,1,\\"kamal@fleming-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567755,\\"sold_product_567755_16941, sold_product_567755_1820\\",\\"sold_product_567755_16941, sold_product_567755_1820\\",\\"16.984, 75\\",\\"16.984, 75\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"8.492, 36.75\\",\\"16.984, 75\\",\\"16,941, 1,820\\",\\"Vibrant Pattern Polo, Smart slip-ons - oro\\",\\"Vibrant Pattern Polo, Smart slip-ons - oro\\",\\"1, 1\\",\\"ZO0571405714, ZO0255402554\\",\\"0, 0\\",\\"16.984, 75\\",\\"16.984, 75\\",\\"0, 0\\",\\"ZO0571405714, ZO0255402554\\",92,92,2,2,order,kamal -OQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Meyer\\",\\"Sultan Al Meyer\\",MALE,19,Meyer,Meyer,\\"(empty)\\",Tuesday,1,\\"sultan al@meyer-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Elitelligence, Microlutions\\",\\"Low Tide Media, Elitelligence, Microlutions\\",\\"Jun 24, 2019 @ 00:00:00.000\\",715455,\\"sold_product_715455_11902, sold_product_715455_19957, sold_product_715455_17361, sold_product_715455_12368\\",\\"sold_product_715455_11902, sold_product_715455_19957, sold_product_715455_17361, sold_product_715455_12368\\",\\"13.992, 7.988, 28.984, 33\\",\\"13.992, 7.988, 28.984, 33\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Elitelligence, Elitelligence, Microlutions\\",\\"Low Tide Media, Elitelligence, Elitelligence, Microlutions\\",\\"7.551, 4.07, 14.211, 17.156\\",\\"13.992, 7.988, 28.984, 33\\",\\"11,902, 19,957, 17,361, 12,368\\",\\"3 PACK - Shorts - black, 3 PACK - Socks - black/grey/orange, Sweatshirt - multicoloured, Shirt - dark green\\",\\"3 PACK - Shorts - black, 3 PACK - Socks - black/grey/orange, Sweatshirt - multicoloured, Shirt - dark green\\",\\"1, 1, 1, 1\\",\\"ZO0477504775, ZO0613206132, ZO0585405854, ZO0110701107\\",\\"0, 0, 0, 0\\",\\"13.992, 7.988, 28.984, 33\\",\\"13.992, 7.988, 28.984, 33\\",\\"0, 0, 0, 0\\",\\"ZO0477504775, ZO0613206132, ZO0585405854, ZO0110701107\\",\\"83.938\\",\\"83.938\\",4,4,order,sultan -ggMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Holland\\",\\"Clarice Holland\\",FEMALE,18,Holland,Holland,\\"(empty)\\",Tuesday,1,\\"clarice@holland-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566768,\\"sold_product_566768_12004, sold_product_566768_23314\\",\\"sold_product_566768_12004, sold_product_566768_23314\\",\\"16.984, 50\\",\\"16.984, 50\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"8.656, 25.984\\",\\"16.984, 50\\",\\"12,004, 23,314\\",\\"Zelda - Long sleeved top - black, A-line skirt - navy blazer\\",\\"Zelda - Long sleeved top - black, A-line skirt - navy blazer\\",\\"1, 1\\",\\"ZO0217702177, ZO0331703317\\",\\"0, 0\\",\\"16.984, 50\\",\\"16.984, 50\\",\\"0, 0\\",\\"ZO0217702177, ZO0331703317\\",67,67,2,2,order,clarice -gwMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Pia,Pia,\\"Pia Boone\\",\\"Pia Boone\\",FEMALE,45,Boone,Boone,\\"(empty)\\",Tuesday,1,\\"pia@boone-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",Oceanavigations,Oceanavigations,\\"Jun 24, 2019 @ 00:00:00.000\\",566812,\\"sold_product_566812_19012, sold_product_566812_5941\\",\\"sold_product_566812_19012, sold_product_566812_5941\\",\\"20.984, 85\\",\\"20.984, 85\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"9.453, 41.656\\",\\"20.984, 85\\",\\"19,012, 5,941\\",\\"Vest - black/rose, Boots - tan\\",\\"Vest - black/rose, Boots - tan\\",\\"1, 1\\",\\"ZO0266902669, ZO0244202442\\",\\"0, 0\\",\\"20.984, 85\\",\\"20.984, 85\\",\\"0, 0\\",\\"ZO0266902669, ZO0244202442\\",106,106,2,2,order,pia -jgMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Mostafa,Mostafa,\\"Mostafa Underwood\\",\\"Mostafa Underwood\\",MALE,9,Underwood,Underwood,\\"(empty)\\",Tuesday,1,\\"mostafa@underwood-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566680,\\"sold_product_566680_15413, sold_product_566680_16394\\",\\"sold_product_566680_15413, sold_product_566680_16394\\",\\"33, 42\\",\\"33, 42\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"16.172, 20.156\\",\\"33, 42\\",\\"15,413, 16,394\\",\\"Laptop bag - brown, Lace-ups - black\\",\\"Laptop bag - brown, Lace-ups - black\\",\\"1, 1\\",\\"ZO0316703167, ZO0393303933\\",\\"0, 0\\",\\"33, 42\\",\\"33, 42\\",\\"0, 0\\",\\"ZO0316703167, ZO0393303933\\",75,75,2,2,order,mostafa -jwMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Larson\\",\\"Yasmine Larson\\",FEMALE,43,Larson,Larson,\\"(empty)\\",Tuesday,1,\\"yasmine@larson-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566944,\\"sold_product_566944_13250, sold_product_566944_13079\\",\\"sold_product_566944_13250, sold_product_566944_13079\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"13.742, 8.828\\",\\"24.984, 16.984\\",\\"13,250, 13,079\\",\\"Jumper - black/white, Print T-shirt - black\\",\\"Jumper - black/white, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0497004970, ZO0054900549\\",\\"0, 0\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"0, 0\\",\\"ZO0497004970, ZO0054900549\\",\\"41.969\\",\\"41.969\\",2,2,order,yasmine -kAMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Palmer\\",\\"Clarice Palmer\\",FEMALE,18,Palmer,Palmer,\\"(empty)\\",Tuesday,1,\\"clarice@palmer-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566979,\\"sold_product_566979_19260, sold_product_566979_21565\\",\\"sold_product_566979_19260, sold_product_566979_21565\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"17.156, 5.281\\",\\"33, 10.992\\",\\"19,260, 21,565\\",\\"Cardigan - grey, Print T-shirt - dark grey multicolor\\",\\"Cardigan - grey, Print T-shirt - dark grey multicolor\\",\\"1, 1\\",\\"ZO0071900719, ZO0493404934\\",\\"0, 0\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"0, 0\\",\\"ZO0071900719, ZO0493404934\\",\\"43.969\\",\\"43.969\\",2,2,order,clarice -kQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Duncan\\",\\"Fitzgerald Duncan\\",MALE,11,Duncan,Duncan,\\"(empty)\\",Tuesday,1,\\"fitzgerald@duncan-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566734,\\"sold_product_566734_17263, sold_product_566734_13452\\",\\"sold_product_566734_17263, sold_product_566734_13452\\",\\"75, 42\\",\\"75, 42\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"40.5, 20.578\\",\\"75, 42\\",\\"17,263, 13,452\\",\\"Lace-up boots - cognac, Weekend bag - black\\",\\"Lace-up boots - cognac, Weekend bag - black\\",\\"1, 1\\",\\"ZO0691006910, ZO0314203142\\",\\"0, 0\\",\\"75, 42\\",\\"75, 42\\",\\"0, 0\\",\\"ZO0691006910, ZO0314203142\\",117,117,2,2,order,fuzzy -kgMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Howell\\",\\"Abdulraheem Al Howell\\",MALE,33,Howell,Howell,\\"(empty)\\",Tuesday,1,\\"abdulraheem al@howell-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567094,\\"sold_product_567094_12311, sold_product_567094_12182\\",\\"sold_product_567094_12311, sold_product_567094_12182\\",\\"16.984, 12.992\\",\\"16.984, 12.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"8.656, 7.141\\",\\"16.984, 12.992\\",\\"12,311, 12,182\\",\\"Polo shirt - white, Swimming shorts - black\\",\\"Polo shirt - white, Swimming shorts - black\\",\\"1, 1\\",\\"ZO0442904429, ZO0629706297\\",\\"0, 0\\",\\"16.984, 12.992\\",\\"16.984, 12.992\\",\\"0, 0\\",\\"ZO0442904429, ZO0629706297\\",\\"29.984\\",\\"29.984\\",2,2,order,abdulraheem -kwMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie King\\",\\"Eddie King\\",MALE,38,King,King,\\"(empty)\\",Tuesday,1,\\"eddie@king-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",566892,\\"sold_product_566892_21978, sold_product_566892_14543\\",\\"sold_product_566892_21978, sold_product_566892_14543\\",\\"24.984, 17.984\\",\\"24.984, 17.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"12.492, 8.992\\",\\"24.984, 17.984\\",\\"21,978, 14,543\\",\\"Hoodie - dark blue, Jumper - black\\",\\"Hoodie - dark blue, Jumper - black\\",\\"1, 1\\",\\"ZO0589505895, ZO0575405754\\",\\"0, 0\\",\\"24.984, 17.984\\",\\"24.984, 17.984\\",\\"0, 0\\",\\"ZO0589505895, ZO0575405754\\",\\"42.969\\",\\"42.969\\",2,2,order,eddie -tQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Morgan\\",\\"Sultan Al Morgan\\",MALE,19,Morgan,Morgan,\\"(empty)\\",Tuesday,1,\\"sultan al@morgan-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567950,\\"sold_product_567950_24164, sold_product_567950_11096\\",\\"sold_product_567950_24164, sold_product_567950_11096\\",\\"110, 42\\",\\"110, 42\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"52.813, 20.156\\",\\"110, 42\\",\\"24,164, 11,096\\",\\"Suit - dark blue, Bomber Jacket - black\\",\\"Suit - dark blue, Bomber Jacket - black\\",\\"1, 1\\",\\"ZO0273002730, ZO0541105411\\",\\"0, 0\\",\\"110, 42\\",\\"110, 42\\",\\"0, 0\\",\\"ZO0273002730, ZO0541105411\\",152,152,2,2,order,sultan -uAMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Rose\\",\\"Sultan Al Rose\\",MALE,19,Rose,Rose,\\"(empty)\\",Tuesday,1,\\"sultan al@rose-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",566826,\\"sold_product_566826_15908, sold_product_566826_13927\\",\\"sold_product_566826_15908, sold_product_566826_13927\\",\\"16.984, 42\\",\\"16.984, 42\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"9.172, 21.406\\",\\"16.984, 42\\",\\"15,908, 13,927\\",\\"Jumper - camel, Bomber Jacket - khaki\\",\\"Jumper - camel, Bomber Jacket - khaki\\",\\"1, 1\\",\\"ZO0575305753, ZO0540605406\\",\\"0, 0\\",\\"16.984, 42\\",\\"16.984, 42\\",\\"0, 0\\",\\"ZO0575305753, ZO0540605406\\",\\"58.969\\",\\"58.969\\",2,2,order,sultan -fQMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Franklin\\",\\"Fitzgerald Franklin\\",MALE,11,Franklin,Franklin,\\"(empty)\\",Tuesday,1,\\"fitzgerald@franklin-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567240,\\"sold_product_567240_23744, sold_product_567240_2098\\",\\"sold_product_567240_23744, sold_product_567240_2098\\",\\"31.984, 80\\",\\"31.984, 80\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"15.68, 41.594\\",\\"31.984, 80\\",\\"23,744, 2,098\\",\\"Chinos - dark blue, Lace-up boots - black\\",\\"Chinos - dark blue, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0421004210, ZO0689006890\\",\\"0, 0\\",\\"31.984, 80\\",\\"31.984, 80\\",\\"0, 0\\",\\"ZO0421004210, ZO0689006890\\",112,112,2,2,order,fuzzy -fgMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Byrd\\",\\"Mostafa Byrd\\",MALE,9,Byrd,Byrd,\\"(empty)\\",Tuesday,1,\\"mostafa@byrd-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567290,\\"sold_product_567290_24934, sold_product_567290_15288\\",\\"sold_product_567290_24934, sold_product_567290_15288\\",\\"50, 21.984\\",\\"50, 21.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"22.5, 11.211\\",\\"50, 21.984\\",\\"24,934, 15,288\\",\\"Lace-up boots - resin coffee, Polo shirt - grey\\",\\"Lace-up boots - resin coffee, Polo shirt - grey\\",\\"1, 1\\",\\"ZO0403504035, ZO0442704427\\",\\"0, 0\\",\\"50, 21.984\\",\\"50, 21.984\\",\\"0, 0\\",\\"ZO0403504035, ZO0442704427\\",72,72,2,2,order,mostafa -kAMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,rania,rania,\\"rania Goodwin\\",\\"rania Goodwin\\",FEMALE,24,Goodwin,Goodwin,\\"(empty)\\",Tuesday,1,\\"rania@goodwin-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Pyramidustries,Pyramidustries,\\"Jun 24, 2019 @ 00:00:00.000\\",567669,\\"sold_product_567669_22893, sold_product_567669_17796\\",\\"sold_product_567669_22893, sold_product_567669_17796\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"8.156, 9.344\\",\\"16.984, 16.984\\",\\"22,893, 17,796\\",\\"A-line skirt - dark purple, Across body bag - black \\",\\"A-line skirt - dark purple, Across body bag - black \\",\\"1, 1\\",\\"ZO0148301483, ZO0202902029\\",\\"0, 0\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"0, 0\\",\\"ZO0148301483, ZO0202902029\\",\\"33.969\\",\\"33.969\\",2,2,order,rani -rgMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Simpson\\",\\"Gwen Simpson\\",FEMALE,26,Simpson,Simpson,\\"(empty)\\",Tuesday,1,\\"gwen@simpson-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567365,\\"sold_product_567365_11663, sold_product_567365_24272\\",\\"sold_product_567365_11663, sold_product_567365_24272\\",\\"11.992, 37\\",\\"11.992, 37\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"5.879, 18.125\\",\\"11.992, 37\\",\\"11,663, 24,272\\",\\"Slip-ons - white, Shirt - white\\",\\"Slip-ons - white, Shirt - white\\",\\"1, 1\\",\\"ZO0008600086, ZO0266002660\\",\\"0, 0\\",\\"11.992, 37\\",\\"11.992, 37\\",\\"0, 0\\",\\"ZO0008600086, ZO0266002660\\",\\"48.969\\",\\"48.969\\",2,2,order,gwen -1AMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,George,George,\\"George Sanders\\",\\"George Sanders\\",MALE,32,Sanders,Sanders,\\"(empty)\\",Tuesday,1,\\"george@sanders-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",566845,\\"sold_product_566845_24161, sold_product_566845_13674\\",\\"sold_product_566845_24161, sold_product_566845_13674\\",\\"7.988, 24.984\\",\\"7.988, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"3.92, 12.25\\",\\"7.988, 24.984\\",\\"24,161, 13,674\\",\\"Basic T-shirt - white, Hoodie - black\\",\\"Basic T-shirt - white, Hoodie - black\\",\\"1, 1\\",\\"ZO0547905479, ZO0583305833\\",\\"0, 0\\",\\"7.988, 24.984\\",\\"7.988, 24.984\\",\\"0, 0\\",\\"ZO0547905479, ZO0583305833\\",\\"32.969\\",\\"32.969\\",2,2,order,george -1QMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jim,Jim,\\"Jim Fletcher\\",\\"Jim Fletcher\\",MALE,41,Fletcher,Fletcher,\\"(empty)\\",Tuesday,1,\\"jim@fletcher-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",567048,\\"sold_product_567048_19089, sold_product_567048_20261\\",\\"sold_product_567048_19089, sold_product_567048_20261\\",\\"12.992, 11.992\\",\\"12.992, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"7.012, 5.52\\",\\"12.992, 11.992\\",\\"19,089, 20,261\\",\\"Vest - white/dark blue, Vest - black\\",\\"Vest - white/dark blue, Vest - black\\",\\"1, 1\\",\\"ZO0566905669, ZO0564005640\\",\\"0, 0\\",\\"12.992, 11.992\\",\\"12.992, 11.992\\",\\"0, 0\\",\\"ZO0566905669, ZO0564005640\\",\\"24.984\\",\\"24.984\\",2,2,order,jim -EQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Hudson\\",\\"Yasmine Hudson\\",FEMALE,43,Hudson,Hudson,\\"(empty)\\",Tuesday,1,\\"yasmine@hudson-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Pyramidustries active, Spherecords\\",\\"Pyramidustries active, Spherecords\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567281,\\"sold_product_567281_14758, sold_product_567281_23174\\",\\"sold_product_567281_14758, sold_product_567281_23174\\",\\"13.992, 22.984\\",\\"13.992, 22.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Spherecords\\",\\"Pyramidustries active, Spherecords\\",\\"7.27, 12.18\\",\\"13.992, 22.984\\",\\"14,758, 23,174\\",\\"Print T-shirt - black, Chinos - dark blue\\",\\"Print T-shirt - black, Chinos - dark blue\\",\\"1, 1\\",\\"ZO0221402214, ZO0632806328\\",\\"0, 0\\",\\"13.992, 22.984\\",\\"13.992, 22.984\\",\\"0, 0\\",\\"ZO0221402214, ZO0632806328\\",\\"36.969\\",\\"36.969\\",2,2,order,yasmine -FAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Chapman\\",\\"rania Chapman\\",FEMALE,24,Chapman,Chapman,\\"(empty)\\",Tuesday,1,\\"rania@chapman-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Spherecords Curvy, Gnomehouse\\",\\"Spherecords Curvy, Gnomehouse\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567119,\\"sold_product_567119_22695, sold_product_567119_23515\\",\\"sold_product_567119_22695, sold_product_567119_23515\\",\\"16.984, 60\\",\\"16.984, 60\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Curvy, Gnomehouse\\",\\"Spherecords Curvy, Gnomehouse\\",\\"7.82, 27.594\\",\\"16.984, 60\\",\\"22,695, 23,515\\",\\"Cardigan - grey multicolor/black, Blazer - black/white\\",\\"Cardigan - grey multicolor/black, Blazer - black/white\\",\\"1, 1\\",\\"ZO0711507115, ZO0350903509\\",\\"0, 0\\",\\"16.984, 60\\",\\"16.984, 60\\",\\"0, 0\\",\\"ZO0711507115, ZO0350903509\\",77,77,2,2,order,rani -FQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Samir,Samir,\\"Samir Harper\\",\\"Samir Harper\\",MALE,34,Harper,Harper,\\"(empty)\\",Tuesday,1,\\"samir@harper-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567169,\\"sold_product_567169_20800, sold_product_567169_18749\\",\\"sold_product_567169_20800, sold_product_567169_18749\\",\\"10.992, 16.984\\",\\"10.992, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"5.602, 9.344\\",\\"10.992, 16.984\\",\\"20,800, 18,749\\",\\"Print T-shirt - white, Sports shorts - black\\",\\"Print T-shirt - white, Sports shorts - black\\",\\"1, 1\\",\\"ZO0558805588, ZO0622206222\\",\\"0, 0\\",\\"10.992, 16.984\\",\\"10.992, 16.984\\",\\"0, 0\\",\\"ZO0558805588, ZO0622206222\\",\\"27.984\\",\\"27.984\\",2,2,order,samir -KAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Underwood\\",\\"Abd Underwood\\",MALE,52,Underwood,Underwood,\\"(empty)\\",Tuesday,1,\\"abd@underwood-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567869,\\"sold_product_567869_14147, sold_product_567869_16719\\",\\"sold_product_567869_14147, sold_product_567869_16719\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"8.656, 8.328\\",\\"16.984, 16.984\\",\\"14,147, 16,719\\",\\"Print T-shirt - black/green, Polo shirt - blue multicolor\\",\\"Print T-shirt - black/green, Polo shirt - blue multicolor\\",\\"1, 1\\",\\"ZO0565105651, ZO0443804438\\",\\"0, 0\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"0, 0\\",\\"ZO0565105651, ZO0443804438\\",\\"33.969\\",\\"33.969\\",2,2,order,abd -KQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Muniz,Muniz,\\"Muniz Strickland\\",\\"Muniz Strickland\\",MALE,37,Strickland,Strickland,\\"(empty)\\",Tuesday,1,\\"muniz@strickland-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",567909,\\"sold_product_567909_24768, sold_product_567909_11414\\",\\"sold_product_567909_24768, sold_product_567909_11414\\",\\"24.984, 18.984\\",\\"24.984, 18.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"11.25, 8.93\\",\\"24.984, 18.984\\",\\"24,768, 11,414\\",\\"SET - Gloves - dark grey multicolor, Sweatshirt - light blue\\",\\"SET - Gloves - dark grey multicolor, Sweatshirt - light blue\\",\\"1, 1\\",\\"ZO0609606096, ZO0588905889\\",\\"0, 0\\",\\"24.984, 18.984\\",\\"24.984, 18.984\\",\\"0, 0\\",\\"ZO0609606096, ZO0588905889\\",\\"43.969\\",\\"43.969\\",2,2,order,muniz -eQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Betty,Betty,\\"Betty Stokes\\",\\"Betty Stokes\\",FEMALE,44,Stokes,Stokes,\\"(empty)\\",Tuesday,1,\\"betty@stokes-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567524,\\"sold_product_567524_14033, sold_product_567524_24564\\",\\"sold_product_567524_14033, sold_product_567524_24564\\",\\"20.984, 65\\",\\"20.984, 65\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"10.906, 35.094\\",\\"20.984, 65\\",\\"14,033, 24,564\\",\\"Clutch - black , Ankle boots - cognac\\",\\"Clutch - black , Ankle boots - cognac\\",\\"1, 1\\",\\"ZO0096300963, ZO0377403774\\",\\"0, 0\\",\\"20.984, 65\\",\\"20.984, 65\\",\\"0, 0\\",\\"ZO0096300963, ZO0377403774\\",86,86,2,2,order,betty -egMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Turner\\",\\"Elyssa Turner\\",FEMALE,27,Turner,Turner,\\"(empty)\\",Tuesday,1,\\"elyssa@turner-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567565,\\"sold_product_567565_4684, sold_product_567565_18489\\",\\"sold_product_567565_4684, sold_product_567565_18489\\",\\"50, 60\\",\\"50, 60\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"23.5, 33\\",\\"50, 60\\",\\"4,684, 18,489\\",\\"Boots - black, Slip-ons - Midnight Blue\\",\\"Boots - black, Slip-ons - Midnight Blue\\",\\"1, 1\\",\\"ZO0015600156, ZO0323603236\\",\\"0, 0\\",\\"50, 60\\",\\"50, 60\\",\\"0, 0\\",\\"ZO0015600156, ZO0323603236\\",110,110,2,2,order,elyssa -nQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Sonya,Sonya,\\"Sonya Powell\\",\\"Sonya Powell\\",FEMALE,28,Powell,Powell,\\"(empty)\\",Tuesday,1,\\"sonya@powell-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",Pyramidustries,Pyramidustries,\\"Jun 24, 2019 @ 00:00:00.000\\",567019,\\"sold_product_567019_14411, sold_product_567019_24149\\",\\"sold_product_567019_14411, sold_product_567019_24149\\",\\"28.984, 21.984\\",\\"28.984, 21.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"13.344, 10.344\\",\\"28.984, 21.984\\",\\"14,411, 24,149\\",\\"Summer dress - black, Rucksack - black\\",\\"Summer dress - black, Rucksack - black\\",\\"1, 1\\",\\"ZO0151301513, ZO0204902049\\",\\"0, 0\\",\\"28.984, 21.984\\",\\"28.984, 21.984\\",\\"0, 0\\",\\"ZO0151301513, ZO0204902049\\",\\"50.969\\",\\"50.969\\",2,2,order,sonya -ngMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Massey\\",\\"Pia Massey\\",FEMALE,45,Massey,Massey,\\"(empty)\\",Tuesday,1,\\"pia@massey-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567069,\\"sold_product_567069_22261, sold_product_567069_16325\\",\\"sold_product_567069_22261, sold_product_567069_16325\\",\\"50, 33\\",\\"50, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"22.5, 17.156\\",\\"50, 33\\",\\"22,261, 16,325\\",\\"Winter jacket - bordeaux, Summer dress - black\\",\\"Winter jacket - bordeaux, Summer dress - black\\",\\"1, 1\\",\\"ZO0503805038, ZO0047500475\\",\\"0, 0\\",\\"50, 33\\",\\"50, 33\\",\\"0, 0\\",\\"ZO0503805038, ZO0047500475\\",83,83,2,2,order,pia -qAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Frances,Frances,\\"Frances Lamb\\",\\"Frances Lamb\\",FEMALE,49,Lamb,Lamb,\\"(empty)\\",Tuesday,1,\\"frances@lamb-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567935,\\"sold_product_567935_13174, sold_product_567935_14395\\",\\"sold_product_567935_13174, sold_product_567935_14395\\",\\"14.992, 24.984\\",\\"14.992, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"7.789, 12.25\\",\\"14.992, 24.984\\",\\"13,174, 14,395\\",\\"Print T-shirt - bright white, Jumper - offwhite\\",\\"Print T-shirt - bright white, Jumper - offwhite\\",\\"1, 1\\",\\"ZO0116101161, ZO0574305743\\",\\"0, 0\\",\\"14.992, 24.984\\",\\"14.992, 24.984\\",\\"0, 0\\",\\"ZO0116101161, ZO0574305743\\",\\"39.969\\",\\"39.969\\",2,2,order,frances -qwMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Jackson\\",\\"Betty Jackson\\",FEMALE,44,Jackson,Jackson,\\"(empty)\\",Tuesday,1,\\"betty@jackson-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Gnomehouse, Spherecords\\",\\"Gnomehouse, Spherecords\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566831,\\"sold_product_566831_22424, sold_product_566831_17957\\",\\"sold_product_566831_22424, sold_product_566831_17957\\",\\"50, 10.992\\",\\"50, 10.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Spherecords\\",\\"Gnomehouse, Spherecords\\",\\"23.5, 5.5\\",\\"50, 10.992\\",\\"22,424, 17,957\\",\\"Jersey dress - chinese red, Long sleeved top - black\\",\\"Jersey dress - chinese red, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0341103411, ZO0648406484\\",\\"0, 0\\",\\"50, 10.992\\",\\"50, 10.992\\",\\"0, 0\\",\\"ZO0341103411, ZO0648406484\\",\\"60.969\\",\\"60.969\\",2,2,order,betty -5AMtOW0BH63Xcmy44mSR,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Marwan,Marwan,\\"Marwan Sharp\\",\\"Marwan Sharp\\",MALE,51,Sharp,Sharp,\\"(empty)\\",Tuesday,1,\\"marwan@sharp-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567543,\\"sold_product_567543_14075, sold_product_567543_20484\\",\\"sold_product_567543_14075, sold_product_567543_20484\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"12.742, 9.867\\",\\"24.984, 20.984\\",\\"14,075, 20,484\\",\\"Rucksack - black, Jumper - dark grey\\",\\"Rucksack - black, Jumper - dark grey\\",\\"1, 1\\",\\"ZO0608106081, ZO0296502965\\",\\"0, 0\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"0, 0\\",\\"ZO0608106081, ZO0296502965\\",\\"45.969\\",\\"45.969\\",2,2,order,marwan -5QMtOW0BH63Xcmy44mSR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Gwen,Gwen,\\"Gwen Tran\\",\\"Gwen Tran\\",FEMALE,26,Tran,Tran,\\"(empty)\\",Tuesday,1,\\"gwen@tran-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567598,\\"sold_product_567598_11254, sold_product_567598_11666\\",\\"sold_product_567598_11254, sold_product_567598_11666\\",\\"29.984, 75\\",\\"29.984, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"14.398, 41.25\\",\\"29.984, 75\\",\\"11,254, 11,666\\",\\"Jersey dress - black, Boots - blue\\",\\"Jersey dress - black, Boots - blue\\",\\"1, 1\\",\\"ZO0039400394, ZO0672906729\\",\\"0, 0\\",\\"29.984, 75\\",\\"29.984, 75\\",\\"0, 0\\",\\"ZO0039400394, ZO0672906729\\",105,105,2,2,order,gwen -PwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Lloyd\\",\\"Wilhemina St. Lloyd\\",FEMALE,17,Lloyd,Lloyd,\\"(empty)\\",Tuesday,1,\\"wilhemina st.@lloyd-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567876,\\"sold_product_567876_21798, sold_product_567876_24299\\",\\"sold_product_567876_21798, sold_product_567876_24299\\",\\"14.992, 42\\",\\"14.992, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"7.789, 19.313\\",\\"14.992, 42\\",\\"21,798, 24,299\\",\\"Jersey dress - black, Summer dress - black\\",\\"Jersey dress - black, Summer dress - black\\",\\"1, 1\\",\\"ZO0705707057, ZO0047700477\\",\\"0, 0\\",\\"14.992, 42\\",\\"14.992, 42\\",\\"0, 0\\",\\"ZO0705707057, ZO0047700477\\",\\"56.969\\",\\"56.969\\",2,2,order,wilhemina -UwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Jacobs\\",\\"Stephanie Jacobs\\",FEMALE,6,Jacobs,Jacobs,\\"(empty)\\",Tuesday,1,\\"stephanie@jacobs-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567684,\\"sold_product_567684_13627, sold_product_567684_21755\\",\\"sold_product_567684_13627, sold_product_567684_21755\\",\\"16.984, 20.984\\",\\"16.984, 20.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"9, 9.453\\",\\"16.984, 20.984\\",\\"13,627, 21,755\\",\\"Across body bag - black , Pencil skirt - black\\",\\"Across body bag - black , Pencil skirt - black\\",\\"1, 1\\",\\"ZO0201202012, ZO0035000350\\",\\"0, 0\\",\\"16.984, 20.984\\",\\"16.984, 20.984\\",\\"0, 0\\",\\"ZO0201202012, ZO0035000350\\",\\"37.969\\",\\"37.969\\",2,2,order,stephanie -aAMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Oliver,Oliver,\\"Oliver Smith\\",\\"Oliver Smith\\",MALE,7,Smith,Smith,\\"(empty)\\",Tuesday,1,\\"oliver@smith-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567790,\\"sold_product_567790_13490, sold_product_567790_22013\\",\\"sold_product_567790_13490, sold_product_567790_22013\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"5.602, 29.406\\",\\"10.992, 60\\",\\"13,490, 22,013\\",\\"T-bar sandals - black/green, Boots - black\\",\\"T-bar sandals - black/green, Boots - black\\",\\"1, 1\\",\\"ZO0522405224, ZO0405104051\\",\\"0, 0\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"0, 0\\",\\"ZO0522405224, ZO0405104051\\",71,71,2,2,order,oliver -rAMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,George,George,\\"George Hubbard\\",\\"George Hubbard\\",MALE,32,Hubbard,Hubbard,\\"(empty)\\",Tuesday,1,\\"george@hubbard-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567465,\\"sold_product_567465_19025, sold_product_567465_1753\\",\\"sold_product_567465_19025, sold_product_567465_1753\\",\\"65, 65\\",\\"65, 65\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"31.844, 30.547\\",\\"65, 65\\",\\"19,025, 1,753\\",\\"Suit jacket - black, Boots - dark blue\\",\\"Suit jacket - black, Boots - dark blue\\",\\"1, 1\\",\\"ZO0274502745, ZO0686006860\\",\\"0, 0\\",\\"65, 65\\",\\"65, 65\\",\\"0, 0\\",\\"ZO0274502745, ZO0686006860\\",130,130,2,2,order,george -zwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories\\",\\"Men's Accessories\\",EUR,Phil,Phil,\\"Phil Alvarez\\",\\"Phil Alvarez\\",MALE,50,Alvarez,Alvarez,\\"(empty)\\",Tuesday,1,\\"phil@alvarez-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567256,\\"sold_product_567256_24717, sold_product_567256_23939\\",\\"sold_product_567256_24717, sold_product_567256_23939\\",\\"14.992, 50\\",\\"14.992, 50\\",\\"Men's Accessories, Men's Accessories\\",\\"Men's Accessories, Men's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"7.789, 24.5\\",\\"14.992, 50\\",\\"24,717, 23,939\\",\\"Belt - dark brown , Weekend bag - black\\",\\"Belt - dark brown , Weekend bag - black\\",\\"1, 1\\",\\"ZO0461004610, ZO0702707027\\",\\"0, 0\\",\\"14.992, 50\\",\\"14.992, 50\\",\\"0, 0\\",\\"ZO0461004610, ZO0702707027\\",65,65,2,2,order,phil -CwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Jackson,Jackson,\\"Jackson Bryant\\",\\"Jackson Bryant\\",MALE,13,Bryant,Bryant,\\"(empty)\\",Tuesday,1,\\"jackson@bryant-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Low Tide Media, Spritechnologies\\",\\"Elitelligence, Low Tide Media, Spritechnologies\\",\\"Jun 24, 2019 @ 00:00:00.000\\",716462,\\"sold_product_716462_13612, sold_product_716462_21781, sold_product_716462_17754, sold_product_716462_17020\\",\\"sold_product_716462_13612, sold_product_716462_21781, sold_product_716462_17754, sold_product_716462_17020\\",\\"11.992, 20.984, 10.992, 20.984\\",\\"11.992, 20.984, 10.992, 20.984\\",\\"Men's Clothing, Men's Clothing, Men's Accessories, Men's Clothing\\",\\"Men's Clothing, Men's Clothing, Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, Low Tide Media, Elitelligence, Spritechnologies\\",\\"Elitelligence, Low Tide Media, Elitelligence, Spritechnologies\\",\\"6.469, 10.289, 5.059, 10.078\\",\\"11.992, 20.984, 10.992, 20.984\\",\\"13,612, 21,781, 17,754, 17,020\\",\\"Basic T-shirt - light red/white, Sweatshirt - mottled light grey, Wallet - cognac/black, Sports shirt - grey multicolor\\",\\"Basic T-shirt - light red/white, Sweatshirt - mottled light grey, Wallet - cognac/black, Sports shirt - grey multicolor\\",\\"1, 1, 1, 1\\",\\"ZO0549505495, ZO0458504585, ZO0602506025, ZO0617506175\\",\\"0, 0, 0, 0\\",\\"11.992, 20.984, 10.992, 20.984\\",\\"11.992, 20.984, 10.992, 20.984\\",\\"0, 0, 0, 0\\",\\"ZO0549505495, ZO0458504585, ZO0602506025, ZO0617506175\\",\\"64.938\\",\\"64.938\\",4,4,order,jackson -GQMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Elliott\\",\\"Abigail Elliott\\",FEMALE,46,Elliott,Elliott,\\"(empty)\\",Tuesday,1,\\"abigail@elliott-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Angeldale, Spherecords Maternity\\",\\"Angeldale, Spherecords Maternity\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566775,\\"sold_product_566775_7253, sold_product_566775_25143\\",\\"sold_product_566775_7253, sold_product_566775_25143\\",\\"110, 16.984\\",\\"110, 16.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Spherecords Maternity\\",\\"Angeldale, Spherecords Maternity\\",\\"53.906, 7.988\\",\\"110, 16.984\\",\\"7,253, 25,143\\",\\"Over-the-knee boots - bison, Long sleeved top - mid grey multicolor\\",\\"Over-the-knee boots - bison, Long sleeved top - mid grey multicolor\\",\\"1, 1\\",\\"ZO0671006710, ZO0708007080\\",\\"0, 0\\",\\"110, 16.984\\",\\"110, 16.984\\",\\"0, 0\\",\\"ZO0671006710, ZO0708007080\\",127,127,2,2,order,abigail -IQMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jason,Jason,\\"Jason Mccarthy\\",\\"Jason Mccarthy\\",MALE,16,Mccarthy,Mccarthy,\\"(empty)\\",Tuesday,1,\\"jason@mccarthy-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567926,\\"sold_product_567926_22732, sold_product_567926_11389\\",\\"sold_product_567926_22732, sold_product_567926_11389\\",\\"33, 7.988\\",\\"33, 7.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"16.172, 3.6\\",\\"33, 7.988\\",\\"22,732, 11,389\\",\\"Relaxed fit jeans - black denim, Basic T-shirt - green\\",\\"Relaxed fit jeans - black denim, Basic T-shirt - green\\",\\"1, 1\\",\\"ZO0113301133, ZO0562105621\\",\\"0, 0\\",\\"33, 7.988\\",\\"33, 7.988\\",\\"0, 0\\",\\"ZO0113301133, ZO0562105621\\",\\"40.969\\",\\"40.969\\",2,2,order,jason -JAMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Miller\\",\\"Elyssa Miller\\",FEMALE,27,Miller,Miller,\\"(empty)\\",Tuesday,1,\\"elyssa@miller-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Gnomehouse mom\\",\\"Tigress Enterprises, Gnomehouse mom\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566829,\\"sold_product_566829_21605, sold_product_566829_17889\\",\\"sold_product_566829_21605, sold_product_566829_17889\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Gnomehouse mom\\",\\"Tigress Enterprises, Gnomehouse mom\\",\\"12.25, 15.07\\",\\"24.984, 28.984\\",\\"21,605, 17,889\\",\\"Pyjama top - navy, Blouse - black\\",\\"Pyjama top - navy, Blouse - black\\",\\"1, 1\\",\\"ZO0100901009, ZO0235102351\\",\\"0, 0\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"0, 0\\",\\"ZO0100901009, ZO0235102351\\",\\"53.969\\",\\"53.969\\",2,2,order,elyssa -RAMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Muniz,Muniz,\\"Muniz Fleming\\",\\"Muniz Fleming\\",MALE,37,Fleming,Fleming,\\"(empty)\\",Tuesday,1,\\"muniz@fleming-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Oceanavigations,Oceanavigations,\\"Jun 24, 2019 @ 00:00:00.000\\",567666,\\"sold_product_567666_17099, sold_product_567666_2908\\",\\"sold_product_567666_17099, sold_product_567666_2908\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"13.242, 14.781\\",\\"24.984, 28.984\\",\\"17,099, 2,908\\",\\"Watch - black, Chinos - beige \\",\\"Watch - black, Chinos - beige \\",\\"1, 1\\",\\"ZO0311403114, ZO0282002820\\",\\"0, 0\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"0, 0\\",\\"ZO0311403114, ZO0282002820\\",\\"53.969\\",\\"53.969\\",2,2,order,muniz -kgMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Austin\\",\\"Pia Austin\\",FEMALE,45,Austin,Austin,\\"(empty)\\",Tuesday,1,\\"pia@austin-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567383,\\"sold_product_567383_16258, sold_product_567383_15314\\",\\"sold_product_567383_16258, sold_product_567383_15314\\",\\"10.992, 42\\",\\"10.992, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"5.059, 20.578\\",\\"10.992, 42\\",\\"16,258, 15,314\\",\\"Print T-shirt - light grey/white, A-line skirt - navy blazer\\",\\"Print T-shirt - light grey/white, A-line skirt - navy blazer\\",\\"1, 1\\",\\"ZO0647406474, ZO0330703307\\",\\"0, 0\\",\\"10.992, 42\\",\\"10.992, 42\\",\\"0, 0\\",\\"ZO0647406474, ZO0330703307\\",\\"52.969\\",\\"52.969\\",2,2,order,pia -ugMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Greene\\",\\"Abd Greene\\",MALE,52,Greene,Greene,\\"(empty)\\",Tuesday,1,\\"abd@greene-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567381,\\"sold_product_567381_13005, sold_product_567381_18590\\",\\"sold_product_567381_13005, sold_product_567381_18590\\",\\"22.984, 42\\",\\"22.984, 42\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"10.352, 19.313\\",\\"22.984, 42\\",\\"13,005, 18,590\\",\\"Shirt - grey, Light jacket - mottled light grey\\",\\"Shirt - grey, Light jacket - mottled light grey\\",\\"1, 1\\",\\"ZO0278402784, ZO0458304583\\",\\"0, 0\\",\\"22.984, 42\\",\\"22.984, 42\\",\\"0, 0\\",\\"ZO0278402784, ZO0458304583\\",65,65,2,2,order,abd -zwMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Simpson\\",\\"Jackson Simpson\\",MALE,13,Simpson,Simpson,\\"(empty)\\",Tuesday,1,\\"jackson@simpson-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567437,\\"sold_product_567437_16571, sold_product_567437_11872\\",\\"sold_product_567437_16571, sold_product_567437_11872\\",\\"65, 7.988\\",\\"65, 7.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"35.094, 3.68\\",\\"65, 7.988\\",\\"16,571, 11,872\\",\\"Suit jacket - black, Basic T-shirt - light red multicolor\\",\\"Suit jacket - black, Basic T-shirt - light red multicolor\\",\\"1, 1\\",\\"ZO0275902759, ZO0545005450\\",\\"0, 0\\",\\"65, 7.988\\",\\"65, 7.988\\",\\"0, 0\\",\\"ZO0275902759, ZO0545005450\\",73,73,2,2,order,jackson -CwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Irwin,Irwin,\\"Irwin Gomez\\",\\"Irwin Gomez\\",MALE,14,Gomez,Gomez,\\"(empty)\\",Tuesday,1,\\"irwin@gomez-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567324,\\"sold_product_567324_15839, sold_product_567324_11429\\",\\"sold_product_567324_15839, sold_product_567324_11429\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"16.813, 5.391\\",\\"33, 10.992\\",\\"15,839, 11,429\\",\\"Slim fit jeans - sand , Swimming shorts - lime punch\\",\\"Slim fit jeans - sand , Swimming shorts - lime punch\\",\\"1, 1\\",\\"ZO0426604266, ZO0629406294\\",\\"0, 0\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"0, 0\\",\\"ZO0426604266, ZO0629406294\\",\\"43.969\\",\\"43.969\\",2,2,order,irwin -QwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Hubbard\\",\\"Yuri Hubbard\\",MALE,21,Hubbard,Hubbard,\\"(empty)\\",Tuesday,1,\\"yuri@hubbard-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567504,\\"sold_product_567504_18713, sold_product_567504_23235\\",\\"sold_product_567504_18713, sold_product_567504_23235\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"11.75, 13.242\\",\\"24.984, 24.984\\",\\"18,713, 23,235\\",\\"Rucksack - navy/Blue Violety, Shirt - grey/black\\",\\"Rucksack - navy/Blue Violety, Shirt - grey/black\\",\\"1, 1\\",\\"ZO0606506065, ZO0277702777\\",\\"0, 0\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"0, 0\\",\\"ZO0606506065, ZO0277702777\\",\\"49.969\\",\\"49.969\\",2,2,order,yuri -RAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Selena,Selena,\\"Selena Gregory\\",\\"Selena Gregory\\",FEMALE,42,Gregory,Gregory,\\"(empty)\\",Tuesday,1,\\"selena@gregory-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567623,\\"sold_product_567623_14283, sold_product_567623_22330\\",\\"sold_product_567623_14283, sold_product_567623_22330\\",\\"60, 11.992\\",\\"60, 11.992\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"32.375, 5.52\\",\\"60, 11.992\\",\\"14,283, 22,330\\",\\"Lace-ups - nude, Long sleeved top - off white/navy\\",\\"Lace-ups - nude, Long sleeved top - off white/navy\\",\\"1, 1\\",\\"ZO0239802398, ZO0645406454\\",\\"0, 0\\",\\"60, 11.992\\",\\"60, 11.992\\",\\"0, 0\\",\\"ZO0239802398, ZO0645406454\\",72,72,2,2,order,selena -RwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Rios\\",\\"Abd Rios\\",MALE,52,Rios,Rios,\\"(empty)\\",Tuesday,1,\\"abd@rios-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",567400,\\"sold_product_567400_13372, sold_product_567400_7092\\",\\"sold_product_567400_13372, sold_product_567400_7092\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"11.75, 23.094\\",\\"24.984, 42\\",\\"13,372, 7,092\\",\\"Rucksack - navy/cognac , Tracksuit top - oliv\\",\\"Rucksack - navy/cognac , Tracksuit top - oliv\\",\\"1, 1\\",\\"ZO0605606056, ZO0588105881\\",\\"0, 0\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"0, 0\\",\\"ZO0605606056, ZO0588105881\\",67,67,2,2,order,abd -TwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Garner\\",\\"Yasmine Garner\\",FEMALE,43,Garner,Garner,\\"(empty)\\",Tuesday,1,\\"yasmine@garner-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",Pyramidustries,Pyramidustries,\\"Jun 24, 2019 @ 00:00:00.000\\",566757,\\"sold_product_566757_16685, sold_product_566757_20906\\",\\"sold_product_566757_16685, sold_product_566757_20906\\",\\"18.984, 11.992\\",\\"18.984, 11.992\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"9.492, 6.23\\",\\"18.984, 11.992\\",\\"16,685, 20,906\\",\\"Across body bag - black, Print T-shirt - white\\",\\"Across body bag - black, Print T-shirt - white\\",\\"1, 1\\",\\"ZO0196201962, ZO0168601686\\",\\"0, 0\\",\\"18.984, 11.992\\",\\"18.984, 11.992\\",\\"0, 0\\",\\"ZO0196201962, ZO0168601686\\",\\"30.984\\",\\"30.984\\",2,2,order,yasmine -UAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Brigitte,Brigitte,\\"Brigitte Gregory\\",\\"Brigitte Gregory\\",FEMALE,12,Gregory,Gregory,\\"(empty)\\",Tuesday,1,\\"brigitte@gregory-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566884,\\"sold_product_566884_23198, sold_product_566884_5945\\",\\"sold_product_566884_23198, sold_product_566884_5945\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"10.492, 11.5\\",\\"20.984, 24.984\\",\\"23,198, 5,945\\",\\"Jersey dress - black, Ankle boots - black\\",\\"Jersey dress - black, Ankle boots - black\\",\\"1, 1\\",\\"ZO0490204902, ZO0025000250\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0490204902, ZO0025000250\\",\\"45.969\\",\\"45.969\\",2,2,order,brigitte -pwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Abigail,Abigail,\\"Abigail Brewer\\",\\"Abigail Brewer\\",FEMALE,46,Brewer,Brewer,\\"(empty)\\",Tuesday,1,\\"abigail@brewer-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,Oceanavigations,Oceanavigations,\\"Jun 24, 2019 @ 00:00:00.000\\",567815,\\"sold_product_567815_24802, sold_product_567815_7476\\",\\"sold_product_567815_24802, sold_product_567815_7476\\",\\"16.984, 60\\",\\"16.984, 60\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"8.328, 32.375\\",\\"16.984, 60\\",\\"24,802, 7,476\\",\\"Print T-shirt - red, Slip-ons - Wheat\\",\\"Print T-shirt - red, Slip-ons - Wheat\\",\\"1, 1\\",\\"ZO0263602636, ZO0241002410\\",\\"0, 0\\",\\"16.984, 60\\",\\"16.984, 60\\",\\"0, 0\\",\\"ZO0263602636, ZO0241002410\\",77,77,2,2,order,abigail -GwMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Massey\\",\\"Wilhemina St. Massey\\",FEMALE,17,Massey,Massey,\\"(empty)\\",Tuesday,1,\\"wilhemina st.@massey-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",Pyramidustries,Pyramidustries,\\"Jun 24, 2019 @ 00:00:00.000\\",567177,\\"sold_product_567177_12365, sold_product_567177_23200\\",\\"sold_product_567177_12365, sold_product_567177_23200\\",\\"30.984, 24.984\\",\\"30.984, 24.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"15.492, 12.25\\",\\"30.984, 24.984\\",\\"12,365, 23,200\\",\\"Rucksack - grey , Bomber Jacket - black\\",\\"Rucksack - grey , Bomber Jacket - black\\",\\"1, 1\\",\\"ZO0197301973, ZO0180401804\\",\\"0, 0\\",\\"30.984, 24.984\\",\\"30.984, 24.984\\",\\"0, 0\\",\\"ZO0197301973, ZO0180401804\\",\\"55.969\\",\\"55.969\\",2,2,order,wilhemina -lwMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Lambert\\",\\"Elyssa Lambert\\",FEMALE,27,Lambert,Lambert,\\"(empty)\\",Tuesday,1,\\"elyssa@lambert-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Tigress Enterprises, Oceanavigations, Low Tide Media\\",\\"Pyramidustries, Tigress Enterprises, Oceanavigations, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",733060,\\"sold_product_733060_13851, sold_product_733060_7400, sold_product_733060_20106, sold_product_733060_5045\\",\\"sold_product_733060_13851, sold_product_733060_7400, sold_product_733060_20106, sold_product_733060_5045\\",\\"20.984, 50, 50, 60\\",\\"20.984, 50, 50, 60\\",\\"Women's Clothing, Women's Shoes, Women's Shoes, Women's Shoes\\",\\"Women's Clothing, Women's Shoes, Women's Shoes, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Pyramidustries, Tigress Enterprises, Oceanavigations, Low Tide Media\\",\\"Pyramidustries, Tigress Enterprises, Oceanavigations, Low Tide Media\\",\\"10.492, 23.5, 22.5, 30.594\\",\\"20.984, 50, 50, 60\\",\\"13,851, 7,400, 20,106, 5,045\\",\\"Summer dress - black, Lace-up boots - black, Ballet pumps - bronze, Boots - black\\",\\"Summer dress - black, Lace-up boots - black, Ballet pumps - bronze, Boots - black\\",\\"1, 1, 1, 1\\",\\"ZO0155601556, ZO0013600136, ZO0235702357, ZO0383203832\\",\\"0, 0, 0, 0\\",\\"20.984, 50, 50, 60\\",\\"20.984, 50, 50, 60\\",\\"0, 0, 0, 0\\",\\"ZO0155601556, ZO0013600136, ZO0235702357, ZO0383203832\\",181,181,4,4,order,elyssa -zgMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Selena,Selena,\\"Selena Rose\\",\\"Selena Rose\\",FEMALE,42,Rose,Rose,\\"(empty)\\",Tuesday,1,\\"selena@rose-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567486,\\"sold_product_567486_19378, sold_product_567486_21859\\",\\"sold_product_567486_19378, sold_product_567486_21859\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"13.492, 20.156\\",\\"24.984, 42\\",\\"19,378, 21,859\\",\\"Long sleeved top - winternude, Wedge sandals - black\\",\\"Long sleeved top - winternude, Wedge sandals - black\\",\\"1, 1\\",\\"ZO0058200582, ZO0365503655\\",\\"0, 0\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"0, 0\\",\\"ZO0058200582, ZO0365503655\\",67,67,2,2,order,selena -zwMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Goodwin\\",\\"Abigail Goodwin\\",FEMALE,46,Goodwin,Goodwin,\\"(empty)\\",Tuesday,1,\\"abigail@goodwin-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,Gnomehouse,Gnomehouse,\\"Jun 24, 2019 @ 00:00:00.000\\",567625,\\"sold_product_567625_21570, sold_product_567625_16910\\",\\"sold_product_567625_21570, sold_product_567625_16910\\",\\"55, 42\\",\\"55, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Gnomehouse\\",\\"Gnomehouse, Gnomehouse\\",\\"28.047, 19.734\\",\\"55, 42\\",\\"21,570, 16,910\\",\\"A-line skirt - flame scarlet, Pleated skirt - black\\",\\"A-line skirt - flame scarlet, Pleated skirt - black\\",\\"1, 1\\",\\"ZO0328603286, ZO0328803288\\",\\"0, 0\\",\\"55, 42\\",\\"55, 42\\",\\"0, 0\\",\\"ZO0328603286, ZO0328803288\\",97,97,2,2,order,abigail -2gMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories\\",\\"Men's Accessories\\",EUR,Recip,Recip,\\"Recip Brock\\",\\"Recip Brock\\",MALE,10,Brock,Brock,\\"(empty)\\",Tuesday,1,\\"recip@brock-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567224,\\"sold_product_567224_16809, sold_product_567224_18808\\",\\"sold_product_567224_16809, sold_product_567224_18808\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"Men's Accessories, Men's Accessories\\",\\"Men's Accessories, Men's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"14.211, 10.078\\",\\"28.984, 20.984\\",\\"16,809, 18,808\\",\\"Rucksack - black, Rucksack - black/cognac\\",\\"Rucksack - black, Rucksack - black/cognac\\",\\"1, 1\\",\\"ZO0128501285, ZO0606306063\\",\\"0, 0\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"0, 0\\",\\"ZO0128501285, ZO0606306063\\",\\"49.969\\",\\"49.969\\",2,2,order,recip -2wMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Diane,Diane,\\"Diane Kim\\",\\"Diane Kim\\",FEMALE,22,Kim,Kim,\\"(empty)\\",Tuesday,1,\\"diane@kim-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Pyramidustries active\\",\\"Low Tide Media, Pyramidustries active\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567252,\\"sold_product_567252_16632, sold_product_567252_16333\\",\\"sold_product_567252_16632, sold_product_567252_16333\\",\\"42, 24.984\\",\\"42, 24.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Pyramidustries active\\",\\"Low Tide Media, Pyramidustries active\\",\\"19.313, 12\\",\\"42, 24.984\\",\\"16,632, 16,333\\",\\"Slip-ons - mud, Long sleeved top - black \\",\\"Slip-ons - mud, Long sleeved top - black \\",\\"1, 1\\",\\"ZO0369803698, ZO0220502205\\",\\"0, 0\\",\\"42, 24.984\\",\\"42, 24.984\\",\\"0, 0\\",\\"ZO0369803698, ZO0220502205\\",67,67,2,2,order,diane -\\"-AMtOW0BH63Xcmy45GjD\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Thad,Thad,\\"Thad Bowers\\",\\"Thad Bowers\\",MALE,30,Bowers,Bowers,\\"(empty)\\",Tuesday,1,\\"thad@bowers-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567735,\\"sold_product_567735_14414, sold_product_567735_20047\\",\\"sold_product_567735_14414, sold_product_567735_20047\\",\\"7.988, 24.984\\",\\"7.988, 24.984\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"4.148, 11.5\\",\\"7.988, 24.984\\",\\"14,414, 20,047\\",\\"3 PACK - Socks - black/white, Slip-ons - navy\\",\\"3 PACK - Socks - black/white, Slip-ons - navy\\",\\"1, 1\\",\\"ZO0129701297, ZO0518705187\\",\\"0, 0\\",\\"7.988, 24.984\\",\\"7.988, 24.984\\",\\"0, 0\\",\\"ZO0129701297, ZO0518705187\\",\\"32.969\\",\\"32.969\\",2,2,order,thad -BQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Diane,Diane,\\"Diane Rice\\",\\"Diane Rice\\",FEMALE,22,Rice,Rice,\\"(empty)\\",Tuesday,1,\\"diane@rice-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567822,\\"sold_product_567822_5501, sold_product_567822_25039\\",\\"sold_product_567822_5501, sold_product_567822_25039\\",\\"75, 33\\",\\"75, 33\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"40.5, 17.813\\",\\"75, 33\\",\\"5,501, 25,039\\",\\"Ankle boots - Midnight Blue, Shirt - Lemon Chiffon\\",\\"Ankle boots - Midnight Blue, Shirt - Lemon Chiffon\\",\\"1, 1\\",\\"ZO0244802448, ZO0346303463\\",\\"0, 0\\",\\"75, 33\\",\\"75, 33\\",\\"0, 0\\",\\"ZO0244802448, ZO0346303463\\",108,108,2,2,order,diane -BgMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Youssef,Youssef,\\"Youssef Baker\\",\\"Youssef Baker\\",MALE,31,Baker,Baker,\\"(empty)\\",Tuesday,1,\\"youssef@baker-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",567852,\\"sold_product_567852_12928, sold_product_567852_11153\\",\\"sold_product_567852_12928, sold_product_567852_11153\\",\\"20.984, 10.992\\",\\"20.984, 10.992\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"9.656, 5.172\\",\\"20.984, 10.992\\",\\"12,928, 11,153\\",\\"Shirt - black /grey, Cap - black/black\\",\\"Shirt - black /grey, Cap - black/black\\",\\"1, 1\\",\\"ZO0523805238, ZO0596505965\\",\\"0, 0\\",\\"20.984, 10.992\\",\\"20.984, 10.992\\",\\"0, 0\\",\\"ZO0523805238, ZO0596505965\\",\\"31.984\\",\\"31.984\\",2,2,order,youssef -JwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,Hicham,Hicham,\\"Hicham Carpenter\\",\\"Hicham Carpenter\\",MALE,8,Carpenter,Carpenter,\\"(empty)\\",Tuesday,1,\\"hicham@carpenter-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566861,\\"sold_product_566861_1978, sold_product_566861_11748\\",\\"sold_product_566861_1978, sold_product_566861_11748\\",\\"50, 16.984\\",\\"50, 16.984\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"27.484, 8.328\\",\\"50, 16.984\\",\\"1,978, 11,748\\",\\"Lace-up boots - black, Wallet - grey\\",\\"Lace-up boots - black, Wallet - grey\\",\\"1, 1\\",\\"ZO0520305203, ZO0462204622\\",\\"0, 0\\",\\"50, 16.984\\",\\"50, 16.984\\",\\"0, 0\\",\\"ZO0520305203, ZO0462204622\\",67,67,2,2,order,hicham -KAMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Reyes\\",\\"Gwen Reyes\\",FEMALE,26,Reyes,Reyes,\\"(empty)\\",Tuesday,1,\\"gwen@reyes-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Tigress Enterprises Curvy\\",\\"Oceanavigations, Tigress Enterprises Curvy\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567042,\\"sold_product_567042_23822, sold_product_567042_11786\\",\\"sold_product_567042_23822, sold_product_567042_11786\\",\\"60, 20.984\\",\\"60, 20.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises Curvy\\",\\"Oceanavigations, Tigress Enterprises Curvy\\",\\"32.375, 11.117\\",\\"60, 20.984\\",\\"23,822, 11,786\\",\\"Sandals - Midnight Blue, Print T-shirt - black\\",\\"Sandals - Midnight Blue, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0243002430, ZO0103901039\\",\\"0, 0\\",\\"60, 20.984\\",\\"60, 20.984\\",\\"0, 0\\",\\"ZO0243002430, ZO0103901039\\",81,81,2,2,order,gwen -SAMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Cook\\",\\"Elyssa Cook\\",FEMALE,27,Cook,Cook,\\"(empty)\\",Tuesday,1,\\"elyssa@cook-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Gnomehouse, Tigress Enterprises\\",\\"Pyramidustries, Gnomehouse, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",731037,\\"sold_product_731037_17669, sold_product_731037_9413, sold_product_731037_8035, sold_product_731037_24229\\",\\"sold_product_731037_17669, sold_product_731037_9413, sold_product_731037_8035, sold_product_731037_24229\\",\\"13.992, 50, 13.992, 29.984\\",\\"13.992, 50, 13.992, 29.984\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Pyramidustries, Gnomehouse, Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Gnomehouse, Pyramidustries, Tigress Enterprises\\",\\"6.441, 22.5, 7, 15.289\\",\\"13.992, 50, 13.992, 29.984\\",\\"17,669, 9,413, 8,035, 24,229\\",\\"Pencil skirt - black, Summer dress - Pale Violet Red, Jersey dress - black, Trousers - black\\",\\"Pencil skirt - black, Summer dress - Pale Violet Red, Jersey dress - black, Trousers - black\\",\\"1, 1, 1, 1\\",\\"ZO0148801488, ZO0335003350, ZO0155301553, ZO0074300743\\",\\"0, 0, 0, 0\\",\\"13.992, 50, 13.992, 29.984\\",\\"13.992, 50, 13.992, 29.984\\",\\"0, 0, 0, 0\\",\\"ZO0148801488, ZO0335003350, ZO0155301553, ZO0074300743\\",\\"107.938\\",\\"107.938\\",4,4,order,elyssa -gQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Morgan\\",\\"Sultan Al Morgan\\",MALE,19,Morgan,Morgan,\\"(empty)\\",Tuesday,1,\\"sultan al@morgan-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567729,\\"sold_product_567729_1196, sold_product_567729_13331\\",\\"sold_product_567729_1196, sold_product_567729_13331\\",\\"42, 20.984\\",\\"42, 20.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"20.156, 9.656\\",\\"42, 20.984\\",\\"1,196, 13,331\\",\\"Trainers - white, Jumper - black\\",\\"Trainers - white, Jumper - black\\",\\"1, 1\\",\\"ZO0395103951, ZO0296102961\\",\\"0, 0\\",\\"42, 20.984\\",\\"42, 20.984\\",\\"0, 0\\",\\"ZO0395103951, ZO0296102961\\",\\"62.969\\",\\"62.969\\",2,2,order,sultan -iQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jim,Jim,\\"Jim Carpenter\\",\\"Jim Carpenter\\",MALE,41,Carpenter,Carpenter,\\"(empty)\\",Tuesday,1,\\"jim@carpenter-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567384,\\"sold_product_567384_22462, sold_product_567384_21856\\",\\"sold_product_567384_22462, sold_product_567384_21856\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"14.852, 12.742\\",\\"33, 24.984\\",\\"22,462, 21,856\\",\\"Slim fit jeans - dark grey , Pyjama set - grey\\",\\"Slim fit jeans - dark grey , Pyjama set - grey\\",\\"1, 1\\",\\"ZO0426704267, ZO0612006120\\",\\"0, 0\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"0, 0\\",\\"ZO0426704267, ZO0612006120\\",\\"57.969\\",\\"57.969\\",2,2,order,jim -kwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Goodman\\",\\"Fitzgerald Goodman\\",MALE,11,Goodman,Goodman,\\"(empty)\\",Tuesday,1,\\"fitzgerald@goodman-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566690,\\"sold_product_566690_11851, sold_product_566690_18257\\",\\"sold_product_566690_11851, sold_product_566690_18257\\",\\"28.984, 14.992\\",\\"28.984, 14.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"13.922, 7.051\\",\\"28.984, 14.992\\",\\"11,851, 18,257\\",\\"Jumper - dark blue, Print T-shirt - black\\",\\"Jumper - dark blue, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0449004490, ZO0118501185\\",\\"0, 0\\",\\"28.984, 14.992\\",\\"28.984, 14.992\\",\\"0, 0\\",\\"ZO0449004490, ZO0118501185\\",\\"43.969\\",\\"43.969\\",2,2,order,fuzzy -lAMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Frances,Frances,\\"Frances Mullins\\",\\"Frances Mullins\\",FEMALE,49,Mullins,Mullins,\\"(empty)\\",Tuesday,1,\\"frances@mullins-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566951,\\"sold_product_566951_2269, sold_product_566951_14250\\",\\"sold_product_566951_2269, sold_product_566951_14250\\",\\"50, 33\\",\\"50, 33\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"23, 15.508\\",\\"50, 33\\",\\"2,269, 14,250\\",\\"Boots - Slate Gray, High-top trainers - grey\\",\\"Boots - Slate Gray, High-top trainers - grey\\",\\"1, 1\\",\\"ZO0406604066, ZO0517405174\\",\\"0, 0\\",\\"50, 33\\",\\"50, 33\\",\\"0, 0\\",\\"ZO0406604066, ZO0517405174\\",83,83,2,2,order,frances -lQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Diane,Diane,\\"Diane Washington\\",\\"Diane Washington\\",FEMALE,22,Washington,Washington,\\"(empty)\\",Tuesday,1,\\"diane@washington-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566982,\\"sold_product_566982_13852, sold_product_566982_21858\\",\\"sold_product_566982_13852, sold_product_566982_21858\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"7.648, 8.156\\",\\"16.984, 16.984\\",\\"13,852, 21,858\\",\\"A-line skirt - black/white, Nightie - off white\\",\\"A-line skirt - black/white, Nightie - off white\\",\\"1, 1\\",\\"ZO0149301493, ZO0099800998\\",\\"0, 0\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"0, 0\\",\\"ZO0149301493, ZO0099800998\\",\\"33.969\\",\\"33.969\\",2,2,order,diane -lgMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Phil,Phil,\\"Phil Bailey\\",\\"Phil Bailey\\",MALE,50,Bailey,Bailey,\\"(empty)\\",Tuesday,1,\\"phil@bailey-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566725,\\"sold_product_566725_17721, sold_product_566725_19679\\",\\"sold_product_566725_17721, sold_product_566725_19679\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"7.988, 15.648\\",\\"16.984, 28.984\\",\\"17,721, 19,679\\",\\"Polo shirt - light grey multicolor, Hoodie - black/dark blue/white\\",\\"Polo shirt - light grey multicolor, Hoodie - black/dark blue/white\\",\\"1, 1\\",\\"ZO0444404444, ZO0584205842\\",\\"0, 0\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"0, 0\\",\\"ZO0444404444, ZO0584205842\\",\\"45.969\\",\\"45.969\\",2,2,order,phil -wgMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Fletcher\\",\\"Yasmine Fletcher\\",FEMALE,43,Fletcher,Fletcher,\\"(empty)\\",Tuesday,1,\\"yasmine@fletcher-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566856,\\"sold_product_566856_10829, sold_product_566856_25007\\",\\"sold_product_566856_10829, sold_product_566856_25007\\",\\"28.984, 50\\",\\"28.984, 50\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"15.07, 26.484\\",\\"28.984, 50\\",\\"10,829, 25,007\\",\\"Sports shoes - black/pink, Jumpsuit - Pale Violet Red\\",\\"Sports shoes - black/pink, Jumpsuit - Pale Violet Red\\",\\"1, 1\\",\\"ZO0216502165, ZO0327503275\\",\\"0, 0\\",\\"28.984, 50\\",\\"28.984, 50\\",\\"0, 0\\",\\"ZO0216502165, ZO0327503275\\",79,79,2,2,order,yasmine -wwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Moss\\",\\"Selena Moss\\",FEMALE,42,Moss,Moss,\\"(empty)\\",Tuesday,1,\\"selena@moss-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Pyramidustries, Spherecords Curvy\\",\\"Pyramidustries, Spherecords Curvy\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567039,\\"sold_product_567039_16085, sold_product_567039_16220\\",\\"sold_product_567039_16085, sold_product_567039_16220\\",\\"24.984, 14.992\\",\\"24.984, 14.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Spherecords Curvy\\",\\"Pyramidustries, Spherecords Curvy\\",\\"11.75, 7.789\\",\\"24.984, 14.992\\",\\"16,085, 16,220\\",\\"Jeans Skinny Fit - dark blue denim, Vest - white\\",\\"Jeans Skinny Fit - dark blue denim, Vest - white\\",\\"1, 1\\",\\"ZO0184101841, ZO0711207112\\",\\"0, 0\\",\\"24.984, 14.992\\",\\"24.984, 14.992\\",\\"0, 0\\",\\"ZO0184101841, ZO0711207112\\",\\"39.969\\",\\"39.969\\",2,2,order,selena -xAMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Greene\\",\\"Wilhemina St. Greene\\",FEMALE,17,Greene,Greene,\\"(empty)\\",Tuesday,1,\\"wilhemina st.@greene-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Tigress Enterprises, Spherecords Curvy\\",\\"Tigress Enterprises, Spherecords Curvy\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567068,\\"sold_product_567068_13637, sold_product_567068_21700\\",\\"sold_product_567068_13637, sold_product_567068_21700\\",\\"28.984, 14.992\\",\\"28.984, 14.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords Curvy\\",\\"Tigress Enterprises, Spherecords Curvy\\",\\"13.633, 7.051\\",\\"28.984, 14.992\\",\\"13,637, 21,700\\",\\"Jersey dress - multicolor, Basic T-shirt - black\\",\\"Jersey dress - multicolor, Basic T-shirt - black\\",\\"1, 1\\",\\"ZO0038000380, ZO0711007110\\",\\"0, 0\\",\\"28.984, 14.992\\",\\"28.984, 14.992\\",\\"0, 0\\",\\"ZO0038000380, ZO0711007110\\",\\"43.969\\",\\"43.969\\",2,2,order,wilhemina -0wMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories, Women's Shoes\\",\\"Women's Clothing, Women's Accessories, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Cunningham\\",\\"Rabbia Al Cunningham\\",FEMALE,5,Cunningham,Cunningham,\\"(empty)\\",Tuesday,1,\\"rabbia al@cunningham-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Pyramidustries, Angeldale, Oceanavigations\\",\\"Pyramidustries, Angeldale, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",732229,\\"sold_product_732229_21857, sold_product_732229_23802, sold_product_732229_12401, sold_product_732229_21229\\",\\"sold_product_732229_21857, sold_product_732229_23802, sold_product_732229_12401, sold_product_732229_21229\\",\\"20.984, 20.984, 65, 80\\",\\"20.984, 20.984, 65, 80\\",\\"Women's Clothing, Women's Clothing, Women's Accessories, Women's Shoes\\",\\"Women's Clothing, Women's Clothing, Women's Accessories, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Pyramidustries, Pyramidustries, Angeldale, Oceanavigations\\",\\"Pyramidustries, Pyramidustries, Angeldale, Oceanavigations\\",\\"10.078, 11.539, 31.203, 40.781\\",\\"20.984, 20.984, 65, 80\\",\\"21,857, 23,802, 12,401, 21,229\\",\\"Cardigan - black/white, Long sleeved top - off white, Handbag - black, Boots - navy\\",\\"Cardigan - black/white, Long sleeved top - off white, Handbag - black, Boots - navy\\",\\"1, 1, 1, 1\\",\\"ZO0175701757, ZO0163801638, ZO0697506975, ZO0245602456\\",\\"0, 0, 0, 0\\",\\"20.984, 20.984, 65, 80\\",\\"20.984, 20.984, 65, 80\\",\\"0, 0, 0, 0\\",\\"ZO0175701757, ZO0163801638, ZO0697506975, ZO0245602456\\",187,187,4,4,order,rabbia -1AMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Ball\\",\\"Rabbia Al Ball\\",FEMALE,5,Ball,Ball,\\"(empty)\\",Tuesday,1,\\"rabbia al@ball-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Spherecords, Tigress Enterprises, Angeldale\\",\\"Spherecords, Tigress Enterprises, Angeldale\\",\\"Jun 24, 2019 @ 00:00:00.000\\",724806,\\"sold_product_724806_13062, sold_product_724806_12709, sold_product_724806_19614, sold_product_724806_21000\\",\\"sold_product_724806_13062, sold_product_724806_12709, sold_product_724806_19614, sold_product_724806_21000\\",\\"11.992, 28.984, 60, 20.984\\",\\"11.992, 28.984, 60, 20.984\\",\\"Women's Clothing, Women's Clothing, Women's Accessories, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Accessories, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Spherecords, Tigress Enterprises, Angeldale, Spherecords\\",\\"Spherecords, Tigress Enterprises, Angeldale, Spherecords\\",\\"6.23, 14.781, 27, 11.539\\",\\"11.992, 28.984, 60, 20.984\\",\\"13,062, 12,709, 19,614, 21,000\\",\\"Long sleeved top - dark green, Pleated skirt - Blue Violety, Tote bag - terracotta, Shirt - light blue\\",\\"Long sleeved top - dark green, Pleated skirt - Blue Violety, Tote bag - terracotta, Shirt - light blue\\",\\"1, 1, 1, 1\\",\\"ZO0643106431, ZO0033300333, ZO0696206962, ZO0651206512\\",\\"0, 0, 0, 0\\",\\"11.992, 28.984, 60, 20.984\\",\\"11.992, 28.984, 60, 20.984\\",\\"0, 0, 0, 0\\",\\"ZO0643106431, ZO0033300333, ZO0696206962, ZO0651206512\\",\\"121.938\\",\\"121.938\\",4,4,order,rabbia -8QMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Graham\\",\\"Abd Graham\\",MALE,52,Graham,Graham,\\"(empty)\\",Tuesday,1,\\"abd@graham-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567769,\\"sold_product_567769_24888, sold_product_567769_16104\\",\\"sold_product_567769_24888, sold_product_567769_16104\\",\\"28.984, 18.984\\",\\"28.984, 18.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"14.211, 9.117\\",\\"28.984, 18.984\\",\\"24,888, 16,104\\",\\"Formal shirt - blue, Swimming shorts - blue atol\\",\\"Formal shirt - blue, Swimming shorts - blue atol\\",\\"1, 1\\",\\"ZO0414004140, ZO0630106301\\",\\"0, 0\\",\\"28.984, 18.984\\",\\"28.984, 18.984\\",\\"0, 0\\",\\"ZO0414004140, ZO0630106301\\",\\"47.969\\",\\"47.969\\",2,2,order,abd -AgMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Abigail,Abigail,\\"Abigail Potter\\",\\"Abigail Potter\\",FEMALE,46,Potter,Potter,\\"(empty)\\",Tuesday,1,\\"abigail@potter-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566772,\\"sold_product_566772_17102, sold_product_566772_7361\\",\\"sold_product_566772_17102, sold_product_566772_7361\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"10.703, 13.633\\",\\"20.984, 28.984\\",\\"17,102, 7,361\\",\\"Jersey dress - black/white, Ankle boots - black\\",\\"Jersey dress - black/white, Ankle boots - black\\",\\"1, 1\\",\\"ZO0152901529, ZO0019100191\\",\\"0, 0\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"0, 0\\",\\"ZO0152901529, ZO0019100191\\",\\"49.969\\",\\"49.969\\",2,2,order,abigail -2gMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Kamal,Kamal,\\"Kamal Palmer\\",\\"Kamal Palmer\\",MALE,39,Palmer,Palmer,\\"(empty)\\",Tuesday,1,\\"kamal@palmer-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567318,\\"sold_product_567318_16500, sold_product_567318_1539\\",\\"sold_product_567318_16500, sold_product_567318_1539\\",\\"33, 60\\",\\"33, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"16.813, 30\\",\\"33, 60\\",\\"16,500, 1,539\\",\\"Casual Cuffed Pants, Lace-up boots - black\\",\\"Casual Cuffed Pants, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0421104211, ZO0256202562\\",\\"0, 0\\",\\"33, 60\\",\\"33, 60\\",\\"0, 0\\",\\"ZO0421104211, ZO0256202562\\",93,93,2,2,order,kamal -OQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Potter\\",\\"Stephanie Potter\\",FEMALE,6,Potter,Potter,\\"(empty)\\",Tuesday,1,\\"stephanie@potter-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567615,\\"sold_product_567615_21067, sold_product_567615_16863\\",\\"sold_product_567615_21067, sold_product_567615_16863\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"25.484, 13.922\\",\\"50, 28.984\\",\\"21,067, 16,863\\",\\"Lace-up boots - brown, Bomber Jacket - black\\",\\"Lace-up boots - brown, Bomber Jacket - black\\",\\"1, 1\\",\\"ZO0013500135, ZO0174501745\\",\\"0, 0\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"0, 0\\",\\"ZO0013500135, ZO0174501745\\",79,79,2,2,order,stephanie -QgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Muniz,Muniz,\\"Muniz Weber\\",\\"Muniz Weber\\",MALE,37,Weber,Weber,\\"(empty)\\",Tuesday,1,\\"muniz@weber-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567316,\\"sold_product_567316_13588, sold_product_567316_24014\\",\\"sold_product_567316_13588, sold_product_567316_24014\\",\\"60, 50\\",\\"60, 50\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"28.797, 24.5\\",\\"60, 50\\",\\"13,588, 24,014\\",\\"Lace-ups - cognac, Boots - saphire\\",\\"Lace-ups - cognac, Boots - saphire\\",\\"1, 1\\",\\"ZO0390403904, ZO0403004030\\",\\"0, 0\\",\\"60, 50\\",\\"60, 50\\",\\"0, 0\\",\\"ZO0390403904, ZO0403004030\\",110,110,2,2,order,muniz -RQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Mary,Mary,\\"Mary Kelley\\",\\"Mary Kelley\\",FEMALE,20,Kelley,Kelley,\\"(empty)\\",Tuesday,1,\\"mary@kelley-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566896,\\"sold_product_566896_16021, sold_product_566896_17331\\",\\"sold_product_566896_16021, sold_product_566896_17331\\",\\"50, 20.984\\",\\"50, 20.984\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"23, 10.492\\",\\"50, 20.984\\",\\"16,021, 17,331\\",\\"High heeled sandals - electric blue, Tote bag - Blue Violety\\",\\"High heeled sandals - electric blue, Tote bag - Blue Violety\\",\\"1, 1\\",\\"ZO0242702427, ZO0090000900\\",\\"0, 0\\",\\"50, 20.984\\",\\"50, 20.984\\",\\"0, 0\\",\\"ZO0242702427, ZO0090000900\\",71,71,2,2,order,mary -WAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Phil,Phil,\\"Phil Henderson\\",\\"Phil Henderson\\",MALE,50,Henderson,Henderson,\\"(empty)\\",Tuesday,1,\\"phil@henderson-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567418,\\"sold_product_567418_22276, sold_product_567418_18190\\",\\"sold_product_567418_22276, sold_product_567418_18190\\",\\"75, 110\\",\\"75, 110\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"36.75, 58.281\\",\\"75, 110\\",\\"22,276, 18,190\\",\\"Lace-up boots - cognac, Ski jacket - bright white\\",\\"Lace-up boots - cognac, Ski jacket - bright white\\",\\"1, 1\\",\\"ZO0400404004, ZO0625006250\\",\\"0, 0\\",\\"75, 110\\",\\"75, 110\\",\\"0, 0\\",\\"ZO0400404004, ZO0625006250\\",185,185,2,2,order,phil -WQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Duncan\\",\\"Selena Duncan\\",FEMALE,42,Duncan,Duncan,\\"(empty)\\",Tuesday,1,\\"selena@duncan-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Spherecords, Spherecords Curvy\\",\\"Spherecords, Spherecords Curvy\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567462,\\"sold_product_567462_9295, sold_product_567462_18220\\",\\"sold_product_567462_9295, sold_product_567462_18220\\",\\"7.988, 16.984\\",\\"7.988, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Spherecords Curvy\\",\\"Spherecords, Spherecords Curvy\\",\\"3.6, 8.656\\",\\"7.988, 16.984\\",\\"9,295, 18,220\\",\\"Print T-shirt - dark grey/white, Jersey dress - dark blue\\",\\"Print T-shirt - dark grey/white, Jersey dress - dark blue\\",\\"1, 1\\",\\"ZO0644406444, ZO0709307093\\",\\"0, 0\\",\\"7.988, 16.984\\",\\"7.988, 16.984\\",\\"0, 0\\",\\"ZO0644406444, ZO0709307093\\",\\"24.984\\",\\"24.984\\",2,2,order,selena -XwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,George,George,\\"George Perkins\\",\\"George Perkins\\",MALE,32,Perkins,Perkins,\\"(empty)\\",Tuesday,1,\\"george@perkins-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,Oceanavigations,Oceanavigations,\\"Jun 24, 2019 @ 00:00:00.000\\",567667,\\"sold_product_567667_22878, sold_product_567667_19733\\",\\"sold_product_567667_22878, sold_product_567667_19733\\",\\"75, 33\\",\\"75, 33\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"34.5, 16.813\\",\\"75, 33\\",\\"22,878, 19,733\\",\\"Suit jacket - dark blue, Sweatshirt - black\\",\\"Suit jacket - dark blue, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0273802738, ZO0300303003\\",\\"0, 0\\",\\"75, 33\\",\\"75, 33\\",\\"0, 0\\",\\"ZO0273802738, ZO0300303003\\",108,108,2,2,order,george -YAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Carr\\",\\"Elyssa Carr\\",FEMALE,27,Carr,Carr,\\"(empty)\\",Tuesday,1,\\"elyssa@carr-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567703,\\"sold_product_567703_11574, sold_product_567703_16709\\",\\"sold_product_567703_11574, sold_product_567703_16709\\",\\"42, 42\\",\\"42, 42\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"19.313, 21.828\\",\\"42, 42\\",\\"11,574, 16,709\\",\\"Maxi dress - multicolor, Lace-up boots - Amethyst\\",\\"Maxi dress - multicolor, Lace-up boots - Amethyst\\",\\"1, 1\\",\\"ZO0037900379, ZO0134901349\\",\\"0, 0\\",\\"42, 42\\",\\"42, 42\\",\\"0, 0\\",\\"ZO0037900379, ZO0134901349\\",84,84,2,2,order,elyssa -iwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Gwen,Gwen,\\"Gwen Powell\\",\\"Gwen Powell\\",FEMALE,26,Powell,Powell,\\"(empty)\\",Tuesday,1,\\"gwen@powell-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567260,\\"sold_product_567260_9302, sold_product_567260_7402\\",\\"sold_product_567260_9302, sold_product_567260_7402\\",\\"33, 75\\",\\"33, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"16.172, 34.5\\",\\"33, 75\\",\\"9,302, 7,402\\",\\"Cardigan - red, Ankle boots - black \\",\\"Cardigan - red, Ankle boots - black \\",\\"1, 1\\",\\"ZO0068100681, ZO0674106741\\",\\"0, 0\\",\\"33, 75\\",\\"33, 75\\",\\"0, 0\\",\\"ZO0068100681, ZO0674106741\\",108,108,2,2,order,gwen -jAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Washington\\",\\"Rabbia Al Washington\\",FEMALE,5,Washington,Washington,\\"(empty)\\",Tuesday,1,\\"rabbia al@washington-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Spherecords Maternity, Oceanavigations, Pyramidustries active, Gnomehouse\\",\\"Spherecords Maternity, Oceanavigations, Pyramidustries active, Gnomehouse\\",\\"Jun 24, 2019 @ 00:00:00.000\\",724844,\\"sold_product_724844_19797, sold_product_724844_13322, sold_product_724844_10099, sold_product_724844_8107\\",\\"sold_product_724844_19797, sold_product_724844_13322, sold_product_724844_10099, sold_product_724844_8107\\",\\"20.984, 65, 20.984, 33\\",\\"20.984, 65, 20.984, 33\\",\\"Women's Clothing, Women's Shoes, Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Shoes, Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Spherecords Maternity, Oceanavigations, Pyramidustries active, Gnomehouse\\",\\"Spherecords Maternity, Oceanavigations, Pyramidustries active, Gnomehouse\\",\\"10.703, 33.781, 9.453, 17.484\\",\\"20.984, 65, 20.984, 33\\",\\"19,797, 13,322, 10,099, 8,107\\",\\"Shirt - white, High heeled ankle boots - black, Sweatshirt - black, Blouse - off-white\\",\\"Shirt - white, High heeled ankle boots - black, Sweatshirt - black, Blouse - off-white\\",\\"1, 1, 1, 1\\",\\"ZO0707507075, ZO0246402464, ZO0226802268, ZO0343503435\\",\\"0, 0, 0, 0\\",\\"20.984, 65, 20.984, 33\\",\\"20.984, 65, 20.984, 33\\",\\"0, 0, 0, 0\\",\\"ZO0707507075, ZO0246402464, ZO0226802268, ZO0343503435\\",140,140,4,4,order,rabbia -qAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Pia,Pia,\\"Pia Chapman\\",\\"Pia Chapman\\",FEMALE,45,Chapman,Chapman,\\"(empty)\\",Tuesday,1,\\"pia@chapman-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567308,\\"sold_product_567308_16474, sold_product_567308_18779\\",\\"sold_product_567308_16474, sold_product_567308_18779\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"9.344, 15.648\\",\\"16.984, 28.984\\",\\"16,474, 18,779\\",\\"Sweatshirt - grey multicolor, High heeled sandals - silver\\",\\"Sweatshirt - grey multicolor, High heeled sandals - silver\\",\\"1, 1\\",\\"ZO0181601816, ZO0011000110\\",\\"0, 0\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"0, 0\\",\\"ZO0181601816, ZO0011000110\\",\\"45.969\\",\\"45.969\\",2,2,order,pia -7gMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Morrison\\",\\"Abd Morrison\\",MALE,52,Morrison,Morrison,\\"(empty)\\",Tuesday,1,\\"abd@morrison-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567404,\\"sold_product_567404_22845, sold_product_567404_21489\\",\\"sold_product_567404_22845, sold_product_567404_21489\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"25.984, 13.633\\",\\"50, 28.984\\",\\"22,845, 21,489\\",\\"High-top trainers - red, Jeans Tapered Fit - blue denim\\",\\"High-top trainers - red, Jeans Tapered Fit - blue denim\\",\\"1, 1\\",\\"ZO0107101071, ZO0537905379\\",\\"0, 0\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"0, 0\\",\\"ZO0107101071, ZO0537905379\\",79,79,2,2,order,abd -PgMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Hopkins\\",\\"Youssef Hopkins\\",MALE,31,Hopkins,Hopkins,\\"(empty)\\",Tuesday,1,\\"youssef@hopkins-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567538,\\"sold_product_567538_16200, sold_product_567538_17404\\",\\"sold_product_567538_16200, sold_product_567538_17404\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"5.281, 27.594\\",\\"10.992, 60\\",\\"16,200, 17,404\\",\\"Hat - grey, Colorful Cardigan\\",\\"Hat - grey, Colorful Cardigan\\",\\"1, 1\\",\\"ZO0596905969, ZO0450804508\\",\\"0, 0\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"0, 0\\",\\"ZO0596905969, ZO0450804508\\",71,71,2,2,order,youssef -PwMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Abigail,Abigail,\\"Abigail Perry\\",\\"Abigail Perry\\",FEMALE,46,Perry,Perry,\\"(empty)\\",Tuesday,1,\\"abigail@perry-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567593,\\"sold_product_567593_25072, sold_product_567593_17024\\",\\"sold_product_567593_25072, sold_product_567593_17024\\",\\"18.984, 24.984\\",\\"18.984, 24.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"8.93, 12.992\\",\\"18.984, 24.984\\",\\"25,072, 17,024\\",\\"Jumper - off white, Across body bag - black\\",\\"Jumper - off white, Across body bag - black\\",\\"1, 1\\",\\"ZO0655306553, ZO0208902089\\",\\"0, 0\\",\\"18.984, 24.984\\",\\"18.984, 24.984\\",\\"0, 0\\",\\"ZO0655306553, ZO0208902089\\",\\"43.969\\",\\"43.969\\",2,2,order,abigail -fQMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Williams\\",\\"Wagdi Williams\\",MALE,15,Williams,Williams,\\"(empty)\\",Tuesday,1,\\"wagdi@williams-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567294,\\"sold_product_567294_21723, sold_product_567294_20325\\",\\"sold_product_567294_21723, sold_product_567294_20325\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"12.992, 10.078\\",\\"24.984, 20.984\\",\\"21,723, 20,325\\",\\"SET - Hat - Medium Slate Blue, Sweatshirt - dark blue\\",\\"SET - Hat - Medium Slate Blue, Sweatshirt - dark blue\\",\\"1, 1\\",\\"ZO0317403174, ZO0457204572\\",\\"0, 0\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"0, 0\\",\\"ZO0317403174, ZO0457204572\\",\\"45.969\\",\\"45.969\\",2,2,order,wagdi -kQMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Underwood\\",\\"Wilhemina St. Underwood\\",FEMALE,17,Underwood,Underwood,\\"(empty)\\",Tuesday,1,\\"wilhemina st.@underwood-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Low Tide Media, Gnomehouse, Pyramidustries, Tigress Enterprises MAMA\\",\\"Low Tide Media, Gnomehouse, Pyramidustries, Tigress Enterprises MAMA\\",\\"Jun 24, 2019 @ 00:00:00.000\\",728256,\\"sold_product_728256_17123, sold_product_728256_19925, sold_product_728256_23613, sold_product_728256_17666\\",\\"sold_product_728256_17123, sold_product_728256_19925, sold_product_728256_23613, sold_product_728256_17666\\",\\"42, 33, 33, 37\\",\\"42, 33, 33, 37\\",\\"Women's Shoes, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Gnomehouse, Pyramidustries, Tigress Enterprises MAMA\\",\\"Low Tide Media, Gnomehouse, Pyramidustries, Tigress Enterprises MAMA\\",\\"22.672, 15.18, 17.156, 19.234\\",\\"42, 33, 33, 37\\",\\"17,123, 19,925, 23,613, 17,666\\",\\"Sandals - black, Jumper - Lemon Chiffon, Platform sandals - black, Summer dress - peacoat\\",\\"Sandals - black, Jumper - Lemon Chiffon, Platform sandals - black, Summer dress - peacoat\\",\\"1, 1, 1, 1\\",\\"ZO0371903719, ZO0352803528, ZO0137501375, ZO0229202292\\",\\"0, 0, 0, 0\\",\\"42, 33, 33, 37\\",\\"42, 33, 33, 37\\",\\"0, 0, 0, 0\\",\\"ZO0371903719, ZO0352803528, ZO0137501375, ZO0229202292\\",145,145,4,4,order,wilhemina -wgMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Thad,Thad,\\"Thad Miller\\",\\"Thad Miller\\",MALE,30,Miller,Miller,\\"(empty)\\",Tuesday,1,\\"thad@miller-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567544,\\"sold_product_567544_18963, sold_product_567544_19459\\",\\"sold_product_567544_18963, sold_product_567544_19459\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"10.078, 7.988\\",\\"20.984, 16.984\\",\\"18,963, 19,459\\",\\"Sweatshirt - white, Long sleeved top - Dark Salmon\\",\\"Sweatshirt - white, Long sleeved top - Dark Salmon\\",\\"1, 1\\",\\"ZO0585005850, ZO0120301203\\",\\"0, 0\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"0, 0\\",\\"ZO0585005850, ZO0120301203\\",\\"37.969\\",\\"37.969\\",2,2,order,thad -wwMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jim,Jim,\\"Jim Stewart\\",\\"Jim Stewart\\",MALE,41,Stewart,Stewart,\\"(empty)\\",Tuesday,1,\\"jim@stewart-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567592,\\"sold_product_567592_2843, sold_product_567592_16403\\",\\"sold_product_567592_2843, sold_product_567592_16403\\",\\"28.984, 200\\",\\"28.984, 200\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"13.344, 98\\",\\"28.984, 200\\",\\"2,843, 16,403\\",\\"Jeans Tapered Fit - washed black, Short coat - light grey\\",\\"Jeans Tapered Fit - washed black, Short coat - light grey\\",\\"1, 1\\",\\"ZO0535405354, ZO0291302913\\",\\"0, 0\\",\\"28.984, 200\\",\\"28.984, 200\\",\\"0, 0\\",\\"ZO0535405354, ZO0291302913\\",229,229,2,2,order,jim -ywMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Betty,Betty,\\"Betty Farmer\\",\\"Betty Farmer\\",FEMALE,44,Farmer,Farmer,\\"(empty)\\",Tuesday,1,\\"betty@farmer-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566942,\\"sold_product_566942_14928, sold_product_566942_23534\\",\\"sold_product_566942_14928, sold_product_566942_23534\\",\\"11.992, 22.984\\",\\"11.992, 22.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"6, 11.719\\",\\"11.992, 22.984\\",\\"14,928, 23,534\\",\\"Scarf - red, Jumper dress - dark green\\",\\"Scarf - red, Jumper dress - dark green\\",\\"1, 1\\",\\"ZO0084000840, ZO0636606366\\",\\"0, 0\\",\\"11.992, 22.984\\",\\"11.992, 22.984\\",\\"0, 0\\",\\"ZO0084000840, ZO0636606366\\",\\"34.969\\",\\"34.969\\",2,2,order,betty -zAMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Foster\\",\\"Youssef Foster\\",MALE,31,Foster,Foster,\\"(empty)\\",Tuesday,1,\\"youssef@foster-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",567015,\\"sold_product_567015_22305, sold_product_567015_11284\\",\\"sold_product_567015_22305, sold_product_567015_11284\\",\\"11.992, 20.984\\",\\"11.992, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"5.879, 10.078\\",\\"11.992, 20.984\\",\\"22,305, 11,284\\",\\"Print T-shirt - white, Chinos - dark blue\\",\\"Print T-shirt - white, Chinos - dark blue\\",\\"1, 1\\",\\"ZO0558605586, ZO0527805278\\",\\"0, 0\\",\\"11.992, 20.984\\",\\"11.992, 20.984\\",\\"0, 0\\",\\"ZO0558605586, ZO0527805278\\",\\"32.969\\",\\"32.969\\",2,2,order,youssef -zQMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,Sonya,Sonya,\\"Sonya Hopkins\\",\\"Sonya Hopkins\\",FEMALE,28,Hopkins,Hopkins,\\"(empty)\\",Tuesday,1,\\"sonya@hopkins-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",Pyramidustries,Pyramidustries,\\"Jun 24, 2019 @ 00:00:00.000\\",567081,\\"sold_product_567081_25066, sold_product_567081_13016\\",\\"sold_product_567081_25066, sold_product_567081_13016\\",\\"13.992, 24.984\\",\\"13.992, 24.984\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"7.41, 11.75\\",\\"13.992, 24.984\\",\\"25,066, 13,016\\",\\"Across body bag - red, Tote bag - cognac\\",\\"Across body bag - red, Tote bag - cognac\\",\\"1, 1\\",\\"ZO0209702097, ZO0186301863\\",\\"0, 0\\",\\"13.992, 24.984\\",\\"13.992, 24.984\\",\\"0, 0\\",\\"ZO0209702097, ZO0186301863\\",\\"38.969\\",\\"38.969\\",2,2,order,sonya -SgMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Irwin,Irwin,\\"Irwin Hayes\\",\\"Irwin Hayes\\",MALE,14,Hayes,Hayes,\\"(empty)\\",Tuesday,1,\\"irwin@hayes-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",567475,\\"sold_product_567475_21824, sold_product_567475_23277\\",\\"sold_product_567475_21824, sold_product_567475_23277\\",\\"20.984, 42\\",\\"20.984, 42\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"10.906, 20.578\\",\\"20.984, 42\\",\\"21,824, 23,277\\",\\"Jumper - black, Boots - black\\",\\"Jumper - black, Boots - black\\",\\"1, 1\\",\\"ZO0578805788, ZO0520405204\\",\\"0, 0\\",\\"20.984, 42\\",\\"20.984, 42\\",\\"0, 0\\",\\"ZO0578805788, ZO0520405204\\",\\"62.969\\",\\"62.969\\",2,2,order,irwin -SwMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Abigail,Abigail,\\"Abigail Adams\\",\\"Abigail Adams\\",FEMALE,46,Adams,Adams,\\"(empty)\\",Tuesday,1,\\"abigail@adams-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567631,\\"sold_product_567631_18119, sold_product_567631_5772\\",\\"sold_product_567631_18119, sold_product_567631_5772\\",\\"6.988, 65\\",\\"6.988, 65\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"3.289, 33.781\\",\\"6.988, 65\\",\\"18,119, 5,772\\",\\"2 PACK - Socks - red/grey, Classic heels - nude\\",\\"2 PACK - Socks - red/grey, Classic heels - nude\\",\\"1, 1\\",\\"ZO0101101011, ZO0667406674\\",\\"0, 0\\",\\"6.988, 65\\",\\"6.988, 65\\",\\"0, 0\\",\\"ZO0101101011, ZO0667406674\\",72,72,2,2,order,abigail -oAMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Mary,Mary,\\"Mary Gilbert\\",\\"Mary Gilbert\\",FEMALE,20,Gilbert,Gilbert,\\"(empty)\\",Tuesday,1,\\"mary@gilbert-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567454,\\"sold_product_567454_22330, sold_product_567454_8083\\",\\"sold_product_567454_22330, sold_product_567454_8083\\",\\"11.992, 13.992\\",\\"11.992, 13.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"5.52, 7.691\\",\\"11.992, 13.992\\",\\"22,330, 8,083\\",\\"Long sleeved top - off white/navy, Long sleeved top - light blue\\",\\"Long sleeved top - off white/navy, Long sleeved top - light blue\\",\\"1, 1\\",\\"ZO0645406454, ZO0166001660\\",\\"0, 0\\",\\"11.992, 13.992\\",\\"11.992, 13.992\\",\\"0, 0\\",\\"ZO0645406454, ZO0166001660\\",\\"25.984\\",\\"25.984\\",2,2,order,mary -4wMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Sonya,Sonya,\\"Sonya Gilbert\\",\\"Sonya Gilbert\\",FEMALE,28,Gilbert,Gilbert,\\"(empty)\\",Tuesday,1,\\"sonya@gilbert-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567855,\\"sold_product_567855_12032, sold_product_567855_11434\\",\\"sold_product_567855_12032, sold_product_567855_11434\\",\\"21.984, 11.992\\",\\"21.984, 11.992\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"10.781, 6.23\\",\\"21.984, 11.992\\",\\"12,032, 11,434\\",\\"Jeggings - grey denim, Snood - black\\",\\"Jeggings - grey denim, Snood - black\\",\\"1, 1\\",\\"ZO0657106571, ZO0084800848\\",\\"0, 0\\",\\"21.984, 11.992\\",\\"21.984, 11.992\\",\\"0, 0\\",\\"ZO0657106571, ZO0084800848\\",\\"33.969\\",\\"33.969\\",2,2,order,sonya -UwMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Palmer\\",\\"Fitzgerald Palmer\\",MALE,11,Palmer,Palmer,\\"(empty)\\",Tuesday,1,\\"fitzgerald@palmer-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, (empty)\\",\\"Elitelligence, (empty)\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567835,\\"sold_product_567835_12431, sold_product_567835_12612\\",\\"sold_product_567835_12431, sold_product_567835_12612\\",\\"24.984, 165\\",\\"24.984, 165\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, (empty)\\",\\"Elitelligence, (empty)\\",\\"11.25, 89.063\\",\\"24.984, 165\\",\\"12,431, 12,612\\",\\"Hoodie - white, Boots - taupe\\",\\"Hoodie - white, Boots - taupe\\",\\"1, 1\\",\\"ZO0589405894, ZO0483304833\\",\\"0, 0\\",\\"24.984, 165\\",\\"24.984, 165\\",\\"0, 0\\",\\"ZO0589405894, ZO0483304833\\",190,190,2,2,order,fuzzy -VAMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Robert,Robert,\\"Robert Stewart\\",\\"Robert Stewart\\",MALE,29,Stewart,Stewart,\\"(empty)\\",Tuesday,1,\\"robert@stewart-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567889,\\"sold_product_567889_14775, sold_product_567889_15520\\",\\"sold_product_567889_14775, sold_product_567889_15520\\",\\"28.984, 42\\",\\"28.984, 42\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"14.211, 20.156\\",\\"28.984, 42\\",\\"14,775, 15,520\\",\\"Chinos - black, Smart lace-ups - black\\",\\"Chinos - black, Smart lace-ups - black\\",\\"1, 1\\",\\"ZO0282202822, ZO0393003930\\",\\"0, 0\\",\\"28.984, 42\\",\\"28.984, 42\\",\\"0, 0\\",\\"ZO0282202822, ZO0393003930\\",71,71,2,2,order,robert -dAMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Frances,Frances,\\"Frances Goodwin\\",\\"Frances Goodwin\\",FEMALE,49,Goodwin,Goodwin,\\"(empty)\\",Tuesday,1,\\"frances@goodwin-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566852,\\"sold_product_566852_1709, sold_product_566852_11513\\",\\"sold_product_566852_1709, sold_product_566852_11513\\",\\"65, 20.984\\",\\"65, 20.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"35.094, 10.078\\",\\"65, 20.984\\",\\"1,709, 11,513\\",\\"Boots - black, Tracksuit top - bordeaux multicolor\\",\\"Boots - black, Tracksuit top - bordeaux multicolor\\",\\"1, 1\\",\\"ZO0257002570, ZO0455404554\\",\\"0, 0\\",\\"65, 20.984\\",\\"65, 20.984\\",\\"0, 0\\",\\"ZO0257002570, ZO0455404554\\",86,86,2,2,order,frances -dQMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Mccarthy\\",\\"Rabbia Al Mccarthy\\",FEMALE,5,Mccarthy,Mccarthy,\\"(empty)\\",Tuesday,1,\\"rabbia al@mccarthy-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Pyramidustries, Low Tide Media\\",\\"Pyramidustries, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567037,\\"sold_product_567037_16060, sold_product_567037_11158\\",\\"sold_product_567037_16060, sold_product_567037_11158\\",\\"20.984, 42\\",\\"20.984, 42\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Low Tide Media\\",\\"Pyramidustries, Low Tide Media\\",\\"9.867, 22.672\\",\\"20.984, 42\\",\\"16,060, 11,158\\",\\"Clutch - gold, Classic heels - yellow\\",\\"Clutch - gold, Classic heels - yellow\\",\\"1, 1\\",\\"ZO0206402064, ZO0365903659\\",\\"0, 0\\",\\"20.984, 42\\",\\"20.984, 42\\",\\"0, 0\\",\\"ZO0206402064, ZO0365903659\\",\\"62.969\\",\\"62.969\\",2,2,order,rabbia -mAMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Harper\\",\\"Jackson Harper\\",MALE,13,Harper,Harper,\\"(empty)\\",Tuesday,1,\\"jackson@harper-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media, Elitelligence, (empty)\\",\\"Low Tide Media, Elitelligence, (empty)\\",\\"Jun 24, 2019 @ 00:00:00.000\\",721778,\\"sold_product_721778_1710, sold_product_721778_1718, sold_product_721778_12836, sold_product_721778_21677\\",\\"sold_product_721778_1710, sold_product_721778_1718, sold_product_721778_12836, sold_product_721778_21677\\",\\"65, 28.984, 165, 42\\",\\"65, 28.984, 165, 42\\",\\"Men's Shoes, Men's Shoes, Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Shoes, Men's Shoes, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Elitelligence, (empty), Elitelligence\\",\\"Low Tide Media, Elitelligence, (empty), Elitelligence\\",\\"35.094, 15.359, 80.875, 22.25\\",\\"65, 28.984, 165, 42\\",\\"1,710, 1,718, 12,836, 21,677\\",\\"Boots - cognac, Lace-up boots - black, Lace-ups - brown, Light jacket - black\\",\\"Boots - cognac, Lace-up boots - black, Lace-ups - brown, Light jacket - black\\",\\"1, 1, 1, 1\\",\\"ZO0400004000, ZO0519305193, ZO0482004820, ZO0540305403\\",\\"0, 0, 0, 0\\",\\"65, 28.984, 165, 42\\",\\"65, 28.984, 165, 42\\",\\"0, 0, 0, 0\\",\\"ZO0400004000, ZO0519305193, ZO0482004820, ZO0540305403\\",301,301,4,4,order,jackson -2QMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Eddie,Eddie,\\"Eddie Foster\\",\\"Eddie Foster\\",MALE,38,Foster,Foster,\\"(empty)\\",Tuesday,1,\\"eddie@foster-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567143,\\"sold_product_567143_11605, sold_product_567143_16593\\",\\"sold_product_567143_11605, sold_product_567143_16593\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"11.75, 9.453\\",\\"24.984, 20.984\\",\\"11,605, 16,593\\",\\"Jumper - navy/offwhite/black, Wallet - brown\\",\\"Jumper - navy/offwhite/black, Wallet - brown\\",\\"1, 1\\",\\"ZO0573005730, ZO0313203132\\",\\"0, 0\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"0, 0\\",\\"ZO0573005730, ZO0313203132\\",\\"45.969\\",\\"45.969\\",2,2,order,eddie -2gMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Love\\",\\"Fitzgerald Love\\",MALE,11,Love,Love,\\"(empty)\\",Tuesday,1,\\"fitzgerald@love-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567191,\\"sold_product_567191_20587, sold_product_567191_16436\\",\\"sold_product_567191_20587, sold_product_567191_16436\\",\\"42, 13.992\\",\\"42, 13.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"22.672, 6.578\\",\\"42, 13.992\\",\\"20,587, 16,436\\",\\"Slim fit jeans - black denim, Pyjama bottoms - blue\\",\\"Slim fit jeans - black denim, Pyjama bottoms - blue\\",\\"1, 1\\",\\"ZO0113901139, ZO0478904789\\",\\"0, 0\\",\\"42, 13.992\\",\\"42, 13.992\\",\\"0, 0\\",\\"ZO0113901139, ZO0478904789\\",\\"55.969\\",\\"55.969\\",2,2,order,fuzzy -IQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Graves\\",\\"Wagdi Graves\\",MALE,15,Graves,Graves,\\"(empty)\\",Tuesday,1,\\"wagdi@graves-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",567135,\\"sold_product_567135_24487, sold_product_567135_13221\\",\\"sold_product_567135_24487, sold_product_567135_13221\\",\\"20.984, 7.988\\",\\"20.984, 7.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"10.906, 4.309\\",\\"20.984, 7.988\\",\\"24,487, 13,221\\",\\"Chinos - grey, Print T-shirt - white/dark blue\\",\\"Chinos - grey, Print T-shirt - white/dark blue\\",\\"1, 1\\",\\"ZO0528305283, ZO0549305493\\",\\"0, 0\\",\\"20.984, 7.988\\",\\"20.984, 7.988\\",\\"0, 0\\",\\"ZO0528305283, ZO0549305493\\",\\"28.984\\",\\"28.984\\",2,2,order,wagdi -UQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Martin\\",\\"Elyssa Martin\\",FEMALE,27,Martin,Martin,\\"(empty)\\",Tuesday,1,\\"elyssa@martin-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Spherecords Curvy, Gnomehouse\\",\\"Tigress Enterprises, Spherecords Curvy, Gnomehouse\\",\\"Jun 24, 2019 @ 00:00:00.000\\",727730,\\"sold_product_727730_17183, sold_product_727730_23436, sold_product_727730_25006, sold_product_727730_19624\\",\\"sold_product_727730_17183, sold_product_727730_23436, sold_product_727730_25006, sold_product_727730_19624\\",\\"28.984, 14.992, 34, 50\\",\\"28.984, 14.992, 34, 50\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises, Spherecords Curvy, Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Spherecords Curvy, Tigress Enterprises, Gnomehouse\\",\\"13.922, 7.199, 17, 27.484\\",\\"28.984, 14.992, 34, 50\\",\\"17,183, 23,436, 25,006, 19,624\\",\\"Shift dress - black/gold, Blouse - grey, Boots - cognac, Dress - inca gold\\",\\"Shift dress - black/gold, Blouse - grey, Boots - cognac, Dress - inca gold\\",\\"1, 1, 1, 1\\",\\"ZO0050600506, ZO0710907109, ZO0023300233, ZO0334603346\\",\\"0, 0, 0, 0\\",\\"28.984, 14.992, 34, 50\\",\\"28.984, 14.992, 34, 50\\",\\"0, 0, 0, 0\\",\\"ZO0050600506, ZO0710907109, ZO0023300233, ZO0334603346\\",\\"127.938\\",\\"127.938\\",4,4,order,elyssa -ywMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Tariq,Tariq,\\"Tariq Jimenez\\",\\"Tariq Jimenez\\",MALE,25,Jimenez,Jimenez,\\"(empty)\\",Tuesday,1,\\"tariq@jimenez-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567939,\\"sold_product_567939_12984, sold_product_567939_3061\\",\\"sold_product_567939_12984, sold_product_567939_3061\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"6.352, 12\\",\\"11.992, 24.984\\",\\"12,984, 3,061\\",\\"Scarf - black/grey, Jeans Skinny Fit - dark blue\\",\\"Scarf - black/grey, Jeans Skinny Fit - dark blue\\",\\"1, 1\\",\\"ZO0127201272, ZO0425504255\\",\\"0, 0\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"0, 0\\",\\"ZO0127201272, ZO0425504255\\",\\"36.969\\",\\"36.969\\",2,2,order,tariq -zAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Irwin,Irwin,\\"Irwin Baker\\",\\"Irwin Baker\\",MALE,14,Baker,Baker,\\"(empty)\\",Tuesday,1,\\"irwin@baker-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567970,\\"sold_product_567970_23856, sold_product_567970_21614\\",\\"sold_product_567970_23856, sold_product_567970_21614\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"5.398, 31.844\\",\\"11.992, 65\\",\\"23,856, 21,614\\",\\"Polo shirt - dark grey multicolor, Casual lace-ups - taupe\\",\\"Polo shirt - dark grey multicolor, Casual lace-ups - taupe\\",\\"1, 1\\",\\"ZO0441504415, ZO0691606916\\",\\"0, 0\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"0, 0\\",\\"ZO0441504415, ZO0691606916\\",77,77,2,2,order,irwin -HgMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Garner\\",\\"Robbie Garner\\",MALE,48,Garner,Garner,\\"(empty)\\",Tuesday,1,\\"robbie@garner-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567301,\\"sold_product_567301_15025, sold_product_567301_24034\\",\\"sold_product_567301_15025, sold_product_567301_24034\\",\\"24.984, 10.992\\",\\"24.984, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"12.992, 5.711\\",\\"24.984, 10.992\\",\\"15,025, 24,034\\",\\"Jumper - black, Print T-shirt - blue/dark blue\\",\\"Jumper - black, Print T-shirt - blue/dark blue\\",\\"1, 1\\",\\"ZO0577605776, ZO0438104381\\",\\"0, 0\\",\\"24.984, 10.992\\",\\"24.984, 10.992\\",\\"0, 0\\",\\"ZO0577605776, ZO0438104381\\",\\"35.969\\",\\"35.969\\",2,2,order,robbie -TgMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Allison\\",\\"Yuri Allison\\",MALE,21,Allison,Allison,\\"(empty)\\",Tuesday,1,\\"yuri@allison-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566801,\\"sold_product_566801_10990, sold_product_566801_11992\\",\\"sold_product_566801_10990, sold_product_566801_11992\\",\\"25.984, 22.984\\",\\"25.984, 22.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"13.508, 10.813\\",\\"25.984, 22.984\\",\\"10,990, 11,992\\",\\"Shirt - aubergine, Jumper - grey multicolor\\",\\"Shirt - aubergine, Jumper - grey multicolor\\",\\"1, 1\\",\\"ZO0279702797, ZO0573705737\\",\\"0, 0\\",\\"25.984, 22.984\\",\\"25.984, 22.984\\",\\"0, 0\\",\\"ZO0279702797, ZO0573705737\\",\\"48.969\\",\\"48.969\\",2,2,order,yuri -WgMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Goodwin\\",\\"Yuri Goodwin\\",MALE,21,Goodwin,Goodwin,\\"(empty)\\",Tuesday,1,\\"yuri@goodwin-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566685,\\"sold_product_566685_18957, sold_product_566685_20093\\",\\"sold_product_566685_18957, sold_product_566685_20093\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"11.75, 9.656\\",\\"24.984, 20.984\\",\\"18,957, 20,093\\",\\"Jumper - black, Tracksuit bottoms - mottled light grey\\",\\"Jumper - black, Tracksuit bottoms - mottled light grey\\",\\"1, 1\\",\\"ZO0296902969, ZO0530205302\\",\\"0, 0\\",\\"24.984, 20.984\\",\\"24.984, 20.984\\",\\"0, 0\\",\\"ZO0296902969, ZO0530205302\\",\\"45.969\\",\\"45.969\\",2,2,order,yuri -WwMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Mary,Mary,\\"Mary Hansen\\",\\"Mary Hansen\\",FEMALE,20,Hansen,Hansen,\\"(empty)\\",Tuesday,1,\\"mary@hansen-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Pyramidustries\\",\\"Angeldale, Pyramidustries\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566924,\\"sold_product_566924_17824, sold_product_566924_24036\\",\\"sold_product_566924_17824, sold_product_566924_24036\\",\\"75, 13.992\\",\\"75, 13.992\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Pyramidustries\\",\\"Angeldale, Pyramidustries\\",\\"35.25, 6.301\\",\\"75, 13.992\\",\\"17,824, 24,036\\",\\"Ankle boots - light brown, Print T-shirt - light grey multicolor\\",\\"Ankle boots - light brown, Print T-shirt - light grey multicolor\\",\\"1, 1\\",\\"ZO0673606736, ZO0161801618\\",\\"0, 0\\",\\"75, 13.992\\",\\"75, 13.992\\",\\"0, 0\\",\\"ZO0673606736, ZO0161801618\\",89,89,2,2,order,mary -cQMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Lambert\\",\\"Fitzgerald Lambert\\",MALE,11,Lambert,Lambert,\\"(empty)\\",Tuesday,1,\\"fitzgerald@lambert-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Spritechnologies\\",\\"Oceanavigations, Spritechnologies\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567662,\\"sold_product_567662_24046, sold_product_567662_19131\\",\\"sold_product_567662_24046, sold_product_567662_19131\\",\\"11.992, 33\\",\\"11.992, 33\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Spritechnologies\\",\\"Oceanavigations, Spritechnologies\\",\\"5.762, 16.172\\",\\"11.992, 33\\",\\"24,046, 19,131\\",\\"Hat - black, Neutral running shoes - black/yellow\\",\\"Hat - black, Neutral running shoes - black/yellow\\",\\"1, 1\\",\\"ZO0308903089, ZO0614306143\\",\\"0, 0\\",\\"11.992, 33\\",\\"11.992, 33\\",\\"0, 0\\",\\"ZO0308903089, ZO0614306143\\",\\"44.969\\",\\"44.969\\",2,2,order,fuzzy -cgMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,Mary,Mary,\\"Mary Reese\\",\\"Mary Reese\\",FEMALE,20,Reese,Reese,\\"(empty)\\",Tuesday,1,\\"mary@reese-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567708,\\"sold_product_567708_21991, sold_product_567708_14420\\",\\"sold_product_567708_21991, sold_product_567708_14420\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"12.492, 19.313\\",\\"24.984, 42\\",\\"21,991, 14,420\\",\\"Rucksack - black, Across body bag - black\\",\\"Rucksack - black, Across body bag - black\\",\\"1, 1\\",\\"ZO0090500905, ZO0466204662\\",\\"0, 0\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"0, 0\\",\\"ZO0090500905, ZO0466204662\\",67,67,2,2,order,mary -yQMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Dennis\\",\\"Gwen Dennis\\",FEMALE,26,Dennis,Dennis,\\"(empty)\\",Tuesday,1,\\"gwen@dennis-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Pyramidustries, Gnomehouse\\",\\"Pyramidustries, Gnomehouse\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567573,\\"sold_product_567573_18097, sold_product_567573_23199\\",\\"sold_product_567573_18097, sold_product_567573_23199\\",\\"11.992, 42\\",\\"11.992, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Gnomehouse\\",\\"Pyramidustries, Gnomehouse\\",\\"5.879, 20.156\\",\\"11.992, 42\\",\\"18,097, 23,199\\",\\"7 PACK - Socks - multicoloured, Dress - navy blazer\\",\\"7 PACK - Socks - multicoloured, Dress - navy blazer\\",\\"1, 1\\",\\"ZO0215602156, ZO0336803368\\",\\"0, 0\\",\\"11.992, 42\\",\\"11.992, 42\\",\\"0, 0\\",\\"ZO0215602156, ZO0336803368\\",\\"53.969\\",\\"53.969\\",2,2,order,gwen -AQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Banks\\",\\"Jackson Banks\\",MALE,13,Banks,Banks,\\"(empty)\\",Tuesday,1,\\"jackson@banks-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Angeldale, Elitelligence, Low Tide Media\\",\\"Angeldale, Elitelligence, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",717603,\\"sold_product_717603_12011, sold_product_717603_6533, sold_product_717603_6991, sold_product_717603_6182\\",\\"sold_product_717603_12011, sold_product_717603_6533, sold_product_717603_6991, sold_product_717603_6182\\",\\"55, 28.984, 38, 10.992\\",\\"55, 28.984, 38, 10.992\\",\\"Men's Shoes, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Men's Shoes, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Angeldale, Elitelligence, Low Tide Media, Elitelligence\\",\\"Angeldale, Elitelligence, Low Tide Media, Elitelligence\\",\\"28.047, 13.344, 20.125, 5.82\\",\\"55, 28.984, 38, 10.992\\",\\"12,011, 6,533, 6,991, 6,182\\",\\"Slip-ons - black, Sweatshirt - black/white/mottled grey, Jumper - dark blue, Print T-shirt - white\\",\\"Slip-ons - black, Sweatshirt - black/white/mottled grey, Jumper - dark blue, Print T-shirt - white\\",\\"1, 1, 1, 1\\",\\"ZO0685306853, ZO0585305853, ZO0450504505, ZO0552405524\\",\\"0, 0, 0, 0\\",\\"55, 28.984, 38, 10.992\\",\\"55, 28.984, 38, 10.992\\",\\"0, 0, 0, 0\\",\\"ZO0685306853, ZO0585305853, ZO0450504505, ZO0552405524\\",133,133,4,4,order,jackson -HQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Padilla\\",\\"Wilhemina St. Padilla\\",FEMALE,17,Padilla,Padilla,\\"(empty)\\",Tuesday,1,\\"wilhemina st.@padilla-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Primemaster, Tigress Enterprises\\",\\"Primemaster, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566986,\\"sold_product_566986_11438, sold_product_566986_5014\\",\\"sold_product_566986_11438, sold_product_566986_5014\\",\\"75, 33\\",\\"75, 33\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Primemaster, Tigress Enterprises\\",\\"Primemaster, Tigress Enterprises\\",\\"39.75, 15.18\\",\\"75, 33\\",\\"11,438, 5,014\\",\\"High heeled sandals - Midnight Blue, Boots - cognac\\",\\"High heeled sandals - Midnight Blue, Boots - cognac\\",\\"1, 1\\",\\"ZO0360903609, ZO0030100301\\",\\"0, 0\\",\\"75, 33\\",\\"75, 33\\",\\"0, 0\\",\\"ZO0360903609, ZO0030100301\\",108,108,2,2,order,wilhemina -HgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Rice\\",\\"Clarice Rice\\",FEMALE,18,Rice,Rice,\\"(empty)\\",Tuesday,1,\\"clarice@rice-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566735,\\"sold_product_566735_24785, sold_product_566735_19239\\",\\"sold_product_566735_24785, sold_product_566735_19239\\",\\"16.984, 24.984\\",\\"16.984, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"9.172, 12.992\\",\\"16.984, 24.984\\",\\"24,785, 19,239\\",\\"Tracksuit bottoms - dark grey multicolor, Long sleeved top - black\\",\\"Tracksuit bottoms - dark grey multicolor, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0632406324, ZO0060300603\\",\\"0, 0\\",\\"16.984, 24.984\\",\\"16.984, 24.984\\",\\"0, 0\\",\\"ZO0632406324, ZO0060300603\\",\\"41.969\\",\\"41.969\\",2,2,order,clarice -HwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Mostafa,Mostafa,\\"Mostafa Conner\\",\\"Mostafa Conner\\",MALE,9,Conner,Conner,\\"(empty)\\",Tuesday,1,\\"mostafa@conner-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567082,\\"sold_product_567082_18373, sold_product_567082_15037\\",\\"sold_product_567082_18373, sold_product_567082_15037\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"13.492, 12.992\\",\\"24.984, 24.984\\",\\"18,373, 15,037\\",\\"Shirt - grey, Trainers - dusty blue\\",\\"Shirt - grey, Trainers - dusty blue\\",\\"1, 1\\",\\"ZO0278802788, ZO0515605156\\",\\"0, 0\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"0, 0\\",\\"ZO0278802788, ZO0515605156\\",\\"49.969\\",\\"49.969\\",2,2,order,mostafa -IAMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Irwin,Irwin,\\"Irwin Potter\\",\\"Irwin Potter\\",MALE,14,Potter,Potter,\\"(empty)\\",Tuesday,1,\\"irwin@potter-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566881,\\"sold_product_566881_16129, sold_product_566881_19224\\",\\"sold_product_566881_16129, sold_product_566881_19224\\",\\"24.984, 14.992\\",\\"24.984, 14.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"12.492, 8.094\\",\\"24.984, 14.992\\",\\"16,129, 19,224\\",\\"Trousers - navy, Long sleeved top - white/blue/red\\",\\"Trousers - navy, Long sleeved top - white/blue/red\\",\\"1, 1\\",\\"ZO0419604196, ZO0559705597\\",\\"0, 0\\",\\"24.984, 14.992\\",\\"24.984, 14.992\\",\\"0, 0\\",\\"ZO0419604196, ZO0559705597\\",\\"39.969\\",\\"39.969\\",2,2,order,irwin -YwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Mary,Mary,\\"Mary Reese\\",\\"Mary Reese\\",FEMALE,20,Reese,Reese,\\"(empty)\\",Tuesday,1,\\"mary@reese-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Spherecords\\",\\"Angeldale, Spherecords\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566790,\\"sold_product_566790_18851, sold_product_566790_22361\\",\\"sold_product_566790_18851, sold_product_566790_22361\\",\\"65, 10.992\\",\\"65, 10.992\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Spherecords\\",\\"Angeldale, Spherecords\\",\\"31.844, 4.949\\",\\"65, 10.992\\",\\"18,851, 22,361\\",\\"Tote bag - black, Long sleeved top - black\\",\\"Tote bag - black, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0699206992, ZO0641306413\\",\\"0, 0\\",\\"65, 10.992\\",\\"65, 10.992\\",\\"0, 0\\",\\"ZO0699206992, ZO0641306413\\",76,76,2,2,order,mary -bwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie Gomez\\",\\"Eddie Gomez\\",MALE,38,Gomez,Gomez,\\"(empty)\\",Tuesday,1,\\"eddie@gomez-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566706,\\"sold_product_566706_1717, sold_product_566706_17829\\",\\"sold_product_566706_1717, sold_product_566706_17829\\",\\"46, 10.992\\",\\"46, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"23.453, 5.602\\",\\"46, 10.992\\",\\"1,717, 17,829\\",\\"Boots - grey, 3 PACK - Socks - khaki/grey\\",\\"Boots - grey, 3 PACK - Socks - khaki/grey\\",\\"1, 1\\",\\"ZO0521505215, ZO0130501305\\",\\"0, 0\\",\\"46, 10.992\\",\\"46, 10.992\\",\\"0, 0\\",\\"ZO0521505215, ZO0130501305\\",\\"56.969\\",\\"56.969\\",2,2,order,eddie -cAMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Phil,Phil,\\"Phil Boone\\",\\"Phil Boone\\",MALE,50,Boone,Boone,\\"(empty)\\",Tuesday,1,\\"phil@boone-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566935,\\"sold_product_566935_7024, sold_product_566935_20507\\",\\"sold_product_566935_7024, sold_product_566935_20507\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"9, 15.938\\",\\"16.984, 28.984\\",\\"7,024, 20,507\\",\\"3 PACK - Basic T-shirt - white/black/grey, Jumper - dark green\\",\\"3 PACK - Basic T-shirt - white/black/grey, Jumper - dark green\\",\\"1, 1\\",\\"ZO0473704737, ZO0121501215\\",\\"0, 0\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"0, 0\\",\\"ZO0473704737, ZO0121501215\\",\\"45.969\\",\\"45.969\\",2,2,order,phil -cQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Burton\\",\\"Selena Burton\\",FEMALE,42,Burton,Burton,\\"(empty)\\",Tuesday,1,\\"selena@burton-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566985,\\"sold_product_566985_18522, sold_product_566985_22213\\",\\"sold_product_566985_18522, sold_product_566985_22213\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"25.484, 12.742\\",\\"50, 24.984\\",\\"18,522, 22,213\\",\\"Cocktail dress / Party dress - taupe, Sweatshirt - blue\\",\\"Cocktail dress / Party dress - taupe, Sweatshirt - blue\\",\\"1, 1\\",\\"ZO0044700447, ZO0502105021\\",\\"0, 0\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"0, 0\\",\\"ZO0044700447, ZO0502105021\\",75,75,2,2,order,selena -cgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie Clayton\\",\\"Eddie Clayton\\",MALE,38,Clayton,Clayton,\\"(empty)\\",Tuesday,1,\\"eddie@clayton-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 24, 2019 @ 00:00:00.000\\",566729,\\"sold_product_566729_23918, sold_product_566729_11251\\",\\"sold_product_566729_23918, sold_product_566729_11251\\",\\"7.988, 28.984\\",\\"7.988, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"4.148, 13.633\\",\\"7.988, 28.984\\",\\"23,918, 11,251\\",\\"Print T-shirt - red, Shirt - red/black\\",\\"Print T-shirt - red, Shirt - red/black\\",\\"1, 1\\",\\"ZO0557305573, ZO0110401104\\",\\"0, 0\\",\\"7.988, 28.984\\",\\"7.988, 28.984\\",\\"0, 0\\",\\"ZO0557305573, ZO0110401104\\",\\"36.969\\",\\"36.969\\",2,2,order,eddie -cwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Gwen,Gwen,\\"Gwen Weber\\",\\"Gwen Weber\\",FEMALE,26,Weber,Weber,\\"(empty)\\",Tuesday,1,\\"gwen@weber-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567095,\\"sold_product_567095_18015, sold_product_567095_16489\\",\\"sold_product_567095_18015, sold_product_567095_16489\\",\\"60, 16.984\\",\\"60, 16.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"30, 7.82\\",\\"60, 16.984\\",\\"18,015, 16,489\\",\\"Summer dress - blue fog, Clutch - red \\",\\"Summer dress - blue fog, Clutch - red \\",\\"1, 1\\",\\"ZO0339803398, ZO0098200982\\",\\"0, 0\\",\\"60, 16.984\\",\\"60, 16.984\\",\\"0, 0\\",\\"ZO0339803398, ZO0098200982\\",77,77,2,2,order,gwen -igMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Shaw\\",\\"Elyssa Shaw\\",FEMALE,27,Shaw,Shaw,\\"(empty)\\",Tuesday,1,\\"elyssa@shaw-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Champion Arts, Spherecords, Gnomehouse, Angeldale\\",\\"Champion Arts, Spherecords, Gnomehouse, Angeldale\\",\\"Jun 24, 2019 @ 00:00:00.000\\",724326,\\"sold_product_724326_10916, sold_product_724326_19683, sold_product_724326_24375, sold_product_724326_22263\\",\\"sold_product_724326_10916, sold_product_724326_19683, sold_product_724326_24375, sold_product_724326_22263\\",\\"20.984, 10.992, 42, 75\\",\\"20.984, 10.992, 42, 75\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Champion Arts, Spherecords, Gnomehouse, Angeldale\\",\\"Champion Arts, Spherecords, Gnomehouse, Angeldale\\",\\"10.906, 5.82, 22.672, 35.25\\",\\"20.984, 10.992, 42, 75\\",\\"10,916, 19,683, 24,375, 22,263\\",\\"Sweatshirt - black, 2 PACK - Vest - black/white, Summer dress - soft pink, Platform boots - black\\",\\"Sweatshirt - black, 2 PACK - Vest - black/white, Summer dress - soft pink, Platform boots - black\\",\\"1, 1, 1, 1\\",\\"ZO0499404994, ZO0641606416, ZO0334303343, ZO0676706767\\",\\"0, 0, 0, 0\\",\\"20.984, 10.992, 42, 75\\",\\"20.984, 10.992, 42, 75\\",\\"0, 0, 0, 0\\",\\"ZO0499404994, ZO0641606416, ZO0334303343, ZO0676706767\\",149,149,4,4,order,elyssa -DAMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Ahmed Al\\",\\"Ahmed Al\\",\\"Ahmed Al Cunningham\\",\\"Ahmed Al Cunningham\\",MALE,4,Cunningham,Cunningham,\\"(empty)\\",Tuesday,1,\\"ahmed al@cunningham-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",Elitelligence,Elitelligence,\\"Jun 24, 2019 @ 00:00:00.000\\",567806,\\"sold_product_567806_17139, sold_product_567806_14215\\",\\"sold_product_567806_17139, sold_product_567806_14215\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"11.328, 5.641\\",\\"20.984, 11.992\\",\\"17,139, 14,215\\",\\"Trainers - grey, Print T-shirt - black\\",\\"Trainers - grey, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0517705177, ZO0569305693\\",\\"0, 0\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"0, 0\\",\\"ZO0517705177, ZO0569305693\\",\\"32.969\\",\\"32.969\\",2,2,order,ahmed -fAMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Clarice,Clarice,\\"Clarice Walters\\",\\"Clarice Walters\\",FEMALE,18,Walters,Walters,\\"(empty)\\",Tuesday,1,\\"clarice@walters-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Champion Arts, Oceanavigations\\",\\"Champion Arts, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567973,\\"sold_product_567973_24178, sold_product_567973_13294\\",\\"sold_product_567973_24178, sold_product_567973_13294\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Oceanavigations\\",\\"Champion Arts, Oceanavigations\\",\\"5.762, 34.438\\",\\"11.992, 65\\",\\"24,178, 13,294\\",\\"Print T-shirt - white, Tote bag - Blue Violety\\",\\"Print T-shirt - white, Tote bag - Blue Violety\\",\\"1, 1\\",\\"ZO0495104951, ZO0305903059\\",\\"0, 0\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"0, 0\\",\\"ZO0495104951, ZO0305903059\\",77,77,2,2,order,clarice -qQMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Harper\\",\\"Rabbia Al Harper\\",FEMALE,5,Harper,Harper,\\"(empty)\\",Tuesday,1,\\"rabbia al@harper-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Pyramidustries active\\",\\"Angeldale, Pyramidustries active\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567341,\\"sold_product_567341_5526, sold_product_567341_18975\\",\\"sold_product_567341_5526, sold_product_567341_18975\\",\\"90, 17.984\\",\\"90, 17.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Pyramidustries active\\",\\"Angeldale, Pyramidustries active\\",\\"47.688, 8.992\\",\\"90, 17.984\\",\\"5,526, 18,975\\",\\"Boots - black, Long sleeved top - black\\",\\"Boots - black, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0674506745, ZO0219202192\\",\\"0, 0\\",\\"90, 17.984\\",\\"90, 17.984\\",\\"0, 0\\",\\"ZO0674506745, ZO0219202192\\",108,108,2,2,order,rabbia -tQMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Kamal,Kamal,\\"Kamal Shaw\\",\\"Kamal Shaw\\",MALE,39,Shaw,Shaw,\\"(empty)\\",Tuesday,1,\\"kamal@shaw-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567492,\\"sold_product_567492_14648, sold_product_567492_12310\\",\\"sold_product_567492_14648, sold_product_567492_12310\\",\\"13.992, 17.984\\",\\"13.992, 17.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"6.719, 9.352\\",\\"13.992, 17.984\\",\\"14,648, 12,310\\",\\"Tie - dark grey, Polo shirt - grey\\",\\"Tie - dark grey, Polo shirt - grey\\",\\"1, 1\\",\\"ZO0277302773, ZO0443004430\\",\\"0, 0\\",\\"13.992, 17.984\\",\\"13.992, 17.984\\",\\"0, 0\\",\\"ZO0277302773, ZO0443004430\\",\\"31.984\\",\\"31.984\\",2,2,order,kamal -tgMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Irwin,Irwin,\\"Irwin Jenkins\\",\\"Irwin Jenkins\\",MALE,14,Jenkins,Jenkins,\\"(empty)\\",Tuesday,1,\\"irwin@jenkins-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567654,\\"sold_product_567654_22409, sold_product_567654_1312\\",\\"sold_product_567654_22409, sold_product_567654_1312\\",\\"11.992, 50\\",\\"11.992, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"5.762, 24\\",\\"11.992, 50\\",\\"22,409, 1,312\\",\\"Basic T-shirt - Dark Salmon, Lace-up boots - black\\",\\"Basic T-shirt - Dark Salmon, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0121301213, ZO0399403994\\",\\"0, 0\\",\\"11.992, 50\\",\\"11.992, 50\\",\\"0, 0\\",\\"ZO0121301213, ZO0399403994\\",\\"61.969\\",\\"61.969\\",2,2,order,irwin -uAMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Betty,Betty,\\"Betty Rivera\\",\\"Betty Rivera\\",FEMALE,44,Rivera,Rivera,\\"(empty)\\",Tuesday,1,\\"betty@rivera-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567403,\\"sold_product_567403_20386, sold_product_567403_23991\\",\\"sold_product_567403_20386, sold_product_567403_23991\\",\\"60, 42\\",\\"60, 42\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"30, 19.313\\",\\"60, 42\\",\\"20,386, 23,991\\",\\"Over-the-knee boots - cognac, Trousers - black\\",\\"Over-the-knee boots - cognac, Trousers - black\\",\\"1, 1\\",\\"ZO0138601386, ZO0259202592\\",\\"0, 0\\",\\"60, 42\\",\\"60, 42\\",\\"0, 0\\",\\"ZO0138601386, ZO0259202592\\",102,102,2,2,order,betty -DgMtOW0BH63Xcmy46HPV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Mary,Mary,\\"Mary Hampton\\",\\"Mary Hampton\\",FEMALE,20,Hampton,Hampton,\\"(empty)\\",Tuesday,1,\\"mary@hampton-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Microlutions\\",\\"Tigress Enterprises, Microlutions\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567207,\\"sold_product_567207_17489, sold_product_567207_14916\\",\\"sold_product_567207_17489, sold_product_567207_14916\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Microlutions\\",\\"Tigress Enterprises, Microlutions\\",\\"12, 28.203\\",\\"24.984, 60\\",\\"17,489, 14,916\\",\\"Denim skirt - dark blue denim, Bomber Jacket - black\\",\\"Denim skirt - dark blue denim, Bomber Jacket - black\\",\\"1, 1\\",\\"ZO0033600336, ZO0109401094\\",\\"0, 0\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"0, 0\\",\\"ZO0033600336, ZO0109401094\\",85,85,2,2,order,mary -DwMtOW0BH63Xcmy46HPV,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Hopkins\\",\\"Jackson Hopkins\\",MALE,13,Hopkins,Hopkins,\\"(empty)\\",Tuesday,1,\\"jackson@hopkins-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 24, 2019 @ 00:00:00.000\\",567356,\\"sold_product_567356_13525, sold_product_567356_11169\\",\\"sold_product_567356_13525, sold_product_567356_11169\\",\\"50, 10.992\\",\\"50, 10.992\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",\\"Dec 13, 2016 @ 00:00:00.000, Dec 13, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"24.5, 5.602\\",\\"50, 10.992\\",\\"13,525, 11,169\\",\\"Weekend bag - sand, Tie - grey\\",\\"Weekend bag - sand, Tie - grey\\",\\"1, 1\\",\\"ZO0319503195, ZO0409904099\\",\\"0, 0\\",\\"50, 10.992\\",\\"50, 10.992\\",\\"0, 0\\",\\"ZO0319503195, ZO0409904099\\",\\"60.969\\",\\"60.969\\",2,2,order,jackson -0wMtOW0BH63Xcmy432DJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Oliver,Oliver,\\"Oliver Rios\\",\\"Oliver Rios\\",MALE,7,Rios,Rios,\\"(empty)\\",Monday,0,\\"oliver@rios-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565855,\\"sold_product_565855_19919, sold_product_565855_24502\\",\\"sold_product_565855_19919, sold_product_565855_24502\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"9.867, 12.492\\",\\"20.984, 24.984\\",\\"19,919, 24,502\\",\\"Shirt - dark blue white, Slim fit jeans - raw blue\\",\\"Shirt - dark blue white, Slim fit jeans - raw blue\\",\\"1, 1\\",\\"ZO0417504175, ZO0535205352\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0417504175, ZO0535205352\\",\\"45.969\\",\\"45.969\\",2,2,order,oliver -NgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Ball\\",\\"Sultan Al Ball\\",MALE,19,Ball,Ball,\\"(empty)\\",Monday,0,\\"sultan al@ball-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",Elitelligence,Elitelligence,\\"Jun 23, 2019 @ 00:00:00.000\\",565915,\\"sold_product_565915_13822, sold_product_565915_13150\\",\\"sold_product_565915_13822, sold_product_565915_13150\\",\\"42, 16.984\\",\\"42, 16.984\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"21, 9\\",\\"42, 16.984\\",\\"13,822, 13,150\\",\\"High-top trainers - black, High-top trainers - brown\\",\\"High-top trainers - black, High-top trainers - brown\\",\\"1, 1\\",\\"ZO0515005150, ZO0509805098\\",\\"0, 0\\",\\"42, 16.984\\",\\"42, 16.984\\",\\"0, 0\\",\\"ZO0515005150, ZO0509805098\\",\\"58.969\\",\\"58.969\\",2,2,order,sultan -SAMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Dixon\\",\\"Elyssa Dixon\\",FEMALE,27,Dixon,Dixon,\\"(empty)\\",Monday,0,\\"elyssa@dixon-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566343,\\"sold_product_566343_16050, sold_product_566343_14327\\",\\"sold_product_566343_16050, sold_product_566343_14327\\",\\"28.984, 42\\",\\"28.984, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"14.781, 22.25\\",\\"28.984, 42\\",\\"16,050, 14,327\\",\\"Winter jacket - black, Summer dress - black/Chocolate\\",\\"Winter jacket - black, Summer dress - black/Chocolate\\",\\"1, 1\\",\\"ZO0185101851, ZO0052800528\\",\\"0, 0\\",\\"28.984, 42\\",\\"28.984, 42\\",\\"0, 0\\",\\"ZO0185101851, ZO0052800528\\",71,71,2,2,order,elyssa -SQMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Gwen,Gwen,\\"Gwen Ball\\",\\"Gwen Ball\\",FEMALE,26,Ball,Ball,\\"(empty)\\",Monday,0,\\"gwen@ball-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566400,\\"sold_product_566400_18643, sold_product_566400_24426\\",\\"sold_product_566400_18643, sold_product_566400_24426\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"9.867, 13.633\\",\\"20.984, 28.984\\",\\"18,643, 24,426\\",\\"Handbag - Blue Violety, Slip-ons - nude\\",\\"Handbag - Blue Violety, Slip-ons - nude\\",\\"1, 1\\",\\"ZO0204702047, ZO0009600096\\",\\"0, 0\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"0, 0\\",\\"ZO0204702047, ZO0009600096\\",\\"49.969\\",\\"49.969\\",2,2,order,gwen -aAMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Palmer\\",\\"Gwen Palmer\\",FEMALE,26,Palmer,Palmer,\\"(empty)\\",Monday,0,\\"gwen@palmer-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,Gnomehouse,Gnomehouse,\\"Jun 23, 2019 @ 00:00:00.000\\",565776,\\"sold_product_565776_23882, sold_product_565776_8692\\",\\"sold_product_565776_23882, sold_product_565776_8692\\",\\"33, 29.984\\",\\"33, 29.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Gnomehouse\\",\\"Gnomehouse, Gnomehouse\\",\\"16.813, 13.797\\",\\"33, 29.984\\",\\"23,882, 8,692\\",\\"Long sleeved top - chinese red, Blouse - blue fog\\",\\"Long sleeved top - chinese red, Blouse - blue fog\\",\\"1, 1\\",\\"ZO0343103431, ZO0345803458\\",\\"0, 0\\",\\"33, 29.984\\",\\"33, 29.984\\",\\"0, 0\\",\\"ZO0343103431, ZO0345803458\\",\\"62.969\\",\\"62.969\\",2,2,order,gwen -bgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Greer\\",\\"Yuri Greer\\",MALE,21,Greer,Greer,\\"(empty)\\",Monday,0,\\"yuri@greer-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",Elitelligence,Elitelligence,\\"Jun 23, 2019 @ 00:00:00.000\\",566607,\\"sold_product_566607_3014, sold_product_566607_18884\\",\\"sold_product_566607_3014, sold_product_566607_18884\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"10.492, 9.656\\",\\"20.984, 20.984\\",\\"3,014, 18,884\\",\\"Cardigan - grey multicolor, Sweatshirt - black /white\\",\\"Cardigan - grey multicolor, Sweatshirt - black /white\\",\\"1, 1\\",\\"ZO0572205722, ZO0585205852\\",\\"0, 0\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"0, 0\\",\\"ZO0572205722, ZO0585205852\\",\\"41.969\\",\\"41.969\\",2,2,order,yuri -jgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Cortez\\",\\"Elyssa Cortez\\",FEMALE,27,Cortez,Cortez,\\"(empty)\\",Monday,0,\\"elyssa@cortez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Spherecords\\",\\"Pyramidustries, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565452,\\"sold_product_565452_22934, sold_product_565452_13388\\",\\"sold_product_565452_22934, sold_product_565452_13388\\",\\"42, 14.992\\",\\"42, 14.992\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Spherecords\\",\\"Pyramidustries, Spherecords\\",\\"22.25, 7.352\\",\\"42, 14.992\\",\\"22,934, 13,388\\",\\"High heels - black, 2 PACK - Vest - white/dark blue/dark blue\\",\\"High heels - black, 2 PACK - Vest - white/dark blue/dark blue\\",\\"1, 1\\",\\"ZO0133601336, ZO0643906439\\",\\"0, 0\\",\\"42, 14.992\\",\\"42, 14.992\\",\\"0, 0\\",\\"ZO0133601336, ZO0643906439\\",\\"56.969\\",\\"56.969\\",2,2,order,elyssa -kQMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Smith\\",\\"Abigail Smith\\",FEMALE,46,Smith,Smith,\\"(empty)\\",Monday,0,\\"abigail@smith-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566051,\\"sold_product_566051_16134, sold_product_566051_23328\\",\\"sold_product_566051_16134, sold_product_566051_23328\\",\\"24.984, 50\\",\\"24.984, 50\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"13.492, 26.484\\",\\"24.984, 50\\",\\"16,134, 23,328\\",\\"Cowboy/Biker boots - light grey, Blazer - black\\",\\"Cowboy/Biker boots - light grey, Blazer - black\\",\\"1, 1\\",\\"ZO0025600256, ZO0270202702\\",\\"0, 0\\",\\"24.984, 50\\",\\"24.984, 50\\",\\"0, 0\\",\\"ZO0025600256, ZO0270202702\\",75,75,2,2,order,abigail -qgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Mccarthy\\",\\"Sultan Al Mccarthy\\",MALE,19,Mccarthy,Mccarthy,\\"(empty)\\",Monday,0,\\"sultan al@mccarthy-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565466,\\"sold_product_565466_10951, sold_product_565466_11989\\",\\"sold_product_565466_10951, sold_product_565466_11989\\",\\"42, 45\\",\\"42, 45\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"19.313, 24.734\\",\\"42, 45\\",\\"10,951, 11,989\\",\\"Summer jacket - navy, Light jacket - khaki\\",\\"Summer jacket - navy, Light jacket - khaki\\",\\"1, 1\\",\\"ZO0285402854, ZO0538605386\\",\\"0, 0\\",\\"42, 45\\",\\"42, 45\\",\\"0, 0\\",\\"ZO0285402854, ZO0538605386\\",87,87,2,2,order,sultan -9gMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Riley\\",\\"Mostafa Riley\\",MALE,9,Riley,Riley,\\"(empty)\\",Monday,0,\\"mostafa@riley-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566553,\\"sold_product_566553_18385, sold_product_566553_15343\\",\\"sold_product_566553_18385, sold_product_566553_15343\\",\\"7.988, 60\\",\\"7.988, 60\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"4.07, 32.375\\",\\"7.988, 60\\",\\"18,385, 15,343\\",\\"Basic T-shirt - dark grey multicolor, Parka - khaki\\",\\"Basic T-shirt - dark grey multicolor, Parka - khaki\\",\\"1, 1\\",\\"ZO0435004350, ZO0544005440\\",\\"0, 0\\",\\"7.988, 60\\",\\"7.988, 60\\",\\"0, 0\\",\\"ZO0435004350, ZO0544005440\\",68,68,2,2,order,mostafa -AQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Yasmine,Yasmine,\\"Yasmine Wolfe\\",\\"Yasmine Wolfe\\",FEMALE,43,Wolfe,Wolfe,\\"(empty)\\",Monday,0,\\"yasmine@wolfe-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565446,\\"sold_product_565446_12090, sold_product_565446_12122\\",\\"sold_product_565446_12090, sold_product_565446_12122\\",\\"11.992, 29.984\\",\\"11.992, 29.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"5.641, 15.594\\",\\"11.992, 29.984\\",\\"12,090, 12,122\\",\\"Long sleeved top - black, Winter boots - black\\",\\"Long sleeved top - black, Winter boots - black\\",\\"1, 1\\",\\"ZO0643206432, ZO0140101401\\",\\"0, 0\\",\\"11.992, 29.984\\",\\"11.992, 29.984\\",\\"0, 0\\",\\"ZO0643206432, ZO0140101401\\",\\"41.969\\",\\"41.969\\",2,2,order,yasmine -MQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Carpenter\\",\\"Wagdi Carpenter\\",MALE,15,Carpenter,Carpenter,\\"(empty)\\",Monday,0,\\"wagdi@carpenter-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",Oceanavigations,Oceanavigations,\\"Jun 23, 2019 @ 00:00:00.000\\",566053,\\"sold_product_566053_2650, sold_product_566053_21018\\",\\"sold_product_566053_2650, sold_product_566053_21018\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"13.344, 9.867\\",\\"28.984, 20.984\\",\\"2,650, 21,018\\",\\"Slim fit jeans - black, Jumper - charcoal\\",\\"Slim fit jeans - black, Jumper - charcoal\\",\\"1, 1\\",\\"ZO0284702847, ZO0299202992\\",\\"0, 0\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"0, 0\\",\\"ZO0284702847, ZO0299202992\\",\\"49.969\\",\\"49.969\\",2,2,order,wagdi -UgMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Schultz\\",\\"Jackson Schultz\\",MALE,13,Schultz,Schultz,\\"(empty)\\",Monday,0,\\"jackson@schultz-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565605,\\"sold_product_565605_24934, sold_product_565605_22732\\",\\"sold_product_565605_24934, sold_product_565605_22732\\",\\"50, 33\\",\\"50, 33\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"22.5, 16.172\\",\\"50, 33\\",\\"24,934, 22,732\\",\\"Lace-up boots - resin coffee, Relaxed fit jeans - black denim\\",\\"Lace-up boots - resin coffee, Relaxed fit jeans - black denim\\",\\"1, 1\\",\\"ZO0403504035, ZO0113301133\\",\\"0, 0\\",\\"50, 33\\",\\"50, 33\\",\\"0, 0\\",\\"ZO0403504035, ZO0113301133\\",83,83,2,2,order,jackson -lAMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Abigail,Abigail,\\"Abigail Phelps\\",\\"Abigail Phelps\\",FEMALE,46,Phelps,Phelps,\\"(empty)\\",Monday,0,\\"abigail@phelps-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Gnomehouse, Karmanite\\",\\"Gnomehouse, Karmanite\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566170,\\"sold_product_566170_7278, sold_product_566170_5214\\",\\"sold_product_566170_7278, sold_product_566170_5214\\",\\"65, 85\\",\\"65, 85\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Karmanite\\",\\"Gnomehouse, Karmanite\\",\\"31.844, 43.344\\",\\"65, 85\\",\\"7,278, 5,214\\",\\"Boots - navy, Ankle boots - wood\\",\\"Boots - navy, Ankle boots - wood\\",\\"1, 1\\",\\"ZO0324803248, ZO0703907039\\",\\"0, 0\\",\\"65, 85\\",\\"65, 85\\",\\"0, 0\\",\\"ZO0324803248, ZO0703907039\\",150,150,2,2,order,abigail -lQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Perkins\\",\\"Abd Perkins\\",MALE,52,Perkins,Perkins,\\"(empty)\\",Monday,0,\\"abd@perkins-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566187,\\"sold_product_566187_12028, sold_product_566187_21937\\",\\"sold_product_566187_12028, sold_product_566187_21937\\",\\"7.988, 24.984\\",\\"7.988, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"3.92, 12.742\\",\\"7.988, 24.984\\",\\"12,028, 21,937\\",\\"Vest - light blue multicolor, Sweatshirt - navy multicolor\\",\\"Vest - light blue multicolor, Sweatshirt - navy multicolor\\",\\"1, 1\\",\\"ZO0548905489, ZO0459404594\\",\\"0, 0\\",\\"7.988, 24.984\\",\\"7.988, 24.984\\",\\"0, 0\\",\\"ZO0548905489, ZO0459404594\\",\\"32.969\\",\\"32.969\\",2,2,order,abd -lgMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Frances,Frances,\\"Frances Love\\",\\"Frances Love\\",FEMALE,49,Love,Love,\\"(empty)\\",Monday,0,\\"frances@love-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566125,\\"sold_product_566125_14168, sold_product_566125_13612\\",\\"sold_product_566125_14168, sold_product_566125_13612\\",\\"100, 11.992\\",\\"100, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"48, 6.469\\",\\"100, 11.992\\",\\"14,168, 13,612\\",\\"Classic coat - grey, Basic T-shirt - light red/white\\",\\"Classic coat - grey, Basic T-shirt - light red/white\\",\\"1, 1\\",\\"ZO0433104331, ZO0549505495\\",\\"0, 0\\",\\"100, 11.992\\",\\"100, 11.992\\",\\"0, 0\\",\\"ZO0433104331, ZO0549505495\\",112,112,2,2,order,frances -lwMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Butler\\",\\"Mostafa Butler\\",MALE,9,Butler,Butler,\\"(empty)\\",Monday,0,\\"mostafa@butler-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566156,\\"sold_product_566156_17644, sold_product_566156_17414\\",\\"sold_product_566156_17644, sold_product_566156_17414\\",\\"60, 16.984\\",\\"60, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"29.406, 7.648\\",\\"60, 16.984\\",\\"17,644, 17,414\\",\\"Suit jacket - dark blue, Print T-shirt - black\\",\\"Suit jacket - dark blue, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0424104241, ZO0117901179\\",\\"0, 0\\",\\"60, 16.984\\",\\"60, 16.984\\",\\"0, 0\\",\\"ZO0424104241, ZO0117901179\\",77,77,2,2,order,mostafa -mAMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Stephanie,Stephanie,\\"Stephanie Mckenzie\\",\\"Stephanie Mckenzie\\",FEMALE,6,Mckenzie,Mckenzie,\\"(empty)\\",Monday,0,\\"stephanie@mckenzie-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566100,\\"sold_product_566100_15198, sold_product_566100_22284\\",\\"sold_product_566100_15198, sold_product_566100_22284\\",\\"50, 65\\",\\"50, 65\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"25.484, 31.203\\",\\"50, 65\\",\\"15,198, 22,284\\",\\"Boots - taupe, Classic heels - black\\",\\"Boots - taupe, Classic heels - black\\",\\"1, 1\\",\\"ZO0013400134, ZO0667306673\\",\\"0, 0\\",\\"50, 65\\",\\"50, 65\\",\\"0, 0\\",\\"ZO0013400134, ZO0667306673\\",115,115,2,2,order,stephanie -mQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,George,George,\\"George Boone\\",\\"George Boone\\",MALE,32,Boone,Boone,\\"(empty)\\",Monday,0,\\"george@boone-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566280,\\"sold_product_566280_11862, sold_product_566280_11570\\",\\"sold_product_566280_11862, sold_product_566280_11570\\",\\"22.984, 16.984\\",\\"22.984, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"11.492, 9.172\\",\\"22.984, 16.984\\",\\"11,862, 11,570\\",\\"Jumper - black, Print T-shirt - beige\\",\\"Jumper - black, Print T-shirt - beige\\",\\"1, 1\\",\\"ZO0573205732, ZO0116701167\\",\\"0, 0\\",\\"22.984, 16.984\\",\\"22.984, 16.984\\",\\"0, 0\\",\\"ZO0573205732, ZO0116701167\\",\\"39.969\\",\\"39.969\\",2,2,order,george -mgMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,Youssef,Youssef,\\"Youssef Alvarez\\",\\"Youssef Alvarez\\",MALE,31,Alvarez,Alvarez,\\"(empty)\\",Monday,0,\\"youssef@alvarez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565708,\\"sold_product_565708_24246, sold_product_565708_11444\\",\\"sold_product_565708_24246, sold_product_565708_11444\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"33.781, 13.742\\",\\"65, 24.984\\",\\"24,246, 11,444\\",\\"Lace-up boots - black, Rucksack - black/cognac\\",\\"Lace-up boots - black, Rucksack - black/cognac\\",\\"1, 1\\",\\"ZO0253302533, ZO0605706057\\",\\"0, 0\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"0, 0\\",\\"ZO0253302533, ZO0605706057\\",90,90,2,2,order,youssef -tgMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Thad,Thad,\\"Thad Taylor\\",\\"Thad Taylor\\",MALE,30,Taylor,Taylor,\\"(empty)\\",Monday,0,\\"thad@taylor-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 23, 2019 @ 00:00:00.000\\",565809,\\"sold_product_565809_18321, sold_product_565809_19707\\",\\"sold_product_565809_18321, sold_product_565809_19707\\",\\"12.992, 20.984\\",\\"12.992, 20.984\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"7.141, 10.289\\",\\"12.992, 20.984\\",\\"18,321, 19,707\\",\\"Vest - white/grey, Trainers - black\\",\\"Vest - white/grey, Trainers - black\\",\\"1, 1\\",\\"ZO0557905579, ZO0513705137\\",\\"0, 0\\",\\"12.992, 20.984\\",\\"12.992, 20.984\\",\\"0, 0\\",\\"ZO0557905579, ZO0513705137\\",\\"33.969\\",\\"33.969\\",2,2,order,thad -twMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Clarice,Clarice,\\"Clarice Daniels\\",\\"Clarice Daniels\\",FEMALE,18,Daniels,Daniels,\\"(empty)\\",Monday,0,\\"clarice@daniels-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Pyramidustries active, Angeldale\\",\\"Pyramidustries active, Angeldale\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566256,\\"sold_product_566256_9787, sold_product_566256_18737\\",\\"sold_product_566256_9787, sold_product_566256_18737\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Angeldale\\",\\"Pyramidustries active, Angeldale\\",\\"12.992, 31.844\\",\\"24.984, 65\\",\\"9,787, 18,737\\",\\"Sweatshirt - duffle bag, Lace-ups - black\\",\\"Sweatshirt - duffle bag, Lace-ups - black\\",\\"1, 1\\",\\"ZO0227302273, ZO0668706687\\",\\"0, 0\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"0, 0\\",\\"ZO0227302273, ZO0668706687\\",90,90,2,2,order,clarice -GgMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,Elyssa,Elyssa,\\"Elyssa Chapman\\",\\"Elyssa Chapman\\",FEMALE,27,Chapman,Chapman,\\"(empty)\\",Monday,0,\\"elyssa@chapman-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565639,\\"sold_product_565639_15334, sold_product_565639_18810\\",\\"sold_product_565639_15334, sold_product_565639_18810\\",\\"11.992, 13.992\\",\\"11.992, 13.992\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"5.762, 6.578\\",\\"11.992, 13.992\\",\\"15,334, 18,810\\",\\"Scarf - bordeaux, Wallet - dark turquoise\\",\\"Scarf - bordeaux, Wallet - dark turquoise\\",\\"1, 1\\",\\"ZO0193901939, ZO0080400804\\",\\"0, 0\\",\\"11.992, 13.992\\",\\"11.992, 13.992\\",\\"0, 0\\",\\"ZO0193901939, ZO0080400804\\",\\"25.984\\",\\"25.984\\",2,2,order,elyssa -GwMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie Roberson\\",\\"Eddie Roberson\\",MALE,38,Roberson,Roberson,\\"(empty)\\",Monday,0,\\"eddie@roberson-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565684,\\"sold_product_565684_11098, sold_product_565684_11488\\",\\"sold_product_565684_11098, sold_product_565684_11488\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"8.656, 5.059\\",\\"16.984, 10.992\\",\\"11,098, 11,488\\",\\"Trainers - Blue Violety, Tie - black\\",\\"Trainers - Blue Violety, Tie - black\\",\\"1, 1\\",\\"ZO0507705077, ZO0409804098\\",\\"0, 0\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"0, 0\\",\\"ZO0507705077, ZO0409804098\\",\\"27.984\\",\\"27.984\\",2,2,order,eddie -ngMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty King\\",\\"Betty King\\",FEMALE,44,King,King,\\"(empty)\\",Monday,0,\\"betty@king-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",Oceanavigations,Oceanavigations,\\"Jun 23, 2019 @ 00:00:00.000\\",565945,\\"sold_product_565945_13129, sold_product_565945_14400\\",\\"sold_product_565945_13129, sold_product_565945_14400\\",\\"42, 42\\",\\"42, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"20.578, 22.25\\",\\"42, 42\\",\\"13,129, 14,400\\",\\"Jeans Skinny Fit - dark blue denim, Jumper - white\\",\\"Jeans Skinny Fit - dark blue denim, Jumper - white\\",\\"1, 1\\",\\"ZO0270602706, ZO0269502695\\",\\"0, 0\\",\\"42, 42\\",\\"42, 42\\",\\"0, 0\\",\\"ZO0270602706, ZO0269502695\\",84,84,2,2,order,betty -nwMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Harvey\\",\\"Clarice Harvey\\",FEMALE,18,Harvey,Harvey,\\"(empty)\\",Monday,0,\\"clarice@harvey-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565988,\\"sold_product_565988_12794, sold_product_565988_15193\\",\\"sold_product_565988_12794, sold_product_565988_15193\\",\\"33, 20.984\\",\\"33, 20.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"16.172, 10.289\\",\\"33, 20.984\\",\\"12,794, 15,193\\",\\"Tote bag - cognac, 3 PACK - Long sleeved top - dark grey multicolor/black/white\\",\\"Tote bag - cognac, 3 PACK - Long sleeved top - dark grey multicolor/black/white\\",\\"1, 1\\",\\"ZO0074700747, ZO0645206452\\",\\"0, 0\\",\\"33, 20.984\\",\\"33, 20.984\\",\\"0, 0\\",\\"ZO0074700747, ZO0645206452\\",\\"53.969\\",\\"53.969\\",2,2,order,clarice -pAMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Wagdi,Wagdi,\\"Wagdi Underwood\\",\\"Wagdi Underwood\\",MALE,15,Underwood,Underwood,\\"(empty)\\",Monday,0,\\"wagdi@underwood-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565732,\\"sold_product_565732_16955, sold_product_565732_13808\\",\\"sold_product_565732_16955, sold_product_565732_13808\\",\\"200, 16.984\\",\\"200, 16.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"92, 9.344\\",\\"200, 16.984\\",\\"16,955, 13,808\\",\\"Classic coat - navy, Scarf - red/blue\\",\\"Classic coat - navy, Scarf - red/blue\\",\\"1, 1\\",\\"ZO0291402914, ZO0603006030\\",\\"0, 0\\",\\"200, 16.984\\",\\"200, 16.984\\",\\"0, 0\\",\\"ZO0291402914, ZO0603006030\\",217,217,2,2,order,wagdi -AQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Women's Accessories\\",\\"Men's Clothing, Women's Accessories\\",EUR,Robert,Robert,\\"Robert Cross\\",\\"Robert Cross\\",MALE,29,Cross,Cross,\\"(empty)\\",Monday,0,\\"robert@cross-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566042,\\"sold_product_566042_2775, sold_product_566042_20500\\",\\"sold_product_566042_2775, sold_product_566042_20500\\",\\"28.984, 29.984\\",\\"28.984, 29.984\\",\\"Men's Clothing, Women's Accessories\\",\\"Men's Clothing, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"15.938, 15.594\\",\\"28.984, 29.984\\",\\"2,775, 20,500\\",\\"Jumper - white/dark blue, Rucksack - black\\",\\"Jumper - white/dark blue, Rucksack - black\\",\\"1, 1\\",\\"ZO0451804518, ZO0127901279\\",\\"0, 0\\",\\"28.984, 29.984\\",\\"28.984, 29.984\\",\\"0, 0\\",\\"ZO0451804518, ZO0127901279\\",\\"58.969\\",\\"58.969\\",2,2,order,robert -EwMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Tariq,Tariq,\\"Tariq Swanson\\",\\"Tariq Swanson\\",MALE,25,Swanson,Swanson,\\"(empty)\\",Monday,0,\\"tariq@swanson-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566456,\\"sold_product_566456_14947, sold_product_566456_16714\\",\\"sold_product_566456_14947, sold_product_566456_16714\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"5.93, 11.5\\",\\"10.992, 24.984\\",\\"14,947, 16,714\\",\\"Hat - black, Shorts - ice\\",\\"Hat - black, Shorts - ice\\",\\"1, 1\\",\\"ZO0597105971, ZO0283702837\\",\\"0, 0\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"0, 0\\",\\"ZO0597105971, ZO0283702837\\",\\"35.969\\",\\"35.969\\",2,2,order,tariq -TgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Diane,Diane,\\"Diane Chandler\\",\\"Diane Chandler\\",FEMALE,22,Chandler,Chandler,\\"(empty)\\",Monday,0,\\"diane@chandler-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565542,\\"sold_product_565542_24084, sold_product_565542_19410\\",\\"sold_product_565542_24084, sold_product_565542_19410\\",\\"16.984, 26.984\\",\\"16.984, 26.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"8.828, 13.492\\",\\"16.984, 26.984\\",\\"24,084, 19,410\\",\\"Tights - black/nasturium, Swimsuit - navy\\",\\"Tights - black/nasturium, Swimsuit - navy\\",\\"1, 1\\",\\"ZO0224302243, ZO0359103591\\",\\"0, 0\\",\\"16.984, 26.984\\",\\"16.984, 26.984\\",\\"0, 0\\",\\"ZO0224302243, ZO0359103591\\",\\"43.969\\",\\"43.969\\",2,2,order,diane -XgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Caldwell\\",\\"Rabbia Al Caldwell\\",FEMALE,5,Caldwell,Caldwell,\\"(empty)\\",Monday,0,\\"rabbia al@caldwell-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566121,\\"sold_product_566121_10723, sold_product_566121_12693\\",\\"sold_product_566121_10723, sold_product_566121_12693\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"10.492, 7.82\\",\\"20.984, 16.984\\",\\"10,723, 12,693\\",\\"Sweatshirt - black, Clutch - red\\",\\"Sweatshirt - black, Clutch - red\\",\\"1, 1\\",\\"ZO0227202272, ZO0357003570\\",\\"0, 0\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"0, 0\\",\\"ZO0227202272, ZO0357003570\\",\\"37.969\\",\\"37.969\\",2,2,order,rabbia -XwMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Boris,Boris,\\"Boris Bowers\\",\\"Boris Bowers\\",MALE,36,Bowers,Bowers,\\"(empty)\\",Monday,0,\\"boris@bowers-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Angeldale, Spritechnologies\\",\\"Angeldale, Spritechnologies\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566101,\\"sold_product_566101_738, sold_product_566101_24537\\",\\"sold_product_566101_738, sold_product_566101_24537\\",\\"75, 7.988\\",\\"75, 7.988\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Spritechnologies\\",\\"Angeldale, Spritechnologies\\",\\"39.75, 4.309\\",\\"75, 7.988\\",\\"738, 24,537\\",\\"Lace-up boots - azul, Sports shirt - black\\",\\"Lace-up boots - azul, Sports shirt - black\\",\\"1, 1\\",\\"ZO0691406914, ZO0617806178\\",\\"0, 0\\",\\"75, 7.988\\",\\"75, 7.988\\",\\"0, 0\\",\\"ZO0691406914, ZO0617806178\\",83,83,2,2,order,boris -YAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Bryant\\",\\"Elyssa Bryant\\",FEMALE,27,Bryant,Bryant,\\"(empty)\\",Monday,0,\\"elyssa@bryant-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Angeldale, Pyramidustries active\\",\\"Angeldale, Pyramidustries active\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566653,\\"sold_product_566653_17818, sold_product_566653_18275\\",\\"sold_product_566653_17818, sold_product_566653_18275\\",\\"65, 28.984\\",\\"65, 28.984\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Pyramidustries active\\",\\"Angeldale, Pyramidustries active\\",\\"31.203, 15.359\\",\\"65, 28.984\\",\\"17,818, 18,275\\",\\"Classic heels - ginger, Trainers - white\\",\\"Classic heels - ginger, Trainers - white\\",\\"1, 1\\",\\"ZO0666506665, ZO0216602166\\",\\"0, 0\\",\\"65, 28.984\\",\\"65, 28.984\\",\\"0, 0\\",\\"ZO0666506665, ZO0216602166\\",94,94,2,2,order,elyssa -pwMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Sonya,Sonya,\\"Sonya Mullins\\",\\"Sonya Mullins\\",FEMALE,28,Mullins,Mullins,\\"(empty)\\",Monday,0,\\"sonya@mullins-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565838,\\"sold_product_565838_17639, sold_product_565838_16507\\",\\"sold_product_565838_17639, sold_product_565838_16507\\",\\"37, 16.984\\",\\"37, 16.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"18.5, 9.344\\",\\"37, 16.984\\",\\"17,639, 16,507\\",\\"Blouse - black, Across body bag - gunmetal\\",\\"Blouse - black, Across body bag - gunmetal\\",\\"1, 1\\",\\"ZO0343703437, ZO0207102071\\",\\"0, 0\\",\\"37, 16.984\\",\\"37, 16.984\\",\\"0, 0\\",\\"ZO0343703437, ZO0207102071\\",\\"53.969\\",\\"53.969\\",2,2,order,sonya -qQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Larson\\",\\"Stephanie Larson\\",FEMALE,6,Larson,Larson,\\"(empty)\\",Monday,0,\\"stephanie@larson-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565804,\\"sold_product_565804_23705, sold_product_565804_11330\\",\\"sold_product_565804_23705, sold_product_565804_11330\\",\\"24.984, 50\\",\\"24.984, 50\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"12.492, 25.984\\",\\"24.984, 50\\",\\"23,705, 11,330\\",\\"Clutch - Deep Pink, Short coat - dark grey\\",\\"Clutch - Deep Pink, Short coat - dark grey\\",\\"1, 1\\",\\"ZO0306803068, ZO0174601746\\",\\"0, 0\\",\\"24.984, 50\\",\\"24.984, 50\\",\\"0, 0\\",\\"ZO0306803068, ZO0174601746\\",75,75,2,2,order,stephanie -qgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Youssef,Youssef,\\"Youssef Summers\\",\\"Youssef Summers\\",MALE,31,Summers,Summers,\\"(empty)\\",Monday,0,\\"youssef@summers-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566247,\\"sold_product_566247_864, sold_product_566247_24934\\",\\"sold_product_566247_864, sold_product_566247_24934\\",\\"50, 50\\",\\"50, 50\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"23.5, 22.5\\",\\"50, 50\\",\\"864, 24,934\\",\\"Smart lace-ups - brown, Lace-up boots - resin coffee\\",\\"Smart lace-ups - brown, Lace-up boots - resin coffee\\",\\"1, 1\\",\\"ZO0384903849, ZO0403504035\\",\\"0, 0\\",\\"50, 50\\",\\"50, 50\\",\\"0, 0\\",\\"ZO0384903849, ZO0403504035\\",100,100,2,2,order,youssef -twMtOW0BH63Xcmy44mSR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Muniz,Muniz,\\"Muniz Schultz\\",\\"Muniz Schultz\\",MALE,37,Schultz,Schultz,\\"(empty)\\",Monday,0,\\"muniz@schultz-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Elitelligence,Elitelligence,\\"Jun 23, 2019 @ 00:00:00.000\\",566036,\\"sold_product_566036_21739, sold_product_566036_19292\\",\\"sold_product_566036_21739, sold_product_566036_19292\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"11.117, 12.25\\",\\"20.984, 24.984\\",\\"21,739, 19,292\\",\\"Tracksuit top - mottled grey, Trainers - black\\",\\"Tracksuit top - mottled grey, Trainers - black\\",\\"1, 1\\",\\"ZO0583605836, ZO0510605106\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0583605836, ZO0510605106\\",\\"45.969\\",\\"45.969\\",2,2,order,muniz -1AMtOW0BH63Xcmy44mSR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Rodriguez\\",\\"Elyssa Rodriguez\\",FEMALE,27,Rodriguez,Rodriguez,\\"(empty)\\",Monday,0,\\"elyssa@rodriguez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565459,\\"sold_product_565459_18966, sold_product_565459_22336\\",\\"sold_product_565459_18966, sold_product_565459_22336\\",\\"60, 75\\",\\"60, 75\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"31.188, 39.75\\",\\"60, 75\\",\\"18,966, 22,336\\",\\"High heeled sandals - red, Boots - black\\",\\"High heeled sandals - red, Boots - black\\",\\"1, 1\\",\\"ZO0242302423, ZO0676006760\\",\\"0, 0\\",\\"60, 75\\",\\"60, 75\\",\\"0, 0\\",\\"ZO0242302423, ZO0676006760\\",135,135,2,2,order,elyssa -2gMtOW0BH63Xcmy44mSR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Hansen\\",\\"Elyssa Hansen\\",FEMALE,27,Hansen,Hansen,\\"(empty)\\",Monday,0,\\"elyssa@hansen-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565819,\\"sold_product_565819_11025, sold_product_565819_20135\\",\\"sold_product_565819_11025, sold_product_565819_20135\\",\\"14.992, 11.992\\",\\"14.992, 11.992\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"6.75, 6.109\\",\\"14.992, 11.992\\",\\"11,025, 20,135\\",\\"T-bar sandals - black, Vest - red\\",\\"T-bar sandals - black, Vest - red\\",\\"1, 1\\",\\"ZO0031700317, ZO0157701577\\",\\"0, 0\\",\\"14.992, 11.992\\",\\"14.992, 11.992\\",\\"0, 0\\",\\"ZO0031700317, ZO0157701577\\",\\"26.984\\",\\"26.984\\",2,2,order,elyssa -2wMtOW0BH63Xcmy44mSR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Mullins\\",\\"Wilhemina St. Mullins\\",FEMALE,17,Mullins,Mullins,\\"(empty)\\",Monday,0,\\"wilhemina st.@mullins-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 23, 2019 @ 00:00:00.000\\",731352,\\"sold_product_731352_12880, sold_product_731352_5477, sold_product_731352_13837, sold_product_731352_24675\\",\\"sold_product_731352_12880, sold_product_731352_5477, sold_product_731352_13837, sold_product_731352_24675\\",\\"24.984, 42, 37, 16.984\\",\\"24.984, 42, 37, 16.984\\",\\"Women's Shoes, Women's Shoes, Women's Clothing, Women's Clothing\\",\\"Women's Shoes, Women's Shoes, Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises, Tigress Enterprises, Gnomehouse, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises, Gnomehouse, Tigress Enterprises\\",\\"13.492, 22.25, 18.859, 8.492\\",\\"24.984, 42, 37, 16.984\\",\\"12,880, 5,477, 13,837, 24,675\\",\\"Ankle boots - blue, Over-the-knee boots - taupe, Mini skirt - multicoloured, Vest - black\\",\\"Ankle boots - blue, Over-the-knee boots - taupe, Mini skirt - multicoloured, Vest - black\\",\\"1, 1, 1, 1\\",\\"ZO0018200182, ZO0016100161, ZO0329703297, ZO0057800578\\",\\"0, 0, 0, 0\\",\\"24.984, 42, 37, 16.984\\",\\"24.984, 42, 37, 16.984\\",\\"0, 0, 0, 0\\",\\"ZO0018200182, ZO0016100161, ZO0329703297, ZO0057800578\\",\\"120.938\\",\\"120.938\\",4,4,order,wilhemina -BwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Graham\\",\\"Fitzgerald Graham\\",MALE,11,Graham,Graham,\\"(empty)\\",Monday,0,\\"fitzgerald@graham-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565667,\\"sold_product_565667_19066, sold_product_565667_22279\\",\\"sold_product_565667_19066, sold_product_565667_22279\\",\\"18.984, 50\\",\\"18.984, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"8.547, 23.5\\",\\"18.984, 50\\",\\"19,066, 22,279\\",\\"Tights - black, Casual lace-ups - Sea Green\\",\\"Tights - black, Casual lace-ups - Sea Green\\",\\"1, 1\\",\\"ZO0618706187, ZO0388503885\\",\\"0, 0\\",\\"18.984, 50\\",\\"18.984, 50\\",\\"0, 0\\",\\"ZO0618706187, ZO0388503885\\",69,69,2,2,order,fuzzy -UgMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Sutton\\",\\"Abigail Sutton\\",FEMALE,46,Sutton,Sutton,\\"(empty)\\",Monday,0,\\"abigail@sutton-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565900,\\"sold_product_565900_17711, sold_product_565900_14662\\",\\"sold_product_565900_17711, sold_product_565900_14662\\",\\"34, 16.984\\",\\"34, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"18.016, 8.492\\",\\"34, 16.984\\",\\"17,711, 14,662\\",\\"Blouse - black, Print T-shirt - black\\",\\"Blouse - black, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0266102661, ZO0169701697\\",\\"0, 0\\",\\"34, 16.984\\",\\"34, 16.984\\",\\"0, 0\\",\\"ZO0266102661, ZO0169701697\\",\\"50.969\\",\\"50.969\\",2,2,order,abigail -qgMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Boris,Boris,\\"Boris Rose\\",\\"Boris Rose\\",MALE,36,Rose,Rose,\\"(empty)\\",Monday,0,\\"boris@rose-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566360,\\"sold_product_566360_15319, sold_product_566360_10913\\",\\"sold_product_566360_15319, sold_product_566360_10913\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"15.844, 6.039\\",\\"33, 10.992\\",\\"15,319, 10,913\\",\\"Relaxed fit jeans - grey denim, Long sleeved top - grey/dark blue\\",\\"Relaxed fit jeans - grey denim, Long sleeved top - grey/dark blue\\",\\"1, 1\\",\\"ZO0285102851, ZO0658306583\\",\\"0, 0\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"0, 0\\",\\"ZO0285102851, ZO0658306583\\",\\"43.969\\",\\"43.969\\",2,2,order,boris -qwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Soto\\",\\"Abdulraheem Al Soto\\",MALE,33,Soto,Soto,\\"(empty)\\",Monday,0,\\"abdulraheem al@soto-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566416,\\"sold_product_566416_17928, sold_product_566416_24672\\",\\"sold_product_566416_17928, sold_product_566416_24672\\",\\"50, 21.984\\",\\"50, 21.984\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"23.5, 9.898\\",\\"50, 21.984\\",\\"17,928, 24,672\\",\\"Boots - dark brown, Across body bag - black/cognac\\",\\"Boots - dark brown, Across body bag - black/cognac\\",\\"1, 1\\",\\"ZO0396903969, ZO0607906079\\",\\"0, 0\\",\\"50, 21.984\\",\\"50, 21.984\\",\\"0, 0\\",\\"ZO0396903969, ZO0607906079\\",72,72,2,2,order,abdulraheem -IgMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Hansen\\",\\"Abigail Hansen\\",FEMALE,46,Hansen,Hansen,\\"(empty)\\",Monday,0,\\"abigail@hansen-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565796,\\"sold_product_565796_11879, sold_product_565796_8405\\",\\"sold_product_565796_11879, sold_product_565796_8405\\",\\"7.988, 33\\",\\"7.988, 33\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"4.23, 14.852\\",\\"7.988, 33\\",\\"11,879, 8,405\\",\\"Snood - offwhite/red/black, Long sleeved top - alison white\\",\\"Snood - offwhite/red/black, Long sleeved top - alison white\\",\\"1, 1\\",\\"ZO0081500815, ZO0342603426\\",\\"0, 0\\",\\"7.988, 33\\",\\"7.988, 33\\",\\"0, 0\\",\\"ZO0081500815, ZO0342603426\\",\\"40.969\\",\\"40.969\\",2,2,order,abigail -IwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Samir,Samir,\\"Samir Sherman\\",\\"Samir Sherman\\",MALE,34,Sherman,Sherman,\\"(empty)\\",Monday,0,\\"samir@sherman-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566261,\\"sold_product_566261_20514, sold_product_566261_13193\\",\\"sold_product_566261_20514, sold_product_566261_13193\\",\\"24.984, 85\\",\\"24.984, 85\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"11.5, 42.5\\",\\"24.984, 85\\",\\"20,514, 13,193\\",\\"Jumper - black, Parka - black\\",\\"Jumper - black, Parka - black\\",\\"1, 1\\",\\"ZO0577105771, ZO0289302893\\",\\"0, 0\\",\\"24.984, 85\\",\\"24.984, 85\\",\\"0, 0\\",\\"ZO0577105771, ZO0289302893\\",110,110,2,2,order,samir -QgMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Daniels\\",\\"Robbie Daniels\\",MALE,48,Daniels,Daniels,\\"(empty)\\",Monday,0,\\"robbie@daniels-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565567,\\"sold_product_565567_18531, sold_product_565567_11331\\",\\"sold_product_565567_18531, sold_product_565567_11331\\",\\"11.992, 18.984\\",\\"11.992, 18.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"5.398, 8.93\\",\\"11.992, 18.984\\",\\"18,531, 11,331\\",\\"Basic T-shirt - tan, Tracksuit bottoms - black\\",\\"Basic T-shirt - tan, Tracksuit bottoms - black\\",\\"1, 1\\",\\"ZO0437604376, ZO0618906189\\",\\"0, 0\\",\\"11.992, 18.984\\",\\"11.992, 18.984\\",\\"0, 0\\",\\"ZO0437604376, ZO0618906189\\",\\"30.984\\",\\"30.984\\",2,2,order,robbie -QwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Byrd\\",\\"Brigitte Byrd\\",FEMALE,12,Byrd,Byrd,\\"(empty)\\",Monday,0,\\"brigitte@byrd-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565596,\\"sold_product_565596_19599, sold_product_565596_13051\\",\\"sold_product_565596_19599, sold_product_565596_13051\\",\\"50, 13.992\\",\\"50, 13.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"25.484, 7\\",\\"50, 13.992\\",\\"19,599, 13,051\\",\\"Maxi dress - Pale Violet Red, Print T-shirt - black\\",\\"Maxi dress - Pale Violet Red, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0332903329, ZO0159401594\\",\\"0, 0\\",\\"50, 13.992\\",\\"50, 13.992\\",\\"0, 0\\",\\"ZO0332903329, ZO0159401594\\",\\"63.969\\",\\"63.969\\",2,2,order,brigitte -VgMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Women's Accessories\\",\\"Men's Shoes, Women's Accessories\\",EUR,Abd,Abd,\\"Abd Foster\\",\\"Abd Foster\\",MALE,52,Foster,Foster,\\"(empty)\\",Monday,0,\\"abd@foster-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Elitelligence, Angeldale\\",\\"Low Tide Media, Elitelligence, Angeldale\\",\\"Jun 23, 2019 @ 00:00:00.000\\",717206,\\"sold_product_717206_13588, sold_product_717206_16372, sold_product_717206_20757, sold_product_717206_22434\\",\\"sold_product_717206_13588, sold_product_717206_16372, sold_product_717206_20757, sold_product_717206_22434\\",\\"60, 24.984, 80, 60\\",\\"60, 24.984, 80, 60\\",\\"Men's Shoes, Women's Accessories, Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Women's Accessories, Men's Shoes, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Elitelligence, Angeldale, Low Tide Media\\",\\"Low Tide Media, Elitelligence, Angeldale, Low Tide Media\\",\\"28.797, 12.742, 40.781, 30\\",\\"60, 24.984, 80, 60\\",\\"13,588, 16,372, 20,757, 22,434\\",\\"Lace-ups - cognac, Rucksack - black, Lace-up boots - dark brown, Casual lace-ups - cognac\\",\\"Lace-ups - cognac, Rucksack - black, Lace-up boots - dark brown, Casual lace-ups - cognac\\",\\"1, 1, 1, 1\\",\\"ZO0390403904, ZO0608306083, ZO0690906909, ZO0394403944\\",\\"0, 0, 0, 0\\",\\"60, 24.984, 80, 60\\",\\"60, 24.984, 80, 60\\",\\"0, 0, 0, 0\\",\\"ZO0390403904, ZO0608306083, ZO0690906909, ZO0394403944\\",225,225,4,4,order,abd -ggMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Bailey\\",\\"Abd Bailey\\",MALE,52,Bailey,Bailey,\\"(empty)\\",Monday,0,\\"abd@bailey-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",715081,\\"sold_product_715081_20855, sold_product_715081_15922, sold_product_715081_6851, sold_product_715081_1808\\",\\"sold_product_715081_20855, sold_product_715081_15922, sold_product_715081_6851, sold_product_715081_1808\\",\\"65, 65, 24.984, 50\\",\\"65, 65, 24.984, 50\\",\\"Men's Shoes, Men's Shoes, Men's Clothing, Men's Shoes\\",\\"Men's Shoes, Men's Shoes, Men's Clothing, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Angeldale, Low Tide Media, Low Tide Media, Low Tide Media\\",\\"Angeldale, Low Tide Media, Low Tide Media, Low Tide Media\\",\\"29.906, 32.5, 12.492, 23\\",\\"65, 65, 24.984, 50\\",\\"20,855, 15,922, 6,851, 1,808\\",\\"Lace-up boots - black, Lace-up boots - cognac, SLIM FIT - Formal shirt - dark blue, Lace-up boots - black\\",\\"Lace-up boots - black, Lace-up boots - cognac, SLIM FIT - Formal shirt - dark blue, Lace-up boots - black\\",\\"1, 1, 1, 1\\",\\"ZO0688806888, ZO0399003990, ZO0412404124, ZO0405304053\\",\\"0, 0, 0, 0\\",\\"65, 65, 24.984, 50\\",\\"65, 65, 24.984, 50\\",\\"0, 0, 0, 0\\",\\"ZO0688806888, ZO0399003990, ZO0412404124, ZO0405304053\\",205,205,4,4,order,abd -mwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Mary,Mary,\\"Mary Davidson\\",\\"Mary Davidson\\",FEMALE,20,Davidson,Davidson,\\"(empty)\\",Monday,0,\\"mary@davidson-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Pyramidustries, Gnomehouse\\",\\"Pyramidustries, Gnomehouse\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566428,\\"sold_product_566428_20712, sold_product_566428_18581\\",\\"sold_product_566428_20712, sold_product_566428_18581\\",\\"28.984, 50\\",\\"28.984, 50\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Gnomehouse\\",\\"Pyramidustries, Gnomehouse\\",\\"15.07, 24\\",\\"28.984, 50\\",\\"20,712, 18,581\\",\\"Trainers - black, Summer dress - red ochre\\",\\"Trainers - black, Summer dress - red ochre\\",\\"1, 1\\",\\"ZO0136501365, ZO0339103391\\",\\"0, 0\\",\\"28.984, 50\\",\\"28.984, 50\\",\\"0, 0\\",\\"ZO0136501365, ZO0339103391\\",79,79,2,2,order,mary -zQMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Pia,Pia,\\"Pia Pope\\",\\"Pia Pope\\",FEMALE,45,Pope,Pope,\\"(empty)\\",Monday,0,\\"pia@pope-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566334,\\"sold_product_566334_17905, sold_product_566334_24273\\",\\"sold_product_566334_17905, sold_product_566334_24273\\",\\"28.984, 11.992\\",\\"28.984, 11.992\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"14.781, 6.469\\",\\"28.984, 11.992\\",\\"17,905, 24,273\\",\\"High heeled sandals - Rosy Brown, Jersey dress - beige\\",\\"High heeled sandals - Rosy Brown, Jersey dress - beige\\",\\"1, 1\\",\\"ZO0010800108, ZO0635706357\\",\\"0, 0\\",\\"28.984, 11.992\\",\\"28.984, 11.992\\",\\"0, 0\\",\\"ZO0010800108, ZO0635706357\\",\\"40.969\\",\\"40.969\\",2,2,order,pia -zgMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Jacobs\\",\\"Elyssa Jacobs\\",FEMALE,27,Jacobs,Jacobs,\\"(empty)\\",Monday,0,\\"elyssa@jacobs-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises MAMA, Pyramidustries\\",\\"Tigress Enterprises MAMA, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566391,\\"sold_product_566391_15927, sold_product_566391_15841\\",\\"sold_product_566391_15927, sold_product_566391_15841\\",\\"33, 13.992\\",\\"33, 13.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises MAMA, Pyramidustries\\",\\"Tigress Enterprises MAMA, Pyramidustries\\",\\"15.18, 6.719\\",\\"33, 13.992\\",\\"15,927, 15,841\\",\\"Jersey dress - peacoat, Long sleeved top - black\\",\\"Jersey dress - peacoat, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0228302283, ZO0167501675\\",\\"0, 0\\",\\"33, 13.992\\",\\"33, 13.992\\",\\"0, 0\\",\\"ZO0228302283, ZO0167501675\\",\\"46.969\\",\\"46.969\\",2,2,order,elyssa -IQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Adams\\",\\"Sultan Al Adams\\",MALE,19,Adams,Adams,\\"(empty)\\",Monday,0,\\"sultan al@adams-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 23, 2019 @ 00:00:00.000\\",715133,\\"sold_product_715133_22059, sold_product_715133_13763, sold_product_715133_19774, sold_product_715133_15185\\",\\"sold_product_715133_22059, sold_product_715133_13763, sold_product_715133_19774, sold_product_715133_15185\\",\\"28.984, 16.984, 11.992, 24.984\\",\\"28.984, 16.984, 11.992, 24.984\\",\\"Men's Clothing, Men's Shoes, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Shoes, Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, Elitelligence, Elitelligence, Microlutions\\",\\"Elitelligence, Elitelligence, Elitelligence, Microlutions\\",\\"15.07, 9.344, 5.879, 11.5\\",\\"28.984, 16.984, 11.992, 24.984\\",\\"22,059, 13,763, 19,774, 15,185\\",\\"Relaxed fit jeans - black, Trainers - dark brown, Print T-shirt - black/orange, Tracksuit bottoms - mottled grey\\",\\"Relaxed fit jeans - black, Trainers - dark brown, Print T-shirt - black/orange, Tracksuit bottoms - mottled grey\\",\\"1, 1, 1, 1\\",\\"ZO0537005370, ZO0508605086, ZO0566605666, ZO0111301113\\",\\"0, 0, 0, 0\\",\\"28.984, 16.984, 11.992, 24.984\\",\\"28.984, 16.984, 11.992, 24.984\\",\\"0, 0, 0, 0\\",\\"ZO0537005370, ZO0508605086, ZO0566605666, ZO0111301113\\",\\"82.938\\",\\"82.938\\",4,4,order,sultan -QAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Abd,Abd,\\"Abd Barnes\\",\\"Abd Barnes\\",MALE,52,Barnes,Barnes,\\"(empty)\\",Monday,0,\\"abd@barnes-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",717057,\\"sold_product_717057_18764, sold_product_717057_1195, sold_product_717057_13086, sold_product_717057_13470\\",\\"sold_product_717057_18764, sold_product_717057_1195, sold_product_717057_13086, sold_product_717057_13470\\",\\"65, 60, 50, 15.992\\",\\"65, 60, 50, 15.992\\",\\"Men's Clothing, Men's Shoes, Men's Shoes, Men's Clothing\\",\\"Men's Clothing, Men's Shoes, Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Spritechnologies, Low Tide Media, Low Tide Media, Low Tide Media\\",\\"Spritechnologies, Low Tide Media, Low Tide Media, Low Tide Media\\",\\"30.547, 28.203, 23, 8.313\\",\\"65, 60, 50, 15.992\\",\\"18,764, 1,195, 13,086, 13,470\\",\\"Winter jacket - rubber, Lace-up boots - cognac, Casual lace-ups - light brown, 4 PACK - Shorts - grey\\",\\"Winter jacket - rubber, Lace-up boots - cognac, Casual lace-ups - light brown, 4 PACK - Shorts - grey\\",\\"1, 1, 1, 1\\",\\"ZO0623406234, ZO0404704047, ZO0384603846, ZO0476204762\\",\\"0, 0, 0, 0\\",\\"65, 60, 50, 15.992\\",\\"65, 60, 50, 15.992\\",\\"0, 0, 0, 0\\",\\"ZO0623406234, ZO0404704047, ZO0384603846, ZO0476204762\\",191,191,4,4,order,abd -SQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Diane,Diane,\\"Diane Parker\\",\\"Diane Parker\\",FEMALE,22,Parker,Parker,\\"(empty)\\",Monday,0,\\"diane@parker-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Karmanite, Pyramidustries\\",\\"Karmanite, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566315,\\"sold_product_566315_11724, sold_product_566315_18465\\",\\"sold_product_566315_11724, sold_product_566315_18465\\",\\"65, 42\\",\\"65, 42\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Karmanite, Pyramidustries\\",\\"Karmanite, Pyramidustries\\",\\"33.125, 19.313\\",\\"65, 42\\",\\"11,724, 18,465\\",\\"Sandals - black, Boots - black\\",\\"Sandals - black, Boots - black\\",\\"1, 1\\",\\"ZO0703707037, ZO0139601396\\",\\"0, 0\\",\\"65, 42\\",\\"65, 42\\",\\"0, 0\\",\\"ZO0703707037, ZO0139601396\\",107,107,2,2,order,diane -SgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Cross\\",\\"Abigail Cross\\",FEMALE,46,Cross,Cross,\\"(empty)\\",Monday,0,\\"abigail@cross-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Gnomehouse, Spherecords\\",\\"Gnomehouse, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565698,\\"sold_product_565698_13951, sold_product_565698_21969\\",\\"sold_product_565698_13951, sold_product_565698_21969\\",\\"50, 7.988\\",\\"50, 7.988\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Spherecords\\",\\"Gnomehouse, Spherecords\\",\\"26.484, 3.68\\",\\"50, 7.988\\",\\"13,951, 21,969\\",\\"Summer dress - black, Vest - bordeaux\\",\\"Summer dress - black, Vest - bordeaux\\",\\"1, 1\\",\\"ZO0336503365, ZO0637006370\\",\\"0, 0\\",\\"50, 7.988\\",\\"50, 7.988\\",\\"0, 0\\",\\"ZO0336503365, ZO0637006370\\",\\"57.969\\",\\"57.969\\",2,2,order,abigail -UQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Valdez\\",\\"Wagdi Valdez\\",MALE,15,Valdez,Valdez,\\"(empty)\\",Monday,0,\\"wagdi@valdez-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566167,\\"sold_product_566167_3499, sold_product_566167_13386\\",\\"sold_product_566167_3499, sold_product_566167_13386\\",\\"60, 24.984\\",\\"60, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"28.203, 11.75\\",\\"60, 24.984\\",\\"3,499, 13,386\\",\\"Hardshell jacket - jet black, Trousers - black\\",\\"Hardshell jacket - jet black, Trousers - black\\",\\"1, 1\\",\\"ZO0623006230, ZO0419304193\\",\\"0, 0\\",\\"60, 24.984\\",\\"60, 24.984\\",\\"0, 0\\",\\"ZO0623006230, ZO0419304193\\",85,85,2,2,order,wagdi -UgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Rivera\\",\\"Mostafa Rivera\\",MALE,9,Rivera,Rivera,\\"(empty)\\",Monday,0,\\"mostafa@rivera-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566215,\\"sold_product_566215_864, sold_product_566215_23260\\",\\"sold_product_566215_864, sold_product_566215_23260\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"23.5, 13.742\\",\\"50, 24.984\\",\\"864, 23,260\\",\\"Smart lace-ups - brown, Jumper - khaki\\",\\"Smart lace-ups - brown, Jumper - khaki\\",\\"1, 1\\",\\"ZO0384903849, ZO0579305793\\",\\"0, 0\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"0, 0\\",\\"ZO0384903849, ZO0579305793\\",75,75,2,2,order,mostafa -UwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Mary,Mary,\\"Mary Underwood\\",\\"Mary Underwood\\",FEMALE,20,Underwood,Underwood,\\"(empty)\\",Monday,0,\\"mary@underwood-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566070,\\"sold_product_566070_23447, sold_product_566070_17406\\",\\"sold_product_566070_23447, sold_product_566070_17406\\",\\"33, 33\\",\\"33, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"17.813, 16.813\\",\\"33, 33\\",\\"23,447, 17,406\\",\\"Cocktail dress / Party dress - black, Summer dress - black\\",\\"Cocktail dress / Party dress - black, Summer dress - black\\",\\"1, 1\\",\\"ZO0046100461, ZO0151201512\\",\\"0, 0\\",\\"33, 33\\",\\"33, 33\\",\\"0, 0\\",\\"ZO0046100461, ZO0151201512\\",66,66,2,2,order,mary -VAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Jason,Jason,\\"Jason Jimenez\\",\\"Jason Jimenez\\",MALE,16,Jimenez,Jimenez,\\"(empty)\\",Monday,0,\\"jason@jimenez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566621,\\"sold_product_566621_21825, sold_product_566621_21628\\",\\"sold_product_566621_21825, sold_product_566621_21628\\",\\"20.984, 75\\",\\"20.984, 75\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"10.906, 33.75\\",\\"20.984, 75\\",\\"21,825, 21,628\\",\\"Jumper - khaki, Weekend bag - black\\",\\"Jumper - khaki, Weekend bag - black\\",\\"1, 1\\",\\"ZO0579605796, ZO0315803158\\",\\"0, 0\\",\\"20.984, 75\\",\\"20.984, 75\\",\\"0, 0\\",\\"ZO0579605796, ZO0315803158\\",96,96,2,2,order,jason -VQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Miller\\",\\"Youssef Miller\\",MALE,31,Miller,Miller,\\"(empty)\\",Monday,0,\\"youssef@miller-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 23, 2019 @ 00:00:00.000\\",566284,\\"sold_product_566284_6763, sold_product_566284_11234\\",\\"sold_product_566284_6763, sold_product_566284_11234\\",\\"16.984, 42\\",\\"16.984, 42\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"9, 21.828\\",\\"16.984, 42\\",\\"6,763, 11,234\\",\\"Jumper - black, Tracksuit top - black\\",\\"Jumper - black, Tracksuit top - black\\",\\"1, 1\\",\\"ZO0541405414, ZO0588205882\\",\\"0, 0\\",\\"16.984, 42\\",\\"16.984, 42\\",\\"0, 0\\",\\"ZO0541405414, ZO0588205882\\",\\"58.969\\",\\"58.969\\",2,2,order,youssef -VgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Thad,Thad,\\"Thad Byrd\\",\\"Thad Byrd\\",MALE,30,Byrd,Byrd,\\"(empty)\\",Monday,0,\\"thad@byrd-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 23, 2019 @ 00:00:00.000\\",566518,\\"sold_product_566518_22342, sold_product_566518_14729\\",\\"sold_product_566518_22342, sold_product_566518_14729\\",\\"11.992, 11.992\\",\\"11.992, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"5.762, 5.641\\",\\"11.992, 11.992\\",\\"22,342, 14,729\\",\\"Long sleeved top - mottled grey black, Long sleeved top - black\\",\\"Long sleeved top - mottled grey black, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0554605546, ZO0569005690\\",\\"0, 0\\",\\"11.992, 11.992\\",\\"11.992, 11.992\\",\\"0, 0\\",\\"ZO0554605546, ZO0569005690\\",\\"23.984\\",\\"23.984\\",2,2,order,thad -agMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Tariq,Tariq,\\"Tariq Byrd\\",\\"Tariq Byrd\\",MALE,25,Byrd,Byrd,\\"(empty)\\",Monday,0,\\"tariq@byrd-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565580,\\"sold_product_565580_1927, sold_product_565580_12828\\",\\"sold_product_565580_1927, sold_product_565580_12828\\",\\"60, 60\\",\\"60, 60\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"28.203, 29.406\\",\\"60, 60\\",\\"1,927, 12,828\\",\\"High-top trainers - nyco, Lace-ups - marron\\",\\"High-top trainers - nyco, Lace-ups - marron\\",\\"1, 1\\",\\"ZO0395303953, ZO0386703867\\",\\"0, 0\\",\\"60, 60\\",\\"60, 60\\",\\"0, 0\\",\\"ZO0395303953, ZO0386703867\\",120,120,2,2,order,tariq -cwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Valdez\\",\\"rania Valdez\\",FEMALE,24,Valdez,Valdez,\\"(empty)\\",Monday,0,\\"rania@valdez-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Pyramidustries, Spherecords\\",\\"Pyramidustries, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565830,\\"sold_product_565830_17256, sold_product_565830_23136\\",\\"sold_product_565830_17256, sold_product_565830_23136\\",\\"7.988, 7.988\\",\\"7.988, 7.988\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Spherecords\\",\\"Pyramidustries, Spherecords\\",\\"4.148, 4.309\\",\\"7.988, 7.988\\",\\"17,256, 23,136\\",\\"3 PACK - Socks - off white/pink, Basic T-shirt - purple\\",\\"3 PACK - Socks - off white/pink, Basic T-shirt - purple\\",\\"1, 1\\",\\"ZO0215702157, ZO0638806388\\",\\"0, 0\\",\\"7.988, 7.988\\",\\"7.988, 7.988\\",\\"0, 0\\",\\"ZO0215702157, ZO0638806388\\",\\"15.977\\",\\"15.977\\",2,2,order,rani -GQMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jason,Jason,\\"Jason Morrison\\",\\"Jason Morrison\\",MALE,16,Morrison,Morrison,\\"(empty)\\",Monday,0,\\"jason@morrison-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566454,\\"sold_product_566454_15937, sold_product_566454_1557\\",\\"sold_product_566454_15937, sold_product_566454_1557\\",\\"7.988, 60\\",\\"7.988, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"3.84, 31.188\\",\\"7.988, 60\\",\\"15,937, 1,557\\",\\"Basic T-shirt - dark grey, Lace-up boots - brown\\",\\"Basic T-shirt - dark grey, Lace-up boots - brown\\",\\"1, 1\\",\\"ZO0547405474, ZO0401104011\\",\\"0, 0\\",\\"7.988, 60\\",\\"7.988, 60\\",\\"0, 0\\",\\"ZO0547405474, ZO0401104011\\",68,68,2,2,order,jason -GgMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,Thad,Thad,\\"Thad Larson\\",\\"Thad Larson\\",MALE,30,Larson,Larson,\\"(empty)\\",Monday,0,\\"thad@larson-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566506,\\"sold_product_566506_12060, sold_product_566506_16803\\",\\"sold_product_566506_12060, sold_product_566506_16803\\",\\"50, 16.984\\",\\"50, 16.984\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"25.984, 8.492\\",\\"50, 16.984\\",\\"12,060, 16,803\\",\\"Lace-ups - black/red, Rucksack - grey/black\\",\\"Lace-ups - black/red, Rucksack - grey/black\\",\\"1, 1\\",\\"ZO0680806808, ZO0609306093\\",\\"0, 0\\",\\"50, 16.984\\",\\"50, 16.984\\",\\"0, 0\\",\\"ZO0680806808, ZO0609306093\\",67,67,2,2,order,thad -HAMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Diane,Diane,\\"Diane Romero\\",\\"Diane Romero\\",FEMALE,22,Romero,Romero,\\"(empty)\\",Monday,0,\\"diane@romero-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Pyramidustries, Spherecords\\",\\"Pyramidustries, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565948,\\"sold_product_565948_18390, sold_product_565948_24310\\",\\"sold_product_565948_18390, sold_product_565948_24310\\",\\"10.992, 22.984\\",\\"10.992, 22.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Spherecords\\",\\"Pyramidustries, Spherecords\\",\\"5.93, 10.578\\",\\"10.992, 22.984\\",\\"18,390, 24,310\\",\\"Wallet - black, Jumper - light grey multicolor\\",\\"Wallet - black, Jumper - light grey multicolor\\",\\"1, 1\\",\\"ZO0190701907, ZO0654806548\\",\\"0, 0\\",\\"10.992, 22.984\\",\\"10.992, 22.984\\",\\"0, 0\\",\\"ZO0190701907, ZO0654806548\\",\\"33.969\\",\\"33.969\\",2,2,order,diane -HQMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Morrison\\",\\"Gwen Morrison\\",FEMALE,26,Morrison,Morrison,\\"(empty)\\",Monday,0,\\"gwen@morrison-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565998,\\"sold_product_565998_15531, sold_product_565998_8992\\",\\"sold_product_565998_15531, sold_product_565998_8992\\",\\"65, 20.984\\",\\"65, 20.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"29.906, 10.703\\",\\"65, 20.984\\",\\"15,531, 8,992\\",\\"Classic heels - black, Blouse - black\\",\\"Classic heels - black, Blouse - black\\",\\"1, 1\\",\\"ZO0238802388, ZO0066600666\\",\\"0, 0\\",\\"65, 20.984\\",\\"65, 20.984\\",\\"0, 0\\",\\"ZO0238802388, ZO0066600666\\",86,86,2,2,order,gwen -kAMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Reese\\",\\"Elyssa Reese\\",FEMALE,27,Reese,Reese,\\"(empty)\\",Monday,0,\\"elyssa@reese-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565401,\\"sold_product_565401_24966, sold_product_565401_14951\\",\\"sold_product_565401_24966, sold_product_565401_14951\\",\\"42, 24.984\\",\\"42, 24.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"21.828, 11.75\\",\\"42, 24.984\\",\\"24,966, 14,951\\",\\"High heeled boots - black, Jersey dress - black\\",\\"High heeled boots - black, Jersey dress - black\\",\\"1, 1\\",\\"ZO0014800148, ZO0154501545\\",\\"0, 0\\",\\"42, 24.984\\",\\"42, 24.984\\",\\"0, 0\\",\\"ZO0014800148, ZO0154501545\\",67,67,2,2,order,elyssa -MQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Hopkins\\",\\"Elyssa Hopkins\\",FEMALE,27,Hopkins,Hopkins,\\"(empty)\\",Monday,0,\\"elyssa@hopkins-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Champion Arts, Oceanavigations\\",\\"Champion Arts, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565728,\\"sold_product_565728_22660, sold_product_565728_17747\\",\\"sold_product_565728_22660, sold_product_565728_17747\\",\\"20.984, 75\\",\\"20.984, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Oceanavigations\\",\\"Champion Arts, Oceanavigations\\",\\"11.117, 38.25\\",\\"20.984, 75\\",\\"22,660, 17,747\\",\\"Tracksuit bottoms - dark grey multicolor, Ankle boots - black\\",\\"Tracksuit bottoms - dark grey multicolor, Ankle boots - black\\",\\"1, 1\\",\\"ZO0486404864, ZO0248602486\\",\\"0, 0\\",\\"20.984, 75\\",\\"20.984, 75\\",\\"0, 0\\",\\"ZO0486404864, ZO0248602486\\",96,96,2,2,order,elyssa -DQMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Craig\\",\\"Rabbia Al Craig\\",FEMALE,5,Craig,Craig,\\"(empty)\\",Monday,0,\\"rabbia al@craig-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565489,\\"sold_product_565489_17610, sold_product_565489_23396\\",\\"sold_product_565489_17610, sold_product_565489_23396\\",\\"13.992, 7.988\\",\\"13.992, 7.988\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"7.41, 3.6\\",\\"13.992, 7.988\\",\\"17,610, 23,396\\",\\"Belt - black, Vest - black\\",\\"Belt - black, Vest - black\\",\\"1, 1\\",\\"ZO0077200772, ZO0643006430\\",\\"0, 0\\",\\"13.992, 7.988\\",\\"13.992, 7.988\\",\\"0, 0\\",\\"ZO0077200772, ZO0643006430\\",\\"21.984\\",\\"21.984\\",2,2,order,rabbia -EAMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Padilla\\",\\"Abdulraheem Al Padilla\\",MALE,33,Padilla,Padilla,\\"(empty)\\",Monday,0,\\"abdulraheem al@padilla-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565366,\\"sold_product_565366_2077, sold_product_565366_14547\\",\\"sold_product_565366_2077, sold_product_565366_14547\\",\\"75, 24.984\\",\\"75, 24.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"37.5, 12.25\\",\\"75, 24.984\\",\\"2,077, 14,547\\",\\"Trainers - black, Jumper - camel/black\\",\\"Trainers - black, Jumper - camel/black\\",\\"1, 1\\",\\"ZO0684906849, ZO0575905759\\",\\"0, 0\\",\\"75, 24.984\\",\\"75, 24.984\\",\\"0, 0\\",\\"ZO0684906849, ZO0575905759\\",100,100,2,2,order,abdulraheem -xwMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Women's Accessories\\",\\"Men's Clothing, Women's Accessories\\",EUR,Tariq,Tariq,\\"Tariq Gilbert\\",\\"Tariq Gilbert\\",MALE,25,Gilbert,Gilbert,\\"(empty)\\",Monday,0,\\"tariq@gilbert-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",720445,\\"sold_product_720445_22855, sold_product_720445_19704, sold_product_720445_12699, sold_product_720445_13347\\",\\"sold_product_720445_22855, sold_product_720445_19704, sold_product_720445_12699, sold_product_720445_13347\\",\\"22.984, 13.992, 42, 11.992\\",\\"22.984, 13.992, 42, 11.992\\",\\"Men's Clothing, Men's Clothing, Women's Accessories, Women's Accessories\\",\\"Men's Clothing, Men's Clothing, Women's Accessories, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Oceanavigations, Oceanavigations, Oceanavigations\\",\\"Low Tide Media, Oceanavigations, Oceanavigations, Oceanavigations\\",\\"10.813, 6.859, 22.672, 6.23\\",\\"22.984, 13.992, 42, 11.992\\",\\"22,855, 19,704, 12,699, 13,347\\",\\"Shorts - black, Print T-shirt - grey multicolor, Weekend bag - dessert, Sunglasses - black\\",\\"Shorts - black, Print T-shirt - grey multicolor, Weekend bag - dessert, Sunglasses - black\\",\\"1, 1, 1, 1\\",\\"ZO0423004230, ZO0292702927, ZO0320003200, ZO0318303183\\",\\"0, 0, 0, 0\\",\\"22.984, 13.992, 42, 11.992\\",\\"22.984, 13.992, 42, 11.992\\",\\"0, 0, 0, 0\\",\\"ZO0423004230, ZO0292702927, ZO0320003200, ZO0318303183\\",\\"90.938\\",\\"90.938\\",4,4,order,tariq -0wMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Graham\\",\\"Youssef Graham\\",MALE,31,Graham,Graham,\\"(empty)\\",Monday,0,\\"youssef@graham-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565768,\\"sold_product_565768_19338, sold_product_565768_19206\\",\\"sold_product_565768_19338, sold_product_565768_19206\\",\\"22.984, 33\\",\\"22.984, 33\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"12.18, 15.18\\",\\"22.984, 33\\",\\"19,338, 19,206\\",\\"Sweatshirt - dark grey multicolor, Suit trousers - navy\\",\\"Sweatshirt - dark grey multicolor, Suit trousers - navy\\",\\"1, 1\\",\\"ZO0458004580, ZO0273402734\\",\\"0, 0\\",\\"22.984, 33\\",\\"22.984, 33\\",\\"0, 0\\",\\"ZO0458004580, ZO0273402734\\",\\"55.969\\",\\"55.969\\",2,2,order,youssef -7gMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Gwen,Gwen,\\"Gwen Harvey\\",\\"Gwen Harvey\\",FEMALE,26,Harvey,Harvey,\\"(empty)\\",Monday,0,\\"gwen@harvey-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Champion Arts, Low Tide Media\\",\\"Champion Arts, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565538,\\"sold_product_565538_23676, sold_product_565538_16054\\",\\"sold_product_565538_23676, sold_product_565538_16054\\",\\"24.984, 55\\",\\"24.984, 55\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Low Tide Media\\",\\"Champion Arts, Low Tide Media\\",\\"12.25, 25.297\\",\\"24.984, 55\\",\\"23,676, 16,054\\",\\"Slim fit jeans - brown, Platform sandals - black\\",\\"Slim fit jeans - brown, Platform sandals - black\\",\\"1, 1\\",\\"ZO0486804868, ZO0371603716\\",\\"0, 0\\",\\"24.984, 55\\",\\"24.984, 55\\",\\"0, 0\\",\\"ZO0486804868, ZO0371603716\\",80,80,2,2,order,gwen -\\"-wMtOW0BH63Xcmy45Wq4\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Gilbert\\",\\"Brigitte Gilbert\\",FEMALE,12,Gilbert,Gilbert,\\"(empty)\\",Monday,0,\\"brigitte@gilbert-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565404,\\"sold_product_565404_23482, sold_product_565404_19328\\",\\"sold_product_565404_23482, sold_product_565404_19328\\",\\"42, 33\\",\\"42, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"22.672, 17.813\\",\\"42, 33\\",\\"23,482, 19,328\\",\\"Cocktail dress / Party dress - pomegranate/black, Shift dress - black/champagne\\",\\"Cocktail dress / Party dress - pomegranate/black, Shift dress - black/champagne\\",\\"1, 1\\",\\"ZO0048900489, ZO0228702287\\",\\"0, 0\\",\\"42, 33\\",\\"42, 33\\",\\"0, 0\\",\\"ZO0048900489, ZO0228702287\\",75,75,2,2,order,brigitte -EwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Jimenez\\",\\"Sultan Al Jimenez\\",MALE,19,Jimenez,Jimenez,\\"(empty)\\",Monday,0,\\"sultan al@jimenez-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",715961,\\"sold_product_715961_18507, sold_product_715961_19182, sold_product_715961_17545, sold_product_715961_15806\\",\\"sold_product_715961_18507, sold_product_715961_19182, sold_product_715961_17545, sold_product_715961_15806\\",\\"24.984, 16.984, 7.988, 13.992\\",\\"24.984, 16.984, 7.988, 13.992\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Oceanavigations, Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Oceanavigations, Low Tide Media, Low Tide Media\\",\\"11.25, 8.156, 4.148, 7.27\\",\\"24.984, 16.984, 7.988, 13.992\\",\\"18,507, 19,182, 17,545, 15,806\\",\\"Vibrant Pattern Polo, Print T-shirt - light grey multicolor, Basic T-shirt - blue multicolor, Belt - dark brown\\",\\"Vibrant Pattern Polo, Print T-shirt - light grey multicolor, Basic T-shirt - blue multicolor, Belt - dark brown\\",\\"1, 1, 1, 1\\",\\"ZO0444904449, ZO0292502925, ZO0434604346, ZO0461804618\\",\\"0, 0, 0, 0\\",\\"24.984, 16.984, 7.988, 13.992\\",\\"24.984, 16.984, 7.988, 13.992\\",\\"0, 0, 0, 0\\",\\"ZO0444904449, ZO0292502925, ZO0434604346, ZO0461804618\\",\\"63.969\\",\\"63.969\\",4,4,order,sultan -VwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Wise\\",\\"Rabbia Al Wise\\",FEMALE,5,Wise,Wise,\\"(empty)\\",Monday,0,\\"rabbia al@wise-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Champion Arts, Oceanavigations\\",\\"Champion Arts, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566382,\\"sold_product_566382_15477, sold_product_566382_20551\\",\\"sold_product_566382_15477, sold_product_566382_20551\\",\\"18.984, 65\\",\\"18.984, 65\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Oceanavigations\\",\\"Champion Arts, Oceanavigations\\",\\"9.68, 33.781\\",\\"18.984, 65\\",\\"15,477, 20,551\\",\\"Sweatshirt - black, Lace-ups - Purple\\",\\"Sweatshirt - black, Lace-ups - Purple\\",\\"1, 1\\",\\"ZO0503505035, ZO0240302403\\",\\"0, 0\\",\\"18.984, 65\\",\\"18.984, 65\\",\\"0, 0\\",\\"ZO0503505035, ZO0240302403\\",84,84,2,2,order,rabbia -XgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Frances,Frances,\\"Frances Salazar\\",\\"Frances Salazar\\",FEMALE,49,Salazar,Salazar,\\"(empty)\\",Monday,0,\\"frances@salazar-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",Microlutions,Microlutions,\\"Jun 23, 2019 @ 00:00:00.000\\",565877,\\"sold_product_565877_20689, sold_product_565877_19983\\",\\"sold_product_565877_20689, sold_product_565877_19983\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Microlutions\\",\\"Microlutions, Microlutions\\",\\"15.18, 15.07\\",\\"33, 28.984\\",\\"20,689, 19,983\\",\\"Sweatshirt - light grey, Sweatshirt - black\\",\\"Sweatshirt - light grey, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0125401254, ZO0123701237\\",\\"0, 0\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"0, 0\\",\\"ZO0125401254, ZO0123701237\\",\\"61.969\\",\\"61.969\\",2,2,order,frances -bgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Farmer\\",\\"Robbie Farmer\\",MALE,48,Farmer,Farmer,\\"(empty)\\",Monday,0,\\"robbie@farmer-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,Elitelligence,Elitelligence,\\"Jun 23, 2019 @ 00:00:00.000\\",566364,\\"sold_product_566364_15434, sold_product_566364_15384\\",\\"sold_product_566364_15434, sold_product_566364_15384\\",\\"33, 33\\",\\"33, 33\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"16.813, 17.156\\",\\"33, 33\\",\\"15,434, 15,384\\",\\"High-top trainers - black, Denim jacket - grey\\",\\"High-top trainers - black, Denim jacket - grey\\",\\"1, 1\\",\\"ZO0512505125, ZO0525005250\\",\\"0, 0\\",\\"33, 33\\",\\"33, 33\\",\\"0, 0\\",\\"ZO0512505125, ZO0525005250\\",66,66,2,2,order,robbie -vwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Robbie,Robbie,\\"Robbie Holland\\",\\"Robbie Holland\\",MALE,48,Holland,Holland,\\"(empty)\\",Monday,0,\\"robbie@holland-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565479,\\"sold_product_565479_16738, sold_product_565479_14474\\",\\"sold_product_565479_16738, sold_product_565479_14474\\",\\"20.984, 65\\",\\"20.984, 65\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"11.539, 34.438\\",\\"20.984, 65\\",\\"16,738, 14,474\\",\\"Tracksuit top - red, Briefcase - dark brown\\",\\"Tracksuit top - red, Briefcase - dark brown\\",\\"1, 1\\",\\"ZO0588805888, ZO0314903149\\",\\"0, 0\\",\\"20.984, 65\\",\\"20.984, 65\\",\\"0, 0\\",\\"ZO0588805888, ZO0314903149\\",86,86,2,2,order,robbie -wwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Butler\\",\\"Mostafa Butler\\",MALE,9,Butler,Butler,\\"(empty)\\",Monday,0,\\"mostafa@butler-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565360,\\"sold_product_565360_11937, sold_product_565360_6497\\",\\"sold_product_565360_11937, sold_product_565360_6497\\",\\"33, 60\\",\\"33, 60\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"18.141, 31.188\\",\\"33, 60\\",\\"11,937, 6,497\\",\\"Jumper - navy, Colorful Cardigan\\",\\"Jumper - navy, Colorful Cardigan\\",\\"1, 1\\",\\"ZO0448604486, ZO0450704507\\",\\"0, 0\\",\\"33, 60\\",\\"33, 60\\",\\"0, 0\\",\\"ZO0448604486, ZO0450704507\\",93,93,2,2,order,mostafa -zwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Kamal,Kamal,\\"Kamal Perkins\\",\\"Kamal Perkins\\",MALE,39,Perkins,Perkins,\\"(empty)\\",Monday,0,\\"kamal@perkins-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565734,\\"sold_product_565734_23476, sold_product_565734_15158\\",\\"sold_product_565734_23476, sold_product_565734_15158\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"12.492, 33.125\\",\\"24.984, 65\\",\\"23,476, 15,158\\",\\"High-top trainers - allblack, Boots - grey\\",\\"High-top trainers - allblack, Boots - grey\\",\\"1, 1\\",\\"ZO0513205132, ZO0258202582\\",\\"0, 0\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"0, 0\\",\\"ZO0513205132, ZO0258202582\\",90,90,2,2,order,kamal -gAMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Powell\\",\\"Sultan Al Powell\\",MALE,19,Powell,Powell,\\"(empty)\\",Monday,0,\\"sultan al@powell-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",Elitelligence,Elitelligence,\\"Jun 23, 2019 @ 00:00:00.000\\",566514,\\"sold_product_566514_6827, sold_product_566514_11745\\",\\"sold_product_566514_6827, sold_product_566514_11745\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"17.156, 5.281\\",\\"33, 10.992\\",\\"6,827, 11,745\\",\\"Denim jacket - black denim, T-bar sandals - black/orange\\",\\"Denim jacket - black denim, T-bar sandals - black/orange\\",\\"1, 1\\",\\"ZO0539305393, ZO0522305223\\",\\"0, 0\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"0, 0\\",\\"ZO0539305393, ZO0522305223\\",\\"43.969\\",\\"43.969\\",2,2,order,sultan -gQMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Summers\\",\\"Clarice Summers\\",FEMALE,18,Summers,Summers,\\"(empty)\\",Monday,0,\\"clarice@summers-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Angeldale, Pyramidustries\\",\\"Angeldale, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565970,\\"sold_product_565970_25000, sold_product_565970_20678\\",\\"sold_product_565970_25000, sold_product_565970_20678\\",\\"85, 16.984\\",\\"85, 16.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Pyramidustries\\",\\"Angeldale, Pyramidustries\\",\\"40.813, 7.82\\",\\"85, 16.984\\",\\"25,000, 20,678\\",\\"Ankle boots - setter, Long sleeved top - black\\",\\"Ankle boots - setter, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0673406734, ZO0165601656\\",\\"0, 0\\",\\"85, 16.984\\",\\"85, 16.984\\",\\"0, 0\\",\\"ZO0673406734, ZO0165601656\\",102,102,2,2,order,clarice -kgMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing, Women's Accessories\\",\\"Women's Shoes, Women's Clothing, Women's Accessories\\",EUR,Elyssa,Elyssa,\\"Elyssa Richards\\",\\"Elyssa Richards\\",FEMALE,27,Richards,Richards,\\"(empty)\\",Monday,0,\\"elyssa@richards-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Spherecords, Tigress Enterprises\\",\\"Oceanavigations, Spherecords, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",723242,\\"sold_product_723242_5979, sold_product_723242_12451, sold_product_723242_13462, sold_product_723242_14976\\",\\"sold_product_723242_5979, sold_product_723242_12451, sold_product_723242_13462, sold_product_723242_14976\\",\\"75, 7.988, 24.984, 16.984\\",\\"75, 7.988, 24.984, 16.984\\",\\"Women's Shoes, Women's Clothing, Women's Accessories, Women's Clothing\\",\\"Women's Shoes, Women's Clothing, Women's Accessories, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Oceanavigations, Spherecords, Tigress Enterprises, Spherecords\\",\\"Oceanavigations, Spherecords, Tigress Enterprises, Spherecords\\",\\"33.75, 3.68, 11.75, 9.172\\",\\"75, 7.988, 24.984, 16.984\\",\\"5,979, 12,451, 13,462, 14,976\\",\\"Ankle boots - Antique White, Vest - black, Handbag - cognac , Mini skirt - dark blue\\",\\"Ankle boots - Antique White, Vest - black, Handbag - cognac , Mini skirt - dark blue\\",\\"1, 1, 1, 1\\",\\"ZO0249702497, ZO0643306433, ZO0088900889, ZO0634406344\\",\\"0, 0, 0, 0\\",\\"75, 7.988, 24.984, 16.984\\",\\"75, 7.988, 24.984, 16.984\\",\\"0, 0, 0, 0\\",\\"ZO0249702497, ZO0643306433, ZO0088900889, ZO0634406344\\",\\"124.938\\",\\"124.938\\",4,4,order,elyssa -mAMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Cook\\",\\"Abd Cook\\",MALE,52,Cook,Cook,\\"(empty)\\",Monday,0,\\"abd@cook-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",720399,\\"sold_product_720399_11133, sold_product_720399_24282, sold_product_720399_1435, sold_product_720399_13054\\",\\"sold_product_720399_11133, sold_product_720399_24282, sold_product_720399_1435, sold_product_720399_13054\\",\\"24.984, 7.988, 75, 24.984\\",\\"24.984, 7.988, 75, 24.984\\",\\"Men's Shoes, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Elitelligence, Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence, Low Tide Media, Elitelligence\\",\\"12.25, 4.148, 34.5, 13.742\\",\\"24.984, 7.988, 75, 24.984\\",\\"11,133, 24,282, 1,435, 13,054\\",\\"Smart lace-ups - black, Print T-shirt - bordeaux, Lace-up boots - Peru, Sweatshirt - black/red/white\\",\\"Smart lace-ups - black, Print T-shirt - bordeaux, Lace-up boots - Peru, Sweatshirt - black/red/white\\",\\"1, 1, 1, 1\\",\\"ZO0386303863, ZO0561905619, ZO0397903979, ZO0590105901\\",\\"0, 0, 0, 0\\",\\"24.984, 7.988, 75, 24.984\\",\\"24.984, 7.988, 75, 24.984\\",\\"0, 0, 0, 0\\",\\"ZO0386303863, ZO0561905619, ZO0397903979, ZO0590105901\\",133,133,4,4,order,abd -vQMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Hicham,Hicham,\\"Hicham Hopkins\\",\\"Hicham Hopkins\\",MALE,8,Hopkins,Hopkins,\\"(empty)\\",Monday,0,\\"hicham@hopkins-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566580,\\"sold_product_566580_19404, sold_product_566580_16718\\",\\"sold_product_566580_19404, sold_product_566580_16718\\",\\"33, 33\\",\\"33, 33\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"17.484, 17.813\\",\\"33, 33\\",\\"19,404, 16,718\\",\\"Shirt - olive, Tracksuit top - black\\",\\"Shirt - olive, Tracksuit top - black\\",\\"1, 1\\",\\"ZO0417304173, ZO0123001230\\",\\"0, 0\\",\\"33, 33\\",\\"33, 33\\",\\"0, 0\\",\\"ZO0417304173, ZO0123001230\\",66,66,2,2,order,hicham -ygMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Moran\\",\\"Robbie Moran\\",MALE,48,Moran,Moran,\\"(empty)\\",Monday,0,\\"robbie@moran-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566671,\\"sold_product_566671_22991, sold_product_566671_17752\\",\\"sold_product_566671_22991, sold_product_566671_17752\\",\\"50, 37\\",\\"50, 37\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"23, 17.391\\",\\"50, 37\\",\\"22,991, 17,752\\",\\"SOLID - Summer jacket - mustard, Slim fit jeans - black denim\\",\\"SOLID - Summer jacket - mustard, Slim fit jeans - black denim\\",\\"1, 1\\",\\"ZO0427604276, ZO0113801138\\",\\"0, 0\\",\\"50, 37\\",\\"50, 37\\",\\"0, 0\\",\\"ZO0427604276, ZO0113801138\\",87,87,2,2,order,robbie -zgMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Watkins\\",\\"Abd Watkins\\",MALE,52,Watkins,Watkins,\\"(empty)\\",Monday,0,\\"abd@watkins-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566176,\\"sold_product_566176_15205, sold_product_566176_7038\\",\\"sold_product_566176_15205, sold_product_566176_7038\\",\\"24.984, 85\\",\\"24.984, 85\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"13.242, 44.188\\",\\"24.984, 85\\",\\"15,205, 7,038\\",\\"Briefcase - black , Parka - mustard\\",\\"Briefcase - black , Parka - mustard\\",\\"1, 1\\",\\"ZO0607206072, ZO0431404314\\",\\"0, 0\\",\\"24.984, 85\\",\\"24.984, 85\\",\\"0, 0\\",\\"ZO0607206072, ZO0431404314\\",110,110,2,2,order,abd -zwMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Carr\\",\\"rania Carr\\",FEMALE,24,Carr,Carr,\\"(empty)\\",Monday,0,\\"rania@carr-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566146,\\"sold_product_566146_24862, sold_product_566146_22163\\",\\"sold_product_566146_24862, sold_product_566146_22163\\",\\"10.992, 20.984\\",\\"10.992, 20.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"5.5, 10.703\\",\\"10.992, 20.984\\",\\"24,862, 22,163\\",\\"Print T-shirt - dark blue/off white, Leggings - black\\",\\"Print T-shirt - dark blue/off white, Leggings - black\\",\\"1, 1\\",\\"ZO0646206462, ZO0146201462\\",\\"0, 0\\",\\"10.992, 20.984\\",\\"10.992, 20.984\\",\\"0, 0\\",\\"ZO0646206462, ZO0146201462\\",\\"31.984\\",\\"31.984\\",2,2,order,rani -kgMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Dawson\\",\\"Abigail Dawson\\",FEMALE,46,Dawson,Dawson,\\"(empty)\\",Monday,0,\\"abigail@dawson-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Champion Arts, Pyramidustries active\\",\\"Champion Arts, Pyramidustries active\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565760,\\"sold_product_565760_21930, sold_product_565760_9980\\",\\"sold_product_565760_21930, sold_product_565760_9980\\",\\"50, 20.984\\",\\"50, 20.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Pyramidustries active\\",\\"Champion Arts, Pyramidustries active\\",\\"22.5, 9.867\\",\\"50, 20.984\\",\\"21,930, 9,980\\",\\"Classic coat - black/white, Tights - poseidon\\",\\"Classic coat - black/white, Tights - poseidon\\",\\"1, 1\\",\\"ZO0504505045, ZO0223802238\\",\\"0, 0\\",\\"50, 20.984\\",\\"50, 20.984\\",\\"0, 0\\",\\"ZO0504505045, ZO0223802238\\",71,71,2,2,order,abigail -mAMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Diane,Diane,\\"Diane Lloyd\\",\\"Diane Lloyd\\",FEMALE,22,Lloyd,Lloyd,\\"(empty)\\",Monday,0,\\"diane@lloyd-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Spherecords, Crystal Lighting\\",\\"Spherecords, Crystal Lighting\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565521,\\"sold_product_565521_12423, sold_product_565521_11487\\",\\"sold_product_565521_12423, sold_product_565521_11487\\",\\"14.992, 85\\",\\"14.992, 85\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Crystal Lighting\\",\\"Spherecords, Crystal Lighting\\",\\"6.898, 38.25\\",\\"14.992, 85\\",\\"12,423, 11,487\\",\\"Nightie - black/off white, Snowboard jacket - coralle/grey multicolor\\",\\"Nightie - black/off white, Snowboard jacket - coralle/grey multicolor\\",\\"1, 1\\",\\"ZO0660406604, ZO0484504845\\",\\"0, 0\\",\\"14.992, 85\\",\\"14.992, 85\\",\\"0, 0\\",\\"ZO0660406604, ZO0484504845\\",100,100,2,2,order,diane -nQMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Mary,Mary,\\"Mary Martin\\",\\"Mary Martin\\",FEMALE,20,Martin,Martin,\\"(empty)\\",Monday,0,\\"mary@martin-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises Curvy, Spherecords\\",\\"Tigress Enterprises Curvy, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566320,\\"sold_product_566320_14149, sold_product_566320_23774\\",\\"sold_product_566320_14149, sold_product_566320_23774\\",\\"24.984, 14.992\\",\\"24.984, 14.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises Curvy, Spherecords\\",\\"Tigress Enterprises Curvy, Spherecords\\",\\"13.492, 7.941\\",\\"24.984, 14.992\\",\\"14,149, 23,774\\",\\"Blouse - Medium Sea Green, Cardigan - dark blue\\",\\"Blouse - Medium Sea Green, Cardigan - dark blue\\",\\"1, 1\\",\\"ZO0105001050, ZO0652306523\\",\\"0, 0\\",\\"24.984, 14.992\\",\\"24.984, 14.992\\",\\"0, 0\\",\\"ZO0105001050, ZO0652306523\\",\\"39.969\\",\\"39.969\\",2,2,order,mary -ngMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Cortez\\",\\"Stephanie Cortez\\",FEMALE,6,Cortez,Cortez,\\"(empty)\\",Monday,0,\\"stephanie@cortez-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566357,\\"sold_product_566357_14019, sold_product_566357_14225\\",\\"sold_product_566357_14019, sold_product_566357_14225\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"13.242, 7.82\\",\\"24.984, 16.984\\",\\"14,019, 14,225\\",\\"Vest - black, Sweatshirt - dark grey multicolor\\",\\"Vest - black, Sweatshirt - dark grey multicolor\\",\\"1, 1\\",\\"ZO0061600616, ZO0180701807\\",\\"0, 0\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"0, 0\\",\\"ZO0061600616, ZO0180701807\\",\\"41.969\\",\\"41.969\\",2,2,order,stephanie -nwMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,rania,rania,\\"rania Howell\\",\\"rania Howell\\",FEMALE,24,Howell,Howell,\\"(empty)\\",Monday,0,\\"rania@howell-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566415,\\"sold_product_566415_18928, sold_product_566415_17913\\",\\"sold_product_566415_18928, sold_product_566415_17913\\",\\"50, 75\\",\\"50, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"25.984, 36.75\\",\\"50, 75\\",\\"18,928, 17,913\\",\\"Summer dress - black/red, Wedges - white\\",\\"Summer dress - black/red, Wedges - white\\",\\"1, 1\\",\\"ZO0261102611, ZO0667106671\\",\\"0, 0\\",\\"50, 75\\",\\"50, 75\\",\\"0, 0\\",\\"ZO0261102611, ZO0667106671\\",125,125,2,2,order,rani -wQMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Jackson\\",\\"Mostafa Jackson\\",MALE,9,Jackson,Jackson,\\"(empty)\\",Monday,0,\\"mostafa@jackson-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566044,\\"sold_product_566044_19539, sold_product_566044_19704\\",\\"sold_product_566044_19539, sold_product_566044_19704\\",\\"10.992, 13.992\\",\\"10.992, 13.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"5.059, 6.859\\",\\"10.992, 13.992\\",\\"19,539, 19,704\\",\\"Print T-shirt - white, Print T-shirt - grey multicolor\\",\\"Print T-shirt - white, Print T-shirt - grey multicolor\\",\\"1, 1\\",\\"ZO0552605526, ZO0292702927\\",\\"0, 0\\",\\"10.992, 13.992\\",\\"10.992, 13.992\\",\\"0, 0\\",\\"ZO0552605526, ZO0292702927\\",\\"24.984\\",\\"24.984\\",2,2,order,mostafa -8QMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Diane,Diane,\\"Diane Reese\\",\\"Diane Reese\\",FEMALE,22,Reese,Reese,\\"(empty)\\",Monday,0,\\"diane@reese-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565473,\\"sold_product_565473_13838, sold_product_565473_13437\\",\\"sold_product_565473_13838, sold_product_565473_13437\\",\\"42, 50\\",\\"42, 50\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"19.734, 22.5\\",\\"42, 50\\",\\"13,838, 13,437\\",\\"Ballet pumps - cognac, Ballet pumps - black\\",\\"Ballet pumps - cognac, Ballet pumps - black\\",\\"1, 1\\",\\"ZO0365303653, ZO0235802358\\",\\"0, 0\\",\\"42, 50\\",\\"42, 50\\",\\"0, 0\\",\\"ZO0365303653, ZO0235802358\\",92,92,2,2,order,diane -9AMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Clarice,Clarice,\\"Clarice Mccormick\\",\\"Clarice Mccormick\\",FEMALE,18,Mccormick,Mccormick,\\"(empty)\\",Monday,0,\\"clarice@mccormick-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Gnomehouse, Angeldale\\",\\"Gnomehouse, Angeldale\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565339,\\"sold_product_565339_21573, sold_product_565339_15153\\",\\"sold_product_565339_21573, sold_product_565339_15153\\",\\"33, 75\\",\\"33, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Angeldale\\",\\"Gnomehouse, Angeldale\\",\\"17.156, 39\\",\\"33, 75\\",\\"21,573, 15,153\\",\\"Print T-shirt - Yellow, Ankle boots - black\\",\\"Print T-shirt - Yellow, Ankle boots - black\\",\\"1, 1\\",\\"ZO0346503465, ZO0678406784\\",\\"0, 0\\",\\"33, 75\\",\\"33, 75\\",\\"0, 0\\",\\"ZO0346503465, ZO0678406784\\",108,108,2,2,order,clarice -ZgMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Irwin,Irwin,\\"Irwin Bryant\\",\\"Irwin Bryant\\",MALE,14,Bryant,Bryant,\\"(empty)\\",Monday,0,\\"irwin@bryant-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565591,\\"sold_product_565591_1910, sold_product_565591_12445\\",\\"sold_product_565591_1910, sold_product_565591_12445\\",\\"65, 42\\",\\"65, 42\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"31.844, 21.406\\",\\"65, 42\\",\\"1,910, 12,445\\",\\"Smart lace-ups - black, Waistcoat - light grey\\",\\"Smart lace-ups - black, Waistcoat - light grey\\",\\"1, 1\\",\\"ZO0683806838, ZO0429204292\\",\\"0, 0\\",\\"65, 42\\",\\"65, 42\\",\\"0, 0\\",\\"ZO0683806838, ZO0429204292\\",107,107,2,2,order,irwin -eAMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories, Women's Shoes\\",\\"Women's Clothing, Women's Accessories, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Maldonado\\",\\"Rabbia Al Maldonado\\",FEMALE,5,Maldonado,Maldonado,\\"(empty)\\",Monday,0,\\"rabbia al@maldonado-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Champion Arts, Pyramidustries, Primemaster, Angeldale\\",\\"Champion Arts, Pyramidustries, Primemaster, Angeldale\\",\\"Jun 23, 2019 @ 00:00:00.000\\",730725,\\"sold_product_730725_17276, sold_product_730725_15007, sold_product_730725_5421, sold_product_730725_16594\\",\\"sold_product_730725_17276, sold_product_730725_15007, sold_product_730725_5421, sold_product_730725_16594\\",\\"20.984, 11.992, 185, 65\\",\\"20.984, 11.992, 185, 65\\",\\"Women's Clothing, Women's Accessories, Women's Shoes, Women's Accessories\\",\\"Women's Clothing, Women's Accessories, Women's Shoes, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Champion Arts, Pyramidustries, Primemaster, Angeldale\\",\\"Champion Arts, Pyramidustries, Primemaster, Angeldale\\",\\"10.078, 5.52, 83.25, 29.906\\",\\"20.984, 11.992, 185, 65\\",\\"17,276, 15,007, 5,421, 16,594\\",\\"Jumper - blue multicolor, Watch - grey, High heeled boots - brown, Handbag - black\\",\\"Jumper - blue multicolor, Watch - grey, High heeled boots - brown, Handbag - black\\",\\"1, 1, 1, 1\\",\\"ZO0501605016, ZO0189601896, ZO0363003630, ZO0699306993\\",\\"0, 0, 0, 0\\",\\"20.984, 11.992, 185, 65\\",\\"20.984, 11.992, 185, 65\\",\\"0, 0, 0, 0\\",\\"ZO0501605016, ZO0189601896, ZO0363003630, ZO0699306993\\",283,283,4,4,order,rabbia -1wMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Craig\\",\\"Pia Craig\\",FEMALE,45,Craig,Craig,\\"(empty)\\",Monday,0,\\"pia@craig-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566443,\\"sold_product_566443_22619, sold_product_566443_24107\\",\\"sold_product_566443_22619, sold_product_566443_24107\\",\\"17.984, 33\\",\\"17.984, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"8.102, 15.18\\",\\"17.984, 33\\",\\"22,619, 24,107\\",\\"Long sleeved top - black, Jumper dress - grey multicolor\\",\\"Long sleeved top - black, Jumper dress - grey multicolor\\",\\"1, 1\\",\\"ZO0160201602, ZO0261502615\\",\\"0, 0\\",\\"17.984, 33\\",\\"17.984, 33\\",\\"0, 0\\",\\"ZO0160201602, ZO0261502615\\",\\"50.969\\",\\"50.969\\",2,2,order,pia -2AMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Marwan,Marwan,\\"Marwan Little\\",\\"Marwan Little\\",MALE,51,Little,Little,\\"(empty)\\",Monday,0,\\"marwan@little-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566498,\\"sold_product_566498_17075, sold_product_566498_11878\\",\\"sold_product_566498_17075, sold_product_566498_11878\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"31.797, 5.059\\",\\"60, 10.992\\",\\"17,075, 11,878\\",\\"Smart lace-ups - cognac, Long sleeved top - bordeaux\\",\\"Smart lace-ups - cognac, Long sleeved top - bordeaux\\",\\"1, 1\\",\\"ZO0387103871, ZO0550005500\\",\\"0, 0\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"0, 0\\",\\"ZO0387103871, ZO0550005500\\",71,71,2,2,order,marwan -2wMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Perkins\\",\\"Abdulraheem Al Perkins\\",MALE,33,Perkins,Perkins,\\"(empty)\\",Monday,0,\\"abdulraheem al@perkins-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565985,\\"sold_product_565985_22376, sold_product_565985_6969\\",\\"sold_product_565985_22376, sold_product_565985_6969\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"5.602, 12.742\\",\\"10.992, 24.984\\",\\"22,376, 6,969\\",\\"Long sleeved top - white, Shirt - blue\\",\\"Long sleeved top - white, Shirt - blue\\",\\"1, 1\\",\\"ZO0436604366, ZO0280302803\\",\\"0, 0\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"0, 0\\",\\"ZO0436604366, ZO0280302803\\",\\"35.969\\",\\"35.969\\",2,2,order,abdulraheem -3QMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Dawson\\",\\"Abigail Dawson\\",FEMALE,46,Dawson,Dawson,\\"(empty)\\",Monday,0,\\"abigail@dawson-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565640,\\"sold_product_565640_11983, sold_product_565640_18500\\",\\"sold_product_565640_11983, sold_product_565640_18500\\",\\"24.984, 44\\",\\"24.984, 44\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"12.492, 22\\",\\"24.984, 44\\",\\"11,983, 18,500\\",\\"Summer dress - red, Jersey dress - black/grey\\",\\"Summer dress - red, Jersey dress - black/grey\\",\\"1, 1\\",\\"ZO0631606316, ZO0045300453\\",\\"0, 0\\",\\"24.984, 44\\",\\"24.984, 44\\",\\"0, 0\\",\\"ZO0631606316, ZO0045300453\\",69,69,2,2,order,abigail -3gMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Frances,Frances,\\"Frances Morrison\\",\\"Frances Morrison\\",FEMALE,49,Morrison,Morrison,\\"(empty)\\",Monday,0,\\"frances@morrison-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565683,\\"sold_product_565683_11862, sold_product_565683_16135\\",\\"sold_product_565683_11862, sold_product_565683_16135\\",\\"22.984, 16.984\\",\\"22.984, 16.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"11.492, 8.656\\",\\"22.984, 16.984\\",\\"11,862, 16,135\\",\\"Jumper - black, Belt - dark brown\\",\\"Jumper - black, Belt - dark brown\\",\\"1, 1\\",\\"ZO0573205732, ZO0310303103\\",\\"0, 0\\",\\"22.984, 16.984\\",\\"22.984, 16.984\\",\\"0, 0\\",\\"ZO0573205732, ZO0310303103\\",\\"39.969\\",\\"39.969\\",2,2,order,frances -\\"-QMtOW0BH63Xcmy4524Z\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Wise\\",\\"Yuri Wise\\",MALE,21,Wise,Wise,\\"(empty)\\",Monday,0,\\"yuri@wise-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565767,\\"sold_product_565767_18958, sold_product_565767_24243\\",\\"sold_product_565767_18958, sold_product_565767_24243\\",\\"26.984, 24.984\\",\\"26.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"14.031, 13.242\\",\\"26.984, 24.984\\",\\"18,958, 24,243\\",\\"Formal shirt - white, Slim fit jeans - dirty denim\\",\\"Formal shirt - white, Slim fit jeans - dirty denim\\",\\"1, 1\\",\\"ZO0414304143, ZO0425204252\\",\\"0, 0\\",\\"26.984, 24.984\\",\\"26.984, 24.984\\",\\"0, 0\\",\\"ZO0414304143, ZO0425204252\\",\\"51.969\\",\\"51.969\\",2,2,order,yuri -IAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Sonya,Sonya,\\"Sonya Salazar\\",\\"Sonya Salazar\\",FEMALE,28,Salazar,Salazar,\\"(empty)\\",Monday,0,\\"sonya@salazar-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566452,\\"sold_product_566452_11504, sold_product_566452_16385\\",\\"sold_product_566452_11504, sold_product_566452_16385\\",\\"11.992, 28.984\\",\\"11.992, 28.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"5.879, 13.047\\",\\"11.992, 28.984\\",\\"11,504, 16,385\\",\\"Basic T-shirt - darkblue/white, Sandals - gold\\",\\"Basic T-shirt - darkblue/white, Sandals - gold\\",\\"1, 1\\",\\"ZO0706307063, ZO0011300113\\",\\"0, 0\\",\\"11.992, 28.984\\",\\"11.992, 28.984\\",\\"0, 0\\",\\"ZO0706307063, ZO0011300113\\",\\"40.969\\",\\"40.969\\",2,2,order,sonya -IgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Jackson,Jackson,\\"Jackson Willis\\",\\"Jackson Willis\\",MALE,13,Willis,Willis,\\"(empty)\\",Monday,0,\\"jackson@willis-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565982,\\"sold_product_565982_15828, sold_product_565982_15722\\",\\"sold_product_565982_15828, sold_product_565982_15722\\",\\"10.992, 13.992\\",\\"10.992, 13.992\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"5.172, 7.41\\",\\"10.992, 13.992\\",\\"15,828, 15,722\\",\\"Tie - black, Belt - brown\\",\\"Tie - black, Belt - brown\\",\\"1, 1\\",\\"ZO0410804108, ZO0309303093\\",\\"0, 0\\",\\"10.992, 13.992\\",\\"10.992, 13.992\\",\\"0, 0\\",\\"ZO0410804108, ZO0309303093\\",\\"24.984\\",\\"24.984\\",2,2,order,jackson -UAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Simpson\\",\\"Rabbia Al Simpson\\",FEMALE,5,Simpson,Simpson,\\"(empty)\\",Monday,0,\\"rabbia al@simpson-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Pyramidustries, Spherecords, Tigress Enterprises MAMA\\",\\"Pyramidustries, Spherecords, Tigress Enterprises MAMA\\",\\"Jun 23, 2019 @ 00:00:00.000\\",726754,\\"sold_product_726754_17171, sold_product_726754_25083, sold_product_726754_21081, sold_product_726754_13554\\",\\"sold_product_726754_17171, sold_product_726754_25083, sold_product_726754_21081, sold_product_726754_13554\\",\\"33, 10.992, 16.984, 24.984\\",\\"33, 10.992, 16.984, 24.984\\",\\"Women's Shoes, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Women's Shoes, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Pyramidustries, Spherecords, Pyramidustries, Tigress Enterprises MAMA\\",\\"Pyramidustries, Spherecords, Pyramidustries, Tigress Enterprises MAMA\\",\\"16.813, 5.172, 8.156, 12.25\\",\\"33, 10.992, 16.984, 24.984\\",\\"17,171, 25,083, 21,081, 13,554\\",\\"Platform sandals - black, Basic T-shirt - dark blue, Cape - black/offwhite, Jersey dress - black\\",\\"Platform sandals - black, Basic T-shirt - dark blue, Cape - black/offwhite, Jersey dress - black\\",\\"1, 1, 1, 1\\",\\"ZO0138001380, ZO0648006480, ZO0193501935, ZO0228402284\\",\\"0, 0, 0, 0\\",\\"33, 10.992, 16.984, 24.984\\",\\"33, 10.992, 16.984, 24.984\\",\\"0, 0, 0, 0\\",\\"ZO0138001380, ZO0648006480, ZO0193501935, ZO0228402284\\",\\"85.938\\",\\"85.938\\",4,4,order,rabbia -YAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,rania,rania,\\"rania Nash\\",\\"rania Nash\\",FEMALE,24,Nash,Nash,\\"(empty)\\",Monday,0,\\"rania@nash-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Oceanavigations,Oceanavigations,\\"Jun 23, 2019 @ 00:00:00.000\\",565723,\\"sold_product_565723_15629, sold_product_565723_18709\\",\\"sold_product_565723_15629, sold_product_565723_18709\\",\\"33, 75\\",\\"33, 75\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"15.18, 39.75\\",\\"33, 75\\",\\"15,629, 18,709\\",\\"Watch - gold-coloured, Boots - nude\\",\\"Watch - gold-coloured, Boots - nude\\",\\"1, 1\\",\\"ZO0302303023, ZO0246602466\\",\\"0, 0\\",\\"33, 75\\",\\"33, 75\\",\\"0, 0\\",\\"ZO0302303023, ZO0246602466\\",108,108,2,2,order,rani -agMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Hayes\\",\\"Youssef Hayes\\",MALE,31,Hayes,Hayes,\\"(empty)\\",Monday,0,\\"youssef@hayes-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565896,\\"sold_product_565896_13186, sold_product_565896_15296\\",\\"sold_product_565896_13186, sold_product_565896_15296\\",\\"42, 18.984\\",\\"42, 18.984\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"21.828, 9.117\\",\\"42, 18.984\\",\\"13,186, 15,296\\",\\"Across body bag - navy, Polo shirt - red\\",\\"Across body bag - navy, Polo shirt - red\\",\\"1, 1\\",\\"ZO0466104661, ZO0444104441\\",\\"0, 0\\",\\"42, 18.984\\",\\"42, 18.984\\",\\"0, 0\\",\\"ZO0466104661, ZO0444104441\\",\\"60.969\\",\\"60.969\\",2,2,order,youssef -jgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Abd,Abd,\\"Abd Summers\\",\\"Abd Summers\\",MALE,52,Summers,Summers,\\"(empty)\\",Monday,0,\\"abd@summers-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Microlutions, Oceanavigations, Elitelligence\\",\\"Microlutions, Oceanavigations, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",718085,\\"sold_product_718085_20302, sold_product_718085_15787, sold_product_718085_11532, sold_product_718085_13238\\",\\"sold_product_718085_20302, sold_product_718085_15787, sold_product_718085_11532, sold_product_718085_13238\\",\\"13.992, 15.992, 7.988, 10.992\\",\\"13.992, 15.992, 7.988, 10.992\\",\\"Men's Clothing, Men's Accessories, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Accessories, Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Microlutions, Oceanavigations, Elitelligence, Elitelligence\\",\\"Microlutions, Oceanavigations, Elitelligence, Elitelligence\\",\\"7.27, 8.469, 3.76, 4.949\\",\\"13.992, 15.992, 7.988, 10.992\\",\\"20,302, 15,787, 11,532, 13,238\\",\\"3 PACK - Shorts - khaki/camo, Belt - black, Basic T-shirt - khaki, Print T-shirt - beige\\",\\"3 PACK - Shorts - khaki/camo, Belt - black, Basic T-shirt - khaki, Print T-shirt - beige\\",\\"1, 1, 1, 1\\",\\"ZO0129001290, ZO0310103101, ZO0547805478, ZO0560805608\\",\\"0, 0, 0, 0\\",\\"13.992, 15.992, 7.988, 10.992\\",\\"13.992, 15.992, 7.988, 10.992\\",\\"0, 0, 0, 0\\",\\"ZO0129001290, ZO0310103101, ZO0547805478, ZO0560805608\\",\\"48.969\\",\\"48.969\\",4,4,order,abd -zQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Bryant\\",\\"Rabbia Al Bryant\\",FEMALE,5,Bryant,Bryant,\\"(empty)\\",Monday,0,\\"rabbia al@bryant-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Pyramidustries\\",\\"Angeldale, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566248,\\"sold_product_566248_14303, sold_product_566248_14542\\",\\"sold_product_566248_14303, sold_product_566248_14542\\",\\"75, 24.984\\",\\"75, 24.984\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Pyramidustries\\",\\"Angeldale, Pyramidustries\\",\\"36, 13.242\\",\\"75, 24.984\\",\\"14,303, 14,542\\",\\"Ankle boots - black, Tote bag - black\\",\\"Ankle boots - black, Tote bag - black\\",\\"1, 1\\",\\"ZO0678806788, ZO0186101861\\",\\"0, 0\\",\\"75, 24.984\\",\\"75, 24.984\\",\\"0, 0\\",\\"ZO0678806788, ZO0186101861\\",100,100,2,2,order,rabbia -2QMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Alvarez\\",\\"Fitzgerald Alvarez\\",MALE,11,Alvarez,Alvarez,\\"(empty)\\",Monday,0,\\"fitzgerald@alvarez-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565560,\\"sold_product_565560_23771, sold_product_565560_18408\\",\\"sold_product_565560_23771, sold_product_565560_18408\\",\\"10.992, 11.992\\",\\"10.992, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"5.5, 6.352\\",\\"10.992, 11.992\\",\\"23,771, 18,408\\",\\"Basic T-shirt - Medium Slate Blue, Polo shirt - black\\",\\"Basic T-shirt - Medium Slate Blue, Polo shirt - black\\",\\"1, 1\\",\\"ZO0567505675, ZO0442104421\\",\\"0, 0\\",\\"10.992, 11.992\\",\\"10.992, 11.992\\",\\"0, 0\\",\\"ZO0567505675, ZO0442104421\\",\\"22.984\\",\\"22.984\\",2,2,order,fuzzy -IQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Hicham,Hicham,\\"Hicham Hale\\",\\"Hicham Hale\\",MALE,8,Hale,Hale,\\"(empty)\\",Monday,0,\\"hicham@hale-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566186,\\"sold_product_566186_24868, sold_product_566186_23962\\",\\"sold_product_566186_24868, sold_product_566186_23962\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"10.703, 11.5\\",\\"20.984, 24.984\\",\\"24,868, 23,962\\",\\"Walking sandals - white/grey/black, Sweatshirt - navy multicolor \\",\\"Walking sandals - white/grey/black, Sweatshirt - navy multicolor \\",\\"1, 1\\",\\"ZO0522105221, ZO0459104591\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0522105221, ZO0459104591\\",\\"45.969\\",\\"45.969\\",2,2,order,hicham -IgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Foster\\",\\"Wilhemina St. Foster\\",FEMALE,17,Foster,Foster,\\"(empty)\\",Monday,0,\\"wilhemina st.@foster-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Champion Arts, Pyramidustries\\",\\"Champion Arts, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566155,\\"sold_product_566155_13946, sold_product_566155_21158\\",\\"sold_product_566155_13946, sold_product_566155_21158\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Pyramidustries\\",\\"Champion Arts, Pyramidustries\\",\\"9.656, 12.25\\",\\"20.984, 24.984\\",\\"13,946, 21,158\\",\\"Hoodie - dark grey multicolor, Pyjamas - light pink\\",\\"Hoodie - dark grey multicolor, Pyjamas - light pink\\",\\"1, 1\\",\\"ZO0501005010, ZO0214002140\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0501005010, ZO0214002140\\",\\"45.969\\",\\"45.969\\",2,2,order,wilhemina -IwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Dawson\\",\\"Sonya Dawson\\",FEMALE,28,Dawson,Dawson,\\"(empty)\\",Monday,0,\\"sonya@dawson-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566628,\\"sold_product_566628_11077, sold_product_566628_19514\\",\\"sold_product_566628_11077, sold_product_566628_19514\\",\\"24.984, 11.992\\",\\"24.984, 11.992\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"12.492, 6.352\\",\\"24.984, 11.992\\",\\"11,077, 19,514\\",\\"Tote bag - cognac, 3 PACK - Shorts - teal/dark purple/black\\",\\"Tote bag - cognac, 3 PACK - Shorts - teal/dark purple/black\\",\\"1, 1\\",\\"ZO0195601956, ZO0098900989\\",\\"0, 0\\",\\"24.984, 11.992\\",\\"24.984, 11.992\\",\\"0, 0\\",\\"ZO0195601956, ZO0098900989\\",\\"36.969\\",\\"36.969\\",2,2,order,sonya -JAMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Phillips\\",\\"Mostafa Phillips\\",MALE,9,Phillips,Phillips,\\"(empty)\\",Monday,0,\\"mostafa@phillips-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Angeldale, Microlutions\\",\\"Angeldale, Microlutions\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566519,\\"sold_product_566519_21909, sold_product_566519_12714\\",\\"sold_product_566519_21909, sold_product_566519_12714\\",\\"16.984, 85\\",\\"16.984, 85\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Microlutions\\",\\"Angeldale, Microlutions\\",\\"9.172, 40.813\\",\\"16.984, 85\\",\\"21,909, 12,714\\",\\"Belt - black, Classic coat - black\\",\\"Belt - black, Classic coat - black\\",\\"1, 1\\",\\"ZO0700907009, ZO0115801158\\",\\"0, 0\\",\\"16.984, 85\\",\\"16.984, 85\\",\\"0, 0\\",\\"ZO0700907009, ZO0115801158\\",102,102,2,2,order,mostafa -JQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Powell\\",\\"Stephanie Powell\\",FEMALE,6,Powell,Powell,\\"(empty)\\",Monday,0,\\"stephanie@powell-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Champion Arts, Spherecords\\",\\"Champion Arts, Spherecords\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565697,\\"sold_product_565697_11530, sold_product_565697_17565\\",\\"sold_product_565697_11530, sold_product_565697_17565\\",\\"16.984, 11.992\\",\\"16.984, 11.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Spherecords\\",\\"Champion Arts, Spherecords\\",\\"8.156, 6\\",\\"16.984, 11.992\\",\\"11,530, 17,565\\",\\"Hoodie - dark red, 2 PACK - Vest - black/nude\\",\\"Hoodie - dark red, 2 PACK - Vest - black/nude\\",\\"1, 1\\",\\"ZO0498904989, ZO0641706417\\",\\"0, 0\\",\\"16.984, 11.992\\",\\"16.984, 11.992\\",\\"0, 0\\",\\"ZO0498904989, ZO0641706417\\",\\"28.984\\",\\"28.984\\",2,2,order,stephanie -JgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,Pia,Pia,\\"Pia Ramsey\\",\\"Pia Ramsey\\",FEMALE,45,Ramsey,Ramsey,\\"(empty)\\",Monday,0,\\"pia@ramsey-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566417,\\"sold_product_566417_14379, sold_product_566417_13936\\",\\"sold_product_566417_14379, sold_product_566417_13936\\",\\"11.992, 11.992\\",\\"11.992, 11.992\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"6.469, 5.52\\",\\"11.992, 11.992\\",\\"14,379, 13,936\\",\\"Snood - grey, Scarf - bordeaux\\",\\"Snood - grey, Scarf - bordeaux\\",\\"1, 1\\",\\"ZO0084900849, ZO0194701947\\",\\"0, 0\\",\\"11.992, 11.992\\",\\"11.992, 11.992\\",\\"0, 0\\",\\"ZO0084900849, ZO0194701947\\",\\"23.984\\",\\"23.984\\",2,2,order,pia -fwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Mccarthy\\",\\"Pia Mccarthy\\",FEMALE,45,Mccarthy,Mccarthy,\\"(empty)\\",Monday,0,\\"pia@mccarthy-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Spherecords, Champion Arts\\",\\"Spherecords, Champion Arts\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565722,\\"sold_product_565722_12551, sold_product_565722_22941\\",\\"sold_product_565722_12551, sold_product_565722_22941\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Champion Arts\\",\\"Spherecords, Champion Arts\\",\\"8.328, 5.82\\",\\"16.984, 10.992\\",\\"12,551, 22,941\\",\\"Cardigan - light grey multicolor, Print T-shirt - dark blue/red\\",\\"Cardigan - light grey multicolor, Print T-shirt - dark blue/red\\",\\"1, 1\\",\\"ZO0656406564, ZO0495504955\\",\\"0, 0\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"0, 0\\",\\"ZO0656406564, ZO0495504955\\",\\"27.984\\",\\"27.984\\",2,2,order,pia -lAMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Boris,Boris,\\"Boris Foster\\",\\"Boris Foster\\",MALE,36,Foster,Foster,\\"(empty)\\",Monday,0,\\"boris@foster-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",Spritechnologies,Spritechnologies,\\"Jun 23, 2019 @ 00:00:00.000\\",565330,\\"sold_product_565330_16276, sold_product_565330_24760\\",\\"sold_product_565330_16276, sold_product_565330_24760\\",\\"20.984, 50\\",\\"20.984, 50\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Spritechnologies\\",\\"Spritechnologies, Spritechnologies\\",\\"9.453, 26.484\\",\\"20.984, 50\\",\\"16,276, 24,760\\",\\"Tracksuit bottoms - dark grey multicolor, Sweatshirt - black\\",\\"Tracksuit bottoms - dark grey multicolor, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0621606216, ZO0628806288\\",\\"0, 0\\",\\"20.984, 50\\",\\"20.984, 50\\",\\"0, 0\\",\\"ZO0621606216, ZO0628806288\\",71,71,2,2,order,boris -lQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Betty,Betty,\\"Betty Graham\\",\\"Betty Graham\\",FEMALE,44,Graham,Graham,\\"(empty)\\",Monday,0,\\"betty@graham-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565381,\\"sold_product_565381_23349, sold_product_565381_12141\\",\\"sold_product_565381_23349, sold_product_565381_12141\\",\\"16.984, 7.988\\",\\"16.984, 7.988\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"8.328, 4.148\\",\\"16.984, 7.988\\",\\"23,349, 12,141\\",\\"Basic T-shirt - black, Belt - taupe\\",\\"Basic T-shirt - black, Belt - taupe\\",\\"1, 1\\",\\"ZO0060200602, ZO0076300763\\",\\"0, 0\\",\\"16.984, 7.988\\",\\"16.984, 7.988\\",\\"0, 0\\",\\"ZO0060200602, ZO0076300763\\",\\"24.984\\",\\"24.984\\",2,2,order,betty -vQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Kamal,Kamal,\\"Kamal Riley\\",\\"Kamal Riley\\",MALE,39,Riley,Riley,\\"(empty)\\",Monday,0,\\"kamal@riley-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565564,\\"sold_product_565564_19843, sold_product_565564_10979\\",\\"sold_product_565564_19843, sold_product_565564_10979\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"12.492, 7.988\\",\\"24.984, 16.984\\",\\"19,843, 10,979\\",\\"Cardigan - white/blue/khaki, Print T-shirt - dark green\\",\\"Cardigan - white/blue/khaki, Print T-shirt - dark green\\",\\"1, 1\\",\\"ZO0576305763, ZO0116801168\\",\\"0, 0\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"0, 0\\",\\"ZO0576305763, ZO0116801168\\",\\"41.969\\",\\"41.969\\",2,2,order,kamal -wAMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Thad,Thad,\\"Thad Parker\\",\\"Thad Parker\\",MALE,30,Parker,Parker,\\"(empty)\\",Monday,0,\\"thad@parker-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565392,\\"sold_product_565392_17873, sold_product_565392_14058\\",\\"sold_product_565392_17873, sold_product_565392_14058\\",\\"10.992, 20.984\\",\\"10.992, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"5.602, 10.492\\",\\"10.992, 20.984\\",\\"17,873, 14,058\\",\\"Sports shirt - Seashell, Sweatshirt - mottled light grey\\",\\"Sports shirt - Seashell, Sweatshirt - mottled light grey\\",\\"1, 1\\",\\"ZO0616606166, ZO0592205922\\",\\"0, 0\\",\\"10.992, 20.984\\",\\"10.992, 20.984\\",\\"0, 0\\",\\"ZO0616606166, ZO0592205922\\",\\"31.984\\",\\"31.984\\",2,2,order,thad -wQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Stephanie,Stephanie,\\"Stephanie Henderson\\",\\"Stephanie Henderson\\",FEMALE,6,Henderson,Henderson,\\"(empty)\\",Monday,0,\\"stephanie@henderson-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Karmanite\\",\\"Tigress Enterprises, Karmanite\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565410,\\"sold_product_565410_22028, sold_product_565410_5066\\",\\"sold_product_565410_22028, sold_product_565410_5066\\",\\"33, 100\\",\\"33, 100\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Karmanite\\",\\"Tigress Enterprises, Karmanite\\",\\"15.844, 45\\",\\"33, 100\\",\\"22,028, 5,066\\",\\"Ankle boots - cognac, Boots - black\\",\\"Ankle boots - cognac, Boots - black\\",\\"1, 1\\",\\"ZO0023600236, ZO0704307043\\",\\"0, 0\\",\\"33, 100\\",\\"33, 100\\",\\"0, 0\\",\\"ZO0023600236, ZO0704307043\\",133,133,2,2,order,stephanie -\\"-AMtOW0BH63Xcmy453H9\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Walters\\",\\"Elyssa Walters\\",FEMALE,27,Walters,Walters,\\"(empty)\\",Monday,0,\\"elyssa@walters-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565504,\\"sold_product_565504_21839, sold_product_565504_19546\\",\\"sold_product_565504_21839, sold_product_565504_19546\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"11.75, 21\\",\\"24.984, 42\\",\\"21,839, 19,546\\",\\"Jumper - dark grey multicolor, Summer dress - black\\",\\"Jumper - dark grey multicolor, Summer dress - black\\",\\"1, 1\\",\\"ZO0653406534, ZO0049300493\\",\\"0, 0\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"0, 0\\",\\"ZO0653406534, ZO0049300493\\",67,67,2,2,order,elyssa -\\"-wMtOW0BH63Xcmy453H9\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Betty,Betty,\\"Betty Allison\\",\\"Betty Allison\\",FEMALE,44,Allison,Allison,\\"(empty)\\",Monday,0,\\"betty@allison-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565334,\\"sold_product_565334_17565, sold_product_565334_24798\\",\\"sold_product_565334_17565, sold_product_565334_24798\\",\\"11.992, 75\\",\\"11.992, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"6, 35.25\\",\\"11.992, 75\\",\\"17,565, 24,798\\",\\"2 PACK - Vest - black/nude, Lace-up boots - black\\",\\"2 PACK - Vest - black/nude, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0641706417, ZO0382303823\\",\\"0, 0\\",\\"11.992, 75\\",\\"11.992, 75\\",\\"0, 0\\",\\"ZO0641706417, ZO0382303823\\",87,87,2,2,order,betty -IQMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Phil,Phil,\\"Phil Strickland\\",\\"Phil Strickland\\",MALE,50,Strickland,Strickland,\\"(empty)\\",Monday,0,\\"phil@strickland-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Spherecords, Angeldale\\",\\"Spherecords, Angeldale\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566079,\\"sold_product_566079_22969, sold_product_566079_775\\",\\"sold_product_566079_22969, sold_product_566079_775\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Angeldale\\",\\"Spherecords, Angeldale\\",\\"12.992, 30.594\\",\\"24.984, 60\\",\\"22,969, 775\\",\\"Pyjamas - blue, Boots - black\\",\\"Pyjamas - blue, Boots - black\\",\\"1, 1\\",\\"ZO0663306633, ZO0687306873\\",\\"0, 0\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"0, 0\\",\\"ZO0663306633, ZO0687306873\\",85,85,2,2,order,phil -IgMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Gilbert\\",\\"Betty Gilbert\\",FEMALE,44,Gilbert,Gilbert,\\"(empty)\\",Monday,0,\\"betty@gilbert-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Tigress Enterprises MAMA, Tigress Enterprises\\",\\"Tigress Enterprises MAMA, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566622,\\"sold_product_566622_13554, sold_product_566622_11691\\",\\"sold_product_566622_13554, sold_product_566622_11691\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises MAMA, Tigress Enterprises\\",\\"Tigress Enterprises MAMA, Tigress Enterprises\\",\\"12.25, 13.492\\",\\"24.984, 24.984\\",\\"13,554, 11,691\\",\\"Jersey dress - black, Cape - grey multicolor\\",\\"Jersey dress - black, Cape - grey multicolor\\",\\"1, 1\\",\\"ZO0228402284, ZO0082300823\\",\\"0, 0\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"0, 0\\",\\"ZO0228402284, ZO0082300823\\",\\"49.969\\",\\"49.969\\",2,2,order,betty -IwMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Elyssa,Elyssa,\\"Elyssa Long\\",\\"Elyssa Long\\",FEMALE,27,Long,Long,\\"(empty)\\",Monday,0,\\"elyssa@long-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566650,\\"sold_product_566650_20286, sold_product_566650_16948\\",\\"sold_product_566650_20286, sold_product_566650_16948\\",\\"65, 14.992\\",\\"65, 14.992\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"34.438, 7.941\\",\\"65, 14.992\\",\\"20,286, 16,948\\",\\"Long-sleeved Maxi Dress, Scarf - black\\",\\"Long-sleeved Maxi Dress, Scarf - black\\",\\"1, 1\\",\\"ZO0049100491, ZO0194801948\\",\\"0, 0\\",\\"65, 14.992\\",\\"65, 14.992\\",\\"0, 0\\",\\"ZO0049100491, ZO0194801948\\",80,80,2,2,order,elyssa -JAMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Strickland\\",\\"Abigail Strickland\\",FEMALE,46,Strickland,Strickland,\\"(empty)\\",Monday,0,\\"abigail@strickland-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566295,\\"sold_product_566295_17554, sold_product_566295_22815\\",\\"sold_product_566295_17554, sold_product_566295_22815\\",\\"18.984, 24.984\\",\\"18.984, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"9.313, 13.242\\",\\"18.984, 24.984\\",\\"17,554, 22,815\\",\\"Maxi dress - black, Jersey dress - black\\",\\"Maxi dress - black, Jersey dress - black\\",\\"1, 1\\",\\"ZO0635606356, ZO0043100431\\",\\"0, 0\\",\\"18.984, 24.984\\",\\"18.984, 24.984\\",\\"0, 0\\",\\"ZO0635606356, ZO0043100431\\",\\"43.969\\",\\"43.969\\",2,2,order,abigail -JQMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Kim\\",\\"Clarice Kim\\",FEMALE,18,Kim,Kim,\\"(empty)\\",Monday,0,\\"clarice@kim-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566538,\\"sold_product_566538_9847, sold_product_566538_16537\\",\\"sold_product_566538_9847, sold_product_566538_16537\\",\\"24.984, 50\\",\\"24.984, 50\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Gnomehouse\\",\\"Pyramidustries active, Gnomehouse\\",\\"13.492, 25.984\\",\\"24.984, 50\\",\\"9,847, 16,537\\",\\"Tights - black, Cocktail dress / Party dress - rose cloud\\",\\"Tights - black, Cocktail dress / Party dress - rose cloud\\",\\"1, 1\\",\\"ZO0224402244, ZO0342403424\\",\\"0, 0\\",\\"24.984, 50\\",\\"24.984, 50\\",\\"0, 0\\",\\"ZO0224402244, ZO0342403424\\",75,75,2,2,order,clarice -JgMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Allison\\",\\"Clarice Allison\\",FEMALE,18,Allison,Allison,\\"(empty)\\",Monday,0,\\"clarice@allison-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565918,\\"sold_product_565918_14195, sold_product_565918_7629\\",\\"sold_product_565918_14195, sold_product_565918_7629\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"7.648, 14.492\\",\\"16.984, 28.984\\",\\"14,195, 7,629\\",\\"Jersey dress - black, Jumper - peacoat/winter white\\",\\"Jersey dress - black, Jumper - peacoat/winter white\\",\\"1, 1\\",\\"ZO0155001550, ZO0072100721\\",\\"0, 0\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"0, 0\\",\\"ZO0155001550, ZO0072100721\\",\\"45.969\\",\\"45.969\\",2,2,order,clarice -UAMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Morrison\\",\\"Gwen Morrison\\",FEMALE,26,Morrison,Morrison,\\"(empty)\\",Monday,0,\\"gwen@morrison-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Tigress Enterprises, Crystal Lighting\\",\\"Tigress Enterprises, Crystal Lighting\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565678,\\"sold_product_565678_13792, sold_product_565678_22639\\",\\"sold_product_565678_13792, sold_product_565678_22639\\",\\"12.992, 24.984\\",\\"12.992, 24.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Crystal Lighting\\",\\"Tigress Enterprises, Crystal Lighting\\",\\"6.109, 11.25\\",\\"12.992, 24.984\\",\\"13,792, 22,639\\",\\"Scarf - white/grey, Wool jumper - white\\",\\"Scarf - white/grey, Wool jumper - white\\",\\"1, 1\\",\\"ZO0081800818, ZO0485604856\\",\\"0, 0\\",\\"12.992, 24.984\\",\\"12.992, 24.984\\",\\"0, 0\\",\\"ZO0081800818, ZO0485604856\\",\\"37.969\\",\\"37.969\\",2,2,order,gwen -UQMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jason,Jason,\\"Jason Graves\\",\\"Jason Graves\\",MALE,16,Graves,Graves,\\"(empty)\\",Monday,0,\\"jason@graves-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566564,\\"sold_product_566564_11560, sold_product_566564_17533\\",\\"sold_product_566564_11560, sold_product_566564_17533\\",\\"60, 11.992\\",\\"60, 11.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"29.406, 5.641\\",\\"60, 11.992\\",\\"11,560, 17,533\\",\\"Trainers - white, Print T-shirt - dark grey\\",\\"Trainers - white, Print T-shirt - dark grey\\",\\"1, 1\\",\\"ZO0107301073, ZO0293002930\\",\\"0, 0\\",\\"60, 11.992\\",\\"60, 11.992\\",\\"0, 0\\",\\"ZO0107301073, ZO0293002930\\",72,72,2,2,order,jason -ZgMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Dixon\\",\\"rania Dixon\\",FEMALE,24,Dixon,Dixon,\\"(empty)\\",Monday,0,\\"rania@dixon-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565498,\\"sold_product_565498_15436, sold_product_565498_16548\\",\\"sold_product_565498_15436, sold_product_565498_16548\\",\\"28.984, 16.984\\",\\"28.984, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"14.781, 9\\",\\"28.984, 16.984\\",\\"15,436, 16,548\\",\\"Jersey dress - anthra/black, Sweatshirt - black\\",\\"Jersey dress - anthra/black, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0046600466, ZO0503305033\\",\\"0, 0\\",\\"28.984, 16.984\\",\\"28.984, 16.984\\",\\"0, 0\\",\\"ZO0046600466, ZO0503305033\\",\\"45.969\\",\\"45.969\\",2,2,order,rani -gAMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Yasmine,Yasmine,\\"Yasmine Sutton\\",\\"Yasmine Sutton\\",FEMALE,43,Sutton,Sutton,\\"(empty)\\",Monday,0,\\"yasmine@sutton-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"Jun 23, 2019 @ 00:00:00.000\\",565793,\\"sold_product_565793_14151, sold_product_565793_22488\\",\\"sold_product_565793_14151, sold_product_565793_22488\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"11.75, 15.07\\",\\"24.984, 28.984\\",\\"14,151, 22,488\\",\\"Slim fit jeans - mid blue denim, Lace-ups - black glitter\\",\\"Slim fit jeans - mid blue denim, Lace-ups - black glitter\\",\\"1, 1\\",\\"ZO0712807128, ZO0007500075\\",\\"0, 0\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"0, 0\\",\\"ZO0712807128, ZO0007500075\\",\\"53.969\\",\\"53.969\\",2,2,order,yasmine -gQMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jason,Jason,\\"Jason Fletcher\\",\\"Jason Fletcher\\",MALE,16,Fletcher,Fletcher,\\"(empty)\\",Monday,0,\\"jason@fletcher-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566232,\\"sold_product_566232_21255, sold_product_566232_12532\\",\\"sold_product_566232_21255, sold_product_566232_12532\\",\\"7.988, 11.992\\",\\"7.988, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"3.76, 6.352\\",\\"7.988, 11.992\\",\\"21,255, 12,532\\",\\"Basic T-shirt - black, Print T-shirt - navy ecru\\",\\"Basic T-shirt - black, Print T-shirt - navy ecru\\",\\"1, 1\\",\\"ZO0545205452, ZO0437304373\\",\\"0, 0\\",\\"7.988, 11.992\\",\\"7.988, 11.992\\",\\"0, 0\\",\\"ZO0545205452, ZO0437304373\\",\\"19.984\\",\\"19.984\\",2,2,order,jason -ggMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Tariq,Tariq,\\"Tariq Larson\\",\\"Tariq Larson\\",MALE,25,Larson,Larson,\\"(empty)\\",Monday,0,\\"tariq@larson-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566259,\\"sold_product_566259_22713, sold_product_566259_21314\\",\\"sold_product_566259_22713, sold_product_566259_21314\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"32.375, 6.039\\",\\"60, 10.992\\",\\"22,713, 21,314\\",\\"Boots - black, Print T-shirt - white\\",\\"Boots - black, Print T-shirt - white\\",\\"1, 1\\",\\"ZO0694206942, ZO0553805538\\",\\"0, 0\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"0, 0\\",\\"ZO0694206942, ZO0553805538\\",71,71,2,2,order,tariq -pwMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Gwen,Gwen,\\"Gwen Walters\\",\\"Gwen Walters\\",FEMALE,26,Walters,Walters,\\"(empty)\\",Monday,0,\\"gwen@walters-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Champion Arts, Low Tide Media\\",\\"Champion Arts, Low Tide Media\\",\\"Jun 23, 2019 @ 00:00:00.000\\",566591,\\"sold_product_566591_19909, sold_product_566591_12575\\",\\"sold_product_566591_19909, sold_product_566591_12575\\",\\"28.984, 42\\",\\"28.984, 42\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 12, 2016 @ 00:00:00.000, Dec 12, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Low Tide Media\\",\\"Champion Arts, Low Tide Media\\",\\"13.047, 19.313\\",\\"28.984, 42\\",\\"19,909, 12,575\\",\\"Hoodie - black/white, Classic heels - nude\\",\\"Hoodie - black/white, Classic heels - nude\\",\\"1, 1\\",\\"ZO0502405024, ZO0366003660\\",\\"0, 0\\",\\"28.984, 42\\",\\"28.984, 42\\",\\"0, 0\\",\\"ZO0502405024, ZO0366003660\\",71,71,2,2,order,gwen -WQMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Yahya,Yahya,\\"Yahya Foster\\",\\"Yahya Foster\\",MALE,23,Foster,Foster,\\"(empty)\\",Sunday,6,\\"yahya@foster-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Angeldale\\",\\"Elitelligence, Angeldale\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564670,\\"sold_product_564670_11411, sold_product_564670_23904\\",\\"sold_product_564670_11411, sold_product_564670_23904\\",\\"14.992, 85\\",\\"14.992, 85\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Angeldale\\",\\"Elitelligence, Angeldale\\",\\"8.094, 38.25\\",\\"14.992, 85\\",\\"11,411, 23,904\\",\\"Shorts - bordeaux mel, High-top trainers - black\\",\\"Shorts - bordeaux mel, High-top trainers - black\\",\\"1, 1\\",\\"ZO0531205312, ZO0684706847\\",\\"0, 0\\",\\"14.992, 85\\",\\"14.992, 85\\",\\"0, 0\\",\\"ZO0531205312, ZO0684706847\\",100,100,2,2,order,yahya -WgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Jimenez\\",\\"Betty Jimenez\\",FEMALE,44,Jimenez,Jimenez,\\"(empty)\\",Sunday,6,\\"betty@jimenez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Oceanavigations, Champion Arts\\",\\"Oceanavigations, Champion Arts\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564710,\\"sold_product_564710_21089, sold_product_564710_10916\\",\\"sold_product_564710_21089, sold_product_564710_10916\\",\\"33, 20.984\\",\\"33, 20.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Champion Arts\\",\\"Oceanavigations, Champion Arts\\",\\"17.156, 10.906\\",\\"33, 20.984\\",\\"21,089, 10,916\\",\\"Jersey dress - black, Sweatshirt - black\\",\\"Jersey dress - black, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0263402634, ZO0499404994\\",\\"0, 0\\",\\"33, 20.984\\",\\"33, 20.984\\",\\"0, 0\\",\\"ZO0263402634, ZO0499404994\\",\\"53.969\\",\\"53.969\\",2,2,order,betty -YAMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Daniels\\",\\"Clarice Daniels\\",FEMALE,18,Daniels,Daniels,\\"(empty)\\",Sunday,6,\\"clarice@daniels-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Oceanavigations, Champion Arts\\",\\"Oceanavigations, Champion Arts\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564429,\\"sold_product_564429_19198, sold_product_564429_20939\\",\\"sold_product_564429_19198, sold_product_564429_20939\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Champion Arts\\",\\"Oceanavigations, Champion Arts\\",\\"24, 11.75\\",\\"50, 24.984\\",\\"19,198, 20,939\\",\\"Summer dress - grey, Shirt - black/white\\",\\"Summer dress - grey, Shirt - black/white\\",\\"1, 1\\",\\"ZO0260702607, ZO0495804958\\",\\"0, 0\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"0, 0\\",\\"ZO0260702607, ZO0495804958\\",75,75,2,2,order,clarice -YQMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Clayton\\",\\"Jackson Clayton\\",MALE,13,Clayton,Clayton,\\"(empty)\\",Sunday,6,\\"jackson@clayton-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564479,\\"sold_product_564479_6603, sold_product_564479_21164\\",\\"sold_product_564479_6603, sold_product_564479_21164\\",\\"75, 10.992\\",\\"75, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"39, 5.93\\",\\"75, 10.992\\",\\"6,603, 21,164\\",\\"Suit jacket - navy, Long sleeved top - dark blue\\",\\"Suit jacket - navy, Long sleeved top - dark blue\\",\\"1, 1\\",\\"ZO0409304093, ZO0436904369\\",\\"0, 0\\",\\"75, 10.992\\",\\"75, 10.992\\",\\"0, 0\\",\\"ZO0409304093, ZO0436904369\\",86,86,2,2,order,jackson -YgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Davidson\\",\\"Abd Davidson\\",MALE,52,Davidson,Davidson,\\"(empty)\\",Sunday,6,\\"abd@davidson-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564513,\\"sold_product_564513_1824, sold_product_564513_19618\\",\\"sold_product_564513_1824, sold_product_564513_19618\\",\\"42, 42\\",\\"42, 42\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"20.156, 21\\",\\"42, 42\\",\\"1,824, 19,618\\",\\"Casual lace-ups - Violet, Waistcoat - petrol\\",\\"Casual lace-ups - Violet, Waistcoat - petrol\\",\\"1, 1\\",\\"ZO0390003900, ZO0287902879\\",\\"0, 0\\",\\"42, 42\\",\\"42, 42\\",\\"0, 0\\",\\"ZO0390003900, ZO0287902879\\",84,84,2,2,order,abd -xAMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,Stephanie,Stephanie,\\"Stephanie Rowe\\",\\"Stephanie Rowe\\",FEMALE,6,Rowe,Rowe,\\"(empty)\\",Sunday,6,\\"stephanie@rowe-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564885,\\"sold_product_564885_16366, sold_product_564885_11518\\",\\"sold_product_564885_16366, sold_product_564885_11518\\",\\"21.984, 10.992\\",\\"21.984, 10.992\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"10.344, 5.281\\",\\"21.984, 10.992\\",\\"16,366, 11,518\\",\\"Wallet - red, Scarf - white/navy/red\\",\\"Wallet - red, Scarf - white/navy/red\\",\\"1, 1\\",\\"ZO0303803038, ZO0192501925\\",\\"0, 0\\",\\"21.984, 10.992\\",\\"21.984, 10.992\\",\\"0, 0\\",\\"ZO0303803038, ZO0192501925\\",\\"32.969\\",\\"32.969\\",2,2,order,stephanie -UwMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Bryant\\",\\"Mostafa Bryant\\",MALE,9,Bryant,Bryant,\\"(empty)\\",Sunday,6,\\"mostafa@bryant-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565150,\\"sold_product_565150_14275, sold_product_565150_22504\\",\\"sold_product_565150_14275, sold_product_565150_22504\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"25, 13.492\\",\\"50, 24.984\\",\\"14,275, 22,504\\",\\"Winter jacket - black, Shirt - red-blue\\",\\"Winter jacket - black, Shirt - red-blue\\",\\"1, 1\\",\\"ZO0624906249, ZO0411604116\\",\\"0, 0\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"0, 0\\",\\"ZO0624906249, ZO0411604116\\",75,75,2,2,order,mostafa -VAMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Jackson,Jackson,\\"Jackson Wood\\",\\"Jackson Wood\\",MALE,13,Wood,Wood,\\"(empty)\\",Sunday,6,\\"jackson@wood-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565206,\\"sold_product_565206_18416, sold_product_565206_16131\\",\\"sold_product_565206_18416, sold_product_565206_16131\\",\\"85, 60\\",\\"85, 60\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"45.031, 27\\",\\"85, 60\\",\\"18,416, 16,131\\",\\"Briefcase - dark brown, Lace-up boots - black\\",\\"Briefcase - dark brown, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0316303163, ZO0401004010\\",\\"0, 0\\",\\"85, 60\\",\\"85, 60\\",\\"0, 0\\",\\"ZO0316303163, ZO0401004010\\",145,145,2,2,order,jackson -9QMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Baker\\",\\"rania Baker\\",FEMALE,24,Baker,Baker,\\"(empty)\\",Sunday,6,\\"rania@baker-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Pyramidustries active, Champion Arts\\",\\"Pyramidustries active, Champion Arts\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564759,\\"sold_product_564759_10104, sold_product_564759_20756\\",\\"sold_product_564759_10104, sold_product_564759_20756\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Champion Arts\\",\\"Pyramidustries active, Champion Arts\\",\\"8.828, 5.059\\",\\"16.984, 10.992\\",\\"10,104, 20,756\\",\\"Print T-shirt - black, Print T-shirt - red\\",\\"Print T-shirt - black, Print T-shirt - red\\",\\"1, 1\\",\\"ZO0218802188, ZO0492604926\\",\\"0, 0\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"0, 0\\",\\"ZO0218802188, ZO0492604926\\",\\"27.984\\",\\"27.984\\",2,2,order,rani -BAMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Massey\\",\\"Wilhemina St. Massey\\",FEMALE,17,Massey,Massey,\\"(empty)\\",Sunday,6,\\"wilhemina st.@massey-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Pyramidustries active, Champion Arts\\",\\"Pyramidustries active, Champion Arts\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564144,\\"sold_product_564144_20744, sold_product_564144_13946\\",\\"sold_product_564144_20744, sold_product_564144_13946\\",\\"16.984, 20.984\\",\\"16.984, 20.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Champion Arts\\",\\"Pyramidustries active, Champion Arts\\",\\"8.328, 9.656\\",\\"16.984, 20.984\\",\\"20,744, 13,946\\",\\"Long sleeved top - black, Hoodie - dark grey multicolor\\",\\"Long sleeved top - black, Hoodie - dark grey multicolor\\",\\"1, 1\\",\\"ZO0218602186, ZO0501005010\\",\\"0, 0\\",\\"16.984, 20.984\\",\\"16.984, 20.984\\",\\"0, 0\\",\\"ZO0218602186, ZO0501005010\\",\\"37.969\\",\\"37.969\\",2,2,order,wilhemina -BgMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Smith\\",\\"Abd Smith\\",MALE,52,Smith,Smith,\\"(empty)\\",Sunday,6,\\"abd@smith-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563909,\\"sold_product_563909_15619, sold_product_563909_17976\\",\\"sold_product_563909_15619, sold_product_563909_17976\\",\\"28.984, 24.984\\",\\"28.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"13.633, 12.25\\",\\"28.984, 24.984\\",\\"15,619, 17,976\\",\\"Jumper - dark blue, Jumper - blue\\",\\"Jumper - dark blue, Jumper - blue\\",\\"1, 1\\",\\"ZO0452804528, ZO0453604536\\",\\"0, 0\\",\\"28.984, 24.984\\",\\"28.984, 24.984\\",\\"0, 0\\",\\"ZO0452804528, ZO0453604536\\",\\"53.969\\",\\"53.969\\",2,2,order,abd -QgMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Sonya,Sonya,\\"Sonya Thompson\\",\\"Sonya Thompson\\",FEMALE,28,Thompson,Thompson,\\"(empty)\\",Sunday,6,\\"sonya@thompson-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Pyramidustries, Low Tide Media\\",\\"Pyramidustries, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564869,\\"sold_product_564869_19715, sold_product_564869_7445\\",\\"sold_product_564869_19715, sold_product_564869_7445\\",\\"10.992, 42\\",\\"10.992, 42\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Low Tide Media\\",\\"Pyramidustries, Low Tide Media\\",\\"5.93, 20.578\\",\\"10.992, 42\\",\\"19,715, 7,445\\",\\"Snood - nude/turquoise/pink, High heels - black\\",\\"Snood - nude/turquoise/pink, High heels - black\\",\\"1, 1\\",\\"ZO0192401924, ZO0366703667\\",\\"0, 0\\",\\"10.992, 42\\",\\"10.992, 42\\",\\"0, 0\\",\\"ZO0192401924, ZO0366703667\\",\\"52.969\\",\\"52.969\\",2,2,order,sonya -jQMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Recip,Recip,\\"Recip Tran\\",\\"Recip Tran\\",MALE,10,Tran,Tran,\\"(empty)\\",Sunday,6,\\"recip@tran-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564619,\\"sold_product_564619_19268, sold_product_564619_20016\\",\\"sold_product_564619_19268, sold_product_564619_20016\\",\\"85, 60\\",\\"85, 60\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"42.5, 28.203\\",\\"85, 60\\",\\"19,268, 20,016\\",\\"Briefcase - antique cognac, Lace-up boots - khaki\\",\\"Briefcase - antique cognac, Lace-up boots - khaki\\",\\"1, 1\\",\\"ZO0470304703, ZO0406204062\\",\\"0, 0\\",\\"85, 60\\",\\"85, 60\\",\\"0, 0\\",\\"ZO0470304703, ZO0406204062\\",145,145,2,2,order,recip -mwMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Samir,Samir,\\"Samir Moss\\",\\"Samir Moss\\",MALE,34,Moss,Moss,\\"(empty)\\",Sunday,6,\\"samir@moss-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564237,\\"sold_product_564237_19840, sold_product_564237_13857\\",\\"sold_product_564237_19840, sold_product_564237_13857\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"10.289, 17.156\\",\\"20.984, 33\\",\\"19,840, 13,857\\",\\"Watch - black, Trainers - beige\\",\\"Watch - black, Trainers - beige\\",\\"1, 1\\",\\"ZO0311203112, ZO0395703957\\",\\"0, 0\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"0, 0\\",\\"ZO0311203112, ZO0395703957\\",\\"53.969\\",\\"53.969\\",2,2,order,samir -\\"-QMtOW0BH63Xcmy44WNv\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Moss\\",\\"Fitzgerald Moss\\",MALE,11,Moss,Moss,\\"(empty)\\",Sunday,6,\\"fitzgerald@moss-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564269,\\"sold_product_564269_18446, sold_product_564269_19731\\",\\"sold_product_564269_18446, sold_product_564269_19731\\",\\"37, 10.992\\",\\"37, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"17.016, 5.059\\",\\"37, 10.992\\",\\"18,446, 19,731\\",\\"Shirt - dark grey multicolor, Print T-shirt - white/dark blue\\",\\"Shirt - dark grey multicolor, Print T-shirt - white/dark blue\\",\\"1, 1\\",\\"ZO0281102811, ZO0555705557\\",\\"0, 0\\",\\"37, 10.992\\",\\"37, 10.992\\",\\"0, 0\\",\\"ZO0281102811, ZO0555705557\\",\\"47.969\\",\\"47.969\\",2,2,order,fuzzy -NAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Kamal,Kamal,\\"Kamal Schultz\\",\\"Kamal Schultz\\",MALE,39,Schultz,Schultz,\\"(empty)\\",Sunday,6,\\"kamal@schultz-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564842,\\"sold_product_564842_13508, sold_product_564842_24934\\",\\"sold_product_564842_13508, sold_product_564842_24934\\",\\"85, 50\\",\\"85, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"43.344, 22.5\\",\\"85, 50\\",\\"13,508, 24,934\\",\\"Light jacket - tan, Lace-up boots - resin coffee\\",\\"Light jacket - tan, Lace-up boots - resin coffee\\",\\"1, 1\\",\\"ZO0432004320, ZO0403504035\\",\\"0, 0\\",\\"85, 50\\",\\"85, 50\\",\\"0, 0\\",\\"ZO0432004320, ZO0403504035\\",135,135,2,2,order,kamal -NQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Roberson\\",\\"Yasmine Roberson\\",FEMALE,43,Roberson,Roberson,\\"(empty)\\",Sunday,6,\\"yasmine@roberson-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Gnomehouse, Tigress Enterprises MAMA\\",\\"Gnomehouse, Tigress Enterprises MAMA\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564893,\\"sold_product_564893_24371, sold_product_564893_20755\\",\\"sold_product_564893_24371, sold_product_564893_20755\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises MAMA\\",\\"Gnomehouse, Tigress Enterprises MAMA\\",\\"25.984, 14.781\\",\\"50, 28.984\\",\\"24,371, 20,755\\",\\"Lace-ups - rose, Trousers - black denim\\",\\"Lace-ups - rose, Trousers - black denim\\",\\"1, 1\\",\\"ZO0322403224, ZO0227802278\\",\\"0, 0\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"0, 0\\",\\"ZO0322403224, ZO0227802278\\",79,79,2,2,order,yasmine -SQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Fletcher\\",\\"Betty Fletcher\\",FEMALE,44,Fletcher,Fletcher,\\"(empty)\\",Sunday,6,\\"betty@fletcher-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",Pyramidustries,Pyramidustries,\\"Jun 22, 2019 @ 00:00:00.000\\",564215,\\"sold_product_564215_17589, sold_product_564215_17920\\",\\"sold_product_564215_17589, sold_product_564215_17920\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"17.484, 12.492\\",\\"33, 24.984\\",\\"17,589, 17,920\\",\\"Jumpsuit - black, Maxi dress - black\\",\\"Jumpsuit - black, Maxi dress - black\\",\\"1, 1\\",\\"ZO0147201472, ZO0152201522\\",\\"0, 0\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"0, 0\\",\\"ZO0147201472, ZO0152201522\\",\\"57.969\\",\\"57.969\\",2,2,order,betty -TAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Yasmine,Yasmine,\\"Yasmine Marshall\\",\\"Yasmine Marshall\\",FEMALE,43,Marshall,Marshall,\\"(empty)\\",Sunday,6,\\"yasmine@marshall-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Tigress Enterprises, Primemaster\\",\\"Tigress Enterprises, Primemaster\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564725,\\"sold_product_564725_21497, sold_product_564725_14166\\",\\"sold_product_564725_21497, sold_product_564725_14166\\",\\"24.984, 125\\",\\"24.984, 125\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Primemaster\\",\\"Tigress Enterprises, Primemaster\\",\\"13.492, 61.25\\",\\"24.984, 125\\",\\"21,497, 14,166\\",\\"Jumper - sand, Platform boots - golden\\",\\"Jumper - sand, Platform boots - golden\\",\\"1, 1\\",\\"ZO0071700717, ZO0364303643\\",\\"0, 0\\",\\"24.984, 125\\",\\"24.984, 125\\",\\"0, 0\\",\\"ZO0071700717, ZO0364303643\\",150,150,2,2,order,yasmine -TQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Muniz,Muniz,\\"Muniz Allison\\",\\"Muniz Allison\\",MALE,37,Allison,Allison,\\"(empty)\\",Sunday,6,\\"muniz@allison-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564733,\\"sold_product_564733_1550, sold_product_564733_13038\\",\\"sold_product_564733_1550, sold_product_564733_13038\\",\\"33, 65\\",\\"33, 65\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"14.852, 31.203\\",\\"33, 65\\",\\"1,550, 13,038\\",\\"Casual lace-ups - dark brown, Suit jacket - grey\\",\\"Casual lace-ups - dark brown, Suit jacket - grey\\",\\"1, 1\\",\\"ZO0384303843, ZO0273702737\\",\\"0, 0\\",\\"33, 65\\",\\"33, 65\\",\\"0, 0\\",\\"ZO0384303843, ZO0273702737\\",98,98,2,2,order,muniz -mAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Mccarthy\\",\\"Rabbia Al Mccarthy\\",FEMALE,5,Mccarthy,Mccarthy,\\"(empty)\\",Sunday,6,\\"rabbia al@mccarthy-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises MAMA, Oceanavigations\\",\\"Tigress Enterprises MAMA, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564331,\\"sold_product_564331_24927, sold_product_564331_11378\\",\\"sold_product_564331_24927, sold_product_564331_11378\\",\\"37, 11.992\\",\\"37, 11.992\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises MAMA, Oceanavigations\\",\\"Tigress Enterprises MAMA, Oceanavigations\\",\\"18.859, 5.762\\",\\"37, 11.992\\",\\"24,927, 11,378\\",\\"Summer dress - black, Wallet - black\\",\\"Summer dress - black, Wallet - black\\",\\"1, 1\\",\\"ZO0229402294, ZO0303303033\\",\\"0, 0\\",\\"37, 11.992\\",\\"37, 11.992\\",\\"0, 0\\",\\"ZO0229402294, ZO0303303033\\",\\"48.969\\",\\"48.969\\",2,2,order,rabbia -mQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jason,Jason,\\"Jason Gregory\\",\\"Jason Gregory\\",MALE,16,Gregory,Gregory,\\"(empty)\\",Sunday,6,\\"jason@gregory-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564350,\\"sold_product_564350_15296, sold_product_564350_19902\\",\\"sold_product_564350_15296, sold_product_564350_19902\\",\\"18.984, 13.992\\",\\"18.984, 13.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"9.117, 7.41\\",\\"18.984, 13.992\\",\\"15,296, 19,902\\",\\"Polo shirt - red, TARTAN 3 PACK - Shorts - tartan/Blue Violety/dark grey\\",\\"Polo shirt - red, TARTAN 3 PACK - Shorts - tartan/Blue Violety/dark grey\\",\\"1, 1\\",\\"ZO0444104441, ZO0476804768\\",\\"0, 0\\",\\"18.984, 13.992\\",\\"18.984, 13.992\\",\\"0, 0\\",\\"ZO0444104441, ZO0476804768\\",\\"32.969\\",\\"32.969\\",2,2,order,jason -mgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Mccarthy\\",\\"Betty Mccarthy\\",FEMALE,44,Mccarthy,Mccarthy,\\"(empty)\\",Sunday,6,\\"betty@mccarthy-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",Gnomehouse,Gnomehouse,\\"Jun 22, 2019 @ 00:00:00.000\\",564398,\\"sold_product_564398_15957, sold_product_564398_18712\\",\\"sold_product_564398_15957, sold_product_564398_18712\\",\\"37, 75\\",\\"37, 75\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Gnomehouse\\",\\"Gnomehouse, Gnomehouse\\",\\"19.234, 39.75\\",\\"37, 75\\",\\"15,957, 18,712\\",\\"A-line skirt - Pale Violet Red, Classic coat - navy blazer\\",\\"A-line skirt - Pale Violet Red, Classic coat - navy blazer\\",\\"1, 1\\",\\"ZO0328703287, ZO0351003510\\",\\"0, 0\\",\\"37, 75\\",\\"37, 75\\",\\"0, 0\\",\\"ZO0328703287, ZO0351003510\\",112,112,2,2,order,betty -mwMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Diane,Diane,\\"Diane Gibbs\\",\\"Diane Gibbs\\",FEMALE,22,Gibbs,Gibbs,\\"(empty)\\",Sunday,6,\\"diane@gibbs-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Pyramidustries, Champion Arts\\",\\"Pyramidustries, Champion Arts\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564409,\\"sold_product_564409_23179, sold_product_564409_22261\\",\\"sold_product_564409_23179, sold_product_564409_22261\\",\\"20.984, 50\\",\\"20.984, 50\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Champion Arts\\",\\"Pyramidustries, Champion Arts\\",\\"9.656, 22.5\\",\\"20.984, 50\\",\\"23,179, 22,261\\",\\"Sweatshirt - berry, Winter jacket - bordeaux\\",\\"Sweatshirt - berry, Winter jacket - bordeaux\\",\\"1, 1\\",\\"ZO0178501785, ZO0503805038\\",\\"0, 0\\",\\"20.984, 50\\",\\"20.984, 50\\",\\"0, 0\\",\\"ZO0178501785, ZO0503805038\\",71,71,2,2,order,diane -nAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Hicham,Hicham,\\"Hicham Baker\\",\\"Hicham Baker\\",MALE,8,Baker,Baker,\\"(empty)\\",Sunday,6,\\"hicham@baker-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564024,\\"sold_product_564024_24786, sold_product_564024_19600\\",\\"sold_product_564024_24786, sold_product_564024_19600\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"11.25, 7.648\\",\\"24.984, 16.984\\",\\"24,786, 19,600\\",\\"Slim fit jeans - black, Sports shorts - mottled grey\\",\\"Slim fit jeans - black, Sports shorts - mottled grey\\",\\"1, 1\\",\\"ZO0534405344, ZO0619006190\\",\\"0, 0\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"0, 0\\",\\"ZO0534405344, ZO0619006190\\",\\"41.969\\",\\"41.969\\",2,2,order,hicham -sgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Perkins\\",\\"Robbie Perkins\\",MALE,48,Perkins,Perkins,\\"(empty)\\",Sunday,6,\\"robbie@perkins-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564271,\\"sold_product_564271_12818, sold_product_564271_18444\\",\\"sold_product_564271_12818, sold_product_564271_18444\\",\\"16.984, 50\\",\\"16.984, 50\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"8.328, 26.984\\",\\"16.984, 50\\",\\"12,818, 18,444\\",\\"Trainers - black, Summer jacket - dark blue\\",\\"Trainers - black, Summer jacket - dark blue\\",\\"1, 1\\",\\"ZO0507905079, ZO0430804308\\",\\"0, 0\\",\\"16.984, 50\\",\\"16.984, 50\\",\\"0, 0\\",\\"ZO0507905079, ZO0430804308\\",67,67,2,2,order,robbie -DgMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Sonya,Sonya,\\"Sonya Rodriguez\\",\\"Sonya Rodriguez\\",FEMALE,28,Rodriguez,Rodriguez,\\"(empty)\\",Sunday,6,\\"sonya@rodriguez-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Microlutions, Pyramidustries\\",\\"Microlutions, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564676,\\"sold_product_564676_22697, sold_product_564676_12704\\",\\"sold_product_564676_22697, sold_product_564676_12704\\",\\"33, 33\\",\\"33, 33\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Pyramidustries\\",\\"Microlutions, Pyramidustries\\",\\"14.852, 16.172\\",\\"33, 33\\",\\"22,697, 12,704\\",\\"Dress - red/black, Ankle boots - cognac\\",\\"Dress - red/black, Ankle boots - cognac\\",\\"1, 1\\",\\"ZO0108401084, ZO0139301393\\",\\"0, 0\\",\\"33, 33\\",\\"33, 33\\",\\"0, 0\\",\\"ZO0108401084, ZO0139301393\\",66,66,2,2,order,sonya -FAMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Bryan\\",\\"Sultan Al Bryan\\",MALE,19,Bryan,Bryan,\\"(empty)\\",Sunday,6,\\"sultan al@bryan-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Elitelligence, Angeldale\\",\\"Elitelligence, Angeldale\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564445,\\"sold_product_564445_14799, sold_product_564445_15411\\",\\"sold_product_564445_14799, sold_product_564445_15411\\",\\"22.984, 16.984\\",\\"22.984, 16.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Angeldale\\",\\"Elitelligence, Angeldale\\",\\"11.953, 7.82\\",\\"22.984, 16.984\\",\\"14,799, 15,411\\",\\"Sweatshirt - mottled grey, Belt - black\\",\\"Sweatshirt - mottled grey, Belt - black\\",\\"1, 1\\",\\"ZO0593805938, ZO0701407014\\",\\"0, 0\\",\\"22.984, 16.984\\",\\"22.984, 16.984\\",\\"0, 0\\",\\"ZO0593805938, ZO0701407014\\",\\"39.969\\",\\"39.969\\",2,2,order,sultan -fgMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Phil,Phil,\\"Phil Hodges\\",\\"Phil Hodges\\",MALE,50,Hodges,Hodges,\\"(empty)\\",Sunday,6,\\"phil@hodges-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",Elitelligence,Elitelligence,\\"Jun 22, 2019 @ 00:00:00.000\\",564241,\\"sold_product_564241_11300, sold_product_564241_16698\\",\\"sold_product_564241_11300, sold_product_564241_16698\\",\\"20.984, 7.988\\",\\"20.984, 7.988\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"9.867, 4.309\\",\\"20.984, 7.988\\",\\"11,300, 16,698\\",\\"Rucksack - black/grey multicolor , Basic T-shirt - light red\\",\\"Rucksack - black/grey multicolor , Basic T-shirt - light red\\",\\"1, 1\\",\\"ZO0605506055, ZO0547505475\\",\\"0, 0\\",\\"20.984, 7.988\\",\\"20.984, 7.988\\",\\"0, 0\\",\\"ZO0605506055, ZO0547505475\\",\\"28.984\\",\\"28.984\\",2,2,order,phil -fwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Phil,Phil,\\"Phil Hernandez\\",\\"Phil Hernandez\\",MALE,50,Hernandez,Hernandez,\\"(empty)\\",Sunday,6,\\"phil@hernandez-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",Elitelligence,Elitelligence,\\"Jun 22, 2019 @ 00:00:00.000\\",564272,\\"sold_product_564272_24786, sold_product_564272_19965\\",\\"sold_product_564272_24786, sold_product_564272_19965\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"11.25, 14.211\\",\\"24.984, 28.984\\",\\"24,786, 19,965\\",\\"Slim fit jeans - black, Casual lace-ups - dark grey\\",\\"Slim fit jeans - black, Casual lace-ups - dark grey\\",\\"1, 1\\",\\"ZO0534405344, ZO0512105121\\",\\"0, 0\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"0, 0\\",\\"ZO0534405344, ZO0512105121\\",\\"53.969\\",\\"53.969\\",2,2,order,phil -0AMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Jacobs\\",\\"Mostafa Jacobs\\",MALE,9,Jacobs,Jacobs,\\"(empty)\\",Sunday,6,\\"mostafa@jacobs-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Elitelligence,Elitelligence,\\"Jun 22, 2019 @ 00:00:00.000\\",564844,\\"sold_product_564844_24343, sold_product_564844_13084\\",\\"sold_product_564844_24343, sold_product_564844_13084\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"5.391, 12.742\\",\\"10.992, 24.984\\",\\"24,343, 13,084\\",\\"Print T-shirt - white, Chinos - Forest Green\\",\\"Print T-shirt - white, Chinos - Forest Green\\",\\"1, 1\\",\\"ZO0553205532, ZO0526205262\\",\\"0, 0\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"0, 0\\",\\"ZO0553205532, ZO0526205262\\",\\"35.969\\",\\"35.969\\",2,2,order,mostafa -0QMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Hansen\\",\\"Sonya Hansen\\",FEMALE,28,Hansen,Hansen,\\"(empty)\\",Sunday,6,\\"sonya@hansen-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Spherecords Maternity, Gnomehouse\\",\\"Spherecords Maternity, Gnomehouse\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564883,\\"sold_product_564883_16522, sold_product_564883_25026\\",\\"sold_product_564883_16522, sold_product_564883_25026\\",\\"16.984, 50\\",\\"16.984, 50\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Maternity, Gnomehouse\\",\\"Spherecords Maternity, Gnomehouse\\",\\"7.988, 22.5\\",\\"16.984, 50\\",\\"16,522, 25,026\\",\\"Jersey dress - black/white , Summer dress - multicolour\\",\\"Jersey dress - black/white , Summer dress - multicolour\\",\\"1, 1\\",\\"ZO0705607056, ZO0334703347\\",\\"0, 0\\",\\"16.984, 50\\",\\"16.984, 50\\",\\"0, 0\\",\\"ZO0705607056, ZO0334703347\\",67,67,2,2,order,sonya -7wMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Ryan\\",\\"Rabbia Al Ryan\\",FEMALE,5,Ryan,Ryan,\\"(empty)\\",Sunday,6,\\"rabbia al@ryan-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564307,\\"sold_product_564307_18709, sold_product_564307_19883\\",\\"sold_product_564307_18709, sold_product_564307_19883\\",\\"75, 11.992\\",\\"75, 11.992\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"39.75, 5.52\\",\\"75, 11.992\\",\\"18,709, 19,883\\",\\"Boots - nude, Scarf - bordeaux/blue/rose\\",\\"Boots - nude, Scarf - bordeaux/blue/rose\\",\\"1, 1\\",\\"ZO0246602466, ZO0195201952\\",\\"0, 0\\",\\"75, 11.992\\",\\"75, 11.992\\",\\"0, 0\\",\\"ZO0246602466, ZO0195201952\\",87,87,2,2,order,rabbia -8AMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Ball\\",\\"Rabbia Al Ball\\",FEMALE,5,Ball,Ball,\\"(empty)\\",Sunday,6,\\"rabbia al@ball-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564148,\\"sold_product_564148_24106, sold_product_564148_16891\\",\\"sold_product_564148_24106, sold_product_564148_16891\\",\\"20.984, 21.984\\",\\"20.984, 21.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"9.867, 11.867\\",\\"20.984, 21.984\\",\\"24,106, 16,891\\",\\"Basic T-shirt - scarab, Rucksack - black \\",\\"Basic T-shirt - scarab, Rucksack - black \\",\\"1, 1\\",\\"ZO0057900579, ZO0211602116\\",\\"0, 0\\",\\"20.984, 21.984\\",\\"20.984, 21.984\\",\\"0, 0\\",\\"ZO0057900579, ZO0211602116\\",\\"42.969\\",\\"42.969\\",2,2,order,rabbia -\\"_wMtOW0BH63Xcmy44mWR\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Betty,Betty,\\"Betty Bryant\\",\\"Betty Bryant\\",FEMALE,44,Bryant,Bryant,\\"(empty)\\",Sunday,6,\\"betty@bryant-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564009,\\"sold_product_564009_13956, sold_product_564009_21367\\",\\"sold_product_564009_13956, sold_product_564009_21367\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"11.328, 14.781\\",\\"20.984, 28.984\\",\\"13,956, 21,367\\",\\"Tracksuit bottoms - black, Trainers - black/silver\\",\\"Tracksuit bottoms - black, Trainers - black/silver\\",\\"1, 1\\",\\"ZO0487904879, ZO0027100271\\",\\"0, 0\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"0, 0\\",\\"ZO0487904879, ZO0027100271\\",\\"49.969\\",\\"49.969\\",2,2,order,betty -AAMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Harvey\\",\\"Abd Harvey\\",MALE,52,Harvey,Harvey,\\"(empty)\\",Sunday,6,\\"abd@harvey-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564532,\\"sold_product_564532_21335, sold_product_564532_20709\\",\\"sold_product_564532_21335, sold_product_564532_20709\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"6.352, 12\\",\\"11.992, 24.984\\",\\"21,335, 20,709\\",\\"2 PACK - Basic T-shirt - red multicolor, Tracksuit bottoms - black\\",\\"2 PACK - Basic T-shirt - red multicolor, Tracksuit bottoms - black\\",\\"1, 1\\",\\"ZO0474704747, ZO0622006220\\",\\"0, 0\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"0, 0\\",\\"ZO0474704747, ZO0622006220\\",\\"36.969\\",\\"36.969\\",2,2,order,abd -cwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Cummings\\",\\"Abigail Cummings\\",FEMALE,46,Cummings,Cummings,\\"(empty)\\",Sunday,6,\\"abigail@cummings-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,Pyramidustries,Pyramidustries,\\"Jun 22, 2019 @ 00:00:00.000\\",565308,\\"sold_product_565308_16405, sold_product_565308_8985\\",\\"sold_product_565308_16405, sold_product_565308_8985\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"11.5, 27.594\\",\\"24.984, 60\\",\\"16,405, 8,985\\",\\"Vest - black, Light jacket - cognac\\",\\"Vest - black, Light jacket - cognac\\",\\"1, 1\\",\\"ZO0172401724, ZO0184901849\\",\\"0, 0\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"0, 0\\",\\"ZO0172401724, ZO0184901849\\",85,85,2,2,order,abigail -lQMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Moss\\",\\"Elyssa Moss\\",FEMALE,27,Moss,Moss,\\"(empty)\\",Sunday,6,\\"elyssa@moss-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564339,\\"sold_product_564339_24835, sold_product_564339_7932\\",\\"sold_product_564339_24835, sold_product_564339_7932\\",\\"13.992, 37\\",\\"13.992, 37\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"7.129, 19.594\\",\\"13.992, 37\\",\\"24,835, 7,932\\",\\"Scarf - red, Shirt - navy blazer\\",\\"Scarf - red, Shirt - navy blazer\\",\\"1, 1\\",\\"ZO0082900829, ZO0347903479\\",\\"0, 0\\",\\"13.992, 37\\",\\"13.992, 37\\",\\"0, 0\\",\\"ZO0082900829, ZO0347903479\\",\\"50.969\\",\\"50.969\\",2,2,order,elyssa -lgMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Muniz,Muniz,\\"Muniz Parker\\",\\"Muniz Parker\\",MALE,37,Parker,Parker,\\"(empty)\\",Sunday,6,\\"muniz@parker-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564361,\\"sold_product_564361_12864, sold_product_564361_14121\\",\\"sold_product_564361_12864, sold_product_564361_14121\\",\\"22.984, 17.984\\",\\"22.984, 17.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"11.719, 9.172\\",\\"22.984, 17.984\\",\\"12,864, 14,121\\",\\"SLIM FIT - Formal shirt - black, Watch - grey\\",\\"SLIM FIT - Formal shirt - black, Watch - grey\\",\\"1, 1\\",\\"ZO0422304223, ZO0600506005\\",\\"0, 0\\",\\"22.984, 17.984\\",\\"22.984, 17.984\\",\\"0, 0\\",\\"ZO0422304223, ZO0600506005\\",\\"40.969\\",\\"40.969\\",2,2,order,muniz -lwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Sonya,Sonya,\\"Sonya Boone\\",\\"Sonya Boone\\",FEMALE,28,Boone,Boone,\\"(empty)\\",Sunday,6,\\"sonya@boone-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564394,\\"sold_product_564394_18592, sold_product_564394_11914\\",\\"sold_product_564394_18592, sold_product_564394_11914\\",\\"25.984, 75\\",\\"25.984, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"14.031, 39\\",\\"25.984, 75\\",\\"18,592, 11,914\\",\\"Long sleeved top - grey, Wedge boots - white\\",\\"Long sleeved top - grey, Wedge boots - white\\",\\"1, 1\\",\\"ZO0269902699, ZO0667906679\\",\\"0, 0\\",\\"25.984, 75\\",\\"25.984, 75\\",\\"0, 0\\",\\"ZO0269902699, ZO0667906679\\",101,101,2,2,order,sonya -mAMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Hopkins\\",\\"rania Hopkins\\",FEMALE,24,Hopkins,Hopkins,\\"(empty)\\",Sunday,6,\\"rania@hopkins-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Pyramidustries, Spherecords\\",\\"Pyramidustries, Spherecords\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564030,\\"sold_product_564030_24668, sold_product_564030_20234\\",\\"sold_product_564030_24668, sold_product_564030_20234\\",\\"16.984, 6.988\\",\\"16.984, 6.988\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Spherecords\\",\\"Pyramidustries, Spherecords\\",\\"8.828, 3.221\\",\\"16.984, 6.988\\",\\"24,668, 20,234\\",\\"Sweatshirt - black, Vest - bordeaux\\",\\"Sweatshirt - black, Vest - bordeaux\\",\\"1, 1\\",\\"ZO0179901799, ZO0637606376\\",\\"0, 0\\",\\"16.984, 6.988\\",\\"16.984, 6.988\\",\\"0, 0\\",\\"ZO0179901799, ZO0637606376\\",\\"23.984\\",\\"23.984\\",2,2,order,rani -qwMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Salazar\\",\\"Mostafa Salazar\\",MALE,9,Salazar,Salazar,\\"(empty)\\",Sunday,6,\\"mostafa@salazar-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564661,\\"sold_product_564661_20323, sold_product_564661_20690\\",\\"sold_product_564661_20323, sold_product_564661_20690\\",\\"22.984, 33\\",\\"22.984, 33\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"12.18, 18.141\\",\\"22.984, 33\\",\\"20,323, 20,690\\",\\"Formal shirt - light blue, Sweatshirt - black\\",\\"Formal shirt - light blue, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0415004150, ZO0125501255\\",\\"0, 0\\",\\"22.984, 33\\",\\"22.984, 33\\",\\"0, 0\\",\\"ZO0415004150, ZO0125501255\\",\\"55.969\\",\\"55.969\\",2,2,order,mostafa -rAMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Yasmine,Yasmine,\\"Yasmine Estrada\\",\\"Yasmine Estrada\\",FEMALE,43,Estrada,Estrada,\\"(empty)\\",Sunday,6,\\"yasmine@estrada-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Spherecords Curvy, Primemaster\\",\\"Spherecords Curvy, Primemaster\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564706,\\"sold_product_564706_13450, sold_product_564706_11576\\",\\"sold_product_564706_13450, sold_product_564706_11576\\",\\"11.992, 115\\",\\"11.992, 115\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Curvy, Primemaster\\",\\"Spherecords Curvy, Primemaster\\",\\"5.879, 60.938\\",\\"11.992, 115\\",\\"13,450, 11,576\\",\\"Pencil skirt - black, High heeled boots - Midnight Blue\\",\\"Pencil skirt - black, High heeled boots - Midnight Blue\\",\\"1, 1\\",\\"ZO0709007090, ZO0362103621\\",\\"0, 0\\",\\"11.992, 115\\",\\"11.992, 115\\",\\"0, 0\\",\\"ZO0709007090, ZO0362103621\\",127,127,2,2,order,yasmine -sgMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Tran\\",\\"rania Tran\\",FEMALE,24,Tran,Tran,\\"(empty)\\",Sunday,6,\\"rania@tran-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564460,\\"sold_product_564460_24985, sold_product_564460_16158\\",\\"sold_product_564460_24985, sold_product_564460_16158\\",\\"24.984, 33\\",\\"24.984, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"12, 15.508\\",\\"24.984, 33\\",\\"24,985, 16,158\\",\\"Cardigan - peacoat, Blouse - Dark Turquoise\\",\\"Cardigan - peacoat, Blouse - Dark Turquoise\\",\\"1, 1\\",\\"ZO0655106551, ZO0349403494\\",\\"0, 0\\",\\"24.984, 33\\",\\"24.984, 33\\",\\"0, 0\\",\\"ZO0655106551, ZO0349403494\\",\\"57.969\\",\\"57.969\\",2,2,order,rani -FwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Diane,Diane,\\"Diane Palmer\\",\\"Diane Palmer\\",FEMALE,22,Palmer,Palmer,\\"(empty)\\",Sunday,6,\\"diane@palmer-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564536,\\"sold_product_564536_17282, sold_product_564536_12577\\",\\"sold_product_564536_17282, sold_product_564536_12577\\",\\"13.992, 50\\",\\"13.992, 50\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"6.719, 24.5\\",\\"13.992, 50\\",\\"17,282, 12,577\\",\\"Scarf - black, Sandals - beige\\",\\"Scarf - black, Sandals - beige\\",\\"1, 1\\",\\"ZO0304603046, ZO0370603706\\",\\"0, 0\\",\\"13.992, 50\\",\\"13.992, 50\\",\\"0, 0\\",\\"ZO0304603046, ZO0370603706\\",\\"63.969\\",\\"63.969\\",2,2,order,diane -GAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Bowers\\",\\"Abigail Bowers\\",FEMALE,46,Bowers,Bowers,\\"(empty)\\",Sunday,6,\\"abigail@bowers-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564559,\\"sold_product_564559_4882, sold_product_564559_16317\\",\\"sold_product_564559_4882, sold_product_564559_16317\\",\\"50, 21.984\\",\\"50, 21.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"26.484, 12.094\\",\\"50, 21.984\\",\\"4,882, 16,317\\",\\"Boots - brown, Shirt - light blue\\",\\"Boots - brown, Shirt - light blue\\",\\"1, 1\\",\\"ZO0015500155, ZO0650806508\\",\\"0, 0\\",\\"50, 21.984\\",\\"50, 21.984\\",\\"0, 0\\",\\"ZO0015500155, ZO0650806508\\",72,72,2,2,order,abigail -GQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Wood\\",\\"Clarice Wood\\",FEMALE,18,Wood,Wood,\\"(empty)\\",Sunday,6,\\"clarice@wood-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,Pyramidustries,Pyramidustries,\\"Jun 22, 2019 @ 00:00:00.000\\",564609,\\"sold_product_564609_23139, sold_product_564609_23243\\",\\"sold_product_564609_23139, sold_product_564609_23243\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"6.23, 12.492\\",\\"11.992, 24.984\\",\\"23,139, 23,243\\",\\"Print T-shirt - black/berry, Summer dress - dark purple\\",\\"Print T-shirt - black/berry, Summer dress - dark purple\\",\\"1, 1\\",\\"ZO0162401624, ZO0156001560\\",\\"0, 0\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"0, 0\\",\\"ZO0162401624, ZO0156001560\\",\\"36.969\\",\\"36.969\\",2,2,order,clarice -awMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Tariq,Tariq,\\"Tariq Caldwell\\",\\"Tariq Caldwell\\",MALE,25,Caldwell,Caldwell,\\"(empty)\\",Sunday,6,\\"tariq@caldwell-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565138,\\"sold_product_565138_18229, sold_product_565138_19505\\",\\"sold_product_565138_18229, sold_product_565138_19505\\",\\"8.992, 16.984\\",\\"8.992, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"4.578, 8.656\\",\\"8.992, 16.984\\",\\"18,229, 19,505\\",\\"Sports shirt - black, Polo shirt - dark blue\\",\\"Sports shirt - black, Polo shirt - dark blue\\",\\"1, 1\\",\\"ZO0615506155, ZO0445304453\\",\\"0, 0\\",\\"8.992, 16.984\\",\\"8.992, 16.984\\",\\"0, 0\\",\\"ZO0615506155, ZO0445304453\\",\\"25.984\\",\\"25.984\\",2,2,order,tariq -bAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Marwan,Marwan,\\"Marwan Taylor\\",\\"Marwan Taylor\\",MALE,51,Taylor,Taylor,\\"(empty)\\",Sunday,6,\\"marwan@taylor-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565025,\\"sold_product_565025_10984, sold_product_565025_12566\\",\\"sold_product_565025_10984, sold_product_565025_12566\\",\\"24.984, 7.988\\",\\"24.984, 7.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"11.5, 3.92\\",\\"24.984, 7.988\\",\\"10,984, 12,566\\",\\"Shirt - navy, Vest - dark blue\\",\\"Shirt - navy, Vest - dark blue\\",\\"1, 1\\",\\"ZO0280802808, ZO0549005490\\",\\"0, 0\\",\\"24.984, 7.988\\",\\"24.984, 7.988\\",\\"0, 0\\",\\"ZO0280802808, ZO0549005490\\",\\"32.969\\",\\"32.969\\",2,2,order,marwan -hgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Bowers\\",\\"Elyssa Bowers\\",FEMALE,27,Bowers,Bowers,\\"(empty)\\",Sunday,6,\\"elyssa@bowers-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Primemaster, Tigress Enterprises\\",\\"Primemaster, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564000,\\"sold_product_564000_21941, sold_product_564000_12880\\",\\"sold_product_564000_21941, sold_product_564000_12880\\",\\"110, 24.984\\",\\"110, 24.984\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Primemaster, Tigress Enterprises\\",\\"Primemaster, Tigress Enterprises\\",\\"55, 13.492\\",\\"110, 24.984\\",\\"21,941, 12,880\\",\\"Boots - grey/silver, Ankle boots - blue\\",\\"Boots - grey/silver, Ankle boots - blue\\",\\"1, 1\\",\\"ZO0364603646, ZO0018200182\\",\\"0, 0\\",\\"110, 24.984\\",\\"110, 24.984\\",\\"0, 0\\",\\"ZO0364603646, ZO0018200182\\",135,135,2,2,order,elyssa -hwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Samir,Samir,\\"Samir Meyer\\",\\"Samir Meyer\\",MALE,34,Meyer,Meyer,\\"(empty)\\",Sunday,6,\\"samir@meyer-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564557,\\"sold_product_564557_24657, sold_product_564557_24558\\",\\"sold_product_564557_24657, sold_product_564557_24558\\",\\"10.992, 10.992\\",\\"10.992, 10.992\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"5.93, 5.5\\",\\"10.992, 10.992\\",\\"24,657, 24,558\\",\\"7 PACK - Socks - black/grey/white/navy, Hat - dark grey multicolor\\",\\"7 PACK - Socks - black/grey/white/navy, Hat - dark grey multicolor\\",\\"1, 1\\",\\"ZO0664606646, ZO0460404604\\",\\"0, 0\\",\\"10.992, 10.992\\",\\"10.992, 10.992\\",\\"0, 0\\",\\"ZO0664606646, ZO0460404604\\",\\"21.984\\",\\"21.984\\",2,2,order,samir -iAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Elyssa,Elyssa,\\"Elyssa Cortez\\",\\"Elyssa Cortez\\",FEMALE,27,Cortez,Cortez,\\"(empty)\\",Sunday,6,\\"elyssa@cortez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Oceanavigations,Oceanavigations,\\"Jun 22, 2019 @ 00:00:00.000\\",564604,\\"sold_product_564604_20084, sold_product_564604_22900\\",\\"sold_product_564604_20084, sold_product_564604_22900\\",\\"60, 13.992\\",\\"60, 13.992\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"28.797, 6.578\\",\\"60, 13.992\\",\\"20,084, 22,900\\",\\"High heels - black, Scarf - black/taupe\\",\\"High heels - black, Scarf - black/taupe\\",\\"1, 1\\",\\"ZO0237702377, ZO0304303043\\",\\"0, 0\\",\\"60, 13.992\\",\\"60, 13.992\\",\\"0, 0\\",\\"ZO0237702377, ZO0304303043\\",74,74,2,2,order,elyssa -mAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yahya,Yahya,\\"Yahya Graham\\",\\"Yahya Graham\\",MALE,23,Graham,Graham,\\"(empty)\\",Sunday,6,\\"yahya@graham-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564777,\\"sold_product_564777_15017, sold_product_564777_22683\\",\\"sold_product_564777_15017, sold_product_564777_22683\\",\\"28.984, 33\\",\\"28.984, 33\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"13.633, 15.18\\",\\"28.984, 33\\",\\"15,017, 22,683\\",\\"Jumper - off-white, Jumper - black\\",\\"Jumper - off-white, Jumper - black\\",\\"1, 1\\",\\"ZO0452704527, ZO0122201222\\",\\"0, 0\\",\\"28.984, 33\\",\\"28.984, 33\\",\\"0, 0\\",\\"ZO0452704527, ZO0122201222\\",\\"61.969\\",\\"61.969\\",2,2,order,yahya -mQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Gwen,Gwen,\\"Gwen Rodriguez\\",\\"Gwen Rodriguez\\",FEMALE,26,Rodriguez,Rodriguez,\\"(empty)\\",Sunday,6,\\"gwen@rodriguez-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564812,\\"sold_product_564812_24272, sold_product_564812_12257\\",\\"sold_product_564812_24272, sold_product_564812_12257\\",\\"37, 20.984\\",\\"37, 20.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"18.125, 10.703\\",\\"37, 20.984\\",\\"24,272, 12,257\\",\\"Shirt - white, T-bar sandals - black\\",\\"Shirt - white, T-bar sandals - black\\",\\"1, 1\\",\\"ZO0266002660, ZO0031900319\\",\\"0, 0\\",\\"37, 20.984\\",\\"37, 20.984\\",\\"0, 0\\",\\"ZO0266002660, ZO0031900319\\",\\"57.969\\",\\"57.969\\",2,2,order,gwen -owMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jackson,Jackson,\\"Jackson Mcdonald\\",\\"Jackson Mcdonald\\",MALE,13,Mcdonald,Mcdonald,\\"(empty)\\",Sunday,6,\\"jackson@mcdonald-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Microlutions, Low Tide Media, Spritechnologies, Oceanavigations\\",\\"Microlutions, Low Tide Media, Spritechnologies, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",715752,\\"sold_product_715752_18080, sold_product_715752_18512, sold_product_715752_3636, sold_product_715752_6169\\",\\"sold_product_715752_18080, sold_product_715752_18512, sold_product_715752_3636, sold_product_715752_6169\\",\\"6.988, 65, 14.992, 20.984\\",\\"6.988, 65, 14.992, 20.984\\",\\"Men's Clothing, Men's Shoes, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Shoes, Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Microlutions, Low Tide Media, Spritechnologies, Oceanavigations\\",\\"Microlutions, Low Tide Media, Spritechnologies, Oceanavigations\\",\\"3.699, 34.438, 7.941, 11.539\\",\\"6.988, 65, 14.992, 20.984\\",\\"18,080, 18,512, 3,636, 6,169\\",\\"3 PACK - Socks - khaki/black, Lace-up boots - black/grey, Undershirt - black, Jumper - grey\\",\\"3 PACK - Socks - khaki/black, Lace-up boots - black/grey, Undershirt - black, Jumper - grey\\",\\"1, 1, 1, 1\\",\\"ZO0130801308, ZO0402604026, ZO0630506305, ZO0297402974\\",\\"0, 0, 0, 0\\",\\"6.988, 65, 14.992, 20.984\\",\\"6.988, 65, 14.992, 20.984\\",\\"0, 0, 0, 0\\",\\"ZO0130801308, ZO0402604026, ZO0630506305, ZO0297402974\\",\\"107.938\\",\\"107.938\\",4,4,order,jackson -sQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Diane,Diane,\\"Diane Watkins\\",\\"Diane Watkins\\",FEMALE,22,Watkins,Watkins,\\"(empty)\\",Sunday,6,\\"diane@watkins-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563964,\\"sold_product_563964_12582, sold_product_563964_18661\\",\\"sold_product_563964_12582, sold_product_563964_18661\\",\\"14.992, 85\\",\\"14.992, 85\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"6.898, 38.25\\",\\"14.992, 85\\",\\"12,582, 18,661\\",\\"Ballet pumps - nude, Winter boots - black\\",\\"Ballet pumps - nude, Winter boots - black\\",\\"1, 1\\",\\"ZO0001200012, ZO0251902519\\",\\"0, 0\\",\\"14.992, 85\\",\\"14.992, 85\\",\\"0, 0\\",\\"ZO0001200012, ZO0251902519\\",100,100,2,2,order,diane -2wMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Maldonado\\",\\"Betty Maldonado\\",FEMALE,44,Maldonado,Maldonado,\\"(empty)\\",Sunday,6,\\"betty@maldonado-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Pyramidustries active, Oceanavigations\\",\\"Pyramidustries active, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564315,\\"sold_product_564315_14794, sold_product_564315_25010\\",\\"sold_product_564315_14794, sold_product_564315_25010\\",\\"11.992, 17.984\\",\\"11.992, 17.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Oceanavigations\\",\\"Pyramidustries active, Oceanavigations\\",\\"5.762, 9.891\\",\\"11.992, 17.984\\",\\"14,794, 25,010\\",\\"Vest - sheer pink, Print T-shirt - white\\",\\"Vest - sheer pink, Print T-shirt - white\\",\\"1, 1\\",\\"ZO0221002210, ZO0263702637\\",\\"0, 0\\",\\"11.992, 17.984\\",\\"11.992, 17.984\\",\\"0, 0\\",\\"ZO0221002210, ZO0263702637\\",\\"29.984\\",\\"29.984\\",2,2,order,betty -CwMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Barber\\",\\"Elyssa Barber\\",FEMALE,27,Barber,Barber,\\"(empty)\\",Sunday,6,\\"elyssa@barber-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565237,\\"sold_product_565237_15847, sold_product_565237_9482\\",\\"sold_product_565237_15847, sold_product_565237_9482\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"23.5, 12.992\\",\\"50, 24.984\\",\\"15,847, 9,482\\",\\"Lace-ups - platino, Blouse - off white\\",\\"Lace-ups - platino, Blouse - off white\\",\\"1, 1\\",\\"ZO0323303233, ZO0172101721\\",\\"0, 0\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"0, 0\\",\\"ZO0323303233, ZO0172101721\\",75,75,2,2,order,elyssa -DgMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Samir,Samir,\\"Samir Tyler\\",\\"Samir Tyler\\",MALE,34,Tyler,Tyler,\\"(empty)\\",Sunday,6,\\"samir@tyler-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565090,\\"sold_product_565090_21928, sold_product_565090_1424\\",\\"sold_product_565090_21928, sold_product_565090_1424\\",\\"85, 42\\",\\"85, 42\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"46.75, 20.156\\",\\"85, 42\\",\\"21,928, 1,424\\",\\"Lace-up boots - black, Lace-up boots - black\\",\\"Lace-up boots - black, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0690306903, ZO0521005210\\",\\"0, 0\\",\\"85, 42\\",\\"85, 42\\",\\"0, 0\\",\\"ZO0690306903, ZO0521005210\\",127,127,2,2,order,samir -JAMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Porter\\",\\"Yuri Porter\\",MALE,21,Porter,Porter,\\"(empty)\\",Sunday,6,\\"yuri@porter-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564649,\\"sold_product_564649_1961, sold_product_564649_6945\\",\\"sold_product_564649_1961, sold_product_564649_6945\\",\\"65, 22.984\\",\\"65, 22.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"30.547, 11.273\\",\\"65, 22.984\\",\\"1,961, 6,945\\",\\"Lace-up boots - dark blue, Shirt - navy\\",\\"Lace-up boots - dark blue, Shirt - navy\\",\\"1, 1\\",\\"ZO0405704057, ZO0411704117\\",\\"0, 0\\",\\"65, 22.984\\",\\"65, 22.984\\",\\"0, 0\\",\\"ZO0405704057, ZO0411704117\\",88,88,2,2,order,yuri -KAMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Cummings\\",\\"Gwen Cummings\\",FEMALE,26,Cummings,Cummings,\\"(empty)\\",Sunday,6,\\"gwen@cummings-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564510,\\"sold_product_564510_15201, sold_product_564510_10898\\",\\"sold_product_564510_15201, sold_product_564510_10898\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"11.75, 14.781\\",\\"24.984, 28.984\\",\\"15,201, 10,898\\",\\"Handbag - black, Jumpsuit - black\\",\\"Handbag - black, Jumpsuit - black\\",\\"1, 1\\",\\"ZO0093600936, ZO0145301453\\",\\"0, 0\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"0, 0\\",\\"ZO0093600936, ZO0145301453\\",\\"53.969\\",\\"53.969\\",2,2,order,gwen -YwMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Brigitte,Brigitte,\\"Brigitte Cortez\\",\\"Brigitte Cortez\\",FEMALE,12,Cortez,Cortez,\\"(empty)\\",Sunday,6,\\"brigitte@cortez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises Curvy, Oceanavigations\\",\\"Tigress Enterprises Curvy, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565222,\\"sold_product_565222_20561, sold_product_565222_22115\\",\\"sold_product_565222_20561, sold_product_565222_22115\\",\\"24.984, 75\\",\\"24.984, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises Curvy, Oceanavigations\\",\\"Tigress Enterprises Curvy, Oceanavigations\\",\\"12.992, 34.5\\",\\"24.984, 75\\",\\"20,561, 22,115\\",\\"Tracksuit bottoms - black, Winter boots - taupe\\",\\"Tracksuit bottoms - black, Winter boots - taupe\\",\\"1, 1\\",\\"ZO0102001020, ZO0252402524\\",\\"0, 0\\",\\"24.984, 75\\",\\"24.984, 75\\",\\"0, 0\\",\\"ZO0102001020, ZO0252402524\\",100,100,2,2,order,brigitte -kQMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robert,Robert,\\"Robert Lawrence\\",\\"Robert Lawrence\\",MALE,29,Lawrence,Lawrence,\\"(empty)\\",Sunday,6,\\"robert@lawrence-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565233,\\"sold_product_565233_24859, sold_product_565233_12805\\",\\"sold_product_565233_24859, sold_product_565233_12805\\",\\"11.992, 55\\",\\"11.992, 55\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Low Tide Media\\",\\"Spritechnologies, Low Tide Media\\",\\"5.879, 29.141\\",\\"11.992, 55\\",\\"24,859, 12,805\\",\\"Sports shirt - black, Down jacket - dark beige\\",\\"Sports shirt - black, Down jacket - dark beige\\",\\"1, 1\\",\\"ZO0614906149, ZO0430404304\\",\\"0, 0\\",\\"11.992, 55\\",\\"11.992, 55\\",\\"0, 0\\",\\"ZO0614906149, ZO0430404304\\",67,67,2,2,order,robert -mgMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Brock\\",\\"Youssef Brock\\",MALE,31,Brock,Brock,\\"(empty)\\",Sunday,6,\\"youssef@brock-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 22, 2019 @ 00:00:00.000\\",565084,\\"sold_product_565084_11612, sold_product_565084_6793\\",\\"sold_product_565084_11612, sold_product_565084_6793\\",\\"10.992, 16.984\\",\\"10.992, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"5.82, 7.82\\",\\"10.992, 16.984\\",\\"11,612, 6,793\\",\\"Print T-shirt - grey, Jumper - grey multicolor\\",\\"Print T-shirt - grey, Jumper - grey multicolor\\",\\"1, 1\\",\\"ZO0549805498, ZO0541205412\\",\\"0, 0\\",\\"10.992, 16.984\\",\\"10.992, 16.984\\",\\"0, 0\\",\\"ZO0549805498, ZO0541205412\\",\\"27.984\\",\\"27.984\\",2,2,order,youssef -sQMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Mckenzie\\",\\"Elyssa Mckenzie\\",FEMALE,27,Mckenzie,Mckenzie,\\"(empty)\\",Sunday,6,\\"elyssa@mckenzie-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564796,\\"sold_product_564796_13332, sold_product_564796_23987\\",\\"sold_product_564796_13332, sold_product_564796_23987\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"15.18, 13.492\\",\\"33, 24.984\\",\\"13,332, 23,987\\",\\"Cowboy/Biker boots - cognac, Shirt - red/black\\",\\"Cowboy/Biker boots - cognac, Shirt - red/black\\",\\"1, 1\\",\\"ZO0022100221, ZO0172301723\\",\\"0, 0\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"0, 0\\",\\"ZO0022100221, ZO0172301723\\",\\"57.969\\",\\"57.969\\",2,2,order,elyssa -sgMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Burton\\",\\"Gwen Burton\\",FEMALE,26,Burton,Burton,\\"(empty)\\",Sunday,6,\\"gwen@burton-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Pyramidustries, Champion Arts\\",\\"Pyramidustries, Champion Arts\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564627,\\"sold_product_564627_16073, sold_product_564627_15494\\",\\"sold_product_564627_16073, sold_product_564627_15494\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Champion Arts\\",\\"Pyramidustries, Champion Arts\\",\\"11.75, 8.328\\",\\"24.984, 16.984\\",\\"16,073, 15,494\\",\\"Rucksack - black , Sweatshirt - black\\",\\"Rucksack - black , Sweatshirt - black\\",\\"1, 1\\",\\"ZO0211702117, ZO0499004990\\",\\"0, 0\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"0, 0\\",\\"ZO0211702117, ZO0499004990\\",\\"41.969\\",\\"41.969\\",2,2,order,gwen -twMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robert,Robert,\\"Robert James\\",\\"Robert James\\",MALE,29,James,James,\\"(empty)\\",Sunday,6,\\"robert@james-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",Elitelligence,Elitelligence,\\"Jun 22, 2019 @ 00:00:00.000\\",564257,\\"sold_product_564257_23012, sold_product_564257_14015\\",\\"sold_product_564257_23012, sold_product_564257_14015\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"17.813, 15.648\\",\\"33, 28.984\\",\\"23,012, 14,015\\",\\"Denim jacket - grey denim, Jumper - blue\\",\\"Denim jacket - grey denim, Jumper - blue\\",\\"1, 1\\",\\"ZO0539205392, ZO0577705777\\",\\"0, 0\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"0, 0\\",\\"ZO0539205392, ZO0577705777\\",\\"61.969\\",\\"61.969\\",2,2,order,robert -uwMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Boone\\",\\"Yuri Boone\\",MALE,21,Boone,Boone,\\"(empty)\\",Sunday,6,\\"yuri@boone-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564701,\\"sold_product_564701_18884, sold_product_564701_20066\\",\\"sold_product_564701_18884, sold_product_564701_20066\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"9.656, 13.242\\",\\"20.984, 24.984\\",\\"18,884, 20,066\\",\\"Sweatshirt - black /white, Shirt - oliv\\",\\"Sweatshirt - black /white, Shirt - oliv\\",\\"1, 1\\",\\"ZO0585205852, ZO0418104181\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0585205852, ZO0418104181\\",\\"45.969\\",\\"45.969\\",2,2,order,yuri -DwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Hicham,Hicham,\\"Hicham Bryant\\",\\"Hicham Bryant\\",MALE,8,Bryant,Bryant,\\"(empty)\\",Sunday,6,\\"hicham@bryant-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564915,\\"sold_product_564915_13194, sold_product_564915_13091\\",\\"sold_product_564915_13194, sold_product_564915_13091\\",\\"50, 29.984\\",\\"50, 29.984\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"24, 15.289\\",\\"50, 29.984\\",\\"13,194, 13,091\\",\\"Summer jacket - petrol, Trainers - navy\\",\\"Summer jacket - petrol, Trainers - navy\\",\\"1, 1\\",\\"ZO0286502865, ZO0394703947\\",\\"0, 0\\",\\"50, 29.984\\",\\"50, 29.984\\",\\"0, 0\\",\\"ZO0286502865, ZO0394703947\\",80,80,2,2,order,hicham -EAMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Diane,Diane,\\"Diane Ball\\",\\"Diane Ball\\",FEMALE,22,Ball,Ball,\\"(empty)\\",Sunday,6,\\"diane@ball-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Primemaster, Tigress Enterprises\\",\\"Primemaster, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564954,\\"sold_product_564954_20928, sold_product_564954_13902\\",\\"sold_product_564954_20928, sold_product_564954_13902\\",\\"150, 42\\",\\"150, 42\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Primemaster, Tigress Enterprises\\",\\"Primemaster, Tigress Enterprises\\",\\"70.5, 22.672\\",\\"150, 42\\",\\"20,928, 13,902\\",\\"Over-the-knee boots - passion, Lohan - Summer dress - black/black\\",\\"Over-the-knee boots - passion, Lohan - Summer dress - black/black\\",\\"1, 1\\",\\"ZO0362903629, ZO0048100481\\",\\"0, 0\\",\\"150, 42\\",\\"150, 42\\",\\"0, 0\\",\\"ZO0362903629, ZO0048100481\\",192,192,2,2,order,diane -EQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Gregory\\",\\"Gwen Gregory\\",FEMALE,26,Gregory,Gregory,\\"(empty)\\",Sunday,6,\\"gwen@gregory-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Pyramidustries active, Pyramidustries\\",\\"Pyramidustries active, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565009,\\"sold_product_565009_17113, sold_product_565009_24241\\",\\"sold_product_565009_17113, sold_product_565009_24241\\",\\"16.984, 24.984\\",\\"16.984, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Pyramidustries\\",\\"Pyramidustries active, Pyramidustries\\",\\"8.328, 11.25\\",\\"16.984, 24.984\\",\\"17,113, 24,241\\",\\"Tights - duffle bag, Jeans Skinny Fit - black denim\\",\\"Tights - duffle bag, Jeans Skinny Fit - black denim\\",\\"1, 1\\",\\"ZO0225302253, ZO0183101831\\",\\"0, 0\\",\\"16.984, 24.984\\",\\"16.984, 24.984\\",\\"0, 0\\",\\"ZO0225302253, ZO0183101831\\",\\"41.969\\",\\"41.969\\",2,2,order,gwen -EgMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Mary,Mary,\\"Mary Sherman\\",\\"Mary Sherman\\",FEMALE,20,Sherman,Sherman,\\"(empty)\\",Sunday,6,\\"mary@sherman-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Spherecords Curvy, Spherecords\\",\\"Spherecords Curvy, Spherecords\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564065,\\"sold_product_564065_16220, sold_product_564065_13835\\",\\"sold_product_564065_16220, sold_product_564065_13835\\",\\"14.992, 10.992\\",\\"14.992, 10.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Curvy, Spherecords\\",\\"Spherecords Curvy, Spherecords\\",\\"7.789, 5.82\\",\\"14.992, 10.992\\",\\"16,220, 13,835\\",\\"Vest - white, Print T-shirt - light grey multicolor/white\\",\\"Vest - white, Print T-shirt - light grey multicolor/white\\",\\"1, 1\\",\\"ZO0711207112, ZO0646106461\\",\\"0, 0\\",\\"14.992, 10.992\\",\\"14.992, 10.992\\",\\"0, 0\\",\\"ZO0711207112, ZO0646106461\\",\\"25.984\\",\\"25.984\\",2,2,order,mary -EwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Abigail,Abigail,\\"Abigail Stewart\\",\\"Abigail Stewart\\",FEMALE,46,Stewart,Stewart,\\"(empty)\\",Sunday,6,\\"abigail@stewart-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Primemaster\\",\\"Tigress Enterprises, Primemaster\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563927,\\"sold_product_563927_11755, sold_product_563927_17765\\",\\"sold_product_563927_11755, sold_product_563927_17765\\",\\"24.984, 125\\",\\"24.984, 125\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Primemaster\\",\\"Tigress Enterprises, Primemaster\\",\\"12.25, 57.5\\",\\"24.984, 125\\",\\"11,755, 17,765\\",\\"Sandals - cognac, High heeled boots - Midnight Blue\\",\\"Sandals - cognac, High heeled boots - Midnight Blue\\",\\"1, 1\\",\\"ZO0009800098, ZO0362803628\\",\\"0, 0\\",\\"24.984, 125\\",\\"24.984, 125\\",\\"0, 0\\",\\"ZO0009800098, ZO0362803628\\",150,150,2,2,order,abigail -XQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Marwan,Marwan,\\"Marwan Mckinney\\",\\"Marwan Mckinney\\",MALE,51,Mckinney,Mckinney,\\"(empty)\\",Sunday,6,\\"marwan@mckinney-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564937,\\"sold_product_564937_1994, sold_product_564937_6646\\",\\"sold_product_564937_1994, sold_product_564937_6646\\",\\"33, 75\\",\\"33, 75\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"17.484, 35.25\\",\\"33, 75\\",\\"1,994, 6,646\\",\\"Lace-up boots - dark grey, Winter jacket - dark camel\\",\\"Lace-up boots - dark grey, Winter jacket - dark camel\\",\\"1, 1\\",\\"ZO0520605206, ZO0432204322\\",\\"0, 0\\",\\"33, 75\\",\\"33, 75\\",\\"0, 0\\",\\"ZO0520605206, ZO0432204322\\",108,108,2,2,order,marwan -XgMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Henderson\\",\\"Yasmine Henderson\\",FEMALE,43,Henderson,Henderson,\\"(empty)\\",Sunday,6,\\"yasmine@henderson-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Pyramidustries, Spherecords Curvy\\",\\"Pyramidustries, Spherecords Curvy\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564994,\\"sold_product_564994_16814, sold_product_564994_17456\\",\\"sold_product_564994_16814, sold_product_564994_17456\\",\\"24.984, 11.992\\",\\"24.984, 11.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Spherecords Curvy\\",\\"Pyramidustries, Spherecords Curvy\\",\\"12.992, 6.109\\",\\"24.984, 11.992\\",\\"16,814, 17,456\\",\\"Sweatshirt - light grey multicolor, Long sleeved top - dark grey multicolor\\",\\"Sweatshirt - light grey multicolor, Long sleeved top - dark grey multicolor\\",\\"1, 1\\",\\"ZO0180601806, ZO0710007100\\",\\"0, 0\\",\\"24.984, 11.992\\",\\"24.984, 11.992\\",\\"0, 0\\",\\"ZO0180601806, ZO0710007100\\",\\"36.969\\",\\"36.969\\",2,2,order,yasmine -XwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,rania,rania,\\"rania Howell\\",\\"rania Howell\\",FEMALE,24,Howell,Howell,\\"(empty)\\",Sunday,6,\\"rania@howell-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Gnomehouse mom, Oceanavigations\\",\\"Gnomehouse mom, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564070,\\"sold_product_564070_23824, sold_product_564070_5275\\",\\"sold_product_564070_23824, sold_product_564070_5275\\",\\"55, 65\\",\\"55, 65\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse mom, Oceanavigations\\",\\"Gnomehouse mom, Oceanavigations\\",\\"29.688, 35.094\\",\\"55, 65\\",\\"23,824, 5,275\\",\\"Summer dress - red ochre, Boots - dark brown\\",\\"Summer dress - red ochre, Boots - dark brown\\",\\"1, 1\\",\\"ZO0234202342, ZO0245102451\\",\\"0, 0\\",\\"55, 65\\",\\"55, 65\\",\\"0, 0\\",\\"ZO0234202342, ZO0245102451\\",120,120,2,2,order,rani -YAMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jackson,Jackson,\\"Jackson Miller\\",\\"Jackson Miller\\",MALE,13,Miller,Miller,\\"(empty)\\",Sunday,6,\\"jackson@miller-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563928,\\"sold_product_563928_17644, sold_product_563928_11004\\",\\"sold_product_563928_17644, sold_product_563928_11004\\",\\"60, 50\\",\\"60, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"29.406, 26.484\\",\\"60, 50\\",\\"17,644, 11,004\\",\\"Suit jacket - dark blue, Casual lace-ups - Gold/cognac/lion\\",\\"Suit jacket - dark blue, Casual lace-ups - Gold/cognac/lion\\",\\"1, 1\\",\\"ZO0424104241, ZO0394103941\\",\\"0, 0\\",\\"60, 50\\",\\"60, 50\\",\\"0, 0\\",\\"ZO0424104241, ZO0394103941\\",110,110,2,2,order,jackson -xQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Morrison\\",\\"Rabbia Al Morrison\\",FEMALE,5,Morrison,Morrison,\\"(empty)\\",Sunday,6,\\"rabbia al@morrison-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Spherecords, Pyramidustries\\",\\"Tigress Enterprises, Spherecords, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",727071,\\"sold_product_727071_20781, sold_product_727071_23338, sold_product_727071_15267, sold_product_727071_12138\\",\\"sold_product_727071_20781, sold_product_727071_23338, sold_product_727071_15267, sold_product_727071_12138\\",\\"17.984, 16.984, 16.984, 32\\",\\"17.984, 16.984, 16.984, 32\\",\\"Women's Accessories, Women's Clothing, Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Clothing, Women's Accessories, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises, Spherecords, Pyramidustries, Tigress Enterprises\\",\\"Tigress Enterprises, Spherecords, Pyramidustries, Tigress Enterprises\\",\\"8.102, 9.172, 7.988, 16.953\\",\\"17.984, 16.984, 16.984, 32\\",\\"20,781, 23,338, 15,267, 12,138\\",\\"Across body bag - old rose , Pyjama set - grey/pink, Handbag - grey, Handbag - black\\",\\"Across body bag - old rose , Pyjama set - grey/pink, Handbag - grey, Handbag - black\\",\\"1, 1, 1, 1\\",\\"ZO0091900919, ZO0660006600, ZO0197001970, ZO0074600746\\",\\"0, 0, 0, 0\\",\\"17.984, 16.984, 16.984, 32\\",\\"17.984, 16.984, 16.984, 32\\",\\"0, 0, 0, 0\\",\\"ZO0091900919, ZO0660006600, ZO0197001970, ZO0074600746\\",84,84,4,4,order,rabbia -zAMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Phil,Phil,\\"Phil Benson\\",\\"Phil Benson\\",MALE,50,Benson,Benson,\\"(empty)\\",Sunday,6,\\"phil@benson-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565284,\\"sold_product_565284_587, sold_product_565284_12864\\",\\"sold_product_565284_587, sold_product_565284_12864\\",\\"60, 22.984\\",\\"60, 22.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"27.594, 11.719\\",\\"60, 22.984\\",\\"587, 12,864\\",\\"Boots - cognac, SLIM FIT - Formal shirt - black\\",\\"Boots - cognac, SLIM FIT - Formal shirt - black\\",\\"1, 1\\",\\"ZO0687206872, ZO0422304223\\",\\"0, 0\\",\\"60, 22.984\\",\\"60, 22.984\\",\\"0, 0\\",\\"ZO0687206872, ZO0422304223\\",83,83,2,2,order,phil -0AMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Cook\\",\\"Stephanie Cook\\",FEMALE,6,Cook,Cook,\\"(empty)\\",Sunday,6,\\"stephanie@cook-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564380,\\"sold_product_564380_13907, sold_product_564380_23338\\",\\"sold_product_564380_13907, sold_product_564380_23338\\",\\"37, 16.984\\",\\"37, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"16.656, 9.172\\",\\"37, 16.984\\",\\"13,907, 23,338\\",\\"Summer dress - black/Blue Violety, Pyjama set - grey/pink\\",\\"Summer dress - black/Blue Violety, Pyjama set - grey/pink\\",\\"1, 1\\",\\"ZO0050400504, ZO0660006600\\",\\"0, 0\\",\\"37, 16.984\\",\\"37, 16.984\\",\\"0, 0\\",\\"ZO0050400504, ZO0660006600\\",\\"53.969\\",\\"53.969\\",2,2,order,stephanie -JQMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Clarice,Clarice,\\"Clarice Howell\\",\\"Clarice Howell\\",FEMALE,18,Howell,Howell,\\"(empty)\\",Sunday,6,\\"clarice@howell-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Pyramidustries, Angeldale\\",\\"Pyramidustries, Angeldale\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565276,\\"sold_product_565276_19432, sold_product_565276_23037\\",\\"sold_product_565276_19432, sold_product_565276_23037\\",\\"20.984, 75\\",\\"20.984, 75\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Angeldale\\",\\"Pyramidustries, Angeldale\\",\\"10.906, 34.5\\",\\"20.984, 75\\",\\"19,432, 23,037\\",\\"Slip-ons - black, Lace-ups - black\\",\\"Slip-ons - black, Lace-ups - black\\",\\"1, 1\\",\\"ZO0131501315, ZO0668806688\\",\\"0, 0\\",\\"20.984, 75\\",\\"20.984, 75\\",\\"0, 0\\",\\"ZO0131501315, ZO0668806688\\",96,96,2,2,order,clarice -JgMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Stephanie,Stephanie,\\"Stephanie Marshall\\",\\"Stephanie Marshall\\",FEMALE,6,Marshall,Marshall,\\"(empty)\\",Sunday,6,\\"stephanie@marshall-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564819,\\"sold_product_564819_22794, sold_product_564819_20865\\",\\"sold_product_564819_22794, sold_product_564819_20865\\",\\"100, 65\\",\\"100, 65\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"46, 34.438\\",\\"100, 65\\",\\"22,794, 20,865\\",\\"Boots - Midnight Blue, Handbag - black\\",\\"Boots - Midnight Blue, Handbag - black\\",\\"1, 1\\",\\"ZO0374603746, ZO0697106971\\",\\"0, 0\\",\\"100, 65\\",\\"100, 65\\",\\"0, 0\\",\\"ZO0374603746, ZO0697106971\\",165,165,2,2,order,stephanie -yQMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie Foster\\",\\"Eddie Foster\\",MALE,38,Foster,Foster,\\"(empty)\\",Sunday,6,\\"eddie@foster-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Microlutions, Elitelligence\\",\\"Low Tide Media, Microlutions, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",717243,\\"sold_product_717243_19724, sold_product_717243_20018, sold_product_717243_21122, sold_product_717243_13406\\",\\"sold_product_717243_19724, sold_product_717243_20018, sold_product_717243_21122, sold_product_717243_13406\\",\\"18.984, 33, 20.984, 11.992\\",\\"18.984, 33, 20.984, 11.992\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Microlutions, Low Tide Media, Elitelligence\\",\\"Low Tide Media, Microlutions, Low Tide Media, Elitelligence\\",\\"9.117, 16.172, 10.289, 6.59\\",\\"18.984, 33, 20.984, 11.992\\",\\"19,724, 20,018, 21,122, 13,406\\",\\"Swimming shorts - dark blue, Sweatshirt - Medium Spring Green, Sweatshirt - green , Basic T-shirt - blue\\",\\"Swimming shorts - dark blue, Sweatshirt - Medium Spring Green, Sweatshirt - green , Basic T-shirt - blue\\",\\"1, 1, 1, 1\\",\\"ZO0479104791, ZO0125301253, ZO0459004590, ZO0549905499\\",\\"0, 0, 0, 0\\",\\"18.984, 33, 20.984, 11.992\\",\\"18.984, 33, 20.984, 11.992\\",\\"0, 0, 0, 0\\",\\"ZO0479104791, ZO0125301253, ZO0459004590, ZO0549905499\\",\\"84.938\\",\\"84.938\\",4,4,order,eddie -6QMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Phelps\\",\\"Pia Phelps\\",FEMALE,45,Phelps,Phelps,\\"(empty)\\",Sunday,6,\\"pia@phelps-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Pyramidustries active, Oceanavigations\\",\\"Pyramidustries active, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564140,\\"sold_product_564140_14794, sold_product_564140_18586\\",\\"sold_product_564140_14794, sold_product_564140_18586\\",\\"11.992, 42\\",\\"11.992, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Oceanavigations\\",\\"Pyramidustries active, Oceanavigations\\",\\"5.762, 21.828\\",\\"11.992, 42\\",\\"14,794, 18,586\\",\\"Vest - sheer pink, Cardigan - dark green\\",\\"Vest - sheer pink, Cardigan - dark green\\",\\"1, 1\\",\\"ZO0221002210, ZO0268502685\\",\\"0, 0\\",\\"11.992, 42\\",\\"11.992, 42\\",\\"0, 0\\",\\"ZO0221002210, ZO0268502685\\",\\"53.969\\",\\"53.969\\",2,2,order,pia -6gMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Jenkins\\",\\"Rabbia Al Jenkins\\",FEMALE,5,Jenkins,Jenkins,\\"(empty)\\",Sunday,6,\\"rabbia al@jenkins-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Pyramidustries\\",\\"Angeldale, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564164,\\"sold_product_564164_17391, sold_product_564164_11357\\",\\"sold_product_564164_17391, sold_product_564164_11357\\",\\"85, 11.992\\",\\"85, 11.992\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Pyramidustries\\",\\"Angeldale, Pyramidustries\\",\\"46.75, 6.469\\",\\"85, 11.992\\",\\"17,391, 11,357\\",\\"Ankle boots - black, Pyjama bottoms - grey\\",\\"Ankle boots - black, Pyjama bottoms - grey\\",\\"1, 1\\",\\"ZO0673506735, ZO0213002130\\",\\"0, 0\\",\\"85, 11.992\\",\\"85, 11.992\\",\\"0, 0\\",\\"ZO0673506735, ZO0213002130\\",97,97,2,2,order,rabbia -6wMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Ruiz\\",\\"Betty Ruiz\\",FEMALE,44,Ruiz,Ruiz,\\"(empty)\\",Sunday,6,\\"betty@ruiz-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564207,\\"sold_product_564207_11825, sold_product_564207_17988\\",\\"sold_product_564207_11825, sold_product_564207_17988\\",\\"24.984, 37\\",\\"24.984, 37\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"11.5, 18.125\\",\\"24.984, 37\\",\\"11,825, 17,988\\",\\"Cardigan - black, Cardigan - sand mel/black\\",\\"Cardigan - black, Cardigan - sand mel/black\\",\\"1, 1\\",\\"ZO0711807118, ZO0073100731\\",\\"0, 0\\",\\"24.984, 37\\",\\"24.984, 37\\",\\"0, 0\\",\\"ZO0711807118, ZO0073100731\\",\\"61.969\\",\\"61.969\\",2,2,order,betty -7QMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Thad,Thad,\\"Thad Kim\\",\\"Thad Kim\\",MALE,30,Kim,Kim,\\"(empty)\\",Sunday,6,\\"thad@kim-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564735,\\"sold_product_564735_13418, sold_product_564735_14150\\",\\"sold_product_564735_13418, sold_product_564735_14150\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"9, 8.492\\",\\"16.984, 16.984\\",\\"13,418, 14,150\\",\\"High-top trainers - navy, Print T-shirt - black\\",\\"High-top trainers - navy, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0509705097, ZO0120501205\\",\\"0, 0\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"0, 0\\",\\"ZO0509705097, ZO0120501205\\",\\"33.969\\",\\"33.969\\",2,2,order,thad -8gMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Hudson\\",\\"Sultan Al Hudson\\",MALE,19,Hudson,Hudson,\\"(empty)\\",Sunday,6,\\"sultan al@hudson-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",Microlutions,Microlutions,\\"Jun 22, 2019 @ 00:00:00.000\\",565077,\\"sold_product_565077_21138, sold_product_565077_20998\\",\\"sold_product_565077_21138, sold_product_565077_20998\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Microlutions\\",\\"Microlutions, Microlutions\\",\\"9.172, 14.781\\",\\"16.984, 28.984\\",\\"21,138, 20,998\\",\\"Basic T-shirt - black, Sweatshirt - black\\",\\"Basic T-shirt - black, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0118701187, ZO0123901239\\",\\"0, 0\\",\\"16.984, 28.984\\",\\"16.984, 28.984\\",\\"0, 0\\",\\"ZO0118701187, ZO0123901239\\",\\"45.969\\",\\"45.969\\",2,2,order,sultan -AAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Wood\\",\\"Jackson Wood\\",MALE,13,Wood,Wood,\\"(empty)\\",Sunday,6,\\"jackson@wood-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564274,\\"sold_product_564274_23599, sold_product_564274_23910\\",\\"sold_product_564274_23599, sold_product_564274_23910\\",\\"75, 26.984\\",\\"75, 26.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"34.5, 13.758\\",\\"75, 26.984\\",\\"23,599, 23,910\\",\\"Winter jacket - oliv, Shorts - dark blue\\",\\"Winter jacket - oliv, Shorts - dark blue\\",\\"1, 1\\",\\"ZO0542905429, ZO0423604236\\",\\"0, 0\\",\\"75, 26.984\\",\\"75, 26.984\\",\\"0, 0\\",\\"ZO0542905429, ZO0423604236\\",102,102,2,2,order,jackson -HgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Thad,Thad,\\"Thad Walters\\",\\"Thad Walters\\",MALE,30,Walters,Walters,\\"(empty)\\",Sunday,6,\\"thad@walters-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565161,\\"sold_product_565161_23831, sold_product_565161_13178\\",\\"sold_product_565161_23831, sold_product_565161_13178\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"5.5, 32.375\\",\\"10.992, 60\\",\\"23,831, 13,178\\",\\"Basic T-shirt - oliv , Light jacket - navy\\",\\"Basic T-shirt - oliv , Light jacket - navy\\",\\"1, 1\\",\\"ZO0441404414, ZO0430504305\\",\\"0, 0\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"0, 0\\",\\"ZO0441404414, ZO0430504305\\",71,71,2,2,order,thad -HwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Selena,Selena,\\"Selena Taylor\\",\\"Selena Taylor\\",FEMALE,42,Taylor,Taylor,\\"(empty)\\",Sunday,6,\\"selena@taylor-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Champion Arts, Angeldale\\",\\"Champion Arts, Angeldale\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565039,\\"sold_product_565039_17587, sold_product_565039_19471\\",\\"sold_product_565039_17587, sold_product_565039_19471\\",\\"16.984, 13.992\\",\\"16.984, 13.992\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Angeldale\\",\\"Champion Arts, Angeldale\\",\\"8.328, 6.859\\",\\"16.984, 13.992\\",\\"17,587, 19,471\\",\\"Jersey dress - khaki, Belt - dark brown\\",\\"Jersey dress - khaki, Belt - dark brown\\",\\"1, 1\\",\\"ZO0489804898, ZO0695006950\\",\\"0, 0\\",\\"16.984, 13.992\\",\\"16.984, 13.992\\",\\"0, 0\\",\\"ZO0489804898, ZO0695006950\\",\\"30.984\\",\\"30.984\\",2,2,order,selena -PwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Stokes\\",\\"Elyssa Stokes\\",FEMALE,27,Stokes,Stokes,\\"(empty)\\",Sunday,6,\\"elyssa@stokes-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spherecords, Champion Arts, Pyramidustries\\",\\"Spherecords, Champion Arts, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",723683,\\"sold_product_723683_19440, sold_product_723683_17349, sold_product_723683_14873, sold_product_723683_24863\\",\\"sold_product_723683_19440, sold_product_723683_17349, sold_product_723683_14873, sold_product_723683_24863\\",\\"10.992, 33, 42, 11.992\\",\\"10.992, 33, 42, 11.992\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Spherecords, Champion Arts, Pyramidustries, Champion Arts\\",\\"Spherecords, Champion Arts, Pyramidustries, Champion Arts\\",\\"5.93, 18.141, 21, 5.879\\",\\"10.992, 33, 42, 11.992\\",\\"19,440, 17,349, 14,873, 24,863\\",\\"Long sleeved top - dark green, Bomber Jacket - khaki/black, Platform boots - grey, Vest - black/white\\",\\"Long sleeved top - dark green, Bomber Jacket - khaki/black, Platform boots - grey, Vest - black/white\\",\\"1, 1, 1, 1\\",\\"ZO0648206482, ZO0496104961, ZO0142601426, ZO0491504915\\",\\"0, 0, 0, 0\\",\\"10.992, 33, 42, 11.992\\",\\"10.992, 33, 42, 11.992\\",\\"0, 0, 0, 0\\",\\"ZO0648206482, ZO0496104961, ZO0142601426, ZO0491504915\\",\\"97.938\\",\\"97.938\\",4,4,order,elyssa -CAMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Lloyd\\",\\"Stephanie Lloyd\\",FEMALE,6,Lloyd,Lloyd,\\"(empty)\\",Sunday,6,\\"stephanie@lloyd-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Champion Arts, Spherecords\\",\\"Champion Arts, Spherecords\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563967,\\"sold_product_563967_21565, sold_product_563967_8534\\",\\"sold_product_563967_21565, sold_product_563967_8534\\",\\"10.992, 10.992\\",\\"10.992, 10.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Spherecords\\",\\"Champion Arts, Spherecords\\",\\"5.281, 5.82\\",\\"10.992, 10.992\\",\\"21,565, 8,534\\",\\"Print T-shirt - dark grey multicolor, Long sleeved top - black\\",\\"Print T-shirt - dark grey multicolor, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0493404934, ZO0640806408\\",\\"0, 0\\",\\"10.992, 10.992\\",\\"10.992, 10.992\\",\\"0, 0\\",\\"ZO0493404934, ZO0640806408\\",\\"21.984\\",\\"21.984\\",2,2,order,stephanie -LwMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Rodriguez\\",\\"Abigail Rodriguez\\",FEMALE,46,Rodriguez,Rodriguez,\\"(empty)\\",Sunday,6,\\"abigail@rodriguez-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564533,\\"sold_product_564533_15845, sold_product_564533_17192\\",\\"sold_product_564533_15845, sold_product_564533_17192\\",\\"42, 33\\",\\"42, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Tigress Enterprises\\",\\"Champion Arts, Tigress Enterprises\\",\\"23.094, 16.5\\",\\"42, 33\\",\\"15,845, 17,192\\",\\"Summer jacket - black, Jersey dress - black\\",\\"Summer jacket - black, Jersey dress - black\\",\\"1, 1\\",\\"ZO0496704967, ZO0049700497\\",\\"0, 0\\",\\"42, 33\\",\\"42, 33\\",\\"0, 0\\",\\"ZO0496704967, ZO0049700497\\",75,75,2,2,order,abigail -NwMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,Frances,Frances,\\"Frances Dennis\\",\\"Frances Dennis\\",FEMALE,49,Dennis,Dennis,\\"(empty)\\",Sunday,6,\\"frances@dennis-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565266,\\"sold_product_565266_18617, sold_product_565266_17793\\",\\"sold_product_565266_18617, sold_product_565266_17793\\",\\"60, 35\\",\\"60, 35\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"31.797, 16.453\\",\\"60, 35\\",\\"18,617, 17,793\\",\\"Slip-ons - black, Briefcase - black\\",\\"Slip-ons - black, Briefcase - black\\",\\"1, 1\\",\\"ZO0255602556, ZO0468304683\\",\\"0, 0\\",\\"60, 35\\",\\"60, 35\\",\\"0, 0\\",\\"ZO0255602556, ZO0468304683\\",95,95,2,2,order,frances -OAMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Ahmed Al\\",\\"Ahmed Al\\",\\"Ahmed Al James\\",\\"Ahmed Al James\\",MALE,4,James,James,\\"(empty)\\",Sunday,6,\\"ahmed al@james-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564818,\\"sold_product_564818_12813, sold_product_564818_24108\\",\\"sold_product_564818_12813, sold_product_564818_24108\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"5.52, 11.25\\",\\"11.992, 24.984\\",\\"12,813, 24,108\\",\\"2 PACK - Basic T-shirt - black, SLIM FIT - Formal shirt - light blue\\",\\"2 PACK - Basic T-shirt - black, SLIM FIT - Formal shirt - light blue\\",\\"1, 1\\",\\"ZO0475004750, ZO0412304123\\",\\"0, 0\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"0, 0\\",\\"ZO0475004750, ZO0412304123\\",\\"36.969\\",\\"36.969\\",2,2,order,ahmed -XQMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Yahya,Yahya,\\"Yahya Turner\\",\\"Yahya Turner\\",MALE,23,Turner,Turner,\\"(empty)\\",Sunday,6,\\"yahya@turner-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Elitelligence,Elitelligence,\\"Jun 22, 2019 @ 00:00:00.000\\",564932,\\"sold_product_564932_23918, sold_product_564932_23529\\",\\"sold_product_564932_23918, sold_product_564932_23529\\",\\"7.988, 20.984\\",\\"7.988, 20.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"4.148, 10.906\\",\\"7.988, 20.984\\",\\"23,918, 23,529\\",\\"Print T-shirt - red, Across body bag - blue/cognac\\",\\"Print T-shirt - red, Across body bag - blue/cognac\\",\\"1, 1\\",\\"ZO0557305573, ZO0607806078\\",\\"0, 0\\",\\"7.988, 20.984\\",\\"7.988, 20.984\\",\\"0, 0\\",\\"ZO0557305573, ZO0607806078\\",\\"28.984\\",\\"28.984\\",2,2,order,yahya -XgMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Banks\\",\\"Clarice Banks\\",FEMALE,18,Banks,Banks,\\"(empty)\\",Sunday,6,\\"clarice@banks-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564968,\\"sold_product_564968_14312, sold_product_564968_22436\\",\\"sold_product_564968_14312, sold_product_564968_22436\\",\\"33, 18.984\\",\\"33, 18.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"15.844, 9.492\\",\\"33, 18.984\\",\\"14,312, 22,436\\",\\"High heels - yellow, Vest - gold metallic\\",\\"High heels - yellow, Vest - gold metallic\\",\\"1, 1\\",\\"ZO0134101341, ZO0062400624\\",\\"0, 0\\",\\"33, 18.984\\",\\"33, 18.984\\",\\"0, 0\\",\\"ZO0134101341, ZO0062400624\\",\\"51.969\\",\\"51.969\\",2,2,order,clarice -XwMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Morrison\\",\\"Betty Morrison\\",FEMALE,44,Morrison,Morrison,\\"(empty)\\",Sunday,6,\\"betty@morrison-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",Gnomehouse,Gnomehouse,\\"Jun 22, 2019 @ 00:00:00.000\\",565002,\\"sold_product_565002_22932, sold_product_565002_21168\\",\\"sold_product_565002_22932, sold_product_565002_21168\\",\\"100, 75\\",\\"100, 75\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Gnomehouse\\",\\"Gnomehouse, Gnomehouse\\",\\"54, 33.75\\",\\"100, 75\\",\\"22,932, 21,168\\",\\"Classic coat - grey, Cocktail dress / Party dress - eclipse\\",\\"Classic coat - grey, Cocktail dress / Party dress - eclipse\\",\\"1, 1\\",\\"ZO0354203542, ZO0338503385\\",\\"0, 0\\",\\"100, 75\\",\\"100, 75\\",\\"0, 0\\",\\"ZO0354203542, ZO0338503385\\",175,175,2,2,order,betty -YQMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Robbie,Robbie,\\"Robbie Conner\\",\\"Robbie Conner\\",MALE,48,Conner,Conner,\\"(empty)\\",Sunday,6,\\"robbie@conner-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564095,\\"sold_product_564095_23104, sold_product_564095_24934\\",\\"sold_product_564095_23104, sold_product_564095_24934\\",\\"10.992, 50\\",\\"10.992, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"5.281, 22.5\\",\\"10.992, 50\\",\\"23,104, 24,934\\",\\"5 PACK - Socks - multicoloured, Lace-up boots - resin coffee\\",\\"5 PACK - Socks - multicoloured, Lace-up boots - resin coffee\\",\\"1, 1\\",\\"ZO0613806138, ZO0403504035\\",\\"0, 0\\",\\"10.992, 50\\",\\"10.992, 50\\",\\"0, 0\\",\\"ZO0613806138, ZO0403504035\\",\\"60.969\\",\\"60.969\\",2,2,order,robbie -YgMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Clayton\\",\\"Yuri Clayton\\",MALE,21,Clayton,Clayton,\\"(empty)\\",Sunday,6,\\"yuri@clayton-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",Elitelligence,Elitelligence,\\"Jun 22, 2019 @ 00:00:00.000\\",563924,\\"sold_product_563924_14271, sold_product_563924_15400\\",\\"sold_product_563924_14271, sold_product_563924_15400\\",\\"50, 14.992\\",\\"50, 14.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"23, 7.051\\",\\"50, 14.992\\",\\"14,271, 15,400\\",\\"Bomber Jacket - blue mix, Long sleeved top - khaki\\",\\"Bomber Jacket - blue mix, Long sleeved top - khaki\\",\\"1, 1\\",\\"ZO0539805398, ZO0554205542\\",\\"0, 0\\",\\"50, 14.992\\",\\"50, 14.992\\",\\"0, 0\\",\\"ZO0539805398, ZO0554205542\\",65,65,2,2,order,yuri -7AMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Mccarthy\\",\\"Elyssa Mccarthy\\",FEMALE,27,Mccarthy,Mccarthy,\\"(empty)\\",Sunday,6,\\"elyssa@mccarthy-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564770,\\"sold_product_564770_15776, sold_product_564770_17904\\",\\"sold_product_564770_15776, sold_product_564770_17904\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"Spherecords Maternity, Tigress Enterprises\\",\\"10.078, 17.156\\",\\"20.984, 33\\",\\"15,776, 17,904\\",\\"2 PACK - Leggings - black, Ankle boots - black\\",\\"2 PACK - Leggings - black, Ankle boots - black\\",\\"1, 1\\",\\"ZO0704907049, ZO0024700247\\",\\"0, 0\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"0, 0\\",\\"ZO0704907049, ZO0024700247\\",\\"53.969\\",\\"53.969\\",2,2,order,elyssa -SQMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Adams\\",\\"Elyssa Adams\\",FEMALE,27,Adams,Adams,\\"(empty)\\",Sunday,6,\\"elyssa@adams-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563965,\\"sold_product_563965_18560, sold_product_563965_14856\\",\\"sold_product_563965_18560, sold_product_563965_14856\\",\\"34, 18.984\\",\\"34, 18.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"18.016, 9.313\\",\\"34, 18.984\\",\\"18,560, 14,856\\",\\"Summer dress - peacoat/pomegranade, Sweatshirt - grey\\",\\"Summer dress - peacoat/pomegranade, Sweatshirt - grey\\",\\"1, 1\\",\\"ZO0045800458, ZO0503405034\\",\\"0, 0\\",\\"34, 18.984\\",\\"34, 18.984\\",\\"0, 0\\",\\"ZO0045800458, ZO0503405034\\",\\"52.969\\",\\"52.969\\",2,2,order,elyssa -ZAMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Powell\\",\\"rania Powell\\",FEMALE,24,Powell,Powell,\\"(empty)\\",Sunday,6,\\"rania@powell-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Pyramidustries,Pyramidustries,\\"Jun 22, 2019 @ 00:00:00.000\\",564957,\\"sold_product_564957_22053, sold_product_564957_17382\\",\\"sold_product_564957_22053, sold_product_564957_17382\\",\\"28.984, 6.988\\",\\"28.984, 6.988\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"15.648, 3.359\\",\\"28.984, 6.988\\",\\"22,053, 17,382\\",\\"Shirt - light blue, Tights - black\\",\\"Shirt - light blue, Tights - black\\",\\"1, 1\\",\\"ZO0171601716, ZO0214602146\\",\\"0, 0\\",\\"28.984, 6.988\\",\\"28.984, 6.988\\",\\"0, 0\\",\\"ZO0171601716, ZO0214602146\\",\\"35.969\\",\\"35.969\\",2,2,order,rani -ZQMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jim,Jim,\\"Jim Brewer\\",\\"Jim Brewer\\",MALE,41,Brewer,Brewer,\\"(empty)\\",Sunday,6,\\"jim@brewer-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564032,\\"sold_product_564032_20226, sold_product_564032_16558\\",\\"sold_product_564032_20226, sold_product_564032_16558\\",\\"28.984, 33\\",\\"28.984, 33\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"15.648, 15.508\\",\\"28.984, 33\\",\\"20,226, 16,558\\",\\"Pyjamas - grey/blue, Boots - dark brown\\",\\"Pyjamas - grey/blue, Boots - dark brown\\",\\"1, 1\\",\\"ZO0478404784, ZO0521905219\\",\\"0, 0\\",\\"28.984, 33\\",\\"28.984, 33\\",\\"0, 0\\",\\"ZO0478404784, ZO0521905219\\",\\"61.969\\",\\"61.969\\",2,2,order,jim -ZgMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Muniz,Muniz,\\"Muniz Estrada\\",\\"Muniz Estrada\\",MALE,37,Estrada,Estrada,\\"(empty)\\",Sunday,6,\\"muniz@estrada-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564075,\\"sold_product_564075_21248, sold_product_564075_12047\\",\\"sold_product_564075_21248, sold_product_564075_12047\\",\\"27.984, 20.984\\",\\"27.984, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"13.992, 10.289\\",\\"27.984, 20.984\\",\\"21,248, 12,047\\",\\"Windbreaker - navy blazer, Tracksuit bottoms - dark red\\",\\"Windbreaker - navy blazer, Tracksuit bottoms - dark red\\",\\"1, 1\\",\\"ZO0622706227, ZO0525405254\\",\\"0, 0\\",\\"27.984, 20.984\\",\\"27.984, 20.984\\",\\"0, 0\\",\\"ZO0622706227, ZO0525405254\\",\\"48.969\\",\\"48.969\\",2,2,order,muniz -ZwMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Samir,Samir,\\"Samir Mckinney\\",\\"Samir Mckinney\\",MALE,34,Mckinney,Mckinney,\\"(empty)\\",Sunday,6,\\"samir@mckinney-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563931,\\"sold_product_563931_3103, sold_product_563931_11153\\",\\"sold_product_563931_3103, sold_product_563931_11153\\",\\"20.984, 10.992\\",\\"20.984, 10.992\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"10.703, 5.172\\",\\"20.984, 10.992\\",\\"3,103, 11,153\\",\\"Polo shirt - light grey multicolor, Cap - black/black\\",\\"Polo shirt - light grey multicolor, Cap - black/black\\",\\"1, 1\\",\\"ZO0444304443, ZO0596505965\\",\\"0, 0\\",\\"20.984, 10.992\\",\\"20.984, 10.992\\",\\"0, 0\\",\\"ZO0444304443, ZO0596505965\\",\\"31.984\\",\\"31.984\\",2,2,order,samir -lgMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Clarice,Clarice,\\"Clarice Palmer\\",\\"Clarice Palmer\\",FEMALE,18,Palmer,Palmer,\\"(empty)\\",Sunday,6,\\"clarice@palmer-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564940,\\"sold_product_564940_13407, sold_product_564940_15116\\",\\"sold_product_564940_13407, sold_product_564940_15116\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"13.922, 11.328\\",\\"28.984, 20.984\\",\\"13,407, 15,116\\",\\"Trainers - offwhite, Wedges - Blue Violety\\",\\"Trainers - offwhite, Wedges - Blue Violety\\",\\"1, 1\\",\\"ZO0026800268, ZO0003600036\\",\\"0, 0\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"0, 0\\",\\"ZO0026800268, ZO0003600036\\",\\"49.969\\",\\"49.969\\",2,2,order,clarice -lwMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jason,Jason,\\"Jason Hampton\\",\\"Jason Hampton\\",MALE,16,Hampton,Hampton,\\"(empty)\\",Sunday,6,\\"jason@hampton-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564987,\\"sold_product_564987_24440, sold_product_564987_12655\\",\\"sold_product_564987_24440, sold_product_564987_12655\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"10.703, 13.242\\",\\"20.984, 24.984\\",\\"24,440, 12,655\\",\\"Chinos - dark blue, SET - Pyjamas - grey/blue\\",\\"Chinos - dark blue, SET - Pyjamas - grey/blue\\",\\"1, 1\\",\\"ZO0526805268, ZO0478104781\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0526805268, ZO0478104781\\",\\"45.969\\",\\"45.969\\",2,2,order,jason -mQMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Tariq,Tariq,\\"Tariq Lewis\\",\\"Tariq Lewis\\",MALE,25,Lewis,Lewis,\\"(empty)\\",Sunday,6,\\"tariq@lewis-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564080,\\"sold_product_564080_13013, sold_product_564080_16957\\",\\"sold_product_564080_13013, sold_product_564080_16957\\",\\"28.984, 10.992\\",\\"28.984, 10.992\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"14.211, 5.711\\",\\"28.984, 10.992\\",\\"13,013, 16,957\\",\\"Shirt - light blue, Cap - navy\\",\\"Shirt - light blue, Cap - navy\\",\\"1, 1\\",\\"ZO0415804158, ZO0460804608\\",\\"0, 0\\",\\"28.984, 10.992\\",\\"28.984, 10.992\\",\\"0, 0\\",\\"ZO0415804158, ZO0460804608\\",\\"39.969\\",\\"39.969\\",2,2,order,tariq -mgMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Hicham,Hicham,\\"Hicham Love\\",\\"Hicham Love\\",MALE,8,Love,Love,\\"(empty)\\",Sunday,6,\\"hicham@love-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Oceanavigations,Oceanavigations,\\"Jun 22, 2019 @ 00:00:00.000\\",564106,\\"sold_product_564106_14672, sold_product_564106_15019\\",\\"sold_product_564106_14672, sold_product_564106_15019\\",\\"28.984, 18.984\\",\\"28.984, 18.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"13.922, 8.547\\",\\"28.984, 18.984\\",\\"14,672, 15,019\\",\\"Jumper - dark blue, Wallet - black\\",\\"Jumper - dark blue, Wallet - black\\",\\"1, 1\\",\\"ZO0298002980, ZO0313103131\\",\\"0, 0\\",\\"28.984, 18.984\\",\\"28.984, 18.984\\",\\"0, 0\\",\\"ZO0298002980, ZO0313103131\\",\\"47.969\\",\\"47.969\\",2,2,order,hicham -mwMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Foster\\",\\"Gwen Foster\\",FEMALE,26,Foster,Foster,\\"(empty)\\",Sunday,6,\\"gwen@foster-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563947,\\"sold_product_563947_8960, sold_product_563947_19261\\",\\"sold_product_563947_8960, sold_product_563947_19261\\",\\"37, 13.992\\",\\"37, 13.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"18.5, 7\\",\\"37, 13.992\\",\\"8,960, 19,261\\",\\"Shirt - soft pink nude, Vest - black\\",\\"Shirt - soft pink nude, Vest - black\\",\\"1, 1\\",\\"ZO0348103481, ZO0164501645\\",\\"0, 0\\",\\"37, 13.992\\",\\"37, 13.992\\",\\"0, 0\\",\\"ZO0348103481, ZO0164501645\\",\\"50.969\\",\\"50.969\\",2,2,order,gwen -FAMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Lewis\\",\\"Elyssa Lewis\\",FEMALE,27,Lewis,Lewis,\\"(empty)\\",Sunday,6,\\"elyssa@lewis-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries active, Gnomehouse, Pyramidustries, Tigress Enterprises MAMA\\",\\"Pyramidustries active, Gnomehouse, Pyramidustries, Tigress Enterprises MAMA\\",\\"Jun 22, 2019 @ 00:00:00.000\\",725995,\\"sold_product_725995_10498, sold_product_725995_15404, sold_product_725995_16378, sold_product_725995_12398\\",\\"sold_product_725995_10498, sold_product_725995_15404, sold_product_725995_16378, sold_product_725995_12398\\",\\"20.984, 42, 34, 18.984\\",\\"20.984, 42, 34, 18.984\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Pyramidustries active, Gnomehouse, Pyramidustries, Tigress Enterprises MAMA\\",\\"Pyramidustries active, Gnomehouse, Pyramidustries, Tigress Enterprises MAMA\\",\\"11.328, 21.406, 15.641, 9.68\\",\\"20.984, 42, 34, 18.984\\",\\"10,498, 15,404, 16,378, 12,398\\",\\"Tracksuit bottoms - grey multicolor, Shift dress - Lemon Chiffon, Blazer - black/grey, Vest - navy\\",\\"Tracksuit bottoms - grey multicolor, Shift dress - Lemon Chiffon, Blazer - black/grey, Vest - navy\\",\\"1, 1, 1, 1\\",\\"ZO0222102221, ZO0332103321, ZO0182701827, ZO0230502305\\",\\"0, 0, 0, 0\\",\\"20.984, 42, 34, 18.984\\",\\"20.984, 42, 34, 18.984\\",\\"0, 0, 0, 0\\",\\"ZO0222102221, ZO0332103321, ZO0182701827, ZO0230502305\\",\\"115.938\\",\\"115.938\\",4,4,order,elyssa -JwMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,George,George,\\"George Butler\\",\\"George Butler\\",MALE,32,Butler,Butler,\\"(empty)\\",Sunday,6,\\"george@butler-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Elitelligence, (empty)\\",\\"Elitelligence, (empty)\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564756,\\"sold_product_564756_16646, sold_product_564756_21840\\",\\"sold_product_564756_16646, sold_product_564756_21840\\",\\"9.992, 155\\",\\"9.992, 155\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, (empty)\\",\\"Elitelligence, (empty)\\",\\"5.191, 83.688\\",\\"9.992, 155\\",\\"16,646, 21,840\\",\\"Long sleeved top - Medium Slate Blue, Lace-ups - brown\\",\\"Long sleeved top - Medium Slate Blue, Lace-ups - brown\\",\\"1, 1\\",\\"ZO0556805568, ZO0481504815\\",\\"0, 0\\",\\"9.992, 155\\",\\"9.992, 155\\",\\"0, 0\\",\\"ZO0556805568, ZO0481504815\\",165,165,2,2,order,george -ZwMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Austin\\",\\"Yuri Austin\\",MALE,21,Austin,Austin,\\"(empty)\\",Sunday,6,\\"yuri@austin-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565137,\\"sold_product_565137_18257, sold_product_565137_24282\\",\\"sold_product_565137_18257, sold_product_565137_24282\\",\\"14.992, 7.988\\",\\"14.992, 7.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"7.051, 4.148\\",\\"14.992, 7.988\\",\\"18,257, 24,282\\",\\"Print T-shirt - black, Print T-shirt - bordeaux\\",\\"Print T-shirt - black, Print T-shirt - bordeaux\\",\\"1, 1\\",\\"ZO0118501185, ZO0561905619\\",\\"0, 0\\",\\"14.992, 7.988\\",\\"14.992, 7.988\\",\\"0, 0\\",\\"ZO0118501185, ZO0561905619\\",\\"22.984\\",\\"22.984\\",2,2,order,yuri -aAMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Evans\\",\\"Elyssa Evans\\",FEMALE,27,Evans,Evans,\\"(empty)\\",Sunday,6,\\"elyssa@evans-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565173,\\"sold_product_565173_20610, sold_product_565173_23026\\",\\"sold_product_565173_20610, sold_product_565173_23026\\",\\"12.992, 42\\",\\"12.992, 42\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"6.879, 20.156\\",\\"12.992, 42\\",\\"20,610, 23,026\\",\\"Clutch - rose, Platform boots - cognac\\",\\"Clutch - rose, Platform boots - cognac\\",\\"1, 1\\",\\"ZO0203802038, ZO0014900149\\",\\"0, 0\\",\\"12.992, 42\\",\\"12.992, 42\\",\\"0, 0\\",\\"ZO0203802038, ZO0014900149\\",\\"54.969\\",\\"54.969\\",2,2,order,elyssa -aQMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Valdez\\",\\"Abdulraheem Al Valdez\\",MALE,33,Valdez,Valdez,\\"(empty)\\",Sunday,6,\\"abdulraheem al@valdez-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565214,\\"sold_product_565214_24934, sold_product_565214_11845\\",\\"sold_product_565214_24934, sold_product_565214_11845\\",\\"50, 18.984\\",\\"50, 18.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"22.5, 9.492\\",\\"50, 18.984\\",\\"24,934, 11,845\\",\\"Lace-up boots - resin coffee, Hoodie - light red\\",\\"Lace-up boots - resin coffee, Hoodie - light red\\",\\"1, 1\\",\\"ZO0403504035, ZO0588705887\\",\\"0, 0\\",\\"50, 18.984\\",\\"50, 18.984\\",\\"0, 0\\",\\"ZO0403504035, ZO0588705887\\",69,69,2,2,order,abdulraheem -mQMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Mary,Mary,\\"Mary Frank\\",\\"Mary Frank\\",FEMALE,20,Frank,Frank,\\"(empty)\\",Sunday,6,\\"mary@frank-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564804,\\"sold_product_564804_16840, sold_product_564804_21361\\",\\"sold_product_564804_16840, sold_product_564804_21361\\",\\"37, 10.992\\",\\"37, 10.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"17.766, 5.172\\",\\"37, 10.992\\",\\"16,840, 21,361\\",\\"Pencil skirt - black, Long sleeved top - dark brown\\",\\"Pencil skirt - black, Long sleeved top - dark brown\\",\\"1, 1\\",\\"ZO0259702597, ZO0640606406\\",\\"0, 0\\",\\"37, 10.992\\",\\"37, 10.992\\",\\"0, 0\\",\\"ZO0259702597, ZO0640606406\\",\\"47.969\\",\\"47.969\\",2,2,order,mary -pAMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Hubbard\\",\\"Yasmine Hubbard\\",FEMALE,43,Hubbard,Hubbard,\\"(empty)\\",Sunday,6,\\"yasmine@hubbard-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Angeldale, Spherecords Curvy\\",\\"Angeldale, Spherecords Curvy\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565052,\\"sold_product_565052_20949, sold_product_565052_16543\\",\\"sold_product_565052_20949, sold_product_565052_16543\\",\\"60, 20.984\\",\\"60, 20.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Spherecords Curvy\\",\\"Angeldale, Spherecords Curvy\\",\\"30.594, 9.453\\",\\"60, 20.984\\",\\"20,949, 16,543\\",\\"Tote bag - cognac, Blouse - black\\",\\"Tote bag - cognac, Blouse - black\\",\\"1, 1\\",\\"ZO0697006970, ZO0711407114\\",\\"0, 0\\",\\"60, 20.984\\",\\"60, 20.984\\",\\"0, 0\\",\\"ZO0697006970, ZO0711407114\\",81,81,2,2,order,yasmine -pQMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Pia,Pia,\\"Pia Reyes\\",\\"Pia Reyes\\",FEMALE,45,Reyes,Reyes,\\"(empty)\\",Sunday,6,\\"pia@reyes-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565091,\\"sold_product_565091_5862, sold_product_565091_12548\\",\\"sold_product_565091_5862, sold_product_565091_12548\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"31.203, 11.5\\",\\"65, 24.984\\",\\"5,862, 12,548\\",\\"Boots - taupe, Handbag - creme/grey\\",\\"Boots - taupe, Handbag - creme/grey\\",\\"1, 1\\",\\"ZO0324703247, ZO0088600886\\",\\"0, 0\\",\\"65, 24.984\\",\\"65, 24.984\\",\\"0, 0\\",\\"ZO0324703247, ZO0088600886\\",90,90,2,2,order,pia -rgMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Stokes\\",\\"Wilhemina St. Stokes\\",FEMALE,17,Stokes,Stokes,\\"(empty)\\",Sunday,6,\\"wilhemina st.@stokes-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Gnomehouse mom, Pyramidustries\\",\\"Gnomehouse mom, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565231,\\"sold_product_565231_17601, sold_product_565231_11904\\",\\"sold_product_565231_17601, sold_product_565231_11904\\",\\"42, 28.984\\",\\"42, 28.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse mom, Pyramidustries\\",\\"Gnomehouse mom, Pyramidustries\\",\\"20.156, 15.07\\",\\"42, 28.984\\",\\"17,601, 11,904\\",\\"Cape - Pale Violet Red, Trainers - rose\\",\\"Cape - Pale Violet Red, Trainers - rose\\",\\"1, 1\\",\\"ZO0235202352, ZO0135001350\\",\\"0, 0\\",\\"42, 28.984\\",\\"42, 28.984\\",\\"0, 0\\",\\"ZO0235202352, ZO0135001350\\",71,71,2,2,order,wilhemina -9wMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Stephanie,Stephanie,\\"Stephanie Hodges\\",\\"Stephanie Hodges\\",FEMALE,6,Hodges,Hodges,\\"(empty)\\",Sunday,6,\\"stephanie@hodges-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564190,\\"sold_product_564190_5329, sold_product_564190_16930\\",\\"sold_product_564190_5329, sold_product_564190_16930\\",\\"115, 24.984\\",\\"115, 24.984\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"62.094, 13.242\\",\\"115, 24.984\\",\\"5,329, 16,930\\",\\"Over-the-knee boots - Midnight Blue, Across body bag - Blue Violety \\",\\"Over-the-knee boots - Midnight Blue, Across body bag - Blue Violety \\",\\"1, 1\\",\\"ZO0243902439, ZO0208702087\\",\\"0, 0\\",\\"115, 24.984\\",\\"115, 24.984\\",\\"0, 0\\",\\"ZO0243902439, ZO0208702087\\",140,140,2,2,order,stephanie -EgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Kim\\",\\"Selena Kim\\",FEMALE,42,Kim,Kim,\\"(empty)\\",Sunday,6,\\"selena@kim-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Pyramidustries,Pyramidustries,\\"Jun 22, 2019 @ 00:00:00.000\\",564876,\\"sold_product_564876_12273, sold_product_564876_21758\\",\\"sold_product_564876_12273, sold_product_564876_21758\\",\\"12.992, 11.992\\",\\"12.992, 11.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"6.371, 6.23\\",\\"12.992, 11.992\\",\\"12,273, 21,758\\",\\"2 PACK - Over-the-knee socks - black, Print T-shirt - black\\",\\"2 PACK - Over-the-knee socks - black, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0215502155, ZO0168101681\\",\\"0, 0\\",\\"12.992, 11.992\\",\\"12.992, 11.992\\",\\"0, 0\\",\\"ZO0215502155, ZO0168101681\\",\\"24.984\\",\\"24.984\\",2,2,order,selena -EwMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Garza\\",\\"Elyssa Garza\\",FEMALE,27,Garza,Garza,\\"(empty)\\",Sunday,6,\\"elyssa@garza-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Angeldale, Karmanite\\",\\"Angeldale, Karmanite\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564902,\\"sold_product_564902_13639, sold_product_564902_22060\\",\\"sold_product_564902_13639, sold_product_564902_22060\\",\\"60, 100\\",\\"60, 100\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Karmanite\\",\\"Angeldale, Karmanite\\",\\"28.203, 51\\",\\"60, 100\\",\\"13,639, 22,060\\",\\"Handbag - taupe, Boots - grey\\",\\"Handbag - taupe, Boots - grey\\",\\"1, 1\\",\\"ZO0698406984, ZO0704207042\\",\\"0, 0\\",\\"60, 100\\",\\"60, 100\\",\\"0, 0\\",\\"ZO0698406984, ZO0704207042\\",160,160,2,2,order,elyssa -JwMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Garza\\",\\"Elyssa Garza\\",FEMALE,27,Garza,Garza,\\"(empty)\\",Sunday,6,\\"elyssa@garza-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Angeldale, Spherecords Curvy\\",\\"Angeldale, Spherecords Curvy\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564761,\\"sold_product_564761_12146, sold_product_564761_24585\\",\\"sold_product_564761_12146, sold_product_564761_24585\\",\\"65, 16.984\\",\\"65, 16.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Spherecords Curvy\\",\\"Angeldale, Spherecords Curvy\\",\\"29.25, 9\\",\\"65, 16.984\\",\\"12,146, 24,585\\",\\"Slip-ons - red, Jersey dress - black\\",\\"Slip-ons - red, Jersey dress - black\\",\\"1, 1\\",\\"ZO0665006650, ZO0709407094\\",\\"0, 0\\",\\"65, 16.984\\",\\"65, 16.984\\",\\"0, 0\\",\\"ZO0665006650, ZO0709407094\\",82,82,2,2,order,elyssa -MQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Underwood\\",\\"Elyssa Underwood\\",FEMALE,27,Underwood,Underwood,\\"(empty)\\",Sunday,6,\\"elyssa@underwood-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Champion Arts, Pyramidustries, Angeldale, Gnomehouse\\",\\"Champion Arts, Pyramidustries, Angeldale, Gnomehouse\\",\\"Jun 22, 2019 @ 00:00:00.000\\",731788,\\"sold_product_731788_22537, sold_product_731788_11189, sold_product_731788_14323, sold_product_731788_15479\\",\\"sold_product_731788_22537, sold_product_731788_11189, sold_product_731788_14323, sold_product_731788_15479\\",\\"20.984, 16.984, 85, 50\\",\\"20.984, 16.984, 85, 50\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Champion Arts, Pyramidustries, Angeldale, Gnomehouse\\",\\"Champion Arts, Pyramidustries, Angeldale, Gnomehouse\\",\\"10.289, 8.656, 39.938, 22.5\\",\\"20.984, 16.984, 85, 50\\",\\"22,537, 11,189, 14,323, 15,479\\",\\"Tracksuit bottoms - dark grey multicolor, Cardigan - black, Ankle boots - black, Summer dress - dusty rose\\",\\"Tracksuit bottoms - dark grey multicolor, Cardigan - black, Ankle boots - black, Summer dress - dusty rose\\",\\"1, 1, 1, 1\\",\\"ZO0486004860, ZO0177901779, ZO0680506805, ZO0340503405\\",\\"0, 0, 0, 0\\",\\"20.984, 16.984, 85, 50\\",\\"20.984, 16.984, 85, 50\\",\\"0, 0, 0, 0\\",\\"ZO0486004860, ZO0177901779, ZO0680506805, ZO0340503405\\",173,173,4,4,order,elyssa -TQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Recip,Recip,\\"Recip Morrison\\",\\"Recip Morrison\\",MALE,10,Morrison,Morrison,\\"(empty)\\",Sunday,6,\\"recip@morrison-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564340,\\"sold_product_564340_12840, sold_product_564340_24691\\",\\"sold_product_564340_12840, sold_product_564340_24691\\",\\"65, 16.984\\",\\"65, 16.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"30.547, 8.156\\",\\"65, 16.984\\",\\"12,840, 24,691\\",\\"Lace-up boots - black, Long sleeved top - olive\\",\\"Lace-up boots - black, Long sleeved top - olive\\",\\"1, 1\\",\\"ZO0399703997, ZO0565805658\\",\\"0, 0\\",\\"65, 16.984\\",\\"65, 16.984\\",\\"0, 0\\",\\"ZO0399703997, ZO0565805658\\",82,82,2,2,order,recip -TgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,rania,rania,\\"rania Wise\\",\\"rania Wise\\",FEMALE,24,Wise,Wise,\\"(empty)\\",Sunday,6,\\"rania@wise-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564395,\\"sold_product_564395_16857, sold_product_564395_21378\\",\\"sold_product_564395_16857, sold_product_564395_21378\\",\\"50, 11.992\\",\\"50, 11.992\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"24, 6.109\\",\\"50, 11.992\\",\\"16,857, 21,378\\",\\"Ballet pumps - night, Pyjama bottoms - pink\\",\\"Ballet pumps - night, Pyjama bottoms - pink\\",\\"1, 1\\",\\"ZO0236702367, ZO0660706607\\",\\"0, 0\\",\\"50, 11.992\\",\\"50, 11.992\\",\\"0, 0\\",\\"ZO0236702367, ZO0660706607\\",\\"61.969\\",\\"61.969\\",2,2,order,rani -awMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Pia,Pia,\\"Pia Chapman\\",\\"Pia Chapman\\",FEMALE,45,Chapman,Chapman,\\"(empty)\\",Sunday,6,\\"pia@chapman-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564686,\\"sold_product_564686_4640, sold_product_564686_12658\\",\\"sold_product_564686_4640, sold_product_564686_12658\\",\\"75, 16.984\\",\\"75, 16.984\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"36, 8.492\\",\\"75, 16.984\\",\\"4,640, 12,658\\",\\"Winter boots - black, Ballet pumps - nude\\",\\"Winter boots - black, Ballet pumps - nude\\",\\"1, 1\\",\\"ZO0373303733, ZO0131201312\\",\\"0, 0\\",\\"75, 16.984\\",\\"75, 16.984\\",\\"0, 0\\",\\"ZO0373303733, ZO0131201312\\",92,92,2,2,order,pia -dAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Betty,Betty,\\"Betty Cross\\",\\"Betty Cross\\",FEMALE,44,Cross,Cross,\\"(empty)\\",Sunday,6,\\"betty@cross-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564446,\\"sold_product_564446_12508, sold_product_564446_25164\\",\\"sold_product_564446_12508, sold_product_564446_25164\\",\\"28.984, 65\\",\\"28.984, 65\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Angeldale\\",\\"Tigress Enterprises, Angeldale\\",\\"14.492, 30.547\\",\\"28.984, 65\\",\\"12,508, 25,164\\",\\"Tote bag - black, Trainers - grey\\",\\"Tote bag - black, Trainers - grey\\",\\"1, 1\\",\\"ZO0093400934, ZO0679406794\\",\\"0, 0\\",\\"28.984, 65\\",\\"28.984, 65\\",\\"0, 0\\",\\"ZO0093400934, ZO0679406794\\",94,94,2,2,order,betty -dQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Yasmine,Yasmine,\\"Yasmine Mcdonald\\",\\"Yasmine Mcdonald\\",FEMALE,43,Mcdonald,Mcdonald,\\"(empty)\\",Sunday,6,\\"yasmine@mcdonald-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564481,\\"sold_product_564481_17689, sold_product_564481_11690\\",\\"sold_product_564481_17689, sold_product_564481_11690\\",\\"50, 10.992\\",\\"50, 10.992\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"25.984, 5.5\\",\\"50, 10.992\\",\\"17,689, 11,690\\",\\"Classic heels - navy/white, Necklace - imitation rhodium\\",\\"Classic heels - navy/white, Necklace - imitation rhodium\\",\\"1, 1\\",\\"ZO0321603216, ZO0078000780\\",\\"0, 0\\",\\"50, 10.992\\",\\"50, 10.992\\",\\"0, 0\\",\\"ZO0321603216, ZO0078000780\\",\\"60.969\\",\\"60.969\\",2,2,order,yasmine -fAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Mary,Mary,\\"Mary Griffin\\",\\"Mary Griffin\\",FEMALE,20,Griffin,Griffin,\\"(empty)\\",Sunday,6,\\"mary@griffin-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563953,\\"sold_product_563953_22678, sold_product_563953_17921\\",\\"sold_product_563953_22678, sold_product_563953_17921\\",\\"60, 20.984\\",\\"60, 20.984\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"31.188, 9.867\\",\\"60, 20.984\\",\\"22,678, 17,921\\",\\"Ankle boots - Midnight Blue, Amber - Wallet - black\\",\\"Ankle boots - Midnight Blue, Amber - Wallet - black\\",\\"1, 1\\",\\"ZO0376203762, ZO0303603036\\",\\"0, 0\\",\\"60, 20.984\\",\\"60, 20.984\\",\\"0, 0\\",\\"ZO0376203762, ZO0303603036\\",81,81,2,2,order,mary -9gMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Frances,Frances,\\"Frances Gibbs\\",\\"Frances Gibbs\\",FEMALE,49,Gibbs,Gibbs,\\"(empty)\\",Sunday,6,\\"frances@gibbs-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565061,\\"sold_product_565061_1774, sold_product_565061_20952\\",\\"sold_product_565061_1774, sold_product_565061_20952\\",\\"60, 33\\",\\"60, 33\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"27.594, 16.172\\",\\"60, 33\\",\\"1,774, 20,952\\",\\"Lace-ups - cognac, Light jacket - navy\\",\\"Lace-ups - cognac, Light jacket - navy\\",\\"1, 1\\",\\"ZO0681106811, ZO0286402864\\",\\"0, 0\\",\\"60, 33\\",\\"60, 33\\",\\"0, 0\\",\\"ZO0681106811, ZO0286402864\\",93,93,2,2,order,frances -9wMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Jenkins\\",\\"Elyssa Jenkins\\",FEMALE,27,Jenkins,Jenkins,\\"(empty)\\",Sunday,6,\\"elyssa@jenkins-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565100,\\"sold_product_565100_13722, sold_product_565100_21376\\",\\"sold_product_565100_13722, sold_product_565100_21376\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"15.844, 8.828\\",\\"33, 16.984\\",\\"13,722, 21,376\\",\\"Cardigan - grey multicolor, Jersey dress - mid grey multicolor\\",\\"Cardigan - grey multicolor, Jersey dress - mid grey multicolor\\",\\"1, 1\\",\\"ZO0069000690, ZO0490004900\\",\\"0, 0\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"0, 0\\",\\"ZO0069000690, ZO0490004900\\",\\"49.969\\",\\"49.969\\",2,2,order,elyssa -3AMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Oliver,Oliver,\\"Oliver Sharp\\",\\"Oliver Sharp\\",MALE,7,Sharp,Sharp,\\"(empty)\\",Sunday,6,\\"oliver@sharp-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565263,\\"sold_product_565263_15239, sold_product_565263_14475\\",\\"sold_product_565263_15239, sold_product_565263_14475\\",\\"22.984, 25.984\\",\\"22.984, 25.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"11.039, 12.219\\",\\"22.984, 25.984\\",\\"15,239, 14,475\\",\\"Hoodie - light grey/navy, Tracksuit bottoms - black\\",\\"Hoodie - light grey/navy, Tracksuit bottoms - black\\",\\"1, 1\\",\\"ZO0582705827, ZO0111801118\\",\\"0, 0\\",\\"22.984, 25.984\\",\\"22.984, 25.984\\",\\"0, 0\\",\\"ZO0582705827, ZO0111801118\\",\\"48.969\\",\\"48.969\\",2,2,order,oliver -dgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Garner\\",\\"Abdulraheem Al Garner\\",MALE,33,Garner,Garner,\\"(empty)\\",Sunday,6,\\"abdulraheem al@garner-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",563984,\\"sold_product_563984_22409, sold_product_563984_20424\\",\\"sold_product_563984_22409, sold_product_563984_20424\\",\\"11.992, 13.992\\",\\"11.992, 13.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"5.762, 7.129\\",\\"11.992, 13.992\\",\\"22,409, 20,424\\",\\"Basic T-shirt - Dark Salmon, Basic T-shirt - navy\\",\\"Basic T-shirt - Dark Salmon, Basic T-shirt - navy\\",\\"1, 1\\",\\"ZO0121301213, ZO0294102941\\",\\"0, 0\\",\\"11.992, 13.992\\",\\"11.992, 13.992\\",\\"0, 0\\",\\"ZO0121301213, ZO0294102941\\",\\"25.984\\",\\"25.984\\",2,2,order,abdulraheem -rgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,Brigitte,Brigitte,\\"Brigitte Ramsey\\",\\"Brigitte Ramsey\\",FEMALE,12,Ramsey,Ramsey,\\"(empty)\\",Sunday,6,\\"brigitte@ramsey-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565262,\\"sold_product_565262_18767, sold_product_565262_11190\\",\\"sold_product_565262_18767, sold_product_565262_11190\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"10.906, 11.5\\",\\"20.984, 24.984\\",\\"18,767, 11,190\\",\\"Amber - Wallet - cognac, Rucksack - black\\",\\"Amber - Wallet - cognac, Rucksack - black\\",\\"1, 1\\",\\"ZO0303503035, ZO0197601976\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0303503035, ZO0197601976\\",\\"45.969\\",\\"45.969\\",2,2,order,brigitte -rwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Smith\\",\\"Sonya Smith\\",FEMALE,28,Smith,Smith,\\"(empty)\\",Sunday,6,\\"sonya@smith-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565304,\\"sold_product_565304_22359, sold_product_565304_19969\\",\\"sold_product_565304_22359, sold_product_565304_19969\\",\\"24.984, 37\\",\\"24.984, 37\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"12.492, 17.391\\",\\"24.984, 37\\",\\"22,359, 19,969\\",\\"Boots - dark grey, Maxi dress - black/rose gold\\",\\"Boots - dark grey, Maxi dress - black/rose gold\\",\\"1, 1\\",\\"ZO0017800178, ZO0229602296\\",\\"0, 0\\",\\"24.984, 37\\",\\"24.984, 37\\",\\"0, 0\\",\\"ZO0017800178, ZO0229602296\\",\\"61.969\\",\\"61.969\\",2,2,order,sonya -vgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Recip,Recip,\\"Recip Ryan\\",\\"Recip Ryan\\",MALE,10,Ryan,Ryan,\\"(empty)\\",Sunday,6,\\"recip@ryan-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565123,\\"sold_product_565123_14743, sold_product_565123_22906\\",\\"sold_product_565123_14743, sold_product_565123_22906\\",\\"33, 75\\",\\"33, 75\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"17.156, 35.25\\",\\"33, 75\\",\\"14,743, 22,906\\",\\"Laptop bag - black, Lace-up boots - black\\",\\"Laptop bag - black, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0316903169, ZO0400504005\\",\\"0, 0\\",\\"33, 75\\",\\"33, 75\\",\\"0, 0\\",\\"ZO0316903169, ZO0400504005\\",108,108,2,2,order,recip -vwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Robbie,Robbie,\\"Robbie Hansen\\",\\"Robbie Hansen\\",MALE,48,Hansen,Hansen,\\"(empty)\\",Sunday,6,\\"robbie@hansen-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565160,\\"sold_product_565160_19961, sold_product_565160_19172\\",\\"sold_product_565160_19961, sold_product_565160_19172\\",\\"75, 20.984\\",\\"75, 20.984\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"36, 10.078\\",\\"75, 20.984\\",\\"19,961, 19,172\\",\\"Lace-up boots - Burly Wood , Trainers - black/white\\",\\"Lace-up boots - Burly Wood , Trainers - black/white\\",\\"1, 1\\",\\"ZO0693306933, ZO0514605146\\",\\"0, 0\\",\\"75, 20.984\\",\\"75, 20.984\\",\\"0, 0\\",\\"ZO0693306933, ZO0514605146\\",96,96,2,2,order,robbie -wgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Irwin,Irwin,\\"Irwin Bryant\\",\\"Irwin Bryant\\",MALE,14,Bryant,Bryant,\\"(empty)\\",Sunday,6,\\"irwin@bryant-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",565224,\\"sold_product_565224_2269, sold_product_565224_23958\\",\\"sold_product_565224_2269, sold_product_565224_23958\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"23, 13.242\\",\\"50, 24.984\\",\\"2,269, 23,958\\",\\"Boots - Slate Gray, Jumper - black\\",\\"Boots - Slate Gray, Jumper - black\\",\\"1, 1\\",\\"ZO0406604066, ZO0576805768\\",\\"0, 0\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"0, 0\\",\\"ZO0406604066, ZO0576805768\\",75,75,2,2,order,irwin -2wMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Rivera\\",\\"Mostafa Rivera\\",MALE,9,Rivera,Rivera,\\"(empty)\\",Sunday,6,\\"mostafa@rivera-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Spritechnologies\\",\\"Oceanavigations, Spritechnologies\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564121,\\"sold_product_564121_24202, sold_product_564121_21006\\",\\"sold_product_564121_24202, sold_product_564121_21006\\",\\"7.988, 10.992\\",\\"7.988, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Spritechnologies\\",\\"Oceanavigations, Spritechnologies\\",\\"3.92, 5.5\\",\\"7.988, 10.992\\",\\"24,202, 21,006\\",\\"Basic T-shirt - white, Sports shirt - bright white\\",\\"Basic T-shirt - white, Sports shirt - bright white\\",\\"1, 1\\",\\"ZO0291902919, ZO0617206172\\",\\"0, 0\\",\\"7.988, 10.992\\",\\"7.988, 10.992\\",\\"0, 0\\",\\"ZO0291902919, ZO0617206172\\",\\"18.984\\",\\"18.984\\",2,2,order,mostafa -3AMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories\\",\\"Men's Accessories\\",EUR,Yahya,Yahya,\\"Yahya Tyler\\",\\"Yahya Tyler\\",MALE,23,Tyler,Tyler,\\"(empty)\\",Sunday,6,\\"yahya@tyler-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564166,\\"sold_product_564166_14500, sold_product_564166_17015\\",\\"sold_product_564166_14500, sold_product_564166_17015\\",\\"28.984, 85\\",\\"28.984, 85\\",\\"Men's Accessories, Men's Accessories\\",\\"Men's Accessories, Men's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"15.07, 41.656\\",\\"28.984, 85\\",\\"14,500, 17,015\\",\\"Laptop bag - black, Briefcase - brown\\",\\"Laptop bag - black, Briefcase - brown\\",\\"1, 1\\",\\"ZO0607106071, ZO0470704707\\",\\"0, 0\\",\\"28.984, 85\\",\\"28.984, 85\\",\\"0, 0\\",\\"ZO0607106071, ZO0470704707\\",114,114,2,2,order,yahya -3wMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Rivera\\",\\"Wilhemina St. Rivera\\",FEMALE,17,Rivera,Rivera,\\"(empty)\\",Sunday,6,\\"wilhemina st.@rivera-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Gnomehouse, Oceanavigations\\",\\"Gnomehouse, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564739,\\"sold_product_564739_21607, sold_product_564739_14854\\",\\"sold_product_564739_21607, sold_product_564739_14854\\",\\"55, 50\\",\\"55, 50\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Oceanavigations\\",\\"Gnomehouse, Oceanavigations\\",\\"25.844, 23.5\\",\\"55, 50\\",\\"21,607, 14,854\\",\\"Jersey dress - inca gold, Ballet pumps - argento\\",\\"Jersey dress - inca gold, Ballet pumps - argento\\",\\"1, 1\\",\\"ZO0335603356, ZO0236502365\\",\\"0, 0\\",\\"55, 50\\",\\"55, 50\\",\\"0, 0\\",\\"ZO0335603356, ZO0236502365\\",105,105,2,2,order,wilhemina -OQMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jason,Jason,\\"Jason Wood\\",\\"Jason Wood\\",MALE,16,Wood,Wood,\\"(empty)\\",Sunday,6,\\"jason@wood-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564016,\\"sold_product_564016_21164, sold_product_564016_3074\\",\\"sold_product_564016_21164, sold_product_564016_3074\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"5.93, 27.594\\",\\"10.992, 60\\",\\"21,164, 3,074\\",\\"Long sleeved top - dark blue, Trenchcoat - navy\\",\\"Long sleeved top - dark blue, Trenchcoat - navy\\",\\"1, 1\\",\\"ZO0436904369, ZO0290402904\\",\\"0, 0\\",\\"10.992, 60\\",\\"10.992, 60\\",\\"0, 0\\",\\"ZO0436904369, ZO0290402904\\",71,71,2,2,order,jason -OgMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jim,Jim,\\"Jim Duncan\\",\\"Jim Duncan\\",MALE,41,Duncan,Duncan,\\"(empty)\\",Sunday,6,\\"jim@duncan-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564576,\\"sold_product_564576_1384, sold_product_564576_12074\\",\\"sold_product_564576_1384, sold_product_564576_12074\\",\\"60, 11.992\\",\\"60, 11.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"31.188, 5.641\\",\\"60, 11.992\\",\\"1,384, 12,074\\",\\"Lace-ups - black , Polo shirt - blue\\",\\"Lace-ups - black , Polo shirt - blue\\",\\"1, 1\\",\\"ZO0681206812, ZO0441904419\\",\\"0, 0\\",\\"60, 11.992\\",\\"60, 11.992\\",\\"0, 0\\",\\"ZO0681206812, ZO0441904419\\",72,72,2,2,order,jim -OwMtOW0BH63Xcmy453L9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Yasmine,Yasmine,\\"Yasmine Fletcher\\",\\"Yasmine Fletcher\\",FEMALE,43,Fletcher,Fletcher,\\"(empty)\\",Sunday,6,\\"yasmine@fletcher-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Gnomehouse, Angeldale\\",\\"Gnomehouse, Angeldale\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564605,\\"sold_product_564605_17630, sold_product_564605_14381\\",\\"sold_product_564605_17630, sold_product_564605_14381\\",\\"60, 75\\",\\"60, 75\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Angeldale\\",\\"Gnomehouse, Angeldale\\",\\"31.188, 34.5\\",\\"60, 75\\",\\"17,630, 14,381\\",\\"Summer dress - navy blazer, Tote bag - cognac\\",\\"Summer dress - navy blazer, Tote bag - cognac\\",\\"1, 1\\",\\"ZO0333103331, ZO0694806948\\",\\"0, 0\\",\\"60, 75\\",\\"60, 75\\",\\"0, 0\\",\\"ZO0333103331, ZO0694806948\\",135,135,2,2,order,yasmine -5QMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Mullins\\",\\"Wilhemina St. Mullins\\",FEMALE,17,Mullins,Mullins,\\"(empty)\\",Sunday,6,\\"wilhemina st.@mullins-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Angeldale, Low Tide Media, Tigress Enterprises\\",\\"Angeldale, Low Tide Media, Tigress Enterprises\\",\\"Jun 22, 2019 @ 00:00:00.000\\",730663,\\"sold_product_730663_12404, sold_product_730663_15087, sold_product_730663_13055, sold_product_730663_5529\\",\\"sold_product_730663_12404, sold_product_730663_15087, sold_product_730663_13055, sold_product_730663_5529\\",\\"33, 42, 60, 33\\",\\"33, 42, 60, 33\\",\\"Women's Accessories, Women's Shoes, Women's Shoes, Women's Shoes\\",\\"Women's Accessories, Women's Shoes, Women's Shoes, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Angeldale, Low Tide Media, Low Tide Media, Tigress Enterprises\\",\\"Angeldale, Low Tide Media, Low Tide Media, Tigress Enterprises\\",\\"17.156, 21.406, 27.594, 17.813\\",\\"33, 42, 60, 33\\",\\"12,404, 15,087, 13,055, 5,529\\",\\"Clutch - black, Sandals - cognac, Lace-ups - perla, Lace-up boots - cognac\\",\\"Clutch - black, Sandals - cognac, Lace-ups - perla, Lace-up boots - cognac\\",\\"1, 1, 1, 1\\",\\"ZO0697406974, ZO0370303703, ZO0368103681, ZO0013800138\\",\\"0, 0, 0, 0\\",\\"33, 42, 60, 33\\",\\"33, 42, 60, 33\\",\\"0, 0, 0, 0\\",\\"ZO0697406974, ZO0370303703, ZO0368103681, ZO0013800138\\",168,168,4,4,order,wilhemina -BAMtOW0BH63Xcmy46HPV,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Samir,Samir,\\"Samir Chapman\\",\\"Samir Chapman\\",MALE,34,Chapman,Chapman,\\"(empty)\\",Sunday,6,\\"samir@chapman-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564366,\\"sold_product_564366_810, sold_product_564366_11140\\",\\"sold_product_564366_810, sold_product_564366_11140\\",\\"80, 10.992\\",\\"80, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"38.406, 5.5\\",\\"80, 10.992\\",\\"810, 11,140\\",\\"Smart lace-ups - dark brown, Print T-shirt - dark blue\\",\\"Smart lace-ups - dark brown, Print T-shirt - dark blue\\",\\"1, 1\\",\\"ZO0681906819, ZO0549705497\\",\\"0, 0\\",\\"80, 10.992\\",\\"80, 10.992\\",\\"0, 0\\",\\"ZO0681906819, ZO0549705497\\",91,91,2,2,order,samir -BQMtOW0BH63Xcmy46HPV,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Betty,Betty,\\"Betty Swanson\\",\\"Betty Swanson\\",FEMALE,44,Swanson,Swanson,\\"(empty)\\",Sunday,6,\\"betty@swanson-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Oceanavigations, Champion Arts\\",\\"Oceanavigations, Champion Arts\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564221,\\"sold_product_564221_5979, sold_product_564221_19823\\",\\"sold_product_564221_5979, sold_product_564221_19823\\",\\"75, 24.984\\",\\"75, 24.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Champion Arts\\",\\"Oceanavigations, Champion Arts\\",\\"33.75, 12.25\\",\\"75, 24.984\\",\\"5,979, 19,823\\",\\"Ankle boots - Antique White, Slim fit jeans - dark grey\\",\\"Ankle boots - Antique White, Slim fit jeans - dark grey\\",\\"1, 1\\",\\"ZO0249702497, ZO0487404874\\",\\"0, 0\\",\\"75, 24.984\\",\\"75, 24.984\\",\\"0, 0\\",\\"ZO0249702497, ZO0487404874\\",100,100,2,2,order,betty -CgMtOW0BH63Xcmy46HPV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Selena,Selena,\\"Selena Rose\\",\\"Selena Rose\\",FEMALE,42,Rose,Rose,\\"(empty)\\",Sunday,6,\\"selena@rose-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Jun 22, 2019 @ 00:00:00.000\\",564174,\\"sold_product_564174_12644, sold_product_564174_20872\\",\\"sold_product_564174_12644, sold_product_564174_20872\\",\\"33, 50\\",\\"33, 50\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"16.172, 25.484\\",\\"33, 50\\",\\"12,644, 20,872\\",\\"Jumpsuit - black, Ballet pumps - grey\\",\\"Jumpsuit - black, Ballet pumps - grey\\",\\"1, 1\\",\\"ZO0032300323, ZO0236302363\\",\\"0, 0\\",\\"33, 50\\",\\"33, 50\\",\\"0, 0\\",\\"ZO0032300323, ZO0236302363\\",83,83,2,2,order,selena -DgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Diane,Diane,\\"Diane Powell\\",\\"Diane Powell\\",FEMALE,22,Powell,Powell,\\"(empty)\\",Saturday,5,\\"diane@powell-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Pyramidustries active\\",\\"Pyramidustries active\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562835,\\"sold_product_562835_23805, sold_product_562835_22240\\",\\"sold_product_562835_23805, sold_product_562835_22240\\",\\"20.984, 14.992\\",\\"20.984, 14.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Pyramidustries active\\",\\"Pyramidustries active, Pyramidustries active\\",\\"9.453, 7.051\\",\\"20.984, 14.992\\",\\"23,805, 22,240\\",\\"Tights - black , Tights - mid grey multicolor\\",\\"Tights - black , Tights - mid grey multicolor\\",\\"1, 1\\",\\"ZO0222302223, ZO0223502235\\",\\"0, 0\\",\\"20.984, 14.992\\",\\"20.984, 14.992\\",\\"0, 0\\",\\"ZO0222302223, ZO0223502235\\",\\"35.969\\",\\"35.969\\",2,2,order,diane -DwMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Tariq,Tariq,\\"Tariq Dixon\\",\\"Tariq Dixon\\",MALE,25,Dixon,Dixon,\\"(empty)\\",Saturday,5,\\"tariq@dixon-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562882,\\"sold_product_562882_16957, sold_product_562882_6401\\",\\"sold_product_562882_16957, sold_product_562882_6401\\",\\"10.992, 20.984\\",\\"10.992, 20.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"5.711, 10.078\\",\\"10.992, 20.984\\",\\"16,957, 6,401\\",\\"Cap - navy, Shirt - Blue Violety\\",\\"Cap - navy, Shirt - Blue Violety\\",\\"1, 1\\",\\"ZO0460804608, ZO0523905239\\",\\"0, 0\\",\\"10.992, 20.984\\",\\"10.992, 20.984\\",\\"0, 0\\",\\"ZO0460804608, ZO0523905239\\",\\"31.984\\",\\"31.984\\",2,2,order,tariq -EAMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Sonya,Sonya,\\"Sonya Daniels\\",\\"Sonya Daniels\\",FEMALE,28,Daniels,Daniels,\\"(empty)\\",Saturday,5,\\"sonya@daniels-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562629,\\"sold_product_562629_21956, sold_product_562629_24341\\",\\"sold_product_562629_21956, sold_product_562629_24341\\",\\"10.992, 13.992\\",\\"10.992, 13.992\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"5.82, 6.859\\",\\"10.992, 13.992\\",\\"21,956, 24,341\\",\\"Long sleeved top - royal blue, Scarf - rose\\",\\"Long sleeved top - royal blue, Scarf - rose\\",\\"1, 1\\",\\"ZO0639506395, ZO0083000830\\",\\"0, 0\\",\\"10.992, 13.992\\",\\"10.992, 13.992\\",\\"0, 0\\",\\"ZO0639506395, ZO0083000830\\",\\"24.984\\",\\"24.984\\",2,2,order,sonya -EQMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jim,Jim,\\"Jim Maldonado\\",\\"Jim Maldonado\\",MALE,41,Maldonado,Maldonado,\\"(empty)\\",Saturday,5,\\"jim@maldonado-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562672,\\"sold_product_562672_14354, sold_product_562672_18181\\",\\"sold_product_562672_14354, sold_product_562672_18181\\",\\"7.988, 10.992\\",\\"7.988, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"3.68, 5.711\\",\\"7.988, 10.992\\",\\"14,354, 18,181\\",\\"(3) Pack - Socks - white/black , Long sleeved top - bordeaux\\",\\"(3) Pack - Socks - white/black , Long sleeved top - bordeaux\\",\\"1, 1\\",\\"ZO0613406134, ZO0436304363\\",\\"0, 0\\",\\"7.988, 10.992\\",\\"7.988, 10.992\\",\\"0, 0\\",\\"ZO0613406134, ZO0436304363\\",\\"18.984\\",\\"18.984\\",2,2,order,jim -YwMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Munoz\\",\\"rania Munoz\\",FEMALE,24,Munoz,Munoz,\\"(empty)\\",Saturday,5,\\"rania@munoz-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563193,\\"sold_product_563193_13167, sold_product_563193_12035\\",\\"sold_product_563193_13167, sold_product_563193_12035\\",\\"7.988, 14.992\\",\\"7.988, 14.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"3.68, 7.051\\",\\"7.988, 14.992\\",\\"13,167, 12,035\\",\\"Vest - dark grey, Jersey dress - black\\",\\"Vest - dark grey, Jersey dress - black\\",\\"1, 1\\",\\"ZO0636906369, ZO0150301503\\",\\"0, 0\\",\\"7.988, 14.992\\",\\"7.988, 14.992\\",\\"0, 0\\",\\"ZO0636906369, ZO0150301503\\",\\"22.984\\",\\"22.984\\",2,2,order,rani -ZAMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Swanson\\",\\"Fitzgerald Swanson\\",MALE,11,Swanson,Swanson,\\"(empty)\\",Saturday,5,\\"fitzgerald@swanson-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563440,\\"sold_product_563440_17325, sold_product_563440_1907\\",\\"sold_product_563440_17325, sold_product_563440_1907\\",\\"20.984, 75\\",\\"20.984, 75\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"9.867, 33.75\\",\\"20.984, 75\\",\\"17,325, 1,907\\",\\"Sweatshirt - white, Lace-up boots - black\\",\\"Sweatshirt - white, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0589605896, ZO0257202572\\",\\"0, 0\\",\\"20.984, 75\\",\\"20.984, 75\\",\\"0, 0\\",\\"ZO0589605896, ZO0257202572\\",96,96,2,2,order,fuzzy -ZQMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Jim,Jim,\\"Jim Cortez\\",\\"Jim Cortez\\",MALE,41,Cortez,Cortez,\\"(empty)\\",Saturday,5,\\"jim@cortez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 21, 2019 @ 00:00:00.000\\",563485,\\"sold_product_563485_23858, sold_product_563485_16559\\",\\"sold_product_563485_23858, sold_product_563485_16559\\",\\"11.992, 37\\",\\"11.992, 37\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"6.23, 18.5\\",\\"11.992, 37\\",\\"23,858, 16,559\\",\\"Wallet - cognac, Boots - black\\",\\"Wallet - cognac, Boots - black\\",\\"1, 1\\",\\"ZO0602606026, ZO0522005220\\",\\"0, 0\\",\\"11.992, 37\\",\\"11.992, 37\\",\\"0, 0\\",\\"ZO0602606026, ZO0522005220\\",\\"48.969\\",\\"48.969\\",2,2,order,jim -1QMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Diane,Diane,\\"Diane Underwood\\",\\"Diane Underwood\\",FEMALE,22,Underwood,Underwood,\\"(empty)\\",Saturday,5,\\"diane@underwood-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562792,\\"sold_product_562792_14720, sold_product_562792_9051\\",\\"sold_product_562792_14720, sold_product_562792_9051\\",\\"50, 33\\",\\"50, 33\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"26.984, 17.156\\",\\"50, 33\\",\\"14,720, 9,051\\",\\"High heeled sandals - nude, Jersey dress - navy blazer\\",\\"High heeled sandals - nude, Jersey dress - navy blazer\\",\\"1, 1\\",\\"ZO0242602426, ZO0336103361\\",\\"0, 0\\",\\"50, 33\\",\\"50, 33\\",\\"0, 0\\",\\"ZO0242602426, ZO0336103361\\",83,83,2,2,order,diane -dwMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Boone\\",\\"Stephanie Boone\\",FEMALE,6,Boone,Boone,\\"(empty)\\",Saturday,5,\\"stephanie@boone-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563365,\\"sold_product_563365_24862, sold_product_563365_20441\\",\\"sold_product_563365_24862, sold_product_563365_20441\\",\\"10.992, 28.984\\",\\"10.992, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"5.5, 14.211\\",\\"10.992, 28.984\\",\\"24,862, 20,441\\",\\"Print T-shirt - dark blue/off white, Blouse - black/white\\",\\"Print T-shirt - dark blue/off white, Blouse - black/white\\",\\"1, 1\\",\\"ZO0646206462, ZO0065200652\\",\\"0, 0\\",\\"10.992, 28.984\\",\\"10.992, 28.984\\",\\"0, 0\\",\\"ZO0646206462, ZO0065200652\\",\\"39.969\\",\\"39.969\\",2,2,order,stephanie -iwMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,Marwan,Marwan,\\"Marwan Wood\\",\\"Marwan Wood\\",MALE,51,Wood,Wood,\\"(empty)\\",Saturday,5,\\"marwan@wood-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562688,\\"sold_product_562688_22319, sold_product_562688_11707\\",\\"sold_product_562688_22319, sold_product_562688_11707\\",\\"24.984, 13.992\\",\\"24.984, 13.992\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"13.742, 7.41\\",\\"24.984, 13.992\\",\\"22,319, 11,707\\",\\"Trainers - black, Wash bag - dark grey \\",\\"Trainers - black, Wash bag - dark grey \\",\\"1, 1\\",\\"ZO0394603946, ZO0608406084\\",\\"0, 0\\",\\"24.984, 13.992\\",\\"24.984, 13.992\\",\\"0, 0\\",\\"ZO0394603946, ZO0608406084\\",\\"38.969\\",\\"38.969\\",2,2,order,marwan -jAMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Women's Accessories\\",\\"Men's Shoes, Women's Accessories\\",EUR,Marwan,Marwan,\\"Marwan Barnes\\",\\"Marwan Barnes\\",MALE,51,Barnes,Barnes,\\"(empty)\\",Saturday,5,\\"marwan@barnes-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563647,\\"sold_product_563647_20757, sold_product_563647_11341\\",\\"sold_product_563647_20757, sold_product_563647_11341\\",\\"80, 42\\",\\"80, 42\\",\\"Men's Shoes, Women's Accessories\\",\\"Men's Shoes, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"40.781, 22.25\\",\\"80, 42\\",\\"20,757, 11,341\\",\\"Lace-up boots - dark brown, Weekend bag - classic navy\\",\\"Lace-up boots - dark brown, Weekend bag - classic navy\\",\\"1, 1\\",\\"ZO0690906909, ZO0319003190\\",\\"0, 0\\",\\"80, 42\\",\\"80, 42\\",\\"0, 0\\",\\"ZO0690906909, ZO0319003190\\",122,122,2,2,order,marwan -jQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Kamal,Kamal,\\"Kamal Reese\\",\\"Kamal Reese\\",MALE,39,Reese,Reese,\\"(empty)\\",Saturday,5,\\"kamal@reese-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,Oceanavigations,Oceanavigations,\\"Jun 21, 2019 @ 00:00:00.000\\",563711,\\"sold_product_563711_22407, sold_product_563711_11553\\",\\"sold_product_563711_22407, sold_product_563711_11553\\",\\"60, 140\\",\\"60, 140\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"33, 72.813\\",\\"60, 140\\",\\"22,407, 11,553\\",\\"Lace-ups - grey, Leather jacket - camel\\",\\"Lace-ups - grey, Leather jacket - camel\\",\\"1, 1\\",\\"ZO0254202542, ZO0288202882\\",\\"0, 0\\",\\"60, 140\\",\\"60, 140\\",\\"0, 0\\",\\"ZO0254202542, ZO0288202882\\",200,200,2,2,order,kamal -2AMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Phil,Phil,\\"Phil Willis\\",\\"Phil Willis\\",MALE,50,Willis,Willis,\\"(empty)\\",Saturday,5,\\"phil@willis-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563763,\\"sold_product_563763_16794, sold_product_563763_13661\\",\\"sold_product_563763_16794, sold_product_563763_13661\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"10.703, 10.492\\",\\"20.984, 20.984\\",\\"16,794, 13,661\\",\\"Swimming shorts - white, Tracksuit bottoms - light grey\\",\\"Swimming shorts - white, Tracksuit bottoms - light grey\\",\\"1, 1\\",\\"ZO0479404794, ZO0525305253\\",\\"0, 0\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"0, 0\\",\\"ZO0479404794, ZO0525305253\\",\\"41.969\\",\\"41.969\\",2,2,order,phil -BQMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Mary,Mary,\\"Mary Brock\\",\\"Mary Brock\\",FEMALE,20,Brock,Brock,\\"(empty)\\",Saturday,5,\\"mary@brock-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,Oceanavigations,Oceanavigations,\\"Jun 21, 2019 @ 00:00:00.000\\",563825,\\"sold_product_563825_25104, sold_product_563825_5962\\",\\"sold_product_563825_25104, sold_product_563825_5962\\",\\"65, 65\\",\\"65, 65\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"35.094, 33.125\\",\\"65, 65\\",\\"25,104, 5,962\\",\\"Classic heels - rose/true nude, High heels - black\\",\\"Classic heels - rose/true nude, High heels - black\\",\\"1, 1\\",\\"ZO0238202382, ZO0237102371\\",\\"0, 0\\",\\"65, 65\\",\\"65, 65\\",\\"0, 0\\",\\"ZO0238202382, ZO0237102371\\",130,130,2,2,order,mary -HAMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Irwin,Irwin,\\"Irwin Cook\\",\\"Irwin Cook\\",MALE,14,Cook,Cook,\\"(empty)\\",Saturday,5,\\"irwin@cook-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562797,\\"sold_product_562797_20442, sold_product_562797_20442\\",\\"sold_product_562797_20442, sold_product_562797_20442\\",\\"11.992, 11.992\\",\\"11.992, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"5.398, 5.398\\",\\"11.992, 11.992\\",\\"20,442, 20,442\\",\\"Polo shirt - dark grey multicolor, Polo shirt - dark grey multicolor\\",\\"Polo shirt - dark grey multicolor, Polo shirt - dark grey multicolor\\",\\"1, 1\\",\\"ZO0442504425, ZO0442504425\\",\\"0, 0\\",\\"11.992, 11.992\\",\\"11.992, 11.992\\",\\"0, 0\\",ZO0442504425,\\"23.984\\",\\"23.984\\",2,2,order,irwin -SgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Goodwin\\",\\"Abigail Goodwin\\",FEMALE,46,Goodwin,Goodwin,\\"(empty)\\",Saturday,5,\\"abigail@goodwin-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563846,\\"sold_product_563846_23161, sold_product_563846_13874\\",\\"sold_product_563846_23161, sold_product_563846_13874\\",\\"100, 16.984\\",\\"100, 16.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"53, 9\\",\\"100, 16.984\\",\\"23,161, 13,874\\",\\"Boots - brandy, Long sleeved top - khaki\\",\\"Boots - brandy, Long sleeved top - khaki\\",\\"1, 1\\",\\"ZO0244102441, ZO0169301693\\",\\"0, 0\\",\\"100, 16.984\\",\\"100, 16.984\\",\\"0, 0\\",\\"ZO0244102441, ZO0169301693\\",117,117,2,2,order,abigail -SwMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Burton\\",\\"Youssef Burton\\",MALE,31,Burton,Burton,\\"(empty)\\",Saturday,5,\\"youssef@burton-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563887,\\"sold_product_563887_11751, sold_product_563887_18663\\",\\"sold_product_563887_11751, sold_product_563887_18663\\",\\"28.984, 16.984\\",\\"28.984, 16.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"14.781, 8.156\\",\\"28.984, 16.984\\",\\"11,751, 18,663\\",\\"Shorts - beige, Print T-shirt - dark blue multicolor\\",\\"Shorts - beige, Print T-shirt - dark blue multicolor\\",\\"1, 1\\",\\"ZO0423104231, ZO0438204382\\",\\"0, 0\\",\\"28.984, 16.984\\",\\"28.984, 16.984\\",\\"0, 0\\",\\"ZO0423104231, ZO0438204382\\",\\"45.969\\",\\"45.969\\",2,2,order,youssef -UgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Willis\\",\\"Rabbia Al Willis\\",FEMALE,5,Willis,Willis,\\"(empty)\\",Saturday,5,\\"rabbia al@willis-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563607,\\"sold_product_563607_23412, sold_product_563607_14303\\",\\"sold_product_563607_23412, sold_product_563607_14303\\",\\"33, 75\\",\\"33, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"17.813, 36\\",\\"33, 75\\",\\"23,412, 14,303\\",\\"Jeans Skinny Fit - black, Ankle boots - black\\",\\"Jeans Skinny Fit - black, Ankle boots - black\\",\\"1, 1\\",\\"ZO0271002710, ZO0678806788\\",\\"0, 0\\",\\"33, 75\\",\\"33, 75\\",\\"0, 0\\",\\"ZO0271002710, ZO0678806788\\",108,108,2,2,order,rabbia -jgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Betty,Betty,\\"Betty Bryan\\",\\"Betty Bryan\\",FEMALE,44,Bryan,Bryan,\\"(empty)\\",Saturday,5,\\"betty@bryan-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Pyramidustries, Low Tide Media\\",\\"Pyramidustries, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562762,\\"sold_product_562762_23139, sold_product_562762_13840\\",\\"sold_product_562762_23139, sold_product_562762_13840\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Low Tide Media\\",\\"Pyramidustries, Low Tide Media\\",\\"6.23, 29.906\\",\\"11.992, 65\\",\\"23,139, 13,840\\",\\"Print T-shirt - black/berry, Boots - Royal Blue\\",\\"Print T-shirt - black/berry, Boots - Royal Blue\\",\\"1, 1\\",\\"ZO0162401624, ZO0375203752\\",\\"0, 0\\",\\"11.992, 65\\",\\"11.992, 65\\",\\"0, 0\\",\\"ZO0162401624, ZO0375203752\\",77,77,2,2,order,betty -9AMtOW0BH63Xcmy44mSR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Sutton\\",\\"Elyssa Sutton\\",FEMALE,27,Sutton,Sutton,\\"(empty)\\",Saturday,5,\\"elyssa@sutton-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Primemaster, Spherecords\\",\\"Tigress Enterprises, Primemaster, Spherecords\\",\\"Jun 21, 2019 @ 00:00:00.000\\",723905,\\"sold_product_723905_24589, sold_product_723905_11977, sold_product_723905_13368, sold_product_723905_14021\\",\\"sold_product_723905_24589, sold_product_723905_11977, sold_product_723905_13368, sold_product_723905_14021\\",\\"24.984, 100, 21.984, 20.984\\",\\"24.984, 100, 21.984, 20.984\\",\\"Women's Shoes, Women's Shoes, Women's Clothing, Women's Clothing\\",\\"Women's Shoes, Women's Shoes, Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises, Primemaster, Spherecords, Spherecords\\",\\"Tigress Enterprises, Primemaster, Spherecords, Spherecords\\",\\"13.492, 54, 11.867, 10.906\\",\\"24.984, 100, 21.984, 20.984\\",\\"24,589, 11,977, 13,368, 14,021\\",\\"Boots - black, Ankle boots - Midnight Blue, Chinos - light blue, Shirt - black\\",\\"Boots - black, Ankle boots - Midnight Blue, Chinos - light blue, Shirt - black\\",\\"1, 1, 1, 1\\",\\"ZO0030300303, ZO0360003600, ZO0632906329, ZO0650906509\\",\\"0, 0, 0, 0\\",\\"24.984, 100, 21.984, 20.984\\",\\"24.984, 100, 21.984, 20.984\\",\\"0, 0, 0, 0\\",\\"ZO0030300303, ZO0360003600, ZO0632906329, ZO0650906509\\",168,168,4,4,order,elyssa -FQMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Boone\\",\\"Elyssa Boone\\",FEMALE,27,Boone,Boone,\\"(empty)\\",Saturday,5,\\"elyssa@boone-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises MAMA, Champion Arts\\",\\"Tigress Enterprises MAMA, Champion Arts\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563195,\\"sold_product_563195_14393, sold_product_563195_22789\\",\\"sold_product_563195_14393, sold_product_563195_22789\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises MAMA, Champion Arts\\",\\"Tigress Enterprises MAMA, Champion Arts\\",\\"9.453, 13.633\\",\\"20.984, 28.984\\",\\"14,393, 22,789\\",\\"Print T-shirt - grey metallic, Tracksuit top - blue\\",\\"Print T-shirt - grey metallic, Tracksuit top - blue\\",\\"1, 1\\",\\"ZO0231802318, ZO0501805018\\",\\"0, 0\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"0, 0\\",\\"ZO0231802318, ZO0501805018\\",\\"49.969\\",\\"49.969\\",2,2,order,elyssa -FgMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Selena,Selena,\\"Selena Bowers\\",\\"Selena Bowers\\",FEMALE,42,Bowers,Bowers,\\"(empty)\\",Saturday,5,\\"selena@bowers-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563436,\\"sold_product_563436_24555, sold_product_563436_11768\\",\\"sold_product_563436_24555, sold_product_563436_11768\\",\\"20.984, 7.988\\",\\"20.984, 7.988\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"10.492, 4.07\\",\\"20.984, 7.988\\",\\"24,555, 11,768\\",\\"Blouse - dark red, Bracelet - black\\",\\"Blouse - dark red, Bracelet - black\\",\\"1, 1\\",\\"ZO0651606516, ZO0078100781\\",\\"0, 0\\",\\"20.984, 7.988\\",\\"20.984, 7.988\\",\\"0, 0\\",\\"ZO0651606516, ZO0078100781\\",\\"28.984\\",\\"28.984\\",2,2,order,selena -FwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Robert,Robert,\\"Robert Phelps\\",\\"Robert Phelps\\",MALE,29,Phelps,Phelps,\\"(empty)\\",Saturday,5,\\"robert@phelps-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Microlutions, (empty)\\",\\"Microlutions, (empty)\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563489,\\"sold_product_563489_21239, sold_product_563489_13428\\",\\"sold_product_563489_21239, sold_product_563489_13428\\",\\"11.992, 165\\",\\"11.992, 165\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, (empty)\\",\\"Microlutions, (empty)\\",\\"6.469, 90.75\\",\\"11.992, 165\\",\\"21,239, 13,428\\",\\"Hat - multicolor/black, Demi-Boots\\",\\"Hat - multicolor/black, Demi-Boots\\",\\"1, 1\\",\\"ZO0126101261, ZO0483704837\\",\\"0, 0\\",\\"11.992, 165\\",\\"11.992, 165\\",\\"0, 0\\",\\"ZO0126101261, ZO0483704837\\",177,177,2,2,order,robert -dgMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Graham\\",\\"Elyssa Graham\\",FEMALE,27,Graham,Graham,\\"(empty)\\",Saturday,5,\\"elyssa@graham-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Oceanavigations, Tigress Enterprises MAMA, Tigress Enterprises\\",\\"Pyramidustries, Oceanavigations, Tigress Enterprises MAMA, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",727576,\\"sold_product_727576_18143, sold_product_727576_19012, sold_product_727576_16454, sold_product_727576_11955\\",\\"sold_product_727576_18143, sold_product_727576_19012, sold_product_727576_16454, sold_product_727576_11955\\",\\"20.984, 20.984, 18.984, 18.984\\",\\"20.984, 20.984, 18.984, 18.984\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Pyramidustries, Oceanavigations, Tigress Enterprises MAMA, Tigress Enterprises\\",\\"Pyramidustries, Oceanavigations, Tigress Enterprises MAMA, Tigress Enterprises\\",\\"11.117, 9.453, 10.063, 10.438\\",\\"20.984, 20.984, 18.984, 18.984\\",\\"18,143, 19,012, 16,454, 11,955\\",\\"Jumper - bordeaux, Vest - black/rose, Vest - black, Print T-shirt - red\\",\\"Jumper - bordeaux, Vest - black/rose, Vest - black, Print T-shirt - red\\",\\"1, 1, 1, 1\\",\\"ZO0181201812, ZO0266902669, ZO0231702317, ZO0055800558\\",\\"0, 0, 0, 0\\",\\"20.984, 20.984, 18.984, 18.984\\",\\"20.984, 20.984, 18.984, 18.984\\",\\"0, 0, 0, 0\\",\\"ZO0181201812, ZO0266902669, ZO0231702317, ZO0055800558\\",\\"79.938\\",\\"79.938\\",4,4,order,elyssa -swMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Marwan,Marwan,\\"Marwan Stewart\\",\\"Marwan Stewart\\",MALE,51,Stewart,Stewart,\\"(empty)\\",Saturday,5,\\"marwan@stewart-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563167,\\"sold_product_563167_24934, sold_product_563167_11541\\",\\"sold_product_563167_24934, sold_product_563167_11541\\",\\"50, 18.984\\",\\"50, 18.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"22.5, 8.547\\",\\"50, 18.984\\",\\"24,934, 11,541\\",\\"Lace-up boots - resin coffee, Polo shirt - black\\",\\"Lace-up boots - resin coffee, Polo shirt - black\\",\\"1, 1\\",\\"ZO0403504035, ZO0295602956\\",\\"0, 0\\",\\"50, 18.984\\",\\"50, 18.984\\",\\"0, 0\\",\\"ZO0403504035, ZO0295602956\\",69,69,2,2,order,marwan -tAMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Selena,Selena,\\"Selena Gibbs\\",\\"Selena Gibbs\\",FEMALE,42,Gibbs,Gibbs,\\"(empty)\\",Saturday,5,\\"selena@gibbs-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563212,\\"sold_product_563212_21217, sold_product_563212_22846\\",\\"sold_product_563212_21217, sold_product_563212_22846\\",\\"33, 50\\",\\"33, 50\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"15.844, 25\\",\\"33, 50\\",\\"21,217, 22,846\\",\\"Jumper dress - grey/Medium Slate Blue multicolor, Over-the-knee boots - cognac\\",\\"Jumper dress - grey/Medium Slate Blue multicolor, Over-the-knee boots - cognac\\",\\"1, 1\\",\\"ZO0043700437, ZO0139001390\\",\\"0, 0\\",\\"33, 50\\",\\"33, 50\\",\\"0, 0\\",\\"ZO0043700437, ZO0139001390\\",83,83,2,2,order,selena -tQMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Muniz,Muniz,\\"Muniz Abbott\\",\\"Muniz Abbott\\",MALE,37,Abbott,Abbott,\\"(empty)\\",Saturday,5,\\"muniz@abbott-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563460,\\"sold_product_563460_2036, sold_product_563460_17157\\",\\"sold_product_563460_2036, sold_product_563460_17157\\",\\"80, 20.984\\",\\"80, 20.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"40, 10.289\\",\\"80, 20.984\\",\\"2,036, 17,157\\",\\"Lace-ups - Midnight Blue, Sweatshirt - off white\\",\\"Lace-ups - Midnight Blue, Sweatshirt - off white\\",\\"1, 1\\",\\"ZO0682506825, ZO0594505945\\",\\"0, 0\\",\\"80, 20.984\\",\\"80, 20.984\\",\\"0, 0\\",\\"ZO0682506825, ZO0594505945\\",101,101,2,2,order,muniz -tgMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Reese\\",\\"Robbie Reese\\",MALE,48,Reese,Reese,\\"(empty)\\",Saturday,5,\\"robbie@reese-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563492,\\"sold_product_563492_13753, sold_product_563492_16739\\",\\"sold_product_563492_13753, sold_product_563492_16739\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"13.742, 29.25\\",\\"24.984, 65\\",\\"13,753, 16,739\\",\\"Formal shirt - white/blue, Suit jacket - dark grey\\",\\"Formal shirt - white/blue, Suit jacket - dark grey\\",\\"1, 1\\",\\"ZO0412004120, ZO0274102741\\",\\"0, 0\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"0, 0\\",\\"ZO0412004120, ZO0274102741\\",90,90,2,2,order,robbie -0wMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Phil,Phil,\\"Phil Graham\\",\\"Phil Graham\\",MALE,50,Graham,Graham,\\"(empty)\\",Saturday,5,\\"phil@graham-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562729,\\"sold_product_562729_12601, sold_product_562729_22654\\",\\"sold_product_562729_12601, sold_product_562729_22654\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"10.906, 12.25\\",\\"20.984, 24.984\\",\\"12,601, 22,654\\",\\"Sweatshirt - bordeaux multicolor, Relaxed fit jeans - vintage blue\\",\\"Sweatshirt - bordeaux multicolor, Relaxed fit jeans - vintage blue\\",\\"1, 1\\",\\"ZO0456404564, ZO0535605356\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0456404564, ZO0535605356\\",\\"45.969\\",\\"45.969\\",2,2,order,phil -4AMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Caldwell\\",\\"Sonya Caldwell\\",FEMALE,28,Caldwell,Caldwell,\\"(empty)\\",Saturday,5,\\"sonya@caldwell-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562978,\\"sold_product_562978_12226, sold_product_562978_11632\\",\\"sold_product_562978_12226, sold_product_562978_11632\\",\\"42, 20.984\\",\\"42, 20.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"21.828, 9.867\\",\\"42, 20.984\\",\\"12,226, 11,632\\",\\"Sandals - beige, Summer dress - coral/pink\\",\\"Sandals - beige, Summer dress - coral/pink\\",\\"1, 1\\",\\"ZO0371003710, ZO0150601506\\",\\"0, 0\\",\\"42, 20.984\\",\\"42, 20.984\\",\\"0, 0\\",\\"ZO0371003710, ZO0150601506\\",\\"62.969\\",\\"62.969\\",2,2,order,sonya -4gMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Mcdonald\\",\\"Wagdi Mcdonald\\",MALE,15,Mcdonald,Mcdonald,\\"(empty)\\",Saturday,5,\\"wagdi@mcdonald-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563324,\\"sold_product_563324_24573, sold_product_563324_20665\\",\\"sold_product_563324_24573, sold_product_563324_20665\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"9.344, 4.949\\",\\"16.984, 10.992\\",\\"24,573, 20,665\\",\\"Basic T-shirt - dark blue multicolor, 3 PACK - Socks - black/white/grey\\",\\"Basic T-shirt - dark blue multicolor, 3 PACK - Socks - black/white/grey\\",\\"1, 1\\",\\"ZO0440004400, ZO0130401304\\",\\"0, 0\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"0, 0\\",\\"ZO0440004400, ZO0130401304\\",\\"27.984\\",\\"27.984\\",2,2,order,wagdi -4wMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Byrd\\",\\"Elyssa Byrd\\",FEMALE,27,Byrd,Byrd,\\"(empty)\\",Saturday,5,\\"elyssa@byrd-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Low Tide Media\\",\\"Pyramidustries, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563249,\\"sold_product_563249_14397, sold_product_563249_5141\\",\\"sold_product_563249_14397, sold_product_563249_5141\\",\\"21.984, 60\\",\\"21.984, 60\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Low Tide Media\\",\\"Pyramidustries, Low Tide Media\\",\\"10.344, 33\\",\\"21.984, 60\\",\\"14,397, 5,141\\",\\"Sweatshirt - light grey multicolor, Ankle boots - black\\",\\"Sweatshirt - light grey multicolor, Ankle boots - black\\",\\"1, 1\\",\\"ZO0181001810, ZO0378903789\\",\\"0, 0\\",\\"21.984, 60\\",\\"21.984, 60\\",\\"0, 0\\",\\"ZO0181001810, ZO0378903789\\",82,82,2,2,order,elyssa -5AMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Chandler\\",\\"Brigitte Chandler\\",FEMALE,12,Chandler,Chandler,\\"(empty)\\",Saturday,5,\\"brigitte@chandler-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563286,\\"sold_product_563286_11887, sold_product_563286_22261\\",\\"sold_product_563286_11887, sold_product_563286_22261\\",\\"50, 50\\",\\"50, 50\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"24.5, 22.5\\",\\"50, 50\\",\\"11,887, 22,261\\",\\"Maxi dress - black, Winter jacket - bordeaux\\",\\"Maxi dress - black, Winter jacket - bordeaux\\",\\"1, 1\\",\\"ZO0040000400, ZO0503805038\\",\\"0, 0\\",\\"50, 50\\",\\"50, 50\\",\\"0, 0\\",\\"ZO0040000400, ZO0503805038\\",100,100,2,2,order,brigitte -dgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Shaw\\",\\"Abd Shaw\\",MALE,52,Shaw,Shaw,\\"(empty)\\",Saturday,5,\\"abd@shaw-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563187,\\"sold_product_563187_12040, sold_product_563187_21172\\",\\"sold_product_563187_12040, sold_product_563187_21172\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"12.492, 12.992\\",\\"24.984, 24.984\\",\\"12,040, 21,172\\",\\"Shirt - navy, Jeans Skinny Fit - blue\\",\\"Shirt - navy, Jeans Skinny Fit - blue\\",\\"1, 1\\",\\"ZO0278702787, ZO0425404254\\",\\"0, 0\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"0, 0\\",\\"ZO0278702787, ZO0425404254\\",\\"49.969\\",\\"49.969\\",2,2,order,abd -dwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Gregory\\",\\"Elyssa Gregory\\",FEMALE,27,Gregory,Gregory,\\"(empty)\\",Saturday,5,\\"elyssa@gregory-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spherecords, Champion Arts\\",\\"Spherecords, Champion Arts\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563503,\\"sold_product_563503_23310, sold_product_563503_16900\\",\\"sold_product_563503_23310, sold_product_563503_16900\\",\\"19.984, 24.984\\",\\"19.984, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Champion Arts\\",\\"Spherecords, Champion Arts\\",\\"9.797, 13.742\\",\\"19.984, 24.984\\",\\"23,310, 16,900\\",\\"Blouse - dark green, Jersey dress - black/white\\",\\"Blouse - dark green, Jersey dress - black/white\\",\\"1, 1\\",\\"ZO0649306493, ZO0490704907\\",\\"0, 0\\",\\"19.984, 24.984\\",\\"19.984, 24.984\\",\\"0, 0\\",\\"ZO0649306493, ZO0490704907\\",\\"44.969\\",\\"44.969\\",2,2,order,elyssa -ewMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robert,Robert,\\"Robert Moran\\",\\"Robert Moran\\",MALE,29,Moran,Moran,\\"(empty)\\",Saturday,5,\\"robert@moran-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563275,\\"sold_product_563275_21731, sold_product_563275_19441\\",\\"sold_product_563275_21731, sold_product_563275_19441\\",\\"37, 24.984\\",\\"37, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"17.016, 11.5\\",\\"37, 24.984\\",\\"21,731, 19,441\\",\\"Bomber Jacket - black, Jumper - green multicolor\\",\\"Bomber Jacket - black, Jumper - green multicolor\\",\\"1, 1\\",\\"ZO0287402874, ZO0453404534\\",\\"0, 0\\",\\"37, 24.984\\",\\"37, 24.984\\",\\"0, 0\\",\\"ZO0287402874, ZO0453404534\\",\\"61.969\\",\\"61.969\\",2,2,order,robert -kgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,rania,rania,\\"rania Mccarthy\\",\\"rania Mccarthy\\",FEMALE,24,Mccarthy,Mccarthy,\\"(empty)\\",Saturday,5,\\"rania@mccarthy-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563737,\\"sold_product_563737_12413, sold_product_563737_19717\\",\\"sold_product_563737_12413, sold_product_563737_19717\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"12.25, 22.25\\",\\"24.984, 42\\",\\"12,413, 19,717\\",\\"Clutch - black, Ballet pumps - blue/white\\",\\"Clutch - black, Ballet pumps - blue/white\\",\\"1, 1\\",\\"ZO0306903069, ZO0320703207\\",\\"0, 0\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"0, 0\\",\\"ZO0306903069, ZO0320703207\\",67,67,2,2,order,rani -kwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Boris,Boris,\\"Boris Foster\\",\\"Boris Foster\\",MALE,36,Foster,Foster,\\"(empty)\\",Saturday,5,\\"boris@foster-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Spritechnologies, Oceanavigations\\",\\"Spritechnologies, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563796,\\"sold_product_563796_15607, sold_product_563796_14438\\",\\"sold_product_563796_15607, sold_product_563796_14438\\",\\"42, 28.984\\",\\"42, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Oceanavigations\\",\\"Spritechnologies, Oceanavigations\\",\\"21.406, 13.344\\",\\"42, 28.984\\",\\"15,607, 14,438\\",\\"Soft shell jacket - dark grey, Jumper - dark grey multicolor\\",\\"Soft shell jacket - dark grey, Jumper - dark grey multicolor\\",\\"1, 1\\",\\"ZO0625806258, ZO0297602976\\",\\"0, 0\\",\\"42, 28.984\\",\\"42, 28.984\\",\\"0, 0\\",\\"ZO0625806258, ZO0297602976\\",71,71,2,2,order,boris -vgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robert,Robert,\\"Robert Mcdonald\\",\\"Robert Mcdonald\\",MALE,29,Mcdonald,Mcdonald,\\"(empty)\\",Saturday,5,\\"robert@mcdonald-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562853,\\"sold_product_562853_21053, sold_product_562853_23834\\",\\"sold_product_562853_21053, sold_product_562853_23834\\",\\"10.992, 7.988\\",\\"10.992, 7.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"5.391, 4.07\\",\\"10.992, 7.988\\",\\"21,053, 23,834\\",\\"Print T-shirt - white/blue, 3 PACK - Socks - blue/grey\\",\\"Print T-shirt - white/blue, 3 PACK - Socks - blue/grey\\",\\"1, 1\\",\\"ZO0564705647, ZO0481004810\\",\\"0, 0\\",\\"10.992, 7.988\\",\\"10.992, 7.988\\",\\"0, 0\\",\\"ZO0564705647, ZO0481004810\\",\\"18.984\\",\\"18.984\\",2,2,order,robert -vwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Love\\",\\"Elyssa Love\\",FEMALE,27,Love,Love,\\"(empty)\\",Saturday,5,\\"elyssa@love-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562900,\\"sold_product_562900_15312, sold_product_562900_12544\\",\\"sold_product_562900_15312, sold_product_562900_12544\\",\\"28.984, 24.984\\",\\"28.984, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"14.211, 12.992\\",\\"28.984, 24.984\\",\\"15,312, 12,544\\",\\"Print T-shirt - coronet blue, Faux leather jacket - black\\",\\"Print T-shirt - coronet blue, Faux leather jacket - black\\",\\"1, 1\\",\\"ZO0349203492, ZO0173801738\\",\\"0, 0\\",\\"28.984, 24.984\\",\\"28.984, 24.984\\",\\"0, 0\\",\\"ZO0349203492, ZO0173801738\\",\\"53.969\\",\\"53.969\\",2,2,order,elyssa -wAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Thompson\\",\\"Betty Thompson\\",FEMALE,44,Thompson,Thompson,\\"(empty)\\",Saturday,5,\\"betty@thompson-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562668,\\"sold_product_562668_22190, sold_product_562668_24239\\",\\"sold_product_562668_22190, sold_product_562668_24239\\",\\"33, 25.984\\",\\"33, 25.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"15.844, 12.219\\",\\"33, 25.984\\",\\"22,190, 24,239\\",\\"Vest - black, Long sleeved top - winter white/peacoat\\",\\"Vest - black, Long sleeved top - winter white/peacoat\\",\\"1, 1\\",\\"ZO0348503485, ZO0059100591\\",\\"0, 0\\",\\"33, 25.984\\",\\"33, 25.984\\",\\"0, 0\\",\\"ZO0348503485, ZO0059100591\\",\\"58.969\\",\\"58.969\\",2,2,order,betty -zgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",EUR,Muniz,Muniz,\\"Muniz Perkins\\",\\"Muniz Perkins\\",MALE,37,Perkins,Perkins,\\"(empty)\\",Saturday,5,\\"muniz@perkins-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562794,\\"sold_product_562794_12403, sold_product_562794_24539\\",\\"sold_product_562794_12403, sold_product_562794_24539\\",\\"75, 15.992\\",\\"75, 15.992\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"35.25, 8.148\\",\\"75, 15.992\\",\\"12,403, 24,539\\",\\"Rucksack - brandy, Long sleeved top - off-white\\",\\"Rucksack - brandy, Long sleeved top - off-white\\",\\"1, 1\\",\\"ZO0701707017, ZO0440404404\\",\\"0, 0\\",\\"75, 15.992\\",\\"75, 15.992\\",\\"0, 0\\",\\"ZO0701707017, ZO0440404404\\",91,91,2,2,order,muniz -\\"-QMtOW0BH63Xcmy442fU\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Marwan,Marwan,\\"Marwan Caldwell\\",\\"Marwan Caldwell\\",MALE,51,Caldwell,Caldwell,\\"(empty)\\",Saturday,5,\\"marwan@caldwell-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Elitelligence,Elitelligence,\\"Jun 21, 2019 @ 00:00:00.000\\",562720,\\"sold_product_562720_17428, sold_product_562720_13612\\",\\"sold_product_562720_17428, sold_product_562720_13612\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"10.078, 6.469\\",\\"20.984, 11.992\\",\\"17,428, 13,612\\",\\"Sweatshirt - bordeaux, Basic T-shirt - light red/white\\",\\"Sweatshirt - bordeaux, Basic T-shirt - light red/white\\",\\"1, 1\\",\\"ZO0585605856, ZO0549505495\\",\\"0, 0\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"0, 0\\",\\"ZO0585605856, ZO0549505495\\",\\"32.969\\",\\"32.969\\",2,2,order,marwan -\\"-gMtOW0BH63Xcmy442fU\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Robert,Robert,\\"Robert Reyes\\",\\"Robert Reyes\\",MALE,29,Reyes,Reyes,\\"(empty)\\",Saturday,5,\\"robert@reyes-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562759,\\"sold_product_562759_15827, sold_product_562759_22599\\",\\"sold_product_562759_15827, sold_product_562759_22599\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"9.867, 11.5\\",\\"20.984, 24.984\\",\\"15,827, 22,599\\",\\"Belt - black/brown, Sweatshirt - black\\",\\"Belt - black/brown, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0310403104, ZO0595005950\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0310403104, ZO0595005950\\",\\"45.969\\",\\"45.969\\",2,2,order,robert -KQMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Boris,Boris,\\"Boris Little\\",\\"Boris Little\\",MALE,36,Little,Little,\\"(empty)\\",Saturday,5,\\"boris@little-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563442,\\"sold_product_563442_23887, sold_product_563442_17436\\",\\"sold_product_563442_23887, sold_product_563442_17436\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"27, 5.391\\",\\"60, 10.992\\",\\"23,887, 17,436\\",\\"Casual lace-ups - blue, Print T-shirt - white/orange\\",\\"Casual lace-ups - blue, Print T-shirt - white/orange\\",\\"1, 1\\",\\"ZO0394303943, ZO0556305563\\",\\"0, 0\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"0, 0\\",\\"ZO0394303943, ZO0556305563\\",71,71,2,2,order,boris -qwMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Samir,Samir,\\"Samir Valdez\\",\\"Samir Valdez\\",MALE,34,Valdez,Valdez,\\"(empty)\\",Saturday,5,\\"samir@valdez-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563775,\\"sold_product_563775_16063, sold_product_563775_12691\\",\\"sold_product_563775_16063, sold_product_563775_12691\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"6.469, 11.75\\",\\"11.992, 24.984\\",\\"16,063, 12,691\\",\\"Long sleeved top - tan, Windbreaker - Cornflower Blue\\",\\"Long sleeved top - tan, Windbreaker - Cornflower Blue\\",\\"1, 1\\",\\"ZO0562805628, ZO0622806228\\",\\"0, 0\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"0, 0\\",\\"ZO0562805628, ZO0622806228\\",\\"36.969\\",\\"36.969\\",2,2,order,samir -rAMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Samir,Samir,\\"Samir Cross\\",\\"Samir Cross\\",MALE,34,Cross,Cross,\\"(empty)\\",Saturday,5,\\"samir@cross-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563813,\\"sold_product_563813_20520, sold_product_563813_19613\\",\\"sold_product_563813_20520, sold_product_563813_19613\\",\\"14.992, 50\\",\\"14.992, 50\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"7.352, 25.484\\",\\"14.992, 50\\",\\"20,520, 19,613\\",\\"Print T-shirt - bright white, Summer jacket - black\\",\\"Print T-shirt - bright white, Summer jacket - black\\",\\"1, 1\\",\\"ZO0120001200, ZO0286602866\\",\\"0, 0\\",\\"14.992, 50\\",\\"14.992, 50\\",\\"0, 0\\",\\"ZO0120001200, ZO0286602866\\",65,65,2,2,order,samir -NgMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Marwan,Marwan,\\"Marwan Reyes\\",\\"Marwan Reyes\\",MALE,51,Reyes,Reyes,\\"(empty)\\",Saturday,5,\\"marwan@reyes-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563250,\\"sold_product_563250_18528, sold_product_563250_12730\\",\\"sold_product_563250_18528, sold_product_563250_12730\\",\\"10.992, 75\\",\\"10.992, 75\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"5.281, 38.25\\",\\"10.992, 75\\",\\"18,528, 12,730\\",\\"Print T-shirt - black, Crossover Strap Bag\\",\\"Print T-shirt - black, Crossover Strap Bag\\",\\"1, 1\\",\\"ZO0557805578, ZO0463904639\\",\\"0, 0\\",\\"10.992, 75\\",\\"10.992, 75\\",\\"0, 0\\",\\"ZO0557805578, ZO0463904639\\",86,86,2,2,order,marwan -NwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Gilbert\\",\\"Pia Gilbert\\",FEMALE,45,Gilbert,Gilbert,\\"(empty)\\",Saturday,5,\\"pia@gilbert-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563282,\\"sold_product_563282_19216, sold_product_563282_16990\\",\\"sold_product_563282_19216, sold_product_563282_16990\\",\\"25.984, 20.984\\",\\"25.984, 20.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"13.25, 9.656\\",\\"25.984, 20.984\\",\\"19,216, 16,990\\",\\"SET - Pyjamas - black/light pink, Shirt - white/blue\\",\\"SET - Pyjamas - black/light pink, Shirt - white/blue\\",\\"1, 1\\",\\"ZO0100701007, ZO0651106511\\",\\"0, 0\\",\\"25.984, 20.984\\",\\"25.984, 20.984\\",\\"0, 0\\",\\"ZO0100701007, ZO0651106511\\",\\"46.969\\",\\"46.969\\",2,2,order,pia -bQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Tariq,Tariq,\\"Tariq Washington\\",\\"Tariq Washington\\",MALE,25,Washington,Washington,\\"(empty)\\",Saturday,5,\\"tariq@washington-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563392,\\"sold_product_563392_12047, sold_product_563392_17700\\",\\"sold_product_563392_12047, sold_product_563392_17700\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"10.289, 9\\",\\"20.984, 16.984\\",\\"12,047, 17,700\\",\\"Tracksuit bottoms - dark red, Belt - black\\",\\"Tracksuit bottoms - dark red, Belt - black\\",\\"1, 1\\",\\"ZO0525405254, ZO0310203102\\",\\"0, 0\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"0, 0\\",\\"ZO0525405254, ZO0310203102\\",\\"37.969\\",\\"37.969\\",2,2,order,tariq -kgMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Brigitte,Brigitte,\\"Brigitte Martin\\",\\"Brigitte Martin\\",FEMALE,12,Martin,Martin,\\"(empty)\\",Saturday,5,\\"brigitte@martin-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563697,\\"sold_product_563697_15646, sold_product_563697_21369\\",\\"sold_product_563697_15646, sold_product_563697_21369\\",\\"20.984, 10.992\\",\\"20.984, 10.992\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"9.867, 5.602\\",\\"20.984, 10.992\\",\\"15,646, 21,369\\",\\"Jumper - off-white, Ballet pumps - yellow\\",\\"Jumper - off-white, Ballet pumps - yellow\\",\\"1, 1\\",\\"ZO0264702647, ZO0000700007\\",\\"0, 0\\",\\"20.984, 10.992\\",\\"20.984, 10.992\\",\\"0, 0\\",\\"ZO0264702647, ZO0000700007\\",\\"31.984\\",\\"31.984\\",2,2,order,brigitte -lwMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Phil,Phil,\\"Phil Williams\\",\\"Phil Williams\\",MALE,50,Williams,Williams,\\"(empty)\\",Saturday,5,\\"phil@williams-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563246,\\"sold_product_563246_17897, sold_product_563246_20203\\",\\"sold_product_563246_17897, sold_product_563246_20203\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"10.703, 14.781\\",\\"20.984, 28.984\\",\\"17,897, 20,203\\",\\"Trainers - grey, Sweatshirt - black\\",\\"Trainers - grey, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0515205152, ZO0300803008\\",\\"0, 0\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"0, 0\\",\\"ZO0515205152, ZO0300803008\\",\\"49.969\\",\\"49.969\\",2,2,order,phil -2gMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Garza\\",\\"Wilhemina St. Garza\\",FEMALE,17,Garza,Garza,\\"(empty)\\",Saturday,5,\\"wilhemina st.@garza-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Angeldale, Gnomehouse\\",\\"Angeldale, Gnomehouse\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562934,\\"sold_product_562934_5758, sold_product_562934_18453\\",\\"sold_product_562934_5758, sold_product_562934_18453\\",\\"75, 85\\",\\"75, 85\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Gnomehouse\\",\\"Angeldale, Gnomehouse\\",\\"33.75, 40.813\\",\\"75, 85\\",\\"5,758, 18,453\\",\\"Ankle boots - cognac, High heeled ankle boots - black\\",\\"Ankle boots - cognac, High heeled ankle boots - black\\",\\"1, 1\\",\\"ZO0674206742, ZO0326303263\\",\\"0, 0\\",\\"75, 85\\",\\"75, 85\\",\\"0, 0\\",\\"ZO0674206742, ZO0326303263\\",160,160,2,2,order,wilhemina -2wMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Women's Accessories\\",\\"Men's Clothing, Women's Accessories\\",EUR,Yuri,Yuri,\\"Yuri Burton\\",\\"Yuri Burton\\",MALE,21,Burton,Burton,\\"(empty)\\",Saturday,5,\\"yuri@burton-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Microlutions, Angeldale\\",\\"Microlutions, Angeldale\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562994,\\"sold_product_562994_12714, sold_product_562994_21404\\",\\"sold_product_562994_12714, sold_product_562994_21404\\",\\"85, 11.992\\",\\"85, 11.992\\",\\"Men's Clothing, Women's Accessories\\",\\"Men's Clothing, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Angeldale\\",\\"Microlutions, Angeldale\\",\\"40.813, 6.352\\",\\"85, 11.992\\",\\"12,714, 21,404\\",\\"Classic coat - black, Wallet - brown\\",\\"Classic coat - black, Wallet - brown\\",\\"1, 1\\",\\"ZO0115801158, ZO0701507015\\",\\"0, 0\\",\\"85, 11.992\\",\\"85, 11.992\\",\\"0, 0\\",\\"ZO0115801158, ZO0701507015\\",97,97,2,2,order,yuri -3gMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,rania,rania,\\"rania James\\",\\"rania James\\",FEMALE,24,James,James,\\"(empty)\\",Saturday,5,\\"rania@james-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563317,\\"sold_product_563317_12022, sold_product_563317_12978\\",\\"sold_product_563317_12022, sold_product_563317_12978\\",\\"11.992, 10.992\\",\\"11.992, 10.992\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"5.762, 5.172\\",\\"11.992, 10.992\\",\\"12,022, 12,978\\",\\"T-Shirt - blue, Scarf - offwhite/black\\",\\"T-Shirt - blue, Scarf - offwhite/black\\",\\"1, 1\\",\\"ZO0631706317, ZO0192701927\\",\\"0, 0\\",\\"11.992, 10.992\\",\\"11.992, 10.992\\",\\"0, 0\\",\\"ZO0631706317, ZO0192701927\\",\\"22.984\\",\\"22.984\\",2,2,order,rani -3wMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie Webb\\",\\"Eddie Webb\\",MALE,38,Webb,Webb,\\"(empty)\\",Saturday,5,\\"eddie@webb-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563341,\\"sold_product_563341_18784, sold_product_563341_16207\\",\\"sold_product_563341_18784, sold_product_563341_16207\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"29.406, 5.82\\",\\"60, 10.992\\",\\"18,784, 16,207\\",\\"Smart slip-ons - blue, Bow tie - black\\",\\"Smart slip-ons - blue, Bow tie - black\\",\\"1, 1\\",\\"ZO0397303973, ZO0410304103\\",\\"0, 0\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"0, 0\\",\\"ZO0397303973, ZO0410304103\\",71,71,2,2,order,eddie -CgMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Turner\\",\\"Gwen Turner\\",FEMALE,26,Turner,Turner,\\"(empty)\\",Saturday,5,\\"gwen@turner-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Gnomehouse, Pyramidustries active\\",\\"Gnomehouse, Pyramidustries active\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563622,\\"sold_product_563622_19912, sold_product_563622_10691\\",\\"sold_product_563622_19912, sold_product_563622_10691\\",\\"37, 13.992\\",\\"37, 13.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries active\\",\\"Gnomehouse, Pyramidustries active\\",\\"17.016, 6.719\\",\\"37, 13.992\\",\\"19,912, 10,691\\",\\"A-line skirt - june bug, 3/4 sports trousers - magnet \\",\\"A-line skirt - june bug, 3/4 sports trousers - magnet \\",\\"1, 1\\",\\"ZO0328103281, ZO0224602246\\",\\"0, 0\\",\\"37, 13.992\\",\\"37, 13.992\\",\\"0, 0\\",\\"ZO0328103281, ZO0224602246\\",\\"50.969\\",\\"50.969\\",2,2,order,gwen -CwMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Boone\\",\\"Abdulraheem Al Boone\\",MALE,33,Boone,Boone,\\"(empty)\\",Saturday,5,\\"abdulraheem al@boone-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563666,\\"sold_product_563666_1967, sold_product_563666_15695\\",\\"sold_product_563666_1967, sold_product_563666_15695\\",\\"65, 33\\",\\"65, 33\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"34.438, 15.18\\",\\"65, 33\\",\\"1,967, 15,695\\",\\"Lace-ups - cognac, Watch - gunmetal\\",\\"Lace-ups - cognac, Watch - gunmetal\\",\\"1, 1\\",\\"ZO0390903909, ZO0126801268\\",\\"0, 0\\",\\"65, 33\\",\\"65, 33\\",\\"0, 0\\",\\"ZO0390903909, ZO0126801268\\",98,98,2,2,order,abdulraheem -DgMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Clayton\\",\\"Mostafa Clayton\\",MALE,9,Clayton,Clayton,\\"(empty)\\",Saturday,5,\\"mostafa@clayton-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563026,\\"sold_product_563026_18853, sold_product_563026_17728\\",\\"sold_product_563026_18853, sold_product_563026_17728\\",\\"85, 60\\",\\"85, 60\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"40.813, 32.375\\",\\"85, 60\\",\\"18,853, 17,728\\",\\"Tote bag - black , Suit jacket - navy\\",\\"Tote bag - black , Suit jacket - navy\\",\\"1, 1\\",\\"ZO0703407034, ZO0275102751\\",\\"0, 0\\",\\"85, 60\\",\\"85, 60\\",\\"0, 0\\",\\"ZO0703407034, ZO0275102751\\",145,145,2,2,order,mostafa -DwMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Marshall\\",\\"Brigitte Marshall\\",FEMALE,12,Marshall,Marshall,\\"(empty)\\",Saturday,5,\\"brigitte@marshall-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Gnomehouse,Gnomehouse,\\"Jun 21, 2019 @ 00:00:00.000\\",563084,\\"sold_product_563084_23929, sold_product_563084_13484\\",\\"sold_product_563084_23929, sold_product_563084_13484\\",\\"65, 42\\",\\"65, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Gnomehouse\\",\\"Gnomehouse, Gnomehouse\\",\\"29.906, 19.313\\",\\"65, 42\\",\\"23,929, 13,484\\",\\"Summer dress - black, Summer dress - pastel blue\\",\\"Summer dress - black, Summer dress - pastel blue\\",\\"1, 1\\",\\"ZO0338803388, ZO0334203342\\",\\"0, 0\\",\\"65, 42\\",\\"65, 42\\",\\"0, 0\\",\\"ZO0338803388, ZO0334203342\\",107,107,2,2,order,brigitte -GwMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Rivera\\",\\"Sonya Rivera\\",FEMALE,28,Rivera,Rivera,\\"(empty)\\",Saturday,5,\\"sonya@rivera-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562963,\\"sold_product_562963_5747, sold_product_562963_19886\\",\\"sold_product_562963_5747, sold_product_562963_19886\\",\\"28.984, 7.988\\",\\"28.984, 7.988\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"13.633, 4.391\\",\\"28.984, 7.988\\",\\"5,747, 19,886\\",\\"High heels - nude, Mini skirt - dark grey multicolor\\",\\"High heels - nude, Mini skirt - dark grey multicolor\\",\\"1, 1\\",\\"ZO0004900049, ZO0633806338\\",\\"0, 0\\",\\"28.984, 7.988\\",\\"28.984, 7.988\\",\\"0, 0\\",\\"ZO0004900049, ZO0633806338\\",\\"36.969\\",\\"36.969\\",2,2,order,sonya -HAMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yahya,Yahya,\\"Yahya Jimenez\\",\\"Yahya Jimenez\\",MALE,23,Jimenez,Jimenez,\\"(empty)\\",Saturday,5,\\"yahya@jimenez-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Elitelligence,Elitelligence,\\"Jun 21, 2019 @ 00:00:00.000\\",563016,\\"sold_product_563016_19484, sold_product_563016_11795\\",\\"sold_product_563016_19484, sold_product_563016_11795\\",\\"50, 20.984\\",\\"50, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"25.484, 10.289\\",\\"50, 20.984\\",\\"19,484, 11,795\\",\\"Summer jacket - khaki, Tracksuit bottoms - dark blue\\",\\"Summer jacket - khaki, Tracksuit bottoms - dark blue\\",\\"1, 1\\",\\"ZO0539605396, ZO0525505255\\",\\"0, 0\\",\\"50, 20.984\\",\\"50, 20.984\\",\\"0, 0\\",\\"ZO0539605396, ZO0525505255\\",71,71,2,2,order,yahya -HgMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Diane,Diane,\\"Diane Walters\\",\\"Diane Walters\\",FEMALE,22,Walters,Walters,\\"(empty)\\",Saturday,5,\\"diane@walters-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Spherecords\\",\\"Low Tide Media, Spherecords\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562598,\\"sold_product_562598_5045, sold_product_562598_18398\\",\\"sold_product_562598_5045, sold_product_562598_18398\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spherecords\\",\\"Low Tide Media, Spherecords\\",\\"30.594, 5.391\\",\\"60, 10.992\\",\\"5,045, 18,398\\",\\"Boots - black, Vest - black\\",\\"Boots - black, Vest - black\\",\\"1, 1\\",\\"ZO0383203832, ZO0642806428\\",\\"0, 0\\",\\"60, 10.992\\",\\"60, 10.992\\",\\"0, 0\\",\\"ZO0383203832, ZO0642806428\\",71,71,2,2,order,diane -HwMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Brigitte,Brigitte,\\"Brigitte Underwood\\",\\"Brigitte Underwood\\",FEMALE,12,Underwood,Underwood,\\"(empty)\\",Saturday,5,\\"brigitte@underwood-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563336,\\"sold_product_563336_19599, sold_product_563336_21032\\",\\"sold_product_563336_19599, sold_product_563336_21032\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"25.484, 15.648\\",\\"50, 28.984\\",\\"19,599, 21,032\\",\\"Maxi dress - Pale Violet Red, Lace-ups - black\\",\\"Maxi dress - Pale Violet Red, Lace-ups - black\\",\\"1, 1\\",\\"ZO0332903329, ZO0008300083\\",\\"0, 0\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"0, 0\\",\\"ZO0332903329, ZO0008300083\\",79,79,2,2,order,brigitte -bAMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Roberson\\",\\"Wagdi Roberson\\",MALE,15,Roberson,Roberson,\\"(empty)\\",Saturday,5,\\"wagdi@roberson-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563558,\\"sold_product_563558_21248, sold_product_563558_15382\\",\\"sold_product_563558_21248, sold_product_563558_15382\\",\\"27.984, 37\\",\\"27.984, 37\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"13.992, 19.594\\",\\"27.984, 37\\",\\"21,248, 15,382\\",\\"Windbreaker - navy blazer, Tracksuit top - mottled grey\\",\\"Windbreaker - navy blazer, Tracksuit top - mottled grey\\",\\"1, 1\\",\\"ZO0622706227, ZO0584505845\\",\\"0, 0\\",\\"27.984, 37\\",\\"27.984, 37\\",\\"0, 0\\",\\"ZO0622706227, ZO0584505845\\",65,65,2,2,order,wagdi -cwMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Tariq,Tariq,\\"Tariq Holland\\",\\"Tariq Holland\\",MALE,25,Holland,Holland,\\"(empty)\\",Saturday,5,\\"tariq@holland-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Oceanavigations, Microlutions\\",\\"Oceanavigations, Microlutions\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563150,\\"sold_product_563150_12819, sold_product_563150_19994\\",\\"sold_product_563150_12819, sold_product_563150_19994\\",\\"24.984, 6.988\\",\\"24.984, 6.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Microlutions\\",\\"Oceanavigations, Microlutions\\",\\"11.25, 3.631\\",\\"24.984, 6.988\\",\\"12,819, 19,994\\",\\"Chinos - dark green, STAY TRUE 2 PACK - Socks - white/grey/black\\",\\"Chinos - dark green, STAY TRUE 2 PACK - Socks - white/grey/black\\",\\"1, 1\\",\\"ZO0281802818, ZO0130201302\\",\\"0, 0\\",\\"24.984, 6.988\\",\\"24.984, 6.988\\",\\"0, 0\\",\\"ZO0281802818, ZO0130201302\\",\\"31.984\\",\\"31.984\\",2,2,order,tariq -eQMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Smith\\",\\"Wilhemina St. Smith\\",FEMALE,17,Smith,Smith,\\"(empty)\\",Saturday,5,\\"wilhemina st.@smith-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Tigress Enterprises, Oceanavigations, Pyramidustries\\",\\"Tigress Enterprises, Oceanavigations, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",728845,\\"sold_product_728845_11691, sold_product_728845_23205, sold_product_728845_14170, sold_product_728845_8257\\",\\"sold_product_728845_11691, sold_product_728845_23205, sold_product_728845_14170, sold_product_728845_8257\\",\\"24.984, 65, 28.984, 13.992\\",\\"24.984, 65, 28.984, 13.992\\",\\"Women's Clothing, Women's Accessories, Women's Accessories, Women's Clothing\\",\\"Women's Clothing, Women's Accessories, Women's Accessories, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises, Oceanavigations, Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Oceanavigations, Tigress Enterprises, Pyramidustries\\",\\"13.492, 32.5, 13.047, 7.41\\",\\"24.984, 65, 28.984, 13.992\\",\\"11,691, 23,205, 14,170, 8,257\\",\\"Cape - grey multicolor, Handbag - black, Handbag - brown, Print T-shirt - dark grey\\",\\"Cape - grey multicolor, Handbag - black, Handbag - brown, Print T-shirt - dark grey\\",\\"1, 1, 1, 1\\",\\"ZO0082300823, ZO0306203062, ZO0094600946, ZO0158901589\\",\\"0, 0, 0, 0\\",\\"24.984, 65, 28.984, 13.992\\",\\"24.984, 65, 28.984, 13.992\\",\\"0, 0, 0, 0\\",\\"ZO0082300823, ZO0306203062, ZO0094600946, ZO0158901589\\",133,133,4,4,order,wilhemina -lQMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Craig\\",\\"Abd Craig\\",MALE,52,Craig,Craig,\\"(empty)\\",Saturday,5,\\"abd@craig-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562723,\\"sold_product_562723_15183, sold_product_562723_15983\\",\\"sold_product_562723_15183, sold_product_562723_15983\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"16.5, 11.25\\",\\"33, 24.984\\",\\"15,183, 15,983\\",\\"Shirt - blue/off white, Shirt - grey/white\\",\\"Shirt - blue/off white, Shirt - grey/white\\",\\"1, 1\\",\\"ZO0109901099, ZO0277802778\\",\\"0, 0\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"0, 0\\",\\"ZO0109901099, ZO0277802778\\",\\"57.969\\",\\"57.969\\",2,2,order,abd -lgMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Oliver,Oliver,\\"Oliver Mullins\\",\\"Oliver Mullins\\",MALE,7,Mullins,Mullins,\\"(empty)\\",Saturday,5,\\"oliver@mullins-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562745,\\"sold_product_562745_12209, sold_product_562745_15674\\",\\"sold_product_562745_12209, sold_product_562745_15674\\",\\"22.984, 28.984\\",\\"22.984, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"11.953, 14.211\\",\\"22.984, 28.984\\",\\"12,209, 15,674\\",\\"Hoodie - black/olive, Sweatshirt - black\\",\\"Hoodie - black/olive, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0541905419, ZO0628306283\\",\\"0, 0\\",\\"22.984, 28.984\\",\\"22.984, 28.984\\",\\"0, 0\\",\\"ZO0541905419, ZO0628306283\\",\\"51.969\\",\\"51.969\\",2,2,order,oliver -lwMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Perry\\",\\"Robbie Perry\\",MALE,48,Perry,Perry,\\"(empty)\\",Saturday,5,\\"robbie@perry-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562763,\\"sold_product_562763_3029, sold_product_562763_23796\\",\\"sold_product_562763_3029, sold_product_562763_23796\\",\\"50, 18.984\\",\\"50, 18.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"22.5, 10.063\\",\\"50, 18.984\\",\\"3,029, 23,796\\",\\"Light jacket - dark blue, Long sleeved top - mid grey multicolor\\",\\"Light jacket - dark blue, Long sleeved top - mid grey multicolor\\",\\"1, 1\\",\\"ZO0428604286, ZO0119601196\\",\\"0, 0\\",\\"50, 18.984\\",\\"50, 18.984\\",\\"0, 0\\",\\"ZO0428604286, ZO0119601196\\",69,69,2,2,order,robbie -yAMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Mostafa,Mostafa,\\"Mostafa Graham\\",\\"Mostafa Graham\\",MALE,9,Graham,Graham,\\"(empty)\\",Saturday,5,\\"mostafa@graham-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563604,\\"sold_product_563604_11391, sold_product_563604_13058\\",\\"sold_product_563604_11391, sold_product_563604_13058\\",\\"16.984, 60\\",\\"16.984, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"9, 28.203\\",\\"16.984, 60\\",\\"11,391, 13,058\\",\\"Sweatshirt - mottled grey, Lace-ups - Midnight Blue\\",\\"Sweatshirt - mottled grey, Lace-ups - Midnight Blue\\",\\"1, 1\\",\\"ZO0588005880, ZO0388703887\\",\\"0, 0\\",\\"16.984, 60\\",\\"16.984, 60\\",\\"0, 0\\",\\"ZO0588005880, ZO0388703887\\",77,77,2,2,order,mostafa -7AMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories\\",\\"Women's Accessories\\",EUR,Elyssa,Elyssa,\\"Elyssa Mckenzie\\",\\"Elyssa Mckenzie\\",FEMALE,27,Mckenzie,Mckenzie,\\"(empty)\\",Saturday,5,\\"elyssa@mckenzie-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563867,\\"sold_product_563867_15363, sold_product_563867_23604\\",\\"sold_product_563867_15363, sold_product_563867_23604\\",\\"20.984, 13.992\\",\\"20.984, 13.992\\",\\"Women's Accessories, Women's Accessories\\",\\"Women's Accessories, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"10.289, 6.719\\",\\"20.984, 13.992\\",\\"15,363, 23,604\\",\\"Across body bag - red , Across body bag - rose\\",\\"Across body bag - red , Across body bag - rose\\",\\"1, 1\\",\\"ZO0097300973, ZO0196301963\\",\\"0, 0\\",\\"20.984, 13.992\\",\\"20.984, 13.992\\",\\"0, 0\\",\\"ZO0097300973, ZO0196301963\\",\\"34.969\\",\\"34.969\\",2,2,order,elyssa -AQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Clarice,Clarice,\\"Clarice Valdez\\",\\"Clarice Valdez\\",FEMALE,18,Valdez,Valdez,\\"(empty)\\",Saturday,5,\\"clarice@valdez-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563383,\\"sold_product_563383_21467, sold_product_563383_17467\\",\\"sold_product_563383_21467, sold_product_563383_17467\\",\\"60, 50\\",\\"60, 50\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"32.375, 26.484\\",\\"60, 50\\",\\"21,467, 17,467\\",\\"Lace-ups - black, Ankle boots - cognac\\",\\"Lace-ups - black, Ankle boots - cognac\\",\\"1, 1\\",\\"ZO0369103691, ZO0378603786\\",\\"0, 0\\",\\"60, 50\\",\\"60, 50\\",\\"0, 0\\",\\"ZO0369103691, ZO0378603786\\",110,110,2,2,order,clarice -AgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Abd,Abd,\\"Abd Wood\\",\\"Abd Wood\\",MALE,52,Wood,Wood,\\"(empty)\\",Saturday,5,\\"abd@wood-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563218,\\"sold_product_563218_16231, sold_product_563218_18727\\",\\"sold_product_563218_16231, sold_product_563218_18727\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"9, 5.391\\",\\"16.984, 10.992\\",\\"16,231, 18,727\\",\\"Print T-shirt - bright white, Belt - cognac \\",\\"Print T-shirt - bright white, Belt - cognac \\",\\"1, 1\\",\\"ZO0120401204, ZO0598605986\\",\\"0, 0\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"0, 0\\",\\"ZO0120401204, ZO0598605986\\",\\"27.984\\",\\"27.984\\",2,2,order,abd -TAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Betty,Betty,\\"Betty Ramsey\\",\\"Betty Ramsey\\",FEMALE,44,Ramsey,Ramsey,\\"(empty)\\",Saturday,5,\\"betty@ramsey-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563554,\\"sold_product_563554_15671, sold_product_563554_13795\\",\\"sold_product_563554_15671, sold_product_563554_13795\\",\\"70, 33\\",\\"70, 33\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"31.5, 16.5\\",\\"70, 33\\",\\"15,671, 13,795\\",\\"Ankle boots - taupe, Trousers - navy\\",\\"Ankle boots - taupe, Trousers - navy\\",\\"1, 1\\",\\"ZO0246502465, ZO0032100321\\",\\"0, 0\\",\\"70, 33\\",\\"70, 33\\",\\"0, 0\\",\\"ZO0246502465, ZO0032100321\\",103,103,2,2,order,betty -wAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,rania,rania,\\"rania Long\\",\\"rania Long\\",FEMALE,24,Long,Long,\\"(empty)\\",Saturday,5,\\"rania@long-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563023,\\"sold_product_563023_24484, sold_product_563023_21752\\",\\"sold_product_563023_24484, sold_product_563023_21752\\",\\"12.992, 13.992\\",\\"12.992, 13.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"6.879, 6.301\\",\\"12.992, 13.992\\",\\"24,484, 21,752\\",\\"Print T-shirt - black, Pencil skirt - dark grey multicolor\\",\\"Print T-shirt - black, Pencil skirt - dark grey multicolor\\",\\"1, 1\\",\\"ZO0055100551, ZO0149701497\\",\\"0, 0\\",\\"12.992, 13.992\\",\\"12.992, 13.992\\",\\"0, 0\\",\\"ZO0055100551, ZO0149701497\\",\\"26.984\\",\\"26.984\\",2,2,order,rani -wQMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Betty,Betty,\\"Betty Webb\\",\\"Betty Webb\\",FEMALE,44,Webb,Webb,\\"(empty)\\",Saturday,5,\\"betty@webb-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563060,\\"sold_product_563060_22520, sold_product_563060_22874\\",\\"sold_product_563060_22520, sold_product_563060_22874\\",\\"42, 42\\",\\"42, 42\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"22.672, 22.672\\",\\"42, 42\\",\\"22,520, 22,874\\",\\"Summer dress - black, Across body bag - black\\",\\"Summer dress - black, Across body bag - black\\",\\"1, 1\\",\\"ZO0040600406, ZO0356503565\\",\\"0, 0\\",\\"42, 42\\",\\"42, 42\\",\\"0, 0\\",\\"ZO0040600406, ZO0356503565\\",84,84,2,2,order,betty -wgMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Phil,Phil,\\"Phil Hudson\\",\\"Phil Hudson\\",MALE,50,Hudson,Hudson,\\"(empty)\\",Saturday,5,\\"phil@hudson-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563108,\\"sold_product_563108_13510, sold_product_563108_11051\\",\\"sold_product_563108_13510, sold_product_563108_11051\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"25.484, 13.344\\",\\"50, 28.984\\",\\"13,510, 11,051\\",\\"Waistcoat - dark blue, Across body bag - brown/brown\\",\\"Waistcoat - dark blue, Across body bag - brown/brown\\",\\"1, 1\\",\\"ZO0429604296, ZO0465204652\\",\\"0, 0\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"0, 0\\",\\"ZO0429604296, ZO0465204652\\",79,79,2,2,order,phil -hAMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Selena,Selena,\\"Selena Richards\\",\\"Selena Richards\\",FEMALE,42,Richards,Richards,\\"(empty)\\",Saturday,5,\\"selena@richards-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563778,\\"sold_product_563778_15546, sold_product_563778_11477\\",\\"sold_product_563778_15546, sold_product_563778_11477\\",\\"16.984, 24.984\\",\\"16.984, 24.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"8.328, 11.25\\",\\"16.984, 24.984\\",\\"15,546, 11,477\\",\\"Sweatshirt - coral, Across body bag - cognac\\",\\"Sweatshirt - coral, Across body bag - cognac\\",\\"1, 1\\",\\"ZO0656606566, ZO0186001860\\",\\"0, 0\\",\\"16.984, 24.984\\",\\"16.984, 24.984\\",\\"0, 0\\",\\"ZO0656606566, ZO0186001860\\",\\"41.969\\",\\"41.969\\",2,2,order,selena -xwMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Cortez\\",\\"Gwen Cortez\\",FEMALE,26,Cortez,Cortez,\\"(empty)\\",Saturday,5,\\"gwen@cortez-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Spherecords, Champion Arts\\",\\"Spherecords, Champion Arts\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562705,\\"sold_product_562705_12529, sold_product_562705_22843\\",\\"sold_product_562705_12529, sold_product_562705_22843\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Champion Arts\\",\\"Spherecords, Champion Arts\\",\\"5.398, 12\\",\\"11.992, 24.984\\",\\"12,529, 22,843\\",\\"Jumpsuit - black, Shirt - black denim\\",\\"Jumpsuit - black, Shirt - black denim\\",\\"1, 1\\",\\"ZO0633106331, ZO0495904959\\",\\"0, 0\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"0, 0\\",\\"ZO0633106331, ZO0495904959\\",\\"36.969\\",\\"36.969\\",2,2,order,gwen -yAMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Phil,Phil,\\"Phil Sutton\\",\\"Phil Sutton\\",MALE,50,Sutton,Sutton,\\"(empty)\\",Saturday,5,\\"phil@sutton-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563639,\\"sold_product_563639_24934, sold_product_563639_3499\\",\\"sold_product_563639_24934, sold_product_563639_3499\\",\\"50, 60\\",\\"50, 60\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"22.5, 28.203\\",\\"50, 60\\",\\"24,934, 3,499\\",\\"Lace-up boots - resin coffee, Hardshell jacket - jet black\\",\\"Lace-up boots - resin coffee, Hardshell jacket - jet black\\",\\"1, 1\\",\\"ZO0403504035, ZO0623006230\\",\\"0, 0\\",\\"50, 60\\",\\"50, 60\\",\\"0, 0\\",\\"ZO0403504035, ZO0623006230\\",110,110,2,2,order,phil -yQMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Yasmine,Yasmine,\\"Yasmine Mcdonald\\",\\"Yasmine Mcdonald\\",FEMALE,43,Mcdonald,Mcdonald,\\"(empty)\\",Saturday,5,\\"yasmine@mcdonald-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563698,\\"sold_product_563698_23206, sold_product_563698_15645\\",\\"sold_product_563698_23206, sold_product_563698_15645\\",\\"33, 11.992\\",\\"33, 11.992\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"15.844, 6.109\\",\\"33, 11.992\\",\\"23,206, 15,645\\",\\"Cardigan - greymulticolor/black, Scarf - green\\",\\"Cardigan - greymulticolor/black, Scarf - green\\",\\"1, 1\\",\\"ZO0070800708, ZO0084100841\\",\\"0, 0\\",\\"33, 11.992\\",\\"33, 11.992\\",\\"0, 0\\",\\"ZO0070800708, ZO0084100841\\",\\"44.969\\",\\"44.969\\",2,2,order,yasmine -MwMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Abd,Abd,\\"Abd Banks\\",\\"Abd Banks\\",MALE,52,Banks,Banks,\\"(empty)\\",Saturday,5,\\"abd@banks-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Oceanavigations, Microlutions\\",\\"Elitelligence, Oceanavigations, Microlutions\\",\\"Jun 21, 2019 @ 00:00:00.000\\",714638,\\"sold_product_714638_14544, sold_product_714638_19885, sold_product_714638_13083, sold_product_714638_17585\\",\\"sold_product_714638_14544, sold_product_714638_19885, sold_product_714638_13083, sold_product_714638_17585\\",\\"28.984, 10.992, 24.984, 33\\",\\"28.984, 10.992, 24.984, 33\\",\\"Men's Clothing, Men's Accessories, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Accessories, Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, Elitelligence, Oceanavigations, Microlutions\\",\\"Elitelligence, Elitelligence, Oceanavigations, Microlutions\\",\\"13.633, 5.93, 12.25, 17.484\\",\\"28.984, 10.992, 24.984, 33\\",\\"14,544, 19,885, 13,083, 17,585\\",\\"Jumper - black, Wallet - grey/cognac, Chinos - sand, Shirt - black denim\\",\\"Jumper - black, Wallet - grey/cognac, Chinos - sand, Shirt - black denim\\",\\"1, 1, 1, 1\\",\\"ZO0576205762, ZO0602006020, ZO0281502815, ZO0111001110\\",\\"0, 0, 0, 0\\",\\"28.984, 10.992, 24.984, 33\\",\\"28.984, 10.992, 24.984, 33\\",\\"0, 0, 0, 0\\",\\"ZO0576205762, ZO0602006020, ZO0281502815, ZO0111001110\\",\\"97.938\\",\\"97.938\\",4,4,order,abd -bAMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Lloyd\\",\\"Mostafa Lloyd\\",MALE,9,Lloyd,Lloyd,\\"(empty)\\",Saturday,5,\\"mostafa@lloyd-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563602,\\"sold_product_563602_11928, sold_product_563602_13191\\",\\"sold_product_563602_11928, sold_product_563602_13191\\",\\"22.984, 50\\",\\"22.984, 50\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"11.039, 25.984\\",\\"22.984, 50\\",\\"11,928, 13,191\\",\\"Casual lace-ups - black, SOLID - Summer jacket - royal blue\\",\\"Casual lace-ups - black, SOLID - Summer jacket - royal blue\\",\\"1, 1\\",\\"ZO0508705087, ZO0427804278\\",\\"0, 0\\",\\"22.984, 50\\",\\"22.984, 50\\",\\"0, 0\\",\\"ZO0508705087, ZO0427804278\\",73,73,2,2,order,mostafa -8gMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Munoz\\",\\"Sultan Al Munoz\\",MALE,19,Munoz,Munoz,\\"(empty)\\",Saturday,5,\\"sultan al@munoz-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563054,\\"sold_product_563054_11706, sold_product_563054_13408\\",\\"sold_product_563054_11706, sold_product_563054_13408\\",\\"100, 50\\",\\"100, 50\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"49, 23\\",\\"100, 50\\",\\"11,706, 13,408\\",\\"Weekend bag - dark brown, Cowboy/Biker boots - dark brown/tan\\",\\"Weekend bag - dark brown, Cowboy/Biker boots - dark brown/tan\\",\\"1, 1\\",\\"ZO0701907019, ZO0519405194\\",\\"0, 0\\",\\"100, 50\\",\\"100, 50\\",\\"0, 0\\",\\"ZO0701907019, ZO0519405194\\",150,150,2,2,order,sultan -8wMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Abd,Abd,\\"Abd Shaw\\",\\"Abd Shaw\\",MALE,52,Shaw,Shaw,\\"(empty)\\",Saturday,5,\\"abd@shaw-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563093,\\"sold_product_563093_18385, sold_product_563093_16783\\",\\"sold_product_563093_18385, sold_product_563093_16783\\",\\"7.988, 42\\",\\"7.988, 42\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"4.07, 20.156\\",\\"7.988, 42\\",\\"18,385, 16,783\\",\\"Basic T-shirt - dark grey multicolor, Weekend bag - black\\",\\"Basic T-shirt - dark grey multicolor, Weekend bag - black\\",\\"1, 1\\",\\"ZO0435004350, ZO0472104721\\",\\"0, 0\\",\\"7.988, 42\\",\\"7.988, 42\\",\\"0, 0\\",\\"ZO0435004350, ZO0472104721\\",\\"49.969\\",\\"49.969\\",2,2,order,abd -IQMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Ryan\\",\\"Pia Ryan\\",FEMALE,45,Ryan,Ryan,\\"(empty)\\",Saturday,5,\\"pia@ryan-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Gnomehouse, Spherecords\\",\\"Gnomehouse, Spherecords\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562875,\\"sold_product_562875_19166, sold_product_562875_21969\\",\\"sold_product_562875_19166, sold_product_562875_21969\\",\\"60, 7.988\\",\\"60, 7.988\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Spherecords\\",\\"Gnomehouse, Spherecords\\",\\"29.406, 3.68\\",\\"60, 7.988\\",\\"19,166, 21,969\\",\\"Cardigan - camel, Vest - bordeaux\\",\\"Cardigan - camel, Vest - bordeaux\\",\\"1, 1\\",\\"ZO0353003530, ZO0637006370\\",\\"0, 0\\",\\"60, 7.988\\",\\"60, 7.988\\",\\"0, 0\\",\\"ZO0353003530, ZO0637006370\\",68,68,2,2,order,pia -IgMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Brigitte,Brigitte,\\"Brigitte Holland\\",\\"Brigitte Holland\\",FEMALE,12,Holland,Holland,\\"(empty)\\",Saturday,5,\\"brigitte@holland-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Primemaster, Pyramidustries\\",\\"Primemaster, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562914,\\"sold_product_562914_16495, sold_product_562914_16949\\",\\"sold_product_562914_16495, sold_product_562914_16949\\",\\"75, 13.992\\",\\"75, 13.992\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Primemaster, Pyramidustries\\",\\"Primemaster, Pyramidustries\\",\\"39.75, 6.859\\",\\"75, 13.992\\",\\"16,495, 16,949\\",\\"Sandals - nuvola, Scarf - bordeaux/mustard\\",\\"Sandals - nuvola, Scarf - bordeaux/mustard\\",\\"1, 1\\",\\"ZO0360503605, ZO0194501945\\",\\"0, 0\\",\\"75, 13.992\\",\\"75, 13.992\\",\\"0, 0\\",\\"ZO0360503605, ZO0194501945\\",89,89,2,2,order,brigitte -IwMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Brigitte,Brigitte,\\"Brigitte Bailey\\",\\"Brigitte Bailey\\",FEMALE,12,Bailey,Bailey,\\"(empty)\\",Saturday,5,\\"brigitte@bailey-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562654,\\"sold_product_562654_13316, sold_product_562654_13303\\",\\"sold_product_562654_13316, sold_product_562654_13303\\",\\"24.984, 10.992\\",\\"24.984, 10.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"12, 5.602\\",\\"24.984, 10.992\\",\\"13,316, 13,303\\",\\"Blouse - black, Print T-shirt - white\\",\\"Blouse - black, Print T-shirt - white\\",\\"1, 1\\",\\"ZO0065400654, ZO0158701587\\",\\"0, 0\\",\\"24.984, 10.992\\",\\"24.984, 10.992\\",\\"0, 0\\",\\"ZO0065400654, ZO0158701587\\",\\"35.969\\",\\"35.969\\",2,2,order,brigitte -JQMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Betty,Betty,\\"Betty Massey\\",\\"Betty Massey\\",FEMALE,44,Massey,Massey,\\"(empty)\\",Saturday,5,\\"betty@massey-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563860,\\"sold_product_563860_17204, sold_product_563860_5970\\",\\"sold_product_563860_17204, sold_product_563860_5970\\",\\"33, 33\\",\\"33, 33\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"17.156, 15.844\\",\\"33, 33\\",\\"17,204, 5,970\\",\\"Blouse - potent purple, Wedge boots - toffee\\",\\"Blouse - potent purple, Wedge boots - toffee\\",\\"1, 1\\",\\"ZO0344703447, ZO0031000310\\",\\"0, 0\\",\\"33, 33\\",\\"33, 33\\",\\"0, 0\\",\\"ZO0344703447, ZO0031000310\\",66,66,2,2,order,betty -JgMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Rivera\\",\\"Yasmine Rivera\\",FEMALE,43,Rivera,Rivera,\\"(empty)\\",Saturday,5,\\"yasmine@rivera-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563907,\\"sold_product_563907_11709, sold_product_563907_20859\\",\\"sold_product_563907_11709, sold_product_563907_20859\\",\\"20.984, 18.984\\",\\"20.984, 18.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"11.328, 10.063\\",\\"20.984, 18.984\\",\\"11,709, 20,859\\",\\"Jersey dress - black, Long sleeved top - navy\\",\\"Jersey dress - black, Long sleeved top - navy\\",\\"1, 1\\",\\"ZO0036700367, ZO0054300543\\",\\"0, 0\\",\\"20.984, 18.984\\",\\"20.984, 18.984\\",\\"0, 0\\",\\"ZO0036700367, ZO0054300543\\",\\"39.969\\",\\"39.969\\",2,2,order,yasmine -QQMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Youssef,Youssef,\\"Youssef Conner\\",\\"Youssef Conner\\",MALE,31,Conner,Conner,\\"(empty)\\",Saturday,5,\\"youssef@conner-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562833,\\"sold_product_562833_21511, sold_product_562833_14742\\",\\"sold_product_562833_21511, sold_product_562833_14742\\",\\"13.992, 33\\",\\"13.992, 33\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"7.41, 15.18\\",\\"13.992, 33\\",\\"21,511, 14,742\\",\\"3 PACK - Shorts - black, Laptop bag - brown\\",\\"3 PACK - Shorts - black, Laptop bag - brown\\",\\"1, 1\\",\\"ZO0610806108, ZO0316803168\\",\\"0, 0\\",\\"13.992, 33\\",\\"13.992, 33\\",\\"0, 0\\",\\"ZO0610806108, ZO0316803168\\",\\"46.969\\",\\"46.969\\",2,2,order,youssef -QgMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Soto\\",\\"Abd Soto\\",MALE,52,Soto,Soto,\\"(empty)\\",Saturday,5,\\"abd@soto-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562899,\\"sold_product_562899_21057, sold_product_562899_13717\\",\\"sold_product_562899_21057, sold_product_562899_13717\\",\\"13.992, 28.984\\",\\"13.992, 28.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"6.859, 15.359\\",\\"13.992, 28.984\\",\\"21,057, 13,717\\",\\"Scarf - navy/grey, Tracksuit top - blue\\",\\"Scarf - navy/grey, Tracksuit top - blue\\",\\"1, 1\\",\\"ZO0313403134, ZO0587105871\\",\\"0, 0\\",\\"13.992, 28.984\\",\\"13.992, 28.984\\",\\"0, 0\\",\\"ZO0313403134, ZO0587105871\\",\\"42.969\\",\\"42.969\\",2,2,order,abd -QwMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Ahmed Al\\",\\"Ahmed Al\\",\\"Ahmed Al Soto\\",\\"Ahmed Al Soto\\",MALE,4,Soto,Soto,\\"(empty)\\",Saturday,5,\\"ahmed al@soto-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Elitelligence, Spherecords\\",\\"Elitelligence, Spherecords\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562665,\\"sold_product_562665_15130, sold_product_562665_14446\\",\\"sold_product_562665_15130, sold_product_562665_14446\\",\\"11.992, 8.992\\",\\"11.992, 8.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spherecords\\",\\"Elitelligence, Spherecords\\",\\"6.469, 4.578\\",\\"11.992, 8.992\\",\\"15,130, 14,446\\",\\"Long sleeved top - white, 5 PACK - Socks - dark grey\\",\\"Long sleeved top - white, 5 PACK - Socks - dark grey\\",\\"1, 1\\",\\"ZO0569205692, ZO0664006640\\",\\"0, 0\\",\\"11.992, 8.992\\",\\"11.992, 8.992\\",\\"0, 0\\",\\"ZO0569205692, ZO0664006640\\",\\"20.984\\",\\"20.984\\",2,2,order,ahmed -RwMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Mostafa,Mostafa,\\"Mostafa Clayton\\",\\"Mostafa Clayton\\",MALE,9,Clayton,Clayton,\\"(empty)\\",Saturday,5,\\"mostafa@clayton-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563579,\\"sold_product_563579_12028, sold_product_563579_14742\\",\\"sold_product_563579_12028, sold_product_563579_14742\\",\\"7.988, 33\\",\\"7.988, 33\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"3.92, 15.18\\",\\"7.988, 33\\",\\"12,028, 14,742\\",\\"Vest - light blue multicolor, Laptop bag - brown\\",\\"Vest - light blue multicolor, Laptop bag - brown\\",\\"1, 1\\",\\"ZO0548905489, ZO0316803168\\",\\"0, 0\\",\\"7.988, 33\\",\\"7.988, 33\\",\\"0, 0\\",\\"ZO0548905489, ZO0316803168\\",\\"40.969\\",\\"40.969\\",2,2,order,mostafa -SAMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Chandler\\",\\"Elyssa Chandler\\",FEMALE,27,Chandler,Chandler,\\"(empty)\\",Saturday,5,\\"elyssa@chandler-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Tigress Enterprises\\",\\"Low Tide Media, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563119,\\"sold_product_563119_22794, sold_product_563119_23300\\",\\"sold_product_563119_22794, sold_product_563119_23300\\",\\"100, 35\\",\\"100, 35\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Tigress Enterprises\\",\\"Low Tide Media, Tigress Enterprises\\",\\"46, 16.453\\",\\"100, 35\\",\\"22,794, 23,300\\",\\"Boots - Midnight Blue, Shift dress - black\\",\\"Boots - Midnight Blue, Shift dress - black\\",\\"1, 1\\",\\"ZO0374603746, ZO0041300413\\",\\"0, 0\\",\\"100, 35\\",\\"100, 35\\",\\"0, 0\\",\\"ZO0374603746, ZO0041300413\\",135,135,2,2,order,elyssa -SQMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Women's Accessories\\",\\"Men's Accessories, Women's Accessories\\",EUR,Recip,Recip,\\"Recip Gilbert\\",\\"Recip Gilbert\\",MALE,10,Gilbert,Gilbert,\\"(empty)\\",Saturday,5,\\"recip@gilbert-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,Elitelligence,Elitelligence,\\"Jun 21, 2019 @ 00:00:00.000\\",563152,\\"sold_product_563152_22166, sold_product_563152_14897\\",\\"sold_product_563152_22166, sold_product_563152_14897\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"Men's Accessories, Women's Accessories\\",\\"Men's Accessories, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"6.469, 12.992\\",\\"11.992, 24.984\\",\\"22,166, 14,897\\",\\"Scarf - navy/turqoise, Rucksack - olive \\",\\"Scarf - navy/turqoise, Rucksack - olive \\",\\"1, 1\\",\\"ZO0603606036, ZO0608206082\\",\\"0, 0\\",\\"11.992, 24.984\\",\\"11.992, 24.984\\",\\"0, 0\\",\\"ZO0603606036, ZO0608206082\\",\\"36.969\\",\\"36.969\\",2,2,order,recip -dwMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Chandler\\",\\"Wilhemina St. Chandler\\",FEMALE,17,Chandler,Chandler,\\"(empty)\\",Saturday,5,\\"wilhemina st.@chandler-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Spherecords, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",725079,\\"sold_product_725079_18356, sold_product_725079_16691, sold_product_725079_9233, sold_product_725079_13733\\",\\"sold_product_725079_18356, sold_product_725079_16691, sold_product_725079_9233, sold_product_725079_13733\\",\\"10.992, 20.984, 42, 14.992\\",\\"10.992, 20.984, 42, 14.992\\",\\"Women's Clothing, Women's Accessories, Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories, Women's Clothing, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Spherecords, Tigress Enterprises, Tigress Enterprises, Tigress Enterprises\\",\\"Spherecords, Tigress Enterprises, Tigress Enterprises, Tigress Enterprises\\",\\"5.391, 10.492, 22.672, 7.641\\",\\"10.992, 20.984, 42, 14.992\\",\\"18,356, 16,691, 9,233, 13,733\\",\\"2 PACK - Vest - white/white, Across body bag - black, Jumper - grey multicolor, Scarf - mint\\",\\"2 PACK - Vest - white/white, Across body bag - black, Jumper - grey multicolor, Scarf - mint\\",\\"1, 1, 1, 1\\",\\"ZO0641506415, ZO0086200862, ZO0071500715, ZO0085700857\\",\\"0, 0, 0, 0\\",\\"10.992, 20.984, 42, 14.992\\",\\"10.992, 20.984, 42, 14.992\\",\\"0, 0, 0, 0\\",\\"ZO0641506415, ZO0086200862, ZO0071500715, ZO0085700857\\",\\"88.938\\",\\"88.938\\",4,4,order,wilhemina -kQMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Robbie,Robbie,\\"Robbie Harvey\\",\\"Robbie Harvey\\",MALE,48,Harvey,Harvey,\\"(empty)\\",Saturday,5,\\"robbie@harvey-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563736,\\"sold_product_563736_22302, sold_product_563736_14502\\",\\"sold_product_563736_22302, sold_product_563736_14502\\",\\"28.984, 15.992\\",\\"28.984, 15.992\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"13.633, 7.84\\",\\"28.984, 15.992\\",\\"22,302, 14,502\\",\\"Shirt - white, Belt - black\\",\\"Shirt - white, Belt - black\\",\\"1, 1\\",\\"ZO0415604156, ZO0461704617\\",\\"0, 0\\",\\"28.984, 15.992\\",\\"28.984, 15.992\\",\\"0, 0\\",\\"ZO0415604156, ZO0461704617\\",\\"44.969\\",\\"44.969\\",2,2,order,robbie -kgMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Bryant\\",\\"Stephanie Bryant\\",FEMALE,6,Bryant,Bryant,\\"(empty)\\",Saturday,5,\\"stephanie@bryant-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563761,\\"sold_product_563761_13657, sold_product_563761_15397\\",\\"sold_product_563761_13657, sold_product_563761_15397\\",\\"33, 42\\",\\"33, 42\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"15.844, 20.156\\",\\"33, 42\\",\\"13,657, 15,397\\",\\"Tote bag - black, A-line skirt - coronet blue\\",\\"Tote bag - black, A-line skirt - coronet blue\\",\\"1, 1\\",\\"ZO0087700877, ZO0330603306\\",\\"0, 0\\",\\"33, 42\\",\\"33, 42\\",\\"0, 0\\",\\"ZO0087700877, ZO0330603306\\",75,75,2,2,order,stephanie -kwMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Jackson\\",\\"Gwen Jackson\\",FEMALE,26,Jackson,Jackson,\\"(empty)\\",Saturday,5,\\"gwen@jackson-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563800,\\"sold_product_563800_19249, sold_product_563800_20352\\",\\"sold_product_563800_19249, sold_product_563800_20352\\",\\"85, 11.992\\",\\"85, 11.992\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Pyramidustries\\",\\"Oceanavigations, Pyramidustries\\",\\"41.656, 6\\",\\"85, 11.992\\",\\"19,249, 20,352\\",\\"Handbag - black, Vest - red\\",\\"Handbag - black, Vest - red\\",\\"1, 1\\",\\"ZO0307303073, ZO0161601616\\",\\"0, 0\\",\\"85, 11.992\\",\\"85, 11.992\\",\\"0, 0\\",\\"ZO0307303073, ZO0161601616\\",97,97,2,2,order,gwen -\\"-AMtOW0BH63Xcmy4524Z\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie Austin\\",\\"Eddie Austin\\",MALE,38,Austin,Austin,\\"(empty)\\",Saturday,5,\\"eddie@austin-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Oceanavigations,Oceanavigations,\\"Jun 21, 2019 @ 00:00:00.000\\",563822,\\"sold_product_563822_13869, sold_product_563822_12632\\",\\"sold_product_563822_13869, sold_product_563822_12632\\",\\"13.992, 50\\",\\"13.992, 50\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"6.859, 26.484\\",\\"13.992, 50\\",\\"13,869, 12,632\\",\\"Tie - black, Down jacket - black\\",\\"Tie - black, Down jacket - black\\",\\"1, 1\\",\\"ZO0277402774, ZO0288502885\\",\\"0, 0\\",\\"13.992, 50\\",\\"13.992, 50\\",\\"0, 0\\",\\"ZO0277402774, ZO0288502885\\",\\"63.969\\",\\"63.969\\",2,2,order,eddie -GQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Oliver,Oliver,\\"Oliver Hansen\\",\\"Oliver Hansen\\",MALE,7,Hansen,Hansen,\\"(empty)\\",Saturday,5,\\"oliver@hansen-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562948,\\"sold_product_562948_23445, sold_product_562948_17355\\",\\"sold_product_562948_23445, sold_product_562948_17355\\",\\"28.984, 7.988\\",\\"28.984, 7.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"13.633, 4\\",\\"28.984, 7.988\\",\\"23,445, 17,355\\",\\"Chinos - navy, Print T-shirt - white\\",\\"Chinos - navy, Print T-shirt - white\\",\\"1, 1\\",\\"ZO0282102821, ZO0554405544\\",\\"0, 0\\",\\"28.984, 7.988\\",\\"28.984, 7.988\\",\\"0, 0\\",\\"ZO0282102821, ZO0554405544\\",\\"36.969\\",\\"36.969\\",2,2,order,oliver -GgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Frances,Frances,\\"Frances Moran\\",\\"Frances Moran\\",FEMALE,49,Moran,Moran,\\"(empty)\\",Saturday,5,\\"frances@moran-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562993,\\"sold_product_562993_17227, sold_product_562993_17918\\",\\"sold_product_562993_17227, sold_product_562993_17918\\",\\"60, 11.992\\",\\"60, 11.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"27.594, 6.23\\",\\"60, 11.992\\",\\"17,227, 17,918\\",\\"Trainers - bianco, Basic T-shirt - lilac\\",\\"Trainers - bianco, Basic T-shirt - lilac\\",\\"1, 1\\",\\"ZO0255202552, ZO0560005600\\",\\"0, 0\\",\\"60, 11.992\\",\\"60, 11.992\\",\\"0, 0\\",\\"ZO0255202552, ZO0560005600\\",72,72,2,2,order,frances -HAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Morrison\\",\\"Sonya Morrison\\",FEMALE,28,Morrison,Morrison,\\"(empty)\\",Saturday,5,\\"sonya@morrison-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562585,\\"sold_product_562585_16665, sold_product_562585_8623\\",\\"sold_product_562585_16665, sold_product_562585_8623\\",\\"20.984, 17.984\\",\\"20.984, 17.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"11.539, 8.102\\",\\"20.984, 17.984\\",\\"16,665, 8,623\\",\\"Vest - black, Long sleeved top - red ochre\\",\\"Vest - black, Long sleeved top - red ochre\\",\\"1, 1\\",\\"ZO0063800638, ZO0165301653\\",\\"0, 0\\",\\"20.984, 17.984\\",\\"20.984, 17.984\\",\\"0, 0\\",\\"ZO0063800638, ZO0165301653\\",\\"38.969\\",\\"38.969\\",2,2,order,sonya -HQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Diane,Diane,\\"Diane Ball\\",\\"Diane Ball\\",FEMALE,22,Ball,Ball,\\"(empty)\\",Saturday,5,\\"diane@ball-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563326,\\"sold_product_563326_22030, sold_product_563326_23066\\",\\"sold_product_563326_22030, sold_product_563326_23066\\",\\"42, 85\\",\\"42, 85\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"21.406, 44.188\\",\\"42, 85\\",\\"22,030, 23,066\\",\\"Blouse - black, Lace-up boots - black\\",\\"Blouse - black, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0266702667, ZO0680306803\\",\\"0, 0\\",\\"42, 85\\",\\"42, 85\\",\\"0, 0\\",\\"ZO0266702667, ZO0680306803\\",127,127,2,2,order,diane -JQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Fletcher\\",\\"Stephanie Fletcher\\",FEMALE,6,Fletcher,Fletcher,\\"(empty)\\",Saturday,5,\\"stephanie@fletcher-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563755,\\"sold_product_563755_13226, sold_product_563755_12114\\",\\"sold_product_563755_13226, sold_product_563755_12114\\",\\"16.984, 29.984\\",\\"16.984, 29.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"Spherecords Curvy, Tigress Enterprises\\",\\"8.828, 16.188\\",\\"16.984, 29.984\\",\\"13,226, 12,114\\",\\"Blouse - offwhite, Jersey dress - black/white\\",\\"Blouse - offwhite, Jersey dress - black/white\\",\\"1, 1\\",\\"ZO0710707107, ZO0038300383\\",\\"0, 0\\",\\"16.984, 29.984\\",\\"16.984, 29.984\\",\\"0, 0\\",\\"ZO0710707107, ZO0038300383\\",\\"46.969\\",\\"46.969\\",2,2,order,stephanie -TwMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories, Men's Shoes\\",\\"Men's Clothing, Men's Accessories, Men's Shoes\\",EUR,Abd,Abd,\\"Abd Hopkins\\",\\"Abd Hopkins\\",MALE,52,Hopkins,Hopkins,\\"(empty)\\",Saturday,5,\\"abd@hopkins-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Oceanavigations, Spherecords\\",\\"Low Tide Media, Oceanavigations, Spherecords\\",\\"Jun 21, 2019 @ 00:00:00.000\\",715450,\\"sold_product_715450_13559, sold_product_715450_21852, sold_product_715450_16570, sold_product_715450_11336\\",\\"sold_product_715450_13559, sold_product_715450_21852, sold_product_715450_16570, sold_product_715450_11336\\",\\"13.992, 20.984, 65, 10.992\\",\\"13.992, 20.984, 65, 10.992\\",\\"Men's Clothing, Men's Accessories, Men's Shoes, Men's Clothing\\",\\"Men's Clothing, Men's Accessories, Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Low Tide Media, Oceanavigations, Spherecords\\",\\"Low Tide Media, Low Tide Media, Oceanavigations, Spherecords\\",\\"6.441, 10.078, 31.844, 5.059\\",\\"13.992, 20.984, 65, 10.992\\",\\"13,559, 21,852, 16,570, 11,336\\",\\"3 PACK - Shorts - light blue/dark blue/white, Wallet - brown, Boots - navy, Long sleeved top - white/black\\",\\"3 PACK - Shorts - light blue/dark blue/white, Wallet - brown, Boots - navy, Long sleeved top - white/black\\",\\"1, 1, 1, 1\\",\\"ZO0476604766, ZO0462404624, ZO0258302583, ZO0658206582\\",\\"0, 0, 0, 0\\",\\"13.992, 20.984, 65, 10.992\\",\\"13.992, 20.984, 65, 10.992\\",\\"0, 0, 0, 0\\",\\"ZO0476604766, ZO0462404624, ZO0258302583, ZO0658206582\\",\\"110.938\\",\\"110.938\\",4,4,order,abd -dgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Boone\\",\\"Abdulraheem Al Boone\\",MALE,33,Boone,Boone,\\"(empty)\\",Saturday,5,\\"abdulraheem al@boone-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",Oceanavigations,Oceanavigations,\\"Jun 21, 2019 @ 00:00:00.000\\",563181,\\"sold_product_563181_15447, sold_product_563181_19692\\",\\"sold_product_563181_15447, sold_product_563181_19692\\",\\"50, 13.992\\",\\"50, 13.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"24.5, 6.859\\",\\"50, 13.992\\",\\"15,447, 19,692\\",\\"Suit jacket - grey, Print T-shirt - black\\",\\"Suit jacket - grey, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0274902749, ZO0293902939\\",\\"0, 0\\",\\"50, 13.992\\",\\"50, 13.992\\",\\"0, 0\\",\\"ZO0274902749, ZO0293902939\\",\\"63.969\\",\\"63.969\\",2,2,order,abdulraheem -jQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Diane,Diane,\\"Diane Graves\\",\\"Diane Graves\\",FEMALE,22,Graves,Graves,\\"(empty)\\",Saturday,5,\\"diane@graves-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563131,\\"sold_product_563131_15426, sold_product_563131_21432\\",\\"sold_product_563131_15426, sold_product_563131_21432\\",\\"75, 20.984\\",\\"75, 20.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"39, 11.539\\",\\"75, 20.984\\",\\"15,426, 21,432\\",\\"Cowboy/Biker boots - black, Blouse - peacoat\\",\\"Cowboy/Biker boots - black, Blouse - peacoat\\",\\"1, 1\\",\\"ZO0326803268, ZO0059600596\\",\\"0, 0\\",\\"75, 20.984\\",\\"75, 20.984\\",\\"0, 0\\",\\"ZO0326803268, ZO0059600596\\",96,96,2,2,order,diane -0gMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Wood\\",\\"Selena Wood\\",FEMALE,42,Wood,Wood,\\"(empty)\\",Saturday,5,\\"selena@wood-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563254,\\"sold_product_563254_23719, sold_product_563254_11095\\",\\"sold_product_563254_23719, sold_product_563254_11095\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Champion Arts\\",\\"13.922, 9.867\\",\\"28.984, 20.984\\",\\"23,719, 11,095\\",\\"Jersey dress - peacoat, Tracksuit top - pink multicolor\\",\\"Jersey dress - peacoat, Tracksuit top - pink multicolor\\",\\"1, 1\\",\\"ZO0052100521, ZO0498804988\\",\\"0, 0\\",\\"28.984, 20.984\\",\\"28.984, 20.984\\",\\"0, 0\\",\\"ZO0052100521, ZO0498804988\\",\\"49.969\\",\\"49.969\\",2,2,order,selena -OQMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Brigitte,Brigitte,\\"Brigitte Tran\\",\\"Brigitte Tran\\",FEMALE,12,Tran,Tran,\\"(empty)\\",Saturday,5,\\"brigitte@tran-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563573,\\"sold_product_563573_22735, sold_product_563573_23822\\",\\"sold_product_563573_22735, sold_product_563573_23822\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Oceanavigations\\",\\"Pyramidustries, Oceanavigations\\",\\"13.742, 32.375\\",\\"24.984, 60\\",\\"22,735, 23,822\\",\\"Platform heels - black, Sandals - Midnight Blue\\",\\"Platform heels - black, Sandals - Midnight Blue\\",\\"1, 1\\",\\"ZO0132601326, ZO0243002430\\",\\"0, 0\\",\\"24.984, 60\\",\\"24.984, 60\\",\\"0, 0\\",\\"ZO0132601326, ZO0243002430\\",85,85,2,2,order,brigitte -VwMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Thad,Thad,\\"Thad Chapman\\",\\"Thad Chapman\\",MALE,30,Chapman,Chapman,\\"(empty)\\",Saturday,5,\\"thad@chapman-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562699,\\"sold_product_562699_24934, sold_product_562699_20799\\",\\"sold_product_562699_24934, sold_product_562699_20799\\",\\"50, 14.992\\",\\"50, 14.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"22.5, 7.5\\",\\"50, 14.992\\",\\"24,934, 20,799\\",\\"Lace-up boots - resin coffee, Long sleeved top - white/black\\",\\"Lace-up boots - resin coffee, Long sleeved top - white/black\\",\\"1, 1\\",\\"ZO0403504035, ZO0558905589\\",\\"0, 0\\",\\"50, 14.992\\",\\"50, 14.992\\",\\"0, 0\\",\\"ZO0403504035, ZO0558905589\\",65,65,2,2,order,thad -WAMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories\\",\\"Men's Accessories\\",EUR,Tariq,Tariq,\\"Tariq Rivera\\",\\"Tariq Rivera\\",MALE,25,Rivera,Rivera,\\"(empty)\\",Saturday,5,\\"tariq@rivera-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563644,\\"sold_product_563644_20541, sold_product_563644_14121\\",\\"sold_product_563644_20541, sold_product_563644_14121\\",\\"90, 17.984\\",\\"90, 17.984\\",\\"Men's Accessories, Men's Accessories\\",\\"Men's Accessories, Men's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"44.094, 9.172\\",\\"90, 17.984\\",\\"20,541, 14,121\\",\\"Laptop bag - Dark Sea Green, Watch - grey\\",\\"Laptop bag - Dark Sea Green, Watch - grey\\",\\"1, 1\\",\\"ZO0470104701, ZO0600506005\\",\\"0, 0\\",\\"90, 17.984\\",\\"90, 17.984\\",\\"0, 0\\",\\"ZO0470104701, ZO0600506005\\",108,108,2,2,order,tariq -WQMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Eddie,Eddie,\\"Eddie Davidson\\",\\"Eddie Davidson\\",MALE,38,Davidson,Davidson,\\"(empty)\\",Saturday,5,\\"eddie@davidson-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563701,\\"sold_product_563701_20743, sold_product_563701_23294\\",\\"sold_product_563701_20743, sold_product_563701_23294\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"11.75, 15.938\\",\\"24.984, 28.984\\",\\"20,743, 23,294\\",\\"Slim fit jeans - grey, Tracksuit bottoms - dark blue\\",\\"Slim fit jeans - grey, Tracksuit bottoms - dark blue\\",\\"1, 1\\",\\"ZO0536305363, ZO0282702827\\",\\"0, 0\\",\\"24.984, 28.984\\",\\"24.984, 28.984\\",\\"0, 0\\",\\"ZO0536305363, ZO0282702827\\",\\"53.969\\",\\"53.969\\",2,2,order,eddie -ZQMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Ahmed Al\\",\\"Ahmed Al\\",\\"Ahmed Al Frank\\",\\"Ahmed Al Frank\\",MALE,4,Frank,Frank,\\"(empty)\\",Saturday,5,\\"ahmed al@frank-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562817,\\"sold_product_562817_1438, sold_product_562817_22804\\",\\"sold_product_562817_1438, sold_product_562817_22804\\",\\"60, 29.984\\",\\"60, 29.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"32.375, 15.891\\",\\"60, 29.984\\",\\"1,438, 22,804\\",\\"Trainers - black, Bomber Jacket - navy\\",\\"Trainers - black, Bomber Jacket - navy\\",\\"1, 1\\",\\"ZO0254702547, ZO0457804578\\",\\"0, 0\\",\\"60, 29.984\\",\\"60, 29.984\\",\\"0, 0\\",\\"ZO0254702547, ZO0457804578\\",90,90,2,2,order,ahmed -ZgMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Stokes\\",\\"Stephanie Stokes\\",FEMALE,6,Stokes,Stokes,\\"(empty)\\",Saturday,5,\\"stephanie@stokes-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562881,\\"sold_product_562881_20244, sold_product_562881_21108\\",\\"sold_product_562881_20244, sold_product_562881_21108\\",\\"28.984, 9.992\\",\\"28.984, 9.992\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"15.359, 5\\",\\"28.984, 9.992\\",\\"20,244, 21,108\\",\\"Handbag - black, Jersey dress - black\\",\\"Handbag - black, Jersey dress - black\\",\\"1, 1\\",\\"ZO0091700917, ZO0635406354\\",\\"0, 0\\",\\"28.984, 9.992\\",\\"28.984, 9.992\\",\\"0, 0\\",\\"ZO0091700917, ZO0635406354\\",\\"38.969\\",\\"38.969\\",2,2,order,stephanie -ZwMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Brigitte,Brigitte,\\"Brigitte Sherman\\",\\"Brigitte Sherman\\",FEMALE,12,Sherman,Sherman,\\"(empty)\\",Saturday,5,\\"brigitte@sherman-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562630,\\"sold_product_562630_18015, sold_product_562630_15858\\",\\"sold_product_562630_18015, sold_product_562630_15858\\",\\"60, 24.984\\",\\"60, 24.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"30, 13.492\\",\\"60, 24.984\\",\\"18,015, 15,858\\",\\"Summer dress - blue fog, Slip-ons - gold\\",\\"Summer dress - blue fog, Slip-ons - gold\\",\\"1, 1\\",\\"ZO0339803398, ZO0009700097\\",\\"0, 0\\",\\"60, 24.984\\",\\"60, 24.984\\",\\"0, 0\\",\\"ZO0339803398, ZO0009700097\\",85,85,2,2,order,brigitte -aAMtOW0BH63Xcmy453AZ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Hicham,Hicham,\\"Hicham Hudson\\",\\"Hicham Hudson\\",MALE,8,Hudson,Hudson,\\"(empty)\\",Saturday,5,\\"hicham@hudson-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Spherecords, Elitelligence\\",\\"Spherecords, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562667,\\"sold_product_562667_21772, sold_product_562667_1559\\",\\"sold_product_562667_21772, sold_product_562667_1559\\",\\"8.992, 33\\",\\"8.992, 33\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Elitelligence\\",\\"Spherecords, Elitelligence\\",\\"4.672, 17.813\\",\\"8.992, 33\\",\\"21,772, 1,559\\",\\"3 PACK - Socks - white, Lace-ups - light brown\\",\\"3 PACK - Socks - white, Lace-ups - light brown\\",\\"1, 1\\",\\"ZO0664706647, ZO0506005060\\",\\"0, 0\\",\\"8.992, 33\\",\\"8.992, 33\\",\\"0, 0\\",\\"ZO0664706647, ZO0506005060\\",\\"41.969\\",\\"41.969\\",2,2,order,hicham -jQMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Palmer\\",\\"Abd Palmer\\",MALE,52,Palmer,Palmer,\\"(empty)\\",Saturday,5,\\"abd@palmer-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563342,\\"sold_product_563342_24934, sold_product_563342_21049\\",\\"sold_product_563342_24934, sold_product_563342_21049\\",\\"50, 14.992\\",\\"50, 14.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"22.5, 7.941\\",\\"50, 14.992\\",\\"24,934, 21,049\\",\\"Lace-up boots - resin coffee, Print T-shirt - dark grey\\",\\"Lace-up boots - resin coffee, Print T-shirt - dark grey\\",\\"1, 1\\",\\"ZO0403504035, ZO0121101211\\",\\"0, 0\\",\\"50, 14.992\\",\\"50, 14.992\\",\\"0, 0\\",\\"ZO0403504035, ZO0121101211\\",65,65,2,2,order,abd -mgMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Hansen\\",\\"Jackson Hansen\\",MALE,13,Hansen,Hansen,\\"(empty)\\",Saturday,5,\\"jackson@hansen-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563366,\\"sold_product_563366_13189, sold_product_563366_18905\\",\\"sold_product_563366_13189, sold_product_563366_18905\\",\\"33, 42\\",\\"33, 42\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"17.156, 20.156\\",\\"33, 42\\",\\"13,189, 18,905\\",\\"Smart lace-ups - black , Light jacket - khaki\\",\\"Smart lace-ups - black , Light jacket - khaki\\",\\"1, 1\\",\\"ZO0388103881, ZO0540005400\\",\\"0, 0\\",\\"33, 42\\",\\"33, 42\\",\\"0, 0\\",\\"ZO0388103881, ZO0540005400\\",75,75,2,2,order,jackson -oAMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Recip,Recip,\\"Recip Webb\\",\\"Recip Webb\\",MALE,10,Webb,Webb,\\"(empty)\\",Saturday,5,\\"recip@webb-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562919,\\"sold_product_562919_24934, sold_product_562919_22599\\",\\"sold_product_562919_24934, sold_product_562919_22599\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"22.5, 11.5\\",\\"50, 24.984\\",\\"24,934, 22,599\\",\\"Lace-up boots - resin coffee, Sweatshirt - black\\",\\"Lace-up boots - resin coffee, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0403504035, ZO0595005950\\",\\"0, 0\\",\\"50, 24.984\\",\\"50, 24.984\\",\\"0, 0\\",\\"ZO0403504035, ZO0595005950\\",75,75,2,2,order,recip -oQMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Hicham,Hicham,\\"Hicham Sutton\\",\\"Hicham Sutton\\",MALE,8,Sutton,Sutton,\\"(empty)\\",Saturday,5,\\"hicham@sutton-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562976,\\"sold_product_562976_23426, sold_product_562976_1978\\",\\"sold_product_562976_23426, sold_product_562976_1978\\",\\"33, 50\\",\\"33, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"16.813, 27.484\\",\\"33, 50\\",\\"23,426, 1,978\\",\\"Slim fit jeans - navy coated , Lace-up boots - black\\",\\"Slim fit jeans - navy coated , Lace-up boots - black\\",\\"1, 1\\",\\"ZO0426904269, ZO0520305203\\",\\"0, 0\\",\\"33, 50\\",\\"33, 50\\",\\"0, 0\\",\\"ZO0426904269, ZO0520305203\\",83,83,2,2,order,hicham -sgMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Barber\\",\\"Elyssa Barber\\",FEMALE,27,Barber,Barber,\\"(empty)\\",Saturday,5,\\"elyssa@barber-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563371,\\"sold_product_563371_16009, sold_product_563371_24465\\",\\"sold_product_563371_16009, sold_product_563371_24465\\",\\"30.984, 24.984\\",\\"30.984, 24.984\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"16.734, 11.5\\",\\"30.984, 24.984\\",\\"16,009, 24,465\\",\\"Handbag - black, Cowboy/Biker boots - black\\",\\"Handbag - black, Cowboy/Biker boots - black\\",\\"1, 1\\",\\"ZO0097500975, ZO0017100171\\",\\"0, 0\\",\\"30.984, 24.984\\",\\"30.984, 24.984\\",\\"0, 0\\",\\"ZO0097500975, ZO0017100171\\",\\"55.969\\",\\"55.969\\",2,2,order,elyssa -1wMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Oliver,Oliver,\\"Oliver Graves\\",\\"Oliver Graves\\",MALE,7,Graves,Graves,\\"(empty)\\",Saturday,5,\\"oliver@graves-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562989,\\"sold_product_562989_22919, sold_product_562989_22668\\",\\"sold_product_562989_22919, sold_product_562989_22668\\",\\"22.984, 22.984\\",\\"22.984, 22.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"10.813, 11.492\\",\\"22.984, 22.984\\",\\"22,919, 22,668\\",\\"Sweatshirt - white, Shirt - petrol\\",\\"Sweatshirt - white, Shirt - petrol\\",\\"1, 1\\",\\"ZO0590905909, ZO0279902799\\",\\"0, 0\\",\\"22.984, 22.984\\",\\"22.984, 22.984\\",\\"0, 0\\",\\"ZO0590905909, ZO0279902799\\",\\"45.969\\",\\"45.969\\",2,2,order,oliver -2QMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Pia,Pia,\\"Pia Harmon\\",\\"Pia Harmon\\",FEMALE,45,Harmon,Harmon,\\"(empty)\\",Saturday,5,\\"pia@harmon-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562597,\\"sold_product_562597_24187, sold_product_562597_14371\\",\\"sold_product_562597_24187, sold_product_562597_14371\\",\\"50, 18.984\\",\\"50, 18.984\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"25.984, 10.063\\",\\"50, 18.984\\",\\"24,187, 14,371\\",\\"Boots - cognac, Across body bag - black\\",\\"Boots - cognac, Across body bag - black\\",\\"1, 1\\",\\"ZO0013200132, ZO0093800938\\",\\"0, 0\\",\\"50, 18.984\\",\\"50, 18.984\\",\\"0, 0\\",\\"ZO0013200132, ZO0093800938\\",69,69,2,2,order,pia -TwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Clarice,Clarice,\\"Clarice Goodwin\\",\\"Clarice Goodwin\\",FEMALE,18,Goodwin,Goodwin,\\"(empty)\\",Saturday,5,\\"clarice@goodwin-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563548,\\"sold_product_563548_5972, sold_product_563548_20864\\",\\"sold_product_563548_5972, sold_product_563548_20864\\",\\"24.984, 33\\",\\"24.984, 33\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"12.992, 16.172\\",\\"24.984, 33\\",\\"5,972, 20,864\\",\\"Ankle boots - black, Winter boots - cognac\\",\\"Ankle boots - black, Winter boots - cognac\\",\\"1, 1\\",\\"ZO0021600216, ZO0031600316\\",\\"0, 0\\",\\"24.984, 33\\",\\"24.984, 33\\",\\"0, 0\\",\\"ZO0021600216, ZO0031600316\\",\\"57.969\\",\\"57.969\\",2,2,order,clarice -awMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Marwan,Marwan,\\"Marwan Shaw\\",\\"Marwan Shaw\\",MALE,51,Shaw,Shaw,\\"(empty)\\",Saturday,5,\\"marwan@shaw-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 21, 2019 @ 00:00:00.000\\",562715,\\"sold_product_562715_21515, sold_product_562715_13710\\",\\"sold_product_562715_21515, sold_product_562715_13710\\",\\"28.984, 11.992\\",\\"28.984, 11.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"13.922, 5.52\\",\\"28.984, 11.992\\",\\"21,515, 13,710\\",\\"Shirt - dark blue, Print T-shirt - blue\\",\\"Shirt - dark blue, Print T-shirt - blue\\",\\"1, 1\\",\\"ZO0413404134, ZO0437204372\\",\\"0, 0\\",\\"28.984, 11.992\\",\\"28.984, 11.992\\",\\"0, 0\\",\\"ZO0413404134, ZO0437204372\\",\\"40.969\\",\\"40.969\\",2,2,order,marwan -bAMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Mary,Mary,\\"Mary Dennis\\",\\"Mary Dennis\\",FEMALE,20,Dennis,Dennis,\\"(empty)\\",Saturday,5,\\"mary@dennis-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563657,\\"sold_product_563657_21922, sold_product_563657_16149\\",\\"sold_product_563657_21922, sold_product_563657_16149\\",\\"20.984, 65\\",\\"20.984, 65\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"10.492, 29.906\\",\\"20.984, 65\\",\\"21,922, 16,149\\",\\"Jumper - dark blue/off white , Lace-up heels - cognac\\",\\"Jumper - dark blue/off white , Lace-up heels - cognac\\",\\"1, 1\\",\\"ZO0653506535, ZO0322303223\\",\\"0, 0\\",\\"20.984, 65\\",\\"20.984, 65\\",\\"0, 0\\",\\"ZO0653506535, ZO0322303223\\",86,86,2,2,order,mary -bQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Chapman\\",\\"Wilhemina St. Chapman\\",FEMALE,17,Chapman,Chapman,\\"(empty)\\",Saturday,5,\\"wilhemina st.@chapman-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563704,\\"sold_product_563704_21823, sold_product_563704_19078\\",\\"sold_product_563704_21823, sold_product_563704_19078\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"9.656, 8.828\\",\\"20.984, 16.984\\",\\"21,823, 19,078\\",\\"Long sleeved top - peacoat, Print T-shirt - black\\",\\"Long sleeved top - peacoat, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0062700627, ZO0054100541\\",\\"0, 0\\",\\"20.984, 16.984\\",\\"20.984, 16.984\\",\\"0, 0\\",\\"ZO0062700627, ZO0054100541\\",\\"37.969\\",\\"37.969\\",2,2,order,wilhemina -bgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Underwood\\",\\"Elyssa Underwood\\",FEMALE,27,Underwood,Underwood,\\"(empty)\\",Saturday,5,\\"elyssa@underwood-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563534,\\"sold_product_563534_18172, sold_product_563534_19097\\",\\"sold_product_563534_18172, sold_product_563534_19097\\",\\"42, 60\\",\\"42, 60\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"22.25, 29.406\\",\\"42, 60\\",\\"18,172, 19,097\\",\\"Boots - black, Ankle boots - camel\\",\\"Boots - black, Ankle boots - camel\\",\\"1, 1\\",\\"ZO0014300143, ZO0249202492\\",\\"0, 0\\",\\"42, 60\\",\\"42, 60\\",\\"0, 0\\",\\"ZO0014300143, ZO0249202492\\",102,102,2,2,order,elyssa -jgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes, Men's Clothing\\",\\"Men's Accessories, Men's Shoes, Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Rivera\\",\\"Sultan Al Rivera\\",MALE,19,Rivera,Rivera,\\"(empty)\\",Saturday,5,\\"sultan al@rivera-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 21, 2019 @ 00:00:00.000\\",716616,\\"sold_product_716616_11922, sold_product_716616_19741, sold_product_716616_6283, sold_product_716616_6868\\",\\"sold_product_716616_11922, sold_product_716616_19741, sold_product_716616_6283, sold_product_716616_6868\\",\\"18.984, 16.984, 11.992, 42\\",\\"18.984, 16.984, 11.992, 42\\",\\"Men's Accessories, Men's Shoes, Men's Clothing, Men's Clothing\\",\\"Men's Accessories, Men's Shoes, Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, Elitelligence, Elitelligence, Microlutions\\",\\"Elitelligence, Elitelligence, Elitelligence, Microlutions\\",\\"9.68, 7.988, 6.352, 20.156\\",\\"18.984, 16.984, 11.992, 42\\",\\"11,922, 19,741, 6,283, 6,868\\",\\"Watch - black, Trainers - black, Basic T-shirt - dark blue/white, Bomber Jacket - bordeaux\\",\\"Watch - black, Trainers - black, Basic T-shirt - dark blue/white, Bomber Jacket - bordeaux\\",\\"1, 1, 1, 1\\",\\"ZO0601506015, ZO0507505075, ZO0549605496, ZO0114701147\\",\\"0, 0, 0, 0\\",\\"18.984, 16.984, 11.992, 42\\",\\"18.984, 16.984, 11.992, 42\\",\\"0, 0, 0, 0\\",\\"ZO0601506015, ZO0507505075, ZO0549605496, ZO0114701147\\",\\"89.938\\",\\"89.938\\",4,4,order,sultan -oQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jason,Jason,\\"Jason Rice\\",\\"Jason Rice\\",MALE,16,Rice,Rice,\\"(empty)\\",Saturday,5,\\"jason@rice-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 21, 2019 @ 00:00:00.000\\",563419,\\"sold_product_563419_17629, sold_product_563419_21599\\",\\"sold_product_563419_17629, sold_product_563419_21599\\",\\"24.984, 26.984\\",\\"24.984, 26.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"12.992, 13.492\\",\\"24.984, 26.984\\",\\"17,629, 21,599\\",\\"Tracksuit bottoms - mottled grey, Jumper - black\\",\\"Tracksuit bottoms - mottled grey, Jumper - black\\",\\"1, 1\\",\\"ZO0528605286, ZO0578505785\\",\\"0, 0\\",\\"24.984, 26.984\\",\\"24.984, 26.984\\",\\"0, 0\\",\\"ZO0528605286, ZO0578505785\\",\\"51.969\\",\\"51.969\\",2,2,order,jason -ogMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Wise\\",\\"Elyssa Wise\\",FEMALE,27,Wise,Wise,\\"(empty)\\",Saturday,5,\\"elyssa@wise-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Gnomehouse, Spherecords Curvy\\",\\"Gnomehouse, Spherecords Curvy\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563468,\\"sold_product_563468_18486, sold_product_563468_18903\\",\\"sold_product_563468_18486, sold_product_563468_18903\\",\\"100, 26.984\\",\\"100, 26.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Spherecords Curvy\\",\\"Gnomehouse, Spherecords Curvy\\",\\"46, 13.758\\",\\"100, 26.984\\",\\"18,486, 18,903\\",\\"Over-the-knee boots - black, Shirt - white\\",\\"Over-the-knee boots - black, Shirt - white\\",\\"1, 1\\",\\"ZO0324003240, ZO0711107111\\",\\"0, 0\\",\\"100, 26.984\\",\\"100, 26.984\\",\\"0, 0\\",\\"ZO0324003240, ZO0711107111\\",127,127,2,2,order,elyssa -owMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Mcdonald\\",\\"Rabbia Al Mcdonald\\",FEMALE,5,Mcdonald,Mcdonald,\\"(empty)\\",Saturday,5,\\"rabbia al@mcdonald-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563496,\\"sold_product_563496_19888, sold_product_563496_15294\\",\\"sold_product_563496_19888, sold_product_563496_15294\\",\\"100, 18.984\\",\\"100, 18.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"51, 9.68\\",\\"100, 18.984\\",\\"19,888, 15,294\\",\\"Classic coat - camel, Across body bag - cognac\\",\\"Classic coat - camel, Across body bag - cognac\\",\\"1, 1\\",\\"ZO0354103541, ZO0196101961\\",\\"0, 0\\",\\"100, 18.984\\",\\"100, 18.984\\",\\"0, 0\\",\\"ZO0354103541, ZO0196101961\\",119,119,2,2,order,rabbia -3QMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Gilbert\\",\\"Yasmine Gilbert\\",FEMALE,43,Gilbert,Gilbert,\\"(empty)\\",Saturday,5,\\"yasmine@gilbert-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563829,\\"sold_product_563829_18348, sold_product_563829_22842\\",\\"sold_product_563829_18348, sold_product_563829_22842\\",\\"50, 50\\",\\"50, 50\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"26.484, 26.984\\",\\"50, 50\\",\\"18,348, 22,842\\",\\"Summer dress - apple butter, Beaded Occasion Dress\\",\\"Summer dress - apple butter, Beaded Occasion Dress\\",\\"1, 1\\",\\"ZO0335103351, ZO0043000430\\",\\"0, 0\\",\\"50, 50\\",\\"50, 50\\",\\"0, 0\\",\\"ZO0335103351, ZO0043000430\\",100,100,2,2,order,yasmine -3gMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Selena,Selena,\\"Selena Wells\\",\\"Selena Wells\\",FEMALE,42,Wells,Wells,\\"(empty)\\",Saturday,5,\\"selena@wells-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563888,\\"sold_product_563888_24162, sold_product_563888_20172\\",\\"sold_product_563888_24162, sold_product_563888_20172\\",\\"24.984, 21.984\\",\\"24.984, 21.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"13.242, 11.648\\",\\"24.984, 21.984\\",\\"24,162, 20,172\\",\\"Rucksack - cognac, Nightie - dark green\\",\\"Rucksack - cognac, Nightie - dark green\\",\\"1, 1\\",\\"ZO0090400904, ZO0100501005\\",\\"0, 0\\",\\"24.984, 21.984\\",\\"24.984, 21.984\\",\\"0, 0\\",\\"ZO0090400904, ZO0100501005\\",\\"46.969\\",\\"46.969\\",2,2,order,selena -\\"-QMtOW0BH63Xcmy453H9\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Hodges\\",\\"Pia Hodges\\",FEMALE,45,Hodges,Hodges,\\"(empty)\\",Saturday,5,\\"pia@hodges-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Pyramidustries, Microlutions\\",\\"Pyramidustries, Microlutions\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563037,\\"sold_product_563037_20079, sold_product_563037_11032\\",\\"sold_product_563037_20079, sold_product_563037_11032\\",\\"24.984, 75\\",\\"24.984, 75\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Microlutions\\",\\"Pyramidustries, Microlutions\\",\\"12, 38.25\\",\\"24.984, 75\\",\\"20,079, 11,032\\",\\"Vest - black, Parka - mottled grey\\",\\"Vest - black, Parka - mottled grey\\",\\"1, 1\\",\\"ZO0172801728, ZO0115701157\\",\\"0, 0\\",\\"24.984, 75\\",\\"24.984, 75\\",\\"0, 0\\",\\"ZO0172801728, ZO0115701157\\",100,100,2,2,order,pia -\\"-gMtOW0BH63Xcmy453H9\\",\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Brewer\\",\\"Mostafa Brewer\\",MALE,9,Brewer,Brewer,\\"(empty)\\",Saturday,5,\\"mostafa@brewer-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563105,\\"sold_product_563105_23911, sold_product_563105_15250\\",\\"sold_product_563105_23911, sold_product_563105_15250\\",\\"6.988, 33\\",\\"6.988, 33\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"3.5, 18.141\\",\\"6.988, 33\\",\\"23,911, 15,250\\",\\"Basic T-shirt - black, Shirt - beige\\",\\"Basic T-shirt - black, Shirt - beige\\",\\"1, 1\\",\\"ZO0562205622, ZO0110901109\\",\\"0, 0\\",\\"6.988, 33\\",\\"6.988, 33\\",\\"0, 0\\",\\"ZO0562205622, ZO0110901109\\",\\"39.969\\",\\"39.969\\",2,2,order,mostafa -ZwMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Rose\\",\\"Wilhemina St. Rose\\",FEMALE,17,Rose,Rose,\\"(empty)\\",Saturday,5,\\"wilhemina st.@rose-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563066,\\"sold_product_563066_18616, sold_product_563066_17298\\",\\"sold_product_563066_18616, sold_product_563066_17298\\",\\"75, 16.984\\",\\"75, 16.984\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"36.75, 9.344\\",\\"75, 16.984\\",\\"18,616, 17,298\\",\\"Boots - brown, Across body bag - turquoise\\",\\"Boots - brown, Across body bag - turquoise\\",\\"1, 1\\",\\"ZO0373503735, ZO0206902069\\",\\"0, 0\\",\\"75, 16.984\\",\\"75, 16.984\\",\\"0, 0\\",\\"ZO0373503735, ZO0206902069\\",92,92,2,2,order,wilhemina -aAMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine King\\",\\"Yasmine King\\",FEMALE,43,King,King,\\"(empty)\\",Saturday,5,\\"yasmine@king-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"Jun 21, 2019 @ 00:00:00.000\\",563113,\\"sold_product_563113_13234, sold_product_563113_18481\\",\\"sold_product_563113_13234, sold_product_563113_18481\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 10, 2016 @ 00:00:00.000, Dec 10, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"17.156, 13.242\\",\\"33, 24.984\\",\\"13,234, 18,481\\",\\"Jersey dress - red ochre, Jersey dress - dark red\\",\\"Jersey dress - red ochre, Jersey dress - dark red\\",\\"1, 1\\",\\"ZO0333903339, ZO0151801518\\",\\"0, 0\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"0, 0\\",\\"ZO0333903339, ZO0151801518\\",\\"57.969\\",\\"57.969\\",2,2,order,yasmine -\\"_QMtOW0BH63Xcmy432DJ\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Parker\\",\\"Wilhemina St. Parker\\",FEMALE,17,Parker,Parker,\\"(empty)\\",Friday,4,\\"wilhemina st.@parker-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Low Tide Media, Tigress Enterprises\\",\\"Low Tide Media, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562351,\\"sold_product_562351_18495, sold_product_562351_22598\\",\\"sold_product_562351_18495, sold_product_562351_22598\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Tigress Enterprises\\",\\"Low Tide Media, Tigress Enterprises\\",\\"25, 14.781\\",\\"50, 28.984\\",\\"18,495, 22,598\\",\\"Ankle boots - cognac, Shift dress - black\\",\\"Ankle boots - cognac, Shift dress - black\\",\\"1, 1\\",\\"ZO0376403764, ZO0050800508\\",\\"0, 0\\",\\"50, 28.984\\",\\"50, 28.984\\",\\"0, 0\\",\\"ZO0376403764, ZO0050800508\\",79,79,2,2,order,wilhemina -WwMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Graham\\",\\"Gwen Graham\\",FEMALE,26,Graham,Graham,\\"(empty)\\",Friday,4,\\"gwen@graham-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561666,\\"sold_product_561666_24242, sold_product_561666_16817\\",\\"sold_product_561666_24242, sold_product_561666_16817\\",\\"33, 18.984\\",\\"33, 18.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"17.813, 10.25\\",\\"33, 18.984\\",\\"24,242, 16,817\\",\\"Jersey dress - black/white, Long sleeved top - black\\",\\"Jersey dress - black/white, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0042600426, ZO0166401664\\",\\"0, 0\\",\\"33, 18.984\\",\\"33, 18.984\\",\\"0, 0\\",\\"ZO0042600426, ZO0166401664\\",\\"51.969\\",\\"51.969\\",2,2,order,gwen -XAMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Porter\\",\\"Rabbia Al Porter\\",FEMALE,5,Porter,Porter,\\"(empty)\\",Friday,4,\\"rabbia al@porter-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561236,\\"sold_product_561236_23790, sold_product_561236_19511\\",\\"sold_product_561236_23790, sold_product_561236_19511\\",\\"28.984, 16.984\\",\\"28.984, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"14.492, 8.656\\",\\"28.984, 16.984\\",\\"23,790, 19,511\\",\\"Jumper - peacoat, Nightie - black\\",\\"Jumper - peacoat, Nightie - black\\",\\"1, 1\\",\\"ZO0072700727, ZO0101001010\\",\\"0, 0\\",\\"28.984, 16.984\\",\\"28.984, 16.984\\",\\"0, 0\\",\\"ZO0072700727, ZO0101001010\\",\\"45.969\\",\\"45.969\\",2,2,order,rabbia -XQMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Hicham,Hicham,\\"Hicham Shaw\\",\\"Hicham Shaw\\",MALE,8,Shaw,Shaw,\\"(empty)\\",Friday,4,\\"hicham@shaw-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561290,\\"sold_product_561290_1694, sold_product_561290_15025\\",\\"sold_product_561290_1694, sold_product_561290_15025\\",\\"75, 24.984\\",\\"75, 24.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"38.25, 12.992\\",\\"75, 24.984\\",\\"1,694, 15,025\\",\\"Slip-ons - Midnight Blue, Jumper - black\\",\\"Slip-ons - Midnight Blue, Jumper - black\\",\\"1, 1\\",\\"ZO0255702557, ZO0577605776\\",\\"0, 0\\",\\"75, 24.984\\",\\"75, 24.984\\",\\"0, 0\\",\\"ZO0255702557, ZO0577605776\\",100,100,2,2,order,hicham -XgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Washington\\",\\"Abd Washington\\",MALE,52,Washington,Washington,\\"(empty)\\",Friday,4,\\"abd@washington-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Elitelligence,Elitelligence,\\"Jun 20, 2019 @ 00:00:00.000\\",561739,\\"sold_product_561739_16553, sold_product_561739_14242\\",\\"sold_product_561739_16553, sold_product_561739_14242\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"12, 11.75\\",\\"24.984, 24.984\\",\\"16,553, 14,242\\",\\"Straight leg jeans - blue denim, Jeans Tapered Fit - black denim \\",\\"Straight leg jeans - blue denim, Jeans Tapered Fit - black denim \\",\\"1, 1\\",\\"ZO0537805378, ZO0538005380\\",\\"0, 0\\",\\"24.984, 24.984\\",\\"24.984, 24.984\\",\\"0, 0\\",\\"ZO0537805378, ZO0538005380\\",\\"49.969\\",\\"49.969\\",2,2,order,abd -XwMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Tran\\",\\"Rabbia Al Tran\\",FEMALE,5,Tran,Tran,\\"(empty)\\",Friday,4,\\"rabbia al@tran-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561786,\\"sold_product_561786_12183, sold_product_561786_15264\\",\\"sold_product_561786_12183, sold_product_561786_15264\\",\\"25.984, 29.984\\",\\"25.984, 29.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"13.508, 14.102\\",\\"25.984, 29.984\\",\\"12,183, 15,264\\",\\"Blouse - navy, Cardigan - black/anthrazit \\",\\"Blouse - navy, Cardigan - black/anthrazit \\",\\"1, 1\\",\\"ZO0064100641, ZO0068600686\\",\\"0, 0\\",\\"25.984, 29.984\\",\\"25.984, 29.984\\",\\"0, 0\\",\\"ZO0064100641, ZO0068600686\\",\\"55.969\\",\\"55.969\\",2,2,order,rabbia -hgMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Diane,Diane,\\"Diane Willis\\",\\"Diane Willis\\",FEMALE,22,Willis,Willis,\\"(empty)\\",Friday,4,\\"diane@willis-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562400,\\"sold_product_562400_16415, sold_product_562400_5857\\",\\"sold_product_562400_16415, sold_product_562400_5857\\",\\"16.984, 50\\",\\"16.984, 50\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Low Tide Media\\",\\"Tigress Enterprises, Low Tide Media\\",\\"8.156, 23.5\\",\\"16.984, 50\\",\\"16,415, 5,857\\",\\"Across body bag - black, Ankle boots - cognac\\",\\"Across body bag - black, Ankle boots - cognac\\",\\"1, 1\\",\\"ZO0094200942, ZO0376603766\\",\\"0, 0\\",\\"16.984, 50\\",\\"16.984, 50\\",\\"0, 0\\",\\"ZO0094200942, ZO0376603766\\",67,67,2,2,order,diane -1gMtOW0BH63Xcmy432HJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Weber\\",\\"Elyssa Weber\\",FEMALE,27,Weber,Weber,\\"(empty)\\",Friday,4,\\"elyssa@weber-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562352,\\"sold_product_562352_19189, sold_product_562352_8284\\",\\"sold_product_562352_19189, sold_product_562352_8284\\",\\"28.984, 33\\",\\"28.984, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"13.344, 16.813\\",\\"28.984, 33\\",\\"19,189, 8,284\\",\\"Blouse - black, Shirt - soft pink nude\\",\\"Blouse - black, Shirt - soft pink nude\\",\\"1, 1\\",\\"ZO0265302653, ZO0348203482\\",\\"0, 0\\",\\"28.984, 33\\",\\"28.984, 33\\",\\"0, 0\\",\\"ZO0265302653, ZO0348203482\\",\\"61.969\\",\\"61.969\\",2,2,order,elyssa -BwMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Garza\\",\\"Jackson Garza\\",MALE,13,Garza,Garza,\\"(empty)\\",Friday,4,\\"jackson@garza-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561343,\\"sold_product_561343_23977, sold_product_561343_19776\\",\\"sold_product_561343_23977, sold_product_561343_19776\\",\\"65, 10.992\\",\\"65, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"30.547, 5.5\\",\\"65, 10.992\\",\\"23,977, 19,776\\",\\"Waterproof trousers - pumpkin spice, Print T-shirt - white\\",\\"Waterproof trousers - pumpkin spice, Print T-shirt - white\\",\\"1, 1\\",\\"ZO0620706207, ZO0566705667\\",\\"0, 0\\",\\"65, 10.992\\",\\"65, 10.992\\",\\"0, 0\\",\\"ZO0620706207, ZO0566705667\\",76,76,2,2,order,jackson -VQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Lewis\\",\\"Elyssa Lewis\\",FEMALE,27,Lewis,Lewis,\\"(empty)\\",Friday,4,\\"elyssa@lewis-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises Curvy, Pyramidustries\\",\\"Tigress Enterprises Curvy, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561543,\\"sold_product_561543_13132, sold_product_561543_19621\\",\\"sold_product_561543_13132, sold_product_561543_19621\\",\\"42, 34\\",\\"42, 34\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises Curvy, Pyramidustries\\",\\"Tigress Enterprises Curvy, Pyramidustries\\",\\"22.672, 17.328\\",\\"42, 34\\",\\"13,132, 19,621\\",\\"Blazer - black, Waterproof jacket - black\\",\\"Blazer - black, Waterproof jacket - black\\",\\"1, 1\\",\\"ZO0106701067, ZO0175101751\\",\\"0, 0\\",\\"42, 34\\",\\"42, 34\\",\\"0, 0\\",\\"ZO0106701067, ZO0175101751\\",76,76,2,2,order,elyssa -VgMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Davidson\\",\\"Fitzgerald Davidson\\",MALE,11,Davidson,Davidson,\\"(empty)\\",Friday,4,\\"fitzgerald@davidson-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561577,\\"sold_product_561577_15263, sold_product_561577_6820\\",\\"sold_product_561577_15263, sold_product_561577_6820\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"15.844, 12.992\\",\\"33, 24.984\\",\\"15,263, 6,820\\",\\"Briefcase - brown, Cardigan - dark blue\\",\\"Briefcase - brown, Cardigan - dark blue\\",\\"1, 1\\",\\"ZO0604406044, ZO0296302963\\",\\"0, 0\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"0, 0\\",\\"ZO0604406044, ZO0296302963\\",\\"57.969\\",\\"57.969\\",2,2,order,fuzzy -WQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Barnes\\",\\"Abd Barnes\\",MALE,52,Barnes,Barnes,\\"(empty)\\",Friday,4,\\"abd@barnes-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561429,\\"sold_product_561429_1791, sold_product_561429_3467\\",\\"sold_product_561429_1791, sold_product_561429_3467\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"14.852, 13.922\\",\\"33, 28.984\\",\\"1,791, 3,467\\",\\"Lace-up boots - green, Tights - black\\",\\"Lace-up boots - green, Tights - black\\",\\"1, 1\\",\\"ZO0511405114, ZO0621506215\\",\\"0, 0\\",\\"33, 28.984\\",\\"33, 28.984\\",\\"0, 0\\",\\"ZO0511405114, ZO0621506215\\",\\"61.969\\",\\"61.969\\",2,2,order,abd -egMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Pia,Pia,\\"Pia Willis\\",\\"Pia Willis\\",FEMALE,45,Willis,Willis,\\"(empty)\\",Friday,4,\\"pia@willis-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Gnomehouse, Low Tide Media\\",\\"Gnomehouse, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562050,\\"sold_product_562050_14157, sold_product_562050_19227\\",\\"sold_product_562050_14157, sold_product_562050_19227\\",\\"50, 90\\",\\"50, 90\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Low Tide Media\\",\\"Gnomehouse, Low Tide Media\\",\\"24.5, 44.094\\",\\"50, 90\\",\\"14,157, 19,227\\",\\"Classic heels - black, Boots - cognac\\",\\"Classic heels - black, Boots - cognac\\",\\"1, 1\\",\\"ZO0322103221, ZO0373903739\\",\\"0, 0\\",\\"50, 90\\",\\"50, 90\\",\\"0, 0\\",\\"ZO0322103221, ZO0373903739\\",140,140,2,2,order,pia -ewMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Jim,Jim,\\"Jim Chandler\\",\\"Jim Chandler\\",MALE,41,Chandler,Chandler,\\"(empty)\\",Friday,4,\\"jim@chandler-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562101,\\"sold_product_562101_24315, sold_product_562101_11349\\",\\"sold_product_562101_24315, sold_product_562101_11349\\",\\"33, 42\\",\\"33, 42\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"16.813, 21.406\\",\\"33, 42\\",\\"24,315, 11,349\\",\\"Weekend bag - navy/brown, Summer jacket - black\\",\\"Weekend bag - navy/brown, Summer jacket - black\\",\\"1, 1\\",\\"ZO0468804688, ZO0285502855\\",\\"0, 0\\",\\"33, 42\\",\\"33, 42\\",\\"0, 0\\",\\"ZO0468804688, ZO0285502855\\",75,75,2,2,order,jim -fAMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,Betty,Betty,\\"Betty Salazar\\",\\"Betty Salazar\\",FEMALE,44,Salazar,Salazar,\\"(empty)\\",Friday,4,\\"betty@salazar-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",Angeldale,Angeldale,\\"Jun 20, 2019 @ 00:00:00.000\\",562247,\\"sold_product_562247_14495, sold_product_562247_5292\\",\\"sold_product_562247_14495, sold_product_562247_5292\\",\\"70, 85\\",\\"70, 85\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Angeldale\\",\\"Angeldale, Angeldale\\",\\"34.313, 43.344\\",\\"70, 85\\",\\"14,495, 5,292\\",\\"Classic Heels with Straps, Ankle boots - camel\\",\\"Classic Heels with Straps, Ankle boots - camel\\",\\"1, 1\\",\\"ZO0666206662, ZO0673206732\\",\\"0, 0\\",\\"70, 85\\",\\"70, 85\\",\\"0, 0\\",\\"ZO0666206662, ZO0673206732\\",155,155,2,2,order,betty -fQMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Ball\\",\\"Robbie Ball\\",MALE,48,Ball,Ball,\\"(empty)\\",Friday,4,\\"robbie@ball-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562285,\\"sold_product_562285_15123, sold_product_562285_21357\\",\\"sold_product_562285_15123, sold_product_562285_21357\\",\\"10.992, 9.992\\",\\"10.992, 9.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"5.93, 4.699\\",\\"10.992, 9.992\\",\\"15,123, 21,357\\",\\"Print T-shirt - black, Basic T-shirt - white\\",\\"Print T-shirt - black, Basic T-shirt - white\\",\\"1, 1\\",\\"ZO0618306183, ZO0563105631\\",\\"0, 0\\",\\"10.992, 9.992\\",\\"10.992, 9.992\\",\\"0, 0\\",\\"ZO0618306183, ZO0563105631\\",\\"20.984\\",\\"20.984\\",2,2,order,robbie -ugMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Dawson\\",\\"Betty Dawson\\",FEMALE,44,Dawson,Dawson,\\"(empty)\\",Friday,4,\\"betty@dawson-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561965,\\"sold_product_561965_8728, sold_product_561965_24101\\",\\"sold_product_561965_8728, sold_product_561965_24101\\",\\"65, 42\\",\\"65, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Gnomehouse\\",\\"Spherecords, Gnomehouse\\",\\"35.094, 18.906\\",\\"65, 42\\",\\"8,728, 24,101\\",\\"Jumper - dark red, Jersey dress - jester red\\",\\"Jumper - dark red, Jersey dress - jester red\\",\\"1, 1\\",\\"ZO0655806558, ZO0334503345\\",\\"0, 0\\",\\"65, 42\\",\\"65, 42\\",\\"0, 0\\",\\"ZO0655806558, ZO0334503345\\",107,107,2,2,order,betty -uwMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Hart\\",\\"Sonya Hart\\",FEMALE,28,Hart,Hart,\\"(empty)\\",Friday,4,\\"sonya@hart-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Spherecords, Crystal Lighting\\",\\"Spherecords, Crystal Lighting\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562008,\\"sold_product_562008_21990, sold_product_562008_22639\\",\\"sold_product_562008_21990, sold_product_562008_22639\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Crystal Lighting\\",\\"Spherecords, Crystal Lighting\\",\\"15.844, 11.25\\",\\"33, 24.984\\",\\"21,990, 22,639\\",\\"Blazer - black, Wool jumper - white\\",\\"Blazer - black, Wool jumper - white\\",\\"1, 1\\",\\"ZO0657006570, ZO0485604856\\",\\"0, 0\\",\\"33, 24.984\\",\\"33, 24.984\\",\\"0, 0\\",\\"ZO0657006570, ZO0485604856\\",\\"57.969\\",\\"57.969\\",2,2,order,sonya -wAMtOW0BH63Xcmy432LJ,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Simmons\\",\\"Sultan Al Simmons\\",MALE,19,Simmons,Simmons,\\"(empty)\\",Friday,4,\\"sultan al@simmons-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561472,\\"sold_product_561472_12840, sold_product_561472_24625\\",\\"sold_product_561472_12840, sold_product_561472_24625\\",\\"65, 13.992\\",\\"65, 13.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"30.547, 6.301\\",\\"65, 13.992\\",\\"12,840, 24,625\\",\\"Lace-up boots - black, Print T-shirt - dark blue multicolor\\",\\"Lace-up boots - black, Print T-shirt - dark blue multicolor\\",\\"1, 1\\",\\"ZO0399703997, ZO0439904399\\",\\"0, 0\\",\\"65, 13.992\\",\\"65, 13.992\\",\\"0, 0\\",\\"ZO0399703997, ZO0439904399\\",79,79,2,2,order,sultan -wQMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Carr\\",\\"Abdulraheem Al Carr\\",MALE,33,Carr,Carr,\\"(empty)\\",Friday,4,\\"abdulraheem al@carr-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561490,\\"sold_product_561490_12150, sold_product_561490_20378\\",\\"sold_product_561490_12150, sold_product_561490_20378\\",\\"50, 8.992\\",\\"50, 8.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Elitelligence\\",\\"Angeldale, Elitelligence\\",\\"22.5, 4.23\\",\\"50, 8.992\\",\\"12,150, 20,378\\",\\"Casual lace-ups - dark brown , Basic T-shirt - white\\",\\"Casual lace-ups - dark brown , Basic T-shirt - white\\",\\"1, 1\\",\\"ZO0681306813, ZO0545705457\\",\\"0, 0\\",\\"50, 8.992\\",\\"50, 8.992\\",\\"0, 0\\",\\"ZO0681306813, ZO0545705457\\",\\"58.969\\",\\"58.969\\",2,2,order,abdulraheem -wgMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Allison\\",\\"Selena Allison\\",FEMALE,42,Allison,Allison,\\"(empty)\\",Friday,4,\\"selena@allison-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561317,\\"sold_product_561317_20991, sold_product_561317_22586\\",\\"sold_product_561317_20991, sold_product_561317_22586\\",\\"42, 33\\",\\"42, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"21.828, 16.172\\",\\"42, 33\\",\\"20,991, 22,586\\",\\"Mini skirt - navy blazer, Cardigan - navy/brown\\",\\"Mini skirt - navy blazer, Cardigan - navy/brown\\",\\"1, 1\\",\\"ZO0329303293, ZO0074000740\\",\\"0, 0\\",\\"42, 33\\",\\"42, 33\\",\\"0, 0\\",\\"ZO0329303293, ZO0074000740\\",75,75,2,2,order,selena -0gMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Thad,Thad,\\"Thad Walters\\",\\"Thad Walters\\",MALE,30,Walters,Walters,\\"(empty)\\",Friday,4,\\"thad@walters-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562424,\\"sold_product_562424_11737, sold_product_562424_13228\\",\\"sold_product_562424_11737, sold_product_562424_13228\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"9.867, 11.5\\",\\"20.984, 24.984\\",\\"11,737, 13,228\\",\\"Sweatshirt - dark blue, Jumper - dark blue multicolor\\",\\"Sweatshirt - dark blue, Jumper - dark blue multicolor\\",\\"1, 1\\",\\"ZO0581705817, ZO0448804488\\",\\"0, 0\\",\\"20.984, 24.984\\",\\"20.984, 24.984\\",\\"0, 0\\",\\"ZO0581705817, ZO0448804488\\",\\"45.969\\",\\"45.969\\",2,2,order,thad -0wMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Potter\\",\\"Sultan Al Potter\\",MALE,19,Potter,Potter,\\"(empty)\\",Friday,4,\\"sultan al@potter-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562473,\\"sold_product_562473_13192, sold_product_562473_21203\\",\\"sold_product_562473_13192, sold_product_562473_21203\\",\\"85, 75\\",\\"85, 75\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"39.094, 36.75\\",\\"85, 75\\",\\"13,192, 21,203\\",\\"Parka - navy, Winter jacket - dark blue\\",\\"Parka - navy, Winter jacket - dark blue\\",\\"1, 1\\",\\"ZO0289202892, ZO0432304323\\",\\"0, 0\\",\\"85, 75\\",\\"85, 75\\",\\"0, 0\\",\\"ZO0289202892, ZO0432304323\\",160,160,2,2,order,sultan -1AMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Hicham,Hicham,\\"Hicham Jimenez\\",\\"Hicham Jimenez\\",MALE,8,Jimenez,Jimenez,\\"(empty)\\",Friday,4,\\"hicham@jimenez-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562488,\\"sold_product_562488_13297, sold_product_562488_13138\\",\\"sold_product_562488_13297, sold_product_562488_13138\\",\\"60, 24.984\\",\\"60, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"32.375, 13.492\\",\\"60, 24.984\\",\\"13,297, 13,138\\",\\"Light jacket - navy, Jumper - black\\",\\"Light jacket - navy, Jumper - black\\",\\"1, 1\\",\\"ZO0275202752, ZO0574405744\\",\\"0, 0\\",\\"60, 24.984\\",\\"60, 24.984\\",\\"0, 0\\",\\"ZO0275202752, ZO0574405744\\",85,85,2,2,order,hicham -1QMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri Richards\\",\\"Yuri Richards\\",MALE,21,Richards,Richards,\\"(empty)\\",Friday,4,\\"yuri@richards-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562118,\\"sold_product_562118_18280, sold_product_562118_15033\\",\\"sold_product_562118_18280, sold_product_562118_15033\\",\\"16.984, 24.984\\",\\"16.984, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"7.82, 13.492\\",\\"16.984, 24.984\\",\\"18,280, 15,033\\",\\"Tights - black, Hoodie - mottled grey\\",\\"Tights - black, Hoodie - mottled grey\\",\\"1, 1\\",\\"ZO0622406224, ZO0591405914\\",\\"0, 0\\",\\"16.984, 24.984\\",\\"16.984, 24.984\\",\\"0, 0\\",\\"ZO0622406224, ZO0591405914\\",\\"41.969\\",\\"41.969\\",2,2,order,yuri -1gMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Padilla\\",\\"Yasmine Padilla\\",FEMALE,43,Padilla,Padilla,\\"(empty)\\",Friday,4,\\"yasmine@padilla-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Crystal Lighting, Spherecords\\",\\"Crystal Lighting, Spherecords\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562159,\\"sold_product_562159_8592, sold_product_562159_19303\\",\\"sold_product_562159_8592, sold_product_562159_19303\\",\\"24.984, 9.992\\",\\"24.984, 9.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Crystal Lighting, Spherecords\\",\\"Crystal Lighting, Spherecords\\",\\"11.25, 5.488\\",\\"24.984, 9.992\\",\\"8,592, 19,303\\",\\"Wool jumper - pink, 5 PACK - Trainer socks - black\\",\\"Wool jumper - pink, 5 PACK - Trainer socks - black\\",\\"1, 1\\",\\"ZO0485704857, ZO0662006620\\",\\"0, 0\\",\\"24.984, 9.992\\",\\"24.984, 9.992\\",\\"0, 0\\",\\"ZO0485704857, ZO0662006620\\",\\"34.969\\",\\"34.969\\",2,2,order,yasmine -1wMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Robbie,Robbie,\\"Robbie Mcdonald\\",\\"Robbie Mcdonald\\",MALE,48,Mcdonald,Mcdonald,\\"(empty)\\",Friday,4,\\"robbie@mcdonald-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"(empty)\\",\\"(empty)\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562198,\\"sold_product_562198_12308, sold_product_562198_12830\\",\\"sold_product_562198_12308, sold_product_562198_12830\\",\\"155, 155\\",\\"155, 155\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"(empty), (empty)\\",\\"(empty), (empty)\\",\\"72.875, 72.875\\",\\"155, 155\\",\\"12,308, 12,830\\",\\"Smart slip-ons - brown, Lace-ups - black\\",\\"Smart slip-ons - brown, Lace-ups - black\\",\\"1, 1\\",\\"ZO0482504825, ZO0481304813\\",\\"0, 0\\",\\"155, 155\\",\\"155, 155\\",\\"0, 0\\",\\"ZO0482504825, ZO0481304813\\",310,310,2,2,order,robbie -2QMtOW0BH63Xcmy44WJv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Betty,Betty,\\"Betty Frank\\",\\"Betty Frank\\",FEMALE,44,Frank,Frank,\\"(empty)\\",Friday,4,\\"betty@frank-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562523,\\"sold_product_562523_11110, sold_product_562523_20613\\",\\"sold_product_562523_11110, sold_product_562523_20613\\",\\"28.984, 24.984\\",\\"28.984, 24.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"15.359, 11.5\\",\\"28.984, 24.984\\",\\"11,110, 20,613\\",\\"Tracksuit top - black, Watch - silver-coloured\\",\\"Tracksuit top - black, Watch - silver-coloured\\",\\"1, 1\\",\\"ZO0178001780, ZO0078400784\\",\\"0, 0\\",\\"28.984, 24.984\\",\\"28.984, 24.984\\",\\"0, 0\\",\\"ZO0178001780, ZO0078400784\\",\\"53.969\\",\\"53.969\\",2,2,order,betty -lwMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Valdez\\",\\"Youssef Valdez\\",MALE,31,Valdez,Valdez,\\"(empty)\\",Friday,4,\\"youssef@valdez-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 20, 2019 @ 00:00:00.000\\",561373,\\"sold_product_561373_20306, sold_product_561373_18262\\",\\"sold_product_561373_20306, sold_product_561373_18262\\",\\"11.992, 20.984\\",\\"11.992, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"5.52, 10.703\\",\\"11.992, 20.984\\",\\"20,306, 18,262\\",\\"Long sleeved top - mottled dark grey, Chinos - khaki\\",\\"Long sleeved top - mottled dark grey, Chinos - khaki\\",\\"1, 1\\",\\"ZO0563905639, ZO0528805288\\",\\"0, 0\\",\\"11.992, 20.984\\",\\"11.992, 20.984\\",\\"0, 0\\",\\"ZO0563905639, ZO0528805288\\",\\"32.969\\",\\"32.969\\",2,2,order,youssef -mAMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jason,Jason,\\"Jason Webb\\",\\"Jason Webb\\",MALE,16,Webb,Webb,\\"(empty)\\",Friday,4,\\"jason@webb-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Spritechnologies\\",\\"Oceanavigations, Spritechnologies\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561409,\\"sold_product_561409_1438, sold_product_561409_15672\\",\\"sold_product_561409_1438, sold_product_561409_15672\\",\\"60, 65\\",\\"60, 65\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Spritechnologies\\",\\"Oceanavigations, Spritechnologies\\",\\"32.375, 33.125\\",\\"60, 65\\",\\"1,438, 15,672\\",\\"Trainers - black, Waterproof jacket - black\\",\\"Trainers - black, Waterproof jacket - black\\",\\"1, 1\\",\\"ZO0254702547, ZO0626306263\\",\\"0, 0\\",\\"60, 65\\",\\"60, 65\\",\\"0, 0\\",\\"ZO0254702547, ZO0626306263\\",125,125,2,2,order,jason -mQMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Stephanie,Stephanie,\\"Stephanie Munoz\\",\\"Stephanie Munoz\\",FEMALE,6,Munoz,Munoz,\\"(empty)\\",Friday,4,\\"stephanie@munoz-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises Curvy, Low Tide Media\\",\\"Tigress Enterprises Curvy, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561858,\\"sold_product_561858_22426, sold_product_561858_12672\\",\\"sold_product_561858_22426, sold_product_561858_12672\\",\\"24.984, 33\\",\\"24.984, 33\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises Curvy, Low Tide Media\\",\\"Tigress Enterprises Curvy, Low Tide Media\\",\\"13.742, 16.813\\",\\"24.984, 33\\",\\"22,426, 12,672\\",\\"Print T-shirt - Chocolate, Ballet pumps - black\\",\\"Print T-shirt - Chocolate, Ballet pumps - black\\",\\"1, 1\\",\\"ZO0105301053, ZO0364803648\\",\\"0, 0\\",\\"24.984, 33\\",\\"24.984, 33\\",\\"0, 0\\",\\"ZO0105301053, ZO0364803648\\",\\"57.969\\",\\"57.969\\",2,2,order,stephanie -mgMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Marshall\\",\\"Fitzgerald Marshall\\",MALE,11,Marshall,Marshall,\\"(empty)\\",Friday,4,\\"fitzgerald@marshall-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561904,\\"sold_product_561904_15204, sold_product_561904_12074\\",\\"sold_product_561904_15204, sold_product_561904_12074\\",\\"42, 11.992\\",\\"42, 11.992\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"21.406, 5.641\\",\\"42, 11.992\\",\\"15,204, 12,074\\",\\"Weekend bag - black, Polo shirt - blue\\",\\"Weekend bag - black, Polo shirt - blue\\",\\"1, 1\\",\\"ZO0315303153, ZO0441904419\\",\\"0, 0\\",\\"42, 11.992\\",\\"42, 11.992\\",\\"0, 0\\",\\"ZO0315303153, ZO0441904419\\",\\"53.969\\",\\"53.969\\",2,2,order,fuzzy -9QMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Tran\\",\\"Betty Tran\\",FEMALE,44,Tran,Tran,\\"(empty)\\",Friday,4,\\"betty@tran-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",\\"Tigress Enterprises MAMA, Tigress Enterprises Curvy\\",\\"Tigress Enterprises MAMA, Tigress Enterprises Curvy\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561381,\\"sold_product_561381_16065, sold_product_561381_20409\\",\\"sold_product_561381_16065, sold_product_561381_20409\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises MAMA, Tigress Enterprises Curvy\\",\\"Tigress Enterprises MAMA, Tigress Enterprises Curvy\\",\\"10.289, 15.844\\",\\"20.984, 33\\",\\"16,065, 20,409\\",\\"Vest - rose/black, Cardigan - black/offwhite\\",\\"Vest - rose/black, Cardigan - black/offwhite\\",\\"1, 1\\",\\"ZO0231202312, ZO0106401064\\",\\"0, 0\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"0, 0\\",\\"ZO0231202312, ZO0106401064\\",\\"53.969\\",\\"53.969\\",2,2,order,betty -9gMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Nash\\",\\"Abd Nash\\",MALE,52,Nash,Nash,\\"(empty)\\",Friday,4,\\"abd@nash-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",Elitelligence,Elitelligence,\\"Jun 20, 2019 @ 00:00:00.000\\",561830,\\"sold_product_561830_15032, sold_product_561830_12189\\",\\"sold_product_561830_15032, sold_product_561830_12189\\",\\"28.984, 14.992\\",\\"28.984, 14.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"13.922, 7.199\\",\\"28.984, 14.992\\",\\"15,032, 12,189\\",\\"Sweatshirt - mottled grey, Tracksuit bottoms - mottled grey\\",\\"Sweatshirt - mottled grey, Tracksuit bottoms - mottled grey\\",\\"1, 1\\",\\"ZO0591105911, ZO0532805328\\",\\"0, 0\\",\\"28.984, 14.992\\",\\"28.984, 14.992\\",\\"0, 0\\",\\"ZO0591105911, ZO0532805328\\",\\"43.969\\",\\"43.969\\",2,2,order,abd -9wMtOW0BH63Xcmy44WNv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Wagdi,Wagdi,\\"Wagdi Gomez\\",\\"Wagdi Gomez\\",MALE,15,Gomez,Gomez,\\"(empty)\\",Friday,4,\\"wagdi@gomez-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561878,\\"sold_product_561878_17804, sold_product_561878_17209\\",\\"sold_product_561878_17804, sold_product_561878_17209\\",\\"12.992, 50\\",\\"12.992, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"6.5, 26.484\\",\\"12.992, 50\\",\\"17,804, 17,209\\",\\"Long sleeved top - mottled dark grey, Casual lace-ups - grey\\",\\"Long sleeved top - mottled dark grey, Casual lace-ups - grey\\",\\"1, 1\\",\\"ZO0562905629, ZO0388303883\\",\\"0, 0\\",\\"12.992, 50\\",\\"12.992, 50\\",\\"0, 0\\",\\"ZO0562905629, ZO0388303883\\",\\"62.969\\",\\"62.969\\",2,2,order,wagdi -\\"-AMtOW0BH63Xcmy44WNv\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Baker\\",\\"Stephanie Baker\\",FEMALE,6,Baker,Baker,\\"(empty)\\",Friday,4,\\"stephanie@baker-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",Pyramidustries,Pyramidustries,\\"Jun 20, 2019 @ 00:00:00.000\\",561916,\\"sold_product_561916_15403, sold_product_561916_11041\\",\\"sold_product_561916_15403, sold_product_561916_11041\\",\\"20.984, 13.992\\",\\"20.984, 13.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"10.703, 7.27\\",\\"20.984, 13.992\\",\\"15,403, 11,041\\",\\"Sweatshirt - dark grey multicolor, Basic T-shirt - dark grey multicolor\\",\\"Sweatshirt - dark grey multicolor, Basic T-shirt - dark grey multicolor\\",\\"1, 1\\",\\"ZO0180101801, ZO0157101571\\",\\"0, 0\\",\\"20.984, 13.992\\",\\"20.984, 13.992\\",\\"0, 0\\",\\"ZO0180101801, ZO0157101571\\",\\"34.969\\",\\"34.969\\",2,2,order,stephanie -HQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Recip,Recip,\\"Recip Shaw\\",\\"Recip Shaw\\",MALE,10,Shaw,Shaw,\\"(empty)\\",Friday,4,\\"recip@shaw-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562324,\\"sold_product_562324_20112, sold_product_562324_12375\\",\\"sold_product_562324_20112, sold_product_562324_12375\\",\\"25.984, 20.984\\",\\"25.984, 20.984\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"12.477, 10.289\\",\\"25.984, 20.984\\",\\"20,112, 12,375\\",\\"Shirt - blue, Trainers - red\\",\\"Shirt - blue, Trainers - red\\",\\"1, 1\\",\\"ZO0413604136, ZO0509005090\\",\\"0, 0\\",\\"25.984, 20.984\\",\\"25.984, 20.984\\",\\"0, 0\\",\\"ZO0413604136, ZO0509005090\\",\\"46.969\\",\\"46.969\\",2,2,order,recip -HgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Sonya,Sonya,\\"Sonya Ruiz\\",\\"Sonya Ruiz\\",FEMALE,28,Ruiz,Ruiz,\\"(empty)\\",Friday,4,\\"sonya@ruiz-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562367,\\"sold_product_562367_19018, sold_product_562367_15868\\",\\"sold_product_562367_19018, sold_product_562367_15868\\",\\"42, 10.992\\",\\"42, 10.992\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"19.734, 5.711\\",\\"42, 10.992\\",\\"19,018, 15,868\\",\\"High heeled sandals - red, Scarf - black/white\\",\\"High heeled sandals - red, Scarf - black/white\\",\\"1, 1\\",\\"ZO0371803718, ZO0195401954\\",\\"0, 0\\",\\"42, 10.992\\",\\"42, 10.992\\",\\"0, 0\\",\\"ZO0371803718, ZO0195401954\\",\\"52.969\\",\\"52.969\\",2,2,order,sonya -UwMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Ryan\\",\\"Wilhemina St. Ryan\\",FEMALE,17,Ryan,Ryan,\\"(empty)\\",Friday,4,\\"wilhemina st.@ryan-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Oceanavigations, Tigress Enterprises, Pyramidustries, Angeldale\\",\\"Oceanavigations, Tigress Enterprises, Pyramidustries, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",729673,\\"sold_product_729673_23755, sold_product_729673_23467, sold_product_729673_15159, sold_product_729673_5415\\",\\"sold_product_729673_23755, sold_product_729673_23467, sold_product_729673_15159, sold_product_729673_5415\\",\\"50, 60, 24.984, 65\\",\\"50, 60, 24.984, 65\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Shoes\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Oceanavigations, Tigress Enterprises, Pyramidustries, Angeldale\\",\\"Oceanavigations, Tigress Enterprises, Pyramidustries, Angeldale\\",\\"23, 31.188, 11.75, 31.844\\",\\"50, 60, 24.984, 65\\",\\"23,755, 23,467, 15,159, 5,415\\",\\"Cardigan - blue & white, Lohan - Maxi dress - silver/black, High heels - blue, Lace-ups - grey\\",\\"Cardigan - blue & white, Lohan - Maxi dress - silver/black, High heels - blue, Lace-ups - grey\\",\\"1, 1, 1, 1\\",\\"ZO0268202682, ZO0048200482, ZO0134801348, ZO0668406684\\",\\"0, 0, 0, 0\\",\\"50, 60, 24.984, 65\\",\\"50, 60, 24.984, 65\\",\\"0, 0, 0, 0\\",\\"ZO0268202682, ZO0048200482, ZO0134801348, ZO0668406684\\",200,200,4,4,order,wilhemina -rQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Ruiz\\",\\"Rabbia Al Ruiz\\",FEMALE,5,Ruiz,Ruiz,\\"(empty)\\",Friday,4,\\"rabbia al@ruiz-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises MAMA\\",\\"Tigress Enterprises MAMA\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561953,\\"sold_product_561953_22114, sold_product_561953_19225\\",\\"sold_product_561953_22114, sold_product_561953_19225\\",\\"29.984, 22.984\\",\\"29.984, 22.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises MAMA, Tigress Enterprises MAMA\\",\\"Tigress Enterprises MAMA, Tigress Enterprises MAMA\\",\\"15.891, 11.273\\",\\"29.984, 22.984\\",\\"22,114, 19,225\\",\\"Blouse - black/white, Blouse - black\\",\\"Blouse - black/white, Blouse - black\\",\\"1, 1\\",\\"ZO0232002320, ZO0231402314\\",\\"0, 0\\",\\"29.984, 22.984\\",\\"29.984, 22.984\\",\\"0, 0\\",\\"ZO0232002320, ZO0231402314\\",\\"52.969\\",\\"52.969\\",2,2,order,rabbia -rgMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,rania,rania,\\"rania Brady\\",\\"rania Brady\\",FEMALE,24,Brady,Brady,\\"(empty)\\",Friday,4,\\"rania@brady-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561997,\\"sold_product_561997_16402, sold_product_561997_12822\\",\\"sold_product_561997_16402, sold_product_561997_12822\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"17.484, 7.82\\",\\"33, 16.984\\",\\"16,402, 12,822\\",\\"Shirt - navy blazer, Platform sandals - navy\\",\\"Shirt - navy blazer, Platform sandals - navy\\",\\"1, 1\\",\\"ZO0346203462, ZO0010700107\\",\\"0, 0\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"0, 0\\",\\"ZO0346203462, ZO0010700107\\",\\"49.969\\",\\"49.969\\",2,2,order,rani -rwMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",EUR,Gwen,Gwen,\\"Gwen Butler\\",\\"Gwen Butler\\",FEMALE,26,Butler,Butler,\\"(empty)\\",Friday,4,\\"gwen@butler-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561534,\\"sold_product_561534_25055, sold_product_561534_15461\\",\\"sold_product_561534_25055, sold_product_561534_15461\\",\\"50, 16.984\\",\\"50, 16.984\\",\\"Women's Shoes, Women's Accessories\\",\\"Women's Shoes, Women's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"23, 8.492\\",\\"50, 16.984\\",\\"25,055, 15,461\\",\\"Ankle boots - Dodger Blue, Across body bag - black \\",\\"Ankle boots - Dodger Blue, Across body bag - black \\",\\"1, 1\\",\\"ZO0380303803, ZO0211902119\\",\\"0, 0\\",\\"50, 16.984\\",\\"50, 16.984\\",\\"0, 0\\",\\"ZO0380303803, ZO0211902119\\",67,67,2,2,order,gwen -sQMtOW0BH63Xcmy44WRv,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Wagdi,Wagdi,\\"Wagdi Graham\\",\\"Wagdi Graham\\",MALE,15,Graham,Graham,\\"(empty)\\",Friday,4,\\"wagdi@graham-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",Elitelligence,Elitelligence,\\"Jun 20, 2019 @ 00:00:00.000\\",561632,\\"sold_product_561632_19048, sold_product_561632_15628\\",\\"sold_product_561632_19048, sold_product_561632_15628\\",\\"10.992, 20.984\\",\\"10.992, 20.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"5.93, 10.078\\",\\"10.992, 20.984\\",\\"19,048, 15,628\\",\\"Long sleeved top - lt grey/dk grey , Watch - brown\\",\\"Long sleeved top - lt grey/dk grey , Watch - brown\\",\\"1, 1\\",\\"ZO0546605466, ZO0600906009\\",\\"0, 0\\",\\"10.992, 20.984\\",\\"10.992, 20.984\\",\\"0, 0\\",\\"ZO0546605466, ZO0600906009\\",\\"31.984\\",\\"31.984\\",2,2,order,wagdi -DwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Romero\\",\\"Mostafa Romero\\",MALE,9,Romero,Romero,\\"(empty)\\",Friday,4,\\"mostafa@romero-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561676,\\"sold_product_561676_1702, sold_product_561676_11429\\",\\"sold_product_561676_1702, sold_product_561676_11429\\",\\"25.984, 10.992\\",\\"25.984, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Spritechnologies\\",\\"Elitelligence, Spritechnologies\\",\\"12.219, 5.391\\",\\"25.984, 10.992\\",\\"1,702, 11,429\\",\\"Trainers - black/grey, Swimming shorts - lime punch\\",\\"Trainers - black/grey, Swimming shorts - lime punch\\",\\"1, 1\\",\\"ZO0512705127, ZO0629406294\\",\\"0, 0\\",\\"25.984, 10.992\\",\\"25.984, 10.992\\",\\"0, 0\\",\\"ZO0512705127, ZO0629406294\\",\\"36.969\\",\\"36.969\\",2,2,order,mostafa -EAMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Estrada\\",\\"Abdulraheem Al Estrada\\",MALE,33,Estrada,Estrada,\\"(empty)\\",Friday,4,\\"abdulraheem al@estrada-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561218,\\"sold_product_561218_14074, sold_product_561218_12696\\",\\"sold_product_561218_14074, sold_product_561218_12696\\",\\"60, 75\\",\\"60, 75\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"27.594, 36.75\\",\\"60, 75\\",\\"14,074, 12,696\\",\\"Suit jacket - dark blue, Briefcase - brandy\\",\\"Suit jacket - dark blue, Briefcase - brandy\\",\\"1, 1\\",\\"ZO0409604096, ZO0466904669\\",\\"0, 0\\",\\"60, 75\\",\\"60, 75\\",\\"0, 0\\",\\"ZO0409604096, ZO0466904669\\",135,135,2,2,order,abdulraheem -EQMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Diane,Diane,\\"Diane Reese\\",\\"Diane Reese\\",FEMALE,22,Reese,Reese,\\"(empty)\\",Friday,4,\\"diane@reese-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",Pyramidustries,Pyramidustries,\\"Jun 20, 2019 @ 00:00:00.000\\",561256,\\"sold_product_561256_23086, sold_product_561256_16589\\",\\"sold_product_561256_23086, sold_product_561256_16589\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"12.742, 8.492\\",\\"24.984, 16.984\\",\\"23,086, 16,589\\",\\"Jersey dress - black, Long sleeved top - black\\",\\"Jersey dress - black, Long sleeved top - black\\",\\"1, 1\\",\\"ZO0151601516, ZO0162901629\\",\\"0, 0\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"0, 0\\",\\"ZO0151601516, ZO0162901629\\",\\"41.969\\",\\"41.969\\",2,2,order,diane -EgMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jackson,Jackson,\\"Jackson Rivera\\",\\"Jackson Rivera\\",MALE,13,Rivera,Rivera,\\"(empty)\\",Friday,4,\\"jackson@rivera-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561311,\\"sold_product_561311_22466, sold_product_561311_13378\\",\\"sold_product_561311_22466, sold_product_561311_13378\\",\\"20.984, 50\\",\\"20.984, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"10.703, 24.5\\",\\"20.984, 50\\",\\"22,466, 13,378\\",\\"Sweatshirt - black , Casual lace-ups - cognac\\",\\"Sweatshirt - black , Casual lace-ups - cognac\\",\\"1, 1\\",\\"ZO0458604586, ZO0391603916\\",\\"0, 0\\",\\"20.984, 50\\",\\"20.984, 50\\",\\"0, 0\\",\\"ZO0458604586, ZO0391603916\\",71,71,2,2,order,jackson -EwMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Mccarthy\\",\\"Wilhemina St. Mccarthy\\",FEMALE,17,Mccarthy,Mccarthy,\\"(empty)\\",Friday,4,\\"wilhemina st.@mccarthy-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561781,\\"sold_product_561781_5453, sold_product_561781_15437\\",\\"sold_product_561781_5453, sold_product_561781_15437\\",\\"50, 33\\",\\"50, 33\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"26.984, 18.141\\",\\"50, 33\\",\\"5,453, 15,437\\",\\"Slip-ons - Midnight Blue, Summer dress - black\\",\\"Slip-ons - Midnight Blue, Summer dress - black\\",\\"1, 1\\",\\"ZO0235402354, ZO0048700487\\",\\"0, 0\\",\\"50, 33\\",\\"50, 33\\",\\"0, 0\\",\\"ZO0235402354, ZO0048700487\\",83,83,2,2,order,wilhemina -ewMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Kamal,Kamal,\\"Kamal Garza\\",\\"Kamal Garza\\",MALE,39,Garza,Garza,\\"(empty)\\",Friday,4,\\"kamal@garza-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561375,\\"sold_product_561375_2773, sold_product_561375_18549\\",\\"sold_product_561375_2773, sold_product_561375_18549\\",\\"85, 24.984\\",\\"85, 24.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"39.094, 11.5\\",\\"85, 24.984\\",\\"2,773, 18,549\\",\\"Winter jacket - black, Trousers - dark blue\\",\\"Winter jacket - black, Trousers - dark blue\\",\\"1, 1\\",\\"ZO0115201152, ZO0420404204\\",\\"0, 0\\",\\"85, 24.984\\",\\"85, 24.984\\",\\"0, 0\\",\\"ZO0115201152, ZO0420404204\\",110,110,2,2,order,kamal -fAMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Brigitte,Brigitte,\\"Brigitte Simpson\\",\\"Brigitte Simpson\\",FEMALE,12,Simpson,Simpson,\\"(empty)\\",Friday,4,\\"brigitte@simpson-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561876,\\"sold_product_561876_11067, sold_product_561876_20664\\",\\"sold_product_561876_11067, sold_product_561876_20664\\",\\"13.992, 28.984\\",\\"13.992, 28.984\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"7.27, 14.781\\",\\"13.992, 28.984\\",\\"11,067, 20,664\\",\\"Print T-shirt - black/turquoise, Trainers - navy/black\\",\\"Print T-shirt - black/turquoise, Trainers - navy/black\\",\\"1, 1\\",\\"ZO0170301703, ZO0027000270\\",\\"0, 0\\",\\"13.992, 28.984\\",\\"13.992, 28.984\\",\\"0, 0\\",\\"ZO0170301703, ZO0027000270\\",\\"42.969\\",\\"42.969\\",2,2,order,brigitte -fQMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Chapman\\",\\"Betty Chapman\\",FEMALE,44,Chapman,Chapman,\\"(empty)\\",Friday,4,\\"betty@chapman-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",Pyramidustries,Pyramidustries,\\"Jun 20, 2019 @ 00:00:00.000\\",561633,\\"sold_product_561633_23859, sold_product_561633_7687\\",\\"sold_product_561633_23859, sold_product_561633_7687\\",\\"16.984, 13.992\\",\\"16.984, 13.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"8.328, 6.719\\",\\"16.984, 13.992\\",\\"23,859, 7,687\\",\\"Long sleeved top - berry, Print T-shirt - black\\",\\"Long sleeved top - berry, Print T-shirt - black\\",\\"1, 1\\",\\"ZO0165001650, ZO0159001590\\",\\"0, 0\\",\\"16.984, 13.992\\",\\"16.984, 13.992\\",\\"0, 0\\",\\"ZO0165001650, ZO0159001590\\",\\"30.984\\",\\"30.984\\",2,2,order,betty -4wMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Wood\\",\\"Elyssa Wood\\",FEMALE,27,Wood,Wood,\\"(empty)\\",Friday,4,\\"elyssa@wood-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562323,\\"sold_product_562323_17653, sold_product_562323_25172\\",\\"sold_product_562323_17653, sold_product_562323_25172\\",\\"65, 20.984\\",\\"65, 20.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Spherecords\\",\\"Oceanavigations, Spherecords\\",\\"31.844, 11.539\\",\\"65, 20.984\\",\\"17,653, 25,172\\",\\"Classic heels - blush, Blouse - black\\",\\"Classic heels - blush, Blouse - black\\",\\"1, 1\\",\\"ZO0238502385, ZO0650406504\\",\\"0, 0\\",\\"65, 20.984\\",\\"65, 20.984\\",\\"0, 0\\",\\"ZO0238502385, ZO0650406504\\",86,86,2,2,order,elyssa -5AMtOW0BH63Xcmy44mWR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Elyssa,Elyssa,\\"Elyssa Nash\\",\\"Elyssa Nash\\",FEMALE,27,Nash,Nash,\\"(empty)\\",Friday,4,\\"elyssa@nash-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562358,\\"sold_product_562358_15777, sold_product_562358_20699\\",\\"sold_product_562358_15777, sold_product_562358_20699\\",\\"60, 18.984\\",\\"60, 18.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Tigress Enterprises\\",\\"Gnomehouse, Tigress Enterprises\\",\\"33, 9.68\\",\\"60, 18.984\\",\\"15,777, 20,699\\",\\"Summer dress - Lemon Chiffon, Watch - black\\",\\"Summer dress - Lemon Chiffon, Watch - black\\",\\"1, 1\\",\\"ZO0337303373, ZO0079600796\\",\\"0, 0\\",\\"60, 18.984\\",\\"60, 18.984\\",\\"0, 0\\",\\"ZO0337303373, ZO0079600796\\",79,79,2,2,order,elyssa -DwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes, Men's Accessories\\",\\"Men's Clothing, Men's Shoes, Men's Accessories\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Bryan\\",\\"Sultan Al Bryan\\",MALE,19,Bryan,Bryan,\\"(empty)\\",Friday,4,\\"sultan al@bryan-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Oceanavigations, (empty), Low Tide Media\\",\\"Oceanavigations, (empty), Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",718360,\\"sold_product_718360_16955, sold_product_718360_20827, sold_product_718360_14564, sold_product_718360_21672\\",\\"sold_product_718360_16955, sold_product_718360_20827, sold_product_718360_14564, sold_product_718360_21672\\",\\"200, 165, 10.992, 16.984\\",\\"200, 165, 10.992, 16.984\\",\\"Men's Clothing, Men's Shoes, Men's Accessories, Men's Clothing\\",\\"Men's Clothing, Men's Shoes, Men's Accessories, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Oceanavigations, (empty), Low Tide Media, Low Tide Media\\",\\"Oceanavigations, (empty), Low Tide Media, Low Tide Media\\",\\"92, 85.813, 4.949, 9\\",\\"200, 165, 10.992, 16.984\\",\\"16,955, 20,827, 14,564, 21,672\\",\\"Classic coat - navy, Boots - black, Hat - light grey multicolor, Polo shirt - black multicolor\\",\\"Classic coat - navy, Boots - black, Hat - light grey multicolor, Polo shirt - black multicolor\\",\\"1, 1, 1, 1\\",\\"ZO0291402914, ZO0483804838, ZO0460304603, ZO0443904439\\",\\"0, 0, 0, 0\\",\\"200, 165, 10.992, 16.984\\",\\"200, 165, 10.992, 16.984\\",\\"0, 0, 0, 0\\",\\"ZO0291402914, ZO0483804838, ZO0460304603, ZO0443904439\\",393,393,4,4,order,sultan -JgMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,Jim,Jim,\\"Jim Rowe\\",\\"Jim Rowe\\",MALE,41,Rowe,Rowe,\\"(empty)\\",Friday,4,\\"jim@rowe-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561969,\\"sold_product_561969_1737, sold_product_561969_14073\\",\\"sold_product_561969_1737, sold_product_561969_14073\\",\\"42, 33\\",\\"42, 33\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"18.906, 17.156\\",\\"42, 33\\",\\"1,737, 14,073\\",\\"Lace-up boots - brown, Briefcase - brown \\",\\"Lace-up boots - brown, Briefcase - brown \\",\\"1, 1\\",\\"ZO0521205212, ZO0316003160\\",\\"0, 0\\",\\"42, 33\\",\\"42, 33\\",\\"0, 0\\",\\"ZO0521205212, ZO0316003160\\",75,75,2,2,order,jim -JwMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Mary,Mary,\\"Mary Garza\\",\\"Mary Garza\\",FEMALE,20,Garza,Garza,\\"(empty)\\",Friday,4,\\"mary@garza-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562011,\\"sold_product_562011_7816, sold_product_562011_13449\\",\\"sold_product_562011_7816, sold_product_562011_13449\\",\\"33, 75\\",\\"33, 75\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"16.5, 37.5\\",\\"33, 75\\",\\"7,816, 13,449\\",\\"Cardigan - Sky Blue, Ankle boots - black\\",\\"Cardigan - Sky Blue, Ankle boots - black\\",\\"1, 1\\",\\"ZO0068200682, ZO0245202452\\",\\"0, 0\\",\\"33, 75\\",\\"33, 75\\",\\"0, 0\\",\\"ZO0068200682, ZO0245202452\\",108,108,2,2,order,mary -oAMtOW0BH63Xcmy44maR,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories, Men's Shoes\\",\\"Men's Clothing, Men's Accessories, Men's Shoes\\",EUR,Eddie,Eddie,\\"Eddie Hodges\\",\\"Eddie Hodges\\",MALE,38,Hodges,Hodges,\\"(empty)\\",Friday,4,\\"eddie@hodges-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Microlutions, Low Tide Media, Angeldale\\",\\"Microlutions, Low Tide Media, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",719185,\\"sold_product_719185_18940, sold_product_719185_24924, sold_product_719185_20248, sold_product_719185_24003\\",\\"sold_product_719185_18940, sold_product_719185_24924, sold_product_719185_20248, sold_product_719185_24003\\",\\"14.992, 10.992, 60, 100\\",\\"14.992, 10.992, 60, 100\\",\\"Men's Clothing, Men's Clothing, Men's Accessories, Men's Shoes\\",\\"Men's Clothing, Men's Clothing, Men's Accessories, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Microlutions, Low Tide Media, Low Tide Media, Angeldale\\",\\"Microlutions, Low Tide Media, Low Tide Media, Angeldale\\",\\"7.352, 5.711, 33, 47\\",\\"14.992, 10.992, 60, 100\\",\\"18,940, 24,924, 20,248, 24,003\\",\\"Basic T-shirt - marshmallow, Print T-shirt - navy, Across body bag - black, Lace-ups - Midnight Blue\\",\\"Basic T-shirt - marshmallow, Print T-shirt - navy, Across body bag - black, Lace-ups - Midnight Blue\\",\\"1, 1, 1, 1\\",\\"ZO0118601186, ZO0438904389, ZO0468004680, ZO0684106841\\",\\"0, 0, 0, 0\\",\\"14.992, 10.992, 60, 100\\",\\"14.992, 10.992, 60, 100\\",\\"0, 0, 0, 0\\",\\"ZO0118601186, ZO0438904389, ZO0468004680, ZO0684106841\\",186,186,4,4,order,eddie -rQMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Evans\\",\\"Selena Evans\\",FEMALE,42,Evans,Evans,\\"(empty)\\",Friday,4,\\"selena@evans-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561669,\\"sold_product_561669_11107, sold_product_561669_19052\\",\\"sold_product_561669_11107, sold_product_561669_19052\\",\\"20.984, 14.992\\",\\"20.984, 14.992\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"11.117, 7.051\\",\\"20.984, 14.992\\",\\"11,107, 19,052\\",\\"Pyjamas - grey/pink , 2 PACK - Basic T-shirt - black/white\\",\\"Pyjamas - grey/pink , 2 PACK - Basic T-shirt - black/white\\",\\"1, 1\\",\\"ZO0100001000, ZO0642406424\\",\\"0, 0\\",\\"20.984, 14.992\\",\\"20.984, 14.992\\",\\"0, 0\\",\\"ZO0100001000, ZO0642406424\\",\\"35.969\\",\\"35.969\\",2,2,order,selena -rgMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Wood\\",\\"Wilhemina St. Wood\\",FEMALE,17,Wood,Wood,\\"(empty)\\",Friday,4,\\"wilhemina st.@wood-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Spherecords, Tigress Enterprises Curvy\\",\\"Spherecords, Tigress Enterprises Curvy\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561225,\\"sold_product_561225_16493, sold_product_561225_13770\\",\\"sold_product_561225_16493, sold_product_561225_13770\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Tigress Enterprises Curvy\\",\\"Spherecords, Tigress Enterprises Curvy\\",\\"12.492, 22.672\\",\\"24.984, 42\\",\\"16,493, 13,770\\",\\"Dressing gown - pale pink, Summer dress - peacoat\\",\\"Dressing gown - pale pink, Summer dress - peacoat\\",\\"1, 1\\",\\"ZO0660906609, ZO0102801028\\",\\"0, 0\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"0, 0\\",\\"ZO0660906609, ZO0102801028\\",67,67,2,2,order,wilhemina -rwMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Hampton\\",\\"Abigail Hampton\\",FEMALE,46,Hampton,Hampton,\\"(empty)\\",Friday,4,\\"abigail@hampton-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561284,\\"sold_product_561284_13751, sold_product_561284_24729\\",\\"sold_product_561284_13751, sold_product_561284_24729\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"11.5, 8.156\\",\\"24.984, 16.984\\",\\"13,751, 24,729\\",\\"Rucksack - black, Vest - black\\",\\"Rucksack - black, Vest - black\\",\\"1, 1\\",\\"ZO0086300863, ZO0171901719\\",\\"0, 0\\",\\"24.984, 16.984\\",\\"24.984, 16.984\\",\\"0, 0\\",\\"ZO0086300863, ZO0171901719\\",\\"41.969\\",\\"41.969\\",2,2,order,abigail -sAMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Rodriguez\\",\\"Gwen Rodriguez\\",FEMALE,26,Rodriguez,Rodriguez,\\"(empty)\\",Friday,4,\\"gwen@rodriguez-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561735,\\"sold_product_561735_15452, sold_product_561735_17692\\",\\"sold_product_561735_15452, sold_product_561735_17692\\",\\"33, 20.984\\",\\"33, 20.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"17.813, 9.656\\",\\"33, 20.984\\",\\"15,452, 17,692\\",\\"High heels - black, Long sleeved top - peacoat\\",\\"High heels - black, Long sleeved top - peacoat\\",\\"1, 1\\",\\"ZO0006300063, ZO0058400584\\",\\"0, 0\\",\\"33, 20.984\\",\\"33, 20.984\\",\\"0, 0\\",\\"ZO0006300063, ZO0058400584\\",\\"53.969\\",\\"53.969\\",2,2,order,gwen -sQMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,Abd,Abd,\\"Abd Fleming\\",\\"Abd Fleming\\",MALE,52,Fleming,Fleming,\\"(empty)\\",Friday,4,\\"abd@fleming-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561798,\\"sold_product_561798_23272, sold_product_561798_19140\\",\\"sold_product_561798_23272, sold_product_561798_19140\\",\\"100, 24.984\\",\\"100, 24.984\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"54, 13.742\\",\\"100, 24.984\\",\\"23,272, 19,140\\",\\"Lace-ups - bianco, Across body bag - black/dark brown\\",\\"Lace-ups - bianco, Across body bag - black/dark brown\\",\\"1, 1\\",\\"ZO0684006840, ZO0469104691\\",\\"0, 0\\",\\"100, 24.984\\",\\"100, 24.984\\",\\"0, 0\\",\\"ZO0684006840, ZO0469104691\\",125,125,2,2,order,abd -3QMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Morrison\\",\\"Elyssa Morrison\\",FEMALE,27,Morrison,Morrison,\\"(empty)\\",Friday,4,\\"elyssa@morrison-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Pyramidustries, Microlutions\\",\\"Pyramidustries, Microlutions\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562047,\\"sold_product_562047_19148, sold_product_562047_11032\\",\\"sold_product_562047_19148, sold_product_562047_11032\\",\\"11.992, 75\\",\\"11.992, 75\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Microlutions\\",\\"Pyramidustries, Microlutions\\",\\"6.109, 38.25\\",\\"11.992, 75\\",\\"19,148, 11,032\\",\\"Clutch - black, Parka - mottled grey\\",\\"Clutch - black, Parka - mottled grey\\",\\"1, 1\\",\\"ZO0203102031, ZO0115701157\\",\\"0, 0\\",\\"11.992, 75\\",\\"11.992, 75\\",\\"0, 0\\",\\"ZO0203102031, ZO0115701157\\",87,87,2,2,order,elyssa -3gMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Muniz,Muniz,\\"Muniz Reese\\",\\"Muniz Reese\\",MALE,37,Reese,Reese,\\"(empty)\\",Friday,4,\\"muniz@reese-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562107,\\"sold_product_562107_18292, sold_product_562107_23258\\",\\"sold_product_562107_18292, sold_product_562107_23258\\",\\"100, 20.984\\",\\"100, 20.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"52, 10.289\\",\\"100, 20.984\\",\\"18,292, 23,258\\",\\"Snowboard jacket - mottled grey, Jumper - grey/dark blue\\",\\"Snowboard jacket - mottled grey, Jumper - grey/dark blue\\",\\"1, 1\\",\\"ZO0624806248, ZO0579405794\\",\\"0, 0\\",\\"100, 20.984\\",\\"100, 20.984\\",\\"0, 0\\",\\"ZO0624806248, ZO0579405794\\",121,121,2,2,order,muniz -3wMtOW0BH63Xcmy442bU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes\\",\\"Men's Shoes\\",EUR,Samir,Samir,\\"Samir Foster\\",\\"Samir Foster\\",MALE,34,Foster,Foster,\\"(empty)\\",Friday,4,\\"samir@foster-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562290,\\"sold_product_562290_1665, sold_product_562290_24934\\",\\"sold_product_562290_1665, sold_product_562290_24934\\",\\"65, 50\\",\\"65, 50\\",\\"Men's Shoes, Men's Shoes\\",\\"Men's Shoes, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"31.203, 22.5\\",\\"65, 50\\",\\"1,665, 24,934\\",\\"Boots - light brown, Lace-up boots - resin coffee\\",\\"Boots - light brown, Lace-up boots - resin coffee\\",\\"1, 1\\",\\"ZO0686106861, ZO0403504035\\",\\"0, 0\\",\\"65, 50\\",\\"65, 50\\",\\"0, 0\\",\\"ZO0686106861, ZO0403504035\\",115,115,2,2,order,samir -PAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Harvey\\",\\"Abd Harvey\\",MALE,52,Harvey,Harvey,\\"(empty)\\",Friday,4,\\"abd@harvey-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",720967,\\"sold_product_720967_24934, sold_product_720967_12278, sold_product_720967_14535, sold_product_720967_17629\\",\\"sold_product_720967_24934, sold_product_720967_12278, sold_product_720967_14535, sold_product_720967_17629\\",\\"50, 11.992, 28.984, 24.984\\",\\"50, 11.992, 28.984, 24.984\\",\\"Men's Shoes, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Elitelligence, Elitelligence, Elitelligence\\",\\"Low Tide Media, Elitelligence, Elitelligence, Elitelligence\\",\\"22.5, 6, 13.922, 12.992\\",\\"50, 11.992, 28.984, 24.984\\",\\"24,934, 12,278, 14,535, 17,629\\",\\"Lace-up boots - resin coffee, Print T-shirt - black, Boots - brown, Tracksuit bottoms - mottled grey\\",\\"Lace-up boots - resin coffee, Print T-shirt - black, Boots - brown, Tracksuit bottoms - mottled grey\\",\\"1, 1, 1, 1\\",\\"ZO0403504035, ZO0553005530, ZO0519905199, ZO0528605286\\",\\"0, 0, 0, 0\\",\\"50, 11.992, 28.984, 24.984\\",\\"50, 11.992, 28.984, 24.984\\",\\"0, 0, 0, 0\\",\\"ZO0403504035, ZO0553005530, ZO0519905199, ZO0528605286\\",\\"115.938\\",\\"115.938\\",4,4,order,abd -bQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Nash\\",\\"Fitzgerald Nash\\",MALE,11,Nash,Nash,\\"(empty)\\",Friday,4,\\"fitzgerald@nash-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561564,\\"sold_product_561564_6597, sold_product_561564_12482\\",\\"sold_product_561564_6597, sold_product_561564_12482\\",\\"17.984, 60\\",\\"17.984, 60\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"9.531, 30\\",\\"17.984, 60\\",\\"6,597, 12,482\\",\\"Jumper - dark grey multicolor, Across body bag - black\\",\\"Jumper - dark grey multicolor, Across body bag - black\\",\\"1, 1\\",\\"ZO0451204512, ZO0463804638\\",\\"0, 0\\",\\"17.984, 60\\",\\"17.984, 60\\",\\"0, 0\\",\\"ZO0451204512, ZO0463804638\\",78,78,2,2,order,fuzzy -cAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Hopkins\\",\\"Elyssa Hopkins\\",FEMALE,27,Hopkins,Hopkins,\\"(empty)\\",Friday,4,\\"elyssa@hopkins-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561444,\\"sold_product_561444_21181, sold_product_561444_11368\\",\\"sold_product_561444_21181, sold_product_561444_11368\\",\\"21.984, 33\\",\\"21.984, 33\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"10.563, 15.18\\",\\"21.984, 33\\",\\"21,181, 11,368\\",\\"Cardigan - beige, Slip-ons - beige \\",\\"Cardigan - beige, Slip-ons - beige \\",\\"1, 1\\",\\"ZO0651806518, ZO0369703697\\",\\"0, 0\\",\\"21.984, 33\\",\\"21.984, 33\\",\\"0, 0\\",\\"ZO0651806518, ZO0369703697\\",\\"54.969\\",\\"54.969\\",2,2,order,elyssa -cQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Brady\\",\\"Betty Brady\\",FEMALE,44,Brady,Brady,\\"(empty)\\",Friday,4,\\"betty@brady-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",Pyramidustries,Pyramidustries,\\"Jun 20, 2019 @ 00:00:00.000\\",561482,\\"sold_product_561482_8985, sold_product_561482_15058\\",\\"sold_product_561482_8985, sold_product_561482_15058\\",\\"60, 33\\",\\"60, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"27.594, 16.172\\",\\"60, 33\\",\\"8,985, 15,058\\",\\"Light jacket - cognac, Faux leather jacket - pink\\",\\"Light jacket - cognac, Faux leather jacket - pink\\",\\"1, 1\\",\\"ZO0184901849, ZO0174301743\\",\\"0, 0\\",\\"60, 33\\",\\"60, 33\\",\\"0, 0\\",\\"ZO0184901849, ZO0174301743\\",93,93,2,2,order,betty -jgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Mostafa,Mostafa,\\"Mostafa Hopkins\\",\\"Mostafa Hopkins\\",MALE,9,Hopkins,Hopkins,\\"(empty)\\",Friday,4,\\"mostafa@hopkins-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562456,\\"sold_product_562456_11345, sold_product_562456_15411\\",\\"sold_product_562456_11345, sold_product_562456_15411\\",\\"7.988, 16.984\\",\\"7.988, 16.984\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"3.76, 7.82\\",\\"7.988, 16.984\\",\\"11,345, 15,411\\",\\"Tie - grey, Belt - black\\",\\"Tie - grey, Belt - black\\",\\"1, 1\\",\\"ZO0276302763, ZO0701407014\\",\\"0, 0\\",\\"7.988, 16.984\\",\\"7.988, 16.984\\",\\"0, 0\\",\\"ZO0276302763, ZO0701407014\\",\\"24.984\\",\\"24.984\\",2,2,order,mostafa -jwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Tyler\\",\\"Rabbia Al Tyler\\",FEMALE,5,Tyler,Tyler,\\"(empty)\\",Friday,4,\\"rabbia al@tyler-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Oceanavigations, Tigress Enterprises Curvy\\",\\"Oceanavigations, Tigress Enterprises Curvy\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562499,\\"sold_product_562499_5501, sold_product_562499_20439\\",\\"sold_product_562499_5501, sold_product_562499_20439\\",\\"75, 22.984\\",\\"75, 22.984\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises Curvy\\",\\"Oceanavigations, Tigress Enterprises Curvy\\",\\"40.5, 11.492\\",\\"75, 22.984\\",\\"5,501, 20,439\\",\\"Ankle boots - Midnight Blue, Blouse - black\\",\\"Ankle boots - Midnight Blue, Blouse - black\\",\\"1, 1\\",\\"ZO0244802448, ZO0105701057\\",\\"0, 0\\",\\"75, 22.984\\",\\"75, 22.984\\",\\"0, 0\\",\\"ZO0244802448, ZO0105701057\\",98,98,2,2,order,rabbia -kAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Yuri,Yuri,\\"Yuri James\\",\\"Yuri James\\",MALE,21,James,James,\\"(empty)\\",Friday,4,\\"yuri@james-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562152,\\"sold_product_562152_17873, sold_product_562152_19670\\",\\"sold_product_562152_17873, sold_product_562152_19670\\",\\"10.992, 37\\",\\"10.992, 37\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"5.602, 19.594\\",\\"10.992, 37\\",\\"17,873, 19,670\\",\\"Sports shirt - Seashell, Tracksuit top - black\\",\\"Sports shirt - Seashell, Tracksuit top - black\\",\\"1, 1\\",\\"ZO0616606166, ZO0589705897\\",\\"0, 0\\",\\"10.992, 37\\",\\"10.992, 37\\",\\"0, 0\\",\\"ZO0616606166, ZO0589705897\\",\\"47.969\\",\\"47.969\\",2,2,order,yuri -kQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Gibbs\\",\\"Wilhemina St. Gibbs\\",FEMALE,17,Gibbs,Gibbs,\\"(empty)\\",Friday,4,\\"wilhemina st.@gibbs-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562192,\\"sold_product_562192_18762, sold_product_562192_21085\\",\\"sold_product_562192_18762, sold_product_562192_21085\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"8.656, 7.988\\",\\"16.984, 16.984\\",\\"18,762, 21,085\\",\\"Watch - nude, Vest - black\\",\\"Watch - nude, Vest - black\\",\\"1, 1\\",\\"ZO0079700797, ZO0168201682\\",\\"0, 0\\",\\"16.984, 16.984\\",\\"16.984, 16.984\\",\\"0, 0\\",\\"ZO0079700797, ZO0168201682\\",\\"33.969\\",\\"33.969\\",2,2,order,wilhemina -lAMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Jim,Jim,\\"Jim Graves\\",\\"Jim Graves\\",MALE,41,Graves,Graves,\\"(empty)\\",Friday,4,\\"jim@graves-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Elitelligence,Elitelligence,\\"Jun 20, 2019 @ 00:00:00.000\\",562528,\\"sold_product_562528_11997, sold_product_562528_14014\\",\\"sold_product_562528_11997, sold_product_562528_14014\\",\\"16.984, 42\\",\\"16.984, 42\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"9.172, 20.156\\",\\"16.984, 42\\",\\"11,997, 14,014\\",\\"College - Polo shirt - dark red, Weekend bag - dark brown\\",\\"College - Polo shirt - dark red, Weekend bag - dark brown\\",\\"1, 1\\",\\"ZO0522905229, ZO0608606086\\",\\"0, 0\\",\\"16.984, 42\\",\\"16.984, 42\\",\\"0, 0\\",\\"ZO0522905229, ZO0608606086\\",\\"58.969\\",\\"58.969\\",2,2,order,jim -mgMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Tariq,Tariq,\\"Tariq Lewis\\",\\"Tariq Lewis\\",MALE,25,Lewis,Lewis,\\"(empty)\\",Friday,4,\\"tariq@lewis-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Oceanavigations, Low Tide Media, Elitelligence\\",\\"Oceanavigations, Low Tide Media, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",715286,\\"sold_product_715286_19758, sold_product_715286_12040, sold_product_715286_3096, sold_product_715286_13247\\",\\"sold_product_715286_19758, sold_product_715286_12040, sold_product_715286_3096, sold_product_715286_13247\\",\\"50, 24.984, 24.984, 11.992\\",\\"50, 24.984, 24.984, 11.992\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Oceanavigations, Oceanavigations, Low Tide Media, Elitelligence\\",\\"Oceanavigations, Oceanavigations, Low Tide Media, Elitelligence\\",\\"25, 12.492, 11.25, 5.641\\",\\"50, 24.984, 24.984, 11.992\\",\\"19,758, 12,040, 3,096, 13,247\\",\\"Sweatshirt - grey multicolor, Shirt - navy, Jumper - dark blue, Pyjama bottoms - light grey multicolor\\",\\"Sweatshirt - grey multicolor, Shirt - navy, Jumper - dark blue, Pyjama bottoms - light grey multicolor\\",\\"1, 1, 1, 1\\",\\"ZO0299802998, ZO0278702787, ZO0448104481, ZO0611906119\\",\\"0, 0, 0, 0\\",\\"50, 24.984, 24.984, 11.992\\",\\"50, 24.984, 24.984, 11.992\\",\\"0, 0, 0, 0\\",\\"ZO0299802998, ZO0278702787, ZO0448104481, ZO0611906119\\",\\"111.938\\",\\"111.938\\",4,4,order,tariq -vQMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Mckenzie\\",\\"Jackson Mckenzie\\",MALE,13,Mckenzie,Mckenzie,\\"(empty)\\",Friday,4,\\"jackson@mckenzie-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561210,\\"sold_product_561210_11019, sold_product_561210_7024\\",\\"sold_product_561210_11019, sold_product_561210_7024\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"16.813, 9\\",\\"33, 16.984\\",\\"11,019, 7,024\\",\\"Sandals - black, 3 PACK - Basic T-shirt - white/black/grey\\",\\"Sandals - black, 3 PACK - Basic T-shirt - white/black/grey\\",\\"1, 1\\",\\"ZO0407404074, ZO0473704737\\",\\"0, 0\\",\\"33, 16.984\\",\\"33, 16.984\\",\\"0, 0\\",\\"ZO0407404074, ZO0473704737\\",\\"49.969\\",\\"49.969\\",2,2,order,jackson -zwMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",EUR,Jim,Jim,\\"Jim Jensen\\",\\"Jim Jensen\\",MALE,41,Jensen,Jensen,\\"(empty)\\",Friday,4,\\"jim@jensen-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562337,\\"sold_product_562337_18692, sold_product_562337_15189\\",\\"sold_product_562337_18692, sold_product_562337_15189\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"Men's Shoes, Men's Accessories\\",\\"Men's Shoes, Men's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"12.992, 35.75\\",\\"24.984, 65\\",\\"18,692, 15,189\\",\\"High-top trainers - green, Crossover Strap Bag\\",\\"High-top trainers - green, Crossover Strap Bag\\",\\"1, 1\\",\\"ZO0513005130, ZO0463704637\\",\\"0, 0\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"0, 0\\",\\"ZO0513005130, ZO0463704637\\",90,90,2,2,order,jim -5gMtOW0BH63Xcmy442fU,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Lamb\\",\\"Sultan Al Lamb\\",MALE,19,Lamb,Lamb,\\"(empty)\\",Friday,4,\\"sultan al@lamb-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"(empty), Elitelligence, Microlutions, Spritechnologies\\",\\"(empty), Elitelligence, Microlutions, Spritechnologies\\",\\"Jun 20, 2019 @ 00:00:00.000\\",713242,\\"sold_product_713242_12836, sold_product_713242_20514, sold_product_713242_19994, sold_product_713242_11377\\",\\"sold_product_713242_12836, sold_product_713242_20514, sold_product_713242_19994, sold_product_713242_11377\\",\\"165, 24.984, 6.988, 10.992\\",\\"165, 24.984, 6.988, 10.992\\",\\"Men's Shoes, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Men's Shoes, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"(empty), Elitelligence, Microlutions, Spritechnologies\\",\\"(empty), Elitelligence, Microlutions, Spritechnologies\\",\\"80.875, 11.5, 3.631, 5.711\\",\\"165, 24.984, 6.988, 10.992\\",\\"12,836, 20,514, 19,994, 11,377\\",\\"Lace-ups - brown, Jumper - black, STAY TRUE 2 PACK - Socks - white/grey/black, Swimming shorts - dark red\\",\\"Lace-ups - brown, Jumper - black, STAY TRUE 2 PACK - Socks - white/grey/black, Swimming shorts - dark red\\",\\"1, 1, 1, 1\\",\\"ZO0482004820, ZO0577105771, ZO0130201302, ZO0629006290\\",\\"0, 0, 0, 0\\",\\"165, 24.984, 6.988, 10.992\\",\\"165, 24.984, 6.988, 10.992\\",\\"0, 0, 0, 0\\",\\"ZO0482004820, ZO0577105771, ZO0130201302, ZO0629006290\\",208,208,4,4,order,sultan -JQMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Boris,Boris,\\"Boris Palmer\\",\\"Boris Palmer\\",MALE,36,Palmer,Palmer,\\"(empty)\\",Friday,4,\\"boris@palmer-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561657,\\"sold_product_561657_13024, sold_product_561657_23055\\",\\"sold_product_561657_13024, sold_product_561657_23055\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Oceanavigations\\",\\"Microlutions, Oceanavigations\\",\\"12, 21.828\\",\\"24.984, 42\\",\\"13,024, 23,055\\",\\"Tracksuit bottoms - red, Waistcoat - black\\",\\"Tracksuit bottoms - red, Waistcoat - black\\",\\"1, 1\\",\\"ZO0111701117, ZO0288002880\\",\\"0, 0\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"0, 0\\",\\"ZO0111701117, ZO0288002880\\",67,67,2,2,order,boris -JgMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Mccarthy\\",\\"Elyssa Mccarthy\\",FEMALE,27,Mccarthy,Mccarthy,\\"(empty)\\",Friday,4,\\"elyssa@mccarthy-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561254,\\"sold_product_561254_12768, sold_product_561254_20992\\",\\"sold_product_561254_12768, sold_product_561254_20992\\",\\"10.992, 28.984\\",\\"10.992, 28.984\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"5.5, 14.211\\",\\"10.992, 28.984\\",\\"12,768, 20,992\\",\\"Snood - nude, Ankle boots - black\\",\\"Snood - nude, Ankle boots - black\\",\\"1, 1\\",\\"ZO0081400814, ZO0022500225\\",\\"0, 0\\",\\"10.992, 28.984\\",\\"10.992, 28.984\\",\\"0, 0\\",\\"ZO0081400814, ZO0022500225\\",\\"39.969\\",\\"39.969\\",2,2,order,elyssa -JwMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Sonya,Sonya,\\"Sonya Jimenez\\",\\"Sonya Jimenez\\",FEMALE,28,Jimenez,Jimenez,\\"(empty)\\",Friday,4,\\"sonya@jimenez-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Pyramidustries, Angeldale\\",\\"Pyramidustries, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561808,\\"sold_product_561808_17597, sold_product_561808_23716\\",\\"sold_product_561808_17597, sold_product_561808_23716\\",\\"13.992, 60\\",\\"13.992, 60\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Angeldale\\",\\"Pyramidustries, Angeldale\\",\\"7.27, 29.406\\",\\"13.992, 60\\",\\"17,597, 23,716\\",\\"Print T-shirt - rose, Espadrilles - gold\\",\\"Print T-shirt - rose, Espadrilles - gold\\",\\"1, 1\\",\\"ZO0161401614, ZO0670406704\\",\\"0, 0\\",\\"13.992, 60\\",\\"13.992, 60\\",\\"0, 0\\",\\"ZO0161401614, ZO0670406704\\",74,74,2,2,order,sonya -SAMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Baker\\",\\"Abdulraheem Al Baker\\",MALE,33,Baker,Baker,\\"(empty)\\",Friday,4,\\"abdulraheem al@baker-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Microlutions, Spritechnologies\\",\\"Microlutions, Spritechnologies\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562394,\\"sold_product_562394_11570, sold_product_562394_15124\\",\\"sold_product_562394_11570, sold_product_562394_15124\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Spritechnologies\\",\\"Microlutions, Spritechnologies\\",\\"9.172, 5.5\\",\\"16.984, 10.992\\",\\"11,570, 15,124\\",\\"Print T-shirt - beige, Print T-shirt - dark denim\\",\\"Print T-shirt - beige, Print T-shirt - dark denim\\",\\"1, 1\\",\\"ZO0116701167, ZO0618106181\\",\\"0, 0\\",\\"16.984, 10.992\\",\\"16.984, 10.992\\",\\"0, 0\\",\\"ZO0116701167, ZO0618106181\\",\\"27.984\\",\\"27.984\\",2,2,order,abdulraheem -igMtOW0BH63Xcmy442jU,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Taylor\\",\\"Wilhemina St. Taylor\\",FEMALE,17,Taylor,Taylor,\\"(empty)\\",Friday,4,\\"wilhemina st.@taylor-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Angeldale, Champion Arts, Gnomehouse, Spherecords\\",\\"Angeldale, Champion Arts, Gnomehouse, Spherecords\\",\\"Jun 20, 2019 @ 00:00:00.000\\",731424,\\"sold_product_731424_18737, sold_product_731424_18573, sold_product_731424_19121, sold_product_731424_11250\\",\\"sold_product_731424_18737, sold_product_731424_18573, sold_product_731424_19121, sold_product_731424_11250\\",\\"65, 11.992, 65, 7.988\\",\\"65, 11.992, 65, 7.988\\",\\"Women's Shoes, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Angeldale, Champion Arts, Gnomehouse, Spherecords\\",\\"Angeldale, Champion Arts, Gnomehouse, Spherecords\\",\\"31.844, 5.52, 33.781, 3.68\\",\\"65, 11.992, 65, 7.988\\",\\"18,737, 18,573, 19,121, 11,250\\",\\"Lace-ups - black, Print T-shirt - light grey, Ankle boots - khaki, Top - light grey \\",\\"Lace-ups - black, Print T-shirt - light grey, Ankle boots - khaki, Top - light grey \\",\\"1, 1, 1, 1\\",\\"ZO0668706687, ZO0494004940, ZO0326003260, ZO0644206442\\",\\"0, 0, 0, 0\\",\\"65, 11.992, 65, 7.988\\",\\"65, 11.992, 65, 7.988\\",\\"0, 0, 0, 0\\",\\"ZO0668706687, ZO0494004940, ZO0326003260, ZO0644206442\\",150,150,4,4,order,wilhemina -pgMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Mary,Mary,\\"Mary Walters\\",\\"Mary Walters\\",FEMALE,20,Walters,Walters,\\"(empty)\\",Friday,4,\\"mary@walters-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media, Tigress Enterprises\\",\\"Low Tide Media, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562425,\\"sold_product_562425_22514, sold_product_562425_21356\\",\\"sold_product_562425_22514, sold_product_562425_21356\\",\\"50, 33\\",\\"50, 33\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Tigress Enterprises\\",\\"Low Tide Media, Tigress Enterprises\\",\\"26.984, 16.5\\",\\"50, 33\\",\\"22,514, 21,356\\",\\"Ankle boots - grey, Jersey dress - peacoat\\",\\"Ankle boots - grey, Jersey dress - peacoat\\",\\"1, 1\\",\\"ZO0377603776, ZO0050500505\\",\\"0, 0\\",\\"50, 33\\",\\"50, 33\\",\\"0, 0\\",\\"ZO0377603776, ZO0050500505\\",83,83,2,2,order,mary -pwMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Robert,Robert,\\"Robert Ruiz\\",\\"Robert Ruiz\\",MALE,29,Ruiz,Ruiz,\\"(empty)\\",Friday,4,\\"robert@ruiz-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562464,\\"sold_product_562464_16779, sold_product_562464_24522\\",\\"sold_product_562464_16779, sold_product_562464_24522\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"11.539, 6\\",\\"20.984, 11.992\\",\\"16,779, 24,522\\",\\"Belt - light brown, Long sleeved top - off-white\\",\\"Belt - light brown, Long sleeved top - off-white\\",\\"1, 1\\",\\"ZO0462004620, ZO0568005680\\",\\"0, 0\\",\\"20.984, 11.992\\",\\"20.984, 11.992\\",\\"0, 0\\",\\"ZO0462004620, ZO0568005680\\",\\"32.969\\",\\"32.969\\",2,2,order,robert -qAMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Selena,Selena,\\"Selena Bryant\\",\\"Selena Bryant\\",FEMALE,42,Bryant,Bryant,\\"(empty)\\",Friday,4,\\"selena@bryant-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562516,\\"sold_product_562516_23076, sold_product_562516_13345\\",\\"sold_product_562516_23076, sold_product_562516_13345\\",\\"42, 7.988\\",\\"42, 7.988\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Tigress Enterprises\\",\\"Oceanavigations, Tigress Enterprises\\",\\"21, 3.68\\",\\"42, 7.988\\",\\"23,076, 13,345\\",\\"Jeans Skinny Fit - blue, Snood - nude/lilac\\",\\"Jeans Skinny Fit - blue, Snood - nude/lilac\\",\\"1, 1\\",\\"ZO0271102711, ZO0081300813\\",\\"0, 0\\",\\"42, 7.988\\",\\"42, 7.988\\",\\"0, 0\\",\\"ZO0271102711, ZO0081300813\\",\\"49.969\\",\\"49.969\\",2,2,order,selena -qQMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Marwan,Marwan,\\"Marwan Webb\\",\\"Marwan Webb\\",MALE,51,Webb,Webb,\\"(empty)\\",Friday,4,\\"marwan@webb-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562161,\\"sold_product_562161_11902, sold_product_562161_24125\\",\\"sold_product_562161_11902, sold_product_562161_24125\\",\\"13.992, 65\\",\\"13.992, 65\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Angeldale\\",\\"Low Tide Media, Angeldale\\",\\"7.551, 31.203\\",\\"13.992, 65\\",\\"11,902, 24,125\\",\\"3 PACK - Shorts - black, Lace-up boots - black\\",\\"3 PACK - Shorts - black, Lace-up boots - black\\",\\"1, 1\\",\\"ZO0477504775, ZO0694406944\\",\\"0, 0\\",\\"13.992, 65\\",\\"13.992, 65\\",\\"0, 0\\",\\"ZO0477504775, ZO0694406944\\",79,79,2,2,order,marwan -qgMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jim,Jim,\\"Jim Dawson\\",\\"Jim Dawson\\",MALE,41,Dawson,Dawson,\\"(empty)\\",Friday,4,\\"jim@dawson-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562211,\\"sold_product_562211_17044, sold_product_562211_19937\\",\\"sold_product_562211_17044, sold_product_562211_19937\\",\\"10.992, 7.988\\",\\"10.992, 7.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spritechnologies, Elitelligence\\",\\"Spritechnologies, Elitelligence\\",\\"6.039, 4\\",\\"10.992, 7.988\\",\\"17,044, 19,937\\",\\"Sports shirt - bright white, Basic T-shirt - rose\\",\\"Sports shirt - bright white, Basic T-shirt - rose\\",\\"1, 1\\",\\"ZO0616806168, ZO0551805518\\",\\"0, 0\\",\\"10.992, 7.988\\",\\"10.992, 7.988\\",\\"0, 0\\",\\"ZO0616806168, ZO0551805518\\",\\"18.984\\",\\"18.984\\",2,2,order,jim -tAMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Selena,Selena,\\"Selena Graham\\",\\"Selena Graham\\",FEMALE,42,Graham,Graham,\\"(empty)\\",Friday,4,\\"selena@graham-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Pyramidustries active, Low Tide Media\\",\\"Pyramidustries active, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561831,\\"sold_product_561831_14088, sold_product_561831_20294\\",\\"sold_product_561831_14088, sold_product_561831_20294\\",\\"33, 60\\",\\"33, 60\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries active, Low Tide Media\\",\\"Pyramidustries active, Low Tide Media\\",\\"16.813, 33\\",\\"33, 60\\",\\"14,088, 20,294\\",\\"Tights - duffle bag , Lace-ups - grey\\",\\"Tights - duffle bag , Lace-ups - grey\\",\\"1, 1\\",\\"ZO0225102251, ZO0368803688\\",\\"0, 0\\",\\"33, 60\\",\\"33, 60\\",\\"0, 0\\",\\"ZO0225102251, ZO0368803688\\",93,93,2,2,order,selena -tQMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Robbie,Robbie,\\"Robbie Potter\\",\\"Robbie Potter\\",MALE,48,Potter,Potter,\\"(empty)\\",Friday,4,\\"robbie@potter-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561864,\\"sold_product_561864_14054, sold_product_561864_20029\\",\\"sold_product_561864_14054, sold_product_561864_20029\\",\\"75, 85\\",\\"75, 85\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Angeldale\\",\\"Oceanavigations, Angeldale\\",\\"36, 43.344\\",\\"75, 85\\",\\"14,054, 20,029\\",\\"Parka - olive, Lace-up boots - Burly Wood\\",\\"Parka - olive, Lace-up boots - Burly Wood\\",\\"1, 1\\",\\"ZO0287002870, ZO0692206922\\",\\"0, 0\\",\\"75, 85\\",\\"75, 85\\",\\"0, 0\\",\\"ZO0287002870, ZO0692206922\\",160,160,2,2,order,robbie -tgMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Abigail,Abigail,\\"Abigail Austin\\",\\"Abigail Austin\\",FEMALE,46,Austin,Austin,\\"(empty)\\",Friday,4,\\"abigail@austin-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561907,\\"sold_product_561907_17540, sold_product_561907_16988\\",\\"sold_product_561907_17540, sold_product_561907_16988\\",\\"60, 60\\",\\"60, 60\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Gnomehouse\\",\\"Tigress Enterprises, Gnomehouse\\",\\"29.406, 30.594\\",\\"60, 60\\",\\"17,540, 16,988\\",\\"Maxi dress - silver blue, Classic heels - black\\",\\"Maxi dress - silver blue, Classic heels - black\\",\\"1, 1\\",\\"ZO0042300423, ZO0321403214\\",\\"0, 0\\",\\"60, 60\\",\\"60, 60\\",\\"0, 0\\",\\"ZO0042300423, ZO0321403214\\",120,120,2,2,order,abigail -vAMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",EUR,Kamal,Kamal,\\"Kamal Boone\\",\\"Kamal Boone\\",MALE,39,Boone,Boone,\\"(empty)\\",Friday,4,\\"kamal@boone-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561245,\\"sold_product_561245_18213, sold_product_561245_17792\\",\\"sold_product_561245_18213, sold_product_561245_17792\\",\\"10.992, 34\\",\\"10.992, 34\\",\\"Men's Clothing, Men's Accessories\\",\\"Men's Clothing, Men's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"5.711, 16.313\\",\\"10.992, 34\\",\\"18,213, 17,792\\",\\"Print T-shirt - white, Briefcase - brown\\",\\"Print T-shirt - white, Briefcase - brown\\",\\"1, 1\\",\\"ZO0554305543, ZO0468204682\\",\\"0, 0\\",\\"10.992, 34\\",\\"10.992, 34\\",\\"0, 0\\",\\"ZO0554305543, ZO0468204682\\",\\"44.969\\",\\"44.969\\",2,2,order,kamal -vQMtOW0BH63Xcmy45GjD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Rowe\\",\\"Clarice Rowe\\",FEMALE,18,Rowe,Rowe,\\"(empty)\\",Friday,4,\\"clarice@rowe-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561785,\\"sold_product_561785_15024, sold_product_561785_24186\\",\\"sold_product_561785_15024, sold_product_561785_24186\\",\\"60, 33\\",\\"60, 33\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"31.797, 17.813\\",\\"60, 33\\",\\"15,024, 24,186\\",\\"Cocktail dress / Party dress - black, Beaded Occasion Dress\\",\\"Cocktail dress / Party dress - black, Beaded Occasion Dress\\",\\"1, 1\\",\\"ZO0048600486, ZO0155201552\\",\\"0, 0\\",\\"60, 33\\",\\"60, 33\\",\\"0, 0\\",\\"ZO0048600486, ZO0155201552\\",93,93,2,2,order,clarice -YQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Betty,Betty,\\"Betty Harmon\\",\\"Betty Harmon\\",FEMALE,44,Harmon,Harmon,\\"(empty)\\",Friday,4,\\"betty@harmon-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.7)\\",\\"New York\\",Pyramidustries,Pyramidustries,\\"Jun 20, 2019 @ 00:00:00.000\\",561505,\\"sold_product_561505_21534, sold_product_561505_20521\\",\\"sold_product_561505_21534, sold_product_561505_20521\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"9.656, 10.703\\",\\"20.984, 20.984\\",\\"21,534, 20,521\\",\\"Vest - black and silver, Hoodie - dark grey multicolor\\",\\"Vest - black and silver, Hoodie - dark grey multicolor\\",\\"1, 1\\",\\"ZO0164001640, ZO0179301793\\",\\"0, 0\\",\\"20.984, 20.984\\",\\"20.984, 20.984\\",\\"0, 0\\",\\"ZO0164001640, ZO0179301793\\",\\"41.969\\",\\"41.969\\",2,2,order,betty -agMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,Thad,Thad,\\"Thad Gregory\\",\\"Thad Gregory\\",MALE,30,Gregory,Gregory,\\"(empty)\\",Friday,4,\\"thad@gregory-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562403,\\"sold_product_562403_16259, sold_product_562403_15999\\",\\"sold_product_562403_16259, sold_product_562403_15999\\",\\"42, 20.984\\",\\"42, 20.984\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"21, 11.328\\",\\"42, 20.984\\",\\"16,259, 15,999\\",\\"Weekend bag - dark brown , Shirt - charcoal\\",\\"Weekend bag - dark brown , Shirt - charcoal\\",\\"1, 1\\",\\"ZO0471504715, ZO0524405244\\",\\"0, 0\\",\\"42, 20.984\\",\\"42, 20.984\\",\\"0, 0\\",\\"ZO0471504715, ZO0524405244\\",\\"62.969\\",\\"62.969\\",2,2,order,thad -cQMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Tariq,Tariq,\\"Tariq King\\",\\"Tariq King\\",MALE,25,King,King,\\"(empty)\\",Friday,4,\\"tariq@king-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561342,\\"sold_product_561342_16000, sold_product_561342_18188\\",\\"sold_product_561342_16000, sold_product_561342_18188\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"10.289, 17.484\\",\\"20.984, 33\\",\\"16,000, 18,188\\",\\"Shirt - Medium Slate Blue, Smart lace-ups - cognac\\",\\"Shirt - Medium Slate Blue, Smart lace-ups - cognac\\",\\"1, 1\\",\\"ZO0524505245, ZO0388003880\\",\\"0, 0\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"0, 0\\",\\"ZO0524505245, ZO0388003880\\",\\"53.969\\",\\"53.969\\",2,2,order,tariq -1gMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Pia,Pia,\\"Pia Turner\\",\\"Pia Turner\\",FEMALE,45,Turner,Turner,\\"(empty)\\",Friday,4,\\"pia@turner-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Tigress Enterprises\\",\\"Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562060,\\"sold_product_562060_15481, sold_product_562060_8432\\",\\"sold_product_562060_15481, sold_product_562060_8432\\",\\"33, 22.984\\",\\"33, 22.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Tigress Enterprises\\",\\"15.18, 11.953\\",\\"33, 22.984\\",\\"15,481, 8,432\\",\\"Blazer - creme, Vest - black\\",\\"Blazer - creme, Vest - black\\",\\"1, 1\\",\\"ZO0067300673, ZO0062100621\\",\\"0, 0\\",\\"33, 22.984\\",\\"33, 22.984\\",\\"0, 0\\",\\"ZO0067300673, ZO0062100621\\",\\"55.969\\",\\"55.969\\",2,2,order,pia -1wMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Perkins\\",\\"Abigail Perkins\\",FEMALE,46,Perkins,Perkins,\\"(empty)\\",Friday,4,\\"abigail@perkins-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562094,\\"sold_product_562094_4898, sold_product_562094_20011\\",\\"sold_product_562094_4898, sold_product_562094_20011\\",\\"90, 33\\",\\"90, 33\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Pyramidustries\\",\\"Low Tide Media, Pyramidustries\\",\\"45, 15.844\\",\\"90, 33\\",\\"4,898, 20,011\\",\\"Boots - cognac, Jumpsuit - black\\",\\"Boots - cognac, Jumpsuit - black\\",\\"1, 1\\",\\"ZO0374003740, ZO0146401464\\",\\"0, 0\\",\\"90, 33\\",\\"90, 33\\",\\"0, 0\\",\\"ZO0374003740, ZO0146401464\\",123,123,2,2,order,abigail -2AMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Jenkins\\",\\"Robbie Jenkins\\",MALE,48,Jenkins,Jenkins,\\"(empty)\\",Friday,4,\\"robbie@jenkins-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562236,\\"sold_product_562236_24934, sold_product_562236_14426\\",\\"sold_product_562236_24934, sold_product_562236_14426\\",\\"50, 10.992\\",\\"50, 10.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"22.5, 5.82\\",\\"50, 10.992\\",\\"24,934, 14,426\\",\\"Lace-up boots - resin coffee, Print T-shirt - grey multicolor\\",\\"Lace-up boots - resin coffee, Print T-shirt - grey multicolor\\",\\"1, 1\\",\\"ZO0403504035, ZO0438304383\\",\\"0, 0\\",\\"50, 10.992\\",\\"50, 10.992\\",\\"0, 0\\",\\"ZO0403504035, ZO0438304383\\",\\"60.969\\",\\"60.969\\",2,2,order,robbie -2QMtOW0BH63Xcmy45GnD,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Mary,Mary,\\"Mary Kim\\",\\"Mary Kim\\",FEMALE,20,Kim,Kim,\\"(empty)\\",Friday,4,\\"mary@kim-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562304,\\"sold_product_562304_5945, sold_product_562304_22770\\",\\"sold_product_562304_5945, sold_product_562304_22770\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"11.5, 19.734\\",\\"24.984, 42\\",\\"5,945, 22,770\\",\\"Ankle boots - black, Jumper - black/grey\\",\\"Ankle boots - black, Jumper - black/grey\\",\\"1, 1\\",\\"ZO0025000250, ZO0232702327\\",\\"0, 0\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"0, 0\\",\\"ZO0025000250, ZO0232702327\\",67,67,2,2,order,mary -FwMtOW0BH63Xcmy45GrD,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Thad,Thad,\\"Thad Perkins\\",\\"Thad Perkins\\",MALE,30,Perkins,Perkins,\\"(empty)\\",Friday,4,\\"thad@perkins-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Microlutions, Angeldale\\",\\"Microlutions, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562390,\\"sold_product_562390_19623, sold_product_562390_12060\\",\\"sold_product_562390_19623, sold_product_562390_12060\\",\\"33, 50\\",\\"33, 50\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Angeldale\\",\\"Microlutions, Angeldale\\",\\"15.844, 25.984\\",\\"33, 50\\",\\"19,623, 12,060\\",\\"Jumper - navy blazer, Lace-ups - black/red\\",\\"Jumper - navy blazer, Lace-ups - black/red\\",\\"1, 1\\",\\"ZO0121701217, ZO0680806808\\",\\"0, 0\\",\\"33, 50\\",\\"33, 50\\",\\"0, 0\\",\\"ZO0121701217, ZO0680806808\\",83,83,2,2,order,thad -3QMtOW0BH63Xcmy45Wq4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Tariq,Tariq,\\"Tariq Foster\\",\\"Tariq Foster\\",MALE,25,Foster,Foster,\\"(empty)\\",Friday,4,\\"tariq@foster-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Microlutions, Oceanavigations, Low Tide Media\\",\\"Microlutions, Oceanavigations, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",719041,\\"sold_product_719041_17412, sold_product_719041_17871, sold_product_719041_1720, sold_product_719041_15515\\",\\"sold_product_719041_17412, sold_product_719041_17871, sold_product_719041_1720, sold_product_719041_15515\\",\\"14.992, 14.992, 50, 50\\",\\"14.992, 14.992, 50, 50\\",\\"Men's Clothing, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Men's Clothing, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Microlutions, Oceanavigations, Low Tide Media, Oceanavigations\\",\\"Microlutions, Oceanavigations, Low Tide Media, Oceanavigations\\",\\"7.5, 6.898, 24.5, 23\\",\\"14.992, 14.992, 50, 50\\",\\"17,412, 17,871, 1,720, 15,515\\",\\"Print T-shirt - black, Print T-shirt - multicolored, Lace-ups - tan, Light jacket - dark blue\\",\\"Print T-shirt - black, Print T-shirt - multicolored, Lace-ups - tan, Light jacket - dark blue\\",\\"1, 1, 1, 1\\",\\"ZO0117701177, ZO0292902929, ZO0387403874, ZO0286902869\\",\\"0, 0, 0, 0\\",\\"14.992, 14.992, 50, 50\\",\\"14.992, 14.992, 50, 50\\",\\"0, 0, 0, 0\\",\\"ZO0117701177, ZO0292902929, ZO0387403874, ZO0286902869\\",130,130,4,4,order,tariq -IAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Wagdi,Wagdi,\\"Wagdi Lawrence\\",\\"Wagdi Lawrence\\",MALE,15,Lawrence,Lawrence,\\"(empty)\\",Friday,4,\\"wagdi@lawrence-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561604,\\"sold_product_561604_24731, sold_product_561604_19673\\",\\"sold_product_561604_24731, sold_product_561604_19673\\",\\"24.984, 7.988\\",\\"24.984, 7.988\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"13.242, 4.148\\",\\"24.984, 7.988\\",\\"24,731, 19,673\\",\\"Tracksuit bottoms - mottled grey, Basic T-shirt - black\\",\\"Tracksuit bottoms - mottled grey, Basic T-shirt - black\\",\\"1, 1\\",\\"ZO0529605296, ZO0435404354\\",\\"0, 0\\",\\"24.984, 7.988\\",\\"24.984, 7.988\\",\\"0, 0\\",\\"ZO0529605296, ZO0435404354\\",\\"32.969\\",\\"32.969\\",2,2,order,wagdi -IwMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Mary,Mary,\\"Mary Fletcher\\",\\"Mary Fletcher\\",FEMALE,20,Fletcher,Fletcher,\\"(empty)\\",Friday,4,\\"mary@fletcher-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561455,\\"sold_product_561455_12855, sold_product_561455_5588\\",\\"sold_product_561455_12855, sold_product_561455_5588\\",\\"28.984, 42\\",\\"28.984, 42\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises\\",\\"14.492, 19.313\\",\\"28.984, 42\\",\\"12,855, 5,588\\",\\"Blazer - weiu00df/rosa, Ankle boots - teak\\",\\"Blazer - weiu00df/rosa, Ankle boots - teak\\",\\"1, 1\\",\\"ZO0182001820, ZO0018500185\\",\\"0, 0\\",\\"28.984, 42\\",\\"28.984, 42\\",\\"0, 0\\",\\"ZO0182001820, ZO0018500185\\",71,71,2,2,order,mary -JAMtOW0BH63Xcmy45Wu4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Robbie,Robbie,\\"Robbie Mccarthy\\",\\"Robbie Mccarthy\\",MALE,48,Mccarthy,Mccarthy,\\"(empty)\\",Friday,4,\\"robbie@mccarthy-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561509,\\"sold_product_561509_18177, sold_product_561509_2401\\",\\"sold_product_561509_18177, sold_product_561509_2401\\",\\"10.992, 65\\",\\"10.992, 65\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"5.82, 33.781\\",\\"10.992, 65\\",\\"18,177, 2,401\\",\\"Print T-shirt - navy, Boots - dark brown\\",\\"Print T-shirt - navy, Boots - dark brown\\",\\"1, 1\\",\\"ZO0438404384, ZO0405504055\\",\\"0, 0\\",\\"10.992, 65\\",\\"10.992, 65\\",\\"0, 0\\",\\"ZO0438404384, ZO0405504055\\",76,76,2,2,order,robbie -ggMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Caldwell\\",\\"Fitzgerald Caldwell\\",MALE,11,Caldwell,Caldwell,\\"(empty)\\",Friday,4,\\"fitzgerald@caldwell-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562439,\\"sold_product_562439_18548, sold_product_562439_23459\\",\\"sold_product_562439_18548, sold_product_562439_23459\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"10.492, 18.141\\",\\"20.984, 33\\",\\"18,548, 23,459\\",\\"Shorts - multicoloured, Smart lace-ups - dark brown\\",\\"Shorts - multicoloured, Smart lace-ups - dark brown\\",\\"1, 1\\",\\"ZO0533105331, ZO0384703847\\",\\"0, 0\\",\\"20.984, 33\\",\\"20.984, 33\\",\\"0, 0\\",\\"ZO0533105331, ZO0384703847\\",\\"53.969\\",\\"53.969\\",2,2,order,fuzzy -gwMtOW0BH63Xcmy45Wy4,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Schultz\\",\\"Wilhemina St. Schultz\\",FEMALE,17,Schultz,Schultz,\\"(empty)\\",Friday,4,\\"wilhemina st.@schultz-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Pyramidustries, Gnomehouse\\",\\"Pyramidustries, Gnomehouse\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562165,\\"sold_product_562165_12949, sold_product_562165_23197\\",\\"sold_product_562165_12949, sold_product_562165_23197\\",\\"33, 60\\",\\"33, 60\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Gnomehouse\\",\\"Pyramidustries, Gnomehouse\\",\\"15.844, 28.203\\",\\"33, 60\\",\\"12,949, 23,197\\",\\"Summer jacket - dark blue, Maxi dress - eclipse\\",\\"Summer jacket - dark blue, Maxi dress - eclipse\\",\\"1, 1\\",\\"ZO0173701737, ZO0337903379\\",\\"0, 0\\",\\"33, 60\\",\\"33, 60\\",\\"0, 0\\",\\"ZO0173701737, ZO0337903379\\",93,93,2,2,order,wilhemina -2AMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jackson,Jackson,\\"Jackson Gibbs\\",\\"Jackson Gibbs\\",MALE,13,Gibbs,Gibbs,\\"(empty)\\",Friday,4,\\"jackson@gibbs-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Elitelligence, Spritechnologies, Angeldale\\",\\"Oceanavigations, Elitelligence, Spritechnologies, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",719343,\\"sold_product_719343_24169, sold_product_719343_18391, sold_product_719343_20707, sold_product_719343_21209\\",\\"sold_product_719343_24169, sold_product_719343_18391, sold_product_719343_20707, sold_product_719343_21209\\",\\"46, 24.984, 24.984, 65\\",\\"46, 24.984, 24.984, 65\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Oceanavigations, Elitelligence, Spritechnologies, Angeldale\\",\\"Oceanavigations, Elitelligence, Spritechnologies, Angeldale\\",\\"22.078, 12.492, 12.492, 31.203\\",\\"46, 24.984, 24.984, 65\\",\\"24,169, 18,391, 20,707, 21,209\\",\\"Jumper - navy, Tracksuit top - mottled grey, Tracksuit top - black, Boots - sand\\",\\"Jumper - navy, Tracksuit top - mottled grey, Tracksuit top - black, Boots - sand\\",\\"1, 1, 1, 1\\",\\"ZO0299002990, ZO0584005840, ZO0628406284, ZO0694306943\\",\\"0, 0, 0, 0\\",\\"46, 24.984, 24.984, 65\\",\\"46, 24.984, 24.984, 65\\",\\"0, 0, 0, 0\\",\\"ZO0299002990, ZO0584005840, ZO0628406284, ZO0694306943\\",161,161,4,4,order,jackson -2wMtOW0BH63Xcmy45mxS,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Abd,Abd,\\"Abd Gilbert\\",\\"Abd Gilbert\\",MALE,52,Gilbert,Gilbert,\\"(empty)\\",Friday,4,\\"abd@gilbert-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",718183,\\"sold_product_718183_23834, sold_product_718183_11105, sold_product_718183_22142, sold_product_718183_2361\\",\\"sold_product_718183_23834, sold_product_718183_11105, sold_product_718183_22142, sold_product_718183_2361\\",\\"7.988, 13.992, 24.984, 60\\",\\"7.988, 13.992, 24.984, 60\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Low Tide Media, Oceanavigations, Oceanavigations\\",\\"Low Tide Media, Low Tide Media, Oceanavigations, Oceanavigations\\",\\"4.07, 7.27, 11.5, 30\\",\\"7.988, 13.992, 24.984, 60\\",\\"23,834, 11,105, 22,142, 2,361\\",\\"3 PACK - Socks - blue/grey, 3 PACK - Shorts - black, Jeans Skinny Fit - petrol, Lace-up boots - dark brown\\",\\"3 PACK - Socks - blue/grey, 3 PACK - Shorts - black, Jeans Skinny Fit - petrol, Lace-up boots - dark brown\\",\\"1, 1, 1, 1\\",\\"ZO0481004810, ZO0476104761, ZO0284102841, ZO0256102561\\",\\"0, 0, 0, 0\\",\\"7.988, 13.992, 24.984, 60\\",\\"7.988, 13.992, 24.984, 60\\",\\"0, 0, 0, 0\\",\\"ZO0481004810, ZO0476104761, ZO0284102841, ZO0256102561\\",\\"106.938\\",\\"106.938\\",4,4,order,abd -wgMtOW0BH63Xcmy45m1S,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",EUR,Pia,Pia,\\"Pia Hayes\\",\\"Pia Hayes\\",FEMALE,45,Hayes,Hayes,\\"(empty)\\",Friday,4,\\"pia@hayes-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Pyramidustries, Angeldale\\",\\"Pyramidustries, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561215,\\"sold_product_561215_11054, sold_product_561215_25101\\",\\"sold_product_561215_11054, sold_product_561215_25101\\",\\"20.984, 85\\",\\"20.984, 85\\",\\"Women's Accessories, Women's Shoes\\",\\"Women's Accessories, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Angeldale\\",\\"Pyramidustries, Angeldale\\",\\"10.703, 44.188\\",\\"20.984, 85\\",\\"11,054, 25,101\\",\\"Tote bag - cognac/blue, Ankle boots - Blue Violety\\",\\"Tote bag - cognac/blue, Ankle boots - Blue Violety\\",\\"1, 1\\",\\"ZO0196401964, ZO0673906739\\",\\"0, 0\\",\\"20.984, 85\\",\\"20.984, 85\\",\\"0, 0\\",\\"ZO0196401964, ZO0673906739\\",106,106,2,2,order,pia -\\"_QMtOW0BH63Xcmy45m1S\\",\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Yasmine,Yasmine,\\"Yasmine Gibbs\\",\\"Yasmine Gibbs\\",FEMALE,43,Gibbs,Gibbs,\\"(empty)\\",Friday,4,\\"yasmine@gibbs-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",Pyramidustries,Pyramidustries,\\"Jun 20, 2019 @ 00:00:00.000\\",561377,\\"sold_product_561377_24916, sold_product_561377_22033\\",\\"sold_product_561377_24916, sold_product_561377_22033\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Pyramidustries\\",\\"Pyramidustries, Pyramidustries\\",\\"13.742, 21.406\\",\\"24.984, 42\\",\\"24,916, 22,033\\",\\"A-line skirt - blue denim, Summer jacket - bordeaux/black\\",\\"A-line skirt - blue denim, Summer jacket - bordeaux/black\\",\\"1, 1\\",\\"ZO0147901479, ZO0185401854\\",\\"0, 0\\",\\"24.984, 42\\",\\"24.984, 42\\",\\"0, 0\\",\\"ZO0147901479, ZO0185401854\\",67,67,2,2,order,yasmine -EwMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Romero\\",\\"Wilhemina St. Romero\\",FEMALE,17,Romero,Romero,\\"(empty)\\",Friday,4,\\"wilhemina st.@romero-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Pyramidustries, Tigress Enterprises, Spherecords\\",\\"Pyramidustries, Tigress Enterprises, Spherecords\\",\\"Jun 20, 2019 @ 00:00:00.000\\",726377,\\"sold_product_726377_16552, sold_product_726377_8806, sold_product_726377_14193, sold_product_726377_22412\\",\\"sold_product_726377_16552, sold_product_726377_8806, sold_product_726377_14193, sold_product_726377_22412\\",\\"14.992, 42, 20.984, 33\\",\\"14.992, 42, 20.984, 33\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Pyramidustries, Tigress Enterprises, Spherecords, Tigress Enterprises\\",\\"Pyramidustries, Tigress Enterprises, Spherecords, Tigress Enterprises\\",\\"6.898, 20.578, 11.117, 17.156\\",\\"14.992, 42, 20.984, 33\\",\\"16,552, 8,806, 14,193, 22,412\\",\\"Print T-shirt - black, Jumper - peacoat, Shift dress - dark blue, Jumper dress - black/grey\\",\\"Print T-shirt - black, Jumper - peacoat, Shift dress - dark blue, Jumper dress - black/grey\\",\\"1, 1, 1, 1\\",\\"ZO0167001670, ZO0070900709, ZO0636006360, ZO0051900519\\",\\"0, 0, 0, 0\\",\\"14.992, 42, 20.984, 33\\",\\"14.992, 42, 20.984, 33\\",\\"0, 0, 0, 0\\",\\"ZO0167001670, ZO0070900709, ZO0636006360, ZO0051900519\\",\\"110.938\\",\\"110.938\\",4,4,order,wilhemina -GgMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes, Women's Accessories\\",\\"Women's Clothing, Women's Shoes, Women's Accessories\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Gomez\\",\\"Rabbia Al Gomez\\",FEMALE,5,Gomez,Gomez,\\"(empty)\\",Friday,4,\\"rabbia al@gomez-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",730333,\\"sold_product_730333_18676, sold_product_730333_12860, sold_product_730333_15759, sold_product_730333_24348\\",\\"sold_product_730333_18676, sold_product_730333_12860, sold_product_730333_15759, sold_product_730333_24348\\",\\"28.984, 50, 30.984, 50\\",\\"28.984, 50, 30.984, 50\\",\\"Women's Clothing, Women's Shoes, Women's Accessories, Women's Clothing\\",\\"Women's Clothing, Women's Shoes, Women's Accessories, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises, Oceanavigations, Tigress Enterprises, Oceanavigations\\",\\"Tigress Enterprises, Oceanavigations, Tigress Enterprises, Oceanavigations\\",\\"13.633, 23, 15.492, 26.484\\",\\"28.984, 50, 30.984, 50\\",\\"18,676, 12,860, 15,759, 24,348\\",\\"Blouse - peach whip, Wedge sandals - gold, Rucksack - black, Summer dress - dark blue\\",\\"Blouse - peach whip, Wedge sandals - gold, Rucksack - black, Summer dress - dark blue\\",\\"1, 1, 1, 1\\",\\"ZO0065000650, ZO0241802418, ZO0098400984, ZO0262102621\\",\\"0, 0, 0, 0\\",\\"28.984, 50, 30.984, 50\\",\\"28.984, 50, 30.984, 50\\",\\"0, 0, 0, 0\\",\\"ZO0065000650, ZO0241802418, ZO0098400984, ZO0262102621\\",160,160,4,4,order,rabbia -agMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,\\"Ahmed Al\\",\\"Ahmed Al\\",\\"Ahmed Al Harvey\\",\\"Ahmed Al Harvey\\",MALE,4,Harvey,Harvey,\\"(empty)\\",Friday,4,\\"ahmed al@harvey-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",Microlutions,Microlutions,\\"Jun 20, 2019 @ 00:00:00.000\\",561542,\\"sold_product_561542_6512, sold_product_561542_17698\\",\\"sold_product_561542_6512, sold_product_561542_17698\\",\\"33, 75\\",\\"33, 75\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Microlutions\\",\\"Microlutions, Microlutions\\",\\"16.5, 37.5\\",\\"33, 75\\",\\"6,512, 17,698\\",\\"Jeans Tapered Fit - black denim, Faux leather jacket - black\\",\\"Jeans Tapered Fit - black denim, Faux leather jacket - black\\",\\"1, 1\\",\\"ZO0113701137, ZO0114201142\\",\\"0, 0\\",\\"33, 75\\",\\"33, 75\\",\\"0, 0\\",\\"ZO0113701137, ZO0114201142\\",108,108,2,2,order,ahmed -awMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Jackson,Jackson,\\"Jackson Pratt\\",\\"Jackson Pratt\\",MALE,13,Pratt,Pratt,\\"(empty)\\",Friday,4,\\"jackson@pratt-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561586,\\"sold_product_561586_13927, sold_product_561586_1557\\",\\"sold_product_561586_13927, sold_product_561586_1557\\",\\"42, 60\\",\\"42, 60\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Low Tide Media\\",\\"Elitelligence, Low Tide Media\\",\\"21.406, 31.188\\",\\"42, 60\\",\\"13,927, 1,557\\",\\"Bomber Jacket - khaki, Lace-up boots - brown\\",\\"Bomber Jacket - khaki, Lace-up boots - brown\\",\\"1, 1\\",\\"ZO0540605406, ZO0401104011\\",\\"0, 0\\",\\"42, 60\\",\\"42, 60\\",\\"0, 0\\",\\"ZO0540605406, ZO0401104011\\",102,102,2,2,order,jackson -bgMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Gwen,Gwen,\\"Gwen Mcdonald\\",\\"Gwen Mcdonald\\",FEMALE,26,Mcdonald,Mcdonald,\\"(empty)\\",Friday,4,\\"gwen@mcdonald-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561442,\\"sold_product_561442_7232, sold_product_561442_10893\\",\\"sold_product_561442_7232, sold_product_561442_10893\\",\\"33, 9.992\\",\\"33, 9.992\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"15.508, 4.699\\",\\"33, 9.992\\",\\"7,232, 10,893\\",\\"Winter boots - black, 2 PACK - Leggings - black\\",\\"Winter boots - black, 2 PACK - Leggings - black\\",\\"1, 1\\",\\"ZO0030900309, ZO0212302123\\",\\"0, 0\\",\\"33, 9.992\\",\\"33, 9.992\\",\\"0, 0\\",\\"ZO0030900309, ZO0212302123\\",\\"42.969\\",\\"42.969\\",2,2,order,gwen -bwMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Ahmed Al\\",\\"Ahmed Al\\",\\"Ahmed Al Hampton\\",\\"Ahmed Al Hampton\\",MALE,4,Hampton,Hampton,\\"(empty)\\",Friday,4,\\"ahmed al@hampton-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561484,\\"sold_product_561484_24353, sold_product_561484_18666\\",\\"sold_product_561484_24353, sold_product_561484_18666\\",\\"75, 14.992\\",\\"75, 14.992\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Elitelligence\\",\\"Low Tide Media, Elitelligence\\",\\"34.5, 7.199\\",\\"75, 14.992\\",\\"24,353, 18,666\\",\\"Lace-up boots - black/brown, Long sleeved top - white\\",\\"Lace-up boots - black/brown, Long sleeved top - white\\",\\"1, 1\\",\\"ZO0400304003, ZO0559405594\\",\\"0, 0\\",\\"75, 14.992\\",\\"75, 14.992\\",\\"0, 0\\",\\"ZO0400304003, ZO0559405594\\",90,90,2,2,order,ahmed -cAMtOW0BH63Xcmy45m5S,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Clarice,Clarice,\\"Clarice Smith\\",\\"Clarice Smith\\",FEMALE,18,Smith,Smith,\\"(empty)\\",Friday,4,\\"clarice@smith-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Gnomehouse mom, Pyramidustries\\",\\"Gnomehouse mom, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561325,\\"sold_product_561325_21224, sold_product_561325_11110\\",\\"sold_product_561325_21224, sold_product_561325_11110\\",\\"28.984, 28.984\\",\\"28.984, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse mom, Pyramidustries\\",\\"Gnomehouse mom, Pyramidustries\\",\\"14.781, 15.359\\",\\"28.984, 28.984\\",\\"21,224, 11,110\\",\\"Blouse - red, Tracksuit top - black\\",\\"Blouse - red, Tracksuit top - black\\",\\"1, 1\\",\\"ZO0234802348, ZO0178001780\\",\\"0, 0\\",\\"28.984, 28.984\\",\\"28.984, 28.984\\",\\"0, 0\\",\\"ZO0234802348, ZO0178001780\\",\\"57.969\\",\\"57.969\\",2,2,order,clarice -jgMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Abigail,Abigail,\\"Abigail Cross\\",\\"Abigail Cross\\",FEMALE,46,Cross,Cross,\\"(empty)\\",Friday,4,\\"abigail@cross-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Angeldale, Gnomehouse\\",\\"Angeldale, Gnomehouse\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562463,\\"sold_product_562463_16341, sold_product_562463_25127\\",\\"sold_product_562463_16341, sold_product_562463_25127\\",\\"65, 50\\",\\"65, 50\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Gnomehouse\\",\\"Angeldale, Gnomehouse\\",\\"29.906, 27.484\\",\\"65, 50\\",\\"16,341, 25,127\\",\\"Handbag - black, Maxi dress - red ochre\\",\\"Handbag - black, Maxi dress - red ochre\\",\\"1, 1\\",\\"ZO0700107001, ZO0341303413\\",\\"0, 0\\",\\"65, 50\\",\\"65, 50\\",\\"0, 0\\",\\"ZO0700107001, ZO0341303413\\",115,115,2,2,order,abigail -jwMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Selena,Selena,\\"Selena Hansen\\",\\"Selena Hansen\\",FEMALE,42,Hansen,Hansen,\\"(empty)\\",Friday,4,\\"selena@hansen-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",Spherecords,Spherecords,\\"Jun 20, 2019 @ 00:00:00.000\\",562513,\\"sold_product_562513_8078, sold_product_562513_9431\\",\\"sold_product_562513_8078, sold_product_562513_9431\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Spherecords\\",\\"Spherecords, Spherecords\\",\\"5.82, 12\\",\\"10.992, 24.984\\",\\"8,078, 9,431\\",\\"Long sleeved top - white, Pyjama set - grey/pink\\",\\"Long sleeved top - white, Pyjama set - grey/pink\\",\\"1, 1\\",\\"ZO0640906409, ZO0660206602\\",\\"0, 0\\",\\"10.992, 24.984\\",\\"10.992, 24.984\\",\\"0, 0\\",\\"ZO0640906409, ZO0660206602\\",\\"35.969\\",\\"35.969\\",2,2,order,selena -kAMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Estrada\\",\\"Abd Estrada\\",MALE,52,Estrada,Estrada,\\"(empty)\\",Friday,4,\\"abd@estrada-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562166,\\"sold_product_562166_16566, sold_product_562166_16701\\",\\"sold_product_562166_16566, sold_product_562166_16701\\",\\"75, 16.984\\",\\"75, 16.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"39, 7.988\\",\\"75, 16.984\\",\\"16,566, 16,701\\",\\"Boots - grey, 3 PACK - Basic T-shirt - white\\",\\"Boots - grey, 3 PACK - Basic T-shirt - white\\",\\"1, 1\\",\\"ZO0692406924, ZO0473504735\\",\\"0, 0\\",\\"75, 16.984\\",\\"75, 16.984\\",\\"0, 0\\",\\"ZO0692406924, ZO0473504735\\",92,92,2,2,order,abd -mgMtOW0BH63Xcmy4524Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Eddie,Eddie,\\"Eddie King\\",\\"Eddie King\\",MALE,38,King,King,\\"(empty)\\",Friday,4,\\"eddie@king-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Spherecords, Elitelligence, Oceanavigations\\",\\"Low Tide Media, Spherecords, Elitelligence, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",714021,\\"sold_product_714021_21164, sold_product_714021_13240, sold_product_714021_1704, sold_product_714021_15243\\",\\"sold_product_714021_21164, sold_product_714021_13240, sold_product_714021_1704, sold_product_714021_15243\\",\\"10.992, 7.988, 33, 65\\",\\"10.992, 7.988, 33, 65\\",\\"Men's Clothing, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Men's Clothing, Men's Clothing, Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Spherecords, Elitelligence, Oceanavigations\\",\\"Low Tide Media, Spherecords, Elitelligence, Oceanavigations\\",\\"5.93, 3.84, 15.508, 31.203\\",\\"10.992, 7.988, 33, 65\\",\\"21,164, 13,240, 1,704, 15,243\\",\\"Long sleeved top - dark blue, 5 PACK - Socks - black, High-top trainers - black, Trousers - bordeaux multicolor\\",\\"Long sleeved top - dark blue, 5 PACK - Socks - black, High-top trainers - black, Trousers - bordeaux multicolor\\",\\"1, 1, 1, 1\\",\\"ZO0436904369, ZO0664106641, ZO0514805148, ZO0283302833\\",\\"0, 0, 0, 0\\",\\"10.992, 7.988, 33, 65\\",\\"10.992, 7.988, 33, 65\\",\\"0, 0, 0, 0\\",\\"ZO0436904369, ZO0664106641, ZO0514805148, ZO0283302833\\",\\"116.938\\",\\"116.938\\",4,4,order,eddie -FgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Men's Shoes\\",\\"Women's Accessories, Men's Shoes\\",EUR,Frances,Frances,\\"Frances Butler\\",\\"Frances Butler\\",FEMALE,49,Butler,Butler,\\"(empty)\\",Friday,4,\\"frances@butler-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",Oceanavigations,Oceanavigations,\\"Jun 20, 2019 @ 00:00:00.000\\",562041,\\"sold_product_562041_17117, sold_product_562041_2398\\",\\"sold_product_562041_17117, sold_product_562041_2398\\",\\"110, 60\\",\\"110, 60\\",\\"Women's Accessories, Men's Shoes\\",\\"Women's Accessories, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"52.813, 29.406\\",\\"110, 60\\",\\"17,117, 2,398\\",\\"Weekend bag - cognac, Lace-ups - Midnight Blue\\",\\"Weekend bag - cognac, Lace-ups - Midnight Blue\\",\\"1, 1\\",\\"ZO0320303203, ZO0252802528\\",\\"0, 0\\",\\"110, 60\\",\\"110, 60\\",\\"0, 0\\",\\"ZO0320303203, ZO0252802528\\",170,170,2,2,order,frances -FwMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes\\",\\"Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Stewart\\",\\"Rabbia Al Stewart\\",FEMALE,5,Stewart,Stewart,\\"(empty)\\",Friday,4,\\"rabbia al@stewart-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562116,\\"sold_product_562116_5339, sold_product_562116_17619\\",\\"sold_product_562116_5339, sold_product_562116_17619\\",\\"75, 60\\",\\"75, 60\\",\\"Women's Shoes, Women's Shoes\\",\\"Women's Shoes, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Gnomehouse\\",\\"Oceanavigations, Gnomehouse\\",\\"38.25, 29.406\\",\\"75, 60\\",\\"5,339, 17,619\\",\\"Ankle boots - black, Lace-ups - silver\\",\\"Ankle boots - black, Lace-ups - silver\\",\\"1, 1\\",\\"ZO0247002470, ZO0322703227\\",\\"0, 0\\",\\"75, 60\\",\\"75, 60\\",\\"0, 0\\",\\"ZO0247002470, ZO0322703227\\",135,135,2,2,order,rabbia -GAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Women's Accessories\\",\\"Men's Shoes, Women's Accessories\\",EUR,Robert,Robert,\\"Robert Hart\\",\\"Robert Hart\\",MALE,29,Hart,Hart,\\"(empty)\\",Friday,4,\\"robert@hart-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562281,\\"sold_product_562281_17836, sold_product_562281_15582\\",\\"sold_product_562281_17836, sold_product_562281_15582\\",\\"85, 13.992\\",\\"85, 13.992\\",\\"Men's Shoes, Women's Accessories\\",\\"Men's Shoes, Women's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"42.5, 7.691\\",\\"85, 13.992\\",\\"17,836, 15,582\\",\\"Casual lace-ups - black, Belt - dark brown \\",\\"Casual lace-ups - black, Belt - dark brown \\",\\"1, 1\\",\\"ZO0683106831, ZO0317803178\\",\\"0, 0\\",\\"85, 13.992\\",\\"85, 13.992\\",\\"0, 0\\",\\"ZO0683106831, ZO0317803178\\",99,99,2,2,order,robert -IwMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",EUR,George,George,\\"George King\\",\\"George King\\",MALE,32,King,King,\\"(empty)\\",Friday,4,\\"george@king-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562442,\\"sold_product_562442_24776, sold_product_562442_20891\\",\\"sold_product_562442_24776, sold_product_562442_20891\\",\\"33, 7.988\\",\\"33, 7.988\\",\\"Men's Accessories, Men's Clothing\\",\\"Men's Accessories, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Elitelligence\\",\\"Microlutions, Elitelligence\\",\\"15.844, 4\\",\\"33, 7.988\\",\\"24,776, 20,891\\",\\"Watch - black, Basic T-shirt - khaki\\",\\"Watch - black, Basic T-shirt - khaki\\",\\"1, 1\\",\\"ZO0126901269, ZO0563705637\\",\\"0, 0\\",\\"33, 7.988\\",\\"33, 7.988\\",\\"0, 0\\",\\"ZO0126901269, ZO0563705637\\",\\"40.969\\",\\"40.969\\",2,2,order,george -JAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Fitzgerald,Fitzgerald,\\"Fitzgerald Brady\\",\\"Fitzgerald Brady\\",MALE,11,Brady,Brady,\\"(empty)\\",Friday,4,\\"fitzgerald@brady-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562149,\\"sold_product_562149_16955, sold_product_562149_6827\\",\\"sold_product_562149_16955, sold_product_562149_6827\\",\\"200, 33\\",\\"200, 33\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"92, 17.156\\",\\"200, 33\\",\\"16,955, 6,827\\",\\"Classic coat - navy, Denim jacket - black denim\\",\\"Classic coat - navy, Denim jacket - black denim\\",\\"1, 1\\",\\"ZO0291402914, ZO0539305393\\",\\"0, 0\\",\\"200, 33\\",\\"200, 33\\",\\"0, 0\\",\\"ZO0291402914, ZO0539305393\\",233,233,2,2,order,fuzzy -JgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,George,George,\\"George Haynes\\",\\"George Haynes\\",MALE,32,Haynes,Haynes,\\"(empty)\\",Friday,4,\\"george@haynes-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,Elitelligence,Elitelligence,\\"Jun 20, 2019 @ 00:00:00.000\\",562553,\\"sold_product_562553_15384, sold_product_562553_11950\\",\\"sold_product_562553_15384, sold_product_562553_11950\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"17.156, 5.391\\",\\"33, 10.992\\",\\"15,384, 11,950\\",\\"Denim jacket - grey, Seratonin - Long sleeved top - dark blue\\",\\"Denim jacket - grey, Seratonin - Long sleeved top - dark blue\\",\\"1, 1\\",\\"ZO0525005250, ZO0547205472\\",\\"0, 0\\",\\"33, 10.992\\",\\"33, 10.992\\",\\"0, 0\\",\\"ZO0525005250, ZO0547205472\\",\\"43.969\\",\\"43.969\\",2,2,order,george -bAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Hicham,Hicham,\\"Hicham Bradley\\",\\"Hicham Bradley\\",MALE,8,Bradley,Bradley,\\"(empty)\\",Friday,4,\\"hicham@bradley-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561677,\\"sold_product_561677_13662, sold_product_561677_20832\\",\\"sold_product_561677_13662, sold_product_561677_20832\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"9.656, 14.781\\",\\"20.984, 28.984\\",\\"13,662, 20,832\\",\\"Tracksuit bottoms - dark blue, Sweatshirt - black\\",\\"Tracksuit bottoms - dark blue, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0525605256, ZO0126001260\\",\\"0, 0\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"0, 0\\",\\"ZO0525605256, ZO0126001260\\",\\"49.969\\",\\"49.969\\",2,2,order,hicham -bQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Ramsey\\",\\"Abd Ramsey\\",MALE,52,Ramsey,Ramsey,\\"(empty)\\",Friday,4,\\"abd@ramsey-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561217,\\"sold_product_561217_17853, sold_product_561217_20690\\",\\"sold_product_561217_17853, sold_product_561217_20690\\",\\"24.984, 33\\",\\"24.984, 33\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Microlutions\\",\\"Low Tide Media, Microlutions\\",\\"11.25, 18.141\\",\\"24.984, 33\\",\\"17,853, 20,690\\",\\"Shirt - white blue, Sweatshirt - black\\",\\"Shirt - white blue, Sweatshirt - black\\",\\"1, 1\\",\\"ZO0417904179, ZO0125501255\\",\\"0, 0\\",\\"24.984, 33\\",\\"24.984, 33\\",\\"0, 0\\",\\"ZO0417904179, ZO0125501255\\",\\"57.969\\",\\"57.969\\",2,2,order,abd -bgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Tyler\\",\\"Rabbia Al Tyler\\",FEMALE,5,Tyler,Tyler,\\"(empty)\\",Friday,4,\\"rabbia al@tyler-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Champion Arts, Oceanavigations\\",\\"Champion Arts, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561251,\\"sold_product_561251_23966, sold_product_561251_18479\\",\\"sold_product_561251_23966, sold_product_561251_18479\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Champion Arts, Oceanavigations\\",\\"Champion Arts, Oceanavigations\\",\\"13.492, 29.906\\",\\"24.984, 65\\",\\"23,966, 18,479\\",\\"Sweatshirt - grey/off-white, Ankle boots - black\\",\\"Sweatshirt - grey/off-white, Ankle boots - black\\",\\"1, 1\\",\\"ZO0502905029, ZO0249102491\\",\\"0, 0\\",\\"24.984, 65\\",\\"24.984, 65\\",\\"0, 0\\",\\"ZO0502905029, ZO0249102491\\",90,90,2,2,order,rabbia -bwMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Muniz,Muniz,\\"Muniz Pope\\",\\"Muniz Pope\\",MALE,37,Pope,Pope,\\"(empty)\\",Friday,4,\\"muniz@pope-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561291,\\"sold_product_561291_11706, sold_product_561291_1176\\",\\"sold_product_561291_11706, sold_product_561291_1176\\",\\"100, 42\\",\\"100, 42\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Low Tide Media\\",\\"Angeldale, Low Tide Media\\",\\"49, 21.828\\",\\"100, 42\\",\\"11,706, 1,176\\",\\"Weekend bag - dark brown, Trainers - black\\",\\"Weekend bag - dark brown, Trainers - black\\",\\"1, 1\\",\\"ZO0701907019, ZO0395203952\\",\\"0, 0\\",\\"100, 42\\",\\"100, 42\\",\\"0, 0\\",\\"ZO0701907019, ZO0395203952\\",142,142,2,2,order,muniz -cAMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Boris,Boris,\\"Boris Morris\\",\\"Boris Morris\\",MALE,36,Morris,Morris,\\"(empty)\\",Friday,4,\\"boris@morris-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561316,\\"sold_product_561316_18944, sold_product_561316_6709\\",\\"sold_product_561316_18944, sold_product_561316_6709\\",\\"24.984, 90\\",\\"24.984, 90\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"11.5, 45\\",\\"24.984, 90\\",\\"18,944, 6,709\\",\\"Shirt - white, Classic coat - navy\\",\\"Shirt - white, Classic coat - navy\\",\\"1, 1\\",\\"ZO0524305243, ZO0290702907\\",\\"0, 0\\",\\"24.984, 90\\",\\"24.984, 90\\",\\"0, 0\\",\\"ZO0524305243, ZO0290702907\\",115,115,2,2,order,boris -cQMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Lewis\\",\\"Wilhemina St. Lewis\\",FEMALE,17,Lewis,Lewis,\\"(empty)\\",Friday,4,\\"wilhemina st.@lewis-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Tigress Enterprises Curvy, Tigress Enterprises\\",\\"Tigress Enterprises Curvy, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561769,\\"sold_product_561769_18758, sold_product_561769_12114\\",\\"sold_product_561769_18758, sold_product_561769_12114\\",\\"33, 29.984\\",\\"33, 29.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises Curvy, Tigress Enterprises\\",\\"Tigress Enterprises Curvy, Tigress Enterprises\\",\\"14.852, 16.188\\",\\"33, 29.984\\",\\"18,758, 12,114\\",\\"Cardigan - sand multicolor/black, Jersey dress - black/white\\",\\"Cardigan - sand multicolor/black, Jersey dress - black/white\\",\\"1, 1\\",\\"ZO0106601066, ZO0038300383\\",\\"0, 0\\",\\"33, 29.984\\",\\"33, 29.984\\",\\"0, 0\\",\\"ZO0106601066, ZO0038300383\\",\\"62.969\\",\\"62.969\\",2,2,order,wilhemina -cgMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Clarice,Clarice,\\"Clarice Adams\\",\\"Clarice Adams\\",FEMALE,18,Adams,Adams,\\"(empty)\\",Friday,4,\\"clarice@adams-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561784,\\"sold_product_561784_19114, sold_product_561784_21141\\",\\"sold_product_561784_19114, sold_product_561784_21141\\",\\"7.988, 21.984\\",\\"7.988, 21.984\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Pyramidustries\\",\\"Spherecords, Pyramidustries\\",\\"4.309, 11.867\\",\\"7.988, 21.984\\",\\"19,114, 21,141\\",\\"Top - black/white, Xanadu - Across body bag - black\\",\\"Top - black/white, Xanadu - Across body bag - black\\",\\"1, 1\\",\\"ZO0644306443, ZO0205102051\\",\\"0, 0\\",\\"7.988, 21.984\\",\\"7.988, 21.984\\",\\"0, 0\\",\\"ZO0644306443, ZO0205102051\\",\\"29.984\\",\\"29.984\\",2,2,order,clarice -cwMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Carr\\",\\"Elyssa Carr\\",FEMALE,27,Carr,Carr,\\"(empty)\\",Friday,4,\\"elyssa@carr-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561815,\\"sold_product_561815_20116, sold_product_561815_24086\\",\\"sold_product_561815_20116, sold_product_561815_24086\\",\\"33, 21.984\\",\\"33, 21.984\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"Tigress Enterprises, Tigress Enterprises MAMA\\",\\"15.844, 11.43\\",\\"33, 21.984\\",\\"20,116, 24,086\\",\\"Handbag - Blue Violety, Long sleeved top - peacoat\\",\\"Handbag - Blue Violety, Long sleeved top - peacoat\\",\\"1, 1\\",\\"ZO0091100911, ZO0231102311\\",\\"0, 0\\",\\"33, 21.984\\",\\"33, 21.984\\",\\"0, 0\\",\\"ZO0091100911, ZO0231102311\\",\\"54.969\\",\\"54.969\\",2,2,order,elyssa -ngMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Mclaughlin\\",\\"Rabbia Al Mclaughlin\\",FEMALE,5,Mclaughlin,Mclaughlin,\\"(empty)\\",Friday,4,\\"rabbia al@mclaughlin-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Spherecords, Oceanavigations, Tigress Enterprises, Champion Arts\\",\\"Spherecords, Oceanavigations, Tigress Enterprises, Champion Arts\\",\\"Jun 20, 2019 @ 00:00:00.000\\",724573,\\"sold_product_724573_12483, sold_product_724573_21459, sold_product_724573_9400, sold_product_724573_16900\\",\\"sold_product_724573_12483, sold_product_724573_21459, sold_product_724573_9400, sold_product_724573_16900\\",\\"24.984, 42, 24.984, 24.984\\",\\"24.984, 42, 24.984, 24.984\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Spherecords, Oceanavigations, Tigress Enterprises, Champion Arts\\",\\"Spherecords, Oceanavigations, Tigress Enterprises, Champion Arts\\",\\"12.742, 21.828, 12.992, 13.742\\",\\"24.984, 42, 24.984, 24.984\\",\\"12,483, 21,459, 9,400, 16,900\\",\\"Jumper - beige multicolor, Summer dress - black, Jersey dress - navy, Jersey dress - black/white\\",\\"Jumper - beige multicolor, Summer dress - black, Jersey dress - navy, Jersey dress - black/white\\",\\"1, 1, 1, 1\\",\\"ZO0653306533, ZO0261702617, ZO0036800368, ZO0490704907\\",\\"0, 0, 0, 0\\",\\"24.984, 42, 24.984, 24.984\\",\\"24.984, 42, 24.984, 24.984\\",\\"0, 0, 0, 0\\",\\"ZO0653306533, ZO0261702617, ZO0036800368, ZO0490704907\\",\\"116.938\\",\\"116.938\\",4,4,order,rabbia -zwMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Hernandez\\",\\"Wilhemina St. Hernandez\\",FEMALE,17,Hernandez,Hernandez,\\"(empty)\\",Friday,4,\\"wilhemina st.@hernandez-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561937,\\"sold_product_561937_23134, sold_product_561937_14750\\",\\"sold_product_561937_23134, sold_product_561937_14750\\",\\"7.988, 50\\",\\"7.988, 50\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Low Tide Media\\",\\"Spherecords, Low Tide Media\\",\\"3.68, 26.984\\",\\"7.988, 50\\",\\"23,134, 14,750\\",\\"Basic T-shirt - dark grey multicolor, High heeled sandals - pink\\",\\"Basic T-shirt - dark grey multicolor, High heeled sandals - pink\\",\\"1, 1\\",\\"ZO0638606386, ZO0371503715\\",\\"0, 0\\",\\"7.988, 50\\",\\"7.988, 50\\",\\"0, 0\\",\\"ZO0638606386, ZO0371503715\\",\\"57.969\\",\\"57.969\\",2,2,order,wilhemina -0AMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Youssef,Youssef,\\"Youssef Bryan\\",\\"Youssef Bryan\\",MALE,31,Bryan,Bryan,\\"(empty)\\",Friday,4,\\"youssef@bryan-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561966,\\"sold_product_561966_23691, sold_product_561966_20112\\",\\"sold_product_561966_23691, sold_product_561966_20112\\",\\"28.984, 25.984\\",\\"28.984, 25.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Microlutions, Low Tide Media\\",\\"Microlutions, Low Tide Media\\",\\"13.922, 12.477\\",\\"28.984, 25.984\\",\\"23,691, 20,112\\",\\"Sweatshirt - black, Shirt - blue\\",\\"Sweatshirt - black, Shirt - blue\\",\\"1, 1\\",\\"ZO0124201242, ZO0413604136\\",\\"0, 0\\",\\"28.984, 25.984\\",\\"28.984, 25.984\\",\\"0, 0\\",\\"ZO0124201242, ZO0413604136\\",\\"54.969\\",\\"54.969\\",2,2,order,youssef -0QMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Stephanie,Stephanie,\\"Stephanie Cortez\\",\\"Stephanie Cortez\\",FEMALE,6,Cortez,Cortez,\\"(empty)\\",Friday,4,\\"stephanie@cortez-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Pyramidustries, Gnomehouse\\",\\"Pyramidustries, Gnomehouse\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561522,\\"sold_product_561522_15509, sold_product_561522_16044\\",\\"sold_product_561522_15509, sold_product_561522_16044\\",\\"11.992, 50\\",\\"11.992, 50\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Pyramidustries, Gnomehouse\\",\\"Pyramidustries, Gnomehouse\\",\\"6.469, 25\\",\\"11.992, 50\\",\\"15,509, 16,044\\",\\"Scarf - grey, Summer dress - navy blazer\\",\\"Scarf - grey, Summer dress - navy blazer\\",\\"1, 1\\",\\"ZO0194601946, ZO0340403404\\",\\"0, 0\\",\\"11.992, 50\\",\\"11.992, 50\\",\\"0, 0\\",\\"ZO0194601946, ZO0340403404\\",\\"61.969\\",\\"61.969\\",2,2,order,stephanie -7wMtOW0BH63Xcmy4528Z,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,Abd,Abd,\\"Abd Gregory\\",\\"Abd Gregory\\",MALE,52,Gregory,Gregory,\\"(empty)\\",Friday,4,\\"abd@gregory-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561330,\\"sold_product_561330_18701, sold_product_561330_11884\\",\\"sold_product_561330_18701, sold_product_561330_11884\\",\\"65, 22.984\\",\\"65, 22.984\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Angeldale, Oceanavigations\\",\\"Angeldale, Oceanavigations\\",\\"34.438, 10.578\\",\\"65, 22.984\\",\\"18,701, 11,884\\",\\"Lace-up boots - taupe, Jumper - navy\\",\\"Lace-up boots - taupe, Jumper - navy\\",\\"1, 1\\",\\"ZO0691106911, ZO0295902959\\",\\"0, 0\\",\\"65, 22.984\\",\\"65, 22.984\\",\\"0, 0\\",\\"ZO0691106911, ZO0295902959\\",88,88,2,2,order,abd -gwMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing, Women's Accessories\\",\\"Women's Shoes, Women's Clothing, Women's Accessories\\",EUR,\\"Wilhemina St.\\",\\"Wilhemina St.\\",\\"Wilhemina St. Jimenez\\",\\"Wilhemina St. Jimenez\\",FEMALE,17,Jimenez,Jimenez,\\"(empty)\\",Friday,4,\\"wilhemina st.@jimenez-family.zzz\\",\\"Monte Carlo\\",Europe,MC,\\"POINT (7.4 43.7)\\",\\"-\\",\\"Tigress Enterprises, Spherecords\\",\\"Tigress Enterprises, Spherecords\\",\\"Jun 20, 2019 @ 00:00:00.000\\",726879,\\"sold_product_726879_7151, sold_product_726879_13075, sold_product_726879_13564, sold_product_726879_15989\\",\\"sold_product_726879_7151, sold_product_726879_13075, sold_product_726879_13564, sold_product_726879_15989\\",\\"42, 10.992, 16.984, 28.984\\",\\"42, 10.992, 16.984, 28.984\\",\\"Women's Shoes, Women's Clothing, Women's Accessories, Women's Clothing\\",\\"Women's Shoes, Women's Clothing, Women's Accessories, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises, Spherecords, Tigress Enterprises, Tigress Enterprises\\",\\"Tigress Enterprises, Spherecords, Tigress Enterprises, Tigress Enterprises\\",\\"22.25, 5.82, 9.344, 13.633\\",\\"42, 10.992, 16.984, 28.984\\",\\"7,151, 13,075, 13,564, 15,989\\",\\"Ankle boots - black, Body - black, Clutch - black, A-line skirt - blue\\",\\"Ankle boots - black, Body - black, Clutch - black, A-line skirt - blue\\",\\"1, 1, 1, 1\\",\\"ZO0020100201, ZO0659406594, ZO0087900879, ZO0032700327\\",\\"0, 0, 0, 0\\",\\"42, 10.992, 16.984, 28.984\\",\\"42, 10.992, 16.984, 28.984\\",\\"0, 0, 0, 0\\",\\"ZO0020100201, ZO0659406594, ZO0087900879, ZO0032700327\\",\\"98.938\\",\\"98.938\\",4,4,order,wilhemina -hAMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Women's Clothing\\",\\"Women's Accessories, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Abbott\\",\\"Elyssa Abbott\\",FEMALE,27,Abbott,Abbott,\\"(empty)\\",Friday,4,\\"elyssa@abbott-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Tigress Enterprises, Oceanavigations, Champion Arts\\",\\"Tigress Enterprises, Oceanavigations, Champion Arts\\",\\"Jun 20, 2019 @ 00:00:00.000\\",725944,\\"sold_product_725944_16292, sold_product_725944_18842, sold_product_725944_25188, sold_product_725944_15449\\",\\"sold_product_725944_16292, sold_product_725944_18842, sold_product_725944_25188, sold_product_725944_15449\\",\\"24.984, 16.984, 28.984, 10.992\\",\\"24.984, 16.984, 28.984, 10.992\\",\\"Women's Accessories, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Women's Accessories, Women's Clothing, Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Tigress Enterprises, Oceanavigations, Tigress Enterprises, Champion Arts\\",\\"Tigress Enterprises, Oceanavigations, Tigress Enterprises, Champion Arts\\",\\"11.25, 8.156, 15.648, 5.281\\",\\"24.984, 16.984, 28.984, 10.992\\",\\"16,292, 18,842, 25,188, 15,449\\",\\"Watch - rose gold-coloured, Print T-shirt - black, Blouse - peacoat, Print T-shirt - coral\\",\\"Watch - rose gold-coloured, Print T-shirt - black, Blouse - peacoat, Print T-shirt - coral\\",\\"1, 1, 1, 1\\",\\"ZO0079200792, ZO0263902639, ZO0065900659, ZO0492304923\\",\\"0, 0, 0, 0\\",\\"24.984, 16.984, 28.984, 10.992\\",\\"24.984, 16.984, 28.984, 10.992\\",\\"0, 0, 0, 0\\",\\"ZO0079200792, ZO0263902639, ZO0065900659, ZO0492304923\\",\\"81.938\\",\\"81.938\\",4,4,order,elyssa -jAMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Elyssa,Elyssa,\\"Elyssa Dennis\\",\\"Elyssa Dennis\\",FEMALE,27,Dennis,Dennis,\\"(empty)\\",Friday,4,\\"elyssa@dennis-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Spherecords, Oceanavigations\\",\\"Spherecords, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562572,\\"sold_product_562572_13412, sold_product_562572_19097\\",\\"sold_product_562572_13412, sold_product_562572_19097\\",\\"13.992, 60\\",\\"13.992, 60\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Spherecords, Oceanavigations\\",\\"Spherecords, Oceanavigations\\",\\"7.551, 29.406\\",\\"13.992, 60\\",\\"13,412, 19,097\\",\\"Blouse - off white, Ankle boots - camel\\",\\"Blouse - off white, Ankle boots - camel\\",\\"1, 1\\",\\"ZO0649706497, ZO0249202492\\",\\"0, 0\\",\\"13.992, 60\\",\\"13.992, 60\\",\\"0, 0\\",\\"ZO0649706497, ZO0249202492\\",74,74,2,2,order,elyssa -nAMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",EUR,Stephanie,Stephanie,\\"Stephanie Marshall\\",\\"Stephanie Marshall\\",FEMALE,6,Marshall,Marshall,\\"(empty)\\",Friday,4,\\"stephanie@marshall-family.zzz\\",Cannes,Europe,FR,\\"POINT (7 43.6)\\",\\"Alpes-Maritimes\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562035,\\"sold_product_562035_9471, sold_product_562035_21453\\",\\"sold_product_562035_9471, sold_product_562035_21453\\",\\"42, 13.992\\",\\"42, 13.992\\",\\"Women's Clothing, Women's Accessories\\",\\"Women's Clothing, Women's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Gnomehouse, Pyramidustries\\",\\"Gnomehouse, Pyramidustries\\",\\"22.672, 7\\",\\"42, 13.992\\",\\"9,471, 21,453\\",\\"Summer dress - black/june bug, Handbag - black\\",\\"Summer dress - black/june bug, Handbag - black\\",\\"1, 1\\",\\"ZO0334403344, ZO0205002050\\",\\"0, 0\\",\\"42, 13.992\\",\\"42, 13.992\\",\\"0, 0\\",\\"ZO0334403344, ZO0205002050\\",\\"55.969\\",\\"55.969\\",2,2,order,stephanie -nQMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robbie,Robbie,\\"Robbie Hodges\\",\\"Robbie Hodges\\",MALE,48,Hodges,Hodges,\\"(empty)\\",Friday,4,\\"robbie@hodges-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,Elitelligence,Elitelligence,\\"Jun 20, 2019 @ 00:00:00.000\\",562112,\\"sold_product_562112_6789, sold_product_562112_20433\\",\\"sold_product_562112_6789, sold_product_562112_20433\\",\\"20.984, 10.992\\",\\"20.984, 10.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Elitelligence\\",\\"Elitelligence, Elitelligence\\",\\"10.703, 5.82\\",\\"20.984, 10.992\\",\\"6,789, 20,433\\",\\"Chinos - blue, Long sleeved top - black/white\\",\\"Chinos - blue, Long sleeved top - black/white\\",\\"1, 1\\",\\"ZO0527405274, ZO0547005470\\",\\"0, 0\\",\\"20.984, 10.992\\",\\"20.984, 10.992\\",\\"0, 0\\",\\"ZO0527405274, ZO0547005470\\",\\"31.984\\",\\"31.984\\",2,2,order,robbie -ngMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,Clarice,Clarice,\\"Clarice Ball\\",\\"Clarice Ball\\",FEMALE,18,Ball,Ball,\\"(empty)\\",Friday,4,\\"clarice@ball-family.zzz\\",Birmingham,Europe,GB,\\"POINT (-1.9 52.5)\\",Birmingham,\\"Tigress Enterprises Curvy, Karmanite\\",\\"Tigress Enterprises Curvy, Karmanite\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562275,\\"sold_product_562275_19153, sold_product_562275_12720\\",\\"sold_product_562275_19153, sold_product_562275_12720\\",\\"29.984, 70\\",\\"29.984, 70\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises Curvy, Karmanite\\",\\"Tigress Enterprises Curvy, Karmanite\\",\\"14.992, 37.094\\",\\"29.984, 70\\",\\"19,153, 12,720\\",\\"Cardigan - jade, Sandals - black\\",\\"Cardigan - jade, Sandals - black\\",\\"1, 1\\",\\"ZO0106301063, ZO0703507035\\",\\"0, 0\\",\\"29.984, 70\\",\\"29.984, 70\\",\\"0, 0\\",\\"ZO0106301063, ZO0703507035\\",100,100,2,2,order,clarice -nwMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Mostafa,Mostafa,\\"Mostafa Greer\\",\\"Mostafa Greer\\",MALE,9,Greer,Greer,\\"(empty)\\",Friday,4,\\"mostafa@greer-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562287,\\"sold_product_562287_3022, sold_product_562287_23056\\",\\"sold_product_562287_3022, sold_product_562287_23056\\",\\"16.984, 60\\",\\"16.984, 60\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"9.172, 28.797\\",\\"16.984, 60\\",\\"3,022, 23,056\\",\\"3 PACK - Basic T-shirt - white, Suit jacket - grey multicolor\\",\\"3 PACK - Basic T-shirt - white, Suit jacket - grey multicolor\\",\\"1, 1\\",\\"ZO0473104731, ZO0274302743\\",\\"0, 0\\",\\"16.984, 60\\",\\"16.984, 60\\",\\"0, 0\\",\\"ZO0473104731, ZO0274302743\\",77,77,2,2,order,mostafa -rgMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Tariq,Tariq,\\"Tariq Schultz\\",\\"Tariq Schultz\\",MALE,25,Schultz,Schultz,\\"(empty)\\",Friday,4,\\"tariq@schultz-family.zzz\\",Istanbul,Asia,TR,\\"POINT (29 41)\\",Istanbul,\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562404,\\"sold_product_562404_19679, sold_product_562404_22477\\",\\"sold_product_562404_19679, sold_product_562404_22477\\",\\"28.984, 22.984\\",\\"28.984, 22.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Oceanavigations\\",\\"Elitelligence, Oceanavigations\\",\\"15.648, 12.18\\",\\"28.984, 22.984\\",\\"19,679, 22,477\\",\\"Hoodie - black/dark blue/white, Jumper - khaki\\",\\"Hoodie - black/dark blue/white, Jumper - khaki\\",\\"1, 1\\",\\"ZO0584205842, ZO0299102991\\",\\"0, 0\\",\\"28.984, 22.984\\",\\"28.984, 22.984\\",\\"0, 0\\",\\"ZO0584205842, ZO0299102991\\",\\"51.969\\",\\"51.969\\",2,2,order,tariq -1QMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",EUR,Hicham,Hicham,\\"Hicham Abbott\\",\\"Hicham Abbott\\",MALE,8,Abbott,Abbott,\\"(empty)\\",Friday,4,\\"hicham@abbott-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562099,\\"sold_product_562099_18906, sold_product_562099_21672\\",\\"sold_product_562099_18906, sold_product_562099_21672\\",\\"13.992, 16.984\\",\\"13.992, 16.984\\",\\"Women's Accessories, Men's Clothing\\",\\"Women's Accessories, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Low Tide Media\\",\\"Oceanavigations, Low Tide Media\\",\\"6.578, 9\\",\\"13.992, 16.984\\",\\"18,906, 21,672\\",\\"Belt - black, Polo shirt - black multicolor\\",\\"Belt - black, Polo shirt - black multicolor\\",\\"1, 1\\",\\"ZO0317903179, ZO0443904439\\",\\"0, 0\\",\\"13.992, 16.984\\",\\"13.992, 16.984\\",\\"0, 0\\",\\"ZO0317903179, ZO0443904439\\",\\"30.984\\",\\"30.984\\",2,2,order,hicham -1gMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Boris,Boris,\\"Boris Morrison\\",\\"Boris Morrison\\",MALE,36,Morrison,Morrison,\\"(empty)\\",Friday,4,\\"boris@morrison-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562298,\\"sold_product_562298_22860, sold_product_562298_11728\\",\\"sold_product_562298_22860, sold_product_562298_11728\\",\\"24.984, 18.984\\",\\"24.984, 18.984\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Elitelligence\\",\\"Oceanavigations, Elitelligence\\",\\"11.5, 8.547\\",\\"24.984, 18.984\\",\\"22,860, 11,728\\",\\"Shirt - offwhite, Sweatshirt - red\\",\\"Shirt - offwhite, Sweatshirt - red\\",\\"1, 1\\",\\"ZO0280002800, ZO0583105831\\",\\"0, 0\\",\\"24.984, 18.984\\",\\"24.984, 18.984\\",\\"0, 0\\",\\"ZO0280002800, ZO0583105831\\",\\"43.969\\",\\"43.969\\",2,2,order,boris -3QMtOW0BH63Xcmy453D9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Oliver,Oliver,\\"Oliver Rios\\",\\"Oliver Rios\\",MALE,7,Rios,Rios,\\"(empty)\\",Friday,4,\\"oliver@rios-family.zzz\\",\\"-\\",Europe,GB,\\"POINT (-0.1 51.5)\\",\\"-\\",\\"Elitelligence, Angeldale\\",\\"Elitelligence, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",562025,\\"sold_product_562025_18322, sold_product_562025_1687\\",\\"sold_product_562025_18322, sold_product_562025_1687\\",\\"14.992, 80\\",\\"14.992, 80\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Elitelligence, Angeldale\\",\\"Elitelligence, Angeldale\\",\\"7.352, 43.188\\",\\"14.992, 80\\",\\"18,322, 1,687\\",\\"Print T-shirt - grey, Lace-ups - whisky\\",\\"Print T-shirt - grey, Lace-ups - whisky\\",\\"1, 1\\",\\"ZO0558205582, ZO0682406824\\",\\"0, 0\\",\\"14.992, 80\\",\\"14.992, 80\\",\\"0, 0\\",\\"ZO0558205582, ZO0682406824\\",95,95,2,2,order,oliver -hAMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing, Women's Shoes\\",\\"Women's Clothing, Women's Shoes\\",EUR,\\"Rabbia Al\\",\\"Rabbia Al\\",\\"Rabbia Al Palmer\\",\\"Rabbia Al Palmer\\",FEMALE,5,Palmer,Palmer,\\"(empty)\\",Friday,4,\\"rabbia al@palmer-family.zzz\\",Dubai,Asia,AE,\\"POINT (55.3 25.3)\\",Dubai,\\"Spherecords, Pyramidustries, Tigress Enterprises\\",\\"Spherecords, Pyramidustries, Tigress Enterprises\\",\\"Jun 20, 2019 @ 00:00:00.000\\",732071,\\"sold_product_732071_23772, sold_product_732071_22922, sold_product_732071_24589, sold_product_732071_24761\\",\\"sold_product_732071_23772, sold_product_732071_22922, sold_product_732071_24589, sold_product_732071_24761\\",\\"18.984, 33, 24.984, 20.984\\",\\"18.984, 33, 24.984, 20.984\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Women's Clothing, Women's Clothing, Women's Shoes, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Spherecords, Pyramidustries, Tigress Enterprises, Tigress Enterprises\\",\\"Spherecords, Pyramidustries, Tigress Enterprises, Tigress Enterprises\\",\\"10.25, 15.508, 13.492, 10.289\\",\\"18.984, 33, 24.984, 20.984\\",\\"23,772, 22,922, 24,589, 24,761\\",\\"Jumper - turquoise, Jersey dress - dark red, Boots - black, Vest - black\\",\\"Jumper - turquoise, Jersey dress - dark red, Boots - black, Vest - black\\",\\"1, 1, 1, 1\\",\\"ZO0655406554, ZO0154001540, ZO0030300303, ZO0061100611\\",\\"0, 0, 0, 0\\",\\"18.984, 33, 24.984, 20.984\\",\\"18.984, 33, 24.984, 20.984\\",\\"0, 0, 0, 0\\",\\"ZO0655406554, ZO0154001540, ZO0030300303, ZO0061100611\\",\\"97.938\\",\\"97.938\\",4,4,order,rabbia -kQMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",EUR,Yahya,Yahya,\\"Yahya King\\",\\"Yahya King\\",MALE,23,King,King,\\"(empty)\\",Friday,4,\\"yahya@king-family.zzz\\",Marrakesh,Africa,MA,\\"POINT (-8 31.6)\\",\\"Marrakech-Tensift-Al Haouz\\",\\"Low Tide Media, (empty)\\",\\"Low Tide Media, (empty)\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561383,\\"sold_product_561383_15806, sold_product_561383_12605\\",\\"sold_product_561383_15806, sold_product_561383_12605\\",\\"13.992, 155\\",\\"13.992, 155\\",\\"Men's Accessories, Men's Shoes\\",\\"Men's Accessories, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, (empty)\\",\\"Low Tide Media, (empty)\\",\\"7.27, 82.125\\",\\"13.992, 155\\",\\"15,806, 12,605\\",\\"Belt - dark brown, Lace-ups - taupe\\",\\"Belt - dark brown, Lace-ups - taupe\\",\\"1, 1\\",\\"ZO0461804618, ZO0481404814\\",\\"0, 0\\",\\"13.992, 155\\",\\"13.992, 155\\",\\"0, 0\\",\\"ZO0461804618, ZO0481404814\\",169,169,2,2,order,yahya -kgMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Sonya,Sonya,\\"Sonya Strickland\\",\\"Sonya Strickland\\",FEMALE,28,Strickland,Strickland,\\"(empty)\\",Friday,4,\\"sonya@strickland-family.zzz\\",Bogotu00e1,\\"South America\\",CO,\\"POINT (-74.1 4.6)\\",\\"Bogota D.C.\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561825,\\"sold_product_561825_23332, sold_product_561825_8218\\",\\"sold_product_561825_23332, sold_product_561825_8218\\",\\"18.984, 17.984\\",\\"18.984, 17.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Tigress Enterprises, Pyramidustries\\",\\"Tigress Enterprises, Pyramidustries\\",\\"9.117, 9.531\\",\\"18.984, 17.984\\",\\"23,332, 8,218\\",\\"Vest - black/dark green, Sweatshirt - rose\\",\\"Vest - black/dark green, Sweatshirt - rose\\",\\"1, 1\\",\\"ZO0062500625, ZO0179801798\\",\\"0, 0\\",\\"18.984, 17.984\\",\\"18.984, 17.984\\",\\"0, 0\\",\\"ZO0062500625, ZO0179801798\\",\\"36.969\\",\\"36.969\\",2,2,order,sonya -kwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Abd,Abd,\\"Abd Meyer\\",\\"Abd Meyer\\",MALE,52,Meyer,Meyer,\\"(empty)\\",Friday,4,\\"abd@meyer-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561870,\\"sold_product_561870_18909, sold_product_561870_18272\\",\\"sold_product_561870_18909, sold_product_561870_18272\\",\\"65, 12.992\\",\\"65, 12.992\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Spritechnologies\\",\\"Low Tide Media, Spritechnologies\\",\\"33.125, 6.109\\",\\"65, 12.992\\",\\"18,909, 18,272\\",\\"Cardigan - grey multicolor, Sports shirt - dark grey multicolor\\",\\"Cardigan - grey multicolor, Sports shirt - dark grey multicolor\\",\\"1, 1\\",\\"ZO0450904509, ZO0615906159\\",\\"0, 0\\",\\"65, 12.992\\",\\"65, 12.992\\",\\"0, 0\\",\\"ZO0450904509, ZO0615906159\\",78,78,2,2,order,abd -wwMtOW0BH63Xcmy453H9,\\"-\\",ecommerce,\\"-\\",\\"Women's Clothing\\",\\"Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Salazar\\",\\"Elyssa Salazar\\",FEMALE,27,Salazar,Salazar,\\"(empty)\\",Friday,4,\\"elyssa@salazar-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",Oceanavigations,Oceanavigations,\\"Jun 20, 2019 @ 00:00:00.000\\",561569,\\"sold_product_561569_22788, sold_product_561569_20475\\",\\"sold_product_561569_22788, sold_product_561569_20475\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"Women's Clothing, Women's Clothing\\",\\"Women's Clothing, Women's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Oceanavigations, Oceanavigations\\",\\"Oceanavigations, Oceanavigations\\",\\"9.867, 15.359\\",\\"20.984, 28.984\\",\\"22,788, 20,475\\",\\"Print T-shirt - white/black, Blouse - red\\",\\"Print T-shirt - white/black, Blouse - red\\",\\"1, 1\\",\\"ZO0264602646, ZO0265202652\\",\\"0, 0\\",\\"20.984, 28.984\\",\\"20.984, 28.984\\",\\"0, 0\\",\\"ZO0264602646, ZO0265202652\\",\\"49.969\\",\\"49.969\\",2,2,order,elyssa -hAMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Robert,Robert,\\"Robert Brock\\",\\"Robert Brock\\",MALE,29,Brock,Brock,\\"(empty)\\",Friday,4,\\"robert@brock-family.zzz\\",\\"-\\",Asia,SA,\\"POINT (45 25)\\",\\"-\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561935,\\"sold_product_561935_20811, sold_product_561935_19107\\",\\"sold_product_561935_20811, sold_product_561935_19107\\",\\"37, 50\\",\\"37, 50\\",\\"Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Oceanavigations\\",\\"Low Tide Media, Oceanavigations\\",\\"17.391, 26.984\\",\\"37, 50\\",\\"20,811, 19,107\\",\\"Shirt - white/red, Suit jacket - navy\\",\\"Shirt - white/red, Suit jacket - navy\\",\\"1, 1\\",\\"ZO0417404174, ZO0275702757\\",\\"0, 0\\",\\"37, 50\\",\\"37, 50\\",\\"0, 0\\",\\"ZO0417404174, ZO0275702757\\",87,87,2,2,order,robert -hQMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",EUR,\\"Abdulraheem Al\\",\\"Abdulraheem Al\\",\\"Abdulraheem Al Graves\\",\\"Abdulraheem Al Graves\\",MALE,33,Graves,Graves,\\"(empty)\\",Friday,4,\\"abdulraheem al@graves-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Low Tide Media\\",\\"Low Tide Media\\",\\"Jun 20, 2019 @ 00:00:00.000\\",561976,\\"sold_product_561976_16395, sold_product_561976_2982\\",\\"sold_product_561976_16395, sold_product_561976_2982\\",\\"42, 33\\",\\"42, 33\\",\\"Men's Shoes, Men's Clothing\\",\\"Men's Shoes, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0\\",\\"0, 0\\",\\"Low Tide Media, Low Tide Media\\",\\"Low Tide Media, Low Tide Media\\",\\"19.313, 17.484\\",\\"42, 33\\",\\"16,395, 2,982\\",\\"Lace-ups - black, Jumper - multicoloured\\",\\"Lace-ups - black, Jumper - multicoloured\\",\\"1, 1\\",\\"ZO0392703927, ZO0452004520\\",\\"0, 0\\",\\"42, 33\\",\\"42, 33\\",\\"0, 0\\",\\"ZO0392703927, ZO0452004520\\",75,75,2,2,order,abdulraheem -swMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Accessories, Men's Accessories, Men's Shoes\\",\\"Women's Accessories, Men's Accessories, Men's Shoes\\",EUR,\\"Sultan Al\\",\\"Sultan Al\\",\\"Sultan Al Goodman\\",\\"Sultan Al Goodman\\",MALE,19,Goodman,Goodman,\\"(empty)\\",Friday,4,\\"sultan al@goodman-family.zzz\\",\\"Abu Dhabi\\",Asia,AE,\\"POINT (54.4 24.5)\\",\\"Abu Dhabi\\",\\"Elitelligence, Oceanavigations, Angeldale\\",\\"Elitelligence, Oceanavigations, Angeldale\\",\\"Jun 20, 2019 @ 00:00:00.000\\",717426,\\"sold_product_717426_20776, sold_product_717426_13026, sold_product_717426_11738, sold_product_717426_15588\\",\\"sold_product_717426_20776, sold_product_717426_13026, sold_product_717426_11738, sold_product_717426_15588\\",\\"24.984, 100, 14.992, 20.984\\",\\"24.984, 100, 14.992, 20.984\\",\\"Women's Accessories, Men's Accessories, Men's Shoes, Women's Accessories\\",\\"Women's Accessories, Men's Accessories, Men's Shoes, Women's Accessories\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, Oceanavigations, Elitelligence, Angeldale\\",\\"Elitelligence, Oceanavigations, Elitelligence, Angeldale\\",\\"12, 48, 7.5, 11.539\\",\\"24.984, 100, 14.992, 20.984\\",\\"20,776, 13,026, 11,738, 15,588\\",\\"Sports bag - navy/cognac, Weekend bag - dark brown, Espadrilles - navy, Wallet - cognac\\",\\"Sports bag - navy/cognac, Weekend bag - dark brown, Espadrilles - navy, Wallet - cognac\\",\\"1, 1, 1, 1\\",\\"ZO0606006060, ZO0314703147, ZO0518005180, ZO0702907029\\",\\"0, 0, 0, 0\\",\\"24.984, 100, 14.992, 20.984\\",\\"24.984, 100, 14.992, 20.984\\",\\"0, 0, 0, 0\\",\\"ZO0606006060, ZO0314703147, ZO0518005180, ZO0702907029\\",161,161,4,4,order,sultan -ywMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing, Men's Shoes\\",\\"Men's Clothing, Men's Shoes\\",EUR,Abd,Abd,\\"Abd Jacobs\\",\\"Abd Jacobs\\",MALE,52,Jacobs,Jacobs,\\"(empty)\\",Friday,4,\\"abd@jacobs-family.zzz\\",Cairo,Africa,EG,\\"POINT (31.3 30.1)\\",\\"Cairo Governorate\\",\\"Elitelligence, Microlutions\\",\\"Elitelligence, Microlutions\\",\\"Jun 20, 2019 @ 00:00:00.000\\",719082,\\"sold_product_719082_23782, sold_product_719082_12684, sold_product_719082_19741, sold_product_719082_19989\\",\\"sold_product_719082_23782, sold_product_719082_12684, sold_product_719082_19741, sold_product_719082_19989\\",\\"28.984, 14.992, 16.984, 28.984\\",\\"28.984, 14.992, 16.984, 28.984\\",\\"Men's Clothing, Men's Clothing, Men's Shoes, Men's Shoes\\",\\"Men's Clothing, Men's Clothing, Men's Shoes, Men's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, Microlutions, Elitelligence, Elitelligence\\",\\"Elitelligence, Microlutions, Elitelligence, Elitelligence\\",\\"15.07, 7.5, 7.988, 15.648\\",\\"28.984, 14.992, 16.984, 28.984\\",\\"23,782, 12,684, 19,741, 19,989\\",\\"Tracksuit top - black, Print T-shirt - navy blazer, Trainers - black, Trainers - grey\\",\\"Tracksuit top - black, Print T-shirt - navy blazer, Trainers - black, Trainers - grey\\",\\"1, 1, 1, 1\\",\\"ZO0591005910, ZO0116501165, ZO0507505075, ZO0514305143\\",\\"0, 0, 0, 0\\",\\"28.984, 14.992, 16.984, 28.984\\",\\"28.984, 14.992, 16.984, 28.984\\",\\"0, 0, 0, 0\\",\\"ZO0591005910, ZO0116501165, ZO0507505075, ZO0514305143\\",\\"89.938\\",\\"89.938\\",4,4,order,abd -0wMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Men's Clothing\\",\\"Men's Clothing\\",EUR,Jackson,Jackson,\\"Jackson Pope\\",\\"Jackson Pope\\",MALE,13,Pope,Pope,\\"(empty)\\",Friday,4,\\"jackson@pope-family.zzz\\",\\"Los Angeles\\",\\"North America\\",US,\\"POINT (-118.2 34.1)\\",California,\\"Elitelligence, Microlutions, Oceanavigations\\",\\"Elitelligence, Microlutions, Oceanavigations\\",\\"Jun 20, 2019 @ 00:00:00.000\\",715688,\\"sold_product_715688_19518, sold_product_715688_21048, sold_product_715688_12333, sold_product_715688_21005\\",\\"sold_product_715688_19518, sold_product_715688_21048, sold_product_715688_12333, sold_product_715688_21005\\",\\"33, 14.992, 16.984, 20.984\\",\\"33, 14.992, 16.984, 20.984\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Men's Clothing, Men's Clothing, Men's Clothing, Men's Clothing\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Elitelligence, Microlutions, Elitelligence, Oceanavigations\\",\\"Elitelligence, Microlutions, Elitelligence, Oceanavigations\\",\\"16.813, 6.75, 7.648, 9.656\\",\\"33, 14.992, 16.984, 20.984\\",\\"19,518, 21,048, 12,333, 21,005\\",\\"Sweatshirt - mottled grey, Print T-shirt - bright white, Tracksuit top - black, Formal shirt - white\\",\\"Sweatshirt - mottled grey, Print T-shirt - bright white, Tracksuit top - black, Formal shirt - white\\",\\"1, 1, 1, 1\\",\\"ZO0585505855, ZO0121001210, ZO0583005830, ZO0279402794\\",\\"0, 0, 0, 0\\",\\"33, 14.992, 16.984, 20.984\\",\\"33, 14.992, 16.984, 20.984\\",\\"0, 0, 0, 0\\",\\"ZO0585505855, ZO0121001210, ZO0583005830, ZO0279402794\\",\\"85.938\\",\\"85.938\\",4,4,order,jackson -1QMtOW0BH63Xcmy46HLV,\\"-\\",ecommerce,\\"-\\",\\"Women's Shoes, Women's Clothing\\",\\"Women's Shoes, Women's Clothing\\",EUR,Elyssa,Elyssa,\\"Elyssa Bryan\\",\\"Elyssa Bryan\\",FEMALE,27,Bryan,Bryan,\\"(empty)\\",Friday,4,\\"elyssa@bryan-family.zzz\\",\\"New York\\",\\"North America\\",US,\\"POINT (-74 40.8)\\",\\"New York\\",\\"Low Tide Media, Pyramidustries, Pyramidustries active\\",\\"Low Tide Media, Pyramidustries, Pyramidustries active\\",\\"Jun 20, 2019 @ 00:00:00.000\\",729671,\\"sold_product_729671_5140, sold_product_729671_12381, sold_product_729671_16267, sold_product_729671_20230\\",\\"sold_product_729671_5140, sold_product_729671_12381, sold_product_729671_16267, sold_product_729671_20230\\",\\"60, 16.984, 24.984, 24.984\\",\\"60, 16.984, 24.984, 24.984\\",\\"Women's Shoes, Women's Clothing, Women's Clothing, Women's Shoes\\",\\"Women's Shoes, Women's Clothing, Women's Clothing, Women's Shoes\\",\\"Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000, Dec 9, 2016 @ 00:00:00.000\\",\\"0, 0, 0, 0\\",\\"0, 0, 0, 0\\",\\"Low Tide Media, Pyramidustries, Pyramidustries active, Pyramidustries\\",\\"Low Tide Media, Pyramidustries, Pyramidustries active, Pyramidustries\\",\\"30, 7.648, 12.492, 12\\",\\"60, 16.984, 24.984, 24.984\\",\\"5,140, 12,381, 16,267, 20,230\\",\\"Ankle boots - onix, Sweatshirt - rose, Tights - black, Sandals - silver\\",\\"Ankle boots - onix, Sweatshirt - rose, Tights - black, Sandals - silver\\",\\"1, 1, 1, 1\\",\\"ZO0375303753, ZO0178301783, ZO0226002260, ZO0137601376\\",\\"0, 0, 0, 0\\",\\"60, 16.984, 24.984, 24.984\\",\\"60, 16.984, 24.984, 24.984\\",\\"0, 0, 0, 0\\",\\"ZO0375303753, ZO0178301783, ZO0226002260, ZO0137601376\\",\\"126.938\\",\\"126.938\\",4,4,order,elyssa +"\\"order_date\\",\\"order_id\\" +\\"Jun 25, 2019 @ 00:00:00.000\\",567994 +\\"Jun 25, 2019 @ 00:00:00.000\\",567996 +\\"Jun 25, 2019 @ 00:00:00.000\\",568014 +\\"Jun 25, 2019 @ 00:00:00.000\\",568019 +\\"Jun 25, 2019 @ 00:00:00.000\\",568023 +\\"Jun 25, 2019 @ 00:00:00.000\\",568039 +\\"Jun 25, 2019 @ 00:00:00.000\\",568044 +\\"Jun 25, 2019 @ 00:00:00.000\\",568045 +\\"Jun 25, 2019 @ 00:00:00.000\\",568068 +\\"Jun 25, 2019 @ 00:00:00.000\\",568069 +\\"Jun 25, 2019 @ 00:00:00.000\\",568070 +\\"Jun 25, 2019 @ 00:00:00.000\\",568083 +\\"Jun 25, 2019 @ 00:00:00.000\\",568106 +\\"Jun 25, 2019 @ 00:00:00.000\\",568117 +\\"Jun 25, 2019 @ 00:00:00.000\\",568128 +\\"Jun 25, 2019 @ 00:00:00.000\\",568149 +\\"Jun 25, 2019 @ 00:00:00.000\\",568152 +\\"Jun 25, 2019 @ 00:00:00.000\\",568165 +\\"Jun 25, 2019 @ 00:00:00.000\\",568177 +\\"Jun 25, 2019 @ 00:00:00.000\\",568182 +\\"Jun 25, 2019 @ 00:00:00.000\\",568192 +\\"Jun 25, 2019 @ 00:00:00.000\\",568212 +\\"Jun 25, 2019 @ 00:00:00.000\\",568218 +\\"Jun 25, 2019 @ 00:00:00.000\\",568228 +\\"Jun 25, 2019 @ 00:00:00.000\\",568229 +\\"Jun 25, 2019 @ 00:00:00.000\\",568232 +\\"Jun 25, 2019 @ 00:00:00.000\\",568236 +\\"Jun 25, 2019 @ 00:00:00.000\\",568269 +\\"Jun 25, 2019 @ 00:00:00.000\\",568275 +\\"Jun 25, 2019 @ 00:00:00.000\\",568278 +\\"Jun 25, 2019 @ 00:00:00.000\\",568292 +\\"Jun 25, 2019 @ 00:00:00.000\\",568301 +\\"Jun 25, 2019 @ 00:00:00.000\\",568308 +\\"Jun 25, 2019 @ 00:00:00.000\\",568319 +\\"Jun 25, 2019 @ 00:00:00.000\\",568325 +\\"Jun 25, 2019 @ 00:00:00.000\\",568331 +\\"Jun 25, 2019 @ 00:00:00.000\\",568350 +\\"Jun 25, 2019 @ 00:00:00.000\\",568360 +\\"Jun 25, 2019 @ 00:00:00.000\\",568363 +\\"Jun 25, 2019 @ 00:00:00.000\\",568375 +\\"Jun 25, 2019 @ 00:00:00.000\\",568386 +\\"Jun 25, 2019 @ 00:00:00.000\\",568393 +\\"Jun 25, 2019 @ 00:00:00.000\\",568397 +\\"Jun 25, 2019 @ 00:00:00.000\\",568428 +\\"Jun 25, 2019 @ 00:00:00.000\\",568434 +\\"Jun 25, 2019 @ 00:00:00.000\\",568439 +\\"Jun 25, 2019 @ 00:00:00.000\\",568455 +\\"Jun 25, 2019 @ 00:00:00.000\\",568458 +\\"Jun 25, 2019 @ 00:00:00.000\\",568469 +\\"Jun 25, 2019 @ 00:00:00.000\\",568492 +\\"Jun 25, 2019 @ 00:00:00.000\\",568499 +\\"Jun 25, 2019 @ 00:00:00.000\\",568503 +\\"Jun 25, 2019 @ 00:00:00.000\\",568507 +\\"Jun 25, 2019 @ 00:00:00.000\\",568515 +\\"Jun 25, 2019 @ 00:00:00.000\\",568524 +\\"Jun 25, 2019 @ 00:00:00.000\\",568531 +\\"Jun 25, 2019 @ 00:00:00.000\\",568541 +\\"Jun 25, 2019 @ 00:00:00.000\\",568559 +\\"Jun 25, 2019 @ 00:00:00.000\\",568571 +\\"Jun 25, 2019 @ 00:00:00.000\\",568578 +\\"Jun 25, 2019 @ 00:00:00.000\\",568586 +\\"Jun 25, 2019 @ 00:00:00.000\\",568589 +\\"Jun 25, 2019 @ 00:00:00.000\\",568609 +\\"Jun 25, 2019 @ 00:00:00.000\\",568611 +\\"Jun 25, 2019 @ 00:00:00.000\\",568636 +\\"Jun 25, 2019 @ 00:00:00.000\\",568638 +\\"Jun 25, 2019 @ 00:00:00.000\\",568640 +\\"Jun 25, 2019 @ 00:00:00.000\\",568652 +\\"Jun 25, 2019 @ 00:00:00.000\\",568671 +\\"Jun 25, 2019 @ 00:00:00.000\\",568674 +\\"Jun 25, 2019 @ 00:00:00.000\\",568682 +\\"Jun 25, 2019 @ 00:00:00.000\\",568702 +\\"Jun 25, 2019 @ 00:00:00.000\\",568706 +\\"Jun 25, 2019 @ 00:00:00.000\\",568707 +\\"Jun 25, 2019 @ 00:00:00.000\\",568745 +\\"Jun 25, 2019 @ 00:00:00.000\\",568751 +\\"Jun 25, 2019 @ 00:00:00.000\\",568762 +\\"Jun 25, 2019 @ 00:00:00.000\\",568774 +\\"Jun 25, 2019 @ 00:00:00.000\\",568776 +\\"Jun 25, 2019 @ 00:00:00.000\\",568789 +\\"Jun 25, 2019 @ 00:00:00.000\\",568793 +\\"Jun 25, 2019 @ 00:00:00.000\\",568816 +\\"Jun 25, 2019 @ 00:00:00.000\\",568818 +\\"Jun 25, 2019 @ 00:00:00.000\\",568845 +\\"Jun 25, 2019 @ 00:00:00.000\\",568854 +\\"Jun 25, 2019 @ 00:00:00.000\\",568865 +\\"Jun 25, 2019 @ 00:00:00.000\\",568875 +\\"Jun 25, 2019 @ 00:00:00.000\\",568877 +\\"Jun 25, 2019 @ 00:00:00.000\\",568894 +\\"Jun 25, 2019 @ 00:00:00.000\\",568898 +\\"Jun 25, 2019 @ 00:00:00.000\\",568901 +\\"Jun 25, 2019 @ 00:00:00.000\\",568926 +\\"Jun 25, 2019 @ 00:00:00.000\\",568938 +\\"Jun 25, 2019 @ 00:00:00.000\\",568941 +\\"Jun 25, 2019 @ 00:00:00.000\\",568943 +\\"Jun 25, 2019 @ 00:00:00.000\\",568954 +\\"Jun 25, 2019 @ 00:00:00.000\\",568955 +\\"Jun 25, 2019 @ 00:00:00.000\\",568993 +\\"Jun 25, 2019 @ 00:00:00.000\\",569003 +\\"Jun 25, 2019 @ 00:00:00.000\\",569010 +\\"Jun 25, 2019 @ 00:00:00.000\\",569027 +\\"Jun 25, 2019 @ 00:00:00.000\\",569033 +\\"Jun 25, 2019 @ 00:00:00.000\\",569045 +\\"Jun 25, 2019 @ 00:00:00.000\\",569046 +\\"Jun 25, 2019 @ 00:00:00.000\\",569055 +\\"Jun 25, 2019 @ 00:00:00.000\\",569056 +\\"Jun 25, 2019 @ 00:00:00.000\\",569083 +\\"Jun 25, 2019 @ 00:00:00.000\\",569091 +\\"Jun 25, 2019 @ 00:00:00.000\\",569097 +\\"Jun 25, 2019 @ 00:00:00.000\\",569103 +\\"Jun 25, 2019 @ 00:00:00.000\\",569107 +\\"Jun 25, 2019 @ 00:00:00.000\\",569123 +\\"Jun 25, 2019 @ 00:00:00.000\\",569144 +\\"Jun 25, 2019 @ 00:00:00.000\\",569163 +\\"Jun 25, 2019 @ 00:00:00.000\\",569173 +\\"Jun 25, 2019 @ 00:00:00.000\\",569178 +\\"Jun 25, 2019 @ 00:00:00.000\\",569183 +\\"Jun 25, 2019 @ 00:00:00.000\\",569198 +\\"Jun 25, 2019 @ 00:00:00.000\\",569209 +\\"Jun 25, 2019 @ 00:00:00.000\\",569214 +\\"Jun 25, 2019 @ 00:00:00.000\\",569218 +\\"Jun 25, 2019 @ 00:00:00.000\\",569223 +\\"Jun 25, 2019 @ 00:00:00.000\\",569250 +\\"Jun 25, 2019 @ 00:00:00.000\\",569259 +\\"Jun 25, 2019 @ 00:00:00.000\\",569262 +\\"Jun 25, 2019 @ 00:00:00.000\\",569278 +\\"Jun 25, 2019 @ 00:00:00.000\\",569299 +\\"Jun 25, 2019 @ 00:00:00.000\\",569306 +\\"Jun 25, 2019 @ 00:00:00.000\\",714149 +\\"Jun 25, 2019 @ 00:00:00.000\\",714385 +\\"Jun 25, 2019 @ 00:00:00.000\\",716889 +\\"Jun 25, 2019 @ 00:00:00.000\\",717726 +\\"Jun 25, 2019 @ 00:00:00.000\\",720661 +\\"Jun 25, 2019 @ 00:00:00.000\\",721706 +\\"Jun 25, 2019 @ 00:00:00.000\\",722613 +\\"Jun 25, 2019 @ 00:00:00.000\\",723213 +\\"Jun 25, 2019 @ 00:00:00.000\\",726874 +\\"Jun 25, 2019 @ 00:00:00.000\\",727370 +\\"Jun 25, 2019 @ 00:00:00.000\\",728335 +\\"Jun 25, 2019 @ 00:00:00.000\\",728580 +\\"Jun 25, 2019 @ 00:00:00.000\\",728962 +\\"Jun 25, 2019 @ 00:00:00.000\\",732546 +\\"Jun 24, 2019 @ 00:00:00.000\\",566680 +\\"Jun 24, 2019 @ 00:00:00.000\\",566685 +\\"Jun 24, 2019 @ 00:00:00.000\\",566690 +\\"Jun 24, 2019 @ 00:00:00.000\\",566706 +\\"Jun 24, 2019 @ 00:00:00.000\\",566725 +\\"Jun 24, 2019 @ 00:00:00.000\\",566729 +\\"Jun 24, 2019 @ 00:00:00.000\\",566734 +\\"Jun 24, 2019 @ 00:00:00.000\\",566735 +\\"Jun 24, 2019 @ 00:00:00.000\\",566757 +\\"Jun 24, 2019 @ 00:00:00.000\\",566768 +\\"Jun 24, 2019 @ 00:00:00.000\\",566772 +\\"Jun 24, 2019 @ 00:00:00.000\\",566775 +\\"Jun 24, 2019 @ 00:00:00.000\\",566790 +\\"Jun 24, 2019 @ 00:00:00.000\\",566801 +\\"Jun 24, 2019 @ 00:00:00.000\\",566812 +\\"Jun 24, 2019 @ 00:00:00.000\\",566826 +\\"Jun 24, 2019 @ 00:00:00.000\\",566829 +\\"Jun 24, 2019 @ 00:00:00.000\\",566831 +\\"Jun 24, 2019 @ 00:00:00.000\\",566845 +\\"Jun 24, 2019 @ 00:00:00.000\\",566852 +\\"Jun 24, 2019 @ 00:00:00.000\\",566856 +\\"Jun 24, 2019 @ 00:00:00.000\\",566861 +\\"Jun 24, 2019 @ 00:00:00.000\\",566881 +\\"Jun 24, 2019 @ 00:00:00.000\\",566884 +\\"Jun 24, 2019 @ 00:00:00.000\\",566892 +\\"Jun 24, 2019 @ 00:00:00.000\\",566896 +\\"Jun 24, 2019 @ 00:00:00.000\\",566924 +\\"Jun 24, 2019 @ 00:00:00.000\\",566935 +\\"Jun 24, 2019 @ 00:00:00.000\\",566942 +\\"Jun 24, 2019 @ 00:00:00.000\\",566944 +\\"Jun 24, 2019 @ 00:00:00.000\\",566951 +\\"Jun 24, 2019 @ 00:00:00.000\\",566979 +\\"Jun 24, 2019 @ 00:00:00.000\\",566982 +\\"Jun 24, 2019 @ 00:00:00.000\\",566985 +\\"Jun 24, 2019 @ 00:00:00.000\\",566986 +\\"Jun 24, 2019 @ 00:00:00.000\\",567015 +\\"Jun 24, 2019 @ 00:00:00.000\\",567019 +\\"Jun 24, 2019 @ 00:00:00.000\\",567037 +\\"Jun 24, 2019 @ 00:00:00.000\\",567039 +\\"Jun 24, 2019 @ 00:00:00.000\\",567042 +\\"Jun 24, 2019 @ 00:00:00.000\\",567048 +\\"Jun 24, 2019 @ 00:00:00.000\\",567068 +\\"Jun 24, 2019 @ 00:00:00.000\\",567069 +\\"Jun 24, 2019 @ 00:00:00.000\\",567081 +\\"Jun 24, 2019 @ 00:00:00.000\\",567082 +\\"Jun 24, 2019 @ 00:00:00.000\\",567094 +\\"Jun 24, 2019 @ 00:00:00.000\\",567095 +\\"Jun 24, 2019 @ 00:00:00.000\\",567119 +\\"Jun 24, 2019 @ 00:00:00.000\\",567135 +\\"Jun 24, 2019 @ 00:00:00.000\\",567143 +\\"Jun 24, 2019 @ 00:00:00.000\\",567169 +\\"Jun 24, 2019 @ 00:00:00.000\\",567177 +\\"Jun 24, 2019 @ 00:00:00.000\\",567191 +\\"Jun 24, 2019 @ 00:00:00.000\\",567207 +\\"Jun 24, 2019 @ 00:00:00.000\\",567224 +\\"Jun 24, 2019 @ 00:00:00.000\\",567240 +\\"Jun 24, 2019 @ 00:00:00.000\\",567252 +\\"Jun 24, 2019 @ 00:00:00.000\\",567256 +\\"Jun 24, 2019 @ 00:00:00.000\\",567260 +\\"Jun 24, 2019 @ 00:00:00.000\\",567281 +\\"Jun 24, 2019 @ 00:00:00.000\\",567290 +\\"Jun 24, 2019 @ 00:00:00.000\\",567294 +\\"Jun 24, 2019 @ 00:00:00.000\\",567301 +\\"Jun 24, 2019 @ 00:00:00.000\\",567308 +\\"Jun 24, 2019 @ 00:00:00.000\\",567316 +\\"Jun 24, 2019 @ 00:00:00.000\\",567318 +\\"Jun 24, 2019 @ 00:00:00.000\\",567324 +\\"Jun 24, 2019 @ 00:00:00.000\\",567340 +\\"Jun 24, 2019 @ 00:00:00.000\\",567341 +\\"Jun 24, 2019 @ 00:00:00.000\\",567356 +\\"Jun 24, 2019 @ 00:00:00.000\\",567365 +\\"Jun 24, 2019 @ 00:00:00.000\\",567381 +\\"Jun 24, 2019 @ 00:00:00.000\\",567383 +\\"Jun 24, 2019 @ 00:00:00.000\\",567384 +\\"Jun 24, 2019 @ 00:00:00.000\\",567400 +\\"Jun 24, 2019 @ 00:00:00.000\\",567403 +\\"Jun 24, 2019 @ 00:00:00.000\\",567404 +\\"Jun 24, 2019 @ 00:00:00.000\\",567418 +\\"Jun 24, 2019 @ 00:00:00.000\\",567437 +\\"Jun 24, 2019 @ 00:00:00.000\\",567446 +\\"Jun 24, 2019 @ 00:00:00.000\\",567454 +\\"Jun 24, 2019 @ 00:00:00.000\\",567462 +\\"Jun 24, 2019 @ 00:00:00.000\\",567465 +\\"Jun 24, 2019 @ 00:00:00.000\\",567475 +\\"Jun 24, 2019 @ 00:00:00.000\\",567486 +\\"Jun 24, 2019 @ 00:00:00.000\\",567492 +\\"Jun 24, 2019 @ 00:00:00.000\\",567504 +\\"Jun 24, 2019 @ 00:00:00.000\\",567524 +\\"Jun 24, 2019 @ 00:00:00.000\\",567538 +\\"Jun 24, 2019 @ 00:00:00.000\\",567543 +\\"Jun 24, 2019 @ 00:00:00.000\\",567544 +\\"Jun 24, 2019 @ 00:00:00.000\\",567565 +\\"Jun 24, 2019 @ 00:00:00.000\\",567573 +\\"Jun 24, 2019 @ 00:00:00.000\\",567592 +\\"Jun 24, 2019 @ 00:00:00.000\\",567593 +\\"Jun 24, 2019 @ 00:00:00.000\\",567598 +\\"Jun 24, 2019 @ 00:00:00.000\\",567615 +\\"Jun 24, 2019 @ 00:00:00.000\\",567623 +\\"Jun 24, 2019 @ 00:00:00.000\\",567625 +\\"Jun 24, 2019 @ 00:00:00.000\\",567631 +\\"Jun 24, 2019 @ 00:00:00.000\\",567654 +\\"Jun 24, 2019 @ 00:00:00.000\\",567662 +\\"Jun 24, 2019 @ 00:00:00.000\\",567666 +\\"Jun 24, 2019 @ 00:00:00.000\\",567667 +\\"Jun 24, 2019 @ 00:00:00.000\\",567669 +\\"Jun 24, 2019 @ 00:00:00.000\\",567684 +\\"Jun 24, 2019 @ 00:00:00.000\\",567703 +\\"Jun 24, 2019 @ 00:00:00.000\\",567708 +\\"Jun 24, 2019 @ 00:00:00.000\\",567729 +\\"Jun 24, 2019 @ 00:00:00.000\\",567735 +\\"Jun 24, 2019 @ 00:00:00.000\\",567736 +\\"Jun 24, 2019 @ 00:00:00.000\\",567755 +\\"Jun 24, 2019 @ 00:00:00.000\\",567769 +\\"Jun 24, 2019 @ 00:00:00.000\\",567790 +\\"Jun 24, 2019 @ 00:00:00.000\\",567806 +\\"Jun 24, 2019 @ 00:00:00.000\\",567815 +\\"Jun 24, 2019 @ 00:00:00.000\\",567822 +\\"Jun 24, 2019 @ 00:00:00.000\\",567835 +\\"Jun 24, 2019 @ 00:00:00.000\\",567852 +\\"Jun 24, 2019 @ 00:00:00.000\\",567855 +\\"Jun 24, 2019 @ 00:00:00.000\\",567868 +\\"Jun 24, 2019 @ 00:00:00.000\\",567869 +\\"Jun 24, 2019 @ 00:00:00.000\\",567876 +\\"Jun 24, 2019 @ 00:00:00.000\\",567889 +\\"Jun 24, 2019 @ 00:00:00.000\\",567909 +\\"Jun 24, 2019 @ 00:00:00.000\\",567926 +\\"Jun 24, 2019 @ 00:00:00.000\\",567935 +\\"Jun 24, 2019 @ 00:00:00.000\\",567939 +\\"Jun 24, 2019 @ 00:00:00.000\\",567950 +\\"Jun 24, 2019 @ 00:00:00.000\\",567970 +\\"Jun 24, 2019 @ 00:00:00.000\\",567973 +\\"Jun 24, 2019 @ 00:00:00.000\\",715455 +\\"Jun 24, 2019 @ 00:00:00.000\\",716462 +\\"Jun 24, 2019 @ 00:00:00.000\\",717603 +\\"Jun 24, 2019 @ 00:00:00.000\\",721778 +\\"Jun 24, 2019 @ 00:00:00.000\\",724326 +\\"Jun 24, 2019 @ 00:00:00.000\\",724806 +\\"Jun 24, 2019 @ 00:00:00.000\\",724844 +\\"Jun 24, 2019 @ 00:00:00.000\\",727730 +\\"Jun 24, 2019 @ 00:00:00.000\\",728256 +\\"Jun 24, 2019 @ 00:00:00.000\\",731037 +\\"Jun 24, 2019 @ 00:00:00.000\\",732229 +\\"Jun 24, 2019 @ 00:00:00.000\\",733060 +\\"Jun 23, 2019 @ 00:00:00.000\\",565330 +\\"Jun 23, 2019 @ 00:00:00.000\\",565334 +\\"Jun 23, 2019 @ 00:00:00.000\\",565339 +\\"Jun 23, 2019 @ 00:00:00.000\\",565360 +\\"Jun 23, 2019 @ 00:00:00.000\\",565366 +\\"Jun 23, 2019 @ 00:00:00.000\\",565381 +\\"Jun 23, 2019 @ 00:00:00.000\\",565392 +\\"Jun 23, 2019 @ 00:00:00.000\\",565401 +\\"Jun 23, 2019 @ 00:00:00.000\\",565404 +\\"Jun 23, 2019 @ 00:00:00.000\\",565410 +\\"Jun 23, 2019 @ 00:00:00.000\\",565446 +\\"Jun 23, 2019 @ 00:00:00.000\\",565452 +\\"Jun 23, 2019 @ 00:00:00.000\\",565459 +\\"Jun 23, 2019 @ 00:00:00.000\\",565466 +\\"Jun 23, 2019 @ 00:00:00.000\\",565473 +\\"Jun 23, 2019 @ 00:00:00.000\\",565479 +\\"Jun 23, 2019 @ 00:00:00.000\\",565489 +\\"Jun 23, 2019 @ 00:00:00.000\\",565498 +\\"Jun 23, 2019 @ 00:00:00.000\\",565504 +\\"Jun 23, 2019 @ 00:00:00.000\\",565521 +\\"Jun 23, 2019 @ 00:00:00.000\\",565538 +\\"Jun 23, 2019 @ 00:00:00.000\\",565542 +\\"Jun 23, 2019 @ 00:00:00.000\\",565560 +\\"Jun 23, 2019 @ 00:00:00.000\\",565564 +\\"Jun 23, 2019 @ 00:00:00.000\\",565567 +\\"Jun 23, 2019 @ 00:00:00.000\\",565580 +\\"Jun 23, 2019 @ 00:00:00.000\\",565591 +\\"Jun 23, 2019 @ 00:00:00.000\\",565596 +\\"Jun 23, 2019 @ 00:00:00.000\\",565605 +\\"Jun 23, 2019 @ 00:00:00.000\\",565639 +\\"Jun 23, 2019 @ 00:00:00.000\\",565640 +\\"Jun 23, 2019 @ 00:00:00.000\\",565667 +\\"Jun 23, 2019 @ 00:00:00.000\\",565678 +\\"Jun 23, 2019 @ 00:00:00.000\\",565683 +\\"Jun 23, 2019 @ 00:00:00.000\\",565684 +\\"Jun 23, 2019 @ 00:00:00.000\\",565697 +\\"Jun 23, 2019 @ 00:00:00.000\\",565698 +\\"Jun 23, 2019 @ 00:00:00.000\\",565708 +\\"Jun 23, 2019 @ 00:00:00.000\\",565722 +\\"Jun 23, 2019 @ 00:00:00.000\\",565723 +\\"Jun 23, 2019 @ 00:00:00.000\\",565728 +\\"Jun 23, 2019 @ 00:00:00.000\\",565732 +\\"Jun 23, 2019 @ 00:00:00.000\\",565734 +\\"Jun 23, 2019 @ 00:00:00.000\\",565760 +\\"Jun 23, 2019 @ 00:00:00.000\\",565767 +\\"Jun 23, 2019 @ 00:00:00.000\\",565768 +\\"Jun 23, 2019 @ 00:00:00.000\\",565776 +\\"Jun 23, 2019 @ 00:00:00.000\\",565793 +\\"Jun 23, 2019 @ 00:00:00.000\\",565796 +\\"Jun 23, 2019 @ 00:00:00.000\\",565804 +\\"Jun 23, 2019 @ 00:00:00.000\\",565809 +\\"Jun 23, 2019 @ 00:00:00.000\\",565819 +\\"Jun 23, 2019 @ 00:00:00.000\\",565830 +\\"Jun 23, 2019 @ 00:00:00.000\\",565838 +\\"Jun 23, 2019 @ 00:00:00.000\\",565855 +\\"Jun 23, 2019 @ 00:00:00.000\\",565877 +\\"Jun 23, 2019 @ 00:00:00.000\\",565896 +\\"Jun 23, 2019 @ 00:00:00.000\\",565900 +\\"Jun 23, 2019 @ 00:00:00.000\\",565915 +\\"Jun 23, 2019 @ 00:00:00.000\\",565918 +\\"Jun 23, 2019 @ 00:00:00.000\\",565945 +\\"Jun 23, 2019 @ 00:00:00.000\\",565948 +\\"Jun 23, 2019 @ 00:00:00.000\\",565970 +\\"Jun 23, 2019 @ 00:00:00.000\\",565982 +\\"Jun 23, 2019 @ 00:00:00.000\\",565985 +\\"Jun 23, 2019 @ 00:00:00.000\\",565988 +\\"Jun 23, 2019 @ 00:00:00.000\\",565998 +\\"Jun 23, 2019 @ 00:00:00.000\\",566036 +\\"Jun 23, 2019 @ 00:00:00.000\\",566042 +\\"Jun 23, 2019 @ 00:00:00.000\\",566044 +\\"Jun 23, 2019 @ 00:00:00.000\\",566051 +\\"Jun 23, 2019 @ 00:00:00.000\\",566053 +\\"Jun 23, 2019 @ 00:00:00.000\\",566070 +\\"Jun 23, 2019 @ 00:00:00.000\\",566079 +\\"Jun 23, 2019 @ 00:00:00.000\\",566100 +\\"Jun 23, 2019 @ 00:00:00.000\\",566101 +\\"Jun 23, 2019 @ 00:00:00.000\\",566121 +\\"Jun 23, 2019 @ 00:00:00.000\\",566125 +\\"Jun 23, 2019 @ 00:00:00.000\\",566146 +\\"Jun 23, 2019 @ 00:00:00.000\\",566155 +\\"Jun 23, 2019 @ 00:00:00.000\\",566156 +\\"Jun 23, 2019 @ 00:00:00.000\\",566167 +\\"Jun 23, 2019 @ 00:00:00.000\\",566170 +\\"Jun 23, 2019 @ 00:00:00.000\\",566176 +\\"Jun 23, 2019 @ 00:00:00.000\\",566186 +\\"Jun 23, 2019 @ 00:00:00.000\\",566187 +\\"Jun 23, 2019 @ 00:00:00.000\\",566215 +\\"Jun 23, 2019 @ 00:00:00.000\\",566232 +\\"Jun 23, 2019 @ 00:00:00.000\\",566247 +\\"Jun 23, 2019 @ 00:00:00.000\\",566248 +\\"Jun 23, 2019 @ 00:00:00.000\\",566256 +\\"Jun 23, 2019 @ 00:00:00.000\\",566259 +\\"Jun 23, 2019 @ 00:00:00.000\\",566261 +\\"Jun 23, 2019 @ 00:00:00.000\\",566280 +\\"Jun 23, 2019 @ 00:00:00.000\\",566284 +\\"Jun 23, 2019 @ 00:00:00.000\\",566295 +\\"Jun 23, 2019 @ 00:00:00.000\\",566315 +\\"Jun 23, 2019 @ 00:00:00.000\\",566320 +\\"Jun 23, 2019 @ 00:00:00.000\\",566334 +\\"Jun 23, 2019 @ 00:00:00.000\\",566343 +\\"Jun 23, 2019 @ 00:00:00.000\\",566357 +\\"Jun 23, 2019 @ 00:00:00.000\\",566360 +\\"Jun 23, 2019 @ 00:00:00.000\\",566364 +\\"Jun 23, 2019 @ 00:00:00.000\\",566382 +\\"Jun 23, 2019 @ 00:00:00.000\\",566391 +\\"Jun 23, 2019 @ 00:00:00.000\\",566400 +\\"Jun 23, 2019 @ 00:00:00.000\\",566415 +\\"Jun 23, 2019 @ 00:00:00.000\\",566416 +\\"Jun 23, 2019 @ 00:00:00.000\\",566417 +\\"Jun 23, 2019 @ 00:00:00.000\\",566428 +\\"Jun 23, 2019 @ 00:00:00.000\\",566443 +\\"Jun 23, 2019 @ 00:00:00.000\\",566452 +\\"Jun 23, 2019 @ 00:00:00.000\\",566454 +\\"Jun 23, 2019 @ 00:00:00.000\\",566456 +\\"Jun 23, 2019 @ 00:00:00.000\\",566498 +\\"Jun 23, 2019 @ 00:00:00.000\\",566506 +\\"Jun 23, 2019 @ 00:00:00.000\\",566514 +\\"Jun 23, 2019 @ 00:00:00.000\\",566518 +\\"Jun 23, 2019 @ 00:00:00.000\\",566519 +\\"Jun 23, 2019 @ 00:00:00.000\\",566538 +\\"Jun 23, 2019 @ 00:00:00.000\\",566553 +\\"Jun 23, 2019 @ 00:00:00.000\\",566564 +\\"Jun 23, 2019 @ 00:00:00.000\\",566580 +\\"Jun 23, 2019 @ 00:00:00.000\\",566591 +\\"Jun 23, 2019 @ 00:00:00.000\\",566607 +\\"Jun 23, 2019 @ 00:00:00.000\\",566621 +\\"Jun 23, 2019 @ 00:00:00.000\\",566622 +\\"Jun 23, 2019 @ 00:00:00.000\\",566628 +\\"Jun 23, 2019 @ 00:00:00.000\\",566650 +\\"Jun 23, 2019 @ 00:00:00.000\\",566653 +\\"Jun 23, 2019 @ 00:00:00.000\\",566671 +\\"Jun 23, 2019 @ 00:00:00.000\\",715081 +\\"Jun 23, 2019 @ 00:00:00.000\\",715133 +\\"Jun 23, 2019 @ 00:00:00.000\\",715961 +\\"Jun 23, 2019 @ 00:00:00.000\\",717057 +\\"Jun 23, 2019 @ 00:00:00.000\\",717206 +\\"Jun 23, 2019 @ 00:00:00.000\\",718085 +\\"Jun 23, 2019 @ 00:00:00.000\\",720399 +\\"Jun 23, 2019 @ 00:00:00.000\\",720445 +\\"Jun 23, 2019 @ 00:00:00.000\\",723242 +\\"Jun 23, 2019 @ 00:00:00.000\\",726754 +\\"Jun 23, 2019 @ 00:00:00.000\\",730725 +\\"Jun 23, 2019 @ 00:00:00.000\\",731352 +\\"Jun 22, 2019 @ 00:00:00.000\\",563909 +\\"Jun 22, 2019 @ 00:00:00.000\\",563924 +\\"Jun 22, 2019 @ 00:00:00.000\\",563927 +\\"Jun 22, 2019 @ 00:00:00.000\\",563928 +\\"Jun 22, 2019 @ 00:00:00.000\\",563931 +\\"Jun 22, 2019 @ 00:00:00.000\\",563947 +\\"Jun 22, 2019 @ 00:00:00.000\\",563953 +\\"Jun 22, 2019 @ 00:00:00.000\\",563964 +\\"Jun 22, 2019 @ 00:00:00.000\\",563965 +\\"Jun 22, 2019 @ 00:00:00.000\\",563967 +\\"Jun 22, 2019 @ 00:00:00.000\\",563984 +\\"Jun 22, 2019 @ 00:00:00.000\\",564000 +\\"Jun 22, 2019 @ 00:00:00.000\\",564009 +\\"Jun 22, 2019 @ 00:00:00.000\\",564016 +\\"Jun 22, 2019 @ 00:00:00.000\\",564024 +\\"Jun 22, 2019 @ 00:00:00.000\\",564030 +\\"Jun 22, 2019 @ 00:00:00.000\\",564032 +\\"Jun 22, 2019 @ 00:00:00.000\\",564065 +\\"Jun 22, 2019 @ 00:00:00.000\\",564070 +\\"Jun 22, 2019 @ 00:00:00.000\\",564075 +\\"Jun 22, 2019 @ 00:00:00.000\\",564080 +\\"Jun 22, 2019 @ 00:00:00.000\\",564095 +\\"Jun 22, 2019 @ 00:00:00.000\\",564106 +\\"Jun 22, 2019 @ 00:00:00.000\\",564121 +\\"Jun 22, 2019 @ 00:00:00.000\\",564140 +\\"Jun 22, 2019 @ 00:00:00.000\\",564144 +\\"Jun 22, 2019 @ 00:00:00.000\\",564148 +\\"Jun 22, 2019 @ 00:00:00.000\\",564164 +\\"Jun 22, 2019 @ 00:00:00.000\\",564166 +\\"Jun 22, 2019 @ 00:00:00.000\\",564174 +\\"Jun 22, 2019 @ 00:00:00.000\\",564190 +\\"Jun 22, 2019 @ 00:00:00.000\\",564207 +\\"Jun 22, 2019 @ 00:00:00.000\\",564215 +\\"Jun 22, 2019 @ 00:00:00.000\\",564221 +\\"Jun 22, 2019 @ 00:00:00.000\\",564237 +\\"Jun 22, 2019 @ 00:00:00.000\\",564241 +\\"Jun 22, 2019 @ 00:00:00.000\\",564257 +\\"Jun 22, 2019 @ 00:00:00.000\\",564269 +\\"Jun 22, 2019 @ 00:00:00.000\\",564271 +\\"Jun 22, 2019 @ 00:00:00.000\\",564272 +\\"Jun 22, 2019 @ 00:00:00.000\\",564274 +\\"Jun 22, 2019 @ 00:00:00.000\\",564307 +\\"Jun 22, 2019 @ 00:00:00.000\\",564315 +\\"Jun 22, 2019 @ 00:00:00.000\\",564331 +\\"Jun 22, 2019 @ 00:00:00.000\\",564339 +\\"Jun 22, 2019 @ 00:00:00.000\\",564340 +\\"Jun 22, 2019 @ 00:00:00.000\\",564350 +\\"Jun 22, 2019 @ 00:00:00.000\\",564361 +\\"Jun 22, 2019 @ 00:00:00.000\\",564366 +\\"Jun 22, 2019 @ 00:00:00.000\\",564380 +\\"Jun 22, 2019 @ 00:00:00.000\\",564394 +\\"Jun 22, 2019 @ 00:00:00.000\\",564395 +\\"Jun 22, 2019 @ 00:00:00.000\\",564398 +\\"Jun 22, 2019 @ 00:00:00.000\\",564409 +\\"Jun 22, 2019 @ 00:00:00.000\\",564429 +\\"Jun 22, 2019 @ 00:00:00.000\\",564445 +\\"Jun 22, 2019 @ 00:00:00.000\\",564446 +\\"Jun 22, 2019 @ 00:00:00.000\\",564460 +\\"Jun 22, 2019 @ 00:00:00.000\\",564479 +\\"Jun 22, 2019 @ 00:00:00.000\\",564481 +\\"Jun 22, 2019 @ 00:00:00.000\\",564510 +\\"Jun 22, 2019 @ 00:00:00.000\\",564513 +\\"Jun 22, 2019 @ 00:00:00.000\\",564532 +\\"Jun 22, 2019 @ 00:00:00.000\\",564533 +\\"Jun 22, 2019 @ 00:00:00.000\\",564536 +\\"Jun 22, 2019 @ 00:00:00.000\\",564557 +\\"Jun 22, 2019 @ 00:00:00.000\\",564559 +\\"Jun 22, 2019 @ 00:00:00.000\\",564576 +\\"Jun 22, 2019 @ 00:00:00.000\\",564604 +\\"Jun 22, 2019 @ 00:00:00.000\\",564605 +\\"Jun 22, 2019 @ 00:00:00.000\\",564609 +\\"Jun 22, 2019 @ 00:00:00.000\\",564619 +\\"Jun 22, 2019 @ 00:00:00.000\\",564627 +\\"Jun 22, 2019 @ 00:00:00.000\\",564649 +\\"Jun 22, 2019 @ 00:00:00.000\\",564661 +\\"Jun 22, 2019 @ 00:00:00.000\\",564670 +\\"Jun 22, 2019 @ 00:00:00.000\\",564676 +\\"Jun 22, 2019 @ 00:00:00.000\\",564686 +\\"Jun 22, 2019 @ 00:00:00.000\\",564701 +\\"Jun 22, 2019 @ 00:00:00.000\\",564706 +\\"Jun 22, 2019 @ 00:00:00.000\\",564710 +\\"Jun 22, 2019 @ 00:00:00.000\\",564725 +\\"Jun 22, 2019 @ 00:00:00.000\\",564733 +\\"Jun 22, 2019 @ 00:00:00.000\\",564735 +\\"Jun 22, 2019 @ 00:00:00.000\\",564739 +\\"Jun 22, 2019 @ 00:00:00.000\\",564756 +\\"Jun 22, 2019 @ 00:00:00.000\\",564759 +\\"Jun 22, 2019 @ 00:00:00.000\\",564761 +\\"Jun 22, 2019 @ 00:00:00.000\\",564770 +\\"Jun 22, 2019 @ 00:00:00.000\\",564777 +\\"Jun 22, 2019 @ 00:00:00.000\\",564796 +\\"Jun 22, 2019 @ 00:00:00.000\\",564804 +\\"Jun 22, 2019 @ 00:00:00.000\\",564812 +\\"Jun 22, 2019 @ 00:00:00.000\\",564818 +\\"Jun 22, 2019 @ 00:00:00.000\\",564819 +\\"Jun 22, 2019 @ 00:00:00.000\\",564842 +\\"Jun 22, 2019 @ 00:00:00.000\\",564844 +\\"Jun 22, 2019 @ 00:00:00.000\\",564869 +\\"Jun 22, 2019 @ 00:00:00.000\\",564876 +\\"Jun 22, 2019 @ 00:00:00.000\\",564883 +\\"Jun 22, 2019 @ 00:00:00.000\\",564885 +\\"Jun 22, 2019 @ 00:00:00.000\\",564893 +\\"Jun 22, 2019 @ 00:00:00.000\\",564902 +\\"Jun 22, 2019 @ 00:00:00.000\\",564915 +\\"Jun 22, 2019 @ 00:00:00.000\\",564932 +\\"Jun 22, 2019 @ 00:00:00.000\\",564937 +\\"Jun 22, 2019 @ 00:00:00.000\\",564940 +\\"Jun 22, 2019 @ 00:00:00.000\\",564954 +\\"Jun 22, 2019 @ 00:00:00.000\\",564957 +\\"Jun 22, 2019 @ 00:00:00.000\\",564968 +\\"Jun 22, 2019 @ 00:00:00.000\\",564987 +\\"Jun 22, 2019 @ 00:00:00.000\\",564994 +\\"Jun 22, 2019 @ 00:00:00.000\\",565002 +\\"Jun 22, 2019 @ 00:00:00.000\\",565009 +\\"Jun 22, 2019 @ 00:00:00.000\\",565025 +\\"Jun 22, 2019 @ 00:00:00.000\\",565039 +\\"Jun 22, 2019 @ 00:00:00.000\\",565052 +\\"Jun 22, 2019 @ 00:00:00.000\\",565061 +\\"Jun 22, 2019 @ 00:00:00.000\\",565077 +\\"Jun 22, 2019 @ 00:00:00.000\\",565084 +\\"Jun 22, 2019 @ 00:00:00.000\\",565090 +\\"Jun 22, 2019 @ 00:00:00.000\\",565091 +\\"Jun 22, 2019 @ 00:00:00.000\\",565100 +\\"Jun 22, 2019 @ 00:00:00.000\\",565123 +\\"Jun 22, 2019 @ 00:00:00.000\\",565137 +\\"Jun 22, 2019 @ 00:00:00.000\\",565138 +\\"Jun 22, 2019 @ 00:00:00.000\\",565150 +\\"Jun 22, 2019 @ 00:00:00.000\\",565160 +\\"Jun 22, 2019 @ 00:00:00.000\\",565161 +\\"Jun 22, 2019 @ 00:00:00.000\\",565173 +\\"Jun 22, 2019 @ 00:00:00.000\\",565206 +\\"Jun 22, 2019 @ 00:00:00.000\\",565214 +\\"Jun 22, 2019 @ 00:00:00.000\\",565222 +\\"Jun 22, 2019 @ 00:00:00.000\\",565224 +\\"Jun 22, 2019 @ 00:00:00.000\\",565231 +\\"Jun 22, 2019 @ 00:00:00.000\\",565233 +\\"Jun 22, 2019 @ 00:00:00.000\\",565237 +\\"Jun 22, 2019 @ 00:00:00.000\\",565262 +\\"Jun 22, 2019 @ 00:00:00.000\\",565263 +\\"Jun 22, 2019 @ 00:00:00.000\\",565266 +\\"Jun 22, 2019 @ 00:00:00.000\\",565276 +\\"Jun 22, 2019 @ 00:00:00.000\\",565284 +\\"Jun 22, 2019 @ 00:00:00.000\\",565304 +\\"Jun 22, 2019 @ 00:00:00.000\\",565308 +\\"Jun 22, 2019 @ 00:00:00.000\\",715752 +\\"Jun 22, 2019 @ 00:00:00.000\\",717243 +\\"Jun 22, 2019 @ 00:00:00.000\\",723683 +\\"Jun 22, 2019 @ 00:00:00.000\\",725995 +\\"Jun 22, 2019 @ 00:00:00.000\\",727071 +\\"Jun 22, 2019 @ 00:00:00.000\\",730663 +\\"Jun 22, 2019 @ 00:00:00.000\\",731788 +\\"Jun 21, 2019 @ 00:00:00.000\\",562585 +\\"Jun 21, 2019 @ 00:00:00.000\\",562597 +\\"Jun 21, 2019 @ 00:00:00.000\\",562598 +\\"Jun 21, 2019 @ 00:00:00.000\\",562629 +\\"Jun 21, 2019 @ 00:00:00.000\\",562630 +\\"Jun 21, 2019 @ 00:00:00.000\\",562654 +\\"Jun 21, 2019 @ 00:00:00.000\\",562665 +\\"Jun 21, 2019 @ 00:00:00.000\\",562667 +\\"Jun 21, 2019 @ 00:00:00.000\\",562668 +\\"Jun 21, 2019 @ 00:00:00.000\\",562672 +\\"Jun 21, 2019 @ 00:00:00.000\\",562688 +\\"Jun 21, 2019 @ 00:00:00.000\\",562699 +\\"Jun 21, 2019 @ 00:00:00.000\\",562705 +\\"Jun 21, 2019 @ 00:00:00.000\\",562715 +\\"Jun 21, 2019 @ 00:00:00.000\\",562720 +\\"Jun 21, 2019 @ 00:00:00.000\\",562723 +\\"Jun 21, 2019 @ 00:00:00.000\\",562729 +\\"Jun 21, 2019 @ 00:00:00.000\\",562745 +\\"Jun 21, 2019 @ 00:00:00.000\\",562759 +\\"Jun 21, 2019 @ 00:00:00.000\\",562762 +\\"Jun 21, 2019 @ 00:00:00.000\\",562763 +\\"Jun 21, 2019 @ 00:00:00.000\\",562792 +\\"Jun 21, 2019 @ 00:00:00.000\\",562794 +\\"Jun 21, 2019 @ 00:00:00.000\\",562797 +\\"Jun 21, 2019 @ 00:00:00.000\\",562817 +\\"Jun 21, 2019 @ 00:00:00.000\\",562833 +\\"Jun 21, 2019 @ 00:00:00.000\\",562835 +\\"Jun 21, 2019 @ 00:00:00.000\\",562853 +\\"Jun 21, 2019 @ 00:00:00.000\\",562875 +\\"Jun 21, 2019 @ 00:00:00.000\\",562881 +\\"Jun 21, 2019 @ 00:00:00.000\\",562882 +\\"Jun 21, 2019 @ 00:00:00.000\\",562899 +\\"Jun 21, 2019 @ 00:00:00.000\\",562900 +\\"Jun 21, 2019 @ 00:00:00.000\\",562914 +\\"Jun 21, 2019 @ 00:00:00.000\\",562919 +\\"Jun 21, 2019 @ 00:00:00.000\\",562934 +\\"Jun 21, 2019 @ 00:00:00.000\\",562948 +\\"Jun 21, 2019 @ 00:00:00.000\\",562963 +\\"Jun 21, 2019 @ 00:00:00.000\\",562976 +\\"Jun 21, 2019 @ 00:00:00.000\\",562978 +\\"Jun 21, 2019 @ 00:00:00.000\\",562989 +\\"Jun 21, 2019 @ 00:00:00.000\\",562993 +\\"Jun 21, 2019 @ 00:00:00.000\\",562994 +\\"Jun 21, 2019 @ 00:00:00.000\\",563016 +\\"Jun 21, 2019 @ 00:00:00.000\\",563023 +\\"Jun 21, 2019 @ 00:00:00.000\\",563026 +\\"Jun 21, 2019 @ 00:00:00.000\\",563037 +\\"Jun 21, 2019 @ 00:00:00.000\\",563054 +\\"Jun 21, 2019 @ 00:00:00.000\\",563060 +\\"Jun 21, 2019 @ 00:00:00.000\\",563066 +\\"Jun 21, 2019 @ 00:00:00.000\\",563084 +\\"Jun 21, 2019 @ 00:00:00.000\\",563093 +\\"Jun 21, 2019 @ 00:00:00.000\\",563105 +\\"Jun 21, 2019 @ 00:00:00.000\\",563108 +\\"Jun 21, 2019 @ 00:00:00.000\\",563113 +\\"Jun 21, 2019 @ 00:00:00.000\\",563119 +\\"Jun 21, 2019 @ 00:00:00.000\\",563131 +\\"Jun 21, 2019 @ 00:00:00.000\\",563150 +\\"Jun 21, 2019 @ 00:00:00.000\\",563152 +\\"Jun 21, 2019 @ 00:00:00.000\\",563167 +\\"Jun 21, 2019 @ 00:00:00.000\\",563181 +\\"Jun 21, 2019 @ 00:00:00.000\\",563187 +\\"Jun 21, 2019 @ 00:00:00.000\\",563193 +\\"Jun 21, 2019 @ 00:00:00.000\\",563195 +\\"Jun 21, 2019 @ 00:00:00.000\\",563212 +\\"Jun 21, 2019 @ 00:00:00.000\\",563218 +\\"Jun 21, 2019 @ 00:00:00.000\\",563246 +\\"Jun 21, 2019 @ 00:00:00.000\\",563249 +\\"Jun 21, 2019 @ 00:00:00.000\\",563250 +\\"Jun 21, 2019 @ 00:00:00.000\\",563254 +\\"Jun 21, 2019 @ 00:00:00.000\\",563275 +\\"Jun 21, 2019 @ 00:00:00.000\\",563282 +\\"Jun 21, 2019 @ 00:00:00.000\\",563286 +\\"Jun 21, 2019 @ 00:00:00.000\\",563317 +\\"Jun 21, 2019 @ 00:00:00.000\\",563324 +\\"Jun 21, 2019 @ 00:00:00.000\\",563326 +\\"Jun 21, 2019 @ 00:00:00.000\\",563336 +\\"Jun 21, 2019 @ 00:00:00.000\\",563341 +\\"Jun 21, 2019 @ 00:00:00.000\\",563342 +\\"Jun 21, 2019 @ 00:00:00.000\\",563365 +\\"Jun 21, 2019 @ 00:00:00.000\\",563366 +\\"Jun 21, 2019 @ 00:00:00.000\\",563371 +\\"Jun 21, 2019 @ 00:00:00.000\\",563383 +\\"Jun 21, 2019 @ 00:00:00.000\\",563392 +\\"Jun 21, 2019 @ 00:00:00.000\\",563419 +\\"Jun 21, 2019 @ 00:00:00.000\\",563436 +\\"Jun 21, 2019 @ 00:00:00.000\\",563440 +\\"Jun 21, 2019 @ 00:00:00.000\\",563442 +\\"Jun 21, 2019 @ 00:00:00.000\\",563460 +\\"Jun 21, 2019 @ 00:00:00.000\\",563468 +\\"Jun 21, 2019 @ 00:00:00.000\\",563485 +\\"Jun 21, 2019 @ 00:00:00.000\\",563489 +\\"Jun 21, 2019 @ 00:00:00.000\\",563492 +\\"Jun 21, 2019 @ 00:00:00.000\\",563496 +\\"Jun 21, 2019 @ 00:00:00.000\\",563503 +\\"Jun 21, 2019 @ 00:00:00.000\\",563534 +\\"Jun 21, 2019 @ 00:00:00.000\\",563548 +\\"Jun 21, 2019 @ 00:00:00.000\\",563554 +\\"Jun 21, 2019 @ 00:00:00.000\\",563558 +\\"Jun 21, 2019 @ 00:00:00.000\\",563573 +\\"Jun 21, 2019 @ 00:00:00.000\\",563579 +\\"Jun 21, 2019 @ 00:00:00.000\\",563602 +\\"Jun 21, 2019 @ 00:00:00.000\\",563604 +\\"Jun 21, 2019 @ 00:00:00.000\\",563607 +\\"Jun 21, 2019 @ 00:00:00.000\\",563622 +\\"Jun 21, 2019 @ 00:00:00.000\\",563639 +\\"Jun 21, 2019 @ 00:00:00.000\\",563644 +\\"Jun 21, 2019 @ 00:00:00.000\\",563647 +\\"Jun 21, 2019 @ 00:00:00.000\\",563657 +\\"Jun 21, 2019 @ 00:00:00.000\\",563666 +\\"Jun 21, 2019 @ 00:00:00.000\\",563697 +\\"Jun 21, 2019 @ 00:00:00.000\\",563698 +\\"Jun 21, 2019 @ 00:00:00.000\\",563701 +\\"Jun 21, 2019 @ 00:00:00.000\\",563704 +\\"Jun 21, 2019 @ 00:00:00.000\\",563711 +\\"Jun 21, 2019 @ 00:00:00.000\\",563736 +\\"Jun 21, 2019 @ 00:00:00.000\\",563737 +\\"Jun 21, 2019 @ 00:00:00.000\\",563755 +\\"Jun 21, 2019 @ 00:00:00.000\\",563761 +\\"Jun 21, 2019 @ 00:00:00.000\\",563763 +\\"Jun 21, 2019 @ 00:00:00.000\\",563775 +\\"Jun 21, 2019 @ 00:00:00.000\\",563778 +\\"Jun 21, 2019 @ 00:00:00.000\\",563796 +\\"Jun 21, 2019 @ 00:00:00.000\\",563800 +\\"Jun 21, 2019 @ 00:00:00.000\\",563813 +\\"Jun 21, 2019 @ 00:00:00.000\\",563822 +\\"Jun 21, 2019 @ 00:00:00.000\\",563825 +\\"Jun 21, 2019 @ 00:00:00.000\\",563829 +\\"Jun 21, 2019 @ 00:00:00.000\\",563846 +\\"Jun 21, 2019 @ 00:00:00.000\\",563860 +\\"Jun 21, 2019 @ 00:00:00.000\\",563867 +\\"Jun 21, 2019 @ 00:00:00.000\\",563887 +\\"Jun 21, 2019 @ 00:00:00.000\\",563888 +\\"Jun 21, 2019 @ 00:00:00.000\\",563907 +\\"Jun 21, 2019 @ 00:00:00.000\\",714638 +\\"Jun 21, 2019 @ 00:00:00.000\\",715450 +\\"Jun 21, 2019 @ 00:00:00.000\\",716616 +\\"Jun 21, 2019 @ 00:00:00.000\\",723905 +\\"Jun 21, 2019 @ 00:00:00.000\\",725079 +\\"Jun 21, 2019 @ 00:00:00.000\\",727576 +\\"Jun 21, 2019 @ 00:00:00.000\\",728845 +\\"Jun 20, 2019 @ 00:00:00.000\\",561210 +\\"Jun 20, 2019 @ 00:00:00.000\\",561215 +\\"Jun 20, 2019 @ 00:00:00.000\\",561217 +\\"Jun 20, 2019 @ 00:00:00.000\\",561218 +\\"Jun 20, 2019 @ 00:00:00.000\\",561225 +\\"Jun 20, 2019 @ 00:00:00.000\\",561236 +\\"Jun 20, 2019 @ 00:00:00.000\\",561245 +\\"Jun 20, 2019 @ 00:00:00.000\\",561251 +\\"Jun 20, 2019 @ 00:00:00.000\\",561254 +\\"Jun 20, 2019 @ 00:00:00.000\\",561256 +\\"Jun 20, 2019 @ 00:00:00.000\\",561284 +\\"Jun 20, 2019 @ 00:00:00.000\\",561290 +\\"Jun 20, 2019 @ 00:00:00.000\\",561291 +\\"Jun 20, 2019 @ 00:00:00.000\\",561311 +\\"Jun 20, 2019 @ 00:00:00.000\\",561316 +\\"Jun 20, 2019 @ 00:00:00.000\\",561317 +\\"Jun 20, 2019 @ 00:00:00.000\\",561325 +\\"Jun 20, 2019 @ 00:00:00.000\\",561330 +\\"Jun 20, 2019 @ 00:00:00.000\\",561342 +\\"Jun 20, 2019 @ 00:00:00.000\\",561343 +\\"Jun 20, 2019 @ 00:00:00.000\\",561373 +\\"Jun 20, 2019 @ 00:00:00.000\\",561375 +\\"Jun 20, 2019 @ 00:00:00.000\\",561377 +\\"Jun 20, 2019 @ 00:00:00.000\\",561381 +\\"Jun 20, 2019 @ 00:00:00.000\\",561383 +\\"Jun 20, 2019 @ 00:00:00.000\\",561409 +\\"Jun 20, 2019 @ 00:00:00.000\\",561429 +\\"Jun 20, 2019 @ 00:00:00.000\\",561442 +\\"Jun 20, 2019 @ 00:00:00.000\\",561444 +\\"Jun 20, 2019 @ 00:00:00.000\\",561455 +\\"Jun 20, 2019 @ 00:00:00.000\\",561472 +\\"Jun 20, 2019 @ 00:00:00.000\\",561482 +\\"Jun 20, 2019 @ 00:00:00.000\\",561484 +\\"Jun 20, 2019 @ 00:00:00.000\\",561490 +\\"Jun 20, 2019 @ 00:00:00.000\\",561505 +\\"Jun 20, 2019 @ 00:00:00.000\\",561509 +\\"Jun 20, 2019 @ 00:00:00.000\\",561522 +\\"Jun 20, 2019 @ 00:00:00.000\\",561534 +\\"Jun 20, 2019 @ 00:00:00.000\\",561542 +\\"Jun 20, 2019 @ 00:00:00.000\\",561543 +\\"Jun 20, 2019 @ 00:00:00.000\\",561564 +\\"Jun 20, 2019 @ 00:00:00.000\\",561569 +\\"Jun 20, 2019 @ 00:00:00.000\\",561577 +\\"Jun 20, 2019 @ 00:00:00.000\\",561586 +\\"Jun 20, 2019 @ 00:00:00.000\\",561604 +\\"Jun 20, 2019 @ 00:00:00.000\\",561632 +\\"Jun 20, 2019 @ 00:00:00.000\\",561633 +\\"Jun 20, 2019 @ 00:00:00.000\\",561657 +\\"Jun 20, 2019 @ 00:00:00.000\\",561666 +\\"Jun 20, 2019 @ 00:00:00.000\\",561669 +\\"Jun 20, 2019 @ 00:00:00.000\\",561676 +\\"Jun 20, 2019 @ 00:00:00.000\\",561677 +\\"Jun 20, 2019 @ 00:00:00.000\\",561735 +\\"Jun 20, 2019 @ 00:00:00.000\\",561739 +\\"Jun 20, 2019 @ 00:00:00.000\\",561769 +\\"Jun 20, 2019 @ 00:00:00.000\\",561781 +\\"Jun 20, 2019 @ 00:00:00.000\\",561784 +\\"Jun 20, 2019 @ 00:00:00.000\\",561785 +\\"Jun 20, 2019 @ 00:00:00.000\\",561786 +\\"Jun 20, 2019 @ 00:00:00.000\\",561798 +\\"Jun 20, 2019 @ 00:00:00.000\\",561808 +\\"Jun 20, 2019 @ 00:00:00.000\\",561815 +\\"Jun 20, 2019 @ 00:00:00.000\\",561825 +\\"Jun 20, 2019 @ 00:00:00.000\\",561830 +\\"Jun 20, 2019 @ 00:00:00.000\\",561831 +\\"Jun 20, 2019 @ 00:00:00.000\\",561858 +\\"Jun 20, 2019 @ 00:00:00.000\\",561864 +\\"Jun 20, 2019 @ 00:00:00.000\\",561870 +\\"Jun 20, 2019 @ 00:00:00.000\\",561876 +\\"Jun 20, 2019 @ 00:00:00.000\\",561878 +\\"Jun 20, 2019 @ 00:00:00.000\\",561904 +\\"Jun 20, 2019 @ 00:00:00.000\\",561907 +\\"Jun 20, 2019 @ 00:00:00.000\\",561916 +\\"Jun 20, 2019 @ 00:00:00.000\\",561935 +\\"Jun 20, 2019 @ 00:00:00.000\\",561937 +\\"Jun 20, 2019 @ 00:00:00.000\\",561953 +\\"Jun 20, 2019 @ 00:00:00.000\\",561965 +\\"Jun 20, 2019 @ 00:00:00.000\\",561966 +\\"Jun 20, 2019 @ 00:00:00.000\\",561969 +\\"Jun 20, 2019 @ 00:00:00.000\\",561976 +\\"Jun 20, 2019 @ 00:00:00.000\\",561997 +\\"Jun 20, 2019 @ 00:00:00.000\\",562008 +\\"Jun 20, 2019 @ 00:00:00.000\\",562011 +\\"Jun 20, 2019 @ 00:00:00.000\\",562025 +\\"Jun 20, 2019 @ 00:00:00.000\\",562035 +\\"Jun 20, 2019 @ 00:00:00.000\\",562041 +\\"Jun 20, 2019 @ 00:00:00.000\\",562047 +\\"Jun 20, 2019 @ 00:00:00.000\\",562050 +\\"Jun 20, 2019 @ 00:00:00.000\\",562060 +\\"Jun 20, 2019 @ 00:00:00.000\\",562094 +\\"Jun 20, 2019 @ 00:00:00.000\\",562099 +\\"Jun 20, 2019 @ 00:00:00.000\\",562101 +\\"Jun 20, 2019 @ 00:00:00.000\\",562107 +\\"Jun 20, 2019 @ 00:00:00.000\\",562112 +\\"Jun 20, 2019 @ 00:00:00.000\\",562116 +\\"Jun 20, 2019 @ 00:00:00.000\\",562118 +\\"Jun 20, 2019 @ 00:00:00.000\\",562149 +\\"Jun 20, 2019 @ 00:00:00.000\\",562152 +\\"Jun 20, 2019 @ 00:00:00.000\\",562159 +\\"Jun 20, 2019 @ 00:00:00.000\\",562161 +\\"Jun 20, 2019 @ 00:00:00.000\\",562165 +\\"Jun 20, 2019 @ 00:00:00.000\\",562166 +\\"Jun 20, 2019 @ 00:00:00.000\\",562192 +\\"Jun 20, 2019 @ 00:00:00.000\\",562198 +\\"Jun 20, 2019 @ 00:00:00.000\\",562211 +\\"Jun 20, 2019 @ 00:00:00.000\\",562236 +\\"Jun 20, 2019 @ 00:00:00.000\\",562247 +\\"Jun 20, 2019 @ 00:00:00.000\\",562275 +\\"Jun 20, 2019 @ 00:00:00.000\\",562281 +\\"Jun 20, 2019 @ 00:00:00.000\\",562285 +\\"Jun 20, 2019 @ 00:00:00.000\\",562287 +\\"Jun 20, 2019 @ 00:00:00.000\\",562290 +\\"Jun 20, 2019 @ 00:00:00.000\\",562298 +\\"Jun 20, 2019 @ 00:00:00.000\\",562304 +\\"Jun 20, 2019 @ 00:00:00.000\\",562323 +\\"Jun 20, 2019 @ 00:00:00.000\\",562324 +\\"Jun 20, 2019 @ 00:00:00.000\\",562337 +\\"Jun 20, 2019 @ 00:00:00.000\\",562351 +\\"Jun 20, 2019 @ 00:00:00.000\\",562352 +\\"Jun 20, 2019 @ 00:00:00.000\\",562358 +\\"Jun 20, 2019 @ 00:00:00.000\\",562367 +\\"Jun 20, 2019 @ 00:00:00.000\\",562390 +\\"Jun 20, 2019 @ 00:00:00.000\\",562394 +\\"Jun 20, 2019 @ 00:00:00.000\\",562400 +\\"Jun 20, 2019 @ 00:00:00.000\\",562403 +\\"Jun 20, 2019 @ 00:00:00.000\\",562404 +\\"Jun 20, 2019 @ 00:00:00.000\\",562424 +\\"Jun 20, 2019 @ 00:00:00.000\\",562425 +\\"Jun 20, 2019 @ 00:00:00.000\\",562439 +\\"Jun 20, 2019 @ 00:00:00.000\\",562442 +\\"Jun 20, 2019 @ 00:00:00.000\\",562456 +\\"Jun 20, 2019 @ 00:00:00.000\\",562463 +\\"Jun 20, 2019 @ 00:00:00.000\\",562464 +\\"Jun 20, 2019 @ 00:00:00.000\\",562473 +\\"Jun 20, 2019 @ 00:00:00.000\\",562488 +\\"Jun 20, 2019 @ 00:00:00.000\\",562499 +\\"Jun 20, 2019 @ 00:00:00.000\\",562513 +\\"Jun 20, 2019 @ 00:00:00.000\\",562516 +\\"Jun 20, 2019 @ 00:00:00.000\\",562523 +\\"Jun 20, 2019 @ 00:00:00.000\\",562528 +\\"Jun 20, 2019 @ 00:00:00.000\\",562553 +\\"Jun 20, 2019 @ 00:00:00.000\\",562572 +\\"Jun 20, 2019 @ 00:00:00.000\\",713242 +\\"Jun 20, 2019 @ 00:00:00.000\\",714021 +\\"Jun 20, 2019 @ 00:00:00.000\\",715286 +\\"Jun 20, 2019 @ 00:00:00.000\\",715688 +\\"Jun 20, 2019 @ 00:00:00.000\\",717426 +\\"Jun 20, 2019 @ 00:00:00.000\\",718183 +\\"Jun 20, 2019 @ 00:00:00.000\\",718360 +\\"Jun 20, 2019 @ 00:00:00.000\\",719041 +\\"Jun 20, 2019 @ 00:00:00.000\\",719082 +\\"Jun 20, 2019 @ 00:00:00.000\\",719185 +\\"Jun 20, 2019 @ 00:00:00.000\\",719343 +\\"Jun 20, 2019 @ 00:00:00.000\\",720967 +\\"Jun 20, 2019 @ 00:00:00.000\\",724573 +\\"Jun 20, 2019 @ 00:00:00.000\\",725944 +\\"Jun 20, 2019 @ 00:00:00.000\\",726377 +\\"Jun 20, 2019 @ 00:00:00.000\\",726879 +\\"Jun 20, 2019 @ 00:00:00.000\\",729671 +\\"Jun 20, 2019 @ 00:00:00.000\\",729673 +\\"Jun 20, 2019 @ 00:00:00.000\\",730333 +\\"Jun 20, 2019 @ 00:00:00.000\\",731424 +\\"Jun 20, 2019 @ 00:00:00.000\\",732071 " `; diff --git a/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/reporting.ts b/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/reporting.ts index 319f9e0bab29a..b54a55cce68c4 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/reporting.ts +++ b/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/reporting.ts @@ -24,6 +24,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'discover', 'timePicker', 'share', + 'unifiedFieldList', + 'timePicker', ]); const filterBar = getService('filterBar'); const toasts = getService('toasts'); @@ -54,26 +56,30 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }; describe('Discover CSV Export', function () { - // see details: https://github.com/elastic/kibana/issues/197957 - this.tags(['failsOnMKI']); - describe('Check Available', () => { - before(async () => { - await PageObjects.svlCommonPage.loginAsAdmin(); - // TODO: emptyKibanaIndex fails in Serverless with - // "index_not_found_exception: no such index [.kibana_ingest]", - // so it was switched to `savedObjects.cleanStandardList()` - await kibanaServer.savedObjects.cleanStandardList(); - await reportingAPI.initEcommerce(); - await PageObjects.common.navigateToApp('discover'); - await PageObjects.discover.selectIndexPattern('ecommerce'); + before(async () => { + await PageObjects.svlCommonPage.loginAsAdmin(); + // TODO: emptyKibanaIndex fails in Serverless with + // "index_not_found_exception: no such index [.kibana_ingest]", + // so it was switched to `savedObjects.cleanStandardList()` + await kibanaServer.savedObjects.cleanStandardList(); + await reportingAPI.initEcommerce({ + batchSize: 5000, + concurrency: 4, }); + await PageObjects.common.navigateToApp('discover'); + }); - after(async () => { - await reportingAPI.teardownEcommerce(); - // TODO: emptyKibanaIndex fails in Serverless with - // "index_not_found_exception: no such index [.kibana_ingest]", - // so it was switched to `savedObjects.cleanStandardList()` - await kibanaServer.savedObjects.cleanStandardList(); + after(async () => { + await reportingAPI.teardownEcommerce(); + // TODO: emptyKibanaIndex fails in Serverless with + // "index_not_found_exception: no such index [.kibana_ingest]", + // so it was switched to `savedObjects.cleanStandardList()` + await kibanaServer.savedObjects.cleanStandardList(); + }); + + describe('Check Available', () => { + before(async () => { + await PageObjects.discover.loadSavedSearch('Ecommerce Data'); }); afterEach(async () => { @@ -86,35 +92,21 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('becomes available when saved', async () => { - await PageObjects.discover.saveSearch('my search - expectEnabledGenerateReportButton'); + await PageObjects.discover.saveSearch( + 'my search - expectEnabledGenerateReportButton', + true + ); await PageObjects.reporting.openExportTab(); expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be(null); }); }); - // FLAKY: https://github.com/elastic/kibana/issues/182603 - describe.skip('Generate CSV: new search', () => { - before(async () => { - await reportingAPI.initEcommerce(); - }); - - after(async () => { - await reportingAPI.teardownEcommerce(); - // TODO: emptyKibanaIndex fails in Serverless with - // "index_not_found_exception: no such index [.kibana_ingest]", - // so it was switched to `savedObjects.cleanStandardList()` - await kibanaServer.savedObjects.cleanStandardList(); - }); - - beforeEach(async () => { - await PageObjects.common.navigateToApp('discover'); - await PageObjects.discover.selectIndexPattern('ecommerce'); - }); - + describe('Generate CSV: new search', () => { it('generates a report from a new search with data: default', async () => { await PageObjects.discover.clickNewSearchButton(); await PageObjects.reporting.setTimepickerInEcommerceDataRange(); - + await PageObjects.unifiedFieldList.clickFieldListItemAdd('order_id'); + await PageObjects.discover.clickFieldSort('order_id', 'Sort A-Z'); await PageObjects.discover.saveSearch('my search - with data - expectReportCanBeCreated'); const res = await getReport(); @@ -127,6 +119,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('generates a report with no data', async () => { await PageObjects.reporting.setTimepickerInEcommerceNoDataRange(); + await PageObjects.discover.clickNewSearchButton(); await PageObjects.discover.saveSearch('my search - no data - expectReportCanBeCreated'); const res = await getReport(); @@ -134,10 +127,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('generates a large export', async () => { + await PageObjects.discover.clickNewSearchButton(); const fromTime = 'Apr 27, 2019 @ 23:56:51.374'; const toTime = 'Aug 23, 2019 @ 16:18:51.821'; await PageObjects.timePicker.setAbsoluteRange(fromTime, toTime); - await PageObjects.discover.clickNewSearchButton(); + await retry.try(async () => { expect(await PageObjects.discover.getHitCount()).to.equal('4,675'); }); @@ -146,8 +140,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // match file length, the beginning and the end of the csv file contents const { text: csvFile } = await getReport({ timeout: 80 * 1000 }); expect(csvFile.length).to.be(4845684); - expectSnapshot(csvFile.slice(0, 5000)).toMatch(); - expectSnapshot(csvFile.slice(-5000)).toMatch(); + + // to make sure the order of records is stable we need to sort by the unique Order Id + await PageObjects.unifiedFieldList.clickFieldListItemAdd('order_id'); + await PageObjects.discover.clickFieldSort('order_id', 'Sort A-Z'); + const { text: csvFileOrderId } = await getReport({ timeout: 80 * 1000 }); + expectSnapshot(csvFileOrderId.slice(0, 5000)).toMatch(); + expectSnapshot(csvFileOrderId.slice(-5000)).toMatch(); }); }); @@ -252,13 +251,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }; before(async () => { - await reportingAPI.initEcommerce(); - await PageObjects.common.navigateToApp('discover'); - await PageObjects.discover.selectIndexPattern('ecommerce'); - }); - - after(async () => { - await reportingAPI.teardownEcommerce(); + await PageObjects.discover.loadSavedSearch('Ecommerce Data'); }); beforeEach(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/common/platform_security/user_profiles/user_profiles.ts b/x-pack/test_serverless/functional/test_suites/common/platform_security/user_profiles/user_profiles.ts index 71e278e59075e..f6039a5c7050c 100644 --- a/x-pack/test_serverless/functional/test_suites/common/platform_security/user_profiles/user_profiles.ts +++ b/x-pack/test_serverless/functional/test_suites/common/platform_security/user_profiles/user_profiles.ts @@ -29,8 +29,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const actualFullname = await pageObjects.userProfiles.getProfileFullname(); const actualEmail = await pageObjects.userProfiles.getProfileEmail(); - expect(actualFullname).to.be(userData.full_name); - expect(actualEmail).to.be(userData.email); + expect(actualFullname).to.contain(userData.full_name); + expect(actualEmail).to.contain(userData.email); }); it('should not have edit actions', async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/data/logs_data.ts b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/data/logs_data.ts index 3692a17709a2e..cd1668484337e 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/data/logs_data.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/data/logs_data.ts @@ -217,3 +217,7 @@ export const MORE_THAN_1024_CHARS = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?'; export const ANOTHER_1024_CHARS = 'grape fig tangerine tangerine kiwi lemon papaya cherry nectarine papaya mango cherry nectarine fig cherry fig grape mango mango quince fig strawberry mango quince date kiwi quince raspberry apple kiwi banana quince fig papaya grape mango cherry banana mango cherry lemon cherry tangerine fig quince quince papaya tangerine grape strawberry banana kiwi grape mango papaya nectarine banana nectarine kiwi papaya lemon apple lemon orange fig cherry grape apple nectarine papaya orange fig papaya date mango papaya mango cherry tangerine papaya apple banana papaya cherry strawberry grape raspberry lemon date papaya mango kiwi cherry fig banana banana apple date strawberry mango tangerine date lemon kiwi quince date orange orange papaya date apple fig tangerine quince tangerine date papaya banana banana orange raspberry papaya apple nectarine lemon raspberry raspberry mango cherry kiwi cherry cherry nectarine cherry date strawberry banana orange mango mango tangerine quince papaya papaya kiwi papaya strawberry date mango'; + +export const CONSISTENT_TAGS = [ + 'this_is_here_to_remove_variance_introduced_by_the_geoip_processor', +]; diff --git a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/degraded_field_flyout.ts b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/degraded_field_flyout.ts index 7d12db16850cc..4152a745d8541 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/degraded_field_flyout.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/degraded_field_flyout.ts @@ -9,11 +9,12 @@ import expect from '@kbn/expect'; import moment from 'moment'; import { generateShortId, log, timerange } from '@kbn/apm-synthtrace-client'; import { + ANOTHER_1024_CHARS, + CONSISTENT_TAGS, + MORE_THAN_1024_CHARS, createDegradedFieldsRecord, defaultNamespace, getInitialTestLogs, - ANOTHER_1024_CHARS, - MORE_THAN_1024_CHARS, } from './data'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { logsSynthMappings } from './custom_mappings/custom_synth_mappings'; @@ -55,8 +56,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const apmAppDataStreamName = `${type}-${apmAppDatasetName}-${defaultNamespace}`; describe('Degraded fields flyout', function () { - // see details: https://github.com/elastic/kibana/issues/202641 - this.tags(['failsOnMKI']); describe('degraded field flyout open-close', () => { before(async () => { await synthtrace.index([ @@ -207,6 +206,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'service.name': serviceName, 'trace.id': generateShortId(), test_field: [MORE_THAN_1024_CHARS, ANOTHER_1024_CHARS], + // this works around a geoip limitation in CI + tags: CONSISTENT_TAGS, }) .timestamp(timestamp) ); @@ -300,6 +301,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'trace.id': generateShortId(), test_field: [MORE_THAN_1024_CHARS, ANOTHER_1024_CHARS], 'cloud.project.id': generateShortId(), + // this works around a geoip limitation in CI + tags: CONSISTENT_TAGS, }) .timestamp(timestamp) ); @@ -410,6 +413,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'trace.id': generateShortId(), test_field: [MORE_THAN_1024_CHARS, ANOTHER_1024_CHARS], 'cloud.project.id': generateShortId(), + // this works around a geoip limitation in CI + tags: CONSISTENT_TAGS, }) .timestamp(timestamp) ); diff --git a/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/_get_row_indicator_provider.ts b/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/_get_row_indicator_provider.ts index 2c7338627ddfe..cf4658c52a9b7 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/_get_row_indicator_provider.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/_get_row_indicator_provider.ts @@ -85,9 +85,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const firstColorIndicator = await firstCell.findByTestSubject( 'unifiedDataTableRowColorIndicatorCell' ); - expect(await firstColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(190, 207, 227, 1)' - ); expect(await firstColorIndicator.getAttribute('title')).to.be('Debug'); }); @@ -105,18 +102,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'unifiedDataTableRowColorIndicatorCell' ); expect(await anchorColorIndicator.getAttribute('title')).to.be('Debug'); - expect(await anchorColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(190, 207, 227, 1)' - ); let nextCell = await dataGrid.getCellElement(1, 0); let nextColorIndicator = await nextCell.findByTestSubject( 'unifiedDataTableRowColorIndicatorCell' ); expect(await nextColorIndicator.getAttribute('title')).to.be('Error'); - expect(await nextColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(223, 147, 82, 1)' - ); await browser.refresh(); await PageObjects.header.waitUntilLoadingHasFinished(); @@ -127,18 +118,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'unifiedDataTableRowColorIndicatorCell' ); expect(await anchorColorIndicator.getAttribute('title')).to.be('Debug'); - expect(await anchorColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(190, 207, 227, 1)' - ); nextCell = await dataGrid.getCellElement(1, 0); nextColorIndicator = await nextCell.findByTestSubject( 'unifiedDataTableRowColorIndicatorCell' ); expect(await nextColorIndicator.getAttribute('title')).to.be('Error'); - expect(await nextColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(223, 147, 82, 1)' - ); }); }); } diff --git a/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/telemetry/_telemetry.ts b/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/telemetry/_telemetry.ts index cc0b7c25abb30..56e900e87f588 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/telemetry/_telemetry.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/telemetry/_telemetry.ts @@ -123,6 +123,111 @@ export default function ({ getService, getPageObjects }: ObservabilityTelemetryF }); }); + describe('contextual profiles', () => { + before(async () => { + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + }); + + after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + }); + + it('should send EBT events when a different data source profile gets resolved', async () => { + await common.navigateToApp('discover'); + await discover.selectTextBaseLang(); + await discover.waitUntilSearchingHasFinished(); + await monacoEditor.setCodeEditorValue('from my-example-logs | sort @timestamp desc'); + await ebtUIHelper.setOptIn(true); // starts the recording of events from this moment + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + let events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events[0].properties).to.eql({ + contextLevel: 'rootLevel', + profileId: 'observability-root-profile', + }); + + expect(events[1].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'default-data-source-profile', + }); + + expect(events[2].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'observability-logs-data-source-profile', + }); + + // should not trigger any new events after a simple refresh + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(3); + + // should detect a new data source profile when switching to a different data source + await monacoEditor.setCodeEditorValue('from my-example-* | sort @timestamp desc'); + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events[3].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'default-data-source-profile', + }); + + expect(events.length).to.be(4); + }); + + it('should send EBT events when a different document profile gets resolved', async () => { + await common.navigateToApp('discover'); + await discover.selectTextBaseLang(); + await monacoEditor.setCodeEditorValue('from my-example-logs | sort @timestamp desc'); + await ebtUIHelper.setOptIn(true); // starts the recording of events from this moment + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + let events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(3); + + // should trigger a new event after opening the doc viewer + await dataGrid.clickRowToggle(); + await discover.isShowingDocViewer(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(4); + + expect(events[events.length - 1].properties).to.eql({ + contextLevel: 'documentLevel', + profileId: 'observability-log-document-profile', + }); + }); + }); + describe('events', () => { beforeEach(async () => { await common.navigateToApp('discover'); diff --git a/x-pack/test_serverless/functional/test_suites/search/inference_management.ts b/x-pack/test_serverless/functional/test_suites/search/inference_management.ts index ecb49911edb18..fce97e3bbf475 100644 --- a/x-pack/test_serverless/functional/test_suites/search/inference_management.ts +++ b/x-pack/test_serverless/functional/test_suites/search/inference_management.ts @@ -23,13 +23,16 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const ml = getService('ml'); describe('Serverless Inference Management UI', function () { + // see details: https://github.com/elastic/kibana/issues/204539 + this.tags(['failsOnMKI']); const endpoint = 'endpoint-1'; const taskType = 'sparse_embedding'; const modelConfig = { - service: 'elser', + service: 'elasticsearch', service_settings: { num_allocations: 1, num_threads: 1, + model_id: '.elser_model_2', }, }; diff --git a/yarn.lock b/yarn.lock index 47aad7866ae0c..561c7c92280e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2277,12 +2277,13 @@ "@elastic/transport" "^8.3.1" tslib "^2.4.0" -"@elastic/elasticsearch@^8.15.2": - version "8.15.2" - resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.15.2.tgz#024e3617b0d1db6425b369a7176d3514598e4c9e" - integrity sha512-DTvjK4bs4WkgdQkXZJx2eVcwKzF1it/PyGT3rl1ReUNIWbkzMEKksiDQK3wY1U3WHT4zTuWQi4GrDOC1w5ej8Q== +"@elastic/elasticsearch@^8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.16.0.tgz#35c6729e15684154b8b3c391cfad34877d771cf0" + integrity sha512-uiPC6AePESl/jakx+ZLarLsLdxDHiCSrpAkkXJ5Q8A78vadEQsTGXRUVFwWWkS8gfGthnT3O+QK6BHXuszd0KQ== dependencies: - "@elastic/transport" "^8.8.1" + "@elastic/transport" "^8.9.1" + apache-arrow "^18.0.0" tslib "^2.4.0" "@elastic/ems-client@8.5.3": @@ -2475,10 +2476,10 @@ undici "^5.28.3" yaml "^2.2.2" -"@elastic/transport@^8.3.1", "@elastic/transport@^8.8.1": - version "8.8.1" - resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.8.1.tgz#d64244907bccdad5626c860b492faeef12194b1f" - integrity sha512-4RQIiChwNIx3B0O+2JdmTq/Qobj6+1g2RQnSv1gt4V2SVfAYjGwOKu0ZMKEHQOXYNG6+j/Chero2G9k3/wXLEw== +"@elastic/transport@^8.3.1", "@elastic/transport@^8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.9.1.tgz#1acc090ac45903a3d5a8b7269f6ba6410108dc0a" + integrity sha512-jasKNQeOb1vNf9aEYg+8zXmetaFjApDTSCC4QTl6aTixvyiRiSLcCiB8P6Q0lY9JIII/BhqNl8WbpFnsKitntw== dependencies: "@opentelemetry/api" "1.x" debug "^4.3.4" @@ -3844,11 +3845,15 @@ version "0.0.0" uid "" -"@kbn/ai-assistant-common@link:x-pack/packages/kbn-ai-assistant-common": +"@kbn/ai-assistant-common@link:x-pack/platform/packages/shared/ai-assistant/common": version "0.0.0" uid "" -"@kbn/ai-assistant-management-plugin@link:src/plugins/ai_assistant_management/selection": +"@kbn/ai-assistant-icon@link:x-pack/platform/packages/shared/ai-assistant/icon": + version "0.0.0" + uid "" + +"@kbn/ai-assistant-management-plugin@link:src/platform/plugins/shared/ai_assistant_management/selection": version "0.0.0" uid "" @@ -4008,7 +4013,7 @@ version "0.0.0" uid "" -"@kbn/asset-inventory-plugin@link:x-pack/plugins/asset_inventory": +"@kbn/asset-inventory-plugin@link:x-pack/solutions/security/plugins/asset_inventory": version "0.0.0" uid "" @@ -4016,7 +4021,7 @@ version "0.0.0" uid "" -"@kbn/avc-banner@link:packages/kbn-avc-banner": +"@kbn/avc-banner@link:src/platform/packages/shared/kbn-avc-banner": version "0.0.0" uid "" @@ -4048,10 +4053,6 @@ version "0.0.0" uid "" -"@kbn/bfetch-explorer-plugin@link:examples/bfetch_explorer": - version "0.0.0" - uid "" - "@kbn/bfetch-plugin@link:src/plugins/bfetch": version "0.0.0" uid "" @@ -4088,7 +4089,7 @@ version "0.0.0" uid "" -"@kbn/cell-actions@link:packages/kbn-cell-actions": +"@kbn/cell-actions@link:src/platform/packages/shared/kbn-cell-actions": version "0.0.0" uid "" @@ -4136,11 +4137,11 @@ version "0.0.0" uid "" -"@kbn/cloud-data-migration-plugin@link:x-pack/plugins/cloud_integrations/cloud_data_migration": +"@kbn/cloud-data-migration-plugin@link:x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration": version "0.0.0" uid "" -"@kbn/cloud-defend-plugin@link:x-pack/plugins/cloud_defend": +"@kbn/cloud-defend-plugin@link:x-pack/solutions/security/plugins/cloud_defend": version "0.0.0" uid "" @@ -4164,19 +4165,19 @@ version "0.0.0" uid "" -"@kbn/cloud-security-posture-common@link:x-pack/packages/kbn-cloud-security-posture/common": +"@kbn/cloud-security-posture-common@link:x-pack/platform/packages/shared/kbn-cloud-security-posture/common": version "0.0.0" uid "" -"@kbn/cloud-security-posture-graph@link:x-pack/packages/kbn-cloud-security-posture/graph": +"@kbn/cloud-security-posture-graph@link:x-pack/solutions/security/packages/kbn-cloud-security-posture/graph": version "0.0.0" uid "" -"@kbn/cloud-security-posture-plugin@link:x-pack/plugins/cloud_security_posture": +"@kbn/cloud-security-posture-plugin@link:x-pack/solutions/security/plugins/cloud_security_posture": version "0.0.0" uid "" -"@kbn/cloud-security-posture@link:x-pack/packages/kbn-cloud-security-posture/public": +"@kbn/cloud-security-posture@link:x-pack/solutions/security/packages/kbn-cloud-security-posture/public": version "0.0.0" uid "" @@ -4212,7 +4213,7 @@ version "0.0.0" uid "" -"@kbn/console-plugin@link:src/plugins/console": +"@kbn/console-plugin@link:src/platform/plugins/shared/console": version "0.0.0" uid "" @@ -5176,7 +5177,7 @@ version "0.0.0" uid "" -"@kbn/cross-cluster-replication-plugin@link:x-pack/plugins/cross_cluster_replication": +"@kbn/cross-cluster-replication-plugin@link:x-pack/platform/plugins/private/cross_cluster_replication": version "0.0.0" uid "" @@ -5216,7 +5217,7 @@ version "0.0.0" uid "" -"@kbn/data-forge@link:x-pack/packages/kbn-data-forge": +"@kbn/data-forge@link:x-pack/platform/packages/shared/kbn-data-forge": version "0.0.0" uid "" @@ -5236,11 +5237,11 @@ version "0.0.0" uid "" -"@kbn/data-stream-adapter@link:packages/kbn-data-stream-adapter": +"@kbn/data-stream-adapter@link:x-pack/solutions/security/packages/data-stream-adapter": version "0.0.0" uid "" -"@kbn/data-usage-plugin@link:x-pack/plugins/data_usage": +"@kbn/data-usage-plugin@link:x-pack/platform/plugins/private/data_usage": version "0.0.0" uid "" @@ -5284,7 +5285,7 @@ version "0.0.0" uid "" -"@kbn/deeplinks-devtools@link:packages/deeplinks/devtools": +"@kbn/deeplinks-devtools@link:src/platform/packages/shared/deeplinks/devtools": version "0.0.0" uid "" @@ -5292,7 +5293,7 @@ version "0.0.0" uid "" -"@kbn/deeplinks-management@link:packages/deeplinks/management": +"@kbn/deeplinks-management@link:src/platform/packages/shared/deeplinks/management": version "0.0.0" uid "" @@ -5300,7 +5301,7 @@ version "0.0.0" uid "" -"@kbn/deeplinks-observability@link:packages/deeplinks/observability": +"@kbn/deeplinks-observability@link:src/platform/packages/shared/deeplinks/observability": version "0.0.0" uid "" @@ -5308,7 +5309,7 @@ version "0.0.0" uid "" -"@kbn/deeplinks-security@link:packages/deeplinks/security": +"@kbn/deeplinks-security@link:src/platform/packages/shared/deeplinks/security": version "0.0.0" uid "" @@ -5320,11 +5321,11 @@ version "0.0.0" uid "" -"@kbn/default-nav-devtools@link:packages/default-nav/devtools": +"@kbn/default-nav-devtools@link:src/platform/packages/private/default-nav/devtools": version "0.0.0" uid "" -"@kbn/default-nav-management@link:packages/default-nav/management": +"@kbn/default-nav-management@link:src/platform/packages/private/default-nav/management": version "0.0.0" uid "" @@ -5352,7 +5353,7 @@ version "0.0.0" uid "" -"@kbn/dev-tools-plugin@link:src/plugins/dev_tools": +"@kbn/dev-tools-plugin@link:src/platform/plugins/shared/dev_tools": version "0.0.0" uid "" @@ -5404,11 +5405,11 @@ version "0.0.0" uid "" -"@kbn/ecs-data-quality-dashboard-plugin@link:x-pack/plugins/ecs_data_quality_dashboard": +"@kbn/ecs-data-quality-dashboard-plugin@link:x-pack/solutions/security/plugins/ecs_data_quality_dashboard": version "0.0.0" uid "" -"@kbn/ecs-data-quality-dashboard@link:x-pack/packages/security-solution/ecs_data_quality_dashboard": +"@kbn/ecs-data-quality-dashboard@link:x-pack/solutions/security/packages/ecs_data_quality_dashboard": version "0.0.0" uid "" @@ -5416,15 +5417,15 @@ version "0.0.0" uid "" -"@kbn/elastic-assistant-common@link:x-pack/packages/kbn-elastic-assistant-common": +"@kbn/elastic-assistant-common@link:x-pack/platform/packages/shared/kbn-elastic-assistant-common": version "0.0.0" uid "" -"@kbn/elastic-assistant-plugin@link:x-pack/plugins/elastic_assistant": +"@kbn/elastic-assistant-plugin@link:x-pack/solutions/security/plugins/elastic_assistant": version "0.0.0" uid "" -"@kbn/elastic-assistant@link:x-pack/packages/kbn-elastic-assistant": +"@kbn/elastic-assistant@link:x-pack/platform/packages/shared/kbn-elastic-assistant": version "0.0.0" uid "" @@ -5500,7 +5501,7 @@ version "0.0.0" uid "" -"@kbn/es-ui-shared-plugin@link:src/plugins/es_ui_shared": +"@kbn/es-ui-shared-plugin@link:src/platform/plugins/shared/es_ui_shared": version "0.0.0" uid "" @@ -5512,6 +5513,10 @@ version "0.0.0" uid "" +"@kbn/eslint-plugin-css@link:packages/kbn-eslint-plugin-css": + version "0.0.0" + uid "" + "@kbn/eslint-plugin-disable@link:packages/kbn-eslint-plugin-disable": version "0.0.0" uid "" @@ -5600,7 +5605,7 @@ version "0.0.0" uid "" -"@kbn/expandable-flyout@link:packages/kbn-expandable-flyout": +"@kbn/expandable-flyout@link:x-pack/solutions/security/packages/expandable-flyout": version "0.0.0" uid "" @@ -5612,7 +5617,7 @@ version "0.0.0" uid "" -"@kbn/exploratory-view-plugin@link:x-pack/plugins/observability_solution/exploratory_view": +"@kbn/exploratory-view-plugin@link:x-pack/solutions/observability/plugins/exploratory_view": version "0.0.0" uid "" @@ -5832,7 +5837,7 @@ version "0.0.0" uid "" -"@kbn/grokdebugger-plugin@link:x-pack/plugins/grokdebugger": +"@kbn/grokdebugger-plugin@link:x-pack/platform/plugins/private/grokdebugger": version "0.0.0" uid "" @@ -5912,15 +5917,15 @@ version "0.0.0" uid "" -"@kbn/index-adapter@link:packages/kbn-index-adapter": +"@kbn/index-adapter@link:x-pack/solutions/security/packages/index-adapter": version "0.0.0" uid "" -"@kbn/index-lifecycle-management-common-shared@link:x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared": +"@kbn/index-lifecycle-management-common-shared@link:x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared": version "0.0.0" uid "" -"@kbn/index-lifecycle-management-plugin@link:x-pack/plugins/index_lifecycle_management": +"@kbn/index-lifecycle-management-plugin@link:x-pack/platform/plugins/private/index_lifecycle_management": version "0.0.0" uid "" @@ -5928,7 +5933,7 @@ version "0.0.0" uid "" -"@kbn/index-management-shared-types@link:x-pack/packages/index-management/index_management_shared_types": +"@kbn/index-management-shared-types@link:x-pack/platform/packages/shared/index-management/index_management_shared_types": version "0.0.0" uid "" @@ -5948,7 +5953,7 @@ version "0.0.0" uid "" -"@kbn/infra-forge@link:x-pack/packages/kbn-infra-forge": +"@kbn/infra-forge@link:x-pack/platform/packages/private/kbn-infra-forge": version "0.0.0" uid "" @@ -5956,7 +5961,7 @@ version "0.0.0" uid "" -"@kbn/ingest-pipelines-plugin@link:x-pack/plugins/ingest_pipelines": +"@kbn/ingest-pipelines-plugin@link:x-pack/platform/plugins/shared/ingest_pipelines": version "0.0.0" uid "" @@ -5968,7 +5973,7 @@ version "0.0.0" uid "" -"@kbn/integration-assistant-plugin@link:x-pack/plugins/integration_assistant": +"@kbn/integration-assistant-plugin@link:x-pack/platform/plugins/shared/integration_assistant": version "0.0.0" uid "" @@ -5992,19 +5997,19 @@ version "0.0.0" uid "" -"@kbn/investigate-app-plugin@link:x-pack/plugins/observability_solution/investigate_app": +"@kbn/investigate-app-plugin@link:x-pack/solutions/observability/plugins/investigate_app": version "0.0.0" uid "" -"@kbn/investigate-plugin@link:x-pack/plugins/observability_solution/investigate": +"@kbn/investigate-plugin@link:x-pack/solutions/observability/plugins/investigate": version "0.0.0" uid "" -"@kbn/investigation-shared@link:packages/kbn-investigation-shared": +"@kbn/investigation-shared@link:x-pack/solutions/observability/packages/kbn-investigation-shared": version "0.0.0" uid "" -"@kbn/io-ts-utils@link:packages/kbn-io-ts-utils": +"@kbn/io-ts-utils@link:src/platform/packages/shared/kbn-io-ts-utils": version "0.0.0" uid "" @@ -6076,11 +6081,11 @@ version "0.0.0" uid "" -"@kbn/kubernetes-security-plugin@link:x-pack/plugins/kubernetes_security": +"@kbn/kubernetes-security-plugin@link:x-pack/solutions/security/plugins/kubernetes_security": version "0.0.0" uid "" -"@kbn/langchain@link:x-pack/packages/kbn-langchain": +"@kbn/langchain@link:x-pack/platform/packages/shared/kbn-langchain": version "0.0.0" uid "" @@ -6108,11 +6113,11 @@ version "0.0.0" uid "" -"@kbn/license-api-guard-plugin@link:x-pack/plugins/license_api_guard": +"@kbn/license-api-guard-plugin@link:x-pack/platform/plugins/private/license_api_guard": version "0.0.0" uid "" -"@kbn/license-management-plugin@link:x-pack/plugins/license_management": +"@kbn/license-management-plugin@link:x-pack/platform/plugins/shared/license_management": version "0.0.0" uid "" @@ -6184,35 +6189,35 @@ version "0.0.0" uid "" -"@kbn/management-cards-navigation@link:packages/kbn-management/cards_navigation": +"@kbn/management-cards-navigation@link:src/platform/packages/shared/kbn-management/cards_navigation": version "0.0.0" uid "" -"@kbn/management-plugin@link:src/plugins/management": +"@kbn/management-plugin@link:src/platform/plugins/shared/management": version "0.0.0" uid "" -"@kbn/management-settings-application@link:packages/kbn-management/settings/application": +"@kbn/management-settings-application@link:src/platform/packages/private/kbn-management/settings/application": version "0.0.0" uid "" -"@kbn/management-settings-components-field-category@link:packages/kbn-management/settings/components/field_category": +"@kbn/management-settings-components-field-category@link:src/platform/packages/private/kbn-management/settings/components/field_category": version "0.0.0" uid "" -"@kbn/management-settings-components-field-input@link:packages/kbn-management/settings/components/field_input": +"@kbn/management-settings-components-field-input@link:src/platform/packages/shared/kbn-management/settings/components/field_input": version "0.0.0" uid "" -"@kbn/management-settings-components-field-row@link:packages/kbn-management/settings/components/field_row": +"@kbn/management-settings-components-field-row@link:src/platform/packages/shared/kbn-management/settings/components/field_row": version "0.0.0" uid "" -"@kbn/management-settings-components-form@link:packages/kbn-management/settings/components/form": +"@kbn/management-settings-components-form@link:src/platform/packages/private/kbn-management/settings/components/form": version "0.0.0" uid "" -"@kbn/management-settings-field-definition@link:packages/kbn-management/settings/field_definition": +"@kbn/management-settings-field-definition@link:src/platform/packages/shared/kbn-management/settings/field_definition": version "0.0.0" uid "" @@ -6224,11 +6229,11 @@ version "0.0.0" uid "" -"@kbn/management-settings-types@link:packages/kbn-management/settings/types": +"@kbn/management-settings-types@link:src/platform/packages/shared/kbn-management/settings/types": version "0.0.0" uid "" -"@kbn/management-settings-utilities@link:packages/kbn-management/settings/utilities": +"@kbn/management-settings-utilities@link:src/platform/packages/shared/kbn-management/settings/utilities": version "0.0.0" uid "" @@ -6448,27 +6453,35 @@ version "0.0.0" uid "" -"@kbn/observability-ai-assistant-app-plugin@link:x-pack/plugins/observability_solution/observability_ai_assistant_app": +"@kbn/observability-ai-assistant-app-plugin@link:x-pack/solutions/observability/plugins/observability_ai_assistant_app": version "0.0.0" uid "" -"@kbn/observability-ai-assistant-management-plugin@link:x-pack/plugins/observability_solution/observability_ai_assistant_management": +"@kbn/observability-ai-assistant-management-plugin@link:x-pack/solutions/observability/plugins/observability_ai_assistant_management": version "0.0.0" uid "" -"@kbn/observability-ai-assistant-plugin@link:x-pack/plugins/observability_solution/observability_ai_assistant": +"@kbn/observability-ai-assistant-plugin@link:x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant": version "0.0.0" uid "" -"@kbn/observability-alert-details@link:x-pack/packages/observability/alert_details": +"@kbn/observability-ai-common@link:x-pack/solutions/observability/packages/observability_ai/observability_ai_common": version "0.0.0" uid "" -"@kbn/observability-alerting-rule-utils@link:x-pack/packages/observability/alerting_rule_utils": +"@kbn/observability-ai-server@link:x-pack/solutions/observability/packages/observability_ai/observability_ai_server": version "0.0.0" uid "" -"@kbn/observability-alerting-test-data@link:x-pack/packages/observability/alerting_test_data": +"@kbn/observability-alert-details@link:x-pack/solutions/observability/packages/alert_details": + version "0.0.0" + uid "" + +"@kbn/observability-alerting-rule-utils@link:x-pack/platform/packages/shared/observability/alerting_rule_utils": + version "0.0.0" + uid "" + +"@kbn/observability-alerting-test-data@link:x-pack/solutions/observability/packages/alerting_test_data": version "0.0.0" uid "" @@ -6476,7 +6489,7 @@ version "0.0.0" uid "" -"@kbn/observability-get-padded-alert-time-range-util@link:x-pack/packages/observability/get_padded_alert_time_range_util": +"@kbn/observability-get-padded-alert-time-range-util@link:x-pack/solutions/observability/packages/get_padded_alert_time_range_util": version "0.0.0" uid "" @@ -6496,7 +6509,7 @@ version "0.0.0" uid "" -"@kbn/observability-plugin@link:x-pack/plugins/observability_solution/observability": +"@kbn/observability-plugin@link:x-pack/solutions/observability/plugins/observability": version "0.0.0" uid "" @@ -6504,7 +6517,7 @@ version "0.0.0" uid "" -"@kbn/observability-synthetics-test-data@link:x-pack/packages/observability/synthetics_test_data": +"@kbn/observability-synthetics-test-data@link:x-pack/solutions/observability/packages/synthetics_test_data": version "0.0.0" uid "" @@ -6552,7 +6565,7 @@ version "0.0.0" uid "" -"@kbn/osquery-plugin@link:x-pack/plugins/osquery": +"@kbn/osquery-plugin@link:x-pack/platform/plugins/shared/osquery": version "0.0.0" uid "" @@ -6560,7 +6573,11 @@ version "0.0.0" uid "" -"@kbn/painless-lab-plugin@link:x-pack/plugins/painless_lab": +"@kbn/painless-lab-plugin@link:x-pack/platform/plugins/private/painless_lab": + version "0.0.0" + uid "" + +"@kbn/palettes@link:packages/kbn-palettes": version "0.0.0" uid "" @@ -6688,7 +6705,11 @@ version "0.0.0" uid "" -"@kbn/remote-clusters-plugin@link:x-pack/plugins/remote_clusters": +"@kbn/relocate@link:packages/kbn-relocate": + version "0.0.0" + uid "" + +"@kbn/remote-clusters-plugin@link:x-pack/platform/plugins/private/remote_clusters": version "0.0.0" uid "" @@ -6804,11 +6825,11 @@ version "0.0.0" uid "" -"@kbn/rollup-plugin@link:x-pack/plugins/rollup": +"@kbn/rollup-plugin@link:x-pack/platform/plugins/private/rollup": version "0.0.0" uid "" -"@kbn/rollup@link:x-pack/packages/rollup": +"@kbn/rollup@link:x-pack/platform/packages/private/rollup": version "0.0.0" uid "" @@ -6836,7 +6857,7 @@ version "0.0.0" uid "" -"@kbn/runtime-fields-plugin@link:x-pack/plugins/runtime_fields": +"@kbn/runtime-fields-plugin@link:x-pack/platform/plugins/private/runtime_fields": version "0.0.0" uid "" @@ -7012,7 +7033,7 @@ version "0.0.0" uid "" -"@kbn/searchprofiler-plugin@link:x-pack/plugins/searchprofiler": +"@kbn/searchprofiler-plugin@link:x-pack/platform/plugins/shared/searchprofiler": version "0.0.0" uid "" @@ -7060,15 +7081,15 @@ version "0.0.0" uid "" -"@kbn/security-solution-distribution-bar@link:x-pack/packages/security-solution/distribution_bar": +"@kbn/security-solution-distribution-bar@link:x-pack/solutions/security/packages/distribution_bar": version "0.0.0" uid "" -"@kbn/security-solution-ess@link:x-pack/plugins/security_solution_ess": +"@kbn/security-solution-ess@link:x-pack/solutions/security/plugins/security_solution_ess": version "0.0.0" uid "" -"@kbn/security-solution-features@link:x-pack/packages/security-solution/features": +"@kbn/security-solution-features@link:x-pack/solutions/security/packages/features": version "0.0.0" uid "" @@ -7076,27 +7097,27 @@ version "0.0.0" uid "" -"@kbn/security-solution-navigation@link:x-pack/packages/security-solution/navigation": +"@kbn/security-solution-navigation@link:x-pack/solutions/security/packages/navigation": version "0.0.0" uid "" -"@kbn/security-solution-plugin@link:x-pack/plugins/security_solution": +"@kbn/security-solution-plugin@link:x-pack/solutions/security/plugins/security_solution": version "0.0.0" uid "" -"@kbn/security-solution-serverless@link:x-pack/plugins/security_solution_serverless": +"@kbn/security-solution-serverless@link:x-pack/solutions/security/plugins/security_solution_serverless": version "0.0.0" uid "" -"@kbn/security-solution-side-nav@link:x-pack/packages/security-solution/side_nav": +"@kbn/security-solution-side-nav@link:x-pack/solutions/security/packages/side_nav": version "0.0.0" uid "" -"@kbn/security-solution-storybook-config@link:x-pack/packages/security-solution/storybook/config": +"@kbn/security-solution-storybook-config@link:x-pack/solutions/security/packages/storybook/config": version "0.0.0" uid "" -"@kbn/security-solution-upselling@link:x-pack/packages/security-solution/upselling": +"@kbn/security-solution-upselling@link:x-pack/solutions/security/packages/upselling": version "0.0.0" uid "" @@ -7112,11 +7133,11 @@ version "0.0.0" uid "" -"@kbn/securitysolution-data-table@link:x-pack/packages/security-solution/data_table": +"@kbn/securitysolution-data-table@link:x-pack/solutions/security/packages/data_table": version "0.0.0" uid "" -"@kbn/securitysolution-ecs@link:packages/kbn-securitysolution-ecs": +"@kbn/securitysolution-ecs@link:src/platform/packages/shared/kbn-securitysolution-ecs": version "0.0.0" uid "" @@ -7192,15 +7213,15 @@ version "0.0.0" uid "" -"@kbn/server-route-repository-client@link:packages/kbn-server-route-repository-client": +"@kbn/server-route-repository-client@link:src/platform/packages/shared/kbn-server-route-repository-client": version "0.0.0" uid "" -"@kbn/server-route-repository-utils@link:packages/kbn-server-route-repository-utils": +"@kbn/server-route-repository-utils@link:src/platform/packages/shared/kbn-server-route-repository-utils": version "0.0.0" uid "" -"@kbn/server-route-repository@link:packages/kbn-server-route-repository": +"@kbn/server-route-repository@link:src/platform/packages/shared/kbn-server-route-repository": version "0.0.0" uid "" @@ -7212,7 +7233,7 @@ version "0.0.0" uid "" -"@kbn/serverless-observability@link:x-pack/plugins/serverless_observability": +"@kbn/serverless-observability@link:x-pack/solutions/observability/plugins/serverless_observability": version "0.0.0" uid "" @@ -7228,7 +7249,7 @@ version "0.0.0" uid "" -"@kbn/serverless-security-settings@link:packages/serverless/settings/security_project": +"@kbn/serverless-security-settings@link:src/platform/packages/shared/serverless/settings/security_project": version "0.0.0" uid "" @@ -7248,7 +7269,7 @@ version "0.0.0" uid "" -"@kbn/session-view-plugin@link:x-pack/plugins/session_view": +"@kbn/session-view-plugin@link:x-pack/solutions/security/plugins/session_view": version "0.0.0" uid "" @@ -7468,15 +7489,15 @@ version "0.0.0" uid "" -"@kbn/slo-plugin@link:x-pack/plugins/observability_solution/slo": +"@kbn/slo-plugin@link:x-pack/solutions/observability/plugins/slo": version "0.0.0" uid "" -"@kbn/slo-schema@link:x-pack/packages/kbn-slo-schema": +"@kbn/slo-schema@link:x-pack/platform/packages/shared/kbn-slo-schema": version "0.0.0" uid "" -"@kbn/snapshot-restore-plugin@link:x-pack/plugins/snapshot_restore": +"@kbn/snapshot-restore-plugin@link:x-pack/platform/plugins/private/snapshot_restore": version "0.0.0" uid "" @@ -7500,15 +7521,15 @@ version "0.0.0" uid "" -"@kbn/sse-utils-client@link:packages/kbn-sse-utils-client": +"@kbn/sse-utils-client@link:src/platform/packages/shared/kbn-sse-utils-client": version "0.0.0" uid "" -"@kbn/sse-utils-server@link:packages/kbn-sse-utils-server": +"@kbn/sse-utils-server@link:src/platform/packages/shared/kbn-sse-utils-server": version "0.0.0" uid "" -"@kbn/sse-utils@link:packages/kbn-sse-utils": +"@kbn/sse-utils@link:src/platform/packages/shared/kbn-sse-utils": version "0.0.0" uid "" @@ -7556,11 +7577,11 @@ version "0.0.0" uid "" -"@kbn/synthetics-e2e@link:x-pack/plugins/observability_solution/synthetics/e2e": +"@kbn/synthetics-e2e@link:x-pack/solutions/observability/plugins/synthetics/e2e": version "0.0.0" uid "" -"@kbn/synthetics-plugin@link:x-pack/plugins/observability_solution/synthetics": +"@kbn/synthetics-plugin@link:x-pack/solutions/observability/plugins/synthetics": version "0.0.0" uid "" @@ -7652,11 +7673,11 @@ version "0.0.0" uid "" -"@kbn/threat-intelligence-plugin@link:x-pack/plugins/threat_intelligence": +"@kbn/threat-intelligence-plugin@link:x-pack/solutions/security/plugins/threat_intelligence": version "0.0.0" uid "" -"@kbn/timelines-plugin@link:x-pack/plugins/timelines": +"@kbn/timelines-plugin@link:x-pack/solutions/security/plugins/timelines": version "0.0.0" uid "" @@ -7712,7 +7733,7 @@ version "0.0.0" uid "" -"@kbn/typed-react-router-config@link:packages/kbn-typed-react-router-config": +"@kbn/typed-react-router-config@link:src/platform/packages/shared/kbn-typed-react-router-config": version "0.0.0" uid "" @@ -7792,7 +7813,7 @@ version "0.0.0" uid "" -"@kbn/unsaved-changes-prompt@link:packages/kbn-unsaved-changes-prompt": +"@kbn/unsaved-changes-prompt@link:src/platform/packages/shared/kbn-unsaved-changes-prompt": version "0.0.0" uid "" @@ -7800,7 +7821,7 @@ version "0.0.0" uid "" -"@kbn/uptime-plugin@link:x-pack/plugins/observability_solution/uptime": +"@kbn/uptime-plugin@link:x-pack/solutions/observability/plugins/uptime": version "0.0.0" uid "" @@ -7848,7 +7869,7 @@ version "0.0.0" uid "" -"@kbn/ux-plugin@link:x-pack/plugins/observability_solution/ux": +"@kbn/ux-plugin@link:x-pack/solutions/observability/plugins/ux": version "0.0.0" uid "" @@ -7924,7 +7945,7 @@ version "0.0.0" uid "" -"@kbn/watcher-plugin@link:x-pack/plugins/watcher": +"@kbn/watcher-plugin@link:x-pack/platform/plugins/private/watcher": version "0.0.0" uid "" @@ -8128,6 +8149,21 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== +"@ljharb/resumer@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@ljharb/resumer/-/resumer-0.1.3.tgz#5ef4a4958da1b4e71ffea8ef33499cc622672d89" + integrity sha512-d+tsDgfkj9X5QTriqM4lKesCkMMJC3IrbPKHvayP00ELx2axdXvDfWkqjxrLXIzGcQzmj7VAUT1wopqARTvafw== + dependencies: + "@ljharb/through" "^2.3.13" + call-bind "^1.0.7" + +"@ljharb/through@^2.3.13": + version "2.3.13" + resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.13.tgz#b7e4766e0b65aa82e529be945ab078de79874edc" + integrity sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ== + dependencies: + call-bind "^1.0.7" + "@lmdb/lmdb-darwin-arm64@2.9.2": version "2.9.2" resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.9.2.tgz#da42cda48018eabfd678b9698e68a0102221b4ba" @@ -9148,12 +9184,12 @@ require-from-string "^2.0.2" uri-js-replace "^1.0.1" -"@redocly/cli@^1.25.15": - version "1.25.15" - resolved "https://registry.yarnpkg.com/@redocly/cli/-/cli-1.25.15.tgz#12e487dd7a45ceda38655f2a93721ac15868f4e6" - integrity sha512-ZD743CJX4FpMJvGNE9Cm3gNn8LNRzRjyrYNVPi1C4iIEtrFkr5Zq791qv6gUFehWns71svbVyzWD9ftVTdfqYg== +"@redocly/cli@^1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@redocly/cli/-/cli-1.26.0.tgz#0f5707f55d833993ffc9644fed7d85fcafe37877" + integrity sha512-yUsrTmEPHaBDQf16jSFGi2n+AJabHacLpr7La92Dseo0tRkgLKsUWiaVEEyqm79POBytD87mVTi3THitqnSyZQ== dependencies: - "@redocly/openapi-core" "1.25.15" + "@redocly/openapi-core" "1.26.0" abort-controller "^3.0.0" chokidar "^3.5.1" colorette "^1.2.0" @@ -9178,10 +9214,10 @@ resolved "https://registry.yarnpkg.com/@redocly/config/-/config-0.17.1.tgz#2def04cecf440dd78c0f102f53f3444fac050768" integrity sha512-CEmvaJuG7pm2ylQg53emPmtgm4nW2nxBgwXzbVEHpGas/lGnMyN8Zlkgiz6rPw0unASg6VW3wlz27SOL5XFHYQ== -"@redocly/openapi-core@1.25.15", "@redocly/openapi-core@^1.4.0": - version "1.25.15" - resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.25.15.tgz#61d82b054340e080998efc3f701ca55c20f7fdb8" - integrity sha512-/dpr5zpGj2t1Bf7EIXEboRZm1hsJZBQfv3Q1pkivtdAEg3if2khv+b9gY68aquC6cM/2aQY2kMLy8LlY2tn+Og== +"@redocly/openapi-core@1.26.0", "@redocly/openapi-core@^1.4.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.26.0.tgz#ffd6c3d9f7e98c4b61584d5c0511cf953d1cfade" + integrity sha512-8Ofu6WpBp7eoLmf1qQ4+T0W4LRr8es+4Drw/RJG+acPXmaT2TmHk2B2v+3+1R9GqSIj6kx3N7JmQkxAPCnvDLw== dependencies: "@redocly/ajv" "^8.11.2" "@redocly/config" "^0.17.0" @@ -10811,6 +10847,13 @@ regenerator-runtime "^0.13.7" resolve-from "^5.0.0" +"@swc/helpers@^0.5.11": + version "0.5.15" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" + integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== + dependencies: + tslib "^2.8.0" + "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" @@ -11267,6 +11310,16 @@ dependencies: "@types/color-convert" "*" +"@types/command-line-args@^5.2.3": + version "5.2.3" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.3.tgz#553ce2fd5acf160b448d307649b38ffc60d39639" + integrity sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw== + +"@types/command-line-usage@^5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/command-line-usage/-/command-line-usage-5.0.4.tgz#374e4c62d78fbc5a670a0f36da10235af879a0d5" + integrity sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg== + "@types/connect-history-api-fallback@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" @@ -11292,6 +11345,11 @@ resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.5.tgz#14a3e83fa641beb169a2dd8422d91c3c345a9a78" integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== +"@types/cssstyle@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@types/cssstyle/-/cssstyle-2.2.4.tgz#3d333ab9f8e6c40183ad1d6ebeebfcb8da2bfe4b" + integrity sha512-FTGMeuHZtLB7hRm+NGvOLZElslR1UkKvZmEmFevOZe/e7Av0nFleka1s8ZwoX+QvbJ2y7r9NDZXIzyqpRWDJXQ== + "@types/cytoscape@^3.14.0": version "3.14.0" resolved "https://registry.yarnpkg.com/@types/cytoscape/-/cytoscape-3.14.0.tgz#346b5430a7a1533784bcf44fcbe6c5255b948d36" @@ -11887,10 +11945,10 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a" integrity sha1-UALhT3Xi1x5WQoHfBDHIwbSio2o= -"@types/minimist@^1.2.0", "@types/minimist@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== +"@types/minimist@^1.2.0", "@types/minimist@^1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/mock-fs@^4.13.1": version "4.13.1" @@ -11906,13 +11964,6 @@ dependencies: moment ">=2.14.0" -"@types/multistream@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@types/multistream/-/multistream-4.1.0.tgz#517770a32e5715fdda87904a6da7d179142feba4" - integrity sha512-KiMkWve/Uu0qwCtNO6ZflMLjglkXsAdLdIwb31o5YQBbevdH2DF7inqebCli+F9am8McvEqCE4GXNOUZe8jOAg== - dependencies: - "@types/node" "*" - "@types/mustache@^0.8.31": version "0.8.31" resolved "https://registry.yarnpkg.com/@types/mustache/-/mustache-0.8.31.tgz#7c86cbf74f7733f9e3bdc28817623927eb386616" @@ -11955,7 +12006,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@14 || 16 || 17", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.0.0", "@types/node@^18.11.18": +"@types/node@*", "@types/node@14 || 16 || 17", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.0.0", "@types/node@^18.11.18", "@types/node@^20.13.0": version "20.10.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.5.tgz#47ad460b514096b7ed63a1dae26fad0914ed3ab2" integrity sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw== @@ -12055,11 +12106,6 @@ resolved "https://registry.yarnpkg.com/@types/picomatch/-/picomatch-2.3.0.tgz#75db5e75a713c5a83d5b76780c3da84a82806003" integrity sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g== -"@types/pidusage@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/pidusage/-/pidusage-2.0.2.tgz#3f8c4b19ba7ea438a733d093661e92b60e5f88ee" - integrity sha512-lHgpGZjXDfjggZDLkgp4zQTYkvXq4S7RxjBjrDcPe1MBU72hESWxubutx8+AM4QkJdRxAhrQyxSA6pzHKJKlsQ== - "@types/pixelmatch@^5.2.4": version "5.2.4" resolved "https://registry.yarnpkg.com/@types/pixelmatch/-/pixelmatch-5.2.4.tgz#ca145cc5ede1388c71c68edf2d1f5190e5ddd0f6" @@ -13354,11 +13400,6 @@ ansi-align@^3.0.0: dependencies: string-width "^4.1.0" -ansi-colors@4.1.1, ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - ansi-colors@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" @@ -13371,6 +13412,11 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1, ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -13479,6 +13525,21 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +apache-arrow@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/apache-arrow/-/apache-arrow-18.0.0.tgz#a187bd55318a7a68b6ff09835d05e89e019eba2e" + integrity sha512-gFlPaqN9osetbB83zC29AbbZqGiCuFH1vyyPseJ+B7SIbfBtESV62mMT/CkiIt77W6ykC/nTWFzTXFs0Uldg4g== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/command-line-args" "^5.2.3" + "@types/command-line-usage" "^5.0.4" + "@types/node" "^20.13.0" + command-line-args "^5.2.1" + command-line-usage "^7.0.1" + flatbuffers "^24.3.25" + json-bignum "^0.0.3" + tslib "^2.6.2" + app-module-path@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" @@ -13611,6 +13672,16 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-6.2.2.tgz#f567d99e9af88a6d3d2f9dfcc21db6f9ba9fd157" + integrity sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw== + array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" @@ -13682,6 +13753,17 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.every@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/array.prototype.every/-/array.prototype.every-1.1.6.tgz#1717b407d019913250317300d814a1b6660f10d7" + integrity sha512-gNEqZD97w6bfQRNmHkFv7rNnGM+VWyHZT+h/rf9C+22owcXuENr66Lfo0phItpU5KoXW6Owb34q2+8MnSIZ57w== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + is-string "^1.0.7" + array.prototype.findlastindex@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" @@ -14571,7 +14653,7 @@ brotli@^1.2.0: dependencies: base64-js "^1.1.2" -browser-stdout@1.3.1: +browser-stdout@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== @@ -14999,6 +15081,13 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== +chalk-template@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk-template/-/chalk-template-0.4.0.tgz#692c034d0ed62436b9062c1707fadcd0f753204b" + integrity sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg== + dependencies: + chalk "^4.1.2" + chalk@2.4.2, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -15115,7 +15204,7 @@ cheerio@^1.0.0-rc.12, cheerio@^1.0.0-rc.3: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@3.5.3, chokidar@^2.1.2, chokidar@^2.1.8, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.3: +chokidar@^2.1.2, chokidar@^2.1.8, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -15583,6 +15672,26 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== +command-line-args@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-7.0.3.tgz#6bce992354f6af10ecea2b631bfdf0c8b3bfaea3" + integrity sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q== + dependencies: + array-back "^6.2.2" + chalk-template "^0.4.0" + table-layout "^4.1.0" + typical "^7.1.1" + commander@2, commander@^2.15.0, commander@^2.19.0, commander@^2.20.0, commander@^2.7.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -15997,9 +16106,9 @@ cronstrue@^1.51.0: integrity sha512-fSRAz/MV0TRjeNZKAsovmH/MSsly7+8np4XsfsrjOOz7sjxLrE9SmedRYAs3nPAtLLC5UsMpvenjXYRz463bMA== cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + version "6.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" + integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -16008,9 +16117,9 @@ cross-spawn@^6.0.0: which "^1.2.9" cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82" - integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug== + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -16234,6 +16343,13 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +cssstyle@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.1.0.tgz#161faee382af1bafadb6d3867a92a19bcb4aea70" + integrity sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA== + dependencies: + rrweb-cssom "^0.7.1" + csstype@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" @@ -16836,7 +16952,7 @@ deep-equal@^1.0.0, deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-equal@^2.0.3, deep-equal@^2.2.3: +deep-equal@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== @@ -16965,10 +17081,10 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= +defined@^1.0.0, defined@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== degenerator@^5.0.0: version "5.0.1" @@ -17268,11 +17384,6 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -diff@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -17283,10 +17394,10 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.0.0, diff@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" - integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== +diff@^5.0.0, diff@^5.1.0, diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== diffie-hellman@^5.0.0: version "5.0.2" @@ -17617,10 +17728,10 @@ elastic-apm-node@3.46.0: traverse "^0.6.6" unicode-byte-truncate "^1.0.0" -elastic-apm-node@^4.8.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-4.8.1.tgz#b0ff8e04d7109c64b98608de73936c8740849f60" - integrity sha512-gryl5pJWd9Cp7qK+McHIFm9VlsqKipoXWIsKOGyPGzrddIVKKA8ONnLBwymQ1A2x4uXuk1HnIVwBvyk56vukaw== +elastic-apm-node@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-4.9.0.tgz#8ca807fdf64404b615b60c4090bd9c9aad5b78ed" + integrity sha512-VUbrahqHmqpfwGHtUysWJ7aeCIUm61hAw8tSu0gE9AYdriVSPod4Ki11X4K8sBri0bIc/FTHxOrg7kudhGoqHQ== dependencies: "@elastic/ecs-pino-format" "^1.5.0" "@opentelemetry/api" "^1.4.1" @@ -17640,7 +17751,7 @@ elastic-apm-node@^4.8.1: fast-safe-stringify "^2.0.7" fast-stream-to-buffer "^1.0.0" http-headers "^3.0.2" - import-in-the-middle "1.11.2" + import-in-the-middle "1.11.3" json-bigint "^1.0.0" lru-cache "10.2.0" measured-reporting "^1.51.1" @@ -18119,11 +18230,6 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -18134,6 +18240,11 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^2.0.0, escodegen@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" @@ -19181,6 +19292,13 @@ find-my-way-ts@^0.1.2: resolved "https://registry.yarnpkg.com/find-my-way-ts/-/find-my-way-ts-0.1.5.tgz#9de9494f19e0319d4f6366bb91d6bf7952af7874" integrity sha512-4GOTMrpGQVzsCH2ruUn2vmwzV/02zF4q+ybhCIrw/Rkt3L8KWcycdC6aJMctJzwN4fXD4SD5F/4B9Sksh5rE0A== +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -19198,14 +19316,6 @@ find-test-names@1.28.18, find-test-names@^1.19.0: globby "^11.0.4" simple-bin-help "^1.8.0" -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -19229,6 +19339,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -19242,6 +19360,11 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +flatbuffers@^24.3.25: + version "24.3.25" + resolved "https://registry.yarnpkg.com/flatbuffers/-/flatbuffers-24.3.25.tgz#e2f92259ba8aa53acd0af7844afb7c7eb95e7089" + integrity sha512-3HDgPbgiwWMI9zVB7VYBHaMrbOO7Gm0v+yD2FV/sCKj+9NDeVL7BOBYUuhWAQGKWOzBo8S9WdMvV0eixO233XQ== + flatstr@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" @@ -19586,6 +19709,11 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +fuse.js@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-7.0.0.tgz#6573c9fcd4c8268e403b4fc7d7131ffcf99a9eb2" + integrity sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q== + gauge@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" @@ -19898,19 +20026,7 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@8.1.0: +glob@8.1.0, glob@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -20269,6 +20385,14 @@ has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== +has-dynamic-import@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-dynamic-import/-/has-dynamic-import-2.1.0.tgz#06359ad7672b9e764aea93a54bb9d6e17542d34c" + integrity sha512-su0anMkNEnJKZ/rB99jn3y6lV/J8Ro96hBJ28YAeVzj5rWxH+YL/AdCyiYYA1HDLV9YhmvqpWSJJj2KLo1MX6g== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -20529,7 +20653,7 @@ hdr-histogram-percentiles-obj@^3.0.0: resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c" integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw== -he@1.2.0, he@^1.2.0: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -20988,10 +21112,10 @@ import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-in-the-middle@1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz#dd848e72b63ca6cd7c34df8b8d97fc9baee6174f" - integrity sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA== +import-in-the-middle@1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.11.3.tgz#08559f2c05fd65ba7062e747af056ed18a80120c" + integrity sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw== dependencies: acorn "^8.8.2" acorn-import-attributes "^1.9.5" @@ -22599,10 +22723,10 @@ js-search@^1.4.3: resolved "https://registry.yarnpkg.com/js-search/-/js-search-1.4.3.tgz#23a86d7e064ca53a473930edc48615b6b1c1954a" integrity sha512-Sny5pf00kX1sM1KzvUC9nGYWXOvBfy30rmvZWeRktpg+esQKedIXrXNee/I2CAnsouCyaTjitZpRflDACx4toA== -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== +js-sha256@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.0.tgz#256a921d9292f7fe98905face82e367abaca9576" + integrity sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q== js-string-escape@^1.0.1: version "1.0.1" @@ -22621,13 +22745,6 @@ js-tiktoken@^1.0.12, js-tiktoken@^1.0.14: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -22636,6 +22753,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" @@ -22695,6 +22819,11 @@ json-bigint@^1.0.0: dependencies: bignumber.js "^9.0.0" +json-bignum@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/json-bignum/-/json-bignum-0.0.3.tgz#41163b50436c773d82424dbc20ed70db7604b8d7" + integrity sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg== + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -23447,14 +23576,6 @@ lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - log-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" @@ -23462,6 +23583,14 @@ log-symbols@^3.0.0: dependencies: chalk "^2.4.2" +log-symbols@^4.0.0, log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-update@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" @@ -24261,13 +24390,6 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== - dependencies: - brace-expansion "^2.0.1" - minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -24275,7 +24397,7 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatc dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0: +minimatch@^5.0.1, minimatch@^5.1.0, minimatch@^5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -24446,32 +24568,31 @@ mocha-multi-reporters@^1.5.1: debug "^4.1.1" lodash "^4.17.15" -mocha@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.1.0.tgz#dbf1114b7c3f9d0ca5de3133906aea3dfc89ef7a" - integrity sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg== +mocha@^10.3.0: + version "10.8.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" + integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - nanoid "3.3.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" mochawesome-merge@^4.3.0: version "4.3.0" @@ -24521,6 +24642,19 @@ mock-fs@^5.1.2: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-5.1.2.tgz#6fa486e06d00f8793a8d2228de980eff93ce6db7" integrity sha512-YkjQkdLulFrz0vD4BfNQdQRVmgycXTV7ykuHMlyv+C8WCHazpkiQRDthwa02kSyo8wKnY9wRptHfQLgmf0eR+A== +mock-property@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mock-property/-/mock-property-1.1.0.tgz#b38b9961476d2e54cde2033b62847b9546b3670d" + integrity sha512-1/JjbLoGwv87xVsutkX0XJc0M0W4kb40cZl/K41xtTViBOD9JuFPKfyMNTrLJ/ivYAd0aPqu/vduamXO0emTFQ== + dependencies: + define-data-property "^1.1.4" + functions-have-names "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + hasown "^2.0.2" + isarray "^2.0.5" + object-inspect "^1.13.2" + module-definition@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-5.0.1.tgz#62d1194e5d5ea6176b7dc7730f818f466aefa32f" @@ -24753,14 +24887,6 @@ multipipe@^1.0.2: duplexer2 "^0.1.2" object-assign "^4.1.0" -multistream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/multistream/-/multistream-4.1.0.tgz#7bf00dfd119556fbc153cff3de4c6d477909f5a8" - integrity sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw== - dependencies: - once "^1.4.0" - readable-stream "^3.6.0" - murmurhash-js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" @@ -24810,11 +24936,6 @@ nano-css@^5.2.1: stacktrace-js "^2.0.0" stylis "3.5.0" -nanoid@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== - nanoid@3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" @@ -25360,18 +25481,18 @@ object-identity-map@^1.0.2: dependencies: object.entries "^1.1.0" -object-inspect@^1.13.1, object-inspect@^1.7.0: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== +object-inspect@^1.13.1, object-inspect@^1.13.2, object-inspect@^1.7.0: + version "1.13.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== -object-is@^1.0.1, object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== +object-is@^1.0.1, object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5, object-is@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + call-bind "^1.0.7" + define-properties "^1.2.1" object-keys@^1.1.1: version "1.1.1" @@ -26174,13 +26295,6 @@ picomatch@^4.0.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== -pidusage@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-3.0.2.tgz#6faa5402b2530b3af2cf93d13bcf202889724a53" - integrity sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w== - dependencies: - safe-buffer "^5.2.1" - pify@^2.0.0, pify@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -28691,7 +28805,7 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12. path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.4: +resolve@^2.0.0-next.4, resolve@^2.0.0-next.5: version "2.0.0-next.5" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== @@ -28723,13 +28837,6 @@ restore-cursor@^5.0.0: onetime "^7.0.0" signal-exit "^4.1.0" -resumer@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= - dependencies: - through "~2.3.4" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -28799,6 +28906,11 @@ robust-predicates@^3.0.0: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a" integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== +rrweb-cssom@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz#c73451a484b86dd7cfb1e0b2898df4b703183e4b" + integrity sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg== + rst-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" @@ -29284,13 +29396,6 @@ send@0.19.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -29305,7 +29410,7 @@ serialize-javascript@^5.0.1: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.1: +serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== @@ -30499,7 +30604,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@3.1.1, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -30704,13 +30809,6 @@ supertest@^7.0.0: methods "^1.1.2" superagent "^9.0.1" -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -30730,6 +30828,13 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" @@ -30885,6 +30990,14 @@ tabbable@^5.3.3: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-5.3.3.tgz#aac0ff88c73b22d6c3c5a50b1586310006b47fbf" integrity sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA== +table-layout@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-4.1.1.tgz#0f72965de1a5c0c1419c9ba21cae4e73a2f73a42" + integrity sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA== + dependencies: + array-back "^6.2.2" + wordwrapjs "^5.1.0" + table@^6.8.0, table@^6.8.2: version "6.8.2" resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" @@ -30906,28 +31019,33 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tape@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/tape/-/tape-5.0.1.tgz#0d70ce90a586387c4efda4393e72872672a416a3" - integrity sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ== +tape@^5.9.0: + version "5.9.0" + resolved "https://registry.yarnpkg.com/tape/-/tape-5.9.0.tgz#8d1a7472c6a154b82ce23b20dd9dc70ec0729b46" + integrity sha512-czbGgxSVwRlbB3Ly/aqQrNwrDAzKHDW/kVXegp4hSFmR2c8qqm3hCgZbUy1+3QAQFGhPDG7J56UsV1uNilBFCA== dependencies: - deep-equal "^2.0.3" - defined "^1.0.0" + "@ljharb/resumer" "^0.1.3" + "@ljharb/through" "^2.3.13" + array.prototype.every "^1.1.6" + call-bind "^1.0.7" + deep-equal "^2.2.3" + defined "^1.0.1" dotignore "^0.1.2" for-each "^0.3.3" - function-bind "^1.1.1" - glob "^7.1.6" - has "^1.0.3" + get-package-type "^0.1.0" + glob "^7.2.3" + has-dynamic-import "^2.1.0" + hasown "^2.0.2" inherits "^2.0.4" - is-regex "^1.0.5" - minimist "^1.2.5" - object-inspect "^1.7.0" - object-is "^1.1.2" - object.assign "^4.1.0" - resolve "^1.17.0" - resumer "^0.0.0" - string.prototype.trim "^1.2.1" - through "^2.3.8" + is-regex "^1.1.4" + minimist "^1.2.8" + mock-property "^1.1.0" + object-inspect "^1.13.2" + object-is "^1.1.6" + object-keys "^1.1.1" + object.assign "^4.1.5" + resolve "^2.0.0-next.5" + string.prototype.trim "^1.2.9" tar-fs@^2.0.0: version "2.1.1" @@ -31197,7 +31315,7 @@ through2@~0.4.1: readable-stream "~1.0.17" xtend "~2.1.1" -through@^2.3.6, through@^2.3.8, through@~2.3.4: +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -31577,7 +31695,7 @@ tslib@2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@2.6.2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2: +tslib@2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -31587,6 +31705,11 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2, tslib@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tslib@~2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" @@ -31788,6 +31911,16 @@ typewise@^1.0.3: dependencies: typewise-core "^1.2.0" +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^7.1.1: + version "7.3.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-7.3.0.tgz#930376be344228709f134613911fa22aa09617a4" + integrity sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw== + uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" @@ -33381,6 +33514,11 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== +wordwrapjs@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-5.1.0.tgz#4c4d20446dcc670b14fa115ef4f8fd9947af2b3a" + integrity sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg== + worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -33395,10 +33533,10 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -workerpool@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" - integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" @@ -33625,11 +33763,6 @@ yaml@^2.5.1: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130" integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q== -yargs-parser@20.2.4, yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -33638,12 +33771,17 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + yargs-parser@^21.0.0, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-unparser@2.0.0: +yargs-unparser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== @@ -33653,19 +33791,6 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" @@ -33696,6 +33821,19 @@ yargs@^15.0.2, yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^17.0.1, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.7.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"